{"version":3,"file":"score-viewer.umd.cjs","sources":["../node_modules/i18next/dist/esm/i18next.js","../node_modules/react-i18next/dist/es/utils.js","../node_modules/react-i18next/dist/es/unescape.js","../node_modules/react-i18next/dist/es/defaults.js","../node_modules/react-i18next/dist/es/i18nInstance.js","../node_modules/react-i18next/dist/es/initReactI18next.js","../node_modules/react-i18next/dist/es/context.js","../node_modules/react-i18next/dist/es/useTranslation.js","../node_modules/i18next-browser-languagedetector/dist/esm/i18nextBrowserLanguageDetector.js","../src/types/ui.ts","../src/i18n.ts","../node_modules/zustand/esm/vanilla.mjs","../node_modules/zustand/esm/react.mjs","../src/utils/zustand-utils.ts","../src/types/actions.ts","../src/types/score.ts","../src/types/player.ts","../src/store.ts","../src/useVerovio.tsx","../src/Context.tsx","../node_modules/classnames/index.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/rc-util/es/React/isFragment.js","../node_modules/rc-util/es/Children/toArray.js","../node_modules/rc-util/es/warning.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/rc-util/es/Dom/findDOMNode.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/cjs/react-is.development.js","../node_modules/react-is/index.js","../node_modules/rc-util/es/hooks/useMemo.js","../node_modules/rc-util/es/ref.js","../node_modules/rc-resize-observer/es/Collection.js","../node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","../node_modules/rc-resize-observer/es/utils/observerUtil.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/rc-resize-observer/es/SingleObserver/DomWrapper.js","../node_modules/rc-resize-observer/es/SingleObserver/index.js","../node_modules/rc-resize-observer/es/index.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/rc-util/es/raf.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@emotion/hash/dist/hash.browser.esm.js","../node_modules/rc-util/es/Dom/canUseDom.js","../node_modules/rc-util/es/Dom/contains.js","../node_modules/rc-util/es/Dom/dynamicCSS.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/rc-util/es/isEqual.js","../node_modules/@ant-design/cssinjs/es/Cache.js","../node_modules/@ant-design/cssinjs/es/StyleContext.js","../node_modules/@ant-design/cssinjs/es/theme/ThemeCache.js","../node_modules/@ant-design/cssinjs/es/theme/Theme.js","../node_modules/@ant-design/cssinjs/es/theme/createTheme.js","../node_modules/@ant-design/cssinjs/es/util/index.js","../node_modules/@ant-design/cssinjs/es/util/css-variables.js","../node_modules/rc-util/es/hooks/useLayoutEffect.js","../node_modules/@ant-design/cssinjs/es/hooks/useCompatibleInsertionEffect.js","../node_modules/@ant-design/cssinjs/es/hooks/useEffectCleanupRegister.js","../node_modules/@ant-design/cssinjs/es/hooks/useHMR.js","../node_modules/@ant-design/cssinjs/es/hooks/useGlobalCache.js","../node_modules/@ant-design/cssinjs/es/hooks/useCacheToken.js","../node_modules/@emotion/unitless/dist/unitless.browser.esm.js","../node_modules/stylis/src/Enum.js","../node_modules/stylis/src/Utility.js","../node_modules/stylis/src/Tokenizer.js","../node_modules/stylis/src/Parser.js","../node_modules/stylis/src/Serializer.js","../node_modules/@ant-design/cssinjs/es/linters/utils.js","../node_modules/@ant-design/cssinjs/es/linters/contentQuotesLinter.js","../node_modules/@ant-design/cssinjs/es/linters/hashedAnimationLinter.js","../node_modules/@ant-design/cssinjs/es/util/cacheMapUtil.js","../node_modules/@ant-design/cssinjs/es/hooks/useStyleRegister.js","../node_modules/@ant-design/cssinjs/es/hooks/useCSSVarRegister.js","../node_modules/@ant-design/cssinjs/es/extractStyle.js","../node_modules/@ant-design/cssinjs/es/Keyframes.js","../node_modules/@ant-design/cssinjs/es/transformers/legacyLogicalProperties.js","../node_modules/@ant-design/icons/es/components/Context.js","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/rc-util/es/utils/get.js","../node_modules/rc-util/es/utils/set.js","../node_modules/antd/es/_util/warning.js","../node_modules/antd/es/form/validateMessagesContext.js","../node_modules/rc-pagination/es/locale/en_US.js","../node_modules/rc-picker/es/locale/common.js","../node_modules/rc-picker/es/locale/en_US.js","../node_modules/antd/es/time-picker/locale/en_US.js","../node_modules/antd/es/date-picker/locale/en_US.js","../node_modules/antd/es/locale/en_US.js","../node_modules/antd/es/modal/locale.js","../node_modules/antd/es/locale/context.js","../node_modules/antd/es/locale/useLocale.js","../node_modules/antd/es/locale/index.js","../node_modules/antd/es/theme/themes/seed.js","../node_modules/@ant-design/fast-color/es/FastColor.js","../node_modules/@ant-design/colors/es/generate.js","../node_modules/@ant-design/colors/es/presets.js","../node_modules/antd/es/theme/themes/shared/genColorMapToken.js","../node_modules/antd/es/theme/themes/shared/genRadius.js","../node_modules/antd/es/theme/themes/shared/genCommonMapToken.js","../node_modules/antd/es/theme/themes/shared/genControlHeight.js","../node_modules/antd/es/theme/themes/shared/genFontSizes.js","../node_modules/antd/es/theme/themes/shared/genFontMapToken.js","../node_modules/antd/es/theme/themes/shared/genSizeMapToken.js","../node_modules/antd/es/theme/themes/default/colorAlgorithm.js","../node_modules/antd/es/theme/themes/default/colors.js","../node_modules/antd/es/theme/themes/default/index.js","../node_modules/antd/es/theme/themes/default/theme.js","../node_modules/antd/es/theme/context.js","../node_modules/antd/es/config-provider/context.js","../node_modules/antd/es/config-provider/cssVariables.js","../node_modules/antd/es/config-provider/DisabledContext.js","../node_modules/antd/es/config-provider/SizeContext.js","../node_modules/antd/es/config-provider/hooks/useConfig.js","../node_modules/@ant-design/cssinjs-utils/es/util/calc/calculator.js","../node_modules/@ant-design/cssinjs-utils/es/util/calc/CSSCalculator.js","../node_modules/@ant-design/cssinjs-utils/es/util/calc/NumCalculator.js","../node_modules/@ant-design/cssinjs-utils/es/util/calc/index.js","../node_modules/@ant-design/cssinjs-utils/es/util/getCompVarPrefix.js","../node_modules/rc-util/es/hooks/useEvent.js","../node_modules/rc-util/es/hooks/useState.js","../node_modules/rc-util/es/hooks/useMergedState.js","../node_modules/@ant-design/cssinjs-utils/es/util/getComponentToken.js","../node_modules/@ant-design/cssinjs-utils/es/util/statistic.js","../node_modules/@ant-design/cssinjs-utils/es/util/getDefaultComponentToken.js","../node_modules/@ant-design/cssinjs-utils/es/util/maxmin.js","../node_modules/@ant-design/cssinjs-utils/es/_util/hooks/useUniqueMemo.js","../node_modules/@ant-design/cssinjs-utils/es/hooks/useCSP.js","../node_modules/@ant-design/cssinjs-utils/es/util/genStyleUtils.js","../node_modules/antd/es/theme/interface/presetColors.js","../node_modules/antd/es/version/version.js","../node_modules/antd/es/theme/util/getAlphaColor.js","../node_modules/antd/es/theme/util/alias.js","../node_modules/antd/es/theme/useToken.js","../node_modules/antd/es/style/index.js","../node_modules/antd/es/theme/util/genStyleUtils.js","../node_modules/antd/es/theme/util/genPresetColor.js","../node_modules/antd/es/theme/util/useResetIconStyle.js","../node_modules/antd/es/config-provider/hooks/useThemeKey.js","../node_modules/antd/es/config-provider/hooks/useTheme.js","../node_modules/rc-motion/es/context.js","../node_modules/rc-motion/es/DomWrapper.js","../node_modules/rc-util/es/hooks/useSyncState.js","../node_modules/rc-motion/es/interface.js","../node_modules/rc-motion/es/util/motion.js","../node_modules/rc-motion/es/hooks/useDomMotionEvents.js","../node_modules/rc-motion/es/hooks/useIsomorphicLayoutEffect.js","../node_modules/rc-motion/es/hooks/useNextFrame.js","../node_modules/rc-motion/es/hooks/useStepQueue.js","../node_modules/rc-motion/es/hooks/useStatus.js","../node_modules/rc-motion/es/CSSMotion.js","../node_modules/rc-motion/es/util/diff.js","../node_modules/rc-motion/es/CSSMotionList.js","../node_modules/antd/es/config-provider/MotionWrapper.js","../node_modules/antd/es/config-provider/PropWarning.js","../node_modules/antd/es/config-provider/index.js","../node_modules/@ant-design/icons-svg/es/asn/CheckCircleFilled.js","../node_modules/rc-util/es/Dom/shadow.js","../node_modules/@ant-design/icons/es/utils.js","../node_modules/@ant-design/icons/es/components/IconBase.js","../node_modules/@ant-design/icons/es/components/twoTonePrimaryColor.js","../node_modules/@ant-design/icons/es/components/AntdIcon.js","../node_modules/@ant-design/icons/es/icons/CheckCircleFilled.js","../node_modules/@ant-design/icons-svg/es/asn/CloseCircleFilled.js","../node_modules/@ant-design/icons/es/icons/CloseCircleFilled.js","../node_modules/@ant-design/icons-svg/es/asn/CloseOutlined.js","../node_modules/@ant-design/icons/es/icons/CloseOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/ExclamationCircleFilled.js","../node_modules/@ant-design/icons/es/icons/ExclamationCircleFilled.js","../node_modules/@ant-design/icons-svg/es/asn/InfoCircleFilled.js","../node_modules/@ant-design/icons/es/icons/InfoCircleFilled.js","../node_modules/rc-util/es/pickAttrs.js","../node_modules/antd/es/_util/reactNode.js","../node_modules/antd/es/alert/style/index.js","../node_modules/antd/es/alert/Alert.js","../node_modules/@babel/runtime/helpers/esm/callSuper.js","../node_modules/antd/es/alert/ErrorBoundary.js","../node_modules/antd/es/alert/index.js","../node_modules/antd/es/config-provider/hooks/useCSSVarCls.js","../node_modules/rc-util/es/KeyCode.js","../node_modules/@ant-design/icons-svg/es/asn/LoadingOutlined.js","../node_modules/@ant-design/icons/es/icons/LoadingOutlined.js","../node_modules/antd/es/_util/zindexContext.js","../node_modules/antd/es/_util/hooks/useZIndex.js","../node_modules/antd/es/_util/hooks/usePatchElement.js","../node_modules/@babel/runtime/helpers/esm/OverloadYield.js","../node_modules/@babel/runtime/helpers/esm/regeneratorDefine.js","../node_modules/@babel/runtime/helpers/esm/regenerator.js","../node_modules/@babel/runtime/helpers/esm/regeneratorAsyncIterator.js","../node_modules/@babel/runtime/helpers/esm/regeneratorAsyncGen.js","../node_modules/@babel/runtime/helpers/esm/regeneratorAsync.js","../node_modules/@babel/runtime/helpers/esm/regeneratorKeys.js","../node_modules/@babel/runtime/helpers/esm/regeneratorValues.js","../node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/rc-util/es/React/render.js","../node_modules/antd/es/config-provider/UnstableContext.js","../node_modules/antd/es/_util/motion.js","../node_modules/rc-util/es/omit.js","../node_modules/rc-util/es/Dom/isVisible.js","../node_modules/antd/es/_util/wave/style.js","../node_modules/antd/es/_util/wave/interface.js","../node_modules/antd/es/_util/wave/util.js","../node_modules/antd/es/_util/wave/WaveEffect.js","../node_modules/antd/es/_util/wave/useWave.js","../node_modules/antd/es/_util/wave/index.js","../node_modules/antd/es/config-provider/hooks/useSize.js","../node_modules/antd/es/space/style/compact.js","../node_modules/antd/es/space/style/index.js","../node_modules/antd/es/space/Compact.js","../node_modules/antd/es/button/button-group.js","../node_modules/antd/es/button/buttonHelpers.js","../node_modules/antd/es/button/IconWrapper.js","../node_modules/antd/es/button/DefaultLoadingIcon.js","../node_modules/antd/es/button/style/group.js","../node_modules/@rc-component/color-picker/es/color.js","../node_modules/@rc-component/color-picker/es/util.js","../node_modules/@rc-component/color-picker/es/components/ColorBlock.js","../node_modules/@rc-component/color-picker/es/hooks/useColorDrag.js","../node_modules/@rc-component/color-picker/es/components/Handler.js","../node_modules/@rc-component/color-picker/es/components/Palette.js","../node_modules/@rc-component/color-picker/es/components/Transform.js","../node_modules/@rc-component/color-picker/es/components/Picker.js","../node_modules/@rc-component/color-picker/es/hooks/useColorState.js","../node_modules/@rc-component/color-picker/es/components/Gradient.js","../node_modules/@rc-component/color-picker/es/components/Slider.js","../node_modules/@rc-component/color-picker/es/hooks/useComponent.js","../node_modules/@rc-component/color-picker/es/ColorPicker.js","../node_modules/antd/es/color-picker/color.js","../node_modules/@ant-design/icons-svg/es/asn/RightOutlined.js","../node_modules/@ant-design/icons/es/icons/RightOutlined.js","../node_modules/antd/es/style/motion/motion.js","../node_modules/antd/es/style/motion/fade.js","../node_modules/antd/es/style/motion/move.js","../node_modules/antd/es/style/motion/slide.js","../node_modules/antd/es/style/motion/zoom.js","../node_modules/antd/es/color-picker/components/ColorPresets.js","../node_modules/antd/es/button/style/token.js","../node_modules/antd/es/button/style/index.js","../node_modules/antd/es/style/compact-item.js","../node_modules/antd/es/style/compact-item-vertical.js","../node_modules/antd/es/button/style/compact.js","../node_modules/antd/es/button/button.js","../node_modules/antd/es/_util/ActionButton.js","../node_modules/antd/es/modal/context.js","../node_modules/antd/es/modal/components/ConfirmCancelBtn.js","../node_modules/antd/es/modal/components/ConfirmOkBtn.js","../node_modules/@rc-component/portal/es/Context.js","../node_modules/@rc-component/portal/es/useDom.js","../node_modules/rc-util/es/getScrollBarSize.js","../node_modules/@rc-component/portal/es/util.js","../node_modules/@rc-component/portal/es/useScrollLocker.js","../node_modules/@rc-component/portal/es/mock.js","../node_modules/@rc-component/portal/es/Portal.js","../node_modules/rc-dialog/es/context.js","../node_modules/rc-util/es/hooks/useId.js","../node_modules/rc-dialog/es/util.js","../node_modules/rc-dialog/es/Dialog/Content/MemoChildren.js","../node_modules/rc-dialog/es/Dialog/Content/Panel.js","../node_modules/rc-dialog/es/Dialog/Content/index.js","../node_modules/rc-dialog/es/Dialog/Mask.js","../node_modules/rc-dialog/es/Dialog/index.js","../node_modules/rc-dialog/es/DialogWrap.js","../node_modules/rc-field-form/es/FieldContext.js","../node_modules/rc-field-form/es/ListContext.js","../node_modules/rc-field-form/es/utils/typeUtil.js","../node_modules/@rc-component/async-validator/es/messages.js","../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/@rc-component/async-validator/es/util.js","../node_modules/@rc-component/async-validator/es/rule/enum.js","../node_modules/@rc-component/async-validator/es/rule/pattern.js","../node_modules/@rc-component/async-validator/es/rule/range.js","../node_modules/@rc-component/async-validator/es/rule/required.js","../node_modules/@rc-component/async-validator/es/rule/url.js","../node_modules/@rc-component/async-validator/es/rule/type.js","../node_modules/@rc-component/async-validator/es/rule/whitespace.js","../node_modules/@rc-component/async-validator/es/rule/index.js","../node_modules/@rc-component/async-validator/es/validator/any.js","../node_modules/@rc-component/async-validator/es/validator/array.js","../node_modules/@rc-component/async-validator/es/validator/boolean.js","../node_modules/@rc-component/async-validator/es/validator/date.js","../node_modules/@rc-component/async-validator/es/validator/enum.js","../node_modules/@rc-component/async-validator/es/validator/float.js","../node_modules/@rc-component/async-validator/es/validator/integer.js","../node_modules/@rc-component/async-validator/es/validator/method.js","../node_modules/@rc-component/async-validator/es/validator/number.js","../node_modules/@rc-component/async-validator/es/validator/object.js","../node_modules/@rc-component/async-validator/es/validator/pattern.js","../node_modules/@rc-component/async-validator/es/validator/regexp.js","../node_modules/@rc-component/async-validator/es/validator/required.js","../node_modules/@rc-component/async-validator/es/validator/string.js","../node_modules/@rc-component/async-validator/es/validator/type.js","../node_modules/@rc-component/async-validator/es/validator/index.js","../node_modules/@rc-component/async-validator/es/index.js","../node_modules/rc-field-form/es/utils/messages.js","../node_modules/rc-field-form/es/utils/validateUtil.js","../node_modules/rc-field-form/es/utils/valueUtil.js","../node_modules/rc-field-form/es/Field.js","../node_modules/rc-field-form/es/List.js","../node_modules/rc-field-form/es/utils/asyncUtil.js","../node_modules/rc-field-form/es/utils/NameMap.js","../node_modules/rc-field-form/es/useForm.js","../node_modules/rc-field-form/es/FormContext.js","../node_modules/rc-field-form/es/Form.js","../node_modules/rc-field-form/es/useWatch.js","../node_modules/rc-field-form/es/index.js","../node_modules/antd/es/form/context.js","../node_modules/antd/es/_util/ContextIsolator.js","../node_modules/antd/es/_util/extendsObject.js","../node_modules/antd/es/_util/hooks/useClosable.js","../node_modules/rc-util/es/Dom/styleChecker.js","../node_modules/antd/es/_util/styleChecker.js","../node_modules/antd/es/skeleton/Element.js","../node_modules/antd/es/skeleton/style/index.js","../node_modules/antd/es/skeleton/Avatar.js","../node_modules/antd/es/skeleton/Button.js","../node_modules/antd/es/skeleton/Image.js","../node_modules/antd/es/skeleton/Input.js","../node_modules/antd/es/skeleton/Node.js","../node_modules/antd/es/skeleton/Paragraph.js","../node_modules/antd/es/skeleton/Title.js","../node_modules/antd/es/skeleton/Skeleton.js","../node_modules/antd/es/watermark/context.js","../node_modules/antd/es/modal/components/NormalCancelBtn.js","../node_modules/antd/es/modal/components/NormalOkBtn.js","../node_modules/antd/es/modal/shared.js","../node_modules/antd/es/grid/style/index.js","../node_modules/antd/es/modal/style/index.js","../node_modules/antd/es/modal/Modal.js","../node_modules/antd/es/modal/style/confirm.js","../node_modules/antd/es/modal/ConfirmDialog.js","../node_modules/antd/es/modal/destroyFns.js","../node_modules/antd/es/modal/confirm.js","../node_modules/antd/es/modal/useModal/HookModal.js","../node_modules/antd/es/modal/useModal/index.js","../node_modules/antd/es/_util/PurePanel.js","../node_modules/rc-util/es/isMobile.js","../node_modules/rc-select/es/TransBtn.js","../node_modules/rc-select/es/hooks/useAllowClear.js","../node_modules/rc-select/es/hooks/useBaseProps.js","../node_modules/rc-select/es/hooks/useDelayReset.js","../node_modules/rc-select/es/hooks/useLock.js","../node_modules/rc-select/es/hooks/useSelectTriggerControl.js","../node_modules/rc-select/es/utils/keyUtil.js","../node_modules/rc-overflow/es/Item.js","../node_modules/rc-overflow/es/hooks/channelUpdate.js","../node_modules/rc-overflow/es/hooks/useEffectState.js","../node_modules/rc-overflow/es/context.js","../node_modules/rc-overflow/es/RawItem.js","../node_modules/rc-overflow/es/Overflow.js","../node_modules/rc-util/es/composeProps.js","../node_modules/rc-select/es/Selector/Input.js","../node_modules/rc-select/es/utils/commonUtil.js","../node_modules/rc-select/es/hooks/useLayoutEffect.js","../node_modules/rc-select/es/Selector/MultipleSelector.js","../node_modules/rc-select/es/Selector/SingleSelector.js","../node_modules/rc-select/es/Selector/index.js","../node_modules/@rc-component/trigger/es/Popup/Arrow.js","../node_modules/@rc-component/trigger/es/Popup/Mask.js","../node_modules/@rc-component/trigger/es/Popup/PopupContent.js","../node_modules/@rc-component/trigger/es/Popup/index.js","../node_modules/@rc-component/trigger/es/TriggerWrapper.js","../node_modules/@rc-component/trigger/es/context.js","../node_modules/@rc-component/trigger/es/hooks/useAction.js","../node_modules/@rc-component/trigger/es/util.js","../node_modules/@rc-component/trigger/es/hooks/useAlign.js","../node_modules/@rc-component/trigger/es/hooks/useWatch.js","../node_modules/@rc-component/trigger/es/hooks/useWinClick.js","../node_modules/@rc-component/trigger/es/index.js","../node_modules/rc-select/es/SelectTrigger.js","../node_modules/rc-select/es/utils/valueUtil.js","../node_modules/rc-select/es/SelectContext.js","../node_modules/rc-select/es/BaseSelect/Polite.js","../node_modules/rc-select/es/BaseSelect/index.js","../node_modules/rc-select/es/OptGroup.js","../node_modules/rc-select/es/Option.js","../node_modules/rc-virtual-list/es/Filler.js","../node_modules/rc-virtual-list/es/Item.js","../node_modules/rc-virtual-list/es/hooks/useChildren.js","../node_modules/rc-virtual-list/es/utils/algorithmUtil.js","../node_modules/rc-virtual-list/es/hooks/useDiffItem.js","../node_modules/rc-virtual-list/es/utils/isFirefox.js","../node_modules/rc-virtual-list/es/hooks/useOriginScroll.js","../node_modules/rc-virtual-list/es/hooks/useFrameWheel.js","../node_modules/rc-virtual-list/es/hooks/useGetSize.js","../node_modules/rc-virtual-list/es/utils/CacheMap.js","../node_modules/rc-virtual-list/es/hooks/useHeights.js","../node_modules/rc-virtual-list/es/hooks/useMobileTouchMove.js","../node_modules/rc-virtual-list/es/hooks/useScrollDrag.js","../node_modules/rc-virtual-list/es/hooks/useScrollTo.js","../node_modules/rc-virtual-list/es/ScrollBar.js","../node_modules/rc-virtual-list/es/utils/scrollbarUtil.js","../node_modules/rc-virtual-list/es/List.js","../node_modules/rc-select/es/utils/platformUtil.js","../node_modules/rc-select/es/OptionList.js","../node_modules/rc-select/es/hooks/useCache.js","../node_modules/rc-select/es/hooks/useFilterOptions.js","../node_modules/rc-select/es/hooks/useId.js","../node_modules/rc-select/es/utils/legacyUtil.js","../node_modules/rc-select/es/hooks/useOptions.js","../node_modules/rc-select/es/hooks/useRefFunc.js","../node_modules/rc-select/es/utils/warningPropsUtil.js","../node_modules/rc-select/es/Select.js","../node_modules/antd/es/_util/statusUtils.js","../node_modules/antd/es/empty/empty.js","../node_modules/antd/es/empty/simple.js","../node_modules/antd/es/empty/style/index.js","../node_modules/antd/es/empty/index.js","../node_modules/antd/es/config-provider/defaultRenderEmpty.js","../node_modules/antd/es/form/hooks/useVariants.js","../node_modules/antd/es/select/mergedBuiltinPlacements.js","../node_modules/antd/es/select/style/dropdown.js","../node_modules/antd/es/select/style/multiple.js","../node_modules/antd/es/select/style/single.js","../node_modules/antd/es/select/style/token.js","../node_modules/antd/es/select/style/variants.js","../node_modules/antd/es/select/style/index.js","../node_modules/@ant-design/icons-svg/es/asn/CheckOutlined.js","../node_modules/@ant-design/icons/es/icons/CheckOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/DownOutlined.js","../node_modules/@ant-design/icons/es/icons/DownOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/SearchOutlined.js","../node_modules/@ant-design/icons/es/icons/SearchOutlined.js","../node_modules/antd/es/select/useIcons.js","../node_modules/antd/es/select/useShowArrow.js","../node_modules/antd/es/select/index.js","../node_modules/antd/es/_util/mediaQueryUtil.js","../node_modules/antd/es/_util/responsiveObserver.js","../node_modules/antd/es/_util/hooks/useForceUpdate.js","../node_modules/antd/es/grid/hooks/useBreakpoint.js","../node_modules/rc-tooltip/es/Popup.js","../node_modules/rc-tooltip/es/placements.js","../node_modules/rc-tooltip/es/Tooltip.js","../node_modules/antd/es/style/roundedArrow.js","../node_modules/antd/es/style/placementArrow.js","../node_modules/antd/es/_util/placements.js","../node_modules/antd/es/tooltip/style/index.js","../node_modules/antd/es/_util/colors.js","../node_modules/antd/es/tooltip/util.js","../node_modules/antd/es/tooltip/PurePanel.js","../node_modules/antd/es/tooltip/index.js","../node_modules/@ant-design/icons-svg/es/asn/LeftOutlined.js","../node_modules/@ant-design/icons/es/icons/LeftOutlined.js","../node_modules/rc-dropdown/es/hooks/useAccessibility.js","../node_modules/rc-dropdown/es/Overlay.js","../node_modules/rc-dropdown/es/placements.js","../node_modules/rc-dropdown/es/Dropdown.js","../node_modules/rc-menu/es/context/IdContext.js","../node_modules/rc-menu/es/context/MenuContext.js","../node_modules/rc-menu/es/context/PathContext.js","../node_modules/rc-menu/es/context/PrivateContext.js","../node_modules/rc-util/es/Dom/focus.js","../node_modules/rc-menu/es/hooks/useAccessibility.js","../node_modules/rc-menu/es/utils/timeUtil.js","../node_modules/rc-menu/es/hooks/useKeyRecords.js","../node_modules/rc-menu/es/hooks/useMemoCallback.js","../node_modules/rc-menu/es/hooks/useUUID.js","../node_modules/rc-menu/es/hooks/useActive.js","../node_modules/rc-menu/es/hooks/useDirectionStyle.js","../node_modules/rc-menu/es/Icon.js","../node_modules/rc-menu/es/utils/warnUtil.js","../node_modules/rc-menu/es/MenuItem.js","../node_modules/rc-menu/es/SubMenu/SubMenuList.js","../node_modules/rc-menu/es/utils/commonUtil.js","../node_modules/rc-menu/es/placements.js","../node_modules/rc-menu/es/utils/motionUtil.js","../node_modules/rc-menu/es/SubMenu/PopupTrigger.js","../node_modules/rc-menu/es/SubMenu/InlineSubMenuList.js","../node_modules/rc-menu/es/SubMenu/index.js","../node_modules/rc-menu/es/Divider.js","../node_modules/rc-menu/es/MenuItemGroup.js","../node_modules/rc-menu/es/utils/nodeUtil.js","../node_modules/rc-menu/es/Menu.js","../node_modules/rc-menu/es/index.js","../node_modules/@ant-design/icons-svg/es/asn/EllipsisOutlined.js","../node_modules/@ant-design/icons/es/icons/EllipsisOutlined.js","../node_modules/antd/es/radio/context.js","../node_modules/rc-checkbox/es/index.js","../node_modules/antd/es/checkbox/useBubbleLock.js","../node_modules/antd/es/radio/style/index.js","../node_modules/antd/es/radio/radio.js","../node_modules/antd/es/radio/group.js","../node_modules/antd/es/radio/radioButton.js","../node_modules/antd/es/radio/index.js","../node_modules/antd/es/input/style/token.js","../node_modules/antd/es/input/style/variants.js","../node_modules/antd/es/input/style/index.js","../node_modules/@ant-design/icons-svg/es/asn/PlusOutlined.js","../node_modules/@ant-design/icons/es/icons/PlusOutlined.js","../node_modules/rc-tabs/es/TabContext.js","../node_modules/rc-tabs/es/hooks/useIndicator.js","../node_modules/rc-tabs/es/hooks/useOffsets.js","../node_modules/rc-tabs/es/hooks/useSyncState.js","../node_modules/rc-tabs/es/hooks/useTouchMove.js","../node_modules/rc-tabs/es/hooks/useUpdate.js","../node_modules/rc-tabs/es/hooks/useVisibleRange.js","../node_modules/rc-tabs/es/util.js","../node_modules/rc-tabs/es/TabNavList/AddButton.js","../node_modules/rc-tabs/es/TabNavList/ExtraContent.js","../node_modules/rc-tabs/es/TabNavList/OperationNode.js","../node_modules/rc-tabs/es/TabNavList/TabNode.js","../node_modules/rc-tabs/es/TabNavList/index.js","../node_modules/rc-tabs/es/TabPanelList/TabPane.js","../node_modules/rc-tabs/es/TabNavList/Wrapper.js","../node_modules/rc-tabs/es/TabPanelList/index.js","../node_modules/rc-tabs/es/hooks/useAnimateConfig.js","../node_modules/rc-tabs/es/Tabs.js","../node_modules/antd/es/tabs/hooks/useAnimateConfig.js","../node_modules/antd/es/tabs/hooks/useLegacyItems.js","../node_modules/antd/es/tabs/style/motion.js","../node_modules/antd/es/tabs/style/index.js","../node_modules/antd/es/tabs/TabPane.js","../node_modules/antd/es/tabs/index.js","../node_modules/throttle-debounce/esm/index.js","../node_modules/antd/es/grid/RowContext.js","../node_modules/antd/es/grid/col.js","../node_modules/antd/es/grid/hooks/useGutter.js","../node_modules/antd/es/grid/row.js","../node_modules/antd/es/divider/style/index.js","../node_modules/antd/es/divider/index.js","../node_modules/rc-segmented/es/MotionThumb.js","../node_modules/rc-segmented/es/index.js","../node_modules/antd/es/segmented/style/index.js","../node_modules/antd/es/segmented/index.js","../node_modules/@ant-design/icons-svg/es/asn/UpOutlined.js","../node_modules/@ant-design/icons/es/icons/UpOutlined.js","../node_modules/rc-input/es/utils/commonUtils.js","../node_modules/rc-input/es/BaseInput.js","../node_modules/rc-input/es/hooks/useCount.js","../node_modules/rc-input/es/Input.js","../node_modules/antd/es/_util/getAllowClear.js","../node_modules/antd/es/input/hooks/useRemovePasswordTimeout.js","../node_modules/antd/es/input/utils.js","../node_modules/antd/es/input/Input.js","../node_modules/rc-slider/es/util.js","../node_modules/rc-slider/es/context.js","../node_modules/rc-slider/es/Handles/Handle.js","../node_modules/rc-slider/es/Handles/index.js","../node_modules/rc-slider/es/Marks/Mark.js","../node_modules/rc-slider/es/Marks/index.js","../node_modules/rc-slider/es/Steps/Dot.js","../node_modules/rc-slider/es/Steps/index.js","../node_modules/rc-slider/es/Tracks/Track.js","../node_modules/rc-slider/es/Tracks/index.js","../node_modules/rc-slider/es/hooks/useDrag.js","../node_modules/rc-slider/es/hooks/useOffset.js","../node_modules/rc-slider/es/hooks/useRange.js","../node_modules/rc-slider/es/Slider.js","../node_modules/antd/es/slider/Context.js","../node_modules/antd/es/slider/SliderTooltip.js","../node_modules/antd/es/slider/style/index.js","../node_modules/antd/es/slider/useRafLock.js","../node_modules/antd/es/slider/index.js","../node_modules/rc-drawer/es/context.js","../node_modules/rc-drawer/es/DrawerPanel.js","../node_modules/rc-drawer/es/util.js","../node_modules/rc-drawer/es/DrawerPopup.js","../node_modules/rc-drawer/es/Drawer.js","../node_modules/antd/es/drawer/DrawerPanel.js","../node_modules/antd/es/drawer/style/motion.js","../node_modules/antd/es/drawer/style/index.js","../node_modules/antd/es/drawer/index.js","../node_modules/antd/es/_util/gapSize.js","../node_modules/antd/es/space/context.js","../node_modules/antd/es/space/Item.js","../node_modules/antd/es/space/index.js","../node_modules/@ant-design/icons-svg/es/asn/FileTextOutlined.js","../node_modules/@ant-design/icons/es/icons/FileTextOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/ZoomInOutlined.js","../node_modules/@ant-design/icons/es/icons/ZoomInOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/ZoomOutOutlined.js","../node_modules/@ant-design/icons/es/icons/ZoomOutOutlined.js","../node_modules/rc-textarea/es/calculateNodeHeight.js","../node_modules/rc-textarea/es/ResizableTextArea.js","../node_modules/rc-textarea/es/TextArea.js","../node_modules/antd/es/input/style/textarea.js","../node_modules/antd/es/input/TextArea.js","../node_modules/@ant-design/icons-svg/es/asn/DoubleLeftOutlined.js","../node_modules/@ant-design/icons/es/icons/DoubleLeftOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/DoubleRightOutlined.js","../node_modules/@ant-design/icons/es/icons/DoubleRightOutlined.js","../node_modules/rc-pagination/es/locale/zh_CN.js","../node_modules/rc-pagination/es/Options.js","../node_modules/rc-pagination/es/Pager.js","../node_modules/rc-pagination/es/Pagination.js","../node_modules/antd/es/pagination/style/index.js","../node_modules/antd/es/pagination/style/bordered.js","../node_modules/antd/es/pagination/useShowSizeChanger.js","../node_modules/antd/es/pagination/Pagination.js","../node_modules/antd/es/spin/Indicator/Progress.js","../node_modules/antd/es/spin/Indicator/Looper.js","../node_modules/antd/es/spin/Indicator/index.js","../node_modules/antd/es/spin/style/index.js","../node_modules/antd/es/spin/usePercent.js","../node_modules/antd/es/spin/index.js","../node_modules/antd/es/_util/toList.js","../node_modules/antd/es/modal/PurePanel.js","../node_modules/antd/es/modal/index.js","../node_modules/@ant-design/icons-svg/es/asn/CloseCircleTwoTone.js","../node_modules/@ant-design/icons/es/icons/CloseCircleTwoTone.js","../node_modules/@ant-design/icons-svg/es/asn/CopyOutlined.js","../node_modules/@ant-design/icons/es/icons/CopyOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/DownloadOutlined.js","../node_modules/@ant-design/icons/es/icons/DownloadOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/EditOutlined.js","../node_modules/@ant-design/icons/es/icons/EditOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/EnterOutlined.js","../node_modules/@ant-design/icons/es/icons/EnterOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/FileImageOutlined.js","../node_modules/@ant-design/icons/es/icons/FileImageOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/FullscreenExitOutlined.js","../node_modules/@ant-design/icons/es/icons/FullscreenExitOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/FullscreenOutlined.js","../node_modules/@ant-design/icons/es/icons/FullscreenOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/PauseCircleTwoTone.js","../node_modules/@ant-design/icons/es/icons/PauseCircleTwoTone.js","../node_modules/@ant-design/icons-svg/es/asn/PlayCircleTwoTone.js","../node_modules/@ant-design/icons/es/icons/PlayCircleTwoTone.js","../node_modules/@ant-design/icons-svg/es/asn/SettingOutlined.js","../node_modules/@ant-design/icons/es/icons/SettingOutlined.js","../node_modules/@ant-design/icons/es/components/Icon.js","../node_modules/rc-switch/es/index.js","../node_modules/antd/es/switch/style/index.js","../node_modules/antd/es/switch/index.js","../node_modules/antd/es/theme/index.js","../node_modules/antd/es/typography/style/mixins.js","../node_modules/antd/es/typography/style/index.js","../node_modules/antd/es/typography/Editable.js","../node_modules/toggle-selection/index.js","../node_modules/copy-to-clipboard/index.js","../node_modules/antd/es/typography/hooks/useCopyClick.js","../node_modules/antd/es/typography/hooks/useMergedConfig.js","../node_modules/antd/es/typography/hooks/usePrevious.js","../node_modules/antd/es/typography/hooks/useTooltipProps.js","../node_modules/antd/es/typography/Typography.js","../node_modules/antd/es/typography/Base/util.js","../node_modules/antd/es/typography/Base/CopyBtn.js","../node_modules/antd/es/typography/Base/Ellipsis.js","../node_modules/antd/es/typography/Base/EllipsisTooltip.js","../node_modules/antd/es/typography/Base/index.js","../node_modules/antd/es/typography/Link.js","../node_modules/antd/es/typography/Paragraph.js","../node_modules/antd/es/typography/Text.js","../node_modules/antd/es/typography/Title.js","../node_modules/antd/es/typography/index.js","../node_modules/antd/es/splitter/Panel.js","../node_modules/antd/es/splitter/hooks/useItems.js","../node_modules/antd/es/splitter/hooks/useResizable.js","../node_modules/antd/es/splitter/hooks/useSizes.js","../node_modules/antd/es/splitter/hooks/useResize.js","../node_modules/antd/es/splitter/SplitBar.js","../node_modules/antd/es/splitter/style/index.js","../node_modules/antd/es/splitter/Splitter.js","../node_modules/antd/es/splitter/index.js","../node_modules/ua-parser-js/dist/ua-parser.min.js","../node_modules/react-device-detect/dist/lib.js","../src/ErrorBoundary.tsx","../node_modules/react-swipeable/es/index.js","../src/SvgUtils.tsx","../src/PlayerHighlighter.tsx","../src/hooks/useWebAudioPlayer.tsx","../src/AudioPlayer.tsx","../src/hooks/useEditorialHandler.tsx","../src/hooks/useHoverHighlighter.tsx","../src/HoverHighlighter.tsx","../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../node_modules/react-tooltip/dist/react-tooltip.min.mjs","../src/Editorials.tsx","../assets/static-player.svg?react","../assets/scrolling-player.svg?react","../src/PlayerControls.tsx","../src/hooks/useScoreControls.tsx","../src/ScoreControls.tsx","../node_modules/react-use-size/dist/useWindowSize.js","../node_modules/react-use-size/dist/useBreakpoint.js","../node_modules/react-use-size/dist/useComponentSize.js","../node_modules/react-use-size/dist/index.js","../src/ScoreProcessor.tsx","../src/ScoreAnalyzer.tsx","../src/hooks/useScoreActions.tsx","../src/hooks/useScoreRenderer.tsx","../src/components/LoadingSpinner.tsx","../src/hooks/useIdleCallback.tsx","../src/ScoreView.tsx","../src/hooks/useScoreAnimation.tsx","../src/ScoreViewAutoScroll.tsx","../src/hooks/useIsVisible.tsx","../src/MouseTracker.tsx","../src/ScoreViewContainer.tsx","../node_modules/devlop/lib/default.js","../node_modules/comma-separated-tokens/index.js","../node_modules/estree-util-is-identifier-name/lib/index.js","../node_modules/hast-util-whitespace/lib/index.js","../node_modules/property-information/lib/util/schema.js","../node_modules/property-information/lib/util/merge.js","../node_modules/property-information/lib/normalize.js","../node_modules/property-information/lib/util/info.js","../node_modules/property-information/lib/util/types.js","../node_modules/property-information/lib/util/defined-info.js","../node_modules/property-information/lib/util/create.js","../node_modules/property-information/lib/aria.js","../node_modules/property-information/lib/util/case-sensitive-transform.js","../node_modules/property-information/lib/util/case-insensitive-transform.js","../node_modules/property-information/lib/html.js","../node_modules/property-information/lib/svg.js","../node_modules/property-information/lib/xlink.js","../node_modules/property-information/lib/xmlns.js","../node_modules/property-information/lib/xml.js","../node_modules/property-information/lib/hast-to-react.js","../node_modules/property-information/lib/find.js","../node_modules/property-information/index.js","../node_modules/space-separated-tokens/index.js","../node_modules/inline-style-parser/index.js","../node_modules/style-to-object/cjs/index.js","../node_modules/style-to-js/cjs/utilities.js","../node_modules/style-to-js/cjs/index.js","../node_modules/unist-util-position/lib/index.js","../node_modules/unist-util-stringify-position/lib/index.js","../node_modules/vfile-message/lib/index.js","../node_modules/hast-util-to-jsx-runtime/lib/index.js","../node_modules/html-url-attributes/lib/index.js","../node_modules/mdast-util-to-string/lib/index.js","../node_modules/decode-named-character-reference/index.dom.js","../node_modules/micromark-util-chunked/index.js","../node_modules/micromark-util-combine-extensions/index.js","../node_modules/micromark-util-decode-numeric-character-reference/index.js","../node_modules/micromark-util-normalize-identifier/index.js","../node_modules/micromark-util-character/index.js","../node_modules/micromark-util-sanitize-uri/index.js","../node_modules/micromark-factory-space/index.js","../node_modules/micromark/lib/initialize/content.js","../node_modules/micromark/lib/initialize/document.js","../node_modules/micromark-util-classify-character/index.js","../node_modules/micromark-util-resolve-all/index.js","../node_modules/micromark-core-commonmark/lib/attention.js","../node_modules/micromark-core-commonmark/lib/autolink.js","../node_modules/micromark-core-commonmark/lib/blank-line.js","../node_modules/micromark-core-commonmark/lib/block-quote.js","../node_modules/micromark-core-commonmark/lib/character-escape.js","../node_modules/micromark-core-commonmark/lib/character-reference.js","../node_modules/micromark-core-commonmark/lib/code-fenced.js","../node_modules/micromark-core-commonmark/lib/code-indented.js","../node_modules/micromark-core-commonmark/lib/code-text.js","../node_modules/micromark-util-subtokenize/lib/splice-buffer.js","../node_modules/micromark-util-subtokenize/index.js","../node_modules/micromark-core-commonmark/lib/content.js","../node_modules/micromark-factory-destination/index.js","../node_modules/micromark-factory-label/index.js","../node_modules/micromark-factory-title/index.js","../node_modules/micromark-factory-whitespace/index.js","../node_modules/micromark-core-commonmark/lib/definition.js","../node_modules/micromark-core-commonmark/lib/hard-break-escape.js","../node_modules/micromark-core-commonmark/lib/heading-atx.js","../node_modules/micromark-util-html-tag-name/index.js","../node_modules/micromark-core-commonmark/lib/html-flow.js","../node_modules/micromark-core-commonmark/lib/html-text.js","../node_modules/micromark-core-commonmark/lib/label-end.js","../node_modules/micromark-core-commonmark/lib/label-start-image.js","../node_modules/micromark-core-commonmark/lib/label-start-link.js","../node_modules/micromark-core-commonmark/lib/line-ending.js","../node_modules/micromark-core-commonmark/lib/thematic-break.js","../node_modules/micromark-core-commonmark/lib/list.js","../node_modules/micromark-core-commonmark/lib/setext-underline.js","../node_modules/micromark/lib/initialize/flow.js","../node_modules/micromark/lib/initialize/text.js","../node_modules/micromark/lib/constructs.js","../node_modules/micromark/lib/create-tokenizer.js","../node_modules/micromark/lib/parse.js","../node_modules/micromark/lib/postprocess.js","../node_modules/micromark/lib/preprocess.js","../node_modules/micromark-util-decode-string/index.js","../node_modules/mdast-util-from-markdown/lib/index.js","../node_modules/remark-parse/lib/index.js","../node_modules/mdast-util-to-hast/lib/handlers/blockquote.js","../node_modules/mdast-util-to-hast/lib/handlers/break.js","../node_modules/mdast-util-to-hast/lib/handlers/code.js","../node_modules/mdast-util-to-hast/lib/handlers/delete.js","../node_modules/mdast-util-to-hast/lib/handlers/emphasis.js","../node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/heading.js","../node_modules/mdast-util-to-hast/lib/handlers/html.js","../node_modules/mdast-util-to-hast/lib/revert.js","../node_modules/mdast-util-to-hast/lib/handlers/image-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/image.js","../node_modules/mdast-util-to-hast/lib/handlers/inline-code.js","../node_modules/mdast-util-to-hast/lib/handlers/link-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/link.js","../node_modules/mdast-util-to-hast/lib/handlers/list-item.js","../node_modules/mdast-util-to-hast/lib/handlers/list.js","../node_modules/mdast-util-to-hast/lib/handlers/paragraph.js","../node_modules/mdast-util-to-hast/lib/handlers/root.js","../node_modules/mdast-util-to-hast/lib/handlers/strong.js","../node_modules/mdast-util-to-hast/lib/handlers/table.js","../node_modules/mdast-util-to-hast/lib/handlers/table-row.js","../node_modules/mdast-util-to-hast/lib/handlers/table-cell.js","../node_modules/trim-lines/index.js","../node_modules/mdast-util-to-hast/lib/handlers/text.js","../node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js","../node_modules/mdast-util-to-hast/lib/handlers/index.js","../node_modules/@ungap/structured-clone/esm/types.js","../node_modules/@ungap/structured-clone/esm/deserialize.js","../node_modules/@ungap/structured-clone/esm/serialize.js","../node_modules/@ungap/structured-clone/esm/index.js","../node_modules/mdast-util-to-hast/lib/footer.js","../node_modules/unist-util-is/lib/index.js","../node_modules/unist-util-visit-parents/lib/color.js","../node_modules/unist-util-visit-parents/lib/index.js","../node_modules/unist-util-visit/lib/index.js","../node_modules/mdast-util-to-hast/lib/state.js","../node_modules/mdast-util-to-hast/lib/index.js","../node_modules/remark-rehype/lib/index.js","../node_modules/bail/index.js","../node_modules/extend/index.js","../node_modules/is-plain-obj/index.js","../node_modules/trough/lib/index.js","../node_modules/vfile/lib/minpath.browser.js","../node_modules/vfile/lib/minproc.browser.js","../node_modules/vfile/lib/minurl.shared.js","../node_modules/vfile/lib/minurl.browser.js","../node_modules/vfile/lib/index.js","../node_modules/unified/lib/callable-instance.js","../node_modules/unified/lib/index.js","../node_modules/react-markdown/lib/index.js","../node_modules/ccount/index.js","../node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp/index.js","../node_modules/mdast-util-find-and-replace/lib/index.js","../node_modules/mdast-util-gfm-autolink-literal/lib/index.js","../node_modules/mdast-util-gfm-footnote/lib/index.js","../node_modules/mdast-util-gfm-strikethrough/lib/index.js","../node_modules/markdown-table/index.js","../node_modules/zwitch/index.js","../node_modules/mdast-util-to-markdown/lib/handle/blockquote.js","../node_modules/mdast-util-to-markdown/lib/util/pattern-in-scope.js","../node_modules/mdast-util-to-markdown/lib/handle/break.js","../node_modules/longest-streak/index.js","../node_modules/mdast-util-to-markdown/lib/util/format-code-as-indented.js","../node_modules/mdast-util-to-markdown/lib/util/check-fence.js","../node_modules/mdast-util-to-markdown/lib/handle/code.js","../node_modules/mdast-util-to-markdown/lib/util/check-quote.js","../node_modules/mdast-util-to-markdown/lib/handle/definition.js","../node_modules/mdast-util-to-markdown/lib/util/check-emphasis.js","../node_modules/mdast-util-to-markdown/lib/util/encode-character-reference.js","../node_modules/mdast-util-to-markdown/lib/util/encode-info.js","../node_modules/mdast-util-to-markdown/lib/handle/emphasis.js","../node_modules/mdast-util-to-markdown/lib/util/format-heading-as-setext.js","../node_modules/mdast-util-to-markdown/lib/handle/heading.js","../node_modules/mdast-util-to-markdown/lib/handle/html.js","../node_modules/mdast-util-to-markdown/lib/handle/image.js","../node_modules/mdast-util-to-markdown/lib/handle/image-reference.js","../node_modules/mdast-util-to-markdown/lib/handle/inline-code.js","../node_modules/mdast-util-to-markdown/lib/util/format-link-as-autolink.js","../node_modules/mdast-util-to-markdown/lib/handle/link.js","../node_modules/mdast-util-to-markdown/lib/handle/link-reference.js","../node_modules/mdast-util-to-markdown/lib/util/check-bullet.js","../node_modules/mdast-util-to-markdown/lib/util/check-bullet-other.js","../node_modules/mdast-util-to-markdown/lib/util/check-bullet-ordered.js","../node_modules/mdast-util-to-markdown/lib/util/check-rule.js","../node_modules/mdast-util-to-markdown/lib/handle/list.js","../node_modules/mdast-util-to-markdown/lib/util/check-list-item-indent.js","../node_modules/mdast-util-to-markdown/lib/handle/list-item.js","../node_modules/mdast-util-to-markdown/lib/handle/paragraph.js","../node_modules/mdast-util-phrasing/lib/index.js","../node_modules/mdast-util-to-markdown/lib/handle/root.js","../node_modules/mdast-util-to-markdown/lib/util/check-strong.js","../node_modules/mdast-util-to-markdown/lib/handle/strong.js","../node_modules/mdast-util-to-markdown/lib/handle/text.js","../node_modules/mdast-util-to-markdown/lib/util/check-rule-repetition.js","../node_modules/mdast-util-to-markdown/lib/handle/thematic-break.js","../node_modules/mdast-util-to-markdown/lib/handle/index.js","../node_modules/mdast-util-gfm-table/lib/index.js","../node_modules/mdast-util-gfm-task-list-item/lib/index.js","../node_modules/mdast-util-gfm/lib/index.js","../node_modules/micromark-extension-gfm-autolink-literal/lib/syntax.js","../node_modules/micromark-extension-gfm-footnote/lib/syntax.js","../node_modules/micromark-extension-gfm-strikethrough/lib/syntax.js","../node_modules/micromark-extension-gfm-table/lib/edit-map.js","../node_modules/micromark-extension-gfm-table/lib/infer.js","../node_modules/micromark-extension-gfm-table/lib/syntax.js","../node_modules/micromark-extension-gfm-task-list-item/lib/syntax.js","../node_modules/micromark-extension-gfm/index.js","../node_modules/remark-gfm/lib/index.js","../node_modules/hast-util-parse-selector/lib/index.js","../node_modules/hastscript/lib/create-h.js","../node_modules/hastscript/lib/svg-case-sensitive-tag-names.js","../node_modules/hastscript/lib/index.js","../node_modules/vfile-location/lib/index.js","../node_modules/web-namespaces/index.js","../node_modules/hast-util-from-parse5/lib/index.js","../node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/schema.js","../node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/merge.js","../node_modules/hast-util-to-parse5/node_modules/property-information/lib/normalize.js","../node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/info.js","../node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/types.js","../node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/defined-info.js","../node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/create.js","../node_modules/hast-util-to-parse5/node_modules/property-information/lib/xlink.js","../node_modules/hast-util-to-parse5/node_modules/property-information/lib/xml.js","../node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/case-sensitive-transform.js","../node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/case-insensitive-transform.js","../node_modules/hast-util-to-parse5/node_modules/property-information/lib/xmlns.js","../node_modules/hast-util-to-parse5/node_modules/property-information/lib/aria.js","../node_modules/hast-util-to-parse5/node_modules/property-information/lib/html.js","../node_modules/hast-util-to-parse5/node_modules/property-information/lib/svg.js","../node_modules/hast-util-to-parse5/node_modules/property-information/lib/find.js","../node_modules/hast-util-to-parse5/node_modules/property-information/index.js","../node_modules/hast-util-to-parse5/lib/index.js","../node_modules/html-void-elements/index.js","../node_modules/parse5/dist/common/unicode.js","../node_modules/parse5/dist/common/error-codes.js","../node_modules/parse5/dist/tokenizer/preprocessor.js","../node_modules/parse5/dist/common/token.js","../node_modules/parse5/node_modules/entities/dist/esm/generated/decode-data-html.js","../node_modules/parse5/node_modules/entities/dist/esm/decode-codepoint.js","../node_modules/parse5/node_modules/entities/dist/esm/decode.js","../node_modules/parse5/dist/common/html.js","../node_modules/parse5/dist/tokenizer/index.js","../node_modules/parse5/dist/parser/open-element-stack.js","../node_modules/parse5/dist/parser/formatting-element-list.js","../node_modules/parse5/dist/tree-adapters/default.js","../node_modules/parse5/dist/common/doctype.js","../node_modules/parse5/dist/common/foreign-content.js","../node_modules/parse5/dist/parser/index.js","../node_modules/parse5/dist/serializer/index.js","../node_modules/hast-util-raw/lib/index.js","../node_modules/rehype-raw/lib/index.js","../node_modules/hast-util-is-element/lib/index.js","../node_modules/is-absolute-url/index.js","../node_modules/rehype-external-links/lib/index.js","../node_modules/unist-util-find-after/node_modules/unist-util-is/lib/index.js","../node_modules/unist-util-find-after/lib/index.js","../node_modules/remark-sectionize/node_modules/unist-util-is/lib/index.js","../node_modules/remark-sectionize/node_modules/unist-util-visit-parents/lib/color.browser.js","../node_modules/remark-sectionize/node_modules/unist-util-visit-parents/lib/index.js","../node_modules/remark-sectionize/node_modules/unist-util-visit/lib/index.js","../node_modules/remark-sectionize/index.js","../src/ErrorView.tsx","../src/TextView.tsx","../node_modules/react-zoom-pan-pinch/dist/index.esm.js","../src/FacsimileView.tsx","../src/hooks/useScoreManager.tsx","../src/hooks/useTextParts.tsx","../src/hooks/useConfigValidation.tsx","../src/ScoreOptionsPanel.tsx","../assets/music.svg?react","../src/components/TabLayout.tsx","../src/components/SplitViewLayout.tsx","../src/components/LayoutManager.tsx","../src/components/SplitViewSelector.tsx","../src/components/ScoreViewerHeader.tsx","../src/hooks/useScoreViewerEffects.tsx","../src/ScoreViewer.tsx"],"sourcesContent":["const isString = obj => typeof obj === 'string';\nconst defer = () => {\n  let res;\n  let rej;\n  const promise = new Promise((resolve, reject) => {\n    res = resolve;\n    rej = reject;\n  });\n  promise.resolve = res;\n  promise.reject = rej;\n  return promise;\n};\nconst makeString = object => {\n  if (object == null) return '';\n  return '' + object;\n};\nconst copy = (a, s, t) => {\n  a.forEach(m => {\n    if (s[m]) t[m] = s[m];\n  });\n};\nconst lastOfPathSeparatorRegExp = /###/g;\nconst cleanKey = key => key && key.indexOf('###') > -1 ? key.replace(lastOfPathSeparatorRegExp, '.') : key;\nconst canNotTraverseDeeper = object => !object || isString(object);\nconst getLastOfPath = (object, path, Empty) => {\n  const stack = !isString(path) ? path : path.split('.');\n  let stackIndex = 0;\n  while (stackIndex < stack.length - 1) {\n    if (canNotTraverseDeeper(object)) return {};\n    const key = cleanKey(stack[stackIndex]);\n    if (!object[key] && Empty) object[key] = new Empty();\n    if (Object.prototype.hasOwnProperty.call(object, key)) {\n      object = object[key];\n    } else {\n      object = {};\n    }\n    ++stackIndex;\n  }\n  if (canNotTraverseDeeper(object)) return {};\n  return {\n    obj: object,\n    k: cleanKey(stack[stackIndex])\n  };\n};\nconst setPath = (object, path, newValue) => {\n  const {\n    obj,\n    k\n  } = getLastOfPath(object, path, Object);\n  if (obj !== undefined || path.length === 1) {\n    obj[k] = newValue;\n    return;\n  }\n  let e = path[path.length - 1];\n  let p = path.slice(0, path.length - 1);\n  let last = getLastOfPath(object, p, Object);\n  while (last.obj === undefined && p.length) {\n    e = `${p[p.length - 1]}.${e}`;\n    p = p.slice(0, p.length - 1);\n    last = getLastOfPath(object, p, Object);\n    if (last?.obj && typeof last.obj[`${last.k}.${e}`] !== 'undefined') {\n      last.obj = undefined;\n    }\n  }\n  last.obj[`${last.k}.${e}`] = newValue;\n};\nconst pushPath = (object, path, newValue, concat) => {\n  const {\n    obj,\n    k\n  } = getLastOfPath(object, path, Object);\n  obj[k] = obj[k] || [];\n  obj[k].push(newValue);\n};\nconst getPath = (object, path) => {\n  const {\n    obj,\n    k\n  } = getLastOfPath(object, path);\n  if (!obj) return undefined;\n  if (!Object.prototype.hasOwnProperty.call(obj, k)) return undefined;\n  return obj[k];\n};\nconst getPathWithDefaults = (data, defaultData, key) => {\n  const value = getPath(data, key);\n  if (value !== undefined) {\n    return value;\n  }\n  return getPath(defaultData, key);\n};\nconst deepExtend = (target, source, overwrite) => {\n  for (const prop in source) {\n    if (prop !== '__proto__' && prop !== 'constructor') {\n      if (prop in target) {\n        if (isString(target[prop]) || target[prop] instanceof String || isString(source[prop]) || source[prop] instanceof String) {\n          if (overwrite) target[prop] = source[prop];\n        } else {\n          deepExtend(target[prop], source[prop], overwrite);\n        }\n      } else {\n        target[prop] = source[prop];\n      }\n    }\n  }\n  return target;\n};\nconst regexEscape = str => str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\nvar _entityMap = {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;',\n  \"'\": '&#39;',\n  '/': '&#x2F;'\n};\nconst escape = data => {\n  if (isString(data)) {\n    return data.replace(/[&<>\"'\\/]/g, s => _entityMap[s]);\n  }\n  return data;\n};\nclass RegExpCache {\n  constructor(capacity) {\n    this.capacity = capacity;\n    this.regExpMap = new Map();\n    this.regExpQueue = [];\n  }\n  getRegExp(pattern) {\n    const regExpFromCache = this.regExpMap.get(pattern);\n    if (regExpFromCache !== undefined) {\n      return regExpFromCache;\n    }\n    const regExpNew = new RegExp(pattern);\n    if (this.regExpQueue.length === this.capacity) {\n      this.regExpMap.delete(this.regExpQueue.shift());\n    }\n    this.regExpMap.set(pattern, regExpNew);\n    this.regExpQueue.push(pattern);\n    return regExpNew;\n  }\n}\nconst chars = [' ', ',', '?', '!', ';'];\nconst looksLikeObjectPathRegExpCache = new RegExpCache(20);\nconst looksLikeObjectPath = (key, nsSeparator, keySeparator) => {\n  nsSeparator = nsSeparator || '';\n  keySeparator = keySeparator || '';\n  const possibleChars = chars.filter(c => nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0);\n  if (possibleChars.length === 0) return true;\n  const r = looksLikeObjectPathRegExpCache.getRegExp(`(${possibleChars.map(c => c === '?' ? '\\\\?' : c).join('|')})`);\n  let matched = !r.test(key);\n  if (!matched) {\n    const ki = key.indexOf(keySeparator);\n    if (ki > 0 && !r.test(key.substring(0, ki))) {\n      matched = true;\n    }\n  }\n  return matched;\n};\nconst deepFind = (obj, path, keySeparator = '.') => {\n  if (!obj) return undefined;\n  if (obj[path]) {\n    if (!Object.prototype.hasOwnProperty.call(obj, path)) return undefined;\n    return obj[path];\n  }\n  const tokens = path.split(keySeparator);\n  let current = obj;\n  for (let i = 0; i < tokens.length;) {\n    if (!current || typeof current !== 'object') {\n      return undefined;\n    }\n    let next;\n    let nextPath = '';\n    for (let j = i; j < tokens.length; ++j) {\n      if (j !== i) {\n        nextPath += keySeparator;\n      }\n      nextPath += tokens[j];\n      next = current[nextPath];\n      if (next !== undefined) {\n        if (['string', 'number', 'boolean'].indexOf(typeof next) > -1 && j < tokens.length - 1) {\n          continue;\n        }\n        i += j - i + 1;\n        break;\n      }\n    }\n    current = next;\n  }\n  return current;\n};\nconst getCleanedCode = code => code?.replace('_', '-');\n\nconst consoleLogger = {\n  type: 'logger',\n  log(args) {\n    this.output('log', args);\n  },\n  warn(args) {\n    this.output('warn', args);\n  },\n  error(args) {\n    this.output('error', args);\n  },\n  output(type, args) {\n    console?.[type]?.apply?.(console, args);\n  }\n};\nclass Logger {\n  constructor(concreteLogger, options = {}) {\n    this.init(concreteLogger, options);\n  }\n  init(concreteLogger, options = {}) {\n    this.prefix = options.prefix || 'i18next:';\n    this.logger = concreteLogger || consoleLogger;\n    this.options = options;\n    this.debug = options.debug;\n  }\n  log(...args) {\n    return this.forward(args, 'log', '', true);\n  }\n  warn(...args) {\n    return this.forward(args, 'warn', '', true);\n  }\n  error(...args) {\n    return this.forward(args, 'error', '');\n  }\n  deprecate(...args) {\n    return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n  }\n  forward(args, lvl, prefix, debugOnly) {\n    if (debugOnly && !this.debug) return null;\n    if (isString(args[0])) args[0] = `${prefix}${this.prefix} ${args[0]}`;\n    return this.logger[lvl](args);\n  }\n  create(moduleName) {\n    return new Logger(this.logger, {\n      ...{\n        prefix: `${this.prefix}:${moduleName}:`\n      },\n      ...this.options\n    });\n  }\n  clone(options) {\n    options = options || this.options;\n    options.prefix = options.prefix || this.prefix;\n    return new Logger(this.logger, options);\n  }\n}\nvar baseLogger = new Logger();\n\nclass EventEmitter {\n  constructor() {\n    this.observers = {};\n  }\n  on(events, listener) {\n    events.split(' ').forEach(event => {\n      if (!this.observers[event]) this.observers[event] = new Map();\n      const numListeners = this.observers[event].get(listener) || 0;\n      this.observers[event].set(listener, numListeners + 1);\n    });\n    return this;\n  }\n  off(event, listener) {\n    if (!this.observers[event]) return;\n    if (!listener) {\n      delete this.observers[event];\n      return;\n    }\n    this.observers[event].delete(listener);\n  }\n  emit(event, ...args) {\n    if (this.observers[event]) {\n      const cloned = Array.from(this.observers[event].entries());\n      cloned.forEach(([observer, numTimesAdded]) => {\n        for (let i = 0; i < numTimesAdded; i++) {\n          observer(...args);\n        }\n      });\n    }\n    if (this.observers['*']) {\n      const cloned = Array.from(this.observers['*'].entries());\n      cloned.forEach(([observer, numTimesAdded]) => {\n        for (let i = 0; i < numTimesAdded; i++) {\n          observer.apply(observer, [event, ...args]);\n        }\n      });\n    }\n  }\n}\n\nclass ResourceStore extends EventEmitter {\n  constructor(data, options = {\n    ns: ['translation'],\n    defaultNS: 'translation'\n  }) {\n    super();\n    this.data = data || {};\n    this.options = options;\n    if (this.options.keySeparator === undefined) {\n      this.options.keySeparator = '.';\n    }\n    if (this.options.ignoreJSONStructure === undefined) {\n      this.options.ignoreJSONStructure = true;\n    }\n  }\n  addNamespaces(ns) {\n    if (this.options.ns.indexOf(ns) < 0) {\n      this.options.ns.push(ns);\n    }\n  }\n  removeNamespaces(ns) {\n    const index = this.options.ns.indexOf(ns);\n    if (index > -1) {\n      this.options.ns.splice(index, 1);\n    }\n  }\n  getResource(lng, ns, key, options = {}) {\n    const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n    const ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n    let path;\n    if (lng.indexOf('.') > -1) {\n      path = lng.split('.');\n    } else {\n      path = [lng, ns];\n      if (key) {\n        if (Array.isArray(key)) {\n          path.push(...key);\n        } else if (isString(key) && keySeparator) {\n          path.push(...key.split(keySeparator));\n        } else {\n          path.push(key);\n        }\n      }\n    }\n    const result = getPath(this.data, path);\n    if (!result && !ns && !key && lng.indexOf('.') > -1) {\n      lng = path[0];\n      ns = path[1];\n      key = path.slice(2).join('.');\n    }\n    if (result || !ignoreJSONStructure || !isString(key)) return result;\n    return deepFind(this.data?.[lng]?.[ns], key, keySeparator);\n  }\n  addResource(lng, ns, key, value, options = {\n    silent: false\n  }) {\n    const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n    let path = [lng, ns];\n    if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n    if (lng.indexOf('.') > -1) {\n      path = lng.split('.');\n      value = ns;\n      ns = path[1];\n    }\n    this.addNamespaces(ns);\n    setPath(this.data, path, value);\n    if (!options.silent) this.emit('added', lng, ns, key, value);\n  }\n  addResources(lng, ns, resources, options = {\n    silent: false\n  }) {\n    for (const m in resources) {\n      if (isString(resources[m]) || Array.isArray(resources[m])) this.addResource(lng, ns, m, resources[m], {\n        silent: true\n      });\n    }\n    if (!options.silent) this.emit('added', lng, ns, resources);\n  }\n  addResourceBundle(lng, ns, resources, deep, overwrite, options = {\n    silent: false,\n    skipCopy: false\n  }) {\n    let path = [lng, ns];\n    if (lng.indexOf('.') > -1) {\n      path = lng.split('.');\n      deep = resources;\n      resources = ns;\n      ns = path[1];\n    }\n    this.addNamespaces(ns);\n    let pack = getPath(this.data, path) || {};\n    if (!options.skipCopy) resources = JSON.parse(JSON.stringify(resources));\n    if (deep) {\n      deepExtend(pack, resources, overwrite);\n    } else {\n      pack = {\n        ...pack,\n        ...resources\n      };\n    }\n    setPath(this.data, path, pack);\n    if (!options.silent) this.emit('added', lng, ns, resources);\n  }\n  removeResourceBundle(lng, ns) {\n    if (this.hasResourceBundle(lng, ns)) {\n      delete this.data[lng][ns];\n    }\n    this.removeNamespaces(ns);\n    this.emit('removed', lng, ns);\n  }\n  hasResourceBundle(lng, ns) {\n    return this.getResource(lng, ns) !== undefined;\n  }\n  getResourceBundle(lng, ns) {\n    if (!ns) ns = this.options.defaultNS;\n    return this.getResource(lng, ns);\n  }\n  getDataByLanguage(lng) {\n    return this.data[lng];\n  }\n  hasLanguageSomeTranslations(lng) {\n    const data = this.getDataByLanguage(lng);\n    const n = data && Object.keys(data) || [];\n    return !!n.find(v => data[v] && Object.keys(data[v]).length > 0);\n  }\n  toJSON() {\n    return this.data;\n  }\n}\n\nvar postProcessor = {\n  processors: {},\n  addPostProcessor(module) {\n    this.processors[module.name] = module;\n  },\n  handle(processors, value, key, options, translator) {\n    processors.forEach(processor => {\n      value = this.processors[processor]?.process(value, key, options, translator) ?? value;\n    });\n    return value;\n  }\n};\n\nconst checkedLoadedFor = {};\nconst shouldHandleAsObject = res => !isString(res) && typeof res !== 'boolean' && typeof res !== 'number';\nclass Translator extends EventEmitter {\n  constructor(services, options = {}) {\n    super();\n    copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, this);\n    this.options = options;\n    if (this.options.keySeparator === undefined) {\n      this.options.keySeparator = '.';\n    }\n    this.logger = baseLogger.create('translator');\n  }\n  changeLanguage(lng) {\n    if (lng) this.language = lng;\n  }\n  exists(key, o = {\n    interpolation: {}\n  }) {\n    const opt = {\n      ...o\n    };\n    if (key == null) return false;\n    const resolved = this.resolve(key, opt);\n    return resolved?.res !== undefined;\n  }\n  extractFromKey(key, opt) {\n    let nsSeparator = opt.nsSeparator !== undefined ? opt.nsSeparator : this.options.nsSeparator;\n    if (nsSeparator === undefined) nsSeparator = ':';\n    const keySeparator = opt.keySeparator !== undefined ? opt.keySeparator : this.options.keySeparator;\n    let namespaces = opt.ns || this.options.defaultNS || [];\n    const wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;\n    const seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !opt.keySeparator && !this.options.userDefinedNsSeparator && !opt.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n    if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n      const m = key.match(this.interpolator.nestingRegexp);\n      if (m && m.length > 0) {\n        return {\n          key,\n          namespaces: isString(namespaces) ? [namespaces] : namespaces\n        };\n      }\n      const parts = key.split(nsSeparator);\n      if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n      key = parts.join(keySeparator);\n    }\n    return {\n      key,\n      namespaces: isString(namespaces) ? [namespaces] : namespaces\n    };\n  }\n  translate(keys, o, lastKey) {\n    let opt = typeof o === 'object' ? {\n      ...o\n    } : o;\n    if (typeof opt !== 'object' && this.options.overloadTranslationOptionHandler) {\n      opt = this.options.overloadTranslationOptionHandler(arguments);\n    }\n    if (typeof options === 'object') opt = {\n      ...opt\n    };\n    if (!opt) opt = {};\n    if (keys == null) return '';\n    if (!Array.isArray(keys)) keys = [String(keys)];\n    const returnDetails = opt.returnDetails !== undefined ? opt.returnDetails : this.options.returnDetails;\n    const keySeparator = opt.keySeparator !== undefined ? opt.keySeparator : this.options.keySeparator;\n    const {\n      key,\n      namespaces\n    } = this.extractFromKey(keys[keys.length - 1], opt);\n    const namespace = namespaces[namespaces.length - 1];\n    let nsSeparator = opt.nsSeparator !== undefined ? opt.nsSeparator : this.options.nsSeparator;\n    if (nsSeparator === undefined) nsSeparator = ':';\n    const lng = opt.lng || this.language;\n    const appendNamespaceToCIMode = opt.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n    if (lng?.toLowerCase() === 'cimode') {\n      if (appendNamespaceToCIMode) {\n        if (returnDetails) {\n          return {\n            res: `${namespace}${nsSeparator}${key}`,\n            usedKey: key,\n            exactUsedKey: key,\n            usedLng: lng,\n            usedNS: namespace,\n            usedParams: this.getUsedParamsDetails(opt)\n          };\n        }\n        return `${namespace}${nsSeparator}${key}`;\n      }\n      if (returnDetails) {\n        return {\n          res: key,\n          usedKey: key,\n          exactUsedKey: key,\n          usedLng: lng,\n          usedNS: namespace,\n          usedParams: this.getUsedParamsDetails(opt)\n        };\n      }\n      return key;\n    }\n    const resolved = this.resolve(keys, opt);\n    let res = resolved?.res;\n    const resUsedKey = resolved?.usedKey || key;\n    const resExactUsedKey = resolved?.exactUsedKey || key;\n    const noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n    const joinArrays = opt.joinArrays !== undefined ? opt.joinArrays : this.options.joinArrays;\n    const handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n    const needsPluralHandling = opt.count !== undefined && !isString(opt.count);\n    const hasDefaultValue = Translator.hasDefaultValue(opt);\n    const defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, opt.count, opt) : '';\n    const defaultValueSuffixOrdinalFallback = opt.ordinal && needsPluralHandling ? this.pluralResolver.getSuffix(lng, opt.count, {\n      ordinal: false\n    }) : '';\n    const needsZeroSuffixLookup = needsPluralHandling && !opt.ordinal && opt.count === 0;\n    const defaultValue = needsZeroSuffixLookup && opt[`defaultValue${this.options.pluralSeparator}zero`] || opt[`defaultValue${defaultValueSuffix}`] || opt[`defaultValue${defaultValueSuffixOrdinalFallback}`] || opt.defaultValue;\n    let resForObjHndl = res;\n    if (handleAsObjectInI18nFormat && !res && hasDefaultValue) {\n      resForObjHndl = defaultValue;\n    }\n    const handleAsObject = shouldHandleAsObject(resForObjHndl);\n    const resType = Object.prototype.toString.apply(resForObjHndl);\n    if (handleAsObjectInI18nFormat && resForObjHndl && handleAsObject && noObject.indexOf(resType) < 0 && !(isString(joinArrays) && Array.isArray(resForObjHndl))) {\n      if (!opt.returnObjects && !this.options.returnObjects) {\n        if (!this.options.returnedObjectHandler) {\n          this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n        }\n        const r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, resForObjHndl, {\n          ...opt,\n          ns: namespaces\n        }) : `key '${key} (${this.language})' returned an object instead of string.`;\n        if (returnDetails) {\n          resolved.res = r;\n          resolved.usedParams = this.getUsedParamsDetails(opt);\n          return resolved;\n        }\n        return r;\n      }\n      if (keySeparator) {\n        const resTypeIsArray = Array.isArray(resForObjHndl);\n        const copy = resTypeIsArray ? [] : {};\n        const newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n        for (const m in resForObjHndl) {\n          if (Object.prototype.hasOwnProperty.call(resForObjHndl, m)) {\n            const deepKey = `${newKeyToUse}${keySeparator}${m}`;\n            if (hasDefaultValue && !res) {\n              copy[m] = this.translate(deepKey, {\n                ...opt,\n                defaultValue: shouldHandleAsObject(defaultValue) ? defaultValue[m] : undefined,\n                ...{\n                  joinArrays: false,\n                  ns: namespaces\n                }\n              });\n            } else {\n              copy[m] = this.translate(deepKey, {\n                ...opt,\n                ...{\n                  joinArrays: false,\n                  ns: namespaces\n                }\n              });\n            }\n            if (copy[m] === deepKey) copy[m] = resForObjHndl[m];\n          }\n        }\n        res = copy;\n      }\n    } else if (handleAsObjectInI18nFormat && isString(joinArrays) && Array.isArray(res)) {\n      res = res.join(joinArrays);\n      if (res) res = this.extendTranslation(res, keys, opt, lastKey);\n    } else {\n      let usedDefault = false;\n      let usedKey = false;\n      if (!this.isValidLookup(res) && hasDefaultValue) {\n        usedDefault = true;\n        res = defaultValue;\n      }\n      if (!this.isValidLookup(res)) {\n        usedKey = true;\n        res = key;\n      }\n      const missingKeyNoValueFallbackToKey = opt.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n      const resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n      const updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n      if (usedKey || usedDefault || updateMissing) {\n        this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n        if (keySeparator) {\n          const fk = this.resolve(key, {\n            ...opt,\n            keySeparator: false\n          });\n          if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n        }\n        let lngs = [];\n        const fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, opt.lng || this.language);\n        if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n          for (let i = 0; i < fallbackLngs.length; i++) {\n            lngs.push(fallbackLngs[i]);\n          }\n        } else if (this.options.saveMissingTo === 'all') {\n          lngs = this.languageUtils.toResolveHierarchy(opt.lng || this.language);\n        } else {\n          lngs.push(opt.lng || this.language);\n        }\n        const send = (l, k, specificDefaultValue) => {\n          const defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n          if (this.options.missingKeyHandler) {\n            this.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, opt);\n          } else if (this.backendConnector?.saveMissing) {\n            this.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, opt);\n          }\n          this.emit('missingKey', l, namespace, k, res);\n        };\n        if (this.options.saveMissing) {\n          if (this.options.saveMissingPlurals && needsPluralHandling) {\n            lngs.forEach(language => {\n              const suffixes = this.pluralResolver.getSuffixes(language, opt);\n              if (needsZeroSuffixLookup && opt[`defaultValue${this.options.pluralSeparator}zero`] && suffixes.indexOf(`${this.options.pluralSeparator}zero`) < 0) {\n                suffixes.push(`${this.options.pluralSeparator}zero`);\n              }\n              suffixes.forEach(suffix => {\n                send([language], key + suffix, opt[`defaultValue${suffix}`] || defaultValue);\n              });\n            });\n          } else {\n            send(lngs, key, defaultValue);\n          }\n        }\n      }\n      res = this.extendTranslation(res, keys, opt, resolved, lastKey);\n      if (usedKey && res === key && this.options.appendNamespaceToMissingKey) {\n        res = `${namespace}${nsSeparator}${key}`;\n      }\n      if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n        res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? `${namespace}${nsSeparator}${key}` : key, usedDefault ? res : undefined, opt);\n      }\n    }\n    if (returnDetails) {\n      resolved.res = res;\n      resolved.usedParams = this.getUsedParamsDetails(opt);\n      return resolved;\n    }\n    return res;\n  }\n  extendTranslation(res, key, opt, resolved, lastKey) {\n    if (this.i18nFormat?.parse) {\n      res = this.i18nFormat.parse(res, {\n        ...this.options.interpolation.defaultVariables,\n        ...opt\n      }, opt.lng || this.language || resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n        resolved\n      });\n    } else if (!opt.skipInterpolation) {\n      if (opt.interpolation) this.interpolator.init({\n        ...opt,\n        ...{\n          interpolation: {\n            ...this.options.interpolation,\n            ...opt.interpolation\n          }\n        }\n      });\n      const skipOnVariables = isString(res) && (opt?.interpolation?.skipOnVariables !== undefined ? opt.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n      let nestBef;\n      if (skipOnVariables) {\n        const nb = res.match(this.interpolator.nestingRegexp);\n        nestBef = nb && nb.length;\n      }\n      let data = opt.replace && !isString(opt.replace) ? opt.replace : opt;\n      if (this.options.interpolation.defaultVariables) data = {\n        ...this.options.interpolation.defaultVariables,\n        ...data\n      };\n      res = this.interpolator.interpolate(res, data, opt.lng || this.language || resolved.usedLng, opt);\n      if (skipOnVariables) {\n        const na = res.match(this.interpolator.nestingRegexp);\n        const nestAft = na && na.length;\n        if (nestBef < nestAft) opt.nest = false;\n      }\n      if (!opt.lng && resolved && resolved.res) opt.lng = this.language || resolved.usedLng;\n      if (opt.nest !== false) res = this.interpolator.nest(res, (...args) => {\n        if (lastKey?.[0] === args[0] && !opt.context) {\n          this.logger.warn(`It seems you are nesting recursively key: ${args[0]} in key: ${key[0]}`);\n          return null;\n        }\n        return this.translate(...args, key);\n      }, opt);\n      if (opt.interpolation) this.interpolator.reset();\n    }\n    const postProcess = opt.postProcess || this.options.postProcess;\n    const postProcessorNames = isString(postProcess) ? [postProcess] : postProcess;\n    if (res != null && postProcessorNames?.length && opt.applyPostProcessor !== false) {\n      res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? {\n        i18nResolved: {\n          ...resolved,\n          usedParams: this.getUsedParamsDetails(opt)\n        },\n        ...opt\n      } : opt, this);\n    }\n    return res;\n  }\n  resolve(keys, opt = {}) {\n    let found;\n    let usedKey;\n    let exactUsedKey;\n    let usedLng;\n    let usedNS;\n    if (isString(keys)) keys = [keys];\n    keys.forEach(k => {\n      if (this.isValidLookup(found)) return;\n      const extracted = this.extractFromKey(k, opt);\n      const key = extracted.key;\n      usedKey = key;\n      let namespaces = extracted.namespaces;\n      if (this.options.fallbackNS) namespaces = namespaces.concat(this.options.fallbackNS);\n      const needsPluralHandling = opt.count !== undefined && !isString(opt.count);\n      const needsZeroSuffixLookup = needsPluralHandling && !opt.ordinal && opt.count === 0;\n      const needsContextHandling = opt.context !== undefined && (isString(opt.context) || typeof opt.context === 'number') && opt.context !== '';\n      const codes = opt.lngs ? opt.lngs : this.languageUtils.toResolveHierarchy(opt.lng || this.language, opt.fallbackLng);\n      namespaces.forEach(ns => {\n        if (this.isValidLookup(found)) return;\n        usedNS = ns;\n        if (!checkedLoadedFor[`${codes[0]}-${ns}`] && this.utils?.hasLoadedNamespace && !this.utils?.hasLoadedNamespace(usedNS)) {\n          checkedLoadedFor[`${codes[0]}-${ns}`] = true;\n          this.logger.warn(`key \"${usedKey}\" for languages \"${codes.join(', ')}\" won't get resolved as namespace \"${usedNS}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n        }\n        codes.forEach(code => {\n          if (this.isValidLookup(found)) return;\n          usedLng = code;\n          const finalKeys = [key];\n          if (this.i18nFormat?.addLookupKeys) {\n            this.i18nFormat.addLookupKeys(finalKeys, key, code, ns, opt);\n          } else {\n            let pluralSuffix;\n            if (needsPluralHandling) pluralSuffix = this.pluralResolver.getSuffix(code, opt.count, opt);\n            const zeroSuffix = `${this.options.pluralSeparator}zero`;\n            const ordinalPrefix = `${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;\n            if (needsPluralHandling) {\n              finalKeys.push(key + pluralSuffix);\n              if (opt.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n                finalKeys.push(key + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n              }\n              if (needsZeroSuffixLookup) {\n                finalKeys.push(key + zeroSuffix);\n              }\n            }\n            if (needsContextHandling) {\n              const contextKey = `${key}${this.options.contextSeparator}${opt.context}`;\n              finalKeys.push(contextKey);\n              if (needsPluralHandling) {\n                finalKeys.push(contextKey + pluralSuffix);\n                if (opt.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n                  finalKeys.push(contextKey + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n                }\n                if (needsZeroSuffixLookup) {\n                  finalKeys.push(contextKey + zeroSuffix);\n                }\n              }\n            }\n          }\n          let possibleKey;\n          while (possibleKey = finalKeys.pop()) {\n            if (!this.isValidLookup(found)) {\n              exactUsedKey = possibleKey;\n              found = this.getResource(code, ns, possibleKey, opt);\n            }\n          }\n        });\n      });\n    });\n    return {\n      res: found,\n      usedKey,\n      exactUsedKey,\n      usedLng,\n      usedNS\n    };\n  }\n  isValidLookup(res) {\n    return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n  }\n  getResource(code, ns, key, options = {}) {\n    if (this.i18nFormat?.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n    return this.resourceStore.getResource(code, ns, key, options);\n  }\n  getUsedParamsDetails(options = {}) {\n    const optionsKeys = ['defaultValue', 'ordinal', 'context', 'replace', 'lng', 'lngs', 'fallbackLng', 'ns', 'keySeparator', 'nsSeparator', 'returnObjects', 'returnDetails', 'joinArrays', 'postProcess', 'interpolation'];\n    const useOptionsReplaceForData = options.replace && !isString(options.replace);\n    let data = useOptionsReplaceForData ? options.replace : options;\n    if (useOptionsReplaceForData && typeof options.count !== 'undefined') {\n      data.count = options.count;\n    }\n    if (this.options.interpolation.defaultVariables) {\n      data = {\n        ...this.options.interpolation.defaultVariables,\n        ...data\n      };\n    }\n    if (!useOptionsReplaceForData) {\n      data = {\n        ...data\n      };\n      for (const key of optionsKeys) {\n        delete data[key];\n      }\n    }\n    return data;\n  }\n  static hasDefaultValue(options) {\n    const prefix = 'defaultValue';\n    for (const option in options) {\n      if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n        return true;\n      }\n    }\n    return false;\n  }\n}\n\nclass LanguageUtil {\n  constructor(options) {\n    this.options = options;\n    this.supportedLngs = this.options.supportedLngs || false;\n    this.logger = baseLogger.create('languageUtils');\n  }\n  getScriptPartFromCode(code) {\n    code = getCleanedCode(code);\n    if (!code || code.indexOf('-') < 0) return null;\n    const p = code.split('-');\n    if (p.length === 2) return null;\n    p.pop();\n    if (p[p.length - 1].toLowerCase() === 'x') return null;\n    return this.formatLanguageCode(p.join('-'));\n  }\n  getLanguagePartFromCode(code) {\n    code = getCleanedCode(code);\n    if (!code || code.indexOf('-') < 0) return code;\n    const p = code.split('-');\n    return this.formatLanguageCode(p[0]);\n  }\n  formatLanguageCode(code) {\n    if (isString(code) && code.indexOf('-') > -1) {\n      let formattedCode;\n      try {\n        formattedCode = Intl.getCanonicalLocales(code)[0];\n      } catch (e) {}\n      if (formattedCode && this.options.lowerCaseLng) {\n        formattedCode = formattedCode.toLowerCase();\n      }\n      if (formattedCode) return formattedCode;\n      if (this.options.lowerCaseLng) {\n        return code.toLowerCase();\n      }\n      return code;\n    }\n    return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n  }\n  isSupportedCode(code) {\n    if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n      code = this.getLanguagePartFromCode(code);\n    }\n    return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n  }\n  getBestMatchFromCodes(codes) {\n    if (!codes) return null;\n    let found;\n    codes.forEach(code => {\n      if (found) return;\n      const cleanedLng = this.formatLanguageCode(code);\n      if (!this.options.supportedLngs || this.isSupportedCode(cleanedLng)) found = cleanedLng;\n    });\n    if (!found && this.options.supportedLngs) {\n      codes.forEach(code => {\n        if (found) return;\n        const lngScOnly = this.getScriptPartFromCode(code);\n        if (this.isSupportedCode(lngScOnly)) return found = lngScOnly;\n        const lngOnly = this.getLanguagePartFromCode(code);\n        if (this.isSupportedCode(lngOnly)) return found = lngOnly;\n        found = this.options.supportedLngs.find(supportedLng => {\n          if (supportedLng === lngOnly) return supportedLng;\n          if (supportedLng.indexOf('-') < 0 && lngOnly.indexOf('-') < 0) return;\n          if (supportedLng.indexOf('-') > 0 && lngOnly.indexOf('-') < 0 && supportedLng.substring(0, supportedLng.indexOf('-')) === lngOnly) return supportedLng;\n          if (supportedLng.indexOf(lngOnly) === 0 && lngOnly.length > 1) return supportedLng;\n        });\n      });\n    }\n    if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n    return found;\n  }\n  getFallbackCodes(fallbacks, code) {\n    if (!fallbacks) return [];\n    if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n    if (isString(fallbacks)) fallbacks = [fallbacks];\n    if (Array.isArray(fallbacks)) return fallbacks;\n    if (!code) return fallbacks.default || [];\n    let found = fallbacks[code];\n    if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n    if (!found) found = fallbacks[this.formatLanguageCode(code)];\n    if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n    if (!found) found = fallbacks.default;\n    return found || [];\n  }\n  toResolveHierarchy(code, fallbackCode) {\n    const fallbackCodes = this.getFallbackCodes((fallbackCode === false ? [] : fallbackCode) || this.options.fallbackLng || [], code);\n    const codes = [];\n    const addCode = c => {\n      if (!c) return;\n      if (this.isSupportedCode(c)) {\n        codes.push(c);\n      } else {\n        this.logger.warn(`rejecting language code not found in supportedLngs: ${c}`);\n      }\n    };\n    if (isString(code) && (code.indexOf('-') > -1 || code.indexOf('_') > -1)) {\n      if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n      if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n      if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n    } else if (isString(code)) {\n      addCode(this.formatLanguageCode(code));\n    }\n    fallbackCodes.forEach(fc => {\n      if (codes.indexOf(fc) < 0) addCode(this.formatLanguageCode(fc));\n    });\n    return codes;\n  }\n}\n\nconst suffixesOrder = {\n  zero: 0,\n  one: 1,\n  two: 2,\n  few: 3,\n  many: 4,\n  other: 5\n};\nconst dummyRule = {\n  select: count => count === 1 ? 'one' : 'other',\n  resolvedOptions: () => ({\n    pluralCategories: ['one', 'other']\n  })\n};\nclass PluralResolver {\n  constructor(languageUtils, options = {}) {\n    this.languageUtils = languageUtils;\n    this.options = options;\n    this.logger = baseLogger.create('pluralResolver');\n    this.pluralRulesCache = {};\n  }\n  addRule(lng, obj) {\n    this.rules[lng] = obj;\n  }\n  clearCache() {\n    this.pluralRulesCache = {};\n  }\n  getRule(code, options = {}) {\n    const cleanedCode = getCleanedCode(code === 'dev' ? 'en' : code);\n    const type = options.ordinal ? 'ordinal' : 'cardinal';\n    const cacheKey = JSON.stringify({\n      cleanedCode,\n      type\n    });\n    if (cacheKey in this.pluralRulesCache) {\n      return this.pluralRulesCache[cacheKey];\n    }\n    let rule;\n    try {\n      rule = new Intl.PluralRules(cleanedCode, {\n        type\n      });\n    } catch (err) {\n      if (!Intl) {\n        this.logger.error('No Intl support, please use an Intl polyfill!');\n        return dummyRule;\n      }\n      if (!code.match(/-|_/)) return dummyRule;\n      const lngPart = this.languageUtils.getLanguagePartFromCode(code);\n      rule = this.getRule(lngPart, options);\n    }\n    this.pluralRulesCache[cacheKey] = rule;\n    return rule;\n  }\n  needsPlural(code, options = {}) {\n    let rule = this.getRule(code, options);\n    if (!rule) rule = this.getRule('dev', options);\n    return rule?.resolvedOptions().pluralCategories.length > 1;\n  }\n  getPluralFormsOfKey(code, key, options = {}) {\n    return this.getSuffixes(code, options).map(suffix => `${key}${suffix}`);\n  }\n  getSuffixes(code, options = {}) {\n    let rule = this.getRule(code, options);\n    if (!rule) rule = this.getRule('dev', options);\n    if (!rule) return [];\n    return rule.resolvedOptions().pluralCategories.sort((pluralCategory1, pluralCategory2) => suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2]).map(pluralCategory => `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${pluralCategory}`);\n  }\n  getSuffix(code, count, options = {}) {\n    const rule = this.getRule(code, options);\n    if (rule) {\n      return `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${rule.select(count)}`;\n    }\n    this.logger.warn(`no plural rule found for: ${code}`);\n    return this.getSuffix('dev', count, options);\n  }\n}\n\nconst deepFindWithDefaults = (data, defaultData, key, keySeparator = '.', ignoreJSONStructure = true) => {\n  let path = getPathWithDefaults(data, defaultData, key);\n  if (!path && ignoreJSONStructure && isString(key)) {\n    path = deepFind(data, key, keySeparator);\n    if (path === undefined) path = deepFind(defaultData, key, keySeparator);\n  }\n  return path;\n};\nconst regexSafe = val => val.replace(/\\$/g, '$$$$');\nclass Interpolator {\n  constructor(options = {}) {\n    this.logger = baseLogger.create('interpolator');\n    this.options = options;\n    this.format = options?.interpolation?.format || (value => value);\n    this.init(options);\n  }\n  init(options = {}) {\n    if (!options.interpolation) options.interpolation = {\n      escapeValue: true\n    };\n    const {\n      escape: escape$1,\n      escapeValue,\n      useRawValueToEscape,\n      prefix,\n      prefixEscaped,\n      suffix,\n      suffixEscaped,\n      formatSeparator,\n      unescapeSuffix,\n      unescapePrefix,\n      nestingPrefix,\n      nestingPrefixEscaped,\n      nestingSuffix,\n      nestingSuffixEscaped,\n      nestingOptionsSeparator,\n      maxReplaces,\n      alwaysFormat\n    } = options.interpolation;\n    this.escape = escape$1 !== undefined ? escape$1 : escape;\n    this.escapeValue = escapeValue !== undefined ? escapeValue : true;\n    this.useRawValueToEscape = useRawValueToEscape !== undefined ? useRawValueToEscape : false;\n    this.prefix = prefix ? regexEscape(prefix) : prefixEscaped || '{{';\n    this.suffix = suffix ? regexEscape(suffix) : suffixEscaped || '}}';\n    this.formatSeparator = formatSeparator || ',';\n    this.unescapePrefix = unescapeSuffix ? '' : unescapePrefix || '-';\n    this.unescapeSuffix = this.unescapePrefix ? '' : unescapeSuffix || '';\n    this.nestingPrefix = nestingPrefix ? regexEscape(nestingPrefix) : nestingPrefixEscaped || regexEscape('$t(');\n    this.nestingSuffix = nestingSuffix ? regexEscape(nestingSuffix) : nestingSuffixEscaped || regexEscape(')');\n    this.nestingOptionsSeparator = nestingOptionsSeparator || ',';\n    this.maxReplaces = maxReplaces || 1000;\n    this.alwaysFormat = alwaysFormat !== undefined ? alwaysFormat : false;\n    this.resetRegExp();\n  }\n  reset() {\n    if (this.options) this.init(this.options);\n  }\n  resetRegExp() {\n    const getOrResetRegExp = (existingRegExp, pattern) => {\n      if (existingRegExp?.source === pattern) {\n        existingRegExp.lastIndex = 0;\n        return existingRegExp;\n      }\n      return new RegExp(pattern, 'g');\n    };\n    this.regexp = getOrResetRegExp(this.regexp, `${this.prefix}(.+?)${this.suffix}`);\n    this.regexpUnescape = getOrResetRegExp(this.regexpUnescape, `${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`);\n    this.nestingRegexp = getOrResetRegExp(this.nestingRegexp, `${this.nestingPrefix}(.+?)${this.nestingSuffix}`);\n  }\n  interpolate(str, data, lng, options) {\n    let match;\n    let value;\n    let replaces;\n    const defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n    const handleFormat = key => {\n      if (key.indexOf(this.formatSeparator) < 0) {\n        const path = deepFindWithDefaults(data, defaultData, key, this.options.keySeparator, this.options.ignoreJSONStructure);\n        return this.alwaysFormat ? this.format(path, undefined, lng, {\n          ...options,\n          ...data,\n          interpolationkey: key\n        }) : path;\n      }\n      const p = key.split(this.formatSeparator);\n      const k = p.shift().trim();\n      const f = p.join(this.formatSeparator).trim();\n      return this.format(deepFindWithDefaults(data, defaultData, k, this.options.keySeparator, this.options.ignoreJSONStructure), f, lng, {\n        ...options,\n        ...data,\n        interpolationkey: k\n      });\n    };\n    this.resetRegExp();\n    const missingInterpolationHandler = options?.missingInterpolationHandler || this.options.missingInterpolationHandler;\n    const skipOnVariables = options?.interpolation?.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n    const todos = [{\n      regex: this.regexpUnescape,\n      safeValue: val => regexSafe(val)\n    }, {\n      regex: this.regexp,\n      safeValue: val => this.escapeValue ? regexSafe(this.escape(val)) : regexSafe(val)\n    }];\n    todos.forEach(todo => {\n      replaces = 0;\n      while (match = todo.regex.exec(str)) {\n        const matchedVar = match[1].trim();\n        value = handleFormat(matchedVar);\n        if (value === undefined) {\n          if (typeof missingInterpolationHandler === 'function') {\n            const temp = missingInterpolationHandler(str, match, options);\n            value = isString(temp) ? temp : '';\n          } else if (options && Object.prototype.hasOwnProperty.call(options, matchedVar)) {\n            value = '';\n          } else if (skipOnVariables) {\n            value = match[0];\n            continue;\n          } else {\n            this.logger.warn(`missed to pass in variable ${matchedVar} for interpolating ${str}`);\n            value = '';\n          }\n        } else if (!isString(value) && !this.useRawValueToEscape) {\n          value = makeString(value);\n        }\n        const safeValue = todo.safeValue(value);\n        str = str.replace(match[0], safeValue);\n        if (skipOnVariables) {\n          todo.regex.lastIndex += value.length;\n          todo.regex.lastIndex -= match[0].length;\n        } else {\n          todo.regex.lastIndex = 0;\n        }\n        replaces++;\n        if (replaces >= this.maxReplaces) {\n          break;\n        }\n      }\n    });\n    return str;\n  }\n  nest(str, fc, options = {}) {\n    let match;\n    let value;\n    let clonedOptions;\n    const handleHasOptions = (key, inheritedOptions) => {\n      const sep = this.nestingOptionsSeparator;\n      if (key.indexOf(sep) < 0) return key;\n      const c = key.split(new RegExp(`${sep}[ ]*{`));\n      let optionsString = `{${c[1]}`;\n      key = c[0];\n      optionsString = this.interpolate(optionsString, clonedOptions);\n      const matchedSingleQuotes = optionsString.match(/'/g);\n      const matchedDoubleQuotes = optionsString.match(/\"/g);\n      if ((matchedSingleQuotes?.length ?? 0) % 2 === 0 && !matchedDoubleQuotes || matchedDoubleQuotes.length % 2 !== 0) {\n        optionsString = optionsString.replace(/'/g, '\"');\n      }\n      try {\n        clonedOptions = JSON.parse(optionsString);\n        if (inheritedOptions) clonedOptions = {\n          ...inheritedOptions,\n          ...clonedOptions\n        };\n      } catch (e) {\n        this.logger.warn(`failed parsing options string in nesting for key ${key}`, e);\n        return `${key}${sep}${optionsString}`;\n      }\n      if (clonedOptions.defaultValue && clonedOptions.defaultValue.indexOf(this.prefix) > -1) delete clonedOptions.defaultValue;\n      return key;\n    };\n    while (match = this.nestingRegexp.exec(str)) {\n      let formatters = [];\n      clonedOptions = {\n        ...options\n      };\n      clonedOptions = clonedOptions.replace && !isString(clonedOptions.replace) ? clonedOptions.replace : clonedOptions;\n      clonedOptions.applyPostProcessor = false;\n      delete clonedOptions.defaultValue;\n      const keyEndIndex = /{.*}/.test(match[1]) ? match[1].lastIndexOf('}') + 1 : match[1].indexOf(this.formatSeparator);\n      if (keyEndIndex !== -1) {\n        formatters = match[1].slice(keyEndIndex).split(this.formatSeparator).map(elem => elem.trim()).filter(Boolean);\n        match[1] = match[1].slice(0, keyEndIndex);\n      }\n      value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n      if (value && match[0] === str && !isString(value)) return value;\n      if (!isString(value)) value = makeString(value);\n      if (!value) {\n        this.logger.warn(`missed to resolve ${match[1]} for nesting ${str}`);\n        value = '';\n      }\n      if (formatters.length) {\n        value = formatters.reduce((v, f) => this.format(v, f, options.lng, {\n          ...options,\n          interpolationkey: match[1].trim()\n        }), value.trim());\n      }\n      str = str.replace(match[0], value);\n      this.regexp.lastIndex = 0;\n    }\n    return str;\n  }\n}\n\nconst parseFormatStr = formatStr => {\n  let formatName = formatStr.toLowerCase().trim();\n  const formatOptions = {};\n  if (formatStr.indexOf('(') > -1) {\n    const p = formatStr.split('(');\n    formatName = p[0].toLowerCase().trim();\n    const optStr = p[1].substring(0, p[1].length - 1);\n    if (formatName === 'currency' && optStr.indexOf(':') < 0) {\n      if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n    } else if (formatName === 'relativetime' && optStr.indexOf(':') < 0) {\n      if (!formatOptions.range) formatOptions.range = optStr.trim();\n    } else {\n      const opts = optStr.split(';');\n      opts.forEach(opt => {\n        if (opt) {\n          const [key, ...rest] = opt.split(':');\n          const val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n          const trimmedKey = key.trim();\n          if (!formatOptions[trimmedKey]) formatOptions[trimmedKey] = val;\n          if (val === 'false') formatOptions[trimmedKey] = false;\n          if (val === 'true') formatOptions[trimmedKey] = true;\n          if (!isNaN(val)) formatOptions[trimmedKey] = parseInt(val, 10);\n        }\n      });\n    }\n  }\n  return {\n    formatName,\n    formatOptions\n  };\n};\nconst createCachedFormatter = fn => {\n  const cache = {};\n  return (v, l, o) => {\n    let optForCache = o;\n    if (o && o.interpolationkey && o.formatParams && o.formatParams[o.interpolationkey] && o[o.interpolationkey]) {\n      optForCache = {\n        ...optForCache,\n        [o.interpolationkey]: undefined\n      };\n    }\n    const key = l + JSON.stringify(optForCache);\n    let frm = cache[key];\n    if (!frm) {\n      frm = fn(getCleanedCode(l), o);\n      cache[key] = frm;\n    }\n    return frm(v);\n  };\n};\nconst createNonCachedFormatter = fn => (v, l, o) => fn(getCleanedCode(l), o)(v);\nclass Formatter {\n  constructor(options = {}) {\n    this.logger = baseLogger.create('formatter');\n    this.options = options;\n    this.init(options);\n  }\n  init(services, options = {\n    interpolation: {}\n  }) {\n    this.formatSeparator = options.interpolation.formatSeparator || ',';\n    const cf = options.cacheInBuiltFormats ? createCachedFormatter : createNonCachedFormatter;\n    this.formats = {\n      number: cf((lng, opt) => {\n        const formatter = new Intl.NumberFormat(lng, {\n          ...opt\n        });\n        return val => formatter.format(val);\n      }),\n      currency: cf((lng, opt) => {\n        const formatter = new Intl.NumberFormat(lng, {\n          ...opt,\n          style: 'currency'\n        });\n        return val => formatter.format(val);\n      }),\n      datetime: cf((lng, opt) => {\n        const formatter = new Intl.DateTimeFormat(lng, {\n          ...opt\n        });\n        return val => formatter.format(val);\n      }),\n      relativetime: cf((lng, opt) => {\n        const formatter = new Intl.RelativeTimeFormat(lng, {\n          ...opt\n        });\n        return val => formatter.format(val, opt.range || 'day');\n      }),\n      list: cf((lng, opt) => {\n        const formatter = new Intl.ListFormat(lng, {\n          ...opt\n        });\n        return val => formatter.format(val);\n      })\n    };\n  }\n  add(name, fc) {\n    this.formats[name.toLowerCase().trim()] = fc;\n  }\n  addCached(name, fc) {\n    this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);\n  }\n  format(value, format, lng, options = {}) {\n    const formats = format.split(this.formatSeparator);\n    if (formats.length > 1 && formats[0].indexOf('(') > 1 && formats[0].indexOf(')') < 0 && formats.find(f => f.indexOf(')') > -1)) {\n      const lastIndex = formats.findIndex(f => f.indexOf(')') > -1);\n      formats[0] = [formats[0], ...formats.splice(1, lastIndex)].join(this.formatSeparator);\n    }\n    const result = formats.reduce((mem, f) => {\n      const {\n        formatName,\n        formatOptions\n      } = parseFormatStr(f);\n      if (this.formats[formatName]) {\n        let formatted = mem;\n        try {\n          const valOptions = options?.formatParams?.[options.interpolationkey] || {};\n          const l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n          formatted = this.formats[formatName](mem, l, {\n            ...formatOptions,\n            ...options,\n            ...valOptions\n          });\n        } catch (error) {\n          this.logger.warn(error);\n        }\n        return formatted;\n      } else {\n        this.logger.warn(`there was no format function for ${formatName}`);\n      }\n      return mem;\n    }, value);\n    return result;\n  }\n}\n\nconst removePending = (q, name) => {\n  if (q.pending[name] !== undefined) {\n    delete q.pending[name];\n    q.pendingCount--;\n  }\n};\nclass Connector extends EventEmitter {\n  constructor(backend, store, services, options = {}) {\n    super();\n    this.backend = backend;\n    this.store = store;\n    this.services = services;\n    this.languageUtils = services.languageUtils;\n    this.options = options;\n    this.logger = baseLogger.create('backendConnector');\n    this.waitingReads = [];\n    this.maxParallelReads = options.maxParallelReads || 10;\n    this.readingCalls = 0;\n    this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n    this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n    this.state = {};\n    this.queue = [];\n    this.backend?.init?.(services, options.backend, options);\n  }\n  queueLoad(languages, namespaces, options, callback) {\n    const toLoad = {};\n    const pending = {};\n    const toLoadLanguages = {};\n    const toLoadNamespaces = {};\n    languages.forEach(lng => {\n      let hasAllNamespaces = true;\n      namespaces.forEach(ns => {\n        const name = `${lng}|${ns}`;\n        if (!options.reload && this.store.hasResourceBundle(lng, ns)) {\n          this.state[name] = 2;\n        } else if (this.state[name] < 0) ; else if (this.state[name] === 1) {\n          if (pending[name] === undefined) pending[name] = true;\n        } else {\n          this.state[name] = 1;\n          hasAllNamespaces = false;\n          if (pending[name] === undefined) pending[name] = true;\n          if (toLoad[name] === undefined) toLoad[name] = true;\n          if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n        }\n      });\n      if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n    });\n    if (Object.keys(toLoad).length || Object.keys(pending).length) {\n      this.queue.push({\n        pending,\n        pendingCount: Object.keys(pending).length,\n        loaded: {},\n        errors: [],\n        callback\n      });\n    }\n    return {\n      toLoad: Object.keys(toLoad),\n      pending: Object.keys(pending),\n      toLoadLanguages: Object.keys(toLoadLanguages),\n      toLoadNamespaces: Object.keys(toLoadNamespaces)\n    };\n  }\n  loaded(name, err, data) {\n    const s = name.split('|');\n    const lng = s[0];\n    const ns = s[1];\n    if (err) this.emit('failedLoading', lng, ns, err);\n    if (!err && data) {\n      this.store.addResourceBundle(lng, ns, data, undefined, undefined, {\n        skipCopy: true\n      });\n    }\n    this.state[name] = err ? -1 : 2;\n    if (err && data) this.state[name] = 0;\n    const loaded = {};\n    this.queue.forEach(q => {\n      pushPath(q.loaded, [lng], ns);\n      removePending(q, name);\n      if (err) q.errors.push(err);\n      if (q.pendingCount === 0 && !q.done) {\n        Object.keys(q.loaded).forEach(l => {\n          if (!loaded[l]) loaded[l] = {};\n          const loadedKeys = q.loaded[l];\n          if (loadedKeys.length) {\n            loadedKeys.forEach(n => {\n              if (loaded[l][n] === undefined) loaded[l][n] = true;\n            });\n          }\n        });\n        q.done = true;\n        if (q.errors.length) {\n          q.callback(q.errors);\n        } else {\n          q.callback();\n        }\n      }\n    });\n    this.emit('loaded', loaded);\n    this.queue = this.queue.filter(q => !q.done);\n  }\n  read(lng, ns, fcName, tried = 0, wait = this.retryTimeout, callback) {\n    if (!lng.length) return callback(null, {});\n    if (this.readingCalls >= this.maxParallelReads) {\n      this.waitingReads.push({\n        lng,\n        ns,\n        fcName,\n        tried,\n        wait,\n        callback\n      });\n      return;\n    }\n    this.readingCalls++;\n    const resolver = (err, data) => {\n      this.readingCalls--;\n      if (this.waitingReads.length > 0) {\n        const next = this.waitingReads.shift();\n        this.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n      }\n      if (err && data && tried < this.maxRetries) {\n        setTimeout(() => {\n          this.read.call(this, lng, ns, fcName, tried + 1, wait * 2, callback);\n        }, wait);\n        return;\n      }\n      callback(err, data);\n    };\n    const fc = this.backend[fcName].bind(this.backend);\n    if (fc.length === 2) {\n      try {\n        const r = fc(lng, ns);\n        if (r && typeof r.then === 'function') {\n          r.then(data => resolver(null, data)).catch(resolver);\n        } else {\n          resolver(null, r);\n        }\n      } catch (err) {\n        resolver(err);\n      }\n      return;\n    }\n    return fc(lng, ns, resolver);\n  }\n  prepareLoading(languages, namespaces, options = {}, callback) {\n    if (!this.backend) {\n      this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n      return callback && callback();\n    }\n    if (isString(languages)) languages = this.languageUtils.toResolveHierarchy(languages);\n    if (isString(namespaces)) namespaces = [namespaces];\n    const toLoad = this.queueLoad(languages, namespaces, options, callback);\n    if (!toLoad.toLoad.length) {\n      if (!toLoad.pending.length) callback();\n      return null;\n    }\n    toLoad.toLoad.forEach(name => {\n      this.loadOne(name);\n    });\n  }\n  load(languages, namespaces, callback) {\n    this.prepareLoading(languages, namespaces, {}, callback);\n  }\n  reload(languages, namespaces, callback) {\n    this.prepareLoading(languages, namespaces, {\n      reload: true\n    }, callback);\n  }\n  loadOne(name, prefix = '') {\n    const s = name.split('|');\n    const lng = s[0];\n    const ns = s[1];\n    this.read(lng, ns, 'read', undefined, undefined, (err, data) => {\n      if (err) this.logger.warn(`${prefix}loading namespace ${ns} for language ${lng} failed`, err);\n      if (!err && data) this.logger.log(`${prefix}loaded namespace ${ns} for language ${lng}`, data);\n      this.loaded(name, err, data);\n    });\n  }\n  saveMissing(languages, namespace, key, fallbackValue, isUpdate, options = {}, clb = () => {}) {\n    if (this.services?.utils?.hasLoadedNamespace && !this.services?.utils?.hasLoadedNamespace(namespace)) {\n      this.logger.warn(`did not save key \"${key}\" as the namespace \"${namespace}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n      return;\n    }\n    if (key === undefined || key === null || key === '') return;\n    if (this.backend?.create) {\n      const opts = {\n        ...options,\n        isUpdate\n      };\n      const fc = this.backend.create.bind(this.backend);\n      if (fc.length < 6) {\n        try {\n          let r;\n          if (fc.length === 5) {\n            r = fc(languages, namespace, key, fallbackValue, opts);\n          } else {\n            r = fc(languages, namespace, key, fallbackValue);\n          }\n          if (r && typeof r.then === 'function') {\n            r.then(data => clb(null, data)).catch(clb);\n          } else {\n            clb(null, r);\n          }\n        } catch (err) {\n          clb(err);\n        }\n      } else {\n        fc(languages, namespace, key, fallbackValue, clb, opts);\n      }\n    }\n    if (!languages || !languages[0]) return;\n    this.store.addResource(languages[0], namespace, key, fallbackValue);\n  }\n}\n\nconst get = () => ({\n  debug: false,\n  initAsync: true,\n  ns: ['translation'],\n  defaultNS: ['translation'],\n  fallbackLng: ['dev'],\n  fallbackNS: false,\n  supportedLngs: false,\n  nonExplicitSupportedLngs: false,\n  load: 'all',\n  preload: false,\n  simplifyPluralSuffix: true,\n  keySeparator: '.',\n  nsSeparator: ':',\n  pluralSeparator: '_',\n  contextSeparator: '_',\n  partialBundledLanguages: false,\n  saveMissing: false,\n  updateMissing: false,\n  saveMissingTo: 'fallback',\n  saveMissingPlurals: true,\n  missingKeyHandler: false,\n  missingInterpolationHandler: false,\n  postProcess: false,\n  postProcessPassResolved: false,\n  returnNull: false,\n  returnEmptyString: true,\n  returnObjects: false,\n  joinArrays: false,\n  returnedObjectHandler: false,\n  parseMissingKeyHandler: false,\n  appendNamespaceToMissingKey: false,\n  appendNamespaceToCIMode: false,\n  overloadTranslationOptionHandler: args => {\n    let ret = {};\n    if (typeof args[1] === 'object') ret = args[1];\n    if (isString(args[1])) ret.defaultValue = args[1];\n    if (isString(args[2])) ret.tDescription = args[2];\n    if (typeof args[2] === 'object' || typeof args[3] === 'object') {\n      const options = args[3] || args[2];\n      Object.keys(options).forEach(key => {\n        ret[key] = options[key];\n      });\n    }\n    return ret;\n  },\n  interpolation: {\n    escapeValue: true,\n    format: value => value,\n    prefix: '{{',\n    suffix: '}}',\n    formatSeparator: ',',\n    unescapePrefix: '-',\n    nestingPrefix: '$t(',\n    nestingSuffix: ')',\n    nestingOptionsSeparator: ',',\n    maxReplaces: 1000,\n    skipOnVariables: true\n  },\n  cacheInBuiltFormats: true\n});\nconst transformOptions = options => {\n  if (isString(options.ns)) options.ns = [options.ns];\n  if (isString(options.fallbackLng)) options.fallbackLng = [options.fallbackLng];\n  if (isString(options.fallbackNS)) options.fallbackNS = [options.fallbackNS];\n  if (options.supportedLngs?.indexOf?.('cimode') < 0) {\n    options.supportedLngs = options.supportedLngs.concat(['cimode']);\n  }\n  if (typeof options.initImmediate === 'boolean') options.initAsync = options.initImmediate;\n  return options;\n};\n\nconst noop = () => {};\nconst bindMemberFunctions = inst => {\n  const mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n  mems.forEach(mem => {\n    if (typeof inst[mem] === 'function') {\n      inst[mem] = inst[mem].bind(inst);\n    }\n  });\n};\nclass I18n extends EventEmitter {\n  constructor(options = {}, callback) {\n    super();\n    this.options = transformOptions(options);\n    this.services = {};\n    this.logger = baseLogger;\n    this.modules = {\n      external: []\n    };\n    bindMemberFunctions(this);\n    if (callback && !this.isInitialized && !options.isClone) {\n      if (!this.options.initAsync) {\n        this.init(options, callback);\n        return this;\n      }\n      setTimeout(() => {\n        this.init(options, callback);\n      }, 0);\n    }\n  }\n  init(options = {}, callback) {\n    this.isInitializing = true;\n    if (typeof options === 'function') {\n      callback = options;\n      options = {};\n    }\n    if (options.defaultNS == null && options.ns) {\n      if (isString(options.ns)) {\n        options.defaultNS = options.ns;\n      } else if (options.ns.indexOf('translation') < 0) {\n        options.defaultNS = options.ns[0];\n      }\n    }\n    const defOpts = get();\n    this.options = {\n      ...defOpts,\n      ...this.options,\n      ...transformOptions(options)\n    };\n    this.options.interpolation = {\n      ...defOpts.interpolation,\n      ...this.options.interpolation\n    };\n    if (options.keySeparator !== undefined) {\n      this.options.userDefinedKeySeparator = options.keySeparator;\n    }\n    if (options.nsSeparator !== undefined) {\n      this.options.userDefinedNsSeparator = options.nsSeparator;\n    }\n    const createClassOnDemand = ClassOrObject => {\n      if (!ClassOrObject) return null;\n      if (typeof ClassOrObject === 'function') return new ClassOrObject();\n      return ClassOrObject;\n    };\n    if (!this.options.isClone) {\n      if (this.modules.logger) {\n        baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n      } else {\n        baseLogger.init(null, this.options);\n      }\n      let formatter;\n      if (this.modules.formatter) {\n        formatter = this.modules.formatter;\n      } else {\n        formatter = Formatter;\n      }\n      const lu = new LanguageUtil(this.options);\n      this.store = new ResourceStore(this.options.resources, this.options);\n      const s = this.services;\n      s.logger = baseLogger;\n      s.resourceStore = this.store;\n      s.languageUtils = lu;\n      s.pluralResolver = new PluralResolver(lu, {\n        prepend: this.options.pluralSeparator,\n        simplifyPluralSuffix: this.options.simplifyPluralSuffix\n      });\n      const usingLegacyFormatFunction = this.options.interpolation.format && this.options.interpolation.format !== defOpts.interpolation.format;\n      if (usingLegacyFormatFunction) {\n        this.logger.warn(`init: you are still using the legacy format function, please use the new approach: https://www.i18next.com/translation-function/formatting`);\n      }\n      if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {\n        s.formatter = createClassOnDemand(formatter);\n        if (s.formatter.init) s.formatter.init(s, this.options);\n        this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n      }\n      s.interpolator = new Interpolator(this.options);\n      s.utils = {\n        hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n      };\n      s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n      s.backendConnector.on('*', (event, ...args) => {\n        this.emit(event, ...args);\n      });\n      if (this.modules.languageDetector) {\n        s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n        if (s.languageDetector.init) s.languageDetector.init(s, this.options.detection, this.options);\n      }\n      if (this.modules.i18nFormat) {\n        s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n        if (s.i18nFormat.init) s.i18nFormat.init(this);\n      }\n      this.translator = new Translator(this.services, this.options);\n      this.translator.on('*', (event, ...args) => {\n        this.emit(event, ...args);\n      });\n      this.modules.external.forEach(m => {\n        if (m.init) m.init(this);\n      });\n    }\n    this.format = this.options.interpolation.format;\n    if (!callback) callback = noop;\n    if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n      const codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n      if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n    }\n    if (!this.services.languageDetector && !this.options.lng) {\n      this.logger.warn('init: no languageDetector is used and no lng is defined');\n    }\n    const storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n    storeApi.forEach(fcName => {\n      this[fcName] = (...args) => this.store[fcName](...args);\n    });\n    const storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n    storeApiChained.forEach(fcName => {\n      this[fcName] = (...args) => {\n        this.store[fcName](...args);\n        return this;\n      };\n    });\n    const deferred = defer();\n    const load = () => {\n      const finish = (err, t) => {\n        this.isInitializing = false;\n        if (this.isInitialized && !this.initializedStoreOnce) this.logger.warn('init: i18next is already initialized. You should call init just once!');\n        this.isInitialized = true;\n        if (!this.options.isClone) this.logger.log('initialized', this.options);\n        this.emit('initialized', this.options);\n        deferred.resolve(t);\n        callback(err, t);\n      };\n      if (this.languages && !this.isInitialized) return finish(null, this.t.bind(this));\n      this.changeLanguage(this.options.lng, finish);\n    };\n    if (this.options.resources || !this.options.initAsync) {\n      load();\n    } else {\n      setTimeout(load, 0);\n    }\n    return deferred;\n  }\n  loadResources(language, callback = noop) {\n    let usedCallback = callback;\n    const usedLng = isString(language) ? language : this.language;\n    if (typeof language === 'function') usedCallback = language;\n    if (!this.options.resources || this.options.partialBundledLanguages) {\n      if (usedLng?.toLowerCase() === 'cimode' && (!this.options.preload || this.options.preload.length === 0)) return usedCallback();\n      const toLoad = [];\n      const append = lng => {\n        if (!lng) return;\n        if (lng === 'cimode') return;\n        const lngs = this.services.languageUtils.toResolveHierarchy(lng);\n        lngs.forEach(l => {\n          if (l === 'cimode') return;\n          if (toLoad.indexOf(l) < 0) toLoad.push(l);\n        });\n      };\n      if (!usedLng) {\n        const fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n        fallbacks.forEach(l => append(l));\n      } else {\n        append(usedLng);\n      }\n      this.options.preload?.forEach?.(l => append(l));\n      this.services.backendConnector.load(toLoad, this.options.ns, e => {\n        if (!e && !this.resolvedLanguage && this.language) this.setResolvedLanguage(this.language);\n        usedCallback(e);\n      });\n    } else {\n      usedCallback(null);\n    }\n  }\n  reloadResources(lngs, ns, callback) {\n    const deferred = defer();\n    if (typeof lngs === 'function') {\n      callback = lngs;\n      lngs = undefined;\n    }\n    if (typeof ns === 'function') {\n      callback = ns;\n      ns = undefined;\n    }\n    if (!lngs) lngs = this.languages;\n    if (!ns) ns = this.options.ns;\n    if (!callback) callback = noop;\n    this.services.backendConnector.reload(lngs, ns, err => {\n      deferred.resolve();\n      callback(err);\n    });\n    return deferred;\n  }\n  use(module) {\n    if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n    if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n    if (module.type === 'backend') {\n      this.modules.backend = module;\n    }\n    if (module.type === 'logger' || module.log && module.warn && module.error) {\n      this.modules.logger = module;\n    }\n    if (module.type === 'languageDetector') {\n      this.modules.languageDetector = module;\n    }\n    if (module.type === 'i18nFormat') {\n      this.modules.i18nFormat = module;\n    }\n    if (module.type === 'postProcessor') {\n      postProcessor.addPostProcessor(module);\n    }\n    if (module.type === 'formatter') {\n      this.modules.formatter = module;\n    }\n    if (module.type === '3rdParty') {\n      this.modules.external.push(module);\n    }\n    return this;\n  }\n  setResolvedLanguage(l) {\n    if (!l || !this.languages) return;\n    if (['cimode', 'dev'].indexOf(l) > -1) return;\n    for (let li = 0; li < this.languages.length; li++) {\n      const lngInLngs = this.languages[li];\n      if (['cimode', 'dev'].indexOf(lngInLngs) > -1) continue;\n      if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n        this.resolvedLanguage = lngInLngs;\n        break;\n      }\n    }\n    if (!this.resolvedLanguage && this.languages.indexOf(l) < 0 && this.store.hasLanguageSomeTranslations(l)) {\n      this.resolvedLanguage = l;\n      this.languages.unshift(l);\n    }\n  }\n  changeLanguage(lng, callback) {\n    this.isLanguageChangingTo = lng;\n    const deferred = defer();\n    this.emit('languageChanging', lng);\n    const setLngProps = l => {\n      this.language = l;\n      this.languages = this.services.languageUtils.toResolveHierarchy(l);\n      this.resolvedLanguage = undefined;\n      this.setResolvedLanguage(l);\n    };\n    const done = (err, l) => {\n      if (l) {\n        if (this.isLanguageChangingTo === lng) {\n          setLngProps(l);\n          this.translator.changeLanguage(l);\n          this.isLanguageChangingTo = undefined;\n          this.emit('languageChanged', l);\n          this.logger.log('languageChanged', l);\n        }\n      } else {\n        this.isLanguageChangingTo = undefined;\n      }\n      deferred.resolve((...args) => this.t(...args));\n      if (callback) callback(err, (...args) => this.t(...args));\n    };\n    const setLng = lngs => {\n      if (!lng && !lngs && this.services.languageDetector) lngs = [];\n      const fl = isString(lngs) ? lngs : lngs && lngs[0];\n      const l = this.store.hasLanguageSomeTranslations(fl) ? fl : this.services.languageUtils.getBestMatchFromCodes(isString(lngs) ? [lngs] : lngs);\n      if (l) {\n        if (!this.language) {\n          setLngProps(l);\n        }\n        if (!this.translator.language) this.translator.changeLanguage(l);\n        this.services.languageDetector?.cacheUserLanguage?.(l);\n      }\n      this.loadResources(l, err => {\n        done(err, l);\n      });\n    };\n    if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n      setLng(this.services.languageDetector.detect());\n    } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n      if (this.services.languageDetector.detect.length === 0) {\n        this.services.languageDetector.detect().then(setLng);\n      } else {\n        this.services.languageDetector.detect(setLng);\n      }\n    } else {\n      setLng(lng);\n    }\n    return deferred;\n  }\n  getFixedT(lng, ns, keyPrefix) {\n    const fixedT = (key, opts, ...rest) => {\n      let o;\n      if (typeof opts !== 'object') {\n        o = this.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n      } else {\n        o = {\n          ...opts\n        };\n      }\n      o.lng = o.lng || fixedT.lng;\n      o.lngs = o.lngs || fixedT.lngs;\n      o.ns = o.ns || fixedT.ns;\n      if (o.keyPrefix !== '') o.keyPrefix = o.keyPrefix || keyPrefix || fixedT.keyPrefix;\n      const keySeparator = this.options.keySeparator || '.';\n      let resultKey;\n      if (o.keyPrefix && Array.isArray(key)) {\n        resultKey = key.map(k => `${o.keyPrefix}${keySeparator}${k}`);\n      } else {\n        resultKey = o.keyPrefix ? `${o.keyPrefix}${keySeparator}${key}` : key;\n      }\n      return this.t(resultKey, o);\n    };\n    if (isString(lng)) {\n      fixedT.lng = lng;\n    } else {\n      fixedT.lngs = lng;\n    }\n    fixedT.ns = ns;\n    fixedT.keyPrefix = keyPrefix;\n    return fixedT;\n  }\n  t(...args) {\n    return this.translator?.translate(...args);\n  }\n  exists(...args) {\n    return this.translator?.exists(...args);\n  }\n  setDefaultNamespace(ns) {\n    this.options.defaultNS = ns;\n  }\n  hasLoadedNamespace(ns, options = {}) {\n    if (!this.isInitialized) {\n      this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n      return false;\n    }\n    if (!this.languages || !this.languages.length) {\n      this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n      return false;\n    }\n    const lng = options.lng || this.resolvedLanguage || this.languages[0];\n    const fallbackLng = this.options ? this.options.fallbackLng : false;\n    const lastLng = this.languages[this.languages.length - 1];\n    if (lng.toLowerCase() === 'cimode') return true;\n    const loadNotPending = (l, n) => {\n      const loadState = this.services.backendConnector.state[`${l}|${n}`];\n      return loadState === -1 || loadState === 0 || loadState === 2;\n    };\n    if (options.precheck) {\n      const preResult = options.precheck(this, loadNotPending);\n      if (preResult !== undefined) return preResult;\n    }\n    if (this.hasResourceBundle(lng, ns)) return true;\n    if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n    if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n    return false;\n  }\n  loadNamespaces(ns, callback) {\n    const deferred = defer();\n    if (!this.options.ns) {\n      if (callback) callback();\n      return Promise.resolve();\n    }\n    if (isString(ns)) ns = [ns];\n    ns.forEach(n => {\n      if (this.options.ns.indexOf(n) < 0) this.options.ns.push(n);\n    });\n    this.loadResources(err => {\n      deferred.resolve();\n      if (callback) callback(err);\n    });\n    return deferred;\n  }\n  loadLanguages(lngs, callback) {\n    const deferred = defer();\n    if (isString(lngs)) lngs = [lngs];\n    const preloaded = this.options.preload || [];\n    const newLngs = lngs.filter(lng => preloaded.indexOf(lng) < 0 && this.services.languageUtils.isSupportedCode(lng));\n    if (!newLngs.length) {\n      if (callback) callback();\n      return Promise.resolve();\n    }\n    this.options.preload = preloaded.concat(newLngs);\n    this.loadResources(err => {\n      deferred.resolve();\n      if (callback) callback(err);\n    });\n    return deferred;\n  }\n  dir(lng) {\n    if (!lng) lng = this.resolvedLanguage || (this.languages?.length > 0 ? this.languages[0] : this.language);\n    if (!lng) return 'rtl';\n    try {\n      const l = new Intl.Locale(lng);\n      if (l && l.getTextInfo) {\n        const ti = l.getTextInfo();\n        if (ti && ti.direction) return ti.direction;\n      }\n    } catch (e) {}\n    const rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n    const languageUtils = this.services?.languageUtils || new LanguageUtil(get());\n    if (lng.toLowerCase().indexOf('-latn') > 1) return 'ltr';\n    return rtlLngs.indexOf(languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n  }\n  static createInstance(options = {}, callback) {\n    return new I18n(options, callback);\n  }\n  cloneInstance(options = {}, callback = noop) {\n    const forkResourceStore = options.forkResourceStore;\n    if (forkResourceStore) delete options.forkResourceStore;\n    const mergedOptions = {\n      ...this.options,\n      ...options,\n      ...{\n        isClone: true\n      }\n    };\n    const clone = new I18n(mergedOptions);\n    if (options.debug !== undefined || options.prefix !== undefined) {\n      clone.logger = clone.logger.clone(options);\n    }\n    const membersToCopy = ['store', 'services', 'language'];\n    membersToCopy.forEach(m => {\n      clone[m] = this[m];\n    });\n    clone.services = {\n      ...this.services\n    };\n    clone.services.utils = {\n      hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n    };\n    if (forkResourceStore) {\n      const clonedData = Object.keys(this.store.data).reduce((prev, l) => {\n        prev[l] = {\n          ...this.store.data[l]\n        };\n        prev[l] = Object.keys(prev[l]).reduce((acc, n) => {\n          acc[n] = {\n            ...prev[l][n]\n          };\n          return acc;\n        }, prev[l]);\n        return prev;\n      }, {});\n      clone.store = new ResourceStore(clonedData, mergedOptions);\n      clone.services.resourceStore = clone.store;\n    }\n    clone.translator = new Translator(clone.services, mergedOptions);\n    clone.translator.on('*', (event, ...args) => {\n      clone.emit(event, ...args);\n    });\n    clone.init(mergedOptions, callback);\n    clone.translator.options = mergedOptions;\n    clone.translator.backendConnector.services.utils = {\n      hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n    };\n    return clone;\n  }\n  toJSON() {\n    return {\n      options: this.options,\n      store: this.store,\n      language: this.language,\n      languages: this.languages,\n      resolvedLanguage: this.resolvedLanguage\n    };\n  }\n}\nconst instance = I18n.createInstance();\ninstance.createInstance = I18n.createInstance;\n\nconst createInstance = instance.createInstance;\nconst dir = instance.dir;\nconst init = instance.init;\nconst loadResources = instance.loadResources;\nconst reloadResources = instance.reloadResources;\nconst use = instance.use;\nconst changeLanguage = instance.changeLanguage;\nconst getFixedT = instance.getFixedT;\nconst t = instance.t;\nconst exists = instance.exists;\nconst setDefaultNamespace = instance.setDefaultNamespace;\nconst hasLoadedNamespace = instance.hasLoadedNamespace;\nconst loadNamespaces = instance.loadNamespaces;\nconst loadLanguages = instance.loadLanguages;\n\nexport { changeLanguage, createInstance, instance as default, dir, exists, getFixedT, hasLoadedNamespace, init, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };\n","export const warn = (i18n, code, msg, rest) => {\n  const args = [msg, {\n    code,\n    ...(rest || {})\n  }];\n  if (i18n?.services?.logger?.forward) {\n    return i18n.services.logger.forward(args, 'warn', 'react-i18next::', true);\n  }\n  if (isString(args[0])) args[0] = `react-i18next:: ${args[0]}`;\n  if (i18n?.services?.logger?.warn) {\n    i18n.services.logger.warn(...args);\n  } else if (console?.warn) {\n    console.warn(...args);\n  }\n};\nconst alreadyWarned = {};\nexport const warnOnce = (i18n, code, msg, rest) => {\n  if (isString(msg) && alreadyWarned[msg]) return;\n  if (isString(msg)) alreadyWarned[msg] = new Date();\n  warn(i18n, code, msg, rest);\n};\nconst loadedClb = (i18n, cb) => () => {\n  if (i18n.isInitialized) {\n    cb();\n  } else {\n    const initialized = () => {\n      setTimeout(() => {\n        i18n.off('initialized', initialized);\n      }, 0);\n      cb();\n    };\n    i18n.on('initialized', initialized);\n  }\n};\nexport const loadNamespaces = (i18n, ns, cb) => {\n  i18n.loadNamespaces(ns, loadedClb(i18n, cb));\n};\nexport const loadLanguages = (i18n, lng, ns, cb) => {\n  if (isString(ns)) ns = [ns];\n  if (i18n.options.preload && i18n.options.preload.indexOf(lng) > -1) return loadNamespaces(i18n, ns, cb);\n  ns.forEach(n => {\n    if (i18n.options.ns.indexOf(n) < 0) i18n.options.ns.push(n);\n  });\n  i18n.loadLanguages(lng, loadedClb(i18n, cb));\n};\nexport const hasLoadedNamespace = (ns, i18n, options = {}) => {\n  if (!i18n.languages || !i18n.languages.length) {\n    warnOnce(i18n, 'NO_LANGUAGES', 'i18n.languages were undefined or empty', {\n      languages: i18n.languages\n    });\n    return true;\n  }\n  return i18n.hasLoadedNamespace(ns, {\n    lng: options.lng,\n    precheck: (i18nInstance, loadNotPending) => {\n      if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;\n    }\n  });\n};\nexport const getDisplayName = Component => Component.displayName || Component.name || (isString(Component) && Component.length > 0 ? Component : 'Unknown');\nexport const isString = obj => typeof obj === 'string';\nexport const isObject = obj => typeof obj === 'object' && obj !== null;","const matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g;\nconst htmlEntities = {\n  '&amp;': '&',\n  '&#38;': '&',\n  '&lt;': '<',\n  '&#60;': '<',\n  '&gt;': '>',\n  '&#62;': '>',\n  '&apos;': \"'\",\n  '&#39;': \"'\",\n  '&quot;': '\"',\n  '&#34;': '\"',\n  '&nbsp;': ' ',\n  '&#160;': ' ',\n  '&copy;': '©',\n  '&#169;': '©',\n  '&reg;': '®',\n  '&#174;': '®',\n  '&hellip;': '…',\n  '&#8230;': '…',\n  '&#x2F;': '/',\n  '&#47;': '/'\n};\nconst unescapeHtmlEntity = m => htmlEntities[m];\nexport const unescape = text => text.replace(matchHtmlEntity, unescapeHtmlEntity);","import { unescape } from './unescape.js';\nlet defaultOptions = {\n  bindI18n: 'languageChanged',\n  bindI18nStore: '',\n  transEmptyNodeValue: '',\n  transSupportBasicHtmlNodes: true,\n  transWrapTextNodes: '',\n  transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n  useSuspense: true,\n  unescape\n};\nexport const setDefaults = (options = {}) => {\n  defaultOptions = {\n    ...defaultOptions,\n    ...options\n  };\n};\nexport const getDefaults = () => defaultOptions;","let i18nInstance;\nexport const setI18n = instance => {\n  i18nInstance = instance;\n};\nexport const getI18n = () => i18nInstance;","import { setDefaults } from './defaults.js';\nimport { setI18n } from './i18nInstance.js';\nexport const initReactI18next = {\n  type: '3rdParty',\n  init(instance) {\n    setDefaults(instance.options.react);\n    setI18n(instance);\n  }\n};","import { createContext } from 'react';\nimport { getDefaults, setDefaults } from './defaults.js';\nimport { getI18n, setI18n } from './i18nInstance.js';\nimport { initReactI18next } from './initReactI18next.js';\nexport { getDefaults, setDefaults, getI18n, setI18n, initReactI18next };\nexport const I18nContext = createContext();\nexport class ReportNamespaces {\n  constructor() {\n    this.usedNamespaces = {};\n  }\n  addUsedNamespaces(namespaces) {\n    namespaces.forEach(ns => {\n      if (!this.usedNamespaces[ns]) this.usedNamespaces[ns] = true;\n    });\n  }\n  getUsedNamespaces() {\n    return Object.keys(this.usedNamespaces);\n  }\n}\nexport const composeInitialProps = ForComponent => async ctx => {\n  const componentsInitialProps = (await ForComponent.getInitialProps?.(ctx)) ?? {};\n  const i18nInitialProps = getInitialProps();\n  return {\n    ...componentsInitialProps,\n    ...i18nInitialProps\n  };\n};\nexport const getInitialProps = () => {\n  const i18n = getI18n();\n  const namespaces = i18n.reportNamespaces?.getUsedNamespaces() ?? [];\n  const ret = {};\n  const initialI18nStore = {};\n  i18n.languages.forEach(l => {\n    initialI18nStore[l] = {};\n    namespaces.forEach(ns => {\n      initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n    });\n  });\n  ret.initialI18nStore = initialI18nStore;\n  ret.initialLanguage = i18n.language;\n  return ret;\n};","import { useState, useEffect, useContext, useRef, useCallback } from 'react';\nimport { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context.js';\nimport { warnOnce, loadNamespaces, loadLanguages, hasLoadedNamespace, isString, isObject } from './utils.js';\nconst usePrevious = (value, ignore) => {\n  const ref = useRef();\n  useEffect(() => {\n    ref.current = ignore ? ref.current : value;\n  }, [value, ignore]);\n  return ref.current;\n};\nconst alwaysNewT = (i18n, language, namespace, keyPrefix) => i18n.getFixedT(language, namespace, keyPrefix);\nconst useMemoizedT = (i18n, language, namespace, keyPrefix) => useCallback(alwaysNewT(i18n, language, namespace, keyPrefix), [i18n, language, namespace, keyPrefix]);\nexport const useTranslation = (ns, props = {}) => {\n  const {\n    i18n: i18nFromProps\n  } = props;\n  const {\n    i18n: i18nFromContext,\n    defaultNS: defaultNSFromContext\n  } = useContext(I18nContext) || {};\n  const i18n = i18nFromProps || i18nFromContext || getI18n();\n  if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();\n  if (!i18n) {\n    warnOnce(i18n, 'NO_I18NEXT_INSTANCE', 'useTranslation: You will need to pass in an i18next instance by using initReactI18next');\n    const notReadyT = (k, optsOrDefaultValue) => {\n      if (isString(optsOrDefaultValue)) return optsOrDefaultValue;\n      if (isObject(optsOrDefaultValue) && isString(optsOrDefaultValue.defaultValue)) return optsOrDefaultValue.defaultValue;\n      return Array.isArray(k) ? k[k.length - 1] : k;\n    };\n    const retNotReady = [notReadyT, {}, false];\n    retNotReady.t = notReadyT;\n    retNotReady.i18n = {};\n    retNotReady.ready = false;\n    return retNotReady;\n  }\n  if (i18n.options.react?.wait) warnOnce(i18n, 'DEPRECATED_OPTION', 'useTranslation: It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.');\n  const i18nOptions = {\n    ...getDefaults(),\n    ...i18n.options.react,\n    ...props\n  };\n  const {\n    useSuspense,\n    keyPrefix\n  } = i18nOptions;\n  let namespaces = ns || defaultNSFromContext || i18n.options?.defaultNS;\n  namespaces = isString(namespaces) ? [namespaces] : namespaces || ['translation'];\n  i18n.reportNamespaces.addUsedNamespaces?.(namespaces);\n  const ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(n => hasLoadedNamespace(n, i18n, i18nOptions));\n  const memoGetT = useMemoizedT(i18n, props.lng || null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n  const getT = () => memoGetT;\n  const getNewT = () => alwaysNewT(i18n, props.lng || null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n  const [t, setT] = useState(getT);\n  let joinedNS = namespaces.join();\n  if (props.lng) joinedNS = `${props.lng}${joinedNS}`;\n  const previousJoinedNS = usePrevious(joinedNS);\n  const isMounted = useRef(true);\n  useEffect(() => {\n    const {\n      bindI18n,\n      bindI18nStore\n    } = i18nOptions;\n    isMounted.current = true;\n    if (!ready && !useSuspense) {\n      if (props.lng) {\n        loadLanguages(i18n, props.lng, namespaces, () => {\n          if (isMounted.current) setT(getNewT);\n        });\n      } else {\n        loadNamespaces(i18n, namespaces, () => {\n          if (isMounted.current) setT(getNewT);\n        });\n      }\n    }\n    if (ready && previousJoinedNS && previousJoinedNS !== joinedNS && isMounted.current) {\n      setT(getNewT);\n    }\n    const boundReset = () => {\n      if (isMounted.current) setT(getNewT);\n    };\n    if (bindI18n) i18n?.on(bindI18n, boundReset);\n    if (bindI18nStore) i18n?.store.on(bindI18nStore, boundReset);\n    return () => {\n      isMounted.current = false;\n      if (i18n && bindI18n) bindI18n?.split(' ').forEach(e => i18n.off(e, boundReset));\n      if (bindI18nStore && i18n) bindI18nStore.split(' ').forEach(e => i18n.store.off(e, boundReset));\n    };\n  }, [i18n, joinedNS]);\n  useEffect(() => {\n    if (isMounted.current && ready) {\n      setT(getT);\n    }\n  }, [i18n, keyPrefix, ready]);\n  const ret = [t, i18n, ready];\n  ret.t = t;\n  ret.i18n = i18n;\n  ret.ready = ready;\n  if (ready) return ret;\n  if (!ready && !useSuspense) return ret;\n  throw new Promise(resolve => {\n    if (props.lng) {\n      loadLanguages(i18n, props.lng, namespaces, () => resolve());\n    } else {\n      loadNamespaces(i18n, namespaces, () => resolve());\n    }\n  });\n};","const {\n  slice,\n  forEach\n} = [];\nfunction defaults(obj) {\n  forEach.call(slice.call(arguments, 1), source => {\n    if (source) {\n      for (const prop in source) {\n        if (obj[prop] === undefined) obj[prop] = source[prop];\n      }\n    }\n  });\n  return obj;\n}\nfunction hasXSS(input) {\n  if (typeof input !== 'string') return false;\n\n  // Common XSS attack patterns\n  const xssPatterns = [/<\\s*script.*?>/i, /<\\s*\\/\\s*script\\s*>/i, /<\\s*img.*?on\\w+\\s*=/i, /<\\s*\\w+\\s*on\\w+\\s*=.*?>/i, /javascript\\s*:/i, /vbscript\\s*:/i, /expression\\s*\\(/i, /eval\\s*\\(/i, /alert\\s*\\(/i, /document\\.cookie/i, /document\\.write\\s*\\(/i, /window\\.location/i, /innerHTML/i];\n  return xssPatterns.some(pattern => pattern.test(input));\n}\n\n// eslint-disable-next-line no-control-regex\nconst fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\nconst serializeCookie = function (name, val) {\n  let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n    path: '/'\n  };\n  const opt = options;\n  const value = encodeURIComponent(val);\n  let str = `${name}=${value}`;\n  if (opt.maxAge > 0) {\n    const maxAge = opt.maxAge - 0;\n    if (Number.isNaN(maxAge)) throw new Error('maxAge should be a Number');\n    str += `; Max-Age=${Math.floor(maxAge)}`;\n  }\n  if (opt.domain) {\n    if (!fieldContentRegExp.test(opt.domain)) {\n      throw new TypeError('option domain is invalid');\n    }\n    str += `; Domain=${opt.domain}`;\n  }\n  if (opt.path) {\n    if (!fieldContentRegExp.test(opt.path)) {\n      throw new TypeError('option path is invalid');\n    }\n    str += `; Path=${opt.path}`;\n  }\n  if (opt.expires) {\n    if (typeof opt.expires.toUTCString !== 'function') {\n      throw new TypeError('option expires is invalid');\n    }\n    str += `; Expires=${opt.expires.toUTCString()}`;\n  }\n  if (opt.httpOnly) str += '; HttpOnly';\n  if (opt.secure) str += '; Secure';\n  if (opt.sameSite) {\n    const sameSite = typeof opt.sameSite === 'string' ? opt.sameSite.toLowerCase() : opt.sameSite;\n    switch (sameSite) {\n      case true:\n        str += '; SameSite=Strict';\n        break;\n      case 'lax':\n        str += '; SameSite=Lax';\n        break;\n      case 'strict':\n        str += '; SameSite=Strict';\n        break;\n      case 'none':\n        str += '; SameSite=None';\n        break;\n      default:\n        throw new TypeError('option sameSite is invalid');\n    }\n  }\n  if (opt.partitioned) str += '; Partitioned';\n  return str;\n};\nconst cookie = {\n  create(name, value, minutes, domain) {\n    let cookieOptions = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n      path: '/',\n      sameSite: 'strict'\n    };\n    if (minutes) {\n      cookieOptions.expires = new Date();\n      cookieOptions.expires.setTime(cookieOptions.expires.getTime() + minutes * 60 * 1000);\n    }\n    if (domain) cookieOptions.domain = domain;\n    document.cookie = serializeCookie(name, value, cookieOptions);\n  },\n  read(name) {\n    const nameEQ = `${name}=`;\n    const ca = document.cookie.split(';');\n    for (let i = 0; i < ca.length; i++) {\n      let c = ca[i];\n      while (c.charAt(0) === ' ') c = c.substring(1, c.length);\n      if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);\n    }\n    return null;\n  },\n  remove(name, domain) {\n    this.create(name, '', -1, domain);\n  }\n};\nvar cookie$1 = {\n  name: 'cookie',\n  // Deconstruct the options object and extract the lookupCookie property\n  lookup(_ref) {\n    let {\n      lookupCookie\n    } = _ref;\n    if (lookupCookie && typeof document !== 'undefined') {\n      return cookie.read(lookupCookie) || undefined;\n    }\n    return undefined;\n  },\n  // Deconstruct the options object and extract the lookupCookie, cookieMinutes, cookieDomain, and cookieOptions properties\n  cacheUserLanguage(lng, _ref2) {\n    let {\n      lookupCookie,\n      cookieMinutes,\n      cookieDomain,\n      cookieOptions\n    } = _ref2;\n    if (lookupCookie && typeof document !== 'undefined') {\n      cookie.create(lookupCookie, lng, cookieMinutes, cookieDomain, cookieOptions);\n    }\n  }\n};\n\nvar querystring = {\n  name: 'querystring',\n  // Deconstruct the options object and extract the lookupQuerystring property\n  lookup(_ref) {\n    let {\n      lookupQuerystring\n    } = _ref;\n    let found;\n    if (typeof window !== 'undefined') {\n      let {\n        search\n      } = window.location;\n      if (!window.location.search && window.location.hash?.indexOf('?') > -1) {\n        search = window.location.hash.substring(window.location.hash.indexOf('?'));\n      }\n      const query = search.substring(1);\n      const params = query.split('&');\n      for (let i = 0; i < params.length; i++) {\n        const pos = params[i].indexOf('=');\n        if (pos > 0) {\n          const key = params[i].substring(0, pos);\n          if (key === lookupQuerystring) {\n            found = params[i].substring(pos + 1);\n          }\n        }\n      }\n    }\n    return found;\n  }\n};\n\nvar hash = {\n  name: 'hash',\n  // Deconstruct the options object and extract the lookupHash property and the lookupFromHashIndex property\n  lookup(_ref) {\n    let {\n      lookupHash,\n      lookupFromHashIndex\n    } = _ref;\n    let found;\n    if (typeof window !== 'undefined') {\n      const {\n        hash\n      } = window.location;\n      if (hash && hash.length > 2) {\n        const query = hash.substring(1);\n        if (lookupHash) {\n          const params = query.split('&');\n          for (let i = 0; i < params.length; i++) {\n            const pos = params[i].indexOf('=');\n            if (pos > 0) {\n              const key = params[i].substring(0, pos);\n              if (key === lookupHash) {\n                found = params[i].substring(pos + 1);\n              }\n            }\n          }\n        }\n        if (found) return found;\n        if (!found && lookupFromHashIndex > -1) {\n          const language = hash.match(/\\/([a-zA-Z-]*)/g);\n          if (!Array.isArray(language)) return undefined;\n          const index = typeof lookupFromHashIndex === 'number' ? lookupFromHashIndex : 0;\n          return language[index]?.replace('/', '');\n        }\n      }\n    }\n    return found;\n  }\n};\n\nlet hasLocalStorageSupport = null;\nconst localStorageAvailable = () => {\n  if (hasLocalStorageSupport !== null) return hasLocalStorageSupport;\n  try {\n    hasLocalStorageSupport = typeof window !== 'undefined' && window.localStorage !== null;\n    if (!hasLocalStorageSupport) {\n      return false;\n    }\n    const testKey = 'i18next.translate.boo';\n    window.localStorage.setItem(testKey, 'foo');\n    window.localStorage.removeItem(testKey);\n  } catch (e) {\n    hasLocalStorageSupport = false;\n  }\n  return hasLocalStorageSupport;\n};\nvar localStorage = {\n  name: 'localStorage',\n  // Deconstruct the options object and extract the lookupLocalStorage property\n  lookup(_ref) {\n    let {\n      lookupLocalStorage\n    } = _ref;\n    if (lookupLocalStorage && localStorageAvailable()) {\n      return window.localStorage.getItem(lookupLocalStorage) || undefined; // Undefined ensures type consistency with the previous version of this function\n    }\n    return undefined;\n  },\n  // Deconstruct the options object and extract the lookupLocalStorage property\n  cacheUserLanguage(lng, _ref2) {\n    let {\n      lookupLocalStorage\n    } = _ref2;\n    if (lookupLocalStorage && localStorageAvailable()) {\n      window.localStorage.setItem(lookupLocalStorage, lng);\n    }\n  }\n};\n\nlet hasSessionStorageSupport = null;\nconst sessionStorageAvailable = () => {\n  if (hasSessionStorageSupport !== null) return hasSessionStorageSupport;\n  try {\n    hasSessionStorageSupport = typeof window !== 'undefined' && window.sessionStorage !== null;\n    if (!hasSessionStorageSupport) {\n      return false;\n    }\n    const testKey = 'i18next.translate.boo';\n    window.sessionStorage.setItem(testKey, 'foo');\n    window.sessionStorage.removeItem(testKey);\n  } catch (e) {\n    hasSessionStorageSupport = false;\n  }\n  return hasSessionStorageSupport;\n};\nvar sessionStorage = {\n  name: 'sessionStorage',\n  lookup(_ref) {\n    let {\n      lookupSessionStorage\n    } = _ref;\n    if (lookupSessionStorage && sessionStorageAvailable()) {\n      return window.sessionStorage.getItem(lookupSessionStorage) || undefined;\n    }\n    return undefined;\n  },\n  cacheUserLanguage(lng, _ref2) {\n    let {\n      lookupSessionStorage\n    } = _ref2;\n    if (lookupSessionStorage && sessionStorageAvailable()) {\n      window.sessionStorage.setItem(lookupSessionStorage, lng);\n    }\n  }\n};\n\nvar navigator$1 = {\n  name: 'navigator',\n  lookup(options) {\n    const found = [];\n    if (typeof navigator !== 'undefined') {\n      const {\n        languages,\n        userLanguage,\n        language\n      } = navigator;\n      if (languages) {\n        // chrome only; not an array, so can't use .push.apply instead of iterating\n        for (let i = 0; i < languages.length; i++) {\n          found.push(languages[i]);\n        }\n      }\n      if (userLanguage) {\n        found.push(userLanguage);\n      }\n      if (language) {\n        found.push(language);\n      }\n    }\n    return found.length > 0 ? found : undefined;\n  }\n};\n\nvar htmlTag = {\n  name: 'htmlTag',\n  // Deconstruct the options object and extract the htmlTag property\n  lookup(_ref) {\n    let {\n      htmlTag\n    } = _ref;\n    let found;\n    const internalHtmlTag = htmlTag || (typeof document !== 'undefined' ? document.documentElement : null);\n    if (internalHtmlTag && typeof internalHtmlTag.getAttribute === 'function') {\n      found = internalHtmlTag.getAttribute('lang');\n    }\n    return found;\n  }\n};\n\nvar path = {\n  name: 'path',\n  // Deconstruct the options object and extract the lookupFromPathIndex property\n  lookup(_ref) {\n    let {\n      lookupFromPathIndex\n    } = _ref;\n    if (typeof window === 'undefined') return undefined;\n    const language = window.location.pathname.match(/\\/([a-zA-Z-]*)/g);\n    if (!Array.isArray(language)) return undefined;\n    const index = typeof lookupFromPathIndex === 'number' ? lookupFromPathIndex : 0;\n    return language[index]?.replace('/', '');\n  }\n};\n\nvar subdomain = {\n  name: 'subdomain',\n  lookup(_ref) {\n    let {\n      lookupFromSubdomainIndex\n    } = _ref;\n    // If given get the subdomain index else 1\n    const internalLookupFromSubdomainIndex = typeof lookupFromSubdomainIndex === 'number' ? lookupFromSubdomainIndex + 1 : 1;\n    // get all matches if window.location. is existing\n    // first item of match is the match itself and the second is the first group match which should be the first subdomain match\n    // is the hostname no public domain get the or option of localhost\n    const language = typeof window !== 'undefined' && window.location?.hostname?.match(/^(\\w{2,5})\\.(([a-z0-9-]{1,63}\\.[a-z]{2,6})|localhost)/i);\n\n    // if there is no match (null) return undefined\n    if (!language) return undefined;\n    // return the given group match\n    return language[internalLookupFromSubdomainIndex];\n  }\n};\n\n// some environments, throws when accessing document.cookie\nlet canCookies = false;\ntry {\n  // eslint-disable-next-line no-unused-expressions\n  document.cookie;\n  canCookies = true;\n  // eslint-disable-next-line no-empty\n} catch (e) {}\nconst order = ['querystring', 'cookie', 'localStorage', 'sessionStorage', 'navigator', 'htmlTag'];\nif (!canCookies) order.splice(1, 1);\nconst getDefaults = () => ({\n  order,\n  lookupQuerystring: 'lng',\n  lookupCookie: 'i18next',\n  lookupLocalStorage: 'i18nextLng',\n  lookupSessionStorage: 'i18nextLng',\n  // cache user language\n  caches: ['localStorage'],\n  excludeCacheFor: ['cimode'],\n  // cookieMinutes: 10,\n  // cookieDomain: 'myDomain'\n\n  convertDetectedLanguage: l => l\n});\nclass Browser {\n  constructor(services) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    this.type = 'languageDetector';\n    this.detectors = {};\n    this.init(services, options);\n  }\n  init() {\n    let services = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n      languageUtils: {}\n    };\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    let i18nOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    this.services = services;\n    this.options = defaults(options, this.options || {}, getDefaults());\n    if (typeof this.options.convertDetectedLanguage === 'string' && this.options.convertDetectedLanguage.indexOf('15897') > -1) {\n      this.options.convertDetectedLanguage = l => l.replace('-', '_');\n    }\n\n    // backwards compatibility\n    if (this.options.lookupFromUrlIndex) this.options.lookupFromPathIndex = this.options.lookupFromUrlIndex;\n    this.i18nOptions = i18nOptions;\n    this.addDetector(cookie$1);\n    this.addDetector(querystring);\n    this.addDetector(localStorage);\n    this.addDetector(sessionStorage);\n    this.addDetector(navigator$1);\n    this.addDetector(htmlTag);\n    this.addDetector(path);\n    this.addDetector(subdomain);\n    this.addDetector(hash);\n  }\n  addDetector(detector) {\n    this.detectors[detector.name] = detector;\n    return this;\n  }\n  detect() {\n    let detectionOrder = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.options.order;\n    let detected = [];\n    detectionOrder.forEach(detectorName => {\n      if (this.detectors[detectorName]) {\n        let lookup = this.detectors[detectorName].lookup(this.options);\n        if (lookup && typeof lookup === 'string') lookup = [lookup];\n        if (lookup) detected = detected.concat(lookup);\n      }\n    });\n    detected = detected.filter(d => d !== undefined && d !== null && !hasXSS(d)).map(d => this.options.convertDetectedLanguage(d));\n    if (this.services && this.services.languageUtils && this.services.languageUtils.getBestMatchFromCodes) return detected; // new i18next v19.5.0\n    return detected.length > 0 ? detected[0] : null; // a little backward compatibility\n  }\n  cacheUserLanguage(lng) {\n    let caches = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.options.caches;\n    if (!caches) return;\n    if (this.options.excludeCacheFor && this.options.excludeCacheFor.indexOf(lng) > -1) return;\n    caches.forEach(cacheName => {\n      if (this.detectors[cacheName]) this.detectors[cacheName].cacheUserLanguage(lng, this.options);\n    });\n  }\n}\nBrowser.type = 'languageDetector';\n\nexport { Browser as default };\n","// UI-related types and constants\n\nexport const DEFAULT_SCALE = 50;\nexport const MIN_SCALE = 30;\nexport const MAX_SCALE = 120;\n\nexport const MAIN_SCORE_SVG_ID = \"verovio-svg-score\";\n\nexport const SUPPORTED_LANGUAGES = [{ key: 'en', label: 'English' }, { key: 'es', label: 'Español' }];\nexport const LANGUAGE_SESSION_STORAGE_KEY = 'i18nextLng';\n\nexport enum Transition {\n    FADE_OUT,\n    FADE_IN,\n}\n","import i18n from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport LanguageDetector from 'i18next-browser-languagedetector';\nimport { SUPPORTED_LANGUAGES, LANGUAGE_SESSION_STORAGE_KEY } from './types/ui';\nimport es from '../assets/locales/es/common.json';\nimport en from '../assets/locales/en/common.json';\n\n\nconst i18nextOptions = {\n    order: ['sessionStorage', 'navigator'],\n    lookupSessionStorage: LANGUAGE_SESSION_STORAGE_KEY,\n    caches: ['sessionStorage'],\n}\nconst resources = {\n  en: { common: en },\n  es: { common: es }\n};\n\n\ni18n\n  .use(initReactI18next)\n  .use(LanguageDetector)\n  .init({\n    supportedLngs: SUPPORTED_LANGUAGES.map(lang => lang.key),\n    resources,\n    ...i18nextOptions,\n    fallbackLng: 'en',\n    debug: false,\n    defaultNS: 'common',\n    interpolation: {\n      escapeValue: false\n    }\n});\n\n\nexport default i18n;\n","const createStoreImpl = (createState) => {\n  let state;\n  const listeners = /* @__PURE__ */ new Set();\n  const setState = (partial, replace) => {\n    const nextState = typeof partial === \"function\" ? partial(state) : partial;\n    if (!Object.is(nextState, state)) {\n      const previousState = state;\n      state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n      listeners.forEach((listener) => listener(state, previousState));\n    }\n  };\n  const getState = () => state;\n  const getInitialState = () => initialState;\n  const subscribe = (listener) => {\n    listeners.add(listener);\n    return () => listeners.delete(listener);\n  };\n  const api = { setState, getState, getInitialState, subscribe };\n  const initialState = state = createState(setState, getState, api);\n  return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\n\nexport { createStore };\n","import React from 'react';\nimport { createStore } from 'zustand/vanilla';\n\nconst identity = (arg) => arg;\nfunction useStore(api, selector = identity) {\n  const slice = React.useSyncExternalStore(\n    api.subscribe,\n    () => selector(api.getState()),\n    () => selector(api.getInitialState())\n  );\n  React.useDebugValue(slice);\n  return slice;\n}\nconst createImpl = (createState) => {\n  const api = createStore(createState);\n  const useBoundStore = (selector) => useStore(api, selector);\n  Object.assign(useBoundStore, api);\n  return useBoundStore;\n};\nconst create = (createState) => createState ? createImpl(createState) : createImpl;\n\nexport { create, useStore };\n","import { StoreApi, UseBoundStore } from 'zustand';\n\n\nexport function createSelectors<T extends object>(\n  store: UseBoundStore<StoreApi<T>>\n) {\n  const storeWithSelectors = store as typeof store & {\n    use: { [K in keyof T]: () => T[K] }\n  };\n\n  storeWithSelectors.use = {} as { [K in keyof T]: () => T[K] };\n\n  type KeysOfStore = keyof T;\n  const keys = Object.keys(store.getState()) as unknown as KeysOfStore[];\n\n  for (const key of keys) {\n    // @ts-ignore - We know this is safe because we're iterating over the keys\n    storeWithSelectors.use[key] = () => store((s) => s[key]);\n  }\n\n  return storeWithSelectors;\n}\n\n","// Action-related types\nimport { Transition } from './ui';\n\nexport type LoadConfig = {\n    scoreUrl: string;\n    postLoadTransition?: Transition | undefined;\n    meiStr: string;\n    page?: number | undefined;\n    scale: number;\n    restorePositionForAchor?: string | undefined;\n}\n\nexport type LoadAutoScrollConfig = {\n    height: number\n    meiStr: string\n}\n\nexport type RenderConfig = {\n    scoreUrl: string;\n    loadedWidth: number;\n    loadedHeight: number;\n    transition?: Transition | undefined;\n    renderPage: number;\n    loadedPagesCount: number;\n    scale: number;\n}\n\nexport type RenderAutoScrollConfig = {\n    height: number\n}\n\nexport type Action = {\n    type: string\n    config: LoadConfig | LoadAutoScrollConfig | RenderConfig | RenderAutoScrollConfig\n}\n\n\nexport const loadAction = (config: LoadConfig): Action => ({type: \"load\", config})\nexport const loadAutoScrollAction = (config: LoadAutoScrollConfig): Action => ({type: \"loadAutoScroll\", config})\nexport const renderAction = (config: RenderConfig): Action => ({type: \"render\", config})\nexport const renderAutoScrollAction = (config: RenderAutoScrollConfig): Action => ({type: \"renderAutoScroll\", config})","// Score-related types\nimport { EditorialItem } from './editorial';\nimport { AudioTrack } from './player';\n\nexport type FacsimileItem = {\n    name: string\n    file: string\n}\n\nexport type ReconstructionItem = {\n    voice: string\n    label: string\n    reconstructionBy: string\n}\n\n\nexport type Score = {\n    url: string;\n    title: string;\n    originalMei: string;\n    singleVerseMei: string;\n    properties: ScoreProperties;\n    editorialItems: EditorialItem[];\n    audioUrl: string | null;\n    audioOverlayTracks: AudioTrack[];\n}\n\nexport type TextPartsCache = {\n    [url: string]: string | FetchError | null\n}\n\nexport type Reconstruction = {\n    staff: string;\n    voiceName: string;\n    reconstructionsForVoice: ReconstructionItem[];\n}\n\n// just adding here those we might use. See verovio docs for explanation\nexport type Transposition = \"\" | \"P4\" | \"+P4\" | \"-P4\" | \"M3\" | \"+M3\" | \"-M3\" | \"P8\" | \"+P8\" | \"-P8\"\n\nexport type Sources = { [id: string]: { title: string } }\n\n\nexport type ScoreProperties = {\n    hasFicta: boolean;\n    numVerses: number;\n    numMeasures: number;\n    composer: string;\n    lyricist: string;\n    editor: string;\n    reconstructions: Reconstruction[];\n    reconstructionBy: string | null;\n    sections: { label: string; id: string }[];\n    sources: Sources;\n    notes: string[];\n    hasEditorial: boolean;\n    hasOriginalClefs: boolean;\n    encodedTransposition?: Transposition | undefined\n    tiedNotes: { first: string; second: string; }[];\n}\n\nexport type VisualizationOptions = {\n    showOriginalClefs?: boolean | null | undefined;\n    showReconstructions?: { [staff: string]: string } | undefined;\n}\n\nexport class FetchError extends Error {\n    type: string;\n\n    constructor(type: string, message: string) {\n        super(message);\n        this.type = type;\n        Object.setPrototypeOf(this, FetchError.prototype);\n    }\n}\n\nexport type LyricItem = {\n    title: string\n    text: string | FetchError\n}\n\nexport type TextParts = {\n    lyrics: LyricItem[] | null;\n    textComments: string | null;\n    introduction: string | null;\n}\n\nexport type Note = {\n    id: string;\n    pname: string;\n    oct: string;\n    dur: string\n    pitch: number;\n\n}\n","// Player-related types\n\nexport enum PlayingState {\n    PLAYING,\n    PAUSED,\n    STOPPED,\n}\n\nexport type TimeMapEvent = {\n    on?: string[] | undefined;\n    off?: string[] | undefined;\n    measureOn?: string | undefined;\n    qstamp: number;\n    tstamp: number;\n    tempo?: number | undefined;\n    stavesOn?: string[] | undefined;\n}\n\nexport interface AudioTrack {\n    id: string;\n    label: string;\n    url: string;\n    volume?: number | undefined; // Default volume (0-1)\n}\n\n\n\n","import { create } from 'zustand'\nimport { createSelectors } from './utils/zustand-utils'\n\nimport {\n    DEFAULT_SCALE,\n    MIN_SCALE,\n    MAX_SCALE,\n    Action,\n    Score,\n    PlayingState,\n    TextPartsCache,\n    LyricItem,\n    FetchError,\n} from './types'\n\nimport { RenderedData } from './hooks/useScoreRenderer'\n\n\ninterface RenderingState {\n    pendingAction: Action | null\n    setPendingAction: (action: Action | null) => void\n}\n\nconst createRenderingStore = create<RenderingState>((set) => ({\n    pendingAction: null,\n    setPendingAction: (action: Action | null) => set(() => ({ pendingAction: action })),\n}))\n\n\n\ninterface ScoreManagementState {\n    score: Score | null\n    showingMei: string | null\n    scoreCache: { [index: string]: Score }\n    textCache: TextPartsCache\n    textComments: string | FetchError | null | undefined\n    textIntroduction: string | FetchError | null | undefined\n    textLyrics: LyricItem[] | null | undefined\n\n    setScore: (score: Score | null) => void\n\n    setShowingMei: (mei: string | null) => void\n    setScoreCache: (scoreCache: { [index: string]: Score }) => void\n    setTextCache: (textCache: TextPartsCache, replace: boolean) => void\n    setTextComments: (textComments: string | FetchError | null | undefined) => void\n    setTextIntroduction: (textIntroduction: string | FetchError | null | undefined) => void\n    setTextLyrics: (textLyrics: LyricItem[] | null | undefined, replace: boolean) => void\n}\n\nconst createScoreManagementStore = create<ScoreManagementState>((set) => ({\n    score: null,\n    showingMei: null,\n    scoreCache: {},\n    textCache: {},\n    textComments: undefined,\n    textIntroduction: undefined,\n    textLyrics: undefined,\n\n    setScore: (score: Score | null) => set(() => ({ score: score })),\n\n    setShowingMei: (mei: string | null) => set(() => ({ showingMei: mei })),\n    setScoreCache: (scoreCache: { [index: string]: Score }) => set((state) => ({\n        scoreCache: { ...state.scoreCache, ...scoreCache }\n    })),\n    setTextCache: (textCache: TextPartsCache, replace: boolean) => set((state) => ({\n        textCache: replace ? textCache : { ...state.textCache, ...textCache }\n    })),\n    setTextComments: (textComments: string | FetchError | null | undefined) => set(() => ({ textComments })),\n    setTextIntroduction: (textIntroduction: string | FetchError | null | undefined) => set(() => ({ textIntroduction })),\n    setTextLyrics: (textLyrics: LyricItem[] | null | undefined, replace: boolean) => set((state) => ({\n        textLyrics: replace ? textLyrics : [...state.textLyrics || [], ...(textLyrics || [])]\n    }))\n}))\n\n\ninterface ScoreNavigationState {\n    pageCount: number\n    currentPage: number\n\n    sectionPageMap: Record<string, number>\n\n    setScoreLayout: (layout: { pageCount: number, sectionPageMap: Record<string, number>, currentPage: number }) => void\n\n    goToPage: (page: number) => void\n    goToNextPage: () => void\n    goToPreviousPage: () => void\n\n    goToSection: (sectionId: string) => void\n    navigationCommand: { type: 'section' | 'page', target: string | number } | null\n\n    clearNavigationCommand: () => void\n}\n\nexport const createScoreViewerStore = create<ScoreNavigationState>((set, get) => ({\n    pageCount: 0,\n    currentPage: 1,\n    sectionPageMap: {},\n\n    setScoreLayout: ({ pageCount, sectionPageMap, currentPage }) => {\n        set({\n            pageCount,\n            sectionPageMap,\n            currentPage,\n            navigationCommand: null\n        });\n    },\n\n    goToPage: (page) => set({\n        currentPage: Math.max(1, Math.min(page, get().pageCount))\n    }),\n    goToNextPage: () => get().goToPage(get().currentPage + 1),\n    goToPreviousPage: () => get().goToPage(get().currentPage - 1),\n\n    goToSection: (sectionId) => {\n        const page = get().sectionPageMap[sectionId];\n        if (page) {\n            set({\n                navigationCommand: { type: 'section', target: sectionId },\n                currentPage: page\n            });\n        }\n    },\n\n    navigationCommand: null,\n\n    clearNavigationCommand: () => set({ navigationCommand: null }),\n}));\n\n\ninterface UILayoutState {\n    isLoading: boolean\n    scoreSvg: string | null\n    scale: number\n    reachedEffectiveMaxScale: boolean\n    isSplitView: boolean\n    activeSplitView: string\n    splitViewOrientation: 'horizontal' | 'vertical'\n    activeTab: string\n\n\n    setIsLoading: (isLoading: boolean) => void\n    setScoreSvg: (svg: string | null) => void\n    setScale: (scale: number) => void\n    increaseScale: () => void\n    decreaseScale: () => void\n    setReachedEffectiveMaxScale: (value: boolean) => void\n    setIsSplitView: (splitView: boolean) => void\n    setActiveSplitView: (view: string) => void\n    setSplitViewOrientation: (orientation: 'horizontal' | 'vertical') => void\n    setActiveTab: (tab: string) => void\n}\n\nconst createUILayoutStore = create<UILayoutState>((set) => ({\n    isLoading: true,\n    scoreSvg: null,\n    scale: DEFAULT_SCALE,\n    reachedEffectiveMaxScale: false,\n    isSplitView: false,\n    activeSplitView: 'facsimile',\n    splitViewOrientation: 'horizontal',\n    activeTab: 'music',\n\n\n    setIsLoading: (isLoading: boolean) => set(() => ({ isLoading })),\n    setScoreSvg: (svg: string | null) => set(() => ({ scoreSvg: svg })),\n    setScale: (scale: number) => set((state) => ({\n        scale: scale <= MAX_SCALE && scale >= MIN_SCALE ? scale : state.scale,\n    })),\n    increaseScale: () => set((state) => ({\n        scale: Math.min(state.scale + 10, MAX_SCALE),\n    })),\n    decreaseScale: () => set((state) => ({\n        scale: Math.max(state.scale - 10, MIN_SCALE),\n    })),\n    setReachedEffectiveMaxScale: (value: boolean) => set(() => ({ reachedEffectiveMaxScale: value })),\n    setIsSplitView: (splitView: boolean) => set(() => ({ isSplitView: splitView })),\n    setActiveSplitView: (view: string) => set(() => ({ activeSplitView: view })),\n    setSplitViewOrientation: (orientation: 'horizontal' | 'vertical') => set(() => ({ splitViewOrientation: orientation })),\n    setActiveTab: (tab: string) => set(() => ({ activeTab: tab })),\n}))\n\n\ninterface PlayerState {\n    playingState: PlayingState\n    playingPosition: number\n    seekPosition: number\n    autoScroll: boolean\n\n    setPlayingState: (state: PlayingState) => void\n    setPlayingPosition: (position: number) => void\n    setSeekPosition: (position: number) => void\n    setAutoScroll: (autoScroll: boolean) => void\n    resetPlayerPosition: () => void\n}\n\nconst createPlayerStore = create<PlayerState>((set) => ({\n    playingState: PlayingState.STOPPED,\n    playingPosition: 0,\n    seekPosition: -1,\n    autoScroll: false,\n\n    setPlayingState: (playingState: PlayingState) => set(() => ({ playingState: playingState })),\n    setPlayingPosition: (position: number) => set(() => ({ playingPosition: position })),\n    setSeekPosition: (position: number) => set(() => ({ seekPosition: position })),\n    setAutoScroll: (autoScroll: boolean) => set(() => ({ autoScroll: autoScroll })),\n    resetPlayerPosition: () => set(() => ({\n        playingPosition: 0,\n        seekPosition: 0,\n    })),\n}))\n\n\ninterface EditorialState {\n    showNVerses: number | null\n    showReconstructions: { [staff: string]: string }\n    showEditorial: boolean | null\n    showOriginalClefs: boolean | null\n    normalizeFicta: boolean | null\n    showingEditorial: string | null\n    appOptions: string[]\n    choiceOptions: string[]\n    transposition: string | null\n    showMusicAnalysis: boolean | null\n    measureNumberInterval: number | null\n\n    setShowNVerses: (n: number | null) => void\n    setShowReconstructions: (reconstructions: { [staff: string]: string }, replace: boolean) => void\n    setShowEditorial: (showEditorial: boolean) => void\n    setShowOriginalClefs: (showOriginalClefs: boolean | null) => void\n    setNormalizeFicta: (normalizeFicta: boolean | null) => void\n    setShowingEditorial: (editorial: string | null) => void\n    setAppOptions: (options: string[], replace: boolean) => void\n    setChoiceOptions: (options: string[], replace: boolean) => void\n    setTransposition: (transposition: string | null) => void\n    setShowMusicAnalysis: (showMusicAnalysis: boolean) => void\n    setMeasureNumberInterval: (interval: number | null) => void\n}\n\nconst createEditorialStore = create<EditorialState>((set) => ({\n    showNVerses: null,\n    showReconstructions: {},\n    showEditorial: false,\n    showOriginalClefs: null,\n    normalizeFicta: null,\n    showingEditorial: null,\n    appOptions: [],\n    choiceOptions: [],\n    transposition: null,\n    showMusicAnalysis: null,\n    measureNumberInterval: null,\n\n    setShowNVerses: (n: number | null) => set(() => ({ showNVerses: n })),\n    setShowReconstructions: (reconstructions: { [staff: string]: string }, replace: boolean) => set((state) => ({\n        showReconstructions: replace ? reconstructions : { ...state.showReconstructions, ...reconstructions }\n    })),\n    setShowEditorial: (showEditorial: boolean) => set(() => ({ showEditorial })),\n    setShowOriginalClefs: (showOriginalClefs: boolean | null) => set(() => ({ showOriginalClefs })),\n    setNormalizeFicta: (normalizeFicta: boolean | null) => set(() => ({ normalizeFicta })),\n    setShowingEditorial: (editorial: string | null) => set(() => ({ showingEditorial: editorial })),\n    setAppOptions: (options: string[], replace: boolean) => set((state) => ({\n        appOptions: replace ? options : [...state.appOptions, ...options]\n    })),\n    setChoiceOptions: (options: string[], replace: boolean) => set((state) => ({\n        choiceOptions: replace ? options : [...state.choiceOptions, ...options]\n    })),\n    setTransposition: (transposition: string | null) => set(() => ({ transposition })),\n    setShowMusicAnalysis: (showMusicAnalysis: boolean) => set(() => ({ showMusicAnalysis })),\n    setMeasureNumberInterval: (interval: number | null) => set(() => ({ measureNumberInterval: interval })),\n}))\n\n\ninterface RenderedSvgState {\n    renderedSvgData: RenderedData | null;\n    pageCache: Map<number, RenderedData>;\n    setRenderedSvgData: (data: RenderedData) => void;\n    setCachedPage: (page: number, data: RenderedData) => void;\n    getCachedPage: (page: number) => RenderedData | null;\n    clearPageCache: () => void;\n}\n\nconst createRenderedSvgStore = create<RenderedSvgState>((set, get) => ({\n    renderedSvgData: null,\n    pageCache: new Map(),\n\n    setRenderedSvgData: (data: RenderedData) => set(() => ({ renderedSvgData: data })),\n\n    setCachedPage: (page: number, data: RenderedData) => {\n        const cache = new Map(get().pageCache);\n        const MAX_CACHE_SIZE = 3;\n\n        // If cache is full and we're adding a new page, remove oldest\n        if (cache.size >= MAX_CACHE_SIZE && !cache.has(page)) {\n            const firstKey = cache.keys().next().value;\n            if (firstKey !== undefined) {\n                cache.delete(firstKey);\n            }\n        }\n\n        cache.set(page, data);\n        set({ pageCache: cache });\n    },\n\n    getCachedPage: (page: number) => {\n        return get().pageCache.get(page) || null;\n    },\n\n    clearPageCache: () => set({ pageCache: new Map() }),\n}))\n\n\nclass StoreApi {\n    public use = {\n        // Rendering Store\n        pendingAction: createRenderingStoreWithSelectors.use.pendingAction,\n        setPendingAction: createRenderingStoreWithSelectors.use.setPendingAction,\n\n        // Score Management Store\n        score: createScoreManagementStoreWithSelectors.use.score,\n        showingMei: createScoreManagementStoreWithSelectors.use.showingMei,\n        scoreCache: createScoreManagementStoreWithSelectors.use.scoreCache,\n        textCache: createScoreManagementStoreWithSelectors.use.textCache,\n        textComments: createScoreManagementStoreWithSelectors.use.textComments,\n        textIntroduction: createScoreManagementStoreWithSelectors.use.textIntroduction,\n        textLyrics: createScoreManagementStoreWithSelectors.use.textLyrics,\n        setScore: createScoreManagementStoreWithSelectors.use.setScore,\n        setShowingMei: createScoreManagementStoreWithSelectors.use.setShowingMei,\n        setScoreCache: createScoreManagementStoreWithSelectors.use.setScoreCache,\n        setTextCache: createScoreManagementStoreWithSelectors.use.setTextCache,\n        setTextComments: createScoreManagementStoreWithSelectors.use.setTextComments,\n        setTextIntroduction: createScoreManagementStoreWithSelectors.use.setTextIntroduction,\n        setTextLyrics: createScoreManagementStoreWithSelectors.use.setTextLyrics,\n\n\n        // UI/Layout Store\n        isLoading: createUILayoutStoreWithSelectors.use.isLoading,\n        scoreSvg: createUILayoutStoreWithSelectors.use.scoreSvg,\n        scale: createUILayoutStoreWithSelectors.use.scale,\n        reachedEffectiveMaxScale: createUILayoutStoreWithSelectors.use.reachedEffectiveMaxScale,\n        isSplitView: createUILayoutStoreWithSelectors.use.isSplitView,\n        activeSplitView: createUILayoutStoreWithSelectors.use.activeSplitView,\n        splitViewOrientation: createUILayoutStoreWithSelectors.use.splitViewOrientation,\n        activeTab: createUILayoutStoreWithSelectors.use.activeTab,\n        setIsLoading: createUILayoutStoreWithSelectors.use.setIsLoading,\n        setScoreSvg: createUILayoutStoreWithSelectors.use.setScoreSvg,\n        setScale: createUILayoutStoreWithSelectors.use.setScale,\n        increaseScale: createUILayoutStoreWithSelectors.use.increaseScale,\n        decreaseScale: createUILayoutStoreWithSelectors.use.decreaseScale,\n        setReachedEffectiveMaxScale: createUILayoutStoreWithSelectors.use.setReachedEffectiveMaxScale,\n        setIsSplitView: createUILayoutStoreWithSelectors.use.setIsSplitView,\n        setSplitViewOrientation: createUILayoutStoreWithSelectors.use.setSplitViewOrientation,\n        setActiveTab: createUILayoutStoreWithSelectors.use.setActiveTab,\n        setActiveSplitView: createUILayoutStoreWithSelectors.use.setActiveSplitView,\n\n        // Score Navigation Store\n        pageCount: createScoreViewerStoreWithSelectors.use.pageCount,\n        currentPage: createScoreViewerStoreWithSelectors.use.currentPage,\n        sectionPageMap: createScoreViewerStoreWithSelectors.use.sectionPageMap,\n        setScoreLayout: createScoreViewerStoreWithSelectors.use.setScoreLayout,\n        goToPage: createScoreViewerStoreWithSelectors.use.goToPage,\n        goToNextPage: createScoreViewerStoreWithSelectors.use.goToNextPage,\n        goToPreviousPage: createScoreViewerStoreWithSelectors.use.goToPreviousPage,\n        goToSection: createScoreViewerStoreWithSelectors.use.goToSection,\n        navigationCommand: createScoreViewerStoreWithSelectors.use.navigationCommand,\n        clearNavigationCommand: createScoreViewerStoreWithSelectors.use.clearNavigationCommand,\n\n\n        // Player Store\n        playingState: createPlayerStoreWithSelectors.use.playingState,\n        playingPosition: createPlayerStoreWithSelectors.use.playingPosition,\n        seekPosition: createPlayerStoreWithSelectors.use.seekPosition,\n        autoScroll: createPlayerStoreWithSelectors.use.autoScroll,\n        setPlayingState: createPlayerStoreWithSelectors.use.setPlayingState,\n        setPlayingPosition: createPlayerStoreWithSelectors.use.setPlayingPosition,\n        setSeekPosition: createPlayerStoreWithSelectors.use.setSeekPosition,\n        setAutoScroll: createPlayerStoreWithSelectors.use.setAutoScroll,\n        resetPlayerPosition: createPlayerStoreWithSelectors.use.resetPlayerPosition,\n\n        // Editorial Store\n        showNVerses: createEditorialStoreWithSelectors.use.showNVerses,\n        showReconstructions: createEditorialStoreWithSelectors.use.showReconstructions,\n        showEditorial: createEditorialStoreWithSelectors.use.showEditorial,\n        showOriginalClefs: createEditorialStoreWithSelectors.use.showOriginalClefs,\n        normalizeFicta: createEditorialStoreWithSelectors.use.normalizeFicta,\n        showingEditorial: createEditorialStoreWithSelectors.use.showingEditorial,\n        appOptions: createEditorialStoreWithSelectors.use.appOptions,\n        choiceOptions: createEditorialStoreWithSelectors.use.choiceOptions,\n        transposition: createEditorialStoreWithSelectors.use.transposition,\n        showMusicAnalysis: createEditorialStoreWithSelectors.use.showMusicAnalysis,\n        measureNumberInterval: createEditorialStoreWithSelectors.use.measureNumberInterval,\n        setShowNVerses: createEditorialStoreWithSelectors.use.setShowNVerses,\n        setShowReconstructions: createEditorialStoreWithSelectors.use.setShowReconstructions,\n        setShowEditorial: createEditorialStoreWithSelectors.use.setShowEditorial,\n        setShowOriginalClefs: createEditorialStoreWithSelectors.use.setShowOriginalClefs,\n        setNormalizeFicta: createEditorialStoreWithSelectors.use.setNormalizeFicta,\n        setShowingEditorial: createEditorialStoreWithSelectors.use.setShowingEditorial,\n        setAppOptions: createEditorialStoreWithSelectors.use.setAppOptions,\n        setChoiceOptions: createEditorialStoreWithSelectors.use.setChoiceOptions,\n        setTransposition: createEditorialStoreWithSelectors.use.setTransposition,\n        setShowMusicAnalysis: createEditorialStoreWithSelectors.use.setShowMusicAnalysis,\n        setMeasureNumberInterval: createEditorialStoreWithSelectors.use.setMeasureNumberInterval,\n\n\n        // Rendered SVG Store\n        renderedSvgData: createRenderedSvgStoreWithSelectors.use.renderedSvgData,\n        setRenderedSvgData: createRenderedSvgStoreWithSelectors.use.setRenderedSvgData,\n        pageCache: createRenderedSvgStoreWithSelectors.use.pageCache,\n        setCachedPage: createRenderedSvgStoreWithSelectors.use.setCachedPage,\n        getCachedPage: createRenderedSvgStoreWithSelectors.use.getCachedPage,\n        clearPageCache: createRenderedSvgStoreWithSelectors.use.clearPageCache,\n    }\n}\n\nconst createRenderingStoreWithSelectors = createSelectors(createRenderingStore);\nconst createScoreManagementStoreWithSelectors = createSelectors(createScoreManagementStore);\nconst createScoreViewerStoreWithSelectors = createSelectors(createScoreViewerStore);\n\nconst createUILayoutStoreWithSelectors = createSelectors(createUILayoutStore);\nconst createPlayerStoreWithSelectors = createSelectors(createPlayerStore);\nconst createEditorialStoreWithSelectors = createSelectors(createEditorialStore);\nconst createRenderedSvgStoreWithSelectors = createSelectors(createRenderedSvgStore);\n\nconst useStore = new StoreApi();\n\nexport default useStore;\n\n","import { useEffect, useRef, useState } from 'react';\nimport { VerovioWorkerProxy, VerovioWorkerRequest, VerovioWorkerResponse, VerovioWorkerInitMessage } from './types/verovio-worker';\n\nimport VerovioWorker from './workers/verovio.worker?worker';\n\n// Shared worker instance across all components\nlet sharedWorker: Worker | null = null;\nlet workerReady = false;\nlet workerVersion: string | null = null;\n\n// Queue for pending requests\nconst pendingRequests = new Map<string, {\n    resolve: (value: any) => void;\n    reject: (error: Error) => void;\n}>();\n\n// Queue for requests made before worker is ready\nlet initializationPromise: Promise<void> | null = null;\n\n// Request ID counter\nlet requestIdCounter = 0;\n\n/**\n * Initialize the Verovio worker (called once)\n */\nfunction initializeWorker(): Worker {\n    if (sharedWorker) {\n        return sharedWorker;\n    }\n\n    console.log('[useVerovio] Creating Verovio worker...');\n    sharedWorker = new VerovioWorker();\n\n    // Create initialization promise\n    initializationPromise = new Promise((resolve, reject) => {\n        const timeout = setTimeout(() => {\n            reject(new Error('Worker initialization timeout'));\n        }, 30000); // 30 second timeout\n\n        sharedWorker!.onmessage = (event: MessageEvent) => {\n            const message = event.data;\n\n            // Handle initialization message\n            if (message.type === 'init') {\n                clearTimeout(timeout);\n                const initMsg = message as VerovioWorkerInitMessage;\n                if (initMsg.status === 'ready') {\n                    workerReady = true;\n                    workerVersion = initMsg.version || null;\n                    console.log('[useVerovio] Worker ready, Verovio version:', workerVersion);\n                    resolve();\n                } else {\n                    console.error('[useVerovio] Worker initialization failed:', initMsg.error);\n                    reject(new Error(initMsg.error || 'Worker initialization failed'));\n                }\n                // Set up handler for subsequent messages\n                sharedWorker!.onmessage = handleWorkerMessage;\n                return;\n            }\n        };\n\n        sharedWorker!.onerror = (error) => {\n            clearTimeout(timeout);\n            console.error('[useVerovio] Worker error during init:', error);\n            reject(error);\n        };\n    });\n\n    return sharedWorker!;\n}\n\n/**\n * Handle worker messages after initialization\n */\nfunction handleWorkerMessage(event: MessageEvent) {\n    const response = event.data as VerovioWorkerResponse;\n    const pending = pendingRequests.get(response.id);\n\n    if (pending) {\n        pendingRequests.delete(response.id);\n\n        if (response.error) {\n            pending.reject(new Error(response.error));\n        } else {\n            pending.resolve(response.result);\n        }\n    }\n}\n\n/**\n * Call a method on the Verovio worker\n */\nasync function callWorkerMethod(method: string, ...args: any[]): Promise<any> {\n    if (!sharedWorker) {\n        throw new Error('Worker not initialized');\n    }\n\n    // Wait for worker to be ready\n    if (!workerReady && initializationPromise) {\n        await initializationPromise;\n    }\n\n    if (!workerReady) {\n        throw new Error('Worker not ready');\n    }\n\n    return new Promise((resolve, reject) => {\n        if (!sharedWorker) {\n            reject(new Error('Worker not initialized'));\n            return;\n        }\n\n        const id = `req_${++requestIdCounter}`;\n        pendingRequests.set(id, { resolve, reject });\n\n        const request: VerovioWorkerRequest = {\n            id,\n            method,\n            args\n        };\n\n        sharedWorker.postMessage(request);\n    });\n}\n\n/**\n * Create a proxy object that wraps all Verovio methods\n */\nfunction createWorkerProxy(): VerovioWorkerProxy {\n    return {\n        get isReady() {\n            return workerReady;\n        },\n        setOptions: (options) => callWorkerMethod('setOptions', options),\n        loadData: (data) => callWorkerMethod('loadData', data),\n        getPageCount: () => callWorkerMethod('getPageCount'),\n        renderToSVG: (page) => callWorkerMethod('renderToSVG', page),\n        renderToTimemap: (options) => callWorkerMethod('renderToTimemap', options),\n        getMEI: (options) => callWorkerMethod('getMEI', options),\n        getPageWithElement: (elementId) => callWorkerMethod('getPageWithElement', elementId),\n        getElementsAtTime: (time) => callWorkerMethod('getElementsAtTime', time),\n        getVersion: () => callWorkerMethod('getVersion')\n    };\n}\n\n/**\n * Hook to access the Verovio worker\n */\nfunction useVerovio(): VerovioWorkerProxy | null {\n    const [proxy, setProxy] = useState<VerovioWorkerProxy | null>(null);\n    const workerRef = useRef<Worker | null>(null);\n\n    useEffect(() => {\n        // Initialize worker on first mount\n        if (!workerRef.current) {\n            workerRef.current = initializeWorker();\n            setProxy(createWorkerProxy());\n        }\n\n        // Cleanup on unmount\n        return () => {\n            // Note: We keep the worker alive for the lifetime of the app\n            // since it's shared across components\n        };\n    }, []);\n\n    return proxy;\n}\n\nexport default useVerovio;\n","import { createContext } from 'react'\n\n\nexport const Context = createContext<{\n    verovio: any,\n}>({verovio: undefined });","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","function _extends() {\n  return _extends = Object.assign ? Object.assign.bind() : function (n) {\n    for (var e = 1; e < arguments.length; e++) {\n      var t = arguments[e];\n      for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n    }\n    return n;\n  }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar REACT_ELEMENT_TYPE_18 = Symbol.for('react.element');\nvar REACT_ELEMENT_TYPE_19 = Symbol.for('react.transitional.element');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\n\n/**\n * Compatible with React 18 or 19 to check if node is a Fragment.\n */\nexport default function isFragment(object) {\n  return (\n    // Base object type\n    object && _typeof(object) === 'object' && (\n    // React Element type\n    object.$$typeof === REACT_ELEMENT_TYPE_18 || object.$$typeof === REACT_ELEMENT_TYPE_19) &&\n    // React Fragment type\n    object.type === REACT_FRAGMENT_TYPE\n  );\n}","import isFragment from \"../React/isFragment\";\nimport React from 'react';\nexport default function toArray(children) {\n  var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var ret = [];\n  React.Children.forEach(children, function (child) {\n    if ((child === undefined || child === null) && !option.keepEmpty) {\n      return;\n    }\n    if (Array.isArray(child)) {\n      ret = ret.concat(toArray(child));\n    } else if (isFragment(child) && child.props) {\n      ret = ret.concat(toArray(child.props.children, option));\n    } else {\n      ret.push(child);\n    }\n  });\n  return ret;\n}","/* eslint-disable no-console */\nvar warned = {};\nvar preWarningFns = [];\n\n/**\n * Pre warning enable you to parse content before console.error.\n * Modify to null will prevent warning.\n */\nexport var preMessage = function preMessage(fn) {\n  preWarningFns.push(fn);\n};\n\n/**\n * Warning if condition not match.\n * @param valid Condition\n * @param message Warning message\n * @example\n * ```js\n * warning(false, 'some error'); // print some error\n * warning(true, 'some error'); // print nothing\n * warning(1 === 2, 'some error'); // print some error\n * ```\n */\nexport function warning(valid, message) {\n  if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n    var finalMessage = preWarningFns.reduce(function (msg, preMessageFn) {\n      return preMessageFn(msg !== null && msg !== void 0 ? msg : '', 'warning');\n    }, message);\n    if (finalMessage) {\n      console.error(\"Warning: \".concat(finalMessage));\n    }\n  }\n}\n\n/** @see Similar to {@link warning} */\nexport function note(valid, message) {\n  if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n    var finalMessage = preWarningFns.reduce(function (msg, preMessageFn) {\n      return preMessageFn(msg !== null && msg !== void 0 ? msg : '', 'note');\n    }, message);\n    if (finalMessage) {\n      console.warn(\"Note: \".concat(finalMessage));\n    }\n  }\n}\nexport function resetWarned() {\n  warned = {};\n}\nexport function call(method, valid, message) {\n  if (!valid && !warned[message]) {\n    method(false, message);\n    warned[message] = true;\n  }\n}\n\n/** @see Same as {@link warning}, but only warn once for the same message */\nexport function warningOnce(valid, message) {\n  call(warning, valid, message);\n}\n\n/** @see Same as {@link warning}, but only warn once for the same message */\nexport function noteOnce(valid, message) {\n  call(note, valid, message);\n}\nwarningOnce.preMessage = preMessage;\nwarningOnce.resetWarned = resetWarned;\nwarningOnce.noteOnce = noteOnce;\nexport default warningOnce;","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n  if (\"object\" != _typeof(t) || !t) return t;\n  var e = t[Symbol.toPrimitive];\n  if (void 0 !== e) {\n    var i = e.call(t, r || \"default\");\n    if (\"object\" != _typeof(i)) return i;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n  var i = toPrimitive(t, \"string\");\n  return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n    value: t,\n    enumerable: !0,\n    configurable: !0,\n    writable: !0\n  }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(e, r) {\n  var t = Object.keys(e);\n  if (Object.getOwnPropertySymbols) {\n    var o = Object.getOwnPropertySymbols(e);\n    r && (o = o.filter(function (r) {\n      return Object.getOwnPropertyDescriptor(e, r).enumerable;\n    })), t.push.apply(t, o);\n  }\n  return t;\n}\nfunction _objectSpread2(e) {\n  for (var r = 1; r < arguments.length; r++) {\n    var t = null != arguments[r] ? arguments[r] : {};\n    r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n      defineProperty(e, r, t[r]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n      Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n    });\n  }\n  return e;\n}\nexport { _objectSpread2 as default };","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nexport function isDOM(node) {\n  // https://developer.mozilla.org/en-US/docs/Web/API/Element\n  // Since XULElement is also subclass of Element, we only need HTMLElement and SVGElement\n  return node instanceof HTMLElement || node instanceof SVGElement;\n}\n\n/**\n * Retrieves a DOM node via a ref, and does not invoke `findDOMNode`.\n */\nexport function getDOM(node) {\n  if (node && _typeof(node) === 'object' && isDOM(node.nativeElement)) {\n    return node.nativeElement;\n  }\n  if (isDOM(node)) {\n    return node;\n  }\n  return null;\n}\n\n/**\n * Return if a node is a DOM node. Else will return by `findDOMNode`\n */\nexport default function findDOMNode(node) {\n  var domNode = getDOM(node);\n  if (domNode) {\n    return domNode;\n  }\n  if (node instanceof React.Component) {\n    var _ReactDOM$findDOMNode;\n    return (_ReactDOM$findDOMNode = ReactDOM.findDOMNode) === null || _ReactDOM$findDOMNode === void 0 ? void 0 : _ReactDOM$findDOMNode.call(ReactDOM, node);\n  }\n  return null;\n}","/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","/**\n * @license React\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n  (function() {\n'use strict';\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_SERVER_CONTEXT_TYPE = Symbol.for('react.server_context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE;\n\n{\n  REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n  if (typeof type === 'string' || typeof type === 'function') {\n    return true;\n  } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n  if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing  || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden  || type === REACT_OFFSCREEN_TYPE || enableScopeAPI  || enableCacheElement  || enableTransitionTracing ) {\n    return true;\n  }\n\n  if (typeof type === 'object' && type !== null) {\n    if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n    // types supported by any Flight configuration anywhere since\n    // we don't know which Flight build this will end up being used\n    // with.\n    type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction typeOf(object) {\n  if (typeof object === 'object' && object !== null) {\n    var $$typeof = object.$$typeof;\n\n    switch ($$typeof) {\n      case REACT_ELEMENT_TYPE:\n        var type = object.type;\n\n        switch (type) {\n          case REACT_FRAGMENT_TYPE:\n          case REACT_PROFILER_TYPE:\n          case REACT_STRICT_MODE_TYPE:\n          case REACT_SUSPENSE_TYPE:\n          case REACT_SUSPENSE_LIST_TYPE:\n            return type;\n\n          default:\n            var $$typeofType = type && type.$$typeof;\n\n            switch ($$typeofType) {\n              case REACT_SERVER_CONTEXT_TYPE:\n              case REACT_CONTEXT_TYPE:\n              case REACT_FORWARD_REF_TYPE:\n              case REACT_LAZY_TYPE:\n              case REACT_MEMO_TYPE:\n              case REACT_PROVIDER_TYPE:\n                return $$typeofType;\n\n              default:\n                return $$typeof;\n            }\n\n        }\n\n      case REACT_PORTAL_TYPE:\n        return $$typeof;\n    }\n  }\n\n  return undefined;\n}\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar SuspenseList = REACT_SUSPENSE_LIST_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\nvar hasWarnedAboutDeprecatedIsConcurrentMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n  {\n    if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n      hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n      console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n    }\n  }\n\n  return false;\n}\nfunction isConcurrentMode(object) {\n  {\n    if (!hasWarnedAboutDeprecatedIsConcurrentMode) {\n      hasWarnedAboutDeprecatedIsConcurrentMode = true; // Using console['warn'] to evade Babel and ESLint\n\n      console['warn']('The ReactIs.isConcurrentMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n    }\n  }\n\n  return false;\n}\nfunction isContextConsumer(object) {\n  return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n  return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n  return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n  return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n  return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n  return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n  return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n  return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n  return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n  return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n  return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\nfunction isSuspenseList(object) {\n  return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n}\n\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.SuspenseList = SuspenseList;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isSuspenseList = isSuspenseList;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n  })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","import * as React from 'react';\nexport default function useMemo(getValue, condition, shouldUpdate) {\n  var cacheRef = React.useRef({});\n  if (!('value' in cacheRef.current) || shouldUpdate(cacheRef.current.condition, condition)) {\n    cacheRef.current.value = getValue();\n    cacheRef.current.condition = condition;\n  }\n  return cacheRef.current.value;\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport { isValidElement, version } from 'react';\nimport { ForwardRef, isMemo } from 'react-is';\nimport useMemo from \"./hooks/useMemo\";\nimport isFragment from \"./React/isFragment\";\nvar ReactMajorVersion = Number(version.split('.')[0]);\nexport var fillRef = function fillRef(ref, node) {\n  if (typeof ref === 'function') {\n    ref(node);\n  } else if (_typeof(ref) === 'object' && ref && 'current' in ref) {\n    ref.current = node;\n  }\n};\n\n/**\n * Merge refs into one ref function to support ref passing.\n */\nexport var composeRef = function composeRef() {\n  for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {\n    refs[_key] = arguments[_key];\n  }\n  var refList = refs.filter(Boolean);\n  if (refList.length <= 1) {\n    return refList[0];\n  }\n  return function (node) {\n    refs.forEach(function (ref) {\n      fillRef(ref, node);\n    });\n  };\n};\nexport var useComposeRef = function useComposeRef() {\n  for (var _len2 = arguments.length, refs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n    refs[_key2] = arguments[_key2];\n  }\n  return useMemo(function () {\n    return composeRef.apply(void 0, refs);\n  }, refs, function (prev, next) {\n    return prev.length !== next.length || prev.every(function (ref, i) {\n      return ref !== next[i];\n    });\n  });\n};\nexport var supportRef = function supportRef(nodeOrComponent) {\n  var _type$prototype, _nodeOrComponent$prot;\n  if (!nodeOrComponent) {\n    return false;\n  }\n\n  // React 19 no need `forwardRef` anymore. So just pass if is a React element.\n  if (isReactElement(nodeOrComponent) && ReactMajorVersion >= 19) {\n    return true;\n  }\n  var type = isMemo(nodeOrComponent) ? nodeOrComponent.type.type : nodeOrComponent.type;\n\n  // Function component node\n  if (typeof type === 'function' && !((_type$prototype = type.prototype) !== null && _type$prototype !== void 0 && _type$prototype.render) && type.$$typeof !== ForwardRef) {\n    return false;\n  }\n\n  // Class component\n  if (typeof nodeOrComponent === 'function' && !((_nodeOrComponent$prot = nodeOrComponent.prototype) !== null && _nodeOrComponent$prot !== void 0 && _nodeOrComponent$prot.render) && nodeOrComponent.$$typeof !== ForwardRef) {\n    return false;\n  }\n  return true;\n};\nfunction isReactElement(node) {\n  return /*#__PURE__*/isValidElement(node) && !isFragment(node);\n}\nexport var supportNodeRef = function supportNodeRef(node) {\n  return isReactElement(node) && supportRef(node);\n};\n\n/**\n * In React 19. `ref` is not a property from node.\n * But a property from `props.ref`.\n * To check if `props.ref` exist or fallback to `ref`.\n */\nexport var getNodeRef = function getNodeRef(node) {\n  if (node && isReactElement(node)) {\n    var ele = node;\n\n    // Source from:\n    // https://github.com/mui/material-ui/blob/master/packages/mui-utils/src/getReactNodeRef/getReactNodeRef.ts\n    return ele.props.propertyIsEnumerable('ref') ? ele.props.ref : ele.ref;\n  }\n  return null;\n};","import * as React from 'react';\nexport var CollectionContext = /*#__PURE__*/React.createContext(null);\n/**\n * Collect all the resize event from children ResizeObserver\n */\nexport function Collection(_ref) {\n  var children = _ref.children,\n    onBatchResize = _ref.onBatchResize;\n  var resizeIdRef = React.useRef(0);\n  var resizeInfosRef = React.useRef([]);\n  var onCollectionResize = React.useContext(CollectionContext);\n  var onResize = React.useCallback(function (size, element, data) {\n    resizeIdRef.current += 1;\n    var currentId = resizeIdRef.current;\n    resizeInfosRef.current.push({\n      size: size,\n      element: element,\n      data: data\n    });\n    Promise.resolve().then(function () {\n      if (currentId === resizeIdRef.current) {\n        onBatchResize === null || onBatchResize === void 0 || onBatchResize(resizeInfosRef.current);\n        resizeInfosRef.current = [];\n      }\n    });\n\n    // Continue bubbling if parent exist\n    onCollectionResize === null || onCollectionResize === void 0 || onCollectionResize(size, element, data);\n  }, [onBatchResize, onCollectionResize]);\n  return /*#__PURE__*/React.createElement(CollectionContext.Provider, {\n    value: onResize\n  }, children);\n}","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n    if (typeof Map !== 'undefined') {\r\n        return Map;\r\n    }\r\n    /**\r\n     * Returns index in provided array that matches the specified key.\r\n     *\r\n     * @param {Array<Array>} arr\r\n     * @param {*} key\r\n     * @returns {number}\r\n     */\r\n    function getIndex(arr, key) {\r\n        var result = -1;\r\n        arr.some(function (entry, index) {\r\n            if (entry[0] === key) {\r\n                result = index;\r\n                return true;\r\n            }\r\n            return false;\r\n        });\r\n        return result;\r\n    }\r\n    return /** @class */ (function () {\r\n        function class_1() {\r\n            this.__entries__ = [];\r\n        }\r\n        Object.defineProperty(class_1.prototype, \"size\", {\r\n            /**\r\n             * @returns {boolean}\r\n             */\r\n            get: function () {\r\n                return this.__entries__.length;\r\n            },\r\n            enumerable: true,\r\n            configurable: true\r\n        });\r\n        /**\r\n         * @param {*} key\r\n         * @returns {*}\r\n         */\r\n        class_1.prototype.get = function (key) {\r\n            var index = getIndex(this.__entries__, key);\r\n            var entry = this.__entries__[index];\r\n            return entry && entry[1];\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @param {*} value\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.set = function (key, value) {\r\n            var index = getIndex(this.__entries__, key);\r\n            if (~index) {\r\n                this.__entries__[index][1] = value;\r\n            }\r\n            else {\r\n                this.__entries__.push([key, value]);\r\n            }\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.delete = function (key) {\r\n            var entries = this.__entries__;\r\n            var index = getIndex(entries, key);\r\n            if (~index) {\r\n                entries.splice(index, 1);\r\n            }\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.has = function (key) {\r\n            return !!~getIndex(this.__entries__, key);\r\n        };\r\n        /**\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.clear = function () {\r\n            this.__entries__.splice(0);\r\n        };\r\n        /**\r\n         * @param {Function} callback\r\n         * @param {*} [ctx=null]\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.forEach = function (callback, ctx) {\r\n            if (ctx === void 0) { ctx = null; }\r\n            for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n                var entry = _a[_i];\r\n                callback.call(ctx, entry[1], entry[0]);\r\n            }\r\n        };\r\n        return class_1;\r\n    }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n    if (typeof global !== 'undefined' && global.Math === Math) {\r\n        return global;\r\n    }\r\n    if (typeof self !== 'undefined' && self.Math === Math) {\r\n        return self;\r\n    }\r\n    if (typeof window !== 'undefined' && window.Math === Math) {\r\n        return window;\r\n    }\r\n    // eslint-disable-next-line no-new-func\r\n    return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n    if (typeof requestAnimationFrame === 'function') {\r\n        // It's required to use a bounded function because IE sometimes throws\r\n        // an \"Invalid calling object\" error if rAF is invoked without the global\r\n        // object on the left hand side.\r\n        return requestAnimationFrame.bind(global$1);\r\n    }\r\n    return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n    var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n    /**\r\n     * Invokes the original callback function and schedules new invocation if\r\n     * the \"proxy\" was called during current request.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function resolvePending() {\r\n        if (leadingCall) {\r\n            leadingCall = false;\r\n            callback();\r\n        }\r\n        if (trailingCall) {\r\n            proxy();\r\n        }\r\n    }\r\n    /**\r\n     * Callback invoked after the specified delay. It will further postpone\r\n     * invocation of the original function delegating it to the\r\n     * requestAnimationFrame.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function timeoutCallback() {\r\n        requestAnimationFrame$1(resolvePending);\r\n    }\r\n    /**\r\n     * Schedules invocation of the original function.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function proxy() {\r\n        var timeStamp = Date.now();\r\n        if (leadingCall) {\r\n            // Reject immediately following calls.\r\n            if (timeStamp - lastCallTime < trailingTimeout) {\r\n                return;\r\n            }\r\n            // Schedule new call to be in invoked when the pending one is resolved.\r\n            // This is important for \"transitions\" which never actually start\r\n            // immediately so there is a chance that we might miss one if change\r\n            // happens amids the pending invocation.\r\n            trailingCall = true;\r\n        }\r\n        else {\r\n            leadingCall = true;\r\n            trailingCall = false;\r\n            setTimeout(timeoutCallback, delay);\r\n        }\r\n        lastCallTime = timeStamp;\r\n    }\r\n    return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserverController.\r\n     *\r\n     * @private\r\n     */\r\n    function ResizeObserverController() {\r\n        /**\r\n         * Indicates whether DOM listeners have been added.\r\n         *\r\n         * @private {boolean}\r\n         */\r\n        this.connected_ = false;\r\n        /**\r\n         * Tells that controller has subscribed for Mutation Events.\r\n         *\r\n         * @private {boolean}\r\n         */\r\n        this.mutationEventsAdded_ = false;\r\n        /**\r\n         * Keeps reference to the instance of MutationObserver.\r\n         *\r\n         * @private {MutationObserver}\r\n         */\r\n        this.mutationsObserver_ = null;\r\n        /**\r\n         * A list of connected observers.\r\n         *\r\n         * @private {Array<ResizeObserverSPI>}\r\n         */\r\n        this.observers_ = [];\r\n        this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n        this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n    }\r\n    /**\r\n     * Adds observer to observers list.\r\n     *\r\n     * @param {ResizeObserverSPI} observer - Observer to be added.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.addObserver = function (observer) {\r\n        if (!~this.observers_.indexOf(observer)) {\r\n            this.observers_.push(observer);\r\n        }\r\n        // Add listeners if they haven't been added yet.\r\n        if (!this.connected_) {\r\n            this.connect_();\r\n        }\r\n    };\r\n    /**\r\n     * Removes observer from observers list.\r\n     *\r\n     * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.removeObserver = function (observer) {\r\n        var observers = this.observers_;\r\n        var index = observers.indexOf(observer);\r\n        // Remove observer if it's present in registry.\r\n        if (~index) {\r\n            observers.splice(index, 1);\r\n        }\r\n        // Remove listeners if controller has no connected observers.\r\n        if (!observers.length && this.connected_) {\r\n            this.disconnect_();\r\n        }\r\n    };\r\n    /**\r\n     * Invokes the update of observers. It will continue running updates insofar\r\n     * it detects changes.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.refresh = function () {\r\n        var changesDetected = this.updateObservers_();\r\n        // Continue running updates if changes have been detected as there might\r\n        // be future ones caused by CSS transitions.\r\n        if (changesDetected) {\r\n            this.refresh();\r\n        }\r\n    };\r\n    /**\r\n     * Updates every observer from observers list and notifies them of queued\r\n     * entries.\r\n     *\r\n     * @private\r\n     * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n     *      dimensions of it's elements.\r\n     */\r\n    ResizeObserverController.prototype.updateObservers_ = function () {\r\n        // Collect observers that have active observations.\r\n        var activeObservers = this.observers_.filter(function (observer) {\r\n            return observer.gatherActive(), observer.hasActive();\r\n        });\r\n        // Deliver notifications in a separate cycle in order to avoid any\r\n        // collisions between observers, e.g. when multiple instances of\r\n        // ResizeObserver are tracking the same element and the callback of one\r\n        // of them changes content dimensions of the observed target. Sometimes\r\n        // this may result in notifications being blocked for the rest of observers.\r\n        activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n        return activeObservers.length > 0;\r\n    };\r\n    /**\r\n     * Initializes DOM listeners.\r\n     *\r\n     * @private\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.connect_ = function () {\r\n        // Do nothing if running in a non-browser environment or if listeners\r\n        // have been already added.\r\n        if (!isBrowser || this.connected_) {\r\n            return;\r\n        }\r\n        // Subscription to the \"Transitionend\" event is used as a workaround for\r\n        // delayed transitions. This way it's possible to capture at least the\r\n        // final state of an element.\r\n        document.addEventListener('transitionend', this.onTransitionEnd_);\r\n        window.addEventListener('resize', this.refresh);\r\n        if (mutationObserverSupported) {\r\n            this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n            this.mutationsObserver_.observe(document, {\r\n                attributes: true,\r\n                childList: true,\r\n                characterData: true,\r\n                subtree: true\r\n            });\r\n        }\r\n        else {\r\n            document.addEventListener('DOMSubtreeModified', this.refresh);\r\n            this.mutationEventsAdded_ = true;\r\n        }\r\n        this.connected_ = true;\r\n    };\r\n    /**\r\n     * Removes DOM listeners.\r\n     *\r\n     * @private\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.disconnect_ = function () {\r\n        // Do nothing if running in a non-browser environment or if listeners\r\n        // have been already removed.\r\n        if (!isBrowser || !this.connected_) {\r\n            return;\r\n        }\r\n        document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n        window.removeEventListener('resize', this.refresh);\r\n        if (this.mutationsObserver_) {\r\n            this.mutationsObserver_.disconnect();\r\n        }\r\n        if (this.mutationEventsAdded_) {\r\n            document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n        }\r\n        this.mutationsObserver_ = null;\r\n        this.mutationEventsAdded_ = false;\r\n        this.connected_ = false;\r\n    };\r\n    /**\r\n     * \"Transitionend\" event handler.\r\n     *\r\n     * @private\r\n     * @param {TransitionEvent} event\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n        var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n        // Detect whether transition may affect dimensions of an element.\r\n        var isReflowProperty = transitionKeys.some(function (key) {\r\n            return !!~propertyName.indexOf(key);\r\n        });\r\n        if (isReflowProperty) {\r\n            this.refresh();\r\n        }\r\n    };\r\n    /**\r\n     * Returns instance of the ResizeObserverController.\r\n     *\r\n     * @returns {ResizeObserverController}\r\n     */\r\n    ResizeObserverController.getInstance = function () {\r\n        if (!this.instance_) {\r\n            this.instance_ = new ResizeObserverController();\r\n        }\r\n        return this.instance_;\r\n    };\r\n    /**\r\n     * Holds reference to the controller's instance.\r\n     *\r\n     * @private {ResizeObserverController}\r\n     */\r\n    ResizeObserverController.instance_ = null;\r\n    return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n    for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n        var key = _a[_i];\r\n        Object.defineProperty(target, key, {\r\n            value: props[key],\r\n            enumerable: false,\r\n            writable: false,\r\n            configurable: true\r\n        });\r\n    }\r\n    return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n    // Assume that the element is an instance of Node, which means that it\r\n    // has the \"ownerDocument\" property from which we can retrieve a\r\n    // corresponding global object.\r\n    var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n    // Return the local global object if it's not possible extract one from\r\n    // provided element.\r\n    return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n    return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n    var positions = [];\r\n    for (var _i = 1; _i < arguments.length; _i++) {\r\n        positions[_i - 1] = arguments[_i];\r\n    }\r\n    return positions.reduce(function (size, position) {\r\n        var value = styles['border-' + position + '-width'];\r\n        return size + toFloat(value);\r\n    }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n    var positions = ['top', 'right', 'bottom', 'left'];\r\n    var paddings = {};\r\n    for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n        var position = positions_1[_i];\r\n        var value = styles['padding-' + position];\r\n        paddings[position] = toFloat(value);\r\n    }\r\n    return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n *      to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n    var bbox = target.getBBox();\r\n    return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n    // Client width & height properties can't be\r\n    // used exclusively as they provide rounded values.\r\n    var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n    // By this condition we can catch all non-replaced inline, hidden and\r\n    // detached elements. Though elements with width & height properties less\r\n    // than 0.5 will be discarded as well.\r\n    //\r\n    // Without it we would need to implement separate methods for each of\r\n    // those cases and it's not possible to perform a precise and performance\r\n    // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n    // gives wrong results for elements with width & height less than 0.5.\r\n    if (!clientWidth && !clientHeight) {\r\n        return emptyRect;\r\n    }\r\n    var styles = getWindowOf(target).getComputedStyle(target);\r\n    var paddings = getPaddings(styles);\r\n    var horizPad = paddings.left + paddings.right;\r\n    var vertPad = paddings.top + paddings.bottom;\r\n    // Computed styles of width & height are being used because they are the\r\n    // only dimensions available to JS that contain non-rounded values. It could\r\n    // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n    // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n    var width = toFloat(styles.width), height = toFloat(styles.height);\r\n    // Width & height include paddings and borders when the 'border-box' box\r\n    // model is applied (except for IE).\r\n    if (styles.boxSizing === 'border-box') {\r\n        // Following conditions are required to handle Internet Explorer which\r\n        // doesn't include paddings and borders to computed CSS dimensions.\r\n        //\r\n        // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n        // properties then it's either IE, and thus we don't need to subtract\r\n        // anything, or an element merely doesn't have paddings/borders styles.\r\n        if (Math.round(width + horizPad) !== clientWidth) {\r\n            width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n        }\r\n        if (Math.round(height + vertPad) !== clientHeight) {\r\n            height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n        }\r\n    }\r\n    // Following steps can't be applied to the document's root element as its\r\n    // client[Width/Height] properties represent viewport area of the window.\r\n    // Besides, it's as well not necessary as the <html> itself neither has\r\n    // rendered scroll bars nor it can be clipped.\r\n    if (!isDocumentElement(target)) {\r\n        // In some browsers (only in Firefox, actually) CSS width & height\r\n        // include scroll bars size which can be removed at this step as scroll\r\n        // bars are the only difference between rounded dimensions + paddings\r\n        // and \"client\" properties, though that is not always true in Chrome.\r\n        var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n        var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n        // Chrome has a rather weird rounding of \"client\" properties.\r\n        // E.g. for an element with content width of 314.2px it sometimes gives\r\n        // the client width of 315px and for the width of 314.7px it may give\r\n        // 314px. And it doesn't happen all the time. So just ignore this delta\r\n        // as a non-relevant.\r\n        if (Math.abs(vertScrollbar) !== 1) {\r\n            width -= vertScrollbar;\r\n        }\r\n        if (Math.abs(horizScrollbar) !== 1) {\r\n            height -= horizScrollbar;\r\n        }\r\n    }\r\n    return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n    // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n    // interface.\r\n    if (typeof SVGGraphicsElement !== 'undefined') {\r\n        return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n    }\r\n    // If it's so, then check that element is at least an instance of the\r\n    // SVGElement and that it has the \"getBBox\" method.\r\n    // eslint-disable-next-line no-extra-parens\r\n    return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n        typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element (<html>).\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n    return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n    if (!isBrowser) {\r\n        return emptyRect;\r\n    }\r\n    if (isSVGGraphicsElement(target)) {\r\n        return getSVGContentRect(target);\r\n    }\r\n    return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n    var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n    // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n    var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n    var rect = Object.create(Constr.prototype);\r\n    // Rectangle's properties are not writable and non-enumerable.\r\n    defineConfigurable(rect, {\r\n        x: x, y: y, width: width, height: height,\r\n        top: y,\r\n        right: x + width,\r\n        bottom: height + y,\r\n        left: x\r\n    });\r\n    return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n    return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n    /**\r\n     * Creates an instance of ResizeObservation.\r\n     *\r\n     * @param {Element} target - Element to be observed.\r\n     */\r\n    function ResizeObservation(target) {\r\n        /**\r\n         * Broadcasted width of content rectangle.\r\n         *\r\n         * @type {number}\r\n         */\r\n        this.broadcastWidth = 0;\r\n        /**\r\n         * Broadcasted height of content rectangle.\r\n         *\r\n         * @type {number}\r\n         */\r\n        this.broadcastHeight = 0;\r\n        /**\r\n         * Reference to the last observed content rectangle.\r\n         *\r\n         * @private {DOMRectInit}\r\n         */\r\n        this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n        this.target = target;\r\n    }\r\n    /**\r\n     * Updates content rectangle and tells whether it's width or height properties\r\n     * have changed since the last broadcast.\r\n     *\r\n     * @returns {boolean}\r\n     */\r\n    ResizeObservation.prototype.isActive = function () {\r\n        var rect = getContentRect(this.target);\r\n        this.contentRect_ = rect;\r\n        return (rect.width !== this.broadcastWidth ||\r\n            rect.height !== this.broadcastHeight);\r\n    };\r\n    /**\r\n     * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n     * from the corresponding properties of the last observed content rectangle.\r\n     *\r\n     * @returns {DOMRectInit} Last observed content rectangle.\r\n     */\r\n    ResizeObservation.prototype.broadcastRect = function () {\r\n        var rect = this.contentRect_;\r\n        this.broadcastWidth = rect.width;\r\n        this.broadcastHeight = rect.height;\r\n        return rect;\r\n    };\r\n    return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n    /**\r\n     * Creates an instance of ResizeObserverEntry.\r\n     *\r\n     * @param {Element} target - Element that is being observed.\r\n     * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n     */\r\n    function ResizeObserverEntry(target, rectInit) {\r\n        var contentRect = createReadOnlyRect(rectInit);\r\n        // According to the specification following properties are not writable\r\n        // and are also not enumerable in the native implementation.\r\n        //\r\n        // Property accessors are not being used as they'd require to define a\r\n        // private WeakMap storage which may cause memory leaks in browsers that\r\n        // don't support this type of collections.\r\n        defineConfigurable(this, { target: target, contentRect: contentRect });\r\n    }\r\n    return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserver.\r\n     *\r\n     * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n     *      when one of the observed elements changes it's content dimensions.\r\n     * @param {ResizeObserverController} controller - Controller instance which\r\n     *      is responsible for the updates of observer.\r\n     * @param {ResizeObserver} callbackCtx - Reference to the public\r\n     *      ResizeObserver instance which will be passed to callback function.\r\n     */\r\n    function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n        /**\r\n         * Collection of resize observations that have detected changes in dimensions\r\n         * of elements.\r\n         *\r\n         * @private {Array<ResizeObservation>}\r\n         */\r\n        this.activeObservations_ = [];\r\n        /**\r\n         * Registry of the ResizeObservation instances.\r\n         *\r\n         * @private {Map<Element, ResizeObservation>}\r\n         */\r\n        this.observations_ = new MapShim();\r\n        if (typeof callback !== 'function') {\r\n            throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n        }\r\n        this.callback_ = callback;\r\n        this.controller_ = controller;\r\n        this.callbackCtx_ = callbackCtx;\r\n    }\r\n    /**\r\n     * Starts observing provided element.\r\n     *\r\n     * @param {Element} target - Element to be observed.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.observe = function (target) {\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        // Do nothing if current environment doesn't have the Element interface.\r\n        if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n            return;\r\n        }\r\n        if (!(target instanceof getWindowOf(target).Element)) {\r\n            throw new TypeError('parameter 1 is not of type \"Element\".');\r\n        }\r\n        var observations = this.observations_;\r\n        // Do nothing if element is already being observed.\r\n        if (observations.has(target)) {\r\n            return;\r\n        }\r\n        observations.set(target, new ResizeObservation(target));\r\n        this.controller_.addObserver(this);\r\n        // Force the update of observations.\r\n        this.controller_.refresh();\r\n    };\r\n    /**\r\n     * Stops observing provided element.\r\n     *\r\n     * @param {Element} target - Element to stop observing.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.unobserve = function (target) {\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        // Do nothing if current environment doesn't have the Element interface.\r\n        if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n            return;\r\n        }\r\n        if (!(target instanceof getWindowOf(target).Element)) {\r\n            throw new TypeError('parameter 1 is not of type \"Element\".');\r\n        }\r\n        var observations = this.observations_;\r\n        // Do nothing if element is not being observed.\r\n        if (!observations.has(target)) {\r\n            return;\r\n        }\r\n        observations.delete(target);\r\n        if (!observations.size) {\r\n            this.controller_.removeObserver(this);\r\n        }\r\n    };\r\n    /**\r\n     * Stops observing all elements.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.disconnect = function () {\r\n        this.clearActive();\r\n        this.observations_.clear();\r\n        this.controller_.removeObserver(this);\r\n    };\r\n    /**\r\n     * Collects observation instances the associated element of which has changed\r\n     * it's content rectangle.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.gatherActive = function () {\r\n        var _this = this;\r\n        this.clearActive();\r\n        this.observations_.forEach(function (observation) {\r\n            if (observation.isActive()) {\r\n                _this.activeObservations_.push(observation);\r\n            }\r\n        });\r\n    };\r\n    /**\r\n     * Invokes initial callback function with a list of ResizeObserverEntry\r\n     * instances collected from active resize observations.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.broadcastActive = function () {\r\n        // Do nothing if observer doesn't have active observations.\r\n        if (!this.hasActive()) {\r\n            return;\r\n        }\r\n        var ctx = this.callbackCtx_;\r\n        // Create ResizeObserverEntry instance for every active observation.\r\n        var entries = this.activeObservations_.map(function (observation) {\r\n            return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n        });\r\n        this.callback_.call(ctx, entries, ctx);\r\n        this.clearActive();\r\n    };\r\n    /**\r\n     * Clears the collection of active observations.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.clearActive = function () {\r\n        this.activeObservations_.splice(0);\r\n    };\r\n    /**\r\n     * Tells whether observer has active observations.\r\n     *\r\n     * @returns {boolean}\r\n     */\r\n    ResizeObserverSPI.prototype.hasActive = function () {\r\n        return this.activeObservations_.length > 0;\r\n    };\r\n    return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserver.\r\n     *\r\n     * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n     *      dimensions of the observed elements change.\r\n     */\r\n    function ResizeObserver(callback) {\r\n        if (!(this instanceof ResizeObserver)) {\r\n            throw new TypeError('Cannot call a class as a function.');\r\n        }\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        var controller = ResizeObserverController.getInstance();\r\n        var observer = new ResizeObserverSPI(callback, controller, this);\r\n        observers.set(this, observer);\r\n    }\r\n    return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n    'observe',\r\n    'unobserve',\r\n    'disconnect'\r\n].forEach(function (method) {\r\n    ResizeObserver.prototype[method] = function () {\r\n        var _a;\r\n        return (_a = observers.get(this))[method].apply(_a, arguments);\r\n    };\r\n});\n\nvar index = (function () {\r\n    // Export existing implementation if available.\r\n    if (typeof global$1.ResizeObserver !== 'undefined') {\r\n        return global$1.ResizeObserver;\r\n    }\r\n    return ResizeObserver;\r\n})();\n\nexport default index;\n","import ResizeObserver from 'resize-observer-polyfill';\n// =============================== Const ===============================\nvar elementListeners = new Map();\nfunction onResize(entities) {\n  entities.forEach(function (entity) {\n    var _elementListeners$get;\n    var target = entity.target;\n    (_elementListeners$get = elementListeners.get(target)) === null || _elementListeners$get === void 0 || _elementListeners$get.forEach(function (listener) {\n      return listener(target);\n    });\n  });\n}\n\n// Note: ResizeObserver polyfill not support option to measure border-box resize\nvar resizeObserver = new ResizeObserver(onResize);\n\n// Dev env only\nexport var _el = process.env.NODE_ENV !== 'production' ? elementListeners : null; // eslint-disable-line\nexport var _rs = process.env.NODE_ENV !== 'production' ? onResize : null; // eslint-disable-line\n\n// ============================== Observe ==============================\nexport function observe(element, callback) {\n  if (!elementListeners.has(element)) {\n    elementListeners.set(element, new Set());\n    resizeObserver.observe(element);\n  }\n  elementListeners.get(element).add(callback);\n}\nexport function unobserve(element, callback) {\n  if (elementListeners.has(element)) {\n    elementListeners.get(element).delete(callback);\n    if (!elementListeners.get(element).size) {\n      resizeObserver.unobserve(element);\n      elementListeners.delete(element);\n    }\n  }\n}","function _classCallCheck(a, n) {\n  if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nexport { _classCallCheck as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(e, r) {\n  for (var t = 0; t < r.length; t++) {\n    var o = r[t];\n    o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n  }\n}\nfunction _createClass(e, r, t) {\n  return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n    writable: !1\n  }), e;\n}\nexport { _createClass as default };","function _setPrototypeOf(t, e) {\n  return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n    return t.__proto__ = e, t;\n  }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inherits(t, e) {\n  if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n  t.prototype = Object.create(e && e.prototype, {\n    constructor: {\n      value: t,\n      writable: !0,\n      configurable: !0\n    }\n  }), Object.defineProperty(t, \"prototype\", {\n    writable: !1\n  }), e && setPrototypeOf(t, e);\n}\nexport { _inherits as default };","function _getPrototypeOf(t) {\n  return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n    return t.__proto__ || Object.getPrototypeOf(t);\n  }, _getPrototypeOf(t);\n}\nexport { _getPrototypeOf as default };","function _isNativeReflectConstruct() {\n  try {\n    var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n  } catch (t) {}\n  return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n    return !!t;\n  })();\n}\nexport { _isNativeReflectConstruct as default };","function _assertThisInitialized(e) {\n  if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  return e;\n}\nexport { _assertThisInitialized as default };","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nfunction _possibleConstructorReturn(t, e) {\n  if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e;\n  if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\");\n  return assertThisInitialized(t);\n}\nexport { _possibleConstructorReturn as default };","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nfunction _createSuper(t) {\n  var r = isNativeReflectConstruct();\n  return function () {\n    var e,\n      o = getPrototypeOf(t);\n    if (r) {\n      var s = getPrototypeOf(this).constructor;\n      e = Reflect.construct(o, arguments, s);\n    } else e = o.apply(this, arguments);\n    return possibleConstructorReturn(this, e);\n  };\n}\nexport { _createSuper as default };","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\n/**\n * Fallback to findDOMNode if origin ref do not provide any dom element\n */\nvar DomWrapper = /*#__PURE__*/function (_React$Component) {\n  _inherits(DomWrapper, _React$Component);\n  var _super = _createSuper(DomWrapper);\n  function DomWrapper() {\n    _classCallCheck(this, DomWrapper);\n    return _super.apply(this, arguments);\n  }\n  _createClass(DomWrapper, [{\n    key: \"render\",\n    value: function render() {\n      return this.props.children;\n    }\n  }]);\n  return DomWrapper;\n}(React.Component);\nexport { DomWrapper as default };","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport findDOMNode from \"rc-util/es/Dom/findDOMNode\";\nimport { supportRef, useComposeRef, getNodeRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport { CollectionContext } from \"../Collection\";\nimport { observe, unobserve } from \"../utils/observerUtil\";\nimport DomWrapper from \"./DomWrapper\";\nfunction SingleObserver(props, ref) {\n  var children = props.children,\n    disabled = props.disabled;\n  var elementRef = React.useRef(null);\n  var wrapperRef = React.useRef(null);\n  var onCollectionResize = React.useContext(CollectionContext);\n\n  // =========================== Children ===========================\n  var isRenderProps = typeof children === 'function';\n  var mergedChildren = isRenderProps ? children(elementRef) : children;\n\n  // ============================= Size =============================\n  var sizeRef = React.useRef({\n    width: -1,\n    height: -1,\n    offsetWidth: -1,\n    offsetHeight: -1\n  });\n\n  // ============================= Ref ==============================\n  var canRef = !isRenderProps && /*#__PURE__*/React.isValidElement(mergedChildren) && supportRef(mergedChildren);\n  var originRef = canRef ? getNodeRef(mergedChildren) : null;\n  var mergedRef = useComposeRef(originRef, elementRef);\n  var getDom = function getDom() {\n    var _elementRef$current;\n    return findDOMNode(elementRef.current) || (\n    // Support `nativeElement` format\n    elementRef.current && _typeof(elementRef.current) === 'object' ? findDOMNode((_elementRef$current = elementRef.current) === null || _elementRef$current === void 0 ? void 0 : _elementRef$current.nativeElement) : null) || findDOMNode(wrapperRef.current);\n  };\n  React.useImperativeHandle(ref, function () {\n    return getDom();\n  });\n\n  // =========================== Observe ============================\n  var propsRef = React.useRef(props);\n  propsRef.current = props;\n\n  // Handler\n  var onInternalResize = React.useCallback(function (target) {\n    var _propsRef$current = propsRef.current,\n      onResize = _propsRef$current.onResize,\n      data = _propsRef$current.data;\n    var _target$getBoundingCl = target.getBoundingClientRect(),\n      width = _target$getBoundingCl.width,\n      height = _target$getBoundingCl.height;\n    var offsetWidth = target.offsetWidth,\n      offsetHeight = target.offsetHeight;\n\n    /**\n     * Resize observer trigger when content size changed.\n     * In most case we just care about element size,\n     * let's use `boundary` instead of `contentRect` here to avoid shaking.\n     */\n    var fixedWidth = Math.floor(width);\n    var fixedHeight = Math.floor(height);\n    if (sizeRef.current.width !== fixedWidth || sizeRef.current.height !== fixedHeight || sizeRef.current.offsetWidth !== offsetWidth || sizeRef.current.offsetHeight !== offsetHeight) {\n      var size = {\n        width: fixedWidth,\n        height: fixedHeight,\n        offsetWidth: offsetWidth,\n        offsetHeight: offsetHeight\n      };\n      sizeRef.current = size;\n\n      // IE is strange, right?\n      var mergedOffsetWidth = offsetWidth === Math.round(width) ? width : offsetWidth;\n      var mergedOffsetHeight = offsetHeight === Math.round(height) ? height : offsetHeight;\n      var sizeInfo = _objectSpread(_objectSpread({}, size), {}, {\n        offsetWidth: mergedOffsetWidth,\n        offsetHeight: mergedOffsetHeight\n      });\n\n      // Let collection know what happened\n      onCollectionResize === null || onCollectionResize === void 0 || onCollectionResize(sizeInfo, target, data);\n      if (onResize) {\n        // defer the callback but not defer to next frame\n        Promise.resolve().then(function () {\n          onResize(sizeInfo, target);\n        });\n      }\n    }\n  }, []);\n\n  // Dynamic observe\n  React.useEffect(function () {\n    var currentElement = getDom();\n    if (currentElement && !disabled) {\n      observe(currentElement, onInternalResize);\n    }\n    return function () {\n      return unobserve(currentElement, onInternalResize);\n    };\n  }, [elementRef.current, disabled]);\n\n  // ============================ Render ============================\n  return /*#__PURE__*/React.createElement(DomWrapper, {\n    ref: wrapperRef\n  }, canRef ? /*#__PURE__*/React.cloneElement(mergedChildren, {\n    ref: mergedRef\n  }) : mergedChildren);\n}\nvar RefSingleObserver = /*#__PURE__*/React.forwardRef(SingleObserver);\nif (process.env.NODE_ENV !== 'production') {\n  RefSingleObserver.displayName = 'SingleObserver';\n}\nexport default RefSingleObserver;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport { warning } from \"rc-util/es/warning\";\nimport SingleObserver from \"./SingleObserver\";\nimport { Collection } from \"./Collection\";\nvar INTERNAL_PREFIX_KEY = 'rc-observer-key';\nimport { _rs } from \"./utils/observerUtil\";\nexport { /** @private Test only for mock trigger resize event */\n_rs };\nfunction ResizeObserver(props, ref) {\n  var children = props.children;\n  var childNodes = typeof children === 'function' ? [children] : toArray(children);\n  if (process.env.NODE_ENV !== 'production') {\n    if (childNodes.length > 1) {\n      warning(false, 'Find more than one child node with `children` in ResizeObserver. Please use ResizeObserver.Collection instead.');\n    } else if (childNodes.length === 0) {\n      warning(false, '`children` of ResizeObserver is empty. Nothing is in observe.');\n    }\n  }\n  return childNodes.map(function (child, index) {\n    var key = (child === null || child === void 0 ? void 0 : child.key) || \"\".concat(INTERNAL_PREFIX_KEY, \"-\").concat(index);\n    return /*#__PURE__*/React.createElement(SingleObserver, _extends({}, props, {\n      key: key,\n      ref: index === 0 ? ref : undefined\n    }), child);\n  });\n}\nvar RefResizeObserver = /*#__PURE__*/React.forwardRef(ResizeObserver);\nif (process.env.NODE_ENV !== 'production') {\n  RefResizeObserver.displayName = 'ResizeObserver';\n}\nRefResizeObserver.Collection = Collection;\nexport default RefResizeObserver;","function _arrayLikeToArray(r, a) {\n  (null == a || a > r.length) && (a = r.length);\n  for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n  return n;\n}\nexport { _arrayLikeToArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _arrayWithoutHoles(r) {\n  if (Array.isArray(r)) return arrayLikeToArray(r);\n}\nexport { _arrayWithoutHoles as default };","function _iterableToArray(r) {\n  if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nexport { _iterableToArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n  if (r) {\n    if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n    var t = {}.toString.call(r).slice(8, -1);\n    return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n  }\n}\nexport { _unsupportedIterableToArray as default };","function _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableSpread as default };","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nfunction _toConsumableArray(r) {\n  return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();\n}\nexport { _toConsumableArray as default };","var raf = function raf(callback) {\n  return +setTimeout(callback, 16);\n};\nvar caf = function caf(num) {\n  return clearTimeout(num);\n};\nif (typeof window !== 'undefined' && 'requestAnimationFrame' in window) {\n  raf = function raf(callback) {\n    return window.requestAnimationFrame(callback);\n  };\n  caf = function caf(handle) {\n    return window.cancelAnimationFrame(handle);\n  };\n}\nvar rafUUID = 0;\nvar rafIds = new Map();\nfunction cleanup(id) {\n  rafIds.delete(id);\n}\nvar wrapperRaf = function wrapperRaf(callback) {\n  var times = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n  rafUUID += 1;\n  var id = rafUUID;\n  function callRef(leftTimes) {\n    if (leftTimes === 0) {\n      // Clean up\n      cleanup(id);\n\n      // Trigger\n      callback();\n    } else {\n      // Next raf\n      var realId = raf(function () {\n        callRef(leftTimes - 1);\n      });\n\n      // Bind real raf id\n      rafIds.set(id, realId);\n    }\n  }\n  callRef(times);\n  return id;\n};\nwrapperRaf.cancel = function (id) {\n  var realId = rafIds.get(id);\n  cleanup(id);\n  return caf(realId);\n};\nif (process.env.NODE_ENV !== 'production') {\n  wrapperRaf.ids = function () {\n    return rafIds;\n  };\n}\nexport default wrapperRaf;","function _arrayWithHoles(r) {\n  if (Array.isArray(r)) return r;\n}\nexport { _arrayWithHoles as default };","function _iterableToArrayLimit(r, l) {\n  var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n  if (null != t) {\n    var e,\n      n,\n      i,\n      u,\n      a = [],\n      f = !0,\n      o = !1;\n    try {\n      if (i = (t = t.call(r)).next, 0 === l) {\n        if (Object(t) !== t) return;\n        f = !1;\n      } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n    } catch (r) {\n      o = !0, n = r;\n    } finally {\n      try {\n        if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n      } finally {\n        if (o) throw n;\n      }\n    }\n    return a;\n  }\n}\nexport { _iterableToArrayLimit as default };","function _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableRest as default };","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nfunction _slicedToArray(r, e) {\n  return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();\n}\nexport { _slicedToArray as default };","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n  // 'm' and 'r' are mixing constants generated offline.\n  // They're not really 'magic', they just happen to work well.\n  // const m = 0x5bd1e995;\n  // const r = 24;\n  // Initialize the hash\n  var h = 0; // Mix 4 bytes at a time into the hash\n\n  var k,\n      i = 0,\n      len = str.length;\n\n  for (; len >= 4; ++i, len -= 4) {\n    k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n    k =\n    /* Math.imul(k, m): */\n    (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n    k ^=\n    /* k >>> r: */\n    k >>> 24;\n    h =\n    /* Math.imul(k, m): */\n    (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n    /* Math.imul(h, m): */\n    (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  } // Handle the last few bytes of the input array\n\n\n  switch (len) {\n    case 3:\n      h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n    case 2:\n      h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n    case 1:\n      h ^= str.charCodeAt(i) & 0xff;\n      h =\n      /* Math.imul(h, m): */\n      (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  } // Do a few final mixes of the hash to ensure the last few\n  // bytes are well-incorporated.\n\n\n  h ^= h >>> 13;\n  h =\n  /* Math.imul(h, m): */\n  (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport default murmur2;\n","export default function canUseDom() {\n  return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n}","export default function contains(root, n) {\n  if (!root) {\n    return false;\n  }\n\n  // Use native if support\n  if (root.contains) {\n    return root.contains(n);\n  }\n\n  // `document.contains` not support with IE11\n  var node = n;\n  while (node) {\n    if (node === root) {\n      return true;\n    }\n    node = node.parentNode;\n  }\n  return false;\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport canUseDom from \"./canUseDom\";\nimport contains from \"./contains\";\nvar APPEND_ORDER = 'data-rc-order';\nvar APPEND_PRIORITY = 'data-rc-priority';\nvar MARK_KEY = \"rc-util-key\";\nvar containerCache = new Map();\nfunction getMark() {\n  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n    mark = _ref.mark;\n  if (mark) {\n    return mark.startsWith('data-') ? mark : \"data-\".concat(mark);\n  }\n  return MARK_KEY;\n}\nfunction getContainer(option) {\n  if (option.attachTo) {\n    return option.attachTo;\n  }\n  var head = document.querySelector('head');\n  return head || document.body;\n}\nfunction getOrder(prepend) {\n  if (prepend === 'queue') {\n    return 'prependQueue';\n  }\n  return prepend ? 'prepend' : 'append';\n}\n\n/**\n * Find style which inject by rc-util\n */\nfunction findStyles(container) {\n  return Array.from((containerCache.get(container) || container).children).filter(function (node) {\n    return node.tagName === 'STYLE';\n  });\n}\nexport function injectCSS(css) {\n  var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  if (!canUseDom()) {\n    return null;\n  }\n  var csp = option.csp,\n    prepend = option.prepend,\n    _option$priority = option.priority,\n    priority = _option$priority === void 0 ? 0 : _option$priority;\n  var mergedOrder = getOrder(prepend);\n  var isPrependQueue = mergedOrder === 'prependQueue';\n  var styleNode = document.createElement('style');\n  styleNode.setAttribute(APPEND_ORDER, mergedOrder);\n  if (isPrependQueue && priority) {\n    styleNode.setAttribute(APPEND_PRIORITY, \"\".concat(priority));\n  }\n  if (csp !== null && csp !== void 0 && csp.nonce) {\n    styleNode.nonce = csp === null || csp === void 0 ? void 0 : csp.nonce;\n  }\n  styleNode.innerHTML = css;\n  var container = getContainer(option);\n  var firstChild = container.firstChild;\n  if (prepend) {\n    // If is queue `prepend`, it will prepend first style and then append rest style\n    if (isPrependQueue) {\n      var existStyle = (option.styles || findStyles(container)).filter(function (node) {\n        // Ignore style which not injected by rc-util with prepend\n        if (!['prepend', 'prependQueue'].includes(node.getAttribute(APPEND_ORDER))) {\n          return false;\n        }\n\n        // Ignore style which priority less then new style\n        var nodePriority = Number(node.getAttribute(APPEND_PRIORITY) || 0);\n        return priority >= nodePriority;\n      });\n      if (existStyle.length) {\n        container.insertBefore(styleNode, existStyle[existStyle.length - 1].nextSibling);\n        return styleNode;\n      }\n    }\n\n    // Use `insertBefore` as `prepend`\n    container.insertBefore(styleNode, firstChild);\n  } else {\n    container.appendChild(styleNode);\n  }\n  return styleNode;\n}\nfunction findExistNode(key) {\n  var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var container = getContainer(option);\n  return (option.styles || findStyles(container)).find(function (node) {\n    return node.getAttribute(getMark(option)) === key;\n  });\n}\nexport function removeCSS(key) {\n  var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var existNode = findExistNode(key, option);\n  if (existNode) {\n    var container = getContainer(option);\n    container.removeChild(existNode);\n  }\n}\n\n/**\n * qiankun will inject `appendChild` to insert into other\n */\nfunction syncRealContainer(container, option) {\n  var cachedRealContainer = containerCache.get(container);\n\n  // Find real container when not cached or cached container removed\n  if (!cachedRealContainer || !contains(document, cachedRealContainer)) {\n    var placeholderStyle = injectCSS('', option);\n    var parentNode = placeholderStyle.parentNode;\n    containerCache.set(container, parentNode);\n    container.removeChild(placeholderStyle);\n  }\n}\n\n/**\n * manually clear container cache to avoid global cache in unit testes\n */\nexport function clearContainerCache() {\n  containerCache.clear();\n}\nexport function updateCSS(css, key) {\n  var originOption = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  var container = getContainer(originOption);\n  var styles = findStyles(container);\n  var option = _objectSpread(_objectSpread({}, originOption), {}, {\n    styles: styles\n  });\n\n  // Sync real parent\n  syncRealContainer(container, option);\n  var existNode = findExistNode(key, option);\n  if (existNode) {\n    var _option$csp, _option$csp2;\n    if ((_option$csp = option.csp) !== null && _option$csp !== void 0 && _option$csp.nonce && existNode.nonce !== ((_option$csp2 = option.csp) === null || _option$csp2 === void 0 ? void 0 : _option$csp2.nonce)) {\n      var _option$csp3;\n      existNode.nonce = (_option$csp3 = option.csp) === null || _option$csp3 === void 0 ? void 0 : _option$csp3.nonce;\n    }\n    if (existNode.innerHTML !== css) {\n      existNode.innerHTML = css;\n    }\n    return existNode;\n  }\n  var newNode = injectCSS(css, option);\n  newNode.setAttribute(getMark(option), key);\n  return newNode;\n}","function _objectWithoutPropertiesLoose(r, e) {\n  if (null == r) return {};\n  var t = {};\n  for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n    if (-1 !== e.indexOf(n)) continue;\n    t[n] = r[n];\n  }\n  return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nfunction _objectWithoutProperties(e, t) {\n  if (null == e) return {};\n  var o,\n    r,\n    i = objectWithoutPropertiesLoose(e, t);\n  if (Object.getOwnPropertySymbols) {\n    var n = Object.getOwnPropertySymbols(e);\n    for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n  }\n  return i;\n}\nexport { _objectWithoutProperties as default };","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport warning from \"./warning\";\n\n/**\n * Deeply compares two object literals.\n * @param obj1 object 1\n * @param obj2 object 2\n * @param shallow shallow compare\n * @returns\n */\nfunction isEqual(obj1, obj2) {\n  var shallow = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n  // https://github.com/mapbox/mapbox-gl-js/pull/5979/files#diff-fde7145050c47cc3a306856efd5f9c3016e86e859de9afbd02c879be5067e58f\n  var refSet = new Set();\n  function deepEqual(a, b) {\n    var level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n    var circular = refSet.has(a);\n    warning(!circular, 'Warning: There may be circular references');\n    if (circular) {\n      return false;\n    }\n    if (a === b) {\n      return true;\n    }\n    if (shallow && level > 1) {\n      return false;\n    }\n    refSet.add(a);\n    var newLevel = level + 1;\n    if (Array.isArray(a)) {\n      if (!Array.isArray(b) || a.length !== b.length) {\n        return false;\n      }\n      for (var i = 0; i < a.length; i++) {\n        if (!deepEqual(a[i], b[i], newLevel)) {\n          return false;\n        }\n      }\n      return true;\n    }\n    if (a && b && _typeof(a) === 'object' && _typeof(b) === 'object') {\n      var keys = Object.keys(a);\n      if (keys.length !== Object.keys(b).length) {\n        return false;\n      }\n      return keys.every(function (key) {\n        return deepEqual(a[key], b[key], newLevel);\n      });\n    }\n    // other\n    return false;\n  }\n  return deepEqual(obj1, obj2);\n}\nexport default isEqual;","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n// [times, realValue]\n\nvar SPLIT = '%';\n\n/** Connect key with `SPLIT` */\nexport function pathKey(keys) {\n  return keys.join(SPLIT);\n}\nvar Entity = /*#__PURE__*/function () {\n  function Entity(instanceId) {\n    _classCallCheck(this, Entity);\n    _defineProperty(this, \"instanceId\", void 0);\n    /** @private Internal cache map. Do not access this directly */\n    _defineProperty(this, \"cache\", new Map());\n    this.instanceId = instanceId;\n  }\n  _createClass(Entity, [{\n    key: \"get\",\n    value: function get(keys) {\n      return this.opGet(pathKey(keys));\n    }\n\n    /** A fast get cache with `get` concat. */\n  }, {\n    key: \"opGet\",\n    value: function opGet(keyPathStr) {\n      return this.cache.get(keyPathStr) || null;\n    }\n  }, {\n    key: \"update\",\n    value: function update(keys, valueFn) {\n      return this.opUpdate(pathKey(keys), valueFn);\n    }\n\n    /** A fast get cache with `get` concat. */\n  }, {\n    key: \"opUpdate\",\n    value: function opUpdate(keyPathStr, valueFn) {\n      var prevValue = this.cache.get(keyPathStr);\n      var nextValue = valueFn(prevValue);\n      if (nextValue === null) {\n        this.cache.delete(keyPathStr);\n      } else {\n        this.cache.set(keyPathStr, nextValue);\n      }\n    }\n  }]);\n  return Entity;\n}();\nexport default Entity;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"children\"];\nimport useMemo from \"rc-util/es/hooks/useMemo\";\nimport isEqual from \"rc-util/es/isEqual\";\nimport * as React from 'react';\nimport CacheEntity from \"./Cache\";\nexport var ATTR_TOKEN = 'data-token-hash';\nexport var ATTR_MARK = 'data-css-hash';\nexport var ATTR_CACHE_PATH = 'data-cache-path';\n\n// Mark css-in-js instance in style element\nexport var CSS_IN_JS_INSTANCE = '__cssinjs_instance__';\nexport function createCache() {\n  var cssinjsInstanceId = Math.random().toString(12).slice(2);\n\n  // Tricky SSR: Move all inline style to the head.\n  // PS: We do not recommend tricky mode.\n  if (typeof document !== 'undefined' && document.head && document.body) {\n    var styles = document.body.querySelectorAll(\"style[\".concat(ATTR_MARK, \"]\")) || [];\n    var firstChild = document.head.firstChild;\n    Array.from(styles).forEach(function (style) {\n      style[CSS_IN_JS_INSTANCE] = style[CSS_IN_JS_INSTANCE] || cssinjsInstanceId;\n\n      // Not force move if no head\n      if (style[CSS_IN_JS_INSTANCE] === cssinjsInstanceId) {\n        document.head.insertBefore(style, firstChild);\n      }\n    });\n\n    // Deduplicate of moved styles\n    var styleHash = {};\n    Array.from(document.querySelectorAll(\"style[\".concat(ATTR_MARK, \"]\"))).forEach(function (style) {\n      var hash = style.getAttribute(ATTR_MARK);\n      if (styleHash[hash]) {\n        if (style[CSS_IN_JS_INSTANCE] === cssinjsInstanceId) {\n          var _style$parentNode;\n          (_style$parentNode = style.parentNode) === null || _style$parentNode === void 0 || _style$parentNode.removeChild(style);\n        }\n      } else {\n        styleHash[hash] = true;\n      }\n    });\n  }\n  return new CacheEntity(cssinjsInstanceId);\n}\nvar StyleContext = /*#__PURE__*/React.createContext({\n  hashPriority: 'low',\n  cache: createCache(),\n  defaultCache: true\n});\nexport var StyleProvider = function StyleProvider(props) {\n  var children = props.children,\n    restProps = _objectWithoutProperties(props, _excluded);\n  var parentContext = React.useContext(StyleContext);\n  var context = useMemo(function () {\n    var mergedContext = _objectSpread({}, parentContext);\n    Object.keys(restProps).forEach(function (key) {\n      var value = restProps[key];\n      if (restProps[key] !== undefined) {\n        mergedContext[key] = value;\n      }\n    });\n    var cache = restProps.cache;\n    mergedContext.cache = mergedContext.cache || createCache();\n    mergedContext.defaultCache = !cache && parentContext.defaultCache;\n    return mergedContext;\n  }, [parentContext, restProps], function (prev, next) {\n    return !isEqual(prev[0], next[0], true) || !isEqual(prev[1], next[1], true);\n  });\n  return /*#__PURE__*/React.createElement(StyleContext.Provider, {\n    value: context\n  }, children);\n};\nexport default StyleContext;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n// ================================== Cache ==================================\n\nexport function sameDerivativeOption(left, right) {\n  if (left.length !== right.length) {\n    return false;\n  }\n  for (var i = 0; i < left.length; i++) {\n    if (left[i] !== right[i]) {\n      return false;\n    }\n  }\n  return true;\n}\nvar ThemeCache = /*#__PURE__*/function () {\n  function ThemeCache() {\n    _classCallCheck(this, ThemeCache);\n    _defineProperty(this, \"cache\", void 0);\n    _defineProperty(this, \"keys\", void 0);\n    _defineProperty(this, \"cacheCallTimes\", void 0);\n    this.cache = new Map();\n    this.keys = [];\n    this.cacheCallTimes = 0;\n  }\n  _createClass(ThemeCache, [{\n    key: \"size\",\n    value: function size() {\n      return this.keys.length;\n    }\n  }, {\n    key: \"internalGet\",\n    value: function internalGet(derivativeOption) {\n      var _cache2, _cache3;\n      var updateCallTimes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      var cache = {\n        map: this.cache\n      };\n      derivativeOption.forEach(function (derivative) {\n        if (!cache) {\n          cache = undefined;\n        } else {\n          var _cache;\n          cache = (_cache = cache) === null || _cache === void 0 || (_cache = _cache.map) === null || _cache === void 0 ? void 0 : _cache.get(derivative);\n        }\n      });\n      if ((_cache2 = cache) !== null && _cache2 !== void 0 && _cache2.value && updateCallTimes) {\n        cache.value[1] = this.cacheCallTimes++;\n      }\n      return (_cache3 = cache) === null || _cache3 === void 0 ? void 0 : _cache3.value;\n    }\n  }, {\n    key: \"get\",\n    value: function get(derivativeOption) {\n      var _this$internalGet;\n      return (_this$internalGet = this.internalGet(derivativeOption, true)) === null || _this$internalGet === void 0 ? void 0 : _this$internalGet[0];\n    }\n  }, {\n    key: \"has\",\n    value: function has(derivativeOption) {\n      return !!this.internalGet(derivativeOption);\n    }\n  }, {\n    key: \"set\",\n    value: function set(derivativeOption, value) {\n      var _this = this;\n      // New cache\n      if (!this.has(derivativeOption)) {\n        if (this.size() + 1 > ThemeCache.MAX_CACHE_SIZE + ThemeCache.MAX_CACHE_OFFSET) {\n          var _this$keys$reduce = this.keys.reduce(function (result, key) {\n              var _result = _slicedToArray(result, 2),\n                callTimes = _result[1];\n              if (_this.internalGet(key)[1] < callTimes) {\n                return [key, _this.internalGet(key)[1]];\n              }\n              return result;\n            }, [this.keys[0], this.cacheCallTimes]),\n            _this$keys$reduce2 = _slicedToArray(_this$keys$reduce, 1),\n            targetKey = _this$keys$reduce2[0];\n          this.delete(targetKey);\n        }\n        this.keys.push(derivativeOption);\n      }\n      var cache = this.cache;\n      derivativeOption.forEach(function (derivative, index) {\n        if (index === derivativeOption.length - 1) {\n          cache.set(derivative, {\n            value: [value, _this.cacheCallTimes++]\n          });\n        } else {\n          var cacheValue = cache.get(derivative);\n          if (!cacheValue) {\n            cache.set(derivative, {\n              map: new Map()\n            });\n          } else if (!cacheValue.map) {\n            cacheValue.map = new Map();\n          }\n          cache = cache.get(derivative).map;\n        }\n      });\n    }\n  }, {\n    key: \"deleteByPath\",\n    value: function deleteByPath(currentCache, derivatives) {\n      var cache = currentCache.get(derivatives[0]);\n      if (derivatives.length === 1) {\n        var _cache$value;\n        if (!cache.map) {\n          currentCache.delete(derivatives[0]);\n        } else {\n          currentCache.set(derivatives[0], {\n            map: cache.map\n          });\n        }\n        return (_cache$value = cache.value) === null || _cache$value === void 0 ? void 0 : _cache$value[0];\n      }\n      var result = this.deleteByPath(cache.map, derivatives.slice(1));\n      if ((!cache.map || cache.map.size === 0) && !cache.value) {\n        currentCache.delete(derivatives[0]);\n      }\n      return result;\n    }\n  }, {\n    key: \"delete\",\n    value: function _delete(derivativeOption) {\n      // If cache exists\n      if (this.has(derivativeOption)) {\n        this.keys = this.keys.filter(function (item) {\n          return !sameDerivativeOption(item, derivativeOption);\n        });\n        return this.deleteByPath(this.cache, derivativeOption);\n      }\n      return undefined;\n    }\n  }]);\n  return ThemeCache;\n}();\n_defineProperty(ThemeCache, \"MAX_CACHE_SIZE\", 20);\n_defineProperty(ThemeCache, \"MAX_CACHE_OFFSET\", 5);\nexport { ThemeCache as default };","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { warning } from \"rc-util/es/warning\";\nvar uuid = 0;\n\n/**\n * Theme with algorithms to derive tokens from design tokens.\n * Use `createTheme` first which will help to manage the theme instance cache.\n */\nvar Theme = /*#__PURE__*/function () {\n  function Theme(derivatives) {\n    _classCallCheck(this, Theme);\n    _defineProperty(this, \"derivatives\", void 0);\n    _defineProperty(this, \"id\", void 0);\n    this.derivatives = Array.isArray(derivatives) ? derivatives : [derivatives];\n    this.id = uuid;\n    if (derivatives.length === 0) {\n      warning(derivatives.length > 0, '[Ant Design CSS-in-JS] Theme should have at least one derivative function.');\n    }\n    uuid += 1;\n  }\n  _createClass(Theme, [{\n    key: \"getDerivativeToken\",\n    value: function getDerivativeToken(token) {\n      return this.derivatives.reduce(function (result, derivative) {\n        return derivative(token, result);\n      }, undefined);\n    }\n  }]);\n  return Theme;\n}();\nexport { Theme as default };","import ThemeCache from \"./ThemeCache\";\nimport Theme from \"./Theme\";\nvar cacheThemes = new ThemeCache();\n\n/**\n * Same as new Theme, but will always return same one if `derivative` not changed.\n */\nexport default function createTheme(derivatives) {\n  var derivativeArr = Array.isArray(derivatives) ? derivatives : [derivatives];\n  // Create new theme if not exist\n  if (!cacheThemes.has(derivativeArr)) {\n    cacheThemes.set(derivativeArr, new Theme(derivativeArr));\n  }\n\n  // Get theme from cache and return\n  return cacheThemes.get(derivativeArr);\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport hash from '@emotion/hash';\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\nimport { removeCSS, updateCSS } from \"rc-util/es/Dom/dynamicCSS\";\nimport { ATTR_MARK, ATTR_TOKEN } from \"../StyleContext\";\nimport { Theme } from \"../theme\";\n\n// Create a cache for memo concat\n\nvar resultCache = new WeakMap();\nvar RESULT_VALUE = {};\nexport function memoResult(callback, deps) {\n  var current = resultCache;\n  for (var i = 0; i < deps.length; i += 1) {\n    var dep = deps[i];\n    if (!current.has(dep)) {\n      current.set(dep, new WeakMap());\n    }\n    current = current.get(dep);\n  }\n  if (!current.has(RESULT_VALUE)) {\n    current.set(RESULT_VALUE, callback());\n  }\n  return current.get(RESULT_VALUE);\n}\n\n// Create a cache here to avoid always loop generate\nvar flattenTokenCache = new WeakMap();\n\n/**\n * Flatten token to string, this will auto cache the result when token not change\n */\nexport function flattenToken(token) {\n  var str = flattenTokenCache.get(token) || '';\n  if (!str) {\n    Object.keys(token).forEach(function (key) {\n      var value = token[key];\n      str += key;\n      if (value instanceof Theme) {\n        str += value.id;\n      } else if (value && _typeof(value) === 'object') {\n        str += flattenToken(value);\n      } else {\n        str += value;\n      }\n    });\n\n    // https://github.com/ant-design/ant-design/issues/48386\n    // Should hash the string to avoid style tag name too long\n    str = hash(str);\n\n    // Put in cache\n    flattenTokenCache.set(token, str);\n  }\n  return str;\n}\n\n/**\n * Convert derivative token to key string\n */\nexport function token2key(token, salt) {\n  return hash(\"\".concat(salt, \"_\").concat(flattenToken(token)));\n}\nvar randomSelectorKey = \"random-\".concat(Date.now(), \"-\").concat(Math.random()).replace(/\\./g, '');\n\n// Magic `content` for detect selector support\nvar checkContent = '_bAmBoO_';\nfunction supportSelector(styleStr, handleElement, supportCheck) {\n  if (canUseDom()) {\n    var _getComputedStyle$con, _ele$parentNode;\n    updateCSS(styleStr, randomSelectorKey);\n    var _ele = document.createElement('div');\n    _ele.style.position = 'fixed';\n    _ele.style.left = '0';\n    _ele.style.top = '0';\n    handleElement === null || handleElement === void 0 || handleElement(_ele);\n    document.body.appendChild(_ele);\n    if (process.env.NODE_ENV !== 'production') {\n      _ele.innerHTML = 'Test';\n      _ele.style.zIndex = '9999999';\n    }\n    var support = supportCheck ? supportCheck(_ele) : (_getComputedStyle$con = getComputedStyle(_ele).content) === null || _getComputedStyle$con === void 0 ? void 0 : _getComputedStyle$con.includes(checkContent);\n    (_ele$parentNode = _ele.parentNode) === null || _ele$parentNode === void 0 || _ele$parentNode.removeChild(_ele);\n    removeCSS(randomSelectorKey);\n    return support;\n  }\n  return false;\n}\nvar canLayer = undefined;\nexport function supportLayer() {\n  if (canLayer === undefined) {\n    canLayer = supportSelector(\"@layer \".concat(randomSelectorKey, \" { .\").concat(randomSelectorKey, \" { content: \\\"\").concat(checkContent, \"\\\"!important; } }\"), function (ele) {\n      ele.className = randomSelectorKey;\n    });\n  }\n  return canLayer;\n}\nvar canWhere = undefined;\nexport function supportWhere() {\n  if (canWhere === undefined) {\n    canWhere = supportSelector(\":where(.\".concat(randomSelectorKey, \") { content: \\\"\").concat(checkContent, \"\\\"!important; }\"), function (ele) {\n      ele.className = randomSelectorKey;\n    });\n  }\n  return canWhere;\n}\nvar canLogic = undefined;\nexport function supportLogicProps() {\n  if (canLogic === undefined) {\n    canLogic = supportSelector(\".\".concat(randomSelectorKey, \" { inset-block: 93px !important; }\"), function (ele) {\n      ele.className = randomSelectorKey;\n    }, function (ele) {\n      return getComputedStyle(ele).bottom === '93px';\n    });\n  }\n  return canLogic;\n}\nexport var isClientSide = canUseDom();\nexport function unit(num) {\n  if (typeof num === 'number') {\n    return \"\".concat(num, \"px\");\n  }\n  return num;\n}\nexport function toStyleStr(style, tokenKey, styleId) {\n  var _objectSpread2;\n  var customizeAttrs = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  var plain = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n  if (plain) {\n    return style;\n  }\n  var attrs = _objectSpread(_objectSpread({}, customizeAttrs), {}, (_objectSpread2 = {}, _defineProperty(_objectSpread2, ATTR_TOKEN, tokenKey), _defineProperty(_objectSpread2, ATTR_MARK, styleId), _objectSpread2));\n  var attrStr = Object.keys(attrs).map(function (attr) {\n    var val = attrs[attr];\n    return val ? \"\".concat(attr, \"=\\\"\").concat(val, \"\\\"\") : null;\n  }).filter(function (v) {\n    return v;\n  }).join(' ');\n  return \"<style \".concat(attrStr, \">\").concat(style, \"</style>\");\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nexport var token2CSSVar = function token2CSSVar(token) {\n  var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n  return \"--\".concat(prefix ? \"\".concat(prefix, \"-\") : '').concat(token).replace(/([a-z0-9])([A-Z])/g, '$1-$2').replace(/([A-Z]+)([A-Z][a-z0-9]+)/g, '$1-$2').replace(/([a-z])([A-Z0-9])/g, '$1-$2').toLowerCase();\n};\nexport var serializeCSSVar = function serializeCSSVar(cssVars, hashId, options) {\n  if (!Object.keys(cssVars).length) {\n    return '';\n  }\n  return \".\".concat(hashId).concat(options !== null && options !== void 0 && options.scope ? \".\".concat(options.scope) : '', \"{\").concat(Object.entries(cssVars).map(function (_ref) {\n    var _ref2 = _slicedToArray(_ref, 2),\n      key = _ref2[0],\n      value = _ref2[1];\n    return \"\".concat(key, \":\").concat(value, \";\");\n  }).join(''), \"}\");\n};\nexport var transformToken = function transformToken(token, themeKey, config) {\n  var cssVars = {};\n  var result = {};\n  Object.entries(token).forEach(function (_ref3) {\n    var _config$preserve, _config$ignore;\n    var _ref4 = _slicedToArray(_ref3, 2),\n      key = _ref4[0],\n      value = _ref4[1];\n    if (config !== null && config !== void 0 && (_config$preserve = config.preserve) !== null && _config$preserve !== void 0 && _config$preserve[key]) {\n      result[key] = value;\n    } else if ((typeof value === 'string' || typeof value === 'number') && !(config !== null && config !== void 0 && (_config$ignore = config.ignore) !== null && _config$ignore !== void 0 && _config$ignore[key])) {\n      var _config$unitless;\n      var cssVar = token2CSSVar(key, config === null || config === void 0 ? void 0 : config.prefix);\n      cssVars[cssVar] = typeof value === 'number' && !(config !== null && config !== void 0 && (_config$unitless = config.unitless) !== null && _config$unitless !== void 0 && _config$unitless[key]) ? \"\".concat(value, \"px\") : String(value);\n      result[key] = \"var(\".concat(cssVar, \")\");\n    }\n  });\n  return [result, serializeCSSVar(cssVars, themeKey, {\n    scope: config === null || config === void 0 ? void 0 : config.scope\n  })];\n};","import * as React from 'react';\nimport canUseDom from \"../Dom/canUseDom\";\n\n/**\n * Wrap `React.useLayoutEffect` which will not throw warning message in test env\n */\nvar useInternalLayoutEffect = process.env.NODE_ENV !== 'test' && canUseDom() ? React.useLayoutEffect : React.useEffect;\nvar useLayoutEffect = function useLayoutEffect(callback, deps) {\n  var firstMountRef = React.useRef(true);\n  useInternalLayoutEffect(function () {\n    return callback(firstMountRef.current);\n  }, deps);\n\n  // We tell react that first mount has passed\n  useInternalLayoutEffect(function () {\n    firstMountRef.current = false;\n    return function () {\n      firstMountRef.current = true;\n    };\n  }, []);\n};\nexport var useLayoutUpdateEffect = function useLayoutUpdateEffect(callback, deps) {\n  useLayoutEffect(function (firstMount) {\n    if (!firstMount) {\n      return callback();\n    }\n  }, deps);\n};\nexport default useLayoutEffect;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// import canUseDom from 'rc-util/lib/Dom/canUseDom';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport * as React from 'react';\n\n// We need fully clone React function here\n// to avoid webpack warning React 17 do not export `useId`\nvar fullClone = _objectSpread({}, React);\nvar useInsertionEffect = fullClone.useInsertionEffect;\n/**\n * Polyfill `useInsertionEffect` for React < 18\n * @param renderEffect will be executed in `useMemo`, and do not have callback\n * @param effect will be executed in `useLayoutEffect`\n * @param deps\n */\nvar useInsertionEffectPolyfill = function useInsertionEffectPolyfill(renderEffect, effect, deps) {\n  React.useMemo(renderEffect, deps);\n  useLayoutEffect(function () {\n    return effect(true);\n  }, deps);\n};\n\n/**\n * Compatible `useInsertionEffect`\n * will use `useInsertionEffect` if React version >= 18,\n * otherwise use `useInsertionEffectPolyfill`.\n */\nvar useCompatibleInsertionEffect = useInsertionEffect ? function (renderEffect, effect, deps) {\n  return useInsertionEffect(function () {\n    renderEffect();\n    return effect();\n  }, deps);\n} : useInsertionEffectPolyfill;\nexport default useCompatibleInsertionEffect;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport { warning } from \"rc-util/es/warning\";\nimport * as React from 'react';\nvar fullClone = _objectSpread({}, React);\nvar useInsertionEffect = fullClone.useInsertionEffect;\n\n// DO NOT register functions in useEffect cleanup function, or functions that registered will never be called.\nvar useCleanupRegister = function useCleanupRegister(deps) {\n  var effectCleanups = [];\n  var cleanupFlag = false;\n  function register(fn) {\n    if (cleanupFlag) {\n      if (process.env.NODE_ENV !== 'production') {\n        warning(false, '[Ant Design CSS-in-JS] You are registering a cleanup function after unmount, which will not have any effect.');\n      }\n      return;\n    }\n    effectCleanups.push(fn);\n  }\n  React.useEffect(function () {\n    // Compatible with strict mode\n    cleanupFlag = false;\n    return function () {\n      cleanupFlag = true;\n      if (effectCleanups.length) {\n        effectCleanups.forEach(function (fn) {\n          return fn();\n        });\n      }\n    };\n  }, deps);\n  return register;\n};\nvar useRun = function useRun() {\n  return function (fn) {\n    fn();\n  };\n};\n\n// Only enable register in React 18\nvar useEffectCleanupRegister = typeof useInsertionEffect !== 'undefined' ? useCleanupRegister : useRun;\nexport default useEffectCleanupRegister;","function useProdHMR() {\n  return false;\n}\nvar webpackHMR = false;\nfunction useDevHMR() {\n  return webpackHMR;\n}\nexport default process.env.NODE_ENV === 'production' ? useProdHMR : useDevHMR;\n\n// Webpack `module.hot.accept` do not support any deps update trigger\n// We have to hack handler to force mark as HRM\nif (process.env.NODE_ENV !== 'production' && typeof module !== 'undefined' && module && module.hot && typeof window !== 'undefined') {\n  // Use `globalThis` first, and `window` for older browsers\n  // const win = globalThis as any;\n  var win = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : null;\n  if (win && typeof win.webpackHotUpdate === 'function') {\n    var originWebpackHotUpdate = win.webpackHotUpdate;\n    win.webpackHotUpdate = function () {\n      webpackHMR = true;\n      setTimeout(function () {\n        webpackHMR = false;\n      }, 0);\n      return originWebpackHotUpdate.apply(void 0, arguments);\n    };\n  }\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nimport { pathKey } from \"../Cache\";\nimport StyleContext from \"../StyleContext\";\nimport useCompatibleInsertionEffect from \"./useCompatibleInsertionEffect\";\nimport useEffectCleanupRegister from \"./useEffectCleanupRegister\";\nimport useHMR from \"./useHMR\";\nexport default function useGlobalCache(prefix, keyPath, cacheFn, onCacheRemove,\n// Add additional effect trigger by `useInsertionEffect`\nonCacheEffect) {\n  var _React$useContext = React.useContext(StyleContext),\n    globalCache = _React$useContext.cache;\n  var fullPath = [prefix].concat(_toConsumableArray(keyPath));\n  var fullPathStr = pathKey(fullPath);\n  var register = useEffectCleanupRegister([fullPathStr]);\n  var HMRUpdate = useHMR();\n  var buildCache = function buildCache(updater) {\n    globalCache.opUpdate(fullPathStr, function (prevCache) {\n      var _ref = prevCache || [undefined, undefined],\n        _ref2 = _slicedToArray(_ref, 2),\n        _ref2$ = _ref2[0],\n        times = _ref2$ === void 0 ? 0 : _ref2$,\n        cache = _ref2[1];\n\n      // HMR should always ignore cache since developer may change it\n      var tmpCache = cache;\n      if (process.env.NODE_ENV !== 'production' && cache && HMRUpdate) {\n        onCacheRemove === null || onCacheRemove === void 0 || onCacheRemove(tmpCache, HMRUpdate);\n        tmpCache = null;\n      }\n      var mergedCache = tmpCache || cacheFn();\n      var data = [times, mergedCache];\n\n      // Call updater if need additional logic\n      return updater ? updater(data) : data;\n    });\n  };\n\n  // Create cache\n  React.useMemo(function () {\n    buildCache();\n  }, /* eslint-disable react-hooks/exhaustive-deps */\n  [fullPathStr]\n  /* eslint-enable */);\n\n  var cacheEntity = globalCache.opGet(fullPathStr);\n\n  // HMR clean the cache but not trigger `useMemo` again\n  // Let's fallback of this\n  // ref https://github.com/ant-design/cssinjs/issues/127\n  if (process.env.NODE_ENV !== 'production' && !cacheEntity) {\n    buildCache();\n    cacheEntity = globalCache.opGet(fullPathStr);\n  }\n  var cacheContent = cacheEntity[1];\n\n  // Remove if no need anymore\n  useCompatibleInsertionEffect(function () {\n    onCacheEffect === null || onCacheEffect === void 0 || onCacheEffect(cacheContent);\n  }, function (polyfill) {\n    // It's bad to call build again in effect.\n    // But we have to do this since StrictMode will call effect twice\n    // which will clear cache on the first time.\n    buildCache(function (_ref3) {\n      var _ref4 = _slicedToArray(_ref3, 2),\n        times = _ref4[0],\n        cache = _ref4[1];\n      if (polyfill && times === 0) {\n        onCacheEffect === null || onCacheEffect === void 0 || onCacheEffect(cacheContent);\n      }\n      return [times + 1, cache];\n    });\n    return function () {\n      globalCache.opUpdate(fullPathStr, function (prevCache) {\n        var _ref5 = prevCache || [],\n          _ref6 = _slicedToArray(_ref5, 2),\n          _ref6$ = _ref6[0],\n          times = _ref6$ === void 0 ? 0 : _ref6$,\n          cache = _ref6[1];\n        var nextCount = times - 1;\n        if (nextCount === 0) {\n          // Always remove styles in useEffect callback\n          register(function () {\n            // With polyfill, registered callback will always be called synchronously\n            // But without polyfill, it will be called in effect clean up,\n            // And by that time this cache is cleaned up.\n            if (polyfill || !globalCache.opGet(fullPathStr)) {\n              onCacheRemove === null || onCacheRemove === void 0 || onCacheRemove(cache, false);\n            }\n          });\n          return null;\n        }\n        return [times - 1, cache];\n      });\n    };\n  }, [fullPathStr]);\n  return cacheContent;\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport hash from '@emotion/hash';\nimport { updateCSS } from \"rc-util/es/Dom/dynamicCSS\";\nimport { useContext } from 'react';\nimport StyleContext, { ATTR_MARK, ATTR_TOKEN, CSS_IN_JS_INSTANCE } from \"../StyleContext\";\nimport { flattenToken, memoResult, token2key, toStyleStr } from \"../util\";\nimport { transformToken } from \"../util/css-variables\";\nimport useGlobalCache from \"./useGlobalCache\";\nvar EMPTY_OVERRIDE = {};\n\n// Generate different prefix to make user selector break in production env.\n// This helps developer not to do style override directly on the hash id.\nvar hashPrefix = process.env.NODE_ENV !== 'production' ? 'css-dev-only-do-not-override' : 'css';\nvar tokenKeys = new Map();\nfunction recordCleanToken(tokenKey) {\n  tokenKeys.set(tokenKey, (tokenKeys.get(tokenKey) || 0) + 1);\n}\nfunction removeStyleTags(key, instanceId) {\n  if (typeof document !== 'undefined') {\n    var styles = document.querySelectorAll(\"style[\".concat(ATTR_TOKEN, \"=\\\"\").concat(key, \"\\\"]\"));\n    styles.forEach(function (style) {\n      if (style[CSS_IN_JS_INSTANCE] === instanceId) {\n        var _style$parentNode;\n        (_style$parentNode = style.parentNode) === null || _style$parentNode === void 0 || _style$parentNode.removeChild(style);\n      }\n    });\n  }\n}\nvar TOKEN_THRESHOLD = 0;\n\n// Remove will check current keys first\nfunction cleanTokenStyle(tokenKey, instanceId) {\n  tokenKeys.set(tokenKey, (tokenKeys.get(tokenKey) || 0) - 1);\n  var tokenKeyList = Array.from(tokenKeys.keys());\n  var cleanableKeyList = tokenKeyList.filter(function (key) {\n    var count = tokenKeys.get(key) || 0;\n    return count <= 0;\n  });\n\n  // Should keep tokens under threshold for not to insert style too often\n  if (tokenKeyList.length - cleanableKeyList.length > TOKEN_THRESHOLD) {\n    cleanableKeyList.forEach(function (key) {\n      removeStyleTags(key, instanceId);\n      tokenKeys.delete(key);\n    });\n  }\n}\nexport var getComputedToken = function getComputedToken(originToken, overrideToken, theme, format) {\n  var derivativeToken = theme.getDerivativeToken(originToken);\n\n  // Merge with override\n  var mergedDerivativeToken = _objectSpread(_objectSpread({}, derivativeToken), overrideToken);\n\n  // Format if needed\n  if (format) {\n    mergedDerivativeToken = format(mergedDerivativeToken);\n  }\n  return mergedDerivativeToken;\n};\nexport var TOKEN_PREFIX = 'token';\n/**\n * Cache theme derivative token as global shared one\n * @param theme Theme entity\n * @param tokens List of tokens, used for cache. Please do not dynamic generate object directly\n * @param option Additional config\n * @returns Call Theme.getDerivativeToken(tokenObject) to get token\n */\nexport default function useCacheToken(theme, tokens) {\n  var option = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  var _useContext = useContext(StyleContext),\n    instanceId = _useContext.cache.instanceId,\n    container = _useContext.container;\n  var _option$salt = option.salt,\n    salt = _option$salt === void 0 ? '' : _option$salt,\n    _option$override = option.override,\n    override = _option$override === void 0 ? EMPTY_OVERRIDE : _option$override,\n    formatToken = option.formatToken,\n    compute = option.getComputedToken,\n    cssVar = option.cssVar;\n\n  // Basic - We do basic cache here\n  var mergedToken = memoResult(function () {\n    return Object.assign.apply(Object, [{}].concat(_toConsumableArray(tokens)));\n  }, tokens);\n  var tokenStr = flattenToken(mergedToken);\n  var overrideTokenStr = flattenToken(override);\n  var cssVarStr = cssVar ? flattenToken(cssVar) : '';\n  var cachedToken = useGlobalCache(TOKEN_PREFIX, [salt, theme.id, tokenStr, overrideTokenStr, cssVarStr], function () {\n    var _cssVar$key;\n    var mergedDerivativeToken = compute ? compute(mergedToken, override, theme) : getComputedToken(mergedToken, override, theme, formatToken);\n\n    // Replace token value with css variables\n    var actualToken = _objectSpread({}, mergedDerivativeToken);\n    var cssVarsStr = '';\n    if (!!cssVar) {\n      var _transformToken = transformToken(mergedDerivativeToken, cssVar.key, {\n        prefix: cssVar.prefix,\n        ignore: cssVar.ignore,\n        unitless: cssVar.unitless,\n        preserve: cssVar.preserve\n      });\n      var _transformToken2 = _slicedToArray(_transformToken, 2);\n      mergedDerivativeToken = _transformToken2[0];\n      cssVarsStr = _transformToken2[1];\n    }\n\n    // Optimize for `useStyleRegister` performance\n    var tokenKey = token2key(mergedDerivativeToken, salt);\n    mergedDerivativeToken._tokenKey = tokenKey;\n    actualToken._tokenKey = token2key(actualToken, salt);\n    var themeKey = (_cssVar$key = cssVar === null || cssVar === void 0 ? void 0 : cssVar.key) !== null && _cssVar$key !== void 0 ? _cssVar$key : tokenKey;\n    mergedDerivativeToken._themeKey = themeKey;\n    recordCleanToken(themeKey);\n    var hashId = \"\".concat(hashPrefix, \"-\").concat(hash(tokenKey));\n    mergedDerivativeToken._hashId = hashId; // Not used\n\n    return [mergedDerivativeToken, hashId, actualToken, cssVarsStr, (cssVar === null || cssVar === void 0 ? void 0 : cssVar.key) || ''];\n  }, function (cache) {\n    // Remove token will remove all related style\n    cleanTokenStyle(cache[0]._themeKey, instanceId);\n  }, function (_ref) {\n    var _ref2 = _slicedToArray(_ref, 4),\n      token = _ref2[0],\n      cssVarsStr = _ref2[3];\n    if (cssVar && cssVarsStr) {\n      var style = updateCSS(cssVarsStr, hash(\"css-variables-\".concat(token._themeKey)), {\n        mark: ATTR_MARK,\n        prepend: 'queue',\n        attachTo: container,\n        priority: -999\n      });\n      style[CSS_IN_JS_INSTANCE] = instanceId;\n\n      // Used for `useCacheToken` to remove on batch when token removed\n      style.setAttribute(ATTR_TOKEN, token._themeKey);\n    }\n  });\n  return cachedToken;\n}\nexport var extract = function extract(cache, effectStyles, options) {\n  var _cache = _slicedToArray(cache, 5),\n    realToken = _cache[2],\n    styleStr = _cache[3],\n    cssVarKey = _cache[4];\n  var _ref3 = options || {},\n    plain = _ref3.plain;\n  if (!styleStr) {\n    return null;\n  }\n  var styleId = realToken._tokenKey;\n  var order = -999;\n\n  // ====================== Style ======================\n  // Used for rc-util\n  var sharedAttrs = {\n    'data-rc-order': 'prependQueue',\n    'data-rc-priority': \"\".concat(order)\n  };\n  var styleText = toStyleStr(styleStr, cssVarKey, styleId, sharedAttrs, plain);\n  return [order, styleId, styleText];\n};","var unitlessKeys = {\n  animationIterationCount: 1,\n  borderImageOutset: 1,\n  borderImageSlice: 1,\n  borderImageWidth: 1,\n  boxFlex: 1,\n  boxFlexGroup: 1,\n  boxOrdinalGroup: 1,\n  columnCount: 1,\n  columns: 1,\n  flex: 1,\n  flexGrow: 1,\n  flexPositive: 1,\n  flexShrink: 1,\n  flexNegative: 1,\n  flexOrder: 1,\n  gridRow: 1,\n  gridRowEnd: 1,\n  gridRowSpan: 1,\n  gridRowStart: 1,\n  gridColumn: 1,\n  gridColumnEnd: 1,\n  gridColumnSpan: 1,\n  gridColumnStart: 1,\n  msGridRow: 1,\n  msGridRowSpan: 1,\n  msGridColumn: 1,\n  msGridColumnSpan: 1,\n  fontWeight: 1,\n  lineHeight: 1,\n  opacity: 1,\n  order: 1,\n  orphans: 1,\n  tabSize: 1,\n  widows: 1,\n  zIndex: 1,\n  zoom: 1,\n  WebkitLineClamp: 1,\n  // SVG-related properties\n  fillOpacity: 1,\n  floodOpacity: 1,\n  stopOpacity: 1,\n  strokeDasharray: 1,\n  strokeDashoffset: 1,\n  strokeMiterlimit: 1,\n  strokeOpacity: 1,\n  strokeWidth: 1\n};\n\nexport default unitlessKeys;\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\nexport var SCOPE = '@scope'\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @param {number} position\n * @return {number}\n */\nexport function indexof (value, search, position) {\n\treturn value.indexOf(search, position)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n\n/**\n * @param {string[]} array\n * @param {RegExp} pattern\n * @return {string[]}\n */\nexport function filter (array, pattern) {\n\treturn array.filter(function (value) { return !match(value, pattern) })\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {object[]} siblings\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length, siblings) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: '', siblings: siblings}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0, root.siblings), root, {length: -root.length}, props)\n}\n\n/**\n * @param {object} root\n */\nexport function lift (root) {\n\twhile (root.root)\n\t\troot = copy(root.root, {children: [root]})\n\n\tappend(root, root.siblings)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, token, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f', abs(index ? points[index - 1] : 0)) != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent, declarations), declarations)\n\t\t\t\t\t\tif ((token(previous || 1) == 5 || token(peek() || 1) == 5) && strlen(characters) && substr(characters, -1, void 0) !== ' ') characters += ' '\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length || (variable === 0 && previous === 47)))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1, declarations) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2, declarations), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length, rulesets), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tswitch (atrule) {\n\t\t\t\t\t\t\t\t\t// c(ontainer)\n\t\t\t\t\t\t\t\t\tcase 99:\n\t\t\t\t\t\t\t\t\t\tif (charat(characters, 3) === 110) break\n\t\t\t\t\t\t\t\t\t// l(ayer)\n\t\t\t\t\t\t\t\t\tcase 108:\n\t\t\t\t\t\t\t\t\t\tif (charat(characters, 2) === 97) break\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\toffset = 0\n\t\t\t\t\t\t\t\t\t// d(ocument) m(edia) s(upports)\n\t\t\t\t\t\t\t\t\tcase 100: case 109: case 115:\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (offset) parse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length, children), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\telse parse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @param {object[]} siblings\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length, siblings) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length, siblings)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @param {object[]} siblings\n * @return {object}\n */\nexport function comment (value, root, parent, siblings) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0, siblings)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @param {object[]} siblings\n * @return {object}\n */\nexport function declaration (value, root, parent, length, siblings) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length, siblings)\n}\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES, NAMESPACE} from './Enum.js'\nimport {strlen} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\n\tfor (var i = 0; i < children.length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case NAMESPACE: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: if (!strlen(element.value = element.props.join(','))) return ''\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import devWarning from \"rc-util/es/warning\";\nexport function lintWarning(message, info) {\n  var path = info.path,\n    parentSelectors = info.parentSelectors;\n  devWarning(false, \"[Ant Design CSS-in-JS] \".concat(path ? \"Error in \".concat(path, \": \") : '').concat(message).concat(parentSelectors.length ? \" Selector: \".concat(parentSelectors.join(' | ')) : ''));\n}","import { lintWarning } from \"./utils\";\nvar linter = function linter(key, value, info) {\n  if (key === 'content') {\n    // From emotion: https://github.com/emotion-js/emotion/blob/main/packages/serialize/src/index.js#L63\n    var contentValuePattern = /(attr|counters?|url|(((repeating-)?(linear|radial))|conic)-gradient)\\(|(no-)?(open|close)-quote/;\n    var contentValues = ['normal', 'none', 'initial', 'inherit', 'unset'];\n    if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n      lintWarning(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\".concat(value, \"\\\"'`.\"), info);\n    }\n  }\n};\nexport default linter;","import { lintWarning } from \"./utils\";\nvar linter = function linter(key, value, info) {\n  if (key === 'animation') {\n    if (info.hashId && value !== 'none') {\n      lintWarning(\"You seem to be using hashed animation '\".concat(value, \"', in which case 'animationName' with Keyframe as value is recommended.\"), info);\n    }\n  }\n};\nexport default linter;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\nimport { ATTR_MARK } from \"../StyleContext\";\nexport var ATTR_CACHE_MAP = 'data-ant-cssinjs-cache-path';\n\n/**\n * This marks style from the css file.\n * Which means not exist in `<style />` tag.\n */\nexport var CSS_FILE_STYLE = '_FILE_STYLE__';\nexport function serialize(cachePathMap) {\n  return Object.keys(cachePathMap).map(function (path) {\n    var hash = cachePathMap[path];\n    return \"\".concat(path, \":\").concat(hash);\n  }).join(';');\n}\nvar cachePathMap;\nvar fromCSSFile = true;\n\n/**\n * @private Test usage only. Can save remove if no need.\n */\nexport function reset(mockCache) {\n  var fromFile = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n  cachePathMap = mockCache;\n  fromCSSFile = fromFile;\n}\nexport function prepare() {\n  if (!cachePathMap) {\n    cachePathMap = {};\n    if (canUseDom()) {\n      var div = document.createElement('div');\n      div.className = ATTR_CACHE_MAP;\n      div.style.position = 'fixed';\n      div.style.visibility = 'hidden';\n      div.style.top = '-9999px';\n      document.body.appendChild(div);\n      var content = getComputedStyle(div).content || '';\n      content = content.replace(/^\"/, '').replace(/\"$/, '');\n\n      // Fill data\n      content.split(';').forEach(function (item) {\n        var _item$split = item.split(':'),\n          _item$split2 = _slicedToArray(_item$split, 2),\n          path = _item$split2[0],\n          hash = _item$split2[1];\n        cachePathMap[path] = hash;\n      });\n\n      // Remove inline record style\n      var inlineMapStyle = document.querySelector(\"style[\".concat(ATTR_CACHE_MAP, \"]\"));\n      if (inlineMapStyle) {\n        var _inlineMapStyle$paren;\n        fromCSSFile = false;\n        (_inlineMapStyle$paren = inlineMapStyle.parentNode) === null || _inlineMapStyle$paren === void 0 || _inlineMapStyle$paren.removeChild(inlineMapStyle);\n      }\n      document.body.removeChild(div);\n    }\n  }\n}\nexport function existPath(path) {\n  prepare();\n  return !!cachePathMap[path];\n}\nexport function getStyleAndHash(path) {\n  var hash = cachePathMap[path];\n  var styleStr = null;\n  if (hash && canUseDom()) {\n    if (fromCSSFile) {\n      styleStr = CSS_FILE_STYLE;\n    } else {\n      var _style = document.querySelector(\"style[\".concat(ATTR_MARK, \"=\\\"\").concat(cachePathMap[path], \"\\\"]\"));\n      if (_style) {\n        styleStr = _style.innerHTML;\n      } else {\n        // Clean up since not exist anymore\n        delete cachePathMap[path];\n      }\n    }\n  }\n  return [styleStr, hash];\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport hash from '@emotion/hash';\nimport { removeCSS, updateCSS } from \"rc-util/es/Dom/dynamicCSS\";\nimport * as React from 'react';\n// @ts-ignore\nimport unitless from '@emotion/unitless';\nimport { compile, serialize, stringify } from 'stylis';\nimport { contentQuotesLinter, hashedAnimationLinter } from \"../linters\";\nimport StyleContext, { ATTR_CACHE_PATH, ATTR_MARK, ATTR_TOKEN, CSS_IN_JS_INSTANCE } from \"../StyleContext\";\nimport { isClientSide, toStyleStr } from \"../util\";\nimport { CSS_FILE_STYLE, existPath, getStyleAndHash } from \"../util/cacheMapUtil\";\nimport useGlobalCache from \"./useGlobalCache\";\nvar SKIP_CHECK = '_skip_check_';\nvar MULTI_VALUE = '_multi_value_';\n// ============================================================================\n// ==                                 Parser                                 ==\n// ============================================================================\n// Preprocessor style content to browser support one\nexport function normalizeStyle(styleStr) {\n  var serialized = serialize(compile(styleStr), stringify);\n  return serialized.replace(/\\{%%%\\:[^;];}/g, ';');\n}\nfunction isCompoundCSSProperty(value) {\n  return _typeof(value) === 'object' && value && (SKIP_CHECK in value || MULTI_VALUE in value);\n}\n\n// 注入 hash 值\nfunction injectSelectorHash(key, hashId, hashPriority) {\n  if (!hashId) {\n    return key;\n  }\n  var hashClassName = \".\".concat(hashId);\n  var hashSelector = hashPriority === 'low' ? \":where(\".concat(hashClassName, \")\") : hashClassName;\n\n  // 注入 hashId\n  var keys = key.split(',').map(function (k) {\n    var _firstPath$match;\n    var fullPath = k.trim().split(/\\s+/);\n\n    // 如果 Selector 第一个是 HTML Element，那我们就插到它的后面。反之，就插到最前面。\n    var firstPath = fullPath[0] || '';\n    var htmlElement = ((_firstPath$match = firstPath.match(/^\\w+/)) === null || _firstPath$match === void 0 ? void 0 : _firstPath$match[0]) || '';\n    firstPath = \"\".concat(htmlElement).concat(hashSelector).concat(firstPath.slice(htmlElement.length));\n    return [firstPath].concat(_toConsumableArray(fullPath.slice(1))).join(' ');\n  });\n  return keys.join(',');\n}\n// Parse CSSObject to style content\nexport var parseStyle = function parseStyle(interpolation) {\n  var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n      root: true,\n      parentSelectors: []\n    },\n    root = _ref.root,\n    injectHash = _ref.injectHash,\n    parentSelectors = _ref.parentSelectors;\n  var hashId = config.hashId,\n    layer = config.layer,\n    path = config.path,\n    hashPriority = config.hashPriority,\n    _config$transformers = config.transformers,\n    transformers = _config$transformers === void 0 ? [] : _config$transformers,\n    _config$linters = config.linters,\n    linters = _config$linters === void 0 ? [] : _config$linters;\n  var styleStr = '';\n  var effectStyle = {};\n  function parseKeyframes(keyframes) {\n    var animationName = keyframes.getName(hashId);\n    if (!effectStyle[animationName]) {\n      var _parseStyle = parseStyle(keyframes.style, config, {\n          root: false,\n          parentSelectors: parentSelectors\n        }),\n        _parseStyle2 = _slicedToArray(_parseStyle, 1),\n        _parsedStr = _parseStyle2[0];\n      effectStyle[animationName] = \"@keyframes \".concat(keyframes.getName(hashId)).concat(_parsedStr);\n    }\n  }\n  function flattenList(list) {\n    var fullList = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n    list.forEach(function (item) {\n      if (Array.isArray(item)) {\n        flattenList(item, fullList);\n      } else if (item) {\n        fullList.push(item);\n      }\n    });\n    return fullList;\n  }\n  var flattenStyleList = flattenList(Array.isArray(interpolation) ? interpolation : [interpolation]);\n  flattenStyleList.forEach(function (originStyle) {\n    // Only root level can use raw string\n    var style = typeof originStyle === 'string' && !root ? {} : originStyle;\n    if (typeof style === 'string') {\n      styleStr += \"\".concat(style, \"\\n\");\n    } else if (style._keyframe) {\n      // Keyframe\n      parseKeyframes(style);\n    } else {\n      var mergedStyle = transformers.reduce(function (prev, trans) {\n        var _trans$visit;\n        return (trans === null || trans === void 0 || (_trans$visit = trans.visit) === null || _trans$visit === void 0 ? void 0 : _trans$visit.call(trans, prev)) || prev;\n      }, style);\n\n      // Normal CSSObject\n      Object.keys(mergedStyle).forEach(function (key) {\n        var value = mergedStyle[key];\n        if (_typeof(value) === 'object' && value && (key !== 'animationName' || !value._keyframe) && !isCompoundCSSProperty(value)) {\n          var subInjectHash = false;\n\n          // 当成嵌套对象来处理\n          var mergedKey = key.trim();\n          // Whether treat child as root. In most case it is false.\n          var nextRoot = false;\n\n          // 拆分多个选择器\n          if ((root || injectHash) && hashId) {\n            if (mergedKey.startsWith('@')) {\n              // 略过媒体查询，交给子节点继续插入 hashId\n              subInjectHash = true;\n            } else if (mergedKey === '&') {\n              // 抹掉 root selector 上的单个 &\n              mergedKey = injectSelectorHash('', hashId, hashPriority);\n            } else {\n              // 注入 hashId\n              mergedKey = injectSelectorHash(key, hashId, hashPriority);\n            }\n          } else if (root && !hashId && (mergedKey === '&' || mergedKey === '')) {\n            // In case of `{ '&': { a: { color: 'red' } } }` or `{ '': { a: { color: 'red' } } }` without hashId,\n            // we will get `&{a:{color:red;}}` or `{a:{color:red;}}` string for stylis to compile.\n            // But it does not conform to stylis syntax,\n            // and finally we will get `{color:red;}` as css, which is wrong.\n            // So we need to remove key in root, and treat child `{ a: { color: 'red' } }` as root.\n            mergedKey = '';\n            nextRoot = true;\n          }\n          var _parseStyle3 = parseStyle(value, config, {\n              root: nextRoot,\n              injectHash: subInjectHash,\n              parentSelectors: [].concat(_toConsumableArray(parentSelectors), [mergedKey])\n            }),\n            _parseStyle4 = _slicedToArray(_parseStyle3, 2),\n            _parsedStr2 = _parseStyle4[0],\n            childEffectStyle = _parseStyle4[1];\n          effectStyle = _objectSpread(_objectSpread({}, effectStyle), childEffectStyle);\n          styleStr += \"\".concat(mergedKey).concat(_parsedStr2);\n        } else {\n          var _value;\n          function appendStyle(cssKey, cssValue) {\n            if (process.env.NODE_ENV !== 'production' && (_typeof(value) !== 'object' || !(value !== null && value !== void 0 && value[SKIP_CHECK]))) {\n              [contentQuotesLinter, hashedAnimationLinter].concat(_toConsumableArray(linters)).forEach(function (linter) {\n                return linter(cssKey, cssValue, {\n                  path: path,\n                  hashId: hashId,\n                  parentSelectors: parentSelectors\n                });\n              });\n            }\n\n            // 如果是样式则直接插入\n            var styleName = cssKey.replace(/[A-Z]/g, function (match) {\n              return \"-\".concat(match.toLowerCase());\n            });\n\n            // Auto suffix with px\n            var formatValue = cssValue;\n            if (!unitless[cssKey] && typeof formatValue === 'number' && formatValue !== 0) {\n              formatValue = \"\".concat(formatValue, \"px\");\n            }\n\n            // handle animationName & Keyframe value\n            if (cssKey === 'animationName' && cssValue !== null && cssValue !== void 0 && cssValue._keyframe) {\n              parseKeyframes(cssValue);\n              formatValue = cssValue.getName(hashId);\n            }\n            styleStr += \"\".concat(styleName, \":\").concat(formatValue, \";\");\n          }\n          var actualValue = (_value = value === null || value === void 0 ? void 0 : value.value) !== null && _value !== void 0 ? _value : value;\n          if (_typeof(value) === 'object' && value !== null && value !== void 0 && value[MULTI_VALUE] && Array.isArray(actualValue)) {\n            actualValue.forEach(function (item) {\n              appendStyle(key, item);\n            });\n          } else {\n            appendStyle(key, actualValue);\n          }\n        }\n      });\n    }\n  });\n  if (!root) {\n    styleStr = \"{\".concat(styleStr, \"}\");\n  } else if (layer) {\n    // fixme: https://github.com/thysultan/stylis/pull/339\n    if (styleStr) {\n      styleStr = \"@layer \".concat(layer.name, \" {\").concat(styleStr, \"}\");\n    }\n    if (layer.dependencies) {\n      effectStyle[\"@layer \".concat(layer.name)] = layer.dependencies.map(function (deps) {\n        return \"@layer \".concat(deps, \", \").concat(layer.name, \";\");\n      }).join('\\n');\n    }\n  }\n  return [styleStr, effectStyle];\n};\n\n// ============================================================================\n// ==                                Register                                ==\n// ============================================================================\nexport function uniqueHash(path, styleStr) {\n  return hash(\"\".concat(path.join('%')).concat(styleStr));\n}\nfunction Empty() {\n  return null;\n}\nexport var STYLE_PREFIX = 'style';\n/**\n * Register a style to the global style sheet.\n */\nexport default function useStyleRegister(info, styleFn) {\n  var token = info.token,\n    path = info.path,\n    hashId = info.hashId,\n    layer = info.layer,\n    nonce = info.nonce,\n    clientOnly = info.clientOnly,\n    _info$order = info.order,\n    order = _info$order === void 0 ? 0 : _info$order;\n  var _React$useContext = React.useContext(StyleContext),\n    autoClear = _React$useContext.autoClear,\n    mock = _React$useContext.mock,\n    defaultCache = _React$useContext.defaultCache,\n    hashPriority = _React$useContext.hashPriority,\n    container = _React$useContext.container,\n    ssrInline = _React$useContext.ssrInline,\n    transformers = _React$useContext.transformers,\n    linters = _React$useContext.linters,\n    cache = _React$useContext.cache,\n    enableLayer = _React$useContext.layer;\n  var tokenKey = token._tokenKey;\n  var fullPath = [tokenKey];\n  if (enableLayer) {\n    fullPath.push('layer');\n  }\n  fullPath.push.apply(fullPath, _toConsumableArray(path));\n\n  // Check if need insert style\n  var isMergedClientSide = isClientSide;\n  if (process.env.NODE_ENV !== 'production' && mock !== undefined) {\n    isMergedClientSide = mock === 'client';\n  }\n  var _useGlobalCache = useGlobalCache(STYLE_PREFIX, fullPath,\n    // Create cache if needed\n    function () {\n      var cachePath = fullPath.join('|');\n\n      // Get style from SSR inline style directly\n      if (existPath(cachePath)) {\n        var _getStyleAndHash = getStyleAndHash(cachePath),\n          _getStyleAndHash2 = _slicedToArray(_getStyleAndHash, 2),\n          inlineCacheStyleStr = _getStyleAndHash2[0],\n          styleHash = _getStyleAndHash2[1];\n        if (inlineCacheStyleStr) {\n          return [inlineCacheStyleStr, tokenKey, styleHash, {}, clientOnly, order];\n        }\n      }\n\n      // Generate style\n      var styleObj = styleFn();\n      var _parseStyle5 = parseStyle(styleObj, {\n          hashId: hashId,\n          hashPriority: hashPriority,\n          layer: enableLayer ? layer : undefined,\n          path: path.join('-'),\n          transformers: transformers,\n          linters: linters\n        }),\n        _parseStyle6 = _slicedToArray(_parseStyle5, 2),\n        parsedStyle = _parseStyle6[0],\n        effectStyle = _parseStyle6[1];\n      var styleStr = normalizeStyle(parsedStyle);\n      var styleId = uniqueHash(fullPath, styleStr);\n      return [styleStr, tokenKey, styleId, effectStyle, clientOnly, order];\n    },\n    // Remove cache if no need\n    function (_ref2, fromHMR) {\n      var _ref3 = _slicedToArray(_ref2, 3),\n        styleId = _ref3[2];\n      if ((fromHMR || autoClear) && isClientSide) {\n        removeCSS(styleId, {\n          mark: ATTR_MARK\n        });\n      }\n    },\n    // Effect: Inject style here\n    function (_ref4) {\n      var _ref5 = _slicedToArray(_ref4, 4),\n        styleStr = _ref5[0],\n        _ = _ref5[1],\n        styleId = _ref5[2],\n        effectStyle = _ref5[3];\n      if (isMergedClientSide && styleStr !== CSS_FILE_STYLE) {\n        var mergedCSSConfig = {\n          mark: ATTR_MARK,\n          prepend: enableLayer ? false : 'queue',\n          attachTo: container,\n          priority: order\n        };\n        var nonceStr = typeof nonce === 'function' ? nonce() : nonce;\n        if (nonceStr) {\n          mergedCSSConfig.csp = {\n            nonce: nonceStr\n          };\n        }\n\n        // ================= Split Effect Style =================\n        // We will split effectStyle here since @layer should be at the top level\n        var effectLayerKeys = [];\n        var effectRestKeys = [];\n        Object.keys(effectStyle).forEach(function (key) {\n          if (key.startsWith('@layer')) {\n            effectLayerKeys.push(key);\n          } else {\n            effectRestKeys.push(key);\n          }\n        });\n\n        // ================= Inject Layer Style =================\n        // Inject layer style\n        effectLayerKeys.forEach(function (effectKey) {\n          updateCSS(normalizeStyle(effectStyle[effectKey]), \"_layer-\".concat(effectKey), _objectSpread(_objectSpread({}, mergedCSSConfig), {}, {\n            prepend: true\n          }));\n        });\n\n        // ==================== Inject Style ====================\n        // Inject style\n        var style = updateCSS(styleStr, styleId, mergedCSSConfig);\n        style[CSS_IN_JS_INSTANCE] = cache.instanceId;\n\n        // Used for `useCacheToken` to remove on batch when token removed\n        style.setAttribute(ATTR_TOKEN, tokenKey);\n\n        // Debug usage. Dev only\n        if (process.env.NODE_ENV !== 'production') {\n          style.setAttribute(ATTR_CACHE_PATH, fullPath.join('|'));\n        }\n\n        // ================ Inject Effect Style =================\n        // Inject client side effect style\n        effectRestKeys.forEach(function (effectKey) {\n          updateCSS(normalizeStyle(effectStyle[effectKey]), \"_effect-\".concat(effectKey), mergedCSSConfig);\n        });\n      }\n    }),\n    _useGlobalCache2 = _slicedToArray(_useGlobalCache, 3),\n    cachedStyleStr = _useGlobalCache2[0],\n    cachedTokenKey = _useGlobalCache2[1],\n    cachedStyleId = _useGlobalCache2[2];\n  return function (node) {\n    var styleNode;\n    if (!ssrInline || isMergedClientSide || !defaultCache) {\n      styleNode = /*#__PURE__*/React.createElement(Empty, null);\n    } else {\n      var _ref6;\n      styleNode = /*#__PURE__*/React.createElement(\"style\", _extends({}, (_ref6 = {}, _defineProperty(_ref6, ATTR_TOKEN, cachedTokenKey), _defineProperty(_ref6, ATTR_MARK, cachedStyleId), _ref6), {\n        dangerouslySetInnerHTML: {\n          __html: cachedStyleStr\n        }\n      }));\n    }\n    return /*#__PURE__*/React.createElement(React.Fragment, null, styleNode, node);\n  };\n}\nexport var extract = function extract(cache, effectStyles, options) {\n  var _cache = _slicedToArray(cache, 6),\n    styleStr = _cache[0],\n    tokenKey = _cache[1],\n    styleId = _cache[2],\n    effectStyle = _cache[3],\n    clientOnly = _cache[4],\n    order = _cache[5];\n  var _ref7 = options || {},\n    plain = _ref7.plain;\n\n  // Skip client only style\n  if (clientOnly) {\n    return null;\n  }\n  var keyStyleText = styleStr;\n\n  // ====================== Share ======================\n  // Used for rc-util\n  var sharedAttrs = {\n    'data-rc-order': 'prependQueue',\n    'data-rc-priority': \"\".concat(order)\n  };\n\n  // ====================== Style ======================\n  keyStyleText = toStyleStr(styleStr, tokenKey, styleId, sharedAttrs, plain);\n\n  // =============== Create effect style ===============\n  if (effectStyle) {\n    Object.keys(effectStyle).forEach(function (effectKey) {\n      // Effect style can be reused\n      if (!effectStyles[effectKey]) {\n        effectStyles[effectKey] = true;\n        var effectStyleStr = normalizeStyle(effectStyle[effectKey]);\n        var effectStyleHTML = toStyleStr(effectStyleStr, tokenKey, \"_effect-\".concat(effectKey), sharedAttrs, plain);\n        if (effectKey.startsWith('@layer')) {\n          keyStyleText = effectStyleHTML + keyStyleText;\n        } else {\n          keyStyleText += effectStyleHTML;\n        }\n      }\n    });\n  }\n  return [order, styleId, keyStyleText];\n};","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport { removeCSS, updateCSS } from \"rc-util/es/Dom/dynamicCSS\";\nimport { useContext } from 'react';\nimport StyleContext, { ATTR_MARK, ATTR_TOKEN, CSS_IN_JS_INSTANCE } from \"../StyleContext\";\nimport { isClientSide, toStyleStr } from \"../util\";\nimport { transformToken } from \"../util/css-variables\";\nimport useGlobalCache from \"./useGlobalCache\";\nimport { uniqueHash } from \"./useStyleRegister\";\nexport var CSS_VAR_PREFIX = 'cssVar';\nvar useCSSVarRegister = function useCSSVarRegister(config, fn) {\n  var key = config.key,\n    prefix = config.prefix,\n    unitless = config.unitless,\n    ignore = config.ignore,\n    token = config.token,\n    _config$scope = config.scope,\n    scope = _config$scope === void 0 ? '' : _config$scope;\n  var _useContext = useContext(StyleContext),\n    instanceId = _useContext.cache.instanceId,\n    container = _useContext.container;\n  var tokenKey = token._tokenKey;\n  var stylePath = [].concat(_toConsumableArray(config.path), [key, scope, tokenKey]);\n  var cache = useGlobalCache(CSS_VAR_PREFIX, stylePath, function () {\n    var originToken = fn();\n    var _transformToken = transformToken(originToken, key, {\n        prefix: prefix,\n        unitless: unitless,\n        ignore: ignore,\n        scope: scope\n      }),\n      _transformToken2 = _slicedToArray(_transformToken, 2),\n      mergedToken = _transformToken2[0],\n      cssVarsStr = _transformToken2[1];\n    var styleId = uniqueHash(stylePath, cssVarsStr);\n    return [mergedToken, cssVarsStr, styleId, key];\n  }, function (_ref) {\n    var _ref2 = _slicedToArray(_ref, 3),\n      styleId = _ref2[2];\n    if (isClientSide) {\n      removeCSS(styleId, {\n        mark: ATTR_MARK\n      });\n    }\n  }, function (_ref3) {\n    var _ref4 = _slicedToArray(_ref3, 3),\n      cssVarsStr = _ref4[1],\n      styleId = _ref4[2];\n    if (!cssVarsStr) {\n      return;\n    }\n    var style = updateCSS(cssVarsStr, styleId, {\n      mark: ATTR_MARK,\n      prepend: 'queue',\n      attachTo: container,\n      priority: -999\n    });\n    style[CSS_IN_JS_INSTANCE] = instanceId;\n\n    // Used for `useCacheToken` to remove on batch when token removed\n    style.setAttribute(ATTR_TOKEN, key);\n  });\n  return cache;\n};\nexport var extract = function extract(cache, effectStyles, options) {\n  var _cache = _slicedToArray(cache, 4),\n    styleStr = _cache[1],\n    styleId = _cache[2],\n    cssVarKey = _cache[3];\n  var _ref5 = options || {},\n    plain = _ref5.plain;\n  if (!styleStr) {\n    return null;\n  }\n  var order = -999;\n\n  // ====================== Style ======================\n  // Used for rc-util\n  var sharedAttrs = {\n    'data-rc-order': 'prependQueue',\n    'data-rc-priority': \"\".concat(order)\n  };\n  var styleText = toStyleStr(styleStr, cssVarKey, styleId, sharedAttrs, plain);\n  return [order, styleId, styleText];\n};\nexport default useCSSVarRegister;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar _ExtractStyleFns;\nimport { extract as tokenExtractStyle, TOKEN_PREFIX } from \"./hooks/useCacheToken\";\nimport { CSS_VAR_PREFIX, extract as cssVarExtractStyle } from \"./hooks/useCSSVarRegister\";\nimport { extract as styleExtractStyle, STYLE_PREFIX } from \"./hooks/useStyleRegister\";\nimport { toStyleStr } from \"./util\";\nimport { ATTR_CACHE_MAP, serialize as serializeCacheMap } from \"./util/cacheMapUtil\";\nvar ExtractStyleFns = (_ExtractStyleFns = {}, _defineProperty(_ExtractStyleFns, STYLE_PREFIX, styleExtractStyle), _defineProperty(_ExtractStyleFns, TOKEN_PREFIX, tokenExtractStyle), _defineProperty(_ExtractStyleFns, CSS_VAR_PREFIX, cssVarExtractStyle), _ExtractStyleFns);\nfunction isNotNull(value) {\n  return value !== null;\n}\nexport default function extractStyle(cache, options) {\n  var _ref = typeof options === 'boolean' ? {\n      plain: options\n    } : options || {},\n    _ref$plain = _ref.plain,\n    plain = _ref$plain === void 0 ? false : _ref$plain,\n    _ref$types = _ref.types,\n    types = _ref$types === void 0 ? ['style', 'token', 'cssVar'] : _ref$types;\n  var matchPrefixRegexp = new RegExp(\"^(\".concat((typeof types === 'string' ? [types] : types).join('|'), \")%\"));\n\n  // prefix with `style` is used for `useStyleRegister` to cache style context\n  var styleKeys = Array.from(cache.cache.keys()).filter(function (key) {\n    return matchPrefixRegexp.test(key);\n  });\n\n  // Common effect styles like animation\n  var effectStyles = {};\n\n  // Mapping of cachePath to style hash\n  var cachePathMap = {};\n  var styleText = '';\n  styleKeys.map(function (key) {\n    var cachePath = key.replace(matchPrefixRegexp, '').replace(/%/g, '|');\n    var _key$split = key.split('%'),\n      _key$split2 = _slicedToArray(_key$split, 1),\n      prefix = _key$split2[0];\n    var extractFn = ExtractStyleFns[prefix];\n    var extractedStyle = extractFn(cache.cache.get(key)[1], effectStyles, {\n      plain: plain\n    });\n    if (!extractedStyle) {\n      return null;\n    }\n    var _extractedStyle = _slicedToArray(extractedStyle, 3),\n      order = _extractedStyle[0],\n      styleId = _extractedStyle[1],\n      styleStr = _extractedStyle[2];\n    if (key.startsWith('style')) {\n      cachePathMap[cachePath] = styleId;\n    }\n    return [order, styleStr];\n  }).filter(isNotNull).sort(function (_ref2, _ref3) {\n    var _ref4 = _slicedToArray(_ref2, 1),\n      o1 = _ref4[0];\n    var _ref5 = _slicedToArray(_ref3, 1),\n      o2 = _ref5[0];\n    return o1 - o2;\n  }).forEach(function (_ref6) {\n    var _ref7 = _slicedToArray(_ref6, 2),\n      style = _ref7[1];\n    styleText += style;\n  });\n\n  // ==================== Fill Cache Path ====================\n  styleText += toStyleStr(\".\".concat(ATTR_CACHE_MAP, \"{content:\\\"\").concat(serializeCacheMap(cachePathMap), \"\\\";}\"), undefined, undefined, _defineProperty({}, ATTR_CACHE_MAP, ATTR_CACHE_MAP), plain);\n  return styleText;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar Keyframe = /*#__PURE__*/function () {\n  function Keyframe(name, style) {\n    _classCallCheck(this, Keyframe);\n    _defineProperty(this, \"name\", void 0);\n    _defineProperty(this, \"style\", void 0);\n    _defineProperty(this, \"_keyframe\", true);\n    this.name = name;\n    this.style = style;\n  }\n  _createClass(Keyframe, [{\n    key: \"getName\",\n    value: function getName() {\n      var hashId = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n      return hashId ? \"\".concat(hashId, \"-\").concat(this.name) : this.name;\n    }\n  }]);\n  return Keyframe;\n}();\nexport default Keyframe;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nfunction splitValues(value) {\n  if (typeof value === 'number') {\n    return [[value], false];\n  }\n  var rawStyle = String(value).trim();\n  var importantCells = rawStyle.match(/(.*)(!important)/);\n  var splitStyle = (importantCells ? importantCells[1] : rawStyle).trim().split(/\\s+/);\n\n  // Combine styles split in brackets, like `calc(1px + 2px)`\n  var temp = [];\n  var brackets = 0;\n  return [splitStyle.reduce(function (list, item) {\n    if (item.includes('(') || item.includes(')')) {\n      var left = item.split('(').length - 1;\n      var right = item.split(')').length - 1;\n      brackets += left - right;\n    }\n    if (brackets >= 0) temp.push(item);\n    if (brackets === 0) {\n      list.push(temp.join(' '));\n      temp = [];\n    }\n    return list;\n  }, []), !!importantCells];\n}\nfunction noSplit(list) {\n  list.notSplit = true;\n  return list;\n}\nvar keyMap = {\n  // Inset\n  inset: ['top', 'right', 'bottom', 'left'],\n  insetBlock: ['top', 'bottom'],\n  insetBlockStart: ['top'],\n  insetBlockEnd: ['bottom'],\n  insetInline: ['left', 'right'],\n  insetInlineStart: ['left'],\n  insetInlineEnd: ['right'],\n  // Margin\n  marginBlock: ['marginTop', 'marginBottom'],\n  marginBlockStart: ['marginTop'],\n  marginBlockEnd: ['marginBottom'],\n  marginInline: ['marginLeft', 'marginRight'],\n  marginInlineStart: ['marginLeft'],\n  marginInlineEnd: ['marginRight'],\n  // Padding\n  paddingBlock: ['paddingTop', 'paddingBottom'],\n  paddingBlockStart: ['paddingTop'],\n  paddingBlockEnd: ['paddingBottom'],\n  paddingInline: ['paddingLeft', 'paddingRight'],\n  paddingInlineStart: ['paddingLeft'],\n  paddingInlineEnd: ['paddingRight'],\n  // Border\n  borderBlock: noSplit(['borderTop', 'borderBottom']),\n  borderBlockStart: noSplit(['borderTop']),\n  borderBlockEnd: noSplit(['borderBottom']),\n  borderInline: noSplit(['borderLeft', 'borderRight']),\n  borderInlineStart: noSplit(['borderLeft']),\n  borderInlineEnd: noSplit(['borderRight']),\n  // Border width\n  borderBlockWidth: ['borderTopWidth', 'borderBottomWidth'],\n  borderBlockStartWidth: ['borderTopWidth'],\n  borderBlockEndWidth: ['borderBottomWidth'],\n  borderInlineWidth: ['borderLeftWidth', 'borderRightWidth'],\n  borderInlineStartWidth: ['borderLeftWidth'],\n  borderInlineEndWidth: ['borderRightWidth'],\n  // Border style\n  borderBlockStyle: ['borderTopStyle', 'borderBottomStyle'],\n  borderBlockStartStyle: ['borderTopStyle'],\n  borderBlockEndStyle: ['borderBottomStyle'],\n  borderInlineStyle: ['borderLeftStyle', 'borderRightStyle'],\n  borderInlineStartStyle: ['borderLeftStyle'],\n  borderInlineEndStyle: ['borderRightStyle'],\n  // Border color\n  borderBlockColor: ['borderTopColor', 'borderBottomColor'],\n  borderBlockStartColor: ['borderTopColor'],\n  borderBlockEndColor: ['borderBottomColor'],\n  borderInlineColor: ['borderLeftColor', 'borderRightColor'],\n  borderInlineStartColor: ['borderLeftColor'],\n  borderInlineEndColor: ['borderRightColor'],\n  // Border radius\n  borderStartStartRadius: ['borderTopLeftRadius'],\n  borderStartEndRadius: ['borderTopRightRadius'],\n  borderEndStartRadius: ['borderBottomLeftRadius'],\n  borderEndEndRadius: ['borderBottomRightRadius']\n};\nfunction wrapImportantAndSkipCheck(value, important) {\n  var parsedValue = value;\n  if (important) {\n    parsedValue = \"\".concat(parsedValue, \" !important\");\n  }\n  return {\n    _skip_check_: true,\n    value: parsedValue\n  };\n}\n\n/**\n * Convert css logical properties to legacy properties.\n * Such as: `margin-block-start` to `margin-top`.\n * Transform list:\n * - inset\n * - margin\n * - padding\n * - border\n */\nvar transform = {\n  visit: function visit(cssObj) {\n    var clone = {};\n    Object.keys(cssObj).forEach(function (key) {\n      var value = cssObj[key];\n      var matchValue = keyMap[key];\n      if (matchValue && (typeof value === 'number' || typeof value === 'string')) {\n        var _splitValues = splitValues(value),\n          _splitValues2 = _slicedToArray(_splitValues, 2),\n          _values = _splitValues2[0],\n          _important = _splitValues2[1];\n        if (matchValue.length && matchValue.notSplit) {\n          // not split means always give same value like border\n          matchValue.forEach(function (matchKey) {\n            clone[matchKey] = wrapImportantAndSkipCheck(value, _important);\n          });\n        } else if (matchValue.length === 1) {\n          // Handle like `marginBlockStart` => `marginTop`\n          clone[matchValue[0]] = wrapImportantAndSkipCheck(_values[0], _important);\n        } else if (matchValue.length === 2) {\n          // Handle like `marginBlock` => `marginTop` & `marginBottom`\n          matchValue.forEach(function (matchKey, index) {\n            var _values$index;\n            clone[matchKey] = wrapImportantAndSkipCheck((_values$index = _values[index]) !== null && _values$index !== void 0 ? _values$index : _values[0], _important);\n          });\n        } else if (matchValue.length === 4) {\n          // Handle like `inset` => `top` & `right` & `bottom` & `left`\n          matchValue.forEach(function (matchKey, index) {\n            var _ref, _values$index2;\n            clone[matchKey] = wrapImportantAndSkipCheck((_ref = (_values$index2 = _values[index]) !== null && _values$index2 !== void 0 ? _values$index2 : _values[index - 2]) !== null && _ref !== void 0 ? _ref : _values[0], _important);\n          });\n        } else {\n          clone[key] = value;\n        }\n      } else {\n        clone[key] = value;\n      }\n    });\n    return clone;\n  }\n};\nexport default transform;","import { createContext } from 'react';\nvar IconContext = /*#__PURE__*/createContext({});\nexport default IconContext;","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nfunction _toArray(r) {\n  return arrayWithHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableRest();\n}\nexport { _toArray as default };","export default function get(entity, path) {\n  var current = entity;\n  for (var i = 0; i < path.length; i += 1) {\n    if (current === null || current === undefined) {\n      return undefined;\n    }\n    current = current[path[i]];\n  }\n  return current;\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _toArray from \"@babel/runtime/helpers/esm/toArray\";\nimport get from \"./get\";\nfunction internalSet(entity, paths, value, removeIfUndefined) {\n  if (!paths.length) {\n    return value;\n  }\n  var _paths = _toArray(paths),\n    path = _paths[0],\n    restPath = _paths.slice(1);\n  var clone;\n  if (!entity && typeof path === 'number') {\n    clone = [];\n  } else if (Array.isArray(entity)) {\n    clone = _toConsumableArray(entity);\n  } else {\n    clone = _objectSpread({}, entity);\n  }\n\n  // Delete prop if `removeIfUndefined` and value is undefined\n  if (removeIfUndefined && value === undefined && restPath.length === 1) {\n    delete clone[path][restPath[0]];\n  } else {\n    clone[path] = internalSet(clone[path], restPath, value, removeIfUndefined);\n  }\n  return clone;\n}\nexport default function set(entity, paths, value) {\n  var removeIfUndefined = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n  // Do nothing if `removeIfUndefined` and parent object not exist\n  if (paths.length && removeIfUndefined && value === undefined && !get(entity, paths.slice(0, -1))) {\n    return entity;\n  }\n  return internalSet(entity, paths, value, removeIfUndefined);\n}\nfunction isObject(obj) {\n  return _typeof(obj) === 'object' && obj !== null && Object.getPrototypeOf(obj) === Object.prototype;\n}\nfunction createEmpty(source) {\n  return Array.isArray(source) ? [] : {};\n}\nvar keys = typeof Reflect === 'undefined' ? Object.keys : Reflect.ownKeys;\n\n/**\n * Merge objects which will create\n */\nexport function merge() {\n  for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) {\n    sources[_key] = arguments[_key];\n  }\n  var clone = createEmpty(sources[0]);\n  sources.forEach(function (src) {\n    function internalMerge(path, parentLoopSet) {\n      var loopSet = new Set(parentLoopSet);\n      var value = get(src, path);\n      var isArr = Array.isArray(value);\n      if (isArr || isObject(value)) {\n        // Only add not loop obj\n        if (!loopSet.has(value)) {\n          loopSet.add(value);\n          var originValue = get(clone, path);\n          if (isArr) {\n            // Array will always be override\n            clone = set(clone, path, []);\n          } else if (!originValue || _typeof(originValue) !== 'object') {\n            // Init container if not exist\n            clone = set(clone, path, createEmpty(value));\n          }\n          keys(value).forEach(function (key) {\n            internalMerge([].concat(_toConsumableArray(path), [key]), loopSet);\n          });\n        }\n      } else {\n        clone = set(clone, path, value);\n      }\n    }\n    internalMerge([]);\n  });\n  return clone;\n}","import * as React from 'react';\nimport rcWarning, { resetWarned as rcResetWarned } from \"rc-util/es/warning\";\nexport function noop() {}\nlet deprecatedWarnList = null;\nexport function resetWarned() {\n  deprecatedWarnList = null;\n  rcResetWarned();\n}\nlet _warning = noop;\nif (process.env.NODE_ENV !== 'production') {\n  _warning = (valid, component, message) => {\n    rcWarning(valid, `[antd: ${component}] ${message}`);\n    // StrictMode will inject console which will not throw warning in React 17.\n    if (process.env.NODE_ENV === 'test') {\n      resetWarned();\n    }\n  };\n}\nconst warning = _warning;\nexport const WarningContext = /*#__PURE__*/React.createContext({});\n/**\n * This is a hook but we not named as `useWarning`\n * since this is only used in development.\n * We should always wrap this in `if (process.env.NODE_ENV !== 'production')` condition\n */\nexport const devUseWarning = process.env.NODE_ENV !== 'production' ? component => {\n  const {\n    strict\n  } = React.useContext(WarningContext);\n  const typeWarning = (valid, type, message) => {\n    if (!valid) {\n      if (strict === false && type === 'deprecated') {\n        const existWarning = deprecatedWarnList;\n        if (!deprecatedWarnList) {\n          deprecatedWarnList = {};\n        }\n        deprecatedWarnList[component] = deprecatedWarnList[component] || [];\n        if (!deprecatedWarnList[component].includes(message || '')) {\n          deprecatedWarnList[component].push(message || '');\n        }\n        // Warning for the first time\n        if (!existWarning) {\n          console.warn('[antd] There exists deprecated usage in your code:', deprecatedWarnList);\n        }\n      } else {\n        process.env.NODE_ENV !== \"production\" ? warning(valid, component, message) : void 0;\n      }\n    }\n  };\n  typeWarning.deprecated = (valid, oldProp, newProp, message) => {\n    typeWarning(valid, 'deprecated', `\\`${oldProp}\\` is deprecated. Please use \\`${newProp}\\` instead.${message ? ` ${message}` : ''}`);\n  };\n  return typeWarning;\n} : () => {\n  const noopWarning = () => {};\n  noopWarning.deprecated = noop;\n  return noopWarning;\n};\nexport default warning;","\"use client\";\n\nimport { createContext } from 'react';\n// ZombieJ: We export single file here since\n// ConfigProvider use this which will make loop deps\n// to import whole `rc-field-form`\nexport default /*#__PURE__*/createContext(undefined);","var locale = {\n  // Options\n  items_per_page: '/ page',\n  jump_to: 'Go to',\n  jump_to_confirm: 'confirm',\n  page: 'Page',\n  // Pagination\n  prev_page: 'Previous Page',\n  next_page: 'Next Page',\n  prev_5: 'Previous 5 Pages',\n  next_5: 'Next 5 Pages',\n  prev_3: 'Previous 3 Pages',\n  next_3: 'Next 3 Pages',\n  page_size: 'Page Size'\n};\nexport default locale;","export var commonLocale = {\n  yearFormat: 'YYYY',\n  dayFormat: 'D',\n  cellMeridiemFormat: 'A',\n  monthBeforeYear: true\n};","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport { commonLocale } from \"./common\";\nvar locale = _objectSpread(_objectSpread({}, commonLocale), {}, {\n  locale: 'en_US',\n  today: 'Today',\n  now: 'Now',\n  backToToday: 'Back to today',\n  ok: 'OK',\n  clear: 'Clear',\n  week: 'Week',\n  month: 'Month',\n  year: 'Year',\n  timeSelect: 'select time',\n  dateSelect: 'select date',\n  weekSelect: 'Choose a week',\n  monthSelect: 'Choose a month',\n  yearSelect: 'Choose a year',\n  decadeSelect: 'Choose a decade',\n  dateFormat: 'M/D/YYYY',\n  dateTimeFormat: 'M/D/YYYY HH:mm:ss',\n  previousMonth: 'Previous month (PageUp)',\n  nextMonth: 'Next month (PageDown)',\n  previousYear: 'Last year (Control + left)',\n  nextYear: 'Next year (Control + right)',\n  previousDecade: 'Last decade',\n  nextDecade: 'Next decade',\n  previousCentury: 'Last century',\n  nextCentury: 'Next century'\n});\nexport default locale;","const locale = {\n  placeholder: 'Select time',\n  rangePlaceholder: ['Start time', 'End time']\n};\nexport default locale;","import CalendarLocale from \"rc-picker/es/locale/en_US\";\nimport TimePickerLocale from '../../time-picker/locale/en_US';\n// Merge into a locale object\nconst locale = {\n  lang: Object.assign({\n    placeholder: 'Select date',\n    yearPlaceholder: 'Select year',\n    quarterPlaceholder: 'Select quarter',\n    monthPlaceholder: 'Select month',\n    weekPlaceholder: 'Select week',\n    rangePlaceholder: ['Start date', 'End date'],\n    rangeYearPlaceholder: ['Start year', 'End year'],\n    rangeQuarterPlaceholder: ['Start quarter', 'End quarter'],\n    rangeMonthPlaceholder: ['Start month', 'End month'],\n    rangeWeekPlaceholder: ['Start week', 'End week']\n  }, CalendarLocale),\n  timePickerLocale: Object.assign({}, TimePickerLocale)\n};\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\nexport default locale;","import Pagination from \"rc-pagination/es/locale/en_US\";\nimport Calendar from '../calendar/locale/en_US';\nimport DatePicker from '../date-picker/locale/en_US';\nimport TimePicker from '../time-picker/locale/en_US';\nconst typeTemplate = '${label} is not a valid ${type}';\nconst localeValues = {\n  locale: 'en',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  global: {\n    placeholder: 'Please select',\n    close: 'Close'\n  },\n  Table: {\n    filterTitle: 'Filter menu',\n    filterConfirm: 'OK',\n    filterReset: 'Reset',\n    filterEmptyText: 'No filters',\n    filterCheckAll: 'Select all items',\n    filterSearchPlaceholder: 'Search in filters',\n    emptyText: 'No data',\n    selectAll: 'Select current page',\n    selectInvert: 'Invert current page',\n    selectNone: 'Clear all data',\n    selectionAll: 'Select all data',\n    sortTitle: 'Sort',\n    expand: 'Expand row',\n    collapse: 'Collapse row',\n    triggerDesc: 'Click to sort descending',\n    triggerAsc: 'Click to sort ascending',\n    cancelSort: 'Click to cancel sorting'\n  },\n  Tour: {\n    Next: 'Next',\n    Previous: 'Previous',\n    Finish: 'Finish'\n  },\n  Modal: {\n    okText: 'OK',\n    cancelText: 'Cancel',\n    justOkText: 'OK'\n  },\n  Popconfirm: {\n    okText: 'OK',\n    cancelText: 'Cancel'\n  },\n  Transfer: {\n    titles: ['', ''],\n    searchPlaceholder: 'Search here',\n    itemUnit: 'item',\n    itemsUnit: 'items',\n    remove: 'Remove',\n    selectCurrent: 'Select current page',\n    removeCurrent: 'Remove current page',\n    selectAll: 'Select all data',\n    deselectAll: 'Deselect all data',\n    removeAll: 'Remove all data',\n    selectInvert: 'Invert current page'\n  },\n  Upload: {\n    uploading: 'Uploading...',\n    removeFile: 'Remove file',\n    uploadError: 'Upload error',\n    previewFile: 'Preview file',\n    downloadFile: 'Download file'\n  },\n  Empty: {\n    description: 'No data'\n  },\n  Icon: {\n    icon: 'icon'\n  },\n  Text: {\n    edit: 'Edit',\n    copy: 'Copy',\n    copied: 'Copied',\n    expand: 'Expand',\n    collapse: 'Collapse'\n  },\n  Form: {\n    optional: '(optional)',\n    defaultValidateMessages: {\n      default: 'Field validation error for ${label}',\n      required: 'Please enter ${label}',\n      enum: '${label} must be one of [${enum}]',\n      whitespace: '${label} cannot be a blank character',\n      date: {\n        format: '${label} date format is invalid',\n        parse: '${label} cannot be converted to a date',\n        invalid: '${label} is an invalid date'\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate\n      },\n      string: {\n        len: '${label} must be ${len} characters',\n        min: '${label} must be at least ${min} characters',\n        max: '${label} must be up to ${max} characters',\n        range: '${label} must be between ${min}-${max} characters'\n      },\n      number: {\n        len: '${label} must be equal to ${len}',\n        min: '${label} must be minimum ${min}',\n        max: '${label} must be maximum ${max}',\n        range: '${label} must be between ${min}-${max}'\n      },\n      array: {\n        len: 'Must be ${len} ${label}',\n        min: 'At least ${min} ${label}',\n        max: 'At most ${max} ${label}',\n        range: 'The amount of ${label} must be between ${min}-${max}'\n      },\n      pattern: {\n        mismatch: '${label} does not match the pattern ${pattern}'\n      }\n    }\n  },\n  Image: {\n    preview: 'Preview'\n  },\n  QRCode: {\n    expired: 'QR code expired',\n    refresh: 'Refresh',\n    scanned: 'Scanned'\n  },\n  ColorPicker: {\n    presetEmpty: 'Empty',\n    transparent: 'Transparent',\n    singleColor: 'Single',\n    gradientColor: 'Gradient'\n  }\n};\nexport default localeValues;","import defaultLocale from '../locale/en_US';\nlet runtimeLocale = Object.assign({}, defaultLocale.Modal);\nlet localeList = [];\nconst generateLocale = () => localeList.reduce((merged, locale) => Object.assign(Object.assign({}, merged), locale), defaultLocale.Modal);\nexport function changeConfirmLocale(newLocale) {\n  if (newLocale) {\n    const cloneLocale = Object.assign({}, newLocale);\n    localeList.push(cloneLocale);\n    runtimeLocale = generateLocale();\n    return () => {\n      localeList = localeList.filter(locale => locale !== cloneLocale);\n      runtimeLocale = generateLocale();\n    };\n  }\n  runtimeLocale = Object.assign({}, defaultLocale.Modal);\n}\nexport function getConfirmLocale() {\n  return runtimeLocale;\n}","import { createContext } from 'react';\nconst LocaleContext = /*#__PURE__*/createContext(undefined);\nexport default LocaleContext;","import * as React from 'react';\nimport LocaleContext from './context';\nimport defaultLocaleData from './en_US';\nconst useLocale = (componentName, defaultLocale) => {\n  const fullLocale = React.useContext(LocaleContext);\n  const getLocale = React.useMemo(() => {\n    var _a;\n    const locale = defaultLocale || defaultLocaleData[componentName];\n    const localeFromContext = (_a = fullLocale === null || fullLocale === void 0 ? void 0 : fullLocale[componentName]) !== null && _a !== void 0 ? _a : {};\n    return Object.assign(Object.assign({}, typeof locale === 'function' ? locale() : locale), localeFromContext || {});\n  }, [componentName, defaultLocale, fullLocale]);\n  const getLocaleCode = React.useMemo(() => {\n    const localeCode = fullLocale === null || fullLocale === void 0 ? void 0 : fullLocale.locale;\n    // Had use LocaleProvide but didn't set locale\n    if ((fullLocale === null || fullLocale === void 0 ? void 0 : fullLocale.exist) && !localeCode) {\n      return defaultLocaleData.locale;\n    }\n    return localeCode;\n  }, [fullLocale]);\n  return [getLocale, getLocaleCode];\n};\nexport default useLocale;","\"use client\";\n\nimport * as React from 'react';\nimport { devUseWarning } from '../_util/warning';\nimport { changeConfirmLocale } from '../modal/locale';\nimport LocaleContext from './context';\nexport { default as useLocale } from './useLocale';\nexport const ANT_MARK = 'internalMark';\nconst LocaleProvider = props => {\n  const {\n    locale = {},\n    children,\n    _ANT_MARK__\n  } = props;\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('LocaleProvider');\n    process.env.NODE_ENV !== \"production\" ? warning(_ANT_MARK__ === ANT_MARK, 'deprecated', '`LocaleProvider` is deprecated. Please use `locale` with `ConfigProvider` instead: http://u.ant.design/locale') : void 0;\n  }\n  React.useEffect(() => {\n    const clearLocale = changeConfirmLocale(locale === null || locale === void 0 ? void 0 : locale.Modal);\n    return clearLocale;\n  }, [locale]);\n  const getMemoizedContextValue = React.useMemo(() => Object.assign(Object.assign({}, locale), {\n    exist: true\n  }), [locale]);\n  return /*#__PURE__*/React.createElement(LocaleContext.Provider, {\n    value: getMemoizedContextValue\n  }, children);\n};\nif (process.env.NODE_ENV !== 'production') {\n  LocaleProvider.displayName = 'LocaleProvider';\n}\nexport default LocaleProvider;","export const defaultPresetColors = {\n  blue: '#1677FF',\n  purple: '#722ED1',\n  cyan: '#13C2C2',\n  green: '#52C41A',\n  magenta: '#EB2F96',\n  /**\n   * @deprecated Use magenta instead\n   */\n  pink: '#EB2F96',\n  red: '#F5222D',\n  orange: '#FA8C16',\n  yellow: '#FADB14',\n  volcano: '#FA541C',\n  geekblue: '#2F54EB',\n  gold: '#FAAD14',\n  lime: '#A0D911'\n};\nconst seedToken = Object.assign(Object.assign({}, defaultPresetColors), {\n  // Color\n  colorPrimary: '#1677ff',\n  colorSuccess: '#52c41a',\n  colorWarning: '#faad14',\n  colorError: '#ff4d4f',\n  colorInfo: '#1677ff',\n  colorLink: '',\n  colorTextBase: '',\n  colorBgBase: '',\n  // Font\n  fontFamily: `-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial,\n'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',\n'Noto Color Emoji'`,\n  fontFamilyCode: `'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace`,\n  fontSize: 14,\n  // Line\n  lineWidth: 1,\n  lineType: 'solid',\n  // Motion\n  motionUnit: 0.1,\n  motionBase: 0,\n  motionEaseOutCirc: 'cubic-bezier(0.08, 0.82, 0.17, 1)',\n  motionEaseInOutCirc: 'cubic-bezier(0.78, 0.14, 0.15, 0.86)',\n  motionEaseOut: 'cubic-bezier(0.215, 0.61, 0.355, 1)',\n  motionEaseInOut: 'cubic-bezier(0.645, 0.045, 0.355, 1)',\n  motionEaseOutBack: 'cubic-bezier(0.12, 0.4, 0.29, 1.46)',\n  motionEaseInBack: 'cubic-bezier(0.71, -0.46, 0.88, 0.6)',\n  motionEaseInQuint: 'cubic-bezier(0.755, 0.05, 0.855, 0.06)',\n  motionEaseOutQuint: 'cubic-bezier(0.23, 1, 0.32, 1)',\n  // Radius\n  borderRadius: 6,\n  // Size\n  sizeUnit: 4,\n  sizeStep: 4,\n  sizePopupArrow: 16,\n  // Control Base\n  controlHeight: 32,\n  // zIndex\n  zIndexBase: 0,\n  zIndexPopupBase: 1000,\n  // Image\n  opacityImage: 1,\n  // Wireframe\n  wireframe: false,\n  // Motion\n  motion: true\n});\nexport default seedToken;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nconst round = Math.round;\n\n/**\n * Support format, alpha unit will check the % mark:\n * - rgba(102, 204, 255, .5)      -> [102, 204, 255, 0.5]\n * - rgb(102 204 255 / .5)        -> [102, 204, 255, 0.5]\n * - rgb(100%, 50%, 0% / 50%)     -> [255, 128, 0, 0.5]\n * - hsl(270, 60, 40, .5)         -> [270, 60, 40, 0.5]\n * - hsl(270deg 60% 40% / 50%)   -> [270, 60, 40, 0.5]\n *\n * When `base` is provided, the percentage value will be divided by `base`.\n */\nfunction splitColorStr(str, parseNum) {\n  const match = str\n  // Remove str before `(`\n  .replace(/^[^(]*\\((.*)/, '$1')\n  // Remove str after `)`\n  .replace(/\\).*/, '').match(/\\d*\\.?\\d+%?/g) || [];\n  const numList = match.map(item => parseFloat(item));\n  for (let i = 0; i < 3; i += 1) {\n    numList[i] = parseNum(numList[i] || 0, match[i] || '', i);\n  }\n\n  // For alpha. 50% should be 0.5\n  if (match[3]) {\n    numList[3] = match[3].includes('%') ? numList[3] / 100 : numList[3];\n  } else {\n    // By default, alpha is 1\n    numList[3] = 1;\n  }\n  return numList;\n}\nconst parseHSVorHSL = (num, _, index) => index === 0 ? num : num / 100;\n\n/** round and limit number to integer between 0-255 */\nfunction limitRange(value, max) {\n  const mergedMax = max || 255;\n  if (value > mergedMax) {\n    return mergedMax;\n  }\n  if (value < 0) {\n    return 0;\n  }\n  return value;\n}\nexport class FastColor {\n  constructor(input) {\n    /**\n     * All FastColor objects are valid. So isValid is always true. This property is kept to be compatible with TinyColor.\n     */\n    _defineProperty(this, \"isValid\", true);\n    /**\n     * Red, R in RGB\n     */\n    _defineProperty(this, \"r\", 0);\n    /**\n     * Green, G in RGB\n     */\n    _defineProperty(this, \"g\", 0);\n    /**\n     * Blue, B in RGB\n     */\n    _defineProperty(this, \"b\", 0);\n    /**\n     * Alpha/Opacity, A in RGBA/HSLA\n     */\n    _defineProperty(this, \"a\", 1);\n    // HSV privates\n    _defineProperty(this, \"_h\", void 0);\n    _defineProperty(this, \"_s\", void 0);\n    _defineProperty(this, \"_l\", void 0);\n    _defineProperty(this, \"_v\", void 0);\n    // intermediate variables to calculate HSL/HSV\n    _defineProperty(this, \"_max\", void 0);\n    _defineProperty(this, \"_min\", void 0);\n    _defineProperty(this, \"_brightness\", void 0);\n    /**\n     * Always check 3 char in the object to determine the format.\n     * We not use function in check to save bundle size.\n     * e.g. 'rgb' -> { r: 0, g: 0, b: 0 }.\n     */\n    function matchFormat(str) {\n      return str[0] in input && str[1] in input && str[2] in input;\n    }\n    if (!input) {\n      // Do nothing since already initialized\n    } else if (typeof input === 'string') {\n      const trimStr = input.trim();\n      function matchPrefix(prefix) {\n        return trimStr.startsWith(prefix);\n      }\n      if (/^#?[A-F\\d]{3,8}$/i.test(trimStr)) {\n        this.fromHexString(trimStr);\n      } else if (matchPrefix('rgb')) {\n        this.fromRgbString(trimStr);\n      } else if (matchPrefix('hsl')) {\n        this.fromHslString(trimStr);\n      } else if (matchPrefix('hsv') || matchPrefix('hsb')) {\n        this.fromHsvString(trimStr);\n      }\n    } else if (input instanceof FastColor) {\n      this.r = input.r;\n      this.g = input.g;\n      this.b = input.b;\n      this.a = input.a;\n      this._h = input._h;\n      this._s = input._s;\n      this._l = input._l;\n      this._v = input._v;\n    } else if (matchFormat('rgb')) {\n      this.r = limitRange(input.r);\n      this.g = limitRange(input.g);\n      this.b = limitRange(input.b);\n      this.a = typeof input.a === 'number' ? limitRange(input.a, 1) : 1;\n    } else if (matchFormat('hsl')) {\n      this.fromHsl(input);\n    } else if (matchFormat('hsv')) {\n      this.fromHsv(input);\n    } else {\n      throw new Error('@ant-design/fast-color: unsupported input ' + JSON.stringify(input));\n    }\n  }\n\n  // ======================= Setter =======================\n\n  setR(value) {\n    return this._sc('r', value);\n  }\n  setG(value) {\n    return this._sc('g', value);\n  }\n  setB(value) {\n    return this._sc('b', value);\n  }\n  setA(value) {\n    return this._sc('a', value, 1);\n  }\n  setHue(value) {\n    const hsv = this.toHsv();\n    hsv.h = value;\n    return this._c(hsv);\n  }\n\n  // ======================= Getter =======================\n  /**\n   * Returns the perceived luminance of a color, from 0-1.\n   * @see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n   */\n  getLuminance() {\n    function adjustGamma(raw) {\n      const val = raw / 255;\n      return val <= 0.03928 ? val / 12.92 : Math.pow((val + 0.055) / 1.055, 2.4);\n    }\n    const R = adjustGamma(this.r);\n    const G = adjustGamma(this.g);\n    const B = adjustGamma(this.b);\n    return 0.2126 * R + 0.7152 * G + 0.0722 * B;\n  }\n  getHue() {\n    if (typeof this._h === 'undefined') {\n      const delta = this.getMax() - this.getMin();\n      if (delta === 0) {\n        this._h = 0;\n      } else {\n        this._h = round(60 * (this.r === this.getMax() ? (this.g - this.b) / delta + (this.g < this.b ? 6 : 0) : this.g === this.getMax() ? (this.b - this.r) / delta + 2 : (this.r - this.g) / delta + 4));\n      }\n    }\n    return this._h;\n  }\n  getSaturation() {\n    if (typeof this._s === 'undefined') {\n      const delta = this.getMax() - this.getMin();\n      if (delta === 0) {\n        this._s = 0;\n      } else {\n        this._s = delta / this.getMax();\n      }\n    }\n    return this._s;\n  }\n  getLightness() {\n    if (typeof this._l === 'undefined') {\n      this._l = (this.getMax() + this.getMin()) / 510;\n    }\n    return this._l;\n  }\n  getValue() {\n    if (typeof this._v === 'undefined') {\n      this._v = this.getMax() / 255;\n    }\n    return this._v;\n  }\n\n  /**\n   * Returns the perceived brightness of the color, from 0-255.\n   * Note: this is not the b of HSB\n   * @see http://www.w3.org/TR/AERT#color-contrast\n   */\n  getBrightness() {\n    if (typeof this._brightness === 'undefined') {\n      this._brightness = (this.r * 299 + this.g * 587 + this.b * 114) / 1000;\n    }\n    return this._brightness;\n  }\n\n  // ======================== Func ========================\n\n  darken(amount = 10) {\n    const h = this.getHue();\n    const s = this.getSaturation();\n    let l = this.getLightness() - amount / 100;\n    if (l < 0) {\n      l = 0;\n    }\n    return this._c({\n      h,\n      s,\n      l,\n      a: this.a\n    });\n  }\n  lighten(amount = 10) {\n    const h = this.getHue();\n    const s = this.getSaturation();\n    let l = this.getLightness() + amount / 100;\n    if (l > 1) {\n      l = 1;\n    }\n    return this._c({\n      h,\n      s,\n      l,\n      a: this.a\n    });\n  }\n\n  /**\n   * Mix the current color a given amount with another color, from 0 to 100.\n   * 0 means no mixing (return current color).\n   */\n  mix(input, amount = 50) {\n    const color = this._c(input);\n    const p = amount / 100;\n    const calc = key => (color[key] - this[key]) * p + this[key];\n    const rgba = {\n      r: round(calc('r')),\n      g: round(calc('g')),\n      b: round(calc('b')),\n      a: round(calc('a') * 100) / 100\n    };\n    return this._c(rgba);\n  }\n\n  /**\n   * Mix the color with pure white, from 0 to 100.\n   * Providing 0 will do nothing, providing 100 will always return white.\n   */\n  tint(amount = 10) {\n    return this.mix({\n      r: 255,\n      g: 255,\n      b: 255,\n      a: 1\n    }, amount);\n  }\n\n  /**\n   * Mix the color with pure black, from 0 to 100.\n   * Providing 0 will do nothing, providing 100 will always return black.\n   */\n  shade(amount = 10) {\n    return this.mix({\n      r: 0,\n      g: 0,\n      b: 0,\n      a: 1\n    }, amount);\n  }\n  onBackground(background) {\n    const bg = this._c(background);\n    const alpha = this.a + bg.a * (1 - this.a);\n    const calc = key => {\n      return round((this[key] * this.a + bg[key] * bg.a * (1 - this.a)) / alpha);\n    };\n    return this._c({\n      r: calc('r'),\n      g: calc('g'),\n      b: calc('b'),\n      a: alpha\n    });\n  }\n\n  // ======================= Status =======================\n  isDark() {\n    return this.getBrightness() < 128;\n  }\n  isLight() {\n    return this.getBrightness() >= 128;\n  }\n\n  // ======================== MISC ========================\n  equals(other) {\n    return this.r === other.r && this.g === other.g && this.b === other.b && this.a === other.a;\n  }\n  clone() {\n    return this._c(this);\n  }\n\n  // ======================= Format =======================\n  toHexString() {\n    let hex = '#';\n    const rHex = (this.r || 0).toString(16);\n    hex += rHex.length === 2 ? rHex : '0' + rHex;\n    const gHex = (this.g || 0).toString(16);\n    hex += gHex.length === 2 ? gHex : '0' + gHex;\n    const bHex = (this.b || 0).toString(16);\n    hex += bHex.length === 2 ? bHex : '0' + bHex;\n    if (typeof this.a === 'number' && this.a >= 0 && this.a < 1) {\n      const aHex = round(this.a * 255).toString(16);\n      hex += aHex.length === 2 ? aHex : '0' + aHex;\n    }\n    return hex;\n  }\n\n  /** CSS support color pattern */\n  toHsl() {\n    return {\n      h: this.getHue(),\n      s: this.getSaturation(),\n      l: this.getLightness(),\n      a: this.a\n    };\n  }\n\n  /** CSS support color pattern */\n  toHslString() {\n    const h = this.getHue();\n    const s = round(this.getSaturation() * 100);\n    const l = round(this.getLightness() * 100);\n    return this.a !== 1 ? `hsla(${h},${s}%,${l}%,${this.a})` : `hsl(${h},${s}%,${l}%)`;\n  }\n\n  /** Same as toHsb */\n  toHsv() {\n    return {\n      h: this.getHue(),\n      s: this.getSaturation(),\n      v: this.getValue(),\n      a: this.a\n    };\n  }\n  toRgb() {\n    return {\n      r: this.r,\n      g: this.g,\n      b: this.b,\n      a: this.a\n    };\n  }\n  toRgbString() {\n    return this.a !== 1 ? `rgba(${this.r},${this.g},${this.b},${this.a})` : `rgb(${this.r},${this.g},${this.b})`;\n  }\n  toString() {\n    return this.toRgbString();\n  }\n\n  // ====================== Privates ======================\n  /** Return a new FastColor object with one channel changed */\n  _sc(rgb, value, max) {\n    const clone = this.clone();\n    clone[rgb] = limitRange(value, max);\n    return clone;\n  }\n  _c(input) {\n    return new this.constructor(input);\n  }\n  getMax() {\n    if (typeof this._max === 'undefined') {\n      this._max = Math.max(this.r, this.g, this.b);\n    }\n    return this._max;\n  }\n  getMin() {\n    if (typeof this._min === 'undefined') {\n      this._min = Math.min(this.r, this.g, this.b);\n    }\n    return this._min;\n  }\n  fromHexString(trimStr) {\n    const withoutPrefix = trimStr.replace('#', '');\n    function connectNum(index1, index2) {\n      return parseInt(withoutPrefix[index1] + withoutPrefix[index2 || index1], 16);\n    }\n    if (withoutPrefix.length < 6) {\n      // #rgb or #rgba\n      this.r = connectNum(0);\n      this.g = connectNum(1);\n      this.b = connectNum(2);\n      this.a = withoutPrefix[3] ? connectNum(3) / 255 : 1;\n    } else {\n      // #rrggbb or #rrggbbaa\n      this.r = connectNum(0, 1);\n      this.g = connectNum(2, 3);\n      this.b = connectNum(4, 5);\n      this.a = withoutPrefix[6] ? connectNum(6, 7) / 255 : 1;\n    }\n  }\n  fromHsl({\n    h,\n    s,\n    l,\n    a\n  }) {\n    this._h = h % 360;\n    this._s = s;\n    this._l = l;\n    this.a = typeof a === 'number' ? a : 1;\n    if (s <= 0) {\n      const rgb = round(l * 255);\n      this.r = rgb;\n      this.g = rgb;\n      this.b = rgb;\n    }\n    let r = 0,\n      g = 0,\n      b = 0;\n    const huePrime = h / 60;\n    const chroma = (1 - Math.abs(2 * l - 1)) * s;\n    const secondComponent = chroma * (1 - Math.abs(huePrime % 2 - 1));\n    if (huePrime >= 0 && huePrime < 1) {\n      r = chroma;\n      g = secondComponent;\n    } else if (huePrime >= 1 && huePrime < 2) {\n      r = secondComponent;\n      g = chroma;\n    } else if (huePrime >= 2 && huePrime < 3) {\n      g = chroma;\n      b = secondComponent;\n    } else if (huePrime >= 3 && huePrime < 4) {\n      g = secondComponent;\n      b = chroma;\n    } else if (huePrime >= 4 && huePrime < 5) {\n      r = secondComponent;\n      b = chroma;\n    } else if (huePrime >= 5 && huePrime < 6) {\n      r = chroma;\n      b = secondComponent;\n    }\n    const lightnessModification = l - chroma / 2;\n    this.r = round((r + lightnessModification) * 255);\n    this.g = round((g + lightnessModification) * 255);\n    this.b = round((b + lightnessModification) * 255);\n  }\n  fromHsv({\n    h,\n    s,\n    v,\n    a\n  }) {\n    this._h = h % 360;\n    this._s = s;\n    this._v = v;\n    this.a = typeof a === 'number' ? a : 1;\n    const vv = round(v * 255);\n    this.r = vv;\n    this.g = vv;\n    this.b = vv;\n    if (s <= 0) {\n      return;\n    }\n    const hh = h / 60;\n    const i = Math.floor(hh);\n    const ff = hh - i;\n    const p = round(v * (1.0 - s) * 255);\n    const q = round(v * (1.0 - s * ff) * 255);\n    const t = round(v * (1.0 - s * (1.0 - ff)) * 255);\n    switch (i) {\n      case 0:\n        this.g = t;\n        this.b = p;\n        break;\n      case 1:\n        this.r = q;\n        this.b = p;\n        break;\n      case 2:\n        this.r = p;\n        this.b = t;\n        break;\n      case 3:\n        this.r = p;\n        this.g = q;\n        break;\n      case 4:\n        this.r = t;\n        this.g = p;\n        break;\n      case 5:\n      default:\n        this.g = p;\n        this.b = q;\n        break;\n    }\n  }\n  fromHsvString(trimStr) {\n    const cells = splitColorStr(trimStr, parseHSVorHSL);\n    this.fromHsv({\n      h: cells[0],\n      s: cells[1],\n      v: cells[2],\n      a: cells[3]\n    });\n  }\n  fromHslString(trimStr) {\n    const cells = splitColorStr(trimStr, parseHSVorHSL);\n    this.fromHsl({\n      h: cells[0],\n      s: cells[1],\n      l: cells[2],\n      a: cells[3]\n    });\n  }\n  fromRgbString(trimStr) {\n    const cells = splitColorStr(trimStr, (num, txt) =>\n    // Convert percentage to number. e.g. 50% -> 128\n    txt.includes('%') ? round(num / 100 * 255) : num);\n    this.r = cells[0];\n    this.g = cells[1];\n    this.b = cells[2];\n    this.a = cells[3];\n  }\n}","import { FastColor } from '@ant-design/fast-color';\nvar hueStep = 2; // 色相阶梯\nvar saturationStep = 0.16; // 饱和度阶梯，浅色部分\nvar saturationStep2 = 0.05; // 饱和度阶梯，深色部分\nvar brightnessStep1 = 0.05; // 亮度阶梯，浅色部分\nvar brightnessStep2 = 0.15; // 亮度阶梯，深色部分\nvar lightColorCount = 5; // 浅色数量，主色上\nvar darkColorCount = 4; // 深色数量，主色下\n\n// 暗色主题颜色映射关系表\nvar darkColorMap = [{\n  index: 7,\n  amount: 15\n}, {\n  index: 6,\n  amount: 25\n}, {\n  index: 5,\n  amount: 30\n}, {\n  index: 5,\n  amount: 45\n}, {\n  index: 5,\n  amount: 65\n}, {\n  index: 5,\n  amount: 85\n}, {\n  index: 4,\n  amount: 90\n}, {\n  index: 3,\n  amount: 95\n}, {\n  index: 2,\n  amount: 97\n}, {\n  index: 1,\n  amount: 98\n}];\nfunction getHue(hsv, i, light) {\n  var hue;\n  // 根据色相不同，色相转向不同\n  if (Math.round(hsv.h) >= 60 && Math.round(hsv.h) <= 240) {\n    hue = light ? Math.round(hsv.h) - hueStep * i : Math.round(hsv.h) + hueStep * i;\n  } else {\n    hue = light ? Math.round(hsv.h) + hueStep * i : Math.round(hsv.h) - hueStep * i;\n  }\n  if (hue < 0) {\n    hue += 360;\n  } else if (hue >= 360) {\n    hue -= 360;\n  }\n  return hue;\n}\nfunction getSaturation(hsv, i, light) {\n  // grey color don't change saturation\n  if (hsv.h === 0 && hsv.s === 0) {\n    return hsv.s;\n  }\n  var saturation;\n  if (light) {\n    saturation = hsv.s - saturationStep * i;\n  } else if (i === darkColorCount) {\n    saturation = hsv.s + saturationStep;\n  } else {\n    saturation = hsv.s + saturationStep2 * i;\n  }\n  // 边界值修正\n  if (saturation > 1) {\n    saturation = 1;\n  }\n  // 第一格的 s 限制在 0.06-0.1 之间\n  if (light && i === lightColorCount && saturation > 0.1) {\n    saturation = 0.1;\n  }\n  if (saturation < 0.06) {\n    saturation = 0.06;\n  }\n  return Math.round(saturation * 100) / 100;\n}\nfunction getValue(hsv, i, light) {\n  var value;\n  if (light) {\n    value = hsv.v + brightnessStep1 * i;\n  } else {\n    value = hsv.v - brightnessStep2 * i;\n  }\n  // Clamp value between 0 and 1\n  value = Math.max(0, Math.min(1, value));\n  return Math.round(value * 100) / 100;\n}\nexport default function generate(color) {\n  var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var patterns = [];\n  var pColor = new FastColor(color);\n  var hsv = pColor.toHsv();\n  for (var i = lightColorCount; i > 0; i -= 1) {\n    var c = new FastColor({\n      h: getHue(hsv, i, true),\n      s: getSaturation(hsv, i, true),\n      v: getValue(hsv, i, true)\n    });\n    patterns.push(c);\n  }\n  patterns.push(pColor);\n  for (var _i = 1; _i <= darkColorCount; _i += 1) {\n    var _c = new FastColor({\n      h: getHue(hsv, _i),\n      s: getSaturation(hsv, _i),\n      v: getValue(hsv, _i)\n    });\n    patterns.push(_c);\n  }\n\n  // dark theme patterns\n  if (opts.theme === 'dark') {\n    return darkColorMap.map(function (_ref) {\n      var index = _ref.index,\n        amount = _ref.amount;\n      return new FastColor(opts.backgroundColor || '#141414').mix(patterns[index], amount).toHexString();\n    });\n  }\n  return patterns.map(function (c) {\n    return c.toHexString();\n  });\n}","// Generated by script. Do NOT modify!\n\nexport var presetPrimaryColors = {\n  \"red\": \"#F5222D\",\n  \"volcano\": \"#FA541C\",\n  \"orange\": \"#FA8C16\",\n  \"gold\": \"#FAAD14\",\n  \"yellow\": \"#FADB14\",\n  \"lime\": \"#A0D911\",\n  \"green\": \"#52C41A\",\n  \"cyan\": \"#13C2C2\",\n  \"blue\": \"#1677FF\",\n  \"geekblue\": \"#2F54EB\",\n  \"purple\": \"#722ED1\",\n  \"magenta\": \"#EB2F96\",\n  \"grey\": \"#666666\"\n};\nexport var red = [\"#fff1f0\", \"#ffccc7\", \"#ffa39e\", \"#ff7875\", \"#ff4d4f\", \"#f5222d\", \"#cf1322\", \"#a8071a\", \"#820014\", \"#5c0011\"];\nred.primary = red[5];\nexport var volcano = [\"#fff2e8\", \"#ffd8bf\", \"#ffbb96\", \"#ff9c6e\", \"#ff7a45\", \"#fa541c\", \"#d4380d\", \"#ad2102\", \"#871400\", \"#610b00\"];\nvolcano.primary = volcano[5];\nexport var orange = [\"#fff7e6\", \"#ffe7ba\", \"#ffd591\", \"#ffc069\", \"#ffa940\", \"#fa8c16\", \"#d46b08\", \"#ad4e00\", \"#873800\", \"#612500\"];\norange.primary = orange[5];\nexport var gold = [\"#fffbe6\", \"#fff1b8\", \"#ffe58f\", \"#ffd666\", \"#ffc53d\", \"#faad14\", \"#d48806\", \"#ad6800\", \"#874d00\", \"#613400\"];\ngold.primary = gold[5];\nexport var yellow = [\"#feffe6\", \"#ffffb8\", \"#fffb8f\", \"#fff566\", \"#ffec3d\", \"#fadb14\", \"#d4b106\", \"#ad8b00\", \"#876800\", \"#614700\"];\nyellow.primary = yellow[5];\nexport var lime = [\"#fcffe6\", \"#f4ffb8\", \"#eaff8f\", \"#d3f261\", \"#bae637\", \"#a0d911\", \"#7cb305\", \"#5b8c00\", \"#3f6600\", \"#254000\"];\nlime.primary = lime[5];\nexport var green = [\"#f6ffed\", \"#d9f7be\", \"#b7eb8f\", \"#95de64\", \"#73d13d\", \"#52c41a\", \"#389e0d\", \"#237804\", \"#135200\", \"#092b00\"];\ngreen.primary = green[5];\nexport var cyan = [\"#e6fffb\", \"#b5f5ec\", \"#87e8de\", \"#5cdbd3\", \"#36cfc9\", \"#13c2c2\", \"#08979c\", \"#006d75\", \"#00474f\", \"#002329\"];\ncyan.primary = cyan[5];\nexport var blue = [\"#e6f4ff\", \"#bae0ff\", \"#91caff\", \"#69b1ff\", \"#4096ff\", \"#1677ff\", \"#0958d9\", \"#003eb3\", \"#002c8c\", \"#001d66\"];\nblue.primary = blue[5];\nexport var geekblue = [\"#f0f5ff\", \"#d6e4ff\", \"#adc6ff\", \"#85a5ff\", \"#597ef7\", \"#2f54eb\", \"#1d39c4\", \"#10239e\", \"#061178\", \"#030852\"];\ngeekblue.primary = geekblue[5];\nexport var purple = [\"#f9f0ff\", \"#efdbff\", \"#d3adf7\", \"#b37feb\", \"#9254de\", \"#722ed1\", \"#531dab\", \"#391085\", \"#22075e\", \"#120338\"];\npurple.primary = purple[5];\nexport var magenta = [\"#fff0f6\", \"#ffd6e7\", \"#ffadd2\", \"#ff85c0\", \"#f759ab\", \"#eb2f96\", \"#c41d7f\", \"#9e1068\", \"#780650\", \"#520339\"];\nmagenta.primary = magenta[5];\nexport var grey = [\"#a6a6a6\", \"#999999\", \"#8c8c8c\", \"#808080\", \"#737373\", \"#666666\", \"#404040\", \"#1a1a1a\", \"#000000\", \"#000000\"];\ngrey.primary = grey[5];\nexport var gray = grey;\nexport var presetPalettes = {\n  red: red,\n  volcano: volcano,\n  orange: orange,\n  gold: gold,\n  yellow: yellow,\n  lime: lime,\n  green: green,\n  cyan: cyan,\n  blue: blue,\n  geekblue: geekblue,\n  purple: purple,\n  magenta: magenta,\n  grey: grey\n};\nexport var redDark = [\"#2a1215\", \"#431418\", \"#58181c\", \"#791a1f\", \"#a61d24\", \"#d32029\", \"#e84749\", \"#f37370\", \"#f89f9a\", \"#fac8c3\"];\nredDark.primary = redDark[5];\nexport var volcanoDark = [\"#2b1611\", \"#441d12\", \"#592716\", \"#7c3118\", \"#aa3e19\", \"#d84a1b\", \"#e87040\", \"#f3956a\", \"#f8b692\", \"#fad4bc\"];\nvolcanoDark.primary = volcanoDark[5];\nexport var orangeDark = [\"#2b1d11\", \"#442a11\", \"#593815\", \"#7c4a15\", \"#aa6215\", \"#d87a16\", \"#e89a3c\", \"#f3b765\", \"#f8cf8d\", \"#fae3b7\"];\norangeDark.primary = orangeDark[5];\nexport var goldDark = [\"#2b2111\", \"#443111\", \"#594214\", \"#7c5914\", \"#aa7714\", \"#d89614\", \"#e8b339\", \"#f3cc62\", \"#f8df8b\", \"#faedb5\"];\ngoldDark.primary = goldDark[5];\nexport var yellowDark = [\"#2b2611\", \"#443b11\", \"#595014\", \"#7c6e14\", \"#aa9514\", \"#d8bd14\", \"#e8d639\", \"#f3ea62\", \"#f8f48b\", \"#fafab5\"];\nyellowDark.primary = yellowDark[5];\nexport var limeDark = [\"#1f2611\", \"#2e3c10\", \"#3e4f13\", \"#536d13\", \"#6f9412\", \"#8bbb11\", \"#a9d134\", \"#c9e75d\", \"#e4f88b\", \"#f0fab5\"];\nlimeDark.primary = limeDark[5];\nexport var greenDark = [\"#162312\", \"#1d3712\", \"#274916\", \"#306317\", \"#3c8618\", \"#49aa19\", \"#6abe39\", \"#8fd460\", \"#b2e58b\", \"#d5f2bb\"];\ngreenDark.primary = greenDark[5];\nexport var cyanDark = [\"#112123\", \"#113536\", \"#144848\", \"#146262\", \"#138585\", \"#13a8a8\", \"#33bcb7\", \"#58d1c9\", \"#84e2d8\", \"#b2f1e8\"];\ncyanDark.primary = cyanDark[5];\nexport var blueDark = [\"#111a2c\", \"#112545\", \"#15325b\", \"#15417e\", \"#1554ad\", \"#1668dc\", \"#3c89e8\", \"#65a9f3\", \"#8dc5f8\", \"#b7dcfa\"];\nblueDark.primary = blueDark[5];\nexport var geekblueDark = [\"#131629\", \"#161d40\", \"#1c2755\", \"#203175\", \"#263ea0\", \"#2b4acb\", \"#5273e0\", \"#7f9ef3\", \"#a8c1f8\", \"#d2e0fa\"];\ngeekblueDark.primary = geekblueDark[5];\nexport var purpleDark = [\"#1a1325\", \"#24163a\", \"#301c4d\", \"#3e2069\", \"#51258f\", \"#642ab5\", \"#854eca\", \"#ab7ae0\", \"#cda8f0\", \"#ebd7fa\"];\npurpleDark.primary = purpleDark[5];\nexport var magentaDark = [\"#291321\", \"#40162f\", \"#551c3b\", \"#75204f\", \"#a02669\", \"#cb2b83\", \"#e0529c\", \"#f37fb7\", \"#f8a8cc\", \"#fad2e3\"];\nmagentaDark.primary = magentaDark[5];\nexport var greyDark = [\"#151515\", \"#1f1f1f\", \"#2d2d2d\", \"#393939\", \"#494949\", \"#5a5a5a\", \"#6a6a6a\", \"#7b7b7b\", \"#888888\", \"#969696\"];\ngreyDark.primary = greyDark[5];\nexport var presetDarkPalettes = {\n  red: redDark,\n  volcano: volcanoDark,\n  orange: orangeDark,\n  gold: goldDark,\n  yellow: yellowDark,\n  lime: limeDark,\n  green: greenDark,\n  cyan: cyanDark,\n  blue: blueDark,\n  geekblue: geekblueDark,\n  purple: purpleDark,\n  magenta: magentaDark,\n  grey: greyDark\n};","import { FastColor } from '@ant-design/fast-color';\nexport default function genColorMapToken(seed, {\n  generateColorPalettes,\n  generateNeutralColorPalettes\n}) {\n  const {\n    colorSuccess: colorSuccessBase,\n    colorWarning: colorWarningBase,\n    colorError: colorErrorBase,\n    colorInfo: colorInfoBase,\n    colorPrimary: colorPrimaryBase,\n    colorBgBase,\n    colorTextBase\n  } = seed;\n  const primaryColors = generateColorPalettes(colorPrimaryBase);\n  const successColors = generateColorPalettes(colorSuccessBase);\n  const warningColors = generateColorPalettes(colorWarningBase);\n  const errorColors = generateColorPalettes(colorErrorBase);\n  const infoColors = generateColorPalettes(colorInfoBase);\n  const neutralColors = generateNeutralColorPalettes(colorBgBase, colorTextBase);\n  // Color Link\n  const colorLink = seed.colorLink || seed.colorInfo;\n  const linkColors = generateColorPalettes(colorLink);\n  const colorErrorBgFilledHover = new FastColor(errorColors[1]).mix(new FastColor(errorColors[3]), 50).toHexString();\n  return Object.assign(Object.assign({}, neutralColors), {\n    colorPrimaryBg: primaryColors[1],\n    colorPrimaryBgHover: primaryColors[2],\n    colorPrimaryBorder: primaryColors[3],\n    colorPrimaryBorderHover: primaryColors[4],\n    colorPrimaryHover: primaryColors[5],\n    colorPrimary: primaryColors[6],\n    colorPrimaryActive: primaryColors[7],\n    colorPrimaryTextHover: primaryColors[8],\n    colorPrimaryText: primaryColors[9],\n    colorPrimaryTextActive: primaryColors[10],\n    colorSuccessBg: successColors[1],\n    colorSuccessBgHover: successColors[2],\n    colorSuccessBorder: successColors[3],\n    colorSuccessBorderHover: successColors[4],\n    colorSuccessHover: successColors[4],\n    colorSuccess: successColors[6],\n    colorSuccessActive: successColors[7],\n    colorSuccessTextHover: successColors[8],\n    colorSuccessText: successColors[9],\n    colorSuccessTextActive: successColors[10],\n    colorErrorBg: errorColors[1],\n    colorErrorBgHover: errorColors[2],\n    colorErrorBgFilledHover,\n    colorErrorBgActive: errorColors[3],\n    colorErrorBorder: errorColors[3],\n    colorErrorBorderHover: errorColors[4],\n    colorErrorHover: errorColors[5],\n    colorError: errorColors[6],\n    colorErrorActive: errorColors[7],\n    colorErrorTextHover: errorColors[8],\n    colorErrorText: errorColors[9],\n    colorErrorTextActive: errorColors[10],\n    colorWarningBg: warningColors[1],\n    colorWarningBgHover: warningColors[2],\n    colorWarningBorder: warningColors[3],\n    colorWarningBorderHover: warningColors[4],\n    colorWarningHover: warningColors[4],\n    colorWarning: warningColors[6],\n    colorWarningActive: warningColors[7],\n    colorWarningTextHover: warningColors[8],\n    colorWarningText: warningColors[9],\n    colorWarningTextActive: warningColors[10],\n    colorInfoBg: infoColors[1],\n    colorInfoBgHover: infoColors[2],\n    colorInfoBorder: infoColors[3],\n    colorInfoBorderHover: infoColors[4],\n    colorInfoHover: infoColors[4],\n    colorInfo: infoColors[6],\n    colorInfoActive: infoColors[7],\n    colorInfoTextHover: infoColors[8],\n    colorInfoText: infoColors[9],\n    colorInfoTextActive: infoColors[10],\n    colorLinkHover: linkColors[4],\n    colorLink: linkColors[6],\n    colorLinkActive: linkColors[7],\n    colorBgMask: new FastColor('#000').setA(0.45).toRgbString(),\n    colorWhite: '#fff'\n  });\n}","const genRadius = radiusBase => {\n  let radiusLG = radiusBase;\n  let radiusSM = radiusBase;\n  let radiusXS = radiusBase;\n  let radiusOuter = radiusBase;\n  // radiusLG\n  if (radiusBase < 6 && radiusBase >= 5) {\n    radiusLG = radiusBase + 1;\n  } else if (radiusBase < 16 && radiusBase >= 6) {\n    radiusLG = radiusBase + 2;\n  } else if (radiusBase >= 16) {\n    radiusLG = 16;\n  }\n  // radiusSM\n  if (radiusBase < 7 && radiusBase >= 5) {\n    radiusSM = 4;\n  } else if (radiusBase < 8 && radiusBase >= 7) {\n    radiusSM = 5;\n  } else if (radiusBase < 14 && radiusBase >= 8) {\n    radiusSM = 6;\n  } else if (radiusBase < 16 && radiusBase >= 14) {\n    radiusSM = 7;\n  } else if (radiusBase >= 16) {\n    radiusSM = 8;\n  }\n  // radiusXS\n  if (radiusBase < 6 && radiusBase >= 2) {\n    radiusXS = 1;\n  } else if (radiusBase >= 6) {\n    radiusXS = 2;\n  }\n  // radiusOuter\n  if (radiusBase > 4 && radiusBase < 8) {\n    radiusOuter = 4;\n  } else if (radiusBase >= 8) {\n    radiusOuter = 6;\n  }\n  return {\n    borderRadius: radiusBase,\n    borderRadiusXS: radiusXS,\n    borderRadiusSM: radiusSM,\n    borderRadiusLG: radiusLG,\n    borderRadiusOuter: radiusOuter\n  };\n};\nexport default genRadius;","import genRadius from './genRadius';\nexport default function genCommonMapToken(token) {\n  const {\n    motionUnit,\n    motionBase,\n    borderRadius,\n    lineWidth\n  } = token;\n  return Object.assign({\n    // motion\n    motionDurationFast: `${(motionBase + motionUnit).toFixed(1)}s`,\n    motionDurationMid: `${(motionBase + motionUnit * 2).toFixed(1)}s`,\n    motionDurationSlow: `${(motionBase + motionUnit * 3).toFixed(1)}s`,\n    // line\n    lineWidthBold: lineWidth + 1\n  }, genRadius(borderRadius));\n}","const genControlHeight = token => {\n  const {\n    controlHeight\n  } = token;\n  return {\n    controlHeightSM: controlHeight * 0.75,\n    controlHeightXS: controlHeight * 0.5,\n    controlHeightLG: controlHeight * 1.25\n  };\n};\nexport default genControlHeight;","export function getLineHeight(fontSize) {\n  return (fontSize + 8) / fontSize;\n}\n// https://zhuanlan.zhihu.com/p/32746810\nexport default function getFontSizes(base) {\n  const fontSizes = Array.from({\n    length: 10\n  }).map((_, index) => {\n    const i = index - 1;\n    const baseSize = base * Math.pow(Math.E, i / 5);\n    const intSize = index > 1 ? Math.floor(baseSize) : Math.ceil(baseSize);\n    // Convert to even\n    return Math.floor(intSize / 2) * 2;\n  });\n  fontSizes[1] = base;\n  return fontSizes.map(size => ({\n    size,\n    lineHeight: getLineHeight(size)\n  }));\n}","import genFontSizes from './genFontSizes';\nconst genFontMapToken = fontSize => {\n  const fontSizePairs = genFontSizes(fontSize);\n  const fontSizes = fontSizePairs.map(pair => pair.size);\n  const lineHeights = fontSizePairs.map(pair => pair.lineHeight);\n  const fontSizeMD = fontSizes[1];\n  const fontSizeSM = fontSizes[0];\n  const fontSizeLG = fontSizes[2];\n  const lineHeight = lineHeights[1];\n  const lineHeightSM = lineHeights[0];\n  const lineHeightLG = lineHeights[2];\n  return {\n    fontSizeSM,\n    fontSize: fontSizeMD,\n    fontSizeLG,\n    fontSizeXL: fontSizes[3],\n    fontSizeHeading1: fontSizes[6],\n    fontSizeHeading2: fontSizes[5],\n    fontSizeHeading3: fontSizes[4],\n    fontSizeHeading4: fontSizes[3],\n    fontSizeHeading5: fontSizes[2],\n    lineHeight,\n    lineHeightLG,\n    lineHeightSM,\n    fontHeight: Math.round(lineHeight * fontSizeMD),\n    fontHeightLG: Math.round(lineHeightLG * fontSizeLG),\n    fontHeightSM: Math.round(lineHeightSM * fontSizeSM),\n    lineHeightHeading1: lineHeights[6],\n    lineHeightHeading2: lineHeights[5],\n    lineHeightHeading3: lineHeights[4],\n    lineHeightHeading4: lineHeights[3],\n    lineHeightHeading5: lineHeights[2]\n  };\n};\nexport default genFontMapToken;","export default function genSizeMapToken(token) {\n  const {\n    sizeUnit,\n    sizeStep\n  } = token;\n  return {\n    sizeXXL: sizeUnit * (sizeStep + 8),\n    // 48\n    sizeXL: sizeUnit * (sizeStep + 4),\n    // 32\n    sizeLG: sizeUnit * (sizeStep + 2),\n    // 24\n    sizeMD: sizeUnit * (sizeStep + 1),\n    // 20\n    sizeMS: sizeUnit * sizeStep,\n    // 16\n    size: sizeUnit * sizeStep,\n    // 16\n    sizeSM: sizeUnit * (sizeStep - 1),\n    // 12\n    sizeXS: sizeUnit * (sizeStep - 2),\n    // 8\n    sizeXXS: sizeUnit * (sizeStep - 3) // 4\n  };\n}","import { FastColor } from '@ant-design/fast-color';\nexport const getAlphaColor = (baseColor, alpha) => new FastColor(baseColor).setA(alpha).toRgbString();\nexport const getSolidColor = (baseColor, brightness) => {\n  const instance = new FastColor(baseColor);\n  return instance.darken(brightness).toHexString();\n};","import { generate } from '@ant-design/colors';\nimport { getAlphaColor, getSolidColor } from './colorAlgorithm';\nexport const generateColorPalettes = baseColor => {\n  const colors = generate(baseColor);\n  return {\n    1: colors[0],\n    2: colors[1],\n    3: colors[2],\n    4: colors[3],\n    5: colors[4],\n    6: colors[5],\n    7: colors[6],\n    8: colors[4],\n    9: colors[5],\n    10: colors[6]\n    // 8: colors[7],\n    // 9: colors[8],\n    // 10: colors[9],\n  };\n};\nexport const generateNeutralColorPalettes = (bgBaseColor, textBaseColor) => {\n  const colorBgBase = bgBaseColor || '#fff';\n  const colorTextBase = textBaseColor || '#000';\n  return {\n    colorBgBase,\n    colorTextBase,\n    colorText: getAlphaColor(colorTextBase, 0.88),\n    colorTextSecondary: getAlphaColor(colorTextBase, 0.65),\n    colorTextTertiary: getAlphaColor(colorTextBase, 0.45),\n    colorTextQuaternary: getAlphaColor(colorTextBase, 0.25),\n    colorFill: getAlphaColor(colorTextBase, 0.15),\n    colorFillSecondary: getAlphaColor(colorTextBase, 0.06),\n    colorFillTertiary: getAlphaColor(colorTextBase, 0.04),\n    colorFillQuaternary: getAlphaColor(colorTextBase, 0.02),\n    colorBgSolid: getAlphaColor(colorTextBase, 1),\n    colorBgSolidHover: getAlphaColor(colorTextBase, 0.75),\n    colorBgSolidActive: getAlphaColor(colorTextBase, 0.95),\n    colorBgLayout: getSolidColor(colorBgBase, 4),\n    colorBgContainer: getSolidColor(colorBgBase, 0),\n    colorBgElevated: getSolidColor(colorBgBase, 0),\n    colorBgSpotlight: getAlphaColor(colorTextBase, 0.85),\n    colorBgBlur: 'transparent',\n    colorBorder: getSolidColor(colorBgBase, 15),\n    colorBorderSecondary: getSolidColor(colorBgBase, 6)\n  };\n};","import { generate, presetPalettes, presetPrimaryColors } from '@ant-design/colors';\nimport { defaultPresetColors } from '../seed';\nimport genColorMapToken from '../shared/genColorMapToken';\nimport genCommonMapToken from '../shared/genCommonMapToken';\nimport genControlHeight from '../shared/genControlHeight';\nimport genFontMapToken from '../shared/genFontMapToken';\nimport genSizeMapToken from '../shared/genSizeMapToken';\nimport { generateColorPalettes, generateNeutralColorPalettes } from './colors';\nexport default function derivative(token) {\n  // pink is deprecated name of magenta, keep this for backwards compatibility\n  presetPrimaryColors.pink = presetPrimaryColors.magenta;\n  presetPalettes.pink = presetPalettes.magenta;\n  const colorPalettes = Object.keys(defaultPresetColors).map(colorKey => {\n    const colors = token[colorKey] === presetPrimaryColors[colorKey] ? presetPalettes[colorKey] : generate(token[colorKey]);\n    return Array.from({\n      length: 10\n    }, () => 1).reduce((prev, _, i) => {\n      prev[`${colorKey}-${i + 1}`] = colors[i];\n      prev[`${colorKey}${i + 1}`] = colors[i];\n      return prev;\n    }, {});\n  }).reduce((prev, cur) => {\n    prev = Object.assign(Object.assign({}, prev), cur);\n    return prev;\n  }, {});\n  return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, token), colorPalettes), genColorMapToken(token, {\n    generateColorPalettes,\n    generateNeutralColorPalettes\n  })), genFontMapToken(token.fontSize)), genSizeMapToken(token)), genControlHeight(token)), genCommonMapToken(token));\n}","import { createTheme } from '@ant-design/cssinjs';\nimport defaultDerivative from './index';\nconst defaultTheme = createTheme(defaultDerivative);\nexport default defaultTheme;","import React from 'react';\nimport defaultSeedToken from './themes/seed';\nexport { default as defaultTheme } from './themes/default/theme';\n// ================================ Context =================================\n// To ensure snapshot stable. We disable hashed in test env.\nexport const defaultConfig = {\n  token: defaultSeedToken,\n  override: {\n    override: defaultSeedToken\n  },\n  hashed: true\n};\nexport const DesignTokenContext = /*#__PURE__*/React.createContext(defaultConfig);","import * as React from 'react';\nexport const defaultPrefixCls = 'ant';\nexport const defaultIconPrefixCls = 'anticon';\nexport const Variants = ['outlined', 'borderless', 'filled', 'underlined'];\nconst defaultGetPrefixCls = (suffixCls, customizePrefixCls) => {\n  if (customizePrefixCls) {\n    return customizePrefixCls;\n  }\n  return suffixCls ? `${defaultPrefixCls}-${suffixCls}` : defaultPrefixCls;\n};\n// zombieJ: 🚨 Do not pass `defaultRenderEmpty` here since it will cause circular dependency.\nexport const ConfigContext = /*#__PURE__*/React.createContext({\n  // We provide a default function for Context without provider\n  getPrefixCls: defaultGetPrefixCls,\n  iconPrefixCls: defaultIconPrefixCls\n});\nexport const {\n  Consumer: ConfigConsumer\n} = ConfigContext;\nconst EMPTY_OBJECT = {};\n/**\n * Get ConfigProvider configured component props.\n * This help to reduce bundle size for saving `?.` operator.\n * Do not use as `useMemo` deps since we do not cache the object here.\n *\n * NOTE: not refactor this with `useMemo` since memo will cost another memory space,\n * which will waste both compare calculation & memory.\n */\nexport function useComponentConfig(propName) {\n  const context = React.useContext(ConfigContext);\n  const {\n    getPrefixCls,\n    direction,\n    getPopupContainer\n  } = context;\n  const propValue = context[propName];\n  return Object.assign(Object.assign({\n    classNames: EMPTY_OBJECT,\n    styles: EMPTY_OBJECT\n  }, propValue), {\n    getPrefixCls,\n    direction,\n    getPopupContainer\n  });\n}","import { generate } from '@ant-design/colors';\nimport { FastColor } from '@ant-design/fast-color';\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\nimport { updateCSS } from \"rc-util/es/Dom/dynamicCSS\";\nimport warning from '../_util/warning';\nconst dynamicStyleMark = `-ant-${Date.now()}-${Math.random()}`;\nexport function getStyle(globalPrefixCls, theme) {\n  const variables = {};\n  const formatColor = (color, updater) => {\n    let clone = color.clone();\n    clone = (updater === null || updater === void 0 ? void 0 : updater(clone)) || clone;\n    return clone.toRgbString();\n  };\n  const fillColor = (colorVal, type) => {\n    const baseColor = new FastColor(colorVal);\n    const colorPalettes = generate(baseColor.toRgbString());\n    variables[`${type}-color`] = formatColor(baseColor);\n    variables[`${type}-color-disabled`] = colorPalettes[1];\n    variables[`${type}-color-hover`] = colorPalettes[4];\n    variables[`${type}-color-active`] = colorPalettes[6];\n    variables[`${type}-color-outline`] = baseColor.clone().setA(0.2).toRgbString();\n    variables[`${type}-color-deprecated-bg`] = colorPalettes[0];\n    variables[`${type}-color-deprecated-border`] = colorPalettes[2];\n  };\n  // ================ Primary Color ================\n  if (theme.primaryColor) {\n    fillColor(theme.primaryColor, 'primary');\n    const primaryColor = new FastColor(theme.primaryColor);\n    const primaryColors = generate(primaryColor.toRgbString());\n    // Legacy - We should use semantic naming standard\n    primaryColors.forEach((color, index) => {\n      variables[`primary-${index + 1}`] = color;\n    });\n    // Deprecated\n    variables['primary-color-deprecated-l-35'] = formatColor(primaryColor, c => c.lighten(35));\n    variables['primary-color-deprecated-l-20'] = formatColor(primaryColor, c => c.lighten(20));\n    variables['primary-color-deprecated-t-20'] = formatColor(primaryColor, c => c.tint(20));\n    variables['primary-color-deprecated-t-50'] = formatColor(primaryColor, c => c.tint(50));\n    variables['primary-color-deprecated-f-12'] = formatColor(primaryColor, c => c.setA(c.a * 0.12));\n    const primaryActiveColor = new FastColor(primaryColors[0]);\n    variables['primary-color-active-deprecated-f-30'] = formatColor(primaryActiveColor, c => c.setA(c.a * 0.3));\n    variables['primary-color-active-deprecated-d-02'] = formatColor(primaryActiveColor, c => c.darken(2));\n  }\n  // ================ Success Color ================\n  if (theme.successColor) {\n    fillColor(theme.successColor, 'success');\n  }\n  // ================ Warning Color ================\n  if (theme.warningColor) {\n    fillColor(theme.warningColor, 'warning');\n  }\n  // ================= Error Color =================\n  if (theme.errorColor) {\n    fillColor(theme.errorColor, 'error');\n  }\n  // ================= Info Color ==================\n  if (theme.infoColor) {\n    fillColor(theme.infoColor, 'info');\n  }\n  // Convert to css variables\n  const cssList = Object.keys(variables).map(key => `--${globalPrefixCls}-${key}: ${variables[key]};`);\n  return `\n  :root {\n    ${cssList.join('\\n')}\n  }\n  `.trim();\n}\nexport function registerTheme(globalPrefixCls, theme) {\n  const style = getStyle(globalPrefixCls, theme);\n  if (canUseDom()) {\n    updateCSS(style, `${dynamicStyleMark}-dynamic-theme`);\n  } else {\n    process.env.NODE_ENV !== \"production\" ? warning(false, 'ConfigProvider', 'SSR do not support dynamic theme with css variables.') : void 0;\n  }\n}","\"use client\";\n\nimport * as React from 'react';\nconst DisabledContext = /*#__PURE__*/React.createContext(false);\nexport const DisabledContextProvider = ({\n  children,\n  disabled\n}) => {\n  const originDisabled = React.useContext(DisabledContext);\n  return /*#__PURE__*/React.createElement(DisabledContext.Provider, {\n    value: disabled !== null && disabled !== void 0 ? disabled : originDisabled\n  }, children);\n};\nexport default DisabledContext;","\"use client\";\n\nimport * as React from 'react';\nconst SizeContext = /*#__PURE__*/React.createContext(undefined);\nexport const SizeContextProvider = ({\n  children,\n  size\n}) => {\n  const originSize = React.useContext(SizeContext);\n  return /*#__PURE__*/React.createElement(SizeContext.Provider, {\n    value: size || originSize\n  }, children);\n};\nexport default SizeContext;","import { useContext } from 'react';\nimport DisabledContext from '../DisabledContext';\nimport SizeContext from '../SizeContext';\nfunction useConfig() {\n  const componentDisabled = useContext(DisabledContext);\n  const componentSize = useContext(SizeContext);\n  return {\n    componentDisabled,\n    componentSize\n  };\n}\nexport default useConfig;","import _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nvar AbstractCalculator = /*#__PURE__*/_createClass(function AbstractCalculator() {\n  _classCallCheck(this, AbstractCalculator);\n});\nexport default AbstractCalculator;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport AbstractCalculator from \"./calculator\";\nvar CALC_UNIT = 'CALC_UNIT';\nvar regexp = new RegExp(CALC_UNIT, 'g');\nfunction unit(value) {\n  if (typeof value === 'number') {\n    return \"\".concat(value).concat(CALC_UNIT);\n  }\n  return value;\n}\nvar CSSCalculator = /*#__PURE__*/function (_AbstractCalculator) {\n  _inherits(CSSCalculator, _AbstractCalculator);\n  var _super = _createSuper(CSSCalculator);\n  function CSSCalculator(num, unitlessCssVar) {\n    var _this;\n    _classCallCheck(this, CSSCalculator);\n    _this = _super.call(this);\n    _defineProperty(_assertThisInitialized(_this), \"result\", '');\n    _defineProperty(_assertThisInitialized(_this), \"unitlessCssVar\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"lowPriority\", void 0);\n    var numType = _typeof(num);\n    _this.unitlessCssVar = unitlessCssVar;\n    if (num instanceof CSSCalculator) {\n      _this.result = \"(\".concat(num.result, \")\");\n    } else if (numType === 'number') {\n      _this.result = unit(num);\n    } else if (numType === 'string') {\n      _this.result = num;\n    }\n    return _this;\n  }\n  _createClass(CSSCalculator, [{\n    key: \"add\",\n    value: function add(num) {\n      if (num instanceof CSSCalculator) {\n        this.result = \"\".concat(this.result, \" + \").concat(num.getResult());\n      } else if (typeof num === 'number' || typeof num === 'string') {\n        this.result = \"\".concat(this.result, \" + \").concat(unit(num));\n      }\n      this.lowPriority = true;\n      return this;\n    }\n  }, {\n    key: \"sub\",\n    value: function sub(num) {\n      if (num instanceof CSSCalculator) {\n        this.result = \"\".concat(this.result, \" - \").concat(num.getResult());\n      } else if (typeof num === 'number' || typeof num === 'string') {\n        this.result = \"\".concat(this.result, \" - \").concat(unit(num));\n      }\n      this.lowPriority = true;\n      return this;\n    }\n  }, {\n    key: \"mul\",\n    value: function mul(num) {\n      if (this.lowPriority) {\n        this.result = \"(\".concat(this.result, \")\");\n      }\n      if (num instanceof CSSCalculator) {\n        this.result = \"\".concat(this.result, \" * \").concat(num.getResult(true));\n      } else if (typeof num === 'number' || typeof num === 'string') {\n        this.result = \"\".concat(this.result, \" * \").concat(num);\n      }\n      this.lowPriority = false;\n      return this;\n    }\n  }, {\n    key: \"div\",\n    value: function div(num) {\n      if (this.lowPriority) {\n        this.result = \"(\".concat(this.result, \")\");\n      }\n      if (num instanceof CSSCalculator) {\n        this.result = \"\".concat(this.result, \" / \").concat(num.getResult(true));\n      } else if (typeof num === 'number' || typeof num === 'string') {\n        this.result = \"\".concat(this.result, \" / \").concat(num);\n      }\n      this.lowPriority = false;\n      return this;\n    }\n  }, {\n    key: \"getResult\",\n    value: function getResult(force) {\n      return this.lowPriority || force ? \"(\".concat(this.result, \")\") : this.result;\n    }\n  }, {\n    key: \"equal\",\n    value: function equal(options) {\n      var _this2 = this;\n      var _ref = options || {},\n        cssUnit = _ref.unit;\n      var mergedUnit = true;\n      if (typeof cssUnit === 'boolean') {\n        mergedUnit = cssUnit;\n      } else if (Array.from(this.unitlessCssVar).some(function (cssVar) {\n        return _this2.result.includes(cssVar);\n      })) {\n        mergedUnit = false;\n      }\n      this.result = this.result.replace(regexp, mergedUnit ? 'px' : '');\n      if (typeof this.lowPriority !== 'undefined') {\n        return \"calc(\".concat(this.result, \")\");\n      }\n      return this.result;\n    }\n  }]);\n  return CSSCalculator;\n}(AbstractCalculator);\nexport { CSSCalculator as default };","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport AbstractCalculator from \"./calculator\";\nvar NumCalculator = /*#__PURE__*/function (_AbstractCalculator) {\n  _inherits(NumCalculator, _AbstractCalculator);\n  var _super = _createSuper(NumCalculator);\n  function NumCalculator(num) {\n    var _this;\n    _classCallCheck(this, NumCalculator);\n    _this = _super.call(this);\n    _defineProperty(_assertThisInitialized(_this), \"result\", 0);\n    if (num instanceof NumCalculator) {\n      _this.result = num.result;\n    } else if (typeof num === 'number') {\n      _this.result = num;\n    }\n    return _this;\n  }\n  _createClass(NumCalculator, [{\n    key: \"add\",\n    value: function add(num) {\n      if (num instanceof NumCalculator) {\n        this.result += num.result;\n      } else if (typeof num === 'number') {\n        this.result += num;\n      }\n      return this;\n    }\n  }, {\n    key: \"sub\",\n    value: function sub(num) {\n      if (num instanceof NumCalculator) {\n        this.result -= num.result;\n      } else if (typeof num === 'number') {\n        this.result -= num;\n      }\n      return this;\n    }\n  }, {\n    key: \"mul\",\n    value: function mul(num) {\n      if (num instanceof NumCalculator) {\n        this.result *= num.result;\n      } else if (typeof num === 'number') {\n        this.result *= num;\n      }\n      return this;\n    }\n  }, {\n    key: \"div\",\n    value: function div(num) {\n      if (num instanceof NumCalculator) {\n        this.result /= num.result;\n      } else if (typeof num === 'number') {\n        this.result /= num;\n      }\n      return this;\n    }\n  }, {\n    key: \"equal\",\n    value: function equal() {\n      return this.result;\n    }\n  }]);\n  return NumCalculator;\n}(AbstractCalculator);\nexport default NumCalculator;","import CSSCalculator from \"./CSSCalculator\";\nimport NumCalculator from \"./NumCalculator\";\nvar genCalc = function genCalc(type, unitlessCssVar) {\n  var Calculator = type === 'css' ? CSSCalculator : NumCalculator;\n  return function (num) {\n    return new Calculator(num, unitlessCssVar);\n  };\n};\nexport default genCalc;","var getCompVarPrefix = function getCompVarPrefix(component, prefix) {\n  return \"\".concat([prefix, component.replace(/([A-Z]+)([A-Z][a-z]+)/g, '$1-$2').replace(/([a-z])([A-Z])/g, '$1-$2')].filter(Boolean).join('-'));\n};\nexport default getCompVarPrefix;","import * as React from 'react';\nexport default function useEvent(callback) {\n  var fnRef = React.useRef();\n  fnRef.current = callback;\n  var memoFn = React.useCallback(function () {\n    var _fnRef$current;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    return (_fnRef$current = fnRef.current) === null || _fnRef$current === void 0 ? void 0 : _fnRef$current.call.apply(_fnRef$current, [fnRef].concat(args));\n  }, []);\n  return memoFn;\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\n/**\n * Same as React.useState but `setState` accept `ignoreDestroy` param to not to setState after destroyed.\n * We do not make this auto is to avoid real memory leak.\n * Developer should confirm it's safe to ignore themselves.\n */\nexport default function useSafeState(defaultValue) {\n  var destroyRef = React.useRef(false);\n  var _React$useState = React.useState(defaultValue),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    value = _React$useState2[0],\n    setValue = _React$useState2[1];\n  React.useEffect(function () {\n    destroyRef.current = false;\n    return function () {\n      destroyRef.current = true;\n    };\n  }, []);\n  function safeSetState(updater, ignoreDestroy) {\n    if (ignoreDestroy && destroyRef.current) {\n      return;\n    }\n    setValue(updater);\n  }\n  return [value, safeSetState];\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport useEvent from \"./useEvent\";\nimport { useLayoutUpdateEffect } from \"./useLayoutEffect\";\nimport useState from \"./useState\";\n/** We only think `undefined` is empty */\nfunction hasValue(value) {\n  return value !== undefined;\n}\n\n/**\n * Similar to `useState` but will use props value if provided.\n * Note that internal use rc-util `useState` hook.\n */\nexport default function useMergedState(defaultStateValue, option) {\n  var _ref = option || {},\n    defaultValue = _ref.defaultValue,\n    value = _ref.value,\n    onChange = _ref.onChange,\n    postState = _ref.postState;\n\n  // ======================= Init =======================\n  var _useState = useState(function () {\n      if (hasValue(value)) {\n        return value;\n      } else if (hasValue(defaultValue)) {\n        return typeof defaultValue === 'function' ? defaultValue() : defaultValue;\n      } else {\n        return typeof defaultStateValue === 'function' ? defaultStateValue() : defaultStateValue;\n      }\n    }),\n    _useState2 = _slicedToArray(_useState, 2),\n    innerValue = _useState2[0],\n    setInnerValue = _useState2[1];\n  var mergedValue = value !== undefined ? value : innerValue;\n  var postMergedValue = postState ? postState(mergedValue) : mergedValue;\n\n  // ====================== Change ======================\n  var onChangeFn = useEvent(onChange);\n  var _useState3 = useState([mergedValue]),\n    _useState4 = _slicedToArray(_useState3, 2),\n    prevValue = _useState4[0],\n    setPrevValue = _useState4[1];\n  useLayoutUpdateEffect(function () {\n    var prev = prevValue[0];\n    if (innerValue !== prev) {\n      onChangeFn(innerValue, prev);\n    }\n  }, [prevValue]);\n\n  // Sync value back to `undefined` when it from control to un-control\n  useLayoutUpdateEffect(function () {\n    if (!hasValue(value)) {\n      setInnerValue(value);\n    }\n  }, [value]);\n\n  // ====================== Update ======================\n  var triggerChange = useEvent(function (updater, ignoreDestroy) {\n    setInnerValue(updater, ignoreDestroy);\n    setPrevValue([mergedValue], ignoreDestroy);\n  });\n  return [postMergedValue, triggerChange];\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport { warning } from 'rc-util';\nfunction getComponentToken(component, token, defaultToken, options) {\n  var customToken = _objectSpread({}, token[component]);\n  if (options !== null && options !== void 0 && options.deprecatedTokens) {\n    var deprecatedTokens = options.deprecatedTokens;\n    deprecatedTokens.forEach(function (_ref) {\n      var _ref2 = _slicedToArray(_ref, 2),\n        oldTokenKey = _ref2[0],\n        newTokenKey = _ref2[1];\n      if (process.env.NODE_ENV !== 'production') {\n        warning(!(customToken !== null && customToken !== void 0 && customToken[oldTokenKey]), \"Component Token `\".concat(String(oldTokenKey), \"` of \").concat(String(component), \" is deprecated. Please use `\").concat(String(newTokenKey), \"` instead.\"));\n      }\n\n      // Should wrap with `if` clause, or there will be `undefined` in object.\n      if (customToken !== null && customToken !== void 0 && customToken[oldTokenKey] || customToken !== null && customToken !== void 0 && customToken[newTokenKey]) {\n        var _customToken$newToken;\n        (_customToken$newToken = customToken[newTokenKey]) !== null && _customToken$newToken !== void 0 ? _customToken$newToken : customToken[newTokenKey] = customToken === null || customToken === void 0 ? void 0 : customToken[oldTokenKey];\n      }\n    });\n  }\n  var mergedToken = _objectSpread(_objectSpread({}, defaultToken), customToken);\n\n  // Remove same value as global token to minimize size\n  Object.keys(mergedToken).forEach(function (key) {\n    if (mergedToken[key] === token[key]) {\n      delete mergedToken[key];\n    }\n  });\n  return mergedToken;\n}\nexport default getComponentToken;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar enableStatistic = process.env.NODE_ENV !== 'production' || typeof CSSINJS_STATISTIC !== 'undefined';\nvar recording = true;\n\n/**\n * This function will do as `Object.assign` in production. But will use Object.defineProperty:get to\n * pass all value access in development. To support statistic field usage with alias token.\n */\nexport function merge() {\n  for (var _len = arguments.length, objs = new Array(_len), _key = 0; _key < _len; _key++) {\n    objs[_key] = arguments[_key];\n  }\n  /* istanbul ignore next */\n  if (!enableStatistic) {\n    return Object.assign.apply(Object, [{}].concat(objs));\n  }\n  recording = false;\n  var ret = {};\n  objs.forEach(function (obj) {\n    if (_typeof(obj) !== 'object') {\n      return;\n    }\n    var keys = Object.keys(obj);\n    keys.forEach(function (key) {\n      Object.defineProperty(ret, key, {\n        configurable: true,\n        enumerable: true,\n        get: function get() {\n          return obj[key];\n        }\n      });\n    });\n  });\n  recording = true;\n  return ret;\n}\n\n/** @internal Internal Usage. Not use in your production. */\nexport var statistic = {};\n\n/** @internal Internal Usage. Not use in your production. */\nexport var _statistic_build_ = {};\n\n/* istanbul ignore next */\nfunction noop() {}\n\n/** Statistic token usage case. Should use `merge` function if you do not want spread record. */\nvar statisticToken = function statisticToken(token) {\n  var tokenKeys;\n  var proxy = token;\n  var flush = noop;\n  if (enableStatistic && typeof Proxy !== 'undefined') {\n    tokenKeys = new Set();\n    proxy = new Proxy(token, {\n      get: function get(obj, prop) {\n        if (recording) {\n          var _tokenKeys;\n          (_tokenKeys = tokenKeys) === null || _tokenKeys === void 0 || _tokenKeys.add(prop);\n        }\n        return obj[prop];\n      }\n    });\n    flush = function flush(componentName, componentToken) {\n      var _statistic$componentN;\n      statistic[componentName] = {\n        global: Array.from(tokenKeys),\n        component: _objectSpread(_objectSpread({}, (_statistic$componentN = statistic[componentName]) === null || _statistic$componentN === void 0 ? void 0 : _statistic$componentN.component), componentToken)\n      };\n    };\n  }\n  return {\n    token: proxy,\n    keys: tokenKeys,\n    flush: flush\n  };\n};\nexport default statisticToken;","import { merge as mergeToken } from \"./statistic\";\nfunction getDefaultComponentToken(component, token, getDefaultToken) {\n  if (typeof getDefaultToken === 'function') {\n    var _token$component;\n    return getDefaultToken(mergeToken(token, (_token$component = token[component]) !== null && _token$component !== void 0 ? _token$component : {}));\n  }\n  return getDefaultToken !== null && getDefaultToken !== void 0 ? getDefaultToken : {};\n}\nexport default getDefaultComponentToken;","import { unit } from '@ant-design/cssinjs';\nfunction genMaxMin(type) {\n  if (type === 'js') {\n    return {\n      max: Math.max,\n      min: Math.min\n    };\n  }\n  return {\n    max: function max() {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      return \"max(\".concat(args.map(function (value) {\n        return unit(value);\n      }).join(','), \")\");\n    },\n    min: function min() {\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n      return \"min(\".concat(args.map(function (value) {\n        return unit(value);\n      }).join(','), \")\");\n    }\n  };\n}\nexport default genMaxMin;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport React from 'react';\nvar BEAT_LIMIT = 1000 * 60 * 10;\n\n/**\n * A helper class to map keys to values.\n * It supports both primitive keys and object keys.\n */\nvar ArrayKeyMap = /*#__PURE__*/function () {\n  function ArrayKeyMap() {\n    _classCallCheck(this, ArrayKeyMap);\n    _defineProperty(this, \"map\", new Map());\n    // Use WeakMap to avoid memory leak\n    _defineProperty(this, \"objectIDMap\", new WeakMap());\n    _defineProperty(this, \"nextID\", 0);\n    _defineProperty(this, \"lastAccessBeat\", new Map());\n    // We will clean up the cache when reach the limit\n    _defineProperty(this, \"accessBeat\", 0);\n  }\n  _createClass(ArrayKeyMap, [{\n    key: \"set\",\n    value: function set(keys, value) {\n      // New set will trigger clear\n      this.clear();\n\n      // Set logic\n      var compositeKey = this.getCompositeKey(keys);\n      this.map.set(compositeKey, value);\n      this.lastAccessBeat.set(compositeKey, Date.now());\n    }\n  }, {\n    key: \"get\",\n    value: function get(keys) {\n      var compositeKey = this.getCompositeKey(keys);\n      var cache = this.map.get(compositeKey);\n      this.lastAccessBeat.set(compositeKey, Date.now());\n      this.accessBeat += 1;\n      return cache;\n    }\n  }, {\n    key: \"getCompositeKey\",\n    value: function getCompositeKey(keys) {\n      var _this = this;\n      var ids = keys.map(function (key) {\n        if (key && _typeof(key) === 'object') {\n          return \"obj_\".concat(_this.getObjectID(key));\n        }\n        return \"\".concat(_typeof(key), \"_\").concat(key);\n      });\n      return ids.join('|');\n    }\n  }, {\n    key: \"getObjectID\",\n    value: function getObjectID(obj) {\n      if (this.objectIDMap.has(obj)) {\n        return this.objectIDMap.get(obj);\n      }\n      var id = this.nextID;\n      this.objectIDMap.set(obj, id);\n      this.nextID += 1;\n      return id;\n    }\n  }, {\n    key: \"clear\",\n    value: function clear() {\n      var _this2 = this;\n      if (this.accessBeat > 10000) {\n        var now = Date.now();\n        this.lastAccessBeat.forEach(function (beat, key) {\n          if (now - beat > BEAT_LIMIT) {\n            _this2.map.delete(key);\n            _this2.lastAccessBeat.delete(key);\n          }\n        });\n        this.accessBeat = 0;\n      }\n    }\n  }]);\n  return ArrayKeyMap;\n}();\nvar uniqueMap = new ArrayKeyMap();\n\n/**\n * Like `useMemo`, but this hook result will be shared across all instances.\n */\nfunction useUniqueMemo(memoFn, deps) {\n  return React.useMemo(function () {\n    var cachedValue = uniqueMap.get(deps);\n    if (cachedValue) {\n      return cachedValue;\n    }\n    var newValue = memoFn();\n    uniqueMap.set(deps, newValue);\n    return newValue;\n  }, deps);\n}\nexport default useUniqueMemo;","/**\n * Provide a default hook since not everyone needs to config this.\n */\nvar useDefaultCSP = function useDefaultCSP() {\n  return {};\n};\nexport default useDefaultCSP;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport React from 'react';\nimport { token2CSSVar, useCSSVarRegister, useStyleRegister } from '@ant-design/cssinjs';\nimport genCalc from \"./calc\";\nimport getCompVarPrefix from \"./getCompVarPrefix\";\nimport getComponentToken from \"./getComponentToken\";\nimport getDefaultComponentToken from \"./getDefaultComponentToken\";\nimport genMaxMin from \"./maxmin\";\nimport statisticToken, { merge as mergeToken } from \"./statistic\";\nimport useUniqueMemo from \"../_util/hooks/useUniqueMemo\";\nimport useDefaultCSP from \"../hooks/useCSP\";\nfunction genStyleUtils(config) {\n  // Dependency inversion for preparing basic config.\n  var _config$useCSP = config.useCSP,\n    useCSP = _config$useCSP === void 0 ? useDefaultCSP : _config$useCSP,\n    useToken = config.useToken,\n    usePrefix = config.usePrefix,\n    getResetStyles = config.getResetStyles,\n    getCommonStyle = config.getCommonStyle,\n    getCompUnitless = config.getCompUnitless;\n  function genStyleHooks(component, styleFn, getDefaultToken, options) {\n    var componentName = Array.isArray(component) ? component[0] : component;\n    function prefixToken(key) {\n      return \"\".concat(String(componentName)).concat(key.slice(0, 1).toUpperCase()).concat(key.slice(1));\n    }\n\n    // Fill unitless\n    var originUnitless = (options === null || options === void 0 ? void 0 : options.unitless) || {};\n    var originCompUnitless = typeof getCompUnitless === 'function' ? getCompUnitless(component) : {};\n    var compUnitless = _objectSpread(_objectSpread({}, originCompUnitless), {}, _defineProperty({}, prefixToken('zIndexPopup'), true));\n    Object.keys(originUnitless).forEach(function (key) {\n      compUnitless[prefixToken(key)] = originUnitless[key];\n    });\n\n    // Options\n    var mergedOptions = _objectSpread(_objectSpread({}, options), {}, {\n      unitless: compUnitless,\n      prefixToken: prefixToken\n    });\n\n    // Hooks\n    var useStyle = genComponentStyleHook(component, styleFn, getDefaultToken, mergedOptions);\n    var useCSSVar = genCSSVarRegister(componentName, getDefaultToken, mergedOptions);\n    return function (prefixCls) {\n      var rootCls = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : prefixCls;\n      var _useStyle = useStyle(prefixCls, rootCls),\n        _useStyle2 = _slicedToArray(_useStyle, 2),\n        hashId = _useStyle2[1];\n      var _useCSSVar = useCSSVar(rootCls),\n        _useCSSVar2 = _slicedToArray(_useCSSVar, 2),\n        wrapCSSVar = _useCSSVar2[0],\n        cssVarCls = _useCSSVar2[1];\n      return [wrapCSSVar, hashId, cssVarCls];\n    };\n  }\n  function genCSSVarRegister(component, getDefaultToken, options) {\n    var compUnitless = options.unitless,\n      _options$injectStyle = options.injectStyle,\n      injectStyle = _options$injectStyle === void 0 ? true : _options$injectStyle,\n      prefixToken = options.prefixToken,\n      ignore = options.ignore;\n    var CSSVarRegister = function CSSVarRegister(_ref) {\n      var rootCls = _ref.rootCls,\n        _ref$cssVar = _ref.cssVar,\n        cssVar = _ref$cssVar === void 0 ? {} : _ref$cssVar;\n      var _useToken = useToken(),\n        realToken = _useToken.realToken;\n      useCSSVarRegister({\n        path: [component],\n        prefix: cssVar.prefix,\n        key: cssVar.key,\n        unitless: compUnitless,\n        ignore: ignore,\n        token: realToken,\n        scope: rootCls\n      }, function () {\n        var defaultToken = getDefaultComponentToken(component, realToken, getDefaultToken);\n        var componentToken = getComponentToken(component, realToken, defaultToken, {\n          deprecatedTokens: options === null || options === void 0 ? void 0 : options.deprecatedTokens\n        });\n        Object.keys(defaultToken).forEach(function (key) {\n          componentToken[prefixToken(key)] = componentToken[key];\n          delete componentToken[key];\n        });\n        return componentToken;\n      });\n      return null;\n    };\n    var useCSSVar = function useCSSVar(rootCls) {\n      var _useToken2 = useToken(),\n        cssVar = _useToken2.cssVar;\n      return [function (node) {\n        return injectStyle && cssVar ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(CSSVarRegister, {\n          rootCls: rootCls,\n          cssVar: cssVar,\n          component: component\n        }), node) : node;\n      }, cssVar === null || cssVar === void 0 ? void 0 : cssVar.key];\n    };\n    return useCSSVar;\n  }\n  function genComponentStyleHook(componentName, styleFn, getDefaultToken) {\n    var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n    var cells = Array.isArray(componentName) ? componentName : [componentName, componentName];\n    var _cells = _slicedToArray(cells, 1),\n      component = _cells[0];\n    var concatComponent = cells.join('-');\n    var mergedLayer = config.layer || {\n      name: 'antd'\n    };\n\n    // Return new style hook\n    return function (prefixCls) {\n      var rootCls = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : prefixCls;\n      var _useToken3 = useToken(),\n        theme = _useToken3.theme,\n        realToken = _useToken3.realToken,\n        hashId = _useToken3.hashId,\n        token = _useToken3.token,\n        cssVar = _useToken3.cssVar;\n      var _usePrefix = usePrefix(),\n        rootPrefixCls = _usePrefix.rootPrefixCls,\n        iconPrefixCls = _usePrefix.iconPrefixCls;\n      var csp = useCSP();\n      var type = cssVar ? 'css' : 'js';\n\n      // Use unique memo to share the result across all instances\n      var calc = useUniqueMemo(function () {\n        var unitlessCssVar = new Set();\n        if (cssVar) {\n          Object.keys(options.unitless || {}).forEach(function (key) {\n            // Some component proxy the AliasToken (e.g. Image) and some not (e.g. Modal)\n            // We should both pass in `unitlessCssVar` to make sure the CSSVar can be unitless.\n            unitlessCssVar.add(token2CSSVar(key, cssVar.prefix));\n            unitlessCssVar.add(token2CSSVar(key, getCompVarPrefix(component, cssVar.prefix)));\n          });\n        }\n        return genCalc(type, unitlessCssVar);\n      }, [type, component, cssVar === null || cssVar === void 0 ? void 0 : cssVar.prefix]);\n      var _genMaxMin = genMaxMin(type),\n        max = _genMaxMin.max,\n        min = _genMaxMin.min;\n\n      // Shared config\n      var sharedConfig = {\n        theme: theme,\n        token: token,\n        hashId: hashId,\n        nonce: function nonce() {\n          return csp.nonce;\n        },\n        clientOnly: options.clientOnly,\n        layer: mergedLayer,\n        // antd is always at top of styles\n        order: options.order || -999\n      };\n\n      // This if statement is safe, as it will only be used if the generator has the function. It's not dynamic.\n      if (typeof getResetStyles === 'function') {\n        // Generate style for all need reset tags.\n        useStyleRegister(_objectSpread(_objectSpread({}, sharedConfig), {}, {\n          clientOnly: false,\n          path: ['Shared', rootPrefixCls]\n        }), function () {\n          return getResetStyles(token, {\n            prefix: {\n              rootPrefixCls: rootPrefixCls,\n              iconPrefixCls: iconPrefixCls\n            },\n            csp: csp\n          });\n        });\n      }\n      var wrapSSR = useStyleRegister(_objectSpread(_objectSpread({}, sharedConfig), {}, {\n        path: [concatComponent, prefixCls, iconPrefixCls]\n      }), function () {\n        if (options.injectStyle === false) {\n          return [];\n        }\n        var _statisticToken = statisticToken(token),\n          proxyToken = _statisticToken.token,\n          flush = _statisticToken.flush;\n        var defaultComponentToken = getDefaultComponentToken(component, realToken, getDefaultToken);\n        var componentCls = \".\".concat(prefixCls);\n        var componentToken = getComponentToken(component, realToken, defaultComponentToken, {\n          deprecatedTokens: options.deprecatedTokens\n        });\n        if (cssVar && defaultComponentToken && _typeof(defaultComponentToken) === 'object') {\n          Object.keys(defaultComponentToken).forEach(function (key) {\n            defaultComponentToken[key] = \"var(\".concat(token2CSSVar(key, getCompVarPrefix(component, cssVar.prefix)), \")\");\n          });\n        }\n        var mergedToken = mergeToken(proxyToken, {\n          componentCls: componentCls,\n          prefixCls: prefixCls,\n          iconCls: \".\".concat(iconPrefixCls),\n          antCls: \".\".concat(rootPrefixCls),\n          calc: calc,\n          // @ts-ignore\n          max: max,\n          // @ts-ignore\n          min: min\n        }, cssVar ? defaultComponentToken : componentToken);\n        var styleInterpolation = styleFn(mergedToken, {\n          hashId: hashId,\n          prefixCls: prefixCls,\n          rootPrefixCls: rootPrefixCls,\n          iconPrefixCls: iconPrefixCls\n        });\n        flush(component, componentToken);\n        var commonStyle = typeof getCommonStyle === 'function' ? getCommonStyle(mergedToken, prefixCls, rootCls, options.resetFont) : null;\n        return [options.resetStyle === false ? null : commonStyle, styleInterpolation];\n      });\n      return [wrapSSR, hashId];\n    };\n  }\n  function genSubStyleComponent(componentName, styleFn, getDefaultToken) {\n    var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n    var useStyle = genComponentStyleHook(componentName, styleFn, getDefaultToken, _objectSpread({\n      resetStyle: false,\n      // Sub Style should default after root one\n      order: -998\n    }, options));\n    var StyledComponent = function StyledComponent(_ref2) {\n      var prefixCls = _ref2.prefixCls,\n        _ref2$rootCls = _ref2.rootCls,\n        rootCls = _ref2$rootCls === void 0 ? prefixCls : _ref2$rootCls;\n      useStyle(prefixCls, rootCls);\n      return null;\n    };\n    if (process.env.NODE_ENV !== 'production') {\n      StyledComponent.displayName = \"SubStyle_\".concat(String(Array.isArray(componentName) ? componentName.join('.') : componentName));\n    }\n    return StyledComponent;\n  }\n  return {\n    genStyleHooks: genStyleHooks,\n    genSubStyleComponent: genSubStyleComponent,\n    genComponentStyleHook: genComponentStyleHook\n  };\n}\nexport default genStyleUtils;","export const PresetColors = ['blue', 'purple', 'cyan', 'green', 'magenta', 'pink', 'red', 'orange', 'yellow', 'volcano', 'geekblue', 'lime', 'gold'];","export default '5.26.3';","import { FastColor } from '@ant-design/fast-color';\nfunction isStableColor(color) {\n  return color >= 0 && color <= 255;\n}\nfunction getAlphaColor(frontColor, backgroundColor) {\n  const {\n    r: fR,\n    g: fG,\n    b: fB,\n    a: originAlpha\n  } = new FastColor(frontColor).toRgb();\n  if (originAlpha < 1) {\n    return frontColor;\n  }\n  const {\n    r: bR,\n    g: bG,\n    b: bB\n  } = new FastColor(backgroundColor).toRgb();\n  for (let fA = 0.01; fA <= 1; fA += 0.01) {\n    const r = Math.round((fR - bR * (1 - fA)) / fA);\n    const g = Math.round((fG - bG * (1 - fA)) / fA);\n    const b = Math.round((fB - bB * (1 - fA)) / fA);\n    if (isStableColor(r) && isStableColor(g) && isStableColor(b)) {\n      return new FastColor({\n        r,\n        g,\n        b,\n        a: Math.round(fA * 100) / 100\n      }).toRgbString();\n    }\n  }\n  // fallback\n  /* istanbul ignore next */\n  return new FastColor({\n    r: fR,\n    g: fG,\n    b: fB,\n    a: 1\n  }).toRgbString();\n}\nexport default getAlphaColor;","var __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport { FastColor } from '@ant-design/fast-color';\nimport seedToken from '../themes/seed';\nimport getAlphaColor from './getAlphaColor';\n/**\n * Seed (designer) > Derivative (designer) > Alias (developer).\n *\n * Merge seed & derivative & override token and generate alias token for developer.\n */\nexport default function formatToken(derivativeToken) {\n  const {\n      override\n    } = derivativeToken,\n    restToken = __rest(derivativeToken, [\"override\"]);\n  const overrideTokens = Object.assign({}, override);\n  Object.keys(seedToken).forEach(token => {\n    delete overrideTokens[token];\n  });\n  const mergedToken = Object.assign(Object.assign({}, restToken), overrideTokens);\n  const screenXS = 480;\n  const screenSM = 576;\n  const screenMD = 768;\n  const screenLG = 992;\n  const screenXL = 1200;\n  const screenXXL = 1600;\n  // Motion\n  if (mergedToken.motion === false) {\n    const fastDuration = '0s';\n    mergedToken.motionDurationFast = fastDuration;\n    mergedToken.motionDurationMid = fastDuration;\n    mergedToken.motionDurationSlow = fastDuration;\n  }\n  // Generate alias token\n  const aliasToken = Object.assign(Object.assign(Object.assign({}, mergedToken), {\n    // ============== Background ============== //\n    colorFillContent: mergedToken.colorFillSecondary,\n    colorFillContentHover: mergedToken.colorFill,\n    colorFillAlter: mergedToken.colorFillQuaternary,\n    colorBgContainerDisabled: mergedToken.colorFillTertiary,\n    // ============== Split ============== //\n    colorBorderBg: mergedToken.colorBgContainer,\n    colorSplit: getAlphaColor(mergedToken.colorBorderSecondary, mergedToken.colorBgContainer),\n    // ============== Text ============== //\n    colorTextPlaceholder: mergedToken.colorTextQuaternary,\n    colorTextDisabled: mergedToken.colorTextQuaternary,\n    colorTextHeading: mergedToken.colorText,\n    colorTextLabel: mergedToken.colorTextSecondary,\n    colorTextDescription: mergedToken.colorTextTertiary,\n    colorTextLightSolid: mergedToken.colorWhite,\n    colorHighlight: mergedToken.colorError,\n    colorBgTextHover: mergedToken.colorFillSecondary,\n    colorBgTextActive: mergedToken.colorFill,\n    colorIcon: mergedToken.colorTextTertiary,\n    colorIconHover: mergedToken.colorText,\n    colorErrorOutline: getAlphaColor(mergedToken.colorErrorBg, mergedToken.colorBgContainer),\n    colorWarningOutline: getAlphaColor(mergedToken.colorWarningBg, mergedToken.colorBgContainer),\n    // Font\n    fontSizeIcon: mergedToken.fontSizeSM,\n    // Line\n    lineWidthFocus: mergedToken.lineWidth * 3,\n    // Control\n    lineWidth: mergedToken.lineWidth,\n    controlOutlineWidth: mergedToken.lineWidth * 2,\n    // Checkbox size and expand icon size\n    controlInteractiveSize: mergedToken.controlHeight / 2,\n    controlItemBgHover: mergedToken.colorFillTertiary,\n    controlItemBgActive: mergedToken.colorPrimaryBg,\n    controlItemBgActiveHover: mergedToken.colorPrimaryBgHover,\n    controlItemBgActiveDisabled: mergedToken.colorFill,\n    controlTmpOutline: mergedToken.colorFillQuaternary,\n    controlOutline: getAlphaColor(mergedToken.colorPrimaryBg, mergedToken.colorBgContainer),\n    lineType: mergedToken.lineType,\n    borderRadius: mergedToken.borderRadius,\n    borderRadiusXS: mergedToken.borderRadiusXS,\n    borderRadiusSM: mergedToken.borderRadiusSM,\n    borderRadiusLG: mergedToken.borderRadiusLG,\n    fontWeightStrong: 600,\n    opacityLoading: 0.65,\n    linkDecoration: 'none',\n    linkHoverDecoration: 'none',\n    linkFocusDecoration: 'none',\n    controlPaddingHorizontal: 12,\n    controlPaddingHorizontalSM: 8,\n    paddingXXS: mergedToken.sizeXXS,\n    paddingXS: mergedToken.sizeXS,\n    paddingSM: mergedToken.sizeSM,\n    padding: mergedToken.size,\n    paddingMD: mergedToken.sizeMD,\n    paddingLG: mergedToken.sizeLG,\n    paddingXL: mergedToken.sizeXL,\n    paddingContentHorizontalLG: mergedToken.sizeLG,\n    paddingContentVerticalLG: mergedToken.sizeMS,\n    paddingContentHorizontal: mergedToken.sizeMS,\n    paddingContentVertical: mergedToken.sizeSM,\n    paddingContentHorizontalSM: mergedToken.size,\n    paddingContentVerticalSM: mergedToken.sizeXS,\n    marginXXS: mergedToken.sizeXXS,\n    marginXS: mergedToken.sizeXS,\n    marginSM: mergedToken.sizeSM,\n    margin: mergedToken.size,\n    marginMD: mergedToken.sizeMD,\n    marginLG: mergedToken.sizeLG,\n    marginXL: mergedToken.sizeXL,\n    marginXXL: mergedToken.sizeXXL,\n    boxShadow: `\n      0 6px 16px 0 rgba(0, 0, 0, 0.08),\n      0 3px 6px -4px rgba(0, 0, 0, 0.12),\n      0 9px 28px 8px rgba(0, 0, 0, 0.05)\n    `,\n    boxShadowSecondary: `\n      0 6px 16px 0 rgba(0, 0, 0, 0.08),\n      0 3px 6px -4px rgba(0, 0, 0, 0.12),\n      0 9px 28px 8px rgba(0, 0, 0, 0.05)\n    `,\n    boxShadowTertiary: `\n      0 1px 2px 0 rgba(0, 0, 0, 0.03),\n      0 1px 6px -1px rgba(0, 0, 0, 0.02),\n      0 2px 4px 0 rgba(0, 0, 0, 0.02)\n    `,\n    screenXS,\n    screenXSMin: screenXS,\n    screenXSMax: screenSM - 1,\n    screenSM,\n    screenSMMin: screenSM,\n    screenSMMax: screenMD - 1,\n    screenMD,\n    screenMDMin: screenMD,\n    screenMDMax: screenLG - 1,\n    screenLG,\n    screenLGMin: screenLG,\n    screenLGMax: screenXL - 1,\n    screenXL,\n    screenXLMin: screenXL,\n    screenXLMax: screenXXL - 1,\n    screenXXL,\n    screenXXLMin: screenXXL,\n    boxShadowPopoverArrow: '2px 2px 5px rgba(0, 0, 0, 0.05)',\n    boxShadowCard: `\n      0 1px 2px -2px ${new FastColor('rgba(0, 0, 0, 0.16)').toRgbString()},\n      0 3px 6px 0 ${new FastColor('rgba(0, 0, 0, 0.12)').toRgbString()},\n      0 5px 12px 4px ${new FastColor('rgba(0, 0, 0, 0.09)').toRgbString()}\n    `,\n    boxShadowDrawerRight: `\n      -6px 0 16px 0 rgba(0, 0, 0, 0.08),\n      -3px 0 6px -4px rgba(0, 0, 0, 0.12),\n      -9px 0 28px 8px rgba(0, 0, 0, 0.05)\n    `,\n    boxShadowDrawerLeft: `\n      6px 0 16px 0 rgba(0, 0, 0, 0.08),\n      3px 0 6px -4px rgba(0, 0, 0, 0.12),\n      9px 0 28px 8px rgba(0, 0, 0, 0.05)\n    `,\n    boxShadowDrawerUp: `\n      0 6px 16px 0 rgba(0, 0, 0, 0.08),\n      0 3px 6px -4px rgba(0, 0, 0, 0.12),\n      0 9px 28px 8px rgba(0, 0, 0, 0.05)\n    `,\n    boxShadowDrawerDown: `\n      0 -6px 16px 0 rgba(0, 0, 0, 0.08),\n      0 -3px 6px -4px rgba(0, 0, 0, 0.12),\n      0 -9px 28px 8px rgba(0, 0, 0, 0.05)\n    `,\n    boxShadowTabsOverflowLeft: 'inset 10px 0 8px -8px rgba(0, 0, 0, 0.08)',\n    boxShadowTabsOverflowRight: 'inset -10px 0 8px -8px rgba(0, 0, 0, 0.08)',\n    boxShadowTabsOverflowTop: 'inset 0 10px 8px -8px rgba(0, 0, 0, 0.08)',\n    boxShadowTabsOverflowBottom: 'inset 0 -10px 8px -8px rgba(0, 0, 0, 0.08)'\n  }), overrideTokens);\n  return aliasToken;\n}","var __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport React from 'react';\nimport { useCacheToken } from '@ant-design/cssinjs';\nimport version from '../version';\nimport { defaultTheme, DesignTokenContext } from './context';\nimport defaultSeedToken from './themes/seed';\nimport formatToken from './util/alias';\nexport const unitless = {\n  lineHeight: true,\n  lineHeightSM: true,\n  lineHeightLG: true,\n  lineHeightHeading1: true,\n  lineHeightHeading2: true,\n  lineHeightHeading3: true,\n  lineHeightHeading4: true,\n  lineHeightHeading5: true,\n  opacityLoading: true,\n  fontWeightStrong: true,\n  zIndexPopupBase: true,\n  zIndexBase: true,\n  opacityImage: true\n};\nexport const ignore = {\n  size: true,\n  sizeSM: true,\n  sizeLG: true,\n  sizeMD: true,\n  sizeXS: true,\n  sizeXXS: true,\n  sizeMS: true,\n  sizeXL: true,\n  sizeXXL: true,\n  sizeUnit: true,\n  sizeStep: true,\n  motionBase: true,\n  motionUnit: true\n};\nconst preserve = {\n  screenXS: true,\n  screenXSMin: true,\n  screenXSMax: true,\n  screenSM: true,\n  screenSMMin: true,\n  screenSMMax: true,\n  screenMD: true,\n  screenMDMin: true,\n  screenMDMax: true,\n  screenLG: true,\n  screenLGMin: true,\n  screenLGMax: true,\n  screenXL: true,\n  screenXLMin: true,\n  screenXLMax: true,\n  screenXXL: true,\n  screenXXLMin: true\n};\nexport const getComputedToken = (originToken, overrideToken, theme) => {\n  const derivativeToken = theme.getDerivativeToken(originToken);\n  const {\n      override\n    } = overrideToken,\n    components = __rest(overrideToken, [\"override\"]);\n  // Merge with override\n  let mergedDerivativeToken = Object.assign(Object.assign({}, derivativeToken), {\n    override\n  });\n  // Format if needed\n  mergedDerivativeToken = formatToken(mergedDerivativeToken);\n  if (components) {\n    Object.entries(components).forEach(([key, value]) => {\n      const {\n          theme: componentTheme\n        } = value,\n        componentTokens = __rest(value, [\"theme\"]);\n      let mergedComponentToken = componentTokens;\n      if (componentTheme) {\n        mergedComponentToken = getComputedToken(Object.assign(Object.assign({}, mergedDerivativeToken), componentTokens), {\n          override: componentTokens\n        }, componentTheme);\n      }\n      mergedDerivativeToken[key] = mergedComponentToken;\n    });\n  }\n  return mergedDerivativeToken;\n};\n// ================================== Hook ==================================\nexport default function useToken() {\n  const {\n    token: rootDesignToken,\n    hashed,\n    theme,\n    override,\n    cssVar\n  } = React.useContext(DesignTokenContext);\n  const salt = `${version}-${hashed || ''}`;\n  const mergedTheme = theme || defaultTheme;\n  const [token, hashId, realToken] = useCacheToken(mergedTheme, [defaultSeedToken, rootDesignToken], {\n    salt,\n    override,\n    getComputedToken,\n    // formatToken will not be consumed after 1.15.0 with getComputedToken.\n    // But token will break if @ant-design/cssinjs is under 1.15.0 without it\n    formatToken,\n    cssVar: cssVar && {\n      prefix: cssVar.prefix,\n      key: cssVar.key,\n      unitless,\n      ignore,\n      preserve\n    }\n  });\n  return [mergedTheme, realToken, hashed ? hashId : '', token, cssVar];\n}","\"use client\";\n\nimport { unit } from '@ant-design/cssinjs';\nexport const textEllipsis = {\n  overflow: 'hidden',\n  whiteSpace: 'nowrap',\n  textOverflow: 'ellipsis'\n};\nexport const resetComponent = (token, needInheritFontFamily = false) => ({\n  boxSizing: 'border-box',\n  margin: 0,\n  padding: 0,\n  color: token.colorText,\n  fontSize: token.fontSize,\n  // font-variant: @font-variant-base;\n  lineHeight: token.lineHeight,\n  listStyle: 'none',\n  // font-feature-settings: @font-feature-settings-base;\n  fontFamily: needInheritFontFamily ? 'inherit' : token.fontFamily\n});\nexport const resetIcon = () => ({\n  display: 'inline-flex',\n  alignItems: 'center',\n  color: 'inherit',\n  fontStyle: 'normal',\n  lineHeight: 0,\n  textAlign: 'center',\n  textTransform: 'none',\n  // for SVG icon, see https://blog.prototypr.io/align-svg-icons-to-text-and-say-goodbye-to-font-icons-d44b3d7b26b4\n  verticalAlign: '-0.125em',\n  textRendering: 'optimizeLegibility',\n  '-webkit-font-smoothing': 'antialiased',\n  '-moz-osx-font-smoothing': 'grayscale',\n  '> *': {\n    lineHeight: 1\n  },\n  svg: {\n    display: 'inline-block'\n  }\n});\nexport const clearFix = () => ({\n  // https://github.com/ant-design/ant-design/issues/21301#issuecomment-583955229\n  '&::before': {\n    display: 'table',\n    content: '\"\"'\n  },\n  '&::after': {\n    // https://github.com/ant-design/ant-design/issues/21864\n    display: 'table',\n    clear: 'both',\n    content: '\"\"'\n  }\n});\nexport const genLinkStyle = token => ({\n  a: {\n    color: token.colorLink,\n    textDecoration: token.linkDecoration,\n    backgroundColor: 'transparent',\n    // remove the gray background on active links in IE 10.\n    outline: 'none',\n    cursor: 'pointer',\n    transition: `color ${token.motionDurationSlow}`,\n    '-webkit-text-decoration-skip': 'objects',\n    // remove gaps in links underline in iOS 8+ and Safari 8+.\n    '&:hover': {\n      color: token.colorLinkHover\n    },\n    '&:active': {\n      color: token.colorLinkActive\n    },\n    '&:active, &:hover': {\n      textDecoration: token.linkHoverDecoration,\n      outline: 0\n    },\n    // https://github.com/ant-design/ant-design/issues/22503\n    '&:focus': {\n      textDecoration: token.linkFocusDecoration,\n      outline: 0\n    },\n    '&[disabled]': {\n      color: token.colorTextDisabled,\n      cursor: 'not-allowed'\n    }\n  }\n});\nexport const genCommonStyle = (token, componentPrefixCls, rootCls, resetFont) => {\n  const prefixSelector = `[class^=\"${componentPrefixCls}\"], [class*=\" ${componentPrefixCls}\"]`;\n  const rootPrefixSelector = rootCls ? `.${rootCls}` : prefixSelector;\n  const resetStyle = {\n    boxSizing: 'border-box',\n    '&::before, &::after': {\n      boxSizing: 'border-box'\n    }\n  };\n  let resetFontStyle = {};\n  if (resetFont !== false) {\n    resetFontStyle = {\n      fontFamily: token.fontFamily,\n      fontSize: token.fontSize\n    };\n  }\n  return {\n    [rootPrefixSelector]: Object.assign(Object.assign(Object.assign({}, resetFontStyle), resetStyle), {\n      [prefixSelector]: resetStyle\n    })\n  };\n};\nexport const genFocusOutline = (token, offset) => ({\n  outline: `${unit(token.lineWidthFocus)} solid ${token.colorPrimaryBorder}`,\n  outlineOffset: offset !== null && offset !== void 0 ? offset : 1,\n  transition: 'outline-offset 0s, outline 0s'\n});\nexport const genFocusStyle = (token, offset) => ({\n  '&:focus-visible': Object.assign({}, genFocusOutline(token, offset))\n});\nexport const genIconStyle = iconPrefixCls => ({\n  [`.${iconPrefixCls}`]: Object.assign(Object.assign({}, resetIcon()), {\n    [`.${iconPrefixCls} .${iconPrefixCls}-icon`]: {\n      display: 'block'\n    }\n  })\n});\nexport const operationUnit = token => Object.assign(Object.assign({\n  // FIXME: This use link but is a operation unit. Seems should be a colorPrimary.\n  // And Typography use this to generate link style which should not do this.\n  color: token.colorLink,\n  textDecoration: token.linkDecoration,\n  outline: 'none',\n  cursor: 'pointer',\n  transition: `all ${token.motionDurationSlow}`,\n  border: 0,\n  padding: 0,\n  background: 'none',\n  userSelect: 'none'\n}, genFocusStyle(token)), {\n  '&:focus, &:hover': {\n    color: token.colorLinkHover\n  },\n  '&:active': {\n    color: token.colorLinkActive\n  }\n});","import { useContext } from 'react';\nimport { genStyleUtils } from '@ant-design/cssinjs-utils';\nimport { ConfigContext, defaultIconPrefixCls } from '../../config-provider/context';\nimport { genCommonStyle, genIconStyle, genLinkStyle } from '../../style';\nimport useLocalToken, { unitless } from '../useToken';\nexport const {\n  genStyleHooks,\n  genComponentStyleHook,\n  genSubStyleComponent\n} = genStyleUtils({\n  usePrefix: () => {\n    const {\n      getPrefixCls,\n      iconPrefixCls\n    } = useContext(ConfigContext);\n    const rootPrefixCls = getPrefixCls();\n    return {\n      rootPrefixCls,\n      iconPrefixCls\n    };\n  },\n  useToken: () => {\n    const [theme, realToken, hashId, token, cssVar] = useLocalToken();\n    return {\n      theme,\n      realToken,\n      hashId,\n      token,\n      cssVar\n    };\n  },\n  useCSP: () => {\n    const {\n      csp\n    } = useContext(ConfigContext);\n    return csp !== null && csp !== void 0 ? csp : {};\n  },\n  getResetStyles: (token, config) => {\n    var _a;\n    const linkStyle = genLinkStyle(token);\n    return [linkStyle, {\n      '&': linkStyle\n    }, genIconStyle((_a = config === null || config === void 0 ? void 0 : config.prefix.iconPrefixCls) !== null && _a !== void 0 ? _a : defaultIconPrefixCls)];\n  },\n  getCommonStyle: genCommonStyle,\n  getCompUnitless: () => unitless\n});","import { PresetColors } from '../interface';\nexport default function genPresetColor(token, genCss) {\n  return PresetColors.reduce((prev, colorKey) => {\n    const lightColor = token[`${colorKey}1`];\n    const lightBorderColor = token[`${colorKey}3`];\n    const darkColor = token[`${colorKey}6`];\n    const textColor = token[`${colorKey}7`];\n    return Object.assign(Object.assign({}, prev), genCss(colorKey, {\n      lightColor,\n      lightBorderColor,\n      darkColor,\n      textColor\n    }));\n  }, {});\n}","import { useStyleRegister } from '@ant-design/cssinjs';\nimport { genIconStyle } from '../../style';\nimport useToken from '../useToken';\nconst useResetIconStyle = (iconPrefixCls, csp) => {\n  const [theme, token] = useToken();\n  // Generate style for icons\n  return useStyleRegister({\n    theme,\n    token,\n    hashId: '',\n    path: ['ant-design-icons', iconPrefixCls],\n    nonce: () => csp === null || csp === void 0 ? void 0 : csp.nonce,\n    layer: {\n      name: 'antd'\n    }\n  }, () => [genIconStyle(iconPrefixCls)]);\n};\nexport default useResetIconStyle;","import * as React from 'react';\nconst fullClone = Object.assign({}, React);\nconst {\n  useId\n} = fullClone;\nconst useEmptyId = () => '';\nconst useThemeKey = typeof useId === 'undefined' ? useEmptyId : useId;\nexport default useThemeKey;","import useMemo from \"rc-util/es/hooks/useMemo\";\nimport isEqual from \"rc-util/es/isEqual\";\nimport { devUseWarning } from '../../_util/warning';\nimport { defaultConfig } from '../../theme/internal';\nimport useThemeKey from './useThemeKey';\nexport default function useTheme(theme, parentTheme, config) {\n  var _a, _b;\n  const warning = devUseWarning('ConfigProvider');\n  const themeConfig = theme || {};\n  const parentThemeConfig = themeConfig.inherit === false || !parentTheme ? Object.assign(Object.assign({}, defaultConfig), {\n    hashed: (_a = parentTheme === null || parentTheme === void 0 ? void 0 : parentTheme.hashed) !== null && _a !== void 0 ? _a : defaultConfig.hashed,\n    cssVar: parentTheme === null || parentTheme === void 0 ? void 0 : parentTheme.cssVar\n  }) : parentTheme;\n  const themeKey = useThemeKey();\n  if (process.env.NODE_ENV !== 'production') {\n    const cssVarEnabled = themeConfig.cssVar || parentThemeConfig.cssVar;\n    const validKey = !!(typeof themeConfig.cssVar === 'object' && ((_b = themeConfig.cssVar) === null || _b === void 0 ? void 0 : _b.key) || themeKey);\n    process.env.NODE_ENV !== \"production\" ? warning(!cssVarEnabled || validKey, 'breaking', 'Missing key in `cssVar` config. Please upgrade to React 18 or set `cssVar.key` manually in each ConfigProvider inside `cssVar` enabled ConfigProvider.') : void 0;\n  }\n  return useMemo(() => {\n    var _a, _b;\n    if (!theme) {\n      return parentTheme;\n    }\n    // Override\n    const mergedComponents = Object.assign({}, parentThemeConfig.components);\n    Object.keys(theme.components || {}).forEach(componentName => {\n      mergedComponents[componentName] = Object.assign(Object.assign({}, mergedComponents[componentName]), theme.components[componentName]);\n    });\n    const cssVarKey = `css-var-${themeKey.replace(/:/g, '')}`;\n    const mergedCssVar = ((_a = themeConfig.cssVar) !== null && _a !== void 0 ? _a : parentThemeConfig.cssVar) && Object.assign(Object.assign(Object.assign({\n      prefix: config === null || config === void 0 ? void 0 : config.prefixCls\n    }, typeof parentThemeConfig.cssVar === 'object' ? parentThemeConfig.cssVar : {}), typeof themeConfig.cssVar === 'object' ? themeConfig.cssVar : {}), {\n      key: typeof themeConfig.cssVar === 'object' && ((_b = themeConfig.cssVar) === null || _b === void 0 ? void 0 : _b.key) || cssVarKey\n    });\n    // Base token\n    return Object.assign(Object.assign(Object.assign({}, parentThemeConfig), themeConfig), {\n      token: Object.assign(Object.assign({}, parentThemeConfig.token), themeConfig.token),\n      components: mergedComponents,\n      cssVar: mergedCssVar\n    });\n  }, [themeConfig, parentThemeConfig], (prev, next) => prev.some((prevTheme, index) => {\n    const nextTheme = next[index];\n    return !isEqual(prevTheme, nextTheme, true);\n  }));\n}","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"children\"];\nimport * as React from 'react';\nexport var Context = /*#__PURE__*/React.createContext({});\nexport default function MotionProvider(_ref) {\n  var children = _ref.children,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return /*#__PURE__*/React.createElement(Context.Provider, {\n    value: props\n  }, children);\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\nvar DomWrapper = /*#__PURE__*/function (_React$Component) {\n  _inherits(DomWrapper, _React$Component);\n  var _super = _createSuper(DomWrapper);\n  function DomWrapper() {\n    _classCallCheck(this, DomWrapper);\n    return _super.apply(this, arguments);\n  }\n  _createClass(DomWrapper, [{\n    key: \"render\",\n    value: function render() {\n      return this.props.children;\n    }\n  }]);\n  return DomWrapper;\n}(React.Component);\nexport default DomWrapper;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport useEvent from \"./useEvent\";\n/**\n * Same as React.useState but will always get latest state.\n * This is useful when React merge multiple state updates into one.\n * e.g. onTransitionEnd trigger multiple event at once will be merged state update in React.\n */\nexport default function useSyncState(defaultValue) {\n  var _React$useReducer = React.useReducer(function (x) {\n      return x + 1;\n    }, 0),\n    _React$useReducer2 = _slicedToArray(_React$useReducer, 2),\n    forceUpdate = _React$useReducer2[1];\n  var currentValueRef = React.useRef(defaultValue);\n  var getValue = useEvent(function () {\n    return currentValueRef.current;\n  });\n  var setValue = useEvent(function (updater) {\n    currentValueRef.current = typeof updater === 'function' ? updater(currentValueRef.current) : updater;\n    forceUpdate();\n  });\n  return [getValue, setValue];\n}","export var STATUS_NONE = 'none';\nexport var STATUS_APPEAR = 'appear';\nexport var STATUS_ENTER = 'enter';\nexport var STATUS_LEAVE = 'leave';\nexport var STEP_NONE = 'none';\nexport var STEP_PREPARE = 'prepare';\nexport var STEP_START = 'start';\nexport var STEP_ACTIVE = 'active';\nexport var STEP_ACTIVATED = 'end';\n/**\n * Used for disabled motion case.\n * Prepare stage will still work but start & active will be skipped.\n */\nexport var STEP_PREPARED = 'prepared';","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport canUseDOM from \"rc-util/es/Dom/canUseDom\";\n// ================= Transition =================\n// Event wrapper. Copy from react source code\nfunction makePrefixMap(styleProp, eventName) {\n  var prefixes = {};\n  prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n  prefixes[\"Webkit\".concat(styleProp)] = \"webkit\".concat(eventName);\n  prefixes[\"Moz\".concat(styleProp)] = \"moz\".concat(eventName);\n  prefixes[\"ms\".concat(styleProp)] = \"MS\".concat(eventName);\n  prefixes[\"O\".concat(styleProp)] = \"o\".concat(eventName.toLowerCase());\n  return prefixes;\n}\nexport function getVendorPrefixes(domSupport, win) {\n  var prefixes = {\n    animationend: makePrefixMap('Animation', 'AnimationEnd'),\n    transitionend: makePrefixMap('Transition', 'TransitionEnd')\n  };\n  if (domSupport) {\n    if (!('AnimationEvent' in win)) {\n      delete prefixes.animationend.animation;\n    }\n    if (!('TransitionEvent' in win)) {\n      delete prefixes.transitionend.transition;\n    }\n  }\n  return prefixes;\n}\nvar vendorPrefixes = getVendorPrefixes(canUseDOM(), typeof window !== 'undefined' ? window : {});\nvar style = {};\nif (canUseDOM()) {\n  var _document$createEleme = document.createElement('div');\n  style = _document$createEleme.style;\n}\nvar prefixedEventNames = {};\nexport function getVendorPrefixedEventName(eventName) {\n  if (prefixedEventNames[eventName]) {\n    return prefixedEventNames[eventName];\n  }\n  var prefixMap = vendorPrefixes[eventName];\n  if (prefixMap) {\n    var stylePropList = Object.keys(prefixMap);\n    var len = stylePropList.length;\n    for (var i = 0; i < len; i += 1) {\n      var styleProp = stylePropList[i];\n      if (Object.prototype.hasOwnProperty.call(prefixMap, styleProp) && styleProp in style) {\n        prefixedEventNames[eventName] = prefixMap[styleProp];\n        return prefixedEventNames[eventName];\n      }\n    }\n  }\n  return '';\n}\nvar internalAnimationEndName = getVendorPrefixedEventName('animationend');\nvar internalTransitionEndName = getVendorPrefixedEventName('transitionend');\nexport var supportTransition = !!(internalAnimationEndName && internalTransitionEndName);\nexport var animationEndName = internalAnimationEndName || 'animationend';\nexport var transitionEndName = internalTransitionEndName || 'transitionend';\nexport function getTransitionName(transitionName, transitionType) {\n  if (!transitionName) return null;\n  if (_typeof(transitionName) === 'object') {\n    var type = transitionType.replace(/-\\w/g, function (match) {\n      return match[1].toUpperCase();\n    });\n    return transitionName[type];\n  }\n  return \"\".concat(transitionName, \"-\").concat(transitionType);\n}","import * as React from 'react';\nimport { useRef } from 'react';\nimport { animationEndName, transitionEndName } from \"../util/motion\";\nexport default (function (onInternalMotionEnd) {\n  var cacheElementRef = useRef();\n\n  // Remove events\n  function removeMotionEvents(element) {\n    if (element) {\n      element.removeEventListener(transitionEndName, onInternalMotionEnd);\n      element.removeEventListener(animationEndName, onInternalMotionEnd);\n    }\n  }\n\n  // Patch events\n  function patchMotionEvents(element) {\n    if (cacheElementRef.current && cacheElementRef.current !== element) {\n      removeMotionEvents(cacheElementRef.current);\n    }\n    if (element && element !== cacheElementRef.current) {\n      element.addEventListener(transitionEndName, onInternalMotionEnd);\n      element.addEventListener(animationEndName, onInternalMotionEnd);\n\n      // Save as cache in case dom removed trigger by `motionDeadline`\n      cacheElementRef.current = element;\n    }\n  }\n\n  // Clean up when removed\n  React.useEffect(function () {\n    return function () {\n      removeMotionEvents(cacheElementRef.current);\n    };\n  }, []);\n  return [patchMotionEvents, removeMotionEvents];\n});","import canUseDom from \"rc-util/es/Dom/canUseDom\";\nimport { useEffect, useLayoutEffect } from 'react';\n\n// It's safe to use `useLayoutEffect` but the warning is annoying\nvar useIsomorphicLayoutEffect = canUseDom() ? useLayoutEffect : useEffect;\nexport default useIsomorphicLayoutEffect;","import raf from \"rc-util/es/raf\";\nimport * as React from 'react';\nexport default (function () {\n  var nextFrameRef = React.useRef(null);\n  function cancelNextFrame() {\n    raf.cancel(nextFrameRef.current);\n  }\n  function nextFrame(callback) {\n    var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n    cancelNextFrame();\n    var nextFrameId = raf(function () {\n      if (delay <= 1) {\n        callback({\n          isCanceled: function isCanceled() {\n            return nextFrameId !== nextFrameRef.current;\n          }\n        });\n      } else {\n        nextFrame(callback, delay - 1);\n      }\n    });\n    nextFrameRef.current = nextFrameId;\n  }\n  React.useEffect(function () {\n    return function () {\n      cancelNextFrame();\n    };\n  }, []);\n  return [nextFrame, cancelNextFrame];\n});","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport useState from \"rc-util/es/hooks/useState\";\nimport * as React from 'react';\nimport { STEP_ACTIVATED, STEP_ACTIVE, STEP_NONE, STEP_PREPARE, STEP_PREPARED, STEP_START } from \"../interface\";\nimport useIsomorphicLayoutEffect from \"./useIsomorphicLayoutEffect\";\nimport useNextFrame from \"./useNextFrame\";\nvar FULL_STEP_QUEUE = [STEP_PREPARE, STEP_START, STEP_ACTIVE, STEP_ACTIVATED];\nvar SIMPLE_STEP_QUEUE = [STEP_PREPARE, STEP_PREPARED];\n\n/** Skip current step */\nexport var SkipStep = false;\n/** Current step should be update in */\nexport var DoStep = true;\nexport function isActive(step) {\n  return step === STEP_ACTIVE || step === STEP_ACTIVATED;\n}\nexport default (function (status, prepareOnly, callback) {\n  var _useState = useState(STEP_NONE),\n    _useState2 = _slicedToArray(_useState, 2),\n    step = _useState2[0],\n    setStep = _useState2[1];\n  var _useNextFrame = useNextFrame(),\n    _useNextFrame2 = _slicedToArray(_useNextFrame, 2),\n    nextFrame = _useNextFrame2[0],\n    cancelNextFrame = _useNextFrame2[1];\n  function startQueue() {\n    setStep(STEP_PREPARE, true);\n  }\n  var STEP_QUEUE = prepareOnly ? SIMPLE_STEP_QUEUE : FULL_STEP_QUEUE;\n  useIsomorphicLayoutEffect(function () {\n    if (step !== STEP_NONE && step !== STEP_ACTIVATED) {\n      var index = STEP_QUEUE.indexOf(step);\n      var nextStep = STEP_QUEUE[index + 1];\n      var result = callback(step);\n      if (result === SkipStep) {\n        // Skip when no needed\n        setStep(nextStep, true);\n      } else if (nextStep) {\n        // Do as frame for step update\n        nextFrame(function (info) {\n          function doNext() {\n            // Skip since current queue is ood\n            if (info.isCanceled()) return;\n            setStep(nextStep, true);\n          }\n          if (result === true) {\n            doNext();\n          } else {\n            // Only promise should be async\n            Promise.resolve(result).then(doNext);\n          }\n        });\n      }\n    }\n  }, [status, step]);\n  React.useEffect(function () {\n    return function () {\n      cancelNextFrame();\n    };\n  }, []);\n  return [startQueue, step];\n});","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useEvent } from 'rc-util';\nimport useState from \"rc-util/es/hooks/useState\";\nimport useSyncState from \"rc-util/es/hooks/useSyncState\";\nimport * as React from 'react';\nimport { useEffect, useRef } from 'react';\nimport { STATUS_APPEAR, STATUS_ENTER, STATUS_LEAVE, STATUS_NONE, STEP_ACTIVE, STEP_PREPARE, STEP_PREPARED, STEP_START } from \"../interface\";\nimport useDomMotionEvents from \"./useDomMotionEvents\";\nimport useIsomorphicLayoutEffect from \"./useIsomorphicLayoutEffect\";\nimport useStepQueue, { DoStep, isActive, SkipStep } from \"./useStepQueue\";\nexport default function useStatus(supportMotion, visible, getElement, _ref) {\n  var _ref$motionEnter = _ref.motionEnter,\n    motionEnter = _ref$motionEnter === void 0 ? true : _ref$motionEnter,\n    _ref$motionAppear = _ref.motionAppear,\n    motionAppear = _ref$motionAppear === void 0 ? true : _ref$motionAppear,\n    _ref$motionLeave = _ref.motionLeave,\n    motionLeave = _ref$motionLeave === void 0 ? true : _ref$motionLeave,\n    motionDeadline = _ref.motionDeadline,\n    motionLeaveImmediately = _ref.motionLeaveImmediately,\n    onAppearPrepare = _ref.onAppearPrepare,\n    onEnterPrepare = _ref.onEnterPrepare,\n    onLeavePrepare = _ref.onLeavePrepare,\n    onAppearStart = _ref.onAppearStart,\n    onEnterStart = _ref.onEnterStart,\n    onLeaveStart = _ref.onLeaveStart,\n    onAppearActive = _ref.onAppearActive,\n    onEnterActive = _ref.onEnterActive,\n    onLeaveActive = _ref.onLeaveActive,\n    onAppearEnd = _ref.onAppearEnd,\n    onEnterEnd = _ref.onEnterEnd,\n    onLeaveEnd = _ref.onLeaveEnd,\n    onVisibleChanged = _ref.onVisibleChanged;\n  // Used for outer render usage to avoid `visible: false & status: none` to render nothing\n  var _useState = useState(),\n    _useState2 = _slicedToArray(_useState, 2),\n    asyncVisible = _useState2[0],\n    setAsyncVisible = _useState2[1];\n  var _useSyncState = useSyncState(STATUS_NONE),\n    _useSyncState2 = _slicedToArray(_useSyncState, 2),\n    getStatus = _useSyncState2[0],\n    setStatus = _useSyncState2[1];\n  var _useState3 = useState(null),\n    _useState4 = _slicedToArray(_useState3, 2),\n    style = _useState4[0],\n    setStyle = _useState4[1];\n  var currentStatus = getStatus();\n  var mountedRef = useRef(false);\n  var deadlineRef = useRef(null);\n\n  // =========================== Dom Node ===========================\n  function getDomElement() {\n    return getElement();\n  }\n\n  // ========================== Motion End ==========================\n  var activeRef = useRef(false);\n\n  /**\n   * Clean up status & style\n   */\n  function updateMotionEndStatus() {\n    setStatus(STATUS_NONE);\n    setStyle(null, true);\n  }\n  var onInternalMotionEnd = useEvent(function (event) {\n    var status = getStatus();\n    // Do nothing since not in any transition status.\n    // This may happen when `motionDeadline` trigger.\n    if (status === STATUS_NONE) {\n      return;\n    }\n    var element = getDomElement();\n    if (event && !event.deadline && event.target !== element) {\n      // event exists\n      // not initiated by deadline\n      // transitionEnd not fired by inner elements\n      return;\n    }\n    var currentActive = activeRef.current;\n    var canEnd;\n    if (status === STATUS_APPEAR && currentActive) {\n      canEnd = onAppearEnd === null || onAppearEnd === void 0 ? void 0 : onAppearEnd(element, event);\n    } else if (status === STATUS_ENTER && currentActive) {\n      canEnd = onEnterEnd === null || onEnterEnd === void 0 ? void 0 : onEnterEnd(element, event);\n    } else if (status === STATUS_LEAVE && currentActive) {\n      canEnd = onLeaveEnd === null || onLeaveEnd === void 0 ? void 0 : onLeaveEnd(element, event);\n    }\n\n    // Only update status when `canEnd` and not destroyed\n    if (currentActive && canEnd !== false) {\n      updateMotionEndStatus();\n    }\n  });\n  var _useDomMotionEvents = useDomMotionEvents(onInternalMotionEnd),\n    _useDomMotionEvents2 = _slicedToArray(_useDomMotionEvents, 1),\n    patchMotionEvents = _useDomMotionEvents2[0];\n\n  // ============================= Step =============================\n  var getEventHandlers = function getEventHandlers(targetStatus) {\n    switch (targetStatus) {\n      case STATUS_APPEAR:\n        return _defineProperty(_defineProperty(_defineProperty({}, STEP_PREPARE, onAppearPrepare), STEP_START, onAppearStart), STEP_ACTIVE, onAppearActive);\n      case STATUS_ENTER:\n        return _defineProperty(_defineProperty(_defineProperty({}, STEP_PREPARE, onEnterPrepare), STEP_START, onEnterStart), STEP_ACTIVE, onEnterActive);\n      case STATUS_LEAVE:\n        return _defineProperty(_defineProperty(_defineProperty({}, STEP_PREPARE, onLeavePrepare), STEP_START, onLeaveStart), STEP_ACTIVE, onLeaveActive);\n      default:\n        return {};\n    }\n  };\n  var eventHandlers = React.useMemo(function () {\n    return getEventHandlers(currentStatus);\n  }, [currentStatus]);\n  var _useStepQueue = useStepQueue(currentStatus, !supportMotion, function (newStep) {\n      // Only prepare step can be skip\n      if (newStep === STEP_PREPARE) {\n        var onPrepare = eventHandlers[STEP_PREPARE];\n        if (!onPrepare) {\n          return SkipStep;\n        }\n        return onPrepare(getDomElement());\n      }\n\n      // Rest step is sync update\n      if (step in eventHandlers) {\n        var _eventHandlers$step;\n        setStyle(((_eventHandlers$step = eventHandlers[step]) === null || _eventHandlers$step === void 0 ? void 0 : _eventHandlers$step.call(eventHandlers, getDomElement(), null)) || null);\n      }\n      if (step === STEP_ACTIVE && currentStatus !== STATUS_NONE) {\n        // Patch events when motion needed\n        patchMotionEvents(getDomElement());\n        if (motionDeadline > 0) {\n          clearTimeout(deadlineRef.current);\n          deadlineRef.current = setTimeout(function () {\n            onInternalMotionEnd({\n              deadline: true\n            });\n          }, motionDeadline);\n        }\n      }\n      if (step === STEP_PREPARED) {\n        updateMotionEndStatus();\n      }\n      return DoStep;\n    }),\n    _useStepQueue2 = _slicedToArray(_useStepQueue, 2),\n    startStep = _useStepQueue2[0],\n    step = _useStepQueue2[1];\n  var active = isActive(step);\n  activeRef.current = active;\n\n  // ============================ Status ============================\n  var visibleRef = useRef(null);\n\n  // Update with new status\n  useIsomorphicLayoutEffect(function () {\n    // When use Suspense, the `visible` will repeat trigger,\n    // But not real change of the `visible`, we need to skip it.\n    // https://github.com/ant-design/ant-design/issues/44379\n    if (mountedRef.current && visibleRef.current === visible) {\n      return;\n    }\n    setAsyncVisible(visible);\n    var isMounted = mountedRef.current;\n    mountedRef.current = true;\n\n    // if (!supportMotion) {\n    //   return;\n    // }\n\n    var nextStatus;\n\n    // Appear\n    if (!isMounted && visible && motionAppear) {\n      nextStatus = STATUS_APPEAR;\n    }\n\n    // Enter\n    if (isMounted && visible && motionEnter) {\n      nextStatus = STATUS_ENTER;\n    }\n\n    // Leave\n    if (isMounted && !visible && motionLeave || !isMounted && motionLeaveImmediately && !visible && motionLeave) {\n      nextStatus = STATUS_LEAVE;\n    }\n    var nextEventHandlers = getEventHandlers(nextStatus);\n\n    // Update to next status\n    if (nextStatus && (supportMotion || nextEventHandlers[STEP_PREPARE])) {\n      setStatus(nextStatus);\n      startStep();\n    } else {\n      // Set back in case no motion but prev status has prepare step\n      setStatus(STATUS_NONE);\n    }\n    visibleRef.current = visible;\n  }, [visible]);\n\n  // ============================ Effect ============================\n  // Reset when motion changed\n  useEffect(function () {\n    if (\n    // Cancel appear\n    currentStatus === STATUS_APPEAR && !motionAppear ||\n    // Cancel enter\n    currentStatus === STATUS_ENTER && !motionEnter ||\n    // Cancel leave\n    currentStatus === STATUS_LEAVE && !motionLeave) {\n      setStatus(STATUS_NONE);\n    }\n  }, [motionAppear, motionEnter, motionLeave]);\n  useEffect(function () {\n    return function () {\n      mountedRef.current = false;\n      clearTimeout(deadlineRef.current);\n    };\n  }, []);\n\n  // Trigger `onVisibleChanged`\n  var firstMountChangeRef = React.useRef(false);\n  useEffect(function () {\n    // [visible & motion not end] => [!visible & motion end] still need trigger onVisibleChanged\n    if (asyncVisible) {\n      firstMountChangeRef.current = true;\n    }\n    if (asyncVisible !== undefined && currentStatus === STATUS_NONE) {\n      // Skip first render is invisible since it's nothing changed\n      if (firstMountChangeRef.current || asyncVisible) {\n        onVisibleChanged === null || onVisibleChanged === void 0 || onVisibleChanged(asyncVisible);\n      }\n      firstMountChangeRef.current = true;\n    }\n  }, [asyncVisible, currentStatus]);\n\n  // ============================ Styles ============================\n  var mergedStyle = style;\n  if (eventHandlers[STEP_PREPARE] && step === STEP_START) {\n    mergedStyle = _objectSpread({\n      transition: 'none'\n    }, mergedStyle);\n  }\n  return [currentStatus, step, mergedStyle, asyncVisible !== null && asyncVisible !== void 0 ? asyncVisible : visible];\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\n/* eslint-disable react/default-props-match-prop-types, react/no-multi-comp, react/prop-types */\nimport classNames from 'classnames';\nimport findDOMNode from \"rc-util/es/Dom/findDOMNode\";\nimport { fillRef, getNodeRef, supportRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport { useRef } from 'react';\nimport { Context } from \"./context\";\nimport DomWrapper from \"./DomWrapper\";\nimport useStatus from \"./hooks/useStatus\";\nimport { isActive } from \"./hooks/useStepQueue\";\nimport { STATUS_NONE, STEP_PREPARE, STEP_START } from \"./interface\";\nimport { getTransitionName, supportTransition } from \"./util/motion\";\n/**\n * `transitionSupport` is used for none transition test case.\n * Default we use browser transition event support check.\n */\nexport function genCSSMotion(config) {\n  var transitionSupport = config;\n  if (_typeof(config) === 'object') {\n    transitionSupport = config.transitionSupport;\n  }\n  function isSupportTransition(props, contextMotion) {\n    return !!(props.motionName && transitionSupport && contextMotion !== false);\n  }\n  var CSSMotion = /*#__PURE__*/React.forwardRef(function (props, ref) {\n    var _props$visible = props.visible,\n      visible = _props$visible === void 0 ? true : _props$visible,\n      _props$removeOnLeave = props.removeOnLeave,\n      removeOnLeave = _props$removeOnLeave === void 0 ? true : _props$removeOnLeave,\n      forceRender = props.forceRender,\n      children = props.children,\n      motionName = props.motionName,\n      leavedClassName = props.leavedClassName,\n      eventProps = props.eventProps;\n    var _React$useContext = React.useContext(Context),\n      contextMotion = _React$useContext.motion;\n    var supportMotion = isSupportTransition(props, contextMotion);\n\n    // Ref to the react node, it may be a HTMLElement\n    var nodeRef = useRef();\n    // Ref to the dom wrapper in case ref can not pass to HTMLElement\n    var wrapperNodeRef = useRef();\n    function getDomElement() {\n      try {\n        // Here we're avoiding call for findDOMNode since it's deprecated\n        // in strict mode. We're calling it only when node ref is not\n        // an instance of DOM HTMLElement. Otherwise use\n        // findDOMNode as a final resort\n        return nodeRef.current instanceof HTMLElement ? nodeRef.current : findDOMNode(wrapperNodeRef.current);\n      } catch (e) {\n        // Only happen when `motionDeadline` trigger but element removed.\n        return null;\n      }\n    }\n    var _useStatus = useStatus(supportMotion, visible, getDomElement, props),\n      _useStatus2 = _slicedToArray(_useStatus, 4),\n      status = _useStatus2[0],\n      statusStep = _useStatus2[1],\n      statusStyle = _useStatus2[2],\n      mergedVisible = _useStatus2[3];\n\n    // Record whether content has rendered\n    // Will return null for un-rendered even when `removeOnLeave={false}`\n    var renderedRef = React.useRef(mergedVisible);\n    if (mergedVisible) {\n      renderedRef.current = true;\n    }\n\n    // ====================== Refs ======================\n    var setNodeRef = React.useCallback(function (node) {\n      nodeRef.current = node;\n      fillRef(ref, node);\n    }, [ref]);\n\n    // ===================== Render =====================\n    var motionChildren;\n    var mergedProps = _objectSpread(_objectSpread({}, eventProps), {}, {\n      visible: visible\n    });\n    if (!children) {\n      // No children\n      motionChildren = null;\n    } else if (status === STATUS_NONE) {\n      // Stable children\n      if (mergedVisible) {\n        motionChildren = children(_objectSpread({}, mergedProps), setNodeRef);\n      } else if (!removeOnLeave && renderedRef.current && leavedClassName) {\n        motionChildren = children(_objectSpread(_objectSpread({}, mergedProps), {}, {\n          className: leavedClassName\n        }), setNodeRef);\n      } else if (forceRender || !removeOnLeave && !leavedClassName) {\n        motionChildren = children(_objectSpread(_objectSpread({}, mergedProps), {}, {\n          style: {\n            display: 'none'\n          }\n        }), setNodeRef);\n      } else {\n        motionChildren = null;\n      }\n    } else {\n      // In motion\n      var statusSuffix;\n      if (statusStep === STEP_PREPARE) {\n        statusSuffix = 'prepare';\n      } else if (isActive(statusStep)) {\n        statusSuffix = 'active';\n      } else if (statusStep === STEP_START) {\n        statusSuffix = 'start';\n      }\n      var motionCls = getTransitionName(motionName, \"\".concat(status, \"-\").concat(statusSuffix));\n      motionChildren = children(_objectSpread(_objectSpread({}, mergedProps), {}, {\n        className: classNames(getTransitionName(motionName, status), _defineProperty(_defineProperty({}, motionCls, motionCls && statusSuffix), motionName, typeof motionName === 'string')),\n        style: statusStyle\n      }), setNodeRef);\n    }\n\n    // Auto inject ref if child node not have `ref` props\n    if ( /*#__PURE__*/React.isValidElement(motionChildren) && supportRef(motionChildren)) {\n      var originNodeRef = getNodeRef(motionChildren);\n      if (!originNodeRef) {\n        motionChildren = /*#__PURE__*/React.cloneElement(motionChildren, {\n          ref: setNodeRef\n        });\n      }\n    }\n    return /*#__PURE__*/React.createElement(DomWrapper, {\n      ref: wrapperNodeRef\n    }, motionChildren);\n  });\n  CSSMotion.displayName = 'CSSMotion';\n  return CSSMotion;\n}\nexport default genCSSMotion(supportTransition);","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nexport var STATUS_ADD = 'add';\nexport var STATUS_KEEP = 'keep';\nexport var STATUS_REMOVE = 'remove';\nexport var STATUS_REMOVED = 'removed';\nexport function wrapKeyToObject(key) {\n  var keyObj;\n  if (key && _typeof(key) === 'object' && 'key' in key) {\n    keyObj = key;\n  } else {\n    keyObj = {\n      key: key\n    };\n  }\n  return _objectSpread(_objectSpread({}, keyObj), {}, {\n    key: String(keyObj.key)\n  });\n}\nexport function parseKeys() {\n  var keys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n  return keys.map(wrapKeyToObject);\n}\nexport function diffKeys() {\n  var prevKeys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n  var currentKeys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n  var list = [];\n  var currentIndex = 0;\n  var currentLen = currentKeys.length;\n  var prevKeyObjects = parseKeys(prevKeys);\n  var currentKeyObjects = parseKeys(currentKeys);\n\n  // Check prev keys to insert or keep\n  prevKeyObjects.forEach(function (keyObj) {\n    var hit = false;\n    for (var i = currentIndex; i < currentLen; i += 1) {\n      var currentKeyObj = currentKeyObjects[i];\n      if (currentKeyObj.key === keyObj.key) {\n        // New added keys should add before current key\n        if (currentIndex < i) {\n          list = list.concat(currentKeyObjects.slice(currentIndex, i).map(function (obj) {\n            return _objectSpread(_objectSpread({}, obj), {}, {\n              status: STATUS_ADD\n            });\n          }));\n          currentIndex = i;\n        }\n        list.push(_objectSpread(_objectSpread({}, currentKeyObj), {}, {\n          status: STATUS_KEEP\n        }));\n        currentIndex += 1;\n        hit = true;\n        break;\n      }\n    }\n\n    // If not hit, it means key is removed\n    if (!hit) {\n      list.push(_objectSpread(_objectSpread({}, keyObj), {}, {\n        status: STATUS_REMOVE\n      }));\n    }\n  });\n\n  // Add rest to the list\n  if (currentIndex < currentLen) {\n    list = list.concat(currentKeyObjects.slice(currentIndex).map(function (obj) {\n      return _objectSpread(_objectSpread({}, obj), {}, {\n        status: STATUS_ADD\n      });\n    }));\n  }\n\n  /**\n   * Merge same key when it remove and add again:\n   *    [1 - add, 2 - keep, 1 - remove] -> [1 - keep, 2 - keep]\n   */\n  var keys = {};\n  list.forEach(function (_ref) {\n    var key = _ref.key;\n    keys[key] = (keys[key] || 0) + 1;\n  });\n  var duplicatedKeys = Object.keys(keys).filter(function (key) {\n    return keys[key] > 1;\n  });\n  duplicatedKeys.forEach(function (matchKey) {\n    // Remove `STATUS_REMOVE` node.\n    list = list.filter(function (_ref2) {\n      var key = _ref2.key,\n        status = _ref2.status;\n      return key !== matchKey || status !== STATUS_REMOVE;\n    });\n\n    // Update `STATUS_ADD` to `STATUS_KEEP`\n    list.forEach(function (node) {\n      if (node.key === matchKey) {\n        // eslint-disable-next-line no-param-reassign\n        node.status = STATUS_KEEP;\n      }\n    });\n  });\n  return list;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar _excluded = [\"component\", \"children\", \"onVisibleChanged\", \"onAllRemoved\"],\n  _excluded2 = [\"status\"];\n/* eslint react/prop-types: 0 */\nimport * as React from 'react';\nimport OriginCSSMotion from \"./CSSMotion\";\nimport { diffKeys, parseKeys, STATUS_ADD, STATUS_KEEP, STATUS_REMOVE, STATUS_REMOVED } from \"./util/diff\";\nimport { supportTransition } from \"./util/motion\";\nvar MOTION_PROP_NAMES = ['eventProps', 'visible', 'children', 'motionName', 'motionAppear', 'motionEnter', 'motionLeave', 'motionLeaveImmediately', 'motionDeadline', 'removeOnLeave', 'leavedClassName', 'onAppearPrepare', 'onAppearStart', 'onAppearActive', 'onAppearEnd', 'onEnterStart', 'onEnterActive', 'onEnterEnd', 'onLeaveStart', 'onLeaveActive', 'onLeaveEnd'];\n/**\n * Generate a CSSMotionList component with config\n * @param transitionSupport No need since CSSMotionList no longer depends on transition support\n * @param CSSMotion CSSMotion component\n */\nexport function genCSSMotionList(transitionSupport) {\n  var CSSMotion = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : OriginCSSMotion;\n  var CSSMotionList = /*#__PURE__*/function (_React$Component) {\n    _inherits(CSSMotionList, _React$Component);\n    var _super = _createSuper(CSSMotionList);\n    function CSSMotionList() {\n      var _this;\n      _classCallCheck(this, CSSMotionList);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _super.call.apply(_super, [this].concat(args));\n      _defineProperty(_assertThisInitialized(_this), \"state\", {\n        keyEntities: []\n      });\n      // ZombieJ: Return the count of rest keys. It's safe to refactor if need more info.\n      _defineProperty(_assertThisInitialized(_this), \"removeKey\", function (removeKey) {\n        _this.setState(function (prevState) {\n          var nextKeyEntities = prevState.keyEntities.map(function (entity) {\n            if (entity.key !== removeKey) return entity;\n            return _objectSpread(_objectSpread({}, entity), {}, {\n              status: STATUS_REMOVED\n            });\n          });\n          return {\n            keyEntities: nextKeyEntities\n          };\n        }, function () {\n          var keyEntities = _this.state.keyEntities;\n          var restKeysCount = keyEntities.filter(function (_ref) {\n            var status = _ref.status;\n            return status !== STATUS_REMOVED;\n          }).length;\n          if (restKeysCount === 0 && _this.props.onAllRemoved) {\n            _this.props.onAllRemoved();\n          }\n        });\n      });\n      return _this;\n    }\n    _createClass(CSSMotionList, [{\n      key: \"render\",\n      value: function render() {\n        var _this2 = this;\n        var keyEntities = this.state.keyEntities;\n        var _this$props = this.props,\n          component = _this$props.component,\n          children = _this$props.children,\n          _onVisibleChanged = _this$props.onVisibleChanged,\n          onAllRemoved = _this$props.onAllRemoved,\n          restProps = _objectWithoutProperties(_this$props, _excluded);\n        var Component = component || React.Fragment;\n        var motionProps = {};\n        MOTION_PROP_NAMES.forEach(function (prop) {\n          motionProps[prop] = restProps[prop];\n          delete restProps[prop];\n        });\n        delete restProps.keys;\n        return /*#__PURE__*/React.createElement(Component, restProps, keyEntities.map(function (_ref2, index) {\n          var status = _ref2.status,\n            eventProps = _objectWithoutProperties(_ref2, _excluded2);\n          var visible = status === STATUS_ADD || status === STATUS_KEEP;\n          return /*#__PURE__*/React.createElement(CSSMotion, _extends({}, motionProps, {\n            key: eventProps.key,\n            visible: visible,\n            eventProps: eventProps,\n            onVisibleChanged: function onVisibleChanged(changedVisible) {\n              _onVisibleChanged === null || _onVisibleChanged === void 0 || _onVisibleChanged(changedVisible, {\n                key: eventProps.key\n              });\n              if (!changedVisible) {\n                _this2.removeKey(eventProps.key);\n              }\n            }\n          }), function (props, ref) {\n            return children(_objectSpread(_objectSpread({}, props), {}, {\n              index: index\n            }), ref);\n          });\n        }));\n      }\n    }], [{\n      key: \"getDerivedStateFromProps\",\n      value: function getDerivedStateFromProps(_ref3, _ref4) {\n        var keys = _ref3.keys;\n        var keyEntities = _ref4.keyEntities;\n        var parsedKeyObjects = parseKeys(keys);\n        var mixedKeyEntities = diffKeys(keyEntities, parsedKeyObjects);\n        return {\n          keyEntities: mixedKeyEntities.filter(function (entity) {\n            var prevEntity = keyEntities.find(function (_ref5) {\n              var key = _ref5.key;\n              return entity.key === key;\n            });\n\n            // Remove if already mark as removed\n            if (prevEntity && prevEntity.status === STATUS_REMOVED && entity.status === STATUS_REMOVE) {\n              return false;\n            }\n            return true;\n          })\n        };\n      }\n    }]);\n    return CSSMotionList;\n  }(React.Component);\n  _defineProperty(CSSMotionList, \"defaultProps\", {\n    component: 'div'\n  });\n  return CSSMotionList;\n}\nexport default genCSSMotionList(supportTransition);","\"use client\";\n\nimport * as React from 'react';\nimport { Provider as MotionProvider } from 'rc-motion';\nimport { useToken } from '../theme/internal';\nconst MotionCacheContext = /*#__PURE__*/React.createContext(true);\nif (process.env.NODE_ENV !== 'production') {\n  MotionCacheContext.displayName = 'MotionCacheContext';\n}\nexport default function MotionWrapper(props) {\n  const parentMotion = React.useContext(MotionCacheContext);\n  const {\n    children\n  } = props;\n  const [, token] = useToken();\n  const {\n    motion\n  } = token;\n  const needWrapMotionProviderRef = React.useRef(false);\n  needWrapMotionProviderRef.current || (needWrapMotionProviderRef.current = parentMotion !== motion);\n  if (needWrapMotionProviderRef.current) {\n    return /*#__PURE__*/React.createElement(MotionCacheContext.Provider, {\n      value: motion\n    }, /*#__PURE__*/React.createElement(MotionProvider, {\n      motion: motion\n    }, children));\n  }\n  return children;\n}","\"use client\";\n\nimport * as React from 'react';\nimport { devUseWarning } from '../_util/warning';\n/**\n * Warning for ConfigProviderProps.\n * This will be empty function in production.\n */\nconst PropWarning = /*#__PURE__*/React.memo(({\n  dropdownMatchSelectWidth\n}) => {\n  const warning = devUseWarning('ConfigProvider');\n  warning.deprecated(dropdownMatchSelectWidth === undefined, 'dropdownMatchSelectWidth', 'popupMatchSelectWidth');\n  return null;\n});\nif (process.env.NODE_ENV !== 'production') {\n  PropWarning.displayName = 'PropWarning';\n}\nexport default process.env.NODE_ENV !== 'production' ? PropWarning : () => null;","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport { createTheme, StyleContext as CssInJsStyleContext } from '@ant-design/cssinjs';\nimport IconContext from \"@ant-design/icons/es/components/Context\";\nimport useMemo from \"rc-util/es/hooks/useMemo\";\nimport { merge } from \"rc-util/es/utils/set\";\nimport warning, { devUseWarning, WarningContext } from '../_util/warning';\nimport ValidateMessagesContext from '../form/validateMessagesContext';\nimport LocaleProvider, { ANT_MARK } from '../locale';\nimport LocaleContext from '../locale/context';\nimport defaultLocale from '../locale/en_US';\nimport { defaultTheme, DesignTokenContext } from '../theme/context';\nimport defaultSeedToken from '../theme/themes/seed';\nimport { ConfigConsumer, ConfigContext, defaultIconPrefixCls, defaultPrefixCls, Variants } from './context';\nimport { registerTheme } from './cssVariables';\nimport { DisabledContextProvider } from './DisabledContext';\nimport useConfig from './hooks/useConfig';\nimport useTheme from './hooks/useTheme';\nimport MotionWrapper from './MotionWrapper';\nimport PropWarning from './PropWarning';\nimport SizeContext, { SizeContextProvider } from './SizeContext';\nimport useStyle from './style';\nexport { Variants };\n/**\n * Since too many feedback using static method like `Modal.confirm` not getting theme, we record the\n * theme register info here to help developer get warning info.\n */\nlet existThemeConfig = false;\nexport const warnContext = process.env.NODE_ENV !== 'production' ? componentName => {\n  process.env.NODE_ENV !== \"production\" ? warning(!existThemeConfig, componentName, `Static function can not consume context like dynamic theme. Please use 'App' component instead.`) : void 0;\n} : /* istanbul ignore next */\nnull;\nexport { ConfigConsumer, ConfigContext, defaultPrefixCls, defaultIconPrefixCls };\nexport const configConsumerProps = ['getTargetContainer', 'getPopupContainer', 'rootPrefixCls', 'getPrefixCls', 'renderEmpty', 'csp', 'autoInsertSpaceInButton', 'locale'];\n// These props is used by `useContext` directly in sub component\nconst PASSED_PROPS = ['getTargetContainer', 'getPopupContainer', 'renderEmpty', 'input', 'pagination', 'form', 'select', 'button'];\nlet globalPrefixCls;\nlet globalIconPrefixCls;\nlet globalTheme;\nlet globalHolderRender;\nfunction getGlobalPrefixCls() {\n  return globalPrefixCls || defaultPrefixCls;\n}\nfunction getGlobalIconPrefixCls() {\n  return globalIconPrefixCls || defaultIconPrefixCls;\n}\nfunction isLegacyTheme(theme) {\n  return Object.keys(theme).some(key => key.endsWith('Color'));\n}\nconst setGlobalConfig = props => {\n  const {\n    prefixCls,\n    iconPrefixCls,\n    theme,\n    holderRender\n  } = props;\n  if (prefixCls !== undefined) {\n    globalPrefixCls = prefixCls;\n  }\n  if (iconPrefixCls !== undefined) {\n    globalIconPrefixCls = iconPrefixCls;\n  }\n  if ('holderRender' in props) {\n    globalHolderRender = holderRender;\n  }\n  if (theme) {\n    if (isLegacyTheme(theme)) {\n      process.env.NODE_ENV !== \"production\" ? warning(false, 'ConfigProvider', '`config` of css variable theme is not work in v5. Please use new `theme` config instead.') : void 0;\n      registerTheme(getGlobalPrefixCls(), theme);\n    } else {\n      globalTheme = theme;\n    }\n  }\n};\nexport const globalConfig = () => ({\n  getPrefixCls: (suffixCls, customizePrefixCls) => {\n    if (customizePrefixCls) {\n      return customizePrefixCls;\n    }\n    return suffixCls ? `${getGlobalPrefixCls()}-${suffixCls}` : getGlobalPrefixCls();\n  },\n  getIconPrefixCls: getGlobalIconPrefixCls,\n  getRootPrefixCls: () => {\n    // If Global prefixCls provided, use this\n    if (globalPrefixCls) {\n      return globalPrefixCls;\n    }\n    // Fallback to default prefixCls\n    return getGlobalPrefixCls();\n  },\n  getTheme: () => globalTheme,\n  holderRender: globalHolderRender\n});\nconst ProviderChildren = props => {\n  const {\n    children,\n    csp: customCsp,\n    autoInsertSpaceInButton,\n    alert,\n    anchor,\n    form,\n    locale,\n    componentSize,\n    direction,\n    space,\n    splitter,\n    virtual,\n    dropdownMatchSelectWidth,\n    popupMatchSelectWidth,\n    popupOverflow,\n    legacyLocale,\n    parentContext,\n    iconPrefixCls: customIconPrefixCls,\n    theme,\n    componentDisabled,\n    segmented,\n    statistic,\n    spin,\n    calendar,\n    carousel,\n    cascader,\n    collapse,\n    typography,\n    checkbox,\n    descriptions,\n    divider,\n    drawer,\n    skeleton,\n    steps,\n    image,\n    layout,\n    list,\n    mentions,\n    modal,\n    progress,\n    result,\n    slider,\n    breadcrumb,\n    menu,\n    pagination,\n    input,\n    textArea,\n    empty,\n    badge,\n    radio,\n    rate,\n    switch: SWITCH,\n    transfer,\n    avatar,\n    message,\n    tag,\n    table,\n    card,\n    tabs,\n    timeline,\n    timePicker,\n    upload,\n    notification,\n    tree,\n    colorPicker,\n    datePicker,\n    rangePicker,\n    flex,\n    wave,\n    dropdown,\n    warning: warningConfig,\n    tour,\n    tooltip,\n    popover,\n    popconfirm,\n    floatButtonGroup,\n    variant,\n    inputNumber,\n    treeSelect\n  } = props;\n  // =================================== Context ===================================\n  const getPrefixCls = React.useCallback((suffixCls, customizePrefixCls) => {\n    const {\n      prefixCls\n    } = props;\n    if (customizePrefixCls) {\n      return customizePrefixCls;\n    }\n    const mergedPrefixCls = prefixCls || parentContext.getPrefixCls('');\n    return suffixCls ? `${mergedPrefixCls}-${suffixCls}` : mergedPrefixCls;\n  }, [parentContext.getPrefixCls, props.prefixCls]);\n  const iconPrefixCls = customIconPrefixCls || parentContext.iconPrefixCls || defaultIconPrefixCls;\n  const csp = customCsp || parentContext.csp;\n  useStyle(iconPrefixCls, csp);\n  const mergedTheme = useTheme(theme, parentContext.theme, {\n    prefixCls: getPrefixCls('')\n  });\n  if (process.env.NODE_ENV !== 'production') {\n    existThemeConfig = existThemeConfig || !!mergedTheme;\n  }\n  const baseConfig = {\n    csp,\n    autoInsertSpaceInButton,\n    alert,\n    anchor,\n    locale: locale || legacyLocale,\n    direction,\n    space,\n    splitter,\n    virtual,\n    popupMatchSelectWidth: popupMatchSelectWidth !== null && popupMatchSelectWidth !== void 0 ? popupMatchSelectWidth : dropdownMatchSelectWidth,\n    popupOverflow,\n    getPrefixCls,\n    iconPrefixCls,\n    theme: mergedTheme,\n    segmented,\n    statistic,\n    spin,\n    calendar,\n    carousel,\n    cascader,\n    collapse,\n    typography,\n    checkbox,\n    descriptions,\n    divider,\n    drawer,\n    skeleton,\n    steps,\n    image,\n    input,\n    textArea,\n    layout,\n    list,\n    mentions,\n    modal,\n    progress,\n    result,\n    slider,\n    breadcrumb,\n    menu,\n    pagination,\n    empty,\n    badge,\n    radio,\n    rate,\n    switch: SWITCH,\n    transfer,\n    avatar,\n    message,\n    tag,\n    table,\n    card,\n    tabs,\n    timeline,\n    timePicker,\n    upload,\n    notification,\n    tree,\n    colorPicker,\n    datePicker,\n    rangePicker,\n    flex,\n    wave,\n    dropdown,\n    warning: warningConfig,\n    tour,\n    tooltip,\n    popover,\n    popconfirm,\n    floatButtonGroup,\n    variant,\n    inputNumber,\n    treeSelect\n  };\n  if (process.env.NODE_ENV !== 'production') {\n    const warningFn = devUseWarning('ConfigProvider');\n    warningFn(!('autoInsertSpaceInButton' in props), 'deprecated', '`autoInsertSpaceInButton` is deprecated. Please use `{ button: { autoInsertSpace: boolean }}` instead.');\n  }\n  const config = Object.assign({}, parentContext);\n  Object.keys(baseConfig).forEach(key => {\n    if (baseConfig[key] !== undefined) {\n      config[key] = baseConfig[key];\n    }\n  });\n  // Pass the props used by `useContext` directly with child component.\n  // These props should merged into `config`.\n  PASSED_PROPS.forEach(propName => {\n    const propValue = props[propName];\n    if (propValue) {\n      config[propName] = propValue;\n    }\n  });\n  if (typeof autoInsertSpaceInButton !== 'undefined') {\n    // merge deprecated api\n    config.button = Object.assign({\n      autoInsertSpace: autoInsertSpaceInButton\n    }, config.button);\n  }\n  // https://github.com/ant-design/ant-design/issues/27617\n  const memoedConfig = useMemo(() => config, config, (prevConfig, currentConfig) => {\n    const prevKeys = Object.keys(prevConfig);\n    const currentKeys = Object.keys(currentConfig);\n    return prevKeys.length !== currentKeys.length || prevKeys.some(key => prevConfig[key] !== currentConfig[key]);\n  });\n  const {\n    layer\n  } = React.useContext(CssInJsStyleContext);\n  const memoIconContextValue = React.useMemo(() => ({\n    prefixCls: iconPrefixCls,\n    csp,\n    layer: layer ? 'antd' : undefined\n  }), [iconPrefixCls, csp, layer]);\n  let childNode = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(PropWarning, {\n    dropdownMatchSelectWidth: dropdownMatchSelectWidth\n  }), children);\n  const validateMessages = React.useMemo(() => {\n    var _a, _b, _c, _d;\n    return merge(((_a = defaultLocale.Form) === null || _a === void 0 ? void 0 : _a.defaultValidateMessages) || {}, ((_c = (_b = memoedConfig.locale) === null || _b === void 0 ? void 0 : _b.Form) === null || _c === void 0 ? void 0 : _c.defaultValidateMessages) || {}, ((_d = memoedConfig.form) === null || _d === void 0 ? void 0 : _d.validateMessages) || {}, (form === null || form === void 0 ? void 0 : form.validateMessages) || {});\n  }, [memoedConfig, form === null || form === void 0 ? void 0 : form.validateMessages]);\n  if (Object.keys(validateMessages).length > 0) {\n    childNode = /*#__PURE__*/React.createElement(ValidateMessagesContext.Provider, {\n      value: validateMessages\n    }, childNode);\n  }\n  if (locale) {\n    childNode = /*#__PURE__*/React.createElement(LocaleProvider, {\n      locale: locale,\n      _ANT_MARK__: ANT_MARK\n    }, childNode);\n  }\n  if (iconPrefixCls || csp) {\n    childNode = /*#__PURE__*/React.createElement(IconContext.Provider, {\n      value: memoIconContextValue\n    }, childNode);\n  }\n  if (componentSize) {\n    childNode = /*#__PURE__*/React.createElement(SizeContextProvider, {\n      size: componentSize\n    }, childNode);\n  }\n  // =================================== Motion ===================================\n  childNode = /*#__PURE__*/React.createElement(MotionWrapper, null, childNode);\n  // ================================ Dynamic theme ================================\n  const memoTheme = React.useMemo(() => {\n    const _a = mergedTheme || {},\n      {\n        algorithm,\n        token,\n        components,\n        cssVar\n      } = _a,\n      rest = __rest(_a, [\"algorithm\", \"token\", \"components\", \"cssVar\"]);\n    const themeObj = algorithm && (!Array.isArray(algorithm) || algorithm.length > 0) ? createTheme(algorithm) : defaultTheme;\n    const parsedComponents = {};\n    Object.entries(components || {}).forEach(([componentName, componentToken]) => {\n      const parsedToken = Object.assign({}, componentToken);\n      if ('algorithm' in parsedToken) {\n        if (parsedToken.algorithm === true) {\n          parsedToken.theme = themeObj;\n        } else if (Array.isArray(parsedToken.algorithm) || typeof parsedToken.algorithm === 'function') {\n          parsedToken.theme = createTheme(parsedToken.algorithm);\n        }\n        delete parsedToken.algorithm;\n      }\n      parsedComponents[componentName] = parsedToken;\n    });\n    const mergedToken = Object.assign(Object.assign({}, defaultSeedToken), token);\n    return Object.assign(Object.assign({}, rest), {\n      theme: themeObj,\n      token: mergedToken,\n      components: parsedComponents,\n      override: Object.assign({\n        override: mergedToken\n      }, parsedComponents),\n      cssVar: cssVar\n    });\n  }, [mergedTheme]);\n  if (theme) {\n    childNode = /*#__PURE__*/React.createElement(DesignTokenContext.Provider, {\n      value: memoTheme\n    }, childNode);\n  }\n  // ================================== Warning ===================================\n  if (memoedConfig.warning) {\n    childNode = /*#__PURE__*/React.createElement(WarningContext.Provider, {\n      value: memoedConfig.warning\n    }, childNode);\n  }\n  // =================================== Render ===================================\n  if (componentDisabled !== undefined) {\n    childNode = /*#__PURE__*/React.createElement(DisabledContextProvider, {\n      disabled: componentDisabled\n    }, childNode);\n  }\n  return /*#__PURE__*/React.createElement(ConfigContext.Provider, {\n    value: memoedConfig\n  }, childNode);\n};\nconst ConfigProvider = props => {\n  const context = React.useContext(ConfigContext);\n  const antLocale = React.useContext(LocaleContext);\n  return /*#__PURE__*/React.createElement(ProviderChildren, Object.assign({\n    parentContext: context,\n    legacyLocale: antLocale\n  }, props));\n};\nConfigProvider.ConfigContext = ConfigContext;\nConfigProvider.SizeContext = SizeContext;\nConfigProvider.config = setGlobalConfig;\nConfigProvider.useConfig = useConfig;\nObject.defineProperty(ConfigProvider, 'SizeContext', {\n  get: () => {\n    process.env.NODE_ENV !== \"production\" ? warning(false, 'ConfigProvider', 'ConfigProvider.SizeContext is deprecated. Please use `ConfigProvider.useConfig().componentSize` instead.') : void 0;\n    return SizeContext;\n  }\n});\nif (process.env.NODE_ENV !== 'production') {\n  ConfigProvider.displayName = 'ConfigProvider';\n}\nexport default ConfigProvider;","// This icon file is generated automatically.\nvar CheckCircleFilled = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm193.5 301.7l-210.6 292a31.8 31.8 0 01-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.5 12.7z\" } }] }, \"name\": \"check-circle\", \"theme\": \"filled\" };\nexport default CheckCircleFilled;\n","function getRoot(ele) {\n  var _ele$getRootNode;\n  return ele === null || ele === void 0 || (_ele$getRootNode = ele.getRootNode) === null || _ele$getRootNode === void 0 ? void 0 : _ele$getRootNode.call(ele);\n}\n\n/**\n * Check if is in shadowRoot\n */\nexport function inShadow(ele) {\n  return getRoot(ele) instanceof ShadowRoot;\n}\n\n/**\n * Return shadowRoot if possible\n */\nexport function getShadowRoot(ele) {\n  return inShadow(ele) ? getRoot(ele) : null;\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport { generate as generateColor } from '@ant-design/colors';\nimport { updateCSS } from \"rc-util/es/Dom/dynamicCSS\";\nimport { getShadowRoot } from \"rc-util/es/Dom/shadow\";\nimport warn from \"rc-util/es/warning\";\nimport React, { useContext, useEffect } from 'react';\nimport IconContext from \"./components/Context\";\nfunction camelCase(input) {\n  return input.replace(/-(.)/g, function (match, g) {\n    return g.toUpperCase();\n  });\n}\nexport function warning(valid, message) {\n  warn(valid, \"[@ant-design/icons] \".concat(message));\n}\nexport function isIconDefinition(target) {\n  return _typeof(target) === 'object' && typeof target.name === 'string' && typeof target.theme === 'string' && (_typeof(target.icon) === 'object' || typeof target.icon === 'function');\n}\nexport function normalizeAttrs() {\n  var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  return Object.keys(attrs).reduce(function (acc, key) {\n    var val = attrs[key];\n    switch (key) {\n      case 'class':\n        acc.className = val;\n        delete acc.class;\n        break;\n      default:\n        delete acc[key];\n        acc[camelCase(key)] = val;\n    }\n    return acc;\n  }, {});\n}\nexport function generate(node, key, rootProps) {\n  if (!rootProps) {\n    return /*#__PURE__*/React.createElement(node.tag, _objectSpread({\n      key: key\n    }, normalizeAttrs(node.attrs)), (node.children || []).map(function (child, index) {\n      return generate(child, \"\".concat(key, \"-\").concat(node.tag, \"-\").concat(index));\n    }));\n  }\n  return /*#__PURE__*/React.createElement(node.tag, _objectSpread(_objectSpread({\n    key: key\n  }, normalizeAttrs(node.attrs)), rootProps), (node.children || []).map(function (child, index) {\n    return generate(child, \"\".concat(key, \"-\").concat(node.tag, \"-\").concat(index));\n  }));\n}\nexport function getSecondaryColor(primaryColor) {\n  // choose the second color\n  return generateColor(primaryColor)[0];\n}\nexport function normalizeTwoToneColors(twoToneColor) {\n  if (!twoToneColor) {\n    return [];\n  }\n  return Array.isArray(twoToneColor) ? twoToneColor : [twoToneColor];\n}\n\n// These props make sure that the SVG behaviours like general text.\n// Reference: https://blog.prototypr.io/align-svg-icons-to-text-and-say-goodbye-to-font-icons-d44b3d7b26b4\nexport var svgBaseProps = {\n  width: '1em',\n  height: '1em',\n  fill: 'currentColor',\n  'aria-hidden': 'true',\n  focusable: 'false'\n};\nexport var iconStyles = \"\\n.anticon {\\n  display: inline-flex;\\n  align-items: center;\\n  color: inherit;\\n  font-style: normal;\\n  line-height: 0;\\n  text-align: center;\\n  text-transform: none;\\n  vertical-align: -0.125em;\\n  text-rendering: optimizeLegibility;\\n  -webkit-font-smoothing: antialiased;\\n  -moz-osx-font-smoothing: grayscale;\\n}\\n\\n.anticon > * {\\n  line-height: 1;\\n}\\n\\n.anticon svg {\\n  display: inline-block;\\n}\\n\\n.anticon::before {\\n  display: none;\\n}\\n\\n.anticon .anticon-icon {\\n  display: block;\\n}\\n\\n.anticon[tabindex] {\\n  cursor: pointer;\\n}\\n\\n.anticon-spin::before,\\n.anticon-spin {\\n  display: inline-block;\\n  -webkit-animation: loadingCircle 1s infinite linear;\\n  animation: loadingCircle 1s infinite linear;\\n}\\n\\n@-webkit-keyframes loadingCircle {\\n  100% {\\n    -webkit-transform: rotate(360deg);\\n    transform: rotate(360deg);\\n  }\\n}\\n\\n@keyframes loadingCircle {\\n  100% {\\n    -webkit-transform: rotate(360deg);\\n    transform: rotate(360deg);\\n  }\\n}\\n\";\nexport var useInsertStyles = function useInsertStyles(eleRef) {\n  var _useContext = useContext(IconContext),\n    csp = _useContext.csp,\n    prefixCls = _useContext.prefixCls,\n    layer = _useContext.layer;\n  var mergedStyleStr = iconStyles;\n  if (prefixCls) {\n    mergedStyleStr = mergedStyleStr.replace(/anticon/g, prefixCls);\n  }\n  if (layer) {\n    mergedStyleStr = \"@layer \".concat(layer, \" {\\n\").concat(mergedStyleStr, \"\\n}\");\n  }\n  useEffect(function () {\n    var ele = eleRef.current;\n    var shadowRoot = getShadowRoot(ele);\n    updateCSS(mergedStyleStr, '@ant-design-icons', {\n      prepend: !layer,\n      csp: csp,\n      attachTo: shadowRoot\n    });\n  }, []);\n};","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nvar _excluded = [\"icon\", \"className\", \"onClick\", \"style\", \"primaryColor\", \"secondaryColor\"];\nimport * as React from 'react';\nimport { generate, getSecondaryColor, isIconDefinition, warning, useInsertStyles } from \"../utils\";\nvar twoToneColorPalette = {\n  primaryColor: '#333',\n  secondaryColor: '#E6E6E6',\n  calculated: false\n};\nfunction setTwoToneColors(_ref) {\n  var primaryColor = _ref.primaryColor,\n    secondaryColor = _ref.secondaryColor;\n  twoToneColorPalette.primaryColor = primaryColor;\n  twoToneColorPalette.secondaryColor = secondaryColor || getSecondaryColor(primaryColor);\n  twoToneColorPalette.calculated = !!secondaryColor;\n}\nfunction getTwoToneColors() {\n  return _objectSpread({}, twoToneColorPalette);\n}\nvar IconBase = function IconBase(props) {\n  var icon = props.icon,\n    className = props.className,\n    onClick = props.onClick,\n    style = props.style,\n    primaryColor = props.primaryColor,\n    secondaryColor = props.secondaryColor,\n    restProps = _objectWithoutProperties(props, _excluded);\n  var svgRef = React.useRef();\n  var colors = twoToneColorPalette;\n  if (primaryColor) {\n    colors = {\n      primaryColor: primaryColor,\n      secondaryColor: secondaryColor || getSecondaryColor(primaryColor)\n    };\n  }\n  useInsertStyles(svgRef);\n  warning(isIconDefinition(icon), \"icon should be icon definiton, but got \".concat(icon));\n  if (!isIconDefinition(icon)) {\n    return null;\n  }\n  var target = icon;\n  if (target && typeof target.icon === 'function') {\n    target = _objectSpread(_objectSpread({}, target), {}, {\n      icon: target.icon(colors.primaryColor, colors.secondaryColor)\n    });\n  }\n  return generate(target.icon, \"svg-\".concat(target.name), _objectSpread(_objectSpread({\n    className: className,\n    onClick: onClick,\n    style: style,\n    'data-icon': target.name,\n    width: '1em',\n    height: '1em',\n    fill: 'currentColor',\n    'aria-hidden': 'true'\n  }, restProps), {}, {\n    ref: svgRef\n  }));\n};\nIconBase.displayName = 'IconReact';\nIconBase.getTwoToneColors = getTwoToneColors;\nIconBase.setTwoToneColors = setTwoToneColors;\nexport default IconBase;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport ReactIcon from \"./IconBase\";\nimport { normalizeTwoToneColors } from \"../utils\";\nexport function setTwoToneColor(twoToneColor) {\n  var _normalizeTwoToneColo = normalizeTwoToneColors(twoToneColor),\n    _normalizeTwoToneColo2 = _slicedToArray(_normalizeTwoToneColo, 2),\n    primaryColor = _normalizeTwoToneColo2[0],\n    secondaryColor = _normalizeTwoToneColo2[1];\n  return ReactIcon.setTwoToneColors({\n    primaryColor: primaryColor,\n    secondaryColor: secondaryColor\n  });\n}\nexport function getTwoToneColor() {\n  var colors = ReactIcon.getTwoToneColors();\n  if (!colors.calculated) {\n    return colors.primaryColor;\n  }\n  return [colors.primaryColor, colors.secondaryColor];\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"className\", \"icon\", \"spin\", \"rotate\", \"tabIndex\", \"onClick\", \"twoToneColor\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { blue } from '@ant-design/colors';\nimport Context from \"./Context\";\nimport ReactIcon from \"./IconBase\";\nimport { getTwoToneColor, setTwoToneColor } from \"./twoTonePrimaryColor\";\nimport { normalizeTwoToneColors } from \"../utils\";\n// Initial setting\n// should move it to antd main repo?\nsetTwoToneColor(blue.primary);\n\n// https://github.com/DefinitelyTyped/DefinitelyTyped/issues/34757#issuecomment-488848720\n\nvar Icon = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var className = props.className,\n    icon = props.icon,\n    spin = props.spin,\n    rotate = props.rotate,\n    tabIndex = props.tabIndex,\n    onClick = props.onClick,\n    twoToneColor = props.twoToneColor,\n    restProps = _objectWithoutProperties(props, _excluded);\n  var _React$useContext = React.useContext(Context),\n    _React$useContext$pre = _React$useContext.prefixCls,\n    prefixCls = _React$useContext$pre === void 0 ? 'anticon' : _React$useContext$pre,\n    rootClassName = _React$useContext.rootClassName;\n  var classString = classNames(rootClassName, prefixCls, _defineProperty(_defineProperty({}, \"\".concat(prefixCls, \"-\").concat(icon.name), !!icon.name), \"\".concat(prefixCls, \"-spin\"), !!spin || icon.name === 'loading'), className);\n  var iconTabIndex = tabIndex;\n  if (iconTabIndex === undefined && onClick) {\n    iconTabIndex = -1;\n  }\n  var svgStyle = rotate ? {\n    msTransform: \"rotate(\".concat(rotate, \"deg)\"),\n    transform: \"rotate(\".concat(rotate, \"deg)\")\n  } : undefined;\n  var _normalizeTwoToneColo = normalizeTwoToneColors(twoToneColor),\n    _normalizeTwoToneColo2 = _slicedToArray(_normalizeTwoToneColo, 2),\n    primaryColor = _normalizeTwoToneColo2[0],\n    secondaryColor = _normalizeTwoToneColo2[1];\n  return /*#__PURE__*/React.createElement(\"span\", _extends({\n    role: \"img\",\n    \"aria-label\": icon.name\n  }, restProps, {\n    ref: ref,\n    tabIndex: iconTabIndex,\n    onClick: onClick,\n    className: classString\n  }), /*#__PURE__*/React.createElement(ReactIcon, {\n    icon: icon,\n    primaryColor: primaryColor,\n    secondaryColor: secondaryColor,\n    style: svgStyle\n  }));\n});\nIcon.displayName = 'AntdIcon';\nIcon.getTwoToneColor = getTwoToneColor;\nIcon.setTwoToneColor = setTwoToneColor;\nexport default Icon;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport CheckCircleFilledSvg from \"@ant-design/icons-svg/es/asn/CheckCircleFilled\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar CheckCircleFilled = function CheckCircleFilled(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: CheckCircleFilledSvg\n  }));\n};\n\n/**![check-circle](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0xOTMuNSAzMDEuN2wtMjEwLjYgMjkyYTMxLjggMzEuOCAwIDAxLTUxLjcgMEwzMTguNSA0ODQuOWMtMy44LTUuMyAwLTEyLjcgNi41LTEyLjdoNDYuOWMxMC4yIDAgMTkuOSA0LjkgMjUuOSAxMy4zbDcxLjIgOTguOCAxNTcuMi0yMThjNi04LjMgMTUuNi0xMy4zIDI1LjktMTMuM0g2OTljNi41IDAgMTAuMyA3LjQgNi41IDEyLjd6IiAvPjwvc3ZnPg==) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(CheckCircleFilled);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'CheckCircleFilled';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar CloseCircleFilled = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"fill-rule\": \"evenodd\", \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M512 64c247.4 0 448 200.6 448 448S759.4 960 512 960 64 759.4 64 512 264.6 64 512 64zm127.98 274.82h-.04l-.08.06L512 466.75 384.14 338.88c-.04-.05-.06-.06-.08-.06a.12.12 0 00-.07 0c-.03 0-.05.01-.09.05l-45.02 45.02a.2.2 0 00-.05.09.12.12 0 000 .07v.02a.27.27 0 00.06.06L466.75 512 338.88 639.86c-.05.04-.06.06-.06.08a.12.12 0 000 .07c0 .03.01.05.05.09l45.02 45.02a.2.2 0 00.09.05.12.12 0 00.07 0c.02 0 .04-.01.08-.05L512 557.25l127.86 127.87c.04.04.06.05.08.05a.12.12 0 00.07 0c.03 0 .05-.01.09-.05l45.02-45.02a.2.2 0 00.05-.09.12.12 0 000-.07v-.02a.27.27 0 00-.05-.06L557.25 512l127.87-127.86c.04-.04.05-.06.05-.08a.12.12 0 000-.07c0-.03-.01-.05-.05-.09l-45.02-45.02a.2.2 0 00-.09-.05.12.12 0 00-.07 0z\" } }] }, \"name\": \"close-circle\", \"theme\": \"filled\" };\nexport default CloseCircleFilled;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport CloseCircleFilledSvg from \"@ant-design/icons-svg/es/asn/CloseCircleFilled\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar CloseCircleFilled = function CloseCircleFilled(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: CloseCircleFilledSvg\n  }));\n};\n\n/**![close-circle](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIGZpbGwtcnVsZT0iZXZlbm9kZCIgdmlld0JveD0iNjQgNjQgODk2IDg5NiIgZm9jdXNhYmxlPSJmYWxzZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNTEyIDY0YzI0Ny40IDAgNDQ4IDIwMC42IDQ0OCA0NDhTNzU5LjQgOTYwIDUxMiA5NjAgNjQgNzU5LjQgNjQgNTEyIDI2NC42IDY0IDUxMiA2NHptMTI3Ljk4IDI3NC44MmgtLjA0bC0uMDguMDZMNTEyIDQ2Ni43NSAzODQuMTQgMzM4Ljg4Yy0uMDQtLjA1LS4wNi0uMDYtLjA4LS4wNmEuMTIuMTIgMCAwMC0uMDcgMGMtLjAzIDAtLjA1LjAxLS4wOS4wNWwtNDUuMDIgNDUuMDJhLjIuMiAwIDAwLS4wNS4wOS4xMi4xMiAwIDAwMCAuMDd2LjAyYS4yNy4yNyAwIDAwLjA2LjA2TDQ2Ni43NSA1MTIgMzM4Ljg4IDYzOS44NmMtLjA1LjA0LS4wNi4wNi0uMDYuMDhhLjEyLjEyIDAgMDAwIC4wN2MwIC4wMy4wMS4wNS4wNS4wOWw0NS4wMiA0NS4wMmEuMi4yIDAgMDAuMDkuMDUuMTIuMTIgMCAwMC4wNyAwYy4wMiAwIC4wNC0uMDEuMDgtLjA1TDUxMiA1NTcuMjVsMTI3Ljg2IDEyNy44N2MuMDQuMDQuMDYuMDUuMDguMDVhLjEyLjEyIDAgMDAuMDcgMGMuMDMgMCAuMDUtLjAxLjA5LS4wNWw0NS4wMi00NS4wMmEuMi4yIDAgMDAuMDUtLjA5LjEyLjEyIDAgMDAwLS4wN3YtLjAyYS4yNy4yNyAwIDAwLS4wNS0uMDZMNTU3LjI1IDUxMmwxMjcuODctMTI3Ljg2Yy4wNC0uMDQuMDUtLjA2LjA1LS4wOGEuMTIuMTIgMCAwMDAtLjA3YzAtLjAzLS4wMS0uMDUtLjA1LS4wOWwtNDUuMDItNDUuMDJhLjIuMiAwIDAwLS4wOS0uMDUuMTIuMTIgMCAwMC0uMDcgMHoiIC8+PC9zdmc+) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(CloseCircleFilled);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'CloseCircleFilled';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar CloseOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"fill-rule\": \"evenodd\", \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M799.86 166.31c.02 0 .04.02.08.06l57.69 57.7c.04.03.05.05.06.08a.12.12 0 010 .06c0 .03-.02.05-.06.09L569.93 512l287.7 287.7c.04.04.05.06.06.09a.12.12 0 010 .07c0 .02-.02.04-.06.08l-57.7 57.69c-.03.04-.05.05-.07.06a.12.12 0 01-.07 0c-.03 0-.05-.02-.09-.06L512 569.93l-287.7 287.7c-.04.04-.06.05-.09.06a.12.12 0 01-.07 0c-.02 0-.04-.02-.08-.06l-57.69-57.7c-.04-.03-.05-.05-.06-.07a.12.12 0 010-.07c0-.03.02-.05.06-.09L454.07 512l-287.7-287.7c-.04-.04-.05-.06-.06-.09a.12.12 0 010-.07c0-.02.02-.04.06-.08l57.7-57.69c.03-.04.05-.05.07-.06a.12.12 0 01.07 0c.03 0 .05.02.09.06L512 454.07l287.7-287.7c.04-.04.06-.05.09-.06a.12.12 0 01.07 0z\" } }] }, \"name\": \"close\", \"theme\": \"outlined\" };\nexport default CloseOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport CloseOutlinedSvg from \"@ant-design/icons-svg/es/asn/CloseOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar CloseOutlined = function CloseOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: CloseOutlinedSvg\n  }));\n};\n\n/**![close](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIGZpbGwtcnVsZT0iZXZlbm9kZCIgdmlld0JveD0iNjQgNjQgODk2IDg5NiIgZm9jdXNhYmxlPSJmYWxzZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNzk5Ljg2IDE2Ni4zMWMuMDIgMCAuMDQuMDIuMDguMDZsNTcuNjkgNTcuN2MuMDQuMDMuMDUuMDUuMDYuMDhhLjEyLjEyIDAgMDEwIC4wNmMwIC4wMy0uMDIuMDUtLjA2LjA5TDU2OS45MyA1MTJsMjg3LjcgMjg3LjdjLjA0LjA0LjA1LjA2LjA2LjA5YS4xMi4xMiAwIDAxMCAuMDdjMCAuMDItLjAyLjA0LS4wNi4wOGwtNTcuNyA1Ny42OWMtLjAzLjA0LS4wNS4wNS0uMDcuMDZhLjEyLjEyIDAgMDEtLjA3IDBjLS4wMyAwLS4wNS0uMDItLjA5LS4wNkw1MTIgNTY5LjkzbC0yODcuNyAyODcuN2MtLjA0LjA0LS4wNi4wNS0uMDkuMDZhLjEyLjEyIDAgMDEtLjA3IDBjLS4wMiAwLS4wNC0uMDItLjA4LS4wNmwtNTcuNjktNTcuN2MtLjA0LS4wMy0uMDUtLjA1LS4wNi0uMDdhLjEyLjEyIDAgMDEwLS4wN2MwLS4wMy4wMi0uMDUuMDYtLjA5TDQ1NC4wNyA1MTJsLTI4Ny43LTI4Ny43Yy0uMDQtLjA0LS4wNS0uMDYtLjA2LS4wOWEuMTIuMTIgMCAwMTAtLjA3YzAtLjAyLjAyLS4wNC4wNi0uMDhsNTcuNy01Ny42OWMuMDMtLjA0LjA1LS4wNS4wNy0uMDZhLjEyLjEyIDAgMDEuMDcgMGMuMDMgMCAuMDUuMDIuMDkuMDZMNTEyIDQ1NC4wN2wyODcuNy0yODcuN2MuMDQtLjA0LjA2LS4wNS4wOS0uMDZhLjEyLjEyIDAgMDEuMDcgMHoiIC8+PC9zdmc+) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(CloseOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'CloseOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar ExclamationCircleFilled = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-32 232c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V296zm32 440a48.01 48.01 0 010-96 48.01 48.01 0 010 96z\" } }] }, \"name\": \"exclamation-circle\", \"theme\": \"filled\" };\nexport default ExclamationCircleFilled;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport ExclamationCircleFilledSvg from \"@ant-design/icons-svg/es/asn/ExclamationCircleFilled\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar ExclamationCircleFilled = function ExclamationCircleFilled(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: ExclamationCircleFilledSvg\n  }));\n};\n\n/**![exclamation-circle](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0tMzIgMjMyYzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2MjcyYzAgNC40LTMuNiA4LTggOGgtNDhjLTQuNCAwLTgtMy42LTgtOFYyOTZ6bTMyIDQ0MGE0OC4wMSA0OC4wMSAwIDAxMC05NiA0OC4wMSA0OC4wMSAwIDAxMCA5NnoiIC8+PC9zdmc+) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(ExclamationCircleFilled);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'ExclamationCircleFilled';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar InfoCircleFilled = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm32 664c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V456c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272zm-32-344a48.01 48.01 0 010-96 48.01 48.01 0 010 96z\" } }] }, \"name\": \"info-circle\", \"theme\": \"filled\" };\nexport default InfoCircleFilled;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport InfoCircleFilledSvg from \"@ant-design/icons-svg/es/asn/InfoCircleFilled\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar InfoCircleFilled = function InfoCircleFilled(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: InfoCircleFilledSvg\n  }));\n};\n\n/**![info-circle](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0zMiA2NjRjMCA0LjQtMy42IDgtOCA4aC00OGMtNC40IDAtOC0zLjYtOC04VjQ1NmMwLTQuNCAzLjYtOCA4LThoNDhjNC40IDAgOCAzLjYgOCA4djI3MnptLTMyLTM0NGE0OC4wMSA0OC4wMSAwIDAxMC05NiA0OC4wMSA0OC4wMSAwIDAxMCA5NnoiIC8+PC9zdmc+) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(InfoCircleFilled);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'InfoCircleFilled';\n}\nexport default RefIcon;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nvar attributes = \"accept acceptCharset accessKey action allowFullScreen allowTransparency\\n    alt async autoComplete autoFocus autoPlay capture cellPadding cellSpacing challenge\\n    charSet checked classID className colSpan cols content contentEditable contextMenu\\n    controls coords crossOrigin data dateTime default defer dir disabled download draggable\\n    encType form formAction formEncType formMethod formNoValidate formTarget frameBorder\\n    headers height hidden high href hrefLang htmlFor httpEquiv icon id inputMode integrity\\n    is keyParams keyType kind label lang list loop low manifest marginHeight marginWidth max maxLength media\\n    mediaGroup method min minLength multiple muted name noValidate nonce open\\n    optimum pattern placeholder poster preload radioGroup readOnly rel required\\n    reversed role rowSpan rows sandbox scope scoped scrolling seamless selected\\n    shape size sizes span spellCheck src srcDoc srcLang srcSet start step style\\n    summary tabIndex target title type useMap value width wmode wrap\";\nvar eventsName = \"onCopy onCut onPaste onCompositionEnd onCompositionStart onCompositionUpdate onKeyDown\\n    onKeyPress onKeyUp onFocus onBlur onChange onInput onSubmit onClick onContextMenu onDoubleClick\\n    onDrag onDragEnd onDragEnter onDragExit onDragLeave onDragOver onDragStart onDrop onMouseDown\\n    onMouseEnter onMouseLeave onMouseMove onMouseOut onMouseOver onMouseUp onSelect onTouchCancel\\n    onTouchEnd onTouchMove onTouchStart onScroll onWheel onAbort onCanPlay onCanPlayThrough\\n    onDurationChange onEmptied onEncrypted onEnded onError onLoadedData onLoadedMetadata\\n    onLoadStart onPause onPlay onPlaying onProgress onRateChange onSeeked onSeeking onStalled onSuspend onTimeUpdate onVolumeChange onWaiting onLoad onError\";\nvar propList = \"\".concat(attributes, \" \").concat(eventsName).split(/[\\s\\n]+/);\n\n/* eslint-enable max-len */\nvar ariaPrefix = 'aria-';\nvar dataPrefix = 'data-';\nfunction match(key, prefix) {\n  return key.indexOf(prefix) === 0;\n}\n/**\n * Picker props from exist props with filter\n * @param props Passed props\n * @param ariaOnly boolean | { aria?: boolean; data?: boolean; attr?: boolean; } filter config\n */\nexport default function pickAttrs(props) {\n  var ariaOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n  var mergedConfig;\n  if (ariaOnly === false) {\n    mergedConfig = {\n      aria: true,\n      data: true,\n      attr: true\n    };\n  } else if (ariaOnly === true) {\n    mergedConfig = {\n      aria: true\n    };\n  } else {\n    mergedConfig = _objectSpread({}, ariaOnly);\n  }\n  var attrs = {};\n  Object.keys(props).forEach(function (key) {\n    if (\n    // Aria\n    mergedConfig.aria && (key === 'role' || match(key, ariaPrefix)) ||\n    // Data\n    mergedConfig.data && match(key, dataPrefix) ||\n    // Attr\n    mergedConfig.attr && propList.includes(key)) {\n      attrs[key] = props[key];\n    }\n  });\n  return attrs;\n}","import React from 'react';\nexport function isFragment(child) {\n  return child && /*#__PURE__*/React.isValidElement(child) && child.type === React.Fragment;\n}\nexport const replaceElement = (element, replacement, props) => {\n  if (! /*#__PURE__*/React.isValidElement(element)) {\n    return replacement;\n  }\n  return /*#__PURE__*/React.cloneElement(element, typeof props === 'function' ? props(element.props || {}) : props);\n};\nexport function cloneElement(element, props) {\n  return replaceElement(element, element, props);\n}","import { unit } from '@ant-design/cssinjs';\nimport { resetComponent } from '../../style';\nimport { genStyleHooks } from '../../theme/internal';\nconst genAlertTypeStyle = (bgColor, borderColor, iconColor, token, alertCls) => ({\n  background: bgColor,\n  border: `${unit(token.lineWidth)} ${token.lineType} ${borderColor}`,\n  [`${alertCls}-icon`]: {\n    color: iconColor\n  }\n});\nexport const genBaseStyle = token => {\n  const {\n    componentCls,\n    motionDurationSlow: duration,\n    marginXS,\n    marginSM,\n    fontSize,\n    fontSizeLG,\n    lineHeight,\n    borderRadiusLG: borderRadius,\n    motionEaseInOutCirc,\n    withDescriptionIconSize,\n    colorText,\n    colorTextHeading,\n    withDescriptionPadding,\n    defaultPadding\n  } = token;\n  return {\n    [componentCls]: Object.assign(Object.assign({}, resetComponent(token)), {\n      position: 'relative',\n      display: 'flex',\n      alignItems: 'center',\n      padding: defaultPadding,\n      wordWrap: 'break-word',\n      borderRadius,\n      [`&${componentCls}-rtl`]: {\n        direction: 'rtl'\n      },\n      [`${componentCls}-content`]: {\n        flex: 1,\n        minWidth: 0\n      },\n      [`${componentCls}-icon`]: {\n        marginInlineEnd: marginXS,\n        lineHeight: 0\n      },\n      '&-description': {\n        display: 'none',\n        fontSize,\n        lineHeight\n      },\n      '&-message': {\n        color: colorTextHeading\n      },\n      [`&${componentCls}-motion-leave`]: {\n        overflow: 'hidden',\n        opacity: 1,\n        transition: `max-height ${duration} ${motionEaseInOutCirc}, opacity ${duration} ${motionEaseInOutCirc},\n        padding-top ${duration} ${motionEaseInOutCirc}, padding-bottom ${duration} ${motionEaseInOutCirc},\n        margin-bottom ${duration} ${motionEaseInOutCirc}`\n      },\n      [`&${componentCls}-motion-leave-active`]: {\n        maxHeight: 0,\n        marginBottom: '0 !important',\n        paddingTop: 0,\n        paddingBottom: 0,\n        opacity: 0\n      }\n    }),\n    [`${componentCls}-with-description`]: {\n      alignItems: 'flex-start',\n      padding: withDescriptionPadding,\n      [`${componentCls}-icon`]: {\n        marginInlineEnd: marginSM,\n        fontSize: withDescriptionIconSize,\n        lineHeight: 0\n      },\n      [`${componentCls}-message`]: {\n        display: 'block',\n        marginBottom: marginXS,\n        color: colorTextHeading,\n        fontSize: fontSizeLG\n      },\n      [`${componentCls}-description`]: {\n        display: 'block',\n        color: colorText\n      }\n    },\n    [`${componentCls}-banner`]: {\n      marginBottom: 0,\n      border: '0 !important',\n      borderRadius: 0\n    }\n  };\n};\nexport const genTypeStyle = token => {\n  const {\n    componentCls,\n    colorSuccess,\n    colorSuccessBorder,\n    colorSuccessBg,\n    colorWarning,\n    colorWarningBorder,\n    colorWarningBg,\n    colorError,\n    colorErrorBorder,\n    colorErrorBg,\n    colorInfo,\n    colorInfoBorder,\n    colorInfoBg\n  } = token;\n  return {\n    [componentCls]: {\n      '&-success': genAlertTypeStyle(colorSuccessBg, colorSuccessBorder, colorSuccess, token, componentCls),\n      '&-info': genAlertTypeStyle(colorInfoBg, colorInfoBorder, colorInfo, token, componentCls),\n      '&-warning': genAlertTypeStyle(colorWarningBg, colorWarningBorder, colorWarning, token, componentCls),\n      '&-error': Object.assign(Object.assign({}, genAlertTypeStyle(colorErrorBg, colorErrorBorder, colorError, token, componentCls)), {\n        [`${componentCls}-description > pre`]: {\n          margin: 0,\n          padding: 0\n        }\n      })\n    }\n  };\n};\nexport const genActionStyle = token => {\n  const {\n    componentCls,\n    iconCls,\n    motionDurationMid,\n    marginXS,\n    fontSizeIcon,\n    colorIcon,\n    colorIconHover\n  } = token;\n  return {\n    [componentCls]: {\n      '&-action': {\n        marginInlineStart: marginXS\n      },\n      [`${componentCls}-close-icon`]: {\n        marginInlineStart: marginXS,\n        padding: 0,\n        overflow: 'hidden',\n        fontSize: fontSizeIcon,\n        lineHeight: unit(fontSizeIcon),\n        backgroundColor: 'transparent',\n        border: 'none',\n        outline: 'none',\n        cursor: 'pointer',\n        [`${iconCls}-close`]: {\n          color: colorIcon,\n          transition: `color ${motionDurationMid}`,\n          '&:hover': {\n            color: colorIconHover\n          }\n        }\n      },\n      '&-close-text': {\n        color: colorIcon,\n        transition: `color ${motionDurationMid}`,\n        '&:hover': {\n          color: colorIconHover\n        }\n      }\n    }\n  };\n};\nexport const prepareComponentToken = token => {\n  const paddingHorizontal = 12; // Fixed value here.\n  return {\n    withDescriptionIconSize: token.fontSizeHeading3,\n    defaultPadding: `${token.paddingContentVerticalSM}px ${paddingHorizontal}px`,\n    withDescriptionPadding: `${token.paddingMD}px ${token.paddingContentHorizontalLG}px`\n  };\n};\nexport default genStyleHooks('Alert', token => [genBaseStyle(token), genTypeStyle(token), genActionStyle(token)], prepareComponentToken);","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport CheckCircleFilled from \"@ant-design/icons/es/icons/CheckCircleFilled\";\nimport CloseCircleFilled from \"@ant-design/icons/es/icons/CloseCircleFilled\";\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport ExclamationCircleFilled from \"@ant-design/icons/es/icons/ExclamationCircleFilled\";\nimport InfoCircleFilled from \"@ant-design/icons/es/icons/InfoCircleFilled\";\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport { composeRef } from \"rc-util/es/ref\";\nimport { replaceElement } from '../_util/reactNode';\nimport { devUseWarning } from '../_util/warning';\nimport { useComponentConfig } from '../config-provider/context';\nimport useStyle from './style';\nconst iconMapFilled = {\n  success: CheckCircleFilled,\n  info: InfoCircleFilled,\n  error: CloseCircleFilled,\n  warning: ExclamationCircleFilled\n};\nconst IconNode = props => {\n  const {\n    icon,\n    prefixCls,\n    type\n  } = props;\n  const iconType = iconMapFilled[type] || null;\n  if (icon) {\n    return replaceElement(icon, /*#__PURE__*/React.createElement(\"span\", {\n      className: `${prefixCls}-icon`\n    }, icon), () => ({\n      className: classNames(`${prefixCls}-icon`, icon.props.className)\n    }));\n  }\n  return /*#__PURE__*/React.createElement(iconType, {\n    className: `${prefixCls}-icon`\n  });\n};\nconst CloseIconNode = props => {\n  const {\n    isClosable,\n    prefixCls,\n    closeIcon,\n    handleClose,\n    ariaProps\n  } = props;\n  const mergedCloseIcon = closeIcon === true || closeIcon === undefined ? /*#__PURE__*/React.createElement(CloseOutlined, null) : closeIcon;\n  return isClosable ? (/*#__PURE__*/React.createElement(\"button\", Object.assign({\n    type: \"button\",\n    onClick: handleClose,\n    className: `${prefixCls}-close-icon`,\n    tabIndex: 0\n  }, ariaProps), mergedCloseIcon)) : null;\n};\nconst Alert = /*#__PURE__*/React.forwardRef((props, ref) => {\n  const {\n      description,\n      prefixCls: customizePrefixCls,\n      message,\n      banner,\n      className,\n      rootClassName,\n      style,\n      onMouseEnter,\n      onMouseLeave,\n      onClick,\n      afterClose,\n      showIcon,\n      closable,\n      closeText,\n      closeIcon,\n      action,\n      id\n    } = props,\n    otherProps = __rest(props, [\"description\", \"prefixCls\", \"message\", \"banner\", \"className\", \"rootClassName\", \"style\", \"onMouseEnter\", \"onMouseLeave\", \"onClick\", \"afterClose\", \"showIcon\", \"closable\", \"closeText\", \"closeIcon\", \"action\", \"id\"]);\n  const [closed, setClosed] = React.useState(false);\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('Alert');\n    warning.deprecated(!closeText, 'closeText', 'closable.closeIcon');\n  }\n  const internalRef = React.useRef(null);\n  React.useImperativeHandle(ref, () => ({\n    nativeElement: internalRef.current\n  }));\n  const {\n    getPrefixCls,\n    direction,\n    closable: contextClosable,\n    closeIcon: contextCloseIcon,\n    className: contextClassName,\n    style: contextStyle\n  } = useComponentConfig('alert');\n  const prefixCls = getPrefixCls('alert', customizePrefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  const handleClose = e => {\n    var _a;\n    setClosed(true);\n    (_a = props.onClose) === null || _a === void 0 ? void 0 : _a.call(props, e);\n  };\n  const type = React.useMemo(() => {\n    if (props.type !== undefined) {\n      return props.type;\n    }\n    // banner mode defaults to 'warning'\n    return banner ? 'warning' : 'info';\n  }, [props.type, banner]);\n  // closeable when closeText or closeIcon is assigned\n  const isClosable = React.useMemo(() => {\n    if (typeof closable === 'object' && closable.closeIcon) return true;\n    if (closeText) {\n      return true;\n    }\n    if (typeof closable === 'boolean') {\n      return closable;\n    }\n    // should be true when closeIcon is 0 or ''\n    if (closeIcon !== false && closeIcon !== null && closeIcon !== undefined) {\n      return true;\n    }\n    return !!contextClosable;\n  }, [closeText, closeIcon, closable, contextClosable]);\n  // banner mode defaults to Icon\n  const isShowIcon = banner && showIcon === undefined ? true : showIcon;\n  const alertCls = classNames(prefixCls, `${prefixCls}-${type}`, {\n    [`${prefixCls}-with-description`]: !!description,\n    [`${prefixCls}-no-icon`]: !isShowIcon,\n    [`${prefixCls}-banner`]: !!banner,\n    [`${prefixCls}-rtl`]: direction === 'rtl'\n  }, contextClassName, className, rootClassName, cssVarCls, hashId);\n  const restProps = pickAttrs(otherProps, {\n    aria: true,\n    data: true\n  });\n  const mergedCloseIcon = React.useMemo(() => {\n    if (typeof closable === 'object' && closable.closeIcon) {\n      return closable.closeIcon;\n    }\n    if (closeText) {\n      return closeText;\n    }\n    if (closeIcon !== undefined) {\n      return closeIcon;\n    }\n    if (typeof contextClosable === 'object' && contextClosable.closeIcon) {\n      return contextClosable.closeIcon;\n    }\n    return contextCloseIcon;\n  }, [closeIcon, closable, closeText, contextCloseIcon]);\n  const mergedAriaProps = React.useMemo(() => {\n    const merged = closable !== null && closable !== void 0 ? closable : contextClosable;\n    if (typeof merged === 'object') {\n      const {\n          closeIcon: _\n        } = merged,\n        ariaProps = __rest(merged, [\"closeIcon\"]);\n      return ariaProps;\n    }\n    return {};\n  }, [closable, contextClosable]);\n  return wrapCSSVar(/*#__PURE__*/React.createElement(CSSMotion, {\n    visible: !closed,\n    motionName: `${prefixCls}-motion`,\n    motionAppear: false,\n    motionEnter: false,\n    onLeaveStart: node => ({\n      maxHeight: node.offsetHeight\n    }),\n    onLeaveEnd: afterClose\n  }, ({\n    className: motionClassName,\n    style: motionStyle\n  }, setRef) => (/*#__PURE__*/React.createElement(\"div\", Object.assign({\n    id: id,\n    ref: composeRef(internalRef, setRef),\n    \"data-show\": !closed,\n    className: classNames(alertCls, motionClassName),\n    style: Object.assign(Object.assign(Object.assign({}, contextStyle), style), motionStyle),\n    onMouseEnter: onMouseEnter,\n    onMouseLeave: onMouseLeave,\n    onClick: onClick,\n    role: \"alert\"\n  }, restProps), isShowIcon ? (/*#__PURE__*/React.createElement(IconNode, {\n    description: description,\n    icon: props.icon,\n    prefixCls: prefixCls,\n    type: type\n  })) : null, /*#__PURE__*/React.createElement(\"div\", {\n    className: `${prefixCls}-content`\n  }, message ? /*#__PURE__*/React.createElement(\"div\", {\n    className: `${prefixCls}-message`\n  }, message) : null, description ? /*#__PURE__*/React.createElement(\"div\", {\n    className: `${prefixCls}-description`\n  }, description) : null), action ? /*#__PURE__*/React.createElement(\"div\", {\n    className: `${prefixCls}-action`\n  }, action) : null, /*#__PURE__*/React.createElement(CloseIconNode, {\n    isClosable: isClosable,\n    prefixCls: prefixCls,\n    closeIcon: mergedCloseIcon,\n    handleClose: handleClose,\n    ariaProps: mergedAriaProps\n  })))));\n});\nif (process.env.NODE_ENV !== 'production') {\n  Alert.displayName = 'Alert';\n}\nexport default Alert;","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nfunction _callSuper(t, o, e) {\n  return o = getPrototypeOf(o), possibleConstructorReturn(t, isNativeReflectConstruct() ? Reflect.construct(o, e || [], getPrototypeOf(t).constructor) : o.apply(t, e));\n}\nexport { _callSuper as default };","\"use client\";\n\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _callSuper from \"@babel/runtime/helpers/esm/callSuper\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport * as React from 'react';\nimport Alert from './Alert';\nlet ErrorBoundary = /*#__PURE__*/function (_React$Component) {\n  function ErrorBoundary() {\n    var _this;\n    _classCallCheck(this, ErrorBoundary);\n    _this = _callSuper(this, ErrorBoundary, arguments);\n    _this.state = {\n      error: undefined,\n      info: {\n        componentStack: ''\n      }\n    };\n    return _this;\n  }\n  _inherits(ErrorBoundary, _React$Component);\n  return _createClass(ErrorBoundary, [{\n    key: \"componentDidCatch\",\n    value: function componentDidCatch(error, info) {\n      this.setState({\n        error,\n        info\n      });\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      const {\n        message,\n        description,\n        id,\n        children\n      } = this.props;\n      const {\n        error,\n        info\n      } = this.state;\n      const componentStack = (info === null || info === void 0 ? void 0 : info.componentStack) || null;\n      const errorMessage = typeof message === 'undefined' ? (error || '').toString() : message;\n      const errorDescription = typeof description === 'undefined' ? componentStack : description;\n      if (error) {\n        return /*#__PURE__*/React.createElement(Alert, {\n          id: id,\n          type: \"error\",\n          message: errorMessage,\n          description: /*#__PURE__*/React.createElement(\"pre\", {\n            style: {\n              fontSize: '0.9em',\n              overflowX: 'auto'\n            }\n          }, errorDescription)\n        });\n      }\n      return children;\n    }\n  }]);\n}(React.Component);\nexport default ErrorBoundary;","\"use client\";\n\nimport InternalAlert from './Alert';\nimport ErrorBoundary from './ErrorBoundary';\nconst Alert = InternalAlert;\nAlert.ErrorBoundary = ErrorBoundary;\nexport default Alert;","import { useToken } from '../../theme/internal';\n/**\n * This hook is only for cssVar to add root className for components.\n * If root ClassName is needed, this hook could be refactored with `-root`\n * @param prefixCls\n */\nconst useCSSVarCls = prefixCls => {\n  const [,,,, cssVar] = useToken();\n  return cssVar ? `${prefixCls}-css-var` : '';\n};\nexport default useCSSVarCls;","/**\n * @ignore\n * some key-codes definition and utils from closure-library\n * @author yiminghe@gmail.com\n */\n\nvar KeyCode = {\n  /**\n   * MAC_ENTER\n   */\n  MAC_ENTER: 3,\n  /**\n   * BACKSPACE\n   */\n  BACKSPACE: 8,\n  /**\n   * TAB\n   */\n  TAB: 9,\n  /**\n   * NUMLOCK on FF/Safari Mac\n   */\n  NUM_CENTER: 12,\n  // NUMLOCK on FF/Safari Mac\n  /**\n   * ENTER\n   */\n  ENTER: 13,\n  /**\n   * SHIFT\n   */\n  SHIFT: 16,\n  /**\n   * CTRL\n   */\n  CTRL: 17,\n  /**\n   * ALT\n   */\n  ALT: 18,\n  /**\n   * PAUSE\n   */\n  PAUSE: 19,\n  /**\n   * CAPS_LOCK\n   */\n  CAPS_LOCK: 20,\n  /**\n   * ESC\n   */\n  ESC: 27,\n  /**\n   * SPACE\n   */\n  SPACE: 32,\n  /**\n   * PAGE_UP\n   */\n  PAGE_UP: 33,\n  // also NUM_NORTH_EAST\n  /**\n   * PAGE_DOWN\n   */\n  PAGE_DOWN: 34,\n  // also NUM_SOUTH_EAST\n  /**\n   * END\n   */\n  END: 35,\n  // also NUM_SOUTH_WEST\n  /**\n   * HOME\n   */\n  HOME: 36,\n  // also NUM_NORTH_WEST\n  /**\n   * LEFT\n   */\n  LEFT: 37,\n  // also NUM_WEST\n  /**\n   * UP\n   */\n  UP: 38,\n  // also NUM_NORTH\n  /**\n   * RIGHT\n   */\n  RIGHT: 39,\n  // also NUM_EAST\n  /**\n   * DOWN\n   */\n  DOWN: 40,\n  // also NUM_SOUTH\n  /**\n   * PRINT_SCREEN\n   */\n  PRINT_SCREEN: 44,\n  /**\n   * INSERT\n   */\n  INSERT: 45,\n  // also NUM_INSERT\n  /**\n   * DELETE\n   */\n  DELETE: 46,\n  // also NUM_DELETE\n  /**\n   * ZERO\n   */\n  ZERO: 48,\n  /**\n   * ONE\n   */\n  ONE: 49,\n  /**\n   * TWO\n   */\n  TWO: 50,\n  /**\n   * THREE\n   */\n  THREE: 51,\n  /**\n   * FOUR\n   */\n  FOUR: 52,\n  /**\n   * FIVE\n   */\n  FIVE: 53,\n  /**\n   * SIX\n   */\n  SIX: 54,\n  /**\n   * SEVEN\n   */\n  SEVEN: 55,\n  /**\n   * EIGHT\n   */\n  EIGHT: 56,\n  /**\n   * NINE\n   */\n  NINE: 57,\n  /**\n   * QUESTION_MARK\n   */\n  QUESTION_MARK: 63,\n  // needs localization\n  /**\n   * A\n   */\n  A: 65,\n  /**\n   * B\n   */\n  B: 66,\n  /**\n   * C\n   */\n  C: 67,\n  /**\n   * D\n   */\n  D: 68,\n  /**\n   * E\n   */\n  E: 69,\n  /**\n   * F\n   */\n  F: 70,\n  /**\n   * G\n   */\n  G: 71,\n  /**\n   * H\n   */\n  H: 72,\n  /**\n   * I\n   */\n  I: 73,\n  /**\n   * J\n   */\n  J: 74,\n  /**\n   * K\n   */\n  K: 75,\n  /**\n   * L\n   */\n  L: 76,\n  /**\n   * M\n   */\n  M: 77,\n  /**\n   * N\n   */\n  N: 78,\n  /**\n   * O\n   */\n  O: 79,\n  /**\n   * P\n   */\n  P: 80,\n  /**\n   * Q\n   */\n  Q: 81,\n  /**\n   * R\n   */\n  R: 82,\n  /**\n   * S\n   */\n  S: 83,\n  /**\n   * T\n   */\n  T: 84,\n  /**\n   * U\n   */\n  U: 85,\n  /**\n   * V\n   */\n  V: 86,\n  /**\n   * W\n   */\n  W: 87,\n  /**\n   * X\n   */\n  X: 88,\n  /**\n   * Y\n   */\n  Y: 89,\n  /**\n   * Z\n   */\n  Z: 90,\n  /**\n   * META\n   */\n  META: 91,\n  // WIN_KEY_LEFT\n  /**\n   * WIN_KEY_RIGHT\n   */\n  WIN_KEY_RIGHT: 92,\n  /**\n   * CONTEXT_MENU\n   */\n  CONTEXT_MENU: 93,\n  /**\n   * NUM_ZERO\n   */\n  NUM_ZERO: 96,\n  /**\n   * NUM_ONE\n   */\n  NUM_ONE: 97,\n  /**\n   * NUM_TWO\n   */\n  NUM_TWO: 98,\n  /**\n   * NUM_THREE\n   */\n  NUM_THREE: 99,\n  /**\n   * NUM_FOUR\n   */\n  NUM_FOUR: 100,\n  /**\n   * NUM_FIVE\n   */\n  NUM_FIVE: 101,\n  /**\n   * NUM_SIX\n   */\n  NUM_SIX: 102,\n  /**\n   * NUM_SEVEN\n   */\n  NUM_SEVEN: 103,\n  /**\n   * NUM_EIGHT\n   */\n  NUM_EIGHT: 104,\n  /**\n   * NUM_NINE\n   */\n  NUM_NINE: 105,\n  /**\n   * NUM_MULTIPLY\n   */\n  NUM_MULTIPLY: 106,\n  /**\n   * NUM_PLUS\n   */\n  NUM_PLUS: 107,\n  /**\n   * NUM_MINUS\n   */\n  NUM_MINUS: 109,\n  /**\n   * NUM_PERIOD\n   */\n  NUM_PERIOD: 110,\n  /**\n   * NUM_DIVISION\n   */\n  NUM_DIVISION: 111,\n  /**\n   * F1\n   */\n  F1: 112,\n  /**\n   * F2\n   */\n  F2: 113,\n  /**\n   * F3\n   */\n  F3: 114,\n  /**\n   * F4\n   */\n  F4: 115,\n  /**\n   * F5\n   */\n  F5: 116,\n  /**\n   * F6\n   */\n  F6: 117,\n  /**\n   * F7\n   */\n  F7: 118,\n  /**\n   * F8\n   */\n  F8: 119,\n  /**\n   * F9\n   */\n  F9: 120,\n  /**\n   * F10\n   */\n  F10: 121,\n  /**\n   * F11\n   */\n  F11: 122,\n  /**\n   * F12\n   */\n  F12: 123,\n  /**\n   * NUMLOCK\n   */\n  NUMLOCK: 144,\n  /**\n   * SEMICOLON\n   */\n  SEMICOLON: 186,\n  // needs localization\n  /**\n   * DASH\n   */\n  DASH: 189,\n  // needs localization\n  /**\n   * EQUALS\n   */\n  EQUALS: 187,\n  // needs localization\n  /**\n   * COMMA\n   */\n  COMMA: 188,\n  // needs localization\n  /**\n   * PERIOD\n   */\n  PERIOD: 190,\n  // needs localization\n  /**\n   * SLASH\n   */\n  SLASH: 191,\n  // needs localization\n  /**\n   * APOSTROPHE\n   */\n  APOSTROPHE: 192,\n  // needs localization\n  /**\n   * SINGLE_QUOTE\n   */\n  SINGLE_QUOTE: 222,\n  // needs localization\n  /**\n   * OPEN_SQUARE_BRACKET\n   */\n  OPEN_SQUARE_BRACKET: 219,\n  // needs localization\n  /**\n   * BACKSLASH\n   */\n  BACKSLASH: 220,\n  // needs localization\n  /**\n   * CLOSE_SQUARE_BRACKET\n   */\n  CLOSE_SQUARE_BRACKET: 221,\n  // needs localization\n  /**\n   * WIN_KEY\n   */\n  WIN_KEY: 224,\n  /**\n   * MAC_FF_META\n   */\n  MAC_FF_META: 224,\n  // Firefox (Gecko) fires this for the meta key instead of 91\n  /**\n   * WIN_IME\n   */\n  WIN_IME: 229,\n  // ======================== Function ========================\n  /**\n   * whether text and modified key is entered at the same time.\n   */\n  isTextModifyingKeyEvent: function isTextModifyingKeyEvent(e) {\n    var keyCode = e.keyCode;\n    if (e.altKey && !e.ctrlKey || e.metaKey ||\n    // Function keys don't generate text\n    keyCode >= KeyCode.F1 && keyCode <= KeyCode.F12) {\n      return false;\n    }\n\n    // The following keys are quite harmless, even in combination with\n    // CTRL, ALT or SHIFT.\n    switch (keyCode) {\n      case KeyCode.ALT:\n      case KeyCode.CAPS_LOCK:\n      case KeyCode.CONTEXT_MENU:\n      case KeyCode.CTRL:\n      case KeyCode.DOWN:\n      case KeyCode.END:\n      case KeyCode.ESC:\n      case KeyCode.HOME:\n      case KeyCode.INSERT:\n      case KeyCode.LEFT:\n      case KeyCode.MAC_FF_META:\n      case KeyCode.META:\n      case KeyCode.NUMLOCK:\n      case KeyCode.NUM_CENTER:\n      case KeyCode.PAGE_DOWN:\n      case KeyCode.PAGE_UP:\n      case KeyCode.PAUSE:\n      case KeyCode.PRINT_SCREEN:\n      case KeyCode.RIGHT:\n      case KeyCode.SHIFT:\n      case KeyCode.UP:\n      case KeyCode.WIN_KEY:\n      case KeyCode.WIN_KEY_RIGHT:\n        return false;\n      default:\n        return true;\n    }\n  },\n  /**\n   * whether character is entered.\n   */\n  isCharacterKey: function isCharacterKey(keyCode) {\n    if (keyCode >= KeyCode.ZERO && keyCode <= KeyCode.NINE) {\n      return true;\n    }\n    if (keyCode >= KeyCode.NUM_ZERO && keyCode <= KeyCode.NUM_MULTIPLY) {\n      return true;\n    }\n    if (keyCode >= KeyCode.A && keyCode <= KeyCode.Z) {\n      return true;\n    }\n\n    // Safari sends zero key code for non-latin characters.\n    if (window.navigator.userAgent.indexOf('WebKit') !== -1 && keyCode === 0) {\n      return true;\n    }\n    switch (keyCode) {\n      case KeyCode.SPACE:\n      case KeyCode.QUESTION_MARK:\n      case KeyCode.NUM_PLUS:\n      case KeyCode.NUM_MINUS:\n      case KeyCode.NUM_PERIOD:\n      case KeyCode.NUM_DIVISION:\n      case KeyCode.SEMICOLON:\n      case KeyCode.DASH:\n      case KeyCode.EQUALS:\n      case KeyCode.COMMA:\n      case KeyCode.PERIOD:\n      case KeyCode.SLASH:\n      case KeyCode.APOSTROPHE:\n      case KeyCode.SINGLE_QUOTE:\n      case KeyCode.OPEN_SQUARE_BRACKET:\n      case KeyCode.BACKSLASH:\n      case KeyCode.CLOSE_SQUARE_BRACKET:\n        return true;\n      default:\n        return false;\n    }\n  }\n};\nexport default KeyCode;","// This icon file is generated automatically.\nvar LoadingOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"0 0 1024 1024\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z\" } }] }, \"name\": \"loading\", \"theme\": \"outlined\" };\nexport default LoadingOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport LoadingOutlinedSvg from \"@ant-design/icons-svg/es/asn/LoadingOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar LoadingOutlined = function LoadingOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: LoadingOutlinedSvg\n  }));\n};\n\n/**![loading](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjAgMCAxMDI0IDEwMjQiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTk4OCA1NDhjLTE5LjkgMC0zNi0xNi4xLTM2LTM2IDAtNTkuNC0xMS42LTExNy0zNC42LTE3MS4zYTQ0MC40NSA0NDAuNDUgMCAwMC05NC4zLTEzOS45IDQzNy43MSA0MzcuNzEgMCAwMC0xMzkuOS05NC4zQzYyOSA4My42IDU3MS40IDcyIDUxMiA3MmMtMTkuOSAwLTM2LTE2LjEtMzYtMzZzMTYuMS0zNiAzNi0zNmM2OS4xIDAgMTM2LjIgMTMuNSAxOTkuMyA0MC4zQzc3Mi4zIDY2IDgyNyAxMDMgODc0IDE1MGM0NyA0NyA4My45IDEwMS44IDEwOS43IDE2Mi43IDI2LjcgNjMuMSA0MC4yIDEzMC4yIDQwLjIgMTk5LjMuMSAxOS45LTE2IDM2LTM1LjkgMzZ6IiAvPjwvc3ZnPg==) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(LoadingOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'LoadingOutlined';\n}\nexport default RefIcon;","import React from 'react';\nconst zIndexContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n  zIndexContext.displayName = 'zIndexContext';\n}\nexport default zIndexContext;","import React from 'react';\nimport useToken from '../../theme/useToken';\nimport { devUseWarning } from '../warning';\nimport zIndexContext from '../zindexContext';\n// Z-Index control range\n// Container: 1000 + offset 100 (max base + 10 * offset = 2000)\n// Popover: offset 50\n// Notification: Container Max zIndex + componentOffset\nconst CONTAINER_OFFSET = 100;\nconst CONTAINER_OFFSET_MAX_COUNT = 10;\nexport const CONTAINER_MAX_OFFSET = CONTAINER_OFFSET * CONTAINER_OFFSET_MAX_COUNT;\n/**\n * Static function will default be the `CONTAINER_MAX_OFFSET`.\n * But it still may have children component like Select, Dropdown.\n * So the warning zIndex should exceed the `CONTAINER_MAX_OFFSET`.\n */\nconst CONTAINER_MAX_OFFSET_WITH_CHILDREN = CONTAINER_MAX_OFFSET + CONTAINER_OFFSET;\nexport const containerBaseZIndexOffset = {\n  Modal: CONTAINER_OFFSET,\n  Drawer: CONTAINER_OFFSET,\n  Popover: CONTAINER_OFFSET,\n  Popconfirm: CONTAINER_OFFSET,\n  Tooltip: CONTAINER_OFFSET,\n  Tour: CONTAINER_OFFSET,\n  FloatButton: CONTAINER_OFFSET\n};\nexport const consumerBaseZIndexOffset = {\n  SelectLike: 50,\n  Dropdown: 50,\n  DatePicker: 50,\n  Menu: 50,\n  ImagePreview: 1\n};\nfunction isContainerType(type) {\n  return type in containerBaseZIndexOffset;\n}\nexport const useZIndex = (componentType, customZIndex) => {\n  const [, token] = useToken();\n  const parentZIndex = React.useContext(zIndexContext);\n  const isContainer = isContainerType(componentType);\n  let result;\n  if (customZIndex !== undefined) {\n    result = [customZIndex, customZIndex];\n  } else {\n    let zIndex = parentZIndex !== null && parentZIndex !== void 0 ? parentZIndex : 0;\n    if (isContainer) {\n      zIndex +=\n      // Use preset token zIndex by default but not stack when has parent container\n      (parentZIndex ? 0 : token.zIndexPopupBase) +\n      // Container offset\n      containerBaseZIndexOffset[componentType];\n    } else {\n      zIndex += consumerBaseZIndexOffset[componentType];\n    }\n    result = [parentZIndex === undefined ? customZIndex : zIndex, zIndex];\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning(componentType);\n    const maxZIndex = token.zIndexPopupBase + CONTAINER_MAX_OFFSET_WITH_CHILDREN;\n    const currentZIndex = result[0] || 0;\n    process.env.NODE_ENV !== \"production\" ? warning(customZIndex !== undefined || currentZIndex <= maxZIndex, 'usage', '`zIndex` is over design token `zIndexPopupBase` too much. It may cause unexpected override.') : void 0;\n  }\n  return result;\n};","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nexport default function usePatchElement() {\n  const [elements, setElements] = React.useState([]);\n  const patchElement = React.useCallback(element => {\n    // append a new element to elements (and create a new ref)\n    setElements(originElements => [].concat(_toConsumableArray(originElements), [element]));\n    // return a function that removes the new element out of elements (and create a new ref)\n    // it works a little like useEffect\n    return () => {\n      setElements(originElements => originElements.filter(ele => ele !== element));\n    };\n  }, []);\n  return [elements, patchElement];\n}","function _OverloadYield(e, d) {\n  this.v = e, this.k = d;\n}\nexport { _OverloadYield as default };","function _regeneratorDefine(e, r, n, t) {\n  var i = Object.defineProperty;\n  try {\n    i({}, \"\", {});\n  } catch (e) {\n    i = 0;\n  }\n  _regeneratorDefine = function regeneratorDefine(e, r, n, t) {\n    if (r) i ? i(e, r, {\n      value: n,\n      enumerable: !t,\n      configurable: !t,\n      writable: !t\n    }) : e[r] = n;else {\n      var o = function o(r, n) {\n        _regeneratorDefine(e, r, function (e) {\n          return this._invoke(r, n, e);\n        });\n      };\n      o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2);\n    }\n  }, _regeneratorDefine(e, r, n, t);\n}\nexport { _regeneratorDefine as default };","import regeneratorDefine from \"./regeneratorDefine.js\";\nfunction _regenerator() {\n  /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */\n  var e,\n    t,\n    r = \"function\" == typeof Symbol ? Symbol : {},\n    n = r.iterator || \"@@iterator\",\n    o = r.toStringTag || \"@@toStringTag\";\n  function i(r, n, o, i) {\n    var c = n && n.prototype instanceof Generator ? n : Generator,\n      u = Object.create(c.prototype);\n    return regeneratorDefine(u, \"_invoke\", function (r, n, o) {\n      var i,\n        c,\n        u,\n        f = 0,\n        p = o || [],\n        y = !1,\n        G = {\n          p: 0,\n          n: 0,\n          v: e,\n          a: d,\n          f: d.bind(e, 4),\n          d: function d(t, r) {\n            return i = t, c = 0, u = e, G.n = r, a;\n          }\n        };\n      function d(r, n) {\n        for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) {\n          var o,\n            i = p[t],\n            d = G.p,\n            l = i[2];\n          r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0));\n        }\n        if (o || r > 1) return a;\n        throw y = !0, n;\n      }\n      return function (o, p, l) {\n        if (f > 1) throw TypeError(\"Generator is already running\");\n        for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) {\n          i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u);\n          try {\n            if (f = 2, i) {\n              if (c || (o = \"next\"), t = i[o]) {\n                if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\");\n                if (!t.done) return t;\n                u = t.value, c < 2 && (c = 0);\n              } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1);\n              i = e;\n            } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break;\n          } catch (t) {\n            i = e, c = 1, u = t;\n          } finally {\n            f = 1;\n          }\n        }\n        return {\n          value: t,\n          done: y\n        };\n      };\n    }(r, o, i), !0), u;\n  }\n  var a = {};\n  function Generator() {}\n  function GeneratorFunction() {}\n  function GeneratorFunctionPrototype() {}\n  t = Object.getPrototypeOf;\n  var c = [][n] ? t(t([][n]())) : (regeneratorDefine(t = {}, n, function () {\n      return this;\n    }), t),\n    u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c);\n  function f(e) {\n    return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, regeneratorDefine(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e;\n  }\n  return GeneratorFunction.prototype = GeneratorFunctionPrototype, regeneratorDefine(u, \"constructor\", GeneratorFunctionPrototype), regeneratorDefine(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", regeneratorDefine(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), regeneratorDefine(u), regeneratorDefine(u, o, \"Generator\"), regeneratorDefine(u, n, function () {\n    return this;\n  }), regeneratorDefine(u, \"toString\", function () {\n    return \"[object Generator]\";\n  }), (_regenerator = function _regenerator() {\n    return {\n      w: i,\n      m: f\n    };\n  })();\n}\nexport { _regenerator as default };","import OverloadYield from \"./OverloadYield.js\";\nimport regeneratorDefine from \"./regeneratorDefine.js\";\nfunction AsyncIterator(t, e) {\n  function n(r, o, i, f) {\n    try {\n      var c = t[r](o),\n        u = c.value;\n      return u instanceof OverloadYield ? e.resolve(u.v).then(function (t) {\n        n(\"next\", t, i, f);\n      }, function (t) {\n        n(\"throw\", t, i, f);\n      }) : e.resolve(u).then(function (t) {\n        c.value = t, i(c);\n      }, function (t) {\n        return n(\"throw\", t, i, f);\n      });\n    } catch (t) {\n      f(t);\n    }\n  }\n  var r;\n  this.next || (regeneratorDefine(AsyncIterator.prototype), regeneratorDefine(AsyncIterator.prototype, \"function\" == typeof Symbol && Symbol.asyncIterator || \"@asyncIterator\", function () {\n    return this;\n  })), regeneratorDefine(this, \"_invoke\", function (t, o, i) {\n    function f() {\n      return new e(function (e, r) {\n        n(t, i, e, r);\n      });\n    }\n    return r = r ? r.then(f, f) : f();\n  }, !0);\n}\nexport { AsyncIterator as default };","import regenerator from \"./regenerator.js\";\nimport regeneratorAsyncIterator from \"./regeneratorAsyncIterator.js\";\nfunction _regeneratorAsyncGen(r, e, t, o, n) {\n  return new regeneratorAsyncIterator(regenerator().w(r, e, t, o), n || Promise);\n}\nexport { _regeneratorAsyncGen as default };","import regeneratorAsyncGen from \"./regeneratorAsyncGen.js\";\nfunction _regeneratorAsync(n, e, r, t, o) {\n  var a = regeneratorAsyncGen(n, e, r, t, o);\n  return a.next().then(function (n) {\n    return n.done ? n.value : a.next();\n  });\n}\nexport { _regeneratorAsync as default };","function _regeneratorKeys(e) {\n  var n = Object(e),\n    r = [];\n  for (var t in n) r.unshift(t);\n  return function e() {\n    for (; r.length;) if ((t = r.pop()) in n) return e.value = t, e.done = !1, e;\n    return e.done = !0, e;\n  };\n}\nexport { _regeneratorKeys as default };","import _typeof from \"./typeof.js\";\nfunction _regeneratorValues(e) {\n  if (null != e) {\n    var t = e[\"function\" == typeof Symbol && Symbol.iterator || \"@@iterator\"],\n      r = 0;\n    if (t) return t.call(e);\n    if (\"function\" == typeof e.next) return e;\n    if (!isNaN(e.length)) return {\n      next: function next() {\n        return e && r >= e.length && (e = void 0), {\n          value: e && e[r++],\n          done: !e\n        };\n      }\n    };\n  }\n  throw new TypeError(_typeof(e) + \" is not iterable\");\n}\nexport { _regeneratorValues as default };","import OverloadYield from \"./OverloadYield.js\";\nimport regenerator from \"./regenerator.js\";\nimport regeneratorAsync from \"./regeneratorAsync.js\";\nimport regeneratorAsyncGen from \"./regeneratorAsyncGen.js\";\nimport regeneratorAsyncIterator from \"./regeneratorAsyncIterator.js\";\nimport regeneratorKeys from \"./regeneratorKeys.js\";\nimport regeneratorValues from \"./regeneratorValues.js\";\nfunction _regeneratorRuntime() {\n  \"use strict\";\n\n  var r = regenerator(),\n    e = r.m(_regeneratorRuntime),\n    t = (Object.getPrototypeOf ? Object.getPrototypeOf(e) : e.__proto__).constructor;\n  function n(r) {\n    var e = \"function\" == typeof r && r.constructor;\n    return !!e && (e === t || \"GeneratorFunction\" === (e.displayName || e.name));\n  }\n  var o = {\n    \"throw\": 1,\n    \"return\": 2,\n    \"break\": 3,\n    \"continue\": 3\n  };\n  function a(r) {\n    var e, t;\n    return function (n) {\n      e || (e = {\n        stop: function stop() {\n          return t(n.a, 2);\n        },\n        \"catch\": function _catch() {\n          return n.v;\n        },\n        abrupt: function abrupt(r, e) {\n          return t(n.a, o[r], e);\n        },\n        delegateYield: function delegateYield(r, o, a) {\n          return e.resultName = o, t(n.d, regeneratorValues(r), a);\n        },\n        finish: function finish(r) {\n          return t(n.f, r);\n        }\n      }, t = function t(r, _t, o) {\n        n.p = e.prev, n.n = e.next;\n        try {\n          return r(_t, o);\n        } finally {\n          e.next = n.n;\n        }\n      }), e.resultName && (e[e.resultName] = n.v, e.resultName = void 0), e.sent = n.v, e.next = n.n;\n      try {\n        return r.call(this, e);\n      } finally {\n        n.p = e.prev, n.n = e.next;\n      }\n    };\n  }\n  return (_regeneratorRuntime = function _regeneratorRuntime() {\n    return {\n      wrap: function wrap(e, t, n, o) {\n        return r.w(a(e), t, n, o && o.reverse());\n      },\n      isGeneratorFunction: n,\n      mark: r.m,\n      awrap: function awrap(r, e) {\n        return new OverloadYield(r, e);\n      },\n      AsyncIterator: regeneratorAsyncIterator,\n      async: function async(r, e, t, o, u) {\n        return (n(e) ? regeneratorAsyncGen : regeneratorAsync)(a(r), e, t, o, u);\n      },\n      keys: regeneratorKeys,\n      values: regeneratorValues\n    };\n  })();\n}\nexport { _regeneratorRuntime as default };","function asyncGeneratorStep(n, t, e, r, o, a, c) {\n  try {\n    var i = n[a](c),\n      u = i.value;\n  } catch (n) {\n    return void e(n);\n  }\n  i.done ? t(u) : Promise.resolve(u).then(r, o);\n}\nfunction _asyncToGenerator(n) {\n  return function () {\n    var t = this,\n      e = arguments;\n    return new Promise(function (r, o) {\n      var a = n.apply(t, e);\n      function _next(n) {\n        asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n);\n      }\n      function _throw(n) {\n        asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n);\n      }\n      _next(void 0);\n    });\n  };\n}\nexport { _asyncToGenerator as default };","import _regeneratorRuntime from \"@babel/runtime/helpers/esm/regeneratorRuntime\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/esm/asyncToGenerator\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as ReactDOM from 'react-dom';\n// Let compiler not to search module usage\nvar fullClone = _objectSpread({}, ReactDOM);\nvar version = fullClone.version,\n  reactRender = fullClone.render,\n  unmountComponentAtNode = fullClone.unmountComponentAtNode;\nvar createRoot;\ntry {\n  var mainVersion = Number((version || '').split('.')[0]);\n  if (mainVersion >= 18) {\n    createRoot = fullClone.createRoot;\n  }\n} catch (e) {\n  // Do nothing;\n}\nfunction toggleWarning(skip) {\n  var __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = fullClone.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n  if (__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED && _typeof(__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED) === 'object') {\n    __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.usingClientEntryPoint = skip;\n  }\n}\nvar MARK = '__rc_react_root__';\n\n// ========================== Render ==========================\n\nfunction modernRender(node, container) {\n  toggleWarning(true);\n  var root = container[MARK] || createRoot(container);\n  toggleWarning(false);\n  root.render(node);\n  container[MARK] = root;\n}\nfunction legacyRender(node, container) {\n  reactRender === null || reactRender === void 0 || reactRender(node, container);\n}\n\n/** @private Test usage. Not work in prod */\nexport function _r(node, container) {\n  if (process.env.NODE_ENV !== 'production') {\n    return legacyRender(node, container);\n  }\n}\nexport function render(node, container) {\n  if (createRoot) {\n    modernRender(node, container);\n    return;\n  }\n  legacyRender(node, container);\n}\n\n// ========================= Unmount ==========================\nfunction modernUnmount(_x) {\n  return _modernUnmount.apply(this, arguments);\n}\nfunction _modernUnmount() {\n  _modernUnmount = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(container) {\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          return _context.abrupt(\"return\", Promise.resolve().then(function () {\n            var _container$MARK;\n            (_container$MARK = container[MARK]) === null || _container$MARK === void 0 || _container$MARK.unmount();\n            delete container[MARK];\n          }));\n        case 1:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee);\n  }));\n  return _modernUnmount.apply(this, arguments);\n}\nfunction legacyUnmount(container) {\n  unmountComponentAtNode(container);\n}\n\n/** @private Test usage. Not work in prod */\nexport function _u(container) {\n  if (process.env.NODE_ENV !== 'production') {\n    return legacyUnmount(container);\n  }\n}\nexport function unmount(_x2) {\n  return _unmount.apply(this, arguments);\n}\nfunction _unmount() {\n  _unmount = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(container) {\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          if (!(createRoot !== undefined)) {\n            _context2.next = 2;\n            break;\n          }\n          return _context2.abrupt(\"return\", modernUnmount(container));\n        case 2:\n          legacyUnmount(container);\n        case 3:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2);\n  }));\n  return _unmount.apply(this, arguments);\n}","\"use client\";\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { render, unmount } from \"rc-util/es/React/render\";\nimport warning from '../_util/warning';\nconst defaultReactRender = (node, container) => {\n  // TODO: Remove in v6\n  // Warning for React 19\n  if (process.env.NODE_ENV !== 'production') {\n    const majorVersion = parseInt(React.version.split('.')[0], 10);\n    const fullKeys = Object.keys(ReactDOM);\n    process.env.NODE_ENV !== \"production\" ? warning(majorVersion < 19 || fullKeys.includes('createRoot'), 'compatible', 'antd v5 support React is 16 ~ 18. see https://u.ant.design/v5-for-19 for compatible.') : void 0;\n  }\n  render(node, container);\n  return () => {\n    return unmount(container);\n  };\n};\nlet unstableRender = defaultReactRender;\n/**\n * @deprecated Set React render function for compatible usage.\n * This is internal usage only compatible with React 19.\n * And will be removed in next major version.\n */\nexport function unstableSetRender(render) {\n  if (render) {\n    unstableRender = render;\n  }\n  return unstableRender;\n}","import { defaultPrefixCls } from '../config-provider';\n// ================== Collapse Motion ==================\nconst getCollapsedHeight = () => ({\n  height: 0,\n  opacity: 0\n});\nconst getRealHeight = node => {\n  const {\n    scrollHeight\n  } = node;\n  return {\n    height: scrollHeight,\n    opacity: 1\n  };\n};\nconst getCurrentHeight = node => ({\n  height: node ? node.offsetHeight : 0\n});\nconst skipOpacityTransition = (_, event) => (event === null || event === void 0 ? void 0 : event.deadline) === true || event.propertyName === 'height';\nconst initCollapseMotion = (rootCls = defaultPrefixCls) => ({\n  motionName: `${rootCls}-motion-collapse`,\n  onAppearStart: getCollapsedHeight,\n  onEnterStart: getCollapsedHeight,\n  onAppearActive: getRealHeight,\n  onEnterActive: getRealHeight,\n  onLeaveStart: getCurrentHeight,\n  onLeaveActive: getCollapsedHeight,\n  onAppearEnd: skipOpacityTransition,\n  onEnterEnd: skipOpacityTransition,\n  onLeaveEnd: skipOpacityTransition,\n  motionDeadline: 500\n});\nconst _SelectPlacements = ['bottomLeft', 'bottomRight', 'topLeft', 'topRight'];\nconst getTransitionName = (rootPrefixCls, motion, transitionName) => {\n  if (transitionName !== undefined) {\n    return transitionName;\n  }\n  return `${rootPrefixCls}-${motion}`;\n};\nexport { getTransitionName };\nexport default initCollapseMotion;","export default function omit(obj, fields) {\n  var clone = Object.assign({}, obj);\n  if (Array.isArray(fields)) {\n    fields.forEach(function (key) {\n      delete clone[key];\n    });\n  }\n  return clone;\n}","export default (function (element) {\n  if (!element) {\n    return false;\n  }\n  if (element instanceof Element) {\n    if (element.offsetParent) {\n      return true;\n    }\n    if (element.getBBox) {\n      var _getBBox = element.getBBox(),\n        width = _getBBox.width,\n        height = _getBBox.height;\n      if (width || height) {\n        return true;\n      }\n    }\n    if (element.getBoundingClientRect) {\n      var _element$getBoundingC = element.getBoundingClientRect(),\n        _width = _element$getBoundingC.width,\n        _height = _element$getBoundingC.height;\n      if (_width || _height) {\n        return true;\n      }\n    }\n  }\n  return false;\n});","import { genComponentStyleHook } from '../../theme/internal';\nconst genWaveStyle = token => {\n  const {\n    componentCls,\n    colorPrimary\n  } = token;\n  return {\n    [componentCls]: {\n      position: 'absolute',\n      background: 'transparent',\n      pointerEvents: 'none',\n      boxSizing: 'border-box',\n      color: `var(--wave-color, ${colorPrimary})`,\n      boxShadow: `0 0 0 0 currentcolor`,\n      opacity: 0.2,\n      // =================== Motion ===================\n      '&.wave-motion-appear': {\n        transition: [`box-shadow 0.4s ${token.motionEaseOutCirc}`, `opacity 2s ${token.motionEaseOutCirc}`].join(','),\n        '&-active': {\n          boxShadow: `0 0 0 6px currentcolor`,\n          opacity: 0\n        },\n        '&.wave-quick': {\n          transition: [`box-shadow ${token.motionDurationSlow} ${token.motionEaseInOut}`, `opacity ${token.motionDurationSlow} ${token.motionEaseInOut}`].join(',')\n        }\n      }\n    }\n  };\n};\nexport default genComponentStyleHook('Wave', token => [genWaveStyle(token)]);","import { defaultPrefixCls } from '../../config-provider';\nexport const TARGET_CLS = `${defaultPrefixCls}-wave-target`;","export function isValidWaveColor(color) {\n  return color && color !== '#fff' && color !== '#ffffff' && color !== 'rgb(255, 255, 255)' && color !== 'rgba(255, 255, 255, 1)' && !/rgba\\((?:\\d*, ){3}0\\)/.test(color) &&\n  // any transparent rgba color\n  color !== 'transparent';\n}\nexport function getTargetWaveColor(node) {\n  const {\n    borderTopColor,\n    borderColor,\n    backgroundColor\n  } = getComputedStyle(node);\n  if (isValidWaveColor(borderTopColor)) {\n    return borderTopColor;\n  }\n  if (isValidWaveColor(borderColor)) {\n    return borderColor;\n  }\n  if (isValidWaveColor(backgroundColor)) {\n    return backgroundColor;\n  }\n  return null;\n}","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport raf from \"rc-util/es/raf\";\nimport { composeRef } from \"rc-util/es/ref\";\nimport { unstableSetRender } from '../../config-provider/UnstableContext';\nimport { TARGET_CLS } from './interface';\nimport { getTargetWaveColor } from './util';\nfunction validateNum(value) {\n  return Number.isNaN(value) ? 0 : value;\n}\nconst WaveEffect = props => {\n  const {\n    className,\n    target,\n    component,\n    registerUnmount\n  } = props;\n  const divRef = React.useRef(null);\n  // ====================== Refs ======================\n  const unmountRef = React.useRef(null);\n  React.useEffect(() => {\n    unmountRef.current = registerUnmount();\n  }, []);\n  // ===================== Effect =====================\n  const [color, setWaveColor] = React.useState(null);\n  const [borderRadius, setBorderRadius] = React.useState([]);\n  const [left, setLeft] = React.useState(0);\n  const [top, setTop] = React.useState(0);\n  const [width, setWidth] = React.useState(0);\n  const [height, setHeight] = React.useState(0);\n  const [enabled, setEnabled] = React.useState(false);\n  const waveStyle = {\n    left,\n    top,\n    width,\n    height,\n    borderRadius: borderRadius.map(radius => `${radius}px`).join(' ')\n  };\n  if (color) {\n    waveStyle['--wave-color'] = color;\n  }\n  function syncPos() {\n    const nodeStyle = getComputedStyle(target);\n    // Get wave color from target\n    setWaveColor(getTargetWaveColor(target));\n    const isStatic = nodeStyle.position === 'static';\n    // Rect\n    const {\n      borderLeftWidth,\n      borderTopWidth\n    } = nodeStyle;\n    setLeft(isStatic ? target.offsetLeft : validateNum(-parseFloat(borderLeftWidth)));\n    setTop(isStatic ? target.offsetTop : validateNum(-parseFloat(borderTopWidth)));\n    setWidth(target.offsetWidth);\n    setHeight(target.offsetHeight);\n    // Get border radius\n    const {\n      borderTopLeftRadius,\n      borderTopRightRadius,\n      borderBottomLeftRadius,\n      borderBottomRightRadius\n    } = nodeStyle;\n    setBorderRadius([borderTopLeftRadius, borderTopRightRadius, borderBottomRightRadius, borderBottomLeftRadius].map(radius => validateNum(parseFloat(radius))));\n  }\n  React.useEffect(() => {\n    if (target) {\n      // We need delay to check position here\n      // since UI may change after click\n      const id = raf(() => {\n        syncPos();\n        setEnabled(true);\n      });\n      // Add resize observer to follow size\n      let resizeObserver;\n      if (typeof ResizeObserver !== 'undefined') {\n        resizeObserver = new ResizeObserver(syncPos);\n        resizeObserver.observe(target);\n      }\n      return () => {\n        raf.cancel(id);\n        resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.disconnect();\n      };\n    }\n  }, []);\n  if (!enabled) {\n    return null;\n  }\n  const isSmallComponent = (component === 'Checkbox' || component === 'Radio') && (target === null || target === void 0 ? void 0 : target.classList.contains(TARGET_CLS));\n  return /*#__PURE__*/React.createElement(CSSMotion, {\n    visible: true,\n    motionAppear: true,\n    motionName: \"wave-motion\",\n    motionDeadline: 5000,\n    onAppearEnd: (_, event) => {\n      var _a, _b;\n      if (event.deadline || event.propertyName === 'opacity') {\n        const holder = (_a = divRef.current) === null || _a === void 0 ? void 0 : _a.parentElement;\n        (_b = unmountRef.current) === null || _b === void 0 ? void 0 : _b.call(unmountRef).then(() => {\n          holder === null || holder === void 0 ? void 0 : holder.remove();\n        });\n      }\n      return false;\n    }\n  }, ({\n    className: motionClassName\n  }, ref) => (/*#__PURE__*/React.createElement(\"div\", {\n    ref: composeRef(divRef, ref),\n    className: classNames(className, motionClassName, {\n      'wave-quick': isSmallComponent\n    }),\n    style: waveStyle\n  })));\n};\nconst showWaveEffect = (target, info) => {\n  var _a;\n  const {\n    component\n  } = info;\n  // Skip for unchecked checkbox\n  if (component === 'Checkbox' && !((_a = target.querySelector('input')) === null || _a === void 0 ? void 0 : _a.checked)) {\n    return;\n  }\n  // Create holder\n  const holder = document.createElement('div');\n  holder.style.position = 'absolute';\n  holder.style.left = '0px';\n  holder.style.top = '0px';\n  target === null || target === void 0 ? void 0 : target.insertBefore(holder, target === null || target === void 0 ? void 0 : target.firstChild);\n  const reactRender = unstableSetRender();\n  let unmountCallback = null;\n  function registerUnmount() {\n    return unmountCallback;\n  }\n  unmountCallback = reactRender(/*#__PURE__*/React.createElement(WaveEffect, Object.assign({}, info, {\n    target: target,\n    registerUnmount: registerUnmount\n  })), holder);\n};\nexport default showWaveEffect;","import * as React from 'react';\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport raf from \"rc-util/es/raf\";\nimport { ConfigContext } from '../../config-provider';\nimport useToken from '../../theme/useToken';\nimport { TARGET_CLS } from './interface';\nimport showWaveEffect from './WaveEffect';\nconst useWave = (nodeRef, className, component) => {\n  const {\n    wave\n  } = React.useContext(ConfigContext);\n  const [, token, hashId] = useToken();\n  const showWave = useEvent(event => {\n    const node = nodeRef.current;\n    if ((wave === null || wave === void 0 ? void 0 : wave.disabled) || !node) {\n      return;\n    }\n    const targetNode = node.querySelector(`.${TARGET_CLS}`) || node;\n    const {\n      showEffect\n    } = wave || {};\n    // Customize wave effect\n    (showEffect || showWaveEffect)(targetNode, {\n      className,\n      token,\n      component,\n      event,\n      hashId\n    });\n  });\n  const rafId = React.useRef(null);\n  // Merge trigger event into one for each frame\n  const showDebounceWave = event => {\n    raf.cancel(rafId.current);\n    rafId.current = raf(() => {\n      showWave(event);\n    });\n  };\n  return showDebounceWave;\n};\nexport default useWave;","import React, { useContext, useRef } from 'react';\nimport classNames from 'classnames';\nimport isVisible from \"rc-util/es/Dom/isVisible\";\nimport { composeRef, getNodeRef, supportRef } from \"rc-util/es/ref\";\nimport { ConfigContext } from '../../config-provider';\nimport { cloneElement } from '../reactNode';\nimport useStyle from './style';\nimport useWave from './useWave';\nconst Wave = props => {\n  const {\n    children,\n    disabled,\n    component\n  } = props;\n  const {\n    getPrefixCls\n  } = useContext(ConfigContext);\n  const containerRef = useRef(null);\n  // ============================== Style ===============================\n  const prefixCls = getPrefixCls('wave');\n  const [, hashId] = useStyle(prefixCls);\n  // =============================== Wave ===============================\n  const showWave = useWave(containerRef, classNames(prefixCls, hashId), component);\n  // ============================== Effect ==============================\n  React.useEffect(() => {\n    const node = containerRef.current;\n    if (!node || node.nodeType !== 1 || disabled) {\n      return;\n    }\n    // Click handler\n    const onClick = e => {\n      // Fix radio button click twice\n      if (!isVisible(e.target) ||\n      // No need wave\n      !node.getAttribute || node.getAttribute('disabled') || node.disabled || node.className.includes('disabled') || node.className.includes('-leave')) {\n        return;\n      }\n      showWave(e);\n    };\n    // Bind events\n    node.addEventListener('click', onClick, true);\n    return () => {\n      node.removeEventListener('click', onClick, true);\n    };\n  }, [disabled]);\n  // ============================== Render ==============================\n  if (! /*#__PURE__*/React.isValidElement(children)) {\n    return children !== null && children !== void 0 ? children : null;\n  }\n  const ref = supportRef(children) ? composeRef(getNodeRef(children), containerRef) : containerRef;\n  return cloneElement(children, {\n    ref\n  });\n};\nif (process.env.NODE_ENV !== 'production') {\n  Wave.displayName = 'Wave';\n}\nexport default Wave;","import React from 'react';\nimport SizeContext from '../SizeContext';\nconst useSize = customSize => {\n  const size = React.useContext(SizeContext);\n  const mergedSize = React.useMemo(() => {\n    if (!customSize) {\n      return size;\n    }\n    if (typeof customSize === 'string') {\n      return customSize !== null && customSize !== void 0 ? customSize : size;\n    }\n    if (typeof customSize === 'function') {\n      return customSize(size);\n    }\n    return size;\n  }, [customSize, size]);\n  return mergedSize;\n};\nexport default useSize;","const genSpaceCompactStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    [componentCls]: {\n      '&-block': {\n        display: 'flex',\n        width: '100%'\n      },\n      '&-vertical': {\n        flexDirection: 'column'\n      }\n    }\n  };\n};\n// ============================== Export ==============================\nexport default genSpaceCompactStyle;","import { genStyleHooks, mergeToken } from '../../theme/internal';\nimport genSpaceCompactStyle from './compact';\nconst genSpaceStyle = token => {\n  const {\n    componentCls,\n    antCls\n  } = token;\n  return {\n    [componentCls]: {\n      display: 'inline-flex',\n      '&-rtl': {\n        direction: 'rtl'\n      },\n      '&-vertical': {\n        flexDirection: 'column'\n      },\n      '&-align': {\n        flexDirection: 'column',\n        '&-center': {\n          alignItems: 'center'\n        },\n        '&-start': {\n          alignItems: 'flex-start'\n        },\n        '&-end': {\n          alignItems: 'flex-end'\n        },\n        '&-baseline': {\n          alignItems: 'baseline'\n        }\n      },\n      [`${componentCls}-item:empty`]: {\n        display: 'none'\n      },\n      // https://github.com/ant-design/ant-design/issues/47875\n      [`${componentCls}-item > ${antCls}-badge-not-a-wrapper:only-child`]: {\n        display: 'block'\n      }\n    }\n  };\n};\nconst genSpaceGapStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    [componentCls]: {\n      '&-gap-row-small': {\n        rowGap: token.spaceGapSmallSize\n      },\n      '&-gap-row-middle': {\n        rowGap: token.spaceGapMiddleSize\n      },\n      '&-gap-row-large': {\n        rowGap: token.spaceGapLargeSize\n      },\n      '&-gap-col-small': {\n        columnGap: token.spaceGapSmallSize\n      },\n      '&-gap-col-middle': {\n        columnGap: token.spaceGapMiddleSize\n      },\n      '&-gap-col-large': {\n        columnGap: token.spaceGapLargeSize\n      }\n    }\n  };\n};\n// ============================== Export ==============================\nexport const prepareComponentToken = () => ({});\nexport default genStyleHooks('Space', token => {\n  const spaceToken = mergeToken(token, {\n    spaceGapSmallSize: token.paddingXS,\n    spaceGapMiddleSize: token.padding,\n    spaceGapLargeSize: token.paddingLG\n  });\n  return [genSpaceStyle(spaceToken), genSpaceGapStyle(spaceToken), genSpaceCompactStyle(spaceToken)];\n}, () => ({}), {\n  // Space component don't apply extra font style\n  // https://github.com/ant-design/ant-design/issues/40315\n  resetStyle: false\n});","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport { ConfigContext } from '../config-provider';\nimport useSize from '../config-provider/hooks/useSize';\nimport useStyle from './style';\nexport const SpaceCompactItemContext = /*#__PURE__*/React.createContext(null);\nexport const useCompactItemContext = (prefixCls, direction) => {\n  const compactItemContext = React.useContext(SpaceCompactItemContext);\n  const compactItemClassnames = React.useMemo(() => {\n    if (!compactItemContext) {\n      return '';\n    }\n    const {\n      compactDirection,\n      isFirstItem,\n      isLastItem\n    } = compactItemContext;\n    const separator = compactDirection === 'vertical' ? '-vertical-' : '-';\n    return classNames(`${prefixCls}-compact${separator}item`, {\n      [`${prefixCls}-compact${separator}first-item`]: isFirstItem,\n      [`${prefixCls}-compact${separator}last-item`]: isLastItem,\n      [`${prefixCls}-compact${separator}item-rtl`]: direction === 'rtl'\n    });\n  }, [prefixCls, direction, compactItemContext]);\n  return {\n    compactSize: compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.compactSize,\n    compactDirection: compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.compactDirection,\n    compactItemClassnames\n  };\n};\nexport const NoCompactStyle = props => {\n  const {\n    children\n  } = props;\n  return /*#__PURE__*/React.createElement(SpaceCompactItemContext.Provider, {\n    value: null\n  }, children);\n};\nconst CompactItem = props => {\n  const {\n      children\n    } = props,\n    others = __rest(props, [\"children\"]);\n  return /*#__PURE__*/React.createElement(SpaceCompactItemContext.Provider, {\n    value: React.useMemo(() => others, [others])\n  }, children);\n};\nconst Compact = props => {\n  const {\n    getPrefixCls,\n    direction: directionConfig\n  } = React.useContext(ConfigContext);\n  const {\n      size,\n      direction,\n      block,\n      prefixCls: customizePrefixCls,\n      className,\n      rootClassName,\n      children\n    } = props,\n    restProps = __rest(props, [\"size\", \"direction\", \"block\", \"prefixCls\", \"className\", \"rootClassName\", \"children\"]);\n  const mergedSize = useSize(ctx => size !== null && size !== void 0 ? size : ctx);\n  const prefixCls = getPrefixCls('space-compact', customizePrefixCls);\n  const [wrapCSSVar, hashId] = useStyle(prefixCls);\n  const clx = classNames(prefixCls, hashId, {\n    [`${prefixCls}-rtl`]: directionConfig === 'rtl',\n    [`${prefixCls}-block`]: block,\n    [`${prefixCls}-vertical`]: direction === 'vertical'\n  }, className, rootClassName);\n  const compactItemContext = React.useContext(SpaceCompactItemContext);\n  const childNodes = toArray(children);\n  const nodes = React.useMemo(() => childNodes.map((child, i) => {\n    const key = (child === null || child === void 0 ? void 0 : child.key) || `${prefixCls}-item-${i}`;\n    return /*#__PURE__*/React.createElement(CompactItem, {\n      key: key,\n      compactSize: mergedSize,\n      compactDirection: direction,\n      isFirstItem: i === 0 && (!compactItemContext || (compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.isFirstItem)),\n      isLastItem: i === childNodes.length - 1 && (!compactItemContext || (compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.isLastItem))\n    }, child);\n  }), [size, childNodes, compactItemContext]);\n  // =========================== Render ===========================\n  if (childNodes.length === 0) {\n    return null;\n  }\n  return wrapCSSVar(/*#__PURE__*/React.createElement(\"div\", Object.assign({\n    className: clx\n  }, restProps), nodes));\n};\nexport default Compact;","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { devUseWarning } from '../_util/warning';\nimport { ConfigContext } from '../config-provider';\nimport { useToken } from '../theme/internal';\nexport const GroupSizeContext = /*#__PURE__*/React.createContext(undefined);\nconst ButtonGroup = props => {\n  const {\n    getPrefixCls,\n    direction\n  } = React.useContext(ConfigContext);\n  const {\n      prefixCls: customizePrefixCls,\n      size,\n      className\n    } = props,\n    others = __rest(props, [\"prefixCls\", \"size\", \"className\"]);\n  const prefixCls = getPrefixCls('btn-group', customizePrefixCls);\n  const [,, hashId] = useToken();\n  const sizeCls = React.useMemo(() => {\n    switch (size) {\n      case 'large':\n        return 'lg';\n      case 'small':\n        return 'sm';\n      default:\n        return '';\n    }\n  }, [size]);\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('Button.Group');\n    warning.deprecated(false, 'Button.Group', 'Space.Compact');\n    process.env.NODE_ENV !== \"production\" ? warning(!size || ['large', 'small', 'middle'].includes(size), 'usage', 'Invalid prop `size`.') : void 0;\n  }\n  const classes = classNames(prefixCls, {\n    [`${prefixCls}-${sizeCls}`]: sizeCls,\n    [`${prefixCls}-rtl`]: direction === 'rtl'\n  }, className, hashId);\n  return /*#__PURE__*/React.createElement(GroupSizeContext.Provider, {\n    value: size\n  }, /*#__PURE__*/React.createElement(\"div\", Object.assign({}, others, {\n    className: classes\n  })));\n};\nexport default ButtonGroup;","\"use client\";\n\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport React from 'react';\nimport { cloneElement, isFragment } from '../_util/reactNode';\nimport { PresetColors } from '../theme/interface';\nconst rxTwoCNChar = /^[\\u4E00-\\u9FA5]{2}$/;\nexport const isTwoCNChar = rxTwoCNChar.test.bind(rxTwoCNChar);\nexport function convertLegacyProps(type) {\n  if (type === 'danger') {\n    return {\n      danger: true\n    };\n  }\n  return {\n    type\n  };\n}\nexport function isString(str) {\n  return typeof str === 'string';\n}\nexport function isUnBorderedButtonVariant(type) {\n  return type === 'text' || type === 'link';\n}\nfunction splitCNCharsBySpace(child, needInserted) {\n  if (child === null || child === undefined) {\n    return;\n  }\n  const SPACE = needInserted ? ' ' : '';\n  if (typeof child !== 'string' && typeof child !== 'number' && isString(child.type) && isTwoCNChar(child.props.children)) {\n    return cloneElement(child, {\n      children: child.props.children.split('').join(SPACE)\n    });\n  }\n  if (isString(child)) {\n    return isTwoCNChar(child) ? /*#__PURE__*/React.createElement(\"span\", null, child.split('').join(SPACE)) : /*#__PURE__*/React.createElement(\"span\", null, child);\n  }\n  if (isFragment(child)) {\n    return /*#__PURE__*/React.createElement(\"span\", null, child);\n  }\n  return child;\n}\nexport function spaceChildren(children, needInserted) {\n  let isPrevChildPure = false;\n  const childList = [];\n  React.Children.forEach(children, child => {\n    const type = typeof child;\n    const isCurrentChildPure = type === 'string' || type === 'number';\n    if (isPrevChildPure && isCurrentChildPure) {\n      const lastIndex = childList.length - 1;\n      const lastChild = childList[lastIndex];\n      childList[lastIndex] = `${lastChild}${child}`;\n    } else {\n      childList.push(child);\n    }\n    isPrevChildPure = isCurrentChildPure;\n  });\n  return React.Children.map(childList, child => splitCNCharsBySpace(child, needInserted));\n}\nconst _ButtonTypes = ['default', 'primary', 'dashed', 'link', 'text'];\nconst _ButtonShapes = ['default', 'circle', 'round'];\nconst _ButtonHTMLTypes = ['submit', 'button', 'reset'];\nexport const _ButtonVariantTypes = ['outlined', 'dashed', 'solid', 'filled', 'text', 'link'];\nexport const _ButtonColorTypes = ['default', 'primary', 'danger'].concat(_toConsumableArray(PresetColors));","\"use client\";\n\nimport React, { forwardRef } from 'react';\nimport classNames from 'classnames';\nconst IconWrapper = /*#__PURE__*/forwardRef((props, ref) => {\n  const {\n    className,\n    style,\n    children,\n    prefixCls\n  } = props;\n  const iconWrapperCls = classNames(`${prefixCls}-icon`, className);\n  return /*#__PURE__*/React.createElement(\"span\", {\n    ref: ref,\n    className: iconWrapperCls,\n    style: style\n  }, children);\n});\nexport default IconWrapper;","\"use client\";\n\nimport React, { forwardRef } from 'react';\nimport LoadingOutlined from \"@ant-design/icons/es/icons/LoadingOutlined\";\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport IconWrapper from './IconWrapper';\nconst InnerLoadingIcon = /*#__PURE__*/forwardRef((props, ref) => {\n  const {\n    prefixCls,\n    className,\n    style,\n    iconClassName\n  } = props;\n  const mergedIconCls = classNames(`${prefixCls}-loading-icon`, className);\n  return /*#__PURE__*/React.createElement(IconWrapper, {\n    prefixCls: prefixCls,\n    className: mergedIconCls,\n    style: style,\n    ref: ref\n  }, /*#__PURE__*/React.createElement(LoadingOutlined, {\n    className: iconClassName\n  }));\n});\nconst getCollapsedWidth = () => ({\n  width: 0,\n  opacity: 0,\n  transform: 'scale(0)'\n});\nconst getRealWidth = node => ({\n  width: node.scrollWidth,\n  opacity: 1,\n  transform: 'scale(1)'\n});\nconst DefaultLoadingIcon = props => {\n  const {\n    prefixCls,\n    loading,\n    existIcon,\n    className,\n    style,\n    mount\n  } = props;\n  const visible = !!loading;\n  if (existIcon) {\n    return /*#__PURE__*/React.createElement(InnerLoadingIcon, {\n      prefixCls: prefixCls,\n      className: className,\n      style: style\n    });\n  }\n  return /*#__PURE__*/React.createElement(CSSMotion, {\n    visible: visible,\n    // Used for minus flex gap style only\n    motionName: `${prefixCls}-loading-icon-motion`,\n    motionAppear: !mount,\n    motionEnter: !mount,\n    motionLeave: !mount,\n    removeOnLeave: true,\n    onAppearStart: getCollapsedWidth,\n    onAppearActive: getRealWidth,\n    onEnterStart: getCollapsedWidth,\n    onEnterActive: getRealWidth,\n    onLeaveStart: getRealWidth,\n    onLeaveActive: getCollapsedWidth\n  }, ({\n    className: motionCls,\n    style: motionStyle\n  }, ref) => {\n    const mergedStyle = Object.assign(Object.assign({}, style), motionStyle);\n    return /*#__PURE__*/React.createElement(InnerLoadingIcon, {\n      prefixCls: prefixCls,\n      className: classNames(className, motionCls),\n      style: mergedStyle,\n      ref: ref\n    });\n  });\n};\nexport default DefaultLoadingIcon;","const genButtonBorderStyle = (buttonTypeCls, borderColor) => ({\n  // Border\n  [`> span, > ${buttonTypeCls}`]: {\n    '&:not(:last-child)': {\n      [`&, & > ${buttonTypeCls}`]: {\n        '&:not(:disabled)': {\n          borderInlineEndColor: borderColor\n        }\n      }\n    },\n    '&:not(:first-child)': {\n      [`&, & > ${buttonTypeCls}`]: {\n        '&:not(:disabled)': {\n          borderInlineStartColor: borderColor\n        }\n      }\n    }\n  }\n});\nconst genGroupStyle = token => {\n  const {\n    componentCls,\n    fontSize,\n    lineWidth,\n    groupBorderColor,\n    colorErrorHover\n  } = token;\n  return {\n    [`${componentCls}-group`]: [{\n      position: 'relative',\n      display: 'inline-flex',\n      // Border\n      [`> span, > ${componentCls}`]: {\n        '&:not(:last-child)': {\n          [`&, & > ${componentCls}`]: {\n            borderStartEndRadius: 0,\n            borderEndEndRadius: 0\n          }\n        },\n        '&:not(:first-child)': {\n          marginInlineStart: token.calc(lineWidth).mul(-1).equal(),\n          [`&, & > ${componentCls}`]: {\n            borderStartStartRadius: 0,\n            borderEndStartRadius: 0\n          }\n        }\n      },\n      [componentCls]: {\n        position: 'relative',\n        zIndex: 1,\n        '&:hover, &:focus, &:active': {\n          zIndex: 2\n        },\n        '&[disabled]': {\n          zIndex: 0\n        }\n      },\n      [`${componentCls}-icon-only`]: {\n        fontSize\n      }\n    },\n    // Border Color\n    genButtonBorderStyle(`${componentCls}-primary`, groupBorderColor), genButtonBorderStyle(`${componentCls}-danger`, colorErrorHover)]\n  };\n};\nexport default genGroupStyle;","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar _excluded = [\"b\"],\n  _excluded2 = [\"v\"];\nimport { FastColor } from '@ant-design/fast-color';\nexport var getRoundNumber = function getRoundNumber(value) {\n  return Math.round(Number(value || 0));\n};\nvar convertHsb2Hsv = function convertHsb2Hsv(color) {\n  if (color instanceof FastColor) {\n    return color;\n  }\n  if (color && _typeof(color) === 'object' && 'h' in color && 'b' in color) {\n    var _ref = color,\n      b = _ref.b,\n      resets = _objectWithoutProperties(_ref, _excluded);\n    return _objectSpread(_objectSpread({}, resets), {}, {\n      v: b\n    });\n  }\n  if (typeof color === 'string' && /hsb/.test(color)) {\n    return color.replace(/hsb/, 'hsv');\n  }\n  return color;\n};\nexport var Color = /*#__PURE__*/function (_FastColor) {\n  _inherits(Color, _FastColor);\n  var _super = _createSuper(Color);\n  function Color(color) {\n    _classCallCheck(this, Color);\n    return _super.call(this, convertHsb2Hsv(color));\n  }\n  _createClass(Color, [{\n    key: \"toHsbString\",\n    value: function toHsbString() {\n      var hsb = this.toHsb();\n      var saturation = getRoundNumber(hsb.s * 100);\n      var lightness = getRoundNumber(hsb.b * 100);\n      var hue = getRoundNumber(hsb.h);\n      var alpha = hsb.a;\n      var hsbString = \"hsb(\".concat(hue, \", \").concat(saturation, \"%, \").concat(lightness, \"%)\");\n      var hsbaString = \"hsba(\".concat(hue, \", \").concat(saturation, \"%, \").concat(lightness, \"%, \").concat(alpha.toFixed(alpha === 0 ? 0 : 2), \")\");\n      return alpha === 1 ? hsbString : hsbaString;\n    }\n  }, {\n    key: \"toHsb\",\n    value: function toHsb() {\n      var _this$toHsv = this.toHsv(),\n        v = _this$toHsv.v,\n        resets = _objectWithoutProperties(_this$toHsv, _excluded2);\n      return _objectSpread(_objectSpread({}, resets), {}, {\n        b: v,\n        a: this.a\n      });\n    }\n  }]);\n  return Color;\n}(FastColor);","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport { Color } from \"./color\";\nexport var ColorPickerPrefixCls = 'rc-color-picker';\nexport var generateColor = function generateColor(color) {\n  if (color instanceof Color) {\n    return color;\n  }\n  return new Color(color);\n};\nexport var defaultColor = generateColor('#1677ff');\nexport var calculateColor = function calculateColor(props) {\n  var offset = props.offset,\n    targetRef = props.targetRef,\n    containerRef = props.containerRef,\n    color = props.color,\n    type = props.type;\n  var _containerRef$current = containerRef.current.getBoundingClientRect(),\n    width = _containerRef$current.width,\n    height = _containerRef$current.height;\n  var _targetRef$current$ge = targetRef.current.getBoundingClientRect(),\n    targetWidth = _targetRef$current$ge.width,\n    targetHeight = _targetRef$current$ge.height;\n  var centerOffsetX = targetWidth / 2;\n  var centerOffsetY = targetHeight / 2;\n  var saturation = (offset.x + centerOffsetX) / width;\n  var bright = 1 - (offset.y + centerOffsetY) / height;\n  var hsb = color.toHsb();\n  var alphaOffset = saturation;\n  var hueOffset = (offset.x + centerOffsetX) / width * 360;\n  if (type) {\n    switch (type) {\n      case 'hue':\n        return generateColor(_objectSpread(_objectSpread({}, hsb), {}, {\n          h: hueOffset <= 0 ? 0 : hueOffset\n        }));\n      case 'alpha':\n        return generateColor(_objectSpread(_objectSpread({}, hsb), {}, {\n          a: alphaOffset <= 0 ? 0 : alphaOffset\n        }));\n    }\n  }\n  return generateColor({\n    h: hsb.h,\n    s: saturation <= 0 ? 0 : saturation,\n    b: bright >= 1 ? 1 : bright,\n    a: hsb.a\n  });\n};\nexport var calcOffset = function calcOffset(color, type) {\n  var hsb = color.toHsb();\n  switch (type) {\n    case 'hue':\n      return {\n        x: hsb.h / 360 * 100,\n        y: 50\n      };\n    case 'alpha':\n      return {\n        x: color.a * 100,\n        y: 50\n      };\n\n    // Picker panel\n    default:\n      return {\n        x: hsb.s * 100,\n        y: (1 - hsb.b) * 100\n      };\n  }\n};","import classNames from 'classnames';\nimport React from 'react';\nvar ColorBlock = function ColorBlock(_ref) {\n  var color = _ref.color,\n    prefixCls = _ref.prefixCls,\n    className = _ref.className,\n    style = _ref.style,\n    onClick = _ref.onClick;\n  var colorBlockCls = \"\".concat(prefixCls, \"-color-block\");\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(colorBlockCls, className),\n    style: style,\n    onClick: onClick\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    className: \"\".concat(colorBlockCls, \"-inner\"),\n    style: {\n      background: color\n    }\n  }));\n};\nexport default ColorBlock;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useEffect, useRef, useState } from 'react';\nfunction getPosition(e) {\n  var obj = 'touches' in e ? e.touches[0] : e;\n  var scrollXOffset = document.documentElement.scrollLeft || document.body.scrollLeft || window.pageXOffset;\n  var scrollYOffset = document.documentElement.scrollTop || document.body.scrollTop || window.pageYOffset;\n  return {\n    pageX: obj.pageX - scrollXOffset,\n    pageY: obj.pageY - scrollYOffset\n  };\n}\nfunction useColorDrag(props) {\n  var targetRef = props.targetRef,\n    containerRef = props.containerRef,\n    direction = props.direction,\n    onDragChange = props.onDragChange,\n    onDragChangeComplete = props.onDragChangeComplete,\n    calculate = props.calculate,\n    color = props.color,\n    disabledDrag = props.disabledDrag;\n  var _useState = useState({\n      x: 0,\n      y: 0\n    }),\n    _useState2 = _slicedToArray(_useState, 2),\n    offsetValue = _useState2[0],\n    setOffsetValue = _useState2[1];\n  var mouseMoveRef = useRef(null);\n  var mouseUpRef = useRef(null);\n\n  // Always get position from `color`\n  useEffect(function () {\n    setOffsetValue(calculate());\n  }, [color]);\n  useEffect(function () {\n    return function () {\n      document.removeEventListener('mousemove', mouseMoveRef.current);\n      document.removeEventListener('mouseup', mouseUpRef.current);\n      document.removeEventListener('touchmove', mouseMoveRef.current);\n      document.removeEventListener('touchend', mouseUpRef.current);\n      mouseMoveRef.current = null;\n      mouseUpRef.current = null;\n    };\n  }, []);\n  var updateOffset = function updateOffset(e) {\n    var _getPosition = getPosition(e),\n      pageX = _getPosition.pageX,\n      pageY = _getPosition.pageY;\n    var _containerRef$current = containerRef.current.getBoundingClientRect(),\n      rectX = _containerRef$current.x,\n      rectY = _containerRef$current.y,\n      width = _containerRef$current.width,\n      height = _containerRef$current.height;\n    var _targetRef$current$ge = targetRef.current.getBoundingClientRect(),\n      targetWidth = _targetRef$current$ge.width,\n      targetHeight = _targetRef$current$ge.height;\n    var centerOffsetX = targetWidth / 2;\n    var centerOffsetY = targetHeight / 2;\n    var offsetX = Math.max(0, Math.min(pageX - rectX, width)) - centerOffsetX;\n    var offsetY = Math.max(0, Math.min(pageY - rectY, height)) - centerOffsetY;\n    var calcOffset = {\n      x: offsetX,\n      y: direction === 'x' ? offsetValue.y : offsetY\n    };\n\n    // Exclusion of boundary cases\n    if (targetWidth === 0 && targetHeight === 0 || targetWidth !== targetHeight) {\n      return false;\n    }\n    onDragChange === null || onDragChange === void 0 || onDragChange(calcOffset);\n  };\n  var onDragMove = function onDragMove(e) {\n    e.preventDefault();\n    updateOffset(e);\n  };\n  var onDragStop = function onDragStop(e) {\n    e.preventDefault();\n    document.removeEventListener('mousemove', mouseMoveRef.current);\n    document.removeEventListener('mouseup', mouseUpRef.current);\n    document.removeEventListener('touchmove', mouseMoveRef.current);\n    document.removeEventListener('touchend', mouseUpRef.current);\n    mouseMoveRef.current = null;\n    mouseUpRef.current = null;\n    onDragChangeComplete === null || onDragChangeComplete === void 0 || onDragChangeComplete();\n  };\n  var onDragStart = function onDragStart(e) {\n    // https://github.com/ant-design/ant-design/issues/43529\n    document.removeEventListener('mousemove', mouseMoveRef.current);\n    document.removeEventListener('mouseup', mouseUpRef.current);\n    if (disabledDrag) {\n      return;\n    }\n    updateOffset(e);\n    document.addEventListener('mousemove', onDragMove);\n    document.addEventListener('mouseup', onDragStop);\n    document.addEventListener('touchmove', onDragMove);\n    document.addEventListener('touchend', onDragStop);\n    mouseMoveRef.current = onDragMove;\n    mouseUpRef.current = onDragStop;\n  };\n  return [offsetValue, onDragStart];\n}\nexport default useColorDrag;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport classNames from 'classnames';\nimport React from 'react';\nvar Handler = function Handler(_ref) {\n  var _ref$size = _ref.size,\n    size = _ref$size === void 0 ? 'default' : _ref$size,\n    color = _ref.color,\n    prefixCls = _ref.prefixCls;\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(\"\".concat(prefixCls, \"-handler\"), _defineProperty({}, \"\".concat(prefixCls, \"-handler-sm\"), size === 'small')),\n    style: {\n      backgroundColor: color\n    }\n  });\n};\nexport default Handler;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport React from 'react';\nvar Palette = function Palette(_ref) {\n  var children = _ref.children,\n    style = _ref.style,\n    prefixCls = _ref.prefixCls;\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: \"\".concat(prefixCls, \"-palette\"),\n    style: _objectSpread({\n      position: 'relative'\n    }, style)\n  }, children);\n};\nexport default Palette;","import React, { forwardRef } from 'react';\nvar Transform = /*#__PURE__*/forwardRef(function (props, ref) {\n  var children = props.children,\n    x = props.x,\n    y = props.y;\n  return /*#__PURE__*/React.createElement(\"div\", {\n    ref: ref,\n    style: {\n      position: 'absolute',\n      left: \"\".concat(x, \"%\"),\n      top: \"\".concat(y, \"%\"),\n      zIndex: 1,\n      transform: 'translate(-50%, -50%)'\n    }\n  }, children);\n});\nexport default Transform;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport React, { useRef } from 'react';\nimport useColorDrag from \"../hooks/useColorDrag\";\nimport { calcOffset, calculateColor } from \"../util\";\nimport { useEvent } from 'rc-util';\nimport Handler from \"./Handler\";\nimport Palette from \"./Palette\";\nimport Transform from \"./Transform\";\nvar Picker = function Picker(_ref) {\n  var color = _ref.color,\n    onChange = _ref.onChange,\n    prefixCls = _ref.prefixCls,\n    onChangeComplete = _ref.onChangeComplete,\n    disabled = _ref.disabled;\n  var pickerRef = useRef();\n  var transformRef = useRef();\n  var colorRef = useRef(color);\n  var onDragChange = useEvent(function (offsetValue) {\n    var calcColor = calculateColor({\n      offset: offsetValue,\n      targetRef: transformRef,\n      containerRef: pickerRef,\n      color: color\n    });\n    colorRef.current = calcColor;\n    onChange(calcColor);\n  });\n  var _useColorDrag = useColorDrag({\n      color: color,\n      containerRef: pickerRef,\n      targetRef: transformRef,\n      calculate: function calculate() {\n        return calcOffset(color);\n      },\n      onDragChange: onDragChange,\n      onDragChangeComplete: function onDragChangeComplete() {\n        return onChangeComplete === null || onChangeComplete === void 0 ? void 0 : onChangeComplete(colorRef.current);\n      },\n      disabledDrag: disabled\n    }),\n    _useColorDrag2 = _slicedToArray(_useColorDrag, 2),\n    offset = _useColorDrag2[0],\n    dragStartHandle = _useColorDrag2[1];\n  return /*#__PURE__*/React.createElement(\"div\", {\n    ref: pickerRef,\n    className: \"\".concat(prefixCls, \"-select\"),\n    onMouseDown: dragStartHandle,\n    onTouchStart: dragStartHandle\n  }, /*#__PURE__*/React.createElement(Palette, {\n    prefixCls: prefixCls\n  }, /*#__PURE__*/React.createElement(Transform, {\n    x: offset.x,\n    y: offset.y,\n    ref: transformRef\n  }, /*#__PURE__*/React.createElement(Handler, {\n    color: color.toRgbString(),\n    prefixCls: prefixCls\n  })), /*#__PURE__*/React.createElement(\"div\", {\n    className: \"\".concat(prefixCls, \"-saturation\"),\n    style: {\n      backgroundColor: \"hsl(\".concat(color.toHsb().h, \",100%, 50%)\"),\n      backgroundImage: 'linear-gradient(0deg, #000, transparent),linear-gradient(90deg, #fff, hsla(0, 0%, 100%, 0))'\n    }\n  })));\n};\nexport default Picker;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useMergedState } from 'rc-util';\nimport { useMemo } from 'react';\nimport { generateColor } from \"../util\";\nvar useColorState = function useColorState(defaultValue, value) {\n  var _useMergedState = useMergedState(defaultValue, {\n      value: value\n    }),\n    _useMergedState2 = _slicedToArray(_useMergedState, 2),\n    mergedValue = _useMergedState2[0],\n    setValue = _useMergedState2[1];\n  var color = useMemo(function () {\n    return generateColor(mergedValue);\n  }, [mergedValue]);\n  return [color, setValue];\n};\nexport default useColorState;","import React, { useMemo } from 'react';\nimport { Color } from \"../color\";\nimport { generateColor } from \"../util\";\nvar Gradient = function Gradient(_ref) {\n  var colors = _ref.colors,\n    children = _ref.children,\n    _ref$direction = _ref.direction,\n    direction = _ref$direction === void 0 ? 'to right' : _ref$direction,\n    type = _ref.type,\n    prefixCls = _ref.prefixCls;\n  var gradientColors = useMemo(function () {\n    return colors.map(function (color, idx) {\n      var result = generateColor(color);\n      if (type === 'alpha' && idx === colors.length - 1) {\n        result = new Color(result.setA(1));\n      }\n      return result.toRgbString();\n    }).join(',');\n  }, [colors, type]);\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: \"\".concat(prefixCls, \"-gradient\"),\n    style: {\n      position: 'absolute',\n      inset: 0,\n      background: \"linear-gradient(\".concat(direction, \", \").concat(gradientColors, \")\")\n    }\n  }, children);\n};\nexport default Gradient;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport React, { useRef } from 'react';\nimport useColorDrag from \"../hooks/useColorDrag\";\nimport Palette from \"./Palette\";\nimport classNames from 'classnames';\nimport { useEvent } from 'rc-util';\nimport { Color } from \"../color\";\nimport { calcOffset, calculateColor } from \"../util\";\nimport Gradient from \"./Gradient\";\nimport Handler from \"./Handler\";\nimport Transform from \"./Transform\";\nvar Slider = function Slider(props) {\n  var prefixCls = props.prefixCls,\n    colors = props.colors,\n    disabled = props.disabled,\n    onChange = props.onChange,\n    onChangeComplete = props.onChangeComplete,\n    color = props.color,\n    type = props.type;\n  var sliderRef = useRef();\n  var transformRef = useRef();\n  var colorRef = useRef(color);\n  var getValue = function getValue(c) {\n    return type === 'hue' ? c.getHue() : c.a * 100;\n  };\n  var onDragChange = useEvent(function (offsetValue) {\n    var calcColor = calculateColor({\n      offset: offsetValue,\n      targetRef: transformRef,\n      containerRef: sliderRef,\n      color: color,\n      type: type\n    });\n    colorRef.current = calcColor;\n    onChange(getValue(calcColor));\n  });\n  var _useColorDrag = useColorDrag({\n      color: color,\n      targetRef: transformRef,\n      containerRef: sliderRef,\n      calculate: function calculate() {\n        return calcOffset(color, type);\n      },\n      onDragChange: onDragChange,\n      onDragChangeComplete: function onDragChangeComplete() {\n        onChangeComplete(getValue(colorRef.current));\n      },\n      direction: 'x',\n      disabledDrag: disabled\n    }),\n    _useColorDrag2 = _slicedToArray(_useColorDrag, 2),\n    offset = _useColorDrag2[0],\n    dragStartHandle = _useColorDrag2[1];\n  var handleColor = React.useMemo(function () {\n    if (type === 'hue') {\n      var hsb = color.toHsb();\n      hsb.s = 1;\n      hsb.b = 1;\n      hsb.a = 1;\n      var lightColor = new Color(hsb);\n      return lightColor;\n    }\n    return color;\n  }, [color, type]);\n\n  // ========================= Gradient =========================\n  var gradientList = React.useMemo(function () {\n    return colors.map(function (info) {\n      return \"\".concat(info.color, \" \").concat(info.percent, \"%\");\n    });\n  }, [colors]);\n\n  // ========================== Render ==========================\n  return /*#__PURE__*/React.createElement(\"div\", {\n    ref: sliderRef,\n    className: classNames(\"\".concat(prefixCls, \"-slider\"), \"\".concat(prefixCls, \"-slider-\").concat(type)),\n    onMouseDown: dragStartHandle,\n    onTouchStart: dragStartHandle\n  }, /*#__PURE__*/React.createElement(Palette, {\n    prefixCls: prefixCls\n  }, /*#__PURE__*/React.createElement(Transform, {\n    x: offset.x,\n    y: offset.y,\n    ref: transformRef\n  }, /*#__PURE__*/React.createElement(Handler, {\n    size: \"small\",\n    color: handleColor.toHexString(),\n    prefixCls: prefixCls\n  })), /*#__PURE__*/React.createElement(Gradient, {\n    colors: gradientList,\n    type: type,\n    prefixCls: prefixCls\n  })));\n};\nexport default Slider;","import * as React from 'react';\nimport Slider from \"../components/Slider\";\nexport default function useComponent(components) {\n  return React.useMemo(function () {\n    var _ref = components || {},\n      slider = _ref.slider;\n    return [slider || Slider];\n  }, [components]);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport React, { forwardRef, useMemo } from 'react';\nimport { ColorPickerPrefixCls, defaultColor } from \"./util\";\nimport classNames from 'classnames';\nimport { Color } from \"./color\";\nimport ColorBlock from \"./components/ColorBlock\";\nimport Picker from \"./components/Picker\";\nimport useColorState from \"./hooks/useColorState\";\nimport useComponent from \"./hooks/useComponent\";\nvar HUE_COLORS = [{\n  color: 'rgb(255, 0, 0)',\n  percent: 0\n}, {\n  color: 'rgb(255, 255, 0)',\n  percent: 17\n}, {\n  color: 'rgb(0, 255, 0)',\n  percent: 33\n}, {\n  color: 'rgb(0, 255, 255)',\n  percent: 50\n}, {\n  color: 'rgb(0, 0, 255)',\n  percent: 67\n}, {\n  color: 'rgb(255, 0, 255)',\n  percent: 83\n}, {\n  color: 'rgb(255, 0, 0)',\n  percent: 100\n}];\nvar ColorPicker = /*#__PURE__*/forwardRef(function (props, ref) {\n  var value = props.value,\n    defaultValue = props.defaultValue,\n    _props$prefixCls = props.prefixCls,\n    prefixCls = _props$prefixCls === void 0 ? ColorPickerPrefixCls : _props$prefixCls,\n    onChange = props.onChange,\n    onChangeComplete = props.onChangeComplete,\n    className = props.className,\n    style = props.style,\n    panelRender = props.panelRender,\n    _props$disabledAlpha = props.disabledAlpha,\n    disabledAlpha = _props$disabledAlpha === void 0 ? false : _props$disabledAlpha,\n    _props$disabled = props.disabled,\n    disabled = _props$disabled === void 0 ? false : _props$disabled,\n    components = props.components;\n\n  // ========================== Components ==========================\n  var _useComponent = useComponent(components),\n    _useComponent2 = _slicedToArray(_useComponent, 1),\n    Slider = _useComponent2[0];\n\n  // ============================ Color =============================\n  var _useColorState = useColorState(defaultValue || defaultColor, value),\n    _useColorState2 = _slicedToArray(_useColorState, 2),\n    colorValue = _useColorState2[0],\n    setColorValue = _useColorState2[1];\n  var alphaColor = useMemo(function () {\n    return colorValue.setA(1).toRgbString();\n  }, [colorValue]);\n\n  // ============================ Events ============================\n  var handleChange = function handleChange(data, type) {\n    if (!value) {\n      setColorValue(data);\n    }\n    onChange === null || onChange === void 0 || onChange(data, type);\n  };\n\n  // Convert\n  var getHueColor = function getHueColor(hue) {\n    return new Color(colorValue.setHue(hue));\n  };\n  var getAlphaColor = function getAlphaColor(alpha) {\n    return new Color(colorValue.setA(alpha / 100));\n  };\n\n  // Slider change\n  var onHueChange = function onHueChange(hue) {\n    handleChange(getHueColor(hue), {\n      type: 'hue',\n      value: hue\n    });\n  };\n  var onAlphaChange = function onAlphaChange(alpha) {\n    handleChange(getAlphaColor(alpha), {\n      type: 'alpha',\n      value: alpha\n    });\n  };\n\n  // Complete\n  var onHueChangeComplete = function onHueChangeComplete(hue) {\n    if (onChangeComplete) {\n      onChangeComplete(getHueColor(hue));\n    }\n  };\n  var onAlphaChangeComplete = function onAlphaChangeComplete(alpha) {\n    if (onChangeComplete) {\n      onChangeComplete(getAlphaColor(alpha));\n    }\n  };\n\n  // ============================ Render ============================\n  var mergeCls = classNames(\"\".concat(prefixCls, \"-panel\"), className, _defineProperty({}, \"\".concat(prefixCls, \"-panel-disabled\"), disabled));\n  var sharedSliderProps = {\n    prefixCls: prefixCls,\n    disabled: disabled,\n    color: colorValue\n  };\n  var defaultPanel = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Picker, _extends({\n    onChange: handleChange\n  }, sharedSliderProps, {\n    onChangeComplete: onChangeComplete\n  })), /*#__PURE__*/React.createElement(\"div\", {\n    className: \"\".concat(prefixCls, \"-slider-container\")\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(\"\".concat(prefixCls, \"-slider-group\"), _defineProperty({}, \"\".concat(prefixCls, \"-slider-group-disabled-alpha\"), disabledAlpha))\n  }, /*#__PURE__*/React.createElement(Slider, _extends({}, sharedSliderProps, {\n    type: \"hue\",\n    colors: HUE_COLORS,\n    min: 0,\n    max: 359,\n    value: colorValue.getHue(),\n    onChange: onHueChange,\n    onChangeComplete: onHueChangeComplete\n  })), !disabledAlpha && /*#__PURE__*/React.createElement(Slider, _extends({}, sharedSliderProps, {\n    type: \"alpha\",\n    colors: [{\n      percent: 0,\n      color: 'rgba(255, 0, 4, 0)'\n    }, {\n      percent: 100,\n      color: alphaColor\n    }],\n    min: 0,\n    max: 100,\n    value: colorValue.a * 100,\n    onChange: onAlphaChange,\n    onChangeComplete: onAlphaChangeComplete\n  }))), /*#__PURE__*/React.createElement(ColorBlock, {\n    color: colorValue.toRgbString(),\n    prefixCls: prefixCls\n  })));\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: mergeCls,\n    style: style,\n    ref: ref\n  }, typeof panelRender === 'function' ? panelRender(defaultPanel) : defaultPanel);\n});\nif (process.env.NODE_ENV !== 'production') {\n  ColorPicker.displayName = 'ColorPicker';\n}\nexport default ColorPicker;","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport { Color as RcColor } from '@rc-component/color-picker';\nexport const toHexFormat = (value, alpha) => (value === null || value === void 0 ? void 0 : value.replace(/[^\\w/]/g, '').slice(0, alpha ? 8 : 6)) || '';\nexport const getHex = (value, alpha) => value ? toHexFormat(value, alpha) : '';\nexport let AggregationColor = /*#__PURE__*/function () {\n  function AggregationColor(color) {\n    _classCallCheck(this, AggregationColor);\n    var _a;\n    this.cleared = false;\n    // Clone from another AggregationColor\n    if (color instanceof AggregationColor) {\n      this.metaColor = color.metaColor.clone();\n      this.colors = (_a = color.colors) === null || _a === void 0 ? void 0 : _a.map(info => ({\n        color: new AggregationColor(info.color),\n        percent: info.percent\n      }));\n      this.cleared = color.cleared;\n      return;\n    }\n    const isArray = Array.isArray(color);\n    if (isArray && color.length) {\n      this.colors = color.map(({\n        color: c,\n        percent\n      }) => ({\n        color: new AggregationColor(c),\n        percent\n      }));\n      this.metaColor = new RcColor(this.colors[0].color.metaColor);\n    } else {\n      this.metaColor = new RcColor(isArray ? '' : color);\n    }\n    if (!color || isArray && !this.colors) {\n      this.metaColor = this.metaColor.setA(0);\n      this.cleared = true;\n    }\n  }\n  return _createClass(AggregationColor, [{\n    key: \"toHsb\",\n    value: function toHsb() {\n      return this.metaColor.toHsb();\n    }\n  }, {\n    key: \"toHsbString\",\n    value: function toHsbString() {\n      return this.metaColor.toHsbString();\n    }\n  }, {\n    key: \"toHex\",\n    value: function toHex() {\n      return getHex(this.toHexString(), this.metaColor.a < 1);\n    }\n  }, {\n    key: \"toHexString\",\n    value: function toHexString() {\n      return this.metaColor.toHexString();\n    }\n  }, {\n    key: \"toRgb\",\n    value: function toRgb() {\n      return this.metaColor.toRgb();\n    }\n  }, {\n    key: \"toRgbString\",\n    value: function toRgbString() {\n      return this.metaColor.toRgbString();\n    }\n  }, {\n    key: \"isGradient\",\n    value: function isGradient() {\n      return !!this.colors && !this.cleared;\n    }\n  }, {\n    key: \"getColors\",\n    value: function getColors() {\n      return this.colors || [{\n        color: this,\n        percent: 0\n      }];\n    }\n  }, {\n    key: \"toCssString\",\n    value: function toCssString() {\n      const {\n        colors\n      } = this;\n      // CSS line-gradient\n      if (colors) {\n        const colorsStr = colors.map(c => `${c.color.toRgbString()} ${c.percent}%`).join(', ');\n        return `linear-gradient(90deg, ${colorsStr})`;\n      }\n      return this.metaColor.toRgbString();\n    }\n  }, {\n    key: \"equals\",\n    value: function equals(color) {\n      if (!color || this.isGradient() !== color.isGradient()) {\n        return false;\n      }\n      if (!this.isGradient()) {\n        return this.toHexString() === color.toHexString();\n      }\n      return this.colors.length === color.colors.length && this.colors.every((c, i) => {\n        const target = color.colors[i];\n        return c.percent === target.percent && c.color.equals(target.color);\n      });\n    }\n  }]);\n}();","// This icon file is generated automatically.\nvar RightOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\" } }] }, \"name\": \"right\", \"theme\": \"outlined\" };\nexport default RightOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport RightOutlinedSvg from \"@ant-design/icons-svg/es/asn/RightOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar RightOutlined = function RightOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: RightOutlinedSvg\n  }));\n};\n\n/**![right](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTc2NS43IDQ4Ni44TDMxNC45IDEzNC43QTcuOTcgNy45NyAwIDAwMzAyIDE0MXY3Ny4zYzAgNC45IDIuMyA5LjYgNi4xIDEyLjZsMzYwIDI4MS4xLTM2MCAyODEuMWMtMy45IDMtNi4xIDcuNy02LjEgMTIuNlY4ODNjMCA2LjcgNy43IDEwLjQgMTIuOSA2LjNsNDUwLjgtMzUyLjFhMzEuOTYgMzEuOTYgMCAwMDAtNTAuNHoiIC8+PC9zdmc+) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(RightOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'RightOutlined';\n}\nexport default RefIcon;","const initMotionCommon = duration => ({\n  animationDuration: duration,\n  animationFillMode: 'both'\n});\n// FIXME: origin less code seems same as initMotionCommon. Maybe we can safe remove\nconst initMotionCommonLeave = duration => ({\n  animationDuration: duration,\n  animationFillMode: 'both'\n});\nexport const initMotion = (motionCls, inKeyframes, outKeyframes, duration, sameLevel = false) => {\n  const sameLevelPrefix = sameLevel ? '&' : '';\n  return {\n    [`\n      ${sameLevelPrefix}${motionCls}-enter,\n      ${sameLevelPrefix}${motionCls}-appear\n    `]: Object.assign(Object.assign({}, initMotionCommon(duration)), {\n      animationPlayState: 'paused'\n    }),\n    [`${sameLevelPrefix}${motionCls}-leave`]: Object.assign(Object.assign({}, initMotionCommonLeave(duration)), {\n      animationPlayState: 'paused'\n    }),\n    [`\n      ${sameLevelPrefix}${motionCls}-enter${motionCls}-enter-active,\n      ${sameLevelPrefix}${motionCls}-appear${motionCls}-appear-active\n    `]: {\n      animationName: inKeyframes,\n      animationPlayState: 'running'\n    },\n    [`${sameLevelPrefix}${motionCls}-leave${motionCls}-leave-active`]: {\n      animationName: outKeyframes,\n      animationPlayState: 'running',\n      pointerEvents: 'none'\n    }\n  };\n};","import { Keyframes } from '@ant-design/cssinjs';\nimport { initMotion } from './motion';\nexport const fadeIn = new Keyframes('antFadeIn', {\n  '0%': {\n    opacity: 0\n  },\n  '100%': {\n    opacity: 1\n  }\n});\nexport const fadeOut = new Keyframes('antFadeOut', {\n  '0%': {\n    opacity: 1\n  },\n  '100%': {\n    opacity: 0\n  }\n});\nexport const initFadeMotion = (token, sameLevel = false) => {\n  const {\n    antCls\n  } = token;\n  const motionCls = `${antCls}-fade`;\n  const sameLevelPrefix = sameLevel ? '&' : '';\n  return [initMotion(motionCls, fadeIn, fadeOut, token.motionDurationMid, sameLevel), {\n    [`\n        ${sameLevelPrefix}${motionCls}-enter,\n        ${sameLevelPrefix}${motionCls}-appear\n      `]: {\n      opacity: 0,\n      animationTimingFunction: 'linear'\n    },\n    [`${sameLevelPrefix}${motionCls}-leave`]: {\n      animationTimingFunction: 'linear'\n    }\n  }];\n};","import { Keyframes } from '@ant-design/cssinjs';\nimport { initMotion } from './motion';\nexport const moveDownIn = new Keyframes('antMoveDownIn', {\n  '0%': {\n    transform: 'translate3d(0, 100%, 0)',\n    transformOrigin: '0 0',\n    opacity: 0\n  },\n  '100%': {\n    transform: 'translate3d(0, 0, 0)',\n    transformOrigin: '0 0',\n    opacity: 1\n  }\n});\nexport const moveDownOut = new Keyframes('antMoveDownOut', {\n  '0%': {\n    transform: 'translate3d(0, 0, 0)',\n    transformOrigin: '0 0',\n    opacity: 1\n  },\n  '100%': {\n    transform: 'translate3d(0, 100%, 0)',\n    transformOrigin: '0 0',\n    opacity: 0\n  }\n});\nexport const moveLeftIn = new Keyframes('antMoveLeftIn', {\n  '0%': {\n    transform: 'translate3d(-100%, 0, 0)',\n    transformOrigin: '0 0',\n    opacity: 0\n  },\n  '100%': {\n    transform: 'translate3d(0, 0, 0)',\n    transformOrigin: '0 0',\n    opacity: 1\n  }\n});\nexport const moveLeftOut = new Keyframes('antMoveLeftOut', {\n  '0%': {\n    transform: 'translate3d(0, 0, 0)',\n    transformOrigin: '0 0',\n    opacity: 1\n  },\n  '100%': {\n    transform: 'translate3d(-100%, 0, 0)',\n    transformOrigin: '0 0',\n    opacity: 0\n  }\n});\nexport const moveRightIn = new Keyframes('antMoveRightIn', {\n  '0%': {\n    transform: 'translate3d(100%, 0, 0)',\n    transformOrigin: '0 0',\n    opacity: 0\n  },\n  '100%': {\n    transform: 'translate3d(0, 0, 0)',\n    transformOrigin: '0 0',\n    opacity: 1\n  }\n});\nexport const moveRightOut = new Keyframes('antMoveRightOut', {\n  '0%': {\n    transform: 'translate3d(0, 0, 0)',\n    transformOrigin: '0 0',\n    opacity: 1\n  },\n  '100%': {\n    transform: 'translate3d(100%, 0, 0)',\n    transformOrigin: '0 0',\n    opacity: 0\n  }\n});\nexport const moveUpIn = new Keyframes('antMoveUpIn', {\n  '0%': {\n    transform: 'translate3d(0, -100%, 0)',\n    transformOrigin: '0 0',\n    opacity: 0\n  },\n  '100%': {\n    transform: 'translate3d(0, 0, 0)',\n    transformOrigin: '0 0',\n    opacity: 1\n  }\n});\nexport const moveUpOut = new Keyframes('antMoveUpOut', {\n  '0%': {\n    transform: 'translate3d(0, 0, 0)',\n    transformOrigin: '0 0',\n    opacity: 1\n  },\n  '100%': {\n    transform: 'translate3d(0, -100%, 0)',\n    transformOrigin: '0 0',\n    opacity: 0\n  }\n});\nconst moveMotion = {\n  'move-up': {\n    inKeyframes: moveUpIn,\n    outKeyframes: moveUpOut\n  },\n  'move-down': {\n    inKeyframes: moveDownIn,\n    outKeyframes: moveDownOut\n  },\n  'move-left': {\n    inKeyframes: moveLeftIn,\n    outKeyframes: moveLeftOut\n  },\n  'move-right': {\n    inKeyframes: moveRightIn,\n    outKeyframes: moveRightOut\n  }\n};\nexport const initMoveMotion = (token, motionName) => {\n  const {\n    antCls\n  } = token;\n  const motionCls = `${antCls}-${motionName}`;\n  const {\n    inKeyframes,\n    outKeyframes\n  } = moveMotion[motionName];\n  return [initMotion(motionCls, inKeyframes, outKeyframes, token.motionDurationMid), {\n    [`\n        ${motionCls}-enter,\n        ${motionCls}-appear\n      `]: {\n      opacity: 0,\n      animationTimingFunction: token.motionEaseOutCirc\n    },\n    [`${motionCls}-leave`]: {\n      animationTimingFunction: token.motionEaseInOutCirc\n    }\n  }];\n};","import { Keyframes } from '@ant-design/cssinjs';\nimport { initMotion } from './motion';\nexport const slideUpIn = new Keyframes('antSlideUpIn', {\n  '0%': {\n    transform: 'scaleY(0.8)',\n    transformOrigin: '0% 0%',\n    opacity: 0\n  },\n  '100%': {\n    transform: 'scaleY(1)',\n    transformOrigin: '0% 0%',\n    opacity: 1\n  }\n});\nexport const slideUpOut = new Keyframes('antSlideUpOut', {\n  '0%': {\n    transform: 'scaleY(1)',\n    transformOrigin: '0% 0%',\n    opacity: 1\n  },\n  '100%': {\n    transform: 'scaleY(0.8)',\n    transformOrigin: '0% 0%',\n    opacity: 0\n  }\n});\nexport const slideDownIn = new Keyframes('antSlideDownIn', {\n  '0%': {\n    transform: 'scaleY(0.8)',\n    transformOrigin: '100% 100%',\n    opacity: 0\n  },\n  '100%': {\n    transform: 'scaleY(1)',\n    transformOrigin: '100% 100%',\n    opacity: 1\n  }\n});\nexport const slideDownOut = new Keyframes('antSlideDownOut', {\n  '0%': {\n    transform: 'scaleY(1)',\n    transformOrigin: '100% 100%',\n    opacity: 1\n  },\n  '100%': {\n    transform: 'scaleY(0.8)',\n    transformOrigin: '100% 100%',\n    opacity: 0\n  }\n});\nexport const slideLeftIn = new Keyframes('antSlideLeftIn', {\n  '0%': {\n    transform: 'scaleX(0.8)',\n    transformOrigin: '0% 0%',\n    opacity: 0\n  },\n  '100%': {\n    transform: 'scaleX(1)',\n    transformOrigin: '0% 0%',\n    opacity: 1\n  }\n});\nexport const slideLeftOut = new Keyframes('antSlideLeftOut', {\n  '0%': {\n    transform: 'scaleX(1)',\n    transformOrigin: '0% 0%',\n    opacity: 1\n  },\n  '100%': {\n    transform: 'scaleX(0.8)',\n    transformOrigin: '0% 0%',\n    opacity: 0\n  }\n});\nexport const slideRightIn = new Keyframes('antSlideRightIn', {\n  '0%': {\n    transform: 'scaleX(0.8)',\n    transformOrigin: '100% 0%',\n    opacity: 0\n  },\n  '100%': {\n    transform: 'scaleX(1)',\n    transformOrigin: '100% 0%',\n    opacity: 1\n  }\n});\nexport const slideRightOut = new Keyframes('antSlideRightOut', {\n  '0%': {\n    transform: 'scaleX(1)',\n    transformOrigin: '100% 0%',\n    opacity: 1\n  },\n  '100%': {\n    transform: 'scaleX(0.8)',\n    transformOrigin: '100% 0%',\n    opacity: 0\n  }\n});\nconst slideMotion = {\n  'slide-up': {\n    inKeyframes: slideUpIn,\n    outKeyframes: slideUpOut\n  },\n  'slide-down': {\n    inKeyframes: slideDownIn,\n    outKeyframes: slideDownOut\n  },\n  'slide-left': {\n    inKeyframes: slideLeftIn,\n    outKeyframes: slideLeftOut\n  },\n  'slide-right': {\n    inKeyframes: slideRightIn,\n    outKeyframes: slideRightOut\n  }\n};\nexport const initSlideMotion = (token, motionName) => {\n  const {\n    antCls\n  } = token;\n  const motionCls = `${antCls}-${motionName}`;\n  const {\n    inKeyframes,\n    outKeyframes\n  } = slideMotion[motionName];\n  return [initMotion(motionCls, inKeyframes, outKeyframes, token.motionDurationMid), {\n    [`\n      ${motionCls}-enter,\n      ${motionCls}-appear\n    `]: {\n      transform: 'scale(0)',\n      transformOrigin: '0% 0%',\n      opacity: 0,\n      animationTimingFunction: token.motionEaseOutQuint,\n      '&-prepare': {\n        transform: 'scale(1)'\n      }\n    },\n    [`${motionCls}-leave`]: {\n      animationTimingFunction: token.motionEaseInQuint\n    }\n  }];\n};","import { Keyframes } from '@ant-design/cssinjs';\nimport { initMotion } from './motion';\nexport const zoomIn = new Keyframes('antZoomIn', {\n  '0%': {\n    transform: 'scale(0.2)',\n    opacity: 0\n  },\n  '100%': {\n    transform: 'scale(1)',\n    opacity: 1\n  }\n});\nexport const zoomOut = new Keyframes('antZoomOut', {\n  '0%': {\n    transform: 'scale(1)'\n  },\n  '100%': {\n    transform: 'scale(0.2)',\n    opacity: 0\n  }\n});\nexport const zoomBigIn = new Keyframes('antZoomBigIn', {\n  '0%': {\n    transform: 'scale(0.8)',\n    opacity: 0\n  },\n  '100%': {\n    transform: 'scale(1)',\n    opacity: 1\n  }\n});\nexport const zoomBigOut = new Keyframes('antZoomBigOut', {\n  '0%': {\n    transform: 'scale(1)'\n  },\n  '100%': {\n    transform: 'scale(0.8)',\n    opacity: 0\n  }\n});\nexport const zoomUpIn = new Keyframes('antZoomUpIn', {\n  '0%': {\n    transform: 'scale(0.8)',\n    transformOrigin: '50% 0%',\n    opacity: 0\n  },\n  '100%': {\n    transform: 'scale(1)',\n    transformOrigin: '50% 0%'\n  }\n});\nexport const zoomUpOut = new Keyframes('antZoomUpOut', {\n  '0%': {\n    transform: 'scale(1)',\n    transformOrigin: '50% 0%'\n  },\n  '100%': {\n    transform: 'scale(0.8)',\n    transformOrigin: '50% 0%',\n    opacity: 0\n  }\n});\nexport const zoomLeftIn = new Keyframes('antZoomLeftIn', {\n  '0%': {\n    transform: 'scale(0.8)',\n    transformOrigin: '0% 50%',\n    opacity: 0\n  },\n  '100%': {\n    transform: 'scale(1)',\n    transformOrigin: '0% 50%'\n  }\n});\nexport const zoomLeftOut = new Keyframes('antZoomLeftOut', {\n  '0%': {\n    transform: 'scale(1)',\n    transformOrigin: '0% 50%'\n  },\n  '100%': {\n    transform: 'scale(0.8)',\n    transformOrigin: '0% 50%',\n    opacity: 0\n  }\n});\nexport const zoomRightIn = new Keyframes('antZoomRightIn', {\n  '0%': {\n    transform: 'scale(0.8)',\n    transformOrigin: '100% 50%',\n    opacity: 0\n  },\n  '100%': {\n    transform: 'scale(1)',\n    transformOrigin: '100% 50%'\n  }\n});\nexport const zoomRightOut = new Keyframes('antZoomRightOut', {\n  '0%': {\n    transform: 'scale(1)',\n    transformOrigin: '100% 50%'\n  },\n  '100%': {\n    transform: 'scale(0.8)',\n    transformOrigin: '100% 50%',\n    opacity: 0\n  }\n});\nexport const zoomDownIn = new Keyframes('antZoomDownIn', {\n  '0%': {\n    transform: 'scale(0.8)',\n    transformOrigin: '50% 100%',\n    opacity: 0\n  },\n  '100%': {\n    transform: 'scale(1)',\n    transformOrigin: '50% 100%'\n  }\n});\nexport const zoomDownOut = new Keyframes('antZoomDownOut', {\n  '0%': {\n    transform: 'scale(1)',\n    transformOrigin: '50% 100%'\n  },\n  '100%': {\n    transform: 'scale(0.8)',\n    transformOrigin: '50% 100%',\n    opacity: 0\n  }\n});\nconst zoomMotion = {\n  zoom: {\n    inKeyframes: zoomIn,\n    outKeyframes: zoomOut\n  },\n  'zoom-big': {\n    inKeyframes: zoomBigIn,\n    outKeyframes: zoomBigOut\n  },\n  'zoom-big-fast': {\n    inKeyframes: zoomBigIn,\n    outKeyframes: zoomBigOut\n  },\n  'zoom-left': {\n    inKeyframes: zoomLeftIn,\n    outKeyframes: zoomLeftOut\n  },\n  'zoom-right': {\n    inKeyframes: zoomRightIn,\n    outKeyframes: zoomRightOut\n  },\n  'zoom-up': {\n    inKeyframes: zoomUpIn,\n    outKeyframes: zoomUpOut\n  },\n  'zoom-down': {\n    inKeyframes: zoomDownIn,\n    outKeyframes: zoomDownOut\n  }\n};\nexport const initZoomMotion = (token, motionName) => {\n  const {\n    antCls\n  } = token;\n  const motionCls = `${antCls}-${motionName}`;\n  const {\n    inKeyframes,\n    outKeyframes\n  } = zoomMotion[motionName];\n  return [initMotion(motionCls, inKeyframes, outKeyframes, motionName === 'zoom-big-fast' ? token.motionDurationFast : token.motionDurationMid), {\n    [`\n        ${motionCls}-enter,\n        ${motionCls}-appear\n      `]: {\n      transform: 'scale(0)',\n      opacity: 0,\n      animationTimingFunction: token.motionEaseOutCirc,\n      '&-prepare': {\n        transform: 'none'\n      }\n    },\n    [`${motionCls}-leave`]: {\n      animationTimingFunction: token.motionEaseInOutCirc\n    }\n  }];\n};","\"use client\";\n\nimport React, { useMemo } from 'react';\nimport { ColorBlock, Color as RcColor } from '@rc-component/color-picker';\nimport classNames from 'classnames';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport Collapse from '../../collapse';\nimport { useLocale } from '../../locale';\nimport { useToken } from '../../theme/internal';\nimport { generateColor } from '../util';\nconst genPresetColor = list => list.map(value => {\n  value.colors = value.colors.map(generateColor);\n  return value;\n});\nexport const isBright = (value, bgColorToken) => {\n  const {\n    r,\n    g,\n    b,\n    a\n  } = value.toRgb();\n  const hsv = new RcColor(value.toRgbString()).onBackground(bgColorToken).toHsv();\n  if (a <= 0.5) {\n    // Adapted to dark mode\n    return hsv.v > 0.5;\n  }\n  return r * 0.299 + g * 0.587 + b * 0.114 > 192;\n};\nconst genCollapsePanelKey = (preset, index) => {\n  var _a;\n  const mergedKey = (_a = preset.key) !== null && _a !== void 0 ? _a : index;\n  return `panel-${mergedKey}`;\n};\nconst ColorPresets = ({\n  prefixCls,\n  presets,\n  value: color,\n  onChange\n}) => {\n  const [locale] = useLocale('ColorPicker');\n  const [, token] = useToken();\n  const [presetsValue] = useMergedState(genPresetColor(presets), {\n    value: genPresetColor(presets),\n    postState: genPresetColor\n  });\n  const colorPresetsPrefixCls = `${prefixCls}-presets`;\n  const activeKeys = useMemo(() => presetsValue.reduce((acc, preset, index) => {\n    const {\n      defaultOpen = true\n    } = preset;\n    if (defaultOpen) {\n      acc.push(genCollapsePanelKey(preset, index));\n    }\n    return acc;\n  }, []), [presetsValue]);\n  const handleClick = colorValue => {\n    onChange === null || onChange === void 0 ? void 0 : onChange(colorValue);\n  };\n  const items = presetsValue.map((preset, index) => {\n    var _a;\n    return {\n      key: genCollapsePanelKey(preset, index),\n      label: /*#__PURE__*/React.createElement(\"div\", {\n        className: `${colorPresetsPrefixCls}-label`\n      }, preset === null || preset === void 0 ? void 0 : preset.label),\n      children: (/*#__PURE__*/React.createElement(\"div\", {\n        className: `${colorPresetsPrefixCls}-items`\n      }, Array.isArray(preset === null || preset === void 0 ? void 0 : preset.colors) && ((_a = preset.colors) === null || _a === void 0 ? void 0 : _a.length) > 0 ? preset.colors.map((presetColor, index) => (/*#__PURE__*/React.createElement(ColorBlock\n      // eslint-disable-next-line react/no-array-index-key\n      , {\n        // eslint-disable-next-line react/no-array-index-key\n        key: `preset-${index}-${presetColor.toHexString()}`,\n        color: generateColor(presetColor).toRgbString(),\n        prefixCls: prefixCls,\n        className: classNames(`${colorPresetsPrefixCls}-color`, {\n          [`${colorPresetsPrefixCls}-color-checked`]: presetColor.toHexString() === (color === null || color === void 0 ? void 0 : color.toHexString()),\n          [`${colorPresetsPrefixCls}-color-bright`]: isBright(presetColor, token.colorBgElevated)\n        }),\n        onClick: () => handleClick(presetColor)\n      }))) : (/*#__PURE__*/React.createElement(\"span\", {\n        className: `${colorPresetsPrefixCls}-empty`\n      }, locale.presetEmpty))))\n    };\n  });\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: colorPresetsPrefixCls\n  }, /*#__PURE__*/React.createElement(Collapse, {\n    defaultActiveKey: activeKeys,\n    ghost: true,\n    items: items\n  }));\n};\nexport default ColorPresets;","import { unit } from '@ant-design/cssinjs';\nimport { AggregationColor } from '../../color-picker/color';\nimport { isBright } from '../../color-picker/components/ColorPresets';\nimport { getLineHeight, mergeToken } from '../../theme/internal';\nimport { PresetColors } from '../../theme/interface';\nimport getAlphaColor from '../../theme/util/getAlphaColor';\nexport const prepareToken = token => {\n  const {\n    paddingInline,\n    onlyIconSize\n  } = token;\n  const buttonToken = mergeToken(token, {\n    buttonPaddingHorizontal: paddingInline,\n    buttonPaddingVertical: 0,\n    buttonIconOnlyFontSize: onlyIconSize\n  });\n  return buttonToken;\n};\nexport const prepareComponentToken = token => {\n  var _a, _b, _c, _d, _e, _f;\n  const contentFontSize = (_a = token.contentFontSize) !== null && _a !== void 0 ? _a : token.fontSize;\n  const contentFontSizeSM = (_b = token.contentFontSizeSM) !== null && _b !== void 0 ? _b : token.fontSize;\n  const contentFontSizeLG = (_c = token.contentFontSizeLG) !== null && _c !== void 0 ? _c : token.fontSizeLG;\n  const contentLineHeight = (_d = token.contentLineHeight) !== null && _d !== void 0 ? _d : getLineHeight(contentFontSize);\n  const contentLineHeightSM = (_e = token.contentLineHeightSM) !== null && _e !== void 0 ? _e : getLineHeight(contentFontSizeSM);\n  const contentLineHeightLG = (_f = token.contentLineHeightLG) !== null && _f !== void 0 ? _f : getLineHeight(contentFontSizeLG);\n  const solidTextColor = isBright(new AggregationColor(token.colorBgSolid), '#fff') ? '#000' : '#fff';\n  const shadowColorTokens = PresetColors.reduce((prev, colorKey) => Object.assign(Object.assign({}, prev), {\n    [`${colorKey}ShadowColor`]: `0 ${unit(token.controlOutlineWidth)} 0 ${getAlphaColor(token[`${colorKey}1`], token.colorBgContainer)}`\n  }), {});\n  return Object.assign(Object.assign({}, shadowColorTokens), {\n    fontWeight: 400,\n    defaultShadow: `0 ${token.controlOutlineWidth}px 0 ${token.controlTmpOutline}`,\n    primaryShadow: `0 ${token.controlOutlineWidth}px 0 ${token.controlOutline}`,\n    dangerShadow: `0 ${token.controlOutlineWidth}px 0 ${token.colorErrorOutline}`,\n    primaryColor: token.colorTextLightSolid,\n    dangerColor: token.colorTextLightSolid,\n    borderColorDisabled: token.colorBorder,\n    defaultGhostColor: token.colorBgContainer,\n    ghostBg: 'transparent',\n    defaultGhostBorderColor: token.colorBgContainer,\n    paddingInline: token.paddingContentHorizontal - token.lineWidth,\n    paddingInlineLG: token.paddingContentHorizontal - token.lineWidth,\n    paddingInlineSM: 8 - token.lineWidth,\n    onlyIconSize: 'inherit',\n    onlyIconSizeSM: 'inherit',\n    onlyIconSizeLG: 'inherit',\n    groupBorderColor: token.colorPrimaryHover,\n    linkHoverBg: 'transparent',\n    textTextColor: token.colorText,\n    textTextHoverColor: token.colorText,\n    textTextActiveColor: token.colorText,\n    textHoverBg: token.colorFillTertiary,\n    defaultColor: token.colorText,\n    defaultBg: token.colorBgContainer,\n    defaultBorderColor: token.colorBorder,\n    defaultBorderColorDisabled: token.colorBorder,\n    defaultHoverBg: token.colorBgContainer,\n    defaultHoverColor: token.colorPrimaryHover,\n    defaultHoverBorderColor: token.colorPrimaryHover,\n    defaultActiveBg: token.colorBgContainer,\n    defaultActiveColor: token.colorPrimaryActive,\n    defaultActiveBorderColor: token.colorPrimaryActive,\n    solidTextColor,\n    contentFontSize,\n    contentFontSizeSM,\n    contentFontSizeLG,\n    contentLineHeight,\n    contentLineHeightSM,\n    contentLineHeightLG,\n    paddingBlock: Math.max((token.controlHeight - contentFontSize * contentLineHeight) / 2 - token.lineWidth, 0),\n    paddingBlockSM: Math.max((token.controlHeightSM - contentFontSizeSM * contentLineHeightSM) / 2 - token.lineWidth, 0),\n    paddingBlockLG: Math.max((token.controlHeightLG - contentFontSizeLG * contentLineHeightLG) / 2 - token.lineWidth, 0)\n  });\n};","import { unit } from '@ant-design/cssinjs';\nimport { genFocusStyle, resetIcon } from '../../style';\nimport { PresetColors } from '../../theme/interface';\nimport { genStyleHooks, mergeToken } from '../../theme/internal';\nimport genGroupStyle from './group';\nimport { prepareComponentToken, prepareToken } from './token';\n// ============================== Shared ==============================\nconst genSharedButtonStyle = token => {\n  const {\n    componentCls,\n    iconCls,\n    fontWeight,\n    opacityLoading,\n    motionDurationSlow,\n    motionEaseInOut,\n    marginXS,\n    calc\n  } = token;\n  return {\n    [componentCls]: {\n      outline: 'none',\n      position: 'relative',\n      display: 'inline-flex',\n      gap: token.marginXS,\n      alignItems: 'center',\n      justifyContent: 'center',\n      fontWeight,\n      whiteSpace: 'nowrap',\n      textAlign: 'center',\n      backgroundImage: 'none',\n      background: 'transparent',\n      border: `${unit(token.lineWidth)} ${token.lineType} transparent`,\n      cursor: 'pointer',\n      transition: `all ${token.motionDurationMid} ${token.motionEaseInOut}`,\n      userSelect: 'none',\n      touchAction: 'manipulation',\n      color: token.colorText,\n      '&:disabled > *': {\n        pointerEvents: 'none'\n      },\n      // https://github.com/ant-design/ant-design/issues/51380\n      [`${componentCls}-icon > svg`]: resetIcon(),\n      '> a': {\n        color: 'currentColor'\n      },\n      '&:not(:disabled)': genFocusStyle(token),\n      [`&${componentCls}-two-chinese-chars::first-letter`]: {\n        letterSpacing: '0.34em'\n      },\n      [`&${componentCls}-two-chinese-chars > *:not(${iconCls})`]: {\n        marginInlineEnd: '-0.34em',\n        letterSpacing: '0.34em'\n      },\n      [`&${componentCls}-icon-only`]: {\n        paddingInline: 0,\n        // make `btn-icon-only` not too narrow\n        [`&${componentCls}-compact-item`]: {\n          flex: 'none'\n        },\n        [`&${componentCls}-round`]: {\n          width: 'auto'\n        }\n      },\n      // Loading\n      [`&${componentCls}-loading`]: {\n        opacity: opacityLoading,\n        cursor: 'default'\n      },\n      [`${componentCls}-loading-icon`]: {\n        transition: ['width', 'opacity', 'margin'].map(transition => `${transition} ${motionDurationSlow} ${motionEaseInOut}`).join(',')\n      },\n      // iconPosition\n      [`&:not(${componentCls}-icon-end)`]: {\n        [`${componentCls}-loading-icon-motion`]: {\n          '&-appear-start, &-enter-start': {\n            marginInlineEnd: calc(marginXS).mul(-1).equal()\n          },\n          '&-appear-active, &-enter-active': {\n            marginInlineEnd: 0\n          },\n          '&-leave-start': {\n            marginInlineEnd: 0\n          },\n          '&-leave-active': {\n            marginInlineEnd: calc(marginXS).mul(-1).equal()\n          }\n        }\n      },\n      '&-icon-end': {\n        flexDirection: 'row-reverse',\n        [`${componentCls}-loading-icon-motion`]: {\n          '&-appear-start, &-enter-start': {\n            marginInlineStart: calc(marginXS).mul(-1).equal()\n          },\n          '&-appear-active, &-enter-active': {\n            marginInlineStart: 0\n          },\n          '&-leave-start': {\n            marginInlineStart: 0\n          },\n          '&-leave-active': {\n            marginInlineStart: calc(marginXS).mul(-1).equal()\n          }\n        }\n      }\n    }\n  };\n};\nconst genHoverActiveButtonStyle = (btnCls, hoverStyle, activeStyle) => ({\n  [`&:not(:disabled):not(${btnCls}-disabled)`]: {\n    '&:hover': hoverStyle,\n    '&:active': activeStyle\n  }\n});\n// ============================== Shape ===============================\nconst genCircleButtonStyle = token => ({\n  minWidth: token.controlHeight,\n  paddingInlineStart: 0,\n  paddingInlineEnd: 0,\n  borderRadius: '50%'\n});\nconst genRoundButtonStyle = token => ({\n  borderRadius: token.controlHeight,\n  paddingInlineStart: token.calc(token.controlHeight).div(2).equal(),\n  paddingInlineEnd: token.calc(token.controlHeight).div(2).equal()\n});\nconst genDisabledStyle = token => ({\n  cursor: 'not-allowed',\n  borderColor: token.borderColorDisabled,\n  color: token.colorTextDisabled,\n  background: token.colorBgContainerDisabled,\n  boxShadow: 'none'\n});\nconst genGhostButtonStyle = (btnCls, background, textColor, borderColor, textColorDisabled, borderColorDisabled, hoverStyle, activeStyle) => ({\n  [`&${btnCls}-background-ghost`]: Object.assign(Object.assign({\n    color: textColor || undefined,\n    background,\n    borderColor: borderColor || undefined,\n    boxShadow: 'none'\n  }, genHoverActiveButtonStyle(btnCls, Object.assign({\n    background\n  }, hoverStyle), Object.assign({\n    background\n  }, activeStyle))), {\n    '&:disabled': {\n      cursor: 'not-allowed',\n      color: textColorDisabled || undefined,\n      borderColor: borderColorDisabled || undefined\n    }\n  })\n});\nconst genSolidDisabledButtonStyle = token => ({\n  [`&:disabled, &${token.componentCls}-disabled`]: Object.assign({}, genDisabledStyle(token))\n});\nconst genPureDisabledButtonStyle = token => ({\n  [`&:disabled, &${token.componentCls}-disabled`]: {\n    cursor: 'not-allowed',\n    color: token.colorTextDisabled\n  }\n});\n// ============================== Variant =============================\nconst genVariantButtonStyle = (token, hoverStyle, activeStyle, variant) => {\n  const isPureDisabled = variant && ['link', 'text'].includes(variant);\n  const genDisabledButtonStyle = isPureDisabled ? genPureDisabledButtonStyle : genSolidDisabledButtonStyle;\n  return Object.assign(Object.assign({}, genDisabledButtonStyle(token)), genHoverActiveButtonStyle(token.componentCls, hoverStyle, activeStyle));\n};\nconst genSolidButtonStyle = (token, textColor, background, hoverStyle, activeStyle) => ({\n  [`&${token.componentCls}-variant-solid`]: Object.assign({\n    color: textColor,\n    background\n  }, genVariantButtonStyle(token, hoverStyle, activeStyle))\n});\nconst genOutlinedDashedButtonStyle = (token, borderColor, background, hoverStyle, activeStyle) => ({\n  [`&${token.componentCls}-variant-outlined, &${token.componentCls}-variant-dashed`]: Object.assign({\n    borderColor,\n    background\n  }, genVariantButtonStyle(token, hoverStyle, activeStyle))\n});\nconst genDashedButtonStyle = token => ({\n  [`&${token.componentCls}-variant-dashed`]: {\n    borderStyle: 'dashed'\n  }\n});\nconst genFilledButtonStyle = (token, background, hoverStyle, activeStyle) => ({\n  [`&${token.componentCls}-variant-filled`]: Object.assign({\n    boxShadow: 'none',\n    background\n  }, genVariantButtonStyle(token, hoverStyle, activeStyle))\n});\nconst genTextLinkButtonStyle = (token, textColor, variant, hoverStyle, activeStyle) => ({\n  [`&${token.componentCls}-variant-${variant}`]: Object.assign({\n    color: textColor,\n    boxShadow: 'none'\n  }, genVariantButtonStyle(token, hoverStyle, activeStyle, variant))\n});\n// =============================== Color ==============================\nconst genPresetColorStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return PresetColors.reduce((prev, colorKey) => {\n    const darkColor = token[`${colorKey}6`];\n    const lightColor = token[`${colorKey}1`];\n    const hoverColor = token[`${colorKey}5`];\n    const lightHoverColor = token[`${colorKey}2`];\n    const lightBorderColor = token[`${colorKey}3`];\n    const activeColor = token[`${colorKey}7`];\n    return Object.assign(Object.assign({}, prev), {\n      [`&${componentCls}-color-${colorKey}`]: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({\n        color: darkColor,\n        boxShadow: token[`${colorKey}ShadowColor`]\n      }, genSolidButtonStyle(token, token.colorTextLightSolid, darkColor, {\n        background: hoverColor\n      }, {\n        background: activeColor\n      })), genOutlinedDashedButtonStyle(token, darkColor, token.colorBgContainer, {\n        color: hoverColor,\n        borderColor: hoverColor,\n        background: token.colorBgContainer\n      }, {\n        color: activeColor,\n        borderColor: activeColor,\n        background: token.colorBgContainer\n      })), genDashedButtonStyle(token)), genFilledButtonStyle(token, lightColor, {\n        background: lightHoverColor\n      }, {\n        background: lightBorderColor\n      })), genTextLinkButtonStyle(token, darkColor, 'link', {\n        color: hoverColor\n      }, {\n        color: activeColor\n      })), genTextLinkButtonStyle(token, darkColor, 'text', {\n        color: hoverColor,\n        background: lightColor\n      }, {\n        color: activeColor,\n        background: lightBorderColor\n      }))\n    });\n  }, {});\n};\nconst genDefaultButtonStyle = token => Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({\n  color: token.defaultColor,\n  boxShadow: token.defaultShadow\n}, genSolidButtonStyle(token, token.solidTextColor, token.colorBgSolid, {\n  color: token.solidTextColor,\n  background: token.colorBgSolidHover\n}, {\n  color: token.solidTextColor,\n  background: token.colorBgSolidActive\n})), genDashedButtonStyle(token)), genFilledButtonStyle(token, token.colorFillTertiary, {\n  background: token.colorFillSecondary\n}, {\n  background: token.colorFill\n})), genGhostButtonStyle(token.componentCls, token.ghostBg, token.defaultGhostColor, token.defaultGhostBorderColor, token.colorTextDisabled, token.colorBorder)), genTextLinkButtonStyle(token, token.textTextColor, 'link', {\n  color: token.colorLinkHover,\n  background: token.linkHoverBg\n}, {\n  color: token.colorLinkActive\n}));\nconst genPrimaryButtonStyle = token => Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({\n  color: token.colorPrimary,\n  boxShadow: token.primaryShadow\n}, genOutlinedDashedButtonStyle(token, token.colorPrimary, token.colorBgContainer, {\n  color: token.colorPrimaryTextHover,\n  borderColor: token.colorPrimaryHover,\n  background: token.colorBgContainer\n}, {\n  color: token.colorPrimaryTextActive,\n  borderColor: token.colorPrimaryActive,\n  background: token.colorBgContainer\n})), genDashedButtonStyle(token)), genFilledButtonStyle(token, token.colorPrimaryBg, {\n  background: token.colorPrimaryBgHover\n}, {\n  background: token.colorPrimaryBorder\n})), genTextLinkButtonStyle(token, token.colorPrimaryText, 'text', {\n  color: token.colorPrimaryTextHover,\n  background: token.colorPrimaryBg\n}, {\n  color: token.colorPrimaryTextActive,\n  background: token.colorPrimaryBorder\n})), genTextLinkButtonStyle(token, token.colorPrimaryText, 'link', {\n  color: token.colorPrimaryTextHover,\n  background: token.linkHoverBg\n}, {\n  color: token.colorPrimaryTextActive\n})), genGhostButtonStyle(token.componentCls, token.ghostBg, token.colorPrimary, token.colorPrimary, token.colorTextDisabled, token.colorBorder, {\n  color: token.colorPrimaryHover,\n  borderColor: token.colorPrimaryHover\n}, {\n  color: token.colorPrimaryActive,\n  borderColor: token.colorPrimaryActive\n}));\nconst genDangerousStyle = token => Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({\n  color: token.colorError,\n  boxShadow: token.dangerShadow\n}, genSolidButtonStyle(token, token.dangerColor, token.colorError, {\n  background: token.colorErrorHover\n}, {\n  background: token.colorErrorActive\n})), genOutlinedDashedButtonStyle(token, token.colorError, token.colorBgContainer, {\n  color: token.colorErrorHover,\n  borderColor: token.colorErrorBorderHover\n}, {\n  color: token.colorErrorActive,\n  borderColor: token.colorErrorActive\n})), genDashedButtonStyle(token)), genFilledButtonStyle(token, token.colorErrorBg, {\n  background: token.colorErrorBgFilledHover\n}, {\n  background: token.colorErrorBgActive\n})), genTextLinkButtonStyle(token, token.colorError, 'text', {\n  color: token.colorErrorHover,\n  background: token.colorErrorBg\n}, {\n  color: token.colorErrorHover,\n  background: token.colorErrorBgActive\n})), genTextLinkButtonStyle(token, token.colorError, 'link', {\n  color: token.colorErrorHover\n}, {\n  color: token.colorErrorActive\n})), genGhostButtonStyle(token.componentCls, token.ghostBg, token.colorError, token.colorError, token.colorTextDisabled, token.colorBorder, {\n  color: token.colorErrorHover,\n  borderColor: token.colorErrorHover\n}, {\n  color: token.colorErrorActive,\n  borderColor: token.colorErrorActive\n}));\nconst genLinkStyle = token => Object.assign(Object.assign({}, genTextLinkButtonStyle(token, token.colorLink, 'link', {\n  color: token.colorLinkHover\n}, {\n  color: token.colorLinkActive\n})), genGhostButtonStyle(token.componentCls, token.ghostBg, token.colorInfo, token.colorInfo, token.colorTextDisabled, token.colorBorder, {\n  color: token.colorInfoHover,\n  borderColor: token.colorInfoHover\n}, {\n  color: token.colorInfoActive,\n  borderColor: token.colorInfoActive\n}));\nconst genColorButtonStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return Object.assign({\n    [`${componentCls}-color-default`]: genDefaultButtonStyle(token),\n    [`${componentCls}-color-primary`]: genPrimaryButtonStyle(token),\n    [`${componentCls}-color-dangerous`]: genDangerousStyle(token),\n    [`${componentCls}-color-link`]: genLinkStyle(token)\n  }, genPresetColorStyle(token));\n};\n// =========== Compatible with versions earlier than 5.21.0 ===========\nconst genCompatibleButtonStyle = token => Object.assign(Object.assign(Object.assign(Object.assign({}, genOutlinedDashedButtonStyle(token, token.defaultBorderColor, token.defaultBg, {\n  color: token.defaultHoverColor,\n  borderColor: token.defaultHoverBorderColor,\n  background: token.defaultHoverBg\n}, {\n  color: token.defaultActiveColor,\n  borderColor: token.defaultActiveBorderColor,\n  background: token.defaultActiveBg\n})), genTextLinkButtonStyle(token, token.textTextColor, 'text', {\n  color: token.textTextHoverColor,\n  background: token.textHoverBg\n}, {\n  color: token.textTextActiveColor,\n  background: token.colorBgTextActive\n})), genSolidButtonStyle(token, token.primaryColor, token.colorPrimary, {\n  background: token.colorPrimaryHover,\n  color: token.primaryColor\n}, {\n  background: token.colorPrimaryActive,\n  color: token.primaryColor\n})), genTextLinkButtonStyle(token, token.colorLink, 'link', {\n  color: token.colorLinkHover,\n  background: token.linkHoverBg\n}, {\n  color: token.colorLinkActive\n}));\n// =============================== Size ===============================\nconst genButtonStyle = (token, prefixCls = '') => {\n  const {\n    componentCls,\n    controlHeight,\n    fontSize,\n    borderRadius,\n    buttonPaddingHorizontal,\n    iconCls,\n    buttonPaddingVertical,\n    buttonIconOnlyFontSize\n  } = token;\n  return [{\n    [prefixCls]: {\n      fontSize,\n      height: controlHeight,\n      padding: `${unit(buttonPaddingVertical)} ${unit(buttonPaddingHorizontal)}`,\n      borderRadius,\n      [`&${componentCls}-icon-only`]: {\n        width: controlHeight,\n        [iconCls]: {\n          fontSize: buttonIconOnlyFontSize\n        }\n      }\n    }\n  },\n  // Shape - patch prefixCls again to override solid border radius style\n  {\n    [`${componentCls}${componentCls}-circle${prefixCls}`]: genCircleButtonStyle(token)\n  }, {\n    [`${componentCls}${componentCls}-round${prefixCls}`]: genRoundButtonStyle(token)\n  }];\n};\nconst genSizeBaseButtonStyle = token => {\n  const baseToken = mergeToken(token, {\n    fontSize: token.contentFontSize\n  });\n  return genButtonStyle(baseToken, token.componentCls);\n};\nconst genSizeSmallButtonStyle = token => {\n  const smallToken = mergeToken(token, {\n    controlHeight: token.controlHeightSM,\n    fontSize: token.contentFontSizeSM,\n    padding: token.paddingXS,\n    buttonPaddingHorizontal: token.paddingInlineSM,\n    buttonPaddingVertical: 0,\n    borderRadius: token.borderRadiusSM,\n    buttonIconOnlyFontSize: token.onlyIconSizeSM\n  });\n  return genButtonStyle(smallToken, `${token.componentCls}-sm`);\n};\nconst genSizeLargeButtonStyle = token => {\n  const largeToken = mergeToken(token, {\n    controlHeight: token.controlHeightLG,\n    fontSize: token.contentFontSizeLG,\n    buttonPaddingHorizontal: token.paddingInlineLG,\n    buttonPaddingVertical: 0,\n    borderRadius: token.borderRadiusLG,\n    buttonIconOnlyFontSize: token.onlyIconSizeLG\n  });\n  return genButtonStyle(largeToken, `${token.componentCls}-lg`);\n};\nconst genBlockButtonStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    [componentCls]: {\n      [`&${componentCls}-block`]: {\n        width: '100%'\n      }\n    }\n  };\n};\n// ============================== Export ==============================\nexport default genStyleHooks('Button', token => {\n  const buttonToken = prepareToken(token);\n  return [\n  // Shared\n  genSharedButtonStyle(buttonToken),\n  // Size\n  genSizeBaseButtonStyle(buttonToken), genSizeSmallButtonStyle(buttonToken), genSizeLargeButtonStyle(buttonToken),\n  // Block\n  genBlockButtonStyle(buttonToken),\n  // Color\n  genColorButtonStyle(buttonToken),\n  // https://github.com/ant-design/ant-design/issues/50969\n  genCompatibleButtonStyle(buttonToken),\n  // Button Group\n  genGroupStyle(buttonToken)];\n}, prepareComponentToken, {\n  unitless: {\n    fontWeight: true,\n    contentLineHeight: true,\n    contentLineHeightSM: true,\n    contentLineHeightLG: true\n  }\n});","// handle border collapse\nfunction compactItemBorder(token, parentCls, options) {\n  const {\n    focusElCls,\n    focus,\n    borderElCls\n  } = options;\n  const childCombinator = borderElCls ? '> *' : '';\n  const hoverEffects = ['hover', focus ? 'focus' : null, 'active'].filter(Boolean).map(n => `&:${n} ${childCombinator}`).join(',');\n  return {\n    [`&-item:not(${parentCls}-last-item)`]: {\n      marginInlineEnd: token.calc(token.lineWidth).mul(-1).equal()\n    },\n    '&-item': Object.assign(Object.assign({\n      [hoverEffects]: {\n        zIndex: 2\n      }\n    }, focusElCls ? {\n      [`&${focusElCls}`]: {\n        zIndex: 2\n      }\n    } : {}), {\n      [`&[disabled] ${childCombinator}`]: {\n        zIndex: 0\n      }\n    })\n  };\n}\n// handle border-radius\nfunction compactItemBorderRadius(prefixCls, parentCls, options) {\n  const {\n    borderElCls\n  } = options;\n  const childCombinator = borderElCls ? `> ${borderElCls}` : '';\n  return {\n    [`&-item:not(${parentCls}-first-item):not(${parentCls}-last-item) ${childCombinator}`]: {\n      borderRadius: 0\n    },\n    [`&-item:not(${parentCls}-last-item)${parentCls}-first-item`]: {\n      [`& ${childCombinator}, &${prefixCls}-sm ${childCombinator}, &${prefixCls}-lg ${childCombinator}`]: {\n        borderStartEndRadius: 0,\n        borderEndEndRadius: 0\n      }\n    },\n    [`&-item:not(${parentCls}-first-item)${parentCls}-last-item`]: {\n      [`& ${childCombinator}, &${prefixCls}-sm ${childCombinator}, &${prefixCls}-lg ${childCombinator}`]: {\n        borderStartStartRadius: 0,\n        borderEndStartRadius: 0\n      }\n    }\n  };\n}\nexport function genCompactItemStyle(token, options = {\n  focus: true\n}) {\n  const {\n    componentCls\n  } = token;\n  const compactCls = `${componentCls}-compact`;\n  return {\n    [compactCls]: Object.assign(Object.assign({}, compactItemBorder(token, compactCls, options)), compactItemBorderRadius(componentCls, compactCls, options))\n  };\n}","function compactItemVerticalBorder(token, parentCls) {\n  return {\n    // border collapse\n    [`&-item:not(${parentCls}-last-item)`]: {\n      marginBottom: token.calc(token.lineWidth).mul(-1).equal()\n    },\n    '&-item': {\n      '&:hover,&:focus,&:active': {\n        zIndex: 2\n      },\n      '&[disabled]': {\n        zIndex: 0\n      }\n    }\n  };\n}\nfunction compactItemBorderVerticalRadius(prefixCls, parentCls) {\n  return {\n    [`&-item:not(${parentCls}-first-item):not(${parentCls}-last-item)`]: {\n      borderRadius: 0\n    },\n    [`&-item${parentCls}-first-item:not(${parentCls}-last-item)`]: {\n      [`&, &${prefixCls}-sm, &${prefixCls}-lg`]: {\n        borderEndEndRadius: 0,\n        borderEndStartRadius: 0\n      }\n    },\n    [`&-item${parentCls}-last-item:not(${parentCls}-first-item)`]: {\n      [`&, &${prefixCls}-sm, &${prefixCls}-lg`]: {\n        borderStartStartRadius: 0,\n        borderStartEndRadius: 0\n      }\n    }\n  };\n}\nexport function genCompactItemVerticalStyle(token) {\n  const compactCls = `${token.componentCls}-compact-vertical`;\n  return {\n    [compactCls]: Object.assign(Object.assign({}, compactItemVerticalBorder(token, compactCls)), compactItemBorderVerticalRadius(token.componentCls, compactCls))\n  };\n}","import { genCompactItemStyle } from '../../style/compact-item';\nimport { genCompactItemVerticalStyle } from '../../style/compact-item-vertical';\nimport { genSubStyleComponent } from '../../theme/internal';\nimport { prepareComponentToken, prepareToken } from './token';\nconst genButtonCompactStyle = token => {\n  const {\n    componentCls,\n    colorPrimaryHover,\n    lineWidth,\n    calc\n  } = token;\n  const insetOffset = calc(lineWidth).mul(-1).equal();\n  const getCompactBorderStyle = vertical => {\n    const selector = `${componentCls}-compact${vertical ? '-vertical' : ''}-item${componentCls}-primary:not([disabled])`;\n    return {\n      [`${selector} + ${selector}::before`]: {\n        position: 'absolute',\n        top: vertical ? insetOffset : 0,\n        insetInlineStart: vertical ? 0 : insetOffset,\n        backgroundColor: colorPrimaryHover,\n        content: '\"\"',\n        width: vertical ? '100%' : lineWidth,\n        height: vertical ? lineWidth : '100%'\n      }\n    };\n  };\n  // Special styles for Primary Button\n  return Object.assign(Object.assign({}, getCompactBorderStyle()), getCompactBorderStyle(true));\n};\n// ============================== Export ==============================\nexport default genSubStyleComponent(['Button', 'compact'], token => {\n  const buttonToken = prepareToken(token);\n  return [\n  // Space Compact\n  genCompactItemStyle(buttonToken), genCompactItemVerticalStyle(buttonToken), genButtonCompactStyle(buttonToken)];\n}, prepareComponentToken);","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport React, { Children, useContext, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport { useComposeRef } from \"rc-util/es/ref\";\nimport { devUseWarning } from '../_util/warning';\nimport Wave from '../_util/wave';\nimport { ConfigContext, useComponentConfig } from '../config-provider/context';\nimport DisabledContext from '../config-provider/DisabledContext';\nimport useSize from '../config-provider/hooks/useSize';\nimport { useCompactItemContext } from '../space/Compact';\nimport Group, { GroupSizeContext } from './button-group';\nimport { isTwoCNChar, isUnBorderedButtonVariant, spaceChildren } from './buttonHelpers';\nimport DefaultLoadingIcon from './DefaultLoadingIcon';\nimport IconWrapper from './IconWrapper';\nimport useStyle from './style';\nimport Compact from './style/compact';\nfunction getLoadingConfig(loading) {\n  if (typeof loading === 'object' && loading) {\n    let delay = loading === null || loading === void 0 ? void 0 : loading.delay;\n    delay = !Number.isNaN(delay) && typeof delay === 'number' ? delay : 0;\n    return {\n      loading: delay <= 0,\n      delay\n    };\n  }\n  return {\n    loading: !!loading,\n    delay: 0\n  };\n}\nconst ButtonTypeMap = {\n  default: ['default', 'outlined'],\n  primary: ['primary', 'solid'],\n  dashed: ['default', 'dashed'],\n  // `link` is not a real color but we should compatible with it\n  link: ['link', 'link'],\n  text: ['default', 'text']\n};\nconst InternalCompoundedButton = /*#__PURE__*/React.forwardRef((props, ref) => {\n  var _a, _b;\n  const {\n      loading = false,\n      prefixCls: customizePrefixCls,\n      color,\n      variant,\n      type,\n      danger = false,\n      shape = 'default',\n      size: customizeSize,\n      styles,\n      disabled: customDisabled,\n      className,\n      rootClassName,\n      children,\n      icon,\n      iconPosition = 'start',\n      ghost = false,\n      block = false,\n      // React does not recognize the `htmlType` prop on a DOM element. Here we pick it out of `rest`.\n      htmlType = 'button',\n      classNames: customClassNames,\n      style: customStyle = {},\n      autoInsertSpace,\n      autoFocus\n    } = props,\n    rest = __rest(props, [\"loading\", \"prefixCls\", \"color\", \"variant\", \"type\", \"danger\", \"shape\", \"size\", \"styles\", \"disabled\", \"className\", \"rootClassName\", \"children\", \"icon\", \"iconPosition\", \"ghost\", \"block\", \"htmlType\", \"classNames\", \"style\", \"autoInsertSpace\", \"autoFocus\"]);\n  // https://github.com/ant-design/ant-design/issues/47605\n  // Compatible with original `type` behavior\n  const mergedType = type || 'default';\n  const {\n    button\n  } = React.useContext(ConfigContext);\n  const [mergedColor, mergedVariant] = useMemo(() => {\n    // >>>>> Local\n    // Color & Variant\n    if (color && variant) {\n      return [color, variant];\n    }\n    // Sugar syntax\n    if (type || danger) {\n      const colorVariantPair = ButtonTypeMap[mergedType] || [];\n      if (danger) {\n        return ['danger', colorVariantPair[1]];\n      }\n      return colorVariantPair;\n    }\n    // >>> Context fallback\n    if ((button === null || button === void 0 ? void 0 : button.color) && (button === null || button === void 0 ? void 0 : button.variant)) {\n      return [button.color, button.variant];\n    }\n    return ['default', 'outlined'];\n  }, [type, color, variant, danger, button === null || button === void 0 ? void 0 : button.variant, button === null || button === void 0 ? void 0 : button.color]);\n  const isDanger = mergedColor === 'danger';\n  const mergedColorText = isDanger ? 'dangerous' : mergedColor;\n  const {\n    getPrefixCls,\n    direction,\n    autoInsertSpace: contextAutoInsertSpace,\n    className: contextClassName,\n    style: contextStyle,\n    classNames: contextClassNames,\n    styles: contextStyles\n  } = useComponentConfig('button');\n  const mergedInsertSpace = (_a = autoInsertSpace !== null && autoInsertSpace !== void 0 ? autoInsertSpace : contextAutoInsertSpace) !== null && _a !== void 0 ? _a : true;\n  const prefixCls = getPrefixCls('btn', customizePrefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  const disabled = useContext(DisabledContext);\n  const mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;\n  const groupSize = useContext(GroupSizeContext);\n  const loadingOrDelay = useMemo(() => getLoadingConfig(loading), [loading]);\n  const [innerLoading, setLoading] = useState(loadingOrDelay.loading);\n  const [hasTwoCNChar, setHasTwoCNChar] = useState(false);\n  const buttonRef = useRef(null);\n  const mergedRef = useComposeRef(ref, buttonRef);\n  const needInserted = Children.count(children) === 1 && !icon && !isUnBorderedButtonVariant(mergedVariant);\n  // ========================= Mount ==========================\n  // Record for mount status.\n  // This will help to no to show the animation of loading on the first mount.\n  const isMountRef = useRef(true);\n  React.useEffect(() => {\n    isMountRef.current = false;\n    return () => {\n      isMountRef.current = true;\n    };\n  }, []);\n  // ========================= Effect =========================\n  // Loading. Should use `useLayoutEffect` to avoid low perf multiple click issue.\n  // https://github.com/ant-design/ant-design/issues/51325\n  useLayoutEffect(() => {\n    let delayTimer = null;\n    if (loadingOrDelay.delay > 0) {\n      delayTimer = setTimeout(() => {\n        delayTimer = null;\n        setLoading(true);\n      }, loadingOrDelay.delay);\n    } else {\n      setLoading(loadingOrDelay.loading);\n    }\n    function cleanupTimer() {\n      if (delayTimer) {\n        clearTimeout(delayTimer);\n        delayTimer = null;\n      }\n    }\n    return cleanupTimer;\n  }, [loadingOrDelay.delay, loadingOrDelay.loading]);\n  // Two chinese characters check\n  useEffect(() => {\n    // FIXME: for HOC usage like <FormatMessage />\n    if (!buttonRef.current || !mergedInsertSpace) {\n      return;\n    }\n    const buttonText = buttonRef.current.textContent || '';\n    if (needInserted && isTwoCNChar(buttonText)) {\n      if (!hasTwoCNChar) {\n        setHasTwoCNChar(true);\n      }\n    } else if (hasTwoCNChar) {\n      setHasTwoCNChar(false);\n    }\n  });\n  // Auto focus\n  useEffect(() => {\n    if (autoFocus && buttonRef.current) {\n      buttonRef.current.focus();\n    }\n  }, []);\n  // ========================= Events =========================\n  const handleClick = React.useCallback(e => {\n    var _a;\n    // FIXME: https://github.com/ant-design/ant-design/issues/30207\n    if (innerLoading || mergedDisabled) {\n      e.preventDefault();\n      return;\n    }\n    (_a = props.onClick) === null || _a === void 0 ? void 0 : _a.call(props, 'href' in props ? e : e);\n  }, [props.onClick, innerLoading, mergedDisabled]);\n  // ========================== Warn ==========================\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('Button');\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof icon === 'string' && icon.length > 2), 'breaking', `\\`icon\\` is using ReactNode instead of string naming in v4. Please check \\`${icon}\\` at https://ant.design/components/icon`) : void 0;\n    process.env.NODE_ENV !== \"production\" ? warning(!(ghost && isUnBorderedButtonVariant(mergedVariant)), 'usage', \"`link` or `text` button can't be a `ghost` button.\") : void 0;\n  }\n  // ========================== Size ==========================\n  const {\n    compactSize,\n    compactItemClassnames\n  } = useCompactItemContext(prefixCls, direction);\n  const sizeClassNameMap = {\n    large: 'lg',\n    small: 'sm',\n    middle: undefined\n  };\n  const sizeFullName = useSize(ctxSize => {\n    var _a, _b;\n    return (_b = (_a = customizeSize !== null && customizeSize !== void 0 ? customizeSize : compactSize) !== null && _a !== void 0 ? _a : groupSize) !== null && _b !== void 0 ? _b : ctxSize;\n  });\n  const sizeCls = sizeFullName ? (_b = sizeClassNameMap[sizeFullName]) !== null && _b !== void 0 ? _b : '' : '';\n  const iconType = innerLoading ? 'loading' : icon;\n  const linkButtonRestProps = omit(rest, ['navigate']);\n  // ========================= Render =========================\n  const classes = classNames(prefixCls, hashId, cssVarCls, {\n    [`${prefixCls}-${shape}`]: shape !== 'default' && shape,\n    // Compatible with versions earlier than 5.21.0\n    [`${prefixCls}-${mergedType}`]: mergedType,\n    [`${prefixCls}-dangerous`]: danger,\n    [`${prefixCls}-color-${mergedColorText}`]: mergedColorText,\n    [`${prefixCls}-variant-${mergedVariant}`]: mergedVariant,\n    [`${prefixCls}-${sizeCls}`]: sizeCls,\n    [`${prefixCls}-icon-only`]: !children && children !== 0 && !!iconType,\n    [`${prefixCls}-background-ghost`]: ghost && !isUnBorderedButtonVariant(mergedVariant),\n    [`${prefixCls}-loading`]: innerLoading,\n    [`${prefixCls}-two-chinese-chars`]: hasTwoCNChar && mergedInsertSpace && !innerLoading,\n    [`${prefixCls}-block`]: block,\n    [`${prefixCls}-rtl`]: direction === 'rtl',\n    [`${prefixCls}-icon-end`]: iconPosition === 'end'\n  }, compactItemClassnames, className, rootClassName, contextClassName);\n  const fullStyle = Object.assign(Object.assign({}, contextStyle), customStyle);\n  const iconClasses = classNames(customClassNames === null || customClassNames === void 0 ? void 0 : customClassNames.icon, contextClassNames.icon);\n  const iconStyle = Object.assign(Object.assign({}, (styles === null || styles === void 0 ? void 0 : styles.icon) || {}), contextStyles.icon || {});\n  const iconNode = icon && !innerLoading ? (/*#__PURE__*/React.createElement(IconWrapper, {\n    prefixCls: prefixCls,\n    className: iconClasses,\n    style: iconStyle\n  }, icon)) : loading && typeof loading === 'object' && loading.icon ? (/*#__PURE__*/React.createElement(IconWrapper, {\n    prefixCls: prefixCls,\n    className: iconClasses,\n    style: iconStyle\n  }, loading.icon)) : (/*#__PURE__*/React.createElement(DefaultLoadingIcon, {\n    existIcon: !!icon,\n    prefixCls: prefixCls,\n    loading: innerLoading,\n    mount: isMountRef.current\n  }));\n  const kids = children || children === 0 ? spaceChildren(children, needInserted && mergedInsertSpace) : null;\n  if (linkButtonRestProps.href !== undefined) {\n    return wrapCSSVar(/*#__PURE__*/React.createElement(\"a\", Object.assign({}, linkButtonRestProps, {\n      className: classNames(classes, {\n        [`${prefixCls}-disabled`]: mergedDisabled\n      }),\n      href: mergedDisabled ? undefined : linkButtonRestProps.href,\n      style: fullStyle,\n      onClick: handleClick,\n      ref: mergedRef,\n      tabIndex: mergedDisabled ? -1 : 0\n    }), iconNode, kids));\n  }\n  let buttonNode = /*#__PURE__*/React.createElement(\"button\", Object.assign({}, rest, {\n    type: htmlType,\n    className: classes,\n    style: fullStyle,\n    onClick: handleClick,\n    disabled: mergedDisabled,\n    ref: mergedRef\n  }), iconNode, kids, compactItemClassnames && /*#__PURE__*/React.createElement(Compact, {\n    prefixCls: prefixCls\n  }));\n  if (!isUnBorderedButtonVariant(mergedVariant)) {\n    buttonNode = /*#__PURE__*/React.createElement(Wave, {\n      component: \"Button\",\n      disabled: innerLoading\n    }, buttonNode);\n  }\n  return wrapCSSVar(buttonNode);\n});\nconst Button = InternalCompoundedButton;\nButton.Group = Group;\nButton.__ANT_BUTTON = true;\nif (process.env.NODE_ENV !== 'production') {\n  Button.displayName = 'Button';\n}\nexport default Button;","\"use client\";\n\nimport * as React from 'react';\nimport useState from \"rc-util/es/hooks/useState\";\nimport Button from '../button';\nimport { convertLegacyProps } from '../button/buttonHelpers';\nfunction isThenable(thing) {\n  return !!(thing === null || thing === void 0 ? void 0 : thing.then);\n}\nconst ActionButton = props => {\n  const {\n    type,\n    children,\n    prefixCls,\n    buttonProps,\n    close,\n    autoFocus,\n    emitEvent,\n    isSilent,\n    quitOnNullishReturnValue,\n    actionFn\n  } = props;\n  const clickedRef = React.useRef(false);\n  const buttonRef = React.useRef(null);\n  const [loading, setLoading] = useState(false);\n  const onInternalClose = (...args) => {\n    close === null || close === void 0 ? void 0 : close.apply(void 0, args);\n  };\n  React.useEffect(() => {\n    let timeoutId = null;\n    if (autoFocus) {\n      timeoutId = setTimeout(() => {\n        var _a;\n        (_a = buttonRef.current) === null || _a === void 0 ? void 0 : _a.focus({\n          preventScroll: true\n        });\n      });\n    }\n    return () => {\n      if (timeoutId) {\n        clearTimeout(timeoutId);\n      }\n    };\n  }, []);\n  const handlePromiseOnOk = returnValueOfOnOk => {\n    if (!isThenable(returnValueOfOnOk)) {\n      return;\n    }\n    setLoading(true);\n    returnValueOfOnOk.then((...args) => {\n      setLoading(false, true);\n      onInternalClose.apply(void 0, args);\n      clickedRef.current = false;\n    }, e => {\n      // See: https://github.com/ant-design/ant-design/issues/6183\n      setLoading(false, true);\n      clickedRef.current = false;\n      // Do not throw if is `await` mode\n      if (isSilent === null || isSilent === void 0 ? void 0 : isSilent()) {\n        return;\n      }\n      return Promise.reject(e);\n    });\n  };\n  const onClick = e => {\n    if (clickedRef.current) {\n      return;\n    }\n    clickedRef.current = true;\n    if (!actionFn) {\n      onInternalClose();\n      return;\n    }\n    let returnValueOfOnOk;\n    if (emitEvent) {\n      returnValueOfOnOk = actionFn(e);\n      if (quitOnNullishReturnValue && !isThenable(returnValueOfOnOk)) {\n        clickedRef.current = false;\n        onInternalClose(e);\n        return;\n      }\n    } else if (actionFn.length) {\n      returnValueOfOnOk = actionFn(close);\n      // https://github.com/ant-design/ant-design/issues/23358\n      clickedRef.current = false;\n    } else {\n      returnValueOfOnOk = actionFn();\n      if (!isThenable(returnValueOfOnOk)) {\n        onInternalClose();\n        return;\n      }\n    }\n    handlePromiseOnOk(returnValueOfOnOk);\n  };\n  return /*#__PURE__*/React.createElement(Button, Object.assign({}, convertLegacyProps(type), {\n    onClick: onClick,\n    loading: loading,\n    prefixCls: prefixCls\n  }, buttonProps, {\n    ref: buttonRef\n  }), children);\n};\nexport default ActionButton;","import React from 'react';\nexport const ModalContext = /*#__PURE__*/React.createContext({});\nexport const {\n  Provider: ModalContextProvider\n} = ModalContext;","\"use client\";\n\nimport React, { useContext } from 'react';\nimport ActionButton from '../../_util/ActionButton';\nimport { ModalContext } from '../context';\nconst ConfirmCancelBtn = () => {\n  const {\n    autoFocusButton,\n    cancelButtonProps,\n    cancelTextLocale,\n    isSilent,\n    mergedOkCancel,\n    rootPrefixCls,\n    close,\n    onCancel,\n    onConfirm\n  } = useContext(ModalContext);\n  return mergedOkCancel ? (/*#__PURE__*/React.createElement(ActionButton, {\n    isSilent: isSilent,\n    actionFn: onCancel,\n    close: (...args) => {\n      close === null || close === void 0 ? void 0 : close.apply(void 0, args);\n      onConfirm === null || onConfirm === void 0 ? void 0 : onConfirm(false);\n    },\n    autoFocus: autoFocusButton === 'cancel',\n    buttonProps: cancelButtonProps,\n    prefixCls: `${rootPrefixCls}-btn`\n  }, cancelTextLocale)) : null;\n};\nexport default ConfirmCancelBtn;","\"use client\";\n\nimport React, { useContext } from 'react';\nimport ActionButton from '../../_util/ActionButton';\nimport { ModalContext } from '../context';\nconst ConfirmOkBtn = () => {\n  const {\n    autoFocusButton,\n    close,\n    isSilent,\n    okButtonProps,\n    rootPrefixCls,\n    okTextLocale,\n    okType,\n    onConfirm,\n    onOk\n  } = useContext(ModalContext);\n  return /*#__PURE__*/React.createElement(ActionButton, {\n    isSilent: isSilent,\n    type: okType || 'primary',\n    actionFn: onOk,\n    close: (...args) => {\n      close === null || close === void 0 ? void 0 : close.apply(void 0, args);\n      onConfirm === null || onConfirm === void 0 ? void 0 : onConfirm(true);\n    },\n    autoFocus: autoFocusButton === 'ok',\n    buttonProps: okButtonProps,\n    prefixCls: `${rootPrefixCls}-btn`\n  }, okTextLocale);\n};\nexport default ConfirmOkBtn;","import * as React from 'react';\nvar OrderContext = /*#__PURE__*/React.createContext(null);\nexport default OrderContext;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\nimport OrderContext from \"./Context\";\nvar EMPTY_LIST = [];\n\n/**\n * Will add `div` to document. Nest call will keep order\n * @param render Render DOM in document\n */\nexport default function useDom(render, debug) {\n  var _React$useState = React.useState(function () {\n      if (!canUseDom()) {\n        return null;\n      }\n      var defaultEle = document.createElement('div');\n      if (process.env.NODE_ENV !== 'production' && debug) {\n        defaultEle.setAttribute('data-debug', debug);\n      }\n      return defaultEle;\n    }),\n    _React$useState2 = _slicedToArray(_React$useState, 1),\n    ele = _React$useState2[0];\n\n  // ========================== Order ==========================\n  var appendedRef = React.useRef(false);\n  var queueCreate = React.useContext(OrderContext);\n  var _React$useState3 = React.useState(EMPTY_LIST),\n    _React$useState4 = _slicedToArray(_React$useState3, 2),\n    queue = _React$useState4[0],\n    setQueue = _React$useState4[1];\n  var mergedQueueCreate = queueCreate || (appendedRef.current ? undefined : function (appendFn) {\n    setQueue(function (origin) {\n      var newQueue = [appendFn].concat(_toConsumableArray(origin));\n      return newQueue;\n    });\n  });\n\n  // =========================== DOM ===========================\n  function append() {\n    if (!ele.parentElement) {\n      document.body.appendChild(ele);\n    }\n    appendedRef.current = true;\n  }\n  function cleanup() {\n    var _ele$parentElement;\n    (_ele$parentElement = ele.parentElement) === null || _ele$parentElement === void 0 ? void 0 : _ele$parentElement.removeChild(ele);\n    appendedRef.current = false;\n  }\n  useLayoutEffect(function () {\n    if (render) {\n      if (queueCreate) {\n        queueCreate(append);\n      } else {\n        append();\n      }\n    } else {\n      cleanup();\n    }\n    return cleanup;\n  }, [render]);\n  useLayoutEffect(function () {\n    if (queue.length) {\n      queue.forEach(function (appendFn) {\n        return appendFn();\n      });\n      setQueue(EMPTY_LIST);\n    }\n  }, [queue]);\n  return [ele, mergedQueueCreate];\n}","/* eslint-disable no-param-reassign */\nimport { removeCSS, updateCSS } from \"./Dom/dynamicCSS\";\nvar cached;\nfunction measureScrollbarSize(ele) {\n  var randomId = \"rc-scrollbar-measure-\".concat(Math.random().toString(36).substring(7));\n  var measureEle = document.createElement('div');\n  measureEle.id = randomId;\n\n  // Create Style\n  var measureStyle = measureEle.style;\n  measureStyle.position = 'absolute';\n  measureStyle.left = '0';\n  measureStyle.top = '0';\n  measureStyle.width = '100px';\n  measureStyle.height = '100px';\n  measureStyle.overflow = 'scroll';\n\n  // Clone Style if needed\n  var fallbackWidth;\n  var fallbackHeight;\n  if (ele) {\n    var targetStyle = getComputedStyle(ele);\n    measureStyle.scrollbarColor = targetStyle.scrollbarColor;\n    measureStyle.scrollbarWidth = targetStyle.scrollbarWidth;\n\n    // Set Webkit style\n    var webkitScrollbarStyle = getComputedStyle(ele, '::-webkit-scrollbar');\n    var width = parseInt(webkitScrollbarStyle.width, 10);\n    var height = parseInt(webkitScrollbarStyle.height, 10);\n\n    // Try wrap to handle CSP case\n    try {\n      var widthStyle = width ? \"width: \".concat(webkitScrollbarStyle.width, \";\") : '';\n      var heightStyle = height ? \"height: \".concat(webkitScrollbarStyle.height, \";\") : '';\n      updateCSS(\"\\n#\".concat(randomId, \"::-webkit-scrollbar {\\n\").concat(widthStyle, \"\\n\").concat(heightStyle, \"\\n}\"), randomId);\n    } catch (e) {\n      // Can't wrap, just log error\n      console.error(e);\n\n      // Get from style directly\n      fallbackWidth = width;\n      fallbackHeight = height;\n    }\n  }\n  document.body.appendChild(measureEle);\n\n  // Measure. Get fallback style if provided\n  var scrollWidth = ele && fallbackWidth && !isNaN(fallbackWidth) ? fallbackWidth : measureEle.offsetWidth - measureEle.clientWidth;\n  var scrollHeight = ele && fallbackHeight && !isNaN(fallbackHeight) ? fallbackHeight : measureEle.offsetHeight - measureEle.clientHeight;\n\n  // Clean up\n  document.body.removeChild(measureEle);\n  removeCSS(randomId);\n  return {\n    width: scrollWidth,\n    height: scrollHeight\n  };\n}\nexport default function getScrollBarSize(fresh) {\n  if (typeof document === 'undefined') {\n    return 0;\n  }\n  if (fresh || cached === undefined) {\n    cached = measureScrollbarSize();\n  }\n  return cached.width;\n}\nexport function getTargetScrollBarSize(target) {\n  if (typeof document === 'undefined' || !target || !(target instanceof Element)) {\n    return {\n      width: 0,\n      height: 0\n    };\n  }\n  return measureScrollbarSize(target);\n}","/**\n * Test usage export. Do not use in your production\n */\nexport function isBodyOverflowing() {\n  return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight) && window.innerWidth > document.body.offsetWidth;\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { updateCSS, removeCSS } from \"rc-util/es/Dom/dynamicCSS\";\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport { getTargetScrollBarSize } from \"rc-util/es/getScrollBarSize\";\nimport { isBodyOverflowing } from \"./util\";\nvar UNIQUE_ID = \"rc-util-locker-\".concat(Date.now());\nvar uuid = 0;\nexport default function useScrollLocker(lock) {\n  var mergedLock = !!lock;\n  var _React$useState = React.useState(function () {\n      uuid += 1;\n      return \"\".concat(UNIQUE_ID, \"_\").concat(uuid);\n    }),\n    _React$useState2 = _slicedToArray(_React$useState, 1),\n    id = _React$useState2[0];\n  useLayoutEffect(function () {\n    if (mergedLock) {\n      var scrollbarSize = getTargetScrollBarSize(document.body).width;\n      var isOverflow = isBodyOverflowing();\n      updateCSS(\"\\nhtml body {\\n  overflow-y: hidden;\\n  \".concat(isOverflow ? \"width: calc(100% - \".concat(scrollbarSize, \"px);\") : '', \"\\n}\"), id);\n    } else {\n      removeCSS(id);\n    }\n    return function () {\n      removeCSS(id);\n    };\n  }, [mergedLock, id]);\n}","export var inline = false;\nexport function inlineMock(nextInline) {\n  if (typeof nextInline === 'boolean') {\n    inline = nextInline;\n  }\n  return inline;\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\nimport warning from \"rc-util/es/warning\";\nimport { supportRef, useComposeRef } from \"rc-util/es/ref\";\nimport OrderContext from \"./Context\";\nimport useDom from \"./useDom\";\nimport useScrollLocker from \"./useScrollLocker\";\nimport { inlineMock } from \"./mock\";\nvar getPortalContainer = function getPortalContainer(getContainer) {\n  if (getContainer === false) {\n    return false;\n  }\n  if (!canUseDom() || !getContainer) {\n    return null;\n  }\n  if (typeof getContainer === 'string') {\n    return document.querySelector(getContainer);\n  }\n  if (typeof getContainer === 'function') {\n    return getContainer();\n  }\n  return getContainer;\n};\nvar Portal = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var open = props.open,\n    autoLock = props.autoLock,\n    getContainer = props.getContainer,\n    debug = props.debug,\n    _props$autoDestroy = props.autoDestroy,\n    autoDestroy = _props$autoDestroy === void 0 ? true : _props$autoDestroy,\n    children = props.children;\n  var _React$useState = React.useState(open),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    shouldRender = _React$useState2[0],\n    setShouldRender = _React$useState2[1];\n  var mergedRender = shouldRender || open;\n\n  // ========================= Warning =========================\n  if (process.env.NODE_ENV !== 'production') {\n    warning(canUseDom() || !open, \"Portal only work in client side. Please call 'useEffect' to show Portal instead default render in SSR.\");\n  }\n\n  // ====================== Should Render ======================\n  React.useEffect(function () {\n    if (autoDestroy || open) {\n      setShouldRender(open);\n    }\n  }, [open, autoDestroy]);\n\n  // ======================== Container ========================\n  var _React$useState3 = React.useState(function () {\n      return getPortalContainer(getContainer);\n    }),\n    _React$useState4 = _slicedToArray(_React$useState3, 2),\n    innerContainer = _React$useState4[0],\n    setInnerContainer = _React$useState4[1];\n  React.useEffect(function () {\n    var customizeContainer = getPortalContainer(getContainer);\n\n    // Tell component that we check this in effect which is safe to be `null`\n    setInnerContainer(customizeContainer !== null && customizeContainer !== void 0 ? customizeContainer : null);\n  });\n  var _useDom = useDom(mergedRender && !innerContainer, debug),\n    _useDom2 = _slicedToArray(_useDom, 2),\n    defaultContainer = _useDom2[0],\n    queueCreate = _useDom2[1];\n  var mergedContainer = innerContainer !== null && innerContainer !== void 0 ? innerContainer : defaultContainer;\n\n  // ========================= Locker ==========================\n  useScrollLocker(autoLock && open && canUseDom() && (mergedContainer === defaultContainer || mergedContainer === document.body));\n\n  // =========================== Ref ===========================\n  var childRef = null;\n  if (children && supportRef(children) && ref) {\n    var _ref = children;\n    childRef = _ref.ref;\n  }\n  var mergedRef = useComposeRef(childRef, ref);\n\n  // ========================= Render ==========================\n  // Do not render when nothing need render\n  // When innerContainer is `undefined`, it may not ready since user use ref in the same render\n  if (!mergedRender || !canUseDom() || innerContainer === undefined) {\n    return null;\n  }\n\n  // Render inline\n  var renderInline = mergedContainer === false || inlineMock();\n  var reffedChildren = children;\n  if (ref) {\n    reffedChildren = /*#__PURE__*/React.cloneElement(children, {\n      ref: mergedRef\n    });\n  }\n  return /*#__PURE__*/React.createElement(OrderContext.Provider, {\n    value: queueCreate\n  }, renderInline ? reffedChildren : /*#__PURE__*/createPortal(reffedChildren, mergedContainer));\n});\nif (process.env.NODE_ENV !== 'production') {\n  Portal.displayName = 'Portal';\n}\nexport default Portal;","import * as React from 'react';\nexport var RefContext = /*#__PURE__*/React.createContext({});","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nfunction getUseId() {\n  // We need fully clone React function here to avoid webpack warning React 17 do not export `useId`\n  var fullClone = _objectSpread({}, React);\n  return fullClone.useId;\n}\nvar uuid = 0;\n\n/** @private Note only worked in develop env. Not work in production. */\nexport function resetUuid() {\n  if (process.env.NODE_ENV !== 'production') {\n    uuid = 0;\n  }\n}\nvar useOriginId = getUseId();\nexport default useOriginId ?\n// Use React `useId`\nfunction useId(id) {\n  var reactId = useOriginId();\n\n  // Developer passed id is single source of truth\n  if (id) {\n    return id;\n  }\n\n  // Test env always return mock id\n  if (process.env.NODE_ENV === 'test') {\n    return 'test-id';\n  }\n  return reactId;\n} :\n// Use compatible of `useId`\nfunction useCompatId(id) {\n  // Inner id for accessibility usage. Only work in client side\n  var _React$useState = React.useState('ssr-id'),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    innerId = _React$useState2[0],\n    setInnerId = _React$useState2[1];\n  React.useEffect(function () {\n    var nextId = uuid;\n    uuid += 1;\n    setInnerId(\"rc_unique_\".concat(nextId));\n  }, []);\n\n  // Developer passed id is single source of truth\n  if (id) {\n    return id;\n  }\n\n  // Test env always return mock id\n  if (process.env.NODE_ENV === 'test') {\n    return 'test-id';\n  }\n\n  // Return react native id or inner id\n  return innerId;\n};","// =============================== Motion ===============================\nexport function getMotionName(prefixCls, transitionName, animationName) {\n  var motionName = transitionName;\n  if (!motionName && animationName) {\n    motionName = \"\".concat(prefixCls, \"-\").concat(animationName);\n  }\n  return motionName;\n}\n\n// =============================== Offset ===============================\nfunction getScroll(w, top) {\n  var ret = w[\"page\".concat(top ? 'Y' : 'X', \"Offset\")];\n  var method = \"scroll\".concat(top ? 'Top' : 'Left');\n  if (typeof ret !== 'number') {\n    var d = w.document;\n    ret = d.documentElement[method];\n    if (typeof ret !== 'number') {\n      ret = d.body[method];\n    }\n  }\n  return ret;\n}\nexport function offset(el) {\n  var rect = el.getBoundingClientRect();\n  var pos = {\n    left: rect.left,\n    top: rect.top\n  };\n  var doc = el.ownerDocument;\n  var w = doc.defaultView || doc.parentWindow;\n  pos.left += getScroll(w);\n  pos.top += getScroll(w, true);\n  return pos;\n}","import * as React from 'react';\nexport default /*#__PURE__*/React.memo(function (_ref) {\n  var children = _ref.children;\n  return children;\n}, function (_, _ref2) {\n  var shouldUpdate = _ref2.shouldUpdate;\n  return !shouldUpdate;\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport classNames from 'classnames';\nimport { useComposeRef } from \"rc-util/es/ref\";\nimport React, { useMemo, useRef } from 'react';\nimport { RefContext } from \"../../context\";\nimport MemoChildren from \"./MemoChildren\";\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nvar sentinelStyle = {\n  width: 0,\n  height: 0,\n  overflow: 'hidden',\n  outline: 'none'\n};\nvar entityStyle = {\n  outline: 'none'\n};\nvar Panel = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var prefixCls = props.prefixCls,\n    className = props.className,\n    style = props.style,\n    title = props.title,\n    ariaId = props.ariaId,\n    footer = props.footer,\n    closable = props.closable,\n    closeIcon = props.closeIcon,\n    onClose = props.onClose,\n    children = props.children,\n    bodyStyle = props.bodyStyle,\n    bodyProps = props.bodyProps,\n    modalRender = props.modalRender,\n    onMouseDown = props.onMouseDown,\n    onMouseUp = props.onMouseUp,\n    holderRef = props.holderRef,\n    visible = props.visible,\n    forceRender = props.forceRender,\n    width = props.width,\n    height = props.height,\n    modalClassNames = props.classNames,\n    modalStyles = props.styles;\n\n  // ================================= Refs =================================\n  var _React$useContext = React.useContext(RefContext),\n    panelRef = _React$useContext.panel;\n  var mergedRef = useComposeRef(holderRef, panelRef);\n  var sentinelStartRef = useRef();\n  var sentinelEndRef = useRef();\n  React.useImperativeHandle(ref, function () {\n    return {\n      focus: function focus() {\n        var _sentinelStartRef$cur;\n        (_sentinelStartRef$cur = sentinelStartRef.current) === null || _sentinelStartRef$cur === void 0 || _sentinelStartRef$cur.focus({\n          preventScroll: true\n        });\n      },\n      changeActive: function changeActive(next) {\n        var _document = document,\n          activeElement = _document.activeElement;\n        if (next && activeElement === sentinelEndRef.current) {\n          sentinelStartRef.current.focus({\n            preventScroll: true\n          });\n        } else if (!next && activeElement === sentinelStartRef.current) {\n          sentinelEndRef.current.focus({\n            preventScroll: true\n          });\n        }\n      }\n    };\n  });\n\n  // ================================ Style =================================\n  var contentStyle = {};\n  if (width !== undefined) {\n    contentStyle.width = width;\n  }\n  if (height !== undefined) {\n    contentStyle.height = height;\n  }\n  // ================================ Render ================================\n  var footerNode = footer ? /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(\"\".concat(prefixCls, \"-footer\"), modalClassNames === null || modalClassNames === void 0 ? void 0 : modalClassNames.footer),\n    style: _objectSpread({}, modalStyles === null || modalStyles === void 0 ? void 0 : modalStyles.footer)\n  }, footer) : null;\n  var headerNode = title ? /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(\"\".concat(prefixCls, \"-header\"), modalClassNames === null || modalClassNames === void 0 ? void 0 : modalClassNames.header),\n    style: _objectSpread({}, modalStyles === null || modalStyles === void 0 ? void 0 : modalStyles.header)\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    className: \"\".concat(prefixCls, \"-title\"),\n    id: ariaId\n  }, title)) : null;\n  var closableObj = useMemo(function () {\n    if (_typeof(closable) === 'object' && closable !== null) {\n      return closable;\n    }\n    if (closable) {\n      return {\n        closeIcon: closeIcon !== null && closeIcon !== void 0 ? closeIcon : /*#__PURE__*/React.createElement(\"span\", {\n          className: \"\".concat(prefixCls, \"-close-x\")\n        })\n      };\n    }\n    return {};\n  }, [closable, closeIcon, prefixCls]);\n  var ariaProps = pickAttrs(closableObj, true);\n  var closeBtnIsDisabled = _typeof(closable) === 'object' && closable.disabled;\n  var closerNode = closable ? /*#__PURE__*/React.createElement(\"button\", _extends({\n    type: \"button\",\n    onClick: onClose,\n    \"aria-label\": \"Close\"\n  }, ariaProps, {\n    className: \"\".concat(prefixCls, \"-close\"),\n    disabled: closeBtnIsDisabled\n  }), closableObj.closeIcon) : null;\n  var content = /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(\"\".concat(prefixCls, \"-content\"), modalClassNames === null || modalClassNames === void 0 ? void 0 : modalClassNames.content),\n    style: modalStyles === null || modalStyles === void 0 ? void 0 : modalStyles.content\n  }, closerNode, headerNode, /*#__PURE__*/React.createElement(\"div\", _extends({\n    className: classNames(\"\".concat(prefixCls, \"-body\"), modalClassNames === null || modalClassNames === void 0 ? void 0 : modalClassNames.body),\n    style: _objectSpread(_objectSpread({}, bodyStyle), modalStyles === null || modalStyles === void 0 ? void 0 : modalStyles.body)\n  }, bodyProps), children), footerNode);\n  return /*#__PURE__*/React.createElement(\"div\", {\n    key: \"dialog-element\",\n    role: \"dialog\",\n    \"aria-labelledby\": title ? ariaId : null,\n    \"aria-modal\": \"true\",\n    ref: mergedRef,\n    style: _objectSpread(_objectSpread({}, style), contentStyle),\n    className: classNames(prefixCls, className),\n    onMouseDown: onMouseDown,\n    onMouseUp: onMouseUp\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    ref: sentinelStartRef,\n    tabIndex: 0,\n    style: entityStyle\n  }, /*#__PURE__*/React.createElement(MemoChildren, {\n    shouldUpdate: visible || forceRender\n  }, modalRender ? modalRender(content) : content)), /*#__PURE__*/React.createElement(\"div\", {\n    tabIndex: 0,\n    ref: sentinelEndRef,\n    style: sentinelStyle\n  }));\n});\nif (process.env.NODE_ENV !== 'production') {\n  Panel.displayName = 'Panel';\n}\nexport default Panel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useRef } from 'react';\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport { offset } from \"../../util\";\nimport Panel from \"./Panel\";\nvar Content = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var prefixCls = props.prefixCls,\n    title = props.title,\n    style = props.style,\n    className = props.className,\n    visible = props.visible,\n    forceRender = props.forceRender,\n    destroyOnClose = props.destroyOnClose,\n    motionName = props.motionName,\n    ariaId = props.ariaId,\n    onVisibleChanged = props.onVisibleChanged,\n    mousePosition = props.mousePosition;\n  var dialogRef = useRef();\n\n  // ============================= Style ==============================\n  var _React$useState = React.useState(),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    transformOrigin = _React$useState2[0],\n    setTransformOrigin = _React$useState2[1];\n  var contentStyle = {};\n  if (transformOrigin) {\n    contentStyle.transformOrigin = transformOrigin;\n  }\n  function onPrepare() {\n    var elementOffset = offset(dialogRef.current);\n    setTransformOrigin(mousePosition && (mousePosition.x || mousePosition.y) ? \"\".concat(mousePosition.x - elementOffset.left, \"px \").concat(mousePosition.y - elementOffset.top, \"px\") : '');\n  }\n\n  // ============================= Render =============================\n  return /*#__PURE__*/React.createElement(CSSMotion, {\n    visible: visible,\n    onVisibleChanged: onVisibleChanged,\n    onAppearPrepare: onPrepare,\n    onEnterPrepare: onPrepare,\n    forceRender: forceRender,\n    motionName: motionName,\n    removeOnLeave: destroyOnClose,\n    ref: dialogRef\n  }, function (_ref, motionRef) {\n    var motionClassName = _ref.className,\n      motionStyle = _ref.style;\n    return /*#__PURE__*/React.createElement(Panel, _extends({}, props, {\n      ref: ref,\n      title: title,\n      ariaId: ariaId,\n      prefixCls: prefixCls,\n      holderRef: motionRef,\n      style: _objectSpread(_objectSpread(_objectSpread({}, motionStyle), style), contentStyle),\n      className: classNames(className, motionClassName)\n    }));\n  });\n});\nContent.displayName = 'Content';\nexport default Content;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nvar Mask = function Mask(props) {\n  var prefixCls = props.prefixCls,\n    style = props.style,\n    visible = props.visible,\n    maskProps = props.maskProps,\n    motionName = props.motionName,\n    className = props.className;\n  return /*#__PURE__*/React.createElement(CSSMotion, {\n    key: \"mask\",\n    visible: visible,\n    motionName: motionName,\n    leavedClassName: \"\".concat(prefixCls, \"-mask-hidden\")\n  }, function (_ref, ref) {\n    var motionClassName = _ref.className,\n      motionStyle = _ref.style;\n    return /*#__PURE__*/React.createElement(\"div\", _extends({\n      ref: ref,\n      style: _objectSpread(_objectSpread({}, motionStyle), style),\n      className: classNames(\"\".concat(prefixCls, \"-mask\"), motionClassName, className)\n    }, maskProps));\n  });\n};\nexport default Mask;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport classNames from 'classnames';\nimport contains from \"rc-util/es/Dom/contains\";\nimport useId from \"rc-util/es/hooks/useId\";\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport * as React from 'react';\nimport { useEffect, useRef } from 'react';\nimport { getMotionName } from \"../util\";\nimport Content from \"./Content\";\nimport Mask from \"./Mask\";\nimport { warning } from \"rc-util/es/warning\";\nvar Dialog = function Dialog(props) {\n  var _props$prefixCls = props.prefixCls,\n    prefixCls = _props$prefixCls === void 0 ? 'rc-dialog' : _props$prefixCls,\n    zIndex = props.zIndex,\n    _props$visible = props.visible,\n    visible = _props$visible === void 0 ? false : _props$visible,\n    _props$keyboard = props.keyboard,\n    keyboard = _props$keyboard === void 0 ? true : _props$keyboard,\n    _props$focusTriggerAf = props.focusTriggerAfterClose,\n    focusTriggerAfterClose = _props$focusTriggerAf === void 0 ? true : _props$focusTriggerAf,\n    wrapStyle = props.wrapStyle,\n    wrapClassName = props.wrapClassName,\n    wrapProps = props.wrapProps,\n    onClose = props.onClose,\n    afterOpenChange = props.afterOpenChange,\n    afterClose = props.afterClose,\n    transitionName = props.transitionName,\n    animation = props.animation,\n    _props$closable = props.closable,\n    closable = _props$closable === void 0 ? true : _props$closable,\n    _props$mask = props.mask,\n    mask = _props$mask === void 0 ? true : _props$mask,\n    maskTransitionName = props.maskTransitionName,\n    maskAnimation = props.maskAnimation,\n    _props$maskClosable = props.maskClosable,\n    maskClosable = _props$maskClosable === void 0 ? true : _props$maskClosable,\n    maskStyle = props.maskStyle,\n    maskProps = props.maskProps,\n    rootClassName = props.rootClassName,\n    modalClassNames = props.classNames,\n    modalStyles = props.styles;\n  if (process.env.NODE_ENV !== 'production') {\n    ['wrapStyle', 'bodyStyle', 'maskStyle'].forEach(function (prop) {\n      // (prop in props) && console.error(`Warning: ${prop} is deprecated, please use styles instead.`)\n      warning(!(prop in props), \"\".concat(prop, \" is deprecated, please use styles instead.\"));\n    });\n    if ('wrapClassName' in props) {\n      warning(false, \"wrapClassName is deprecated, please use classNames instead.\");\n    }\n  }\n  var lastOutSideActiveElementRef = useRef();\n  var wrapperRef = useRef();\n  var contentRef = useRef();\n  var _React$useState = React.useState(visible),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    animatedVisible = _React$useState2[0],\n    setAnimatedVisible = _React$useState2[1];\n\n  // ========================== Init ==========================\n  var ariaId = useId();\n  function saveLastOutSideActiveElementRef() {\n    if (!contains(wrapperRef.current, document.activeElement)) {\n      lastOutSideActiveElementRef.current = document.activeElement;\n    }\n  }\n  function focusDialogContent() {\n    if (!contains(wrapperRef.current, document.activeElement)) {\n      var _contentRef$current;\n      (_contentRef$current = contentRef.current) === null || _contentRef$current === void 0 || _contentRef$current.focus();\n    }\n  }\n\n  // ========================= Events =========================\n  function onDialogVisibleChanged(newVisible) {\n    // Try to focus\n    if (newVisible) {\n      focusDialogContent();\n    } else {\n      // Clean up scroll bar & focus back\n      setAnimatedVisible(false);\n      if (mask && lastOutSideActiveElementRef.current && focusTriggerAfterClose) {\n        try {\n          lastOutSideActiveElementRef.current.focus({\n            preventScroll: true\n          });\n        } catch (e) {\n          // Do nothing\n        }\n        lastOutSideActiveElementRef.current = null;\n      }\n\n      // Trigger afterClose only when change visible from true to false\n      if (animatedVisible) {\n        afterClose === null || afterClose === void 0 || afterClose();\n      }\n    }\n    afterOpenChange === null || afterOpenChange === void 0 || afterOpenChange(newVisible);\n  }\n  function onInternalClose(e) {\n    onClose === null || onClose === void 0 || onClose(e);\n  }\n\n  // >>> Content\n  var contentClickRef = useRef(false);\n  var contentTimeoutRef = useRef();\n\n  // We need record content click incase content popup out of dialog\n  var onContentMouseDown = function onContentMouseDown() {\n    clearTimeout(contentTimeoutRef.current);\n    contentClickRef.current = true;\n  };\n  var onContentMouseUp = function onContentMouseUp() {\n    contentTimeoutRef.current = setTimeout(function () {\n      contentClickRef.current = false;\n    });\n  };\n\n  // >>> Wrapper\n  // Close only when element not on dialog\n  var onWrapperClick = null;\n  if (maskClosable) {\n    onWrapperClick = function onWrapperClick(e) {\n      if (contentClickRef.current) {\n        contentClickRef.current = false;\n      } else if (wrapperRef.current === e.target) {\n        onInternalClose(e);\n      }\n    };\n  }\n  function onWrapperKeyDown(e) {\n    if (keyboard && e.keyCode === KeyCode.ESC) {\n      e.stopPropagation();\n      onInternalClose(e);\n      return;\n    }\n\n    // keep focus inside dialog\n    if (visible && e.keyCode === KeyCode.TAB) {\n      contentRef.current.changeActive(!e.shiftKey);\n    }\n  }\n\n  // ========================= Effect =========================\n  useEffect(function () {\n    if (visible) {\n      setAnimatedVisible(true);\n      saveLastOutSideActiveElementRef();\n    }\n  }, [visible]);\n\n  // Remove direct should also check the scroll bar update\n  useEffect(function () {\n    return function () {\n      clearTimeout(contentTimeoutRef.current);\n    };\n  }, []);\n  var mergedStyle = _objectSpread(_objectSpread(_objectSpread({\n    zIndex: zIndex\n  }, wrapStyle), modalStyles === null || modalStyles === void 0 ? void 0 : modalStyles.wrapper), {}, {\n    display: !animatedVisible ? 'none' : null\n  });\n\n  // ========================= Render =========================\n  return /*#__PURE__*/React.createElement(\"div\", _extends({\n    className: classNames(\"\".concat(prefixCls, \"-root\"), rootClassName)\n  }, pickAttrs(props, {\n    data: true\n  })), /*#__PURE__*/React.createElement(Mask, {\n    prefixCls: prefixCls,\n    visible: mask && visible,\n    motionName: getMotionName(prefixCls, maskTransitionName, maskAnimation),\n    style: _objectSpread(_objectSpread({\n      zIndex: zIndex\n    }, maskStyle), modalStyles === null || modalStyles === void 0 ? void 0 : modalStyles.mask),\n    maskProps: maskProps,\n    className: modalClassNames === null || modalClassNames === void 0 ? void 0 : modalClassNames.mask\n  }), /*#__PURE__*/React.createElement(\"div\", _extends({\n    tabIndex: -1,\n    onKeyDown: onWrapperKeyDown,\n    className: classNames(\"\".concat(prefixCls, \"-wrap\"), wrapClassName, modalClassNames === null || modalClassNames === void 0 ? void 0 : modalClassNames.wrapper),\n    ref: wrapperRef,\n    onClick: onWrapperClick,\n    style: mergedStyle\n  }, wrapProps), /*#__PURE__*/React.createElement(Content, _extends({}, props, {\n    onMouseDown: onContentMouseDown,\n    onMouseUp: onContentMouseUp,\n    ref: contentRef,\n    closable: closable,\n    ariaId: ariaId,\n    prefixCls: prefixCls,\n    visible: visible && animatedVisible,\n    onClose: onInternalClose,\n    onVisibleChanged: onDialogVisibleChanged,\n    motionName: getMotionName(prefixCls, transitionName, animation)\n  }))));\n};\nexport default Dialog;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport Portal from '@rc-component/portal';\nimport * as React from 'react';\nimport { RefContext } from \"./context\";\nimport Dialog from \"./Dialog\";\n// fix issue #10656\n/*\n * getContainer remarks\n * Custom container should not be return, because in the Portal component, it will remove the\n * return container element here, if the custom container is the only child of it's component,\n * like issue #10656, It will has a conflict with removeChild method in react-dom.\n * So here should add a child (div element) to custom container.\n * */\n\nvar DialogWrap = function DialogWrap(props) {\n  var visible = props.visible,\n    getContainer = props.getContainer,\n    forceRender = props.forceRender,\n    _props$destroyOnClose = props.destroyOnClose,\n    destroyOnClose = _props$destroyOnClose === void 0 ? false : _props$destroyOnClose,\n    _afterClose = props.afterClose,\n    panelRef = props.panelRef;\n  var _React$useState = React.useState(visible),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    animatedVisible = _React$useState2[0],\n    setAnimatedVisible = _React$useState2[1];\n  var refContext = React.useMemo(function () {\n    return {\n      panel: panelRef\n    };\n  }, [panelRef]);\n  React.useEffect(function () {\n    if (visible) {\n      setAnimatedVisible(true);\n    }\n  }, [visible]);\n\n  // Destroy on close will remove wrapped div\n  if (!forceRender && destroyOnClose && !animatedVisible) {\n    return null;\n  }\n  return /*#__PURE__*/React.createElement(RefContext.Provider, {\n    value: refContext\n  }, /*#__PURE__*/React.createElement(Portal, {\n    open: visible || forceRender || animatedVisible,\n    autoDestroy: false,\n    getContainer: getContainer,\n    autoLock: visible || animatedVisible\n  }, /*#__PURE__*/React.createElement(Dialog, _extends({}, props, {\n    destroyOnClose: destroyOnClose,\n    afterClose: function afterClose() {\n      _afterClose === null || _afterClose === void 0 || _afterClose();\n      setAnimatedVisible(false);\n    }\n  }))));\n};\nDialogWrap.displayName = 'Dialog';\nexport default DialogWrap;","import warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nexport var HOOK_MARK = 'RC_FORM_INTERNAL_HOOKS';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar warningFunc = function warningFunc() {\n  warning(false, 'Can not find FormContext. Please make sure you wrap Field under Form.');\n};\nvar Context = /*#__PURE__*/React.createContext({\n  getFieldValue: warningFunc,\n  getFieldsValue: warningFunc,\n  getFieldError: warningFunc,\n  getFieldWarning: warningFunc,\n  getFieldsError: warningFunc,\n  isFieldsTouched: warningFunc,\n  isFieldTouched: warningFunc,\n  isFieldValidating: warningFunc,\n  isFieldsValidating: warningFunc,\n  resetFields: warningFunc,\n  setFields: warningFunc,\n  setFieldValue: warningFunc,\n  setFieldsValue: warningFunc,\n  validateFields: warningFunc,\n  submit: warningFunc,\n  getInternalHooks: function getInternalHooks() {\n    warningFunc();\n    return {\n      dispatch: warningFunc,\n      initEntityValue: warningFunc,\n      registerField: warningFunc,\n      useSubscribe: warningFunc,\n      setInitialValues: warningFunc,\n      destroyForm: warningFunc,\n      setCallbacks: warningFunc,\n      registerWatch: warningFunc,\n      getFields: warningFunc,\n      setValidateMessages: warningFunc,\n      setPreserve: warningFunc,\n      getInitialValue: warningFunc\n    };\n  }\n});\nexport default Context;","import * as React from 'react';\nvar ListContext = /*#__PURE__*/React.createContext(null);\nexport default ListContext;","export function toArray(value) {\n  if (value === undefined || value === null) {\n    return [];\n  }\n  return Array.isArray(value) ? value : [value];\n}\nexport function isFormInstance(form) {\n  return form && !!form._init;\n}","export function newMessages() {\n  return {\n    default: 'Validation error on field %s',\n    required: '%s is required',\n    enum: '%s must be one of %s',\n    whitespace: '%s cannot be empty',\n    date: {\n      format: '%s date %s is invalid for format %s',\n      parse: '%s date could not be parsed, %s is invalid ',\n      invalid: '%s date %s is invalid'\n    },\n    types: {\n      string: '%s is not a %s',\n      method: '%s is not a %s (function)',\n      array: '%s is not an %s',\n      object: '%s is not an %s',\n      number: '%s is not a %s',\n      date: '%s is not a %s',\n      boolean: '%s is not a %s',\n      integer: '%s is not an %s',\n      float: '%s is not a %s',\n      regexp: '%s is not a valid %s',\n      email: '%s is not a valid %s',\n      url: '%s is not a valid %s',\n      hex: '%s is not a valid %s'\n    },\n    string: {\n      len: '%s must be exactly %s characters',\n      min: '%s must be at least %s characters',\n      max: '%s cannot be longer than %s characters',\n      range: '%s must be between %s and %s characters'\n    },\n    number: {\n      len: '%s must equal %s',\n      min: '%s cannot be less than %s',\n      max: '%s cannot be greater than %s',\n      range: '%s must be between %s and %s'\n    },\n    array: {\n      len: '%s must be exactly %s in length',\n      min: '%s cannot be less than %s in length',\n      max: '%s cannot be greater than %s in length',\n      range: '%s must be between %s and %s in length'\n    },\n    pattern: {\n      mismatch: '%s value %s does not match pattern %s'\n    },\n    clone: function clone() {\n      var cloned = JSON.parse(JSON.stringify(this));\n      cloned.clone = this.clone;\n      return cloned;\n    }\n  };\n}\nexport var messages = newMessages();","function _isNativeFunction(t) {\n  try {\n    return -1 !== Function.toString.call(t).indexOf(\"[native code]\");\n  } catch (n) {\n    return \"function\" == typeof t;\n  }\n}\nexport { _isNativeFunction as default };","import isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _construct(t, e, r) {\n  if (isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);\n  var o = [null];\n  o.push.apply(o, e);\n  var p = new (t.bind.apply(t, o))();\n  return r && setPrototypeOf(p, r.prototype), p;\n}\nexport { _construct as default };","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nfunction _wrapNativeSuper(t) {\n  var r = \"function\" == typeof Map ? new Map() : void 0;\n  return _wrapNativeSuper = function _wrapNativeSuper(t) {\n    if (null === t || !isNativeFunction(t)) return t;\n    if (\"function\" != typeof t) throw new TypeError(\"Super expression must either be null or a function\");\n    if (void 0 !== r) {\n      if (r.has(t)) return r.get(t);\n      r.set(t, Wrapper);\n    }\n    function Wrapper() {\n      return construct(t, arguments, getPrototypeOf(this).constructor);\n    }\n    return Wrapper.prototype = Object.create(t.prototype, {\n      constructor: {\n        value: Wrapper,\n        enumerable: !1,\n        writable: !0,\n        configurable: !0\n      }\n    }), setPrototypeOf(Wrapper, t);\n  }, _wrapNativeSuper(t);\n}\nexport { _wrapNativeSuper as default };","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _wrapNativeSuper from \"@babel/runtime/helpers/esm/wrapNativeSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\n/* eslint no-console:0 */\n\nvar formatRegExp = /%[sdj%]/g;\nexport var warning = function warning() {};\n\n// don't print warning message when in production env or node runtime\nif (typeof process !== 'undefined' && process.env && process.env.NODE_ENV !== 'production' && typeof window !== 'undefined' && typeof document !== 'undefined') {\n  warning = function warning(type, errors) {\n    if (typeof console !== 'undefined' && console.warn && typeof ASYNC_VALIDATOR_NO_WARNING === 'undefined') {\n      if (errors.every(function (e) {\n        return typeof e === 'string';\n      })) {\n        console.warn(type, errors);\n      }\n    }\n  };\n}\nexport function convertFieldsError(errors) {\n  if (!errors || !errors.length) return null;\n  var fields = {};\n  errors.forEach(function (error) {\n    var field = error.field;\n    fields[field] = fields[field] || [];\n    fields[field].push(error);\n  });\n  return fields;\n}\nexport function format(template) {\n  for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    args[_key - 1] = arguments[_key];\n  }\n  var i = 0;\n  var len = args.length;\n  if (typeof template === 'function') {\n    // eslint-disable-next-line prefer-spread\n    return template.apply(null, args);\n  }\n  if (typeof template === 'string') {\n    var str = template.replace(formatRegExp, function (x) {\n      if (x === '%%') {\n        return '%';\n      }\n      if (i >= len) {\n        return x;\n      }\n      switch (x) {\n        case '%s':\n          return String(args[i++]);\n        case '%d':\n          return Number(args[i++]);\n        case '%j':\n          try {\n            return JSON.stringify(args[i++]);\n          } catch (_) {\n            return '[Circular]';\n          }\n          break;\n        default:\n          return x;\n      }\n    });\n    return str;\n  }\n  return template;\n}\nfunction isNativeStringType(type) {\n  return type === 'string' || type === 'url' || type === 'hex' || type === 'email' || type === 'date' || type === 'pattern';\n}\nexport function isEmptyValue(value, type) {\n  if (value === undefined || value === null) {\n    return true;\n  }\n  if (type === 'array' && Array.isArray(value) && !value.length) {\n    return true;\n  }\n  if (isNativeStringType(type) && typeof value === 'string' && !value) {\n    return true;\n  }\n  return false;\n}\nexport function isEmptyObject(obj) {\n  return Object.keys(obj).length === 0;\n}\nfunction asyncParallelArray(arr, func, callback) {\n  var results = [];\n  var total = 0;\n  var arrLength = arr.length;\n  function count(errors) {\n    results.push.apply(results, _toConsumableArray(errors || []));\n    total++;\n    if (total === arrLength) {\n      callback(results);\n    }\n  }\n  arr.forEach(function (a) {\n    func(a, count);\n  });\n}\nfunction asyncSerialArray(arr, func, callback) {\n  var index = 0;\n  var arrLength = arr.length;\n  function next(errors) {\n    if (errors && errors.length) {\n      callback(errors);\n      return;\n    }\n    var original = index;\n    index = index + 1;\n    if (original < arrLength) {\n      func(arr[original], next);\n    } else {\n      callback([]);\n    }\n  }\n  next([]);\n}\nfunction flattenObjArr(objArr) {\n  var ret = [];\n  Object.keys(objArr).forEach(function (k) {\n    ret.push.apply(ret, _toConsumableArray(objArr[k] || []));\n  });\n  return ret;\n}\nexport var AsyncValidationError = /*#__PURE__*/function (_Error) {\n  _inherits(AsyncValidationError, _Error);\n  var _super = _createSuper(AsyncValidationError);\n  function AsyncValidationError(errors, fields) {\n    var _this;\n    _classCallCheck(this, AsyncValidationError);\n    _this = _super.call(this, 'Async Validation Error');\n    _defineProperty(_assertThisInitialized(_this), \"errors\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"fields\", void 0);\n    _this.errors = errors;\n    _this.fields = fields;\n    return _this;\n  }\n  return _createClass(AsyncValidationError);\n}( /*#__PURE__*/_wrapNativeSuper(Error));\nexport function asyncMap(objArr, option, func, callback, source) {\n  if (option.first) {\n    var _pending = new Promise(function (resolve, reject) {\n      var next = function next(errors) {\n        callback(errors);\n        return errors.length ? reject(new AsyncValidationError(errors, convertFieldsError(errors))) : resolve(source);\n      };\n      var flattenArr = flattenObjArr(objArr);\n      asyncSerialArray(flattenArr, func, next);\n    });\n    _pending.catch(function (e) {\n      return e;\n    });\n    return _pending;\n  }\n  var firstFields = option.firstFields === true ? Object.keys(objArr) : option.firstFields || [];\n  var objArrKeys = Object.keys(objArr);\n  var objArrLength = objArrKeys.length;\n  var total = 0;\n  var results = [];\n  var pending = new Promise(function (resolve, reject) {\n    var next = function next(errors) {\n      // eslint-disable-next-line prefer-spread\n      results.push.apply(results, errors);\n      total++;\n      if (total === objArrLength) {\n        callback(results);\n        return results.length ? reject(new AsyncValidationError(results, convertFieldsError(results))) : resolve(source);\n      }\n    };\n    if (!objArrKeys.length) {\n      callback(results);\n      resolve(source);\n    }\n    objArrKeys.forEach(function (key) {\n      var arr = objArr[key];\n      if (firstFields.indexOf(key) !== -1) {\n        asyncSerialArray(arr, func, next);\n      } else {\n        asyncParallelArray(arr, func, next);\n      }\n    });\n  });\n  pending.catch(function (e) {\n    return e;\n  });\n  return pending;\n}\nfunction isErrorObj(obj) {\n  return !!(obj && obj.message !== undefined);\n}\nfunction getValue(value, path) {\n  var v = value;\n  for (var i = 0; i < path.length; i++) {\n    if (v == undefined) {\n      return v;\n    }\n    v = v[path[i]];\n  }\n  return v;\n}\nexport function complementError(rule, source) {\n  return function (oe) {\n    var fieldValue;\n    if (rule.fullFields) {\n      fieldValue = getValue(source, rule.fullFields);\n    } else {\n      fieldValue = source[oe.field || rule.fullField];\n    }\n    if (isErrorObj(oe)) {\n      oe.field = oe.field || rule.fullField;\n      oe.fieldValue = fieldValue;\n      return oe;\n    }\n    return {\n      message: typeof oe === 'function' ? oe() : oe,\n      fieldValue: fieldValue,\n      field: oe.field || rule.fullField\n    };\n  };\n}\nexport function deepMerge(target, source) {\n  if (source) {\n    for (var s in source) {\n      if (source.hasOwnProperty(s)) {\n        var value = source[s];\n        if (_typeof(value) === 'object' && _typeof(target[s]) === 'object') {\n          target[s] = _objectSpread(_objectSpread({}, target[s]), value);\n        } else {\n          target[s] = value;\n        }\n      }\n    }\n  }\n  return target;\n}","import { format } from \"../util\";\nvar ENUM = 'enum';\nvar enumerable = function enumerable(rule, value, source, errors, options) {\n  rule[ENUM] = Array.isArray(rule[ENUM]) ? rule[ENUM] : [];\n  if (rule[ENUM].indexOf(value) === -1) {\n    errors.push(format(options.messages[ENUM], rule.fullField, rule[ENUM].join(', ')));\n  }\n};\nexport default enumerable;","import { format } from \"../util\";\nvar pattern = function pattern(rule, value, source, errors, options) {\n  if (rule.pattern) {\n    if (rule.pattern instanceof RegExp) {\n      // if a RegExp instance is passed, reset `lastIndex` in case its `global`\n      // flag is accidentally set to `true`, which in a validation scenario\n      // is not necessary and the result might be misleading\n      rule.pattern.lastIndex = 0;\n      if (!rule.pattern.test(value)) {\n        errors.push(format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern));\n      }\n    } else if (typeof rule.pattern === 'string') {\n      var _pattern = new RegExp(rule.pattern);\n      if (!_pattern.test(value)) {\n        errors.push(format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern));\n      }\n    }\n  }\n};\nexport default pattern;","import { format } from \"../util\";\nvar range = function range(rule, value, source, errors, options) {\n  var len = typeof rule.len === 'number';\n  var min = typeof rule.min === 'number';\n  var max = typeof rule.max === 'number';\n  // 正则匹配码点范围从U+010000一直到U+10FFFF的文字（补充平面Supplementary Plane）\n  var spRegexp = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n  var val = value;\n  var key = null;\n  var num = typeof value === 'number';\n  var str = typeof value === 'string';\n  var arr = Array.isArray(value);\n  if (num) {\n    key = 'number';\n  } else if (str) {\n    key = 'string';\n  } else if (arr) {\n    key = 'array';\n  }\n  // if the value is not of a supported type for range validation\n  // the validation rule rule should use the\n  // type property to also test for a particular type\n  if (!key) {\n    return false;\n  }\n  if (arr) {\n    val = value.length;\n  }\n  if (str) {\n    // 处理码点大于U+010000的文字length属性不准确的bug，如\"𠮷𠮷𠮷\".length !== 3\n    val = value.replace(spRegexp, '_').length;\n  }\n  if (len) {\n    if (val !== rule.len) {\n      errors.push(format(options.messages[key].len, rule.fullField, rule.len));\n    }\n  } else if (min && !max && val < rule.min) {\n    errors.push(format(options.messages[key].min, rule.fullField, rule.min));\n  } else if (max && !min && val > rule.max) {\n    errors.push(format(options.messages[key].max, rule.fullField, rule.max));\n  } else if (min && max && (val < rule.min || val > rule.max)) {\n    errors.push(format(options.messages[key].range, rule.fullField, rule.min, rule.max));\n  }\n};\nexport default range;","import { format, isEmptyValue } from \"../util\";\nvar required = function required(rule, value, source, errors, options, type) {\n  if (rule.required && (!source.hasOwnProperty(rule.field) || isEmptyValue(value, type || rule.type))) {\n    errors.push(format(options.messages.required, rule.fullField));\n  }\n};\nexport default required;","// https://github.com/kevva/url-regex/blob/master/index.js\nvar urlReg;\nexport default (function () {\n  if (urlReg) {\n    return urlReg;\n  }\n  var word = '[a-fA-F\\\\d:]';\n  var b = function b(options) {\n    return options && options.includeBoundaries ? \"(?:(?<=\\\\s|^)(?=\".concat(word, \")|(?<=\").concat(word, \")(?=\\\\s|$))\") : '';\n  };\n  var v4 = '(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}';\n  var v6seg = '[a-fA-F\\\\d]{1,4}';\n  var v6List = [\"(?:\".concat(v6seg, \":){7}(?:\").concat(v6seg, \"|:)\"), // 1:2:3:4:5:6:7::  1:2:3:4:5:6:7:8\n  \"(?:\".concat(v6seg, \":){6}(?:\").concat(v4, \"|:\").concat(v6seg, \"|:)\"), // 1:2:3:4:5:6::    1:2:3:4:5:6::8   1:2:3:4:5:6::8  1:2:3:4:5:6::\n  \"(?:\".concat(v6seg, \":){5}(?::\").concat(v4, \"|(?::\").concat(v6seg, \"){1,2}|:)\"), // 1:2:3:4:5::      1:2:3:4:5::7:8   1:2:3:4:5::8    1:2:3:4:5::\n  \"(?:\".concat(v6seg, \":){4}(?:(?::\").concat(v6seg, \"){0,1}:\").concat(v4, \"|(?::\").concat(v6seg, \"){1,3}|:)\"), // 1:2:3:4::        1:2:3:4::6:7:8   1:2:3:4::8      1:2:3:4::\n  \"(?:\".concat(v6seg, \":){3}(?:(?::\").concat(v6seg, \"){0,2}:\").concat(v4, \"|(?::\").concat(v6seg, \"){1,4}|:)\"), // 1:2:3::          1:2:3::5:6:7:8   1:2:3::8        1:2:3::\n  \"(?:\".concat(v6seg, \":){2}(?:(?::\").concat(v6seg, \"){0,3}:\").concat(v4, \"|(?::\").concat(v6seg, \"){1,5}|:)\"), // 1:2::            1:2::4:5:6:7:8   1:2::8          1:2::\n  \"(?:\".concat(v6seg, \":){1}(?:(?::\").concat(v6seg, \"){0,4}:\").concat(v4, \"|(?::\").concat(v6seg, \"){1,6}|:)\"), // 1::              1::3:4:5:6:7:8   1::8            1::\n  \"(?::(?:(?::\".concat(v6seg, \"){0,5}:\").concat(v4, \"|(?::\").concat(v6seg, \"){1,7}|:))\") // ::2:3:4:5:6:7:8  ::2:3:4:5:6:7:8  ::8             ::\n  ];\n  var v6Eth0 = \"(?:%[0-9a-zA-Z]{1,})?\"; // %eth0            %1\n\n  var v6 = \"(?:\".concat(v6List.join('|'), \")\").concat(v6Eth0);\n\n  // Pre-compile only the exact regexes because adding a global flag make regexes stateful\n  var v46Exact = new RegExp(\"(?:^\".concat(v4, \"$)|(?:^\").concat(v6, \"$)\"));\n  var v4exact = new RegExp(\"^\".concat(v4, \"$\"));\n  var v6exact = new RegExp(\"^\".concat(v6, \"$\"));\n  var ip = function ip(options) {\n    return options && options.exact ? v46Exact : new RegExp(\"(?:\".concat(b(options)).concat(v4).concat(b(options), \")|(?:\").concat(b(options)).concat(v6).concat(b(options), \")\"), 'g');\n  };\n  ip.v4 = function (options) {\n    return options && options.exact ? v4exact : new RegExp(\"\".concat(b(options)).concat(v4).concat(b(options)), 'g');\n  };\n  ip.v6 = function (options) {\n    return options && options.exact ? v6exact : new RegExp(\"\".concat(b(options)).concat(v6).concat(b(options)), 'g');\n  };\n  var protocol = \"(?:(?:[a-z]+:)?//)\";\n  var auth = '(?:\\\\S+(?::\\\\S*)?@)?';\n  var ipv4 = ip.v4().source;\n  var ipv6 = ip.v6().source;\n  var host = \"(?:(?:[a-z\\\\u00a1-\\\\uffff0-9][-_]*)*[a-z\\\\u00a1-\\\\uffff0-9]+)\";\n  var domain = \"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*\";\n  var tld = \"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,}))\";\n  var port = '(?::\\\\d{2,5})?';\n  var path = '(?:[/?#][^\\\\s\"]*)?';\n  var regex = \"(?:\".concat(protocol, \"|www\\\\.)\").concat(auth, \"(?:localhost|\").concat(ipv4, \"|\").concat(ipv6, \"|\").concat(host).concat(domain).concat(tld, \")\").concat(port).concat(path);\n  urlReg = new RegExp(\"(?:^\".concat(regex, \"$)\"), 'i');\n  return urlReg;\n});","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport { format } from \"../util\";\nimport required from \"./required\";\nimport getUrlRegex from \"./url\";\n/* eslint max-len:0 */\n\nvar pattern = {\n  // http://emailregex.com/\n  email: /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+\\.)+[a-zA-Z\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]{2,}))$/,\n  // url: new RegExp(\n  //   '^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\\\S+(?::\\\\S*)?@)?(?:(?:(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}(?:\\\\.(?:[0-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))|(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]+-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]+-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,})))|localhost)(?::\\\\d{2,5})?(?:(/|\\\\?|#)[^\\\\s]*)?$',\n  //   'i',\n  // ),\n  hex: /^#?([a-f0-9]{6}|[a-f0-9]{3})$/i\n};\nvar types = {\n  integer: function integer(value) {\n    return types.number(value) && parseInt(value, 10) === value;\n  },\n  float: function float(value) {\n    return types.number(value) && !types.integer(value);\n  },\n  array: function array(value) {\n    return Array.isArray(value);\n  },\n  regexp: function regexp(value) {\n    if (value instanceof RegExp) {\n      return true;\n    }\n    try {\n      return !!new RegExp(value);\n    } catch (e) {\n      return false;\n    }\n  },\n  date: function date(value) {\n    return typeof value.getTime === 'function' && typeof value.getMonth === 'function' && typeof value.getYear === 'function' && !isNaN(value.getTime());\n  },\n  number: function number(value) {\n    if (isNaN(value)) {\n      return false;\n    }\n    return typeof value === 'number';\n  },\n  object: function object(value) {\n    return _typeof(value) === 'object' && !types.array(value);\n  },\n  method: function method(value) {\n    return typeof value === 'function';\n  },\n  email: function email(value) {\n    return typeof value === 'string' && value.length <= 320 && !!value.match(pattern.email);\n  },\n  url: function url(value) {\n    return typeof value === 'string' && value.length <= 2048 && !!value.match(getUrlRegex());\n  },\n  hex: function hex(value) {\n    return typeof value === 'string' && !!value.match(pattern.hex);\n  }\n};\nvar type = function type(rule, value, source, errors, options) {\n  if (rule.required && value === undefined) {\n    required(rule, value, source, errors, options);\n    return;\n  }\n  var custom = ['integer', 'float', 'array', 'regexp', 'object', 'method', 'email', 'number', 'date', 'url', 'hex'];\n  var ruleType = rule.type;\n  if (custom.indexOf(ruleType) > -1) {\n    if (!types[ruleType](value)) {\n      errors.push(format(options.messages.types[ruleType], rule.fullField, rule.type));\n    }\n    // straight typeof check\n  } else if (ruleType && _typeof(value) !== rule.type) {\n    errors.push(format(options.messages.types[ruleType], rule.fullField, rule.type));\n  }\n};\nexport default type;","import { format } from \"../util\";\n\n/**\n *  Rule for validating whitespace.\n *\n *  @param rule The validation rule.\n *  @param value The value of the field on the source object.\n *  @param source The source object being validated.\n *  @param errors An array of errors that this rule may add\n *  validation errors to.\n *  @param options The validation options.\n *  @param options.messages The validation messages.\n */\nvar whitespace = function whitespace(rule, value, source, errors, options) {\n  if (/^\\s+$/.test(value) || value === '') {\n    errors.push(format(options.messages.whitespace, rule.fullField));\n  }\n};\nexport default whitespace;","import enumRule from \"./enum\";\nimport pattern from \"./pattern\";\nimport range from \"./range\";\nimport required from \"./required\";\nimport type from \"./type\";\nimport whitespace from \"./whitespace\";\nexport default {\n  required: required,\n  whitespace: whitespace,\n  type: type,\n  range: range,\n  enum: enumRule,\n  pattern: pattern\n};","import rules from \"../rule\";\nimport { isEmptyValue } from \"../util\";\nvar any = function any(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  if (validate) {\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options);\n  }\n  callback(errors);\n};\nexport default any;","import rules from \"../rule/index\";\nvar array = function array(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  if (validate) {\n    if ((value === undefined || value === null) && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options, 'array');\n    if (value !== undefined && value !== null) {\n      rules.type(rule, value, source, errors, options);\n      rules.range(rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n};\nexport default array;","import rules from \"../rule\";\nimport { isEmptyValue } from \"../util\";\nvar boolean = function boolean(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  if (validate) {\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options);\n    if (value !== undefined) {\n      rules.type(rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n};\nexport default boolean;","import rules from \"../rule\";\nimport { isEmptyValue } from \"../util\";\nvar date = function date(rule, value, callback, source, options) {\n  // console.log('integer rule called %j', rule);\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  // console.log('validate on %s value', value);\n  if (validate) {\n    if (isEmptyValue(value, 'date') && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options);\n    if (!isEmptyValue(value, 'date')) {\n      var dateObject;\n      if (value instanceof Date) {\n        dateObject = value;\n      } else {\n        dateObject = new Date(value);\n      }\n      rules.type(rule, dateObject, source, errors, options);\n      if (dateObject) {\n        rules.range(rule, dateObject.getTime(), source, errors, options);\n      }\n    }\n  }\n  callback(errors);\n};\nexport default date;","import rules from \"../rule\";\nimport { isEmptyValue } from \"../util\";\nvar ENUM = 'enum';\nvar enumerable = function enumerable(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  if (validate) {\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options);\n    if (value !== undefined) {\n      rules[ENUM](rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n};\nexport default enumerable;","import rules from \"../rule\";\nimport { isEmptyValue } from \"../util\";\nvar floatFn = function floatFn(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  if (validate) {\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options);\n    if (value !== undefined) {\n      rules.type(rule, value, source, errors, options);\n      rules.range(rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n};\nexport default floatFn;","import rules from \"../rule\";\nimport { isEmptyValue } from \"../util\";\nvar integer = function integer(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  if (validate) {\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options);\n    if (value !== undefined) {\n      rules.type(rule, value, source, errors, options);\n      rules.range(rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n};\nexport default integer;","import rules from \"../rule\";\nimport { isEmptyValue } from \"../util\";\nvar method = function method(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  if (validate) {\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options);\n    if (value !== undefined) {\n      rules.type(rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n};\nexport default method;","import rules from \"../rule\";\nimport { isEmptyValue } from \"../util\";\nvar number = function number(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  if (validate) {\n    if (value === '') {\n      // eslint-disable-next-line no-param-reassign\n      value = undefined;\n    }\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options);\n    if (value !== undefined) {\n      rules.type(rule, value, source, errors, options);\n      rules.range(rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n};\nexport default number;","import rules from \"../rule\";\nimport { isEmptyValue } from \"../util\";\nvar object = function object(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  if (validate) {\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options);\n    if (value !== undefined) {\n      rules.type(rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n};\nexport default object;","import rules from \"../rule\";\nimport { isEmptyValue } from \"../util\";\nvar pattern = function pattern(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  if (validate) {\n    if (isEmptyValue(value, 'string') && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options);\n    if (!isEmptyValue(value, 'string')) {\n      rules.pattern(rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n};\nexport default pattern;","import rules from \"../rule\";\nimport { isEmptyValue } from \"../util\";\nvar regexp = function regexp(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  if (validate) {\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options);\n    if (!isEmptyValue(value)) {\n      rules.type(rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n};\nexport default regexp;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport rules from \"../rule\";\nvar required = function required(rule, value, callback, source, options) {\n  var errors = [];\n  var type = Array.isArray(value) ? 'array' : _typeof(value);\n  rules.required(rule, value, source, errors, options, type);\n  callback(errors);\n};\nexport default required;","import rules from \"../rule\";\nimport { isEmptyValue } from \"../util\";\nvar string = function string(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  if (validate) {\n    if (isEmptyValue(value, 'string') && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options, 'string');\n    if (!isEmptyValue(value, 'string')) {\n      rules.type(rule, value, source, errors, options);\n      rules.range(rule, value, source, errors, options);\n      rules.pattern(rule, value, source, errors, options);\n      if (rule.whitespace === true) {\n        rules.whitespace(rule, value, source, errors, options);\n      }\n    }\n  }\n  callback(errors);\n};\nexport default string;","import rules from \"../rule\";\nimport { isEmptyValue } from \"../util\";\nvar type = function type(rule, value, callback, source, options) {\n  var ruleType = rule.type;\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  if (validate) {\n    if (isEmptyValue(value, ruleType) && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options, ruleType);\n    if (!isEmptyValue(value, ruleType)) {\n      rules.type(rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n};\nexport default type;","import any from \"./any\";\nimport array from \"./array\";\nimport boolean from \"./boolean\";\nimport date from \"./date\";\nimport enumValidator from \"./enum\";\nimport float from \"./float\";\nimport integer from \"./integer\";\nimport method from \"./method\";\nimport number from \"./number\";\nimport object from \"./object\";\nimport pattern from \"./pattern\";\nimport regexp from \"./regexp\";\nimport required from \"./required\";\nimport string from \"./string\";\nimport type from \"./type\";\nexport default {\n  string: string,\n  method: method,\n  number: number,\n  boolean: boolean,\n  regexp: regexp,\n  integer: integer,\n  float: float,\n  array: array,\n  object: object,\n  enum: enumValidator,\n  pattern: pattern,\n  date: date,\n  url: type,\n  hex: type,\n  email: type,\n  required: required,\n  any: any\n};","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { messages as defaultMessages, newMessages } from \"./messages\";\nimport { asyncMap, complementError, convertFieldsError, deepMerge, format, warning } from \"./util\";\nimport validators from \"./validator/index\";\nexport * from \"./interface\";\n\n/**\n *  Encapsulates a validation schema.\n *\n *  @param descriptor An object declaring validation rules\n *  for this schema.\n */\nvar Schema = /*#__PURE__*/function () {\n  function Schema(descriptor) {\n    _classCallCheck(this, Schema);\n    // ======================== Instance ========================\n    _defineProperty(this, \"rules\", null);\n    _defineProperty(this, \"_messages\", defaultMessages);\n    this.define(descriptor);\n  }\n  _createClass(Schema, [{\n    key: \"define\",\n    value: function define(rules) {\n      var _this = this;\n      if (!rules) {\n        throw new Error('Cannot configure a schema with no rules');\n      }\n      if (_typeof(rules) !== 'object' || Array.isArray(rules)) {\n        throw new Error('Rules must be an object');\n      }\n      this.rules = {};\n      Object.keys(rules).forEach(function (name) {\n        var item = rules[name];\n        _this.rules[name] = Array.isArray(item) ? item : [item];\n      });\n    }\n  }, {\n    key: \"messages\",\n    value: function messages(_messages) {\n      if (_messages) {\n        this._messages = deepMerge(newMessages(), _messages);\n      }\n      return this._messages;\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(source_) {\n      var _this2 = this;\n      var o = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var oc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};\n      var source = source_;\n      var options = o;\n      var callback = oc;\n      if (typeof options === 'function') {\n        callback = options;\n        options = {};\n      }\n      if (!this.rules || Object.keys(this.rules).length === 0) {\n        if (callback) {\n          callback(null, source);\n        }\n        return Promise.resolve(source);\n      }\n      function complete(results) {\n        var errors = [];\n        var fields = {};\n        function add(e) {\n          if (Array.isArray(e)) {\n            var _errors;\n            errors = (_errors = errors).concat.apply(_errors, _toConsumableArray(e));\n          } else {\n            errors.push(e);\n          }\n        }\n        for (var i = 0; i < results.length; i++) {\n          add(results[i]);\n        }\n        if (!errors.length) {\n          callback(null, source);\n        } else {\n          fields = convertFieldsError(errors);\n          callback(errors, fields);\n        }\n      }\n      if (options.messages) {\n        var messages = this.messages();\n        if (messages === defaultMessages) {\n          messages = newMessages();\n        }\n        deepMerge(messages, options.messages);\n        options.messages = messages;\n      } else {\n        options.messages = this.messages();\n      }\n      var series = {};\n      var keys = options.keys || Object.keys(this.rules);\n      keys.forEach(function (z) {\n        var arr = _this2.rules[z];\n        var value = source[z];\n        arr.forEach(function (r) {\n          var rule = r;\n          if (typeof rule.transform === 'function') {\n            if (source === source_) {\n              source = _objectSpread({}, source);\n            }\n            value = source[z] = rule.transform(value);\n            if (value !== undefined && value !== null) {\n              rule.type = rule.type || (Array.isArray(value) ? 'array' : _typeof(value));\n            }\n          }\n          if (typeof rule === 'function') {\n            rule = {\n              validator: rule\n            };\n          } else {\n            rule = _objectSpread({}, rule);\n          }\n\n          // Fill validator. Skip if nothing need to validate\n          rule.validator = _this2.getValidationMethod(rule);\n          if (!rule.validator) {\n            return;\n          }\n          rule.field = z;\n          rule.fullField = rule.fullField || z;\n          rule.type = _this2.getType(rule);\n          series[z] = series[z] || [];\n          series[z].push({\n            rule: rule,\n            value: value,\n            source: source,\n            field: z\n          });\n        });\n      });\n      var errorFields = {};\n      return asyncMap(series, options, function (data, doIt) {\n        var rule = data.rule;\n        var deep = (rule.type === 'object' || rule.type === 'array') && (_typeof(rule.fields) === 'object' || _typeof(rule.defaultField) === 'object');\n        deep = deep && (rule.required || !rule.required && data.value);\n        rule.field = data.field;\n        function addFullField(key, schema) {\n          return _objectSpread(_objectSpread({}, schema), {}, {\n            fullField: \"\".concat(rule.fullField, \".\").concat(key),\n            fullFields: rule.fullFields ? [].concat(_toConsumableArray(rule.fullFields), [key]) : [key]\n          });\n        }\n        function cb() {\n          var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n          var errorList = Array.isArray(e) ? e : [e];\n          if (!options.suppressWarning && errorList.length) {\n            Schema.warning('async-validator:', errorList);\n          }\n          if (errorList.length && rule.message !== undefined) {\n            errorList = [].concat(rule.message);\n          }\n\n          // Fill error info\n          var filledErrors = errorList.map(complementError(rule, source));\n          if (options.first && filledErrors.length) {\n            errorFields[rule.field] = 1;\n            return doIt(filledErrors);\n          }\n          if (!deep) {\n            doIt(filledErrors);\n          } else {\n            // if rule is required but the target object\n            // does not exist fail at the rule level and don't\n            // go deeper\n            if (rule.required && !data.value) {\n              if (rule.message !== undefined) {\n                filledErrors = [].concat(rule.message).map(complementError(rule, source));\n              } else if (options.error) {\n                filledErrors = [options.error(rule, format(options.messages.required, rule.field))];\n              }\n              return doIt(filledErrors);\n            }\n            var fieldsSchema = {};\n            if (rule.defaultField) {\n              Object.keys(data.value).map(function (key) {\n                fieldsSchema[key] = rule.defaultField;\n              });\n            }\n            fieldsSchema = _objectSpread(_objectSpread({}, fieldsSchema), data.rule.fields);\n            var paredFieldsSchema = {};\n            Object.keys(fieldsSchema).forEach(function (field) {\n              var fieldSchema = fieldsSchema[field];\n              var fieldSchemaList = Array.isArray(fieldSchema) ? fieldSchema : [fieldSchema];\n              paredFieldsSchema[field] = fieldSchemaList.map(addFullField.bind(null, field));\n            });\n            var schema = new Schema(paredFieldsSchema);\n            schema.messages(options.messages);\n            if (data.rule.options) {\n              data.rule.options.messages = options.messages;\n              data.rule.options.error = options.error;\n            }\n            schema.validate(data.value, data.rule.options || options, function (errs) {\n              var finalErrors = [];\n              if (filledErrors && filledErrors.length) {\n                finalErrors.push.apply(finalErrors, _toConsumableArray(filledErrors));\n              }\n              if (errs && errs.length) {\n                finalErrors.push.apply(finalErrors, _toConsumableArray(errs));\n              }\n              doIt(finalErrors.length ? finalErrors : null);\n            });\n          }\n        }\n        var res;\n        if (rule.asyncValidator) {\n          res = rule.asyncValidator(rule, data.value, cb, data.source, options);\n        } else if (rule.validator) {\n          try {\n            res = rule.validator(rule, data.value, cb, data.source, options);\n          } catch (error) {\n            var _console$error, _console;\n            (_console$error = (_console = console).error) === null || _console$error === void 0 || _console$error.call(_console, error);\n            // rethrow to report error\n            if (!options.suppressValidatorError) {\n              setTimeout(function () {\n                throw error;\n              }, 0);\n            }\n            cb(error.message);\n          }\n          if (res === true) {\n            cb();\n          } else if (res === false) {\n            cb(typeof rule.message === 'function' ? rule.message(rule.fullField || rule.field) : rule.message || \"\".concat(rule.fullField || rule.field, \" fails\"));\n          } else if (res instanceof Array) {\n            cb(res);\n          } else if (res instanceof Error) {\n            cb(res.message);\n          }\n        }\n        if (res && res.then) {\n          res.then(function () {\n            return cb();\n          }, function (e) {\n            return cb(e);\n          });\n        }\n      }, function (results) {\n        complete(results);\n      }, source);\n    }\n  }, {\n    key: \"getType\",\n    value: function getType(rule) {\n      if (rule.type === undefined && rule.pattern instanceof RegExp) {\n        rule.type = 'pattern';\n      }\n      if (typeof rule.validator !== 'function' && rule.type && !validators.hasOwnProperty(rule.type)) {\n        throw new Error(format('Unknown rule type %s', rule.type));\n      }\n      return rule.type || 'string';\n    }\n  }, {\n    key: \"getValidationMethod\",\n    value: function getValidationMethod(rule) {\n      if (typeof rule.validator === 'function') {\n        return rule.validator;\n      }\n      var keys = Object.keys(rule);\n      var messageIndex = keys.indexOf('message');\n      if (messageIndex !== -1) {\n        keys.splice(messageIndex, 1);\n      }\n      if (keys.length === 1 && keys[0] === 'required') {\n        return validators.required;\n      }\n      return validators[this.getType(rule)] || undefined;\n    }\n  }]);\n  return Schema;\n}();\n// ========================= Static =========================\n_defineProperty(Schema, \"register\", function register(type, validator) {\n  if (typeof validator !== 'function') {\n    throw new Error('Cannot register a validator by type, validator is not a function');\n  }\n  validators[type] = validator;\n});\n_defineProperty(Schema, \"warning\", warning);\n_defineProperty(Schema, \"messages\", defaultMessages);\n_defineProperty(Schema, \"validators\", validators);\nexport default Schema;","var typeTemplate = \"'${name}' is not a valid ${type}\";\nexport var defaultValidateMessages = {\n  default: \"Validation error on field '${name}'\",\n  required: \"'${name}' is required\",\n  enum: \"'${name}' must be one of [${enum}]\",\n  whitespace: \"'${name}' cannot be empty\",\n  date: {\n    format: \"'${name}' is invalid for format date\",\n    parse: \"'${name}' could not be parsed as date\",\n    invalid: \"'${name}' is invalid date\"\n  },\n  types: {\n    string: typeTemplate,\n    method: typeTemplate,\n    array: typeTemplate,\n    object: typeTemplate,\n    number: typeTemplate,\n    date: typeTemplate,\n    boolean: typeTemplate,\n    integer: typeTemplate,\n    float: typeTemplate,\n    regexp: typeTemplate,\n    email: typeTemplate,\n    url: typeTemplate,\n    hex: typeTemplate\n  },\n  string: {\n    len: \"'${name}' must be exactly ${len} characters\",\n    min: \"'${name}' must be at least ${min} characters\",\n    max: \"'${name}' cannot be longer than ${max} characters\",\n    range: \"'${name}' must be between ${min} and ${max} characters\"\n  },\n  number: {\n    len: \"'${name}' must equal ${len}\",\n    min: \"'${name}' cannot be less than ${min}\",\n    max: \"'${name}' cannot be greater than ${max}\",\n    range: \"'${name}' must be between ${min} and ${max}\"\n  },\n  array: {\n    len: \"'${name}' must be exactly ${len} in length\",\n    min: \"'${name}' cannot be less than ${min} in length\",\n    max: \"'${name}' cannot be greater than ${max} in length\",\n    range: \"'${name}' must be between ${min} and ${max} in length\"\n  },\n  pattern: {\n    mismatch: \"'${name}' does not match pattern ${pattern}\"\n  }\n};","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _regeneratorRuntime from \"@babel/runtime/helpers/esm/regeneratorRuntime\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/esm/asyncToGenerator\";\nimport RawAsyncValidator from '@rc-component/async-validator';\nimport * as React from 'react';\nimport warning from \"rc-util/es/warning\";\nimport { defaultValidateMessages } from \"./messages\";\nimport { merge } from \"rc-util/es/utils/set\";\n\n// Remove incorrect original ts define\nvar AsyncValidator = RawAsyncValidator;\n\n/**\n * Replace with template.\n *   `I'm ${name}` + { name: 'bamboo' } = I'm bamboo\n */\nfunction replaceMessage(template, kv) {\n  return template.replace(/\\\\?\\$\\{\\w+\\}/g, function (str) {\n    if (str.startsWith('\\\\')) {\n      return str.slice(1);\n    }\n    var key = str.slice(2, -1);\n    return kv[key];\n  });\n}\nvar CODE_LOGIC_ERROR = 'CODE_LOGIC_ERROR';\nfunction validateRule(_x, _x2, _x3, _x4, _x5) {\n  return _validateRule.apply(this, arguments);\n}\n/**\n * We use `async-validator` to validate the value.\n * But only check one value in a time to avoid namePath validate issue.\n */\nfunction _validateRule() {\n  _validateRule = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(name, value, rule, options, messageVariables) {\n    var cloneRule, originValidator, subRuleField, validator, messages, result, subResults, kv, fillVariableResult;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          cloneRule = _objectSpread({}, rule); // Bug of `async-validator`\n          // https://github.com/react-component/field-form/issues/316\n          // https://github.com/react-component/field-form/issues/313\n          delete cloneRule.ruleIndex;\n\n          // https://github.com/ant-design/ant-design/issues/40497#issuecomment-1422282378\n          AsyncValidator.warning = function () {\n            return void 0;\n          };\n          if (cloneRule.validator) {\n            originValidator = cloneRule.validator;\n            cloneRule.validator = function () {\n              try {\n                return originValidator.apply(void 0, arguments);\n              } catch (error) {\n                console.error(error);\n                return Promise.reject(CODE_LOGIC_ERROR);\n              }\n            };\n          }\n\n          // We should special handle array validate\n          subRuleField = null;\n          if (cloneRule && cloneRule.type === 'array' && cloneRule.defaultField) {\n            subRuleField = cloneRule.defaultField;\n            delete cloneRule.defaultField;\n          }\n          validator = new AsyncValidator(_defineProperty({}, name, [cloneRule]));\n          messages = merge(defaultValidateMessages, options.validateMessages);\n          validator.messages(messages);\n          result = [];\n          _context2.prev = 10;\n          _context2.next = 13;\n          return Promise.resolve(validator.validate(_defineProperty({}, name, value), _objectSpread({}, options)));\n        case 13:\n          _context2.next = 18;\n          break;\n        case 15:\n          _context2.prev = 15;\n          _context2.t0 = _context2[\"catch\"](10);\n          if (_context2.t0.errors) {\n            result = _context2.t0.errors.map(function (_ref4, index) {\n              var message = _ref4.message;\n              var mergedMessage = message === CODE_LOGIC_ERROR ? messages.default : message;\n              return /*#__PURE__*/React.isValidElement(mergedMessage) ?\n              /*#__PURE__*/\n              // Wrap ReactNode with `key`\n              React.cloneElement(mergedMessage, {\n                key: \"error_\".concat(index)\n              }) : mergedMessage;\n            });\n          }\n        case 18:\n          if (!(!result.length && subRuleField)) {\n            _context2.next = 23;\n            break;\n          }\n          _context2.next = 21;\n          return Promise.all(value.map(function (subValue, i) {\n            return validateRule(\"\".concat(name, \".\").concat(i), subValue, subRuleField, options, messageVariables);\n          }));\n        case 21:\n          subResults = _context2.sent;\n          return _context2.abrupt(\"return\", subResults.reduce(function (prev, errors) {\n            return [].concat(_toConsumableArray(prev), _toConsumableArray(errors));\n          }, []));\n        case 23:\n          // Replace message with variables\n          kv = _objectSpread(_objectSpread({}, rule), {}, {\n            name: name,\n            enum: (rule.enum || []).join(', ')\n          }, messageVariables);\n          fillVariableResult = result.map(function (error) {\n            if (typeof error === 'string') {\n              return replaceMessage(error, kv);\n            }\n            return error;\n          });\n          return _context2.abrupt(\"return\", fillVariableResult);\n        case 26:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2, null, [[10, 15]]);\n  }));\n  return _validateRule.apply(this, arguments);\n}\nexport function validateRules(namePath, value, rules, options, validateFirst, messageVariables) {\n  var name = namePath.join('.');\n\n  // Fill rule with context\n  var filledRules = rules.map(function (currentRule, ruleIndex) {\n    var originValidatorFunc = currentRule.validator;\n    var cloneRule = _objectSpread(_objectSpread({}, currentRule), {}, {\n      ruleIndex: ruleIndex\n    });\n\n    // Replace validator if needed\n    if (originValidatorFunc) {\n      cloneRule.validator = function (rule, val, callback) {\n        var hasPromise = false;\n\n        // Wrap callback only accept when promise not provided\n        var wrappedCallback = function wrappedCallback() {\n          for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n            args[_key] = arguments[_key];\n          }\n          // Wait a tick to make sure return type is a promise\n          Promise.resolve().then(function () {\n            warning(!hasPromise, 'Your validator function has already return a promise. `callback` will be ignored.');\n            if (!hasPromise) {\n              callback.apply(void 0, args);\n            }\n          });\n        };\n\n        // Get promise\n        var promise = originValidatorFunc(rule, val, wrappedCallback);\n        hasPromise = promise && typeof promise.then === 'function' && typeof promise.catch === 'function';\n\n        /**\n         * 1. Use promise as the first priority.\n         * 2. If promise not exist, use callback with warning instead\n         */\n        warning(hasPromise, '`callback` is deprecated. Please return a promise instead.');\n        if (hasPromise) {\n          promise.then(function () {\n            callback();\n          }).catch(function (err) {\n            callback(err || ' ');\n          });\n        }\n      };\n    }\n    return cloneRule;\n  }).sort(function (_ref, _ref2) {\n    var w1 = _ref.warningOnly,\n      i1 = _ref.ruleIndex;\n    var w2 = _ref2.warningOnly,\n      i2 = _ref2.ruleIndex;\n    if (!!w1 === !!w2) {\n      // Let keep origin order\n      return i1 - i2;\n    }\n    if (w1) {\n      return 1;\n    }\n    return -1;\n  });\n\n  // Do validate rules\n  var summaryPromise;\n  if (validateFirst === true) {\n    // >>>>> Validate by serialization\n    summaryPromise = new Promise( /*#__PURE__*/function () {\n      var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(resolve, reject) {\n        var i, rule, errors;\n        return _regeneratorRuntime().wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              i = 0;\n            case 1:\n              if (!(i < filledRules.length)) {\n                _context.next = 12;\n                break;\n              }\n              rule = filledRules[i];\n              _context.next = 5;\n              return validateRule(name, value, rule, options, messageVariables);\n            case 5:\n              errors = _context.sent;\n              if (!errors.length) {\n                _context.next = 9;\n                break;\n              }\n              reject([{\n                errors: errors,\n                rule: rule\n              }]);\n              return _context.abrupt(\"return\");\n            case 9:\n              i += 1;\n              _context.next = 1;\n              break;\n            case 12:\n              /* eslint-enable */\n\n              resolve([]);\n            case 13:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee);\n      }));\n      return function (_x6, _x7) {\n        return _ref3.apply(this, arguments);\n      };\n    }());\n  } else {\n    // >>>>> Validate by parallel\n    var rulePromises = filledRules.map(function (rule) {\n      return validateRule(name, value, rule, options, messageVariables).then(function (errors) {\n        return {\n          errors: errors,\n          rule: rule\n        };\n      });\n    });\n    summaryPromise = (validateFirst ? finishOnFirstFailed(rulePromises) : finishOnAllFailed(rulePromises)).then(function (errors) {\n      // Always change to rejection for Field to catch\n      return Promise.reject(errors);\n    });\n  }\n\n  // Internal catch error to avoid console error log.\n  summaryPromise.catch(function (e) {\n    return e;\n  });\n  return summaryPromise;\n}\nfunction finishOnAllFailed(_x8) {\n  return _finishOnAllFailed.apply(this, arguments);\n}\nfunction _finishOnAllFailed() {\n  _finishOnAllFailed = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(rulePromises) {\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          return _context3.abrupt(\"return\", Promise.all(rulePromises).then(function (errorsList) {\n            var _ref5;\n            var errors = (_ref5 = []).concat.apply(_ref5, _toConsumableArray(errorsList));\n            return errors;\n          }));\n        case 1:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3);\n  }));\n  return _finishOnAllFailed.apply(this, arguments);\n}\nfunction finishOnFirstFailed(_x9) {\n  return _finishOnFirstFailed.apply(this, arguments);\n}\nfunction _finishOnFirstFailed() {\n  _finishOnFirstFailed = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(rulePromises) {\n    var count;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          count = 0;\n          return _context4.abrupt(\"return\", new Promise(function (resolve) {\n            rulePromises.forEach(function (promise) {\n              promise.then(function (ruleError) {\n                if (ruleError.errors.length) {\n                  resolve([ruleError]);\n                }\n                count += 1;\n                if (count === rulePromises.length) {\n                  resolve([]);\n                }\n              });\n            });\n          }));\n        case 2:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4);\n  }));\n  return _finishOnFirstFailed.apply(this, arguments);\n}","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport getValue from \"rc-util/es/utils/get\";\nimport setValue from \"rc-util/es/utils/set\";\nimport { toArray } from \"./typeUtil\";\nexport { getValue, setValue };\n\n/**\n * Convert name to internal supported format.\n * This function should keep since we still thinking if need support like `a.b.c` format.\n * 'a' => ['a']\n * 123 => [123]\n * ['a', 123] => ['a', 123]\n */\nexport function getNamePath(path) {\n  return toArray(path);\n}\nexport function cloneByNamePathList(store, namePathList) {\n  var newStore = {};\n  namePathList.forEach(function (namePath) {\n    var value = getValue(store, namePath);\n    newStore = setValue(newStore, namePath, value);\n  });\n  return newStore;\n}\n\n/**\n * Check if `namePathList` includes `namePath`.\n * @param namePathList A list of `InternalNamePath[]`\n * @param namePath Compare `InternalNamePath`\n * @param partialMatch True will make `[a, b]` match `[a, b, c]`\n */\nexport function containsNamePath(namePathList, namePath) {\n  var partialMatch = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n  return namePathList && namePathList.some(function (path) {\n    return matchNamePath(namePath, path, partialMatch);\n  });\n}\n\n/**\n * Check if `namePath` is super set or equal of `subNamePath`.\n * @param namePath A list of `InternalNamePath[]`\n * @param subNamePath Compare `InternalNamePath`\n * @param partialMatch True will make `[a, b]` match `[a, b, c]`\n */\nexport function matchNamePath(namePath, subNamePath) {\n  var partialMatch = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n  if (!namePath || !subNamePath) {\n    return false;\n  }\n  if (!partialMatch && namePath.length !== subNamePath.length) {\n    return false;\n  }\n  return subNamePath.every(function (nameUnit, i) {\n    return namePath[i] === nameUnit;\n  });\n}\n\n// Like `shallowEqual`, but we not check the data which may cause re-render\n\nexport function isSimilar(source, target) {\n  if (source === target) {\n    return true;\n  }\n  if (!source && target || source && !target) {\n    return false;\n  }\n  if (!source || !target || _typeof(source) !== 'object' || _typeof(target) !== 'object') {\n    return false;\n  }\n  var sourceKeys = Object.keys(source);\n  var targetKeys = Object.keys(target);\n  var keys = new Set([].concat(sourceKeys, targetKeys));\n  return _toConsumableArray(keys).every(function (key) {\n    var sourceValue = source[key];\n    var targetValue = target[key];\n    if (typeof sourceValue === 'function' && typeof targetValue === 'function') {\n      return true;\n    }\n    return sourceValue === targetValue;\n  });\n}\nexport function defaultGetValueFromEvent(valuePropName) {\n  var event = arguments.length <= 1 ? undefined : arguments[1];\n  if (event && event.target && _typeof(event.target) === 'object' && valuePropName in event.target) {\n    return event.target[valuePropName];\n  }\n  return event;\n}\n\n/**\n * Moves an array item from one position in an array to another.\n *\n * Note: This is a pure function so a new array will be returned, instead\n * of altering the array argument.\n *\n * @param array         Array in which to move an item.         (required)\n * @param moveIndex     The index of the item to move.          (required)\n * @param toIndex       The index to move item at moveIndex to. (required)\n */\nexport function move(array, moveIndex, toIndex) {\n  var length = array.length;\n  if (moveIndex < 0 || moveIndex >= length || toIndex < 0 || toIndex >= length) {\n    return array;\n  }\n  var item = array[moveIndex];\n  var diff = moveIndex - toIndex;\n  if (diff > 0) {\n    // move left\n    return [].concat(_toConsumableArray(array.slice(0, toIndex)), [item], _toConsumableArray(array.slice(toIndex, moveIndex)), _toConsumableArray(array.slice(moveIndex + 1, length)));\n  }\n  if (diff < 0) {\n    // move right\n    return [].concat(_toConsumableArray(array.slice(0, moveIndex)), _toConsumableArray(array.slice(moveIndex + 1, toIndex + 1)), [item], _toConsumableArray(array.slice(toIndex + 1, length)));\n  }\n  return array;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _regeneratorRuntime from \"@babel/runtime/helpers/esm/regeneratorRuntime\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/esm/asyncToGenerator\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar _excluded = [\"name\"];\nimport toChildrenArray from \"rc-util/es/Children/toArray\";\nimport isEqual from \"rc-util/es/isEqual\";\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport FieldContext, { HOOK_MARK } from \"./FieldContext\";\nimport ListContext from \"./ListContext\";\nimport { toArray } from \"./utils/typeUtil\";\nimport { validateRules } from \"./utils/validateUtil\";\nimport { containsNamePath, defaultGetValueFromEvent, getNamePath, getValue } from \"./utils/valueUtil\";\nvar EMPTY_ERRORS = [];\nfunction requireUpdate(shouldUpdate, prev, next, prevValue, nextValue, info) {\n  if (typeof shouldUpdate === 'function') {\n    return shouldUpdate(prev, next, 'source' in info ? {\n      source: info.source\n    } : {});\n  }\n  return prevValue !== nextValue;\n}\n\n// eslint-disable-next-line @typescript-eslint/consistent-indexed-object-style\n// We use Class instead of Hooks here since it will cost much code by using Hooks.\nvar Field = /*#__PURE__*/function (_React$Component) {\n  _inherits(Field, _React$Component);\n  var _super = _createSuper(Field);\n  // ============================== Subscriptions ==============================\n  function Field(props) {\n    var _this;\n    _classCallCheck(this, Field);\n    _this = _super.call(this, props);\n\n    // Register on init\n    _defineProperty(_assertThisInitialized(_this), \"state\", {\n      resetCount: 0\n    });\n    _defineProperty(_assertThisInitialized(_this), \"cancelRegisterFunc\", null);\n    _defineProperty(_assertThisInitialized(_this), \"mounted\", false);\n    /**\n     * Follow state should not management in State since it will async update by React.\n     * This makes first render of form can not get correct state value.\n     */\n    _defineProperty(_assertThisInitialized(_this), \"touched\", false);\n    /**\n     * Mark when touched & validated. Currently only used for `dependencies`.\n     * Note that we do not think field with `initialValue` is dirty\n     * but this will be by `isFieldDirty` func.\n     */\n    _defineProperty(_assertThisInitialized(_this), \"dirty\", false);\n    _defineProperty(_assertThisInitialized(_this), \"validatePromise\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"prevValidating\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"errors\", EMPTY_ERRORS);\n    _defineProperty(_assertThisInitialized(_this), \"warnings\", EMPTY_ERRORS);\n    _defineProperty(_assertThisInitialized(_this), \"cancelRegister\", function () {\n      var _this$props = _this.props,\n        preserve = _this$props.preserve,\n        isListField = _this$props.isListField,\n        name = _this$props.name;\n      if (_this.cancelRegisterFunc) {\n        _this.cancelRegisterFunc(isListField, preserve, getNamePath(name));\n      }\n      _this.cancelRegisterFunc = null;\n    });\n    // ================================== Utils ==================================\n    _defineProperty(_assertThisInitialized(_this), \"getNamePath\", function () {\n      var _this$props2 = _this.props,\n        name = _this$props2.name,\n        fieldContext = _this$props2.fieldContext;\n      var _fieldContext$prefixN = fieldContext.prefixName,\n        prefixName = _fieldContext$prefixN === void 0 ? [] : _fieldContext$prefixN;\n      return name !== undefined ? [].concat(_toConsumableArray(prefixName), _toConsumableArray(name)) : [];\n    });\n    _defineProperty(_assertThisInitialized(_this), \"getRules\", function () {\n      var _this$props3 = _this.props,\n        _this$props3$rules = _this$props3.rules,\n        rules = _this$props3$rules === void 0 ? [] : _this$props3$rules,\n        fieldContext = _this$props3.fieldContext;\n      return rules.map(function (rule) {\n        if (typeof rule === 'function') {\n          return rule(fieldContext);\n        }\n        return rule;\n      });\n    });\n    _defineProperty(_assertThisInitialized(_this), \"refresh\", function () {\n      if (!_this.mounted) return;\n\n      /**\n       * Clean up current node.\n       */\n      _this.setState(function (_ref) {\n        var resetCount = _ref.resetCount;\n        return {\n          resetCount: resetCount + 1\n        };\n      });\n    });\n    // Event should only trigger when meta changed\n    _defineProperty(_assertThisInitialized(_this), \"metaCache\", null);\n    _defineProperty(_assertThisInitialized(_this), \"triggerMetaEvent\", function (destroy) {\n      var onMetaChange = _this.props.onMetaChange;\n      if (onMetaChange) {\n        var _meta = _objectSpread(_objectSpread({}, _this.getMeta()), {}, {\n          destroy: destroy\n        });\n        if (!isEqual(_this.metaCache, _meta)) {\n          onMetaChange(_meta);\n        }\n        _this.metaCache = _meta;\n      } else {\n        _this.metaCache = null;\n      }\n    });\n    // ========================= Field Entity Interfaces =========================\n    // Trigger by store update. Check if need update the component\n    _defineProperty(_assertThisInitialized(_this), \"onStoreChange\", function (prevStore, namePathList, info) {\n      var _this$props4 = _this.props,\n        shouldUpdate = _this$props4.shouldUpdate,\n        _this$props4$dependen = _this$props4.dependencies,\n        dependencies = _this$props4$dependen === void 0 ? [] : _this$props4$dependen,\n        onReset = _this$props4.onReset;\n      var store = info.store;\n      var namePath = _this.getNamePath();\n      var prevValue = _this.getValue(prevStore);\n      var curValue = _this.getValue(store);\n      var namePathMatch = namePathList && containsNamePath(namePathList, namePath);\n\n      // `setFieldsValue` is a quick access to update related status\n      if (info.type === 'valueUpdate' && info.source === 'external' && !isEqual(prevValue, curValue)) {\n        _this.touched = true;\n        _this.dirty = true;\n        _this.validatePromise = null;\n        _this.errors = EMPTY_ERRORS;\n        _this.warnings = EMPTY_ERRORS;\n        _this.triggerMetaEvent();\n      }\n      switch (info.type) {\n        case 'reset':\n          if (!namePathList || namePathMatch) {\n            // Clean up state\n            _this.touched = false;\n            _this.dirty = false;\n            _this.validatePromise = undefined;\n            _this.errors = EMPTY_ERRORS;\n            _this.warnings = EMPTY_ERRORS;\n            _this.triggerMetaEvent();\n            onReset === null || onReset === void 0 || onReset();\n            _this.refresh();\n            return;\n          }\n          break;\n\n        /**\n         * In case field with `preserve = false` nest deps like:\n         * - A = 1 => show B\n         * - B = 1 => show C\n         * - Reset A, need clean B, C\n         */\n        case 'remove':\n          {\n            if (shouldUpdate && requireUpdate(shouldUpdate, prevStore, store, prevValue, curValue, info)) {\n              _this.reRender();\n              return;\n            }\n            break;\n          }\n        case 'setField':\n          {\n            var data = info.data;\n            if (namePathMatch) {\n              if ('touched' in data) {\n                _this.touched = data.touched;\n              }\n              if ('validating' in data && !('originRCField' in data)) {\n                _this.validatePromise = data.validating ? Promise.resolve([]) : null;\n              }\n              if ('errors' in data) {\n                _this.errors = data.errors || EMPTY_ERRORS;\n              }\n              if ('warnings' in data) {\n                _this.warnings = data.warnings || EMPTY_ERRORS;\n              }\n              _this.dirty = true;\n              _this.triggerMetaEvent();\n              _this.reRender();\n              return;\n            } else if ('value' in data && containsNamePath(namePathList, namePath, true)) {\n              // Contains path with value should also check\n              _this.reRender();\n              return;\n            }\n\n            // Handle update by `setField` with `shouldUpdate`\n            if (shouldUpdate && !namePath.length && requireUpdate(shouldUpdate, prevStore, store, prevValue, curValue, info)) {\n              _this.reRender();\n              return;\n            }\n            break;\n          }\n        case 'dependenciesUpdate':\n          {\n            /**\n             * Trigger when marked `dependencies` updated. Related fields will all update\n             */\n            var dependencyList = dependencies.map(getNamePath);\n            // No need for `namePathMath` check and `shouldUpdate` check, since `valueUpdate` will be\n            // emitted earlier and they will work there\n            // If set it may cause unnecessary twice rerendering\n            if (dependencyList.some(function (dependency) {\n              return containsNamePath(info.relatedFields, dependency);\n            })) {\n              _this.reRender();\n              return;\n            }\n            break;\n          }\n        default:\n          // 1. If `namePath` exists in `namePathList`, means it's related value and should update\n          //      For example <List name=\"list\"><Field name={['list', 0]}></List>\n          //      If `namePathList` is [['list']] (List value update), Field should be updated\n          //      If `namePathList` is [['list', 0]] (Field value update), List shouldn't be updated\n          // 2.\n          //   2.1 If `dependencies` is set, `name` is not set and `shouldUpdate` is not set,\n          //       don't use `shouldUpdate`. `dependencies` is view as a shortcut if `shouldUpdate`\n          //       is not provided\n          //   2.2 If `shouldUpdate` provided, use customize logic to update the field\n          //       else to check if value changed\n          if (namePathMatch || (!dependencies.length || namePath.length || shouldUpdate) && requireUpdate(shouldUpdate, prevStore, store, prevValue, curValue, info)) {\n            _this.reRender();\n            return;\n          }\n          break;\n      }\n      if (shouldUpdate === true) {\n        _this.reRender();\n      }\n    });\n    _defineProperty(_assertThisInitialized(_this), \"validateRules\", function (options) {\n      // We should fixed namePath & value to avoid developer change then by form function\n      var namePath = _this.getNamePath();\n      var currentValue = _this.getValue();\n      var _ref2 = options || {},\n        triggerName = _ref2.triggerName,\n        _ref2$validateOnly = _ref2.validateOnly,\n        validateOnly = _ref2$validateOnly === void 0 ? false : _ref2$validateOnly;\n\n      // Force change to async to avoid rule OOD under renderProps field\n      var rootPromise = Promise.resolve().then( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n        var _this$props5, _this$props5$validate, validateFirst, messageVariables, validateDebounce, filteredRules, promise;\n        return _regeneratorRuntime().wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              if (_this.mounted) {\n                _context.next = 2;\n                break;\n              }\n              return _context.abrupt(\"return\", []);\n            case 2:\n              _this$props5 = _this.props, _this$props5$validate = _this$props5.validateFirst, validateFirst = _this$props5$validate === void 0 ? false : _this$props5$validate, messageVariables = _this$props5.messageVariables, validateDebounce = _this$props5.validateDebounce; // Start validate\n              filteredRules = _this.getRules();\n              if (triggerName) {\n                filteredRules = filteredRules.filter(function (rule) {\n                  return rule;\n                }).filter(function (rule) {\n                  var validateTrigger = rule.validateTrigger;\n                  if (!validateTrigger) {\n                    return true;\n                  }\n                  var triggerList = toArray(validateTrigger);\n                  return triggerList.includes(triggerName);\n                });\n              }\n\n              // Wait for debounce. Skip if no `triggerName` since its from `validateFields / submit`\n              if (!(validateDebounce && triggerName)) {\n                _context.next = 10;\n                break;\n              }\n              _context.next = 8;\n              return new Promise(function (resolve) {\n                setTimeout(resolve, validateDebounce);\n              });\n            case 8:\n              if (!(_this.validatePromise !== rootPromise)) {\n                _context.next = 10;\n                break;\n              }\n              return _context.abrupt(\"return\", []);\n            case 10:\n              promise = validateRules(namePath, currentValue, filteredRules, options, validateFirst, messageVariables);\n              promise.catch(function (e) {\n                return e;\n              }).then(function () {\n                var ruleErrors = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : EMPTY_ERRORS;\n                if (_this.validatePromise === rootPromise) {\n                  var _ruleErrors$forEach;\n                  _this.validatePromise = null;\n\n                  // Get errors & warnings\n                  var nextErrors = [];\n                  var nextWarnings = [];\n                  (_ruleErrors$forEach = ruleErrors.forEach) === null || _ruleErrors$forEach === void 0 || _ruleErrors$forEach.call(ruleErrors, function (_ref4) {\n                    var warningOnly = _ref4.rule.warningOnly,\n                      _ref4$errors = _ref4.errors,\n                      errors = _ref4$errors === void 0 ? EMPTY_ERRORS : _ref4$errors;\n                    if (warningOnly) {\n                      nextWarnings.push.apply(nextWarnings, _toConsumableArray(errors));\n                    } else {\n                      nextErrors.push.apply(nextErrors, _toConsumableArray(errors));\n                    }\n                  });\n                  _this.errors = nextErrors;\n                  _this.warnings = nextWarnings;\n                  _this.triggerMetaEvent();\n                  _this.reRender();\n                }\n              });\n              return _context.abrupt(\"return\", promise);\n            case 13:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee);\n      })));\n      if (validateOnly) {\n        return rootPromise;\n      }\n      _this.validatePromise = rootPromise;\n      _this.dirty = true;\n      _this.errors = EMPTY_ERRORS;\n      _this.warnings = EMPTY_ERRORS;\n      _this.triggerMetaEvent();\n\n      // Force trigger re-render since we need sync renderProps with new meta\n      _this.reRender();\n      return rootPromise;\n    });\n    _defineProperty(_assertThisInitialized(_this), \"isFieldValidating\", function () {\n      return !!_this.validatePromise;\n    });\n    _defineProperty(_assertThisInitialized(_this), \"isFieldTouched\", function () {\n      return _this.touched;\n    });\n    _defineProperty(_assertThisInitialized(_this), \"isFieldDirty\", function () {\n      // Touched or validate or has initialValue\n      if (_this.dirty || _this.props.initialValue !== undefined) {\n        return true;\n      }\n\n      // Form set initialValue\n      var fieldContext = _this.props.fieldContext;\n      var _fieldContext$getInte = fieldContext.getInternalHooks(HOOK_MARK),\n        getInitialValue = _fieldContext$getInte.getInitialValue;\n      if (getInitialValue(_this.getNamePath()) !== undefined) {\n        return true;\n      }\n      return false;\n    });\n    _defineProperty(_assertThisInitialized(_this), \"getErrors\", function () {\n      return _this.errors;\n    });\n    _defineProperty(_assertThisInitialized(_this), \"getWarnings\", function () {\n      return _this.warnings;\n    });\n    _defineProperty(_assertThisInitialized(_this), \"isListField\", function () {\n      return _this.props.isListField;\n    });\n    _defineProperty(_assertThisInitialized(_this), \"isList\", function () {\n      return _this.props.isList;\n    });\n    _defineProperty(_assertThisInitialized(_this), \"isPreserve\", function () {\n      return _this.props.preserve;\n    });\n    // ============================= Child Component =============================\n    _defineProperty(_assertThisInitialized(_this), \"getMeta\", function () {\n      // Make error & validating in cache to save perf\n      _this.prevValidating = _this.isFieldValidating();\n      var meta = {\n        touched: _this.isFieldTouched(),\n        validating: _this.prevValidating,\n        errors: _this.errors,\n        warnings: _this.warnings,\n        name: _this.getNamePath(),\n        validated: _this.validatePromise === null\n      };\n      return meta;\n    });\n    // Only return validate child node. If invalidate, will do nothing about field.\n    _defineProperty(_assertThisInitialized(_this), \"getOnlyChild\", function (children) {\n      // Support render props\n      if (typeof children === 'function') {\n        var _meta2 = _this.getMeta();\n        return _objectSpread(_objectSpread({}, _this.getOnlyChild(children(_this.getControlled(), _meta2, _this.props.fieldContext))), {}, {\n          isFunction: true\n        });\n      }\n\n      // Filed element only\n      var childList = toChildrenArray(children);\n      if (childList.length !== 1 || ! /*#__PURE__*/React.isValidElement(childList[0])) {\n        return {\n          child: childList,\n          isFunction: false\n        };\n      }\n      return {\n        child: childList[0],\n        isFunction: false\n      };\n    });\n    // ============================== Field Control ==============================\n    _defineProperty(_assertThisInitialized(_this), \"getValue\", function (store) {\n      var getFieldsValue = _this.props.fieldContext.getFieldsValue;\n      var namePath = _this.getNamePath();\n      return getValue(store || getFieldsValue(true), namePath);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"getControlled\", function () {\n      var childProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var _this$props6 = _this.props,\n        name = _this$props6.name,\n        trigger = _this$props6.trigger,\n        validateTrigger = _this$props6.validateTrigger,\n        getValueFromEvent = _this$props6.getValueFromEvent,\n        normalize = _this$props6.normalize,\n        valuePropName = _this$props6.valuePropName,\n        getValueProps = _this$props6.getValueProps,\n        fieldContext = _this$props6.fieldContext;\n      var mergedValidateTrigger = validateTrigger !== undefined ? validateTrigger : fieldContext.validateTrigger;\n      var namePath = _this.getNamePath();\n      var getInternalHooks = fieldContext.getInternalHooks,\n        getFieldsValue = fieldContext.getFieldsValue;\n      var _getInternalHooks = getInternalHooks(HOOK_MARK),\n        dispatch = _getInternalHooks.dispatch;\n      var value = _this.getValue();\n      var mergedGetValueProps = getValueProps || function (val) {\n        return _defineProperty({}, valuePropName, val);\n      };\n      var originTriggerFunc = childProps[trigger];\n      var valueProps = name !== undefined ? mergedGetValueProps(value) : {};\n\n      // warning when prop value is function\n      if (process.env.NODE_ENV !== 'production' && valueProps) {\n        Object.keys(valueProps).forEach(function (key) {\n          warning(typeof valueProps[key] !== 'function', \"It's not recommended to generate dynamic function prop by `getValueProps`. Please pass it to child component directly (prop: \".concat(key, \")\"));\n        });\n      }\n      var control = _objectSpread(_objectSpread({}, childProps), valueProps);\n\n      // Add trigger\n      control[trigger] = function () {\n        // Mark as touched\n        _this.touched = true;\n        _this.dirty = true;\n        _this.triggerMetaEvent();\n        var newValue;\n        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n          args[_key] = arguments[_key];\n        }\n        if (getValueFromEvent) {\n          newValue = getValueFromEvent.apply(void 0, args);\n        } else {\n          newValue = defaultGetValueFromEvent.apply(void 0, [valuePropName].concat(args));\n        }\n        if (normalize) {\n          newValue = normalize(newValue, value, getFieldsValue(true));\n        }\n        if (newValue !== value) {\n          dispatch({\n            type: 'updateValue',\n            namePath: namePath,\n            value: newValue\n          });\n        }\n        if (originTriggerFunc) {\n          originTriggerFunc.apply(void 0, args);\n        }\n      };\n\n      // Add validateTrigger\n      var validateTriggerList = toArray(mergedValidateTrigger || []);\n      validateTriggerList.forEach(function (triggerName) {\n        // Wrap additional function of component, so that we can get latest value from store\n        var originTrigger = control[triggerName];\n        control[triggerName] = function () {\n          if (originTrigger) {\n            originTrigger.apply(void 0, arguments);\n          }\n\n          // Always use latest rules\n          var rules = _this.props.rules;\n          if (rules && rules.length) {\n            // We dispatch validate to root,\n            // since it will update related data with other field with same name\n            dispatch({\n              type: 'validateField',\n              namePath: namePath,\n              triggerName: triggerName\n            });\n          }\n        };\n      });\n      return control;\n    });\n    if (props.fieldContext) {\n      var getInternalHooks = props.fieldContext.getInternalHooks;\n      var _getInternalHooks2 = getInternalHooks(HOOK_MARK),\n        initEntityValue = _getInternalHooks2.initEntityValue;\n      initEntityValue(_assertThisInitialized(_this));\n    }\n    return _this;\n  }\n  _createClass(Field, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var _this$props7 = this.props,\n        shouldUpdate = _this$props7.shouldUpdate,\n        fieldContext = _this$props7.fieldContext;\n      this.mounted = true;\n\n      // Register on init\n      if (fieldContext) {\n        var getInternalHooks = fieldContext.getInternalHooks;\n        var _getInternalHooks3 = getInternalHooks(HOOK_MARK),\n          registerField = _getInternalHooks3.registerField;\n        this.cancelRegisterFunc = registerField(this);\n      }\n\n      // One more render for component in case fields not ready\n      if (shouldUpdate === true) {\n        this.reRender();\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.cancelRegister();\n      this.triggerMetaEvent(true);\n      this.mounted = false;\n    }\n  }, {\n    key: \"reRender\",\n    value: function reRender() {\n      if (!this.mounted) return;\n      this.forceUpdate();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var resetCount = this.state.resetCount;\n      var children = this.props.children;\n      var _this$getOnlyChild = this.getOnlyChild(children),\n        child = _this$getOnlyChild.child,\n        isFunction = _this$getOnlyChild.isFunction;\n\n      // Not need to `cloneElement` since user can handle this in render function self\n      var returnChildNode;\n      if (isFunction) {\n        returnChildNode = child;\n      } else if ( /*#__PURE__*/React.isValidElement(child)) {\n        returnChildNode = /*#__PURE__*/React.cloneElement(child, this.getControlled(child.props));\n      } else {\n        warning(!child, '`children` of Field is not validate ReactElement.');\n        returnChildNode = child;\n      }\n      return /*#__PURE__*/React.createElement(React.Fragment, {\n        key: resetCount\n      }, returnChildNode);\n    }\n  }]);\n  return Field;\n}(React.Component);\n_defineProperty(Field, \"contextType\", FieldContext);\n_defineProperty(Field, \"defaultProps\", {\n  trigger: 'onChange',\n  valuePropName: 'value'\n});\nfunction WrapperField(_ref6) {\n  var _restProps$isListFiel;\n  var name = _ref6.name,\n    restProps = _objectWithoutProperties(_ref6, _excluded);\n  var fieldContext = React.useContext(FieldContext);\n  var listContext = React.useContext(ListContext);\n  var namePath = name !== undefined ? getNamePath(name) : undefined;\n  var isMergedListField = (_restProps$isListFiel = restProps.isListField) !== null && _restProps$isListFiel !== void 0 ? _restProps$isListFiel : !!listContext;\n  var key = 'keep';\n  if (!isMergedListField) {\n    key = \"_\".concat((namePath || []).join('_'));\n  }\n\n  // Warning if it's a directly list field.\n  // We can still support multiple level field preserve.\n  if (process.env.NODE_ENV !== 'production' && restProps.preserve === false && isMergedListField && namePath.length <= 1) {\n    warning(false, '`preserve` should not apply on Form.List fields.');\n  }\n  return /*#__PURE__*/React.createElement(Field, _extends({\n    key: key,\n    name: namePath,\n    isListField: isMergedListField\n  }, restProps, {\n    fieldContext: fieldContext\n  }));\n}\nexport default WrapperField;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nimport warning from \"rc-util/es/warning\";\nimport FieldContext from \"./FieldContext\";\nimport Field from \"./Field\";\nimport { move as _move, getNamePath } from \"./utils/valueUtil\";\nimport ListContext from \"./ListContext\";\nfunction List(_ref) {\n  var name = _ref.name,\n    initialValue = _ref.initialValue,\n    children = _ref.children,\n    rules = _ref.rules,\n    validateTrigger = _ref.validateTrigger,\n    isListField = _ref.isListField;\n  var context = React.useContext(FieldContext);\n  var wrapperListContext = React.useContext(ListContext);\n  var keyRef = React.useRef({\n    keys: [],\n    id: 0\n  });\n  var keyManager = keyRef.current;\n  var prefixName = React.useMemo(function () {\n    var parentPrefixName = getNamePath(context.prefixName) || [];\n    return [].concat(_toConsumableArray(parentPrefixName), _toConsumableArray(getNamePath(name)));\n  }, [context.prefixName, name]);\n  var fieldContext = React.useMemo(function () {\n    return _objectSpread(_objectSpread({}, context), {}, {\n      prefixName: prefixName\n    });\n  }, [context, prefixName]);\n\n  // List context\n  var listContext = React.useMemo(function () {\n    return {\n      getKey: function getKey(namePath) {\n        var len = prefixName.length;\n        var pathName = namePath[len];\n        return [keyManager.keys[pathName], namePath.slice(len + 1)];\n      }\n    };\n  }, [prefixName]);\n\n  // User should not pass `children` as other type.\n  if (typeof children !== 'function') {\n    warning(false, 'Form.List only accepts function as children.');\n    return null;\n  }\n  var shouldUpdate = function shouldUpdate(prevValue, nextValue, _ref2) {\n    var source = _ref2.source;\n    if (source === 'internal') {\n      return false;\n    }\n    return prevValue !== nextValue;\n  };\n  return /*#__PURE__*/React.createElement(ListContext.Provider, {\n    value: listContext\n  }, /*#__PURE__*/React.createElement(FieldContext.Provider, {\n    value: fieldContext\n  }, /*#__PURE__*/React.createElement(Field, {\n    name: [],\n    shouldUpdate: shouldUpdate,\n    rules: rules,\n    validateTrigger: validateTrigger,\n    initialValue: initialValue,\n    isList: true,\n    isListField: isListField !== null && isListField !== void 0 ? isListField : !!wrapperListContext\n  }, function (_ref3, meta) {\n    var _ref3$value = _ref3.value,\n      value = _ref3$value === void 0 ? [] : _ref3$value,\n      onChange = _ref3.onChange;\n    var getFieldValue = context.getFieldValue;\n    var getNewValue = function getNewValue() {\n      var values = getFieldValue(prefixName || []);\n      return values || [];\n    };\n    /**\n     * Always get latest value in case user update fields by `form` api.\n     */\n    var operations = {\n      add: function add(defaultValue, index) {\n        // Mapping keys\n        var newValue = getNewValue();\n        if (index >= 0 && index <= newValue.length) {\n          keyManager.keys = [].concat(_toConsumableArray(keyManager.keys.slice(0, index)), [keyManager.id], _toConsumableArray(keyManager.keys.slice(index)));\n          onChange([].concat(_toConsumableArray(newValue.slice(0, index)), [defaultValue], _toConsumableArray(newValue.slice(index))));\n        } else {\n          if (process.env.NODE_ENV !== 'production' && (index < 0 || index > newValue.length)) {\n            warning(false, 'The second parameter of the add function should be a valid positive number.');\n          }\n          keyManager.keys = [].concat(_toConsumableArray(keyManager.keys), [keyManager.id]);\n          onChange([].concat(_toConsumableArray(newValue), [defaultValue]));\n        }\n        keyManager.id += 1;\n      },\n      remove: function remove(index) {\n        var newValue = getNewValue();\n        var indexSet = new Set(Array.isArray(index) ? index : [index]);\n        if (indexSet.size <= 0) {\n          return;\n        }\n        keyManager.keys = keyManager.keys.filter(function (_, keysIndex) {\n          return !indexSet.has(keysIndex);\n        });\n\n        // Trigger store change\n        onChange(newValue.filter(function (_, valueIndex) {\n          return !indexSet.has(valueIndex);\n        }));\n      },\n      move: function move(from, to) {\n        if (from === to) {\n          return;\n        }\n        var newValue = getNewValue();\n\n        // Do not handle out of range\n        if (from < 0 || from >= newValue.length || to < 0 || to >= newValue.length) {\n          return;\n        }\n        keyManager.keys = _move(keyManager.keys, from, to);\n\n        // Trigger store change\n        onChange(_move(newValue, from, to));\n      }\n    };\n    var listValue = value || [];\n    if (!Array.isArray(listValue)) {\n      listValue = [];\n      if (process.env.NODE_ENV !== 'production') {\n        warning(false, \"Current value of '\".concat(prefixName.join(' > '), \"' is not an array type.\"));\n      }\n    }\n    return children(listValue.map(function (__, index) {\n      var key = keyManager.keys[index];\n      if (key === undefined) {\n        keyManager.keys[index] = keyManager.id;\n        key = keyManager.keys[index];\n        keyManager.id += 1;\n      }\n      return {\n        name: index,\n        key: key,\n        isListField: true\n      };\n    }), operations, meta);\n  })));\n}\nexport default List;","export function allPromiseFinish(promiseList) {\n  var hasError = false;\n  var count = promiseList.length;\n  var results = [];\n  if (!promiseList.length) {\n    return Promise.resolve([]);\n  }\n  return new Promise(function (resolve, reject) {\n    promiseList.forEach(function (promise, index) {\n      promise.catch(function (e) {\n        hasError = true;\n        return e;\n      }).then(function (result) {\n        count -= 1;\n        results[index] = result;\n        if (count > 0) {\n          return;\n        }\n        if (hasError) {\n          reject(results);\n        }\n        resolve(results);\n      });\n    });\n  });\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar SPLIT = '__@field_split__';\n\n/**\n * Convert name path into string to fast the fetch speed of Map.\n */\nfunction normalize(namePath) {\n  return namePath.map(function (cell) {\n    return \"\".concat(_typeof(cell), \":\").concat(cell);\n  })\n  // Magic split\n  .join(SPLIT);\n}\n\n/**\n * NameMap like a `Map` but accepts `string[]` as key.\n */\nvar NameMap = /*#__PURE__*/function () {\n  function NameMap() {\n    _classCallCheck(this, NameMap);\n    _defineProperty(this, \"kvs\", new Map());\n  }\n  _createClass(NameMap, [{\n    key: \"set\",\n    value: function set(key, value) {\n      this.kvs.set(normalize(key), value);\n    }\n  }, {\n    key: \"get\",\n    value: function get(key) {\n      return this.kvs.get(normalize(key));\n    }\n  }, {\n    key: \"update\",\n    value: function update(key, updater) {\n      var origin = this.get(key);\n      var next = updater(origin);\n      if (!next) {\n        this.delete(key);\n      } else {\n        this.set(key, next);\n      }\n    }\n  }, {\n    key: \"delete\",\n    value: function _delete(key) {\n      this.kvs.delete(normalize(key));\n    }\n\n    // Since we only use this in test, let simply realize this\n  }, {\n    key: \"map\",\n    value: function map(callback) {\n      return _toConsumableArray(this.kvs.entries()).map(function (_ref) {\n        var _ref2 = _slicedToArray(_ref, 2),\n          key = _ref2[0],\n          value = _ref2[1];\n        var cells = key.split(SPLIT);\n        return callback({\n          key: cells.map(function (cell) {\n            var _cell$match = cell.match(/^([^:]*):(.*)$/),\n              _cell$match2 = _slicedToArray(_cell$match, 3),\n              type = _cell$match2[1],\n              unit = _cell$match2[2];\n            return type === 'number' ? Number(unit) : unit;\n          }),\n          value: value\n        });\n      });\n    }\n  }, {\n    key: \"toJSON\",\n    value: function toJSON() {\n      var json = {};\n      this.map(function (_ref3) {\n        var key = _ref3.key,\n          value = _ref3.value;\n        json[key.join('.')] = value;\n        return null;\n      });\n      return json;\n    }\n  }]);\n  return NameMap;\n}();\nexport default NameMap;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar _excluded = [\"name\"];\nimport { merge } from \"rc-util/es/utils/set\";\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport { HOOK_MARK } from \"./FieldContext\";\nimport { allPromiseFinish } from \"./utils/asyncUtil\";\nimport { defaultValidateMessages } from \"./utils/messages\";\nimport NameMap from \"./utils/NameMap\";\nimport { cloneByNamePathList, containsNamePath, getNamePath, getValue, matchNamePath, setValue } from \"./utils/valueUtil\";\nexport var FormStore = /*#__PURE__*/_createClass(function FormStore(forceRootUpdate) {\n  var _this = this;\n  _classCallCheck(this, FormStore);\n  _defineProperty(this, \"formHooked\", false);\n  _defineProperty(this, \"forceRootUpdate\", void 0);\n  _defineProperty(this, \"subscribable\", true);\n  _defineProperty(this, \"store\", {});\n  _defineProperty(this, \"fieldEntities\", []);\n  _defineProperty(this, \"initialValues\", {});\n  _defineProperty(this, \"callbacks\", {});\n  _defineProperty(this, \"validateMessages\", null);\n  _defineProperty(this, \"preserve\", null);\n  _defineProperty(this, \"lastValidatePromise\", null);\n  _defineProperty(this, \"getForm\", function () {\n    return {\n      getFieldValue: _this.getFieldValue,\n      getFieldsValue: _this.getFieldsValue,\n      getFieldError: _this.getFieldError,\n      getFieldWarning: _this.getFieldWarning,\n      getFieldsError: _this.getFieldsError,\n      isFieldsTouched: _this.isFieldsTouched,\n      isFieldTouched: _this.isFieldTouched,\n      isFieldValidating: _this.isFieldValidating,\n      isFieldsValidating: _this.isFieldsValidating,\n      resetFields: _this.resetFields,\n      setFields: _this.setFields,\n      setFieldValue: _this.setFieldValue,\n      setFieldsValue: _this.setFieldsValue,\n      validateFields: _this.validateFields,\n      submit: _this.submit,\n      _init: true,\n      getInternalHooks: _this.getInternalHooks\n    };\n  });\n  // ======================== Internal Hooks ========================\n  _defineProperty(this, \"getInternalHooks\", function (key) {\n    if (key === HOOK_MARK) {\n      _this.formHooked = true;\n      return {\n        dispatch: _this.dispatch,\n        initEntityValue: _this.initEntityValue,\n        registerField: _this.registerField,\n        useSubscribe: _this.useSubscribe,\n        setInitialValues: _this.setInitialValues,\n        destroyForm: _this.destroyForm,\n        setCallbacks: _this.setCallbacks,\n        setValidateMessages: _this.setValidateMessages,\n        getFields: _this.getFields,\n        setPreserve: _this.setPreserve,\n        getInitialValue: _this.getInitialValue,\n        registerWatch: _this.registerWatch\n      };\n    }\n    warning(false, '`getInternalHooks` is internal usage. Should not call directly.');\n    return null;\n  });\n  _defineProperty(this, \"useSubscribe\", function (subscribable) {\n    _this.subscribable = subscribable;\n  });\n  /**\n   * Record prev Form unmount fieldEntities which config preserve false.\n   * This need to be refill with initialValues instead of store value.\n   */\n  _defineProperty(this, \"prevWithoutPreserves\", null);\n  /**\n   * First time `setInitialValues` should update store with initial value\n   */\n  _defineProperty(this, \"setInitialValues\", function (initialValues, init) {\n    _this.initialValues = initialValues || {};\n    if (init) {\n      var _this$prevWithoutPres;\n      var nextStore = merge(initialValues, _this.store);\n\n      // We will take consider prev form unmount fields.\n      // When the field is not `preserve`, we need fill this with initialValues instead of store.\n      // eslint-disable-next-line array-callback-return\n      (_this$prevWithoutPres = _this.prevWithoutPreserves) === null || _this$prevWithoutPres === void 0 || _this$prevWithoutPres.map(function (_ref) {\n        var namePath = _ref.key;\n        nextStore = setValue(nextStore, namePath, getValue(initialValues, namePath));\n      });\n      _this.prevWithoutPreserves = null;\n      _this.updateStore(nextStore);\n    }\n  });\n  _defineProperty(this, \"destroyForm\", function (clearOnDestroy) {\n    if (clearOnDestroy) {\n      // destroy form reset store\n      _this.updateStore({});\n    } else {\n      // Fill preserve fields\n      var prevWithoutPreserves = new NameMap();\n      _this.getFieldEntities(true).forEach(function (entity) {\n        if (!_this.isMergedPreserve(entity.isPreserve())) {\n          prevWithoutPreserves.set(entity.getNamePath(), true);\n        }\n      });\n      _this.prevWithoutPreserves = prevWithoutPreserves;\n    }\n  });\n  _defineProperty(this, \"getInitialValue\", function (namePath) {\n    var initValue = getValue(_this.initialValues, namePath);\n\n    // Not cloneDeep when without `namePath`\n    return namePath.length ? merge(initValue) : initValue;\n  });\n  _defineProperty(this, \"setCallbacks\", function (callbacks) {\n    _this.callbacks = callbacks;\n  });\n  _defineProperty(this, \"setValidateMessages\", function (validateMessages) {\n    _this.validateMessages = validateMessages;\n  });\n  _defineProperty(this, \"setPreserve\", function (preserve) {\n    _this.preserve = preserve;\n  });\n  // ============================= Watch ============================\n  _defineProperty(this, \"watchList\", []);\n  _defineProperty(this, \"registerWatch\", function (callback) {\n    _this.watchList.push(callback);\n    return function () {\n      _this.watchList = _this.watchList.filter(function (fn) {\n        return fn !== callback;\n      });\n    };\n  });\n  _defineProperty(this, \"notifyWatch\", function () {\n    var namePath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n    // No need to cost perf when nothing need to watch\n    if (_this.watchList.length) {\n      var values = _this.getFieldsValue();\n      var allValues = _this.getFieldsValue(true);\n      _this.watchList.forEach(function (callback) {\n        callback(values, allValues, namePath);\n      });\n    }\n  });\n  // ========================== Dev Warning =========================\n  _defineProperty(this, \"timeoutId\", null);\n  _defineProperty(this, \"warningUnhooked\", function () {\n    if (process.env.NODE_ENV !== 'production' && !_this.timeoutId && typeof window !== 'undefined') {\n      _this.timeoutId = setTimeout(function () {\n        _this.timeoutId = null;\n        if (!_this.formHooked) {\n          warning(false, 'Instance created by `useForm` is not connected to any Form element. Forget to pass `form` prop?');\n        }\n      });\n    }\n  });\n  // ============================ Store =============================\n  _defineProperty(this, \"updateStore\", function (nextStore) {\n    _this.store = nextStore;\n  });\n  // ============================ Fields ============================\n  /**\n   * Get registered field entities.\n   * @param pure Only return field which has a `name`. Default: false\n   */\n  _defineProperty(this, \"getFieldEntities\", function () {\n    var pure = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    if (!pure) {\n      return _this.fieldEntities;\n    }\n    return _this.fieldEntities.filter(function (field) {\n      return field.getNamePath().length;\n    });\n  });\n  _defineProperty(this, \"getFieldsMap\", function () {\n    var pure = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    var cache = new NameMap();\n    _this.getFieldEntities(pure).forEach(function (field) {\n      var namePath = field.getNamePath();\n      cache.set(namePath, field);\n    });\n    return cache;\n  });\n  _defineProperty(this, \"getFieldEntitiesForNamePathList\", function (nameList) {\n    if (!nameList) {\n      return _this.getFieldEntities(true);\n    }\n    var cache = _this.getFieldsMap(true);\n    return nameList.map(function (name) {\n      var namePath = getNamePath(name);\n      return cache.get(namePath) || {\n        INVALIDATE_NAME_PATH: getNamePath(name)\n      };\n    });\n  });\n  _defineProperty(this, \"getFieldsValue\", function (nameList, filterFunc) {\n    _this.warningUnhooked();\n\n    // Fill args\n    var mergedNameList;\n    var mergedFilterFunc;\n    var mergedStrict;\n    if (nameList === true || Array.isArray(nameList)) {\n      mergedNameList = nameList;\n      mergedFilterFunc = filterFunc;\n    } else if (nameList && _typeof(nameList) === 'object') {\n      mergedStrict = nameList.strict;\n      mergedFilterFunc = nameList.filter;\n    }\n    if (mergedNameList === true && !mergedFilterFunc) {\n      return _this.store;\n    }\n    var fieldEntities = _this.getFieldEntitiesForNamePathList(Array.isArray(mergedNameList) ? mergedNameList : null);\n    var filteredNameList = [];\n    fieldEntities.forEach(function (entity) {\n      var _isListField, _ref3;\n      var namePath = 'INVALIDATE_NAME_PATH' in entity ? entity.INVALIDATE_NAME_PATH : entity.getNamePath();\n\n      // Ignore when it's a list item and not specific the namePath,\n      // since parent field is already take in count\n      if (mergedStrict) {\n        var _isList, _ref2;\n        if ((_isList = (_ref2 = entity).isList) !== null && _isList !== void 0 && _isList.call(_ref2)) {\n          return;\n        }\n      } else if (!mergedNameList && (_isListField = (_ref3 = entity).isListField) !== null && _isListField !== void 0 && _isListField.call(_ref3)) {\n        return;\n      }\n      if (!mergedFilterFunc) {\n        filteredNameList.push(namePath);\n      } else {\n        var meta = 'getMeta' in entity ? entity.getMeta() : null;\n        if (mergedFilterFunc(meta)) {\n          filteredNameList.push(namePath);\n        }\n      }\n    });\n    return cloneByNamePathList(_this.store, filteredNameList.map(getNamePath));\n  });\n  _defineProperty(this, \"getFieldValue\", function (name) {\n    _this.warningUnhooked();\n    var namePath = getNamePath(name);\n    return getValue(_this.store, namePath);\n  });\n  _defineProperty(this, \"getFieldsError\", function (nameList) {\n    _this.warningUnhooked();\n    var fieldEntities = _this.getFieldEntitiesForNamePathList(nameList);\n    return fieldEntities.map(function (entity, index) {\n      if (entity && !('INVALIDATE_NAME_PATH' in entity)) {\n        return {\n          name: entity.getNamePath(),\n          errors: entity.getErrors(),\n          warnings: entity.getWarnings()\n        };\n      }\n      return {\n        name: getNamePath(nameList[index]),\n        errors: [],\n        warnings: []\n      };\n    });\n  });\n  _defineProperty(this, \"getFieldError\", function (name) {\n    _this.warningUnhooked();\n    var namePath = getNamePath(name);\n    var fieldError = _this.getFieldsError([namePath])[0];\n    return fieldError.errors;\n  });\n  _defineProperty(this, \"getFieldWarning\", function (name) {\n    _this.warningUnhooked();\n    var namePath = getNamePath(name);\n    var fieldError = _this.getFieldsError([namePath])[0];\n    return fieldError.warnings;\n  });\n  _defineProperty(this, \"isFieldsTouched\", function () {\n    _this.warningUnhooked();\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    var arg0 = args[0],\n      arg1 = args[1];\n    var namePathList;\n    var isAllFieldsTouched = false;\n    if (args.length === 0) {\n      namePathList = null;\n    } else if (args.length === 1) {\n      if (Array.isArray(arg0)) {\n        namePathList = arg0.map(getNamePath);\n        isAllFieldsTouched = false;\n      } else {\n        namePathList = null;\n        isAllFieldsTouched = arg0;\n      }\n    } else {\n      namePathList = arg0.map(getNamePath);\n      isAllFieldsTouched = arg1;\n    }\n    var fieldEntities = _this.getFieldEntities(true);\n    var isFieldTouched = function isFieldTouched(field) {\n      return field.isFieldTouched();\n    };\n\n    // ===== Will get fully compare when not config namePathList =====\n    if (!namePathList) {\n      return isAllFieldsTouched ? fieldEntities.every(function (entity) {\n        return isFieldTouched(entity) || entity.isList();\n      }) : fieldEntities.some(isFieldTouched);\n    }\n\n    // Generate a nest tree for validate\n    var map = new NameMap();\n    namePathList.forEach(function (shortNamePath) {\n      map.set(shortNamePath, []);\n    });\n    fieldEntities.forEach(function (field) {\n      var fieldNamePath = field.getNamePath();\n\n      // Find matched entity and put into list\n      namePathList.forEach(function (shortNamePath) {\n        if (shortNamePath.every(function (nameUnit, i) {\n          return fieldNamePath[i] === nameUnit;\n        })) {\n          map.update(shortNamePath, function (list) {\n            return [].concat(_toConsumableArray(list), [field]);\n          });\n        }\n      });\n    });\n\n    // Check if NameMap value is touched\n    var isNamePathListTouched = function isNamePathListTouched(entities) {\n      return entities.some(isFieldTouched);\n    };\n    var namePathListEntities = map.map(function (_ref4) {\n      var value = _ref4.value;\n      return value;\n    });\n    return isAllFieldsTouched ? namePathListEntities.every(isNamePathListTouched) : namePathListEntities.some(isNamePathListTouched);\n  });\n  _defineProperty(this, \"isFieldTouched\", function (name) {\n    _this.warningUnhooked();\n    return _this.isFieldsTouched([name]);\n  });\n  _defineProperty(this, \"isFieldsValidating\", function (nameList) {\n    _this.warningUnhooked();\n    var fieldEntities = _this.getFieldEntities();\n    if (!nameList) {\n      return fieldEntities.some(function (testField) {\n        return testField.isFieldValidating();\n      });\n    }\n    var namePathList = nameList.map(getNamePath);\n    return fieldEntities.some(function (testField) {\n      var fieldNamePath = testField.getNamePath();\n      return containsNamePath(namePathList, fieldNamePath) && testField.isFieldValidating();\n    });\n  });\n  _defineProperty(this, \"isFieldValidating\", function (name) {\n    _this.warningUnhooked();\n    return _this.isFieldsValidating([name]);\n  });\n  /**\n   * Reset Field with field `initialValue` prop.\n   * Can pass `entities` or `namePathList` or just nothing.\n   */\n  _defineProperty(this, \"resetWithFieldInitialValue\", function () {\n    var info = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    // Create cache\n    var cache = new NameMap();\n    var fieldEntities = _this.getFieldEntities(true);\n    fieldEntities.forEach(function (field) {\n      var initialValue = field.props.initialValue;\n      var namePath = field.getNamePath();\n\n      // Record only if has `initialValue`\n      if (initialValue !== undefined) {\n        var records = cache.get(namePath) || new Set();\n        records.add({\n          entity: field,\n          value: initialValue\n        });\n        cache.set(namePath, records);\n      }\n    });\n\n    // Reset\n    var resetWithFields = function resetWithFields(entities) {\n      entities.forEach(function (field) {\n        var initialValue = field.props.initialValue;\n        if (initialValue !== undefined) {\n          var namePath = field.getNamePath();\n          var formInitialValue = _this.getInitialValue(namePath);\n          if (formInitialValue !== undefined) {\n            // Warning if conflict with form initialValues and do not modify value\n            warning(false, \"Form already set 'initialValues' with path '\".concat(namePath.join('.'), \"'. Field can not overwrite it.\"));\n          } else {\n            var records = cache.get(namePath);\n            if (records && records.size > 1) {\n              // Warning if multiple field set `initialValue`and do not modify value\n              warning(false, \"Multiple Field with path '\".concat(namePath.join('.'), \"' set 'initialValue'. Can not decide which one to pick.\"));\n            } else if (records) {\n              var originValue = _this.getFieldValue(namePath);\n              var isListField = field.isListField();\n\n              // Set `initialValue`\n              if (!isListField && (!info.skipExist || originValue === undefined)) {\n                _this.updateStore(setValue(_this.store, namePath, _toConsumableArray(records)[0].value));\n              }\n            }\n          }\n        }\n      });\n    };\n    var requiredFieldEntities;\n    if (info.entities) {\n      requiredFieldEntities = info.entities;\n    } else if (info.namePathList) {\n      requiredFieldEntities = [];\n      info.namePathList.forEach(function (namePath) {\n        var records = cache.get(namePath);\n        if (records) {\n          var _requiredFieldEntitie;\n          (_requiredFieldEntitie = requiredFieldEntities).push.apply(_requiredFieldEntitie, _toConsumableArray(_toConsumableArray(records).map(function (r) {\n            return r.entity;\n          })));\n        }\n      });\n    } else {\n      requiredFieldEntities = fieldEntities;\n    }\n    resetWithFields(requiredFieldEntities);\n  });\n  _defineProperty(this, \"resetFields\", function (nameList) {\n    _this.warningUnhooked();\n    var prevStore = _this.store;\n    if (!nameList) {\n      _this.updateStore(merge(_this.initialValues));\n      _this.resetWithFieldInitialValue();\n      _this.notifyObservers(prevStore, null, {\n        type: 'reset'\n      });\n      _this.notifyWatch();\n      return;\n    }\n\n    // Reset by `nameList`\n    var namePathList = nameList.map(getNamePath);\n    namePathList.forEach(function (namePath) {\n      var initialValue = _this.getInitialValue(namePath);\n      _this.updateStore(setValue(_this.store, namePath, initialValue));\n    });\n    _this.resetWithFieldInitialValue({\n      namePathList: namePathList\n    });\n    _this.notifyObservers(prevStore, namePathList, {\n      type: 'reset'\n    });\n    _this.notifyWatch(namePathList);\n  });\n  _defineProperty(this, \"setFields\", function (fields) {\n    _this.warningUnhooked();\n    var prevStore = _this.store;\n    var namePathList = [];\n    fields.forEach(function (fieldData) {\n      var name = fieldData.name,\n        data = _objectWithoutProperties(fieldData, _excluded);\n      var namePath = getNamePath(name);\n      namePathList.push(namePath);\n\n      // Value\n      if ('value' in data) {\n        _this.updateStore(setValue(_this.store, namePath, data.value));\n      }\n      _this.notifyObservers(prevStore, [namePath], {\n        type: 'setField',\n        data: fieldData\n      });\n    });\n    _this.notifyWatch(namePathList);\n  });\n  _defineProperty(this, \"getFields\", function () {\n    var entities = _this.getFieldEntities(true);\n    var fields = entities.map(function (field) {\n      var namePath = field.getNamePath();\n      var meta = field.getMeta();\n      var fieldData = _objectSpread(_objectSpread({}, meta), {}, {\n        name: namePath,\n        value: _this.getFieldValue(namePath)\n      });\n      Object.defineProperty(fieldData, 'originRCField', {\n        value: true\n      });\n      return fieldData;\n    });\n    return fields;\n  });\n  // =========================== Observer ===========================\n  /**\n   * This only trigger when a field is on constructor to avoid we get initialValue too late\n   */\n  _defineProperty(this, \"initEntityValue\", function (entity) {\n    var initialValue = entity.props.initialValue;\n    if (initialValue !== undefined) {\n      var namePath = entity.getNamePath();\n      var prevValue = getValue(_this.store, namePath);\n      if (prevValue === undefined) {\n        _this.updateStore(setValue(_this.store, namePath, initialValue));\n      }\n    }\n  });\n  _defineProperty(this, \"isMergedPreserve\", function (fieldPreserve) {\n    var mergedPreserve = fieldPreserve !== undefined ? fieldPreserve : _this.preserve;\n    return mergedPreserve !== null && mergedPreserve !== void 0 ? mergedPreserve : true;\n  });\n  _defineProperty(this, \"registerField\", function (entity) {\n    _this.fieldEntities.push(entity);\n    var namePath = entity.getNamePath();\n    _this.notifyWatch([namePath]);\n\n    // Set initial values\n    if (entity.props.initialValue !== undefined) {\n      var prevStore = _this.store;\n      _this.resetWithFieldInitialValue({\n        entities: [entity],\n        skipExist: true\n      });\n      _this.notifyObservers(prevStore, [entity.getNamePath()], {\n        type: 'valueUpdate',\n        source: 'internal'\n      });\n    }\n\n    // un-register field callback\n    return function (isListField, preserve) {\n      var subNamePath = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n      _this.fieldEntities = _this.fieldEntities.filter(function (item) {\n        return item !== entity;\n      });\n\n      // Clean up store value if not preserve\n      if (!_this.isMergedPreserve(preserve) && (!isListField || subNamePath.length > 1)) {\n        var defaultValue = isListField ? undefined : _this.getInitialValue(namePath);\n        if (namePath.length && _this.getFieldValue(namePath) !== defaultValue && _this.fieldEntities.every(function (field) {\n          return (\n            // Only reset when no namePath exist\n            !matchNamePath(field.getNamePath(), namePath)\n          );\n        })) {\n          var _prevStore = _this.store;\n          _this.updateStore(setValue(_prevStore, namePath, defaultValue, true));\n\n          // Notify that field is unmount\n          _this.notifyObservers(_prevStore, [namePath], {\n            type: 'remove'\n          });\n\n          // Dependencies update\n          _this.triggerDependenciesUpdate(_prevStore, namePath);\n        }\n      }\n      _this.notifyWatch([namePath]);\n    };\n  });\n  _defineProperty(this, \"dispatch\", function (action) {\n    switch (action.type) {\n      case 'updateValue':\n        {\n          var namePath = action.namePath,\n            value = action.value;\n          _this.updateValue(namePath, value);\n          break;\n        }\n      case 'validateField':\n        {\n          var _namePath = action.namePath,\n            triggerName = action.triggerName;\n          _this.validateFields([_namePath], {\n            triggerName: triggerName\n          });\n          break;\n        }\n      default:\n      // Currently we don't have other action. Do nothing.\n    }\n  });\n  _defineProperty(this, \"notifyObservers\", function (prevStore, namePathList, info) {\n    if (_this.subscribable) {\n      var mergedInfo = _objectSpread(_objectSpread({}, info), {}, {\n        store: _this.getFieldsValue(true)\n      });\n      _this.getFieldEntities().forEach(function (_ref5) {\n        var onStoreChange = _ref5.onStoreChange;\n        onStoreChange(prevStore, namePathList, mergedInfo);\n      });\n    } else {\n      _this.forceRootUpdate();\n    }\n  });\n  /**\n   * Notify dependencies children with parent update\n   * We need delay to trigger validate in case Field is under render props\n   */\n  _defineProperty(this, \"triggerDependenciesUpdate\", function (prevStore, namePath) {\n    var childrenFields = _this.getDependencyChildrenFields(namePath);\n    if (childrenFields.length) {\n      _this.validateFields(childrenFields);\n    }\n    _this.notifyObservers(prevStore, childrenFields, {\n      type: 'dependenciesUpdate',\n      relatedFields: [namePath].concat(_toConsumableArray(childrenFields))\n    });\n    return childrenFields;\n  });\n  _defineProperty(this, \"updateValue\", function (name, value) {\n    var namePath = getNamePath(name);\n    var prevStore = _this.store;\n    _this.updateStore(setValue(_this.store, namePath, value));\n    _this.notifyObservers(prevStore, [namePath], {\n      type: 'valueUpdate',\n      source: 'internal'\n    });\n    _this.notifyWatch([namePath]);\n\n    // Dependencies update\n    var childrenFields = _this.triggerDependenciesUpdate(prevStore, namePath);\n\n    // trigger callback function\n    var onValuesChange = _this.callbacks.onValuesChange;\n    if (onValuesChange) {\n      var changedValues = cloneByNamePathList(_this.store, [namePath]);\n      onValuesChange(changedValues, _this.getFieldsValue());\n    }\n    _this.triggerOnFieldsChange([namePath].concat(_toConsumableArray(childrenFields)));\n  });\n  // Let all child Field get update.\n  _defineProperty(this, \"setFieldsValue\", function (store) {\n    _this.warningUnhooked();\n    var prevStore = _this.store;\n    if (store) {\n      var nextStore = merge(_this.store, store);\n      _this.updateStore(nextStore);\n    }\n    _this.notifyObservers(prevStore, null, {\n      type: 'valueUpdate',\n      source: 'external'\n    });\n    _this.notifyWatch();\n  });\n  _defineProperty(this, \"setFieldValue\", function (name, value) {\n    _this.setFields([{\n      name: name,\n      value: value,\n      errors: [],\n      warnings: []\n    }]);\n  });\n  _defineProperty(this, \"getDependencyChildrenFields\", function (rootNamePath) {\n    var children = new Set();\n    var childrenFields = [];\n    var dependencies2fields = new NameMap();\n\n    /**\n     * Generate maps\n     * Can use cache to save perf if user report performance issue with this\n     */\n    _this.getFieldEntities().forEach(function (field) {\n      var dependencies = field.props.dependencies;\n      (dependencies || []).forEach(function (dependency) {\n        var dependencyNamePath = getNamePath(dependency);\n        dependencies2fields.update(dependencyNamePath, function () {\n          var fields = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Set();\n          fields.add(field);\n          return fields;\n        });\n      });\n    });\n    var fillChildren = function fillChildren(namePath) {\n      var fields = dependencies2fields.get(namePath) || new Set();\n      fields.forEach(function (field) {\n        if (!children.has(field)) {\n          children.add(field);\n          var fieldNamePath = field.getNamePath();\n          if (field.isFieldDirty() && fieldNamePath.length) {\n            childrenFields.push(fieldNamePath);\n            fillChildren(fieldNamePath);\n          }\n        }\n      });\n    };\n    fillChildren(rootNamePath);\n    return childrenFields;\n  });\n  _defineProperty(this, \"triggerOnFieldsChange\", function (namePathList, filedErrors) {\n    var onFieldsChange = _this.callbacks.onFieldsChange;\n    if (onFieldsChange) {\n      var fields = _this.getFields();\n\n      /**\n       * Fill errors since `fields` may be replaced by controlled fields\n       */\n      if (filedErrors) {\n        var cache = new NameMap();\n        filedErrors.forEach(function (_ref6) {\n          var name = _ref6.name,\n            errors = _ref6.errors;\n          cache.set(name, errors);\n        });\n        fields.forEach(function (field) {\n          // eslint-disable-next-line no-param-reassign\n          field.errors = cache.get(field.name) || field.errors;\n        });\n      }\n      var changedFields = fields.filter(function (_ref7) {\n        var fieldName = _ref7.name;\n        return containsNamePath(namePathList, fieldName);\n      });\n      if (changedFields.length) {\n        onFieldsChange(changedFields, fields);\n      }\n    }\n  });\n  // =========================== Validate ===========================\n  _defineProperty(this, \"validateFields\", function (arg1, arg2) {\n    _this.warningUnhooked();\n    var nameList;\n    var options;\n    if (Array.isArray(arg1) || typeof arg1 === 'string' || typeof arg2 === 'string') {\n      nameList = arg1;\n      options = arg2;\n    } else {\n      options = arg1;\n    }\n    var provideNameList = !!nameList;\n    var namePathList = provideNameList ? nameList.map(getNamePath) : [];\n\n    // Collect result in promise list\n    var promiseList = [];\n\n    // We temp save the path which need trigger for `onFieldsChange`\n    var TMP_SPLIT = String(Date.now());\n    var validateNamePathList = new Set();\n    var _ref8 = options || {},\n      recursive = _ref8.recursive,\n      dirty = _ref8.dirty;\n    _this.getFieldEntities(true).forEach(function (field) {\n      // Add field if not provide `nameList`\n      if (!provideNameList) {\n        namePathList.push(field.getNamePath());\n      }\n\n      // Skip if without rule\n      if (!field.props.rules || !field.props.rules.length) {\n        return;\n      }\n\n      // Skip if only validate dirty field\n      if (dirty && !field.isFieldDirty()) {\n        return;\n      }\n      var fieldNamePath = field.getNamePath();\n      validateNamePathList.add(fieldNamePath.join(TMP_SPLIT));\n\n      // Add field validate rule in to promise list\n      if (!provideNameList || containsNamePath(namePathList, fieldNamePath, recursive)) {\n        var promise = field.validateRules(_objectSpread({\n          validateMessages: _objectSpread(_objectSpread({}, defaultValidateMessages), _this.validateMessages)\n        }, options));\n\n        // Wrap promise with field\n        promiseList.push(promise.then(function () {\n          return {\n            name: fieldNamePath,\n            errors: [],\n            warnings: []\n          };\n        }).catch(function (ruleErrors) {\n          var _ruleErrors$forEach;\n          var mergedErrors = [];\n          var mergedWarnings = [];\n          (_ruleErrors$forEach = ruleErrors.forEach) === null || _ruleErrors$forEach === void 0 || _ruleErrors$forEach.call(ruleErrors, function (_ref9) {\n            var warningOnly = _ref9.rule.warningOnly,\n              errors = _ref9.errors;\n            if (warningOnly) {\n              mergedWarnings.push.apply(mergedWarnings, _toConsumableArray(errors));\n            } else {\n              mergedErrors.push.apply(mergedErrors, _toConsumableArray(errors));\n            }\n          });\n          if (mergedErrors.length) {\n            return Promise.reject({\n              name: fieldNamePath,\n              errors: mergedErrors,\n              warnings: mergedWarnings\n            });\n          }\n          return {\n            name: fieldNamePath,\n            errors: mergedErrors,\n            warnings: mergedWarnings\n          };\n        }));\n      }\n    });\n    var summaryPromise = allPromiseFinish(promiseList);\n    _this.lastValidatePromise = summaryPromise;\n\n    // Notify fields with rule that validate has finished and need update\n    summaryPromise.catch(function (results) {\n      return results;\n    }).then(function (results) {\n      var resultNamePathList = results.map(function (_ref10) {\n        var name = _ref10.name;\n        return name;\n      });\n      _this.notifyObservers(_this.store, resultNamePathList, {\n        type: 'validateFinish'\n      });\n      _this.triggerOnFieldsChange(resultNamePathList, results);\n    });\n    var returnPromise = summaryPromise.then(function () {\n      if (_this.lastValidatePromise === summaryPromise) {\n        return Promise.resolve(_this.getFieldsValue(namePathList));\n      }\n      return Promise.reject([]);\n    }).catch(function (results) {\n      var errorList = results.filter(function (result) {\n        return result && result.errors.length;\n      });\n      return Promise.reject({\n        values: _this.getFieldsValue(namePathList),\n        errorFields: errorList,\n        outOfDate: _this.lastValidatePromise !== summaryPromise\n      });\n    });\n\n    // Do not throw in console\n    returnPromise.catch(function (e) {\n      return e;\n    });\n\n    // `validating` changed. Trigger `onFieldsChange`\n    var triggerNamePathList = namePathList.filter(function (namePath) {\n      return validateNamePathList.has(namePath.join(TMP_SPLIT));\n    });\n    _this.triggerOnFieldsChange(triggerNamePathList);\n    return returnPromise;\n  });\n  // ============================ Submit ============================\n  _defineProperty(this, \"submit\", function () {\n    _this.warningUnhooked();\n    _this.validateFields().then(function (values) {\n      var onFinish = _this.callbacks.onFinish;\n      if (onFinish) {\n        try {\n          onFinish(values);\n        } catch (err) {\n          // Should print error if user `onFinish` callback failed\n          console.error(err);\n        }\n      }\n    }).catch(function (e) {\n      var onFinishFailed = _this.callbacks.onFinishFailed;\n      if (onFinishFailed) {\n        onFinishFailed(e);\n      }\n    });\n  });\n  this.forceRootUpdate = forceRootUpdate;\n});\nfunction useForm(form) {\n  var formRef = React.useRef();\n  var _React$useState = React.useState({}),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    forceUpdate = _React$useState2[1];\n  if (!formRef.current) {\n    if (form) {\n      formRef.current = form;\n    } else {\n      // Create a new FormStore if not provided\n      var forceReRender = function forceReRender() {\n        forceUpdate({});\n      };\n      var formStore = new FormStore(forceReRender);\n      formRef.current = formStore.getForm();\n    }\n  }\n  return [formRef.current];\n}\nexport default useForm;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nvar FormContext = /*#__PURE__*/React.createContext({\n  triggerFormChange: function triggerFormChange() {},\n  triggerFormFinish: function triggerFormFinish() {},\n  registerForm: function registerForm() {},\n  unregisterForm: function unregisterForm() {}\n});\nvar FormProvider = function FormProvider(_ref) {\n  var validateMessages = _ref.validateMessages,\n    onFormChange = _ref.onFormChange,\n    onFormFinish = _ref.onFormFinish,\n    children = _ref.children;\n  var formContext = React.useContext(FormContext);\n  var formsRef = React.useRef({});\n  return /*#__PURE__*/React.createElement(FormContext.Provider, {\n    value: _objectSpread(_objectSpread({}, formContext), {}, {\n      validateMessages: _objectSpread(_objectSpread({}, formContext.validateMessages), validateMessages),\n      // =========================================================\n      // =                  Global Form Control                  =\n      // =========================================================\n      triggerFormChange: function triggerFormChange(name, changedFields) {\n        if (onFormChange) {\n          onFormChange(name, {\n            changedFields: changedFields,\n            forms: formsRef.current\n          });\n        }\n        formContext.triggerFormChange(name, changedFields);\n      },\n      triggerFormFinish: function triggerFormFinish(name, values) {\n        if (onFormFinish) {\n          onFormFinish(name, {\n            values: values,\n            forms: formsRef.current\n          });\n        }\n        formContext.triggerFormFinish(name, values);\n      },\n      registerForm: function registerForm(name, form) {\n        if (name) {\n          formsRef.current = _objectSpread(_objectSpread({}, formsRef.current), {}, _defineProperty({}, name, form));\n        }\n        formContext.registerForm(name, form);\n      },\n      unregisterForm: function unregisterForm(name) {\n        var newForms = _objectSpread({}, formsRef.current);\n        delete newForms[name];\n        formsRef.current = newForms;\n        formContext.unregisterForm(name);\n      }\n    })\n  }, children);\n};\nexport { FormProvider };\nexport default FormContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"name\", \"initialValues\", \"fields\", \"form\", \"preserve\", \"children\", \"component\", \"validateMessages\", \"validateTrigger\", \"onValuesChange\", \"onFieldsChange\", \"onFinish\", \"onFinishFailed\", \"clearOnDestroy\"];\nimport * as React from 'react';\nimport useForm from \"./useForm\";\nimport FieldContext, { HOOK_MARK } from \"./FieldContext\";\nimport FormContext from \"./FormContext\";\nimport { isSimilar } from \"./utils/valueUtil\";\nimport ListContext from \"./ListContext\";\nvar Form = function Form(_ref, ref) {\n  var name = _ref.name,\n    initialValues = _ref.initialValues,\n    fields = _ref.fields,\n    form = _ref.form,\n    preserve = _ref.preserve,\n    children = _ref.children,\n    _ref$component = _ref.component,\n    Component = _ref$component === void 0 ? 'form' : _ref$component,\n    validateMessages = _ref.validateMessages,\n    _ref$validateTrigger = _ref.validateTrigger,\n    validateTrigger = _ref$validateTrigger === void 0 ? 'onChange' : _ref$validateTrigger,\n    onValuesChange = _ref.onValuesChange,\n    _onFieldsChange = _ref.onFieldsChange,\n    _onFinish = _ref.onFinish,\n    onFinishFailed = _ref.onFinishFailed,\n    clearOnDestroy = _ref.clearOnDestroy,\n    restProps = _objectWithoutProperties(_ref, _excluded);\n  var nativeElementRef = React.useRef(null);\n  var formContext = React.useContext(FormContext);\n\n  // We customize handle event since Context will makes all the consumer re-render:\n  // https://reactjs.org/docs/context.html#contextprovider\n  var _useForm = useForm(form),\n    _useForm2 = _slicedToArray(_useForm, 1),\n    formInstance = _useForm2[0];\n  var _getInternalHooks = formInstance.getInternalHooks(HOOK_MARK),\n    useSubscribe = _getInternalHooks.useSubscribe,\n    setInitialValues = _getInternalHooks.setInitialValues,\n    setCallbacks = _getInternalHooks.setCallbacks,\n    setValidateMessages = _getInternalHooks.setValidateMessages,\n    setPreserve = _getInternalHooks.setPreserve,\n    destroyForm = _getInternalHooks.destroyForm;\n\n  // Pass ref with form instance\n  React.useImperativeHandle(ref, function () {\n    return _objectSpread(_objectSpread({}, formInstance), {}, {\n      nativeElement: nativeElementRef.current\n    });\n  });\n\n  // Register form into Context\n  React.useEffect(function () {\n    formContext.registerForm(name, formInstance);\n    return function () {\n      formContext.unregisterForm(name);\n    };\n  }, [formContext, formInstance, name]);\n\n  // Pass props to store\n  setValidateMessages(_objectSpread(_objectSpread({}, formContext.validateMessages), validateMessages));\n  setCallbacks({\n    onValuesChange: onValuesChange,\n    onFieldsChange: function onFieldsChange(changedFields) {\n      formContext.triggerFormChange(name, changedFields);\n      if (_onFieldsChange) {\n        for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n          rest[_key - 1] = arguments[_key];\n        }\n        _onFieldsChange.apply(void 0, [changedFields].concat(rest));\n      }\n    },\n    onFinish: function onFinish(values) {\n      formContext.triggerFormFinish(name, values);\n      if (_onFinish) {\n        _onFinish(values);\n      }\n    },\n    onFinishFailed: onFinishFailed\n  });\n  setPreserve(preserve);\n\n  // Set initial value, init store value when first mount\n  var mountRef = React.useRef(null);\n  setInitialValues(initialValues, !mountRef.current);\n  if (!mountRef.current) {\n    mountRef.current = true;\n  }\n  React.useEffect(function () {\n    return function () {\n      return destroyForm(clearOnDestroy);\n    };\n  },\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  []);\n\n  // Prepare children by `children` type\n  var childrenNode;\n  var childrenRenderProps = typeof children === 'function';\n  if (childrenRenderProps) {\n    var _values = formInstance.getFieldsValue(true);\n    childrenNode = children(_values, formInstance);\n  } else {\n    childrenNode = children;\n  }\n\n  // Not use subscribe when using render props\n  useSubscribe(!childrenRenderProps);\n\n  // Listen if fields provided. We use ref to save prev data here to avoid additional render\n  var prevFieldsRef = React.useRef();\n  React.useEffect(function () {\n    if (!isSimilar(prevFieldsRef.current || [], fields || [])) {\n      formInstance.setFields(fields || []);\n    }\n    prevFieldsRef.current = fields;\n  }, [fields, formInstance]);\n  var formContextValue = React.useMemo(function () {\n    return _objectSpread(_objectSpread({}, formInstance), {}, {\n      validateTrigger: validateTrigger\n    });\n  }, [formInstance, validateTrigger]);\n  var wrapperNode = /*#__PURE__*/React.createElement(ListContext.Provider, {\n    value: null\n  }, /*#__PURE__*/React.createElement(FieldContext.Provider, {\n    value: formContextValue\n  }, childrenNode));\n  if (Component === false) {\n    return wrapperNode;\n  }\n  return /*#__PURE__*/React.createElement(Component, _extends({}, restProps, {\n    ref: nativeElementRef,\n    onSubmit: function onSubmit(event) {\n      event.preventDefault();\n      event.stopPropagation();\n      formInstance.submit();\n    },\n    onReset: function onReset(event) {\n      var _restProps$onReset;\n      event.preventDefault();\n      formInstance.resetFields();\n      (_restProps$onReset = restProps.onReset) === null || _restProps$onReset === void 0 || _restProps$onReset.call(restProps, event);\n    }\n  }), wrapperNode);\n};\nexport default Form;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport warning from \"rc-util/es/warning\";\nimport { useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport FieldContext, { HOOK_MARK } from \"./FieldContext\";\nimport { isFormInstance } from \"./utils/typeUtil\";\nimport { getNamePath, getValue } from \"./utils/valueUtil\";\nexport function stringify(value) {\n  try {\n    return JSON.stringify(value);\n  } catch (err) {\n    return Math.random();\n  }\n}\nvar useWatchWarning = process.env.NODE_ENV !== 'production' ? function (namePath) {\n  var fullyStr = namePath.join('__RC_FIELD_FORM_SPLIT__');\n  var nameStrRef = useRef(fullyStr);\n  warning(nameStrRef.current === fullyStr, '`useWatch` is not support dynamic `namePath`. Please provide static instead.');\n} : function () {};\n\n// ------- selector type -------\n\n// ------- selector type end -------\n\nfunction useWatch() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n  var dependencies = args[0],\n    _args$ = args[1],\n    _form = _args$ === void 0 ? {} : _args$;\n  var options = isFormInstance(_form) ? {\n    form: _form\n  } : _form;\n  var form = options.form;\n  var _useState = useState(),\n    _useState2 = _slicedToArray(_useState, 2),\n    value = _useState2[0],\n    setValue = _useState2[1];\n  var valueStr = useMemo(function () {\n    return stringify(value);\n  }, [value]);\n  var valueStrRef = useRef(valueStr);\n  valueStrRef.current = valueStr;\n  var fieldContext = useContext(FieldContext);\n  var formInstance = form || fieldContext;\n  var isValidForm = formInstance && formInstance._init;\n\n  // Warning if not exist form instance\n  if (process.env.NODE_ENV !== 'production') {\n    warning(args.length === 2 ? form ? isValidForm : true : isValidForm, 'useWatch requires a form instance since it can not auto detect from context.');\n  }\n  var namePath = getNamePath(dependencies);\n  var namePathRef = useRef(namePath);\n  namePathRef.current = namePath;\n  useWatchWarning(namePath);\n  useEffect(function () {\n    // Skip if not exist form instance\n    if (!isValidForm) {\n      return;\n    }\n    var getFieldsValue = formInstance.getFieldsValue,\n      getInternalHooks = formInstance.getInternalHooks;\n    var _getInternalHooks = getInternalHooks(HOOK_MARK),\n      registerWatch = _getInternalHooks.registerWatch;\n    var getWatchValue = function getWatchValue(values, allValues) {\n      var watchValue = options.preserve ? allValues : values;\n      return typeof dependencies === 'function' ? dependencies(watchValue) : getValue(watchValue, namePathRef.current);\n    };\n    var cancelRegister = registerWatch(function (values, allValues) {\n      var newValue = getWatchValue(values, allValues);\n      var nextValueStr = stringify(newValue);\n\n      // Compare stringify in case it's nest object\n      if (valueStrRef.current !== nextValueStr) {\n        valueStrRef.current = nextValueStr;\n        setValue(newValue);\n      }\n    });\n\n    // TODO: We can improve this perf in future\n    var initialValue = getWatchValue(getFieldsValue(), getFieldsValue(true));\n\n    // React 18 has the bug that will queue update twice even the value is not changed\n    // ref: https://github.com/facebook/react/issues/27213\n    if (value !== initialValue) {\n      setValue(initialValue);\n    }\n    return cancelRegister;\n  },\n  // We do not need re-register since namePath content is the same\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  [isValidForm]);\n  return value;\n}\nexport default useWatch;","import * as React from 'react';\nimport Field from \"./Field\";\nimport List from \"./List\";\nimport useForm from \"./useForm\";\nimport FieldForm from \"./Form\";\nimport { FormProvider } from \"./FormContext\";\nimport FieldContext from \"./FieldContext\";\nimport ListContext from \"./ListContext\";\nimport useWatch from \"./useWatch\";\nvar InternalForm = /*#__PURE__*/React.forwardRef(FieldForm);\nvar RefForm = InternalForm;\nRefForm.FormProvider = FormProvider;\nRefForm.Field = Field;\nRefForm.List = List;\nRefForm.useForm = useForm;\nRefForm.useWatch = useWatch;\nexport { Field, List, useForm, FormProvider, FieldContext, ListContext, useWatch };\nexport default RefForm;","\"use client\";\n\nimport * as React from 'react';\nimport { FormProvider as RcFormProvider } from 'rc-field-form';\nimport omit from \"rc-util/es/omit\";\nexport const FormContext = /*#__PURE__*/React.createContext({\n  labelAlign: 'right',\n  vertical: false,\n  itemRef: () => {}\n});\nexport const NoStyleItemContext = /*#__PURE__*/React.createContext(null);\nexport const FormProvider = props => {\n  const providerProps = omit(props, ['prefixCls']);\n  return /*#__PURE__*/React.createElement(RcFormProvider, Object.assign({}, providerProps));\n};\nexport const FormItemPrefixContext = /*#__PURE__*/React.createContext({\n  prefixCls: ''\n});\nexport const FormItemInputContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n  FormItemInputContext.displayName = 'FormItemInputContext';\n}\nexport const NoFormStyle = ({\n  children,\n  status,\n  override\n}) => {\n  const formItemInputContext = React.useContext(FormItemInputContext);\n  const newFormItemInputContext = React.useMemo(() => {\n    const newContext = Object.assign({}, formItemInputContext);\n    if (override) {\n      delete newContext.isFormItemInput;\n    }\n    if (status) {\n      delete newContext.status;\n      delete newContext.hasFeedback;\n      delete newContext.feedbackIcon;\n    }\n    return newContext;\n  }, [status, override, formItemInputContext]);\n  return /*#__PURE__*/React.createElement(FormItemInputContext.Provider, {\n    value: newFormItemInputContext\n  }, children);\n};\nexport const VariantContext = /*#__PURE__*/React.createContext(undefined);","\"use client\";\n\nimport React from 'react';\nimport { NoFormStyle } from '../form/context';\nimport { NoCompactStyle } from '../space/Compact';\nconst ContextIsolator = props => {\n  const {\n    space,\n    form,\n    children\n  } = props;\n  if (children === undefined || children === null) {\n    return null;\n  }\n  let result = children;\n  if (form) {\n    result = /*#__PURE__*/React.createElement(NoFormStyle, {\n      override: true,\n      status: true\n    }, result);\n  }\n  if (space) {\n    result = /*#__PURE__*/React.createElement(NoCompactStyle, null, result);\n  }\n  return result;\n};\nexport default ContextIsolator;","function mergeProps(...items) {\n  const ret = {};\n  items.forEach(item => {\n    if (item) {\n      Object.keys(item).forEach(key => {\n        if (item[key] !== undefined) {\n          ret[key] = item[key];\n        }\n      });\n    }\n  });\n  return ret;\n}\nexport default mergeProps;","\"use client\";\n\nimport React from 'react';\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport { useLocale } from '../../locale';\nimport defaultLocale from '../../locale/en_US';\nimport extendsObject from '../extendsObject';\nexport function pickClosable(context) {\n  if (!context) {\n    return undefined;\n  }\n  return {\n    closable: context.closable,\n    closeIcon: context.closeIcon\n  };\n}\n/** Convert `closable` and `closeIcon` to config object */\nfunction useClosableConfig(closableCollection) {\n  const {\n    closable,\n    closeIcon\n  } = closableCollection || {};\n  return React.useMemo(() => {\n    if (\n    // If `closable`, whatever rest be should be true\n    !closable && (closable === false || closeIcon === false || closeIcon === null)) {\n      return false;\n    }\n    if (closable === undefined && closeIcon === undefined) {\n      return null;\n    }\n    let closableConfig = {\n      closeIcon: typeof closeIcon !== 'boolean' && closeIcon !== null ? closeIcon : undefined\n    };\n    if (closable && typeof closable === 'object') {\n      closableConfig = Object.assign(Object.assign({}, closableConfig), closable);\n    }\n    return closableConfig;\n  }, [closable, closeIcon]);\n}\n/** Use same object to support `useMemo` optimization */\nconst EmptyFallbackCloseCollection = {};\nexport default function useClosable(propCloseCollection, contextCloseCollection, fallbackCloseCollection = EmptyFallbackCloseCollection) {\n  // Align the `props`, `context` `fallback` to config object first\n  const propCloseConfig = useClosableConfig(propCloseCollection);\n  const contextCloseConfig = useClosableConfig(contextCloseCollection);\n  const [contextLocale] = useLocale('global', defaultLocale.global);\n  const closeBtnIsDisabled = typeof propCloseConfig !== 'boolean' ? !!(propCloseConfig === null || propCloseConfig === void 0 ? void 0 : propCloseConfig.disabled) : false;\n  const mergedFallbackCloseCollection = React.useMemo(() => Object.assign({\n    closeIcon: /*#__PURE__*/React.createElement(CloseOutlined, null)\n  }, fallbackCloseCollection), [fallbackCloseCollection]);\n  // Use fallback logic to fill the config\n  const mergedClosableConfig = React.useMemo(() => {\n    // ================ Props First ================\n    // Skip if prop is disabled\n    if (propCloseConfig === false) {\n      return false;\n    }\n    if (propCloseConfig) {\n      return extendsObject(mergedFallbackCloseCollection, contextCloseConfig, propCloseConfig);\n    }\n    // =============== Context Second ==============\n    // Skip if context is disabled\n    if (contextCloseConfig === false) {\n      return false;\n    }\n    if (contextCloseConfig) {\n      return extendsObject(mergedFallbackCloseCollection, contextCloseConfig);\n    }\n    // ============= Fallback Default ==============\n    return !mergedFallbackCloseCollection.closable ? false : mergedFallbackCloseCollection;\n  }, [propCloseConfig, contextCloseConfig, mergedFallbackCloseCollection]);\n  // Calculate the final closeIcon\n  return React.useMemo(() => {\n    if (mergedClosableConfig === false) {\n      return [false, null, closeBtnIsDisabled, {}];\n    }\n    const {\n      closeIconRender\n    } = mergedFallbackCloseCollection;\n    const {\n      closeIcon\n    } = mergedClosableConfig;\n    let mergedCloseIcon = closeIcon;\n    // Wrap the closeIcon with aria props\n    const ariaOrDataProps = pickAttrs(mergedClosableConfig, true);\n    if (mergedCloseIcon !== null && mergedCloseIcon !== undefined) {\n      // Wrap the closeIcon if needed\n      if (closeIconRender) {\n        mergedCloseIcon = closeIconRender(closeIcon);\n      }\n      mergedCloseIcon = /*#__PURE__*/React.isValidElement(mergedCloseIcon) ? (/*#__PURE__*/React.cloneElement(mergedCloseIcon, Object.assign({\n        'aria-label': contextLocale.close\n      }, ariaOrDataProps))) : (/*#__PURE__*/React.createElement(\"span\", Object.assign({\n        \"aria-label\": contextLocale.close\n      }, ariaOrDataProps), mergedCloseIcon));\n    }\n    return [true, mergedCloseIcon, closeBtnIsDisabled, ariaOrDataProps];\n  }, [mergedClosableConfig, mergedFallbackCloseCollection]);\n}","import canUseDom from \"./canUseDom\";\nvar isStyleNameSupport = function isStyleNameSupport(styleName) {\n  if (canUseDom() && window.document.documentElement) {\n    var styleNameList = Array.isArray(styleName) ? styleName : [styleName];\n    var documentElement = window.document.documentElement;\n    return styleNameList.some(function (name) {\n      return name in documentElement.style;\n    });\n  }\n  return false;\n};\nvar isStyleValueSupport = function isStyleValueSupport(styleName, value) {\n  if (!isStyleNameSupport(styleName)) {\n    return false;\n  }\n  var ele = document.createElement('div');\n  var origin = ele.style[styleName];\n  ele.style[styleName] = value;\n  return ele.style[styleName] !== origin;\n};\nexport function isStyleSupport(styleName, styleValue) {\n  if (!Array.isArray(styleName) && styleValue !== undefined) {\n    return isStyleValueSupport(styleName, styleValue);\n  }\n  return isStyleNameSupport(styleName);\n}","import canUseDom from \"rc-util/es/Dom/canUseDom\";\nimport { isStyleSupport } from \"rc-util/es/Dom/styleChecker\";\nexport const canUseDocElement = () => canUseDom() && window.document.documentElement;\nexport { isStyleSupport };","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nconst Element = props => {\n  const {\n    prefixCls,\n    className,\n    style,\n    size,\n    shape\n  } = props;\n  const sizeCls = classNames({\n    [`${prefixCls}-lg`]: size === 'large',\n    [`${prefixCls}-sm`]: size === 'small'\n  });\n  const shapeCls = classNames({\n    [`${prefixCls}-circle`]: shape === 'circle',\n    [`${prefixCls}-square`]: shape === 'square',\n    [`${prefixCls}-round`]: shape === 'round'\n  });\n  const sizeStyle = React.useMemo(() => typeof size === 'number' ? {\n    width: size,\n    height: size,\n    lineHeight: `${size}px`\n  } : {}, [size]);\n  return /*#__PURE__*/React.createElement(\"span\", {\n    className: classNames(prefixCls, sizeCls, shapeCls, className),\n    style: Object.assign(Object.assign({}, sizeStyle), style)\n  });\n};\nexport default Element;","import { Keyframes, unit } from '@ant-design/cssinjs';\nimport { genStyleHooks, mergeToken } from '../../theme/internal';\nconst skeletonClsLoading = new Keyframes(`ant-skeleton-loading`, {\n  '0%': {\n    backgroundPosition: '100% 50%'\n  },\n  '100%': {\n    backgroundPosition: '0 50%'\n  }\n});\nconst genSkeletonElementCommonSize = size => ({\n  height: size,\n  lineHeight: unit(size)\n});\nconst genSkeletonElementAvatarSize = size => Object.assign({\n  width: size\n}, genSkeletonElementCommonSize(size));\nconst genSkeletonColor = token => ({\n  background: token.skeletonLoadingBackground,\n  backgroundSize: '400% 100%',\n  animationName: skeletonClsLoading,\n  animationDuration: token.skeletonLoadingMotionDuration,\n  animationTimingFunction: 'ease',\n  animationIterationCount: 'infinite'\n});\nconst genSkeletonElementInputSize = (size, calc) => Object.assign({\n  width: calc(size).mul(5).equal(),\n  minWidth: calc(size).mul(5).equal()\n}, genSkeletonElementCommonSize(size));\nconst genSkeletonElementAvatar = token => {\n  const {\n    skeletonAvatarCls,\n    gradientFromColor,\n    controlHeight,\n    controlHeightLG,\n    controlHeightSM\n  } = token;\n  return {\n    [skeletonAvatarCls]: Object.assign({\n      display: 'inline-block',\n      verticalAlign: 'top',\n      background: gradientFromColor\n    }, genSkeletonElementAvatarSize(controlHeight)),\n    [`${skeletonAvatarCls}${skeletonAvatarCls}-circle`]: {\n      borderRadius: '50%'\n    },\n    [`${skeletonAvatarCls}${skeletonAvatarCls}-lg`]: Object.assign({}, genSkeletonElementAvatarSize(controlHeightLG)),\n    [`${skeletonAvatarCls}${skeletonAvatarCls}-sm`]: Object.assign({}, genSkeletonElementAvatarSize(controlHeightSM))\n  };\n};\nconst genSkeletonElementInput = token => {\n  const {\n    controlHeight,\n    borderRadiusSM,\n    skeletonInputCls,\n    controlHeightLG,\n    controlHeightSM,\n    gradientFromColor,\n    calc\n  } = token;\n  return {\n    [skeletonInputCls]: Object.assign({\n      display: 'inline-block',\n      verticalAlign: 'top',\n      background: gradientFromColor,\n      borderRadius: borderRadiusSM\n    }, genSkeletonElementInputSize(controlHeight, calc)),\n    [`${skeletonInputCls}-lg`]: Object.assign({}, genSkeletonElementInputSize(controlHeightLG, calc)),\n    [`${skeletonInputCls}-sm`]: Object.assign({}, genSkeletonElementInputSize(controlHeightSM, calc))\n  };\n};\nconst genSkeletonElementImageSize = size => Object.assign({\n  width: size\n}, genSkeletonElementCommonSize(size));\nconst genSkeletonElementImage = token => {\n  const {\n    skeletonImageCls,\n    imageSizeBase,\n    gradientFromColor,\n    borderRadiusSM,\n    calc\n  } = token;\n  return {\n    [skeletonImageCls]: Object.assign(Object.assign({\n      display: 'inline-flex',\n      alignItems: 'center',\n      justifyContent: 'center',\n      verticalAlign: 'middle',\n      background: gradientFromColor,\n      borderRadius: borderRadiusSM\n    }, genSkeletonElementImageSize(calc(imageSizeBase).mul(2).equal())), {\n      [`${skeletonImageCls}-path`]: {\n        fill: '#bfbfbf'\n      },\n      [`${skeletonImageCls}-svg`]: Object.assign(Object.assign({}, genSkeletonElementImageSize(imageSizeBase)), {\n        maxWidth: calc(imageSizeBase).mul(4).equal(),\n        maxHeight: calc(imageSizeBase).mul(4).equal()\n      }),\n      [`${skeletonImageCls}-svg${skeletonImageCls}-svg-circle`]: {\n        borderRadius: '50%'\n      }\n    }),\n    [`${skeletonImageCls}${skeletonImageCls}-circle`]: {\n      borderRadius: '50%'\n    }\n  };\n};\nconst genSkeletonElementButtonShape = (token, size, buttonCls) => {\n  const {\n    skeletonButtonCls\n  } = token;\n  return {\n    [`${buttonCls}${skeletonButtonCls}-circle`]: {\n      width: size,\n      minWidth: size,\n      borderRadius: '50%'\n    },\n    [`${buttonCls}${skeletonButtonCls}-round`]: {\n      borderRadius: size\n    }\n  };\n};\nconst genSkeletonElementButtonSize = (size, calc) => Object.assign({\n  width: calc(size).mul(2).equal(),\n  minWidth: calc(size).mul(2).equal()\n}, genSkeletonElementCommonSize(size));\nconst genSkeletonElementButton = token => {\n  const {\n    borderRadiusSM,\n    skeletonButtonCls,\n    controlHeight,\n    controlHeightLG,\n    controlHeightSM,\n    gradientFromColor,\n    calc\n  } = token;\n  return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({\n    [skeletonButtonCls]: Object.assign({\n      display: 'inline-block',\n      verticalAlign: 'top',\n      background: gradientFromColor,\n      borderRadius: borderRadiusSM,\n      width: calc(controlHeight).mul(2).equal(),\n      minWidth: calc(controlHeight).mul(2).equal()\n    }, genSkeletonElementButtonSize(controlHeight, calc))\n  }, genSkeletonElementButtonShape(token, controlHeight, skeletonButtonCls)), {\n    [`${skeletonButtonCls}-lg`]: Object.assign({}, genSkeletonElementButtonSize(controlHeightLG, calc))\n  }), genSkeletonElementButtonShape(token, controlHeightLG, `${skeletonButtonCls}-lg`)), {\n    [`${skeletonButtonCls}-sm`]: Object.assign({}, genSkeletonElementButtonSize(controlHeightSM, calc))\n  }), genSkeletonElementButtonShape(token, controlHeightSM, `${skeletonButtonCls}-sm`));\n};\n// =============================== Base ===============================\nconst genBaseStyle = token => {\n  const {\n    componentCls,\n    skeletonAvatarCls,\n    skeletonTitleCls,\n    skeletonParagraphCls,\n    skeletonButtonCls,\n    skeletonInputCls,\n    skeletonImageCls,\n    controlHeight,\n    controlHeightLG,\n    controlHeightSM,\n    gradientFromColor,\n    padding,\n    marginSM,\n    borderRadius,\n    titleHeight,\n    blockRadius,\n    paragraphLiHeight,\n    controlHeightXS,\n    paragraphMarginTop\n  } = token;\n  return {\n    [componentCls]: {\n      display: 'table',\n      width: '100%',\n      [`${componentCls}-header`]: {\n        display: 'table-cell',\n        paddingInlineEnd: padding,\n        verticalAlign: 'top',\n        // Avatar\n        [skeletonAvatarCls]: Object.assign({\n          display: 'inline-block',\n          verticalAlign: 'top',\n          background: gradientFromColor\n        }, genSkeletonElementAvatarSize(controlHeight)),\n        [`${skeletonAvatarCls}-circle`]: {\n          borderRadius: '50%'\n        },\n        [`${skeletonAvatarCls}-lg`]: Object.assign({}, genSkeletonElementAvatarSize(controlHeightLG)),\n        [`${skeletonAvatarCls}-sm`]: Object.assign({}, genSkeletonElementAvatarSize(controlHeightSM))\n      },\n      [`${componentCls}-content`]: {\n        display: 'table-cell',\n        width: '100%',\n        verticalAlign: 'top',\n        // Title\n        [skeletonTitleCls]: {\n          width: '100%',\n          height: titleHeight,\n          background: gradientFromColor,\n          borderRadius: blockRadius,\n          [`+ ${skeletonParagraphCls}`]: {\n            marginBlockStart: controlHeightSM\n          }\n        },\n        // paragraph\n        [skeletonParagraphCls]: {\n          padding: 0,\n          '> li': {\n            width: '100%',\n            height: paragraphLiHeight,\n            listStyle: 'none',\n            background: gradientFromColor,\n            borderRadius: blockRadius,\n            '+ li': {\n              marginBlockStart: controlHeightXS\n            }\n          }\n        },\n        [`${skeletonParagraphCls}> li:last-child:not(:first-child):not(:nth-child(2))`]: {\n          width: '61%'\n        }\n      },\n      [`&-round ${componentCls}-content`]: {\n        [`${skeletonTitleCls}, ${skeletonParagraphCls} > li`]: {\n          borderRadius\n        }\n      }\n    },\n    [`${componentCls}-with-avatar ${componentCls}-content`]: {\n      // Title\n      [skeletonTitleCls]: {\n        marginBlockStart: marginSM,\n        [`+ ${skeletonParagraphCls}`]: {\n          marginBlockStart: paragraphMarginTop\n        }\n      }\n    },\n    // Skeleton element\n    [`${componentCls}${componentCls}-element`]: Object.assign(Object.assign(Object.assign(Object.assign({\n      display: 'inline-block',\n      width: 'auto'\n    }, genSkeletonElementButton(token)), genSkeletonElementAvatar(token)), genSkeletonElementInput(token)), genSkeletonElementImage(token)),\n    // Skeleton Block Button, Input\n    [`${componentCls}${componentCls}-block`]: {\n      width: '100%',\n      [skeletonButtonCls]: {\n        width: '100%'\n      },\n      [skeletonInputCls]: {\n        width: '100%'\n      }\n    },\n    // With active animation\n    [`${componentCls}${componentCls}-active`]: {\n      [`\n        ${skeletonTitleCls},\n        ${skeletonParagraphCls} > li,\n        ${skeletonAvatarCls},\n        ${skeletonButtonCls},\n        ${skeletonInputCls},\n        ${skeletonImageCls}\n      `]: Object.assign({}, genSkeletonColor(token))\n    }\n  };\n};\n// ============================== Export ==============================\nexport const prepareComponentToken = token => {\n  const {\n    colorFillContent,\n    colorFill\n  } = token;\n  const gradientFromColor = colorFillContent;\n  const gradientToColor = colorFill;\n  return {\n    color: gradientFromColor,\n    colorGradientEnd: gradientToColor,\n    gradientFromColor,\n    gradientToColor,\n    titleHeight: token.controlHeight / 2,\n    blockRadius: token.borderRadiusSM,\n    paragraphMarginTop: token.marginLG + token.marginXXS,\n    paragraphLiHeight: token.controlHeight / 2\n  };\n};\nexport default genStyleHooks('Skeleton', token => {\n  const {\n    componentCls,\n    calc\n  } = token;\n  const skeletonToken = mergeToken(token, {\n    skeletonAvatarCls: `${componentCls}-avatar`,\n    skeletonTitleCls: `${componentCls}-title`,\n    skeletonParagraphCls: `${componentCls}-paragraph`,\n    skeletonButtonCls: `${componentCls}-button`,\n    skeletonInputCls: `${componentCls}-input`,\n    skeletonImageCls: `${componentCls}-image`,\n    imageSizeBase: calc(token.controlHeight).mul(1.5).equal(),\n    borderRadius: 100,\n    // Large number to make capsule shape\n    skeletonLoadingBackground: `linear-gradient(90deg, ${token.gradientFromColor} 25%, ${token.gradientToColor} 37%, ${token.gradientFromColor} 63%)`,\n    skeletonLoadingMotionDuration: '1.4s'\n  });\n  return [genBaseStyle(skeletonToken)];\n}, prepareComponentToken, {\n  deprecatedTokens: [['color', 'gradientFromColor'], ['colorGradientEnd', 'gradientToColor']]\n});","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport { ConfigContext } from '../config-provider';\nimport Element from './Element';\nimport useStyle from './style';\nconst SkeletonAvatar = props => {\n  const {\n    prefixCls: customizePrefixCls,\n    className,\n    rootClassName,\n    active,\n    shape = 'circle',\n    size = 'default'\n  } = props;\n  const {\n    getPrefixCls\n  } = React.useContext(ConfigContext);\n  const prefixCls = getPrefixCls('skeleton', customizePrefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  const otherProps = omit(props, ['prefixCls', 'className']);\n  const cls = classNames(prefixCls, `${prefixCls}-element`, {\n    [`${prefixCls}-active`]: active\n  }, className, rootClassName, hashId, cssVarCls);\n  return wrapCSSVar(/*#__PURE__*/React.createElement(\"div\", {\n    className: cls\n  }, /*#__PURE__*/React.createElement(Element, Object.assign({\n    prefixCls: `${prefixCls}-avatar`,\n    shape: shape,\n    size: size\n  }, otherProps))));\n};\nexport default SkeletonAvatar;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport { ConfigContext } from '../config-provider';\nimport Element from './Element';\nimport useStyle from './style';\nconst SkeletonButton = props => {\n  const {\n    prefixCls: customizePrefixCls,\n    className,\n    rootClassName,\n    active,\n    block = false,\n    size = 'default'\n  } = props;\n  const {\n    getPrefixCls\n  } = React.useContext(ConfigContext);\n  const prefixCls = getPrefixCls('skeleton', customizePrefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  const otherProps = omit(props, ['prefixCls']);\n  const cls = classNames(prefixCls, `${prefixCls}-element`, {\n    [`${prefixCls}-active`]: active,\n    [`${prefixCls}-block`]: block\n  }, className, rootClassName, hashId, cssVarCls);\n  return wrapCSSVar(/*#__PURE__*/React.createElement(\"div\", {\n    className: cls\n  }, /*#__PURE__*/React.createElement(Element, Object.assign({\n    prefixCls: `${prefixCls}-button`,\n    size: size\n  }, otherProps))));\n};\nexport default SkeletonButton;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { ConfigContext } from '../config-provider';\nimport useStyle from './style';\nconst path = 'M365.714286 329.142857q0 45.714286-32.036571 77.677714t-77.677714 32.036571-77.677714-32.036571-32.036571-77.677714 32.036571-77.677714 77.677714-32.036571 77.677714 32.036571 32.036571 77.677714zM950.857143 548.571429l0 256-804.571429 0 0-109.714286 182.857143-182.857143 91.428571 91.428571 292.571429-292.571429zM1005.714286 146.285714l-914.285714 0q-7.460571 0-12.873143 5.412571t-5.412571 12.873143l0 694.857143q0 7.460571 5.412571 12.873143t12.873143 5.412571l914.285714 0q7.460571 0 12.873143-5.412571t5.412571-12.873143l0-694.857143q0-7.460571-5.412571-12.873143t-12.873143-5.412571zM1097.142857 164.571429l0 694.857143q0 37.741714-26.843429 64.585143t-64.585143 26.843429l-914.285714 0q-37.741714 0-64.585143-26.843429t-26.843429-64.585143l0-694.857143q0-37.741714 26.843429-64.585143t64.585143-26.843429l914.285714 0q37.741714 0 64.585143 26.843429t26.843429 64.585143z';\nconst SkeletonImage = props => {\n  const {\n    prefixCls: customizePrefixCls,\n    className,\n    rootClassName,\n    style,\n    active\n  } = props;\n  const {\n    getPrefixCls\n  } = React.useContext(ConfigContext);\n  const prefixCls = getPrefixCls('skeleton', customizePrefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  const cls = classNames(prefixCls, `${prefixCls}-element`, {\n    [`${prefixCls}-active`]: active\n  }, className, rootClassName, hashId, cssVarCls);\n  return wrapCSSVar(/*#__PURE__*/React.createElement(\"div\", {\n    className: cls\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(`${prefixCls}-image`, className),\n    style: style\n  }, /*#__PURE__*/React.createElement(\"svg\", {\n    viewBox: \"0 0 1098 1024\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    className: `${prefixCls}-image-svg`\n  }, /*#__PURE__*/React.createElement(\"title\", null, \"Image placeholder\"), /*#__PURE__*/React.createElement(\"path\", {\n    d: path,\n    className: `${prefixCls}-image-path`\n  })))));\n};\nexport default SkeletonImage;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport { ConfigContext } from '../config-provider';\nimport Element from './Element';\nimport useStyle from './style';\nconst SkeletonInput = props => {\n  const {\n    prefixCls: customizePrefixCls,\n    className,\n    rootClassName,\n    active,\n    block,\n    size = 'default'\n  } = props;\n  const {\n    getPrefixCls\n  } = React.useContext(ConfigContext);\n  const prefixCls = getPrefixCls('skeleton', customizePrefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  const otherProps = omit(props, ['prefixCls']);\n  const cls = classNames(prefixCls, `${prefixCls}-element`, {\n    [`${prefixCls}-active`]: active,\n    [`${prefixCls}-block`]: block\n  }, className, rootClassName, hashId, cssVarCls);\n  return wrapCSSVar(/*#__PURE__*/React.createElement(\"div\", {\n    className: cls\n  }, /*#__PURE__*/React.createElement(Element, Object.assign({\n    prefixCls: `${prefixCls}-input`,\n    size: size\n  }, otherProps))));\n};\nexport default SkeletonInput;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { ConfigContext } from '../config-provider';\nimport useStyle from './style';\nconst SkeletonNode = props => {\n  const {\n    prefixCls: customizePrefixCls,\n    className,\n    rootClassName,\n    style,\n    active,\n    children\n  } = props;\n  const {\n    getPrefixCls\n  } = React.useContext(ConfigContext);\n  const prefixCls = getPrefixCls('skeleton', customizePrefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  const cls = classNames(prefixCls, `${prefixCls}-element`, {\n    [`${prefixCls}-active`]: active\n  }, hashId, className, rootClassName, cssVarCls);\n  return wrapCSSVar(/*#__PURE__*/React.createElement(\"div\", {\n    className: cls\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(`${prefixCls}-image`, className),\n    style: style\n  }, children)));\n};\nexport default SkeletonNode;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nconst getWidth = (index, props) => {\n  const {\n    width,\n    rows = 2\n  } = props;\n  if (Array.isArray(width)) {\n    return width[index];\n  }\n  // last paragraph\n  if (rows - 1 === index) {\n    return width;\n  }\n  return undefined;\n};\nconst Paragraph = props => {\n  const {\n    prefixCls,\n    className,\n    style,\n    rows = 0\n  } = props;\n  const rowList = Array.from({\n    length: rows\n  }).map((_, index) => (\n  /*#__PURE__*/\n  // eslint-disable-next-line react/no-array-index-key\n  React.createElement(\"li\", {\n    key: index,\n    style: {\n      width: getWidth(index, props)\n    }\n  })));\n  return /*#__PURE__*/React.createElement(\"ul\", {\n    className: classNames(prefixCls, className),\n    style: style\n  }, rowList);\n};\nexport default Paragraph;","\"use client\";\n\n/* eslint-disable jsx-a11y/heading-has-content */\nimport * as React from 'react';\nimport classNames from 'classnames';\nconst Title = ({\n  prefixCls,\n  className,\n  width,\n  style\n}) => (\n/*#__PURE__*/\n// biome-ignore lint/a11y/useHeadingContent: HOC here\nReact.createElement(\"h3\", {\n  className: classNames(prefixCls, className),\n  style: Object.assign({\n    width\n  }, style)\n}));\nexport default Title;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useComponentConfig } from '../config-provider/context';\nimport SkeletonAvatar from './Avatar';\nimport SkeletonButton from './Button';\nimport Element from './Element';\nimport SkeletonImage from './Image';\nimport SkeletonInput from './Input';\nimport SkeletonNode from './Node';\nimport Paragraph from './Paragraph';\nimport useStyle from './style';\nimport Title from './Title';\nfunction getComponentProps(prop) {\n  if (prop && typeof prop === 'object') {\n    return prop;\n  }\n  return {};\n}\nfunction getAvatarBasicProps(hasTitle, hasParagraph) {\n  if (hasTitle && !hasParagraph) {\n    // Square avatar\n    return {\n      size: 'large',\n      shape: 'square'\n    };\n  }\n  return {\n    size: 'large',\n    shape: 'circle'\n  };\n}\nfunction getTitleBasicProps(hasAvatar, hasParagraph) {\n  if (!hasAvatar && hasParagraph) {\n    return {\n      width: '38%'\n    };\n  }\n  if (hasAvatar && hasParagraph) {\n    return {\n      width: '50%'\n    };\n  }\n  return {};\n}\nfunction getParagraphBasicProps(hasAvatar, hasTitle) {\n  const basicProps = {};\n  // Width\n  if (!hasAvatar || !hasTitle) {\n    basicProps.width = '61%';\n  }\n  // Rows\n  if (!hasAvatar && hasTitle) {\n    basicProps.rows = 3;\n  } else {\n    basicProps.rows = 2;\n  }\n  return basicProps;\n}\nconst Skeleton = props => {\n  const {\n    prefixCls: customizePrefixCls,\n    loading,\n    className,\n    rootClassName,\n    style,\n    children,\n    avatar = false,\n    title = true,\n    paragraph = true,\n    active,\n    round\n  } = props;\n  const {\n    getPrefixCls,\n    direction,\n    className: contextClassName,\n    style: contextStyle\n  } = useComponentConfig('skeleton');\n  const prefixCls = getPrefixCls('skeleton', customizePrefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  if (loading || !('loading' in props)) {\n    const hasAvatar = !!avatar;\n    const hasTitle = !!title;\n    const hasParagraph = !!paragraph;\n    // Avatar\n    let avatarNode;\n    if (hasAvatar) {\n      const avatarProps = Object.assign(Object.assign({\n        prefixCls: `${prefixCls}-avatar`\n      }, getAvatarBasicProps(hasTitle, hasParagraph)), getComponentProps(avatar));\n      // We direct use SkeletonElement as avatar in skeleton internal.\n      avatarNode = /*#__PURE__*/React.createElement(\"div\", {\n        className: `${prefixCls}-header`\n      }, /*#__PURE__*/React.createElement(Element, Object.assign({}, avatarProps)));\n    }\n    let contentNode;\n    if (hasTitle || hasParagraph) {\n      // Title\n      let $title;\n      if (hasTitle) {\n        const titleProps = Object.assign(Object.assign({\n          prefixCls: `${prefixCls}-title`\n        }, getTitleBasicProps(hasAvatar, hasParagraph)), getComponentProps(title));\n        $title = /*#__PURE__*/React.createElement(Title, Object.assign({}, titleProps));\n      }\n      // Paragraph\n      let paragraphNode;\n      if (hasParagraph) {\n        const paragraphProps = Object.assign(Object.assign({\n          prefixCls: `${prefixCls}-paragraph`\n        }, getParagraphBasicProps(hasAvatar, hasTitle)), getComponentProps(paragraph));\n        paragraphNode = /*#__PURE__*/React.createElement(Paragraph, Object.assign({}, paragraphProps));\n      }\n      contentNode = /*#__PURE__*/React.createElement(\"div\", {\n        className: `${prefixCls}-content`\n      }, $title, paragraphNode);\n    }\n    const cls = classNames(prefixCls, {\n      [`${prefixCls}-with-avatar`]: hasAvatar,\n      [`${prefixCls}-active`]: active,\n      [`${prefixCls}-rtl`]: direction === 'rtl',\n      [`${prefixCls}-round`]: round\n    }, contextClassName, className, rootClassName, hashId, cssVarCls);\n    return wrapCSSVar(/*#__PURE__*/React.createElement(\"div\", {\n      className: cls,\n      style: Object.assign(Object.assign({}, contextStyle), style)\n    }, avatarNode, contentNode));\n  }\n  return children !== null && children !== void 0 ? children : null;\n};\nSkeleton.Button = SkeletonButton;\nSkeleton.Avatar = SkeletonAvatar;\nSkeleton.Input = SkeletonInput;\nSkeleton.Image = SkeletonImage;\nSkeleton.Node = SkeletonNode;\nif (process.env.NODE_ENV !== 'production') {\n  Skeleton.displayName = 'Skeleton';\n}\nexport default Skeleton;","import * as React from 'react';\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nfunction voidFunc() {}\nconst WatermarkContext = /*#__PURE__*/React.createContext({\n  add: voidFunc,\n  remove: voidFunc\n});\nexport function usePanelRef(panelSelector) {\n  const watermark = React.useContext(WatermarkContext);\n  const panelEleRef = React.useRef(null);\n  const panelRef = useEvent(ele => {\n    if (ele) {\n      const innerContentEle = panelSelector ? ele.querySelector(panelSelector) : ele;\n      watermark.add(innerContentEle);\n      panelEleRef.current = innerContentEle;\n    } else {\n      watermark.remove(panelEleRef.current);\n    }\n  });\n  return panelRef;\n}\nexport default WatermarkContext;","\"use client\";\n\nimport React, { useContext } from 'react';\nimport Button from '../../button';\nimport { ModalContext } from '../context';\nconst NormalCancelBtn = () => {\n  const {\n    cancelButtonProps,\n    cancelTextLocale,\n    onCancel\n  } = useContext(ModalContext);\n  return /*#__PURE__*/React.createElement(Button, Object.assign({\n    onClick: onCancel\n  }, cancelButtonProps), cancelTextLocale);\n};\nexport default NormalCancelBtn;","\"use client\";\n\nimport React, { useContext } from 'react';\nimport Button from '../../button';\nimport { convertLegacyProps } from '../../button/buttonHelpers';\nimport { ModalContext } from '../context';\nconst NormalOkBtn = () => {\n  const {\n    confirmLoading,\n    okButtonProps,\n    okType,\n    okTextLocale,\n    onOk\n  } = useContext(ModalContext);\n  return /*#__PURE__*/React.createElement(Button, Object.assign({}, convertLegacyProps(okType), {\n    loading: confirmLoading,\n    onClick: onOk\n  }, okButtonProps), okTextLocale);\n};\nexport default NormalOkBtn;","\"use client\";\n\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport React from 'react';\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport { DisabledContextProvider } from '../config-provider/DisabledContext';\nimport { useLocale } from '../locale';\nimport NormalCancelBtn from './components/NormalCancelBtn';\nimport NormalOkBtn from './components/NormalOkBtn';\nimport { ModalContextProvider } from './context';\nimport { getConfirmLocale } from './locale';\nexport function renderCloseIcon(prefixCls, closeIcon) {\n  return /*#__PURE__*/React.createElement(\"span\", {\n    className: `${prefixCls}-close-x`\n  }, closeIcon || /*#__PURE__*/React.createElement(CloseOutlined, {\n    className: `${prefixCls}-close-icon`\n  }));\n}\nexport const Footer = props => {\n  const {\n    okText,\n    okType = 'primary',\n    cancelText,\n    confirmLoading,\n    onOk,\n    onCancel,\n    okButtonProps,\n    cancelButtonProps,\n    footer\n  } = props;\n  const [locale] = useLocale('Modal', getConfirmLocale());\n  // ================== Locale Text ==================\n  const okTextLocale = okText || (locale === null || locale === void 0 ? void 0 : locale.okText);\n  const cancelTextLocale = cancelText || (locale === null || locale === void 0 ? void 0 : locale.cancelText);\n  // ================= Context Value =================\n  const btnCtxValue = {\n    confirmLoading,\n    okButtonProps,\n    cancelButtonProps,\n    okTextLocale,\n    cancelTextLocale,\n    okType,\n    onOk,\n    onCancel\n  };\n  const btnCtxValueMemo = React.useMemo(() => btnCtxValue, _toConsumableArray(Object.values(btnCtxValue)));\n  let footerNode;\n  if (typeof footer === 'function' || typeof footer === 'undefined') {\n    footerNode = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(NormalCancelBtn, null), /*#__PURE__*/React.createElement(NormalOkBtn, null));\n    if (typeof footer === 'function') {\n      footerNode = footer(footerNode, {\n        OkBtn: NormalOkBtn,\n        CancelBtn: NormalCancelBtn\n      });\n    }\n    footerNode = /*#__PURE__*/React.createElement(ModalContextProvider, {\n      value: btnCtxValueMemo\n    }, footerNode);\n  } else {\n    footerNode = footer;\n  }\n  return /*#__PURE__*/React.createElement(DisabledContextProvider, {\n    disabled: false\n  }, footerNode);\n};","import { unit } from '@ant-design/cssinjs';\nimport { genStyleHooks, mergeToken } from '../../theme/internal';\n// ============================== Row-Shared ==============================\nconst genGridRowStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    // Grid system\n    [componentCls]: {\n      display: 'flex',\n      flexFlow: 'row wrap',\n      minWidth: 0,\n      '&::before, &::after': {\n        display: 'flex'\n      },\n      '&-no-wrap': {\n        flexWrap: 'nowrap'\n      },\n      // The origin of the X-axis\n      '&-start': {\n        justifyContent: 'flex-start'\n      },\n      // The center of the X-axis\n      '&-center': {\n        justifyContent: 'center'\n      },\n      // The opposite of the X-axis\n      '&-end': {\n        justifyContent: 'flex-end'\n      },\n      '&-space-between': {\n        justifyContent: 'space-between'\n      },\n      '&-space-around': {\n        justifyContent: 'space-around'\n      },\n      '&-space-evenly': {\n        justifyContent: 'space-evenly'\n      },\n      // Align at the top\n      '&-top': {\n        alignItems: 'flex-start'\n      },\n      // Align at the center\n      '&-middle': {\n        alignItems: 'center'\n      },\n      '&-bottom': {\n        alignItems: 'flex-end'\n      }\n    }\n  };\n};\n// ============================== Col-Shared ==============================\nconst genGridColStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    // Grid system\n    [componentCls]: {\n      position: 'relative',\n      maxWidth: '100%',\n      // Prevent columns from collapsing when empty\n      minHeight: 1\n    }\n  };\n};\nconst genLoopGridColumnsStyle = (token, sizeCls) => {\n  const {\n    prefixCls,\n    componentCls,\n    gridColumns\n  } = token;\n  const gridColumnsStyle = {};\n  for (let i = gridColumns; i >= 0; i--) {\n    if (i === 0) {\n      gridColumnsStyle[`${componentCls}${sizeCls}-${i}`] = {\n        display: 'none'\n      };\n      gridColumnsStyle[`${componentCls}-push-${i}`] = {\n        insetInlineStart: 'auto'\n      };\n      gridColumnsStyle[`${componentCls}-pull-${i}`] = {\n        insetInlineEnd: 'auto'\n      };\n      gridColumnsStyle[`${componentCls}${sizeCls}-push-${i}`] = {\n        insetInlineStart: 'auto'\n      };\n      gridColumnsStyle[`${componentCls}${sizeCls}-pull-${i}`] = {\n        insetInlineEnd: 'auto'\n      };\n      gridColumnsStyle[`${componentCls}${sizeCls}-offset-${i}`] = {\n        marginInlineStart: 0\n      };\n      gridColumnsStyle[`${componentCls}${sizeCls}-order-${i}`] = {\n        order: 0\n      };\n    } else {\n      gridColumnsStyle[`${componentCls}${sizeCls}-${i}`] = [\n      // https://github.com/ant-design/ant-design/issues/44456\n      // Form set `display: flex` on Col which will override `display: block`.\n      // Let's get it from css variable to support override.\n      {\n        ['--ant-display']: 'block',\n        // Fallback to display if variable not support\n        display: 'block'\n      }, {\n        display: 'var(--ant-display)',\n        flex: `0 0 ${i / gridColumns * 100}%`,\n        maxWidth: `${i / gridColumns * 100}%`\n      }];\n      gridColumnsStyle[`${componentCls}${sizeCls}-push-${i}`] = {\n        insetInlineStart: `${i / gridColumns * 100}%`\n      };\n      gridColumnsStyle[`${componentCls}${sizeCls}-pull-${i}`] = {\n        insetInlineEnd: `${i / gridColumns * 100}%`\n      };\n      gridColumnsStyle[`${componentCls}${sizeCls}-offset-${i}`] = {\n        marginInlineStart: `${i / gridColumns * 100}%`\n      };\n      gridColumnsStyle[`${componentCls}${sizeCls}-order-${i}`] = {\n        order: i\n      };\n    }\n  }\n  // Flex CSS Var\n  gridColumnsStyle[`${componentCls}${sizeCls}-flex`] = {\n    flex: `var(--${prefixCls}${sizeCls}-flex)`\n  };\n  return gridColumnsStyle;\n};\nconst genGridStyle = (token, sizeCls) => genLoopGridColumnsStyle(token, sizeCls);\nconst genGridMediaStyle = (token, screenSize, sizeCls) => ({\n  [`@media (min-width: ${unit(screenSize)})`]: Object.assign({}, genGridStyle(token, sizeCls))\n});\nexport const prepareRowComponentToken = () => ({});\nexport const prepareColComponentToken = () => ({});\n// ============================== Export ==============================\nexport const useRowStyle = genStyleHooks('Grid', genGridRowStyle, prepareRowComponentToken);\nexport const getMediaSize = token => {\n  const mediaSizesMap = {\n    xs: token.screenXSMin,\n    sm: token.screenSMMin,\n    md: token.screenMDMin,\n    lg: token.screenLGMin,\n    xl: token.screenXLMin,\n    xxl: token.screenXXLMin\n  };\n  return mediaSizesMap;\n};\nexport const useColStyle = genStyleHooks('Grid', token => {\n  const gridToken = mergeToken(token, {\n    gridColumns: 24 // Row is divided into 24 parts in Grid\n  });\n  const gridMediaSizesMap = getMediaSize(gridToken);\n  delete gridMediaSizesMap.xs;\n  return [genGridColStyle(gridToken), genGridStyle(gridToken, ''), genGridStyle(gridToken, '-xs'), Object.keys(gridMediaSizesMap).map(key => genGridMediaStyle(gridToken, gridMediaSizesMap[key], `-${key}`)).reduce((pre, cur) => Object.assign(Object.assign({}, pre), cur), {})];\n}, prepareColComponentToken);","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport { unit } from '@ant-design/cssinjs';\nimport { getMediaSize } from '../../grid/style';\nimport { genFocusStyle, resetComponent } from '../../style';\nimport { initFadeMotion, initZoomMotion } from '../../style/motion';\nimport { genStyleHooks, mergeToken } from '../../theme/internal';\nfunction box(position) {\n  return {\n    position,\n    inset: 0\n  };\n}\nexport const genModalMaskStyle = token => {\n  const {\n    componentCls,\n    antCls\n  } = token;\n  return [{\n    [`${componentCls}-root`]: {\n      [`${componentCls}${antCls}-zoom-enter, ${componentCls}${antCls}-zoom-appear`]: {\n        // reset scale avoid mousePosition bug\n        transform: 'none',\n        opacity: 0,\n        animationDuration: token.motionDurationSlow,\n        // https://github.com/ant-design/ant-design/issues/11777\n        userSelect: 'none'\n      },\n      // https://github.com/ant-design/ant-design/issues/37329\n      // https://github.com/ant-design/ant-design/issues/40272\n      [`${componentCls}${antCls}-zoom-leave ${componentCls}-content`]: {\n        pointerEvents: 'none'\n      },\n      [`${componentCls}-mask`]: Object.assign(Object.assign({}, box('fixed')), {\n        zIndex: token.zIndexPopupBase,\n        height: '100%',\n        backgroundColor: token.colorBgMask,\n        pointerEvents: 'none',\n        [`${componentCls}-hidden`]: {\n          display: 'none'\n        }\n      }),\n      [`${componentCls}-wrap`]: Object.assign(Object.assign({}, box('fixed')), {\n        zIndex: token.zIndexPopupBase,\n        overflow: 'auto',\n        outline: 0,\n        WebkitOverflowScrolling: 'touch'\n      })\n    }\n  }, {\n    [`${componentCls}-root`]: initFadeMotion(token)\n  }];\n};\nconst genModalStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return [\n  // ======================== Root =========================\n  {\n    [`${componentCls}-root`]: {\n      [`${componentCls}-wrap-rtl`]: {\n        direction: 'rtl'\n      },\n      [`${componentCls}-centered`]: {\n        textAlign: 'center',\n        '&::before': {\n          display: 'inline-block',\n          width: 0,\n          height: '100%',\n          verticalAlign: 'middle',\n          content: '\"\"'\n        },\n        [componentCls]: {\n          top: 0,\n          display: 'inline-block',\n          paddingBottom: 0,\n          textAlign: 'start',\n          verticalAlign: 'middle'\n        }\n      },\n      [`@media (max-width: ${token.screenSMMax}px)`]: {\n        [componentCls]: {\n          maxWidth: 'calc(100vw - 16px)',\n          margin: `${unit(token.marginXS)} auto`\n        },\n        [`${componentCls}-centered`]: {\n          [componentCls]: {\n            flex: 1\n          }\n        }\n      }\n    }\n  },\n  // ======================== Modal ========================\n  {\n    [componentCls]: Object.assign(Object.assign({}, resetComponent(token)), {\n      pointerEvents: 'none',\n      position: 'relative',\n      top: 100,\n      width: 'auto',\n      maxWidth: `calc(100vw - ${unit(token.calc(token.margin).mul(2).equal())})`,\n      margin: '0 auto',\n      paddingBottom: token.paddingLG,\n      [`${componentCls}-title`]: {\n        margin: 0,\n        color: token.titleColor,\n        fontWeight: token.fontWeightStrong,\n        fontSize: token.titleFontSize,\n        lineHeight: token.titleLineHeight,\n        wordWrap: 'break-word'\n      },\n      [`${componentCls}-content`]: {\n        position: 'relative',\n        backgroundColor: token.contentBg,\n        backgroundClip: 'padding-box',\n        border: 0,\n        borderRadius: token.borderRadiusLG,\n        boxShadow: token.boxShadow,\n        pointerEvents: 'auto',\n        padding: token.contentPadding\n      },\n      [`${componentCls}-close`]: Object.assign({\n        position: 'absolute',\n        top: token.calc(token.modalHeaderHeight).sub(token.modalCloseBtnSize).div(2).equal(),\n        insetInlineEnd: token.calc(token.modalHeaderHeight).sub(token.modalCloseBtnSize).div(2).equal(),\n        zIndex: token.calc(token.zIndexPopupBase).add(10).equal(),\n        padding: 0,\n        color: token.modalCloseIconColor,\n        fontWeight: token.fontWeightStrong,\n        lineHeight: 1,\n        textDecoration: 'none',\n        background: 'transparent',\n        borderRadius: token.borderRadiusSM,\n        width: token.modalCloseBtnSize,\n        height: token.modalCloseBtnSize,\n        border: 0,\n        outline: 0,\n        cursor: 'pointer',\n        transition: `color ${token.motionDurationMid}, background-color ${token.motionDurationMid}`,\n        '&-x': {\n          display: 'flex',\n          fontSize: token.fontSizeLG,\n          fontStyle: 'normal',\n          lineHeight: unit(token.modalCloseBtnSize),\n          justifyContent: 'center',\n          textTransform: 'none',\n          textRendering: 'auto'\n        },\n        '&:disabled': {\n          pointerEvents: 'none'\n        },\n        '&:hover': {\n          color: token.modalCloseIconHoverColor,\n          backgroundColor: token.colorBgTextHover,\n          textDecoration: 'none'\n        },\n        '&:active': {\n          backgroundColor: token.colorBgTextActive\n        }\n      }, genFocusStyle(token)),\n      [`${componentCls}-header`]: {\n        color: token.colorText,\n        background: token.headerBg,\n        borderRadius: `${unit(token.borderRadiusLG)} ${unit(token.borderRadiusLG)} 0 0`,\n        marginBottom: token.headerMarginBottom,\n        padding: token.headerPadding,\n        borderBottom: token.headerBorderBottom\n      },\n      [`${componentCls}-body`]: {\n        fontSize: token.fontSize,\n        lineHeight: token.lineHeight,\n        wordWrap: 'break-word',\n        padding: token.bodyPadding,\n        [`${componentCls}-body-skeleton`]: {\n          width: '100%',\n          height: '100%',\n          display: 'flex',\n          justifyContent: 'center',\n          alignItems: 'center',\n          margin: `${unit(token.margin)} auto`\n        }\n      },\n      [`${componentCls}-footer`]: {\n        textAlign: 'end',\n        background: token.footerBg,\n        marginTop: token.footerMarginTop,\n        padding: token.footerPadding,\n        borderTop: token.footerBorderTop,\n        borderRadius: token.footerBorderRadius,\n        [`> ${token.antCls}-btn + ${token.antCls}-btn`]: {\n          marginInlineStart: token.marginXS\n        }\n      },\n      [`${componentCls}-open`]: {\n        overflow: 'hidden'\n      }\n    })\n  },\n  // ======================== Pure =========================\n  {\n    [`${componentCls}-pure-panel`]: {\n      top: 'auto',\n      padding: 0,\n      display: 'flex',\n      flexDirection: 'column',\n      [`${componentCls}-content,\n          ${componentCls}-body,\n          ${componentCls}-confirm-body-wrapper`]: {\n        display: 'flex',\n        flexDirection: 'column',\n        flex: 'auto'\n      },\n      [`${componentCls}-confirm-body`]: {\n        marginBottom: 'auto'\n      }\n    }\n  }];\n};\nconst genRTLStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    [`${componentCls}-root`]: {\n      [`${componentCls}-wrap-rtl`]: {\n        direction: 'rtl',\n        [`${componentCls}-confirm-body`]: {\n          direction: 'rtl'\n        }\n      }\n    }\n  };\n};\nconst genResponsiveWidthStyle = token => {\n  const {\n    componentCls\n  } = token;\n  const gridMediaSizesMap = getMediaSize(token);\n  delete gridMediaSizesMap.xs;\n  const responsiveStyles = Object.keys(gridMediaSizesMap).map(key => ({\n    [`@media (min-width: ${unit(gridMediaSizesMap[key])})`]: {\n      width: `var(--${componentCls.replace('.', '')}-${key}-width)`\n    }\n  }));\n  return {\n    [`${componentCls}-root`]: {\n      [componentCls]: [{\n        width: `var(--${componentCls.replace('.', '')}-xs-width)`\n      }].concat(_toConsumableArray(responsiveStyles))\n    }\n  };\n};\n// ============================== Export ==============================\nexport const prepareToken = token => {\n  const headerPaddingVertical = token.padding;\n  const headerFontSize = token.fontSizeHeading5;\n  const headerLineHeight = token.lineHeightHeading5;\n  const modalToken = mergeToken(token, {\n    modalHeaderHeight: token.calc(token.calc(headerLineHeight).mul(headerFontSize).equal()).add(token.calc(headerPaddingVertical).mul(2).equal()).equal(),\n    modalFooterBorderColorSplit: token.colorSplit,\n    modalFooterBorderStyle: token.lineType,\n    modalFooterBorderWidth: token.lineWidth,\n    modalCloseIconColor: token.colorIcon,\n    modalCloseIconHoverColor: token.colorIconHover,\n    modalCloseBtnSize: token.controlHeight,\n    modalConfirmIconSize: token.fontHeight,\n    modalTitleHeight: token.calc(token.titleFontSize).mul(token.titleLineHeight).equal()\n  });\n  return modalToken;\n};\nexport const prepareComponentToken = token => ({\n  footerBg: 'transparent',\n  headerBg: token.colorBgElevated,\n  titleLineHeight: token.lineHeightHeading5,\n  titleFontSize: token.fontSizeHeading5,\n  contentBg: token.colorBgElevated,\n  titleColor: token.colorTextHeading,\n  // internal\n  contentPadding: token.wireframe ? 0 : `${unit(token.paddingMD)} ${unit(token.paddingContentHorizontalLG)}`,\n  headerPadding: token.wireframe ? `${unit(token.padding)} ${unit(token.paddingLG)}` : 0,\n  headerBorderBottom: token.wireframe ? `${unit(token.lineWidth)} ${token.lineType} ${token.colorSplit}` : 'none',\n  headerMarginBottom: token.wireframe ? 0 : token.marginXS,\n  bodyPadding: token.wireframe ? token.paddingLG : 0,\n  footerPadding: token.wireframe ? `${unit(token.paddingXS)} ${unit(token.padding)}` : 0,\n  footerBorderTop: token.wireframe ? `${unit(token.lineWidth)} ${token.lineType} ${token.colorSplit}` : 'none',\n  footerBorderRadius: token.wireframe ? `0 0 ${unit(token.borderRadiusLG)} ${unit(token.borderRadiusLG)}` : 0,\n  footerMarginTop: token.wireframe ? 0 : token.marginSM,\n  confirmBodyPadding: token.wireframe ? `${unit(token.padding * 2)} ${unit(token.padding * 2)} ${unit(token.paddingLG)}` : 0,\n  confirmIconMarginInlineEnd: token.wireframe ? token.margin : token.marginSM,\n  confirmBtnsMarginTop: token.wireframe ? token.marginLG : token.marginSM\n});\nexport default genStyleHooks('Modal', token => {\n  const modalToken = prepareToken(token);\n  return [genModalStyle(modalToken), genRTLStyle(modalToken), genModalMaskStyle(modalToken), initZoomMotion(modalToken, 'zoom'), genResponsiveWidthStyle(modalToken)];\n}, prepareComponentToken, {\n  unitless: {\n    titleLineHeight: true\n  }\n});","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport classNames from 'classnames';\nimport Dialog from 'rc-dialog';\nimport ContextIsolator from '../_util/ContextIsolator';\nimport useClosable, { pickClosable } from '../_util/hooks/useClosable';\nimport { useZIndex } from '../_util/hooks/useZIndex';\nimport { getTransitionName } from '../_util/motion';\nimport { canUseDocElement } from '../_util/styleChecker';\nimport { devUseWarning } from '../_util/warning';\nimport zIndexContext from '../_util/zindexContext';\nimport { ConfigContext } from '../config-provider';\nimport useCSSVarCls from '../config-provider/hooks/useCSSVarCls';\nimport Skeleton from '../skeleton';\nimport { usePanelRef } from '../watermark/context';\nimport { Footer, renderCloseIcon } from './shared';\nimport useStyle from './style';\nlet mousePosition;\n// ref: https://github.com/ant-design/ant-design/issues/15795\nconst getClickPosition = e => {\n  mousePosition = {\n    x: e.pageX,\n    y: e.pageY\n  };\n  // 100ms 内发生过点击事件，则从点击位置动画展示\n  // 否则直接 zoom 展示\n  // 这样可以兼容非点击方式展开\n  setTimeout(() => {\n    mousePosition = null;\n  }, 100);\n};\n// 只有点击事件支持从鼠标位置动画展开\nif (canUseDocElement()) {\n  document.documentElement.addEventListener('click', getClickPosition, true);\n}\nconst Modal = props => {\n  const {\n      prefixCls: customizePrefixCls,\n      className,\n      rootClassName,\n      open,\n      wrapClassName,\n      centered,\n      getContainer,\n      focusTriggerAfterClose = true,\n      style,\n      // Deprecated\n      visible,\n      width = 520,\n      footer,\n      classNames: modalClassNames,\n      styles: modalStyles,\n      children,\n      loading,\n      confirmLoading,\n      zIndex: customizeZIndex,\n      mousePosition: customizeMousePosition,\n      onOk,\n      onCancel,\n      destroyOnHidden,\n      destroyOnClose\n    } = props,\n    restProps = __rest(props, [\"prefixCls\", \"className\", \"rootClassName\", \"open\", \"wrapClassName\", \"centered\", \"getContainer\", \"focusTriggerAfterClose\", \"style\", \"visible\", \"width\", \"footer\", \"classNames\", \"styles\", \"children\", \"loading\", \"confirmLoading\", \"zIndex\", \"mousePosition\", \"onOk\", \"onCancel\", \"destroyOnHidden\", \"destroyOnClose\"]);\n  const {\n    getPopupContainer: getContextPopupContainer,\n    getPrefixCls,\n    direction,\n    modal: modalContext\n  } = React.useContext(ConfigContext);\n  const handleCancel = e => {\n    if (confirmLoading) {\n      return;\n    }\n    onCancel === null || onCancel === void 0 ? void 0 : onCancel(e);\n  };\n  const handleOk = e => {\n    onOk === null || onOk === void 0 ? void 0 : onOk(e);\n  };\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('Modal');\n    [['visible', 'open'], ['bodyStyle', 'styles.body'], ['maskStyle', 'styles.mask'], ['destroyOnClose', 'destroyOnHidden']].forEach(([deprecatedName, newName]) => {\n      warning.deprecated(!(deprecatedName in props), deprecatedName, newName);\n    });\n  }\n  const prefixCls = getPrefixCls('modal', customizePrefixCls);\n  const rootPrefixCls = getPrefixCls();\n  // Style\n  const rootCls = useCSSVarCls(prefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls, rootCls);\n  const wrapClassNameExtended = classNames(wrapClassName, {\n    [`${prefixCls}-centered`]: centered !== null && centered !== void 0 ? centered : modalContext === null || modalContext === void 0 ? void 0 : modalContext.centered,\n    [`${prefixCls}-wrap-rtl`]: direction === 'rtl'\n  });\n  const dialogFooter = footer !== null && !loading ? (/*#__PURE__*/React.createElement(Footer, Object.assign({}, props, {\n    onOk: handleOk,\n    onCancel: handleCancel\n  }))) : null;\n  const [mergedClosable, mergedCloseIcon, closeBtnIsDisabled, ariaProps] = useClosable(pickClosable(props), pickClosable(modalContext), {\n    closable: true,\n    closeIcon: /*#__PURE__*/React.createElement(CloseOutlined, {\n      className: `${prefixCls}-close-icon`\n    }),\n    closeIconRender: icon => renderCloseIcon(prefixCls, icon)\n  });\n  // ============================ Refs ============================\n  // Select `ant-modal-content` by `panelRef`\n  const panelRef = usePanelRef(`.${prefixCls}-content`);\n  // ============================ zIndex ============================\n  const [zIndex, contextZIndex] = useZIndex('Modal', customizeZIndex);\n  // =========================== Width ============================\n  const [numWidth, responsiveWidth] = React.useMemo(() => {\n    if (width && typeof width === 'object') {\n      return [undefined, width];\n    }\n    return [width, undefined];\n  }, [width]);\n  const responsiveWidthVars = React.useMemo(() => {\n    const vars = {};\n    if (responsiveWidth) {\n      Object.keys(responsiveWidth).forEach(breakpoint => {\n        const breakpointWidth = responsiveWidth[breakpoint];\n        if (breakpointWidth !== undefined) {\n          vars[`--${prefixCls}-${breakpoint}-width`] = typeof breakpointWidth === 'number' ? `${breakpointWidth}px` : breakpointWidth;\n        }\n      });\n    }\n    return vars;\n  }, [responsiveWidth]);\n  // =========================== Render ===========================\n  return wrapCSSVar(/*#__PURE__*/React.createElement(ContextIsolator, {\n    form: true,\n    space: true\n  }, /*#__PURE__*/React.createElement(zIndexContext.Provider, {\n    value: contextZIndex\n  }, /*#__PURE__*/React.createElement(Dialog, Object.assign({\n    width: numWidth\n  }, restProps, {\n    zIndex: zIndex,\n    getContainer: getContainer === undefined ? getContextPopupContainer : getContainer,\n    prefixCls: prefixCls,\n    rootClassName: classNames(hashId, rootClassName, cssVarCls, rootCls),\n    footer: dialogFooter,\n    visible: open !== null && open !== void 0 ? open : visible,\n    mousePosition: customizeMousePosition !== null && customizeMousePosition !== void 0 ? customizeMousePosition : mousePosition,\n    onClose: handleCancel,\n    closable: mergedClosable ? Object.assign({\n      disabled: closeBtnIsDisabled,\n      closeIcon: mergedCloseIcon\n    }, ariaProps) : mergedClosable,\n    closeIcon: mergedCloseIcon,\n    focusTriggerAfterClose: focusTriggerAfterClose,\n    transitionName: getTransitionName(rootPrefixCls, 'zoom', props.transitionName),\n    maskTransitionName: getTransitionName(rootPrefixCls, 'fade', props.maskTransitionName),\n    className: classNames(hashId, className, modalContext === null || modalContext === void 0 ? void 0 : modalContext.className),\n    style: Object.assign(Object.assign(Object.assign({}, modalContext === null || modalContext === void 0 ? void 0 : modalContext.style), style), responsiveWidthVars),\n    classNames: Object.assign(Object.assign(Object.assign({}, modalContext === null || modalContext === void 0 ? void 0 : modalContext.classNames), modalClassNames), {\n      wrapper: classNames(wrapClassNameExtended, modalClassNames === null || modalClassNames === void 0 ? void 0 : modalClassNames.wrapper)\n    }),\n    styles: Object.assign(Object.assign({}, modalContext === null || modalContext === void 0 ? void 0 : modalContext.styles), modalStyles),\n    panelRef: panelRef,\n    // TODO: In the future, destroyOnClose in rc-dialog needs to be upgrade to destroyOnHidden\n    destroyOnClose: destroyOnHidden !== null && destroyOnHidden !== void 0 ? destroyOnHidden : destroyOnClose\n  }), loading ? (/*#__PURE__*/React.createElement(Skeleton, {\n    active: true,\n    title: false,\n    paragraph: {\n      rows: 4\n    },\n    className: `${prefixCls}-body-skeleton`\n  })) : children))));\n};\nexport default Modal;","// Style as confirm component\nimport { unit } from '@ant-design/cssinjs';\nimport { prepareComponentToken, prepareToken } from '.';\nimport { clearFix } from '../../style';\nimport { genSubStyleComponent } from '../../theme/internal';\n// ============================= Confirm ==============================\nconst genModalConfirmStyle = token => {\n  const {\n    componentCls,\n    titleFontSize,\n    titleLineHeight,\n    modalConfirmIconSize,\n    fontSize,\n    lineHeight,\n    modalTitleHeight,\n    fontHeight,\n    confirmBodyPadding\n  } = token;\n  const confirmComponentCls = `${componentCls}-confirm`;\n  return {\n    [confirmComponentCls]: {\n      '&-rtl': {\n        direction: 'rtl'\n      },\n      [`${token.antCls}-modal-header`]: {\n        display: 'none'\n      },\n      [`${confirmComponentCls}-body-wrapper`]: Object.assign({}, clearFix()),\n      [`&${componentCls} ${componentCls}-body`]: {\n        padding: confirmBodyPadding\n      },\n      // ====================== Body ======================\n      [`${confirmComponentCls}-body`]: {\n        display: 'flex',\n        flexWrap: 'nowrap',\n        alignItems: 'start',\n        [`> ${token.iconCls}`]: {\n          flex: 'none',\n          fontSize: modalConfirmIconSize,\n          marginInlineEnd: token.confirmIconMarginInlineEnd,\n          marginTop: token.calc(token.calc(fontHeight).sub(modalConfirmIconSize).equal()).div(2).equal()\n        },\n        [`&-has-title > ${token.iconCls}`]: {\n          marginTop: token.calc(token.calc(modalTitleHeight).sub(modalConfirmIconSize).equal()).div(2).equal()\n        }\n      },\n      [`${confirmComponentCls}-paragraph`]: {\n        display: 'flex',\n        flexDirection: 'column',\n        flex: 'auto',\n        rowGap: token.marginXS,\n        // https://github.com/ant-design/ant-design/issues/51912\n        maxWidth: `calc(100% - ${unit(token.marginSM)})`\n      },\n      // https://github.com/ant-design/ant-design/issues/48159\n      [`${token.iconCls} + ${confirmComponentCls}-paragraph`]: {\n        maxWidth: `calc(100% - ${unit(token.calc(token.modalConfirmIconSize).add(token.marginSM).equal())})`\n      },\n      [`${confirmComponentCls}-title`]: {\n        color: token.colorTextHeading,\n        fontWeight: token.fontWeightStrong,\n        fontSize: titleFontSize,\n        lineHeight: titleLineHeight\n      },\n      [`${confirmComponentCls}-content`]: {\n        color: token.colorText,\n        fontSize,\n        lineHeight\n      },\n      // ===================== Footer =====================\n      [`${confirmComponentCls}-btns`]: {\n        textAlign: 'end',\n        marginTop: token.confirmBtnsMarginTop,\n        [`${token.antCls}-btn + ${token.antCls}-btn`]: {\n          marginBottom: 0,\n          marginInlineStart: token.marginXS\n        }\n      }\n    },\n    [`${confirmComponentCls}-error ${confirmComponentCls}-body > ${token.iconCls}`]: {\n      color: token.colorError\n    },\n    [`${confirmComponentCls}-warning ${confirmComponentCls}-body > ${token.iconCls},\n        ${confirmComponentCls}-confirm ${confirmComponentCls}-body > ${token.iconCls}`]: {\n      color: token.colorWarning\n    },\n    [`${confirmComponentCls}-info ${confirmComponentCls}-body > ${token.iconCls}`]: {\n      color: token.colorInfo\n    },\n    [`${confirmComponentCls}-success ${confirmComponentCls}-body > ${token.iconCls}`]: {\n      color: token.colorSuccess\n    }\n  };\n};\n// ============================== Export ==============================\nexport default genSubStyleComponent(['Modal', 'confirm'], token => {\n  const modalToken = prepareToken(token);\n  return [genModalConfirmStyle(modalToken)];\n}, prepareComponentToken, {\n  // confirm is weak than modal since no conflict here\n  order: -1000\n});","\"use client\";\n\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport CheckCircleFilled from \"@ant-design/icons/es/icons/CheckCircleFilled\";\nimport CloseCircleFilled from \"@ant-design/icons/es/icons/CloseCircleFilled\";\nimport ExclamationCircleFilled from \"@ant-design/icons/es/icons/ExclamationCircleFilled\";\nimport InfoCircleFilled from \"@ant-design/icons/es/icons/InfoCircleFilled\";\nimport classNames from 'classnames';\nimport { CONTAINER_MAX_OFFSET } from '../_util/hooks/useZIndex';\nimport { getTransitionName } from '../_util/motion';\nimport { devUseWarning } from '../_util/warning';\nimport ConfigProvider from '../config-provider';\nimport { useLocale } from '../locale';\nimport useToken from '../theme/useToken';\nimport CancelBtn from './components/ConfirmCancelBtn';\nimport OkBtn from './components/ConfirmOkBtn';\nimport { ModalContextProvider } from './context';\nimport Modal from './Modal';\nimport Confirm from './style/confirm';\nexport function ConfirmContent(props) {\n  const {\n      prefixCls,\n      icon,\n      okText,\n      cancelText,\n      confirmPrefixCls,\n      type,\n      okCancel,\n      footer,\n      // Legacy for static function usage\n      locale: staticLocale\n    } = props,\n    resetProps = __rest(props, [\"prefixCls\", \"icon\", \"okText\", \"cancelText\", \"confirmPrefixCls\", \"type\", \"okCancel\", \"footer\", \"locale\"]);\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('Modal');\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof icon === 'string' && icon.length > 2), 'breaking', `\\`icon\\` is using ReactNode instead of string naming in v4. Please check \\`${icon}\\` at https://ant.design/components/icon`) : void 0;\n  }\n  // Icon\n  let mergedIcon = icon;\n  // 支持传入{ icon: null }来隐藏`Modal.confirm`默认的Icon\n  if (!icon && icon !== null) {\n    switch (type) {\n      case 'info':\n        mergedIcon = /*#__PURE__*/React.createElement(InfoCircleFilled, null);\n        break;\n      case 'success':\n        mergedIcon = /*#__PURE__*/React.createElement(CheckCircleFilled, null);\n        break;\n      case 'error':\n        mergedIcon = /*#__PURE__*/React.createElement(CloseCircleFilled, null);\n        break;\n      default:\n        mergedIcon = /*#__PURE__*/React.createElement(ExclamationCircleFilled, null);\n    }\n  }\n  // 默认为 true，保持向下兼容\n  const mergedOkCancel = okCancel !== null && okCancel !== void 0 ? okCancel : type === 'confirm';\n  const autoFocusButton = props.autoFocusButton === null ? false : props.autoFocusButton || 'ok';\n  const [locale] = useLocale('Modal');\n  const mergedLocale = staticLocale || locale;\n  // ================== Locale Text ==================\n  const okTextLocale = okText || (mergedOkCancel ? mergedLocale === null || mergedLocale === void 0 ? void 0 : mergedLocale.okText : mergedLocale === null || mergedLocale === void 0 ? void 0 : mergedLocale.justOkText);\n  const cancelTextLocale = cancelText || (mergedLocale === null || mergedLocale === void 0 ? void 0 : mergedLocale.cancelText);\n  // ================= Context Value =================\n  const btnCtxValue = Object.assign({\n    autoFocusButton,\n    cancelTextLocale,\n    okTextLocale,\n    mergedOkCancel\n  }, resetProps);\n  const btnCtxValueMemo = React.useMemo(() => btnCtxValue, _toConsumableArray(Object.values(btnCtxValue)));\n  // ====================== Footer Origin Node ======================\n  const footerOriginNode = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(CancelBtn, null), /*#__PURE__*/React.createElement(OkBtn, null));\n  const hasTitle = props.title !== undefined && props.title !== null;\n  const bodyCls = `${confirmPrefixCls}-body`;\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: `${confirmPrefixCls}-body-wrapper`\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(bodyCls, {\n      [`${bodyCls}-has-title`]: hasTitle\n    })\n  }, mergedIcon, /*#__PURE__*/React.createElement(\"div\", {\n    className: `${confirmPrefixCls}-paragraph`\n  }, hasTitle && /*#__PURE__*/React.createElement(\"span\", {\n    className: `${confirmPrefixCls}-title`\n  }, props.title), /*#__PURE__*/React.createElement(\"div\", {\n    className: `${confirmPrefixCls}-content`\n  }, props.content))), footer === undefined || typeof footer === 'function' ? (/*#__PURE__*/React.createElement(ModalContextProvider, {\n    value: btnCtxValueMemo\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    className: `${confirmPrefixCls}-btns`\n  }, typeof footer === 'function' ? footer(footerOriginNode, {\n    OkBtn,\n    CancelBtn\n  }) : footerOriginNode))) : footer, /*#__PURE__*/React.createElement(Confirm, {\n    prefixCls: prefixCls\n  }));\n}\nconst ConfirmDialog = props => {\n  const {\n    close,\n    zIndex,\n    maskStyle,\n    direction,\n    prefixCls,\n    wrapClassName,\n    rootPrefixCls,\n    bodyStyle,\n    closable = false,\n    onConfirm,\n    styles\n  } = props;\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('Modal');\n    [['visible', 'open'], ['bodyStyle', 'styles.body'], ['maskStyle', 'styles.mask']].forEach(([deprecatedName, newName]) => {\n      warning.deprecated(!(deprecatedName in props), deprecatedName, newName);\n    });\n  }\n  const confirmPrefixCls = `${prefixCls}-confirm`;\n  const width = props.width || 416;\n  const style = props.style || {};\n  const mask = props.mask === undefined ? true : props.mask;\n  // 默认为 false，保持旧版默认行为\n  const maskClosable = props.maskClosable === undefined ? false : props.maskClosable;\n  const classString = classNames(confirmPrefixCls, `${confirmPrefixCls}-${props.type}`, {\n    [`${confirmPrefixCls}-rtl`]: direction === 'rtl'\n  }, props.className);\n  // ========================= zIndex =========================\n  const [, token] = useToken();\n  const mergedZIndex = React.useMemo(() => {\n    if (zIndex !== undefined) {\n      return zIndex;\n    }\n    // Static always use max zIndex\n    return token.zIndexPopupBase + CONTAINER_MAX_OFFSET;\n  }, [zIndex, token]);\n  // ========================= Render =========================\n  return /*#__PURE__*/React.createElement(Modal, Object.assign({}, props, {\n    className: classString,\n    wrapClassName: classNames({\n      [`${confirmPrefixCls}-centered`]: !!props.centered\n    }, wrapClassName),\n    onCancel: () => {\n      close === null || close === void 0 ? void 0 : close({\n        triggerCancel: true\n      });\n      onConfirm === null || onConfirm === void 0 ? void 0 : onConfirm(false);\n    },\n    title: \"\",\n    footer: null,\n    transitionName: getTransitionName(rootPrefixCls || '', 'zoom', props.transitionName),\n    maskTransitionName: getTransitionName(rootPrefixCls || '', 'fade', props.maskTransitionName),\n    mask: mask,\n    maskClosable: maskClosable,\n    style: style,\n    styles: Object.assign({\n      body: bodyStyle,\n      mask: maskStyle\n    }, styles),\n    width: width,\n    zIndex: mergedZIndex,\n    closable: closable\n  }), /*#__PURE__*/React.createElement(ConfirmContent, Object.assign({}, props, {\n    confirmPrefixCls: confirmPrefixCls\n  })));\n};\nconst ConfirmDialogWrapper = props => {\n  const {\n    rootPrefixCls,\n    iconPrefixCls,\n    direction,\n    theme\n  } = props;\n  return /*#__PURE__*/React.createElement(ConfigProvider, {\n    prefixCls: rootPrefixCls,\n    iconPrefixCls: iconPrefixCls,\n    direction: direction,\n    theme: theme\n  }, /*#__PURE__*/React.createElement(ConfirmDialog, Object.assign({}, props)));\n};\nif (process.env.NODE_ENV !== 'production') {\n  ConfirmDialog.displayName = 'ConfirmDialog';\n  ConfirmDialogWrapper.displayName = 'ConfirmDialogWrapper';\n}\nexport default ConfirmDialogWrapper;","const destroyFns = [];\nexport default destroyFns;","\"use client\";\n\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport React, { useContext } from 'react';\nimport warning from '../_util/warning';\nimport ConfigProvider, { ConfigContext, globalConfig, warnContext } from '../config-provider';\nimport { unstableSetRender } from '../config-provider/UnstableContext';\nimport ConfirmDialog from './ConfirmDialog';\nimport destroyFns from './destroyFns';\nimport { getConfirmLocale } from './locale';\nlet defaultRootPrefixCls = '';\nfunction getRootPrefixCls() {\n  return defaultRootPrefixCls;\n}\nconst ConfirmDialogWrapper = props => {\n  var _a, _b;\n  const {\n    prefixCls: customizePrefixCls,\n    getContainer,\n    direction\n  } = props;\n  const runtimeLocale = getConfirmLocale();\n  const config = useContext(ConfigContext);\n  const rootPrefixCls = getRootPrefixCls() || config.getPrefixCls();\n  // because Modal.config set rootPrefixCls, which is different from other components\n  const prefixCls = customizePrefixCls || `${rootPrefixCls}-modal`;\n  let mergedGetContainer = getContainer;\n  if (mergedGetContainer === false) {\n    mergedGetContainer = undefined;\n    if (process.env.NODE_ENV !== 'production') {\n      process.env.NODE_ENV !== \"production\" ? warning(false, 'Modal', 'Static method not support `getContainer` to be `false` since it do not have context env.') : void 0;\n    }\n  }\n  return /*#__PURE__*/React.createElement(ConfirmDialog, Object.assign({}, props, {\n    rootPrefixCls: rootPrefixCls,\n    prefixCls: prefixCls,\n    iconPrefixCls: config.iconPrefixCls,\n    theme: config.theme,\n    direction: direction !== null && direction !== void 0 ? direction : config.direction,\n    locale: (_b = (_a = config.locale) === null || _a === void 0 ? void 0 : _a.Modal) !== null && _b !== void 0 ? _b : runtimeLocale,\n    getContainer: mergedGetContainer\n  }));\n};\nexport default function confirm(config) {\n  const global = globalConfig();\n  if (process.env.NODE_ENV !== 'production' && !global.holderRender) {\n    warnContext('Modal');\n  }\n  const container = document.createDocumentFragment();\n  let currentConfig = Object.assign(Object.assign({}, config), {\n    close,\n    open: true\n  });\n  let timeoutId;\n  let reactUnmount;\n  function destroy(...args) {\n    var _a;\n    const triggerCancel = args.some(param => param === null || param === void 0 ? void 0 : param.triggerCancel);\n    if (triggerCancel) {\n      var _a2;\n      (_a = config.onCancel) === null || _a === void 0 ? void 0 : (_a2 = _a).call.apply(_a2, [config, () => {}].concat(_toConsumableArray(args.slice(1))));\n    }\n    for (let i = 0; i < destroyFns.length; i++) {\n      const fn = destroyFns[i];\n      if (fn === close) {\n        destroyFns.splice(i, 1);\n        break;\n      }\n    }\n    reactUnmount();\n  }\n  function render(props) {\n    clearTimeout(timeoutId);\n    /**\n     * https://github.com/ant-design/ant-design/issues/23623\n     *\n     * Sync render blocks React event. Let's make this async.\n     */\n    timeoutId = setTimeout(() => {\n      const rootPrefixCls = global.getPrefixCls(undefined, getRootPrefixCls());\n      const iconPrefixCls = global.getIconPrefixCls();\n      const theme = global.getTheme();\n      const dom = /*#__PURE__*/React.createElement(ConfirmDialogWrapper, Object.assign({}, props));\n      const reactRender = unstableSetRender();\n      reactUnmount = reactRender(/*#__PURE__*/React.createElement(ConfigProvider, {\n        prefixCls: rootPrefixCls,\n        iconPrefixCls: iconPrefixCls,\n        theme: theme\n      }, global.holderRender ? global.holderRender(dom) : dom), container);\n    });\n  }\n  function close(...args) {\n    currentConfig = Object.assign(Object.assign({}, currentConfig), {\n      open: false,\n      afterClose: () => {\n        if (typeof config.afterClose === 'function') {\n          config.afterClose();\n        }\n        // @ts-ignore\n        destroy.apply(this, args);\n      }\n    });\n    // Legacy support\n    if (currentConfig.visible) {\n      delete currentConfig.visible;\n    }\n    render(currentConfig);\n  }\n  function update(configUpdate) {\n    if (typeof configUpdate === 'function') {\n      currentConfig = configUpdate(currentConfig);\n    } else {\n      currentConfig = Object.assign(Object.assign({}, currentConfig), configUpdate);\n    }\n    render(currentConfig);\n  }\n  render(currentConfig);\n  destroyFns.push(close);\n  return {\n    destroy: close,\n    update\n  };\n}\nexport function withWarn(props) {\n  return Object.assign(Object.assign({}, props), {\n    type: 'warning'\n  });\n}\nexport function withInfo(props) {\n  return Object.assign(Object.assign({}, props), {\n    type: 'info'\n  });\n}\nexport function withSuccess(props) {\n  return Object.assign(Object.assign({}, props), {\n    type: 'success'\n  });\n}\nexport function withError(props) {\n  return Object.assign(Object.assign({}, props), {\n    type: 'error'\n  });\n}\nexport function withConfirm(props) {\n  return Object.assign(Object.assign({}, props), {\n    type: 'confirm'\n  });\n}\nexport function modalGlobalConfig({\n  rootPrefixCls\n}) {\n  process.env.NODE_ENV !== \"production\" ? warning(false, 'Modal', 'Modal.config is deprecated. Please use ConfigProvider.config instead.') : void 0;\n  defaultRootPrefixCls = rootPrefixCls;\n}","\"use client\";\n\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport { ConfigContext } from '../../config-provider';\nimport defaultLocale from '../../locale/en_US';\nimport useLocale from '../../locale/useLocale';\nimport ConfirmDialog from '../ConfirmDialog';\nconst HookModal = (_a, ref) => {\n  var _b;\n  var {\n      afterClose: hookAfterClose,\n      config\n    } = _a,\n    restProps = __rest(_a, [\"afterClose\", \"config\"]);\n  const [open, setOpen] = React.useState(true);\n  const [innerConfig, setInnerConfig] = React.useState(config);\n  const {\n    direction,\n    getPrefixCls\n  } = React.useContext(ConfigContext);\n  const prefixCls = getPrefixCls('modal');\n  const rootPrefixCls = getPrefixCls();\n  const afterClose = () => {\n    var _a;\n    hookAfterClose();\n    (_a = innerConfig.afterClose) === null || _a === void 0 ? void 0 : _a.call(innerConfig);\n  };\n  const close = (...args) => {\n    var _a;\n    setOpen(false);\n    const triggerCancel = args.some(param => param === null || param === void 0 ? void 0 : param.triggerCancel);\n    if (triggerCancel) {\n      var _a2;\n      (_a = innerConfig.onCancel) === null || _a === void 0 ? void 0 : (_a2 = _a).call.apply(_a2, [innerConfig, () => {}].concat(_toConsumableArray(args.slice(1))));\n    }\n  };\n  React.useImperativeHandle(ref, () => ({\n    destroy: close,\n    update: newConfig => {\n      setInnerConfig(originConfig => {\n        const nextConfig = typeof newConfig === 'function' ? newConfig(originConfig) : newConfig;\n        return Object.assign(Object.assign({}, originConfig), nextConfig);\n      });\n    }\n  }));\n  const mergedOkCancel = (_b = innerConfig.okCancel) !== null && _b !== void 0 ? _b : innerConfig.type === 'confirm';\n  const [contextLocale] = useLocale('Modal', defaultLocale.Modal);\n  return /*#__PURE__*/React.createElement(ConfirmDialog, Object.assign({\n    prefixCls: prefixCls,\n    rootPrefixCls: rootPrefixCls\n  }, innerConfig, {\n    close: close,\n    open: open,\n    afterClose: afterClose,\n    okText: innerConfig.okText || (mergedOkCancel ? contextLocale === null || contextLocale === void 0 ? void 0 : contextLocale.okText : contextLocale === null || contextLocale === void 0 ? void 0 : contextLocale.justOkText),\n    direction: innerConfig.direction || direction,\n    cancelText: innerConfig.cancelText || (contextLocale === null || contextLocale === void 0 ? void 0 : contextLocale.cancelText)\n  }, restProps));\n};\nexport default /*#__PURE__*/React.forwardRef(HookModal);","\"use client\";\n\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nimport usePatchElement from '../../_util/hooks/usePatchElement';\nimport { withConfirm, withError, withInfo, withSuccess, withWarn } from '../confirm';\nimport destroyFns from '../destroyFns';\nimport HookModal from './HookModal';\nlet uuid = 0;\nconst ElementsHolder = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef((_props, ref) => {\n  const [elements, patchElement] = usePatchElement();\n  React.useImperativeHandle(ref, () => ({\n    patchElement\n  }), []);\n  return /*#__PURE__*/React.createElement(React.Fragment, null, elements);\n}));\nfunction useModal() {\n  const holderRef = React.useRef(null);\n  // ========================== Effect ==========================\n  const [actionQueue, setActionQueue] = React.useState([]);\n  React.useEffect(() => {\n    if (actionQueue.length) {\n      const cloneQueue = _toConsumableArray(actionQueue);\n      cloneQueue.forEach(action => {\n        action();\n      });\n      setActionQueue([]);\n    }\n  }, [actionQueue]);\n  // =========================== Hook ===========================\n  const getConfirmFunc = React.useCallback(withFunc => function hookConfirm(config) {\n    var _a;\n    uuid += 1;\n    const modalRef = /*#__PURE__*/React.createRef();\n    // Proxy to promise with `onClose`\n    let resolvePromise;\n    const promise = new Promise(resolve => {\n      resolvePromise = resolve;\n    });\n    let silent = false;\n    let closeFunc;\n    const modal = /*#__PURE__*/React.createElement(HookModal, {\n      key: `modal-${uuid}`,\n      config: withFunc(config),\n      ref: modalRef,\n      afterClose: () => {\n        closeFunc === null || closeFunc === void 0 ? void 0 : closeFunc();\n      },\n      isSilent: () => silent,\n      onConfirm: confirmed => {\n        resolvePromise(confirmed);\n      }\n    });\n    closeFunc = (_a = holderRef.current) === null || _a === void 0 ? void 0 : _a.patchElement(modal);\n    if (closeFunc) {\n      destroyFns.push(closeFunc);\n    }\n    const instance = {\n      destroy: () => {\n        function destroyAction() {\n          var _a;\n          (_a = modalRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n        }\n        if (modalRef.current) {\n          destroyAction();\n        } else {\n          setActionQueue(prev => [].concat(_toConsumableArray(prev), [destroyAction]));\n        }\n      },\n      update: newConfig => {\n        function updateAction() {\n          var _a;\n          (_a = modalRef.current) === null || _a === void 0 ? void 0 : _a.update(newConfig);\n        }\n        if (modalRef.current) {\n          updateAction();\n        } else {\n          setActionQueue(prev => [].concat(_toConsumableArray(prev), [updateAction]));\n        }\n      },\n      then: resolve => {\n        silent = true;\n        return promise.then(resolve);\n      }\n    };\n    return instance;\n  }, []);\n  const fns = React.useMemo(() => ({\n    info: getConfirmFunc(withInfo),\n    success: getConfirmFunc(withSuccess),\n    error: getConfirmFunc(withError),\n    warning: getConfirmFunc(withWarn),\n    confirm: getConfirmFunc(withConfirm)\n  }), []);\n  return [fns, /*#__PURE__*/React.createElement(ElementsHolder, {\n    key: \"modal-holder\",\n    ref: holderRef\n  })];\n}\nexport default useModal;","\"use client\";\n\nimport * as React from 'react';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport ConfigProvider, { ConfigContext } from '../config-provider';\nexport function withPureRenderTheme(Component) {\n  return props => (/*#__PURE__*/React.createElement(ConfigProvider, {\n    theme: {\n      token: {\n        motion: false,\n        zIndexPopupBase: 0\n      }\n    }\n  }, /*#__PURE__*/React.createElement(Component, Object.assign({}, props))));\n}\n/* istanbul ignore next */\nconst genPurePanel = (Component, alignPropName, postProps, defaultPrefixCls, getDropdownCls) => {\n  const PurePanel = props => {\n    const {\n      prefixCls: customizePrefixCls,\n      style\n    } = props;\n    const holderRef = React.useRef(null);\n    const [popupHeight, setPopupHeight] = React.useState(0);\n    const [popupWidth, setPopupWidth] = React.useState(0);\n    const [open, setOpen] = useMergedState(false, {\n      value: props.open\n    });\n    const {\n      getPrefixCls\n    } = React.useContext(ConfigContext);\n    const prefixCls = getPrefixCls(defaultPrefixCls || 'select', customizePrefixCls);\n    React.useEffect(() => {\n      // We do not care about ssr\n      setOpen(true);\n      if (typeof ResizeObserver !== 'undefined') {\n        const resizeObserver = new ResizeObserver(entries => {\n          const element = entries[0].target;\n          setPopupHeight(element.offsetHeight + 8);\n          setPopupWidth(element.offsetWidth);\n        });\n        const interval = setInterval(() => {\n          var _a;\n          const dropdownCls = getDropdownCls ? `.${getDropdownCls(prefixCls)}` : `.${prefixCls}-dropdown`;\n          const popup = (_a = holderRef.current) === null || _a === void 0 ? void 0 : _a.querySelector(dropdownCls);\n          if (popup) {\n            clearInterval(interval);\n            resizeObserver.observe(popup);\n          }\n        }, 10);\n        return () => {\n          clearInterval(interval);\n          resizeObserver.disconnect();\n        };\n      }\n    }, []);\n    let mergedProps = Object.assign(Object.assign({}, props), {\n      style: Object.assign(Object.assign({}, style), {\n        margin: 0\n      }),\n      open,\n      visible: open,\n      getPopupContainer: () => holderRef.current\n    });\n    if (postProps) {\n      mergedProps = postProps(mergedProps);\n    }\n    if (alignPropName) {\n      Object.assign(mergedProps, {\n        [alignPropName]: {\n          overflow: {\n            adjustX: false,\n            adjustY: false\n          }\n        }\n      });\n    }\n    const mergedStyle = {\n      paddingBottom: popupHeight,\n      position: 'relative',\n      minWidth: popupWidth\n    };\n    return /*#__PURE__*/React.createElement(\"div\", {\n      ref: holderRef,\n      style: mergedStyle\n    }, /*#__PURE__*/React.createElement(Component, Object.assign({}, mergedProps)));\n  };\n  return withPureRenderTheme(PurePanel);\n};\nexport default genPurePanel;","export default (function () {\n  if (typeof navigator === 'undefined' || typeof window === 'undefined') {\n    return false;\n  }\n  var agent = navigator.userAgent || navigator.vendor || window.opera;\n  return /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(agent) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(agent === null || agent === void 0 ? void 0 : agent.substr(0, 4));\n});","import * as React from 'react';\nimport classNames from 'classnames';\nvar TransBtn = function TransBtn(props) {\n  var className = props.className,\n    customizeIcon = props.customizeIcon,\n    customizeIconProps = props.customizeIconProps,\n    children = props.children,\n    _onMouseDown = props.onMouseDown,\n    onClick = props.onClick;\n  var icon = typeof customizeIcon === 'function' ? customizeIcon(customizeIconProps) : customizeIcon;\n  return /*#__PURE__*/React.createElement(\"span\", {\n    className: className,\n    onMouseDown: function onMouseDown(event) {\n      event.preventDefault();\n      _onMouseDown === null || _onMouseDown === void 0 || _onMouseDown(event);\n    },\n    style: {\n      userSelect: 'none',\n      WebkitUserSelect: 'none'\n    },\n    unselectable: \"on\",\n    onClick: onClick,\n    \"aria-hidden\": true\n  }, icon !== undefined ? icon : /*#__PURE__*/React.createElement(\"span\", {\n    className: classNames(className.split(/\\s+/).map(function (cls) {\n      return \"\".concat(cls, \"-icon\");\n    }))\n  }, children));\n};\nexport default TransBtn;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport TransBtn from \"../TransBtn\";\nimport React from 'react';\nexport var useAllowClear = function useAllowClear(prefixCls, onClearMouseDown, displayValues, allowClear, clearIcon) {\n  var disabled = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;\n  var mergedSearchValue = arguments.length > 6 ? arguments[6] : undefined;\n  var mode = arguments.length > 7 ? arguments[7] : undefined;\n  var mergedClearIcon = React.useMemo(function () {\n    if (_typeof(allowClear) === 'object') {\n      return allowClear.clearIcon;\n    }\n    if (clearIcon) {\n      return clearIcon;\n    }\n  }, [allowClear, clearIcon]);\n  var mergedAllowClear = React.useMemo(function () {\n    if (!disabled && !!allowClear && (displayValues.length || mergedSearchValue) && !(mode === 'combobox' && mergedSearchValue === '')) {\n      return true;\n    }\n    return false;\n  }, [allowClear, disabled, displayValues.length, mergedSearchValue, mode]);\n  return {\n    allowClear: mergedAllowClear,\n    clearIcon: /*#__PURE__*/React.createElement(TransBtn, {\n      className: \"\".concat(prefixCls, \"-clear\"),\n      onMouseDown: onClearMouseDown,\n      customizeIcon: mergedClearIcon\n    }, \"\\xD7\")\n  };\n};","/**\n * BaseSelect provide some parsed data into context.\n * You can use this hooks to get them.\n */\n\nimport * as React from 'react';\nexport var BaseSelectContext = /*#__PURE__*/React.createContext(null);\nexport default function useBaseProps() {\n  return React.useContext(BaseSelectContext);\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\n\n/**\n * Similar with `useLock`, but this hook will always execute last value.\n * When set to `true`, it will keep `true` for a short time even if `false` is set.\n */\nexport default function useDelayReset() {\n  var timeout = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10;\n  var _React$useState = React.useState(false),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    bool = _React$useState2[0],\n    setBool = _React$useState2[1];\n  var delayRef = React.useRef(null);\n  var cancelLatest = function cancelLatest() {\n    window.clearTimeout(delayRef.current);\n  };\n  React.useEffect(function () {\n    return cancelLatest;\n  }, []);\n  var delaySetBool = function delaySetBool(value, callback) {\n    cancelLatest();\n    delayRef.current = window.setTimeout(function () {\n      setBool(value);\n      if (callback) {\n        callback();\n      }\n    }, timeout);\n  };\n  return [bool, delaySetBool, cancelLatest];\n}","import * as React from 'react';\n\n/**\n * Locker return cached mark.\n * If set to `true`, will return `true` in a short time even if set `false`.\n * If set to `false` and then set to `true`, will change to `true`.\n * And after time duration, it will back to `null` automatically.\n */\nexport default function useLock() {\n  var duration = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 250;\n  var lockRef = React.useRef(null);\n  var timeoutRef = React.useRef(null);\n\n  // Clean up\n  React.useEffect(function () {\n    return function () {\n      window.clearTimeout(timeoutRef.current);\n    };\n  }, []);\n  function doLock(locked) {\n    if (locked || lockRef.current === null) {\n      lockRef.current = locked;\n    }\n    window.clearTimeout(timeoutRef.current);\n    timeoutRef.current = window.setTimeout(function () {\n      lockRef.current = null;\n    }, duration);\n  }\n  return [function () {\n    return lockRef.current;\n  }, doLock];\n}","import * as React from 'react';\nexport default function useSelectTriggerControl(elements, open, triggerOpen, customizedTrigger) {\n  var propsRef = React.useRef(null);\n  propsRef.current = {\n    open: open,\n    triggerOpen: triggerOpen,\n    customizedTrigger: customizedTrigger\n  };\n  React.useEffect(function () {\n    function onGlobalMouseDown(event) {\n      var _propsRef$current;\n      // If trigger is customized, Trigger will take control of popupVisible\n      if ((_propsRef$current = propsRef.current) !== null && _propsRef$current !== void 0 && _propsRef$current.customizedTrigger) {\n        return;\n      }\n      var target = event.target;\n      if (target.shadowRoot && event.composed) {\n        target = event.composedPath()[0] || target;\n      }\n      if (propsRef.current.open && elements().filter(function (element) {\n        return element;\n      }).every(function (element) {\n        return !element.contains(target) && element !== target;\n      })) {\n        // Should trigger close\n        propsRef.current.triggerOpen(false);\n      }\n    }\n    window.addEventListener('mousedown', onGlobalMouseDown);\n    return function () {\n      return window.removeEventListener('mousedown', onGlobalMouseDown);\n    };\n  }, []);\n}","import KeyCode from \"rc-util/es/KeyCode\";\n\n/** keyCode Judgment function */\nexport function isValidateOpenKey(currentKeyCode) {\n  return (\n    // Undefined for Edge bug:\n    // https://github.com/ant-design/ant-design/issues/51292\n    currentKeyCode &&\n    // Other keys\n    ![\n    // System function button\n    KeyCode.ESC, KeyCode.SHIFT, KeyCode.BACKSPACE, KeyCode.TAB, KeyCode.WIN_KEY, KeyCode.ALT, KeyCode.META, KeyCode.WIN_KEY_RIGHT, KeyCode.CTRL, KeyCode.SEMICOLON, KeyCode.EQUALS, KeyCode.CAPS_LOCK, KeyCode.CONTEXT_MENU,\n    // F1-F12\n    KeyCode.F1, KeyCode.F2, KeyCode.F3, KeyCode.F4, KeyCode.F5, KeyCode.F6, KeyCode.F7, KeyCode.F8, KeyCode.F9, KeyCode.F10, KeyCode.F11, KeyCode.F12].includes(currentKeyCode)\n  );\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"invalidate\", \"item\", \"renderItem\", \"responsive\", \"responsiveDisabled\", \"registerSize\", \"itemKey\", \"className\", \"style\", \"children\", \"display\", \"order\", \"component\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\n// Use shared variable to save bundle size\nvar UNDEFINED = undefined;\nfunction InternalItem(props, ref) {\n  var prefixCls = props.prefixCls,\n    invalidate = props.invalidate,\n    item = props.item,\n    renderItem = props.renderItem,\n    responsive = props.responsive,\n    responsiveDisabled = props.responsiveDisabled,\n    registerSize = props.registerSize,\n    itemKey = props.itemKey,\n    className = props.className,\n    style = props.style,\n    children = props.children,\n    display = props.display,\n    order = props.order,\n    _props$component = props.component,\n    Component = _props$component === void 0 ? 'div' : _props$component,\n    restProps = _objectWithoutProperties(props, _excluded);\n  var mergedHidden = responsive && !display;\n\n  // ================================ Effect ================================\n  function internalRegisterSize(width) {\n    registerSize(itemKey, width);\n  }\n  React.useEffect(function () {\n    return function () {\n      internalRegisterSize(null);\n    };\n  }, []);\n\n  // ================================ Render ================================\n  var childNode = renderItem && item !== UNDEFINED ? renderItem(item, {\n    index: order\n  }) : children;\n  var overflowStyle;\n  if (!invalidate) {\n    overflowStyle = {\n      opacity: mergedHidden ? 0 : 1,\n      height: mergedHidden ? 0 : UNDEFINED,\n      overflowY: mergedHidden ? 'hidden' : UNDEFINED,\n      order: responsive ? order : UNDEFINED,\n      pointerEvents: mergedHidden ? 'none' : UNDEFINED,\n      position: mergedHidden ? 'absolute' : UNDEFINED\n    };\n  }\n  var overflowProps = {};\n  if (mergedHidden) {\n    overflowProps['aria-hidden'] = true;\n  }\n  var itemNode = /*#__PURE__*/React.createElement(Component, _extends({\n    className: classNames(!invalidate && prefixCls, className),\n    style: _objectSpread(_objectSpread({}, overflowStyle), style)\n  }, overflowProps, restProps, {\n    ref: ref\n  }), childNode);\n  if (responsive) {\n    itemNode = /*#__PURE__*/React.createElement(ResizeObserver, {\n      onResize: function onResize(_ref) {\n        var offsetWidth = _ref.offsetWidth;\n        internalRegisterSize(offsetWidth);\n      },\n      disabled: responsiveDisabled\n    }, itemNode);\n  }\n  return itemNode;\n}\nvar Item = /*#__PURE__*/React.forwardRef(InternalItem);\nItem.displayName = 'Item';\nexport default Item;","import raf from \"rc-util/es/raf\";\nexport default function channelUpdate(callback) {\n  if (typeof MessageChannel === 'undefined') {\n    raf(callback);\n  } else {\n    var channel = new MessageChannel();\n    channel.port1.onmessage = function () {\n      return callback();\n    };\n    channel.port2.postMessage(undefined);\n  }\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport * as React from 'react';\nimport { unstable_batchedUpdates } from 'react-dom';\nimport channelUpdate from \"./channelUpdate\";\n/**\n * Batcher for record any `useEffectState` need update.\n */\nexport function useBatcher() {\n  // Updater Trigger\n  var updateFuncRef = React.useRef(null);\n\n  // Notify update\n  var notifyEffectUpdate = function notifyEffectUpdate(callback) {\n    if (!updateFuncRef.current) {\n      updateFuncRef.current = [];\n      channelUpdate(function () {\n        unstable_batchedUpdates(function () {\n          updateFuncRef.current.forEach(function (fn) {\n            fn();\n          });\n          updateFuncRef.current = null;\n        });\n      });\n    }\n    updateFuncRef.current.push(callback);\n  };\n  return notifyEffectUpdate;\n}\n\n/**\n * Trigger state update by `useLayoutEffect` to save perf.\n */\nexport default function useEffectState(notifyEffectUpdate, defaultValue) {\n  // Value\n  var _React$useState = React.useState(defaultValue),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    stateValue = _React$useState2[0],\n    setStateValue = _React$useState2[1];\n\n  // Set State\n  var setEffectVal = useEvent(function (nextValue) {\n    notifyEffectUpdate(function () {\n      setStateValue(nextValue);\n    });\n  });\n  return [stateValue, setEffectVal];\n}","import React from 'react';\nexport var OverflowContext = /*#__PURE__*/React.createContext(null);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"component\"],\n  _excluded2 = [\"className\"],\n  _excluded3 = [\"className\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport Item from \"./Item\";\nimport { OverflowContext } from \"./context\";\nvar InternalRawItem = function InternalRawItem(props, ref) {\n  var context = React.useContext(OverflowContext);\n\n  // Render directly when context not provided\n  if (!context) {\n    var _props$component = props.component,\n      Component = _props$component === void 0 ? 'div' : _props$component,\n      _restProps = _objectWithoutProperties(props, _excluded);\n    return /*#__PURE__*/React.createElement(Component, _extends({}, _restProps, {\n      ref: ref\n    }));\n  }\n  var contextClassName = context.className,\n    restContext = _objectWithoutProperties(context, _excluded2);\n  var className = props.className,\n    restProps = _objectWithoutProperties(props, _excluded3);\n\n  // Do not pass context to sub item to avoid multiple measure\n  return /*#__PURE__*/React.createElement(OverflowContext.Provider, {\n    value: null\n  }, /*#__PURE__*/React.createElement(Item, _extends({\n    ref: ref,\n    className: classNames(contextClassName, className)\n  }, restContext, restProps)));\n};\nvar RawItem = /*#__PURE__*/React.forwardRef(InternalRawItem);\nRawItem.displayName = 'RawItem';\nexport default RawItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"data\", \"renderItem\", \"renderRawItem\", \"itemKey\", \"itemWidth\", \"ssr\", \"style\", \"className\", \"maxCount\", \"renderRest\", \"renderRawRest\", \"suffix\", \"component\", \"itemComponent\", \"onVisibleChange\"];\nimport * as React from 'react';\nimport { useState, useMemo, useCallback } from 'react';\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport Item from \"./Item\";\nimport useEffectState, { useBatcher } from \"./hooks/useEffectState\";\nimport RawItem from \"./RawItem\";\nimport { OverflowContext } from \"./context\";\nvar RESPONSIVE = 'responsive';\nvar INVALIDATE = 'invalidate';\nexport { OverflowContext } from \"./context\";\nfunction defaultRenderRest(omittedItems) {\n  return \"+ \".concat(omittedItems.length, \" ...\");\n}\nfunction Overflow(props, ref) {\n  var _props$prefixCls = props.prefixCls,\n    prefixCls = _props$prefixCls === void 0 ? 'rc-overflow' : _props$prefixCls,\n    _props$data = props.data,\n    data = _props$data === void 0 ? [] : _props$data,\n    renderItem = props.renderItem,\n    renderRawItem = props.renderRawItem,\n    itemKey = props.itemKey,\n    _props$itemWidth = props.itemWidth,\n    itemWidth = _props$itemWidth === void 0 ? 10 : _props$itemWidth,\n    ssr = props.ssr,\n    style = props.style,\n    className = props.className,\n    maxCount = props.maxCount,\n    renderRest = props.renderRest,\n    renderRawRest = props.renderRawRest,\n    suffix = props.suffix,\n    _props$component = props.component,\n    Component = _props$component === void 0 ? 'div' : _props$component,\n    itemComponent = props.itemComponent,\n    onVisibleChange = props.onVisibleChange,\n    restProps = _objectWithoutProperties(props, _excluded);\n  var fullySSR = ssr === 'full';\n  var notifyEffectUpdate = useBatcher();\n  var _useEffectState = useEffectState(notifyEffectUpdate, null),\n    _useEffectState2 = _slicedToArray(_useEffectState, 2),\n    containerWidth = _useEffectState2[0],\n    setContainerWidth = _useEffectState2[1];\n  var mergedContainerWidth = containerWidth || 0;\n  var _useEffectState3 = useEffectState(notifyEffectUpdate, new Map()),\n    _useEffectState4 = _slicedToArray(_useEffectState3, 2),\n    itemWidths = _useEffectState4[0],\n    setItemWidths = _useEffectState4[1];\n  var _useEffectState5 = useEffectState(notifyEffectUpdate, 0),\n    _useEffectState6 = _slicedToArray(_useEffectState5, 2),\n    prevRestWidth = _useEffectState6[0],\n    setPrevRestWidth = _useEffectState6[1];\n  var _useEffectState7 = useEffectState(notifyEffectUpdate, 0),\n    _useEffectState8 = _slicedToArray(_useEffectState7, 2),\n    restWidth = _useEffectState8[0],\n    setRestWidth = _useEffectState8[1];\n  var _useEffectState9 = useEffectState(notifyEffectUpdate, 0),\n    _useEffectState10 = _slicedToArray(_useEffectState9, 2),\n    suffixWidth = _useEffectState10[0],\n    setSuffixWidth = _useEffectState10[1];\n  var _useState = useState(null),\n    _useState2 = _slicedToArray(_useState, 2),\n    suffixFixedStart = _useState2[0],\n    setSuffixFixedStart = _useState2[1];\n  var _useState3 = useState(null),\n    _useState4 = _slicedToArray(_useState3, 2),\n    displayCount = _useState4[0],\n    setDisplayCount = _useState4[1];\n  var mergedDisplayCount = React.useMemo(function () {\n    if (displayCount === null && fullySSR) {\n      return Number.MAX_SAFE_INTEGER;\n    }\n    return displayCount || 0;\n  }, [displayCount, containerWidth]);\n  var _useState5 = useState(false),\n    _useState6 = _slicedToArray(_useState5, 2),\n    restReady = _useState6[0],\n    setRestReady = _useState6[1];\n  var itemPrefixCls = \"\".concat(prefixCls, \"-item\");\n\n  // Always use the max width to avoid blink\n  var mergedRestWidth = Math.max(prevRestWidth, restWidth);\n\n  // ================================= Data =================================\n  var isResponsive = maxCount === RESPONSIVE;\n  var shouldResponsive = data.length && isResponsive;\n  var invalidate = maxCount === INVALIDATE;\n\n  /**\n   * When is `responsive`, we will always render rest node to get the real width of it for calculation\n   */\n  var showRest = shouldResponsive || typeof maxCount === 'number' && data.length > maxCount;\n  var mergedData = useMemo(function () {\n    var items = data;\n    if (shouldResponsive) {\n      if (containerWidth === null && fullySSR) {\n        items = data;\n      } else {\n        items = data.slice(0, Math.min(data.length, mergedContainerWidth / itemWidth));\n      }\n    } else if (typeof maxCount === 'number') {\n      items = data.slice(0, maxCount);\n    }\n    return items;\n  }, [data, itemWidth, containerWidth, maxCount, shouldResponsive]);\n  var omittedItems = useMemo(function () {\n    if (shouldResponsive) {\n      return data.slice(mergedDisplayCount + 1);\n    }\n    return data.slice(mergedData.length);\n  }, [data, mergedData, shouldResponsive, mergedDisplayCount]);\n\n  // ================================= Item =================================\n  var getKey = useCallback(function (item, index) {\n    var _ref;\n    if (typeof itemKey === 'function') {\n      return itemKey(item);\n    }\n    return (_ref = itemKey && (item === null || item === void 0 ? void 0 : item[itemKey])) !== null && _ref !== void 0 ? _ref : index;\n  }, [itemKey]);\n  var mergedRenderItem = useCallback(renderItem || function (item) {\n    return item;\n  }, [renderItem]);\n  function updateDisplayCount(count, suffixFixedStartVal, notReady) {\n    // React 18 will sync render even when the value is same in some case.\n    // We take `mergedData` as deps which may cause dead loop if it's dynamic generate.\n    // ref: https://github.com/ant-design/ant-design/issues/36559\n    if (displayCount === count && (suffixFixedStartVal === undefined || suffixFixedStartVal === suffixFixedStart)) {\n      return;\n    }\n    setDisplayCount(count);\n    if (!notReady) {\n      setRestReady(count < data.length - 1);\n      onVisibleChange === null || onVisibleChange === void 0 || onVisibleChange(count);\n    }\n    if (suffixFixedStartVal !== undefined) {\n      setSuffixFixedStart(suffixFixedStartVal);\n    }\n  }\n\n  // ================================= Size =================================\n  function onOverflowResize(_, element) {\n    setContainerWidth(element.clientWidth);\n  }\n  function registerSize(key, width) {\n    setItemWidths(function (origin) {\n      var clone = new Map(origin);\n      if (width === null) {\n        clone.delete(key);\n      } else {\n        clone.set(key, width);\n      }\n      return clone;\n    });\n  }\n  function registerOverflowSize(_, width) {\n    setRestWidth(width);\n    setPrevRestWidth(restWidth);\n  }\n  function registerSuffixSize(_, width) {\n    setSuffixWidth(width);\n  }\n\n  // ================================ Effect ================================\n  function getItemWidth(index) {\n    return itemWidths.get(getKey(mergedData[index], index));\n  }\n  useLayoutEffect(function () {\n    if (mergedContainerWidth && typeof mergedRestWidth === 'number' && mergedData) {\n      var totalWidth = suffixWidth;\n      var len = mergedData.length;\n      var lastIndex = len - 1;\n\n      // When data count change to 0, reset this since not loop will reach\n      if (!len) {\n        updateDisplayCount(0, null);\n        return;\n      }\n      for (var i = 0; i < len; i += 1) {\n        var currentItemWidth = getItemWidth(i);\n\n        // Fully will always render\n        if (fullySSR) {\n          currentItemWidth = currentItemWidth || 0;\n        }\n\n        // Break since data not ready\n        if (currentItemWidth === undefined) {\n          updateDisplayCount(i - 1, undefined, true);\n          break;\n        }\n\n        // Find best match\n        totalWidth += currentItemWidth;\n        if (\n        // Only one means `totalWidth` is the final width\n        lastIndex === 0 && totalWidth <= mergedContainerWidth ||\n        // Last two width will be the final width\n        i === lastIndex - 1 && totalWidth + getItemWidth(lastIndex) <= mergedContainerWidth) {\n          // Additional check if match the end\n          updateDisplayCount(lastIndex, null);\n          break;\n        } else if (totalWidth + mergedRestWidth > mergedContainerWidth) {\n          // Can not hold all the content to show rest\n          updateDisplayCount(i - 1, totalWidth - currentItemWidth - suffixWidth + restWidth);\n          break;\n        }\n      }\n      if (suffix && getItemWidth(0) + suffixWidth > mergedContainerWidth) {\n        setSuffixFixedStart(null);\n      }\n    }\n  }, [mergedContainerWidth, itemWidths, restWidth, suffixWidth, getKey, mergedData]);\n\n  // ================================ Render ================================\n  var displayRest = restReady && !!omittedItems.length;\n  var suffixStyle = {};\n  if (suffixFixedStart !== null && shouldResponsive) {\n    suffixStyle = {\n      position: 'absolute',\n      left: suffixFixedStart,\n      top: 0\n    };\n  }\n  var itemSharedProps = {\n    prefixCls: itemPrefixCls,\n    responsive: shouldResponsive,\n    component: itemComponent,\n    invalidate: invalidate\n  };\n\n  // >>>>> Choice render fun by `renderRawItem`\n  var internalRenderItemNode = renderRawItem ? function (item, index) {\n    var key = getKey(item, index);\n    return /*#__PURE__*/React.createElement(OverflowContext.Provider, {\n      key: key,\n      value: _objectSpread(_objectSpread({}, itemSharedProps), {}, {\n        order: index,\n        item: item,\n        itemKey: key,\n        registerSize: registerSize,\n        display: index <= mergedDisplayCount\n      })\n    }, renderRawItem(item, index));\n  } : function (item, index) {\n    var key = getKey(item, index);\n    return /*#__PURE__*/React.createElement(Item, _extends({}, itemSharedProps, {\n      order: index,\n      key: key,\n      item: item,\n      renderItem: mergedRenderItem,\n      itemKey: key,\n      registerSize: registerSize,\n      display: index <= mergedDisplayCount\n    }));\n  };\n\n  // >>>>> Rest node\n  var restContextProps = {\n    order: displayRest ? mergedDisplayCount : Number.MAX_SAFE_INTEGER,\n    className: \"\".concat(itemPrefixCls, \"-rest\"),\n    registerSize: registerOverflowSize,\n    display: displayRest\n  };\n  var mergedRenderRest = renderRest || defaultRenderRest;\n  var restNode = renderRawRest ? /*#__PURE__*/React.createElement(OverflowContext.Provider, {\n    value: _objectSpread(_objectSpread({}, itemSharedProps), restContextProps)\n  }, renderRawRest(omittedItems)) : /*#__PURE__*/React.createElement(Item, _extends({}, itemSharedProps, restContextProps), typeof mergedRenderRest === 'function' ? mergedRenderRest(omittedItems) : mergedRenderRest);\n  var overflowNode = /*#__PURE__*/React.createElement(Component, _extends({\n    className: classNames(!invalidate && prefixCls, className),\n    style: style,\n    ref: ref\n  }, restProps), mergedData.map(internalRenderItemNode), showRest ? restNode : null, suffix && /*#__PURE__*/React.createElement(Item, _extends({}, itemSharedProps, {\n    responsive: isResponsive,\n    responsiveDisabled: !shouldResponsive,\n    order: mergedDisplayCount,\n    className: \"\".concat(itemPrefixCls, \"-suffix\"),\n    registerSize: registerSuffixSize,\n    display: true,\n    style: suffixStyle\n  }), suffix));\n  return isResponsive ? /*#__PURE__*/React.createElement(ResizeObserver, {\n    onResize: onOverflowResize,\n    disabled: !shouldResponsive\n  }, overflowNode) : overflowNode;\n}\nvar ForwardOverflow = /*#__PURE__*/React.forwardRef(Overflow);\nForwardOverflow.displayName = 'Overflow';\nForwardOverflow.Item = RawItem;\nForwardOverflow.RESPONSIVE = RESPONSIVE;\nForwardOverflow.INVALIDATE = INVALIDATE;\n\n// Convert to generic type\nexport default ForwardOverflow;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nfunction composeProps(originProps, patchProps, isAll) {\n  var composedProps = _objectSpread(_objectSpread({}, originProps), isAll ? patchProps : {});\n  Object.keys(patchProps).forEach(function (key) {\n    var func = patchProps[key];\n    if (typeof func === 'function') {\n      composedProps[key] = function () {\n        var _originProps$key;\n        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n          args[_key] = arguments[_key];\n        }\n        func.apply(void 0, args);\n        return (_originProps$key = originProps[key]) === null || _originProps$key === void 0 ? void 0 : _originProps$key.call.apply(_originProps$key, [originProps].concat(args));\n      };\n    }\n  });\n  return composedProps;\n}\nexport default composeProps;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"id\", \"inputElement\", \"autoFocus\", \"autoComplete\", \"editable\", \"activeDescendantId\", \"value\", \"open\", \"attrs\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { composeRef } from \"rc-util/es/ref\";\nimport { warning } from \"rc-util/es/warning\";\nimport composeProps from \"rc-util/es/composeProps\";\nvar Input = function Input(props, ref) {\n  var prefixCls = props.prefixCls,\n    id = props.id,\n    inputElement = props.inputElement,\n    autoFocus = props.autoFocus,\n    autoComplete = props.autoComplete,\n    editable = props.editable,\n    activeDescendantId = props.activeDescendantId,\n    value = props.value,\n    open = props.open,\n    attrs = props.attrs,\n    restProps = _objectWithoutProperties(props, _excluded);\n  var inputNode = inputElement || /*#__PURE__*/React.createElement(\"input\", null);\n  var _inputNode = inputNode,\n    originRef = _inputNode.ref,\n    originProps = _inputNode.props;\n  warning(!('maxLength' in inputNode.props), \"Passing 'maxLength' to input element directly may not work because input in BaseSelect is controlled.\");\n  inputNode = /*#__PURE__*/React.cloneElement(inputNode, _objectSpread(_objectSpread(_objectSpread({\n    type: 'search'\n  }, composeProps(restProps, originProps, true)), {}, {\n    // Override over origin props\n    id: id,\n    ref: composeRef(ref, originRef),\n    autoComplete: autoComplete || 'off',\n    autoFocus: autoFocus,\n    className: classNames(\"\".concat(prefixCls, \"-selection-search-input\"), originProps === null || originProps === void 0 ? void 0 : originProps.className),\n    role: 'combobox',\n    'aria-expanded': open || false,\n    'aria-haspopup': 'listbox',\n    'aria-owns': \"\".concat(id, \"_list\"),\n    'aria-autocomplete': 'list',\n    'aria-controls': \"\".concat(id, \"_list\"),\n    'aria-activedescendant': open ? activeDescendantId : undefined\n  }, attrs), {}, {\n    value: editable ? value : '',\n    readOnly: !editable,\n    unselectable: !editable ? 'on' : null,\n    style: _objectSpread(_objectSpread({}, originProps.style), {}, {\n      opacity: editable ? null : 0\n    })\n  }));\n  return inputNode;\n};\nvar RefInput = /*#__PURE__*/React.forwardRef(Input);\nif (process.env.NODE_ENV !== 'production') {\n  RefInput.displayName = 'Input';\n}\nexport default RefInput;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nexport function toArray(value) {\n  if (Array.isArray(value)) {\n    return value;\n  }\n  return value !== undefined ? [value] : [];\n}\nexport var isClient = typeof window !== 'undefined' && window.document && window.document.documentElement;\n\n/** Is client side and not jsdom */\nexport var isBrowserClient = process.env.NODE_ENV !== 'test' && isClient;\nexport function hasValue(value) {\n  return value !== undefined && value !== null;\n}\n\n/** combo mode no value judgment function */\nexport function isComboNoValue(value) {\n  return !value && value !== 0;\n}\nfunction isTitleType(title) {\n  return ['string', 'number'].includes(_typeof(title));\n}\nexport function getTitle(item) {\n  var title = undefined;\n  if (item) {\n    if (isTitleType(item.title)) {\n      title = item.title.toString();\n    } else if (isTitleType(item.label)) {\n      title = item.label.toString();\n    }\n  }\n  return title;\n}","/* eslint-disable react-hooks/rules-of-hooks */\nimport * as React from 'react';\nimport { isBrowserClient } from \"../utils/commonUtil\";\n\n/**\n * Wrap `React.useLayoutEffect` which will not throw warning message in test env\n */\nexport default function useLayoutEffect(effect, deps) {\n  // Never happen in test env\n  if (isBrowserClient) {\n    /* istanbul ignore next */\n    React.useLayoutEffect(effect, deps);\n  } else {\n    React.useEffect(effect, deps);\n  }\n}\n/* eslint-enable */","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useState } from 'react';\nimport classNames from 'classnames';\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport Overflow from 'rc-overflow';\nimport TransBtn from \"../TransBtn\";\nimport Input from \"./Input\";\nimport useLayoutEffect from \"../hooks/useLayoutEffect\";\nimport { getTitle } from \"../utils/commonUtil\";\nfunction itemKey(value) {\n  var _value$key;\n  return (_value$key = value.key) !== null && _value$key !== void 0 ? _value$key : value.value;\n}\nvar onPreventMouseDown = function onPreventMouseDown(event) {\n  event.preventDefault();\n  event.stopPropagation();\n};\nvar SelectSelector = function SelectSelector(props) {\n  var id = props.id,\n    prefixCls = props.prefixCls,\n    values = props.values,\n    open = props.open,\n    searchValue = props.searchValue,\n    autoClearSearchValue = props.autoClearSearchValue,\n    inputRef = props.inputRef,\n    placeholder = props.placeholder,\n    disabled = props.disabled,\n    mode = props.mode,\n    showSearch = props.showSearch,\n    autoFocus = props.autoFocus,\n    autoComplete = props.autoComplete,\n    activeDescendantId = props.activeDescendantId,\n    tabIndex = props.tabIndex,\n    removeIcon = props.removeIcon,\n    maxTagCount = props.maxTagCount,\n    maxTagTextLength = props.maxTagTextLength,\n    _props$maxTagPlacehol = props.maxTagPlaceholder,\n    maxTagPlaceholder = _props$maxTagPlacehol === void 0 ? function (omittedValues) {\n      return \"+ \".concat(omittedValues.length, \" ...\");\n    } : _props$maxTagPlacehol,\n    tagRender = props.tagRender,\n    onToggleOpen = props.onToggleOpen,\n    onRemove = props.onRemove,\n    onInputChange = props.onInputChange,\n    onInputPaste = props.onInputPaste,\n    onInputKeyDown = props.onInputKeyDown,\n    onInputMouseDown = props.onInputMouseDown,\n    onInputCompositionStart = props.onInputCompositionStart,\n    onInputCompositionEnd = props.onInputCompositionEnd,\n    onInputBlur = props.onInputBlur;\n  var measureRef = React.useRef(null);\n  var _useState = useState(0),\n    _useState2 = _slicedToArray(_useState, 2),\n    inputWidth = _useState2[0],\n    setInputWidth = _useState2[1];\n  var _useState3 = useState(false),\n    _useState4 = _slicedToArray(_useState3, 2),\n    focused = _useState4[0],\n    setFocused = _useState4[1];\n  var selectionPrefixCls = \"\".concat(prefixCls, \"-selection\");\n\n  // ===================== Search ======================\n  var inputValue = open || mode === 'multiple' && autoClearSearchValue === false || mode === 'tags' ? searchValue : '';\n  var inputEditable = mode === 'tags' || mode === 'multiple' && autoClearSearchValue === false || showSearch && (open || focused);\n\n  // We measure width and set to the input immediately\n  useLayoutEffect(function () {\n    setInputWidth(measureRef.current.scrollWidth);\n  }, [inputValue]);\n\n  // ===================== Render ======================\n  // >>> Render Selector Node. Includes Item & Rest\n  var defaultRenderSelector = function defaultRenderSelector(item, content, itemDisabled, closable, onClose) {\n    return /*#__PURE__*/React.createElement(\"span\", {\n      title: getTitle(item),\n      className: classNames(\"\".concat(selectionPrefixCls, \"-item\"), _defineProperty({}, \"\".concat(selectionPrefixCls, \"-item-disabled\"), itemDisabled))\n    }, /*#__PURE__*/React.createElement(\"span\", {\n      className: \"\".concat(selectionPrefixCls, \"-item-content\")\n    }, content), closable && /*#__PURE__*/React.createElement(TransBtn, {\n      className: \"\".concat(selectionPrefixCls, \"-item-remove\"),\n      onMouseDown: onPreventMouseDown,\n      onClick: onClose,\n      customizeIcon: removeIcon\n    }, \"\\xD7\"));\n  };\n  var customizeRenderSelector = function customizeRenderSelector(value, content, itemDisabled, closable, onClose, isMaxTag) {\n    var onMouseDown = function onMouseDown(e) {\n      onPreventMouseDown(e);\n      onToggleOpen(!open);\n    };\n    return /*#__PURE__*/React.createElement(\"span\", {\n      onMouseDown: onMouseDown\n    }, tagRender({\n      label: content,\n      value: value,\n      disabled: itemDisabled,\n      closable: closable,\n      onClose: onClose,\n      isMaxTag: !!isMaxTag\n    }));\n  };\n  var renderItem = function renderItem(valueItem) {\n    var itemDisabled = valueItem.disabled,\n      label = valueItem.label,\n      value = valueItem.value;\n    var closable = !disabled && !itemDisabled;\n    var displayLabel = label;\n    if (typeof maxTagTextLength === 'number') {\n      if (typeof label === 'string' || typeof label === 'number') {\n        var strLabel = String(displayLabel);\n        if (strLabel.length > maxTagTextLength) {\n          displayLabel = \"\".concat(strLabel.slice(0, maxTagTextLength), \"...\");\n        }\n      }\n    }\n    var onClose = function onClose(event) {\n      if (event) {\n        event.stopPropagation();\n      }\n      onRemove(valueItem);\n    };\n    return typeof tagRender === 'function' ? customizeRenderSelector(value, displayLabel, itemDisabled, closable, onClose) : defaultRenderSelector(valueItem, displayLabel, itemDisabled, closable, onClose);\n  };\n  var renderRest = function renderRest(omittedValues) {\n    // https://github.com/ant-design/ant-design/issues/48930\n    if (!values.length) {\n      return null;\n    }\n    var content = typeof maxTagPlaceholder === 'function' ? maxTagPlaceholder(omittedValues) : maxTagPlaceholder;\n    return typeof tagRender === 'function' ? customizeRenderSelector(undefined, content, false, false, undefined, true) : defaultRenderSelector({\n      title: content\n    }, content, false);\n  };\n\n  // >>> Input Node\n  var inputNode = /*#__PURE__*/React.createElement(\"div\", {\n    className: \"\".concat(selectionPrefixCls, \"-search\"),\n    style: {\n      width: inputWidth\n    },\n    onFocus: function onFocus() {\n      setFocused(true);\n    },\n    onBlur: function onBlur() {\n      setFocused(false);\n    }\n  }, /*#__PURE__*/React.createElement(Input, {\n    ref: inputRef,\n    open: open,\n    prefixCls: prefixCls,\n    id: id,\n    inputElement: null,\n    disabled: disabled,\n    autoFocus: autoFocus,\n    autoComplete: autoComplete,\n    editable: inputEditable,\n    activeDescendantId: activeDescendantId,\n    value: inputValue,\n    onKeyDown: onInputKeyDown,\n    onMouseDown: onInputMouseDown,\n    onChange: onInputChange,\n    onPaste: onInputPaste,\n    onCompositionStart: onInputCompositionStart,\n    onCompositionEnd: onInputCompositionEnd,\n    onBlur: onInputBlur,\n    tabIndex: tabIndex,\n    attrs: pickAttrs(props, true)\n  }), /*#__PURE__*/React.createElement(\"span\", {\n    ref: measureRef,\n    className: \"\".concat(selectionPrefixCls, \"-search-mirror\"),\n    \"aria-hidden\": true\n  }, inputValue, \"\\xA0\"));\n\n  // >>> Selections\n  var selectionNode = /*#__PURE__*/React.createElement(Overflow, {\n    prefixCls: \"\".concat(selectionPrefixCls, \"-overflow\"),\n    data: values,\n    renderItem: renderItem,\n    renderRest: renderRest,\n    suffix: inputNode,\n    itemKey: itemKey,\n    maxCount: maxTagCount\n  });\n  return /*#__PURE__*/React.createElement(\"span\", {\n    className: \"\".concat(selectionPrefixCls, \"-wrap\")\n  }, selectionNode, !values.length && !inputValue && /*#__PURE__*/React.createElement(\"span\", {\n    className: \"\".concat(selectionPrefixCls, \"-placeholder\")\n  }, placeholder));\n};\nexport default SelectSelector;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport Input from \"./Input\";\nimport { getTitle } from \"../utils/commonUtil\";\nvar SingleSelector = function SingleSelector(props) {\n  var inputElement = props.inputElement,\n    prefixCls = props.prefixCls,\n    id = props.id,\n    inputRef = props.inputRef,\n    disabled = props.disabled,\n    autoFocus = props.autoFocus,\n    autoComplete = props.autoComplete,\n    activeDescendantId = props.activeDescendantId,\n    mode = props.mode,\n    open = props.open,\n    values = props.values,\n    placeholder = props.placeholder,\n    tabIndex = props.tabIndex,\n    showSearch = props.showSearch,\n    searchValue = props.searchValue,\n    activeValue = props.activeValue,\n    maxLength = props.maxLength,\n    onInputKeyDown = props.onInputKeyDown,\n    onInputMouseDown = props.onInputMouseDown,\n    onInputChange = props.onInputChange,\n    onInputPaste = props.onInputPaste,\n    onInputCompositionStart = props.onInputCompositionStart,\n    onInputCompositionEnd = props.onInputCompositionEnd,\n    onInputBlur = props.onInputBlur,\n    title = props.title;\n  var _React$useState = React.useState(false),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    inputChanged = _React$useState2[0],\n    setInputChanged = _React$useState2[1];\n  var combobox = mode === 'combobox';\n  var inputEditable = combobox || showSearch;\n  var item = values[0];\n  var inputValue = searchValue || '';\n  if (combobox && activeValue && !inputChanged) {\n    inputValue = activeValue;\n  }\n  React.useEffect(function () {\n    if (combobox) {\n      setInputChanged(false);\n    }\n  }, [combobox, activeValue]);\n\n  // Not show text when closed expect combobox mode\n  var hasTextInput = mode !== 'combobox' && !open && !showSearch ? false : !!inputValue;\n\n  // Get title of selection item\n  var selectionTitle = title === undefined ? getTitle(item) : title;\n  var placeholderNode = React.useMemo(function () {\n    if (item) {\n      return null;\n    }\n    return /*#__PURE__*/React.createElement(\"span\", {\n      className: \"\".concat(prefixCls, \"-selection-placeholder\"),\n      style: hasTextInput ? {\n        visibility: 'hidden'\n      } : undefined\n    }, placeholder);\n  }, [item, hasTextInput, placeholder, prefixCls]);\n  return /*#__PURE__*/React.createElement(\"span\", {\n    className: \"\".concat(prefixCls, \"-selection-wrap\")\n  }, /*#__PURE__*/React.createElement(\"span\", {\n    className: \"\".concat(prefixCls, \"-selection-search\")\n  }, /*#__PURE__*/React.createElement(Input, {\n    ref: inputRef,\n    prefixCls: prefixCls,\n    id: id,\n    open: open,\n    inputElement: inputElement,\n    disabled: disabled,\n    autoFocus: autoFocus,\n    autoComplete: autoComplete,\n    editable: inputEditable,\n    activeDescendantId: activeDescendantId,\n    value: inputValue,\n    onKeyDown: onInputKeyDown,\n    onMouseDown: onInputMouseDown,\n    onChange: function onChange(e) {\n      setInputChanged(true);\n      onInputChange(e);\n    },\n    onPaste: onInputPaste,\n    onCompositionStart: onInputCompositionStart,\n    onCompositionEnd: onInputCompositionEnd,\n    onBlur: onInputBlur,\n    tabIndex: tabIndex,\n    attrs: pickAttrs(props, true),\n    maxLength: combobox ? maxLength : undefined\n  })), !combobox && item ? /*#__PURE__*/React.createElement(\"span\", {\n    className: \"\".concat(prefixCls, \"-selection-item\"),\n    title: selectionTitle\n    // 当 Select 已经选中选项时，还需 selection 隐藏但留在原地占位\n    // https://github.com/ant-design/ant-design/issues/27688\n    // https://github.com/ant-design/ant-design/issues/41530\n    ,\n    style: hasTextInput ? {\n      visibility: 'hidden'\n    } : undefined\n  }, item.label) : null, placeholderNode);\n};\nexport default SingleSelector;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\n/**\n * Cursor rule:\n * 1. Only `showSearch` enabled\n * 2. Only `open` is `true`\n * 3. When typing, set `open` to `true` which hit rule of 2\n *\n * Accessibility:\n * - https://www.w3.org/TR/wai-aria-practices/examples/combobox/aria1.1pattern/listbox-combo.html\n */\n\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport * as React from 'react';\nimport { useRef } from 'react';\nimport useLock from \"../hooks/useLock\";\nimport { isValidateOpenKey } from \"../utils/keyUtil\";\nimport MultipleSelector from \"./MultipleSelector\";\nimport SingleSelector from \"./SingleSelector\";\nvar Selector = function Selector(props, ref) {\n  var inputRef = useRef(null);\n  var compositionStatusRef = useRef(false);\n  var prefixCls = props.prefixCls,\n    open = props.open,\n    mode = props.mode,\n    showSearch = props.showSearch,\n    tokenWithEnter = props.tokenWithEnter,\n    disabled = props.disabled,\n    prefix = props.prefix,\n    autoClearSearchValue = props.autoClearSearchValue,\n    onSearch = props.onSearch,\n    onSearchSubmit = props.onSearchSubmit,\n    onToggleOpen = props.onToggleOpen,\n    onInputKeyDown = props.onInputKeyDown,\n    onInputBlur = props.onInputBlur,\n    domRef = props.domRef;\n\n  // ======================= Ref =======================\n  React.useImperativeHandle(ref, function () {\n    return {\n      focus: function focus(options) {\n        inputRef.current.focus(options);\n      },\n      blur: function blur() {\n        inputRef.current.blur();\n      }\n    };\n  });\n\n  // ====================== Input ======================\n  var _useLock = useLock(0),\n    _useLock2 = _slicedToArray(_useLock, 2),\n    getInputMouseDown = _useLock2[0],\n    setInputMouseDown = _useLock2[1];\n  var onInternalInputKeyDown = function onInternalInputKeyDown(event) {\n    var which = event.which;\n\n    // Compatible with multiple lines in TextArea\n    var isTextAreaElement = inputRef.current instanceof HTMLTextAreaElement;\n    if (!isTextAreaElement && open && (which === KeyCode.UP || which === KeyCode.DOWN)) {\n      event.preventDefault();\n    }\n    if (onInputKeyDown) {\n      onInputKeyDown(event);\n    }\n    if (which === KeyCode.ENTER && mode === 'tags' && !compositionStatusRef.current && !open) {\n      // When menu isn't open, OptionList won't trigger a value change\n      // So when enter is pressed, the tag's input value should be emitted here to let selector know\n      onSearchSubmit === null || onSearchSubmit === void 0 || onSearchSubmit(event.target.value);\n    }\n    // Move within the text box\n    if (isTextAreaElement && !open && ~[KeyCode.UP, KeyCode.DOWN, KeyCode.LEFT, KeyCode.RIGHT].indexOf(which)) {\n      return;\n    }\n    if (isValidateOpenKey(which)) {\n      onToggleOpen(true);\n    }\n  };\n\n  /**\n   * We can not use `findDOMNode` sine it will get warning,\n   * have to use timer to check if is input element.\n   */\n  var onInternalInputMouseDown = function onInternalInputMouseDown() {\n    setInputMouseDown(true);\n  };\n\n  // When paste come, ignore next onChange\n  var pastedTextRef = useRef(null);\n  var triggerOnSearch = function triggerOnSearch(value) {\n    if (onSearch(value, true, compositionStatusRef.current) !== false) {\n      onToggleOpen(true);\n    }\n  };\n  var onInputCompositionStart = function onInputCompositionStart() {\n    compositionStatusRef.current = true;\n  };\n  var onInputCompositionEnd = function onInputCompositionEnd(e) {\n    compositionStatusRef.current = false;\n\n    // Trigger search again to support `tokenSeparators` with typewriting\n    if (mode !== 'combobox') {\n      triggerOnSearch(e.target.value);\n    }\n  };\n  var onInputChange = function onInputChange(event) {\n    var value = event.target.value;\n\n    // Pasted text should replace back to origin content\n    if (tokenWithEnter && pastedTextRef.current && /[\\r\\n]/.test(pastedTextRef.current)) {\n      // CRLF will be treated as a single space for input element\n      var replacedText = pastedTextRef.current.replace(/[\\r\\n]+$/, '').replace(/\\r\\n/g, ' ').replace(/[\\r\\n]/g, ' ');\n      value = value.replace(replacedText, pastedTextRef.current);\n    }\n    pastedTextRef.current = null;\n    triggerOnSearch(value);\n  };\n  var onInputPaste = function onInputPaste(e) {\n    var clipboardData = e.clipboardData;\n    var value = clipboardData === null || clipboardData === void 0 ? void 0 : clipboardData.getData('text');\n    pastedTextRef.current = value || '';\n  };\n  var onClick = function onClick(_ref) {\n    var target = _ref.target;\n    if (target !== inputRef.current) {\n      // Should focus input if click the selector\n      var isIE = document.body.style.msTouchAction !== undefined;\n      if (isIE) {\n        setTimeout(function () {\n          inputRef.current.focus();\n        });\n      } else {\n        inputRef.current.focus();\n      }\n    }\n  };\n  var onMouseDown = function onMouseDown(event) {\n    var inputMouseDown = getInputMouseDown();\n\n    // when mode is combobox and it is disabled, don't prevent default behavior\n    // https://github.com/ant-design/ant-design/issues/37320\n    // https://github.com/ant-design/ant-design/issues/48281\n    if (event.target !== inputRef.current && !inputMouseDown && !(mode === 'combobox' && disabled)) {\n      event.preventDefault();\n    }\n    if (mode !== 'combobox' && (!showSearch || !inputMouseDown) || !open) {\n      if (open && autoClearSearchValue !== false) {\n        onSearch('', true, false);\n      }\n      onToggleOpen();\n    }\n  };\n\n  // ================= Inner Selector ==================\n  var sharedProps = {\n    inputRef: inputRef,\n    onInputKeyDown: onInternalInputKeyDown,\n    onInputMouseDown: onInternalInputMouseDown,\n    onInputChange: onInputChange,\n    onInputPaste: onInputPaste,\n    onInputCompositionStart: onInputCompositionStart,\n    onInputCompositionEnd: onInputCompositionEnd,\n    onInputBlur: onInputBlur\n  };\n  var selectNode = mode === 'multiple' || mode === 'tags' ? /*#__PURE__*/React.createElement(MultipleSelector, _extends({}, props, sharedProps)) : /*#__PURE__*/React.createElement(SingleSelector, _extends({}, props, sharedProps));\n  return /*#__PURE__*/React.createElement(\"div\", {\n    ref: domRef,\n    className: \"\".concat(prefixCls, \"-selector\"),\n    onClick: onClick,\n    onMouseDown: onMouseDown\n  }, prefix && /*#__PURE__*/React.createElement(\"div\", {\n    className: \"\".concat(prefixCls, \"-prefix\")\n  }, prefix), selectNode);\n};\nvar ForwardSelector = /*#__PURE__*/React.forwardRef(Selector);\nif (process.env.NODE_ENV !== 'production') {\n  ForwardSelector.displayName = 'Selector';\n}\nexport default ForwardSelector;","import classNames from 'classnames';\nimport * as React from 'react';\nexport default function Arrow(props) {\n  var prefixCls = props.prefixCls,\n    align = props.align,\n    arrow = props.arrow,\n    arrowPos = props.arrowPos;\n  var _ref = arrow || {},\n    className = _ref.className,\n    content = _ref.content;\n  var _arrowPos$x = arrowPos.x,\n    x = _arrowPos$x === void 0 ? 0 : _arrowPos$x,\n    _arrowPos$y = arrowPos.y,\n    y = _arrowPos$y === void 0 ? 0 : _arrowPos$y;\n  var arrowRef = React.useRef();\n\n  // Skip if no align\n  if (!align || !align.points) {\n    return null;\n  }\n  var alignStyle = {\n    position: 'absolute'\n  };\n\n  // Skip if no need to align\n  if (align.autoArrow !== false) {\n    var popupPoints = align.points[0];\n    var targetPoints = align.points[1];\n    var popupTB = popupPoints[0];\n    var popupLR = popupPoints[1];\n    var targetTB = targetPoints[0];\n    var targetLR = targetPoints[1];\n\n    // Top & Bottom\n    if (popupTB === targetTB || !['t', 'b'].includes(popupTB)) {\n      alignStyle.top = y;\n    } else if (popupTB === 't') {\n      alignStyle.top = 0;\n    } else {\n      alignStyle.bottom = 0;\n    }\n\n    // Left & Right\n    if (popupLR === targetLR || !['l', 'r'].includes(popupLR)) {\n      alignStyle.left = x;\n    } else if (popupLR === 'l') {\n      alignStyle.left = 0;\n    } else {\n      alignStyle.right = 0;\n    }\n  }\n  return /*#__PURE__*/React.createElement(\"div\", {\n    ref: arrowRef,\n    className: classNames(\"\".concat(prefixCls, \"-arrow\"), className),\n    style: alignStyle\n  }, content);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport * as React from 'react';\nexport default function Mask(props) {\n  var prefixCls = props.prefixCls,\n    open = props.open,\n    zIndex = props.zIndex,\n    mask = props.mask,\n    motion = props.motion;\n  if (!mask) {\n    return null;\n  }\n  return /*#__PURE__*/React.createElement(CSSMotion, _extends({}, motion, {\n    motionAppear: true,\n    visible: open,\n    removeOnLeave: true\n  }), function (_ref) {\n    var className = _ref.className;\n    return /*#__PURE__*/React.createElement(\"div\", {\n      style: {\n        zIndex: zIndex\n      },\n      className: classNames(\"\".concat(prefixCls, \"-mask\"), className)\n    });\n  });\n}","import * as React from 'react';\nvar PopupContent = /*#__PURE__*/React.memo(function (_ref) {\n  var children = _ref.children;\n  return children;\n}, function (_, next) {\n  return next.cache;\n});\nif (process.env.NODE_ENV !== 'production') {\n  PopupContent.displayName = 'PopupContent';\n}\nexport default PopupContent;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport ResizeObserver from 'rc-resize-observer';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport { composeRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport Arrow from \"./Arrow\";\nimport Mask from \"./Mask\";\nimport PopupContent from \"./PopupContent\";\nvar Popup = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var popup = props.popup,\n    className = props.className,\n    prefixCls = props.prefixCls,\n    style = props.style,\n    target = props.target,\n    _onVisibleChanged = props.onVisibleChanged,\n    open = props.open,\n    keepDom = props.keepDom,\n    fresh = props.fresh,\n    onClick = props.onClick,\n    mask = props.mask,\n    arrow = props.arrow,\n    arrowPos = props.arrowPos,\n    align = props.align,\n    motion = props.motion,\n    maskMotion = props.maskMotion,\n    forceRender = props.forceRender,\n    getPopupContainer = props.getPopupContainer,\n    autoDestroy = props.autoDestroy,\n    Portal = props.portal,\n    zIndex = props.zIndex,\n    onMouseEnter = props.onMouseEnter,\n    onMouseLeave = props.onMouseLeave,\n    onPointerEnter = props.onPointerEnter,\n    onPointerDownCapture = props.onPointerDownCapture,\n    ready = props.ready,\n    offsetX = props.offsetX,\n    offsetY = props.offsetY,\n    offsetR = props.offsetR,\n    offsetB = props.offsetB,\n    onAlign = props.onAlign,\n    onPrepare = props.onPrepare,\n    stretch = props.stretch,\n    targetWidth = props.targetWidth,\n    targetHeight = props.targetHeight;\n  var childNode = typeof popup === 'function' ? popup() : popup;\n\n  // We can not remove holder only when motion finished.\n  var isNodeVisible = open || keepDom;\n\n  // ======================= Container ========================\n  var getPopupContainerNeedParams = (getPopupContainer === null || getPopupContainer === void 0 ? void 0 : getPopupContainer.length) > 0;\n  var _React$useState = React.useState(!getPopupContainer || !getPopupContainerNeedParams),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    show = _React$useState2[0],\n    setShow = _React$useState2[1];\n\n  // Delay to show since `getPopupContainer` need target element\n  useLayoutEffect(function () {\n    if (!show && getPopupContainerNeedParams && target) {\n      setShow(true);\n    }\n  }, [show, getPopupContainerNeedParams, target]);\n\n  // ========================= Render =========================\n  if (!show) {\n    return null;\n  }\n\n  // >>>>> Offset\n  var AUTO = 'auto';\n  var offsetStyle = {\n    left: '-1000vw',\n    top: '-1000vh',\n    right: AUTO,\n    bottom: AUTO\n  };\n\n  // Set align style\n  if (ready || !open) {\n    var _experimental;\n    var points = align.points;\n    var dynamicInset = align.dynamicInset || ((_experimental = align._experimental) === null || _experimental === void 0 ? void 0 : _experimental.dynamicInset);\n    var alignRight = dynamicInset && points[0][1] === 'r';\n    var alignBottom = dynamicInset && points[0][0] === 'b';\n    if (alignRight) {\n      offsetStyle.right = offsetR;\n      offsetStyle.left = AUTO;\n    } else {\n      offsetStyle.left = offsetX;\n      offsetStyle.right = AUTO;\n    }\n    if (alignBottom) {\n      offsetStyle.bottom = offsetB;\n      offsetStyle.top = AUTO;\n    } else {\n      offsetStyle.top = offsetY;\n      offsetStyle.bottom = AUTO;\n    }\n  }\n\n  // >>>>> Misc\n  var miscStyle = {};\n  if (stretch) {\n    if (stretch.includes('height') && targetHeight) {\n      miscStyle.height = targetHeight;\n    } else if (stretch.includes('minHeight') && targetHeight) {\n      miscStyle.minHeight = targetHeight;\n    }\n    if (stretch.includes('width') && targetWidth) {\n      miscStyle.width = targetWidth;\n    } else if (stretch.includes('minWidth') && targetWidth) {\n      miscStyle.minWidth = targetWidth;\n    }\n  }\n  if (!open) {\n    miscStyle.pointerEvents = 'none';\n  }\n  return /*#__PURE__*/React.createElement(Portal, {\n    open: forceRender || isNodeVisible,\n    getContainer: getPopupContainer && function () {\n      return getPopupContainer(target);\n    },\n    autoDestroy: autoDestroy\n  }, /*#__PURE__*/React.createElement(Mask, {\n    prefixCls: prefixCls,\n    open: open,\n    zIndex: zIndex,\n    mask: mask,\n    motion: maskMotion\n  }), /*#__PURE__*/React.createElement(ResizeObserver, {\n    onResize: onAlign,\n    disabled: !open\n  }, function (resizeObserverRef) {\n    return /*#__PURE__*/React.createElement(CSSMotion, _extends({\n      motionAppear: true,\n      motionEnter: true,\n      motionLeave: true,\n      removeOnLeave: false,\n      forceRender: forceRender,\n      leavedClassName: \"\".concat(prefixCls, \"-hidden\")\n    }, motion, {\n      onAppearPrepare: onPrepare,\n      onEnterPrepare: onPrepare,\n      visible: open,\n      onVisibleChanged: function onVisibleChanged(nextVisible) {\n        var _motion$onVisibleChan;\n        motion === null || motion === void 0 || (_motion$onVisibleChan = motion.onVisibleChanged) === null || _motion$onVisibleChan === void 0 || _motion$onVisibleChan.call(motion, nextVisible);\n        _onVisibleChanged(nextVisible);\n      }\n    }), function (_ref, motionRef) {\n      var motionClassName = _ref.className,\n        motionStyle = _ref.style;\n      var cls = classNames(prefixCls, motionClassName, className);\n      return /*#__PURE__*/React.createElement(\"div\", {\n        ref: composeRef(resizeObserverRef, ref, motionRef),\n        className: cls,\n        style: _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n          '--arrow-x': \"\".concat(arrowPos.x || 0, \"px\"),\n          '--arrow-y': \"\".concat(arrowPos.y || 0, \"px\")\n        }, offsetStyle), miscStyle), motionStyle), {}, {\n          boxSizing: 'border-box',\n          zIndex: zIndex\n        }, style),\n        onMouseEnter: onMouseEnter,\n        onMouseLeave: onMouseLeave,\n        onPointerEnter: onPointerEnter,\n        onClick: onClick,\n        onPointerDownCapture: onPointerDownCapture\n      }, arrow && /*#__PURE__*/React.createElement(Arrow, {\n        prefixCls: prefixCls,\n        arrow: arrow,\n        arrowPos: arrowPos,\n        align: align\n      }), /*#__PURE__*/React.createElement(PopupContent, {\n        cache: !open && !fresh\n      }, childNode));\n    });\n  }));\n});\nif (process.env.NODE_ENV !== 'production') {\n  Popup.displayName = 'Popup';\n}\nexport default Popup;","import { fillRef, getNodeRef, supportRef, useComposeRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nvar TriggerWrapper = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var children = props.children,\n    getTriggerDOMNode = props.getTriggerDOMNode;\n  var canUseRef = supportRef(children);\n\n  // When use `getTriggerDOMNode`, we should do additional work to get the real dom\n  var setRef = React.useCallback(function (node) {\n    fillRef(ref, getTriggerDOMNode ? getTriggerDOMNode(node) : node);\n  }, [getTriggerDOMNode]);\n  var mergedRef = useComposeRef(setRef, getNodeRef(children));\n  return canUseRef ? /*#__PURE__*/React.cloneElement(children, {\n    ref: mergedRef\n  }) : children;\n});\nif (process.env.NODE_ENV !== 'production') {\n  TriggerWrapper.displayName = 'TriggerWrapper';\n}\nexport default TriggerWrapper;","import * as React from 'react';\nvar TriggerContext = /*#__PURE__*/React.createContext(null);\nexport default TriggerContext;","import * as React from 'react';\nfunction toArray(val) {\n  return val ? Array.isArray(val) ? val : [val] : [];\n}\nexport default function useAction(mobile, action, showAction, hideAction) {\n  return React.useMemo(function () {\n    var mergedShowAction = toArray(showAction !== null && showAction !== void 0 ? showAction : action);\n    var mergedHideAction = toArray(hideAction !== null && hideAction !== void 0 ? hideAction : action);\n    var showActionSet = new Set(mergedShowAction);\n    var hideActionSet = new Set(mergedHideAction);\n    if (mobile) {\n      if (showActionSet.has('hover')) {\n        showActionSet.delete('hover');\n        showActionSet.add('click');\n      }\n      if (hideActionSet.has('hover')) {\n        hideActionSet.delete('hover');\n        hideActionSet.add('click');\n      }\n    }\n    return [showActionSet, hideActionSet];\n  }, [mobile, action, showAction, hideAction]);\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nfunction isPointsEq() {\n  var a1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n  var a2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n  var isAlignPoint = arguments.length > 2 ? arguments[2] : undefined;\n  if (isAlignPoint) {\n    return a1[0] === a2[0];\n  }\n  return a1[0] === a2[0] && a1[1] === a2[1];\n}\nexport function getAlignPopupClassName(builtinPlacements, prefixCls, align, isAlignPoint) {\n  var points = align.points;\n  var placements = Object.keys(builtinPlacements);\n  for (var i = 0; i < placements.length; i += 1) {\n    var _builtinPlacements$pl;\n    var placement = placements[i];\n    if (isPointsEq((_builtinPlacements$pl = builtinPlacements[placement]) === null || _builtinPlacements$pl === void 0 ? void 0 : _builtinPlacements$pl.points, points, isAlignPoint)) {\n      return \"\".concat(prefixCls, \"-placement-\").concat(placement);\n    }\n  }\n  return '';\n}\n\n/** @deprecated We should not use this if we can refactor all deps */\nexport function getMotion(prefixCls, motion, animation, transitionName) {\n  if (motion) {\n    return motion;\n  }\n  if (animation) {\n    return {\n      motionName: \"\".concat(prefixCls, \"-\").concat(animation)\n    };\n  }\n  if (transitionName) {\n    return {\n      motionName: transitionName\n    };\n  }\n  return null;\n}\nexport function getWin(ele) {\n  return ele.ownerDocument.defaultView;\n}\n\n/**\n * Get all the scrollable parent elements of the element\n * @param ele       The element to be detected\n * @param areaOnly  Only return the parent which will cut visible area\n */\nexport function collectScroller(ele) {\n  var scrollerList = [];\n  var current = ele === null || ele === void 0 ? void 0 : ele.parentElement;\n  var scrollStyle = ['hidden', 'scroll', 'clip', 'auto'];\n  while (current) {\n    var _getWin$getComputedSt = getWin(current).getComputedStyle(current),\n      overflowX = _getWin$getComputedSt.overflowX,\n      overflowY = _getWin$getComputedSt.overflowY,\n      overflow = _getWin$getComputedSt.overflow;\n    if ([overflowX, overflowY, overflow].some(function (o) {\n      return scrollStyle.includes(o);\n    })) {\n      scrollerList.push(current);\n    }\n    current = current.parentElement;\n  }\n  return scrollerList;\n}\nexport function toNum(num) {\n  var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n  return Number.isNaN(num) ? defaultValue : num;\n}\nfunction getPxValue(val) {\n  return toNum(parseFloat(val), 0);\n}\n/**\n *\n *\n *  **************************************\n *  *              Border                *\n *  *     **************************     *\n *  *     *                  *     *     *\n *  *  B  *                  *  S  *  B  *\n *  *  o  *                  *  c  *  o  *\n *  *  r  *      Content     *  r  *  r  *\n *  *  d  *                  *  o  *  d  *\n *  *  e  *                  *  l  *  e  *\n *  *  r  ********************  l  *  r  *\n *  *     *        Scroll          *     *\n *  *     **************************     *\n *  *              Border                *\n *  **************************************\n *\n */\n/**\n * Get visible area of element\n */\nexport function getVisibleArea(initArea, scrollerList) {\n  var visibleArea = _objectSpread({}, initArea);\n  (scrollerList || []).forEach(function (ele) {\n    if (ele instanceof HTMLBodyElement || ele instanceof HTMLHtmlElement) {\n      return;\n    }\n\n    // Skip if static position which will not affect visible area\n    var _getWin$getComputedSt2 = getWin(ele).getComputedStyle(ele),\n      overflow = _getWin$getComputedSt2.overflow,\n      overflowClipMargin = _getWin$getComputedSt2.overflowClipMargin,\n      borderTopWidth = _getWin$getComputedSt2.borderTopWidth,\n      borderBottomWidth = _getWin$getComputedSt2.borderBottomWidth,\n      borderLeftWidth = _getWin$getComputedSt2.borderLeftWidth,\n      borderRightWidth = _getWin$getComputedSt2.borderRightWidth;\n    var eleRect = ele.getBoundingClientRect();\n    var eleOutHeight = ele.offsetHeight,\n      eleInnerHeight = ele.clientHeight,\n      eleOutWidth = ele.offsetWidth,\n      eleInnerWidth = ele.clientWidth;\n    var borderTopNum = getPxValue(borderTopWidth);\n    var borderBottomNum = getPxValue(borderBottomWidth);\n    var borderLeftNum = getPxValue(borderLeftWidth);\n    var borderRightNum = getPxValue(borderRightWidth);\n    var scaleX = toNum(Math.round(eleRect.width / eleOutWidth * 1000) / 1000);\n    var scaleY = toNum(Math.round(eleRect.height / eleOutHeight * 1000) / 1000);\n\n    // Original visible area\n    var eleScrollWidth = (eleOutWidth - eleInnerWidth - borderLeftNum - borderRightNum) * scaleX;\n    var eleScrollHeight = (eleOutHeight - eleInnerHeight - borderTopNum - borderBottomNum) * scaleY;\n\n    // Cut border size\n    var scaledBorderTopWidth = borderTopNum * scaleY;\n    var scaledBorderBottomWidth = borderBottomNum * scaleY;\n    var scaledBorderLeftWidth = borderLeftNum * scaleX;\n    var scaledBorderRightWidth = borderRightNum * scaleX;\n\n    // Clip margin\n    var clipMarginWidth = 0;\n    var clipMarginHeight = 0;\n    if (overflow === 'clip') {\n      var clipNum = getPxValue(overflowClipMargin);\n      clipMarginWidth = clipNum * scaleX;\n      clipMarginHeight = clipNum * scaleY;\n    }\n\n    // Region\n    var eleLeft = eleRect.x + scaledBorderLeftWidth - clipMarginWidth;\n    var eleTop = eleRect.y + scaledBorderTopWidth - clipMarginHeight;\n    var eleRight = eleLeft + eleRect.width + 2 * clipMarginWidth - scaledBorderLeftWidth - scaledBorderRightWidth - eleScrollWidth;\n    var eleBottom = eleTop + eleRect.height + 2 * clipMarginHeight - scaledBorderTopWidth - scaledBorderBottomWidth - eleScrollHeight;\n    visibleArea.left = Math.max(visibleArea.left, eleLeft);\n    visibleArea.top = Math.max(visibleArea.top, eleTop);\n    visibleArea.right = Math.min(visibleArea.right, eleRight);\n    visibleArea.bottom = Math.min(visibleArea.bottom, eleBottom);\n  });\n  return visibleArea;\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { isDOM } from \"rc-util/es/Dom/findDOMNode\";\nimport isVisible from \"rc-util/es/Dom/isVisible\";\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport * as React from 'react';\nimport { collectScroller, getVisibleArea, getWin, toNum } from \"../util\";\nfunction getUnitOffset(size) {\n  var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n  var offsetStr = \"\".concat(offset);\n  var cells = offsetStr.match(/^(.*)\\%$/);\n  if (cells) {\n    return size * (parseFloat(cells[1]) / 100);\n  }\n  return parseFloat(offsetStr);\n}\nfunction getNumberOffset(rect, offset) {\n  var _ref = offset || [],\n    _ref2 = _slicedToArray(_ref, 2),\n    offsetX = _ref2[0],\n    offsetY = _ref2[1];\n  return [getUnitOffset(rect.width, offsetX), getUnitOffset(rect.height, offsetY)];\n}\nfunction splitPoints() {\n  var points = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n  return [points[0], points[1]];\n}\nfunction getAlignPoint(rect, points) {\n  var topBottom = points[0];\n  var leftRight = points[1];\n  var x;\n  var y;\n\n  // Top & Bottom\n  if (topBottom === 't') {\n    y = rect.y;\n  } else if (topBottom === 'b') {\n    y = rect.y + rect.height;\n  } else {\n    y = rect.y + rect.height / 2;\n  }\n\n  // Left & Right\n  if (leftRight === 'l') {\n    x = rect.x;\n  } else if (leftRight === 'r') {\n    x = rect.x + rect.width;\n  } else {\n    x = rect.x + rect.width / 2;\n  }\n  return {\n    x: x,\n    y: y\n  };\n}\nfunction reversePoints(points, index) {\n  var reverseMap = {\n    t: 'b',\n    b: 't',\n    l: 'r',\n    r: 'l'\n  };\n  return points.map(function (point, i) {\n    if (i === index) {\n      return reverseMap[point] || 'c';\n    }\n    return point;\n  }).join('');\n}\nexport default function useAlign(open, popupEle, target, placement, builtinPlacements, popupAlign, onPopupAlign) {\n  var _React$useState = React.useState({\n      ready: false,\n      offsetX: 0,\n      offsetY: 0,\n      offsetR: 0,\n      offsetB: 0,\n      arrowX: 0,\n      arrowY: 0,\n      scaleX: 1,\n      scaleY: 1,\n      align: builtinPlacements[placement] || {}\n    }),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    offsetInfo = _React$useState2[0],\n    setOffsetInfo = _React$useState2[1];\n  var alignCountRef = React.useRef(0);\n  var scrollerList = React.useMemo(function () {\n    if (!popupEle) {\n      return [];\n    }\n    return collectScroller(popupEle);\n  }, [popupEle]);\n\n  // ========================= Flip ==========================\n  // We will memo flip info.\n  // If size change to make flip, it will memo the flip info and use it in next align.\n  var prevFlipRef = React.useRef({});\n  var resetFlipCache = function resetFlipCache() {\n    prevFlipRef.current = {};\n  };\n  if (!open) {\n    resetFlipCache();\n  }\n\n  // ========================= Align =========================\n  var onAlign = useEvent(function () {\n    if (popupEle && target && open) {\n      var _popupElement$parentE, _popupRect$x, _popupRect$y, _popupElement$parentE2;\n      var popupElement = popupEle;\n      var doc = popupElement.ownerDocument;\n      var win = getWin(popupElement);\n      var _win$getComputedStyle = win.getComputedStyle(popupElement),\n        popupPosition = _win$getComputedStyle.position;\n      var originLeft = popupElement.style.left;\n      var originTop = popupElement.style.top;\n      var originRight = popupElement.style.right;\n      var originBottom = popupElement.style.bottom;\n      var originOverflow = popupElement.style.overflow;\n\n      // Placement\n      var placementInfo = _objectSpread(_objectSpread({}, builtinPlacements[placement]), popupAlign);\n\n      // placeholder element\n      var placeholderElement = doc.createElement('div');\n      (_popupElement$parentE = popupElement.parentElement) === null || _popupElement$parentE === void 0 || _popupElement$parentE.appendChild(placeholderElement);\n      placeholderElement.style.left = \"\".concat(popupElement.offsetLeft, \"px\");\n      placeholderElement.style.top = \"\".concat(popupElement.offsetTop, \"px\");\n      placeholderElement.style.position = popupPosition;\n      placeholderElement.style.height = \"\".concat(popupElement.offsetHeight, \"px\");\n      placeholderElement.style.width = \"\".concat(popupElement.offsetWidth, \"px\");\n\n      // Reset first\n      popupElement.style.left = '0';\n      popupElement.style.top = '0';\n      popupElement.style.right = 'auto';\n      popupElement.style.bottom = 'auto';\n      popupElement.style.overflow = 'hidden';\n\n      // Calculate align style, we should consider `transform` case\n      var targetRect;\n      if (Array.isArray(target)) {\n        targetRect = {\n          x: target[0],\n          y: target[1],\n          width: 0,\n          height: 0\n        };\n      } else {\n        var _rect$x, _rect$y;\n        var rect = target.getBoundingClientRect();\n        rect.x = (_rect$x = rect.x) !== null && _rect$x !== void 0 ? _rect$x : rect.left;\n        rect.y = (_rect$y = rect.y) !== null && _rect$y !== void 0 ? _rect$y : rect.top;\n        targetRect = {\n          x: rect.x,\n          y: rect.y,\n          width: rect.width,\n          height: rect.height\n        };\n      }\n      var popupRect = popupElement.getBoundingClientRect();\n      var _win$getComputedStyle2 = win.getComputedStyle(popupElement),\n        height = _win$getComputedStyle2.height,\n        width = _win$getComputedStyle2.width;\n      popupRect.x = (_popupRect$x = popupRect.x) !== null && _popupRect$x !== void 0 ? _popupRect$x : popupRect.left;\n      popupRect.y = (_popupRect$y = popupRect.y) !== null && _popupRect$y !== void 0 ? _popupRect$y : popupRect.top;\n      var _doc$documentElement = doc.documentElement,\n        clientWidth = _doc$documentElement.clientWidth,\n        clientHeight = _doc$documentElement.clientHeight,\n        scrollWidth = _doc$documentElement.scrollWidth,\n        scrollHeight = _doc$documentElement.scrollHeight,\n        scrollTop = _doc$documentElement.scrollTop,\n        scrollLeft = _doc$documentElement.scrollLeft;\n      var popupHeight = popupRect.height;\n      var popupWidth = popupRect.width;\n      var targetHeight = targetRect.height;\n      var targetWidth = targetRect.width;\n\n      // Get bounding of visible area\n      var visibleRegion = {\n        left: 0,\n        top: 0,\n        right: clientWidth,\n        bottom: clientHeight\n      };\n      var scrollRegion = {\n        left: -scrollLeft,\n        top: -scrollTop,\n        right: scrollWidth - scrollLeft,\n        bottom: scrollHeight - scrollTop\n      };\n      var htmlRegion = placementInfo.htmlRegion;\n      var VISIBLE = 'visible';\n      var VISIBLE_FIRST = 'visibleFirst';\n      if (htmlRegion !== 'scroll' && htmlRegion !== VISIBLE_FIRST) {\n        htmlRegion = VISIBLE;\n      }\n      var isVisibleFirst = htmlRegion === VISIBLE_FIRST;\n      var scrollRegionArea = getVisibleArea(scrollRegion, scrollerList);\n      var visibleRegionArea = getVisibleArea(visibleRegion, scrollerList);\n      var visibleArea = htmlRegion === VISIBLE ? visibleRegionArea : scrollRegionArea;\n\n      // When set to `visibleFirst`,\n      // the check `adjust` logic will use `visibleRegion` for check first.\n      var adjustCheckVisibleArea = isVisibleFirst ? visibleRegionArea : visibleArea;\n\n      // Record right & bottom align data\n      popupElement.style.left = 'auto';\n      popupElement.style.top = 'auto';\n      popupElement.style.right = '0';\n      popupElement.style.bottom = '0';\n      var popupMirrorRect = popupElement.getBoundingClientRect();\n\n      // Reset back\n      popupElement.style.left = originLeft;\n      popupElement.style.top = originTop;\n      popupElement.style.right = originRight;\n      popupElement.style.bottom = originBottom;\n      popupElement.style.overflow = originOverflow;\n      (_popupElement$parentE2 = popupElement.parentElement) === null || _popupElement$parentE2 === void 0 || _popupElement$parentE2.removeChild(placeholderElement);\n\n      // Calculate scale\n      var _scaleX = toNum(Math.round(popupWidth / parseFloat(width) * 1000) / 1000);\n      var _scaleY = toNum(Math.round(popupHeight / parseFloat(height) * 1000) / 1000);\n\n      // No need to align since it's not visible in view\n      if (_scaleX === 0 || _scaleY === 0 || isDOM(target) && !isVisible(target)) {\n        return;\n      }\n\n      // Offset\n      var offset = placementInfo.offset,\n        targetOffset = placementInfo.targetOffset;\n      var _getNumberOffset = getNumberOffset(popupRect, offset),\n        _getNumberOffset2 = _slicedToArray(_getNumberOffset, 2),\n        popupOffsetX = _getNumberOffset2[0],\n        popupOffsetY = _getNumberOffset2[1];\n      var _getNumberOffset3 = getNumberOffset(targetRect, targetOffset),\n        _getNumberOffset4 = _slicedToArray(_getNumberOffset3, 2),\n        targetOffsetX = _getNumberOffset4[0],\n        targetOffsetY = _getNumberOffset4[1];\n      targetRect.x -= targetOffsetX;\n      targetRect.y -= targetOffsetY;\n\n      // Points\n      var _ref3 = placementInfo.points || [],\n        _ref4 = _slicedToArray(_ref3, 2),\n        popupPoint = _ref4[0],\n        targetPoint = _ref4[1];\n      var targetPoints = splitPoints(targetPoint);\n      var popupPoints = splitPoints(popupPoint);\n      var targetAlignPoint = getAlignPoint(targetRect, targetPoints);\n      var popupAlignPoint = getAlignPoint(popupRect, popupPoints);\n\n      // Real align info may not same as origin one\n      var nextAlignInfo = _objectSpread({}, placementInfo);\n\n      // Next Offset\n      var nextOffsetX = targetAlignPoint.x - popupAlignPoint.x + popupOffsetX;\n      var nextOffsetY = targetAlignPoint.y - popupAlignPoint.y + popupOffsetY;\n\n      // ============== Intersection ===============\n      // Get area by position. Used for check if flip area is better\n      function getIntersectionVisibleArea(offsetX, offsetY) {\n        var area = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : visibleArea;\n        var l = popupRect.x + offsetX;\n        var t = popupRect.y + offsetY;\n        var r = l + popupWidth;\n        var b = t + popupHeight;\n        var visibleL = Math.max(l, area.left);\n        var visibleT = Math.max(t, area.top);\n        var visibleR = Math.min(r, area.right);\n        var visibleB = Math.min(b, area.bottom);\n        return Math.max(0, (visibleR - visibleL) * (visibleB - visibleT));\n      }\n      var originIntersectionVisibleArea = getIntersectionVisibleArea(nextOffsetX, nextOffsetY);\n\n      // As `visibleFirst`, we prepare this for check\n      var originIntersectionRecommendArea = getIntersectionVisibleArea(nextOffsetX, nextOffsetY, visibleRegionArea);\n\n      // ========================== Overflow ===========================\n      var targetAlignPointTL = getAlignPoint(targetRect, ['t', 'l']);\n      var popupAlignPointTL = getAlignPoint(popupRect, ['t', 'l']);\n      var targetAlignPointBR = getAlignPoint(targetRect, ['b', 'r']);\n      var popupAlignPointBR = getAlignPoint(popupRect, ['b', 'r']);\n      var overflow = placementInfo.overflow || {};\n      var adjustX = overflow.adjustX,\n        adjustY = overflow.adjustY,\n        shiftX = overflow.shiftX,\n        shiftY = overflow.shiftY;\n      var supportAdjust = function supportAdjust(val) {\n        if (typeof val === 'boolean') {\n          return val;\n        }\n        return val >= 0;\n      };\n\n      // Prepare position\n      var nextPopupY;\n      var nextPopupBottom;\n      var nextPopupX;\n      var nextPopupRight;\n      function syncNextPopupPosition() {\n        nextPopupY = popupRect.y + nextOffsetY;\n        nextPopupBottom = nextPopupY + popupHeight;\n        nextPopupX = popupRect.x + nextOffsetX;\n        nextPopupRight = nextPopupX + popupWidth;\n      }\n      syncNextPopupPosition();\n\n      // >>>>>>>>>> Top & Bottom\n      var needAdjustY = supportAdjust(adjustY);\n      var sameTB = popupPoints[0] === targetPoints[0];\n\n      // Bottom to Top\n      if (needAdjustY && popupPoints[0] === 't' && (nextPopupBottom > adjustCheckVisibleArea.bottom || prevFlipRef.current.bt)) {\n        var tmpNextOffsetY = nextOffsetY;\n        if (sameTB) {\n          tmpNextOffsetY -= popupHeight - targetHeight;\n        } else {\n          tmpNextOffsetY = targetAlignPointTL.y - popupAlignPointBR.y - popupOffsetY;\n        }\n        var newVisibleArea = getIntersectionVisibleArea(nextOffsetX, tmpNextOffsetY);\n        var newVisibleRecommendArea = getIntersectionVisibleArea(nextOffsetX, tmpNextOffsetY, visibleRegionArea);\n        if (\n        // Of course use larger one\n        newVisibleArea > originIntersectionVisibleArea || newVisibleArea === originIntersectionVisibleArea && (!isVisibleFirst ||\n        // Choose recommend one\n        newVisibleRecommendArea >= originIntersectionRecommendArea)) {\n          prevFlipRef.current.bt = true;\n          nextOffsetY = tmpNextOffsetY;\n          popupOffsetY = -popupOffsetY;\n          nextAlignInfo.points = [reversePoints(popupPoints, 0), reversePoints(targetPoints, 0)];\n        } else {\n          prevFlipRef.current.bt = false;\n        }\n      }\n\n      // Top to Bottom\n      if (needAdjustY && popupPoints[0] === 'b' && (nextPopupY < adjustCheckVisibleArea.top || prevFlipRef.current.tb)) {\n        var _tmpNextOffsetY = nextOffsetY;\n        if (sameTB) {\n          _tmpNextOffsetY += popupHeight - targetHeight;\n        } else {\n          _tmpNextOffsetY = targetAlignPointBR.y - popupAlignPointTL.y - popupOffsetY;\n        }\n        var _newVisibleArea = getIntersectionVisibleArea(nextOffsetX, _tmpNextOffsetY);\n        var _newVisibleRecommendArea = getIntersectionVisibleArea(nextOffsetX, _tmpNextOffsetY, visibleRegionArea);\n        if (\n        // Of course use larger one\n        _newVisibleArea > originIntersectionVisibleArea || _newVisibleArea === originIntersectionVisibleArea && (!isVisibleFirst ||\n        // Choose recommend one\n        _newVisibleRecommendArea >= originIntersectionRecommendArea)) {\n          prevFlipRef.current.tb = true;\n          nextOffsetY = _tmpNextOffsetY;\n          popupOffsetY = -popupOffsetY;\n          nextAlignInfo.points = [reversePoints(popupPoints, 0), reversePoints(targetPoints, 0)];\n        } else {\n          prevFlipRef.current.tb = false;\n        }\n      }\n\n      // >>>>>>>>>> Left & Right\n      var needAdjustX = supportAdjust(adjustX);\n\n      // >>>>> Flip\n      var sameLR = popupPoints[1] === targetPoints[1];\n\n      // Right to Left\n      if (needAdjustX && popupPoints[1] === 'l' && (nextPopupRight > adjustCheckVisibleArea.right || prevFlipRef.current.rl)) {\n        var tmpNextOffsetX = nextOffsetX;\n        if (sameLR) {\n          tmpNextOffsetX -= popupWidth - targetWidth;\n        } else {\n          tmpNextOffsetX = targetAlignPointTL.x - popupAlignPointBR.x - popupOffsetX;\n        }\n        var _newVisibleArea2 = getIntersectionVisibleArea(tmpNextOffsetX, nextOffsetY);\n        var _newVisibleRecommendArea2 = getIntersectionVisibleArea(tmpNextOffsetX, nextOffsetY, visibleRegionArea);\n        if (\n        // Of course use larger one\n        _newVisibleArea2 > originIntersectionVisibleArea || _newVisibleArea2 === originIntersectionVisibleArea && (!isVisibleFirst ||\n        // Choose recommend one\n        _newVisibleRecommendArea2 >= originIntersectionRecommendArea)) {\n          prevFlipRef.current.rl = true;\n          nextOffsetX = tmpNextOffsetX;\n          popupOffsetX = -popupOffsetX;\n          nextAlignInfo.points = [reversePoints(popupPoints, 1), reversePoints(targetPoints, 1)];\n        } else {\n          prevFlipRef.current.rl = false;\n        }\n      }\n\n      // Left to Right\n      if (needAdjustX && popupPoints[1] === 'r' && (nextPopupX < adjustCheckVisibleArea.left || prevFlipRef.current.lr)) {\n        var _tmpNextOffsetX = nextOffsetX;\n        if (sameLR) {\n          _tmpNextOffsetX += popupWidth - targetWidth;\n        } else {\n          _tmpNextOffsetX = targetAlignPointBR.x - popupAlignPointTL.x - popupOffsetX;\n        }\n        var _newVisibleArea3 = getIntersectionVisibleArea(_tmpNextOffsetX, nextOffsetY);\n        var _newVisibleRecommendArea3 = getIntersectionVisibleArea(_tmpNextOffsetX, nextOffsetY, visibleRegionArea);\n        if (\n        // Of course use larger one\n        _newVisibleArea3 > originIntersectionVisibleArea || _newVisibleArea3 === originIntersectionVisibleArea && (!isVisibleFirst ||\n        // Choose recommend one\n        _newVisibleRecommendArea3 >= originIntersectionRecommendArea)) {\n          prevFlipRef.current.lr = true;\n          nextOffsetX = _tmpNextOffsetX;\n          popupOffsetX = -popupOffsetX;\n          nextAlignInfo.points = [reversePoints(popupPoints, 1), reversePoints(targetPoints, 1)];\n        } else {\n          prevFlipRef.current.lr = false;\n        }\n      }\n\n      // ============================ Shift ============================\n      syncNextPopupPosition();\n      var numShiftX = shiftX === true ? 0 : shiftX;\n      if (typeof numShiftX === 'number') {\n        // Left\n        if (nextPopupX < visibleRegionArea.left) {\n          nextOffsetX -= nextPopupX - visibleRegionArea.left - popupOffsetX;\n          if (targetRect.x + targetWidth < visibleRegionArea.left + numShiftX) {\n            nextOffsetX += targetRect.x - visibleRegionArea.left + targetWidth - numShiftX;\n          }\n        }\n\n        // Right\n        if (nextPopupRight > visibleRegionArea.right) {\n          nextOffsetX -= nextPopupRight - visibleRegionArea.right - popupOffsetX;\n          if (targetRect.x > visibleRegionArea.right - numShiftX) {\n            nextOffsetX += targetRect.x - visibleRegionArea.right + numShiftX;\n          }\n        }\n      }\n      var numShiftY = shiftY === true ? 0 : shiftY;\n      if (typeof numShiftY === 'number') {\n        // Top\n        if (nextPopupY < visibleRegionArea.top) {\n          nextOffsetY -= nextPopupY - visibleRegionArea.top - popupOffsetY;\n\n          // When target if far away from visible area\n          // Stop shift\n          if (targetRect.y + targetHeight < visibleRegionArea.top + numShiftY) {\n            nextOffsetY += targetRect.y - visibleRegionArea.top + targetHeight - numShiftY;\n          }\n        }\n\n        // Bottom\n        if (nextPopupBottom > visibleRegionArea.bottom) {\n          nextOffsetY -= nextPopupBottom - visibleRegionArea.bottom - popupOffsetY;\n          if (targetRect.y > visibleRegionArea.bottom - numShiftY) {\n            nextOffsetY += targetRect.y - visibleRegionArea.bottom + numShiftY;\n          }\n        }\n      }\n\n      // ============================ Arrow ============================\n      // Arrow center align\n      var popupLeft = popupRect.x + nextOffsetX;\n      var popupRight = popupLeft + popupWidth;\n      var popupTop = popupRect.y + nextOffsetY;\n      var popupBottom = popupTop + popupHeight;\n      var targetLeft = targetRect.x;\n      var targetRight = targetLeft + targetWidth;\n      var targetTop = targetRect.y;\n      var targetBottom = targetTop + targetHeight;\n      var maxLeft = Math.max(popupLeft, targetLeft);\n      var minRight = Math.min(popupRight, targetRight);\n      var xCenter = (maxLeft + minRight) / 2;\n      var nextArrowX = xCenter - popupLeft;\n      var maxTop = Math.max(popupTop, targetTop);\n      var minBottom = Math.min(popupBottom, targetBottom);\n      var yCenter = (maxTop + minBottom) / 2;\n      var nextArrowY = yCenter - popupTop;\n      onPopupAlign === null || onPopupAlign === void 0 || onPopupAlign(popupEle, nextAlignInfo);\n\n      // Additional calculate right & bottom position\n      var offsetX4Right = popupMirrorRect.right - popupRect.x - (nextOffsetX + popupRect.width);\n      var offsetY4Bottom = popupMirrorRect.bottom - popupRect.y - (nextOffsetY + popupRect.height);\n      if (_scaleX === 1) {\n        nextOffsetX = Math.round(nextOffsetX);\n        offsetX4Right = Math.round(offsetX4Right);\n      }\n      if (_scaleY === 1) {\n        nextOffsetY = Math.round(nextOffsetY);\n        offsetY4Bottom = Math.round(offsetY4Bottom);\n      }\n      var nextOffsetInfo = {\n        ready: true,\n        offsetX: nextOffsetX / _scaleX,\n        offsetY: nextOffsetY / _scaleY,\n        offsetR: offsetX4Right / _scaleX,\n        offsetB: offsetY4Bottom / _scaleY,\n        arrowX: nextArrowX / _scaleX,\n        arrowY: nextArrowY / _scaleY,\n        scaleX: _scaleX,\n        scaleY: _scaleY,\n        align: nextAlignInfo\n      };\n      setOffsetInfo(nextOffsetInfo);\n    }\n  });\n  var triggerAlign = function triggerAlign() {\n    alignCountRef.current += 1;\n    var id = alignCountRef.current;\n\n    // Merge all align requirement into one frame\n    Promise.resolve().then(function () {\n      if (alignCountRef.current === id) {\n        onAlign();\n      }\n    });\n  };\n\n  // Reset ready status when placement & open changed\n  var resetReady = function resetReady() {\n    setOffsetInfo(function (ori) {\n      return _objectSpread(_objectSpread({}, ori), {}, {\n        ready: false\n      });\n    });\n  };\n  useLayoutEffect(resetReady, [placement]);\n  useLayoutEffect(function () {\n    if (!open) {\n      resetReady();\n    }\n  }, [open]);\n  return [offsetInfo.ready, offsetInfo.offsetX, offsetInfo.offsetY, offsetInfo.offsetR, offsetInfo.offsetB, offsetInfo.arrowX, offsetInfo.arrowY, offsetInfo.scaleX, offsetInfo.scaleY, offsetInfo.align, triggerAlign];\n}","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport { collectScroller, getWin } from \"../util\";\nexport default function useWatch(open, target, popup, onAlign, onScroll) {\n  useLayoutEffect(function () {\n    if (open && target && popup) {\n      var targetElement = target;\n      var popupElement = popup;\n      var targetScrollList = collectScroller(targetElement);\n      var popupScrollList = collectScroller(popupElement);\n      var win = getWin(popupElement);\n      var mergedList = new Set([win].concat(_toConsumableArray(targetScrollList), _toConsumableArray(popupScrollList)));\n      function notifyScroll() {\n        onAlign();\n        onScroll();\n      }\n      mergedList.forEach(function (scroller) {\n        scroller.addEventListener('scroll', notifyScroll, {\n          passive: true\n        });\n      });\n      win.addEventListener('resize', notifyScroll, {\n        passive: true\n      });\n\n      // First time always do align\n      onAlign();\n      return function () {\n        mergedList.forEach(function (scroller) {\n          scroller.removeEventListener('scroll', notifyScroll);\n          win.removeEventListener('resize', notifyScroll);\n        });\n      };\n    }\n  }, [open, target, popup]);\n}","import { getShadowRoot } from \"rc-util/es/Dom/shadow\";\nimport { warning } from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport { getWin } from \"../util\";\nexport default function useWinClick(open, clickToHide, targetEle, popupEle, mask, maskClosable, inPopupOrChild, triggerOpen) {\n  var openRef = React.useRef(open);\n  openRef.current = open;\n  var popupPointerDownRef = React.useRef(false);\n\n  // Click to hide is special action since click popup element should not hide\n  React.useEffect(function () {\n    if (clickToHide && popupEle && (!mask || maskClosable)) {\n      var onPointerDown = function onPointerDown() {\n        popupPointerDownRef.current = false;\n      };\n      var onTriggerClose = function onTriggerClose(e) {\n        var _e$composedPath;\n        if (openRef.current && !inPopupOrChild(((_e$composedPath = e.composedPath) === null || _e$composedPath === void 0 || (_e$composedPath = _e$composedPath.call(e)) === null || _e$composedPath === void 0 ? void 0 : _e$composedPath[0]) || e.target) && !popupPointerDownRef.current) {\n          triggerOpen(false);\n        }\n      };\n      var win = getWin(popupEle);\n      win.addEventListener('pointerdown', onPointerDown, true);\n      win.addEventListener('mousedown', onTriggerClose, true);\n      win.addEventListener('contextmenu', onTriggerClose, true);\n\n      // shadow root\n      var targetShadowRoot = getShadowRoot(targetEle);\n      if (targetShadowRoot) {\n        targetShadowRoot.addEventListener('mousedown', onTriggerClose, true);\n        targetShadowRoot.addEventListener('contextmenu', onTriggerClose, true);\n      }\n\n      // Warning if target and popup not in same root\n      if (process.env.NODE_ENV !== 'production') {\n        var _targetEle$getRootNod, _popupEle$getRootNode;\n        var targetRoot = targetEle === null || targetEle === void 0 || (_targetEle$getRootNod = targetEle.getRootNode) === null || _targetEle$getRootNod === void 0 ? void 0 : _targetEle$getRootNod.call(targetEle);\n        var popupRoot = (_popupEle$getRootNode = popupEle.getRootNode) === null || _popupEle$getRootNode === void 0 ? void 0 : _popupEle$getRootNode.call(popupEle);\n        warning(targetRoot === popupRoot, \"trigger element and popup element should in same shadow root.\");\n      }\n      return function () {\n        win.removeEventListener('pointerdown', onPointerDown, true);\n        win.removeEventListener('mousedown', onTriggerClose, true);\n        win.removeEventListener('contextmenu', onTriggerClose, true);\n        if (targetShadowRoot) {\n          targetShadowRoot.removeEventListener('mousedown', onTriggerClose, true);\n          targetShadowRoot.removeEventListener('contextmenu', onTriggerClose, true);\n        }\n      };\n    }\n  }, [clickToHide, targetEle, popupEle, mask, maskClosable]);\n  function onPopupPointerDown() {\n    popupPointerDownRef.current = true;\n  }\n  return onPopupPointerDown;\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"children\", \"action\", \"showAction\", \"hideAction\", \"popupVisible\", \"defaultPopupVisible\", \"onPopupVisibleChange\", \"afterPopupVisibleChange\", \"mouseEnterDelay\", \"mouseLeaveDelay\", \"focusDelay\", \"blurDelay\", \"mask\", \"maskClosable\", \"getPopupContainer\", \"forceRender\", \"autoDestroy\", \"destroyPopupOnHide\", \"popup\", \"popupClassName\", \"popupStyle\", \"popupPlacement\", \"builtinPlacements\", \"popupAlign\", \"zIndex\", \"stretch\", \"getPopupClassNameFromAlign\", \"fresh\", \"alignPoint\", \"onPopupClick\", \"onPopupAlign\", \"arrow\", \"popupMotion\", \"maskMotion\", \"popupTransitionName\", \"popupAnimation\", \"maskTransitionName\", \"maskAnimation\", \"className\", \"getTriggerDOMNode\"];\nimport Portal from '@rc-component/portal';\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\nimport { isDOM } from \"rc-util/es/Dom/findDOMNode\";\nimport { getShadowRoot } from \"rc-util/es/Dom/shadow\";\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport useId from \"rc-util/es/hooks/useId\";\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport isMobile from \"rc-util/es/isMobile\";\nimport * as React from 'react';\nimport Popup from \"./Popup\";\nimport TriggerWrapper from \"./TriggerWrapper\";\nimport TriggerContext from \"./context\";\nimport useAction from \"./hooks/useAction\";\nimport useAlign from \"./hooks/useAlign\";\nimport useWatch from \"./hooks/useWatch\";\nimport useWinClick from \"./hooks/useWinClick\";\nimport { getAlignPopupClassName, getMotion } from \"./util\";\n\n// Removed Props List\n// Seems this can be auto\n// getDocument?: (element?: HTMLElement) => Document;\n\n// New version will not wrap popup with `rc-trigger-popup-content` when multiple children\n\nexport function generateTrigger() {\n  var PortalComponent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Portal;\n  var Trigger = /*#__PURE__*/React.forwardRef(function (props, ref) {\n    var _props$prefixCls = props.prefixCls,\n      prefixCls = _props$prefixCls === void 0 ? 'rc-trigger-popup' : _props$prefixCls,\n      children = props.children,\n      _props$action = props.action,\n      action = _props$action === void 0 ? 'hover' : _props$action,\n      showAction = props.showAction,\n      hideAction = props.hideAction,\n      popupVisible = props.popupVisible,\n      defaultPopupVisible = props.defaultPopupVisible,\n      onPopupVisibleChange = props.onPopupVisibleChange,\n      afterPopupVisibleChange = props.afterPopupVisibleChange,\n      mouseEnterDelay = props.mouseEnterDelay,\n      _props$mouseLeaveDela = props.mouseLeaveDelay,\n      mouseLeaveDelay = _props$mouseLeaveDela === void 0 ? 0.1 : _props$mouseLeaveDela,\n      focusDelay = props.focusDelay,\n      blurDelay = props.blurDelay,\n      mask = props.mask,\n      _props$maskClosable = props.maskClosable,\n      maskClosable = _props$maskClosable === void 0 ? true : _props$maskClosable,\n      getPopupContainer = props.getPopupContainer,\n      forceRender = props.forceRender,\n      autoDestroy = props.autoDestroy,\n      destroyPopupOnHide = props.destroyPopupOnHide,\n      popup = props.popup,\n      popupClassName = props.popupClassName,\n      popupStyle = props.popupStyle,\n      popupPlacement = props.popupPlacement,\n      _props$builtinPlaceme = props.builtinPlacements,\n      builtinPlacements = _props$builtinPlaceme === void 0 ? {} : _props$builtinPlaceme,\n      popupAlign = props.popupAlign,\n      zIndex = props.zIndex,\n      stretch = props.stretch,\n      getPopupClassNameFromAlign = props.getPopupClassNameFromAlign,\n      fresh = props.fresh,\n      alignPoint = props.alignPoint,\n      onPopupClick = props.onPopupClick,\n      onPopupAlign = props.onPopupAlign,\n      arrow = props.arrow,\n      popupMotion = props.popupMotion,\n      maskMotion = props.maskMotion,\n      popupTransitionName = props.popupTransitionName,\n      popupAnimation = props.popupAnimation,\n      maskTransitionName = props.maskTransitionName,\n      maskAnimation = props.maskAnimation,\n      className = props.className,\n      getTriggerDOMNode = props.getTriggerDOMNode,\n      restProps = _objectWithoutProperties(props, _excluded);\n    var mergedAutoDestroy = autoDestroy || destroyPopupOnHide || false;\n\n    // =========================== Mobile ===========================\n    var _React$useState = React.useState(false),\n      _React$useState2 = _slicedToArray(_React$useState, 2),\n      mobile = _React$useState2[0],\n      setMobile = _React$useState2[1];\n    useLayoutEffect(function () {\n      setMobile(isMobile());\n    }, []);\n\n    // ========================== Context ===========================\n    var subPopupElements = React.useRef({});\n    var parentContext = React.useContext(TriggerContext);\n    var context = React.useMemo(function () {\n      return {\n        registerSubPopup: function registerSubPopup(id, subPopupEle) {\n          subPopupElements.current[id] = subPopupEle;\n          parentContext === null || parentContext === void 0 || parentContext.registerSubPopup(id, subPopupEle);\n        }\n      };\n    }, [parentContext]);\n\n    // =========================== Popup ============================\n    var id = useId();\n    var _React$useState3 = React.useState(null),\n      _React$useState4 = _slicedToArray(_React$useState3, 2),\n      popupEle = _React$useState4[0],\n      setPopupEle = _React$useState4[1];\n\n    // Used for forwardRef popup. Not use internal\n    var externalPopupRef = React.useRef(null);\n    var setPopupRef = useEvent(function (node) {\n      externalPopupRef.current = node;\n      if (isDOM(node) && popupEle !== node) {\n        setPopupEle(node);\n      }\n      parentContext === null || parentContext === void 0 || parentContext.registerSubPopup(id, node);\n    });\n\n    // =========================== Target ===========================\n    // Use state to control here since `useRef` update not trigger render\n    var _React$useState5 = React.useState(null),\n      _React$useState6 = _slicedToArray(_React$useState5, 2),\n      targetEle = _React$useState6[0],\n      setTargetEle = _React$useState6[1];\n\n    // Used for forwardRef target. Not use internal\n    var externalForwardRef = React.useRef(null);\n    var setTargetRef = useEvent(function (node) {\n      if (isDOM(node) && targetEle !== node) {\n        setTargetEle(node);\n        externalForwardRef.current = node;\n      }\n    });\n\n    // ========================== Children ==========================\n    var child = React.Children.only(children);\n    var originChildProps = (child === null || child === void 0 ? void 0 : child.props) || {};\n    var cloneProps = {};\n    var inPopupOrChild = useEvent(function (ele) {\n      var _getShadowRoot, _getShadowRoot2;\n      var childDOM = targetEle;\n      return (childDOM === null || childDOM === void 0 ? void 0 : childDOM.contains(ele)) || ((_getShadowRoot = getShadowRoot(childDOM)) === null || _getShadowRoot === void 0 ? void 0 : _getShadowRoot.host) === ele || ele === childDOM || (popupEle === null || popupEle === void 0 ? void 0 : popupEle.contains(ele)) || ((_getShadowRoot2 = getShadowRoot(popupEle)) === null || _getShadowRoot2 === void 0 ? void 0 : _getShadowRoot2.host) === ele || ele === popupEle || Object.values(subPopupElements.current).some(function (subPopupEle) {\n        return (subPopupEle === null || subPopupEle === void 0 ? void 0 : subPopupEle.contains(ele)) || ele === subPopupEle;\n      });\n    });\n\n    // =========================== Motion ===========================\n    var mergePopupMotion = getMotion(prefixCls, popupMotion, popupAnimation, popupTransitionName);\n    var mergeMaskMotion = getMotion(prefixCls, maskMotion, maskAnimation, maskTransitionName);\n\n    // ============================ Open ============================\n    var _React$useState7 = React.useState(defaultPopupVisible || false),\n      _React$useState8 = _slicedToArray(_React$useState7, 2),\n      internalOpen = _React$useState8[0],\n      setInternalOpen = _React$useState8[1];\n\n    // Render still use props as first priority\n    var mergedOpen = popupVisible !== null && popupVisible !== void 0 ? popupVisible : internalOpen;\n\n    // We use effect sync here in case `popupVisible` back to `undefined`\n    var setMergedOpen = useEvent(function (nextOpen) {\n      if (popupVisible === undefined) {\n        setInternalOpen(nextOpen);\n      }\n    });\n    useLayoutEffect(function () {\n      setInternalOpen(popupVisible || false);\n    }, [popupVisible]);\n    var openRef = React.useRef(mergedOpen);\n    openRef.current = mergedOpen;\n    var lastTriggerRef = React.useRef([]);\n    lastTriggerRef.current = [];\n    var internalTriggerOpen = useEvent(function (nextOpen) {\n      var _lastTriggerRef$curre;\n      setMergedOpen(nextOpen);\n\n      // Enter or Pointer will both trigger open state change\n      // We only need take one to avoid duplicated change event trigger\n      // Use `lastTriggerRef` to record last open type\n      if (((_lastTriggerRef$curre = lastTriggerRef.current[lastTriggerRef.current.length - 1]) !== null && _lastTriggerRef$curre !== void 0 ? _lastTriggerRef$curre : mergedOpen) !== nextOpen) {\n        lastTriggerRef.current.push(nextOpen);\n        onPopupVisibleChange === null || onPopupVisibleChange === void 0 || onPopupVisibleChange(nextOpen);\n      }\n    });\n\n    // Trigger for delay\n    var delayRef = React.useRef();\n    var clearDelay = function clearDelay() {\n      clearTimeout(delayRef.current);\n    };\n    var triggerOpen = function triggerOpen(nextOpen) {\n      var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n      clearDelay();\n      if (delay === 0) {\n        internalTriggerOpen(nextOpen);\n      } else {\n        delayRef.current = setTimeout(function () {\n          internalTriggerOpen(nextOpen);\n        }, delay * 1000);\n      }\n    };\n    React.useEffect(function () {\n      return clearDelay;\n    }, []);\n\n    // ========================== Motion ============================\n    var _React$useState9 = React.useState(false),\n      _React$useState10 = _slicedToArray(_React$useState9, 2),\n      inMotion = _React$useState10[0],\n      setInMotion = _React$useState10[1];\n    useLayoutEffect(function (firstMount) {\n      if (!firstMount || mergedOpen) {\n        setInMotion(true);\n      }\n    }, [mergedOpen]);\n    var _React$useState11 = React.useState(null),\n      _React$useState12 = _slicedToArray(_React$useState11, 2),\n      motionPrepareResolve = _React$useState12[0],\n      setMotionPrepareResolve = _React$useState12[1];\n\n    // =========================== Align ============================\n    var _React$useState13 = React.useState(null),\n      _React$useState14 = _slicedToArray(_React$useState13, 2),\n      mousePos = _React$useState14[0],\n      setMousePos = _React$useState14[1];\n    var setMousePosByEvent = function setMousePosByEvent(event) {\n      setMousePos([event.clientX, event.clientY]);\n    };\n    var _useAlign = useAlign(mergedOpen, popupEle, alignPoint && mousePos !== null ? mousePos : targetEle, popupPlacement, builtinPlacements, popupAlign, onPopupAlign),\n      _useAlign2 = _slicedToArray(_useAlign, 11),\n      ready = _useAlign2[0],\n      offsetX = _useAlign2[1],\n      offsetY = _useAlign2[2],\n      offsetR = _useAlign2[3],\n      offsetB = _useAlign2[4],\n      arrowX = _useAlign2[5],\n      arrowY = _useAlign2[6],\n      scaleX = _useAlign2[7],\n      scaleY = _useAlign2[8],\n      alignInfo = _useAlign2[9],\n      onAlign = _useAlign2[10];\n    var _useAction = useAction(mobile, action, showAction, hideAction),\n      _useAction2 = _slicedToArray(_useAction, 2),\n      showActions = _useAction2[0],\n      hideActions = _useAction2[1];\n    var clickToShow = showActions.has('click');\n    var clickToHide = hideActions.has('click') || hideActions.has('contextMenu');\n    var triggerAlign = useEvent(function () {\n      if (!inMotion) {\n        onAlign();\n      }\n    });\n    var onScroll = function onScroll() {\n      if (openRef.current && alignPoint && clickToHide) {\n        triggerOpen(false);\n      }\n    };\n    useWatch(mergedOpen, targetEle, popupEle, triggerAlign, onScroll);\n    useLayoutEffect(function () {\n      triggerAlign();\n    }, [mousePos, popupPlacement]);\n\n    // When no builtinPlacements and popupAlign changed\n    useLayoutEffect(function () {\n      if (mergedOpen && !(builtinPlacements !== null && builtinPlacements !== void 0 && builtinPlacements[popupPlacement])) {\n        triggerAlign();\n      }\n    }, [JSON.stringify(popupAlign)]);\n    var alignedClassName = React.useMemo(function () {\n      var baseClassName = getAlignPopupClassName(builtinPlacements, prefixCls, alignInfo, alignPoint);\n      return classNames(baseClassName, getPopupClassNameFromAlign === null || getPopupClassNameFromAlign === void 0 ? void 0 : getPopupClassNameFromAlign(alignInfo));\n    }, [alignInfo, getPopupClassNameFromAlign, builtinPlacements, prefixCls, alignPoint]);\n\n    // ============================ Refs ============================\n    React.useImperativeHandle(ref, function () {\n      return {\n        nativeElement: externalForwardRef.current,\n        popupElement: externalPopupRef.current,\n        forceAlign: triggerAlign\n      };\n    });\n\n    // ========================== Stretch ===========================\n    var _React$useState15 = React.useState(0),\n      _React$useState16 = _slicedToArray(_React$useState15, 2),\n      targetWidth = _React$useState16[0],\n      setTargetWidth = _React$useState16[1];\n    var _React$useState17 = React.useState(0),\n      _React$useState18 = _slicedToArray(_React$useState17, 2),\n      targetHeight = _React$useState18[0],\n      setTargetHeight = _React$useState18[1];\n    var syncTargetSize = function syncTargetSize() {\n      if (stretch && targetEle) {\n        var rect = targetEle.getBoundingClientRect();\n        setTargetWidth(rect.width);\n        setTargetHeight(rect.height);\n      }\n    };\n    var onTargetResize = function onTargetResize() {\n      syncTargetSize();\n      triggerAlign();\n    };\n\n    // ========================== Motion ============================\n    var onVisibleChanged = function onVisibleChanged(visible) {\n      setInMotion(false);\n      onAlign();\n      afterPopupVisibleChange === null || afterPopupVisibleChange === void 0 || afterPopupVisibleChange(visible);\n    };\n\n    // We will trigger align when motion is in prepare\n    var onPrepare = function onPrepare() {\n      return new Promise(function (resolve) {\n        syncTargetSize();\n        setMotionPrepareResolve(function () {\n          return resolve;\n        });\n      });\n    };\n    useLayoutEffect(function () {\n      if (motionPrepareResolve) {\n        onAlign();\n        motionPrepareResolve();\n        setMotionPrepareResolve(null);\n      }\n    }, [motionPrepareResolve]);\n\n    // =========================== Action ===========================\n    /**\n     * Util wrapper for trigger action\n     */\n    function wrapperAction(eventName, nextOpen, delay, preEvent) {\n      cloneProps[eventName] = function (event) {\n        var _originChildProps$eve;\n        preEvent === null || preEvent === void 0 || preEvent(event);\n        triggerOpen(nextOpen, delay);\n\n        // Pass to origin\n        for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n          args[_key - 1] = arguments[_key];\n        }\n        (_originChildProps$eve = originChildProps[eventName]) === null || _originChildProps$eve === void 0 || _originChildProps$eve.call.apply(_originChildProps$eve, [originChildProps, event].concat(args));\n      };\n    }\n\n    // ======================= Action: Click ========================\n    if (clickToShow || clickToHide) {\n      cloneProps.onClick = function (event) {\n        var _originChildProps$onC;\n        if (openRef.current && clickToHide) {\n          triggerOpen(false);\n        } else if (!openRef.current && clickToShow) {\n          setMousePosByEvent(event);\n          triggerOpen(true);\n        }\n\n        // Pass to origin\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        (_originChildProps$onC = originChildProps.onClick) === null || _originChildProps$onC === void 0 || _originChildProps$onC.call.apply(_originChildProps$onC, [originChildProps, event].concat(args));\n      };\n    }\n\n    // Click to hide is special action since click popup element should not hide\n    var onPopupPointerDown = useWinClick(mergedOpen, clickToHide, targetEle, popupEle, mask, maskClosable, inPopupOrChild, triggerOpen);\n\n    // ======================= Action: Hover ========================\n    var hoverToShow = showActions.has('hover');\n    var hoverToHide = hideActions.has('hover');\n    var onPopupMouseEnter;\n    var onPopupMouseLeave;\n    if (hoverToShow) {\n      // Compatible with old browser which not support pointer event\n      wrapperAction('onMouseEnter', true, mouseEnterDelay, function (event) {\n        setMousePosByEvent(event);\n      });\n      wrapperAction('onPointerEnter', true, mouseEnterDelay, function (event) {\n        setMousePosByEvent(event);\n      });\n      onPopupMouseEnter = function onPopupMouseEnter(event) {\n        // Only trigger re-open when popup is visible\n        if ((mergedOpen || inMotion) && popupEle !== null && popupEle !== void 0 && popupEle.contains(event.target)) {\n          triggerOpen(true, mouseEnterDelay);\n        }\n      };\n\n      // Align Point\n      if (alignPoint) {\n        cloneProps.onMouseMove = function (event) {\n          var _originChildProps$onM;\n          // setMousePosByEvent(event);\n          (_originChildProps$onM = originChildProps.onMouseMove) === null || _originChildProps$onM === void 0 || _originChildProps$onM.call(originChildProps, event);\n        };\n      }\n    }\n    if (hoverToHide) {\n      wrapperAction('onMouseLeave', false, mouseLeaveDelay);\n      wrapperAction('onPointerLeave', false, mouseLeaveDelay);\n      onPopupMouseLeave = function onPopupMouseLeave() {\n        triggerOpen(false, mouseLeaveDelay);\n      };\n    }\n\n    // ======================= Action: Focus ========================\n    if (showActions.has('focus')) {\n      wrapperAction('onFocus', true, focusDelay);\n    }\n    if (hideActions.has('focus')) {\n      wrapperAction('onBlur', false, blurDelay);\n    }\n\n    // ==================== Action: ContextMenu =====================\n    if (showActions.has('contextMenu')) {\n      cloneProps.onContextMenu = function (event) {\n        var _originChildProps$onC2;\n        if (openRef.current && hideActions.has('contextMenu')) {\n          triggerOpen(false);\n        } else {\n          setMousePosByEvent(event);\n          triggerOpen(true);\n        }\n        event.preventDefault();\n\n        // Pass to origin\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        (_originChildProps$onC2 = originChildProps.onContextMenu) === null || _originChildProps$onC2 === void 0 || _originChildProps$onC2.call.apply(_originChildProps$onC2, [originChildProps, event].concat(args));\n      };\n    }\n\n    // ========================= ClassName ==========================\n    if (className) {\n      cloneProps.className = classNames(originChildProps.className, className);\n    }\n\n    // =========================== Render ===========================\n    var mergedChildrenProps = _objectSpread(_objectSpread({}, originChildProps), cloneProps);\n\n    // Pass props into cloneProps for nest usage\n    var passedProps = {};\n    var passedEventList = ['onContextMenu', 'onClick', 'onMouseDown', 'onTouchStart', 'onMouseEnter', 'onMouseLeave', 'onFocus', 'onBlur'];\n    passedEventList.forEach(function (eventName) {\n      if (restProps[eventName]) {\n        passedProps[eventName] = function () {\n          var _mergedChildrenProps$;\n          for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n            args[_key4] = arguments[_key4];\n          }\n          (_mergedChildrenProps$ = mergedChildrenProps[eventName]) === null || _mergedChildrenProps$ === void 0 || _mergedChildrenProps$.call.apply(_mergedChildrenProps$, [mergedChildrenProps].concat(args));\n          restProps[eventName].apply(restProps, args);\n        };\n      }\n    });\n\n    // Child Node\n    var triggerNode = /*#__PURE__*/React.cloneElement(child, _objectSpread(_objectSpread({}, mergedChildrenProps), passedProps));\n    var arrowPos = {\n      x: arrowX,\n      y: arrowY\n    };\n    var innerArrow = arrow ? _objectSpread({}, arrow !== true ? arrow : {}) : null;\n\n    // Render\n    return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ResizeObserver, {\n      disabled: !mergedOpen,\n      ref: setTargetRef,\n      onResize: onTargetResize\n    }, /*#__PURE__*/React.createElement(TriggerWrapper, {\n      getTriggerDOMNode: getTriggerDOMNode\n    }, triggerNode)), /*#__PURE__*/React.createElement(TriggerContext.Provider, {\n      value: context\n    }, /*#__PURE__*/React.createElement(Popup, {\n      portal: PortalComponent,\n      ref: setPopupRef,\n      prefixCls: prefixCls,\n      popup: popup,\n      className: classNames(popupClassName, alignedClassName),\n      style: popupStyle,\n      target: targetEle,\n      onMouseEnter: onPopupMouseEnter,\n      onMouseLeave: onPopupMouseLeave\n      // https://github.com/ant-design/ant-design/issues/43924\n      ,\n      onPointerEnter: onPopupMouseEnter,\n      zIndex: zIndex\n      // Open\n      ,\n      open: mergedOpen,\n      keepDom: inMotion,\n      fresh: fresh\n      // Click\n      ,\n      onClick: onPopupClick,\n      onPointerDownCapture: onPopupPointerDown\n      // Mask\n      ,\n      mask: mask\n      // Motion\n      ,\n      motion: mergePopupMotion,\n      maskMotion: mergeMaskMotion,\n      onVisibleChanged: onVisibleChanged,\n      onPrepare: onPrepare\n      // Portal\n      ,\n      forceRender: forceRender,\n      autoDestroy: mergedAutoDestroy,\n      getPopupContainer: getPopupContainer\n      // Arrow\n      ,\n      align: alignInfo,\n      arrow: innerArrow,\n      arrowPos: arrowPos\n      // Align\n      ,\n      ready: ready,\n      offsetX: offsetX,\n      offsetY: offsetY,\n      offsetR: offsetR,\n      offsetB: offsetB,\n      onAlign: triggerAlign\n      // Stretch\n      ,\n      stretch: stretch,\n      targetWidth: targetWidth / scaleX,\n      targetHeight: targetHeight / scaleY\n    })));\n  });\n  if (process.env.NODE_ENV !== 'production') {\n    Trigger.displayName = 'Trigger';\n  }\n  return Trigger;\n}\nexport default generateTrigger(Portal);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"disabled\", \"visible\", \"children\", \"popupElement\", \"animation\", \"transitionName\", \"dropdownStyle\", \"dropdownClassName\", \"direction\", \"placement\", \"builtinPlacements\", \"dropdownMatchSelectWidth\", \"dropdownRender\", \"dropdownAlign\", \"getPopupContainer\", \"empty\", \"getTriggerDOMNode\", \"onPopupVisibleChange\", \"onPopupMouseEnter\"];\nimport Trigger from '@rc-component/trigger';\nimport classNames from 'classnames';\nimport * as React from 'react';\nvar getBuiltInPlacements = function getBuiltInPlacements(dropdownMatchSelectWidth) {\n  // Enable horizontal overflow auto-adjustment when a custom dropdown width is provided\n  var adjustX = dropdownMatchSelectWidth === true ? 0 : 1;\n  return {\n    bottomLeft: {\n      points: ['tl', 'bl'],\n      offset: [0, 4],\n      overflow: {\n        adjustX: adjustX,\n        adjustY: 1\n      },\n      htmlRegion: 'scroll'\n    },\n    bottomRight: {\n      points: ['tr', 'br'],\n      offset: [0, 4],\n      overflow: {\n        adjustX: adjustX,\n        adjustY: 1\n      },\n      htmlRegion: 'scroll'\n    },\n    topLeft: {\n      points: ['bl', 'tl'],\n      offset: [0, -4],\n      overflow: {\n        adjustX: adjustX,\n        adjustY: 1\n      },\n      htmlRegion: 'scroll'\n    },\n    topRight: {\n      points: ['br', 'tr'],\n      offset: [0, -4],\n      overflow: {\n        adjustX: adjustX,\n        adjustY: 1\n      },\n      htmlRegion: 'scroll'\n    }\n  };\n};\nvar SelectTrigger = function SelectTrigger(props, ref) {\n  var prefixCls = props.prefixCls,\n    disabled = props.disabled,\n    visible = props.visible,\n    children = props.children,\n    popupElement = props.popupElement,\n    animation = props.animation,\n    transitionName = props.transitionName,\n    dropdownStyle = props.dropdownStyle,\n    dropdownClassName = props.dropdownClassName,\n    _props$direction = props.direction,\n    direction = _props$direction === void 0 ? 'ltr' : _props$direction,\n    placement = props.placement,\n    builtinPlacements = props.builtinPlacements,\n    dropdownMatchSelectWidth = props.dropdownMatchSelectWidth,\n    dropdownRender = props.dropdownRender,\n    dropdownAlign = props.dropdownAlign,\n    getPopupContainer = props.getPopupContainer,\n    empty = props.empty,\n    getTriggerDOMNode = props.getTriggerDOMNode,\n    onPopupVisibleChange = props.onPopupVisibleChange,\n    onPopupMouseEnter = props.onPopupMouseEnter,\n    restProps = _objectWithoutProperties(props, _excluded);\n  var dropdownPrefixCls = \"\".concat(prefixCls, \"-dropdown\");\n  var popupNode = popupElement;\n  if (dropdownRender) {\n    popupNode = dropdownRender(popupElement);\n  }\n  var mergedBuiltinPlacements = React.useMemo(function () {\n    return builtinPlacements || getBuiltInPlacements(dropdownMatchSelectWidth);\n  }, [builtinPlacements, dropdownMatchSelectWidth]);\n\n  // ===================== Motion ======================\n  var mergedTransitionName = animation ? \"\".concat(dropdownPrefixCls, \"-\").concat(animation) : transitionName;\n\n  // =================== Popup Width ===================\n  var isNumberPopupWidth = typeof dropdownMatchSelectWidth === 'number';\n  var stretch = React.useMemo(function () {\n    if (isNumberPopupWidth) {\n      return null;\n    }\n    return dropdownMatchSelectWidth === false ? 'minWidth' : 'width';\n  }, [dropdownMatchSelectWidth, isNumberPopupWidth]);\n  var popupStyle = dropdownStyle;\n  if (isNumberPopupWidth) {\n    popupStyle = _objectSpread(_objectSpread({}, popupStyle), {}, {\n      width: dropdownMatchSelectWidth\n    });\n  }\n\n  // ======================= Ref =======================\n  var triggerPopupRef = React.useRef(null);\n  React.useImperativeHandle(ref, function () {\n    return {\n      getPopupElement: function getPopupElement() {\n        var _triggerPopupRef$curr;\n        return (_triggerPopupRef$curr = triggerPopupRef.current) === null || _triggerPopupRef$curr === void 0 ? void 0 : _triggerPopupRef$curr.popupElement;\n      }\n    };\n  });\n  return /*#__PURE__*/React.createElement(Trigger, _extends({}, restProps, {\n    showAction: onPopupVisibleChange ? ['click'] : [],\n    hideAction: onPopupVisibleChange ? ['click'] : [],\n    popupPlacement: placement || (direction === 'rtl' ? 'bottomRight' : 'bottomLeft'),\n    builtinPlacements: mergedBuiltinPlacements,\n    prefixCls: dropdownPrefixCls,\n    popupTransitionName: mergedTransitionName,\n    popup: /*#__PURE__*/React.createElement(\"div\", {\n      onMouseEnter: onPopupMouseEnter\n    }, popupNode),\n    ref: triggerPopupRef,\n    stretch: stretch,\n    popupAlign: dropdownAlign,\n    popupVisible: visible,\n    getPopupContainer: getPopupContainer,\n    popupClassName: classNames(dropdownClassName, _defineProperty({}, \"\".concat(dropdownPrefixCls, \"-empty\"), empty)),\n    popupStyle: popupStyle,\n    getTriggerDOMNode: getTriggerDOMNode,\n    onPopupVisibleChange: onPopupVisibleChange\n  }), children);\n};\nvar RefSelectTrigger = /*#__PURE__*/React.forwardRef(SelectTrigger);\nif (process.env.NODE_ENV !== 'production') {\n  RefSelectTrigger.displayName = 'SelectTrigger';\n}\nexport default RefSelectTrigger;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _toArray from \"@babel/runtime/helpers/esm/toArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport warning from \"rc-util/es/warning\";\nfunction getKey(data, index) {\n  var key = data.key;\n  var value;\n  if ('value' in data) {\n    value = data.value;\n  }\n  if (key !== null && key !== undefined) {\n    return key;\n  }\n  if (value !== undefined) {\n    return value;\n  }\n  return \"rc-index-key-\".concat(index);\n}\nexport function isValidCount(value) {\n  return typeof value !== 'undefined' && !Number.isNaN(value);\n}\nexport function fillFieldNames(fieldNames, childrenAsData) {\n  var _ref = fieldNames || {},\n    label = _ref.label,\n    value = _ref.value,\n    options = _ref.options,\n    groupLabel = _ref.groupLabel;\n  var mergedLabel = label || (childrenAsData ? 'children' : 'label');\n  return {\n    label: mergedLabel,\n    value: value || 'value',\n    options: options || 'options',\n    groupLabel: groupLabel || mergedLabel\n  };\n}\n\n/**\n * Flat options into flatten list.\n * We use `optionOnly` here is aim to avoid user use nested option group.\n * Here is simply set `key` to the index if not provided.\n */\nexport function flattenOptions(options) {\n  var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n    fieldNames = _ref2.fieldNames,\n    childrenAsData = _ref2.childrenAsData;\n  var flattenList = [];\n  var _fillFieldNames = fillFieldNames(fieldNames, false),\n    fieldLabel = _fillFieldNames.label,\n    fieldValue = _fillFieldNames.value,\n    fieldOptions = _fillFieldNames.options,\n    groupLabel = _fillFieldNames.groupLabel;\n  function dig(list, isGroupOption) {\n    if (!Array.isArray(list)) {\n      return;\n    }\n    list.forEach(function (data) {\n      if (isGroupOption || !(fieldOptions in data)) {\n        var value = data[fieldValue];\n\n        // Option\n        flattenList.push({\n          key: getKey(data, flattenList.length),\n          groupOption: isGroupOption,\n          data: data,\n          label: data[fieldLabel],\n          value: value\n        });\n      } else {\n        var grpLabel = data[groupLabel];\n        if (grpLabel === undefined && childrenAsData) {\n          grpLabel = data.label;\n        }\n\n        // Option Group\n        flattenList.push({\n          key: getKey(data, flattenList.length),\n          group: true,\n          data: data,\n          label: grpLabel\n        });\n        dig(data[fieldOptions], true);\n      }\n    });\n  }\n  dig(options, false);\n  return flattenList;\n}\n\n/**\n * Inject `props` into `option` for legacy usage\n */\nexport function injectPropsWithOption(option) {\n  var newOption = _objectSpread({}, option);\n  if (!('props' in newOption)) {\n    Object.defineProperty(newOption, 'props', {\n      get: function get() {\n        warning(false, 'Return type is option instead of Option instance. Please read value directly instead of reading from `props`.');\n        return newOption;\n      }\n    });\n  }\n  return newOption;\n}\nexport var getSeparatedContent = function getSeparatedContent(text, tokens, end) {\n  if (!tokens || !tokens.length) {\n    return null;\n  }\n  var match = false;\n  var separate = function separate(str, _ref3) {\n    var _ref4 = _toArray(_ref3),\n      token = _ref4[0],\n      restTokens = _ref4.slice(1);\n    if (!token) {\n      return [str];\n    }\n    var list = str.split(token);\n    match = match || list.length > 1;\n    return list.reduce(function (prevList, unitStr) {\n      return [].concat(_toConsumableArray(prevList), _toConsumableArray(separate(unitStr, restTokens)));\n    }, []).filter(Boolean);\n  };\n  var list = separate(text, tokens);\n  if (match) {\n    return typeof end !== 'undefined' ? list.slice(0, end) : list;\n  } else {\n    return null;\n  }\n};","import * as React from 'react';\n\n// Use any here since we do not get the type during compilation\n\nvar SelectContext = /*#__PURE__*/React.createContext(null);\nexport default SelectContext;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport * as React from 'react';\nexport default function Polite(props) {\n  var visible = props.visible,\n    values = props.values;\n  if (!visible) {\n    return null;\n  }\n\n  // Only cut part of values since it's a screen reader\n  var MAX_COUNT = 50;\n  return /*#__PURE__*/React.createElement(\"span\", {\n    \"aria-live\": \"polite\",\n    style: {\n      width: 0,\n      height: 0,\n      position: 'absolute',\n      overflow: 'hidden',\n      opacity: 0\n    }\n  }, \"\".concat(values.slice(0, MAX_COUNT).map(function (_ref) {\n    var label = _ref.label,\n      value = _ref.value;\n    return ['number', 'string'].includes(_typeof(label)) ? label : value;\n  }).join(', ')), values.length > MAX_COUNT ? ', ...' : null);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"id\", \"prefixCls\", \"className\", \"showSearch\", \"tagRender\", \"direction\", \"omitDomProps\", \"displayValues\", \"onDisplayValuesChange\", \"emptyOptions\", \"notFoundContent\", \"onClear\", \"mode\", \"disabled\", \"loading\", \"getInputElement\", \"getRawInputElement\", \"open\", \"defaultOpen\", \"onDropdownVisibleChange\", \"activeValue\", \"onActiveValueChange\", \"activeDescendantId\", \"searchValue\", \"autoClearSearchValue\", \"onSearch\", \"onSearchSplit\", \"tokenSeparators\", \"allowClear\", \"prefix\", \"suffixIcon\", \"clearIcon\", \"OptionList\", \"animation\", \"transitionName\", \"dropdownStyle\", \"dropdownClassName\", \"dropdownMatchSelectWidth\", \"dropdownRender\", \"dropdownAlign\", \"placement\", \"builtinPlacements\", \"getPopupContainer\", \"showAction\", \"onFocus\", \"onBlur\", \"onKeyUp\", \"onKeyDown\", \"onMouseDown\"];\nimport classNames from 'classnames';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport isMobile from \"rc-util/es/isMobile\";\nimport { useComposeRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport { useAllowClear } from \"../hooks/useAllowClear\";\nimport { BaseSelectContext } from \"../hooks/useBaseProps\";\nimport useDelayReset from \"../hooks/useDelayReset\";\nimport useLock from \"../hooks/useLock\";\nimport useSelectTriggerControl from \"../hooks/useSelectTriggerControl\";\nimport Selector from \"../Selector\";\nimport SelectTrigger from \"../SelectTrigger\";\nimport TransBtn from \"../TransBtn\";\nimport { getSeparatedContent, isValidCount } from \"../utils/valueUtil\";\nimport SelectContext from \"../SelectContext\";\nimport Polite from \"./Polite\";\nvar DEFAULT_OMIT_PROPS = ['value', 'onChange', 'removeIcon', 'placeholder', 'autoFocus', 'maxTagCount', 'maxTagTextLength', 'maxTagPlaceholder', 'choiceTransitionName', 'onInputKeyDown', 'onPopupScroll', 'tabIndex'];\nexport var isMultiple = function isMultiple(mode) {\n  return mode === 'tags' || mode === 'multiple';\n};\nvar BaseSelect = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var _customizeRawInputEle;\n  var id = props.id,\n    prefixCls = props.prefixCls,\n    className = props.className,\n    showSearch = props.showSearch,\n    tagRender = props.tagRender,\n    direction = props.direction,\n    omitDomProps = props.omitDomProps,\n    displayValues = props.displayValues,\n    onDisplayValuesChange = props.onDisplayValuesChange,\n    emptyOptions = props.emptyOptions,\n    _props$notFoundConten = props.notFoundContent,\n    notFoundContent = _props$notFoundConten === void 0 ? 'Not Found' : _props$notFoundConten,\n    onClear = props.onClear,\n    mode = props.mode,\n    disabled = props.disabled,\n    loading = props.loading,\n    getInputElement = props.getInputElement,\n    getRawInputElement = props.getRawInputElement,\n    open = props.open,\n    defaultOpen = props.defaultOpen,\n    onDropdownVisibleChange = props.onDropdownVisibleChange,\n    activeValue = props.activeValue,\n    onActiveValueChange = props.onActiveValueChange,\n    activeDescendantId = props.activeDescendantId,\n    searchValue = props.searchValue,\n    autoClearSearchValue = props.autoClearSearchValue,\n    onSearch = props.onSearch,\n    onSearchSplit = props.onSearchSplit,\n    tokenSeparators = props.tokenSeparators,\n    allowClear = props.allowClear,\n    prefix = props.prefix,\n    suffixIcon = props.suffixIcon,\n    clearIcon = props.clearIcon,\n    OptionList = props.OptionList,\n    animation = props.animation,\n    transitionName = props.transitionName,\n    dropdownStyle = props.dropdownStyle,\n    dropdownClassName = props.dropdownClassName,\n    dropdownMatchSelectWidth = props.dropdownMatchSelectWidth,\n    dropdownRender = props.dropdownRender,\n    dropdownAlign = props.dropdownAlign,\n    placement = props.placement,\n    builtinPlacements = props.builtinPlacements,\n    getPopupContainer = props.getPopupContainer,\n    _props$showAction = props.showAction,\n    showAction = _props$showAction === void 0 ? [] : _props$showAction,\n    onFocus = props.onFocus,\n    onBlur = props.onBlur,\n    onKeyUp = props.onKeyUp,\n    onKeyDown = props.onKeyDown,\n    onMouseDown = props.onMouseDown,\n    restProps = _objectWithoutProperties(props, _excluded);\n\n  // ============================== MISC ==============================\n  var multiple = isMultiple(mode);\n  var mergedShowSearch = (showSearch !== undefined ? showSearch : multiple) || mode === 'combobox';\n  var domProps = _objectSpread({}, restProps);\n  DEFAULT_OMIT_PROPS.forEach(function (propName) {\n    delete domProps[propName];\n  });\n  omitDomProps === null || omitDomProps === void 0 || omitDomProps.forEach(function (propName) {\n    delete domProps[propName];\n  });\n\n  // ============================= Mobile =============================\n  var _React$useState = React.useState(false),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    mobile = _React$useState2[0],\n    setMobile = _React$useState2[1];\n  React.useEffect(function () {\n    // Only update on the client side\n    setMobile(isMobile());\n  }, []);\n\n  // ============================== Refs ==============================\n  var containerRef = React.useRef(null);\n  var selectorDomRef = React.useRef(null);\n  var triggerRef = React.useRef(null);\n  var selectorRef = React.useRef(null);\n  var listRef = React.useRef(null);\n  var blurRef = React.useRef(false);\n\n  /** Used for component focused management */\n  var _useDelayReset = useDelayReset(),\n    _useDelayReset2 = _slicedToArray(_useDelayReset, 3),\n    mockFocused = _useDelayReset2[0],\n    setMockFocused = _useDelayReset2[1],\n    cancelSetMockFocused = _useDelayReset2[2];\n\n  // =========================== Imperative ===========================\n  React.useImperativeHandle(ref, function () {\n    var _selectorRef$current, _selectorRef$current2;\n    return {\n      focus: (_selectorRef$current = selectorRef.current) === null || _selectorRef$current === void 0 ? void 0 : _selectorRef$current.focus,\n      blur: (_selectorRef$current2 = selectorRef.current) === null || _selectorRef$current2 === void 0 ? void 0 : _selectorRef$current2.blur,\n      scrollTo: function scrollTo(arg) {\n        var _listRef$current;\n        return (_listRef$current = listRef.current) === null || _listRef$current === void 0 ? void 0 : _listRef$current.scrollTo(arg);\n      },\n      nativeElement: containerRef.current || selectorDomRef.current\n    };\n  });\n\n  // ========================== Search Value ==========================\n  var mergedSearchValue = React.useMemo(function () {\n    var _displayValues$;\n    if (mode !== 'combobox') {\n      return searchValue;\n    }\n    var val = (_displayValues$ = displayValues[0]) === null || _displayValues$ === void 0 ? void 0 : _displayValues$.value;\n    return typeof val === 'string' || typeof val === 'number' ? String(val) : '';\n  }, [searchValue, mode, displayValues]);\n\n  // ========================== Custom Input ==========================\n  // Only works in `combobox`\n  var customizeInputElement = mode === 'combobox' && typeof getInputElement === 'function' && getInputElement() || null;\n\n  // Used for customize replacement for `rc-cascader`\n  var customizeRawInputElement = typeof getRawInputElement === 'function' && getRawInputElement();\n  var customizeRawInputRef = useComposeRef(selectorDomRef, customizeRawInputElement === null || customizeRawInputElement === void 0 || (_customizeRawInputEle = customizeRawInputElement.props) === null || _customizeRawInputEle === void 0 ? void 0 : _customizeRawInputEle.ref);\n\n  // ============================== Open ==============================\n  // SSR not support Portal which means we need delay `open` for the first time render\n  var _React$useState3 = React.useState(false),\n    _React$useState4 = _slicedToArray(_React$useState3, 2),\n    rendered = _React$useState4[0],\n    setRendered = _React$useState4[1];\n  useLayoutEffect(function () {\n    setRendered(true);\n  }, []);\n  var _useMergedState = useMergedState(false, {\n      defaultValue: defaultOpen,\n      value: open\n    }),\n    _useMergedState2 = _slicedToArray(_useMergedState, 2),\n    innerOpen = _useMergedState2[0],\n    setInnerOpen = _useMergedState2[1];\n  var mergedOpen = rendered ? innerOpen : false;\n\n  // Not trigger `open` in `combobox` when `notFoundContent` is empty\n  var emptyListContent = !notFoundContent && emptyOptions;\n  if (disabled || emptyListContent && mergedOpen && mode === 'combobox') {\n    mergedOpen = false;\n  }\n  var triggerOpen = emptyListContent ? false : mergedOpen;\n  var onToggleOpen = React.useCallback(function (newOpen) {\n    var nextOpen = newOpen !== undefined ? newOpen : !mergedOpen;\n    if (!disabled) {\n      setInnerOpen(nextOpen);\n      if (mergedOpen !== nextOpen) {\n        onDropdownVisibleChange === null || onDropdownVisibleChange === void 0 || onDropdownVisibleChange(nextOpen);\n      }\n    }\n  }, [disabled, mergedOpen, setInnerOpen, onDropdownVisibleChange]);\n\n  // ============================= Search =============================\n  var tokenWithEnter = React.useMemo(function () {\n    return (tokenSeparators || []).some(function (tokenSeparator) {\n      return ['\\n', '\\r\\n'].includes(tokenSeparator);\n    });\n  }, [tokenSeparators]);\n  var _ref = React.useContext(SelectContext) || {},\n    maxCount = _ref.maxCount,\n    rawValues = _ref.rawValues;\n  var onInternalSearch = function onInternalSearch(searchText, fromTyping, isCompositing) {\n    if (multiple && isValidCount(maxCount) && (rawValues === null || rawValues === void 0 ? void 0 : rawValues.size) >= maxCount) {\n      return;\n    }\n    var ret = true;\n    var newSearchText = searchText;\n    onActiveValueChange === null || onActiveValueChange === void 0 || onActiveValueChange(null);\n    var separatedList = getSeparatedContent(searchText, tokenSeparators, isValidCount(maxCount) ? maxCount - rawValues.size : undefined);\n\n    // Check if match the `tokenSeparators`\n    var patchLabels = isCompositing ? null : separatedList;\n\n    // Ignore combobox since it's not split-able\n    if (mode !== 'combobox' && patchLabels) {\n      newSearchText = '';\n      onSearchSplit === null || onSearchSplit === void 0 || onSearchSplit(patchLabels);\n\n      // Should close when paste finish\n      onToggleOpen(false);\n\n      // Tell Selector that break next actions\n      ret = false;\n    }\n    if (onSearch && mergedSearchValue !== newSearchText) {\n      onSearch(newSearchText, {\n        source: fromTyping ? 'typing' : 'effect'\n      });\n    }\n    return ret;\n  };\n\n  // Only triggered when menu is closed & mode is tags\n  // If menu is open, OptionList will take charge\n  // If mode isn't tags, press enter is not meaningful when you can't see any option\n  var onInternalSearchSubmit = function onInternalSearchSubmit(searchText) {\n    // prevent empty tags from appearing when you click the Enter button\n    if (!searchText || !searchText.trim()) {\n      return;\n    }\n    onSearch(searchText, {\n      source: 'submit'\n    });\n  };\n\n  // Close will clean up single mode search text\n  React.useEffect(function () {\n    if (!mergedOpen && !multiple && mode !== 'combobox') {\n      onInternalSearch('', false, false);\n    }\n  }, [mergedOpen]);\n\n  // ============================ Disabled ============================\n  // Close dropdown & remove focus state when disabled change\n  React.useEffect(function () {\n    if (innerOpen && disabled) {\n      setInnerOpen(false);\n    }\n\n    // After onBlur is triggered, the focused does not need to be reset\n    if (disabled && !blurRef.current) {\n      setMockFocused(false);\n    }\n  }, [disabled]);\n\n  // ============================ Keyboard ============================\n  /**\n   * We record input value here to check if can press to clean up by backspace\n   * - null: Key is not down, this is reset by key up\n   * - true: Search text is empty when first time backspace down\n   * - false: Search text is not empty when first time backspace down\n   */\n  var _useLock = useLock(),\n    _useLock2 = _slicedToArray(_useLock, 2),\n    getClearLock = _useLock2[0],\n    setClearLock = _useLock2[1];\n  var keyLockRef = React.useRef(false);\n\n  // KeyDown\n  var onInternalKeyDown = function onInternalKeyDown(event) {\n    var clearLock = getClearLock();\n    var key = event.key;\n    var isEnterKey = key === 'Enter';\n    if (isEnterKey) {\n      // Do not submit form when type in the input\n      if (mode !== 'combobox') {\n        event.preventDefault();\n      }\n\n      // We only manage open state here, close logic should handle by list component\n      if (!mergedOpen) {\n        onToggleOpen(true);\n      }\n    }\n    setClearLock(!!mergedSearchValue);\n\n    // Remove value by `backspace`\n    if (key === 'Backspace' && !clearLock && multiple && !mergedSearchValue && displayValues.length) {\n      var cloneDisplayValues = _toConsumableArray(displayValues);\n      var removedDisplayValue = null;\n      for (var i = cloneDisplayValues.length - 1; i >= 0; i -= 1) {\n        var current = cloneDisplayValues[i];\n        if (!current.disabled) {\n          cloneDisplayValues.splice(i, 1);\n          removedDisplayValue = current;\n          break;\n        }\n      }\n      if (removedDisplayValue) {\n        onDisplayValuesChange(cloneDisplayValues, {\n          type: 'remove',\n          values: [removedDisplayValue]\n        });\n      }\n    }\n    for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      rest[_key - 1] = arguments[_key];\n    }\n    if (mergedOpen && (!isEnterKey || !keyLockRef.current)) {\n      var _listRef$current2;\n      // Lock the Enter key after it is pressed to avoid repeated triggering of the onChange event.\n      if (isEnterKey) {\n        keyLockRef.current = true;\n      }\n      (_listRef$current2 = listRef.current) === null || _listRef$current2 === void 0 || _listRef$current2.onKeyDown.apply(_listRef$current2, [event].concat(rest));\n    }\n    onKeyDown === null || onKeyDown === void 0 || onKeyDown.apply(void 0, [event].concat(rest));\n  };\n\n  // KeyUp\n  var onInternalKeyUp = function onInternalKeyUp(event) {\n    for (var _len2 = arguments.length, rest = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n      rest[_key2 - 1] = arguments[_key2];\n    }\n    if (mergedOpen) {\n      var _listRef$current3;\n      (_listRef$current3 = listRef.current) === null || _listRef$current3 === void 0 || _listRef$current3.onKeyUp.apply(_listRef$current3, [event].concat(rest));\n    }\n    if (event.key === 'Enter') {\n      keyLockRef.current = false;\n    }\n    onKeyUp === null || onKeyUp === void 0 || onKeyUp.apply(void 0, [event].concat(rest));\n  };\n\n  // ============================ Selector ============================\n  var onSelectorRemove = function onSelectorRemove(val) {\n    var newValues = displayValues.filter(function (i) {\n      return i !== val;\n    });\n    onDisplayValuesChange(newValues, {\n      type: 'remove',\n      values: [val]\n    });\n  };\n  var onInputBlur = function onInputBlur() {\n    // Unlock the Enter key after the input blur; otherwise, the Enter key needs to be pressed twice to trigger the correct effect.\n    keyLockRef.current = false;\n  };\n\n  // ========================== Focus / Blur ==========================\n  /** Record real focus status */\n  var focusRef = React.useRef(false);\n  var onContainerFocus = function onContainerFocus() {\n    setMockFocused(true);\n    if (!disabled) {\n      if (onFocus && !focusRef.current) {\n        onFocus.apply(void 0, arguments);\n      }\n\n      // `showAction` should handle `focus` if set\n      if (showAction.includes('focus')) {\n        onToggleOpen(true);\n      }\n    }\n    focusRef.current = true;\n  };\n  var onContainerBlur = function onContainerBlur() {\n    blurRef.current = true;\n    setMockFocused(false, function () {\n      focusRef.current = false;\n      blurRef.current = false;\n      onToggleOpen(false);\n    });\n    if (disabled) {\n      return;\n    }\n    if (mergedSearchValue) {\n      // `tags` mode should move `searchValue` into values\n      if (mode === 'tags') {\n        onSearch(mergedSearchValue, {\n          source: 'submit'\n        });\n      } else if (mode === 'multiple') {\n        // `multiple` mode only clean the search value but not trigger event\n        onSearch('', {\n          source: 'blur'\n        });\n      }\n    }\n    if (onBlur) {\n      onBlur.apply(void 0, arguments);\n    }\n  };\n\n  // Give focus back of Select\n  var activeTimeoutIds = [];\n  React.useEffect(function () {\n    return function () {\n      activeTimeoutIds.forEach(function (timeoutId) {\n        return clearTimeout(timeoutId);\n      });\n      activeTimeoutIds.splice(0, activeTimeoutIds.length);\n    };\n  }, []);\n  var onInternalMouseDown = function onInternalMouseDown(event) {\n    var _triggerRef$current;\n    var target = event.target;\n    var popupElement = (_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : _triggerRef$current.getPopupElement();\n\n    // We should give focus back to selector if clicked item is not focusable\n    if (popupElement && popupElement.contains(target)) {\n      var timeoutId = setTimeout(function () {\n        var index = activeTimeoutIds.indexOf(timeoutId);\n        if (index !== -1) {\n          activeTimeoutIds.splice(index, 1);\n        }\n        cancelSetMockFocused();\n        if (!mobile && !popupElement.contains(document.activeElement)) {\n          var _selectorRef$current3;\n          (_selectorRef$current3 = selectorRef.current) === null || _selectorRef$current3 === void 0 || _selectorRef$current3.focus();\n        }\n      });\n      activeTimeoutIds.push(timeoutId);\n    }\n    for (var _len3 = arguments.length, restArgs = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n      restArgs[_key3 - 1] = arguments[_key3];\n    }\n    onMouseDown === null || onMouseDown === void 0 || onMouseDown.apply(void 0, [event].concat(restArgs));\n  };\n\n  // ============================ Dropdown ============================\n  var _React$useState5 = React.useState({}),\n    _React$useState6 = _slicedToArray(_React$useState5, 2),\n    forceUpdate = _React$useState6[1];\n  // We need force update here since popup dom is render async\n  function onPopupMouseEnter() {\n    forceUpdate({});\n  }\n\n  // Used for raw custom input trigger\n  var onTriggerVisibleChange;\n  if (customizeRawInputElement) {\n    onTriggerVisibleChange = function onTriggerVisibleChange(newOpen) {\n      onToggleOpen(newOpen);\n    };\n  }\n\n  // Close when click on non-select element\n  useSelectTriggerControl(function () {\n    var _triggerRef$current2;\n    return [containerRef.current, (_triggerRef$current2 = triggerRef.current) === null || _triggerRef$current2 === void 0 ? void 0 : _triggerRef$current2.getPopupElement()];\n  }, triggerOpen, onToggleOpen, !!customizeRawInputElement);\n\n  // ============================ Context =============================\n  var baseSelectContext = React.useMemo(function () {\n    return _objectSpread(_objectSpread({}, props), {}, {\n      notFoundContent: notFoundContent,\n      open: mergedOpen,\n      triggerOpen: triggerOpen,\n      id: id,\n      showSearch: mergedShowSearch,\n      multiple: multiple,\n      toggleOpen: onToggleOpen\n    });\n  }, [props, notFoundContent, triggerOpen, mergedOpen, id, mergedShowSearch, multiple, onToggleOpen]);\n\n  // ==================================================================\n  // ==                            Render                            ==\n  // ==================================================================\n\n  // ============================= Arrow ==============================\n  var showSuffixIcon = !!suffixIcon || loading;\n  var arrowNode;\n  if (showSuffixIcon) {\n    arrowNode = /*#__PURE__*/React.createElement(TransBtn, {\n      className: classNames(\"\".concat(prefixCls, \"-arrow\"), _defineProperty({}, \"\".concat(prefixCls, \"-arrow-loading\"), loading)),\n      customizeIcon: suffixIcon,\n      customizeIconProps: {\n        loading: loading,\n        searchValue: mergedSearchValue,\n        open: mergedOpen,\n        focused: mockFocused,\n        showSearch: mergedShowSearch\n      }\n    });\n  }\n\n  // ============================= Clear ==============================\n  var onClearMouseDown = function onClearMouseDown() {\n    var _selectorRef$current4;\n    onClear === null || onClear === void 0 || onClear();\n    (_selectorRef$current4 = selectorRef.current) === null || _selectorRef$current4 === void 0 || _selectorRef$current4.focus();\n    onDisplayValuesChange([], {\n      type: 'clear',\n      values: displayValues\n    });\n    onInternalSearch('', false, false);\n  };\n  var _useAllowClear = useAllowClear(prefixCls, onClearMouseDown, displayValues, allowClear, clearIcon, disabled, mergedSearchValue, mode),\n    mergedAllowClear = _useAllowClear.allowClear,\n    clearNode = _useAllowClear.clearIcon;\n\n  // =========================== OptionList ===========================\n  var optionList = /*#__PURE__*/React.createElement(OptionList, {\n    ref: listRef\n  });\n\n  // ============================= Select =============================\n  var mergedClassName = classNames(prefixCls, className, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, \"\".concat(prefixCls, \"-focused\"), mockFocused), \"\".concat(prefixCls, \"-multiple\"), multiple), \"\".concat(prefixCls, \"-single\"), !multiple), \"\".concat(prefixCls, \"-allow-clear\"), allowClear), \"\".concat(prefixCls, \"-show-arrow\"), showSuffixIcon), \"\".concat(prefixCls, \"-disabled\"), disabled), \"\".concat(prefixCls, \"-loading\"), loading), \"\".concat(prefixCls, \"-open\"), mergedOpen), \"\".concat(prefixCls, \"-customize-input\"), customizeInputElement), \"\".concat(prefixCls, \"-show-search\"), mergedShowSearch));\n\n  // >>> Selector\n  var selectorNode = /*#__PURE__*/React.createElement(SelectTrigger, {\n    ref: triggerRef,\n    disabled: disabled,\n    prefixCls: prefixCls,\n    visible: triggerOpen,\n    popupElement: optionList,\n    animation: animation,\n    transitionName: transitionName,\n    dropdownStyle: dropdownStyle,\n    dropdownClassName: dropdownClassName,\n    direction: direction,\n    dropdownMatchSelectWidth: dropdownMatchSelectWidth,\n    dropdownRender: dropdownRender,\n    dropdownAlign: dropdownAlign,\n    placement: placement,\n    builtinPlacements: builtinPlacements,\n    getPopupContainer: getPopupContainer,\n    empty: emptyOptions,\n    getTriggerDOMNode: function getTriggerDOMNode(node) {\n      return (\n        // TODO: This is workaround and should be removed in `rc-select`\n        // And use new standard `nativeElement` for ref.\n        // But we should update `rc-resize-observer` first.\n        selectorDomRef.current || node\n      );\n    },\n    onPopupVisibleChange: onTriggerVisibleChange,\n    onPopupMouseEnter: onPopupMouseEnter\n  }, customizeRawInputElement ? ( /*#__PURE__*/React.cloneElement(customizeRawInputElement, {\n    ref: customizeRawInputRef\n  })) : /*#__PURE__*/React.createElement(Selector, _extends({}, props, {\n    domRef: selectorDomRef,\n    prefixCls: prefixCls,\n    inputElement: customizeInputElement,\n    ref: selectorRef,\n    id: id,\n    prefix: prefix,\n    showSearch: mergedShowSearch,\n    autoClearSearchValue: autoClearSearchValue,\n    mode: mode,\n    activeDescendantId: activeDescendantId,\n    tagRender: tagRender,\n    values: displayValues,\n    open: mergedOpen,\n    onToggleOpen: onToggleOpen,\n    activeValue: activeValue,\n    searchValue: mergedSearchValue,\n    onSearch: onInternalSearch,\n    onSearchSubmit: onInternalSearchSubmit,\n    onRemove: onSelectorRemove,\n    tokenWithEnter: tokenWithEnter,\n    onInputBlur: onInputBlur\n  })));\n\n  // >>> Render\n  var renderNode;\n\n  // Render raw\n  if (customizeRawInputElement) {\n    renderNode = selectorNode;\n  } else {\n    renderNode = /*#__PURE__*/React.createElement(\"div\", _extends({\n      className: mergedClassName\n    }, domProps, {\n      ref: containerRef,\n      onMouseDown: onInternalMouseDown,\n      onKeyDown: onInternalKeyDown,\n      onKeyUp: onInternalKeyUp,\n      onFocus: onContainerFocus,\n      onBlur: onContainerBlur\n    }), /*#__PURE__*/React.createElement(Polite, {\n      visible: mockFocused && !mergedOpen,\n      values: displayValues\n    }), selectorNode, arrowNode, mergedAllowClear && clearNode);\n  }\n  return /*#__PURE__*/React.createElement(BaseSelectContext.Provider, {\n    value: baseSelectContext\n  }, renderNode);\n});\n\n// Set display name for dev\nif (process.env.NODE_ENV !== 'production') {\n  BaseSelect.displayName = 'BaseSelect';\n}\nexport default BaseSelect;","/* istanbul ignore file */\n\n/** This is a placeholder, not real render in dom */\nvar OptGroup = function OptGroup() {\n  return null;\n};\nOptGroup.isSelectOptGroup = true;\nexport default OptGroup;","/* istanbul ignore file */\n\n/** This is a placeholder, not real render in dom */\nvar Option = function Option() {\n  return null;\n};\nOption.isSelectOption = true;\nexport default Option;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport ResizeObserver from 'rc-resize-observer';\nimport classNames from 'classnames';\n/**\n * Fill component to provided the scroll content real height.\n */\nvar Filler = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var height = _ref.height,\n    offsetY = _ref.offsetY,\n    offsetX = _ref.offsetX,\n    children = _ref.children,\n    prefixCls = _ref.prefixCls,\n    onInnerResize = _ref.onInnerResize,\n    innerProps = _ref.innerProps,\n    rtl = _ref.rtl,\n    extra = _ref.extra;\n  var outerStyle = {};\n  var innerStyle = {\n    display: 'flex',\n    flexDirection: 'column'\n  };\n  if (offsetY !== undefined) {\n    // Not set `width` since this will break `sticky: right`\n    outerStyle = {\n      height: height,\n      position: 'relative',\n      overflow: 'hidden'\n    };\n    innerStyle = _objectSpread(_objectSpread({}, innerStyle), {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({\n      transform: \"translateY(\".concat(offsetY, \"px)\")\n    }, rtl ? 'marginRight' : 'marginLeft', -offsetX), \"position\", 'absolute'), \"left\", 0), \"right\", 0), \"top\", 0));\n  }\n  return /*#__PURE__*/React.createElement(\"div\", {\n    style: outerStyle\n  }, /*#__PURE__*/React.createElement(ResizeObserver, {\n    onResize: function onResize(_ref2) {\n      var offsetHeight = _ref2.offsetHeight;\n      if (offsetHeight && onInnerResize) {\n        onInnerResize();\n      }\n    }\n  }, /*#__PURE__*/React.createElement(\"div\", _extends({\n    style: innerStyle,\n    className: classNames(_defineProperty({}, \"\".concat(prefixCls, \"-holder-inner\"), prefixCls)),\n    ref: ref\n  }, innerProps), children, extra)));\n});\nFiller.displayName = 'Filler';\nexport default Filler;","import * as React from 'react';\nexport function Item(_ref) {\n  var children = _ref.children,\n    setRef = _ref.setRef;\n  var refFunc = React.useCallback(function (node) {\n    setRef(node);\n  }, []);\n  return /*#__PURE__*/React.cloneElement(children, {\n    ref: refFunc\n  });\n}","import * as React from 'react';\nimport { Item } from \"../Item\";\nexport default function useChildren(list, startIndex, endIndex, scrollWidth, offsetX, setNodeRef, renderFunc, _ref) {\n  var getKey = _ref.getKey;\n  return list.slice(startIndex, endIndex + 1).map(function (item, index) {\n    var eleIndex = startIndex + index;\n    var node = renderFunc(item, eleIndex, {\n      style: {\n        width: scrollWidth\n      },\n      offsetX: offsetX\n    });\n    var key = getKey(item);\n    return /*#__PURE__*/React.createElement(Item, {\n      key: key,\n      setRef: function setRef(ele) {\n        return setNodeRef(item, ele);\n      }\n    }, node);\n  });\n}","/**\n * Get index with specific start index one by one. e.g.\n * min: 3, max: 9, start: 6\n *\n * Return index is:\n * [0]: 6\n * [1]: 7\n * [2]: 5\n * [3]: 8\n * [4]: 4\n * [5]: 9\n * [6]: 3\n */\nexport function getIndexByStartLoc(min, max, start, index) {\n  var beforeCount = start - min;\n  var afterCount = max - start;\n  var balanceCount = Math.min(beforeCount, afterCount) * 2;\n\n  // Balance\n  if (index <= balanceCount) {\n    var stepIndex = Math.floor(index / 2);\n    if (index % 2) {\n      return start + stepIndex + 1;\n    }\n    return start - stepIndex;\n  }\n\n  // One is out of range\n  if (beforeCount > afterCount) {\n    return start - (index - afterCount);\n  }\n  return start + (index - beforeCount);\n}\n\n/**\n * We assume that 2 list has only 1 item diff and others keeping the order.\n * So we can use dichotomy algorithm to find changed one.\n */\nexport function findListDiffIndex(originList, targetList, getKey) {\n  var originLen = originList.length;\n  var targetLen = targetList.length;\n  var shortList;\n  var longList;\n  if (originLen === 0 && targetLen === 0) {\n    return null;\n  }\n  if (originLen < targetLen) {\n    shortList = originList;\n    longList = targetList;\n  } else {\n    shortList = targetList;\n    longList = originList;\n  }\n  var notExistKey = {\n    __EMPTY_ITEM__: true\n  };\n  function getItemKey(item) {\n    if (item !== undefined) {\n      return getKey(item);\n    }\n    return notExistKey;\n  }\n\n  // Loop to find diff one\n  var diffIndex = null;\n  var multiple = Math.abs(originLen - targetLen) !== 1;\n  for (var i = 0; i < longList.length; i += 1) {\n    var shortKey = getItemKey(shortList[i]);\n    var longKey = getItemKey(longList[i]);\n    if (shortKey !== longKey) {\n      diffIndex = i;\n      multiple = multiple || shortKey !== getItemKey(longList[i + 1]);\n      break;\n    }\n  }\n  return diffIndex === null ? null : {\n    index: diffIndex,\n    multiple: multiple\n  };\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { findListDiffIndex } from \"../utils/algorithmUtil\";\nexport default function useDiffItem(data, getKey, onDiff) {\n  var _React$useState = React.useState(data),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    prevData = _React$useState2[0],\n    setPrevData = _React$useState2[1];\n  var _React$useState3 = React.useState(null),\n    _React$useState4 = _slicedToArray(_React$useState3, 2),\n    diffItem = _React$useState4[0],\n    setDiffItem = _React$useState4[1];\n  React.useEffect(function () {\n    var diff = findListDiffIndex(prevData || [], data || [], getKey);\n    if ((diff === null || diff === void 0 ? void 0 : diff.index) !== undefined) {\n      onDiff === null || onDiff === void 0 || onDiff(diff.index);\n      setDiffItem(data[diff.index]);\n    }\n    setPrevData(data);\n  }, [data]);\n  return [diffItem];\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar isFF = (typeof navigator === \"undefined\" ? \"undefined\" : _typeof(navigator)) === 'object' && /Firefox/i.test(navigator.userAgent);\nexport default isFF;","import { useRef } from 'react';\nexport default (function (isScrollAtTop, isScrollAtBottom, isScrollAtLeft, isScrollAtRight) {\n  // Do lock for a wheel when scrolling\n  var lockRef = useRef(false);\n  var lockTimeoutRef = useRef(null);\n  function lockScroll() {\n    clearTimeout(lockTimeoutRef.current);\n    lockRef.current = true;\n    lockTimeoutRef.current = setTimeout(function () {\n      lockRef.current = false;\n    }, 50);\n  }\n\n  // Pass to ref since global add is in closure\n  var scrollPingRef = useRef({\n    top: isScrollAtTop,\n    bottom: isScrollAtBottom,\n    left: isScrollAtLeft,\n    right: isScrollAtRight\n  });\n  scrollPingRef.current.top = isScrollAtTop;\n  scrollPingRef.current.bottom = isScrollAtBottom;\n  scrollPingRef.current.left = isScrollAtLeft;\n  scrollPingRef.current.right = isScrollAtRight;\n  return function (isHorizontal, delta) {\n    var smoothOffset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n    var originScroll = isHorizontal ?\n    // Pass origin wheel when on the left\n    delta < 0 && scrollPingRef.current.left ||\n    // Pass origin wheel when on the right\n    delta > 0 && scrollPingRef.current.right // Pass origin wheel when on the top\n    : delta < 0 && scrollPingRef.current.top ||\n    // Pass origin wheel when on the bottom\n    delta > 0 && scrollPingRef.current.bottom;\n    if (smoothOffset && originScroll) {\n      // No need lock anymore when it's smooth offset from touchMove interval\n      clearTimeout(lockTimeoutRef.current);\n      lockRef.current = false;\n    } else if (!originScroll || lockRef.current) {\n      lockScroll();\n    }\n    return !lockRef.current && originScroll;\n  };\n});","import raf from \"rc-util/es/raf\";\nimport { useRef } from 'react';\nimport isFF from \"../utils/isFirefox\";\nimport useOriginScroll from \"./useOriginScroll\";\nexport default function useFrameWheel(inVirtual, isScrollAtTop, isScrollAtBottom, isScrollAtLeft, isScrollAtRight, horizontalScroll,\n/***\n * Return `true` when you need to prevent default event\n */\nonWheelDelta) {\n  var offsetRef = useRef(0);\n  var nextFrameRef = useRef(null);\n\n  // Firefox patch\n  var wheelValueRef = useRef(null);\n  var isMouseScrollRef = useRef(false);\n\n  // Scroll status sync\n  var originScroll = useOriginScroll(isScrollAtTop, isScrollAtBottom, isScrollAtLeft, isScrollAtRight);\n  function onWheelY(e, deltaY) {\n    raf.cancel(nextFrameRef.current);\n\n    // Do nothing when scroll at the edge, Skip check when is in scroll\n    if (originScroll(false, deltaY)) return;\n\n    // Skip if nest List has handled this event\n    var event = e;\n    if (!event._virtualHandled) {\n      event._virtualHandled = true;\n    } else {\n      return;\n    }\n    offsetRef.current += deltaY;\n    wheelValueRef.current = deltaY;\n\n    // Proxy of scroll events\n    if (!isFF) {\n      event.preventDefault();\n    }\n    nextFrameRef.current = raf(function () {\n      // Patch a multiple for Firefox to fix wheel number too small\n      // ref: https://github.com/ant-design/ant-design/issues/26372#issuecomment-679460266\n      var patchMultiple = isMouseScrollRef.current ? 10 : 1;\n      onWheelDelta(offsetRef.current * patchMultiple, false);\n      offsetRef.current = 0;\n    });\n  }\n  function onWheelX(event, deltaX) {\n    onWheelDelta(deltaX, true);\n    if (!isFF) {\n      event.preventDefault();\n    }\n  }\n\n  // Check for which direction does wheel do. `sx` means `shift + wheel`\n  var wheelDirectionRef = useRef(null);\n  var wheelDirectionCleanRef = useRef(null);\n  function onWheel(event) {\n    if (!inVirtual) return;\n\n    // Wait for 2 frame to clean direction\n    raf.cancel(wheelDirectionCleanRef.current);\n    wheelDirectionCleanRef.current = raf(function () {\n      wheelDirectionRef.current = null;\n    }, 2);\n    var deltaX = event.deltaX,\n      deltaY = event.deltaY,\n      shiftKey = event.shiftKey;\n    var mergedDeltaX = deltaX;\n    var mergedDeltaY = deltaY;\n    if (wheelDirectionRef.current === 'sx' || !wheelDirectionRef.current && (shiftKey || false) && deltaY && !deltaX) {\n      mergedDeltaX = deltaY;\n      mergedDeltaY = 0;\n      wheelDirectionRef.current = 'sx';\n    }\n    var absX = Math.abs(mergedDeltaX);\n    var absY = Math.abs(mergedDeltaY);\n    if (wheelDirectionRef.current === null) {\n      wheelDirectionRef.current = horizontalScroll && absX > absY ? 'x' : 'y';\n    }\n    if (wheelDirectionRef.current === 'y') {\n      onWheelY(event, mergedDeltaY);\n    } else {\n      onWheelX(event, mergedDeltaX);\n    }\n  }\n\n  // A patch for firefox\n  function onFireFoxScroll(event) {\n    if (!inVirtual) return;\n    isMouseScrollRef.current = event.detail === wheelValueRef.current;\n  }\n  return [onWheel, onFireFoxScroll];\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\n\n/**\n * Size info need loop query for the `heights` which will has the perf issue.\n * Let cache result for each render phase.\n */\nexport function useGetSize(mergedData, getKey, heights, itemHeight) {\n  var _React$useMemo = React.useMemo(function () {\n      return [new Map(), []];\n    }, [mergedData, heights.id, itemHeight]),\n    _React$useMemo2 = _slicedToArray(_React$useMemo, 2),\n    key2Index = _React$useMemo2[0],\n    bottomList = _React$useMemo2[1];\n  var getSize = function getSize(startKey) {\n    var endKey = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : startKey;\n    // Get from cache first\n    var startIndex = key2Index.get(startKey);\n    var endIndex = key2Index.get(endKey);\n\n    // Loop to fill the cache\n    if (startIndex === undefined || endIndex === undefined) {\n      var dataLen = mergedData.length;\n      for (var i = bottomList.length; i < dataLen; i += 1) {\n        var _heights$get;\n        var item = mergedData[i];\n        var key = getKey(item);\n        key2Index.set(key, i);\n        var cacheHeight = (_heights$get = heights.get(key)) !== null && _heights$get !== void 0 ? _heights$get : itemHeight;\n        bottomList[i] = (bottomList[i - 1] || 0) + cacheHeight;\n        if (key === startKey) {\n          startIndex = i;\n        }\n        if (key === endKey) {\n          endIndex = i;\n        }\n        if (startIndex !== undefined && endIndex !== undefined) {\n          break;\n        }\n      }\n    }\n    return {\n      top: bottomList[startIndex - 1] || 0,\n      bottom: bottomList[endIndex]\n    };\n  };\n  return getSize;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n// Firefox has low performance of map.\nvar CacheMap = /*#__PURE__*/function () {\n  function CacheMap() {\n    _classCallCheck(this, CacheMap);\n    _defineProperty(this, \"maps\", void 0);\n    // Used for cache key\n    // `useMemo` no need to update if `id` not change\n    _defineProperty(this, \"id\", 0);\n    _defineProperty(this, \"diffRecords\", new Map());\n    this.maps = Object.create(null);\n  }\n  _createClass(CacheMap, [{\n    key: \"set\",\n    value: function set(key, value) {\n      // Record prev value\n      this.diffRecords.set(key, this.maps[key]);\n      this.maps[key] = value;\n      this.id += 1;\n    }\n  }, {\n    key: \"get\",\n    value: function get(key) {\n      return this.maps[key];\n    }\n\n    /**\n     * CacheMap will record the key changed.\n     * To help to know what's update in the next render.\n     */\n  }, {\n    key: \"resetRecord\",\n    value: function resetRecord() {\n      this.diffRecords.clear();\n    }\n  }, {\n    key: \"getRecord\",\n    value: function getRecord() {\n      return this.diffRecords;\n    }\n  }]);\n  return CacheMap;\n}();\nexport default CacheMap;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useEffect, useRef } from 'react';\nimport CacheMap from \"../utils/CacheMap\";\nfunction parseNumber(value) {\n  var num = parseFloat(value);\n  return isNaN(num) ? 0 : num;\n}\nexport default function useHeights(getKey, onItemAdd, onItemRemove) {\n  var _React$useState = React.useState(0),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    updatedMark = _React$useState2[0],\n    setUpdatedMark = _React$useState2[1];\n  var instanceRef = useRef(new Map());\n  var heightsRef = useRef(new CacheMap());\n  var promiseIdRef = useRef(0);\n  function cancelRaf() {\n    promiseIdRef.current += 1;\n  }\n  function collectHeight() {\n    var sync = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    cancelRaf();\n    var doCollect = function doCollect() {\n      var changed = false;\n      instanceRef.current.forEach(function (element, key) {\n        if (element && element.offsetParent) {\n          var offsetHeight = element.offsetHeight;\n          var _getComputedStyle = getComputedStyle(element),\n            marginTop = _getComputedStyle.marginTop,\n            marginBottom = _getComputedStyle.marginBottom;\n          var marginTopNum = parseNumber(marginTop);\n          var marginBottomNum = parseNumber(marginBottom);\n          var totalHeight = offsetHeight + marginTopNum + marginBottomNum;\n          if (heightsRef.current.get(key) !== totalHeight) {\n            heightsRef.current.set(key, totalHeight);\n            changed = true;\n          }\n        }\n      });\n\n      // Always trigger update mark to tell parent that should re-calculate heights when resized\n      if (changed) {\n        setUpdatedMark(function (c) {\n          return c + 1;\n        });\n      }\n    };\n    if (sync) {\n      doCollect();\n    } else {\n      promiseIdRef.current += 1;\n      var id = promiseIdRef.current;\n      Promise.resolve().then(function () {\n        if (id === promiseIdRef.current) {\n          doCollect();\n        }\n      });\n    }\n  }\n  function setInstanceRef(item, instance) {\n    var key = getKey(item);\n    var origin = instanceRef.current.get(key);\n    if (instance) {\n      instanceRef.current.set(key, instance);\n      collectHeight();\n    } else {\n      instanceRef.current.delete(key);\n    }\n\n    // Instance changed\n    if (!origin !== !instance) {\n      if (instance) {\n        onItemAdd === null || onItemAdd === void 0 || onItemAdd(item);\n      } else {\n        onItemRemove === null || onItemRemove === void 0 || onItemRemove(item);\n      }\n    }\n  }\n  useEffect(function () {\n    return cancelRaf;\n  }, []);\n  return [setInstanceRef, collectHeight, heightsRef.current, updatedMark];\n}","import useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport { useRef } from 'react';\nvar SMOOTH_PTG = 14 / 15;\nexport default function useMobileTouchMove(inVirtual, listRef, callback) {\n  var touchedRef = useRef(false);\n  var touchXRef = useRef(0);\n  var touchYRef = useRef(0);\n  var elementRef = useRef(null);\n\n  // Smooth scroll\n  var intervalRef = useRef(null);\n\n  /* eslint-disable prefer-const */\n  var cleanUpEvents;\n  var onTouchMove = function onTouchMove(e) {\n    if (touchedRef.current) {\n      var currentX = Math.ceil(e.touches[0].pageX);\n      var currentY = Math.ceil(e.touches[0].pageY);\n      var offsetX = touchXRef.current - currentX;\n      var offsetY = touchYRef.current - currentY;\n      var _isHorizontal = Math.abs(offsetX) > Math.abs(offsetY);\n      if (_isHorizontal) {\n        touchXRef.current = currentX;\n      } else {\n        touchYRef.current = currentY;\n      }\n      var scrollHandled = callback(_isHorizontal, _isHorizontal ? offsetX : offsetY, false, e);\n      if (scrollHandled) {\n        e.preventDefault();\n      }\n\n      // Smooth interval\n      clearInterval(intervalRef.current);\n      if (scrollHandled) {\n        intervalRef.current = setInterval(function () {\n          if (_isHorizontal) {\n            offsetX *= SMOOTH_PTG;\n          } else {\n            offsetY *= SMOOTH_PTG;\n          }\n          var offset = Math.floor(_isHorizontal ? offsetX : offsetY);\n          if (!callback(_isHorizontal, offset, true) || Math.abs(offset) <= 0.1) {\n            clearInterval(intervalRef.current);\n          }\n        }, 16);\n      }\n    }\n  };\n  var onTouchEnd = function onTouchEnd() {\n    touchedRef.current = false;\n    cleanUpEvents();\n  };\n  var onTouchStart = function onTouchStart(e) {\n    cleanUpEvents();\n    if (e.touches.length === 1 && !touchedRef.current) {\n      touchedRef.current = true;\n      touchXRef.current = Math.ceil(e.touches[0].pageX);\n      touchYRef.current = Math.ceil(e.touches[0].pageY);\n      elementRef.current = e.target;\n      elementRef.current.addEventListener('touchmove', onTouchMove, {\n        passive: false\n      });\n      elementRef.current.addEventListener('touchend', onTouchEnd, {\n        passive: true\n      });\n    }\n  };\n  cleanUpEvents = function cleanUpEvents() {\n    if (elementRef.current) {\n      elementRef.current.removeEventListener('touchmove', onTouchMove);\n      elementRef.current.removeEventListener('touchend', onTouchEnd);\n    }\n  };\n  useLayoutEffect(function () {\n    if (inVirtual) {\n      listRef.current.addEventListener('touchstart', onTouchStart, {\n        passive: true\n      });\n    }\n    return function () {\n      var _listRef$current;\n      (_listRef$current = listRef.current) === null || _listRef$current === void 0 || _listRef$current.removeEventListener('touchstart', onTouchStart);\n      cleanUpEvents();\n      clearInterval(intervalRef.current);\n    };\n  }, [inVirtual]);\n}","import raf from \"rc-util/es/raf\";\nimport * as React from 'react';\nfunction smoothScrollOffset(offset) {\n  return Math.floor(Math.pow(offset, 0.5));\n}\nexport function getPageXY(e, horizontal) {\n  var obj = 'touches' in e ? e.touches[0] : e;\n  return obj[horizontal ? 'pageX' : 'pageY'] - window[horizontal ? 'scrollX' : 'scrollY'];\n}\nexport default function useScrollDrag(inVirtual, componentRef, onScrollOffset) {\n  React.useEffect(function () {\n    var ele = componentRef.current;\n    if (inVirtual && ele) {\n      var mouseDownLock = false;\n      var rafId;\n      var _offset;\n      var stopScroll = function stopScroll() {\n        raf.cancel(rafId);\n      };\n      var continueScroll = function continueScroll() {\n        stopScroll();\n        rafId = raf(function () {\n          onScrollOffset(_offset);\n          continueScroll();\n        });\n      };\n      var onMouseDown = function onMouseDown(e) {\n        // Skip if element set draggable\n        if (e.target.draggable || e.button !== 0) {\n          return;\n        }\n        // Skip if nest List has handled this event\n        var event = e;\n        if (!event._virtualHandled) {\n          event._virtualHandled = true;\n          mouseDownLock = true;\n        }\n      };\n      var onMouseUp = function onMouseUp() {\n        mouseDownLock = false;\n        stopScroll();\n      };\n      var onMouseMove = function onMouseMove(e) {\n        if (mouseDownLock) {\n          var mouseY = getPageXY(e, false);\n          var _ele$getBoundingClien = ele.getBoundingClientRect(),\n            top = _ele$getBoundingClien.top,\n            bottom = _ele$getBoundingClien.bottom;\n          if (mouseY <= top) {\n            var diff = top - mouseY;\n            _offset = -smoothScrollOffset(diff);\n            continueScroll();\n          } else if (mouseY >= bottom) {\n            var _diff = mouseY - bottom;\n            _offset = smoothScrollOffset(_diff);\n            continueScroll();\n          } else {\n            stopScroll();\n          }\n        }\n      };\n      ele.addEventListener('mousedown', onMouseDown);\n      ele.ownerDocument.addEventListener('mouseup', onMouseUp);\n      ele.ownerDocument.addEventListener('mousemove', onMouseMove);\n      return function () {\n        ele.removeEventListener('mousedown', onMouseDown);\n        ele.ownerDocument.removeEventListener('mouseup', onMouseUp);\n        ele.ownerDocument.removeEventListener('mousemove', onMouseMove);\n        stopScroll();\n      };\n    }\n  }, [inVirtual]);\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\n/* eslint-disable no-param-reassign */\nimport * as React from 'react';\nimport raf from \"rc-util/es/raf\";\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport { warning } from 'rc-util';\nvar MAX_TIMES = 10;\nexport default function useScrollTo(containerRef, data, heights, itemHeight, getKey, collectHeight, syncScrollTop, triggerFlash) {\n  var scrollRef = React.useRef();\n  var _React$useState = React.useState(null),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    syncState = _React$useState2[0],\n    setSyncState = _React$useState2[1];\n\n  // ========================== Sync Scroll ==========================\n  useLayoutEffect(function () {\n    if (syncState && syncState.times < MAX_TIMES) {\n      // Never reach\n      if (!containerRef.current) {\n        setSyncState(function (ori) {\n          return _objectSpread({}, ori);\n        });\n        return;\n      }\n      collectHeight();\n      var targetAlign = syncState.targetAlign,\n        originAlign = syncState.originAlign,\n        index = syncState.index,\n        offset = syncState.offset;\n      var height = containerRef.current.clientHeight;\n      var needCollectHeight = false;\n      var newTargetAlign = targetAlign;\n      var targetTop = null;\n\n      // Go to next frame if height not exist\n      if (height) {\n        var mergedAlign = targetAlign || originAlign;\n\n        // Get top & bottom\n        var stackTop = 0;\n        var itemTop = 0;\n        var itemBottom = 0;\n        var maxLen = Math.min(data.length - 1, index);\n        for (var i = 0; i <= maxLen; i += 1) {\n          var key = getKey(data[i]);\n          itemTop = stackTop;\n          var cacheHeight = heights.get(key);\n          itemBottom = itemTop + (cacheHeight === undefined ? itemHeight : cacheHeight);\n          stackTop = itemBottom;\n        }\n\n        // Check if need sync height (visible range has item not record height)\n        var leftHeight = mergedAlign === 'top' ? offset : height - offset;\n        for (var _i = maxLen; _i >= 0; _i -= 1) {\n          var _key = getKey(data[_i]);\n          var _cacheHeight = heights.get(_key);\n          if (_cacheHeight === undefined) {\n            needCollectHeight = true;\n            break;\n          }\n          leftHeight -= _cacheHeight;\n          if (leftHeight <= 0) {\n            break;\n          }\n        }\n\n        // Scroll to\n        switch (mergedAlign) {\n          case 'top':\n            targetTop = itemTop - offset;\n            break;\n          case 'bottom':\n            targetTop = itemBottom - height + offset;\n            break;\n          default:\n            {\n              var scrollTop = containerRef.current.scrollTop;\n              var scrollBottom = scrollTop + height;\n              if (itemTop < scrollTop) {\n                newTargetAlign = 'top';\n              } else if (itemBottom > scrollBottom) {\n                newTargetAlign = 'bottom';\n              }\n            }\n        }\n        if (targetTop !== null) {\n          syncScrollTop(targetTop);\n        }\n\n        // One more time for sync\n        if (targetTop !== syncState.lastTop) {\n          needCollectHeight = true;\n        }\n      }\n\n      // Trigger next effect\n      if (needCollectHeight) {\n        setSyncState(_objectSpread(_objectSpread({}, syncState), {}, {\n          times: syncState.times + 1,\n          targetAlign: newTargetAlign,\n          lastTop: targetTop\n        }));\n      }\n    } else if (process.env.NODE_ENV !== 'production' && (syncState === null || syncState === void 0 ? void 0 : syncState.times) === MAX_TIMES) {\n      warning(false, 'Seems `scrollTo` with `rc-virtual-list` reach the max limitation. Please fire issue for us. Thanks.');\n    }\n  }, [syncState, containerRef.current]);\n\n  // =========================== Scroll To ===========================\n  return function (arg) {\n    // When not argument provided, we think dev may want to show the scrollbar\n    if (arg === null || arg === undefined) {\n      triggerFlash();\n      return;\n    }\n\n    // Normal scroll logic\n    raf.cancel(scrollRef.current);\n    if (typeof arg === 'number') {\n      syncScrollTop(arg);\n    } else if (arg && _typeof(arg) === 'object') {\n      var index;\n      var align = arg.align;\n      if ('index' in arg) {\n        index = arg.index;\n      } else {\n        index = data.findIndex(function (item) {\n          return getKey(item) === arg.key;\n        });\n      }\n      var _arg$offset = arg.offset,\n        offset = _arg$offset === void 0 ? 0 : _arg$offset;\n      setSyncState({\n        times: 0,\n        index: index,\n        offset: offset,\n        originAlign: align\n      });\n    }\n  };\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport classNames from 'classnames';\nimport raf from \"rc-util/es/raf\";\nimport * as React from 'react';\nimport { getPageXY } from \"./hooks/useScrollDrag\";\nvar ScrollBar = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var prefixCls = props.prefixCls,\n    rtl = props.rtl,\n    scrollOffset = props.scrollOffset,\n    scrollRange = props.scrollRange,\n    onStartMove = props.onStartMove,\n    onStopMove = props.onStopMove,\n    onScroll = props.onScroll,\n    horizontal = props.horizontal,\n    spinSize = props.spinSize,\n    containerSize = props.containerSize,\n    style = props.style,\n    propsThumbStyle = props.thumbStyle,\n    showScrollBar = props.showScrollBar;\n  var _React$useState = React.useState(false),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    dragging = _React$useState2[0],\n    setDragging = _React$useState2[1];\n  var _React$useState3 = React.useState(null),\n    _React$useState4 = _slicedToArray(_React$useState3, 2),\n    pageXY = _React$useState4[0],\n    setPageXY = _React$useState4[1];\n  var _React$useState5 = React.useState(null),\n    _React$useState6 = _slicedToArray(_React$useState5, 2),\n    startTop = _React$useState6[0],\n    setStartTop = _React$useState6[1];\n  var isLTR = !rtl;\n\n  // ========================= Refs =========================\n  var scrollbarRef = React.useRef();\n  var thumbRef = React.useRef();\n\n  // ======================= Visible ========================\n  var _React$useState7 = React.useState(showScrollBar),\n    _React$useState8 = _slicedToArray(_React$useState7, 2),\n    visible = _React$useState8[0],\n    setVisible = _React$useState8[1];\n  var visibleTimeoutRef = React.useRef();\n  var delayHidden = function delayHidden() {\n    if (showScrollBar === true || showScrollBar === false) return;\n    clearTimeout(visibleTimeoutRef.current);\n    setVisible(true);\n    visibleTimeoutRef.current = setTimeout(function () {\n      setVisible(false);\n    }, 3000);\n  };\n\n  // ======================== Range =========================\n  var enableScrollRange = scrollRange - containerSize || 0;\n  var enableOffsetRange = containerSize - spinSize || 0;\n\n  // ========================= Top ==========================\n  var top = React.useMemo(function () {\n    if (scrollOffset === 0 || enableScrollRange === 0) {\n      return 0;\n    }\n    var ptg = scrollOffset / enableScrollRange;\n    return ptg * enableOffsetRange;\n  }, [scrollOffset, enableScrollRange, enableOffsetRange]);\n\n  // ====================== Container =======================\n  var onContainerMouseDown = function onContainerMouseDown(e) {\n    e.stopPropagation();\n    e.preventDefault();\n  };\n\n  // ======================== Thumb =========================\n  var stateRef = React.useRef({\n    top: top,\n    dragging: dragging,\n    pageY: pageXY,\n    startTop: startTop\n  });\n  stateRef.current = {\n    top: top,\n    dragging: dragging,\n    pageY: pageXY,\n    startTop: startTop\n  };\n  var onThumbMouseDown = function onThumbMouseDown(e) {\n    setDragging(true);\n    setPageXY(getPageXY(e, horizontal));\n    setStartTop(stateRef.current.top);\n    onStartMove();\n    e.stopPropagation();\n    e.preventDefault();\n  };\n\n  // ======================== Effect ========================\n\n  // React make event as passive, but we need to preventDefault\n  // Add event on dom directly instead.\n  // ref: https://github.com/facebook/react/issues/9809\n  React.useEffect(function () {\n    var onScrollbarTouchStart = function onScrollbarTouchStart(e) {\n      e.preventDefault();\n    };\n    var scrollbarEle = scrollbarRef.current;\n    var thumbEle = thumbRef.current;\n    scrollbarEle.addEventListener('touchstart', onScrollbarTouchStart, {\n      passive: false\n    });\n    thumbEle.addEventListener('touchstart', onThumbMouseDown, {\n      passive: false\n    });\n    return function () {\n      scrollbarEle.removeEventListener('touchstart', onScrollbarTouchStart);\n      thumbEle.removeEventListener('touchstart', onThumbMouseDown);\n    };\n  }, []);\n\n  // Pass to effect\n  var enableScrollRangeRef = React.useRef();\n  enableScrollRangeRef.current = enableScrollRange;\n  var enableOffsetRangeRef = React.useRef();\n  enableOffsetRangeRef.current = enableOffsetRange;\n  React.useEffect(function () {\n    if (dragging) {\n      var moveRafId;\n      var onMouseMove = function onMouseMove(e) {\n        var _stateRef$current = stateRef.current,\n          stateDragging = _stateRef$current.dragging,\n          statePageY = _stateRef$current.pageY,\n          stateStartTop = _stateRef$current.startTop;\n        raf.cancel(moveRafId);\n        var rect = scrollbarRef.current.getBoundingClientRect();\n        var scale = containerSize / (horizontal ? rect.width : rect.height);\n        if (stateDragging) {\n          var offset = (getPageXY(e, horizontal) - statePageY) * scale;\n          var newTop = stateStartTop;\n          if (!isLTR && horizontal) {\n            newTop -= offset;\n          } else {\n            newTop += offset;\n          }\n          var tmpEnableScrollRange = enableScrollRangeRef.current;\n          var tmpEnableOffsetRange = enableOffsetRangeRef.current;\n          var ptg = tmpEnableOffsetRange ? newTop / tmpEnableOffsetRange : 0;\n          var newScrollTop = Math.ceil(ptg * tmpEnableScrollRange);\n          newScrollTop = Math.max(newScrollTop, 0);\n          newScrollTop = Math.min(newScrollTop, tmpEnableScrollRange);\n          moveRafId = raf(function () {\n            onScroll(newScrollTop, horizontal);\n          });\n        }\n      };\n      var onMouseUp = function onMouseUp() {\n        setDragging(false);\n        onStopMove();\n      };\n      window.addEventListener('mousemove', onMouseMove, {\n        passive: true\n      });\n      window.addEventListener('touchmove', onMouseMove, {\n        passive: true\n      });\n      window.addEventListener('mouseup', onMouseUp, {\n        passive: true\n      });\n      window.addEventListener('touchend', onMouseUp, {\n        passive: true\n      });\n      return function () {\n        window.removeEventListener('mousemove', onMouseMove);\n        window.removeEventListener('touchmove', onMouseMove);\n        window.removeEventListener('mouseup', onMouseUp);\n        window.removeEventListener('touchend', onMouseUp);\n        raf.cancel(moveRafId);\n      };\n    }\n  }, [dragging]);\n  React.useEffect(function () {\n    delayHidden();\n    return function () {\n      clearTimeout(visibleTimeoutRef.current);\n    };\n  }, [scrollOffset]);\n\n  // ====================== Imperative ======================\n  React.useImperativeHandle(ref, function () {\n    return {\n      delayHidden: delayHidden\n    };\n  });\n\n  // ======================== Render ========================\n  var scrollbarPrefixCls = \"\".concat(prefixCls, \"-scrollbar\");\n  var containerStyle = {\n    position: 'absolute',\n    visibility: visible ? null : 'hidden'\n  };\n  var thumbStyle = {\n    position: 'absolute',\n    borderRadius: 99,\n    background: 'var(--rc-virtual-list-scrollbar-bg, rgba(0, 0, 0, 0.5))',\n    cursor: 'pointer',\n    userSelect: 'none'\n  };\n  if (horizontal) {\n    Object.assign(containerStyle, {\n      height: 8,\n      left: 0,\n      right: 0,\n      bottom: 0\n    });\n    Object.assign(thumbStyle, _defineProperty({\n      height: '100%',\n      width: spinSize\n    }, isLTR ? 'left' : 'right', top));\n  } else {\n    Object.assign(containerStyle, _defineProperty({\n      width: 8,\n      top: 0,\n      bottom: 0\n    }, isLTR ? 'right' : 'left', 0));\n    Object.assign(thumbStyle, {\n      width: '100%',\n      height: spinSize,\n      top: top\n    });\n  }\n  return /*#__PURE__*/React.createElement(\"div\", {\n    ref: scrollbarRef,\n    className: classNames(scrollbarPrefixCls, _defineProperty(_defineProperty(_defineProperty({}, \"\".concat(scrollbarPrefixCls, \"-horizontal\"), horizontal), \"\".concat(scrollbarPrefixCls, \"-vertical\"), !horizontal), \"\".concat(scrollbarPrefixCls, \"-visible\"), visible)),\n    style: _objectSpread(_objectSpread({}, containerStyle), style),\n    onMouseDown: onContainerMouseDown,\n    onMouseMove: delayHidden\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    ref: thumbRef,\n    className: classNames(\"\".concat(scrollbarPrefixCls, \"-thumb\"), _defineProperty({}, \"\".concat(scrollbarPrefixCls, \"-thumb-moving\"), dragging)),\n    style: _objectSpread(_objectSpread({}, thumbStyle), propsThumbStyle),\n    onMouseDown: onThumbMouseDown\n  }));\n});\nif (process.env.NODE_ENV !== 'production') {\n  ScrollBar.displayName = 'ScrollBar';\n}\nexport default ScrollBar;","var MIN_SIZE = 20;\nexport function getSpinSize() {\n  var containerSize = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n  var scrollRange = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n  var baseSize = containerSize / scrollRange * containerSize;\n  if (isNaN(baseSize)) {\n    baseSize = 0;\n  }\n  baseSize = Math.max(baseSize, MIN_SIZE);\n  return Math.floor(baseSize);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"className\", \"height\", \"itemHeight\", \"fullHeight\", \"style\", \"data\", \"children\", \"itemKey\", \"virtual\", \"direction\", \"scrollWidth\", \"component\", \"onScroll\", \"onVirtualScroll\", \"onVisibleChange\", \"innerProps\", \"extraRender\", \"styles\", \"showScrollBar\"];\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\nimport { useEvent } from 'rc-util';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport * as React from 'react';\nimport { useRef, useState } from 'react';\nimport { flushSync } from 'react-dom';\nimport Filler from \"./Filler\";\nimport useChildren from \"./hooks/useChildren\";\nimport useDiffItem from \"./hooks/useDiffItem\";\nimport useFrameWheel from \"./hooks/useFrameWheel\";\nimport { useGetSize } from \"./hooks/useGetSize\";\nimport useHeights from \"./hooks/useHeights\";\nimport useMobileTouchMove from \"./hooks/useMobileTouchMove\";\nimport useOriginScroll from \"./hooks/useOriginScroll\";\nimport useScrollDrag from \"./hooks/useScrollDrag\";\nimport useScrollTo from \"./hooks/useScrollTo\";\nimport ScrollBar from \"./ScrollBar\";\nimport { getSpinSize } from \"./utils/scrollbarUtil\";\nvar EMPTY_DATA = [];\nvar ScrollStyle = {\n  overflowY: 'auto',\n  overflowAnchor: 'none'\n};\nexport function RawList(props, ref) {\n  var _props$prefixCls = props.prefixCls,\n    prefixCls = _props$prefixCls === void 0 ? 'rc-virtual-list' : _props$prefixCls,\n    className = props.className,\n    height = props.height,\n    itemHeight = props.itemHeight,\n    _props$fullHeight = props.fullHeight,\n    fullHeight = _props$fullHeight === void 0 ? true : _props$fullHeight,\n    style = props.style,\n    data = props.data,\n    children = props.children,\n    itemKey = props.itemKey,\n    virtual = props.virtual,\n    direction = props.direction,\n    scrollWidth = props.scrollWidth,\n    _props$component = props.component,\n    Component = _props$component === void 0 ? 'div' : _props$component,\n    onScroll = props.onScroll,\n    onVirtualScroll = props.onVirtualScroll,\n    onVisibleChange = props.onVisibleChange,\n    innerProps = props.innerProps,\n    extraRender = props.extraRender,\n    styles = props.styles,\n    _props$showScrollBar = props.showScrollBar,\n    showScrollBar = _props$showScrollBar === void 0 ? 'optional' : _props$showScrollBar,\n    restProps = _objectWithoutProperties(props, _excluded);\n\n  // =============================== Item Key ===============================\n  var getKey = React.useCallback(function (item) {\n    if (typeof itemKey === 'function') {\n      return itemKey(item);\n    }\n    return item === null || item === void 0 ? void 0 : item[itemKey];\n  }, [itemKey]);\n\n  // ================================ Height ================================\n  var _useHeights = useHeights(getKey, null, null),\n    _useHeights2 = _slicedToArray(_useHeights, 4),\n    setInstanceRef = _useHeights2[0],\n    collectHeight = _useHeights2[1],\n    heights = _useHeights2[2],\n    heightUpdatedMark = _useHeights2[3];\n\n  // ================================= MISC =================================\n  var useVirtual = !!(virtual !== false && height && itemHeight);\n  var containerHeight = React.useMemo(function () {\n    return Object.values(heights.maps).reduce(function (total, curr) {\n      return total + curr;\n    }, 0);\n  }, [heights.id, heights.maps]);\n  var inVirtual = useVirtual && data && (Math.max(itemHeight * data.length, containerHeight) > height || !!scrollWidth);\n  var isRTL = direction === 'rtl';\n  var mergedClassName = classNames(prefixCls, _defineProperty({}, \"\".concat(prefixCls, \"-rtl\"), isRTL), className);\n  var mergedData = data || EMPTY_DATA;\n  var componentRef = useRef();\n  var fillerInnerRef = useRef();\n  var containerRef = useRef();\n\n  // =============================== Item Key ===============================\n\n  var _useState = useState(0),\n    _useState2 = _slicedToArray(_useState, 2),\n    offsetTop = _useState2[0],\n    setOffsetTop = _useState2[1];\n  var _useState3 = useState(0),\n    _useState4 = _slicedToArray(_useState3, 2),\n    offsetLeft = _useState4[0],\n    setOffsetLeft = _useState4[1];\n  var _useState5 = useState(false),\n    _useState6 = _slicedToArray(_useState5, 2),\n    scrollMoving = _useState6[0],\n    setScrollMoving = _useState6[1];\n  var onScrollbarStartMove = function onScrollbarStartMove() {\n    setScrollMoving(true);\n  };\n  var onScrollbarStopMove = function onScrollbarStopMove() {\n    setScrollMoving(false);\n  };\n  var sharedConfig = {\n    getKey: getKey\n  };\n\n  // ================================ Scroll ================================\n  function syncScrollTop(newTop) {\n    setOffsetTop(function (origin) {\n      var value;\n      if (typeof newTop === 'function') {\n        value = newTop(origin);\n      } else {\n        value = newTop;\n      }\n      var alignedTop = keepInRange(value);\n      componentRef.current.scrollTop = alignedTop;\n      return alignedTop;\n    });\n  }\n\n  // ================================ Legacy ================================\n  // Put ref here since the range is generate by follow\n  var rangeRef = useRef({\n    start: 0,\n    end: mergedData.length\n  });\n  var diffItemRef = useRef();\n  var _useDiffItem = useDiffItem(mergedData, getKey),\n    _useDiffItem2 = _slicedToArray(_useDiffItem, 1),\n    diffItem = _useDiffItem2[0];\n  diffItemRef.current = diffItem;\n\n  // ========================== Visible Calculation =========================\n  var _React$useMemo = React.useMemo(function () {\n      if (!useVirtual) {\n        return {\n          scrollHeight: undefined,\n          start: 0,\n          end: mergedData.length - 1,\n          offset: undefined\n        };\n      }\n\n      // Always use virtual scroll bar in avoid shaking\n      if (!inVirtual) {\n        var _fillerInnerRef$curre;\n        return {\n          scrollHeight: ((_fillerInnerRef$curre = fillerInnerRef.current) === null || _fillerInnerRef$curre === void 0 ? void 0 : _fillerInnerRef$curre.offsetHeight) || 0,\n          start: 0,\n          end: mergedData.length - 1,\n          offset: undefined\n        };\n      }\n      var itemTop = 0;\n      var startIndex;\n      var startOffset;\n      var endIndex;\n      var dataLen = mergedData.length;\n      for (var i = 0; i < dataLen; i += 1) {\n        var _item = mergedData[i];\n        var key = getKey(_item);\n        var cacheHeight = heights.get(key);\n        var currentItemBottom = itemTop + (cacheHeight === undefined ? itemHeight : cacheHeight);\n\n        // Check item top in the range\n        if (currentItemBottom >= offsetTop && startIndex === undefined) {\n          startIndex = i;\n          startOffset = itemTop;\n        }\n\n        // Check item bottom in the range. We will render additional one item for motion usage\n        if (currentItemBottom > offsetTop + height && endIndex === undefined) {\n          endIndex = i;\n        }\n        itemTop = currentItemBottom;\n      }\n\n      // When scrollTop at the end but data cut to small count will reach this\n      if (startIndex === undefined) {\n        startIndex = 0;\n        startOffset = 0;\n        endIndex = Math.ceil(height / itemHeight);\n      }\n      if (endIndex === undefined) {\n        endIndex = mergedData.length - 1;\n      }\n\n      // Give cache to improve scroll experience\n      endIndex = Math.min(endIndex + 1, mergedData.length - 1);\n      return {\n        scrollHeight: itemTop,\n        start: startIndex,\n        end: endIndex,\n        offset: startOffset\n      };\n    }, [inVirtual, useVirtual, offsetTop, mergedData, heightUpdatedMark, height]),\n    scrollHeight = _React$useMemo.scrollHeight,\n    start = _React$useMemo.start,\n    end = _React$useMemo.end,\n    fillerOffset = _React$useMemo.offset;\n  rangeRef.current.start = start;\n  rangeRef.current.end = end;\n\n  // When scroll up, first visible item get real height may not same as `itemHeight`,\n  // Which will make scroll jump.\n  // Let's sync scroll top to avoid jump\n  React.useLayoutEffect(function () {\n    var changedRecord = heights.getRecord();\n    if (changedRecord.size === 1) {\n      var recordKey = Array.from(changedRecord.keys())[0];\n      var prevCacheHeight = changedRecord.get(recordKey);\n\n      // Quick switch data may cause `start` not in `mergedData` anymore\n      var startItem = mergedData[start];\n      if (startItem && prevCacheHeight === undefined) {\n        var startIndexKey = getKey(startItem);\n        if (startIndexKey === recordKey) {\n          var realStartHeight = heights.get(recordKey);\n          var diffHeight = realStartHeight - itemHeight;\n          syncScrollTop(function (ori) {\n            return ori + diffHeight;\n          });\n        }\n      }\n    }\n    heights.resetRecord();\n  }, [scrollHeight]);\n\n  // ================================= Size =================================\n  var _React$useState = React.useState({\n      width: 0,\n      height: height\n    }),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    size = _React$useState2[0],\n    setSize = _React$useState2[1];\n  var onHolderResize = function onHolderResize(sizeInfo) {\n    setSize({\n      width: sizeInfo.offsetWidth,\n      height: sizeInfo.offsetHeight\n    });\n  };\n\n  // Hack on scrollbar to enable flash call\n  var verticalScrollBarRef = useRef();\n  var horizontalScrollBarRef = useRef();\n  var horizontalScrollBarSpinSize = React.useMemo(function () {\n    return getSpinSize(size.width, scrollWidth);\n  }, [size.width, scrollWidth]);\n  var verticalScrollBarSpinSize = React.useMemo(function () {\n    return getSpinSize(size.height, scrollHeight);\n  }, [size.height, scrollHeight]);\n\n  // =============================== In Range ===============================\n  var maxScrollHeight = scrollHeight - height;\n  var maxScrollHeightRef = useRef(maxScrollHeight);\n  maxScrollHeightRef.current = maxScrollHeight;\n  function keepInRange(newScrollTop) {\n    var newTop = newScrollTop;\n    if (!Number.isNaN(maxScrollHeightRef.current)) {\n      newTop = Math.min(newTop, maxScrollHeightRef.current);\n    }\n    newTop = Math.max(newTop, 0);\n    return newTop;\n  }\n  var isScrollAtTop = offsetTop <= 0;\n  var isScrollAtBottom = offsetTop >= maxScrollHeight;\n  var isScrollAtLeft = offsetLeft <= 0;\n  var isScrollAtRight = offsetLeft >= scrollWidth;\n  var originScroll = useOriginScroll(isScrollAtTop, isScrollAtBottom, isScrollAtLeft, isScrollAtRight);\n\n  // ================================ Scroll ================================\n  var getVirtualScrollInfo = function getVirtualScrollInfo() {\n    return {\n      x: isRTL ? -offsetLeft : offsetLeft,\n      y: offsetTop\n    };\n  };\n  var lastVirtualScrollInfoRef = useRef(getVirtualScrollInfo());\n  var triggerScroll = useEvent(function (params) {\n    if (onVirtualScroll) {\n      var nextInfo = _objectSpread(_objectSpread({}, getVirtualScrollInfo()), params);\n\n      // Trigger when offset changed\n      if (lastVirtualScrollInfoRef.current.x !== nextInfo.x || lastVirtualScrollInfoRef.current.y !== nextInfo.y) {\n        onVirtualScroll(nextInfo);\n        lastVirtualScrollInfoRef.current = nextInfo;\n      }\n    }\n  });\n  function onScrollBar(newScrollOffset, horizontal) {\n    var newOffset = newScrollOffset;\n    if (horizontal) {\n      flushSync(function () {\n        setOffsetLeft(newOffset);\n      });\n      triggerScroll();\n    } else {\n      syncScrollTop(newOffset);\n    }\n  }\n\n  // When data size reduce. It may trigger native scroll event back to fit scroll position\n  function onFallbackScroll(e) {\n    var newScrollTop = e.currentTarget.scrollTop;\n    if (newScrollTop !== offsetTop) {\n      syncScrollTop(newScrollTop);\n    }\n\n    // Trigger origin onScroll\n    onScroll === null || onScroll === void 0 || onScroll(e);\n    triggerScroll();\n  }\n  var keepInHorizontalRange = function keepInHorizontalRange(nextOffsetLeft) {\n    var tmpOffsetLeft = nextOffsetLeft;\n    var max = !!scrollWidth ? scrollWidth - size.width : 0;\n    tmpOffsetLeft = Math.max(tmpOffsetLeft, 0);\n    tmpOffsetLeft = Math.min(tmpOffsetLeft, max);\n    return tmpOffsetLeft;\n  };\n  var onWheelDelta = useEvent(function (offsetXY, fromHorizontal) {\n    if (fromHorizontal) {\n      flushSync(function () {\n        setOffsetLeft(function (left) {\n          var nextOffsetLeft = left + (isRTL ? -offsetXY : offsetXY);\n          return keepInHorizontalRange(nextOffsetLeft);\n        });\n      });\n      triggerScroll();\n    } else {\n      syncScrollTop(function (top) {\n        var newTop = top + offsetXY;\n        return newTop;\n      });\n    }\n  });\n\n  // Since this added in global,should use ref to keep update\n  var _useFrameWheel = useFrameWheel(useVirtual, isScrollAtTop, isScrollAtBottom, isScrollAtLeft, isScrollAtRight, !!scrollWidth, onWheelDelta),\n    _useFrameWheel2 = _slicedToArray(_useFrameWheel, 2),\n    onRawWheel = _useFrameWheel2[0],\n    onFireFoxScroll = _useFrameWheel2[1];\n\n  // Mobile touch move\n  useMobileTouchMove(useVirtual, componentRef, function (isHorizontal, delta, smoothOffset, e) {\n    var event = e;\n    if (originScroll(isHorizontal, delta, smoothOffset)) {\n      return false;\n    }\n\n    // Fix nest List trigger TouchMove event\n    if (!event || !event._virtualHandled) {\n      if (event) {\n        event._virtualHandled = true;\n      }\n      onRawWheel({\n        preventDefault: function preventDefault() {},\n        deltaX: isHorizontal ? delta : 0,\n        deltaY: isHorizontal ? 0 : delta\n      });\n      return true;\n    }\n    return false;\n  });\n\n  // MouseDown drag for scroll\n  useScrollDrag(inVirtual, componentRef, function (offset) {\n    syncScrollTop(function (top) {\n      return top + offset;\n    });\n  });\n  useLayoutEffect(function () {\n    // Firefox only\n    function onMozMousePixelScroll(e) {\n      // scrolling at top/bottom limit\n      var scrollingUpAtTop = isScrollAtTop && e.detail < 0;\n      var scrollingDownAtBottom = isScrollAtBottom && e.detail > 0;\n      if (useVirtual && !scrollingUpAtTop && !scrollingDownAtBottom) {\n        e.preventDefault();\n      }\n    }\n    var componentEle = componentRef.current;\n    componentEle.addEventListener('wheel', onRawWheel, {\n      passive: false\n    });\n    componentEle.addEventListener('DOMMouseScroll', onFireFoxScroll, {\n      passive: true\n    });\n    componentEle.addEventListener('MozMousePixelScroll', onMozMousePixelScroll, {\n      passive: false\n    });\n    return function () {\n      componentEle.removeEventListener('wheel', onRawWheel);\n      componentEle.removeEventListener('DOMMouseScroll', onFireFoxScroll);\n      componentEle.removeEventListener('MozMousePixelScroll', onMozMousePixelScroll);\n    };\n  }, [useVirtual, isScrollAtTop, isScrollAtBottom]);\n\n  // Sync scroll left\n  useLayoutEffect(function () {\n    if (scrollWidth) {\n      var newOffsetLeft = keepInHorizontalRange(offsetLeft);\n      setOffsetLeft(newOffsetLeft);\n      triggerScroll({\n        x: newOffsetLeft\n      });\n    }\n  }, [size.width, scrollWidth]);\n\n  // ================================= Ref ==================================\n  var delayHideScrollBar = function delayHideScrollBar() {\n    var _verticalScrollBarRef, _horizontalScrollBarR;\n    (_verticalScrollBarRef = verticalScrollBarRef.current) === null || _verticalScrollBarRef === void 0 || _verticalScrollBarRef.delayHidden();\n    (_horizontalScrollBarR = horizontalScrollBarRef.current) === null || _horizontalScrollBarR === void 0 || _horizontalScrollBarR.delayHidden();\n  };\n  var _scrollTo = useScrollTo(componentRef, mergedData, heights, itemHeight, getKey, function () {\n    return collectHeight(true);\n  }, syncScrollTop, delayHideScrollBar);\n  React.useImperativeHandle(ref, function () {\n    return {\n      nativeElement: containerRef.current,\n      getScrollInfo: getVirtualScrollInfo,\n      scrollTo: function scrollTo(config) {\n        function isPosScroll(arg) {\n          return arg && _typeof(arg) === 'object' && ('left' in arg || 'top' in arg);\n        }\n        if (isPosScroll(config)) {\n          // Scroll X\n          if (config.left !== undefined) {\n            setOffsetLeft(keepInHorizontalRange(config.left));\n          }\n\n          // Scroll Y\n          _scrollTo(config.top);\n        } else {\n          _scrollTo(config);\n        }\n      }\n    };\n  });\n\n  // ================================ Effect ================================\n  /** We need told outside that some list not rendered */\n  useLayoutEffect(function () {\n    if (onVisibleChange) {\n      var renderList = mergedData.slice(start, end + 1);\n      onVisibleChange(renderList, mergedData);\n    }\n  }, [start, end, mergedData]);\n\n  // ================================ Extra =================================\n  var getSize = useGetSize(mergedData, getKey, heights, itemHeight);\n  var extraContent = extraRender === null || extraRender === void 0 ? void 0 : extraRender({\n    start: start,\n    end: end,\n    virtual: inVirtual,\n    offsetX: offsetLeft,\n    offsetY: fillerOffset,\n    rtl: isRTL,\n    getSize: getSize\n  });\n\n  // ================================ Render ================================\n  var listChildren = useChildren(mergedData, start, end, scrollWidth, offsetLeft, setInstanceRef, children, sharedConfig);\n  var componentStyle = null;\n  if (height) {\n    componentStyle = _objectSpread(_defineProperty({}, fullHeight ? 'height' : 'maxHeight', height), ScrollStyle);\n    if (useVirtual) {\n      componentStyle.overflowY = 'hidden';\n      if (scrollWidth) {\n        componentStyle.overflowX = 'hidden';\n      }\n      if (scrollMoving) {\n        componentStyle.pointerEvents = 'none';\n      }\n    }\n  }\n  var containerProps = {};\n  if (isRTL) {\n    containerProps.dir = 'rtl';\n  }\n  return /*#__PURE__*/React.createElement(\"div\", _extends({\n    ref: containerRef,\n    style: _objectSpread(_objectSpread({}, style), {}, {\n      position: 'relative'\n    }),\n    className: mergedClassName\n  }, containerProps, restProps), /*#__PURE__*/React.createElement(ResizeObserver, {\n    onResize: onHolderResize\n  }, /*#__PURE__*/React.createElement(Component, {\n    className: \"\".concat(prefixCls, \"-holder\"),\n    style: componentStyle,\n    ref: componentRef,\n    onScroll: onFallbackScroll,\n    onMouseEnter: delayHideScrollBar\n  }, /*#__PURE__*/React.createElement(Filler, {\n    prefixCls: prefixCls,\n    height: scrollHeight,\n    offsetX: offsetLeft,\n    offsetY: fillerOffset,\n    scrollWidth: scrollWidth,\n    onInnerResize: collectHeight,\n    ref: fillerInnerRef,\n    innerProps: innerProps,\n    rtl: isRTL,\n    extra: extraContent\n  }, listChildren))), inVirtual && scrollHeight > height && /*#__PURE__*/React.createElement(ScrollBar, {\n    ref: verticalScrollBarRef,\n    prefixCls: prefixCls,\n    scrollOffset: offsetTop,\n    scrollRange: scrollHeight,\n    rtl: isRTL,\n    onScroll: onScrollBar,\n    onStartMove: onScrollbarStartMove,\n    onStopMove: onScrollbarStopMove,\n    spinSize: verticalScrollBarSpinSize,\n    containerSize: size.height,\n    style: styles === null || styles === void 0 ? void 0 : styles.verticalScrollBar,\n    thumbStyle: styles === null || styles === void 0 ? void 0 : styles.verticalScrollBarThumb,\n    showScrollBar: showScrollBar\n  }), inVirtual && scrollWidth > size.width && /*#__PURE__*/React.createElement(ScrollBar, {\n    ref: horizontalScrollBarRef,\n    prefixCls: prefixCls,\n    scrollOffset: offsetLeft,\n    scrollRange: scrollWidth,\n    rtl: isRTL,\n    onScroll: onScrollBar,\n    onStartMove: onScrollbarStartMove,\n    onStopMove: onScrollbarStopMove,\n    spinSize: horizontalScrollBarSpinSize,\n    containerSize: size.width,\n    horizontal: true,\n    style: styles === null || styles === void 0 ? void 0 : styles.horizontalScrollBar,\n    thumbStyle: styles === null || styles === void 0 ? void 0 : styles.horizontalScrollBarThumb,\n    showScrollBar: showScrollBar\n  }));\n}\nvar List = /*#__PURE__*/React.forwardRef(RawList);\nList.displayName = 'List';\nexport default List;","/* istanbul ignore file */\nexport function isPlatformMac() {\n  return /(mac\\sos|macintosh)/i.test(navigator.appVersion);\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nvar _excluded = [\"disabled\", \"title\", \"children\", \"style\", \"className\"];\nimport classNames from 'classnames';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport useMemo from \"rc-util/es/hooks/useMemo\";\nimport omit from \"rc-util/es/omit\";\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport List from 'rc-virtual-list';\nimport * as React from 'react';\nimport { useEffect } from 'react';\nimport SelectContext from \"./SelectContext\";\nimport TransBtn from \"./TransBtn\";\nimport useBaseProps from \"./hooks/useBaseProps\";\nimport { isPlatformMac } from \"./utils/platformUtil\";\nimport { isValidCount } from \"./utils/valueUtil\";\n\n// export interface OptionListProps<OptionsType extends object[]> {\n\nfunction isTitleType(content) {\n  return typeof content === 'string' || typeof content === 'number';\n}\n\n/**\n * Using virtual list of option display.\n * Will fallback to dom if use customize render.\n */\nvar OptionList = function OptionList(_, ref) {\n  var _useBaseProps = useBaseProps(),\n    prefixCls = _useBaseProps.prefixCls,\n    id = _useBaseProps.id,\n    open = _useBaseProps.open,\n    multiple = _useBaseProps.multiple,\n    mode = _useBaseProps.mode,\n    searchValue = _useBaseProps.searchValue,\n    toggleOpen = _useBaseProps.toggleOpen,\n    notFoundContent = _useBaseProps.notFoundContent,\n    onPopupScroll = _useBaseProps.onPopupScroll;\n  var _React$useContext = React.useContext(SelectContext),\n    maxCount = _React$useContext.maxCount,\n    flattenOptions = _React$useContext.flattenOptions,\n    onActiveValue = _React$useContext.onActiveValue,\n    defaultActiveFirstOption = _React$useContext.defaultActiveFirstOption,\n    onSelect = _React$useContext.onSelect,\n    menuItemSelectedIcon = _React$useContext.menuItemSelectedIcon,\n    rawValues = _React$useContext.rawValues,\n    fieldNames = _React$useContext.fieldNames,\n    virtual = _React$useContext.virtual,\n    direction = _React$useContext.direction,\n    listHeight = _React$useContext.listHeight,\n    listItemHeight = _React$useContext.listItemHeight,\n    optionRender = _React$useContext.optionRender;\n  var itemPrefixCls = \"\".concat(prefixCls, \"-item\");\n  var memoFlattenOptions = useMemo(function () {\n    return flattenOptions;\n  }, [open, flattenOptions], function (prev, next) {\n    return next[0] && prev[1] !== next[1];\n  });\n\n  // =========================== List ===========================\n  var listRef = React.useRef(null);\n  var overMaxCount = React.useMemo(function () {\n    return multiple && isValidCount(maxCount) && (rawValues === null || rawValues === void 0 ? void 0 : rawValues.size) >= maxCount;\n  }, [multiple, maxCount, rawValues === null || rawValues === void 0 ? void 0 : rawValues.size]);\n  var onListMouseDown = function onListMouseDown(event) {\n    event.preventDefault();\n  };\n  var scrollIntoView = function scrollIntoView(args) {\n    var _listRef$current;\n    (_listRef$current = listRef.current) === null || _listRef$current === void 0 || _listRef$current.scrollTo(typeof args === 'number' ? {\n      index: args\n    } : args);\n  };\n\n  // https://github.com/ant-design/ant-design/issues/34975\n  var isSelected = React.useCallback(function (value) {\n    if (mode === 'combobox') {\n      return false;\n    }\n    return rawValues.has(value);\n  }, [mode, _toConsumableArray(rawValues).toString(), rawValues.size]);\n\n  // ========================== Active ==========================\n  var getEnabledActiveIndex = function getEnabledActiveIndex(index) {\n    var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n    var len = memoFlattenOptions.length;\n    for (var i = 0; i < len; i += 1) {\n      var current = (index + i * offset + len) % len;\n      var _ref = memoFlattenOptions[current] || {},\n        group = _ref.group,\n        data = _ref.data;\n      if (!group && !(data !== null && data !== void 0 && data.disabled) && (isSelected(data.value) || !overMaxCount)) {\n        return current;\n      }\n    }\n    return -1;\n  };\n  var _React$useState = React.useState(function () {\n      return getEnabledActiveIndex(0);\n    }),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    activeIndex = _React$useState2[0],\n    setActiveIndex = _React$useState2[1];\n  var setActive = function setActive(index) {\n    var fromKeyboard = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n    setActiveIndex(index);\n    var info = {\n      source: fromKeyboard ? 'keyboard' : 'mouse'\n    };\n\n    // Trigger active event\n    var flattenItem = memoFlattenOptions[index];\n    if (!flattenItem) {\n      onActiveValue(null, -1, info);\n      return;\n    }\n    onActiveValue(flattenItem.value, index, info);\n  };\n\n  // Auto active first item when list length or searchValue changed\n  useEffect(function () {\n    setActive(defaultActiveFirstOption !== false ? getEnabledActiveIndex(0) : -1);\n  }, [memoFlattenOptions.length, searchValue]);\n\n  // https://github.com/ant-design/ant-design/issues/48036\n  var isAriaSelected = React.useCallback(function (value) {\n    if (mode === 'combobox') {\n      return String(value).toLowerCase() === searchValue.toLowerCase();\n    }\n    return rawValues.has(value);\n  }, [mode, searchValue, _toConsumableArray(rawValues).toString(), rawValues.size]);\n\n  // Auto scroll to item position in single mode\n  useEffect(function () {\n    /**\n     * React will skip `onChange` when component update.\n     * `setActive` function will call root accessibility state update which makes re-render.\n     * So we need to delay to let Input component trigger onChange first.\n     */\n    var timeoutId = setTimeout(function () {\n      if (!multiple && open && rawValues.size === 1) {\n        var value = Array.from(rawValues)[0];\n        // Scroll to the option closest to the searchValue if searching.\n        var index = memoFlattenOptions.findIndex(function (_ref2) {\n          var data = _ref2.data;\n          return searchValue ? String(data.value).startsWith(searchValue) : data.value === value;\n        });\n        if (index !== -1) {\n          setActive(index);\n          scrollIntoView(index);\n        }\n      }\n    });\n\n    // Force trigger scrollbar visible when open\n    if (open) {\n      var _listRef$current2;\n      (_listRef$current2 = listRef.current) === null || _listRef$current2 === void 0 || _listRef$current2.scrollTo(undefined);\n    }\n    return function () {\n      return clearTimeout(timeoutId);\n    };\n  }, [open, searchValue]);\n\n  // ========================== Values ==========================\n  var onSelectValue = function onSelectValue(value) {\n    if (value !== undefined) {\n      onSelect(value, {\n        selected: !rawValues.has(value)\n      });\n    }\n\n    // Single mode should always close by select\n    if (!multiple) {\n      toggleOpen(false);\n    }\n  };\n\n  // ========================= Keyboard =========================\n  React.useImperativeHandle(ref, function () {\n    return {\n      onKeyDown: function onKeyDown(event) {\n        var which = event.which,\n          ctrlKey = event.ctrlKey;\n        switch (which) {\n          // >>> Arrow keys & ctrl + n/p on Mac\n          case KeyCode.N:\n          case KeyCode.P:\n          case KeyCode.UP:\n          case KeyCode.DOWN:\n            {\n              var offset = 0;\n              if (which === KeyCode.UP) {\n                offset = -1;\n              } else if (which === KeyCode.DOWN) {\n                offset = 1;\n              } else if (isPlatformMac() && ctrlKey) {\n                if (which === KeyCode.N) {\n                  offset = 1;\n                } else if (which === KeyCode.P) {\n                  offset = -1;\n                }\n              }\n              if (offset !== 0) {\n                var nextActiveIndex = getEnabledActiveIndex(activeIndex + offset, offset);\n                scrollIntoView(nextActiveIndex);\n                setActive(nextActiveIndex, true);\n              }\n              break;\n            }\n\n          // >>> Select (Tab / Enter)\n          case KeyCode.TAB:\n          case KeyCode.ENTER:\n            {\n              var _item$data;\n              // value\n              var item = memoFlattenOptions[activeIndex];\n              if (item && !(item !== null && item !== void 0 && (_item$data = item.data) !== null && _item$data !== void 0 && _item$data.disabled) && !overMaxCount) {\n                onSelectValue(item.value);\n              } else {\n                onSelectValue(undefined);\n              }\n              if (open) {\n                event.preventDefault();\n              }\n              break;\n            }\n\n          // >>> Close\n          case KeyCode.ESC:\n            {\n              toggleOpen(false);\n              if (open) {\n                event.stopPropagation();\n              }\n            }\n        }\n      },\n      onKeyUp: function onKeyUp() {},\n      scrollTo: function scrollTo(index) {\n        scrollIntoView(index);\n      }\n    };\n  });\n\n  // ========================== Render ==========================\n  if (memoFlattenOptions.length === 0) {\n    return /*#__PURE__*/React.createElement(\"div\", {\n      role: \"listbox\",\n      id: \"\".concat(id, \"_list\"),\n      className: \"\".concat(itemPrefixCls, \"-empty\"),\n      onMouseDown: onListMouseDown\n    }, notFoundContent);\n  }\n  var omitFieldNameList = Object.keys(fieldNames).map(function (key) {\n    return fieldNames[key];\n  });\n  var getLabel = function getLabel(item) {\n    return item.label;\n  };\n  function getItemAriaProps(item, index) {\n    var group = item.group;\n    return {\n      role: group ? 'presentation' : 'option',\n      id: \"\".concat(id, \"_list_\").concat(index)\n    };\n  }\n  var renderItem = function renderItem(index) {\n    var item = memoFlattenOptions[index];\n    if (!item) {\n      return null;\n    }\n    var itemData = item.data || {};\n    var value = itemData.value;\n    var group = item.group;\n    var attrs = pickAttrs(itemData, true);\n    var mergedLabel = getLabel(item);\n    return item ? /*#__PURE__*/React.createElement(\"div\", _extends({\n      \"aria-label\": typeof mergedLabel === 'string' && !group ? mergedLabel : null\n    }, attrs, {\n      key: index\n    }, getItemAriaProps(item, index), {\n      \"aria-selected\": isAriaSelected(value)\n    }), value) : null;\n  };\n  var a11yProps = {\n    role: 'listbox',\n    id: \"\".concat(id, \"_list\")\n  };\n  return /*#__PURE__*/React.createElement(React.Fragment, null, virtual && /*#__PURE__*/React.createElement(\"div\", _extends({}, a11yProps, {\n    style: {\n      height: 0,\n      width: 0,\n      overflow: 'hidden'\n    }\n  }), renderItem(activeIndex - 1), renderItem(activeIndex), renderItem(activeIndex + 1)), /*#__PURE__*/React.createElement(List, {\n    itemKey: \"key\",\n    ref: listRef,\n    data: memoFlattenOptions,\n    height: listHeight,\n    itemHeight: listItemHeight,\n    fullHeight: false,\n    onMouseDown: onListMouseDown,\n    onScroll: onPopupScroll,\n    virtual: virtual,\n    direction: direction,\n    innerProps: virtual ? null : a11yProps\n  }, function (item, itemIndex) {\n    var group = item.group,\n      groupOption = item.groupOption,\n      data = item.data,\n      label = item.label,\n      value = item.value;\n    var key = data.key;\n\n    // Group\n    if (group) {\n      var _data$title;\n      var groupTitle = (_data$title = data.title) !== null && _data$title !== void 0 ? _data$title : isTitleType(label) ? label.toString() : undefined;\n      return /*#__PURE__*/React.createElement(\"div\", {\n        className: classNames(itemPrefixCls, \"\".concat(itemPrefixCls, \"-group\"), data.className),\n        title: groupTitle\n      }, label !== undefined ? label : key);\n    }\n    var disabled = data.disabled,\n      title = data.title,\n      children = data.children,\n      style = data.style,\n      className = data.className,\n      otherProps = _objectWithoutProperties(data, _excluded);\n    var passedProps = omit(otherProps, omitFieldNameList);\n\n    // Option\n    var selected = isSelected(value);\n    var mergedDisabled = disabled || !selected && overMaxCount;\n    var optionPrefixCls = \"\".concat(itemPrefixCls, \"-option\");\n    var optionClassName = classNames(itemPrefixCls, optionPrefixCls, className, _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, \"\".concat(optionPrefixCls, \"-grouped\"), groupOption), \"\".concat(optionPrefixCls, \"-active\"), activeIndex === itemIndex && !mergedDisabled), \"\".concat(optionPrefixCls, \"-disabled\"), mergedDisabled), \"\".concat(optionPrefixCls, \"-selected\"), selected));\n    var mergedLabel = getLabel(item);\n    var iconVisible = !menuItemSelectedIcon || typeof menuItemSelectedIcon === 'function' || selected;\n\n    // https://github.com/ant-design/ant-design/issues/34145\n    var content = typeof mergedLabel === 'number' ? mergedLabel : mergedLabel || value;\n    // https://github.com/ant-design/ant-design/issues/26717\n    var optionTitle = isTitleType(content) ? content.toString() : undefined;\n    if (title !== undefined) {\n      optionTitle = title;\n    }\n    return /*#__PURE__*/React.createElement(\"div\", _extends({}, pickAttrs(passedProps), !virtual ? getItemAriaProps(item, itemIndex) : {}, {\n      \"aria-selected\": isAriaSelected(value),\n      className: optionClassName,\n      title: optionTitle,\n      onMouseMove: function onMouseMove() {\n        if (activeIndex === itemIndex || mergedDisabled) {\n          return;\n        }\n        setActive(itemIndex);\n      },\n      onClick: function onClick() {\n        if (!mergedDisabled) {\n          onSelectValue(value);\n        }\n      },\n      style: style\n    }), /*#__PURE__*/React.createElement(\"div\", {\n      className: \"\".concat(optionPrefixCls, \"-content\")\n    }, typeof optionRender === 'function' ? optionRender(item, {\n      index: itemIndex\n    }) : content), /*#__PURE__*/React.isValidElement(menuItemSelectedIcon) || selected, iconVisible && /*#__PURE__*/React.createElement(TransBtn, {\n      className: \"\".concat(itemPrefixCls, \"-option-state\"),\n      customizeIcon: menuItemSelectedIcon,\n      customizeIconProps: {\n        value: value,\n        disabled: mergedDisabled,\n        isSelected: selected\n      }\n    }, selected ? '✓' : null));\n  }));\n};\nvar RefOptionList = /*#__PURE__*/React.forwardRef(OptionList);\nif (process.env.NODE_ENV !== 'production') {\n  RefOptionList.displayName = 'OptionList';\n}\nexport default RefOptionList;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\n/**\n * Cache `value` related LabeledValue & options.\n */\nexport default (function (labeledValues, valueOptions) {\n  var cacheRef = React.useRef({\n    values: new Map(),\n    options: new Map()\n  });\n  var filledLabeledValues = React.useMemo(function () {\n    var _cacheRef$current = cacheRef.current,\n      prevValueCache = _cacheRef$current.values,\n      prevOptionCache = _cacheRef$current.options;\n\n    // Fill label by cache\n    var patchedValues = labeledValues.map(function (item) {\n      if (item.label === undefined) {\n        var _prevValueCache$get;\n        return _objectSpread(_objectSpread({}, item), {}, {\n          label: (_prevValueCache$get = prevValueCache.get(item.value)) === null || _prevValueCache$get === void 0 ? void 0 : _prevValueCache$get.label\n        });\n      }\n      return item;\n    });\n\n    // Refresh cache\n    var valueCache = new Map();\n    var optionCache = new Map();\n    patchedValues.forEach(function (item) {\n      valueCache.set(item.value, item);\n      optionCache.set(item.value, valueOptions.get(item.value) || prevOptionCache.get(item.value));\n    });\n    cacheRef.current.values = valueCache;\n    cacheRef.current.options = optionCache;\n    return patchedValues;\n  }, [labeledValues, valueOptions]);\n  var getOption = React.useCallback(function (val) {\n    return valueOptions.get(val) || cacheRef.current.options.get(val);\n  }, [valueOptions]);\n  return [filledLabeledValues, getOption];\n});","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport { toArray } from \"../utils/commonUtil\";\nimport { injectPropsWithOption } from \"../utils/valueUtil\";\nfunction includes(test, search) {\n  return toArray(test).join('').toUpperCase().includes(search);\n}\nexport default (function (options, fieldNames, searchValue, filterOption, optionFilterProp) {\n  return React.useMemo(function () {\n    if (!searchValue || filterOption === false) {\n      return options;\n    }\n    var fieldOptions = fieldNames.options,\n      fieldLabel = fieldNames.label,\n      fieldValue = fieldNames.value;\n    var filteredOptions = [];\n    var customizeFilter = typeof filterOption === 'function';\n    var upperSearch = searchValue.toUpperCase();\n    var filterFunc = customizeFilter ? filterOption : function (_, option) {\n      // Use provided `optionFilterProp`\n      if (optionFilterProp) {\n        return includes(option[optionFilterProp], upperSearch);\n      }\n\n      // Auto select `label` or `value` by option type\n      if (option[fieldOptions]) {\n        // hack `fieldLabel` since `OptionGroup` children is not `label`\n        return includes(option[fieldLabel !== 'children' ? fieldLabel : 'label'], upperSearch);\n      }\n      return includes(option[fieldValue], upperSearch);\n    };\n    var wrapOption = customizeFilter ? function (opt) {\n      return injectPropsWithOption(opt);\n    } : function (opt) {\n      return opt;\n    };\n    options.forEach(function (item) {\n      // Group should check child options\n      if (item[fieldOptions]) {\n        // Check group first\n        var matchGroup = filterFunc(searchValue, wrapOption(item));\n        if (matchGroup) {\n          filteredOptions.push(item);\n        } else {\n          // Check option\n          var subOptions = item[fieldOptions].filter(function (subItem) {\n            return filterFunc(searchValue, wrapOption(subItem));\n          });\n          if (subOptions.length) {\n            filteredOptions.push(_objectSpread(_objectSpread({}, item), {}, _defineProperty({}, fieldOptions, subOptions)));\n          }\n        }\n        return;\n      }\n      if (filterFunc(searchValue, wrapOption(item))) {\n        filteredOptions.push(item);\n      }\n    });\n    return filteredOptions;\n  }, [options, filterOption, optionFilterProp, searchValue, fieldNames]);\n});","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\nvar uuid = 0;\n\n/** Is client side and not jsdom */\nexport var isBrowserClient = process.env.NODE_ENV !== 'test' && canUseDom();\n\n/** Get unique id for accessibility usage */\nexport function getUUID() {\n  var retId;\n\n  // Test never reach\n  /* istanbul ignore if */\n  if (isBrowserClient) {\n    retId = uuid;\n    uuid += 1;\n  } else {\n    retId = 'TEST_OR_SSR';\n  }\n  return retId;\n}\nexport default function useId(id) {\n  // Inner id for accessibility usage. Only work in client side\n  var _React$useState = React.useState(),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    innerId = _React$useState2[0],\n    setInnerId = _React$useState2[1];\n  React.useEffect(function () {\n    setInnerId(\"rc_select_\".concat(getUUID()));\n  }, []);\n  return id || innerId;\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"children\", \"value\"],\n  _excluded2 = [\"children\"];\nimport * as React from 'react';\nimport toArray from \"rc-util/es/Children/toArray\";\nfunction convertNodeToOption(node) {\n  var _ref = node,\n    key = _ref.key,\n    _ref$props = _ref.props,\n    children = _ref$props.children,\n    value = _ref$props.value,\n    restProps = _objectWithoutProperties(_ref$props, _excluded);\n  return _objectSpread({\n    key: key,\n    value: value !== undefined ? value : key,\n    children: children\n  }, restProps);\n}\nexport function convertChildrenToData(nodes) {\n  var optionOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n  return toArray(nodes).map(function (node, index) {\n    if (! /*#__PURE__*/React.isValidElement(node) || !node.type) {\n      return null;\n    }\n    var _ref2 = node,\n      isSelectOptGroup = _ref2.type.isSelectOptGroup,\n      key = _ref2.key,\n      _ref2$props = _ref2.props,\n      children = _ref2$props.children,\n      restProps = _objectWithoutProperties(_ref2$props, _excluded2);\n    if (optionOnly || !isSelectOptGroup) {\n      return convertNodeToOption(node);\n    }\n    return _objectSpread(_objectSpread({\n      key: \"__RC_SELECT_GRP__\".concat(key === null ? index : key, \"__\"),\n      label: key\n    }, restProps), {}, {\n      options: convertChildrenToData(children)\n    });\n  }).filter(function (data) {\n    return data;\n  });\n}","import * as React from 'react';\nimport { convertChildrenToData } from \"../utils/legacyUtil\";\n\n/**\n * Parse `children` to `options` if `options` is not provided.\n * Then flatten the `options`.\n */\nvar useOptions = function useOptions(options, children, fieldNames, optionFilterProp, optionLabelProp) {\n  return React.useMemo(function () {\n    var mergedOptions = options;\n    var childrenAsData = !options;\n    if (childrenAsData) {\n      mergedOptions = convertChildrenToData(children);\n    }\n    var valueOptions = new Map();\n    var labelOptions = new Map();\n    var setLabelOptions = function setLabelOptions(labelOptionsMap, option, key) {\n      if (key && typeof key === 'string') {\n        labelOptionsMap.set(option[key], option);\n      }\n    };\n    var dig = function dig(optionList) {\n      var isChildren = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      // for loop to speed up collection speed\n      for (var i = 0; i < optionList.length; i += 1) {\n        var option = optionList[i];\n        if (!option[fieldNames.options] || isChildren) {\n          valueOptions.set(option[fieldNames.value], option);\n          setLabelOptions(labelOptions, option, fieldNames.label);\n          // https://github.com/ant-design/ant-design/issues/35304\n          setLabelOptions(labelOptions, option, optionFilterProp);\n          setLabelOptions(labelOptions, option, optionLabelProp);\n        } else {\n          dig(option[fieldNames.options], true);\n        }\n      }\n    };\n    dig(mergedOptions);\n    return {\n      options: mergedOptions,\n      valueOptions: valueOptions,\n      labelOptions: labelOptions\n    };\n  }, [options, children, fieldNames, optionFilterProp, optionLabelProp]);\n};\nexport default useOptions;","import * as React from 'react';\n\n/**\n * Same as `React.useCallback` but always return a memoized function\n * but redirect to real function.\n */\nexport default function useRefFunc(callback) {\n  var funcRef = React.useRef();\n  funcRef.current = callback;\n  var cacheFn = React.useCallback(function () {\n    return funcRef.current.apply(funcRef, arguments);\n  }, []);\n  return cacheFn;\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport toNodeArray from \"rc-util/es/Children/toArray\";\nimport warning, { noteOnce } from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport { isMultiple } from \"../BaseSelect\";\nimport { toArray } from \"./commonUtil\";\nimport { convertChildrenToData } from \"./legacyUtil\";\nfunction warningProps(props) {\n  var mode = props.mode,\n    options = props.options,\n    children = props.children,\n    backfill = props.backfill,\n    allowClear = props.allowClear,\n    placeholder = props.placeholder,\n    getInputElement = props.getInputElement,\n    showSearch = props.showSearch,\n    onSearch = props.onSearch,\n    defaultOpen = props.defaultOpen,\n    autoFocus = props.autoFocus,\n    labelInValue = props.labelInValue,\n    value = props.value,\n    inputValue = props.inputValue,\n    optionLabelProp = props.optionLabelProp;\n  var multiple = isMultiple(mode);\n  var mergedShowSearch = showSearch !== undefined ? showSearch : multiple || mode === 'combobox';\n  var mergedOptions = options || convertChildrenToData(children);\n\n  // `tags` should not set option as disabled\n  warning(mode !== 'tags' || mergedOptions.every(function (opt) {\n    return !opt.disabled;\n  }), 'Please avoid setting option to disabled in tags mode since user can always type text as tag.');\n\n  // `combobox` & `tags` should option be `string` type\n  if (mode === 'tags' || mode === 'combobox') {\n    var hasNumberValue = mergedOptions.some(function (item) {\n      if (item.options) {\n        return item.options.some(function (opt) {\n          return typeof ('value' in opt ? opt.value : opt.key) === 'number';\n        });\n      }\n      return typeof ('value' in item ? item.value : item.key) === 'number';\n    });\n    warning(!hasNumberValue, '`value` of Option should not use number type when `mode` is `tags` or `combobox`.');\n  }\n\n  // `combobox` should not use `optionLabelProp`\n  warning(mode !== 'combobox' || !optionLabelProp, '`combobox` mode not support `optionLabelProp`. Please set `value` on Option directly.');\n\n  // Only `combobox` support `backfill`\n  warning(mode === 'combobox' || !backfill, '`backfill` only works with `combobox` mode.');\n\n  // Only `combobox` support `getInputElement`\n  warning(mode === 'combobox' || !getInputElement, '`getInputElement` only work with `combobox` mode.');\n\n  // Customize `getInputElement` should not use `allowClear` & `placeholder`\n  noteOnce(mode !== 'combobox' || !getInputElement || !allowClear || !placeholder, 'Customize `getInputElement` should customize clear and placeholder logic instead of configuring `allowClear` and `placeholder`.');\n\n  // `onSearch` should use in `combobox` or `showSearch`\n  if (onSearch && !mergedShowSearch && mode !== 'combobox' && mode !== 'tags') {\n    warning(false, '`onSearch` should work with `showSearch` instead of use alone.');\n  }\n  noteOnce(!defaultOpen || autoFocus, '`defaultOpen` makes Select open without focus which means it will not close by click outside. You can set `autoFocus` if needed.');\n  if (value !== undefined && value !== null) {\n    var values = toArray(value);\n    warning(!labelInValue || values.every(function (val) {\n      return _typeof(val) === 'object' && ('key' in val || 'value' in val);\n    }), '`value` should in shape of `{ value: string | number, label?: ReactNode }` when you set `labelInValue` to `true`');\n    warning(!multiple || Array.isArray(value), '`value` should be array when `mode` is `multiple` or `tags`');\n  }\n\n  // Syntactic sugar should use correct children type\n  if (children) {\n    var invalidateChildType = null;\n    toNodeArray(children).some(function (node) {\n      if (! /*#__PURE__*/React.isValidElement(node) || !node.type) {\n        return false;\n      }\n      var _ref = node,\n        type = _ref.type;\n      if (type.isSelectOption) {\n        return false;\n      }\n      if (type.isSelectOptGroup) {\n        var allChildrenValid = toNodeArray(node.props.children).every(function (subNode) {\n          if (! /*#__PURE__*/React.isValidElement(subNode) || !node.type || subNode.type.isSelectOption) {\n            return true;\n          }\n          invalidateChildType = subNode.type;\n          return false;\n        });\n        if (allChildrenValid) {\n          return false;\n        }\n        return true;\n      }\n      invalidateChildType = type;\n      return true;\n    });\n    if (invalidateChildType) {\n      warning(false, \"`children` should be `Select.Option` or `Select.OptGroup` instead of `\".concat(invalidateChildType.displayName || invalidateChildType.name || invalidateChildType, \"`.\"));\n    }\n    warning(inputValue === undefined, '`inputValue` is deprecated, please use `searchValue` instead.');\n  }\n}\n\n// value in Select option should not be null\n// note: OptGroup has options too\nexport function warningNullOptions(options, fieldNames) {\n  if (options) {\n    var recursiveOptions = function recursiveOptions(optionsList) {\n      var inGroup = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      for (var i = 0; i < optionsList.length; i++) {\n        var option = optionsList[i];\n        if (option[fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.value] === null) {\n          warning(false, '`value` in Select options should not be `null`.');\n          return true;\n        }\n        if (!inGroup && Array.isArray(option[fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.options]) && recursiveOptions(option[fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.options], true)) {\n          break;\n        }\n      }\n    };\n    recursiveOptions(options);\n  }\n}\nexport default warningProps;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar _excluded = [\"id\", \"mode\", \"prefixCls\", \"backfill\", \"fieldNames\", \"inputValue\", \"searchValue\", \"onSearch\", \"autoClearSearchValue\", \"onSelect\", \"onDeselect\", \"dropdownMatchSelectWidth\", \"filterOption\", \"filterSort\", \"optionFilterProp\", \"optionLabelProp\", \"options\", \"optionRender\", \"children\", \"defaultActiveFirstOption\", \"menuItemSelectedIcon\", \"virtual\", \"direction\", \"listHeight\", \"listItemHeight\", \"labelRender\", \"value\", \"defaultValue\", \"labelInValue\", \"onChange\", \"maxCount\"];\n/**\n * To match accessibility requirement, we always provide an input in the component.\n * Other element will not set `tabIndex` to avoid `onBlur` sequence problem.\n * For focused select, we set `aria-live=\"polite\"` to update the accessibility content.\n *\n * ref:\n * - keyboard: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/listbox_role#Keyboard_interactions\n *\n * New api:\n * - listHeight\n * - listItemHeight\n * - component\n *\n * Remove deprecated api:\n * - multiple\n * - tags\n * - combobox\n * - firstActiveValue\n * - dropdownMenuStyle\n * - openClassName (Not list in api)\n *\n * Update:\n * - `backfill` only support `combobox` mode\n * - `combobox` mode not support `labelInValue` since it's meaningless\n * - `getInputElement` only support `combobox` mode\n * - `onChange` return OptionData instead of ReactNode\n * - `filterOption` `onChange` `onSelect` accept OptionData instead of ReactNode\n * - `combobox` mode trigger `onChange` will get `undefined` if no `value` match in Option\n * - `combobox` mode not support `optionLabelProp`\n */\n\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport BaseSelect, { isMultiple } from \"./BaseSelect\";\nimport OptGroup from \"./OptGroup\";\nimport Option from \"./Option\";\nimport OptionList from \"./OptionList\";\nimport SelectContext from \"./SelectContext\";\nimport useCache from \"./hooks/useCache\";\nimport useFilterOptions from \"./hooks/useFilterOptions\";\nimport useId from \"./hooks/useId\";\nimport useOptions from \"./hooks/useOptions\";\nimport useRefFunc from \"./hooks/useRefFunc\";\nimport { hasValue, isComboNoValue, toArray } from \"./utils/commonUtil\";\nimport { fillFieldNames, flattenOptions, injectPropsWithOption } from \"./utils/valueUtil\";\nimport warningProps, { warningNullOptions } from \"./utils/warningPropsUtil\";\nvar OMIT_DOM_PROPS = ['inputValue'];\nfunction isRawValue(value) {\n  return !value || _typeof(value) !== 'object';\n}\nvar Select = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var id = props.id,\n    mode = props.mode,\n    _props$prefixCls = props.prefixCls,\n    prefixCls = _props$prefixCls === void 0 ? 'rc-select' : _props$prefixCls,\n    backfill = props.backfill,\n    fieldNames = props.fieldNames,\n    inputValue = props.inputValue,\n    searchValue = props.searchValue,\n    onSearch = props.onSearch,\n    _props$autoClearSearc = props.autoClearSearchValue,\n    autoClearSearchValue = _props$autoClearSearc === void 0 ? true : _props$autoClearSearc,\n    onSelect = props.onSelect,\n    onDeselect = props.onDeselect,\n    _props$dropdownMatchS = props.dropdownMatchSelectWidth,\n    dropdownMatchSelectWidth = _props$dropdownMatchS === void 0 ? true : _props$dropdownMatchS,\n    filterOption = props.filterOption,\n    filterSort = props.filterSort,\n    optionFilterProp = props.optionFilterProp,\n    optionLabelProp = props.optionLabelProp,\n    options = props.options,\n    optionRender = props.optionRender,\n    children = props.children,\n    defaultActiveFirstOption = props.defaultActiveFirstOption,\n    menuItemSelectedIcon = props.menuItemSelectedIcon,\n    virtual = props.virtual,\n    direction = props.direction,\n    _props$listHeight = props.listHeight,\n    listHeight = _props$listHeight === void 0 ? 200 : _props$listHeight,\n    _props$listItemHeight = props.listItemHeight,\n    listItemHeight = _props$listItemHeight === void 0 ? 20 : _props$listItemHeight,\n    labelRender = props.labelRender,\n    value = props.value,\n    defaultValue = props.defaultValue,\n    labelInValue = props.labelInValue,\n    onChange = props.onChange,\n    maxCount = props.maxCount,\n    restProps = _objectWithoutProperties(props, _excluded);\n  var mergedId = useId(id);\n  var multiple = isMultiple(mode);\n  var childrenAsData = !!(!options && children);\n  var mergedFilterOption = React.useMemo(function () {\n    if (filterOption === undefined && mode === 'combobox') {\n      return false;\n    }\n    return filterOption;\n  }, [filterOption, mode]);\n\n  // ========================= FieldNames =========================\n  var mergedFieldNames = React.useMemo(function () {\n    return fillFieldNames(fieldNames, childrenAsData);\n  }, /* eslint-disable react-hooks/exhaustive-deps */\n  [\n  // We stringify fieldNames to avoid unnecessary re-renders.\n  JSON.stringify(fieldNames), childrenAsData]\n  /* eslint-enable react-hooks/exhaustive-deps */);\n\n  // =========================== Search ===========================\n  var _useMergedState = useMergedState('', {\n      value: searchValue !== undefined ? searchValue : inputValue,\n      postState: function postState(search) {\n        return search || '';\n      }\n    }),\n    _useMergedState2 = _slicedToArray(_useMergedState, 2),\n    mergedSearchValue = _useMergedState2[0],\n    setSearchValue = _useMergedState2[1];\n\n  // =========================== Option ===========================\n  var parsedOptions = useOptions(options, children, mergedFieldNames, optionFilterProp, optionLabelProp);\n  var valueOptions = parsedOptions.valueOptions,\n    labelOptions = parsedOptions.labelOptions,\n    mergedOptions = parsedOptions.options;\n\n  // ========================= Wrap Value =========================\n  var convert2LabelValues = React.useCallback(function (draftValues) {\n    // Convert to array\n    var valueList = toArray(draftValues);\n\n    // Convert to labelInValue type\n    return valueList.map(function (val) {\n      var rawValue;\n      var rawLabel;\n      var rawKey;\n      var rawDisabled;\n      var rawTitle;\n\n      // Fill label & value\n      if (isRawValue(val)) {\n        rawValue = val;\n      } else {\n        var _val$value;\n        rawKey = val.key;\n        rawLabel = val.label;\n        rawValue = (_val$value = val.value) !== null && _val$value !== void 0 ? _val$value : rawKey;\n      }\n      var option = valueOptions.get(rawValue);\n      if (option) {\n        var _option$key;\n        // Fill missing props\n        if (rawLabel === undefined) rawLabel = option === null || option === void 0 ? void 0 : option[optionLabelProp || mergedFieldNames.label];\n        if (rawKey === undefined) rawKey = (_option$key = option === null || option === void 0 ? void 0 : option.key) !== null && _option$key !== void 0 ? _option$key : rawValue;\n        rawDisabled = option === null || option === void 0 ? void 0 : option.disabled;\n        rawTitle = option === null || option === void 0 ? void 0 : option.title;\n\n        // Warning if label not same as provided\n        if (process.env.NODE_ENV !== 'production' && !optionLabelProp) {\n          var optionLabel = option === null || option === void 0 ? void 0 : option[mergedFieldNames.label];\n          if (optionLabel !== undefined && ! /*#__PURE__*/React.isValidElement(optionLabel) && ! /*#__PURE__*/React.isValidElement(rawLabel) && optionLabel !== rawLabel) {\n            warning(false, '`label` of `value` is not same as `label` in Select options.');\n          }\n        }\n      }\n      return {\n        label: rawLabel,\n        value: rawValue,\n        key: rawKey,\n        disabled: rawDisabled,\n        title: rawTitle\n      };\n    });\n  }, [mergedFieldNames, optionLabelProp, valueOptions]);\n\n  // =========================== Values ===========================\n  var _useMergedState3 = useMergedState(defaultValue, {\n      value: value\n    }),\n    _useMergedState4 = _slicedToArray(_useMergedState3, 2),\n    internalValue = _useMergedState4[0],\n    setInternalValue = _useMergedState4[1];\n\n  // Merged value with LabelValueType\n  var rawLabeledValues = React.useMemo(function () {\n    var _values$;\n    var newInternalValue = multiple && internalValue === null ? [] : internalValue;\n    var values = convert2LabelValues(newInternalValue);\n\n    // combobox no need save value when it's no value (exclude value equal 0)\n    if (mode === 'combobox' && isComboNoValue((_values$ = values[0]) === null || _values$ === void 0 ? void 0 : _values$.value)) {\n      return [];\n    }\n    return values;\n  }, [internalValue, convert2LabelValues, mode, multiple]);\n\n  // Fill label with cache to avoid option remove\n  var _useCache = useCache(rawLabeledValues, valueOptions),\n    _useCache2 = _slicedToArray(_useCache, 2),\n    mergedValues = _useCache2[0],\n    getMixedOption = _useCache2[1];\n  var displayValues = React.useMemo(function () {\n    // `null` need show as placeholder instead\n    // https://github.com/ant-design/ant-design/issues/25057\n    if (!mode && mergedValues.length === 1) {\n      var firstValue = mergedValues[0];\n      if (firstValue.value === null && (firstValue.label === null || firstValue.label === undefined)) {\n        return [];\n      }\n    }\n    return mergedValues.map(function (item) {\n      var _ref;\n      return _objectSpread(_objectSpread({}, item), {}, {\n        label: (_ref = typeof labelRender === 'function' ? labelRender(item) : item.label) !== null && _ref !== void 0 ? _ref : item.value\n      });\n    });\n  }, [mode, mergedValues, labelRender]);\n\n  /** Convert `displayValues` to raw value type set */\n  var rawValues = React.useMemo(function () {\n    return new Set(mergedValues.map(function (val) {\n      return val.value;\n    }));\n  }, [mergedValues]);\n  React.useEffect(function () {\n    if (mode === 'combobox') {\n      var _mergedValues$;\n      var strValue = (_mergedValues$ = mergedValues[0]) === null || _mergedValues$ === void 0 ? void 0 : _mergedValues$.value;\n      setSearchValue(hasValue(strValue) ? String(strValue) : '');\n    }\n  }, [mergedValues]);\n\n  // ======================= Display Option =======================\n  // Create a placeholder item if not exist in `options`\n  var createTagOption = useRefFunc(function (val, label) {\n    var mergedLabel = label !== null && label !== void 0 ? label : val;\n    return _defineProperty(_defineProperty({}, mergedFieldNames.value, val), mergedFieldNames.label, mergedLabel);\n  });\n\n  // Fill tag as option if mode is `tags`\n  var filledTagOptions = React.useMemo(function () {\n    if (mode !== 'tags') {\n      return mergedOptions;\n    }\n\n    // >>> Tag mode\n    var cloneOptions = _toConsumableArray(mergedOptions);\n\n    // Check if value exist in options (include new patch item)\n    var existOptions = function existOptions(val) {\n      return valueOptions.has(val);\n    };\n\n    // Fill current value as option\n    _toConsumableArray(mergedValues).sort(function (a, b) {\n      return a.value < b.value ? -1 : 1;\n    }).forEach(function (item) {\n      var val = item.value;\n      if (!existOptions(val)) {\n        cloneOptions.push(createTagOption(val, item.label));\n      }\n    });\n    return cloneOptions;\n  }, [createTagOption, mergedOptions, valueOptions, mergedValues, mode]);\n  var filteredOptions = useFilterOptions(filledTagOptions, mergedFieldNames, mergedSearchValue, mergedFilterOption, optionFilterProp);\n\n  // Fill options with search value if needed\n  var filledSearchOptions = React.useMemo(function () {\n    if (mode !== 'tags' || !mergedSearchValue || filteredOptions.some(function (item) {\n      return item[optionFilterProp || 'value'] === mergedSearchValue;\n    })) {\n      return filteredOptions;\n    }\n    // ignore when search value equal select input value\n    if (filteredOptions.some(function (item) {\n      return item[mergedFieldNames.value] === mergedSearchValue;\n    })) {\n      return filteredOptions;\n    }\n    // Fill search value as option\n    return [createTagOption(mergedSearchValue)].concat(_toConsumableArray(filteredOptions));\n  }, [createTagOption, optionFilterProp, mode, filteredOptions, mergedSearchValue, mergedFieldNames]);\n  var sorter = function sorter(inputOptions) {\n    var sortedOptions = _toConsumableArray(inputOptions).sort(function (a, b) {\n      return filterSort(a, b, {\n        searchValue: mergedSearchValue\n      });\n    });\n    return sortedOptions.map(function (item) {\n      if (Array.isArray(item.options)) {\n        return _objectSpread(_objectSpread({}, item), {}, {\n          options: item.options.length > 0 ? sorter(item.options) : item.options\n        });\n      }\n      return item;\n    });\n  };\n  var orderedFilteredOptions = React.useMemo(function () {\n    if (!filterSort) {\n      return filledSearchOptions;\n    }\n    return sorter(filledSearchOptions);\n  }, [filledSearchOptions, filterSort, mergedSearchValue]);\n  var displayOptions = React.useMemo(function () {\n    return flattenOptions(orderedFilteredOptions, {\n      fieldNames: mergedFieldNames,\n      childrenAsData: childrenAsData\n    });\n  }, [orderedFilteredOptions, mergedFieldNames, childrenAsData]);\n\n  // =========================== Change ===========================\n  var triggerChange = function triggerChange(values) {\n    var labeledValues = convert2LabelValues(values);\n    setInternalValue(labeledValues);\n    if (onChange && (\n    // Trigger event only when value changed\n    labeledValues.length !== mergedValues.length || labeledValues.some(function (newVal, index) {\n      var _mergedValues$index;\n      return ((_mergedValues$index = mergedValues[index]) === null || _mergedValues$index === void 0 ? void 0 : _mergedValues$index.value) !== (newVal === null || newVal === void 0 ? void 0 : newVal.value);\n    }))) {\n      var returnValues = labelInValue ? labeledValues : labeledValues.map(function (v) {\n        return v.value;\n      });\n      var returnOptions = labeledValues.map(function (v) {\n        return injectPropsWithOption(getMixedOption(v.value));\n      });\n      onChange(\n      // Value\n      multiple ? returnValues : returnValues[0],\n      // Option\n      multiple ? returnOptions : returnOptions[0]);\n    }\n  };\n\n  // ======================= Accessibility ========================\n  var _React$useState = React.useState(null),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    activeValue = _React$useState2[0],\n    setActiveValue = _React$useState2[1];\n  var _React$useState3 = React.useState(0),\n    _React$useState4 = _slicedToArray(_React$useState3, 2),\n    accessibilityIndex = _React$useState4[0],\n    setAccessibilityIndex = _React$useState4[1];\n  var mergedDefaultActiveFirstOption = defaultActiveFirstOption !== undefined ? defaultActiveFirstOption : mode !== 'combobox';\n  var onActiveValue = React.useCallback(function (active, index) {\n    var _ref3 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n      _ref3$source = _ref3.source,\n      source = _ref3$source === void 0 ? 'keyboard' : _ref3$source;\n    setAccessibilityIndex(index);\n    if (backfill && mode === 'combobox' && active !== null && source === 'keyboard') {\n      setActiveValue(String(active));\n    }\n  }, [backfill, mode]);\n\n  // ========================= OptionList =========================\n  var triggerSelect = function triggerSelect(val, selected, type) {\n    var getSelectEnt = function getSelectEnt() {\n      var _option$key2;\n      var option = getMixedOption(val);\n      return [labelInValue ? {\n        label: option === null || option === void 0 ? void 0 : option[mergedFieldNames.label],\n        value: val,\n        key: (_option$key2 = option === null || option === void 0 ? void 0 : option.key) !== null && _option$key2 !== void 0 ? _option$key2 : val\n      } : val, injectPropsWithOption(option)];\n    };\n    if (selected && onSelect) {\n      var _getSelectEnt = getSelectEnt(),\n        _getSelectEnt2 = _slicedToArray(_getSelectEnt, 2),\n        wrappedValue = _getSelectEnt2[0],\n        _option = _getSelectEnt2[1];\n      onSelect(wrappedValue, _option);\n    } else if (!selected && onDeselect && type !== 'clear') {\n      var _getSelectEnt3 = getSelectEnt(),\n        _getSelectEnt4 = _slicedToArray(_getSelectEnt3, 2),\n        _wrappedValue = _getSelectEnt4[0],\n        _option2 = _getSelectEnt4[1];\n      onDeselect(_wrappedValue, _option2);\n    }\n  };\n\n  // Used for OptionList selection\n  var onInternalSelect = useRefFunc(function (val, info) {\n    var cloneValues;\n\n    // Single mode always trigger select only with option list\n    var mergedSelect = multiple ? info.selected : true;\n    if (mergedSelect) {\n      cloneValues = multiple ? [].concat(_toConsumableArray(mergedValues), [val]) : [val];\n    } else {\n      cloneValues = mergedValues.filter(function (v) {\n        return v.value !== val;\n      });\n    }\n    triggerChange(cloneValues);\n    triggerSelect(val, mergedSelect);\n\n    // Clean search value if single or configured\n    if (mode === 'combobox') {\n      // setSearchValue(String(val));\n      setActiveValue('');\n    } else if (!isMultiple || autoClearSearchValue) {\n      setSearchValue('');\n      setActiveValue('');\n    }\n  });\n\n  // ======================= Display Change =======================\n  // BaseSelect display values change\n  var onDisplayValuesChange = function onDisplayValuesChange(nextValues, info) {\n    triggerChange(nextValues);\n    var type = info.type,\n      values = info.values;\n    if (type === 'remove' || type === 'clear') {\n      values.forEach(function (item) {\n        triggerSelect(item.value, false, type);\n      });\n    }\n  };\n\n  // =========================== Search ===========================\n  var onInternalSearch = function onInternalSearch(searchText, info) {\n    setSearchValue(searchText);\n    setActiveValue(null);\n\n    // [Submit] Tag mode should flush input\n    if (info.source === 'submit') {\n      var formatted = (searchText || '').trim();\n      // prevent empty tags from appearing when you click the Enter button\n      if (formatted) {\n        var newRawValues = Array.from(new Set([].concat(_toConsumableArray(rawValues), [formatted])));\n        triggerChange(newRawValues);\n        triggerSelect(formatted, true);\n        setSearchValue('');\n      }\n      return;\n    }\n    if (info.source !== 'blur') {\n      if (mode === 'combobox') {\n        triggerChange(searchText);\n      }\n      onSearch === null || onSearch === void 0 || onSearch(searchText);\n    }\n  };\n  var onInternalSearchSplit = function onInternalSearchSplit(words) {\n    var patchValues = words;\n    if (mode !== 'tags') {\n      patchValues = words.map(function (word) {\n        var opt = labelOptions.get(word);\n        return opt === null || opt === void 0 ? void 0 : opt.value;\n      }).filter(function (val) {\n        return val !== undefined;\n      });\n    }\n    var newRawValues = Array.from(new Set([].concat(_toConsumableArray(rawValues), _toConsumableArray(patchValues))));\n    triggerChange(newRawValues);\n    newRawValues.forEach(function (newRawValue) {\n      triggerSelect(newRawValue, true);\n    });\n  };\n\n  // ========================== Context ===========================\n  var selectContext = React.useMemo(function () {\n    var realVirtual = virtual !== false && dropdownMatchSelectWidth !== false;\n    return _objectSpread(_objectSpread({}, parsedOptions), {}, {\n      flattenOptions: displayOptions,\n      onActiveValue: onActiveValue,\n      defaultActiveFirstOption: mergedDefaultActiveFirstOption,\n      onSelect: onInternalSelect,\n      menuItemSelectedIcon: menuItemSelectedIcon,\n      rawValues: rawValues,\n      fieldNames: mergedFieldNames,\n      virtual: realVirtual,\n      direction: direction,\n      listHeight: listHeight,\n      listItemHeight: listItemHeight,\n      childrenAsData: childrenAsData,\n      maxCount: maxCount,\n      optionRender: optionRender\n    });\n  }, [maxCount, parsedOptions, displayOptions, onActiveValue, mergedDefaultActiveFirstOption, onInternalSelect, menuItemSelectedIcon, rawValues, mergedFieldNames, virtual, dropdownMatchSelectWidth, direction, listHeight, listItemHeight, childrenAsData, optionRender]);\n\n  // ========================== Warning ===========================\n  if (process.env.NODE_ENV !== 'production') {\n    warningProps(props);\n    warningNullOptions(mergedOptions, mergedFieldNames);\n  }\n\n  // ==============================================================\n  // ==                          Render                          ==\n  // ==============================================================\n  return /*#__PURE__*/React.createElement(SelectContext.Provider, {\n    value: selectContext\n  }, /*#__PURE__*/React.createElement(BaseSelect, _extends({}, restProps, {\n    // >>> MISC\n    id: mergedId,\n    prefixCls: prefixCls,\n    ref: ref,\n    omitDomProps: OMIT_DOM_PROPS,\n    mode: mode\n    // >>> Values\n    ,\n    displayValues: displayValues,\n    onDisplayValuesChange: onDisplayValuesChange\n    // >>> Trigger\n    ,\n    direction: direction\n    // >>> Search\n    ,\n    searchValue: mergedSearchValue,\n    onSearch: onInternalSearch,\n    autoClearSearchValue: autoClearSearchValue,\n    onSearchSplit: onInternalSearchSplit,\n    dropdownMatchSelectWidth: dropdownMatchSelectWidth\n    // >>> OptionList\n    ,\n    OptionList: OptionList,\n    emptyOptions: !displayOptions.length\n    // >>> Accessibility\n    ,\n    activeValue: activeValue,\n    activeDescendantId: \"\".concat(mergedId, \"_list_\").concat(accessibilityIndex)\n  })));\n});\nif (process.env.NODE_ENV !== 'production') {\n  Select.displayName = 'Select';\n}\nvar TypedSelect = Select;\nTypedSelect.Option = Option;\nTypedSelect.OptGroup = OptGroup;\nexport default TypedSelect;","import classNames from 'classnames';\nconst _InputStatuses = ['warning', 'error', ''];\nexport function getStatusClassNames(prefixCls, status, hasFeedback) {\n  return classNames({\n    [`${prefixCls}-status-success`]: status === 'success',\n    [`${prefixCls}-status-warning`]: status === 'warning',\n    [`${prefixCls}-status-error`]: status === 'error',\n    [`${prefixCls}-status-validating`]: status === 'validating',\n    [`${prefixCls}-has-feedback`]: hasFeedback\n  });\n}\nexport const getMergedStatus = (contextStatus, customStatus) => customStatus || contextStatus;","\"use client\";\n\nimport * as React from 'react';\nimport { FastColor } from '@ant-design/fast-color';\nimport { useLocale } from '../locale';\nimport { useToken } from '../theme/internal';\nconst Empty = () => {\n  const [, token] = useToken();\n  const [locale] = useLocale('Empty');\n  const bgColor = new FastColor(token.colorBgBase);\n  // Dark Theme need more dark of this\n  const themeStyle = bgColor.toHsl().l < 0.5 ? {\n    opacity: 0.65\n  } : {};\n  return /*#__PURE__*/React.createElement(\"svg\", {\n    style: themeStyle,\n    width: \"184\",\n    height: \"152\",\n    viewBox: \"0 0 184 152\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, /*#__PURE__*/React.createElement(\"title\", null, (locale === null || locale === void 0 ? void 0 : locale.description) || 'Empty'), /*#__PURE__*/React.createElement(\"g\", {\n    fill: \"none\",\n    fillRule: \"evenodd\"\n  }, /*#__PURE__*/React.createElement(\"g\", {\n    transform: \"translate(24 31.67)\"\n  }, /*#__PURE__*/React.createElement(\"ellipse\", {\n    fillOpacity: \".8\",\n    fill: \"#F5F5F7\",\n    cx: \"67.797\",\n    cy: \"106.89\",\n    rx: \"67.797\",\n    ry: \"12.668\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M122.034 69.674L98.109 40.229c-1.148-1.386-2.826-2.225-4.593-2.225h-51.44c-1.766 0-3.444.839-4.592 2.225L13.56 69.674v15.383h108.475V69.674z\",\n    fill: \"#AEB8C2\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M101.537 86.214L80.63 61.102c-1.001-1.207-2.507-1.867-4.048-1.867H31.724c-1.54 0-3.047.66-4.048 1.867L6.769 86.214v13.792h94.768V86.214z\",\n    fill: \"url(#linearGradient-1)\",\n    transform: \"translate(13.56)\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M33.83 0h67.933a4 4 0 0 1 4 4v93.344a4 4 0 0 1-4 4H33.83a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z\",\n    fill: \"#F5F5F7\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M42.678 9.953h50.237a2 2 0 0 1 2 2V36.91a2 2 0 0 1-2 2H42.678a2 2 0 0 1-2-2V11.953a2 2 0 0 1 2-2zM42.94 49.767h49.713a2.262 2.262 0 1 1 0 4.524H42.94a2.262 2.262 0 0 1 0-4.524zM42.94 61.53h49.713a2.262 2.262 0 1 1 0 4.525H42.94a2.262 2.262 0 0 1 0-4.525zM121.813 105.032c-.775 3.071-3.497 5.36-6.735 5.36H20.515c-3.238 0-5.96-2.29-6.734-5.36a7.309 7.309 0 0 1-.222-1.79V69.675h26.318c2.907 0 5.25 2.448 5.25 5.42v.04c0 2.971 2.37 5.37 5.277 5.37h34.785c2.907 0 5.277-2.421 5.277-5.393V75.1c0-2.972 2.343-5.426 5.25-5.426h26.318v33.569c0 .617-.077 1.216-.221 1.789z\",\n    fill: \"#DCE0E6\"\n  })), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M149.121 33.292l-6.83 2.65a1 1 0 0 1-1.317-1.23l1.937-6.207c-2.589-2.944-4.109-6.534-4.109-10.408C138.802 8.102 148.92 0 161.402 0 173.881 0 184 8.102 184 18.097c0 9.995-10.118 18.097-22.599 18.097-4.528 0-8.744-1.066-12.28-2.902z\",\n    fill: \"#DCE0E6\"\n  }), /*#__PURE__*/React.createElement(\"g\", {\n    transform: \"translate(149.65 15.383)\",\n    fill: \"#FFF\"\n  }, /*#__PURE__*/React.createElement(\"ellipse\", {\n    cx: \"20.654\",\n    cy: \"3.167\",\n    rx: \"2.849\",\n    ry: \"2.815\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M5.698 5.63H0L2.898.704zM9.259.704h4.985V5.63H9.259z\"\n  }))));\n};\nif (process.env.NODE_ENV !== 'production') {\n  Empty.displayName = 'EmptyImage';\n}\nexport default Empty;","\"use client\";\n\nimport * as React from 'react';\nimport { useMemo } from 'react';\nimport { FastColor } from '@ant-design/fast-color';\nimport { useToken } from '../theme/internal';\nimport { useLocale } from '../locale';\nconst Simple = () => {\n  const [, token] = useToken();\n  const [locale] = useLocale('Empty');\n  const {\n    colorFill,\n    colorFillTertiary,\n    colorFillQuaternary,\n    colorBgContainer\n  } = token;\n  const {\n    borderColor,\n    shadowColor,\n    contentColor\n  } = useMemo(() => ({\n    borderColor: new FastColor(colorFill).onBackground(colorBgContainer).toHexString(),\n    shadowColor: new FastColor(colorFillTertiary).onBackground(colorBgContainer).toHexString(),\n    contentColor: new FastColor(colorFillQuaternary).onBackground(colorBgContainer).toHexString()\n  }), [colorFill, colorFillTertiary, colorFillQuaternary, colorBgContainer]);\n  return /*#__PURE__*/React.createElement(\"svg\", {\n    width: \"64\",\n    height: \"41\",\n    viewBox: \"0 0 64 41\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, /*#__PURE__*/React.createElement(\"title\", null, (locale === null || locale === void 0 ? void 0 : locale.description) || 'Empty'), /*#__PURE__*/React.createElement(\"g\", {\n    transform: \"translate(0 1)\",\n    fill: \"none\",\n    fillRule: \"evenodd\"\n  }, /*#__PURE__*/React.createElement(\"ellipse\", {\n    fill: shadowColor,\n    cx: \"32\",\n    cy: \"33\",\n    rx: \"32\",\n    ry: \"7\"\n  }), /*#__PURE__*/React.createElement(\"g\", {\n    fillRule: \"nonzero\",\n    stroke: borderColor\n  }, /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\",\n    fill: contentColor\n  }))));\n};\nif (process.env.NODE_ENV !== 'production') {\n  Simple.displayName = 'SimpleImage';\n}\nexport default Simple;","import { genStyleHooks, mergeToken } from '../../theme/internal';\n// ============================== Shared ==============================\nconst genSharedEmptyStyle = token => {\n  const {\n    componentCls,\n    margin,\n    marginXS,\n    marginXL,\n    fontSize,\n    lineHeight\n  } = token;\n  return {\n    [componentCls]: {\n      marginInline: marginXS,\n      fontSize,\n      lineHeight,\n      textAlign: 'center',\n      // 原来 &-image 没有父子结构，现在为了外层承担我们的 hashId，改成父子结构\n      [`${componentCls}-image`]: {\n        height: token.emptyImgHeight,\n        marginBottom: marginXS,\n        opacity: token.opacityImage,\n        img: {\n          height: '100%'\n        },\n        svg: {\n          maxWidth: '100%',\n          height: '100%',\n          margin: 'auto'\n        }\n      },\n      [`${componentCls}-description`]: {\n        color: token.colorTextDescription\n      },\n      // 原来 &-footer 没有父子结构，现在为了外层承担我们的 hashId，改成父子结构\n      [`${componentCls}-footer`]: {\n        marginTop: margin\n      },\n      '&-normal': {\n        marginBlock: marginXL,\n        color: token.colorTextDescription,\n        [`${componentCls}-description`]: {\n          color: token.colorTextDescription\n        },\n        [`${componentCls}-image`]: {\n          height: token.emptyImgHeightMD\n        }\n      },\n      '&-small': {\n        marginBlock: marginXS,\n        color: token.colorTextDescription,\n        [`${componentCls}-image`]: {\n          height: token.emptyImgHeightSM\n        }\n      }\n    }\n  };\n};\n// ============================== Export ==============================\nexport default genStyleHooks('Empty', token => {\n  const {\n    componentCls,\n    controlHeightLG,\n    calc\n  } = token;\n  const emptyToken = mergeToken(token, {\n    emptyImgCls: `${componentCls}-img`,\n    emptyImgHeight: calc(controlHeightLG).mul(2.5).equal(),\n    emptyImgHeightMD: controlHeightLG,\n    emptyImgHeightSM: calc(controlHeightLG).mul(0.875).equal()\n  });\n  return [genSharedEmptyStyle(emptyToken)];\n});","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { devUseWarning } from '../_util/warning';\nimport { useLocale } from '../locale';\nimport DefaultEmptyImg from './empty';\nimport SimpleEmptyImg from './simple';\nimport useStyle from './style';\nimport { useComponentConfig } from '../config-provider/context';\nconst defaultEmptyImg = /*#__PURE__*/React.createElement(DefaultEmptyImg, null);\nconst simpleEmptyImg = /*#__PURE__*/React.createElement(SimpleEmptyImg, null);\nconst Empty = props => {\n  const {\n      className,\n      rootClassName,\n      prefixCls: customizePrefixCls,\n      image = defaultEmptyImg,\n      description,\n      children,\n      imageStyle,\n      style,\n      classNames: emptyClassNames,\n      styles\n    } = props,\n    restProps = __rest(props, [\"className\", \"rootClassName\", \"prefixCls\", \"image\", \"description\", \"children\", \"imageStyle\", \"style\", \"classNames\", \"styles\"]);\n  const {\n    getPrefixCls,\n    direction,\n    className: contextClassName,\n    style: contextStyle,\n    classNames: contextClassNames,\n    styles: contextStyles\n  } = useComponentConfig('empty');\n  const prefixCls = getPrefixCls('empty', customizePrefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  const [locale] = useLocale('Empty');\n  const des = typeof description !== 'undefined' ? description : locale === null || locale === void 0 ? void 0 : locale.description;\n  const alt = typeof des === 'string' ? des : 'empty';\n  let imageNode = null;\n  if (typeof image === 'string') {\n    imageNode = /*#__PURE__*/React.createElement(\"img\", {\n      alt: alt,\n      src: image\n    });\n  } else {\n    imageNode = image;\n  }\n  // ============================= Warning ==============================\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('Empty');\n    [['imageStyle', 'styles: { image: {} }']].forEach(([deprecatedName, newName]) => {\n      warning.deprecated(!(deprecatedName in props), deprecatedName, newName);\n    });\n  }\n  return wrapCSSVar(/*#__PURE__*/React.createElement(\"div\", Object.assign({\n    className: classNames(hashId, cssVarCls, prefixCls, contextClassName, {\n      [`${prefixCls}-normal`]: image === simpleEmptyImg,\n      [`${prefixCls}-rtl`]: direction === 'rtl'\n    }, className, rootClassName, contextClassNames.root, emptyClassNames === null || emptyClassNames === void 0 ? void 0 : emptyClassNames.root),\n    style: Object.assign(Object.assign(Object.assign(Object.assign({}, contextStyles.root), contextStyle), styles === null || styles === void 0 ? void 0 : styles.root), style)\n  }, restProps), /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(`${prefixCls}-image`, contextClassNames.image, emptyClassNames === null || emptyClassNames === void 0 ? void 0 : emptyClassNames.image),\n    style: Object.assign(Object.assign(Object.assign({}, imageStyle), contextStyles.image), styles === null || styles === void 0 ? void 0 : styles.image)\n  }, imageNode), des && (/*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(`${prefixCls}-description`, contextClassNames.description, emptyClassNames === null || emptyClassNames === void 0 ? void 0 : emptyClassNames.description),\n    style: Object.assign(Object.assign({}, contextStyles.description), styles === null || styles === void 0 ? void 0 : styles.description)\n  }, des)), children && (/*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(`${prefixCls}-footer`, contextClassNames.footer, emptyClassNames === null || emptyClassNames === void 0 ? void 0 : emptyClassNames.footer),\n    style: Object.assign(Object.assign({}, contextStyles.footer), styles === null || styles === void 0 ? void 0 : styles.footer)\n  }, children))));\n};\nEmpty.PRESENTED_IMAGE_DEFAULT = defaultEmptyImg;\nEmpty.PRESENTED_IMAGE_SIMPLE = simpleEmptyImg;\nif (process.env.NODE_ENV !== 'production') {\n  Empty.displayName = 'Empty';\n}\nexport default Empty;","\"use client\";\n\nimport React, { useContext } from 'react';\nimport { ConfigContext } from '.';\nimport Empty from '../empty';\nconst DefaultRenderEmpty = props => {\n  const {\n    componentName\n  } = props;\n  const {\n    getPrefixCls\n  } = useContext(ConfigContext);\n  const prefix = getPrefixCls('empty');\n  switch (componentName) {\n    case 'Table':\n    case 'List':\n      return /*#__PURE__*/React.createElement(Empty, {\n        image: Empty.PRESENTED_IMAGE_SIMPLE\n      });\n    case 'Select':\n    case 'TreeSelect':\n    case 'Cascader':\n    case 'Transfer':\n    case 'Mentions':\n      return /*#__PURE__*/React.createElement(Empty, {\n        image: Empty.PRESENTED_IMAGE_SIMPLE,\n        className: `${prefix}-small`\n      });\n    /**\n     * This type of component should satisfy the nullish coalescing operator(??) on the left-hand side.\n     * to let the component itself implement the logic.\n     * For example `Table.filter`.\n     */\n    case 'Table.filter':\n      // why `null`? legacy react16 node type `undefined` is not allowed.\n      return null;\n    default:\n      // Should never hit if we take all the component into consider.\n      return /*#__PURE__*/React.createElement(Empty, null);\n  }\n};\nexport default DefaultRenderEmpty;","import * as React from 'react';\nimport { VariantContext } from '../context';\nimport { ConfigContext, Variants } from '../../config-provider';\n/**\n * Compatible for legacy `bordered` prop.\n */\nconst useVariant = (component, variant, legacyBordered = undefined) => {\n  var _a, _b;\n  const {\n    variant: configVariant,\n    [component]: componentConfig\n  } = React.useContext(ConfigContext);\n  const ctxVariant = React.useContext(VariantContext);\n  const configComponentVariant = componentConfig === null || componentConfig === void 0 ? void 0 : componentConfig.variant;\n  let mergedVariant;\n  if (typeof variant !== 'undefined') {\n    mergedVariant = variant;\n  } else if (legacyBordered === false) {\n    mergedVariant = 'borderless';\n  } else {\n    // form variant > component global variant > global variant\n    mergedVariant = (_b = (_a = ctxVariant !== null && ctxVariant !== void 0 ? ctxVariant : configComponentVariant) !== null && _a !== void 0 ? _a : configVariant) !== null && _b !== void 0 ? _b : 'outlined';\n  }\n  const enableVariantCls = Variants.includes(mergedVariant);\n  return [mergedVariant, enableVariantCls];\n};\nexport default useVariant;","const getBuiltInPlacements = popupOverflow => {\n  const htmlRegion = popupOverflow === 'scroll' ? 'scroll' : 'visible';\n  const sharedConfig = {\n    overflow: {\n      adjustX: true,\n      adjustY: true,\n      shiftY: true\n    },\n    htmlRegion,\n    dynamicInset: true\n  };\n  return {\n    bottomLeft: Object.assign(Object.assign({}, sharedConfig), {\n      points: ['tl', 'bl'],\n      offset: [0, 4]\n    }),\n    bottomRight: Object.assign(Object.assign({}, sharedConfig), {\n      points: ['tr', 'br'],\n      offset: [0, 4]\n    }),\n    topLeft: Object.assign(Object.assign({}, sharedConfig), {\n      points: ['bl', 'tl'],\n      offset: [0, -4]\n    }),\n    topRight: Object.assign(Object.assign({}, sharedConfig), {\n      points: ['br', 'tr'],\n      offset: [0, -4]\n    })\n  };\n};\nfunction mergedBuiltinPlacements(buildInPlacements, popupOverflow) {\n  return buildInPlacements || getBuiltInPlacements(popupOverflow);\n}\nexport default mergedBuiltinPlacements;","import { resetComponent, textEllipsis } from '../../style';\nimport { initMoveMotion, initSlideMotion, slideDownIn, slideDownOut, slideUpIn, slideUpOut } from '../../style/motion';\nconst genItemStyle = token => {\n  const {\n    optionHeight,\n    optionFontSize,\n    optionLineHeight,\n    optionPadding\n  } = token;\n  return {\n    position: 'relative',\n    display: 'block',\n    minHeight: optionHeight,\n    padding: optionPadding,\n    color: token.colorText,\n    fontWeight: 'normal',\n    fontSize: optionFontSize,\n    lineHeight: optionLineHeight,\n    boxSizing: 'border-box'\n  };\n};\nconst genSingleStyle = token => {\n  const {\n    antCls,\n    componentCls\n  } = token;\n  const selectItemCls = `${componentCls}-item`;\n  const slideUpEnterActive = `&${antCls}-slide-up-enter${antCls}-slide-up-enter-active`;\n  const slideUpAppearActive = `&${antCls}-slide-up-appear${antCls}-slide-up-appear-active`;\n  const slideUpLeaveActive = `&${antCls}-slide-up-leave${antCls}-slide-up-leave-active`;\n  const dropdownPlacementCls = `${componentCls}-dropdown-placement-`;\n  const selectedItemCls = `${selectItemCls}-option-selected`;\n  return [{\n    [`${componentCls}-dropdown`]: Object.assign(Object.assign({}, resetComponent(token)), {\n      position: 'absolute',\n      top: -9999,\n      zIndex: token.zIndexPopup,\n      boxSizing: 'border-box',\n      padding: token.paddingXXS,\n      overflow: 'hidden',\n      fontSize: token.fontSize,\n      // Fix select render lag of long text in chrome\n      // https://github.com/ant-design/ant-design/issues/11456\n      // https://github.com/ant-design/ant-design/issues/11843\n      fontVariant: 'initial',\n      backgroundColor: token.colorBgElevated,\n      borderRadius: token.borderRadiusLG,\n      outline: 'none',\n      boxShadow: token.boxShadowSecondary,\n      [`\n          ${slideUpEnterActive}${dropdownPlacementCls}bottomLeft,\n          ${slideUpAppearActive}${dropdownPlacementCls}bottomLeft\n        `]: {\n        animationName: slideUpIn\n      },\n      [`\n          ${slideUpEnterActive}${dropdownPlacementCls}topLeft,\n          ${slideUpAppearActive}${dropdownPlacementCls}topLeft,\n          ${slideUpEnterActive}${dropdownPlacementCls}topRight,\n          ${slideUpAppearActive}${dropdownPlacementCls}topRight\n        `]: {\n        animationName: slideDownIn\n      },\n      [`${slideUpLeaveActive}${dropdownPlacementCls}bottomLeft`]: {\n        animationName: slideUpOut\n      },\n      [`\n          ${slideUpLeaveActive}${dropdownPlacementCls}topLeft,\n          ${slideUpLeaveActive}${dropdownPlacementCls}topRight\n        `]: {\n        animationName: slideDownOut\n      },\n      '&-hidden': {\n        display: 'none'\n      },\n      [selectItemCls]: Object.assign(Object.assign({}, genItemStyle(token)), {\n        cursor: 'pointer',\n        transition: `background ${token.motionDurationSlow} ease`,\n        borderRadius: token.borderRadiusSM,\n        // =========== Group ============\n        '&-group': {\n          color: token.colorTextDescription,\n          fontSize: token.fontSizeSM,\n          cursor: 'default'\n        },\n        // =========== Option ===========\n        '&-option': {\n          display: 'flex',\n          '&-content': Object.assign({\n            flex: 'auto'\n          }, textEllipsis),\n          '&-state': {\n            flex: 'none',\n            display: 'flex',\n            alignItems: 'center'\n          },\n          [`&-active:not(${selectItemCls}-option-disabled)`]: {\n            backgroundColor: token.optionActiveBg\n          },\n          [`&-selected:not(${selectItemCls}-option-disabled)`]: {\n            color: token.optionSelectedColor,\n            fontWeight: token.optionSelectedFontWeight,\n            backgroundColor: token.optionSelectedBg,\n            [`${selectItemCls}-option-state`]: {\n              color: token.colorPrimary\n            }\n          },\n          '&-disabled': {\n            [`&${selectItemCls}-option-selected`]: {\n              backgroundColor: token.colorBgContainerDisabled\n            },\n            color: token.colorTextDisabled,\n            cursor: 'not-allowed'\n          },\n          '&-grouped': {\n            paddingInlineStart: token.calc(token.controlPaddingHorizontal).mul(2).equal()\n          }\n        },\n        '&-empty': Object.assign(Object.assign({}, genItemStyle(token)), {\n          color: token.colorTextDisabled\n        })\n      }),\n      // https://github.com/ant-design/ant-design/pull/46646\n      [`${selectedItemCls}:has(+ ${selectedItemCls})`]: {\n        borderEndStartRadius: 0,\n        borderEndEndRadius: 0,\n        [`& + ${selectedItemCls}`]: {\n          borderStartStartRadius: 0,\n          borderStartEndRadius: 0\n        }\n      },\n      // =========================== RTL ===========================\n      '&-rtl': {\n        direction: 'rtl'\n      }\n    })\n  },\n  // Follow code may reuse in other components\n  initSlideMotion(token, 'slide-up'), initSlideMotion(token, 'slide-down'), initMoveMotion(token, 'move-up'), initMoveMotion(token, 'move-down')];\n};\nexport default genSingleStyle;","import { unit } from '@ant-design/cssinjs';\nimport { resetIcon } from '../../style';\nimport { mergeToken } from '../../theme/internal';\n/**\n * Get multiple selector needed style. The calculation:\n *\n * ContainerPadding = BasePadding - ItemMargin\n *\n * Border:                    ╔═══════════════════════════╗                 ┬\n * ContainerPadding:          ║                           ║                 │\n *                            ╟───────────────────────────╢     ┬           │\n * Item Margin:               ║                           ║     │           │\n *                            ║             ┌──────────┐  ║     │           │\n * Item(multipleItemHeight):  ║ BasePadding │   Item   │  ║  Overflow  Container(ControlHeight)\n *                            ║             └──────────┘  ║     │           │\n * Item Margin:               ║                           ║     │           │\n *                            ╟───────────────────────────╢     ┴           │\n * ContainerPadding:          ║                           ║                 │\n * Border:                    ╚═══════════════════════════╝                 ┴\n */\nexport const getMultipleSelectorUnit = token => {\n  const {\n    multipleSelectItemHeight,\n    paddingXXS,\n    lineWidth,\n    INTERNAL_FIXED_ITEM_MARGIN\n  } = token;\n  const basePadding = token.max(token.calc(paddingXXS).sub(lineWidth).equal(), 0);\n  const containerPadding = token.max(token.calc(basePadding).sub(INTERNAL_FIXED_ITEM_MARGIN).equal(), 0);\n  return {\n    basePadding,\n    containerPadding,\n    itemHeight: unit(multipleSelectItemHeight),\n    itemLineHeight: unit(token.calc(multipleSelectItemHeight).sub(token.calc(token.lineWidth).mul(2)).equal())\n  };\n};\nconst getSelectItemStyle = token => {\n  const {\n    multipleSelectItemHeight,\n    selectHeight,\n    lineWidth\n  } = token;\n  const selectItemDist = token.calc(selectHeight).sub(multipleSelectItemHeight).div(2).sub(lineWidth).equal();\n  return selectItemDist;\n};\n/**\n * Get the `rc-overflow` needed style.\n * It's a share style which means not affected by `size`.\n */\nexport const genOverflowStyle = token => {\n  const {\n    componentCls,\n    iconCls,\n    borderRadiusSM,\n    motionDurationSlow,\n    paddingXS,\n    multipleItemColorDisabled,\n    multipleItemBorderColorDisabled,\n    colorIcon,\n    colorIconHover,\n    INTERNAL_FIXED_ITEM_MARGIN\n  } = token;\n  const selectOverflowPrefixCls = `${componentCls}-selection-overflow`;\n  return {\n    /**\n     * Do not merge `height` & `line-height` under style with `selection` & `search`, since chrome\n     * may update to redesign with its align logic.\n     */\n    // =========================== Overflow ===========================\n    [selectOverflowPrefixCls]: {\n      position: 'relative',\n      display: 'flex',\n      flex: 'auto',\n      flexWrap: 'wrap',\n      maxWidth: '100%',\n      '&-item': {\n        flex: 'none',\n        alignSelf: 'center',\n        // https://github.com/ant-design/ant-design/issues/54179\n        maxWidth: 'calc(100% - 4px)',\n        display: 'inline-flex'\n      },\n      // ======================== Selections ==========================\n      [`${componentCls}-selection-item`]: {\n        display: 'flex',\n        alignSelf: 'center',\n        flex: 'none',\n        boxSizing: 'border-box',\n        maxWidth: '100%',\n        marginBlock: INTERNAL_FIXED_ITEM_MARGIN,\n        borderRadius: borderRadiusSM,\n        cursor: 'default',\n        transition: `font-size ${motionDurationSlow}, line-height ${motionDurationSlow}, height ${motionDurationSlow}`,\n        marginInlineEnd: token.calc(INTERNAL_FIXED_ITEM_MARGIN).mul(2).equal(),\n        paddingInlineStart: paddingXS,\n        paddingInlineEnd: token.calc(paddingXS).div(2).equal(),\n        [`${componentCls}-disabled&`]: {\n          color: multipleItemColorDisabled,\n          borderColor: multipleItemBorderColorDisabled,\n          cursor: 'not-allowed'\n        },\n        // It's ok not to do this, but 24px makes bottom narrow in view should adjust\n        '&-content': {\n          display: 'inline-block',\n          marginInlineEnd: token.calc(paddingXS).div(2).equal(),\n          overflow: 'hidden',\n          whiteSpace: 'pre',\n          // fix whitespace wrapping. custom tags display all whitespace within.\n          textOverflow: 'ellipsis'\n        },\n        '&-remove': Object.assign(Object.assign({}, resetIcon()), {\n          display: 'inline-flex',\n          alignItems: 'center',\n          color: colorIcon,\n          fontWeight: 'bold',\n          fontSize: 10,\n          lineHeight: 'inherit',\n          cursor: 'pointer',\n          [`> ${iconCls}`]: {\n            verticalAlign: '-0.2em'\n          },\n          '&:hover': {\n            color: colorIconHover\n          }\n        })\n      }\n    }\n  };\n};\nconst genSelectionStyle = (token, suffix) => {\n  const {\n    componentCls,\n    INTERNAL_FIXED_ITEM_MARGIN\n  } = token;\n  const selectOverflowPrefixCls = `${componentCls}-selection-overflow`;\n  const selectItemHeight = token.multipleSelectItemHeight;\n  const selectItemDist = getSelectItemStyle(token);\n  const suffixCls = suffix ? `${componentCls}-${suffix}` : '';\n  const multipleSelectorUnit = getMultipleSelectorUnit(token);\n  return {\n    [`${componentCls}-multiple${suffixCls}`]: Object.assign(Object.assign({}, genOverflowStyle(token)), {\n      // ========================= Selector =========================\n      [`${componentCls}-selector`]: {\n        display: 'flex',\n        alignItems: 'center',\n        width: '100%',\n        height: '100%',\n        // Multiple is little different that horizontal is follow the vertical\n        paddingInline: multipleSelectorUnit.basePadding,\n        paddingBlock: multipleSelectorUnit.containerPadding,\n        borderRadius: token.borderRadius,\n        [`${componentCls}-disabled&`]: {\n          background: token.multipleSelectorBgDisabled,\n          cursor: 'not-allowed'\n        },\n        '&:after': {\n          display: 'inline-block',\n          width: 0,\n          margin: `${unit(INTERNAL_FIXED_ITEM_MARGIN)} 0`,\n          lineHeight: unit(selectItemHeight),\n          visibility: 'hidden',\n          content: '\"\\\\a0\"'\n        }\n      },\n      // ======================== Selections ========================\n      [`${componentCls}-selection-item`]: {\n        height: multipleSelectorUnit.itemHeight,\n        lineHeight: unit(multipleSelectorUnit.itemLineHeight)\n      },\n      // ========================== Wrap ===========================\n      [`${componentCls}-selection-wrap`]: {\n        alignSelf: 'flex-start',\n        '&:after': {\n          lineHeight: unit(selectItemHeight),\n          marginBlock: INTERNAL_FIXED_ITEM_MARGIN\n        }\n      },\n      // ========================== Input ==========================\n      [`${componentCls}-prefix`]: {\n        marginInlineStart: token.calc(token.inputPaddingHorizontalBase).sub(multipleSelectorUnit.basePadding).equal()\n      },\n      [`${selectOverflowPrefixCls}-item + ${selectOverflowPrefixCls}-item,\n        ${componentCls}-prefix + ${componentCls}-selection-wrap\n      `]: {\n        [`${componentCls}-selection-search`]: {\n          marginInlineStart: 0\n        },\n        [`${componentCls}-selection-placeholder`]: {\n          insetInlineStart: 0\n        }\n      },\n      // https://github.com/ant-design/ant-design/issues/44754\n      // Same as `wrap:after`\n      [`${selectOverflowPrefixCls}-item-suffix`]: {\n        minHeight: multipleSelectorUnit.itemHeight,\n        marginBlock: INTERNAL_FIXED_ITEM_MARGIN\n      },\n      [`${componentCls}-selection-search`]: {\n        display: 'inline-flex',\n        position: 'relative',\n        maxWidth: '100%',\n        marginInlineStart: token.calc(token.inputPaddingHorizontalBase).sub(selectItemDist).equal(),\n        [`\n          &-input,\n          &-mirror\n        `]: {\n          height: selectItemHeight,\n          fontFamily: token.fontFamily,\n          lineHeight: unit(selectItemHeight),\n          transition: `all ${token.motionDurationSlow}`\n        },\n        '&-input': {\n          width: '100%',\n          minWidth: 4.1 // fix search cursor missing\n        },\n        '&-mirror': {\n          position: 'absolute',\n          top: 0,\n          insetInlineStart: 0,\n          insetInlineEnd: 'auto',\n          zIndex: 999,\n          whiteSpace: 'pre',\n          // fix whitespace wrapping caused width calculation bug\n          visibility: 'hidden'\n        }\n      },\n      // ======================= Placeholder =======================\n      [`${componentCls}-selection-placeholder`]: {\n        position: 'absolute',\n        top: '50%',\n        insetInlineStart: token.calc(token.inputPaddingHorizontalBase).sub(multipleSelectorUnit.basePadding).equal(),\n        insetInlineEnd: token.inputPaddingHorizontalBase,\n        transform: 'translateY(-50%)',\n        transition: `all ${token.motionDurationSlow}`\n      }\n    })\n  };\n};\nfunction genSizeStyle(token, suffix) {\n  const {\n    componentCls\n  } = token;\n  const suffixCls = suffix ? `${componentCls}-${suffix}` : '';\n  const rawStyle = {\n    [`${componentCls}-multiple${suffixCls}`]: {\n      fontSize: token.fontSize,\n      // ========================= Selector =========================\n      [`${componentCls}-selector`]: {\n        [`${componentCls}-show-search&`]: {\n          cursor: 'text'\n        }\n      },\n      [`\n        &${componentCls}-show-arrow ${componentCls}-selector,\n        &${componentCls}-allow-clear ${componentCls}-selector\n      `]: {\n        paddingInlineEnd: token.calc(token.fontSizeIcon).add(token.controlPaddingHorizontal).equal()\n      }\n    }\n  };\n  return [genSelectionStyle(token, suffix), rawStyle];\n}\nconst genMultipleStyle = token => {\n  const {\n    componentCls\n  } = token;\n  const smallToken = mergeToken(token, {\n    selectHeight: token.controlHeightSM,\n    multipleSelectItemHeight: token.multipleItemHeightSM,\n    borderRadius: token.borderRadiusSM,\n    borderRadiusSM: token.borderRadiusXS\n  });\n  const largeToken = mergeToken(token, {\n    fontSize: token.fontSizeLG,\n    selectHeight: token.controlHeightLG,\n    multipleSelectItemHeight: token.multipleItemHeightLG,\n    borderRadius: token.borderRadiusLG,\n    borderRadiusSM: token.borderRadius\n  });\n  return [genSizeStyle(token),\n  // ======================== Small ========================\n  genSizeStyle(smallToken, 'sm'),\n  // Padding\n  {\n    [`${componentCls}-multiple${componentCls}-sm`]: {\n      [`${componentCls}-selection-placeholder`]: {\n        insetInline: token.calc(token.controlPaddingHorizontalSM).sub(token.lineWidth).equal()\n      },\n      // https://github.com/ant-design/ant-design/issues/29559\n      [`${componentCls}-selection-search`]: {\n        marginInlineStart: 2 // Magic Number\n      }\n    }\n  },\n  // ======================== Large ========================\n  genSizeStyle(largeToken, 'lg')];\n};\nexport default genMultipleStyle;","import { unit } from '@ant-design/cssinjs';\nimport { resetComponent } from '../../style';\nimport { mergeToken } from '../../theme/internal';\nfunction genSizeStyle(token, suffix) {\n  const {\n    componentCls,\n    inputPaddingHorizontalBase,\n    borderRadius\n  } = token;\n  const selectHeightWithoutBorder = token.calc(token.controlHeight).sub(token.calc(token.lineWidth).mul(2)).equal();\n  const suffixCls = suffix ? `${componentCls}-${suffix}` : '';\n  return {\n    [`${componentCls}-single${suffixCls}`]: {\n      fontSize: token.fontSize,\n      height: token.controlHeight,\n      // ========================= Selector =========================\n      [`${componentCls}-selector`]: Object.assign(Object.assign({}, resetComponent(token, true)), {\n        display: 'flex',\n        borderRadius,\n        flex: '1 1 auto',\n        [`${componentCls}-selection-wrap:after`]: {\n          lineHeight: unit(selectHeightWithoutBorder)\n        },\n        [`${componentCls}-selection-search`]: {\n          position: 'absolute',\n          inset: 0,\n          width: '100%',\n          '&-input': {\n            width: '100%',\n            WebkitAppearance: 'textfield'\n          }\n        },\n        [`\n          ${componentCls}-selection-item,\n          ${componentCls}-selection-placeholder\n        `]: {\n          display: 'block',\n          padding: 0,\n          lineHeight: unit(selectHeightWithoutBorder),\n          transition: `all ${token.motionDurationSlow}, visibility 0s`,\n          alignSelf: 'center'\n        },\n        [`${componentCls}-selection-placeholder`]: {\n          transition: 'none',\n          pointerEvents: 'none'\n        },\n        // For common baseline align\n        [['&:after', /* For '' value baseline align */\n        `${componentCls}-selection-item:empty:after`, /* For undefined value baseline align */\n        `${componentCls}-selection-placeholder:empty:after`].join(',')]: {\n          display: 'inline-block',\n          width: 0,\n          visibility: 'hidden',\n          content: '\"\\\\a0\"'\n        }\n      }),\n      [`\n        &${componentCls}-show-arrow ${componentCls}-selection-item,\n        &${componentCls}-show-arrow ${componentCls}-selection-search,\n        &${componentCls}-show-arrow ${componentCls}-selection-placeholder\n      `]: {\n        paddingInlineEnd: token.showArrowPaddingInlineEnd\n      },\n      // Opacity selection if open\n      [`&${componentCls}-open ${componentCls}-selection-item`]: {\n        color: token.colorTextPlaceholder\n      },\n      // ========================== Input ==========================\n      // We only change the style of non-customize input which is only support by `combobox` mode.\n      // Not customize\n      [`&:not(${componentCls}-customize-input)`]: {\n        [`${componentCls}-selector`]: {\n          width: '100%',\n          height: '100%',\n          alignItems: 'center',\n          padding: `0 ${unit(inputPaddingHorizontalBase)}`,\n          [`${componentCls}-selection-search-input`]: {\n            height: selectHeightWithoutBorder,\n            fontSize: token.fontSize\n          },\n          '&:after': {\n            lineHeight: unit(selectHeightWithoutBorder)\n          }\n        }\n      },\n      [`&${componentCls}-customize-input`]: {\n        [`${componentCls}-selector`]: {\n          '&:after': {\n            display: 'none'\n          },\n          [`${componentCls}-selection-search`]: {\n            position: 'static',\n            width: '100%'\n          },\n          [`${componentCls}-selection-placeholder`]: {\n            position: 'absolute',\n            insetInlineStart: 0,\n            insetInlineEnd: 0,\n            padding: `0 ${unit(inputPaddingHorizontalBase)}`,\n            '&:after': {\n              display: 'none'\n            }\n          }\n        }\n      }\n    }\n  };\n}\nexport default function genSingleStyle(token) {\n  const {\n    componentCls\n  } = token;\n  const inputPaddingHorizontalSM = token.calc(token.controlPaddingHorizontalSM).sub(token.lineWidth).equal();\n  return [genSizeStyle(token),\n  // ======================== Small ========================\n  // Shared\n  genSizeStyle(mergeToken(token, {\n    controlHeight: token.controlHeightSM,\n    borderRadius: token.borderRadiusSM\n  }), 'sm'),\n  // padding\n  {\n    [`${componentCls}-single${componentCls}-sm`]: {\n      [`&:not(${componentCls}-customize-input)`]: {\n        [`${componentCls}-selector`]: {\n          padding: `0 ${unit(inputPaddingHorizontalSM)}`\n        },\n        // With arrow should provides `padding-right` to show the arrow\n        [`&${componentCls}-show-arrow ${componentCls}-selection-search`]: {\n          insetInlineEnd: token.calc(inputPaddingHorizontalSM).add(token.calc(token.fontSize).mul(1.5)).equal()\n        },\n        [`\n            &${componentCls}-show-arrow ${componentCls}-selection-item,\n            &${componentCls}-show-arrow ${componentCls}-selection-placeholder\n          `]: {\n          paddingInlineEnd: token.calc(token.fontSize).mul(1.5).equal()\n        }\n      }\n    }\n  },\n  // ======================== Large ========================\n  // Shared\n  genSizeStyle(mergeToken(token, {\n    controlHeight: token.singleItemHeightLG,\n    fontSize: token.fontSizeLG,\n    borderRadius: token.borderRadiusLG\n  }), 'lg')];\n}","export const prepareComponentToken = token => {\n  const {\n    fontSize,\n    lineHeight,\n    lineWidth,\n    controlHeight,\n    controlHeightSM,\n    controlHeightLG,\n    paddingXXS,\n    controlPaddingHorizontal,\n    zIndexPopupBase,\n    colorText,\n    fontWeightStrong,\n    controlItemBgActive,\n    controlItemBgHover,\n    colorBgContainer,\n    colorFillSecondary,\n    colorBgContainerDisabled,\n    colorTextDisabled,\n    colorPrimaryHover,\n    colorPrimary,\n    controlOutline\n  } = token;\n  // Item height default use `controlHeight - 2 * paddingXXS`,\n  // but some case `paddingXXS=0`.\n  // Let's fallback it.\n  const dblPaddingXXS = paddingXXS * 2;\n  const dblLineWidth = lineWidth * 2;\n  const multipleItemHeight = Math.min(controlHeight - dblPaddingXXS, controlHeight - dblLineWidth);\n  const multipleItemHeightSM = Math.min(controlHeightSM - dblPaddingXXS, controlHeightSM - dblLineWidth);\n  const multipleItemHeightLG = Math.min(controlHeightLG - dblPaddingXXS, controlHeightLG - dblLineWidth);\n  // FIXED_ITEM_MARGIN is a hardcode calculation since calc not support rounding\n  const INTERNAL_FIXED_ITEM_MARGIN = Math.floor(paddingXXS / 2);\n  return {\n    INTERNAL_FIXED_ITEM_MARGIN,\n    zIndexPopup: zIndexPopupBase + 50,\n    optionSelectedColor: colorText,\n    optionSelectedFontWeight: fontWeightStrong,\n    optionSelectedBg: controlItemBgActive,\n    optionActiveBg: controlItemBgHover,\n    optionPadding: `${(controlHeight - fontSize * lineHeight) / 2}px ${controlPaddingHorizontal}px`,\n    optionFontSize: fontSize,\n    optionLineHeight: lineHeight,\n    optionHeight: controlHeight,\n    selectorBg: colorBgContainer,\n    clearBg: colorBgContainer,\n    singleItemHeightLG: controlHeightLG,\n    multipleItemBg: colorFillSecondary,\n    multipleItemBorderColor: 'transparent',\n    multipleItemHeight,\n    multipleItemHeightSM,\n    multipleItemHeightLG,\n    multipleSelectorBgDisabled: colorBgContainerDisabled,\n    multipleItemColorDisabled: colorTextDisabled,\n    multipleItemBorderColorDisabled: 'transparent',\n    showArrowPaddingInlineEnd: Math.ceil(token.fontSize * 1.25),\n    hoverBorderColor: colorPrimaryHover,\n    activeBorderColor: colorPrimary,\n    activeOutlineColor: controlOutline,\n    selectAffixPadding: paddingXXS\n  };\n};","import { unit } from '@ant-design/cssinjs';\n// =====================================================\n// ==                  Outlined                       ==\n// =====================================================\nconst genBaseOutlinedStyle = (token, options) => {\n  const {\n    componentCls,\n    antCls,\n    controlOutlineWidth\n  } = token;\n  return {\n    [`&:not(${componentCls}-customize-input) ${componentCls}-selector`]: {\n      border: `${unit(token.lineWidth)} ${token.lineType} ${options.borderColor}`,\n      background: token.selectorBg\n    },\n    [`&:not(${componentCls}-disabled):not(${componentCls}-customize-input):not(${antCls}-pagination-size-changer)`]: {\n      [`&:hover ${componentCls}-selector`]: {\n        borderColor: options.hoverBorderHover\n      },\n      [`${componentCls}-focused& ${componentCls}-selector`]: {\n        borderColor: options.activeBorderColor,\n        boxShadow: `0 0 0 ${unit(controlOutlineWidth)} ${options.activeOutlineColor}`,\n        outline: 0\n      },\n      [`${componentCls}-prefix`]: {\n        color: options.color\n      }\n    }\n  };\n};\nconst genOutlinedStatusStyle = (token, options) => ({\n  [`&${token.componentCls}-status-${options.status}`]: Object.assign({}, genBaseOutlinedStyle(token, options))\n});\nconst genOutlinedStyle = token => ({\n  '&-outlined': Object.assign(Object.assign(Object.assign(Object.assign({}, genBaseOutlinedStyle(token, {\n    borderColor: token.colorBorder,\n    hoverBorderHover: token.hoverBorderColor,\n    activeBorderColor: token.activeBorderColor,\n    activeOutlineColor: token.activeOutlineColor,\n    color: token.colorText\n  })), genOutlinedStatusStyle(token, {\n    status: 'error',\n    borderColor: token.colorError,\n    hoverBorderHover: token.colorErrorHover,\n    activeBorderColor: token.colorError,\n    activeOutlineColor: token.colorErrorOutline,\n    color: token.colorError\n  })), genOutlinedStatusStyle(token, {\n    status: 'warning',\n    borderColor: token.colorWarning,\n    hoverBorderHover: token.colorWarningHover,\n    activeBorderColor: token.colorWarning,\n    activeOutlineColor: token.colorWarningOutline,\n    color: token.colorWarning\n  })), {\n    [`&${token.componentCls}-disabled`]: {\n      [`&:not(${token.componentCls}-customize-input) ${token.componentCls}-selector`]: {\n        background: token.colorBgContainerDisabled,\n        color: token.colorTextDisabled\n      }\n    },\n    [`&${token.componentCls}-multiple ${token.componentCls}-selection-item`]: {\n      background: token.multipleItemBg,\n      border: `${unit(token.lineWidth)} ${token.lineType} ${token.multipleItemBorderColor}`\n    }\n  })\n});\n// =====================================================\n// ==                   Filled                        ==\n// =====================================================\nconst genBaseFilledStyle = (token, options) => {\n  const {\n    componentCls,\n    antCls\n  } = token;\n  return {\n    [`&:not(${componentCls}-customize-input) ${componentCls}-selector`]: {\n      background: options.bg,\n      border: `${unit(token.lineWidth)} ${token.lineType} transparent`,\n      color: options.color\n    },\n    [`&:not(${componentCls}-disabled):not(${componentCls}-customize-input):not(${antCls}-pagination-size-changer)`]: {\n      [`&:hover ${componentCls}-selector`]: {\n        background: options.hoverBg\n      },\n      [`${componentCls}-focused& ${componentCls}-selector`]: {\n        background: token.selectorBg,\n        borderColor: options.activeBorderColor,\n        outline: 0\n      }\n    }\n  };\n};\nconst genFilledStatusStyle = (token, options) => ({\n  [`&${token.componentCls}-status-${options.status}`]: Object.assign({}, genBaseFilledStyle(token, options))\n});\nconst genFilledStyle = token => ({\n  '&-filled': Object.assign(Object.assign(Object.assign(Object.assign({}, genBaseFilledStyle(token, {\n    bg: token.colorFillTertiary,\n    hoverBg: token.colorFillSecondary,\n    activeBorderColor: token.activeBorderColor,\n    color: token.colorText\n  })), genFilledStatusStyle(token, {\n    status: 'error',\n    bg: token.colorErrorBg,\n    hoverBg: token.colorErrorBgHover,\n    activeBorderColor: token.colorError,\n    color: token.colorError\n  })), genFilledStatusStyle(token, {\n    status: 'warning',\n    bg: token.colorWarningBg,\n    hoverBg: token.colorWarningBgHover,\n    activeBorderColor: token.colorWarning,\n    color: token.colorWarning\n  })), {\n    [`&${token.componentCls}-disabled`]: {\n      [`&:not(${token.componentCls}-customize-input) ${token.componentCls}-selector`]: {\n        borderColor: token.colorBorder,\n        background: token.colorBgContainerDisabled,\n        color: token.colorTextDisabled\n      }\n    },\n    [`&${token.componentCls}-multiple ${token.componentCls}-selection-item`]: {\n      background: token.colorBgContainer,\n      border: `${unit(token.lineWidth)} ${token.lineType} ${token.colorSplit}`\n    }\n  })\n});\n// =====================================================\n// ==                 Borderless                      ==\n// =====================================================\nconst genBorderlessStyle = token => ({\n  '&-borderless': {\n    [`${token.componentCls}-selector`]: {\n      background: 'transparent',\n      border: `${unit(token.lineWidth)} ${token.lineType} transparent`\n    },\n    [`&${token.componentCls}-disabled`]: {\n      [`&:not(${token.componentCls}-customize-input) ${token.componentCls}-selector`]: {\n        color: token.colorTextDisabled\n      }\n    },\n    [`&${token.componentCls}-multiple ${token.componentCls}-selection-item`]: {\n      background: token.multipleItemBg,\n      border: `${unit(token.lineWidth)} ${token.lineType} ${token.multipleItemBorderColor}`\n    },\n    // Status\n    [`&${token.componentCls}-status-error`]: {\n      [`${token.componentCls}-prefix, ${token.componentCls}-selection-item`]: {\n        color: token.colorError\n      }\n    },\n    [`&${token.componentCls}-status-warning`]: {\n      [`${token.componentCls}-prefix, ${token.componentCls}-selection-item`]: {\n        color: token.colorWarning\n      }\n    }\n  }\n});\n// =====================================================\n// ==                 Underlined                      ==\n// =====================================================\nconst genBaseUnderlinedStyle = (token, options) => {\n  const {\n    componentCls,\n    antCls\n  } = token;\n  return {\n    [`&:not(${componentCls}-customize-input) ${componentCls}-selector`]: {\n      borderWidth: `0 0 ${unit(token.lineWidth)} 0`,\n      borderStyle: `none none ${token.lineType} none`,\n      borderColor: options.borderColor,\n      background: token.selectorBg,\n      borderRadius: 0\n    },\n    [`&:not(${componentCls}-disabled):not(${componentCls}-customize-input):not(${antCls}-pagination-size-changer)`]: {\n      [`&:hover ${componentCls}-selector`]: {\n        borderColor: options.hoverBorderHover\n      },\n      [`${componentCls}-focused& ${componentCls}-selector`]: {\n        borderColor: options.activeBorderColor,\n        outline: 0\n      },\n      [`${componentCls}-prefix`]: {\n        color: options.color\n      }\n    }\n  };\n};\nconst genUnderlinedStatusStyle = (token, options) => ({\n  [`&${token.componentCls}-status-${options.status}`]: Object.assign({}, genBaseUnderlinedStyle(token, options))\n});\nconst genUnderlinedStyle = token => ({\n  '&-underlined': Object.assign(Object.assign(Object.assign(Object.assign({}, genBaseUnderlinedStyle(token, {\n    borderColor: token.colorBorder,\n    hoverBorderHover: token.hoverBorderColor,\n    activeBorderColor: token.activeBorderColor,\n    activeOutlineColor: token.activeOutlineColor,\n    color: token.colorText\n  })), genUnderlinedStatusStyle(token, {\n    status: 'error',\n    borderColor: token.colorError,\n    hoverBorderHover: token.colorErrorHover,\n    activeBorderColor: token.colorError,\n    activeOutlineColor: token.colorErrorOutline,\n    color: token.colorError\n  })), genUnderlinedStatusStyle(token, {\n    status: 'warning',\n    borderColor: token.colorWarning,\n    hoverBorderHover: token.colorWarningHover,\n    activeBorderColor: token.colorWarning,\n    activeOutlineColor: token.colorWarningOutline,\n    color: token.colorWarning\n  })), {\n    [`&${token.componentCls}-disabled`]: {\n      [`&:not(${token.componentCls}-customize-input) ${token.componentCls}-selector`]: {\n        color: token.colorTextDisabled\n      }\n    },\n    [`&${token.componentCls}-multiple ${token.componentCls}-selection-item`]: {\n      background: token.multipleItemBg,\n      border: `${unit(token.lineWidth)} ${token.lineType} ${token.multipleItemBorderColor}`\n    }\n  })\n});\nconst genVariantsStyle = token => ({\n  [token.componentCls]: Object.assign(Object.assign(Object.assign(Object.assign({}, genOutlinedStyle(token)), genFilledStyle(token)), genBorderlessStyle(token)), genUnderlinedStyle(token))\n});\nexport default genVariantsStyle;","import { resetComponent, resetIcon, textEllipsis } from '../../style';\nimport { genCompactItemStyle } from '../../style/compact-item';\nimport { genStyleHooks, mergeToken } from '../../theme/internal';\nimport genDropdownStyle from './dropdown';\nimport genMultipleStyle from './multiple';\nimport genSingleStyle from './single';\nimport { prepareComponentToken } from './token';\nimport genVariantsStyle from './variants';\n// ============================= Selector =============================\nconst genSelectorStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    position: 'relative',\n    transition: `all ${token.motionDurationMid} ${token.motionEaseInOut}`,\n    input: {\n      cursor: 'pointer'\n    },\n    [`${componentCls}-show-search&`]: {\n      cursor: 'text',\n      input: {\n        cursor: 'auto',\n        color: 'inherit',\n        height: '100%'\n      }\n    },\n    [`${componentCls}-disabled&`]: {\n      cursor: 'not-allowed',\n      input: {\n        cursor: 'not-allowed'\n      }\n    }\n  };\n};\n// ============================== Styles ==============================\n// /* Reset search input style */\nconst getSearchInputWithoutBorderStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    [`${componentCls}-selection-search-input`]: {\n      margin: 0,\n      padding: 0,\n      background: 'transparent',\n      border: 'none',\n      outline: 'none',\n      appearance: 'none',\n      fontFamily: 'inherit',\n      '&::-webkit-search-cancel-button': {\n        display: 'none',\n        appearance: 'none'\n      }\n    }\n  };\n};\n// =============================== Base ===============================\nconst genBaseStyle = token => {\n  const {\n    antCls,\n    componentCls,\n    inputPaddingHorizontalBase,\n    iconCls\n  } = token;\n  const hoverShowClearStyle = {\n    [`${componentCls}-clear`]: {\n      opacity: 1,\n      background: token.colorBgBase,\n      borderRadius: '50%'\n    }\n  };\n  return {\n    [componentCls]: Object.assign(Object.assign({}, resetComponent(token)), {\n      position: 'relative',\n      display: 'inline-flex',\n      cursor: 'pointer',\n      [`&:not(${componentCls}-customize-input) ${componentCls}-selector`]: Object.assign(Object.assign({}, genSelectorStyle(token)), getSearchInputWithoutBorderStyle(token)),\n      // ======================== Selection ========================\n      [`${componentCls}-selection-item`]: Object.assign(Object.assign({\n        flex: 1,\n        fontWeight: 'normal',\n        position: 'relative',\n        userSelect: 'none'\n      }, textEllipsis), {\n        // https://github.com/ant-design/ant-design/issues/40421\n        [`> ${antCls}-typography`]: {\n          display: 'inline'\n        }\n      }),\n      // ======================= Placeholder =======================\n      [`${componentCls}-selection-placeholder`]: Object.assign(Object.assign({}, textEllipsis), {\n        flex: 1,\n        color: token.colorTextPlaceholder,\n        pointerEvents: 'none'\n      }),\n      // ========================== Arrow ==========================\n      [`${componentCls}-arrow`]: Object.assign(Object.assign({}, resetIcon()), {\n        position: 'absolute',\n        top: '50%',\n        insetInlineStart: 'auto',\n        insetInlineEnd: inputPaddingHorizontalBase,\n        height: token.fontSizeIcon,\n        marginTop: token.calc(token.fontSizeIcon).mul(-1).div(2).equal(),\n        color: token.colorTextQuaternary,\n        fontSize: token.fontSizeIcon,\n        lineHeight: 1,\n        textAlign: 'center',\n        pointerEvents: 'none',\n        display: 'flex',\n        alignItems: 'center',\n        transition: `opacity ${token.motionDurationSlow} ease`,\n        [iconCls]: {\n          verticalAlign: 'top',\n          transition: `transform ${token.motionDurationSlow}`,\n          '> svg': {\n            verticalAlign: 'top'\n          },\n          [`&:not(${componentCls}-suffix)`]: {\n            pointerEvents: 'auto'\n          }\n        },\n        [`${componentCls}-disabled &`]: {\n          cursor: 'not-allowed'\n        },\n        '> *:not(:last-child)': {\n          marginInlineEnd: 8 // FIXME: magic\n        }\n      }),\n      // ========================== Wrap ===========================\n      [`${componentCls}-selection-wrap`]: {\n        display: 'flex',\n        width: '100%',\n        position: 'relative',\n        minWidth: 0,\n        // https://github.com/ant-design/ant-design/issues/51669\n        '&:after': {\n          content: '\"\\\\a0\"',\n          width: 0,\n          overflow: 'hidden'\n        }\n      },\n      // ========================= Prefix ==========================\n      [`${componentCls}-prefix`]: {\n        flex: 'none',\n        marginInlineEnd: token.selectAffixPadding\n      },\n      // ========================== Clear ==========================\n      [`${componentCls}-clear`]: {\n        position: 'absolute',\n        top: '50%',\n        insetInlineStart: 'auto',\n        insetInlineEnd: inputPaddingHorizontalBase,\n        zIndex: 1,\n        display: 'inline-block',\n        width: token.fontSizeIcon,\n        height: token.fontSizeIcon,\n        marginTop: token.calc(token.fontSizeIcon).mul(-1).div(2).equal(),\n        color: token.colorTextQuaternary,\n        fontSize: token.fontSizeIcon,\n        fontStyle: 'normal',\n        lineHeight: 1,\n        textAlign: 'center',\n        textTransform: 'none',\n        cursor: 'pointer',\n        opacity: 0,\n        transition: `color ${token.motionDurationMid} ease, opacity ${token.motionDurationSlow} ease`,\n        textRendering: 'auto',\n        '&:before': {\n          display: 'block'\n        },\n        '&:hover': {\n          color: token.colorIcon\n        }\n      },\n      '@media(hover:none)': hoverShowClearStyle,\n      '&:hover': hoverShowClearStyle\n    }),\n    // ========================= Feedback ==========================\n    [`${componentCls}-status`]: {\n      '&-error, &-warning, &-success, &-validating': {\n        [`&${componentCls}-has-feedback`]: {\n          [`${componentCls}-clear`]: {\n            insetInlineEnd: token.calc(inputPaddingHorizontalBase).add(token.fontSize).add(token.paddingXS).equal()\n          }\n        }\n      }\n    }\n  };\n};\n// ============================== Styles ==============================\nconst genSelectStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return [{\n    [componentCls]: {\n      // ==================== In Form ====================\n      [`&${componentCls}-in-form-item`]: {\n        width: '100%'\n      }\n    }\n  },\n  // =====================================================\n  // ==                       LTR                       ==\n  // =====================================================\n  // Base\n  genBaseStyle(token),\n  // Single\n  genSingleStyle(token),\n  // Multiple\n  genMultipleStyle(token),\n  // Dropdown\n  genDropdownStyle(token),\n  // =====================================================\n  // ==                       RTL                       ==\n  // =====================================================\n  {\n    [`${componentCls}-rtl`]: {\n      direction: 'rtl'\n    }\n  },\n  // =====================================================\n  // ==             Space Compact                       ==\n  // =====================================================\n  genCompactItemStyle(token, {\n    borderElCls: `${componentCls}-selector`,\n    focusElCls: `${componentCls}-focused`\n  })];\n};\n// ============================== Export ==============================\nexport default genStyleHooks('Select', (token, {\n  rootPrefixCls\n}) => {\n  const selectToken = mergeToken(token, {\n    rootPrefixCls,\n    inputPaddingHorizontalBase: token.calc(token.paddingSM).sub(1).equal(),\n    multipleSelectItemHeight: token.multipleItemHeight,\n    selectHeight: token.controlHeight\n  });\n  return [genSelectStyle(selectToken), genVariantsStyle(selectToken)];\n}, prepareComponentToken, {\n  unitless: {\n    optionLineHeight: true,\n    optionSelectedFontWeight: true\n  }\n});","// This icon file is generated automatically.\nvar CheckOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z\" } }] }, \"name\": \"check\", \"theme\": \"outlined\" };\nexport default CheckOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport CheckOutlinedSvg from \"@ant-design/icons-svg/es/asn/CheckOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar CheckOutlined = function CheckOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: CheckOutlinedSvg\n  }));\n};\n\n/**![check](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTkxMiAxOTBoLTY5LjljLTkuOCAwLTE5LjEgNC41LTI1LjEgMTIuMkw0MDQuNyA3MjQuNSAyMDcgNDc0YTMyIDMyIDAgMDAtMjUuMS0xMi4ySDExMmMtNi43IDAtMTAuNCA3LjctNi4zIDEyLjlsMjczLjkgMzQ3YzEyLjggMTYuMiAzNy40IDE2LjIgNTAuMyAwbDQ4OC40LTYxOC45YzQuMS01LjEuNC0xMi44LTYuMy0xMi44eiIgLz48L3N2Zz4=) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(CheckOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'CheckOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar DownOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\" } }] }, \"name\": \"down\", \"theme\": \"outlined\" };\nexport default DownOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport DownOutlinedSvg from \"@ant-design/icons-svg/es/asn/DownOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar DownOutlined = function DownOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: DownOutlinedSvg\n  }));\n};\n\n/**![down](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTg4NCAyNTZoLTc1Yy01LjEgMC05LjkgMi41LTEyLjkgNi42TDUxMiA2NTQuMiAyMjcuOSAyNjIuNmMtMy00LjEtNy44LTYuNi0xMi45LTYuNmgtNzVjLTYuNSAwLTEwLjMgNy40LTYuNSAxMi43bDM1Mi42IDQ4Ni4xYzEyLjggMTcuNiAzOSAxNy42IDUxLjcgMGwzNTIuNi00ODYuMWMzLjktNS4zLjEtMTIuNy02LjQtMTIuN3oiIC8+PC9zdmc+) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(DownOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'DownOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar SearchOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\" } }] }, \"name\": \"search\", \"theme\": \"outlined\" };\nexport default SearchOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport SearchOutlinedSvg from \"@ant-design/icons-svg/es/asn/SearchOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar SearchOutlined = function SearchOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: SearchOutlinedSvg\n  }));\n};\n\n/**![search](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTkwOS42IDg1NC41TDY0OS45IDU5NC44QzY5MC4yIDU0Mi43IDcxMiA0NzkgNzEyIDQxMmMwLTgwLjItMzEuMy0xNTUuNC04Ny45LTIxMi4xLTU2LjYtNTYuNy0xMzItODcuOS0yMTIuMS04Ny45cy0xNTUuNSAzMS4zLTIxMi4xIDg3LjlDMTQzLjIgMjU2LjUgMTEyIDMzMS44IDExMiA0MTJjMCA4MC4xIDMxLjMgMTU1LjUgODcuOSAyMTIuMUMyNTYuNSA2ODAuOCAzMzEuOCA3MTIgNDEyIDcxMmM2NyAwIDEzMC42LTIxLjggMTgyLjctNjJsMjU5LjcgMjU5LjZhOC4yIDguMiAwIDAwMTEuNiAwbDQzLjYtNDMuNWE4LjIgOC4yIDAgMDAwLTExLjZ6TTU3MC40IDU3MC40QzUyOCA2MTIuNyA0NzEuOCA2MzYgNDEyIDYzNnMtMTE2LTIzLjMtMTU4LjQtNjUuNkMyMTEuMyA1MjggMTg4IDQ3MS44IDE4OCA0MTJzMjMuMy0xMTYuMSA2NS42LTE1OC40QzI5NiAyMTEuMyAzNTIuMiAxODggNDEyIDE4OHMxMTYuMSAyMy4yIDE1OC40IDY1LjZTNjM2IDM1Mi4yIDYzNiA0MTJzLTIzLjMgMTE2LjEtNjUuNiAxNTguNHoiIC8+PC9zdmc+) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(SearchOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'SearchOutlined';\n}\nexport default RefIcon;","\"use client\";\n\nimport * as React from 'react';\nimport CheckOutlined from \"@ant-design/icons/es/icons/CheckOutlined\";\nimport CloseCircleFilled from \"@ant-design/icons/es/icons/CloseCircleFilled\";\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport DownOutlined from \"@ant-design/icons/es/icons/DownOutlined\";\nimport LoadingOutlined from \"@ant-design/icons/es/icons/LoadingOutlined\";\nimport SearchOutlined from \"@ant-design/icons/es/icons/SearchOutlined\";\nimport { devUseWarning } from '../_util/warning';\nexport default function useIcons({\n  suffixIcon,\n  clearIcon,\n  menuItemSelectedIcon,\n  removeIcon,\n  loading,\n  multiple,\n  hasFeedback,\n  prefixCls,\n  showSuffixIcon,\n  feedbackIcon,\n  showArrow,\n  componentName\n}) {\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning(componentName);\n    warning.deprecated(!clearIcon, 'clearIcon', 'allowClear={{ clearIcon: React.ReactNode }}');\n  }\n  // Clear Icon\n  const mergedClearIcon = clearIcon !== null && clearIcon !== void 0 ? clearIcon : /*#__PURE__*/React.createElement(CloseCircleFilled, null);\n  // Validation Feedback Icon\n  const getSuffixIconNode = arrowIcon => {\n    if (suffixIcon === null && !hasFeedback && !showArrow) {\n      return null;\n    }\n    return /*#__PURE__*/React.createElement(React.Fragment, null, showSuffixIcon !== false && arrowIcon, hasFeedback && feedbackIcon);\n  };\n  // Arrow item icon\n  let mergedSuffixIcon = null;\n  if (suffixIcon !== undefined) {\n    mergedSuffixIcon = getSuffixIconNode(suffixIcon);\n  } else if (loading) {\n    mergedSuffixIcon = getSuffixIconNode(/*#__PURE__*/React.createElement(LoadingOutlined, {\n      spin: true\n    }));\n  } else {\n    const iconCls = `${prefixCls}-suffix`;\n    mergedSuffixIcon = ({\n      open,\n      showSearch\n    }) => {\n      if (open && showSearch) {\n        return getSuffixIconNode(/*#__PURE__*/React.createElement(SearchOutlined, {\n          className: iconCls\n        }));\n      }\n      return getSuffixIconNode(/*#__PURE__*/React.createElement(DownOutlined, {\n        className: iconCls\n      }));\n    };\n  }\n  // Checked item icon\n  let mergedItemIcon = null;\n  if (menuItemSelectedIcon !== undefined) {\n    mergedItemIcon = menuItemSelectedIcon;\n  } else if (multiple) {\n    mergedItemIcon = /*#__PURE__*/React.createElement(CheckOutlined, null);\n  } else {\n    mergedItemIcon = null;\n  }\n  let mergedRemoveIcon = null;\n  if (removeIcon !== undefined) {\n    mergedRemoveIcon = removeIcon;\n  } else {\n    mergedRemoveIcon = /*#__PURE__*/React.createElement(CloseOutlined, null);\n  }\n  return {\n    clearIcon: mergedClearIcon,\n    suffixIcon: mergedSuffixIcon,\n    itemIcon: mergedItemIcon,\n    removeIcon: mergedRemoveIcon\n  };\n}","/**\n * Since Select, TreeSelect, Cascader is same Select like component.\n * We just use same hook to handle this logic.\n *\n * If `suffixIcon` is not equal to `null`, always show it.\n */\nexport default function useShowArrow(suffixIcon, showArrow) {\n  return showArrow !== undefined ? showArrow : suffixIcon !== null;\n}","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n// TODO: 4.0 - codemod should help to change `filterOption` to support node props.\nimport * as React from 'react';\nimport cls from 'classnames';\nimport RcSelect, { OptGroup, Option } from 'rc-select';\nimport omit from \"rc-util/es/omit\";\nimport { useZIndex } from '../_util/hooks/useZIndex';\nimport { getTransitionName } from '../_util/motion';\nimport genPurePanel from '../_util/PurePanel';\nimport { getMergedStatus, getStatusClassNames } from '../_util/statusUtils';\nimport { devUseWarning } from '../_util/warning';\nimport { ConfigContext } from '../config-provider';\nimport { useComponentConfig } from '../config-provider/context';\nimport DefaultRenderEmpty from '../config-provider/defaultRenderEmpty';\nimport DisabledContext from '../config-provider/DisabledContext';\nimport useCSSVarCls from '../config-provider/hooks/useCSSVarCls';\nimport useSize from '../config-provider/hooks/useSize';\nimport { FormItemInputContext } from '../form/context';\nimport useVariants from '../form/hooks/useVariants';\nimport { useCompactItemContext } from '../space/Compact';\nimport { useToken } from '../theme/internal';\nimport mergedBuiltinPlacements from './mergedBuiltinPlacements';\nimport useStyle from './style';\nimport useIcons from './useIcons';\nimport useShowArrow from './useShowArrow';\nconst SECRET_COMBOBOX_MODE_DO_NOT_USE = 'SECRET_COMBOBOX_MODE_DO_NOT_USE';\nconst InternalSelect = (props, ref) => {\n  var _a, _b, _c, _d, _e;\n  const {\n      prefixCls: customizePrefixCls,\n      bordered,\n      className,\n      rootClassName,\n      getPopupContainer,\n      popupClassName,\n      dropdownClassName,\n      listHeight = 256,\n      placement,\n      listItemHeight: customListItemHeight,\n      size: customizeSize,\n      disabled: customDisabled,\n      notFoundContent,\n      status: customStatus,\n      builtinPlacements,\n      dropdownMatchSelectWidth,\n      popupMatchSelectWidth,\n      direction: propDirection,\n      style,\n      allowClear,\n      variant: customizeVariant,\n      dropdownStyle,\n      transitionName,\n      tagRender,\n      maxCount,\n      prefix,\n      dropdownRender,\n      popupRender,\n      onDropdownVisibleChange,\n      onOpenChange,\n      styles,\n      classNames\n    } = props,\n    rest = __rest(props, [\"prefixCls\", \"bordered\", \"className\", \"rootClassName\", \"getPopupContainer\", \"popupClassName\", \"dropdownClassName\", \"listHeight\", \"placement\", \"listItemHeight\", \"size\", \"disabled\", \"notFoundContent\", \"status\", \"builtinPlacements\", \"dropdownMatchSelectWidth\", \"popupMatchSelectWidth\", \"direction\", \"style\", \"allowClear\", \"variant\", \"dropdownStyle\", \"transitionName\", \"tagRender\", \"maxCount\", \"prefix\", \"dropdownRender\", \"popupRender\", \"onDropdownVisibleChange\", \"onOpenChange\", \"styles\", \"classNames\"]);\n  const {\n    getPopupContainer: getContextPopupContainer,\n    getPrefixCls,\n    renderEmpty,\n    direction: contextDirection,\n    virtual,\n    popupMatchSelectWidth: contextPopupMatchSelectWidth,\n    popupOverflow\n  } = React.useContext(ConfigContext);\n  const {\n    showSearch,\n    style: contextStyle,\n    styles: contextStyles,\n    className: contextClassName,\n    classNames: contextClassNames\n  } = useComponentConfig('select');\n  const [, token] = useToken();\n  const listItemHeight = customListItemHeight !== null && customListItemHeight !== void 0 ? customListItemHeight : token === null || token === void 0 ? void 0 : token.controlHeight;\n  const prefixCls = getPrefixCls('select', customizePrefixCls);\n  const rootPrefixCls = getPrefixCls();\n  const direction = propDirection !== null && propDirection !== void 0 ? propDirection : contextDirection;\n  const {\n    compactSize,\n    compactItemClassnames\n  } = useCompactItemContext(prefixCls, direction);\n  const [variant, enableVariantCls] = useVariants('select', customizeVariant, bordered);\n  const rootCls = useCSSVarCls(prefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls, rootCls);\n  const mode = React.useMemo(() => {\n    const {\n      mode: m\n    } = props;\n    if (m === 'combobox') {\n      return undefined;\n    }\n    if (m === SECRET_COMBOBOX_MODE_DO_NOT_USE) {\n      return 'combobox';\n    }\n    return m;\n  }, [props.mode]);\n  const isMultiple = mode === 'multiple' || mode === 'tags';\n  const showSuffixIcon = useShowArrow(props.suffixIcon, props.showArrow);\n  const mergedPopupMatchSelectWidth = (_a = popupMatchSelectWidth !== null && popupMatchSelectWidth !== void 0 ? popupMatchSelectWidth : dropdownMatchSelectWidth) !== null && _a !== void 0 ? _a : contextPopupMatchSelectWidth;\n  const mergedPopupStyle = ((_b = styles === null || styles === void 0 ? void 0 : styles.popup) === null || _b === void 0 ? void 0 : _b.root) || ((_c = contextStyles.popup) === null || _c === void 0 ? void 0 : _c.root) || dropdownStyle;\n  const mergedPopupRender = popupRender || dropdownRender;\n  const mergedOnOpenChange = onOpenChange || onDropdownVisibleChange;\n  // ===================== Form Status =====================\n  const {\n    status: contextStatus,\n    hasFeedback,\n    isFormItemInput,\n    feedbackIcon\n  } = React.useContext(FormItemInputContext);\n  const mergedStatus = getMergedStatus(contextStatus, customStatus);\n  // ===================== Empty =====================\n  let mergedNotFound;\n  if (notFoundContent !== undefined) {\n    mergedNotFound = notFoundContent;\n  } else if (mode === 'combobox') {\n    mergedNotFound = null;\n  } else {\n    mergedNotFound = (renderEmpty === null || renderEmpty === void 0 ? void 0 : renderEmpty('Select')) || /*#__PURE__*/React.createElement(DefaultRenderEmpty, {\n      componentName: \"Select\"\n    });\n  }\n  // ===================== Icons =====================\n  const {\n    suffixIcon,\n    itemIcon,\n    removeIcon,\n    clearIcon\n  } = useIcons(Object.assign(Object.assign({}, rest), {\n    multiple: isMultiple,\n    hasFeedback,\n    feedbackIcon,\n    showSuffixIcon,\n    prefixCls,\n    componentName: 'Select'\n  }));\n  const mergedAllowClear = allowClear === true ? {\n    clearIcon\n  } : allowClear;\n  const selectProps = omit(rest, ['suffixIcon', 'itemIcon']);\n  const mergedPopupClassName = cls(((_d = classNames === null || classNames === void 0 ? void 0 : classNames.popup) === null || _d === void 0 ? void 0 : _d.root) || ((_e = contextClassNames === null || contextClassNames === void 0 ? void 0 : contextClassNames.popup) === null || _e === void 0 ? void 0 : _e.root) || popupClassName || dropdownClassName, {\n    [`${prefixCls}-dropdown-${direction}`]: direction === 'rtl'\n  }, rootClassName, contextClassNames.root, classNames === null || classNames === void 0 ? void 0 : classNames.root, cssVarCls, rootCls, hashId);\n  const mergedSize = useSize(ctx => {\n    var _a;\n    return (_a = customizeSize !== null && customizeSize !== void 0 ? customizeSize : compactSize) !== null && _a !== void 0 ? _a : ctx;\n  });\n  // ===================== Disabled =====================\n  const disabled = React.useContext(DisabledContext);\n  const mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;\n  const mergedClassName = cls({\n    [`${prefixCls}-lg`]: mergedSize === 'large',\n    [`${prefixCls}-sm`]: mergedSize === 'small',\n    [`${prefixCls}-rtl`]: direction === 'rtl',\n    [`${prefixCls}-${variant}`]: enableVariantCls,\n    [`${prefixCls}-in-form-item`]: isFormItemInput\n  }, getStatusClassNames(prefixCls, mergedStatus, hasFeedback), compactItemClassnames, contextClassName, className, contextClassNames.root, classNames === null || classNames === void 0 ? void 0 : classNames.root, rootClassName, cssVarCls, rootCls, hashId);\n  // ===================== Placement =====================\n  const memoPlacement = React.useMemo(() => {\n    if (placement !== undefined) {\n      return placement;\n    }\n    return direction === 'rtl' ? 'bottomRight' : 'bottomLeft';\n  }, [placement, direction]);\n  // ====================== Warning ======================\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('Select');\n    const deprecatedProps = {\n      dropdownMatchSelectWidth: 'popupMatchSelectWidth',\n      dropdownStyle: 'styles.popup.root',\n      dropdownClassName: 'classNames.popup.root',\n      popupClassName: 'classNames.popup.root',\n      dropdownRender: 'popupRender',\n      onDropdownVisibleChange: 'onOpenChange',\n      bordered: 'variant'\n    };\n    Object.entries(deprecatedProps).forEach(([oldProp, newProp]) => {\n      warning.deprecated(!(oldProp in props), oldProp, newProp);\n    });\n    process.env.NODE_ENV !== \"production\" ? warning(!('showArrow' in props), 'deprecated', '`showArrow` is deprecated which will be removed in next major version. It will be a default behavior, you can hide it by setting `suffixIcon` to null.') : void 0;\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof maxCount !== 'undefined' && !isMultiple), 'usage', '`maxCount` only works with mode `multiple` or `tags`') : void 0;\n  }\n  // ====================== zIndex =========================\n  const [zIndex] = useZIndex('SelectLike', mergedPopupStyle === null || mergedPopupStyle === void 0 ? void 0 : mergedPopupStyle.zIndex);\n  // ====================== Render =======================\n  return wrapCSSVar(/*#__PURE__*/React.createElement(RcSelect, Object.assign({\n    ref: ref,\n    virtual: virtual,\n    showSearch: showSearch\n  }, selectProps, {\n    style: Object.assign(Object.assign(Object.assign(Object.assign({}, contextStyles.root), styles === null || styles === void 0 ? void 0 : styles.root), contextStyle), style),\n    dropdownMatchSelectWidth: mergedPopupMatchSelectWidth,\n    transitionName: getTransitionName(rootPrefixCls, 'slide-up', transitionName),\n    builtinPlacements: mergedBuiltinPlacements(builtinPlacements, popupOverflow),\n    listHeight: listHeight,\n    listItemHeight: listItemHeight,\n    mode: mode,\n    prefixCls: prefixCls,\n    placement: memoPlacement,\n    direction: direction,\n    prefix: prefix,\n    suffixIcon: suffixIcon,\n    menuItemSelectedIcon: itemIcon,\n    removeIcon: removeIcon,\n    allowClear: mergedAllowClear,\n    notFoundContent: mergedNotFound,\n    className: mergedClassName,\n    getPopupContainer: getPopupContainer || getContextPopupContainer,\n    dropdownClassName: mergedPopupClassName,\n    disabled: mergedDisabled,\n    dropdownStyle: Object.assign(Object.assign({}, mergedPopupStyle), {\n      zIndex\n    }),\n    maxCount: isMultiple ? maxCount : undefined,\n    tagRender: isMultiple ? tagRender : undefined,\n    dropdownRender: mergedPopupRender,\n    onDropdownVisibleChange: mergedOnOpenChange\n  })));\n};\nif (process.env.NODE_ENV !== 'production') {\n  InternalSelect.displayName = 'Select';\n}\nconst Select = /*#__PURE__*/React.forwardRef(InternalSelect);\n// We don't care debug panel\n/* istanbul ignore next */\nconst PurePanel = genPurePanel(Select, 'dropdownAlign');\nSelect.SECRET_COMBOBOX_MODE_DO_NOT_USE = SECRET_COMBOBOX_MODE_DO_NOT_USE;\nSelect.Option = Option;\nSelect.OptGroup = OptGroup;\nSelect._InternalPanelDoNotUseOrYouWillBeFired = PurePanel;\nif (process.env.NODE_ENV !== 'production') {\n  Select.displayName = 'Select';\n}\nexport default Select;","export const addMediaQueryListener = (mql, handler) => {\n  // Don't delete here, please keep the code compatible\n  if (typeof (mql === null || mql === void 0 ? void 0 : mql.addEventListener) !== 'undefined') {\n    mql.addEventListener('change', handler);\n  } else if (typeof (mql === null || mql === void 0 ? void 0 : mql.addListener) !== 'undefined') {\n    mql.addListener(handler);\n  }\n};\nexport const removeMediaQueryListener = (mql, handler) => {\n  // Don't delete here, please keep the code compatible\n  if (typeof (mql === null || mql === void 0 ? void 0 : mql.removeEventListener) !== 'undefined') {\n    mql.removeEventListener('change', handler);\n  } else if (typeof (mql === null || mql === void 0 ? void 0 : mql.removeListener) !== 'undefined') {\n    mql.removeListener(handler);\n  }\n};","import React from 'react';\nimport { useToken } from '../theme/internal';\nimport { addMediaQueryListener, removeMediaQueryListener } from './mediaQueryUtil';\nexport const responsiveArray = ['xxl', 'xl', 'lg', 'md', 'sm', 'xs'];\nconst getResponsiveMap = token => ({\n  xs: `(max-width: ${token.screenXSMax}px)`,\n  sm: `(min-width: ${token.screenSM}px)`,\n  md: `(min-width: ${token.screenMD}px)`,\n  lg: `(min-width: ${token.screenLG}px)`,\n  xl: `(min-width: ${token.screenXL}px)`,\n  xxl: `(min-width: ${token.screenXXL}px)`\n});\n/**\n * Ensures that the breakpoints token are valid, in good order\n * For each breakpoint : screenMin <= screen <= screenMax and screenMax <= nextScreenMin\n */\nconst validateBreakpoints = token => {\n  const indexableToken = token;\n  const revBreakpoints = [].concat(responsiveArray).reverse();\n  revBreakpoints.forEach((breakpoint, i) => {\n    const breakpointUpper = breakpoint.toUpperCase();\n    const screenMin = `screen${breakpointUpper}Min`;\n    const screen = `screen${breakpointUpper}`;\n    if (!(indexableToken[screenMin] <= indexableToken[screen])) {\n      throw new Error(`${screenMin}<=${screen} fails : !(${indexableToken[screenMin]}<=${indexableToken[screen]})`);\n    }\n    if (i < revBreakpoints.length - 1) {\n      const screenMax = `screen${breakpointUpper}Max`;\n      if (!(indexableToken[screen] <= indexableToken[screenMax])) {\n        throw new Error(`${screen}<=${screenMax} fails : !(${indexableToken[screen]}<=${indexableToken[screenMax]})`);\n      }\n      const nextBreakpointUpperMin = revBreakpoints[i + 1].toUpperCase();\n      const nextScreenMin = `screen${nextBreakpointUpperMin}Min`;\n      if (!(indexableToken[screenMax] <= indexableToken[nextScreenMin])) {\n        throw new Error(`${screenMax}<=${nextScreenMin} fails : !(${indexableToken[screenMax]}<=${indexableToken[nextScreenMin]})`);\n      }\n    }\n  });\n  return token;\n};\nexport const matchScreen = (screens, screenSizes) => {\n  if (!screenSizes) {\n    return;\n  }\n  for (const breakpoint of responsiveArray) {\n    if (screens[breakpoint] && (screenSizes === null || screenSizes === void 0 ? void 0 : screenSizes[breakpoint]) !== undefined) {\n      return screenSizes[breakpoint];\n    }\n  }\n};\nconst useResponsiveObserver = () => {\n  const [, token] = useToken();\n  const responsiveMap = getResponsiveMap(validateBreakpoints(token));\n  // To avoid repeat create instance, we add `useMemo` here.\n  return React.useMemo(() => {\n    const subscribers = new Map();\n    let subUid = -1;\n    let screens = {};\n    return {\n      responsiveMap,\n      matchHandlers: {},\n      dispatch(pointMap) {\n        screens = pointMap;\n        subscribers.forEach(func => func(screens));\n        return subscribers.size >= 1;\n      },\n      subscribe(func) {\n        if (!subscribers.size) {\n          this.register();\n        }\n        subUid += 1;\n        subscribers.set(subUid, func);\n        func(screens);\n        return subUid;\n      },\n      unsubscribe(paramToken) {\n        subscribers.delete(paramToken);\n        if (!subscribers.size) {\n          this.unregister();\n        }\n      },\n      register() {\n        Object.entries(responsiveMap).forEach(([screen, mediaQuery]) => {\n          const listener = ({\n            matches\n          }) => {\n            this.dispatch(Object.assign(Object.assign({}, screens), {\n              [screen]: matches\n            }));\n          };\n          const mql = window.matchMedia(mediaQuery);\n          addMediaQueryListener(mql, listener);\n          this.matchHandlers[mediaQuery] = {\n            mql,\n            listener\n          };\n          listener(mql);\n        });\n      },\n      unregister() {\n        Object.values(responsiveMap).forEach(mediaQuery => {\n          const handler = this.matchHandlers[mediaQuery];\n          removeMediaQueryListener(handler === null || handler === void 0 ? void 0 : handler.mql, handler === null || handler === void 0 ? void 0 : handler.listener);\n        });\n        subscribers.clear();\n      }\n    };\n  }, [token]);\n};\nexport default useResponsiveObserver;","import * as React from 'react';\nexport default function useForceUpdate() {\n  const [, forceUpdate] = React.useReducer(x => x + 1, 0);\n  return forceUpdate;\n}","\"use client\";\n\nimport { useRef } from 'react';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport useForceUpdate from '../../_util/hooks/useForceUpdate';\nimport useResponsiveObserver from '../../_util/responsiveObserver';\nfunction useBreakpoint(refreshOnChange = true, defaultScreens = {}) {\n  const screensRef = useRef(defaultScreens);\n  const forceUpdate = useForceUpdate();\n  const responsiveObserver = useResponsiveObserver();\n  useLayoutEffect(() => {\n    const token = responsiveObserver.subscribe(supportScreens => {\n      screensRef.current = supportScreens;\n      if (refreshOnChange) {\n        forceUpdate();\n      }\n    });\n    return () => responsiveObserver.unsubscribe(token);\n  }, []);\n  return screensRef.current;\n}\nexport default useBreakpoint;","import classNames from 'classnames';\nimport * as React from 'react';\nexport default function Popup(props) {\n  var children = props.children,\n    prefixCls = props.prefixCls,\n    id = props.id,\n    innerStyle = props.overlayInnerStyle,\n    bodyClassName = props.bodyClassName,\n    className = props.className,\n    style = props.style;\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(\"\".concat(prefixCls, \"-content\"), className),\n    style: style\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(\"\".concat(prefixCls, \"-inner\"), bodyClassName),\n    id: id,\n    role: \"tooltip\",\n    style: innerStyle\n  }, typeof children === 'function' ? children() : children));\n}","var autoAdjustOverflowTopBottom = {\n  shiftX: 64,\n  adjustY: 1\n};\nvar autoAdjustOverflowLeftRight = {\n  adjustX: 1,\n  shiftY: true\n};\nvar targetOffset = [0, 0];\nexport var placements = {\n  left: {\n    points: ['cr', 'cl'],\n    overflow: autoAdjustOverflowLeftRight,\n    offset: [-4, 0],\n    targetOffset: targetOffset\n  },\n  right: {\n    points: ['cl', 'cr'],\n    overflow: autoAdjustOverflowLeftRight,\n    offset: [4, 0],\n    targetOffset: targetOffset\n  },\n  top: {\n    points: ['bc', 'tc'],\n    overflow: autoAdjustOverflowTopBottom,\n    offset: [0, -4],\n    targetOffset: targetOffset\n  },\n  bottom: {\n    points: ['tc', 'bc'],\n    overflow: autoAdjustOverflowTopBottom,\n    offset: [0, 4],\n    targetOffset: targetOffset\n  },\n  topLeft: {\n    points: ['bl', 'tl'],\n    overflow: autoAdjustOverflowTopBottom,\n    offset: [0, -4],\n    targetOffset: targetOffset\n  },\n  leftTop: {\n    points: ['tr', 'tl'],\n    overflow: autoAdjustOverflowLeftRight,\n    offset: [-4, 0],\n    targetOffset: targetOffset\n  },\n  topRight: {\n    points: ['br', 'tr'],\n    overflow: autoAdjustOverflowTopBottom,\n    offset: [0, -4],\n    targetOffset: targetOffset\n  },\n  rightTop: {\n    points: ['tl', 'tr'],\n    overflow: autoAdjustOverflowLeftRight,\n    offset: [4, 0],\n    targetOffset: targetOffset\n  },\n  bottomRight: {\n    points: ['tr', 'br'],\n    overflow: autoAdjustOverflowTopBottom,\n    offset: [0, 4],\n    targetOffset: targetOffset\n  },\n  rightBottom: {\n    points: ['bl', 'br'],\n    overflow: autoAdjustOverflowLeftRight,\n    offset: [4, 0],\n    targetOffset: targetOffset\n  },\n  bottomLeft: {\n    points: ['tl', 'bl'],\n    overflow: autoAdjustOverflowTopBottom,\n    offset: [0, 4],\n    targetOffset: targetOffset\n  },\n  leftBottom: {\n    points: ['br', 'bl'],\n    overflow: autoAdjustOverflowLeftRight,\n    offset: [-4, 0],\n    targetOffset: targetOffset\n  }\n};\nexport default placements;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"overlayClassName\", \"trigger\", \"mouseEnterDelay\", \"mouseLeaveDelay\", \"overlayStyle\", \"prefixCls\", \"children\", \"onVisibleChange\", \"afterVisibleChange\", \"transitionName\", \"animation\", \"motion\", \"placement\", \"align\", \"destroyTooltipOnHide\", \"defaultVisible\", \"getTooltipContainer\", \"overlayInnerStyle\", \"arrowContent\", \"overlay\", \"id\", \"showArrow\", \"classNames\", \"styles\"];\nimport Trigger from '@rc-component/trigger';\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { forwardRef, useImperativeHandle, useRef } from 'react';\nimport { placements } from \"./placements\";\nimport Popup from \"./Popup\";\nimport useId from \"rc-util/es/hooks/useId\";\nvar Tooltip = function Tooltip(props, ref) {\n  var overlayClassName = props.overlayClassName,\n    _props$trigger = props.trigger,\n    trigger = _props$trigger === void 0 ? ['hover'] : _props$trigger,\n    _props$mouseEnterDela = props.mouseEnterDelay,\n    mouseEnterDelay = _props$mouseEnterDela === void 0 ? 0 : _props$mouseEnterDela,\n    _props$mouseLeaveDela = props.mouseLeaveDelay,\n    mouseLeaveDelay = _props$mouseLeaveDela === void 0 ? 0.1 : _props$mouseLeaveDela,\n    overlayStyle = props.overlayStyle,\n    _props$prefixCls = props.prefixCls,\n    prefixCls = _props$prefixCls === void 0 ? 'rc-tooltip' : _props$prefixCls,\n    children = props.children,\n    onVisibleChange = props.onVisibleChange,\n    afterVisibleChange = props.afterVisibleChange,\n    transitionName = props.transitionName,\n    animation = props.animation,\n    motion = props.motion,\n    _props$placement = props.placement,\n    placement = _props$placement === void 0 ? 'right' : _props$placement,\n    _props$align = props.align,\n    align = _props$align === void 0 ? {} : _props$align,\n    _props$destroyTooltip = props.destroyTooltipOnHide,\n    destroyTooltipOnHide = _props$destroyTooltip === void 0 ? false : _props$destroyTooltip,\n    defaultVisible = props.defaultVisible,\n    getTooltipContainer = props.getTooltipContainer,\n    overlayInnerStyle = props.overlayInnerStyle,\n    arrowContent = props.arrowContent,\n    overlay = props.overlay,\n    id = props.id,\n    _props$showArrow = props.showArrow,\n    showArrow = _props$showArrow === void 0 ? true : _props$showArrow,\n    tooltipClassNames = props.classNames,\n    tooltipStyles = props.styles,\n    restProps = _objectWithoutProperties(props, _excluded);\n  var mergedId = useId(id);\n  var triggerRef = useRef(null);\n  useImperativeHandle(ref, function () {\n    return triggerRef.current;\n  });\n  var extraProps = _objectSpread({}, restProps);\n  if ('visible' in props) {\n    extraProps.popupVisible = props.visible;\n  }\n  var getPopupElement = function getPopupElement() {\n    return /*#__PURE__*/React.createElement(Popup, {\n      key: \"content\",\n      prefixCls: prefixCls,\n      id: mergedId,\n      bodyClassName: tooltipClassNames === null || tooltipClassNames === void 0 ? void 0 : tooltipClassNames.body,\n      overlayInnerStyle: _objectSpread(_objectSpread({}, overlayInnerStyle), tooltipStyles === null || tooltipStyles === void 0 ? void 0 : tooltipStyles.body)\n    }, overlay);\n  };\n  var getChildren = function getChildren() {\n    var child = React.Children.only(children);\n    var originalProps = (child === null || child === void 0 ? void 0 : child.props) || {};\n    var childProps = _objectSpread(_objectSpread({}, originalProps), {}, {\n      'aria-describedby': overlay ? mergedId : null\n    });\n    return /*#__PURE__*/React.cloneElement(children, childProps);\n  };\n  return /*#__PURE__*/React.createElement(Trigger, _extends({\n    popupClassName: classNames(overlayClassName, tooltipClassNames === null || tooltipClassNames === void 0 ? void 0 : tooltipClassNames.root),\n    prefixCls: prefixCls,\n    popup: getPopupElement,\n    action: trigger,\n    builtinPlacements: placements,\n    popupPlacement: placement,\n    ref: triggerRef,\n    popupAlign: align,\n    getPopupContainer: getTooltipContainer,\n    onPopupVisibleChange: onVisibleChange,\n    afterPopupVisibleChange: afterVisibleChange,\n    popupTransitionName: transitionName,\n    popupAnimation: animation,\n    popupMotion: motion,\n    defaultPopupVisible: defaultVisible,\n    autoDestroy: destroyTooltipOnHide,\n    mouseLeaveDelay: mouseLeaveDelay,\n    popupStyle: _objectSpread(_objectSpread({}, overlayStyle), tooltipStyles === null || tooltipStyles === void 0 ? void 0 : tooltipStyles.root),\n    mouseEnterDelay: mouseEnterDelay,\n    arrow: showArrow\n  }, extraProps), getChildren());\n};\nexport default /*#__PURE__*/forwardRef(Tooltip);","import { unit } from '@ant-design/cssinjs';\nexport function getArrowToken(token) {\n  const {\n    sizePopupArrow,\n    borderRadiusXS,\n    borderRadiusOuter\n  } = token;\n  const unitWidth = sizePopupArrow / 2;\n  const ax = 0;\n  const ay = unitWidth;\n  const bx = borderRadiusOuter * 1 / Math.sqrt(2);\n  const by = unitWidth - borderRadiusOuter * (1 - 1 / Math.sqrt(2));\n  const cx = unitWidth - borderRadiusXS * (1 / Math.sqrt(2));\n  const cy = borderRadiusOuter * (Math.sqrt(2) - 1) + borderRadiusXS * (1 / Math.sqrt(2));\n  const dx = 2 * unitWidth - cx;\n  const dy = cy;\n  const ex = 2 * unitWidth - bx;\n  const ey = by;\n  const fx = 2 * unitWidth - ax;\n  const fy = ay;\n  const shadowWidth = unitWidth * Math.sqrt(2) + borderRadiusOuter * (Math.sqrt(2) - 2);\n  const polygonOffset = borderRadiusOuter * (Math.sqrt(2) - 1);\n  const arrowPolygon = `polygon(${polygonOffset}px 100%, 50% ${polygonOffset}px, ${2 * unitWidth - polygonOffset}px 100%, ${polygonOffset}px 100%)`;\n  const arrowPath = `path('M ${ax} ${ay} A ${borderRadiusOuter} ${borderRadiusOuter} 0 0 0 ${bx} ${by} L ${cx} ${cy} A ${borderRadiusXS} ${borderRadiusXS} 0 0 1 ${dx} ${dy} L ${ex} ${ey} A ${borderRadiusOuter} ${borderRadiusOuter} 0 0 0 ${fx} ${fy} Z')`;\n  return {\n    arrowShadowWidth: shadowWidth,\n    arrowPath,\n    arrowPolygon\n  };\n}\nexport const genRoundedArrow = (token, bgColor, boxShadow) => {\n  const {\n    sizePopupArrow,\n    arrowPolygon,\n    arrowPath,\n    arrowShadowWidth,\n    borderRadiusXS,\n    calc\n  } = token;\n  return {\n    pointerEvents: 'none',\n    width: sizePopupArrow,\n    height: sizePopupArrow,\n    overflow: 'hidden',\n    '&::before': {\n      position: 'absolute',\n      bottom: 0,\n      insetInlineStart: 0,\n      width: sizePopupArrow,\n      height: calc(sizePopupArrow).div(2).equal(),\n      background: bgColor,\n      clipPath: {\n        _multi_value_: true,\n        value: [arrowPolygon, arrowPath]\n      },\n      content: '\"\"'\n    },\n    '&::after': {\n      content: '\"\"',\n      position: 'absolute',\n      width: arrowShadowWidth,\n      height: arrowShadowWidth,\n      bottom: 0,\n      insetInline: 0,\n      margin: 'auto',\n      borderRadius: {\n        _skip_check_: true,\n        value: `0 0 ${unit(borderRadiusXS)} 0`\n      },\n      transform: 'translateY(50%) rotate(-135deg)',\n      boxShadow,\n      zIndex: 0,\n      background: 'transparent'\n    }\n  };\n};","import { unit } from '@ant-design/cssinjs';\nimport { genRoundedArrow } from './roundedArrow';\nexport const MAX_VERTICAL_CONTENT_RADIUS = 8;\nexport function getArrowOffsetToken(options) {\n  const {\n    contentRadius,\n    limitVerticalRadius\n  } = options;\n  const arrowOffset = contentRadius > 12 ? contentRadius + 2 : 12;\n  const arrowOffsetVertical = limitVerticalRadius ? MAX_VERTICAL_CONTENT_RADIUS : arrowOffset;\n  return {\n    arrowOffsetHorizontal: arrowOffset,\n    arrowOffsetVertical\n  };\n}\nfunction isInject(valid, code) {\n  if (!valid) {\n    return {};\n  }\n  return code;\n}\nexport default function getArrowStyle(token, colorBg, options) {\n  const {\n    componentCls,\n    boxShadowPopoverArrow,\n    arrowOffsetVertical,\n    arrowOffsetHorizontal\n  } = token;\n  const {\n    arrowDistance = 0,\n    arrowPlacement = {\n      left: true,\n      right: true,\n      top: true,\n      bottom: true\n    }\n  } = options || {};\n  return {\n    [componentCls]: Object.assign(Object.assign(Object.assign(Object.assign({\n      // ============================ Basic ============================\n      [`${componentCls}-arrow`]: [Object.assign(Object.assign({\n        position: 'absolute',\n        zIndex: 1,\n        display: 'block'\n      }, genRoundedArrow(token, colorBg, boxShadowPopoverArrow)), {\n        '&:before': {\n          background: colorBg\n        }\n      })]\n    }, isInject(!!arrowPlacement.top, {\n      [[`&-placement-top > ${componentCls}-arrow`, `&-placement-topLeft > ${componentCls}-arrow`, `&-placement-topRight > ${componentCls}-arrow`].join(',')]: {\n        bottom: arrowDistance,\n        transform: 'translateY(100%) rotate(180deg)'\n      },\n      [`&-placement-top > ${componentCls}-arrow`]: {\n        left: {\n          _skip_check_: true,\n          value: '50%'\n        },\n        transform: 'translateX(-50%) translateY(100%) rotate(180deg)'\n      },\n      '&-placement-topLeft': {\n        '--arrow-offset-horizontal': arrowOffsetHorizontal,\n        [`> ${componentCls}-arrow`]: {\n          left: {\n            _skip_check_: true,\n            value: arrowOffsetHorizontal\n          }\n        }\n      },\n      '&-placement-topRight': {\n        '--arrow-offset-horizontal': `calc(100% - ${unit(arrowOffsetHorizontal)})`,\n        [`> ${componentCls}-arrow`]: {\n          right: {\n            _skip_check_: true,\n            value: arrowOffsetHorizontal\n          }\n        }\n      }\n    })), isInject(!!arrowPlacement.bottom, {\n      [[`&-placement-bottom > ${componentCls}-arrow`, `&-placement-bottomLeft > ${componentCls}-arrow`, `&-placement-bottomRight > ${componentCls}-arrow`].join(',')]: {\n        top: arrowDistance,\n        transform: `translateY(-100%)`\n      },\n      [`&-placement-bottom > ${componentCls}-arrow`]: {\n        left: {\n          _skip_check_: true,\n          value: '50%'\n        },\n        transform: `translateX(-50%) translateY(-100%)`\n      },\n      '&-placement-bottomLeft': {\n        '--arrow-offset-horizontal': arrowOffsetHorizontal,\n        [`> ${componentCls}-arrow`]: {\n          left: {\n            _skip_check_: true,\n            value: arrowOffsetHorizontal\n          }\n        }\n      },\n      '&-placement-bottomRight': {\n        '--arrow-offset-horizontal': `calc(100% - ${unit(arrowOffsetHorizontal)})`,\n        [`> ${componentCls}-arrow`]: {\n          right: {\n            _skip_check_: true,\n            value: arrowOffsetHorizontal\n          }\n        }\n      }\n    })), isInject(!!arrowPlacement.left, {\n      [[`&-placement-left > ${componentCls}-arrow`, `&-placement-leftTop > ${componentCls}-arrow`, `&-placement-leftBottom > ${componentCls}-arrow`].join(',')]: {\n        right: {\n          _skip_check_: true,\n          value: arrowDistance\n        },\n        transform: 'translateX(100%) rotate(90deg)'\n      },\n      [`&-placement-left > ${componentCls}-arrow`]: {\n        top: {\n          _skip_check_: true,\n          value: '50%'\n        },\n        transform: 'translateY(-50%) translateX(100%) rotate(90deg)'\n      },\n      [`&-placement-leftTop > ${componentCls}-arrow`]: {\n        top: arrowOffsetVertical\n      },\n      [`&-placement-leftBottom > ${componentCls}-arrow`]: {\n        bottom: arrowOffsetVertical\n      }\n    })), isInject(!!arrowPlacement.right, {\n      [[`&-placement-right > ${componentCls}-arrow`, `&-placement-rightTop > ${componentCls}-arrow`, `&-placement-rightBottom > ${componentCls}-arrow`].join(',')]: {\n        left: {\n          _skip_check_: true,\n          value: arrowDistance\n        },\n        transform: 'translateX(-100%) rotate(-90deg)'\n      },\n      [`&-placement-right > ${componentCls}-arrow`]: {\n        top: {\n          _skip_check_: true,\n          value: '50%'\n        },\n        transform: 'translateY(-50%) translateX(-100%) rotate(-90deg)'\n      },\n      [`&-placement-rightTop > ${componentCls}-arrow`]: {\n        top: arrowOffsetVertical\n      },\n      [`&-placement-rightBottom > ${componentCls}-arrow`]: {\n        bottom: arrowOffsetVertical\n      }\n    }))\n  };\n}","import { getArrowOffsetToken } from '../style/placementArrow';\nexport function getOverflowOptions(placement, arrowOffset, arrowWidth, autoAdjustOverflow) {\n  if (autoAdjustOverflow === false) {\n    return {\n      adjustX: false,\n      adjustY: false\n    };\n  }\n  const overflow = autoAdjustOverflow && typeof autoAdjustOverflow === 'object' ? autoAdjustOverflow : {};\n  const baseOverflow = {};\n  switch (placement) {\n    case 'top':\n    case 'bottom':\n      baseOverflow.shiftX = arrowOffset.arrowOffsetHorizontal * 2 + arrowWidth;\n      baseOverflow.shiftY = true;\n      baseOverflow.adjustY = true;\n      break;\n    case 'left':\n    case 'right':\n      baseOverflow.shiftY = arrowOffset.arrowOffsetVertical * 2 + arrowWidth;\n      baseOverflow.shiftX = true;\n      baseOverflow.adjustX = true;\n      break;\n  }\n  const mergedOverflow = Object.assign(Object.assign({}, baseOverflow), overflow);\n  // Support auto shift\n  if (!mergedOverflow.shiftX) {\n    mergedOverflow.adjustX = true;\n  }\n  if (!mergedOverflow.shiftY) {\n    mergedOverflow.adjustY = true;\n  }\n  return mergedOverflow;\n}\nconst PlacementAlignMap = {\n  left: {\n    points: ['cr', 'cl']\n  },\n  right: {\n    points: ['cl', 'cr']\n  },\n  top: {\n    points: ['bc', 'tc']\n  },\n  bottom: {\n    points: ['tc', 'bc']\n  },\n  topLeft: {\n    points: ['bl', 'tl']\n  },\n  leftTop: {\n    points: ['tr', 'tl']\n  },\n  topRight: {\n    points: ['br', 'tr']\n  },\n  rightTop: {\n    points: ['tl', 'tr']\n  },\n  bottomRight: {\n    points: ['tr', 'br']\n  },\n  rightBottom: {\n    points: ['bl', 'br']\n  },\n  bottomLeft: {\n    points: ['tl', 'bl']\n  },\n  leftBottom: {\n    points: ['br', 'bl']\n  }\n};\nconst ArrowCenterPlacementAlignMap = {\n  topLeft: {\n    points: ['bl', 'tc']\n  },\n  leftTop: {\n    points: ['tr', 'cl']\n  },\n  topRight: {\n    points: ['br', 'tc']\n  },\n  rightTop: {\n    points: ['tl', 'cr']\n  },\n  bottomRight: {\n    points: ['tr', 'bc']\n  },\n  rightBottom: {\n    points: ['bl', 'cr']\n  },\n  bottomLeft: {\n    points: ['tl', 'bc']\n  },\n  leftBottom: {\n    points: ['br', 'cl']\n  }\n};\nconst DisableAutoArrowList = new Set(['topLeft', 'topRight', 'bottomLeft', 'bottomRight', 'leftTop', 'leftBottom', 'rightTop', 'rightBottom']);\nexport default function getPlacements(config) {\n  const {\n    arrowWidth,\n    autoAdjustOverflow,\n    arrowPointAtCenter,\n    offset,\n    borderRadius,\n    visibleFirst\n  } = config;\n  const halfArrowWidth = arrowWidth / 2;\n  const placementMap = {};\n  Object.keys(PlacementAlignMap).forEach(key => {\n    const template = arrowPointAtCenter && ArrowCenterPlacementAlignMap[key] || PlacementAlignMap[key];\n    const placementInfo = Object.assign(Object.assign({}, template), {\n      offset: [0, 0],\n      dynamicInset: true\n    });\n    placementMap[key] = placementInfo;\n    // Disable autoArrow since design is fixed position\n    if (DisableAutoArrowList.has(key)) {\n      placementInfo.autoArrow = false;\n    }\n    // Static offset\n    switch (key) {\n      case 'top':\n      case 'topLeft':\n      case 'topRight':\n        placementInfo.offset[1] = -halfArrowWidth - offset;\n        break;\n      case 'bottom':\n      case 'bottomLeft':\n      case 'bottomRight':\n        placementInfo.offset[1] = halfArrowWidth + offset;\n        break;\n      case 'left':\n      case 'leftTop':\n      case 'leftBottom':\n        placementInfo.offset[0] = -halfArrowWidth - offset;\n        break;\n      case 'right':\n      case 'rightTop':\n      case 'rightBottom':\n        placementInfo.offset[0] = halfArrowWidth + offset;\n        break;\n    }\n    // Dynamic offset\n    const arrowOffset = getArrowOffsetToken({\n      contentRadius: borderRadius,\n      limitVerticalRadius: true\n    });\n    if (arrowPointAtCenter) {\n      switch (key) {\n        case 'topLeft':\n        case 'bottomLeft':\n          placementInfo.offset[0] = -arrowOffset.arrowOffsetHorizontal - halfArrowWidth;\n          break;\n        case 'topRight':\n        case 'bottomRight':\n          placementInfo.offset[0] = arrowOffset.arrowOffsetHorizontal + halfArrowWidth;\n          break;\n        case 'leftTop':\n        case 'rightTop':\n          placementInfo.offset[1] = -arrowOffset.arrowOffsetHorizontal * 2 + halfArrowWidth;\n          break;\n        case 'leftBottom':\n        case 'rightBottom':\n          placementInfo.offset[1] = arrowOffset.arrowOffsetHorizontal * 2 - halfArrowWidth;\n          break;\n      }\n    }\n    // Overflow\n    placementInfo.overflow = getOverflowOptions(key, arrowOffset, arrowWidth, autoAdjustOverflow);\n    // VisibleFirst\n    if (visibleFirst) {\n      placementInfo.htmlRegion = 'visibleFirst';\n    }\n  });\n  return placementMap;\n}","import { unit } from '@ant-design/cssinjs';\nimport { resetComponent } from '../../style';\nimport { initZoomMotion } from '../../style/motion';\nimport getArrowStyle, { getArrowOffsetToken, MAX_VERTICAL_CONTENT_RADIUS } from '../../style/placementArrow';\nimport { getArrowToken } from '../../style/roundedArrow';\nimport { genPresetColor, genStyleHooks, mergeToken } from '../../theme/internal';\nconst genTooltipStyle = token => {\n  const {\n    calc,\n    componentCls,\n    // ant-tooltip\n    tooltipMaxWidth,\n    tooltipColor,\n    tooltipBg,\n    tooltipBorderRadius,\n    zIndexPopup,\n    controlHeight,\n    boxShadowSecondary,\n    paddingSM,\n    paddingXS,\n    arrowOffsetHorizontal,\n    sizePopupArrow\n  } = token;\n  // arrowOffsetHorizontal + arrowWidth + borderRadius\n  const edgeAlignMinWidth = calc(tooltipBorderRadius).add(sizePopupArrow).add(arrowOffsetHorizontal).equal();\n  // borderRadius * 2 + arrowWidth\n  const centerAlignMinWidth = calc(tooltipBorderRadius).mul(2).add(sizePopupArrow).equal();\n  return [{\n    [componentCls]: Object.assign(Object.assign(Object.assign(Object.assign({}, resetComponent(token)), {\n      position: 'absolute',\n      zIndex: zIndexPopup,\n      display: 'block',\n      width: 'max-content',\n      maxWidth: tooltipMaxWidth,\n      visibility: 'visible',\n      // When use `autoArrow`, origin will follow the arrow position\n      '--valid-offset-x': 'var(--arrow-offset-horizontal, var(--arrow-x))',\n      transformOrigin: [`var(--valid-offset-x, 50%)`, `var(--arrow-y, 50%)`].join(' '),\n      '&-hidden': {\n        display: 'none'\n      },\n      '--antd-arrow-background-color': tooltipBg,\n      // Wrapper for the tooltip content\n      [`${componentCls}-inner`]: {\n        minWidth: centerAlignMinWidth,\n        minHeight: controlHeight,\n        padding: `${unit(token.calc(paddingSM).div(2).equal())} ${unit(paddingXS)}`,\n        color: tooltipColor,\n        textAlign: 'start',\n        textDecoration: 'none',\n        wordWrap: 'break-word',\n        backgroundColor: tooltipBg,\n        borderRadius: tooltipBorderRadius,\n        boxShadow: boxShadowSecondary,\n        boxSizing: 'border-box'\n      },\n      // Align placement should have another min width\n      [[`&-placement-topLeft`, `&-placement-topRight`, `&-placement-bottomLeft`, `&-placement-bottomRight`].join(',')]: {\n        minWidth: edgeAlignMinWidth\n      },\n      // Limit left and right placement radius\n      [[`&-placement-left`, `&-placement-leftTop`, `&-placement-leftBottom`, `&-placement-right`, `&-placement-rightTop`, `&-placement-rightBottom`].join(',')]: {\n        [`${componentCls}-inner`]: {\n          borderRadius: token.min(tooltipBorderRadius, MAX_VERTICAL_CONTENT_RADIUS)\n        }\n      },\n      [`${componentCls}-content`]: {\n        position: 'relative'\n      }\n    }), genPresetColor(token, (colorKey, {\n      darkColor\n    }) => ({\n      [`&${componentCls}-${colorKey}`]: {\n        [`${componentCls}-inner`]: {\n          backgroundColor: darkColor\n        },\n        [`${componentCls}-arrow`]: {\n          '--antd-arrow-background-color': darkColor\n        }\n      }\n    }))), {\n      // RTL\n      '&-rtl': {\n        direction: 'rtl'\n      }\n    })\n  },\n  // Arrow Style\n  getArrowStyle(token, 'var(--antd-arrow-background-color)'),\n  // Pure Render\n  {\n    [`${componentCls}-pure`]: {\n      position: 'relative',\n      maxWidth: 'none',\n      margin: token.sizePopupArrow\n    }\n  }];\n};\n// ============================== Export ==============================\nexport const prepareComponentToken = token => Object.assign(Object.assign({\n  zIndexPopup: token.zIndexPopupBase + 70\n}, getArrowOffsetToken({\n  contentRadius: token.borderRadius,\n  limitVerticalRadius: true\n})), getArrowToken(mergeToken(token, {\n  borderRadiusOuter: Math.min(token.borderRadiusOuter, 4)\n})));\nexport default (prefixCls, injectStyle = true) => {\n  const useStyle = genStyleHooks('Tooltip', token => {\n    const {\n      borderRadius,\n      colorTextLightSolid,\n      colorBgSpotlight\n    } = token;\n    const TooltipToken = mergeToken(token, {\n      // default variables\n      tooltipMaxWidth: 250,\n      tooltipColor: colorTextLightSolid,\n      tooltipBorderRadius: borderRadius,\n      tooltipBg: colorBgSpotlight\n    });\n    return [genTooltipStyle(TooltipToken), initZoomMotion(token, 'zoom-big-fast')];\n  }, prepareComponentToken, {\n    resetStyle: false,\n    // Popover use Tooltip as internal component. We do not need to handle this.\n    injectStyle\n  });\n  return useStyle(prefixCls);\n};","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport { PresetColors } from '../theme/interface';\nconst inverseColors = PresetColors.map(color => `${color}-inverse`);\nexport const PresetStatusColorTypes = ['success', 'processing', 'error', 'default', 'warning'];\n/**\n * determine if the color keyword belongs to the `Ant Design` {@link PresetColors}.\n * @param color color to be judged\n * @param includeInverse whether to include reversed colors\n */\nexport function isPresetColor(color, includeInverse = true) {\n  if (includeInverse) {\n    return [].concat(_toConsumableArray(inverseColors), _toConsumableArray(PresetColors)).includes(color);\n  }\n  return PresetColors.includes(color);\n}\nexport function isPresetStatusColor(color) {\n  return PresetStatusColorTypes.includes(color);\n}","import classNames from 'classnames';\nimport { isPresetColor } from '../_util/colors';\nexport function parseColor(prefixCls, color) {\n  const isInternalColor = isPresetColor(color);\n  const className = classNames({\n    [`${prefixCls}-${color}`]: color && isInternalColor\n  });\n  const overlayStyle = {};\n  const arrowStyle = {};\n  if (color && !isInternalColor) {\n    overlayStyle.background = color;\n    // @ts-ignore\n    arrowStyle['--antd-arrow-background-color'] = color;\n  }\n  return {\n    className,\n    overlayStyle,\n    arrowStyle\n  };\n}","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { Popup } from 'rc-tooltip';\nimport { ConfigContext } from '../config-provider';\nimport useStyle from './style';\nimport { parseColor } from './util';\n/** @private Internal Component. Do not use in your production. */\nconst PurePanel = props => {\n  const {\n    prefixCls: customizePrefixCls,\n    className,\n    placement = 'top',\n    title,\n    color,\n    overlayInnerStyle\n  } = props;\n  const {\n    getPrefixCls\n  } = React.useContext(ConfigContext);\n  const prefixCls = getPrefixCls('tooltip', customizePrefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  // Color\n  const colorInfo = parseColor(prefixCls, color);\n  const arrowContentStyle = colorInfo.arrowStyle;\n  const formattedOverlayInnerStyle = Object.assign(Object.assign({}, overlayInnerStyle), colorInfo.overlayStyle);\n  const cls = classNames(hashId, cssVarCls, prefixCls, `${prefixCls}-pure`, `${prefixCls}-placement-${placement}`, className, colorInfo.className);\n  return wrapCSSVar(/*#__PURE__*/React.createElement(\"div\", {\n    className: cls,\n    style: arrowContentStyle\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    className: `${prefixCls}-arrow`\n  }), /*#__PURE__*/React.createElement(Popup, Object.assign({}, props, {\n    className: hashId,\n    prefixCls: prefixCls,\n    overlayInnerStyle: formattedOverlayInnerStyle\n  }), title)));\n};\nexport default PurePanel;","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport RcTooltip from 'rc-tooltip';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport ContextIsolator from '../_util/ContextIsolator';\nimport { useZIndex } from '../_util/hooks/useZIndex';\nimport { getTransitionName } from '../_util/motion';\nimport getPlacements from '../_util/placements';\nimport { cloneElement, isFragment } from '../_util/reactNode';\nimport { devUseWarning } from '../_util/warning';\nimport zIndexContext from '../_util/zindexContext';\nimport { useComponentConfig } from '../config-provider/context';\nimport { useToken } from '../theme/internal';\nimport PurePanel from './PurePanel';\nimport useStyle from './style';\nimport { parseColor } from './util';\nconst InternalTooltip = /*#__PURE__*/React.forwardRef((props, ref) => {\n  var _a, _b;\n  const {\n      prefixCls: customizePrefixCls,\n      openClassName,\n      getTooltipContainer,\n      color,\n      overlayInnerStyle,\n      children,\n      afterOpenChange,\n      afterVisibleChange,\n      destroyTooltipOnHide,\n      destroyOnHidden,\n      arrow = true,\n      title,\n      overlay,\n      builtinPlacements,\n      arrowPointAtCenter = false,\n      autoAdjustOverflow = true,\n      motion,\n      getPopupContainer,\n      placement = 'top',\n      mouseEnterDelay = 0.1,\n      mouseLeaveDelay = 0.1,\n      overlayStyle,\n      rootClassName,\n      overlayClassName,\n      styles,\n      classNames: tooltipClassNames\n    } = props,\n    restProps = __rest(props, [\"prefixCls\", \"openClassName\", \"getTooltipContainer\", \"color\", \"overlayInnerStyle\", \"children\", \"afterOpenChange\", \"afterVisibleChange\", \"destroyTooltipOnHide\", \"destroyOnHidden\", \"arrow\", \"title\", \"overlay\", \"builtinPlacements\", \"arrowPointAtCenter\", \"autoAdjustOverflow\", \"motion\", \"getPopupContainer\", \"placement\", \"mouseEnterDelay\", \"mouseLeaveDelay\", \"overlayStyle\", \"rootClassName\", \"overlayClassName\", \"styles\", \"classNames\"]);\n  const mergedShowArrow = !!arrow;\n  const [, token] = useToken();\n  const {\n    getPopupContainer: getContextPopupContainer,\n    getPrefixCls,\n    direction,\n    className: contextClassName,\n    style: contextStyle,\n    classNames: contextClassNames,\n    styles: contextStyles\n  } = useComponentConfig('tooltip');\n  // ============================== Ref ===============================\n  const warning = devUseWarning('Tooltip');\n  const tooltipRef = React.useRef(null);\n  const forceAlign = () => {\n    var _a;\n    (_a = tooltipRef.current) === null || _a === void 0 ? void 0 : _a.forceAlign();\n  };\n  React.useImperativeHandle(ref, () => {\n    var _a, _b;\n    return {\n      forceAlign,\n      forcePopupAlign: () => {\n        warning.deprecated(false, 'forcePopupAlign', 'forceAlign');\n        forceAlign();\n      },\n      nativeElement: (_a = tooltipRef.current) === null || _a === void 0 ? void 0 : _a.nativeElement,\n      popupElement: (_b = tooltipRef.current) === null || _b === void 0 ? void 0 : _b.popupElement\n    };\n  });\n  // ============================== Warn ==============================\n  if (process.env.NODE_ENV !== 'production') {\n    [['visible', 'open'], ['defaultVisible', 'defaultOpen'], ['onVisibleChange', 'onOpenChange'], ['afterVisibleChange', 'afterOpenChange'], ['destroyTooltipOnHide', 'destroyOnHidden'], ['arrowPointAtCenter', 'arrow={{ pointAtCenter: true }}'], ['overlayStyle', 'styles={{ root: {} }}'], ['overlayInnerStyle', 'styles={{ body: {} }}'], ['overlayClassName', 'classNames={{ root: \"\" }}']].forEach(([deprecatedName, newName]) => {\n      warning.deprecated(!(deprecatedName in props), deprecatedName, newName);\n    });\n    process.env.NODE_ENV !== \"production\" ? warning(!destroyTooltipOnHide || typeof destroyTooltipOnHide === 'boolean', 'usage', '`destroyTooltipOnHide` no need config `keepParent` anymore. Please use `boolean` value directly.') : void 0;\n    process.env.NODE_ENV !== \"production\" ? warning(!arrow || typeof arrow === 'boolean' || !('arrowPointAtCenter' in arrow), 'deprecated', '`arrowPointAtCenter` in `arrow` is deprecated. Please use `pointAtCenter` instead.') : void 0;\n  }\n  // ============================== Open ==============================\n  const [open, setOpen] = useMergedState(false, {\n    value: (_a = props.open) !== null && _a !== void 0 ? _a : props.visible,\n    defaultValue: (_b = props.defaultOpen) !== null && _b !== void 0 ? _b : props.defaultVisible\n  });\n  const noTitle = !title && !overlay && title !== 0; // overlay for old version compatibility\n  const onOpenChange = vis => {\n    var _a, _b;\n    setOpen(noTitle ? false : vis);\n    if (!noTitle) {\n      (_a = props.onOpenChange) === null || _a === void 0 ? void 0 : _a.call(props, vis);\n      (_b = props.onVisibleChange) === null || _b === void 0 ? void 0 : _b.call(props, vis);\n    }\n  };\n  const tooltipPlacements = React.useMemo(() => {\n    var _a, _b;\n    let mergedArrowPointAtCenter = arrowPointAtCenter;\n    if (typeof arrow === 'object') {\n      mergedArrowPointAtCenter = (_b = (_a = arrow.pointAtCenter) !== null && _a !== void 0 ? _a : arrow.arrowPointAtCenter) !== null && _b !== void 0 ? _b : arrowPointAtCenter;\n    }\n    return builtinPlacements || getPlacements({\n      arrowPointAtCenter: mergedArrowPointAtCenter,\n      autoAdjustOverflow,\n      arrowWidth: mergedShowArrow ? token.sizePopupArrow : 0,\n      borderRadius: token.borderRadius,\n      offset: token.marginXXS,\n      visibleFirst: true\n    });\n  }, [arrowPointAtCenter, arrow, builtinPlacements, token]);\n  const memoOverlay = React.useMemo(() => {\n    if (title === 0) {\n      return title;\n    }\n    return overlay || title || '';\n  }, [overlay, title]);\n  const memoOverlayWrapper = /*#__PURE__*/React.createElement(ContextIsolator, {\n    space: true\n  }, typeof memoOverlay === 'function' ? memoOverlay() : memoOverlay);\n  const prefixCls = getPrefixCls('tooltip', customizePrefixCls);\n  const rootPrefixCls = getPrefixCls();\n  const injectFromPopover = props['data-popover-inject'];\n  let tempOpen = open;\n  // Hide tooltip when there is no title\n  if (!('open' in props) && !('visible' in props) && noTitle) {\n    tempOpen = false;\n  }\n  // ============================= Render =============================\n  const child = /*#__PURE__*/React.isValidElement(children) && !isFragment(children) ? children : /*#__PURE__*/React.createElement(\"span\", null, children);\n  const childProps = child.props;\n  const childCls = !childProps.className || typeof childProps.className === 'string' ? classNames(childProps.className, openClassName || `${prefixCls}-open`) : childProps.className;\n  // Style\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls, !injectFromPopover);\n  // Color\n  const colorInfo = parseColor(prefixCls, color);\n  const arrowContentStyle = colorInfo.arrowStyle;\n  const rootClassNames = classNames(overlayClassName, {\n    [`${prefixCls}-rtl`]: direction === 'rtl'\n  }, colorInfo.className, rootClassName, hashId, cssVarCls, contextClassName, contextClassNames.root, tooltipClassNames === null || tooltipClassNames === void 0 ? void 0 : tooltipClassNames.root);\n  const bodyClassNames = classNames(contextClassNames.body, tooltipClassNames === null || tooltipClassNames === void 0 ? void 0 : tooltipClassNames.body);\n  // ============================ zIndex ============================\n  const [zIndex, contextZIndex] = useZIndex('Tooltip', restProps.zIndex);\n  const content = /*#__PURE__*/React.createElement(RcTooltip, Object.assign({}, restProps, {\n    zIndex: zIndex,\n    showArrow: mergedShowArrow,\n    placement: placement,\n    mouseEnterDelay: mouseEnterDelay,\n    mouseLeaveDelay: mouseLeaveDelay,\n    prefixCls: prefixCls,\n    classNames: {\n      root: rootClassNames,\n      body: bodyClassNames\n    },\n    styles: {\n      root: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, arrowContentStyle), contextStyles.root), contextStyle), overlayStyle), styles === null || styles === void 0 ? void 0 : styles.root),\n      body: Object.assign(Object.assign(Object.assign(Object.assign({}, contextStyles.body), overlayInnerStyle), styles === null || styles === void 0 ? void 0 : styles.body), colorInfo.overlayStyle)\n    },\n    getTooltipContainer: getPopupContainer || getTooltipContainer || getContextPopupContainer,\n    ref: tooltipRef,\n    builtinPlacements: tooltipPlacements,\n    overlay: memoOverlayWrapper,\n    visible: tempOpen,\n    onVisibleChange: onOpenChange,\n    afterVisibleChange: afterOpenChange !== null && afterOpenChange !== void 0 ? afterOpenChange : afterVisibleChange,\n    arrowContent: /*#__PURE__*/React.createElement(\"span\", {\n      className: `${prefixCls}-arrow-content`\n    }),\n    motion: {\n      motionName: getTransitionName(rootPrefixCls, 'zoom-big-fast', props.transitionName),\n      motionDeadline: 1000\n    },\n    // TODO: In the future, destroyTooltipOnHide in rc-tooltip needs to be upgrade to destroyOnHidden\n    destroyTooltipOnHide: destroyOnHidden !== null && destroyOnHidden !== void 0 ? destroyOnHidden : !!destroyTooltipOnHide\n  }), tempOpen ? cloneElement(child, {\n    className: childCls\n  }) : child);\n  return wrapCSSVar(/*#__PURE__*/React.createElement(zIndexContext.Provider, {\n    value: contextZIndex\n  }, content));\n});\nconst Tooltip = InternalTooltip;\nif (process.env.NODE_ENV !== 'production') {\n  Tooltip.displayName = 'Tooltip';\n}\nTooltip._InternalPanelDoNotUseOrYouWillBeFired = PurePanel;\nexport default Tooltip;","// This icon file is generated automatically.\nvar LeftOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\" } }] }, \"name\": \"left\", \"theme\": \"outlined\" };\nexport default LeftOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport LeftOutlinedSvg from \"@ant-design/icons-svg/es/asn/LeftOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar LeftOutlined = function LeftOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: LeftOutlinedSvg\n  }));\n};\n\n/**![left](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTcyNCAyMTguM1YxNDFjMC02LjctNy43LTEwLjQtMTIuOS02LjNMMjYwLjMgNDg2LjhhMzEuODYgMzEuODYgMCAwMDAgNTAuM2w0NTAuOCAzNTIuMWM1LjMgNC4xIDEyLjkuNCAxMi45LTYuM3YtNzcuM2MwLTQuOS0yLjMtOS42LTYuMS0xMi42bC0zNjAtMjgxIDM2MC0yODEuMWMzLjgtMyA2LjEtNy43IDYuMS0xMi42eiIgLz48L3N2Zz4=) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(LeftOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'LeftOutlined';\n}\nexport default RefIcon;","import KeyCode from \"rc-util/es/KeyCode\";\nimport raf from \"rc-util/es/raf\";\nimport * as React from \"react\";\nvar ESC = KeyCode.ESC,\n  TAB = KeyCode.TAB;\nexport default function useAccessibility(_ref) {\n  var visible = _ref.visible,\n    triggerRef = _ref.triggerRef,\n    onVisibleChange = _ref.onVisibleChange,\n    autoFocus = _ref.autoFocus,\n    overlayRef = _ref.overlayRef;\n  var focusMenuRef = React.useRef(false);\n  var handleCloseMenuAndReturnFocus = function handleCloseMenuAndReturnFocus() {\n    if (visible) {\n      var _triggerRef$current, _triggerRef$current$f;\n      (_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 || (_triggerRef$current$f = _triggerRef$current.focus) === null || _triggerRef$current$f === void 0 || _triggerRef$current$f.call(_triggerRef$current);\n      onVisibleChange === null || onVisibleChange === void 0 || onVisibleChange(false);\n    }\n  };\n  var focusMenu = function focusMenu() {\n    var _overlayRef$current;\n    if ((_overlayRef$current = overlayRef.current) !== null && _overlayRef$current !== void 0 && _overlayRef$current.focus) {\n      overlayRef.current.focus();\n      focusMenuRef.current = true;\n      return true;\n    }\n    return false;\n  };\n  var handleKeyDown = function handleKeyDown(event) {\n    switch (event.keyCode) {\n      case ESC:\n        handleCloseMenuAndReturnFocus();\n        break;\n      case TAB:\n        {\n          var focusResult = false;\n          if (!focusMenuRef.current) {\n            focusResult = focusMenu();\n          }\n          if (focusResult) {\n            event.preventDefault();\n          } else {\n            handleCloseMenuAndReturnFocus();\n          }\n          break;\n        }\n    }\n  };\n  React.useEffect(function () {\n    if (visible) {\n      window.addEventListener(\"keydown\", handleKeyDown);\n      if (autoFocus) {\n        // FIXME: hack with raf\n        raf(focusMenu, 3);\n      }\n      return function () {\n        window.removeEventListener(\"keydown\", handleKeyDown);\n        focusMenuRef.current = false;\n      };\n    }\n    return function () {\n      focusMenuRef.current = false;\n    };\n  }, [visible]); // eslint-disable-line react-hooks/exhaustive-deps\n}","import { composeRef, getNodeRef, supportRef } from \"rc-util/es/ref\";\nimport React, { forwardRef, useMemo } from 'react';\nvar Overlay = /*#__PURE__*/forwardRef(function (props, ref) {\n  var overlay = props.overlay,\n    arrow = props.arrow,\n    prefixCls = props.prefixCls;\n  var overlayNode = useMemo(function () {\n    var overlayElement;\n    if (typeof overlay === 'function') {\n      overlayElement = overlay();\n    } else {\n      overlayElement = overlay;\n    }\n    return overlayElement;\n  }, [overlay]);\n  var composedRef = composeRef(ref, getNodeRef(overlayNode));\n  return /*#__PURE__*/React.createElement(React.Fragment, null, arrow && /*#__PURE__*/React.createElement(\"div\", {\n    className: \"\".concat(prefixCls, \"-arrow\")\n  }), /*#__PURE__*/React.cloneElement(overlayNode, {\n    ref: supportRef(overlayNode) ? composedRef : undefined\n  }));\n});\nexport default Overlay;","var autoAdjustOverflow = {\n  adjustX: 1,\n  adjustY: 1\n};\nvar targetOffset = [0, 0];\nvar placements = {\n  topLeft: {\n    points: ['bl', 'tl'],\n    overflow: autoAdjustOverflow,\n    offset: [0, -4],\n    targetOffset: targetOffset\n  },\n  top: {\n    points: ['bc', 'tc'],\n    overflow: autoAdjustOverflow,\n    offset: [0, -4],\n    targetOffset: targetOffset\n  },\n  topRight: {\n    points: ['br', 'tr'],\n    overflow: autoAdjustOverflow,\n    offset: [0, -4],\n    targetOffset: targetOffset\n  },\n  bottomLeft: {\n    points: ['tl', 'bl'],\n    overflow: autoAdjustOverflow,\n    offset: [0, 4],\n    targetOffset: targetOffset\n  },\n  bottom: {\n    points: ['tc', 'bc'],\n    overflow: autoAdjustOverflow,\n    offset: [0, 4],\n    targetOffset: targetOffset\n  },\n  bottomRight: {\n    points: ['tr', 'br'],\n    overflow: autoAdjustOverflow,\n    offset: [0, 4],\n    targetOffset: targetOffset\n  }\n};\nexport default placements;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"arrow\", \"prefixCls\", \"transitionName\", \"animation\", \"align\", \"placement\", \"placements\", \"getPopupContainer\", \"showAction\", \"hideAction\", \"overlayClassName\", \"overlayStyle\", \"visible\", \"trigger\", \"autoFocus\", \"overlay\", \"children\", \"onVisibleChange\"];\nimport Trigger from '@rc-component/trigger';\nimport classNames from 'classnames';\nimport { composeRef, getNodeRef, supportRef } from \"rc-util/es/ref\";\nimport React from 'react';\nimport useAccessibility from \"./hooks/useAccessibility\";\nimport Overlay from \"./Overlay\";\nimport Placements from \"./placements\";\nfunction Dropdown(props, ref) {\n  var _children$props;\n  var _props$arrow = props.arrow,\n    arrow = _props$arrow === void 0 ? false : _props$arrow,\n    _props$prefixCls = props.prefixCls,\n    prefixCls = _props$prefixCls === void 0 ? 'rc-dropdown' : _props$prefixCls,\n    transitionName = props.transitionName,\n    animation = props.animation,\n    align = props.align,\n    _props$placement = props.placement,\n    placement = _props$placement === void 0 ? 'bottomLeft' : _props$placement,\n    _props$placements = props.placements,\n    placements = _props$placements === void 0 ? Placements : _props$placements,\n    getPopupContainer = props.getPopupContainer,\n    showAction = props.showAction,\n    hideAction = props.hideAction,\n    overlayClassName = props.overlayClassName,\n    overlayStyle = props.overlayStyle,\n    visible = props.visible,\n    _props$trigger = props.trigger,\n    trigger = _props$trigger === void 0 ? ['hover'] : _props$trigger,\n    autoFocus = props.autoFocus,\n    overlay = props.overlay,\n    children = props.children,\n    onVisibleChange = props.onVisibleChange,\n    otherProps = _objectWithoutProperties(props, _excluded);\n  var _React$useState = React.useState(),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    triggerVisible = _React$useState2[0],\n    setTriggerVisible = _React$useState2[1];\n  var mergedVisible = 'visible' in props ? visible : triggerVisible;\n  var triggerRef = React.useRef(null);\n  var overlayRef = React.useRef(null);\n  var childRef = React.useRef(null);\n  React.useImperativeHandle(ref, function () {\n    return triggerRef.current;\n  });\n  var handleVisibleChange = function handleVisibleChange(newVisible) {\n    setTriggerVisible(newVisible);\n    onVisibleChange === null || onVisibleChange === void 0 || onVisibleChange(newVisible);\n  };\n  useAccessibility({\n    visible: mergedVisible,\n    triggerRef: childRef,\n    onVisibleChange: handleVisibleChange,\n    autoFocus: autoFocus,\n    overlayRef: overlayRef\n  });\n  var onClick = function onClick(e) {\n    var onOverlayClick = props.onOverlayClick;\n    setTriggerVisible(false);\n    if (onOverlayClick) {\n      onOverlayClick(e);\n    }\n  };\n  var getMenuElement = function getMenuElement() {\n    return /*#__PURE__*/React.createElement(Overlay, {\n      ref: overlayRef,\n      overlay: overlay,\n      prefixCls: prefixCls,\n      arrow: arrow\n    });\n  };\n  var getMenuElementOrLambda = function getMenuElementOrLambda() {\n    if (typeof overlay === 'function') {\n      return getMenuElement;\n    }\n    return getMenuElement();\n  };\n  var getMinOverlayWidthMatchTrigger = function getMinOverlayWidthMatchTrigger() {\n    var minOverlayWidthMatchTrigger = props.minOverlayWidthMatchTrigger,\n      alignPoint = props.alignPoint;\n    if ('minOverlayWidthMatchTrigger' in props) {\n      return minOverlayWidthMatchTrigger;\n    }\n    return !alignPoint;\n  };\n  var getOpenClassName = function getOpenClassName() {\n    var openClassName = props.openClassName;\n    if (openClassName !== undefined) {\n      return openClassName;\n    }\n    return \"\".concat(prefixCls, \"-open\");\n  };\n  var childrenNode = /*#__PURE__*/React.cloneElement(children, {\n    className: classNames((_children$props = children.props) === null || _children$props === void 0 ? void 0 : _children$props.className, mergedVisible && getOpenClassName()),\n    ref: supportRef(children) ? composeRef(childRef, getNodeRef(children)) : undefined\n  });\n  var triggerHideAction = hideAction;\n  if (!triggerHideAction && trigger.indexOf('contextMenu') !== -1) {\n    triggerHideAction = ['click'];\n  }\n  return /*#__PURE__*/React.createElement(Trigger, _extends({\n    builtinPlacements: placements\n  }, otherProps, {\n    prefixCls: prefixCls,\n    ref: triggerRef,\n    popupClassName: classNames(overlayClassName, _defineProperty({}, \"\".concat(prefixCls, \"-show-arrow\"), arrow)),\n    popupStyle: overlayStyle,\n    action: trigger,\n    showAction: showAction,\n    hideAction: triggerHideAction,\n    popupPlacement: placement,\n    popupAlign: align,\n    popupTransitionName: transitionName,\n    popupAnimation: animation,\n    popupVisible: mergedVisible,\n    stretch: getMinOverlayWidthMatchTrigger() ? 'minWidth' : '',\n    popup: getMenuElementOrLambda(),\n    onPopupVisibleChange: handleVisibleChange,\n    onPopupClick: onClick,\n    getPopupContainer: getPopupContainer\n  }), childrenNode);\n}\nexport default /*#__PURE__*/React.forwardRef(Dropdown);","import * as React from 'react';\nexport var IdContext = /*#__PURE__*/React.createContext(null);\nexport function getMenuId(uuid, eventKey) {\n  if (uuid === undefined) {\n    return null;\n  }\n  return \"\".concat(uuid, \"-\").concat(eventKey);\n}\n\n/**\n * Get `data-menu-id`\n */\nexport function useMenuId(eventKey) {\n  var id = React.useContext(IdContext);\n  return getMenuId(id, eventKey);\n}","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nvar _excluded = [\"children\", \"locked\"];\nimport * as React from 'react';\nimport useMemo from \"rc-util/es/hooks/useMemo\";\nimport isEqual from \"rc-util/es/isEqual\";\nexport var MenuContext = /*#__PURE__*/React.createContext(null);\nfunction mergeProps(origin, target) {\n  var clone = _objectSpread({}, origin);\n  Object.keys(target).forEach(function (key) {\n    var value = target[key];\n    if (value !== undefined) {\n      clone[key] = value;\n    }\n  });\n  return clone;\n}\nexport default function InheritableContextProvider(_ref) {\n  var children = _ref.children,\n    locked = _ref.locked,\n    restProps = _objectWithoutProperties(_ref, _excluded);\n  var context = React.useContext(MenuContext);\n  var inheritableContext = useMemo(function () {\n    return mergeProps(context, restProps);\n  }, [context, restProps], function (prev, next) {\n    return !locked && (prev[0] !== next[0] || !isEqual(prev[1], next[1], true));\n  });\n  return /*#__PURE__*/React.createElement(MenuContext.Provider, {\n    value: inheritableContext\n  }, children);\n}","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nvar EmptyList = [];\n\n// ========================= Path Register =========================\n\nexport var PathRegisterContext = /*#__PURE__*/React.createContext(null);\nexport function useMeasure() {\n  return React.useContext(PathRegisterContext);\n}\n\n// ========================= Path Tracker ==========================\nexport var PathTrackerContext = /*#__PURE__*/React.createContext(EmptyList);\nexport function useFullPath(eventKey) {\n  var parentKeyPath = React.useContext(PathTrackerContext);\n  return React.useMemo(function () {\n    return eventKey !== undefined ? [].concat(_toConsumableArray(parentKeyPath), [eventKey]) : parentKeyPath;\n  }, [parentKeyPath, eventKey]);\n}\n\n// =========================== Path User ===========================\n\nexport var PathUserContext = /*#__PURE__*/React.createContext(null);","import * as React from 'react';\nvar PrivateContext = /*#__PURE__*/React.createContext({});\nexport default PrivateContext;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport isVisible from \"./isVisible\";\nfunction focusable(node) {\n  var includePositive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n  if (isVisible(node)) {\n    var nodeName = node.nodeName.toLowerCase();\n    var isFocusableElement =\n    // Focusable element\n    ['input', 'select', 'textarea', 'button'].includes(nodeName) ||\n    // Editable element\n    node.isContentEditable ||\n    // Anchor with href element\n    nodeName === 'a' && !!node.getAttribute('href');\n\n    // Get tabIndex\n    var tabIndexAttr = node.getAttribute('tabindex');\n    var tabIndexNum = Number(tabIndexAttr);\n\n    // Parse as number if validate\n    var tabIndex = null;\n    if (tabIndexAttr && !Number.isNaN(tabIndexNum)) {\n      tabIndex = tabIndexNum;\n    } else if (isFocusableElement && tabIndex === null) {\n      tabIndex = 0;\n    }\n\n    // Block focusable if disabled\n    if (isFocusableElement && node.disabled) {\n      tabIndex = null;\n    }\n    return tabIndex !== null && (tabIndex >= 0 || includePositive && tabIndex < 0);\n  }\n  return false;\n}\nexport function getFocusNodeList(node) {\n  var includePositive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n  var res = _toConsumableArray(node.querySelectorAll('*')).filter(function (child) {\n    return focusable(child, includePositive);\n  });\n  if (focusable(node, includePositive)) {\n    res.unshift(node);\n  }\n  return res;\n}\nvar lastFocusElement = null;\n\n/** @deprecated Do not use since this may failed when used in async */\nexport function saveLastFocusNode() {\n  lastFocusElement = document.activeElement;\n}\n\n/** @deprecated Do not use since this may failed when used in async */\nexport function clearLastFocusNode() {\n  lastFocusElement = null;\n}\n\n/** @deprecated Do not use since this may failed when used in async */\nexport function backLastFocusNode() {\n  if (lastFocusElement) {\n    try {\n      // 元素可能已经被移动了\n      lastFocusElement.focus();\n\n      /* eslint-disable no-empty */\n    } catch (e) {\n      // empty\n    }\n    /* eslint-enable no-empty */\n  }\n}\nexport function limitTabRange(node, e) {\n  if (e.keyCode === 9) {\n    var tabNodeList = getFocusNodeList(node);\n    var lastTabNode = tabNodeList[e.shiftKey ? 0 : tabNodeList.length - 1];\n    var leavingTab = lastTabNode === document.activeElement || node === document.activeElement;\n    if (leavingTab) {\n      var target = tabNodeList[e.shiftKey ? tabNodeList.length - 1 : 0];\n      target.focus();\n      e.preventDefault();\n    }\n  }\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { getFocusNodeList } from \"rc-util/es/Dom/focus\";\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport raf from \"rc-util/es/raf\";\nimport * as React from 'react';\nimport { getMenuId } from \"../context/IdContext\";\n// destruct to reduce minify size\nvar LEFT = KeyCode.LEFT,\n  RIGHT = KeyCode.RIGHT,\n  UP = KeyCode.UP,\n  DOWN = KeyCode.DOWN,\n  ENTER = KeyCode.ENTER,\n  ESC = KeyCode.ESC,\n  HOME = KeyCode.HOME,\n  END = KeyCode.END;\nvar ArrowKeys = [UP, DOWN, LEFT, RIGHT];\nfunction getOffset(mode, isRootLevel, isRtl, which) {\n  var _offsets;\n  var prev = 'prev';\n  var next = 'next';\n  var children = 'children';\n  var parent = 'parent';\n\n  // Inline enter is special that we use unique operation\n  if (mode === 'inline' && which === ENTER) {\n    return {\n      inlineTrigger: true\n    };\n  }\n  var inline = _defineProperty(_defineProperty({}, UP, prev), DOWN, next);\n  var horizontal = _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, LEFT, isRtl ? next : prev), RIGHT, isRtl ? prev : next), DOWN, children), ENTER, children);\n  var vertical = _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, UP, prev), DOWN, next), ENTER, children), ESC, parent), LEFT, isRtl ? children : parent), RIGHT, isRtl ? parent : children);\n  var offsets = {\n    inline: inline,\n    horizontal: horizontal,\n    vertical: vertical,\n    inlineSub: inline,\n    horizontalSub: vertical,\n    verticalSub: vertical\n  };\n  var type = (_offsets = offsets[\"\".concat(mode).concat(isRootLevel ? '' : 'Sub')]) === null || _offsets === void 0 ? void 0 : _offsets[which];\n  switch (type) {\n    case prev:\n      return {\n        offset: -1,\n        sibling: true\n      };\n    case next:\n      return {\n        offset: 1,\n        sibling: true\n      };\n    case parent:\n      return {\n        offset: -1,\n        sibling: false\n      };\n    case children:\n      return {\n        offset: 1,\n        sibling: false\n      };\n    default:\n      return null;\n  }\n}\nfunction findContainerUL(element) {\n  var current = element;\n  while (current) {\n    if (current.getAttribute('data-menu-list')) {\n      return current;\n    }\n    current = current.parentElement;\n  }\n\n  // Normally should not reach this line\n  /* istanbul ignore next */\n  return null;\n}\n\n/**\n * Find focused element within element set provided\n */\nfunction getFocusElement(activeElement, elements) {\n  var current = activeElement || document.activeElement;\n  while (current) {\n    if (elements.has(current)) {\n      return current;\n    }\n    current = current.parentElement;\n  }\n  return null;\n}\n\n/**\n * Get focusable elements from the element set under provided container\n */\nexport function getFocusableElements(container, elements) {\n  var list = getFocusNodeList(container, true);\n  return list.filter(function (ele) {\n    return elements.has(ele);\n  });\n}\nfunction getNextFocusElement(parentQueryContainer, elements, focusMenuElement) {\n  var offset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;\n  // Key on the menu item will not get validate parent container\n  if (!parentQueryContainer) {\n    return null;\n  }\n\n  // List current level menu item elements\n  var sameLevelFocusableMenuElementList = getFocusableElements(parentQueryContainer, elements);\n\n  // Find next focus index\n  var count = sameLevelFocusableMenuElementList.length;\n  var focusIndex = sameLevelFocusableMenuElementList.findIndex(function (ele) {\n    return focusMenuElement === ele;\n  });\n  if (offset < 0) {\n    if (focusIndex === -1) {\n      focusIndex = count - 1;\n    } else {\n      focusIndex -= 1;\n    }\n  } else if (offset > 0) {\n    focusIndex += 1;\n  }\n  focusIndex = (focusIndex + count) % count;\n\n  // Focus menu item\n  return sameLevelFocusableMenuElementList[focusIndex];\n}\nexport var refreshElements = function refreshElements(keys, id) {\n  var elements = new Set();\n  var key2element = new Map();\n  var element2key = new Map();\n  keys.forEach(function (key) {\n    var element = document.querySelector(\"[data-menu-id='\".concat(getMenuId(id, key), \"']\"));\n    if (element) {\n      elements.add(element);\n      element2key.set(element, key);\n      key2element.set(key, element);\n    }\n  });\n  return {\n    elements: elements,\n    key2element: key2element,\n    element2key: element2key\n  };\n};\nexport function useAccessibility(mode, activeKey, isRtl, id, containerRef, getKeys, getKeyPath, triggerActiveKey, triggerAccessibilityOpen, originOnKeyDown) {\n  var rafRef = React.useRef();\n  var activeRef = React.useRef();\n  activeRef.current = activeKey;\n  var cleanRaf = function cleanRaf() {\n    raf.cancel(rafRef.current);\n  };\n  React.useEffect(function () {\n    return function () {\n      cleanRaf();\n    };\n  }, []);\n  return function (e) {\n    var which = e.which;\n    if ([].concat(ArrowKeys, [ENTER, ESC, HOME, END]).includes(which)) {\n      var keys = getKeys();\n      var refreshedElements = refreshElements(keys, id);\n      var _refreshedElements = refreshedElements,\n        elements = _refreshedElements.elements,\n        key2element = _refreshedElements.key2element,\n        element2key = _refreshedElements.element2key;\n\n      // First we should find current focused MenuItem/SubMenu element\n      var activeElement = key2element.get(activeKey);\n      var focusMenuElement = getFocusElement(activeElement, elements);\n      var focusMenuKey = element2key.get(focusMenuElement);\n      var offsetObj = getOffset(mode, getKeyPath(focusMenuKey, true).length === 1, isRtl, which);\n\n      // Some mode do not have fully arrow operation like inline\n      if (!offsetObj && which !== HOME && which !== END) {\n        return;\n      }\n\n      // Arrow prevent default to avoid page scroll\n      if (ArrowKeys.includes(which) || [HOME, END].includes(which)) {\n        e.preventDefault();\n      }\n      var tryFocus = function tryFocus(menuElement) {\n        if (menuElement) {\n          var focusTargetElement = menuElement;\n\n          // Focus to link instead of menu item if possible\n          var link = menuElement.querySelector('a');\n          if (link !== null && link !== void 0 && link.getAttribute('href')) {\n            focusTargetElement = link;\n          }\n          var targetKey = element2key.get(menuElement);\n          triggerActiveKey(targetKey);\n\n          /**\n           * Do not `useEffect` here since `tryFocus` may trigger async\n           * which makes React sync update the `activeKey`\n           * that force render before `useRef` set the next activeKey\n           */\n          cleanRaf();\n          rafRef.current = raf(function () {\n            if (activeRef.current === targetKey) {\n              focusTargetElement.focus();\n            }\n          });\n        }\n      };\n      if ([HOME, END].includes(which) || offsetObj.sibling || !focusMenuElement) {\n        // ========================== Sibling ==========================\n        // Find walkable focus menu element container\n        var parentQueryContainer;\n        if (!focusMenuElement || mode === 'inline') {\n          parentQueryContainer = containerRef.current;\n        } else {\n          parentQueryContainer = findContainerUL(focusMenuElement);\n        }\n\n        // Get next focus element\n        var targetElement;\n        var focusableElements = getFocusableElements(parentQueryContainer, elements);\n        if (which === HOME) {\n          targetElement = focusableElements[0];\n        } else if (which === END) {\n          targetElement = focusableElements[focusableElements.length - 1];\n        } else {\n          targetElement = getNextFocusElement(parentQueryContainer, elements, focusMenuElement, offsetObj.offset);\n        }\n        // Focus menu item\n        tryFocus(targetElement);\n\n        // ======================= InlineTrigger =======================\n      } else if (offsetObj.inlineTrigger) {\n        // Inline trigger no need switch to sub menu item\n        triggerAccessibilityOpen(focusMenuKey);\n        // =========================== Level ===========================\n      } else if (offsetObj.offset > 0) {\n        triggerAccessibilityOpen(focusMenuKey, true);\n        cleanRaf();\n        rafRef.current = raf(function () {\n          // Async should resync elements\n          refreshedElements = refreshElements(keys, id);\n          var controlId = focusMenuElement.getAttribute('aria-controls');\n          var subQueryContainer = document.getElementById(controlId);\n\n          // Get sub focusable menu item\n          var targetElement = getNextFocusElement(subQueryContainer, refreshedElements.elements);\n\n          // Focus menu item\n          tryFocus(targetElement);\n        }, 5);\n      } else if (offsetObj.offset < 0) {\n        var keyPath = getKeyPath(focusMenuKey, true);\n        var parentKey = keyPath[keyPath.length - 2];\n        var parentMenuElement = key2element.get(parentKey);\n\n        // Focus menu item\n        triggerAccessibilityOpen(parentKey, false);\n        tryFocus(parentMenuElement);\n      }\n    }\n\n    // Pass origin key down event\n    originOnKeyDown === null || originOnKeyDown === void 0 || originOnKeyDown(e);\n  };\n}","export function nextSlice(callback) {\n  /* istanbul ignore next */\n  Promise.resolve().then(callback);\n}","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useRef, useCallback } from 'react';\nimport warning from \"rc-util/es/warning\";\nimport { nextSlice } from \"../utils/timeUtil\";\nvar PATH_SPLIT = '__RC_UTIL_PATH_SPLIT__';\nvar getPathStr = function getPathStr(keyPath) {\n  return keyPath.join(PATH_SPLIT);\n};\nvar getPathKeys = function getPathKeys(keyPathStr) {\n  return keyPathStr.split(PATH_SPLIT);\n};\nexport var OVERFLOW_KEY = 'rc-menu-more';\nexport default function useKeyRecords() {\n  var _React$useState = React.useState({}),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    internalForceUpdate = _React$useState2[1];\n  var key2pathRef = useRef(new Map());\n  var path2keyRef = useRef(new Map());\n  var _React$useState3 = React.useState([]),\n    _React$useState4 = _slicedToArray(_React$useState3, 2),\n    overflowKeys = _React$useState4[0],\n    setOverflowKeys = _React$useState4[1];\n  var updateRef = useRef(0);\n  var destroyRef = useRef(false);\n  var forceUpdate = function forceUpdate() {\n    if (!destroyRef.current) {\n      internalForceUpdate({});\n    }\n  };\n  var registerPath = useCallback(function (key, keyPath) {\n    // Warning for invalidate or duplicated `key`\n    if (process.env.NODE_ENV !== 'production') {\n      warning(!key2pathRef.current.has(key), \"Duplicated key '\".concat(key, \"' used in Menu by path [\").concat(keyPath.join(' > '), \"]\"));\n    }\n\n    // Fill map\n    var connectedPath = getPathStr(keyPath);\n    path2keyRef.current.set(connectedPath, key);\n    key2pathRef.current.set(key, connectedPath);\n    updateRef.current += 1;\n    var id = updateRef.current;\n    nextSlice(function () {\n      if (id === updateRef.current) {\n        forceUpdate();\n      }\n    });\n  }, []);\n  var unregisterPath = useCallback(function (key, keyPath) {\n    var connectedPath = getPathStr(keyPath);\n    path2keyRef.current.delete(connectedPath);\n    key2pathRef.current.delete(key);\n  }, []);\n  var refreshOverflowKeys = useCallback(function (keys) {\n    setOverflowKeys(keys);\n  }, []);\n  var getKeyPath = useCallback(function (eventKey, includeOverflow) {\n    var fullPath = key2pathRef.current.get(eventKey) || '';\n    var keys = getPathKeys(fullPath);\n    if (includeOverflow && overflowKeys.includes(keys[0])) {\n      keys.unshift(OVERFLOW_KEY);\n    }\n    return keys;\n  }, [overflowKeys]);\n  var isSubPathKey = useCallback(function (pathKeys, eventKey) {\n    return pathKeys.filter(function (item) {\n      return item !== undefined;\n    }).some(function (pathKey) {\n      var pathKeyList = getKeyPath(pathKey, true);\n      return pathKeyList.includes(eventKey);\n    });\n  }, [getKeyPath]);\n  var getKeys = function getKeys() {\n    var keys = _toConsumableArray(key2pathRef.current.keys());\n    if (overflowKeys.length) {\n      keys.push(OVERFLOW_KEY);\n    }\n    return keys;\n  };\n\n  /**\n   * Find current key related child path keys\n   */\n  var getSubPathKeys = useCallback(function (key) {\n    var connectedPath = \"\".concat(key2pathRef.current.get(key)).concat(PATH_SPLIT);\n    var pathKeys = new Set();\n    _toConsumableArray(path2keyRef.current.keys()).forEach(function (pathKey) {\n      if (pathKey.startsWith(connectedPath)) {\n        pathKeys.add(path2keyRef.current.get(pathKey));\n      }\n    });\n    return pathKeys;\n  }, []);\n  React.useEffect(function () {\n    return function () {\n      destroyRef.current = true;\n    };\n  }, []);\n  return {\n    // Register\n    registerPath: registerPath,\n    unregisterPath: unregisterPath,\n    refreshOverflowKeys: refreshOverflowKeys,\n    // Util\n    isSubPathKey: isSubPathKey,\n    getKeyPath: getKeyPath,\n    getKeys: getKeys,\n    getSubPathKeys: getSubPathKeys\n  };\n}","import * as React from 'react';\n\n/**\n * Cache callback function that always return same ref instead.\n * This is used for context optimization.\n */\nexport default function useMemoCallback(func) {\n  var funRef = React.useRef(func);\n  funRef.current = func;\n  var callback = React.useCallback(function () {\n    var _funRef$current;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    return (_funRef$current = funRef.current) === null || _funRef$current === void 0 ? void 0 : _funRef$current.call.apply(_funRef$current, [funRef].concat(args));\n  }, []);\n  return func ? callback : undefined;\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nvar uniquePrefix = Math.random().toFixed(5).toString().slice(2);\nvar internalId = 0;\nexport default function useUUID(id) {\n  var _useMergedState = useMergedState(id, {\n      value: id\n    }),\n    _useMergedState2 = _slicedToArray(_useMergedState, 2),\n    uuid = _useMergedState2[0],\n    setUUID = _useMergedState2[1];\n  React.useEffect(function () {\n    internalId += 1;\n    var newId = process.env.NODE_ENV === 'test' ? 'test' : \"\".concat(uniquePrefix, \"-\").concat(internalId);\n    setUUID(\"rc-menu-uuid-\".concat(newId));\n  }, []);\n  return uuid;\n}","import * as React from 'react';\nimport { MenuContext } from \"../context/MenuContext\";\nexport default function useActive(eventKey, disabled, onMouseEnter, onMouseLeave) {\n  var _React$useContext = React.useContext(MenuContext),\n    activeKey = _React$useContext.activeKey,\n    onActive = _React$useContext.onActive,\n    onInactive = _React$useContext.onInactive;\n  var ret = {\n    active: activeKey === eventKey\n  };\n\n  // Skip when disabled\n  if (!disabled) {\n    ret.onMouseEnter = function (domEvent) {\n      onMouseEnter === null || onMouseEnter === void 0 || onMouseEnter({\n        key: eventKey,\n        domEvent: domEvent\n      });\n      onActive(eventKey);\n    };\n    ret.onMouseLeave = function (domEvent) {\n      onMouseLeave === null || onMouseLeave === void 0 || onMouseLeave({\n        key: eventKey,\n        domEvent: domEvent\n      });\n      onInactive(eventKey);\n    };\n  }\n  return ret;\n}","import * as React from 'react';\nimport { MenuContext } from \"../context/MenuContext\";\nexport default function useDirectionStyle(level) {\n  var _React$useContext = React.useContext(MenuContext),\n    mode = _React$useContext.mode,\n    rtl = _React$useContext.rtl,\n    inlineIndent = _React$useContext.inlineIndent;\n  if (mode !== 'inline') {\n    return null;\n  }\n  var len = level;\n  return rtl ? {\n    paddingRight: len * inlineIndent\n  } : {\n    paddingLeft: len * inlineIndent\n  };\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nexport default function Icon(_ref) {\n  var icon = _ref.icon,\n    props = _ref.props,\n    children = _ref.children;\n  var iconNode;\n  if (icon === null || icon === false) {\n    return null;\n  }\n  if (typeof icon === 'function') {\n    iconNode = /*#__PURE__*/React.createElement(icon, _objectSpread({}, props));\n  } else if (typeof icon !== \"boolean\") {\n    // Compatible for origin definition\n    iconNode = icon;\n  }\n  return iconNode || children || null;\n}","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"item\"];\nimport warning from \"rc-util/es/warning\";\n\n/**\n * `onClick` event return `info.item` which point to react node directly.\n * We should warning this since it will not work on FC.\n */\nexport function warnItemProp(_ref) {\n  var item = _ref.item,\n    restInfo = _objectWithoutProperties(_ref, _excluded);\n  Object.defineProperty(restInfo, 'item', {\n    get: function get() {\n      warning(false, '`info.item` is deprecated since we will move to function component that not provides React Node instance in future.');\n      return item;\n    }\n  });\n  return restInfo;\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nvar _excluded = [\"title\", \"attribute\", \"elementRef\"],\n  _excluded2 = [\"style\", \"className\", \"eventKey\", \"warnKey\", \"disabled\", \"itemIcon\", \"children\", \"role\", \"onMouseEnter\", \"onMouseLeave\", \"onClick\", \"onKeyDown\", \"onFocus\"],\n  _excluded3 = [\"active\"];\nimport classNames from 'classnames';\nimport Overflow from 'rc-overflow';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport omit from \"rc-util/es/omit\";\nimport { useComposeRef } from \"rc-util/es/ref\";\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport { useMenuId } from \"./context/IdContext\";\nimport { MenuContext } from \"./context/MenuContext\";\nimport { useFullPath, useMeasure } from \"./context/PathContext\";\nimport PrivateContext from \"./context/PrivateContext\";\nimport useActive from \"./hooks/useActive\";\nimport useDirectionStyle from \"./hooks/useDirectionStyle\";\nimport Icon from \"./Icon\";\nimport { warnItemProp } from \"./utils/warnUtil\";\n// Since Menu event provide the `info.item` which point to the MenuItem node instance.\n// We have to use class component here.\n// This should be removed from doc & api in future.\nvar LegacyMenuItem = /*#__PURE__*/function (_React$Component) {\n  _inherits(LegacyMenuItem, _React$Component);\n  var _super = _createSuper(LegacyMenuItem);\n  function LegacyMenuItem() {\n    _classCallCheck(this, LegacyMenuItem);\n    return _super.apply(this, arguments);\n  }\n  _createClass(LegacyMenuItem, [{\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n        title = _this$props.title,\n        attribute = _this$props.attribute,\n        elementRef = _this$props.elementRef,\n        restProps = _objectWithoutProperties(_this$props, _excluded);\n\n      // Here the props are eventually passed to the DOM element.\n      // React does not recognize non-standard attributes.\n      // Therefore, remove the props that is not used here.\n      // ref: https://github.com/ant-design/ant-design/issues/41395\n      var passedProps = omit(restProps, ['eventKey', 'popupClassName', 'popupOffset', 'onTitleClick']);\n      warning(!attribute, '`attribute` of Menu.Item is deprecated. Please pass attribute directly.');\n      return /*#__PURE__*/React.createElement(Overflow.Item, _extends({}, attribute, {\n        title: typeof title === 'string' ? title : undefined\n      }, passedProps, {\n        ref: elementRef\n      }));\n    }\n  }]);\n  return LegacyMenuItem;\n}(React.Component);\n/**\n * Real Menu Item component\n */\nvar InternalMenuItem = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var style = props.style,\n    className = props.className,\n    eventKey = props.eventKey,\n    warnKey = props.warnKey,\n    disabled = props.disabled,\n    itemIcon = props.itemIcon,\n    children = props.children,\n    role = props.role,\n    onMouseEnter = props.onMouseEnter,\n    onMouseLeave = props.onMouseLeave,\n    onClick = props.onClick,\n    onKeyDown = props.onKeyDown,\n    onFocus = props.onFocus,\n    restProps = _objectWithoutProperties(props, _excluded2);\n  var domDataId = useMenuId(eventKey);\n  var _React$useContext = React.useContext(MenuContext),\n    prefixCls = _React$useContext.prefixCls,\n    onItemClick = _React$useContext.onItemClick,\n    contextDisabled = _React$useContext.disabled,\n    overflowDisabled = _React$useContext.overflowDisabled,\n    contextItemIcon = _React$useContext.itemIcon,\n    selectedKeys = _React$useContext.selectedKeys,\n    onActive = _React$useContext.onActive;\n  var _React$useContext2 = React.useContext(PrivateContext),\n    _internalRenderMenuItem = _React$useContext2._internalRenderMenuItem;\n  var itemCls = \"\".concat(prefixCls, \"-item\");\n  var legacyMenuItemRef = React.useRef();\n  var elementRef = React.useRef();\n  var mergedDisabled = contextDisabled || disabled;\n  var mergedEleRef = useComposeRef(ref, elementRef);\n  var connectedKeys = useFullPath(eventKey);\n\n  // ================================ Warn ================================\n  if (process.env.NODE_ENV !== 'production' && warnKey) {\n    warning(false, 'MenuItem should not leave undefined `key`.');\n  }\n\n  // ============================= Info =============================\n  var getEventInfo = function getEventInfo(e) {\n    return {\n      key: eventKey,\n      // Note: For legacy code is reversed which not like other antd component\n      keyPath: _toConsumableArray(connectedKeys).reverse(),\n      item: legacyMenuItemRef.current,\n      domEvent: e\n    };\n  };\n\n  // ============================= Icon =============================\n  var mergedItemIcon = itemIcon || contextItemIcon;\n\n  // ============================ Active ============================\n  var _useActive = useActive(eventKey, mergedDisabled, onMouseEnter, onMouseLeave),\n    active = _useActive.active,\n    activeProps = _objectWithoutProperties(_useActive, _excluded3);\n\n  // ============================ Select ============================\n  var selected = selectedKeys.includes(eventKey);\n\n  // ======================== DirectionStyle ========================\n  var directionStyle = useDirectionStyle(connectedKeys.length);\n\n  // ============================ Events ============================\n  var onInternalClick = function onInternalClick(e) {\n    if (mergedDisabled) {\n      return;\n    }\n    var info = getEventInfo(e);\n    onClick === null || onClick === void 0 || onClick(warnItemProp(info));\n    onItemClick(info);\n  };\n  var onInternalKeyDown = function onInternalKeyDown(e) {\n    onKeyDown === null || onKeyDown === void 0 || onKeyDown(e);\n    if (e.which === KeyCode.ENTER) {\n      var info = getEventInfo(e);\n\n      // Legacy. Key will also trigger click event\n      onClick === null || onClick === void 0 || onClick(warnItemProp(info));\n      onItemClick(info);\n    }\n  };\n\n  /**\n   * Used for accessibility. Helper will focus element without key board.\n   * We should manually trigger an active\n   */\n  var onInternalFocus = function onInternalFocus(e) {\n    onActive(eventKey);\n    onFocus === null || onFocus === void 0 || onFocus(e);\n  };\n\n  // ============================ Render ============================\n  var optionRoleProps = {};\n  if (props.role === 'option') {\n    optionRoleProps['aria-selected'] = selected;\n  }\n  var renderNode = /*#__PURE__*/React.createElement(LegacyMenuItem, _extends({\n    ref: legacyMenuItemRef,\n    elementRef: mergedEleRef,\n    role: role === null ? 'none' : role || 'menuitem',\n    tabIndex: disabled ? null : -1,\n    \"data-menu-id\": overflowDisabled && domDataId ? null : domDataId\n  }, omit(restProps, ['extra']), activeProps, optionRoleProps, {\n    component: \"li\",\n    \"aria-disabled\": disabled,\n    style: _objectSpread(_objectSpread({}, directionStyle), style),\n    className: classNames(itemCls, _defineProperty(_defineProperty(_defineProperty({}, \"\".concat(itemCls, \"-active\"), active), \"\".concat(itemCls, \"-selected\"), selected), \"\".concat(itemCls, \"-disabled\"), mergedDisabled), className),\n    onClick: onInternalClick,\n    onKeyDown: onInternalKeyDown,\n    onFocus: onInternalFocus\n  }), children, /*#__PURE__*/React.createElement(Icon, {\n    props: _objectSpread(_objectSpread({}, props), {}, {\n      isSelected: selected\n    }),\n    icon: mergedItemIcon\n  }));\n  if (_internalRenderMenuItem) {\n    renderNode = _internalRenderMenuItem(renderNode, props, {\n      selected: selected\n    });\n  }\n  return renderNode;\n});\nfunction MenuItem(props, ref) {\n  var eventKey = props.eventKey;\n\n  // ==================== Record KeyPath ====================\n  var measure = useMeasure();\n  var connectedKeyPath = useFullPath(eventKey);\n\n  // eslint-disable-next-line consistent-return\n  React.useEffect(function () {\n    if (measure) {\n      measure.registerPath(eventKey, connectedKeyPath);\n      return function () {\n        measure.unregisterPath(eventKey, connectedKeyPath);\n      };\n    }\n  }, [connectedKeyPath]);\n  if (measure) {\n    return null;\n  }\n\n  // ======================== Render ========================\n  return /*#__PURE__*/React.createElement(InternalMenuItem, _extends({}, props, {\n    ref: ref\n  }));\n}\nexport default /*#__PURE__*/React.forwardRef(MenuItem);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"className\", \"children\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { MenuContext } from \"../context/MenuContext\";\nvar InternalSubMenuList = function InternalSubMenuList(_ref, ref) {\n  var className = _ref.className,\n    children = _ref.children,\n    restProps = _objectWithoutProperties(_ref, _excluded);\n  var _React$useContext = React.useContext(MenuContext),\n    prefixCls = _React$useContext.prefixCls,\n    mode = _React$useContext.mode,\n    rtl = _React$useContext.rtl;\n  return /*#__PURE__*/React.createElement(\"ul\", _extends({\n    className: classNames(prefixCls, rtl && \"\".concat(prefixCls, \"-rtl\"), \"\".concat(prefixCls, \"-sub\"), \"\".concat(prefixCls, \"-\").concat(mode === 'inline' ? 'inline' : 'vertical'), className),\n    role: \"menu\"\n  }, restProps, {\n    \"data-menu-list\": true,\n    ref: ref\n  }), children);\n};\nvar SubMenuList = /*#__PURE__*/React.forwardRef(InternalSubMenuList);\nSubMenuList.displayName = 'SubMenuList';\nexport default SubMenuList;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport toArray from \"rc-util/es/Children/toArray\";\nimport * as React from 'react';\nexport function parseChildren(children, keyPath) {\n  return toArray(children).map(function (child, index) {\n    if ( /*#__PURE__*/React.isValidElement(child)) {\n      var _eventKey, _child$props;\n      var key = child.key;\n      var eventKey = (_eventKey = (_child$props = child.props) === null || _child$props === void 0 ? void 0 : _child$props.eventKey) !== null && _eventKey !== void 0 ? _eventKey : key;\n      var emptyKey = eventKey === null || eventKey === undefined;\n      if (emptyKey) {\n        eventKey = \"tmp_key-\".concat([].concat(_toConsumableArray(keyPath), [index]).join('-'));\n      }\n      var cloneProps = {\n        key: eventKey,\n        eventKey: eventKey\n      };\n      if (process.env.NODE_ENV !== 'production' && emptyKey) {\n        cloneProps.warnKey = true;\n      }\n      return /*#__PURE__*/React.cloneElement(child, cloneProps);\n    }\n    return child;\n  });\n}","var autoAdjustOverflow = {\n  adjustX: 1,\n  adjustY: 1\n};\nexport var placements = {\n  topLeft: {\n    points: ['bl', 'tl'],\n    overflow: autoAdjustOverflow\n  },\n  topRight: {\n    points: ['br', 'tr'],\n    overflow: autoAdjustOverflow\n  },\n  bottomLeft: {\n    points: ['tl', 'bl'],\n    overflow: autoAdjustOverflow\n  },\n  bottomRight: {\n    points: ['tr', 'br'],\n    overflow: autoAdjustOverflow\n  },\n  leftTop: {\n    points: ['tr', 'tl'],\n    overflow: autoAdjustOverflow\n  },\n  leftBottom: {\n    points: ['br', 'bl'],\n    overflow: autoAdjustOverflow\n  },\n  rightTop: {\n    points: ['tl', 'tr'],\n    overflow: autoAdjustOverflow\n  },\n  rightBottom: {\n    points: ['bl', 'br'],\n    overflow: autoAdjustOverflow\n  }\n};\nexport var placementsRtl = {\n  topLeft: {\n    points: ['bl', 'tl'],\n    overflow: autoAdjustOverflow\n  },\n  topRight: {\n    points: ['br', 'tr'],\n    overflow: autoAdjustOverflow\n  },\n  bottomLeft: {\n    points: ['tl', 'bl'],\n    overflow: autoAdjustOverflow\n  },\n  bottomRight: {\n    points: ['tr', 'br'],\n    overflow: autoAdjustOverflow\n  },\n  rightTop: {\n    points: ['tr', 'tl'],\n    overflow: autoAdjustOverflow\n  },\n  rightBottom: {\n    points: ['br', 'bl'],\n    overflow: autoAdjustOverflow\n  },\n  leftTop: {\n    points: ['tl', 'tr'],\n    overflow: autoAdjustOverflow\n  },\n  leftBottom: {\n    points: ['bl', 'br'],\n    overflow: autoAdjustOverflow\n  }\n};\nexport default placements;","export function getMotion(mode, motion, defaultMotions) {\n  if (motion) {\n    return motion;\n  }\n  if (defaultMotions) {\n    return defaultMotions[mode] || defaultMotions.other;\n  }\n  return undefined;\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport Trigger from '@rc-component/trigger';\nimport classNames from 'classnames';\nimport raf from \"rc-util/es/raf\";\nimport { MenuContext } from \"../context/MenuContext\";\nimport { placements, placementsRtl } from \"../placements\";\nimport { getMotion } from \"../utils/motionUtil\";\nvar popupPlacementMap = {\n  horizontal: 'bottomLeft',\n  vertical: 'rightTop',\n  'vertical-left': 'rightTop',\n  'vertical-right': 'leftTop'\n};\nexport default function PopupTrigger(_ref) {\n  var prefixCls = _ref.prefixCls,\n    visible = _ref.visible,\n    children = _ref.children,\n    popup = _ref.popup,\n    popupStyle = _ref.popupStyle,\n    popupClassName = _ref.popupClassName,\n    popupOffset = _ref.popupOffset,\n    disabled = _ref.disabled,\n    mode = _ref.mode,\n    onVisibleChange = _ref.onVisibleChange;\n  var _React$useContext = React.useContext(MenuContext),\n    getPopupContainer = _React$useContext.getPopupContainer,\n    rtl = _React$useContext.rtl,\n    subMenuOpenDelay = _React$useContext.subMenuOpenDelay,\n    subMenuCloseDelay = _React$useContext.subMenuCloseDelay,\n    builtinPlacements = _React$useContext.builtinPlacements,\n    triggerSubMenuAction = _React$useContext.triggerSubMenuAction,\n    forceSubMenuRender = _React$useContext.forceSubMenuRender,\n    rootClassName = _React$useContext.rootClassName,\n    motion = _React$useContext.motion,\n    defaultMotions = _React$useContext.defaultMotions;\n  var _React$useState = React.useState(false),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    innerVisible = _React$useState2[0],\n    setInnerVisible = _React$useState2[1];\n  var placement = rtl ? _objectSpread(_objectSpread({}, placementsRtl), builtinPlacements) : _objectSpread(_objectSpread({}, placements), builtinPlacements);\n  var popupPlacement = popupPlacementMap[mode];\n  var targetMotion = getMotion(mode, motion, defaultMotions);\n  var targetMotionRef = React.useRef(targetMotion);\n  if (mode !== 'inline') {\n    /**\n     * PopupTrigger is only used for vertical and horizontal types.\n     * When collapsed is unfolded, the inline animation will destroy the vertical animation.\n     */\n    targetMotionRef.current = targetMotion;\n  }\n  var mergedMotion = _objectSpread(_objectSpread({}, targetMotionRef.current), {}, {\n    leavedClassName: \"\".concat(prefixCls, \"-hidden\"),\n    removeOnLeave: false,\n    motionAppear: true\n  });\n\n  // Delay to change visible\n  var visibleRef = React.useRef();\n  React.useEffect(function () {\n    visibleRef.current = raf(function () {\n      setInnerVisible(visible);\n    });\n    return function () {\n      raf.cancel(visibleRef.current);\n    };\n  }, [visible]);\n  return /*#__PURE__*/React.createElement(Trigger, {\n    prefixCls: prefixCls,\n    popupClassName: classNames(\"\".concat(prefixCls, \"-popup\"), _defineProperty({}, \"\".concat(prefixCls, \"-rtl\"), rtl), popupClassName, rootClassName),\n    stretch: mode === 'horizontal' ? 'minWidth' : null,\n    getPopupContainer: getPopupContainer,\n    builtinPlacements: placement,\n    popupPlacement: popupPlacement,\n    popupVisible: innerVisible,\n    popup: popup,\n    popupStyle: popupStyle,\n    popupAlign: popupOffset && {\n      offset: popupOffset\n    },\n    action: disabled ? [] : [triggerSubMenuAction],\n    mouseEnterDelay: subMenuOpenDelay,\n    mouseLeaveDelay: subMenuCloseDelay,\n    onPopupVisibleChange: onVisibleChange,\n    forceRender: forceSubMenuRender,\n    popupMotion: mergedMotion,\n    fresh: true\n  }, children);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport CSSMotion from 'rc-motion';\nimport { getMotion } from \"../utils/motionUtil\";\nimport MenuContextProvider, { MenuContext } from \"../context/MenuContext\";\nimport SubMenuList from \"./SubMenuList\";\nexport default function InlineSubMenuList(_ref) {\n  var id = _ref.id,\n    open = _ref.open,\n    keyPath = _ref.keyPath,\n    children = _ref.children;\n  var fixedMode = 'inline';\n  var _React$useContext = React.useContext(MenuContext),\n    prefixCls = _React$useContext.prefixCls,\n    forceSubMenuRender = _React$useContext.forceSubMenuRender,\n    motion = _React$useContext.motion,\n    defaultMotions = _React$useContext.defaultMotions,\n    mode = _React$useContext.mode;\n\n  // Always use latest mode check\n  var sameModeRef = React.useRef(false);\n  sameModeRef.current = mode === fixedMode;\n\n  // We record `destroy` mark here since when mode change from `inline` to others.\n  // The inline list should remove when motion end.\n  var _React$useState = React.useState(!sameModeRef.current),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    destroy = _React$useState2[0],\n    setDestroy = _React$useState2[1];\n  var mergedOpen = sameModeRef.current ? open : false;\n\n  // ================================= Effect =================================\n  // Reset destroy state when mode change back\n  React.useEffect(function () {\n    if (sameModeRef.current) {\n      setDestroy(false);\n    }\n  }, [mode]);\n\n  // ================================= Render =================================\n  var mergedMotion = _objectSpread({}, getMotion(fixedMode, motion, defaultMotions));\n\n  // No need appear since nest inlineCollapse changed\n  if (keyPath.length > 1) {\n    mergedMotion.motionAppear = false;\n  }\n\n  // Hide inline list when mode changed and motion end\n  var originOnVisibleChanged = mergedMotion.onVisibleChanged;\n  mergedMotion.onVisibleChanged = function (newVisible) {\n    if (!sameModeRef.current && !newVisible) {\n      setDestroy(true);\n    }\n    return originOnVisibleChanged === null || originOnVisibleChanged === void 0 ? void 0 : originOnVisibleChanged(newVisible);\n  };\n  if (destroy) {\n    return null;\n  }\n  return /*#__PURE__*/React.createElement(MenuContextProvider, {\n    mode: fixedMode,\n    locked: !sameModeRef.current\n  }, /*#__PURE__*/React.createElement(CSSMotion, _extends({\n    visible: mergedOpen\n  }, mergedMotion, {\n    forceRender: forceSubMenuRender,\n    removeOnLeave: false,\n    leavedClassName: \"\".concat(prefixCls, \"-hidden\")\n  }), function (_ref2) {\n    var motionClassName = _ref2.className,\n      motionStyle = _ref2.style;\n    return /*#__PURE__*/React.createElement(SubMenuList, {\n      id: id,\n      className: motionClassName,\n      style: motionStyle\n    }, children);\n  }));\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"style\", \"className\", \"title\", \"eventKey\", \"warnKey\", \"disabled\", \"internalPopupClose\", \"children\", \"itemIcon\", \"expandIcon\", \"popupClassName\", \"popupOffset\", \"popupStyle\", \"onClick\", \"onMouseEnter\", \"onMouseLeave\", \"onTitleClick\", \"onTitleMouseEnter\", \"onTitleMouseLeave\"],\n  _excluded2 = [\"active\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport Overflow from 'rc-overflow';\nimport warning from \"rc-util/es/warning\";\nimport SubMenuList from \"./SubMenuList\";\nimport { parseChildren } from \"../utils/commonUtil\";\nimport MenuContextProvider, { MenuContext } from \"../context/MenuContext\";\nimport useMemoCallback from \"../hooks/useMemoCallback\";\nimport PopupTrigger from \"./PopupTrigger\";\nimport Icon from \"../Icon\";\nimport useActive from \"../hooks/useActive\";\nimport { warnItemProp } from \"../utils/warnUtil\";\nimport useDirectionStyle from \"../hooks/useDirectionStyle\";\nimport InlineSubMenuList from \"./InlineSubMenuList\";\nimport { PathTrackerContext, PathUserContext, useFullPath, useMeasure } from \"../context/PathContext\";\nimport { useMenuId } from \"../context/IdContext\";\nimport PrivateContext from \"../context/PrivateContext\";\nvar InternalSubMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var style = props.style,\n    className = props.className,\n    title = props.title,\n    eventKey = props.eventKey,\n    warnKey = props.warnKey,\n    disabled = props.disabled,\n    internalPopupClose = props.internalPopupClose,\n    children = props.children,\n    itemIcon = props.itemIcon,\n    expandIcon = props.expandIcon,\n    popupClassName = props.popupClassName,\n    popupOffset = props.popupOffset,\n    popupStyle = props.popupStyle,\n    onClick = props.onClick,\n    onMouseEnter = props.onMouseEnter,\n    onMouseLeave = props.onMouseLeave,\n    onTitleClick = props.onTitleClick,\n    onTitleMouseEnter = props.onTitleMouseEnter,\n    onTitleMouseLeave = props.onTitleMouseLeave,\n    restProps = _objectWithoutProperties(props, _excluded);\n  var domDataId = useMenuId(eventKey);\n  var _React$useContext = React.useContext(MenuContext),\n    prefixCls = _React$useContext.prefixCls,\n    mode = _React$useContext.mode,\n    openKeys = _React$useContext.openKeys,\n    contextDisabled = _React$useContext.disabled,\n    overflowDisabled = _React$useContext.overflowDisabled,\n    activeKey = _React$useContext.activeKey,\n    selectedKeys = _React$useContext.selectedKeys,\n    contextItemIcon = _React$useContext.itemIcon,\n    contextExpandIcon = _React$useContext.expandIcon,\n    onItemClick = _React$useContext.onItemClick,\n    onOpenChange = _React$useContext.onOpenChange,\n    onActive = _React$useContext.onActive;\n  var _React$useContext2 = React.useContext(PrivateContext),\n    _internalRenderSubMenuItem = _React$useContext2._internalRenderSubMenuItem;\n  var _React$useContext3 = React.useContext(PathUserContext),\n    isSubPathKey = _React$useContext3.isSubPathKey;\n  var connectedPath = useFullPath();\n  var subMenuPrefixCls = \"\".concat(prefixCls, \"-submenu\");\n  var mergedDisabled = contextDisabled || disabled;\n  var elementRef = React.useRef();\n  var popupRef = React.useRef();\n\n  // ================================ Warn ================================\n  if (process.env.NODE_ENV !== 'production' && warnKey) {\n    warning(false, 'SubMenu should not leave undefined `key`.');\n  }\n\n  // ================================ Icon ================================\n  var mergedItemIcon = itemIcon !== null && itemIcon !== void 0 ? itemIcon : contextItemIcon;\n  var mergedExpandIcon = expandIcon !== null && expandIcon !== void 0 ? expandIcon : contextExpandIcon;\n\n  // ================================ Open ================================\n  var originOpen = openKeys.includes(eventKey);\n  var open = !overflowDisabled && originOpen;\n\n  // =============================== Select ===============================\n  var childrenSelected = isSubPathKey(selectedKeys, eventKey);\n\n  // =============================== Active ===============================\n  var _useActive = useActive(eventKey, mergedDisabled, onTitleMouseEnter, onTitleMouseLeave),\n    active = _useActive.active,\n    activeProps = _objectWithoutProperties(_useActive, _excluded2);\n\n  // Fallback of active check to avoid hover on menu title or disabled item\n  var _React$useState = React.useState(false),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    childrenActive = _React$useState2[0],\n    setChildrenActive = _React$useState2[1];\n  var triggerChildrenActive = function triggerChildrenActive(newActive) {\n    if (!mergedDisabled) {\n      setChildrenActive(newActive);\n    }\n  };\n  var onInternalMouseEnter = function onInternalMouseEnter(domEvent) {\n    triggerChildrenActive(true);\n    onMouseEnter === null || onMouseEnter === void 0 || onMouseEnter({\n      key: eventKey,\n      domEvent: domEvent\n    });\n  };\n  var onInternalMouseLeave = function onInternalMouseLeave(domEvent) {\n    triggerChildrenActive(false);\n    onMouseLeave === null || onMouseLeave === void 0 || onMouseLeave({\n      key: eventKey,\n      domEvent: domEvent\n    });\n  };\n  var mergedActive = React.useMemo(function () {\n    if (active) {\n      return active;\n    }\n    if (mode !== 'inline') {\n      return childrenActive || isSubPathKey([activeKey], eventKey);\n    }\n    return false;\n  }, [mode, active, activeKey, childrenActive, eventKey, isSubPathKey]);\n\n  // ========================== DirectionStyle ==========================\n  var directionStyle = useDirectionStyle(connectedPath.length);\n\n  // =============================== Events ===============================\n  // >>>> Title click\n  var onInternalTitleClick = function onInternalTitleClick(e) {\n    // Skip if disabled\n    if (mergedDisabled) {\n      return;\n    }\n    onTitleClick === null || onTitleClick === void 0 || onTitleClick({\n      key: eventKey,\n      domEvent: e\n    });\n\n    // Trigger open by click when mode is `inline`\n    if (mode === 'inline') {\n      onOpenChange(eventKey, !originOpen);\n    }\n  };\n\n  // >>>> Context for children click\n  var onMergedItemClick = useMemoCallback(function (info) {\n    onClick === null || onClick === void 0 || onClick(warnItemProp(info));\n    onItemClick(info);\n  });\n\n  // >>>>> Visible change\n  var onPopupVisibleChange = function onPopupVisibleChange(newVisible) {\n    if (mode !== 'inline') {\n      onOpenChange(eventKey, newVisible);\n    }\n  };\n\n  /**\n   * Used for accessibility. Helper will focus element without key board.\n   * We should manually trigger an active\n   */\n  var onInternalFocus = function onInternalFocus() {\n    onActive(eventKey);\n  };\n\n  // =============================== Render ===============================\n  var popupId = domDataId && \"\".concat(domDataId, \"-popup\");\n  var expandIconNode = React.useMemo(function () {\n    return /*#__PURE__*/React.createElement(Icon, {\n      icon: mode !== 'horizontal' ? mergedExpandIcon : undefined,\n      props: _objectSpread(_objectSpread({}, props), {}, {\n        isOpen: open,\n        // [Legacy] Not sure why need this mark\n        isSubMenu: true\n      })\n    }, /*#__PURE__*/React.createElement(\"i\", {\n      className: \"\".concat(subMenuPrefixCls, \"-arrow\")\n    }));\n  }, [mode, mergedExpandIcon, props, open, subMenuPrefixCls]);\n\n  // >>>>> Title\n  var titleNode = /*#__PURE__*/React.createElement(\"div\", _extends({\n    role: \"menuitem\",\n    style: directionStyle,\n    className: \"\".concat(subMenuPrefixCls, \"-title\"),\n    tabIndex: mergedDisabled ? null : -1,\n    ref: elementRef,\n    title: typeof title === 'string' ? title : null,\n    \"data-menu-id\": overflowDisabled && domDataId ? null : domDataId,\n    \"aria-expanded\": open,\n    \"aria-haspopup\": true,\n    \"aria-controls\": popupId,\n    \"aria-disabled\": mergedDisabled,\n    onClick: onInternalTitleClick,\n    onFocus: onInternalFocus\n  }, activeProps), title, expandIconNode);\n\n  // Cache mode if it change to `inline` which do not have popup motion\n  var triggerModeRef = React.useRef(mode);\n  if (mode !== 'inline' && connectedPath.length > 1) {\n    triggerModeRef.current = 'vertical';\n  } else {\n    triggerModeRef.current = mode;\n  }\n  if (!overflowDisabled) {\n    var triggerMode = triggerModeRef.current;\n\n    // Still wrap with Trigger here since we need avoid react re-mount dom node\n    // Which makes motion failed\n    titleNode = /*#__PURE__*/React.createElement(PopupTrigger, {\n      mode: triggerMode,\n      prefixCls: subMenuPrefixCls,\n      visible: !internalPopupClose && open && mode !== 'inline',\n      popupClassName: popupClassName,\n      popupOffset: popupOffset,\n      popupStyle: popupStyle,\n      popup: /*#__PURE__*/React.createElement(MenuContextProvider\n      // Special handle of horizontal mode\n      , {\n        mode: triggerMode === 'horizontal' ? 'vertical' : triggerMode\n      }, /*#__PURE__*/React.createElement(SubMenuList, {\n        id: popupId,\n        ref: popupRef\n      }, children)),\n      disabled: mergedDisabled,\n      onVisibleChange: onPopupVisibleChange\n    }, titleNode);\n  }\n\n  // >>>>> List node\n  var listNode = /*#__PURE__*/React.createElement(Overflow.Item, _extends({\n    ref: ref,\n    role: \"none\"\n  }, restProps, {\n    component: \"li\",\n    style: style,\n    className: classNames(subMenuPrefixCls, \"\".concat(subMenuPrefixCls, \"-\").concat(mode), className, _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, \"\".concat(subMenuPrefixCls, \"-open\"), open), \"\".concat(subMenuPrefixCls, \"-active\"), mergedActive), \"\".concat(subMenuPrefixCls, \"-selected\"), childrenSelected), \"\".concat(subMenuPrefixCls, \"-disabled\"), mergedDisabled)),\n    onMouseEnter: onInternalMouseEnter,\n    onMouseLeave: onInternalMouseLeave\n  }), titleNode, !overflowDisabled && /*#__PURE__*/React.createElement(InlineSubMenuList, {\n    id: popupId,\n    open: open,\n    keyPath: connectedPath\n  }, children));\n  if (_internalRenderSubMenuItem) {\n    listNode = _internalRenderSubMenuItem(listNode, props, {\n      selected: childrenSelected,\n      active: mergedActive,\n      open: open,\n      disabled: mergedDisabled\n    });\n  }\n\n  // >>>>> Render\n  return /*#__PURE__*/React.createElement(MenuContextProvider, {\n    onItemClick: onMergedItemClick,\n    mode: mode === 'horizontal' ? 'vertical' : mode,\n    itemIcon: mergedItemIcon,\n    expandIcon: mergedExpandIcon\n  }, listNode);\n});\nvar SubMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var eventKey = props.eventKey,\n    children = props.children;\n  var connectedKeyPath = useFullPath(eventKey);\n  var childList = parseChildren(children, connectedKeyPath);\n\n  // ==================== Record KeyPath ====================\n  var measure = useMeasure();\n\n  // eslint-disable-next-line consistent-return\n  React.useEffect(function () {\n    if (measure) {\n      measure.registerPath(eventKey, connectedKeyPath);\n      return function () {\n        measure.unregisterPath(eventKey, connectedKeyPath);\n      };\n    }\n  }, [connectedKeyPath]);\n  var renderNode;\n\n  // ======================== Render ========================\n  if (measure) {\n    renderNode = childList;\n  } else {\n    renderNode = /*#__PURE__*/React.createElement(InternalSubMenu, _extends({\n      ref: ref\n    }, props), childList);\n  }\n  return /*#__PURE__*/React.createElement(PathTrackerContext.Provider, {\n    value: connectedKeyPath\n  }, renderNode);\n});\nif (process.env.NODE_ENV !== 'production') {\n  SubMenu.displayName = 'SubMenu';\n}\nexport default SubMenu;","import * as React from 'react';\nimport classNames from 'classnames';\nimport { MenuContext } from \"./context/MenuContext\";\nimport { useMeasure } from \"./context/PathContext\";\nexport default function Divider(_ref) {\n  var className = _ref.className,\n    style = _ref.style;\n  var _React$useContext = React.useContext(MenuContext),\n    prefixCls = _React$useContext.prefixCls;\n  var measure = useMeasure();\n  if (measure) {\n    return null;\n  }\n  return /*#__PURE__*/React.createElement(\"li\", {\n    role: \"separator\",\n    className: classNames(\"\".concat(prefixCls, \"-item-divider\"), className),\n    style: style\n  });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"className\", \"title\", \"eventKey\", \"children\"];\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { MenuContext } from \"./context/MenuContext\";\nimport { useFullPath, useMeasure } from \"./context/PathContext\";\nimport { parseChildren } from \"./utils/commonUtil\";\nvar InternalMenuItemGroup = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var className = props.className,\n    title = props.title,\n    eventKey = props.eventKey,\n    children = props.children,\n    restProps = _objectWithoutProperties(props, _excluded);\n  var _React$useContext = React.useContext(MenuContext),\n    prefixCls = _React$useContext.prefixCls;\n  var groupPrefixCls = \"\".concat(prefixCls, \"-item-group\");\n  return /*#__PURE__*/React.createElement(\"li\", _extends({\n    ref: ref,\n    role: \"presentation\"\n  }, restProps, {\n    onClick: function onClick(e) {\n      return e.stopPropagation();\n    },\n    className: classNames(groupPrefixCls, className)\n  }), /*#__PURE__*/React.createElement(\"div\", {\n    role: \"presentation\",\n    className: \"\".concat(groupPrefixCls, \"-title\"),\n    title: typeof title === 'string' ? title : undefined\n  }, title), /*#__PURE__*/React.createElement(\"ul\", {\n    role: \"group\",\n    className: \"\".concat(groupPrefixCls, \"-list\")\n  }, children));\n});\nvar MenuItemGroup = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var eventKey = props.eventKey,\n    children = props.children;\n  var connectedKeyPath = useFullPath(eventKey);\n  var childList = parseChildren(children, connectedKeyPath);\n  var measure = useMeasure();\n  if (measure) {\n    return childList;\n  }\n  return /*#__PURE__*/React.createElement(InternalMenuItemGroup, _extends({\n    ref: ref\n  }, omit(props, ['warnKey'])), childList);\n});\nif (process.env.NODE_ENV !== 'production') {\n  MenuItemGroup.displayName = 'MenuItemGroup';\n}\nexport default MenuItemGroup;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar _excluded = [\"label\", \"children\", \"key\", \"type\", \"extra\"];\nimport * as React from 'react';\nimport Divider from \"../Divider\";\nimport MenuItem from \"../MenuItem\";\nimport MenuItemGroup from \"../MenuItemGroup\";\nimport SubMenu from \"../SubMenu\";\nimport { parseChildren } from \"./commonUtil\";\nfunction convertItemsToNodes(list, components, prefixCls) {\n  var MergedMenuItem = components.item,\n    MergedMenuItemGroup = components.group,\n    MergedSubMenu = components.submenu,\n    MergedDivider = components.divider;\n  return (list || []).map(function (opt, index) {\n    if (opt && _typeof(opt) === 'object') {\n      var _ref = opt,\n        label = _ref.label,\n        children = _ref.children,\n        key = _ref.key,\n        type = _ref.type,\n        extra = _ref.extra,\n        restProps = _objectWithoutProperties(_ref, _excluded);\n      var mergedKey = key !== null && key !== void 0 ? key : \"tmp-\".concat(index);\n\n      // MenuItemGroup & SubMenuItem\n      if (children || type === 'group') {\n        if (type === 'group') {\n          // Group\n          return /*#__PURE__*/React.createElement(MergedMenuItemGroup, _extends({\n            key: mergedKey\n          }, restProps, {\n            title: label\n          }), convertItemsToNodes(children, components, prefixCls));\n        }\n\n        // Sub Menu\n        return /*#__PURE__*/React.createElement(MergedSubMenu, _extends({\n          key: mergedKey\n        }, restProps, {\n          title: label\n        }), convertItemsToNodes(children, components, prefixCls));\n      }\n\n      // MenuItem & Divider\n      if (type === 'divider') {\n        return /*#__PURE__*/React.createElement(MergedDivider, _extends({\n          key: mergedKey\n        }, restProps));\n      }\n      return /*#__PURE__*/React.createElement(MergedMenuItem, _extends({\n        key: mergedKey\n      }, restProps, {\n        extra: extra\n      }), label, (!!extra || extra === 0) && /*#__PURE__*/React.createElement(\"span\", {\n        className: \"\".concat(prefixCls, \"-item-extra\")\n      }, extra));\n    }\n    return null;\n  }).filter(function (opt) {\n    return opt;\n  });\n}\nexport function parseItems(children, items, keyPath, components, prefixCls) {\n  var childNodes = children;\n  var mergedComponents = _objectSpread({\n    divider: Divider,\n    item: MenuItem,\n    group: MenuItemGroup,\n    submenu: SubMenu\n  }, components);\n  if (items) {\n    childNodes = convertItemsToNodes(items, mergedComponents, prefixCls);\n  }\n  return parseChildren(childNodes, keyPath);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"rootClassName\", \"style\", \"className\", \"tabIndex\", \"items\", \"children\", \"direction\", \"id\", \"mode\", \"inlineCollapsed\", \"disabled\", \"disabledOverflow\", \"subMenuOpenDelay\", \"subMenuCloseDelay\", \"forceSubMenuRender\", \"defaultOpenKeys\", \"openKeys\", \"activeKey\", \"defaultActiveFirst\", \"selectable\", \"multiple\", \"defaultSelectedKeys\", \"selectedKeys\", \"onSelect\", \"onDeselect\", \"inlineIndent\", \"motion\", \"defaultMotions\", \"triggerSubMenuAction\", \"builtinPlacements\", \"itemIcon\", \"expandIcon\", \"overflowedIndicator\", \"overflowedIndicatorPopupClassName\", \"getPopupContainer\", \"onClick\", \"onOpenChange\", \"onKeyDown\", \"openAnimation\", \"openTransitionName\", \"_internalRenderMenuItem\", \"_internalRenderSubMenuItem\", \"_internalComponents\"];\nimport classNames from 'classnames';\nimport Overflow from 'rc-overflow';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport isEqual from \"rc-util/es/isEqual\";\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport { useImperativeHandle } from 'react';\nimport { flushSync } from 'react-dom';\nimport { IdContext } from \"./context/IdContext\";\nimport MenuContextProvider from \"./context/MenuContext\";\nimport { PathRegisterContext, PathUserContext } from \"./context/PathContext\";\nimport PrivateContext from \"./context/PrivateContext\";\nimport { getFocusableElements, refreshElements, useAccessibility } from \"./hooks/useAccessibility\";\nimport useKeyRecords, { OVERFLOW_KEY } from \"./hooks/useKeyRecords\";\nimport useMemoCallback from \"./hooks/useMemoCallback\";\nimport useUUID from \"./hooks/useUUID\";\nimport MenuItem from \"./MenuItem\";\nimport SubMenu from \"./SubMenu\";\nimport { parseItems } from \"./utils/nodeUtil\";\nimport { warnItemProp } from \"./utils/warnUtil\";\n\n/**\n * Menu modify after refactor:\n * ## Add\n * - disabled\n *\n * ## Remove\n * - openTransitionName\n * - openAnimation\n * - onDestroy\n * - siderCollapsed: Seems antd do not use this prop (Need test in antd)\n * - collapsedWidth: Seems this logic should be handle by antd Layout.Sider\n */\n\n// optimize for render\nvar EMPTY_LIST = [];\nvar Menu = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var _childList$;\n  var _ref = props,\n    _ref$prefixCls = _ref.prefixCls,\n    prefixCls = _ref$prefixCls === void 0 ? 'rc-menu' : _ref$prefixCls,\n    rootClassName = _ref.rootClassName,\n    style = _ref.style,\n    className = _ref.className,\n    _ref$tabIndex = _ref.tabIndex,\n    tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex,\n    items = _ref.items,\n    children = _ref.children,\n    direction = _ref.direction,\n    id = _ref.id,\n    _ref$mode = _ref.mode,\n    mode = _ref$mode === void 0 ? 'vertical' : _ref$mode,\n    inlineCollapsed = _ref.inlineCollapsed,\n    disabled = _ref.disabled,\n    disabledOverflow = _ref.disabledOverflow,\n    _ref$subMenuOpenDelay = _ref.subMenuOpenDelay,\n    subMenuOpenDelay = _ref$subMenuOpenDelay === void 0 ? 0.1 : _ref$subMenuOpenDelay,\n    _ref$subMenuCloseDela = _ref.subMenuCloseDelay,\n    subMenuCloseDelay = _ref$subMenuCloseDela === void 0 ? 0.1 : _ref$subMenuCloseDela,\n    forceSubMenuRender = _ref.forceSubMenuRender,\n    defaultOpenKeys = _ref.defaultOpenKeys,\n    openKeys = _ref.openKeys,\n    activeKey = _ref.activeKey,\n    defaultActiveFirst = _ref.defaultActiveFirst,\n    _ref$selectable = _ref.selectable,\n    selectable = _ref$selectable === void 0 ? true : _ref$selectable,\n    _ref$multiple = _ref.multiple,\n    multiple = _ref$multiple === void 0 ? false : _ref$multiple,\n    defaultSelectedKeys = _ref.defaultSelectedKeys,\n    selectedKeys = _ref.selectedKeys,\n    onSelect = _ref.onSelect,\n    onDeselect = _ref.onDeselect,\n    _ref$inlineIndent = _ref.inlineIndent,\n    inlineIndent = _ref$inlineIndent === void 0 ? 24 : _ref$inlineIndent,\n    motion = _ref.motion,\n    defaultMotions = _ref.defaultMotions,\n    _ref$triggerSubMenuAc = _ref.triggerSubMenuAction,\n    triggerSubMenuAction = _ref$triggerSubMenuAc === void 0 ? 'hover' : _ref$triggerSubMenuAc,\n    builtinPlacements = _ref.builtinPlacements,\n    itemIcon = _ref.itemIcon,\n    expandIcon = _ref.expandIcon,\n    _ref$overflowedIndica = _ref.overflowedIndicator,\n    overflowedIndicator = _ref$overflowedIndica === void 0 ? '...' : _ref$overflowedIndica,\n    overflowedIndicatorPopupClassName = _ref.overflowedIndicatorPopupClassName,\n    getPopupContainer = _ref.getPopupContainer,\n    onClick = _ref.onClick,\n    onOpenChange = _ref.onOpenChange,\n    onKeyDown = _ref.onKeyDown,\n    openAnimation = _ref.openAnimation,\n    openTransitionName = _ref.openTransitionName,\n    _internalRenderMenuItem = _ref._internalRenderMenuItem,\n    _internalRenderSubMenuItem = _ref._internalRenderSubMenuItem,\n    _internalComponents = _ref._internalComponents,\n    restProps = _objectWithoutProperties(_ref, _excluded);\n  var _React$useMemo = React.useMemo(function () {\n      return [parseItems(children, items, EMPTY_LIST, _internalComponents, prefixCls), parseItems(children, items, EMPTY_LIST, {}, prefixCls)];\n    }, [children, items, _internalComponents]),\n    _React$useMemo2 = _slicedToArray(_React$useMemo, 2),\n    childList = _React$useMemo2[0],\n    measureChildList = _React$useMemo2[1];\n  var _React$useState = React.useState(false),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    mounted = _React$useState2[0],\n    setMounted = _React$useState2[1];\n  var containerRef = React.useRef();\n  var uuid = useUUID(id);\n  var isRtl = direction === 'rtl';\n\n  // ========================= Warn =========================\n  if (process.env.NODE_ENV !== 'production') {\n    warning(!openAnimation && !openTransitionName, '`openAnimation` and `openTransitionName` is removed. Please use `motion` or `defaultMotion` instead.');\n  }\n\n  // ========================= Open =========================\n  var _useMergedState = useMergedState(defaultOpenKeys, {\n      value: openKeys,\n      postState: function postState(keys) {\n        return keys || EMPTY_LIST;\n      }\n    }),\n    _useMergedState2 = _slicedToArray(_useMergedState, 2),\n    mergedOpenKeys = _useMergedState2[0],\n    setMergedOpenKeys = _useMergedState2[1];\n\n  // React 18 will merge mouse event which means we open key will not sync\n  // ref: https://github.com/ant-design/ant-design/issues/38818\n  var triggerOpenKeys = function triggerOpenKeys(keys) {\n    var forceFlush = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n    function doUpdate() {\n      setMergedOpenKeys(keys);\n      onOpenChange === null || onOpenChange === void 0 || onOpenChange(keys);\n    }\n    if (forceFlush) {\n      flushSync(doUpdate);\n    } else {\n      doUpdate();\n    }\n  };\n\n  // >>>>> Cache & Reset open keys when inlineCollapsed changed\n  var _React$useState3 = React.useState(mergedOpenKeys),\n    _React$useState4 = _slicedToArray(_React$useState3, 2),\n    inlineCacheOpenKeys = _React$useState4[0],\n    setInlineCacheOpenKeys = _React$useState4[1];\n  var mountRef = React.useRef(false);\n\n  // ========================= Mode =========================\n  var _React$useMemo3 = React.useMemo(function () {\n      if ((mode === 'inline' || mode === 'vertical') && inlineCollapsed) {\n        return ['vertical', inlineCollapsed];\n      }\n      return [mode, false];\n    }, [mode, inlineCollapsed]),\n    _React$useMemo4 = _slicedToArray(_React$useMemo3, 2),\n    mergedMode = _React$useMemo4[0],\n    mergedInlineCollapsed = _React$useMemo4[1];\n  var isInlineMode = mergedMode === 'inline';\n  var _React$useState5 = React.useState(mergedMode),\n    _React$useState6 = _slicedToArray(_React$useState5, 2),\n    internalMode = _React$useState6[0],\n    setInternalMode = _React$useState6[1];\n  var _React$useState7 = React.useState(mergedInlineCollapsed),\n    _React$useState8 = _slicedToArray(_React$useState7, 2),\n    internalInlineCollapsed = _React$useState8[0],\n    setInternalInlineCollapsed = _React$useState8[1];\n  React.useEffect(function () {\n    setInternalMode(mergedMode);\n    setInternalInlineCollapsed(mergedInlineCollapsed);\n    if (!mountRef.current) {\n      return;\n    }\n    // Synchronously update MergedOpenKeys\n    if (isInlineMode) {\n      setMergedOpenKeys(inlineCacheOpenKeys);\n    } else {\n      // Trigger open event in case its in control\n      triggerOpenKeys(EMPTY_LIST);\n    }\n  }, [mergedMode, mergedInlineCollapsed]);\n\n  // ====================== Responsive ======================\n  var _React$useState9 = React.useState(0),\n    _React$useState10 = _slicedToArray(_React$useState9, 2),\n    lastVisibleIndex = _React$useState10[0],\n    setLastVisibleIndex = _React$useState10[1];\n  var allVisible = lastVisibleIndex >= childList.length - 1 || internalMode !== 'horizontal' || disabledOverflow;\n\n  // Cache\n  React.useEffect(function () {\n    if (isInlineMode) {\n      setInlineCacheOpenKeys(mergedOpenKeys);\n    }\n  }, [mergedOpenKeys]);\n  React.useEffect(function () {\n    mountRef.current = true;\n    return function () {\n      mountRef.current = false;\n    };\n  }, []);\n\n  // ========================= Path =========================\n  var _useKeyRecords = useKeyRecords(),\n    registerPath = _useKeyRecords.registerPath,\n    unregisterPath = _useKeyRecords.unregisterPath,\n    refreshOverflowKeys = _useKeyRecords.refreshOverflowKeys,\n    isSubPathKey = _useKeyRecords.isSubPathKey,\n    getKeyPath = _useKeyRecords.getKeyPath,\n    getKeys = _useKeyRecords.getKeys,\n    getSubPathKeys = _useKeyRecords.getSubPathKeys;\n  var registerPathContext = React.useMemo(function () {\n    return {\n      registerPath: registerPath,\n      unregisterPath: unregisterPath\n    };\n  }, [registerPath, unregisterPath]);\n  var pathUserContext = React.useMemo(function () {\n    return {\n      isSubPathKey: isSubPathKey\n    };\n  }, [isSubPathKey]);\n  React.useEffect(function () {\n    refreshOverflowKeys(allVisible ? EMPTY_LIST : childList.slice(lastVisibleIndex + 1).map(function (child) {\n      return child.key;\n    }));\n  }, [lastVisibleIndex, allVisible]);\n\n  // ======================== Active ========================\n  var _useMergedState3 = useMergedState(activeKey || defaultActiveFirst && ((_childList$ = childList[0]) === null || _childList$ === void 0 ? void 0 : _childList$.key), {\n      value: activeKey\n    }),\n    _useMergedState4 = _slicedToArray(_useMergedState3, 2),\n    mergedActiveKey = _useMergedState4[0],\n    setMergedActiveKey = _useMergedState4[1];\n  var onActive = useMemoCallback(function (key) {\n    setMergedActiveKey(key);\n  });\n  var onInactive = useMemoCallback(function () {\n    setMergedActiveKey(undefined);\n  });\n  useImperativeHandle(ref, function () {\n    return {\n      list: containerRef.current,\n      focus: function focus(options) {\n        var _childList$find;\n        var keys = getKeys();\n        var _refreshElements = refreshElements(keys, uuid),\n          elements = _refreshElements.elements,\n          key2element = _refreshElements.key2element,\n          element2key = _refreshElements.element2key;\n        var focusableElements = getFocusableElements(containerRef.current, elements);\n        var shouldFocusKey = mergedActiveKey !== null && mergedActiveKey !== void 0 ? mergedActiveKey : focusableElements[0] ? element2key.get(focusableElements[0]) : (_childList$find = childList.find(function (node) {\n          return !node.props.disabled;\n        })) === null || _childList$find === void 0 ? void 0 : _childList$find.key;\n        var elementToFocus = key2element.get(shouldFocusKey);\n        if (shouldFocusKey && elementToFocus) {\n          var _elementToFocus$focus;\n          elementToFocus === null || elementToFocus === void 0 || (_elementToFocus$focus = elementToFocus.focus) === null || _elementToFocus$focus === void 0 || _elementToFocus$focus.call(elementToFocus, options);\n        }\n      }\n    };\n  });\n\n  // ======================== Select ========================\n  // >>>>> Select keys\n  var _useMergedState5 = useMergedState(defaultSelectedKeys || [], {\n      value: selectedKeys,\n      // Legacy convert key to array\n      postState: function postState(keys) {\n        if (Array.isArray(keys)) {\n          return keys;\n        }\n        if (keys === null || keys === undefined) {\n          return EMPTY_LIST;\n        }\n        return [keys];\n      }\n    }),\n    _useMergedState6 = _slicedToArray(_useMergedState5, 2),\n    mergedSelectKeys = _useMergedState6[0],\n    setMergedSelectKeys = _useMergedState6[1];\n\n  // >>>>> Trigger select\n  var triggerSelection = function triggerSelection(info) {\n    if (selectable) {\n      // Insert or Remove\n      var targetKey = info.key;\n      var exist = mergedSelectKeys.includes(targetKey);\n      var newSelectKeys;\n      if (multiple) {\n        if (exist) {\n          newSelectKeys = mergedSelectKeys.filter(function (key) {\n            return key !== targetKey;\n          });\n        } else {\n          newSelectKeys = [].concat(_toConsumableArray(mergedSelectKeys), [targetKey]);\n        }\n      } else {\n        newSelectKeys = [targetKey];\n      }\n      setMergedSelectKeys(newSelectKeys);\n\n      // Trigger event\n      var selectInfo = _objectSpread(_objectSpread({}, info), {}, {\n        selectedKeys: newSelectKeys\n      });\n      if (exist) {\n        onDeselect === null || onDeselect === void 0 || onDeselect(selectInfo);\n      } else {\n        onSelect === null || onSelect === void 0 || onSelect(selectInfo);\n      }\n    }\n\n    // Whatever selectable, always close it\n    if (!multiple && mergedOpenKeys.length && internalMode !== 'inline') {\n      triggerOpenKeys(EMPTY_LIST);\n    }\n  };\n\n  // ========================= Open =========================\n  /**\n   * Click for item. SubMenu do not have selection status\n   */\n  var onInternalClick = useMemoCallback(function (info) {\n    onClick === null || onClick === void 0 || onClick(warnItemProp(info));\n    triggerSelection(info);\n  });\n  var onInternalOpenChange = useMemoCallback(function (key, open) {\n    var newOpenKeys = mergedOpenKeys.filter(function (k) {\n      return k !== key;\n    });\n    if (open) {\n      newOpenKeys.push(key);\n    } else if (internalMode !== 'inline') {\n      // We need find all related popup to close\n      var subPathKeys = getSubPathKeys(key);\n      newOpenKeys = newOpenKeys.filter(function (k) {\n        return !subPathKeys.has(k);\n      });\n    }\n    if (!isEqual(mergedOpenKeys, newOpenKeys, true)) {\n      triggerOpenKeys(newOpenKeys, true);\n    }\n  });\n\n  // ==================== Accessibility =====================\n  var triggerAccessibilityOpen = function triggerAccessibilityOpen(key, open) {\n    var nextOpen = open !== null && open !== void 0 ? open : !mergedOpenKeys.includes(key);\n    onInternalOpenChange(key, nextOpen);\n  };\n  var onInternalKeyDown = useAccessibility(internalMode, mergedActiveKey, isRtl, uuid, containerRef, getKeys, getKeyPath, setMergedActiveKey, triggerAccessibilityOpen, onKeyDown);\n\n  // ======================== Effect ========================\n  React.useEffect(function () {\n    setMounted(true);\n  }, []);\n\n  // ======================= Context ========================\n  var privateContext = React.useMemo(function () {\n    return {\n      _internalRenderMenuItem: _internalRenderMenuItem,\n      _internalRenderSubMenuItem: _internalRenderSubMenuItem\n    };\n  }, [_internalRenderMenuItem, _internalRenderSubMenuItem]);\n\n  // ======================== Render ========================\n\n  // >>>>> Children\n  var wrappedChildList = internalMode !== 'horizontal' || disabledOverflow ? childList :\n  // Need wrap for overflow dropdown that do not response for open\n  childList.map(function (child, index) {\n    return (\n      /*#__PURE__*/\n      // Always wrap provider to avoid sub node re-mount\n      React.createElement(MenuContextProvider, {\n        key: child.key,\n        overflowDisabled: index > lastVisibleIndex\n      }, child)\n    );\n  });\n\n  // >>>>> Container\n  var container = /*#__PURE__*/React.createElement(Overflow, _extends({\n    id: id,\n    ref: containerRef,\n    prefixCls: \"\".concat(prefixCls, \"-overflow\"),\n    component: \"ul\",\n    itemComponent: MenuItem,\n    className: classNames(prefixCls, \"\".concat(prefixCls, \"-root\"), \"\".concat(prefixCls, \"-\").concat(internalMode), className, _defineProperty(_defineProperty({}, \"\".concat(prefixCls, \"-inline-collapsed\"), internalInlineCollapsed), \"\".concat(prefixCls, \"-rtl\"), isRtl), rootClassName),\n    dir: direction,\n    style: style,\n    role: \"menu\",\n    tabIndex: tabIndex,\n    data: wrappedChildList,\n    renderRawItem: function renderRawItem(node) {\n      return node;\n    },\n    renderRawRest: function renderRawRest(omitItems) {\n      // We use origin list since wrapped list use context to prevent open\n      var len = omitItems.length;\n      var originOmitItems = len ? childList.slice(-len) : null;\n      return /*#__PURE__*/React.createElement(SubMenu, {\n        eventKey: OVERFLOW_KEY,\n        title: overflowedIndicator,\n        disabled: allVisible,\n        internalPopupClose: len === 0,\n        popupClassName: overflowedIndicatorPopupClassName\n      }, originOmitItems);\n    },\n    maxCount: internalMode !== 'horizontal' || disabledOverflow ? Overflow.INVALIDATE : Overflow.RESPONSIVE,\n    ssr: \"full\",\n    \"data-menu-list\": true,\n    onVisibleChange: function onVisibleChange(newLastIndex) {\n      setLastVisibleIndex(newLastIndex);\n    },\n    onKeyDown: onInternalKeyDown\n  }, restProps));\n\n  // >>>>> Render\n  return /*#__PURE__*/React.createElement(PrivateContext.Provider, {\n    value: privateContext\n  }, /*#__PURE__*/React.createElement(IdContext.Provider, {\n    value: uuid\n  }, /*#__PURE__*/React.createElement(MenuContextProvider, {\n    prefixCls: prefixCls,\n    rootClassName: rootClassName,\n    mode: internalMode,\n    openKeys: mergedOpenKeys,\n    rtl: isRtl\n    // Disabled\n    ,\n    disabled: disabled\n    // Motion\n    ,\n    motion: mounted ? motion : null,\n    defaultMotions: mounted ? defaultMotions : null\n    // Active\n    ,\n    activeKey: mergedActiveKey,\n    onActive: onActive,\n    onInactive: onInactive\n    // Selection\n    ,\n    selectedKeys: mergedSelectKeys\n    // Level\n    ,\n    inlineIndent: inlineIndent\n    // Popup\n    ,\n    subMenuOpenDelay: subMenuOpenDelay,\n    subMenuCloseDelay: subMenuCloseDelay,\n    forceSubMenuRender: forceSubMenuRender,\n    builtinPlacements: builtinPlacements,\n    triggerSubMenuAction: triggerSubMenuAction,\n    getPopupContainer: getPopupContainer\n    // Icon\n    ,\n    itemIcon: itemIcon,\n    expandIcon: expandIcon\n    // Events\n    ,\n    onItemClick: onInternalClick,\n    onOpenChange: onInternalOpenChange\n  }, /*#__PURE__*/React.createElement(PathUserContext.Provider, {\n    value: pathUserContext\n  }, container), /*#__PURE__*/React.createElement(\"div\", {\n    style: {\n      display: 'none'\n    },\n    \"aria-hidden\": true\n  }, /*#__PURE__*/React.createElement(PathRegisterContext.Provider, {\n    value: registerPathContext\n  }, measureChildList)))));\n});\nexport default Menu;","import Menu from \"./Menu\";\nimport MenuItem from \"./MenuItem\";\nimport SubMenu from \"./SubMenu\";\nimport MenuItemGroup from \"./MenuItemGroup\";\nimport { useFullPath } from \"./context/PathContext\";\nimport Divider from \"./Divider\";\nexport { SubMenu, MenuItem as Item, MenuItem, MenuItemGroup, MenuItemGroup as ItemGroup, Divider, /** @private Only used for antd internal. Do not use in your production. */\nuseFullPath };\nvar ExportMenu = Menu;\nExportMenu.Item = MenuItem;\nExportMenu.SubMenu = SubMenu;\nExportMenu.ItemGroup = MenuItemGroup;\nExportMenu.Divider = Divider;\nexport default ExportMenu;","// This icon file is generated automatically.\nvar EllipsisOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\" } }] }, \"name\": \"ellipsis\", \"theme\": \"outlined\" };\nexport default EllipsisOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport EllipsisOutlinedSvg from \"@ant-design/icons-svg/es/asn/EllipsisOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar EllipsisOutlined = function EllipsisOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: EllipsisOutlinedSvg\n  }));\n};\n\n/**![ellipsis](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE3NiA1MTFhNTYgNTYgMCAxMDExMiAwIDU2IDU2IDAgMTAtMTEyIDB6bTI4MCAwYTU2IDU2IDAgMTAxMTIgMCA1NiA1NiAwIDEwLTExMiAwem0yODAgMGE1NiA1NiAwIDEwMTEyIDAgNTYgNTYgMCAxMC0xMTIgMHoiIC8+PC9zdmc+) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(EllipsisOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'EllipsisOutlined';\n}\nexport default RefIcon;","import * as React from 'react';\nconst RadioGroupContext = /*#__PURE__*/React.createContext(null);\nexport const RadioGroupContextProvider = RadioGroupContext.Provider;\nexport default RadioGroupContext;\nexport const RadioOptionTypeContext = /*#__PURE__*/React.createContext(null);\nexport const RadioOptionTypeContextProvider = RadioOptionTypeContext.Provider;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"className\", \"style\", \"checked\", \"disabled\", \"defaultChecked\", \"type\", \"title\", \"onChange\"];\nimport classNames from 'classnames';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport * as React from 'react';\nimport { forwardRef, useImperativeHandle, useRef } from 'react';\nexport var Checkbox = /*#__PURE__*/forwardRef(function (props, ref) {\n  var _props$prefixCls = props.prefixCls,\n    prefixCls = _props$prefixCls === void 0 ? 'rc-checkbox' : _props$prefixCls,\n    className = props.className,\n    style = props.style,\n    checked = props.checked,\n    disabled = props.disabled,\n    _props$defaultChecked = props.defaultChecked,\n    defaultChecked = _props$defaultChecked === void 0 ? false : _props$defaultChecked,\n    _props$type = props.type,\n    type = _props$type === void 0 ? 'checkbox' : _props$type,\n    title = props.title,\n    onChange = props.onChange,\n    inputProps = _objectWithoutProperties(props, _excluded);\n  var inputRef = useRef(null);\n  var holderRef = useRef(null);\n  var _useMergedState = useMergedState(defaultChecked, {\n      value: checked\n    }),\n    _useMergedState2 = _slicedToArray(_useMergedState, 2),\n    rawValue = _useMergedState2[0],\n    setRawValue = _useMergedState2[1];\n  useImperativeHandle(ref, function () {\n    return {\n      focus: function focus(options) {\n        var _inputRef$current;\n        (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 || _inputRef$current.focus(options);\n      },\n      blur: function blur() {\n        var _inputRef$current2;\n        (_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 || _inputRef$current2.blur();\n      },\n      input: inputRef.current,\n      nativeElement: holderRef.current\n    };\n  });\n  var classString = classNames(prefixCls, className, _defineProperty(_defineProperty({}, \"\".concat(prefixCls, \"-checked\"), rawValue), \"\".concat(prefixCls, \"-disabled\"), disabled));\n  var handleChange = function handleChange(e) {\n    if (disabled) {\n      return;\n    }\n    if (!('checked' in props)) {\n      setRawValue(e.target.checked);\n    }\n    onChange === null || onChange === void 0 || onChange({\n      target: _objectSpread(_objectSpread({}, props), {}, {\n        type: type,\n        checked: e.target.checked\n      }),\n      stopPropagation: function stopPropagation() {\n        e.stopPropagation();\n      },\n      preventDefault: function preventDefault() {\n        e.preventDefault();\n      },\n      nativeEvent: e.nativeEvent\n    });\n  };\n  return /*#__PURE__*/React.createElement(\"span\", {\n    className: classString,\n    title: title,\n    style: style,\n    ref: holderRef\n  }, /*#__PURE__*/React.createElement(\"input\", _extends({}, inputProps, {\n    className: \"\".concat(prefixCls, \"-input\"),\n    ref: inputRef,\n    onChange: handleChange,\n    disabled: disabled,\n    checked: !!rawValue,\n    type: type\n  })), /*#__PURE__*/React.createElement(\"span\", {\n    className: \"\".concat(prefixCls, \"-inner\")\n  }));\n});\nexport default Checkbox;","import React from 'react';\nimport raf from \"rc-util/es/raf\";\n/**\n * When click on the label,\n * the event will be stopped to prevent the label from being clicked twice.\n * label click -> input click -> label click again\n */\nexport default function useBubbleLock(onOriginInputClick) {\n  const labelClickLockRef = React.useRef(null);\n  const clearLock = () => {\n    raf.cancel(labelClickLockRef.current);\n    labelClickLockRef.current = null;\n  };\n  const onLabelClick = () => {\n    clearLock();\n    labelClickLockRef.current = raf(() => {\n      labelClickLockRef.current = null;\n    });\n  };\n  const onInputClick = e => {\n    if (labelClickLockRef.current) {\n      e.stopPropagation();\n      clearLock();\n    }\n    onOriginInputClick === null || onOriginInputClick === void 0 ? void 0 : onOriginInputClick(e);\n  };\n  return [onLabelClick, onInputClick];\n}","import { unit } from '@ant-design/cssinjs';\nimport { genFocusOutline, resetComponent } from '../../style';\nimport { genStyleHooks, mergeToken } from '../../theme/internal';\n// ============================== Styles ==============================\n// styles from RadioGroup only\nconst getGroupRadioStyle = token => {\n  const {\n    componentCls,\n    antCls\n  } = token;\n  const groupPrefixCls = `${componentCls}-group`;\n  return {\n    [groupPrefixCls]: Object.assign(Object.assign({}, resetComponent(token)), {\n      display: 'inline-block',\n      fontSize: 0,\n      // RTL\n      [`&${groupPrefixCls}-rtl`]: {\n        direction: 'rtl'\n      },\n      [`&${groupPrefixCls}-block`]: {\n        display: 'flex'\n      },\n      [`${antCls}-badge ${antCls}-badge-count`]: {\n        zIndex: 1\n      },\n      [`> ${antCls}-badge:not(:first-child) > ${antCls}-button-wrapper`]: {\n        borderInlineStart: 'none'\n      }\n    })\n  };\n};\n// Styles from radio-wrapper\nconst getRadioBasicStyle = token => {\n  const {\n    componentCls,\n    wrapperMarginInlineEnd,\n    colorPrimary,\n    radioSize,\n    motionDurationSlow,\n    motionDurationMid,\n    motionEaseInOutCirc,\n    colorBgContainer,\n    colorBorder,\n    lineWidth,\n    colorBgContainerDisabled,\n    colorTextDisabled,\n    paddingXS,\n    dotColorDisabled,\n    lineType,\n    radioColor,\n    radioBgColor,\n    calc\n  } = token;\n  const radioInnerPrefixCls = `${componentCls}-inner`;\n  const dotPadding = 4;\n  const radioDotDisabledSize = calc(radioSize).sub(calc(dotPadding).mul(2));\n  const radioSizeCalc = calc(1).mul(radioSize).equal({\n    unit: true\n  });\n  return {\n    [`${componentCls}-wrapper`]: Object.assign(Object.assign({}, resetComponent(token)), {\n      display: 'inline-flex',\n      alignItems: 'baseline',\n      marginInlineStart: 0,\n      marginInlineEnd: wrapperMarginInlineEnd,\n      cursor: 'pointer',\n      '&:last-child': {\n        marginInlineEnd: 0\n      },\n      // RTL\n      [`&${componentCls}-wrapper-rtl`]: {\n        direction: 'rtl'\n      },\n      '&-disabled': {\n        cursor: 'not-allowed',\n        color: token.colorTextDisabled\n      },\n      '&::after': {\n        display: 'inline-block',\n        width: 0,\n        overflow: 'hidden',\n        content: '\"\\\\a0\"'\n      },\n      '&-block': {\n        flex: 1,\n        justifyContent: 'center'\n      },\n      // hashId 在 wrapper 上，只能铺平\n      [`${componentCls}-checked::after`]: {\n        position: 'absolute',\n        insetBlockStart: 0,\n        insetInlineStart: 0,\n        width: '100%',\n        height: '100%',\n        border: `${unit(lineWidth)} ${lineType} ${colorPrimary}`,\n        borderRadius: '50%',\n        visibility: 'hidden',\n        opacity: 0,\n        content: '\"\"'\n      },\n      [componentCls]: Object.assign(Object.assign({}, resetComponent(token)), {\n        position: 'relative',\n        display: 'inline-block',\n        outline: 'none',\n        cursor: 'pointer',\n        alignSelf: 'center',\n        borderRadius: '50%'\n      }),\n      [`${componentCls}-wrapper:hover &,\n        &:hover ${radioInnerPrefixCls}`]: {\n        borderColor: colorPrimary\n      },\n      [`${componentCls}-input:focus-visible + ${radioInnerPrefixCls}`]: Object.assign({}, genFocusOutline(token)),\n      [`${componentCls}:hover::after, ${componentCls}-wrapper:hover &::after`]: {\n        visibility: 'visible'\n      },\n      [`${componentCls}-inner`]: {\n        '&::after': {\n          boxSizing: 'border-box',\n          position: 'absolute',\n          insetBlockStart: '50%',\n          insetInlineStart: '50%',\n          display: 'block',\n          width: radioSizeCalc,\n          height: radioSizeCalc,\n          marginBlockStart: calc(1).mul(radioSize).div(-2).equal({\n            unit: true\n          }),\n          marginInlineStart: calc(1).mul(radioSize).div(-2).equal({\n            unit: true\n          }),\n          backgroundColor: radioColor,\n          borderBlockStart: 0,\n          borderInlineStart: 0,\n          borderRadius: radioSizeCalc,\n          transform: 'scale(0)',\n          opacity: 0,\n          transition: `all ${motionDurationSlow} ${motionEaseInOutCirc}`,\n          content: '\"\"'\n        },\n        boxSizing: 'border-box',\n        position: 'relative',\n        insetBlockStart: 0,\n        insetInlineStart: 0,\n        display: 'block',\n        width: radioSizeCalc,\n        height: radioSizeCalc,\n        backgroundColor: colorBgContainer,\n        borderColor: colorBorder,\n        borderStyle: 'solid',\n        borderWidth: lineWidth,\n        borderRadius: '50%',\n        transition: `all ${motionDurationMid}`\n      },\n      [`${componentCls}-input`]: {\n        position: 'absolute',\n        inset: 0,\n        zIndex: 1,\n        cursor: 'pointer',\n        opacity: 0\n      },\n      // 选中状态\n      [`${componentCls}-checked`]: {\n        [radioInnerPrefixCls]: {\n          borderColor: colorPrimary,\n          backgroundColor: radioBgColor,\n          '&::after': {\n            transform: `scale(${token.calc(token.dotSize).div(radioSize).equal()})`,\n            opacity: 1,\n            transition: `all ${motionDurationSlow} ${motionEaseInOutCirc}`\n          }\n        }\n      },\n      [`${componentCls}-disabled`]: {\n        cursor: 'not-allowed',\n        [radioInnerPrefixCls]: {\n          backgroundColor: colorBgContainerDisabled,\n          borderColor: colorBorder,\n          cursor: 'not-allowed',\n          '&::after': {\n            backgroundColor: dotColorDisabled\n          }\n        },\n        [`${componentCls}-input`]: {\n          cursor: 'not-allowed'\n        },\n        [`${componentCls}-disabled + span`]: {\n          color: colorTextDisabled,\n          cursor: 'not-allowed'\n        },\n        [`&${componentCls}-checked`]: {\n          [radioInnerPrefixCls]: {\n            '&::after': {\n              transform: `scale(${calc(radioDotDisabledSize).div(radioSize).equal()})`\n            }\n          }\n        }\n      },\n      [`span${componentCls} + *`]: {\n        paddingInlineStart: paddingXS,\n        paddingInlineEnd: paddingXS\n      }\n    })\n  };\n};\n// Styles from radio-button\nconst getRadioButtonStyle = token => {\n  const {\n    buttonColor,\n    controlHeight,\n    componentCls,\n    lineWidth,\n    lineType,\n    colorBorder,\n    motionDurationSlow,\n    motionDurationMid,\n    buttonPaddingInline,\n    fontSize,\n    buttonBg,\n    fontSizeLG,\n    controlHeightLG,\n    controlHeightSM,\n    paddingXS,\n    borderRadius,\n    borderRadiusSM,\n    borderRadiusLG,\n    buttonCheckedBg,\n    buttonSolidCheckedColor,\n    colorTextDisabled,\n    colorBgContainerDisabled,\n    buttonCheckedBgDisabled,\n    buttonCheckedColorDisabled,\n    colorPrimary,\n    colorPrimaryHover,\n    colorPrimaryActive,\n    buttonSolidCheckedBg,\n    buttonSolidCheckedHoverBg,\n    buttonSolidCheckedActiveBg,\n    calc\n  } = token;\n  return {\n    [`${componentCls}-button-wrapper`]: {\n      position: 'relative',\n      display: 'inline-block',\n      height: controlHeight,\n      margin: 0,\n      paddingInline: buttonPaddingInline,\n      paddingBlock: 0,\n      color: buttonColor,\n      fontSize,\n      lineHeight: unit(calc(controlHeight).sub(calc(lineWidth).mul(2)).equal()),\n      background: buttonBg,\n      border: `${unit(lineWidth)} ${lineType} ${colorBorder}`,\n      // strange align fix for chrome but works\n      // https://gw.alipayobjects.com/zos/rmsportal/VFTfKXJuogBAXcvfAUWJ.gif\n      borderBlockStartWidth: calc(lineWidth).add(0.02).equal(),\n      borderInlineStartWidth: 0,\n      borderInlineEndWidth: lineWidth,\n      cursor: 'pointer',\n      transition: [`color ${motionDurationMid}`, `background ${motionDurationMid}`, `box-shadow ${motionDurationMid}`].join(','),\n      a: {\n        color: buttonColor\n      },\n      [`> ${componentCls}-button`]: {\n        position: 'absolute',\n        insetBlockStart: 0,\n        insetInlineStart: 0,\n        zIndex: -1,\n        width: '100%',\n        height: '100%'\n      },\n      '&:not(:first-child)': {\n        '&::before': {\n          position: 'absolute',\n          insetBlockStart: calc(lineWidth).mul(-1).equal(),\n          insetInlineStart: calc(lineWidth).mul(-1).equal(),\n          display: 'block',\n          boxSizing: 'content-box',\n          width: 1,\n          height: '100%',\n          paddingBlock: lineWidth,\n          paddingInline: 0,\n          backgroundColor: colorBorder,\n          transition: `background-color ${motionDurationSlow}`,\n          content: '\"\"'\n        }\n      },\n      '&:first-child': {\n        borderInlineStart: `${unit(lineWidth)} ${lineType} ${colorBorder}`,\n        borderStartStartRadius: borderRadius,\n        borderEndStartRadius: borderRadius\n      },\n      '&:last-child': {\n        borderStartEndRadius: borderRadius,\n        borderEndEndRadius: borderRadius\n      },\n      '&:first-child:last-child': {\n        borderRadius\n      },\n      [`${componentCls}-group-large &`]: {\n        height: controlHeightLG,\n        fontSize: fontSizeLG,\n        lineHeight: unit(calc(controlHeightLG).sub(calc(lineWidth).mul(2)).equal()),\n        '&:first-child': {\n          borderStartStartRadius: borderRadiusLG,\n          borderEndStartRadius: borderRadiusLG\n        },\n        '&:last-child': {\n          borderStartEndRadius: borderRadiusLG,\n          borderEndEndRadius: borderRadiusLG\n        }\n      },\n      [`${componentCls}-group-small &`]: {\n        height: controlHeightSM,\n        paddingInline: calc(paddingXS).sub(lineWidth).equal(),\n        paddingBlock: 0,\n        lineHeight: unit(calc(controlHeightSM).sub(calc(lineWidth).mul(2)).equal()),\n        '&:first-child': {\n          borderStartStartRadius: borderRadiusSM,\n          borderEndStartRadius: borderRadiusSM\n        },\n        '&:last-child': {\n          borderStartEndRadius: borderRadiusSM,\n          borderEndEndRadius: borderRadiusSM\n        }\n      },\n      '&:hover': {\n        position: 'relative',\n        color: colorPrimary\n      },\n      '&:has(:focus-visible)': Object.assign({}, genFocusOutline(token)),\n      [`${componentCls}-inner, input[type='checkbox'], input[type='radio']`]: {\n        width: 0,\n        height: 0,\n        opacity: 0,\n        pointerEvents: 'none'\n      },\n      [`&-checked:not(${componentCls}-button-wrapper-disabled)`]: {\n        zIndex: 1,\n        color: colorPrimary,\n        background: buttonCheckedBg,\n        borderColor: colorPrimary,\n        '&::before': {\n          backgroundColor: colorPrimary\n        },\n        '&:first-child': {\n          borderColor: colorPrimary\n        },\n        '&:hover': {\n          color: colorPrimaryHover,\n          borderColor: colorPrimaryHover,\n          '&::before': {\n            backgroundColor: colorPrimaryHover\n          }\n        },\n        '&:active': {\n          color: colorPrimaryActive,\n          borderColor: colorPrimaryActive,\n          '&::before': {\n            backgroundColor: colorPrimaryActive\n          }\n        }\n      },\n      [`${componentCls}-group-solid &-checked:not(${componentCls}-button-wrapper-disabled)`]: {\n        color: buttonSolidCheckedColor,\n        background: buttonSolidCheckedBg,\n        borderColor: buttonSolidCheckedBg,\n        '&:hover': {\n          color: buttonSolidCheckedColor,\n          background: buttonSolidCheckedHoverBg,\n          borderColor: buttonSolidCheckedHoverBg\n        },\n        '&:active': {\n          color: buttonSolidCheckedColor,\n          background: buttonSolidCheckedActiveBg,\n          borderColor: buttonSolidCheckedActiveBg\n        }\n      },\n      '&-disabled': {\n        color: colorTextDisabled,\n        backgroundColor: colorBgContainerDisabled,\n        borderColor: colorBorder,\n        cursor: 'not-allowed',\n        '&:first-child, &:hover': {\n          color: colorTextDisabled,\n          backgroundColor: colorBgContainerDisabled,\n          borderColor: colorBorder\n        }\n      },\n      [`&-disabled${componentCls}-button-wrapper-checked`]: {\n        color: buttonCheckedColorDisabled,\n        backgroundColor: buttonCheckedBgDisabled,\n        borderColor: colorBorder,\n        boxShadow: 'none'\n      },\n      '&-block': {\n        flex: 1,\n        textAlign: 'center'\n      }\n    }\n  };\n};\n// ============================== Export ==============================\nexport const prepareComponentToken = token => {\n  const {\n    wireframe,\n    padding,\n    marginXS,\n    lineWidth,\n    fontSizeLG,\n    colorText,\n    colorBgContainer,\n    colorTextDisabled,\n    controlItemBgActiveDisabled,\n    colorTextLightSolid,\n    colorPrimary,\n    colorPrimaryHover,\n    colorPrimaryActive,\n    colorWhite\n  } = token;\n  const dotPadding = 4; // Fixed value\n  const radioSize = fontSizeLG;\n  const radioDotSize = wireframe ? radioSize - dotPadding * 2 : radioSize - (dotPadding + lineWidth) * 2;\n  return {\n    // Radio\n    radioSize,\n    dotSize: radioDotSize,\n    dotColorDisabled: colorTextDisabled,\n    // Radio buttons\n    buttonSolidCheckedColor: colorTextLightSolid,\n    buttonSolidCheckedBg: colorPrimary,\n    buttonSolidCheckedHoverBg: colorPrimaryHover,\n    buttonSolidCheckedActiveBg: colorPrimaryActive,\n    buttonBg: colorBgContainer,\n    buttonCheckedBg: colorBgContainer,\n    buttonColor: colorText,\n    buttonCheckedBgDisabled: controlItemBgActiveDisabled,\n    buttonCheckedColorDisabled: colorTextDisabled,\n    buttonPaddingInline: padding - lineWidth,\n    wrapperMarginInlineEnd: marginXS,\n    // internal\n    radioColor: wireframe ? colorPrimary : colorWhite,\n    radioBgColor: wireframe ? colorBgContainer : colorPrimary\n  };\n};\nexport default genStyleHooks('Radio', token => {\n  const {\n    controlOutline,\n    controlOutlineWidth\n  } = token;\n  const radioFocusShadow = `0 0 0 ${unit(controlOutlineWidth)} ${controlOutline}`;\n  const radioButtonFocusShadow = radioFocusShadow;\n  const radioToken = mergeToken(token, {\n    radioFocusShadow,\n    radioButtonFocusShadow\n  });\n  return [getGroupRadioStyle(radioToken), getRadioBasicStyle(radioToken), getRadioButtonStyle(radioToken)];\n}, prepareComponentToken, {\n  unitless: {\n    radioSize: true,\n    dotSize: true\n  }\n});","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport RcCheckbox from 'rc-checkbox';\nimport { composeRef } from \"rc-util/es/ref\";\nimport { devUseWarning } from '../_util/warning';\nimport Wave from '../_util/wave';\nimport { TARGET_CLS } from '../_util/wave/interface';\nimport useBubbleLock from '../checkbox/useBubbleLock';\nimport { ConfigContext } from '../config-provider';\nimport DisabledContext from '../config-provider/DisabledContext';\nimport useCSSVarCls from '../config-provider/hooks/useCSSVarCls';\nimport { FormItemInputContext } from '../form/context';\nimport RadioGroupContext, { RadioOptionTypeContext } from './context';\nimport useStyle from './style';\nconst InternalRadio = (props, ref) => {\n  var _a, _b;\n  const groupContext = React.useContext(RadioGroupContext);\n  const radioOptionTypeContext = React.useContext(RadioOptionTypeContext);\n  const {\n    getPrefixCls,\n    direction,\n    radio\n  } = React.useContext(ConfigContext);\n  const innerRef = React.useRef(null);\n  const mergedRef = composeRef(ref, innerRef);\n  const {\n    isFormItemInput\n  } = React.useContext(FormItemInputContext);\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('Radio');\n    process.env.NODE_ENV !== \"production\" ? warning(!('optionType' in props), 'usage', '`optionType` is only support in Radio.Group.') : void 0;\n  }\n  const onChange = e => {\n    var _a, _b;\n    (_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, e);\n    (_b = groupContext === null || groupContext === void 0 ? void 0 : groupContext.onChange) === null || _b === void 0 ? void 0 : _b.call(groupContext, e);\n  };\n  const {\n      prefixCls: customizePrefixCls,\n      className,\n      rootClassName,\n      children,\n      style,\n      title\n    } = props,\n    restProps = __rest(props, [\"prefixCls\", \"className\", \"rootClassName\", \"children\", \"style\", \"title\"]);\n  const radioPrefixCls = getPrefixCls('radio', customizePrefixCls);\n  const isButtonType = ((groupContext === null || groupContext === void 0 ? void 0 : groupContext.optionType) || radioOptionTypeContext) === 'button';\n  const prefixCls = isButtonType ? `${radioPrefixCls}-button` : radioPrefixCls;\n  // Style\n  const rootCls = useCSSVarCls(radioPrefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(radioPrefixCls, rootCls);\n  const radioProps = Object.assign({}, restProps);\n  // ===================== Disabled =====================\n  const disabled = React.useContext(DisabledContext);\n  if (groupContext) {\n    radioProps.name = groupContext.name;\n    radioProps.onChange = onChange;\n    radioProps.checked = props.value === groupContext.value;\n    radioProps.disabled = (_a = radioProps.disabled) !== null && _a !== void 0 ? _a : groupContext.disabled;\n  }\n  radioProps.disabled = (_b = radioProps.disabled) !== null && _b !== void 0 ? _b : disabled;\n  const wrapperClassString = classNames(`${prefixCls}-wrapper`, {\n    [`${prefixCls}-wrapper-checked`]: radioProps.checked,\n    [`${prefixCls}-wrapper-disabled`]: radioProps.disabled,\n    [`${prefixCls}-wrapper-rtl`]: direction === 'rtl',\n    [`${prefixCls}-wrapper-in-form-item`]: isFormItemInput,\n    [`${prefixCls}-wrapper-block`]: !!(groupContext === null || groupContext === void 0 ? void 0 : groupContext.block)\n  }, radio === null || radio === void 0 ? void 0 : radio.className, className, rootClassName, hashId, cssVarCls, rootCls);\n  // ============================ Event Lock ============================\n  const [onLabelClick, onInputClick] = useBubbleLock(radioProps.onClick);\n  // ============================== Render ==============================\n  return wrapCSSVar(/*#__PURE__*/React.createElement(Wave, {\n    component: \"Radio\",\n    disabled: radioProps.disabled\n  }, /*#__PURE__*/React.createElement(\"label\", {\n    className: wrapperClassString,\n    style: Object.assign(Object.assign({}, radio === null || radio === void 0 ? void 0 : radio.style), style),\n    onMouseEnter: props.onMouseEnter,\n    onMouseLeave: props.onMouseLeave,\n    title: title,\n    onClick: onLabelClick\n  }, /*#__PURE__*/React.createElement(RcCheckbox, Object.assign({}, radioProps, {\n    className: classNames(radioProps.className, {\n      [TARGET_CLS]: !isButtonType\n    }),\n    type: \"radio\",\n    prefixCls: prefixCls,\n    ref: mergedRef,\n    onClick: onInputClick\n  })), children !== undefined ? /*#__PURE__*/React.createElement(\"span\", {\n    className: `${prefixCls}-label`\n  }, children) : null)));\n};\nconst Radio = /*#__PURE__*/React.forwardRef(InternalRadio);\nif (process.env.NODE_ENV !== 'production') {\n  Radio.displayName = 'Radio';\n}\nexport default Radio;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport useId from \"rc-util/es/hooks/useId\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport { ConfigContext } from '../config-provider';\nimport useCSSVarCls from '../config-provider/hooks/useCSSVarCls';\nimport useSize from '../config-provider/hooks/useSize';\nimport { RadioGroupContextProvider } from './context';\nimport Radio from './radio';\nimport useStyle from './style';\nconst RadioGroup = /*#__PURE__*/React.forwardRef((props, ref) => {\n  const {\n    getPrefixCls,\n    direction\n  } = React.useContext(ConfigContext);\n  const defaultName = useId();\n  const {\n    prefixCls: customizePrefixCls,\n    className,\n    rootClassName,\n    options,\n    buttonStyle = 'outline',\n    disabled,\n    children,\n    size: customizeSize,\n    style,\n    id,\n    optionType,\n    name = defaultName,\n    defaultValue,\n    value: customizedValue,\n    block = false,\n    onChange,\n    onMouseEnter,\n    onMouseLeave,\n    onFocus,\n    onBlur\n  } = props;\n  const [value, setValue] = useMergedState(defaultValue, {\n    value: customizedValue\n  });\n  const onRadioChange = React.useCallback(event => {\n    const lastValue = value;\n    const val = event.target.value;\n    if (!('value' in props)) {\n      setValue(val);\n    }\n    if (val !== lastValue) {\n      onChange === null || onChange === void 0 ? void 0 : onChange(event);\n    }\n  }, [value, setValue, onChange]);\n  const prefixCls = getPrefixCls('radio', customizePrefixCls);\n  const groupPrefixCls = `${prefixCls}-group`;\n  // Style\n  const rootCls = useCSSVarCls(prefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls, rootCls);\n  let childrenToRender = children;\n  // 如果存在 options, 优先使用\n  if (options && options.length > 0) {\n    childrenToRender = options.map(option => {\n      if (typeof option === 'string' || typeof option === 'number') {\n        // 此处类型自动推导为 string\n        return /*#__PURE__*/React.createElement(Radio, {\n          key: option.toString(),\n          prefixCls: prefixCls,\n          disabled: disabled,\n          value: option,\n          checked: value === option\n        }, option);\n      }\n      // 此处类型自动推导为 { label: string value: string }\n      return /*#__PURE__*/React.createElement(Radio, {\n        key: `radio-group-value-options-${option.value}`,\n        prefixCls: prefixCls,\n        disabled: option.disabled || disabled,\n        value: option.value,\n        checked: value === option.value,\n        title: option.title,\n        style: option.style,\n        className: option.className,\n        id: option.id,\n        required: option.required\n      }, option.label);\n    });\n  }\n  const mergedSize = useSize(customizeSize);\n  const classString = classNames(groupPrefixCls, `${groupPrefixCls}-${buttonStyle}`, {\n    [`${groupPrefixCls}-${mergedSize}`]: mergedSize,\n    [`${groupPrefixCls}-rtl`]: direction === 'rtl',\n    [`${groupPrefixCls}-block`]: block\n  }, className, rootClassName, hashId, cssVarCls, rootCls);\n  const memoizedValue = React.useMemo(() => ({\n    onChange: onRadioChange,\n    value,\n    disabled,\n    name,\n    optionType,\n    block\n  }), [onRadioChange, value, disabled, name, optionType, block]);\n  return wrapCSSVar(/*#__PURE__*/React.createElement(\"div\", Object.assign({}, pickAttrs(props, {\n    aria: true,\n    data: true\n  }), {\n    className: classString,\n    style: style,\n    onMouseEnter: onMouseEnter,\n    onMouseLeave: onMouseLeave,\n    onFocus: onFocus,\n    onBlur: onBlur,\n    id: id,\n    ref: ref\n  }), /*#__PURE__*/React.createElement(RadioGroupContextProvider, {\n    value: memoizedValue\n  }, childrenToRender)));\n});\nexport default /*#__PURE__*/React.memo(RadioGroup);","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport { RadioOptionTypeContextProvider } from './context';\nimport Radio from './radio';\nconst RadioButton = (props, ref) => {\n  const {\n    getPrefixCls\n  } = React.useContext(ConfigContext);\n  const {\n      prefixCls: customizePrefixCls\n    } = props,\n    radioProps = __rest(props, [\"prefixCls\"]);\n  const prefixCls = getPrefixCls('radio', customizePrefixCls);\n  return /*#__PURE__*/React.createElement(RadioOptionTypeContextProvider, {\n    value: \"button\"\n  }, /*#__PURE__*/React.createElement(Radio, Object.assign({\n    prefixCls: prefixCls\n  }, radioProps, {\n    type: \"radio\",\n    ref: ref\n  })));\n};\nexport default /*#__PURE__*/React.forwardRef(RadioButton);","\"use client\";\n\nimport Group from './group';\nimport InternalRadio from './radio';\nimport Button from './radioButton';\nexport { Button, Group };\nconst Radio = InternalRadio;\nRadio.Button = Button;\nRadio.Group = Group;\nRadio.__ANT_RADIO = true;\nexport default Radio;","import { mergeToken } from '../../theme/internal';\nexport function initInputToken(token) {\n  return mergeToken(token, {\n    inputAffixPadding: token.paddingXXS\n  });\n}\nexport const initComponentToken = token => {\n  const {\n    controlHeight,\n    fontSize,\n    lineHeight,\n    lineWidth,\n    controlHeightSM,\n    controlHeightLG,\n    fontSizeLG,\n    lineHeightLG,\n    paddingSM,\n    controlPaddingHorizontalSM,\n    controlPaddingHorizontal,\n    colorFillAlter,\n    colorPrimaryHover,\n    colorPrimary,\n    controlOutlineWidth,\n    controlOutline,\n    colorErrorOutline,\n    colorWarningOutline,\n    colorBgContainer,\n    inputFontSize,\n    inputFontSizeLG,\n    inputFontSizeSM\n  } = token;\n  const mergedFontSize = inputFontSize || fontSize;\n  const mergedFontSizeSM = inputFontSizeSM || mergedFontSize;\n  const mergedFontSizeLG = inputFontSizeLG || fontSizeLG;\n  const paddingBlock = Math.round((controlHeight - mergedFontSize * lineHeight) / 2 * 10) / 10 - lineWidth;\n  const paddingBlockSM = Math.round((controlHeightSM - mergedFontSizeSM * lineHeight) / 2 * 10) / 10 - lineWidth;\n  const paddingBlockLG = Math.ceil((controlHeightLG - mergedFontSizeLG * lineHeightLG) / 2 * 10) / 10 - lineWidth;\n  return {\n    paddingBlock: Math.max(paddingBlock, 0),\n    paddingBlockSM: Math.max(paddingBlockSM, 0),\n    paddingBlockLG: Math.max(paddingBlockLG, 0),\n    paddingInline: paddingSM - lineWidth,\n    paddingInlineSM: controlPaddingHorizontalSM - lineWidth,\n    paddingInlineLG: controlPaddingHorizontal - lineWidth,\n    addonBg: colorFillAlter,\n    activeBorderColor: colorPrimary,\n    hoverBorderColor: colorPrimaryHover,\n    activeShadow: `0 0 0 ${controlOutlineWidth}px ${controlOutline}`,\n    errorActiveShadow: `0 0 0 ${controlOutlineWidth}px ${colorErrorOutline}`,\n    warningActiveShadow: `0 0 0 ${controlOutlineWidth}px ${colorWarningOutline}`,\n    hoverBg: colorBgContainer,\n    activeBg: colorBgContainer,\n    inputFontSize: mergedFontSize,\n    inputFontSizeLG: mergedFontSizeLG,\n    inputFontSizeSM: mergedFontSizeSM\n  };\n};","import { unit } from '@ant-design/cssinjs';\nimport { mergeToken } from '../../theme/internal';\nexport const genHoverStyle = token => ({\n  borderColor: token.hoverBorderColor,\n  backgroundColor: token.hoverBg\n});\nexport const genDisabledStyle = token => ({\n  color: token.colorTextDisabled,\n  backgroundColor: token.colorBgContainerDisabled,\n  borderColor: token.colorBorder,\n  boxShadow: 'none',\n  cursor: 'not-allowed',\n  opacity: 1,\n  'input[disabled], textarea[disabled]': {\n    cursor: 'not-allowed'\n  },\n  '&:hover:not([disabled])': Object.assign({}, genHoverStyle(mergeToken(token, {\n    hoverBorderColor: token.colorBorder,\n    hoverBg: token.colorBgContainerDisabled\n  })))\n});\n/* ============== Outlined ============== */\nexport const genBaseOutlinedStyle = (token, options) => ({\n  background: token.colorBgContainer,\n  borderWidth: token.lineWidth,\n  borderStyle: token.lineType,\n  borderColor: options.borderColor,\n  '&:hover': {\n    borderColor: options.hoverBorderColor,\n    backgroundColor: token.hoverBg\n  },\n  '&:focus, &:focus-within': {\n    borderColor: options.activeBorderColor,\n    boxShadow: options.activeShadow,\n    outline: 0,\n    backgroundColor: token.activeBg\n  }\n});\nconst genOutlinedStatusStyle = (token, options) => ({\n  [`&${token.componentCls}-status-${options.status}:not(${token.componentCls}-disabled)`]: Object.assign(Object.assign({}, genBaseOutlinedStyle(token, options)), {\n    [`${token.componentCls}-prefix, ${token.componentCls}-suffix`]: {\n      color: options.affixColor\n    }\n  }),\n  [`&${token.componentCls}-status-${options.status}${token.componentCls}-disabled`]: {\n    borderColor: options.borderColor\n  }\n});\nexport const genOutlinedStyle = (token, extraStyles) => ({\n  '&-outlined': Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, genBaseOutlinedStyle(token, {\n    borderColor: token.colorBorder,\n    hoverBorderColor: token.hoverBorderColor,\n    activeBorderColor: token.activeBorderColor,\n    activeShadow: token.activeShadow\n  })), {\n    [`&${token.componentCls}-disabled, &[disabled]`]: Object.assign({}, genDisabledStyle(token))\n  }), genOutlinedStatusStyle(token, {\n    status: 'error',\n    borderColor: token.colorError,\n    hoverBorderColor: token.colorErrorBorderHover,\n    activeBorderColor: token.colorError,\n    activeShadow: token.errorActiveShadow,\n    affixColor: token.colorError\n  })), genOutlinedStatusStyle(token, {\n    status: 'warning',\n    borderColor: token.colorWarning,\n    hoverBorderColor: token.colorWarningBorderHover,\n    activeBorderColor: token.colorWarning,\n    activeShadow: token.warningActiveShadow,\n    affixColor: token.colorWarning\n  })), extraStyles)\n});\nconst genOutlinedGroupStatusStyle = (token, options) => ({\n  [`&${token.componentCls}-group-wrapper-status-${options.status}`]: {\n    [`${token.componentCls}-group-addon`]: {\n      borderColor: options.addonBorderColor,\n      color: options.addonColor\n    }\n  }\n});\nexport const genOutlinedGroupStyle = token => ({\n  '&-outlined': Object.assign(Object.assign(Object.assign({\n    [`${token.componentCls}-group`]: {\n      '&-addon': {\n        background: token.addonBg,\n        border: `${unit(token.lineWidth)} ${token.lineType} ${token.colorBorder}`\n      },\n      '&-addon:first-child': {\n        borderInlineEnd: 0\n      },\n      '&-addon:last-child': {\n        borderInlineStart: 0\n      }\n    }\n  }, genOutlinedGroupStatusStyle(token, {\n    status: 'error',\n    addonBorderColor: token.colorError,\n    addonColor: token.colorErrorText\n  })), genOutlinedGroupStatusStyle(token, {\n    status: 'warning',\n    addonBorderColor: token.colorWarning,\n    addonColor: token.colorWarningText\n  })), {\n    [`&${token.componentCls}-group-wrapper-disabled`]: {\n      [`${token.componentCls}-group-addon`]: Object.assign({}, genDisabledStyle(token))\n    }\n  })\n});\n/* ============ Borderless ============ */\nexport const genBorderlessStyle = (token, extraStyles) => {\n  const {\n    componentCls\n  } = token;\n  return {\n    '&-borderless': Object.assign({\n      background: 'transparent',\n      border: 'none',\n      '&:focus, &:focus-within': {\n        outline: 'none'\n      },\n      // >>>>> Disabled\n      [`&${componentCls}-disabled, &[disabled]`]: {\n        color: token.colorTextDisabled,\n        cursor: 'not-allowed'\n      },\n      // >>>>> Status\n      [`&${componentCls}-status-error`]: {\n        '&, & input, & textarea': {\n          color: token.colorError\n        }\n      },\n      [`&${componentCls}-status-warning`]: {\n        '&, & input, & textarea': {\n          color: token.colorWarning\n        }\n      }\n    }, extraStyles)\n  };\n};\n/* ============== Filled ============== */\nconst genBaseFilledStyle = (token, options) => {\n  var _a;\n  return {\n    background: options.bg,\n    borderWidth: token.lineWidth,\n    borderStyle: token.lineType,\n    borderColor: 'transparent',\n    'input&, & input, textarea&, & textarea': {\n      color: (_a = options === null || options === void 0 ? void 0 : options.inputColor) !== null && _a !== void 0 ? _a : 'unset'\n    },\n    '&:hover': {\n      background: options.hoverBg\n    },\n    '&:focus, &:focus-within': {\n      outline: 0,\n      borderColor: options.activeBorderColor,\n      backgroundColor: token.activeBg\n    }\n  };\n};\nconst genFilledStatusStyle = (token, options) => ({\n  [`&${token.componentCls}-status-${options.status}:not(${token.componentCls}-disabled)`]: Object.assign(Object.assign({}, genBaseFilledStyle(token, options)), {\n    [`${token.componentCls}-prefix, ${token.componentCls}-suffix`]: {\n      color: options.affixColor\n    }\n  })\n});\nexport const genFilledStyle = (token, extraStyles) => ({\n  '&-filled': Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, genBaseFilledStyle(token, {\n    bg: token.colorFillTertiary,\n    hoverBg: token.colorFillSecondary,\n    activeBorderColor: token.activeBorderColor\n  })), {\n    [`&${token.componentCls}-disabled, &[disabled]`]: Object.assign({}, genDisabledStyle(token))\n  }), genFilledStatusStyle(token, {\n    status: 'error',\n    bg: token.colorErrorBg,\n    hoverBg: token.colorErrorBgHover,\n    activeBorderColor: token.colorError,\n    inputColor: token.colorErrorText,\n    affixColor: token.colorError\n  })), genFilledStatusStyle(token, {\n    status: 'warning',\n    bg: token.colorWarningBg,\n    hoverBg: token.colorWarningBgHover,\n    activeBorderColor: token.colorWarning,\n    inputColor: token.colorWarningText,\n    affixColor: token.colorWarning\n  })), extraStyles)\n});\nconst genFilledGroupStatusStyle = (token, options) => ({\n  [`&${token.componentCls}-group-wrapper-status-${options.status}`]: {\n    [`${token.componentCls}-group-addon`]: {\n      background: options.addonBg,\n      color: options.addonColor\n    }\n  }\n});\nexport const genFilledGroupStyle = token => ({\n  '&-filled': Object.assign(Object.assign(Object.assign({\n    [`${token.componentCls}-group-addon`]: {\n      background: token.colorFillTertiary,\n      '&:last-child': {\n        position: 'static'\n      }\n    }\n  }, genFilledGroupStatusStyle(token, {\n    status: 'error',\n    addonBg: token.colorErrorBg,\n    addonColor: token.colorErrorText\n  })), genFilledGroupStatusStyle(token, {\n    status: 'warning',\n    addonBg: token.colorWarningBg,\n    addonColor: token.colorWarningText\n  })), {\n    [`&${token.componentCls}-group-wrapper-disabled`]: {\n      [`${token.componentCls}-group`]: {\n        '&-addon': {\n          background: token.colorFillTertiary,\n          color: token.colorTextDisabled\n        },\n        '&-addon:first-child': {\n          borderInlineStart: `${unit(token.lineWidth)} ${token.lineType} ${token.colorBorder}`,\n          borderTop: `${unit(token.lineWidth)} ${token.lineType} ${token.colorBorder}`,\n          borderBottom: `${unit(token.lineWidth)} ${token.lineType} ${token.colorBorder}`\n        },\n        '&-addon:last-child': {\n          borderInlineEnd: `${unit(token.lineWidth)} ${token.lineType} ${token.colorBorder}`,\n          borderTop: `${unit(token.lineWidth)} ${token.lineType} ${token.colorBorder}`,\n          borderBottom: `${unit(token.lineWidth)} ${token.lineType} ${token.colorBorder}`\n        }\n      }\n    }\n  })\n});\n/* ============== Underlined ============== */\n// https://github.com/ant-design/ant-design/issues/51379\nexport const genBaseUnderlinedStyle = (token, options) => ({\n  background: token.colorBgContainer,\n  borderWidth: `${unit(token.lineWidth)} 0`,\n  borderStyle: `${token.lineType} none`,\n  borderColor: `transparent transparent ${options.borderColor} transparent`,\n  borderRadius: 0,\n  '&:hover': {\n    borderColor: `transparent transparent ${options.borderColor} transparent`,\n    backgroundColor: token.hoverBg\n  },\n  '&:focus, &:focus-within': {\n    borderColor: `transparent transparent ${options.borderColor} transparent`,\n    outline: 0,\n    backgroundColor: token.activeBg\n  }\n});\nconst genUnderlinedStatusStyle = (token, options) => ({\n  [`&${token.componentCls}-status-${options.status}:not(${token.componentCls}-disabled)`]: Object.assign(Object.assign({}, genBaseUnderlinedStyle(token, options)), {\n    [`${token.componentCls}-prefix, ${token.componentCls}-suffix`]: {\n      color: options.affixColor\n    }\n  }),\n  [`&${token.componentCls}-status-${options.status}${token.componentCls}-disabled`]: {\n    borderColor: `transparent transparent ${options.borderColor} transparent`\n  }\n});\nexport const genUnderlinedStyle = (token, extraStyles) => ({\n  '&-underlined': Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, genBaseUnderlinedStyle(token, {\n    borderColor: token.colorBorder,\n    hoverBorderColor: token.hoverBorderColor,\n    activeBorderColor: token.activeBorderColor,\n    activeShadow: token.activeShadow\n  })), {\n    // >>>>> Disabled\n    [`&${token.componentCls}-disabled, &[disabled]`]: {\n      color: token.colorTextDisabled,\n      boxShadow: 'none',\n      cursor: 'not-allowed',\n      '&:hover': {\n        borderColor: `transparent transparent ${token.colorBorder} transparent`\n      }\n    },\n    'input[disabled], textarea[disabled]': {\n      cursor: 'not-allowed'\n    }\n  }), genUnderlinedStatusStyle(token, {\n    status: 'error',\n    borderColor: token.colorError,\n    hoverBorderColor: token.colorErrorBorderHover,\n    activeBorderColor: token.colorError,\n    activeShadow: token.errorActiveShadow,\n    affixColor: token.colorError\n  })), genUnderlinedStatusStyle(token, {\n    status: 'warning',\n    borderColor: token.colorWarning,\n    hoverBorderColor: token.colorWarningBorderHover,\n    activeBorderColor: token.colorWarning,\n    activeShadow: token.warningActiveShadow,\n    affixColor: token.colorWarning\n  })), extraStyles)\n});","import { unit } from '@ant-design/cssinjs';\nimport { clearFix, resetComponent } from '../../style';\nimport { genCompactItemStyle } from '../../style/compact-item';\nimport { genStyleHooks, mergeToken } from '../../theme/internal';\nimport { initComponentToken, initInputToken } from './token';\nimport { genBorderlessStyle, genFilledGroupStyle, genFilledStyle, genOutlinedGroupStyle, genOutlinedStyle, genUnderlinedStyle } from './variants';\nexport { initComponentToken, initInputToken };\nexport const genPlaceholderStyle = color => ({\n  // Firefox\n  '&::-moz-placeholder': {\n    opacity: 1\n  },\n  '&::placeholder': {\n    color,\n    userSelect: 'none' // https://github.com/ant-design/ant-design/pull/32639\n  },\n  '&:placeholder-shown': {\n    textOverflow: 'ellipsis'\n  }\n});\nexport const genActiveStyle = token => ({\n  borderColor: token.activeBorderColor,\n  boxShadow: token.activeShadow,\n  outline: 0,\n  backgroundColor: token.activeBg\n});\nconst genInputLargeStyle = token => {\n  const {\n    paddingBlockLG,\n    lineHeightLG,\n    borderRadiusLG,\n    paddingInlineLG\n  } = token;\n  return {\n    padding: `${unit(paddingBlockLG)} ${unit(paddingInlineLG)}`,\n    fontSize: token.inputFontSizeLG,\n    lineHeight: lineHeightLG,\n    borderRadius: borderRadiusLG\n  };\n};\nexport const genInputSmallStyle = token => ({\n  padding: `${unit(token.paddingBlockSM)} ${unit(token.paddingInlineSM)}`,\n  fontSize: token.inputFontSizeSM,\n  borderRadius: token.borderRadiusSM\n});\nexport const genBasicInputStyle = token => Object.assign(Object.assign({\n  position: 'relative',\n  display: 'inline-block',\n  width: '100%',\n  minWidth: 0,\n  padding: `${unit(token.paddingBlock)} ${unit(token.paddingInline)}`,\n  color: token.colorText,\n  fontSize: token.inputFontSize,\n  lineHeight: token.lineHeight,\n  borderRadius: token.borderRadius,\n  transition: `all ${token.motionDurationMid}`\n}, genPlaceholderStyle(token.colorTextPlaceholder)), {\n  // Size\n  '&-lg': Object.assign({}, genInputLargeStyle(token)),\n  '&-sm': Object.assign({}, genInputSmallStyle(token)),\n  // RTL\n  '&-rtl, &-textarea-rtl': {\n    direction: 'rtl'\n  }\n});\nexport const genInputGroupStyle = token => {\n  const {\n    componentCls,\n    antCls\n  } = token;\n  return {\n    position: 'relative',\n    display: 'table',\n    width: '100%',\n    borderCollapse: 'separate',\n    borderSpacing: 0,\n    // Undo padding and float of grid classes\n    \"&[class*='col-']\": {\n      paddingInlineEnd: token.paddingXS,\n      '&:last-child': {\n        paddingInlineEnd: 0\n      }\n    },\n    // Sizing options\n    [`&-lg ${componentCls}, &-lg > ${componentCls}-group-addon`]: Object.assign({}, genInputLargeStyle(token)),\n    [`&-sm ${componentCls}, &-sm > ${componentCls}-group-addon`]: Object.assign({}, genInputSmallStyle(token)),\n    // Fix https://github.com/ant-design/ant-design/issues/5754\n    [`&-lg ${antCls}-select-single ${antCls}-select-selector`]: {\n      height: token.controlHeightLG\n    },\n    [`&-sm ${antCls}-select-single ${antCls}-select-selector`]: {\n      height: token.controlHeightSM\n    },\n    [`> ${componentCls}`]: {\n      display: 'table-cell',\n      '&:not(:first-child):not(:last-child)': {\n        borderRadius: 0\n      }\n    },\n    [`${componentCls}-group`]: {\n      '&-addon, &-wrap': {\n        display: 'table-cell',\n        width: 1,\n        whiteSpace: 'nowrap',\n        verticalAlign: 'middle',\n        '&:not(:first-child):not(:last-child)': {\n          borderRadius: 0\n        }\n      },\n      '&-wrap > *': {\n        display: 'block !important'\n      },\n      '&-addon': {\n        position: 'relative',\n        padding: `0 ${unit(token.paddingInline)}`,\n        color: token.colorText,\n        fontWeight: 'normal',\n        fontSize: token.inputFontSize,\n        textAlign: 'center',\n        borderRadius: token.borderRadius,\n        transition: `all ${token.motionDurationSlow}`,\n        lineHeight: 1,\n        // Reset Select's style in addon\n        [`${antCls}-select`]: {\n          margin: `${unit(token.calc(token.paddingBlock).add(1).mul(-1).equal())} ${unit(token.calc(token.paddingInline).mul(-1).equal())}`,\n          [`&${antCls}-select-single:not(${antCls}-select-customize-input):not(${antCls}-pagination-size-changer)`]: {\n            [`${antCls}-select-selector`]: {\n              backgroundColor: 'inherit',\n              border: `${unit(token.lineWidth)} ${token.lineType} transparent`,\n              boxShadow: 'none'\n            }\n          }\n        },\n        // https://github.com/ant-design/ant-design/issues/31333\n        [`${antCls}-cascader-picker`]: {\n          margin: `-9px ${unit(token.calc(token.paddingInline).mul(-1).equal())}`,\n          backgroundColor: 'transparent',\n          [`${antCls}-cascader-input`]: {\n            textAlign: 'start',\n            border: 0,\n            boxShadow: 'none'\n          }\n        }\n      }\n    },\n    [componentCls]: {\n      width: '100%',\n      marginBottom: 0,\n      textAlign: 'inherit',\n      '&:focus': {\n        zIndex: 1,\n        // Fix https://gw.alipayobjects.com/zos/rmsportal/DHNpoqfMXSfrSnlZvhsJ.png\n        borderInlineEndWidth: 1\n      },\n      '&:hover': {\n        zIndex: 1,\n        borderInlineEndWidth: 1,\n        [`${componentCls}-search-with-button &`]: {\n          zIndex: 0\n        }\n      }\n    },\n    // Reset rounded corners\n    [`> ${componentCls}:first-child, ${componentCls}-group-addon:first-child`]: {\n      borderStartEndRadius: 0,\n      borderEndEndRadius: 0,\n      // Reset Select's style in addon\n      [`${antCls}-select ${antCls}-select-selector`]: {\n        borderStartEndRadius: 0,\n        borderEndEndRadius: 0\n      }\n    },\n    [`> ${componentCls}-affix-wrapper`]: {\n      [`&:not(:first-child) ${componentCls}`]: {\n        borderStartStartRadius: 0,\n        borderEndStartRadius: 0\n      },\n      [`&:not(:last-child) ${componentCls}`]: {\n        borderStartEndRadius: 0,\n        borderEndEndRadius: 0\n      }\n    },\n    [`> ${componentCls}:last-child, ${componentCls}-group-addon:last-child`]: {\n      borderStartStartRadius: 0,\n      borderEndStartRadius: 0,\n      // Reset Select's style in addon\n      [`${antCls}-select ${antCls}-select-selector`]: {\n        borderStartStartRadius: 0,\n        borderEndStartRadius: 0\n      }\n    },\n    [`${componentCls}-affix-wrapper`]: {\n      '&:not(:last-child)': {\n        borderStartEndRadius: 0,\n        borderEndEndRadius: 0,\n        [`${componentCls}-search &`]: {\n          borderStartStartRadius: token.borderRadius,\n          borderEndStartRadius: token.borderRadius\n        }\n      },\n      [`&:not(:first-child), ${componentCls}-search &:not(:first-child)`]: {\n        borderStartStartRadius: 0,\n        borderEndStartRadius: 0\n      }\n    },\n    [`&${componentCls}-group-compact`]: Object.assign(Object.assign({\n      display: 'block'\n    }, clearFix()), {\n      [`${componentCls}-group-addon, ${componentCls}-group-wrap, > ${componentCls}`]: {\n        '&:not(:first-child):not(:last-child)': {\n          borderInlineEndWidth: token.lineWidth,\n          '&:hover, &:focus': {\n            zIndex: 1\n          }\n        }\n      },\n      '& > *': {\n        display: 'inline-flex',\n        float: 'none',\n        verticalAlign: 'top',\n        // https://github.com/ant-design/ant-design-pro/issues/139\n        borderRadius: 0\n      },\n      [`\n        & > ${componentCls}-affix-wrapper,\n        & > ${componentCls}-number-affix-wrapper,\n        & > ${antCls}-picker-range\n      `]: {\n        display: 'inline-flex'\n      },\n      '& > *:not(:last-child)': {\n        marginInlineEnd: token.calc(token.lineWidth).mul(-1).equal(),\n        borderInlineEndWidth: token.lineWidth\n      },\n      // Undo float for .ant-input-group .ant-input\n      [componentCls]: {\n        float: 'none'\n      },\n      // reset border for Select, DatePicker, AutoComplete, Cascader, Mention, TimePicker, Input\n      [`& > ${antCls}-select > ${antCls}-select-selector,\n      & > ${antCls}-select-auto-complete ${componentCls},\n      & > ${antCls}-cascader-picker ${componentCls},\n      & > ${componentCls}-group-wrapper ${componentCls}`]: {\n        borderInlineEndWidth: token.lineWidth,\n        borderRadius: 0,\n        '&:hover, &:focus': {\n          zIndex: 1\n        }\n      },\n      [`& > ${antCls}-select-focused`]: {\n        zIndex: 1\n      },\n      // update z-index for arrow icon\n      [`& > ${antCls}-select > ${antCls}-select-arrow`]: {\n        zIndex: 1 // https://github.com/ant-design/ant-design/issues/20371\n      },\n      [`& > *:first-child,\n      & > ${antCls}-select:first-child > ${antCls}-select-selector,\n      & > ${antCls}-select-auto-complete:first-child ${componentCls},\n      & > ${antCls}-cascader-picker:first-child ${componentCls}`]: {\n        borderStartStartRadius: token.borderRadius,\n        borderEndStartRadius: token.borderRadius\n      },\n      [`& > *:last-child,\n      & > ${antCls}-select:last-child > ${antCls}-select-selector,\n      & > ${antCls}-cascader-picker:last-child ${componentCls},\n      & > ${antCls}-cascader-picker-focused:last-child ${componentCls}`]: {\n        borderInlineEndWidth: token.lineWidth,\n        borderStartEndRadius: token.borderRadius,\n        borderEndEndRadius: token.borderRadius\n      },\n      // https://github.com/ant-design/ant-design/issues/12493\n      [`& > ${antCls}-select-auto-complete ${componentCls}`]: {\n        verticalAlign: 'top'\n      },\n      [`${componentCls}-group-wrapper + ${componentCls}-group-wrapper`]: {\n        marginInlineStart: token.calc(token.lineWidth).mul(-1).equal(),\n        [`${componentCls}-affix-wrapper`]: {\n          borderRadius: 0\n        }\n      },\n      [`${componentCls}-group-wrapper:not(:last-child)`]: {\n        [`&${componentCls}-search > ${componentCls}-group`]: {\n          [`& > ${componentCls}-group-addon > ${componentCls}-search-button`]: {\n            borderRadius: 0\n          },\n          [`& > ${componentCls}`]: {\n            borderStartStartRadius: token.borderRadius,\n            borderStartEndRadius: 0,\n            borderEndEndRadius: 0,\n            borderEndStartRadius: token.borderRadius\n          }\n        }\n      }\n    })\n  };\n};\nexport const genInputStyle = token => {\n  const {\n    componentCls,\n    controlHeightSM,\n    lineWidth,\n    calc\n  } = token;\n  const FIXED_CHROME_COLOR_HEIGHT = 16;\n  const colorSmallPadding = calc(controlHeightSM).sub(calc(lineWidth).mul(2)).sub(FIXED_CHROME_COLOR_HEIGHT).div(2).equal();\n  return {\n    [componentCls]: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, resetComponent(token)), genBasicInputStyle(token)), genOutlinedStyle(token)), genFilledStyle(token)), genBorderlessStyle(token)), genUnderlinedStyle(token)), {\n      '&[type=\"color\"]': {\n        height: token.controlHeight,\n        [`&${componentCls}-lg`]: {\n          height: token.controlHeightLG\n        },\n        [`&${componentCls}-sm`]: {\n          height: controlHeightSM,\n          paddingTop: colorSmallPadding,\n          paddingBottom: colorSmallPadding\n        }\n      },\n      '&[type=\"search\"]::-webkit-search-cancel-button, &[type=\"search\"]::-webkit-search-decoration': {\n        appearance: 'none'\n      }\n    })\n  };\n};\nconst genAllowClearStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    // ========================= Input =========================\n    [`${componentCls}-clear-icon`]: {\n      margin: 0,\n      padding: 0,\n      lineHeight: 0,\n      color: token.colorTextQuaternary,\n      fontSize: token.fontSizeIcon,\n      verticalAlign: -1,\n      // https://github.com/ant-design/ant-design/pull/18151\n      // https://codesandbox.io/s/wizardly-sun-u10br\n      cursor: 'pointer',\n      transition: `color ${token.motionDurationSlow}`,\n      border: 'none',\n      outline: 'none',\n      backgroundColor: 'transparent',\n      '&:hover': {\n        color: token.colorIcon\n      },\n      '&:active': {\n        color: token.colorText\n      },\n      '&-hidden': {\n        visibility: 'hidden'\n      },\n      '&-has-suffix': {\n        margin: `0 ${unit(token.inputAffixPadding)}`\n      }\n    }\n  };\n};\nexport const genAffixStyle = token => {\n  const {\n    componentCls,\n    inputAffixPadding,\n    colorTextDescription,\n    motionDurationSlow,\n    colorIcon,\n    colorIconHover,\n    iconCls\n  } = token;\n  const affixCls = `${componentCls}-affix-wrapper`;\n  const affixClsDisabled = `${componentCls}-affix-wrapper-disabled`;\n  return {\n    [affixCls]: Object.assign(Object.assign(Object.assign(Object.assign({}, genBasicInputStyle(token)), {\n      display: 'inline-flex',\n      [`&:not(${componentCls}-disabled):hover`]: {\n        zIndex: 1,\n        [`${componentCls}-search-with-button &`]: {\n          zIndex: 0\n        }\n      },\n      '&-focused, &:focus': {\n        zIndex: 1\n      },\n      [`> input${componentCls}`]: {\n        padding: 0\n      },\n      [`> input${componentCls}, > textarea${componentCls}`]: {\n        fontSize: 'inherit',\n        border: 'none',\n        borderRadius: 0,\n        outline: 'none',\n        background: 'transparent',\n        color: 'inherit',\n        '&::-ms-reveal': {\n          display: 'none'\n        },\n        '&:focus': {\n          boxShadow: 'none !important'\n        }\n      },\n      '&::before': {\n        display: 'inline-block',\n        width: 0,\n        visibility: 'hidden',\n        content: '\"\\\\a0\"'\n      },\n      [componentCls]: {\n        '&-prefix, &-suffix': {\n          display: 'flex',\n          flex: 'none',\n          alignItems: 'center',\n          '> *:not(:last-child)': {\n            marginInlineEnd: token.paddingXS\n          }\n        },\n        '&-show-count-suffix': {\n          color: colorTextDescription,\n          direction: 'ltr'\n        },\n        '&-show-count-has-suffix': {\n          marginInlineEnd: token.paddingXXS\n        },\n        '&-prefix': {\n          marginInlineEnd: inputAffixPadding\n        },\n        '&-suffix': {\n          marginInlineStart: inputAffixPadding\n        }\n      }\n    }), genAllowClearStyle(token)), {\n      // password\n      [`${iconCls}${componentCls}-password-icon`]: {\n        color: colorIcon,\n        cursor: 'pointer',\n        transition: `all ${motionDurationSlow}`,\n        '&:hover': {\n          color: colorIconHover\n        }\n      }\n    }),\n    // 覆盖 affix-wrapper borderRadius！\n    [`${componentCls}-underlined`]: {\n      borderRadius: 0\n    },\n    [affixClsDisabled]: {\n      // password disabled\n      [`${iconCls}${componentCls}-password-icon`]: {\n        color: colorIcon,\n        cursor: 'not-allowed',\n        '&:hover': {\n          color: colorIcon\n        }\n      }\n    }\n  };\n};\nconst genGroupStyle = token => {\n  const {\n    componentCls,\n    borderRadiusLG,\n    borderRadiusSM\n  } = token;\n  return {\n    [`${componentCls}-group`]: Object.assign(Object.assign(Object.assign({}, resetComponent(token)), genInputGroupStyle(token)), {\n      '&-rtl': {\n        direction: 'rtl'\n      },\n      '&-wrapper': Object.assign(Object.assign(Object.assign({\n        display: 'inline-block',\n        width: '100%',\n        textAlign: 'start',\n        verticalAlign: 'top',\n        '&-rtl': {\n          direction: 'rtl'\n        },\n        // Size\n        '&-lg': {\n          [`${componentCls}-group-addon`]: {\n            borderRadius: borderRadiusLG,\n            fontSize: token.inputFontSizeLG\n          }\n        },\n        '&-sm': {\n          [`${componentCls}-group-addon`]: {\n            borderRadius: borderRadiusSM\n          }\n        }\n      }, genOutlinedGroupStyle(token)), genFilledGroupStyle(token)), {\n        // '&-disabled': {\n        //   [`${componentCls}-group-addon`]: {\n        //     ...genDisabledStyle(token),\n        //   },\n        // },\n        // Fix the issue of using icons in Space Compact mode\n        // https://github.com/ant-design/ant-design/issues/42122\n        [`&:not(${componentCls}-compact-first-item):not(${componentCls}-compact-last-item)${componentCls}-compact-item`]: {\n          [`${componentCls}, ${componentCls}-group-addon`]: {\n            borderRadius: 0\n          }\n        },\n        [`&:not(${componentCls}-compact-last-item)${componentCls}-compact-first-item`]: {\n          [`${componentCls}, ${componentCls}-group-addon`]: {\n            borderStartEndRadius: 0,\n            borderEndEndRadius: 0\n          }\n        },\n        [`&:not(${componentCls}-compact-first-item)${componentCls}-compact-last-item`]: {\n          [`${componentCls}, ${componentCls}-group-addon`]: {\n            borderStartStartRadius: 0,\n            borderEndStartRadius: 0\n          }\n        },\n        // Fix the issue of input use show-count param in space compact mode\n        // https://github.com/ant-design/ant-design/issues/46872\n        [`&:not(${componentCls}-compact-last-item)${componentCls}-compact-item`]: {\n          [`${componentCls}-affix-wrapper`]: {\n            borderStartEndRadius: 0,\n            borderEndEndRadius: 0\n          }\n        },\n        // Fix the issue of input use `addonAfter` param in space compact mode\n        // https://github.com/ant-design/ant-design/issues/52483\n        [`&:not(${componentCls}-compact-first-item)${componentCls}-compact-item`]: {\n          [`${componentCls}-affix-wrapper`]: {\n            borderStartStartRadius: 0,\n            borderEndStartRadius: 0\n          }\n        }\n      })\n    })\n  };\n};\nconst genSearchInputStyle = token => {\n  const {\n    componentCls,\n    antCls\n  } = token;\n  const searchPrefixCls = `${componentCls}-search`;\n  return {\n    [searchPrefixCls]: {\n      [componentCls]: {\n        '&:hover, &:focus': {\n          [`+ ${componentCls}-group-addon ${searchPrefixCls}-button:not(${antCls}-btn-color-primary):not(${antCls}-btn-variant-text)`]: {\n            borderInlineStartColor: token.colorPrimaryHover\n          }\n        }\n      },\n      [`${componentCls}-affix-wrapper`]: {\n        height: token.controlHeight,\n        borderRadius: 0\n      },\n      // fix slight height diff in Firefox:\n      // https://ant.design/components/auto-complete-cn/#auto-complete-demo-certain-category\n      [`${componentCls}-lg`]: {\n        lineHeight: token.calc(token.lineHeightLG).sub(0.0002).equal()\n      },\n      [`> ${componentCls}-group`]: {\n        [`> ${componentCls}-group-addon:last-child`]: {\n          insetInlineStart: -1,\n          padding: 0,\n          border: 0,\n          [`${searchPrefixCls}-button`]: {\n            // Fix https://github.com/ant-design/ant-design/issues/47150\n            marginInlineEnd: -1,\n            borderStartStartRadius: 0,\n            borderEndStartRadius: 0,\n            boxShadow: 'none'\n          },\n          [`${searchPrefixCls}-button:not(${antCls}-btn-color-primary)`]: {\n            color: token.colorTextDescription,\n            '&:hover': {\n              color: token.colorPrimaryHover\n            },\n            '&:active': {\n              color: token.colorPrimaryActive\n            },\n            [`&${antCls}-btn-loading::before`]: {\n              inset: 0\n            }\n          }\n        }\n      },\n      [`${searchPrefixCls}-button`]: {\n        height: token.controlHeight,\n        '&:hover, &:focus': {\n          zIndex: 1\n        }\n      },\n      '&-large': {\n        [`${componentCls}-affix-wrapper, ${searchPrefixCls}-button`]: {\n          height: token.controlHeightLG\n        }\n      },\n      '&-small': {\n        [`${componentCls}-affix-wrapper, ${searchPrefixCls}-button`]: {\n          height: token.controlHeightSM\n        }\n      },\n      '&-rtl': {\n        direction: 'rtl'\n      },\n      // ===================== Compact Item Customized Styles =====================\n      [`&${componentCls}-compact-item`]: {\n        [`&:not(${componentCls}-compact-last-item)`]: {\n          [`${componentCls}-group-addon`]: {\n            [`${componentCls}-search-button`]: {\n              marginInlineEnd: token.calc(token.lineWidth).mul(-1).equal(),\n              borderRadius: 0\n            }\n          }\n        },\n        [`&:not(${componentCls}-compact-first-item)`]: {\n          [`${componentCls},${componentCls}-affix-wrapper`]: {\n            borderRadius: 0\n          }\n        },\n        [`> ${componentCls}-group-addon ${componentCls}-search-button,\n        > ${componentCls},\n        ${componentCls}-affix-wrapper`]: {\n          '&:hover, &:focus, &:active': {\n            zIndex: 2\n          }\n        },\n        [`> ${componentCls}-affix-wrapper-focused`]: {\n          zIndex: 2\n        }\n      }\n    }\n  };\n};\n// ============================== Range ===============================\nconst genRangeStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    [`${componentCls}-out-of-range`]: {\n      [`&, & input, & textarea, ${componentCls}-show-count-suffix, ${componentCls}-data-count`]: {\n        color: token.colorError\n      }\n    }\n  };\n};\n// ============================== Export ==============================\nexport const useSharedStyle = genStyleHooks(['Input', 'Shared'], token => {\n  const inputToken = mergeToken(token, initInputToken(token));\n  return [genInputStyle(inputToken), genAffixStyle(inputToken)];\n}, initComponentToken, {\n  resetFont: false\n});\nexport default genStyleHooks(['Input', 'Component'], token => {\n  const inputToken = mergeToken(token, initInputToken(token));\n  return [genGroupStyle(inputToken), genSearchInputStyle(inputToken), genRangeStyle(inputToken),\n  // =====================================================\n  // ==             Space Compact                       ==\n  // =====================================================\n  genCompactItemStyle(inputToken)];\n}, initComponentToken, {\n  resetFont: false\n});","// This icon file is generated automatically.\nvar PlusOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M482 152h60q8 0 8 8v704q0 8-8 8h-60q-8 0-8-8V160q0-8 8-8z\" } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M192 474h672q8 0 8 8v60q0 8-8 8H160q-8 0-8-8v-60q0-8 8-8z\" } }] }, \"name\": \"plus\", \"theme\": \"outlined\" };\nexport default PlusOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport PlusOutlinedSvg from \"@ant-design/icons-svg/es/asn/PlusOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar PlusOutlined = function PlusOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: PlusOutlinedSvg\n  }));\n};\n\n/**![plus](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQ4MiAxNTJoNjBxOCAwIDggOHY3MDRxMCA4LTggOGgtNjBxLTggMC04LThWMTYwcTAtOCA4LTh6IiAvPjxwYXRoIGQ9Ik0xOTIgNDc0aDY3MnE4IDAgOCA4djYwcTAgOC04IDhIMTYwcS04IDAtOC04di02MHEwLTggOC04eiIgLz48L3N2Zz4=) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(PlusOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'PlusOutlined';\n}\nexport default RefIcon;","import { createContext } from 'react';\nexport default /*#__PURE__*/createContext(null);","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport raf from \"rc-util/es/raf\";\nimport React, { useEffect, useRef, useState } from 'react';\nvar useIndicator = function useIndicator(options) {\n  var activeTabOffset = options.activeTabOffset,\n    horizontal = options.horizontal,\n    rtl = options.rtl,\n    _options$indicator = options.indicator,\n    indicator = _options$indicator === void 0 ? {} : _options$indicator;\n  var size = indicator.size,\n    _indicator$align = indicator.align,\n    align = _indicator$align === void 0 ? 'center' : _indicator$align;\n  var _useState = useState(),\n    _useState2 = _slicedToArray(_useState, 2),\n    inkStyle = _useState2[0],\n    setInkStyle = _useState2[1];\n  var inkBarRafRef = useRef();\n  var getLength = React.useCallback(function (origin) {\n    if (typeof size === 'function') {\n      return size(origin);\n    }\n    if (typeof size === 'number') {\n      return size;\n    }\n    return origin;\n  }, [size]);\n\n  // Delay set ink style to avoid remove tab blink\n  function cleanInkBarRaf() {\n    raf.cancel(inkBarRafRef.current);\n  }\n  useEffect(function () {\n    var newInkStyle = {};\n    if (activeTabOffset) {\n      if (horizontal) {\n        newInkStyle.width = getLength(activeTabOffset.width);\n        var key = rtl ? 'right' : 'left';\n        if (align === 'start') {\n          newInkStyle[key] = activeTabOffset[key];\n        }\n        if (align === 'center') {\n          newInkStyle[key] = activeTabOffset[key] + activeTabOffset.width / 2;\n          newInkStyle.transform = rtl ? 'translateX(50%)' : 'translateX(-50%)';\n        }\n        if (align === 'end') {\n          newInkStyle[key] = activeTabOffset[key] + activeTabOffset.width;\n          newInkStyle.transform = 'translateX(-100%)';\n        }\n      } else {\n        newInkStyle.height = getLength(activeTabOffset.height);\n        if (align === 'start') {\n          newInkStyle.top = activeTabOffset.top;\n        }\n        if (align === 'center') {\n          newInkStyle.top = activeTabOffset.top + activeTabOffset.height / 2;\n          newInkStyle.transform = 'translateY(-50%)';\n        }\n        if (align === 'end') {\n          newInkStyle.top = activeTabOffset.top + activeTabOffset.height;\n          newInkStyle.transform = 'translateY(-100%)';\n        }\n      }\n    }\n    cleanInkBarRaf();\n    inkBarRafRef.current = raf(function () {\n      // Avoid jitter caused by tiny numerical differences\n      // fix https://github.com/ant-design/ant-design/issues/53378\n      var isEqual = inkStyle && newInkStyle && Object.keys(newInkStyle).every(function (key) {\n        var newValue = newInkStyle[key];\n        var oldValue = inkStyle[key];\n        return typeof newValue === 'number' && typeof oldValue === 'number' ? Math.round(newValue) === Math.round(oldValue) : newValue === oldValue;\n      });\n      if (!isEqual) {\n        setInkStyle(newInkStyle);\n      }\n    });\n    return cleanInkBarRaf;\n  }, [JSON.stringify(activeTabOffset), horizontal, rtl, align, getLength]);\n  return {\n    style: inkStyle\n  };\n};\nexport default useIndicator;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport { useMemo } from 'react';\nvar DEFAULT_SIZE = {\n  width: 0,\n  height: 0,\n  left: 0,\n  top: 0\n};\nexport default function useOffsets(tabs, tabSizes, holderScrollWidth) {\n  return useMemo(function () {\n    var _tabs$;\n    var map = new Map();\n    var lastOffset = tabSizes.get((_tabs$ = tabs[0]) === null || _tabs$ === void 0 ? void 0 : _tabs$.key) || DEFAULT_SIZE;\n    var rightOffset = lastOffset.left + lastOffset.width;\n    for (var i = 0; i < tabs.length; i += 1) {\n      var key = tabs[i].key;\n      var data = tabSizes.get(key);\n\n      // Reuse last one when not exist yet\n      if (!data) {\n        var _tabs;\n        data = tabSizes.get((_tabs = tabs[i - 1]) === null || _tabs === void 0 ? void 0 : _tabs.key) || DEFAULT_SIZE;\n      }\n      var entity = map.get(key) || _objectSpread({}, data);\n\n      // Right\n      entity.right = rightOffset - entity.left - entity.width;\n\n      // Update entity\n      map.set(key, entity);\n    }\n    return map;\n  }, [tabs.map(function (tab) {\n    return tab.key;\n  }).join('_'), tabSizes, holderScrollWidth]);\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nexport default function useSyncState(defaultState, onChange) {\n  var stateRef = React.useRef(defaultState);\n  var _React$useState = React.useState({}),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    forceUpdate = _React$useState2[1];\n  function setState(updater) {\n    var newValue = typeof updater === 'function' ? updater(stateRef.current) : updater;\n    if (newValue !== stateRef.current) {\n      onChange(newValue, stateRef.current);\n    }\n    stateRef.current = newValue;\n    forceUpdate({});\n  }\n  return [stateRef.current, setState];\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useRef, useState } from 'react';\nvar MIN_SWIPE_DISTANCE = 0.1;\nvar STOP_SWIPE_DISTANCE = 0.01;\nvar REFRESH_INTERVAL = 20;\nvar SPEED_OFF_MULTIPLE = Math.pow(0.995, REFRESH_INTERVAL);\n\n// ================================= Hook =================================\nexport default function useTouchMove(ref, onOffset) {\n  var _useState = useState(),\n    _useState2 = _slicedToArray(_useState, 2),\n    touchPosition = _useState2[0],\n    setTouchPosition = _useState2[1];\n  var _useState3 = useState(0),\n    _useState4 = _slicedToArray(_useState3, 2),\n    lastTimestamp = _useState4[0],\n    setLastTimestamp = _useState4[1];\n  var _useState5 = useState(0),\n    _useState6 = _slicedToArray(_useState5, 2),\n    lastTimeDiff = _useState6[0],\n    setLastTimeDiff = _useState6[1];\n  var _useState7 = useState(),\n    _useState8 = _slicedToArray(_useState7, 2),\n    lastOffset = _useState8[0],\n    setLastOffset = _useState8[1];\n  var motionRef = useRef();\n\n  // ========================= Events =========================\n  // >>> Touch events\n  function onTouchStart(e) {\n    var _e$touches$ = e.touches[0],\n      screenX = _e$touches$.screenX,\n      screenY = _e$touches$.screenY;\n    setTouchPosition({\n      x: screenX,\n      y: screenY\n    });\n    window.clearInterval(motionRef.current);\n  }\n  function onTouchMove(e) {\n    if (!touchPosition) return;\n\n    // e.preventDefault();\n    var _e$touches$2 = e.touches[0],\n      screenX = _e$touches$2.screenX,\n      screenY = _e$touches$2.screenY;\n    setTouchPosition({\n      x: screenX,\n      y: screenY\n    });\n    var offsetX = screenX - touchPosition.x;\n    var offsetY = screenY - touchPosition.y;\n    onOffset(offsetX, offsetY);\n    var now = Date.now();\n    setLastTimestamp(now);\n    setLastTimeDiff(now - lastTimestamp);\n    setLastOffset({\n      x: offsetX,\n      y: offsetY\n    });\n  }\n  function onTouchEnd() {\n    if (!touchPosition) return;\n    setTouchPosition(null);\n    setLastOffset(null);\n\n    // Swipe if needed\n    if (lastOffset) {\n      var distanceX = lastOffset.x / lastTimeDiff;\n      var distanceY = lastOffset.y / lastTimeDiff;\n      var absX = Math.abs(distanceX);\n      var absY = Math.abs(distanceY);\n\n      // Skip swipe if low distance\n      if (Math.max(absX, absY) < MIN_SWIPE_DISTANCE) return;\n      var currentX = distanceX;\n      var currentY = distanceY;\n      motionRef.current = window.setInterval(function () {\n        if (Math.abs(currentX) < STOP_SWIPE_DISTANCE && Math.abs(currentY) < STOP_SWIPE_DISTANCE) {\n          window.clearInterval(motionRef.current);\n          return;\n        }\n        currentX *= SPEED_OFF_MULTIPLE;\n        currentY *= SPEED_OFF_MULTIPLE;\n        onOffset(currentX * REFRESH_INTERVAL, currentY * REFRESH_INTERVAL);\n      }, REFRESH_INTERVAL);\n    }\n  }\n\n  // >>> Wheel event\n  var lastWheelDirectionRef = useRef();\n  function onWheel(e) {\n    var deltaX = e.deltaX,\n      deltaY = e.deltaY;\n\n    // Convert both to x & y since wheel only happened on PC\n    var mixed = 0;\n    var absX = Math.abs(deltaX);\n    var absY = Math.abs(deltaY);\n    if (absX === absY) {\n      mixed = lastWheelDirectionRef.current === 'x' ? deltaX : deltaY;\n    } else if (absX > absY) {\n      mixed = deltaX;\n      lastWheelDirectionRef.current = 'x';\n    } else {\n      mixed = deltaY;\n      lastWheelDirectionRef.current = 'y';\n    }\n    if (onOffset(-mixed, -mixed)) {\n      e.preventDefault();\n    }\n  }\n\n  // ========================= Effect =========================\n  var touchEventsRef = useRef(null);\n  touchEventsRef.current = {\n    onTouchStart: onTouchStart,\n    onTouchMove: onTouchMove,\n    onTouchEnd: onTouchEnd,\n    onWheel: onWheel\n  };\n  React.useEffect(function () {\n    function onProxyTouchStart(e) {\n      touchEventsRef.current.onTouchStart(e);\n    }\n    function onProxyTouchMove(e) {\n      touchEventsRef.current.onTouchMove(e);\n    }\n    function onProxyTouchEnd(e) {\n      touchEventsRef.current.onTouchEnd(e);\n    }\n    function onProxyWheel(e) {\n      touchEventsRef.current.onWheel(e);\n    }\n    document.addEventListener('touchmove', onProxyTouchMove, {\n      passive: false\n    });\n    document.addEventListener('touchend', onProxyTouchEnd, {\n      passive: true\n    });\n\n    // No need to clean up since element removed\n    ref.current.addEventListener('touchstart', onProxyTouchStart, {\n      passive: true\n    });\n    ref.current.addEventListener('wheel', onProxyWheel, {\n      passive: false\n    });\n    return function () {\n      document.removeEventListener('touchmove', onProxyTouchMove);\n      document.removeEventListener('touchend', onProxyTouchEnd);\n    };\n  }, []);\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useLayoutUpdateEffect } from \"rc-util/es/hooks/useLayoutEffect\";\nimport { useRef, useState } from 'react';\n\n/**\n * Help to merge callback with `useLayoutEffect`.\n * One time will only trigger once.\n */\nexport default function useUpdate(callback) {\n  var _useState = useState(0),\n    _useState2 = _slicedToArray(_useState, 2),\n    count = _useState2[0],\n    setCount = _useState2[1];\n  var effectRef = useRef(0);\n  var callbackRef = useRef();\n  callbackRef.current = callback;\n\n  // Trigger on `useLayoutEffect`\n  useLayoutUpdateEffect(function () {\n    var _callbackRef$current;\n    (_callbackRef$current = callbackRef.current) === null || _callbackRef$current === void 0 || _callbackRef$current.call(callbackRef);\n  }, [count]);\n\n  // Trigger to update count\n  return function () {\n    if (effectRef.current !== count) {\n      return;\n    }\n    effectRef.current += 1;\n    setCount(effectRef.current);\n  };\n}\nexport function useUpdateState(defaultState) {\n  var batchRef = useRef([]);\n  var _useState3 = useState({}),\n    _useState4 = _slicedToArray(_useState3, 2),\n    forceUpdate = _useState4[1];\n  var state = useRef(typeof defaultState === 'function' ? defaultState() : defaultState);\n  var flushUpdate = useUpdate(function () {\n    var current = state.current;\n    batchRef.current.forEach(function (callback) {\n      current = callback(current);\n    });\n    batchRef.current = [];\n    state.current = current;\n    forceUpdate({});\n  });\n  function updater(callback) {\n    batchRef.current.push(callback);\n    flushUpdate();\n  }\n  return [state.current, updater];\n}","import { useMemo } from 'react';\nvar DEFAULT_SIZE = {\n  width: 0,\n  height: 0,\n  left: 0,\n  top: 0,\n  right: 0\n};\nexport default function useVisibleRange(tabOffsets, visibleTabContentValue, transform, tabContentSizeValue, addNodeSizeValue, operationNodeSizeValue, _ref) {\n  var tabs = _ref.tabs,\n    tabPosition = _ref.tabPosition,\n    rtl = _ref.rtl;\n  var charUnit;\n  var position;\n  var transformSize;\n  if (['top', 'bottom'].includes(tabPosition)) {\n    charUnit = 'width';\n    position = rtl ? 'right' : 'left';\n    transformSize = Math.abs(transform);\n  } else {\n    charUnit = 'height';\n    position = 'top';\n    transformSize = -transform;\n  }\n  return useMemo(function () {\n    if (!tabs.length) {\n      return [0, 0];\n    }\n    var len = tabs.length;\n    var endIndex = len;\n    for (var i = 0; i < len; i += 1) {\n      var offset = tabOffsets.get(tabs[i].key) || DEFAULT_SIZE;\n      if (Math.floor(offset[position] + offset[charUnit]) > Math.floor(transformSize + visibleTabContentValue)) {\n        endIndex = i - 1;\n        break;\n      }\n    }\n    var startIndex = 0;\n    for (var _i = len - 1; _i >= 0; _i -= 1) {\n      var _offset = tabOffsets.get(tabs[_i].key) || DEFAULT_SIZE;\n      if (_offset[position] < transformSize) {\n        startIndex = _i + 1;\n        break;\n      }\n    }\n    return startIndex >= endIndex ? [0, 0] : [startIndex, endIndex];\n  }, [tabOffsets, visibleTabContentValue, tabContentSizeValue, addNodeSizeValue, operationNodeSizeValue, transformSize, tabPosition, tabs.map(function (tab) {\n    return tab.key;\n  }).join('_'), rtl]);\n}","/**\n * We trade Map as deps which may change with same value but different ref object.\n * We should make it as hash for deps\n * */\nexport function stringify(obj) {\n  var tgt;\n  if (obj instanceof Map) {\n    tgt = {};\n    obj.forEach(function (v, k) {\n      tgt[k] = v;\n    });\n  } else {\n    tgt = obj;\n  }\n  return JSON.stringify(tgt);\n}\nvar RC_TABS_DOUBLE_QUOTE = 'TABS_DQ';\nexport function genDataNodeKey(key) {\n  return String(key).replace(/\"/g, RC_TABS_DOUBLE_QUOTE);\n}\nexport function getRemovable(closable, closeIcon, editable, disabled) {\n  if (\n  // Only editable tabs can be removed\n  !editable ||\n  // Tabs cannot be removed when disabled\n  disabled ||\n  // closable is false\n  closable === false ||\n  // If closable is undefined, the remove button should be hidden when closeIcon is null or false\n  closable === undefined && (closeIcon === false || closeIcon === null)) {\n    return false;\n  }\n  return true;\n}","import * as React from 'react';\nvar AddButton = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var prefixCls = props.prefixCls,\n    editable = props.editable,\n    locale = props.locale,\n    style = props.style;\n  if (!editable || editable.showAdd === false) {\n    return null;\n  }\n  return /*#__PURE__*/React.createElement(\"button\", {\n    ref: ref,\n    type: \"button\",\n    className: \"\".concat(prefixCls, \"-nav-add\"),\n    style: style,\n    \"aria-label\": (locale === null || locale === void 0 ? void 0 : locale.addAriaLabel) || 'Add tab',\n    onClick: function onClick(event) {\n      editable.onEdit('add', {\n        event: event\n      });\n    }\n  }, editable.addIcon || '+');\n});\nexport default AddButton;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport * as React from 'react';\nvar ExtraContent = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var position = props.position,\n    prefixCls = props.prefixCls,\n    extra = props.extra;\n  if (!extra) {\n    return null;\n  }\n  var content;\n\n  // Parse extra\n  var assertExtra = {};\n  if (_typeof(extra) === 'object' && ! /*#__PURE__*/React.isValidElement(extra)) {\n    assertExtra = extra;\n  } else {\n    assertExtra.right = extra;\n  }\n  if (position === 'right') {\n    content = assertExtra.right;\n  }\n  if (position === 'left') {\n    content = assertExtra.left;\n  }\n  return content ? /*#__PURE__*/React.createElement(\"div\", {\n    className: \"\".concat(prefixCls, \"-extra-content\"),\n    ref: ref\n  }, content) : null;\n});\nif (process.env.NODE_ENV !== 'production') {\n  ExtraContent.displayName = 'ExtraContent';\n}\nexport default ExtraContent;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport classNames from 'classnames';\nimport Dropdown from 'rc-dropdown';\nimport Menu, { MenuItem } from 'rc-menu';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { getRemovable } from \"../util\";\nimport AddButton from \"./AddButton\";\nvar OperationNode = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var prefixCls = props.prefixCls,\n    id = props.id,\n    tabs = props.tabs,\n    locale = props.locale,\n    mobile = props.mobile,\n    _props$more = props.more,\n    moreProps = _props$more === void 0 ? {} : _props$more,\n    style = props.style,\n    className = props.className,\n    editable = props.editable,\n    tabBarGutter = props.tabBarGutter,\n    rtl = props.rtl,\n    removeAriaLabel = props.removeAriaLabel,\n    onTabClick = props.onTabClick,\n    getPopupContainer = props.getPopupContainer,\n    popupClassName = props.popupClassName;\n  // ======================== Dropdown ========================\n  var _useState = useState(false),\n    _useState2 = _slicedToArray(_useState, 2),\n    open = _useState2[0],\n    setOpen = _useState2[1];\n  var _useState3 = useState(null),\n    _useState4 = _slicedToArray(_useState3, 2),\n    selectedKey = _useState4[0],\n    setSelectedKey = _useState4[1];\n  var _moreProps$icon = moreProps.icon,\n    moreIcon = _moreProps$icon === void 0 ? 'More' : _moreProps$icon;\n  var popupId = \"\".concat(id, \"-more-popup\");\n  var dropdownPrefix = \"\".concat(prefixCls, \"-dropdown\");\n  var selectedItemId = selectedKey !== null ? \"\".concat(popupId, \"-\").concat(selectedKey) : null;\n  var dropdownAriaLabel = locale === null || locale === void 0 ? void 0 : locale.dropdownAriaLabel;\n  function onRemoveTab(event, key) {\n    event.preventDefault();\n    event.stopPropagation();\n    editable.onEdit('remove', {\n      key: key,\n      event: event\n    });\n  }\n  var menu = /*#__PURE__*/React.createElement(Menu, {\n    onClick: function onClick(_ref) {\n      var key = _ref.key,\n        domEvent = _ref.domEvent;\n      onTabClick(key, domEvent);\n      setOpen(false);\n    },\n    prefixCls: \"\".concat(dropdownPrefix, \"-menu\"),\n    id: popupId,\n    tabIndex: -1,\n    role: \"listbox\",\n    \"aria-activedescendant\": selectedItemId,\n    selectedKeys: [selectedKey],\n    \"aria-label\": dropdownAriaLabel !== undefined ? dropdownAriaLabel : 'expanded dropdown'\n  }, tabs.map(function (tab) {\n    var closable = tab.closable,\n      disabled = tab.disabled,\n      closeIcon = tab.closeIcon,\n      key = tab.key,\n      label = tab.label;\n    var removable = getRemovable(closable, closeIcon, editable, disabled);\n    return /*#__PURE__*/React.createElement(MenuItem, {\n      key: key,\n      id: \"\".concat(popupId, \"-\").concat(key),\n      role: \"option\",\n      \"aria-controls\": id && \"\".concat(id, \"-panel-\").concat(key),\n      disabled: disabled\n    }, /*#__PURE__*/React.createElement(\"span\", null, label), removable && /*#__PURE__*/React.createElement(\"button\", {\n      type: \"button\",\n      \"aria-label\": removeAriaLabel || 'remove',\n      tabIndex: 0,\n      className: \"\".concat(dropdownPrefix, \"-menu-item-remove\"),\n      onClick: function onClick(e) {\n        e.stopPropagation();\n        onRemoveTab(e, key);\n      }\n    }, closeIcon || editable.removeIcon || '×'));\n  }));\n  function selectOffset(offset) {\n    var enabledTabs = tabs.filter(function (tab) {\n      return !tab.disabled;\n    });\n    var selectedIndex = enabledTabs.findIndex(function (tab) {\n      return tab.key === selectedKey;\n    }) || 0;\n    var len = enabledTabs.length;\n    for (var i = 0; i < len; i += 1) {\n      selectedIndex = (selectedIndex + offset + len) % len;\n      var tab = enabledTabs[selectedIndex];\n      if (!tab.disabled) {\n        setSelectedKey(tab.key);\n        return;\n      }\n    }\n  }\n  function onKeyDown(e) {\n    var which = e.which;\n    if (!open) {\n      if ([KeyCode.DOWN, KeyCode.SPACE, KeyCode.ENTER].includes(which)) {\n        setOpen(true);\n        e.preventDefault();\n      }\n      return;\n    }\n    switch (which) {\n      case KeyCode.UP:\n        selectOffset(-1);\n        e.preventDefault();\n        break;\n      case KeyCode.DOWN:\n        selectOffset(1);\n        e.preventDefault();\n        break;\n      case KeyCode.ESC:\n        setOpen(false);\n        break;\n      case KeyCode.SPACE:\n      case KeyCode.ENTER:\n        if (selectedKey !== null) {\n          onTabClick(selectedKey, e);\n        }\n        break;\n    }\n  }\n\n  // ========================= Effect =========================\n  useEffect(function () {\n    // We use query element here to avoid React strict warning\n    var ele = document.getElementById(selectedItemId);\n    if (ele && ele.scrollIntoView) {\n      ele.scrollIntoView(false);\n    }\n  }, [selectedKey]);\n  useEffect(function () {\n    if (!open) {\n      setSelectedKey(null);\n    }\n  }, [open]);\n\n  // ========================= Render =========================\n  var moreStyle = _defineProperty({}, rtl ? 'marginRight' : 'marginLeft', tabBarGutter);\n  if (!tabs.length) {\n    moreStyle.visibility = 'hidden';\n    moreStyle.order = 1;\n  }\n  var overlayClassName = classNames(_defineProperty({}, \"\".concat(dropdownPrefix, \"-rtl\"), rtl));\n  var moreNode = mobile ? null : /*#__PURE__*/React.createElement(Dropdown, _extends({\n    prefixCls: dropdownPrefix,\n    overlay: menu,\n    visible: tabs.length ? open : false,\n    onVisibleChange: setOpen,\n    overlayClassName: classNames(overlayClassName, popupClassName),\n    mouseEnterDelay: 0.1,\n    mouseLeaveDelay: 0.1,\n    getPopupContainer: getPopupContainer\n  }, moreProps), /*#__PURE__*/React.createElement(\"button\", {\n    type: \"button\",\n    className: \"\".concat(prefixCls, \"-nav-more\"),\n    style: moreStyle,\n    \"aria-haspopup\": \"listbox\",\n    \"aria-controls\": popupId,\n    id: \"\".concat(id, \"-more\"),\n    \"aria-expanded\": open,\n    onKeyDown: onKeyDown\n  }, moreIcon));\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(\"\".concat(prefixCls, \"-nav-operations\"), className),\n    style: style,\n    ref: ref\n  }, moreNode, /*#__PURE__*/React.createElement(AddButton, {\n    prefixCls: prefixCls,\n    locale: locale,\n    editable: editable\n  }));\n});\nexport default /*#__PURE__*/React.memo(OperationNode, function (_, next) {\n  return (\n    // https://github.com/ant-design/ant-design/issues/32544\n    // We'd better remove syntactic sugar in `rc-menu` since this has perf issue\n    next.tabMoving\n  );\n});","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { genDataNodeKey, getRemovable } from \"../util\";\nvar TabNode = function TabNode(props) {\n  var prefixCls = props.prefixCls,\n    id = props.id,\n    active = props.active,\n    focus = props.focus,\n    _props$tab = props.tab,\n    key = _props$tab.key,\n    label = _props$tab.label,\n    disabled = _props$tab.disabled,\n    closeIcon = _props$tab.closeIcon,\n    icon = _props$tab.icon,\n    closable = props.closable,\n    renderWrapper = props.renderWrapper,\n    removeAriaLabel = props.removeAriaLabel,\n    editable = props.editable,\n    onClick = props.onClick,\n    onFocus = props.onFocus,\n    onBlur = props.onBlur,\n    onKeyDown = props.onKeyDown,\n    onMouseDown = props.onMouseDown,\n    onMouseUp = props.onMouseUp,\n    style = props.style,\n    tabCount = props.tabCount,\n    currentPosition = props.currentPosition;\n  var tabPrefix = \"\".concat(prefixCls, \"-tab\");\n  var removable = getRemovable(closable, closeIcon, editable, disabled);\n  function onInternalClick(e) {\n    if (disabled) {\n      return;\n    }\n    onClick(e);\n  }\n  function onRemoveTab(event) {\n    event.preventDefault();\n    event.stopPropagation();\n    editable.onEdit('remove', {\n      key: key,\n      event: event\n    });\n  }\n  var labelNode = React.useMemo(function () {\n    return icon && typeof label === 'string' ? /*#__PURE__*/React.createElement(\"span\", null, label) : label;\n  }, [label, icon]);\n  var btnRef = React.useRef(null);\n  React.useEffect(function () {\n    if (focus && btnRef.current) {\n      btnRef.current.focus();\n    }\n  }, [focus]);\n  var node = /*#__PURE__*/React.createElement(\"div\", {\n    key: key,\n    \"data-node-key\": genDataNodeKey(key),\n    className: classNames(tabPrefix, _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, \"\".concat(tabPrefix, \"-with-remove\"), removable), \"\".concat(tabPrefix, \"-active\"), active), \"\".concat(tabPrefix, \"-disabled\"), disabled), \"\".concat(tabPrefix, \"-focus\"), focus)),\n    style: style,\n    onClick: onInternalClick\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    ref: btnRef,\n    role: \"tab\",\n    \"aria-selected\": active,\n    id: id && \"\".concat(id, \"-tab-\").concat(key),\n    className: \"\".concat(tabPrefix, \"-btn\"),\n    \"aria-controls\": id && \"\".concat(id, \"-panel-\").concat(key),\n    \"aria-disabled\": disabled,\n    tabIndex: disabled ? null : active ? 0 : -1,\n    onClick: function onClick(e) {\n      e.stopPropagation();\n      onInternalClick(e);\n    },\n    onKeyDown: onKeyDown,\n    onMouseDown: onMouseDown,\n    onMouseUp: onMouseUp,\n    onFocus: onFocus,\n    onBlur: onBlur\n  }, focus && /*#__PURE__*/React.createElement(\"div\", {\n    \"aria-live\": \"polite\",\n    style: {\n      width: 0,\n      height: 0,\n      position: 'absolute',\n      overflow: 'hidden',\n      opacity: 0\n    }\n  }, \"Tab \".concat(currentPosition, \" of \").concat(tabCount)), icon && /*#__PURE__*/React.createElement(\"span\", {\n    className: \"\".concat(tabPrefix, \"-icon\")\n  }, icon), label && labelNode), removable && /*#__PURE__*/React.createElement(\"button\", {\n    type: \"button\",\n    role: \"tab\",\n    \"aria-label\": removeAriaLabel || 'remove',\n    tabIndex: active ? 0 : -1,\n    className: \"\".concat(tabPrefix, \"-remove\"),\n    onClick: function onClick(e) {\n      e.stopPropagation();\n      onRemoveTab(e);\n    }\n  }, closeIcon || editable.removeIcon || '×'));\n  return renderWrapper ? renderWrapper(node) : node;\n};\nexport default TabNode;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\n/* eslint-disable react-hooks/exhaustive-deps */\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport { useComposeRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport { useEffect, useRef, useState } from 'react';\nimport TabContext from \"../TabContext\";\nimport useIndicator from \"../hooks/useIndicator\";\nimport useOffsets from \"../hooks/useOffsets\";\nimport useSyncState from \"../hooks/useSyncState\";\nimport useTouchMove from \"../hooks/useTouchMove\";\nimport useUpdate, { useUpdateState } from \"../hooks/useUpdate\";\nimport useVisibleRange from \"../hooks/useVisibleRange\";\nimport { genDataNodeKey, getRemovable, stringify } from \"../util\";\nimport AddButton from \"./AddButton\";\nimport ExtraContent from \"./ExtraContent\";\nimport OperationNode from \"./OperationNode\";\nimport TabNode from \"./TabNode\";\nvar getTabSize = function getTabSize(tab, containerRect) {\n  // tabListRef\n  var offsetWidth = tab.offsetWidth,\n    offsetHeight = tab.offsetHeight,\n    offsetTop = tab.offsetTop,\n    offsetLeft = tab.offsetLeft;\n  var _tab$getBoundingClien = tab.getBoundingClientRect(),\n    width = _tab$getBoundingClien.width,\n    height = _tab$getBoundingClien.height,\n    left = _tab$getBoundingClien.left,\n    top = _tab$getBoundingClien.top;\n\n  // Use getBoundingClientRect to avoid decimal inaccuracy\n  if (Math.abs(width - offsetWidth) < 1) {\n    return [width, height, left - containerRect.left, top - containerRect.top];\n  }\n  return [offsetWidth, offsetHeight, offsetLeft, offsetTop];\n};\nvar getSize = function getSize(refObj) {\n  var _ref = refObj.current || {},\n    _ref$offsetWidth = _ref.offsetWidth,\n    offsetWidth = _ref$offsetWidth === void 0 ? 0 : _ref$offsetWidth,\n    _ref$offsetHeight = _ref.offsetHeight,\n    offsetHeight = _ref$offsetHeight === void 0 ? 0 : _ref$offsetHeight;\n\n  // Use getBoundingClientRect to avoid decimal inaccuracy\n  if (refObj.current) {\n    var _refObj$current$getBo = refObj.current.getBoundingClientRect(),\n      width = _refObj$current$getBo.width,\n      height = _refObj$current$getBo.height;\n    if (Math.abs(width - offsetWidth) < 1) {\n      return [width, height];\n    }\n  }\n  return [offsetWidth, offsetHeight];\n};\n\n/**\n * Convert `SizeInfo` to unit value. Such as [123, 456] with `top` position get `123`\n */\nvar getUnitValue = function getUnitValue(size, tabPositionTopOrBottom) {\n  return size[tabPositionTopOrBottom ? 0 : 1];\n};\nvar TabNavList = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var className = props.className,\n    style = props.style,\n    id = props.id,\n    animated = props.animated,\n    activeKey = props.activeKey,\n    rtl = props.rtl,\n    extra = props.extra,\n    editable = props.editable,\n    locale = props.locale,\n    tabPosition = props.tabPosition,\n    tabBarGutter = props.tabBarGutter,\n    children = props.children,\n    onTabClick = props.onTabClick,\n    onTabScroll = props.onTabScroll,\n    indicator = props.indicator;\n  var _React$useContext = React.useContext(TabContext),\n    prefixCls = _React$useContext.prefixCls,\n    tabs = _React$useContext.tabs;\n  var containerRef = useRef(null);\n  var extraLeftRef = useRef(null);\n  var extraRightRef = useRef(null);\n  var tabsWrapperRef = useRef(null);\n  var tabListRef = useRef(null);\n  var operationsRef = useRef(null);\n  var innerAddButtonRef = useRef(null);\n  var tabPositionTopOrBottom = tabPosition === 'top' || tabPosition === 'bottom';\n  var _useSyncState = useSyncState(0, function (next, prev) {\n      if (tabPositionTopOrBottom && onTabScroll) {\n        onTabScroll({\n          direction: next > prev ? 'left' : 'right'\n        });\n      }\n    }),\n    _useSyncState2 = _slicedToArray(_useSyncState, 2),\n    transformLeft = _useSyncState2[0],\n    setTransformLeft = _useSyncState2[1];\n  var _useSyncState3 = useSyncState(0, function (next, prev) {\n      if (!tabPositionTopOrBottom && onTabScroll) {\n        onTabScroll({\n          direction: next > prev ? 'top' : 'bottom'\n        });\n      }\n    }),\n    _useSyncState4 = _slicedToArray(_useSyncState3, 2),\n    transformTop = _useSyncState4[0],\n    setTransformTop = _useSyncState4[1];\n  var _useState = useState([0, 0]),\n    _useState2 = _slicedToArray(_useState, 2),\n    containerExcludeExtraSize = _useState2[0],\n    setContainerExcludeExtraSize = _useState2[1];\n  var _useState3 = useState([0, 0]),\n    _useState4 = _slicedToArray(_useState3, 2),\n    tabContentSize = _useState4[0],\n    setTabContentSize = _useState4[1];\n  var _useState5 = useState([0, 0]),\n    _useState6 = _slicedToArray(_useState5, 2),\n    addSize = _useState6[0],\n    setAddSize = _useState6[1];\n  var _useState7 = useState([0, 0]),\n    _useState8 = _slicedToArray(_useState7, 2),\n    operationSize = _useState8[0],\n    setOperationSize = _useState8[1];\n  var _useUpdateState = useUpdateState(new Map()),\n    _useUpdateState2 = _slicedToArray(_useUpdateState, 2),\n    tabSizes = _useUpdateState2[0],\n    setTabSizes = _useUpdateState2[1];\n  var tabOffsets = useOffsets(tabs, tabSizes, tabContentSize[0]);\n\n  // ========================== Unit =========================\n  var containerExcludeExtraSizeValue = getUnitValue(containerExcludeExtraSize, tabPositionTopOrBottom);\n  var tabContentSizeValue = getUnitValue(tabContentSize, tabPositionTopOrBottom);\n  var addSizeValue = getUnitValue(addSize, tabPositionTopOrBottom);\n  var operationSizeValue = getUnitValue(operationSize, tabPositionTopOrBottom);\n  var needScroll = Math.floor(containerExcludeExtraSizeValue) < Math.floor(tabContentSizeValue + addSizeValue);\n  var visibleTabContentValue = needScroll ? containerExcludeExtraSizeValue - operationSizeValue : containerExcludeExtraSizeValue - addSizeValue;\n\n  // ========================== Util =========================\n  var operationsHiddenClassName = \"\".concat(prefixCls, \"-nav-operations-hidden\");\n  var transformMin = 0;\n  var transformMax = 0;\n  if (!tabPositionTopOrBottom) {\n    transformMin = Math.min(0, visibleTabContentValue - tabContentSizeValue);\n    transformMax = 0;\n  } else if (rtl) {\n    transformMin = 0;\n    transformMax = Math.max(0, tabContentSizeValue - visibleTabContentValue);\n  } else {\n    transformMin = Math.min(0, visibleTabContentValue - tabContentSizeValue);\n    transformMax = 0;\n  }\n  function alignInRange(value) {\n    if (value < transformMin) {\n      return transformMin;\n    }\n    if (value > transformMax) {\n      return transformMax;\n    }\n    return value;\n  }\n\n  // ========================= Mobile ========================\n  var touchMovingRef = useRef(null);\n  var _useState9 = useState(),\n    _useState10 = _slicedToArray(_useState9, 2),\n    lockAnimation = _useState10[0],\n    setLockAnimation = _useState10[1];\n  function doLockAnimation() {\n    setLockAnimation(Date.now());\n  }\n  function clearTouchMoving() {\n    if (touchMovingRef.current) {\n      clearTimeout(touchMovingRef.current);\n    }\n  }\n  useTouchMove(tabsWrapperRef, function (offsetX, offsetY) {\n    function doMove(setState, offset) {\n      setState(function (value) {\n        var newValue = alignInRange(value + offset);\n        return newValue;\n      });\n    }\n\n    // Skip scroll if place is enough\n    if (!needScroll) {\n      return false;\n    }\n    if (tabPositionTopOrBottom) {\n      doMove(setTransformLeft, offsetX);\n    } else {\n      doMove(setTransformTop, offsetY);\n    }\n    clearTouchMoving();\n    doLockAnimation();\n    return true;\n  });\n  useEffect(function () {\n    clearTouchMoving();\n    if (lockAnimation) {\n      touchMovingRef.current = setTimeout(function () {\n        setLockAnimation(0);\n      }, 100);\n    }\n    return clearTouchMoving;\n  }, [lockAnimation]);\n\n  // ===================== Visible Range =====================\n  // Render tab node & collect tab offset\n  var _useVisibleRange = useVisibleRange(tabOffsets,\n    // Container\n    visibleTabContentValue,\n    // Transform\n    tabPositionTopOrBottom ? transformLeft : transformTop,\n    // Tabs\n    tabContentSizeValue,\n    // Add\n    addSizeValue,\n    // Operation\n    operationSizeValue, _objectSpread(_objectSpread({}, props), {}, {\n      tabs: tabs\n    })),\n    _useVisibleRange2 = _slicedToArray(_useVisibleRange, 2),\n    visibleStart = _useVisibleRange2[0],\n    visibleEnd = _useVisibleRange2[1];\n\n  // ========================= Scroll ========================\n  var scrollToTab = useEvent(function () {\n    var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : activeKey;\n    var tabOffset = tabOffsets.get(key) || {\n      width: 0,\n      height: 0,\n      left: 0,\n      right: 0,\n      top: 0\n    };\n    if (tabPositionTopOrBottom) {\n      // ============ Align with top & bottom ============\n      var newTransform = transformLeft;\n\n      // RTL\n      if (rtl) {\n        if (tabOffset.right < transformLeft) {\n          newTransform = tabOffset.right;\n        } else if (tabOffset.right + tabOffset.width > transformLeft + visibleTabContentValue) {\n          newTransform = tabOffset.right + tabOffset.width - visibleTabContentValue;\n        }\n      }\n      // LTR\n      else if (tabOffset.left < -transformLeft) {\n        newTransform = -tabOffset.left;\n      } else if (tabOffset.left + tabOffset.width > -transformLeft + visibleTabContentValue) {\n        newTransform = -(tabOffset.left + tabOffset.width - visibleTabContentValue);\n      }\n      setTransformTop(0);\n      setTransformLeft(alignInRange(newTransform));\n    } else {\n      // ============ Align with left & right ============\n      var _newTransform = transformTop;\n      if (tabOffset.top < -transformTop) {\n        _newTransform = -tabOffset.top;\n      } else if (tabOffset.top + tabOffset.height > -transformTop + visibleTabContentValue) {\n        _newTransform = -(tabOffset.top + tabOffset.height - visibleTabContentValue);\n      }\n      setTransformLeft(0);\n      setTransformTop(alignInRange(_newTransform));\n    }\n  });\n\n  // ========================= Focus =========================\n  var _useState11 = useState(),\n    _useState12 = _slicedToArray(_useState11, 2),\n    focusKey = _useState12[0],\n    setFocusKey = _useState12[1];\n  var _useState13 = useState(false),\n    _useState14 = _slicedToArray(_useState13, 2),\n    isMouse = _useState14[0],\n    setIsMouse = _useState14[1];\n  var enabledTabs = tabs.filter(function (tab) {\n    return !tab.disabled;\n  }).map(function (tab) {\n    return tab.key;\n  });\n  var onOffset = function onOffset(offset) {\n    var currentIndex = enabledTabs.indexOf(focusKey || activeKey);\n    var len = enabledTabs.length;\n    var nextIndex = (currentIndex + offset + len) % len;\n    var newKey = enabledTabs[nextIndex];\n    setFocusKey(newKey);\n  };\n  var handleKeyDown = function handleKeyDown(e) {\n    var code = e.code;\n    var isRTL = rtl && tabPositionTopOrBottom;\n    var firstEnabledTab = enabledTabs[0];\n    var lastEnabledTab = enabledTabs[enabledTabs.length - 1];\n    switch (code) {\n      // LEFT\n      case 'ArrowLeft':\n        {\n          if (tabPositionTopOrBottom) {\n            onOffset(isRTL ? 1 : -1);\n          }\n          break;\n        }\n\n      // RIGHT\n      case 'ArrowRight':\n        {\n          if (tabPositionTopOrBottom) {\n            onOffset(isRTL ? -1 : 1);\n          }\n          break;\n        }\n\n      // UP\n      case 'ArrowUp':\n        {\n          e.preventDefault();\n          if (!tabPositionTopOrBottom) {\n            onOffset(-1);\n          }\n          break;\n        }\n\n      // DOWN\n      case 'ArrowDown':\n        {\n          e.preventDefault();\n          if (!tabPositionTopOrBottom) {\n            onOffset(1);\n          }\n          break;\n        }\n\n      // HOME\n      case 'Home':\n        {\n          e.preventDefault();\n          setFocusKey(firstEnabledTab);\n          break;\n        }\n\n      // END\n      case 'End':\n        {\n          e.preventDefault();\n          setFocusKey(lastEnabledTab);\n          break;\n        }\n\n      // Enter & Space\n      case 'Enter':\n      case 'Space':\n        {\n          e.preventDefault();\n          onTabClick(focusKey !== null && focusKey !== void 0 ? focusKey : activeKey, e);\n          break;\n        }\n      // Backspace\n      case 'Backspace':\n      case 'Delete':\n        {\n          var removeIndex = enabledTabs.indexOf(focusKey);\n          var removeTab = tabs.find(function (tab) {\n            return tab.key === focusKey;\n          });\n          var removable = getRemovable(removeTab === null || removeTab === void 0 ? void 0 : removeTab.closable, removeTab === null || removeTab === void 0 ? void 0 : removeTab.closeIcon, editable, removeTab === null || removeTab === void 0 ? void 0 : removeTab.disabled);\n          if (removable) {\n            e.preventDefault();\n            e.stopPropagation();\n            editable.onEdit('remove', {\n              key: focusKey,\n              event: e\n            });\n            // when remove last tab, focus previous tab\n            if (removeIndex === enabledTabs.length - 1) {\n              onOffset(-1);\n            } else {\n              onOffset(1);\n            }\n          }\n          break;\n        }\n    }\n  };\n\n  // ========================== Tab ==========================\n  var tabNodeStyle = {};\n  if (tabPositionTopOrBottom) {\n    tabNodeStyle[rtl ? 'marginRight' : 'marginLeft'] = tabBarGutter;\n  } else {\n    tabNodeStyle.marginTop = tabBarGutter;\n  }\n  var tabNodes = tabs.map(function (tab, i) {\n    var key = tab.key;\n    return /*#__PURE__*/React.createElement(TabNode, {\n      id: id,\n      prefixCls: prefixCls,\n      key: key,\n      tab: tab\n      /* first node should not have margin left */,\n      style: i === 0 ? undefined : tabNodeStyle,\n      closable: tab.closable,\n      editable: editable,\n      active: key === activeKey,\n      focus: key === focusKey,\n      renderWrapper: children,\n      removeAriaLabel: locale === null || locale === void 0 ? void 0 : locale.removeAriaLabel,\n      tabCount: enabledTabs.length,\n      currentPosition: i + 1,\n      onClick: function onClick(e) {\n        onTabClick(key, e);\n      },\n      onKeyDown: handleKeyDown,\n      onFocus: function onFocus() {\n        if (!isMouse) {\n          setFocusKey(key);\n        }\n        scrollToTab(key);\n        doLockAnimation();\n        if (!tabsWrapperRef.current) {\n          return;\n        }\n        // Focus element will make scrollLeft change which we should reset back\n        if (!rtl) {\n          tabsWrapperRef.current.scrollLeft = 0;\n        }\n        tabsWrapperRef.current.scrollTop = 0;\n      },\n      onBlur: function onBlur() {\n        setFocusKey(undefined);\n      },\n      onMouseDown: function onMouseDown() {\n        setIsMouse(true);\n      },\n      onMouseUp: function onMouseUp() {\n        setIsMouse(false);\n      }\n    });\n  });\n\n  // Update buttons records\n  var updateTabSizes = function updateTabSizes() {\n    return setTabSizes(function () {\n      var _tabListRef$current;\n      var newSizes = new Map();\n      var listRect = (_tabListRef$current = tabListRef.current) === null || _tabListRef$current === void 0 ? void 0 : _tabListRef$current.getBoundingClientRect();\n      tabs.forEach(function (_ref2) {\n        var _tabListRef$current2;\n        var key = _ref2.key;\n        var btnNode = (_tabListRef$current2 = tabListRef.current) === null || _tabListRef$current2 === void 0 ? void 0 : _tabListRef$current2.querySelector(\"[data-node-key=\\\"\".concat(genDataNodeKey(key), \"\\\"]\"));\n        if (btnNode) {\n          var _getTabSize = getTabSize(btnNode, listRect),\n            _getTabSize2 = _slicedToArray(_getTabSize, 4),\n            width = _getTabSize2[0],\n            height = _getTabSize2[1],\n            left = _getTabSize2[2],\n            top = _getTabSize2[3];\n          newSizes.set(key, {\n            width: width,\n            height: height,\n            left: left,\n            top: top\n          });\n        }\n      });\n      return newSizes;\n    });\n  };\n  useEffect(function () {\n    updateTabSizes();\n  }, [tabs.map(function (tab) {\n    return tab.key;\n  }).join('_')]);\n  var onListHolderResize = useUpdate(function () {\n    // Update wrapper records\n    var containerSize = getSize(containerRef);\n    var extraLeftSize = getSize(extraLeftRef);\n    var extraRightSize = getSize(extraRightRef);\n    setContainerExcludeExtraSize([containerSize[0] - extraLeftSize[0] - extraRightSize[0], containerSize[1] - extraLeftSize[1] - extraRightSize[1]]);\n    var newAddSize = getSize(innerAddButtonRef);\n    setAddSize(newAddSize);\n    var newOperationSize = getSize(operationsRef);\n    setOperationSize(newOperationSize);\n\n    // Which includes add button size\n    var tabContentFullSize = getSize(tabListRef);\n    setTabContentSize([tabContentFullSize[0] - newAddSize[0], tabContentFullSize[1] - newAddSize[1]]);\n\n    // Update buttons records\n    updateTabSizes();\n  });\n\n  // ======================== Dropdown =======================\n  var startHiddenTabs = tabs.slice(0, visibleStart);\n  var endHiddenTabs = tabs.slice(visibleEnd + 1);\n  var hiddenTabs = [].concat(_toConsumableArray(startHiddenTabs), _toConsumableArray(endHiddenTabs));\n\n  // =================== Link & Operations ===================\n  var activeTabOffset = tabOffsets.get(activeKey);\n  var _useIndicator = useIndicator({\n      activeTabOffset: activeTabOffset,\n      horizontal: tabPositionTopOrBottom,\n      indicator: indicator,\n      rtl: rtl\n    }),\n    indicatorStyle = _useIndicator.style;\n\n  // ========================= Effect ========================\n  useEffect(function () {\n    scrollToTab();\n  }, [activeKey, transformMin, transformMax, stringify(activeTabOffset), stringify(tabOffsets), tabPositionTopOrBottom]);\n\n  // Should recalculate when rtl changed\n  useEffect(function () {\n    onListHolderResize();\n    // eslint-disable-next-line\n  }, [rtl]);\n\n  // ========================= Render ========================\n  var hasDropdown = !!hiddenTabs.length;\n  var wrapPrefix = \"\".concat(prefixCls, \"-nav-wrap\");\n  var pingLeft;\n  var pingRight;\n  var pingTop;\n  var pingBottom;\n  if (tabPositionTopOrBottom) {\n    if (rtl) {\n      pingRight = transformLeft > 0;\n      pingLeft = transformLeft !== transformMax;\n    } else {\n      pingLeft = transformLeft < 0;\n      pingRight = transformLeft !== transformMin;\n    }\n  } else {\n    pingTop = transformTop < 0;\n    pingBottom = transformTop !== transformMin;\n  }\n  return /*#__PURE__*/React.createElement(ResizeObserver, {\n    onResize: onListHolderResize\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    ref: useComposeRef(ref, containerRef),\n    role: \"tablist\",\n    \"aria-orientation\": tabPositionTopOrBottom ? 'horizontal' : 'vertical',\n    className: classNames(\"\".concat(prefixCls, \"-nav\"), className),\n    style: style,\n    onKeyDown: function onKeyDown() {\n      // No need animation when use keyboard\n      doLockAnimation();\n    }\n  }, /*#__PURE__*/React.createElement(ExtraContent, {\n    ref: extraLeftRef,\n    position: \"left\",\n    extra: extra,\n    prefixCls: prefixCls\n  }), /*#__PURE__*/React.createElement(ResizeObserver, {\n    onResize: onListHolderResize\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(wrapPrefix, _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, \"\".concat(wrapPrefix, \"-ping-left\"), pingLeft), \"\".concat(wrapPrefix, \"-ping-right\"), pingRight), \"\".concat(wrapPrefix, \"-ping-top\"), pingTop), \"\".concat(wrapPrefix, \"-ping-bottom\"), pingBottom)),\n    ref: tabsWrapperRef\n  }, /*#__PURE__*/React.createElement(ResizeObserver, {\n    onResize: onListHolderResize\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    ref: tabListRef,\n    className: \"\".concat(prefixCls, \"-nav-list\"),\n    style: {\n      transform: \"translate(\".concat(transformLeft, \"px, \").concat(transformTop, \"px)\"),\n      transition: lockAnimation ? 'none' : undefined\n    }\n  }, tabNodes, /*#__PURE__*/React.createElement(AddButton, {\n    ref: innerAddButtonRef,\n    prefixCls: prefixCls,\n    locale: locale,\n    editable: editable,\n    style: _objectSpread(_objectSpread({}, tabNodes.length === 0 ? undefined : tabNodeStyle), {}, {\n      visibility: hasDropdown ? 'hidden' : null\n    })\n  }), /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(\"\".concat(prefixCls, \"-ink-bar\"), _defineProperty({}, \"\".concat(prefixCls, \"-ink-bar-animated\"), animated.inkBar)),\n    style: indicatorStyle\n  }))))), /*#__PURE__*/React.createElement(OperationNode, _extends({}, props, {\n    removeAriaLabel: locale === null || locale === void 0 ? void 0 : locale.removeAriaLabel,\n    ref: operationsRef,\n    prefixCls: prefixCls,\n    tabs: hiddenTabs,\n    className: !hasDropdown && operationsHiddenClassName,\n    tabMoving: !!lockAnimation\n  })), /*#__PURE__*/React.createElement(ExtraContent, {\n    ref: extraRightRef,\n    position: \"right\",\n    extra: extra,\n    prefixCls: prefixCls\n  })));\n  /* eslint-enable */\n});\nexport default TabNavList;","import classNames from 'classnames';\nimport * as React from 'react';\nvar TabPane = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var prefixCls = props.prefixCls,\n    className = props.className,\n    style = props.style,\n    id = props.id,\n    active = props.active,\n    tabKey = props.tabKey,\n    children = props.children;\n  return /*#__PURE__*/React.createElement(\"div\", {\n    id: id && \"\".concat(id, \"-panel-\").concat(tabKey),\n    role: \"tabpanel\",\n    tabIndex: active ? 0 : -1,\n    \"aria-labelledby\": id && \"\".concat(id, \"-tab-\").concat(tabKey),\n    \"aria-hidden\": !active,\n    style: style,\n    className: classNames(prefixCls, active && \"\".concat(prefixCls, \"-active\"), className),\n    ref: ref\n  }, children);\n});\nif (process.env.NODE_ENV !== 'production') {\n  TabPane.displayName = 'TabPane';\n}\nexport default TabPane;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"renderTabBar\"],\n  _excluded2 = [\"label\", \"key\"];\n// zombieJ: To compatible with `renderTabBar` usage.\n\nimport * as React from 'react';\nimport TabNavList from '.';\nimport TabContext from \"../TabContext\";\nimport TabPane from \"../TabPanelList/TabPane\";\n// We have to create a TabNavList components.\nvar TabNavListWrapper = function TabNavListWrapper(_ref) {\n  var renderTabBar = _ref.renderTabBar,\n    restProps = _objectWithoutProperties(_ref, _excluded);\n  var _React$useContext = React.useContext(TabContext),\n    tabs = _React$useContext.tabs;\n  if (renderTabBar) {\n    var tabNavBarProps = _objectSpread(_objectSpread({}, restProps), {}, {\n      // Legacy support. We do not use this actually\n      panes: tabs.map(function (_ref2) {\n        var label = _ref2.label,\n          key = _ref2.key,\n          restTabProps = _objectWithoutProperties(_ref2, _excluded2);\n        return /*#__PURE__*/React.createElement(TabPane, _extends({\n          tab: label,\n          key: key,\n          tabKey: key\n        }, restTabProps));\n      })\n    });\n    return renderTabBar(tabNavBarProps, TabNavList);\n  }\n  return /*#__PURE__*/React.createElement(TabNavList, restProps);\n};\nif (process.env.NODE_ENV !== 'production') {\n  TabNavListWrapper.displayName = 'TabNavListWrapper';\n}\nexport default TabNavListWrapper;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar _excluded = [\"key\", \"forceRender\", \"style\", \"className\", \"destroyInactiveTabPane\"];\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport * as React from 'react';\nimport TabContext from \"../TabContext\";\nimport TabPane from \"./TabPane\";\nvar TabPanelList = function TabPanelList(props) {\n  var id = props.id,\n    activeKey = props.activeKey,\n    animated = props.animated,\n    tabPosition = props.tabPosition,\n    destroyInactiveTabPane = props.destroyInactiveTabPane;\n  var _React$useContext = React.useContext(TabContext),\n    prefixCls = _React$useContext.prefixCls,\n    tabs = _React$useContext.tabs;\n  var tabPaneAnimated = animated.tabPane;\n  var tabPanePrefixCls = \"\".concat(prefixCls, \"-tabpane\");\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(\"\".concat(prefixCls, \"-content-holder\"))\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(\"\".concat(prefixCls, \"-content\"), \"\".concat(prefixCls, \"-content-\").concat(tabPosition), _defineProperty({}, \"\".concat(prefixCls, \"-content-animated\"), tabPaneAnimated))\n  }, tabs.map(function (item) {\n    var key = item.key,\n      forceRender = item.forceRender,\n      paneStyle = item.style,\n      paneClassName = item.className,\n      itemDestroyInactiveTabPane = item.destroyInactiveTabPane,\n      restTabProps = _objectWithoutProperties(item, _excluded);\n    var active = key === activeKey;\n    return /*#__PURE__*/React.createElement(CSSMotion, _extends({\n      key: key,\n      visible: active,\n      forceRender: forceRender,\n      removeOnLeave: !!(destroyInactiveTabPane || itemDestroyInactiveTabPane),\n      leavedClassName: \"\".concat(tabPanePrefixCls, \"-hidden\")\n    }, animated.tabPaneMotion), function (_ref, ref) {\n      var motionStyle = _ref.style,\n        motionClassName = _ref.className;\n      return /*#__PURE__*/React.createElement(TabPane, _extends({}, restTabProps, {\n        prefixCls: tabPanePrefixCls,\n        id: id,\n        tabKey: key,\n        animated: tabPaneAnimated,\n        active: active,\n        style: _objectSpread(_objectSpread({}, paneStyle), motionStyle),\n        className: classNames(paneClassName, motionClassName),\n        ref: ref\n      }));\n    });\n  })));\n};\nexport default TabPanelList;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport warning from \"rc-util/es/warning\";\nexport default function useAnimateConfig() {\n  var animated = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n    inkBar: true,\n    tabPane: false\n  };\n  var mergedAnimated;\n  if (animated === false) {\n    mergedAnimated = {\n      inkBar: false,\n      tabPane: false\n    };\n  } else if (animated === true) {\n    mergedAnimated = {\n      inkBar: true,\n      tabPane: false\n    };\n  } else {\n    mergedAnimated = _objectSpread({\n      inkBar: true\n    }, _typeof(animated) === 'object' ? animated : {});\n  }\n\n  // Enable tabPane animation if provide motion\n  if (mergedAnimated.tabPaneMotion && mergedAnimated.tabPane === undefined) {\n    mergedAnimated.tabPane = true;\n  }\n  if (!mergedAnimated.tabPaneMotion && mergedAnimated.tabPane) {\n    if (process.env.NODE_ENV !== 'production') {\n      warning(false, '`animated.tabPane` is true but `animated.tabPaneMotion` is not provided. Motion will not work.');\n    }\n    mergedAnimated.tabPane = false;\n  }\n  return mergedAnimated;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"id\", \"prefixCls\", \"className\", \"items\", \"direction\", \"activeKey\", \"defaultActiveKey\", \"editable\", \"animated\", \"tabPosition\", \"tabBarGutter\", \"tabBarStyle\", \"tabBarExtraContent\", \"locale\", \"more\", \"destroyInactiveTabPane\", \"renderTabBar\", \"onChange\", \"onTabClick\", \"onTabScroll\", \"getPopupContainer\", \"popupClassName\", \"indicator\"];\n// Accessibility https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/Tab_Role\nimport classNames from 'classnames';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport isMobile from \"rc-util/es/isMobile\";\nimport * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport TabContext from \"./TabContext\";\nimport TabNavListWrapper from \"./TabNavList/Wrapper\";\nimport TabPanelList from \"./TabPanelList\";\nimport useAnimateConfig from \"./hooks/useAnimateConfig\";\n/**\n * Should added antd:\n * - type\n *\n * Removed:\n * - onNextClick\n * - onPrevClick\n * - keyboard\n */\n\n// Used for accessibility\nvar uuid = 0;\nvar Tabs = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var id = props.id,\n    _props$prefixCls = props.prefixCls,\n    prefixCls = _props$prefixCls === void 0 ? 'rc-tabs' : _props$prefixCls,\n    className = props.className,\n    items = props.items,\n    direction = props.direction,\n    activeKey = props.activeKey,\n    defaultActiveKey = props.defaultActiveKey,\n    editable = props.editable,\n    animated = props.animated,\n    _props$tabPosition = props.tabPosition,\n    tabPosition = _props$tabPosition === void 0 ? 'top' : _props$tabPosition,\n    tabBarGutter = props.tabBarGutter,\n    tabBarStyle = props.tabBarStyle,\n    tabBarExtraContent = props.tabBarExtraContent,\n    locale = props.locale,\n    more = props.more,\n    destroyInactiveTabPane = props.destroyInactiveTabPane,\n    renderTabBar = props.renderTabBar,\n    onChange = props.onChange,\n    onTabClick = props.onTabClick,\n    onTabScroll = props.onTabScroll,\n    getPopupContainer = props.getPopupContainer,\n    popupClassName = props.popupClassName,\n    indicator = props.indicator,\n    restProps = _objectWithoutProperties(props, _excluded);\n  var tabs = React.useMemo(function () {\n    return (items || []).filter(function (item) {\n      return item && _typeof(item) === 'object' && 'key' in item;\n    });\n  }, [items]);\n  var rtl = direction === 'rtl';\n  var mergedAnimated = useAnimateConfig(animated);\n\n  // ======================== Mobile ========================\n  var _useState = useState(false),\n    _useState2 = _slicedToArray(_useState, 2),\n    mobile = _useState2[0],\n    setMobile = _useState2[1];\n  useEffect(function () {\n    // Only update on the client side\n    setMobile(isMobile());\n  }, []);\n\n  // ====================== Active Key ======================\n  var _useMergedState = useMergedState(function () {\n      var _tabs$;\n      return (_tabs$ = tabs[0]) === null || _tabs$ === void 0 ? void 0 : _tabs$.key;\n    }, {\n      value: activeKey,\n      defaultValue: defaultActiveKey\n    }),\n    _useMergedState2 = _slicedToArray(_useMergedState, 2),\n    mergedActiveKey = _useMergedState2[0],\n    setMergedActiveKey = _useMergedState2[1];\n  var _useState3 = useState(function () {\n      return tabs.findIndex(function (tab) {\n        return tab.key === mergedActiveKey;\n      });\n    }),\n    _useState4 = _slicedToArray(_useState3, 2),\n    activeIndex = _useState4[0],\n    setActiveIndex = _useState4[1];\n\n  // Reset active key if not exist anymore\n  useEffect(function () {\n    var newActiveIndex = tabs.findIndex(function (tab) {\n      return tab.key === mergedActiveKey;\n    });\n    if (newActiveIndex === -1) {\n      var _tabs$newActiveIndex;\n      newActiveIndex = Math.max(0, Math.min(activeIndex, tabs.length - 1));\n      setMergedActiveKey((_tabs$newActiveIndex = tabs[newActiveIndex]) === null || _tabs$newActiveIndex === void 0 ? void 0 : _tabs$newActiveIndex.key);\n    }\n    setActiveIndex(newActiveIndex);\n  }, [tabs.map(function (tab) {\n    return tab.key;\n  }).join('_'), mergedActiveKey, activeIndex]);\n\n  // ===================== Accessibility ====================\n  var _useMergedState3 = useMergedState(null, {\n      value: id\n    }),\n    _useMergedState4 = _slicedToArray(_useMergedState3, 2),\n    mergedId = _useMergedState4[0],\n    setMergedId = _useMergedState4[1];\n\n  // Async generate id to avoid ssr mapping failed\n  useEffect(function () {\n    if (!id) {\n      setMergedId(\"rc-tabs-\".concat(process.env.NODE_ENV === 'test' ? 'test' : uuid));\n      uuid += 1;\n    }\n  }, []);\n\n  // ======================== Events ========================\n  function onInternalTabClick(key, e) {\n    onTabClick === null || onTabClick === void 0 || onTabClick(key, e);\n    var isActiveChanged = key !== mergedActiveKey;\n    setMergedActiveKey(key);\n    if (isActiveChanged) {\n      onChange === null || onChange === void 0 || onChange(key);\n    }\n  }\n\n  // ======================== Render ========================\n  var sharedProps = {\n    id: mergedId,\n    activeKey: mergedActiveKey,\n    animated: mergedAnimated,\n    tabPosition: tabPosition,\n    rtl: rtl,\n    mobile: mobile\n  };\n  var tabNavBarProps = _objectSpread(_objectSpread({}, sharedProps), {}, {\n    editable: editable,\n    locale: locale,\n    more: more,\n    tabBarGutter: tabBarGutter,\n    onTabClick: onInternalTabClick,\n    onTabScroll: onTabScroll,\n    extra: tabBarExtraContent,\n    style: tabBarStyle,\n    panes: null,\n    getPopupContainer: getPopupContainer,\n    popupClassName: popupClassName,\n    indicator: indicator\n  });\n  return /*#__PURE__*/React.createElement(TabContext.Provider, {\n    value: {\n      tabs: tabs,\n      prefixCls: prefixCls\n    }\n  }, /*#__PURE__*/React.createElement(\"div\", _extends({\n    ref: ref,\n    id: id,\n    className: classNames(prefixCls, \"\".concat(prefixCls, \"-\").concat(tabPosition), _defineProperty(_defineProperty(_defineProperty({}, \"\".concat(prefixCls, \"-mobile\"), mobile), \"\".concat(prefixCls, \"-editable\"), editable), \"\".concat(prefixCls, \"-rtl\"), rtl), className)\n  }, restProps), /*#__PURE__*/React.createElement(TabNavListWrapper, _extends({}, tabNavBarProps, {\n    renderTabBar: renderTabBar\n  })), /*#__PURE__*/React.createElement(TabPanelList, _extends({\n    destroyInactiveTabPane: destroyInactiveTabPane\n  }, sharedProps, {\n    animated: mergedAnimated\n  }))));\n});\nif (process.env.NODE_ENV !== 'production') {\n  Tabs.displayName = 'Tabs';\n}\nexport default Tabs;","import { getTransitionName } from '../../_util/motion';\nconst motion = {\n  motionAppear: false,\n  motionEnter: true,\n  motionLeave: true\n};\nexport default function useAnimateConfig(prefixCls, animated = {\n  inkBar: true,\n  tabPane: false\n}) {\n  let mergedAnimated;\n  if (animated === false) {\n    mergedAnimated = {\n      inkBar: false,\n      tabPane: false\n    };\n  } else if (animated === true) {\n    mergedAnimated = {\n      inkBar: true,\n      tabPane: true\n    };\n  } else {\n    mergedAnimated = Object.assign({\n      inkBar: true\n    }, typeof animated === 'object' ? animated : {});\n  }\n  if (mergedAnimated.tabPane) {\n    mergedAnimated.tabPaneMotion = Object.assign(Object.assign({}, motion), {\n      motionName: getTransitionName(prefixCls, 'switch')\n    });\n  }\n  return mergedAnimated;\n}","var __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport { devUseWarning } from '../../_util/warning';\nfunction filter(items) {\n  return items.filter(item => item);\n}\nfunction useLegacyItems(items, children) {\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('Tabs');\n    warning.deprecated(!children, 'Tabs.TabPane', 'items');\n  }\n  if (items) {\n    return items.map(item => {\n      var _a;\n      const mergedDestroyOnHidden = (_a = item.destroyOnHidden) !== null && _a !== void 0 ? _a : item.destroyInactiveTabPane;\n      return Object.assign(Object.assign({}, item), {\n        // TODO: In the future, destroyInactiveTabPane in rc-tabs needs to be upgrade to destroyOnHidden\n        destroyInactiveTabPane: mergedDestroyOnHidden\n      });\n    });\n  }\n  const childrenItems = toArray(children).map(node => {\n    if (/*#__PURE__*/React.isValidElement(node)) {\n      const {\n        key,\n        props\n      } = node;\n      const _a = props || {},\n        {\n          tab\n        } = _a,\n        restProps = __rest(_a, [\"tab\"]);\n      const item = Object.assign(Object.assign({\n        key: String(key)\n      }, restProps), {\n        label: tab\n      });\n      return item;\n    }\n    return null;\n  });\n  return filter(childrenItems);\n}\nexport default useLegacyItems;","import { initSlideMotion } from '../../style/motion';\nconst genMotionStyle = token => {\n  const {\n    componentCls,\n    motionDurationSlow\n  } = token;\n  return [{\n    [componentCls]: {\n      [`${componentCls}-switch`]: {\n        '&-appear, &-enter': {\n          transition: 'none',\n          '&-start': {\n            opacity: 0\n          },\n          '&-active': {\n            opacity: 1,\n            transition: `opacity ${motionDurationSlow}`\n          }\n        },\n        '&-leave': {\n          position: 'absolute',\n          transition: 'none',\n          inset: 0,\n          '&-start': {\n            opacity: 1\n          },\n          '&-active': {\n            opacity: 0,\n            transition: `opacity ${motionDurationSlow}`\n          }\n        }\n      }\n    }\n  },\n  // Follow code may reuse in other components\n  [initSlideMotion(token, 'slide-up'), initSlideMotion(token, 'slide-down')]];\n};\nexport default genMotionStyle;","import { unit } from '@ant-design/cssinjs';\nimport { genFocusOutline, genFocusStyle, resetComponent, textEllipsis } from '../../style';\nimport { genStyleHooks, mergeToken } from '../../theme/internal';\nimport genMotionStyle from './motion';\nconst genCardStyle = token => {\n  const {\n    componentCls,\n    tabsCardPadding,\n    cardBg,\n    cardGutter,\n    colorBorderSecondary,\n    itemSelectedColor\n  } = token;\n  return {\n    [`${componentCls}-card`]: {\n      [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n        [`${componentCls}-tab`]: {\n          margin: 0,\n          padding: tabsCardPadding,\n          background: cardBg,\n          border: `${unit(token.lineWidth)} ${token.lineType} ${colorBorderSecondary}`,\n          transition: `all ${token.motionDurationSlow} ${token.motionEaseInOut}`\n        },\n        [`${componentCls}-tab-active`]: {\n          color: itemSelectedColor,\n          background: token.colorBgContainer\n        },\n        [`${componentCls}-tab-focus:has(${componentCls}-tab-btn:focus-visible)`]: genFocusOutline(token, -3),\n        [`& ${componentCls}-tab${componentCls}-tab-focus ${componentCls}-tab-btn:focus-visible`]: {\n          outline: 'none'\n        },\n        [`${componentCls}-ink-bar`]: {\n          visibility: 'hidden'\n        }\n      },\n      // ========================== Top & Bottom ==========================\n      [`&${componentCls}-top, &${componentCls}-bottom`]: {\n        [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n          [`${componentCls}-tab + ${componentCls}-tab`]: {\n            marginLeft: {\n              _skip_check_: true,\n              value: unit(cardGutter)\n            }\n          }\n        }\n      },\n      [`&${componentCls}-top`]: {\n        [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n          [`${componentCls}-tab`]: {\n            borderRadius: `${unit(token.borderRadiusLG)} ${unit(token.borderRadiusLG)} 0 0`\n          },\n          [`${componentCls}-tab-active`]: {\n            borderBottomColor: token.colorBgContainer\n          }\n        }\n      },\n      [`&${componentCls}-bottom`]: {\n        [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n          [`${componentCls}-tab`]: {\n            borderRadius: `0 0 ${unit(token.borderRadiusLG)} ${unit(token.borderRadiusLG)}`\n          },\n          [`${componentCls}-tab-active`]: {\n            borderTopColor: token.colorBgContainer\n          }\n        }\n      },\n      // ========================== Left & Right ==========================\n      [`&${componentCls}-left, &${componentCls}-right`]: {\n        [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n          [`${componentCls}-tab + ${componentCls}-tab`]: {\n            marginTop: unit(cardGutter)\n          }\n        }\n      },\n      [`&${componentCls}-left`]: {\n        [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n          [`${componentCls}-tab`]: {\n            borderRadius: {\n              _skip_check_: true,\n              value: `${unit(token.borderRadiusLG)} 0 0 ${unit(token.borderRadiusLG)}`\n            }\n          },\n          [`${componentCls}-tab-active`]: {\n            borderRightColor: {\n              _skip_check_: true,\n              value: token.colorBgContainer\n            }\n          }\n        }\n      },\n      [`&${componentCls}-right`]: {\n        [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n          [`${componentCls}-tab`]: {\n            borderRadius: {\n              _skip_check_: true,\n              value: `0 ${unit(token.borderRadiusLG)} ${unit(token.borderRadiusLG)} 0`\n            }\n          },\n          [`${componentCls}-tab-active`]: {\n            borderLeftColor: {\n              _skip_check_: true,\n              value: token.colorBgContainer\n            }\n          }\n        }\n      }\n    }\n  };\n};\nconst genDropdownStyle = token => {\n  const {\n    componentCls,\n    itemHoverColor,\n    dropdownEdgeChildVerticalPadding\n  } = token;\n  return {\n    [`${componentCls}-dropdown`]: Object.assign(Object.assign({}, resetComponent(token)), {\n      position: 'absolute',\n      top: -9999,\n      left: {\n        _skip_check_: true,\n        value: -9999\n      },\n      zIndex: token.zIndexPopup,\n      display: 'block',\n      '&-hidden': {\n        display: 'none'\n      },\n      [`${componentCls}-dropdown-menu`]: {\n        maxHeight: token.tabsDropdownHeight,\n        margin: 0,\n        padding: `${unit(dropdownEdgeChildVerticalPadding)} 0`,\n        overflowX: 'hidden',\n        overflowY: 'auto',\n        textAlign: {\n          _skip_check_: true,\n          value: 'left'\n        },\n        listStyleType: 'none',\n        backgroundColor: token.colorBgContainer,\n        backgroundClip: 'padding-box',\n        borderRadius: token.borderRadiusLG,\n        outline: 'none',\n        boxShadow: token.boxShadowSecondary,\n        '&-item': Object.assign(Object.assign({}, textEllipsis), {\n          display: 'flex',\n          alignItems: 'center',\n          minWidth: token.tabsDropdownWidth,\n          margin: 0,\n          padding: `${unit(token.paddingXXS)} ${unit(token.paddingSM)}`,\n          color: token.colorText,\n          fontWeight: 'normal',\n          fontSize: token.fontSize,\n          lineHeight: token.lineHeight,\n          cursor: 'pointer',\n          transition: `all ${token.motionDurationSlow}`,\n          '> span': {\n            flex: 1,\n            whiteSpace: 'nowrap'\n          },\n          '&-remove': {\n            flex: 'none',\n            marginLeft: {\n              _skip_check_: true,\n              value: token.marginSM\n            },\n            color: token.colorIcon,\n            fontSize: token.fontSizeSM,\n            background: 'transparent',\n            border: 0,\n            cursor: 'pointer',\n            '&:hover': {\n              color: itemHoverColor\n            }\n          },\n          '&:hover': {\n            background: token.controlItemBgHover\n          },\n          '&-disabled': {\n            '&, &:hover': {\n              color: token.colorTextDisabled,\n              background: 'transparent',\n              cursor: 'not-allowed'\n            }\n          }\n        })\n      }\n    })\n  };\n};\nconst genPositionStyle = token => {\n  const {\n    componentCls,\n    margin,\n    colorBorderSecondary,\n    horizontalMargin,\n    verticalItemPadding,\n    verticalItemMargin,\n    calc\n  } = token;\n  return {\n    // ========================== Top & Bottom ==========================\n    [`${componentCls}-top, ${componentCls}-bottom`]: {\n      flexDirection: 'column',\n      [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n        margin: horizontalMargin,\n        '&::before': {\n          position: 'absolute',\n          right: {\n            _skip_check_: true,\n            value: 0\n          },\n          left: {\n            _skip_check_: true,\n            value: 0\n          },\n          borderBottom: `${unit(token.lineWidth)} ${token.lineType} ${colorBorderSecondary}`,\n          content: \"''\"\n        },\n        [`${componentCls}-ink-bar`]: {\n          height: token.lineWidthBold,\n          '&-animated': {\n            transition: `width ${token.motionDurationSlow}, left ${token.motionDurationSlow},\n            right ${token.motionDurationSlow}`\n          }\n        },\n        [`${componentCls}-nav-wrap`]: {\n          '&::before, &::after': {\n            top: 0,\n            bottom: 0,\n            width: token.controlHeight\n          },\n          '&::before': {\n            left: {\n              _skip_check_: true,\n              value: 0\n            },\n            boxShadow: token.boxShadowTabsOverflowLeft\n          },\n          '&::after': {\n            right: {\n              _skip_check_: true,\n              value: 0\n            },\n            boxShadow: token.boxShadowTabsOverflowRight\n          },\n          [`&${componentCls}-nav-wrap-ping-left::before`]: {\n            opacity: 1\n          },\n          [`&${componentCls}-nav-wrap-ping-right::after`]: {\n            opacity: 1\n          }\n        }\n      }\n    },\n    [`${componentCls}-top`]: {\n      [`> ${componentCls}-nav,\n        > div > ${componentCls}-nav`]: {\n        '&::before': {\n          bottom: 0\n        },\n        [`${componentCls}-ink-bar`]: {\n          bottom: 0\n        }\n      }\n    },\n    [`${componentCls}-bottom`]: {\n      [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n        order: 1,\n        marginTop: margin,\n        marginBottom: 0,\n        '&::before': {\n          top: 0\n        },\n        [`${componentCls}-ink-bar`]: {\n          top: 0\n        }\n      },\n      [`> ${componentCls}-content-holder, > div > ${componentCls}-content-holder`]: {\n        order: 0\n      }\n    },\n    // ========================== Left & Right ==========================\n    [`${componentCls}-left, ${componentCls}-right`]: {\n      [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n        flexDirection: 'column',\n        minWidth: calc(token.controlHeight).mul(1.25).equal(),\n        // >>>>>>>>>>> Tab\n        [`${componentCls}-tab`]: {\n          padding: verticalItemPadding,\n          textAlign: 'center'\n        },\n        [`${componentCls}-tab + ${componentCls}-tab`]: {\n          margin: verticalItemMargin\n        },\n        // >>>>>>>>>>> Nav\n        [`${componentCls}-nav-wrap`]: {\n          flexDirection: 'column',\n          '&::before, &::after': {\n            right: {\n              _skip_check_: true,\n              value: 0\n            },\n            left: {\n              _skip_check_: true,\n              value: 0\n            },\n            height: token.controlHeight\n          },\n          '&::before': {\n            top: 0,\n            boxShadow: token.boxShadowTabsOverflowTop\n          },\n          '&::after': {\n            bottom: 0,\n            boxShadow: token.boxShadowTabsOverflowBottom\n          },\n          [`&${componentCls}-nav-wrap-ping-top::before`]: {\n            opacity: 1\n          },\n          [`&${componentCls}-nav-wrap-ping-bottom::after`]: {\n            opacity: 1\n          }\n        },\n        // >>>>>>>>>>> Ink Bar\n        [`${componentCls}-ink-bar`]: {\n          width: token.lineWidthBold,\n          '&-animated': {\n            transition: `height ${token.motionDurationSlow}, top ${token.motionDurationSlow}`\n          }\n        },\n        [`${componentCls}-nav-list, ${componentCls}-nav-operations`]: {\n          flex: '1 0 auto',\n          // fix safari scroll problem\n          flexDirection: 'column'\n        }\n      }\n    },\n    [`${componentCls}-left`]: {\n      [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n        [`${componentCls}-ink-bar`]: {\n          right: {\n            _skip_check_: true,\n            value: 0\n          }\n        }\n      },\n      [`> ${componentCls}-content-holder, > div > ${componentCls}-content-holder`]: {\n        marginLeft: {\n          _skip_check_: true,\n          value: unit(calc(token.lineWidth).mul(-1).equal())\n        },\n        borderLeft: {\n          _skip_check_: true,\n          value: `${unit(token.lineWidth)} ${token.lineType} ${token.colorBorder}`\n        },\n        [`> ${componentCls}-content > ${componentCls}-tabpane`]: {\n          paddingLeft: {\n            _skip_check_: true,\n            value: token.paddingLG\n          }\n        }\n      }\n    },\n    [`${componentCls}-right`]: {\n      [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n        order: 1,\n        [`${componentCls}-ink-bar`]: {\n          left: {\n            _skip_check_: true,\n            value: 0\n          }\n        }\n      },\n      [`> ${componentCls}-content-holder, > div > ${componentCls}-content-holder`]: {\n        order: 0,\n        marginRight: {\n          _skip_check_: true,\n          value: calc(token.lineWidth).mul(-1).equal()\n        },\n        borderRight: {\n          _skip_check_: true,\n          value: `${unit(token.lineWidth)} ${token.lineType} ${token.colorBorder}`\n        },\n        [`> ${componentCls}-content > ${componentCls}-tabpane`]: {\n          paddingRight: {\n            _skip_check_: true,\n            value: token.paddingLG\n          }\n        }\n      }\n    }\n  };\n};\nconst genSizeStyle = token => {\n  const {\n    componentCls,\n    cardPaddingSM,\n    cardPaddingLG,\n    cardHeightSM,\n    cardHeightLG,\n    horizontalItemPaddingSM,\n    horizontalItemPaddingLG\n  } = token;\n  return {\n    // >>>>> shared\n    [componentCls]: {\n      '&-small': {\n        [`> ${componentCls}-nav`]: {\n          [`${componentCls}-tab`]: {\n            padding: horizontalItemPaddingSM,\n            fontSize: token.titleFontSizeSM\n          }\n        }\n      },\n      '&-large': {\n        [`> ${componentCls}-nav`]: {\n          [`${componentCls}-tab`]: {\n            padding: horizontalItemPaddingLG,\n            fontSize: token.titleFontSizeLG,\n            lineHeight: token.lineHeightLG\n          }\n        }\n      }\n    },\n    // >>>>> card\n    [`${componentCls}-card`]: {\n      // Small\n      [`&${componentCls}-small`]: {\n        [`> ${componentCls}-nav`]: {\n          [`${componentCls}-tab`]: {\n            padding: cardPaddingSM\n          },\n          [`${componentCls}-nav-add`]: {\n            minWidth: cardHeightSM,\n            minHeight: cardHeightSM\n          }\n        },\n        [`&${componentCls}-bottom`]: {\n          [`> ${componentCls}-nav ${componentCls}-tab`]: {\n            borderRadius: `0 0 ${unit(token.borderRadius)} ${unit(token.borderRadius)}`\n          }\n        },\n        [`&${componentCls}-top`]: {\n          [`> ${componentCls}-nav ${componentCls}-tab`]: {\n            borderRadius: `${unit(token.borderRadius)} ${unit(token.borderRadius)} 0 0`\n          }\n        },\n        [`&${componentCls}-right`]: {\n          [`> ${componentCls}-nav ${componentCls}-tab`]: {\n            borderRadius: {\n              _skip_check_: true,\n              value: `0 ${unit(token.borderRadius)} ${unit(token.borderRadius)} 0`\n            }\n          }\n        },\n        [`&${componentCls}-left`]: {\n          [`> ${componentCls}-nav ${componentCls}-tab`]: {\n            borderRadius: {\n              _skip_check_: true,\n              value: `${unit(token.borderRadius)} 0 0 ${unit(token.borderRadius)}`\n            }\n          }\n        }\n      },\n      // Large\n      [`&${componentCls}-large`]: {\n        [`> ${componentCls}-nav`]: {\n          [`${componentCls}-tab`]: {\n            padding: cardPaddingLG\n          },\n          [`${componentCls}-nav-add`]: {\n            minWidth: cardHeightLG,\n            minHeight: cardHeightLG\n          }\n        }\n      }\n    }\n  };\n};\nconst genTabStyle = token => {\n  const {\n    componentCls,\n    itemActiveColor,\n    itemHoverColor,\n    iconCls,\n    tabsHorizontalItemMargin,\n    horizontalItemPadding,\n    itemSelectedColor,\n    itemColor\n  } = token;\n  const tabCls = `${componentCls}-tab`;\n  return {\n    [tabCls]: {\n      position: 'relative',\n      WebkitTouchCallout: 'none',\n      WebkitTapHighlightColor: 'transparent',\n      display: 'inline-flex',\n      alignItems: 'center',\n      padding: horizontalItemPadding,\n      fontSize: token.titleFontSize,\n      background: 'transparent',\n      border: 0,\n      outline: 'none',\n      cursor: 'pointer',\n      color: itemColor,\n      '&-btn, &-remove': {\n        '&:focus:not(:focus-visible), &:active': {\n          color: itemActiveColor\n        }\n      },\n      '&-btn': {\n        outline: 'none',\n        transition: `all ${token.motionDurationSlow}`,\n        [`${tabCls}-icon:not(:last-child)`]: {\n          marginInlineEnd: token.marginSM\n        }\n      },\n      '&-remove': Object.assign({\n        flex: 'none',\n        marginRight: {\n          _skip_check_: true,\n          value: token.calc(token.marginXXS).mul(-1).equal()\n        },\n        marginLeft: {\n          _skip_check_: true,\n          value: token.marginXS\n        },\n        color: token.colorIcon,\n        fontSize: token.fontSizeSM,\n        background: 'transparent',\n        border: 'none',\n        outline: 'none',\n        cursor: 'pointer',\n        transition: `all ${token.motionDurationSlow}`,\n        '&:hover': {\n          color: token.colorTextHeading\n        }\n      }, genFocusStyle(token)),\n      '&:hover': {\n        color: itemHoverColor\n      },\n      [`&${tabCls}-active ${tabCls}-btn`]: {\n        color: itemSelectedColor,\n        textShadow: token.tabsActiveTextShadow\n      },\n      [`&${tabCls}-focus ${tabCls}-btn:focus-visible`]: genFocusOutline(token),\n      [`&${tabCls}-disabled`]: {\n        color: token.colorTextDisabled,\n        cursor: 'not-allowed'\n      },\n      [`&${tabCls}-disabled ${tabCls}-btn, &${tabCls}-disabled ${componentCls}-remove`]: {\n        '&:focus, &:active': {\n          color: token.colorTextDisabled\n        }\n      },\n      [`& ${tabCls}-remove ${iconCls}`]: {\n        margin: 0\n      },\n      [`${iconCls}:not(:last-child)`]: {\n        marginRight: {\n          _skip_check_: true,\n          value: token.marginSM\n        }\n      }\n    },\n    [`${tabCls} + ${tabCls}`]: {\n      margin: {\n        _skip_check_: true,\n        value: tabsHorizontalItemMargin\n      }\n    }\n  };\n};\nconst genRtlStyle = token => {\n  const {\n    componentCls,\n    tabsHorizontalItemMarginRTL,\n    iconCls,\n    cardGutter,\n    calc\n  } = token;\n  const rtlCls = `${componentCls}-rtl`;\n  return {\n    [rtlCls]: {\n      direction: 'rtl',\n      [`${componentCls}-nav`]: {\n        [`${componentCls}-tab`]: {\n          margin: {\n            _skip_check_: true,\n            value: tabsHorizontalItemMarginRTL\n          },\n          [`${componentCls}-tab:last-of-type`]: {\n            marginLeft: {\n              _skip_check_: true,\n              value: 0\n            }\n          },\n          [iconCls]: {\n            marginRight: {\n              _skip_check_: true,\n              value: 0\n            },\n            marginLeft: {\n              _skip_check_: true,\n              value: unit(token.marginSM)\n            }\n          },\n          [`${componentCls}-tab-remove`]: {\n            marginRight: {\n              _skip_check_: true,\n              value: unit(token.marginXS)\n            },\n            marginLeft: {\n              _skip_check_: true,\n              value: unit(calc(token.marginXXS).mul(-1).equal())\n            },\n            [iconCls]: {\n              margin: 0\n            }\n          }\n        }\n      },\n      [`&${componentCls}-left`]: {\n        [`> ${componentCls}-nav`]: {\n          order: 1\n        },\n        [`> ${componentCls}-content-holder`]: {\n          order: 0\n        }\n      },\n      [`&${componentCls}-right`]: {\n        [`> ${componentCls}-nav`]: {\n          order: 0\n        },\n        [`> ${componentCls}-content-holder`]: {\n          order: 1\n        }\n      },\n      // ====================== Card ======================\n      [`&${componentCls}-card${componentCls}-top, &${componentCls}-card${componentCls}-bottom`]: {\n        [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n          [`${componentCls}-tab + ${componentCls}-tab`]: {\n            marginRight: {\n              _skip_check_: true,\n              value: cardGutter\n            },\n            marginLeft: {\n              _skip_check_: true,\n              value: 0\n            }\n          }\n        }\n      }\n    },\n    [`${componentCls}-dropdown-rtl`]: {\n      direction: 'rtl'\n    },\n    [`${componentCls}-menu-item`]: {\n      [`${componentCls}-dropdown-rtl`]: {\n        textAlign: {\n          _skip_check_: true,\n          value: 'right'\n        }\n      }\n    }\n  };\n};\nconst genTabsStyle = token => {\n  const {\n    componentCls,\n    tabsCardPadding,\n    cardHeight,\n    cardGutter,\n    itemHoverColor,\n    itemActiveColor,\n    colorBorderSecondary\n  } = token;\n  return {\n    [componentCls]: Object.assign(Object.assign(Object.assign(Object.assign({}, resetComponent(token)), {\n      display: 'flex',\n      // ========================== Navigation ==========================\n      [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n        position: 'relative',\n        display: 'flex',\n        flex: 'none',\n        alignItems: 'center',\n        [`${componentCls}-nav-wrap`]: {\n          position: 'relative',\n          display: 'flex',\n          flex: 'auto',\n          alignSelf: 'stretch',\n          overflow: 'hidden',\n          whiteSpace: 'nowrap',\n          transform: 'translate(0)',\n          // Fix chrome render bug\n          // >>>>> Ping shadow\n          '&::before, &::after': {\n            position: 'absolute',\n            zIndex: 1,\n            opacity: 0,\n            transition: `opacity ${token.motionDurationSlow}`,\n            content: \"''\",\n            pointerEvents: 'none'\n          }\n        },\n        [`${componentCls}-nav-list`]: {\n          position: 'relative',\n          display: 'flex',\n          transition: `opacity ${token.motionDurationSlow}`\n        },\n        // >>>>>>>> Operations\n        [`${componentCls}-nav-operations`]: {\n          display: 'flex',\n          alignSelf: 'stretch'\n        },\n        [`${componentCls}-nav-operations-hidden`]: {\n          position: 'absolute',\n          visibility: 'hidden',\n          pointerEvents: 'none'\n        },\n        [`${componentCls}-nav-more`]: {\n          position: 'relative',\n          padding: tabsCardPadding,\n          background: 'transparent',\n          border: 0,\n          color: token.colorText,\n          '&::after': {\n            position: 'absolute',\n            right: {\n              _skip_check_: true,\n              value: 0\n            },\n            bottom: 0,\n            left: {\n              _skip_check_: true,\n              value: 0\n            },\n            height: token.calc(token.controlHeightLG).div(8).equal(),\n            transform: 'translateY(100%)',\n            content: \"''\"\n          }\n        },\n        [`${componentCls}-nav-add`]: Object.assign({\n          minWidth: cardHeight,\n          minHeight: cardHeight,\n          marginLeft: {\n            _skip_check_: true,\n            value: cardGutter\n          },\n          background: 'transparent',\n          border: `${unit(token.lineWidth)} ${token.lineType} ${colorBorderSecondary}`,\n          borderRadius: `${unit(token.borderRadiusLG)} ${unit(token.borderRadiusLG)} 0 0`,\n          outline: 'none',\n          cursor: 'pointer',\n          color: token.colorText,\n          transition: `all ${token.motionDurationSlow} ${token.motionEaseInOut}`,\n          '&:hover': {\n            color: itemHoverColor\n          },\n          '&:active, &:focus:not(:focus-visible)': {\n            color: itemActiveColor\n          }\n        }, genFocusStyle(token, -3))\n      },\n      [`${componentCls}-extra-content`]: {\n        flex: 'none'\n      },\n      // ============================ InkBar ============================\n      [`${componentCls}-ink-bar`]: {\n        position: 'absolute',\n        background: token.inkBarColor,\n        pointerEvents: 'none'\n      }\n    }), genTabStyle(token)), {\n      // =========================== TabPanes ===========================\n      [`${componentCls}-content`]: {\n        position: 'relative',\n        width: '100%'\n      },\n      [`${componentCls}-content-holder`]: {\n        flex: 'auto',\n        minWidth: 0,\n        minHeight: 0\n      },\n      [`${componentCls}-tabpane`]: Object.assign(Object.assign({}, genFocusStyle(token)), {\n        '&-hidden': {\n          display: 'none'\n        }\n      })\n    }),\n    [`${componentCls}-centered`]: {\n      [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n        [`${componentCls}-nav-wrap`]: {\n          [`&:not([class*='${componentCls}-nav-wrap-ping']) > ${componentCls}-nav-list`]: {\n            margin: 'auto'\n          }\n        }\n      }\n    }\n  };\n};\nexport const prepareComponentToken = token => {\n  const {\n    cardHeight,\n    cardHeightSM,\n    cardHeightLG,\n    controlHeight,\n    controlHeightLG\n  } = token;\n  const mergedCardHeight = cardHeight || controlHeightLG;\n  const mergedCardHeightSM = cardHeightSM || controlHeight;\n  // `controlHeight` missing XL variable, so we directly write it here:\n  const mergedCardHeightLG = cardHeightLG || controlHeightLG + 8;\n  return {\n    zIndexPopup: token.zIndexPopupBase + 50,\n    cardBg: token.colorFillAlter,\n    // We can not pass this as valid value,\n    // Since `cardHeight` will lock nav add button height.\n    cardHeight: mergedCardHeight,\n    cardHeightSM: mergedCardHeightSM,\n    cardHeightLG: mergedCardHeightLG,\n    // Initialize with empty string, because cardPadding will be calculated with cardHeight by default.\n    cardPadding: `${(mergedCardHeight - token.fontHeight) / 2 - token.lineWidth}px ${token.padding}px`,\n    cardPaddingSM: `${(mergedCardHeightSM - token.fontHeight) / 2 - token.lineWidth}px ${token.paddingXS}px`,\n    cardPaddingLG: `${(mergedCardHeightLG - token.fontHeightLG) / 2 - token.lineWidth}px ${token.padding}px`,\n    titleFontSize: token.fontSize,\n    titleFontSizeLG: token.fontSizeLG,\n    titleFontSizeSM: token.fontSize,\n    inkBarColor: token.colorPrimary,\n    horizontalMargin: `0 0 ${token.margin}px 0`,\n    horizontalItemGutter: 32,\n    // Fixed Value\n    // Initialize with empty string, because horizontalItemMargin will be calculated with horizontalItemGutter by default.\n    horizontalItemMargin: ``,\n    horizontalItemMarginRTL: ``,\n    horizontalItemPadding: `${token.paddingSM}px 0`,\n    horizontalItemPaddingSM: `${token.paddingXS}px 0`,\n    horizontalItemPaddingLG: `${token.padding}px 0`,\n    verticalItemPadding: `${token.paddingXS}px ${token.paddingLG}px`,\n    verticalItemMargin: `${token.margin}px 0 0 0`,\n    itemColor: token.colorText,\n    itemSelectedColor: token.colorPrimary,\n    itemHoverColor: token.colorPrimaryHover,\n    itemActiveColor: token.colorPrimaryActive,\n    cardGutter: token.marginXXS / 2\n  };\n};\n// ============================== Export ==============================\nexport default genStyleHooks('Tabs', token => {\n  const tabsToken = mergeToken(token, {\n    // `cardPadding` is empty by default, so we could calculate with dynamic `cardHeight`\n    tabsCardPadding: token.cardPadding,\n    dropdownEdgeChildVerticalPadding: token.paddingXXS,\n    tabsActiveTextShadow: '0 0 0.25px currentcolor',\n    tabsDropdownHeight: 200,\n    tabsDropdownWidth: 120,\n    tabsHorizontalItemMargin: `0 0 0 ${unit(token.horizontalItemGutter)}`,\n    tabsHorizontalItemMarginRTL: `0 0 0 ${unit(token.horizontalItemGutter)}`\n  });\n  return [genSizeStyle(tabsToken), genRtlStyle(tabsToken), genPositionStyle(tabsToken), genDropdownStyle(tabsToken), genCardStyle(tabsToken), genTabsStyle(tabsToken), genMotionStyle(tabsToken)];\n}, prepareComponentToken);","const TabPane = () => null;\nif (process.env.NODE_ENV !== 'production') {\n  TabPane.displayName = 'DeprecatedTabPane';\n}\nexport default TabPane;","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport EllipsisOutlined from \"@ant-design/icons/es/icons/EllipsisOutlined\";\nimport PlusOutlined from \"@ant-design/icons/es/icons/PlusOutlined\";\nimport classNames from 'classnames';\nimport RcTabs from 'rc-tabs';\nimport { devUseWarning } from '../_util/warning';\nimport { ConfigContext } from '../config-provider';\nimport useCSSVarCls from '../config-provider/hooks/useCSSVarCls';\nimport useSize from '../config-provider/hooks/useSize';\nimport useAnimateConfig from './hooks/useAnimateConfig';\nimport useLegacyItems from './hooks/useLegacyItems';\nimport useStyle from './style';\nimport TabPane from './TabPane';\nconst Tabs = props => {\n  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;\n  const {\n      type,\n      className,\n      rootClassName,\n      size: customSize,\n      onEdit,\n      hideAdd,\n      centered,\n      addIcon,\n      removeIcon,\n      moreIcon,\n      more,\n      popupClassName,\n      children,\n      items,\n      animated,\n      style,\n      indicatorSize,\n      indicator,\n      destroyInactiveTabPane,\n      destroyOnHidden\n    } = props,\n    otherProps = __rest(props, [\"type\", \"className\", \"rootClassName\", \"size\", \"onEdit\", \"hideAdd\", \"centered\", \"addIcon\", \"removeIcon\", \"moreIcon\", \"more\", \"popupClassName\", \"children\", \"items\", \"animated\", \"style\", \"indicatorSize\", \"indicator\", \"destroyInactiveTabPane\", \"destroyOnHidden\"]);\n  const {\n    prefixCls: customizePrefixCls\n  } = otherProps;\n  const {\n    direction,\n    tabs,\n    getPrefixCls,\n    getPopupContainer\n  } = React.useContext(ConfigContext);\n  const prefixCls = getPrefixCls('tabs', customizePrefixCls);\n  const rootCls = useCSSVarCls(prefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls, rootCls);\n  let editable;\n  if (type === 'editable-card') {\n    editable = {\n      onEdit: (editType, {\n        key,\n        event\n      }) => {\n        onEdit === null || onEdit === void 0 ? void 0 : onEdit(editType === 'add' ? event : key, editType);\n      },\n      removeIcon: (_a = removeIcon !== null && removeIcon !== void 0 ? removeIcon : tabs === null || tabs === void 0 ? void 0 : tabs.removeIcon) !== null && _a !== void 0 ? _a : /*#__PURE__*/React.createElement(CloseOutlined, null),\n      addIcon: (addIcon !== null && addIcon !== void 0 ? addIcon : tabs === null || tabs === void 0 ? void 0 : tabs.addIcon) || /*#__PURE__*/React.createElement(PlusOutlined, null),\n      showAdd: hideAdd !== true\n    };\n  }\n  const rootPrefixCls = getPrefixCls();\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('Tabs');\n    process.env.NODE_ENV !== \"production\" ? warning(!('onPrevClick' in props) && !('onNextClick' in props), 'breaking', '`onPrevClick` and `onNextClick` has been removed. Please use `onTabScroll` instead.') : void 0;\n    process.env.NODE_ENV !== \"production\" ? warning(!(indicatorSize || (tabs === null || tabs === void 0 ? void 0 : tabs.indicatorSize)), 'deprecated', '`indicatorSize` has been deprecated. Please use `indicator={{ size: ... }}` instead.') : void 0;\n    warning.deprecated(!('destroyInactiveTabPane' in props || (items === null || items === void 0 ? void 0 : items.some(item => 'destroyInactiveTabPane' in item))), 'destroyInactiveTabPane', 'destroyOnHidden');\n  }\n  const size = useSize(customSize);\n  const mergedItems = useLegacyItems(items, children);\n  const mergedAnimated = useAnimateConfig(prefixCls, animated);\n  const mergedStyle = Object.assign(Object.assign({}, tabs === null || tabs === void 0 ? void 0 : tabs.style), style);\n  const mergedIndicator = {\n    align: (_b = indicator === null || indicator === void 0 ? void 0 : indicator.align) !== null && _b !== void 0 ? _b : (_c = tabs === null || tabs === void 0 ? void 0 : tabs.indicator) === null || _c === void 0 ? void 0 : _c.align,\n    size: (_g = (_e = (_d = indicator === null || indicator === void 0 ? void 0 : indicator.size) !== null && _d !== void 0 ? _d : indicatorSize) !== null && _e !== void 0 ? _e : (_f = tabs === null || tabs === void 0 ? void 0 : tabs.indicator) === null || _f === void 0 ? void 0 : _f.size) !== null && _g !== void 0 ? _g : tabs === null || tabs === void 0 ? void 0 : tabs.indicatorSize\n  };\n  return wrapCSSVar(/*#__PURE__*/React.createElement(RcTabs, Object.assign({\n    direction: direction,\n    getPopupContainer: getPopupContainer\n  }, otherProps, {\n    items: mergedItems,\n    className: classNames({\n      [`${prefixCls}-${size}`]: size,\n      [`${prefixCls}-card`]: ['card', 'editable-card'].includes(type),\n      [`${prefixCls}-editable-card`]: type === 'editable-card',\n      [`${prefixCls}-centered`]: centered\n    }, tabs === null || tabs === void 0 ? void 0 : tabs.className, className, rootClassName, hashId, cssVarCls, rootCls),\n    popupClassName: classNames(popupClassName, hashId, cssVarCls, rootCls),\n    style: mergedStyle,\n    editable: editable,\n    more: Object.assign({\n      icon: (_l = (_k = (_j = (_h = tabs === null || tabs === void 0 ? void 0 : tabs.more) === null || _h === void 0 ? void 0 : _h.icon) !== null && _j !== void 0 ? _j : tabs === null || tabs === void 0 ? void 0 : tabs.moreIcon) !== null && _k !== void 0 ? _k : moreIcon) !== null && _l !== void 0 ? _l : /*#__PURE__*/React.createElement(EllipsisOutlined, null),\n      transitionName: `${rootPrefixCls}-slide-up`\n    }, more),\n    prefixCls: prefixCls,\n    animated: mergedAnimated,\n    indicator: mergedIndicator,\n    // TODO: In the future, destroyInactiveTabPane in rc-tabs needs to be upgrade to destroyOnHidden\n    destroyInactiveTabPane: destroyOnHidden !== null && destroyOnHidden !== void 0 ? destroyOnHidden : destroyInactiveTabPane\n  })));\n};\nTabs.TabPane = TabPane;\nif (process.env.NODE_ENV !== 'production') {\n  Tabs.displayName = 'Tabs';\n}\nexport default Tabs;","/* eslint-disable no-undefined,no-param-reassign,no-shadow */\n\n/**\n * Throttle execution of a function. Especially useful for rate limiting\n * execution of handlers on events like resize and scroll.\n *\n * @param {number} delay -                  A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher)\n *                                            are most useful.\n * @param {Function} callback -               A function to be executed after delay milliseconds. The `this` context and all arguments are passed through,\n *                                            as-is, to `callback` when the throttled-function is executed.\n * @param {object} [options] -              An object to configure options.\n * @param {boolean} [options.noTrailing] -   Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds\n *                                            while the throttled-function is being called. If noTrailing is false or unspecified, callback will be executed\n *                                            one final time after the last throttled-function call. (After the throttled-function has not been called for\n *                                            `delay` milliseconds, the internal counter is reset).\n * @param {boolean} [options.noLeading] -   Optional, defaults to false. If noLeading is false, the first throttled-function call will execute callback\n *                                            immediately. If noLeading is true, the first the callback execution will be skipped. It should be noted that\n *                                            callback will never executed if both noLeading = true and noTrailing = true.\n * @param {boolean} [options.debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is\n *                                            false (at end), schedule `callback` to execute after `delay` ms.\n *\n * @returns {Function} A new, throttled, function.\n */\nfunction throttle (delay, callback, options) {\n  var _ref = options || {},\n    _ref$noTrailing = _ref.noTrailing,\n    noTrailing = _ref$noTrailing === void 0 ? false : _ref$noTrailing,\n    _ref$noLeading = _ref.noLeading,\n    noLeading = _ref$noLeading === void 0 ? false : _ref$noLeading,\n    _ref$debounceMode = _ref.debounceMode,\n    debounceMode = _ref$debounceMode === void 0 ? undefined : _ref$debounceMode;\n  /*\n   * After wrapper has stopped being called, this timeout ensures that\n   * `callback` is executed at the proper times in `throttle` and `end`\n   * debounce modes.\n   */\n  var timeoutID;\n  var cancelled = false;\n\n  // Keep track of the last time `callback` was executed.\n  var lastExec = 0;\n\n  // Function to clear existing timeout\n  function clearExistingTimeout() {\n    if (timeoutID) {\n      clearTimeout(timeoutID);\n    }\n  }\n\n  // Function to cancel next exec\n  function cancel(options) {\n    var _ref2 = options || {},\n      _ref2$upcomingOnly = _ref2.upcomingOnly,\n      upcomingOnly = _ref2$upcomingOnly === void 0 ? false : _ref2$upcomingOnly;\n    clearExistingTimeout();\n    cancelled = !upcomingOnly;\n  }\n\n  /*\n   * The `wrapper` function encapsulates all of the throttling / debouncing\n   * functionality and when executed will limit the rate at which `callback`\n   * is executed.\n   */\n  function wrapper() {\n    for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {\n      arguments_[_key] = arguments[_key];\n    }\n    var self = this;\n    var elapsed = Date.now() - lastExec;\n    if (cancelled) {\n      return;\n    }\n\n    // Execute `callback` and update the `lastExec` timestamp.\n    function exec() {\n      lastExec = Date.now();\n      callback.apply(self, arguments_);\n    }\n\n    /*\n     * If `debounceMode` is true (at begin) this is used to clear the flag\n     * to allow future `callback` executions.\n     */\n    function clear() {\n      timeoutID = undefined;\n    }\n    if (!noLeading && debounceMode && !timeoutID) {\n      /*\n       * Since `wrapper` is being called for the first time and\n       * `debounceMode` is true (at begin), execute `callback`\n       * and noLeading != true.\n       */\n      exec();\n    }\n    clearExistingTimeout();\n    if (debounceMode === undefined && elapsed > delay) {\n      if (noLeading) {\n        /*\n         * In throttle mode with noLeading, if `delay` time has\n         * been exceeded, update `lastExec` and schedule `callback`\n         * to execute after `delay` ms.\n         */\n        lastExec = Date.now();\n        if (!noTrailing) {\n          timeoutID = setTimeout(debounceMode ? clear : exec, delay);\n        }\n      } else {\n        /*\n         * In throttle mode without noLeading, if `delay` time has been exceeded, execute\n         * `callback`.\n         */\n        exec();\n      }\n    } else if (noTrailing !== true) {\n      /*\n       * In trailing throttle mode, since `delay` time has not been\n       * exceeded, schedule `callback` to execute `delay` ms after most\n       * recent execution.\n       *\n       * If `debounceMode` is true (at begin), schedule `clear` to execute\n       * after `delay` ms.\n       *\n       * If `debounceMode` is false (at end), schedule `callback` to\n       * execute after `delay` ms.\n       */\n      timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);\n    }\n  }\n  wrapper.cancel = cancel;\n\n  // Return the wrapper function.\n  return wrapper;\n}\n\n/* eslint-disable no-undefined */\n\n/**\n * Debounce execution of a function. Debouncing, unlike throttling,\n * guarantees that a function is only executed a single time, either at the\n * very beginning of a series of calls, or at the very end.\n *\n * @param {number} delay -               A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {Function} callback -          A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n *                                        to `callback` when the debounced-function is executed.\n * @param {object} [options] -           An object to configure options.\n * @param {boolean} [options.atBegin] -  Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds\n *                                        after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.\n *                                        (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).\n *\n * @returns {Function} A new, debounced function.\n */\nfunction debounce (delay, callback, options) {\n  var _ref = options || {},\n    _ref$atBegin = _ref.atBegin,\n    atBegin = _ref$atBegin === void 0 ? false : _ref$atBegin;\n  return throttle(delay, callback, {\n    debounceMode: atBegin !== false\n  });\n}\n\nexport { debounce, throttle };\n//# sourceMappingURL=index.js.map\n","import { createContext } from 'react';\nconst RowContext = /*#__PURE__*/createContext({});\nexport default RowContext;","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { ConfigContext } from '../config-provider';\nimport RowContext from './RowContext';\nimport { useColStyle } from './style';\nfunction parseFlex(flex) {\n  if (typeof flex === 'number') {\n    return `${flex} ${flex} auto`;\n  }\n  if (/^\\d+(\\.\\d+)?(px|em|rem|%)$/.test(flex)) {\n    return `0 0 ${flex}`;\n  }\n  return flex;\n}\nconst sizes = ['xs', 'sm', 'md', 'lg', 'xl', 'xxl'];\nconst Col = /*#__PURE__*/React.forwardRef((props, ref) => {\n  const {\n    getPrefixCls,\n    direction\n  } = React.useContext(ConfigContext);\n  const {\n    gutter,\n    wrap\n  } = React.useContext(RowContext);\n  const {\n      prefixCls: customizePrefixCls,\n      span,\n      order,\n      offset,\n      push,\n      pull,\n      className,\n      children,\n      flex,\n      style\n    } = props,\n    others = __rest(props, [\"prefixCls\", \"span\", \"order\", \"offset\", \"push\", \"pull\", \"className\", \"children\", \"flex\", \"style\"]);\n  const prefixCls = getPrefixCls('col', customizePrefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useColStyle(prefixCls);\n  // ===================== Size ======================\n  const sizeStyle = {};\n  let sizeClassObj = {};\n  sizes.forEach(size => {\n    let sizeProps = {};\n    const propSize = props[size];\n    if (typeof propSize === 'number') {\n      sizeProps.span = propSize;\n    } else if (typeof propSize === 'object') {\n      sizeProps = propSize || {};\n    }\n    delete others[size];\n    sizeClassObj = Object.assign(Object.assign({}, sizeClassObj), {\n      [`${prefixCls}-${size}-${sizeProps.span}`]: sizeProps.span !== undefined,\n      [`${prefixCls}-${size}-order-${sizeProps.order}`]: sizeProps.order || sizeProps.order === 0,\n      [`${prefixCls}-${size}-offset-${sizeProps.offset}`]: sizeProps.offset || sizeProps.offset === 0,\n      [`${prefixCls}-${size}-push-${sizeProps.push}`]: sizeProps.push || sizeProps.push === 0,\n      [`${prefixCls}-${size}-pull-${sizeProps.pull}`]: sizeProps.pull || sizeProps.pull === 0,\n      [`${prefixCls}-rtl`]: direction === 'rtl'\n    });\n    // Responsive flex layout\n    if (sizeProps.flex) {\n      sizeClassObj[`${prefixCls}-${size}-flex`] = true;\n      sizeStyle[`--${prefixCls}-${size}-flex`] = parseFlex(sizeProps.flex);\n    }\n  });\n  // ==================== Normal =====================\n  const classes = classNames(prefixCls, {\n    [`${prefixCls}-${span}`]: span !== undefined,\n    [`${prefixCls}-order-${order}`]: order,\n    [`${prefixCls}-offset-${offset}`]: offset,\n    [`${prefixCls}-push-${push}`]: push,\n    [`${prefixCls}-pull-${pull}`]: pull\n  }, className, sizeClassObj, hashId, cssVarCls);\n  const mergedStyle = {};\n  // Horizontal gutter use padding\n  if (gutter && gutter[0] > 0) {\n    const horizontalGutter = gutter[0] / 2;\n    mergedStyle.paddingLeft = horizontalGutter;\n    mergedStyle.paddingRight = horizontalGutter;\n  }\n  if (flex) {\n    mergedStyle.flex = parseFlex(flex);\n    // Hack for Firefox to avoid size issue\n    // https://github.com/ant-design/ant-design/pull/20023#issuecomment-564389553\n    if (wrap === false && !mergedStyle.minWidth) {\n      mergedStyle.minWidth = 0;\n    }\n  }\n  // ==================== Render =====================\n  return wrapCSSVar(/*#__PURE__*/React.createElement(\"div\", Object.assign({}, others, {\n    style: Object.assign(Object.assign(Object.assign({}, mergedStyle), style), sizeStyle),\n    className: classes,\n    ref: ref\n  }), children));\n});\nif (process.env.NODE_ENV !== 'production') {\n  Col.displayName = 'Col';\n}\nexport default Col;","import { responsiveArray } from '../../_util/responsiveObserver';\nexport default function useGutter(gutter, screens) {\n  const results = [undefined, undefined];\n  const normalizedGutter = Array.isArray(gutter) ? gutter : [gutter, undefined];\n  // By default use as `xs`\n  const mergedScreens = screens || {\n    xs: true,\n    sm: true,\n    md: true,\n    lg: true,\n    xl: true,\n    xxl: true\n  };\n  normalizedGutter.forEach((g, index) => {\n    if (typeof g === 'object' && g !== null) {\n      for (let i = 0; i < responsiveArray.length; i++) {\n        const breakpoint = responsiveArray[i];\n        if (mergedScreens[breakpoint] && g[breakpoint] !== undefined) {\n          results[index] = g[breakpoint];\n          break;\n        }\n      }\n    } else {\n      results[index] = g;\n    }\n  });\n  return results;\n}","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { responsiveArray } from '../_util/responsiveObserver';\nimport { ConfigContext } from '../config-provider';\nimport useBreakpoint from './hooks/useBreakpoint';\nimport useGutter from './hooks/useGutter';\nimport RowContext from './RowContext';\nimport { useRowStyle } from './style';\nconst _RowAligns = ['top', 'middle', 'bottom', 'stretch'];\nconst _RowJustify = ['start', 'end', 'center', 'space-around', 'space-between', 'space-evenly'];\nfunction useMergedPropByScreen(oriProp, screen) {\n  const [prop, setProp] = React.useState(typeof oriProp === 'string' ? oriProp : '');\n  const calcMergedAlignOrJustify = () => {\n    if (typeof oriProp === 'string') {\n      setProp(oriProp);\n    }\n    if (typeof oriProp !== 'object') {\n      return;\n    }\n    for (let i = 0; i < responsiveArray.length; i++) {\n      const breakpoint = responsiveArray[i];\n      // if do not match, do nothing\n      if (!screen || !screen[breakpoint]) {\n        continue;\n      }\n      const curVal = oriProp[breakpoint];\n      if (curVal !== undefined) {\n        setProp(curVal);\n        return;\n      }\n    }\n  };\n  React.useEffect(() => {\n    calcMergedAlignOrJustify();\n  }, [JSON.stringify(oriProp), screen]);\n  return prop;\n}\nconst Row = /*#__PURE__*/React.forwardRef((props, ref) => {\n  const {\n      prefixCls: customizePrefixCls,\n      justify,\n      align,\n      className,\n      style,\n      children,\n      gutter = 0,\n      wrap\n    } = props,\n    others = __rest(props, [\"prefixCls\", \"justify\", \"align\", \"className\", \"style\", \"children\", \"gutter\", \"wrap\"]);\n  const {\n    getPrefixCls,\n    direction\n  } = React.useContext(ConfigContext);\n  const screens = useBreakpoint(true, null);\n  const mergedAlign = useMergedPropByScreen(align, screens);\n  const mergedJustify = useMergedPropByScreen(justify, screens);\n  const prefixCls = getPrefixCls('row', customizePrefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useRowStyle(prefixCls);\n  const gutters = useGutter(gutter, screens);\n  const classes = classNames(prefixCls, {\n    [`${prefixCls}-no-wrap`]: wrap === false,\n    [`${prefixCls}-${mergedJustify}`]: mergedJustify,\n    [`${prefixCls}-${mergedAlign}`]: mergedAlign,\n    [`${prefixCls}-rtl`]: direction === 'rtl'\n  }, className, hashId, cssVarCls);\n  // Add gutter related style\n  const rowStyle = {};\n  const horizontalGutter = gutters[0] != null && gutters[0] > 0 ? gutters[0] / -2 : undefined;\n  if (horizontalGutter) {\n    rowStyle.marginLeft = horizontalGutter;\n    rowStyle.marginRight = horizontalGutter;\n  }\n  // \"gutters\" is a new array in each rendering phase, it'll make 'React.useMemo' effectless.\n  // So we deconstruct \"gutters\" variable here.\n  const [gutterH, gutterV] = gutters;\n  rowStyle.rowGap = gutterV;\n  const rowContext = React.useMemo(() => ({\n    gutter: [gutterH, gutterV],\n    wrap\n  }), [gutterH, gutterV, wrap]);\n  return wrapCSSVar(/*#__PURE__*/React.createElement(RowContext.Provider, {\n    value: rowContext\n  }, /*#__PURE__*/React.createElement(\"div\", Object.assign({}, others, {\n    className: classes,\n    style: Object.assign(Object.assign({}, rowStyle), style),\n    ref: ref\n  }), children)));\n});\nif (process.env.NODE_ENV !== 'production') {\n  Row.displayName = 'Row';\n}\nexport default Row;","import { unit } from '@ant-design/cssinjs';\nimport { resetComponent } from '../../style';\nimport { genStyleHooks, mergeToken } from '../../theme/internal';\n// ============================== Size ================================\nconst genSizeDividerStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    [componentCls]: {\n      '&-horizontal': {\n        [`&${componentCls}`]: {\n          '&-sm': {\n            marginBlock: token.marginXS\n          },\n          '&-md': {\n            marginBlock: token.margin\n          }\n        }\n      }\n    }\n  };\n};\n// ============================== Shared ==============================\nconst genSharedDividerStyle = token => {\n  const {\n    componentCls,\n    sizePaddingEdgeHorizontal,\n    colorSplit,\n    lineWidth,\n    textPaddingInline,\n    orientationMargin,\n    verticalMarginInline\n  } = token;\n  return {\n    [componentCls]: Object.assign(Object.assign({}, resetComponent(token)), {\n      borderBlockStart: `${unit(lineWidth)} solid ${colorSplit}`,\n      // vertical\n      '&-vertical': {\n        position: 'relative',\n        top: '-0.06em',\n        display: 'inline-block',\n        height: '0.9em',\n        marginInline: verticalMarginInline,\n        marginBlock: 0,\n        verticalAlign: 'middle',\n        borderTop: 0,\n        borderInlineStart: `${unit(lineWidth)} solid ${colorSplit}`\n      },\n      '&-horizontal': {\n        display: 'flex',\n        clear: 'both',\n        width: '100%',\n        minWidth: '100%',\n        // Fix https://github.com/ant-design/ant-design/issues/10914\n        margin: `${unit(token.marginLG)} 0`\n      },\n      [`&-horizontal${componentCls}-with-text`]: {\n        display: 'flex',\n        alignItems: 'center',\n        margin: `${unit(token.dividerHorizontalWithTextGutterMargin)} 0`,\n        color: token.colorTextHeading,\n        fontWeight: 500,\n        fontSize: token.fontSizeLG,\n        whiteSpace: 'nowrap',\n        textAlign: 'center',\n        borderBlockStart: `0 ${colorSplit}`,\n        '&::before, &::after': {\n          position: 'relative',\n          width: '50%',\n          borderBlockStart: `${unit(lineWidth)} solid transparent`,\n          // Chrome not accept `inherit` in `border-top`\n          borderBlockStartColor: 'inherit',\n          borderBlockEnd: 0,\n          transform: 'translateY(50%)',\n          content: \"''\"\n        }\n      },\n      [`&-horizontal${componentCls}-with-text-start`]: {\n        '&::before': {\n          width: `calc(${orientationMargin} * 100%)`\n        },\n        '&::after': {\n          width: `calc(100% - ${orientationMargin} * 100%)`\n        }\n      },\n      [`&-horizontal${componentCls}-with-text-end`]: {\n        '&::before': {\n          width: `calc(100% - ${orientationMargin} * 100%)`\n        },\n        '&::after': {\n          width: `calc(${orientationMargin} * 100%)`\n        }\n      },\n      [`${componentCls}-inner-text`]: {\n        display: 'inline-block',\n        paddingBlock: 0,\n        paddingInline: textPaddingInline\n      },\n      '&-dashed': {\n        background: 'none',\n        borderColor: colorSplit,\n        borderStyle: 'dashed',\n        borderWidth: `${unit(lineWidth)} 0 0`\n      },\n      [`&-horizontal${componentCls}-with-text${componentCls}-dashed`]: {\n        '&::before, &::after': {\n          borderStyle: 'dashed none none'\n        }\n      },\n      [`&-vertical${componentCls}-dashed`]: {\n        borderInlineStartWidth: lineWidth,\n        borderInlineEnd: 0,\n        borderBlockStart: 0,\n        borderBlockEnd: 0\n      },\n      '&-dotted': {\n        background: 'none',\n        borderColor: colorSplit,\n        borderStyle: 'dotted',\n        borderWidth: `${unit(lineWidth)} 0 0`\n      },\n      [`&-horizontal${componentCls}-with-text${componentCls}-dotted`]: {\n        '&::before, &::after': {\n          borderStyle: 'dotted none none'\n        }\n      },\n      [`&-vertical${componentCls}-dotted`]: {\n        borderInlineStartWidth: lineWidth,\n        borderInlineEnd: 0,\n        borderBlockStart: 0,\n        borderBlockEnd: 0\n      },\n      [`&-plain${componentCls}-with-text`]: {\n        color: token.colorText,\n        fontWeight: 'normal',\n        fontSize: token.fontSize\n      },\n      [`&-horizontal${componentCls}-with-text-start${componentCls}-no-default-orientation-margin-start`]: {\n        '&::before': {\n          width: 0\n        },\n        '&::after': {\n          width: '100%'\n        },\n        [`${componentCls}-inner-text`]: {\n          paddingInlineStart: sizePaddingEdgeHorizontal\n        }\n      },\n      [`&-horizontal${componentCls}-with-text-end${componentCls}-no-default-orientation-margin-end`]: {\n        '&::before': {\n          width: '100%'\n        },\n        '&::after': {\n          width: 0\n        },\n        [`${componentCls}-inner-text`]: {\n          paddingInlineEnd: sizePaddingEdgeHorizontal\n        }\n      }\n    })\n  };\n};\nexport const prepareComponentToken = token => ({\n  textPaddingInline: '1em',\n  orientationMargin: 0.05,\n  verticalMarginInline: token.marginXS\n});\n// ============================== Export ==============================\nexport default genStyleHooks('Divider', token => {\n  const dividerToken = mergeToken(token, {\n    dividerHorizontalWithTextGutterMargin: token.margin,\n    sizePaddingEdgeHorizontal: 0\n  });\n  return [genSharedDividerStyle(dividerToken), genSizeDividerStyle(dividerToken)];\n}, prepareComponentToken, {\n  unitless: {\n    orientationMargin: true\n  }\n});","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { devUseWarning } from '../_util/warning';\nimport { useComponentConfig } from '../config-provider/context';\nimport useSize from '../config-provider/hooks/useSize';\nimport useStyle from './style';\nconst sizeClassNameMap = {\n  small: 'sm',\n  middle: 'md'\n};\nconst Divider = props => {\n  const {\n    getPrefixCls,\n    direction,\n    className: dividerClassName,\n    style: dividerStyle\n  } = useComponentConfig('divider');\n  const {\n      prefixCls: customizePrefixCls,\n      type = 'horizontal',\n      orientation = 'center',\n      orientationMargin,\n      className,\n      rootClassName,\n      children,\n      dashed,\n      variant = 'solid',\n      plain,\n      style,\n      size: customSize\n    } = props,\n    restProps = __rest(props, [\"prefixCls\", \"type\", \"orientation\", \"orientationMargin\", \"className\", \"rootClassName\", \"children\", \"dashed\", \"variant\", \"plain\", \"style\", \"size\"]);\n  const prefixCls = getPrefixCls('divider', customizePrefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  const sizeFullName = useSize(customSize);\n  const sizeCls = sizeClassNameMap[sizeFullName];\n  const hasChildren = !!children;\n  const mergedOrientation = React.useMemo(() => {\n    if (orientation === 'left') {\n      return direction === 'rtl' ? 'end' : 'start';\n    }\n    if (orientation === 'right') {\n      return direction === 'rtl' ? 'start' : 'end';\n    }\n    return orientation;\n  }, [direction, orientation]);\n  const hasMarginStart = mergedOrientation === 'start' && orientationMargin != null;\n  const hasMarginEnd = mergedOrientation === 'end' && orientationMargin != null;\n  const classString = classNames(prefixCls, dividerClassName, hashId, cssVarCls, `${prefixCls}-${type}`, {\n    [`${prefixCls}-with-text`]: hasChildren,\n    [`${prefixCls}-with-text-${mergedOrientation}`]: hasChildren,\n    [`${prefixCls}-dashed`]: !!dashed,\n    [`${prefixCls}-${variant}`]: variant !== 'solid',\n    [`${prefixCls}-plain`]: !!plain,\n    [`${prefixCls}-rtl`]: direction === 'rtl',\n    [`${prefixCls}-no-default-orientation-margin-start`]: hasMarginStart,\n    [`${prefixCls}-no-default-orientation-margin-end`]: hasMarginEnd,\n    [`${prefixCls}-${sizeCls}`]: !!sizeCls\n  }, className, rootClassName);\n  const memoizedOrientationMargin = React.useMemo(() => {\n    if (typeof orientationMargin === 'number') {\n      return orientationMargin;\n    }\n    if (/^\\d+$/.test(orientationMargin)) {\n      return Number(orientationMargin);\n    }\n    return orientationMargin;\n  }, [orientationMargin]);\n  const innerStyle = {\n    marginInlineStart: hasMarginStart ? memoizedOrientationMargin : undefined,\n    marginInlineEnd: hasMarginEnd ? memoizedOrientationMargin : undefined\n  };\n  // Warning children not work in vertical mode\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('Divider');\n    process.env.NODE_ENV !== \"production\" ? warning(!children || type !== 'vertical', 'usage', '`children` not working in `vertical` mode.') : void 0;\n  }\n  return wrapCSSVar(/*#__PURE__*/React.createElement(\"div\", Object.assign({\n    className: classString,\n    style: Object.assign(Object.assign({}, dividerStyle), style)\n  }, restProps, {\n    role: \"separator\"\n  }), children && type !== 'vertical' && (/*#__PURE__*/React.createElement(\"span\", {\n    className: `${prefixCls}-inner-text`,\n    style: innerStyle\n  }, children))));\n};\nif (process.env.NODE_ENV !== 'production') {\n  Divider.displayName = 'Divider';\n}\nexport default Divider;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport { composeRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nvar calcThumbStyle = function calcThumbStyle(targetElement, vertical) {\n  if (!targetElement) return null;\n  var style = {\n    left: targetElement.offsetLeft,\n    right: targetElement.parentElement.clientWidth - targetElement.clientWidth - targetElement.offsetLeft,\n    width: targetElement.clientWidth,\n    top: targetElement.offsetTop,\n    bottom: targetElement.parentElement.clientHeight - targetElement.clientHeight - targetElement.offsetTop,\n    height: targetElement.clientHeight\n  };\n  if (vertical) {\n    // Adjusts positioning and size for vertical layout by setting horizontal properties to 0 and using vertical properties from the style object.\n    return {\n      left: 0,\n      right: 0,\n      width: 0,\n      top: style.top,\n      bottom: style.bottom,\n      height: style.height\n    };\n  }\n  return {\n    left: style.left,\n    right: style.right,\n    width: style.width,\n    top: 0,\n    bottom: 0,\n    height: 0\n  };\n};\nvar toPX = function toPX(value) {\n  return value !== undefined ? \"\".concat(value, \"px\") : undefined;\n};\nexport default function MotionThumb(props) {\n  var prefixCls = props.prefixCls,\n    containerRef = props.containerRef,\n    value = props.value,\n    getValueIndex = props.getValueIndex,\n    motionName = props.motionName,\n    onMotionStart = props.onMotionStart,\n    onMotionEnd = props.onMotionEnd,\n    direction = props.direction,\n    _props$vertical = props.vertical,\n    vertical = _props$vertical === void 0 ? false : _props$vertical;\n  var thumbRef = React.useRef(null);\n  var _React$useState = React.useState(value),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    prevValue = _React$useState2[0],\n    setPrevValue = _React$useState2[1];\n\n  // =========================== Effect ===========================\n  var findValueElement = function findValueElement(val) {\n    var _containerRef$current;\n    var index = getValueIndex(val);\n    var ele = (_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : _containerRef$current.querySelectorAll(\".\".concat(prefixCls, \"-item\"))[index];\n    return (ele === null || ele === void 0 ? void 0 : ele.offsetParent) && ele;\n  };\n  var _React$useState3 = React.useState(null),\n    _React$useState4 = _slicedToArray(_React$useState3, 2),\n    prevStyle = _React$useState4[0],\n    setPrevStyle = _React$useState4[1];\n  var _React$useState5 = React.useState(null),\n    _React$useState6 = _slicedToArray(_React$useState5, 2),\n    nextStyle = _React$useState6[0],\n    setNextStyle = _React$useState6[1];\n  useLayoutEffect(function () {\n    if (prevValue !== value) {\n      var prev = findValueElement(prevValue);\n      var next = findValueElement(value);\n      var calcPrevStyle = calcThumbStyle(prev, vertical);\n      var calcNextStyle = calcThumbStyle(next, vertical);\n      setPrevValue(value);\n      setPrevStyle(calcPrevStyle);\n      setNextStyle(calcNextStyle);\n      if (prev && next) {\n        onMotionStart();\n      } else {\n        onMotionEnd();\n      }\n    }\n  }, [value]);\n  var thumbStart = React.useMemo(function () {\n    if (vertical) {\n      var _prevStyle$top;\n      return toPX((_prevStyle$top = prevStyle === null || prevStyle === void 0 ? void 0 : prevStyle.top) !== null && _prevStyle$top !== void 0 ? _prevStyle$top : 0);\n    }\n    if (direction === 'rtl') {\n      return toPX(-(prevStyle === null || prevStyle === void 0 ? void 0 : prevStyle.right));\n    }\n    return toPX(prevStyle === null || prevStyle === void 0 ? void 0 : prevStyle.left);\n  }, [vertical, direction, prevStyle]);\n  var thumbActive = React.useMemo(function () {\n    if (vertical) {\n      var _nextStyle$top;\n      return toPX((_nextStyle$top = nextStyle === null || nextStyle === void 0 ? void 0 : nextStyle.top) !== null && _nextStyle$top !== void 0 ? _nextStyle$top : 0);\n    }\n    if (direction === 'rtl') {\n      return toPX(-(nextStyle === null || nextStyle === void 0 ? void 0 : nextStyle.right));\n    }\n    return toPX(nextStyle === null || nextStyle === void 0 ? void 0 : nextStyle.left);\n  }, [vertical, direction, nextStyle]);\n\n  // =========================== Motion ===========================\n  var onAppearStart = function onAppearStart() {\n    if (vertical) {\n      return {\n        transform: 'translateY(var(--thumb-start-top))',\n        height: 'var(--thumb-start-height)'\n      };\n    }\n    return {\n      transform: 'translateX(var(--thumb-start-left))',\n      width: 'var(--thumb-start-width)'\n    };\n  };\n  var onAppearActive = function onAppearActive() {\n    if (vertical) {\n      return {\n        transform: 'translateY(var(--thumb-active-top))',\n        height: 'var(--thumb-active-height)'\n      };\n    }\n    return {\n      transform: 'translateX(var(--thumb-active-left))',\n      width: 'var(--thumb-active-width)'\n    };\n  };\n  var onVisibleChanged = function onVisibleChanged() {\n    setPrevStyle(null);\n    setNextStyle(null);\n    onMotionEnd();\n  };\n\n  // =========================== Render ===========================\n  // No need motion when nothing exist in queue\n  if (!prevStyle || !nextStyle) {\n    return null;\n  }\n  return /*#__PURE__*/React.createElement(CSSMotion, {\n    visible: true,\n    motionName: motionName,\n    motionAppear: true,\n    onAppearStart: onAppearStart,\n    onAppearActive: onAppearActive,\n    onVisibleChanged: onVisibleChanged\n  }, function (_ref, ref) {\n    var motionClassName = _ref.className,\n      motionStyle = _ref.style;\n    var mergedStyle = _objectSpread(_objectSpread({}, motionStyle), {}, {\n      '--thumb-start-left': thumbStart,\n      '--thumb-start-width': toPX(prevStyle === null || prevStyle === void 0 ? void 0 : prevStyle.width),\n      '--thumb-active-left': thumbActive,\n      '--thumb-active-width': toPX(nextStyle === null || nextStyle === void 0 ? void 0 : nextStyle.width),\n      '--thumb-start-top': thumbStart,\n      '--thumb-start-height': toPX(prevStyle === null || prevStyle === void 0 ? void 0 : prevStyle.height),\n      '--thumb-active-top': thumbActive,\n      '--thumb-active-height': toPX(nextStyle === null || nextStyle === void 0 ? void 0 : nextStyle.height)\n    });\n\n    // It's little ugly which should be refactor when @umi/test update to latest jsdom\n    var motionProps = {\n      ref: composeRef(thumbRef, ref),\n      style: mergedStyle,\n      className: classNames(\"\".concat(prefixCls, \"-thumb\"), motionClassName)\n    };\n    if (process.env.NODE_ENV === 'test') {\n      motionProps['data-test-style'] = JSON.stringify(mergedStyle);\n    }\n    return /*#__PURE__*/React.createElement(\"div\", motionProps);\n  });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar _excluded = [\"prefixCls\", \"direction\", \"vertical\", \"options\", \"disabled\", \"defaultValue\", \"value\", \"name\", \"onChange\", \"className\", \"motionName\"];\nimport classNames from 'classnames';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport omit from \"rc-util/es/omit\";\nimport { composeRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport MotionThumb from \"./MotionThumb\";\nfunction getValidTitle(option) {\n  if (typeof option.title !== 'undefined') {\n    return option.title;\n  }\n\n  // read `label` when title is `undefined`\n  if (_typeof(option.label) !== 'object') {\n    var _option$label;\n    return (_option$label = option.label) === null || _option$label === void 0 ? void 0 : _option$label.toString();\n  }\n}\nfunction normalizeOptions(options) {\n  return options.map(function (option) {\n    if (_typeof(option) === 'object' && option !== null) {\n      var validTitle = getValidTitle(option);\n      return _objectSpread(_objectSpread({}, option), {}, {\n        title: validTitle\n      });\n    }\n    return {\n      label: option === null || option === void 0 ? void 0 : option.toString(),\n      title: option === null || option === void 0 ? void 0 : option.toString(),\n      value: option\n    };\n  });\n}\nvar InternalSegmentedOption = function InternalSegmentedOption(_ref) {\n  var prefixCls = _ref.prefixCls,\n    className = _ref.className,\n    disabled = _ref.disabled,\n    checked = _ref.checked,\n    label = _ref.label,\n    title = _ref.title,\n    value = _ref.value,\n    name = _ref.name,\n    onChange = _ref.onChange,\n    onFocus = _ref.onFocus,\n    onBlur = _ref.onBlur,\n    onKeyDown = _ref.onKeyDown,\n    onKeyUp = _ref.onKeyUp,\n    onMouseDown = _ref.onMouseDown;\n  var handleChange = function handleChange(event) {\n    if (disabled) {\n      return;\n    }\n    onChange(event, value);\n  };\n  return /*#__PURE__*/React.createElement(\"label\", {\n    className: classNames(className, _defineProperty({}, \"\".concat(prefixCls, \"-item-disabled\"), disabled)),\n    onMouseDown: onMouseDown\n  }, /*#__PURE__*/React.createElement(\"input\", {\n    name: name,\n    className: \"\".concat(prefixCls, \"-item-input\"),\n    type: \"radio\",\n    disabled: disabled,\n    checked: checked,\n    onChange: handleChange,\n    onFocus: onFocus,\n    onBlur: onBlur,\n    onKeyDown: onKeyDown,\n    onKeyUp: onKeyUp\n  }), /*#__PURE__*/React.createElement(\"div\", {\n    className: \"\".concat(prefixCls, \"-item-label\"),\n    title: title,\n    \"aria-selected\": checked\n  }, label));\n};\nvar Segmented = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var _segmentedOptions$, _classNames2;\n  var _props$prefixCls = props.prefixCls,\n    prefixCls = _props$prefixCls === void 0 ? 'rc-segmented' : _props$prefixCls,\n    direction = props.direction,\n    vertical = props.vertical,\n    _props$options = props.options,\n    options = _props$options === void 0 ? [] : _props$options,\n    disabled = props.disabled,\n    defaultValue = props.defaultValue,\n    value = props.value,\n    name = props.name,\n    onChange = props.onChange,\n    _props$className = props.className,\n    className = _props$className === void 0 ? '' : _props$className,\n    _props$motionName = props.motionName,\n    motionName = _props$motionName === void 0 ? 'thumb-motion' : _props$motionName,\n    restProps = _objectWithoutProperties(props, _excluded);\n  var containerRef = React.useRef(null);\n  var mergedRef = React.useMemo(function () {\n    return composeRef(containerRef, ref);\n  }, [containerRef, ref]);\n  var segmentedOptions = React.useMemo(function () {\n    return normalizeOptions(options);\n  }, [options]);\n\n  // Note: We should not auto switch value when value not exist in options\n  // which may break single source of truth.\n  var _useMergedState = useMergedState((_segmentedOptions$ = segmentedOptions[0]) === null || _segmentedOptions$ === void 0 ? void 0 : _segmentedOptions$.value, {\n      value: value,\n      defaultValue: defaultValue\n    }),\n    _useMergedState2 = _slicedToArray(_useMergedState, 2),\n    rawValue = _useMergedState2[0],\n    setRawValue = _useMergedState2[1];\n\n  // ======================= Change ========================\n  var _React$useState = React.useState(false),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    thumbShow = _React$useState2[0],\n    setThumbShow = _React$useState2[1];\n  var handleChange = function handleChange(event, val) {\n    setRawValue(val);\n    onChange === null || onChange === void 0 || onChange(val);\n  };\n  var divProps = omit(restProps, ['children']);\n\n  // ======================= Focus ========================\n  var _React$useState3 = React.useState(false),\n    _React$useState4 = _slicedToArray(_React$useState3, 2),\n    isKeyboard = _React$useState4[0],\n    setIsKeyboard = _React$useState4[1];\n  var _React$useState5 = React.useState(false),\n    _React$useState6 = _slicedToArray(_React$useState5, 2),\n    isFocused = _React$useState6[0],\n    setIsFocused = _React$useState6[1];\n  var handleFocus = function handleFocus() {\n    setIsFocused(true);\n  };\n  var handleBlur = function handleBlur() {\n    setIsFocused(false);\n  };\n  var handleMouseDown = function handleMouseDown() {\n    setIsKeyboard(false);\n  };\n\n  // capture keyboard tab interaction for correct focus style\n  var handleKeyUp = function handleKeyUp(event) {\n    if (event.key === 'Tab') {\n      setIsKeyboard(true);\n    }\n  };\n\n  // ======================= Keyboard ========================\n  var onOffset = function onOffset(offset) {\n    var currentIndex = segmentedOptions.findIndex(function (option) {\n      return option.value === rawValue;\n    });\n    var total = segmentedOptions.length;\n    var nextIndex = (currentIndex + offset + total) % total;\n    var nextOption = segmentedOptions[nextIndex];\n    if (nextOption) {\n      setRawValue(nextOption.value);\n      onChange === null || onChange === void 0 || onChange(nextOption.value);\n    }\n  };\n  var handleKeyDown = function handleKeyDown(event) {\n    switch (event.key) {\n      case 'ArrowLeft':\n      case 'ArrowUp':\n        onOffset(-1);\n        break;\n      case 'ArrowRight':\n      case 'ArrowDown':\n        onOffset(1);\n        break;\n    }\n  };\n  return /*#__PURE__*/React.createElement(\"div\", _extends({\n    role: \"radiogroup\",\n    \"aria-label\": \"segmented control\",\n    tabIndex: disabled ? undefined : 0\n  }, divProps, {\n    className: classNames(prefixCls, (_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-disabled\"), disabled), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-vertical\"), vertical), _classNames2), className),\n    ref: mergedRef\n  }), /*#__PURE__*/React.createElement(\"div\", {\n    className: \"\".concat(prefixCls, \"-group\")\n  }, /*#__PURE__*/React.createElement(MotionThumb, {\n    vertical: vertical,\n    prefixCls: prefixCls,\n    value: rawValue,\n    containerRef: containerRef,\n    motionName: \"\".concat(prefixCls, \"-\").concat(motionName),\n    direction: direction,\n    getValueIndex: function getValueIndex(val) {\n      return segmentedOptions.findIndex(function (n) {\n        return n.value === val;\n      });\n    },\n    onMotionStart: function onMotionStart() {\n      setThumbShow(true);\n    },\n    onMotionEnd: function onMotionEnd() {\n      setThumbShow(false);\n    }\n  }), segmentedOptions.map(function (segmentedOption) {\n    var _classNames3;\n    return /*#__PURE__*/React.createElement(InternalSegmentedOption, _extends({}, segmentedOption, {\n      name: name,\n      key: segmentedOption.value,\n      prefixCls: prefixCls,\n      className: classNames(segmentedOption.className, \"\".concat(prefixCls, \"-item\"), (_classNames3 = {}, _defineProperty(_classNames3, \"\".concat(prefixCls, \"-item-selected\"), segmentedOption.value === rawValue && !thumbShow), _defineProperty(_classNames3, \"\".concat(prefixCls, \"-item-focused\"), isFocused && isKeyboard && segmentedOption.value === rawValue), _classNames3)),\n      checked: segmentedOption.value === rawValue,\n      onChange: handleChange,\n      onFocus: handleFocus,\n      onBlur: handleBlur,\n      onKeyDown: handleKeyDown,\n      onKeyUp: handleKeyUp,\n      onMouseDown: handleMouseDown,\n      disabled: !!disabled || !!segmentedOption.disabled\n    }));\n  })));\n});\nif (process.env.NODE_ENV !== 'production') {\n  Segmented.displayName = 'Segmented';\n}\nvar TypedSegmented = Segmented;\nexport default TypedSegmented;","import { unit } from '@ant-design/cssinjs';\nimport { genFocusOutline, genFocusStyle, resetComponent, textEllipsis } from '../../style';\nimport { genStyleHooks, mergeToken } from '../../theme/internal';\n// ============================== Mixins ==============================\nfunction getItemDisabledStyle(cls, token) {\n  return {\n    [`${cls}, ${cls}:hover, ${cls}:focus`]: {\n      color: token.colorTextDisabled,\n      cursor: 'not-allowed'\n    }\n  };\n}\nfunction getItemSelectedStyle(token) {\n  return {\n    backgroundColor: token.itemSelectedBg,\n    boxShadow: token.boxShadowTertiary\n  };\n}\nconst segmentedTextEllipsisCss = Object.assign({\n  overflow: 'hidden'\n}, textEllipsis);\n// ============================== Styles ==============================\nconst genSegmentedStyle = token => {\n  const {\n    componentCls\n  } = token;\n  const labelHeight = token.calc(token.controlHeight).sub(token.calc(token.trackPadding).mul(2)).equal();\n  const labelHeightLG = token.calc(token.controlHeightLG).sub(token.calc(token.trackPadding).mul(2)).equal();\n  const labelHeightSM = token.calc(token.controlHeightSM).sub(token.calc(token.trackPadding).mul(2)).equal();\n  return {\n    [componentCls]: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, resetComponent(token)), {\n      display: 'inline-block',\n      padding: token.trackPadding,\n      color: token.itemColor,\n      background: token.trackBg,\n      borderRadius: token.borderRadius,\n      transition: `all ${token.motionDurationMid} ${token.motionEaseInOut}`\n    }), genFocusStyle(token)), {\n      [`${componentCls}-group`]: {\n        position: 'relative',\n        display: 'flex',\n        alignItems: 'stretch',\n        justifyItems: 'flex-start',\n        flexDirection: 'row',\n        width: '100%'\n      },\n      // RTL styles\n      [`&${componentCls}-rtl`]: {\n        direction: 'rtl'\n      },\n      [`&${componentCls}-vertical`]: {\n        [`${componentCls}-group`]: {\n          flexDirection: 'column'\n        },\n        [`${componentCls}-thumb`]: {\n          width: '100%',\n          height: 0,\n          padding: `0 ${unit(token.paddingXXS)}`\n        }\n      },\n      // block styles\n      [`&${componentCls}-block`]: {\n        display: 'flex'\n      },\n      [`&${componentCls}-block ${componentCls}-item`]: {\n        flex: 1,\n        minWidth: 0\n      },\n      // item styles\n      [`${componentCls}-item`]: {\n        position: 'relative',\n        textAlign: 'center',\n        cursor: 'pointer',\n        transition: `color ${token.motionDurationMid} ${token.motionEaseInOut}`,\n        borderRadius: token.borderRadiusSM,\n        // Fix Safari render bug\n        // https://github.com/ant-design/ant-design/issues/45250\n        transform: 'translateZ(0)',\n        '&-selected': Object.assign(Object.assign({}, getItemSelectedStyle(token)), {\n          color: token.itemSelectedColor\n        }),\n        '&-focused': Object.assign({}, genFocusOutline(token)),\n        '&::after': {\n          content: '\"\"',\n          position: 'absolute',\n          zIndex: -1,\n          width: '100%',\n          height: '100%',\n          top: 0,\n          insetInlineStart: 0,\n          borderRadius: 'inherit',\n          opacity: 0,\n          transition: `opacity ${token.motionDurationMid}`,\n          // This is mandatory to make it not clickable or hoverable\n          // Ref: https://github.com/ant-design/ant-design/issues/40888\n          pointerEvents: 'none'\n        },\n        [`&:hover:not(${componentCls}-item-selected):not(${componentCls}-item-disabled)`]: {\n          color: token.itemHoverColor,\n          '&::after': {\n            opacity: 1,\n            backgroundColor: token.itemHoverBg\n          }\n        },\n        [`&:active:not(${componentCls}-item-selected):not(${componentCls}-item-disabled)`]: {\n          color: token.itemHoverColor,\n          '&::after': {\n            opacity: 1,\n            backgroundColor: token.itemActiveBg\n          }\n        },\n        '&-label': Object.assign({\n          minHeight: labelHeight,\n          lineHeight: unit(labelHeight),\n          padding: `0 ${unit(token.segmentedPaddingHorizontal)}`\n        }, segmentedTextEllipsisCss),\n        // syntactic sugar to add `icon` for Segmented Item\n        '&-icon + *': {\n          marginInlineStart: token.calc(token.marginSM).div(2).equal()\n        },\n        '&-input': {\n          position: 'absolute',\n          insetBlockStart: 0,\n          insetInlineStart: 0,\n          width: 0,\n          height: 0,\n          opacity: 0,\n          pointerEvents: 'none'\n        }\n      },\n      // thumb styles\n      [`${componentCls}-thumb`]: Object.assign(Object.assign({}, getItemSelectedStyle(token)), {\n        position: 'absolute',\n        insetBlockStart: 0,\n        insetInlineStart: 0,\n        width: 0,\n        height: '100%',\n        padding: `${unit(token.paddingXXS)} 0`,\n        borderRadius: token.borderRadiusSM,\n        transition: `transform ${token.motionDurationSlow} ${token.motionEaseInOut}, height ${token.motionDurationSlow} ${token.motionEaseInOut}`,\n        [`& ~ ${componentCls}-item:not(${componentCls}-item-selected):not(${componentCls}-item-disabled)::after`]: {\n          backgroundColor: 'transparent'\n        }\n      }),\n      // size styles\n      [`&${componentCls}-lg`]: {\n        borderRadius: token.borderRadiusLG,\n        [`${componentCls}-item-label`]: {\n          minHeight: labelHeightLG,\n          lineHeight: unit(labelHeightLG),\n          padding: `0 ${unit(token.segmentedPaddingHorizontal)}`,\n          fontSize: token.fontSizeLG\n        },\n        [`${componentCls}-item, ${componentCls}-thumb`]: {\n          borderRadius: token.borderRadius\n        }\n      },\n      [`&${componentCls}-sm`]: {\n        borderRadius: token.borderRadiusSM,\n        [`${componentCls}-item-label`]: {\n          minHeight: labelHeightSM,\n          lineHeight: unit(labelHeightSM),\n          padding: `0 ${unit(token.segmentedPaddingHorizontalSM)}`\n        },\n        [`${componentCls}-item, ${componentCls}-thumb`]: {\n          borderRadius: token.borderRadiusXS\n        }\n      }\n    }), getItemDisabledStyle(`&-disabled ${componentCls}-item`, token)), getItemDisabledStyle(`${componentCls}-item-disabled`, token)), {\n      // transition effect when `appear-active`\n      [`${componentCls}-thumb-motion-appear-active`]: {\n        transition: `transform ${token.motionDurationSlow} ${token.motionEaseInOut}, width ${token.motionDurationSlow} ${token.motionEaseInOut}`,\n        willChange: 'transform, width'\n      },\n      [`&${componentCls}-shape-round`]: {\n        borderRadius: 9999,\n        [`${componentCls}-item, ${componentCls}-thumb`]: {\n          borderRadius: 9999\n        }\n      }\n    })\n  };\n};\n// ============================== Export ==============================\nexport const prepareComponentToken = token => {\n  const {\n    colorTextLabel,\n    colorText,\n    colorFillSecondary,\n    colorBgElevated,\n    colorFill,\n    lineWidthBold,\n    colorBgLayout\n  } = token;\n  return {\n    trackPadding: lineWidthBold,\n    trackBg: colorBgLayout,\n    itemColor: colorTextLabel,\n    itemHoverColor: colorText,\n    itemHoverBg: colorFillSecondary,\n    itemSelectedBg: colorBgElevated,\n    itemActiveBg: colorFill,\n    itemSelectedColor: colorText\n  };\n};\nexport default genStyleHooks('Segmented', token => {\n  const {\n    lineWidth,\n    calc\n  } = token;\n  const segmentedToken = mergeToken(token, {\n    segmentedPaddingHorizontal: calc(token.controlPaddingHorizontal).sub(lineWidth).equal(),\n    segmentedPaddingHorizontalSM: calc(token.controlPaddingHorizontalSM).sub(lineWidth).equal()\n  });\n  return [genSegmentedStyle(segmentedToken)];\n}, prepareComponentToken);","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport RcSegmented from 'rc-segmented';\nimport useId from \"rc-util/es/hooks/useId\";\nimport { useComponentConfig } from '../config-provider/context';\nimport useSize from '../config-provider/hooks/useSize';\nimport useStyle from './style';\nfunction isSegmentedLabeledOptionWithIcon(option) {\n  return typeof option === 'object' && !!(option === null || option === void 0 ? void 0 : option.icon);\n}\nconst InternalSegmented = /*#__PURE__*/React.forwardRef((props, ref) => {\n  const defaultName = useId();\n  const {\n      prefixCls: customizePrefixCls,\n      className,\n      rootClassName,\n      block,\n      options = [],\n      size: customSize = 'middle',\n      style,\n      vertical,\n      shape = 'default',\n      name = defaultName\n    } = props,\n    restProps = __rest(props, [\"prefixCls\", \"className\", \"rootClassName\", \"block\", \"options\", \"size\", \"style\", \"vertical\", \"shape\", \"name\"]);\n  const {\n    getPrefixCls,\n    direction,\n    className: contextClassName,\n    style: contextStyle\n  } = useComponentConfig('segmented');\n  const prefixCls = getPrefixCls('segmented', customizePrefixCls);\n  // Style\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  // ===================== Size =====================\n  const mergedSize = useSize(customSize);\n  // syntactic sugar to support `icon` for Segmented Item\n  const extendedOptions = React.useMemo(() => options.map(option => {\n    if (isSegmentedLabeledOptionWithIcon(option)) {\n      const {\n          icon,\n          label\n        } = option,\n        restOption = __rest(option, [\"icon\", \"label\"]);\n      return Object.assign(Object.assign({}, restOption), {\n        label: (/*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"span\", {\n          className: `${prefixCls}-item-icon`\n        }, icon), label && /*#__PURE__*/React.createElement(\"span\", null, label)))\n      });\n    }\n    return option;\n  }), [options, prefixCls]);\n  const cls = classNames(className, rootClassName, contextClassName, {\n    [`${prefixCls}-block`]: block,\n    [`${prefixCls}-sm`]: mergedSize === 'small',\n    [`${prefixCls}-lg`]: mergedSize === 'large',\n    [`${prefixCls}-vertical`]: vertical,\n    [`${prefixCls}-shape-${shape}`]: shape === 'round'\n  }, hashId, cssVarCls);\n  const mergedStyle = Object.assign(Object.assign({}, contextStyle), style);\n  return wrapCSSVar(/*#__PURE__*/React.createElement(RcSegmented, Object.assign({}, restProps, {\n    name: name,\n    className: cls,\n    style: mergedStyle,\n    options: extendedOptions,\n    ref: ref,\n    prefixCls: prefixCls,\n    direction: direction,\n    vertical: vertical\n  })));\n});\nconst Segmented = InternalSegmented;\nif (process.env.NODE_ENV !== 'production') {\n  Segmented.displayName = 'Segmented';\n}\nexport default Segmented;","// This icon file is generated automatically.\nvar UpOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\" } }] }, \"name\": \"up\", \"theme\": \"outlined\" };\nexport default UpOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport UpOutlinedSvg from \"@ant-design/icons-svg/es/asn/UpOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar UpOutlined = function UpOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: UpOutlinedSvg\n  }));\n};\n\n/**![up](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTg5MC41IDc1NS4zTDUzNy45IDI2OS4yYy0xMi44LTE3LjYtMzktMTcuNi01MS43IDBMMTMzLjUgNzU1LjNBOCA4IDAgMDAxNDAgNzY4aDc1YzUuMSAwIDkuOS0yLjUgMTIuOS02LjZMNTEyIDM2OS44bDI4NC4xIDM5MS42YzMgNC4xIDcuOCA2LjYgMTIuOSA2LjZoNzVjNi41IDAgMTAuMy03LjQgNi41LTEyLjd6IiAvPjwvc3ZnPg==) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(UpOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'UpOutlined';\n}\nexport default RefIcon;","export function hasAddon(props) {\n  return !!(props.addonBefore || props.addonAfter);\n}\nexport function hasPrefixSuffix(props) {\n  return !!(props.prefix || props.suffix || props.allowClear);\n}\n\n// TODO: It's better to use `Proxy` replace the `element.value`. But we still need support IE11.\nfunction cloneEvent(event, target, value) {\n  // A bug report filed on WebKit's Bugzilla tracker, dating back to 2009, specifically addresses the issue of cloneNode() not copying files of <input type=\"file\"> elements.\n  // As of the last update, this bug was still marked as \"NEW,\" indicating that it might not have been resolved yet​​.\n  // https://bugs.webkit.org/show_bug.cgi?id=28123\n  var currentTarget = target.cloneNode(true);\n\n  // click clear icon\n  var newEvent = Object.create(event, {\n    target: {\n      value: currentTarget\n    },\n    currentTarget: {\n      value: currentTarget\n    }\n  });\n\n  // Fill data\n  currentTarget.value = value;\n\n  // Fill selection. Some type like `email` not support selection\n  // https://github.com/ant-design/ant-design/issues/47833\n  if (typeof target.selectionStart === 'number' && typeof target.selectionEnd === 'number') {\n    currentTarget.selectionStart = target.selectionStart;\n    currentTarget.selectionEnd = target.selectionEnd;\n  }\n  currentTarget.setSelectionRange = function () {\n    target.setSelectionRange.apply(target, arguments);\n  };\n  return newEvent;\n}\nexport function resolveOnChange(target, e, onChange, targetValue) {\n  if (!onChange) {\n    return;\n  }\n  var event = e;\n  if (e.type === 'click') {\n    // Clone a new target for event.\n    // Avoid the following usage, the setQuery method gets the original value.\n    //\n    // const [query, setQuery] = React.useState('');\n    // <Input\n    //   allowClear\n    //   value={query}\n    //   onChange={(e)=> {\n    //     setQuery((prevStatus) => e.target.value);\n    //   }}\n    // />\n\n    event = cloneEvent(e, target, '');\n    onChange(event);\n    return;\n  }\n\n  // Trigger by composition event, this means we need force change the input value\n  // https://github.com/ant-design/ant-design/issues/45737\n  // https://github.com/ant-design/ant-design/issues/46598\n  if (target.type !== 'file' && targetValue !== undefined) {\n    event = cloneEvent(e, target, targetValue);\n    onChange(event);\n    return;\n  }\n  onChange(event);\n}\nexport function triggerFocus(element, option) {\n  if (!element) return;\n  element.focus(option);\n\n  // Selection content\n  var _ref = option || {},\n    cursor = _ref.cursor;\n  if (cursor) {\n    var len = element.value.length;\n    switch (cursor) {\n      case 'start':\n        element.setSelectionRange(0, 0);\n        break;\n      case 'end':\n        element.setSelectionRange(len, len);\n        break;\n      default:\n        element.setSelectionRange(0, len);\n    }\n  }\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport clsx from 'classnames';\nimport React, { cloneElement, useRef } from 'react';\nimport { hasAddon, hasPrefixSuffix } from \"./utils/commonUtils\";\nvar BaseInput = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var _props, _props2, _props3;\n  var inputEl = props.inputElement,\n    children = props.children,\n    prefixCls = props.prefixCls,\n    prefix = props.prefix,\n    suffix = props.suffix,\n    addonBefore = props.addonBefore,\n    addonAfter = props.addonAfter,\n    className = props.className,\n    style = props.style,\n    disabled = props.disabled,\n    readOnly = props.readOnly,\n    focused = props.focused,\n    triggerFocus = props.triggerFocus,\n    allowClear = props.allowClear,\n    value = props.value,\n    handleReset = props.handleReset,\n    hidden = props.hidden,\n    classes = props.classes,\n    classNames = props.classNames,\n    dataAttrs = props.dataAttrs,\n    styles = props.styles,\n    components = props.components,\n    onClear = props.onClear;\n  var inputElement = children !== null && children !== void 0 ? children : inputEl;\n  var AffixWrapperComponent = (components === null || components === void 0 ? void 0 : components.affixWrapper) || 'span';\n  var GroupWrapperComponent = (components === null || components === void 0 ? void 0 : components.groupWrapper) || 'span';\n  var WrapperComponent = (components === null || components === void 0 ? void 0 : components.wrapper) || 'span';\n  var GroupAddonComponent = (components === null || components === void 0 ? void 0 : components.groupAddon) || 'span';\n  var containerRef = useRef(null);\n  var onInputClick = function onInputClick(e) {\n    var _containerRef$current;\n    if ((_containerRef$current = containerRef.current) !== null && _containerRef$current !== void 0 && _containerRef$current.contains(e.target)) {\n      triggerFocus === null || triggerFocus === void 0 || triggerFocus();\n    }\n  };\n  var hasAffix = hasPrefixSuffix(props);\n  var element = /*#__PURE__*/cloneElement(inputElement, {\n    value: value,\n    className: clsx((_props = inputElement.props) === null || _props === void 0 ? void 0 : _props.className, !hasAffix && (classNames === null || classNames === void 0 ? void 0 : classNames.variant)) || null\n  });\n\n  // ======================== Ref ======================== //\n  var groupRef = useRef(null);\n  React.useImperativeHandle(ref, function () {\n    return {\n      nativeElement: groupRef.current || containerRef.current\n    };\n  });\n\n  // ================== Prefix & Suffix ================== //\n  if (hasAffix) {\n    // ================== Clear Icon ================== //\n    var clearIcon = null;\n    if (allowClear) {\n      var needClear = !disabled && !readOnly && value;\n      var clearIconCls = \"\".concat(prefixCls, \"-clear-icon\");\n      var iconNode = _typeof(allowClear) === 'object' && allowClear !== null && allowClear !== void 0 && allowClear.clearIcon ? allowClear.clearIcon : '✖';\n      clearIcon = /*#__PURE__*/React.createElement(\"button\", {\n        type: \"button\",\n        tabIndex: -1,\n        onClick: function onClick(event) {\n          handleReset === null || handleReset === void 0 || handleReset(event);\n          onClear === null || onClear === void 0 || onClear();\n        }\n        // Do not trigger onBlur when clear input\n        // https://github.com/ant-design/ant-design/issues/31200\n        ,\n        onMouseDown: function onMouseDown(e) {\n          return e.preventDefault();\n        },\n        className: clsx(clearIconCls, _defineProperty(_defineProperty({}, \"\".concat(clearIconCls, \"-hidden\"), !needClear), \"\".concat(clearIconCls, \"-has-suffix\"), !!suffix))\n      }, iconNode);\n    }\n    var affixWrapperPrefixCls = \"\".concat(prefixCls, \"-affix-wrapper\");\n    var affixWrapperCls = clsx(affixWrapperPrefixCls, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), disabled), \"\".concat(affixWrapperPrefixCls, \"-disabled\"), disabled), \"\".concat(affixWrapperPrefixCls, \"-focused\"), focused), \"\".concat(affixWrapperPrefixCls, \"-readonly\"), readOnly), \"\".concat(affixWrapperPrefixCls, \"-input-with-clear-btn\"), suffix && allowClear && value), classes === null || classes === void 0 ? void 0 : classes.affixWrapper, classNames === null || classNames === void 0 ? void 0 : classNames.affixWrapper, classNames === null || classNames === void 0 ? void 0 : classNames.variant);\n    var suffixNode = (suffix || allowClear) && /*#__PURE__*/React.createElement(\"span\", {\n      className: clsx(\"\".concat(prefixCls, \"-suffix\"), classNames === null || classNames === void 0 ? void 0 : classNames.suffix),\n      style: styles === null || styles === void 0 ? void 0 : styles.suffix\n    }, clearIcon, suffix);\n    element = /*#__PURE__*/React.createElement(AffixWrapperComponent, _extends({\n      className: affixWrapperCls,\n      style: styles === null || styles === void 0 ? void 0 : styles.affixWrapper,\n      onClick: onInputClick\n    }, dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.affixWrapper, {\n      ref: containerRef\n    }), prefix && /*#__PURE__*/React.createElement(\"span\", {\n      className: clsx(\"\".concat(prefixCls, \"-prefix\"), classNames === null || classNames === void 0 ? void 0 : classNames.prefix),\n      style: styles === null || styles === void 0 ? void 0 : styles.prefix\n    }, prefix), element, suffixNode);\n  }\n\n  // ================== Addon ================== //\n  if (hasAddon(props)) {\n    var wrapperCls = \"\".concat(prefixCls, \"-group\");\n    var addonCls = \"\".concat(wrapperCls, \"-addon\");\n    var groupWrapperCls = \"\".concat(wrapperCls, \"-wrapper\");\n    var mergedWrapperClassName = clsx(\"\".concat(prefixCls, \"-wrapper\"), wrapperCls, classes === null || classes === void 0 ? void 0 : classes.wrapper, classNames === null || classNames === void 0 ? void 0 : classNames.wrapper);\n    var mergedGroupClassName = clsx(groupWrapperCls, _defineProperty({}, \"\".concat(groupWrapperCls, \"-disabled\"), disabled), classes === null || classes === void 0 ? void 0 : classes.group, classNames === null || classNames === void 0 ? void 0 : classNames.groupWrapper);\n\n    // Need another wrapper for changing display:table to display:inline-block\n    // and put style prop in wrapper\n    element = /*#__PURE__*/React.createElement(GroupWrapperComponent, {\n      className: mergedGroupClassName,\n      ref: groupRef\n    }, /*#__PURE__*/React.createElement(WrapperComponent, {\n      className: mergedWrapperClassName\n    }, addonBefore && /*#__PURE__*/React.createElement(GroupAddonComponent, {\n      className: addonCls\n    }, addonBefore), element, addonAfter && /*#__PURE__*/React.createElement(GroupAddonComponent, {\n      className: addonCls\n    }, addonAfter)));\n  }\n\n  // `className` and `style` are always on the root element\n  return /*#__PURE__*/React.cloneElement(element, {\n    className: clsx((_props2 = element.props) === null || _props2 === void 0 ? void 0 : _props2.className, className) || null,\n    style: _objectSpread(_objectSpread({}, (_props3 = element.props) === null || _props3 === void 0 ? void 0 : _props3.style), style),\n    hidden: hidden\n  });\n});\nexport default BaseInput;","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar _excluded = [\"show\"];\nimport * as React from 'react';\n/**\n * Cut `value` by the `count.max` prop.\n */\nexport function inCountRange(value, countConfig) {\n  if (!countConfig.max) {\n    return true;\n  }\n  var count = countConfig.strategy(value);\n  return count <= countConfig.max;\n}\nexport default function useCount(count, showCount) {\n  return React.useMemo(function () {\n    var mergedConfig = {};\n    if (showCount) {\n      mergedConfig.show = _typeof(showCount) === 'object' && showCount.formatter ? showCount.formatter : !!showCount;\n    }\n    mergedConfig = _objectSpread(_objectSpread({}, mergedConfig), count);\n    var _ref = mergedConfig,\n      show = _ref.show,\n      rest = _objectWithoutProperties(_ref, _excluded);\n    return _objectSpread(_objectSpread({}, rest), {}, {\n      show: !!show,\n      showFormatter: typeof show === 'function' ? show : undefined,\n      strategy: rest.strategy || function (value) {\n        return value.length;\n      }\n    });\n  }, [count, showCount]);\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"autoComplete\", \"onChange\", \"onFocus\", \"onBlur\", \"onPressEnter\", \"onKeyDown\", \"onKeyUp\", \"prefixCls\", \"disabled\", \"htmlSize\", \"className\", \"maxLength\", \"suffix\", \"showCount\", \"count\", \"type\", \"classes\", \"classNames\", \"styles\", \"onCompositionStart\", \"onCompositionEnd\"];\nimport clsx from 'classnames';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport omit from \"rc-util/es/omit\";\nimport React, { forwardRef, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport BaseInput from \"./BaseInput\";\nimport useCount from \"./hooks/useCount\";\nimport { resolveOnChange, triggerFocus } from \"./utils/commonUtils\";\nvar Input = /*#__PURE__*/forwardRef(function (props, ref) {\n  var autoComplete = props.autoComplete,\n    onChange = props.onChange,\n    onFocus = props.onFocus,\n    onBlur = props.onBlur,\n    onPressEnter = props.onPressEnter,\n    onKeyDown = props.onKeyDown,\n    onKeyUp = props.onKeyUp,\n    _props$prefixCls = props.prefixCls,\n    prefixCls = _props$prefixCls === void 0 ? 'rc-input' : _props$prefixCls,\n    disabled = props.disabled,\n    htmlSize = props.htmlSize,\n    className = props.className,\n    maxLength = props.maxLength,\n    suffix = props.suffix,\n    showCount = props.showCount,\n    count = props.count,\n    _props$type = props.type,\n    type = _props$type === void 0 ? 'text' : _props$type,\n    classes = props.classes,\n    classNames = props.classNames,\n    styles = props.styles,\n    _onCompositionStart = props.onCompositionStart,\n    onCompositionEnd = props.onCompositionEnd,\n    rest = _objectWithoutProperties(props, _excluded);\n  var _useState = useState(false),\n    _useState2 = _slicedToArray(_useState, 2),\n    focused = _useState2[0],\n    setFocused = _useState2[1];\n  var compositionRef = useRef(false);\n  var keyLockRef = useRef(false);\n  var inputRef = useRef(null);\n  var holderRef = useRef(null);\n  var focus = function focus(option) {\n    if (inputRef.current) {\n      triggerFocus(inputRef.current, option);\n    }\n  };\n\n  // ====================== Value =======================\n  var _useMergedState = useMergedState(props.defaultValue, {\n      value: props.value\n    }),\n    _useMergedState2 = _slicedToArray(_useMergedState, 2),\n    value = _useMergedState2[0],\n    setValue = _useMergedState2[1];\n  var formatValue = value === undefined || value === null ? '' : String(value);\n\n  // =================== Select Range ===================\n  var _useState3 = useState(null),\n    _useState4 = _slicedToArray(_useState3, 2),\n    selection = _useState4[0],\n    setSelection = _useState4[1];\n\n  // ====================== Count =======================\n  var countConfig = useCount(count, showCount);\n  var mergedMax = countConfig.max || maxLength;\n  var valueLength = countConfig.strategy(formatValue);\n  var isOutOfRange = !!mergedMax && valueLength > mergedMax;\n\n  // ======================= Ref ========================\n  useImperativeHandle(ref, function () {\n    var _holderRef$current;\n    return {\n      focus: focus,\n      blur: function blur() {\n        var _inputRef$current;\n        (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 || _inputRef$current.blur();\n      },\n      setSelectionRange: function setSelectionRange(start, end, direction) {\n        var _inputRef$current2;\n        (_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 || _inputRef$current2.setSelectionRange(start, end, direction);\n      },\n      select: function select() {\n        var _inputRef$current3;\n        (_inputRef$current3 = inputRef.current) === null || _inputRef$current3 === void 0 || _inputRef$current3.select();\n      },\n      input: inputRef.current,\n      nativeElement: ((_holderRef$current = holderRef.current) === null || _holderRef$current === void 0 ? void 0 : _holderRef$current.nativeElement) || inputRef.current\n    };\n  });\n  useEffect(function () {\n    if (keyLockRef.current) {\n      keyLockRef.current = false;\n    }\n    setFocused(function (prev) {\n      return prev && disabled ? false : prev;\n    });\n  }, [disabled]);\n  var triggerChange = function triggerChange(e, currentValue, info) {\n    var cutValue = currentValue;\n    if (!compositionRef.current && countConfig.exceedFormatter && countConfig.max && countConfig.strategy(currentValue) > countConfig.max) {\n      cutValue = countConfig.exceedFormatter(currentValue, {\n        max: countConfig.max\n      });\n      if (currentValue !== cutValue) {\n        var _inputRef$current4, _inputRef$current5;\n        setSelection([((_inputRef$current4 = inputRef.current) === null || _inputRef$current4 === void 0 ? void 0 : _inputRef$current4.selectionStart) || 0, ((_inputRef$current5 = inputRef.current) === null || _inputRef$current5 === void 0 ? void 0 : _inputRef$current5.selectionEnd) || 0]);\n      }\n    } else if (info.source === 'compositionEnd') {\n      // Avoid triggering twice\n      // https://github.com/ant-design/ant-design/issues/46587\n      return;\n    }\n    setValue(cutValue);\n    if (inputRef.current) {\n      resolveOnChange(inputRef.current, e, onChange, cutValue);\n    }\n  };\n  useEffect(function () {\n    if (selection) {\n      var _inputRef$current6;\n      (_inputRef$current6 = inputRef.current) === null || _inputRef$current6 === void 0 || _inputRef$current6.setSelectionRange.apply(_inputRef$current6, _toConsumableArray(selection));\n    }\n  }, [selection]);\n  var onInternalChange = function onInternalChange(e) {\n    triggerChange(e, e.target.value, {\n      source: 'change'\n    });\n  };\n  var onInternalCompositionEnd = function onInternalCompositionEnd(e) {\n    compositionRef.current = false;\n    triggerChange(e, e.currentTarget.value, {\n      source: 'compositionEnd'\n    });\n    onCompositionEnd === null || onCompositionEnd === void 0 || onCompositionEnd(e);\n  };\n  var handleKeyDown = function handleKeyDown(e) {\n    if (onPressEnter && e.key === 'Enter' && !keyLockRef.current) {\n      keyLockRef.current = true;\n      onPressEnter(e);\n    }\n    onKeyDown === null || onKeyDown === void 0 || onKeyDown(e);\n  };\n  var handleKeyUp = function handleKeyUp(e) {\n    if (e.key === 'Enter') {\n      keyLockRef.current = false;\n    }\n    onKeyUp === null || onKeyUp === void 0 || onKeyUp(e);\n  };\n  var handleFocus = function handleFocus(e) {\n    setFocused(true);\n    onFocus === null || onFocus === void 0 || onFocus(e);\n  };\n  var handleBlur = function handleBlur(e) {\n    if (keyLockRef.current) {\n      keyLockRef.current = false;\n    }\n    setFocused(false);\n    onBlur === null || onBlur === void 0 || onBlur(e);\n  };\n  var handleReset = function handleReset(e) {\n    setValue('');\n    focus();\n    if (inputRef.current) {\n      resolveOnChange(inputRef.current, e, onChange);\n    }\n  };\n\n  // ====================== Input =======================\n  var outOfRangeCls = isOutOfRange && \"\".concat(prefixCls, \"-out-of-range\");\n  var getInputElement = function getInputElement() {\n    // Fix https://fb.me/react-unknown-prop\n    var otherProps = omit(props, ['prefixCls', 'onPressEnter', 'addonBefore', 'addonAfter', 'prefix', 'suffix', 'allowClear',\n    // Input elements must be either controlled or uncontrolled,\n    // specify either the value prop, or the defaultValue prop, but not both.\n    'defaultValue', 'showCount', 'count', 'classes', 'htmlSize', 'styles', 'classNames', 'onClear']);\n    return /*#__PURE__*/React.createElement(\"input\", _extends({\n      autoComplete: autoComplete\n    }, otherProps, {\n      onChange: onInternalChange,\n      onFocus: handleFocus,\n      onBlur: handleBlur,\n      onKeyDown: handleKeyDown,\n      onKeyUp: handleKeyUp,\n      className: clsx(prefixCls, _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), disabled), classNames === null || classNames === void 0 ? void 0 : classNames.input),\n      style: styles === null || styles === void 0 ? void 0 : styles.input,\n      ref: inputRef,\n      size: htmlSize,\n      type: type,\n      onCompositionStart: function onCompositionStart(e) {\n        compositionRef.current = true;\n        _onCompositionStart === null || _onCompositionStart === void 0 || _onCompositionStart(e);\n      },\n      onCompositionEnd: onInternalCompositionEnd\n    }));\n  };\n  var getSuffix = function getSuffix() {\n    // Max length value\n    var hasMaxLength = Number(mergedMax) > 0;\n    if (suffix || countConfig.show) {\n      var dataCount = countConfig.showFormatter ? countConfig.showFormatter({\n        value: formatValue,\n        count: valueLength,\n        maxLength: mergedMax\n      }) : \"\".concat(valueLength).concat(hasMaxLength ? \" / \".concat(mergedMax) : '');\n      return /*#__PURE__*/React.createElement(React.Fragment, null, countConfig.show && /*#__PURE__*/React.createElement(\"span\", {\n        className: clsx(\"\".concat(prefixCls, \"-show-count-suffix\"), _defineProperty({}, \"\".concat(prefixCls, \"-show-count-has-suffix\"), !!suffix), classNames === null || classNames === void 0 ? void 0 : classNames.count),\n        style: _objectSpread({}, styles === null || styles === void 0 ? void 0 : styles.count)\n      }, dataCount), suffix);\n    }\n    return null;\n  };\n\n  // ====================== Render ======================\n  return /*#__PURE__*/React.createElement(BaseInput, _extends({}, rest, {\n    prefixCls: prefixCls,\n    className: clsx(className, outOfRangeCls),\n    handleReset: handleReset,\n    value: formatValue,\n    focused: focused,\n    triggerFocus: focus,\n    suffix: getSuffix(),\n    disabled: disabled,\n    classes: classes,\n    classNames: classNames,\n    styles: styles,\n    ref: holderRef\n  }), getInputElement());\n});\nexport default Input;","\"use client\";\n\nimport React from 'react';\nimport CloseCircleFilled from \"@ant-design/icons/es/icons/CloseCircleFilled\";\nconst getAllowClear = allowClear => {\n  let mergedAllowClear;\n  if (typeof allowClear === 'object' && (allowClear === null || allowClear === void 0 ? void 0 : allowClear.clearIcon)) {\n    mergedAllowClear = allowClear;\n  } else if (allowClear) {\n    mergedAllowClear = {\n      clearIcon: /*#__PURE__*/React.createElement(CloseCircleFilled, null)\n    };\n  }\n  return mergedAllowClear;\n};\nexport default getAllowClear;","import { useEffect, useRef } from 'react';\nexport default function useRemovePasswordTimeout(inputRef, triggerOnMount) {\n  const removePasswordTimeoutRef = useRef([]);\n  const removePasswordTimeout = () => {\n    removePasswordTimeoutRef.current.push(setTimeout(() => {\n      var _a, _b, _c, _d;\n      if (((_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.input) && ((_b = inputRef.current) === null || _b === void 0 ? void 0 : _b.input.getAttribute('type')) === 'password' && ((_c = inputRef.current) === null || _c === void 0 ? void 0 : _c.input.hasAttribute('value'))) {\n        (_d = inputRef.current) === null || _d === void 0 ? void 0 : _d.input.removeAttribute('value');\n      }\n    }));\n  };\n  useEffect(() => {\n    if (triggerOnMount) {\n      removePasswordTimeout();\n    }\n    return () => removePasswordTimeoutRef.current.forEach(timer => {\n      if (timer) {\n        clearTimeout(timer);\n      }\n    });\n  }, []);\n  return removePasswordTimeout;\n}","export function hasPrefixSuffix(props) {\n  return !!(props.prefix || props.suffix || props.allowClear || props.showCount);\n}","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport React, { forwardRef, useContext, useEffect, useRef } from 'react';\nimport cls from 'classnames';\nimport RcInput from 'rc-input';\nimport { triggerFocus } from \"rc-input/es/utils/commonUtils\";\nimport { composeRef } from \"rc-util/es/ref\";\nimport ContextIsolator from '../_util/ContextIsolator';\nimport getAllowClear from '../_util/getAllowClear';\nimport { getMergedStatus, getStatusClassNames } from '../_util/statusUtils';\nimport { devUseWarning } from '../_util/warning';\nimport { useComponentConfig } from '../config-provider/context';\nimport DisabledContext from '../config-provider/DisabledContext';\nimport useCSSVarCls from '../config-provider/hooks/useCSSVarCls';\nimport useSize from '../config-provider/hooks/useSize';\nimport { FormItemInputContext } from '../form/context';\nimport useVariant from '../form/hooks/useVariants';\nimport { useCompactItemContext } from '../space/Compact';\nimport useRemovePasswordTimeout from './hooks/useRemovePasswordTimeout';\nimport useStyle, { useSharedStyle } from './style';\nimport { hasPrefixSuffix } from './utils';\nexport { triggerFocus };\nconst Input = /*#__PURE__*/forwardRef((props, ref) => {\n  const {\n      prefixCls: customizePrefixCls,\n      bordered = true,\n      status: customStatus,\n      size: customSize,\n      disabled: customDisabled,\n      onBlur,\n      onFocus,\n      suffix,\n      allowClear,\n      addonAfter,\n      addonBefore,\n      className,\n      style,\n      styles,\n      rootClassName,\n      onChange,\n      classNames,\n      variant: customVariant\n    } = props,\n    rest = __rest(props, [\"prefixCls\", \"bordered\", \"status\", \"size\", \"disabled\", \"onBlur\", \"onFocus\", \"suffix\", \"allowClear\", \"addonAfter\", \"addonBefore\", \"className\", \"style\", \"styles\", \"rootClassName\", \"onChange\", \"classNames\", \"variant\"]);\n  if (process.env.NODE_ENV !== 'production') {\n    const {\n      deprecated\n    } = devUseWarning('Input');\n    deprecated(!('bordered' in props), 'bordered', 'variant');\n  }\n  const {\n    getPrefixCls,\n    direction,\n    allowClear: contextAllowClear,\n    autoComplete: contextAutoComplete,\n    className: contextClassName,\n    style: contextStyle,\n    classNames: contextClassNames,\n    styles: contextStyles\n  } = useComponentConfig('input');\n  const prefixCls = getPrefixCls('input', customizePrefixCls);\n  const inputRef = useRef(null);\n  // Style\n  const rootCls = useCSSVarCls(prefixCls);\n  const [wrapSharedCSSVar, hashId, cssVarCls] = useSharedStyle(prefixCls, rootClassName);\n  const [wrapCSSVar] = useStyle(prefixCls, rootCls);\n  // ===================== Compact Item =====================\n  const {\n    compactSize,\n    compactItemClassnames\n  } = useCompactItemContext(prefixCls, direction);\n  // ===================== Size =====================\n  const mergedSize = useSize(ctx => {\n    var _a;\n    return (_a = customSize !== null && customSize !== void 0 ? customSize : compactSize) !== null && _a !== void 0 ? _a : ctx;\n  });\n  // ===================== Disabled =====================\n  const disabled = React.useContext(DisabledContext);\n  const mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;\n  // ===================== Status =====================\n  const {\n    status: contextStatus,\n    hasFeedback,\n    feedbackIcon\n  } = useContext(FormItemInputContext);\n  const mergedStatus = getMergedStatus(contextStatus, customStatus);\n  // ===================== Focus warning =====================\n  const inputHasPrefixSuffix = hasPrefixSuffix(props) || !!hasFeedback;\n  const prevHasPrefixSuffix = useRef(inputHasPrefixSuffix);\n  /* eslint-disable react-hooks/rules-of-hooks */\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('Input');\n    useEffect(() => {\n      var _a;\n      if (inputHasPrefixSuffix && !prevHasPrefixSuffix.current) {\n        process.env.NODE_ENV !== \"production\" ? warning(document.activeElement === ((_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.input), 'usage', `When Input is focused, dynamic add or remove prefix / suffix will make it lose focus caused by dom structure change. Read more: https://ant.design/components/input/#FAQ`) : void 0;\n      }\n      prevHasPrefixSuffix.current = inputHasPrefixSuffix;\n    }, [inputHasPrefixSuffix]);\n  }\n  /* eslint-enable */\n  // ===================== Remove Password value =====================\n  const removePasswordTimeout = useRemovePasswordTimeout(inputRef, true);\n  const handleBlur = e => {\n    removePasswordTimeout();\n    onBlur === null || onBlur === void 0 ? void 0 : onBlur(e);\n  };\n  const handleFocus = e => {\n    removePasswordTimeout();\n    onFocus === null || onFocus === void 0 ? void 0 : onFocus(e);\n  };\n  const handleChange = e => {\n    removePasswordTimeout();\n    onChange === null || onChange === void 0 ? void 0 : onChange(e);\n  };\n  const suffixNode = (hasFeedback || suffix) && (/*#__PURE__*/React.createElement(React.Fragment, null, suffix, hasFeedback && feedbackIcon));\n  const mergedAllowClear = getAllowClear(allowClear !== null && allowClear !== void 0 ? allowClear : contextAllowClear);\n  const [variant, enableVariantCls] = useVariant('input', customVariant, bordered);\n  return wrapSharedCSSVar(wrapCSSVar(/*#__PURE__*/React.createElement(RcInput, Object.assign({\n    ref: composeRef(ref, inputRef),\n    prefixCls: prefixCls,\n    autoComplete: contextAutoComplete\n  }, rest, {\n    disabled: mergedDisabled,\n    onBlur: handleBlur,\n    onFocus: handleFocus,\n    style: Object.assign(Object.assign({}, contextStyle), style),\n    styles: Object.assign(Object.assign({}, contextStyles), styles),\n    suffix: suffixNode,\n    allowClear: mergedAllowClear,\n    className: cls(className, rootClassName, cssVarCls, rootCls, compactItemClassnames, contextClassName),\n    onChange: handleChange,\n    addonBefore: addonBefore && (/*#__PURE__*/React.createElement(ContextIsolator, {\n      form: true,\n      space: true\n    }, addonBefore)),\n    addonAfter: addonAfter && (/*#__PURE__*/React.createElement(ContextIsolator, {\n      form: true,\n      space: true\n    }, addonAfter)),\n    classNames: Object.assign(Object.assign(Object.assign({}, classNames), contextClassNames), {\n      input: cls({\n        [`${prefixCls}-sm`]: mergedSize === 'small',\n        [`${prefixCls}-lg`]: mergedSize === 'large',\n        [`${prefixCls}-rtl`]: direction === 'rtl'\n      }, classNames === null || classNames === void 0 ? void 0 : classNames.input, contextClassNames.input, hashId),\n      variant: cls({\n        [`${prefixCls}-${variant}`]: enableVariantCls\n      }, getStatusClassNames(prefixCls, mergedStatus)),\n      affixWrapper: cls({\n        [`${prefixCls}-affix-wrapper-sm`]: mergedSize === 'small',\n        [`${prefixCls}-affix-wrapper-lg`]: mergedSize === 'large',\n        [`${prefixCls}-affix-wrapper-rtl`]: direction === 'rtl'\n      }, hashId),\n      wrapper: cls({\n        [`${prefixCls}-group-rtl`]: direction === 'rtl'\n      }, hashId),\n      groupWrapper: cls({\n        [`${prefixCls}-group-wrapper-sm`]: mergedSize === 'small',\n        [`${prefixCls}-group-wrapper-lg`]: mergedSize === 'large',\n        [`${prefixCls}-group-wrapper-rtl`]: direction === 'rtl',\n        [`${prefixCls}-group-wrapper-${variant}`]: enableVariantCls\n      }, getStatusClassNames(`${prefixCls}-group-wrapper`, mergedStatus, hasFeedback), hashId)\n    })\n  }))));\n});\nif (process.env.NODE_ENV !== 'production') {\n  Input.displayName = 'Input';\n}\nexport default Input;","export function getOffset(value, min, max) {\n  return (value - min) / (max - min);\n}\nexport function getDirectionStyle(direction, value, min, max) {\n  var offset = getOffset(value, min, max);\n  var positionStyle = {};\n  switch (direction) {\n    case 'rtl':\n      positionStyle.right = \"\".concat(offset * 100, \"%\");\n      positionStyle.transform = 'translateX(50%)';\n      break;\n    case 'btt':\n      positionStyle.bottom = \"\".concat(offset * 100, \"%\");\n      positionStyle.transform = 'translateY(50%)';\n      break;\n    case 'ttb':\n      positionStyle.top = \"\".concat(offset * 100, \"%\");\n      positionStyle.transform = 'translateY(-50%)';\n      break;\n    default:\n      positionStyle.left = \"\".concat(offset * 100, \"%\");\n      positionStyle.transform = 'translateX(-50%)';\n      break;\n  }\n  return positionStyle;\n}\n\n/** Return index value if is list or return value directly */\nexport function getIndex(value, index) {\n  return Array.isArray(value) ? value[index] : value;\n}","import * as React from 'react';\nvar SliderContext = /*#__PURE__*/React.createContext({\n  min: 0,\n  max: 0,\n  direction: 'ltr',\n  step: 1,\n  includedStart: 0,\n  includedEnd: 0,\n  tabIndex: 0,\n  keyboard: true,\n  styles: {},\n  classNames: {}\n});\nexport default SliderContext;\n/** @private NOT PROMISE AVAILABLE. DO NOT USE IN PRODUCTION. */\nexport var UnstableContext = /*#__PURE__*/React.createContext({});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"value\", \"valueIndex\", \"onStartMove\", \"onDelete\", \"style\", \"render\", \"dragging\", \"draggingDelete\", \"onOffsetChange\", \"onChangeComplete\", \"onFocus\", \"onMouseEnter\"];\nimport cls from 'classnames';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport * as React from 'react';\nimport SliderContext from \"../context\";\nimport { getDirectionStyle, getIndex } from \"../util\";\nvar Handle = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var prefixCls = props.prefixCls,\n    value = props.value,\n    valueIndex = props.valueIndex,\n    onStartMove = props.onStartMove,\n    onDelete = props.onDelete,\n    style = props.style,\n    render = props.render,\n    dragging = props.dragging,\n    draggingDelete = props.draggingDelete,\n    onOffsetChange = props.onOffsetChange,\n    onChangeComplete = props.onChangeComplete,\n    onFocus = props.onFocus,\n    onMouseEnter = props.onMouseEnter,\n    restProps = _objectWithoutProperties(props, _excluded);\n  var _React$useContext = React.useContext(SliderContext),\n    min = _React$useContext.min,\n    max = _React$useContext.max,\n    direction = _React$useContext.direction,\n    disabled = _React$useContext.disabled,\n    keyboard = _React$useContext.keyboard,\n    range = _React$useContext.range,\n    tabIndex = _React$useContext.tabIndex,\n    ariaLabelForHandle = _React$useContext.ariaLabelForHandle,\n    ariaLabelledByForHandle = _React$useContext.ariaLabelledByForHandle,\n    ariaRequired = _React$useContext.ariaRequired,\n    ariaValueTextFormatterForHandle = _React$useContext.ariaValueTextFormatterForHandle,\n    styles = _React$useContext.styles,\n    classNames = _React$useContext.classNames;\n  var handlePrefixCls = \"\".concat(prefixCls, \"-handle\");\n\n  // ============================ Events ============================\n  var onInternalStartMove = function onInternalStartMove(e) {\n    if (!disabled) {\n      onStartMove(e, valueIndex);\n    }\n  };\n  var onInternalFocus = function onInternalFocus(e) {\n    onFocus === null || onFocus === void 0 || onFocus(e, valueIndex);\n  };\n  var onInternalMouseEnter = function onInternalMouseEnter(e) {\n    onMouseEnter(e, valueIndex);\n  };\n\n  // =========================== Keyboard ===========================\n  var onKeyDown = function onKeyDown(e) {\n    if (!disabled && keyboard) {\n      var offset = null;\n\n      // Change the value\n      switch (e.which || e.keyCode) {\n        case KeyCode.LEFT:\n          offset = direction === 'ltr' || direction === 'btt' ? -1 : 1;\n          break;\n        case KeyCode.RIGHT:\n          offset = direction === 'ltr' || direction === 'btt' ? 1 : -1;\n          break;\n\n        // Up is plus\n        case KeyCode.UP:\n          offset = direction !== 'ttb' ? 1 : -1;\n          break;\n\n        // Down is minus\n        case KeyCode.DOWN:\n          offset = direction !== 'ttb' ? -1 : 1;\n          break;\n        case KeyCode.HOME:\n          offset = 'min';\n          break;\n        case KeyCode.END:\n          offset = 'max';\n          break;\n        case KeyCode.PAGE_UP:\n          offset = 2;\n          break;\n        case KeyCode.PAGE_DOWN:\n          offset = -2;\n          break;\n        case KeyCode.BACKSPACE:\n        case KeyCode.DELETE:\n          onDelete(valueIndex);\n          break;\n      }\n      if (offset !== null) {\n        e.preventDefault();\n        onOffsetChange(offset, valueIndex);\n      }\n    }\n  };\n  var handleKeyUp = function handleKeyUp(e) {\n    switch (e.which || e.keyCode) {\n      case KeyCode.LEFT:\n      case KeyCode.RIGHT:\n      case KeyCode.UP:\n      case KeyCode.DOWN:\n      case KeyCode.HOME:\n      case KeyCode.END:\n      case KeyCode.PAGE_UP:\n      case KeyCode.PAGE_DOWN:\n        onChangeComplete === null || onChangeComplete === void 0 || onChangeComplete();\n        break;\n    }\n  };\n\n  // ============================ Offset ============================\n  var positionStyle = getDirectionStyle(direction, value, min, max);\n\n  // ============================ Render ============================\n  var divProps = {};\n  if (valueIndex !== null) {\n    var _getIndex;\n    divProps = {\n      tabIndex: disabled ? null : getIndex(tabIndex, valueIndex),\n      role: 'slider',\n      'aria-valuemin': min,\n      'aria-valuemax': max,\n      'aria-valuenow': value,\n      'aria-disabled': disabled,\n      'aria-label': getIndex(ariaLabelForHandle, valueIndex),\n      'aria-labelledby': getIndex(ariaLabelledByForHandle, valueIndex),\n      'aria-required': getIndex(ariaRequired, valueIndex),\n      'aria-valuetext': (_getIndex = getIndex(ariaValueTextFormatterForHandle, valueIndex)) === null || _getIndex === void 0 ? void 0 : _getIndex(value),\n      'aria-orientation': direction === 'ltr' || direction === 'rtl' ? 'horizontal' : 'vertical',\n      onMouseDown: onInternalStartMove,\n      onTouchStart: onInternalStartMove,\n      onFocus: onInternalFocus,\n      onMouseEnter: onInternalMouseEnter,\n      onKeyDown: onKeyDown,\n      onKeyUp: handleKeyUp\n    };\n  }\n  var handleNode = /*#__PURE__*/React.createElement(\"div\", _extends({\n    ref: ref,\n    className: cls(handlePrefixCls, _defineProperty(_defineProperty(_defineProperty({}, \"\".concat(handlePrefixCls, \"-\").concat(valueIndex + 1), valueIndex !== null && range), \"\".concat(handlePrefixCls, \"-dragging\"), dragging), \"\".concat(handlePrefixCls, \"-dragging-delete\"), draggingDelete), classNames.handle),\n    style: _objectSpread(_objectSpread(_objectSpread({}, positionStyle), style), styles.handle)\n  }, divProps, restProps));\n\n  // Customize\n  if (render) {\n    handleNode = render(handleNode, {\n      index: valueIndex,\n      prefixCls: prefixCls,\n      value: value,\n      dragging: dragging,\n      draggingDelete: draggingDelete\n    });\n  }\n  return handleNode;\n});\nif (process.env.NODE_ENV !== 'production') {\n  Handle.displayName = 'Handle';\n}\nexport default Handle;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"style\", \"onStartMove\", \"onOffsetChange\", \"values\", \"handleRender\", \"activeHandleRender\", \"draggingIndex\", \"draggingDelete\", \"onFocus\"];\nimport * as React from 'react';\nimport { flushSync } from 'react-dom';\nimport { getIndex } from \"../util\";\nimport Handle from \"./Handle\";\nvar Handles = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var prefixCls = props.prefixCls,\n    style = props.style,\n    onStartMove = props.onStartMove,\n    onOffsetChange = props.onOffsetChange,\n    values = props.values,\n    handleRender = props.handleRender,\n    activeHandleRender = props.activeHandleRender,\n    draggingIndex = props.draggingIndex,\n    draggingDelete = props.draggingDelete,\n    onFocus = props.onFocus,\n    restProps = _objectWithoutProperties(props, _excluded);\n  var handlesRef = React.useRef({});\n\n  // =========================== Active ===========================\n  var _React$useState = React.useState(false),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    activeVisible = _React$useState2[0],\n    setActiveVisible = _React$useState2[1];\n  var _React$useState3 = React.useState(-1),\n    _React$useState4 = _slicedToArray(_React$useState3, 2),\n    activeIndex = _React$useState4[0],\n    setActiveIndex = _React$useState4[1];\n  var onActive = function onActive(index) {\n    setActiveIndex(index);\n    setActiveVisible(true);\n  };\n  var onHandleFocus = function onHandleFocus(e, index) {\n    onActive(index);\n    onFocus === null || onFocus === void 0 || onFocus(e);\n  };\n  var onHandleMouseEnter = function onHandleMouseEnter(e, index) {\n    onActive(index);\n  };\n\n  // =========================== Render ===========================\n  React.useImperativeHandle(ref, function () {\n    return {\n      focus: function focus(index) {\n        var _handlesRef$current$i;\n        (_handlesRef$current$i = handlesRef.current[index]) === null || _handlesRef$current$i === void 0 || _handlesRef$current$i.focus();\n      },\n      hideHelp: function hideHelp() {\n        flushSync(function () {\n          setActiveVisible(false);\n        });\n      }\n    };\n  });\n\n  // =========================== Render ===========================\n  // Handle Props\n  var handleProps = _objectSpread({\n    prefixCls: prefixCls,\n    onStartMove: onStartMove,\n    onOffsetChange: onOffsetChange,\n    render: handleRender,\n    onFocus: onHandleFocus,\n    onMouseEnter: onHandleMouseEnter\n  }, restProps);\n  return /*#__PURE__*/React.createElement(React.Fragment, null, values.map(function (value, index) {\n    var dragging = draggingIndex === index;\n    return /*#__PURE__*/React.createElement(Handle, _extends({\n      ref: function ref(node) {\n        if (!node) {\n          delete handlesRef.current[index];\n        } else {\n          handlesRef.current[index] = node;\n        }\n      },\n      dragging: dragging,\n      draggingDelete: dragging && draggingDelete,\n      style: getIndex(style, index),\n      key: index,\n      value: value,\n      valueIndex: index\n    }, handleProps));\n  }), activeHandleRender && activeVisible && /*#__PURE__*/React.createElement(Handle, _extends({\n    key: \"a11y\"\n  }, handleProps, {\n    value: values[activeIndex],\n    valueIndex: null,\n    dragging: draggingIndex !== -1,\n    draggingDelete: draggingDelete,\n    render: activeHandleRender,\n    style: {\n      pointerEvents: 'none'\n    },\n    tabIndex: null,\n    \"aria-hidden\": true\n  })));\n});\nif (process.env.NODE_ENV !== 'production') {\n  Handles.displayName = 'Handles';\n}\nexport default Handles;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport SliderContext from \"../context\";\nimport { getDirectionStyle } from \"../util\";\nvar Mark = function Mark(props) {\n  var prefixCls = props.prefixCls,\n    style = props.style,\n    children = props.children,\n    value = props.value,\n    _onClick = props.onClick;\n  var _React$useContext = React.useContext(SliderContext),\n    min = _React$useContext.min,\n    max = _React$useContext.max,\n    direction = _React$useContext.direction,\n    includedStart = _React$useContext.includedStart,\n    includedEnd = _React$useContext.includedEnd,\n    included = _React$useContext.included;\n  var textCls = \"\".concat(prefixCls, \"-text\");\n\n  // ============================ Offset ============================\n  var positionStyle = getDirectionStyle(direction, value, min, max);\n  return /*#__PURE__*/React.createElement(\"span\", {\n    className: classNames(textCls, _defineProperty({}, \"\".concat(textCls, \"-active\"), included && includedStart <= value && value <= includedEnd)),\n    style: _objectSpread(_objectSpread({}, positionStyle), style),\n    onMouseDown: function onMouseDown(e) {\n      e.stopPropagation();\n    },\n    onClick: function onClick() {\n      _onClick(value);\n    }\n  }, children);\n};\nexport default Mark;","import * as React from 'react';\nimport Mark from \"./Mark\";\nvar Marks = function Marks(props) {\n  var prefixCls = props.prefixCls,\n    marks = props.marks,\n    onClick = props.onClick;\n  var markPrefixCls = \"\".concat(prefixCls, \"-mark\");\n\n  // Not render mark if empty\n  if (!marks.length) {\n    return null;\n  }\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: markPrefixCls\n  }, marks.map(function (_ref) {\n    var value = _ref.value,\n      style = _ref.style,\n      label = _ref.label;\n    return /*#__PURE__*/React.createElement(Mark, {\n      key: value,\n      prefixCls: markPrefixCls,\n      style: style,\n      value: value,\n      onClick: onClick\n    }, label);\n  }));\n};\nexport default Marks;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport SliderContext from \"../context\";\nimport { getDirectionStyle } from \"../util\";\nvar Dot = function Dot(props) {\n  var prefixCls = props.prefixCls,\n    value = props.value,\n    style = props.style,\n    activeStyle = props.activeStyle;\n  var _React$useContext = React.useContext(SliderContext),\n    min = _React$useContext.min,\n    max = _React$useContext.max,\n    direction = _React$useContext.direction,\n    included = _React$useContext.included,\n    includedStart = _React$useContext.includedStart,\n    includedEnd = _React$useContext.includedEnd;\n  var dotClassName = \"\".concat(prefixCls, \"-dot\");\n  var active = included && includedStart <= value && value <= includedEnd;\n\n  // ============================ Offset ============================\n  var mergedStyle = _objectSpread(_objectSpread({}, getDirectionStyle(direction, value, min, max)), typeof style === 'function' ? style(value) : style);\n  if (active) {\n    mergedStyle = _objectSpread(_objectSpread({}, mergedStyle), typeof activeStyle === 'function' ? activeStyle(value) : activeStyle);\n  }\n  return /*#__PURE__*/React.createElement(\"span\", {\n    className: classNames(dotClassName, _defineProperty({}, \"\".concat(dotClassName, \"-active\"), active)),\n    style: mergedStyle\n  });\n};\nexport default Dot;","import * as React from 'react';\nimport SliderContext from \"../context\";\nimport Dot from \"./Dot\";\nvar Steps = function Steps(props) {\n  var prefixCls = props.prefixCls,\n    marks = props.marks,\n    dots = props.dots,\n    style = props.style,\n    activeStyle = props.activeStyle;\n  var _React$useContext = React.useContext(SliderContext),\n    min = _React$useContext.min,\n    max = _React$useContext.max,\n    step = _React$useContext.step;\n  var stepDots = React.useMemo(function () {\n    var dotSet = new Set();\n\n    // Add marks\n    marks.forEach(function (mark) {\n      dotSet.add(mark.value);\n    });\n\n    // Fill dots\n    if (dots && step !== null) {\n      var current = min;\n      while (current <= max) {\n        dotSet.add(current);\n        current += step;\n      }\n    }\n    return Array.from(dotSet);\n  }, [min, max, step, dots, marks]);\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: \"\".concat(prefixCls, \"-step\")\n  }, stepDots.map(function (dotValue) {\n    return /*#__PURE__*/React.createElement(Dot, {\n      prefixCls: prefixCls,\n      key: dotValue,\n      value: dotValue,\n      style: style,\n      activeStyle: activeStyle\n    });\n  }));\n};\nexport default Steps;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport cls from 'classnames';\nimport * as React from 'react';\nimport SliderContext from \"../context\";\nimport { getOffset } from \"../util\";\nvar Track = function Track(props) {\n  var prefixCls = props.prefixCls,\n    style = props.style,\n    start = props.start,\n    end = props.end,\n    index = props.index,\n    onStartMove = props.onStartMove,\n    replaceCls = props.replaceCls;\n  var _React$useContext = React.useContext(SliderContext),\n    direction = _React$useContext.direction,\n    min = _React$useContext.min,\n    max = _React$useContext.max,\n    disabled = _React$useContext.disabled,\n    range = _React$useContext.range,\n    classNames = _React$useContext.classNames;\n  var trackPrefixCls = \"\".concat(prefixCls, \"-track\");\n  var offsetStart = getOffset(start, min, max);\n  var offsetEnd = getOffset(end, min, max);\n\n  // ============================ Events ============================\n  var onInternalStartMove = function onInternalStartMove(e) {\n    if (!disabled && onStartMove) {\n      onStartMove(e, -1);\n    }\n  };\n\n  // ============================ Render ============================\n  var positionStyle = {};\n  switch (direction) {\n    case 'rtl':\n      positionStyle.right = \"\".concat(offsetStart * 100, \"%\");\n      positionStyle.width = \"\".concat(offsetEnd * 100 - offsetStart * 100, \"%\");\n      break;\n    case 'btt':\n      positionStyle.bottom = \"\".concat(offsetStart * 100, \"%\");\n      positionStyle.height = \"\".concat(offsetEnd * 100 - offsetStart * 100, \"%\");\n      break;\n    case 'ttb':\n      positionStyle.top = \"\".concat(offsetStart * 100, \"%\");\n      positionStyle.height = \"\".concat(offsetEnd * 100 - offsetStart * 100, \"%\");\n      break;\n    default:\n      positionStyle.left = \"\".concat(offsetStart * 100, \"%\");\n      positionStyle.width = \"\".concat(offsetEnd * 100 - offsetStart * 100, \"%\");\n  }\n  var className = replaceCls || cls(trackPrefixCls, _defineProperty(_defineProperty({}, \"\".concat(trackPrefixCls, \"-\").concat(index + 1), index !== null && range), \"\".concat(prefixCls, \"-track-draggable\"), onStartMove), classNames.track);\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: className,\n    style: _objectSpread(_objectSpread({}, positionStyle), style),\n    onMouseDown: onInternalStartMove,\n    onTouchStart: onInternalStartMove\n  });\n};\nexport default Track;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport cls from 'classnames';\nimport * as React from 'react';\nimport SliderContext from \"../context\";\nimport { getIndex } from \"../util\";\nimport Track from \"./Track\";\nvar Tracks = function Tracks(props) {\n  var prefixCls = props.prefixCls,\n    style = props.style,\n    values = props.values,\n    startPoint = props.startPoint,\n    onStartMove = props.onStartMove;\n  var _React$useContext = React.useContext(SliderContext),\n    included = _React$useContext.included,\n    range = _React$useContext.range,\n    min = _React$useContext.min,\n    styles = _React$useContext.styles,\n    classNames = _React$useContext.classNames;\n\n  // =========================== List ===========================\n  var trackList = React.useMemo(function () {\n    if (!range) {\n      // null value do not have track\n      if (values.length === 0) {\n        return [];\n      }\n      var startValue = startPoint !== null && startPoint !== void 0 ? startPoint : min;\n      var endValue = values[0];\n      return [{\n        start: Math.min(startValue, endValue),\n        end: Math.max(startValue, endValue)\n      }];\n    }\n\n    // Multiple\n    var list = [];\n    for (var i = 0; i < values.length - 1; i += 1) {\n      list.push({\n        start: values[i],\n        end: values[i + 1]\n      });\n    }\n    return list;\n  }, [values, range, startPoint, min]);\n  if (!included) {\n    return null;\n  }\n\n  // ========================== Render ==========================\n  var tracksNode = trackList !== null && trackList !== void 0 && trackList.length && (classNames.tracks || styles.tracks) ? /*#__PURE__*/React.createElement(Track, {\n    index: null,\n    prefixCls: prefixCls,\n    start: trackList[0].start,\n    end: trackList[trackList.length - 1].end,\n    replaceCls: cls(classNames.tracks, \"\".concat(prefixCls, \"-tracks\")),\n    style: styles.tracks\n  }) : null;\n  return /*#__PURE__*/React.createElement(React.Fragment, null, tracksNode, trackList.map(function (_ref, index) {\n    var start = _ref.start,\n      end = _ref.end;\n    return /*#__PURE__*/React.createElement(Track, {\n      index: index,\n      prefixCls: prefixCls,\n      style: _objectSpread(_objectSpread({}, getIndex(style, index)), styles.track),\n      start: start,\n      end: end,\n      key: index,\n      onStartMove: onStartMove\n    });\n  }));\n};\nexport default Tracks;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport { UnstableContext } from \"../context\";\n/** Drag to delete offset. It's a user experience number for dragging out */\nvar REMOVE_DIST = 130;\nfunction getPosition(e) {\n  var obj = 'targetTouches' in e ? e.targetTouches[0] : e;\n  return {\n    pageX: obj.pageX,\n    pageY: obj.pageY\n  };\n}\nfunction useDrag(containerRef, direction, rawValues, min, max, formatValue, triggerChange, finishChange, offsetValues, editable, minCount) {\n  var _React$useState = React.useState(null),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    draggingValue = _React$useState2[0],\n    setDraggingValue = _React$useState2[1];\n  var _React$useState3 = React.useState(-1),\n    _React$useState4 = _slicedToArray(_React$useState3, 2),\n    draggingIndex = _React$useState4[0],\n    setDraggingIndex = _React$useState4[1];\n  var _React$useState5 = React.useState(false),\n    _React$useState6 = _slicedToArray(_React$useState5, 2),\n    draggingDelete = _React$useState6[0],\n    setDraggingDelete = _React$useState6[1];\n  var _React$useState7 = React.useState(rawValues),\n    _React$useState8 = _slicedToArray(_React$useState7, 2),\n    cacheValues = _React$useState8[0],\n    setCacheValues = _React$useState8[1];\n  var _React$useState9 = React.useState(rawValues),\n    _React$useState10 = _slicedToArray(_React$useState9, 2),\n    originValues = _React$useState10[0],\n    setOriginValues = _React$useState10[1];\n  var mouseMoveEventRef = React.useRef(null);\n  var mouseUpEventRef = React.useRef(null);\n  var touchEventTargetRef = React.useRef(null);\n  var _React$useContext = React.useContext(UnstableContext),\n    onDragStart = _React$useContext.onDragStart,\n    onDragChange = _React$useContext.onDragChange;\n  useLayoutEffect(function () {\n    if (draggingIndex === -1) {\n      setCacheValues(rawValues);\n    }\n  }, [rawValues, draggingIndex]);\n\n  // Clean up event\n  React.useEffect(function () {\n    return function () {\n      document.removeEventListener('mousemove', mouseMoveEventRef.current);\n      document.removeEventListener('mouseup', mouseUpEventRef.current);\n      if (touchEventTargetRef.current) {\n        touchEventTargetRef.current.removeEventListener('touchmove', mouseMoveEventRef.current);\n        touchEventTargetRef.current.removeEventListener('touchend', mouseUpEventRef.current);\n      }\n    };\n  }, []);\n  var flushValues = function flushValues(nextValues, nextValue, deleteMark) {\n    // Perf: Only update state when value changed\n    if (nextValue !== undefined) {\n      setDraggingValue(nextValue);\n    }\n    setCacheValues(nextValues);\n    var changeValues = nextValues;\n    if (deleteMark) {\n      changeValues = nextValues.filter(function (_, i) {\n        return i !== draggingIndex;\n      });\n    }\n    triggerChange(changeValues);\n    if (onDragChange) {\n      onDragChange({\n        rawValues: nextValues,\n        deleteIndex: deleteMark ? draggingIndex : -1,\n        draggingIndex: draggingIndex,\n        draggingValue: nextValue\n      });\n    }\n  };\n  var updateCacheValue = useEvent(function (valueIndex, offsetPercent, deleteMark) {\n    if (valueIndex === -1) {\n      // >>>> Dragging on the track\n      var startValue = originValues[0];\n      var endValue = originValues[originValues.length - 1];\n      var maxStartOffset = min - startValue;\n      var maxEndOffset = max - endValue;\n\n      // Get valid offset\n      var offset = offsetPercent * (max - min);\n      offset = Math.max(offset, maxStartOffset);\n      offset = Math.min(offset, maxEndOffset);\n\n      // Use first value to revert back of valid offset (like steps marks)\n      var formatStartValue = formatValue(startValue + offset);\n      offset = formatStartValue - startValue;\n      var cloneCacheValues = originValues.map(function (val) {\n        return val + offset;\n      });\n      flushValues(cloneCacheValues);\n    } else {\n      // >>>> Dragging on the handle\n      var offsetDist = (max - min) * offsetPercent;\n\n      // Always start with the valueIndex origin value\n      var cloneValues = _toConsumableArray(cacheValues);\n      cloneValues[valueIndex] = originValues[valueIndex];\n      var next = offsetValues(cloneValues, offsetDist, valueIndex, 'dist');\n      flushValues(next.values, next.value, deleteMark);\n    }\n  });\n  var onStartMove = function onStartMove(e, valueIndex, startValues) {\n    e.stopPropagation();\n\n    // 如果是点击 track 触发的，需要传入变化后的初始值，而不能直接用 rawValues\n    var initialValues = startValues || rawValues;\n    var originValue = initialValues[valueIndex];\n    setDraggingIndex(valueIndex);\n    setDraggingValue(originValue);\n    setOriginValues(initialValues);\n    setCacheValues(initialValues);\n    setDraggingDelete(false);\n    var _getPosition = getPosition(e),\n      startX = _getPosition.pageX,\n      startY = _getPosition.pageY;\n\n    // We declare it here since closure can't get outer latest value\n    var deleteMark = false;\n\n    // Internal trigger event\n    if (onDragStart) {\n      onDragStart({\n        rawValues: initialValues,\n        draggingIndex: valueIndex,\n        draggingValue: originValue\n      });\n    }\n\n    // Moving\n    var onMouseMove = function onMouseMove(event) {\n      event.preventDefault();\n      var _getPosition2 = getPosition(event),\n        moveX = _getPosition2.pageX,\n        moveY = _getPosition2.pageY;\n      var offsetX = moveX - startX;\n      var offsetY = moveY - startY;\n      var _containerRef$current = containerRef.current.getBoundingClientRect(),\n        width = _containerRef$current.width,\n        height = _containerRef$current.height;\n      var offSetPercent;\n      var removeDist;\n      switch (direction) {\n        case 'btt':\n          offSetPercent = -offsetY / height;\n          removeDist = offsetX;\n          break;\n        case 'ttb':\n          offSetPercent = offsetY / height;\n          removeDist = offsetX;\n          break;\n        case 'rtl':\n          offSetPercent = -offsetX / width;\n          removeDist = offsetY;\n          break;\n        default:\n          offSetPercent = offsetX / width;\n          removeDist = offsetY;\n      }\n\n      // Check if need mark remove\n      deleteMark = editable ? Math.abs(removeDist) > REMOVE_DIST && minCount < cacheValues.length : false;\n      setDraggingDelete(deleteMark);\n      updateCacheValue(valueIndex, offSetPercent, deleteMark);\n    };\n\n    // End\n    var onMouseUp = function onMouseUp(event) {\n      event.preventDefault();\n      document.removeEventListener('mouseup', onMouseUp);\n      document.removeEventListener('mousemove', onMouseMove);\n      if (touchEventTargetRef.current) {\n        touchEventTargetRef.current.removeEventListener('touchmove', mouseMoveEventRef.current);\n        touchEventTargetRef.current.removeEventListener('touchend', mouseUpEventRef.current);\n      }\n      mouseMoveEventRef.current = null;\n      mouseUpEventRef.current = null;\n      touchEventTargetRef.current = null;\n      finishChange(deleteMark);\n      setDraggingIndex(-1);\n      setDraggingDelete(false);\n    };\n    document.addEventListener('mouseup', onMouseUp);\n    document.addEventListener('mousemove', onMouseMove);\n    e.currentTarget.addEventListener('touchend', onMouseUp);\n    e.currentTarget.addEventListener('touchmove', onMouseMove);\n    mouseMoveEventRef.current = onMouseMove;\n    mouseUpEventRef.current = onMouseUp;\n    touchEventTargetRef.current = e.currentTarget;\n  };\n\n  // Only return cache value when it mapping with rawValues\n  var returnValues = React.useMemo(function () {\n    var sourceValues = _toConsumableArray(rawValues).sort(function (a, b) {\n      return a - b;\n    });\n    var targetValues = _toConsumableArray(cacheValues).sort(function (a, b) {\n      return a - b;\n    });\n    var counts = {};\n    targetValues.forEach(function (val) {\n      counts[val] = (counts[val] || 0) + 1;\n    });\n    sourceValues.forEach(function (val) {\n      counts[val] = (counts[val] || 0) - 1;\n    });\n    var maxDiffCount = editable ? 1 : 0;\n    var diffCount = Object.values(counts).reduce(function (prev, next) {\n      return prev + Math.abs(next);\n    }, 0);\n    return diffCount <= maxDiffCount ? cacheValues : rawValues;\n  }, [rawValues, cacheValues, editable]);\n  return [draggingIndex, draggingValue, draggingDelete, returnValues, onStartMove];\n}\nexport default useDrag;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\n\n/** Format the value in the range of [min, max] */\n\n/** Format value align with step */\n\n/** Format value align with step & marks */\n\nexport default function useOffset(min, max, step, markList, allowCross, pushable) {\n  var formatRangeValue = React.useCallback(function (val) {\n    return Math.max(min, Math.min(max, val));\n  }, [min, max]);\n  var formatStepValue = React.useCallback(function (val) {\n    if (step !== null) {\n      var stepValue = min + Math.round((formatRangeValue(val) - min) / step) * step;\n\n      // Cut number in case to be like 0.30000000000000004\n      var getDecimal = function getDecimal(num) {\n        return (String(num).split('.')[1] || '').length;\n      };\n      var maxDecimal = Math.max(getDecimal(step), getDecimal(max), getDecimal(min));\n      var fixedValue = Number(stepValue.toFixed(maxDecimal));\n      return min <= fixedValue && fixedValue <= max ? fixedValue : null;\n    }\n    return null;\n  }, [step, min, max, formatRangeValue]);\n  var formatValue = React.useCallback(function (val) {\n    var formatNextValue = formatRangeValue(val);\n\n    // List align values\n    var alignValues = markList.map(function (mark) {\n      return mark.value;\n    });\n    if (step !== null) {\n      alignValues.push(formatStepValue(val));\n    }\n\n    // min & max\n    alignValues.push(min, max);\n\n    // Align with marks\n    var closeValue = alignValues[0];\n    var closeDist = max - min;\n    alignValues.forEach(function (alignValue) {\n      var dist = Math.abs(formatNextValue - alignValue);\n      if (dist <= closeDist) {\n        closeValue = alignValue;\n        closeDist = dist;\n      }\n    });\n    return closeValue;\n  }, [min, max, markList, step, formatRangeValue, formatStepValue]);\n\n  // ========================== Offset ==========================\n  // Single Value\n  var offsetValue = function offsetValue(values, offset, valueIndex) {\n    var mode = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'unit';\n    if (typeof offset === 'number') {\n      var nextValue;\n      var originValue = values[valueIndex];\n\n      // Only used for `dist` mode\n      var targetDistValue = originValue + offset;\n\n      // Compare next step value & mark value which is best match\n      var potentialValues = [];\n      markList.forEach(function (mark) {\n        potentialValues.push(mark.value);\n      });\n\n      // Min & Max\n      potentialValues.push(min, max);\n\n      // In case origin value is align with mark but not with step\n      potentialValues.push(formatStepValue(originValue));\n\n      // Put offset step value also\n      var sign = offset > 0 ? 1 : -1;\n      if (mode === 'unit') {\n        potentialValues.push(formatStepValue(originValue + sign * step));\n      } else {\n        potentialValues.push(formatStepValue(targetDistValue));\n      }\n\n      // Find close one\n      potentialValues = potentialValues.filter(function (val) {\n        return val !== null;\n      })\n      // Remove reverse value\n      .filter(function (val) {\n        return offset < 0 ? val <= originValue : val >= originValue;\n      });\n      if (mode === 'unit') {\n        // `unit` mode can not contain itself\n        potentialValues = potentialValues.filter(function (val) {\n          return val !== originValue;\n        });\n      }\n      var compareValue = mode === 'unit' ? originValue : targetDistValue;\n      nextValue = potentialValues[0];\n      var valueDist = Math.abs(nextValue - compareValue);\n      potentialValues.forEach(function (potentialValue) {\n        var dist = Math.abs(potentialValue - compareValue);\n        if (dist < valueDist) {\n          nextValue = potentialValue;\n          valueDist = dist;\n        }\n      });\n\n      // Out of range will back to range\n      if (nextValue === undefined) {\n        return offset < 0 ? min : max;\n      }\n\n      // `dist` mode\n      if (mode === 'dist') {\n        return nextValue;\n      }\n\n      // `unit` mode may need another round\n      if (Math.abs(offset) > 1) {\n        var cloneValues = _toConsumableArray(values);\n        cloneValues[valueIndex] = nextValue;\n        return offsetValue(cloneValues, offset - sign, valueIndex, mode);\n      }\n      return nextValue;\n    } else if (offset === 'min') {\n      return min;\n    } else if (offset === 'max') {\n      return max;\n    }\n  };\n\n  /** Same as `offsetValue` but return `changed` mark to tell value changed */\n  var offsetChangedValue = function offsetChangedValue(values, offset, valueIndex) {\n    var mode = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'unit';\n    var originValue = values[valueIndex];\n    var nextValue = offsetValue(values, offset, valueIndex, mode);\n    return {\n      value: nextValue,\n      changed: nextValue !== originValue\n    };\n  };\n  var needPush = function needPush(dist) {\n    return pushable === null && dist === 0 || typeof pushable === 'number' && dist < pushable;\n  };\n\n  // Values\n  var offsetValues = function offsetValues(values, offset, valueIndex) {\n    var mode = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'unit';\n    var nextValues = values.map(formatValue);\n    var originValue = nextValues[valueIndex];\n    var nextValue = offsetValue(nextValues, offset, valueIndex, mode);\n    nextValues[valueIndex] = nextValue;\n    if (allowCross === false) {\n      // >>>>> Allow Cross\n      var pushNum = pushable || 0;\n\n      // ============ AllowCross ===============\n      if (valueIndex > 0 && nextValues[valueIndex - 1] !== originValue) {\n        nextValues[valueIndex] = Math.max(nextValues[valueIndex], nextValues[valueIndex - 1] + pushNum);\n      }\n      if (valueIndex < nextValues.length - 1 && nextValues[valueIndex + 1] !== originValue) {\n        nextValues[valueIndex] = Math.min(nextValues[valueIndex], nextValues[valueIndex + 1] - pushNum);\n      }\n    } else if (typeof pushable === 'number' || pushable === null) {\n      // >>>>> Pushable\n      // =============== Push ==================\n\n      // >>>>>> Basic push\n      // End values\n      for (var i = valueIndex + 1; i < nextValues.length; i += 1) {\n        var changed = true;\n        while (needPush(nextValues[i] - nextValues[i - 1]) && changed) {\n          var _offsetChangedValue = offsetChangedValue(nextValues, 1, i);\n          nextValues[i] = _offsetChangedValue.value;\n          changed = _offsetChangedValue.changed;\n        }\n      }\n\n      // Start values\n      for (var _i = valueIndex; _i > 0; _i -= 1) {\n        var _changed = true;\n        while (needPush(nextValues[_i] - nextValues[_i - 1]) && _changed) {\n          var _offsetChangedValue2 = offsetChangedValue(nextValues, -1, _i - 1);\n          nextValues[_i - 1] = _offsetChangedValue2.value;\n          _changed = _offsetChangedValue2.changed;\n        }\n      }\n\n      // >>>>> Revert back to safe push range\n      // End to Start\n      for (var _i2 = nextValues.length - 1; _i2 > 0; _i2 -= 1) {\n        var _changed2 = true;\n        while (needPush(nextValues[_i2] - nextValues[_i2 - 1]) && _changed2) {\n          var _offsetChangedValue3 = offsetChangedValue(nextValues, -1, _i2 - 1);\n          nextValues[_i2 - 1] = _offsetChangedValue3.value;\n          _changed2 = _offsetChangedValue3.changed;\n        }\n      }\n\n      // Start to End\n      for (var _i3 = 0; _i3 < nextValues.length - 1; _i3 += 1) {\n        var _changed3 = true;\n        while (needPush(nextValues[_i3 + 1] - nextValues[_i3]) && _changed3) {\n          var _offsetChangedValue4 = offsetChangedValue(nextValues, 1, _i3 + 1);\n          nextValues[_i3 + 1] = _offsetChangedValue4.value;\n          _changed3 = _offsetChangedValue4.changed;\n        }\n      }\n    }\n    return {\n      value: nextValues[valueIndex],\n      values: nextValues\n    };\n  };\n  return [formatValue, offsetValues];\n}","import { warning } from \"rc-util/es/warning\";\nimport { useMemo } from 'react';\nexport default function useRange(range) {\n  return useMemo(function () {\n    if (range === true || !range) {\n      return [!!range, false, false, 0];\n    }\n    var editable = range.editable,\n      draggableTrack = range.draggableTrack,\n      minCount = range.minCount,\n      maxCount = range.maxCount;\n    if (process.env.NODE_ENV !== 'production') {\n      warning(!editable || !draggableTrack, '`editable` can not work with `draggableTrack`.');\n    }\n    return [true, editable, !editable && draggableTrack, minCount || 0, maxCount];\n  }, [range]);\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport cls from 'classnames';\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport isEqual from \"rc-util/es/isEqual\";\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport Handles from \"./Handles\";\nimport Marks from \"./Marks\";\nimport Steps from \"./Steps\";\nimport Tracks from \"./Tracks\";\nimport SliderContext from \"./context\";\nimport useDrag from \"./hooks/useDrag\";\nimport useOffset from \"./hooks/useOffset\";\nimport useRange from \"./hooks/useRange\";\n\n/**\n * New:\n * - click mark to update range value\n * - handleRender\n * - Fix handle with count not correct\n * - Fix pushable not work in some case\n * - No more FindDOMNode\n * - Move all position related style into inline style\n * - Key: up is plus, down is minus\n * - fix Key with step = null not align with marks\n * - Change range should not trigger onChange\n * - keyboard support pushable\n */\n\nvar Slider = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var _props$prefixCls = props.prefixCls,\n    prefixCls = _props$prefixCls === void 0 ? 'rc-slider' : _props$prefixCls,\n    className = props.className,\n    style = props.style,\n    classNames = props.classNames,\n    styles = props.styles,\n    id = props.id,\n    _props$disabled = props.disabled,\n    disabled = _props$disabled === void 0 ? false : _props$disabled,\n    _props$keyboard = props.keyboard,\n    keyboard = _props$keyboard === void 0 ? true : _props$keyboard,\n    autoFocus = props.autoFocus,\n    onFocus = props.onFocus,\n    onBlur = props.onBlur,\n    _props$min = props.min,\n    min = _props$min === void 0 ? 0 : _props$min,\n    _props$max = props.max,\n    max = _props$max === void 0 ? 100 : _props$max,\n    _props$step = props.step,\n    step = _props$step === void 0 ? 1 : _props$step,\n    value = props.value,\n    defaultValue = props.defaultValue,\n    range = props.range,\n    count = props.count,\n    onChange = props.onChange,\n    onBeforeChange = props.onBeforeChange,\n    onAfterChange = props.onAfterChange,\n    onChangeComplete = props.onChangeComplete,\n    _props$allowCross = props.allowCross,\n    allowCross = _props$allowCross === void 0 ? true : _props$allowCross,\n    _props$pushable = props.pushable,\n    pushable = _props$pushable === void 0 ? false : _props$pushable,\n    reverse = props.reverse,\n    vertical = props.vertical,\n    _props$included = props.included,\n    included = _props$included === void 0 ? true : _props$included,\n    startPoint = props.startPoint,\n    trackStyle = props.trackStyle,\n    handleStyle = props.handleStyle,\n    railStyle = props.railStyle,\n    dotStyle = props.dotStyle,\n    activeDotStyle = props.activeDotStyle,\n    marks = props.marks,\n    dots = props.dots,\n    handleRender = props.handleRender,\n    activeHandleRender = props.activeHandleRender,\n    track = props.track,\n    _props$tabIndex = props.tabIndex,\n    tabIndex = _props$tabIndex === void 0 ? 0 : _props$tabIndex,\n    ariaLabelForHandle = props.ariaLabelForHandle,\n    ariaLabelledByForHandle = props.ariaLabelledByForHandle,\n    ariaRequired = props.ariaRequired,\n    ariaValueTextFormatterForHandle = props.ariaValueTextFormatterForHandle;\n  var handlesRef = React.useRef(null);\n  var containerRef = React.useRef(null);\n  var direction = React.useMemo(function () {\n    if (vertical) {\n      return reverse ? 'ttb' : 'btt';\n    }\n    return reverse ? 'rtl' : 'ltr';\n  }, [reverse, vertical]);\n\n  // ============================ Range =============================\n  var _useRange = useRange(range),\n    _useRange2 = _slicedToArray(_useRange, 5),\n    rangeEnabled = _useRange2[0],\n    rangeEditable = _useRange2[1],\n    rangeDraggableTrack = _useRange2[2],\n    minCount = _useRange2[3],\n    maxCount = _useRange2[4];\n  var mergedMin = React.useMemo(function () {\n    return isFinite(min) ? min : 0;\n  }, [min]);\n  var mergedMax = React.useMemo(function () {\n    return isFinite(max) ? max : 100;\n  }, [max]);\n\n  // ============================= Step =============================\n  var mergedStep = React.useMemo(function () {\n    return step !== null && step <= 0 ? 1 : step;\n  }, [step]);\n\n  // ============================= Push =============================\n  var mergedPush = React.useMemo(function () {\n    if (typeof pushable === 'boolean') {\n      return pushable ? mergedStep : false;\n    }\n    return pushable >= 0 ? pushable : false;\n  }, [pushable, mergedStep]);\n\n  // ============================ Marks =============================\n  var markList = React.useMemo(function () {\n    return Object.keys(marks || {}).map(function (key) {\n      var mark = marks[key];\n      var markObj = {\n        value: Number(key)\n      };\n      if (mark && _typeof(mark) === 'object' && ! /*#__PURE__*/React.isValidElement(mark) && ('label' in mark || 'style' in mark)) {\n        markObj.style = mark.style;\n        markObj.label = mark.label;\n      } else {\n        markObj.label = mark;\n      }\n      return markObj;\n    }).filter(function (_ref) {\n      var label = _ref.label;\n      return label || typeof label === 'number';\n    }).sort(function (a, b) {\n      return a.value - b.value;\n    });\n  }, [marks]);\n\n  // ============================ Format ============================\n  var _useOffset = useOffset(mergedMin, mergedMax, mergedStep, markList, allowCross, mergedPush),\n    _useOffset2 = _slicedToArray(_useOffset, 2),\n    formatValue = _useOffset2[0],\n    offsetValues = _useOffset2[1];\n\n  // ============================ Values ============================\n  var _useMergedState = useMergedState(defaultValue, {\n      value: value\n    }),\n    _useMergedState2 = _slicedToArray(_useMergedState, 2),\n    mergedValue = _useMergedState2[0],\n    setValue = _useMergedState2[1];\n  var rawValues = React.useMemo(function () {\n    var valueList = mergedValue === null || mergedValue === undefined ? [] : Array.isArray(mergedValue) ? mergedValue : [mergedValue];\n    var _valueList = _slicedToArray(valueList, 1),\n      _valueList$ = _valueList[0],\n      val0 = _valueList$ === void 0 ? mergedMin : _valueList$;\n    var returnValues = mergedValue === null ? [] : [val0];\n\n    // Format as range\n    if (rangeEnabled) {\n      returnValues = _toConsumableArray(valueList);\n\n      // When count provided or value is `undefined`, we fill values\n      if (count || mergedValue === undefined) {\n        var pointCount = count >= 0 ? count + 1 : 2;\n        returnValues = returnValues.slice(0, pointCount);\n\n        // Fill with count\n        while (returnValues.length < pointCount) {\n          var _returnValues;\n          returnValues.push((_returnValues = returnValues[returnValues.length - 1]) !== null && _returnValues !== void 0 ? _returnValues : mergedMin);\n        }\n      }\n      returnValues.sort(function (a, b) {\n        return a - b;\n      });\n    }\n\n    // Align in range\n    returnValues.forEach(function (val, index) {\n      returnValues[index] = formatValue(val);\n    });\n    return returnValues;\n  }, [mergedValue, rangeEnabled, mergedMin, count, formatValue]);\n\n  // =========================== onChange ===========================\n  var getTriggerValue = function getTriggerValue(triggerValues) {\n    return rangeEnabled ? triggerValues : triggerValues[0];\n  };\n  var triggerChange = useEvent(function (nextValues) {\n    // Order first\n    var cloneNextValues = _toConsumableArray(nextValues).sort(function (a, b) {\n      return a - b;\n    });\n\n    // Trigger event if needed\n    if (onChange && !isEqual(cloneNextValues, rawValues, true)) {\n      onChange(getTriggerValue(cloneNextValues));\n    }\n\n    // We set this later since it will re-render component immediately\n    setValue(cloneNextValues);\n  });\n  var finishChange = useEvent(function (draggingDelete) {\n    // Trigger from `useDrag` will tell if it's a delete action\n    if (draggingDelete) {\n      handlesRef.current.hideHelp();\n    }\n    var finishValue = getTriggerValue(rawValues);\n    onAfterChange === null || onAfterChange === void 0 || onAfterChange(finishValue);\n    warning(!onAfterChange, '[rc-slider] `onAfterChange` is deprecated. Please use `onChangeComplete` instead.');\n    onChangeComplete === null || onChangeComplete === void 0 || onChangeComplete(finishValue);\n  });\n  var onDelete = function onDelete(index) {\n    if (disabled || !rangeEditable || rawValues.length <= minCount) {\n      return;\n    }\n    var cloneNextValues = _toConsumableArray(rawValues);\n    cloneNextValues.splice(index, 1);\n    onBeforeChange === null || onBeforeChange === void 0 || onBeforeChange(getTriggerValue(cloneNextValues));\n    triggerChange(cloneNextValues);\n    var nextFocusIndex = Math.max(0, index - 1);\n    handlesRef.current.hideHelp();\n    handlesRef.current.focus(nextFocusIndex);\n  };\n  var _useDrag = useDrag(containerRef, direction, rawValues, mergedMin, mergedMax, formatValue, triggerChange, finishChange, offsetValues, rangeEditable, minCount),\n    _useDrag2 = _slicedToArray(_useDrag, 5),\n    draggingIndex = _useDrag2[0],\n    draggingValue = _useDrag2[1],\n    draggingDelete = _useDrag2[2],\n    cacheValues = _useDrag2[3],\n    onStartDrag = _useDrag2[4];\n\n  /**\n   * When `rangeEditable` will insert a new value in the values array.\n   * Else it will replace the value in the values array.\n   */\n  var changeToCloseValue = function changeToCloseValue(newValue, e) {\n    if (!disabled) {\n      // Create new values\n      var cloneNextValues = _toConsumableArray(rawValues);\n      var valueIndex = 0;\n      var valueBeforeIndex = 0; // Record the index which value < newValue\n      var valueDist = mergedMax - mergedMin;\n      rawValues.forEach(function (val, index) {\n        var dist = Math.abs(newValue - val);\n        if (dist <= valueDist) {\n          valueDist = dist;\n          valueIndex = index;\n        }\n        if (val < newValue) {\n          valueBeforeIndex = index;\n        }\n      });\n      var focusIndex = valueIndex;\n      if (rangeEditable && valueDist !== 0 && (!maxCount || rawValues.length < maxCount)) {\n        cloneNextValues.splice(valueBeforeIndex + 1, 0, newValue);\n        focusIndex = valueBeforeIndex + 1;\n      } else {\n        cloneNextValues[valueIndex] = newValue;\n      }\n\n      // Fill value to match default 2 (only when `rawValues` is empty)\n      if (rangeEnabled && !rawValues.length && count === undefined) {\n        cloneNextValues.push(newValue);\n      }\n      var nextValue = getTriggerValue(cloneNextValues);\n      onBeforeChange === null || onBeforeChange === void 0 || onBeforeChange(nextValue);\n      triggerChange(cloneNextValues);\n      if (e) {\n        var _document$activeEleme, _document$activeEleme2;\n        (_document$activeEleme = document.activeElement) === null || _document$activeEleme === void 0 || (_document$activeEleme2 = _document$activeEleme.blur) === null || _document$activeEleme2 === void 0 || _document$activeEleme2.call(_document$activeEleme);\n        handlesRef.current.focus(focusIndex);\n        onStartDrag(e, focusIndex, cloneNextValues);\n      } else {\n        // https://github.com/ant-design/ant-design/issues/49997\n        onAfterChange === null || onAfterChange === void 0 || onAfterChange(nextValue);\n        warning(!onAfterChange, '[rc-slider] `onAfterChange` is deprecated. Please use `onChangeComplete` instead.');\n        onChangeComplete === null || onChangeComplete === void 0 || onChangeComplete(nextValue);\n      }\n    }\n  };\n\n  // ============================ Click =============================\n  var onSliderMouseDown = function onSliderMouseDown(e) {\n    e.preventDefault();\n    var _containerRef$current = containerRef.current.getBoundingClientRect(),\n      width = _containerRef$current.width,\n      height = _containerRef$current.height,\n      left = _containerRef$current.left,\n      top = _containerRef$current.top,\n      bottom = _containerRef$current.bottom,\n      right = _containerRef$current.right;\n    var clientX = e.clientX,\n      clientY = e.clientY;\n    var percent;\n    switch (direction) {\n      case 'btt':\n        percent = (bottom - clientY) / height;\n        break;\n      case 'ttb':\n        percent = (clientY - top) / height;\n        break;\n      case 'rtl':\n        percent = (right - clientX) / width;\n        break;\n      default:\n        percent = (clientX - left) / width;\n    }\n    var nextValue = mergedMin + percent * (mergedMax - mergedMin);\n    changeToCloseValue(formatValue(nextValue), e);\n  };\n\n  // =========================== Keyboard ===========================\n  var _React$useState = React.useState(null),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    keyboardValue = _React$useState2[0],\n    setKeyboardValue = _React$useState2[1];\n  var onHandleOffsetChange = function onHandleOffsetChange(offset, valueIndex) {\n    if (!disabled) {\n      var next = offsetValues(rawValues, offset, valueIndex);\n      onBeforeChange === null || onBeforeChange === void 0 || onBeforeChange(getTriggerValue(rawValues));\n      triggerChange(next.values);\n      setKeyboardValue(next.value);\n    }\n  };\n  React.useEffect(function () {\n    if (keyboardValue !== null) {\n      var valueIndex = rawValues.indexOf(keyboardValue);\n      if (valueIndex >= 0) {\n        handlesRef.current.focus(valueIndex);\n      }\n    }\n    setKeyboardValue(null);\n  }, [keyboardValue]);\n\n  // ============================= Drag =============================\n  var mergedDraggableTrack = React.useMemo(function () {\n    if (rangeDraggableTrack && mergedStep === null) {\n      if (process.env.NODE_ENV !== 'production') {\n        warning(false, '`draggableTrack` is not supported when `step` is `null`.');\n      }\n      return false;\n    }\n    return rangeDraggableTrack;\n  }, [rangeDraggableTrack, mergedStep]);\n  var onStartMove = useEvent(function (e, valueIndex) {\n    onStartDrag(e, valueIndex);\n    onBeforeChange === null || onBeforeChange === void 0 || onBeforeChange(getTriggerValue(rawValues));\n  });\n\n  // Auto focus for updated handle\n  var dragging = draggingIndex !== -1;\n  React.useEffect(function () {\n    if (!dragging) {\n      var valueIndex = rawValues.lastIndexOf(draggingValue);\n      handlesRef.current.focus(valueIndex);\n    }\n  }, [dragging]);\n\n  // =========================== Included ===========================\n  var sortedCacheValues = React.useMemo(function () {\n    return _toConsumableArray(cacheValues).sort(function (a, b) {\n      return a - b;\n    });\n  }, [cacheValues]);\n\n  // Provide a range values with included [min, max]\n  // Used for Track, Mark & Dot\n  var _React$useMemo = React.useMemo(function () {\n      if (!rangeEnabled) {\n        return [mergedMin, sortedCacheValues[0]];\n      }\n      return [sortedCacheValues[0], sortedCacheValues[sortedCacheValues.length - 1]];\n    }, [sortedCacheValues, rangeEnabled, mergedMin]),\n    _React$useMemo2 = _slicedToArray(_React$useMemo, 2),\n    includedStart = _React$useMemo2[0],\n    includedEnd = _React$useMemo2[1];\n\n  // ============================= Refs =============================\n  React.useImperativeHandle(ref, function () {\n    return {\n      focus: function focus() {\n        handlesRef.current.focus(0);\n      },\n      blur: function blur() {\n        var _containerRef$current2;\n        var _document = document,\n          activeElement = _document.activeElement;\n        if ((_containerRef$current2 = containerRef.current) !== null && _containerRef$current2 !== void 0 && _containerRef$current2.contains(activeElement)) {\n          activeElement === null || activeElement === void 0 || activeElement.blur();\n        }\n      }\n    };\n  });\n\n  // ========================== Auto Focus ==========================\n  React.useEffect(function () {\n    if (autoFocus) {\n      handlesRef.current.focus(0);\n    }\n  }, []);\n\n  // =========================== Context ============================\n  var context = React.useMemo(function () {\n    return {\n      min: mergedMin,\n      max: mergedMax,\n      direction: direction,\n      disabled: disabled,\n      keyboard: keyboard,\n      step: mergedStep,\n      included: included,\n      includedStart: includedStart,\n      includedEnd: includedEnd,\n      range: rangeEnabled,\n      tabIndex: tabIndex,\n      ariaLabelForHandle: ariaLabelForHandle,\n      ariaLabelledByForHandle: ariaLabelledByForHandle,\n      ariaRequired: ariaRequired,\n      ariaValueTextFormatterForHandle: ariaValueTextFormatterForHandle,\n      styles: styles || {},\n      classNames: classNames || {}\n    };\n  }, [mergedMin, mergedMax, direction, disabled, keyboard, mergedStep, included, includedStart, includedEnd, rangeEnabled, tabIndex, ariaLabelForHandle, ariaLabelledByForHandle, ariaRequired, ariaValueTextFormatterForHandle, styles, classNames]);\n\n  // ============================ Render ============================\n  return /*#__PURE__*/React.createElement(SliderContext.Provider, {\n    value: context\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    ref: containerRef,\n    className: cls(prefixCls, className, _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), disabled), \"\".concat(prefixCls, \"-vertical\"), vertical), \"\".concat(prefixCls, \"-horizontal\"), !vertical), \"\".concat(prefixCls, \"-with-marks\"), markList.length)),\n    style: style,\n    onMouseDown: onSliderMouseDown,\n    id: id\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    className: cls(\"\".concat(prefixCls, \"-rail\"), classNames === null || classNames === void 0 ? void 0 : classNames.rail),\n    style: _objectSpread(_objectSpread({}, railStyle), styles === null || styles === void 0 ? void 0 : styles.rail)\n  }), track !== false && /*#__PURE__*/React.createElement(Tracks, {\n    prefixCls: prefixCls,\n    style: trackStyle,\n    values: rawValues,\n    startPoint: startPoint,\n    onStartMove: mergedDraggableTrack ? onStartMove : undefined\n  }), /*#__PURE__*/React.createElement(Steps, {\n    prefixCls: prefixCls,\n    marks: markList,\n    dots: dots,\n    style: dotStyle,\n    activeStyle: activeDotStyle\n  }), /*#__PURE__*/React.createElement(Handles, {\n    ref: handlesRef,\n    prefixCls: prefixCls,\n    style: handleStyle,\n    values: cacheValues,\n    draggingIndex: draggingIndex,\n    draggingDelete: draggingDelete,\n    onStartMove: onStartMove,\n    onOffsetChange: onHandleOffsetChange,\n    onFocus: onFocus,\n    onBlur: onBlur,\n    handleRender: handleRender,\n    activeHandleRender: activeHandleRender,\n    onChangeComplete: finishChange,\n    onDelete: rangeEditable ? onDelete : undefined\n  }), /*#__PURE__*/React.createElement(Marks, {\n    prefixCls: prefixCls,\n    marks: markList,\n    onClick: changeToCloseValue\n  })));\n});\nif (process.env.NODE_ENV !== 'production') {\n  Slider.displayName = 'Slider';\n}\nexport default Slider;","import { createContext } from 'react';\n/** @private Internal context. Do not use in your production. */\nconst SliderInternalContext = /*#__PURE__*/createContext({});\nexport default SliderInternalContext;","\"use client\";\n\nimport * as React from 'react';\nimport { useRef } from 'react';\nimport raf from \"rc-util/es/raf\";\nimport { composeRef } from \"rc-util/es/ref\";\nimport Tooltip from '../tooltip';\nconst SliderTooltip = /*#__PURE__*/React.forwardRef((props, ref) => {\n  const {\n    open,\n    draggingDelete,\n    value\n  } = props;\n  const innerRef = useRef(null);\n  const mergedOpen = open && !draggingDelete;\n  const rafRef = useRef(null);\n  function cancelKeepAlign() {\n    raf.cancel(rafRef.current);\n    rafRef.current = null;\n  }\n  function keepAlign() {\n    rafRef.current = raf(() => {\n      var _a;\n      (_a = innerRef.current) === null || _a === void 0 ? void 0 : _a.forceAlign();\n      rafRef.current = null;\n    });\n  }\n  React.useEffect(() => {\n    if (mergedOpen) {\n      keepAlign();\n    } else {\n      cancelKeepAlign();\n    }\n    return cancelKeepAlign;\n  }, [mergedOpen, props.title, value]);\n  return /*#__PURE__*/React.createElement(Tooltip, Object.assign({\n    ref: composeRef(innerRef, ref)\n  }, props, {\n    open: mergedOpen\n  }));\n});\nif (process.env.NODE_ENV !== 'production') {\n  SliderTooltip.displayName = 'SliderTooltip';\n}\nexport default SliderTooltip;","import { unit } from '@ant-design/cssinjs';\nimport { FastColor } from '@ant-design/fast-color';\nimport { resetComponent } from '../../style';\nimport { genStyleHooks, mergeToken } from '../../theme/internal';\n// =============================== Base ===============================\nconst genBaseStyle = token => {\n  const {\n    componentCls,\n    antCls,\n    controlSize,\n    dotSize,\n    marginFull,\n    marginPart,\n    colorFillContentHover,\n    handleColorDisabled,\n    calc,\n    handleSize,\n    handleSizeHover,\n    handleActiveColor,\n    handleActiveOutlineColor,\n    handleLineWidth,\n    handleLineWidthHover,\n    motionDurationMid\n  } = token;\n  return {\n    [componentCls]: Object.assign(Object.assign({}, resetComponent(token)), {\n      position: 'relative',\n      height: controlSize,\n      margin: `${unit(marginPart)} ${unit(marginFull)}`,\n      padding: 0,\n      cursor: 'pointer',\n      touchAction: 'none',\n      '&-vertical': {\n        margin: `${unit(marginFull)} ${unit(marginPart)}`\n      },\n      [`${componentCls}-rail`]: {\n        position: 'absolute',\n        backgroundColor: token.railBg,\n        borderRadius: token.borderRadiusXS,\n        transition: `background-color ${motionDurationMid}`\n      },\n      [`${componentCls}-track,${componentCls}-tracks`]: {\n        position: 'absolute',\n        transition: `background-color ${motionDurationMid}`\n      },\n      [`${componentCls}-track`]: {\n        backgroundColor: token.trackBg,\n        borderRadius: token.borderRadiusXS\n      },\n      [`${componentCls}-track-draggable`]: {\n        boxSizing: 'content-box',\n        backgroundClip: 'content-box',\n        border: 'solid rgba(0,0,0,0)'\n      },\n      '&:hover': {\n        [`${componentCls}-rail`]: {\n          backgroundColor: token.railHoverBg\n        },\n        [`${componentCls}-track`]: {\n          backgroundColor: token.trackHoverBg\n        },\n        [`${componentCls}-dot`]: {\n          borderColor: colorFillContentHover\n        },\n        [`${componentCls}-handle::after`]: {\n          boxShadow: `0 0 0 ${unit(handleLineWidth)} ${token.colorPrimaryBorderHover}`\n        },\n        [`${componentCls}-dot-active`]: {\n          borderColor: token.dotActiveBorderColor\n        }\n      },\n      [`${componentCls}-handle`]: {\n        position: 'absolute',\n        width: handleSize,\n        height: handleSize,\n        outline: 'none',\n        userSelect: 'none',\n        // Dragging status\n        '&-dragging-delete': {\n          opacity: 0\n        },\n        // 扩大选区\n        '&::before': {\n          content: '\"\"',\n          position: 'absolute',\n          insetInlineStart: calc(handleLineWidth).mul(-1).equal(),\n          insetBlockStart: calc(handleLineWidth).mul(-1).equal(),\n          width: calc(handleSize).add(calc(handleLineWidth).mul(2)).equal(),\n          height: calc(handleSize).add(calc(handleLineWidth).mul(2)).equal(),\n          backgroundColor: 'transparent'\n        },\n        '&::after': {\n          content: '\"\"',\n          position: 'absolute',\n          insetBlockStart: 0,\n          insetInlineStart: 0,\n          width: handleSize,\n          height: handleSize,\n          backgroundColor: token.colorBgElevated,\n          boxShadow: `0 0 0 ${unit(handleLineWidth)} ${token.handleColor}`,\n          outline: `0px solid transparent`,\n          borderRadius: '50%',\n          cursor: 'pointer',\n          transition: `\n            inset-inline-start ${motionDurationMid},\n            inset-block-start ${motionDurationMid},\n            width ${motionDurationMid},\n            height ${motionDurationMid},\n            box-shadow ${motionDurationMid},\n            outline ${motionDurationMid}\n          `\n        },\n        '&:hover, &:active, &:focus': {\n          '&::before': {\n            insetInlineStart: calc(handleSizeHover).sub(handleSize).div(2).add(handleLineWidthHover).mul(-1).equal(),\n            insetBlockStart: calc(handleSizeHover).sub(handleSize).div(2).add(handleLineWidthHover).mul(-1).equal(),\n            width: calc(handleSizeHover).add(calc(handleLineWidthHover).mul(2)).equal(),\n            height: calc(handleSizeHover).add(calc(handleLineWidthHover).mul(2)).equal()\n          },\n          '&::after': {\n            boxShadow: `0 0 0 ${unit(handleLineWidthHover)} ${handleActiveColor}`,\n            outline: `6px solid ${handleActiveOutlineColor}`,\n            width: handleSizeHover,\n            height: handleSizeHover,\n            insetInlineStart: token.calc(handleSize).sub(handleSizeHover).div(2).equal(),\n            insetBlockStart: token.calc(handleSize).sub(handleSizeHover).div(2).equal()\n          }\n        }\n      },\n      [`&-lock ${componentCls}-handle`]: {\n        '&::before, &::after': {\n          transition: 'none'\n        }\n      },\n      [`${componentCls}-mark`]: {\n        position: 'absolute',\n        fontSize: token.fontSize\n      },\n      [`${componentCls}-mark-text`]: {\n        position: 'absolute',\n        display: 'inline-block',\n        color: token.colorTextDescription,\n        textAlign: 'center',\n        wordBreak: 'keep-all',\n        cursor: 'pointer',\n        userSelect: 'none',\n        '&-active': {\n          color: token.colorText\n        }\n      },\n      [`${componentCls}-step`]: {\n        position: 'absolute',\n        background: 'transparent',\n        pointerEvents: 'none'\n      },\n      [`${componentCls}-dot`]: {\n        position: 'absolute',\n        width: dotSize,\n        height: dotSize,\n        backgroundColor: token.colorBgElevated,\n        border: `${unit(handleLineWidth)} solid ${token.dotBorderColor}`,\n        borderRadius: '50%',\n        cursor: 'pointer',\n        transition: `border-color ${token.motionDurationSlow}`,\n        pointerEvents: 'auto',\n        '&-active': {\n          borderColor: token.dotActiveBorderColor\n        }\n      },\n      [`&${componentCls}-disabled`]: {\n        cursor: 'not-allowed',\n        [`${componentCls}-rail`]: {\n          backgroundColor: `${token.railBg} !important`\n        },\n        [`${componentCls}-track`]: {\n          backgroundColor: `${token.trackBgDisabled} !important`\n        },\n        [`\n          ${componentCls}-dot\n        `]: {\n          backgroundColor: token.colorBgElevated,\n          borderColor: token.trackBgDisabled,\n          boxShadow: 'none',\n          cursor: 'not-allowed'\n        },\n        [`${componentCls}-handle::after`]: {\n          backgroundColor: token.colorBgElevated,\n          cursor: 'not-allowed',\n          width: handleSize,\n          height: handleSize,\n          boxShadow: `0 0 0 ${unit(handleLineWidth)} ${handleColorDisabled}`,\n          insetInlineStart: 0,\n          insetBlockStart: 0\n        },\n        [`\n          ${componentCls}-mark-text,\n          ${componentCls}-dot\n        `]: {\n          cursor: `not-allowed !important`\n        }\n      },\n      [`&-tooltip ${antCls}-tooltip-inner`]: {\n        minWidth: 'unset'\n      }\n    })\n  };\n};\n// ============================ Horizontal ============================\nconst genDirectionStyle = (token, horizontal) => {\n  const {\n    componentCls,\n    railSize,\n    handleSize,\n    dotSize,\n    marginFull,\n    calc\n  } = token;\n  const railPadding = horizontal ? 'paddingBlock' : 'paddingInline';\n  const full = horizontal ? 'width' : 'height';\n  const part = horizontal ? 'height' : 'width';\n  const handlePos = horizontal ? 'insetBlockStart' : 'insetInlineStart';\n  const markInset = horizontal ? 'top' : 'insetInlineStart';\n  const handlePosSize = calc(railSize).mul(3).sub(handleSize).div(2).equal();\n  const draggableBorderSize = calc(handleSize).sub(railSize).div(2).equal();\n  const draggableBorder = horizontal ? {\n    borderWidth: `${unit(draggableBorderSize)} 0`,\n    transform: `translateY(${unit(calc(draggableBorderSize).mul(-1).equal())})`\n  } : {\n    borderWidth: `0 ${unit(draggableBorderSize)}`,\n    transform: `translateX(${unit(token.calc(draggableBorderSize).mul(-1).equal())})`\n  };\n  return {\n    [railPadding]: railSize,\n    [part]: calc(railSize).mul(3).equal(),\n    [`${componentCls}-rail`]: {\n      [full]: '100%',\n      [part]: railSize\n    },\n    [`${componentCls}-track,${componentCls}-tracks`]: {\n      [part]: railSize\n    },\n    [`${componentCls}-track-draggable`]: Object.assign({}, draggableBorder),\n    [`${componentCls}-handle`]: {\n      [handlePos]: handlePosSize\n    },\n    [`${componentCls}-mark`]: {\n      // Reset all\n      insetInlineStart: 0,\n      top: 0,\n      // https://github.com/ant-design/ant-design/issues/43731\n      [markInset]: calc(railSize).mul(3).add(horizontal ? 0 : marginFull).equal(),\n      [full]: '100%'\n    },\n    [`${componentCls}-step`]: {\n      // Reset all\n      insetInlineStart: 0,\n      top: 0,\n      [markInset]: railSize,\n      [full]: '100%',\n      [part]: railSize\n    },\n    [`${componentCls}-dot`]: {\n      position: 'absolute',\n      [handlePos]: calc(railSize).sub(dotSize).div(2).equal()\n    }\n  };\n};\n// ============================ Horizontal ============================\nconst genHorizontalStyle = token => {\n  const {\n    componentCls,\n    marginPartWithMark\n  } = token;\n  return {\n    [`${componentCls}-horizontal`]: Object.assign(Object.assign({}, genDirectionStyle(token, true)), {\n      [`&${componentCls}-with-marks`]: {\n        marginBottom: marginPartWithMark\n      }\n    })\n  };\n};\n// ============================= Vertical =============================\nconst genVerticalStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    [`${componentCls}-vertical`]: Object.assign(Object.assign({}, genDirectionStyle(token, false)), {\n      height: '100%'\n    })\n  };\n};\n// ============================== Export ==============================\nexport const prepareComponentToken = token => {\n  // Handle line width is always width-er 1px\n  const increaseHandleWidth = 1;\n  const controlSize = token.controlHeightLG / 4;\n  const controlSizeHover = token.controlHeightSM / 2;\n  const handleLineWidth = token.lineWidth + increaseHandleWidth;\n  const handleLineWidthHover = token.lineWidth + increaseHandleWidth * 1.5;\n  const handleActiveColor = token.colorPrimary;\n  const handleActiveOutlineColor = new FastColor(handleActiveColor).setA(0.2).toRgbString();\n  return {\n    controlSize,\n    railSize: 4,\n    handleSize: controlSize,\n    handleSizeHover: controlSizeHover,\n    dotSize: 8,\n    handleLineWidth,\n    handleLineWidthHover,\n    railBg: token.colorFillTertiary,\n    railHoverBg: token.colorFillSecondary,\n    trackBg: token.colorPrimaryBorder,\n    trackHoverBg: token.colorPrimaryBorderHover,\n    handleColor: token.colorPrimaryBorder,\n    handleActiveColor,\n    handleActiveOutlineColor,\n    handleColorDisabled: new FastColor(token.colorTextDisabled).onBackground(token.colorBgContainer).toHexString(),\n    dotBorderColor: token.colorBorderSecondary,\n    dotActiveBorderColor: token.colorPrimaryBorder,\n    trackBgDisabled: token.colorBgContainerDisabled\n  };\n};\nexport default genStyleHooks('Slider', token => {\n  const sliderToken = mergeToken(token, {\n    marginPart: token.calc(token.controlHeight).sub(token.controlSize).div(2).equal(),\n    marginFull: token.calc(token.controlSize).div(2).equal(),\n    marginPartWithMark: token.calc(token.controlHeightLG).sub(token.controlSize).equal()\n  });\n  return [genBaseStyle(sliderToken), genHorizontalStyle(sliderToken), genVerticalStyle(sliderToken)];\n}, prepareComponentToken);","import * as React from 'react';\nimport raf from \"rc-util/es/raf\";\nexport default function useRafLock() {\n  const [state, setState] = React.useState(false);\n  const rafRef = React.useRef(null);\n  const cleanup = () => {\n    raf.cancel(rafRef.current);\n  };\n  const setDelayState = nextState => {\n    cleanup();\n    if (nextState) {\n      setState(nextState);\n    } else {\n      rafRef.current = raf(() => {\n        setState(nextState);\n      });\n    }\n  };\n  React.useEffect(() => cleanup, []);\n  return [state, setDelayState];\n}","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport React from 'react';\nimport classNames from 'classnames';\nimport RcSlider from 'rc-slider';\nimport raf from \"rc-util/es/raf\";\nimport { devUseWarning } from '../_util/warning';\nimport DisabledContext from '../config-provider/DisabledContext';\nimport SliderInternalContext from './Context';\nimport SliderTooltip from './SliderTooltip';\nimport useStyle from './style';\nimport useRafLock from './useRafLock';\nimport { useComponentConfig } from '../config-provider/context';\nfunction getTipFormatter(tipFormatter, legacyTipFormatter) {\n  if (tipFormatter || tipFormatter === null) {\n    return tipFormatter;\n  }\n  if (legacyTipFormatter || legacyTipFormatter === null) {\n    return legacyTipFormatter;\n  }\n  return val => typeof val === 'number' ? val.toString() : '';\n}\nconst Slider = /*#__PURE__*/React.forwardRef((props, ref) => {\n  const {\n      prefixCls: customizePrefixCls,\n      range,\n      className,\n      rootClassName,\n      style,\n      disabled,\n      // Deprecated Props\n      tooltipPrefixCls: legacyTooltipPrefixCls,\n      tipFormatter: legacyTipFormatter,\n      tooltipVisible: legacyTooltipVisible,\n      getTooltipPopupContainer: legacyGetTooltipPopupContainer,\n      tooltipPlacement: legacyTooltipPlacement,\n      tooltip = {},\n      onChangeComplete,\n      classNames: sliderClassNames,\n      styles\n    } = props,\n    restProps = __rest(props, [\"prefixCls\", \"range\", \"className\", \"rootClassName\", \"style\", \"disabled\", \"tooltipPrefixCls\", \"tipFormatter\", \"tooltipVisible\", \"getTooltipPopupContainer\", \"tooltipPlacement\", \"tooltip\", \"onChangeComplete\", \"classNames\", \"styles\"]);\n  const {\n    vertical\n  } = props;\n  const {\n    getPrefixCls,\n    direction: contextDirection,\n    className: contextClassName,\n    style: contextStyle,\n    classNames: contextClassNames,\n    styles: contextStyles,\n    getPopupContainer\n  } = useComponentConfig('slider');\n  const contextDisabled = React.useContext(DisabledContext);\n  const mergedDisabled = disabled !== null && disabled !== void 0 ? disabled : contextDisabled;\n  // ============================= Context ==============================\n  const {\n    handleRender: contextHandleRender,\n    direction: internalContextDirection\n  } = React.useContext(SliderInternalContext);\n  const mergedDirection = internalContextDirection || contextDirection;\n  const isRTL = mergedDirection === 'rtl';\n  // =============================== Open ===============================\n  const [hoverOpen, setHoverOpen] = useRafLock();\n  const [focusOpen, setFocusOpen] = useRafLock();\n  const tooltipProps = Object.assign({}, tooltip);\n  const {\n    open: tooltipOpen,\n    placement: tooltipPlacement,\n    getPopupContainer: getTooltipPopupContainer,\n    prefixCls: customizeTooltipPrefixCls,\n    formatter: tipFormatter\n  } = tooltipProps;\n  const lockOpen = tooltipOpen !== null && tooltipOpen !== void 0 ? tooltipOpen : legacyTooltipVisible;\n  const activeOpen = (hoverOpen || focusOpen) && lockOpen !== false;\n  const mergedTipFormatter = getTipFormatter(tipFormatter, legacyTipFormatter);\n  // ============================= Change ==============================\n  const [dragging, setDragging] = useRafLock();\n  const onInternalChangeComplete = nextValues => {\n    onChangeComplete === null || onChangeComplete === void 0 ? void 0 : onChangeComplete(nextValues);\n    setDragging(false);\n  };\n  // ============================ Placement ============================\n  const getTooltipPlacement = (placement, vert) => {\n    if (placement) {\n      return placement;\n    }\n    if (!vert) {\n      return 'top';\n    }\n    return isRTL ? 'left' : 'right';\n  };\n  // ============================== Style ===============================\n  const prefixCls = getPrefixCls('slider', customizePrefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  const rootClassNames = classNames(className, contextClassName, contextClassNames.root, sliderClassNames === null || sliderClassNames === void 0 ? void 0 : sliderClassNames.root, rootClassName, {\n    [`${prefixCls}-rtl`]: isRTL,\n    [`${prefixCls}-lock`]: dragging\n  }, hashId, cssVarCls);\n  // make reverse default on rtl direction\n  if (isRTL && !restProps.vertical) {\n    restProps.reverse = !restProps.reverse;\n  }\n  // ============================= Warning ==============================\n  // Warning for deprecated usage\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('Slider');\n    [['tooltipPrefixCls', 'prefixCls'], ['getTooltipPopupContainer', 'getPopupContainer'], ['tipFormatter', 'formatter'], ['tooltipPlacement', 'placement'], ['tooltipVisible', 'open']].forEach(([deprecatedName, newName]) => {\n      warning.deprecated(!(deprecatedName in props), deprecatedName, `tooltip.${newName}`);\n    });\n  }\n  // ============================== Handle ==============================\n  React.useEffect(() => {\n    const onMouseUp = () => {\n      // Delay for 1 frame to make the click to enable hide tooltip\n      // even when the handle is focused\n      raf(() => {\n        setFocusOpen(false);\n      }, 1);\n    };\n    document.addEventListener('mouseup', onMouseUp);\n    return () => {\n      document.removeEventListener('mouseup', onMouseUp);\n    };\n  }, []);\n  const useActiveTooltipHandle = range && !lockOpen;\n  const handleRender = contextHandleRender || ((node, info) => {\n    const {\n      index\n    } = info;\n    const nodeProps = node.props;\n    function proxyEvent(eventName, event, triggerRestPropsEvent) {\n      var _a, _b, _c, _d;\n      if (triggerRestPropsEvent) {\n        (_b = (_a = restProps)[eventName]) === null || _b === void 0 ? void 0 : _b.call(_a, event);\n      }\n      (_d = (_c = nodeProps)[eventName]) === null || _d === void 0 ? void 0 : _d.call(_c, event);\n    }\n    const passedProps = Object.assign(Object.assign({}, nodeProps), {\n      onMouseEnter: e => {\n        setHoverOpen(true);\n        proxyEvent('onMouseEnter', e);\n      },\n      onMouseLeave: e => {\n        setHoverOpen(false);\n        proxyEvent('onMouseLeave', e);\n      },\n      onMouseDown: e => {\n        setFocusOpen(true);\n        setDragging(true);\n        proxyEvent('onMouseDown', e);\n      },\n      onFocus: e => {\n        var _a;\n        setFocusOpen(true);\n        (_a = restProps.onFocus) === null || _a === void 0 ? void 0 : _a.call(restProps, e);\n        proxyEvent('onFocus', e, true);\n      },\n      onBlur: e => {\n        var _a;\n        setFocusOpen(false);\n        (_a = restProps.onBlur) === null || _a === void 0 ? void 0 : _a.call(restProps, e);\n        proxyEvent('onBlur', e, true);\n      }\n    });\n    const cloneNode = /*#__PURE__*/React.cloneElement(node, passedProps);\n    const open = (!!lockOpen || activeOpen) && mergedTipFormatter !== null;\n    // Wrap on handle with Tooltip when is single mode or multiple with all show tooltip\n    if (!useActiveTooltipHandle) {\n      return /*#__PURE__*/React.createElement(SliderTooltip, Object.assign({}, tooltipProps, {\n        prefixCls: getPrefixCls('tooltip', customizeTooltipPrefixCls !== null && customizeTooltipPrefixCls !== void 0 ? customizeTooltipPrefixCls : legacyTooltipPrefixCls),\n        title: mergedTipFormatter ? mergedTipFormatter(info.value) : '',\n        value: info.value,\n        open: open,\n        placement: getTooltipPlacement(tooltipPlacement !== null && tooltipPlacement !== void 0 ? tooltipPlacement : legacyTooltipPlacement, vertical),\n        key: index,\n        classNames: {\n          root: `${prefixCls}-tooltip`\n        },\n        getPopupContainer: getTooltipPopupContainer || legacyGetTooltipPopupContainer || getPopupContainer\n      }), cloneNode);\n    }\n    return cloneNode;\n  });\n  // ========================== Active Handle ===========================\n  const activeHandleRender = useActiveTooltipHandle ? (handle, info) => {\n    const cloneNode = /*#__PURE__*/React.cloneElement(handle, {\n      style: Object.assign(Object.assign({}, handle.props.style), {\n        visibility: 'hidden'\n      })\n    });\n    return /*#__PURE__*/React.createElement(SliderTooltip, Object.assign({}, tooltipProps, {\n      prefixCls: getPrefixCls('tooltip', customizeTooltipPrefixCls !== null && customizeTooltipPrefixCls !== void 0 ? customizeTooltipPrefixCls : legacyTooltipPrefixCls),\n      title: mergedTipFormatter ? mergedTipFormatter(info.value) : '',\n      open: mergedTipFormatter !== null && activeOpen,\n      placement: getTooltipPlacement(tooltipPlacement !== null && tooltipPlacement !== void 0 ? tooltipPlacement : legacyTooltipPlacement, vertical),\n      key: \"tooltip\",\n      classNames: {\n        root: `${prefixCls}-tooltip`\n      },\n      getPopupContainer: getTooltipPopupContainer || legacyGetTooltipPopupContainer || getPopupContainer,\n      draggingDelete: info.draggingDelete\n    }), cloneNode);\n  } : undefined;\n  // ============================== Render ==============================\n  const rootStyle = Object.assign(Object.assign(Object.assign(Object.assign({}, contextStyles.root), contextStyle), styles === null || styles === void 0 ? void 0 : styles.root), style);\n  const mergedTracks = Object.assign(Object.assign({}, contextStyles.tracks), styles === null || styles === void 0 ? void 0 : styles.tracks);\n  const mergedTracksClassNames = classNames(contextClassNames.tracks, sliderClassNames === null || sliderClassNames === void 0 ? void 0 : sliderClassNames.tracks);\n  return wrapCSSVar(\n  /*#__PURE__*/\n  // @ts-ignore\n  React.createElement(RcSlider, Object.assign({}, restProps, {\n    classNames: Object.assign({\n      handle: classNames(contextClassNames.handle, sliderClassNames === null || sliderClassNames === void 0 ? void 0 : sliderClassNames.handle),\n      rail: classNames(contextClassNames.rail, sliderClassNames === null || sliderClassNames === void 0 ? void 0 : sliderClassNames.rail),\n      track: classNames(contextClassNames.track, sliderClassNames === null || sliderClassNames === void 0 ? void 0 : sliderClassNames.track)\n    }, mergedTracksClassNames ? {\n      tracks: mergedTracksClassNames\n    } : {}),\n    styles: Object.assign({\n      handle: Object.assign(Object.assign({}, contextStyles.handle), styles === null || styles === void 0 ? void 0 : styles.handle),\n      rail: Object.assign(Object.assign({}, contextStyles.rail), styles === null || styles === void 0 ? void 0 : styles.rail),\n      track: Object.assign(Object.assign({}, contextStyles.track), styles === null || styles === void 0 ? void 0 : styles.track)\n    }, Object.keys(mergedTracks).length ? {\n      tracks: mergedTracks\n    } : {}),\n    step: restProps.step,\n    range: range,\n    className: rootClassNames,\n    style: rootStyle,\n    disabled: mergedDisabled,\n    ref: ref,\n    prefixCls: prefixCls,\n    handleRender: handleRender,\n    activeHandleRender: activeHandleRender,\n    onChangeComplete: onInternalChangeComplete\n  })));\n});\nif (process.env.NODE_ENV !== 'production') {\n  Slider.displayName = 'Slider';\n}\nexport default Slider;","import * as React from 'react';\nvar DrawerContext = /*#__PURE__*/React.createContext(null);\nexport var RefContext = /*#__PURE__*/React.createContext({});\nexport default DrawerContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"className\", \"containerRef\"];\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { RefContext } from \"./context\";\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport { useComposeRef } from \"rc-util/es/ref\";\nvar DrawerPanel = function DrawerPanel(props) {\n  var prefixCls = props.prefixCls,\n    className = props.className,\n    containerRef = props.containerRef,\n    restProps = _objectWithoutProperties(props, _excluded);\n  var _React$useContext = React.useContext(RefContext),\n    panelRef = _React$useContext.panel;\n  var mergedRef = useComposeRef(panelRef, containerRef);\n\n  // =============================== Render ===============================\n\n  return /*#__PURE__*/React.createElement(\"div\", _extends({\n    className: classNames(\"\".concat(prefixCls, \"-content\"), className),\n    role: \"dialog\",\n    ref: mergedRef\n  }, pickAttrs(props, {\n    aria: true\n  }), {\n    \"aria-modal\": \"true\"\n  }, restProps));\n};\nif (process.env.NODE_ENV !== 'production') {\n  DrawerPanel.displayName = 'DrawerPanel';\n}\nexport default DrawerPanel;","import warning from \"rc-util/es/warning\";\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\nexport function parseWidthHeight(value) {\n  if (typeof value === 'string' && String(Number(value)) === value) {\n    warning(false, 'Invalid value type of `width` or `height` which should be number type instead.');\n    return Number(value);\n  }\n  return value;\n}\nexport function warnCheck(props) {\n  warning(!('wrapperClassName' in props), \"'wrapperClassName' is removed. Please use 'rootClassName' instead.\");\n  warning(canUseDom() || !props.open, \"Drawer with 'open' in SSR is not work since no place to createPortal. Please move to 'useEffect' instead.\");\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport * as React from 'react';\nimport DrawerContext from \"./context\";\nimport DrawerPanel from \"./DrawerPanel\";\nimport { parseWidthHeight } from \"./util\";\nvar sentinelStyle = {\n  width: 0,\n  height: 0,\n  overflow: 'hidden',\n  outline: 'none',\n  position: 'absolute'\n};\nfunction DrawerPopup(props, ref) {\n  var _ref, _pushConfig$distance, _pushConfig;\n  var prefixCls = props.prefixCls,\n    open = props.open,\n    placement = props.placement,\n    inline = props.inline,\n    push = props.push,\n    forceRender = props.forceRender,\n    autoFocus = props.autoFocus,\n    keyboard = props.keyboard,\n    drawerClassNames = props.classNames,\n    rootClassName = props.rootClassName,\n    rootStyle = props.rootStyle,\n    zIndex = props.zIndex,\n    className = props.className,\n    id = props.id,\n    style = props.style,\n    motion = props.motion,\n    width = props.width,\n    height = props.height,\n    children = props.children,\n    mask = props.mask,\n    maskClosable = props.maskClosable,\n    maskMotion = props.maskMotion,\n    maskClassName = props.maskClassName,\n    maskStyle = props.maskStyle,\n    afterOpenChange = props.afterOpenChange,\n    onClose = props.onClose,\n    onMouseEnter = props.onMouseEnter,\n    onMouseOver = props.onMouseOver,\n    onMouseLeave = props.onMouseLeave,\n    onClick = props.onClick,\n    onKeyDown = props.onKeyDown,\n    onKeyUp = props.onKeyUp,\n    styles = props.styles,\n    drawerRender = props.drawerRender;\n\n  // ================================ Refs ================================\n  var panelRef = React.useRef();\n  var sentinelStartRef = React.useRef();\n  var sentinelEndRef = React.useRef();\n  React.useImperativeHandle(ref, function () {\n    return panelRef.current;\n  });\n  var onPanelKeyDown = function onPanelKeyDown(event) {\n    var keyCode = event.keyCode,\n      shiftKey = event.shiftKey;\n    switch (keyCode) {\n      // Tab active\n      case KeyCode.TAB:\n        {\n          if (keyCode === KeyCode.TAB) {\n            if (!shiftKey && document.activeElement === sentinelEndRef.current) {\n              var _sentinelStartRef$cur;\n              (_sentinelStartRef$cur = sentinelStartRef.current) === null || _sentinelStartRef$cur === void 0 || _sentinelStartRef$cur.focus({\n                preventScroll: true\n              });\n            } else if (shiftKey && document.activeElement === sentinelStartRef.current) {\n              var _sentinelEndRef$curre;\n              (_sentinelEndRef$curre = sentinelEndRef.current) === null || _sentinelEndRef$curre === void 0 || _sentinelEndRef$curre.focus({\n                preventScroll: true\n              });\n            }\n          }\n          break;\n        }\n\n      // Close\n      case KeyCode.ESC:\n        {\n          if (onClose && keyboard) {\n            event.stopPropagation();\n            onClose(event);\n          }\n          break;\n        }\n    }\n  };\n\n  // ========================== Control ===========================\n  // Auto Focus\n  React.useEffect(function () {\n    if (open && autoFocus) {\n      var _panelRef$current;\n      (_panelRef$current = panelRef.current) === null || _panelRef$current === void 0 || _panelRef$current.focus({\n        preventScroll: true\n      });\n    }\n  }, [open]);\n\n  // ============================ Push ============================\n  var _React$useState = React.useState(false),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    pushed = _React$useState2[0],\n    setPushed = _React$useState2[1];\n  var parentContext = React.useContext(DrawerContext);\n\n  // Merge push distance\n  var pushConfig;\n  if (typeof push === 'boolean') {\n    pushConfig = push ? {} : {\n      distance: 0\n    };\n  } else {\n    pushConfig = push || {};\n  }\n  var pushDistance = (_ref = (_pushConfig$distance = (_pushConfig = pushConfig) === null || _pushConfig === void 0 ? void 0 : _pushConfig.distance) !== null && _pushConfig$distance !== void 0 ? _pushConfig$distance : parentContext === null || parentContext === void 0 ? void 0 : parentContext.pushDistance) !== null && _ref !== void 0 ? _ref : 180;\n  var mergedContext = React.useMemo(function () {\n    return {\n      pushDistance: pushDistance,\n      push: function push() {\n        setPushed(true);\n      },\n      pull: function pull() {\n        setPushed(false);\n      }\n    };\n  }, [pushDistance]);\n\n  // ========================= ScrollLock =========================\n  // Tell parent to push\n  React.useEffect(function () {\n    if (open) {\n      var _parentContext$push;\n      parentContext === null || parentContext === void 0 || (_parentContext$push = parentContext.push) === null || _parentContext$push === void 0 || _parentContext$push.call(parentContext);\n    } else {\n      var _parentContext$pull;\n      parentContext === null || parentContext === void 0 || (_parentContext$pull = parentContext.pull) === null || _parentContext$pull === void 0 || _parentContext$pull.call(parentContext);\n    }\n  }, [open]);\n\n  // Clean up\n  React.useEffect(function () {\n    return function () {\n      var _parentContext$pull2;\n      parentContext === null || parentContext === void 0 || (_parentContext$pull2 = parentContext.pull) === null || _parentContext$pull2 === void 0 || _parentContext$pull2.call(parentContext);\n    };\n  }, []);\n\n  // ============================ Mask ============================\n  var maskNode = /*#__PURE__*/React.createElement(CSSMotion, _extends({\n    key: \"mask\"\n  }, maskMotion, {\n    visible: mask && open\n  }), function (_ref2, maskRef) {\n    var motionMaskClassName = _ref2.className,\n      motionMaskStyle = _ref2.style;\n    return /*#__PURE__*/React.createElement(\"div\", {\n      className: classNames(\"\".concat(prefixCls, \"-mask\"), motionMaskClassName, drawerClassNames === null || drawerClassNames === void 0 ? void 0 : drawerClassNames.mask, maskClassName),\n      style: _objectSpread(_objectSpread(_objectSpread({}, motionMaskStyle), maskStyle), styles === null || styles === void 0 ? void 0 : styles.mask),\n      onClick: maskClosable && open ? onClose : undefined,\n      ref: maskRef\n    });\n  });\n\n  // =========================== Panel ============================\n  var motionProps = typeof motion === 'function' ? motion(placement) : motion;\n  var wrapperStyle = {};\n  if (pushed && pushDistance) {\n    switch (placement) {\n      case 'top':\n        wrapperStyle.transform = \"translateY(\".concat(pushDistance, \"px)\");\n        break;\n      case 'bottom':\n        wrapperStyle.transform = \"translateY(\".concat(-pushDistance, \"px)\");\n        break;\n      case 'left':\n        wrapperStyle.transform = \"translateX(\".concat(pushDistance, \"px)\");\n        break;\n      default:\n        wrapperStyle.transform = \"translateX(\".concat(-pushDistance, \"px)\");\n        break;\n    }\n  }\n  if (placement === 'left' || placement === 'right') {\n    wrapperStyle.width = parseWidthHeight(width);\n  } else {\n    wrapperStyle.height = parseWidthHeight(height);\n  }\n  var eventHandlers = {\n    onMouseEnter: onMouseEnter,\n    onMouseOver: onMouseOver,\n    onMouseLeave: onMouseLeave,\n    onClick: onClick,\n    onKeyDown: onKeyDown,\n    onKeyUp: onKeyUp\n  };\n  var panelNode = /*#__PURE__*/React.createElement(CSSMotion, _extends({\n    key: \"panel\"\n  }, motionProps, {\n    visible: open,\n    forceRender: forceRender,\n    onVisibleChanged: function onVisibleChanged(nextVisible) {\n      afterOpenChange === null || afterOpenChange === void 0 || afterOpenChange(nextVisible);\n    },\n    removeOnLeave: false,\n    leavedClassName: \"\".concat(prefixCls, \"-content-wrapper-hidden\")\n  }), function (_ref3, motionRef) {\n    var motionClassName = _ref3.className,\n      motionStyle = _ref3.style;\n    var content = /*#__PURE__*/React.createElement(DrawerPanel, _extends({\n      id: id,\n      containerRef: motionRef,\n      prefixCls: prefixCls,\n      className: classNames(className, drawerClassNames === null || drawerClassNames === void 0 ? void 0 : drawerClassNames.content),\n      style: _objectSpread(_objectSpread({}, style), styles === null || styles === void 0 ? void 0 : styles.content)\n    }, pickAttrs(props, {\n      aria: true\n    }), eventHandlers), children);\n    return /*#__PURE__*/React.createElement(\"div\", _extends({\n      className: classNames(\"\".concat(prefixCls, \"-content-wrapper\"), drawerClassNames === null || drawerClassNames === void 0 ? void 0 : drawerClassNames.wrapper, motionClassName),\n      style: _objectSpread(_objectSpread(_objectSpread({}, wrapperStyle), motionStyle), styles === null || styles === void 0 ? void 0 : styles.wrapper)\n    }, pickAttrs(props, {\n      data: true\n    })), drawerRender ? drawerRender(content) : content);\n  });\n\n  // =========================== Render ===========================\n  var containerStyle = _objectSpread({}, rootStyle);\n  if (zIndex) {\n    containerStyle.zIndex = zIndex;\n  }\n  return /*#__PURE__*/React.createElement(DrawerContext.Provider, {\n    value: mergedContext\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(prefixCls, \"\".concat(prefixCls, \"-\").concat(placement), rootClassName, _defineProperty(_defineProperty({}, \"\".concat(prefixCls, \"-open\"), open), \"\".concat(prefixCls, \"-inline\"), inline)),\n    style: containerStyle,\n    tabIndex: -1,\n    ref: panelRef,\n    onKeyDown: onPanelKeyDown\n  }, maskNode, /*#__PURE__*/React.createElement(\"div\", {\n    tabIndex: 0,\n    ref: sentinelStartRef,\n    style: sentinelStyle,\n    \"aria-hidden\": \"true\",\n    \"data-sentinel\": \"start\"\n  }), panelNode, /*#__PURE__*/React.createElement(\"div\", {\n    tabIndex: 0,\n    ref: sentinelEndRef,\n    style: sentinelStyle,\n    \"aria-hidden\": \"true\",\n    \"data-sentinel\": \"end\"\n  })));\n}\nvar RefDrawerPopup = /*#__PURE__*/React.forwardRef(DrawerPopup);\nif (process.env.NODE_ENV !== 'production') {\n  RefDrawerPopup.displayName = 'DrawerPopup';\n}\nexport default RefDrawerPopup;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport Portal from '@rc-component/portal';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport * as React from 'react';\nimport { RefContext } from \"./context\";\nimport DrawerPopup from \"./DrawerPopup\";\nimport { warnCheck } from \"./util\";\nvar Drawer = function Drawer(props) {\n  var _props$open = props.open,\n    open = _props$open === void 0 ? false : _props$open,\n    _props$prefixCls = props.prefixCls,\n    prefixCls = _props$prefixCls === void 0 ? 'rc-drawer' : _props$prefixCls,\n    _props$placement = props.placement,\n    placement = _props$placement === void 0 ? 'right' : _props$placement,\n    _props$autoFocus = props.autoFocus,\n    autoFocus = _props$autoFocus === void 0 ? true : _props$autoFocus,\n    _props$keyboard = props.keyboard,\n    keyboard = _props$keyboard === void 0 ? true : _props$keyboard,\n    _props$width = props.width,\n    width = _props$width === void 0 ? 378 : _props$width,\n    _props$mask = props.mask,\n    mask = _props$mask === void 0 ? true : _props$mask,\n    _props$maskClosable = props.maskClosable,\n    maskClosable = _props$maskClosable === void 0 ? true : _props$maskClosable,\n    getContainer = props.getContainer,\n    forceRender = props.forceRender,\n    afterOpenChange = props.afterOpenChange,\n    destroyOnClose = props.destroyOnClose,\n    onMouseEnter = props.onMouseEnter,\n    onMouseOver = props.onMouseOver,\n    onMouseLeave = props.onMouseLeave,\n    onClick = props.onClick,\n    onKeyDown = props.onKeyDown,\n    onKeyUp = props.onKeyUp,\n    panelRef = props.panelRef;\n  var _React$useState = React.useState(false),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    animatedVisible = _React$useState2[0],\n    setAnimatedVisible = _React$useState2[1];\n\n  // ============================= Warn =============================\n  if (process.env.NODE_ENV !== 'production') {\n    warnCheck(props);\n  }\n\n  // ============================= Open =============================\n  var _React$useState3 = React.useState(false),\n    _React$useState4 = _slicedToArray(_React$useState3, 2),\n    mounted = _React$useState4[0],\n    setMounted = _React$useState4[1];\n  useLayoutEffect(function () {\n    setMounted(true);\n  }, []);\n  var mergedOpen = mounted ? open : false;\n\n  // ============================ Focus =============================\n  var popupRef = React.useRef();\n  var lastActiveRef = React.useRef();\n  useLayoutEffect(function () {\n    if (mergedOpen) {\n      lastActiveRef.current = document.activeElement;\n    }\n  }, [mergedOpen]);\n\n  // ============================= Open =============================\n  var internalAfterOpenChange = function internalAfterOpenChange(nextVisible) {\n    var _popupRef$current;\n    setAnimatedVisible(nextVisible);\n    afterOpenChange === null || afterOpenChange === void 0 || afterOpenChange(nextVisible);\n    if (!nextVisible && lastActiveRef.current && !((_popupRef$current = popupRef.current) !== null && _popupRef$current !== void 0 && _popupRef$current.contains(lastActiveRef.current))) {\n      var _lastActiveRef$curren;\n      (_lastActiveRef$curren = lastActiveRef.current) === null || _lastActiveRef$curren === void 0 || _lastActiveRef$curren.focus({\n        preventScroll: true\n      });\n    }\n  };\n\n  // =========================== Context ============================\n  var refContext = React.useMemo(function () {\n    return {\n      panel: panelRef\n    };\n  }, [panelRef]);\n\n  // ============================ Render ============================\n  if (!forceRender && !animatedVisible && !mergedOpen && destroyOnClose) {\n    return null;\n  }\n  var eventHandlers = {\n    onMouseEnter: onMouseEnter,\n    onMouseOver: onMouseOver,\n    onMouseLeave: onMouseLeave,\n    onClick: onClick,\n    onKeyDown: onKeyDown,\n    onKeyUp: onKeyUp\n  };\n  var drawerPopupProps = _objectSpread(_objectSpread({}, props), {}, {\n    open: mergedOpen,\n    prefixCls: prefixCls,\n    placement: placement,\n    autoFocus: autoFocus,\n    keyboard: keyboard,\n    width: width,\n    mask: mask,\n    maskClosable: maskClosable,\n    inline: getContainer === false,\n    afterOpenChange: internalAfterOpenChange,\n    ref: popupRef\n  }, eventHandlers);\n  return /*#__PURE__*/React.createElement(RefContext.Provider, {\n    value: refContext\n  }, /*#__PURE__*/React.createElement(Portal, {\n    open: mergedOpen || forceRender || animatedVisible,\n    autoDestroy: false,\n    getContainer: getContainer,\n    autoLock: mask && (mergedOpen || animatedVisible)\n  }, /*#__PURE__*/React.createElement(DrawerPopup, drawerPopupProps)));\n};\nif (process.env.NODE_ENV !== 'production') {\n  Drawer.displayName = 'Drawer';\n}\nexport default Drawer;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport useClosable, { pickClosable } from '../_util/hooks/useClosable';\nimport { useComponentConfig } from '../config-provider/context';\nimport Skeleton from '../skeleton';\nconst DrawerPanel = props => {\n  var _a, _b;\n  const {\n    prefixCls,\n    title,\n    footer,\n    extra,\n    loading,\n    onClose,\n    headerStyle,\n    bodyStyle,\n    footerStyle,\n    children,\n    classNames: drawerClassNames,\n    styles: drawerStyles\n  } = props;\n  const drawerContext = useComponentConfig('drawer');\n  const customCloseIconRender = React.useCallback(icon => (/*#__PURE__*/React.createElement(\"button\", {\n    type: \"button\",\n    onClick: onClose,\n    className: `${prefixCls}-close`\n  }, icon)), [onClose]);\n  const [mergedClosable, mergedCloseIcon] = useClosable(pickClosable(props), pickClosable(drawerContext), {\n    closable: true,\n    closeIconRender: customCloseIconRender\n  });\n  const headerNode = React.useMemo(() => {\n    var _a, _b;\n    if (!title && !mergedClosable) {\n      return null;\n    }\n    return /*#__PURE__*/React.createElement(\"div\", {\n      style: Object.assign(Object.assign(Object.assign({}, (_a = drawerContext.styles) === null || _a === void 0 ? void 0 : _a.header), headerStyle), drawerStyles === null || drawerStyles === void 0 ? void 0 : drawerStyles.header),\n      className: classNames(`${prefixCls}-header`, {\n        [`${prefixCls}-header-close-only`]: mergedClosable && !title && !extra\n      }, (_b = drawerContext.classNames) === null || _b === void 0 ? void 0 : _b.header, drawerClassNames === null || drawerClassNames === void 0 ? void 0 : drawerClassNames.header)\n    }, /*#__PURE__*/React.createElement(\"div\", {\n      className: `${prefixCls}-header-title`\n    }, mergedCloseIcon, title && /*#__PURE__*/React.createElement(\"div\", {\n      className: `${prefixCls}-title`\n    }, title)), extra && /*#__PURE__*/React.createElement(\"div\", {\n      className: `${prefixCls}-extra`\n    }, extra));\n  }, [mergedClosable, mergedCloseIcon, extra, headerStyle, prefixCls, title]);\n  const footerNode = React.useMemo(() => {\n    var _a, _b;\n    if (!footer) {\n      return null;\n    }\n    const footerClassName = `${prefixCls}-footer`;\n    return /*#__PURE__*/React.createElement(\"div\", {\n      className: classNames(footerClassName, (_a = drawerContext.classNames) === null || _a === void 0 ? void 0 : _a.footer, drawerClassNames === null || drawerClassNames === void 0 ? void 0 : drawerClassNames.footer),\n      style: Object.assign(Object.assign(Object.assign({}, (_b = drawerContext.styles) === null || _b === void 0 ? void 0 : _b.footer), footerStyle), drawerStyles === null || drawerStyles === void 0 ? void 0 : drawerStyles.footer)\n    }, footer);\n  }, [footer, footerStyle, prefixCls]);\n  return /*#__PURE__*/React.createElement(React.Fragment, null, headerNode, /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(`${prefixCls}-body`, drawerClassNames === null || drawerClassNames === void 0 ? void 0 : drawerClassNames.body, (_a = drawerContext.classNames) === null || _a === void 0 ? void 0 : _a.body),\n    style: Object.assign(Object.assign(Object.assign({}, (_b = drawerContext.styles) === null || _b === void 0 ? void 0 : _b.body), bodyStyle), drawerStyles === null || drawerStyles === void 0 ? void 0 : drawerStyles.body)\n  }, loading ? (/*#__PURE__*/React.createElement(Skeleton, {\n    active: true,\n    title: false,\n    paragraph: {\n      rows: 5\n    },\n    className: `${prefixCls}-body-skeleton`\n  })) : children), footerNode);\n};\nexport default DrawerPanel;","const getMoveTranslate = direction => {\n  const value = '100%';\n  return {\n    left: `translateX(-${value})`,\n    right: `translateX(${value})`,\n    top: `translateY(-${value})`,\n    bottom: `translateY(${value})`\n  }[direction];\n};\nconst getEnterLeaveStyle = (startStyle, endStyle) => ({\n  '&-enter, &-appear': Object.assign(Object.assign({}, startStyle), {\n    '&-active': endStyle\n  }),\n  '&-leave': Object.assign(Object.assign({}, endStyle), {\n    '&-active': startStyle\n  })\n});\nconst getFadeStyle = (from, duration) => Object.assign({\n  '&-enter, &-appear, &-leave': {\n    '&-start': {\n      transition: 'none'\n    },\n    '&-active': {\n      transition: `all ${duration}`\n    }\n  }\n}, getEnterLeaveStyle({\n  opacity: from\n}, {\n  opacity: 1\n}));\nconst getPanelMotionStyles = (direction, duration) => [getFadeStyle(0.7, duration), getEnterLeaveStyle({\n  transform: getMoveTranslate(direction)\n}, {\n  transform: 'none'\n})];\nconst genMotionStyle = token => {\n  const {\n    componentCls,\n    motionDurationSlow\n  } = token;\n  return {\n    [componentCls]: {\n      // ======================== Mask ========================\n      [`${componentCls}-mask-motion`]: getFadeStyle(0, motionDurationSlow),\n      // ======================= Panel ========================\n      [`${componentCls}-panel-motion`]: ['left', 'right', 'top', 'bottom'].reduce((obj, direction) => Object.assign(Object.assign({}, obj), {\n        [`&-${direction}`]: getPanelMotionStyles(direction, motionDurationSlow)\n      }), {})\n    }\n  };\n};\nexport default genMotionStyle;","import { unit } from '@ant-design/cssinjs';\nimport { genFocusStyle } from '../../style';\nimport { genStyleHooks, mergeToken } from '../../theme/internal';\nimport genMotionStyle from './motion';\n// =============================== Base ===============================\nconst genDrawerStyle = token => {\n  const {\n    borderRadiusSM,\n    componentCls,\n    zIndexPopup,\n    colorBgMask,\n    colorBgElevated,\n    motionDurationSlow,\n    motionDurationMid,\n    paddingXS,\n    padding,\n    paddingLG,\n    fontSizeLG,\n    lineHeightLG,\n    lineWidth,\n    lineType,\n    colorSplit,\n    marginXS,\n    colorIcon,\n    colorIconHover,\n    colorBgTextHover,\n    colorBgTextActive,\n    colorText,\n    fontWeightStrong,\n    footerPaddingBlock,\n    footerPaddingInline,\n    calc\n  } = token;\n  const wrapperCls = `${componentCls}-content-wrapper`;\n  return {\n    [componentCls]: {\n      position: 'fixed',\n      inset: 0,\n      zIndex: zIndexPopup,\n      pointerEvents: 'none',\n      color: colorText,\n      '&-pure': {\n        position: 'relative',\n        background: colorBgElevated,\n        display: 'flex',\n        flexDirection: 'column',\n        [`&${componentCls}-left`]: {\n          boxShadow: token.boxShadowDrawerLeft\n        },\n        [`&${componentCls}-right`]: {\n          boxShadow: token.boxShadowDrawerRight\n        },\n        [`&${componentCls}-top`]: {\n          boxShadow: token.boxShadowDrawerUp\n        },\n        [`&${componentCls}-bottom`]: {\n          boxShadow: token.boxShadowDrawerDown\n        }\n      },\n      '&-inline': {\n        position: 'absolute'\n      },\n      // ====================== Mask ======================\n      [`${componentCls}-mask`]: {\n        position: 'absolute',\n        inset: 0,\n        zIndex: zIndexPopup,\n        background: colorBgMask,\n        pointerEvents: 'auto'\n      },\n      // ==================== Content =====================\n      [wrapperCls]: {\n        position: 'absolute',\n        zIndex: zIndexPopup,\n        maxWidth: '100vw',\n        transition: `all ${motionDurationSlow}`,\n        '&-hidden': {\n          display: 'none'\n        }\n      },\n      // Placement\n      [`&-left > ${wrapperCls}`]: {\n        top: 0,\n        bottom: 0,\n        left: {\n          _skip_check_: true,\n          value: 0\n        },\n        boxShadow: token.boxShadowDrawerLeft\n      },\n      [`&-right > ${wrapperCls}`]: {\n        top: 0,\n        right: {\n          _skip_check_: true,\n          value: 0\n        },\n        bottom: 0,\n        boxShadow: token.boxShadowDrawerRight\n      },\n      [`&-top > ${wrapperCls}`]: {\n        top: 0,\n        insetInline: 0,\n        boxShadow: token.boxShadowDrawerUp\n      },\n      [`&-bottom > ${wrapperCls}`]: {\n        bottom: 0,\n        insetInline: 0,\n        boxShadow: token.boxShadowDrawerDown\n      },\n      [`${componentCls}-content`]: {\n        display: 'flex',\n        flexDirection: 'column',\n        width: '100%',\n        height: '100%',\n        overflow: 'auto',\n        background: colorBgElevated,\n        pointerEvents: 'auto'\n      },\n      // Header\n      [`${componentCls}-header`]: {\n        display: 'flex',\n        flex: 0,\n        alignItems: 'center',\n        padding: `${unit(padding)} ${unit(paddingLG)}`,\n        fontSize: fontSizeLG,\n        lineHeight: lineHeightLG,\n        borderBottom: `${unit(lineWidth)} ${lineType} ${colorSplit}`,\n        '&-title': {\n          display: 'flex',\n          flex: 1,\n          alignItems: 'center',\n          minWidth: 0,\n          minHeight: 0\n        }\n      },\n      [`${componentCls}-extra`]: {\n        flex: 'none'\n      },\n      [`${componentCls}-close`]: Object.assign({\n        display: 'inline-flex',\n        width: calc(fontSizeLG).add(paddingXS).equal(),\n        height: calc(fontSizeLG).add(paddingXS).equal(),\n        borderRadius: borderRadiusSM,\n        justifyContent: 'center',\n        alignItems: 'center',\n        marginInlineEnd: marginXS,\n        color: colorIcon,\n        fontWeight: fontWeightStrong,\n        fontSize: fontSizeLG,\n        fontStyle: 'normal',\n        lineHeight: 1,\n        textAlign: 'center',\n        textTransform: 'none',\n        textDecoration: 'none',\n        background: 'transparent',\n        border: 0,\n        cursor: 'pointer',\n        transition: `all ${motionDurationMid}`,\n        textRendering: 'auto',\n        '&:hover': {\n          color: colorIconHover,\n          backgroundColor: colorBgTextHover,\n          textDecoration: 'none'\n        },\n        '&:active': {\n          backgroundColor: colorBgTextActive\n        }\n      }, genFocusStyle(token)),\n      [`${componentCls}-title`]: {\n        flex: 1,\n        margin: 0,\n        fontWeight: token.fontWeightStrong,\n        fontSize: fontSizeLG,\n        lineHeight: lineHeightLG\n      },\n      // Body\n      [`${componentCls}-body`]: {\n        flex: 1,\n        minWidth: 0,\n        minHeight: 0,\n        padding: paddingLG,\n        overflow: 'auto',\n        [`${componentCls}-body-skeleton`]: {\n          width: '100%',\n          height: '100%',\n          display: 'flex',\n          justifyContent: 'center'\n        }\n      },\n      // Footer\n      [`${componentCls}-footer`]: {\n        flexShrink: 0,\n        padding: `${unit(footerPaddingBlock)} ${unit(footerPaddingInline)}`,\n        borderTop: `${unit(lineWidth)} ${lineType} ${colorSplit}`\n      },\n      // ====================== RTL =======================\n      '&-rtl': {\n        direction: 'rtl'\n      }\n    }\n  };\n};\nexport const prepareComponentToken = token => ({\n  zIndexPopup: token.zIndexPopupBase,\n  footerPaddingBlock: token.paddingXS,\n  footerPaddingInline: token.padding\n});\n// ============================== Export ==============================\nexport default genStyleHooks('Drawer', token => {\n  const drawerToken = mergeToken(token, {});\n  return [genDrawerStyle(drawerToken), genMotionStyle(drawerToken)];\n}, prepareComponentToken);","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport RcDrawer from 'rc-drawer';\nimport ContextIsolator from '../_util/ContextIsolator';\nimport { useZIndex } from '../_util/hooks/useZIndex';\nimport { getTransitionName } from '../_util/motion';\nimport { devUseWarning } from '../_util/warning';\nimport zIndexContext from '../_util/zindexContext';\nimport { ConfigContext } from '../config-provider';\nimport { useComponentConfig } from '../config-provider/context';\nimport { usePanelRef } from '../watermark/context';\nimport DrawerPanel from './DrawerPanel';\nimport useStyle from './style';\nconst _SizeTypes = ['default', 'large'];\nconst defaultPushState = {\n  distance: 180\n};\nconst Drawer = props => {\n  var _a;\n  const {\n      rootClassName,\n      width,\n      height,\n      size = 'default',\n      mask = true,\n      push = defaultPushState,\n      open,\n      afterOpenChange,\n      onClose,\n      prefixCls: customizePrefixCls,\n      getContainer: customizeGetContainer,\n      style,\n      className,\n      // Deprecated\n      visible,\n      afterVisibleChange,\n      maskStyle,\n      drawerStyle,\n      contentWrapperStyle,\n      destroyOnClose,\n      destroyOnHidden\n    } = props,\n    rest = __rest(props, [\"rootClassName\", \"width\", \"height\", \"size\", \"mask\", \"push\", \"open\", \"afterOpenChange\", \"onClose\", \"prefixCls\", \"getContainer\", \"style\", \"className\", \"visible\", \"afterVisibleChange\", \"maskStyle\", \"drawerStyle\", \"contentWrapperStyle\", \"destroyOnClose\", \"destroyOnHidden\"]);\n  const {\n    getPopupContainer,\n    getPrefixCls,\n    direction,\n    className: contextClassName,\n    style: contextStyle,\n    classNames: contextClassNames,\n    styles: contextStyles\n  } = useComponentConfig('drawer');\n  const prefixCls = getPrefixCls('drawer', customizePrefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  const getContainer =\n  // 有可能为 false，所以不能直接判断\n  customizeGetContainer === undefined && getPopupContainer ? () => getPopupContainer(document.body) : customizeGetContainer;\n  const drawerClassName = classNames({\n    'no-mask': !mask,\n    [`${prefixCls}-rtl`]: direction === 'rtl'\n  }, rootClassName, hashId, cssVarCls);\n  // ========================== Warning ===========================\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('Drawer');\n    [['visible', 'open'], ['afterVisibleChange', 'afterOpenChange'], ['headerStyle', 'styles.header'], ['bodyStyle', 'styles.body'], ['footerStyle', 'styles.footer'], ['contentWrapperStyle', 'styles.wrapper'], ['maskStyle', 'styles.mask'], ['drawerStyle', 'styles.content'], ['destroyInactivePanel', 'destroyOnHidden']].forEach(([deprecatedName, newName]) => {\n      warning.deprecated(!(deprecatedName in props), deprecatedName, newName);\n    });\n    if (getContainer !== undefined && ((_a = props.style) === null || _a === void 0 ? void 0 : _a.position) === 'absolute') {\n      process.env.NODE_ENV !== \"production\" ? warning(false, 'breaking', '`style` is replaced by `rootStyle` in v5. Please check that `position: absolute` is necessary.') : void 0;\n    }\n  }\n  // ============================ Size ============================\n  const mergedWidth = React.useMemo(() => width !== null && width !== void 0 ? width : size === 'large' ? 736 : 378, [width, size]);\n  const mergedHeight = React.useMemo(() => height !== null && height !== void 0 ? height : size === 'large' ? 736 : 378, [height, size]);\n  // =========================== Motion ===========================\n  const maskMotion = {\n    motionName: getTransitionName(prefixCls, 'mask-motion'),\n    motionAppear: true,\n    motionEnter: true,\n    motionLeave: true,\n    motionDeadline: 500\n  };\n  const panelMotion = motionPlacement => ({\n    motionName: getTransitionName(prefixCls, `panel-motion-${motionPlacement}`),\n    motionAppear: true,\n    motionEnter: true,\n    motionLeave: true,\n    motionDeadline: 500\n  });\n  // ============================ Refs ============================\n  // Select `ant-drawer-content` by `panelRef`\n  const panelRef = usePanelRef();\n  // ============================ zIndex ============================\n  const [zIndex, contextZIndex] = useZIndex('Drawer', rest.zIndex);\n  // =========================== Render ===========================\n  const {\n    classNames: propClassNames = {},\n    styles: propStyles = {}\n  } = rest;\n  return wrapCSSVar(/*#__PURE__*/React.createElement(ContextIsolator, {\n    form: true,\n    space: true\n  }, /*#__PURE__*/React.createElement(zIndexContext.Provider, {\n    value: contextZIndex\n  }, /*#__PURE__*/React.createElement(RcDrawer, Object.assign({\n    prefixCls: prefixCls,\n    onClose: onClose,\n    maskMotion: maskMotion,\n    motion: panelMotion\n  }, rest, {\n    classNames: {\n      mask: classNames(propClassNames.mask, contextClassNames.mask),\n      content: classNames(propClassNames.content, contextClassNames.content),\n      wrapper: classNames(propClassNames.wrapper, contextClassNames.wrapper)\n    },\n    styles: {\n      mask: Object.assign(Object.assign(Object.assign({}, propStyles.mask), maskStyle), contextStyles.mask),\n      content: Object.assign(Object.assign(Object.assign({}, propStyles.content), drawerStyle), contextStyles.content),\n      wrapper: Object.assign(Object.assign(Object.assign({}, propStyles.wrapper), contentWrapperStyle), contextStyles.wrapper)\n    },\n    open: open !== null && open !== void 0 ? open : visible,\n    mask: mask,\n    push: push,\n    width: mergedWidth,\n    height: mergedHeight,\n    style: Object.assign(Object.assign({}, contextStyle), style),\n    className: classNames(contextClassName, className),\n    rootClassName: drawerClassName,\n    getContainer: getContainer,\n    afterOpenChange: afterOpenChange !== null && afterOpenChange !== void 0 ? afterOpenChange : afterVisibleChange,\n    panelRef: panelRef,\n    zIndex: zIndex,\n    // TODO: In the future, destroyOnClose in rc-drawer needs to be upgrade to destroyOnHidden\n    destroyOnClose: destroyOnHidden !== null && destroyOnHidden !== void 0 ? destroyOnHidden : destroyOnClose\n  }), /*#__PURE__*/React.createElement(DrawerPanel, Object.assign({\n    prefixCls: prefixCls\n  }, rest, {\n    onClose: onClose\n  }))))));\n};\n/** @private Internal Component. Do not use in your production. */\nconst PurePanel = props => {\n  const {\n      prefixCls: customizePrefixCls,\n      style,\n      className,\n      placement = 'right'\n    } = props,\n    restProps = __rest(props, [\"prefixCls\", \"style\", \"className\", \"placement\"]);\n  const {\n    getPrefixCls\n  } = React.useContext(ConfigContext);\n  const prefixCls = getPrefixCls('drawer', customizePrefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  const cls = classNames(prefixCls, `${prefixCls}-pure`, `${prefixCls}-${placement}`, hashId, cssVarCls, className);\n  return wrapCSSVar(/*#__PURE__*/React.createElement(\"div\", {\n    className: cls,\n    style: style\n  }, /*#__PURE__*/React.createElement(DrawerPanel, Object.assign({\n    prefixCls: prefixCls\n  }, restProps))));\n};\nDrawer._InternalPanelDoNotUseOrYouWillBeFired = PurePanel;\nif (process.env.NODE_ENV !== 'production') {\n  Drawer.displayName = 'Drawer';\n}\nexport default Drawer;","export function isPresetSize(size) {\n  return ['small', 'middle', 'large'].includes(size);\n}\nexport function isValidGapNumber(size) {\n  if (!size) {\n    // The case of size = 0 is deliberately excluded here, because the default value of the gap attribute in CSS is 0, so if the user passes 0 in, we can directly ignore it.\n    return false;\n  }\n  return typeof size === 'number' && !Number.isNaN(size);\n}","import React from 'react';\nexport const SpaceContext = /*#__PURE__*/React.createContext({\n  latestIndex: 0\n});\nexport const SpaceContextProvider = SpaceContext.Provider;","\"use client\";\n\nimport * as React from 'react';\nimport { SpaceContext } from './context';\nconst Item = ({\n  className,\n  index,\n  children,\n  split,\n  style\n}) => {\n  const {\n    latestIndex\n  } = React.useContext(SpaceContext);\n  if (children === null || children === undefined) {\n    return null;\n  }\n  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n    className: className,\n    style: style\n  }, children), index < latestIndex && split && /*#__PURE__*/React.createElement(\"span\", {\n    className: `${className}-split`\n  }, split));\n};\nexport default Item;","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport { isPresetSize, isValidGapNumber } from '../_util/gapSize';\nimport { useComponentConfig } from '../config-provider/context';\nimport Compact from './Compact';\nimport { SpaceContextProvider } from './context';\nimport Item from './Item';\nimport useStyle from './style';\nexport { SpaceContext } from './context';\nconst InternalSpace = /*#__PURE__*/React.forwardRef((props, ref) => {\n  var _a;\n  const {\n    getPrefixCls,\n    direction: directionConfig,\n    size: contextSize,\n    className: contextClassName,\n    style: contextStyle,\n    classNames: contextClassNames,\n    styles: contextStyles\n  } = useComponentConfig('space');\n  const {\n      size = contextSize !== null && contextSize !== void 0 ? contextSize : 'small',\n      align,\n      className,\n      rootClassName,\n      children,\n      direction = 'horizontal',\n      prefixCls: customizePrefixCls,\n      split,\n      style,\n      wrap = false,\n      classNames: customClassNames,\n      styles\n    } = props,\n    otherProps = __rest(props, [\"size\", \"align\", \"className\", \"rootClassName\", \"children\", \"direction\", \"prefixCls\", \"split\", \"style\", \"wrap\", \"classNames\", \"styles\"]);\n  const [horizontalSize, verticalSize] = Array.isArray(size) ? size : [size, size];\n  const isPresetVerticalSize = isPresetSize(verticalSize);\n  const isPresetHorizontalSize = isPresetSize(horizontalSize);\n  const isValidVerticalSize = isValidGapNumber(verticalSize);\n  const isValidHorizontalSize = isValidGapNumber(horizontalSize);\n  const childNodes = toArray(children, {\n    keepEmpty: true\n  });\n  const mergedAlign = align === undefined && direction === 'horizontal' ? 'center' : align;\n  const prefixCls = getPrefixCls('space', customizePrefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  const cls = classNames(prefixCls, contextClassName, hashId, `${prefixCls}-${direction}`, {\n    [`${prefixCls}-rtl`]: directionConfig === 'rtl',\n    [`${prefixCls}-align-${mergedAlign}`]: mergedAlign,\n    [`${prefixCls}-gap-row-${verticalSize}`]: isPresetVerticalSize,\n    [`${prefixCls}-gap-col-${horizontalSize}`]: isPresetHorizontalSize\n  }, className, rootClassName, cssVarCls);\n  const itemClassName = classNames(`${prefixCls}-item`, (_a = customClassNames === null || customClassNames === void 0 ? void 0 : customClassNames.item) !== null && _a !== void 0 ? _a : contextClassNames.item);\n  // Calculate latest one\n  let latestIndex = 0;\n  const nodes = childNodes.map((child, i) => {\n    var _a;\n    if (child !== null && child !== undefined) {\n      latestIndex = i;\n    }\n    const key = (child === null || child === void 0 ? void 0 : child.key) || `${itemClassName}-${i}`;\n    return /*#__PURE__*/React.createElement(Item, {\n      className: itemClassName,\n      key: key,\n      index: i,\n      split: split,\n      style: (_a = styles === null || styles === void 0 ? void 0 : styles.item) !== null && _a !== void 0 ? _a : contextStyles.item\n    }, child);\n  });\n  const spaceContext = React.useMemo(() => ({\n    latestIndex\n  }), [latestIndex]);\n  // =========================== Render ===========================\n  if (childNodes.length === 0) {\n    return null;\n  }\n  const gapStyle = {};\n  if (wrap) {\n    gapStyle.flexWrap = 'wrap';\n  }\n  if (!isPresetHorizontalSize && isValidHorizontalSize) {\n    gapStyle.columnGap = horizontalSize;\n  }\n  if (!isPresetVerticalSize && isValidVerticalSize) {\n    gapStyle.rowGap = verticalSize;\n  }\n  return wrapCSSVar(/*#__PURE__*/React.createElement(\"div\", Object.assign({\n    ref: ref,\n    className: cls,\n    style: Object.assign(Object.assign(Object.assign({}, gapStyle), contextStyle), style)\n  }, otherProps), /*#__PURE__*/React.createElement(SpaceContextProvider, {\n    value: spaceContext\n  }, nodes)));\n});\nconst Space = InternalSpace;\nSpace.Compact = Compact;\nif (process.env.NODE_ENV !== 'production') {\n  Space.displayName = 'Space';\n}\nexport default Space;","// This icon file is generated automatically.\nvar FileTextOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494zM504 618H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM312 490v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8z\" } }] }, \"name\": \"file-text\", \"theme\": \"outlined\" };\nexport default FileTextOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport FileTextOutlinedSvg from \"@ant-design/icons-svg/es/asn/FileTextOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar FileTextOutlined = function FileTextOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: FileTextOutlinedSvg\n  }));\n};\n\n/**![file-text](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTg1NC42IDI4OC42TDYzOS40IDczLjRjLTYtNi0xNC4xLTkuNC0yMi42LTkuNEgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjgzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NDBjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzExLjNjMC04LjUtMy40LTE2LjctOS40LTIyLjd6TTc5MC4yIDMyNkg2MDJWMTM3LjhMNzkwLjIgMzI2em0xLjggNTYySDIzMlYxMzZoMzAydjIxNmE0MiA0MiAwIDAwNDIgNDJoMjE2djQ5NHpNNTA0IDYxOEgzMjBjLTQuNCAwLTggMy42LTggOHY0OGMwIDQuNCAzLjYgOCA4IDhoMTg0YzQuNCAwIDgtMy42IDgtOHYtNDhjMC00LjQtMy42LTgtOC04ek0zMTIgNDkwdjQ4YzAgNC40IDMuNiA4IDggOGgzODRjNC40IDAgOC0zLjYgOC04di00OGMwLTQuNC0zLjYtOC04LThIMzIwYy00LjQgMC04IDMuNi04IDh6IiAvPjwvc3ZnPg==) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(FileTextOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'FileTextOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar ZoomInOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M637 443H519V309c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v134H325c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h118v134c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V519h118c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm284 424L775 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\" } }] }, \"name\": \"zoom-in\", \"theme\": \"outlined\" };\nexport default ZoomInOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport ZoomInOutlinedSvg from \"@ant-design/icons-svg/es/asn/ZoomInOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar ZoomInOutlined = function ZoomInOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: ZoomInOutlinedSvg\n  }));\n};\n\n/**![zoom-in](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTYzNyA0NDNINTE5VjMwOWMwLTQuNC0zLjYtOC04LThoLTYwYy00LjQgMC04IDMuNi04IDh2MTM0SDMyNWMtNC40IDAtOCAzLjYtOCA4djYwYzAgNC40IDMuNiA4IDggOGgxMTh2MTM0YzAgNC40IDMuNiA4IDggOGg2MGM0LjQgMCA4LTMuNiA4LThWNTE5aDExOGM0LjQgMCA4LTMuNiA4LTh2LTYwYzAtNC40LTMuNi04LTgtOHptMjg0IDQyNEw3NzUgNzIxYzEyMi4xLTE0OC45IDExMy42LTM2OS41LTI2LTUwOS0xNDgtMTQ4LjEtMzg4LjQtMTQ4LjEtNTM3IDAtMTQ4LjEgMTQ4LjYtMTQ4LjEgMzg5IDAgNTM3IDEzOS41IDEzOS42IDM2MC4xIDE0OC4xIDUwOSAyNmwxNDYgMTQ2YzMuMiAyLjggOC4zIDIuOCAxMSAwbDQzLTQzYzIuOC0yLjcgMi44LTcuOCAwLTExek02OTYgNjk2Yy0xMTguOCAxMTguNy0zMTEuMiAxMTguNy00MzAgMC0xMTguNy0xMTguOC0xMTguNy0zMTEuMiAwLTQzMCAxMTguOC0xMTguNyAzMTEuMi0xMTguNyA0MzAgMCAxMTguNyAxMTguOCAxMTguNyAzMTEuMiAwIDQzMHoiIC8+PC9zdmc+) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(ZoomInOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'ZoomInOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar ZoomOutOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"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-8zm284 424L775 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\" } }] }, \"name\": \"zoom-out\", \"theme\": \"outlined\" };\nexport default ZoomOutOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport ZoomOutOutlinedSvg from \"@ant-design/icons-svg/es/asn/ZoomOutOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar ZoomOutOutlined = function ZoomOutOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: ZoomOutOutlinedSvg\n  }));\n};\n\n/**![zoom-out](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTYzNyA0NDNIMzI1Yy00LjQgMC04IDMuNi04IDh2NjBjMCA0LjQgMy42IDggOCA4aDMxMmM0LjQgMCA4LTMuNiA4LTh2LTYwYzAtNC40LTMuNi04LTgtOHptMjg0IDQyNEw3NzUgNzIxYzEyMi4xLTE0OC45IDExMy42LTM2OS41LTI2LTUwOS0xNDgtMTQ4LjEtMzg4LjQtMTQ4LjEtNTM3IDAtMTQ4LjEgMTQ4LjYtMTQ4LjEgMzg5IDAgNTM3IDEzOS41IDEzOS42IDM2MC4xIDE0OC4xIDUwOSAyNmwxNDYgMTQ2YzMuMiAyLjggOC4zIDIuOCAxMSAwbDQzLTQzYzIuOC0yLjcgMi44LTcuOCAwLTExek02OTYgNjk2Yy0xMTguOCAxMTguNy0zMTEuMiAxMTguNy00MzAgMC0xMTguNy0xMTguOC0xMTguNy0zMTEuMiAwLTQzMCAxMTguOC0xMTguNyAzMTEuMi0xMTguNyA0MzAgMCAxMTguNyAxMTguOCAxMTguNyAzMTEuMiAwIDQzMHoiIC8+PC9zdmc+) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(ZoomOutOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'ZoomOutOutlined';\n}\nexport default RefIcon;","// Thanks to https://github.com/andreypopp/react-textarea-autosize/\n\n/**\n * calculateNodeHeight(uiTextNode, useCache = false)\n */\n\nvar HIDDEN_TEXTAREA_STYLE = \"\\n  min-height:0 !important;\\n  max-height:none !important;\\n  height:0 !important;\\n  visibility:hidden !important;\\n  overflow:hidden !important;\\n  position:absolute !important;\\n  z-index:-1000 !important;\\n  top:0 !important;\\n  right:0 !important;\\n  pointer-events: none !important;\\n\";\nvar SIZING_STYLE = ['letter-spacing', 'line-height', 'padding-top', 'padding-bottom', 'font-family', 'font-weight', 'font-size', 'font-variant', 'text-rendering', 'text-transform', 'width', 'text-indent', 'padding-left', 'padding-right', 'border-width', 'box-sizing', 'word-break', 'white-space'];\nvar computedStyleCache = {};\nvar hiddenTextarea;\nexport function calculateNodeStyling(node) {\n  var useCache = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n  var nodeRef = node.getAttribute('id') || node.getAttribute('data-reactid') || node.getAttribute('name');\n  if (useCache && computedStyleCache[nodeRef]) {\n    return computedStyleCache[nodeRef];\n  }\n  var style = window.getComputedStyle(node);\n  var boxSizing = style.getPropertyValue('box-sizing') || style.getPropertyValue('-moz-box-sizing') || style.getPropertyValue('-webkit-box-sizing');\n  var paddingSize = parseFloat(style.getPropertyValue('padding-bottom')) + parseFloat(style.getPropertyValue('padding-top'));\n  var borderSize = parseFloat(style.getPropertyValue('border-bottom-width')) + parseFloat(style.getPropertyValue('border-top-width'));\n  var sizingStyle = SIZING_STYLE.map(function (name) {\n    return \"\".concat(name, \":\").concat(style.getPropertyValue(name));\n  }).join(';');\n  var nodeInfo = {\n    sizingStyle: sizingStyle,\n    paddingSize: paddingSize,\n    borderSize: borderSize,\n    boxSizing: boxSizing\n  };\n  if (useCache && nodeRef) {\n    computedStyleCache[nodeRef] = nodeInfo;\n  }\n  return nodeInfo;\n}\nexport default function calculateAutoSizeStyle(uiTextNode) {\n  var useCache = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n  var minRows = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n  var maxRows = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n  if (!hiddenTextarea) {\n    hiddenTextarea = document.createElement('textarea');\n    hiddenTextarea.setAttribute('tab-index', '-1');\n    hiddenTextarea.setAttribute('aria-hidden', 'true');\n    // fix: A form field element should have an id or name attribute\n    // A form field element has neither an id nor a name attribute. This might prevent the browser from correctly autofilling the form.\n    // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea\n    hiddenTextarea.setAttribute('name', 'hiddenTextarea');\n    document.body.appendChild(hiddenTextarea);\n  }\n\n  // Fix wrap=\"off\" issue\n  // https://github.com/ant-design/ant-design/issues/6577\n  if (uiTextNode.getAttribute('wrap')) {\n    hiddenTextarea.setAttribute('wrap', uiTextNode.getAttribute('wrap'));\n  } else {\n    hiddenTextarea.removeAttribute('wrap');\n  }\n\n  // Copy all CSS properties that have an impact on the height of the content in\n  // the textbox\n  var _calculateNodeStyling = calculateNodeStyling(uiTextNode, useCache),\n    paddingSize = _calculateNodeStyling.paddingSize,\n    borderSize = _calculateNodeStyling.borderSize,\n    boxSizing = _calculateNodeStyling.boxSizing,\n    sizingStyle = _calculateNodeStyling.sizingStyle;\n\n  // Need to have the overflow attribute to hide the scrollbar otherwise\n  // text-lines will not calculated properly as the shadow will technically be\n  // narrower for content\n  hiddenTextarea.setAttribute('style', \"\".concat(sizingStyle, \";\").concat(HIDDEN_TEXTAREA_STYLE));\n  hiddenTextarea.value = uiTextNode.value || uiTextNode.placeholder || '';\n  var minHeight = undefined;\n  var maxHeight = undefined;\n  var overflowY;\n  var height = hiddenTextarea.scrollHeight;\n  if (boxSizing === 'border-box') {\n    // border-box: add border, since height = content + padding + border\n    height += borderSize;\n  } else if (boxSizing === 'content-box') {\n    // remove padding, since height = content\n    height -= paddingSize;\n  }\n  if (minRows !== null || maxRows !== null) {\n    // measure height of a textarea with a single row\n    hiddenTextarea.value = ' ';\n    var singleRowHeight = hiddenTextarea.scrollHeight - paddingSize;\n    if (minRows !== null) {\n      minHeight = singleRowHeight * minRows;\n      if (boxSizing === 'border-box') {\n        minHeight = minHeight + paddingSize + borderSize;\n      }\n      height = Math.max(minHeight, height);\n    }\n    if (maxRows !== null) {\n      maxHeight = singleRowHeight * maxRows;\n      if (boxSizing === 'border-box') {\n        maxHeight = maxHeight + paddingSize + borderSize;\n      }\n      overflowY = height > maxHeight ? '' : 'hidden';\n      height = Math.min(maxHeight, height);\n    }\n  }\n  var style = {\n    height: height,\n    overflowY: overflowY,\n    resize: 'none'\n  };\n  if (minHeight) {\n    style.minHeight = minHeight;\n  }\n  if (maxHeight) {\n    style.maxHeight = maxHeight;\n  }\n  return style;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"defaultValue\", \"value\", \"autoSize\", \"onResize\", \"className\", \"style\", \"disabled\", \"onChange\", \"onInternalAutoSize\"];\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport raf from \"rc-util/es/raf\";\nimport * as React from 'react';\nimport calculateAutoSizeStyle from \"./calculateNodeHeight\";\nvar RESIZE_START = 0;\nvar RESIZE_MEASURING = 1;\nvar RESIZE_STABLE = 2;\nvar ResizableTextArea = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var _ref = props,\n    prefixCls = _ref.prefixCls,\n    defaultValue = _ref.defaultValue,\n    value = _ref.value,\n    autoSize = _ref.autoSize,\n    onResize = _ref.onResize,\n    className = _ref.className,\n    style = _ref.style,\n    disabled = _ref.disabled,\n    onChange = _ref.onChange,\n    onInternalAutoSize = _ref.onInternalAutoSize,\n    restProps = _objectWithoutProperties(_ref, _excluded);\n\n  // =============================== Value ================================\n  var _useMergedState = useMergedState(defaultValue, {\n      value: value,\n      postState: function postState(val) {\n        return val !== null && val !== void 0 ? val : '';\n      }\n    }),\n    _useMergedState2 = _slicedToArray(_useMergedState, 2),\n    mergedValue = _useMergedState2[0],\n    setMergedValue = _useMergedState2[1];\n  var onInternalChange = function onInternalChange(event) {\n    setMergedValue(event.target.value);\n    onChange === null || onChange === void 0 || onChange(event);\n  };\n\n  // ================================ Ref =================================\n  var textareaRef = React.useRef();\n  React.useImperativeHandle(ref, function () {\n    return {\n      textArea: textareaRef.current\n    };\n  });\n\n  // ============================== AutoSize ==============================\n  var _React$useMemo = React.useMemo(function () {\n      if (autoSize && _typeof(autoSize) === 'object') {\n        return [autoSize.minRows, autoSize.maxRows];\n      }\n      return [];\n    }, [autoSize]),\n    _React$useMemo2 = _slicedToArray(_React$useMemo, 2),\n    minRows = _React$useMemo2[0],\n    maxRows = _React$useMemo2[1];\n  var needAutoSize = !!autoSize;\n\n  // =============================== Scroll ===============================\n  // https://github.com/ant-design/ant-design/issues/21870\n  var fixFirefoxAutoScroll = function fixFirefoxAutoScroll() {\n    try {\n      // FF has bug with jump of scroll to top. We force back here.\n      if (document.activeElement === textareaRef.current) {\n        var _textareaRef$current = textareaRef.current,\n          selectionStart = _textareaRef$current.selectionStart,\n          selectionEnd = _textareaRef$current.selectionEnd,\n          scrollTop = _textareaRef$current.scrollTop;\n\n        // Fix Safari bug which not rollback when break line\n        // This makes Chinese IME can't input. Do not fix this\n        // const { value: tmpValue } = textareaRef.current;\n        // textareaRef.current.value = '';\n        // textareaRef.current.value = tmpValue;\n\n        textareaRef.current.setSelectionRange(selectionStart, selectionEnd);\n        textareaRef.current.scrollTop = scrollTop;\n      }\n    } catch (e) {\n      // Fix error in Chrome:\n      // Failed to read the 'selectionStart' property from 'HTMLInputElement'\n      // http://stackoverflow.com/q/21177489/3040605\n    }\n  };\n\n  // =============================== Resize ===============================\n  var _React$useState = React.useState(RESIZE_STABLE),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    resizeState = _React$useState2[0],\n    setResizeState = _React$useState2[1];\n  var _React$useState3 = React.useState(),\n    _React$useState4 = _slicedToArray(_React$useState3, 2),\n    autoSizeStyle = _React$useState4[0],\n    setAutoSizeStyle = _React$useState4[1];\n  var startResize = function startResize() {\n    setResizeState(RESIZE_START);\n    if (process.env.NODE_ENV === 'test') {\n      onInternalAutoSize === null || onInternalAutoSize === void 0 || onInternalAutoSize();\n    }\n  };\n\n  // Change to trigger resize measure\n  useLayoutEffect(function () {\n    if (needAutoSize) {\n      startResize();\n    }\n  }, [value, minRows, maxRows, needAutoSize]);\n  useLayoutEffect(function () {\n    if (resizeState === RESIZE_START) {\n      setResizeState(RESIZE_MEASURING);\n    } else if (resizeState === RESIZE_MEASURING) {\n      var textareaStyles = calculateAutoSizeStyle(textareaRef.current, false, minRows, maxRows);\n\n      // Safari has bug that text will keep break line on text cut when it's prev is break line.\n      // ZombieJ: This not often happen. So we just skip it.\n      // const { selectionStart, selectionEnd, scrollTop } = textareaRef.current;\n      // const { value: tmpValue } = textareaRef.current;\n      // textareaRef.current.value = '';\n      // textareaRef.current.value = tmpValue;\n\n      // if (document.activeElement === textareaRef.current) {\n      //   textareaRef.current.scrollTop = scrollTop;\n      //   textareaRef.current.setSelectionRange(selectionStart, selectionEnd);\n      // }\n\n      setResizeState(RESIZE_STABLE);\n      setAutoSizeStyle(textareaStyles);\n    } else {\n      fixFirefoxAutoScroll();\n    }\n  }, [resizeState]);\n\n  // We lock resize trigger by raf to avoid Safari warning\n  var resizeRafRef = React.useRef();\n  var cleanRaf = function cleanRaf() {\n    raf.cancel(resizeRafRef.current);\n  };\n  var onInternalResize = function onInternalResize(size) {\n    if (resizeState === RESIZE_STABLE) {\n      onResize === null || onResize === void 0 || onResize(size);\n      if (autoSize) {\n        cleanRaf();\n        resizeRafRef.current = raf(function () {\n          startResize();\n        });\n      }\n    }\n  };\n  React.useEffect(function () {\n    return cleanRaf;\n  }, []);\n\n  // =============================== Render ===============================\n  var mergedAutoSizeStyle = needAutoSize ? autoSizeStyle : null;\n  var mergedStyle = _objectSpread(_objectSpread({}, style), mergedAutoSizeStyle);\n  if (resizeState === RESIZE_START || resizeState === RESIZE_MEASURING) {\n    mergedStyle.overflowY = 'hidden';\n    mergedStyle.overflowX = 'hidden';\n  }\n  return /*#__PURE__*/React.createElement(ResizeObserver, {\n    onResize: onInternalResize,\n    disabled: !(autoSize || onResize)\n  }, /*#__PURE__*/React.createElement(\"textarea\", _extends({}, restProps, {\n    ref: textareaRef,\n    style: mergedStyle,\n    className: classNames(prefixCls, className, _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), disabled)),\n    disabled: disabled,\n    value: mergedValue,\n    onChange: onInternalChange\n  })));\n});\nexport default ResizableTextArea;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"defaultValue\", \"value\", \"onFocus\", \"onBlur\", \"onChange\", \"allowClear\", \"maxLength\", \"onCompositionStart\", \"onCompositionEnd\", \"suffix\", \"prefixCls\", \"showCount\", \"count\", \"className\", \"style\", \"disabled\", \"hidden\", \"classNames\", \"styles\", \"onResize\", \"onClear\", \"onPressEnter\", \"readOnly\", \"autoSize\", \"onKeyDown\"];\nimport clsx from 'classnames';\nimport { BaseInput } from 'rc-input';\nimport useCount from \"rc-input/es/hooks/useCount\";\nimport { resolveOnChange } from \"rc-input/es/utils/commonUtils\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport React, { useEffect, useImperativeHandle, useRef } from 'react';\nimport ResizableTextArea from \"./ResizableTextArea\";\nvar TextArea = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var _countConfig$max;\n  var defaultValue = _ref.defaultValue,\n    customValue = _ref.value,\n    onFocus = _ref.onFocus,\n    onBlur = _ref.onBlur,\n    onChange = _ref.onChange,\n    allowClear = _ref.allowClear,\n    maxLength = _ref.maxLength,\n    onCompositionStart = _ref.onCompositionStart,\n    onCompositionEnd = _ref.onCompositionEnd,\n    suffix = _ref.suffix,\n    _ref$prefixCls = _ref.prefixCls,\n    prefixCls = _ref$prefixCls === void 0 ? 'rc-textarea' : _ref$prefixCls,\n    showCount = _ref.showCount,\n    count = _ref.count,\n    className = _ref.className,\n    style = _ref.style,\n    disabled = _ref.disabled,\n    hidden = _ref.hidden,\n    classNames = _ref.classNames,\n    styles = _ref.styles,\n    onResize = _ref.onResize,\n    onClear = _ref.onClear,\n    onPressEnter = _ref.onPressEnter,\n    readOnly = _ref.readOnly,\n    autoSize = _ref.autoSize,\n    onKeyDown = _ref.onKeyDown,\n    rest = _objectWithoutProperties(_ref, _excluded);\n  var _useMergedState = useMergedState(defaultValue, {\n      value: customValue,\n      defaultValue: defaultValue\n    }),\n    _useMergedState2 = _slicedToArray(_useMergedState, 2),\n    value = _useMergedState2[0],\n    setValue = _useMergedState2[1];\n  var formatValue = value === undefined || value === null ? '' : String(value);\n  var _React$useState = React.useState(false),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    focused = _React$useState2[0],\n    setFocused = _React$useState2[1];\n  var compositionRef = React.useRef(false);\n  var _React$useState3 = React.useState(null),\n    _React$useState4 = _slicedToArray(_React$useState3, 2),\n    textareaResized = _React$useState4[0],\n    setTextareaResized = _React$useState4[1];\n\n  // =============================== Ref ================================\n  var holderRef = useRef(null);\n  var resizableTextAreaRef = useRef(null);\n  var getTextArea = function getTextArea() {\n    var _resizableTextAreaRef;\n    return (_resizableTextAreaRef = resizableTextAreaRef.current) === null || _resizableTextAreaRef === void 0 ? void 0 : _resizableTextAreaRef.textArea;\n  };\n  var focus = function focus() {\n    getTextArea().focus();\n  };\n  useImperativeHandle(ref, function () {\n    var _holderRef$current;\n    return {\n      resizableTextArea: resizableTextAreaRef.current,\n      focus: focus,\n      blur: function blur() {\n        getTextArea().blur();\n      },\n      nativeElement: ((_holderRef$current = holderRef.current) === null || _holderRef$current === void 0 ? void 0 : _holderRef$current.nativeElement) || getTextArea()\n    };\n  });\n  useEffect(function () {\n    setFocused(function (prev) {\n      return !disabled && prev;\n    });\n  }, [disabled]);\n\n  // =========================== Select Range ===========================\n  var _React$useState5 = React.useState(null),\n    _React$useState6 = _slicedToArray(_React$useState5, 2),\n    selection = _React$useState6[0],\n    setSelection = _React$useState6[1];\n  React.useEffect(function () {\n    if (selection) {\n      var _getTextArea;\n      (_getTextArea = getTextArea()).setSelectionRange.apply(_getTextArea, _toConsumableArray(selection));\n    }\n  }, [selection]);\n\n  // ============================== Count ===============================\n  var countConfig = useCount(count, showCount);\n  var mergedMax = (_countConfig$max = countConfig.max) !== null && _countConfig$max !== void 0 ? _countConfig$max : maxLength;\n\n  // Max length value\n  var hasMaxLength = Number(mergedMax) > 0;\n  var valueLength = countConfig.strategy(formatValue);\n  var isOutOfRange = !!mergedMax && valueLength > mergedMax;\n\n  // ============================== Change ==============================\n  var triggerChange = function triggerChange(e, currentValue) {\n    var cutValue = currentValue;\n    if (!compositionRef.current && countConfig.exceedFormatter && countConfig.max && countConfig.strategy(currentValue) > countConfig.max) {\n      cutValue = countConfig.exceedFormatter(currentValue, {\n        max: countConfig.max\n      });\n      if (currentValue !== cutValue) {\n        setSelection([getTextArea().selectionStart || 0, getTextArea().selectionEnd || 0]);\n      }\n    }\n    setValue(cutValue);\n    resolveOnChange(e.currentTarget, e, onChange, cutValue);\n  };\n\n  // =========================== Value Update ===========================\n  var onInternalCompositionStart = function onInternalCompositionStart(e) {\n    compositionRef.current = true;\n    onCompositionStart === null || onCompositionStart === void 0 || onCompositionStart(e);\n  };\n  var onInternalCompositionEnd = function onInternalCompositionEnd(e) {\n    compositionRef.current = false;\n    triggerChange(e, e.currentTarget.value);\n    onCompositionEnd === null || onCompositionEnd === void 0 || onCompositionEnd(e);\n  };\n  var onInternalChange = function onInternalChange(e) {\n    triggerChange(e, e.target.value);\n  };\n  var handleKeyDown = function handleKeyDown(e) {\n    if (e.key === 'Enter' && onPressEnter) {\n      onPressEnter(e);\n    }\n    onKeyDown === null || onKeyDown === void 0 || onKeyDown(e);\n  };\n  var handleFocus = function handleFocus(e) {\n    setFocused(true);\n    onFocus === null || onFocus === void 0 || onFocus(e);\n  };\n  var handleBlur = function handleBlur(e) {\n    setFocused(false);\n    onBlur === null || onBlur === void 0 || onBlur(e);\n  };\n\n  // ============================== Reset ===============================\n  var handleReset = function handleReset(e) {\n    setValue('');\n    focus();\n    resolveOnChange(getTextArea(), e, onChange);\n  };\n  var suffixNode = suffix;\n  var dataCount;\n  if (countConfig.show) {\n    if (countConfig.showFormatter) {\n      dataCount = countConfig.showFormatter({\n        value: formatValue,\n        count: valueLength,\n        maxLength: mergedMax\n      });\n    } else {\n      dataCount = \"\".concat(valueLength).concat(hasMaxLength ? \" / \".concat(mergedMax) : '');\n    }\n    suffixNode = /*#__PURE__*/React.createElement(React.Fragment, null, suffixNode, /*#__PURE__*/React.createElement(\"span\", {\n      className: clsx(\"\".concat(prefixCls, \"-data-count\"), classNames === null || classNames === void 0 ? void 0 : classNames.count),\n      style: styles === null || styles === void 0 ? void 0 : styles.count\n    }, dataCount));\n  }\n  var handleResize = function handleResize(size) {\n    var _getTextArea2;\n    onResize === null || onResize === void 0 || onResize(size);\n    if ((_getTextArea2 = getTextArea()) !== null && _getTextArea2 !== void 0 && _getTextArea2.style.height) {\n      setTextareaResized(true);\n    }\n  };\n  var isPureTextArea = !autoSize && !showCount && !allowClear;\n  return /*#__PURE__*/React.createElement(BaseInput, {\n    ref: holderRef,\n    value: formatValue,\n    allowClear: allowClear,\n    handleReset: handleReset,\n    suffix: suffixNode,\n    prefixCls: prefixCls,\n    classNames: _objectSpread(_objectSpread({}, classNames), {}, {\n      affixWrapper: clsx(classNames === null || classNames === void 0 ? void 0 : classNames.affixWrapper, _defineProperty(_defineProperty({}, \"\".concat(prefixCls, \"-show-count\"), showCount), \"\".concat(prefixCls, \"-textarea-allow-clear\"), allowClear))\n    }),\n    disabled: disabled,\n    focused: focused,\n    className: clsx(className, isOutOfRange && \"\".concat(prefixCls, \"-out-of-range\")),\n    style: _objectSpread(_objectSpread({}, style), textareaResized && !isPureTextArea ? {\n      height: 'auto'\n    } : {}),\n    dataAttrs: {\n      affixWrapper: {\n        'data-count': typeof dataCount === 'string' ? dataCount : undefined\n      }\n    },\n    hidden: hidden,\n    readOnly: readOnly,\n    onClear: onClear\n  }, /*#__PURE__*/React.createElement(ResizableTextArea, _extends({}, rest, {\n    autoSize: autoSize,\n    maxLength: maxLength,\n    onKeyDown: handleKeyDown,\n    onChange: onInternalChange,\n    onFocus: handleFocus,\n    onBlur: handleBlur,\n    onCompositionStart: onInternalCompositionStart,\n    onCompositionEnd: onInternalCompositionEnd,\n    className: clsx(classNames === null || classNames === void 0 ? void 0 : classNames.textarea),\n    style: _objectSpread(_objectSpread({}, styles === null || styles === void 0 ? void 0 : styles.textarea), {}, {\n      resize: style === null || style === void 0 ? void 0 : style.resize\n    }),\n    disabled: disabled,\n    prefixCls: prefixCls,\n    onResize: handleResize,\n    ref: resizableTextAreaRef,\n    readOnly: readOnly\n  })));\n});\nexport default TextArea;","import { genStyleHooks, mergeToken } from '../../theme/internal';\nimport { initComponentToken, initInputToken } from './token';\nexport { initComponentToken, initInputToken };\nconst genTextAreaStyle = token => {\n  const {\n    componentCls,\n    paddingLG\n  } = token;\n  const textareaPrefixCls = `${componentCls}-textarea`;\n  return {\n    // Raw Textarea\n    [`textarea${componentCls}`]: {\n      maxWidth: '100%',\n      // prevent textarea resize from coming out of its container\n      height: 'auto',\n      minHeight: token.controlHeight,\n      lineHeight: token.lineHeight,\n      verticalAlign: 'bottom',\n      transition: `all ${token.motionDurationSlow}`,\n      resize: 'vertical',\n      [`&${componentCls}-mouse-active`]: {\n        transition: `all ${token.motionDurationSlow}, height 0s, width 0s`\n      }\n    },\n    // Wrapper for resize\n    [`${componentCls}-textarea-affix-wrapper-resize-dirty`]: {\n      width: 'auto'\n    },\n    [textareaPrefixCls]: {\n      position: 'relative',\n      '&-show-count': {\n        [`${componentCls}-data-count`]: {\n          position: 'absolute',\n          bottom: token.calc(token.fontSize).mul(token.lineHeight).mul(-1).equal(),\n          insetInlineEnd: 0,\n          color: token.colorTextDescription,\n          whiteSpace: 'nowrap',\n          pointerEvents: 'none'\n        }\n      },\n      [`\n        &-allow-clear > ${componentCls},\n        &-affix-wrapper${textareaPrefixCls}-has-feedback ${componentCls}\n      `]: {\n        paddingInlineEnd: paddingLG\n      },\n      [`&-affix-wrapper${componentCls}-affix-wrapper`]: {\n        padding: 0,\n        [`> textarea${componentCls}`]: {\n          fontSize: 'inherit',\n          border: 'none',\n          outline: 'none',\n          background: 'transparent',\n          minHeight: token.calc(token.controlHeight).sub(token.calc(token.lineWidth).mul(2)).equal(),\n          '&:focus': {\n            boxShadow: 'none !important'\n          }\n        },\n        [`${componentCls}-suffix`]: {\n          margin: 0,\n          '> *:not(:last-child)': {\n            marginInline: 0\n          },\n          // Clear Icon\n          [`${componentCls}-clear-icon`]: {\n            position: 'absolute',\n            insetInlineEnd: token.paddingInline,\n            insetBlockStart: token.paddingXS\n          },\n          // Feedback Icon\n          [`${textareaPrefixCls}-suffix`]: {\n            position: 'absolute',\n            top: 0,\n            insetInlineEnd: token.paddingInline,\n            bottom: 0,\n            zIndex: 1,\n            display: 'inline-flex',\n            alignItems: 'center',\n            margin: 'auto',\n            pointerEvents: 'none'\n          }\n        }\n      },\n      [`&-affix-wrapper${componentCls}-affix-wrapper-rtl`]: {\n        [`${componentCls}-suffix`]: {\n          [`${componentCls}-data-count`]: {\n            direction: 'ltr',\n            insetInlineStart: 0\n          }\n        }\n      },\n      [`&-affix-wrapper${componentCls}-affix-wrapper-sm`]: {\n        [`${componentCls}-suffix`]: {\n          [`${componentCls}-clear-icon`]: {\n            insetInlineEnd: token.paddingInlineSM\n          }\n        }\n      }\n    }\n  };\n};\n// ============================== Export ==============================\nexport default genStyleHooks(['Input', 'TextArea'], token => {\n  const inputToken = mergeToken(token, initInputToken(token));\n  return [genTextAreaStyle(inputToken)];\n}, initComponentToken, {\n  resetFont: false\n});","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport { forwardRef } from 'react';\nimport classNames from 'classnames';\nimport RcTextArea from 'rc-textarea';\nimport getAllowClear from '../_util/getAllowClear';\nimport { getMergedStatus, getStatusClassNames } from '../_util/statusUtils';\nimport { devUseWarning } from '../_util/warning';\nimport { useComponentConfig } from '../config-provider/context';\nimport DisabledContext from '../config-provider/DisabledContext';\nimport useCSSVarCls from '../config-provider/hooks/useCSSVarCls';\nimport useSize from '../config-provider/hooks/useSize';\nimport { FormItemInputContext } from '../form/context';\nimport useVariant from '../form/hooks/useVariants';\nimport { useCompactItemContext } from '../space/Compact';\nimport { triggerFocus } from './Input';\nimport { useSharedStyle } from './style';\nimport useStyle from './style/textarea';\nconst TextArea = /*#__PURE__*/forwardRef((props, ref) => {\n  var _a;\n  const {\n      prefixCls: customizePrefixCls,\n      bordered = true,\n      size: customizeSize,\n      disabled: customDisabled,\n      status: customStatus,\n      allowClear,\n      classNames: classes,\n      rootClassName,\n      className,\n      style,\n      styles,\n      variant: customVariant,\n      showCount,\n      onMouseDown,\n      onResize\n    } = props,\n    rest = __rest(props, [\"prefixCls\", \"bordered\", \"size\", \"disabled\", \"status\", \"allowClear\", \"classNames\", \"rootClassName\", \"className\", \"style\", \"styles\", \"variant\", \"showCount\", \"onMouseDown\", \"onResize\"]);\n  if (process.env.NODE_ENV !== 'production') {\n    const {\n      deprecated\n    } = devUseWarning('TextArea');\n    deprecated(!('bordered' in props), 'bordered', 'variant');\n  }\n  const {\n    getPrefixCls,\n    direction,\n    allowClear: contextAllowClear,\n    autoComplete: contextAutoComplete,\n    className: contextClassName,\n    style: contextStyle,\n    classNames: contextClassNames,\n    styles: contextStyles\n  } = useComponentConfig('textArea');\n  // =================== Disabled ===================\n  const disabled = React.useContext(DisabledContext);\n  const mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;\n  // ==================== Status ====================\n  const {\n    status: contextStatus,\n    hasFeedback,\n    feedbackIcon\n  } = React.useContext(FormItemInputContext);\n  const mergedStatus = getMergedStatus(contextStatus, customStatus);\n  // ===================== Ref ======================\n  const innerRef = React.useRef(null);\n  React.useImperativeHandle(ref, () => {\n    var _a;\n    return {\n      resizableTextArea: (_a = innerRef.current) === null || _a === void 0 ? void 0 : _a.resizableTextArea,\n      focus: option => {\n        var _a, _b;\n        triggerFocus((_b = (_a = innerRef.current) === null || _a === void 0 ? void 0 : _a.resizableTextArea) === null || _b === void 0 ? void 0 : _b.textArea, option);\n      },\n      blur: () => {\n        var _a;\n        return (_a = innerRef.current) === null || _a === void 0 ? void 0 : _a.blur();\n      }\n    };\n  });\n  const prefixCls = getPrefixCls('input', customizePrefixCls);\n  // ==================== Style =====================\n  const rootCls = useCSSVarCls(prefixCls);\n  const [wrapSharedCSSVar, hashId, cssVarCls] = useSharedStyle(prefixCls, rootClassName);\n  const [wrapCSSVar] = useStyle(prefixCls, rootCls);\n  // ================= Compact Item =================\n  const {\n    compactSize,\n    compactItemClassnames\n  } = useCompactItemContext(prefixCls, direction);\n  // ===================== Size =====================\n  const mergedSize = useSize(ctx => {\n    var _a;\n    return (_a = customizeSize !== null && customizeSize !== void 0 ? customizeSize : compactSize) !== null && _a !== void 0 ? _a : ctx;\n  });\n  const [variant, enableVariantCls] = useVariant('textArea', customVariant, bordered);\n  const mergedAllowClear = getAllowClear(allowClear !== null && allowClear !== void 0 ? allowClear : contextAllowClear);\n  // ==================== Resize ====================\n  // https://github.com/ant-design/ant-design/issues/51594\n  const [isMouseDown, setIsMouseDown] = React.useState(false);\n  // When has wrapper, resize will make as dirty for `resize: both` style\n  const [resizeDirty, setResizeDirty] = React.useState(false);\n  const onInternalMouseDown = e => {\n    setIsMouseDown(true);\n    onMouseDown === null || onMouseDown === void 0 ? void 0 : onMouseDown(e);\n    const onMouseUp = () => {\n      setIsMouseDown(false);\n      document.removeEventListener('mouseup', onMouseUp);\n    };\n    document.addEventListener('mouseup', onMouseUp);\n  };\n  const onInternalResize = size => {\n    var _a, _b;\n    onResize === null || onResize === void 0 ? void 0 : onResize(size);\n    // Change to dirty since this maybe from the `resize: both` style\n    if (isMouseDown && typeof getComputedStyle === 'function') {\n      const ele = (_b = (_a = innerRef.current) === null || _a === void 0 ? void 0 : _a.nativeElement) === null || _b === void 0 ? void 0 : _b.querySelector('textarea');\n      if (ele && getComputedStyle(ele).resize === 'both') {\n        setResizeDirty(true);\n      }\n    }\n  };\n  // ==================== Render ====================\n  return wrapSharedCSSVar(wrapCSSVar(/*#__PURE__*/React.createElement(RcTextArea, Object.assign({\n    autoComplete: contextAutoComplete\n  }, rest, {\n    style: Object.assign(Object.assign({}, contextStyle), style),\n    styles: Object.assign(Object.assign({}, contextStyles), styles),\n    disabled: mergedDisabled,\n    allowClear: mergedAllowClear,\n    className: classNames(cssVarCls, rootCls, className, rootClassName, compactItemClassnames, contextClassName,\n    // Only for wrapper\n    resizeDirty && `${prefixCls}-textarea-affix-wrapper-resize-dirty`),\n    classNames: Object.assign(Object.assign(Object.assign({}, classes), contextClassNames), {\n      textarea: classNames({\n        [`${prefixCls}-sm`]: mergedSize === 'small',\n        [`${prefixCls}-lg`]: mergedSize === 'large'\n      }, hashId, classes === null || classes === void 0 ? void 0 : classes.textarea, contextClassNames.textarea, isMouseDown && `${prefixCls}-mouse-active`),\n      variant: classNames({\n        [`${prefixCls}-${variant}`]: enableVariantCls\n      }, getStatusClassNames(prefixCls, mergedStatus)),\n      affixWrapper: classNames(`${prefixCls}-textarea-affix-wrapper`, {\n        [`${prefixCls}-affix-wrapper-rtl`]: direction === 'rtl',\n        [`${prefixCls}-affix-wrapper-sm`]: mergedSize === 'small',\n        [`${prefixCls}-affix-wrapper-lg`]: mergedSize === 'large',\n        [`${prefixCls}-textarea-show-count`]: showCount || ((_a = props.count) === null || _a === void 0 ? void 0 : _a.show)\n      }, hashId)\n    }),\n    prefixCls: prefixCls,\n    suffix: hasFeedback && /*#__PURE__*/React.createElement(\"span\", {\n      className: `${prefixCls}-textarea-suffix`\n    }, feedbackIcon),\n    showCount: showCount,\n    ref: innerRef,\n    onResize: onInternalResize,\n    onMouseDown: onInternalMouseDown\n  }))));\n});\nexport default TextArea;","// This icon file is generated automatically.\nvar DoubleLeftOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M272.9 512l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L186.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H532c6.7 0 10.4-7.7 6.3-12.9L272.9 512zm304 0l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L490.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H836c6.7 0 10.4-7.7 6.3-12.9L576.9 512z\" } }] }, \"name\": \"double-left\", \"theme\": \"outlined\" };\nexport default DoubleLeftOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport DoubleLeftOutlinedSvg from \"@ant-design/icons-svg/es/asn/DoubleLeftOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar DoubleLeftOutlined = function DoubleLeftOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: DoubleLeftOutlinedSvg\n  }));\n};\n\n/**![double-left](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTI3Mi45IDUxMmwyNjUuNC0zMzkuMWM0LjEtNS4yLjQtMTIuOS02LjMtMTIuOWgtNzcuM2MtNC45IDAtOS42IDIuMy0xMi42IDYuMUwxODYuOCA0OTIuM2EzMS45OSAzMS45OSAwIDAwMCAzOS41bDI1NS4zIDMyNi4xYzMgMy45IDcuNyA2LjEgMTIuNiA2LjFINTMyYzYuNyAwIDEwLjQtNy43IDYuMy0xMi45TDI3Mi45IDUxMnptMzA0IDBsMjY1LjQtMzM5LjFjNC4xLTUuMi40LTEyLjktNi4zLTEyLjloLTc3LjNjLTQuOSAwLTkuNiAyLjMtMTIuNiA2LjFMNDkwLjggNDkyLjNhMzEuOTkgMzEuOTkgMCAwMDAgMzkuNWwyNTUuMyAzMjYuMWMzIDMuOSA3LjcgNi4xIDEyLjYgNi4xSDgzNmM2LjcgMCAxMC40LTcuNyA2LjMtMTIuOUw1NzYuOSA1MTJ6IiAvPjwvc3ZnPg==) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(DoubleLeftOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'DoubleLeftOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar DoubleRightOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M533.2 492.3L277.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H188c-6.7 0-10.4 7.7-6.3 12.9L447.1 512 181.7 851.1A7.98 7.98 0 00188 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5zm304 0L581.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H492c-6.7 0-10.4 7.7-6.3 12.9L751.1 512 485.7 851.1A7.98 7.98 0 00492 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5z\" } }] }, \"name\": \"double-right\", \"theme\": \"outlined\" };\nexport default DoubleRightOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport DoubleRightOutlinedSvg from \"@ant-design/icons-svg/es/asn/DoubleRightOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar DoubleRightOutlined = function DoubleRightOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: DoubleRightOutlinedSvg\n  }));\n};\n\n/**![double-right](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTUzMy4yIDQ5Mi4zTDI3Ny45IDE2Ni4xYy0zLTMuOS03LjctNi4xLTEyLjYtNi4xSDE4OGMtNi43IDAtMTAuNCA3LjctNi4zIDEyLjlMNDQ3LjEgNTEyIDE4MS43IDg1MS4xQTcuOTggNy45OCAwIDAwMTg4IDg2NGg3Ny4zYzQuOSAwIDkuNi0yLjMgMTIuNi02LjFsMjU1LjMtMzI2LjFjOS4xLTExLjcgOS4xLTI3LjkgMC0zOS41em0zMDQgMEw1ODEuOSAxNjYuMWMtMy0zLjktNy43LTYuMS0xMi42LTYuMUg0OTJjLTYuNyAwLTEwLjQgNy43LTYuMyAxMi45TDc1MS4xIDUxMiA0ODUuNyA4NTEuMUE3Ljk4IDcuOTggMCAwMDQ5MiA4NjRoNzcuM2M0LjkgMCA5LjYtMi4zIDEyLjYtNi4xbDI1NS4zLTMyNi4xYzkuMS0xMS43IDkuMS0yNy45IDAtMzkuNXoiIC8+PC9zdmc+) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(DoubleRightOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'DoubleRightOutlined';\n}\nexport default RefIcon;","var locale = {\n  // Options\n  items_per_page: '条/页',\n  jump_to: '跳至',\n  jump_to_confirm: '确定',\n  page: '页',\n  // Pagination\n  prev_page: '上一页',\n  next_page: '下一页',\n  prev_5: '向前 5 页',\n  next_5: '向后 5 页',\n  prev_3: '向前 3 页',\n  next_3: '向后 3 页',\n  page_size: '页码'\n};\nexport default locale;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport KEYCODE from \"rc-util/es/KeyCode\";\nimport React from 'react';\nvar defaultPageSizeOptions = [10, 20, 50, 100];\nvar Options = function Options(props) {\n  var _props$pageSizeOption = props.pageSizeOptions,\n    pageSizeOptions = _props$pageSizeOption === void 0 ? defaultPageSizeOptions : _props$pageSizeOption,\n    locale = props.locale,\n    changeSize = props.changeSize,\n    pageSize = props.pageSize,\n    goButton = props.goButton,\n    quickGo = props.quickGo,\n    rootPrefixCls = props.rootPrefixCls,\n    disabled = props.disabled,\n    buildOptionText = props.buildOptionText,\n    showSizeChanger = props.showSizeChanger,\n    sizeChangerRender = props.sizeChangerRender;\n  var _React$useState = React.useState(''),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    goInputText = _React$useState2[0],\n    setGoInputText = _React$useState2[1];\n  var getValidValue = function getValidValue() {\n    return !goInputText || Number.isNaN(goInputText) ? undefined : Number(goInputText);\n  };\n  var mergeBuildOptionText = typeof buildOptionText === 'function' ? buildOptionText : function (value) {\n    return \"\".concat(value, \" \").concat(locale.items_per_page);\n  };\n  var handleChange = function handleChange(e) {\n    setGoInputText(e.target.value);\n  };\n  var handleBlur = function handleBlur(e) {\n    if (goButton || goInputText === '') {\n      return;\n    }\n    setGoInputText('');\n    if (e.relatedTarget && (e.relatedTarget.className.indexOf(\"\".concat(rootPrefixCls, \"-item-link\")) >= 0 || e.relatedTarget.className.indexOf(\"\".concat(rootPrefixCls, \"-item\")) >= 0)) {\n      return;\n    }\n    quickGo === null || quickGo === void 0 || quickGo(getValidValue());\n  };\n  var go = function go(e) {\n    if (goInputText === '') {\n      return;\n    }\n    if (e.keyCode === KEYCODE.ENTER || e.type === 'click') {\n      setGoInputText('');\n      quickGo === null || quickGo === void 0 || quickGo(getValidValue());\n    }\n  };\n  var getPageSizeOptions = function getPageSizeOptions() {\n    if (pageSizeOptions.some(function (option) {\n      return option.toString() === pageSize.toString();\n    })) {\n      return pageSizeOptions;\n    }\n    return pageSizeOptions.concat([pageSize]).sort(function (a, b) {\n      var numberA = Number.isNaN(Number(a)) ? 0 : Number(a);\n      var numberB = Number.isNaN(Number(b)) ? 0 : Number(b);\n      return numberA - numberB;\n    });\n  };\n  // ============== cls ==============\n  var prefixCls = \"\".concat(rootPrefixCls, \"-options\");\n\n  // ============== render ==============\n\n  if (!showSizeChanger && !quickGo) {\n    return null;\n  }\n  var changeSelect = null;\n  var goInput = null;\n  var gotoButton = null;\n\n  // >>>>> Size Changer\n  if (showSizeChanger && sizeChangerRender) {\n    changeSelect = sizeChangerRender({\n      disabled: disabled,\n      size: pageSize,\n      onSizeChange: function onSizeChange(nextValue) {\n        changeSize === null || changeSize === void 0 || changeSize(Number(nextValue));\n      },\n      'aria-label': locale.page_size,\n      className: \"\".concat(prefixCls, \"-size-changer\"),\n      options: getPageSizeOptions().map(function (opt) {\n        return {\n          label: mergeBuildOptionText(opt),\n          value: opt\n        };\n      })\n    });\n  }\n\n  // >>>>> Quick Go\n  if (quickGo) {\n    if (goButton) {\n      gotoButton = typeof goButton === 'boolean' ? /*#__PURE__*/React.createElement(\"button\", {\n        type: \"button\",\n        onClick: go,\n        onKeyUp: go,\n        disabled: disabled,\n        className: \"\".concat(prefixCls, \"-quick-jumper-button\")\n      }, locale.jump_to_confirm) : /*#__PURE__*/React.createElement(\"span\", {\n        onClick: go,\n        onKeyUp: go\n      }, goButton);\n    }\n    goInput = /*#__PURE__*/React.createElement(\"div\", {\n      className: \"\".concat(prefixCls, \"-quick-jumper\")\n    }, locale.jump_to, /*#__PURE__*/React.createElement(\"input\", {\n      disabled: disabled,\n      type: \"text\",\n      value: goInputText,\n      onChange: handleChange,\n      onKeyUp: go,\n      onBlur: handleBlur,\n      \"aria-label\": locale.page\n    }), locale.page, gotoButton);\n  }\n  return /*#__PURE__*/React.createElement(\"li\", {\n    className: prefixCls\n  }, changeSelect, goInput);\n};\nif (process.env.NODE_ENV !== 'production') {\n  Options.displayName = 'Options';\n}\nexport default Options;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n/* eslint react/prop-types: 0 */\nimport classNames from 'classnames';\nimport React from 'react';\nvar Pager = function Pager(props) {\n  var rootPrefixCls = props.rootPrefixCls,\n    page = props.page,\n    active = props.active,\n    className = props.className,\n    showTitle = props.showTitle,\n    onClick = props.onClick,\n    onKeyPress = props.onKeyPress,\n    itemRender = props.itemRender;\n  var prefixCls = \"\".concat(rootPrefixCls, \"-item\");\n  var cls = classNames(prefixCls, \"\".concat(prefixCls, \"-\").concat(page), _defineProperty(_defineProperty({}, \"\".concat(prefixCls, \"-active\"), active), \"\".concat(prefixCls, \"-disabled\"), !page), className);\n  var handleClick = function handleClick() {\n    onClick(page);\n  };\n  var handleKeyPress = function handleKeyPress(e) {\n    onKeyPress(e, onClick, page);\n  };\n  var pager = itemRender(page, 'page', /*#__PURE__*/React.createElement(\"a\", {\n    rel: \"nofollow\"\n  }, page));\n  return pager ? /*#__PURE__*/React.createElement(\"li\", {\n    title: showTitle ? String(page) : null,\n    className: cls,\n    onClick: handleClick,\n    onKeyDown: handleKeyPress,\n    tabIndex: 0\n  }, pager) : null;\n};\nif (process.env.NODE_ENV !== 'production') {\n  Pager.displayName = 'Pager';\n}\nexport default Pager;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport classNames from 'classnames';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport warning from \"rc-util/es/warning\";\nimport React, { useEffect } from 'react';\nimport zhCN from \"./locale/zh_CN\";\nimport Options from \"./Options\";\nimport Pager from \"./Pager\";\nvar defaultItemRender = function defaultItemRender(page, type, element) {\n  return element;\n};\nfunction noop() {}\nfunction isInteger(v) {\n  var value = Number(v);\n  return typeof value === 'number' && !Number.isNaN(value) && isFinite(value) && Math.floor(value) === value;\n}\nfunction calculatePage(p, pageSize, total) {\n  var _pageSize = typeof p === 'undefined' ? pageSize : p;\n  return Math.floor((total - 1) / _pageSize) + 1;\n}\nvar Pagination = function Pagination(props) {\n  var _props$prefixCls = props.prefixCls,\n    prefixCls = _props$prefixCls === void 0 ? 'rc-pagination' : _props$prefixCls,\n    _props$selectPrefixCl = props.selectPrefixCls,\n    selectPrefixCls = _props$selectPrefixCl === void 0 ? 'rc-select' : _props$selectPrefixCl,\n    className = props.className,\n    currentProp = props.current,\n    _props$defaultCurrent = props.defaultCurrent,\n    defaultCurrent = _props$defaultCurrent === void 0 ? 1 : _props$defaultCurrent,\n    _props$total = props.total,\n    total = _props$total === void 0 ? 0 : _props$total,\n    pageSizeProp = props.pageSize,\n    _props$defaultPageSiz = props.defaultPageSize,\n    defaultPageSize = _props$defaultPageSiz === void 0 ? 10 : _props$defaultPageSiz,\n    _props$onChange = props.onChange,\n    onChange = _props$onChange === void 0 ? noop : _props$onChange,\n    hideOnSinglePage = props.hideOnSinglePage,\n    align = props.align,\n    _props$showPrevNextJu = props.showPrevNextJumpers,\n    showPrevNextJumpers = _props$showPrevNextJu === void 0 ? true : _props$showPrevNextJu,\n    showQuickJumper = props.showQuickJumper,\n    showLessItems = props.showLessItems,\n    _props$showTitle = props.showTitle,\n    showTitle = _props$showTitle === void 0 ? true : _props$showTitle,\n    _props$onShowSizeChan = props.onShowSizeChange,\n    onShowSizeChange = _props$onShowSizeChan === void 0 ? noop : _props$onShowSizeChan,\n    _props$locale = props.locale,\n    locale = _props$locale === void 0 ? zhCN : _props$locale,\n    style = props.style,\n    _props$totalBoundaryS = props.totalBoundaryShowSizeChanger,\n    totalBoundaryShowSizeChanger = _props$totalBoundaryS === void 0 ? 50 : _props$totalBoundaryS,\n    disabled = props.disabled,\n    simple = props.simple,\n    showTotal = props.showTotal,\n    _props$showSizeChange = props.showSizeChanger,\n    showSizeChanger = _props$showSizeChange === void 0 ? total > totalBoundaryShowSizeChanger : _props$showSizeChange,\n    sizeChangerRender = props.sizeChangerRender,\n    pageSizeOptions = props.pageSizeOptions,\n    _props$itemRender = props.itemRender,\n    itemRender = _props$itemRender === void 0 ? defaultItemRender : _props$itemRender,\n    jumpPrevIcon = props.jumpPrevIcon,\n    jumpNextIcon = props.jumpNextIcon,\n    prevIcon = props.prevIcon,\n    nextIcon = props.nextIcon;\n  var paginationRef = React.useRef(null);\n  var _useMergedState = useMergedState(10, {\n      value: pageSizeProp,\n      defaultValue: defaultPageSize\n    }),\n    _useMergedState2 = _slicedToArray(_useMergedState, 2),\n    pageSize = _useMergedState2[0],\n    setPageSize = _useMergedState2[1];\n  var _useMergedState3 = useMergedState(1, {\n      value: currentProp,\n      defaultValue: defaultCurrent,\n      postState: function postState(c) {\n        return Math.max(1, Math.min(c, calculatePage(undefined, pageSize, total)));\n      }\n    }),\n    _useMergedState4 = _slicedToArray(_useMergedState3, 2),\n    current = _useMergedState4[0],\n    setCurrent = _useMergedState4[1];\n  var _React$useState = React.useState(current),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    internalInputVal = _React$useState2[0],\n    setInternalInputVal = _React$useState2[1];\n  useEffect(function () {\n    setInternalInputVal(current);\n  }, [current]);\n  var hasOnChange = onChange !== noop;\n  var hasCurrent = ('current' in props);\n  if (process.env.NODE_ENV !== 'production') {\n    warning(hasCurrent ? hasOnChange : true, 'You provided a `current` prop to a Pagination component without an `onChange` handler. This will render a read-only component.');\n  }\n  var jumpPrevPage = Math.max(1, current - (showLessItems ? 3 : 5));\n  var jumpNextPage = Math.min(calculatePage(undefined, pageSize, total), current + (showLessItems ? 3 : 5));\n  function getItemIcon(icon, label) {\n    var iconNode = icon || /*#__PURE__*/React.createElement(\"button\", {\n      type: \"button\",\n      \"aria-label\": label,\n      className: \"\".concat(prefixCls, \"-item-link\")\n    });\n    if (typeof icon === 'function') {\n      iconNode = /*#__PURE__*/React.createElement(icon, _objectSpread({}, props));\n    }\n    return iconNode;\n  }\n  function getValidValue(e) {\n    var inputValue = e.target.value;\n    var allPages = calculatePage(undefined, pageSize, total);\n    var value;\n    if (inputValue === '') {\n      value = inputValue;\n    } else if (Number.isNaN(Number(inputValue))) {\n      value = internalInputVal;\n    } else if (inputValue >= allPages) {\n      value = allPages;\n    } else {\n      value = Number(inputValue);\n    }\n    return value;\n  }\n  function isValid(page) {\n    return isInteger(page) && page !== current && isInteger(total) && total > 0;\n  }\n  var shouldDisplayQuickJumper = total > pageSize ? showQuickJumper : false;\n\n  /**\n   * prevent \"up arrow\" key reseting cursor position within textbox\n   * @see https://stackoverflow.com/a/1081114\n   */\n  function handleKeyDown(event) {\n    if (event.keyCode === KeyCode.UP || event.keyCode === KeyCode.DOWN) {\n      event.preventDefault();\n    }\n  }\n  function handleKeyUp(event) {\n    var value = getValidValue(event);\n    if (value !== internalInputVal) {\n      setInternalInputVal(value);\n    }\n    switch (event.keyCode) {\n      case KeyCode.ENTER:\n        handleChange(value);\n        break;\n      case KeyCode.UP:\n        handleChange(value - 1);\n        break;\n      case KeyCode.DOWN:\n        handleChange(value + 1);\n        break;\n      default:\n        break;\n    }\n  }\n  function handleBlur(event) {\n    handleChange(getValidValue(event));\n  }\n  function changePageSize(size) {\n    var newCurrent = calculatePage(size, pageSize, total);\n    var nextCurrent = current > newCurrent && newCurrent !== 0 ? newCurrent : current;\n    setPageSize(size);\n    setInternalInputVal(nextCurrent);\n    onShowSizeChange === null || onShowSizeChange === void 0 || onShowSizeChange(current, size);\n    setCurrent(nextCurrent);\n    onChange === null || onChange === void 0 || onChange(nextCurrent, size);\n  }\n  function handleChange(page) {\n    if (isValid(page) && !disabled) {\n      var currentPage = calculatePage(undefined, pageSize, total);\n      var newPage = page;\n      if (page > currentPage) {\n        newPage = currentPage;\n      } else if (page < 1) {\n        newPage = 1;\n      }\n      if (newPage !== internalInputVal) {\n        setInternalInputVal(newPage);\n      }\n      setCurrent(newPage);\n      onChange === null || onChange === void 0 || onChange(newPage, pageSize);\n      return newPage;\n    }\n    return current;\n  }\n  var hasPrev = current > 1;\n  var hasNext = current < calculatePage(undefined, pageSize, total);\n  function prevHandle() {\n    if (hasPrev) handleChange(current - 1);\n  }\n  function nextHandle() {\n    if (hasNext) handleChange(current + 1);\n  }\n  function jumpPrevHandle() {\n    handleChange(jumpPrevPage);\n  }\n  function jumpNextHandle() {\n    handleChange(jumpNextPage);\n  }\n  function runIfEnter(event, callback) {\n    if (event.key === 'Enter' || event.charCode === KeyCode.ENTER || event.keyCode === KeyCode.ENTER) {\n      for (var _len = arguments.length, restParams = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n        restParams[_key - 2] = arguments[_key];\n      }\n      callback.apply(void 0, restParams);\n    }\n  }\n  function runIfEnterPrev(event) {\n    runIfEnter(event, prevHandle);\n  }\n  function runIfEnterNext(event) {\n    runIfEnter(event, nextHandle);\n  }\n  function runIfEnterJumpPrev(event) {\n    runIfEnter(event, jumpPrevHandle);\n  }\n  function runIfEnterJumpNext(event) {\n    runIfEnter(event, jumpNextHandle);\n  }\n  function renderPrev(prevPage) {\n    var prevButton = itemRender(prevPage, 'prev', getItemIcon(prevIcon, 'prev page'));\n    return /*#__PURE__*/React.isValidElement(prevButton) ? /*#__PURE__*/React.cloneElement(prevButton, {\n      disabled: !hasPrev\n    }) : prevButton;\n  }\n  function renderNext(nextPage) {\n    var nextButton = itemRender(nextPage, 'next', getItemIcon(nextIcon, 'next page'));\n    return /*#__PURE__*/React.isValidElement(nextButton) ? /*#__PURE__*/React.cloneElement(nextButton, {\n      disabled: !hasNext\n    }) : nextButton;\n  }\n  function handleGoTO(event) {\n    if (event.type === 'click' || event.keyCode === KeyCode.ENTER) {\n      handleChange(internalInputVal);\n    }\n  }\n  var jumpPrev = null;\n  var dataOrAriaAttributeProps = pickAttrs(props, {\n    aria: true,\n    data: true\n  });\n  var totalText = showTotal && /*#__PURE__*/React.createElement(\"li\", {\n    className: \"\".concat(prefixCls, \"-total-text\")\n  }, showTotal(total, [total === 0 ? 0 : (current - 1) * pageSize + 1, current * pageSize > total ? total : current * pageSize]));\n  var jumpNext = null;\n  var allPages = calculatePage(undefined, pageSize, total);\n\n  // ================== Render ==================\n  // When hideOnSinglePage is true and there is only 1 page, hide the pager\n  if (hideOnSinglePage && total <= pageSize) {\n    return null;\n  }\n  var pagerList = [];\n  var pagerProps = {\n    rootPrefixCls: prefixCls,\n    onClick: handleChange,\n    onKeyPress: runIfEnter,\n    showTitle: showTitle,\n    itemRender: itemRender,\n    page: -1\n  };\n  var prevPage = current - 1 > 0 ? current - 1 : 0;\n  var nextPage = current + 1 < allPages ? current + 1 : allPages;\n  var goButton = showQuickJumper && showQuickJumper.goButton;\n\n  // ================== Simple ==================\n  // FIXME: ts type\n  var isReadOnly = _typeof(simple) === 'object' ? simple.readOnly : !simple;\n  var gotoButton = goButton;\n  var simplePager = null;\n  if (simple) {\n    // ====== Simple quick jump ======\n    if (goButton) {\n      if (typeof goButton === 'boolean') {\n        gotoButton = /*#__PURE__*/React.createElement(\"button\", {\n          type: \"button\",\n          onClick: handleGoTO,\n          onKeyUp: handleGoTO\n        }, locale.jump_to_confirm);\n      } else {\n        gotoButton = /*#__PURE__*/React.createElement(\"span\", {\n          onClick: handleGoTO,\n          onKeyUp: handleGoTO\n        }, goButton);\n      }\n      gotoButton = /*#__PURE__*/React.createElement(\"li\", {\n        title: showTitle ? \"\".concat(locale.jump_to).concat(current, \"/\").concat(allPages) : null,\n        className: \"\".concat(prefixCls, \"-simple-pager\")\n      }, gotoButton);\n    }\n    simplePager = /*#__PURE__*/React.createElement(\"li\", {\n      title: showTitle ? \"\".concat(current, \"/\").concat(allPages) : null,\n      className: \"\".concat(prefixCls, \"-simple-pager\")\n    }, isReadOnly ? internalInputVal : /*#__PURE__*/React.createElement(\"input\", {\n      type: \"text\",\n      \"aria-label\": locale.jump_to,\n      value: internalInputVal,\n      disabled: disabled,\n      onKeyDown: handleKeyDown,\n      onKeyUp: handleKeyUp,\n      onChange: handleKeyUp,\n      onBlur: handleBlur,\n      size: 3\n    }), /*#__PURE__*/React.createElement(\"span\", {\n      className: \"\".concat(prefixCls, \"-slash\")\n    }, \"/\"), allPages);\n  }\n\n  // ====================== Normal ======================\n  var pageBufferSize = showLessItems ? 1 : 2;\n  if (allPages <= 3 + pageBufferSize * 2) {\n    if (!allPages) {\n      pagerList.push( /*#__PURE__*/React.createElement(Pager, _extends({}, pagerProps, {\n        key: \"noPager\",\n        page: 1,\n        className: \"\".concat(prefixCls, \"-item-disabled\")\n      })));\n    }\n    for (var i = 1; i <= allPages; i += 1) {\n      pagerList.push( /*#__PURE__*/React.createElement(Pager, _extends({}, pagerProps, {\n        key: i,\n        page: i,\n        active: current === i\n      })));\n    }\n  } else {\n    var prevItemTitle = showLessItems ? locale.prev_3 : locale.prev_5;\n    var nextItemTitle = showLessItems ? locale.next_3 : locale.next_5;\n    var jumpPrevContent = itemRender(jumpPrevPage, 'jump-prev', getItemIcon(jumpPrevIcon, 'prev page'));\n    var jumpNextContent = itemRender(jumpNextPage, 'jump-next', getItemIcon(jumpNextIcon, 'next page'));\n    if (showPrevNextJumpers) {\n      jumpPrev = jumpPrevContent ? /*#__PURE__*/React.createElement(\"li\", {\n        title: showTitle ? prevItemTitle : null,\n        key: \"prev\",\n        onClick: jumpPrevHandle,\n        tabIndex: 0,\n        onKeyDown: runIfEnterJumpPrev,\n        className: classNames(\"\".concat(prefixCls, \"-jump-prev\"), _defineProperty({}, \"\".concat(prefixCls, \"-jump-prev-custom-icon\"), !!jumpPrevIcon))\n      }, jumpPrevContent) : null;\n      jumpNext = jumpNextContent ? /*#__PURE__*/React.createElement(\"li\", {\n        title: showTitle ? nextItemTitle : null,\n        key: \"next\",\n        onClick: jumpNextHandle,\n        tabIndex: 0,\n        onKeyDown: runIfEnterJumpNext,\n        className: classNames(\"\".concat(prefixCls, \"-jump-next\"), _defineProperty({}, \"\".concat(prefixCls, \"-jump-next-custom-icon\"), !!jumpNextIcon))\n      }, jumpNextContent) : null;\n    }\n    var left = Math.max(1, current - pageBufferSize);\n    var right = Math.min(current + pageBufferSize, allPages);\n    if (current - 1 <= pageBufferSize) {\n      right = 1 + pageBufferSize * 2;\n    }\n    if (allPages - current <= pageBufferSize) {\n      left = allPages - pageBufferSize * 2;\n    }\n    for (var _i = left; _i <= right; _i += 1) {\n      pagerList.push( /*#__PURE__*/React.createElement(Pager, _extends({}, pagerProps, {\n        key: _i,\n        page: _i,\n        active: current === _i\n      })));\n    }\n    if (current - 1 >= pageBufferSize * 2 && current !== 1 + 2) {\n      pagerList[0] = /*#__PURE__*/React.cloneElement(pagerList[0], {\n        className: classNames(\"\".concat(prefixCls, \"-item-after-jump-prev\"), pagerList[0].props.className)\n      });\n      pagerList.unshift(jumpPrev);\n    }\n    if (allPages - current >= pageBufferSize * 2 && current !== allPages - 2) {\n      var lastOne = pagerList[pagerList.length - 1];\n      pagerList[pagerList.length - 1] = /*#__PURE__*/React.cloneElement(lastOne, {\n        className: classNames(\"\".concat(prefixCls, \"-item-before-jump-next\"), lastOne.props.className)\n      });\n      pagerList.push(jumpNext);\n    }\n    if (left !== 1) {\n      pagerList.unshift( /*#__PURE__*/React.createElement(Pager, _extends({}, pagerProps, {\n        key: 1,\n        page: 1\n      })));\n    }\n    if (right !== allPages) {\n      pagerList.push( /*#__PURE__*/React.createElement(Pager, _extends({}, pagerProps, {\n        key: allPages,\n        page: allPages\n      })));\n    }\n  }\n  var prev = renderPrev(prevPage);\n  if (prev) {\n    var prevDisabled = !hasPrev || !allPages;\n    prev = /*#__PURE__*/React.createElement(\"li\", {\n      title: showTitle ? locale.prev_page : null,\n      onClick: prevHandle,\n      tabIndex: prevDisabled ? null : 0,\n      onKeyDown: runIfEnterPrev,\n      className: classNames(\"\".concat(prefixCls, \"-prev\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), prevDisabled)),\n      \"aria-disabled\": prevDisabled\n    }, prev);\n  }\n  var next = renderNext(nextPage);\n  if (next) {\n    var nextDisabled, nextTabIndex;\n    if (simple) {\n      nextDisabled = !hasNext;\n      nextTabIndex = hasPrev ? 0 : null;\n    } else {\n      nextDisabled = !hasNext || !allPages;\n      nextTabIndex = nextDisabled ? null : 0;\n    }\n    next = /*#__PURE__*/React.createElement(\"li\", {\n      title: showTitle ? locale.next_page : null,\n      onClick: nextHandle,\n      tabIndex: nextTabIndex,\n      onKeyDown: runIfEnterNext,\n      className: classNames(\"\".concat(prefixCls, \"-next\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), nextDisabled)),\n      \"aria-disabled\": nextDisabled\n    }, next);\n  }\n  var cls = classNames(prefixCls, className, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, \"\".concat(prefixCls, \"-start\"), align === 'start'), \"\".concat(prefixCls, \"-center\"), align === 'center'), \"\".concat(prefixCls, \"-end\"), align === 'end'), \"\".concat(prefixCls, \"-simple\"), simple), \"\".concat(prefixCls, \"-disabled\"), disabled));\n  return /*#__PURE__*/React.createElement(\"ul\", _extends({\n    className: cls,\n    style: style,\n    ref: paginationRef\n  }, dataOrAriaAttributeProps), totalText, prev, simple ? simplePager : pagerList, next, /*#__PURE__*/React.createElement(Options, {\n    locale: locale,\n    rootPrefixCls: prefixCls,\n    disabled: disabled,\n    selectPrefixCls: selectPrefixCls,\n    changeSize: changePageSize,\n    pageSize: pageSize,\n    pageSizeOptions: pageSizeOptions,\n    quickGo: shouldDisplayQuickJumper ? handleChange : null,\n    goButton: gotoButton,\n    showSizeChanger: showSizeChanger,\n    sizeChangerRender: sizeChangerRender\n  }));\n};\nif (process.env.NODE_ENV !== 'production') {\n  Pagination.displayName = 'Pagination';\n}\nexport default Pagination;","import { unit } from '@ant-design/cssinjs';\nimport { genBasicInputStyle, genInputSmallStyle, initComponentToken, initInputToken } from '../../input/style';\nimport { genBaseOutlinedStyle, genDisabledStyle } from '../../input/style/variants';\nimport { genFocusOutline, genFocusStyle, resetComponent } from '../../style';\nimport { genStyleHooks, mergeToken } from '../../theme/internal';\nconst genPaginationDisabledStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    [`${componentCls}-disabled`]: {\n      '&, &:hover': {\n        cursor: 'not-allowed',\n        [`${componentCls}-item-link`]: {\n          color: token.colorTextDisabled,\n          cursor: 'not-allowed'\n        }\n      },\n      '&:focus-visible': {\n        cursor: 'not-allowed',\n        [`${componentCls}-item-link`]: {\n          color: token.colorTextDisabled,\n          cursor: 'not-allowed'\n        }\n      }\n    },\n    [`&${componentCls}-disabled`]: {\n      cursor: 'not-allowed',\n      [`${componentCls}-item`]: {\n        cursor: 'not-allowed',\n        backgroundColor: 'transparent',\n        '&:hover, &:active': {\n          backgroundColor: 'transparent'\n        },\n        a: {\n          color: token.colorTextDisabled,\n          backgroundColor: 'transparent',\n          border: 'none',\n          cursor: 'not-allowed'\n        },\n        '&-active': {\n          borderColor: token.colorBorder,\n          backgroundColor: token.itemActiveBgDisabled,\n          '&:hover, &:active': {\n            backgroundColor: token.itemActiveBgDisabled\n          },\n          a: {\n            color: token.itemActiveColorDisabled\n          }\n        }\n      },\n      [`${componentCls}-item-link`]: {\n        color: token.colorTextDisabled,\n        cursor: 'not-allowed',\n        '&:hover, &:active': {\n          backgroundColor: 'transparent'\n        },\n        [`${componentCls}-simple&`]: {\n          backgroundColor: 'transparent',\n          '&:hover, &:active': {\n            backgroundColor: 'transparent'\n          }\n        }\n      },\n      [`${componentCls}-simple-pager`]: {\n        color: token.colorTextDisabled\n      },\n      [`${componentCls}-jump-prev, ${componentCls}-jump-next`]: {\n        [`${componentCls}-item-link-icon`]: {\n          opacity: 0\n        },\n        [`${componentCls}-item-ellipsis`]: {\n          opacity: 1\n        }\n      }\n    },\n    [`&${componentCls}-simple`]: {\n      [`${componentCls}-prev, ${componentCls}-next`]: {\n        [`&${componentCls}-disabled ${componentCls}-item-link`]: {\n          '&:hover, &:active': {\n            backgroundColor: 'transparent'\n          }\n        }\n      }\n    }\n  };\n};\nconst genPaginationMiniStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    [`&${componentCls}-mini ${componentCls}-total-text, &${componentCls}-mini ${componentCls}-simple-pager`]: {\n      height: token.itemSizeSM,\n      lineHeight: unit(token.itemSizeSM)\n    },\n    [`&${componentCls}-mini ${componentCls}-item`]: {\n      minWidth: token.itemSizeSM,\n      height: token.itemSizeSM,\n      margin: 0,\n      lineHeight: unit(token.calc(token.itemSizeSM).sub(2).equal())\n    },\n    [`&${componentCls}-mini ${componentCls}-prev, &${componentCls}-mini ${componentCls}-next`]: {\n      minWidth: token.itemSizeSM,\n      height: token.itemSizeSM,\n      margin: 0,\n      lineHeight: unit(token.itemSizeSM)\n    },\n    [`&${componentCls}-mini:not(${componentCls}-disabled)`]: {\n      [`${componentCls}-prev, ${componentCls}-next`]: {\n        [`&:hover ${componentCls}-item-link`]: {\n          backgroundColor: token.colorBgTextHover\n        },\n        [`&:active ${componentCls}-item-link`]: {\n          backgroundColor: token.colorBgTextActive\n        },\n        [`&${componentCls}-disabled:hover ${componentCls}-item-link`]: {\n          backgroundColor: 'transparent'\n        }\n      }\n    },\n    [`\n    &${componentCls}-mini ${componentCls}-prev ${componentCls}-item-link,\n    &${componentCls}-mini ${componentCls}-next ${componentCls}-item-link\n    `]: {\n      backgroundColor: 'transparent',\n      borderColor: 'transparent',\n      '&::after': {\n        height: token.itemSizeSM,\n        lineHeight: unit(token.itemSizeSM)\n      }\n    },\n    [`&${componentCls}-mini ${componentCls}-jump-prev, &${componentCls}-mini ${componentCls}-jump-next`]: {\n      height: token.itemSizeSM,\n      marginInlineEnd: 0,\n      lineHeight: unit(token.itemSizeSM)\n    },\n    [`&${componentCls}-mini ${componentCls}-options`]: {\n      marginInlineStart: token.paginationMiniOptionsMarginInlineStart,\n      '&-size-changer': {\n        top: token.miniOptionsSizeChangerTop\n      },\n      '&-quick-jumper': {\n        height: token.itemSizeSM,\n        lineHeight: unit(token.itemSizeSM),\n        input: Object.assign(Object.assign({}, genInputSmallStyle(token)), {\n          width: token.paginationMiniQuickJumperInputWidth,\n          height: token.controlHeightSM\n        })\n      }\n    }\n  };\n};\nconst genPaginationSimpleStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    [`\n    &${componentCls}-simple ${componentCls}-prev,\n    &${componentCls}-simple ${componentCls}-next\n    `]: {\n      height: token.itemSizeSM,\n      lineHeight: unit(token.itemSizeSM),\n      verticalAlign: 'top',\n      [`${componentCls}-item-link`]: {\n        height: token.itemSizeSM,\n        backgroundColor: 'transparent',\n        border: 0,\n        '&:hover': {\n          backgroundColor: token.colorBgTextHover\n        },\n        '&:active': {\n          backgroundColor: token.colorBgTextActive\n        },\n        '&::after': {\n          height: token.itemSizeSM,\n          lineHeight: unit(token.itemSizeSM)\n        }\n      }\n    },\n    [`&${componentCls}-simple ${componentCls}-simple-pager`]: {\n      display: 'inline-block',\n      height: token.itemSizeSM,\n      marginInlineEnd: token.marginXS,\n      input: {\n        boxSizing: 'border-box',\n        height: '100%',\n        padding: `0 ${unit(token.paginationItemPaddingInline)}`,\n        textAlign: 'center',\n        backgroundColor: token.itemInputBg,\n        border: `${unit(token.lineWidth)} ${token.lineType} ${token.colorBorder}`,\n        borderRadius: token.borderRadius,\n        outline: 'none',\n        transition: `border-color ${token.motionDurationMid}`,\n        color: 'inherit',\n        '&:hover': {\n          borderColor: token.colorPrimary\n        },\n        '&:focus': {\n          borderColor: token.colorPrimaryHover,\n          boxShadow: `${unit(token.inputOutlineOffset)} 0 ${unit(token.controlOutlineWidth)} ${token.controlOutline}`\n        },\n        '&[disabled]': {\n          color: token.colorTextDisabled,\n          backgroundColor: token.colorBgContainerDisabled,\n          borderColor: token.colorBorder,\n          cursor: 'not-allowed'\n        }\n      }\n    }\n  };\n};\nconst genPaginationJumpStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    [`${componentCls}-jump-prev, ${componentCls}-jump-next`]: {\n      outline: 0,\n      [`${componentCls}-item-container`]: {\n        position: 'relative',\n        [`${componentCls}-item-link-icon`]: {\n          color: token.colorPrimary,\n          fontSize: token.fontSizeSM,\n          opacity: 0,\n          transition: `all ${token.motionDurationMid}`,\n          '&-svg': {\n            top: 0,\n            insetInlineEnd: 0,\n            bottom: 0,\n            insetInlineStart: 0,\n            margin: 'auto'\n          }\n        },\n        [`${componentCls}-item-ellipsis`]: {\n          position: 'absolute',\n          top: 0,\n          insetInlineEnd: 0,\n          bottom: 0,\n          insetInlineStart: 0,\n          display: 'block',\n          margin: 'auto',\n          color: token.colorTextDisabled,\n          letterSpacing: token.paginationEllipsisLetterSpacing,\n          textAlign: 'center',\n          textIndent: token.paginationEllipsisTextIndent,\n          opacity: 1,\n          transition: `all ${token.motionDurationMid}`\n        }\n      },\n      '&:hover': {\n        [`${componentCls}-item-link-icon`]: {\n          opacity: 1\n        },\n        [`${componentCls}-item-ellipsis`]: {\n          opacity: 0\n        }\n      }\n    },\n    [`\n    ${componentCls}-prev,\n    ${componentCls}-jump-prev,\n    ${componentCls}-jump-next\n    `]: {\n      marginInlineEnd: token.marginXS\n    },\n    [`\n    ${componentCls}-prev,\n    ${componentCls}-next,\n    ${componentCls}-jump-prev,\n    ${componentCls}-jump-next\n    `]: {\n      display: 'inline-block',\n      minWidth: token.itemSize,\n      height: token.itemSize,\n      color: token.colorText,\n      fontFamily: token.fontFamily,\n      lineHeight: unit(token.itemSize),\n      textAlign: 'center',\n      verticalAlign: 'middle',\n      listStyle: 'none',\n      borderRadius: token.borderRadius,\n      cursor: 'pointer',\n      transition: `all ${token.motionDurationMid}`\n    },\n    [`${componentCls}-prev, ${componentCls}-next`]: {\n      outline: 0,\n      button: {\n        color: token.colorText,\n        cursor: 'pointer',\n        userSelect: 'none'\n      },\n      [`${componentCls}-item-link`]: {\n        display: 'block',\n        width: '100%',\n        height: '100%',\n        padding: 0,\n        fontSize: token.fontSizeSM,\n        textAlign: 'center',\n        backgroundColor: 'transparent',\n        border: `${unit(token.lineWidth)} ${token.lineType} transparent`,\n        borderRadius: token.borderRadius,\n        outline: 'none',\n        transition: `all ${token.motionDurationMid}`\n      },\n      [`&:hover ${componentCls}-item-link`]: {\n        backgroundColor: token.colorBgTextHover\n      },\n      [`&:active ${componentCls}-item-link`]: {\n        backgroundColor: token.colorBgTextActive\n      },\n      [`&${componentCls}-disabled:hover`]: {\n        [`${componentCls}-item-link`]: {\n          backgroundColor: 'transparent'\n        }\n      }\n    },\n    [`${componentCls}-slash`]: {\n      marginInlineEnd: token.paginationSlashMarginInlineEnd,\n      marginInlineStart: token.paginationSlashMarginInlineStart\n    },\n    [`${componentCls}-options`]: {\n      display: 'inline-block',\n      marginInlineStart: token.margin,\n      verticalAlign: 'middle',\n      '&-size-changer': {\n        display: 'inline-block',\n        width: 'auto'\n      },\n      '&-quick-jumper': {\n        display: 'inline-block',\n        height: token.controlHeight,\n        marginInlineStart: token.marginXS,\n        lineHeight: unit(token.controlHeight),\n        verticalAlign: 'top',\n        input: Object.assign(Object.assign(Object.assign({}, genBasicInputStyle(token)), genBaseOutlinedStyle(token, {\n          borderColor: token.colorBorder,\n          hoverBorderColor: token.colorPrimaryHover,\n          activeBorderColor: token.colorPrimary,\n          activeShadow: token.activeShadow\n        })), {\n          '&[disabled]': Object.assign({}, genDisabledStyle(token)),\n          width: token.calc(token.controlHeightLG).mul(1.25).equal(),\n          height: token.controlHeight,\n          boxSizing: 'border-box',\n          margin: 0,\n          marginInlineStart: token.marginXS,\n          marginInlineEnd: token.marginXS\n        })\n      }\n    }\n  };\n};\nconst genPaginationItemStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    [`${componentCls}-item`]: {\n      display: 'inline-block',\n      minWidth: token.itemSize,\n      height: token.itemSize,\n      marginInlineEnd: token.marginXS,\n      fontFamily: token.fontFamily,\n      lineHeight: unit(token.calc(token.itemSize).sub(2).equal()),\n      textAlign: 'center',\n      verticalAlign: 'middle',\n      listStyle: 'none',\n      backgroundColor: token.itemBg,\n      border: `${unit(token.lineWidth)} ${token.lineType} transparent`,\n      borderRadius: token.borderRadius,\n      outline: 0,\n      cursor: 'pointer',\n      userSelect: 'none',\n      a: {\n        display: 'block',\n        padding: `0 ${unit(token.paginationItemPaddingInline)}`,\n        color: token.colorText,\n        '&:hover': {\n          textDecoration: 'none'\n        }\n      },\n      [`&:not(${componentCls}-item-active)`]: {\n        '&:hover': {\n          transition: `all ${token.motionDurationMid}`,\n          backgroundColor: token.colorBgTextHover\n        },\n        '&:active': {\n          backgroundColor: token.colorBgTextActive\n        }\n      },\n      '&-active': {\n        fontWeight: token.fontWeightStrong,\n        backgroundColor: token.itemActiveBg,\n        borderColor: token.colorPrimary,\n        a: {\n          color: token.colorPrimary\n        },\n        '&:hover': {\n          borderColor: token.colorPrimaryHover\n        },\n        '&:hover a': {\n          color: token.colorPrimaryHover\n        }\n      }\n    }\n  };\n};\nconst genPaginationStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    [componentCls]: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, resetComponent(token)), {\n      display: 'flex',\n      '&-start': {\n        justifyContent: 'start'\n      },\n      '&-center': {\n        justifyContent: 'center'\n      },\n      '&-end': {\n        justifyContent: 'end'\n      },\n      'ul, ol': {\n        margin: 0,\n        padding: 0,\n        listStyle: 'none'\n      },\n      '&::after': {\n        display: 'block',\n        clear: 'both',\n        height: 0,\n        overflow: 'hidden',\n        visibility: 'hidden',\n        content: '\"\"'\n      },\n      [`${componentCls}-total-text`]: {\n        display: 'inline-block',\n        height: token.itemSize,\n        marginInlineEnd: token.marginXS,\n        lineHeight: unit(token.calc(token.itemSize).sub(2).equal()),\n        verticalAlign: 'middle'\n      }\n    }), genPaginationItemStyle(token)), genPaginationJumpStyle(token)), genPaginationSimpleStyle(token)), genPaginationMiniStyle(token)), genPaginationDisabledStyle(token)), {\n      // media query style\n      [`@media only screen and (max-width: ${token.screenLG}px)`]: {\n        [`${componentCls}-item`]: {\n          '&-after-jump-prev, &-before-jump-next': {\n            display: 'none'\n          }\n        }\n      },\n      [`@media only screen and (max-width: ${token.screenSM}px)`]: {\n        [`${componentCls}-options`]: {\n          display: 'none'\n        }\n      }\n    }),\n    // rtl style\n    [`&${token.componentCls}-rtl`]: {\n      direction: 'rtl'\n    }\n  };\n};\nconst genPaginationFocusStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    [`${componentCls}:not(${componentCls}-disabled)`]: {\n      [`${componentCls}-item`]: Object.assign({}, genFocusStyle(token)),\n      [`${componentCls}-jump-prev, ${componentCls}-jump-next`]: {\n        '&:focus-visible': Object.assign({\n          [`${componentCls}-item-link-icon`]: {\n            opacity: 1\n          },\n          [`${componentCls}-item-ellipsis`]: {\n            opacity: 0\n          }\n        }, genFocusOutline(token))\n      },\n      [`${componentCls}-prev, ${componentCls}-next`]: {\n        [`&:focus-visible ${componentCls}-item-link`]: Object.assign({}, genFocusOutline(token))\n      }\n    }\n  };\n};\nexport const prepareComponentToken = token => Object.assign({\n  itemBg: token.colorBgContainer,\n  itemSize: token.controlHeight,\n  itemSizeSM: token.controlHeightSM,\n  itemActiveBg: token.colorBgContainer,\n  itemLinkBg: token.colorBgContainer,\n  itemActiveColorDisabled: token.colorTextDisabled,\n  itemActiveBgDisabled: token.controlItemBgActiveDisabled,\n  itemInputBg: token.colorBgContainer,\n  miniOptionsSizeChangerTop: 0\n}, initComponentToken(token));\nexport const prepareToken = token => mergeToken(token, {\n  inputOutlineOffset: 0,\n  paginationMiniOptionsMarginInlineStart: token.calc(token.marginXXS).div(2).equal(),\n  paginationMiniQuickJumperInputWidth: token.calc(token.controlHeightLG).mul(1.1).equal(),\n  paginationItemPaddingInline: token.calc(token.marginXXS).mul(1.5).equal(),\n  paginationEllipsisLetterSpacing: token.calc(token.marginXXS).div(2).equal(),\n  paginationSlashMarginInlineStart: token.marginSM,\n  paginationSlashMarginInlineEnd: token.marginSM,\n  paginationEllipsisTextIndent: '0.13em' // magic for ui experience\n}, initInputToken(token));\n// ============================== Export ==============================\nexport default genStyleHooks('Pagination', token => {\n  const paginationToken = prepareToken(token);\n  return [genPaginationStyle(paginationToken), genPaginationFocusStyle(paginationToken)];\n}, prepareComponentToken);","import { unit } from '@ant-design/cssinjs';\nimport { prepareComponentToken, prepareToken } from '.';\nimport { genSubStyleComponent } from '../../theme/internal';\nconst genBorderedStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    [`${componentCls}${componentCls}-bordered${componentCls}-disabled:not(${componentCls}-mini)`]: {\n      '&, &:hover': {\n        [`${componentCls}-item-link`]: {\n          borderColor: token.colorBorder\n        }\n      },\n      '&:focus-visible': {\n        [`${componentCls}-item-link`]: {\n          borderColor: token.colorBorder\n        }\n      },\n      [`${componentCls}-item, ${componentCls}-item-link`]: {\n        backgroundColor: token.colorBgContainerDisabled,\n        borderColor: token.colorBorder,\n        [`&:hover:not(${componentCls}-item-active)`]: {\n          backgroundColor: token.colorBgContainerDisabled,\n          borderColor: token.colorBorder,\n          a: {\n            color: token.colorTextDisabled\n          }\n        },\n        [`&${componentCls}-item-active`]: {\n          backgroundColor: token.itemActiveBgDisabled\n        }\n      },\n      [`${componentCls}-prev, ${componentCls}-next`]: {\n        '&:hover button': {\n          backgroundColor: token.colorBgContainerDisabled,\n          borderColor: token.colorBorder,\n          color: token.colorTextDisabled\n        },\n        [`${componentCls}-item-link`]: {\n          backgroundColor: token.colorBgContainerDisabled,\n          borderColor: token.colorBorder\n        }\n      }\n    },\n    [`${componentCls}${componentCls}-bordered:not(${componentCls}-mini)`]: {\n      [`${componentCls}-prev, ${componentCls}-next`]: {\n        '&:hover button': {\n          borderColor: token.colorPrimaryHover,\n          backgroundColor: token.itemBg\n        },\n        [`${componentCls}-item-link`]: {\n          backgroundColor: token.itemLinkBg,\n          borderColor: token.colorBorder\n        },\n        [`&:hover ${componentCls}-item-link`]: {\n          borderColor: token.colorPrimary,\n          backgroundColor: token.itemBg,\n          color: token.colorPrimary\n        },\n        [`&${componentCls}-disabled`]: {\n          [`${componentCls}-item-link`]: {\n            borderColor: token.colorBorder,\n            color: token.colorTextDisabled\n          }\n        }\n      },\n      [`${componentCls}-item`]: {\n        backgroundColor: token.itemBg,\n        border: `${unit(token.lineWidth)} ${token.lineType} ${token.colorBorder}`,\n        [`&:hover:not(${componentCls}-item-active)`]: {\n          borderColor: token.colorPrimary,\n          backgroundColor: token.itemBg,\n          a: {\n            color: token.colorPrimary\n          }\n        },\n        '&-active': {\n          borderColor: token.colorPrimary\n        }\n      }\n    }\n  };\n};\nexport default genSubStyleComponent(['Pagination', 'bordered'], token => {\n  const paginationToken = prepareToken(token);\n  return [genBorderedStyle(paginationToken)];\n}, prepareComponentToken);","import { useMemo } from 'react';\nexport default function useShowSizeChanger(showSizeChanger) {\n  return useMemo(() => {\n    if (typeof showSizeChanger === 'boolean') {\n      return [showSizeChanger, {}];\n    }\n    if (showSizeChanger && typeof showSizeChanger === 'object') {\n      return [true, showSizeChanger];\n    }\n    return [undefined, undefined];\n  }, [showSizeChanger]);\n}","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport DoubleLeftOutlined from \"@ant-design/icons/es/icons/DoubleLeftOutlined\";\nimport DoubleRightOutlined from \"@ant-design/icons/es/icons/DoubleRightOutlined\";\nimport LeftOutlined from \"@ant-design/icons/es/icons/LeftOutlined\";\nimport RightOutlined from \"@ant-design/icons/es/icons/RightOutlined\";\nimport classNames from 'classnames';\nimport RcPagination from 'rc-pagination';\nimport enUS from \"rc-pagination/es/locale/en_US\";\nimport { devUseWarning } from '../_util/warning';\nimport { useComponentConfig } from '../config-provider/context';\nimport useSize from '../config-provider/hooks/useSize';\nimport useBreakpoint from '../grid/hooks/useBreakpoint';\nimport { useLocale } from '../locale';\nimport Select from '../select';\nimport { useToken } from '../theme/internal';\nimport useStyle from './style';\nimport BorderedStyle from './style/bordered';\nimport useShowSizeChanger from './useShowSizeChanger';\nconst Pagination = props => {\n  const {\n      align,\n      prefixCls: customizePrefixCls,\n      selectPrefixCls: customizeSelectPrefixCls,\n      className,\n      rootClassName,\n      style,\n      size: customizeSize,\n      locale: customLocale,\n      responsive,\n      showSizeChanger,\n      selectComponentClass,\n      pageSizeOptions\n    } = props,\n    restProps = __rest(props, [\"align\", \"prefixCls\", \"selectPrefixCls\", \"className\", \"rootClassName\", \"style\", \"size\", \"locale\", \"responsive\", \"showSizeChanger\", \"selectComponentClass\", \"pageSizeOptions\"]);\n  const {\n    xs\n  } = useBreakpoint(responsive);\n  const [, token] = useToken();\n  const {\n    getPrefixCls,\n    direction,\n    showSizeChanger: contextShowSizeChangerConfig,\n    className: contextClassName,\n    style: contextStyle\n  } = useComponentConfig('pagination');\n  const prefixCls = getPrefixCls('pagination', customizePrefixCls);\n  // Style\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  // ============================== Size ==============================\n  const mergedSize = useSize(customizeSize);\n  const isSmall = mergedSize === 'small' || !!(xs && !mergedSize && responsive);\n  // ============================= Locale =============================\n  const [contextLocale] = useLocale('Pagination', enUS);\n  const locale = Object.assign(Object.assign({}, contextLocale), customLocale);\n  // ========================== Size Changer ==========================\n  // Merge the props showSizeChanger\n  const [propShowSizeChanger, propSizeChangerSelectProps] = useShowSizeChanger(showSizeChanger);\n  const [contextShowSizeChanger, contextSizeChangerSelectProps] = useShowSizeChanger(contextShowSizeChangerConfig);\n  const mergedShowSizeChanger = propShowSizeChanger !== null && propShowSizeChanger !== void 0 ? propShowSizeChanger : contextShowSizeChanger;\n  const mergedShowSizeChangerSelectProps = propSizeChangerSelectProps !== null && propSizeChangerSelectProps !== void 0 ? propSizeChangerSelectProps : contextSizeChangerSelectProps;\n  const SizeChanger = selectComponentClass || Select;\n  // Generate options\n  const mergedPageSizeOptions = React.useMemo(() => {\n    return pageSizeOptions ? pageSizeOptions.map(option => Number(option)) : undefined;\n  }, [pageSizeOptions]);\n  // Render size changer\n  const sizeChangerRender = info => {\n    var _a;\n    const {\n      disabled,\n      size: pageSize,\n      onSizeChange,\n      'aria-label': ariaLabel,\n      className: sizeChangerClassName,\n      options\n    } = info;\n    const {\n      className: propSizeChangerClassName,\n      onChange: propSizeChangerOnChange\n    } = mergedShowSizeChangerSelectProps || {};\n    // Origin Select is using Select.Option,\n    // So it make the option value must be string\n    // Just for compatible\n    const selectedValue = (_a = options.find(option => String(option.value) === String(pageSize))) === null || _a === void 0 ? void 0 : _a.value;\n    return /*#__PURE__*/React.createElement(SizeChanger, Object.assign({\n      disabled: disabled,\n      showSearch: true,\n      popupMatchSelectWidth: false,\n      getPopupContainer: triggerNode => triggerNode.parentNode,\n      \"aria-label\": ariaLabel,\n      options: options\n    }, mergedShowSizeChangerSelectProps, {\n      value: selectedValue,\n      onChange: (nextSize, option) => {\n        onSizeChange === null || onSizeChange === void 0 ? void 0 : onSizeChange(nextSize);\n        propSizeChangerOnChange === null || propSizeChangerOnChange === void 0 ? void 0 : propSizeChangerOnChange(nextSize, option);\n      },\n      size: isSmall ? 'small' : 'middle',\n      className: classNames(sizeChangerClassName, propSizeChangerClassName)\n    }));\n  };\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('Pagination');\n    process.env.NODE_ENV !== \"production\" ? warning(!selectComponentClass, 'usage', '`selectComponentClass` is not official api which will be removed.') : void 0;\n  }\n  // ============================= Render =============================\n  const iconsProps = React.useMemo(() => {\n    const ellipsis = /*#__PURE__*/React.createElement(\"span\", {\n      className: `${prefixCls}-item-ellipsis`\n    }, \"\\u2022\\u2022\\u2022\");\n    const prevIcon = /*#__PURE__*/React.createElement(\"button\", {\n      className: `${prefixCls}-item-link`,\n      type: \"button\",\n      tabIndex: -1\n    }, direction === 'rtl' ? /*#__PURE__*/React.createElement(RightOutlined, null) : /*#__PURE__*/React.createElement(LeftOutlined, null));\n    const nextIcon = /*#__PURE__*/React.createElement(\"button\", {\n      className: `${prefixCls}-item-link`,\n      type: \"button\",\n      tabIndex: -1\n    }, direction === 'rtl' ? /*#__PURE__*/React.createElement(LeftOutlined, null) : /*#__PURE__*/React.createElement(RightOutlined, null));\n    const jumpPrevIcon =\n    /*#__PURE__*/\n    // biome-ignore lint/a11y/useValidAnchor: it is hard to refactor\n    React.createElement(\"a\", {\n      className: `${prefixCls}-item-link`\n    }, /*#__PURE__*/React.createElement(\"div\", {\n      className: `${prefixCls}-item-container`\n    }, direction === 'rtl' ? (/*#__PURE__*/React.createElement(DoubleRightOutlined, {\n      className: `${prefixCls}-item-link-icon`\n    })) : (/*#__PURE__*/React.createElement(DoubleLeftOutlined, {\n      className: `${prefixCls}-item-link-icon`\n    })), ellipsis));\n    const jumpNextIcon =\n    /*#__PURE__*/\n    // biome-ignore lint/a11y/useValidAnchor: it is hard to refactor\n    React.createElement(\"a\", {\n      className: `${prefixCls}-item-link`\n    }, /*#__PURE__*/React.createElement(\"div\", {\n      className: `${prefixCls}-item-container`\n    }, direction === 'rtl' ? (/*#__PURE__*/React.createElement(DoubleLeftOutlined, {\n      className: `${prefixCls}-item-link-icon`\n    })) : (/*#__PURE__*/React.createElement(DoubleRightOutlined, {\n      className: `${prefixCls}-item-link-icon`\n    })), ellipsis));\n    return {\n      prevIcon,\n      nextIcon,\n      jumpPrevIcon,\n      jumpNextIcon\n    };\n  }, [direction, prefixCls]);\n  const selectPrefixCls = getPrefixCls('select', customizeSelectPrefixCls);\n  const extendedClassName = classNames({\n    [`${prefixCls}-${align}`]: !!align,\n    [`${prefixCls}-mini`]: isSmall,\n    [`${prefixCls}-rtl`]: direction === 'rtl',\n    [`${prefixCls}-bordered`]: token.wireframe\n  }, contextClassName, className, rootClassName, hashId, cssVarCls);\n  const mergedStyle = Object.assign(Object.assign({}, contextStyle), style);\n  return wrapCSSVar(/*#__PURE__*/React.createElement(React.Fragment, null, token.wireframe && /*#__PURE__*/React.createElement(BorderedStyle, {\n    prefixCls: prefixCls\n  }), /*#__PURE__*/React.createElement(RcPagination, Object.assign({}, iconsProps, restProps, {\n    style: mergedStyle,\n    prefixCls: prefixCls,\n    selectPrefixCls: selectPrefixCls,\n    className: extendedClassName,\n    locale: locale,\n    pageSizeOptions: mergedPageSizeOptions,\n    showSizeChanger: mergedShowSizeChanger,\n    sizeChangerRender: sizeChangerRender\n  }))));\n};\nif (process.env.NODE_ENV !== 'production') {\n  Pagination.displayName = 'Pagination';\n}\nexport default Pagination;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nconst viewSize = 100;\nconst borderWidth = viewSize / 5;\nconst radius = viewSize / 2 - borderWidth / 2;\nconst circumference = radius * 2 * Math.PI;\nconst position = 50;\nconst CustomCircle = props => {\n  const {\n    dotClassName,\n    style,\n    hasCircleCls\n  } = props;\n  return /*#__PURE__*/React.createElement(\"circle\", {\n    className: classNames(`${dotClassName}-circle`, {\n      [`${dotClassName}-circle-bg`]: hasCircleCls\n    }),\n    r: radius,\n    cx: position,\n    cy: position,\n    strokeWidth: borderWidth,\n    style: style\n  });\n};\nconst Progress = ({\n  percent,\n  prefixCls\n}) => {\n  const dotClassName = `${prefixCls}-dot`;\n  const holderClassName = `${dotClassName}-holder`;\n  const hideClassName = `${holderClassName}-hidden`;\n  const [render, setRender] = React.useState(false);\n  // ==================== Visible =====================\n  useLayoutEffect(() => {\n    if (percent !== 0) {\n      setRender(true);\n    }\n  }, [percent !== 0]);\n  // ==================== Progress ====================\n  const safePtg = Math.max(Math.min(percent, 100), 0);\n  // ===================== Render =====================\n  if (!render) {\n    return null;\n  }\n  const circleStyle = {\n    strokeDashoffset: `${circumference / 4}`,\n    strokeDasharray: `${circumference * safePtg / 100} ${circumference * (100 - safePtg) / 100}`\n  };\n  return /*#__PURE__*/React.createElement(\"span\", {\n    className: classNames(holderClassName, `${dotClassName}-progress`, safePtg <= 0 && hideClassName)\n  }, /*#__PURE__*/React.createElement(\"svg\", {\n    viewBox: `0 0 ${viewSize} ${viewSize}`,\n    role: \"progressbar\",\n    \"aria-valuemin\": 0,\n    \"aria-valuemax\": 100,\n    \"aria-valuenow\": safePtg\n  }, /*#__PURE__*/React.createElement(CustomCircle, {\n    dotClassName: dotClassName,\n    hasCircleCls: true\n  }), /*#__PURE__*/React.createElement(CustomCircle, {\n    dotClassName: dotClassName,\n    style: circleStyle\n  })));\n};\nexport default Progress;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport Progress from './Progress';\nexport default function Looper(props) {\n  const {\n    prefixCls,\n    percent = 0\n  } = props;\n  const dotClassName = `${prefixCls}-dot`;\n  const holderClassName = `${dotClassName}-holder`;\n  const hideClassName = `${holderClassName}-hidden`;\n  // ===================== Render =====================\n  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"span\", {\n    className: classNames(holderClassName, percent > 0 && hideClassName)\n  }, /*#__PURE__*/React.createElement(\"span\", {\n    className: classNames(dotClassName, `${prefixCls}-dot-spin`)\n  }, [1, 2, 3, 4].map(i => (/*#__PURE__*/React.createElement(\"i\", {\n    className: `${prefixCls}-dot-item`,\n    key: i\n  }))))), /*#__PURE__*/React.createElement(Progress, {\n    prefixCls: prefixCls,\n    percent: percent\n  }));\n}","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { cloneElement } from '../../_util/reactNode';\nimport Looper from './Looper';\nexport default function Indicator(props) {\n  var _a;\n  const {\n    prefixCls,\n    indicator,\n    percent\n  } = props;\n  const dotClassName = `${prefixCls}-dot`;\n  if (indicator && /*#__PURE__*/React.isValidElement(indicator)) {\n    return cloneElement(indicator, {\n      className: classNames((_a = indicator.props) === null || _a === void 0 ? void 0 : _a.className, dotClassName),\n      percent\n    });\n  }\n  return /*#__PURE__*/React.createElement(Looper, {\n    prefixCls: prefixCls,\n    percent: percent\n  });\n}","import { Keyframes } from '@ant-design/cssinjs';\nimport { resetComponent } from '../../style';\nimport { genStyleHooks, mergeToken } from '../../theme/internal';\nconst antSpinMove = new Keyframes('antSpinMove', {\n  to: {\n    opacity: 1\n  }\n});\nconst antRotate = new Keyframes('antRotate', {\n  to: {\n    transform: 'rotate(405deg)'\n  }\n});\nconst genSpinStyle = token => {\n  const {\n    componentCls,\n    calc\n  } = token;\n  return {\n    [componentCls]: Object.assign(Object.assign({}, resetComponent(token)), {\n      position: 'absolute',\n      display: 'none',\n      color: token.colorPrimary,\n      fontSize: 0,\n      textAlign: 'center',\n      verticalAlign: 'middle',\n      opacity: 0,\n      transition: `transform ${token.motionDurationSlow} ${token.motionEaseInOutCirc}`,\n      '&-spinning': {\n        position: 'relative',\n        display: 'inline-block',\n        opacity: 1\n      },\n      [`${componentCls}-text`]: {\n        fontSize: token.fontSize,\n        paddingTop: calc(calc(token.dotSize).sub(token.fontSize)).div(2).add(2).equal()\n      },\n      '&-fullscreen': {\n        position: 'fixed',\n        width: '100vw',\n        height: '100vh',\n        backgroundColor: token.colorBgMask,\n        zIndex: token.zIndexPopupBase,\n        inset: 0,\n        display: 'flex',\n        alignItems: 'center',\n        flexDirection: 'column',\n        justifyContent: 'center',\n        opacity: 0,\n        visibility: 'hidden',\n        transition: `all ${token.motionDurationMid}`,\n        '&-show': {\n          opacity: 1,\n          visibility: 'visible'\n        },\n        [componentCls]: {\n          [`${componentCls}-dot-holder`]: {\n            color: token.colorWhite\n          },\n          [`${componentCls}-text`]: {\n            color: token.colorTextLightSolid\n          }\n        }\n      },\n      '&-nested-loading': {\n        position: 'relative',\n        [`> div > ${componentCls}`]: {\n          position: 'absolute',\n          top: 0,\n          insetInlineStart: 0,\n          zIndex: 4,\n          display: 'block',\n          width: '100%',\n          height: '100%',\n          maxHeight: token.contentHeight,\n          [`${componentCls}-dot`]: {\n            position: 'absolute',\n            top: '50%',\n            insetInlineStart: '50%',\n            margin: calc(token.dotSize).mul(-1).div(2).equal()\n          },\n          [`${componentCls}-text`]: {\n            position: 'absolute',\n            top: '50%',\n            width: '100%',\n            textShadow: `0 1px 2px ${token.colorBgContainer}` // FIXME: shadow\n          },\n          [`&${componentCls}-show-text ${componentCls}-dot`]: {\n            marginTop: calc(token.dotSize).div(2).mul(-1).sub(10).equal()\n          },\n          '&-sm': {\n            [`${componentCls}-dot`]: {\n              margin: calc(token.dotSizeSM).mul(-1).div(2).equal()\n            },\n            [`${componentCls}-text`]: {\n              paddingTop: calc(calc(token.dotSizeSM).sub(token.fontSize)).div(2).add(2).equal()\n            },\n            [`&${componentCls}-show-text ${componentCls}-dot`]: {\n              marginTop: calc(token.dotSizeSM).div(2).mul(-1).sub(10).equal()\n            }\n          },\n          '&-lg': {\n            [`${componentCls}-dot`]: {\n              margin: calc(token.dotSizeLG).mul(-1).div(2).equal()\n            },\n            [`${componentCls}-text`]: {\n              paddingTop: calc(calc(token.dotSizeLG).sub(token.fontSize)).div(2).add(2).equal()\n            },\n            [`&${componentCls}-show-text ${componentCls}-dot`]: {\n              marginTop: calc(token.dotSizeLG).div(2).mul(-1).sub(10).equal()\n            }\n          }\n        },\n        [`${componentCls}-container`]: {\n          position: 'relative',\n          transition: `opacity ${token.motionDurationSlow}`,\n          '&::after': {\n            position: 'absolute',\n            top: 0,\n            insetInlineEnd: 0,\n            bottom: 0,\n            insetInlineStart: 0,\n            zIndex: 10,\n            width: '100%',\n            height: '100%',\n            background: token.colorBgContainer,\n            opacity: 0,\n            transition: `all ${token.motionDurationSlow}`,\n            content: '\"\"',\n            pointerEvents: 'none'\n          }\n        },\n        [`${componentCls}-blur`]: {\n          clear: 'both',\n          opacity: 0.5,\n          userSelect: 'none',\n          pointerEvents: 'none',\n          '&::after': {\n            opacity: 0.4,\n            pointerEvents: 'auto'\n          }\n        }\n      },\n      // tip\n      // ------------------------------\n      '&-tip': {\n        color: token.spinDotDefault\n      },\n      // holder\n      // ------------------------------\n      [`${componentCls}-dot-holder`]: {\n        width: '1em',\n        height: '1em',\n        fontSize: token.dotSize,\n        display: 'inline-block',\n        transition: `transform ${token.motionDurationSlow} ease, opacity ${token.motionDurationSlow} ease`,\n        transformOrigin: '50% 50%',\n        lineHeight: 1,\n        color: token.colorPrimary,\n        '&-hidden': {\n          transform: 'scale(0.3)',\n          opacity: 0\n        }\n      },\n      // progress\n      // ------------------------------\n      [`${componentCls}-dot-progress`]: {\n        position: 'absolute',\n        inset: 0\n      },\n      // dots\n      // ------------------------------\n      [`${componentCls}-dot`]: {\n        position: 'relative',\n        display: 'inline-block',\n        fontSize: token.dotSize,\n        width: '1em',\n        height: '1em',\n        '&-item': {\n          position: 'absolute',\n          display: 'block',\n          width: calc(token.dotSize).sub(calc(token.marginXXS).div(2)).div(2).equal(),\n          height: calc(token.dotSize).sub(calc(token.marginXXS).div(2)).div(2).equal(),\n          background: 'currentColor',\n          borderRadius: '100%',\n          transform: 'scale(0.75)',\n          transformOrigin: '50% 50%',\n          opacity: 0.3,\n          animationName: antSpinMove,\n          animationDuration: '1s',\n          animationIterationCount: 'infinite',\n          animationTimingFunction: 'linear',\n          animationDirection: 'alternate',\n          '&:nth-child(1)': {\n            top: 0,\n            insetInlineStart: 0,\n            animationDelay: '0s'\n          },\n          '&:nth-child(2)': {\n            top: 0,\n            insetInlineEnd: 0,\n            animationDelay: '0.4s'\n          },\n          '&:nth-child(3)': {\n            insetInlineEnd: 0,\n            bottom: 0,\n            animationDelay: '0.8s'\n          },\n          '&:nth-child(4)': {\n            bottom: 0,\n            insetInlineStart: 0,\n            animationDelay: '1.2s'\n          }\n        },\n        '&-spin': {\n          transform: 'rotate(45deg)',\n          animationName: antRotate,\n          animationDuration: '1.2s',\n          animationIterationCount: 'infinite',\n          animationTimingFunction: 'linear'\n        },\n        '&-circle': {\n          strokeLinecap: 'round',\n          transition: ['stroke-dashoffset', 'stroke-dasharray', 'stroke', 'stroke-width', 'opacity'].map(item => `${item} ${token.motionDurationSlow} ease`).join(','),\n          fillOpacity: 0,\n          stroke: 'currentcolor'\n        },\n        '&-circle-bg': {\n          stroke: token.colorFillSecondary\n        }\n      },\n      // small\n      [`&-sm ${componentCls}-dot`]: {\n        '&, &-holder': {\n          fontSize: token.dotSizeSM\n        }\n      },\n      [`&-sm ${componentCls}-dot-holder`]: {\n        i: {\n          width: calc(calc(token.dotSizeSM).sub(calc(token.marginXXS).div(2))).div(2).equal(),\n          height: calc(calc(token.dotSizeSM).sub(calc(token.marginXXS).div(2))).div(2).equal()\n        }\n      },\n      // large\n      [`&-lg ${componentCls}-dot`]: {\n        '&, &-holder': {\n          fontSize: token.dotSizeLG\n        }\n      },\n      [`&-lg ${componentCls}-dot-holder`]: {\n        i: {\n          width: calc(calc(token.dotSizeLG).sub(token.marginXXS)).div(2).equal(),\n          height: calc(calc(token.dotSizeLG).sub(token.marginXXS)).div(2).equal()\n        }\n      },\n      [`&${componentCls}-show-text ${componentCls}-text`]: {\n        display: 'block'\n      }\n    })\n  };\n};\nexport const prepareComponentToken = token => {\n  const {\n    controlHeightLG,\n    controlHeight\n  } = token;\n  return {\n    contentHeight: 400,\n    dotSize: controlHeightLG / 2,\n    dotSizeSM: controlHeightLG * 0.35,\n    dotSizeLG: controlHeight\n  };\n};\n// ============================== Export ==============================\nexport default genStyleHooks('Spin', token => {\n  const spinToken = mergeToken(token, {\n    spinDotDefault: token.colorTextDescription\n  });\n  return [genSpinStyle(spinToken)];\n}, prepareComponentToken);","import * as React from 'react';\nconst AUTO_INTERVAL = 200;\nconst STEP_BUCKETS = [[30, 0.05], [70, 0.03], [96, 0.01]];\nexport default function usePercent(spinning, percent) {\n  const [mockPercent, setMockPercent] = React.useState(0);\n  const mockIntervalRef = React.useRef(null);\n  const isAuto = percent === 'auto';\n  React.useEffect(() => {\n    if (isAuto && spinning) {\n      setMockPercent(0);\n      mockIntervalRef.current = setInterval(() => {\n        setMockPercent(prev => {\n          const restPTG = 100 - prev;\n          for (let i = 0; i < STEP_BUCKETS.length; i += 1) {\n            const [limit, stepPtg] = STEP_BUCKETS[i];\n            if (prev <= limit) {\n              return prev + restPTG * stepPtg;\n            }\n          }\n          return prev;\n        });\n      }, AUTO_INTERVAL);\n    }\n    return () => {\n      clearInterval(mockIntervalRef.current);\n    };\n  }, [isAuto, spinning]);\n  return isAuto ? mockPercent : percent;\n}","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { debounce } from 'throttle-debounce';\nimport { devUseWarning } from '../_util/warning';\nimport { useComponentConfig } from '../config-provider/context';\nimport Indicator from './Indicator';\nimport useStyle from './style/index';\nimport usePercent from './usePercent';\nconst _SpinSizes = ['small', 'default', 'large'];\n// Render indicator\nlet defaultIndicator;\nfunction shouldDelay(spinning, delay) {\n  return !!spinning && !!delay && !Number.isNaN(Number(delay));\n}\nconst Spin = props => {\n  var _a;\n  const {\n      prefixCls: customizePrefixCls,\n      spinning: customSpinning = true,\n      delay = 0,\n      className,\n      rootClassName,\n      size = 'default',\n      tip,\n      wrapperClassName,\n      style,\n      children,\n      fullscreen = false,\n      indicator,\n      percent\n    } = props,\n    restProps = __rest(props, [\"prefixCls\", \"spinning\", \"delay\", \"className\", \"rootClassName\", \"size\", \"tip\", \"wrapperClassName\", \"style\", \"children\", \"fullscreen\", \"indicator\", \"percent\"]);\n  const {\n    getPrefixCls,\n    direction,\n    className: contextClassName,\n    style: contextStyle,\n    indicator: contextIndicator\n  } = useComponentConfig('spin');\n  const prefixCls = getPrefixCls('spin', customizePrefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  const [spinning, setSpinning] = React.useState(() => customSpinning && !shouldDelay(customSpinning, delay));\n  const mergedPercent = usePercent(spinning, percent);\n  React.useEffect(() => {\n    if (customSpinning) {\n      const showSpinning = debounce(delay, () => {\n        setSpinning(true);\n      });\n      showSpinning();\n      return () => {\n        var _a;\n        (_a = showSpinning === null || showSpinning === void 0 ? void 0 : showSpinning.cancel) === null || _a === void 0 ? void 0 : _a.call(showSpinning);\n      };\n    }\n    setSpinning(false);\n  }, [delay, customSpinning]);\n  const isNestedPattern = React.useMemo(() => typeof children !== 'undefined' && !fullscreen, [children, fullscreen]);\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('Spin');\n    process.env.NODE_ENV !== \"production\" ? warning(!tip || isNestedPattern || fullscreen, 'usage', '`tip` only work in nest or fullscreen pattern.') : void 0;\n  }\n  const spinClassName = classNames(prefixCls, contextClassName, {\n    [`${prefixCls}-sm`]: size === 'small',\n    [`${prefixCls}-lg`]: size === 'large',\n    [`${prefixCls}-spinning`]: spinning,\n    [`${prefixCls}-show-text`]: !!tip,\n    [`${prefixCls}-rtl`]: direction === 'rtl'\n  }, className, !fullscreen && rootClassName, hashId, cssVarCls);\n  const containerClassName = classNames(`${prefixCls}-container`, {\n    [`${prefixCls}-blur`]: spinning\n  });\n  const mergedIndicator = (_a = indicator !== null && indicator !== void 0 ? indicator : contextIndicator) !== null && _a !== void 0 ? _a : defaultIndicator;\n  const mergedStyle = Object.assign(Object.assign({}, contextStyle), style);\n  const spinElement = /*#__PURE__*/React.createElement(\"div\", Object.assign({}, restProps, {\n    style: mergedStyle,\n    className: spinClassName,\n    \"aria-live\": \"polite\",\n    \"aria-busy\": spinning\n  }), /*#__PURE__*/React.createElement(Indicator, {\n    prefixCls: prefixCls,\n    indicator: mergedIndicator,\n    percent: mergedPercent\n  }), tip && (isNestedPattern || fullscreen) ? (/*#__PURE__*/React.createElement(\"div\", {\n    className: `${prefixCls}-text`\n  }, tip)) : null);\n  if (isNestedPattern) {\n    return wrapCSSVar(/*#__PURE__*/React.createElement(\"div\", Object.assign({}, restProps, {\n      className: classNames(`${prefixCls}-nested-loading`, wrapperClassName, hashId, cssVarCls)\n    }), spinning && /*#__PURE__*/React.createElement(\"div\", {\n      key: \"loading\"\n    }, spinElement), /*#__PURE__*/React.createElement(\"div\", {\n      className: containerClassName,\n      key: \"container\"\n    }, children)));\n  }\n  if (fullscreen) {\n    return wrapCSSVar(/*#__PURE__*/React.createElement(\"div\", {\n      className: classNames(`${prefixCls}-fullscreen`, {\n        [`${prefixCls}-fullscreen-show`]: spinning\n      }, rootClassName, hashId, cssVarCls)\n    }, spinElement));\n  }\n  return wrapCSSVar(spinElement);\n};\nSpin.setDefaultIndicator = indicator => {\n  defaultIndicator = indicator;\n};\nif (process.env.NODE_ENV !== 'production') {\n  Spin.displayName = 'Spin';\n}\nexport default Spin;","const toList = (candidate, skipEmpty = false) => {\n  if (skipEmpty && (candidate === undefined || candidate === null)) {\n    return [];\n  }\n  return Array.isArray(candidate) ? candidate : [candidate];\n};\nexport default toList;","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { Panel } from 'rc-dialog';\nimport { withPureRenderTheme } from '../_util/PurePanel';\nimport { ConfigContext } from '../config-provider';\nimport useCSSVarCls from '../config-provider/hooks/useCSSVarCls';\nimport { ConfirmContent } from './ConfirmDialog';\nimport { Footer, renderCloseIcon } from './shared';\nimport useStyle from './style';\nconst PurePanel = props => {\n  const {\n      prefixCls: customizePrefixCls,\n      className,\n      closeIcon,\n      closable,\n      type,\n      title,\n      children,\n      footer\n    } = props,\n    restProps = __rest(props, [\"prefixCls\", \"className\", \"closeIcon\", \"closable\", \"type\", \"title\", \"children\", \"footer\"]);\n  const {\n    getPrefixCls\n  } = React.useContext(ConfigContext);\n  const rootPrefixCls = getPrefixCls();\n  const prefixCls = customizePrefixCls || getPrefixCls('modal');\n  const rootCls = useCSSVarCls(rootPrefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls, rootCls);\n  const confirmPrefixCls = `${prefixCls}-confirm`;\n  // Choose target props by confirm mark\n  let additionalProps = {};\n  if (type) {\n    additionalProps = {\n      closable: closable !== null && closable !== void 0 ? closable : false,\n      title: '',\n      footer: '',\n      children: (/*#__PURE__*/React.createElement(ConfirmContent, Object.assign({}, props, {\n        prefixCls: prefixCls,\n        confirmPrefixCls: confirmPrefixCls,\n        rootPrefixCls: rootPrefixCls,\n        content: children\n      })))\n    };\n  } else {\n    additionalProps = {\n      closable: closable !== null && closable !== void 0 ? closable : true,\n      title,\n      footer: footer !== null && /*#__PURE__*/React.createElement(Footer, Object.assign({}, props)),\n      children\n    };\n  }\n  return wrapCSSVar(/*#__PURE__*/React.createElement(Panel, Object.assign({\n    prefixCls: prefixCls,\n    className: classNames(hashId, `${prefixCls}-pure-panel`, type && confirmPrefixCls, type && `${confirmPrefixCls}-${type}`, className, cssVarCls, rootCls)\n  }, restProps, {\n    closeIcon: renderCloseIcon(prefixCls, closeIcon),\n    closable: closable\n  }, additionalProps)));\n};\nexport default withPureRenderTheme(PurePanel);","\"use client\";\n\nimport confirm, { modalGlobalConfig, withConfirm, withError, withInfo, withSuccess, withWarn } from './confirm';\nimport destroyFns from './destroyFns';\nimport OriginModal from './Modal';\nimport PurePanel from './PurePanel';\nimport useModal from './useModal';\nfunction modalWarn(props) {\n  return confirm(withWarn(props));\n}\nconst Modal = OriginModal;\nModal.useModal = useModal;\nModal.info = function infoFn(props) {\n  return confirm(withInfo(props));\n};\nModal.success = function successFn(props) {\n  return confirm(withSuccess(props));\n};\nModal.error = function errorFn(props) {\n  return confirm(withError(props));\n};\nModal.warning = modalWarn;\nModal.warn = modalWarn;\nModal.confirm = function confirmFn(props) {\n  return confirm(withConfirm(props));\n};\nModal.destroyAll = function destroyAllFn() {\n  while (destroyFns.length) {\n    const close = destroyFns.pop();\n    if (close) {\n      close();\n    }\n  }\n};\nModal.config = modalGlobalConfig;\nModal._InternalPanelDoNotUseOrYouWillBeFired = PurePanel;\nif (process.env.NODE_ENV !== 'production') {\n  Modal.displayName = 'Modal';\n}\nexport default Modal;","// This icon file is generated automatically.\nvar CloseCircleTwoTone = { \"icon\": function render(primaryColor, secondaryColor) { return { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\", \"fill\": primaryColor } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm171.8 527.1c1.2 1.5 1.9 3.3 1.9 5.2 0 4.5-3.6 8-8 8l-66-.3-99.3-118.4-99.3 118.5-66.1.3c-4.4 0-8-3.6-8-8 0-1.9.7-3.7 1.9-5.2L471 512.3l-130.1-155a8.32 8.32 0 01-1.9-5.2c0-4.5 3.6-8 8-8l66.1.3 99.3 118.4 99.4-118.5 66-.3c4.4 0 8 3.6 8 8 0 1.9-.6 3.8-1.8 5.2l-130.1 155 129.9 154.9z\", \"fill\": secondaryColor } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M685.8 352c0-4.4-3.6-8-8-8l-66 .3-99.4 118.5-99.3-118.4-66.1-.3c-4.4 0-8 3.5-8 8 0 1.9.7 3.7 1.9 5.2l130.1 155-130.1 154.9a8.32 8.32 0 00-1.9 5.2c0 4.4 3.6 8 8 8l66.1-.3 99.3-118.5L611.7 680l66 .3c4.4 0 8-3.5 8-8 0-1.9-.7-3.7-1.9-5.2L553.9 512.2l130.1-155c1.2-1.4 1.8-3.3 1.8-5.2z\", \"fill\": primaryColor } }] }; }, \"name\": \"close-circle\", \"theme\": \"twotone\" };\nexport default CloseCircleTwoTone;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport CloseCircleTwoToneSvg from \"@ant-design/icons-svg/es/asn/CloseCircleTwoTone\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar CloseCircleTwoTone = function CloseCircleTwoTone(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: CloseCircleTwoToneSvg\n  }));\n};\n\n/**![close-circle](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0wIDgyMGMtMjA1LjQgMC0zNzItMTY2LjYtMzcyLTM3MnMxNjYuNi0zNzIgMzcyLTM3MiAzNzIgMTY2LjYgMzcyIDM3Mi0xNjYuNiAzNzItMzcyIDM3MnoiIGZpbGw9IiMxNjc3ZmYiIC8+PHBhdGggZD0iTTUxMiAxNDBjLTIwNS40IDAtMzcyIDE2Ni42LTM3MiAzNzJzMTY2LjYgMzcyIDM3MiAzNzIgMzcyLTE2Ni42IDM3Mi0zNzItMTY2LjYtMzcyLTM3Mi0zNzJ6bTE3MS44IDUyNy4xYzEuMiAxLjUgMS45IDMuMyAxLjkgNS4yIDAgNC41LTMuNiA4LTggOGwtNjYtLjMtOTkuMy0xMTguNC05OS4zIDExOC41LTY2LjEuM2MtNC40IDAtOC0zLjYtOC04IDAtMS45LjctMy43IDEuOS01LjJMNDcxIDUxMi4zbC0xMzAuMS0xNTVhOC4zMiA4LjMyIDAgMDEtMS45LTUuMmMwLTQuNSAzLjYtOCA4LThsNjYuMS4zIDk5LjMgMTE4LjQgOTkuNC0xMTguNSA2Ni0uM2M0LjQgMCA4IDMuNiA4IDggMCAxLjktLjYgMy44LTEuOCA1LjJsLTEzMC4xIDE1NSAxMjkuOSAxNTQuOXoiIGZpbGw9IiNlNmY0ZmYiIC8+PHBhdGggZD0iTTY4NS44IDM1MmMwLTQuNC0zLjYtOC04LThsLTY2IC4zLTk5LjQgMTE4LjUtOTkuMy0xMTguNC02Ni4xLS4zYy00LjQgMC04IDMuNS04IDggMCAxLjkuNyAzLjcgMS45IDUuMmwxMzAuMSAxNTUtMTMwLjEgMTU0LjlhOC4zMiA4LjMyIDAgMDAtMS45IDUuMmMwIDQuNCAzLjYgOCA4IDhsNjYuMS0uMyA5OS4zLTExOC41TDYxMS43IDY4MGw2NiAuM2M0LjQgMCA4LTMuNSA4LTggMC0xLjktLjctMy43LTEuOS01LjJMNTUzLjkgNTEyLjJsMTMwLjEtMTU1YzEuMi0xLjQgMS44LTMuMyAxLjgtNS4yeiIgZmlsbD0iIzE2NzdmZiIgLz48L3N2Zz4=) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(CloseCircleTwoTone);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'CloseCircleTwoTone';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar CopyOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32zM704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c2.2 2.2 4.7 4 7.4 5.5v1.9h4.2c3.5 1.3 7.2 2 11 2H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM350 856.2L263.9 770H350v86.2zM664 888H414V746c0-22.1-17.9-40-40-40H232V264h432v624z\" } }] }, \"name\": \"copy\", \"theme\": \"outlined\" };\nexport default CopyOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport CopyOutlinedSvg from \"@ant-design/icons-svg/es/asn/CopyOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar CopyOutlined = function CopyOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: CopyOutlinedSvg\n  }));\n};\n\n/**![copy](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTgzMiA2NEgyOTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNDk2djY4OGMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04Vjk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyek03MDQgMTkySDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NTMwLjdjMCA4LjUgMy40IDE2LjYgOS40IDIyLjZsMTczLjMgMTczLjNjMi4yIDIuMiA0LjcgNCA3LjQgNS41djEuOWg0LjJjMy41IDEuMyA3LjIgMiAxMSAySDcwNGMxNy43IDAgMzItMTQuMyAzMi0zMlYyMjRjMC0xNy43LTE0LjMtMzItMzItMzJ6TTM1MCA4NTYuMkwyNjMuOSA3NzBIMzUwdjg2LjJ6TTY2NCA4ODhINDE0Vjc0NmMwLTIyLjEtMTcuOS00MC00MC00MEgyMzJWMjY0aDQzMnY2MjR6IiAvPjwvc3ZnPg==) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(CopyOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'CopyOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar DownloadOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M505.7 661a8 8 0 0012.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V168c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z\" } }] }, \"name\": \"download\", \"theme\": \"outlined\" };\nexport default DownloadOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport DownloadOutlinedSvg from \"@ant-design/icons-svg/es/asn/DownloadOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar DownloadOutlined = function DownloadOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: DownloadOutlinedSvg\n  }));\n};\n\n/**![download](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTUwNS43IDY2MWE4IDggMCAwMDEyLjYgMGwxMTItMTQxLjdjNC4xLTUuMi40LTEyLjktNi4zLTEyLjloLTc0LjFWMTY4YzAtNC40LTMuNi04LTgtOGgtNjBjLTQuNCAwLTggMy42LTggOHYzMzguM0g0MDBjLTYuNyAwLTEwLjQgNy43LTYuMyAxMi45bDExMiAxNDEuOHpNODc4IDYyNmgtNjBjLTQuNCAwLTggMy42LTggOHYxNTRIMjE0VjYzNGMwLTQuNC0zLjYtOC04LThoLTYwYy00LjQgMC04IDMuNi04IDh2MTk4YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY4NGMxNy43IDAgMzItMTQuMyAzMi0zMlY2MzRjMC00LjQtMy42LTgtOC04eiIgLz48L3N2Zz4=) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(DownloadOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'DownloadOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar EditOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M257.7 752c2 0 4-.2 6-.5L431.9 722c2-.4 3.9-1.3 5.3-2.8l423.9-423.9a9.96 9.96 0 000-14.1L694.9 114.9c-1.9-1.9-4.4-2.9-7.1-2.9s-5.2 1-7.1 2.9L256.8 538.8c-1.5 1.5-2.4 3.3-2.8 5.3l-29.5 168.2a33.5 33.5 0 009.4 29.8c6.6 6.4 14.9 9.9 23.8 9.9zm67.4-174.4L687.8 215l73.3 73.3-362.7 362.6-88.9 15.7 15.6-89zM880 836H144c-17.7 0-32 14.3-32 32v36c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-36c0-17.7-14.3-32-32-32z\" } }] }, \"name\": \"edit\", \"theme\": \"outlined\" };\nexport default EditOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport EditOutlinedSvg from \"@ant-design/icons-svg/es/asn/EditOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar EditOutlined = function EditOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: EditOutlinedSvg\n  }));\n};\n\n/**![edit](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTI1Ny43IDc1MmMyIDAgNC0uMiA2LS41TDQzMS45IDcyMmMyLS40IDMuOS0xLjMgNS4zLTIuOGw0MjMuOS00MjMuOWE5Ljk2IDkuOTYgMCAwMDAtMTQuMUw2OTQuOSAxMTQuOWMtMS45LTEuOS00LjQtMi45LTcuMS0yLjlzLTUuMiAxLTcuMSAyLjlMMjU2LjggNTM4LjhjLTEuNSAxLjUtMi40IDMuMy0yLjggNS4zbC0yOS41IDE2OC4yYTMzLjUgMzMuNSAwIDAwOS40IDI5LjhjNi42IDYuNCAxNC45IDkuOSAyMy44IDkuOXptNjcuNC0xNzQuNEw2ODcuOCAyMTVsNzMuMyA3My4zLTM2Mi43IDM2Mi42LTg4LjkgMTUuNyAxNS42LTg5ek04ODAgODM2SDE0NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MzZjMCA0LjQgMy42IDggOCA4aDc4NGM0LjQgMCA4LTMuNiA4LTh2LTM2YzAtMTcuNy0xNC4zLTMyLTMyLTMyeiIgLz48L3N2Zz4=) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(EditOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'EditOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar EnterOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M864 170h-60c-4.4 0-8 3.6-8 8v518H310v-73c0-6.7-7.8-10.5-13-6.3l-141.9 112a8 8 0 000 12.6l141.9 112c5.3 4.2 13 .4 13-6.3v-75h498c35.3 0 64-28.7 64-64V178c0-4.4-3.6-8-8-8z\" } }] }, \"name\": \"enter\", \"theme\": \"outlined\" };\nexport default EnterOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport EnterOutlinedSvg from \"@ant-design/icons-svg/es/asn/EnterOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar EnterOutlined = function EnterOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: EnterOutlinedSvg\n  }));\n};\n\n/**![enter](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTg2NCAxNzBoLTYwYy00LjQgMC04IDMuNi04IDh2NTE4SDMxMHYtNzNjMC02LjctNy44LTEwLjUtMTMtNi4zbC0xNDEuOSAxMTJhOCA4IDAgMDAwIDEyLjZsMTQxLjkgMTEyYzUuMyA0LjIgMTMgLjQgMTMtNi4zdi03NWg0OThjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTc4YzAtNC40LTMuNi04LTgtOHoiIC8+PC9zdmc+) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(EnterOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'EnterOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar FileImageOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M553.1 509.1l-77.8 99.2-41.1-52.4a8 8 0 00-12.6 0l-99.8 127.2a7.98 7.98 0 006.3 12.9H696c6.7 0 10.4-7.7 6.3-12.9l-136.5-174a8.1 8.1 0 00-12.7 0zM360 442a40 40 0 1080 0 40 40 0 10-80 0zm494.6-153.4L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494z\" } }] }, \"name\": \"file-image\", \"theme\": \"outlined\" };\nexport default FileImageOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport FileImageOutlinedSvg from \"@ant-design/icons-svg/es/asn/FileImageOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar FileImageOutlined = function FileImageOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: FileImageOutlinedSvg\n  }));\n};\n\n/**![file-image](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTU1My4xIDUwOS4xbC03Ny44IDk5LjItNDEuMS01Mi40YTggOCAwIDAwLTEyLjYgMGwtOTkuOCAxMjcuMmE3Ljk4IDcuOTggMCAwMDYuMyAxMi45SDY5NmM2LjcgMCAxMC40LTcuNyA2LjMtMTIuOWwtMTM2LjUtMTc0YTguMSA4LjEgMCAwMC0xMi43IDB6TTM2MCA0NDJhNDAgNDAgMCAxMDgwIDAgNDAgNDAgMCAxMC04MCAwem00OTQuNi0xNTMuNEw2MzkuNCA3My40Yy02LTYtMTQuMS05LjQtMjIuNi05LjRIMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY4MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjQwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjMxMS4zYzAtOC41LTMuNC0xNi43LTkuNC0yMi43ek03OTAuMiAzMjZINjAyVjEzNy44TDc5MC4yIDMyNnptMS44IDU2MkgyMzJWMTM2aDMwMnYyMTZhNDIgNDIgMCAwMDQyIDQyaDIxNnY0OTR6IiAvPjwvc3ZnPg==) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(FileImageOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'FileImageOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar FullscreenExitOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M391 240.9c-.8-6.6-8.9-9.4-13.6-4.7l-43.7 43.7L200 146.3a8.03 8.03 0 00-11.3 0l-42.4 42.3a8.03 8.03 0 000 11.3L280 333.6l-43.9 43.9a8.01 8.01 0 004.7 13.6L401 410c5.1.6 9.5-3.7 8.9-8.9L391 240.9zm10.1 373.2L240.8 633c-6.6.8-9.4 8.9-4.7 13.6l43.9 43.9L146.3 824a8.03 8.03 0 000 11.3l42.4 42.3c3.1 3.1 8.2 3.1 11.3 0L333.7 744l43.7 43.7A8.01 8.01 0 00391 783l18.9-160.1c.6-5.1-3.7-9.4-8.8-8.8zm221.8-204.2L783.2 391c6.6-.8 9.4-8.9 4.7-13.6L744 333.6 877.7 200c3.1-3.1 3.1-8.2 0-11.3l-42.4-42.3a8.03 8.03 0 00-11.3 0L690.3 279.9l-43.7-43.7a8.01 8.01 0 00-13.6 4.7L614.1 401c-.6 5.2 3.7 9.5 8.8 8.9zM744 690.4l43.9-43.9a8.01 8.01 0 00-4.7-13.6L623 614c-5.1-.6-9.5 3.7-8.9 8.9L633 783.1c.8 6.6 8.9 9.4 13.6 4.7l43.7-43.7L824 877.7c3.1 3.1 8.2 3.1 11.3 0l42.4-42.3c3.1-3.1 3.1-8.2 0-11.3L744 690.4z\" } }] }, \"name\": \"fullscreen-exit\", \"theme\": \"outlined\" };\nexport default FullscreenExitOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport FullscreenExitOutlinedSvg from \"@ant-design/icons-svg/es/asn/FullscreenExitOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar FullscreenExitOutlined = function FullscreenExitOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: FullscreenExitOutlinedSvg\n  }));\n};\n\n/**![fullscreen-exit](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTM5MSAyNDAuOWMtLjgtNi42LTguOS05LjQtMTMuNi00LjdsLTQzLjcgNDMuN0wyMDAgMTQ2LjNhOC4wMyA4LjAzIDAgMDAtMTEuMyAwbC00Mi40IDQyLjNhOC4wMyA4LjAzIDAgMDAwIDExLjNMMjgwIDMzMy42bC00My45IDQzLjlhOC4wMSA4LjAxIDAgMDA0LjcgMTMuNkw0MDEgNDEwYzUuMS42IDkuNS0zLjcgOC45LTguOUwzOTEgMjQwLjl6bTEwLjEgMzczLjJMMjQwLjggNjMzYy02LjYuOC05LjQgOC45LTQuNyAxMy42bDQzLjkgNDMuOUwxNDYuMyA4MjRhOC4wMyA4LjAzIDAgMDAwIDExLjNsNDIuNCA0Mi4zYzMuMSAzLjEgOC4yIDMuMSAxMS4zIDBMMzMzLjcgNzQ0bDQzLjcgNDMuN0E4LjAxIDguMDEgMCAwMDM5MSA3ODNsMTguOS0xNjAuMWMuNi01LjEtMy43LTkuNC04LjgtOC44em0yMjEuOC0yMDQuMkw3ODMuMiAzOTFjNi42LS44IDkuNC04LjkgNC43LTEzLjZMNzQ0IDMzMy42IDg3Ny43IDIwMGMzLjEtMy4xIDMuMS04LjIgMC0xMS4zbC00Mi40LTQyLjNhOC4wMyA4LjAzIDAgMDAtMTEuMyAwTDY5MC4zIDI3OS45bC00My43LTQzLjdhOC4wMSA4LjAxIDAgMDAtMTMuNiA0LjdMNjE0LjEgNDAxYy0uNiA1LjIgMy43IDkuNSA4LjggOC45ek03NDQgNjkwLjRsNDMuOS00My45YTguMDEgOC4wMSAwIDAwLTQuNy0xMy42TDYyMyA2MTRjLTUuMS0uNi05LjUgMy43LTguOSA4LjlMNjMzIDc4My4xYy44IDYuNiA4LjkgOS40IDEzLjYgNC43bDQzLjctNDMuN0w4MjQgODc3LjdjMy4xIDMuMSA4LjIgMy4xIDExLjMgMGw0Mi40LTQyLjNjMy4xLTMuMSAzLjEtOC4yIDAtMTEuM0w3NDQgNjkwLjR6IiAvPjwvc3ZnPg==) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(FullscreenExitOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'FullscreenExitOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar FullscreenOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M290 236.4l43.9-43.9a8.01 8.01 0 00-4.7-13.6L169 160c-5.1-.6-9.5 3.7-8.9 8.9L179 329.1c.8 6.6 8.9 9.4 13.6 4.7l43.7-43.7L370 423.7c3.1 3.1 8.2 3.1 11.3 0l42.4-42.3c3.1-3.1 3.1-8.2 0-11.3L290 236.4zm352.7 187.3c3.1 3.1 8.2 3.1 11.3 0l133.7-133.6 43.7 43.7a8.01 8.01 0 0013.6-4.7L863.9 169c.6-5.1-3.7-9.5-8.9-8.9L694.8 179c-6.6.8-9.4 8.9-4.7 13.6l43.9 43.9L600.3 370a8.03 8.03 0 000 11.3l42.4 42.4zM845 694.9c-.8-6.6-8.9-9.4-13.6-4.7l-43.7 43.7L654 600.3a8.03 8.03 0 00-11.3 0l-42.4 42.3a8.03 8.03 0 000 11.3L734 787.6l-43.9 43.9a8.01 8.01 0 004.7 13.6L855 864c5.1.6 9.5-3.7 8.9-8.9L845 694.9zm-463.7-94.6a8.03 8.03 0 00-11.3 0L236.3 733.9l-43.7-43.7a8.01 8.01 0 00-13.6 4.7L160.1 855c-.6 5.1 3.7 9.5 8.9 8.9L329.2 845c6.6-.8 9.4-8.9 4.7-13.6L290 787.6 423.7 654c3.1-3.1 3.1-8.2 0-11.3l-42.4-42.4z\" } }] }, \"name\": \"fullscreen\", \"theme\": \"outlined\" };\nexport default FullscreenOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport FullscreenOutlinedSvg from \"@ant-design/icons-svg/es/asn/FullscreenOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar FullscreenOutlined = function FullscreenOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: FullscreenOutlinedSvg\n  }));\n};\n\n/**![fullscreen](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTI5MCAyMzYuNGw0My45LTQzLjlhOC4wMSA4LjAxIDAgMDAtNC43LTEzLjZMMTY5IDE2MGMtNS4xLS42LTkuNSAzLjctOC45IDguOUwxNzkgMzI5LjFjLjggNi42IDguOSA5LjQgMTMuNiA0LjdsNDMuNy00My43TDM3MCA0MjMuN2MzLjEgMy4xIDguMiAzLjEgMTEuMyAwbDQyLjQtNDIuM2MzLjEtMy4xIDMuMS04LjIgMC0xMS4zTDI5MCAyMzYuNHptMzUyLjcgMTg3LjNjMy4xIDMuMSA4LjIgMy4xIDExLjMgMGwxMzMuNy0xMzMuNiA0My43IDQzLjdhOC4wMSA4LjAxIDAgMDAxMy42LTQuN0w4NjMuOSAxNjljLjYtNS4xLTMuNy05LjUtOC45LTguOUw2OTQuOCAxNzljLTYuNi44LTkuNCA4LjktNC43IDEzLjZsNDMuOSA0My45TDYwMC4zIDM3MGE4LjAzIDguMDMgMCAwMDAgMTEuM2w0Mi40IDQyLjR6TTg0NSA2OTQuOWMtLjgtNi42LTguOS05LjQtMTMuNi00LjdsLTQzLjcgNDMuN0w2NTQgNjAwLjNhOC4wMyA4LjAzIDAgMDAtMTEuMyAwbC00Mi40IDQyLjNhOC4wMyA4LjAzIDAgMDAwIDExLjNMNzM0IDc4Ny42bC00My45IDQzLjlhOC4wMSA4LjAxIDAgMDA0LjcgMTMuNkw4NTUgODY0YzUuMS42IDkuNS0zLjcgOC45LTguOUw4NDUgNjk0Ljl6bS00NjMuNy05NC42YTguMDMgOC4wMyAwIDAwLTExLjMgMEwyMzYuMyA3MzMuOWwtNDMuNy00My43YTguMDEgOC4wMSAwIDAwLTEzLjYgNC43TDE2MC4xIDg1NWMtLjYgNS4xIDMuNyA5LjUgOC45IDguOUwzMjkuMiA4NDVjNi42LS44IDkuNC04LjkgNC43LTEzLjZMMjkwIDc4Ny42IDQyMy43IDY1NGMzLjEtMy4xIDMuMS04LjIgMC0xMS4zbC00Mi40LTQyLjR6IiAvPjwvc3ZnPg==) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(FullscreenOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'FullscreenOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar PauseCircleTwoTone = { \"icon\": function render(primaryColor, secondaryColor) { return { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\", \"fill\": primaryColor } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm-80 524c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V360c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v304zm224 0c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V360c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v304z\", \"fill\": secondaryColor } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M424 352h-48c-4.4 0-8 3.6-8 8v304c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8zm224 0h-48c-4.4 0-8 3.6-8 8v304c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8z\", \"fill\": primaryColor } }] }; }, \"name\": \"pause-circle\", \"theme\": \"twotone\" };\nexport default PauseCircleTwoTone;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport PauseCircleTwoToneSvg from \"@ant-design/icons-svg/es/asn/PauseCircleTwoTone\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar PauseCircleTwoTone = function PauseCircleTwoTone(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: PauseCircleTwoToneSvg\n  }));\n};\n\n/**![pause-circle](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0wIDgyMGMtMjA1LjQgMC0zNzItMTY2LjYtMzcyLTM3MnMxNjYuNi0zNzIgMzcyLTM3MiAzNzIgMTY2LjYgMzcyIDM3Mi0xNjYuNiAzNzItMzcyIDM3MnoiIGZpbGw9IiMxNjc3ZmYiIC8+PHBhdGggZD0iTTUxMiAxNDBjLTIwNS40IDAtMzcyIDE2Ni42LTM3MiAzNzJzMTY2LjYgMzcyIDM3MiAzNzIgMzcyLTE2Ni42IDM3Mi0zNzItMTY2LjYtMzcyLTM3Mi0zNzJ6bS04MCA1MjRjMCA0LjQtMy42IDgtOCA4aC00OGMtNC40IDAtOC0zLjYtOC04VjM2MGMwLTQuNCAzLjYtOCA4LThoNDhjNC40IDAgOCAzLjYgOCA4djMwNHptMjI0IDBjMCA0LjQtMy42IDgtOCA4aC00OGMtNC40IDAtOC0zLjYtOC04VjM2MGMwLTQuNCAzLjYtOCA4LThoNDhjNC40IDAgOCAzLjYgOCA4djMwNHoiIGZpbGw9IiNlNmY0ZmYiIC8+PHBhdGggZD0iTTQyNCAzNTJoLTQ4Yy00LjQgMC04IDMuNi04IDh2MzA0YzAgNC40IDMuNiA4IDggOGg0OGM0LjQgMCA4LTMuNiA4LThWMzYwYzAtNC40LTMuNi04LTgtOHptMjI0IDBoLTQ4Yy00LjQgMC04IDMuNi04IDh2MzA0YzAgNC40IDMuNiA4IDggOGg0OGM0LjQgMCA4LTMuNiA4LThWMzYwYzAtNC40LTMuNi04LTgtOHoiIGZpbGw9IiMxNjc3ZmYiIC8+PC9zdmc+) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(PauseCircleTwoTone);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'PauseCircleTwoTone';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar PlayCircleTwoTone = { \"icon\": function render(primaryColor, secondaryColor) { return { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\", \"fill\": primaryColor } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm164.1 378.2L457.7 677.1a8.02 8.02 0 01-12.7-6.5V353a8 8 0 0112.7-6.5l218.4 158.8a7.9 7.9 0 010 12.9z\", \"fill\": secondaryColor } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M676.1 505.3L457.7 346.5A8 8 0 00445 353v317.6a8.02 8.02 0 0012.7 6.5l218.4-158.9a7.9 7.9 0 000-12.9z\", \"fill\": primaryColor } }] }; }, \"name\": \"play-circle\", \"theme\": \"twotone\" };\nexport default PlayCircleTwoTone;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport PlayCircleTwoToneSvg from \"@ant-design/icons-svg/es/asn/PlayCircleTwoTone\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar PlayCircleTwoTone = function PlayCircleTwoTone(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: PlayCircleTwoToneSvg\n  }));\n};\n\n/**![play-circle](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0wIDgyMGMtMjA1LjQgMC0zNzItMTY2LjYtMzcyLTM3MnMxNjYuNi0zNzIgMzcyLTM3MiAzNzIgMTY2LjYgMzcyIDM3Mi0xNjYuNiAzNzItMzcyIDM3MnoiIGZpbGw9IiMxNjc3ZmYiIC8+PHBhdGggZD0iTTUxMiAxNDBjLTIwNS40IDAtMzcyIDE2Ni42LTM3MiAzNzJzMTY2LjYgMzcyIDM3MiAzNzIgMzcyLTE2Ni42IDM3Mi0zNzItMTY2LjYtMzcyLTM3Mi0zNzJ6bTE2NC4xIDM3OC4yTDQ1Ny43IDY3Ny4xYTguMDIgOC4wMiAwIDAxLTEyLjctNi41VjM1M2E4IDggMCAwMTEyLjctNi41bDIxOC40IDE1OC44YTcuOSA3LjkgMCAwMTAgMTIuOXoiIGZpbGw9IiNlNmY0ZmYiIC8+PHBhdGggZD0iTTY3Ni4xIDUwNS4zTDQ1Ny43IDM0Ni41QTggOCAwIDAwNDQ1IDM1M3YzMTcuNmE4LjAyIDguMDIgMCAwMDEyLjcgNi41bDIxOC40LTE1OC45YTcuOSA3LjkgMCAwMDAtMTIuOXoiIGZpbGw9IiMxNjc3ZmYiIC8+PC9zdmc+) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(PlayCircleTwoTone);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'PlayCircleTwoTone';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar SettingOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M924.8 625.7l-65.5-56c3.1-19 4.7-38.4 4.7-57.8s-1.6-38.8-4.7-57.8l65.5-56a32.03 32.03 0 009.3-35.2l-.9-2.6a443.74 443.74 0 00-79.7-137.9l-1.8-2.1a32.12 32.12 0 00-35.1-9.5l-81.3 28.9c-30-24.6-63.5-44-99.7-57.6l-15.7-85a32.05 32.05 0 00-25.8-25.7l-2.7-.5c-52.1-9.4-106.9-9.4-159 0l-2.7.5a32.05 32.05 0 00-25.8 25.7l-15.8 85.4a351.86 351.86 0 00-99 57.4l-81.9-29.1a32 32 0 00-35.1 9.5l-1.8 2.1a446.02 446.02 0 00-79.7 137.9l-.9 2.6c-4.5 12.5-.8 26.5 9.3 35.2l66.3 56.6c-3.1 18.8-4.6 38-4.6 57.1 0 19.2 1.5 38.4 4.6 57.1L99 625.5a32.03 32.03 0 00-9.3 35.2l.9 2.6c18.1 50.4 44.9 96.9 79.7 137.9l1.8 2.1a32.12 32.12 0 0035.1 9.5l81.9-29.1c29.8 24.5 63.1 43.9 99 57.4l15.8 85.4a32.05 32.05 0 0025.8 25.7l2.7.5a449.4 449.4 0 00159 0l2.7-.5a32.05 32.05 0 0025.8-25.7l15.7-85a350 350 0 0099.7-57.6l81.3 28.9a32 32 0 0035.1-9.5l1.8-2.1c34.8-41.1 61.6-87.5 79.7-137.9l.9-2.6c4.5-12.3.8-26.3-9.3-35zM788.3 465.9c2.5 15.1 3.8 30.6 3.8 46.1s-1.3 31-3.8 46.1l-6.6 40.1 74.7 63.9a370.03 370.03 0 01-42.6 73.6L721 702.8l-31.4 25.8c-23.9 19.6-50.5 35-79.3 45.8l-38.1 14.3-17.9 97a377.5 377.5 0 01-85 0l-17.9-97.2-37.8-14.5c-28.5-10.8-55-26.2-78.7-45.7l-31.4-25.9-93.4 33.2c-17-22.9-31.2-47.6-42.6-73.6l75.5-64.5-6.5-40c-2.4-14.9-3.7-30.3-3.7-45.5 0-15.3 1.2-30.6 3.7-45.5l6.5-40-75.5-64.5c11.3-26.1 25.6-50.7 42.6-73.6l93.4 33.2 31.4-25.9c23.7-19.5 50.2-34.9 78.7-45.7l37.9-14.3 17.9-97.2c28.1-3.2 56.8-3.2 85 0l17.9 97 38.1 14.3c28.7 10.8 55.4 26.2 79.3 45.8l31.4 25.8 92.8-32.9c17 22.9 31.2 47.6 42.6 73.6L781.8 426l6.5 39.9zM512 326c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 01512 614c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 01400 502c0-29.9 11.7-58 32.8-79.2C454 401.6 482.1 390 512 390c29.9 0 58 11.6 79.2 32.8A111.6 111.6 0 01624 502c0 29.9-11.7 58-32.8 79.2z\" } }] }, \"name\": \"setting\", \"theme\": \"outlined\" };\nexport default SettingOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport SettingOutlinedSvg from \"@ant-design/icons-svg/es/asn/SettingOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar SettingOutlined = function SettingOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: SettingOutlinedSvg\n  }));\n};\n\n/**![setting](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTkyNC44IDYyNS43bC02NS41LTU2YzMuMS0xOSA0LjctMzguNCA0LjctNTcuOHMtMS42LTM4LjgtNC43LTU3LjhsNjUuNS01NmEzMi4wMyAzMi4wMyAwIDAwOS4zLTM1LjJsLS45LTIuNmE0NDMuNzQgNDQzLjc0IDAgMDAtNzkuNy0xMzcuOWwtMS44LTIuMWEzMi4xMiAzMi4xMiAwIDAwLTM1LjEtOS41bC04MS4zIDI4LjljLTMwLTI0LjYtNjMuNS00NC05OS43LTU3LjZsLTE1LjctODVhMzIuMDUgMzIuMDUgMCAwMC0yNS44LTI1LjdsLTIuNy0uNWMtNTIuMS05LjQtMTA2LjktOS40LTE1OSAwbC0yLjcuNWEzMi4wNSAzMi4wNSAwIDAwLTI1LjggMjUuN2wtMTUuOCA4NS40YTM1MS44NiAzNTEuODYgMCAwMC05OSA1Ny40bC04MS45LTI5LjFhMzIgMzIgMCAwMC0zNS4xIDkuNWwtMS44IDIuMWE0NDYuMDIgNDQ2LjAyIDAgMDAtNzkuNyAxMzcuOWwtLjkgMi42Yy00LjUgMTIuNS0uOCAyNi41IDkuMyAzNS4ybDY2LjMgNTYuNmMtMy4xIDE4LjgtNC42IDM4LTQuNiA1Ny4xIDAgMTkuMiAxLjUgMzguNCA0LjYgNTcuMUw5OSA2MjUuNWEzMi4wMyAzMi4wMyAwIDAwLTkuMyAzNS4ybC45IDIuNmMxOC4xIDUwLjQgNDQuOSA5Ni45IDc5LjcgMTM3LjlsMS44IDIuMWEzMi4xMiAzMi4xMiAwIDAwMzUuMSA5LjVsODEuOS0yOS4xYzI5LjggMjQuNSA2My4xIDQzLjkgOTkgNTcuNGwxNS44IDg1LjRhMzIuMDUgMzIuMDUgMCAwMDI1LjggMjUuN2wyLjcuNWE0NDkuNCA0NDkuNCAwIDAwMTU5IDBsMi43LS41YTMyLjA1IDMyLjA1IDAgMDAyNS44LTI1LjdsMTUuNy04NWEzNTAgMzUwIDAgMDA5OS43LTU3LjZsODEuMyAyOC45YTMyIDMyIDAgMDAzNS4xLTkuNWwxLjgtMi4xYzM0LjgtNDEuMSA2MS42LTg3LjUgNzkuNy0xMzcuOWwuOS0yLjZjNC41LTEyLjMuOC0yNi4zLTkuMy0zNXpNNzg4LjMgNDY1LjljMi41IDE1LjEgMy44IDMwLjYgMy44IDQ2LjFzLTEuMyAzMS0zLjggNDYuMWwtNi42IDQwLjEgNzQuNyA2My45YTM3MC4wMyAzNzAuMDMgMCAwMS00Mi42IDczLjZMNzIxIDcwMi44bC0zMS40IDI1LjhjLTIzLjkgMTkuNi01MC41IDM1LTc5LjMgNDUuOGwtMzguMSAxNC4zLTE3LjkgOTdhMzc3LjUgMzc3LjUgMCAwMS04NSAwbC0xNy45LTk3LjItMzcuOC0xNC41Yy0yOC41LTEwLjgtNTUtMjYuMi03OC43LTQ1LjdsLTMxLjQtMjUuOS05My40IDMzLjJjLTE3LTIyLjktMzEuMi00Ny42LTQyLjYtNzMuNmw3NS41LTY0LjUtNi41LTQwYy0yLjQtMTQuOS0zLjctMzAuMy0zLjctNDUuNSAwLTE1LjMgMS4yLTMwLjYgMy43LTQ1LjVsNi41LTQwLTc1LjUtNjQuNWMxMS4zLTI2LjEgMjUuNi01MC43IDQyLjYtNzMuNmw5My40IDMzLjIgMzEuNC0yNS45YzIzLjctMTkuNSA1MC4yLTM0LjkgNzguNy00NS43bDM3LjktMTQuMyAxNy45LTk3LjJjMjguMS0zLjIgNTYuOC0zLjIgODUgMGwxNy45IDk3IDM4LjEgMTQuM2MyOC43IDEwLjggNTUuNCAyNi4yIDc5LjMgNDUuOGwzMS40IDI1LjggOTIuOC0zMi45YzE3IDIyLjkgMzEuMiA0Ny42IDQyLjYgNzMuNkw3ODEuOCA0MjZsNi41IDM5Ljl6TTUxMiAzMjZjLTk3LjIgMC0xNzYgNzguOC0xNzYgMTc2czc4LjggMTc2IDE3NiAxNzYgMTc2LTc4LjggMTc2LTE3Ni03OC44LTE3Ni0xNzYtMTc2em03OS4yIDI1NS4yQTExMS42IDExMS42IDAgMDE1MTIgNjE0Yy0yOS45IDAtNTgtMTEuNy03OS4yLTMyLjhBMTExLjYgMTExLjYgMCAwMTQwMCA1MDJjMC0yOS45IDExLjctNTggMzIuOC03OS4yQzQ1NCA0MDEuNiA0ODIuMSAzOTAgNTEyIDM5MGMyOS45IDAgNTggMTEuNiA3OS4yIDMyLjhBMTExLjYgMTExLjYgMCAwMTYyNCA1MDJjMCAyOS45LTExLjcgNTgtMzIuOCA3OS4yeiIgLz48L3N2Zz4=) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(SettingOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'SettingOutlined';\n}\nexport default RefIcon;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"className\", \"component\", \"viewBox\", \"spin\", \"rotate\", \"tabIndex\", \"onClick\", \"children\"];\n// Seems this is used for iconFont\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useComposeRef } from \"rc-util/es/ref\";\nimport Context from \"./Context\";\nimport { svgBaseProps, warning, useInsertStyles } from \"../utils\";\nvar Icon = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var className = props.className,\n    Component = props.component,\n    viewBox = props.viewBox,\n    spin = props.spin,\n    rotate = props.rotate,\n    tabIndex = props.tabIndex,\n    onClick = props.onClick,\n    children = props.children,\n    restProps = _objectWithoutProperties(props, _excluded);\n  var iconRef = React.useRef();\n  var mergedRef = useComposeRef(iconRef, ref);\n  warning(Boolean(Component || children), 'Should have `component` prop or `children`.');\n  useInsertStyles(iconRef);\n  var _React$useContext = React.useContext(Context),\n    _React$useContext$pre = _React$useContext.prefixCls,\n    prefixCls = _React$useContext$pre === void 0 ? 'anticon' : _React$useContext$pre,\n    rootClassName = _React$useContext.rootClassName;\n  var classString = classNames(rootClassName, prefixCls, _defineProperty({}, \"\".concat(prefixCls, \"-spin\"), !!spin && !!Component), className);\n  var svgClassString = classNames(_defineProperty({}, \"\".concat(prefixCls, \"-spin\"), !!spin));\n  var svgStyle = rotate ? {\n    msTransform: \"rotate(\".concat(rotate, \"deg)\"),\n    transform: \"rotate(\".concat(rotate, \"deg)\")\n  } : undefined;\n  var innerSvgProps = _objectSpread(_objectSpread({}, svgBaseProps), {}, {\n    className: svgClassString,\n    style: svgStyle,\n    viewBox: viewBox\n  });\n  if (!viewBox) {\n    delete innerSvgProps.viewBox;\n  }\n\n  // component > children\n  var renderInnerNode = function renderInnerNode() {\n    if (Component) {\n      return /*#__PURE__*/React.createElement(Component, innerSvgProps, children);\n    }\n    if (children) {\n      warning(Boolean(viewBox) || React.Children.count(children) === 1 && /*#__PURE__*/React.isValidElement(children) && React.Children.only(children).type === 'use', 'Make sure that you provide correct `viewBox`' + ' prop (default `0 0 1024 1024`) to the icon.');\n      return /*#__PURE__*/React.createElement(\"svg\", _extends({}, innerSvgProps, {\n        viewBox: viewBox\n      }), children);\n    }\n    return null;\n  };\n  var iconTabIndex = tabIndex;\n  if (iconTabIndex === undefined && onClick) {\n    iconTabIndex = -1;\n  }\n  return /*#__PURE__*/React.createElement(\"span\", _extends({\n    role: \"img\"\n  }, restProps, {\n    ref: mergedRef,\n    tabIndex: iconTabIndex,\n    onClick: onClick,\n    className: classString\n  }), renderInnerNode());\n});\nIcon.displayName = 'AntdIcon';\nexport default Icon;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"className\", \"checked\", \"defaultChecked\", \"disabled\", \"loadingIcon\", \"checkedChildren\", \"unCheckedChildren\", \"onClick\", \"onChange\", \"onKeyDown\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport KeyCode from \"rc-util/es/KeyCode\";\nvar Switch = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var _classNames;\n  var _ref$prefixCls = _ref.prefixCls,\n    prefixCls = _ref$prefixCls === void 0 ? 'rc-switch' : _ref$prefixCls,\n    className = _ref.className,\n    checked = _ref.checked,\n    defaultChecked = _ref.defaultChecked,\n    disabled = _ref.disabled,\n    loadingIcon = _ref.loadingIcon,\n    checkedChildren = _ref.checkedChildren,\n    unCheckedChildren = _ref.unCheckedChildren,\n    onClick = _ref.onClick,\n    onChange = _ref.onChange,\n    onKeyDown = _ref.onKeyDown,\n    restProps = _objectWithoutProperties(_ref, _excluded);\n  var _useMergedState = useMergedState(false, {\n      value: checked,\n      defaultValue: defaultChecked\n    }),\n    _useMergedState2 = _slicedToArray(_useMergedState, 2),\n    innerChecked = _useMergedState2[0],\n    setInnerChecked = _useMergedState2[1];\n  function triggerChange(newChecked, event) {\n    var mergedChecked = innerChecked;\n    if (!disabled) {\n      mergedChecked = newChecked;\n      setInnerChecked(mergedChecked);\n      onChange === null || onChange === void 0 ? void 0 : onChange(mergedChecked, event);\n    }\n    return mergedChecked;\n  }\n  function onInternalKeyDown(e) {\n    if (e.which === KeyCode.LEFT) {\n      triggerChange(false, e);\n    } else if (e.which === KeyCode.RIGHT) {\n      triggerChange(true, e);\n    }\n    onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(e);\n  }\n  function onInternalClick(e) {\n    var ret = triggerChange(!innerChecked, e);\n    // [Legacy] trigger onClick with value\n    onClick === null || onClick === void 0 ? void 0 : onClick(ret, e);\n  }\n  var switchClassName = classNames(prefixCls, className, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-checked\"), innerChecked), _defineProperty(_classNames, \"\".concat(prefixCls, \"-disabled\"), disabled), _classNames));\n  return /*#__PURE__*/React.createElement(\"button\", _extends({}, restProps, {\n    type: \"button\",\n    role: \"switch\",\n    \"aria-checked\": innerChecked,\n    disabled: disabled,\n    className: switchClassName,\n    ref: ref,\n    onKeyDown: onInternalKeyDown,\n    onClick: onInternalClick\n  }), loadingIcon, /*#__PURE__*/React.createElement(\"span\", {\n    className: \"\".concat(prefixCls, \"-inner\")\n  }, /*#__PURE__*/React.createElement(\"span\", {\n    className: \"\".concat(prefixCls, \"-inner-checked\")\n  }, checkedChildren), /*#__PURE__*/React.createElement(\"span\", {\n    className: \"\".concat(prefixCls, \"-inner-unchecked\")\n  }, unCheckedChildren)));\n});\nSwitch.displayName = 'Switch';\nexport default Switch;","import { unit } from '@ant-design/cssinjs';\nimport { FastColor } from '@ant-design/fast-color';\nimport { genFocusStyle, resetComponent } from '../../style';\nimport { genStyleHooks, mergeToken } from '../../theme/internal';\nconst genSwitchSmallStyle = token => {\n  const {\n    componentCls,\n    trackHeightSM,\n    trackPadding,\n    trackMinWidthSM,\n    innerMinMarginSM,\n    innerMaxMarginSM,\n    handleSizeSM,\n    calc\n  } = token;\n  const switchInnerCls = `${componentCls}-inner`;\n  const trackPaddingCalc = unit(calc(handleSizeSM).add(calc(trackPadding).mul(2)).equal());\n  const innerMaxMarginCalc = unit(calc(innerMaxMarginSM).mul(2).equal());\n  return {\n    [componentCls]: {\n      [`&${componentCls}-small`]: {\n        minWidth: trackMinWidthSM,\n        height: trackHeightSM,\n        lineHeight: unit(trackHeightSM),\n        [`${componentCls}-inner`]: {\n          paddingInlineStart: innerMaxMarginSM,\n          paddingInlineEnd: innerMinMarginSM,\n          [`${switchInnerCls}-checked, ${switchInnerCls}-unchecked`]: {\n            minHeight: trackHeightSM\n          },\n          [`${switchInnerCls}-checked`]: {\n            marginInlineStart: `calc(-100% + ${trackPaddingCalc} - ${innerMaxMarginCalc})`,\n            marginInlineEnd: `calc(100% - ${trackPaddingCalc} + ${innerMaxMarginCalc})`\n          },\n          [`${switchInnerCls}-unchecked`]: {\n            marginTop: calc(trackHeightSM).mul(-1).equal(),\n            marginInlineStart: 0,\n            marginInlineEnd: 0\n          }\n        },\n        [`${componentCls}-handle`]: {\n          width: handleSizeSM,\n          height: handleSizeSM\n        },\n        [`${componentCls}-loading-icon`]: {\n          top: calc(calc(handleSizeSM).sub(token.switchLoadingIconSize)).div(2).equal(),\n          fontSize: token.switchLoadingIconSize\n        },\n        [`&${componentCls}-checked`]: {\n          [`${componentCls}-inner`]: {\n            paddingInlineStart: innerMinMarginSM,\n            paddingInlineEnd: innerMaxMarginSM,\n            [`${switchInnerCls}-checked`]: {\n              marginInlineStart: 0,\n              marginInlineEnd: 0\n            },\n            [`${switchInnerCls}-unchecked`]: {\n              marginInlineStart: `calc(100% - ${trackPaddingCalc} + ${innerMaxMarginCalc})`,\n              marginInlineEnd: `calc(-100% + ${trackPaddingCalc} - ${innerMaxMarginCalc})`\n            }\n          },\n          [`${componentCls}-handle`]: {\n            insetInlineStart: `calc(100% - ${unit(calc(handleSizeSM).add(trackPadding).equal())})`\n          }\n        },\n        [`&:not(${componentCls}-disabled):active`]: {\n          [`&:not(${componentCls}-checked) ${switchInnerCls}`]: {\n            [`${switchInnerCls}-unchecked`]: {\n              marginInlineStart: calc(token.marginXXS).div(2).equal(),\n              marginInlineEnd: calc(token.marginXXS).mul(-1).div(2).equal()\n            }\n          },\n          [`&${componentCls}-checked ${switchInnerCls}`]: {\n            [`${switchInnerCls}-checked`]: {\n              marginInlineStart: calc(token.marginXXS).mul(-1).div(2).equal(),\n              marginInlineEnd: calc(token.marginXXS).div(2).equal()\n            }\n          }\n        }\n      }\n    }\n  };\n};\nconst genSwitchLoadingStyle = token => {\n  const {\n    componentCls,\n    handleSize,\n    calc\n  } = token;\n  return {\n    [componentCls]: {\n      [`${componentCls}-loading-icon${token.iconCls}`]: {\n        position: 'relative',\n        top: calc(calc(handleSize).sub(token.fontSize)).div(2).equal(),\n        color: token.switchLoadingIconColor,\n        verticalAlign: 'top'\n      },\n      [`&${componentCls}-checked ${componentCls}-loading-icon`]: {\n        color: token.switchColor\n      }\n    }\n  };\n};\nconst genSwitchHandleStyle = token => {\n  const {\n    componentCls,\n    trackPadding,\n    handleBg,\n    handleShadow,\n    handleSize,\n    calc\n  } = token;\n  const switchHandleCls = `${componentCls}-handle`;\n  return {\n    [componentCls]: {\n      [switchHandleCls]: {\n        position: 'absolute',\n        top: trackPadding,\n        insetInlineStart: trackPadding,\n        width: handleSize,\n        height: handleSize,\n        transition: `all ${token.switchDuration} ease-in-out`,\n        '&::before': {\n          position: 'absolute',\n          top: 0,\n          insetInlineEnd: 0,\n          bottom: 0,\n          insetInlineStart: 0,\n          backgroundColor: handleBg,\n          borderRadius: calc(handleSize).div(2).equal(),\n          boxShadow: handleShadow,\n          transition: `all ${token.switchDuration} ease-in-out`,\n          content: '\"\"'\n        }\n      },\n      [`&${componentCls}-checked ${switchHandleCls}`]: {\n        insetInlineStart: `calc(100% - ${unit(calc(handleSize).add(trackPadding).equal())})`\n      },\n      [`&:not(${componentCls}-disabled):active`]: {\n        [`${switchHandleCls}::before`]: {\n          insetInlineEnd: token.switchHandleActiveInset,\n          insetInlineStart: 0\n        },\n        [`&${componentCls}-checked ${switchHandleCls}::before`]: {\n          insetInlineEnd: 0,\n          insetInlineStart: token.switchHandleActiveInset\n        }\n      }\n    }\n  };\n};\nconst genSwitchInnerStyle = token => {\n  const {\n    componentCls,\n    trackHeight,\n    trackPadding,\n    innerMinMargin,\n    innerMaxMargin,\n    handleSize,\n    calc\n  } = token;\n  const switchInnerCls = `${componentCls}-inner`;\n  const trackPaddingCalc = unit(calc(handleSize).add(calc(trackPadding).mul(2)).equal());\n  const innerMaxMarginCalc = unit(calc(innerMaxMargin).mul(2).equal());\n  return {\n    [componentCls]: {\n      [switchInnerCls]: {\n        display: 'block',\n        overflow: 'hidden',\n        borderRadius: 100,\n        height: '100%',\n        paddingInlineStart: innerMaxMargin,\n        paddingInlineEnd: innerMinMargin,\n        transition: `padding-inline-start ${token.switchDuration} ease-in-out, padding-inline-end ${token.switchDuration} ease-in-out`,\n        [`${switchInnerCls}-checked, ${switchInnerCls}-unchecked`]: {\n          display: 'block',\n          color: token.colorTextLightSolid,\n          fontSize: token.fontSizeSM,\n          transition: `margin-inline-start ${token.switchDuration} ease-in-out, margin-inline-end ${token.switchDuration} ease-in-out`,\n          pointerEvents: 'none',\n          minHeight: trackHeight\n        },\n        [`${switchInnerCls}-checked`]: {\n          marginInlineStart: `calc(-100% + ${trackPaddingCalc} - ${innerMaxMarginCalc})`,\n          marginInlineEnd: `calc(100% - ${trackPaddingCalc} + ${innerMaxMarginCalc})`\n        },\n        [`${switchInnerCls}-unchecked`]: {\n          marginTop: calc(trackHeight).mul(-1).equal(),\n          marginInlineStart: 0,\n          marginInlineEnd: 0\n        }\n      },\n      [`&${componentCls}-checked ${switchInnerCls}`]: {\n        paddingInlineStart: innerMinMargin,\n        paddingInlineEnd: innerMaxMargin,\n        [`${switchInnerCls}-checked`]: {\n          marginInlineStart: 0,\n          marginInlineEnd: 0\n        },\n        [`${switchInnerCls}-unchecked`]: {\n          marginInlineStart: `calc(100% - ${trackPaddingCalc} + ${innerMaxMarginCalc})`,\n          marginInlineEnd: `calc(-100% + ${trackPaddingCalc} - ${innerMaxMarginCalc})`\n        }\n      },\n      [`&:not(${componentCls}-disabled):active`]: {\n        [`&:not(${componentCls}-checked) ${switchInnerCls}`]: {\n          [`${switchInnerCls}-unchecked`]: {\n            marginInlineStart: calc(trackPadding).mul(2).equal(),\n            marginInlineEnd: calc(trackPadding).mul(-1).mul(2).equal()\n          }\n        },\n        [`&${componentCls}-checked ${switchInnerCls}`]: {\n          [`${switchInnerCls}-checked`]: {\n            marginInlineStart: calc(trackPadding).mul(-1).mul(2).equal(),\n            marginInlineEnd: calc(trackPadding).mul(2).equal()\n          }\n        }\n      }\n    }\n  };\n};\nconst genSwitchStyle = token => {\n  const {\n    componentCls,\n    trackHeight,\n    trackMinWidth\n  } = token;\n  return {\n    [componentCls]: Object.assign(Object.assign(Object.assign(Object.assign({}, resetComponent(token)), {\n      position: 'relative',\n      display: 'inline-block',\n      boxSizing: 'border-box',\n      minWidth: trackMinWidth,\n      height: trackHeight,\n      lineHeight: unit(trackHeight),\n      verticalAlign: 'middle',\n      background: token.colorTextQuaternary,\n      border: '0',\n      borderRadius: 100,\n      cursor: 'pointer',\n      transition: `all ${token.motionDurationMid}`,\n      userSelect: 'none',\n      [`&:hover:not(${componentCls}-disabled)`]: {\n        background: token.colorTextTertiary\n      }\n    }), genFocusStyle(token)), {\n      [`&${componentCls}-checked`]: {\n        background: token.switchColor,\n        [`&:hover:not(${componentCls}-disabled)`]: {\n          background: token.colorPrimaryHover\n        }\n      },\n      [`&${componentCls}-loading, &${componentCls}-disabled`]: {\n        cursor: 'not-allowed',\n        opacity: token.switchDisabledOpacity,\n        '*': {\n          boxShadow: 'none',\n          cursor: 'not-allowed'\n        }\n      },\n      // rtl style\n      [`&${componentCls}-rtl`]: {\n        direction: 'rtl'\n      }\n    })\n  };\n};\n// ============================== Export ==============================\nexport const prepareComponentToken = token => {\n  const {\n    fontSize,\n    lineHeight,\n    controlHeight,\n    colorWhite\n  } = token;\n  const height = fontSize * lineHeight;\n  const heightSM = controlHeight / 2;\n  const padding = 2; // Fixed value\n  const handleSize = height - padding * 2;\n  const handleSizeSM = heightSM - padding * 2;\n  return {\n    trackHeight: height,\n    trackHeightSM: heightSM,\n    trackMinWidth: handleSize * 2 + padding * 4,\n    trackMinWidthSM: handleSizeSM * 2 + padding * 2,\n    trackPadding: padding,\n    // Fixed value\n    handleBg: colorWhite,\n    handleSize,\n    handleSizeSM,\n    handleShadow: `0 2px 4px 0 ${new FastColor('#00230b').setA(0.2).toRgbString()}`,\n    innerMinMargin: handleSize / 2,\n    innerMaxMargin: handleSize + padding + padding * 2,\n    innerMinMarginSM: handleSizeSM / 2,\n    innerMaxMarginSM: handleSizeSM + padding + padding * 2\n  };\n};\nexport default genStyleHooks('Switch', token => {\n  const switchToken = mergeToken(token, {\n    switchDuration: token.motionDurationMid,\n    switchColor: token.colorPrimary,\n    switchDisabledOpacity: token.opacityLoading,\n    switchLoadingIconSize: token.calc(token.fontSizeIcon).mul(0.75).equal(),\n    switchLoadingIconColor: `rgba(0, 0, 0, ${token.opacityLoading})`,\n    switchHandleActiveInset: '-30%'\n  });\n  return [genSwitchStyle(switchToken),\n  // inner style\n  genSwitchInnerStyle(switchToken),\n  // handle style\n  genSwitchHandleStyle(switchToken),\n  // loading style\n  genSwitchLoadingStyle(switchToken),\n  // small style\n  genSwitchSmallStyle(switchToken)];\n}, prepareComponentToken);","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport LoadingOutlined from \"@ant-design/icons/es/icons/LoadingOutlined\";\nimport classNames from 'classnames';\nimport RcSwitch from 'rc-switch';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport Wave from '../_util/wave';\nimport { ConfigContext } from '../config-provider';\nimport DisabledContext from '../config-provider/DisabledContext';\nimport useSize from '../config-provider/hooks/useSize';\nimport useStyle from './style';\nconst InternalSwitch = /*#__PURE__*/React.forwardRef((props, ref) => {\n  const {\n      prefixCls: customizePrefixCls,\n      size: customizeSize,\n      disabled: customDisabled,\n      loading,\n      className,\n      rootClassName,\n      style,\n      checked: checkedProp,\n      value,\n      defaultChecked: defaultCheckedProp,\n      defaultValue,\n      onChange\n    } = props,\n    restProps = __rest(props, [\"prefixCls\", \"size\", \"disabled\", \"loading\", \"className\", \"rootClassName\", \"style\", \"checked\", \"value\", \"defaultChecked\", \"defaultValue\", \"onChange\"]);\n  const [checked, setChecked] = useMergedState(false, {\n    value: checkedProp !== null && checkedProp !== void 0 ? checkedProp : value,\n    defaultValue: defaultCheckedProp !== null && defaultCheckedProp !== void 0 ? defaultCheckedProp : defaultValue\n  });\n  const {\n    getPrefixCls,\n    direction,\n    switch: SWITCH\n  } = React.useContext(ConfigContext);\n  // ===================== Disabled =====================\n  const disabled = React.useContext(DisabledContext);\n  const mergedDisabled = (customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled) || loading;\n  const prefixCls = getPrefixCls('switch', customizePrefixCls);\n  const loadingIcon = /*#__PURE__*/React.createElement(\"div\", {\n    className: `${prefixCls}-handle`\n  }, loading && /*#__PURE__*/React.createElement(LoadingOutlined, {\n    className: `${prefixCls}-loading-icon`\n  }));\n  // Style\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  const mergedSize = useSize(customizeSize);\n  const classes = classNames(SWITCH === null || SWITCH === void 0 ? void 0 : SWITCH.className, {\n    [`${prefixCls}-small`]: mergedSize === 'small',\n    [`${prefixCls}-loading`]: loading,\n    [`${prefixCls}-rtl`]: direction === 'rtl'\n  }, className, rootClassName, hashId, cssVarCls);\n  const mergedStyle = Object.assign(Object.assign({}, SWITCH === null || SWITCH === void 0 ? void 0 : SWITCH.style), style);\n  const changeHandler = (...args) => {\n    setChecked(args[0]);\n    onChange === null || onChange === void 0 ? void 0 : onChange.apply(void 0, args);\n  };\n  return wrapCSSVar(/*#__PURE__*/React.createElement(Wave, {\n    component: \"Switch\"\n  }, /*#__PURE__*/React.createElement(RcSwitch, Object.assign({}, restProps, {\n    checked: checked,\n    onChange: changeHandler,\n    prefixCls: prefixCls,\n    className: classes,\n    style: mergedStyle,\n    disabled: mergedDisabled,\n    ref: ref,\n    loadingIcon: loadingIcon\n  }))));\n});\nconst Switch = InternalSwitch;\nSwitch.__ANT_SWITCH = true;\nif (process.env.NODE_ENV !== 'production') {\n  Switch.displayName = 'Switch';\n}\nexport default Switch;","\"use client\";\n\nimport getDesignToken from './getDesignToken';\nimport { defaultConfig, DesignTokenContext as InternalDesignTokenContext, useToken as useInternalToken } from './internal';\nimport compactAlgorithm from './themes/compact';\nimport darkAlgorithm from './themes/dark';\nimport defaultAlgorithm from './themes/default';\n// ZombieJ: We export as object to user but array in internal.\n// This is used to minimize the bundle size for antd package but safe to refactor as object also.\n// Please do not export internal `useToken` directly to avoid something export unexpected.\n/** Get current context Design Token. Will be different if you are using nest theme config. */\nfunction useToken() {\n  const [theme, token, hashId] = useInternalToken();\n  return {\n    theme,\n    token,\n    hashId\n  };\n}\nexport default {\n  /** Default seedToken */\n  defaultSeed: defaultConfig.token,\n  useToken,\n  defaultAlgorithm,\n  darkAlgorithm,\n  compactAlgorithm,\n  getDesignToken,\n  /**\n   * @private Private variable\n   * @warring 🔥 Do not use in production. 🔥\n   */\n  defaultConfig,\n  /**\n   * @private Private variable\n   * @warring 🔥 Do not use in production. 🔥\n   */\n  _internalContext: InternalDesignTokenContext\n};","/*\n.typography-title(@fontSize; @fontWeight; @lineHeight; @headingColor; @headingMarginBottom;) {\n margin-bottom: @headingMarginBottom;\n color: @headingColor;\n font-weight: @fontWeight;\n fontSize: @fontSize;\n line-height: @lineHeight;\n}\n*/\nimport { gold } from '@ant-design/colors';\nimport { unit } from '@ant-design/cssinjs';\nimport { operationUnit } from '../../style';\nconst getTitleStyle = (fontSize, lineHeight, color, token) => {\n  const {\n    titleMarginBottom,\n    fontWeightStrong\n  } = token;\n  return {\n    marginBottom: titleMarginBottom,\n    color,\n    fontWeight: fontWeightStrong,\n    fontSize,\n    lineHeight\n  };\n};\nexport const getTitleStyles = token => {\n  const headings = [1, 2, 3, 4, 5];\n  const styles = {};\n  headings.forEach(headingLevel => {\n    styles[`\n      h${headingLevel}&,\n      div&-h${headingLevel},\n      div&-h${headingLevel} > textarea,\n      h${headingLevel}\n    `] = getTitleStyle(token[`fontSizeHeading${headingLevel}`], token[`lineHeightHeading${headingLevel}`], token.colorTextHeading, token);\n  });\n  return styles;\n};\nexport const getLinkStyles = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    'a&, a': Object.assign(Object.assign({}, operationUnit(token)), {\n      userSelect: 'text',\n      [`&[disabled], &${componentCls}-disabled`]: {\n        color: token.colorTextDisabled,\n        cursor: 'not-allowed',\n        '&:active, &:hover': {\n          color: token.colorTextDisabled\n        },\n        '&:active': {\n          pointerEvents: 'none'\n        }\n      }\n    })\n  };\n};\nexport const getResetStyles = token => ({\n  code: {\n    margin: '0 0.2em',\n    paddingInline: '0.4em',\n    paddingBlock: '0.2em 0.1em',\n    fontSize: '85%',\n    fontFamily: token.fontFamilyCode,\n    background: 'rgba(150, 150, 150, 0.1)',\n    border: '1px solid rgba(100, 100, 100, 0.2)',\n    borderRadius: 3\n  },\n  kbd: {\n    margin: '0 0.2em',\n    paddingInline: '0.4em',\n    paddingBlock: '0.15em 0.1em',\n    fontSize: '90%',\n    fontFamily: token.fontFamilyCode,\n    background: 'rgba(150, 150, 150, 0.06)',\n    border: '1px solid rgba(100, 100, 100, 0.2)',\n    borderBottomWidth: 2,\n    borderRadius: 3\n  },\n  mark: {\n    padding: 0,\n    // FIXME hardcode in v4\n    backgroundColor: gold[2]\n  },\n  'u, ins': {\n    textDecoration: 'underline',\n    textDecorationSkipInk: 'auto'\n  },\n  's, del': {\n    textDecoration: 'line-through'\n  },\n  strong: {\n    fontWeight: token.fontWeightStrong\n  },\n  // list\n  'ul, ol': {\n    marginInline: 0,\n    marginBlock: '0 1em',\n    padding: 0,\n    li: {\n      marginInline: '20px 0',\n      marginBlock: 0,\n      paddingInline: '4px 0',\n      paddingBlock: 0\n    }\n  },\n  ul: {\n    listStyleType: 'circle',\n    ul: {\n      listStyleType: 'disc'\n    }\n  },\n  ol: {\n    listStyleType: 'decimal'\n  },\n  // pre & block\n  'pre, blockquote': {\n    margin: '1em 0'\n  },\n  pre: {\n    padding: '0.4em 0.6em',\n    whiteSpace: 'pre-wrap',\n    wordWrap: 'break-word',\n    background: 'rgba(150, 150, 150, 0.1)',\n    border: '1px solid rgba(100, 100, 100, 0.2)',\n    borderRadius: 3,\n    fontFamily: token.fontFamilyCode,\n    // Compatible for marked\n    code: {\n      display: 'inline',\n      margin: 0,\n      padding: 0,\n      fontSize: 'inherit',\n      fontFamily: 'inherit',\n      background: 'transparent',\n      border: 0\n    }\n  },\n  blockquote: {\n    paddingInline: '0.6em 0',\n    paddingBlock: 0,\n    borderInlineStart: '4px solid rgba(100, 100, 100, 0.2)',\n    opacity: 0.85\n  }\n});\nexport const getEditableStyles = token => {\n  const {\n    componentCls,\n    paddingSM\n  } = token;\n  const inputShift = paddingSM;\n  return {\n    '&-edit-content': {\n      position: 'relative',\n      'div&': {\n        insetInlineStart: token.calc(token.paddingSM).mul(-1).equal(),\n        marginTop: token.calc(inputShift).mul(-1).equal(),\n        marginBottom: `calc(1em - ${unit(inputShift)})`\n      },\n      [`${componentCls}-edit-content-confirm`]: {\n        position: 'absolute',\n        insetInlineEnd: token.calc(token.marginXS).add(2).equal(),\n        insetBlockEnd: token.marginXS,\n        color: token.colorIcon,\n        // default style\n        fontWeight: 'normal',\n        fontSize: token.fontSize,\n        fontStyle: 'normal',\n        pointerEvents: 'none'\n      },\n      textarea: {\n        margin: '0!important',\n        // Fix Editable Textarea flash in Firefox\n        MozTransition: 'none',\n        height: '1em'\n      }\n    }\n  };\n};\nexport const getCopyableStyles = token => ({\n  [`${token.componentCls}-copy-success`]: {\n    [`\n    &,\n    &:hover,\n    &:focus`]: {\n      color: token.colorSuccess\n    }\n  },\n  [`${token.componentCls}-copy-icon-only`]: {\n    marginInlineStart: 0\n  }\n});\nexport const getEllipsisStyles = () => ({\n  [`\n  a&-ellipsis,\n  span&-ellipsis\n  `]: {\n    display: 'inline-block',\n    maxWidth: '100%'\n  },\n  '&-ellipsis-single-line': {\n    whiteSpace: 'nowrap',\n    overflow: 'hidden',\n    textOverflow: 'ellipsis',\n    // https://blog.csdn.net/iefreer/article/details/50421025\n    'a&, span&': {\n      verticalAlign: 'bottom'\n    },\n    '> code': {\n      paddingBlock: 0,\n      maxWidth: 'calc(100% - 1.2em)',\n      display: 'inline-block',\n      overflow: 'hidden',\n      textOverflow: 'ellipsis',\n      verticalAlign: 'bottom',\n      // https://github.com/ant-design/ant-design/issues/45953\n      boxSizing: 'content-box'\n    }\n  },\n  '&-ellipsis-multiple-line': {\n    display: '-webkit-box',\n    overflow: 'hidden',\n    WebkitLineClamp: 3,\n    WebkitBoxOrient: 'vertical'\n  }\n});","import { operationUnit } from '../../style';\nimport { genStyleHooks } from '../../theme/internal';\nimport { getCopyableStyles, getEditableStyles, getEllipsisStyles, getLinkStyles, getResetStyles, getTitleStyles } from './mixins';\nconst genTypographyStyle = token => {\n  const {\n    componentCls,\n    titleMarginTop\n  } = token;\n  return {\n    [componentCls]: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({\n      color: token.colorText,\n      wordBreak: 'break-word',\n      lineHeight: token.lineHeight,\n      [`&${componentCls}-secondary`]: {\n        color: token.colorTextDescription\n      },\n      [`&${componentCls}-success`]: {\n        color: token.colorSuccessText\n      },\n      [`&${componentCls}-warning`]: {\n        color: token.colorWarningText\n      },\n      [`&${componentCls}-danger`]: {\n        color: token.colorErrorText,\n        'a&:active, a&:focus': {\n          color: token.colorErrorTextActive\n        },\n        'a&:hover': {\n          color: token.colorErrorTextHover\n        }\n      },\n      [`&${componentCls}-disabled`]: {\n        color: token.colorTextDisabled,\n        cursor: 'not-allowed',\n        userSelect: 'none'\n      },\n      [`\n        div&,\n        p\n      `]: {\n        marginBottom: '1em'\n      }\n    }, getTitleStyles(token)), {\n      [`\n      & + h1${componentCls},\n      & + h2${componentCls},\n      & + h3${componentCls},\n      & + h4${componentCls},\n      & + h5${componentCls}\n      `]: {\n        marginTop: titleMarginTop\n      },\n      [`\n      div,\n      ul,\n      li,\n      p,\n      h1,\n      h2,\n      h3,\n      h4,\n      h5`]: {\n        [`\n        + h1,\n        + h2,\n        + h3,\n        + h4,\n        + h5\n        `]: {\n          marginTop: titleMarginTop\n        }\n      }\n    }), getResetStyles(token)), getLinkStyles(token)), {\n      // Operation\n      [`\n        ${componentCls}-expand,\n        ${componentCls}-collapse,\n        ${componentCls}-edit,\n        ${componentCls}-copy\n      `]: Object.assign(Object.assign({}, operationUnit(token)), {\n        marginInlineStart: token.marginXXS\n      })\n    }), getEditableStyles(token)), getCopyableStyles(token)), getEllipsisStyles()), {\n      '&-rtl': {\n        direction: 'rtl'\n      }\n    })\n  };\n};\nexport const prepareComponentToken = () => ({\n  titleMarginTop: '1.2em',\n  titleMarginBottom: '0.5em'\n});\n// ============================== Export ==============================\nexport default genStyleHooks('Typography', token => [genTypographyStyle(token)], prepareComponentToken);","\"use client\";\n\nimport * as React from 'react';\nimport EnterOutlined from \"@ant-design/icons/es/icons/EnterOutlined\";\nimport classNames from 'classnames';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport { cloneElement } from '../_util/reactNode';\nimport TextArea from '../input/TextArea';\nimport useStyle from './style';\nconst Editable = props => {\n  const {\n    prefixCls,\n    'aria-label': ariaLabel,\n    className,\n    style,\n    direction,\n    maxLength,\n    autoSize = true,\n    value,\n    onSave,\n    onCancel,\n    onEnd,\n    component,\n    enterIcon = /*#__PURE__*/React.createElement(EnterOutlined, null)\n  } = props;\n  const ref = React.useRef(null);\n  const inComposition = React.useRef(false);\n  const lastKeyCode = React.useRef(null);\n  const [current, setCurrent] = React.useState(value);\n  React.useEffect(() => {\n    setCurrent(value);\n  }, [value]);\n  React.useEffect(() => {\n    var _a;\n    if ((_a = ref.current) === null || _a === void 0 ? void 0 : _a.resizableTextArea) {\n      const {\n        textArea\n      } = ref.current.resizableTextArea;\n      textArea.focus();\n      const {\n        length\n      } = textArea.value;\n      textArea.setSelectionRange(length, length);\n    }\n  }, []);\n  const onChange = ({\n    target\n  }) => {\n    setCurrent(target.value.replace(/[\\n\\r]/g, ''));\n  };\n  const onCompositionStart = () => {\n    inComposition.current = true;\n  };\n  const onCompositionEnd = () => {\n    inComposition.current = false;\n  };\n  const onKeyDown = ({\n    keyCode\n  }) => {\n    // We don't record keyCode when IME is using\n    if (inComposition.current) return;\n    lastKeyCode.current = keyCode;\n  };\n  const confirmChange = () => {\n    onSave(current.trim());\n  };\n  const onKeyUp = ({\n    keyCode,\n    ctrlKey,\n    altKey,\n    metaKey,\n    shiftKey\n  }) => {\n    // Check if it's a real key\n    if (lastKeyCode.current !== keyCode || inComposition.current || ctrlKey || altKey || metaKey || shiftKey) {\n      return;\n    }\n    if (keyCode === KeyCode.ENTER) {\n      confirmChange();\n      onEnd === null || onEnd === void 0 ? void 0 : onEnd();\n    } else if (keyCode === KeyCode.ESC) {\n      onCancel();\n    }\n  };\n  const onBlur = () => {\n    confirmChange();\n  };\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  const textAreaClassName = classNames(prefixCls, `${prefixCls}-edit-content`, {\n    [`${prefixCls}-rtl`]: direction === 'rtl',\n    [`${prefixCls}-${component}`]: !!component\n  }, className, hashId, cssVarCls);\n  return wrapCSSVar(/*#__PURE__*/React.createElement(\"div\", {\n    className: textAreaClassName,\n    style: style\n  }, /*#__PURE__*/React.createElement(TextArea, {\n    ref: ref,\n    maxLength: maxLength,\n    value: current,\n    onChange: onChange,\n    onKeyDown: onKeyDown,\n    onKeyUp: onKeyUp,\n    onCompositionStart: onCompositionStart,\n    onCompositionEnd: onCompositionEnd,\n    onBlur: onBlur,\n    \"aria-label\": ariaLabel,\n    rows: 1,\n    autoSize: autoSize\n  }), enterIcon !== null ? cloneElement(enterIcon, {\n    className: `${prefixCls}-edit-content-confirm`\n  }) : null));\n};\nexport default Editable;","\nmodule.exports = function () {\n  var selection = document.getSelection();\n  if (!selection.rangeCount) {\n    return function () {};\n  }\n  var active = document.activeElement;\n\n  var ranges = [];\n  for (var i = 0; i < selection.rangeCount; i++) {\n    ranges.push(selection.getRangeAt(i));\n  }\n\n  switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n    case 'INPUT':\n    case 'TEXTAREA':\n      active.blur();\n      break;\n\n    default:\n      active = null;\n      break;\n  }\n\n  selection.removeAllRanges();\n  return function () {\n    selection.type === 'Caret' &&\n    selection.removeAllRanges();\n\n    if (!selection.rangeCount) {\n      ranges.forEach(function(range) {\n        selection.addRange(range);\n      });\n    }\n\n    active &&\n    active.focus();\n  };\n};\n","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n  \"text/plain\": \"Text\",\n  \"text/html\": \"Url\",\n  \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n  var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n  return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n  var debug,\n    message,\n    reselectPrevious,\n    range,\n    selection,\n    mark,\n    success = false;\n  if (!options) {\n    options = {};\n  }\n  debug = options.debug || false;\n  try {\n    reselectPrevious = deselectCurrent();\n\n    range = document.createRange();\n    selection = document.getSelection();\n\n    mark = document.createElement(\"span\");\n    mark.textContent = text;\n    // avoid screen readers from reading out loud the text\n    mark.ariaHidden = \"true\"\n    // reset user styles for span element\n    mark.style.all = \"unset\";\n    // prevents scrolling to the end of the page\n    mark.style.position = \"fixed\";\n    mark.style.top = 0;\n    mark.style.clip = \"rect(0, 0, 0, 0)\";\n    // used to preserve spaces and line breaks\n    mark.style.whiteSpace = \"pre\";\n    // do not inherit user-select (it may be `none`)\n    mark.style.webkitUserSelect = \"text\";\n    mark.style.MozUserSelect = \"text\";\n    mark.style.msUserSelect = \"text\";\n    mark.style.userSelect = \"text\";\n    mark.addEventListener(\"copy\", function(e) {\n      e.stopPropagation();\n      if (options.format) {\n        e.preventDefault();\n        if (typeof e.clipboardData === \"undefined\") { // IE 11\n          debug && console.warn(\"unable to use e.clipboardData\");\n          debug && console.warn(\"trying IE specific stuff\");\n          window.clipboardData.clearData();\n          var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n          window.clipboardData.setData(format, text);\n        } else { // all other browsers\n          e.clipboardData.clearData();\n          e.clipboardData.setData(options.format, text);\n        }\n      }\n      if (options.onCopy) {\n        e.preventDefault();\n        options.onCopy(e.clipboardData);\n      }\n    });\n\n    document.body.appendChild(mark);\n\n    range.selectNodeContents(mark);\n    selection.addRange(range);\n\n    var successful = document.execCommand(\"copy\");\n    if (!successful) {\n      throw new Error(\"copy command was unsuccessful\");\n    }\n    success = true;\n  } catch (err) {\n    debug && console.error(\"unable to copy using execCommand: \", err);\n    debug && console.warn(\"trying IE specific stuff\");\n    try {\n      window.clipboardData.setData(options.format || \"text\", text);\n      options.onCopy && options.onCopy(window.clipboardData);\n      success = true;\n    } catch (err) {\n      debug && console.error(\"unable to copy using clipboardData: \", err);\n      debug && console.error(\"falling back to prompt\");\n      message = format(\"message\" in options ? options.message : defaultMessage);\n      window.prompt(message, text);\n    }\n  } finally {\n    if (selection) {\n      if (typeof selection.removeRange == \"function\") {\n        selection.removeRange(range);\n      } else {\n        selection.removeAllRanges();\n      }\n    }\n\n    if (mark) {\n      document.body.removeChild(mark);\n    }\n    reselectPrevious();\n  }\n\n  return success;\n}\n\nmodule.exports = copy;\n","var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\nimport * as React from 'react';\nimport copy from 'copy-to-clipboard';\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport toList from '../../_util/toList';\nconst useCopyClick = ({\n  copyConfig,\n  children\n}) => {\n  const [copied, setCopied] = React.useState(false);\n  const [copyLoading, setCopyLoading] = React.useState(false);\n  const copyIdRef = React.useRef(null);\n  const cleanCopyId = () => {\n    if (copyIdRef.current) {\n      clearTimeout(copyIdRef.current);\n    }\n  };\n  const copyOptions = {};\n  if (copyConfig.format) {\n    copyOptions.format = copyConfig.format;\n  }\n  React.useEffect(() => cleanCopyId, []);\n  // Keep copy action up to date\n  const onClick = useEvent(e => __awaiter(void 0, void 0, void 0, function* () {\n    var _a;\n    e === null || e === void 0 ? void 0 : e.preventDefault();\n    e === null || e === void 0 ? void 0 : e.stopPropagation();\n    setCopyLoading(true);\n    try {\n      const text = typeof copyConfig.text === 'function' ? yield copyConfig.text() : copyConfig.text;\n      copy(text || toList(children, true).join('') || '', copyOptions);\n      setCopyLoading(false);\n      setCopied(true);\n      // Trigger tips update\n      cleanCopyId();\n      copyIdRef.current = setTimeout(() => {\n        setCopied(false);\n      }, 3000);\n      (_a = copyConfig.onCopy) === null || _a === void 0 ? void 0 : _a.call(copyConfig, e);\n    } catch (error) {\n      setCopyLoading(false);\n      throw error;\n    }\n  }));\n  return {\n    copied,\n    copyLoading,\n    onClick\n  };\n};\nexport default useCopyClick;","import * as React from 'react';\nexport default function useMergedConfig(propConfig, templateConfig) {\n  return React.useMemo(() => {\n    const support = !!propConfig;\n    return [support, Object.assign(Object.assign({}, templateConfig), support && typeof propConfig === 'object' ? propConfig : null)];\n  }, [propConfig]);\n}","import { useEffect, useRef } from 'react';\nconst usePrevious = value => {\n  const ref = useRef(undefined);\n  useEffect(() => {\n    ref.current = value;\n  });\n  return ref.current;\n};\nexport default usePrevious;","import { isValidElement, useMemo } from 'react';\nconst useTooltipProps = (tooltip, editConfigText, children) => useMemo(() => {\n  if (tooltip === true) {\n    return {\n      title: editConfigText !== null && editConfigText !== void 0 ? editConfigText : children\n    };\n  }\n  if (/*#__PURE__*/isValidElement(tooltip)) {\n    return {\n      title: tooltip\n    };\n  }\n  if (typeof tooltip === 'object') {\n    return Object.assign({\n      title: editConfigText !== null && editConfigText !== void 0 ? editConfigText : children\n    }, tooltip);\n  }\n  return {\n    title: tooltip\n  };\n}, [tooltip, editConfigText, children]);\nexport default useTooltipProps;","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { composeRef } from \"rc-util/es/ref\";\nimport { devUseWarning } from '../_util/warning';\nimport { useComponentConfig } from '../config-provider/context';\nimport useStyle from './style';\nconst Typography = /*#__PURE__*/React.forwardRef((props, ref) => {\n  const {\n      prefixCls: customizePrefixCls,\n      component: Component = 'article',\n      className,\n      rootClassName,\n      setContentRef,\n      children,\n      direction: typographyDirection,\n      style\n    } = props,\n    restProps = __rest(props, [\"prefixCls\", \"component\", \"className\", \"rootClassName\", \"setContentRef\", \"children\", \"direction\", \"style\"]);\n  const {\n    getPrefixCls,\n    direction: contextDirection,\n    className: contextClassName,\n    style: contextStyle\n  } = useComponentConfig('typography');\n  const direction = typographyDirection !== null && typographyDirection !== void 0 ? typographyDirection : contextDirection;\n  const mergedRef = setContentRef ? composeRef(ref, setContentRef) : ref;\n  const prefixCls = getPrefixCls('typography', customizePrefixCls);\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('Typography');\n    warning.deprecated(!setContentRef, 'setContentRef', 'ref');\n  }\n  // Style\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  const componentClassName = classNames(prefixCls, contextClassName, {\n    [`${prefixCls}-rtl`]: direction === 'rtl'\n  }, className, rootClassName, hashId, cssVarCls);\n  const mergedStyle = Object.assign(Object.assign({}, contextStyle), style);\n  return wrapCSSVar(\n  /*#__PURE__*/\n  // @ts-expect-error: Expression produces a union type that is too complex to represent.\n  React.createElement(Component, Object.assign({\n    className: componentClassName,\n    style: mergedStyle,\n    ref: mergedRef\n  }, restProps), children));\n});\nif (process.env.NODE_ENV !== 'production') {\n  Typography.displayName = 'Typography';\n}\nexport default Typography;","export function toList(val) {\n  if (val === false) {\n    return [false, false];\n  }\n  return Array.isArray(val) ? val : [val];\n}\nexport function getNode(dom, defaultNode, needDom) {\n  if (dom === true || dom === undefined) {\n    return defaultNode;\n  }\n  return dom || needDom && defaultNode;\n}\n/**\n * Check for element is native ellipsis\n * ref:\n * - https://github.com/ant-design/ant-design/issues/50143\n * - https://github.com/ant-design/ant-design/issues/50414\n */\nexport function isEleEllipsis(ele) {\n  // Create a new div to get the size\n  const childDiv = document.createElement('em');\n  ele.appendChild(childDiv);\n  // For test case\n  if (process.env.NODE_ENV !== 'production') {\n    childDiv.className = 'ant-typography-css-ellipsis-content-measure';\n  }\n  const rect = ele.getBoundingClientRect();\n  const childRect = childDiv.getBoundingClientRect();\n  // Reset\n  ele.removeChild(childDiv);\n  // Range checker\n  return (\n    // Horizontal out of range\n    rect.left > childRect.left || childRect.right > rect.right ||\n    // Vertical out of range\n    rect.top > childRect.top || childRect.bottom > rect.bottom\n  );\n}\nexport const isValidText = val => ['string', 'number'].includes(typeof val);","\"use client\";\n\nimport * as React from 'react';\nimport CheckOutlined from \"@ant-design/icons/es/icons/CheckOutlined\";\nimport CopyOutlined from \"@ant-design/icons/es/icons/CopyOutlined\";\nimport LoadingOutlined from \"@ant-design/icons/es/icons/LoadingOutlined\";\nimport classNames from 'classnames';\nimport Tooltip from '../../tooltip';\nimport { getNode, toList } from './util';\nconst CopyBtn = ({\n  prefixCls,\n  copied,\n  locale,\n  iconOnly,\n  tooltips,\n  icon,\n  tabIndex,\n  onCopy,\n  loading: btnLoading\n}) => {\n  const tooltipNodes = toList(tooltips);\n  const iconNodes = toList(icon);\n  const {\n    copied: copiedText,\n    copy: copyText\n  } = locale !== null && locale !== void 0 ? locale : {};\n  const systemStr = copied ? copiedText : copyText;\n  const copyTitle = getNode(tooltipNodes[copied ? 1 : 0], systemStr);\n  const ariaLabel = typeof copyTitle === 'string' ? copyTitle : systemStr;\n  return /*#__PURE__*/React.createElement(Tooltip, {\n    title: copyTitle\n  }, /*#__PURE__*/React.createElement(\"button\", {\n    type: \"button\",\n    className: classNames(`${prefixCls}-copy`, {\n      [`${prefixCls}-copy-success`]: copied,\n      [`${prefixCls}-copy-icon-only`]: iconOnly\n    }),\n    onClick: onCopy,\n    \"aria-label\": ariaLabel,\n    tabIndex: tabIndex\n  }, copied ? getNode(iconNodes[1], /*#__PURE__*/React.createElement(CheckOutlined, null), true) : getNode(iconNodes[0], btnLoading ? /*#__PURE__*/React.createElement(LoadingOutlined, null) : /*#__PURE__*/React.createElement(CopyOutlined, null), true)));\n};\nexport default CopyBtn;","\"use client\";\n\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport { isValidText } from './util';\nconst MeasureText = /*#__PURE__*/React.forwardRef(({\n  style,\n  children\n}, ref) => {\n  const spanRef = React.useRef(null);\n  React.useImperativeHandle(ref, () => ({\n    isExceed: () => {\n      const span = spanRef.current;\n      return span.scrollHeight > span.clientHeight;\n    },\n    getHeight: () => spanRef.current.clientHeight\n  }));\n  return /*#__PURE__*/React.createElement(\"span\", {\n    \"aria-hidden\": true,\n    ref: spanRef,\n    style: Object.assign({\n      position: 'fixed',\n      display: 'block',\n      left: 0,\n      top: 0,\n      pointerEvents: 'none',\n      backgroundColor: 'rgba(255, 0, 0, 0.65)'\n    }, style)\n  }, children);\n});\nconst getNodesLen = nodeList => nodeList.reduce((totalLen, node) => totalLen + (isValidText(node) ? String(node).length : 1), 0);\nfunction sliceNodes(nodeList, len) {\n  let currLen = 0;\n  const currentNodeList = [];\n  for (let i = 0; i < nodeList.length; i += 1) {\n    // Match to return\n    if (currLen === len) {\n      return currentNodeList;\n    }\n    const node = nodeList[i];\n    const canCut = isValidText(node);\n    const nodeLen = canCut ? String(node).length : 1;\n    const nextLen = currLen + nodeLen;\n    // Exceed but current not which means we need cut this\n    // This will not happen on validate ReactElement\n    if (nextLen > len) {\n      const restLen = len - currLen;\n      currentNodeList.push(String(node).slice(0, restLen));\n      return currentNodeList;\n    }\n    currentNodeList.push(node);\n    currLen = nextLen;\n  }\n  return nodeList;\n}\n// Measure for the `text` is exceed the `rows` or not\nconst STATUS_MEASURE_NONE = 0;\nconst STATUS_MEASURE_PREPARE = 1;\nconst STATUS_MEASURE_START = 2;\nconst STATUS_MEASURE_NEED_ELLIPSIS = 3;\nconst STATUS_MEASURE_NO_NEED_ELLIPSIS = 4;\nconst lineClipStyle = {\n  display: '-webkit-box',\n  overflow: 'hidden',\n  WebkitBoxOrient: 'vertical'\n};\nexport default function EllipsisMeasure(props) {\n  const {\n    enableMeasure,\n    width,\n    text,\n    children,\n    rows,\n    expanded,\n    miscDeps,\n    onEllipsis\n  } = props;\n  const nodeList = React.useMemo(() => toArray(text), [text]);\n  const nodeLen = React.useMemo(() => getNodesLen(nodeList), [text]);\n  // ========================= Full Content =========================\n  // Used for measure only, which means it's always render as no need ellipsis\n  const fullContent = React.useMemo(() => children(nodeList, false), [text]);\n  // ========================= Cut Content ==========================\n  const [ellipsisCutIndex, setEllipsisCutIndex] = React.useState(null);\n  const cutMidRef = React.useRef(null);\n  // ========================= NeedEllipsis =========================\n  const measureWhiteSpaceRef = React.useRef(null);\n  const needEllipsisRef = React.useRef(null);\n  // Measure for `rows-1` height, to avoid operation exceed the line height\n  const descRowsEllipsisRef = React.useRef(null);\n  const symbolRowEllipsisRef = React.useRef(null);\n  const [canEllipsis, setCanEllipsis] = React.useState(false);\n  const [needEllipsis, setNeedEllipsis] = React.useState(STATUS_MEASURE_NONE);\n  const [ellipsisHeight, setEllipsisHeight] = React.useState(0);\n  const [parentWhiteSpace, setParentWhiteSpace] = React.useState(null);\n  // Trigger start measure\n  useLayoutEffect(() => {\n    if (enableMeasure && width && nodeLen) {\n      setNeedEllipsis(STATUS_MEASURE_PREPARE);\n    } else {\n      setNeedEllipsis(STATUS_MEASURE_NONE);\n    }\n  }, [width, text, rows, enableMeasure, nodeList]);\n  // Measure process\n  useLayoutEffect(() => {\n    var _a, _b, _c, _d;\n    if (needEllipsis === STATUS_MEASURE_PREPARE) {\n      setNeedEllipsis(STATUS_MEASURE_START);\n      // Parent ref `white-space`\n      const nextWhiteSpace = measureWhiteSpaceRef.current && getComputedStyle(measureWhiteSpaceRef.current).whiteSpace;\n      setParentWhiteSpace(nextWhiteSpace);\n    } else if (needEllipsis === STATUS_MEASURE_START) {\n      const isOverflow = !!((_a = needEllipsisRef.current) === null || _a === void 0 ? void 0 : _a.isExceed());\n      setNeedEllipsis(isOverflow ? STATUS_MEASURE_NEED_ELLIPSIS : STATUS_MEASURE_NO_NEED_ELLIPSIS);\n      setEllipsisCutIndex(isOverflow ? [0, nodeLen] : null);\n      setCanEllipsis(isOverflow);\n      // Get the basic height of ellipsis rows\n      const baseRowsEllipsisHeight = ((_b = needEllipsisRef.current) === null || _b === void 0 ? void 0 : _b.getHeight()) || 0;\n      // Get the height of `rows - 1` + symbol height\n      const descRowsEllipsisHeight = rows === 1 ? 0 : ((_c = descRowsEllipsisRef.current) === null || _c === void 0 ? void 0 : _c.getHeight()) || 0;\n      const symbolRowEllipsisHeight = ((_d = symbolRowEllipsisRef.current) === null || _d === void 0 ? void 0 : _d.getHeight()) || 0;\n      const maxRowsHeight = Math.max(baseRowsEllipsisHeight,\n      // height of rows with ellipsis\n      descRowsEllipsisHeight + symbolRowEllipsisHeight);\n      setEllipsisHeight(maxRowsHeight + 1);\n      onEllipsis(isOverflow);\n    }\n  }, [needEllipsis]);\n  // ========================= Cut Measure ==========================\n  const cutMidIndex = ellipsisCutIndex ? Math.ceil((ellipsisCutIndex[0] + ellipsisCutIndex[1]) / 2) : 0;\n  useLayoutEffect(() => {\n    var _a;\n    const [minIndex, maxIndex] = ellipsisCutIndex || [0, 0];\n    if (minIndex !== maxIndex) {\n      const midHeight = ((_a = cutMidRef.current) === null || _a === void 0 ? void 0 : _a.getHeight()) || 0;\n      const isOverflow = midHeight > ellipsisHeight;\n      let targetMidIndex = cutMidIndex;\n      if (maxIndex - minIndex === 1) {\n        targetMidIndex = isOverflow ? minIndex : maxIndex;\n      }\n      setEllipsisCutIndex(isOverflow ? [minIndex, targetMidIndex] : [targetMidIndex, maxIndex]);\n    }\n  }, [ellipsisCutIndex, cutMidIndex]);\n  // ========================= Text Content =========================\n  const finalContent = React.useMemo(() => {\n    // Skip everything if `enableMeasure` is disabled\n    if (!enableMeasure) {\n      return children(nodeList, false);\n    }\n    if (needEllipsis !== STATUS_MEASURE_NEED_ELLIPSIS || !ellipsisCutIndex || ellipsisCutIndex[0] !== ellipsisCutIndex[1]) {\n      const content = children(nodeList, false);\n      // Limit the max line count to avoid scrollbar blink unless no need ellipsis\n      // https://github.com/ant-design/ant-design/issues/42958\n      if ([STATUS_MEASURE_NO_NEED_ELLIPSIS, STATUS_MEASURE_NONE].includes(needEllipsis)) {\n        return content;\n      }\n      return /*#__PURE__*/React.createElement(\"span\", {\n        style: Object.assign(Object.assign({}, lineClipStyle), {\n          WebkitLineClamp: rows\n        })\n      }, content);\n    }\n    return children(expanded ? nodeList : sliceNodes(nodeList, ellipsisCutIndex[0]), canEllipsis);\n  }, [expanded, needEllipsis, ellipsisCutIndex, nodeList].concat(_toConsumableArray(miscDeps)));\n  // ============================ Render ============================\n  const measureStyle = {\n    width,\n    margin: 0,\n    padding: 0,\n    whiteSpace: parentWhiteSpace === 'nowrap' ? 'normal' : 'inherit'\n  };\n  return /*#__PURE__*/React.createElement(React.Fragment, null, finalContent, needEllipsis === STATUS_MEASURE_START && (/*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(MeasureText, {\n    style: Object.assign(Object.assign(Object.assign({}, measureStyle), lineClipStyle), {\n      WebkitLineClamp: rows\n    }),\n    ref: needEllipsisRef\n  }, fullContent), /*#__PURE__*/React.createElement(MeasureText, {\n    style: Object.assign(Object.assign(Object.assign({}, measureStyle), lineClipStyle), {\n      WebkitLineClamp: rows - 1\n    }),\n    ref: descRowsEllipsisRef\n  }, fullContent), /*#__PURE__*/React.createElement(MeasureText, {\n    style: Object.assign(Object.assign(Object.assign({}, measureStyle), lineClipStyle), {\n      WebkitLineClamp: 1\n    }),\n    ref: symbolRowEllipsisRef\n  }, children([], true)))), needEllipsis === STATUS_MEASURE_NEED_ELLIPSIS && ellipsisCutIndex && ellipsisCutIndex[0] !== ellipsisCutIndex[1] && (/*#__PURE__*/React.createElement(MeasureText, {\n    style: Object.assign(Object.assign({}, measureStyle), {\n      top: 400\n    }),\n    ref: cutMidRef\n  }, children(sliceNodes(nodeList, cutMidIndex), true))), needEllipsis === STATUS_MEASURE_PREPARE && (/*#__PURE__*/React.createElement(\"span\", {\n    style: {\n      whiteSpace: 'inherit'\n    },\n    ref: measureWhiteSpaceRef\n  })));\n}","\"use client\";\n\nimport * as React from 'react';\nimport Tooltip from '../../tooltip';\nconst EllipsisTooltip = ({\n  enableEllipsis,\n  isEllipsis,\n  children,\n  tooltipProps\n}) => {\n  if (!(tooltipProps === null || tooltipProps === void 0 ? void 0 : tooltipProps.title) || !enableEllipsis) {\n    return children;\n  }\n  return /*#__PURE__*/React.createElement(Tooltip, Object.assign({\n    open: isEllipsis ? undefined : false\n  }, tooltipProps), children);\n};\nif (process.env.NODE_ENV !== 'production') {\n  EllipsisTooltip.displayName = 'EllipsisTooltip';\n}\nexport default EllipsisTooltip;","\"use client\";\n\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport EditOutlined from \"@ant-design/icons/es/icons/EditOutlined\";\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport omit from \"rc-util/es/omit\";\nimport { composeRef } from \"rc-util/es/ref\";\nimport { isStyleSupport } from '../../_util/styleChecker';\nimport { ConfigContext } from '../../config-provider';\nimport useLocale from '../../locale/useLocale';\nimport Tooltip from '../../tooltip';\nimport Editable from '../Editable';\nimport useCopyClick from '../hooks/useCopyClick';\nimport useMergedConfig from '../hooks/useMergedConfig';\nimport usePrevious from '../hooks/usePrevious';\nimport useTooltipProps from '../hooks/useTooltipProps';\nimport Typography from '../Typography';\nimport CopyBtn from './CopyBtn';\nimport Ellipsis from './Ellipsis';\nimport EllipsisTooltip from './EllipsisTooltip';\nimport { isEleEllipsis, isValidText } from './util';\nfunction wrapperDecorations({\n  mark,\n  code,\n  underline,\n  delete: del,\n  strong,\n  keyboard,\n  italic\n}, content) {\n  let currentContent = content;\n  function wrap(tag, needed) {\n    if (!needed) {\n      return;\n    }\n    currentContent = /*#__PURE__*/React.createElement(tag, {}, currentContent);\n  }\n  wrap('strong', strong);\n  wrap('u', underline);\n  wrap('del', del);\n  wrap('code', code);\n  wrap('mark', mark);\n  wrap('kbd', keyboard);\n  wrap('i', italic);\n  return currentContent;\n}\nconst ELLIPSIS_STR = '...';\nconst DECORATION_PROPS = ['delete', 'mark', 'code', 'underline', 'strong', 'keyboard', 'italic'];\nconst Base = /*#__PURE__*/React.forwardRef((props, ref) => {\n  var _a;\n  const {\n      prefixCls: customizePrefixCls,\n      className,\n      style,\n      type,\n      disabled,\n      children,\n      ellipsis,\n      editable,\n      copyable,\n      component,\n      title\n    } = props,\n    restProps = __rest(props, [\"prefixCls\", \"className\", \"style\", \"type\", \"disabled\", \"children\", \"ellipsis\", \"editable\", \"copyable\", \"component\", \"title\"]);\n  const {\n    getPrefixCls,\n    direction\n  } = React.useContext(ConfigContext);\n  const [textLocale] = useLocale('Text');\n  const typographyRef = React.useRef(null);\n  const editIconRef = React.useRef(null);\n  // ============================ MISC ============================\n  const prefixCls = getPrefixCls('typography', customizePrefixCls);\n  const textProps = omit(restProps, DECORATION_PROPS);\n  // ========================== Editable ==========================\n  const [enableEdit, editConfig] = useMergedConfig(editable);\n  const [editing, setEditing] = useMergedState(false, {\n    value: editConfig.editing\n  });\n  const {\n    triggerType = ['icon']\n  } = editConfig;\n  const triggerEdit = edit => {\n    var _a;\n    if (edit) {\n      (_a = editConfig.onStart) === null || _a === void 0 ? void 0 : _a.call(editConfig);\n    }\n    setEditing(edit);\n  };\n  // Focus edit icon when back\n  const prevEditing = usePrevious(editing);\n  useLayoutEffect(() => {\n    var _a;\n    if (!editing && prevEditing) {\n      (_a = editIconRef.current) === null || _a === void 0 ? void 0 : _a.focus();\n    }\n  }, [editing]);\n  const onEditClick = e => {\n    e === null || e === void 0 ? void 0 : e.preventDefault();\n    triggerEdit(true);\n  };\n  const onEditChange = value => {\n    var _a;\n    (_a = editConfig.onChange) === null || _a === void 0 ? void 0 : _a.call(editConfig, value);\n    triggerEdit(false);\n  };\n  const onEditCancel = () => {\n    var _a;\n    (_a = editConfig.onCancel) === null || _a === void 0 ? void 0 : _a.call(editConfig);\n    triggerEdit(false);\n  };\n  // ========================== Copyable ==========================\n  const [enableCopy, copyConfig] = useMergedConfig(copyable);\n  const {\n    copied,\n    copyLoading,\n    onClick: onCopyClick\n  } = useCopyClick({\n    copyConfig,\n    children\n  });\n  // ========================== Ellipsis ==========================\n  const [isLineClampSupport, setIsLineClampSupport] = React.useState(false);\n  const [isTextOverflowSupport, setIsTextOverflowSupport] = React.useState(false);\n  const [isJsEllipsis, setIsJsEllipsis] = React.useState(false);\n  const [isNativeEllipsis, setIsNativeEllipsis] = React.useState(false);\n  const [isNativeVisible, setIsNativeVisible] = React.useState(true);\n  const [enableEllipsis, ellipsisConfig] = useMergedConfig(ellipsis, {\n    expandable: false,\n    symbol: isExpanded => isExpanded ? textLocale === null || textLocale === void 0 ? void 0 : textLocale.collapse : textLocale === null || textLocale === void 0 ? void 0 : textLocale.expand\n  });\n  const [expanded, setExpanded] = useMergedState(ellipsisConfig.defaultExpanded || false, {\n    value: ellipsisConfig.expanded\n  });\n  const mergedEnableEllipsis = enableEllipsis && (!expanded || ellipsisConfig.expandable === 'collapsible');\n  // Shared prop to reduce bundle size\n  const {\n    rows = 1\n  } = ellipsisConfig;\n  const needMeasureEllipsis = React.useMemo(() =>\n  // Disable ellipsis\n  mergedEnableEllipsis && (\n  // Provide suffix\n  ellipsisConfig.suffix !== undefined || ellipsisConfig.onEllipsis ||\n  // Can't use css ellipsis since we need to provide the place for button\n  ellipsisConfig.expandable || enableEdit || enableCopy), [mergedEnableEllipsis, ellipsisConfig, enableEdit, enableCopy]);\n  useLayoutEffect(() => {\n    if (enableEllipsis && !needMeasureEllipsis) {\n      setIsLineClampSupport(isStyleSupport('webkitLineClamp'));\n      setIsTextOverflowSupport(isStyleSupport('textOverflow'));\n    }\n  }, [needMeasureEllipsis, enableEllipsis]);\n  const [cssEllipsis, setCssEllipsis] = React.useState(mergedEnableEllipsis);\n  const canUseCssEllipsis = React.useMemo(() => {\n    if (needMeasureEllipsis) {\n      return false;\n    }\n    if (rows === 1) {\n      return isTextOverflowSupport;\n    }\n    return isLineClampSupport;\n  }, [needMeasureEllipsis, isTextOverflowSupport, isLineClampSupport]);\n  // We use effect to change from css ellipsis to js ellipsis.\n  // To make SSR still can see the ellipsis.\n  useLayoutEffect(() => {\n    setCssEllipsis(canUseCssEllipsis && mergedEnableEllipsis);\n  }, [canUseCssEllipsis, mergedEnableEllipsis]);\n  const isMergedEllipsis = mergedEnableEllipsis && (cssEllipsis ? isNativeEllipsis : isJsEllipsis);\n  const cssTextOverflow = mergedEnableEllipsis && rows === 1 && cssEllipsis;\n  const cssLineClamp = mergedEnableEllipsis && rows > 1 && cssEllipsis;\n  // >>>>> Expand\n  const onExpandClick = (e, info) => {\n    var _a;\n    setExpanded(info.expanded);\n    (_a = ellipsisConfig.onExpand) === null || _a === void 0 ? void 0 : _a.call(ellipsisConfig, e, info);\n  };\n  const [ellipsisWidth, setEllipsisWidth] = React.useState(0);\n  const onResize = ({\n    offsetWidth\n  }) => {\n    setEllipsisWidth(offsetWidth);\n  };\n  // >>>>> JS Ellipsis\n  const onJsEllipsis = jsEllipsis => {\n    var _a;\n    setIsJsEllipsis(jsEllipsis);\n    // Trigger if changed\n    if (isJsEllipsis !== jsEllipsis) {\n      (_a = ellipsisConfig.onEllipsis) === null || _a === void 0 ? void 0 : _a.call(ellipsisConfig, jsEllipsis);\n    }\n  };\n  // >>>>> Native ellipsis\n  React.useEffect(() => {\n    const textEle = typographyRef.current;\n    if (enableEllipsis && cssEllipsis && textEle) {\n      const currentEllipsis = isEleEllipsis(textEle);\n      if (isNativeEllipsis !== currentEllipsis) {\n        setIsNativeEllipsis(currentEllipsis);\n      }\n    }\n  }, [enableEllipsis, cssEllipsis, children, cssLineClamp, isNativeVisible, ellipsisWidth]);\n  // https://github.com/ant-design/ant-design/issues/36786\n  // Use IntersectionObserver to check if element is invisible\n  React.useEffect(() => {\n    const textEle = typographyRef.current;\n    if (typeof IntersectionObserver === 'undefined' || !textEle || !cssEllipsis || !mergedEnableEllipsis) {\n      return;\n    }\n    /* eslint-disable-next-line compat/compat */\n    const observer = new IntersectionObserver(() => {\n      setIsNativeVisible(!!textEle.offsetParent);\n    });\n    observer.observe(textEle);\n    return () => {\n      observer.disconnect();\n    };\n  }, [cssEllipsis, mergedEnableEllipsis]);\n  // ========================== Tooltip ===========================\n  const tooltipProps = useTooltipProps(ellipsisConfig.tooltip, editConfig.text, children);\n  const topAriaLabel = React.useMemo(() => {\n    if (!enableEllipsis || cssEllipsis) {\n      return undefined;\n    }\n    return [editConfig.text, children, title, tooltipProps.title].find(isValidText);\n  }, [enableEllipsis, cssEllipsis, title, tooltipProps.title, isMergedEllipsis]);\n  // =========================== Render ===========================\n  // >>>>>>>>>>> Editing input\n  if (editing) {\n    return /*#__PURE__*/React.createElement(Editable, {\n      value: (_a = editConfig.text) !== null && _a !== void 0 ? _a : typeof children === 'string' ? children : '',\n      onSave: onEditChange,\n      onCancel: onEditCancel,\n      onEnd: editConfig.onEnd,\n      prefixCls: prefixCls,\n      className: className,\n      style: style,\n      direction: direction,\n      component: component,\n      maxLength: editConfig.maxLength,\n      autoSize: editConfig.autoSize,\n      enterIcon: editConfig.enterIcon\n    });\n  }\n  // >>>>>>>>>>> Typography\n  // Expand\n  const renderExpand = () => {\n    const {\n      expandable,\n      symbol\n    } = ellipsisConfig;\n    return expandable ? (/*#__PURE__*/React.createElement(\"button\", {\n      type: \"button\",\n      key: \"expand\",\n      className: `${prefixCls}-${expanded ? 'collapse' : 'expand'}`,\n      onClick: e => onExpandClick(e, {\n        expanded: !expanded\n      }),\n      \"aria-label\": expanded ? textLocale.collapse : textLocale === null || textLocale === void 0 ? void 0 : textLocale.expand\n    }, typeof symbol === 'function' ? symbol(expanded) : symbol)) : null;\n  };\n  // Edit\n  const renderEdit = () => {\n    if (!enableEdit) {\n      return;\n    }\n    const {\n      icon,\n      tooltip,\n      tabIndex\n    } = editConfig;\n    const editTitle = toArray(tooltip)[0] || (textLocale === null || textLocale === void 0 ? void 0 : textLocale.edit);\n    const ariaLabel = typeof editTitle === 'string' ? editTitle : '';\n    return triggerType.includes('icon') ? (/*#__PURE__*/React.createElement(Tooltip, {\n      key: \"edit\",\n      title: tooltip === false ? '' : editTitle\n    }, /*#__PURE__*/React.createElement(\"button\", {\n      type: \"button\",\n      ref: editIconRef,\n      className: `${prefixCls}-edit`,\n      onClick: onEditClick,\n      \"aria-label\": ariaLabel,\n      tabIndex: tabIndex\n    }, icon || /*#__PURE__*/React.createElement(EditOutlined, {\n      role: \"button\"\n    })))) : null;\n  };\n  // Copy\n  const renderCopy = () => {\n    if (!enableCopy) {\n      return null;\n    }\n    return /*#__PURE__*/React.createElement(CopyBtn, Object.assign({\n      key: \"copy\"\n    }, copyConfig, {\n      prefixCls: prefixCls,\n      copied: copied,\n      locale: textLocale,\n      onCopy: onCopyClick,\n      loading: copyLoading,\n      iconOnly: children === null || children === undefined\n    }));\n  };\n  const renderOperations = canEllipsis => [canEllipsis && renderExpand(), renderEdit(), renderCopy()];\n  const renderEllipsis = canEllipsis => [canEllipsis && !expanded && (/*#__PURE__*/React.createElement(\"span\", {\n    \"aria-hidden\": true,\n    key: \"ellipsis\"\n  }, ELLIPSIS_STR)), ellipsisConfig.suffix, renderOperations(canEllipsis)];\n  return /*#__PURE__*/React.createElement(ResizeObserver, {\n    onResize: onResize,\n    disabled: !mergedEnableEllipsis\n  }, resizeRef => (/*#__PURE__*/React.createElement(EllipsisTooltip, {\n    tooltipProps: tooltipProps,\n    enableEllipsis: mergedEnableEllipsis,\n    isEllipsis: isMergedEllipsis\n  }, /*#__PURE__*/React.createElement(Typography, Object.assign({\n    className: classNames({\n      [`${prefixCls}-${type}`]: type,\n      [`${prefixCls}-disabled`]: disabled,\n      [`${prefixCls}-ellipsis`]: enableEllipsis,\n      [`${prefixCls}-ellipsis-single-line`]: cssTextOverflow,\n      [`${prefixCls}-ellipsis-multiple-line`]: cssLineClamp\n    }, className),\n    prefixCls: customizePrefixCls,\n    style: Object.assign(Object.assign({}, style), {\n      WebkitLineClamp: cssLineClamp ? rows : undefined\n    }),\n    component: component,\n    ref: composeRef(resizeRef, typographyRef, ref),\n    direction: direction,\n    onClick: triggerType.includes('text') ? onEditClick : undefined,\n    \"aria-label\": topAriaLabel === null || topAriaLabel === void 0 ? void 0 : topAriaLabel.toString(),\n    title: title\n  }, textProps), /*#__PURE__*/React.createElement(Ellipsis, {\n    enableMeasure: mergedEnableEllipsis && !cssEllipsis,\n    text: children,\n    rows: rows,\n    width: ellipsisWidth,\n    onEllipsis: onJsEllipsis,\n    expanded: expanded,\n    miscDeps: [copied, expanded, copyLoading, enableEdit, enableCopy, textLocale].concat(_toConsumableArray(DECORATION_PROPS.map(key => props[key])))\n  }, (node, canEllipsis) => wrapperDecorations(props, /*#__PURE__*/React.createElement(React.Fragment, null, node.length > 0 && canEllipsis && !expanded && topAriaLabel ? (/*#__PURE__*/React.createElement(\"span\", {\n    key: \"show-content\",\n    \"aria-hidden\": true\n  }, node)) : node, renderEllipsis(canEllipsis))))))));\n});\nexport default Base;","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport { devUseWarning } from '../_util/warning';\nimport Base from './Base';\nconst Link = /*#__PURE__*/React.forwardRef((_a, ref) => {\n  var {\n      ellipsis,\n      rel\n    } = _a,\n    restProps = __rest(_a, [\"ellipsis\", \"rel\"]);\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('Typography.Link');\n    process.env.NODE_ENV !== \"production\" ? warning(typeof ellipsis !== 'object', 'usage', '`ellipsis` only supports boolean value.') : void 0;\n  }\n  const mergedProps = Object.assign(Object.assign({}, restProps), {\n    rel: rel === undefined && restProps.target === '_blank' ? 'noopener noreferrer' : rel\n  });\n  // @ts-expect-error: https://github.com/ant-design/ant-design/issues/26622\n  delete mergedProps.navigate;\n  return /*#__PURE__*/React.createElement(Base, Object.assign({}, mergedProps, {\n    ref: ref,\n    ellipsis: !!ellipsis,\n    component: \"a\"\n  }));\n});\nexport default Link;","\"use client\";\n\nimport * as React from 'react';\nimport Base from './Base';\nconst Paragraph = /*#__PURE__*/React.forwardRef((props, ref) => (/*#__PURE__*/React.createElement(Base, Object.assign({\n  ref: ref\n}, props, {\n  component: \"div\"\n}))));\nexport default Paragraph;","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport omit from \"rc-util/es/omit\";\nimport { devUseWarning } from '../_util/warning';\nimport Base from './Base';\nconst Text = (_a, ref) => {\n  var {\n      ellipsis\n    } = _a,\n    restProps = __rest(_a, [\"ellipsis\"]);\n  const mergedEllipsis = React.useMemo(() => {\n    if (ellipsis && typeof ellipsis === 'object') {\n      return omit(ellipsis, ['expandable', 'rows']);\n    }\n    return ellipsis;\n  }, [ellipsis]);\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('Typography.Text');\n    process.env.NODE_ENV !== \"production\" ? warning(typeof ellipsis !== 'object' || !ellipsis || !('expandable' in ellipsis) && !('rows' in ellipsis), 'usage', '`ellipsis` do not support `expandable` or `rows` props.') : void 0;\n  }\n  return /*#__PURE__*/React.createElement(Base, Object.assign({\n    ref: ref\n  }, restProps, {\n    ellipsis: mergedEllipsis,\n    component: \"span\"\n  }));\n};\nexport default /*#__PURE__*/React.forwardRef(Text);","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport { devUseWarning } from '../_util/warning';\nimport Base from './Base';\nconst TITLE_ELE_LIST = [1, 2, 3, 4, 5];\nconst Title = /*#__PURE__*/React.forwardRef((props, ref) => {\n  const {\n      level = 1\n    } = props,\n    restProps = __rest(props, [\"level\"]);\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('Typography.Title');\n    process.env.NODE_ENV !== \"production\" ? warning(TITLE_ELE_LIST.includes(level), 'usage', 'Title only accept `1 | 2 | 3 | 4 | 5` as `level` value. And `5` need 4.6.0+ version.') : void 0;\n  }\n  const component = TITLE_ELE_LIST.includes(level) ? `h${level}` : `h1`;\n  return /*#__PURE__*/React.createElement(Base, Object.assign({\n    ref: ref\n  }, restProps, {\n    component: component\n  }));\n});\nexport default Title;","\"use client\";\n\nimport Link from './Link';\nimport Paragraph from './Paragraph';\nimport Text from './Text';\nimport Title from './Title';\nimport OriginTypography from './Typography';\nconst Typography = OriginTypography;\nTypography.Text = Text;\nTypography.Link = Link;\nTypography.Title = Title;\nTypography.Paragraph = Paragraph;\nexport default Typography;","\"use client\";\n\nimport React, { forwardRef } from 'react';\nimport classNames from 'classnames';\nexport const InternalPanel = /*#__PURE__*/forwardRef((props, ref) => {\n  const {\n    prefixCls,\n    className,\n    children,\n    size,\n    style = {}\n  } = props;\n  const panelClassName = classNames(`${prefixCls}-panel`, {\n    [`${prefixCls}-panel-hidden`]: size === 0\n  }, className);\n  const hasSize = size !== undefined;\n  return /*#__PURE__*/React.createElement(\"div\", {\n    ref: ref,\n    className: panelClassName,\n    style: Object.assign(Object.assign({}, style), {\n      // Use auto when start from ssr\n      flexBasis: hasSize ? size : 'auto',\n      flexGrow: hasSize ? 0 : 1\n    })\n  }, children);\n});\nif (process.env.NODE_ENV !== 'production') {\n  InternalPanel.displayName = 'Panel';\n}\nconst Panel = () => null;\nexport default Panel;","var __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport toArray from \"rc-util/es/Children/toArray\";\nfunction getCollapsible(collapsible) {\n  if (collapsible && typeof collapsible === 'object') {\n    return collapsible;\n  }\n  const mergedCollapsible = !!collapsible;\n  return {\n    start: mergedCollapsible,\n    end: mergedCollapsible\n  };\n}\n/**\n * Convert `children` into `items`.\n */\nfunction useItems(children) {\n  const items = React.useMemo(() => toArray(children).filter(item => /*#__PURE__*/React.isValidElement(item)).map(node => {\n    const {\n      props\n    } = node;\n    const {\n        collapsible\n      } = props,\n      restProps = __rest(props, [\"collapsible\"]);\n    return Object.assign(Object.assign({}, restProps), {\n      collapsible: getCollapsible(collapsible)\n    });\n  }), [children]);\n  return items;\n}\nexport default useItems;","import * as React from 'react';\nexport default function useResizable(items, pxSizes, isRTL) {\n  return React.useMemo(() => {\n    const resizeInfos = [];\n    for (let i = 0; i < items.length - 1; i += 1) {\n      const prevItem = items[i];\n      const nextItem = items[i + 1];\n      const prevSize = pxSizes[i];\n      const nextSize = pxSizes[i + 1];\n      const {\n        resizable: prevResizable = true,\n        min: prevMin,\n        collapsible: prevCollapsible\n      } = prevItem;\n      const {\n        resizable: nextResizable = true,\n        min: nextMin,\n        collapsible: nextCollapsible\n      } = nextItem;\n      const mergedResizable =\n      // Both need to be resizable\n      prevResizable && nextResizable && (\n      // Prev is not collapsed and limit min size\n      prevSize !== 0 || !prevMin) && (\n      // Next is not collapsed and limit min size\n      nextSize !== 0 || !nextMin);\n      const startCollapsible =\n      // Self is collapsible\n      prevCollapsible.end && prevSize > 0 ||\n      // Collapsed and can be collapsed\n      nextCollapsible.start && nextSize === 0 && prevSize > 0;\n      const endCollapsible =\n      // Self is collapsible\n      nextCollapsible.start && nextSize > 0 ||\n      // Collapsed and can be collapsed\n      prevCollapsible.end && prevSize === 0 && nextSize > 0;\n      resizeInfos[i] = {\n        resizable: mergedResizable,\n        startCollapsible: !!(isRTL ? endCollapsible : startCollapsible),\n        endCollapsible: !!(isRTL ? startCollapsible : endCollapsible)\n      };\n    }\n    return resizeInfos;\n  }, [pxSizes, items]);\n}","import React from 'react';\nexport function getPtg(str) {\n  return Number(str.slice(0, -1)) / 100;\n}\nfunction isPtg(itemSize) {\n  return typeof itemSize === 'string' && itemSize.endsWith('%');\n}\n/**\n * Save the size state.\n * Align the size into flex percentage base.\n */\nexport default function useSizes(items, containerSize) {\n  const propSizes = items.map(item => item.size);\n  const itemsCount = items.length;\n  const mergedContainerSize = containerSize || 0;\n  const ptg2px = ptg => ptg * mergedContainerSize;\n  // We do not need care the size state match the `items` length in `useState`.\n  // It will calculate later.\n  const [innerSizes, setInnerSizes] = React.useState(() => items.map(item => item.defaultSize));\n  const sizes = React.useMemo(() => {\n    var _a;\n    const mergedSizes = [];\n    for (let i = 0; i < itemsCount; i += 1) {\n      mergedSizes[i] = (_a = propSizes[i]) !== null && _a !== void 0 ? _a : innerSizes[i];\n    }\n    return mergedSizes;\n  }, [itemsCount, innerSizes, propSizes]);\n  // Post handle the size. Will do:\n  // 1. Convert all the px into percentage if not empty.\n  // 2. Get rest percentage for exist percentage.\n  // 3. Fill the rest percentage into empty item.\n  const postPercentSizes = React.useMemo(() => {\n    let ptgList = [];\n    let emptyCount = 0;\n    // Fill default percentage\n    for (let i = 0; i < itemsCount; i += 1) {\n      const itemSize = sizes[i];\n      if (isPtg(itemSize)) {\n        ptgList[i] = getPtg(itemSize);\n      } else if (itemSize || itemSize === 0) {\n        const num = Number(itemSize);\n        if (!Number.isNaN(num)) {\n          ptgList[i] = num / mergedContainerSize;\n        }\n      } else {\n        emptyCount += 1;\n        ptgList[i] = undefined;\n      }\n    }\n    const totalPtg = ptgList.reduce((acc, ptg) => acc + (ptg || 0), 0);\n    if (totalPtg > 1 || !emptyCount) {\n      // If total percentage is larger than 1, we will scale it down.\n      const scale = 1 / totalPtg;\n      ptgList = ptgList.map(ptg => ptg === undefined ? 0 : ptg * scale);\n    } else {\n      // If total percentage is smaller than 1, we will fill the rest.\n      const avgRest = (1 - totalPtg) / emptyCount;\n      ptgList = ptgList.map(ptg => ptg === undefined ? avgRest : ptg);\n    }\n    return ptgList;\n  }, [sizes, mergedContainerSize]);\n  const postPxSizes = React.useMemo(() => postPercentSizes.map(ptg2px), [postPercentSizes, mergedContainerSize]);\n  const postPercentMinSizes = React.useMemo(() => items.map(item => {\n    if (isPtg(item.min)) {\n      return getPtg(item.min);\n    }\n    return (item.min || 0) / mergedContainerSize;\n  }), [items, mergedContainerSize]);\n  const postPercentMaxSizes = React.useMemo(() => items.map(item => {\n    if (isPtg(item.max)) {\n      return getPtg(item.max);\n    }\n    return (item.max || mergedContainerSize) / mergedContainerSize;\n  }), [items, mergedContainerSize]);\n  // If ssr, we will use the size from developer config first.\n  const panelSizes = React.useMemo(() => containerSize ? postPxSizes : sizes, [postPxSizes, containerSize]);\n  return [panelSizes, postPxSizes, postPercentSizes, postPercentMinSizes, postPercentMaxSizes, setInnerSizes];\n}","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nimport { getPtg } from './useSizes';\n/**\n * Handle user drag resize logic.\n */\nexport default function useResize(items, resizableInfos, percentSizes, containerSize, updateSizes, isRTL) {\n  const limitSizes = items.map(item => [item.min, item.max]);\n  const mergedContainerSize = containerSize || 0;\n  const ptg2px = ptg => ptg * mergedContainerSize;\n  // ======================== Resize ========================\n  function getLimitSize(str, defaultLimit) {\n    if (typeof str === 'string') {\n      return ptg2px(getPtg(str));\n    }\n    return str !== null && str !== void 0 ? str : defaultLimit;\n  }\n  // Real px sizes\n  const [cacheSizes, setCacheSizes] = React.useState([]);\n  const cacheCollapsedSize = React.useRef([]);\n  /**\n   * When start drag, check the direct is `start` or `end`.\n   * This will handle when 2 splitter bar are in the same position.\n   */\n  const [movingIndex, setMovingIndex] = React.useState(null);\n  const getPxSizes = () => percentSizes.map(ptg2px);\n  const onOffsetStart = index => {\n    setCacheSizes(getPxSizes());\n    setMovingIndex({\n      index,\n      confirmed: false\n    });\n  };\n  const onOffsetUpdate = (index, offset) => {\n    var _a;\n    // First time trigger move index update is not sync in the state\n    let confirmedIndex = null;\n    // We need to know what the real index is.\n    if ((!movingIndex || !movingIndex.confirmed) && offset !== 0) {\n      // Search for the real index\n      if (offset > 0) {\n        confirmedIndex = index;\n        setMovingIndex({\n          index,\n          confirmed: true\n        });\n      } else {\n        for (let i = index; i >= 0; i -= 1) {\n          if (cacheSizes[i] > 0 && resizableInfos[i].resizable) {\n            confirmedIndex = i;\n            setMovingIndex({\n              index: i,\n              confirmed: true\n            });\n            break;\n          }\n        }\n      }\n    }\n    const mergedIndex = (_a = confirmedIndex !== null && confirmedIndex !== void 0 ? confirmedIndex : movingIndex === null || movingIndex === void 0 ? void 0 : movingIndex.index) !== null && _a !== void 0 ? _a : index;\n    const numSizes = _toConsumableArray(cacheSizes);\n    const nextIndex = mergedIndex + 1;\n    // Get boundary\n    const startMinSize = getLimitSize(limitSizes[mergedIndex][0], 0);\n    const endMinSize = getLimitSize(limitSizes[nextIndex][0], 0);\n    const startMaxSize = getLimitSize(limitSizes[mergedIndex][1], mergedContainerSize);\n    const endMaxSize = getLimitSize(limitSizes[nextIndex][1], mergedContainerSize);\n    let mergedOffset = offset;\n    // Align with the boundary\n    if (numSizes[mergedIndex] + mergedOffset < startMinSize) {\n      mergedOffset = startMinSize - numSizes[mergedIndex];\n    }\n    if (numSizes[nextIndex] - mergedOffset < endMinSize) {\n      mergedOffset = numSizes[nextIndex] - endMinSize;\n    }\n    if (numSizes[mergedIndex] + mergedOffset > startMaxSize) {\n      mergedOffset = startMaxSize - numSizes[mergedIndex];\n    }\n    if (numSizes[nextIndex] - mergedOffset > endMaxSize) {\n      mergedOffset = numSizes[nextIndex] - endMaxSize;\n    }\n    // Do offset\n    numSizes[mergedIndex] += mergedOffset;\n    numSizes[nextIndex] -= mergedOffset;\n    updateSizes(numSizes);\n    return numSizes;\n  };\n  const onOffsetEnd = () => {\n    setMovingIndex(null);\n  };\n  // ======================= Collapse =======================\n  const onCollapse = (index, type) => {\n    const currentSizes = getPxSizes();\n    const adjustedType = isRTL ? type === 'start' ? 'end' : 'start' : type;\n    const currentIndex = adjustedType === 'start' ? index : index + 1;\n    const targetIndex = adjustedType === 'start' ? index + 1 : index;\n    const currentSize = currentSizes[currentIndex];\n    const targetSize = currentSizes[targetIndex];\n    if (currentSize !== 0 && targetSize !== 0) {\n      // Collapse directly\n      currentSizes[currentIndex] = 0;\n      currentSizes[targetIndex] += currentSize;\n      cacheCollapsedSize.current[index] = currentSize;\n    } else {\n      const totalSize = currentSize + targetSize;\n      const currentSizeMin = getLimitSize(limitSizes[currentIndex][0], 0);\n      const currentSizeMax = getLimitSize(limitSizes[currentIndex][1], mergedContainerSize);\n      const targetSizeMin = getLimitSize(limitSizes[targetIndex][0], 0);\n      const targetSizeMax = getLimitSize(limitSizes[targetIndex][1], mergedContainerSize);\n      const limitStart = Math.max(currentSizeMin, totalSize - targetSizeMax);\n      const limitEnd = Math.min(currentSizeMax, totalSize - targetSizeMin);\n      const halfOffset = targetSizeMin || (limitEnd - limitStart) / 2;\n      const targetCacheCollapsedSize = cacheCollapsedSize.current[index];\n      const currentCacheCollapsedSize = totalSize - targetCacheCollapsedSize;\n      const shouldUseCache = targetCacheCollapsedSize && targetCacheCollapsedSize <= targetSizeMax && targetCacheCollapsedSize >= targetSizeMin && currentCacheCollapsedSize <= currentSizeMax && currentCacheCollapsedSize >= currentSizeMin;\n      if (shouldUseCache) {\n        currentSizes[targetIndex] = targetCacheCollapsedSize;\n        currentSizes[currentIndex] = currentCacheCollapsedSize;\n      } else {\n        currentSizes[currentIndex] -= halfOffset;\n        currentSizes[targetIndex] += halfOffset;\n      }\n    }\n    updateSizes(currentSizes);\n    return currentSizes;\n  };\n  return [onOffsetStart, onOffsetUpdate, onOffsetEnd, onCollapse, movingIndex === null || movingIndex === void 0 ? void 0 : movingIndex.index];\n}","\"use client\";\n\nimport React, { useState } from 'react';\nimport DownOutlined from \"@ant-design/icons/es/icons/DownOutlined\";\nimport LeftOutlined from \"@ant-design/icons/es/icons/LeftOutlined\";\nimport RightOutlined from \"@ant-design/icons/es/icons/RightOutlined\";\nimport UpOutlined from \"@ant-design/icons/es/icons/UpOutlined\";\nimport classNames from 'classnames';\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nfunction getValidNumber(num) {\n  return typeof num === 'number' && !Number.isNaN(num) ? Math.round(num) : 0;\n}\nconst SplitBar = props => {\n  const {\n    prefixCls,\n    vertical,\n    index,\n    active,\n    ariaNow,\n    ariaMin,\n    ariaMax,\n    resizable,\n    startCollapsible,\n    endCollapsible,\n    onOffsetStart,\n    onOffsetUpdate,\n    onOffsetEnd,\n    onCollapse,\n    lazy,\n    containerSize\n  } = props;\n  const splitBarPrefixCls = `${prefixCls}-bar`;\n  // ======================== Resize ========================\n  const [startPos, setStartPos] = useState(null);\n  const [constrainedOffset, setConstrainedOffset] = useState(0);\n  const constrainedOffsetX = vertical ? 0 : constrainedOffset;\n  const constrainedOffsetY = vertical ? constrainedOffset : 0;\n  const onMouseDown = e => {\n    if (resizable && e.currentTarget) {\n      setStartPos([e.pageX, e.pageY]);\n      onOffsetStart(index);\n    }\n  };\n  const onTouchStart = e => {\n    if (resizable && e.touches.length === 1) {\n      const touch = e.touches[0];\n      setStartPos([touch.pageX, touch.pageY]);\n      onOffsetStart(index);\n    }\n  };\n  // Updated constraint calculation\n  const getConstrainedOffset = rawOffset => {\n    const currentPos = containerSize * ariaNow / 100;\n    const newPos = currentPos + rawOffset;\n    // Calculate available space\n    const minAllowed = Math.max(0, containerSize * ariaMin / 100);\n    const maxAllowed = Math.min(containerSize, containerSize * ariaMax / 100);\n    // Constrain new position within bounds\n    const clampedPos = Math.max(minAllowed, Math.min(maxAllowed, newPos));\n    return clampedPos - currentPos;\n  };\n  const handleLazyMove = useEvent((offsetX, offsetY) => {\n    const constrainedOffsetValue = getConstrainedOffset(vertical ? offsetY : offsetX);\n    setConstrainedOffset(constrainedOffsetValue);\n  });\n  const handleLazyEnd = useEvent(() => {\n    onOffsetUpdate(index, constrainedOffsetX, constrainedOffsetY, true);\n    setConstrainedOffset(0);\n    onOffsetEnd(true);\n  });\n  React.useEffect(() => {\n    if (startPos) {\n      const onMouseMove = e => {\n        const {\n          pageX,\n          pageY\n        } = e;\n        const offsetX = pageX - startPos[0];\n        const offsetY = pageY - startPos[1];\n        if (lazy) {\n          handleLazyMove(offsetX, offsetY);\n        } else {\n          onOffsetUpdate(index, offsetX, offsetY);\n        }\n      };\n      const onMouseUp = () => {\n        if (lazy) {\n          handleLazyEnd();\n        } else {\n          onOffsetEnd();\n        }\n        setStartPos(null);\n      };\n      const handleTouchMove = e => {\n        if (e.touches.length === 1) {\n          const touch = e.touches[0];\n          const offsetX = touch.pageX - startPos[0];\n          const offsetY = touch.pageY - startPos[1];\n          if (lazy) {\n            handleLazyMove(offsetX, offsetY);\n          } else {\n            onOffsetUpdate(index, offsetX, offsetY);\n          }\n        }\n      };\n      const handleTouchEnd = () => {\n        if (lazy) {\n          handleLazyEnd();\n        } else {\n          onOffsetEnd();\n        }\n        setStartPos(null);\n      };\n      window.addEventListener('touchmove', handleTouchMove);\n      window.addEventListener('touchend', handleTouchEnd);\n      window.addEventListener('mousemove', onMouseMove);\n      window.addEventListener('mouseup', onMouseUp);\n      return () => {\n        window.removeEventListener('mousemove', onMouseMove);\n        window.removeEventListener('mouseup', onMouseUp);\n        window.removeEventListener('touchmove', handleTouchMove);\n        window.removeEventListener('touchend', handleTouchEnd);\n      };\n    }\n  }, [startPos, lazy, vertical, index, containerSize, ariaNow, ariaMin, ariaMax]);\n  const transformStyle = {\n    [`--${splitBarPrefixCls}-preview-offset`]: `${constrainedOffset}px`\n  };\n  // ======================== Render ========================\n  const StartIcon = vertical ? UpOutlined : LeftOutlined;\n  const EndIcon = vertical ? DownOutlined : RightOutlined;\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: splitBarPrefixCls,\n    role: \"separator\",\n    \"aria-valuenow\": getValidNumber(ariaNow),\n    \"aria-valuemin\": getValidNumber(ariaMin),\n    \"aria-valuemax\": getValidNumber(ariaMax)\n  }, lazy && (/*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(`${splitBarPrefixCls}-preview`, {\n      [`${splitBarPrefixCls}-preview-active`]: !!constrainedOffset\n    }),\n    style: transformStyle\n  })), /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(`${splitBarPrefixCls}-dragger`, {\n      [`${splitBarPrefixCls}-dragger-disabled`]: !resizable,\n      [`${splitBarPrefixCls}-dragger-active`]: active\n    }),\n    onMouseDown: onMouseDown,\n    onTouchStart: onTouchStart\n  }), startCollapsible && (/*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(`${splitBarPrefixCls}-collapse-bar`, `${splitBarPrefixCls}-collapse-bar-start`),\n    onClick: () => onCollapse(index, 'start')\n  }, /*#__PURE__*/React.createElement(StartIcon, {\n    className: classNames(`${splitBarPrefixCls}-collapse-icon`, `${splitBarPrefixCls}-collapse-start`)\n  }))), endCollapsible && (/*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(`${splitBarPrefixCls}-collapse-bar`, `${splitBarPrefixCls}-collapse-bar-end`),\n    onClick: () => onCollapse(index, 'end')\n  }, /*#__PURE__*/React.createElement(EndIcon, {\n    className: classNames(`${splitBarPrefixCls}-collapse-icon`, `${splitBarPrefixCls}-collapse-end`)\n  }))));\n};\nexport default SplitBar;","import { resetComponent } from '../../style';\nimport { genStyleHooks } from '../../theme/internal';\nconst genRtlStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    [`&-rtl${componentCls}-horizontal`]: {\n      [`> ${componentCls}-bar`]: {\n        [`${componentCls}-bar-collapse-previous`]: {\n          insetInlineEnd: 0,\n          insetInlineStart: 'unset'\n        },\n        [`${componentCls}-bar-collapse-next`]: {\n          insetInlineEnd: 'unset',\n          insetInlineStart: 0\n        }\n      }\n    },\n    [`&-rtl${componentCls}-vertical`]: {\n      [`> ${componentCls}-bar`]: {\n        [`${componentCls}-bar-collapse-previous`]: {\n          insetInlineEnd: '50%',\n          insetInlineStart: 'unset'\n        },\n        [`${componentCls}-bar-collapse-next`]: {\n          insetInlineEnd: '50%',\n          insetInlineStart: 'unset'\n        }\n      }\n    }\n  };\n};\nconst centerStyle = {\n  position: 'absolute',\n  top: '50%',\n  left: {\n    _skip_check_: true,\n    value: '50%'\n  },\n  transform: 'translate(-50%, -50%)'\n};\nconst genSplitterStyle = token => {\n  const {\n    componentCls,\n    colorFill,\n    splitBarDraggableSize,\n    splitBarSize,\n    splitTriggerSize,\n    controlItemBgHover,\n    controlItemBgActive,\n    controlItemBgActiveHover,\n    prefixCls\n  } = token;\n  const splitBarCls = `${componentCls}-bar`;\n  const splitMaskCls = `${componentCls}-mask`;\n  const splitPanelCls = `${componentCls}-panel`;\n  const halfTriggerSize = token.calc(splitTriggerSize).div(2).equal();\n  const splitterBarPreviewOffsetVar = `${prefixCls}-bar-preview-offset`;\n  const splitterBarPreviewStyle = {\n    position: 'absolute',\n    background: token.colorPrimary,\n    opacity: 0.2,\n    pointerEvents: 'none',\n    transition: 'none',\n    zIndex: 1,\n    display: 'none'\n  };\n  return {\n    [componentCls]: Object.assign(Object.assign(Object.assign({}, resetComponent(token)), {\n      display: 'flex',\n      width: '100%',\n      height: '100%',\n      alignItems: 'stretch',\n      // ======================== SplitBar ========================\n      // Use `>` to avoid conflict with mix layout\n      [`> ${splitBarCls}`]: {\n        flex: 'none',\n        position: 'relative',\n        userSelect: 'none',\n        // ======================= Dragger =======================\n        [`${splitBarCls}-dragger`]: Object.assign(Object.assign({}, centerStyle), {\n          zIndex: 1,\n          // Hover background\n          '&::before': Object.assign({\n            content: '\"\"',\n            background: controlItemBgHover\n          }, centerStyle),\n          // Spinner\n          '&::after': Object.assign({\n            content: '\"\"',\n            background: colorFill\n          }, centerStyle),\n          // Hover\n          [`&:hover:not(${splitBarCls}-dragger-active)`]: {\n            '&::before': {\n              background: controlItemBgActive\n            }\n          },\n          // Active\n          '&-active': {\n            zIndex: 2,\n            '&::before': {\n              background: controlItemBgActiveHover\n            }\n          },\n          // Disabled, not use `pointer-events: none` since still need trigger collapse\n          [`&-disabled${splitBarCls}-dragger`]: {\n            zIndex: 0,\n            '&, &:hover, &-active': {\n              cursor: 'default',\n              '&::before': {\n                background: controlItemBgHover\n              }\n            },\n            '&::after': {\n              display: 'none'\n            }\n          }\n        }),\n        // ======================= Collapse =======================\n        [`${splitBarCls}-collapse-bar`]: Object.assign(Object.assign({}, centerStyle), {\n          zIndex: token.zIndexPopupBase,\n          background: controlItemBgHover,\n          fontSize: token.fontSizeSM,\n          borderRadius: token.borderRadiusXS,\n          color: token.colorText,\n          cursor: 'pointer',\n          opacity: 0,\n          display: 'flex',\n          alignItems: 'center',\n          justifyContent: 'center',\n          '@media(hover:none)': {\n            opacity: 1\n          },\n          // Hover\n          '&:hover': {\n            background: controlItemBgActive\n          },\n          // Active\n          '&:active': {\n            background: controlItemBgActiveHover\n          }\n        }),\n        // ======================== Status ========================\n        // Hover\n        '&:hover, &:active': {\n          [`${splitBarCls}-collapse-bar`]: {\n            opacity: 1\n          }\n        }\n      },\n      // =========================== Mask =========================\n      // Util dom for handle cursor\n      [splitMaskCls]: {\n        position: 'fixed',\n        zIndex: token.zIndexPopupBase,\n        inset: 0,\n        '&-horizontal': {\n          cursor: 'col-resize'\n        },\n        '&-vertical': {\n          cursor: 'row-resize'\n        }\n      },\n      // ==========================================================\n      // ==                        Layout                        ==\n      // ==========================================================\n      '&-horizontal': {\n        flexDirection: 'row',\n        [`> ${splitBarCls}`]: {\n          width: 0,\n          // ======================= Preview =======================\n          [`${splitBarCls}-preview`]: Object.assign(Object.assign({\n            height: '100%',\n            width: splitBarSize\n          }, splitterBarPreviewStyle), {\n            [`&${splitBarCls}-preview-active`]: {\n              display: 'block',\n              transform: `translateX(var(--${splitterBarPreviewOffsetVar}))`\n            }\n          }),\n          // ======================= Dragger =======================\n          [`${splitBarCls}-dragger`]: {\n            cursor: 'col-resize',\n            height: '100%',\n            width: splitTriggerSize,\n            '&::before': {\n              height: '100%',\n              width: splitBarSize\n            },\n            '&::after': {\n              height: splitBarDraggableSize,\n              width: splitBarSize\n            }\n          },\n          // ======================= Collapse =======================\n          [`${splitBarCls}-collapse-bar`]: {\n            width: token.fontSizeSM,\n            height: token.controlHeightSM,\n            '&-start': {\n              left: {\n                _skip_check_: true,\n                value: 'auto'\n              },\n              right: {\n                _skip_check_: true,\n                value: halfTriggerSize\n              },\n              transform: 'translateY(-50%)'\n            },\n            '&-end': {\n              left: {\n                _skip_check_: true,\n                value: halfTriggerSize\n              },\n              right: {\n                _skip_check_: true,\n                value: 'auto'\n              },\n              transform: 'translateY(-50%)'\n            }\n          }\n        }\n      },\n      '&-vertical': {\n        flexDirection: 'column',\n        [`> ${splitBarCls}`]: {\n          height: 0,\n          // ======================= Preview =======================\n          [`${splitBarCls}-preview`]: Object.assign(Object.assign({\n            height: splitBarSize,\n            width: '100%'\n          }, splitterBarPreviewStyle), {\n            [`&${splitBarCls}-preview-active`]: {\n              display: 'block',\n              transform: `translateY(var(--${splitterBarPreviewOffsetVar}))`\n            }\n          }),\n          // ======================= Dragger =======================\n          [`${splitBarCls}-dragger`]: {\n            cursor: 'row-resize',\n            width: '100%',\n            height: splitTriggerSize,\n            '&::before': {\n              width: '100%',\n              height: splitBarSize\n            },\n            '&::after': {\n              width: splitBarDraggableSize,\n              height: splitBarSize\n            }\n          },\n          // ======================= Collapse =======================\n          [`${splitBarCls}-collapse-bar`]: {\n            height: token.fontSizeSM,\n            width: token.controlHeightSM,\n            '&-start': {\n              top: 'auto',\n              bottom: halfTriggerSize,\n              transform: 'translateX(-50%)'\n            },\n            '&-end': {\n              top: halfTriggerSize,\n              bottom: 'auto',\n              transform: 'translateX(-50%)'\n            }\n          }\n        }\n      },\n      // ========================= Panels =========================\n      [splitPanelCls]: {\n        overflow: 'auto',\n        padding: '0 1px',\n        scrollbarWidth: 'thin',\n        boxSizing: 'border-box',\n        '&-hidden': {\n          padding: 0,\n          overflow: 'hidden'\n        },\n        [`&:has(${componentCls}:only-child)`]: {\n          overflow: 'hidden'\n        }\n      }\n    }), genRtlStyle(token))\n  };\n};\nexport const prepareComponentToken = token => {\n  var _a;\n  const splitBarSize = token.splitBarSize || 2;\n  const splitTriggerSize = token.splitTriggerSize || 6;\n  // https://github.com/ant-design/ant-design/pull/51223\n  const resizeSpinnerSize = token.resizeSpinnerSize || 20;\n  const splitBarDraggableSize = (_a = token.splitBarDraggableSize) !== null && _a !== void 0 ? _a : resizeSpinnerSize;\n  return {\n    splitBarSize,\n    splitTriggerSize,\n    splitBarDraggableSize,\n    resizeSpinnerSize\n  };\n};\n// ============================== Export ==============================\nexport default genStyleHooks('Splitter', token => [genSplitterStyle(token)], prepareComponentToken);","\"use client\";\n\n/* eslint-disable react/no-array-index-key */\nimport React, { useState } from 'react';\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport { devUseWarning } from '../_util/warning';\nimport { useComponentConfig } from '../config-provider/context';\nimport useCSSVarCls from '../config-provider/hooks/useCSSVarCls';\nimport useItems from './hooks/useItems';\nimport useResizable from './hooks/useResizable';\nimport useResize from './hooks/useResize';\nimport useSizes from './hooks/useSizes';\nimport { InternalPanel } from './Panel';\nimport SplitBar from './SplitBar';\nimport useStyle from './style';\nconst Splitter = props => {\n  const {\n    prefixCls: customizePrefixCls,\n    className,\n    style,\n    layout = 'horizontal',\n    children,\n    rootClassName,\n    onResizeStart,\n    onResize,\n    onResizeEnd,\n    lazy\n  } = props;\n  const {\n    getPrefixCls,\n    direction,\n    className: contextClassName,\n    style: contextStyle\n  } = useComponentConfig('splitter');\n  const prefixCls = getPrefixCls('splitter', customizePrefixCls);\n  const rootCls = useCSSVarCls(prefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls, rootCls);\n  // ======================== Direct ========================\n  const isVertical = layout === 'vertical';\n  const isRTL = direction === 'rtl';\n  const reverse = !isVertical && isRTL;\n  // ====================== Items Data ======================\n  const items = useItems(children);\n  // >>> Warning for uncontrolled\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('Splitter');\n    let existSize = false;\n    let existUndefinedSize = false;\n    items.forEach(item => {\n      if (item.size !== undefined) {\n        existSize = true;\n      } else {\n        existUndefinedSize = true;\n      }\n    });\n    if (existSize && existUndefinedSize && !onResize) {\n      process.env.NODE_ENV !== \"production\" ? warning(false, 'usage', 'When part of `Splitter.Panel` has `size`, `onResize` is required or change `size` to `defaultSize`.') : void 0;\n    }\n  }\n  // ====================== Container =======================\n  const [containerSize, setContainerSize] = useState();\n  const onContainerResize = size => {\n    const {\n      offsetWidth,\n      offsetHeight\n    } = size;\n    const containerSize = isVertical ? offsetHeight : offsetWidth;\n    // Skip when container has no size, Such as nested in a hidden tab panel\n    // to fix: https://github.com/ant-design/ant-design/issues/51106\n    if (containerSize === 0) {\n      return;\n    }\n    setContainerSize(containerSize);\n  };\n  // ========================= Size =========================\n  const [panelSizes, itemPxSizes, itemPtgSizes, itemPtgMinSizes, itemPtgMaxSizes, updateSizes] = useSizes(items, containerSize);\n  // ====================== Resizable =======================\n  const resizableInfos = useResizable(items, itemPxSizes, isRTL);\n  const [onOffsetStart, onOffsetUpdate, onOffsetEnd, onCollapse, movingIndex] = useResize(items, resizableInfos, itemPtgSizes, containerSize, updateSizes, isRTL);\n  // ======================== Events ========================\n  const onInternalResizeStart = useEvent(index => {\n    onOffsetStart(index);\n    onResizeStart === null || onResizeStart === void 0 ? void 0 : onResizeStart(itemPxSizes);\n  });\n  const onInternalResizeUpdate = useEvent((index, offset, lazyEnd) => {\n    const nextSizes = onOffsetUpdate(index, offset);\n    if (lazyEnd) {\n      onResizeEnd === null || onResizeEnd === void 0 ? void 0 : onResizeEnd(nextSizes);\n    } else {\n      onResize === null || onResize === void 0 ? void 0 : onResize(nextSizes);\n    }\n  });\n  const onInternalResizeEnd = useEvent(lazyEnd => {\n    onOffsetEnd();\n    if (!lazyEnd) {\n      onResizeEnd === null || onResizeEnd === void 0 ? void 0 : onResizeEnd(itemPxSizes);\n    }\n  });\n  const onInternalCollapse = useEvent((index, type) => {\n    const nextSizes = onCollapse(index, type);\n    onResize === null || onResize === void 0 ? void 0 : onResize(nextSizes);\n    onResizeEnd === null || onResizeEnd === void 0 ? void 0 : onResizeEnd(nextSizes);\n  });\n  // ======================== Styles ========================\n  const containerClassName = classNames(prefixCls, className, `${prefixCls}-${layout}`, {\n    [`${prefixCls}-rtl`]: isRTL\n  }, rootClassName, contextClassName, cssVarCls, rootCls, hashId);\n  // ======================== Render ========================\n  const maskCls = `${prefixCls}-mask`;\n  const stackSizes = React.useMemo(() => {\n    const mergedSizes = [];\n    let stack = 0;\n    for (let i = 0; i < items.length; i += 1) {\n      stack += itemPtgSizes[i];\n      mergedSizes.push(stack);\n    }\n    return mergedSizes;\n  }, [itemPtgSizes]);\n  const mergedStyle = Object.assign(Object.assign({}, contextStyle), style);\n  return wrapCSSVar(/*#__PURE__*/React.createElement(ResizeObserver, {\n    onResize: onContainerResize\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    style: mergedStyle,\n    className: containerClassName\n  }, items.map((item, idx) => {\n    // Panel\n    const panel = /*#__PURE__*/React.createElement(InternalPanel, Object.assign({}, item, {\n      prefixCls: prefixCls,\n      size: panelSizes[idx]\n    }));\n    // Split Bar\n    let splitBar = null;\n    const resizableInfo = resizableInfos[idx];\n    if (resizableInfo) {\n      const ariaMinStart = (stackSizes[idx - 1] || 0) + itemPtgMinSizes[idx];\n      const ariaMinEnd = (stackSizes[idx + 1] || 100) - itemPtgMaxSizes[idx + 1];\n      const ariaMaxStart = (stackSizes[idx - 1] || 0) + itemPtgMaxSizes[idx];\n      const ariaMaxEnd = (stackSizes[idx + 1] || 100) - itemPtgMinSizes[idx + 1];\n      splitBar = /*#__PURE__*/React.createElement(SplitBar, {\n        lazy: lazy,\n        index: idx,\n        active: movingIndex === idx,\n        prefixCls: prefixCls,\n        vertical: isVertical,\n        resizable: resizableInfo.resizable,\n        ariaNow: stackSizes[idx] * 100,\n        ariaMin: Math.max(ariaMinStart, ariaMinEnd) * 100,\n        ariaMax: Math.min(ariaMaxStart, ariaMaxEnd) * 100,\n        startCollapsible: resizableInfo.startCollapsible,\n        endCollapsible: resizableInfo.endCollapsible,\n        onOffsetStart: onInternalResizeStart,\n        onOffsetUpdate: (index, offsetX, offsetY, lazyEnd) => {\n          let offset = isVertical ? offsetY : offsetX;\n          if (reverse) {\n            offset = -offset;\n          }\n          onInternalResizeUpdate(index, offset, lazyEnd);\n        },\n        onOffsetEnd: onInternalResizeEnd,\n        onCollapse: onInternalCollapse,\n        containerSize: containerSize || 0\n      });\n    }\n    return /*#__PURE__*/React.createElement(React.Fragment, {\n      key: `split-panel-${idx}`\n    }, panel, splitBar);\n  }), typeof movingIndex === 'number' && (/*#__PURE__*/React.createElement(\"div\", {\n    \"aria-hidden\": true,\n    className: classNames(maskCls, `${maskCls}-${layout}`)\n  })))));\n};\nif (process.env.NODE_ENV !== 'production') {\n  Splitter.displayName = 'Splitter';\n}\nexport default Splitter;","\"use client\";\n\nimport Panel from './Panel';\nimport SplitterComp from './Splitter';\nconst Splitter = SplitterComp;\nSplitter.Panel = Panel;\nexport default Splitter;","/* UAParser.js v1.0.40\n   Copyright © 2012-2024 Faisal Salman <f@faisalman.com>\n   MIT License */\n(function(window,undefined){\"use strict\";var LIBVERSION=\"1.0.40\",EMPTY=\"\",UNKNOWN=\"?\",FUNC_TYPE=\"function\",UNDEF_TYPE=\"undefined\",OBJ_TYPE=\"object\",STR_TYPE=\"string\",MAJOR=\"major\",MODEL=\"model\",NAME=\"name\",TYPE=\"type\",VENDOR=\"vendor\",VERSION=\"version\",ARCHITECTURE=\"architecture\",CONSOLE=\"console\",MOBILE=\"mobile\",TABLET=\"tablet\",SMARTTV=\"smarttv\",WEARABLE=\"wearable\",EMBEDDED=\"embedded\",UA_MAX_LENGTH=500;var AMAZON=\"Amazon\",APPLE=\"Apple\",ASUS=\"ASUS\",BLACKBERRY=\"BlackBerry\",BROWSER=\"Browser\",CHROME=\"Chrome\",EDGE=\"Edge\",FIREFOX=\"Firefox\",GOOGLE=\"Google\",HUAWEI=\"Huawei\",LG=\"LG\",MICROSOFT=\"Microsoft\",MOTOROLA=\"Motorola\",OPERA=\"Opera\",SAMSUNG=\"Samsung\",SHARP=\"Sharp\",SONY=\"Sony\",XIAOMI=\"Xiaomi\",ZEBRA=\"Zebra\",FACEBOOK=\"Facebook\",CHROMIUM_OS=\"Chromium OS\",MAC_OS=\"Mac OS\",SUFFIX_BROWSER=\" Browser\";var extend=function(regexes,extensions){var mergedRegexes={};for(var i in regexes){if(extensions[i]&&extensions[i].length%2===0){mergedRegexes[i]=extensions[i].concat(regexes[i])}else{mergedRegexes[i]=regexes[i]}}return mergedRegexes},enumerize=function(arr){var enums={};for(var i=0;i<arr.length;i++){enums[arr[i].toUpperCase()]=arr[i]}return enums},has=function(str1,str2){return typeof str1===STR_TYPE?lowerize(str2).indexOf(lowerize(str1))!==-1:false},lowerize=function(str){return str.toLowerCase()},majorize=function(version){return typeof version===STR_TYPE?version.replace(/[^\\d\\.]/g,EMPTY).split(\".\")[0]:undefined},trim=function(str,len){if(typeof str===STR_TYPE){str=str.replace(/^\\s\\s*/,EMPTY);return typeof len===UNDEF_TYPE?str:str.substring(0,UA_MAX_LENGTH)}};var rgxMapper=function(ua,arrays){var i=0,j,k,p,q,matches,match;while(i<arrays.length&&!matches){var regex=arrays[i],props=arrays[i+1];j=k=0;while(j<regex.length&&!matches){if(!regex[j]){break}matches=regex[j++].exec(ua);if(!!matches){for(p=0;p<props.length;p++){match=matches[++k];q=props[p];if(typeof q===OBJ_TYPE&&q.length>0){if(q.length===2){if(typeof q[1]==FUNC_TYPE){this[q[0]]=q[1].call(this,match)}else{this[q[0]]=q[1]}}else if(q.length===3){if(typeof q[1]===FUNC_TYPE&&!(q[1].exec&&q[1].test)){this[q[0]]=match?q[1].call(this,match,q[2]):undefined}else{this[q[0]]=match?match.replace(q[1],q[2]):undefined}}else if(q.length===4){this[q[0]]=match?q[3].call(this,match.replace(q[1],q[2])):undefined}}else{this[q]=match?match:undefined}}}}i+=2}},strMapper=function(str,map){for(var i in map){if(typeof map[i]===OBJ_TYPE&&map[i].length>0){for(var j=0;j<map[i].length;j++){if(has(map[i][j],str)){return i===UNKNOWN?undefined:i}}}else if(has(map[i],str)){return i===UNKNOWN?undefined:i}}return map.hasOwnProperty(\"*\")?map[\"*\"]:str};var oldSafariMap={\"1.0\":\"/8\",1.2:\"/1\",1.3:\"/3\",\"2.0\":\"/412\",\"2.0.2\":\"/416\",\"2.0.3\":\"/417\",\"2.0.4\":\"/419\",\"?\":\"/\"},windowsVersionMap={ME:\"4.90\",\"NT 3.11\":\"NT3.51\",\"NT 4.0\":\"NT4.0\",2e3:\"NT 5.0\",XP:[\"NT 5.1\",\"NT 5.2\"],Vista:\"NT 6.0\",7:\"NT 6.1\",8:\"NT 6.2\",8.1:\"NT 6.3\",10:[\"NT 6.4\",\"NT 10.0\"],RT:\"ARM\"};var regexes={browser:[[/\\b(?:crmo|crios)\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Chrome\"]],[/edg(?:e|ios|a)?\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Edge\"]],[/(opera mini)\\/([-\\w\\.]+)/i,/(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i,/(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i],[NAME,VERSION],[/opios[\\/ ]+([\\w\\.]+)/i],[VERSION,[NAME,OPERA+\" Mini\"]],[/\\bop(?:rg)?x\\/([\\w\\.]+)/i],[VERSION,[NAME,OPERA+\" GX\"]],[/\\bopr\\/([\\w\\.]+)/i],[VERSION,[NAME,OPERA]],[/\\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\\/ ]?([\\w\\.]+)/i],[VERSION,[NAME,\"Baidu\"]],[/\\b(?:mxbrowser|mxios|myie2)\\/?([-\\w\\.]*)\\b/i],[VERSION,[NAME,\"Maxthon\"]],[/(kindle)\\/([\\w\\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\\/ ]?([\\w\\.]*)/i,/(avant|iemobile|slim(?:browser|boat|jet))[\\/ ]?([\\d\\.]*)/i,/(?:ms|\\()(ie) ([\\w\\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon)\\/([-\\w\\.]+)/i,/(heytap|ovi|115)browser\\/([\\d\\.]+)/i,/(weibo)__([\\d\\.]+)/i],[NAME,VERSION],[/quark(?:pc)?\\/([-\\w\\.]+)/i],[VERSION,[NAME,\"Quark\"]],[/\\bddg\\/([\\w\\.]+)/i],[VERSION,[NAME,\"DuckDuckGo\"]],[/(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i],[VERSION,[NAME,\"UC\"+BROWSER]],[/microm.+\\bqbcore\\/([\\w\\.]+)/i,/\\bqbcore\\/([\\w\\.]+).+microm/i,/micromessenger\\/([\\w\\.]+)/i],[VERSION,[NAME,\"WeChat\"]],[/konqueror\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Konqueror\"]],[/trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i],[VERSION,[NAME,\"IE\"]],[/ya(?:search)?browser\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Yandex\"]],[/slbrowser\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Smart Lenovo \"+BROWSER]],[/(avast|avg)\\/([\\w\\.]+)/i],[[NAME,/(.+)/,\"$1 Secure \"+BROWSER],VERSION],[/\\bfocus\\/([\\w\\.]+)/i],[VERSION,[NAME,FIREFOX+\" Focus\"]],[/\\bopt\\/([\\w\\.]+)/i],[VERSION,[NAME,OPERA+\" Touch\"]],[/coc_coc\\w+\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Coc Coc\"]],[/dolfin\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Dolphin\"]],[/coast\\/([\\w\\.]+)/i],[VERSION,[NAME,OPERA+\" Coast\"]],[/miuibrowser\\/([\\w\\.]+)/i],[VERSION,[NAME,\"MIUI\"+SUFFIX_BROWSER]],[/fxios\\/([\\w\\.-]+)/i],[VERSION,[NAME,FIREFOX]],[/\\bqihoobrowser\\/?([\\w\\.]*)/i],[VERSION,[NAME,\"360\"]],[/\\b(qq)\\/([\\w\\.]+)/i],[[NAME,/(.+)/,\"$1Browser\"],VERSION],[/(oculus|sailfish|huawei|vivo|pico)browser\\/([\\w\\.]+)/i],[[NAME,/(.+)/,\"$1\"+SUFFIX_BROWSER],VERSION],[/samsungbrowser\\/([\\w\\.]+)/i],[VERSION,[NAME,SAMSUNG+\" Internet\"]],[/metasr[\\/ ]?([\\d\\.]+)/i],[VERSION,[NAME,\"Sogou Explorer\"]],[/(sogou)mo\\w+\\/([\\d\\.]+)/i],[[NAME,\"Sogou Mobile\"],VERSION],[/(electron)\\/([\\w\\.]+) safari/i,/(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i,/m?(qqbrowser|2345(?=browser|chrome|explorer))\\w*[\\/ ]?v?([\\w\\.]+)/i],[NAME,VERSION],[/(lbbrowser|rekonq)/i,/\\[(linkedin)app\\]/i],[NAME],[/ome\\/([\\w\\.]+) \\w* ?(iron) saf/i,/ome\\/([\\w\\.]+).+qihu (360)[es]e/i],[VERSION,NAME],[/((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i],[[NAME,FACEBOOK],VERSION],[/(Klarna)\\/([\\w\\.]+)/i,/(kakao(?:talk|story))[\\/ ]([\\w\\.]+)/i,/(naver)\\(.*?(\\d+\\.[\\w\\.]+).*\\)/i,/safari (line)\\/([\\w\\.]+)/i,/\\b(line)\\/([\\w\\.]+)\\/iab/i,/(alipay)client\\/([\\w\\.]+)/i,/(twitter)(?:and| f.+e\\/([\\w\\.]+))/i,/(chromium|instagram|snapchat)[\\/ ]([-\\w\\.]+)/i],[NAME,VERSION],[/\\bgsa\\/([\\w\\.]+) .*safari\\//i],[VERSION,[NAME,\"GSA\"]],[/musical_ly(?:.+app_?version\\/|_)([\\w\\.]+)/i],[VERSION,[NAME,\"TikTok\"]],[/headlesschrome(?:\\/([\\w\\.]+)| )/i],[VERSION,[NAME,CHROME+\" Headless\"]],[/ wv\\).+(chrome)\\/([\\w\\.]+)/i],[[NAME,CHROME+\" WebView\"],VERSION],[/droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i],[VERSION,[NAME,\"Android \"+BROWSER]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i],[NAME,VERSION],[/version\\/([\\w\\.\\,]+) .*mobile\\/\\w+ (safari)/i],[VERSION,[NAME,\"Mobile Safari\"]],[/version\\/([\\w(\\.|\\,)]+) .*(mobile ?safari|safari)/i],[VERSION,NAME],[/webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i],[NAME,[VERSION,strMapper,oldSafariMap]],[/(webkit|khtml)\\/([\\w\\.]+)/i],[NAME,VERSION],[/(navigator|netscape\\d?)\\/([-\\w\\.]+)/i],[[NAME,\"Netscape\"],VERSION],[/(wolvic|librewolf)\\/([\\w\\.]+)/i],[NAME,VERSION],[/mobile vr; rv:([\\w\\.]+)\\).+firefox/i],[VERSION,[NAME,FIREFOX+\" Reality\"]],[/ekiohf.+(flow)\\/([\\w\\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\\/ ]?([\\w\\.\\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,/(firefox)\\/([\\w\\.]+)/i,/(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|obigo|mosaic|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,/(links) \\(([\\w\\.]+)/i],[NAME,[VERSION,/_/g,\".\"]],[/(cobalt)\\/([\\w\\.]+)/i],[NAME,[VERSION,/master.|lts./,\"\"]]],cpu:[[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\\)]/i],[[ARCHITECTURE,\"amd64\"]],[/(ia32(?=;))/i],[[ARCHITECTURE,lowerize]],[/((?:i[346]|x)86)[;\\)]/i],[[ARCHITECTURE,\"ia32\"]],[/\\b(aarch64|arm(v?8e?l?|_?64))\\b/i],[[ARCHITECTURE,\"arm64\"]],[/\\b(arm(?:v[67])?ht?n?[fl]p?)\\b/i],[[ARCHITECTURE,\"armhf\"]],[/windows (ce|mobile); ppc;/i],[[ARCHITECTURE,\"arm\"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\\))/i],[[ARCHITECTURE,/ower/,EMPTY,lowerize]],[/(sun4\\w)[;\\)]/i],[[ARCHITECTURE,\"sparc\"]],[/((?:avr32|ia64(?=;))|68k(?=\\))|\\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\\b|pa-risc)/i],[[ARCHITECTURE,lowerize]]],device:[[/\\b(sch-i[89]0\\d|shw-m380s|sm-[ptx]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i],[MODEL,[VENDOR,SAMSUNG],[TYPE,TABLET]],[/\\b((?:s[cgp]h|gt|sm)-(?![lr])\\w+|sc[g-]?[\\d]+a?|galaxy nexus)/i,/samsung[- ]((?!sm-[lr])[-\\w]+)/i,/sec-(sgh\\w+)/i],[MODEL,[VENDOR,SAMSUNG],[TYPE,MOBILE]],[/(?:\\/|\\()(ip(?:hone|od)[\\w, ]*)(?:\\/|;)/i],[MODEL,[VENDOR,APPLE],[TYPE,MOBILE]],[/\\((ipad);[-\\w\\),; ]+apple/i,/applecoremedia\\/[\\w\\.]+ \\((ipad)/i,/\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i],[MODEL,[VENDOR,APPLE],[TYPE,TABLET]],[/(macintosh);/i],[MODEL,[VENDOR,APPLE]],[/\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i],[MODEL,[VENDOR,SHARP],[TYPE,MOBILE]],[/(?:honor)([-\\w ]+)[;\\)]/i],[MODEL,[VENDOR,\"Honor\"],[TYPE,MOBILE]],[/\\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\\d{2})\\b(?!.+d\\/s)/i],[MODEL,[VENDOR,HUAWEI],[TYPE,TABLET]],[/(?:huawei)([-\\w ]+)[;\\)]/i,/\\b(nexus 6p|\\w{2,4}e?-[atu]?[ln][\\dx][012359c][adn]?)\\b(?!.+d\\/s)/i],[MODEL,[VENDOR,HUAWEI],[TYPE,MOBILE]],[/\\b(poco[\\w ]+|m2\\d{3}j\\d\\d[a-z]{2})(?: bui|\\))/i,/\\b; (\\w+) build\\/hm\\1/i,/\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i,/\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i,/oid[^\\)]+; (m?[12][0-389][01]\\w{3,6}[c-y])( bui|; wv|\\))/i,/\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite|pro)?)(?: bui|\\))/i],[[MODEL,/_/g,\" \"],[VENDOR,XIAOMI],[TYPE,MOBILE]],[/oid[^\\)]+; (2\\d{4}(283|rpbf)[cgl])( bui|\\))/i,/\\b(mi[-_ ]?(?:pad)(?:[\\w_ ]+))(?: bui|\\))/i],[[MODEL,/_/g,\" \"],[VENDOR,XIAOMI],[TYPE,TABLET]],[/; (\\w+) bui.+ oppo/i,/\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i],[MODEL,[VENDOR,\"OPPO\"],[TYPE,MOBILE]],[/\\b(opd2\\d{3}a?) bui/i],[MODEL,[VENDOR,\"OPPO\"],[TYPE,TABLET]],[/vivo (\\w+)(?: bui|\\))/i,/\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i],[MODEL,[VENDOR,\"Vivo\"],[TYPE,MOBILE]],[/\\b(rmx[1-3]\\d{3})(?: bui|;|\\))/i],[MODEL,[VENDOR,\"Realme\"],[TYPE,MOBILE]],[/\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,/\\bmot(?:orola)?[- ](\\w*)/i,/((?:moto[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i],[MODEL,[VENDOR,MOTOROLA],[TYPE,MOBILE]],[/\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i],[MODEL,[VENDOR,MOTOROLA],[TYPE,TABLET]],[/((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i],[MODEL,[VENDOR,LG],[TYPE,TABLET]],[/(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,/\\blg[-e;\\/ ]+((?!browser|netcast|android tv)\\w+)/i,/\\blg-?([\\d\\w]+) bui/i],[MODEL,[VENDOR,LG],[TYPE,MOBILE]],[/(ideatab[-\\w ]+)/i,/lenovo ?(s[56]000[-\\w]+|tab(?:[\\w ]+)|yt[-\\d\\w]{6}|tb[-\\d\\w]{6})/i],[MODEL,[VENDOR,\"Lenovo\"],[TYPE,TABLET]],[/(?:maemo|nokia).*(n900|lumia \\d+)/i,/nokia[-_ ]?([-\\w\\.]*)/i],[[MODEL,/_/g,\" \"],[VENDOR,\"Nokia\"],[TYPE,MOBILE]],[/(pixel c)\\b/i],[MODEL,[VENDOR,GOOGLE],[TYPE,TABLET]],[/droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i],[MODEL,[VENDOR,GOOGLE],[TYPE,MOBILE]],[/droid.+; (a?\\d[0-2]{2}so|[c-g]\\d{4}|so[-gl]\\w+|xq-a\\w[4-7][12])(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i],[MODEL,[VENDOR,SONY],[TYPE,MOBILE]],[/sony tablet [ps]/i,/\\b(?:sony)?sgp\\w+(?: bui|\\))/i],[[MODEL,\"Xperia Tablet\"],[VENDOR,SONY],[TYPE,TABLET]],[/ (kb2005|in20[12]5|be20[12][59])\\b/i,/(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i],[MODEL,[VENDOR,\"OnePlus\"],[TYPE,MOBILE]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo(?!bc)\\w\\w)( bui|\\))/i,/(kf[a-z]+)( bui|\\)).+silk\\//i],[MODEL,[VENDOR,AMAZON],[TYPE,TABLET]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i],[[MODEL,/(.+)/g,\"Fire Phone $1\"],[VENDOR,AMAZON],[TYPE,MOBILE]],[/(playbook);[-\\w\\),; ]+(rim)/i],[MODEL,VENDOR,[TYPE,TABLET]],[/\\b((?:bb[a-f]|st[hv])100-\\d)/i,/\\(bb10; (\\w+)/i],[MODEL,[VENDOR,BLACKBERRY],[TYPE,MOBILE]],[/(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i],[MODEL,[VENDOR,ASUS],[TYPE,TABLET]],[/ (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i],[MODEL,[VENDOR,ASUS],[TYPE,MOBILE]],[/(nexus 9)/i],[MODEL,[VENDOR,\"HTC\"],[TYPE,TABLET]],[/(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i,/(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\\.))|sony(?!-bra))[-_ ]?([-\\w]*)/i],[VENDOR,[MODEL,/_/g,\" \"],[TYPE,MOBILE]],[/droid [\\w\\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])\\w*(\\)| bui)/i],[MODEL,[VENDOR,\"TCL\"],[TYPE,TABLET]],[/(itel) ((\\w+))/i],[[VENDOR,lowerize],MODEL,[TYPE,strMapper,{tablet:[\"p10001l\",\"w7001\"],\"*\":\"mobile\"}]],[/droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i],[MODEL,[VENDOR,\"Acer\"],[TYPE,TABLET]],[/droid.+; (m[1-5] note) bui/i,/\\bmz-([-\\w]{2,})/i],[MODEL,[VENDOR,\"Meizu\"],[TYPE,MOBILE]],[/; ((?:power )?armor(?:[\\w ]{0,8}))(?: bui|\\))/i],[MODEL,[VENDOR,\"Ulefone\"],[TYPE,MOBILE]],[/; (energy ?\\w+)(?: bui|\\))/i,/; energizer ([\\w ]+)(?: bui|\\))/i],[MODEL,[VENDOR,\"Energizer\"],[TYPE,MOBILE]],[/; cat (b35);/i,/; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\\))/i],[MODEL,[VENDOR,\"Cat\"],[TYPE,MOBILE]],[/((?:new )?andromax[\\w- ]+)(?: bui|\\))/i],[MODEL,[VENDOR,\"Smartfren\"],[TYPE,MOBILE]],[/droid.+; (a(?:015|06[35]|142p?))/i],[MODEL,[VENDOR,\"Nothing\"],[TYPE,MOBILE]],[/(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno|micromax|advan)[-_ ]?([-\\w]*)/i,/; (imo) ((?!tab)[\\w ]+?)(?: bui|\\))/i,/(hp) ([\\w ]+\\w)/i,/(asus)-?(\\w+)/i,/(microsoft); (lumia[\\w ]+)/i,/(lenovo)[-_ ]?([-\\w]+)/i,/(jolla)/i,/(oppo) ?([\\w ]+) bui/i],[VENDOR,MODEL,[TYPE,MOBILE]],[/(imo) (tab \\w+)/i,/(kobo)\\s(ereader|touch)/i,/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\\/([\\w\\.]+)/i,/(nook)[\\w ]+build\\/(\\w+)/i,/(dell) (strea[kpr\\d ]*[\\dko])/i,/(le[- ]+pan)[- ]+(\\w{1,9}) bui/i,/(trinity)[- ]*(t\\d{3}) bui/i,/(gigaset)[- ]+(q\\w{1,9}) bui/i,/(vodafone) ([\\w ]+)(?:\\)| bui)/i],[VENDOR,MODEL,[TYPE,TABLET]],[/(surface duo)/i],[MODEL,[VENDOR,MICROSOFT],[TYPE,TABLET]],[/droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i],[MODEL,[VENDOR,\"Fairphone\"],[TYPE,MOBILE]],[/(u304aa)/i],[MODEL,[VENDOR,\"AT&T\"],[TYPE,MOBILE]],[/\\bsie-(\\w*)/i],[MODEL,[VENDOR,\"Siemens\"],[TYPE,MOBILE]],[/\\b(rct\\w+) b/i],[MODEL,[VENDOR,\"RCA\"],[TYPE,TABLET]],[/\\b(venue[\\d ]{2,7}) b/i],[MODEL,[VENDOR,\"Dell\"],[TYPE,TABLET]],[/\\b(q(?:mv|ta)\\w+) b/i],[MODEL,[VENDOR,\"Verizon\"],[TYPE,TABLET]],[/\\b(?:barnes[& ]+noble |bn[rt])([\\w\\+ ]*) b/i],[MODEL,[VENDOR,\"Barnes & Noble\"],[TYPE,TABLET]],[/\\b(tm\\d{3}\\w+) b/i],[MODEL,[VENDOR,\"NuVision\"],[TYPE,TABLET]],[/\\b(k88) b/i],[MODEL,[VENDOR,\"ZTE\"],[TYPE,TABLET]],[/\\b(nx\\d{3}j) b/i],[MODEL,[VENDOR,\"ZTE\"],[TYPE,MOBILE]],[/\\b(gen\\d{3}) b.+49h/i],[MODEL,[VENDOR,\"Swiss\"],[TYPE,MOBILE]],[/\\b(zur\\d{3}) b/i],[MODEL,[VENDOR,\"Swiss\"],[TYPE,TABLET]],[/\\b((zeki)?tb.*\\b) b/i],[MODEL,[VENDOR,\"Zeki\"],[TYPE,TABLET]],[/\\b([yr]\\d{2}) b/i,/\\b(dragon[- ]+touch |dt)(\\w{5}) b/i],[[VENDOR,\"Dragon Touch\"],MODEL,[TYPE,TABLET]],[/\\b(ns-?\\w{0,9}) b/i],[MODEL,[VENDOR,\"Insignia\"],[TYPE,TABLET]],[/\\b((nxa|next)-?\\w{0,9}) b/i],[MODEL,[VENDOR,\"NextBook\"],[TYPE,TABLET]],[/\\b(xtreme\\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[VENDOR,\"Voice\"],MODEL,[TYPE,MOBILE]],[/\\b(lvtel\\-)?(v1[12]) b/i],[[VENDOR,\"LvTel\"],MODEL,[TYPE,MOBILE]],[/\\b(ph-1) /i],[MODEL,[VENDOR,\"Essential\"],[TYPE,MOBILE]],[/\\b(v(100md|700na|7011|917g).*\\b) b/i],[MODEL,[VENDOR,\"Envizen\"],[TYPE,TABLET]],[/\\b(trio[-\\w\\. ]+) b/i],[MODEL,[VENDOR,\"MachSpeed\"],[TYPE,TABLET]],[/\\btu_(1491) b/i],[MODEL,[VENDOR,\"Rotor\"],[TYPE,TABLET]],[/(shield[\\w ]+) b/i],[MODEL,[VENDOR,\"Nvidia\"],[TYPE,TABLET]],[/(sprint) (\\w+)/i],[VENDOR,MODEL,[TYPE,MOBILE]],[/(kin\\.[onetw]{3})/i],[[MODEL,/\\./g,\" \"],[VENDOR,MICROSOFT],[TYPE,MOBILE]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i],[MODEL,[VENDOR,ZEBRA],[TYPE,TABLET]],[/droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i],[MODEL,[VENDOR,ZEBRA],[TYPE,MOBILE]],[/smart-tv.+(samsung)/i],[VENDOR,[TYPE,SMARTTV]],[/hbbtv.+maple;(\\d+)/i],[[MODEL,/^/,\"SmartTV\"],[VENDOR,SAMSUNG],[TYPE,SMARTTV]],[/(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i],[[VENDOR,LG],[TYPE,SMARTTV]],[/(apple) ?tv/i],[VENDOR,[MODEL,APPLE+\" TV\"],[TYPE,SMARTTV]],[/crkey/i],[[MODEL,CHROME+\"cast\"],[VENDOR,GOOGLE],[TYPE,SMARTTV]],[/droid.+aft(\\w+)( bui|\\))/i],[MODEL,[VENDOR,AMAZON],[TYPE,SMARTTV]],[/\\(dtv[\\);].+(aquos)/i,/(aquos-tv[\\w ]+)\\)/i],[MODEL,[VENDOR,SHARP],[TYPE,SMARTTV]],[/(bravia[\\w ]+)( bui|\\))/i],[MODEL,[VENDOR,SONY],[TYPE,SMARTTV]],[/(mitv-\\w{5}) bui/i],[MODEL,[VENDOR,XIAOMI],[TYPE,SMARTTV]],[/Hbbtv.*(technisat) (.*);/i],[VENDOR,MODEL,[TYPE,SMARTTV]],[/\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i,/hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w\\+ ]*; *([\\w\\d][^;]*);([^;]*)/i],[[VENDOR,trim],[MODEL,trim],[TYPE,SMARTTV]],[/\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i],[[TYPE,SMARTTV]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[VENDOR,MODEL,[TYPE,CONSOLE]],[/droid.+; (shield) bui/i],[MODEL,[VENDOR,\"Nvidia\"],[TYPE,CONSOLE]],[/(playstation [345portablevi]+)/i],[MODEL,[VENDOR,SONY],[TYPE,CONSOLE]],[/\\b(xbox(?: one)?(?!; xbox))[\\); ]/i],[MODEL,[VENDOR,MICROSOFT],[TYPE,CONSOLE]],[/\\b(sm-[lr]\\d\\d[05][fnuw]?s?)\\b/i],[MODEL,[VENDOR,SAMSUNG],[TYPE,WEARABLE]],[/((pebble))app/i],[VENDOR,MODEL,[TYPE,WEARABLE]],[/(watch)(?: ?os[,\\/]|\\d,\\d\\/)[\\d\\.]+/i],[MODEL,[VENDOR,APPLE],[TYPE,WEARABLE]],[/droid.+; (glass) \\d/i],[MODEL,[VENDOR,GOOGLE],[TYPE,WEARABLE]],[/droid.+; (wt63?0{2,3})\\)/i],[MODEL,[VENDOR,ZEBRA],[TYPE,WEARABLE]],[/droid.+; (glass) \\d/i],[MODEL,[VENDOR,GOOGLE],[TYPE,WEARABLE]],[/(pico) (4|neo3(?: link|pro)?)/i],[VENDOR,MODEL,[TYPE,WEARABLE]],[/; (quest( \\d| pro)?)/i],[MODEL,[VENDOR,FACEBOOK],[TYPE,WEARABLE]],[/(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i],[VENDOR,[TYPE,EMBEDDED]],[/(aeobc)\\b/i],[MODEL,[VENDOR,AMAZON],[TYPE,EMBEDDED]],[/droid .+?; ([^;]+?)(?: bui|; wv\\)|\\) applew).+? mobile safari/i],[MODEL,[TYPE,MOBILE]],[/droid .+?; ([^;]+?)(?: bui|\\) applew).+?(?! mobile) safari/i],[MODEL,[TYPE,TABLET]],[/\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i],[[TYPE,TABLET]],[/(phone|mobile(?:[;\\/]| [ \\w\\/\\.]*safari)|pda(?=.+windows ce))/i],[[TYPE,MOBILE]],[/(android[-\\w\\. ]{0,9});.+buil/i],[MODEL,[VENDOR,\"Generic\"]]],engine:[[/windows.+ edge\\/([\\w\\.]+)/i],[VERSION,[NAME,EDGE+\"HTML\"]],[/(arkweb)\\/([\\w\\.]+)/i],[NAME,VERSION],[/webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i],[VERSION,[NAME,\"Blink\"]],[/(presto)\\/([\\w\\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\\/([\\w\\.]+)/i,/ekioh(flow)\\/([\\w\\.]+)/i,/(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i,/(icab)[\\/ ]([23]\\.[\\d\\.]+)/i,/\\b(libweb)/i],[NAME,VERSION],[/rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i],[VERSION,NAME]],os:[[/microsoft (windows) (vista|xp)/i],[NAME,VERSION],[/(windows (?:phone(?: os)?|mobile))[\\/ ]?([\\d\\.\\w ]*)/i],[NAME,[VERSION,strMapper,windowsVersionMap]],[/windows nt 6\\.2; (arm)/i,/windows[\\/ ]?([ntce\\d\\. ]+\\w)(?!.+xbox)/i,/(?:win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i],[[VERSION,strMapper,windowsVersionMap],[NAME,\"Windows\"]],[/ip[honead]{2,4}\\b(?:.*os ([\\w]+) like mac|; opera)/i,/(?:ios;fbsv\\/|iphone.+ios[\\/ ])([\\d\\.]+)/i,/cfnetwork\\/.+darwin/i],[[VERSION,/_/g,\".\"],[NAME,\"iOS\"]],[/(mac os x) ?([\\w\\. ]*)/i,/(macintosh|mac_powerpc\\b)(?!.+haiku)/i],[[NAME,MAC_OS],[VERSION,/_/g,\".\"]],[/droid ([\\w\\.]+)\\b.+(android[- ]x86|harmonyos)/i],[VERSION,NAME],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish|openharmony)[-\\/ ]?([\\w\\.]*)/i,/(blackberry)\\w*\\/([\\w\\.]*)/i,/(tizen|kaios)[\\/ ]([\\w\\.]+)/i,/\\((series40);/i],[NAME,VERSION],[/\\(bb(10);/i],[VERSION,[NAME,BLACKBERRY]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\\/ ]?([\\w\\.]*)/i],[VERSION,[NAME,\"Symbian\"]],[/mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i],[VERSION,[NAME,FIREFOX+\" OS\"]],[/web0s;.+rt(tv)/i,/\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i],[VERSION,[NAME,\"webOS\"]],[/watch(?: ?os[,\\/]|\\d,\\d\\/)([\\d\\.]+)/i],[VERSION,[NAME,\"watchOS\"]],[/crkey\\/([\\d\\.]+)/i],[VERSION,[NAME,CHROME+\"cast\"]],[/(cros) [\\w]+(?:\\)| ([\\w\\.]+)\\b)/i],[[NAME,CHROMIUM_OS],VERSION],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\\/(\\d+\\.[\\w\\.]+)/i,/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^\\);]+)/i,/\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i,/(mint)[\\/\\(\\) ]?(\\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,/(hurd|linux) ?([\\w\\.]*)/i,/(gnu) ?([\\w\\.]*)/i,/\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i,/(haiku) (\\w+)/i],[NAME,VERSION],[/(sunos) ?([\\w\\.\\d]*)/i],[[NAME,\"Solaris\"],VERSION],[/((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i,/(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i,/\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\\w\\.]*)/i],[NAME,VERSION]]};var UAParser=function(ua,extensions){if(typeof ua===OBJ_TYPE){extensions=ua;ua=undefined}if(!(this instanceof UAParser)){return new UAParser(ua,extensions).getResult()}var _navigator=typeof window!==UNDEF_TYPE&&window.navigator?window.navigator:undefined;var _ua=ua||(_navigator&&_navigator.userAgent?_navigator.userAgent:EMPTY);var _uach=_navigator&&_navigator.userAgentData?_navigator.userAgentData:undefined;var _rgxmap=extensions?extend(regexes,extensions):regexes;var _isSelfNav=_navigator&&_navigator.userAgent==_ua;this.getBrowser=function(){var _browser={};_browser[NAME]=undefined;_browser[VERSION]=undefined;rgxMapper.call(_browser,_ua,_rgxmap.browser);_browser[MAJOR]=majorize(_browser[VERSION]);if(_isSelfNav&&_navigator&&_navigator.brave&&typeof _navigator.brave.isBrave==FUNC_TYPE){_browser[NAME]=\"Brave\"}return _browser};this.getCPU=function(){var _cpu={};_cpu[ARCHITECTURE]=undefined;rgxMapper.call(_cpu,_ua,_rgxmap.cpu);return _cpu};this.getDevice=function(){var _device={};_device[VENDOR]=undefined;_device[MODEL]=undefined;_device[TYPE]=undefined;rgxMapper.call(_device,_ua,_rgxmap.device);if(_isSelfNav&&!_device[TYPE]&&_uach&&_uach.mobile){_device[TYPE]=MOBILE}if(_isSelfNav&&_device[MODEL]==\"Macintosh\"&&_navigator&&typeof _navigator.standalone!==UNDEF_TYPE&&_navigator.maxTouchPoints&&_navigator.maxTouchPoints>2){_device[MODEL]=\"iPad\";_device[TYPE]=TABLET}return _device};this.getEngine=function(){var _engine={};_engine[NAME]=undefined;_engine[VERSION]=undefined;rgxMapper.call(_engine,_ua,_rgxmap.engine);return _engine};this.getOS=function(){var _os={};_os[NAME]=undefined;_os[VERSION]=undefined;rgxMapper.call(_os,_ua,_rgxmap.os);if(_isSelfNav&&!_os[NAME]&&_uach&&_uach.platform&&_uach.platform!=\"Unknown\"){_os[NAME]=_uach.platform.replace(/chrome os/i,CHROMIUM_OS).replace(/macos/i,MAC_OS)}return _os};this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}};this.getUA=function(){return _ua};this.setUA=function(ua){_ua=typeof ua===STR_TYPE&&ua.length>UA_MAX_LENGTH?trim(ua,UA_MAX_LENGTH):ua;return this};this.setUA(_ua);return this};UAParser.VERSION=LIBVERSION;UAParser.BROWSER=enumerize([NAME,VERSION,MAJOR]);UAParser.CPU=enumerize([ARCHITECTURE]);UAParser.DEVICE=enumerize([MODEL,VENDOR,TYPE,CONSOLE,MOBILE,SMARTTV,TABLET,WEARABLE,EMBEDDED]);UAParser.ENGINE=UAParser.OS=enumerize([NAME,VERSION]);if(typeof exports!==UNDEF_TYPE){if(typeof module!==UNDEF_TYPE&&module.exports){exports=module.exports=UAParser}exports.UAParser=UAParser}else{if(typeof define===FUNC_TYPE&&define.amd){define(function(){return UAParser})}else if(typeof window!==UNDEF_TYPE){window.UAParser=UAParser}}var $=typeof window!==UNDEF_TYPE&&(window.jQuery||window.Zepto);if($&&!$.ua){var parser=new UAParser;$.ua=parser.getResult();$.ua.get=function(){return parser.getUA()};$.ua.set=function(ua){parser.setUA(ua);var result=parser.getResult();for(var prop in result){$.ua[prop]=result[prop]}}}})(typeof window===\"object\"?window:this);","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar React = require('react');\nvar React__default = _interopDefault(React);\n\nvar UAParser = require('ua-parser-js/dist/ua-parser.min');\n\nvar ClientUAInstance = new UAParser();\nvar browser = ClientUAInstance.getBrowser();\nvar cpu = ClientUAInstance.getCPU();\nvar device = ClientUAInstance.getDevice();\nvar engine = ClientUAInstance.getEngine();\nvar os = ClientUAInstance.getOS();\nvar ua = ClientUAInstance.getUA();\nvar setUa = function setUa(userAgentString) {\n  return ClientUAInstance.setUA(userAgentString);\n};\nvar parseUserAgent = function parseUserAgent(userAgent) {\n  if (!userAgent) {\n    console.error('No userAgent string was provided');\n    return;\n  }\n\n  var UserAgentInstance = new UAParser(userAgent);\n  return {\n    UA: UserAgentInstance,\n    browser: UserAgentInstance.getBrowser(),\n    cpu: UserAgentInstance.getCPU(),\n    device: UserAgentInstance.getDevice(),\n    engine: UserAgentInstance.getEngine(),\n    os: UserAgentInstance.getOS(),\n    ua: UserAgentInstance.getUA(),\n    setUserAgent: function setUserAgent(userAgentString) {\n      return UserAgentInstance.setUA(userAgentString);\n    }\n  };\n};\n\nvar UAHelper = /*#__PURE__*/Object.freeze({\n  ClientUAInstance: ClientUAInstance,\n  browser: browser,\n  cpu: cpu,\n  device: device,\n  engine: engine,\n  os: os,\n  ua: ua,\n  setUa: setUa,\n  parseUserAgent: parseUserAgent\n});\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n\n    if (enumerableOnly) {\n      symbols = symbols.filter(function (sym) {\n        return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n      });\n    }\n\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys(Object(source), true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys(Object(source)).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\nfunction _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  return _setPrototypeOf(o, p);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n\n  var target = _objectWithoutPropertiesLoose(source, excluded);\n\n  var key, i;\n\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}\n\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n    return call;\n  } else if (call !== void 0) {\n    throw new TypeError(\"Derived constructors may only return object or undefined\");\n  }\n\n  return _assertThisInitialized(self);\n}\n\nfunction _slicedToArray(arr, i) {\n  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n  var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n  if (_i == null) return;\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n\n  var _s, _e;\n\n  try {\n    for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n\n  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n  return arr2;\n}\n\nfunction _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar DeviceTypes = {\n  Mobile: 'mobile',\n  Tablet: 'tablet',\n  SmartTv: 'smarttv',\n  Console: 'console',\n  Wearable: 'wearable',\n  Embedded: 'embedded',\n  Browser: undefined\n};\nvar BrowserTypes = {\n  Chrome: 'Chrome',\n  Firefox: 'Firefox',\n  Opera: 'Opera',\n  Yandex: 'Yandex',\n  Safari: 'Safari',\n  InternetExplorer: 'Internet Explorer',\n  Edge: 'Edge',\n  Chromium: 'Chromium',\n  Ie: 'IE',\n  MobileSafari: 'Mobile Safari',\n  EdgeChromium: 'Edge Chromium',\n  MIUI: 'MIUI Browser',\n  SamsungBrowser: 'Samsung Browser'\n};\nvar OsTypes = {\n  IOS: 'iOS',\n  Android: 'Android',\n  WindowsPhone: 'Windows Phone',\n  Windows: 'Windows',\n  MAC_OS: 'Mac OS'\n};\nvar InitialDeviceTypes = {\n  isMobile: false,\n  isTablet: false,\n  isBrowser: false,\n  isSmartTV: false,\n  isConsole: false,\n  isWearable: false\n};\n\nvar checkDeviceType = function checkDeviceType(type) {\n  switch (type) {\n    case DeviceTypes.Mobile:\n      return {\n        isMobile: true\n      };\n\n    case DeviceTypes.Tablet:\n      return {\n        isTablet: true\n      };\n\n    case DeviceTypes.SmartTv:\n      return {\n        isSmartTV: true\n      };\n\n    case DeviceTypes.Console:\n      return {\n        isConsole: true\n      };\n\n    case DeviceTypes.Wearable:\n      return {\n        isWearable: true\n      };\n\n    case DeviceTypes.Browser:\n      return {\n        isBrowser: true\n      };\n\n    case DeviceTypes.Embedded:\n      return {\n        isEmbedded: true\n      };\n\n    default:\n      return InitialDeviceTypes;\n  }\n};\nvar setUserAgent = function setUserAgent(userAgent) {\n  return setUa(userAgent);\n};\nvar setDefaults = function setDefaults(p) {\n  var d = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'none';\n  return p ? p : d;\n};\nvar getNavigatorInstance = function getNavigatorInstance() {\n  if (typeof window !== 'undefined') {\n    if (window.navigator || navigator) {\n      return window.navigator || navigator;\n    }\n  }\n\n  return false;\n};\nvar isIOS13Check = function isIOS13Check(type) {\n  var nav = getNavigatorInstance();\n  return nav && nav.platform && (nav.platform.indexOf(type) !== -1 || nav.platform === 'MacIntel' && nav.maxTouchPoints > 1 && !window.MSStream);\n};\n\nvar browserPayload = function browserPayload(isBrowser, browser, engine, os, ua) {\n  return {\n    isBrowser: isBrowser,\n    browserMajorVersion: setDefaults(browser.major),\n    browserFullVersion: setDefaults(browser.version),\n    browserName: setDefaults(browser.name),\n    engineName: setDefaults(engine.name),\n    engineVersion: setDefaults(engine.version),\n    osName: setDefaults(os.name),\n    osVersion: setDefaults(os.version),\n    userAgent: setDefaults(ua)\n  };\n};\nvar mobilePayload = function mobilePayload(type, device, os, ua) {\n  return _objectSpread2({}, type, {\n    vendor: setDefaults(device.vendor),\n    model: setDefaults(device.model),\n    os: setDefaults(os.name),\n    osVersion: setDefaults(os.version),\n    ua: setDefaults(ua)\n  });\n};\nvar smartTvPayload = function smartTvPayload(isSmartTV, engine, os, ua) {\n  return {\n    isSmartTV: isSmartTV,\n    engineName: setDefaults(engine.name),\n    engineVersion: setDefaults(engine.version),\n    osName: setDefaults(os.name),\n    osVersion: setDefaults(os.version),\n    userAgent: setDefaults(ua)\n  };\n};\nvar consolePayload = function consolePayload(isConsole, engine, os, ua) {\n  return {\n    isConsole: isConsole,\n    engineName: setDefaults(engine.name),\n    engineVersion: setDefaults(engine.version),\n    osName: setDefaults(os.name),\n    osVersion: setDefaults(os.version),\n    userAgent: setDefaults(ua)\n  };\n};\nvar wearablePayload = function wearablePayload(isWearable, engine, os, ua) {\n  return {\n    isWearable: isWearable,\n    engineName: setDefaults(engine.name),\n    engineVersion: setDefaults(engine.version),\n    osName: setDefaults(os.name),\n    osVersion: setDefaults(os.version),\n    userAgent: setDefaults(ua)\n  };\n};\nvar embeddedPayload = function embeddedPayload(isEmbedded, device, engine, os, ua) {\n  return {\n    isEmbedded: isEmbedded,\n    vendor: setDefaults(device.vendor),\n    model: setDefaults(device.model),\n    engineName: setDefaults(engine.name),\n    engineVersion: setDefaults(engine.version),\n    osName: setDefaults(os.name),\n    osVersion: setDefaults(os.version),\n    userAgent: setDefaults(ua)\n  };\n};\n\nfunction deviceDetect(userAgent) {\n  var _ref = userAgent ? parseUserAgent(userAgent) : UAHelper,\n      device = _ref.device,\n      browser = _ref.browser,\n      engine = _ref.engine,\n      os = _ref.os,\n      ua = _ref.ua;\n\n  var type = checkDeviceType(device.type);\n  var isBrowser = type.isBrowser,\n      isMobile = type.isMobile,\n      isTablet = type.isTablet,\n      isSmartTV = type.isSmartTV,\n      isConsole = type.isConsole,\n      isWearable = type.isWearable,\n      isEmbedded = type.isEmbedded;\n\n  if (isBrowser) {\n    return browserPayload(isBrowser, browser, engine, os, ua);\n  }\n\n  if (isSmartTV) {\n    return smartTvPayload(isSmartTV, engine, os, ua);\n  }\n\n  if (isConsole) {\n    return consolePayload(isConsole, engine, os, ua);\n  }\n\n  if (isMobile) {\n    return mobilePayload(type, device, os, ua);\n  }\n\n  if (isTablet) {\n    return mobilePayload(type, device, os, ua);\n  }\n\n  if (isWearable) {\n    return wearablePayload(isWearable, engine, os, ua);\n  }\n\n  if (isEmbedded) {\n    return embeddedPayload(isEmbedded, device, engine, os, ua);\n  }\n}\n\nvar isMobileType = function isMobileType(_ref) {\n  var type = _ref.type;\n  return type === DeviceTypes.Mobile;\n};\nvar isTabletType = function isTabletType(_ref2) {\n  var type = _ref2.type;\n  return type === DeviceTypes.Tablet;\n};\nvar isMobileAndTabletType = function isMobileAndTabletType(_ref3) {\n  var type = _ref3.type;\n  return type === DeviceTypes.Mobile || type === DeviceTypes.Tablet;\n};\nvar isSmartTVType = function isSmartTVType(_ref4) {\n  var type = _ref4.type;\n  return type === DeviceTypes.SmartTv;\n};\nvar isBrowserType = function isBrowserType(_ref5) {\n  var type = _ref5.type;\n  return type === DeviceTypes.Browser;\n};\nvar isWearableType = function isWearableType(_ref6) {\n  var type = _ref6.type;\n  return type === DeviceTypes.Wearable;\n};\nvar isConsoleType = function isConsoleType(_ref7) {\n  var type = _ref7.type;\n  return type === DeviceTypes.Console;\n};\nvar isEmbeddedType = function isEmbeddedType(_ref8) {\n  var type = _ref8.type;\n  return type === DeviceTypes.Embedded;\n};\nvar getMobileVendor = function getMobileVendor(_ref9) {\n  var vendor = _ref9.vendor;\n  return setDefaults(vendor);\n};\nvar getMobileModel = function getMobileModel(_ref10) {\n  var model = _ref10.model;\n  return setDefaults(model);\n};\nvar getDeviceType = function getDeviceType(_ref11) {\n  var type = _ref11.type;\n  return setDefaults(type, 'browser');\n}; // os types\n\nvar isAndroidType = function isAndroidType(_ref12) {\n  var name = _ref12.name;\n  return name === OsTypes.Android;\n};\nvar isWindowsType = function isWindowsType(_ref13) {\n  var name = _ref13.name;\n  return name === OsTypes.Windows;\n};\nvar isMacOsType = function isMacOsType(_ref14) {\n  var name = _ref14.name;\n  return name === OsTypes.MAC_OS;\n};\nvar isWinPhoneType = function isWinPhoneType(_ref15) {\n  var name = _ref15.name;\n  return name === OsTypes.WindowsPhone;\n};\nvar isIOSType = function isIOSType(_ref16) {\n  var name = _ref16.name;\n  return name === OsTypes.IOS;\n};\nvar getOsVersion = function getOsVersion(_ref17) {\n  var version = _ref17.version;\n  return setDefaults(version);\n};\nvar getOsName = function getOsName(_ref18) {\n  var name = _ref18.name;\n  return setDefaults(name);\n}; // browser types\n\nvar isChromeType = function isChromeType(_ref19) {\n  var name = _ref19.name;\n  return name === BrowserTypes.Chrome;\n};\nvar isFirefoxType = function isFirefoxType(_ref20) {\n  var name = _ref20.name;\n  return name === BrowserTypes.Firefox;\n};\nvar isChromiumType = function isChromiumType(_ref21) {\n  var name = _ref21.name;\n  return name === BrowserTypes.Chromium;\n};\nvar isEdgeType = function isEdgeType(_ref22) {\n  var name = _ref22.name;\n  return name === BrowserTypes.Edge;\n};\nvar isYandexType = function isYandexType(_ref23) {\n  var name = _ref23.name;\n  return name === BrowserTypes.Yandex;\n};\nvar isSafariType = function isSafariType(_ref24) {\n  var name = _ref24.name;\n  return name === BrowserTypes.Safari || name === BrowserTypes.MobileSafari;\n};\nvar isMobileSafariType = function isMobileSafariType(_ref25) {\n  var name = _ref25.name;\n  return name === BrowserTypes.MobileSafari;\n};\nvar isOperaType = function isOperaType(_ref26) {\n  var name = _ref26.name;\n  return name === BrowserTypes.Opera;\n};\nvar isIEType = function isIEType(_ref27) {\n  var name = _ref27.name;\n  return name === BrowserTypes.InternetExplorer || name === BrowserTypes.Ie;\n};\nvar isMIUIType = function isMIUIType(_ref28) {\n  var name = _ref28.name;\n  return name === BrowserTypes.MIUI;\n};\nvar isSamsungBrowserType = function isSamsungBrowserType(_ref29) {\n  var name = _ref29.name;\n  return name === BrowserTypes.SamsungBrowser;\n};\nvar getBrowserFullVersion = function getBrowserFullVersion(_ref30) {\n  var version = _ref30.version;\n  return setDefaults(version);\n};\nvar getBrowserVersion = function getBrowserVersion(_ref31) {\n  var major = _ref31.major;\n  return setDefaults(major);\n};\nvar getBrowserName = function getBrowserName(_ref32) {\n  var name = _ref32.name;\n  return setDefaults(name);\n}; // engine types\n\nvar getEngineName = function getEngineName(_ref33) {\n  var name = _ref33.name;\n  return setDefaults(name);\n};\nvar getEngineVersion = function getEngineVersion(_ref34) {\n  var version = _ref34.version;\n  return setDefaults(version);\n};\nvar isElectronType = function isElectronType() {\n  var nav = getNavigatorInstance();\n  var ua = nav && nav.userAgent && nav.userAgent.toLowerCase();\n  return typeof ua === 'string' ? /electron/.test(ua) : false;\n};\nvar isEdgeChromiumType = function isEdgeChromiumType(ua) {\n  return typeof ua === 'string' && ua.indexOf('Edg/') !== -1;\n};\nvar getIOS13 = function getIOS13() {\n  var nav = getNavigatorInstance();\n  return nav && (/iPad|iPhone|iPod/.test(nav.platform) || nav.platform === 'MacIntel' && nav.maxTouchPoints > 1) && !window.MSStream;\n};\nvar getIPad13 = function getIPad13() {\n  return isIOS13Check('iPad');\n};\nvar getIphone13 = function getIphone13() {\n  return isIOS13Check('iPhone');\n};\nvar getIPod13 = function getIPod13() {\n  return isIOS13Check('iPod');\n};\nvar getUseragent = function getUseragent(userAg) {\n  return setDefaults(userAg);\n};\n\nfunction buildSelectorsObject(options) {\n  var _ref = options ? options : UAHelper,\n      device = _ref.device,\n      browser = _ref.browser,\n      os = _ref.os,\n      engine = _ref.engine,\n      ua = _ref.ua;\n\n  return {\n    isSmartTV: isSmartTVType(device),\n    isConsole: isConsoleType(device),\n    isWearable: isWearableType(device),\n    isEmbedded: isEmbeddedType(device),\n    isMobileSafari: isMobileSafariType(browser) || getIPad13(),\n    isChromium: isChromiumType(browser),\n    isMobile: isMobileAndTabletType(device) || getIPad13(),\n    isMobileOnly: isMobileType(device),\n    isTablet: isTabletType(device) || getIPad13(),\n    isBrowser: isBrowserType(device),\n    isDesktop: isBrowserType(device),\n    isAndroid: isAndroidType(os),\n    isWinPhone: isWinPhoneType(os),\n    isIOS: isIOSType(os) || getIPad13(),\n    isChrome: isChromeType(browser),\n    isFirefox: isFirefoxType(browser),\n    isSafari: isSafariType(browser),\n    isOpera: isOperaType(browser),\n    isIE: isIEType(browser),\n    osVersion: getOsVersion(os),\n    osName: getOsName(os),\n    fullBrowserVersion: getBrowserFullVersion(browser),\n    browserVersion: getBrowserVersion(browser),\n    browserName: getBrowserName(browser),\n    mobileVendor: getMobileVendor(device),\n    mobileModel: getMobileModel(device),\n    engineName: getEngineName(engine),\n    engineVersion: getEngineVersion(engine),\n    getUA: getUseragent(ua),\n    isEdge: isEdgeType(browser) || isEdgeChromiumType(ua),\n    isYandex: isYandexType(browser),\n    deviceType: getDeviceType(device),\n    isIOS13: getIOS13(),\n    isIPad13: getIPad13(),\n    isIPhone13: getIphone13(),\n    isIPod13: getIPod13(),\n    isElectron: isElectronType(),\n    isEdgeChromium: isEdgeChromiumType(ua),\n    isLegacyEdge: isEdgeType(browser) && !isEdgeChromiumType(ua),\n    isWindows: isWindowsType(os),\n    isMacOs: isMacOsType(os),\n    isMIUI: isMIUIType(browser),\n    isSamsungBrowser: isSamsungBrowserType(browser)\n  };\n}\n\nvar isSmartTV = isSmartTVType(device);\nvar isConsole = isConsoleType(device);\nvar isWearable = isWearableType(device);\nvar isEmbedded = isEmbeddedType(device);\nvar isMobileSafari = isMobileSafariType(browser) || getIPad13();\nvar isChromium = isChromiumType(browser);\nvar isMobile = isMobileAndTabletType(device) || getIPad13();\nvar isMobileOnly = isMobileType(device);\nvar isTablet = isTabletType(device) || getIPad13();\nvar isBrowser = isBrowserType(device);\nvar isDesktop = isBrowserType(device);\nvar isAndroid = isAndroidType(os);\nvar isWinPhone = isWinPhoneType(os);\nvar isIOS = isIOSType(os) || getIPad13();\nvar isChrome = isChromeType(browser);\nvar isFirefox = isFirefoxType(browser);\nvar isSafari = isSafariType(browser);\nvar isOpera = isOperaType(browser);\nvar isIE = isIEType(browser);\nvar osVersion = getOsVersion(os);\nvar osName = getOsName(os);\nvar fullBrowserVersion = getBrowserFullVersion(browser);\nvar browserVersion = getBrowserVersion(browser);\nvar browserName = getBrowserName(browser);\nvar mobileVendor = getMobileVendor(device);\nvar mobileModel = getMobileModel(device);\nvar engineName = getEngineName(engine);\nvar engineVersion = getEngineVersion(engine);\nvar getUA = getUseragent(ua);\nvar isEdge = isEdgeType(browser) || isEdgeChromiumType(ua);\nvar isYandex = isYandexType(browser);\nvar deviceType = getDeviceType(device);\nvar isIOS13 = getIOS13();\nvar isIPad13 = getIPad13();\nvar isIPhone13 = getIphone13();\nvar isIPod13 = getIPod13();\nvar isElectron = isElectronType();\nvar isEdgeChromium = isEdgeChromiumType(ua);\nvar isLegacyEdge = isEdgeType(browser) && !isEdgeChromiumType(ua);\nvar isWindows = isWindowsType(os);\nvar isMacOs = isMacOsType(os);\nvar isMIUI = isMIUIType(browser);\nvar isSamsungBrowser = isSamsungBrowserType(browser);\nvar getSelectorsByUserAgent = function getSelectorsByUserAgent(userAgent) {\n  if (!userAgent || typeof userAgent !== 'string') {\n    console.error('No valid user agent string was provided');\n    return;\n  }\n\n  var _UAHelper$parseUserAg = parseUserAgent(userAgent),\n      device = _UAHelper$parseUserAg.device,\n      browser = _UAHelper$parseUserAg.browser,\n      os = _UAHelper$parseUserAg.os,\n      engine = _UAHelper$parseUserAg.engine,\n      ua = _UAHelper$parseUserAg.ua;\n\n  return buildSelectorsObject({\n    device: device,\n    browser: browser,\n    os: os,\n    engine: engine,\n    ua: ua\n  });\n};\n\nvar AndroidView = function AndroidView(_ref) {\n  var renderWithFragment = _ref.renderWithFragment,\n      children = _ref.children,\n      props = _objectWithoutProperties(_ref, [\"renderWithFragment\", \"children\"]);\n\n  return isAndroid ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar BrowserView = function BrowserView(_ref2) {\n  var renderWithFragment = _ref2.renderWithFragment,\n      children = _ref2.children,\n      props = _objectWithoutProperties(_ref2, [\"renderWithFragment\", \"children\"]);\n\n  return isBrowser ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar IEView = function IEView(_ref3) {\n  var renderWithFragment = _ref3.renderWithFragment,\n      children = _ref3.children,\n      props = _objectWithoutProperties(_ref3, [\"renderWithFragment\", \"children\"]);\n\n  return isIE ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar IOSView = function IOSView(_ref4) {\n  var renderWithFragment = _ref4.renderWithFragment,\n      children = _ref4.children,\n      props = _objectWithoutProperties(_ref4, [\"renderWithFragment\", \"children\"]);\n\n  return isIOS ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar MobileView = function MobileView(_ref5) {\n  var renderWithFragment = _ref5.renderWithFragment,\n      children = _ref5.children,\n      props = _objectWithoutProperties(_ref5, [\"renderWithFragment\", \"children\"]);\n\n  return isMobile ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar TabletView = function TabletView(_ref6) {\n  var renderWithFragment = _ref6.renderWithFragment,\n      children = _ref6.children,\n      props = _objectWithoutProperties(_ref6, [\"renderWithFragment\", \"children\"]);\n\n  return isTablet ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar WinPhoneView = function WinPhoneView(_ref7) {\n  var renderWithFragment = _ref7.renderWithFragment,\n      children = _ref7.children,\n      props = _objectWithoutProperties(_ref7, [\"renderWithFragment\", \"children\"]);\n\n  return isWinPhone ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar MobileOnlyView = function MobileOnlyView(_ref8) {\n  var renderWithFragment = _ref8.renderWithFragment,\n      children = _ref8.children,\n      viewClassName = _ref8.viewClassName,\n      style = _ref8.style,\n      props = _objectWithoutProperties(_ref8, [\"renderWithFragment\", \"children\", \"viewClassName\", \"style\"]);\n\n  return isMobileOnly ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar SmartTVView = function SmartTVView(_ref9) {\n  var renderWithFragment = _ref9.renderWithFragment,\n      children = _ref9.children,\n      props = _objectWithoutProperties(_ref9, [\"renderWithFragment\", \"children\"]);\n\n  return isSmartTV ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar ConsoleView = function ConsoleView(_ref10) {\n  var renderWithFragment = _ref10.renderWithFragment,\n      children = _ref10.children,\n      props = _objectWithoutProperties(_ref10, [\"renderWithFragment\", \"children\"]);\n\n  return isConsole ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar WearableView = function WearableView(_ref11) {\n  var renderWithFragment = _ref11.renderWithFragment,\n      children = _ref11.children,\n      props = _objectWithoutProperties(_ref11, [\"renderWithFragment\", \"children\"]);\n\n  return isWearable ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar CustomView = function CustomView(_ref12) {\n  var renderWithFragment = _ref12.renderWithFragment,\n      children = _ref12.children,\n      viewClassName = _ref12.viewClassName,\n      style = _ref12.style,\n      condition = _ref12.condition,\n      props = _objectWithoutProperties(_ref12, [\"renderWithFragment\", \"children\", \"viewClassName\", \"style\", \"condition\"]);\n\n  return condition ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\n\nfunction withOrientationChange(WrappedComponent) {\n  return /*#__PURE__*/function (_React$Component) {\n    _inherits(_class, _React$Component);\n\n    function _class(props) {\n      var _this;\n\n      _classCallCheck(this, _class);\n\n      _this = _possibleConstructorReturn(this, _getPrototypeOf(_class).call(this, props));\n      _this.isEventListenerAdded = false;\n      _this.handleOrientationChange = _this.handleOrientationChange.bind(_assertThisInitialized(_this));\n      _this.onOrientationChange = _this.onOrientationChange.bind(_assertThisInitialized(_this));\n      _this.onPageLoad = _this.onPageLoad.bind(_assertThisInitialized(_this));\n      _this.state = {\n        isLandscape: false,\n        isPortrait: false\n      };\n      return _this;\n    }\n\n    _createClass(_class, [{\n      key: \"handleOrientationChange\",\n      value: function handleOrientationChange() {\n        if (!this.isEventListenerAdded) {\n          this.isEventListenerAdded = true;\n        }\n\n        var orientation = window.innerWidth > window.innerHeight ? 90 : 0;\n        this.setState({\n          isPortrait: orientation === 0,\n          isLandscape: orientation === 90\n        });\n      }\n    }, {\n      key: \"onOrientationChange\",\n      value: function onOrientationChange() {\n        this.handleOrientationChange();\n      }\n    }, {\n      key: \"onPageLoad\",\n      value: function onPageLoad() {\n        this.handleOrientationChange();\n      }\n    }, {\n      key: \"componentDidMount\",\n      value: function componentDidMount() {\n        if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) !== undefined && isMobile) {\n          if (!this.isEventListenerAdded) {\n            this.handleOrientationChange();\n            window.addEventListener(\"load\", this.onPageLoad, false);\n          } else {\n            window.removeEventListener(\"load\", this.onPageLoad, false);\n          }\n\n          window.addEventListener(\"resize\", this.onOrientationChange, false);\n        }\n      }\n    }, {\n      key: \"componentWillUnmount\",\n      value: function componentWillUnmount() {\n        window.removeEventListener(\"resize\", this.onOrientationChange, false);\n      }\n    }, {\n      key: \"render\",\n      value: function render() {\n        return React__default.createElement(WrappedComponent, _extends({}, this.props, {\n          isLandscape: this.state.isLandscape,\n          isPortrait: this.state.isPortrait\n        }));\n      }\n    }]);\n\n    return _class;\n  }(React__default.Component);\n}\n\nfunction useMobileOrientation() {\n  var _useState = React.useState(function () {\n    var orientation = window.innerWidth > window.innerHeight ? 90 : 0;\n    return {\n      isPortrait: orientation === 0,\n      isLandscape: orientation === 90,\n      orientation: orientation === 0 ? 'portrait' : 'landscape'\n    };\n  }),\n      _useState2 = _slicedToArray(_useState, 2),\n      state = _useState2[0],\n      setState = _useState2[1];\n\n  var handleOrientationChange = React.useCallback(function () {\n    var orientation = window.innerWidth > window.innerHeight ? 90 : 0;\n    var next = {\n      isPortrait: orientation === 0,\n      isLandscape: orientation === 90,\n      orientation: orientation === 0 ? 'portrait' : 'landscape'\n    };\n    state.orientation !== next.orientation && setState(next);\n  }, [state.orientation]);\n  React.useEffect(function () {\n    if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) !== undefined && isMobile) {\n      handleOrientationChange();\n      window.addEventListener(\"load\", handleOrientationChange, false);\n      window.addEventListener(\"resize\", handleOrientationChange, false);\n    }\n\n    return function () {\n      window.removeEventListener(\"resize\", handleOrientationChange, false);\n      window.removeEventListener(\"load\", handleOrientationChange, false);\n    };\n  }, [handleOrientationChange]);\n  return state;\n}\n\nfunction useDeviceData(userAgent) {\n  var hookUserAgent = userAgent ? userAgent : window.navigator.userAgent;\n  return parseUserAgent(hookUserAgent);\n}\n\nfunction useDeviceSelectors(userAgent) {\n  var hookUserAgent = userAgent ? userAgent : window.navigator.userAgent;\n  var deviceData = useDeviceData(hookUserAgent);\n  var selectors = buildSelectorsObject(deviceData);\n  return [selectors, deviceData];\n}\n\nexports.AndroidView = AndroidView;\nexports.BrowserTypes = BrowserTypes;\nexports.BrowserView = BrowserView;\nexports.ConsoleView = ConsoleView;\nexports.CustomView = CustomView;\nexports.IEView = IEView;\nexports.IOSView = IOSView;\nexports.MobileOnlyView = MobileOnlyView;\nexports.MobileView = MobileView;\nexports.OsTypes = OsTypes;\nexports.SmartTVView = SmartTVView;\nexports.TabletView = TabletView;\nexports.WearableView = WearableView;\nexports.WinPhoneView = WinPhoneView;\nexports.browserName = browserName;\nexports.browserVersion = browserVersion;\nexports.deviceDetect = deviceDetect;\nexports.deviceType = deviceType;\nexports.engineName = engineName;\nexports.engineVersion = engineVersion;\nexports.fullBrowserVersion = fullBrowserVersion;\nexports.getSelectorsByUserAgent = getSelectorsByUserAgent;\nexports.getUA = getUA;\nexports.isAndroid = isAndroid;\nexports.isBrowser = isBrowser;\nexports.isChrome = isChrome;\nexports.isChromium = isChromium;\nexports.isConsole = isConsole;\nexports.isDesktop = isDesktop;\nexports.isEdge = isEdge;\nexports.isEdgeChromium = isEdgeChromium;\nexports.isElectron = isElectron;\nexports.isEmbedded = isEmbedded;\nexports.isFirefox = isFirefox;\nexports.isIE = isIE;\nexports.isIOS = isIOS;\nexports.isIOS13 = isIOS13;\nexports.isIPad13 = isIPad13;\nexports.isIPhone13 = isIPhone13;\nexports.isIPod13 = isIPod13;\nexports.isLegacyEdge = isLegacyEdge;\nexports.isMIUI = isMIUI;\nexports.isMacOs = isMacOs;\nexports.isMobile = isMobile;\nexports.isMobileOnly = isMobileOnly;\nexports.isMobileSafari = isMobileSafari;\nexports.isOpera = isOpera;\nexports.isSafari = isSafari;\nexports.isSamsungBrowser = isSamsungBrowser;\nexports.isSmartTV = isSmartTV;\nexports.isTablet = isTablet;\nexports.isWearable = isWearable;\nexports.isWinPhone = isWinPhone;\nexports.isWindows = isWindows;\nexports.isYandex = isYandex;\nexports.mobileModel = mobileModel;\nexports.mobileVendor = mobileVendor;\nexports.osName = osName;\nexports.osVersion = osVersion;\nexports.parseUserAgent = parseUserAgent;\nexports.setUserAgent = setUserAgent;\nexports.useDeviceData = useDeviceData;\nexports.useDeviceSelectors = useDeviceSelectors;\nexports.useMobileOrientation = useMobileOrientation;\nexports.withOrientationChange = withOrientationChange;\n","import React, { Component, ErrorInfo } from 'react';\nimport i18next from './i18n'\n\ninterface ErrorBoundaryProps {\n  children: React.ReactNode;\n  fallback?: React.ReactNode;\n}\n\ninterface ErrorBoundaryState {\n  hasError: boolean;\n  error?: Error;\n}\n\nclass ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\n  constructor(props: ErrorBoundaryProps) {\n    super(props);\n    this.state = { hasError: false };\n  }\n\n  static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n    // Update state so the next render will show the fallback UI\n    return { hasError: true, error };\n  }\n\n  componentDidCatch(error: Error, errorInfo: ErrorInfo): void {\n    // You can log the error to an error reporting service\n    console.error('Error caught by boundary:', error);\n    console.error('Component stack:', errorInfo.componentStack);\n  }\n\n  render(): React.ReactNode {\n    if (this.state.hasError) {\n      // You can render any custom fallback UI\n      return this.props.fallback || (\n        <div style={{\n          padding: '20px',\n          border: '1px solid #f5c6cb',\n          borderRadius: '4px',\n          backgroundColor: '#f8d7da',\n          color: '#721c24',\n          margin: '10px 0'\n        }}>\n          <h3>{i18next.t('error.scoreViewerError')}</h3>\n          <p>{this.state.error?.message}</p>\n          <button\n            onClick={() => this.setState({ hasError: false })}\n            style={{\n              backgroundColor: '#721c24',\n              color: 'white',\n              border: 'none',\n              padding: '8px 12px',\n              borderRadius: '4px',\n              cursor: 'pointer'\n            }}\n          >\n            {i18next.t('error.tryAgain')}\n          </button>\n        </div>\n      );\n    }\n\n    return this.props.children;\n  }\n}\n\nexport default ErrorBoundary;\n","import * as React from 'react';\n\nconst LEFT = \"Left\";\nconst RIGHT = \"Right\";\nconst UP = \"Up\";\nconst DOWN = \"Down\";\n\n/* global document */\nconst defaultProps = {\n    delta: 10,\n    preventScrollOnSwipe: false,\n    rotationAngle: 0,\n    trackMouse: false,\n    trackTouch: true,\n    swipeDuration: Infinity,\n    touchEventOptions: { passive: true },\n};\nconst initialState = {\n    first: true,\n    initial: [0, 0],\n    start: 0,\n    swiping: false,\n    xy: [0, 0],\n};\nconst mouseMove = \"mousemove\";\nconst mouseUp = \"mouseup\";\nconst touchEnd = \"touchend\";\nconst touchMove = \"touchmove\";\nconst touchStart = \"touchstart\";\nfunction getDirection(absX, absY, deltaX, deltaY) {\n    if (absX > absY) {\n        if (deltaX > 0) {\n            return RIGHT;\n        }\n        return LEFT;\n    }\n    else if (deltaY > 0) {\n        return DOWN;\n    }\n    return UP;\n}\nfunction rotateXYByAngle(pos, angle) {\n    if (angle === 0)\n        return pos;\n    const angleInRadians = (Math.PI / 180) * angle;\n    const x = pos[0] * Math.cos(angleInRadians) + pos[1] * Math.sin(angleInRadians);\n    const y = pos[1] * Math.cos(angleInRadians) - pos[0] * Math.sin(angleInRadians);\n    return [x, y];\n}\nfunction getHandlers(set, handlerProps) {\n    const onStart = (event) => {\n        const isTouch = \"touches\" in event;\n        // if more than a single touch don't track, for now...\n        if (isTouch && event.touches.length > 1)\n            return;\n        set((state, props) => {\n            // setup mouse listeners on document to track swipe since swipe can leave container\n            if (props.trackMouse && !isTouch) {\n                document.addEventListener(mouseMove, onMove);\n                document.addEventListener(mouseUp, onUp);\n            }\n            const { clientX, clientY } = isTouch ? event.touches[0] : event;\n            const xy = rotateXYByAngle([clientX, clientY], props.rotationAngle);\n            props.onTouchStartOrOnMouseDown &&\n                props.onTouchStartOrOnMouseDown({ event });\n            return Object.assign(Object.assign(Object.assign({}, state), initialState), { initial: xy.slice(), xy, start: event.timeStamp || 0 });\n        });\n    };\n    const onMove = (event) => {\n        set((state, props) => {\n            const isTouch = \"touches\" in event;\n            // Discount a swipe if additional touches are present after\n            // a swipe has started.\n            if (isTouch && event.touches.length > 1) {\n                return state;\n            }\n            // if swipe has exceeded duration stop tracking\n            if (event.timeStamp - state.start > props.swipeDuration) {\n                return state.swiping ? Object.assign(Object.assign({}, state), { swiping: false }) : state;\n            }\n            const { clientX, clientY } = isTouch ? event.touches[0] : event;\n            const [x, y] = rotateXYByAngle([clientX, clientY], props.rotationAngle);\n            const deltaX = x - state.xy[0];\n            const deltaY = y - state.xy[1];\n            const absX = Math.abs(deltaX);\n            const absY = Math.abs(deltaY);\n            const time = (event.timeStamp || 0) - state.start;\n            const velocity = Math.sqrt(absX * absX + absY * absY) / (time || 1);\n            const vxvy = [deltaX / (time || 1), deltaY / (time || 1)];\n            const dir = getDirection(absX, absY, deltaX, deltaY);\n            // if swipe is under delta and we have not started to track a swipe: skip update\n            const delta = typeof props.delta === \"number\"\n                ? props.delta\n                : props.delta[dir.toLowerCase()] ||\n                    defaultProps.delta;\n            if (absX < delta && absY < delta && !state.swiping)\n                return state;\n            const eventData = {\n                absX,\n                absY,\n                deltaX,\n                deltaY,\n                dir,\n                event,\n                first: state.first,\n                initial: state.initial,\n                velocity,\n                vxvy,\n            };\n            // call onSwipeStart if present and is first swipe event\n            eventData.first && props.onSwipeStart && props.onSwipeStart(eventData);\n            // call onSwiping if present\n            props.onSwiping && props.onSwiping(eventData);\n            // track if a swipe is cancelable (handler for swiping or swiped(dir) exists)\n            // so we can call preventDefault if needed\n            let cancelablePageSwipe = false;\n            if (props.onSwiping ||\n                props.onSwiped ||\n                props[`onSwiped${dir}`]) {\n                cancelablePageSwipe = true;\n            }\n            if (cancelablePageSwipe &&\n                props.preventScrollOnSwipe &&\n                props.trackTouch &&\n                event.cancelable) {\n                event.preventDefault();\n            }\n            return Object.assign(Object.assign({}, state), { \n                // first is now always false\n                first: false, eventData, swiping: true });\n        });\n    };\n    const onEnd = (event) => {\n        set((state, props) => {\n            let eventData;\n            if (state.swiping && state.eventData) {\n                // if swipe is less than duration fire swiped callbacks\n                if (event.timeStamp - state.start < props.swipeDuration) {\n                    eventData = Object.assign(Object.assign({}, state.eventData), { event });\n                    props.onSwiped && props.onSwiped(eventData);\n                    const onSwipedDir = props[`onSwiped${eventData.dir}`];\n                    onSwipedDir && onSwipedDir(eventData);\n                }\n            }\n            else {\n                props.onTap && props.onTap({ event });\n            }\n            props.onTouchEndOrOnMouseUp && props.onTouchEndOrOnMouseUp({ event });\n            return Object.assign(Object.assign(Object.assign({}, state), initialState), { eventData });\n        });\n    };\n    const cleanUpMouse = () => {\n        // safe to just call removeEventListener\n        document.removeEventListener(mouseMove, onMove);\n        document.removeEventListener(mouseUp, onUp);\n    };\n    const onUp = (e) => {\n        cleanUpMouse();\n        onEnd(e);\n    };\n    /**\n     * The value of passive on touchMove depends on `preventScrollOnSwipe`:\n     * - true => { passive: false }\n     * - false => { passive: true } // Default\n     *\n     * NOTE: When preventScrollOnSwipe is true, we attempt to call preventDefault to prevent scroll.\n     *\n     * props.touchEventOptions can also be set for all touch event listeners,\n     * but for `touchmove` specifically when `preventScrollOnSwipe` it will\n     * supersede and force passive to false.\n     *\n     */\n    const attachTouch = (el, props) => {\n        let cleanup = () => { };\n        if (el && el.addEventListener) {\n            const baseOptions = Object.assign(Object.assign({}, defaultProps.touchEventOptions), props.touchEventOptions);\n            // attach touch event listeners and handlers\n            const tls = [\n                [touchStart, onStart, baseOptions],\n                // preventScrollOnSwipe option supersedes touchEventOptions.passive\n                [\n                    touchMove,\n                    onMove,\n                    Object.assign(Object.assign({}, baseOptions), (props.preventScrollOnSwipe ? { passive: false } : {})),\n                ],\n                [touchEnd, onEnd, baseOptions],\n            ];\n            tls.forEach(([e, h, o]) => el.addEventListener(e, h, o));\n            // return properly scoped cleanup method for removing listeners, options not required\n            cleanup = () => tls.forEach(([e, h]) => el.removeEventListener(e, h));\n        }\n        return cleanup;\n    };\n    const onRef = (el) => {\n        // \"inline\" ref functions are called twice on render, once with null then again with DOM element\n        // ignore null here\n        if (el === null)\n            return;\n        set((state, props) => {\n            // if the same DOM el as previous just return state\n            if (state.el === el)\n                return state;\n            const addState = {};\n            // if new DOM el clean up old DOM and reset cleanUpTouch\n            if (state.el && state.el !== el && state.cleanUpTouch) {\n                state.cleanUpTouch();\n                addState.cleanUpTouch = void 0;\n            }\n            // only attach if we want to track touch\n            if (props.trackTouch && el) {\n                addState.cleanUpTouch = attachTouch(el, props);\n            }\n            // store event attached DOM el for comparison, clean up, and re-attachment\n            return Object.assign(Object.assign(Object.assign({}, state), { el }), addState);\n        });\n    };\n    // set ref callback to attach touch event listeners\n    const output = {\n        ref: onRef,\n    };\n    // if track mouse attach mouse down listener\n    if (handlerProps.trackMouse) {\n        output.onMouseDown = onStart;\n    }\n    return [output, attachTouch];\n}\nfunction updateTransientState(state, props, previousProps, attachTouch) {\n    // if trackTouch is off or there is no el, then remove handlers if necessary and exit\n    if (!props.trackTouch || !state.el) {\n        if (state.cleanUpTouch) {\n            state.cleanUpTouch();\n        }\n        return Object.assign(Object.assign({}, state), { cleanUpTouch: undefined });\n    }\n    // trackTouch is on, so if there are no handlers attached, attach them and exit\n    if (!state.cleanUpTouch) {\n        return Object.assign(Object.assign({}, state), { cleanUpTouch: attachTouch(state.el, props) });\n    }\n    // trackTouch is on and handlers are already attached, so if preventScrollOnSwipe changes value,\n    // remove and reattach handlers (this is required to update the passive option when attaching\n    // the handlers)\n    if (props.preventScrollOnSwipe !== previousProps.preventScrollOnSwipe ||\n        props.touchEventOptions.passive !== previousProps.touchEventOptions.passive) {\n        state.cleanUpTouch();\n        return Object.assign(Object.assign({}, state), { cleanUpTouch: attachTouch(state.el, props) });\n    }\n    return state;\n}\nfunction useSwipeable(options) {\n    const { trackMouse } = options;\n    const transientState = React.useRef(Object.assign({}, initialState));\n    const transientProps = React.useRef(Object.assign({}, defaultProps));\n    // track previous rendered props\n    const previousProps = React.useRef(Object.assign({}, transientProps.current));\n    previousProps.current = Object.assign({}, transientProps.current);\n    // update current render props & defaults\n    transientProps.current = Object.assign(Object.assign({}, defaultProps), options);\n    // Force defaults for config properties\n    let defaultKey;\n    for (defaultKey in defaultProps) {\n        if (transientProps.current[defaultKey] === void 0) {\n            transientProps.current[defaultKey] = defaultProps[defaultKey];\n        }\n    }\n    const [handlers, attachTouch] = React.useMemo(() => getHandlers((stateSetter) => (transientState.current = stateSetter(transientState.current, transientProps.current)), { trackMouse }), [trackMouse]);\n    transientState.current = updateTransientState(transientState.current, transientProps.current, previousProps.current, attachTouch);\n    return handlers;\n}\n\nexport { DOWN, LEFT, RIGHT, UP, useSwipeable };\n//# sourceMappingURL=index.js.map\n","\n\n\n// @ts-ignore\nconst interactiveHighlightFilter = (\n    <filter id=\"interactive-highlight\" x=\"-100%\" y=\"-100%\" width=\"300%\" height=\"300%\">\n        <feGaussianBlur in=\"SourceAlpha\" stdDeviation=\"3\" result=\"blur\" />\n        <feFlood floodColor=\"#3498db\" floodOpacity=\"0.7\" result=\"color\" />\n        <feComposite in=\"color\" in2=\"blur\" operator=\"in\" result=\"shadow\" />\n        <feComposite in=\"SourceGraphic\" in2=\"shadow\" operator=\"over\" />\n    </filter>\n);\n\n// @ts-ignore\nconst interactiveActiveFilter = (\n    <filter id=\"interactive-active\" x=\"-100%\" y=\"-100%\" width=\"300%\" height=\"300%\">\n        <feGaussianBlur in=\"SourceAlpha\" stdDeviation=\"2\" result=\"blur\" />\n        <feFlood floodColor=\"#e74c3c\" floodOpacity=\"0.8\" result=\"color\" />\n        <feComposite in=\"color\" in2=\"blur\" operator=\"in\" result=\"shadow\" />\n        <feComposite in=\"SourceGraphic\" in2=\"shadow\" operator=\"over\" />\n    </filter>\n);\n\nexport const svgFilter = (id: string, color: string, initialRadius: number) =>\n    <filter id={`highlighting-${id}`} x=\"-100%\" y=\"-100%\" width=\"300%\" height=\"300%\">\n        <feMorphology id={`radius-${id}`} in=\"SourceAlpha\" operator=\"dilate\" radius={initialRadius} result=\"expanded\" />\n\n        <feFlood floodColor={color} floodOpacity=\"0.6\" result=\"color\" />\n        <feComposite in=\"color\" in2=\"expanded\" operator=\"in\" result=\"colored-background\" />\n        <feComposite in=\"SourceGraphic\" in2=\"colored-background\" operator=\"over\" />\n\n    </filter>\n\n\n\n\nexport const SVG_EDITORIAL_FILTERS =\n    <svg xmlns=\"http://www.w3.org/2000/svg\" style={{ height: \"0px\", width: \"0px\" }}>\n        <defs>\n            {interactiveHighlightFilter}\n            {interactiveActiveFilter}\n        </defs>\n    </svg>\n\nexport function expandBBsForEditorialItems() {\n\n    const svgContainer = document.querySelector('.svg-container') as SVGSVGElement | null\n    const svgElement = document.querySelector('.svg-container svg') as SVGSVGElement | null\n    if (!svgElement || !svgContainer) {\n        return;\n    }\n\n    [\"app\", \"choice\", \"corr\", \"sic\", \"unclear\", \"supplied\", \"reg\"].forEach((elem) => {\n        const boundingBoxes = svgElement.querySelectorAll(`g .${elem}.bounding-box`);\n        boundingBoxes.forEach(box => {\n            if ((box as SVGAElement).childElementCount == 0) {\n                if (box.nextSibling) {\n                    var bbox = (box.nextElementSibling as SVGAElement)?.getBBox()\n                    if (bbox) {\n                        if (bbox.width == 0 && bbox.height == 0 && elem == \"app\" && box.nextElementSibling?.nextElementSibling) {\n                            console.log(\"expanding app bounding box for the unselected\")\n                            bbox = (box.nextElementSibling.nextElementSibling as SVGAElement)?.getBBox()\n                        }\n                        const rect = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n                        rect.setAttribute('x', bbox.x.toString());\n                        rect.setAttribute('y', bbox.y.toString());\n                        rect.setAttribute('width', bbox.width.toString());\n                        rect.setAttribute('height', bbox.height.toString());\n                        rect.setAttribute('fill', '#8fe3ff');\n                        rect.setAttribute('fill-opacity', '0');\n                        box.appendChild(rect);\n                    }\n                }\n            }\n        });\n    })\n}\n\nexport function expandBBsForRdgs(labels: string[]) {\n\n    const svgContainer = document.querySelector('.svg-container') as SVGSVGElement | null\n    const svgElement = document.querySelector('.svg-container svg') as SVGSVGElement | null\n    if (!svgElement || !svgContainer) {\n        return;\n    }\n\n    labels.forEach(label => {\n        const escapedLabel = CSS.escape(label);\n        const staffs = svgElement.querySelectorAll(`g.staff:has(g.rdg.bounding-box[data-label=\"${escapedLabel}\"])`);\n        staffs.forEach(staff => {\n            const bbox = (staff as SVGAElement).getBBox()\n            const g = staff.querySelector(`g.rdg.bounding-box[data-label=\"${escapedLabel}\"`)\n            if (!bbox || !g) {\n                return\n            }\n            const rect = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n            rect.setAttribute('x', bbox.x.toString());\n            rect.setAttribute('y', bbox.y.toString());\n            rect.setAttribute('width', bbox.width.toString());\n            rect.setAttribute('height', bbox.height.toString());\n            rect.classList.add('rdg-recontruction-highlight');\n            g.appendChild(rect);\n        })\n    })\n}\n\n\n\n\n\n","import { useEffect, useMemo, useRef } from \"react\";\nimport useStore from \"./store\";\nimport { svgFilter } from \"./SvgUtils\";\nimport { TimeMapEvent, PlayingState } from \"./types\";\n\n\nconst staffHighlightColors = [\"#8e0000\", \"#227710\", \"#5500aa\", \"#e9227a\", \"#0026f3\", \"#11ddff\", \"#8e0000\", \"#227710\"]\n\n\nconst noteHighlightStyle = `\n        .notehead.note-highlight { filter: var(--high); fill: var(--hgcolor); }\n        g.stem path.note-highlight { color: var(--hgcolor); stroke-width: 36; }\n        .verse[data-n=\"1\"].note-highlight { font-weight: var(--verseFontWeight); fill: var(--hgcolor); }\n      `\n\n\n\nconst svgHighlightFilters =\n    <svg xmlns=\"http://www.w3.org/2000/svg\" style={{ height: \"0px\", width: \"0px\" }}>\n        <defs>\n            {svgFilter(\"1\", staffHighlightColors[0], 100)}\n            {svgFilter(\"2\", staffHighlightColors[1], 100)}\n            {svgFilter(\"3\", staffHighlightColors[2], 100)}\n            {svgFilter(\"4\", staffHighlightColors[3], 100)}\n            {svgFilter(\"5\", staffHighlightColors[4], 100)}\n            {svgFilter(\"6\", staffHighlightColors[5], 100)}\n            {svgFilter(\"7\", staffHighlightColors[6], 100)}\n            {svgFilter(\"8\", staffHighlightColors[7], 100)}\n            {svgFilter(\"hover\", \"#fe3b20\", 0)}\n        </defs>\n\n        <animate id=\"radius-1-animation\" xlinkHref=\"#radius-1\" attributeName=\"radius\" from=\"10\" to=\"600\" dur=\"6s\" begin=\"0s\" fill=\"freeze\" repeatCount=\"indefinite\" restart=\"always\" />\n        <animate id=\"radius-2-animation\" xlinkHref=\"#radius-2\" attributeName=\"radius\" from=\"10\" to=\"600\" dur=\"6s\" begin=\"0s\" fill=\"freeze\" repeatCount=\"indefinite\" restart=\"always\" />\n        <animate id=\"radius-3-animation\" xlinkHref=\"#radius-3\" attributeName=\"radius\" from=\"10\" to=\"600\" dur=\"6s\" begin=\"0s\" fill=\"freeze\" repeatCount=\"indefinite\" restart=\"always\" />\n        <animate id=\"radius-4-animation\" xlinkHref=\"#radius-4\" attributeName=\"radius\" from=\"10\" to=\"600\" dur=\"6s\" begin=\"0s\" fill=\"freeze\" repeatCount=\"indefinite\" restart=\"always\" />\n        <animate id=\"radius-5-animation\" xlinkHref=\"#radius-5\" attributeName=\"radius\" from=\"10\" to=\"600\" dur=\"6s\" begin=\"0s\" fill=\"freeze\" repeatCount=\"indefinite\" restart=\"always\" />\n        <animate id=\"radius-6-animation\" xlinkHref=\"#radius-6\" attributeName=\"radius\" from=\"10\" to=\"600\" dur=\"6s\" begin=\"0s\" fill=\"freeze\" repeatCount=\"indefinite\" restart=\"always\" />\n        <animate id=\"radius-7-animation\" xlinkHref=\"#radius-7\" attributeName=\"radius\" from=\"10\" to=\"600\" dur=\"6s\" begin=\"0s\" fill=\"freeze\" repeatCount=\"indefinite\" restart=\"always\" />\n        <animate id=\"radius-8-animation\" xlinkHref=\"#radius-8\" attributeName=\"radius\" from=\"10\" to=\"600\" dur=\"6s\" begin=\"0s\" fill=\"freeze\" repeatCount=\"indefinite\" restart=\"always\" />\n    </svg>\n\n\nconst getSvgStyleRules = (ignoreStaffs: Set<string>) =>\n    [1, 2, 3, 4, 5, 6, 7, 8]\n        .filter(i => !ignoreStaffs.has(`${i}`))\n        .map(i => `.staff[data-n=\"${i}\"] { \\\n        --high: url(#highlighting-${i}); \\\n        --verseFontWeight: bold; \\\n        --hgcolor: ${staffHighlightColors[i - 1]} }`).join('\\n')\n\n\nfunction PlayerHighlighter({ timemap }: { timemap: TimeMapEvent[] }) {\n\n    const isLoading = useStore.use.isLoading()\n\n    const playingState = useStore.use.playingState()\n    const playingPosition = useStore.use.playingPosition()\n    const seekPosition = useStore.use.seekPosition()\n    const showReconstructions = useStore.use.showReconstructions()\n    const score = useStore.use.score()\n\n\n    const renderedSvgData = useStore.use.renderedSvgData()\n\n    const eventsQueue = useRef<TimeMapEvent[]>([])\n    const lastTimeStamp = useRef(-1)\n\n    const animateElements = useRef(null as { [key: string]: SVGAnimateElement } | null)\n\n    const buildAnimateElementsCache = () => {\n        const elementMap = {} as { [key: string]: SVGAnimateElement }\n        [1, 2, 3, 4, 5, 6, 7, 8].forEach(n => {\n            const key = `#radius-${n}-animation`\n            const value = document.querySelector(key) as SVGAnimateElement | null\n            if (value) {\n                elementMap[key] = value\n            }\n        })\n        return elementMap\n    }\n\n    useEffect(() => {\n        if (animateElements.current == null) {\n            const cache = buildAnimateElementsCache()\n            if (cache != null) {\n                animateElements.current = cache\n            }\n        }\n    }, [])\n\n\n    const stopGlowingNotes = () => {\n        animateElements.current && Object.values(animateElements.current).forEach((a: SVGAnimateElement) => {\n            a?.endElement()\n        })\n    }\n\n    const startGlowingNotes = (keys: string[]) => {\n        if (animateElements.current == null) {\n            return\n        }\n        for (let key of keys) {\n            animateElements.current[key]?.beginElement()\n        }\n    }\n\n    useEffect(() => {\n        if (timemap.length <= 0 && isLoading) {\n            eventsQueue.current = []\n            return\n        }\n        eventsQueue.current = [...timemap]\n        lastTimeStamp.current = -1\n    }, [timemap])\n\n    useEffect(() => {\n        if (timemap.length <= 0 && isLoading) {\n            return\n        }\n\n        if (playingState != PlayingState.PLAYING) {\n            stopGlowingNotes()\n            if (playingPosition == 0) {\n                resetHiglights()\n            }\n        }\n    }, [playingState])\n\n    const higlightNotesAtPosition = (position: number) => {\n        timemap.slice().reverse().find(e => e.on && e.tstamp <= position)?.on?.forEach(id => {\n            document?.querySelectorAll(`#${id} > *`)?.forEach(noteElement => {\n                noteElement.classList.add('note-highlight')\n            })\n        })\n    }\n\n    useEffect(() => {\n        if (playingState == PlayingState.PAUSED) {\n            higlightNotesAtPosition(playingPosition)\n        }\n    }, [renderedSvgData])\n\n    const resetHiglights = () => {\n        eventsQueue.current = [...timemap]\n        lastTimeStamp.current = -1\n        const remainingHighlights = document?.querySelectorAll(`.note-highlight`)\n        remainingHighlights?.forEach(noteElement => {\n            noteElement.classList.remove('note-highlight')\n        })\n    }\n\n    const ignoreStaffs = useMemo(() => {\n        const staffsWithoutAudio = new Set<string>()\n        const labelsWithAudio = score?.audioOverlayTracks.map(t => t.label)\n        for (let [staff, label] of Object.entries(showReconstructions)) {\n            if (!labelsWithAudio?.includes(label)) {\n                staffsWithoutAudio.add(staff)\n            }\n        }\n        return staffsWithoutAudio\n    }, [score, showReconstructions])\n\n    const svgStyleRules = useMemo(() => {\n        return getSvgStyleRules(ignoreStaffs)\n    }, [ignoreStaffs])\n\n\n    useEffect(() => {\n        if (timemap.length <= 0 && isLoading) {\n            return\n        }\n\n        if (playingState == PlayingState.STOPPED) {\n            resetHiglights()\n            return\n        }\n\n        const currentPlayingPosition = Math.round(playingPosition)\n        const events = []\n        var event = eventsQueue.current.shift()\n        while (event != null && event.tstamp <= lastTimeStamp.current) {\n            event = eventsQueue.current.shift()\n        }\n\n        while (event != null && event.tstamp <= currentPlayingPosition) {\n            events.push(event)\n            event = eventsQueue.current.shift()\n        }\n        if (event != null) {\n            eventsQueue.current.unshift(event)\n        }\n\n\n        lastTimeStamp.current = currentPlayingPosition\n\n        if (events.length <= 0) {\n            return\n        }\n\n        const off = new Set(events.flatMap(e => e.off));\n        const on = new Set(events.flatMap(e => e.on).filter(e => !off.has(e)))\n        off.forEach(id => {\n            if (id) {\n                const escapedId = CSS.escape(id)\n                const noteElements = [...document?.querySelectorAll(`#${escapedId} .note-highlight`)] as SVGGElement[] | null\n                noteElements?.forEach(noteElement => {\n                    noteElement.classList.remove('note-highlight')\n                })\n            }\n        })\n\n        if (playingState == PlayingState.PLAYING) {\n            const keys = new Set(events.flatMap(e => e.stavesOn).filter(e => e != null))\n            startGlowingNotes([...keys])\n        }\n        on.forEach(id => {\n            if (id) {\n                const escapedId = CSS.escape(id)\n                document?.querySelectorAll(`#${escapedId} > *`)?.forEach(noteElement => {\n                    noteElement.classList.add('note-highlight')\n                })\n            }\n        })\n\n    }, [playingPosition])\n\n    useEffect(() => {\n        if (seekPosition == -1) {\n            return\n        }\n        stopGlowingNotes()\n        resetHiglights()\n        if (seekPosition > 0 && playingState == PlayingState.PAUSED) {\n            higlightNotesAtPosition(seekPosition)\n        }\n\n    }, [seekPosition])\n\n    return (\n        <div className=\"player-highlighter\" style={{ width: \"0px\", height: \"0px\" }}>\n\n            {svgHighlightFilters}\n\n            <style>\n                {`\n                    ${svgStyleRules}\n                    ${noteHighlightStyle}\n                `}\n            </style>\n        </div>\n    )\n\n}\n\nexport default PlayerHighlighter\n","import { useRef, useEffect, useState, useCallback, useMemo } from \"react\";\nimport useStore from \"../store\";\nimport { TimeMapEvent, PlayingState, AudioTrack } from \"../types\";\nimport useVerovio from \"../useVerovio\";\n\nlet sharedAudioContext: AudioContext | null = null;\nconst MS_OVER_LAST_TIMESTAMP = 1000;\n\nexport default function useWebAudioPlayer(audioUrl: string | null, audioOverlayTracks: AudioTrack[], originalMei: string | undefined) {\n    // Get state and base functionality from base hook\n\n    const playingState = useStore.use.playingState();\n    const seekPosition = useStore.use.seekPosition();\n    const setSeekPosition = useStore.use.setSeekPosition();\n    const setPlayingState = useStore.use.setPlayingState();\n    const setPlayingPosition = useStore.use.setPlayingPosition();\n    const currentPage = useStore.use.currentPage();\n    const goToPage = useStore.use.goToPage();\n    const autoScroll = useStore.use.autoScroll();\n    const setAutoScroll = useStore.use.setAutoScroll();\n\n    const renderedSvgData = useStore.use.renderedSvgData();\n\n    const verovio = useVerovio();\n\n    const audioContextRef = useRef<AudioContext | null>(null);\n    const startTimeRef = useRef<number>(0);\n    const pausedPositionRef = useRef<number>(0);\n    const animationFrameRef = useRef<number | null>(null);\n\n    const sourceNodesRef = useRef<Map<string, AudioBufferSourceNode>>(new Map());\n    const audioBuffersRef = useRef<Map<string, AudioBuffer>>(new Map());\n\n    const [canPlay, setCanPlay] = useState(false);\n    const [loadedTracks, setLoadedTracks] = useState<string[]>([]);\n    const needsUserInteractionRef = useRef(true);\n\n\n    const getAudioContext = useCallback(() => {\n        if (audioContextRef.current && audioContextRef.current.state !== 'closed') {\n            return audioContextRef.current;\n        }\n\n        if (sharedAudioContext && sharedAudioContext.state !== 'closed') {\n            audioContextRef.current = sharedAudioContext;\n            return sharedAudioContext;\n        }\n\n        try {\n            const AudioContext = window.AudioContext || (window as any).webkitAudioContext;\n            audioContextRef.current = new AudioContext();\n            sharedAudioContext = audioContextRef.current;\n            if (audioContextRef.current.state === 'suspended') {\n                needsUserInteractionRef.current = true;\n            }\n            return audioContextRef.current;\n        } catch (error) {\n            console.error(\"Failed to create AudioContext:\", error);\n            return null;\n        }\n    }, []);\n\n    const resumeAudioContext = useCallback(async () => {\n        const context = getAudioContext();\n        if (!context) return false;\n\n        if (context.state === 'suspended') {\n            try {\n                await context.resume();\n                needsUserInteractionRef.current = false;\n                return true;\n            } catch (error) {\n                console.error(\"Failed to resume AudioContext:\", error);\n                return false;\n            }\n        }\n\n        if (context.state === 'running') {\n            needsUserInteractionRef.current = false;\n            return true;\n        }\n\n        return false; // Handle any other state appropriately\n    }, [getAudioContext]);\n\n    useEffect(() => {\n        const context = getAudioContext();\n        if (!context) return;\n\n        return () => {\n            if (animationFrameRef.current) {\n                cancelAnimationFrame(animationFrameRef.current);\n                animationFrameRef.current = null;\n            }\n        };\n    }, [getAudioContext]);\n\n    useEffect(() => {\n        const loadAudio = async (audioUrl: string) => {\n            console.log(`Loading audio from URL: ${audioUrl}`);\n            const context = getAudioContext();\n            if (!context) {\n                return\n            }\n            audioBuffersRef.current.clear();\n            setLoadedTracks([]);\n            try {\n                const buffer = await fetchAudioBuffer(audioUrl, context);\n                audioBuffersRef.current.set('main', buffer);\n                setLoadedTracks(['main']);\n                setCanPlay(true);\n            } catch (error) {\n                console.error(\"Failed to load main audio:\", error);\n            }\n        }\n\n        if (playingState !== PlayingState.STOPPED) {\n            stopPlayback();\n            setPlayingState(PlayingState.STOPPED);\n        }\n        setCanPlay(false);\n\n        if (audioUrl) {\n            loadAudio(audioUrl)\n        }\n    }, [audioUrl, originalMei]);\n\n\n    useEffect(() => {\n        const loadOverlayAudio = async (audioOverlayTracks: AudioTrack[]) => {\n            const context = getAudioContext();\n            if (!context) {\n                return;\n            }\n            await Promise.all(audioOverlayTracks.map(async (track: AudioTrack) => {\n                if (!track.url) return;\n                try {\n                    console.log(`Loading audio overlay from URL: ${track.url}`);\n                    const buffer = await fetchAudioBuffer(track.url, context);\n                    audioBuffersRef.current.set(track.id, buffer);\n                    setLoadedTracks(prev => [...prev, track.id]);\n                } catch (error) {\n                    console.error(`Failed to load track ${track.id} from ${track.url}`, error);\n                }\n            }));\n        }\n\n        if (audioOverlayTracks.length > 0) {\n            loadOverlayAudio(audioOverlayTracks)\n        }\n    }, [audioOverlayTracks]);\n\n\n    // We need a clean up effect to release the audio context when the component gets removed.\n    useEffect(() => {\n        return () => {\n            stopPlayback()\n            if (audioContextRef.current?.state === 'running') {\n                audioContextRef.current.suspend().then(() => {\n                    console.log(\"Audio context suspended\");\n                    audioContextRef.current = null;\n                })\n            }\n        };\n    }, [])\n\n    const fetchAudioBuffer = useCallback(async (url: string, context: AudioContext): Promise<AudioBuffer> => {\n        const response = await fetch(url);\n        if (!response.ok) {\n            throw new Error(`HTTP error! status: ${response.status}`);\n        }\n        const arrayBuffer = await response.arrayBuffer();\n        return await context.decodeAudioData(arrayBuffer);\n    }, []);\n\n    const checkPageForPosition = async (position: number) => {\n        if (!autoScroll && playingState !== PlayingState.STOPPED) {\n            const playingAtPosition = await verovio?.getElementsAtTime(position);\n            const playingPage = playingAtPosition?.page;\n            if (playingPage && playingPage !== currentPage) {\n                goToPage(playingPage);\n            }\n        }\n    }\n\n\n    useEffect(() => {\n        if (seekPosition <= 0) {\n            return\n        }\n        console.log(`Seeking to position: ${seekPosition} ms. Playing state: ${playingState}`);\n        if (playingState === PlayingState.PLAYING) {\n            stopPlayback();\n            checkPageForPosition(seekPosition);\n            startPlayback(seekPosition);\n            setSeekPosition(-1)\n        } else {\n            pausedPositionRef.current = seekPosition;\n            checkPageForPosition(seekPosition);\n            setSeekPosition(-1)\n        }\n    }, [seekPosition]);\n\n\n    useEffect(() => {\n        switch (playingState) {\n            case PlayingState.PLAYING:\n                if (needsUserInteractionRef.current) {\n                    resumeAudioContext().then(success => {\n                        if (success) {\n                            startPlayback(pausedPositionRef.current);\n                        }\n                    });\n                } else {\n                    startPlayback(pausedPositionRef.current);\n                }\n                break;\n            case PlayingState.PAUSED:\n                pausePlayback();\n                break;\n            case PlayingState.STOPPED:\n                stopPlayback();\n                pausedPositionRef.current = 0;\n                break;\n        }\n    }, [playingState, resumeAudioContext]);\n\n    const handlePlayPause = useCallback(() => {\n        if (playingState === PlayingState.PLAYING) {\n            setPlayingState(PlayingState.PAUSED);\n        } else if (playingState === PlayingState.PAUSED) {\n            setPlayingState(PlayingState.PLAYING);\n        }\n    }, [playingState, setPlayingState]);\n\n    const handlePlay = useCallback(() => {\n        setPlayingState(PlayingState.PLAYING);\n    }, [setPlayingState]);\n\n    const onAudioEnded = useCallback(() => {\n        setPlayingState(PlayingState.STOPPED);\n        setSeekPosition(0);\n    }, [setPlayingState, setSeekPosition]);\n\n    const getCurrentPosition = useCallback(() => {\n        const context = getAudioContext();\n        if (!context || startTimeRef.current === 0) return pausedPositionRef.current;\n\n        const positionSeconds = context.currentTime - startTimeRef.current;\n        return Math.max(0, positionSeconds * 1000);\n    }, [getAudioContext]);\n\n\n    const pausePlayback = useCallback(() => {\n        if (animationFrameRef.current) {\n            cancelAnimationFrame(animationFrameRef.current);\n            animationFrameRef.current = null;\n        }\n\n        const context = getAudioContext();\n        if (!context) return;\n\n        pausedPositionRef.current = getCurrentPosition();\n        sourceNodesRef.current.forEach(source => {\n            try {\n                source.stop();\n            } catch (e) {\n                // Ignore errors if source is already stopped\n            }\n        });\n        sourceNodesRef.current.clear();\n    }, [getAudioContext, getCurrentPosition]);\n\n    const stopPlayback = useCallback(() => {\n        pausePlayback();\n        pausedPositionRef.current = 0;\n        setPlayingPosition(0);\n    }, [pausePlayback]);\n\n    const startPlayback = useCallback((startPosition: number) => {\n        stopPlayback();\n\n        const context = getAudioContext();\n        if (!context || audioBuffersRef.current.size === 0) return;\n\n        resumeAudioContext().then(success => {\n            if (!success) return;\n\n            pausedPositionRef.current = startPosition;\n            const startSeconds = startPosition / 1000;\n            startTimeRef.current = context.currentTime - startSeconds;\n\n            audioBuffersRef.current.forEach((buffer, trackId) => {\n                const source = context.createBufferSource();\n                source.buffer = buffer;\n                source.connect(context.destination);\n\n                source.start(0, startSeconds);\n                sourceNodesRef.current.set(trackId, source);\n            });\n            updatePlaybackPosition();\n        });\n    }, [stopPlayback, getAudioContext, resumeAudioContext, playingState]);\n\n\n    const timemap = useMemo(() => {\n        if (renderedSvgData?.timemap) {\n            return renderedSvgData.timemap as TimeMapEvent[];\n        }\n        return [];\n    }, [renderedSvgData]);\n\n    const updatePlaybackPosition = useCallback(() => {\n        if (playingState !== PlayingState.PLAYING) return;\n\n        const position = getCurrentPosition();\n        setPlayingPosition(position);\n\n        if (timemap && timemap.length > 0 && position > timemap[timemap.length - 1].tstamp + MS_OVER_LAST_TIMESTAMP) {\n            stopPlayback();\n            onAudioEnded();\n            return;\n        }\n\n        checkPageForPosition(position);\n\n        animationFrameRef.current = requestAnimationFrame(updatePlaybackPosition);\n    }, [getCurrentPosition, setPlayingPosition, timemap, stopPlayback, onAudioEnded, checkPageForPosition, playingState]);\n\n\n    const playPauseTooltip = useCallback(() => {\n        return playingState === PlayingState.PLAYING ? \"Pause\" : \"Play\";\n    }, [playingState]);\n\n\n    const handleStop = useCallback(() => {\n        stopPlayback();\n        onAudioEnded();\n    }, [playingState, setPlayingState, autoScroll, setAutoScroll, stopPlayback]);\n\n\n    return {\n        canPlay,\n        loadedTracks,\n        playPauseTooltip,\n        handlePlay,\n        handlePlayPause,\n        handleStop\n    };\n}\n","import { Button, Space, Tooltip } from \"antd\";\nimport useStore from \"./store\";\nimport PlayerHighlighter from \"./PlayerHighlighter\";\nimport { PlayCircleTwoTone, CloseCircleTwoTone, PauseCircleTwoTone } from '@ant-design/icons';\nimport { PlayingState } from \"./types\";\nimport useWebAudioPlayer from \"./hooks/useWebAudioPlayer\";\nimport { useMemo } from \"react\";\n\n\nexport enum PlayerEventType {\n    ERROR,\n    SEEK\n}\n\nexport type PlayerEvent = {\n    type: PlayerEventType,\n    value?: any\n}\n\n\n\n\n\nfunction AudioPlayer() {\n    const score = useStore.use.score();\n    const playingState = useStore.use.playingState();\n    const renderedSvgData = useStore.use.renderedSvgData();\n    const showReconstructions = useStore.use.showReconstructions();\n    const audioOverlayTracks = useMemo(() => {\n        return score?.audioOverlayTracks.filter(track => Object.values(showReconstructions).includes(track.label)) || [];\n    }, [score, showReconstructions]);\n\n    const {\n        canPlay,\n        playPauseTooltip,\n        handlePlay,\n        handlePlayPause,\n        handleStop,\n    } = useWebAudioPlayer(score?.audioUrl || null, audioOverlayTracks, score?.originalMei);\n\n\n\n    const playButton = useMemo(() =>\n        <Tooltip title=\"Play\"><Button icon={ <PlayCircleTwoTone style={{ fontSize: '36px' }} /> } onClick={handlePlay} disabled={!canPlay}/></Tooltip>\n    , [canPlay, handlePlay]);\n\n    const stopButton = useMemo(() =>\n        <Tooltip title=\"Stop\"><Button icon={ <CloseCircleTwoTone style={{ fontSize: '36px' }} /> } onClick={handleStop}/></Tooltip>\n    , [handleStop]);\n\n    const pauseButton = useMemo(() =>\n        <Tooltip title={playPauseTooltip()}><Button icon={ <PauseCircleTwoTone style={{ fontSize: '36px' }} /> } onClick={handlePlayPause} /></Tooltip>\n    , [playPauseTooltip, handlePlayPause]);\n\n    // Always show playControls if audioSrc is available, regardless of canPlay status\n    const playControls = useMemo(() =>\n        score?.audioUrl ?\n        <div style={{ position: \"absolute\", bottom: 0, right: 0, padding: \"8px\" }}>\n            <Space direction=\"horizontal\" size=\"small\">\n                {playingState !== PlayingState.STOPPED ? stopButton : null}\n                {playingState === PlayingState.PLAYING ? pauseButton : playButton}\n            </Space>\n        </div> : null,\n    [score, playingState, playButton, stopButton, pauseButton]);\n\n\n    return (\n        <div style={{ width: \"0px\", height: \"0px\" }}>\n            {renderedSvgData?.timemap && (\n                <PlayerHighlighter timemap={renderedSvgData.timemap} />\n            )}\n            {playControls}\n        </div>\n    );\n}\n\nexport default AudioPlayer;\n","import { useCallback } from 'react';\nimport useStore from '../store';\nimport { EditorialItem } from '../types';\nimport { useTranslation } from 'react-i18next';\n\n\nconst targets = [\"note\", \"rest\", \"clef\", \"accid\", \"app\", \"choice\", \"corr\", \"sic\", \"unclear\", \"supplied\", \"reg\", \"measure\"];\n\n\nexport function useEditorialHandler() {\n\n  const { t } = useTranslation(\"common\")\n\n  const showEditorial = useStore.use.showEditorial();\n  const setShowingEditorial = useStore.use.setShowingEditorial();\n  const editorials = useStore.use.score()?.editorialItems;\n\n\n  const getEditorialAttached = useCallback((elem: HTMLElement): EditorialItem | undefined => {\n    const elemCorrespTarget = elem.getAttribute('data-corresp');\n    const elemCorespId = elemCorrespTarget?.replace('#', '');\n\n    return editorials?.find((item) =>\n      elem.id === item.id ||\n      (elemCorespId != null && item.correspIds?.includes(elemCorespId))\n    );\n  }, [editorials]);\n\n  const findTarget = useCallback((target: HTMLElement): EditorialItem | null => {\n    for (let e of targets) {\n      const closest = target.closest(`.${e}`) as HTMLElement | null;\n      const editorialForTarget = closest ? getEditorialAttached(closest) : null;\n\n      if (editorialForTarget) {\n        return editorialForTarget;\n      }\n    }\n    return null\n}, [getEditorialAttached,setShowingEditorial])\n\n  const handleElementClick = useCallback((event: React.MouseEvent<HTMLElement>) => {\n    if (!showEditorial) return;\n\n\n    const element = event.target as HTMLElement;\n    const target = findTarget(element)\n    if (target) {\n      setShowingEditorial(target.id);\n    } else {\n      const bb = element.closest(\".bounding-box\") as HTMLElement | null;\n      const parentTarget = bb?.parentElement\n      if (parentTarget && [...parentTarget.classList.values()].some(c => targets.includes(c))) {\n        const editorialForTarget = getEditorialAttached(parentTarget)\n        if (editorialForTarget) {\n          setShowingEditorial(editorialForTarget.id);\n        }\n      }\n    }\n  }, [showEditorial, getEditorialAttached, setShowingEditorial]);\n\n\n  const formatType = useCallback((type: string): string => {\n    switch (type) {\n      case \"corr\": return t('editorial.formatType.corr');\n      case \"unclear\": return t('editorial.formatType.unclear');\n      case \"choice\": return t('editorial.formatType.choice');\n      case \"app\": return t('editorial.formatType.app');\n      case \"lem\": return t('editorial.formatType.lem');\n      case \"rdg\": return t('editorial.formatType.rdg');\n      case \"sic\": return t('editorial.formatType.sic');\n      case \"supplied\": return t('editorial.formatType.supplied');\n      case \"reg\": return t('editorial.formatType.reg');\n      case \"clef[data-corresp]\": return t('editorial.formatType.clefChange');\n      default: return t('editorial.formatType.default', { type });\n    }\n  }, [t]);\n\n  return {\n    showEditorial,\n    editorials,\n    handleElementClick,\n    formatType,\n    getEditorialAttached\n  };\n}\n","import { svgFilter } from \"../SvgUtils\";\n\n/**\n * Custom hook to create SVG-based hover highlighting effects\n * @param svgId ID of the SVG element to apply hovering effects to\n * @param color Optional highlight color (defaults to #fe3b20)\n * @param radius Optional initial radius value (defaults to 0)\n * @returns JSX element containing the SVG filter for hover highlighting\n */\nexport default function useHoverHighlighter(svgId: string, color: string = \"#fe3b20\", radius: number = 0) {\n  // Create the SVG hover filter element\n  const hoverFilterElement = (\n    <svg xmlns=\"http://www.w3.org/2000/svg\" style={{ height: \"0px\", width: \"0px\" }}>\n      <defs>\n        {svgFilter(\"hover\", color, radius)}\n      </defs>\n      <animate\n        id=\"radius-hover-animation\"\n        xlinkHref=\"#radius-hover\"\n        attributeName=\"radius\"\n        begin={`${svgId}.mouseover`}\n        from=\"0\"\n        to=\"50\"\n        dur=\"0.1s\"\n        fill=\"freeze\"\n        repeatCount=\"1\"\n        restart=\"whenNotActive\"\n      />\n    </svg>\n  );\n\n  return {\n    hoverFilterElement\n  };\n}","import useHoverHighlighter from \"./hooks/useHoverHighlighter\";\n\n/**\n * Component that provides hover highlighting effect for SVG elements\n * @param svgId ID of the SVG element to highlight on hover\n * @returns React component with hover highlighting capabilities\n */\nfunction HoverHighlighter({ svgId }: { svgId: string }) {\n  const { hoverFilterElement } = useHoverHighlighter(svgId);\n\n  return (\n    <div style={{ height: \"0px\", width: \"0px\" }}>\n      {hoverFilterElement}\n    </div>\n  );\n}\n\nexport default HoverHighlighter;","/**\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","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 => d.overflows[0] > 0 && getSideAxis(d.placement) === initialSideAxis)) {\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","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","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, 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(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(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, ignoreScrollbarX) {\n  if (ignoreScrollbarX === void 0) {\n    ignoreScrollbarX = false;\n  }\n  const htmlRect = documentElement.getBoundingClientRect();\n  const x = htmlRect.left + scroll.scrollLeft - (ignoreScrollbarX ? 0 :\n  // RTL <body> scrollbar.\n  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, true) : 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(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\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  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(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(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(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(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n  if (!isHTMLElement(element) || getComputedStyle(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(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","/*\n* React Tooltip\n* {@link https://github.com/ReactTooltip/react-tooltip}\n* @copyright ReactTooltip Team\n* @license MIT\n*/\nimport e,{useLayoutEffect as t,useEffect as o,createContext as l,useState as r,useCallback as n,useMemo as i,useContext as c,useRef as s,useImperativeHandle as a}from\"react\";import{arrow as u,computePosition as d,offset as p,flip as v,shift as m,autoUpdate as f}from\"@floating-ui/dom\";import y from\"classnames\";const h=\"react-tooltip-core-styles\",w=\"react-tooltip-base-styles\",b={core:!1,base:!1};function S({css:e,id:t=w,type:o=\"base\",ref:l}){var r,n;if(!e||\"undefined\"==typeof document||b[o])return;if(\"core\"===o&&\"undefined\"!=typeof process&&(null===(r=null===process||void 0===process?void 0:process.env)||void 0===r?void 0:r.REACT_TOOLTIP_DISABLE_CORE_STYLES))return;if(\"base\"!==o&&\"undefined\"!=typeof process&&(null===(n=null===process||void 0===process?void 0:process.env)||void 0===n?void 0:n.REACT_TOOLTIP_DISABLE_BASE_STYLES))return;\"core\"===o&&(t=h),l||(l={});const{insertAt:i}=l;if(document.getElementById(t))return;const c=document.head||document.getElementsByTagName(\"head\")[0],s=document.createElement(\"style\");s.id=t,s.type=\"text/css\",\"top\"===i&&c.firstChild?c.insertBefore(s,c.firstChild):c.appendChild(s),s.styleSheet?s.styleSheet.cssText=e:s.appendChild(document.createTextNode(e)),b[o]=!0}function g({type:e=\"base\",id:t=w}={}){if(!b[e])return;\"core\"===e&&(t=h);const o=document.getElementById(t);\"style\"===(null==o?void 0:o.tagName)?null==o||o.remove():console.warn(`[react-tooltip] Failed to remove 'style' element with id '${t}'. Call \\`injectStyle()\\` first`),b[e]=!1}const E=async({elementReference:e=null,tooltipReference:t=null,tooltipArrowReference:o=null,place:l=\"top\",offset:r=10,strategy:n=\"absolute\",middlewares:i=[p(Number(r)),v({fallbackAxisSideDirection:\"start\"}),m({padding:5})],border:c,arrowSize:s=8})=>{if(!e)return{tooltipStyles:{},tooltipArrowStyles:{},place:l};if(null===t)return{tooltipStyles:{},tooltipArrowStyles:{},place:l};const a=i;return o?(a.push(u({element:o,padding:5})),d(e,t,{placement:l,strategy:n,middleware:a}).then((({x:e,y:t,placement:o,middlewareData:l})=>{var r,n;const i={left:`${e}px`,top:`${t}px`,border:c},{x:a,y:u}=null!==(r=l.arrow)&&void 0!==r?r:{x:0,y:0},d=null!==(n={top:\"bottom\",right:\"left\",bottom:\"top\",left:\"right\"}[o.split(\"-\")[0]])&&void 0!==n?n:\"bottom\",p=c&&{borderBottom:c,borderRight:c};let v=0;if(c){const e=`${c}`.match(/(\\d+)px/);v=(null==e?void 0:e[1])?Number(e[1]):1}return{tooltipStyles:i,tooltipArrowStyles:{left:null!=a?`${a}px`:\"\",top:null!=u?`${u}px`:\"\",right:\"\",bottom:\"\",...p,[d]:`-${s/2+v}px`},place:o}}))):d(e,t,{placement:\"bottom\",strategy:n,middleware:a}).then((({x:e,y:t,placement:o})=>({tooltipStyles:{left:`${e}px`,top:`${t}px`},tooltipArrowStyles:{},place:o})))},A=(e,t)=>!(\"CSS\"in window&&\"supports\"in window.CSS)||window.CSS.supports(e,t),_=(e,t,o)=>{let l=null;const r=function(...r){const n=()=>{l=null,o||e.apply(this,r)};o&&!l&&(e.apply(this,r),l=setTimeout(n,t)),o||(l&&clearTimeout(l),l=setTimeout(n,t))};return r.cancel=()=>{l&&(clearTimeout(l),l=null)},r},O=e=>null!==e&&!Array.isArray(e)&&\"object\"==typeof e,k=(e,t)=>{if(e===t)return!0;if(Array.isArray(e)&&Array.isArray(t))return e.length===t.length&&e.every(((e,o)=>k(e,t[o])));if(Array.isArray(e)!==Array.isArray(t))return!1;if(!O(e)||!O(t))return e===t;const o=Object.keys(e),l=Object.keys(t);return o.length===l.length&&o.every((o=>k(e[o],t[o])))},T=e=>{if(!(e instanceof HTMLElement||e instanceof SVGElement))return!1;const t=getComputedStyle(e);return[\"overflow\",\"overflow-x\",\"overflow-y\"].some((e=>{const o=t.getPropertyValue(e);return\"auto\"===o||\"scroll\"===o}))},L=e=>{if(!e)return null;let t=e.parentElement;for(;t;){if(T(t))return t;t=t.parentElement}return document.scrollingElement||document.documentElement},C=\"undefined\"!=typeof window?t:o,R=e=>{e.current&&(clearTimeout(e.current),e.current=null)},x=\"DEFAULT_TOOLTIP_ID\",N={anchorRefs:new Set,activeAnchor:{current:null},attach:()=>{},detach:()=>{},setActiveAnchor:()=>{}},$=l({getTooltipData:()=>N}),I=({children:t})=>{const[o,l]=r({[x]:new Set}),[c,s]=r({[x]:{current:null}}),a=(e,...t)=>{l((o=>{var l;const r=null!==(l=o[e])&&void 0!==l?l:new Set;return t.forEach((e=>r.add(e))),{...o,[e]:new Set(r)}}))},u=(e,...t)=>{l((o=>{const l=o[e];return l?(t.forEach((e=>l.delete(e))),{...o}):o}))},d=n(((e=x)=>{var t,l;return{anchorRefs:null!==(t=o[e])&&void 0!==t?t:new Set,activeAnchor:null!==(l=c[e])&&void 0!==l?l:{current:null},attach:(...t)=>a(e,...t),detach:(...t)=>u(e,...t),setActiveAnchor:t=>((e,t)=>{s((o=>{var l;return(null===(l=o[e])||void 0===l?void 0:l.current)===t.current?o:{...o,[e]:t}}))})(e,t)}}),[o,c,a,u]),p=i((()=>({getTooltipData:d})),[d]);return e.createElement($.Provider,{value:p},t)};function z(e=x){return c($).getTooltipData(e)}const j=({tooltipId:t,children:l,className:r,place:n,content:i,html:c,variant:a,offset:u,wrapper:d,events:p,positionStrategy:v,delayShow:m,delayHide:f})=>{const{attach:h,detach:w}=z(t),b=s(null);return o((()=>(h(b),()=>{w(b)})),[]),e.createElement(\"span\",{ref:b,className:y(\"react-tooltip-wrapper\",r),\"data-tooltip-place\":n,\"data-tooltip-content\":i,\"data-tooltip-html\":c,\"data-tooltip-variant\":a,\"data-tooltip-offset\":u,\"data-tooltip-wrapper\":d,\"data-tooltip-events\":p,\"data-tooltip-position-strategy\":v,\"data-tooltip-delay-show\":m,\"data-tooltip-delay-hide\":f},l)};var B={tooltip:\"core-styles-module_tooltip__3vRRp\",fixed:\"core-styles-module_fixed__pcSol\",arrow:\"core-styles-module_arrow__cvMwQ\",noArrow:\"core-styles-module_noArrow__xock6\",clickable:\"core-styles-module_clickable__ZuTTB\",show:\"core-styles-module_show__Nt9eE\",closing:\"core-styles-module_closing__sGnxF\"},D={tooltip:\"styles-module_tooltip__mnnfp\",arrow:\"styles-module_arrow__K0L3T\",dark:\"styles-module_dark__xNqje\",light:\"styles-module_light__Z6W-X\",success:\"styles-module_success__A2AKt\",warning:\"styles-module_warning__SCK0X\",error:\"styles-module_error__JvumD\",info:\"styles-module_info__BWdHW\"};const q=({forwardRef:t,id:l,className:i,classNameArrow:c,variant:u=\"dark\",anchorId:d,anchorSelect:p,place:v=\"top\",offset:m=10,events:h=[\"hover\"],openOnClick:w=!1,positionStrategy:b=\"absolute\",middlewares:S,wrapper:g,delayShow:A=0,delayHide:O=0,float:T=!1,hidden:x=!1,noArrow:N=!1,clickable:$=!1,closeOnEsc:I=!1,closeOnScroll:j=!1,closeOnResize:q=!1,openEvents:H,closeEvents:M,globalCloseEvents:W,imperativeModeOnly:P,style:V,position:F,afterShow:K,afterHide:U,disableTooltip:X,content:Y,contentWrapperRef:G,isOpen:Z,defaultIsOpen:J=!1,setIsOpen:Q,activeAnchor:ee,setActiveAnchor:te,border:oe,opacity:le,arrowColor:re,arrowSize:ne=8,role:ie=\"tooltip\"})=>{var ce;const se=s(null),ae=s(null),ue=s(null),de=s(null),pe=s(null),[ve,me]=r({tooltipStyles:{},tooltipArrowStyles:{},place:v}),[fe,ye]=r(!1),[he,we]=r(!1),[be,Se]=r(null),ge=s(!1),Ee=s(null),{anchorRefs:Ae,setActiveAnchor:_e}=z(l),Oe=s(!1),[ke,Te]=r([]),Le=s(!1),Ce=w||h.includes(\"click\"),Re=Ce||(null==H?void 0:H.click)||(null==H?void 0:H.dblclick)||(null==H?void 0:H.mousedown),xe=H?{...H}:{mouseover:!0,focus:!0,mouseenter:!1,click:!1,dblclick:!1,mousedown:!1};!H&&Ce&&Object.assign(xe,{mouseenter:!1,focus:!1,mouseover:!1,click:!0});const Ne=M?{...M}:{mouseout:!0,blur:!0,mouseleave:!1,click:!1,dblclick:!1,mouseup:!1};!M&&Ce&&Object.assign(Ne,{mouseleave:!1,blur:!1,mouseout:!1});const $e=W?{...W}:{escape:I||!1,scroll:j||!1,resize:q||!1,clickOutsideAnchor:Re||!1};P&&(Object.assign(xe,{mouseover:!1,focus:!1,mouseenter:!1,click:!1,dblclick:!1,mousedown:!1}),Object.assign(Ne,{mouseout:!1,blur:!1,mouseleave:!1,click:!1,dblclick:!1,mouseup:!1}),Object.assign($e,{escape:!1,scroll:!1,resize:!1,clickOutsideAnchor:!1})),C((()=>(Le.current=!0,()=>{Le.current=!1})),[]);const Ie=e=>{Le.current&&(e&&we(!0),setTimeout((()=>{Le.current&&(null==Q||Q(e),void 0===Z&&ye(e))}),10))};o((()=>{if(void 0===Z)return()=>null;Z&&we(!0);const e=setTimeout((()=>{ye(Z)}),10);return()=>{clearTimeout(e)}}),[Z]),o((()=>{if(fe!==ge.current)if(R(pe),ge.current=fe,fe)null==K||K();else{const e=(e=>{const t=e.match(/^([\\d.]+)(ms|s)$/);if(!t)return 0;const[,o,l]=t;return Number(o)*(\"ms\"===l?1:1e3)})(getComputedStyle(document.body).getPropertyValue(\"--rt-transition-show-delay\"));pe.current=setTimeout((()=>{we(!1),Se(null),null==U||U()}),e+25)}}),[fe]);const ze=e=>{me((t=>k(t,e)?t:e))},je=(e=A)=>{R(ue),he?Ie(!0):ue.current=setTimeout((()=>{Ie(!0)}),e)},Be=(e=O)=>{R(de),de.current=setTimeout((()=>{Oe.current||Ie(!1)}),e)},De=e=>{var t;if(!e)return;const o=null!==(t=e.currentTarget)&&void 0!==t?t:e.target;if(!(null==o?void 0:o.isConnected))return te(null),void _e({current:null});A?je():Ie(!0),te(o),_e({current:o}),R(de)},qe=()=>{$?Be(O||100):O?Be():Ie(!1),R(ue)},He=({x:e,y:t})=>{var o;const l={getBoundingClientRect:()=>({x:e,y:t,width:0,height:0,top:t,left:e,right:e,bottom:t})};E({place:null!==(o=null==be?void 0:be.place)&&void 0!==o?o:v,offset:m,elementReference:l,tooltipReference:se.current,tooltipArrowReference:ae.current,strategy:b,middlewares:S,border:oe,arrowSize:ne}).then((e=>{ze(e)}))},Me=e=>{if(!e)return;const t=e,o={x:t.clientX,y:t.clientY};He(o),Ee.current=o},We=e=>{var t;if(!fe)return;const o=e.target;if(!o.isConnected)return;if(null===(t=se.current)||void 0===t?void 0:t.contains(o))return;[document.querySelector(`[id='${d}']`),...ke].some((e=>null==e?void 0:e.contains(o)))||(Ie(!1),R(ue))},Pe=_(De,50,!0),Ve=_(qe,50,!0),Fe=e=>{Ve.cancel(),Pe(e)},Ke=()=>{Pe.cancel(),Ve()},Ue=n((()=>{var e,t;const o=null!==(e=null==be?void 0:be.position)&&void 0!==e?e:F;o?He(o):T?Ee.current&&He(Ee.current):(null==ee?void 0:ee.isConnected)&&E({place:null!==(t=null==be?void 0:be.place)&&void 0!==t?t:v,offset:m,elementReference:ee,tooltipReference:se.current,tooltipArrowReference:ae.current,strategy:b,middlewares:S,border:oe,arrowSize:ne}).then((e=>{Le.current&&ze(e)}))}),[fe,ee,Y,V,v,null==be?void 0:be.place,m,b,F,null==be?void 0:be.position,T,ne]);o((()=>{var e,t;const o=new Set(Ae);ke.forEach((e=>{(null==X?void 0:X(e))||o.add({current:e})}));const l=document.querySelector(`[id='${d}']`);l&&!(null==X?void 0:X(l))&&o.add({current:l});const r=()=>{Ie(!1)},n=L(ee),i=L(se.current);$e.scroll&&(window.addEventListener(\"scroll\",r),null==n||n.addEventListener(\"scroll\",r),null==i||i.addEventListener(\"scroll\",r));let c=null;$e.resize?window.addEventListener(\"resize\",r):ee&&se.current&&(c=f(ee,se.current,Ue,{ancestorResize:!0,elementResize:!0,layoutShift:!0}));const s=e=>{\"Escape\"===e.key&&Ie(!1)};$e.escape&&window.addEventListener(\"keydown\",s),$e.clickOutsideAnchor&&window.addEventListener(\"click\",We);const a=[],u=e=>Boolean((null==e?void 0:e.target)&&(null==ee?void 0:ee.contains(e.target))),p=e=>{fe&&u(e)||De(e)},v=e=>{fe&&u(e)&&qe()},m=[\"mouseover\",\"mouseout\",\"mouseenter\",\"mouseleave\",\"focus\",\"blur\"],y=[\"click\",\"dblclick\",\"mousedown\",\"mouseup\"];Object.entries(xe).forEach((([e,t])=>{t&&(m.includes(e)?a.push({event:e,listener:Fe}):y.includes(e)&&a.push({event:e,listener:p}))})),Object.entries(Ne).forEach((([e,t])=>{t&&(m.includes(e)?a.push({event:e,listener:Ke}):y.includes(e)&&a.push({event:e,listener:v}))})),T&&a.push({event:\"pointermove\",listener:Me});const h=()=>{Oe.current=!0},w=()=>{Oe.current=!1,qe()},b=$&&(Ne.mouseout||Ne.mouseleave);return b&&(null===(e=se.current)||void 0===e||e.addEventListener(\"mouseover\",h),null===(t=se.current)||void 0===t||t.addEventListener(\"mouseout\",w)),a.forEach((({event:e,listener:t})=>{o.forEach((o=>{var l;null===(l=o.current)||void 0===l||l.addEventListener(e,t)}))})),()=>{var e,t;$e.scroll&&(window.removeEventListener(\"scroll\",r),null==n||n.removeEventListener(\"scroll\",r),null==i||i.removeEventListener(\"scroll\",r)),$e.resize?window.removeEventListener(\"resize\",r):null==c||c(),$e.clickOutsideAnchor&&window.removeEventListener(\"click\",We),$e.escape&&window.removeEventListener(\"keydown\",s),b&&(null===(e=se.current)||void 0===e||e.removeEventListener(\"mouseover\",h),null===(t=se.current)||void 0===t||t.removeEventListener(\"mouseout\",w)),a.forEach((({event:e,listener:t})=>{o.forEach((o=>{var l;null===(l=o.current)||void 0===l||l.removeEventListener(e,t)}))}))}}),[ee,Ue,he,Ae,ke,H,M,W,Ce,A,O]),o((()=>{var e,t;let o=null!==(t=null!==(e=null==be?void 0:be.anchorSelect)&&void 0!==e?e:p)&&void 0!==t?t:\"\";!o&&l&&(o=`[data-tooltip-id='${l.replace(/'/g,\"\\\\'\")}']`);const r=new MutationObserver((e=>{const t=[],r=[];e.forEach((e=>{if(\"attributes\"===e.type&&\"data-tooltip-id\"===e.attributeName){e.target.getAttribute(\"data-tooltip-id\")===l?t.push(e.target):e.oldValue===l&&r.push(e.target)}if(\"childList\"===e.type){if(ee){const t=[...e.removedNodes].filter((e=>1===e.nodeType));if(o)try{r.push(...t.filter((e=>e.matches(o)))),r.push(...t.flatMap((e=>[...e.querySelectorAll(o)])))}catch(e){}t.some((e=>{var t;return!!(null===(t=null==e?void 0:e.contains)||void 0===t?void 0:t.call(e,ee))&&(we(!1),Ie(!1),te(null),R(ue),R(de),!0)}))}if(o)try{const l=[...e.addedNodes].filter((e=>1===e.nodeType));t.push(...l.filter((e=>e.matches(o)))),t.push(...l.flatMap((e=>[...e.querySelectorAll(o)])))}catch(e){}}})),(t.length||r.length)&&Te((e=>[...e.filter((e=>!r.includes(e))),...t]))}));return r.observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[\"data-tooltip-id\"],attributeOldValue:!0}),()=>{r.disconnect()}}),[l,p,null==be?void 0:be.anchorSelect,ee]),o((()=>{Ue()}),[Ue]),o((()=>{if(!(null==G?void 0:G.current))return()=>null;const e=new ResizeObserver((()=>{setTimeout((()=>Ue()))}));return e.observe(G.current),()=>{e.disconnect()}}),[Y,null==G?void 0:G.current]),o((()=>{var e;const t=document.querySelector(`[id='${d}']`),o=[...ke,t];ee&&o.includes(ee)||te(null!==(e=ke[0])&&void 0!==e?e:t)}),[d,ke,ee]),o((()=>(J&&Ie(!0),()=>{R(ue),R(de)})),[]),o((()=>{var e;let t=null!==(e=null==be?void 0:be.anchorSelect)&&void 0!==e?e:p;if(!t&&l&&(t=`[data-tooltip-id='${l.replace(/'/g,\"\\\\'\")}']`),t)try{const e=Array.from(document.querySelectorAll(t));Te(e)}catch(e){Te([])}}),[l,p,null==be?void 0:be.anchorSelect]),o((()=>{ue.current&&(R(ue),je(A))}),[A]);const Xe=null!==(ce=null==be?void 0:be.content)&&void 0!==ce?ce:Y,Ye=fe&&Object.keys(ve.tooltipStyles).length>0;return a(t,(()=>({open:e=>{if(null==e?void 0:e.anchorSelect)try{document.querySelector(e.anchorSelect)}catch(t){return void console.warn(`[react-tooltip] \"${e.anchorSelect}\" is not a valid CSS selector`)}Se(null!=e?e:null),(null==e?void 0:e.delay)?je(e.delay):Ie(!0)},close:e=>{(null==e?void 0:e.delay)?Be(e.delay):Ie(!1)},activeAnchor:ee,place:ve.place,isOpen:Boolean(he&&!x&&Xe&&Ye)}))),he&&!x&&Xe?e.createElement(g,{id:l,role:ie,className:y(\"react-tooltip\",B.tooltip,D.tooltip,D[u],i,`react-tooltip__place-${ve.place}`,B[Ye?\"show\":\"closing\"],Ye?\"react-tooltip__show\":\"react-tooltip__closing\",\"fixed\"===b&&B.fixed,$&&B.clickable),onTransitionEnd:e=>{R(pe),fe||\"opacity\"!==e.propertyName||(we(!1),Se(null),null==U||U())},style:{...V,...ve.tooltipStyles,opacity:void 0!==le&&Ye?le:void 0},ref:se},Xe,e.createElement(g,{className:y(\"react-tooltip-arrow\",B.arrow,D.arrow,c,N&&B.noArrow),style:{...ve.tooltipArrowStyles,background:re?`linear-gradient(to right bottom, transparent 50%, ${re} 50%)`:void 0,\"--rt-arrow-size\":`${ne}px`},ref:ae})):null},H=({content:t})=>e.createElement(\"span\",{dangerouslySetInnerHTML:{__html:t}}),M=e.forwardRef((({id:t,anchorId:l,anchorSelect:n,content:i,html:c,render:a,className:u,classNameArrow:d,variant:p=\"dark\",place:v=\"top\",offset:m=10,wrapper:f=\"div\",children:h=null,events:w=[\"hover\"],openOnClick:b=!1,positionStrategy:S=\"absolute\",middlewares:g,delayShow:E=0,delayHide:_=0,float:O=!1,hidden:k=!1,noArrow:T=!1,clickable:L=!1,closeOnEsc:C=!1,closeOnScroll:R=!1,closeOnResize:x=!1,openEvents:N,closeEvents:$,globalCloseEvents:I,imperativeModeOnly:j=!1,style:B,position:D,isOpen:M,defaultIsOpen:W=!1,disableStyleInjection:P=!1,border:V,opacity:F,arrowColor:K,arrowSize:U,setIsOpen:X,afterShow:Y,afterHide:G,disableTooltip:Z,role:J=\"tooltip\"},Q)=>{const[ee,te]=r(i),[oe,le]=r(c),[re,ne]=r(v),[ie,ce]=r(p),[se,ae]=r(m),[ue,de]=r(E),[pe,ve]=r(_),[me,fe]=r(O),[ye,he]=r(k),[we,be]=r(f),[Se,ge]=r(w),[Ee,Ae]=r(S),[_e,Oe]=r(null),[ke,Te]=r(null),Le=s(P),{anchorRefs:Ce,activeAnchor:Re}=z(t),xe=e=>null==e?void 0:e.getAttributeNames().reduce(((t,o)=>{var l;if(o.startsWith(\"data-tooltip-\")){t[o.replace(/^data-tooltip-/,\"\")]=null!==(l=null==e?void 0:e.getAttribute(o))&&void 0!==l?l:null}return t}),{}),Ne=e=>{const t={place:e=>{var t;ne(null!==(t=e)&&void 0!==t?t:v)},content:e=>{te(null!=e?e:i)},html:e=>{le(null!=e?e:c)},variant:e=>{var t;ce(null!==(t=e)&&void 0!==t?t:p)},offset:e=>{ae(null===e?m:Number(e))},wrapper:e=>{var t;be(null!==(t=e)&&void 0!==t?t:f)},events:e=>{const t=null==e?void 0:e.split(\" \");ge(null!=t?t:w)},\"position-strategy\":e=>{var t;Ae(null!==(t=e)&&void 0!==t?t:S)},\"delay-show\":e=>{de(null===e?E:Number(e))},\"delay-hide\":e=>{ve(null===e?_:Number(e))},float:e=>{fe(null===e?O:\"true\"===e)},hidden:e=>{he(null===e?k:\"true\"===e)},\"class-name\":e=>{Oe(e)}};Object.values(t).forEach((e=>e(null))),Object.entries(e).forEach((([e,o])=>{var l;null===(l=t[e])||void 0===l||l.call(t,o)}))};o((()=>{te(i)}),[i]),o((()=>{le(c)}),[c]),o((()=>{ne(v)}),[v]),o((()=>{ce(p)}),[p]),o((()=>{ae(m)}),[m]),o((()=>{de(E)}),[E]),o((()=>{ve(_)}),[_]),o((()=>{fe(O)}),[O]),o((()=>{he(k)}),[k]),o((()=>{Ae(S)}),[S]),o((()=>{Le.current!==P&&console.warn(\"[react-tooltip] Do not change `disableStyleInjection` dynamically.\")}),[P]),o((()=>{\"undefined\"!=typeof window&&window.dispatchEvent(new CustomEvent(\"react-tooltip-inject-styles\",{detail:{disableCore:\"core\"===P,disableBase:P}}))}),[]),o((()=>{var e;const o=new Set(Ce);let r=n;if(!r&&t&&(r=`[data-tooltip-id='${t.replace(/'/g,\"\\\\'\")}']`),r)try{document.querySelectorAll(r).forEach((e=>{o.add({current:e})}))}catch(e){console.warn(`[react-tooltip] \"${r}\" is not a valid CSS selector`)}const i=document.querySelector(`[id='${l}']`);if(i&&o.add({current:i}),!o.size)return()=>null;const c=null!==(e=null!=ke?ke:i)&&void 0!==e?e:Re.current,s=new MutationObserver((e=>{e.forEach((e=>{var t;if(!c||\"attributes\"!==e.type||!(null===(t=e.attributeName)||void 0===t?void 0:t.startsWith(\"data-tooltip-\")))return;const o=xe(c);Ne(o)}))})),a={attributes:!0,childList:!1,subtree:!1};if(c){const e=xe(c);Ne(e),s.observe(c,a)}return()=>{s.disconnect()}}),[Ce,Re,ke,l,n]),o((()=>{(null==B?void 0:B.border)&&console.warn(\"[react-tooltip] Do not set `style.border`. Use `border` prop instead.\"),V&&!A(\"border\",`${V}`)&&console.warn(`[react-tooltip] \"${V}\" is not a valid \\`border\\`.`),(null==B?void 0:B.opacity)&&console.warn(\"[react-tooltip] Do not set `style.opacity`. Use `opacity` prop instead.\"),F&&!A(\"opacity\",`${F}`)&&console.warn(`[react-tooltip] \"${F}\" is not a valid \\`opacity\\`.`)}),[]);let $e=h;const Ie=s(null);if(a){const t=a({content:(null==ke?void 0:ke.getAttribute(\"data-tooltip-content\"))||ee||null,activeAnchor:ke});$e=t?e.createElement(\"div\",{ref:Ie,className:\"react-tooltip-content-wrapper\"},t):null}else ee&&($e=ee);oe&&($e=e.createElement(H,{content:oe}));const ze={forwardRef:Q,id:t,anchorId:l,anchorSelect:n,className:y(u,_e),classNameArrow:d,content:$e,contentWrapperRef:Ie,place:re,variant:ie,offset:se,wrapper:we,events:Se,openOnClick:b,positionStrategy:Ee,middlewares:g,delayShow:ue,delayHide:pe,float:me,hidden:ye,noArrow:T,clickable:L,closeOnEsc:C,closeOnScroll:R,closeOnResize:x,openEvents:N,closeEvents:$,globalCloseEvents:I,imperativeModeOnly:j,style:B,position:D,isOpen:M,defaultIsOpen:W,border:V,opacity:F,arrowColor:K,arrowSize:U,setIsOpen:X,afterShow:Y,afterHide:G,disableTooltip:Z,activeAnchor:ke,setActiveAnchor:e=>Te(e),role:J};return e.createElement(q,{...ze})}));\"undefined\"!=typeof window&&window.addEventListener(\"react-tooltip-inject-styles\",(e=>{e.detail.disableCore||S({css:`:root{--rt-color-white:#fff;--rt-color-dark:#222;--rt-color-success:#8dc572;--rt-color-error:#be6464;--rt-color-warning:#f0ad4e;--rt-color-info:#337ab7;--rt-opacity:0.9;--rt-transition-show-delay:0.15s;--rt-transition-closing-delay:0.15s;--rt-arrow-size:8px}.core-styles-module_tooltip__3vRRp{position:absolute;top:0;left:0;pointer-events:none;opacity:0;will-change:opacity}.core-styles-module_fixed__pcSol{position:fixed}.core-styles-module_arrow__cvMwQ{position:absolute;background:inherit;z-index:-1}.core-styles-module_noArrow__xock6{display:none}.core-styles-module_clickable__ZuTTB{pointer-events:auto}.core-styles-module_show__Nt9eE{opacity:var(--rt-opacity);transition:opacity var(--rt-transition-show-delay)ease-out}.core-styles-module_closing__sGnxF{opacity:0;transition:opacity var(--rt-transition-closing-delay)ease-in}`,type:\"core\"}),e.detail.disableBase||S({css:`\n.styles-module_tooltip__mnnfp{padding:8px 16px;border-radius:3px;font-size:90%;width:max-content}.styles-module_arrow__K0L3T{width:var(--rt-arrow-size);height:var(--rt-arrow-size)}[class*='react-tooltip__place-top']>.styles-module_arrow__K0L3T{transform:rotate(45deg)}[class*='react-tooltip__place-right']>.styles-module_arrow__K0L3T{transform:rotate(135deg)}[class*='react-tooltip__place-bottom']>.styles-module_arrow__K0L3T{transform:rotate(225deg)}[class*='react-tooltip__place-left']>.styles-module_arrow__K0L3T{transform:rotate(315deg)}.styles-module_dark__xNqje{background:var(--rt-color-dark);color:var(--rt-color-white)}.styles-module_light__Z6W-X{background-color:var(--rt-color-white);color:var(--rt-color-dark)}.styles-module_success__A2AKt{background-color:var(--rt-color-success);color:var(--rt-color-white)}.styles-module_warning__SCK0X{background-color:var(--rt-color-warning);color:var(--rt-color-white)}.styles-module_error__JvumD{background-color:var(--rt-color-error);color:var(--rt-color-white)}.styles-module_info__BWdHW{background-color:var(--rt-color-info);color:var(--rt-color-white)}`,type:\"base\"})}));export{M as Tooltip,I as TooltipProvider,j as TooltipWrapper,g as removeStyle};\n","import { useMemo } from \"react\";\nimport useStore from \"./store\";\nimport { useEditorialHandler } from \"./hooks/useEditorialHandler\";\nimport HoverHighlighter from \"./HoverHighlighter\";\nimport { Button, Modal, Radio } from \"antd\";\nimport { Tooltip } from \"react-tooltip\";\nimport { EditorialItem, Choice, Option } from \"./types\";\nimport { useTranslation } from 'react-i18next';\n\n\nfunction Editorials() {\n    const { t } = useTranslation(\"common\");\n    const score = useStore.use.score();\n    const showingEditorial = useStore.use.showingEditorial();\n    const setShowingEditorial = useStore.use.setShowingEditorial();\n    const appOptions = useStore.use.appOptions();\n    const setAppOptions = useStore.use.setAppOptions();\n    const choiceOptions = useStore.use.choiceOptions();\n    const setChoiceOptions = useStore.use.setChoiceOptions();\n    const renderedSvgData = useStore.use.renderedSvgData();\n\n    const editorials = score?.editorialItems;\n\n    const { formatType } = useEditorialHandler();\n\n    const TOOLTIP_SELECTOR = useMemo(() =>\n        ['corr', 'unclear', 'sic', 'app', 'choice', 'lem', 'reg', 'orig', 'supplied']\n            .map(e => `svg .${e}:not(.bounding-box)`).join(\", \")\n        , [])\n\n    const showingEditorialItem = showingEditorial ? editorials?.find(e => e.id == showingEditorial) : null;\n\n    const getAnnotationText = (item: EditorialItem) => {\n        if (item.annotations.size <= 0) {\n            return null;\n        }\n        const annot = item.annotations.values().next().value;\n\n        return annot != null ? <p>{annot.text}</p> : null;\n    };\n\n    const getAppChoiceExtraText = (sourceTitle: string | null | undefined, contentDescription: string | null | undefined) => {\n        return `${sourceTitle ? sourceTitle : ''}${contentDescription ? ': ' + contentDescription : ''}`;\n    }\n\n    const getAppChoiceText = (subtype: string, options: Option[], option: Option) => {\n        const optionSource = option.source;\n        const sourceTitle = optionSource && score?.properties.sources[optionSource]?.title;\n        const contentDescription = option.contentDescription\n        const extraText = getAppChoiceExtraText(sourceTitle, contentDescription);\n        if (subtype == \"lem\") {\n            return `${t(\"editorial.preferredReading\")} ${extraText}`;\n        }\n        const rdgs = options.filter(o => o.type == \"rdg\");\n        if (rdgs.length == 1) {\n            return `${t(\"editorial.alternativeReading\")} ${extraText}`;\n        }\n        return `${t(\"editorial.alternativeReadingNumber\")}${1 + rdgs.findIndex(r => r == option)} ${extraText}`;\n    }\n\n\n    const getChoiceText = (type: string, subtype: string, options: Option[], index: number) => {\n        if (type == \"app\") {\n            const text = getAppChoiceText(subtype, options, options[index]);\n            return text\n        } else if (type == \"choice\") {\n            if (subtype == \"reg\") {\n                return t(\"editorial.regReading\");\n            } else if (subtype == \"orig\") {\n                return t(\"editorial.origReading\");\n            } else {\n                return t('editorial.optionNumber', { 'number': 1 + index });\n            }\n        } else {\n            return \"\";\n        }\n    };\n\n    const onOptionSelected = (type: string, choice: Choice, selectedOptionIndex: number) => {\n        const removeEntries = choice.options.filter((_, index) => index != selectedOptionIndex).map(o => o.selector);\n        if (type == \"app\") {\n            const newOptions = appOptions.filter((o: any) => !removeEntries.includes(o));\n            newOptions.push(choice.options[selectedOptionIndex].selector);\n            setAppOptions(newOptions, true);\n        } else if (type == \"choice\") {\n            const newOptions = choiceOptions.filter((o: any) => !removeEntries.includes(o));\n            newOptions.push(choice.options[selectedOptionIndex].selector);\n            setChoiceOptions(newOptions, true);\n        }\n    };\n\n    const getOptionsList = (item: EditorialItem, selectedOptionIndex: number) => {\n        const type = item.type;\n        const choice = item.choice!;\n        const options = choice.options.map((o, index) => { return { option: o, index: index }; });\n\n        return (\n            <Radio.Group\n                style={{ display: 'flex', flexDirection: 'column', gap: 8, }}\n                onChange={(e) => onOptionSelected(type, choice, e.target.value)}\n                value={selectedOptionIndex}\n                options={options.map((o) => { return { value: o.index, label: getChoiceText(type, o.option.type, choice.options, o.index) }; })} />\n        );\n    };\n\n    const getSelectedOption = (type: string, choice: Choice) => {\n        if (type == \"app\") {\n            const inApp = choice.options.findIndex((option) => Object.values(appOptions).includes(option.selector));\n            if (inApp != -1) {\n                return inApp;\n            } else {\n                // Default app order is: 1) lem, 2) if no lem, first rdg\n                const lemIdx = choice.options.findIndex((option) => option.type == \"lem\");\n                if (lemIdx != -1) {\n                    return lemIdx;\n                }\n                return 0;\n            }\n        } else if (type == \"choice\") {\n            const inChoices = choice.options.findIndex((option) => Object.values(choiceOptions).includes(option.selector));\n            if (inChoices != -1) {\n                return inChoices;\n            } else {\n                return 0;\n            }\n        }\n\n        return 0;\n    };\n\n\n    const getChoices = (item: EditorialItem) => {\n        const type = item.type;\n        const choice = item.choice;\n        if (choice === undefined) {\n            return null;\n        }\n\n        const selectedOptionIdx = getSelectedOption(type, choice);\n        const subtype = item.choice!.options[selectedOptionIdx].type;\n\n        const options = getOptionsList(item, selectedOptionIdx);\n\n        return (\n            <div>\n                <br />\n                <p>{t('editorial.currentlyShowing', { 'what': getChoiceText(type, subtype, choice.options, selectedOptionIdx) })} </p>\n                <p>{t('editorial.availableOptions')}:</p>\n                {options}\n            </div>\n        );\n    };\n\n\n    const getTooltipContent = (render: { content: string | null; activeAnchor: HTMLElement | null }) => {\n        const cls = (render.activeAnchor?.className as SVGAnimatedString | undefined)?.baseVal;\n        return cls ? <span>{formatType(cls)}</span> : null\n    }\n\n    return (\n        <div>\n\n\n            <Tooltip id=\"verovio-tooltip\"\n                variant=\"info\"\n                style={{ zIndex: 3 }}\n                offset={20}\n                delayShow={500}\n                anchorSelect={TOOLTIP_SELECTOR}\n                render={getTooltipContent} />\n\n            {renderedSvgData?.id && <HoverHighlighter svgId={renderedSvgData.id} />}\n\n            {showingEditorialItem ? (\n                <Modal\n                    title={formatType(showingEditorialItem!.type)}\n                    open={showingEditorialItem != null && showingEditorialItem != undefined}\n                    onCancel={() => setShowingEditorial(null)}\n                    footer={\n                        <Button type=\"primary\" onClick={() => setShowingEditorial(null)}>{t('ok')}</Button>\n                    }>\n\n                    {showingEditorialItem!.reason != \"\" ? <p>{`${t('editorial.reason')}: ${showingEditorialItem!.reason}`}</p> : \"\"}\n                    {showingEditorialItem!.resp != \"\" ? <p>{`${t('editorial.resp')}: ${showingEditorialItem!.resp}`}</p> : \"\"}\n                    {getAnnotationText(showingEditorialItem!)}\n                    {getChoices(showingEditorialItem!)}\n                </Modal>\n            ) : null}\n        </div>\n    );\n}\n\nexport default Editorials;\n","import * as React from \"react\";\nconst SvgStaticPlayer = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 48, height: 48, viewBox: \"0 0 48 48\", xmlns: \"http://www.w3.org/2000/svg\", \"xmlns:svg\": \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"g\", { transform: \"matrix(0.67086044,0,0,0.67086044,2.8617613,27.399396)\", id: \"g1\" }, /* @__PURE__ */ React.createElement(\"ellipse\", { cx: 8, cy: 20, rx: 6, ry: 4.5, fill: \"#333333\", transform: \"rotate(-20,8,20)\", id: \"ellipse1\" }), /* @__PURE__ */ React.createElement(\"line\", { x1: 13, y1: 18, x2: 13, y2: 2, stroke: \"#333333\", strokeWidth: 2, id: \"line1\" })), /* @__PURE__ */ React.createElement(\"g\", { transform: \"matrix(0.67086044,0,0,0.67086044,19.335653,27.145589)\", id: \"g2\" }, /* @__PURE__ */ React.createElement(\"ellipse\", { cx: 8, cy: 20, rx: 6, ry: 4.5, fill: \"#333333\", transform: \"rotate(-20,8,20)\", id: \"ellipse1-6\" }), /* @__PURE__ */ React.createElement(\"line\", { x1: 13, y1: 18, x2: 13, y2: 2, stroke: \"#333333\", strokeWidth: 2, id: \"line1-2\" })), /* @__PURE__ */ React.createElement(\"g\", { transform: \"matrix(0.67086044,0,0,0.67086044,34.65545,26.769954)\", id: \"g2-9\" }, /* @__PURE__ */ React.createElement(\"ellipse\", { cx: 8, cy: 20, rx: 6, ry: 4.5, fill: \"#333333\", transform: \"rotate(-20,8,20)\", id: \"ellipse1-2\" }), /* @__PURE__ */ React.createElement(\"line\", { x1: 13, y1: 18, x2: 13, y2: 2, stroke: \"#333333\", strokeWidth: 2, id: \"line1-0\" })), /* @__PURE__ */ React.createElement(\"g\", { transform: \"matrix(0.67086044,0,0,0.67086044,3.7925057,4.4400049)\", id: \"g2-92\" }, /* @__PURE__ */ React.createElement(\"ellipse\", { cx: 8, cy: 20, rx: 6, ry: 4.5, fill: \"#333333\", transform: \"rotate(-20,8,20)\", id: \"ellipse1-28\" }), /* @__PURE__ */ React.createElement(\"line\", { x1: 13, y1: 18, x2: 13, y2: 2, stroke: \"#333333\", strokeWidth: 2, id: \"line1-9\" })), /* @__PURE__ */ React.createElement(\"g\", { transform: \"matrix(0.67086044,0,0,0.67086044,19.78743,4.4349287)\", id: \"g2-2\" }, /* @__PURE__ */ React.createElement(\"ellipse\", { cx: 8, cy: 20, rx: 6, ry: 4.5, fill: \"#333333\", transform: \"rotate(-20,8,20)\", id: \"ellipse1-9\" }), /* @__PURE__ */ React.createElement(\"line\", { x1: 13, y1: 18, x2: 13, y2: 2, stroke: \"#333333\", strokeWidth: 2, id: \"line1-3\" })), /* @__PURE__ */ React.createElement(\"g\", { transform: \"matrix(0.67086044,0,0,0.67086044,33.4321,4.0491419)\", id: \"g2-8\" }, /* @__PURE__ */ React.createElement(\"ellipse\", { cx: 8, cy: 20, rx: 6, ry: 4.5, fill: \"#333333\", transform: \"rotate(-20,8,20)\", id: \"ellipse1-4\" }), /* @__PURE__ */ React.createElement(\"line\", { x1: 13, y1: 18, x2: 13, y2: 2, stroke: \"#333333\", strokeWidth: 2, id: \"line1-5\" })));\nexport default SvgStaticPlayer;\n","import * as React from \"react\";\nconst SvgScrollingPlayer = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 48, height: 48, viewBox: \"0 0 48 48\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"line\", { x1: 24, y1: 8, x2: 24, y2: 40, stroke: \"#4285F4\", strokeWidth: 2.5 }), /* @__PURE__ */ React.createElement(\"g\", { transform: \"translate(6, 12)\" }, /* @__PURE__ */ React.createElement(\"ellipse\", { cx: 8, cy: 20, rx: 6, ry: 4.5, fill: \"#333333\", transform: \"rotate(-20, 8, 20)\" }), /* @__PURE__ */ React.createElement(\"line\", { x1: 13, y1: 18, x2: 13, y2: 2, stroke: \"#333333\", strokeWidth: 2 }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M18,24 L22,24 L20,21 Z\", fill: \"#666666\" })), /* @__PURE__ */ React.createElement(\"g\", { transform: \"translate(28, 12)\" }, /* @__PURE__ */ React.createElement(\"ellipse\", { cx: 8, cy: 20, rx: 6, ry: 4.5, fill: \"#999999\", transform: \"rotate(-20, 8, 20)\" }), /* @__PURE__ */ React.createElement(\"line\", { x1: 13, y1: 18, x2: 13, y2: 2, stroke: \"#999999\", strokeWidth: 2 }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M4,24 L0,24 L2,21 Z\", fill: \"#666666\" })));\nexport default SvgScrollingPlayer;\n","import { Row, Col, Slider, Segmented } from \"antd\";\nimport { useMemo, useCallback, useEffect, useState, useRef } from \"react\";\nimport useStore from \"./store\";\nimport Icon from \"@ant-design/icons\";\nimport StaticPlayerSvg from \"../assets/static-player.svg?react\";\nimport ScrollingPlayerSvg from \"../assets/scrolling-player.svg?react\";\nimport { useTranslation } from \"react-i18next\";\n\nconst str2padded = (n: number) => (Math.floor(n)).toString().padStart(2, '0')\n\nconst formatTime = (millis: number) => {\n    const mins = str2padded(millis / 1000 / 60)\n    const secs = str2padded((millis / 1000) % 60)\n    return `${mins}:${secs}`\n}\n\nconst tooltipNullFormater  = (_?: number) => null\n\n\nexport interface PlayerControlProps {\n    audioDuration?: number;\n}\n\n\nfunction PlayerControls({ audioDuration = 0 }: PlayerControlProps) {\n    const { t } = useTranslation(\"common\")\n\n    const playingPosition = useStore.use.playingPosition()\n    const setSeekPosition = useStore.use.setSeekPosition()\n    const setAutoScroll = useStore.use.setAutoScroll()\n\n    const [positionString, setPositionString] = useState(\"00:00\")\n    const [durationString, setDurationString] = useState(\"00:00\")\n    const [playerMode, setPlayerMode] = useState(\"static\")\n    const [currentDuration, setCurrentDuration] = useState(audioDuration || 0);\n\n    const seekValue = useRef(0)\n    const isChanging = useRef(false)\n\n    useEffect(() => {\n        if (audioDuration > 0) {\n            setCurrentDuration(audioDuration);\n            const durationStr = formatTime(audioDuration);\n            setDurationString(durationStr);\n        }\n    }, [audioDuration]);\n\n    const updateTime = (position: number) => {\n        seekValue.current = position\n        const currentTimeStr = formatTime(position)\n        if (currentTimeStr != positionString) {\n            setPositionString(currentTimeStr)\n        }\n    }\n\n    const handleSliderChange = useCallback((v: number) => {\n        isChanging.current = true\n        seekValue.current = Math.round(v)\n    }, []);\n\n    const handleSliderChangeComplete = useCallback((_: number) => {\n        isChanging.current = false\n        setSeekPosition(seekValue.current)\n        updateTime(Math.round(seekValue.current))\n    }, [setSeekPosition]);\n\n\n    useEffect(() => {\n        if (isChanging.current) {\n            return\n        }\n\n        const roundedPostion = Math.round(playingPosition)\n        if (roundedPostion == seekValue.current) {\n            return\n        }\n        updateTime(roundedPostion)\n    }, [playingPosition])\n\n    const onPlayerModeChange = (value: string) => {\n        setPlayerMode(value)\n        if (value == \"scrolling\") {\n            setAutoScroll(true)\n        } else if (value == \"static\") {\n            setAutoScroll(false);\n        }\n    }\n\n\n    const playModeSegmented = (\n        <Segmented\n            size=\"small\"\n            shape=\"default\"\n            onChange={onPlayerModeChange}\n            value={playerMode}\n            options={[\n                { value: 'scrolling', label: t('playerMode.autoscroll'), icon: <Icon component={ScrollingPlayerSvg} /> },\n                { value: 'static', label: t('playerMode.normal'), icon: <Icon component={StaticPlayerSvg} /> }\n            ]} />\n    )\n\n    const playerControls = useMemo(() => (\n        <Row align=\"top\" style={{ justifyContent: \"left\", backgroundColor: \"white\" }} gutter={{ xs: 8, sm: 16, md: 24, lg: 32 }}>\n            <Col span={4} style={{ textAlign: \"right\" }}>\n                {positionString}\n            </Col>\n            <Col span={10} style={{ width: \"300px\", height: \"30px\" }}>\n                <Slider\n                    style={{ width: \"100%\", margin: \"6px\" }}\n                    min={0}\n                    max={currentDuration}\n                    step={1}\n                    tooltip={ { formatter: tooltipNullFormater, open: false } }\n                    value={seekValue.current}\n                    onChange={handleSliderChange}\n                    onChangeComplete={handleSliderChangeComplete} />\n            </Col>\n            <Col span={4} style={{ textAlign: \"left\" }}>\n                {durationString}\n            </Col>\n            <Col span={6} style={{ textAlign: \"right\" }}>\n                {playModeSegmented}\n            </Col>\n        </Row>\n    ), [durationString, positionString, playerMode, currentDuration, seekValue.current, handleSliderChange, handleSliderChangeComplete])\n\n    return (\n        playerControls\n    )\n}\n\nexport default PlayerControls\n","import useStore from \"../store\";\nimport { PlayingState, MIN_SCALE, MAX_SCALE } from '../types';\n\n/**\n * Custom hook to handle score navigation, zoom, and fullscreen functionality\n * @param scoresToSelect Array of score titles to select from\n * @param fullScreenElement Reference to the element that can be fullscreened\n * @returns Functions and state for score controls\n */\nexport default function useScoreControls(\n  fullScreenElement: HTMLElement | null,\n) {\n  // Get state and actions from store\n  const score = useStore.use.score()\n  const playingState = useStore.use.playingState();\n  const resetPlayerPosition = useStore.use.resetPlayerPosition();\n  const scale = useStore.use.scale();\n  const increaseScale = useStore.use.increaseScale();\n  const decreaseScale = useStore.use.decreaseScale();\n  const reachedEffectiveMaxScale = useStore.use.reachedEffectiveMaxScale();\n  const setReachedEffectiveMaxScale = useStore.use.setReachedEffectiveMaxScale();\n  const pageCount = useStore.use.pageCount();\n  const currentPageNumber = useStore.use.currentPage();\n  const goToPage = useStore.use.goToPage()\n\n\n  // Fullscreen functions\n  const isFullScreen = () =>\n    fullScreenElement != null &&\n    (fullScreenElement.ownerDocument.fullscreenElement == fullScreenElement);\n\n    /*\n  const exitFullScreen = () => {\n    if (isFullScreen()) {\n      document.exitFullscreen();\n    }\n  };\n  */\n\n  const handleFullScreenToggle = () => {\n    if (fullScreenElement && !isFullScreen()) {\n      fullScreenElement.requestFullscreen();\n    } else {\n      document.exitFullscreen();\n    }\n  };\n\n\n  // Zoom functions\n  const zoomIn = () => {\n    increaseScale()\n  };\n\n  const zoomOut = () => {\n    decreaseScale();\n    setReachedEffectiveMaxScale(false);\n  };\n\n  // Page navigation\n  const handlePageClick = (page: number) => {\n    resetPlayerPosition();\n    goToPage(page);\n  };\n\n\n\n  // Derived data\n\n\n  // Calculated states for UI\n  const isPlaying = playingState === PlayingState.PLAYING;\n  const canZoomOut = !isPlaying && scale > MIN_SCALE;\n  const canZoomIn = !isPlaying && scale < MAX_SCALE && !reachedEffectiveMaxScale;\n  const shouldShowPagination = pageCount > 1;\n  const scoreUrl = score?.url\n\n\n  return {\n    // State\n    scoreUrl,\n    currentPageNumber,\n    pageCount,\n    scale,\n    playingState,\n\n    // Derived state\n    isPlaying,\n    canZoomIn,\n    canZoomOut,\n    shouldShowPagination,\n    isFullScreen: isFullScreen(),\n\n    // Functions\n    handlePageClick,\n    zoomIn,\n    zoomOut,\n    handleFullScreenToggle,\n  };\n}\n","import { useMemo } from 'react';\nimport { Space, Pagination, Button, Col, Row } from 'antd';\nimport { ZoomInOutlined, ZoomOutOutlined, FullscreenOutlined, FullscreenExitOutlined, DownloadOutlined } from '@ant-design/icons';\nimport { PlayingState } from './types';\nimport PlayerControls from './PlayerControls';\nimport useScoreControls from './hooks/useScoreControls';\nimport { useTranslation } from 'react-i18next';\nimport useStore from './store';\n\nexport enum PlayerControlEventType {\n    SEEK,\n}\n\nexport type PlayerControlEvent = {\n    type: PlayerControlEventType,\n    value?: any\n}\n\ninterface ScoreControlProps {\n    style?: React.CSSProperties | undefined;\n    fullScreenElement: HTMLElement | null;\n    showDownloadButton?: boolean | undefined;\n    audioDuration: number;\n}\n\nconst ScoreControls = ({ style, fullScreenElement, showDownloadButton, audioDuration }: ScoreControlProps) => {\n    const { t } = useTranslation(\"common\")\n  const splitView = useStore.use.isSplitView();\n\n    // Use our custom hook for all score controls logic\n    const {\n        // State and derived state\n        currentPageNumber,\n        scoreUrl,\n        pageCount,\n        playingState,\n        shouldShowPagination,\n        isFullScreen,\n        canZoomIn,\n        canZoomOut,\n\n        // Functions\n        handlePageClick,\n        zoomIn,\n        zoomOut,\n        handleFullScreenToggle,\n    } = useScoreControls(fullScreenElement);\n\n\n    const mainControls = useMemo(() => (\n        <Space direction='horizontal'>\n            <Button shape=\"circle\" icon={<ZoomOutOutlined />} onClick={zoomOut} disabled={!canZoomOut} />\n            <Button shape=\"circle\" icon={<ZoomInOutlined />} onClick={zoomIn} disabled={!canZoomIn} />\n            <Button\n                icon={isFullScreen ? <FullscreenExitOutlined /> : <FullscreenOutlined />}\n                onClick={handleFullScreenToggle}\n                disabled={playingState === PlayingState.PLAYING} />\n\n\n            {showDownloadButton ?\n                <Button type=\"default\" icon={<DownloadOutlined />} download href={scoreUrl || ''}>MEI</Button> : null}\n\n        </Space>\n    ), [canZoomIn, canZoomOut, playingState, isFullScreen, scoreUrl, t]);\n\n    const pagination = useMemo(() => (\n        shouldShowPagination ?\n            <Pagination\n                disabled={playingState === PlayingState.PLAYING}\n                align=\"center\"\n                current={currentPageNumber}\n                defaultPageSize={1}\n                total={pageCount}\n                simple={false}\n                onChange={handlePageClick} />\n            : null\n    ), [shouldShowPagination, playingState, currentPageNumber, pageCount]);\n\n    const viewingControls = useMemo(() => {\n        return <Row style={{ justifyContent: \"left\", backgroundColor: \"white\" }} gutter={{ xs: 8, sm: 16, md: 24, lg: 32 }}>\n            <Col xxl={8} xl={14} lg={8} md={10} sm={12} xs={14} >\n                {mainControls}\n            </Col>\n            <Col xxl={12} xl={10} lg={14} md={14} sm={20} xs={24} >\n                {pagination}\n            </Col>\n        </Row>\n    }, [mainControls, pagination, splitView]);\n\n    return (\n        <div className=\"score-controls\" style={style} >\n\n            {playingState === PlayingState.STOPPED ?\n                viewingControls : <PlayerControls audioDuration={audioDuration} />}\n        </div>\n    );\n};\n\nexport default ScoreControls;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n    var ownKeys = function(o) {\n        ownKeys = Object.getOwnPropertyNames || function (o) {\n            var ar = [];\n            for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n            return ar;\n        };\n        return ownKeys(o);\n    };\n    return function (mod) {\n        if (mod && mod.__esModule) return mod;\n        var result = {};\n        if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n        __setModuleDefault(result, mod);\n        return result;\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.useWindowSize = useWindowSize;\nvar React = __importStar(require(\"react\"));\nfunction measure() {\n    return {\n        height: window.innerHeight,\n        width: window.innerWidth,\n    };\n}\nfunction useWindowSize() {\n    var _a = React.useState(measure()), size = _a[0], setSize = _a[1];\n    React.useLayoutEffect(function () {\n        function onResize() {\n            setSize(measure());\n        }\n        window.addEventListener('resize', onResize);\n        return function () { return window.removeEventListener('resize', onResize); };\n    }, []);\n    return size;\n}\n//# sourceMappingURL=useWindowSize.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.useBreakpoint = useBreakpoint;\nexports.useBreakpoints = useBreakpoints;\nvar useWindowSize_1 = require(\"./useWindowSize\");\nfunction useBreakpoint(breakpoint) {\n    var width = (0, useWindowSize_1.useWindowSize)().width;\n    return width < breakpoint;\n}\nfunction useBreakpoints(breakpoints) {\n    var width = (0, useWindowSize_1.useWindowSize)().width;\n    return breakpoints.map(function (breakpoint) { return width < breakpoint; });\n}\n//# sourceMappingURL=useBreakpoint.js.map","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n    var ownKeys = function(o) {\n        ownKeys = Object.getOwnPropertyNames || function (o) {\n            var ar = [];\n            for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n            return ar;\n        };\n        return ownKeys(o);\n    };\n    return function (mod) {\n        if (mod && mod.__esModule) return mod;\n        var result = {};\n        if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n        __setModuleDefault(result, mod);\n        return result;\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.useComponentSize = useComponentSize;\nvar React = __importStar(require(\"react\"));\nfunction useComponentSize() {\n    var _a = React.useState({\n        height: 0,\n        width: 0,\n    }), size = _a[0], setSize = _a[1];\n    var ref = React.useRef(undefined);\n    var onResize = React.useCallback(function () {\n        if (!ref.current) {\n            return;\n        }\n        var newHeight = ref.current.offsetHeight;\n        var newWidth = ref.current.offsetWidth;\n        if (newHeight !== size.height || newWidth !== size.width) {\n            setSize({\n                height: newHeight,\n                width: newWidth,\n            });\n        }\n    }, [size.height, size.width]);\n    React.useLayoutEffect(function () {\n        if (!ref || !ref.current) {\n            return;\n        }\n        var resizeObserver = new ResizeObserver(onResize);\n        resizeObserver.observe(ref.current);\n        return function () { return resizeObserver.disconnect(); };\n    }, [ref, onResize]);\n    return __assign({ ref: ref }, size);\n}\n//# sourceMappingURL=useComponentSize.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./useBreakpoint\"), exports);\n__exportStar(require(\"./useComponentSize\"), exports);\n__exportStar(require(\"./useWindowSize\"), exports);\n//# sourceMappingURL=index.js.map","import i18next from \"./i18n\";\n\ntype FilterFunc = (doc: Document, params: any) => void\n\ntype Filters = [FilterFunc, any][];\n\nconst XPATH_RECONSTRUCTION_RDG_LABELS = '(//mei:measure[1])//mei:app[@type=\"voice_reconstruction\"]/mei:rdg/@label'\nconst XPATH_FIRST_MEASURE = '//mei:measure[1]'\nconst XPATH_FICTA_ACCIDS = '//mei:accid[@func=\"edit\"]'\n\nconst nsResolver = (prefix: string | null) => { return { mei: \"http://www.music-encoding.org/ns/mei\", xml: \"http://www.w3.org/XML/1998/namespace\" }[prefix || ''] || null }\n\n\nconst AddSectionTitlesFilter: FilterFunc = (doc: Document, _: {}) => {\n    let matches = doc?.evaluate(`//mei:section[@label]/@label`, doc, nsResolver, XPathResult.ANY_TYPE, null)\n    let node;\n    const labels = []\n    while ((node = matches?.iterateNext())) {\n        if (node.nodeValue != null && node.nodeValue.indexOf(\"_heading\") < 0) {\n            labels.push(node.nodeValue)\n        }\n    }\n\n    // Only write titles if we have more than one section\n    if (labels.length <= 1) {\n        return\n    }\n    labels.forEach(label => {\n        let measure = doc?.evaluate(`//mei:section[@label=\"${label}\"]/mei:measure[1]`, doc, nsResolver, XPathResult.ANY_TYPE, null)?.iterateNext()\n        if (measure == null) {\n            return\n        }\n        const title = (label.charAt(0).toUpperCase() + label.slice(1)).replace(/_/g, \" \")\n        const dir = doc.createElement(\"dir\")\n        dir.setAttribute(\"place\", \"above\")\n        dir.setAttribute(\"staff\", \"1\")\n        dir.setAttribute(\"tstamp\", \"0\")\n        measure?.insertBefore(dir, measure.firstChild)\n        const rend = doc.createElement(\"rend\")\n        rend.setAttribute(\"fontstyle\", \"normal\")\n        rend.setAttribute(\"fontweight\", \"bold\")\n        dir.appendChild(rend)\n        const text = doc.createTextNode(title)\n        rend.appendChild(text)\n    })\n}\n\nconst AddReconstructionNamesFilter: FilterFunc = (doc: Document, _: {}) => {\n    let measure = doc?.evaluate(XPATH_FIRST_MEASURE, doc, nsResolver, XPathResult.ANY_TYPE, null)?.iterateNext()\n    if (measure == null) {\n        return\n    }\n\n    let matches = doc?.evaluate(XPATH_RECONSTRUCTION_RDG_LABELS, doc, nsResolver, XPathResult.ANY_TYPE, null)\n    const labels = []\n    let node;\n    while ((node = matches?.iterateNext())) {\n        if (node.nodeValue != null ) {\n            labels.push(node.nodeValue)\n        }\n    }\n\n    const app = doc.createElement(\"app\")\n    app.setAttribute(\"type\", \"voice_reconstruction\")\n    measure?.insertBefore(app, measure.firstChild)\n\n    const lem = doc.createElement(\"lem\")\n    lem.setAttribute(\"label\", \"none\")\n    app.appendChild(lem)\n\n    labels.forEach(label => {\n        const parts = label.split(\":\")\n        if (parts.length < 4 || parts[0] != \"reconstruction\") {\n            return\n        }\n        const staff = label.split(\":\")[1]\n        const type = label.split(\":\")[2]\n        const name = label.split(\":\")[3]\n        const desc = type == \"IA\" ?\n            i18next.t('scoreProcessor.reconstructionByIA', { \"name\": name }) :\n            i18next.t('scoreProcessor.reconstructionByHuman', { \"name\": name })\n\n\n        const rdg = doc.createElement(\"rdg\")\n        rdg.setAttribute(\"label\", label)\n        app.appendChild(rdg)\n\n\n        const dir = doc.createElement(\"dir\")\n        dir.setAttribute(\"place\", \"above\")\n        dir.setAttribute(\"staff\", staff)\n        dir.setAttribute(\"tstamp\", \"0\")\n        dir.setAttribute(\"type\", \"reconstruction-name\")\n        rdg.appendChild(dir)\n\n        const rend = doc.createElement(\"rend\")\n        rend.setAttribute(\"fontstyle\", \"normal\")\n        rend.setAttribute(\"fontweight\", \"bold\")\n        dir.appendChild(rend)\n\n        const text = doc.createTextNode(desc)\n        rend.appendChild(text)\n    })\n\n}\n\nconst FilterToNVerses: FilterFunc = (doc: Document, params: {n: number}) => {\n    const numVerses = params.n\n    let matches = doc?.evaluate(`//mei:verse[@n > \"${numVerses}\"]`, doc, nsResolver, XPathResult.ANY_TYPE, null)\n    if (matches == null) {\n        return\n    }\n    const nodes = []\n    var node = matches.iterateNext()\n    while (node != null) {\n        nodes.push(node)\n        node = matches.iterateNext()\n    }\n    nodes.forEach(n => n.parentElement?.removeChild(n))\n}\n\n\nconst FilterNormalizeFicta: FilterFunc = (doc: Document, _: {}) => {\n    const fictacAccidIter = doc?.evaluate(XPATH_FICTA_ACCIDS, doc, nsResolver, XPathResult.ANY_TYPE, null)\n    if (fictacAccidIter == null) {\n        return\n    }\n\n    const nodes = []\n    var node = fictacAccidIter.iterateNext()\n    while (node != null) {\n        nodes.push(node as Element)\n        node = fictacAccidIter.iterateNext()\n    }\n\n    nodes.forEach(n => {\n        n.removeAttribute(\"func\")\n        n.removeAttribute(\"enclose\")\n    })\n\n}\n\nconst EnsureElementIdFilter = (doc: Document, element: string, prefix: string) => {\n\n    let matches = doc?.evaluate(`//mei:${element}[not(@xml:id)]`, doc, nsResolver, XPathResult.ANY_TYPE, null)\n    if (matches == null) {\n        return\n    }\n    const nodes = []\n    let node\n    while ((node = matches?.iterateNext() as Element) != null) {\n        nodes.push(node)\n    }\n    nodes.forEach(n => {\n        n.setAttribute(\"xml:id\", `${prefix}-${Math.random().toString(36).substring(2, 15)}`)\n    })\n}\n\n\nconst EnsureMeasuresIdFilter: FilterFunc = (doc: Document, _: {}) => {\n    EnsureElementIdFilter(doc, \"measure\", \"m\")\n}\n\nconst EnsureSectionsIdFilter: FilterFunc = (doc: Document, _: {}) => {\n    EnsureElementIdFilter(doc, \"section\", \"s\")\n}\n\nclass ScoreProcessor {\n    score: string\n    filters: Filters\n\n    constructor(score: string) {\n        this.score = score\n        this.filters = []\n    }\n\n    addTitlesFilter() {\n        this.filters.push([AddSectionTitlesFilter, {}])\n    }\n    addReonstructionNamesFilter() {\n        this.filters.push([AddReconstructionNamesFilter, {}])\n    }\n    addNVersesFilter(numVerses: number) {\n        this.filters.push([FilterToNVerses, { n: numVerses}])\n    }\n    addNormalizeFictaFilter() {\n        this.filters.push([FilterNormalizeFicta, {}])\n    }\n    addEnsureMeasuresIdFilter() {\n        this.filters.push([EnsureMeasuresIdFilter, {}])\n    }\n    addEnsureSectionsIdFilter() {\n        this.filters.push([EnsureSectionsIdFilter, {}])\n    }\n\n    filterScore(): string {\n        const parser = new DOMParser();\n        const doc = parser.parseFromString(this.score, \"application/xml\")\n\n        this.filters.forEach(([func, params]) => {\n            func(doc, params)\n        })\n\n        const s = new XMLSerializer()\n        return s.serializeToString(doc)\n    }\n\n}\n\nexport default ScoreProcessor\n","import { EditorialItem, Annotation, ReconstructionItem, ScoreProperties, Option, Sources } from \"./types\";\nimport i18next from './i18n'\n\n\n\nconst nsResolver = (prefix: string | null) => { return { mei: \"http://www.music-encoding.org/ns/mei\", xml: \"http://www.w3.org/XML/1998/namespace\" }[prefix || ''] || null }\n\nconst APP_GLOBAL_TYPES = [\"app_clefs\", \"voice_reconstruction\"]\n\n\nconst PITCH_NAMES: Record<string, { key: string; fallback: string }> = {\n    a: { key: \"music.pitch.a\", fallback: \"A\" },\n    b: { key: \"music.pitch.b\", fallback: \"B\" },\n    c: { key: \"music.pitch.c\", fallback: \"C\" },\n    d: { key: \"music.pitch.d\", fallback: \"D\" },\n    e: { key: \"music.pitch.e\", fallback: \"E\" },\n    f: { key: \"music.pitch.f\", fallback: \"F\" },\n    g: { key: \"music.pitch.g\", fallback: \"G\" },\n};\n\nconst ACCIDENTALS: Record<string, { key: string; fallback: string; symbol: string }> = {\n    f: { key: \"music.accidental.flat\", fallback: \"flat\", symbol: \"♭\" },\n    s: { key: \"music.accidental.sharp\", fallback: \"sharp\", symbol: \"♯\" },\n    n: { key: \"music.accidental.natural\", fallback: \"natural\", symbol: \"♮\" },\n    ff: { key: \"music.accidental.doubleFlat\", fallback: \"double flat\", symbol: \"𝄫\" },\n    ss: { key: \"music.accidental.doubleSharp\", fallback: \"double sharp\", symbol: \"𝄪\" },\n};\n\nconst MENSURAL_DURATIONS: Record<string, { key: string; fallback: string }> = {\n    \"1\": { key: \"music.mensural.semibrevis\", fallback: \"semibrevis\" },\n    \"2\": { key: \"music.mensural.minima\", fallback: \"minima\" },\n    \"4\": { key: \"music.mensural.semiminima\", fallback: \"semiminima\" },\n    \"8\": { key: \"music.mensural.corchea\", fallback: \"corchea\" },\n};\n\n\n\n\n\nclass ScoreAnalyzer {\n    document: Document\n    tonoNumber: number\n    t: any\n\n    constructor(t: any, tonoNumber: number, score: string) {\n        const parser = new DOMParser();\n        this.document = parser.parseFromString(score, \"application/xml\")\n        this.tonoNumber = tonoNumber\n        this.t = t\n    }\n\n\n    describeMensuralDuration(dur?: string | null) {\n        if (!dur) {\n            return this.t(\"music.mensural.unknown\", { duration: \"\", defaultValue: \"unknown duration\" });\n        }\n        const entry = MENSURAL_DURATIONS[dur];\n        if (!entry) {\n            return this.t(\"music.mensural.unknown\", { duration: dur, defaultValue: `unknown duration (${dur})` });\n        }\n        return this.t(entry.key, { defaultValue: entry.fallback });\n    };\n\n    describeNoteElement(element: Element): string {\n        const pname = element.getAttribute(\"pname\")?.toLowerCase() || \"\";\n        const pitchEntry = PITCH_NAMES[pname];\n        const pitchName = pitchEntry\n            ? this.t(pitchEntry.key, { defaultValue: pitchEntry.fallback })\n            : this.t(\"music.pitch.unknown\", { pitch: pname, defaultValue: pname.toUpperCase() || \"Unknown pitch\" });\n\n        const accidCode = element.getAttribute(\"accid\") || \"\";\n        const accidentalEntry = accidCode ? ACCIDENTALS[accidCode] : undefined;\n        const accidentalText = accidentalEntry\n            ? this.t(accidentalEntry.key, { defaultValue: accidentalEntry.fallback })\n            : \"\";\n\n        const pitchWithAccidental = accidentalEntry\n            ? this.t(\"music.pitch.withAccidental\", {\n                pitch: pitchName,\n                accidental: accidentalText,\n                symbol: accidentalEntry.symbol,\n                defaultValue: `${pitchName} ${accidentalText}`,\n            })\n            : pitchName;\n\n        const durationText = this.describeMensuralDuration(element.getAttribute(\"dur\"));\n\n        return this.t(\"music.note.description\", {\n            pitch: pitchWithAccidental,\n            duration: durationText,\n            defaultValue: `${pitchWithAccidental}, ${durationText}`,\n        });\n    }\n\n    describeRestElement(element: Element): string {\n        const durationText = this.describeMensuralDuration(element.getAttribute(\"dur\"));\n\n        return this.t(\"music.rest.description\", {\n            duration: durationText,\n            defaultValue: `${durationText} rest`,\n        });\n    }\n\n    maxVerseNum() {\n        let matches = this.document.evaluate(\"//mei:verse/@n\", this.document, nsResolver, XPathResult.ANY_TYPE, null)\n        var max = 0\n        let node\n        while ((node = matches?.iterateNext())) {\n            let value = parseInt(node.nodeValue || \"0\")\n            if (value > max) {\n                max = value\n            }\n        }\n        return max\n    }\n\n    hasFictaElements() {\n        const it = this.document.evaluate('//mei:accid[@func=\"edit\"]', this.document, nsResolver, XPathResult.ANY_TYPE, null)\n        return it.iterateNext() != null\n    }\n\n    hasOriginalClefs() {\n        const res = this.document.evaluate('//mei:rdg[@label=\"app_clefs\"]', this.document, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()\n        return res != null\n    }\n\n    hasEditorialElements() {\n        const annots = this.document.evaluate('count(//mei:annot)', this.document, nsResolver, XPathResult.ANY_TYPE, null)?.numberValue\n        const variants = this.document.evaluate('count(//mei:app[@type=\"variant\"])', this.document, nsResolver, XPathResult.ANY_TYPE, null)?.numberValue\n        return (annots != null && annots > 0) || (variants != null && variants > 0)\n    }\n\n    getNumMeasures() {\n        let lastMeasureN = this.document.evaluate(`(//mei:measure)[last()]/@n`, this.document, nsResolver, XPathResult.ANY_TYPE, null)?.iterateNext()?.nodeValue\n        return lastMeasureN ? parseInt(lastMeasureN) : 0\n    }\n\n    getEditor() {\n        let name = this.document.evaluate(\"//mei:respStmt/mei:persName[@role=\\\"transcriber\\\"][1]\", this.document, nsResolver, XPathResult.ANY_TYPE, null)?.iterateNext()?.textContent\n        return name ? name : \"<missing>\"\n    }\n\n    getComposer() {\n        let name = this.document.evaluate(\"//mei:composer/mei:persName[@role=\\\"composer\\\"][1]\", this.document, nsResolver, XPathResult.ANY_TYPE, null)?.iterateNext()?.textContent\n        return name || i18next.t(\"anonymous\")\n    }\n\n    getLyricist() {\n        let name = this.document.evaluate(\"//mei:lyricist/mei:persName[@role=\\\"lyricist\\\"][1]\", this.document, nsResolver, XPathResult.ANY_TYPE, null)?.iterateNext()?.textContent\n        return name || i18next.t(\"anonymous\")\n    }\n\n    getReconstructionBy() {\n        let name = this.document.evaluate(\"//mei:respStmt/mei:persName[@role=\\\"reconstruction\\\"][1]\", this.document, nsResolver, XPathResult.ANY_TYPE, null)?.iterateNext()?.textContent\n        return name ? name : null\n    }\n\n    getMeiNotes() {\n        let matches = this.document.evaluate(\"//mei:meiHead//mei:extMeta//mei:pendingIssues\", this.document, nsResolver, XPathResult.ANY_TYPE, null)\n        const notes = []\n        let node\n        while ((node = matches?.iterateNext())) {\n            if (node.textContent != null) {\n                notes.push(node.textContent)\n            }\n        }\n        return notes\n    }\n\n    getSections() {\n        const sections = []\n        let matches = this.document.evaluate(`//mei:section[@label]`, this.document, nsResolver, XPathResult.ANY_TYPE, null)\n        var node = matches.iterateNext()\n        while (node != null) {\n            const section = node as Element\n            sections.push({ label: section.getAttribute(\"label\") || \"\", id: section.getAttribute(\"xml:id\") || \"\" })\n            node = matches.iterateNext()\n        }\n        return sections\n    }\n\n    getSources() {\n        const sources: Sources = {};\n        let matches = this.document.evaluate(`//mei:sourceDesc/mei:source`, this.document, nsResolver, XPathResult.ANY_TYPE, null)\n        var node = matches.iterateNext()\n        while (node != null) {\n            const source = node as Element\n            const id = source.getAttribute(\"xml:id\")\n            if (id) {\n                let title: string | null = null;\n                for (const child of source.childNodes) {\n                    if (child instanceof Element && child.tagName === \"bibl\") {\n                        for (const subChild of child.childNodes) {\n                            if (subChild instanceof Element && subChild.tagName === \"title\") {\n                                title = subChild.textContent || \"\";\n                            }\n                        }\n                    }\n                }\n                sources[id] = { title: title || \"\" }\n            }\n            node = matches.iterateNext()\n        }\n        return sources\n    }\n\n    getVoiceName(staff: string) {\n        let voiceName = this.document.evaluate(`//mei:staffDef[@n=\"${staff}\"]/mei:label`, this.document, nsResolver, XPathResult.ANY_TYPE, null)?.iterateNext()?.textContent\n        return voiceName ? voiceName : null\n    }\n\n\n    getReconstructions() {\n        const reconstructions: { staff: string, voiceName: string, reconstructionsForVoice: ReconstructionItem[] }[] = []\n        let matches = this.document.evaluate(`//mei:app[@type=\"voice_reconstruction\"]/mei:rdg`, this.document, nsResolver, XPathResult.ANY_TYPE, null)\n        var node = matches.iterateNext()\n        while (node != null) {\n            const reconstruction = node as Element\n            const label = reconstruction.getAttribute(\"label\")\n            const staff = reconstruction.parentElement?.parentElement?.tagName == \"staff\" ? reconstruction.parentElement.parentElement.getAttribute(\"n\") : null\n            if (!label || !staff) {\n                node = matches.iterateNext()\n                continue\n            }\n            const voiceName = this.getVoiceName(staff)\n            if (!voiceName) {\n                node = matches.iterateNext()\n                continue\n            }\n\n            var reconstructionsForVoice = reconstructions.find(r => r.voiceName == voiceName)?.reconstructionsForVoice\n            if (!reconstructionsForVoice) {\n                reconstructionsForVoice = []\n                reconstructions.push({ staff: staff, voiceName: voiceName, reconstructionsForVoice: reconstructionsForVoice })\n            }\n\n            if (reconstructionsForVoice.find(r => r.label == label)) {\n                node = matches.iterateNext()\n                continue\n            }\n\n            const reconstructionItem: ReconstructionItem = { label: label, voice: voiceName, reconstructionBy: \"\" }\n            reconstructionsForVoice.push(reconstructionItem)\n            node = matches.iterateNext()\n        }\n\n        return reconstructions.length > 0 ? reconstructions.map(r => {\n            return {\n                staff: r.staff,\n                voiceName: r.voiceName,\n                reconstructionsForVoice:\n                    [...r.reconstructionsForVoice,\n                    { label: \"none\", voice: r.voiceName, reconstructionBy: \"\" }],\n\n            }\n        }) : []\n    }\n\n\n    getScoreProperties(): ScoreProperties {\n        return {\n            hasFicta: this.hasFictaElements(),\n            numVerses: this.maxVerseNum(),\n            numMeasures: this.getNumMeasures(),\n            composer: this.getComposer(),\n            lyricist: this.getLyricist(),\n            editor: this.getEditor(),\n            reconstructionBy: this.getReconstructionBy(),\n            reconstructions: this.getReconstructions(),\n            notes: this.getMeiNotes(),\n            sections: this.getSections(),\n            sources: this.getSources(),\n            hasEditorial: this.hasEditorialElements(),\n            hasOriginalClefs: this.hasOriginalClefs(),\n            tiedNotes: this.getTiedNotes(),\n        }\n    }\n\n    getIdForMeasureN(n: string) {\n        const res = this.document?.evaluate(`//mei:measure[@n=\"${n}\"]/@xml:id`, this.document, nsResolver, XPathResult.ANY_TYPE, null)\n        return res?.iterateNext()?.nodeValue\n    }\n\n    getFirstMeasureId() {\n        return this.document.evaluate(`(//mei:measure)[1]/@xml:id`, this.document, nsResolver, XPathResult.ANY_TYPE, null)?.iterateNext()?.nodeValue || null\n    }\n\n    getEditorialNodesOfType = (type: string) => {\n        const items: EditorialItem[] = []\n        let matches = this.document.evaluate(`//mei:${type}`, this.document, nsResolver, XPathResult.ANY_TYPE, null)\n        let node = matches.iterateNext()\n        while (node != null) {\n            if (node.parentElement?.tagName != \"choice\" && node.parentElement?.tagName != \"app\") {\n                const element = node as Element\n                const id = element.getAttribute(\"xml:id\")\n                const reason = element.getAttribute(\"reason\")\n                const resp = element.getAttribute(\"resp\")\n                items.push({\n                    id: id!!,\n                    reason: reason || \"\",\n                    resp: resp || \"\",\n                    type: type,\n                    annotations: new Set()\n                })\n            }\n            node = matches.iterateNext()\n        }\n        return items\n    }\n\n    choiceNodeToEditorialItem(node: Element, type: string): EditorialItem {\n        const choiceId = node.getAttribute(\"xml:id\")\n        const options: Option[] = []\n        const choice = { id: choiceId!!, options: options }\n\n        for (let child of [...node.childNodes?.values()].filter(n => n.nodeType == Node.ELEMENT_NODE)) {\n            const choiceElement = child as Element\n            const optionLabel = choiceElement.getAttribute(\"label\")\n            const optionSource = choiceElement.getAttribute(\"source\")\n            const nodeType = choiceElement.tagName\n            let contentDescription = \"\"\n            for (const child of choiceElement.childNodes) {\n                if (child instanceof Element && child.tagName === \"note\") {\n                    contentDescription += \" \" + this.describeNoteElement(child);\n                } else if (child instanceof Element && child.tagName === \"rest\") {\n                    contentDescription += \" \" + this.describeRestElement(child);\n                }\n\n            }\n            choice.options.push(\n                {\n                    type: nodeType,\n                    selector: `./${nodeType}[@label='${optionLabel}']`,\n                    source: optionSource ? optionSource.slice(1) : null,\n                    contentDescription: contentDescription !== \"\" ? contentDescription : undefined\n                })\n        }\n        return { id: choiceId!!, type: type, resp: \"\", reason: \"\", choice: choice, annotations: new Set() }\n    }\n\n\n    getChoiceNodes() {\n        const items: EditorialItem[] = []\n        let matches = this.document.evaluate('//mei:choice', this.document, nsResolver, XPathResult.ANY_TYPE, null)\n        let node = matches.iterateNext()\n        while (node != null) {\n            const element = node as Element\n            const item = this.choiceNodeToEditorialItem(element, \"choice\")\n            items.push(item)\n            node = matches.iterateNext()\n        }\n        return items\n    }\n\n    getAppChoiceNodes() {\n        const items: EditorialItem[] = []\n        let matches = this.document.evaluate(`//mei:app`, this.document, nsResolver, XPathResult.ANY_TYPE, null)\n        let node = matches.iterateNext()\n        while (node != null) {\n            const element = node as Element\n            // app elements with global defined type are not considered editorial choices but\n            // global choices and are handles on the options panel (e.g. voice reconstruction, original clefs, etc...)\n            // app element with no type are also ignored (harm analysis, etc...)\n            const type = element.getAttribute(\"type\")\n            if (type != null && !APP_GLOBAL_TYPES.includes(type)) {\n                const item = this.choiceNodeToEditorialItem(element, \"app\")\n                items.push(item)\n            }\n            node = matches.iterateNext()\n        }\n        return items\n    }\n\n    getAnnotations() {\n        const annotations: Annotation[] = []\n        let matches = this.document.evaluate(`//mei:annot`, this.document, nsResolver, XPathResult.ANY_TYPE, null)\n        let node = matches.iterateNext()\n        while (node != null) {\n            const element = node as Element\n            const annotId = element.getAttribute(\"xml:id\")\n            const text = [...element.childNodes?.values()].filter(n => n.nodeType == Node.TEXT_NODE).map((n) => n.textContent).join(\"\\n\")\n            const targetIds = element.getAttribute(\"plist\")?.split(\" \").map(ref => ref.replace(\"#\", \"\"))\n            annotations.push({ id: annotId!, text: text, targetIds: targetIds! })\n            node = matches.iterateNext()\n        }\n        return annotations\n    }\n\n    getTiedNotes() {\n        const tiedNotes: { first: string, second: string }[] = []\n        let matches = this.document.evaluate(`//mei:tie`, this.document, nsResolver, XPathResult.ANY_TYPE, null)\n        let node = matches.iterateNext()\n        while (node != null) {\n            const element = node as Element\n            const startid = element.getAttribute(\"startid\")\n            const endid = element.getAttribute(\"endid\")\n            const first = startid?.startsWith(\"#\") ? startid?.slice(1) : null\n            const second = endid?.startsWith(\"#\") ? endid?.slice(1) : null\n            if (first && second) {\n                tiedNotes.push({ first, second })\n            }\n            node = matches.iterateNext()\n        }\n        return tiedNotes\n    }\n\n\n\n    getEditorial(): EditorialItem[] {\n        const editorialElements: EditorialItem[] =\n            this.getEditorialNodesOfType(\"unclear\")\n                .concat(this.getEditorialNodesOfType(\"sic\"))\n                .concat(this.getEditorialNodesOfType(\"corr\"))\n                .concat(this.getEditorialNodesOfType(\"supplied\"))\n                .concat(this.getEditorialNodesOfType(\"reg\"))\n                .concat(this.getChoiceNodes())\n                .concat(this.getAppChoiceNodes())\n\n        const annotations = this.getAnnotations()\n        const consumedAnnotationsTargets = new Set()\n\n        editorialElements.forEach(e => {\n            const annot = annotations.find(a => a.targetIds.includes(e.id))\n            if (annot) {\n                e.annotations.add(annot)\n                consumedAnnotationsTargets.add(e.id)\n            }\n        })\n\n        // Create EditorialElements for those ids that were target of an annotation but are not covered by\n        // any other EditorialElement\n        annotations.forEach(annot => {\n            const unusedIds = annot.targetIds?.filter(id => !consumedAnnotationsTargets.has(id))\n\n            if (unusedIds && unusedIds.length > 0) {\n                const elementsForAnnotation = editorialElements.filter(e => e.annotations.has(annot))\n                if (elementsForAnnotation.length == 1) {\n                    // Append the ids referenced by the annotation as @corres\n                    elementsForAnnotation[0].correspIds = [...unusedIds]\n                } else {\n                    console.log(`Cannot add the targetIds ${unusedIds}`)\n                }\n            }\n        })\n\n        return editorialElements\n    }\n\n}\n\n\n\n\nexport default ScoreAnalyzer\n","import { useCallback } from 'react';\nimport { VerovioOptions } from 'verovio';\nimport ScoreAnalyzer from '../ScoreAnalyzer';\n\nimport {\n  TimeMapEvent,\n  Transition,\n  Action,\n  LoadConfig,\n  LoadAutoScrollConfig,\n  RenderConfig,\n  RenderAutoScrollConfig,\n  renderAction,\n  renderAutoScrollAction,\n} from '../types';\nimport { RenderedData } from './useScoreRenderer';\n\n\n// Constants moved from ScoreView\nconst EXTRA_SVG_ATTRIBUTES = [\"measure@n\", \"staff@n\", \"clef@corresp\", \"verse@n\", \"note@dur\", \"rdg@label\"];\nconst AUTO_SCROLL_RENDERING_WIDTH_LIMIT = 60000;\n\nconst verovioBaseOptions: VerovioOptions = {\n  breaks: 'auto',\n  footer: 'none',\n  header: 'none',\n  pageMarginBottom: 0,\n  pageMarginTop: 0,\n  pageMarginLeft: 16,\n  pageMarginRight: 16,\n  bottomMarginHarm: 0.0,\n  scaleToPageSize: true,\n  shrinkToFit: true,\n  spacingLinear: 0.25,\n  spacingNonLinear: 0.6,\n  mdivAll: true,\n  svgHtml5: false,\n  svgViewBox: false,\n  svgRemoveXlink: false,\n  svgBoundingBoxes: true,\n  lyricElision: \"regular\",\n  lyricTopMinMargin: 4.0,\n  lyricVerseCollapse: true,\n  smuflTextFont: \"embedded\"\n};\n\n// Helper to get the appropriate CSS class for a transition\nconst initialClassForTransition = (transition: Transition) => {\n  switch (transition) {\n    case Transition.FADE_OUT:\n      return \"full-opacity\";\n    case Transition.FADE_IN:\n      return \"zero-opacity\";\n  }\n};\n\n\nexport interface RenderActionResult {\n  newSvg: RenderedData;\n  loadedPagesCount: number;\n  scale: number;\n  renderPage: number;\n}\n\ninterface RenderAutoScrollResult {\n  newSvg: RenderedData;\n}\n\ninterface ScoreActionsConfig {\n  t: any\n  verovio: any; // Verovio toolkit instance\n  svgContainerWidth: number;\n  svgContainerHeight: number;\n  appOptions: string[];\n  choiceOptions: string[];\n  transposition: string | null;\n  showReconstructions: { [staff: string]: string };\n  showOriginalClefs: boolean | null;\n  showMusicAnalysis: boolean | null;\n  showMusicAnalysisByDefault: boolean;\n  measureNumberInterval: number | null;\n  setScoreLayout: (layout: { currentPage: number; pageCount: number; sectionPageMap: Record<string, number> }) => void;\n}\n\n/**\n * Transform a timemap with staff animation references\n */\nconst resolveTimemapAnimations = (timemap: TimeMapEvent[]): TimeMapEvent[] =>\n  timemap.map(e => {\n    return {\n      ...e,\n      stavesOn: e.on?.map((id) => {\n        const escapedId = CSS.escape(id);\n        const staff = document.querySelector(`.staff:has(#${escapedId})`)?.getAttribute(\"data-n\");\n        return `#radius-${staff}-animation`;\n      }),\n      stavesOff: e.off?.map((id) => {\n        const escapedId = CSS.escape(id);\n        const staff = document.querySelector(`.staff:has(#${escapedId})`)?.getAttribute(\"data-n\");\n        return `#radius-${staff}-animation`;\n      })\n    } as TimeMapEvent;\n  });\n\nconst buildAppOptions = (appOptions: string[], showReconstructions: { [staff: string]: string }, showOriginalClefs: boolean, showMusicAnalysis: boolean) => {\n  const voiceReconstructionSelectors = Object.values(showReconstructions).map(label =>\n    `./*[contains(@label, '${label}')]`\n  )\n\n  return [\n    ...appOptions,\n    ...voiceReconstructionSelectors,\n    ...showOriginalClefs ? [`./rdg[contains(@label, 'app_clefs')]`] : [],\n    ...showMusicAnalysis ? [`./rdg[contains(@type, 'dissonant_analysis')]`] : []\n  ]\n}\n\n/**\n * Custom hook that manages score action execution\n */\nexport default function useScoreActions({\n  t,\n  verovio,\n  svgContainerWidth,\n  svgContainerHeight,\n  appOptions,\n  choiceOptions,\n  transposition,\n  showReconstructions,\n  showOriginalClefs,\n  showMusicAnalysis,\n  showMusicAnalysisByDefault,\n  measureNumberInterval,\n  setScoreLayout,\n}: ScoreActionsConfig) {\n\n\n  const getSectionMap = async (scoreMei: string) => {\n    const analyzer = new ScoreAnalyzer(t, 0, scoreMei);\n    const sections = analyzer.getSections()\n    const sectionsMap: Record<string, number> = {}\n    for (const section of sections) {\n      const sectionId = section.id;\n      const sectionPage = await verovio.getPageWithElement(sectionId);\n      if (sectionId && sectionPage) {\n        sectionsMap[sectionId] = sectionPage\n      }\n    }\n    return sectionsMap\n\n  }\n\n  /**\n   * Execute the load action - prepares Verovio with options and loads the MEI data\n   */\n  const performLoadAction = useCallback(async (config: LoadConfig) => {\n    if (!verovio) return null;\n\n    const { postLoadTransition, meiStr, page, scale, restorePositionForAchor, scoreUrl } = config;\n    const loadedHeight = svgContainerHeight;\n    const loadedWidth = svgContainerWidth;\n\n    console.log(`loading score: mode=normal page=${page} pageWidth=${loadedWidth}, pageHeight=${loadedHeight}, scale=${scale} restorePositionForAchor=${restorePositionForAchor}, showMusicAnalysis=${showMusicAnalysis}`);\n\n    const options: VerovioOptions = {\n      ...verovioBaseOptions,\n      adjustPageWidth: false,\n      adjustPageHeight: false,\n      landscape: false,\n      svgAdditionalAttribute: EXTRA_SVG_ATTRIBUTES,\n      appXPathQuery: buildAppOptions(appOptions, showReconstructions, showOriginalClefs || false, showMusicAnalysis || showMusicAnalysisByDefault),\n      choiceXPathQuery: choiceOptions,\n      pageHeight: loadedHeight,\n      pageWidth: loadedWidth,\n      scale: scale,\n      transpose: transposition != null ? transposition : \"\",\n      mnumInterval: measureNumberInterval ?? 0\n    };\n\n    try {\n      const startTime = performance.now();\n      console.log(`[useScoreActions] performLoadAction started`);\n\n      const optionsStart = performance.now();\n      await verovio.setOptions(options);\n      console.log(`[useScoreActions] setOptions took ${(performance.now() - optionsStart).toFixed(2)}ms`);\n\n      const loadStart = performance.now();\n      await verovio.loadData(meiStr);\n      console.log(`[useScoreActions] loadData took ${(performance.now() - loadStart).toFixed(2)}ms`);\n\n      const countStart = performance.now();\n      const loadedPagesCount = await verovio.getPageCount();\n      console.log(`[useScoreActions] getPageCount took ${(performance.now() - countStart).toFixed(2)}ms`);\n\n      const sectionMap = await getSectionMap(meiStr)\n      console.log(`Score loaded in ${(performance.now() - startTime).toFixed(0)}ms, page count: ${loadedPagesCount}`);\n      console.log(`[useScoreActions] performLoadAction completed in ${(performance.now() - startTime).toFixed(2)}ms`);\n\n      let renderPage = undefined;\n      if (restorePositionForAchor) {\n        let pageForMeasureOnView = await verovio?.getPageWithElement(restorePositionForAchor);\n        if (pageForMeasureOnView != null && pageForMeasureOnView > 0) {\n          renderPage = pageForMeasureOnView;\n        }\n      }\n      if (!renderPage && page) {\n        renderPage = (page <= loadedPagesCount) ? page : loadedPagesCount;\n      }\n\n      setScoreLayout({ currentPage: renderPage, pageCount: loadedPagesCount, sectionPageMap: sectionMap })\n\n      return renderAction({\n        scoreUrl,\n        transition: postLoadTransition,\n        loadedHeight,\n        loadedWidth,\n        renderPage,\n        scale,\n        loadedPagesCount,\n      });\n    } catch (error) {\n      console.error(\"Error performing load action:\", error);\n      return null;\n    }\n  }, [\n    verovio,\n    svgContainerWidth,\n    svgContainerHeight,\n    appOptions,\n    choiceOptions,\n    transposition,\n    showReconstructions,\n    showOriginalClefs,\n    showMusicAnalysis,\n    measureNumberInterval,\n    setScoreLayout\n  ]);\n\n  /**\n   * Execute the load auto-scroll action - prepares Verovio for auto-scroll mode\n   */\n  const performLoadAutoScrollAction = useCallback(async (config: LoadAutoScrollConfig) => {\n    if (!verovio) return null;\n\n    const { height, meiStr } = config;\n\n    console.log(`loading score: mode=autoscroll height=${height}`);\n\n\n    const options: VerovioOptions = {\n      ...verovioBaseOptions,\n      adjustPageWidth: true,\n      adjustPageHeight: true,\n      svgViewBox: true,\n      svgAdditionalAttribute: EXTRA_SVG_ATTRIBUTES,\n      appXPathQuery: buildAppOptions(appOptions, showReconstructions, showOriginalClefs || false, false),\n      choiceXPathQuery: choiceOptions,\n      pageHeight: height,\n      pageWidth: AUTO_SCROLL_RENDERING_WIDTH_LIMIT,\n      scale: 100,\n      transpose: transposition != null ? transposition : \"\"\n    };\n\n    try {\n      await verovio.setOptions(options);\n      await verovio.loadData(meiStr);\n      return renderAutoScrollAction({ height });\n    } catch (error) {\n      console.error(\"Error performing auto-scroll load action:\", error);\n      return null;\n    }\n  }, [verovio, appOptions, choiceOptions, transposition, showReconstructions, showOriginalClefs]);\n\n  const mergeTimemapTies = (timemap: TimeMapEvent[], tiedNotes: { first: string; second: string; }[]) => {\n    const newTimeMap = timemap.map(e => { return { ...e } as TimeMapEvent });\n    for (const { first, second } of tiedNotes) {\n      const firstOnIndex = newTimeMap.findIndex(e => e.on != null && e.on.includes(first));\n      const firstOffIndex = newTimeMap.findIndex(e => e.off != null && e.off.includes(first));\n      const secondOnIndex = newTimeMap.findIndex(e => e.on != null && e.on.includes(second));\n      const secondOffIndex = newTimeMap.findIndex(e => e.off != null && e.off.includes(second));\n      if (firstOnIndex == -1 || firstOffIndex == -1 || secondOnIndex == -1 || secondOffIndex == -1) {\n        // ties could be for a reconstructed voice not selected\n        continue;\n      }\n\n      newTimeMap[firstOnIndex].on!.push(second)\n      newTimeMap[firstOffIndex].off = newTimeMap[firstOffIndex].off!.filter(id => id != first)\n      newTimeMap[secondOnIndex].on = newTimeMap[secondOnIndex].on!.filter(id => id != second)\n      newTimeMap[secondOffIndex].off!.push(first)\n    }\n    return newTimeMap\n  }\n\n  const resolveTimemap = async (timemap: TimeMapEvent[]): Promise<TimeMapEvent[]> => {\n    const mei = await verovio.getMEI()\n    const analyzer = new ScoreAnalyzer(t, 0, mei)\n    const timeMapWithTiesMerged = mergeTimemapTies(timemap, analyzer.getTiedNotes())\n    return resolveTimemapAnimations(timeMapWithTiesMerged)\n  }\n\n\n\n  /**\n   * Render the score as a standard page\n   */\n  const performRenderAction = useCallback(async (config: RenderConfig, element: HTMLDivElement): Promise<RenderActionResult | null> => {\n    if (!verovio || !element) return null;\n\n    const { transition, loadedHeight, loadedWidth, renderPage, scale, loadedPagesCount, scoreUrl } = config;\n    console.log(`Rendering score: mode=normal page=${renderPage} scale=${scale} transition=${transition}`);\n    const startTime = performance.now();\n    console.log(`[useScoreActions] performRenderAction started`);\n\n    try {\n      const timemapStart = performance.now();\n      const timemap = await verovio.renderToTimemap({ includeMeasures: true });\n      console.log(`[useScoreActions] renderToTimemap took ${(performance.now() - timemapStart).toFixed(2)}ms`);\n\n      const svgStart = performance.now();\n      const svgData = (await verovio.renderToSVG(renderPage))\n        .replace(`width=\"${loadedWidth}px\"`, 'width=\"100%\"')\n        .replace(`height=\"${loadedHeight}px\"`, 'height=\"100%\"');\n      console.log(`[useScoreActions] renderToSVG took ${(performance.now() - svgStart).toFixed(2)}ms`);\n\n\n      const domStart = performance.now();\n      element.innerHTML = svgData;\n      const svgElement = element.querySelector(\"svg\") as SVGSVGElement | null;\n      if (!svgElement) {\n        console.log(\"Error rendering page: no svg element found\");\n        return null;\n      }\n\n      // Set initial opacity to 0 for fade-in animation (will be animated in ScoreView)\n      svgElement.style.opacity = '0';\n\n      if (svgElement.classList.contains(\"transition-zero-end\")) {\n        svgElement.classList.remove(\"transition-zero-end\");\n      }\n      if (transition != undefined) {\n        svgElement.classList.add(\"with-transition\", initialClassForTransition(transition));\n        setTimeout(() => {\n          svgElement.classList.add(\"transition-end\");\n        }, 0);\n      }\n      console.log(`[useScoreActions] DOM manipulation took ${(performance.now() - domStart).toFixed(2)}ms`);\n\n      const meiStart = performance.now();\n      const mei = await verovio.getMEI({ pageNo: renderPage });\n      const analyzer = new ScoreAnalyzer(t, 0, mei);\n      const firstMeasureId = analyzer.getFirstMeasureId();\n      console.log(`[useScoreActions] getMEI + analysis took ${(performance.now() - meiStart).toFixed(2)}ms`);\n\n      const newSvg: RenderedData = {\n        id: svgElement.id,\n        scoreUrl: scoreUrl,\n        scale: scale,\n        timemap: await resolveTimemap(timemap),\n        anchorElement: firstMeasureId,\n        page: renderPage,\n        height: loadedHeight,\n        width: loadedWidth,\n      };\n\n      const duration = performance.now() - startTime;\n      console.log(`[useScoreActions] Rendering + post-processing took ${duration.toFixed(0)}ms`);\n      console.log(`[useScoreActions] performRenderAction completed in ${duration.toFixed(2)}ms`);\n\n      return { newSvg, loadedPagesCount, scale, renderPage } as RenderActionResult;\n    } catch (error) {\n      console.log(`Error rendering page: ${error}`);\n      return null;\n    }\n  }, [verovio, t, resolveTimemap]);\n\n  /**\n   * Render the score for auto-scrolling\n   */\n  const performRenderAutoScrollAction = useCallback(async (config: RenderAutoScrollConfig, element: HTMLDivElement): Promise<RenderAutoScrollResult | null> => {\n    if (!verovio || !element) return null;\n\n    const { height } = config;\n    console.log(`Rendering score: mode=autoscroll height=${height}`);\n\n\n    try {\n      const timemap = await verovio.renderToTimemap({ includeMeasures: true });\n      const svgData = await verovio.renderToSVG(1);\n\n      const match = svgData.match(/svg viewBox=\"0 0 (\\d+) \\d+\"/);\n      const renderedWidth = match ? Math.round(parseInt(match[1])) : AUTO_SCROLL_RENDERING_WIDTH_LIMIT;\n      const renderedHeight = Math.round(height);\n\n      element.innerHTML = svgData.replace(\"<svg\", `<svg class=\"auto-scroll\" style=\"will-change: transform; backface-visibility: hidden; overflow: collapse; width: ${renderedWidth}px; height: ${renderedHeight}px;\" `)\n      //width=\"${renderedWidth}\" height=\"${renderedHeight}\" \\\n      //          .replace('<g class=\"page-margin\" transform=\"translate(0, 0)\">', '<g class=\"page-margin\" transform=\"translate(0, 0)\"><animateTransform attributeName=\"transform\" attributeType=\"XML\" begin=\"0s\" dur=\"20s\" type=\"translate\"   from=\"0\"    to=\"-16000\"   />')\n\n      element.style.height = `${renderedHeight}px`;\n\n      const newSvg: RenderedData = {\n        id: \"svg-auto-scrolling\",\n        scale: 100, // Auto-scroll uses fixed scale\n        scoreUrl: \"\",\n        timemap: await resolveTimemap(timemap),\n        width: renderedWidth,\n        height: renderedHeight,\n        anchorElement: null,\n        page: 1,\n      };\n\n      return { newSvg };\n    } catch (error) {\n      console.log(`Error rendering auto-scroll page: ${error}`);\n      return null;\n    }\n  }, [verovio]);\n\n  /**\n   * Determine if spinner should be shown for this action\n   */\n  const shouldShowSpinner = (action: Action): boolean => {\n    const config = action.config as any;\n    const transition = config.transition || config.postLoadTransition;\n\n    // Always show for operations without transitions\n    if (!transition) {\n      return true;\n    }\n\n\n    // Don't show for other transitions (SLIDE, FADE)\n    return false;\n  };\n\n  /**\n   * Execute an action based on its type\n   */\n  const executeAction = useCallback(async (action: Action, svgContainerElement: HTMLDivElement) => {\n    if (!verovio || !svgContainerElement) {\n      console.log(\"Cannot execute action - verovio or container not ready\");\n      return { success: false, nextAction: null, result: null, showSpinner: false };\n    }\n\n    const showSpinner = shouldShowSpinner(action);\n\n    try {\n      if (action.type === \"load\") {\n        const nextAction = await performLoadAction(action.config as LoadConfig);\n        return {\n          success: nextAction !== null,\n          nextAction,\n          result: null,\n          showSpinner\n        };\n      }\n      else if (action.type === \"loadAutoScroll\") {\n        const nextAction = await performLoadAutoScrollAction(action.config as LoadAutoScrollConfig);\n        return {\n          success: nextAction !== null,\n          nextAction,\n          result: null,\n          showSpinner\n        };\n      }\n      else if (action.type === \"render\") {\n        const result = await performRenderAction(action.config as RenderConfig, svgContainerElement);\n        return {\n          success: result !== null,\n          nextAction: null,\n          result,\n          showSpinner\n        };\n      }\n      else if (action.type === \"renderAutoScroll\") {\n        const result = await performRenderAutoScrollAction(action.config as RenderAutoScrollConfig, svgContainerElement);\n        return {\n          success: result !== null,\n          nextAction: null,\n          result,\n          showSpinner\n        };\n      }\n\n      console.warn(`Unknown action type: ${action.type}`);\n      return { success: false, nextAction: null, result: null, showSpinner: false };\n    } catch (error) {\n      console.error(`Error executing action ${action.type}:`, error);\n      return { success: false, nextAction: null, result: null, showSpinner: false };\n    }\n  }, [\n    verovio,\n    performLoadAction,\n    performLoadAutoScrollAction,\n    performRenderAction,\n    performRenderAutoScrollAction\n  ]);\n\n  return {\n    executeAction\n  };\n}\n","import { useCallback, useMemo, RefObject } from 'react';\nimport { TimeMapEvent, PlayingState } from '../types';\n\ninterface SvgRendererConfig {\n  autoScroll: boolean;\n  showEditorial: boolean | null;\n  playingState: PlayingState;\n  svgContainerRef: RefObject<HTMLDivElement>;\n  svgContainerHeight: number;\n}\n\nexport interface RenderedData {\n  id: string;\n  scoreUrl: string;\n  scale: number;\n  page: number;\n  timemap: TimeMapEvent[];\n  anchorElement: string | null;\n  width?: number;\n  height?: number;\n  svgHTML?: string;  // Cached SVG HTML for instant display\n}\n\n/**\n * Custom hook to manage score SVG rendering and related utilities\n */\nexport default function useScoreRenderer({\n  autoScroll,\n  showEditorial,\n  playingState,\n  svgContainerRef,\n  svgContainerHeight\n}: SvgRendererConfig) {\n\n  // Maximum remaining height for which we consider a score at max scale\n  const MAX_SCALE_AT_REMAINING_HEIGHT = 20;\n\n  /**\n   * Calculate the height of the rendered SVG page\n   */\n  const svgPageHeight = useCallback(() => {\n    if (!svgContainerRef.current) return 0;\n\n    const pageElement = svgContainerRef.current.querySelector(\"svg .page-margin\");\n    if (!pageElement) return 0;\n    const boundingBox = pageElement.getBoundingClientRect();\n\n    return Math.floor(boundingBox.bottom - boundingBox.top);\n  }, [svgContainerRef]);\n\n  /**\n   * Determine if the rendered SVG has a single system\n   */\n  const svgSingleSystem = useCallback(() => {\n    if (!svgContainerRef.current) return false;\n    return svgContainerRef.current.querySelectorAll(\"svg .system.bounding-box\")?.length === 1;\n  }, [svgContainerRef]);\n\n  /**\n   * Determine if the scale has reached its effective maximum\n   * (used for UI feedback when zooming)\n   */\n  const calculateEffectiveMaxScale = useCallback((currentEffectiveMaxScale: boolean) => {\n    const scoreEffectiveHeight = svgPageHeight();\n    const singleSystem = svgSingleSystem();\n    const newReachedEffectiveMaxScale = singleSystem &&\n      (scoreEffectiveHeight > (svgContainerHeight - MAX_SCALE_AT_REMAINING_HEIGHT));\n\n    return newReachedEffectiveMaxScale !== currentEffectiveMaxScale\n      ? newReachedEffectiveMaxScale\n      : currentEffectiveMaxScale;\n  }, [svgPageHeight, svgSingleSystem, svgContainerHeight]);\n\n  /**\n   * Get CSS classes for the SVG container\n   */\n  const svgContainerClasses = useMemo(() => [\n    'svg-container',\n    ...(showEditorial ? [\"editorial-active\"] : [])\n  ], [showEditorial]);\n\n\n  /**\n   * Get an element by ID from the current SVG\n   */\n  const getSvgElement = useCallback((elementId: string): Element | null => {\n    if (!svgContainerRef.current) return null;\n    const escapedId = CSS.escape(elementId);\n    return svgContainerRef.current.querySelector(`#${escapedId}`);\n  }, [svgContainerRef]);\n\n  /**\n   * Calculate if a spotlight overlay should be visible\n   * (used in auto-scroll mode)\n   */\n  const isSpotlightVisible = useMemo(() =>\n    autoScroll && playingState === PlayingState.PLAYING,\n    [autoScroll, playingState]\n  );\n\n  return {\n    svgPageHeight,\n    svgSingleSystem,\n    calculateEffectiveMaxScale,\n    svgContainerClasses,\n    getSvgElement,\n    isSpotlightVisible,\n  };\n}\n","import { LoadingOutlined } from '@ant-design/icons';\nimport { Spin } from 'antd';\nimport './LoadingSpinner.css';\n\ninterface LoadingSpinnerProps {\n    visible: boolean;\n}\n\nconst LoadingSpinner = ({ visible }: LoadingSpinnerProps) => {\n    if (!visible) return null;\n\n    return (\n        <div className=\"loading-spinner-overlay\">\n            <div className=\"loading-spinner-content\">\n                <Spin indicator={<LoadingOutlined style={{ fontSize: 32 }} spin />} />\n            </div>\n        </div>\n    );\n};\n\nexport default LoadingSpinner;\n","import { useEffect } from 'react';\n\n/**\n * Hook to execute a callback during browser idle time\n * Uses requestIdleCallback to avoid blocking the main thread\n */\nexport default function useIdleCallback(callback: () => void, deps: any[]) {\n    useEffect(() => {\n        // Check if requestIdleCallback is supported\n        if (typeof requestIdleCallback === 'undefined') {\n            // Fallback to setTimeout for browsers that don't support it\n            const timeoutId = setTimeout(callback, 2000);\n            return () => clearTimeout(timeoutId);\n        }\n\n        // Wait for user to be idle before executing callback\n        const idleCallbackId = requestIdleCallback(\n            () => {\n                callback();\n            },\n            { timeout: 2000 } // Max 2s wait\n        );\n\n        return () => cancelIdleCallback(idleCallbackId);\n    }, deps);\n}\n","import { useCallback, useContext, useEffect, useRef, useState } from 'react';\nimport useStore from \"./store\";\nimport { Context } from './Context';\nimport { useComponentSize } from \"react-use-size\";\nimport ScoreProcessor from './ScoreProcessor';\nimport { useEditorialHandler } from './hooks/useEditorialHandler';\nimport { expandBBsForEditorialItems, expandBBsForRdgs } from './SvgUtils';\nimport useScoreActions, { RenderActionResult } from './hooks/useScoreActions';\nimport useScoreRenderer from './hooks/useScoreRenderer';\nimport { Transition, loadAction, renderAction } from './types';\nimport { useTranslation } from 'react-i18next';\nimport LoadingSpinner from './components/LoadingSpinner';\nimport useIdleCallback from './hooks/useIdleCallback';\n\nexport interface ScoreViewProps {\n    backgroundColor?: string | undefined;\n    showMusicAnalysisByDefault: boolean;\n}\n\n\nfunction ScoreView(scoreViewProps: ScoreViewProps) {\n\n    const { backgroundColor, showMusicAnalysisByDefault } = scoreViewProps;\n    const { verovio } = useContext(Context);\n    const { t } = useTranslation(\"common\");\n\n    // Store state management\n    const setIsLoading = useStore.use.setIsLoading();\n    const pendingAction = useStore.use.pendingAction();\n    const setPendingAction = useStore.use.setPendingAction();\n\n    const score = useStore.use.score();\n\n    const setScoreLayout = useStore.use.setScoreLayout();\n\n    const showingMei = useStore.use.showingMei();\n    const setShowingMei = useStore.use.setShowingMei();\n    const playingState = useStore.use.playingState();\n    const scale = useStore.use.scale();\n    const setScale = useStore.use.setScale();\n    const reachedEffectiveMaxScale = useStore.use.reachedEffectiveMaxScale();\n    const setReachedEffectiveMaxScale = useStore.use.setReachedEffectiveMaxScale();\n    const currentPage = useStore.use.currentPage();\n    const pageCount = useStore.use.pageCount();\n    const showNVerses = useStore.use.showNVerses();\n\n    const normalizeFicta = useStore.use.normalizeFicta();\n    const showEditorial = useStore.use.showEditorial();\n    const appOptions = useStore.use.appOptions();\n    const choiceOptions = useStore.use.choiceOptions();\n    const transposition = useStore.use.transposition();\n    const renderedSvgData = useStore.use.renderedSvgData();\n    const setRenderedSvgData = useStore.use.setRenderedSvgData();\n    const showReconstructions = useStore.use.showReconstructions();\n    const showOriginalClefs = useStore.use.showOriginalClefs();\n    const getCachedPage = useStore.use.getCachedPage();\n    const setCachedPage = useStore.use.setCachedPage();\n    const clearPageCache = useStore.use.clearPageCache();\n\n    const showMusicAnalysis = useStore.use.showMusicAnalysis();\n    const measureNumberInterval = useStore.use.measureNumberInterval();\n\n    const { handleElementClick } = useEditorialHandler();\n    const { ref: svgContainerRef, width: svgContainerWidth, height: svgContainerHeight } = useComponentSize();\n\n    const [showSpinner, setShowSpinner] = useState(false);\n    const lastRenderedUrl = useRef<string | undefined | null>(null);\n\n    const {\n        svgContainerClasses,\n        calculateEffectiveMaxScale,\n    } = useScoreRenderer({\n        autoScroll: false,\n        showEditorial,\n        playingState,\n        svgContainerRef,\n        svgContainerHeight\n    });\n\n    const { executeAction } = useScoreActions({\n        t,\n        verovio,\n        svgContainerWidth,\n        svgContainerHeight,\n        appOptions,\n        choiceOptions,\n        transposition,\n        showReconstructions,\n        showOriginalClefs,\n        showMusicAnalysis,\n        showMusicAnalysisByDefault,\n        measureNumberInterval,\n        setScoreLayout,\n    });\n\n    const isReady = () => (score && verovio && svgContainerWidth > 0 && svgContainerHeight > 0 && !pendingAction)\n\n\n    // Process pending actions\n    useEffect(() => {\n        if (!pendingAction || !verovio || !showingMei || !svgContainerRef.current || svgContainerHeight <= 0) {\n            return;\n        }\n\n        (async () => {\n            const { success, nextAction, result, showSpinner: shouldShowSpinner } = await executeAction(pendingAction, svgContainerRef.current!);\n\n            // Show spinner for heavy operations\n            if (shouldShowSpinner) {\n                setShowSpinner(true);\n            }\n\n            if (success) {\n                if (nextAction) {\n                    setPendingAction(nextAction);\n                } else {\n                    setPendingAction(null);\n                    // Hide spinner when all actions complete\n                    setShowSpinner(false);\n                }\n\n                if (pendingAction.type === \"render\" && result) {\n                    // Handle the results of render actions\n\n                    const renderResult = result as RenderActionResult\n                    const { newSvg, scale: newScale } = renderResult;\n\n                    // Capture the SVG HTML for caching\n                    const svgHTML = svgContainerRef.current?.innerHTML || '';\n                    const svgDataWithHTML = { ...newSvg, svgHTML };\n\n                    setRenderedSvgData(svgDataWithHTML);\n\n                    // Cache the current page for instant back navigation\n                    setCachedPage(svgDataWithHTML.page, svgDataWithHTML);\n\n                    // Apply fade-in animation for non-cached pages\n                    const svgElement = svgContainerRef.current?.querySelector(\"svg\") as SVGSVGElement | null;\n                    if (svgElement) {\n                        svgElement.style.opacity = '0';\n                        svgElement.style.transition = 'opacity 300ms ease-in';\n                        setTimeout(() => {\n                            svgElement.style.opacity = '1';\n                        }, 10);\n                    }\n\n                    // will only be visible when showingEditorial is true via css\n                    expandBBsForEditorialItems();\n\n                    const showingReconstructiononsLabels = Object.values(showReconstructions).filter(label => label != \"none\")\n                    if (showingReconstructiononsLabels.length > 0) {\n                        expandBBsForRdgs(showingReconstructiononsLabels);\n                    }\n\n                    setIsLoading(false);\n\n                    setScale(newScale);\n\n                    // Calculate max scale after transition completes\n                    setTimeout(() => {\n                        const newMaxScale = calculateEffectiveMaxScale(reachedEffectiveMaxScale);\n                        if (newMaxScale !== reachedEffectiveMaxScale) {\n                            setReachedEffectiveMaxScale(newMaxScale);\n                        }\n                    }, 400);\n                }\n            } else {\n                console.error(\"Action execution failed\");\n                setShowSpinner(false);\n            }\n        })();\n    }, [pendingAction]);\n\n\n    const generateShowingScore = useCallback(() => {\n        if (!score) return null;\n\n        const scoreProcessor = new ScoreProcessor(score.originalMei);\n        if (normalizeFicta) {\n            scoreProcessor.addNormalizeFictaFilter();\n        }\n        if (showNVerses != null && showNVerses != score.properties?.numVerses) {\n            scoreProcessor.addNVersesFilter(showNVerses);\n        }\n        return scoreProcessor.filterScore();\n    }, [score, normalizeFicta, showNVerses]);\n\n    const updateLoadedScore = useCallback((restoreAnchor: boolean, fadeIn: boolean) => {\n        const startTime = performance.now();\n        console.log(`[ScoreView] updateLoadedScore called at ${Date.now()}`);\n\n\n        setShowSpinner(true);  // Show spinner immediately\n\n        const newShowingMei = generateShowingScore();\n        const preprocessTime = performance.now() - startTime;\n        console.log(`[ScoreView] generateShowingScore took ${preprocessTime.toFixed(2)}ms`);\n\n        if (!newShowingMei) {\n            setShowSpinner(false);\n            return;\n        }\n\n        const action = loadAction({\n            scoreUrl: score?.url || \"\",\n            postLoadTransition: fadeIn ? Transition.FADE_IN : undefined,\n            meiStr: newShowingMei,\n            page: 1,\n            scale,\n            restorePositionForAchor: restoreAnchor && renderedSvgData?.anchorElement ? renderedSvgData.anchorElement : undefined\n        });\n        setPendingAction(action);\n        setShowingMei(newShowingMei);\n    }, [score, renderedSvgData?.anchorElement, scale, setPendingAction, setShowingMei, generateShowingScore]);\n\n    const fadeOutTransition = useCallback(() => {\n        const currentSvg = svgContainerRef.current?.querySelector(\"svg\") as SVGSVGElement | null;\n        if (currentSvg) {\n            console.log(\"[ScoreView] Starting fade out transition\");\n            currentSvg.style.transition = 'opacity 300ms ease-out';\n            currentSvg.style.opacity = '0';\n\n            // Show spinner if page takes longer than fade out\n            setTimeout(() => {\n                if (!getCachedPage(currentPage)) {\n                    console.log(\"[ScoreView] Showing spinner because page is not cached after fade out ended\");\n                    setShowSpinner(true);\n                }\n            }, 300);\n        } else if (!getCachedPage(currentPage)) {\n            // There is nothing to fade out, and we are still not fading-in, so show spinner immediately\n            setShowSpinner(true);\n        }\n    }, [setShowSpinner, currentPage, getCachedPage]);\n\n    // This group of changes require rebuilding the score and reloading it\n    useEffect(() => {\n        if (score) {\n            setTimeout(() => {\n                updateLoadedScore(false, lastRenderedUrl.current != score.url);\n            });\n        }\n        return () => {\n            lastRenderedUrl.current = score?.url\n        }\n    }, [score?.url]);\n\n    useEffect(() => {\n        if (showNVerses != null) {\n            updateLoadedScore(true, false);\n        }\n    }, [showNVerses]);\n\n    useEffect(() => {\n        if (normalizeFicta != null) {\n            updateLoadedScore(true, false);\n        }\n    }, [normalizeFicta]);\n\n    // Clear page cache when options change that affect rendering\n    useEffect(() => {\n        if (score) {  // Only clear if we have a score loaded\n            console.log('[ScoreView] Clearing page cache due to option/score change');\n            clearPageCache();\n        }\n    }, [scale, transposition, showNVerses, normalizeFicta, showReconstructions,\n        showOriginalClefs, showMusicAnalysis, measureNumberInterval, clearPageCache, score]);\n\n\n    // Handle the initial load when verovio has been initialized and when the container is ready.\n    // As the component might have been removed from the tree (svgContainerHeight = 0),\n    // we check if we have loaded and rendered the same score. Page is also checked because\n    // whe might support keep the player going when the component is not visible (switching to text tab,\n    // for example).\n    useEffect(() => {\n        if (!isReady() || !showingMei) {\n            return;\n        }\n\n        let restoreAnchor;\n        if (renderedSvgData && renderedSvgData?.scoreUrl == score?.url) {\n            if (renderedSvgData?.height && renderedSvgData?.width &&\n                Math.abs(renderedSvgData.height - svgContainerHeight) < 100 &&\n                Math.abs(renderedSvgData.width - svgContainerWidth) < 100 &&\n                renderedSvgData?.page == currentPage &&\n                renderedSvgData?.scale == scale) {\n                return\n            }\n            if (renderedSvgData.anchorElement) {\n                restoreAnchor = renderedSvgData.anchorElement\n            }\n            clearPageCache();\n            // As we have rendered data, fade out\n            fadeOutTransition();\n        }\n\n        const action = loadAction({\n            scoreUrl: score?.url || \"\",\n            postLoadTransition: Transition.FADE_IN,\n            meiStr: showingMei,\n            page: 1,\n            scale,\n            restorePositionForAchor: restoreAnchor\n        });\n        setPendingAction(action);\n\n\n    }, [verovio, svgContainerRef.current, svgContainerHeight, svgContainerWidth]);\n\n\n    // Handle scale changes\n    useEffect(() => {\n        if (!isReady() || !showingMei) return;\n\n        // Start fade out for crossfade effect\n        fadeOutTransition();\n\n        const anchorElement = renderedSvgData?.anchorElement || undefined;\n\n        const action = loadAction({\n            scoreUrl: score?.url || \"\",\n            postLoadTransition: undefined, // Use standard fade-in\n            meiStr: showingMei,\n            page: currentPage,\n            scale,\n            restorePositionForAchor: anchorElement\n        });\n        setPendingAction(action);\n    }, [scale]);\n\n    const reloadScore = () => {\n        if (!isReady() || !showingMei) return;\n\n        const page = currentPage > 0 ? currentPage : 1;\n        const anchor = renderedSvgData?.anchorElement || undefined;\n        const action = loadAction({ scoreUrl: score?.url || \"\", meiStr: showingMei, page: page, scale, restorePositionForAchor: anchor });\n        setPendingAction(action);\n    }\n\n    // These changes requires reloading the currently built score\n    useEffect(() => {\n        reloadScore();\n    }, [appOptions, choiceOptions, transposition, showMusicAnalysis, measureNumberInterval]);\n\n    useEffect(() => {\n        if (showOriginalClefs == null) {\n            return\n        }\n        reloadScore()\n    }, [showOriginalClefs]);\n\n    useEffect(() => {\n        if (Object.keys(showReconstructions).length <= 0) {\n            return\n        }\n        reloadScore()\n    }, [showReconstructions]);\n\n    useEffect(() => {\n        if (!isReady() || !showingMei || !renderedSvgData) return;\n\n        if (currentPage < 1 || currentPage == renderedSvgData.page) {\n            return;\n        }\n\n        // Try to get from cache first\n        const cachedPage = getCachedPage(currentPage);\n        if (cachedPage && cachedPage.svgHTML) {\n            console.log(`[ScoreView] Using cached page ${currentPage}`);\n\n            // Get current SVG for fade out\n            fadeOutTransition();\n\n            // Create new SVG element for fade in\n            const tempDiv = document.createElement('div');\n            tempDiv.innerHTML = cachedPage.svgHTML;\n            const newSvg = tempDiv.querySelector(\"svg\") as SVGSVGElement | null;\n\n            if (newSvg && svgContainerRef.current) {\n                // Reset opacity to 1 first (cached SVG has opacity: 0 from rendering)\n                newSvg.style.opacity = '1';\n\n                // Position new SVG absolutely on top\n                newSvg.style.position = 'absolute';\n                newSvg.style.top = '0';\n                newSvg.style.left = '0';\n\n                // Add new SVG to container\n                svgContainerRef.current.appendChild(newSvg);\n\n                // Now set to 0 and animate to 1 for fade in\n                newSvg.style.opacity = '0';\n                newSvg.style.transition = 'opacity 200ms ease-in';\n\n                // Trigger fade in\n                setTimeout(() => {\n                    newSvg.style.opacity = '1';\n                }, 10);\n\n                // Clean up after animation\n                setTimeout(() => {\n                    if (svgContainerRef.current) {\n                        svgContainerRef.current.innerHTML = cachedPage.svgHTML;\n                        // Reset opacity on the final SVG\n                        const finalSvg = svgContainerRef.current.querySelector(\"svg\") as SVGSVGElement | null;\n                        if (finalSvg) {\n                            finalSvg.style.opacity = '1';\n                            finalSvg.style.transition = '';\n                        }\n                    }\n                    setRenderedSvgData(cachedPage);\n                    setIsLoading(false);\n                }, 220); // Slightly longer than animation\n            } else {\n                // Fallback if something goes wrong\n                if (svgContainerRef.current) {\n                    svgContainerRef.current.innerHTML = cachedPage.svgHTML;\n                    const finalSvg = svgContainerRef.current.querySelector(\"svg\") as SVGSVGElement | null;\n                    if (finalSvg) {\n                        finalSvg.style.opacity = '1';\n                    }\n                }\n                setRenderedSvgData(cachedPage);\n                setIsLoading(false);\n            }\n\n            return;\n        }\n\n        // Not in cache, start fade out and render\n        const currentSvg = svgContainerRef.current?.querySelector(\"svg\") as SVGSVGElement | null;\n\n        if (currentSvg) {\n            // Start fade out immediately for responsive feel\n            fadeOutTransition();\n        }\n\n        const action = renderAction({\n            scoreUrl: renderedSvgData.scoreUrl,\n            transition: undefined,  // No slide transition, we're using fade\n            renderPage: currentPage,\n            loadedWidth: renderedSvgData.width || svgContainerWidth,\n            loadedHeight: renderedSvgData.height || svgContainerHeight,\n            scale,\n            loadedPagesCount: pageCount,\n        });\n        setPendingAction(action);\n    }, [currentPage, getCachedPage, setRenderedSvgData, setIsLoading]);\n\n    // Pre-render adjacent pages when idle\n    useIdleCallback(() => {\n        if (!verovio || !svgContainerRef.current || !renderedSvgData || !isReady()) return;\n\n        const currentRenderedPage = renderedSvgData.page;\n        const nextPage = currentRenderedPage + 1;\n        const prevPage = currentRenderedPage - 1;\n\n        // Pre-render next page if not cached\n        if (nextPage <= pageCount && !getCachedPage(nextPage)) {\n            console.log(`[ScoreView] Pre-rendering page ${nextPage}`);\n            preRenderPage(nextPage);\n        }\n\n        // Pre-render previous page if not cached\n        if (prevPage >= 1 && !getCachedPage(prevPage)) {\n            console.log(`[ScoreView] Pre-rendering page ${prevPage}`);\n            preRenderPage(prevPage);\n        }\n    }, [renderedSvgData, pageCount, verovio, getCachedPage]);\n\n    const preRenderPage = async (page: number) => {\n        if (!verovio || !renderedSvgData) return;\n\n        try {\n            const startTime = performance.now();\n\n            // Create a temporary container for pre-rendering\n            const tempContainer = document.createElement('div');\n            tempContainer.style.display = 'none';\n            tempContainer.style.position = 'absolute';\n            tempContainer.style.top = '-9999px';\n            document.body.appendChild(tempContainer);\n\n            const action = renderAction({\n                scoreUrl: renderedSvgData.scoreUrl,\n                transition: undefined,  // No transition for pre-render\n                renderPage: page,\n                loadedWidth: renderedSvgData.width || svgContainerWidth,\n                loadedHeight: renderedSvgData.height || svgContainerHeight,\n                scale: renderedSvgData.scale,\n                loadedPagesCount: pageCount,\n            });\n\n            const result = await executeAction(action, tempContainer);\n\n            if (result.success && result.result) {\n                const renderResult = result.result as RenderActionResult;\n\n                // Capture the SVG HTML from temp container\n                const svgHTML = tempContainer.innerHTML;\n                const svgDataWithHTML = { ...renderResult.newSvg, svgHTML };\n\n                setCachedPage(page, svgDataWithHTML);\n                console.log(`[ScoreView] Pre-rendered page ${page} in ${(performance.now() - startTime).toFixed(0)}ms`);\n            }\n\n            // Clean up temp container\n            document.body.removeChild(tempContainer);\n        } catch (error) {\n            console.error(`Error pre-rendering page ${page}:`, error);\n        }\n    };\n\n\n\n    return (\n        <div style={{ width: \"100%\", height: \"100%\", position: \"relative\" }}>\n            <div ref={svgContainerRef}\n                className={\"static-score \" + svgContainerClasses.join(\" \")}\n                style={{\n                    width: \"100%\",\n                    height: \"100%\",\n                    background: backgroundColor || 'white',\n                    \"--score-bg-color\": backgroundColor\n                } as React.CSSProperties}\n                onClick={handleElementClick} />\n            <LoadingSpinner visible={showSpinner} />\n        </div>\n\n    );\n}\n\nexport default ScoreView;\n","import { useRef, useEffect, RefObject } from 'react';\nimport { TimeMapEvent, PlayingState } from '../types';\nimport { RenderedData } from './useScoreRenderer';\n\ninterface ScoreAnimationConfig {\n  playingState: PlayingState;\n  seekPosition: number;\n  svgContainerRef: RefObject<HTMLDivElement>;\n}\n\n\nexport default function useScoreAnimation({\n  playingState,\n  seekPosition,\n  svgContainerRef,\n}: ScoreAnimationConfig) {\n  // Reference to the Web Animation API instance\n  const animationRef = useRef<Animation | null>(null);\n\n\n  const getAudioDurationMillis = (timemap: TimeMapEvent[]) => {\n    return timemap[timemap.length - 1]?.tstamp || 0;\n  };\n\n\n  const generateKeyframes = (renderedSvgData: RenderedData) => {\n    if (!svgContainerRef.current) {\n      return [];\n    }\n\n    const viewportBB = svgContainerRef.current.getBoundingClientRect();\n    const audioDuration = getAudioDurationMillis(renderedSvgData.timemap);\n    const initialX = Math.round(\n      viewportBB.left +\n      2 * svgContainerRef.current.clientWidth / 3 +\n      (viewportBB.right - viewportBB.width)\n    );\n\n    const measuresOn = renderedSvgData.timemap\n      .filter((e) => e.measureOn !== undefined)\n      .map((e) => { return { id: e.measureOn, ts: e.tstamp }; });\n\n    const keyframes: Keyframe[] = [];\n\n    measuresOn.forEach((measure) => {\n      if (measure.id) {\n        const escapedId = CSS.escape(measure.id);\n        const measureElement = svgContainerRef.current?.querySelector(`#${escapedId}`);\n        if (measureElement) {\n          const bb = measureElement.getBoundingClientRect();\n          const xPosition = initialX - Math.floor(bb.left);\n          const offset = measure.ts / audioDuration;\n\n          keyframes.push({\n            transform: `translateX(${xPosition}px)`,\n            offset: offset\n          });\n        }\n      }\n    });\n\n    if (keyframes.length > 0) {\n      keyframes[keyframes.length - 1]!.offset = 1;\n    }\n\n    return keyframes;\n  };\n\n  /**\n   * Create and start the animation for auto-scrolling\n   */\n  const startAnimation = (renderedSvgData: RenderedData, initialPosition: number, shouldPause: boolean) => {\n    if (\n      !svgContainerRef.current ||\n      !renderedSvgData ||\n      renderedSvgData.timemap.length === 0\n    ) {\n      return;\n    }\n\n    const svgElement = svgContainerRef.current.querySelector(\"svg\") as SVGSVGElement | null;\n    if (!svgElement) {\n      return;\n    }\n\n    const keyframes = generateKeyframes(renderedSvgData);\n    const audioDuration = getAudioDurationMillis(renderedSvgData.timemap);\n\n    const timing: KeyframeAnimationOptions = {\n      duration: audioDuration,\n      fill: \"forwards\",\n      endDelay: 3000,\n    };\n\n\n    // Create the animation\n    animationRef.current = svgElement.animate(keyframes, timing);\n    if (initialPosition > 0) {\n      animationRef.current.currentTime = initialPosition;\n    }\n    if (shouldPause) {\n      animationRef.current.pause();\n    }\n\n\n  };\n\n  /**\n   * Set up spotlight overlay styling for auto-scroll mode\n   */\n  const setupAutoScrollLayout = () => {\n    if (!svgContainerRef.current) return;\n\n    const scoreContainer = document.querySelector('.score-container') as HTMLDivElement | null;\n    if (scoreContainer) {\n      const containerBoundingBox = svgContainerRef.current?.getBoundingClientRect();\n      const expandLeft = containerBoundingBox ? `${containerBoundingBox.left}px` : \"0px\";\n      const hostWidth = containerBoundingBox ? `${containerBoundingBox.left + containerBoundingBox.right}px` : \"100%\";\n      scoreContainer.style.setProperty('--expand-left', expandLeft);\n      scoreContainer.style.setProperty('--host-width', hostWidth);\n    }\n  };\n\n\n\n  // Control the animation based on playback state\n  useEffect(() => {\n    if (!animationRef.current) {\n      return;\n    }\n\n    const animation = animationRef.current;\n\n    if (playingState === PlayingState.PAUSED && animation.playState === \"running\") {\n      animation.pause();\n    } else if (playingState === PlayingState.PLAYING && animation.playState !== \"running\") {\n      animation.play();\n    } else if (playingState === PlayingState.STOPPED) {\n      animation.cancel();\n      animation.currentTime = 0;\n    }\n  }, [playingState]);\n\n  // Update animation position based on seek position\n  useEffect(() => {\n    if (!animationRef.current || seekPosition == -1) return;\n\n    animationRef.current.currentTime = seekPosition;\n  }, [seekPosition]);\n\n  // Cancel animation when hook unmounts\n  useEffect(() => {\n    return () => {\n      if (animationRef.current) {\n        animationRef.current.cancel();\n      }\n    };\n  }, []);\n\n  return {\n    animationRef,\n    startAnimation,\n    setupAutoScrollLayout,\n    getAudioDurationMillis\n  };\n}\n","import { useContext, useEffect, useState } from 'react';\nimport useStore from \"./store\";\nimport { Context } from './Context';\nimport { useComponentSize } from \"react-use-size\";\nimport useScoreAnimation from './hooks/useScoreAnimation';\nimport useScoreActions from './hooks/useScoreActions';\nimport useScoreRenderer from './hooks/useScoreRenderer';\nimport { PlayingState, Score, loadAutoScrollAction } from './types';\nimport { ScoreViewProps } from './ScoreView';\nimport { useTranslation } from 'react-i18next';\nimport LoadingSpinner from './components/LoadingSpinner';\n\n\n\nfunction ScoreViewAutoScroll(scoreViewProps: ScoreViewProps) {\n    const { backgroundColor } = scoreViewProps;\n    const { verovio } = useContext(Context);\n    const { t } = useTranslation(\"common\");\n\n    const setScoreLayout = useStore.use.setScoreLayout();\n\n    const setIsLoading = useStore.use.setIsLoading();\n    const pendingAction = useStore.use.pendingAction();\n    const setPendingAction = useStore.use.setPendingAction();\n    const score = useStore.use.score();\n    const showingMei = useStore.use.showingMei();\n    const seekPosition = useStore.use.seekPosition();\n    const playingPosition = useStore.use.playingPosition();\n    const playingState = useStore.use.playingState();\n    const setPlayingState = useStore.use.setPlayingState();\n    const showEditorial = useStore.use.showEditorial();\n    const setShowEditorial = useStore.use.setShowEditorial();\n    const appOptions = useStore.use.appOptions();\n    const choiceOptions = useStore.use.choiceOptions();\n\n    const transposition = useStore.use.transposition();\n\n    const showReconstructions = useStore.use.showReconstructions();\n\n    const showOriginalClefs = useStore.use.showOriginalClefs();\n    const measureNumberInterval = useStore.use.measureNumberInterval();\n\n    const renderedSvgData = useStore.use.renderedSvgData();\n    const setRenderedSvgData = useStore.use.setRenderedSvgData();\n\n    const [showSpinner, setShowSpinner] = useState(false);\n\n    const { ref: svgContainerRef, width: svgContainerWidth, height: svgContainerHeight } = useComponentSize();\n\n\n    const {\n        svgContainerClasses,\n        isSpotlightVisible\n    } = useScoreRenderer({\n        autoScroll: true,\n        showEditorial,\n        playingState,\n        svgContainerRef,\n        svgContainerHeight\n    });\n\n    const {\n        startAnimation,\n        setupAutoScrollLayout\n    } = useScoreAnimation({\n        playingState,\n        seekPosition,\n        svgContainerRef,\n    });\n\n    const { executeAction } = useScoreActions({\n        t,\n        verovio,\n        svgContainerWidth,\n        svgContainerHeight,\n        appOptions,\n        choiceOptions,\n        transposition,\n        showReconstructions,\n        showOriginalClefs,\n        setScoreLayout,\n        showMusicAnalysis: false,\n        measureNumberInterval,\n        showMusicAnalysisByDefault: false,\n    });\n\n    const addLoadAction = (score: Score) => {\n        if (showEditorial) {\n            setShowEditorial(false);\n        }\n        const action = loadAutoScrollAction({ height: svgContainerHeight, meiStr: score.singleVerseMei });\n        setPendingAction(action);\n    }\n\n    useEffect(() => {\n        if (!score || !verovio || svgContainerHeight <= 0) {\n            return;\n        }\n        addLoadAction(score)\n    }, [svgContainerRef.current])\n\n    useEffect(() => {\n        if (!score || !verovio || svgContainerHeight <= 0) {\n            return;\n        }\n        if (!renderedSvgData || renderedSvgData.id != \"svg-auto-scrolling\") {\n            addLoadAction(score);\n        }\n    }, [svgContainerHeight])\n\n\n    // Process pending actions\n    useEffect(() => {\n        if (!pendingAction || !verovio || !showingMei || !svgContainerRef.current) {\n            return;\n        }\n\n        (async () => {\n            const { success, nextAction, result, showSpinner: shouldShowSpinner } = await executeAction(pendingAction, svgContainerRef.current!);\n\n            // Show spinner for heavy operations\n            if (shouldShowSpinner) {\n                setShowSpinner(true);\n            }\n\n            if (success) {\n                if (nextAction) {\n                    setPendingAction(nextAction);\n                } else {\n                    setPendingAction(null);\n                    // Hide spinner when all actions complete\n                    setShowSpinner(false);\n\n                    // Handle the results of render actions\n                    if (result) {\n                        if (pendingAction.type === \"renderAutoScroll\") {\n                            const autoScrollResult = result as { newSvg: any };\n                            const { newSvg } = autoScrollResult;\n                            setRenderedSvgData(newSvg);\n                            setIsLoading(false);\n                            setupAutoScrollLayout();\n                            if (playingState == PlayingState.PLAYING) {\n                                startAnimation(newSvg, playingPosition, false);\n                            } else if (playingState == PlayingState.PAUSED) {\n                                startAnimation(newSvg, playingPosition, true);\n                            } else {\n                                startAnimation(newSvg, 0, false);\n                                setPlayingState(PlayingState.PLAYING);\n                            }\n                        }\n                    }\n                }\n            } else {\n                console.error(\"Action execution failed\");\n                setShowSpinner(false);\n            }\n        })();\n    }, [pendingAction, verovio, showingMei]);\n\n\n    return (\n        <div style={{ width: \"100%\", height: \"100%\", position: \"relative\" }}>\n            <div ref={svgContainerRef}\n                className={\"scrolling-score \" + svgContainerClasses.join(\" \")}\n                style={{\n                    width: \"100%\",\n                    height: \"100%\",\n                    background: backgroundColor || 'white',\n                    transform: \"translate3d(0,0,0)\",\n                    backfaceVisibility: \"hidden\",\n                    perspective: \"1000px\",\n                    \"--score-bg-color\": backgroundColor\n                } as React.CSSProperties} />\n\n            <LoadingSpinner visible={showSpinner} />\n            <div className={`score-spotlight-overlay ${isSpotlightVisible ? 'visible' : ''}`} />\n        </div>\n\n    );\n}\n\nexport default ScoreViewAutoScroll;\n","\nimport { useEffect, useState } from \"react\";\n\nexport function useIsVisible(ref: React.RefObject<HTMLElement|null>) {\n  const [isIntersecting, setIntersecting] = useState(false);\n\n  useEffect(() => {\n    if (ref.current === null) {\n        return\n    }\n    const observer = new IntersectionObserver(([entry]) =>\n      setIntersecting(entry.isIntersecting)\n    );\n\n    observer.observe(ref.current);\n    return () => {\n      observer.disconnect();\n    };\n  }, [ref]);\n\n  return isIntersecting;\n}","import { useRef, useEffect, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\n\nconst SHOW_TIMEOUT = 1000;\n\ninterface MouseTrackerProps {\n    track: HTMLDivElement;\n    getContent: (event: MouseEvent) => string | undefined;\n}\n\nconst MouseTracker = ({ track, getContent }: MouseTrackerProps) => {\n    const element = useRef<HTMLDivElement|null>(null);\n    const timeoutId = useRef(-1);\n    const [content, setContent] = useState<string | undefined>(undefined);\n\n    useEffect(() => {\n        function handler(e: MouseEvent) {\n            if (!element.current) {\n                return\n            }\n            element.current.style.visibility = 'hidden';\n            if (timeoutId.current != -1) {\n                window.clearTimeout(timeoutId.current);\n                timeoutId.current = -1;\n            }\n\n            if (element.current && top?.innerHeight) {\n                const x = e.clientX - element.current.clientWidth / 2;\n                const y = e.clientY - top.innerHeight - element.current.clientHeight / 2 - 8;\n                element.current.style.transform = `translate(${x}px, ${y}px)`;\n\n                const newContent = getContent(e);\n                if (!newContent || newContent != content) {\n                    setContent(newContent)\n                }\n                if (newContent) {\n                    timeoutId.current = window.setTimeout(() => {\n                        if (element.current) {\n                            element.current.style.visibility = 'visible';\n                        }\n                    }, SHOW_TIMEOUT)\n                }\n            }\n\n        }\n        track.addEventListener('mousemove', handler);\n        return () => track.removeEventListener('mousemove', handler);\n    }, [track, getContent, content]);\n\n    return createPortal(\n            <div className='mouse-tracker' ref={element}>\n                {content}\n            </div>,\n        document.body);\n};\n\nexport default MouseTracker;","import { useSwipeable } from 'react-swipeable';\nimport AudioPlayer from './AudioPlayer';\nimport Editorials from './Editorials';\nimport ScoreControls from './ScoreControls';\nimport ScoreView from './ScoreView';\nimport ScoreViewAutoScroll from './ScoreViewAutoScroll';\nimport useStore from \"./store\";\nimport { TimeMapEvent, PlayingState } from './types';\nimport { forwardRef, Ref, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport { useIsVisible } from './hooks/useIsVisible';\nimport MouseTracker from './MouseTracker';\nimport { useTranslation } from 'react-i18next';\n\n\nconst getAudioDurationMillis = (timemap: TimeMapEvent[]) => {\n    return timemap[timemap.length - 1]?.tstamp || 0;\n};\n\n\nexport interface ScoreViewContainerProps {\n    backgroundColor?: string | undefined;\n    showDownloadButton?: boolean | undefined;\n    showMusicAnalysisByDefault: boolean;\n    height: string;\n}\n\nexport interface ScoreViewContainerRef {\n  scrollIntoView: () => void\n}\n\nfunction ScoreViewContainer(scoreViewContainerProps: ScoreViewContainerProps, ref: Ref<ScoreViewContainerRef>) {\n    const { t } = useTranslation(\"common\")\n\n    const { backgroundColor, height, showMusicAnalysisByDefault } = scoreViewContainerProps;\n\n    const score = useStore.use.score();\n    const autoScroll = useStore.use.autoScroll();\n    const setAutoScroll = useStore.use.setAutoScroll();\n    const playingState = useStore.use.playingState();\n    const setPlayingState = useStore.use.setPlayingState();\n    const currentPage = useStore.use.currentPage();\n    const goToNextPage = useStore.use.goToNextPage();\n    const goToPreviousPage = useStore.use.goToPreviousPage();\n    const pageCount = useStore.use.pageCount();\n    const resetPlayerPosition = useStore.use.resetPlayerPosition();\n    const showEditorial = useStore.use.showEditorial();\n    const renderedSvgData = useStore.use.renderedSvgData();\n\n    const [mouseOver, setMouseOver] = useState(false);\n\n\n    const scoreViewerRef = useRef<HTMLDivElement>(null);\n\n    const isScoreVisible = useIsVisible(scoreViewerRef);\n\n    useImperativeHandle(ref, () => ({\n        scrollIntoView: () => {\n            scoreViewerRef.current?.scrollIntoView(true);\n        }\n      }));\n\n\n    // Set up swipe handlers for page navigation\n    const swipeHandlers = useSwipeable({\n        onSwipedLeft: (_) => {\n            if (playingState != PlayingState.PLAYING && currentPage < pageCount) {\n                resetPlayerPosition();\n                goToNextPage();\n            }\n        },\n        onSwipedRight: (_) => {\n            if (playingState != PlayingState.PLAYING && currentPage > 1) {\n                resetPlayerPosition();\n                goToPreviousPage()\n            }\n        },\n        delta: 10,\n        swipeDuration: 300,\n        preventScrollOnSwipe: true,\n    });\n\n\n    const audioDuration = useMemo(() => {\n        return renderedSvgData?.timemap && renderedSvgData.timemap.length > 0 ?\n            getAudioDurationMillis(renderedSvgData.timemap) : 0;\n    }, [renderedSvgData]);\n\n    // Pause when not visible\n    useEffect(() => {\n        if (!isScoreVisible && playingState == PlayingState.PLAYING) {\n            setPlayingState(PlayingState.PAUSED);\n        }\n    }, [isScoreVisible]);\n\n    useEffect(() => {\n        if (playingState != PlayingState.STOPPED) {\n            setPlayingState(PlayingState.STOPPED);\n        }\n    }, [score])\n\n    useEffect(() => {\n        if (playingState == PlayingState.STOPPED) {\n            if (autoScroll) {\n                setAutoScroll(false);\n            }\n        }\n    }, [playingState]);\n\n\n\n    return (\n        <div ref={scoreViewerRef}\n            className=\"score-viewer\"\n            onMouseEnter={() => setMouseOver(true)} onMouseLeave={() => setMouseOver(false)}\n            style={{\n                position: \"relative\",\n                width: \"100%\",\n                height: height\n            }}>\n            <div style={{ display: \"flex\", flexDirection: \"column\", height: \"100%\", width: \"100%\" }}>\n                { scoreViewerRef.current ? <ScoreControls\n                    style={{ flex: \"0\" }}\n                    fullScreenElement={scoreViewerRef.current}\n                    showDownloadButton={scoreViewContainerProps.showDownloadButton ?? false}\n                    audioDuration={audioDuration}/> : null }\n\n                <div className=\"score-container swipeable-container\"\n                    {...swipeHandlers}\n                    style={{\n                        flex: \"1\",\n                        backgroundColor: backgroundColor,\n                        width: \"100%\",\n                        overflow: \"hidden\",\n                    }}>\n\n                    {autoScroll ? <ScoreViewAutoScroll backgroundColor={backgroundColor} showMusicAnalysisByDefault={showMusicAnalysisByDefault} />\n                    : <ScoreView backgroundColor={backgroundColor} showMusicAnalysisByDefault={showMusicAnalysisByDefault} />}\n\n                </div>\n            </div>\n\n            <AudioPlayer />\n\n            {showEditorial && renderedSvgData?.id ? <Editorials /> : null}\n\n            {scoreViewerRef.current && mouseOver && <MouseTracker\n                track={scoreViewerRef.current}\n                getContent={(e) => {\n                    const staffBB = (e.target as Element)?.closest('g.staff.bounding-box');\n                    const measure = (e.target as Element)?.closest('g.measure');\n                    const n = measure?.getAttribute('data-n');\n                    return staffBB && n ? t('score.measureNumber', { 'number': n }) : undefined;\n                }}\n            />}\n        </div>\n    );\n}\n\nexport default forwardRef<ScoreViewContainerRef, ScoreViewContainerProps>(ScoreViewContainer)\n\n","export function deprecate(fn) {\n  return fn\n}\n\nexport function equal() {}\n\nexport function ok() {}\n\nexport function unreachable() {}\n","/**\n * @typedef Options\n *   Configuration for `stringify`.\n * @property {boolean} [padLeft=true]\n *   Whether to pad a space before a token.\n * @property {boolean} [padRight=false]\n *   Whether to pad a space after a token.\n */\n\n/**\n * @typedef {Options} StringifyOptions\n *   Please use `StringifyOptions` instead.\n */\n\n/**\n * Parse comma-separated tokens to an array.\n *\n * @param {string} value\n *   Comma-separated tokens.\n * @returns {Array<string>}\n *   List of tokens.\n */\nexport function parse(value) {\n  /** @type {Array<string>} */\n  const tokens = []\n  const input = String(value || '')\n  let index = input.indexOf(',')\n  let start = 0\n  /** @type {boolean} */\n  let end = false\n\n  while (!end) {\n    if (index === -1) {\n      index = input.length\n      end = true\n    }\n\n    const token = input.slice(start, index).trim()\n\n    if (token || !end) {\n      tokens.push(token)\n    }\n\n    start = index + 1\n    index = input.indexOf(',', start)\n  }\n\n  return tokens\n}\n\n/**\n * Serialize an array of strings or numbers to comma-separated tokens.\n *\n * @param {Array<string|number>} values\n *   List of tokens.\n * @param {Options} [options]\n *   Configuration for `stringify` (optional).\n * @returns {string}\n *   Comma-separated tokens.\n */\nexport function stringify(values, options) {\n  const settings = options || {}\n\n  // Ensure the last empty entry is seen.\n  const input = values[values.length - 1] === '' ? [...values, ''] : values\n\n  return input\n    .join(\n      (settings.padRight ? ' ' : '') +\n        ',' +\n        (settings.padLeft === false ? '' : ' ')\n    )\n    .trim()\n}\n","/**\n * @typedef Options\n *   Configuration.\n * @property {boolean | null | undefined} [jsx=false]\n *   Support JSX identifiers (default: `false`).\n */\n\nconst startRe = /[$_\\p{ID_Start}]/u\nconst contRe = /[$_\\u{200C}\\u{200D}\\p{ID_Continue}]/u\nconst contReJsx = /[-$_\\u{200C}\\u{200D}\\p{ID_Continue}]/u\nconst nameRe = /^[$_\\p{ID_Start}][$_\\u{200C}\\u{200D}\\p{ID_Continue}]*$/u\nconst nameReJsx = /^[$_\\p{ID_Start}][-$_\\u{200C}\\u{200D}\\p{ID_Continue}]*$/u\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Checks if the given code point can start an identifier.\n *\n * @param {number | undefined} code\n *   Code point to check.\n * @returns {boolean}\n *   Whether `code` can start an identifier.\n */\n// Note: `undefined` is supported so you can pass the result from `''.codePointAt`.\nexport function start(code) {\n  return code ? startRe.test(String.fromCodePoint(code)) : false\n}\n\n/**\n * Checks if the given code point can continue an identifier.\n *\n * @param {number | undefined} code\n *   Code point to check.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {boolean}\n *   Whether `code` can continue an identifier.\n */\n// Note: `undefined` is supported so you can pass the result from `''.codePointAt`.\nexport function cont(code, options) {\n  const settings = options || emptyOptions\n  const re = settings.jsx ? contReJsx : contRe\n  return code ? re.test(String.fromCodePoint(code)) : false\n}\n\n/**\n * Checks if the given value is a valid identifier name.\n *\n * @param {string} name\n *   Identifier to check.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {boolean}\n *   Whether `name` can be an identifier.\n */\nexport function name(name, options) {\n  const settings = options || emptyOptions\n  const re = settings.jsx ? nameReJsx : nameRe\n  return re.test(name)\n}\n","/**\n * @typedef {import('hast').Nodes} Nodes\n */\n\n// HTML whitespace expression.\n// See <https://infra.spec.whatwg.org/#ascii-whitespace>.\nconst re = /[ \\t\\n\\f\\r]/g\n\n/**\n * Check if the given value is *inter-element whitespace*.\n *\n * @param {Nodes | string} thing\n *   Thing to check (`Node` or `string`).\n * @returns {boolean}\n *   Whether the `value` is inter-element whitespace (`boolean`): consisting of\n *   zero or more of space, tab (`\\t`), line feed (`\\n`), carriage return\n *   (`\\r`), or form feed (`\\f`); if a node is passed it must be a `Text` node,\n *   whose `value` field is checked.\n */\nexport function whitespace(thing) {\n  return typeof thing === 'object'\n    ? thing.type === 'text'\n      ? empty(thing.value)\n      : false\n    : empty(thing)\n}\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nfunction empty(value) {\n  return value.replace(re, '') === ''\n}\n","/**\n * @import {Schema as SchemaType, Space} from 'property-information'\n */\n\n/** @type {SchemaType} */\nexport class Schema {\n  /**\n   * @param {SchemaType['property']} property\n   *   Property.\n   * @param {SchemaType['normal']} normal\n   *   Normal.\n   * @param {Space | undefined} [space]\n   *   Space.\n   * @returns\n   *   Schema.\n   */\n  constructor(property, normal, space) {\n    this.normal = normal\n    this.property = property\n\n    if (space) {\n      this.space = space\n    }\n  }\n}\n\nSchema.prototype.normal = {}\nSchema.prototype.property = {}\nSchema.prototype.space = undefined\n","/**\n * @import {Info, Space} from 'property-information'\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {ReadonlyArray<Schema>} definitions\n *   Definitions.\n * @param {Space | undefined} [space]\n *   Space.\n * @returns {Schema}\n *   Schema.\n */\nexport function merge(definitions, space) {\n  /** @type {Record<string, Info>} */\n  const property = {}\n  /** @type {Record<string, string>} */\n  const normal = {}\n\n  for (const definition of definitions) {\n    Object.assign(property, definition.property)\n    Object.assign(normal, definition.normal)\n  }\n\n  return new Schema(property, normal, space)\n}\n","/**\n * Get the cleaned case insensitive form of an attribute or property.\n *\n * @param {string} value\n *   An attribute-like or property-like name.\n * @returns {string}\n *   Value that can be used to look up the properly cased property on a\n *   `Schema`.\n */\nexport function normalize(value) {\n  return value.toLowerCase()\n}\n","/**\n * @import {Info as InfoType} from 'property-information'\n */\n\n/** @type {InfoType} */\nexport class Info {\n  /**\n   * @param {string} property\n   *   Property.\n   * @param {string} attribute\n   *   Attribute.\n   * @returns\n   *   Info.\n   */\n  constructor(property, attribute) {\n    this.attribute = attribute\n    this.property = property\n  }\n}\n\nInfo.prototype.attribute = ''\nInfo.prototype.booleanish = false\nInfo.prototype.boolean = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.defined = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.number = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.property = ''\nInfo.prototype.spaceSeparated = false\nInfo.prototype.space = undefined\n","let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n  return 2 ** ++powers\n}\n","/**\n * @import {Space} from 'property-information'\n */\n\nimport {Info} from './info.js'\nimport * as types from './types.js'\n\nconst checks = /** @type {ReadonlyArray<keyof typeof types>} */ (\n  Object.keys(types)\n)\n\nexport class DefinedInfo extends Info {\n  /**\n   * @constructor\n   * @param {string} property\n   *   Property.\n   * @param {string} attribute\n   *   Attribute.\n   * @param {number | null | undefined} [mask]\n   *   Mask.\n   * @param {Space | undefined} [space]\n   *   Space.\n   * @returns\n   *   Info.\n   */\n  constructor(property, attribute, mask, space) {\n    let index = -1\n\n    super(property, attribute)\n\n    mark(this, 'space', space)\n\n    if (typeof mask === 'number') {\n      while (++index < checks.length) {\n        const check = checks[index]\n        mark(this, checks[index], (mask & types[check]) === types[check])\n      }\n    }\n  }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @template {keyof DefinedInfo} Key\n *   Key type.\n * @param {DefinedInfo} values\n *   Info.\n * @param {Key} key\n *   Key.\n * @param {DefinedInfo[Key]} value\n *   Value.\n * @returns {undefined}\n *   Nothing.\n */\nfunction mark(values, key, value) {\n  if (value) {\n    values[key] = value\n  }\n}\n","/**\n * @import {Info, Space} from 'property-information'\n */\n\n/**\n * @typedef Definition\n *   Definition of a schema.\n * @property {Record<string, string> | undefined} [attributes]\n *   Normalzed names to special attribute case.\n * @property {ReadonlyArray<string> | undefined} [mustUseProperty]\n *   Normalized names that must be set as properties.\n * @property {Record<string, number | null>} properties\n *   Property names to their types.\n * @property {Space | undefined} [space]\n *   Space.\n * @property {Transform} transform\n *   Transform a property name.\n */\n\n/**\n * @callback Transform\n *   Transform.\n * @param {Record<string, string>} attributes\n *   Attributes.\n * @param {string} property\n *   Property.\n * @returns {string}\n *   Attribute.\n */\n\nimport {normalize} from '../normalize.js'\nimport {DefinedInfo} from './defined-info.js'\nimport {Schema} from './schema.js'\n\n/**\n * @param {Definition} definition\n *   Definition.\n * @returns {Schema}\n *   Schema.\n */\nexport function create(definition) {\n  /** @type {Record<string, Info>} */\n  const properties = {}\n  /** @type {Record<string, string>} */\n  const normals = {}\n\n  for (const [property, value] of Object.entries(definition.properties)) {\n    const info = new DefinedInfo(\n      property,\n      definition.transform(definition.attributes || {}, property),\n      value,\n      definition.space\n    )\n\n    if (\n      definition.mustUseProperty &&\n      definition.mustUseProperty.includes(property)\n    ) {\n      info.mustUseProperty = true\n    }\n\n    properties[property] = info\n\n    normals[normalize(property)] = property\n    normals[normalize(info.attribute)] = property\n  }\n\n  return new Schema(properties, normals, definition.space)\n}\n","import {create} from './util/create.js'\nimport {booleanish, number, spaceSeparated} from './util/types.js'\n\nexport const aria = create({\n  properties: {\n    ariaActiveDescendant: null,\n    ariaAtomic: booleanish,\n    ariaAutoComplete: null,\n    ariaBusy: booleanish,\n    ariaChecked: booleanish,\n    ariaColCount: number,\n    ariaColIndex: number,\n    ariaColSpan: number,\n    ariaControls: spaceSeparated,\n    ariaCurrent: null,\n    ariaDescribedBy: spaceSeparated,\n    ariaDetails: null,\n    ariaDisabled: booleanish,\n    ariaDropEffect: spaceSeparated,\n    ariaErrorMessage: null,\n    ariaExpanded: booleanish,\n    ariaFlowTo: spaceSeparated,\n    ariaGrabbed: booleanish,\n    ariaHasPopup: null,\n    ariaHidden: booleanish,\n    ariaInvalid: null,\n    ariaKeyShortcuts: null,\n    ariaLabel: null,\n    ariaLabelledBy: spaceSeparated,\n    ariaLevel: number,\n    ariaLive: null,\n    ariaModal: booleanish,\n    ariaMultiLine: booleanish,\n    ariaMultiSelectable: booleanish,\n    ariaOrientation: null,\n    ariaOwns: spaceSeparated,\n    ariaPlaceholder: null,\n    ariaPosInSet: number,\n    ariaPressed: booleanish,\n    ariaReadOnly: booleanish,\n    ariaRelevant: null,\n    ariaRequired: booleanish,\n    ariaRoleDescription: spaceSeparated,\n    ariaRowCount: number,\n    ariaRowIndex: number,\n    ariaRowSpan: number,\n    ariaSelected: booleanish,\n    ariaSetSize: number,\n    ariaSort: null,\n    ariaValueMax: number,\n    ariaValueMin: number,\n    ariaValueNow: number,\n    ariaValueText: null,\n    role: null\n  },\n  transform(_, property) {\n    return property === 'role'\n      ? property\n      : 'aria-' + property.slice(4).toLowerCase()\n  }\n})\n","/**\n * @param {Record<string, string>} attributes\n *   Attributes.\n * @param {string} attribute\n *   Attribute.\n * @returns {string}\n *   Transformed attribute.\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n  return attribute in attributes ? attributes[attribute] : attribute\n}\n","import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record<string, string>} attributes\n *   Attributes.\n * @param {string} property\n *   Property.\n * @returns {string}\n *   Transformed property.\n */\nexport function caseInsensitiveTransform(attributes, property) {\n  return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","import {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\nimport {create} from './util/create.js'\nimport {\n  booleanish,\n  boolean,\n  commaSeparated,\n  number,\n  overloadedBoolean,\n  spaceSeparated\n} from './util/types.js'\n\nexport const html = create({\n  attributes: {\n    acceptcharset: 'accept-charset',\n    classname: 'class',\n    htmlfor: 'for',\n    httpequiv: 'http-equiv'\n  },\n  mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n  properties: {\n    // Standard Properties.\n    abbr: null,\n    accept: commaSeparated,\n    acceptCharset: spaceSeparated,\n    accessKey: spaceSeparated,\n    action: null,\n    allow: null,\n    allowFullScreen: boolean,\n    allowPaymentRequest: boolean,\n    allowUserMedia: boolean,\n    alt: null,\n    as: null,\n    async: boolean,\n    autoCapitalize: null,\n    autoComplete: spaceSeparated,\n    autoFocus: boolean,\n    autoPlay: boolean,\n    blocking: spaceSeparated,\n    capture: null,\n    charSet: null,\n    checked: boolean,\n    cite: null,\n    className: spaceSeparated,\n    cols: number,\n    colSpan: null,\n    content: null,\n    contentEditable: booleanish,\n    controls: boolean,\n    controlsList: spaceSeparated,\n    coords: number | commaSeparated,\n    crossOrigin: null,\n    data: null,\n    dateTime: null,\n    decoding: null,\n    default: boolean,\n    defer: boolean,\n    dir: null,\n    dirName: null,\n    disabled: boolean,\n    download: overloadedBoolean,\n    draggable: booleanish,\n    encType: null,\n    enterKeyHint: null,\n    fetchPriority: null,\n    form: null,\n    formAction: null,\n    formEncType: null,\n    formMethod: null,\n    formNoValidate: boolean,\n    formTarget: null,\n    headers: spaceSeparated,\n    height: number,\n    hidden: overloadedBoolean,\n    high: number,\n    href: null,\n    hrefLang: null,\n    htmlFor: spaceSeparated,\n    httpEquiv: spaceSeparated,\n    id: null,\n    imageSizes: null,\n    imageSrcSet: null,\n    inert: boolean,\n    inputMode: null,\n    integrity: null,\n    is: null,\n    isMap: boolean,\n    itemId: null,\n    itemProp: spaceSeparated,\n    itemRef: spaceSeparated,\n    itemScope: boolean,\n    itemType: spaceSeparated,\n    kind: null,\n    label: null,\n    lang: null,\n    language: null,\n    list: null,\n    loading: null,\n    loop: boolean,\n    low: number,\n    manifest: null,\n    max: null,\n    maxLength: number,\n    media: null,\n    method: null,\n    min: null,\n    minLength: number,\n    multiple: boolean,\n    muted: boolean,\n    name: null,\n    nonce: null,\n    noModule: boolean,\n    noValidate: boolean,\n    onAbort: null,\n    onAfterPrint: null,\n    onAuxClick: null,\n    onBeforeMatch: null,\n    onBeforePrint: null,\n    onBeforeToggle: null,\n    onBeforeUnload: null,\n    onBlur: null,\n    onCancel: null,\n    onCanPlay: null,\n    onCanPlayThrough: null,\n    onChange: null,\n    onClick: null,\n    onClose: null,\n    onContextLost: null,\n    onContextMenu: null,\n    onContextRestored: null,\n    onCopy: null,\n    onCueChange: null,\n    onCut: null,\n    onDblClick: null,\n    onDrag: null,\n    onDragEnd: null,\n    onDragEnter: null,\n    onDragExit: null,\n    onDragLeave: null,\n    onDragOver: null,\n    onDragStart: null,\n    onDrop: null,\n    onDurationChange: null,\n    onEmptied: null,\n    onEnded: null,\n    onError: null,\n    onFocus: null,\n    onFormData: null,\n    onHashChange: null,\n    onInput: null,\n    onInvalid: null,\n    onKeyDown: null,\n    onKeyPress: null,\n    onKeyUp: null,\n    onLanguageChange: null,\n    onLoad: null,\n    onLoadedData: null,\n    onLoadedMetadata: null,\n    onLoadEnd: null,\n    onLoadStart: null,\n    onMessage: null,\n    onMessageError: null,\n    onMouseDown: null,\n    onMouseEnter: null,\n    onMouseLeave: null,\n    onMouseMove: null,\n    onMouseOut: null,\n    onMouseOver: null,\n    onMouseUp: null,\n    onOffline: null,\n    onOnline: null,\n    onPageHide: null,\n    onPageShow: null,\n    onPaste: null,\n    onPause: null,\n    onPlay: null,\n    onPlaying: null,\n    onPopState: null,\n    onProgress: null,\n    onRateChange: null,\n    onRejectionHandled: null,\n    onReset: null,\n    onResize: null,\n    onScroll: null,\n    onScrollEnd: null,\n    onSecurityPolicyViolation: null,\n    onSeeked: null,\n    onSeeking: null,\n    onSelect: null,\n    onSlotChange: null,\n    onStalled: null,\n    onStorage: null,\n    onSubmit: null,\n    onSuspend: null,\n    onTimeUpdate: null,\n    onToggle: null,\n    onUnhandledRejection: null,\n    onUnload: null,\n    onVolumeChange: null,\n    onWaiting: null,\n    onWheel: null,\n    open: boolean,\n    optimum: number,\n    pattern: null,\n    ping: spaceSeparated,\n    placeholder: null,\n    playsInline: boolean,\n    popover: null,\n    popoverTarget: null,\n    popoverTargetAction: null,\n    poster: null,\n    preload: null,\n    readOnly: boolean,\n    referrerPolicy: null,\n    rel: spaceSeparated,\n    required: boolean,\n    reversed: boolean,\n    rows: number,\n    rowSpan: number,\n    sandbox: spaceSeparated,\n    scope: null,\n    scoped: boolean,\n    seamless: boolean,\n    selected: boolean,\n    shadowRootClonable: boolean,\n    shadowRootDelegatesFocus: boolean,\n    shadowRootMode: null,\n    shape: null,\n    size: number,\n    sizes: null,\n    slot: null,\n    span: number,\n    spellCheck: booleanish,\n    src: null,\n    srcDoc: null,\n    srcLang: null,\n    srcSet: null,\n    start: number,\n    step: null,\n    style: null,\n    tabIndex: number,\n    target: null,\n    title: null,\n    translate: null,\n    type: null,\n    typeMustMatch: boolean,\n    useMap: null,\n    value: booleanish,\n    width: number,\n    wrap: null,\n    writingSuggestions: null,\n\n    // Legacy.\n    // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n    align: null, // Several. Use CSS `text-align` instead,\n    aLink: null, // `<body>`. Use CSS `a:active {color}` instead\n    archive: spaceSeparated, // `<object>`. List of URIs to archives\n    axis: null, // `<td>` and `<th>`. Use `scope` on `<th>`\n    background: null, // `<body>`. Use CSS `background-image` instead\n    bgColor: null, // `<body>` and table elements. Use CSS `background-color` instead\n    border: number, // `<table>`. Use CSS `border-width` instead,\n    borderColor: null, // `<table>`. Use CSS `border-color` instead,\n    bottomMargin: number, // `<body>`\n    cellPadding: null, // `<table>`\n    cellSpacing: null, // `<table>`\n    char: null, // Several table elements. When `align=char`, sets the character to align on\n    charOff: null, // Several table elements. When `char`, offsets the alignment\n    classId: null, // `<object>`\n    clear: null, // `<br>`. Use CSS `clear` instead\n    code: null, // `<object>`\n    codeBase: null, // `<object>`\n    codeType: null, // `<object>`\n    color: null, // `<font>` and `<hr>`. Use CSS instead\n    compact: boolean, // Lists. Use CSS to reduce space between items instead\n    declare: boolean, // `<object>`\n    event: null, // `<script>`\n    face: null, // `<font>`. Use CSS instead\n    frame: null, // `<table>`\n    frameBorder: null, // `<iframe>`. Use CSS `border` instead\n    hSpace: number, // `<img>` and `<object>`\n    leftMargin: number, // `<body>`\n    link: null, // `<body>`. Use CSS `a:link {color: *}` instead\n    longDesc: null, // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`\n    lowSrc: null, // `<img>`. Use a `<picture>`\n    marginHeight: number, // `<body>`\n    marginWidth: number, // `<body>`\n    noResize: boolean, // `<frame>`\n    noHref: boolean, // `<area>`. Use no href instead of an explicit `nohref`\n    noShade: boolean, // `<hr>`. Use background-color and height instead of borders\n    noWrap: boolean, // `<td>` and `<th>`\n    object: null, // `<applet>`\n    profile: null, // `<head>`\n    prompt: null, // `<isindex>`\n    rev: null, // `<link>`\n    rightMargin: number, // `<body>`\n    rules: null, // `<table>`\n    scheme: null, // `<meta>`\n    scrolling: booleanish, // `<frame>`. Use overflow in the child context\n    standby: null, // `<object>`\n    summary: null, // `<table>`\n    text: null, // `<body>`. Use CSS `color` instead\n    topMargin: number, // `<body>`\n    valueType: null, // `<param>`\n    version: null, // `<html>`. Use a doctype.\n    vAlign: null, // Several. Use CSS `vertical-align` instead\n    vLink: null, // `<body>`. Use CSS `a:visited {color}` instead\n    vSpace: number, // `<img>` and `<object>`\n\n    // Non-standard Properties.\n    allowTransparency: null,\n    autoCorrect: null,\n    autoSave: null,\n    disablePictureInPicture: boolean,\n    disableRemotePlayback: boolean,\n    prefix: null,\n    property: null,\n    results: number,\n    security: null,\n    unselectable: null\n  },\n  space: 'html',\n  transform: caseInsensitiveTransform\n})\n","import {caseSensitiveTransform} from './util/case-sensitive-transform.js'\nimport {create} from './util/create.js'\nimport {\n  boolean,\n  commaOrSpaceSeparated,\n  commaSeparated,\n  number,\n  spaceSeparated\n} from './util/types.js'\n\nexport const svg = create({\n  attributes: {\n    accentHeight: 'accent-height',\n    alignmentBaseline: 'alignment-baseline',\n    arabicForm: 'arabic-form',\n    baselineShift: 'baseline-shift',\n    capHeight: 'cap-height',\n    className: 'class',\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    crossOrigin: 'crossorigin',\n    dataType: 'datatype',\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    hrefLang: 'hreflang',\n    horizAdvX: 'horiz-adv-x',\n    horizOriginX: 'horiz-origin-x',\n    horizOriginY: 'horiz-origin-y',\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    navDown: 'nav-down',\n    navDownLeft: 'nav-down-left',\n    navDownRight: 'nav-down-right',\n    navLeft: 'nav-left',\n    navNext: 'nav-next',\n    navPrev: 'nav-prev',\n    navRight: 'nav-right',\n    navUp: 'nav-up',\n    navUpLeft: 'nav-up-left',\n    navUpRight: 'nav-up-right',\n    onAbort: 'onabort',\n    onActivate: 'onactivate',\n    onAfterPrint: 'onafterprint',\n    onBeforePrint: 'onbeforeprint',\n    onBegin: 'onbegin',\n    onCancel: 'oncancel',\n    onCanPlay: 'oncanplay',\n    onCanPlayThrough: 'oncanplaythrough',\n    onChange: 'onchange',\n    onClick: 'onclick',\n    onClose: 'onclose',\n    onCopy: 'oncopy',\n    onCueChange: 'oncuechange',\n    onCut: 'oncut',\n    onDblClick: 'ondblclick',\n    onDrag: 'ondrag',\n    onDragEnd: 'ondragend',\n    onDragEnter: 'ondragenter',\n    onDragExit: 'ondragexit',\n    onDragLeave: 'ondragleave',\n    onDragOver: 'ondragover',\n    onDragStart: 'ondragstart',\n    onDrop: 'ondrop',\n    onDurationChange: 'ondurationchange',\n    onEmptied: 'onemptied',\n    onEnd: 'onend',\n    onEnded: 'onended',\n    onError: 'onerror',\n    onFocus: 'onfocus',\n    onFocusIn: 'onfocusin',\n    onFocusOut: 'onfocusout',\n    onHashChange: 'onhashchange',\n    onInput: 'oninput',\n    onInvalid: 'oninvalid',\n    onKeyDown: 'onkeydown',\n    onKeyPress: 'onkeypress',\n    onKeyUp: 'onkeyup',\n    onLoad: 'onload',\n    onLoadedData: 'onloadeddata',\n    onLoadedMetadata: 'onloadedmetadata',\n    onLoadStart: 'onloadstart',\n    onMessage: 'onmessage',\n    onMouseDown: 'onmousedown',\n    onMouseEnter: 'onmouseenter',\n    onMouseLeave: 'onmouseleave',\n    onMouseMove: 'onmousemove',\n    onMouseOut: 'onmouseout',\n    onMouseOver: 'onmouseover',\n    onMouseUp: 'onmouseup',\n    onMouseWheel: 'onmousewheel',\n    onOffline: 'onoffline',\n    onOnline: 'ononline',\n    onPageHide: 'onpagehide',\n    onPageShow: 'onpageshow',\n    onPaste: 'onpaste',\n    onPause: 'onpause',\n    onPlay: 'onplay',\n    onPlaying: 'onplaying',\n    onPopState: 'onpopstate',\n    onProgress: 'onprogress',\n    onRateChange: 'onratechange',\n    onRepeat: 'onrepeat',\n    onReset: 'onreset',\n    onResize: 'onresize',\n    onScroll: 'onscroll',\n    onSeeked: 'onseeked',\n    onSeeking: 'onseeking',\n    onSelect: 'onselect',\n    onShow: 'onshow',\n    onStalled: 'onstalled',\n    onStorage: 'onstorage',\n    onSubmit: 'onsubmit',\n    onSuspend: 'onsuspend',\n    onTimeUpdate: 'ontimeupdate',\n    onToggle: 'ontoggle',\n    onUnload: 'onunload',\n    onVolumeChange: 'onvolumechange',\n    onWaiting: 'onwaiting',\n    onZoom: 'onzoom',\n    overlinePosition: 'overline-position',\n    overlineThickness: 'overline-thickness',\n    paintOrder: 'paint-order',\n    panose1: 'panose-1',\n    pointerEvents: 'pointer-events',\n    referrerPolicy: 'referrerpolicy',\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    tabIndex: 'tabindex',\n    textAnchor: 'text-anchor',\n    textDecoration: 'text-decoration',\n    textRendering: 'text-rendering',\n    transformOrigin: 'transform-origin',\n    typeOf: 'typeof',\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    xHeight: 'x-height',\n    // These were camelcased in Tiny. Now lowercased in SVG 2\n    playbackOrder: 'playbackorder',\n    timelineBegin: 'timelinebegin'\n  },\n  properties: {\n    about: commaOrSpaceSeparated,\n    accentHeight: number,\n    accumulate: null,\n    additive: null,\n    alignmentBaseline: null,\n    alphabetic: number,\n    amplitude: number,\n    arabicForm: null,\n    ascent: number,\n    attributeName: null,\n    attributeType: null,\n    azimuth: number,\n    bandwidth: null,\n    baselineShift: null,\n    baseFrequency: null,\n    baseProfile: null,\n    bbox: null,\n    begin: null,\n    bias: number,\n    by: null,\n    calcMode: null,\n    capHeight: number,\n    className: spaceSeparated,\n    clip: null,\n    clipPath: null,\n    clipPathUnits: null,\n    clipRule: null,\n    color: null,\n    colorInterpolation: null,\n    colorInterpolationFilters: null,\n    colorProfile: null,\n    colorRendering: null,\n    content: null,\n    contentScriptType: null,\n    contentStyleType: null,\n    crossOrigin: null,\n    cursor: null,\n    cx: null,\n    cy: null,\n    d: null,\n    dataType: null,\n    defaultAction: null,\n    descent: number,\n    diffuseConstant: number,\n    direction: null,\n    display: null,\n    dur: null,\n    divisor: number,\n    dominantBaseline: null,\n    download: boolean,\n    dx: null,\n    dy: null,\n    edgeMode: null,\n    editable: null,\n    elevation: number,\n    enableBackground: null,\n    end: null,\n    event: null,\n    exponent: number,\n    externalResourcesRequired: null,\n    fill: null,\n    fillOpacity: number,\n    fillRule: null,\n    filter: null,\n    filterRes: null,\n    filterUnits: null,\n    floodColor: null,\n    floodOpacity: null,\n    focusable: null,\n    focusHighlight: null,\n    fontFamily: null,\n    fontSize: null,\n    fontSizeAdjust: null,\n    fontStretch: null,\n    fontStyle: null,\n    fontVariant: null,\n    fontWeight: null,\n    format: null,\n    fr: null,\n    from: null,\n    fx: null,\n    fy: null,\n    g1: commaSeparated,\n    g2: commaSeparated,\n    glyphName: commaSeparated,\n    glyphOrientationHorizontal: null,\n    glyphOrientationVertical: null,\n    glyphRef: null,\n    gradientTransform: null,\n    gradientUnits: null,\n    handler: null,\n    hanging: number,\n    hatchContentUnits: null,\n    hatchUnits: null,\n    height: null,\n    href: null,\n    hrefLang: null,\n    horizAdvX: number,\n    horizOriginX: number,\n    horizOriginY: number,\n    id: null,\n    ideographic: number,\n    imageRendering: null,\n    initialVisibility: null,\n    in: null,\n    in2: null,\n    intercept: number,\n    k: number,\n    k1: number,\n    k2: number,\n    k3: number,\n    k4: number,\n    kernelMatrix: commaOrSpaceSeparated,\n    kernelUnitLength: null,\n    keyPoints: null, // SEMI_COLON_SEPARATED\n    keySplines: null, // SEMI_COLON_SEPARATED\n    keyTimes: null, // SEMI_COLON_SEPARATED\n    kerning: null,\n    lang: null,\n    lengthAdjust: null,\n    letterSpacing: null,\n    lightingColor: null,\n    limitingConeAngle: number,\n    local: null,\n    markerEnd: null,\n    markerMid: null,\n    markerStart: null,\n    markerHeight: null,\n    markerUnits: null,\n    markerWidth: null,\n    mask: null,\n    maskContentUnits: null,\n    maskUnits: null,\n    mathematical: null,\n    max: null,\n    media: null,\n    mediaCharacterEncoding: null,\n    mediaContentEncodings: null,\n    mediaSize: number,\n    mediaTime: null,\n    method: null,\n    min: null,\n    mode: null,\n    name: null,\n    navDown: null,\n    navDownLeft: null,\n    navDownRight: null,\n    navLeft: null,\n    navNext: null,\n    navPrev: null,\n    navRight: null,\n    navUp: null,\n    navUpLeft: null,\n    navUpRight: null,\n    numOctaves: null,\n    observer: null,\n    offset: null,\n    onAbort: null,\n    onActivate: null,\n    onAfterPrint: null,\n    onBeforePrint: null,\n    onBegin: null,\n    onCancel: null,\n    onCanPlay: null,\n    onCanPlayThrough: null,\n    onChange: null,\n    onClick: null,\n    onClose: null,\n    onCopy: null,\n    onCueChange: null,\n    onCut: null,\n    onDblClick: null,\n    onDrag: null,\n    onDragEnd: null,\n    onDragEnter: null,\n    onDragExit: null,\n    onDragLeave: null,\n    onDragOver: null,\n    onDragStart: null,\n    onDrop: null,\n    onDurationChange: null,\n    onEmptied: null,\n    onEnd: null,\n    onEnded: null,\n    onError: null,\n    onFocus: null,\n    onFocusIn: null,\n    onFocusOut: null,\n    onHashChange: null,\n    onInput: null,\n    onInvalid: null,\n    onKeyDown: null,\n    onKeyPress: null,\n    onKeyUp: null,\n    onLoad: null,\n    onLoadedData: null,\n    onLoadedMetadata: null,\n    onLoadStart: null,\n    onMessage: null,\n    onMouseDown: null,\n    onMouseEnter: null,\n    onMouseLeave: null,\n    onMouseMove: null,\n    onMouseOut: null,\n    onMouseOver: null,\n    onMouseUp: null,\n    onMouseWheel: null,\n    onOffline: null,\n    onOnline: null,\n    onPageHide: null,\n    onPageShow: null,\n    onPaste: null,\n    onPause: null,\n    onPlay: null,\n    onPlaying: null,\n    onPopState: null,\n    onProgress: null,\n    onRateChange: null,\n    onRepeat: null,\n    onReset: null,\n    onResize: null,\n    onScroll: null,\n    onSeeked: null,\n    onSeeking: null,\n    onSelect: null,\n    onShow: null,\n    onStalled: null,\n    onStorage: null,\n    onSubmit: null,\n    onSuspend: null,\n    onTimeUpdate: null,\n    onToggle: null,\n    onUnload: null,\n    onVolumeChange: null,\n    onWaiting: null,\n    onZoom: null,\n    opacity: null,\n    operator: null,\n    order: null,\n    orient: null,\n    orientation: null,\n    origin: null,\n    overflow: null,\n    overlay: null,\n    overlinePosition: number,\n    overlineThickness: number,\n    paintOrder: null,\n    panose1: null,\n    path: null,\n    pathLength: number,\n    patternContentUnits: null,\n    patternTransform: null,\n    patternUnits: null,\n    phase: null,\n    ping: spaceSeparated,\n    pitch: null,\n    playbackOrder: null,\n    pointerEvents: null,\n    points: null,\n    pointsAtX: number,\n    pointsAtY: number,\n    pointsAtZ: number,\n    preserveAlpha: null,\n    preserveAspectRatio: null,\n    primitiveUnits: null,\n    propagate: null,\n    property: commaOrSpaceSeparated,\n    r: null,\n    radius: null,\n    referrerPolicy: null,\n    refX: null,\n    refY: null,\n    rel: commaOrSpaceSeparated,\n    rev: commaOrSpaceSeparated,\n    renderingIntent: null,\n    repeatCount: null,\n    repeatDur: null,\n    requiredExtensions: commaOrSpaceSeparated,\n    requiredFeatures: commaOrSpaceSeparated,\n    requiredFonts: commaOrSpaceSeparated,\n    requiredFormats: commaOrSpaceSeparated,\n    resource: null,\n    restart: null,\n    result: null,\n    rotate: null,\n    rx: null,\n    ry: null,\n    scale: null,\n    seed: null,\n    shapeRendering: null,\n    side: null,\n    slope: null,\n    snapshotTime: null,\n    specularConstant: number,\n    specularExponent: number,\n    spreadMethod: null,\n    spacing: null,\n    startOffset: null,\n    stdDeviation: null,\n    stemh: null,\n    stemv: null,\n    stitchTiles: null,\n    stopColor: null,\n    stopOpacity: null,\n    strikethroughPosition: number,\n    strikethroughThickness: number,\n    string: null,\n    stroke: null,\n    strokeDashArray: commaOrSpaceSeparated,\n    strokeDashOffset: null,\n    strokeLineCap: null,\n    strokeLineJoin: null,\n    strokeMiterLimit: number,\n    strokeOpacity: number,\n    strokeWidth: null,\n    style: null,\n    surfaceScale: number,\n    syncBehavior: null,\n    syncBehaviorDefault: null,\n    syncMaster: null,\n    syncTolerance: null,\n    syncToleranceDefault: null,\n    systemLanguage: commaOrSpaceSeparated,\n    tabIndex: number,\n    tableValues: null,\n    target: null,\n    targetX: number,\n    targetY: number,\n    textAnchor: null,\n    textDecoration: null,\n    textRendering: null,\n    textLength: null,\n    timelineBegin: null,\n    title: null,\n    transformBehavior: null,\n    type: null,\n    typeOf: commaOrSpaceSeparated,\n    to: null,\n    transform: null,\n    transformOrigin: null,\n    u1: null,\n    u2: null,\n    underlinePosition: number,\n    underlineThickness: number,\n    unicode: null,\n    unicodeBidi: null,\n    unicodeRange: null,\n    unitsPerEm: number,\n    values: null,\n    vAlphabetic: number,\n    vMathematical: number,\n    vectorEffect: null,\n    vHanging: number,\n    vIdeographic: number,\n    version: null,\n    vertAdvY: number,\n    vertOriginX: number,\n    vertOriginY: number,\n    viewBox: null,\n    viewTarget: null,\n    visibility: null,\n    width: null,\n    widths: null,\n    wordSpacing: null,\n    writingMode: null,\n    x: null,\n    x1: null,\n    x2: null,\n    xChannelSelector: null,\n    xHeight: number,\n    y: null,\n    y1: null,\n    y2: null,\n    yChannelSelector: null,\n    z: null,\n    zoomAndPan: null\n  },\n  space: 'svg',\n  transform: caseSensitiveTransform\n})\n","import {create} from './util/create.js'\n\nexport const xlink = create({\n  properties: {\n    xLinkActuate: null,\n    xLinkArcRole: null,\n    xLinkHref: null,\n    xLinkRole: null,\n    xLinkShow: null,\n    xLinkTitle: null,\n    xLinkType: null\n  },\n  space: 'xlink',\n  transform(_, property) {\n    return 'xlink:' + property.slice(5).toLowerCase()\n  }\n})\n","import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n  attributes: {xmlnsxlink: 'xmlns:xlink'},\n  properties: {xmlnsXLink: null, xmlns: null},\n  space: 'xmlns',\n  transform: caseInsensitiveTransform\n})\n","import {create} from './util/create.js'\n\nexport const xml = create({\n  properties: {xmlBase: null, xmlLang: null, xmlSpace: null},\n  space: 'xml',\n  transform(_, property) {\n    return 'xml:' + property.slice(3).toLowerCase()\n  }\n})\n","/**\n * Special cases for React (`Record<string, string>`).\n *\n * `hast` is close to `React` but differs in a couple of cases.\n * To get a React property from a hast property,\n * check if it is in `hastToReact`.\n * If it is, use the corresponding value;\n * otherwise, use the hast property.\n *\n * @type {Record<string, string>}\n */\nexport const hastToReact = {\n  classId: 'classID',\n  dataType: 'datatype',\n  itemId: 'itemID',\n  strokeDashArray: 'strokeDasharray',\n  strokeDashOffset: 'strokeDashoffset',\n  strokeLineCap: 'strokeLinecap',\n  strokeLineJoin: 'strokeLinejoin',\n  strokeMiterLimit: 'strokeMiterlimit',\n  typeOf: 'typeof',\n  xLinkActuate: 'xlinkActuate',\n  xLinkArcRole: 'xlinkArcrole',\n  xLinkHref: 'xlinkHref',\n  xLinkRole: 'xlinkRole',\n  xLinkShow: 'xlinkShow',\n  xLinkTitle: 'xlinkTitle',\n  xLinkType: 'xlinkType',\n  xmlnsXLink: 'xmlnsXlink'\n}\n","/**\n * @import {Schema} from 'property-information'\n */\n\nimport {DefinedInfo} from './util/defined-info.js'\nimport {Info} from './util/info.js'\nimport {normalize} from './normalize.js'\n\nconst cap = /[A-Z]/g\nconst dash = /-[a-z]/g\nconst valid = /^data[-\\w.:]+$/i\n\n/**\n * Look up info on a property.\n *\n * In most cases the given `schema` contains info on the property.\n * All standard,\n * most legacy,\n * and some non-standard properties are supported.\n * For these cases,\n * the returned `Info` has hints about the value of the property.\n *\n * `name` can also be a valid data attribute or property,\n * in which case an `Info` object with the correctly cased `attribute` and\n * `property` is returned.\n *\n * `name` can be an unknown attribute,\n * in which case an `Info` object with `attribute` and `property` set to the\n * given name is returned.\n * It is not recommended to provide unsupported legacy or recently specced\n * properties.\n *\n *\n * @param {Schema} schema\n *   Schema;\n *   either the `html` or `svg` export.\n * @param {string} value\n *   An attribute-like or property-like name;\n *   it will be passed through `normalize` to hopefully find the correct info.\n * @returns {Info}\n *   Info.\n */\nexport function find(schema, value) {\n  const normal = normalize(value)\n  let property = value\n  let Type = Info\n\n  if (normal in schema.normal) {\n    return schema.property[schema.normal[normal]]\n  }\n\n  if (normal.length > 4 && normal.slice(0, 4) === 'data' && valid.test(value)) {\n    // Attribute or property.\n    if (value.charAt(4) === '-') {\n      // Turn it into a property.\n      const rest = value.slice(5).replace(dash, camelcase)\n      property = 'data' + rest.charAt(0).toUpperCase() + rest.slice(1)\n    } else {\n      // Turn it into an attribute.\n      const rest = value.slice(4)\n\n      if (!dash.test(rest)) {\n        let dashes = rest.replace(cap, kebab)\n\n        if (dashes.charAt(0) !== '-') {\n          dashes = '-' + dashes\n        }\n\n        value = 'data' + dashes\n      }\n    }\n\n    Type = DefinedInfo\n  }\n\n  return new Type(property, value)\n}\n\n/**\n * @param {string} $0\n *   Value.\n * @returns {string}\n *   Kebab.\n */\nfunction kebab($0) {\n  return '-' + $0.toLowerCase()\n}\n\n/**\n * @param {string} $0\n *   Value.\n * @returns {string}\n *   Camel.\n */\nfunction camelcase($0) {\n  return $0.charAt(1).toUpperCase()\n}\n","// Note: types exposed from `index.d.ts`.\nimport {merge} from './lib/util/merge.js'\nimport {aria} from './lib/aria.js'\nimport {html as htmlBase} from './lib/html.js'\nimport {svg as svgBase} from './lib/svg.js'\nimport {xlink} from './lib/xlink.js'\nimport {xmlns} from './lib/xmlns.js'\nimport {xml} from './lib/xml.js'\n\nexport {hastToReact} from './lib/hast-to-react.js'\n\nexport const html = merge([aria, htmlBase, xlink, xmlns, xml], 'html')\n\nexport {find} from './lib/find.js'\nexport {normalize} from './lib/normalize.js'\n\nexport const svg = merge([aria, svgBase, xlink, xmlns, xml], 'svg')\n","/**\n * Parse space-separated tokens to an array of strings.\n *\n * @param {string} value\n *   Space-separated tokens.\n * @returns {Array<string>}\n *   List of tokens.\n */\nexport function parse(value) {\n  const input = String(value || '').trim()\n  return input ? input.split(/[ \\t\\n\\r\\f]+/g) : []\n}\n\n/**\n * Serialize an array of strings as space separated-tokens.\n *\n * @param {Array<string|number>} values\n *   List of tokens.\n * @returns {string}\n *   Space-separated tokens.\n */\nexport function stringify(values) {\n  return values.join(' ').trim()\n}\n","// http://www.w3.org/TR/CSS21/grammar.html\n// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027\nvar COMMENT_REGEX = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\n\nvar NEWLINE_REGEX = /\\n/g;\nvar WHITESPACE_REGEX = /^\\s*/;\n\n// declaration\nvar PROPERTY_REGEX = /^(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/;\nvar COLON_REGEX = /^:\\s*/;\nvar VALUE_REGEX = /^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};])+)/;\nvar SEMICOLON_REGEX = /^[;\\s]*/;\n\n// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\nvar TRIM_REGEX = /^\\s+|\\s+$/g;\n\n// strings\nvar NEWLINE = '\\n';\nvar FORWARD_SLASH = '/';\nvar ASTERISK = '*';\nvar EMPTY_STRING = '';\n\n// types\nvar TYPE_COMMENT = 'comment';\nvar TYPE_DECLARATION = 'declaration';\n\n/**\n * @param {String} style\n * @param {Object} [options]\n * @return {Object[]}\n * @throws {TypeError}\n * @throws {Error}\n */\nmodule.exports = function (style, options) {\n  if (typeof style !== 'string') {\n    throw new TypeError('First argument must be a string');\n  }\n\n  if (!style) return [];\n\n  options = options || {};\n\n  /**\n   * Positional.\n   */\n  var lineno = 1;\n  var column = 1;\n\n  /**\n   * Update lineno and column based on `str`.\n   *\n   * @param {String} str\n   */\n  function updatePosition(str) {\n    var lines = str.match(NEWLINE_REGEX);\n    if (lines) lineno += lines.length;\n    var i = str.lastIndexOf(NEWLINE);\n    column = ~i ? str.length - i : column + str.length;\n  }\n\n  /**\n   * Mark position and patch `node.position`.\n   *\n   * @return {Function}\n   */\n  function position() {\n    var start = { line: lineno, column: column };\n    return function (node) {\n      node.position = new Position(start);\n      whitespace();\n      return node;\n    };\n  }\n\n  /**\n   * Store position information for a node.\n   *\n   * @constructor\n   * @property {Object} start\n   * @property {Object} end\n   * @property {undefined|String} source\n   */\n  function Position(start) {\n    this.start = start;\n    this.end = { line: lineno, column: column };\n    this.source = options.source;\n  }\n\n  /**\n   * Non-enumerable source string.\n   */\n  Position.prototype.content = style;\n\n  var errorsList = [];\n\n  /**\n   * Error `msg`.\n   *\n   * @param {String} msg\n   * @throws {Error}\n   */\n  function error(msg) {\n    var err = new Error(\n      options.source + ':' + lineno + ':' + column + ': ' + msg\n    );\n    err.reason = msg;\n    err.filename = options.source;\n    err.line = lineno;\n    err.column = column;\n    err.source = style;\n\n    if (options.silent) {\n      errorsList.push(err);\n    } else {\n      throw err;\n    }\n  }\n\n  /**\n   * Match `re` and return captures.\n   *\n   * @param {RegExp} re\n   * @return {undefined|Array}\n   */\n  function match(re) {\n    var m = re.exec(style);\n    if (!m) return;\n    var str = m[0];\n    updatePosition(str);\n    style = style.slice(str.length);\n    return m;\n  }\n\n  /**\n   * Parse whitespace.\n   */\n  function whitespace() {\n    match(WHITESPACE_REGEX);\n  }\n\n  /**\n   * Parse comments.\n   *\n   * @param {Object[]} [rules]\n   * @return {Object[]}\n   */\n  function comments(rules) {\n    var c;\n    rules = rules || [];\n    while ((c = comment())) {\n      if (c !== false) {\n        rules.push(c);\n      }\n    }\n    return rules;\n  }\n\n  /**\n   * Parse comment.\n   *\n   * @return {Object}\n   * @throws {Error}\n   */\n  function comment() {\n    var pos = position();\n    if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return;\n\n    var i = 2;\n    while (\n      EMPTY_STRING != style.charAt(i) &&\n      (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))\n    ) {\n      ++i;\n    }\n    i += 2;\n\n    if (EMPTY_STRING === style.charAt(i - 1)) {\n      return error('End of comment missing');\n    }\n\n    var str = style.slice(2, i - 2);\n    column += 2;\n    updatePosition(str);\n    style = style.slice(i);\n    column += 2;\n\n    return pos({\n      type: TYPE_COMMENT,\n      comment: str\n    });\n  }\n\n  /**\n   * Parse declaration.\n   *\n   * @return {Object}\n   * @throws {Error}\n   */\n  function declaration() {\n    var pos = position();\n\n    // prop\n    var prop = match(PROPERTY_REGEX);\n    if (!prop) return;\n    comment();\n\n    // :\n    if (!match(COLON_REGEX)) return error(\"property missing ':'\");\n\n    // val\n    var val = match(VALUE_REGEX);\n\n    var ret = pos({\n      type: TYPE_DECLARATION,\n      property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),\n      value: val\n        ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING))\n        : EMPTY_STRING\n    });\n\n    // ;\n    match(SEMICOLON_REGEX);\n\n    return ret;\n  }\n\n  /**\n   * Parse declarations.\n   *\n   * @return {Object[]}\n   */\n  function declarations() {\n    var decls = [];\n\n    comments(decls);\n\n    // declarations\n    var decl;\n    while ((decl = declaration())) {\n      if (decl !== false) {\n        decls.push(decl);\n        comments(decls);\n      }\n    }\n\n    return decls;\n  }\n\n  whitespace();\n  return declarations();\n};\n\n/**\n * Trim `str`.\n *\n * @param {String} str\n * @return {String}\n */\nfunction trim(str) {\n  return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = StyleToObject;\nvar inline_style_parser_1 = __importDefault(require(\"inline-style-parser\"));\n/**\n * Parses inline style to object.\n *\n * @param style - Inline style.\n * @param iterator - Iterator.\n * @returns - Style object or null.\n *\n * @example Parsing inline style to object:\n *\n * ```js\n * import parse from 'style-to-object';\n * parse('line-height: 42;'); // { 'line-height': '42' }\n * ```\n */\nfunction StyleToObject(style, iterator) {\n    var styleObject = null;\n    if (!style || typeof style !== 'string') {\n        return styleObject;\n    }\n    var declarations = (0, inline_style_parser_1.default)(style);\n    var hasIterator = typeof iterator === 'function';\n    declarations.forEach(function (declaration) {\n        if (declaration.type !== 'declaration') {\n            return;\n        }\n        var property = declaration.property, value = declaration.value;\n        if (hasIterator) {\n            iterator(property, value, declaration);\n        }\n        else if (value) {\n            styleObject = styleObject || {};\n            styleObject[property] = value;\n        }\n    });\n    return styleObject;\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.camelCase = void 0;\nvar CUSTOM_PROPERTY_REGEX = /^--[a-zA-Z0-9_-]+$/;\nvar HYPHEN_REGEX = /-([a-z])/g;\nvar NO_HYPHEN_REGEX = /^[^-]+$/;\nvar VENDOR_PREFIX_REGEX = /^-(webkit|moz|ms|o|khtml)-/;\nvar MS_VENDOR_PREFIX_REGEX = /^-(ms)-/;\n/**\n * Checks whether to skip camelCase.\n */\nvar skipCamelCase = function (property) {\n    return !property ||\n        NO_HYPHEN_REGEX.test(property) ||\n        CUSTOM_PROPERTY_REGEX.test(property);\n};\n/**\n * Replacer that capitalizes first character.\n */\nvar capitalize = function (match, character) {\n    return character.toUpperCase();\n};\n/**\n * Replacer that removes beginning hyphen of vendor prefix property.\n */\nvar trimHyphen = function (match, prefix) { return \"\".concat(prefix, \"-\"); };\n/**\n * CamelCases a CSS property.\n */\nvar camelCase = function (property, options) {\n    if (options === void 0) { options = {}; }\n    if (skipCamelCase(property)) {\n        return property;\n    }\n    property = property.toLowerCase();\n    if (options.reactCompat) {\n        // `-ms` vendor prefix should not be capitalized\n        property = property.replace(MS_VENDOR_PREFIX_REGEX, trimHyphen);\n    }\n    else {\n        // for non-React, remove first hyphen so vendor prefix is not capitalized\n        property = property.replace(VENDOR_PREFIX_REGEX, trimHyphen);\n    }\n    return property.replace(HYPHEN_REGEX, capitalize);\n};\nexports.camelCase = camelCase;\n//# sourceMappingURL=utilities.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar style_to_object_1 = __importDefault(require(\"style-to-object\"));\nvar utilities_1 = require(\"./utilities\");\n/**\n * Parses CSS inline style to JavaScript object (camelCased).\n */\nfunction StyleToJS(style, options) {\n    var output = {};\n    if (!style || typeof style !== 'string') {\n        return output;\n    }\n    (0, style_to_object_1.default)(style, function (property, value) {\n        // skip CSS comment\n        if (property && value) {\n            output[(0, utilities_1.camelCase)(property, options)] = value;\n        }\n    });\n    return output;\n}\nStyleToJS.default = StyleToJS;\nmodule.exports = StyleToJS;\n//# sourceMappingURL=index.js.map","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n */\n\n/**\n * Get the ending point of `node`.\n *\n * @param node\n *   Node.\n * @returns\n *   Point.\n */\nexport const pointEnd = point('end')\n\n/**\n * Get the starting point of `node`.\n *\n * @param node\n *   Node.\n * @returns\n *   Point.\n */\nexport const pointStart = point('start')\n\n/**\n * Get the positional info of `node`.\n *\n * @param {'end' | 'start'} type\n *   Side.\n * @returns\n *   Getter.\n */\nfunction point(type) {\n  return point\n\n  /**\n   * Get the point info of `node` at a bound side.\n   *\n   * @param {Node | NodeLike | null | undefined} [node]\n   * @returns {Point | undefined}\n   */\n  function point(node) {\n    const point = (node && node.position && node.position[type]) || {}\n\n    if (\n      typeof point.line === 'number' &&\n      point.line > 0 &&\n      typeof point.column === 'number' &&\n      point.column > 0\n    ) {\n      return {\n        line: point.line,\n        column: point.column,\n        offset:\n          typeof point.offset === 'number' && point.offset > -1\n            ? point.offset\n            : undefined\n      }\n    }\n  }\n}\n\n/**\n * Get the positional info of `node`.\n *\n * @param {Node | NodeLike | null | undefined} [node]\n *   Node.\n * @returns {Position | undefined}\n *   Position.\n */\nexport function position(node) {\n  const start = pointStart(node)\n  const end = pointEnd(node)\n\n  if (start && end) {\n    return {start, end}\n  }\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n */\n\n/**\n * Serialize the positional info of a point, position (start and end points),\n * or node.\n *\n * @param {Node | NodeLike | Point | PointLike | Position | PositionLike | null | undefined} [value]\n *   Node, position, or point.\n * @returns {string}\n *   Pretty printed positional info of a node (`string`).\n *\n *   In the format of a range `ls:cs-le:ce` (when given `node` or `position`)\n *   or a point `l:c` (when given `point`), where `l` stands for line, `c` for\n *   column, `s` for `start`, and `e` for end.\n *   An empty string (`''`) is returned if the given value is neither `node`,\n *   `position`, nor `point`.\n */\nexport function stringifyPosition(value) {\n  // Nothing.\n  if (!value || typeof value !== 'object') {\n    return ''\n  }\n\n  // Node.\n  if ('position' in value || 'type' in value) {\n    return position(value.position)\n  }\n\n  // Position.\n  if ('start' in value || 'end' in value) {\n    return position(value)\n  }\n\n  // Point.\n  if ('line' in value || 'column' in value) {\n    return point(value)\n  }\n\n  // ?\n  return ''\n}\n\n/**\n * @param {Point | PointLike | null | undefined} point\n * @returns {string}\n */\nfunction point(point) {\n  return index(point && point.line) + ':' + index(point && point.column)\n}\n\n/**\n * @param {Position | PositionLike | null | undefined} pos\n * @returns {string}\n */\nfunction position(pos) {\n  return point(pos && pos.start) + '-' + point(pos && pos.end)\n}\n\n/**\n * @param {number | null | undefined} value\n * @returns {number}\n */\nfunction index(value) {\n  return value && typeof value === 'number' ? value : 1\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n *\n * @typedef Options\n *   Configuration.\n * @property {Array<Node> | null | undefined} [ancestors]\n *   Stack of (inclusive) ancestor nodes surrounding the message (optional).\n * @property {Error | null | undefined} [cause]\n *   Original error cause of the message (optional).\n * @property {Point | Position | null | undefined} [place]\n *   Place of message (optional).\n * @property {string | null | undefined} [ruleId]\n *   Category of message (optional, example: `'my-rule'`).\n * @property {string | null | undefined} [source]\n *   Namespace of who sent the message (optional, example: `'my-package'`).\n */\n\nimport {stringifyPosition} from 'unist-util-stringify-position'\n\n/**\n * Message.\n */\nexport class VFileMessage extends Error {\n  /**\n   * Create a message for `reason`.\n   *\n   * > 🪦 **Note**: also has obsolete signatures.\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Options | null | undefined} [options]\n   * @returns\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @overload\n   * @param {string} reason\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @param {Error | VFileMessage | string} causeOrReason\n   *   Reason for message, should use markdown.\n   * @param {Node | NodeLike | Options | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n   *   Configuration (optional).\n   * @param {string | null | undefined} [origin]\n   *   Place in code where the message originates (example:\n   *   `'my-package:my-rule'` or `'my-rule'`).\n   * @returns\n   *   Instance of `VFileMessage`.\n   */\n  // eslint-disable-next-line complexity\n  constructor(causeOrReason, optionsOrParentOrPlace, origin) {\n    super()\n\n    if (typeof optionsOrParentOrPlace === 'string') {\n      origin = optionsOrParentOrPlace\n      optionsOrParentOrPlace = undefined\n    }\n\n    /** @type {string} */\n    let reason = ''\n    /** @type {Options} */\n    let options = {}\n    let legacyCause = false\n\n    if (optionsOrParentOrPlace) {\n      // Point.\n      if (\n        'line' in optionsOrParentOrPlace &&\n        'column' in optionsOrParentOrPlace\n      ) {\n        options = {place: optionsOrParentOrPlace}\n      }\n      // Position.\n      else if (\n        'start' in optionsOrParentOrPlace &&\n        'end' in optionsOrParentOrPlace\n      ) {\n        options = {place: optionsOrParentOrPlace}\n      }\n      // Node.\n      else if ('type' in optionsOrParentOrPlace) {\n        options = {\n          ancestors: [optionsOrParentOrPlace],\n          place: optionsOrParentOrPlace.position\n        }\n      }\n      // Options.\n      else {\n        options = {...optionsOrParentOrPlace}\n      }\n    }\n\n    if (typeof causeOrReason === 'string') {\n      reason = causeOrReason\n    }\n    // Error.\n    else if (!options.cause && causeOrReason) {\n      legacyCause = true\n      reason = causeOrReason.message\n      options.cause = causeOrReason\n    }\n\n    if (!options.ruleId && !options.source && typeof origin === 'string') {\n      const index = origin.indexOf(':')\n\n      if (index === -1) {\n        options.ruleId = origin\n      } else {\n        options.source = origin.slice(0, index)\n        options.ruleId = origin.slice(index + 1)\n      }\n    }\n\n    if (!options.place && options.ancestors && options.ancestors) {\n      const parent = options.ancestors[options.ancestors.length - 1]\n\n      if (parent) {\n        options.place = parent.position\n      }\n    }\n\n    const start =\n      options.place && 'start' in options.place\n        ? options.place.start\n        : options.place\n\n    /* eslint-disable no-unused-expressions */\n    /**\n     * Stack of ancestor nodes surrounding the message.\n     *\n     * @type {Array<Node> | undefined}\n     */\n    this.ancestors = options.ancestors || undefined\n\n    /**\n     * Original error cause of the message.\n     *\n     * @type {Error | undefined}\n     */\n    this.cause = options.cause || undefined\n\n    /**\n     * Starting column of message.\n     *\n     * @type {number | undefined}\n     */\n    this.column = start ? start.column : undefined\n\n    /**\n     * State of problem.\n     *\n     * * `true` — error, file not usable\n     * * `false` — warning, change may be needed\n     * * `undefined` — change likely not needed\n     *\n     * @type {boolean | null | undefined}\n     */\n    this.fatal = undefined\n\n    /**\n     * Path of a file (used throughout the `VFile` ecosystem).\n     *\n     * @type {string | undefined}\n     */\n    this.file\n\n    // Field from `Error`.\n    /**\n     * Reason for message.\n     *\n     * @type {string}\n     */\n    this.message = reason\n\n    /**\n     * Starting line of error.\n     *\n     * @type {number | undefined}\n     */\n    this.line = start ? start.line : undefined\n\n    // Field from `Error`.\n    /**\n     * Serialized positional info of message.\n     *\n     * On normal errors, this would be something like `ParseError`, buit in\n     * `VFile` messages we use this space to show where an error happened.\n     */\n    this.name = stringifyPosition(options.place) || '1:1'\n\n    /**\n     * Place of message.\n     *\n     * @type {Point | Position | undefined}\n     */\n    this.place = options.place || undefined\n\n    /**\n     * Reason for message, should use markdown.\n     *\n     * @type {string}\n     */\n    this.reason = this.message\n\n    /**\n     * Category of message (example: `'my-rule'`).\n     *\n     * @type {string | undefined}\n     */\n    this.ruleId = options.ruleId || undefined\n\n    /**\n     * Namespace of message (example: `'my-package'`).\n     *\n     * @type {string | undefined}\n     */\n    this.source = options.source || undefined\n\n    // Field from `Error`.\n    /**\n     * Stack of message.\n     *\n     * This is used by normal errors to show where something happened in\n     * programming code, irrelevant for `VFile` messages,\n     *\n     * @type {string}\n     */\n    this.stack =\n      legacyCause && options.cause && typeof options.cause.stack === 'string'\n        ? options.cause.stack\n        : ''\n\n    // The following fields are “well known”.\n    // Not standard.\n    // Feel free to add other non-standard fields to your messages.\n\n    /**\n     * Specify the source value that’s being reported, which is deemed\n     * incorrect.\n     *\n     * @type {string | undefined}\n     */\n    this.actual\n\n    /**\n     * Suggest acceptable values that can be used instead of `actual`.\n     *\n     * @type {Array<string> | undefined}\n     */\n    this.expected\n\n    /**\n     * Long form description of the message (you should use markdown).\n     *\n     * @type {string | undefined}\n     */\n    this.note\n\n    /**\n     * Link to docs for the message.\n     *\n     * > 👉 **Note**: this must be an absolute URL that can be passed as `x`\n     * > to `new URL(x)`.\n     *\n     * @type {string | undefined}\n     */\n    this.url\n    /* eslint-enable no-unused-expressions */\n  }\n}\n\nVFileMessage.prototype.file = ''\nVFileMessage.prototype.name = ''\nVFileMessage.prototype.reason = ''\nVFileMessage.prototype.message = ''\nVFileMessage.prototype.stack = ''\nVFileMessage.prototype.column = undefined\nVFileMessage.prototype.line = undefined\nVFileMessage.prototype.ancestors = undefined\nVFileMessage.prototype.cause = undefined\nVFileMessage.prototype.fatal = undefined\nVFileMessage.prototype.place = undefined\nVFileMessage.prototype.ruleId = undefined\nVFileMessage.prototype.source = undefined\n","/**\n * @import {Identifier, Literal, MemberExpression} from 'estree'\n * @import {Jsx, JsxDev, Options, Props} from 'hast-util-to-jsx-runtime'\n * @import {Element, Nodes, Parents, Root, Text} from 'hast'\n * @import {MdxFlowExpressionHast, MdxTextExpressionHast} from 'mdast-util-mdx-expression'\n * @import {MdxJsxFlowElementHast, MdxJsxTextElementHast} from 'mdast-util-mdx-jsx'\n * @import {MdxjsEsmHast} from 'mdast-util-mdxjs-esm'\n * @import {Position} from 'unist'\n * @import {Child, Create, Field, JsxElement, State, Style} from './types.js'\n */\n\nimport {stringify as commas} from 'comma-separated-tokens'\nimport {ok as assert} from 'devlop'\nimport {name as isIdentifierName} from 'estree-util-is-identifier-name'\nimport {whitespace} from 'hast-util-whitespace'\nimport {find, hastToReact, html, svg} from 'property-information'\nimport {stringify as spaces} from 'space-separated-tokens'\nimport styleToJs from 'style-to-js'\nimport {pointStart} from 'unist-util-position'\nimport {VFileMessage} from 'vfile-message'\n\n// To do: next major: `Object.hasOwn`.\nconst own = {}.hasOwnProperty\n\n/** @type {Map<string, number>} */\nconst emptyMap = new Map()\n\nconst cap = /[A-Z]/g\n\n// `react-dom` triggers a warning for *any* white space in tables.\n// To follow GFM, `mdast-util-to-hast` injects line endings between elements.\n// Other tools might do so too, but they don’t do here, so we remove all of\n// that.\n\n// See: <https://github.com/facebook/react/pull/7081>.\n// See: <https://github.com/facebook/react/pull/7515>.\n// See: <https://github.com/remarkjs/remark-react/issues/64>.\n// See: <https://github.com/rehypejs/rehype-react/pull/29>.\n// See: <https://github.com/rehypejs/rehype-react/pull/32>.\n// See: <https://github.com/rehypejs/rehype-react/pull/45>.\nconst tableElements = new Set(['table', 'tbody', 'thead', 'tfoot', 'tr'])\n\nconst tableCellElement = new Set(['td', 'th'])\n\nconst docs = 'https://github.com/syntax-tree/hast-util-to-jsx-runtime'\n\n/**\n * Transform a hast tree to preact, react, solid, svelte, vue, etc.,\n * with an automatic JSX runtime.\n *\n * @param {Nodes} tree\n *   Tree to transform.\n * @param {Options} options\n *   Configuration (required).\n * @returns {JsxElement}\n *   JSX element.\n */\n\nexport function toJsxRuntime(tree, options) {\n  if (!options || options.Fragment === undefined) {\n    throw new TypeError('Expected `Fragment` in options')\n  }\n\n  const filePath = options.filePath || undefined\n  /** @type {Create} */\n  let create\n\n  if (options.development) {\n    if (typeof options.jsxDEV !== 'function') {\n      throw new TypeError(\n        'Expected `jsxDEV` in options when `development: true`'\n      )\n    }\n\n    create = developmentCreate(filePath, options.jsxDEV)\n  } else {\n    if (typeof options.jsx !== 'function') {\n      throw new TypeError('Expected `jsx` in production options')\n    }\n\n    if (typeof options.jsxs !== 'function') {\n      throw new TypeError('Expected `jsxs` in production options')\n    }\n\n    create = productionCreate(filePath, options.jsx, options.jsxs)\n  }\n\n  /** @type {State} */\n  const state = {\n    Fragment: options.Fragment,\n    ancestors: [],\n    components: options.components || {},\n    create,\n    elementAttributeNameCase: options.elementAttributeNameCase || 'react',\n    evaluater: options.createEvaluater ? options.createEvaluater() : undefined,\n    filePath,\n    ignoreInvalidStyle: options.ignoreInvalidStyle || false,\n    passKeys: options.passKeys !== false,\n    passNode: options.passNode || false,\n    schema: options.space === 'svg' ? svg : html,\n    stylePropertyNameCase: options.stylePropertyNameCase || 'dom',\n    tableCellAlignToStyle: options.tableCellAlignToStyle !== false\n  }\n\n  const result = one(state, tree, undefined)\n\n  // JSX element.\n  if (result && typeof result !== 'string') {\n    return result\n  }\n\n  // Text node or something that turned into nothing.\n  return state.create(\n    tree,\n    state.Fragment,\n    {children: result || undefined},\n    undefined\n  )\n}\n\n/**\n * Transform a node.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Nodes} node\n *   Current node.\n * @param {string | undefined} key\n *   Key.\n * @returns {Child | undefined}\n *   Child, optional.\n */\nfunction one(state, node, key) {\n  if (node.type === 'element') {\n    return element(state, node, key)\n  }\n\n  if (node.type === 'mdxFlowExpression' || node.type === 'mdxTextExpression') {\n    return mdxExpression(state, node)\n  }\n\n  if (node.type === 'mdxJsxFlowElement' || node.type === 'mdxJsxTextElement') {\n    return mdxJsxElement(state, node, key)\n  }\n\n  if (node.type === 'mdxjsEsm') {\n    return mdxEsm(state, node)\n  }\n\n  if (node.type === 'root') {\n    return root(state, node, key)\n  }\n\n  if (node.type === 'text') {\n    return text(state, node)\n  }\n}\n\n/**\n * Handle element.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Element} node\n *   Current node.\n * @param {string | undefined} key\n *   Key.\n * @returns {Child | undefined}\n *   Child, optional.\n */\nfunction element(state, node, key) {\n  const parentSchema = state.schema\n  let schema = parentSchema\n\n  if (node.tagName.toLowerCase() === 'svg' && parentSchema.space === 'html') {\n    schema = svg\n    state.schema = schema\n  }\n\n  state.ancestors.push(node)\n\n  const type = findComponentFromName(state, node.tagName, false)\n  const props = createElementProps(state, node)\n  let children = createChildren(state, node)\n\n  if (tableElements.has(node.tagName)) {\n    children = children.filter(function (child) {\n      return typeof child === 'string' ? !whitespace(child) : true\n    })\n  }\n\n  addNode(state, props, type, node)\n  addChildren(props, children)\n\n  // Restore.\n  state.ancestors.pop()\n  state.schema = parentSchema\n\n  return state.create(node, type, props, key)\n}\n\n/**\n * Handle MDX expression.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdxFlowExpressionHast | MdxTextExpressionHast} node\n *   Current node.\n * @returns {Child | undefined}\n *   Child, optional.\n */\nfunction mdxExpression(state, node) {\n  if (node.data && node.data.estree && state.evaluater) {\n    const program = node.data.estree\n    const expression = program.body[0]\n    assert(expression.type === 'ExpressionStatement')\n\n    // Assume result is a child.\n    return /** @type {Child | undefined} */ (\n      state.evaluater.evaluateExpression(expression.expression)\n    )\n  }\n\n  crashEstree(state, node.position)\n}\n\n/**\n * Handle MDX ESM.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdxjsEsmHast} node\n *   Current node.\n * @returns {Child | undefined}\n *   Child, optional.\n */\nfunction mdxEsm(state, node) {\n  if (node.data && node.data.estree && state.evaluater) {\n    // Assume result is a child.\n    return /** @type {Child | undefined} */ (\n      state.evaluater.evaluateProgram(node.data.estree)\n    )\n  }\n\n  crashEstree(state, node.position)\n}\n\n/**\n * Handle MDX JSX.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdxJsxFlowElementHast | MdxJsxTextElementHast} node\n *   Current node.\n * @param {string | undefined} key\n *   Key.\n * @returns {Child | undefined}\n *   Child, optional.\n */\nfunction mdxJsxElement(state, node, key) {\n  const parentSchema = state.schema\n  let schema = parentSchema\n\n  if (node.name === 'svg' && parentSchema.space === 'html') {\n    schema = svg\n    state.schema = schema\n  }\n\n  state.ancestors.push(node)\n\n  const type =\n    node.name === null\n      ? state.Fragment\n      : findComponentFromName(state, node.name, true)\n  const props = createJsxElementProps(state, node)\n  const children = createChildren(state, node)\n\n  addNode(state, props, type, node)\n  addChildren(props, children)\n\n  // Restore.\n  state.ancestors.pop()\n  state.schema = parentSchema\n\n  return state.create(node, type, props, key)\n}\n\n/**\n * Handle root.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Root} node\n *   Current node.\n * @param {string | undefined} key\n *   Key.\n * @returns {Child | undefined}\n *   Child, optional.\n */\nfunction root(state, node, key) {\n  /** @type {Props} */\n  const props = {}\n\n  addChildren(props, createChildren(state, node))\n\n  return state.create(node, state.Fragment, props, key)\n}\n\n/**\n * Handle text.\n *\n * @param {State} _\n *   Info passed around.\n * @param {Text} node\n *   Current node.\n * @returns {Child | undefined}\n *   Child, optional.\n */\nfunction text(_, node) {\n  return node.value\n}\n\n/**\n * Add `node` to props.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Props} props\n *   Props.\n * @param {unknown} type\n *   Type.\n * @param {Element | MdxJsxFlowElementHast | MdxJsxTextElementHast} node\n *   Node.\n * @returns {undefined}\n *   Nothing.\n */\nfunction addNode(state, props, type, node) {\n  // If this is swapped out for a component:\n  if (typeof type !== 'string' && type !== state.Fragment && state.passNode) {\n    props.node = node\n  }\n}\n\n/**\n * Add children to props.\n *\n * @param {Props} props\n *   Props.\n * @param {Array<Child>} children\n *   Children.\n * @returns {undefined}\n *   Nothing.\n */\nfunction addChildren(props, children) {\n  if (children.length > 0) {\n    const value = children.length > 1 ? children : children[0]\n\n    if (value) {\n      props.children = value\n    }\n  }\n}\n\n/**\n * @param {string | undefined} _\n *   Path to file.\n * @param {Jsx} jsx\n *   Dynamic.\n * @param {Jsx} jsxs\n *   Static.\n * @returns {Create}\n *   Create a production element.\n */\nfunction productionCreate(_, jsx, jsxs) {\n  return create\n  /** @type {Create} */\n  function create(_, type, props, key) {\n    // Only an array when there are 2 or more children.\n    const isStaticChildren = Array.isArray(props.children)\n    const fn = isStaticChildren ? jsxs : jsx\n    return key ? fn(type, props, key) : fn(type, props)\n  }\n}\n\n/**\n * @param {string | undefined} filePath\n *   Path to file.\n * @param {JsxDev} jsxDEV\n *   Development.\n * @returns {Create}\n *   Create a development element.\n */\nfunction developmentCreate(filePath, jsxDEV) {\n  return create\n  /** @type {Create} */\n  function create(node, type, props, key) {\n    // Only an array when there are 2 or more children.\n    const isStaticChildren = Array.isArray(props.children)\n    const point = pointStart(node)\n    return jsxDEV(\n      type,\n      props,\n      key,\n      isStaticChildren,\n      {\n        columnNumber: point ? point.column - 1 : undefined,\n        fileName: filePath,\n        lineNumber: point ? point.line : undefined\n      },\n      undefined\n    )\n  }\n}\n\n/**\n * Create props from an element.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Element} node\n *   Current element.\n * @returns {Props}\n *   Props.\n */\nfunction createElementProps(state, node) {\n  /** @type {Props} */\n  const props = {}\n  /** @type {string | undefined} */\n  let alignValue\n  /** @type {string} */\n  let prop\n\n  for (prop in node.properties) {\n    if (prop !== 'children' && own.call(node.properties, prop)) {\n      const result = createProperty(state, prop, node.properties[prop])\n\n      if (result) {\n        const [key, value] = result\n\n        if (\n          state.tableCellAlignToStyle &&\n          key === 'align' &&\n          typeof value === 'string' &&\n          tableCellElement.has(node.tagName)\n        ) {\n          alignValue = value\n        } else {\n          props[key] = value\n        }\n      }\n    }\n  }\n\n  if (alignValue) {\n    // Assume style is an object.\n    const style = /** @type {Style} */ (props.style || (props.style = {}))\n    style[state.stylePropertyNameCase === 'css' ? 'text-align' : 'textAlign'] =\n      alignValue\n  }\n\n  return props\n}\n\n/**\n * Create props from a JSX element.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdxJsxFlowElementHast | MdxJsxTextElementHast} node\n *   Current JSX element.\n * @returns {Props}\n *   Props.\n */\nfunction createJsxElementProps(state, node) {\n  /** @type {Props} */\n  const props = {}\n\n  for (const attribute of node.attributes) {\n    if (attribute.type === 'mdxJsxExpressionAttribute') {\n      if (attribute.data && attribute.data.estree && state.evaluater) {\n        const program = attribute.data.estree\n        const expression = program.body[0]\n        assert(expression.type === 'ExpressionStatement')\n        const objectExpression = expression.expression\n        assert(objectExpression.type === 'ObjectExpression')\n        const property = objectExpression.properties[0]\n        assert(property.type === 'SpreadElement')\n\n        Object.assign(\n          props,\n          state.evaluater.evaluateExpression(property.argument)\n        )\n      } else {\n        crashEstree(state, node.position)\n      }\n    } else {\n      // For JSX, the author is responsible of passing in the correct values.\n      const name = attribute.name\n      /** @type {unknown} */\n      let value\n\n      if (attribute.value && typeof attribute.value === 'object') {\n        if (\n          attribute.value.data &&\n          attribute.value.data.estree &&\n          state.evaluater\n        ) {\n          const program = attribute.value.data.estree\n          const expression = program.body[0]\n          assert(expression.type === 'ExpressionStatement')\n          value = state.evaluater.evaluateExpression(expression.expression)\n        } else {\n          crashEstree(state, node.position)\n        }\n      } else {\n        value = attribute.value === null ? true : attribute.value\n      }\n\n      // Assume a prop.\n      props[name] = /** @type {Props[keyof Props]} */ (value)\n    }\n  }\n\n  return props\n}\n\n/**\n * Create children.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Parents} node\n *   Current element.\n * @returns {Array<Child>}\n *   Children.\n */\nfunction createChildren(state, node) {\n  /** @type {Array<Child>} */\n  const children = []\n  let index = -1\n  /** @type {Map<string, number>} */\n  // Note: test this when Solid doesn’t want to merge my upcoming PR.\n  /* c8 ignore next */\n  const countsByName = state.passKeys ? new Map() : emptyMap\n\n  while (++index < node.children.length) {\n    const child = node.children[index]\n    /** @type {string | undefined} */\n    let key\n\n    if (state.passKeys) {\n      const name =\n        child.type === 'element'\n          ? child.tagName\n          : child.type === 'mdxJsxFlowElement' ||\n              child.type === 'mdxJsxTextElement'\n            ? child.name\n            : undefined\n\n      if (name) {\n        const count = countsByName.get(name) || 0\n        key = name + '-' + count\n        countsByName.set(name, count + 1)\n      }\n    }\n\n    const result = one(state, child, key)\n    if (result !== undefined) children.push(result)\n  }\n\n  return children\n}\n\n/**\n * Handle a property.\n *\n * @param {State} state\n *   Info passed around.\n * @param {string} prop\n *   Key.\n * @param {Array<number | string> | boolean | number | string | null | undefined} value\n *   hast property value.\n * @returns {Field | undefined}\n *   Field for runtime, optional.\n */\nfunction createProperty(state, prop, value) {\n  const info = find(state.schema, prop)\n\n  // Ignore nullish and `NaN` values.\n  if (\n    value === null ||\n    value === undefined ||\n    (typeof value === 'number' && Number.isNaN(value))\n  ) {\n    return\n  }\n\n  if (Array.isArray(value)) {\n    // Accept `array`.\n    // Most props are space-separated.\n    value = info.commaSeparated ? commas(value) : spaces(value)\n  }\n\n  // React only accepts `style` as object.\n  if (info.property === 'style') {\n    let styleObject =\n      typeof value === 'object' ? value : parseStyle(state, String(value))\n\n    if (state.stylePropertyNameCase === 'css') {\n      styleObject = transformStylesToCssCasing(styleObject)\n    }\n\n    return ['style', styleObject]\n  }\n\n  return [\n    state.elementAttributeNameCase === 'react' && info.space\n      ? hastToReact[info.property] || info.property\n      : info.attribute,\n    value\n  ]\n}\n\n/**\n * Parse a CSS declaration to an object.\n *\n * @param {State} state\n *   Info passed around.\n * @param {string} value\n *   CSS declarations.\n * @returns {Style}\n *   Properties.\n * @throws\n *   Throws `VFileMessage` when CSS cannot be parsed.\n */\nfunction parseStyle(state, value) {\n  try {\n    return styleToJs(value, {reactCompat: true})\n  } catch (error) {\n    if (state.ignoreInvalidStyle) {\n      return {}\n    }\n\n    const cause = /** @type {Error} */ (error)\n    const message = new VFileMessage('Cannot parse `style` attribute', {\n      ancestors: state.ancestors,\n      cause,\n      ruleId: 'style',\n      source: 'hast-util-to-jsx-runtime'\n    })\n    message.file = state.filePath || undefined\n    message.url = docs + '#cannot-parse-style-attribute'\n\n    throw message\n  }\n}\n\n/**\n * Create a JSX name from a string.\n *\n * @param {State} state\n *   To do.\n * @param {string} name\n *   Name.\n * @param {boolean} allowExpression\n *   Allow member expressions and identifiers.\n * @returns {unknown}\n *   To do.\n */\nfunction findComponentFromName(state, name, allowExpression) {\n  /** @type {Identifier | Literal | MemberExpression} */\n  let result\n\n  if (!allowExpression) {\n    result = {type: 'Literal', value: name}\n  } else if (name.includes('.')) {\n    const identifiers = name.split('.')\n    let index = -1\n    /** @type {Identifier | Literal | MemberExpression | undefined} */\n    let node\n\n    while (++index < identifiers.length) {\n      /** @type {Identifier | Literal} */\n      const prop = isIdentifierName(identifiers[index])\n        ? {type: 'Identifier', name: identifiers[index]}\n        : {type: 'Literal', value: identifiers[index]}\n      node = node\n        ? {\n            type: 'MemberExpression',\n            object: node,\n            property: prop,\n            computed: Boolean(index && prop.type === 'Literal'),\n            optional: false\n          }\n        : prop\n    }\n\n    assert(node, 'always a result')\n    result = node\n  } else {\n    result =\n      isIdentifierName(name) && !/^[a-z]/.test(name)\n        ? {type: 'Identifier', name}\n        : {type: 'Literal', value: name}\n  }\n\n  // Only literals can be passed in `components` currently.\n  // No identifiers / member expressions.\n  if (result.type === 'Literal') {\n    const name = /** @type {string | number} */ (result.value)\n    return own.call(state.components, name) ? state.components[name] : name\n  }\n\n  // Assume component.\n  if (state.evaluater) {\n    return state.evaluater.evaluateExpression(result)\n  }\n\n  crashEstree(state)\n}\n\n/**\n * @param {State} state\n * @param {Position | undefined} [place]\n * @returns {never}\n */\nfunction crashEstree(state, place) {\n  const message = new VFileMessage(\n    'Cannot handle MDX estrees without `createEvaluater`',\n    {\n      ancestors: state.ancestors,\n      place,\n      ruleId: 'mdx-estree',\n      source: 'hast-util-to-jsx-runtime'\n    }\n  )\n  message.file = state.filePath || undefined\n  message.url = docs + '#cannot-handle-mdx-estrees-without-createevaluater'\n\n  throw message\n}\n\n/**\n * Transform a DOM casing style object to a CSS casing style object.\n *\n * @param {Style} domCasing\n * @returns {Style}\n */\nfunction transformStylesToCssCasing(domCasing) {\n  /** @type {Style} */\n  const cssCasing = {}\n  /** @type {string} */\n  let from\n\n  for (from in domCasing) {\n    if (own.call(domCasing, from)) {\n      cssCasing[transformStyleToCssCasing(from)] = domCasing[from]\n    }\n  }\n\n  return cssCasing\n}\n\n/**\n * Transform a DOM casing style field to a CSS casing style field.\n *\n * @param {string} from\n * @returns {string}\n */\nfunction transformStyleToCssCasing(from) {\n  let to = from.replace(cap, toDash)\n  // Handle `ms-xxx` -> `-ms-xxx`.\n  if (to.slice(0, 3) === 'ms-') to = '-' + to\n  return to\n}\n\n/**\n * Make `$0` dash cased.\n *\n * @param {string} $0\n *   Capitalized ASCII leter.\n * @returns {string}\n *   Dash and lower letter.\n */\nfunction toDash($0) {\n  return '-' + $0.toLowerCase()\n}\n","/**\n * HTML URL properties.\n *\n * Each key is a property name and each value is a list of tag names it applies\n * to or `null` if it applies to all elements.\n *\n * @type {Record<string, Array<string> | null>}\n */\nexport const urlAttributes = {\n  action: ['form'],\n  cite: ['blockquote', 'del', 'ins', 'q'],\n  data: ['object'],\n  formAction: ['button', 'input'],\n  href: ['a', 'area', 'base', 'link'],\n  icon: ['menuitem'],\n  itemId: null,\n  manifest: ['html'],\n  ping: ['a', 'area'],\n  poster: ['video'],\n  src: [\n    'audio',\n    'embed',\n    'iframe',\n    'img',\n    'input',\n    'script',\n    'source',\n    'track',\n    'video'\n  ]\n}\n","/**\n * @typedef {import('mdast').Nodes} Nodes\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean | null | undefined} [includeImageAlt=true]\n *   Whether to use `alt` for `image`s (default: `true`).\n * @property {boolean | null | undefined} [includeHtml=true]\n *   Whether to use `value` of HTML (default: `true`).\n */\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Get the text content of a node or list of nodes.\n *\n * Prefers the node’s plain-text fields, otherwise serializes its children,\n * and if the given value is an array, serialize the nodes in it.\n *\n * @param {unknown} [value]\n *   Thing to serialize, typically `Node`.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {string}\n *   Serialized `value`.\n */\nexport function toString(value, options) {\n  const settings = options || emptyOptions\n  const includeImageAlt =\n    typeof settings.includeImageAlt === 'boolean'\n      ? settings.includeImageAlt\n      : true\n  const includeHtml =\n    typeof settings.includeHtml === 'boolean' ? settings.includeHtml : true\n\n  return one(value, includeImageAlt, includeHtml)\n}\n\n/**\n * One node or several nodes.\n *\n * @param {unknown} value\n *   Thing to serialize.\n * @param {boolean} includeImageAlt\n *   Include image `alt`s.\n * @param {boolean} includeHtml\n *   Include HTML.\n * @returns {string}\n *   Serialized node.\n */\nfunction one(value, includeImageAlt, includeHtml) {\n  if (node(value)) {\n    if ('value' in value) {\n      return value.type === 'html' && !includeHtml ? '' : value.value\n    }\n\n    if (includeImageAlt && 'alt' in value && value.alt) {\n      return value.alt\n    }\n\n    if ('children' in value) {\n      return all(value.children, includeImageAlt, includeHtml)\n    }\n  }\n\n  if (Array.isArray(value)) {\n    return all(value, includeImageAlt, includeHtml)\n  }\n\n  return ''\n}\n\n/**\n * Serialize a list of nodes.\n *\n * @param {Array<unknown>} values\n *   Thing to serialize.\n * @param {boolean} includeImageAlt\n *   Include image `alt`s.\n * @param {boolean} includeHtml\n *   Include HTML.\n * @returns {string}\n *   Serialized nodes.\n */\nfunction all(values, includeImageAlt, includeHtml) {\n  /** @type {Array<string>} */\n  const result = []\n  let index = -1\n\n  while (++index < values.length) {\n    result[index] = one(values[index], includeImageAlt, includeHtml)\n  }\n\n  return result.join('')\n}\n\n/**\n * Check if `value` looks like a node.\n *\n * @param {unknown} value\n *   Thing.\n * @returns {value is Nodes}\n *   Whether `value` is a node.\n */\nfunction node(value) {\n  return Boolean(value && typeof value === 'object')\n}\n","/// <reference lib=\"dom\" />\n\n/* global document */\n\nconst element = document.createElement('i')\n\n/**\n * @param {string} value\n * @returns {string | false}\n */\nexport function decodeNamedCharacterReference(value) {\n  const characterReference = '&' + value + ';'\n  element.innerHTML = characterReference\n  const character = element.textContent\n\n  // Some named character references do not require the closing semicolon\n  // (`&not`, for instance), which leads to situations where parsing the assumed\n  // named reference of `&notit;` will result in the string `¬it;`.\n  // When we encounter a trailing semicolon after parsing, and the character\n  // reference to decode was not a semicolon (`&semi;`), we can assume that the\n  // matching was not complete.\n  if (\n    // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n    // yield `null`.\n    character.charCodeAt(character.length - 1) === 59 /* `;` */ &&\n    value !== 'semi'\n  ) {\n    return false\n  }\n\n  // If the decoded string is equal to the input, the character reference was\n  // not valid.\n  // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n  // yield `null`.\n  return character === characterReference ? false : character\n}\n","/**\n * Like `Array#splice`, but smarter for giant arrays.\n *\n * `Array#splice` takes all items to be inserted as individual argument which\n * causes a stack overflow in V8 when trying to insert 100k items for instance.\n *\n * Otherwise, this does not return the removed items, and takes `items` as an\n * array instead of rest parameters.\n *\n * @template {unknown} T\n *   Item type.\n * @param {Array<T>} list\n *   List to operate on.\n * @param {number} start\n *   Index to remove/insert at (can be negative).\n * @param {number} remove\n *   Number of items to remove.\n * @param {Array<T>} items\n *   Items to inject into `list`.\n * @returns {undefined}\n *   Nothing.\n */\nexport function splice(list, start, remove, items) {\n  const end = list.length;\n  let chunkStart = 0;\n  /** @type {Array<unknown>} */\n  let parameters;\n\n  // Make start between zero and `end` (included).\n  if (start < 0) {\n    start = -start > end ? 0 : end + start;\n  } else {\n    start = start > end ? end : start;\n  }\n  remove = remove > 0 ? remove : 0;\n\n  // No need to chunk the items if there’s only a couple (10k) items.\n  if (items.length < 10000) {\n    parameters = Array.from(items);\n    parameters.unshift(start, remove);\n    // @ts-expect-error Hush, it’s fine.\n    list.splice(...parameters);\n  } else {\n    // Delete `remove` items starting from `start`\n    if (remove) list.splice(start, remove);\n\n    // Insert the items in chunks to not cause stack overflows.\n    while (chunkStart < items.length) {\n      parameters = items.slice(chunkStart, chunkStart + 10000);\n      parameters.unshift(start, 0);\n      // @ts-expect-error Hush, it’s fine.\n      list.splice(...parameters);\n      chunkStart += 10000;\n      start += 10000;\n    }\n  }\n}\n\n/**\n * Append `items` (an array) at the end of `list` (another array).\n * When `list` was empty, returns `items` instead.\n *\n * This prevents a potentially expensive operation when `list` is empty,\n * and adds items in batches to prevent V8 from hanging.\n *\n * @template {unknown} T\n *   Item type.\n * @param {Array<T>} list\n *   List to operate on.\n * @param {Array<T>} items\n *   Items to add to `list`.\n * @returns {Array<T>}\n *   Either `list` or `items`.\n */\nexport function push(list, items) {\n  if (list.length > 0) {\n    splice(list, list.length, 0, items);\n    return list;\n  }\n  return items;\n}","/**\n * @import {\n *   Extension,\n *   Handles,\n *   HtmlExtension,\n *   NormalizedExtension\n * } from 'micromark-util-types'\n */\n\nimport {splice} from 'micromark-util-chunked'\n\nconst hasOwnProperty = {}.hasOwnProperty\n\n/**\n * Combine multiple syntax extensions into one.\n *\n * @param {ReadonlyArray<Extension>} extensions\n *   List of syntax extensions.\n * @returns {NormalizedExtension}\n *   A single combined extension.\n */\nexport function combineExtensions(extensions) {\n  /** @type {NormalizedExtension} */\n  const all = {}\n  let index = -1\n\n  while (++index < extensions.length) {\n    syntaxExtension(all, extensions[index])\n  }\n\n  return all\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {NormalizedExtension} all\n *   Extension to merge into.\n * @param {Extension} extension\n *   Extension to merge.\n * @returns {undefined}\n *   Nothing.\n */\nfunction syntaxExtension(all, extension) {\n  /** @type {keyof Extension} */\n  let hook\n\n  for (hook in extension) {\n    const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n    /** @type {Record<string, unknown>} */\n    const left = maybe || (all[hook] = {})\n    /** @type {Record<string, unknown> | undefined} */\n    const right = extension[hook]\n    /** @type {string} */\n    let code\n\n    if (right) {\n      for (code in right) {\n        if (!hasOwnProperty.call(left, code)) left[code] = []\n        const value = right[code]\n        constructs(\n          // @ts-expect-error Looks like a list.\n          left[code],\n          Array.isArray(value) ? value : value ? [value] : []\n        )\n      }\n    }\n  }\n}\n\n/**\n * Merge `list` into `existing` (both lists of constructs).\n * Mutates `existing`.\n *\n * @param {Array<unknown>} existing\n *   List of constructs to merge into.\n * @param {Array<unknown>} list\n *   List of constructs to merge.\n * @returns {undefined}\n *   Nothing.\n */\nfunction constructs(existing, list) {\n  let index = -1\n  /** @type {Array<unknown>} */\n  const before = []\n\n  while (++index < list.length) {\n    // @ts-expect-error Looks like an object.\n    ;(list[index].add === 'after' ? existing : before).push(list[index])\n  }\n\n  splice(existing, 0, 0, before)\n}\n\n/**\n * Combine multiple HTML extensions into one.\n *\n * @param {ReadonlyArray<HtmlExtension>} htmlExtensions\n *   List of HTML extensions.\n * @returns {HtmlExtension}\n *   Single combined HTML extension.\n */\nexport function combineHtmlExtensions(htmlExtensions) {\n  /** @type {HtmlExtension} */\n  const handlers = {}\n  let index = -1\n\n  while (++index < htmlExtensions.length) {\n    htmlExtension(handlers, htmlExtensions[index])\n  }\n\n  return handlers\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {HtmlExtension} all\n *   Extension to merge into.\n * @param {HtmlExtension} extension\n *   Extension to merge.\n * @returns {undefined}\n *   Nothing.\n */\nfunction htmlExtension(all, extension) {\n  /** @type {keyof HtmlExtension} */\n  let hook\n\n  for (hook in extension) {\n    const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n    const left = maybe || (all[hook] = {})\n    const right = extension[hook]\n    /** @type {keyof Handles} */\n    let type\n\n    if (right) {\n      for (type in right) {\n        // @ts-expect-error assume document vs regular handler are managed correctly.\n        left[type] = right[type]\n      }\n    }\n  }\n}\n","/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * Sort of like `String.fromCodePoint(Number.parseInt(value, base))`, but makes\n * non-characters and control characters safe.\n *\n * @param {string} value\n *   Value to decode.\n * @param {number} base\n *   Numeric base.\n * @returns {string}\n *   Character.\n */\nexport function decodeNumericCharacterReference(value, base) {\n  const code = Number.parseInt(value, base);\n  if (\n  // C0 except for HT, LF, FF, CR, space.\n  code < 9 || code === 11 || code > 13 && code < 32 ||\n  // Control character (DEL) of C0, and C1 controls.\n  code > 126 && code < 160 ||\n  // Lone high surrogates and low surrogates.\n  code > 55_295 && code < 57_344 ||\n  // Noncharacters.\n  code > 64_975 && code < 65_008 || /* eslint-disable no-bitwise */\n  (code & 65_535) === 65_535 || (code & 65_535) === 65_534 || /* eslint-enable no-bitwise */\n  // Out of range\n  code > 1_114_111) {\n    return \"\\uFFFD\";\n  }\n  return String.fromCodePoint(code);\n}","/**\n * Normalize an identifier (as found in references, definitions).\n *\n * Collapses markdown whitespace, trim, and then lower- and uppercase.\n *\n * Some characters are considered “uppercase”, such as U+03F4 (`ϴ`), but if their\n * lowercase counterpart (U+03B8 (`θ`)) is uppercased will result in a different\n * uppercase character (U+0398 (`Θ`)).\n * So, to get a canonical form, we perform both lower- and uppercase.\n *\n * Using uppercase last makes sure keys will never interact with default\n * prototypal values (such as `constructor`): nothing in the prototype of\n * `Object` is uppercase.\n *\n * @param {string} value\n *   Identifier to normalize.\n * @returns {string}\n *   Normalized identifier.\n */\nexport function normalizeIdentifier(value) {\n  return value\n  // Collapse markdown whitespace.\n  .replace(/[\\t\\n\\r ]+/g, \" \")\n  // Trim.\n  .replace(/^ | $/g, '')\n  // Some characters are considered “uppercase”, but if their lowercase\n  // counterpart is uppercased will result in a different uppercase\n  // character.\n  // Hence, to get that form, we perform both lower- and uppercase.\n  // Upper case makes sure keys will not interact with default prototypal\n  // methods: no method is uppercase.\n  .toLowerCase().toUpperCase();\n}","/**\n * @import {Code} from 'micromark-util-types'\n */\n\n/**\n * Check whether the character code represents an ASCII alpha (`a` through `z`,\n * case insensitive).\n *\n * An **ASCII alpha** is an ASCII upper alpha or ASCII lower alpha.\n *\n * An **ASCII upper alpha** is a character in the inclusive range U+0041 (`A`)\n * to U+005A (`Z`).\n *\n * An **ASCII lower alpha** is a character in the inclusive range U+0061 (`a`)\n * to U+007A (`z`).\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport const asciiAlpha = regexCheck(/[A-Za-z]/);\n\n/**\n * Check whether the character code represents an ASCII alphanumeric (`a`\n * through `z`, case insensitive, or `0` through `9`).\n *\n * An **ASCII alphanumeric** is an ASCII digit (see `asciiDigit`) or ASCII alpha\n * (see `asciiAlpha`).\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport const asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/);\n\n/**\n * Check whether the character code represents an ASCII atext.\n *\n * atext is an ASCII alphanumeric (see `asciiAlphanumeric`), or a character in\n * the inclusive ranges U+0023 NUMBER SIGN (`#`) to U+0027 APOSTROPHE (`'`),\n * U+002A ASTERISK (`*`), U+002B PLUS SIGN (`+`), U+002D DASH (`-`), U+002F\n * SLASH (`/`), U+003D EQUALS TO (`=`), U+003F QUESTION MARK (`?`), U+005E\n * CARET (`^`) to U+0060 GRAVE ACCENT (`` ` ``), or U+007B LEFT CURLY BRACE\n * (`{`) to U+007E TILDE (`~`).\n *\n * See:\n * **\\[RFC5322]**:\n * [Internet Message Format](https://tools.ietf.org/html/rfc5322).\n * P. Resnick.\n * IETF.\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport const asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/);\n\n/**\n * Check whether a character code is an ASCII control character.\n *\n * An **ASCII control** is a character in the inclusive range U+0000 NULL (NUL)\n * to U+001F (US), or U+007F (DEL).\n *\n * @param {Code} code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport function asciiControl(code) {\n  return (\n    // Special whitespace codes (which have negative values), C0 and Control\n    // character DEL\n    code !== null && (code < 32 || code === 127)\n  );\n}\n\n/**\n * Check whether the character code represents an ASCII digit (`0` through `9`).\n *\n * An **ASCII digit** is a character in the inclusive range U+0030 (`0`) to\n * U+0039 (`9`).\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport const asciiDigit = regexCheck(/\\d/);\n\n/**\n * Check whether the character code represents an ASCII hex digit (`a` through\n * `f`, case insensitive, or `0` through `9`).\n *\n * An **ASCII hex digit** is an ASCII digit (see `asciiDigit`), ASCII upper hex\n * digit, or an ASCII lower hex digit.\n *\n * An **ASCII upper hex digit** is a character in the inclusive range U+0041\n * (`A`) to U+0046 (`F`).\n *\n * An **ASCII lower hex digit** is a character in the inclusive range U+0061\n * (`a`) to U+0066 (`f`).\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport const asciiHexDigit = regexCheck(/[\\dA-Fa-f]/);\n\n/**\n * Check whether the character code represents ASCII punctuation.\n *\n * An **ASCII punctuation** is a character in the inclusive ranges U+0021\n * EXCLAMATION MARK (`!`) to U+002F SLASH (`/`), U+003A COLON (`:`) to U+0040 AT\n * SIGN (`@`), U+005B LEFT SQUARE BRACKET (`[`) to U+0060 GRAVE ACCENT\n * (`` ` ``), or U+007B LEFT CURLY BRACE (`{`) to U+007E TILDE (`~`).\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport const asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/);\n\n/**\n * Check whether a character code is a markdown line ending.\n *\n * A **markdown line ending** is the virtual characters M-0003 CARRIAGE RETURN\n * LINE FEED (CRLF), M-0004 LINE FEED (LF) and M-0005 CARRIAGE RETURN (CR).\n *\n * In micromark, the actual character U+000A LINE FEED (LF) and U+000D CARRIAGE\n * RETURN (CR) are replaced by these virtual characters depending on whether\n * they occurred together.\n *\n * @param {Code} code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport function markdownLineEnding(code) {\n  return code !== null && code < -2;\n}\n\n/**\n * Check whether a character code is a markdown line ending (see\n * `markdownLineEnding`) or markdown space (see `markdownSpace`).\n *\n * @param {Code} code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport function markdownLineEndingOrSpace(code) {\n  return code !== null && (code < 0 || code === 32);\n}\n\n/**\n * Check whether a character code is a markdown space.\n *\n * A **markdown space** is the concrete character U+0020 SPACE (SP) and the\n * virtual characters M-0001 VIRTUAL SPACE (VS) and M-0002 HORIZONTAL TAB (HT).\n *\n * In micromark, the actual character U+0009 CHARACTER TABULATION (HT) is\n * replaced by one M-0002 HORIZONTAL TAB (HT) and between 0 and 3 M-0001 VIRTUAL\n * SPACE (VS) characters, depending on the column at which the tab occurred.\n *\n * @param {Code} code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport function markdownSpace(code) {\n  return code === -2 || code === -1 || code === 32;\n}\n\n// Size note: removing ASCII from the regex and using `asciiPunctuation` here\n// In fact adds to the bundle size.\n/**\n * Check whether the character code represents Unicode punctuation.\n *\n * A **Unicode punctuation** is a character in the Unicode `Pc` (Punctuation,\n * Connector), `Pd` (Punctuation, Dash), `Pe` (Punctuation, Close), `Pf`\n * (Punctuation, Final quote), `Pi` (Punctuation, Initial quote), `Po`\n * (Punctuation, Other), or `Ps` (Punctuation, Open) categories, or an ASCII\n * punctuation (see `asciiPunctuation`).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n *   Code.\n * @returns\n *   Whether it matches.\n */\nexport const unicodePunctuation = regexCheck(/\\p{P}|\\p{S}/u);\n\n/**\n * Check whether the character code represents Unicode whitespace.\n *\n * Note that this does handle micromark specific markdown whitespace characters.\n * See `markdownLineEndingOrSpace` to check that.\n *\n * A **Unicode whitespace** is a character in the Unicode `Zs` (Separator,\n * Space) category, or U+0009 CHARACTER TABULATION (HT), U+000A LINE FEED (LF),\n * U+000C (FF), or U+000D CARRIAGE RETURN (CR) (**\\[UNICODE]**).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n *   Code.\n * @returns\n *   Whether it matches.\n */\nexport const unicodeWhitespace = regexCheck(/\\s/);\n\n/**\n * Create a code check from a regex.\n *\n * @param {RegExp} regex\n *   Expression.\n * @returns {(code: Code) => boolean}\n *   Check.\n */\nfunction regexCheck(regex) {\n  return check;\n\n  /**\n   * Check whether a code matches the bound regex.\n   *\n   * @param {Code} code\n   *   Character code.\n   * @returns {boolean}\n   *   Whether the character code matches the bound regex.\n   */\n  function check(code) {\n    return code !== null && code > -1 && regex.test(String.fromCharCode(code));\n  }\n}","import { asciiAlphanumeric } from 'micromark-util-character';\nimport { encode } from 'micromark-util-encode';\n/**\n * Make a value safe for injection as a URL.\n *\n * This encodes unsafe characters with percent-encoding and skips already\n * encoded sequences (see `normalizeUri`).\n * Further unsafe characters are encoded as character references (see\n * `micromark-util-encode`).\n *\n * A regex of allowed protocols can be given, in which case the URL is\n * sanitized.\n * For example, `/^(https?|ircs?|mailto|xmpp)$/i` can be used for `a[href]`, or\n * `/^https?$/i` for `img[src]` (this is what `github.com` allows).\n * If the URL includes an unknown protocol (one not matched by `protocol`, such\n * as a dangerous example, `javascript:`), the value is ignored.\n *\n * @param {string | null | undefined} url\n *   URI to sanitize.\n * @param {RegExp | null | undefined} [protocol]\n *   Allowed protocols.\n * @returns {string}\n *   Sanitized URI.\n */\nexport function sanitizeUri(url, protocol) {\n  const value = encode(normalizeUri(url || ''));\n  if (!protocol) {\n    return value;\n  }\n  const colon = value.indexOf(':');\n  const questionMark = value.indexOf('?');\n  const numberSign = value.indexOf('#');\n  const slash = value.indexOf('/');\n  if (\n  // If there is no protocol, it’s relative.\n  colon < 0 ||\n  // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n  slash > -1 && colon > slash || questionMark > -1 && colon > questionMark || numberSign > -1 && colon > numberSign ||\n  // It is a protocol, it should be allowed.\n  protocol.test(value.slice(0, colon))) {\n    return value;\n  }\n  return '';\n}\n\n/**\n * Normalize a URL.\n *\n * Encode unsafe characters with percent-encoding, skipping already encoded\n * sequences.\n *\n * @param {string} value\n *   URI to normalize.\n * @returns {string}\n *   Normalized URI.\n */\nexport function normalizeUri(value) {\n  /** @type {Array<string>} */\n  const result = [];\n  let index = -1;\n  let start = 0;\n  let skip = 0;\n  while (++index < value.length) {\n    const code = value.charCodeAt(index);\n    /** @type {string} */\n    let replace = '';\n\n    // A correct percent encoded value.\n    if (code === 37 && asciiAlphanumeric(value.charCodeAt(index + 1)) && asciiAlphanumeric(value.charCodeAt(index + 2))) {\n      skip = 2;\n    }\n    // ASCII.\n    else if (code < 128) {\n      if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) {\n        replace = String.fromCharCode(code);\n      }\n    }\n    // Astral.\n    else if (code > 55_295 && code < 57_344) {\n      const next = value.charCodeAt(index + 1);\n\n      // A correct surrogate pair.\n      if (code < 56_320 && next > 56_319 && next < 57_344) {\n        replace = String.fromCharCode(code, next);\n        skip = 1;\n      }\n      // Lone surrogate.\n      else {\n        replace = \"\\uFFFD\";\n      }\n    }\n    // Unicode.\n    else {\n      replace = String.fromCharCode(code);\n    }\n    if (replace) {\n      result.push(value.slice(start, index), encodeURIComponent(replace));\n      start = index + skip + 1;\n      replace = '';\n    }\n    if (skip) {\n      index += skip;\n      skip = 0;\n    }\n  }\n  return result.join('') + value.slice(start);\n}","/**\n * @import {Effects, State, TokenType} from 'micromark-util-types'\n */\n\nimport { markdownSpace } from 'micromark-util-character';\n\n// To do: implement `spaceOrTab`, `spaceOrTabMinMax`, `spaceOrTabWithOptions`.\n\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * *   spaces in markdown are often optional, in which case this factory can be\n *     used and `ok` will be switched to whether spaces were found or not\n * *   one line ending or space can be detected with `markdownSpace(code)` right\n *     before using `factorySpace`\n *\n * ###### Examples\n *\n * Where `␉` represents a tab (plus how much it expands) and `␠` represents a\n * single space.\n *\n * ```markdown\n * ␉\n * ␠␠␠␠\n * ␉␠\n * ```\n *\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @param {TokenType} type\n *   Type (`' \\t'`).\n * @param {number | undefined} [max=Infinity]\n *   Max (exclusive).\n * @returns {State}\n *   Start state.\n */\nexport function factorySpace(effects, ok, type, max) {\n  const limit = max ? max - 1 : Number.POSITIVE_INFINITY;\n  let size = 0;\n  return start;\n\n  /** @type {State} */\n  function start(code) {\n    if (markdownSpace(code)) {\n      effects.enter(type);\n      return prefix(code);\n    }\n    return ok(code);\n  }\n\n  /** @type {State} */\n  function prefix(code) {\n    if (markdownSpace(code) && size++ < limit) {\n      effects.consume(code);\n      return prefix;\n    }\n    effects.exit(type);\n    return ok(code);\n  }\n}","/**\n * @import {\n *   InitialConstruct,\n *   Initializer,\n *   State,\n *   TokenizeContext,\n *   Token\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {InitialConstruct} */\nexport const content = {\n  tokenize: initializeContent\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Initializer}\n *   Content.\n */\nfunction initializeContent(effects) {\n  const contentStart = effects.attempt(this.parser.constructs.contentInitial, afterContentStartConstruct, paragraphInitial);\n  /** @type {Token} */\n  let previous;\n  return contentStart;\n\n  /** @type {State} */\n  function afterContentStartConstruct(code) {\n    if (code === null) {\n      effects.consume(code);\n      return;\n    }\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return factorySpace(effects, contentStart, \"linePrefix\");\n  }\n\n  /** @type {State} */\n  function paragraphInitial(code) {\n    effects.enter(\"paragraph\");\n    return lineStart(code);\n  }\n\n  /** @type {State} */\n  function lineStart(code) {\n    const token = effects.enter(\"chunkText\", {\n      contentType: \"text\",\n      previous\n    });\n    if (previous) {\n      previous.next = token;\n    }\n    previous = token;\n    return data(code);\n  }\n\n  /** @type {State} */\n  function data(code) {\n    if (code === null) {\n      effects.exit(\"chunkText\");\n      effects.exit(\"paragraph\");\n      effects.consume(code);\n      return;\n    }\n    if (markdownLineEnding(code)) {\n      effects.consume(code);\n      effects.exit(\"chunkText\");\n      return lineStart;\n    }\n\n    // Data.\n    effects.consume(code);\n    return data;\n  }\n}","/**\n * @import {\n *   Construct,\n *   ContainerState,\n *   InitialConstruct,\n *   Initializer,\n *   Point,\n *   State,\n *   TokenizeContext,\n *   Tokenizer,\n *   Token\n * } from 'micromark-util-types'\n */\n\n/**\n * @typedef {[Construct, ContainerState]} StackItem\n *   Construct and its state.\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { splice } from 'micromark-util-chunked';\n/** @type {InitialConstruct} */\nexport const document = {\n  tokenize: initializeDocument\n};\n\n/** @type {Construct} */\nconst containerConstruct = {\n  tokenize: tokenizeContainer\n};\n\n/**\n * @this {TokenizeContext}\n *   Self.\n * @type {Initializer}\n *   Initializer.\n */\nfunction initializeDocument(effects) {\n  const self = this;\n  /** @type {Array<StackItem>} */\n  const stack = [];\n  let continued = 0;\n  /** @type {TokenizeContext | undefined} */\n  let childFlow;\n  /** @type {Token | undefined} */\n  let childToken;\n  /** @type {number} */\n  let lineStartOffset;\n  return start;\n\n  /** @type {State} */\n  function start(code) {\n    // First we iterate through the open blocks, starting with the root\n    // document, and descending through last children down to the last open\n    // block.\n    // Each block imposes a condition that the line must satisfy if the block is\n    // to remain open.\n    // For example, a block quote requires a `>` character.\n    // A paragraph requires a non-blank line.\n    // In this phase we may match all or just some of the open blocks.\n    // But we cannot close unmatched blocks yet, because we may have a lazy\n    // continuation line.\n    if (continued < stack.length) {\n      const item = stack[continued];\n      self.containerState = item[1];\n      return effects.attempt(item[0].continuation, documentContinue, checkNewContainers)(code);\n    }\n\n    // Done.\n    return checkNewContainers(code);\n  }\n\n  /** @type {State} */\n  function documentContinue(code) {\n    continued++;\n\n    // Note: this field is called `_closeFlow` but it also closes containers.\n    // Perhaps a good idea to rename it but it’s already used in the wild by\n    // extensions.\n    if (self.containerState._closeFlow) {\n      self.containerState._closeFlow = undefined;\n      if (childFlow) {\n        closeFlow();\n      }\n\n      // Note: this algorithm for moving events around is similar to the\n      // algorithm when dealing with lazy lines in `writeToChild`.\n      const indexBeforeExits = self.events.length;\n      let indexBeforeFlow = indexBeforeExits;\n      /** @type {Point | undefined} */\n      let point;\n\n      // Find the flow chunk.\n      while (indexBeforeFlow--) {\n        if (self.events[indexBeforeFlow][0] === 'exit' && self.events[indexBeforeFlow][1].type === \"chunkFlow\") {\n          point = self.events[indexBeforeFlow][1].end;\n          break;\n        }\n      }\n      exitContainers(continued);\n\n      // Fix positions.\n      let index = indexBeforeExits;\n      while (index < self.events.length) {\n        self.events[index][1].end = {\n          ...point\n        };\n        index++;\n      }\n\n      // Inject the exits earlier (they’re still also at the end).\n      splice(self.events, indexBeforeFlow + 1, 0, self.events.slice(indexBeforeExits));\n\n      // Discard the duplicate exits.\n      self.events.length = index;\n      return checkNewContainers(code);\n    }\n    return start(code);\n  }\n\n  /** @type {State} */\n  function checkNewContainers(code) {\n    // Next, after consuming the continuation markers for existing blocks, we\n    // look for new block starts (e.g. `>` for a block quote).\n    // If we encounter a new block start, we close any blocks unmatched in\n    // step 1 before creating the new block as a child of the last matched\n    // block.\n    if (continued === stack.length) {\n      // No need to `check` whether there’s a container, of `exitContainers`\n      // would be moot.\n      // We can instead immediately `attempt` to parse one.\n      if (!childFlow) {\n        return documentContinued(code);\n      }\n\n      // If we have concrete content, such as block HTML or fenced code,\n      // we can’t have containers “pierce” into them, so we can immediately\n      // start.\n      if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n        return flowStart(code);\n      }\n\n      // If we do have flow, it could still be a blank line,\n      // but we’d be interrupting it w/ a new container if there’s a current\n      // construct.\n      // To do: next major: remove `_gfmTableDynamicInterruptHack` (no longer\n      // needed in micromark-extension-gfm-table@1.0.6).\n      self.interrupt = Boolean(childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack);\n    }\n\n    // Check if there is a new container.\n    self.containerState = {};\n    return effects.check(containerConstruct, thereIsANewContainer, thereIsNoNewContainer)(code);\n  }\n\n  /** @type {State} */\n  function thereIsANewContainer(code) {\n    if (childFlow) closeFlow();\n    exitContainers(continued);\n    return documentContinued(code);\n  }\n\n  /** @type {State} */\n  function thereIsNoNewContainer(code) {\n    self.parser.lazy[self.now().line] = continued !== stack.length;\n    lineStartOffset = self.now().offset;\n    return flowStart(code);\n  }\n\n  /** @type {State} */\n  function documentContinued(code) {\n    // Try new containers.\n    self.containerState = {};\n    return effects.attempt(containerConstruct, containerContinue, flowStart)(code);\n  }\n\n  /** @type {State} */\n  function containerContinue(code) {\n    continued++;\n    stack.push([self.currentConstruct, self.containerState]);\n    // Try another.\n    return documentContinued(code);\n  }\n\n  /** @type {State} */\n  function flowStart(code) {\n    if (code === null) {\n      if (childFlow) closeFlow();\n      exitContainers(0);\n      effects.consume(code);\n      return;\n    }\n    childFlow = childFlow || self.parser.flow(self.now());\n    effects.enter(\"chunkFlow\", {\n      _tokenizer: childFlow,\n      contentType: \"flow\",\n      previous: childToken\n    });\n    return flowContinue(code);\n  }\n\n  /** @type {State} */\n  function flowContinue(code) {\n    if (code === null) {\n      writeToChild(effects.exit(\"chunkFlow\"), true);\n      exitContainers(0);\n      effects.consume(code);\n      return;\n    }\n    if (markdownLineEnding(code)) {\n      effects.consume(code);\n      writeToChild(effects.exit(\"chunkFlow\"));\n      // Get ready for the next line.\n      continued = 0;\n      self.interrupt = undefined;\n      return start;\n    }\n    effects.consume(code);\n    return flowContinue;\n  }\n\n  /**\n   * @param {Token} token\n   *   Token.\n   * @param {boolean | undefined} [endOfFile]\n   *   Whether the token is at the end of the file (default: `false`).\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function writeToChild(token, endOfFile) {\n    const stream = self.sliceStream(token);\n    if (endOfFile) stream.push(null);\n    token.previous = childToken;\n    if (childToken) childToken.next = token;\n    childToken = token;\n    childFlow.defineSkip(token.start);\n    childFlow.write(stream);\n\n    // Alright, so we just added a lazy line:\n    //\n    // ```markdown\n    // > a\n    // b.\n    //\n    // Or:\n    //\n    // > ~~~c\n    // d\n    //\n    // Or:\n    //\n    // > | e |\n    // f\n    // ```\n    //\n    // The construct in the second example (fenced code) does not accept lazy\n    // lines, so it marked itself as done at the end of its first line, and\n    // then the content construct parses `d`.\n    // Most constructs in markdown match on the first line: if the first line\n    // forms a construct, a non-lazy line can’t “unmake” it.\n    //\n    // The construct in the third example is potentially a GFM table, and\n    // those are *weird*.\n    // It *could* be a table, from the first line, if the following line\n    // matches a condition.\n    // In this case, that second line is lazy, which “unmakes” the first line\n    // and turns the whole into one content block.\n    //\n    // We’ve now parsed the non-lazy and the lazy line, and can figure out\n    // whether the lazy line started a new flow block.\n    // If it did, we exit the current containers between the two flow blocks.\n    if (self.parser.lazy[token.start.line]) {\n      let index = childFlow.events.length;\n      while (index--) {\n        if (\n        // The token starts before the line ending…\n        childFlow.events[index][1].start.offset < lineStartOffset && (\n        // …and either is not ended yet…\n        !childFlow.events[index][1].end ||\n        // …or ends after it.\n        childFlow.events[index][1].end.offset > lineStartOffset)) {\n          // Exit: there’s still something open, which means it’s a lazy line\n          // part of something.\n          return;\n        }\n      }\n\n      // Note: this algorithm for moving events around is similar to the\n      // algorithm when closing flow in `documentContinue`.\n      const indexBeforeExits = self.events.length;\n      let indexBeforeFlow = indexBeforeExits;\n      /** @type {boolean | undefined} */\n      let seen;\n      /** @type {Point | undefined} */\n      let point;\n\n      // Find the previous chunk (the one before the lazy line).\n      while (indexBeforeFlow--) {\n        if (self.events[indexBeforeFlow][0] === 'exit' && self.events[indexBeforeFlow][1].type === \"chunkFlow\") {\n          if (seen) {\n            point = self.events[indexBeforeFlow][1].end;\n            break;\n          }\n          seen = true;\n        }\n      }\n      exitContainers(continued);\n\n      // Fix positions.\n      index = indexBeforeExits;\n      while (index < self.events.length) {\n        self.events[index][1].end = {\n          ...point\n        };\n        index++;\n      }\n\n      // Inject the exits earlier (they’re still also at the end).\n      splice(self.events, indexBeforeFlow + 1, 0, self.events.slice(indexBeforeExits));\n\n      // Discard the duplicate exits.\n      self.events.length = index;\n    }\n  }\n\n  /**\n   * @param {number} size\n   *   Size.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function exitContainers(size) {\n    let index = stack.length;\n\n    // Exit open containers.\n    while (index-- > size) {\n      const entry = stack[index];\n      self.containerState = entry[1];\n      entry[0].exit.call(self, effects);\n    }\n    stack.length = size;\n  }\n  function closeFlow() {\n    childFlow.write([null]);\n    childToken = undefined;\n    childFlow = undefined;\n    self.containerState._closeFlow = undefined;\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n *   Tokenizer.\n */\nfunction tokenizeContainer(effects, ok, nok) {\n  // Always populated by defaults.\n\n  return factorySpace(effects, effects.attempt(this.parser.constructs.document, ok, nok), \"linePrefix\", this.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4);\n}","/**\n * @import {Code} from 'micromark-util-types'\n */\n\nimport { markdownLineEndingOrSpace, unicodePunctuation, unicodeWhitespace } from 'micromark-util-character';\n/**\n * Classify whether a code represents whitespace, punctuation, or something\n * else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * > 👉 **Note**: eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n *   Code.\n * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined}\n *   Group.\n */\nexport function classifyCharacter(code) {\n  if (code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n    return 1;\n  }\n  if (unicodePunctuation(code)) {\n    return 2;\n  }\n}","/**\n * @import {Event, Resolver, TokenizeContext} from 'micromark-util-types'\n */\n\n/**\n * Call all `resolveAll`s.\n *\n * @param {ReadonlyArray<{resolveAll?: Resolver | undefined}>} constructs\n *   List of constructs, optionally with `resolveAll`s.\n * @param {Array<Event>} events\n *   List of events.\n * @param {TokenizeContext} context\n *   Context used by `tokenize`.\n * @returns {Array<Event>}\n *   Changed events.\n */\nexport function resolveAll(constructs, events, context) {\n  /** @type {Array<Resolver>} */\n  const called = []\n  let index = -1\n\n  while (++index < constructs.length) {\n    const resolve = constructs[index].resolveAll\n\n    if (resolve && !called.includes(resolve)) {\n      events = resolve(events, context)\n      called.push(resolve)\n    }\n  }\n\n  return events\n}\n","/**\n * @import {\n *   Code,\n *   Construct,\n *   Event,\n *   Point,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer,\n *   Token\n * } from 'micromark-util-types'\n */\n\nimport { push, splice } from 'micromark-util-chunked';\nimport { classifyCharacter } from 'micromark-util-classify-character';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/** @type {Construct} */\nexport const attention = {\n  name: 'attention',\n  resolveAll: resolveAllAttention,\n  tokenize: tokenizeAttention\n};\n\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\n// eslint-disable-next-line complexity\nfunction resolveAllAttention(events, context) {\n  let index = -1;\n  /** @type {number} */\n  let open;\n  /** @type {Token} */\n  let group;\n  /** @type {Token} */\n  let text;\n  /** @type {Token} */\n  let openingSequence;\n  /** @type {Token} */\n  let closingSequence;\n  /** @type {number} */\n  let use;\n  /** @type {Array<Event>} */\n  let nextEvents;\n  /** @type {number} */\n  let offset;\n\n  // Walk through all events.\n  //\n  // Note: performance of this is fine on an mb of normal markdown, but it’s\n  // a bottleneck for malicious stuff.\n  while (++index < events.length) {\n    // Find a token that can close.\n    if (events[index][0] === 'enter' && events[index][1].type === 'attentionSequence' && events[index][1]._close) {\n      open = index;\n\n      // Now walk back to find an opener.\n      while (open--) {\n        // Find a token that can open the closer.\n        if (events[open][0] === 'exit' && events[open][1].type === 'attentionSequence' && events[open][1]._open &&\n        // If the markers are the same:\n        context.sliceSerialize(events[open][1]).charCodeAt(0) === context.sliceSerialize(events[index][1]).charCodeAt(0)) {\n          // If the opening can close or the closing can open,\n          // and the close size *is not* a multiple of three,\n          // but the sum of the opening and closing size *is* multiple of three,\n          // then don’t match.\n          if ((events[open][1]._close || events[index][1]._open) && (events[index][1].end.offset - events[index][1].start.offset) % 3 && !((events[open][1].end.offset - events[open][1].start.offset + events[index][1].end.offset - events[index][1].start.offset) % 3)) {\n            continue;\n          }\n\n          // Number of markers to use from the sequence.\n          use = events[open][1].end.offset - events[open][1].start.offset > 1 && events[index][1].end.offset - events[index][1].start.offset > 1 ? 2 : 1;\n          const start = {\n            ...events[open][1].end\n          };\n          const end = {\n            ...events[index][1].start\n          };\n          movePoint(start, -use);\n          movePoint(end, use);\n          openingSequence = {\n            type: use > 1 ? \"strongSequence\" : \"emphasisSequence\",\n            start,\n            end: {\n              ...events[open][1].end\n            }\n          };\n          closingSequence = {\n            type: use > 1 ? \"strongSequence\" : \"emphasisSequence\",\n            start: {\n              ...events[index][1].start\n            },\n            end\n          };\n          text = {\n            type: use > 1 ? \"strongText\" : \"emphasisText\",\n            start: {\n              ...events[open][1].end\n            },\n            end: {\n              ...events[index][1].start\n            }\n          };\n          group = {\n            type: use > 1 ? \"strong\" : \"emphasis\",\n            start: {\n              ...openingSequence.start\n            },\n            end: {\n              ...closingSequence.end\n            }\n          };\n          events[open][1].end = {\n            ...openingSequence.start\n          };\n          events[index][1].start = {\n            ...closingSequence.end\n          };\n          nextEvents = [];\n\n          // If there are more markers in the opening, add them before.\n          if (events[open][1].end.offset - events[open][1].start.offset) {\n            nextEvents = push(nextEvents, [['enter', events[open][1], context], ['exit', events[open][1], context]]);\n          }\n\n          // Opening.\n          nextEvents = push(nextEvents, [['enter', group, context], ['enter', openingSequence, context], ['exit', openingSequence, context], ['enter', text, context]]);\n\n          // Always populated by defaults.\n\n          // Between.\n          nextEvents = push(nextEvents, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + 1, index), context));\n\n          // Closing.\n          nextEvents = push(nextEvents, [['exit', text, context], ['enter', closingSequence, context], ['exit', closingSequence, context], ['exit', group, context]]);\n\n          // If there are more markers in the closing, add them after.\n          if (events[index][1].end.offset - events[index][1].start.offset) {\n            offset = 2;\n            nextEvents = push(nextEvents, [['enter', events[index][1], context], ['exit', events[index][1], context]]);\n          } else {\n            offset = 0;\n          }\n          splice(events, open - 1, index - open + 3, nextEvents);\n          index = open + nextEvents.length - offset - 2;\n          break;\n        }\n      }\n    }\n  }\n\n  // Remove remaining sequences.\n  index = -1;\n  while (++index < events.length) {\n    if (events[index][1].type === 'attentionSequence') {\n      events[index][1].type = 'data';\n    }\n  }\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeAttention(effects, ok) {\n  const attentionMarkers = this.parser.constructs.attentionMarkers.null;\n  const previous = this.previous;\n  const before = classifyCharacter(previous);\n\n  /** @type {NonNullable<Code>} */\n  let marker;\n  return start;\n\n  /**\n   * Before a sequence.\n   *\n   * ```markdown\n   * > | **\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    marker = code;\n    effects.enter('attentionSequence');\n    return inside(code);\n  }\n\n  /**\n   * In a sequence.\n   *\n   * ```markdown\n   * > | **\n   *     ^^\n   * ```\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    if (code === marker) {\n      effects.consume(code);\n      return inside;\n    }\n    const token = effects.exit('attentionSequence');\n\n    // To do: next major: move this to resolver, just like `markdown-rs`.\n    const after = classifyCharacter(code);\n\n    // Always populated by defaults.\n\n    const open = !after || after === 2 && before || attentionMarkers.includes(code);\n    const close = !before || before === 2 && after || attentionMarkers.includes(previous);\n    token._open = Boolean(marker === 42 ? open : open && (before || !close));\n    token._close = Boolean(marker === 42 ? close : close && (after || !open));\n    return ok(code);\n  }\n}\n\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It’s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n *   Point.\n * @param {number} offset\n *   Amount to move.\n * @returns {undefined}\n *   Nothing.\n */\nfunction movePoint(point, offset) {\n  point.column += offset;\n  point.offset += offset;\n  point._bufferIndex += offset;\n}","/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { asciiAlphanumeric, asciiAlpha, asciiAtext, asciiControl } from 'micromark-util-character';\n/** @type {Construct} */\nexport const autolink = {\n  name: 'autolink',\n  tokenize: tokenizeAutolink\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeAutolink(effects, ok, nok) {\n  let size = 0;\n  return start;\n\n  /**\n   * Start of an autolink.\n   *\n   * ```markdown\n   * > | a<https://example.com>b\n   *      ^\n   * > | a<user@example.com>b\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"autolink\");\n    effects.enter(\"autolinkMarker\");\n    effects.consume(code);\n    effects.exit(\"autolinkMarker\");\n    effects.enter(\"autolinkProtocol\");\n    return open;\n  }\n\n  /**\n   * After `<`, at protocol or atext.\n   *\n   * ```markdown\n   * > | a<https://example.com>b\n   *       ^\n   * > | a<user@example.com>b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (asciiAlpha(code)) {\n      effects.consume(code);\n      return schemeOrEmailAtext;\n    }\n    if (code === 64) {\n      return nok(code);\n    }\n    return emailAtext(code);\n  }\n\n  /**\n   * At second byte of protocol or atext.\n   *\n   * ```markdown\n   * > | a<https://example.com>b\n   *        ^\n   * > | a<user@example.com>b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function schemeOrEmailAtext(code) {\n    // ASCII alphanumeric and `+`, `-`, and `.`.\n    if (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) {\n      // Count the previous alphabetical from `open` too.\n      size = 1;\n      return schemeInsideOrEmailAtext(code);\n    }\n    return emailAtext(code);\n  }\n\n  /**\n   * In ambiguous protocol or atext.\n   *\n   * ```markdown\n   * > | a<https://example.com>b\n   *        ^\n   * > | a<user@example.com>b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function schemeInsideOrEmailAtext(code) {\n    if (code === 58) {\n      effects.consume(code);\n      size = 0;\n      return urlInside;\n    }\n\n    // ASCII alphanumeric and `+`, `-`, and `.`.\n    if ((code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) && size++ < 32) {\n      effects.consume(code);\n      return schemeInsideOrEmailAtext;\n    }\n    size = 0;\n    return emailAtext(code);\n  }\n\n  /**\n   * After protocol, in URL.\n   *\n   * ```markdown\n   * > | a<https://example.com>b\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function urlInside(code) {\n    if (code === 62) {\n      effects.exit(\"autolinkProtocol\");\n      effects.enter(\"autolinkMarker\");\n      effects.consume(code);\n      effects.exit(\"autolinkMarker\");\n      effects.exit(\"autolink\");\n      return ok;\n    }\n\n    // ASCII control, space, or `<`.\n    if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n      return nok(code);\n    }\n    effects.consume(code);\n    return urlInside;\n  }\n\n  /**\n   * In email atext.\n   *\n   * ```markdown\n   * > | a<user.name@example.com>b\n   *              ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailAtext(code) {\n    if (code === 64) {\n      effects.consume(code);\n      return emailAtSignOrDot;\n    }\n    if (asciiAtext(code)) {\n      effects.consume(code);\n      return emailAtext;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In label, after at-sign or dot.\n   *\n   * ```markdown\n   * > | a<user.name@example.com>b\n   *                 ^       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailAtSignOrDot(code) {\n    return asciiAlphanumeric(code) ? emailLabel(code) : nok(code);\n  }\n\n  /**\n   * In label, where `.` and `>` are allowed.\n   *\n   * ```markdown\n   * > | a<user.name@example.com>b\n   *                   ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailLabel(code) {\n    if (code === 46) {\n      effects.consume(code);\n      size = 0;\n      return emailAtSignOrDot;\n    }\n    if (code === 62) {\n      // Exit, then change the token type.\n      effects.exit(\"autolinkProtocol\").type = \"autolinkEmail\";\n      effects.enter(\"autolinkMarker\");\n      effects.consume(code);\n      effects.exit(\"autolinkMarker\");\n      effects.exit(\"autolink\");\n      return ok;\n    }\n    return emailValue(code);\n  }\n\n  /**\n   * In label, where `.` and `>` are *not* allowed.\n   *\n   * Though, this is also used in `emailLabel` to parse other values.\n   *\n   * ```markdown\n   * > | a<user.name@ex-ample.com>b\n   *                    ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailValue(code) {\n    // ASCII alphanumeric or `-`.\n    if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n      const next = code === 45 ? emailValue : emailLabel;\n      effects.consume(code);\n      return next;\n    }\n    return nok(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const blankLine = {\n  partial: true,\n  tokenize: tokenizeBlankLine\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLine(effects, ok, nok) {\n  return start;\n\n  /**\n   * Start of blank line.\n   *\n   * > 👉 **Note**: `␠` represents a space character.\n   *\n   * ```markdown\n   * > | ␠␠␊\n   *     ^\n   * > | ␊\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    return markdownSpace(code) ? factorySpace(effects, after, \"linePrefix\")(code) : after(code);\n  }\n\n  /**\n   * At eof/eol, after optional whitespace.\n   *\n   * > 👉 **Note**: `␠` represents a space character.\n   *\n   * ```markdown\n   * > | ␠␠␊\n   *       ^\n   * > | ␊\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    return code === null || markdownLineEnding(code) ? ok(code) : nok(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   Exiter,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const blockQuote = {\n  continuation: {\n    tokenize: tokenizeBlockQuoteContinuation\n  },\n  exit,\n  name: 'blockQuote',\n  tokenize: tokenizeBlockQuoteStart\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n  const self = this;\n  return start;\n\n  /**\n   * Start of block quote.\n   *\n   * ```markdown\n   * > | > a\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (code === 62) {\n      const state = self.containerState;\n      if (!state.open) {\n        effects.enter(\"blockQuote\", {\n          _container: true\n        });\n        state.open = true;\n      }\n      effects.enter(\"blockQuotePrefix\");\n      effects.enter(\"blockQuoteMarker\");\n      effects.consume(code);\n      effects.exit(\"blockQuoteMarker\");\n      return after;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `>`, before optional whitespace.\n   *\n   * ```markdown\n   * > | > a\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    if (markdownSpace(code)) {\n      effects.enter(\"blockQuotePrefixWhitespace\");\n      effects.consume(code);\n      effects.exit(\"blockQuotePrefixWhitespace\");\n      effects.exit(\"blockQuotePrefix\");\n      return ok;\n    }\n    effects.exit(\"blockQuotePrefix\");\n    return ok(code);\n  }\n}\n\n/**\n * Start of block quote continuation.\n *\n * ```markdown\n *   | > a\n * > | > b\n *     ^\n * ```\n *\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n  const self = this;\n  return contStart;\n\n  /**\n   * Start of block quote continuation.\n   *\n   * Also used to parse the first block quote opening.\n   *\n   * ```markdown\n   *   | > a\n   * > | > b\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function contStart(code) {\n    if (markdownSpace(code)) {\n      // Always populated by defaults.\n\n      return factorySpace(effects, contBefore, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code);\n    }\n    return contBefore(code);\n  }\n\n  /**\n   * At `>`, after optional whitespace.\n   *\n   * Also used to parse the first block quote opening.\n   *\n   * ```markdown\n   *   | > a\n   * > | > b\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function contBefore(code) {\n    return effects.attempt(blockQuote, ok, nok)(code);\n  }\n}\n\n/** @type {Exiter} */\nfunction exit(effects) {\n  effects.exit(\"blockQuote\");\n}","/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { asciiPunctuation } from 'micromark-util-character';\n/** @type {Construct} */\nexport const characterEscape = {\n  name: 'characterEscape',\n  tokenize: tokenizeCharacterEscape\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n  return start;\n\n  /**\n   * Start of character escape.\n   *\n   * ```markdown\n   * > | a\\*b\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"characterEscape\");\n    effects.enter(\"escapeMarker\");\n    effects.consume(code);\n    effects.exit(\"escapeMarker\");\n    return inside;\n  }\n\n  /**\n   * After `\\`, at punctuation.\n   *\n   * ```markdown\n   * > | a\\*b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    // ASCII punctuation.\n    if (asciiPunctuation(code)) {\n      effects.enter(\"characterEscapeValue\");\n      effects.consume(code);\n      effects.exit(\"characterEscapeValue\");\n      effects.exit(\"characterEscape\");\n      return ok;\n    }\n    return nok(code);\n  }\n}","/**\n * @import {\n *   Code,\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { asciiAlphanumeric, asciiDigit, asciiHexDigit } from 'micromark-util-character';\n/** @type {Construct} */\nexport const characterReference = {\n  name: 'characterReference',\n  tokenize: tokenizeCharacterReference\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterReference(effects, ok, nok) {\n  const self = this;\n  let size = 0;\n  /** @type {number} */\n  let max;\n  /** @type {(code: Code) => boolean} */\n  let test;\n  return start;\n\n  /**\n   * Start of character reference.\n   *\n   * ```markdown\n   * > | a&amp;b\n   *      ^\n   * > | a&#123;b\n   *      ^\n   * > | a&#x9;b\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"characterReference\");\n    effects.enter(\"characterReferenceMarker\");\n    effects.consume(code);\n    effects.exit(\"characterReferenceMarker\");\n    return open;\n  }\n\n  /**\n   * After `&`, at `#` for numeric references or alphanumeric for named\n   * references.\n   *\n   * ```markdown\n   * > | a&amp;b\n   *       ^\n   * > | a&#123;b\n   *       ^\n   * > | a&#x9;b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (code === 35) {\n      effects.enter(\"characterReferenceMarkerNumeric\");\n      effects.consume(code);\n      effects.exit(\"characterReferenceMarkerNumeric\");\n      return numeric;\n    }\n    effects.enter(\"characterReferenceValue\");\n    max = 31;\n    test = asciiAlphanumeric;\n    return value(code);\n  }\n\n  /**\n   * After `#`, at `x` for hexadecimals or digit for decimals.\n   *\n   * ```markdown\n   * > | a&#123;b\n   *        ^\n   * > | a&#x9;b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function numeric(code) {\n    if (code === 88 || code === 120) {\n      effects.enter(\"characterReferenceMarkerHexadecimal\");\n      effects.consume(code);\n      effects.exit(\"characterReferenceMarkerHexadecimal\");\n      effects.enter(\"characterReferenceValue\");\n      max = 6;\n      test = asciiHexDigit;\n      return value;\n    }\n    effects.enter(\"characterReferenceValue\");\n    max = 7;\n    test = asciiDigit;\n    return value(code);\n  }\n\n  /**\n   * After markers (`&#x`, `&#`, or `&`), in value, before `;`.\n   *\n   * The character reference kind defines what and how many characters are\n   * allowed.\n   *\n   * ```markdown\n   * > | a&amp;b\n   *       ^^^\n   * > | a&#123;b\n   *        ^^^\n   * > | a&#x9;b\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function value(code) {\n    if (code === 59 && size) {\n      const token = effects.exit(\"characterReferenceValue\");\n      if (test === asciiAlphanumeric && !decodeNamedCharacterReference(self.sliceSerialize(token))) {\n        return nok(code);\n      }\n\n      // To do: `markdown-rs` uses a different name:\n      // `CharacterReferenceMarkerSemi`.\n      effects.enter(\"characterReferenceMarker\");\n      effects.consume(code);\n      effects.exit(\"characterReferenceMarker\");\n      effects.exit(\"characterReference\");\n      return ok;\n    }\n    if (test(code) && size++ < max) {\n      effects.consume(code);\n      return value;\n    }\n    return nok(code);\n  }\n}","/**\n * @import {\n *   Code,\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nconst nonLazyContinuation = {\n  partial: true,\n  tokenize: tokenizeNonLazyContinuation\n};\n\n/** @type {Construct} */\nexport const codeFenced = {\n  concrete: true,\n  name: 'codeFenced',\n  tokenize: tokenizeCodeFenced\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCodeFenced(effects, ok, nok) {\n  const self = this;\n  /** @type {Construct} */\n  const closeStart = {\n    partial: true,\n    tokenize: tokenizeCloseStart\n  };\n  let initialPrefix = 0;\n  let sizeOpen = 0;\n  /** @type {NonNullable<Code>} */\n  let marker;\n  return start;\n\n  /**\n   * Start of code.\n   *\n   * ```markdown\n   * > | ~~~js\n   *     ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // To do: parse whitespace like `markdown-rs`.\n    return beforeSequenceOpen(code);\n  }\n\n  /**\n   * In opening fence, after prefix, at sequence.\n   *\n   * ```markdown\n   * > | ~~~js\n   *     ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function beforeSequenceOpen(code) {\n    const tail = self.events[self.events.length - 1];\n    initialPrefix = tail && tail[1].type === \"linePrefix\" ? tail[2].sliceSerialize(tail[1], true).length : 0;\n    marker = code;\n    effects.enter(\"codeFenced\");\n    effects.enter(\"codeFencedFence\");\n    effects.enter(\"codeFencedFenceSequence\");\n    return sequenceOpen(code);\n  }\n\n  /**\n   * In opening fence sequence.\n   *\n   * ```markdown\n   * > | ~~~js\n   *      ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceOpen(code) {\n    if (code === marker) {\n      sizeOpen++;\n      effects.consume(code);\n      return sequenceOpen;\n    }\n    if (sizeOpen < 3) {\n      return nok(code);\n    }\n    effects.exit(\"codeFencedFenceSequence\");\n    return markdownSpace(code) ? factorySpace(effects, infoBefore, \"whitespace\")(code) : infoBefore(code);\n  }\n\n  /**\n   * In opening fence, after the sequence (and optional whitespace), before info.\n   *\n   * ```markdown\n   * > | ~~~js\n   *        ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function infoBefore(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"codeFencedFence\");\n      return self.interrupt ? ok(code) : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code);\n    }\n    effects.enter(\"codeFencedFenceInfo\");\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return info(code);\n  }\n\n  /**\n   * In info.\n   *\n   * ```markdown\n   * > | ~~~js\n   *        ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function info(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"chunkString\");\n      effects.exit(\"codeFencedFenceInfo\");\n      return infoBefore(code);\n    }\n    if (markdownSpace(code)) {\n      effects.exit(\"chunkString\");\n      effects.exit(\"codeFencedFenceInfo\");\n      return factorySpace(effects, metaBefore, \"whitespace\")(code);\n    }\n    if (code === 96 && code === marker) {\n      return nok(code);\n    }\n    effects.consume(code);\n    return info;\n  }\n\n  /**\n   * In opening fence, after info and whitespace, before meta.\n   *\n   * ```markdown\n   * > | ~~~js eval\n   *           ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function metaBefore(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return infoBefore(code);\n    }\n    effects.enter(\"codeFencedFenceMeta\");\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return meta(code);\n  }\n\n  /**\n   * In meta.\n   *\n   * ```markdown\n   * > | ~~~js eval\n   *           ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function meta(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"chunkString\");\n      effects.exit(\"codeFencedFenceMeta\");\n      return infoBefore(code);\n    }\n    if (code === 96 && code === marker) {\n      return nok(code);\n    }\n    effects.consume(code);\n    return meta;\n  }\n\n  /**\n   * At eol/eof in code, before a non-lazy closing fence or content.\n   *\n   * ```markdown\n   * > | ~~~js\n   *          ^\n   * > | alert(1)\n   *             ^\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function atNonLazyBreak(code) {\n    return effects.attempt(closeStart, after, contentBefore)(code);\n  }\n\n  /**\n   * Before code content, not a closing fence, at eol.\n   *\n   * ```markdown\n   *   | ~~~js\n   * > | alert(1)\n   *             ^\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function contentBefore(code) {\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return contentStart;\n  }\n\n  /**\n   * Before code content, not a closing fence.\n   *\n   * ```markdown\n   *   | ~~~js\n   * > | alert(1)\n   *     ^\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function contentStart(code) {\n    return initialPrefix > 0 && markdownSpace(code) ? factorySpace(effects, beforeContentChunk, \"linePrefix\", initialPrefix + 1)(code) : beforeContentChunk(code);\n  }\n\n  /**\n   * Before code content, after optional prefix.\n   *\n   * ```markdown\n   *   | ~~~js\n   * > | alert(1)\n   *     ^\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function beforeContentChunk(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code);\n    }\n    effects.enter(\"codeFlowValue\");\n    return contentChunk(code);\n  }\n\n  /**\n   * In code content.\n   *\n   * ```markdown\n   *   | ~~~js\n   * > | alert(1)\n   *     ^^^^^^^^\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function contentChunk(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"codeFlowValue\");\n      return beforeContentChunk(code);\n    }\n    effects.consume(code);\n    return contentChunk;\n  }\n\n  /**\n   * After code.\n   *\n   * ```markdown\n   *   | ~~~js\n   *   | alert(1)\n   * > | ~~~\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    effects.exit(\"codeFenced\");\n    return ok(code);\n  }\n\n  /**\n   * @this {TokenizeContext}\n   *   Context.\n   * @type {Tokenizer}\n   */\n  function tokenizeCloseStart(effects, ok, nok) {\n    let size = 0;\n    return startBefore;\n\n    /**\n     *\n     *\n     * @type {State}\n     */\n    function startBefore(code) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      return start;\n    }\n\n    /**\n     * Before closing fence, at optional whitespace.\n     *\n     * ```markdown\n     *   | ~~~js\n     *   | alert(1)\n     * > | ~~~\n     *     ^\n     * ```\n     *\n     * @type {State}\n     */\n    function start(code) {\n      // Always populated by defaults.\n\n      // To do: `enter` here or in next state?\n      effects.enter(\"codeFencedFence\");\n      return markdownSpace(code) ? factorySpace(effects, beforeSequenceClose, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : beforeSequenceClose(code);\n    }\n\n    /**\n     * In closing fence, after optional whitespace, at sequence.\n     *\n     * ```markdown\n     *   | ~~~js\n     *   | alert(1)\n     * > | ~~~\n     *     ^\n     * ```\n     *\n     * @type {State}\n     */\n    function beforeSequenceClose(code) {\n      if (code === marker) {\n        effects.enter(\"codeFencedFenceSequence\");\n        return sequenceClose(code);\n      }\n      return nok(code);\n    }\n\n    /**\n     * In closing fence sequence.\n     *\n     * ```markdown\n     *   | ~~~js\n     *   | alert(1)\n     * > | ~~~\n     *     ^\n     * ```\n     *\n     * @type {State}\n     */\n    function sequenceClose(code) {\n      if (code === marker) {\n        size++;\n        effects.consume(code);\n        return sequenceClose;\n      }\n      if (size >= sizeOpen) {\n        effects.exit(\"codeFencedFenceSequence\");\n        return markdownSpace(code) ? factorySpace(effects, sequenceCloseAfter, \"whitespace\")(code) : sequenceCloseAfter(code);\n      }\n      return nok(code);\n    }\n\n    /**\n     * After closing fence sequence, after optional whitespace.\n     *\n     * ```markdown\n     *   | ~~~js\n     *   | alert(1)\n     * > | ~~~\n     *        ^\n     * ```\n     *\n     * @type {State}\n     */\n    function sequenceCloseAfter(code) {\n      if (code === null || markdownLineEnding(code)) {\n        effects.exit(\"codeFencedFence\");\n        return ok(code);\n      }\n      return nok(code);\n    }\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n  const self = this;\n  return start;\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (code === null) {\n      return nok(code);\n    }\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return lineStart;\n  }\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function lineStart(code) {\n    return self.parser.lazy[self.now().line] ? nok(code) : ok(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const codeIndented = {\n  name: 'codeIndented',\n  tokenize: tokenizeCodeIndented\n};\n\n/** @type {Construct} */\nconst furtherStart = {\n  partial: true,\n  tokenize: tokenizeFurtherStart\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCodeIndented(effects, ok, nok) {\n  const self = this;\n  return start;\n\n  /**\n   * Start of code (indented).\n   *\n   * > **Parsing note**: it is not needed to check if this first line is a\n   * > filled line (that it has a non-whitespace character), because blank lines\n   * > are parsed already, so we never run into that.\n   *\n   * ```markdown\n   * > |     aaa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // To do: manually check if interrupting like `markdown-rs`.\n\n    effects.enter(\"codeIndented\");\n    // To do: use an improved `space_or_tab` function like `markdown-rs`,\n    // so that we can drop the next state.\n    return factorySpace(effects, afterPrefix, \"linePrefix\", 4 + 1)(code);\n  }\n\n  /**\n   * At start, after 1 or 4 spaces.\n   *\n   * ```markdown\n   * > |     aaa\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1];\n    return tail && tail[1].type === \"linePrefix\" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? atBreak(code) : nok(code);\n  }\n\n  /**\n   * At a break.\n   *\n   * ```markdown\n   * > |     aaa\n   *         ^  ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atBreak(code) {\n    if (code === null) {\n      return after(code);\n    }\n    if (markdownLineEnding(code)) {\n      return effects.attempt(furtherStart, atBreak, after)(code);\n    }\n    effects.enter(\"codeFlowValue\");\n    return inside(code);\n  }\n\n  /**\n   * In code content.\n   *\n   * ```markdown\n   * > |     aaa\n   *         ^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"codeFlowValue\");\n      return atBreak(code);\n    }\n    effects.consume(code);\n    return inside;\n  }\n\n  /** @type {State} */\n  function after(code) {\n    effects.exit(\"codeIndented\");\n    // To do: allow interrupting like `markdown-rs`.\n    // Feel free to interrupt.\n    // tokenizer.interrupt = false\n    return ok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeFurtherStart(effects, ok, nok) {\n  const self = this;\n  return furtherStart;\n\n  /**\n   * At eol, trying to parse another indent.\n   *\n   * ```markdown\n   * > |     aaa\n   *            ^\n   *   |     bbb\n   * ```\n   *\n   * @type {State}\n   */\n  function furtherStart(code) {\n    // To do: improve `lazy` / `pierce` handling.\n    // If this is a lazy line, it can’t be code.\n    if (self.parser.lazy[self.now().line]) {\n      return nok(code);\n    }\n    if (markdownLineEnding(code)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      return furtherStart;\n    }\n\n    // To do: the code here in `micromark-js` is a bit different from\n    // `markdown-rs` because there it can attempt spaces.\n    // We can’t yet.\n    //\n    // To do: use an improved `space_or_tab` function like `markdown-rs`,\n    // so that we can drop the next state.\n    return factorySpace(effects, afterPrefix, \"linePrefix\", 4 + 1)(code);\n  }\n\n  /**\n   * At start, after 1 or 4 spaces.\n   *\n   * ```markdown\n   * > |     aaa\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1];\n    return tail && tail[1].type === \"linePrefix\" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? ok(code) : markdownLineEnding(code) ? furtherStart(code) : nok(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   Previous,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer,\n *   Token\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const codeText = {\n  name: 'codeText',\n  previous,\n  resolve: resolveCodeText,\n  tokenize: tokenizeCodeText\n};\n\n// To do: next major: don’t resolve, like `markdown-rs`.\n/** @type {Resolver} */\nfunction resolveCodeText(events) {\n  let tailExitIndex = events.length - 4;\n  let headEnterIndex = 3;\n  /** @type {number} */\n  let index;\n  /** @type {number | undefined} */\n  let enter;\n\n  // If we start and end with an EOL or a space.\n  if ((events[headEnterIndex][1].type === \"lineEnding\" || events[headEnterIndex][1].type === 'space') && (events[tailExitIndex][1].type === \"lineEnding\" || events[tailExitIndex][1].type === 'space')) {\n    index = headEnterIndex;\n\n    // And we have data.\n    while (++index < tailExitIndex) {\n      if (events[index][1].type === \"codeTextData\") {\n        // Then we have padding.\n        events[headEnterIndex][1].type = \"codeTextPadding\";\n        events[tailExitIndex][1].type = \"codeTextPadding\";\n        headEnterIndex += 2;\n        tailExitIndex -= 2;\n        break;\n      }\n    }\n  }\n\n  // Merge adjacent spaces and data.\n  index = headEnterIndex - 1;\n  tailExitIndex++;\n  while (++index <= tailExitIndex) {\n    if (enter === undefined) {\n      if (index !== tailExitIndex && events[index][1].type !== \"lineEnding\") {\n        enter = index;\n      }\n    } else if (index === tailExitIndex || events[index][1].type === \"lineEnding\") {\n      events[enter][1].type = \"codeTextData\";\n      if (index !== enter + 2) {\n        events[enter][1].end = events[index - 1][1].end;\n        events.splice(enter + 2, index - enter - 2);\n        tailExitIndex -= index - enter - 2;\n        index = enter + 2;\n      }\n      enter = undefined;\n    }\n  }\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Previous}\n */\nfunction previous(code) {\n  // If there is a previous code, there will always be a tail.\n  return code !== 96 || this.events[this.events.length - 1][1].type === \"characterEscape\";\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCodeText(effects, ok, nok) {\n  const self = this;\n  let sizeOpen = 0;\n  /** @type {number} */\n  let size;\n  /** @type {Token} */\n  let token;\n  return start;\n\n  /**\n   * Start of code (text).\n   *\n   * ```markdown\n   * > | `a`\n   *     ^\n   * > | \\`a`\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"codeText\");\n    effects.enter(\"codeTextSequence\");\n    return sequenceOpen(code);\n  }\n\n  /**\n   * In opening sequence.\n   *\n   * ```markdown\n   * > | `a`\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceOpen(code) {\n    if (code === 96) {\n      effects.consume(code);\n      sizeOpen++;\n      return sequenceOpen;\n    }\n    effects.exit(\"codeTextSequence\");\n    return between(code);\n  }\n\n  /**\n   * Between something and something else.\n   *\n   * ```markdown\n   * > | `a`\n   *      ^^\n   * ```\n   *\n   * @type {State}\n   */\n  function between(code) {\n    // EOF.\n    if (code === null) {\n      return nok(code);\n    }\n\n    // To do: next major: don’t do spaces in resolve, but when compiling,\n    // like `markdown-rs`.\n    // Tabs don’t work, and virtual spaces don’t make sense.\n    if (code === 32) {\n      effects.enter('space');\n      effects.consume(code);\n      effects.exit('space');\n      return between;\n    }\n\n    // Closing fence? Could also be data.\n    if (code === 96) {\n      token = effects.enter(\"codeTextSequence\");\n      size = 0;\n      return sequenceClose(code);\n    }\n    if (markdownLineEnding(code)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      return between;\n    }\n\n    // Data.\n    effects.enter(\"codeTextData\");\n    return data(code);\n  }\n\n  /**\n   * In data.\n   *\n   * ```markdown\n   * > | `a`\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function data(code) {\n    if (code === null || code === 32 || code === 96 || markdownLineEnding(code)) {\n      effects.exit(\"codeTextData\");\n      return between(code);\n    }\n    effects.consume(code);\n    return data;\n  }\n\n  /**\n   * In closing sequence.\n   *\n   * ```markdown\n   * > | `a`\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceClose(code) {\n    // More.\n    if (code === 96) {\n      effects.consume(code);\n      size++;\n      return sequenceClose;\n    }\n\n    // Done!\n    if (size === sizeOpen) {\n      effects.exit(\"codeTextSequence\");\n      effects.exit(\"codeText\");\n      return ok(code);\n    }\n\n    // More or less accents: mark as data.\n    token.type = \"codeTextData\";\n    return data(code);\n  }\n}","/**\n * Some of the internal operations of micromark do lots of editing\n * operations on very large arrays. This runs into problems with two\n * properties of most circa-2020 JavaScript interpreters:\n *\n *  - Array-length modifications at the high end of an array (push/pop) are\n *    expected to be common and are implemented in (amortized) time\n *    proportional to the number of elements added or removed, whereas\n *    other operations (shift/unshift and splice) are much less efficient.\n *  - Function arguments are passed on the stack, so adding tens of thousands\n *    of elements to an array with `arr.push(...newElements)` will frequently\n *    cause stack overflows. (see <https://stackoverflow.com/questions/22123769/rangeerror-maximum-call-stack-size-exceeded-why>)\n *\n * SpliceBuffers are an implementation of gap buffers, which are a\n * generalization of the \"queue made of two stacks\" idea. The splice buffer\n * maintains a cursor, and moving the cursor has cost proportional to the\n * distance the cursor moves, but inserting, deleting, or splicing in\n * new information at the cursor is as efficient as the push/pop operation.\n * This allows for an efficient sequence of splices (or pushes, pops, shifts,\n * or unshifts) as long such edits happen at the same part of the array or\n * generally sweep through the array from the beginning to the end.\n *\n * The interface for splice buffers also supports large numbers of inputs by\n * passing a single array argument rather passing multiple arguments on the\n * function call stack.\n *\n * @template T\n *   Item type.\n */\nexport class SpliceBuffer {\n  /**\n   * @param {ReadonlyArray<T> | null | undefined} [initial]\n   *   Initial items (optional).\n   * @returns\n   *   Splice buffer.\n   */\n  constructor(initial) {\n    /** @type {Array<T>} */\n    this.left = initial ? [...initial] : [];\n    /** @type {Array<T>} */\n    this.right = [];\n  }\n\n  /**\n   * Array access;\n   * does not move the cursor.\n   *\n   * @param {number} index\n   *   Index.\n   * @return {T}\n   *   Item.\n   */\n  get(index) {\n    if (index < 0 || index >= this.left.length + this.right.length) {\n      throw new RangeError('Cannot access index `' + index + '` in a splice buffer of size `' + (this.left.length + this.right.length) + '`');\n    }\n    if (index < this.left.length) return this.left[index];\n    return this.right[this.right.length - index + this.left.length - 1];\n  }\n\n  /**\n   * The length of the splice buffer, one greater than the largest index in the\n   * array.\n   */\n  get length() {\n    return this.left.length + this.right.length;\n  }\n\n  /**\n   * Remove and return `list[0]`;\n   * moves the cursor to `0`.\n   *\n   * @returns {T | undefined}\n   *   Item, optional.\n   */\n  shift() {\n    this.setCursor(0);\n    return this.right.pop();\n  }\n\n  /**\n   * Slice the buffer to get an array;\n   * does not move the cursor.\n   *\n   * @param {number} start\n   *   Start.\n   * @param {number | null | undefined} [end]\n   *   End (optional).\n   * @returns {Array<T>}\n   *   Array of items.\n   */\n  slice(start, end) {\n    /** @type {number} */\n    const stop = end === null || end === undefined ? Number.POSITIVE_INFINITY : end;\n    if (stop < this.left.length) {\n      return this.left.slice(start, stop);\n    }\n    if (start > this.left.length) {\n      return this.right.slice(this.right.length - stop + this.left.length, this.right.length - start + this.left.length).reverse();\n    }\n    return this.left.slice(start).concat(this.right.slice(this.right.length - stop + this.left.length).reverse());\n  }\n\n  /**\n   * Mimics the behavior of Array.prototype.splice() except for the change of\n   * interface necessary to avoid segfaults when patching in very large arrays.\n   *\n   * This operation moves cursor is moved to `start` and results in the cursor\n   * placed after any inserted items.\n   *\n   * @param {number} start\n   *   Start;\n   *   zero-based index at which to start changing the array;\n   *   negative numbers count backwards from the end of the array and values\n   *   that are out-of bounds are clamped to the appropriate end of the array.\n   * @param {number | null | undefined} [deleteCount=0]\n   *   Delete count (default: `0`);\n   *   maximum number of elements to delete, starting from start.\n   * @param {Array<T> | null | undefined} [items=[]]\n   *   Items to include in place of the deleted items (default: `[]`).\n   * @return {Array<T>}\n   *   Any removed items.\n   */\n  splice(start, deleteCount, items) {\n    /** @type {number} */\n    const count = deleteCount || 0;\n    this.setCursor(Math.trunc(start));\n    const removed = this.right.splice(this.right.length - count, Number.POSITIVE_INFINITY);\n    if (items) chunkedPush(this.left, items);\n    return removed.reverse();\n  }\n\n  /**\n   * Remove and return the highest-numbered item in the array, so\n   * `list[list.length - 1]`;\n   * Moves the cursor to `length`.\n   *\n   * @returns {T | undefined}\n   *   Item, optional.\n   */\n  pop() {\n    this.setCursor(Number.POSITIVE_INFINITY);\n    return this.left.pop();\n  }\n\n  /**\n   * Inserts a single item to the high-numbered side of the array;\n   * moves the cursor to `length`.\n   *\n   * @param {T} item\n   *   Item.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  push(item) {\n    this.setCursor(Number.POSITIVE_INFINITY);\n    this.left.push(item);\n  }\n\n  /**\n   * Inserts many items to the high-numbered side of the array.\n   * Moves the cursor to `length`.\n   *\n   * @param {Array<T>} items\n   *   Items.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  pushMany(items) {\n    this.setCursor(Number.POSITIVE_INFINITY);\n    chunkedPush(this.left, items);\n  }\n\n  /**\n   * Inserts a single item to the low-numbered side of the array;\n   * Moves the cursor to `0`.\n   *\n   * @param {T} item\n   *   Item.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  unshift(item) {\n    this.setCursor(0);\n    this.right.push(item);\n  }\n\n  /**\n   * Inserts many items to the low-numbered side of the array;\n   * moves the cursor to `0`.\n   *\n   * @param {Array<T>} items\n   *   Items.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  unshiftMany(items) {\n    this.setCursor(0);\n    chunkedPush(this.right, items.reverse());\n  }\n\n  /**\n   * Move the cursor to a specific position in the array. Requires\n   * time proportional to the distance moved.\n   *\n   * If `n < 0`, the cursor will end up at the beginning.\n   * If `n > length`, the cursor will end up at the end.\n   *\n   * @param {number} n\n   *   Position.\n   * @return {undefined}\n   *   Nothing.\n   */\n  setCursor(n) {\n    if (n === this.left.length || n > this.left.length && this.right.length === 0 || n < 0 && this.left.length === 0) return;\n    if (n < this.left.length) {\n      // Move cursor to the this.left\n      const removed = this.left.splice(n, Number.POSITIVE_INFINITY);\n      chunkedPush(this.right, removed.reverse());\n    } else {\n      // Move cursor to the this.right\n      const removed = this.right.splice(this.left.length + this.right.length - n, Number.POSITIVE_INFINITY);\n      chunkedPush(this.left, removed.reverse());\n    }\n  }\n}\n\n/**\n * Avoid stack overflow by pushing items onto the stack in segments\n *\n * @template T\n *   Item type.\n * @param {Array<T>} list\n *   List to inject into.\n * @param {ReadonlyArray<T>} right\n *   Items to inject.\n * @return {undefined}\n *   Nothing.\n */\nfunction chunkedPush(list, right) {\n  /** @type {number} */\n  let chunkStart = 0;\n  if (right.length < 10000) {\n    list.push(...right);\n  } else {\n    while (chunkStart < right.length) {\n      list.push(...right.slice(chunkStart, chunkStart + 10000));\n      chunkStart += 10000;\n    }\n  }\n}","/**\n * @import {Chunk, Event, Token} from 'micromark-util-types'\n */\n\nimport { splice } from 'micromark-util-chunked';\nimport { SpliceBuffer } from './lib/splice-buffer.js';\n\n// Hidden API exposed for testing.\nexport { SpliceBuffer } from './lib/splice-buffer.js';\n\n/**\n * Tokenize subcontent.\n *\n * @param {Array<Event>} eventsArray\n *   List of events.\n * @returns {boolean}\n *   Whether subtokens were found.\n */\n// eslint-disable-next-line complexity\nexport function subtokenize(eventsArray) {\n  /** @type {Record<string, number>} */\n  const jumps = {};\n  let index = -1;\n  /** @type {Event} */\n  let event;\n  /** @type {number | undefined} */\n  let lineIndex;\n  /** @type {number} */\n  let otherIndex;\n  /** @type {Event} */\n  let otherEvent;\n  /** @type {Array<Event>} */\n  let parameters;\n  /** @type {Array<Event>} */\n  let subevents;\n  /** @type {boolean | undefined} */\n  let more;\n  const events = new SpliceBuffer(eventsArray);\n  while (++index < events.length) {\n    while (index in jumps) {\n      index = jumps[index];\n    }\n    event = events.get(index);\n\n    // Add a hook for the GFM tasklist extension, which needs to know if text\n    // is in the first content of a list item.\n    if (index && event[1].type === \"chunkFlow\" && events.get(index - 1)[1].type === \"listItemPrefix\") {\n      subevents = event[1]._tokenizer.events;\n      otherIndex = 0;\n      if (otherIndex < subevents.length && subevents[otherIndex][1].type === \"lineEndingBlank\") {\n        otherIndex += 2;\n      }\n      if (otherIndex < subevents.length && subevents[otherIndex][1].type === \"content\") {\n        while (++otherIndex < subevents.length) {\n          if (subevents[otherIndex][1].type === \"content\") {\n            break;\n          }\n          if (subevents[otherIndex][1].type === \"chunkText\") {\n            subevents[otherIndex][1]._isInFirstContentOfListItem = true;\n            otherIndex++;\n          }\n        }\n      }\n    }\n\n    // Enter.\n    if (event[0] === 'enter') {\n      if (event[1].contentType) {\n        Object.assign(jumps, subcontent(events, index));\n        index = jumps[index];\n        more = true;\n      }\n    }\n    // Exit.\n    else if (event[1]._container) {\n      otherIndex = index;\n      lineIndex = undefined;\n      while (otherIndex--) {\n        otherEvent = events.get(otherIndex);\n        if (otherEvent[1].type === \"lineEnding\" || otherEvent[1].type === \"lineEndingBlank\") {\n          if (otherEvent[0] === 'enter') {\n            if (lineIndex) {\n              events.get(lineIndex)[1].type = \"lineEndingBlank\";\n            }\n            otherEvent[1].type = \"lineEnding\";\n            lineIndex = otherIndex;\n          }\n        } else if (otherEvent[1].type === \"linePrefix\" || otherEvent[1].type === \"listItemIndent\") {\n          // Move past.\n        } else {\n          break;\n        }\n      }\n      if (lineIndex) {\n        // Fix position.\n        event[1].end = {\n          ...events.get(lineIndex)[1].start\n        };\n\n        // Switch container exit w/ line endings.\n        parameters = events.slice(lineIndex, index);\n        parameters.unshift(event);\n        events.splice(lineIndex, index - lineIndex + 1, parameters);\n      }\n    }\n  }\n\n  // The changes to the `events` buffer must be copied back into the eventsArray\n  splice(eventsArray, 0, Number.POSITIVE_INFINITY, events.slice(0));\n  return !more;\n}\n\n/**\n * Tokenize embedded tokens.\n *\n * @param {SpliceBuffer<Event>} events\n *   Events.\n * @param {number} eventIndex\n *   Index.\n * @returns {Record<string, number>}\n *   Gaps.\n */\nfunction subcontent(events, eventIndex) {\n  const token = events.get(eventIndex)[1];\n  const context = events.get(eventIndex)[2];\n  let startPosition = eventIndex - 1;\n  /** @type {Array<number>} */\n  const startPositions = [];\n  let tokenizer = token._tokenizer;\n  if (!tokenizer) {\n    tokenizer = context.parser[token.contentType](token.start);\n    if (token._contentTypeTextTrailing) {\n      tokenizer._contentTypeTextTrailing = true;\n    }\n  }\n  const childEvents = tokenizer.events;\n  /** @type {Array<[number, number]>} */\n  const jumps = [];\n  /** @type {Record<string, number>} */\n  const gaps = {};\n  /** @type {Array<Chunk>} */\n  let stream;\n  /** @type {Token | undefined} */\n  let previous;\n  let index = -1;\n  /** @type {Token | undefined} */\n  let current = token;\n  let adjust = 0;\n  let start = 0;\n  const breaks = [start];\n\n  // Loop forward through the linked tokens to pass them in order to the\n  // subtokenizer.\n  while (current) {\n    // Find the position of the event for this token.\n    while (events.get(++startPosition)[1] !== current) {\n      // Empty.\n    }\n    startPositions.push(startPosition);\n    if (!current._tokenizer) {\n      stream = context.sliceStream(current);\n      if (!current.next) {\n        stream.push(null);\n      }\n      if (previous) {\n        tokenizer.defineSkip(current.start);\n      }\n      if (current._isInFirstContentOfListItem) {\n        tokenizer._gfmTasklistFirstContentOfListItem = true;\n      }\n      tokenizer.write(stream);\n      if (current._isInFirstContentOfListItem) {\n        tokenizer._gfmTasklistFirstContentOfListItem = undefined;\n      }\n    }\n\n    // Unravel the next token.\n    previous = current;\n    current = current.next;\n  }\n\n  // Now, loop back through all events (and linked tokens), to figure out which\n  // parts belong where.\n  current = token;\n  while (++index < childEvents.length) {\n    if (\n    // Find a void token that includes a break.\n    childEvents[index][0] === 'exit' && childEvents[index - 1][0] === 'enter' && childEvents[index][1].type === childEvents[index - 1][1].type && childEvents[index][1].start.line !== childEvents[index][1].end.line) {\n      start = index + 1;\n      breaks.push(start);\n      // Help GC.\n      current._tokenizer = undefined;\n      current.previous = undefined;\n      current = current.next;\n    }\n  }\n\n  // Help GC.\n  tokenizer.events = [];\n\n  // If there’s one more token (which is the cases for lines that end in an\n  // EOF), that’s perfect: the last point we found starts it.\n  // If there isn’t then make sure any remaining content is added to it.\n  if (current) {\n    // Help GC.\n    current._tokenizer = undefined;\n    current.previous = undefined;\n  } else {\n    breaks.pop();\n  }\n\n  // Now splice the events from the subtokenizer into the current events,\n  // moving back to front so that splice indices aren’t affected.\n  index = breaks.length;\n  while (index--) {\n    const slice = childEvents.slice(breaks[index], breaks[index + 1]);\n    const start = startPositions.pop();\n    jumps.push([start, start + slice.length - 1]);\n    events.splice(start, 2, slice);\n  }\n  jumps.reverse();\n  index = -1;\n  while (++index < jumps.length) {\n    gaps[adjust + jumps[index][0]] = adjust + jumps[index][1];\n    adjust += jumps[index][1] - jumps[index][0] - 1;\n  }\n  return gaps;\n}","/**\n * @import {\n *   Construct,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer,\n *   Token\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { subtokenize } from 'micromark-util-subtokenize';\n/**\n * No name because it must not be turned off.\n * @type {Construct}\n */\nexport const content = {\n  resolve: resolveContent,\n  tokenize: tokenizeContent\n};\n\n/** @type {Construct} */\nconst continuationConstruct = {\n  partial: true,\n  tokenize: tokenizeContinuation\n};\n\n/**\n * Content is transparent: it’s parsed right now. That way, definitions are also\n * parsed right now: before text in paragraphs (specifically, media) are parsed.\n *\n * @type {Resolver}\n */\nfunction resolveContent(events) {\n  subtokenize(events);\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeContent(effects, ok) {\n  /** @type {Token | undefined} */\n  let previous;\n  return chunkStart;\n\n  /**\n   * Before a content chunk.\n   *\n   * ```markdown\n   * > | abc\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function chunkStart(code) {\n    effects.enter(\"content\");\n    previous = effects.enter(\"chunkContent\", {\n      contentType: \"content\"\n    });\n    return chunkInside(code);\n  }\n\n  /**\n   * In a content chunk.\n   *\n   * ```markdown\n   * > | abc\n   *     ^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function chunkInside(code) {\n    if (code === null) {\n      return contentEnd(code);\n    }\n\n    // To do: in `markdown-rs`, each line is parsed on its own, and everything\n    // is stitched together resolving.\n    if (markdownLineEnding(code)) {\n      return effects.check(continuationConstruct, contentContinue, contentEnd)(code);\n    }\n\n    // Data.\n    effects.consume(code);\n    return chunkInside;\n  }\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function contentEnd(code) {\n    effects.exit(\"chunkContent\");\n    effects.exit(\"content\");\n    return ok(code);\n  }\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function contentContinue(code) {\n    effects.consume(code);\n    effects.exit(\"chunkContent\");\n    previous.next = effects.enter(\"chunkContent\", {\n      contentType: \"content\",\n      previous\n    });\n    previous = previous.next;\n    return chunkInside;\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeContinuation(effects, ok, nok) {\n  const self = this;\n  return startLookahead;\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function startLookahead(code) {\n    effects.exit(\"chunkContent\");\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return factorySpace(effects, prefixed, \"linePrefix\");\n  }\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function prefixed(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return nok(code);\n    }\n\n    // Always populated by defaults.\n\n    const tail = self.events[self.events.length - 1];\n    if (!self.parser.constructs.disable.null.includes('codeIndented') && tail && tail[1].type === \"linePrefix\" && tail[2].sliceSerialize(tail[1], true).length >= 4) {\n      return ok(code);\n    }\n    return effects.interrupt(self.parser.constructs.flow, nok, ok)(code);\n  }\n}","/**\n * @import {Effects, State, TokenType} from 'micromark-util-types'\n */\n\nimport { asciiControl, markdownLineEndingOrSpace, markdownLineEnding } from 'micromark-util-character';\n/**\n * Parse destinations.\n *\n * ###### Examples\n *\n * ```markdown\n * <a>\n * <a\\>b>\n * <a b>\n * <a)>\n * a\n * a\\)b\n * a(b)c\n * a(b)\n * ```\n *\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @param {State} nok\n *   State switched to when unsuccessful.\n * @param {TokenType} type\n *   Type for whole (`<a>` or `b`).\n * @param {TokenType} literalType\n *   Type when enclosed (`<a>`).\n * @param {TokenType} literalMarkerType\n *   Type for enclosing (`<` and `>`).\n * @param {TokenType} rawType\n *   Type when not enclosed (`b`).\n * @param {TokenType} stringType\n *   Type for the value (`a` or `b`).\n * @param {number | undefined} [max=Infinity]\n *   Depth of nested parens (inclusive).\n * @returns {State}\n *   Start state.\n */\nexport function factoryDestination(effects, ok, nok, type, literalType, literalMarkerType, rawType, stringType, max) {\n  const limit = max || Number.POSITIVE_INFINITY;\n  let balance = 0;\n  return start;\n\n  /**\n   * Start of destination.\n   *\n   * ```markdown\n   * > | <aa>\n   *     ^\n   * > | aa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (code === 60) {\n      effects.enter(type);\n      effects.enter(literalType);\n      effects.enter(literalMarkerType);\n      effects.consume(code);\n      effects.exit(literalMarkerType);\n      return enclosedBefore;\n    }\n\n    // ASCII control, space, closing paren.\n    if (code === null || code === 32 || code === 41 || asciiControl(code)) {\n      return nok(code);\n    }\n    effects.enter(type);\n    effects.enter(rawType);\n    effects.enter(stringType);\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return raw(code);\n  }\n\n  /**\n   * After `<`, at an enclosed destination.\n   *\n   * ```markdown\n   * > | <aa>\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function enclosedBefore(code) {\n    if (code === 62) {\n      effects.enter(literalMarkerType);\n      effects.consume(code);\n      effects.exit(literalMarkerType);\n      effects.exit(literalType);\n      effects.exit(type);\n      return ok;\n    }\n    effects.enter(stringType);\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return enclosed(code);\n  }\n\n  /**\n   * In enclosed destination.\n   *\n   * ```markdown\n   * > | <aa>\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function enclosed(code) {\n    if (code === 62) {\n      effects.exit(\"chunkString\");\n      effects.exit(stringType);\n      return enclosedBefore(code);\n    }\n    if (code === null || code === 60 || markdownLineEnding(code)) {\n      return nok(code);\n    }\n    effects.consume(code);\n    return code === 92 ? enclosedEscape : enclosed;\n  }\n\n  /**\n   * After `\\`, at a special character.\n   *\n   * ```markdown\n   * > | <a\\*a>\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function enclosedEscape(code) {\n    if (code === 60 || code === 62 || code === 92) {\n      effects.consume(code);\n      return enclosed;\n    }\n    return enclosed(code);\n  }\n\n  /**\n   * In raw destination.\n   *\n   * ```markdown\n   * > | aa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function raw(code) {\n    if (!balance && (code === null || code === 41 || markdownLineEndingOrSpace(code))) {\n      effects.exit(\"chunkString\");\n      effects.exit(stringType);\n      effects.exit(rawType);\n      effects.exit(type);\n      return ok(code);\n    }\n    if (balance < limit && code === 40) {\n      effects.consume(code);\n      balance++;\n      return raw;\n    }\n    if (code === 41) {\n      effects.consume(code);\n      balance--;\n      return raw;\n    }\n\n    // ASCII control (but *not* `\\0`) and space and `(`.\n    // Note: in `markdown-rs`, `\\0` exists in codes, in `micromark-js` it\n    // doesn’t.\n    if (code === null || code === 32 || code === 40 || asciiControl(code)) {\n      return nok(code);\n    }\n    effects.consume(code);\n    return code === 92 ? rawEscape : raw;\n  }\n\n  /**\n   * After `\\`, at special character.\n   *\n   * ```markdown\n   * > | a\\*a\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function rawEscape(code) {\n    if (code === 40 || code === 41 || code === 92) {\n      effects.consume(code);\n      return raw;\n    }\n    return raw(code);\n  }\n}","/**\n * @import {\n *   Effects,\n *   State,\n *   TokenizeContext,\n *   TokenType\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/**\n * Parse labels.\n *\n * > 👉 **Note**: labels in markdown are capped at 999 characters in the string.\n *\n * ###### Examples\n *\n * ```markdown\n * [a]\n * [a\n * b]\n * [a\\]b]\n * ```\n *\n * @this {TokenizeContext}\n *   Tokenize context.\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @param {State} nok\n *   State switched to when unsuccessful.\n * @param {TokenType} type\n *   Type of the whole label (`[a]`).\n * @param {TokenType} markerType\n *   Type for the markers (`[` and `]`).\n * @param {TokenType} stringType\n *   Type for the identifier (`a`).\n * @returns {State}\n *   Start state.\n */\nexport function factoryLabel(effects, ok, nok, type, markerType, stringType) {\n  const self = this;\n  let size = 0;\n  /** @type {boolean} */\n  let seen;\n  return start;\n\n  /**\n   * Start of label.\n   *\n   * ```markdown\n   * > | [a]\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(type);\n    effects.enter(markerType);\n    effects.consume(code);\n    effects.exit(markerType);\n    effects.enter(stringType);\n    return atBreak;\n  }\n\n  /**\n   * In label, at something, before something else.\n   *\n   * ```markdown\n   * > | [a]\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atBreak(code) {\n    if (size > 999 || code === null || code === 91 || code === 93 && !seen ||\n    // To do: remove in the future once we’ve switched from\n    // `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n    // which doesn’t need this.\n    // Hidden footnotes hook.\n    /* c8 ignore next 3 */\n    code === 94 && !size && '_hiddenFootnoteSupport' in self.parser.constructs) {\n      return nok(code);\n    }\n    if (code === 93) {\n      effects.exit(stringType);\n      effects.enter(markerType);\n      effects.consume(code);\n      effects.exit(markerType);\n      effects.exit(type);\n      return ok;\n    }\n\n    // To do: indent? Link chunks and EOLs together?\n    if (markdownLineEnding(code)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      return atBreak;\n    }\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return labelInside(code);\n  }\n\n  /**\n   * In label, in text.\n   *\n   * ```markdown\n   * > | [a]\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelInside(code) {\n    if (code === null || code === 91 || code === 93 || markdownLineEnding(code) || size++ > 999) {\n      effects.exit(\"chunkString\");\n      return atBreak(code);\n    }\n    effects.consume(code);\n    if (!seen) seen = !markdownSpace(code);\n    return code === 92 ? labelEscape : labelInside;\n  }\n\n  /**\n   * After `\\`, at a special character.\n   *\n   * ```markdown\n   * > | [a\\*a]\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelEscape(code) {\n    if (code === 91 || code === 92 || code === 93) {\n      effects.consume(code);\n      size++;\n      return labelInside;\n    }\n    return labelInside(code);\n  }\n}","/**\n * @import {\n *   Code,\n *   Effects,\n *   State,\n *   TokenType\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/**\n * Parse titles.\n *\n * ###### Examples\n *\n * ```markdown\n * \"a\"\n * 'b'\n * (c)\n * \"a\n * b\"\n * 'a\n *     b'\n * (a\\)b)\n * ```\n *\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @param {State} nok\n *   State switched to when unsuccessful.\n * @param {TokenType} type\n *   Type of the whole title (`\"a\"`, `'b'`, `(c)`).\n * @param {TokenType} markerType\n *   Type for the markers (`\"`, `'`, `(`, and `)`).\n * @param {TokenType} stringType\n *   Type for the value (`a`).\n * @returns {State}\n *   Start state.\n */\nexport function factoryTitle(effects, ok, nok, type, markerType, stringType) {\n  /** @type {NonNullable<Code>} */\n  let marker;\n  return start;\n\n  /**\n   * Start of title.\n   *\n   * ```markdown\n   * > | \"a\"\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (code === 34 || code === 39 || code === 40) {\n      effects.enter(type);\n      effects.enter(markerType);\n      effects.consume(code);\n      effects.exit(markerType);\n      marker = code === 40 ? 41 : code;\n      return begin;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After opening marker.\n   *\n   * This is also used at the closing marker.\n   *\n   * ```markdown\n   * > | \"a\"\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function begin(code) {\n    if (code === marker) {\n      effects.enter(markerType);\n      effects.consume(code);\n      effects.exit(markerType);\n      effects.exit(type);\n      return ok;\n    }\n    effects.enter(stringType);\n    return atBreak(code);\n  }\n\n  /**\n   * At something, before something else.\n   *\n   * ```markdown\n   * > | \"a\"\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atBreak(code) {\n    if (code === marker) {\n      effects.exit(stringType);\n      return begin(marker);\n    }\n    if (code === null) {\n      return nok(code);\n    }\n\n    // Note: blank lines can’t exist in content.\n    if (markdownLineEnding(code)) {\n      // To do: use `space_or_tab_eol_with_options`, connect.\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      return factorySpace(effects, atBreak, \"linePrefix\");\n    }\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return inside(code);\n  }\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    if (code === marker || code === null || markdownLineEnding(code)) {\n      effects.exit(\"chunkString\");\n      return atBreak(code);\n    }\n    effects.consume(code);\n    return code === 92 ? escape : inside;\n  }\n\n  /**\n   * After `\\`, at a special character.\n   *\n   * ```markdown\n   * > | \"a\\*b\"\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function escape(code) {\n    if (code === marker || code === 92) {\n      effects.consume(code);\n      return inside;\n    }\n    return inside(code);\n  }\n}","/**\n * @import {Effects, State} from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * *   line endings or spaces in markdown are often optional, in which case this\n *     factory can be used and `ok` will be switched to whether spaces were found\n *     or not\n * *   one line ending or space can be detected with\n *     `markdownLineEndingOrSpace(code)` right before using `factoryWhitespace`\n *\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @returns {State}\n *   Start state.\n */\nexport function factoryWhitespace(effects, ok) {\n  /** @type {boolean} */\n  let seen;\n  return start;\n\n  /** @type {State} */\n  function start(code) {\n    if (markdownLineEnding(code)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      seen = true;\n      return start;\n    }\n    if (markdownSpace(code)) {\n      return factorySpace(effects, start, seen ? \"linePrefix\" : \"lineSuffix\")(code);\n    }\n    return ok(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factoryDestination } from 'micromark-factory-destination';\nimport { factoryLabel } from 'micromark-factory-label';\nimport { factorySpace } from 'micromark-factory-space';\nimport { factoryTitle } from 'micromark-factory-title';\nimport { factoryWhitespace } from 'micromark-factory-whitespace';\nimport { markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\n/** @type {Construct} */\nexport const definition = {\n  name: 'definition',\n  tokenize: tokenizeDefinition\n};\n\n/** @type {Construct} */\nconst titleBefore = {\n  partial: true,\n  tokenize: tokenizeTitleBefore\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeDefinition(effects, ok, nok) {\n  const self = this;\n  /** @type {string} */\n  let identifier;\n  return start;\n\n  /**\n   * At start of a definition.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // Do not interrupt paragraphs (but do follow definitions).\n    // To do: do `interrupt` the way `markdown-rs` does.\n    // To do: parse whitespace the way `markdown-rs` does.\n    effects.enter(\"definition\");\n    return before(code);\n  }\n\n  /**\n   * After optional whitespace, at `[`.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    // To do: parse whitespace the way `markdown-rs` does.\n\n    return factoryLabel.call(self, effects, labelAfter,\n    // Note: we don’t need to reset the way `markdown-rs` does.\n    nok, \"definitionLabel\", \"definitionLabelMarker\", \"definitionLabelString\")(code);\n  }\n\n  /**\n   * After label.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelAfter(code) {\n    identifier = normalizeIdentifier(self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1));\n    if (code === 58) {\n      effects.enter(\"definitionMarker\");\n      effects.consume(code);\n      effects.exit(\"definitionMarker\");\n      return markerAfter;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After marker.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function markerAfter(code) {\n    // Note: whitespace is optional.\n    return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, destinationBefore)(code) : destinationBefore(code);\n  }\n\n  /**\n   * Before destination.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function destinationBefore(code) {\n    return factoryDestination(effects, destinationAfter,\n    // Note: we don’t need to reset the way `markdown-rs` does.\n    nok, \"definitionDestination\", \"definitionDestinationLiteral\", \"definitionDestinationLiteralMarker\", \"definitionDestinationRaw\", \"definitionDestinationString\")(code);\n  }\n\n  /**\n   * After destination.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function destinationAfter(code) {\n    return effects.attempt(titleBefore, after, after)(code);\n  }\n\n  /**\n   * After definition.\n   *\n   * ```markdown\n   * > | [a]: b\n   *           ^\n   * > | [a]: b \"c\"\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    return markdownSpace(code) ? factorySpace(effects, afterWhitespace, \"whitespace\")(code) : afterWhitespace(code);\n  }\n\n  /**\n   * After definition, after optional whitespace.\n   *\n   * ```markdown\n   * > | [a]: b\n   *           ^\n   * > | [a]: b \"c\"\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function afterWhitespace(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"definition\");\n\n      // Note: we don’t care about uniqueness.\n      // It’s likely that that doesn’t happen very frequently.\n      // It is more likely that it wastes precious time.\n      self.parser.defined.push(identifier);\n\n      // To do: `markdown-rs` interrupt.\n      // // You’d be interrupting.\n      // tokenizer.interrupt = true\n      return ok(code);\n    }\n    return nok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeTitleBefore(effects, ok, nok) {\n  return titleBefore;\n\n  /**\n   * After destination, at whitespace.\n   *\n   * ```markdown\n   * > | [a]: b\n   *           ^\n   * > | [a]: b \"c\"\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function titleBefore(code) {\n    return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, beforeMarker)(code) : nok(code);\n  }\n\n  /**\n   * At title.\n   *\n   * ```markdown\n   *   | [a]: b\n   * > | \"c\"\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function beforeMarker(code) {\n    return factoryTitle(effects, titleAfter, nok, \"definitionTitle\", \"definitionTitleMarker\", \"definitionTitleString\")(code);\n  }\n\n  /**\n   * After title.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function titleAfter(code) {\n    return markdownSpace(code) ? factorySpace(effects, titleAfterOptionalWhitespace, \"whitespace\")(code) : titleAfterOptionalWhitespace(code);\n  }\n\n  /**\n   * After title, after optional whitespace.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function titleAfterOptionalWhitespace(code) {\n    return code === null || markdownLineEnding(code) ? ok(code) : nok(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const hardBreakEscape = {\n  name: 'hardBreakEscape',\n  tokenize: tokenizeHardBreakEscape\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n  return start;\n\n  /**\n   * Start of a hard break (escape).\n   *\n   * ```markdown\n   * > | a\\\n   *      ^\n   *   | b\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"hardBreakEscape\");\n    effects.consume(code);\n    return after;\n  }\n\n  /**\n   * After `\\`, at eol.\n   *\n   * ```markdown\n   * > | a\\\n   *       ^\n   *   | b\n   * ```\n   *\n   *  @type {State}\n   */\n  function after(code) {\n    if (markdownLineEnding(code)) {\n      effects.exit(\"hardBreakEscape\");\n      return ok(code);\n    }\n    return nok(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer,\n *   Token\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\nimport { splice } from 'micromark-util-chunked';\n/** @type {Construct} */\nexport const headingAtx = {\n  name: 'headingAtx',\n  resolve: resolveHeadingAtx,\n  tokenize: tokenizeHeadingAtx\n};\n\n/** @type {Resolver} */\nfunction resolveHeadingAtx(events, context) {\n  let contentEnd = events.length - 2;\n  let contentStart = 3;\n  /** @type {Token} */\n  let content;\n  /** @type {Token} */\n  let text;\n\n  // Prefix whitespace, part of the opening.\n  if (events[contentStart][1].type === \"whitespace\") {\n    contentStart += 2;\n  }\n\n  // Suffix whitespace, part of the closing.\n  if (contentEnd - 2 > contentStart && events[contentEnd][1].type === \"whitespace\") {\n    contentEnd -= 2;\n  }\n  if (events[contentEnd][1].type === \"atxHeadingSequence\" && (contentStart === contentEnd - 1 || contentEnd - 4 > contentStart && events[contentEnd - 2][1].type === \"whitespace\")) {\n    contentEnd -= contentStart + 1 === contentEnd ? 2 : 4;\n  }\n  if (contentEnd > contentStart) {\n    content = {\n      type: \"atxHeadingText\",\n      start: events[contentStart][1].start,\n      end: events[contentEnd][1].end\n    };\n    text = {\n      type: \"chunkText\",\n      start: events[contentStart][1].start,\n      end: events[contentEnd][1].end,\n      contentType: \"text\"\n    };\n    splice(events, contentStart, contentEnd - contentStart + 1, [['enter', content, context], ['enter', text, context], ['exit', text, context], ['exit', content, context]]);\n  }\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n  let size = 0;\n  return start;\n\n  /**\n   * Start of a heading (atx).\n   *\n   * ```markdown\n   * > | ## aa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // To do: parse indent like `markdown-rs`.\n    effects.enter(\"atxHeading\");\n    return before(code);\n  }\n\n  /**\n   * After optional whitespace, at `#`.\n   *\n   * ```markdown\n   * > | ## aa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    effects.enter(\"atxHeadingSequence\");\n    return sequenceOpen(code);\n  }\n\n  /**\n   * In opening sequence.\n   *\n   * ```markdown\n   * > | ## aa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceOpen(code) {\n    if (code === 35 && size++ < 6) {\n      effects.consume(code);\n      return sequenceOpen;\n    }\n\n    // Always at least one `#`.\n    if (code === null || markdownLineEndingOrSpace(code)) {\n      effects.exit(\"atxHeadingSequence\");\n      return atBreak(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * After something, before something else.\n   *\n   * ```markdown\n   * > | ## aa\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atBreak(code) {\n    if (code === 35) {\n      effects.enter(\"atxHeadingSequence\");\n      return sequenceFurther(code);\n    }\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"atxHeading\");\n      // To do: interrupt like `markdown-rs`.\n      // // Feel free to interrupt.\n      // tokenizer.interrupt = false\n      return ok(code);\n    }\n    if (markdownSpace(code)) {\n      return factorySpace(effects, atBreak, \"whitespace\")(code);\n    }\n\n    // To do: generate `data` tokens, add the `text` token later.\n    // Needs edit map, see: `markdown.rs`.\n    effects.enter(\"atxHeadingText\");\n    return data(code);\n  }\n\n  /**\n   * In further sequence (after whitespace).\n   *\n   * Could be normal “visible” hashes in the heading or a final sequence.\n   *\n   * ```markdown\n   * > | ## aa ##\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceFurther(code) {\n    if (code === 35) {\n      effects.consume(code);\n      return sequenceFurther;\n    }\n    effects.exit(\"atxHeadingSequence\");\n    return atBreak(code);\n  }\n\n  /**\n   * In text.\n   *\n   * ```markdown\n   * > | ## aa\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function data(code) {\n    if (code === null || code === 35 || markdownLineEndingOrSpace(code)) {\n      effects.exit(\"atxHeadingText\");\n      return atBreak(code);\n    }\n    effects.consume(code);\n    return data;\n  }\n}","/**\n * List of lowercase HTML “block” tag names.\n *\n * The list, when parsing HTML (flow), results in more relaxed rules (condition\n * 6).\n * Because they are known blocks, the HTML-like syntax doesn’t have to be\n * strictly parsed.\n * For tag names not in this list, a more strict algorithm (condition 7) is used\n * to detect whether the HTML-like syntax is seen as HTML (flow) or not.\n *\n * This is copied from:\n * <https://spec.commonmark.org/0.30/#html-blocks>.\n *\n * > 👉 **Note**: `search` was added in `CommonMark@0.31`.\n */\nexport const htmlBlockNames = [\n  'address',\n  'article',\n  'aside',\n  'base',\n  'basefont',\n  'blockquote',\n  'body',\n  'caption',\n  'center',\n  'col',\n  'colgroup',\n  'dd',\n  'details',\n  'dialog',\n  'dir',\n  'div',\n  'dl',\n  'dt',\n  'fieldset',\n  'figcaption',\n  'figure',\n  'footer',\n  'form',\n  'frame',\n  'frameset',\n  'h1',\n  'h2',\n  'h3',\n  'h4',\n  'h5',\n  'h6',\n  'head',\n  'header',\n  'hr',\n  'html',\n  'iframe',\n  'legend',\n  'li',\n  'link',\n  'main',\n  'menu',\n  'menuitem',\n  'nav',\n  'noframes',\n  'ol',\n  'optgroup',\n  'option',\n  'p',\n  'param',\n  'search',\n  'section',\n  'summary',\n  'table',\n  'tbody',\n  'td',\n  'tfoot',\n  'th',\n  'thead',\n  'title',\n  'tr',\n  'track',\n  'ul'\n]\n\n/**\n * List of lowercase HTML “raw” tag names.\n *\n * The list, when parsing HTML (flow), results in HTML that can include lines\n * without exiting, until a closing tag also in this list is found (condition\n * 1).\n *\n * This module is copied from:\n * <https://spec.commonmark.org/0.30/#html-blocks>.\n *\n * > 👉 **Note**: `textarea` was added in `CommonMark@0.30`.\n */\nexport const htmlRawNames = ['pre', 'script', 'style', 'textarea']\n","/**\n * @import {\n *   Code,\n *   Construct,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { asciiAlphanumeric, asciiAlpha, markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\nimport { htmlBlockNames, htmlRawNames } from 'micromark-util-html-tag-name';\nimport { blankLine } from './blank-line.js';\n\n/** @type {Construct} */\nexport const htmlFlow = {\n  concrete: true,\n  name: 'htmlFlow',\n  resolveTo: resolveToHtmlFlow,\n  tokenize: tokenizeHtmlFlow\n};\n\n/** @type {Construct} */\nconst blankLineBefore = {\n  partial: true,\n  tokenize: tokenizeBlankLineBefore\n};\nconst nonLazyContinuationStart = {\n  partial: true,\n  tokenize: tokenizeNonLazyContinuationStart\n};\n\n/** @type {Resolver} */\nfunction resolveToHtmlFlow(events) {\n  let index = events.length;\n  while (index--) {\n    if (events[index][0] === 'enter' && events[index][1].type === \"htmlFlow\") {\n      break;\n    }\n  }\n  if (index > 1 && events[index - 2][1].type === \"linePrefix\") {\n    // Add the prefix start to the HTML token.\n    events[index][1].start = events[index - 2][1].start;\n    // Add the prefix start to the HTML line token.\n    events[index + 1][1].start = events[index - 2][1].start;\n    // Remove the line prefix.\n    events.splice(index - 2, 2);\n  }\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n  const self = this;\n  /** @type {number} */\n  let marker;\n  /** @type {boolean} */\n  let closingTag;\n  /** @type {string} */\n  let buffer;\n  /** @type {number} */\n  let index;\n  /** @type {Code} */\n  let markerB;\n  return start;\n\n  /**\n   * Start of HTML (flow).\n   *\n   * ```markdown\n   * > | <x />\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // To do: parse indent like `markdown-rs`.\n    return before(code);\n  }\n\n  /**\n   * At `<`, after optional whitespace.\n   *\n   * ```markdown\n   * > | <x />\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    effects.enter(\"htmlFlow\");\n    effects.enter(\"htmlFlowData\");\n    effects.consume(code);\n    return open;\n  }\n\n  /**\n   * After `<`, at tag name or other stuff.\n   *\n   * ```markdown\n   * > | <x />\n   *      ^\n   * > | <!doctype>\n   *      ^\n   * > | <!--xxx-->\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (code === 33) {\n      effects.consume(code);\n      return declarationOpen;\n    }\n    if (code === 47) {\n      effects.consume(code);\n      closingTag = true;\n      return tagCloseStart;\n    }\n    if (code === 63) {\n      effects.consume(code);\n      marker = 3;\n      // To do:\n      // tokenizer.concrete = true\n      // To do: use `markdown-rs` style interrupt.\n      // While we’re in an instruction instead of a declaration, we’re on a `?`\n      // right now, so we do need to search for `>`, similar to declarations.\n      return self.interrupt ? ok : continuationDeclarationInside;\n    }\n\n    // ASCII alphabetical.\n    if (asciiAlpha(code)) {\n      // Always the case.\n      effects.consume(code);\n      buffer = String.fromCharCode(code);\n      return tagName;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `<!`, at declaration, comment, or CDATA.\n   *\n   * ```markdown\n   * > | <!doctype>\n   *       ^\n   * > | <!--xxx-->\n   *       ^\n   * > | <![CDATA[>&<]]>\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function declarationOpen(code) {\n    if (code === 45) {\n      effects.consume(code);\n      marker = 2;\n      return commentOpenInside;\n    }\n    if (code === 91) {\n      effects.consume(code);\n      marker = 5;\n      index = 0;\n      return cdataOpenInside;\n    }\n\n    // ASCII alphabetical.\n    if (asciiAlpha(code)) {\n      effects.consume(code);\n      marker = 4;\n      // // Do not form containers.\n      // tokenizer.concrete = true\n      return self.interrupt ? ok : continuationDeclarationInside;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `<!-`, inside a comment, at another `-`.\n   *\n   * ```markdown\n   * > | <!--xxx-->\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function commentOpenInside(code) {\n    if (code === 45) {\n      effects.consume(code);\n      // // Do not form containers.\n      // tokenizer.concrete = true\n      return self.interrupt ? ok : continuationDeclarationInside;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `<![`, inside CDATA, expecting `CDATA[`.\n   *\n   * ```markdown\n   * > | <![CDATA[>&<]]>\n   *        ^^^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function cdataOpenInside(code) {\n    const value = \"CDATA[\";\n    if (code === value.charCodeAt(index++)) {\n      effects.consume(code);\n      if (index === value.length) {\n        // // Do not form containers.\n        // tokenizer.concrete = true\n        return self.interrupt ? ok : continuation;\n      }\n      return cdataOpenInside;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `</`, in closing tag, at tag name.\n   *\n   * ```markdown\n   * > | </x>\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagCloseStart(code) {\n    if (asciiAlpha(code)) {\n      // Always the case.\n      effects.consume(code);\n      buffer = String.fromCharCode(code);\n      return tagName;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In tag name.\n   *\n   * ```markdown\n   * > | <ab>\n   *      ^^\n   * > | </ab>\n   *       ^^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagName(code) {\n    if (code === null || code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n      const slash = code === 47;\n      const name = buffer.toLowerCase();\n      if (!slash && !closingTag && htmlRawNames.includes(name)) {\n        marker = 1;\n        // // Do not form containers.\n        // tokenizer.concrete = true\n        return self.interrupt ? ok(code) : continuation(code);\n      }\n      if (htmlBlockNames.includes(buffer.toLowerCase())) {\n        marker = 6;\n        if (slash) {\n          effects.consume(code);\n          return basicSelfClosing;\n        }\n\n        // // Do not form containers.\n        // tokenizer.concrete = true\n        return self.interrupt ? ok(code) : continuation(code);\n      }\n      marker = 7;\n      // Do not support complete HTML when interrupting.\n      return self.interrupt && !self.parser.lazy[self.now().line] ? nok(code) : closingTag ? completeClosingTagAfter(code) : completeAttributeNameBefore(code);\n    }\n\n    // ASCII alphanumerical and `-`.\n    if (code === 45 || asciiAlphanumeric(code)) {\n      effects.consume(code);\n      buffer += String.fromCharCode(code);\n      return tagName;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After closing slash of a basic tag name.\n   *\n   * ```markdown\n   * > | <div/>\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function basicSelfClosing(code) {\n    if (code === 62) {\n      effects.consume(code);\n      // // Do not form containers.\n      // tokenizer.concrete = true\n      return self.interrupt ? ok : continuation;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After closing slash of a complete tag name.\n   *\n   * ```markdown\n   * > | <x/>\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeClosingTagAfter(code) {\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return completeClosingTagAfter;\n    }\n    return completeEnd(code);\n  }\n\n  /**\n   * At an attribute name.\n   *\n   * At first, this state is used after a complete tag name, after whitespace,\n   * where it expects optional attributes or the end of the tag.\n   * It is also reused after attributes, when expecting more optional\n   * attributes.\n   *\n   * ```markdown\n   * > | <a />\n   *        ^\n   * > | <a :b>\n   *        ^\n   * > | <a _b>\n   *        ^\n   * > | <a b>\n   *        ^\n   * > | <a >\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeNameBefore(code) {\n    if (code === 47) {\n      effects.consume(code);\n      return completeEnd;\n    }\n\n    // ASCII alphanumerical and `:` and `_`.\n    if (code === 58 || code === 95 || asciiAlpha(code)) {\n      effects.consume(code);\n      return completeAttributeName;\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return completeAttributeNameBefore;\n    }\n    return completeEnd(code);\n  }\n\n  /**\n   * In attribute name.\n   *\n   * ```markdown\n   * > | <a :b>\n   *         ^\n   * > | <a _b>\n   *         ^\n   * > | <a b>\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeName(code) {\n    // ASCII alphanumerical and `-`, `.`, `:`, and `_`.\n    if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) {\n      effects.consume(code);\n      return completeAttributeName;\n    }\n    return completeAttributeNameAfter(code);\n  }\n\n  /**\n   * After attribute name, at an optional initializer, the end of the tag, or\n   * whitespace.\n   *\n   * ```markdown\n   * > | <a b>\n   *         ^\n   * > | <a b=c>\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeNameAfter(code) {\n    if (code === 61) {\n      effects.consume(code);\n      return completeAttributeValueBefore;\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return completeAttributeNameAfter;\n    }\n    return completeAttributeNameBefore(code);\n  }\n\n  /**\n   * Before unquoted, double quoted, or single quoted attribute value, allowing\n   * whitespace.\n   *\n   * ```markdown\n   * > | <a b=c>\n   *          ^\n   * > | <a b=\"c\">\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeValueBefore(code) {\n    if (code === null || code === 60 || code === 61 || code === 62 || code === 96) {\n      return nok(code);\n    }\n    if (code === 34 || code === 39) {\n      effects.consume(code);\n      markerB = code;\n      return completeAttributeValueQuoted;\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return completeAttributeValueBefore;\n    }\n    return completeAttributeValueUnquoted(code);\n  }\n\n  /**\n   * In double or single quoted attribute value.\n   *\n   * ```markdown\n   * > | <a b=\"c\">\n   *           ^\n   * > | <a b='c'>\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeValueQuoted(code) {\n    if (code === markerB) {\n      effects.consume(code);\n      markerB = null;\n      return completeAttributeValueQuotedAfter;\n    }\n    if (code === null || markdownLineEnding(code)) {\n      return nok(code);\n    }\n    effects.consume(code);\n    return completeAttributeValueQuoted;\n  }\n\n  /**\n   * In unquoted attribute value.\n   *\n   * ```markdown\n   * > | <a b=c>\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeValueUnquoted(code) {\n    if (code === null || code === 34 || code === 39 || code === 47 || code === 60 || code === 61 || code === 62 || code === 96 || markdownLineEndingOrSpace(code)) {\n      return completeAttributeNameAfter(code);\n    }\n    effects.consume(code);\n    return completeAttributeValueUnquoted;\n  }\n\n  /**\n   * After double or single quoted attribute value, before whitespace or the\n   * end of the tag.\n   *\n   * ```markdown\n   * > | <a b=\"c\">\n   *            ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeValueQuotedAfter(code) {\n    if (code === 47 || code === 62 || markdownSpace(code)) {\n      return completeAttributeNameBefore(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * In certain circumstances of a complete tag where only an `>` is allowed.\n   *\n   * ```markdown\n   * > | <a b=\"c\">\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeEnd(code) {\n    if (code === 62) {\n      effects.consume(code);\n      return completeAfter;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `>` in a complete tag.\n   *\n   * ```markdown\n   * > | <x>\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAfter(code) {\n    if (code === null || markdownLineEnding(code)) {\n      // // Do not form containers.\n      // tokenizer.concrete = true\n      return continuation(code);\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return completeAfter;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In continuation of any HTML kind.\n   *\n   * ```markdown\n   * > | <!--xxx-->\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuation(code) {\n    if (code === 45 && marker === 2) {\n      effects.consume(code);\n      return continuationCommentInside;\n    }\n    if (code === 60 && marker === 1) {\n      effects.consume(code);\n      return continuationRawTagOpen;\n    }\n    if (code === 62 && marker === 4) {\n      effects.consume(code);\n      return continuationClose;\n    }\n    if (code === 63 && marker === 3) {\n      effects.consume(code);\n      return continuationDeclarationInside;\n    }\n    if (code === 93 && marker === 5) {\n      effects.consume(code);\n      return continuationCdataInside;\n    }\n    if (markdownLineEnding(code) && (marker === 6 || marker === 7)) {\n      effects.exit(\"htmlFlowData\");\n      return effects.check(blankLineBefore, continuationAfter, continuationStart)(code);\n    }\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"htmlFlowData\");\n      return continuationStart(code);\n    }\n    effects.consume(code);\n    return continuation;\n  }\n\n  /**\n   * In continuation, at eol.\n   *\n   * ```markdown\n   * > | <x>\n   *        ^\n   *   | asd\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationStart(code) {\n    return effects.check(nonLazyContinuationStart, continuationStartNonLazy, continuationAfter)(code);\n  }\n\n  /**\n   * In continuation, at eol, before non-lazy content.\n   *\n   * ```markdown\n   * > | <x>\n   *        ^\n   *   | asd\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationStartNonLazy(code) {\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return continuationBefore;\n  }\n\n  /**\n   * In continuation, before non-lazy content.\n   *\n   * ```markdown\n   *   | <x>\n   * > | asd\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationBefore(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return continuationStart(code);\n    }\n    effects.enter(\"htmlFlowData\");\n    return continuation(code);\n  }\n\n  /**\n   * In comment continuation, after one `-`, expecting another.\n   *\n   * ```markdown\n   * > | <!--xxx-->\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationCommentInside(code) {\n    if (code === 45) {\n      effects.consume(code);\n      return continuationDeclarationInside;\n    }\n    return continuation(code);\n  }\n\n  /**\n   * In raw continuation, after `<`, at `/`.\n   *\n   * ```markdown\n   * > | <script>console.log(1)</script>\n   *                            ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationRawTagOpen(code) {\n    if (code === 47) {\n      effects.consume(code);\n      buffer = '';\n      return continuationRawEndTag;\n    }\n    return continuation(code);\n  }\n\n  /**\n   * In raw continuation, after `</`, in a raw tag name.\n   *\n   * ```markdown\n   * > | <script>console.log(1)</script>\n   *                             ^^^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationRawEndTag(code) {\n    if (code === 62) {\n      const name = buffer.toLowerCase();\n      if (htmlRawNames.includes(name)) {\n        effects.consume(code);\n        return continuationClose;\n      }\n      return continuation(code);\n    }\n    if (asciiAlpha(code) && buffer.length < 8) {\n      // Always the case.\n      effects.consume(code);\n      buffer += String.fromCharCode(code);\n      return continuationRawEndTag;\n    }\n    return continuation(code);\n  }\n\n  /**\n   * In cdata continuation, after `]`, expecting `]>`.\n   *\n   * ```markdown\n   * > | <![CDATA[>&<]]>\n   *                  ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationCdataInside(code) {\n    if (code === 93) {\n      effects.consume(code);\n      return continuationDeclarationInside;\n    }\n    return continuation(code);\n  }\n\n  /**\n   * In declaration or instruction continuation, at `>`.\n   *\n   * ```markdown\n   * > | <!-->\n   *         ^\n   * > | <?>\n   *       ^\n   * > | <!q>\n   *        ^\n   * > | <!--ab-->\n   *             ^\n   * > | <![CDATA[>&<]]>\n   *                   ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationDeclarationInside(code) {\n    if (code === 62) {\n      effects.consume(code);\n      return continuationClose;\n    }\n\n    // More dashes.\n    if (code === 45 && marker === 2) {\n      effects.consume(code);\n      return continuationDeclarationInside;\n    }\n    return continuation(code);\n  }\n\n  /**\n   * In closed continuation: everything we get until the eol/eof is part of it.\n   *\n   * ```markdown\n   * > | <!doctype>\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationClose(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"htmlFlowData\");\n      return continuationAfter(code);\n    }\n    effects.consume(code);\n    return continuationClose;\n  }\n\n  /**\n   * Done.\n   *\n   * ```markdown\n   * > | <!doctype>\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationAfter(code) {\n    effects.exit(\"htmlFlow\");\n    // // Feel free to interrupt.\n    // tokenizer.interrupt = false\n    // // No longer concrete.\n    // tokenizer.concrete = false\n    return ok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuationStart(effects, ok, nok) {\n  const self = this;\n  return start;\n\n  /**\n   * At eol, before continuation.\n   *\n   * ```markdown\n   * > | * ```js\n   *            ^\n   *   | b\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (markdownLineEnding(code)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      return after;\n    }\n    return nok(code);\n  }\n\n  /**\n   * A continuation.\n   *\n   * ```markdown\n   *   | * ```js\n   * > | b\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    return self.parser.lazy[self.now().line] ? nok(code) : ok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n  return start;\n\n  /**\n   * Before eol, expecting blank line.\n   *\n   * ```markdown\n   * > | <div>\n   *          ^\n   *   |\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return effects.attempt(blankLine, ok, nok);\n  }\n}","/**\n * @import {\n *   Code,\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { asciiAlphanumeric, asciiAlpha, markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const htmlText = {\n  name: 'htmlText',\n  tokenize: tokenizeHtmlText\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlText(effects, ok, nok) {\n  const self = this;\n  /** @type {NonNullable<Code> | undefined} */\n  let marker;\n  /** @type {number} */\n  let index;\n  /** @type {State} */\n  let returnState;\n  return start;\n\n  /**\n   * Start of HTML (text).\n   *\n   * ```markdown\n   * > | a <b> c\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"htmlText\");\n    effects.enter(\"htmlTextData\");\n    effects.consume(code);\n    return open;\n  }\n\n  /**\n   * After `<`, at tag name or other stuff.\n   *\n   * ```markdown\n   * > | a <b> c\n   *        ^\n   * > | a <!doctype> c\n   *        ^\n   * > | a <!--b--> c\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (code === 33) {\n      effects.consume(code);\n      return declarationOpen;\n    }\n    if (code === 47) {\n      effects.consume(code);\n      return tagCloseStart;\n    }\n    if (code === 63) {\n      effects.consume(code);\n      return instruction;\n    }\n\n    // ASCII alphabetical.\n    if (asciiAlpha(code)) {\n      effects.consume(code);\n      return tagOpen;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `<!`, at declaration, comment, or CDATA.\n   *\n   * ```markdown\n   * > | a <!doctype> c\n   *         ^\n   * > | a <!--b--> c\n   *         ^\n   * > | a <![CDATA[>&<]]> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function declarationOpen(code) {\n    if (code === 45) {\n      effects.consume(code);\n      return commentOpenInside;\n    }\n    if (code === 91) {\n      effects.consume(code);\n      index = 0;\n      return cdataOpenInside;\n    }\n    if (asciiAlpha(code)) {\n      effects.consume(code);\n      return declaration;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In a comment, after `<!-`, at another `-`.\n   *\n   * ```markdown\n   * > | a <!--b--> c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function commentOpenInside(code) {\n    if (code === 45) {\n      effects.consume(code);\n      return commentEnd;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In comment.\n   *\n   * ```markdown\n   * > | a <!--b--> c\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function comment(code) {\n    if (code === null) {\n      return nok(code);\n    }\n    if (code === 45) {\n      effects.consume(code);\n      return commentClose;\n    }\n    if (markdownLineEnding(code)) {\n      returnState = comment;\n      return lineEndingBefore(code);\n    }\n    effects.consume(code);\n    return comment;\n  }\n\n  /**\n   * In comment, after `-`.\n   *\n   * ```markdown\n   * > | a <!--b--> c\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function commentClose(code) {\n    if (code === 45) {\n      effects.consume(code);\n      return commentEnd;\n    }\n    return comment(code);\n  }\n\n  /**\n   * In comment, after `--`.\n   *\n   * ```markdown\n   * > | a <!--b--> c\n   *              ^\n   * ```\n   *\n   * @type {State}\n   */\n  function commentEnd(code) {\n    return code === 62 ? end(code) : code === 45 ? commentClose(code) : comment(code);\n  }\n\n  /**\n   * After `<![`, in CDATA, expecting `CDATA[`.\n   *\n   * ```markdown\n   * > | a <![CDATA[>&<]]> b\n   *          ^^^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function cdataOpenInside(code) {\n    const value = \"CDATA[\";\n    if (code === value.charCodeAt(index++)) {\n      effects.consume(code);\n      return index === value.length ? cdata : cdataOpenInside;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In CDATA.\n   *\n   * ```markdown\n   * > | a <![CDATA[>&<]]> b\n   *                ^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function cdata(code) {\n    if (code === null) {\n      return nok(code);\n    }\n    if (code === 93) {\n      effects.consume(code);\n      return cdataClose;\n    }\n    if (markdownLineEnding(code)) {\n      returnState = cdata;\n      return lineEndingBefore(code);\n    }\n    effects.consume(code);\n    return cdata;\n  }\n\n  /**\n   * In CDATA, after `]`, at another `]`.\n   *\n   * ```markdown\n   * > | a <![CDATA[>&<]]> b\n   *                    ^\n   * ```\n   *\n   * @type {State}\n   */\n  function cdataClose(code) {\n    if (code === 93) {\n      effects.consume(code);\n      return cdataEnd;\n    }\n    return cdata(code);\n  }\n\n  /**\n   * In CDATA, after `]]`, at `>`.\n   *\n   * ```markdown\n   * > | a <![CDATA[>&<]]> b\n   *                     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function cdataEnd(code) {\n    if (code === 62) {\n      return end(code);\n    }\n    if (code === 93) {\n      effects.consume(code);\n      return cdataEnd;\n    }\n    return cdata(code);\n  }\n\n  /**\n   * In declaration.\n   *\n   * ```markdown\n   * > | a <!b> c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function declaration(code) {\n    if (code === null || code === 62) {\n      return end(code);\n    }\n    if (markdownLineEnding(code)) {\n      returnState = declaration;\n      return lineEndingBefore(code);\n    }\n    effects.consume(code);\n    return declaration;\n  }\n\n  /**\n   * In instruction.\n   *\n   * ```markdown\n   * > | a <?b?> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function instruction(code) {\n    if (code === null) {\n      return nok(code);\n    }\n    if (code === 63) {\n      effects.consume(code);\n      return instructionClose;\n    }\n    if (markdownLineEnding(code)) {\n      returnState = instruction;\n      return lineEndingBefore(code);\n    }\n    effects.consume(code);\n    return instruction;\n  }\n\n  /**\n   * In instruction, after `?`, at `>`.\n   *\n   * ```markdown\n   * > | a <?b?> c\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function instructionClose(code) {\n    return code === 62 ? end(code) : instruction(code);\n  }\n\n  /**\n   * After `</`, in closing tag, at tag name.\n   *\n   * ```markdown\n   * > | a </b> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagCloseStart(code) {\n    // ASCII alphabetical.\n    if (asciiAlpha(code)) {\n      effects.consume(code);\n      return tagClose;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `</x`, in a tag name.\n   *\n   * ```markdown\n   * > | a </b> c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagClose(code) {\n    // ASCII alphanumerical and `-`.\n    if (code === 45 || asciiAlphanumeric(code)) {\n      effects.consume(code);\n      return tagClose;\n    }\n    return tagCloseBetween(code);\n  }\n\n  /**\n   * In closing tag, after tag name.\n   *\n   * ```markdown\n   * > | a </b> c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagCloseBetween(code) {\n    if (markdownLineEnding(code)) {\n      returnState = tagCloseBetween;\n      return lineEndingBefore(code);\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return tagCloseBetween;\n    }\n    return end(code);\n  }\n\n  /**\n   * After `<x`, in opening tag name.\n   *\n   * ```markdown\n   * > | a <b> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpen(code) {\n    // ASCII alphanumerical and `-`.\n    if (code === 45 || asciiAlphanumeric(code)) {\n      effects.consume(code);\n      return tagOpen;\n    }\n    if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n      return tagOpenBetween(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * In opening tag, after tag name.\n   *\n   * ```markdown\n   * > | a <b> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenBetween(code) {\n    if (code === 47) {\n      effects.consume(code);\n      return end;\n    }\n\n    // ASCII alphabetical and `:` and `_`.\n    if (code === 58 || code === 95 || asciiAlpha(code)) {\n      effects.consume(code);\n      return tagOpenAttributeName;\n    }\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenBetween;\n      return lineEndingBefore(code);\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return tagOpenBetween;\n    }\n    return end(code);\n  }\n\n  /**\n   * In attribute name.\n   *\n   * ```markdown\n   * > | a <b c> d\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeName(code) {\n    // ASCII alphabetical and `-`, `.`, `:`, and `_`.\n    if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) {\n      effects.consume(code);\n      return tagOpenAttributeName;\n    }\n    return tagOpenAttributeNameAfter(code);\n  }\n\n  /**\n   * After attribute name, before initializer, the end of the tag, or\n   * whitespace.\n   *\n   * ```markdown\n   * > | a <b c> d\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeNameAfter(code) {\n    if (code === 61) {\n      effects.consume(code);\n      return tagOpenAttributeValueBefore;\n    }\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenAttributeNameAfter;\n      return lineEndingBefore(code);\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return tagOpenAttributeNameAfter;\n    }\n    return tagOpenBetween(code);\n  }\n\n  /**\n   * Before unquoted, double quoted, or single quoted attribute value, allowing\n   * whitespace.\n   *\n   * ```markdown\n   * > | a <b c=d> e\n   *            ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeValueBefore(code) {\n    if (code === null || code === 60 || code === 61 || code === 62 || code === 96) {\n      return nok(code);\n    }\n    if (code === 34 || code === 39) {\n      effects.consume(code);\n      marker = code;\n      return tagOpenAttributeValueQuoted;\n    }\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenAttributeValueBefore;\n      return lineEndingBefore(code);\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return tagOpenAttributeValueBefore;\n    }\n    effects.consume(code);\n    return tagOpenAttributeValueUnquoted;\n  }\n\n  /**\n   * In double or single quoted attribute value.\n   *\n   * ```markdown\n   * > | a <b c=\"d\"> e\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeValueQuoted(code) {\n    if (code === marker) {\n      effects.consume(code);\n      marker = undefined;\n      return tagOpenAttributeValueQuotedAfter;\n    }\n    if (code === null) {\n      return nok(code);\n    }\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenAttributeValueQuoted;\n      return lineEndingBefore(code);\n    }\n    effects.consume(code);\n    return tagOpenAttributeValueQuoted;\n  }\n\n  /**\n   * In unquoted attribute value.\n   *\n   * ```markdown\n   * > | a <b c=d> e\n   *            ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeValueUnquoted(code) {\n    if (code === null || code === 34 || code === 39 || code === 60 || code === 61 || code === 96) {\n      return nok(code);\n    }\n    if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n      return tagOpenBetween(code);\n    }\n    effects.consume(code);\n    return tagOpenAttributeValueUnquoted;\n  }\n\n  /**\n   * After double or single quoted attribute value, before whitespace or the end\n   * of the tag.\n   *\n   * ```markdown\n   * > | a <b c=\"d\"> e\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeValueQuotedAfter(code) {\n    if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n      return tagOpenBetween(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * In certain circumstances of a tag where only an `>` is allowed.\n   *\n   * ```markdown\n   * > | a <b c=\"d\"> e\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function end(code) {\n    if (code === 62) {\n      effects.consume(code);\n      effects.exit(\"htmlTextData\");\n      effects.exit(\"htmlText\");\n      return ok;\n    }\n    return nok(code);\n  }\n\n  /**\n   * At eol.\n   *\n   * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n   * > empty tokens.\n   *\n   * ```markdown\n   * > | a <!--a\n   *            ^\n   *   | b-->\n   * ```\n   *\n   * @type {State}\n   */\n  function lineEndingBefore(code) {\n    effects.exit(\"htmlTextData\");\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return lineEndingAfter;\n  }\n\n  /**\n   * After eol, at optional whitespace.\n   *\n   * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n   * > empty tokens.\n   *\n   * ```markdown\n   *   | a <!--a\n   * > | b-->\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function lineEndingAfter(code) {\n    // Always populated by defaults.\n\n    return markdownSpace(code) ? factorySpace(effects, lineEndingAfterPrefix, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : lineEndingAfterPrefix(code);\n  }\n\n  /**\n   * After eol, after optional whitespace.\n   *\n   * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n   * > empty tokens.\n   *\n   * ```markdown\n   *   | a <!--a\n   * > | b-->\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function lineEndingAfterPrefix(code) {\n    effects.enter(\"htmlTextData\");\n    return returnState(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   Event,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer,\n *   Token\n * } from 'micromark-util-types'\n */\n\nimport { factoryDestination } from 'micromark-factory-destination';\nimport { factoryLabel } from 'micromark-factory-label';\nimport { factoryTitle } from 'micromark-factory-title';\nimport { factoryWhitespace } from 'micromark-factory-whitespace';\nimport { markdownLineEndingOrSpace } from 'micromark-util-character';\nimport { push, splice } from 'micromark-util-chunked';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/** @type {Construct} */\nexport const labelEnd = {\n  name: 'labelEnd',\n  resolveAll: resolveAllLabelEnd,\n  resolveTo: resolveToLabelEnd,\n  tokenize: tokenizeLabelEnd\n};\n\n/** @type {Construct} */\nconst resourceConstruct = {\n  tokenize: tokenizeResource\n};\n/** @type {Construct} */\nconst referenceFullConstruct = {\n  tokenize: tokenizeReferenceFull\n};\n/** @type {Construct} */\nconst referenceCollapsedConstruct = {\n  tokenize: tokenizeReferenceCollapsed\n};\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n  let index = -1;\n  /** @type {Array<Event>} */\n  const newEvents = [];\n  while (++index < events.length) {\n    const token = events[index][1];\n    newEvents.push(events[index]);\n    if (token.type === \"labelImage\" || token.type === \"labelLink\" || token.type === \"labelEnd\") {\n      // Remove the marker.\n      const offset = token.type === \"labelImage\" ? 4 : 2;\n      token.type = \"data\";\n      index += offset;\n    }\n  }\n\n  // If the events are equal, we don't have to copy newEvents to events\n  if (events.length !== newEvents.length) {\n    splice(events, 0, events.length, newEvents);\n  }\n  return events;\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n  let index = events.length;\n  let offset = 0;\n  /** @type {Token} */\n  let token;\n  /** @type {number | undefined} */\n  let open;\n  /** @type {number | undefined} */\n  let close;\n  /** @type {Array<Event>} */\n  let media;\n\n  // Find an opening.\n  while (index--) {\n    token = events[index][1];\n    if (open) {\n      // If we see another link, or inactive link label, we’ve been here before.\n      if (token.type === \"link\" || token.type === \"labelLink\" && token._inactive) {\n        break;\n      }\n\n      // Mark other link openings as inactive, as we can’t have links in\n      // links.\n      if (events[index][0] === 'enter' && token.type === \"labelLink\") {\n        token._inactive = true;\n      }\n    } else if (close) {\n      if (events[index][0] === 'enter' && (token.type === \"labelImage\" || token.type === \"labelLink\") && !token._balanced) {\n        open = index;\n        if (token.type !== \"labelLink\") {\n          offset = 2;\n          break;\n        }\n      }\n    } else if (token.type === \"labelEnd\") {\n      close = index;\n    }\n  }\n  const group = {\n    type: events[open][1].type === \"labelLink\" ? \"link\" : \"image\",\n    start: {\n      ...events[open][1].start\n    },\n    end: {\n      ...events[events.length - 1][1].end\n    }\n  };\n  const label = {\n    type: \"label\",\n    start: {\n      ...events[open][1].start\n    },\n    end: {\n      ...events[close][1].end\n    }\n  };\n  const text = {\n    type: \"labelText\",\n    start: {\n      ...events[open + offset + 2][1].end\n    },\n    end: {\n      ...events[close - 2][1].start\n    }\n  };\n  media = [['enter', group, context], ['enter', label, context]];\n\n  // Opening marker.\n  media = push(media, events.slice(open + 1, open + offset + 3));\n\n  // Text open.\n  media = push(media, [['enter', text, context]]);\n\n  // Always populated by defaults.\n\n  // Between.\n  media = push(media, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + offset + 4, close - 3), context));\n\n  // Text close, marker close, label close.\n  media = push(media, [['exit', text, context], events[close - 2], events[close - 1], ['exit', label, context]]);\n\n  // Reference, resource, or so.\n  media = push(media, events.slice(close + 1));\n\n  // Media close.\n  media = push(media, [['exit', group, context]]);\n  splice(events, open, events.length, media);\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n  const self = this;\n  let index = self.events.length;\n  /** @type {Token} */\n  let labelStart;\n  /** @type {boolean} */\n  let defined;\n\n  // Find an opening.\n  while (index--) {\n    if ((self.events[index][1].type === \"labelImage\" || self.events[index][1].type === \"labelLink\") && !self.events[index][1]._balanced) {\n      labelStart = self.events[index][1];\n      break;\n    }\n  }\n  return start;\n\n  /**\n   * Start of label end.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *       ^\n   * > | [a][b] c\n   *       ^\n   * > | [a][] b\n   *       ^\n   * > | [a] b\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // If there is not an okay opening.\n    if (!labelStart) {\n      return nok(code);\n    }\n\n    // If the corresponding label (link) start is marked as inactive,\n    // it means we’d be wrapping a link, like this:\n    //\n    // ```markdown\n    // > | a [b [c](d) e](f) g.\n    //                  ^\n    // ```\n    //\n    // We can’t have that, so it’s just balanced brackets.\n    if (labelStart._inactive) {\n      return labelEndNok(code);\n    }\n    defined = self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize({\n      start: labelStart.end,\n      end: self.now()\n    })));\n    effects.enter(\"labelEnd\");\n    effects.enter(\"labelMarker\");\n    effects.consume(code);\n    effects.exit(\"labelMarker\");\n    effects.exit(\"labelEnd\");\n    return after;\n  }\n\n  /**\n   * After `]`.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *       ^\n   * > | [a][b] c\n   *       ^\n   * > | [a][] b\n   *       ^\n   * > | [a] b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    // Note: `markdown-rs` also parses GFM footnotes here, which for us is in\n    // an extension.\n\n    // Resource (`[asd](fgh)`)?\n    if (code === 40) {\n      return effects.attempt(resourceConstruct, labelEndOk, defined ? labelEndOk : labelEndNok)(code);\n    }\n\n    // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference?\n    if (code === 91) {\n      return effects.attempt(referenceFullConstruct, labelEndOk, defined ? referenceNotFull : labelEndNok)(code);\n    }\n\n    // Shortcut (`[asd]`) reference?\n    return defined ? labelEndOk(code) : labelEndNok(code);\n  }\n\n  /**\n   * After `]`, at `[`, but not at a full reference.\n   *\n   * > 👉 **Note**: we only get here if the label is defined.\n   *\n   * ```markdown\n   * > | [a][] b\n   *        ^\n   * > | [a] b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function referenceNotFull(code) {\n    return effects.attempt(referenceCollapsedConstruct, labelEndOk, labelEndNok)(code);\n  }\n\n  /**\n   * Done, we found something.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *           ^\n   * > | [a][b] c\n   *           ^\n   * > | [a][] b\n   *          ^\n   * > | [a] b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelEndOk(code) {\n    // Note: `markdown-rs` does a bunch of stuff here.\n    return ok(code);\n  }\n\n  /**\n   * Done, it’s nothing.\n   *\n   * There was an okay opening, but we didn’t match anything.\n   *\n   * ```markdown\n   * > | [a](b c\n   *        ^\n   * > | [a][b c\n   *        ^\n   * > | [a] b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelEndNok(code) {\n    labelStart._balanced = true;\n    return nok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeResource(effects, ok, nok) {\n  return resourceStart;\n\n  /**\n   * At a resource.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceStart(code) {\n    effects.enter(\"resource\");\n    effects.enter(\"resourceMarker\");\n    effects.consume(code);\n    effects.exit(\"resourceMarker\");\n    return resourceBefore;\n  }\n\n  /**\n   * In resource, after `(`, at optional whitespace.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceBefore(code) {\n    return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceOpen)(code) : resourceOpen(code);\n  }\n\n  /**\n   * In resource, after optional whitespace, at `)` or a destination.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceOpen(code) {\n    if (code === 41) {\n      return resourceEnd(code);\n    }\n    return factoryDestination(effects, resourceDestinationAfter, resourceDestinationMissing, \"resourceDestination\", \"resourceDestinationLiteral\", \"resourceDestinationLiteralMarker\", \"resourceDestinationRaw\", \"resourceDestinationString\", 32)(code);\n  }\n\n  /**\n   * In resource, after destination, at optional whitespace.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceDestinationAfter(code) {\n    return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceBetween)(code) : resourceEnd(code);\n  }\n\n  /**\n   * At invalid destination.\n   *\n   * ```markdown\n   * > | [a](<<) b\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceDestinationMissing(code) {\n    return nok(code);\n  }\n\n  /**\n   * In resource, after destination and whitespace, at `(` or title.\n   *\n   * ```markdown\n   * > | [a](b ) c\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceBetween(code) {\n    if (code === 34 || code === 39 || code === 40) {\n      return factoryTitle(effects, resourceTitleAfter, nok, \"resourceTitle\", \"resourceTitleMarker\", \"resourceTitleString\")(code);\n    }\n    return resourceEnd(code);\n  }\n\n  /**\n   * In resource, after title, at optional whitespace.\n   *\n   * ```markdown\n   * > | [a](b \"c\") d\n   *              ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceTitleAfter(code) {\n    return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceEnd)(code) : resourceEnd(code);\n  }\n\n  /**\n   * In resource, at `)`.\n   *\n   * ```markdown\n   * > | [a](b) d\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceEnd(code) {\n    if (code === 41) {\n      effects.enter(\"resourceMarker\");\n      effects.consume(code);\n      effects.exit(\"resourceMarker\");\n      effects.exit(\"resource\");\n      return ok;\n    }\n    return nok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceFull(effects, ok, nok) {\n  const self = this;\n  return referenceFull;\n\n  /**\n   * In a reference (full), at the `[`.\n   *\n   * ```markdown\n   * > | [a][b] d\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function referenceFull(code) {\n    return factoryLabel.call(self, effects, referenceFullAfter, referenceFullMissing, \"reference\", \"referenceMarker\", \"referenceString\")(code);\n  }\n\n  /**\n   * In a reference (full), after `]`.\n   *\n   * ```markdown\n   * > | [a][b] d\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function referenceFullAfter(code) {\n    return self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1))) ? ok(code) : nok(code);\n  }\n\n  /**\n   * In reference (full) that was missing.\n   *\n   * ```markdown\n   * > | [a][b d\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function referenceFullMissing(code) {\n    return nok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n  return referenceCollapsedStart;\n\n  /**\n   * In reference (collapsed), at `[`.\n   *\n   * > 👉 **Note**: we only get here if the label is defined.\n   *\n   * ```markdown\n   * > | [a][] d\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function referenceCollapsedStart(code) {\n    // We only attempt a collapsed label if there’s a `[`.\n\n    effects.enter(\"reference\");\n    effects.enter(\"referenceMarker\");\n    effects.consume(code);\n    effects.exit(\"referenceMarker\");\n    return referenceCollapsedOpen;\n  }\n\n  /**\n   * In reference (collapsed), at `]`.\n   *\n   * > 👉 **Note**: we only get here if the label is defined.\n   *\n   * ```markdown\n   * > | [a][] d\n   *         ^\n   * ```\n   *\n   *  @type {State}\n   */\n  function referenceCollapsedOpen(code) {\n    if (code === 93) {\n      effects.enter(\"referenceMarker\");\n      effects.consume(code);\n      effects.exit(\"referenceMarker\");\n      effects.exit(\"reference\");\n      return ok;\n    }\n    return nok(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartImage = {\n  name: 'labelStartImage',\n  resolveAll: labelEnd.resolveAll,\n  tokenize: tokenizeLabelStartImage\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n  const self = this;\n  return start;\n\n  /**\n   * Start of label (image) start.\n   *\n   * ```markdown\n   * > | a ![b] c\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"labelImage\");\n    effects.enter(\"labelImageMarker\");\n    effects.consume(code);\n    effects.exit(\"labelImageMarker\");\n    return open;\n  }\n\n  /**\n   * After `!`, at `[`.\n   *\n   * ```markdown\n   * > | a ![b] c\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (code === 91) {\n      effects.enter(\"labelMarker\");\n      effects.consume(code);\n      effects.exit(\"labelMarker\");\n      effects.exit(\"labelImage\");\n      return after;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `![`.\n   *\n   * ```markdown\n   * > | a ![b] c\n   *         ^\n   * ```\n   *\n   * This is needed in because, when GFM footnotes are enabled, images never\n   * form when started with a `^`.\n   * Instead, links form:\n   *\n   * ```markdown\n   * ![^a](b)\n   *\n   * ![^a][b]\n   *\n   * [b]: c\n   * ```\n   *\n   * ```html\n   * <p>!<a href=\\\"b\\\">^a</a></p>\n   * <p>!<a href=\\\"c\\\">^a</a></p>\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    // To do: use a new field to do this, this is still needed for\n    // `micromark-extension-gfm-footnote`, but the `label-start-link`\n    // behavior isn’t.\n    // Hidden footnotes hook.\n    /* c8 ignore next 3 */\n    return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartLink = {\n  name: 'labelStartLink',\n  resolveAll: labelEnd.resolveAll,\n  tokenize: tokenizeLabelStartLink\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n  const self = this;\n  return start;\n\n  /**\n   * Start of label (link) start.\n   *\n   * ```markdown\n   * > | a [b] c\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"labelLink\");\n    effects.enter(\"labelMarker\");\n    effects.consume(code);\n    effects.exit(\"labelMarker\");\n    effects.exit(\"labelLink\");\n    return after;\n  }\n\n  /** @type {State} */\n  function after(code) {\n    // To do: this isn’t needed in `micromark-extension-gfm-footnote`,\n    // remove.\n    // Hidden footnotes hook.\n    /* c8 ignore next 3 */\n    return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const lineEnding = {\n  name: 'lineEnding',\n  tokenize: tokenizeLineEnding\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLineEnding(effects, ok) {\n  return start;\n\n  /** @type {State} */\n  function start(code) {\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return factorySpace(effects, ok, \"linePrefix\");\n  }\n}","/**\n * @import {\n *   Code,\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const thematicBreak = {\n  name: 'thematicBreak',\n  tokenize: tokenizeThematicBreak\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeThematicBreak(effects, ok, nok) {\n  let size = 0;\n  /** @type {NonNullable<Code>} */\n  let marker;\n  return start;\n\n  /**\n   * Start of thematic break.\n   *\n   * ```markdown\n   * > | ***\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"thematicBreak\");\n    // To do: parse indent like `markdown-rs`.\n    return before(code);\n  }\n\n  /**\n   * After optional whitespace, at marker.\n   *\n   * ```markdown\n   * > | ***\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    marker = code;\n    return atBreak(code);\n  }\n\n  /**\n   * After something, before something else.\n   *\n   * ```markdown\n   * > | ***\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atBreak(code) {\n    if (code === marker) {\n      effects.enter(\"thematicBreakSequence\");\n      return sequence(code);\n    }\n    if (size >= 3 && (code === null || markdownLineEnding(code))) {\n      effects.exit(\"thematicBreak\");\n      return ok(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * In sequence.\n   *\n   * ```markdown\n   * > | ***\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function sequence(code) {\n    if (code === marker) {\n      effects.consume(code);\n      size++;\n      return sequence;\n    }\n    effects.exit(\"thematicBreakSequence\");\n    return markdownSpace(code) ? factorySpace(effects, atBreak, \"whitespace\")(code) : atBreak(code);\n  }\n}","/**\n * @import {\n *   Code,\n *   Construct,\n *   Exiter,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { asciiDigit, markdownSpace } from 'micromark-util-character';\nimport { blankLine } from './blank-line.js';\nimport { thematicBreak } from './thematic-break.js';\n\n/** @type {Construct} */\nexport const list = {\n  continuation: {\n    tokenize: tokenizeListContinuation\n  },\n  exit: tokenizeListEnd,\n  name: 'list',\n  tokenize: tokenizeListStart\n};\n\n/** @type {Construct} */\nconst listItemPrefixWhitespaceConstruct = {\n  partial: true,\n  tokenize: tokenizeListItemPrefixWhitespace\n};\n\n/** @type {Construct} */\nconst indentConstruct = {\n  partial: true,\n  tokenize: tokenizeIndent\n};\n\n// To do: `markdown-rs` parses list items on their own and later stitches them\n// together.\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListStart(effects, ok, nok) {\n  const self = this;\n  const tail = self.events[self.events.length - 1];\n  let initialSize = tail && tail[1].type === \"linePrefix\" ? tail[2].sliceSerialize(tail[1], true).length : 0;\n  let size = 0;\n  return start;\n\n  /** @type {State} */\n  function start(code) {\n    const kind = self.containerState.type || (code === 42 || code === 43 || code === 45 ? \"listUnordered\" : \"listOrdered\");\n    if (kind === \"listUnordered\" ? !self.containerState.marker || code === self.containerState.marker : asciiDigit(code)) {\n      if (!self.containerState.type) {\n        self.containerState.type = kind;\n        effects.enter(kind, {\n          _container: true\n        });\n      }\n      if (kind === \"listUnordered\") {\n        effects.enter(\"listItemPrefix\");\n        return code === 42 || code === 45 ? effects.check(thematicBreak, nok, atMarker)(code) : atMarker(code);\n      }\n      if (!self.interrupt || code === 49) {\n        effects.enter(\"listItemPrefix\");\n        effects.enter(\"listItemValue\");\n        return inside(code);\n      }\n    }\n    return nok(code);\n  }\n\n  /** @type {State} */\n  function inside(code) {\n    if (asciiDigit(code) && ++size < 10) {\n      effects.consume(code);\n      return inside;\n    }\n    if ((!self.interrupt || size < 2) && (self.containerState.marker ? code === self.containerState.marker : code === 41 || code === 46)) {\n      effects.exit(\"listItemValue\");\n      return atMarker(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * @type {State}\n   **/\n  function atMarker(code) {\n    effects.enter(\"listItemMarker\");\n    effects.consume(code);\n    effects.exit(\"listItemMarker\");\n    self.containerState.marker = self.containerState.marker || code;\n    return effects.check(blankLine,\n    // Can’t be empty when interrupting.\n    self.interrupt ? nok : onBlank, effects.attempt(listItemPrefixWhitespaceConstruct, endOfPrefix, otherPrefix));\n  }\n\n  /** @type {State} */\n  function onBlank(code) {\n    self.containerState.initialBlankLine = true;\n    initialSize++;\n    return endOfPrefix(code);\n  }\n\n  /** @type {State} */\n  function otherPrefix(code) {\n    if (markdownSpace(code)) {\n      effects.enter(\"listItemPrefixWhitespace\");\n      effects.consume(code);\n      effects.exit(\"listItemPrefixWhitespace\");\n      return endOfPrefix;\n    }\n    return nok(code);\n  }\n\n  /** @type {State} */\n  function endOfPrefix(code) {\n    self.containerState.size = initialSize + self.sliceSerialize(effects.exit(\"listItemPrefix\"), true).length;\n    return ok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListContinuation(effects, ok, nok) {\n  const self = this;\n  self.containerState._closeFlow = undefined;\n  return effects.check(blankLine, onBlank, notBlank);\n\n  /** @type {State} */\n  function onBlank(code) {\n    self.containerState.furtherBlankLines = self.containerState.furtherBlankLines || self.containerState.initialBlankLine;\n\n    // We have a blank line.\n    // Still, try to consume at most the items size.\n    return factorySpace(effects, ok, \"listItemIndent\", self.containerState.size + 1)(code);\n  }\n\n  /** @type {State} */\n  function notBlank(code) {\n    if (self.containerState.furtherBlankLines || !markdownSpace(code)) {\n      self.containerState.furtherBlankLines = undefined;\n      self.containerState.initialBlankLine = undefined;\n      return notInCurrentItem(code);\n    }\n    self.containerState.furtherBlankLines = undefined;\n    self.containerState.initialBlankLine = undefined;\n    return effects.attempt(indentConstruct, ok, notInCurrentItem)(code);\n  }\n\n  /** @type {State} */\n  function notInCurrentItem(code) {\n    // While we do continue, we signal that the flow should be closed.\n    self.containerState._closeFlow = true;\n    // As we’re closing flow, we’re no longer interrupting.\n    self.interrupt = undefined;\n    // Always populated by defaults.\n\n    return factorySpace(effects, effects.attempt(list, ok, nok), \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeIndent(effects, ok, nok) {\n  const self = this;\n  return factorySpace(effects, afterPrefix, \"listItemIndent\", self.containerState.size + 1);\n\n  /** @type {State} */\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1];\n    return tail && tail[1].type === \"listItemIndent\" && tail[2].sliceSerialize(tail[1], true).length === self.containerState.size ? ok(code) : nok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Exiter}\n */\nfunction tokenizeListEnd(effects) {\n  effects.exit(this.containerState.type);\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n  const self = this;\n\n  // Always populated by defaults.\n\n  return factorySpace(effects, afterPrefix, \"listItemPrefixWhitespace\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4 + 1);\n\n  /** @type {State} */\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1];\n    return !markdownSpace(code) && tail && tail[1].type === \"listItemPrefixWhitespace\" ? ok(code) : nok(code);\n  }\n}","/**\n * @import {\n *   Code,\n *   Construct,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const setextUnderline = {\n  name: 'setextUnderline',\n  resolveTo: resolveToSetextUnderline,\n  tokenize: tokenizeSetextUnderline\n};\n\n/** @type {Resolver} */\nfunction resolveToSetextUnderline(events, context) {\n  // To do: resolve like `markdown-rs`.\n  let index = events.length;\n  /** @type {number | undefined} */\n  let content;\n  /** @type {number | undefined} */\n  let text;\n  /** @type {number | undefined} */\n  let definition;\n\n  // Find the opening of the content.\n  // It’ll always exist: we don’t tokenize if it isn’t there.\n  while (index--) {\n    if (events[index][0] === 'enter') {\n      if (events[index][1].type === \"content\") {\n        content = index;\n        break;\n      }\n      if (events[index][1].type === \"paragraph\") {\n        text = index;\n      }\n    }\n    // Exit\n    else {\n      if (events[index][1].type === \"content\") {\n        // Remove the content end (if needed we’ll add it later)\n        events.splice(index, 1);\n      }\n      if (!definition && events[index][1].type === \"definition\") {\n        definition = index;\n      }\n    }\n  }\n  const heading = {\n    type: \"setextHeading\",\n    start: {\n      ...events[content][1].start\n    },\n    end: {\n      ...events[events.length - 1][1].end\n    }\n  };\n\n  // Change the paragraph to setext heading text.\n  events[text][1].type = \"setextHeadingText\";\n\n  // If we have definitions in the content, we’ll keep on having content,\n  // but we need move it.\n  if (definition) {\n    events.splice(text, 0, ['enter', heading, context]);\n    events.splice(definition + 1, 0, ['exit', events[content][1], context]);\n    events[content][1].end = {\n      ...events[definition][1].end\n    };\n  } else {\n    events[content][1] = heading;\n  }\n\n  // Add the heading exit at the end.\n  events.push(['exit', heading, context]);\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n  const self = this;\n  /** @type {NonNullable<Code>} */\n  let marker;\n  return start;\n\n  /**\n   * At start of heading (setext) underline.\n   *\n   * ```markdown\n   *   | aa\n   * > | ==\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    let index = self.events.length;\n    /** @type {boolean | undefined} */\n    let paragraph;\n    // Find an opening.\n    while (index--) {\n      // Skip enter/exit of line ending, line prefix, and content.\n      // We can now either have a definition or a paragraph.\n      if (self.events[index][1].type !== \"lineEnding\" && self.events[index][1].type !== \"linePrefix\" && self.events[index][1].type !== \"content\") {\n        paragraph = self.events[index][1].type === \"paragraph\";\n        break;\n      }\n    }\n\n    // To do: handle lazy/pierce like `markdown-rs`.\n    // To do: parse indent like `markdown-rs`.\n    if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph)) {\n      effects.enter(\"setextHeadingLine\");\n      marker = code;\n      return before(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * After optional whitespace, at `-` or `=`.\n   *\n   * ```markdown\n   *   | aa\n   * > | ==\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    effects.enter(\"setextHeadingLineSequence\");\n    return inside(code);\n  }\n\n  /**\n   * In sequence.\n   *\n   * ```markdown\n   *   | aa\n   * > | ==\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    if (code === marker) {\n      effects.consume(code);\n      return inside;\n    }\n    effects.exit(\"setextHeadingLineSequence\");\n    return markdownSpace(code) ? factorySpace(effects, after, \"lineSuffix\")(code) : after(code);\n  }\n\n  /**\n   * After sequence, after optional whitespace.\n   *\n   * ```markdown\n   *   | aa\n   * > | ==\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"setextHeadingLine\");\n      return ok(code);\n    }\n    return nok(code);\n  }\n}","/**\n * @import {\n *   InitialConstruct,\n *   Initializer,\n *   State,\n *   TokenizeContext\n * } from 'micromark-util-types'\n */\n\nimport { blankLine, content } from 'micromark-core-commonmark';\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {InitialConstruct} */\nexport const flow = {\n  tokenize: initializeFlow\n};\n\n/**\n * @this {TokenizeContext}\n *   Self.\n * @type {Initializer}\n *   Initializer.\n */\nfunction initializeFlow(effects) {\n  const self = this;\n  const initial = effects.attempt(\n  // Try to parse a blank line.\n  blankLine, atBlankEnding,\n  // Try to parse initial flow (essentially, only code).\n  effects.attempt(this.parser.constructs.flowInitial, afterConstruct, factorySpace(effects, effects.attempt(this.parser.constructs.flow, afterConstruct, effects.attempt(content, afterConstruct)), \"linePrefix\")));\n  return initial;\n\n  /** @type {State} */\n  function atBlankEnding(code) {\n    if (code === null) {\n      effects.consume(code);\n      return;\n    }\n    effects.enter(\"lineEndingBlank\");\n    effects.consume(code);\n    effects.exit(\"lineEndingBlank\");\n    self.currentConstruct = undefined;\n    return initial;\n  }\n\n  /** @type {State} */\n  function afterConstruct(code) {\n    if (code === null) {\n      effects.consume(code);\n      return;\n    }\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    self.currentConstruct = undefined;\n    return initial;\n  }\n}","/**\n * @import {\n *   Code,\n *   InitialConstruct,\n *   Initializer,\n *   Resolver,\n *   State,\n *   TokenizeContext\n * } from 'micromark-util-types'\n */\n\nexport const resolver = {\n  resolveAll: createResolver()\n};\nexport const string = initializeFactory('string');\nexport const text = initializeFactory('text');\n\n/**\n * @param {'string' | 'text'} field\n *   Field.\n * @returns {InitialConstruct}\n *   Construct.\n */\nfunction initializeFactory(field) {\n  return {\n    resolveAll: createResolver(field === 'text' ? resolveAllLineSuffixes : undefined),\n    tokenize: initializeText\n  };\n\n  /**\n   * @this {TokenizeContext}\n   *   Context.\n   * @type {Initializer}\n   */\n  function initializeText(effects) {\n    const self = this;\n    const constructs = this.parser.constructs[field];\n    const text = effects.attempt(constructs, start, notText);\n    return start;\n\n    /** @type {State} */\n    function start(code) {\n      return atBreak(code) ? text(code) : notText(code);\n    }\n\n    /** @type {State} */\n    function notText(code) {\n      if (code === null) {\n        effects.consume(code);\n        return;\n      }\n      effects.enter(\"data\");\n      effects.consume(code);\n      return data;\n    }\n\n    /** @type {State} */\n    function data(code) {\n      if (atBreak(code)) {\n        effects.exit(\"data\");\n        return text(code);\n      }\n\n      // Data.\n      effects.consume(code);\n      return data;\n    }\n\n    /**\n     * @param {Code} code\n     *   Code.\n     * @returns {boolean}\n     *   Whether the code is a break.\n     */\n    function atBreak(code) {\n      if (code === null) {\n        return true;\n      }\n      const list = constructs[code];\n      let index = -1;\n      if (list) {\n        // Always populated by defaults.\n\n        while (++index < list.length) {\n          const item = list[index];\n          if (!item.previous || item.previous.call(self, self.previous)) {\n            return true;\n          }\n        }\n      }\n      return false;\n    }\n  }\n}\n\n/**\n * @param {Resolver | undefined} [extraResolver]\n *   Resolver.\n * @returns {Resolver}\n *   Resolver.\n */\nfunction createResolver(extraResolver) {\n  return resolveAllText;\n\n  /** @type {Resolver} */\n  function resolveAllText(events, context) {\n    let index = -1;\n    /** @type {number | undefined} */\n    let enter;\n\n    // A rather boring computation (to merge adjacent `data` events) which\n    // improves mm performance by 29%.\n    while (++index <= events.length) {\n      if (enter === undefined) {\n        if (events[index] && events[index][1].type === \"data\") {\n          enter = index;\n          index++;\n        }\n      } else if (!events[index] || events[index][1].type !== \"data\") {\n        // Don’t do anything if there is one data token.\n        if (index !== enter + 2) {\n          events[enter][1].end = events[index - 1][1].end;\n          events.splice(enter + 2, index - enter - 2);\n          index = enter + 2;\n        }\n        enter = undefined;\n      }\n    }\n    return extraResolver ? extraResolver(events, context) : events;\n  }\n}\n\n/**\n * A rather ugly set of instructions which again looks at chunks in the input\n * stream.\n * The reason to do this here is that it is *much* faster to parse in reverse.\n * And that we can’t hook into `null` to split the line suffix before an EOF.\n * To do: figure out if we can make this into a clean utility, or even in core.\n * As it will be useful for GFMs literal autolink extension (and maybe even\n * tables?)\n *\n * @type {Resolver}\n */\nfunction resolveAllLineSuffixes(events, context) {\n  let eventIndex = 0; // Skip first.\n\n  while (++eventIndex <= events.length) {\n    if ((eventIndex === events.length || events[eventIndex][1].type === \"lineEnding\") && events[eventIndex - 1][1].type === \"data\") {\n      const data = events[eventIndex - 1][1];\n      const chunks = context.sliceStream(data);\n      let index = chunks.length;\n      let bufferIndex = -1;\n      let size = 0;\n      /** @type {boolean | undefined} */\n      let tabs;\n      while (index--) {\n        const chunk = chunks[index];\n        if (typeof chunk === 'string') {\n          bufferIndex = chunk.length;\n          while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n            size++;\n            bufferIndex--;\n          }\n          if (bufferIndex) break;\n          bufferIndex = -1;\n        }\n        // Number\n        else if (chunk === -2) {\n          tabs = true;\n          size++;\n        } else if (chunk === -1) {\n          // Empty\n        } else {\n          // Replacement character, exit.\n          index++;\n          break;\n        }\n      }\n\n      // Allow final trailing whitespace.\n      if (context._contentTypeTextTrailing && eventIndex === events.length) {\n        size = 0;\n      }\n      if (size) {\n        const token = {\n          type: eventIndex === events.length || tabs || size < 2 ? \"lineSuffix\" : \"hardBreakTrailing\",\n          start: {\n            _bufferIndex: index ? bufferIndex : data.start._bufferIndex + bufferIndex,\n            _index: data.start._index + index,\n            line: data.end.line,\n            column: data.end.column - size,\n            offset: data.end.offset - size\n          },\n          end: {\n            ...data.end\n          }\n        };\n        data.end = {\n          ...token.start\n        };\n        if (data.start.offset === data.end.offset) {\n          Object.assign(data, token);\n        } else {\n          events.splice(eventIndex, 0, ['enter', token, context], ['exit', token, context]);\n          eventIndex += 2;\n        }\n      }\n      eventIndex++;\n    }\n  }\n  return events;\n}","/**\n * @import {Extension} from 'micromark-util-types'\n */\n\nimport { attention, autolink, blockQuote, characterEscape, characterReference, codeFenced, codeIndented, codeText, definition, hardBreakEscape, headingAtx, htmlFlow, htmlText, labelEnd, labelStartImage, labelStartLink, lineEnding, list, setextUnderline, thematicBreak } from 'micromark-core-commonmark';\nimport { resolver as resolveText } from './initialize/text.js';\n\n/** @satisfies {Extension['document']} */\nexport const document = {\n  [42]: list,\n  [43]: list,\n  [45]: list,\n  [48]: list,\n  [49]: list,\n  [50]: list,\n  [51]: list,\n  [52]: list,\n  [53]: list,\n  [54]: list,\n  [55]: list,\n  [56]: list,\n  [57]: list,\n  [62]: blockQuote\n};\n\n/** @satisfies {Extension['contentInitial']} */\nexport const contentInitial = {\n  [91]: definition\n};\n\n/** @satisfies {Extension['flowInitial']} */\nexport const flowInitial = {\n  [-2]: codeIndented,\n  [-1]: codeIndented,\n  [32]: codeIndented\n};\n\n/** @satisfies {Extension['flow']} */\nexport const flow = {\n  [35]: headingAtx,\n  [42]: thematicBreak,\n  [45]: [setextUnderline, thematicBreak],\n  [60]: htmlFlow,\n  [61]: setextUnderline,\n  [95]: thematicBreak,\n  [96]: codeFenced,\n  [126]: codeFenced\n};\n\n/** @satisfies {Extension['string']} */\nexport const string = {\n  [38]: characterReference,\n  [92]: characterEscape\n};\n\n/** @satisfies {Extension['text']} */\nexport const text = {\n  [-5]: lineEnding,\n  [-4]: lineEnding,\n  [-3]: lineEnding,\n  [33]: labelStartImage,\n  [38]: characterReference,\n  [42]: attention,\n  [60]: [autolink, htmlText],\n  [91]: labelStartLink,\n  [92]: [hardBreakEscape, characterEscape],\n  [93]: labelEnd,\n  [95]: attention,\n  [96]: codeText\n};\n\n/** @satisfies {Extension['insideSpan']} */\nexport const insideSpan = {\n  null: [attention, resolveText]\n};\n\n/** @satisfies {Extension['attentionMarkers']} */\nexport const attentionMarkers = {\n  null: [42, 95]\n};\n\n/** @satisfies {Extension['disable']} */\nexport const disable = {\n  null: []\n};","/**\n * @import {\n *   Chunk,\n *   Code,\n *   ConstructRecord,\n *   Construct,\n *   Effects,\n *   InitialConstruct,\n *   ParseContext,\n *   Point,\n *   State,\n *   TokenizeContext,\n *   Token\n * } from 'micromark-util-types'\n */\n\n/**\n * @callback Restore\n *   Restore the state.\n * @returns {undefined}\n *   Nothing.\n *\n * @typedef Info\n *   Info.\n * @property {Restore} restore\n *   Restore.\n * @property {number} from\n *   From.\n *\n * @callback ReturnHandle\n *   Handle a successful run.\n * @param {Construct} construct\n *   Construct.\n * @param {Info} info\n *   Info.\n * @returns {undefined}\n *   Nothing.\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { push, splice } from 'micromark-util-chunked';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/**\n * Create a tokenizer.\n * Tokenizers deal with one type of data (e.g., containers, flow, text).\n * The parser is the object dealing with it all.\n * `initialize` works like other constructs, except that only its `tokenize`\n * function is used, in which case it doesn’t receive an `ok` or `nok`.\n * `from` can be given to set the point before the first character, although\n * when further lines are indented, they must be set with `defineSkip`.\n *\n * @param {ParseContext} parser\n *   Parser.\n * @param {InitialConstruct} initialize\n *   Construct.\n * @param {Omit<Point, '_bufferIndex' | '_index'> | undefined} [from]\n *   Point (optional).\n * @returns {TokenizeContext}\n *   Context.\n */\nexport function createTokenizer(parser, initialize, from) {\n  /** @type {Point} */\n  let point = {\n    _bufferIndex: -1,\n    _index: 0,\n    line: from && from.line || 1,\n    column: from && from.column || 1,\n    offset: from && from.offset || 0\n  };\n  /** @type {Record<string, number>} */\n  const columnStart = {};\n  /** @type {Array<Construct>} */\n  const resolveAllConstructs = [];\n  /** @type {Array<Chunk>} */\n  let chunks = [];\n  /** @type {Array<Token>} */\n  let stack = [];\n  /** @type {boolean | undefined} */\n  let consumed = true;\n\n  /**\n   * Tools used for tokenizing.\n   *\n   * @type {Effects}\n   */\n  const effects = {\n    attempt: constructFactory(onsuccessfulconstruct),\n    check: constructFactory(onsuccessfulcheck),\n    consume,\n    enter,\n    exit,\n    interrupt: constructFactory(onsuccessfulcheck, {\n      interrupt: true\n    })\n  };\n\n  /**\n   * State and tools for resolving and serializing.\n   *\n   * @type {TokenizeContext}\n   */\n  const context = {\n    code: null,\n    containerState: {},\n    defineSkip,\n    events: [],\n    now,\n    parser,\n    previous: null,\n    sliceSerialize,\n    sliceStream,\n    write\n  };\n\n  /**\n   * The state function.\n   *\n   * @type {State | undefined}\n   */\n  let state = initialize.tokenize.call(context, effects);\n\n  /**\n   * Track which character we expect to be consumed, to catch bugs.\n   *\n   * @type {Code}\n   */\n  let expectedCode;\n  if (initialize.resolveAll) {\n    resolveAllConstructs.push(initialize);\n  }\n  return context;\n\n  /** @type {TokenizeContext['write']} */\n  function write(slice) {\n    chunks = push(chunks, slice);\n    main();\n\n    // Exit if we’re not done, resolve might change stuff.\n    if (chunks[chunks.length - 1] !== null) {\n      return [];\n    }\n    addResult(initialize, 0);\n\n    // Otherwise, resolve, and exit.\n    context.events = resolveAll(resolveAllConstructs, context.events, context);\n    return context.events;\n  }\n\n  //\n  // Tools.\n  //\n\n  /** @type {TokenizeContext['sliceSerialize']} */\n  function sliceSerialize(token, expandTabs) {\n    return serializeChunks(sliceStream(token), expandTabs);\n  }\n\n  /** @type {TokenizeContext['sliceStream']} */\n  function sliceStream(token) {\n    return sliceChunks(chunks, token);\n  }\n\n  /** @type {TokenizeContext['now']} */\n  function now() {\n    // This is a hot path, so we clone manually instead of `Object.assign({}, point)`\n    const {\n      _bufferIndex,\n      _index,\n      line,\n      column,\n      offset\n    } = point;\n    return {\n      _bufferIndex,\n      _index,\n      line,\n      column,\n      offset\n    };\n  }\n\n  /** @type {TokenizeContext['defineSkip']} */\n  function defineSkip(value) {\n    columnStart[value.line] = value.column;\n    accountForPotentialSkip();\n  }\n\n  //\n  // State management.\n  //\n\n  /**\n   * Main loop (note that `_index` and `_bufferIndex` in `point` are modified by\n   * `consume`).\n   * Here is where we walk through the chunks, which either include strings of\n   * several characters, or numerical character codes.\n   * The reason to do this in a loop instead of a call is so the stack can\n   * drain.\n   *\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function main() {\n    /** @type {number} */\n    let chunkIndex;\n    while (point._index < chunks.length) {\n      const chunk = chunks[point._index];\n\n      // If we’re in a buffer chunk, loop through it.\n      if (typeof chunk === 'string') {\n        chunkIndex = point._index;\n        if (point._bufferIndex < 0) {\n          point._bufferIndex = 0;\n        }\n        while (point._index === chunkIndex && point._bufferIndex < chunk.length) {\n          go(chunk.charCodeAt(point._bufferIndex));\n        }\n      } else {\n        go(chunk);\n      }\n    }\n  }\n\n  /**\n   * Deal with one code.\n   *\n   * @param {Code} code\n   *   Code.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function go(code) {\n    consumed = undefined;\n    expectedCode = code;\n    state = state(code);\n  }\n\n  /** @type {Effects['consume']} */\n  function consume(code) {\n    if (markdownLineEnding(code)) {\n      point.line++;\n      point.column = 1;\n      point.offset += code === -3 ? 2 : 1;\n      accountForPotentialSkip();\n    } else if (code !== -1) {\n      point.column++;\n      point.offset++;\n    }\n\n    // Not in a string chunk.\n    if (point._bufferIndex < 0) {\n      point._index++;\n    } else {\n      point._bufferIndex++;\n\n      // At end of string chunk.\n      if (point._bufferIndex ===\n      // Points w/ non-negative `_bufferIndex` reference\n      // strings.\n      /** @type {string} */\n      chunks[point._index].length) {\n        point._bufferIndex = -1;\n        point._index++;\n      }\n    }\n\n    // Expose the previous character.\n    context.previous = code;\n\n    // Mark as consumed.\n    consumed = true;\n  }\n\n  /** @type {Effects['enter']} */\n  function enter(type, fields) {\n    /** @type {Token} */\n    // @ts-expect-error Patch instead of assign required fields to help GC.\n    const token = fields || {};\n    token.type = type;\n    token.start = now();\n    context.events.push(['enter', token, context]);\n    stack.push(token);\n    return token;\n  }\n\n  /** @type {Effects['exit']} */\n  function exit(type) {\n    const token = stack.pop();\n    token.end = now();\n    context.events.push(['exit', token, context]);\n    return token;\n  }\n\n  /**\n   * Use results.\n   *\n   * @type {ReturnHandle}\n   */\n  function onsuccessfulconstruct(construct, info) {\n    addResult(construct, info.from);\n  }\n\n  /**\n   * Discard results.\n   *\n   * @type {ReturnHandle}\n   */\n  function onsuccessfulcheck(_, info) {\n    info.restore();\n  }\n\n  /**\n   * Factory to attempt/check/interrupt.\n   *\n   * @param {ReturnHandle} onreturn\n   *   Callback.\n   * @param {{interrupt?: boolean | undefined} | undefined} [fields]\n   *   Fields.\n   */\n  function constructFactory(onreturn, fields) {\n    return hook;\n\n    /**\n     * Handle either an object mapping codes to constructs, a list of\n     * constructs, or a single construct.\n     *\n     * @param {Array<Construct> | ConstructRecord | Construct} constructs\n     *   Constructs.\n     * @param {State} returnState\n     *   State.\n     * @param {State | undefined} [bogusState]\n     *   State.\n     * @returns {State}\n     *   State.\n     */\n    function hook(constructs, returnState, bogusState) {\n      /** @type {ReadonlyArray<Construct>} */\n      let listOfConstructs;\n      /** @type {number} */\n      let constructIndex;\n      /** @type {Construct} */\n      let currentConstruct;\n      /** @type {Info} */\n      let info;\n      return Array.isArray(constructs) ? /* c8 ignore next 1 */\n      handleListOfConstructs(constructs) : 'tokenize' in constructs ?\n      // Looks like a construct.\n      handleListOfConstructs([(/** @type {Construct} */constructs)]) : handleMapOfConstructs(constructs);\n\n      /**\n       * Handle a list of construct.\n       *\n       * @param {ConstructRecord} map\n       *   Constructs.\n       * @returns {State}\n       *   State.\n       */\n      function handleMapOfConstructs(map) {\n        return start;\n\n        /** @type {State} */\n        function start(code) {\n          const left = code !== null && map[code];\n          const all = code !== null && map.null;\n          const list = [\n          // To do: add more extension tests.\n          /* c8 ignore next 2 */\n          ...(Array.isArray(left) ? left : left ? [left] : []), ...(Array.isArray(all) ? all : all ? [all] : [])];\n          return handleListOfConstructs(list)(code);\n        }\n      }\n\n      /**\n       * Handle a list of construct.\n       *\n       * @param {ReadonlyArray<Construct>} list\n       *   Constructs.\n       * @returns {State}\n       *   State.\n       */\n      function handleListOfConstructs(list) {\n        listOfConstructs = list;\n        constructIndex = 0;\n        if (list.length === 0) {\n          return bogusState;\n        }\n        return handleConstruct(list[constructIndex]);\n      }\n\n      /**\n       * Handle a single construct.\n       *\n       * @param {Construct} construct\n       *   Construct.\n       * @returns {State}\n       *   State.\n       */\n      function handleConstruct(construct) {\n        return start;\n\n        /** @type {State} */\n        function start(code) {\n          // To do: not needed to store if there is no bogus state, probably?\n          // Currently doesn’t work because `inspect` in document does a check\n          // w/o a bogus, which doesn’t make sense. But it does seem to help perf\n          // by not storing.\n          info = store();\n          currentConstruct = construct;\n          if (!construct.partial) {\n            context.currentConstruct = construct;\n          }\n\n          // Always populated by defaults.\n\n          if (construct.name && context.parser.constructs.disable.null.includes(construct.name)) {\n            return nok(code);\n          }\n          return construct.tokenize.call(\n          // If we do have fields, create an object w/ `context` as its\n          // prototype.\n          // This allows a “live binding”, which is needed for `interrupt`.\n          fields ? Object.assign(Object.create(context), fields) : context, effects, ok, nok)(code);\n        }\n      }\n\n      /** @type {State} */\n      function ok(code) {\n        consumed = true;\n        onreturn(currentConstruct, info);\n        return returnState;\n      }\n\n      /** @type {State} */\n      function nok(code) {\n        consumed = true;\n        info.restore();\n        if (++constructIndex < listOfConstructs.length) {\n          return handleConstruct(listOfConstructs[constructIndex]);\n        }\n        return bogusState;\n      }\n    }\n  }\n\n  /**\n   * @param {Construct} construct\n   *   Construct.\n   * @param {number} from\n   *   From.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function addResult(construct, from) {\n    if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {\n      resolveAllConstructs.push(construct);\n    }\n    if (construct.resolve) {\n      splice(context.events, from, context.events.length - from, construct.resolve(context.events.slice(from), context));\n    }\n    if (construct.resolveTo) {\n      context.events = construct.resolveTo(context.events, context);\n    }\n  }\n\n  /**\n   * Store state.\n   *\n   * @returns {Info}\n   *   Info.\n   */\n  function store() {\n    const startPoint = now();\n    const startPrevious = context.previous;\n    const startCurrentConstruct = context.currentConstruct;\n    const startEventsIndex = context.events.length;\n    const startStack = Array.from(stack);\n    return {\n      from: startEventsIndex,\n      restore\n    };\n\n    /**\n     * Restore state.\n     *\n     * @returns {undefined}\n     *   Nothing.\n     */\n    function restore() {\n      point = startPoint;\n      context.previous = startPrevious;\n      context.currentConstruct = startCurrentConstruct;\n      context.events.length = startEventsIndex;\n      stack = startStack;\n      accountForPotentialSkip();\n    }\n  }\n\n  /**\n   * Move the current point a bit forward in the line when it’s on a column\n   * skip.\n   *\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function accountForPotentialSkip() {\n    if (point.line in columnStart && point.column < 2) {\n      point.column = columnStart[point.line];\n      point.offset += columnStart[point.line] - 1;\n    }\n  }\n}\n\n/**\n * Get the chunks from a slice of chunks in the range of a token.\n *\n * @param {ReadonlyArray<Chunk>} chunks\n *   Chunks.\n * @param {Pick<Token, 'end' | 'start'>} token\n *   Token.\n * @returns {Array<Chunk>}\n *   Chunks.\n */\nfunction sliceChunks(chunks, token) {\n  const startIndex = token.start._index;\n  const startBufferIndex = token.start._bufferIndex;\n  const endIndex = token.end._index;\n  const endBufferIndex = token.end._bufferIndex;\n  /** @type {Array<Chunk>} */\n  let view;\n  if (startIndex === endIndex) {\n    // @ts-expect-error `_bufferIndex` is used on string chunks.\n    view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)];\n  } else {\n    view = chunks.slice(startIndex, endIndex);\n    if (startBufferIndex > -1) {\n      const head = view[0];\n      if (typeof head === 'string') {\n        view[0] = head.slice(startBufferIndex);\n        /* c8 ignore next 4 -- used to be used, no longer */\n      } else {\n        view.shift();\n      }\n    }\n    if (endBufferIndex > 0) {\n      // @ts-expect-error `_bufferIndex` is used on string chunks.\n      view.push(chunks[endIndex].slice(0, endBufferIndex));\n    }\n  }\n  return view;\n}\n\n/**\n * Get the string value of a slice of chunks.\n *\n * @param {ReadonlyArray<Chunk>} chunks\n *   Chunks.\n * @param {boolean | undefined} [expandTabs=false]\n *   Whether to expand tabs (default: `false`).\n * @returns {string}\n *   Result.\n */\nfunction serializeChunks(chunks, expandTabs) {\n  let index = -1;\n  /** @type {Array<string>} */\n  const result = [];\n  /** @type {boolean | undefined} */\n  let atTab;\n  while (++index < chunks.length) {\n    const chunk = chunks[index];\n    /** @type {string} */\n    let value;\n    if (typeof chunk === 'string') {\n      value = chunk;\n    } else switch (chunk) {\n      case -5:\n        {\n          value = \"\\r\";\n          break;\n        }\n      case -4:\n        {\n          value = \"\\n\";\n          break;\n        }\n      case -3:\n        {\n          value = \"\\r\" + \"\\n\";\n          break;\n        }\n      case -2:\n        {\n          value = expandTabs ? \" \" : \"\\t\";\n          break;\n        }\n      case -1:\n        {\n          if (!expandTabs && atTab) continue;\n          value = \" \";\n          break;\n        }\n      default:\n        {\n          // Currently only replacement character.\n          value = String.fromCharCode(chunk);\n        }\n    }\n    atTab = chunk === -2;\n    result.push(value);\n  }\n  return result.join('');\n}","/**\n * @import {\n *   Create,\n *   FullNormalizedExtension,\n *   InitialConstruct,\n *   ParseContext,\n *   ParseOptions\n * } from 'micromark-util-types'\n */\n\nimport { combineExtensions } from 'micromark-util-combine-extensions';\nimport { content } from './initialize/content.js';\nimport { document } from './initialize/document.js';\nimport { flow } from './initialize/flow.js';\nimport { string, text } from './initialize/text.js';\nimport * as defaultConstructs from './constructs.js';\nimport { createTokenizer } from './create-tokenizer.js';\n\n/**\n * @param {ParseOptions | null | undefined} [options]\n *   Configuration (optional).\n * @returns {ParseContext}\n *   Parser.\n */\nexport function parse(options) {\n  const settings = options || {};\n  const constructs = /** @type {FullNormalizedExtension} */\n  combineExtensions([defaultConstructs, ...(settings.extensions || [])]);\n\n  /** @type {ParseContext} */\n  const parser = {\n    constructs,\n    content: create(content),\n    defined: [],\n    document: create(document),\n    flow: create(flow),\n    lazy: {},\n    string: create(string),\n    text: create(text)\n  };\n  return parser;\n\n  /**\n   * @param {InitialConstruct} initial\n   *   Construct to start with.\n   * @returns {Create}\n   *   Create a tokenizer.\n   */\n  function create(initial) {\n    return creator;\n    /** @type {Create} */\n    function creator(from) {\n      return createTokenizer(parser, initial, from);\n    }\n  }\n}","/**\n * @import {Event} from 'micromark-util-types'\n */\n\nimport { subtokenize } from 'micromark-util-subtokenize';\n\n/**\n * @param {Array<Event>} events\n *   Events.\n * @returns {Array<Event>}\n *   Events.\n */\nexport function postprocess(events) {\n  while (!subtokenize(events)) {\n    // Empty\n  }\n  return events;\n}","/**\n * @import {Chunk, Code, Encoding, Value} from 'micromark-util-types'\n */\n\n/**\n * @callback Preprocessor\n *   Preprocess a value.\n * @param {Value} value\n *   Value.\n * @param {Encoding | null | undefined} [encoding]\n *   Encoding when `value` is a typed array (optional).\n * @param {boolean | null | undefined} [end=false]\n *   Whether this is the last chunk (default: `false`).\n * @returns {Array<Chunk>}\n *   Chunks.\n */\n\nconst search = /[\\0\\t\\n\\r]/g;\n\n/**\n * @returns {Preprocessor}\n *   Preprocess a value.\n */\nexport function preprocess() {\n  let column = 1;\n  let buffer = '';\n  /** @type {boolean | undefined} */\n  let start = true;\n  /** @type {boolean | undefined} */\n  let atCarriageReturn;\n  return preprocessor;\n\n  /** @type {Preprocessor} */\n  // eslint-disable-next-line complexity\n  function preprocessor(value, encoding, end) {\n    /** @type {Array<Chunk>} */\n    const chunks = [];\n    /** @type {RegExpMatchArray | null} */\n    let match;\n    /** @type {number} */\n    let next;\n    /** @type {number} */\n    let startPosition;\n    /** @type {number} */\n    let endPosition;\n    /** @type {Code} */\n    let code;\n    value = buffer + (typeof value === 'string' ? value.toString() : new TextDecoder(encoding || undefined).decode(value));\n    startPosition = 0;\n    buffer = '';\n    if (start) {\n      // To do: `markdown-rs` actually parses BOMs (byte order mark).\n      if (value.charCodeAt(0) === 65279) {\n        startPosition++;\n      }\n      start = undefined;\n    }\n    while (startPosition < value.length) {\n      search.lastIndex = startPosition;\n      match = search.exec(value);\n      endPosition = match && match.index !== undefined ? match.index : value.length;\n      code = value.charCodeAt(endPosition);\n      if (!match) {\n        buffer = value.slice(startPosition);\n        break;\n      }\n      if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n        chunks.push(-3);\n        atCarriageReturn = undefined;\n      } else {\n        if (atCarriageReturn) {\n          chunks.push(-5);\n          atCarriageReturn = undefined;\n        }\n        if (startPosition < endPosition) {\n          chunks.push(value.slice(startPosition, endPosition));\n          column += endPosition - startPosition;\n        }\n        switch (code) {\n          case 0:\n            {\n              chunks.push(65533);\n              column++;\n              break;\n            }\n          case 9:\n            {\n              next = Math.ceil(column / 4) * 4;\n              chunks.push(-2);\n              while (column++ < next) chunks.push(-1);\n              break;\n            }\n          case 10:\n            {\n              chunks.push(-4);\n              column = 1;\n              break;\n            }\n          default:\n            {\n              atCarriageReturn = true;\n              column = 1;\n            }\n        }\n      }\n      startPosition = endPosition + 1;\n    }\n    if (end) {\n      if (atCarriageReturn) chunks.push(-5);\n      if (buffer) chunks.push(buffer);\n      chunks.push(null);\n    }\n    return chunks;\n  }\n}","import { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference';\nconst characterEscapeOrReference = /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi;\n\n/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n *   Value to decode.\n * @returns {string}\n *   Decoded value.\n */\nexport function decodeString(value) {\n  return value.replace(characterEscapeOrReference, decode);\n}\n\n/**\n * @param {string} $0\n *   Match.\n * @param {string} $1\n *   Character escape.\n * @param {string} $2\n *   Character reference.\n * @returns {string}\n *   Decoded value\n */\nfunction decode($0, $1, $2) {\n  if ($1) {\n    // Escape.\n    return $1;\n  }\n\n  // Reference.\n  const head = $2.charCodeAt(0);\n  if (head === 35) {\n    const head = $2.charCodeAt(1);\n    const hex = head === 120 || head === 88;\n    return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10);\n  }\n  return decodeNamedCharacterReference($2) || $0;\n}","/**\n * @import {\n *   Break,\n *   Blockquote,\n *   Code,\n *   Definition,\n *   Emphasis,\n *   Heading,\n *   Html,\n *   Image,\n *   InlineCode,\n *   Link,\n *   ListItem,\n *   List,\n *   Nodes,\n *   Paragraph,\n *   PhrasingContent,\n *   ReferenceType,\n *   Root,\n *   Strong,\n *   Text,\n *   ThematicBreak\n * } from 'mdast'\n * @import {\n *   Encoding,\n *   Event,\n *   Token,\n *   Value\n * } from 'micromark-util-types'\n * @import {Point} from 'unist'\n * @import {\n *   CompileContext,\n *   CompileData,\n *   Config,\n *   Extension,\n *   Handle,\n *   OnEnterError,\n *   Options\n * } from './types.js'\n */\n\nimport { toString } from 'mdast-util-to-string';\nimport { parse, postprocess, preprocess } from 'micromark';\nimport { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference';\nimport { decodeString } from 'micromark-util-decode-string';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { stringifyPosition } from 'unist-util-stringify-position';\nconst own = {}.hasOwnProperty;\n\n/**\n * Turn markdown into a syntax tree.\n *\n * @overload\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @overload\n * @param {Value} value\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @param {Value} value\n *   Markdown to parse.\n * @param {Encoding | Options | null | undefined} [encoding]\n *   Character encoding for when `value` is `Buffer`.\n * @param {Options | null | undefined} [options]\n *   Configuration.\n * @returns {Root}\n *   mdast tree.\n */\nexport function fromMarkdown(value, encoding, options) {\n  if (typeof encoding !== 'string') {\n    options = encoding;\n    encoding = undefined;\n  }\n  return compiler(options)(postprocess(parse(options).document().write(preprocess()(value, encoding, true))));\n}\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n  /** @type {Config} */\n  const config = {\n    transforms: [],\n    canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\n    enter: {\n      autolink: opener(link),\n      autolinkProtocol: onenterdata,\n      autolinkEmail: onenterdata,\n      atxHeading: opener(heading),\n      blockQuote: opener(blockQuote),\n      characterEscape: onenterdata,\n      characterReference: onenterdata,\n      codeFenced: opener(codeFlow),\n      codeFencedFenceInfo: buffer,\n      codeFencedFenceMeta: buffer,\n      codeIndented: opener(codeFlow, buffer),\n      codeText: opener(codeText, buffer),\n      codeTextData: onenterdata,\n      data: onenterdata,\n      codeFlowValue: onenterdata,\n      definition: opener(definition),\n      definitionDestinationString: buffer,\n      definitionLabelString: buffer,\n      definitionTitleString: buffer,\n      emphasis: opener(emphasis),\n      hardBreakEscape: opener(hardBreak),\n      hardBreakTrailing: opener(hardBreak),\n      htmlFlow: opener(html, buffer),\n      htmlFlowData: onenterdata,\n      htmlText: opener(html, buffer),\n      htmlTextData: onenterdata,\n      image: opener(image),\n      label: buffer,\n      link: opener(link),\n      listItem: opener(listItem),\n      listItemValue: onenterlistitemvalue,\n      listOrdered: opener(list, onenterlistordered),\n      listUnordered: opener(list),\n      paragraph: opener(paragraph),\n      reference: onenterreference,\n      referenceString: buffer,\n      resourceDestinationString: buffer,\n      resourceTitleString: buffer,\n      setextHeading: opener(heading),\n      strong: opener(strong),\n      thematicBreak: opener(thematicBreak)\n    },\n    exit: {\n      atxHeading: closer(),\n      atxHeadingSequence: onexitatxheadingsequence,\n      autolink: closer(),\n      autolinkEmail: onexitautolinkemail,\n      autolinkProtocol: onexitautolinkprotocol,\n      blockQuote: closer(),\n      characterEscapeValue: onexitdata,\n      characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n      characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n      characterReferenceValue: onexitcharacterreferencevalue,\n      characterReference: onexitcharacterreference,\n      codeFenced: closer(onexitcodefenced),\n      codeFencedFence: onexitcodefencedfence,\n      codeFencedFenceInfo: onexitcodefencedfenceinfo,\n      codeFencedFenceMeta: onexitcodefencedfencemeta,\n      codeFlowValue: onexitdata,\n      codeIndented: closer(onexitcodeindented),\n      codeText: closer(onexitcodetext),\n      codeTextData: onexitdata,\n      data: onexitdata,\n      definition: closer(),\n      definitionDestinationString: onexitdefinitiondestinationstring,\n      definitionLabelString: onexitdefinitionlabelstring,\n      definitionTitleString: onexitdefinitiontitlestring,\n      emphasis: closer(),\n      hardBreakEscape: closer(onexithardbreak),\n      hardBreakTrailing: closer(onexithardbreak),\n      htmlFlow: closer(onexithtmlflow),\n      htmlFlowData: onexitdata,\n      htmlText: closer(onexithtmltext),\n      htmlTextData: onexitdata,\n      image: closer(onexitimage),\n      label: onexitlabel,\n      labelText: onexitlabeltext,\n      lineEnding: onexitlineending,\n      link: closer(onexitlink),\n      listItem: closer(),\n      listOrdered: closer(),\n      listUnordered: closer(),\n      paragraph: closer(),\n      referenceString: onexitreferencestring,\n      resourceDestinationString: onexitresourcedestinationstring,\n      resourceTitleString: onexitresourcetitlestring,\n      resource: onexitresource,\n      setextHeading: closer(onexitsetextheading),\n      setextHeadingLineSequence: onexitsetextheadinglinesequence,\n      setextHeadingText: onexitsetextheadingtext,\n      strong: closer(),\n      thematicBreak: closer()\n    }\n  };\n  configure(config, (options || {}).mdastExtensions || []);\n\n  /** @type {CompileData} */\n  const data = {};\n  return compile;\n\n  /**\n   * Turn micromark events into an mdast tree.\n   *\n   * @param {Array<Event>} events\n   *   Events.\n   * @returns {Root}\n   *   mdast tree.\n   */\n  function compile(events) {\n    /** @type {Root} */\n    let tree = {\n      type: 'root',\n      children: []\n    };\n    /** @type {Omit<CompileContext, 'sliceSerialize'>} */\n    const context = {\n      stack: [tree],\n      tokenStack: [],\n      config,\n      enter,\n      exit,\n      buffer,\n      resume,\n      data\n    };\n    /** @type {Array<number>} */\n    const listStack = [];\n    let index = -1;\n    while (++index < events.length) {\n      // We preprocess lists to add `listItem` tokens, and to infer whether\n      // items the list itself are spread out.\n      if (events[index][1].type === \"listOrdered\" || events[index][1].type === \"listUnordered\") {\n        if (events[index][0] === 'enter') {\n          listStack.push(index);\n        } else {\n          const tail = listStack.pop();\n          index = prepareList(events, tail, index);\n        }\n      }\n    }\n    index = -1;\n    while (++index < events.length) {\n      const handler = config[events[index][0]];\n      if (own.call(handler, events[index][1].type)) {\n        handler[events[index][1].type].call(Object.assign({\n          sliceSerialize: events[index][2].sliceSerialize\n        }, context), events[index][1]);\n      }\n    }\n\n    // Handle tokens still being open.\n    if (context.tokenStack.length > 0) {\n      const tail = context.tokenStack[context.tokenStack.length - 1];\n      const handler = tail[1] || defaultOnError;\n      handler.call(context, undefined, tail[0]);\n    }\n\n    // Figure out `root` position.\n    tree.position = {\n      start: point(events.length > 0 ? events[0][1].start : {\n        line: 1,\n        column: 1,\n        offset: 0\n      }),\n      end: point(events.length > 0 ? events[events.length - 2][1].end : {\n        line: 1,\n        column: 1,\n        offset: 0\n      })\n    };\n\n    // Call transforms.\n    index = -1;\n    while (++index < config.transforms.length) {\n      tree = config.transforms[index](tree) || tree;\n    }\n    return tree;\n  }\n\n  /**\n   * @param {Array<Event>} events\n   * @param {number} start\n   * @param {number} length\n   * @returns {number}\n   */\n  function prepareList(events, start, length) {\n    let index = start - 1;\n    let containerBalance = -1;\n    let listSpread = false;\n    /** @type {Token | undefined} */\n    let listItem;\n    /** @type {number | undefined} */\n    let lineIndex;\n    /** @type {number | undefined} */\n    let firstBlankLineIndex;\n    /** @type {boolean | undefined} */\n    let atMarker;\n    while (++index <= length) {\n      const event = events[index];\n      switch (event[1].type) {\n        case \"listUnordered\":\n        case \"listOrdered\":\n        case \"blockQuote\":\n          {\n            if (event[0] === 'enter') {\n              containerBalance++;\n            } else {\n              containerBalance--;\n            }\n            atMarker = undefined;\n            break;\n          }\n        case \"lineEndingBlank\":\n          {\n            if (event[0] === 'enter') {\n              if (listItem && !atMarker && !containerBalance && !firstBlankLineIndex) {\n                firstBlankLineIndex = index;\n              }\n              atMarker = undefined;\n            }\n            break;\n          }\n        case \"linePrefix\":\n        case \"listItemValue\":\n        case \"listItemMarker\":\n        case \"listItemPrefix\":\n        case \"listItemPrefixWhitespace\":\n          {\n            // Empty.\n\n            break;\n          }\n        default:\n          {\n            atMarker = undefined;\n          }\n      }\n      if (!containerBalance && event[0] === 'enter' && event[1].type === \"listItemPrefix\" || containerBalance === -1 && event[0] === 'exit' && (event[1].type === \"listUnordered\" || event[1].type === \"listOrdered\")) {\n        if (listItem) {\n          let tailIndex = index;\n          lineIndex = undefined;\n          while (tailIndex--) {\n            const tailEvent = events[tailIndex];\n            if (tailEvent[1].type === \"lineEnding\" || tailEvent[1].type === \"lineEndingBlank\") {\n              if (tailEvent[0] === 'exit') continue;\n              if (lineIndex) {\n                events[lineIndex][1].type = \"lineEndingBlank\";\n                listSpread = true;\n              }\n              tailEvent[1].type = \"lineEnding\";\n              lineIndex = tailIndex;\n            } else if (tailEvent[1].type === \"linePrefix\" || tailEvent[1].type === \"blockQuotePrefix\" || tailEvent[1].type === \"blockQuotePrefixWhitespace\" || tailEvent[1].type === \"blockQuoteMarker\" || tailEvent[1].type === \"listItemIndent\") {\n              // Empty\n            } else {\n              break;\n            }\n          }\n          if (firstBlankLineIndex && (!lineIndex || firstBlankLineIndex < lineIndex)) {\n            listItem._spread = true;\n          }\n\n          // Fix position.\n          listItem.end = Object.assign({}, lineIndex ? events[lineIndex][1].start : event[1].end);\n          events.splice(lineIndex || index, 0, ['exit', listItem, event[2]]);\n          index++;\n          length++;\n        }\n\n        // Create a new list item.\n        if (event[1].type === \"listItemPrefix\") {\n          /** @type {Token} */\n          const item = {\n            type: 'listItem',\n            _spread: false,\n            start: Object.assign({}, event[1].start),\n            // @ts-expect-error: we’ll add `end` in a second.\n            end: undefined\n          };\n          listItem = item;\n          events.splice(index, 0, ['enter', item, event[2]]);\n          index++;\n          length++;\n          firstBlankLineIndex = undefined;\n          atMarker = true;\n        }\n      }\n    }\n    events[start][1]._spread = listSpread;\n    return length;\n  }\n\n  /**\n   * Create an opener handle.\n   *\n   * @param {(token: Token) => Nodes} create\n   *   Create a node.\n   * @param {Handle | undefined} [and]\n   *   Optional function to also run.\n   * @returns {Handle}\n   *   Handle.\n   */\n  function opener(create, and) {\n    return open;\n\n    /**\n     * @this {CompileContext}\n     * @param {Token} token\n     * @returns {undefined}\n     */\n    function open(token) {\n      enter.call(this, create(token), token);\n      if (and) and.call(this, token);\n    }\n  }\n\n  /**\n   * @type {CompileContext['buffer']}\n   */\n  function buffer() {\n    this.stack.push({\n      type: 'fragment',\n      children: []\n    });\n  }\n\n  /**\n   * @type {CompileContext['enter']}\n   */\n  function enter(node, token, errorHandler) {\n    const parent = this.stack[this.stack.length - 1];\n    /** @type {Array<Nodes>} */\n    const siblings = parent.children;\n    siblings.push(node);\n    this.stack.push(node);\n    this.tokenStack.push([token, errorHandler || undefined]);\n    node.position = {\n      start: point(token.start),\n      // @ts-expect-error: `end` will be patched later.\n      end: undefined\n    };\n  }\n\n  /**\n   * Create a closer handle.\n   *\n   * @param {Handle | undefined} [and]\n   *   Optional function to also run.\n   * @returns {Handle}\n   *   Handle.\n   */\n  function closer(and) {\n    return close;\n\n    /**\n     * @this {CompileContext}\n     * @param {Token} token\n     * @returns {undefined}\n     */\n    function close(token) {\n      if (and) and.call(this, token);\n      exit.call(this, token);\n    }\n  }\n\n  /**\n   * @type {CompileContext['exit']}\n   */\n  function exit(token, onExitError) {\n    const node = this.stack.pop();\n    const open = this.tokenStack.pop();\n    if (!open) {\n      throw new Error('Cannot close `' + token.type + '` (' + stringifyPosition({\n        start: token.start,\n        end: token.end\n      }) + '): it’s not open');\n    } else if (open[0].type !== token.type) {\n      if (onExitError) {\n        onExitError.call(this, token, open[0]);\n      } else {\n        const handler = open[1] || defaultOnError;\n        handler.call(this, token, open[0]);\n      }\n    }\n    node.position.end = point(token.end);\n  }\n\n  /**\n   * @type {CompileContext['resume']}\n   */\n  function resume() {\n    return toString(this.stack.pop());\n  }\n\n  //\n  // Handlers.\n  //\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onenterlistordered() {\n    this.data.expectingFirstListItemValue = true;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onenterlistitemvalue(token) {\n    if (this.data.expectingFirstListItemValue) {\n      const ancestor = this.stack[this.stack.length - 2];\n      ancestor.start = Number.parseInt(this.sliceSerialize(token), 10);\n      this.data.expectingFirstListItemValue = undefined;\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodefencedfenceinfo() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.lang = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodefencedfencemeta() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.meta = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodefencedfence() {\n    // Exit if this is the closing fence.\n    if (this.data.flowCodeInside) return;\n    this.buffer();\n    this.data.flowCodeInside = true;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodefenced() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '');\n    this.data.flowCodeInside = undefined;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodeindented() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.value = data.replace(/(\\r?\\n|\\r)$/g, '');\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitdefinitionlabelstring(token) {\n    const label = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.label = label;\n    node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitdefinitiontitlestring() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.title = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitdefinitiondestinationstring() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.url = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitatxheadingsequence(token) {\n    const node = this.stack[this.stack.length - 1];\n    if (!node.depth) {\n      const depth = this.sliceSerialize(token).length;\n      node.depth = depth;\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitsetextheadingtext() {\n    this.data.setextHeadingSlurpLineEnding = true;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitsetextheadinglinesequence(token) {\n    const node = this.stack[this.stack.length - 1];\n    node.depth = this.sliceSerialize(token).codePointAt(0) === 61 ? 1 : 2;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitsetextheading() {\n    this.data.setextHeadingSlurpLineEnding = undefined;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onenterdata(token) {\n    const node = this.stack[this.stack.length - 1];\n    /** @type {Array<Nodes>} */\n    const siblings = node.children;\n    let tail = siblings[siblings.length - 1];\n    if (!tail || tail.type !== 'text') {\n      // Add a new text node.\n      tail = text();\n      tail.position = {\n        start: point(token.start),\n        // @ts-expect-error: we’ll add `end` later.\n        end: undefined\n      };\n      siblings.push(tail);\n    }\n    this.stack.push(tail);\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitdata(token) {\n    const tail = this.stack.pop();\n    tail.value += this.sliceSerialize(token);\n    tail.position.end = point(token.end);\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitlineending(token) {\n    const context = this.stack[this.stack.length - 1];\n    // If we’re at a hard break, include the line ending in there.\n    if (this.data.atHardBreak) {\n      const tail = context.children[context.children.length - 1];\n      tail.position.end = point(token.end);\n      this.data.atHardBreak = undefined;\n      return;\n    }\n    if (!this.data.setextHeadingSlurpLineEnding && config.canContainEols.includes(context.type)) {\n      onenterdata.call(this, token);\n      onexitdata.call(this, token);\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexithardbreak() {\n    this.data.atHardBreak = true;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexithtmlflow() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.value = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexithtmltext() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.value = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitcodetext() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.value = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitlink() {\n    const node = this.stack[this.stack.length - 1];\n    // Note: there are also `identifier` and `label` fields on this link node!\n    // These are used / cleaned here.\n\n    // To do: clean.\n    if (this.data.inReference) {\n      /** @type {ReferenceType} */\n      const referenceType = this.data.referenceType || 'shortcut';\n      node.type += 'Reference';\n      // @ts-expect-error: mutate.\n      node.referenceType = referenceType;\n      // @ts-expect-error: mutate.\n      delete node.url;\n      delete node.title;\n    } else {\n      // @ts-expect-error: mutate.\n      delete node.identifier;\n      // @ts-expect-error: mutate.\n      delete node.label;\n    }\n    this.data.referenceType = undefined;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitimage() {\n    const node = this.stack[this.stack.length - 1];\n    // Note: there are also `identifier` and `label` fields on this link node!\n    // These are used / cleaned here.\n\n    // To do: clean.\n    if (this.data.inReference) {\n      /** @type {ReferenceType} */\n      const referenceType = this.data.referenceType || 'shortcut';\n      node.type += 'Reference';\n      // @ts-expect-error: mutate.\n      node.referenceType = referenceType;\n      // @ts-expect-error: mutate.\n      delete node.url;\n      delete node.title;\n    } else {\n      // @ts-expect-error: mutate.\n      delete node.identifier;\n      // @ts-expect-error: mutate.\n      delete node.label;\n    }\n    this.data.referenceType = undefined;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitlabeltext(token) {\n    const string = this.sliceSerialize(token);\n    const ancestor = this.stack[this.stack.length - 2];\n    // @ts-expect-error: stash this on the node, as it might become a reference\n    // later.\n    ancestor.label = decodeString(string);\n    // @ts-expect-error: same as above.\n    ancestor.identifier = normalizeIdentifier(string).toLowerCase();\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitlabel() {\n    const fragment = this.stack[this.stack.length - 1];\n    const value = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    // Assume a reference.\n    this.data.inReference = true;\n    if (node.type === 'link') {\n      /** @type {Array<PhrasingContent>} */\n      const children = fragment.children;\n      node.children = children;\n    } else {\n      node.alt = value;\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitresourcedestinationstring() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.url = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitresourcetitlestring() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.title = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitresource() {\n    this.data.inReference = undefined;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onenterreference() {\n    this.data.referenceType = 'collapsed';\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitreferencestring(token) {\n    const label = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    // @ts-expect-error: stash this on the node, as it might become a reference\n    // later.\n    node.label = label;\n    // @ts-expect-error: same as above.\n    node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n    this.data.referenceType = 'full';\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitcharacterreferencemarker(token) {\n    this.data.characterReferenceType = token.type;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcharacterreferencevalue(token) {\n    const data = this.sliceSerialize(token);\n    const type = this.data.characterReferenceType;\n    /** @type {string} */\n    let value;\n    if (type) {\n      value = decodeNumericCharacterReference(data, type === \"characterReferenceMarkerNumeric\" ? 10 : 16);\n      this.data.characterReferenceType = undefined;\n    } else {\n      const result = decodeNamedCharacterReference(data);\n      value = result;\n    }\n    const tail = this.stack[this.stack.length - 1];\n    tail.value += value;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcharacterreference(token) {\n    const tail = this.stack.pop();\n    tail.position.end = point(token.end);\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitautolinkprotocol(token) {\n    onexitdata.call(this, token);\n    const node = this.stack[this.stack.length - 1];\n    node.url = this.sliceSerialize(token);\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitautolinkemail(token) {\n    onexitdata.call(this, token);\n    const node = this.stack[this.stack.length - 1];\n    node.url = 'mailto:' + this.sliceSerialize(token);\n  }\n\n  //\n  // Creaters.\n  //\n\n  /** @returns {Blockquote} */\n  function blockQuote() {\n    return {\n      type: 'blockquote',\n      children: []\n    };\n  }\n\n  /** @returns {Code} */\n  function codeFlow() {\n    return {\n      type: 'code',\n      lang: null,\n      meta: null,\n      value: ''\n    };\n  }\n\n  /** @returns {InlineCode} */\n  function codeText() {\n    return {\n      type: 'inlineCode',\n      value: ''\n    };\n  }\n\n  /** @returns {Definition} */\n  function definition() {\n    return {\n      type: 'definition',\n      identifier: '',\n      label: null,\n      title: null,\n      url: ''\n    };\n  }\n\n  /** @returns {Emphasis} */\n  function emphasis() {\n    return {\n      type: 'emphasis',\n      children: []\n    };\n  }\n\n  /** @returns {Heading} */\n  function heading() {\n    return {\n      type: 'heading',\n      // @ts-expect-error `depth` will be set later.\n      depth: 0,\n      children: []\n    };\n  }\n\n  /** @returns {Break} */\n  function hardBreak() {\n    return {\n      type: 'break'\n    };\n  }\n\n  /** @returns {Html} */\n  function html() {\n    return {\n      type: 'html',\n      value: ''\n    };\n  }\n\n  /** @returns {Image} */\n  function image() {\n    return {\n      type: 'image',\n      title: null,\n      url: '',\n      alt: null\n    };\n  }\n\n  /** @returns {Link} */\n  function link() {\n    return {\n      type: 'link',\n      title: null,\n      url: '',\n      children: []\n    };\n  }\n\n  /**\n   * @param {Token} token\n   * @returns {List}\n   */\n  function list(token) {\n    return {\n      type: 'list',\n      ordered: token.type === 'listOrdered',\n      start: null,\n      spread: token._spread,\n      children: []\n    };\n  }\n\n  /**\n   * @param {Token} token\n   * @returns {ListItem}\n   */\n  function listItem(token) {\n    return {\n      type: 'listItem',\n      spread: token._spread,\n      checked: null,\n      children: []\n    };\n  }\n\n  /** @returns {Paragraph} */\n  function paragraph() {\n    return {\n      type: 'paragraph',\n      children: []\n    };\n  }\n\n  /** @returns {Strong} */\n  function strong() {\n    return {\n      type: 'strong',\n      children: []\n    };\n  }\n\n  /** @returns {Text} */\n  function text() {\n    return {\n      type: 'text',\n      value: ''\n    };\n  }\n\n  /** @returns {ThematicBreak} */\n  function thematicBreak() {\n    return {\n      type: 'thematicBreak'\n    };\n  }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n *   Point-like value.\n * @returns {Point}\n *   unist point.\n */\nfunction point(d) {\n  return {\n    line: d.line,\n    column: d.column,\n    offset: d.offset\n  };\n}\n\n/**\n * @param {Config} combined\n * @param {Array<Array<Extension> | Extension>} extensions\n * @returns {undefined}\n */\nfunction configure(combined, extensions) {\n  let index = -1;\n  while (++index < extensions.length) {\n    const value = extensions[index];\n    if (Array.isArray(value)) {\n      configure(combined, value);\n    } else {\n      extension(combined, value);\n    }\n  }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {undefined}\n */\nfunction extension(combined, extension) {\n  /** @type {keyof Extension} */\n  let key;\n  for (key in extension) {\n    if (own.call(extension, key)) {\n      switch (key) {\n        case 'canContainEols':\n          {\n            const right = extension[key];\n            if (right) {\n              combined[key].push(...right);\n            }\n            break;\n          }\n        case 'transforms':\n          {\n            const right = extension[key];\n            if (right) {\n              combined[key].push(...right);\n            }\n            break;\n          }\n        case 'enter':\n        case 'exit':\n          {\n            const right = extension[key];\n            if (right) {\n              Object.assign(combined[key], right);\n            }\n            break;\n          }\n        // No default\n      }\n    }\n  }\n}\n\n/** @type {OnEnterError} */\nfunction defaultOnError(left, right) {\n  if (left) {\n    throw new Error('Cannot close `' + left.type + '` (' + stringifyPosition({\n      start: left.start,\n      end: left.end\n    }) + '): a different token (`' + right.type + '`, ' + stringifyPosition({\n      start: right.start,\n      end: right.end\n    }) + ') is open');\n  } else {\n    throw new Error('Cannot close document, a token (`' + right.type + '`, ' + stringifyPosition({\n      start: right.start,\n      end: right.end\n    }) + ') is still open');\n  }\n}","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} FromMarkdownOptions\n * @typedef {import('unified').Parser<Root>} Parser\n * @typedef {import('unified').Processor<Root>} Processor\n */\n\n/**\n * @typedef {Omit<FromMarkdownOptions, 'extensions' | 'mdastExtensions'>} Options\n */\n\nimport {fromMarkdown} from 'mdast-util-from-markdown'\n\n/**\n * Aadd support for parsing from markdown.\n *\n * @param {Readonly<Options> | null | undefined} [options]\n *   Configuration (optional).\n * @returns {undefined}\n *   Nothing.\n */\nexport default function remarkParse(options) {\n  /** @type {Processor} */\n  // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly.\n  const self = this\n\n  self.parser = parser\n\n  /**\n   * @type {Parser}\n   */\n  function parser(doc) {\n    return fromMarkdown(doc, {\n      ...self.data('settings'),\n      ...options,\n      // Note: these options are not in the readme.\n      // The goal is for them to be set by plugins on `data` instead of being\n      // passed by users.\n      extensions: self.data('micromarkExtensions') || [],\n      mdastExtensions: self.data('fromMarkdownExtensions') || []\n    })\n  }\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `blockquote` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Blockquote} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function blockquote(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'blockquote',\n    properties: {},\n    children: state.wrap(state.all(node), true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').Break} Break\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `break` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Break} node\n *   mdast node.\n * @returns {Array<Element | Text>}\n *   hast element content.\n */\nexport function hardBreak(state, node) {\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'br', properties: {}, children: []}\n  state.patch(node, result)\n  return [state.applyData(node, result), {type: 'text', value: '\\n'}]\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Code} Code\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `code` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Code} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function code(state, node) {\n  const value = node.value ? node.value + '\\n' : ''\n  /** @type {Properties} */\n  const properties = {}\n\n  if (node.lang) {\n    properties.className = ['language-' + node.lang]\n  }\n\n  // Create `<code>`.\n  /** @type {Element} */\n  let result = {\n    type: 'element',\n    tagName: 'code',\n    properties,\n    children: [{type: 'text', value}]\n  }\n\n  if (node.meta) {\n    result.data = {meta: node.meta}\n  }\n\n  state.patch(node, result)\n  result = state.applyData(node, result)\n\n  // Create `<pre>`.\n  result = {type: 'element', tagName: 'pre', properties: {}, children: [result]}\n  state.patch(node, result)\n  return result\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Delete} Delete\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `delete` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Delete} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strikethrough(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'del',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `emphasis` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Emphasis} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function emphasis(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'em',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `footnoteReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {FootnoteReference} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function footnoteReference(state, node) {\n  const clobberPrefix =\n    typeof state.options.clobberPrefix === 'string'\n      ? state.options.clobberPrefix\n      : 'user-content-'\n  const id = String(node.identifier).toUpperCase()\n  const safeId = normalizeUri(id.toLowerCase())\n  const index = state.footnoteOrder.indexOf(id)\n  /** @type {number} */\n  let counter\n\n  let reuseCounter = state.footnoteCounts.get(id)\n\n  if (reuseCounter === undefined) {\n    reuseCounter = 0\n    state.footnoteOrder.push(id)\n    counter = state.footnoteOrder.length\n  } else {\n    counter = index + 1\n  }\n\n  reuseCounter += 1\n  state.footnoteCounts.set(id, reuseCounter)\n\n  /** @type {Element} */\n  const link = {\n    type: 'element',\n    tagName: 'a',\n    properties: {\n      href: '#' + clobberPrefix + 'fn-' + safeId,\n      id:\n        clobberPrefix +\n        'fnref-' +\n        safeId +\n        (reuseCounter > 1 ? '-' + reuseCounter : ''),\n      dataFootnoteRef: true,\n      ariaDescribedBy: ['footnote-label']\n    },\n    children: [{type: 'text', value: String(counter)}]\n  }\n  state.patch(node, link)\n\n  /** @type {Element} */\n  const sup = {\n    type: 'element',\n    tagName: 'sup',\n    properties: {},\n    children: [link]\n  }\n  state.patch(node, sup)\n  return state.applyData(node, sup)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `heading` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Heading} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function heading(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'h' + node.depth,\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Html} Html\n * @typedef {import('../state.js').State} State\n * @typedef {import('../../index.js').Raw} Raw\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `html` node into hast (`raw` node in dangerous mode, otherwise\n * nothing).\n *\n * @param {State} state\n *   Info passed around.\n * @param {Html} node\n *   mdast node.\n * @returns {Element | Raw | undefined}\n *   hast node.\n */\nexport function html(state, node) {\n  if (state.options.allowDangerousHtml) {\n    /** @type {Raw} */\n    const result = {type: 'raw', value: node.value}\n    state.patch(node, result)\n    return state.applyData(node, result)\n  }\n\n  return undefined\n}\n","/**\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('mdast').Nodes} Nodes\n * @typedef {import('mdast').Reference} Reference\n *\n * @typedef {import('./state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Extract<Nodes, Reference>} node\n *   Reference node (image, link).\n * @returns {Array<ElementContent>}\n *   hast content.\n */\nexport function revert(state, node) {\n  const subtype = node.referenceType\n  let suffix = ']'\n\n  if (subtype === 'collapsed') {\n    suffix += '[]'\n  } else if (subtype === 'full') {\n    suffix += '[' + (node.label || node.identifier) + ']'\n  }\n\n  if (node.type === 'imageReference') {\n    return [{type: 'text', value: '![' + node.alt + suffix}]\n  }\n\n  const contents = state.all(node)\n  const head = contents[0]\n\n  if (head && head.type === 'text') {\n    head.value = '[' + head.value\n  } else {\n    contents.unshift({type: 'text', value: '['})\n  }\n\n  const tail = contents[contents.length - 1]\n\n  if (tail && tail.type === 'text') {\n    tail.value += suffix\n  } else {\n    contents.push({type: 'text', value: suffix})\n  }\n\n  return contents\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `imageReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ImageReference} node\n *   mdast node.\n * @returns {Array<ElementContent> | ElementContent}\n *   hast node.\n */\nexport function imageReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const definition = state.definitionById.get(id)\n\n  if (!definition) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(definition.url || ''), alt: node.alt}\n\n  if (definition.title !== null && definition.title !== undefined) {\n    properties.title = definition.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Image} Image\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `image` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Image} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function image(state, node) {\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(node.url)}\n\n  if (node.alt !== null && node.alt !== undefined) {\n    properties.alt = node.alt\n  }\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `inlineCode` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {InlineCode} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function inlineCode(state, node) {\n  /** @type {Text} */\n  const text = {type: 'text', value: node.value.replace(/\\r?\\n|\\r/g, ' ')}\n  state.patch(node, text)\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'code',\n    properties: {},\n    children: [text]\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `linkReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {LinkReference} node\n *   mdast node.\n * @returns {Array<ElementContent> | ElementContent}\n *   hast node.\n */\nexport function linkReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const definition = state.definitionById.get(id)\n\n  if (!definition) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(definition.url || '')}\n\n  if (definition.title !== null && definition.title !== undefined) {\n    properties.title = definition.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Link} Link\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `link` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Link} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function link(state, node) {\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(node.url)}\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `listItem` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ListItem} node\n *   mdast node.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nexport function listItem(state, node, parent) {\n  const results = state.all(node)\n  const loose = parent ? listLoose(parent) : listItemLoose(node)\n  /** @type {Properties} */\n  const properties = {}\n  /** @type {Array<ElementContent>} */\n  const children = []\n\n  if (typeof node.checked === 'boolean') {\n    const head = results[0]\n    /** @type {Element} */\n    let paragraph\n\n    if (head && head.type === 'element' && head.tagName === 'p') {\n      paragraph = head\n    } else {\n      paragraph = {type: 'element', tagName: 'p', properties: {}, children: []}\n      results.unshift(paragraph)\n    }\n\n    if (paragraph.children.length > 0) {\n      paragraph.children.unshift({type: 'text', value: ' '})\n    }\n\n    paragraph.children.unshift({\n      type: 'element',\n      tagName: 'input',\n      properties: {type: 'checkbox', checked: node.checked, disabled: true},\n      children: []\n    })\n\n    // According to github-markdown-css, this class hides bullet.\n    // See: <https://github.com/sindresorhus/github-markdown-css>.\n    properties.className = ['task-list-item']\n  }\n\n  let index = -1\n\n  while (++index < results.length) {\n    const child = results[index]\n\n    // Add eols before nodes, except if this is a loose, first paragraph.\n    if (\n      loose ||\n      index !== 0 ||\n      child.type !== 'element' ||\n      child.tagName !== 'p'\n    ) {\n      children.push({type: 'text', value: '\\n'})\n    }\n\n    if (child.type === 'element' && child.tagName === 'p' && !loose) {\n      children.push(...child.children)\n    } else {\n      children.push(child)\n    }\n  }\n\n  const tail = results[results.length - 1]\n\n  // Add a final eol.\n  if (tail && (loose || tail.type !== 'element' || tail.tagName !== 'p')) {\n    children.push({type: 'text', value: '\\n'})\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'li', properties, children}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n/**\n * @param {Parents} node\n * @return {Boolean}\n */\nfunction listLoose(node) {\n  let loose = false\n  if (node.type === 'list') {\n    loose = node.spread || false\n    const children = node.children\n    let index = -1\n\n    while (!loose && ++index < children.length) {\n      loose = listItemLoose(children[index])\n    }\n  }\n\n  return loose\n}\n\n/**\n * @param {ListItem} node\n * @return {Boolean}\n */\nfunction listItemLoose(node) {\n  const spread = node.spread\n\n  return spread === null || spread === undefined\n    ? node.children.length > 1\n    : spread\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').List} List\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `list` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {List} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function list(state, node) {\n  /** @type {Properties} */\n  const properties = {}\n  const results = state.all(node)\n  let index = -1\n\n  if (typeof node.start === 'number' && node.start !== 1) {\n    properties.start = node.start\n  }\n\n  // Like GitHub, add a class for custom styling.\n  while (++index < results.length) {\n    const child = results[index]\n\n    if (\n      child.type === 'element' &&\n      child.tagName === 'li' &&\n      child.properties &&\n      Array.isArray(child.properties.className) &&\n      child.properties.className.includes('task-list-item')\n    ) {\n      properties.className = ['contains-task-list']\n      break\n    }\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: node.ordered ? 'ol' : 'ul',\n    properties,\n    children: state.wrap(results, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `paragraph` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Paragraph} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function paragraph(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'p',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Parents} HastParents\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `root` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastRoot} node\n *   mdast node.\n * @returns {HastParents}\n *   hast node.\n */\nexport function root(state, node) {\n  /** @type {HastRoot} */\n  const result = {type: 'root', children: state.wrap(state.all(node))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `strong` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Strong} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strong(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'strong',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Table} Table\n * @typedef {import('../state.js').State} State\n */\n\nimport {pointEnd, pointStart} from 'unist-util-position'\n\n/**\n * Turn an mdast `table` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Table} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function table(state, node) {\n  const rows = state.all(node)\n  const firstRow = rows.shift()\n  /** @type {Array<Element>} */\n  const tableContent = []\n\n  if (firstRow) {\n    /** @type {Element} */\n    const head = {\n      type: 'element',\n      tagName: 'thead',\n      properties: {},\n      children: state.wrap([firstRow], true)\n    }\n    state.patch(node.children[0], head)\n    tableContent.push(head)\n  }\n\n  if (rows.length > 0) {\n    /** @type {Element} */\n    const body = {\n      type: 'element',\n      tagName: 'tbody',\n      properties: {},\n      children: state.wrap(rows, true)\n    }\n\n    const start = pointStart(node.children[1])\n    const end = pointEnd(node.children[node.children.length - 1])\n    if (start && end) body.position = {start, end}\n    tableContent.push(body)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'table',\n    properties: {},\n    children: state.wrap(tableContent, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('mdast').TableRow} TableRow\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `tableRow` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableRow} node\n *   mdast node.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nexport function tableRow(state, node, parent) {\n  const siblings = parent ? parent.children : undefined\n  // Generate a body row when without parent.\n  const rowIndex = siblings ? siblings.indexOf(node) : 1\n  const tagName = rowIndex === 0 ? 'th' : 'td'\n  // To do: option to use `style`?\n  const align = parent && parent.type === 'table' ? parent.align : undefined\n  const length = align ? align.length : node.children.length\n  let cellIndex = -1\n  /** @type {Array<ElementContent>} */\n  const cells = []\n\n  while (++cellIndex < length) {\n    // Note: can also be undefined.\n    const cell = node.children[cellIndex]\n    /** @type {Properties} */\n    const properties = {}\n    const alignValue = align ? align[cellIndex] : undefined\n\n    if (alignValue) {\n      properties.align = alignValue\n    }\n\n    /** @type {Element} */\n    let result = {type: 'element', tagName, properties, children: []}\n\n    if (cell) {\n      result.children = state.all(cell)\n      state.patch(cell, result)\n      result = state.applyData(cell, result)\n    }\n\n    cells.push(result)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'tr',\n    properties: {},\n    children: state.wrap(cells, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `tableCell` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableCell} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function tableCell(state, node) {\n  // Note: this function is normally not called: see `table-row` for how rows\n  // and their cells are compiled.\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'td', // Assume body cell.\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","const tab = 9 /* `\\t` */\nconst space = 32 /* ` ` */\n\n/**\n * Remove initial and final spaces and tabs at the line breaks in `value`.\n * Does not trim initial and final spaces and tabs of the value itself.\n *\n * @param {string} value\n *   Value to trim.\n * @returns {string}\n *   Trimmed value.\n */\nexport function trimLines(value) {\n  const source = String(value)\n  const search = /\\r?\\n|\\r/g\n  let match = search.exec(source)\n  let last = 0\n  /** @type {Array<string>} */\n  const lines = []\n\n  while (match) {\n    lines.push(\n      trimLine(source.slice(last, match.index), last > 0, true),\n      match[0]\n    )\n\n    last = match.index + match[0].length\n    match = search.exec(source)\n  }\n\n  lines.push(trimLine(source.slice(last), last > 0, false))\n\n  return lines.join('')\n}\n\n/**\n * @param {string} value\n *   Line to trim.\n * @param {boolean} start\n *   Whether to trim the start of the line.\n * @param {boolean} end\n *   Whether to trim the end of the line.\n * @returns {string}\n *   Trimmed line.\n */\nfunction trimLine(value, start, end) {\n  let startIndex = 0\n  let endIndex = value.length\n\n  if (start) {\n    let code = value.codePointAt(startIndex)\n\n    while (code === tab || code === space) {\n      startIndex++\n      code = value.codePointAt(startIndex)\n    }\n  }\n\n  if (end) {\n    let code = value.codePointAt(endIndex - 1)\n\n    while (code === tab || code === space) {\n      endIndex--\n      code = value.codePointAt(endIndex - 1)\n    }\n  }\n\n  return endIndex > startIndex ? value.slice(startIndex, endIndex) : ''\n}\n","/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').Text} HastText\n * @typedef {import('mdast').Text} MdastText\n * @typedef {import('../state.js').State} State\n */\n\nimport {trimLines} from 'trim-lines'\n\n/**\n * Turn an mdast `text` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastText} node\n *   mdast node.\n * @returns {HastElement | HastText}\n *   hast node.\n */\nexport function text(state, node) {\n  /** @type {HastText} */\n  const result = {type: 'text', value: trimLines(String(node.value))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `thematicBreak` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ThematicBreak} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function thematicBreak(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'hr',\n    properties: {},\n    children: []\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","import {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {strikethrough} from './delete.js'\nimport {emphasis} from './emphasis.js'\nimport {footnoteReference} from './footnote-reference.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {imageReference} from './image-reference.js'\nimport {image} from './image.js'\nimport {inlineCode} from './inline-code.js'\nimport {linkReference} from './link-reference.js'\nimport {link} from './link.js'\nimport {listItem} from './list-item.js'\nimport {list} from './list.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {table} from './table.js'\nimport {tableRow} from './table-row.js'\nimport {tableCell} from './table-cell.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default handlers for nodes.\n *\n * @satisfies {import('../state.js').Handlers}\n */\nexport const handlers = {\n  blockquote,\n  break: hardBreak,\n  code,\n  delete: strikethrough,\n  emphasis,\n  footnoteReference,\n  heading,\n  html,\n  imageReference,\n  image,\n  inlineCode,\n  linkReference,\n  link,\n  listItem,\n  list,\n  paragraph,\n  // @ts-expect-error: root is different, but hard to type.\n  root,\n  strong,\n  table,\n  tableCell,\n  tableRow,\n  text,\n  thematicBreak,\n  toml: ignore,\n  yaml: ignore,\n  definition: ignore,\n  footnoteDefinition: ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n  return undefined\n}\n","export const VOID       = -1;\nexport const PRIMITIVE  = 0;\nexport const ARRAY      = 1;\nexport const OBJECT     = 2;\nexport const DATE       = 3;\nexport const REGEXP     = 4;\nexport const MAP        = 5;\nexport const SET        = 6;\nexport const ERROR      = 7;\nexport const BIGINT     = 8;\n// export const SYMBOL = 9;\n","import {\n  VOID, PRIMITIVE,\n  ARRAY, OBJECT,\n  DATE, REGEXP, MAP, SET,\n  ERROR, BIGINT\n} from './types.js';\n\nconst env = typeof self === 'object' ? self : globalThis;\n\nconst deserializer = ($, _) => {\n  const as = (out, index) => {\n    $.set(index, out);\n    return out;\n  };\n\n  const unpair = index => {\n    if ($.has(index))\n      return $.get(index);\n\n    const [type, value] = _[index];\n    switch (type) {\n      case PRIMITIVE:\n      case VOID:\n        return as(value, index);\n      case ARRAY: {\n        const arr = as([], index);\n        for (const index of value)\n          arr.push(unpair(index));\n        return arr;\n      }\n      case OBJECT: {\n        const object = as({}, index);\n        for (const [key, index] of value)\n          object[unpair(key)] = unpair(index);\n        return object;\n      }\n      case DATE:\n        return as(new Date(value), index);\n      case REGEXP: {\n        const {source, flags} = value;\n        return as(new RegExp(source, flags), index);\n      }\n      case MAP: {\n        const map = as(new Map, index);\n        for (const [key, index] of value)\n          map.set(unpair(key), unpair(index));\n        return map;\n      }\n      case SET: {\n        const set = as(new Set, index);\n        for (const index of value)\n          set.add(unpair(index));\n        return set;\n      }\n      case ERROR: {\n        const {name, message} = value;\n        return as(new env[name](message), index);\n      }\n      case BIGINT:\n        return as(BigInt(value), index);\n      case 'BigInt':\n        return as(Object(BigInt(value)), index);\n      case 'ArrayBuffer':\n        return as(new Uint8Array(value).buffer, value);\n      case 'DataView': {\n        const { buffer } = new Uint8Array(value);\n        return as(new DataView(buffer), value);\n      }\n    }\n    return as(new env[type](value), index);\n  };\n\n  return unpair;\n};\n\n/**\n * @typedef {Array<string,any>} Record a type representation\n */\n\n/**\n * Returns a deserialized value from a serialized array of Records.\n * @param {Record[]} serialized a previously serialized value.\n * @returns {any}\n */\nexport const deserialize = serialized => deserializer(new Map, serialized)(0);\n","import {\n  VOID, PRIMITIVE,\n  ARRAY, OBJECT,\n  DATE, REGEXP, MAP, SET,\n  ERROR, BIGINT\n} from './types.js';\n\nconst EMPTY = '';\n\nconst {toString} = {};\nconst {keys} = Object;\n\nconst typeOf = value => {\n  const type = typeof value;\n  if (type !== 'object' || !value)\n    return [PRIMITIVE, type];\n\n  const asString = toString.call(value).slice(8, -1);\n  switch (asString) {\n    case 'Array':\n      return [ARRAY, EMPTY];\n    case 'Object':\n      return [OBJECT, EMPTY];\n    case 'Date':\n      return [DATE, EMPTY];\n    case 'RegExp':\n      return [REGEXP, EMPTY];\n    case 'Map':\n      return [MAP, EMPTY];\n    case 'Set':\n      return [SET, EMPTY];\n    case 'DataView':\n      return [ARRAY, asString];\n  }\n\n  if (asString.includes('Array'))\n    return [ARRAY, asString];\n\n  if (asString.includes('Error'))\n    return [ERROR, asString];\n\n  return [OBJECT, asString];\n};\n\nconst shouldSkip = ([TYPE, type]) => (\n  TYPE === PRIMITIVE &&\n  (type === 'function' || type === 'symbol')\n);\n\nconst serializer = (strict, json, $, _) => {\n\n  const as = (out, value) => {\n    const index = _.push(out) - 1;\n    $.set(value, index);\n    return index;\n  };\n\n  const pair = value => {\n    if ($.has(value))\n      return $.get(value);\n\n    let [TYPE, type] = typeOf(value);\n    switch (TYPE) {\n      case PRIMITIVE: {\n        let entry = value;\n        switch (type) {\n          case 'bigint':\n            TYPE = BIGINT;\n            entry = value.toString();\n            break;\n          case 'function':\n          case 'symbol':\n            if (strict)\n              throw new TypeError('unable to serialize ' + type);\n            entry = null;\n            break;\n          case 'undefined':\n            return as([VOID], value);\n        }\n        return as([TYPE, entry], value);\n      }\n      case ARRAY: {\n        if (type) {\n          let spread = value;\n          if (type === 'DataView') {\n            spread = new Uint8Array(value.buffer);\n          }\n          else if (type === 'ArrayBuffer') {\n            spread = new Uint8Array(value);\n          }\n          return as([type, [...spread]], value);\n        }\n\n        const arr = [];\n        const index = as([TYPE, arr], value);\n        for (const entry of value)\n          arr.push(pair(entry));\n        return index;\n      }\n      case OBJECT: {\n        if (type) {\n          switch (type) {\n            case 'BigInt':\n              return as([type, value.toString()], value);\n            case 'Boolean':\n            case 'Number':\n            case 'String':\n              return as([type, value.valueOf()], value);\n          }\n        }\n\n        if (json && ('toJSON' in value))\n          return pair(value.toJSON());\n\n        const entries = [];\n        const index = as([TYPE, entries], value);\n        for (const key of keys(value)) {\n          if (strict || !shouldSkip(typeOf(value[key])))\n            entries.push([pair(key), pair(value[key])]);\n        }\n        return index;\n      }\n      case DATE:\n        return as([TYPE, value.toISOString()], value);\n      case REGEXP: {\n        const {source, flags} = value;\n        return as([TYPE, {source, flags}], value);\n      }\n      case MAP: {\n        const entries = [];\n        const index = as([TYPE, entries], value);\n        for (const [key, entry] of value) {\n          if (strict || !(shouldSkip(typeOf(key)) || shouldSkip(typeOf(entry))))\n            entries.push([pair(key), pair(entry)]);\n        }\n        return index;\n      }\n      case SET: {\n        const entries = [];\n        const index = as([TYPE, entries], value);\n        for (const entry of value) {\n          if (strict || !shouldSkip(typeOf(entry)))\n            entries.push(pair(entry));\n        }\n        return index;\n      }\n    }\n\n    const {message} = value;\n    return as([TYPE, {name: type, message}], value);\n  };\n\n  return pair;\n};\n\n/**\n * @typedef {Array<string,any>} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} value a serializable value.\n * @param {{json?: boolean, lossy?: boolean}?} options an object with a `lossy` or `json` property that,\n *  if `true`, will not throw errors on incompatible types, and behave more\n *  like JSON stringify would behave. Symbol and Function will be discarded.\n * @returns {Record[]}\n */\n export const serialize = (value, {json, lossy} = {}) => {\n  const _ = [];\n  return serializer(!(json || lossy), !!json, new Map, _)(value), _;\n};\n","import {deserialize} from './deserialize.js';\nimport {serialize} from './serialize.js';\n\n/**\n * @typedef {Array<string,any>} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} any a serializable value.\n * @param {{transfer?: any[], json?: boolean, lossy?: boolean}?} options an object with\n * a transfer option (ignored when polyfilled) and/or non standard fields that\n * fallback to the polyfill if present.\n * @returns {Record[]}\n */\nexport default typeof structuredClone === \"function\" ?\n  /* c8 ignore start */\n  (any, options) => (\n    options && ('json' in options || 'lossy' in options) ?\n      deserialize(serialize(any, options)) : structuredClone(any)\n  ) :\n  (any, options) => deserialize(serialize(any, options));\n  /* c8 ignore stop */\n\nexport {deserialize, serialize};\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('./state.js').State} State\n */\n\n/**\n * @callback FootnoteBackContentTemplate\n *   Generate content for the backreference dynamically.\n *\n *   For the following markdown:\n *\n *   ```markdown\n *   Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n *   [^remark]: things about remark\n *   [^micromark]: things about micromark\n *   ```\n *\n *   This function will be called with:\n *\n *   *  `0` and `0` for the backreference from `things about micromark` to\n *      `alpha`, as it is the first used definition, and the first call to it\n *   *  `0` and `1` for the backreference from `things about micromark` to\n *      `bravo`, as it is the first used definition, and the second call to it\n *   *  `1` and `0` for the backreference from `things about remark` to\n *      `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n *   Index of the definition in the order that they are first referenced,\n *   0-indexed.\n * @param {number} rereferenceIndex\n *   Index of calls to the same definition, 0-indexed.\n * @returns {Array<ElementContent> | ElementContent | string}\n *   Content for the backreference when linking back from definitions to their\n *   reference.\n *\n * @callback FootnoteBackLabelTemplate\n *   Generate a back label dynamically.\n *\n *   For the following markdown:\n *\n *   ```markdown\n *   Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n *   [^remark]: things about remark\n *   [^micromark]: things about micromark\n *   ```\n *\n *   This function will be called with:\n *\n *   *  `0` and `0` for the backreference from `things about micromark` to\n *      `alpha`, as it is the first used definition, and the first call to it\n *   *  `0` and `1` for the backreference from `things about micromark` to\n *      `bravo`, as it is the first used definition, and the second call to it\n *   *  `1` and `0` for the backreference from `things about remark` to\n *      `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n *   Index of the definition in the order that they are first referenced,\n *   0-indexed.\n * @param {number} rereferenceIndex\n *   Index of calls to the same definition, 0-indexed.\n * @returns {string}\n *   Back label to use when linking back from definitions to their reference.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Generate the default content that GitHub uses on backreferences.\n *\n * @param {number} _\n *   Index of the definition in the order that they are first referenced,\n *   0-indexed.\n * @param {number} rereferenceIndex\n *   Index of calls to the same definition, 0-indexed.\n * @returns {Array<ElementContent>}\n *   Content.\n */\nexport function defaultFootnoteBackContent(_, rereferenceIndex) {\n  /** @type {Array<ElementContent>} */\n  const result = [{type: 'text', value: '↩'}]\n\n  if (rereferenceIndex > 1) {\n    result.push({\n      type: 'element',\n      tagName: 'sup',\n      properties: {},\n      children: [{type: 'text', value: String(rereferenceIndex)}]\n    })\n  }\n\n  return result\n}\n\n/**\n * Generate the default label that GitHub uses on backreferences.\n *\n * @param {number} referenceIndex\n *   Index of the definition in the order that they are first referenced,\n *   0-indexed.\n * @param {number} rereferenceIndex\n *   Index of calls to the same definition, 0-indexed.\n * @returns {string}\n *   Label.\n */\nexport function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n  return (\n    'Back to reference ' +\n    (referenceIndex + 1) +\n    (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n  )\n}\n\n/**\n * Generate a hast footer for called footnote definitions.\n *\n * @param {State} state\n *   Info passed around.\n * @returns {Element | undefined}\n *   `section` element or `undefined`.\n */\n// eslint-disable-next-line complexity\nexport function footer(state) {\n  const clobberPrefix =\n    typeof state.options.clobberPrefix === 'string'\n      ? state.options.clobberPrefix\n      : 'user-content-'\n  const footnoteBackContent =\n    state.options.footnoteBackContent || defaultFootnoteBackContent\n  const footnoteBackLabel =\n    state.options.footnoteBackLabel || defaultFootnoteBackLabel\n  const footnoteLabel = state.options.footnoteLabel || 'Footnotes'\n  const footnoteLabelTagName = state.options.footnoteLabelTagName || 'h2'\n  const footnoteLabelProperties = state.options.footnoteLabelProperties || {\n    className: ['sr-only']\n  }\n  /** @type {Array<ElementContent>} */\n  const listItems = []\n  let referenceIndex = -1\n\n  while (++referenceIndex < state.footnoteOrder.length) {\n    const definition = state.footnoteById.get(\n      state.footnoteOrder[referenceIndex]\n    )\n\n    if (!definition) {\n      continue\n    }\n\n    const content = state.all(definition)\n    const id = String(definition.identifier).toUpperCase()\n    const safeId = normalizeUri(id.toLowerCase())\n    let rereferenceIndex = 0\n    /** @type {Array<ElementContent>} */\n    const backReferences = []\n    const counts = state.footnoteCounts.get(id)\n\n    // eslint-disable-next-line no-unmodified-loop-condition\n    while (counts !== undefined && ++rereferenceIndex <= counts) {\n      if (backReferences.length > 0) {\n        backReferences.push({type: 'text', value: ' '})\n      }\n\n      let children =\n        typeof footnoteBackContent === 'string'\n          ? footnoteBackContent\n          : footnoteBackContent(referenceIndex, rereferenceIndex)\n\n      if (typeof children === 'string') {\n        children = {type: 'text', value: children}\n      }\n\n      backReferences.push({\n        type: 'element',\n        tagName: 'a',\n        properties: {\n          href:\n            '#' +\n            clobberPrefix +\n            'fnref-' +\n            safeId +\n            (rereferenceIndex > 1 ? '-' + rereferenceIndex : ''),\n          dataFootnoteBackref: '',\n          ariaLabel:\n            typeof footnoteBackLabel === 'string'\n              ? footnoteBackLabel\n              : footnoteBackLabel(referenceIndex, rereferenceIndex),\n          className: ['data-footnote-backref']\n        },\n        children: Array.isArray(children) ? children : [children]\n      })\n    }\n\n    const tail = content[content.length - 1]\n\n    if (tail && tail.type === 'element' && tail.tagName === 'p') {\n      const tailTail = tail.children[tail.children.length - 1]\n      if (tailTail && tailTail.type === 'text') {\n        tailTail.value += ' '\n      } else {\n        tail.children.push({type: 'text', value: ' '})\n      }\n\n      tail.children.push(...backReferences)\n    } else {\n      content.push(...backReferences)\n    }\n\n    /** @type {Element} */\n    const listItem = {\n      type: 'element',\n      tagName: 'li',\n      properties: {id: clobberPrefix + 'fn-' + safeId},\n      children: state.wrap(content, true)\n    }\n\n    state.patch(definition, listItem)\n\n    listItems.push(listItem)\n  }\n\n  if (listItems.length === 0) {\n    return\n  }\n\n  return {\n    type: 'element',\n    tagName: 'section',\n    properties: {dataFootnotes: true, className: ['footnotes']},\n    children: [\n      {\n        type: 'element',\n        tagName: footnoteLabelTagName,\n        properties: {\n          ...structuredClone(footnoteLabelProperties),\n          id: 'footnote-label'\n        },\n        children: [{type: 'text', value: footnoteLabel}]\n      },\n      {type: 'text', value: '\\n'},\n      {\n        type: 'element',\n        tagName: 'ol',\n        properties: {},\n        children: state.wrap(listItems, true)\n      },\n      {type: 'text', value: '\\n'}\n    ]\n  }\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n */\n\n/**\n * @template Fn\n * @template Fallback\n * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate\n */\n\n/**\n * @callback Check\n *   Check that an arbitrary value is a node.\n * @param {unknown} this\n *   The given context.\n * @param {unknown} [node]\n *   Anything (typically a node).\n * @param {number | null | undefined} [index]\n *   The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n *   The node’s parent.\n * @returns {boolean}\n *   Whether this is a node and passes a test.\n *\n * @typedef {Record<string, unknown> | Node} Props\n *   Object to check for equivalence.\n *\n *   Note: `Node` is included as it is common but is not indexable.\n *\n * @typedef {Array<Props | TestFunction | string> | Props | TestFunction | string | null | undefined} Test\n *   Check for an arbitrary node.\n *\n * @callback TestFunction\n *   Check if a node passes a test.\n * @param {unknown} this\n *   The given context.\n * @param {Node} node\n *   A node.\n * @param {number | undefined} [index]\n *   The node’s position in its parent.\n * @param {Parent | undefined} [parent]\n *   The node’s parent.\n * @returns {boolean | undefined | void}\n *   Whether this node passes the test.\n *\n *   Note: `void` is included until TS sees no return as `undefined`.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param {unknown} node\n *   Thing to check, typically `Node`.\n * @param {Test} test\n *   A check for a specific node.\n * @param {number | null | undefined} index\n *   The node’s position in its parent.\n * @param {Parent | null | undefined} parent\n *   The node’s parent.\n * @param {unknown} context\n *   Context object (`this`) to pass to `test` functions.\n * @returns {boolean}\n *   Whether `node` is a node and passes a test.\n */\nexport const is =\n  // Note: overloads in JSDoc can’t yet use different `@template`s.\n  /**\n   * @type {(\n   *   (<Condition extends string>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n   *   (<Condition extends Props>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n   *   (<Condition extends TestFunction>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) &\n   *   ((node?: null | undefined) => false) &\n   *   ((node: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n   *   ((node: unknown, test?: Test, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => boolean)\n   * )}\n   */\n  (\n    /**\n     * @param {unknown} [node]\n     * @param {Test} [test]\n     * @param {number | null | undefined} [index]\n     * @param {Parent | null | undefined} [parent]\n     * @param {unknown} [context]\n     * @returns {boolean}\n     */\n    // eslint-disable-next-line max-params\n    function (node, test, index, parent, context) {\n      const check = convert(test)\n\n      if (\n        index !== undefined &&\n        index !== null &&\n        (typeof index !== 'number' ||\n          index < 0 ||\n          index === Number.POSITIVE_INFINITY)\n      ) {\n        throw new Error('Expected positive finite index')\n      }\n\n      if (\n        parent !== undefined &&\n        parent !== null &&\n        (!is(parent) || !parent.children)\n      ) {\n        throw new Error('Expected parent node')\n      }\n\n      if (\n        (parent === undefined || parent === null) !==\n        (index === undefined || index === null)\n      ) {\n        throw new Error('Expected both parent and index')\n      }\n\n      return looksLikeANode(node)\n        ? check.call(context, node, index, parent)\n        : false\n    }\n  )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param {Test} test\n *   *   when nullish, checks if `node` is a `Node`.\n *   *   when `string`, works like passing `(node) => node.type === test`.\n *   *   when `function` checks if function passed the node is true.\n *   *   when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n *   *   when `array`, checks if any one of the subtests pass.\n * @returns {Check}\n *   An assertion.\n */\nexport const convert =\n  // Note: overloads in JSDoc can’t yet use different `@template`s.\n  /**\n   * @type {(\n   *   (<Condition extends string>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n   *   (<Condition extends Props>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n   *   (<Condition extends TestFunction>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) &\n   *   ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n   *   ((test?: Test) => Check)\n   * )}\n   */\n  (\n    /**\n     * @param {Test} [test]\n     * @returns {Check}\n     */\n    function (test) {\n      if (test === null || test === undefined) {\n        return ok\n      }\n\n      if (typeof test === 'function') {\n        return castFactory(test)\n      }\n\n      if (typeof test === 'object') {\n        return Array.isArray(test) ? anyFactory(test) : propsFactory(test)\n      }\n\n      if (typeof test === 'string') {\n        return typeFactory(test)\n      }\n\n      throw new Error('Expected function, string, or object as test')\n    }\n  )\n\n/**\n * @param {Array<Props | TestFunction | string>} tests\n * @returns {Check}\n */\nfunction anyFactory(tests) {\n  /** @type {Array<Check>} */\n  const checks = []\n  let index = -1\n\n  while (++index < tests.length) {\n    checks[index] = convert(tests[index])\n  }\n\n  return castFactory(any)\n\n  /**\n   * @this {unknown}\n   * @type {TestFunction}\n   */\n  function any(...parameters) {\n    let index = -1\n\n    while (++index < checks.length) {\n      if (checks[index].apply(this, parameters)) return true\n    }\n\n    return false\n  }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {Check}\n */\nfunction propsFactory(check) {\n  const checkAsRecord = /** @type {Record<string, unknown>} */ (check)\n\n  return castFactory(all)\n\n  /**\n   * @param {Node} node\n   * @returns {boolean}\n   */\n  function all(node) {\n    const nodeAsRecord = /** @type {Record<string, unknown>} */ (\n      /** @type {unknown} */ (node)\n    )\n\n    /** @type {string} */\n    let key\n\n    for (key in check) {\n      if (nodeAsRecord[key] !== checkAsRecord[key]) return false\n    }\n\n    return true\n  }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {Check}\n */\nfunction typeFactory(check) {\n  return castFactory(type)\n\n  /**\n   * @param {Node} node\n   */\n  function type(node) {\n    return node && node.type === check\n  }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunction} testFunction\n * @returns {Check}\n */\nfunction castFactory(testFunction) {\n  return check\n\n  /**\n   * @this {unknown}\n   * @type {Check}\n   */\n  function check(value, index, parent) {\n    return Boolean(\n      looksLikeANode(value) &&\n        testFunction.call(\n          this,\n          value,\n          typeof index === 'number' ? index : undefined,\n          parent || undefined\n        )\n    )\n  }\n}\n\nfunction ok() {\n  return true\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Node}\n */\nfunction looksLikeANode(value) {\n  return value !== null && typeof value === 'object' && 'type' in value\n}\n","/**\n * @param {string} d\n * @returns {string}\n */\nexport function color(d) {\n  return d\n}\n","/**\n * @typedef {import('unist').Node} UnistNode\n * @typedef {import('unist').Parent} UnistParent\n */\n\n/**\n * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test\n *   Test from `unist-util-is`.\n *\n *   Note: we have remove and add `undefined`, because otherwise when generating\n *   automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n *   which doesn’t work when publishing on npm.\n */\n\n/**\n * @typedef {(\n *   Fn extends (value: any) => value is infer Thing\n *   ? Thing\n *   : Fallback\n * )} Predicate\n *   Get the value of a type guard `Fn`.\n * @template Fn\n *   Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n *   Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n *   Check extends null | undefined // No test.\n *   ? Value\n *   : Value extends {type: Check} // String (type) test.\n *   ? Value\n *   : Value extends Check // Partial test.\n *   ? Value\n *   : Check extends Function // Function test.\n *   ? Predicate<Check, Value> extends Value\n *     ? Predicate<Check, Value>\n *     : never\n *   : never // Some other test?\n * )} MatchesOne\n *   Check whether a node matches a primitive check in the type system.\n * @template Value\n *   Value; typically unist `Node`.\n * @template Check\n *   Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n *   Check extends Array<any>\n *   ? MatchesOne<Value, Check[keyof Check]>\n *   : MatchesOne<Value, Check>\n * )} Matches\n *   Check whether a node matches a check in the type system.\n * @template Value\n *   Value; typically unist `Node`.\n * @template Check\n *   Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n *   Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n *   Increment a number in the type system.\n * @template {Uint} [I=0]\n *   Index.\n */\n\n/**\n * @typedef {(\n *   Node extends UnistParent\n *   ? Node extends {children: Array<infer Children>}\n *     ? Child extends Children ? Node : never\n *     : never\n *   : never\n * )} InternalParent\n *   Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent\n *   Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {(\n *   Depth extends Max\n *   ? never\n *   :\n *     | InternalParent<Node, Child>\n *     | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>>\n * )} InternalAncestor\n *   Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n * @template {Uint} [Max=10]\n *   Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n *   Current depth.\n */\n\n/**\n * @typedef {InternalAncestor<InclusiveDescendant<Tree>, Child>} Ancestor\n *   Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Tree\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {(\n *   Tree extends UnistParent\n *     ? Depth extends Max\n *       ? Tree\n *       : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>>\n *     : Tree\n * )} InclusiveDescendant\n *   Collect all (inclusive) descendants of `Tree`.\n *\n *   > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n *   > recurse without actually running into an infinite loop, which the\n *   > previous version did.\n *   >\n *   > Practically, a max of `2` is typically enough assuming a `Root` is\n *   > passed, but it doesn’t improve performance.\n *   > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n *   > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n *   Tree type.\n * @template {Uint} [Max=10]\n *   Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n *   Current depth.\n */\n\n/**\n * @typedef {'skip' | boolean} Action\n *   Union of the action types.\n *\n * @typedef {number} Index\n *   Move to the sibling at `index` next (after node itself is completely\n *   traversed).\n *\n *   Useful if mutating the tree, such as removing the node the visitor is\n *   currently on, or any of its previous siblings.\n *   Results less than 0 or greater than or equal to `children.length` stop\n *   traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n *   List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n *   Any value that can be returned from a visitor.\n */\n\n/**\n * @callback Visitor\n *   Handle a node (matching `test`, if given).\n *\n *   Visitors are free to transform `node`.\n *   They can also transform the parent of node (the last of `ancestors`).\n *\n *   Replacing `node` itself, if `SKIP` is not returned, still causes its\n *   descendants to be walked (which is a bug).\n *\n *   When adding or removing previous siblings of `node` (or next siblings, in\n *   case of reverse), the `Visitor` should return a new `Index` to specify the\n *   sibling to traverse after `node` is traversed.\n *   Adding or removing next siblings of `node` (or previous siblings, in case\n *   of reverse) is handled as expected without needing to return a new `Index`.\n *\n *   Removing the children property of an ancestor still results in them being\n *   traversed.\n * @param {Visited} node\n *   Found node.\n * @param {Array<VisitedParents>} ancestors\n *   Ancestors of `node`.\n * @returns {VisitorResult}\n *   What to do next.\n *\n *   An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n *   An `Action` is treated as a tuple of `[Action]`.\n *\n *   Passing a tuple back only makes sense if the `Action` is `SKIP`.\n *   When the `Action` is `EXIT`, that action can be returned.\n *   When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n *   Visited node type.\n * @template {UnistParent} [VisitedParents=UnistParent]\n *   Ancestor type.\n */\n\n/**\n * @typedef {Visitor<Matches<InclusiveDescendant<Tree>, Check>, Ancestor<Tree, Matches<InclusiveDescendant<Tree>, Check>>>} BuildVisitor\n *   Build a typed `Visitor` function from a tree and a test.\n *\n *   It will infer which values are passed as `node` and which as `parents`.\n * @template {UnistNode} [Tree=UnistNode]\n *   Tree type.\n * @template {Test} [Check=Test]\n *   Test type.\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from 'unist-util-visit-parents/do-not-use-color'\n\n/** @type {Readonly<ActionTuple>} */\nconst empty = []\n\n/**\n * Continue traversing as normal.\n */\nexport const CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node’s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor<Tree, Check>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor<Tree>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n *   Tree to traverse.\n * @param {Visitor | Test} test\n *   `unist-util-is`-compatible test\n * @param {Visitor | boolean | null | undefined} [visitor]\n *   Handle each node.\n * @param {boolean | null | undefined} [reverse]\n *   Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n *   Nothing.\n *\n * @template {UnistNode} Tree\n *   Node type.\n * @template {Test} Check\n *   `unist-util-is`-compatible test.\n */\nexport function visitParents(tree, test, visitor, reverse) {\n  /** @type {Test} */\n  let check\n\n  if (typeof test === 'function' && typeof visitor !== 'function') {\n    reverse = visitor\n    // @ts-expect-error no visitor given, so `visitor` is test.\n    visitor = test\n  } else {\n    // @ts-expect-error visitor given, so `test` isn’t a visitor.\n    check = test\n  }\n\n  const is = convert(check)\n  const step = reverse ? -1 : 1\n\n  factory(tree, undefined, [])()\n\n  /**\n   * @param {UnistNode} node\n   * @param {number | undefined} index\n   * @param {Array<UnistParent>} parents\n   */\n  function factory(node, index, parents) {\n    const value = /** @type {Record<string, unknown>} */ (\n      node && typeof node === 'object' ? node : {}\n    )\n\n    if (typeof value.type === 'string') {\n      const name =\n        // `hast`\n        typeof value.tagName === 'string'\n          ? value.tagName\n          : // `xast`\n          typeof value.name === 'string'\n          ? value.name\n          : undefined\n\n      Object.defineProperty(visit, 'name', {\n        value:\n          'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n      })\n    }\n\n    return visit\n\n    function visit() {\n      /** @type {Readonly<ActionTuple>} */\n      let result = empty\n      /** @type {Readonly<ActionTuple>} */\n      let subresult\n      /** @type {number} */\n      let offset\n      /** @type {Array<UnistParent>} */\n      let grandparents\n\n      if (!test || is(node, index, parents[parents.length - 1] || undefined)) {\n        // @ts-expect-error: `visitor` is now a visitor.\n        result = toResult(visitor(node, parents))\n\n        if (result[0] === EXIT) {\n          return result\n        }\n      }\n\n      if ('children' in node && node.children) {\n        const nodeAsParent = /** @type {UnistParent} */ (node)\n\n        if (nodeAsParent.children && result[0] !== SKIP) {\n          offset = (reverse ? nodeAsParent.children.length : -1) + step\n          grandparents = parents.concat(nodeAsParent)\n\n          while (offset > -1 && offset < nodeAsParent.children.length) {\n            const child = nodeAsParent.children[offset]\n\n            subresult = factory(child, offset, grandparents)()\n\n            if (subresult[0] === EXIT) {\n              return subresult\n            }\n\n            offset =\n              typeof subresult[1] === 'number' ? subresult[1] : offset + step\n          }\n        }\n      }\n\n      return result\n    }\n  }\n}\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n *   Valid return values from visitors.\n * @returns {Readonly<ActionTuple>}\n *   Clean result.\n */\nfunction toResult(value) {\n  if (Array.isArray(value)) {\n    return value\n  }\n\n  if (typeof value === 'number') {\n    return [CONTINUE, value]\n  }\n\n  return value === null || value === undefined ? empty : [value]\n}\n","/**\n * @typedef {import('unist').Node} UnistNode\n * @typedef {import('unist').Parent} UnistParent\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test\n *   Test from `unist-util-is`.\n *\n *   Note: we have remove and add `undefined`, because otherwise when generating\n *   automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n *   which doesn’t work when publishing on npm.\n */\n\n// To do: use types from `unist-util-visit-parents` when it’s released.\n\n/**\n * @typedef {(\n *   Fn extends (value: any) => value is infer Thing\n *   ? Thing\n *   : Fallback\n * )} Predicate\n *   Get the value of a type guard `Fn`.\n * @template Fn\n *   Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n *   Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n *   Check extends null | undefined // No test.\n *   ? Value\n *   : Value extends {type: Check} // String (type) test.\n *   ? Value\n *   : Value extends Check // Partial test.\n *   ? Value\n *   : Check extends Function // Function test.\n *   ? Predicate<Check, Value> extends Value\n *     ? Predicate<Check, Value>\n *     : never\n *   : never // Some other test?\n * )} MatchesOne\n *   Check whether a node matches a primitive check in the type system.\n * @template Value\n *   Value; typically unist `Node`.\n * @template Check\n *   Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n *   Check extends Array<any>\n *   ? MatchesOne<Value, Check[keyof Check]>\n *   : MatchesOne<Value, Check>\n * )} Matches\n *   Check whether a node matches a check in the type system.\n * @template Value\n *   Value; typically unist `Node`.\n * @template Check\n *   Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n *   Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n *   Increment a number in the type system.\n * @template {Uint} [I=0]\n *   Index.\n */\n\n/**\n * @typedef {(\n *   Node extends UnistParent\n *   ? Node extends {children: Array<infer Children>}\n *     ? Child extends Children ? Node : never\n *     : never\n *   : never\n * )} InternalParent\n *   Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent\n *   Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {(\n *   Depth extends Max\n *   ? never\n *   :\n *     | InternalParent<Node, Child>\n *     | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>>\n * )} InternalAncestor\n *   Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n * @template {Uint} [Max=10]\n *   Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n *   Current depth.\n */\n\n/**\n * @typedef {(\n *   Tree extends UnistParent\n *     ? Depth extends Max\n *       ? Tree\n *       : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>>\n *     : Tree\n * )} InclusiveDescendant\n *   Collect all (inclusive) descendants of `Tree`.\n *\n *   > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n *   > recurse without actually running into an infinite loop, which the\n *   > previous version did.\n *   >\n *   > Practically, a max of `2` is typically enough assuming a `Root` is\n *   > passed, but it doesn’t improve performance.\n *   > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n *   > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n *   Tree type.\n * @template {Uint} [Max=10]\n *   Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n *   Current depth.\n */\n\n/**\n * @callback Visitor\n *   Handle a node (matching `test`, if given).\n *\n *   Visitors are free to transform `node`.\n *   They can also transform `parent`.\n *\n *   Replacing `node` itself, if `SKIP` is not returned, still causes its\n *   descendants to be walked (which is a bug).\n *\n *   When adding or removing previous siblings of `node` (or next siblings, in\n *   case of reverse), the `Visitor` should return a new `Index` to specify the\n *   sibling to traverse after `node` is traversed.\n *   Adding or removing next siblings of `node` (or previous siblings, in case\n *   of reverse) is handled as expected without needing to return a new `Index`.\n *\n *   Removing the children property of `parent` still results in them being\n *   traversed.\n * @param {Visited} node\n *   Found node.\n * @param {Visited extends UnistNode ? number | undefined : never} index\n *   Index of `node` in `parent`.\n * @param {Ancestor extends UnistParent ? Ancestor | undefined : never} parent\n *   Parent of `node`.\n * @returns {VisitorResult}\n *   What to do next.\n *\n *   An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n *   An `Action` is treated as a tuple of `[Action]`.\n *\n *   Passing a tuple back only makes sense if the `Action` is `SKIP`.\n *   When the `Action` is `EXIT`, that action can be returned.\n *   When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n *   Visited node type.\n * @template {UnistParent} [Ancestor=UnistParent]\n *   Ancestor type.\n */\n\n/**\n * @typedef {Visitor<Visited, Parent<Ancestor, Visited>>} BuildVisitorFromMatch\n *   Build a typed `Visitor` function from a node and all possible parents.\n *\n *   It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Visited\n *   Node type.\n * @template {UnistParent} Ancestor\n *   Parent type.\n */\n\n/**\n * @typedef {(\n *   BuildVisitorFromMatch<\n *     Matches<Descendant, Check>,\n *     Extract<Descendant, UnistParent>\n *   >\n * )} BuildVisitorFromDescendants\n *   Build a typed `Visitor` function from a list of descendants and a test.\n *\n *   It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Descendant\n *   Node type.\n * @template {Test} Check\n *   Test type.\n */\n\n/**\n * @typedef {(\n *   BuildVisitorFromDescendants<\n *     InclusiveDescendant<Tree>,\n *     Check\n *   >\n * )} BuildVisitor\n *   Build a typed `Visitor` function from a tree and a test.\n *\n *   It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} [Tree=UnistNode]\n *   Node type.\n * @template {Test} [Check=Test]\n *   Test type.\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor<Tree, Check>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor<Tree>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n *   Tree to traverse.\n * @param {Visitor | Test} testOrVisitor\n *   `unist-util-is`-compatible test (optional, omit to pass a visitor).\n * @param {Visitor | boolean | null | undefined} [visitorOrReverse]\n *   Handle each node (when test is omitted, pass `reverse`).\n * @param {boolean | null | undefined} [maybeReverse=false]\n *   Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n *   Nothing.\n *\n * @template {UnistNode} Tree\n *   Node type.\n * @template {Test} Check\n *   `unist-util-is`-compatible test.\n */\nexport function visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) {\n  /** @type {boolean | null | undefined} */\n  let reverse\n  /** @type {Test} */\n  let test\n  /** @type {Visitor} */\n  let visitor\n\n  if (\n    typeof testOrVisitor === 'function' &&\n    typeof visitorOrReverse !== 'function'\n  ) {\n    test = undefined\n    visitor = testOrVisitor\n    reverse = visitorOrReverse\n  } else {\n    // @ts-expect-error: assume the overload with test was given.\n    test = testOrVisitor\n    // @ts-expect-error: assume the overload with test was given.\n    visitor = visitorOrReverse\n    reverse = maybeReverse\n  }\n\n  visitParents(tree, test, overload, reverse)\n\n  /**\n   * @param {UnistNode} node\n   * @param {Array<UnistParent>} parents\n   */\n  function overload(node, parents) {\n    const parent = parents[parents.length - 1]\n    const index = parent ? parent.children.indexOf(node) : undefined\n    return visitor(node, index, parent)\n  }\n}\n","/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').ElementContent} HastElementContent\n * @typedef {import('hast').Nodes} HastNodes\n * @typedef {import('hast').Properties} HastProperties\n * @typedef {import('hast').RootContent} HastRootContent\n * @typedef {import('hast').Text} HastText\n *\n * @typedef {import('mdast').Definition} MdastDefinition\n * @typedef {import('mdast').FootnoteDefinition} MdastFootnoteDefinition\n * @typedef {import('mdast').Nodes} MdastNodes\n * @typedef {import('mdast').Parents} MdastParents\n *\n * @typedef {import('vfile').VFile} VFile\n *\n * @typedef {import('./footer.js').FootnoteBackContentTemplate} FootnoteBackContentTemplate\n * @typedef {import('./footer.js').FootnoteBackLabelTemplate} FootnoteBackLabelTemplate\n */\n\n/**\n * @callback Handler\n *   Handle a node.\n * @param {State} state\n *   Info passed around.\n * @param {any} node\n *   mdast node to handle.\n * @param {MdastParents | undefined} parent\n *   Parent of `node`.\n * @returns {Array<HastElementContent> | HastElementContent | undefined}\n *   hast node.\n *\n * @typedef {Partial<Record<MdastNodes['type'], Handler>>} Handlers\n *   Handle nodes.\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n *   Whether to persist raw HTML in markdown in the hast tree (default:\n *   `false`).\n * @property {string | null | undefined} [clobberPrefix='user-content-']\n *   Prefix to use before the `id` property on footnotes to prevent them from\n *   *clobbering* (default: `'user-content-'`).\n *\n *   Pass `''` for trusted markdown and when you are careful with\n *   polyfilling.\n *   You could pass a different prefix.\n *\n *   DOM clobbering is this:\n *\n *   ```html\n *   <p id=\"x\"></p>\n *   <script>alert(x) // `x` now refers to the `p#x` DOM element</script>\n *   ```\n *\n *   The above example shows that elements are made available by browsers, by\n *   their ID, on the `window` object.\n *   This is a security risk because you might be expecting some other variable\n *   at that place.\n *   It can also break polyfills.\n *   Using a prefix solves these problems.\n * @property {VFile | null | undefined} [file]\n *   Corresponding virtual file representing the input document (optional).\n * @property {FootnoteBackContentTemplate | string | null | undefined} [footnoteBackContent]\n *   Content of the backreference back to references (default: `defaultFootnoteBackContent`).\n *\n *   The default value is:\n *\n *   ```js\n *   function defaultFootnoteBackContent(_, rereferenceIndex) {\n *     const result = [{type: 'text', value: '↩'}]\n *\n *     if (rereferenceIndex > 1) {\n *       result.push({\n *         type: 'element',\n *         tagName: 'sup',\n *         properties: {},\n *         children: [{type: 'text', value: String(rereferenceIndex)}]\n *       })\n *     }\n *\n *     return result\n *   }\n *   ```\n *\n *   This content is used in the `a` element of each backreference (the `↩`\n *   links).\n * @property {FootnoteBackLabelTemplate | string | null | undefined} [footnoteBackLabel]\n *   Label to describe the backreference back to references (default:\n *   `defaultFootnoteBackLabel`).\n *\n *   The default value is:\n *\n *   ```js\n *   function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n *    return (\n *      'Back to reference ' +\n *      (referenceIndex + 1) +\n *      (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n *    )\n *   }\n *   ```\n *\n *   Change it when the markdown is not in English.\n *\n *   This label is used in the `ariaLabel` property on each backreference\n *   (the `↩` links).\n *   It affects users of assistive technology.\n * @property {string | null | undefined} [footnoteLabel='Footnotes']\n *   Textual label to use for the footnotes section (default: `'Footnotes'`).\n *\n *   Change it when the markdown is not in English.\n *\n *   This label is typically hidden visually (assuming a `sr-only` CSS class\n *   is defined that does that) and so affects screen readers only.\n *   If you do have such a class, but want to show this section to everyone,\n *   pass different properties with the `footnoteLabelProperties` option.\n * @property {HastProperties | null | undefined} [footnoteLabelProperties={className: ['sr-only']}]\n *   Properties to use on the footnote label (default: `{className:\n *   ['sr-only']}`).\n *\n *   Change it to show the label and add other properties.\n *\n *   This label is typically hidden visually (assuming an `sr-only` CSS class\n *   is defined that does that) and so affects screen readers only.\n *   If you do have such a class, but want to show this section to everyone,\n *   pass an empty string.\n *   You can also add different properties.\n *\n *   > **Note**: `id: 'footnote-label'` is always added, because footnote\n *   > calls use it with `aria-describedby` to provide an accessible label.\n * @property {string | null | undefined} [footnoteLabelTagName='h2']\n *   HTML tag name to use for the footnote label element (default: `'h2'`).\n *\n *   Change it to match your document structure.\n *\n *   This label is typically hidden visually (assuming a `sr-only` CSS class\n *   is defined that does that) and so affects screen readers only.\n *   If you do have such a class, but want to show this section to everyone,\n *   pass different properties with the `footnoteLabelProperties` option.\n * @property {Handlers | null | undefined} [handlers]\n *   Extra handlers for nodes (optional).\n * @property {Array<MdastNodes['type']> | null | undefined} [passThrough]\n *   List of custom mdast node types to pass through (keep) in hast (note that\n *   the node itself is passed, but eventual children are transformed)\n *   (optional).\n * @property {Handler | null | undefined} [unknownHandler]\n *   Handler for all unknown nodes (optional).\n *\n * @typedef State\n *   Info passed around.\n * @property {(node: MdastNodes) => Array<HastElementContent>} all\n *   Transform the children of an mdast parent to hast.\n * @property {<Type extends HastNodes>(from: MdastNodes, to: Type) => HastElement | Type} applyData\n *   Honor the `data` of `from`, and generate an element instead of `node`.\n * @property {Map<string, MdastDefinition>} definitionById\n *   Definitions by their identifier.\n * @property {Map<string, MdastFootnoteDefinition>} footnoteById\n *   Footnote definitions by their identifier.\n * @property {Map<string, number>} footnoteCounts\n *   Counts for how often the same footnote was called.\n * @property {Array<string>} footnoteOrder\n *   Identifiers of order when footnote calls first appear in tree order.\n * @property {Handlers} handlers\n *   Applied handlers.\n * @property {(node: MdastNodes, parent: MdastParents | undefined) => Array<HastElementContent> | HastElementContent | undefined} one\n *   Transform an mdast node to hast.\n * @property {Options} options\n *   Configuration.\n * @property {(from: MdastNodes, node: HastNodes) => undefined} patch\n *   Copy a node’s positional info.\n * @property {<Type extends HastRootContent>(nodes: Array<Type>, loose?: boolean | undefined) => Array<HastText | Type>} wrap\n *   Wrap `nodes` with line endings between each node, adds initial/final line endings when `loose`.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {visit} from 'unist-util-visit'\nimport {position} from 'unist-util-position'\nimport {handlers as defaultHandlers} from './handlers/index.js'\n\nconst own = {}.hasOwnProperty\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Create `state` from an mdast tree.\n *\n * @param {MdastNodes} tree\n *   mdast node to transform.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {State}\n *   `state` function.\n */\nexport function createState(tree, options) {\n  const settings = options || emptyOptions\n  /** @type {Map<string, MdastDefinition>} */\n  const definitionById = new Map()\n  /** @type {Map<string, MdastFootnoteDefinition>} */\n  const footnoteById = new Map()\n  /** @type {Map<string, number>} */\n  const footnoteCounts = new Map()\n  /** @type {Handlers} */\n  // @ts-expect-error: the root handler returns a root.\n  // Hard to type.\n  const handlers = {...defaultHandlers, ...settings.handlers}\n\n  /** @type {State} */\n  const state = {\n    all,\n    applyData,\n    definitionById,\n    footnoteById,\n    footnoteCounts,\n    footnoteOrder: [],\n    handlers,\n    one,\n    options: settings,\n    patch,\n    wrap\n  }\n\n  visit(tree, function (node) {\n    if (node.type === 'definition' || node.type === 'footnoteDefinition') {\n      const map = node.type === 'definition' ? definitionById : footnoteById\n      const id = String(node.identifier).toUpperCase()\n\n      // Mimick CM behavior of link definitions.\n      // See: <https://github.com/syntax-tree/mdast-util-definitions/blob/9032189/lib/index.js#L20-L21>.\n      if (!map.has(id)) {\n        // @ts-expect-error: node type matches map.\n        map.set(id, node)\n      }\n    }\n  })\n\n  return state\n\n  /**\n   * Transform an mdast node into a hast node.\n   *\n   * @param {MdastNodes} node\n   *   mdast node.\n   * @param {MdastParents | undefined} [parent]\n   *   Parent of `node`.\n   * @returns {Array<HastElementContent> | HastElementContent | undefined}\n   *   Resulting hast node.\n   */\n  function one(node, parent) {\n    const type = node.type\n    const handle = state.handlers[type]\n\n    if (own.call(state.handlers, type) && handle) {\n      return handle(state, node, parent)\n    }\n\n    if (state.options.passThrough && state.options.passThrough.includes(type)) {\n      if ('children' in node) {\n        const {children, ...shallow} = node\n        const result = structuredClone(shallow)\n        // @ts-expect-error: TS doesn’t understand…\n        result.children = state.all(node)\n        // @ts-expect-error: TS doesn’t understand…\n        return result\n      }\n\n      // @ts-expect-error: it’s custom.\n      return structuredClone(node)\n    }\n\n    const unknown = state.options.unknownHandler || defaultUnknownHandler\n\n    return unknown(state, node, parent)\n  }\n\n  /**\n   * Transform the children of an mdast node into hast nodes.\n   *\n   * @param {MdastNodes} parent\n   *   mdast node to compile\n   * @returns {Array<HastElementContent>}\n   *   Resulting hast nodes.\n   */\n  function all(parent) {\n    /** @type {Array<HastElementContent>} */\n    const values = []\n\n    if ('children' in parent) {\n      const nodes = parent.children\n      let index = -1\n      while (++index < nodes.length) {\n        const result = state.one(nodes[index], parent)\n\n        // To do: see if we van clean this? Can we merge texts?\n        if (result) {\n          if (index && nodes[index - 1].type === 'break') {\n            if (!Array.isArray(result) && result.type === 'text') {\n              result.value = trimMarkdownSpaceStart(result.value)\n            }\n\n            if (!Array.isArray(result) && result.type === 'element') {\n              const head = result.children[0]\n\n              if (head && head.type === 'text') {\n                head.value = trimMarkdownSpaceStart(head.value)\n              }\n            }\n          }\n\n          if (Array.isArray(result)) {\n            values.push(...result)\n          } else {\n            values.push(result)\n          }\n        }\n      }\n    }\n\n    return values\n  }\n}\n\n/**\n * Copy a node’s positional info.\n *\n * @param {MdastNodes} from\n *   mdast node to copy from.\n * @param {HastNodes} to\n *   hast node to copy into.\n * @returns {undefined}\n *   Nothing.\n */\nfunction patch(from, to) {\n  if (from.position) to.position = position(from)\n}\n\n/**\n * Honor the `data` of `from` and maybe generate an element instead of `to`.\n *\n * @template {HastNodes} Type\n *   Node type.\n * @param {MdastNodes} from\n *   mdast node to use data from.\n * @param {Type} to\n *   hast node to change.\n * @returns {HastElement | Type}\n *   Nothing.\n */\nfunction applyData(from, to) {\n  /** @type {HastElement | Type} */\n  let result = to\n\n  // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n  if (from && from.data) {\n    const hName = from.data.hName\n    const hChildren = from.data.hChildren\n    const hProperties = from.data.hProperties\n\n    if (typeof hName === 'string') {\n      // Transforming the node resulted in an element with a different name\n      // than wanted:\n      if (result.type === 'element') {\n        result.tagName = hName\n      }\n      // Transforming the node resulted in a non-element, which happens for\n      // raw, text, and root nodes (unless custom handlers are passed).\n      // The intent of `hName` is to create an element, but likely also to keep\n      // the content around (otherwise: pass `hChildren`).\n      else {\n        /** @type {Array<HastElementContent>} */\n        // @ts-expect-error: assume no doctypes in `root`.\n        const children = 'children' in result ? result.children : [result]\n        result = {type: 'element', tagName: hName, properties: {}, children}\n      }\n    }\n\n    if (result.type === 'element' && hProperties) {\n      Object.assign(result.properties, structuredClone(hProperties))\n    }\n\n    if (\n      'children' in result &&\n      result.children &&\n      hChildren !== null &&\n      hChildren !== undefined\n    ) {\n      result.children = hChildren\n    }\n  }\n\n  return result\n}\n\n/**\n * Transform an unknown node.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastNodes} node\n *   Unknown mdast node.\n * @returns {HastElement | HastText}\n *   Resulting hast node.\n */\nfunction defaultUnknownHandler(state, node) {\n  const data = node.data || {}\n  /** @type {HastElement | HastText} */\n  const result =\n    'value' in node &&\n    !(own.call(data, 'hProperties') || own.call(data, 'hChildren'))\n      ? {type: 'text', value: node.value}\n      : {\n          type: 'element',\n          tagName: 'div',\n          properties: {},\n          children: state.all(node)\n        }\n\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n/**\n * Wrap `nodes` with line endings between each node.\n *\n * @template {HastRootContent} Type\n *   Node type.\n * @param {Array<Type>} nodes\n *   List of nodes to wrap.\n * @param {boolean | undefined} [loose=false]\n *   Whether to add line endings at start and end (default: `false`).\n * @returns {Array<HastText | Type>}\n *   Wrapped nodes.\n */\nexport function wrap(nodes, loose) {\n  /** @type {Array<HastText | Type>} */\n  const result = []\n  let index = -1\n\n  if (loose) {\n    result.push({type: 'text', value: '\\n'})\n  }\n\n  while (++index < nodes.length) {\n    if (index) result.push({type: 'text', value: '\\n'})\n    result.push(nodes[index])\n  }\n\n  if (loose && nodes.length > 0) {\n    result.push({type: 'text', value: '\\n'})\n  }\n\n  return result\n}\n\n/**\n * Trim spaces and tabs at the start of `value`.\n *\n * @param {string} value\n *   Value to trim.\n * @returns {string}\n *   Result.\n */\nfunction trimMarkdownSpaceStart(value) {\n  let index = 0\n  let code = value.charCodeAt(index)\n\n  while (code === 9 || code === 32) {\n    index++\n    code = value.charCodeAt(index)\n  }\n\n  return value.slice(index)\n}\n","/**\n * @typedef {import('hast').Nodes} HastNodes\n * @typedef {import('mdast').Nodes} MdastNodes\n * @typedef {import('./state.js').Options} Options\n */\n\nimport {ok as assert} from 'devlop'\nimport {footer} from './footer.js'\nimport {createState} from './state.js'\n\n/**\n * Transform mdast to hast.\n *\n * ##### Notes\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most utilities ignore `raw` nodes but two notable ones don’t:\n *\n * *   `hast-util-to-html` also has an option `allowDangerousHtml` which will\n *     output the raw HTML.\n *     This is typically discouraged as noted by the option name but is useful\n *     if you completely trust authors\n * *   `hast-util-raw` can handle the raw embedded HTML strings by parsing them\n *     into standard hast nodes (`element`, `text`, etc).\n *     This is a heavy task as it needs a full HTML parser, but it is the only\n *     way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `mdast-util-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n * <p id=x></p>\n * <script>alert(x) // `x` now refers to the DOM `p#x` element</script>\n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * Example: headings (DOM clobbering) in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * *   when the node has a `value` (and doesn’t have `data.hName`,\n *     `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n *     node\n * *   otherwise, create a `<div>` element (which could be changed with\n *     `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @param {MdastNodes} tree\n *   mdast tree.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {HastNodes}\n *   hast tree.\n */\nexport function toHast(tree, options) {\n  const state = createState(tree, options)\n  const node = state.one(tree, undefined)\n  const foot = footer(state)\n  /** @type {HastNodes} */\n  const result = Array.isArray(node)\n    ? {type: 'root', children: node}\n    : node || {type: 'root', children: []}\n\n  if (foot) {\n    // If there’s a footer, there were definitions, meaning block\n    // content.\n    // So `result` is a parent node.\n    assert('children' in result)\n    result.children.push({type: 'text', value: '\\n'}, foot)\n  }\n\n  return result\n}\n","/**\n * @import {Root as HastRoot} from 'hast'\n * @import {Root as MdastRoot} from 'mdast'\n * @import {Options as ToHastOptions} from 'mdast-util-to-hast'\n * @import {Processor} from 'unified'\n * @import {VFile} from 'vfile'\n */\n\n/**\n * @typedef {Omit<ToHastOptions, 'file'>} Options\n *\n * @callback TransformBridge\n *   Bridge-mode.\n *\n *   Runs the destination with the new hast tree.\n *   Discards result.\n * @param {MdastRoot} tree\n *   Tree.\n * @param {VFile} file\n *   File.\n * @returns {Promise<undefined>}\n *   Nothing.\n *\n * @callback TransformMutate\n *  Mutate-mode.\n *\n *  Further transformers run on the hast tree.\n * @param {MdastRoot} tree\n *   Tree.\n * @param {VFile} file\n *   File.\n * @returns {HastRoot}\n *   Tree (hast).\n */\n\nimport {toHast} from 'mdast-util-to-hast'\n\n/**\n * Turn markdown into HTML.\n *\n * ##### Notes\n *\n * ###### Signature\n *\n * * if a processor is given,\n *   runs the (rehype) plugins used on it with a hast tree,\n *   then discards the result (*bridge mode*)\n * * otherwise,\n *   returns a hast tree,\n *   the plugins used after `remarkRehype` are rehype plugins (*mutate mode*)\n *\n * > 👉 **Note**:\n * > It’s highly unlikely that you want to pass a `processor`.\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most plugins ignore `raw` nodes but two notable ones don’t:\n *\n * * `rehype-stringify` also has an option `allowDangerousHtml` which will\n *   output the raw HTML.\n *   This is typically discouraged as noted by the option name but is useful if\n *   you completely trust authors\n * * `rehype-raw` can handle the raw embedded HTML strings by parsing them\n *   into standard hast nodes (`element`, `text`, etc);\n *   this is a heavy task as it needs a full HTML parser,\n *   but it is the only way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark,\n * which we follow by default.\n * They are supported by GitHub,\n * so footnotes can be enabled in markdown with `remark-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes,\n * which is hidden for sighted users but shown to assistive technology.\n * When your page is not in English,\n * you must define translated values.\n *\n * Back references use ARIA attributes,\n * but the section label itself uses a heading that is hidden with an\n * `sr-only` class.\n * To show it to sighted users,\n * define different attributes in `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem,\n * as it links footnote calls to footnote definitions on the page through `id`\n * attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n * <p id=x></p>\n * <script>alert(x) // `x` now refers to the DOM `p#x` element</script>\n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * *Example: headings (DOM clobbering)* in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value`\n *   (and doesn’t have `data.hName`, `data.hProperties`, or `data.hChildren`,\n *   see later),\n *   create a hast `text` node\n * * otherwise,\n *   create a `<div>` element (which could be changed with `data.hName`),\n *   with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @overload\n * @param {Processor} processor\n * @param {Readonly<Options> | null | undefined} [options]\n * @returns {TransformBridge}\n *\n * @overload\n * @param {Readonly<Options> | null | undefined} [options]\n * @returns {TransformMutate}\n *\n * @overload\n * @param {Readonly<Options> | Processor | null | undefined} [destination]\n * @param {Readonly<Options> | null | undefined} [options]\n * @returns {TransformBridge | TransformMutate}\n *\n * @param {Readonly<Options> | Processor | null | undefined} [destination]\n *   Processor or configuration (optional).\n * @param {Readonly<Options> | null | undefined} [options]\n *   When a processor was given,\n *   configuration (optional).\n * @returns {TransformBridge | TransformMutate}\n *   Transform.\n */\nexport default function remarkRehype(destination, options) {\n  if (destination && 'run' in destination) {\n    /**\n     * @type {TransformBridge}\n     */\n    return async function (tree, file) {\n      // Cast because root in -> root out.\n      const hastTree = /** @type {HastRoot} */ (\n        toHast(tree, {file, ...options})\n      )\n      await destination.run(hastTree, file)\n    }\n  }\n\n  /**\n   * @type {TransformMutate}\n   */\n  return function (tree, file) {\n    // Cast because root in -> root out.\n    // To do: in the future, disallow ` || options` fallback.\n    // With `unified-engine`, `destination` can be `undefined` but\n    // `options` will be the file set.\n    // We should not pass that as `options`.\n    return /** @type {HastRoot} */ (\n      toHast(tree, {file, ...(destination || options)})\n    )\n  }\n}\n","/**\n * Throw a given error.\n *\n * @param {Error|null|undefined} [error]\n *   Maybe error.\n * @returns {asserts error is null|undefined}\n */\nexport function bail(error) {\n  if (error) {\n    throw error\n  }\n}\n","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n","export default function isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n","// To do: remove `void`s\n// To do: remove `null` from output of our APIs, allow it as user APIs.\n\n/**\n * @typedef {(error?: Error | null | undefined, ...output: Array<any>) => void} Callback\n *   Callback.\n *\n * @typedef {(...input: Array<any>) => any} Middleware\n *   Ware.\n *\n * @typedef Pipeline\n *   Pipeline.\n * @property {Run} run\n *   Run the pipeline.\n * @property {Use} use\n *   Add middleware.\n *\n * @typedef {(...input: Array<any>) => void} Run\n *   Call all middleware.\n *\n *   Calls `done` on completion with either an error or the output of the\n *   last middleware.\n *\n *   > 👉 **Note**: as the length of input defines whether async functions get a\n *   > `next` function,\n *   > it’s recommended to keep `input` at one value normally.\n\n *\n * @typedef {(fn: Middleware) => Pipeline} Use\n *   Add middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n *   Pipeline.\n */\nexport function trough() {\n  /** @type {Array<Middleware>} */\n  const fns = []\n  /** @type {Pipeline} */\n  const pipeline = {run, use}\n\n  return pipeline\n\n  /** @type {Run} */\n  function run(...values) {\n    let middlewareIndex = -1\n    /** @type {Callback} */\n    const callback = values.pop()\n\n    if (typeof callback !== 'function') {\n      throw new TypeError('Expected function as last argument, not ' + callback)\n    }\n\n    next(null, ...values)\n\n    /**\n     * Run the next `fn`, or we’re done.\n     *\n     * @param {Error | null | undefined} error\n     * @param {Array<any>} output\n     */\n    function next(error, ...output) {\n      const fn = fns[++middlewareIndex]\n      let index = -1\n\n      if (error) {\n        callback(error)\n        return\n      }\n\n      // Copy non-nullish input into values.\n      while (++index < values.length) {\n        if (output[index] === null || output[index] === undefined) {\n          output[index] = values[index]\n        }\n      }\n\n      // Save the newly created `output` for the next call.\n      values = output\n\n      // Next or done.\n      if (fn) {\n        wrap(fn, next)(...output)\n      } else {\n        callback(null, ...output)\n      }\n    }\n  }\n\n  /** @type {Use} */\n  function use(middelware) {\n    if (typeof middelware !== 'function') {\n      throw new TypeError(\n        'Expected `middelware` to be a function, not ' + middelware\n      )\n    }\n\n    fns.push(middelware)\n    return pipeline\n  }\n}\n\n/**\n * Wrap `middleware` into a uniform interface.\n *\n * You can pass all input to the resulting function.\n * `callback` is then called with the output of `middleware`.\n *\n * If `middleware` accepts more arguments than the later given in input,\n * an extra `done` function is passed to it after that input,\n * which must be called by `middleware`.\n *\n * The first value in `input` is the main input value.\n * All other input values are the rest input values.\n * The values given to `callback` are the input values,\n * merged with every non-nullish output value.\n *\n * * if `middleware` throws an error,\n *   returns a promise that is rejected,\n *   or calls the given `done` function with an error,\n *   `callback` is called with that error\n * * if `middleware` returns a value or returns a promise that is resolved,\n *   that value is the main output value\n * * if `middleware` calls `done`,\n *   all non-nullish values except for the first one (the error) overwrite the\n *   output values\n *\n * @param {Middleware} middleware\n *   Function to wrap.\n * @param {Callback} callback\n *   Callback called with the output of `middleware`.\n * @returns {Run}\n *   Wrapped middleware.\n */\nexport function wrap(middleware, callback) {\n  /** @type {boolean} */\n  let called\n\n  return wrapped\n\n  /**\n   * Call `middleware`.\n   * @this {any}\n   * @param {Array<any>} parameters\n   * @returns {void}\n   */\n  function wrapped(...parameters) {\n    const fnExpectsCallback = middleware.length > parameters.length\n    /** @type {any} */\n    let result\n\n    if (fnExpectsCallback) {\n      parameters.push(done)\n    }\n\n    try {\n      result = middleware.apply(this, parameters)\n    } catch (error) {\n      const exception = /** @type {Error} */ (error)\n\n      // Well, this is quite the pickle.\n      // `middleware` received a callback and called it synchronously, but that\n      // threw an error.\n      // The only thing left to do is to throw the thing instead.\n      if (fnExpectsCallback && called) {\n        throw exception\n      }\n\n      return done(exception)\n    }\n\n    if (!fnExpectsCallback) {\n      if (result && result.then && typeof result.then === 'function') {\n        result.then(then, done)\n      } else if (result instanceof Error) {\n        done(result)\n      } else {\n        then(result)\n      }\n    }\n  }\n\n  /**\n   * Call `callback`, only once.\n   *\n   * @type {Callback}\n   */\n  function done(error, ...output) {\n    if (!called) {\n      called = true\n      callback(error, ...output)\n    }\n  }\n\n  /**\n   * Call `done` with one value.\n   *\n   * @param {any} [value]\n   */\n  function then(value) {\n    done(null, value)\n  }\n}\n","// A derivative work based on:\n// <https://github.com/browserify/path-browserify>.\n// Which is licensed:\n//\n// MIT License\n//\n// Copyright (c) 2013 James Halliday\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A derivative work based on:\n//\n// Parts of that are extracted from Node’s internal `path` module:\n// <https://github.com/nodejs/node/blob/master/lib/path.js>.\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nexport const minpath = {basename, dirname, extname, join, sep: '/'}\n\n/* eslint-disable max-depth, complexity */\n\n/**\n * Get the basename from a path.\n *\n * @param {string} path\n *   File path.\n * @param {string | null | undefined} [extname]\n *   Extension to strip.\n * @returns {string}\n *   Stem or basename.\n */\nfunction basename(path, extname) {\n  if (extname !== undefined && typeof extname !== 'string') {\n    throw new TypeError('\"ext\" argument must be a string')\n  }\n\n  assertPath(path)\n  let start = 0\n  let end = -1\n  let index = path.length\n  /** @type {boolean | undefined} */\n  let seenNonSlash\n\n  if (\n    extname === undefined ||\n    extname.length === 0 ||\n    extname.length > path.length\n  ) {\n    while (index--) {\n      if (path.codePointAt(index) === 47 /* `/` */) {\n        // If we reached a path separator that was not part of a set of path\n        // separators at the end of the string, stop now.\n        if (seenNonSlash) {\n          start = index + 1\n          break\n        }\n      } else if (end < 0) {\n        // We saw the first non-path separator, mark this as the end of our\n        // path component.\n        seenNonSlash = true\n        end = index + 1\n      }\n    }\n\n    return end < 0 ? '' : path.slice(start, end)\n  }\n\n  if (extname === path) {\n    return ''\n  }\n\n  let firstNonSlashEnd = -1\n  let extnameIndex = extname.length - 1\n\n  while (index--) {\n    if (path.codePointAt(index) === 47 /* `/` */) {\n      // If we reached a path separator that was not part of a set of path\n      // separators at the end of the string, stop now.\n      if (seenNonSlash) {\n        start = index + 1\n        break\n      }\n    } else {\n      if (firstNonSlashEnd < 0) {\n        // We saw the first non-path separator, remember this index in case\n        // we need it if the extension ends up not matching.\n        seenNonSlash = true\n        firstNonSlashEnd = index + 1\n      }\n\n      if (extnameIndex > -1) {\n        // Try to match the explicit extension.\n        if (path.codePointAt(index) === extname.codePointAt(extnameIndex--)) {\n          if (extnameIndex < 0) {\n            // We matched the extension, so mark this as the end of our path\n            // component\n            end = index\n          }\n        } else {\n          // Extension does not match, so our result is the entire path\n          // component\n          extnameIndex = -1\n          end = firstNonSlashEnd\n        }\n      }\n    }\n  }\n\n  if (start === end) {\n    end = firstNonSlashEnd\n  } else if (end < 0) {\n    end = path.length\n  }\n\n  return path.slice(start, end)\n}\n\n/**\n * Get the dirname from a path.\n *\n * @param {string} path\n *   File path.\n * @returns {string}\n *   File path.\n */\nfunction dirname(path) {\n  assertPath(path)\n\n  if (path.length === 0) {\n    return '.'\n  }\n\n  let end = -1\n  let index = path.length\n  /** @type {boolean | undefined} */\n  let unmatchedSlash\n\n  // Prefix `--` is important to not run on `0`.\n  while (--index) {\n    if (path.codePointAt(index) === 47 /* `/` */) {\n      if (unmatchedSlash) {\n        end = index\n        break\n      }\n    } else if (!unmatchedSlash) {\n      // We saw the first non-path separator\n      unmatchedSlash = true\n    }\n  }\n\n  return end < 0\n    ? path.codePointAt(0) === 47 /* `/` */\n      ? '/'\n      : '.'\n    : end === 1 && path.codePointAt(0) === 47 /* `/` */\n      ? '//'\n      : path.slice(0, end)\n}\n\n/**\n * Get an extname from a path.\n *\n * @param {string} path\n *   File path.\n * @returns {string}\n *   Extname.\n */\nfunction extname(path) {\n  assertPath(path)\n\n  let index = path.length\n\n  let end = -1\n  let startPart = 0\n  let startDot = -1\n  // Track the state of characters (if any) we see before our first dot and\n  // after any path separator we find.\n  let preDotState = 0\n  /** @type {boolean | undefined} */\n  let unmatchedSlash\n\n  while (index--) {\n    const code = path.codePointAt(index)\n\n    if (code === 47 /* `/` */) {\n      // If we reached a path separator that was not part of a set of path\n      // separators at the end of the string, stop now.\n      if (unmatchedSlash) {\n        startPart = index + 1\n        break\n      }\n\n      continue\n    }\n\n    if (end < 0) {\n      // We saw the first non-path separator, mark this as the end of our\n      // extension.\n      unmatchedSlash = true\n      end = index + 1\n    }\n\n    if (code === 46 /* `.` */) {\n      // If this is our first dot, mark it as the start of our extension.\n      if (startDot < 0) {\n        startDot = index\n      } else if (preDotState !== 1) {\n        preDotState = 1\n      }\n    } else if (startDot > -1) {\n      // We saw a non-dot and non-path separator before our dot, so we should\n      // have a good chance at having a non-empty extension.\n      preDotState = -1\n    }\n  }\n\n  if (\n    startDot < 0 ||\n    end < 0 ||\n    // We saw a non-dot character immediately before the dot.\n    preDotState === 0 ||\n    // The (right-most) trimmed path component is exactly `..`.\n    (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n  ) {\n    return ''\n  }\n\n  return path.slice(startDot, end)\n}\n\n/**\n * Join segments from a path.\n *\n * @param {Array<string>} segments\n *   Path segments.\n * @returns {string}\n *   File path.\n */\nfunction join(...segments) {\n  let index = -1\n  /** @type {string | undefined} */\n  let joined\n\n  while (++index < segments.length) {\n    assertPath(segments[index])\n\n    if (segments[index]) {\n      joined =\n        joined === undefined ? segments[index] : joined + '/' + segments[index]\n    }\n  }\n\n  return joined === undefined ? '.' : normalize(joined)\n}\n\n/**\n * Normalize a basic file path.\n *\n * @param {string} path\n *   File path.\n * @returns {string}\n *   File path.\n */\n// Note: `normalize` is not exposed as `path.normalize`, so some code is\n// manually removed from it.\nfunction normalize(path) {\n  assertPath(path)\n\n  const absolute = path.codePointAt(0) === 47 /* `/` */\n\n  // Normalize the path according to POSIX rules.\n  let value = normalizeString(path, !absolute)\n\n  if (value.length === 0 && !absolute) {\n    value = '.'\n  }\n\n  if (value.length > 0 && path.codePointAt(path.length - 1) === 47 /* / */) {\n    value += '/'\n  }\n\n  return absolute ? '/' + value : value\n}\n\n/**\n * Resolve `.` and `..` elements in a path with directory names.\n *\n * @param {string} path\n *   File path.\n * @param {boolean} allowAboveRoot\n *   Whether `..` can move above root.\n * @returns {string}\n *   File path.\n */\nfunction normalizeString(path, allowAboveRoot) {\n  let result = ''\n  let lastSegmentLength = 0\n  let lastSlash = -1\n  let dots = 0\n  let index = -1\n  /** @type {number | undefined} */\n  let code\n  /** @type {number} */\n  let lastSlashIndex\n\n  while (++index <= path.length) {\n    if (index < path.length) {\n      code = path.codePointAt(index)\n    } else if (code === 47 /* `/` */) {\n      break\n    } else {\n      code = 47 /* `/` */\n    }\n\n    if (code === 47 /* `/` */) {\n      if (lastSlash === index - 1 || dots === 1) {\n        // Empty.\n      } else if (lastSlash !== index - 1 && dots === 2) {\n        if (\n          result.length < 2 ||\n          lastSegmentLength !== 2 ||\n          result.codePointAt(result.length - 1) !== 46 /* `.` */ ||\n          result.codePointAt(result.length - 2) !== 46 /* `.` */\n        ) {\n          if (result.length > 2) {\n            lastSlashIndex = result.lastIndexOf('/')\n\n            if (lastSlashIndex !== result.length - 1) {\n              if (lastSlashIndex < 0) {\n                result = ''\n                lastSegmentLength = 0\n              } else {\n                result = result.slice(0, lastSlashIndex)\n                lastSegmentLength = result.length - 1 - result.lastIndexOf('/')\n              }\n\n              lastSlash = index\n              dots = 0\n              continue\n            }\n          } else if (result.length > 0) {\n            result = ''\n            lastSegmentLength = 0\n            lastSlash = index\n            dots = 0\n            continue\n          }\n        }\n\n        if (allowAboveRoot) {\n          result = result.length > 0 ? result + '/..' : '..'\n          lastSegmentLength = 2\n        }\n      } else {\n        if (result.length > 0) {\n          result += '/' + path.slice(lastSlash + 1, index)\n        } else {\n          result = path.slice(lastSlash + 1, index)\n        }\n\n        lastSegmentLength = index - lastSlash - 1\n      }\n\n      lastSlash = index\n      dots = 0\n    } else if (code === 46 /* `.` */ && dots > -1) {\n      dots++\n    } else {\n      dots = -1\n    }\n  }\n\n  return result\n}\n\n/**\n * Make sure `path` is a string.\n *\n * @param {string} path\n *   File path.\n * @returns {asserts path is string}\n *   Nothing.\n */\nfunction assertPath(path) {\n  if (typeof path !== 'string') {\n    throw new TypeError(\n      'Path must be a string. Received ' + JSON.stringify(path)\n    )\n  }\n}\n\n/* eslint-enable max-depth, complexity */\n","// Somewhat based on:\n// <https://github.com/defunctzombie/node-process/blob/master/browser.js>.\n// But I don’t think one tiny line of code can be copyrighted. 😅\nexport const minproc = {cwd}\n\nfunction cwd() {\n  return '/'\n}\n","/**\n * Checks if a value has the shape of a WHATWG URL object.\n *\n * Using a symbol or instanceof would not be able to recognize URL objects\n * coming from other implementations (e.g. in Electron), so instead we are\n * checking some well known properties for a lack of a better test.\n *\n * We use `href` and `protocol` as they are the only properties that are\n * easy to retrieve and calculate due to the lazy nature of the getters.\n *\n * We check for auth attribute to distinguish legacy url instance with\n * WHATWG URL instance.\n *\n * @param {unknown} fileUrlOrPath\n *   File path or URL.\n * @returns {fileUrlOrPath is URL}\n *   Whether it’s a URL.\n */\n// From: <https://github.com/nodejs/node/blob/6a3403c/lib/internal/url.js#L720>\nexport function isUrl(fileUrlOrPath) {\n  return Boolean(\n    fileUrlOrPath !== null &&\n      typeof fileUrlOrPath === 'object' &&\n      'href' in fileUrlOrPath &&\n      fileUrlOrPath.href &&\n      'protocol' in fileUrlOrPath &&\n      fileUrlOrPath.protocol &&\n      // @ts-expect-error: indexing is fine.\n      fileUrlOrPath.auth === undefined\n  )\n}\n","import {isUrl} from './minurl.shared.js'\n\nexport {isUrl} from './minurl.shared.js'\n\n// See: <https://github.com/nodejs/node/blob/6a3403c/lib/internal/url.js>\n\n/**\n * @param {URL | string} path\n *   File URL.\n * @returns {string}\n *   File URL.\n */\nexport function urlToPath(path) {\n  if (typeof path === 'string') {\n    path = new URL(path)\n  } else if (!isUrl(path)) {\n    /** @type {NodeJS.ErrnoException} */\n    const error = new TypeError(\n      'The \"path\" argument must be of type string or an instance of URL. Received `' +\n        path +\n        '`'\n    )\n    error.code = 'ERR_INVALID_ARG_TYPE'\n    throw error\n  }\n\n  if (path.protocol !== 'file:') {\n    /** @type {NodeJS.ErrnoException} */\n    const error = new TypeError('The URL must be of scheme file')\n    error.code = 'ERR_INVALID_URL_SCHEME'\n    throw error\n  }\n\n  return getPathFromURLPosix(path)\n}\n\n/**\n * Get a path from a POSIX URL.\n *\n * @param {URL} url\n *   URL.\n * @returns {string}\n *   File path.\n */\nfunction getPathFromURLPosix(url) {\n  if (url.hostname !== '') {\n    /** @type {NodeJS.ErrnoException} */\n    const error = new TypeError(\n      'File URL host must be \"localhost\" or empty on darwin'\n    )\n    error.code = 'ERR_INVALID_FILE_URL_HOST'\n    throw error\n  }\n\n  const pathname = url.pathname\n  let index = -1\n\n  while (++index < pathname.length) {\n    if (\n      pathname.codePointAt(index) === 37 /* `%` */ &&\n      pathname.codePointAt(index + 1) === 50 /* `2` */\n    ) {\n      const third = pathname.codePointAt(index + 2)\n      if (third === 70 /* `F` */ || third === 102 /* `f` */) {\n        /** @type {NodeJS.ErrnoException} */\n        const error = new TypeError(\n          'File URL path must not include encoded / characters'\n        )\n        error.code = 'ERR_INVALID_FILE_URL_PATH'\n        throw error\n      }\n    }\n  }\n\n  return decodeURIComponent(pathname)\n}\n","/**\n * @import {Node, Point, Position} from 'unist'\n * @import {Options as MessageOptions} from 'vfile-message'\n * @import {Compatible, Data, Map, Options, Value} from 'vfile'\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n */\n\nimport {VFileMessage} from 'vfile-message'\nimport {minpath} from '#minpath'\nimport {minproc} from '#minproc'\nimport {urlToPath, isUrl} from '#minurl'\n\n/**\n * Order of setting (least specific to most), we need this because otherwise\n * `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n * stem can be set.\n */\nconst order = /** @type {const} */ ([\n  'history',\n  'path',\n  'basename',\n  'stem',\n  'extname',\n  'dirname'\n])\n\nexport class VFile {\n  /**\n   * Create a new virtual file.\n   *\n   * `options` is treated as:\n   *\n   * *   `string` or `Uint8Array` — `{value: options}`\n   * *   `URL` — `{path: options}`\n   * *   `VFile` — shallow copies its data over to the new file\n   * *   `object` — all fields are shallow copied over to the new file\n   *\n   * Path related fields are set in the following order (least specific to\n   * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n   * `dirname`.\n   *\n   * You cannot set `dirname` or `extname` without setting either `history`,\n   * `path`, `basename`, or `stem` too.\n   *\n   * @param {Compatible | null | undefined} [value]\n   *   File value.\n   * @returns\n   *   New instance.\n   */\n  constructor(value) {\n    /** @type {Options | VFile} */\n    let options\n\n    if (!value) {\n      options = {}\n    } else if (isUrl(value)) {\n      options = {path: value}\n    } else if (typeof value === 'string' || isUint8Array(value)) {\n      options = {value}\n    } else {\n      options = value\n    }\n\n    /* eslint-disable no-unused-expressions */\n\n    /**\n     * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n     *\n     * @type {string}\n     */\n    // Prevent calling `cwd` (which could be expensive) if it’s not needed;\n    // the empty string will be overridden in the next block.\n    this.cwd = 'cwd' in options ? '' : minproc.cwd()\n\n    /**\n     * Place to store custom info (default: `{}`).\n     *\n     * It’s OK to store custom data directly on the file but moving it to\n     * `data` is recommended.\n     *\n     * @type {Data}\n     */\n    this.data = {}\n\n    /**\n     * List of file paths the file moved between.\n     *\n     * The first is the original path and the last is the current path.\n     *\n     * @type {Array<string>}\n     */\n    this.history = []\n\n    /**\n     * List of messages associated with the file.\n     *\n     * @type {Array<VFileMessage>}\n     */\n    this.messages = []\n\n    /**\n     * Raw value.\n     *\n     * @type {Value}\n     */\n    this.value\n\n    // The below are non-standard, they are “well-known”.\n    // As in, used in several tools.\n    /**\n     * Source map.\n     *\n     * This type is equivalent to the `RawSourceMap` type from the `source-map`\n     * module.\n     *\n     * @type {Map | null | undefined}\n     */\n    this.map\n\n    /**\n     * Custom, non-string, compiled, representation.\n     *\n     * This is used by unified to store non-string results.\n     * One example is when turning markdown into React nodes.\n     *\n     * @type {unknown}\n     */\n    this.result\n\n    /**\n     * Whether a file was saved to disk.\n     *\n     * This is used by vfile reporters.\n     *\n     * @type {boolean}\n     */\n    this.stored\n    /* eslint-enable no-unused-expressions */\n\n    // Set path related properties in the correct order.\n    let index = -1\n\n    while (++index < order.length) {\n      const field = order[index]\n\n      // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n      // `vfile`s too.\n      if (\n        field in options &&\n        options[field] !== undefined &&\n        options[field] !== null\n      ) {\n        // @ts-expect-error: TS doesn’t understand basic reality.\n        this[field] = field === 'history' ? [...options[field]] : options[field]\n      }\n    }\n\n    /** @type {string} */\n    let field\n\n    // Set non-path related properties.\n    for (field in options) {\n      // @ts-expect-error: fine to set other things.\n      if (!order.includes(field)) {\n        // @ts-expect-error: fine to set other things.\n        this[field] = options[field]\n      }\n    }\n  }\n\n  /**\n   * Get the basename (including extname) (example: `'index.min.js'`).\n   *\n   * @returns {string | undefined}\n   *   Basename.\n   */\n  get basename() {\n    return typeof this.path === 'string'\n      ? minpath.basename(this.path)\n      : undefined\n  }\n\n  /**\n   * Set basename (including extname) (`'index.min.js'`).\n   *\n   * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n   * on windows).\n   * Cannot be nullified (use `file.path = file.dirname` instead).\n   *\n   * @param {string} basename\n   *   Basename.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  set basename(basename) {\n    assertNonEmpty(basename, 'basename')\n    assertPart(basename, 'basename')\n    this.path = minpath.join(this.dirname || '', basename)\n  }\n\n  /**\n   * Get the parent path (example: `'~'`).\n   *\n   * @returns {string | undefined}\n   *   Dirname.\n   */\n  get dirname() {\n    return typeof this.path === 'string'\n      ? minpath.dirname(this.path)\n      : undefined\n  }\n\n  /**\n   * Set the parent path (example: `'~'`).\n   *\n   * Cannot be set if there’s no `path` yet.\n   *\n   * @param {string | undefined} dirname\n   *   Dirname.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  set dirname(dirname) {\n    assertPath(this.basename, 'dirname')\n    this.path = minpath.join(dirname || '', this.basename)\n  }\n\n  /**\n   * Get the extname (including dot) (example: `'.js'`).\n   *\n   * @returns {string | undefined}\n   *   Extname.\n   */\n  get extname() {\n    return typeof this.path === 'string'\n      ? minpath.extname(this.path)\n      : undefined\n  }\n\n  /**\n   * Set the extname (including dot) (example: `'.js'`).\n   *\n   * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n   * on windows).\n   * Cannot be set if there’s no `path` yet.\n   *\n   * @param {string | undefined} extname\n   *   Extname.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  set extname(extname) {\n    assertPart(extname, 'extname')\n    assertPath(this.dirname, 'extname')\n\n    if (extname) {\n      if (extname.codePointAt(0) !== 46 /* `.` */) {\n        throw new Error('`extname` must start with `.`')\n      }\n\n      if (extname.includes('.', 1)) {\n        throw new Error('`extname` cannot contain multiple dots')\n      }\n    }\n\n    this.path = minpath.join(this.dirname, this.stem + (extname || ''))\n  }\n\n  /**\n   * Get the full path (example: `'~/index.min.js'`).\n   *\n   * @returns {string}\n   *   Path.\n   */\n  get path() {\n    return this.history[this.history.length - 1]\n  }\n\n  /**\n   * Set the full path (example: `'~/index.min.js'`).\n   *\n   * Cannot be nullified.\n   * You can set a file URL (a `URL` object with a `file:` protocol) which will\n   * be turned into a path with `url.fileURLToPath`.\n   *\n   * @param {URL | string} path\n   *   Path.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  set path(path) {\n    if (isUrl(path)) {\n      path = urlToPath(path)\n    }\n\n    assertNonEmpty(path, 'path')\n\n    if (this.path !== path) {\n      this.history.push(path)\n    }\n  }\n\n  /**\n   * Get the stem (basename w/o extname) (example: `'index.min'`).\n   *\n   * @returns {string | undefined}\n   *   Stem.\n   */\n  get stem() {\n    return typeof this.path === 'string'\n      ? minpath.basename(this.path, this.extname)\n      : undefined\n  }\n\n  /**\n   * Set the stem (basename w/o extname) (example: `'index.min'`).\n   *\n   * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n   * on windows).\n   * Cannot be nullified (use `file.path = file.dirname` instead).\n   *\n   * @param {string} stem\n   *   Stem.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  set stem(stem) {\n    assertNonEmpty(stem, 'stem')\n    assertPart(stem, 'stem')\n    this.path = minpath.join(this.dirname || '', stem + (this.extname || ''))\n  }\n\n  // Normal prototypal methods.\n  /**\n   * Create a fatal message for `reason` associated with the file.\n   *\n   * The `fatal` field of the message is set to `true` (error; file not usable)\n   * and the `file` field is set to the current file path.\n   * The message is added to the `messages` field on `file`.\n   *\n   * > 🪦 **Note**: also has obsolete signatures.\n   *\n   * @overload\n   * @param {string} reason\n   * @param {MessageOptions | null | undefined} [options]\n   * @returns {never}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @param {Error | VFileMessage | string} causeOrReason\n   *   Reason for message, should use markdown.\n   * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n   *   Configuration (optional).\n   * @param {string | null | undefined} [origin]\n   *   Place in code where the message originates (example:\n   *   `'my-package:my-rule'` or `'my-rule'`).\n   * @returns {never}\n   *   Never.\n   * @throws {VFileMessage}\n   *   Message.\n   */\n  fail(causeOrReason, optionsOrParentOrPlace, origin) {\n    // @ts-expect-error: the overloads are fine.\n    const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n    message.fatal = true\n\n    throw message\n  }\n\n  /**\n   * Create an info message for `reason` associated with the file.\n   *\n   * The `fatal` field of the message is set to `undefined` (info; change\n   * likely not needed) and the `file` field is set to the current file path.\n   * The message is added to the `messages` field on `file`.\n   *\n   * > 🪦 **Note**: also has obsolete signatures.\n   *\n   * @overload\n   * @param {string} reason\n   * @param {MessageOptions | null | undefined} [options]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @param {Error | VFileMessage | string} causeOrReason\n   *   Reason for message, should use markdown.\n   * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n   *   Configuration (optional).\n   * @param {string | null | undefined} [origin]\n   *   Place in code where the message originates (example:\n   *   `'my-package:my-rule'` or `'my-rule'`).\n   * @returns {VFileMessage}\n   *   Message.\n   */\n  info(causeOrReason, optionsOrParentOrPlace, origin) {\n    // @ts-expect-error: the overloads are fine.\n    const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n    message.fatal = undefined\n\n    return message\n  }\n\n  /**\n   * Create a message for `reason` associated with the file.\n   *\n   * The `fatal` field of the message is set to `false` (warning; change may be\n   * needed) and the `file` field is set to the current file path.\n   * The message is added to the `messages` field on `file`.\n   *\n   * > 🪦 **Note**: also has obsolete signatures.\n   *\n   * @overload\n   * @param {string} reason\n   * @param {MessageOptions | null | undefined} [options]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @param {Error | VFileMessage | string} causeOrReason\n   *   Reason for message, should use markdown.\n   * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n   *   Configuration (optional).\n   * @param {string | null | undefined} [origin]\n   *   Place in code where the message originates (example:\n   *   `'my-package:my-rule'` or `'my-rule'`).\n   * @returns {VFileMessage}\n   *   Message.\n   */\n  message(causeOrReason, optionsOrParentOrPlace, origin) {\n    const message = new VFileMessage(\n      // @ts-expect-error: the overloads are fine.\n      causeOrReason,\n      optionsOrParentOrPlace,\n      origin\n    )\n\n    if (this.path) {\n      message.name = this.path + ':' + message.name\n      message.file = this.path\n    }\n\n    message.fatal = false\n\n    this.messages.push(message)\n\n    return message\n  }\n\n  /**\n   * Serialize the file.\n   *\n   * > **Note**: which encodings are supported depends on the engine.\n   * > For info on Node.js, see:\n   * > <https://nodejs.org/api/util.html#whatwg-supported-encodings>.\n   *\n   * @param {string | null | undefined} [encoding='utf8']\n   *   Character encoding to understand `value` as when it’s a `Uint8Array`\n   *   (default: `'utf-8'`).\n   * @returns {string}\n   *   Serialized file.\n   */\n  toString(encoding) {\n    if (this.value === undefined) {\n      return ''\n    }\n\n    if (typeof this.value === 'string') {\n      return this.value\n    }\n\n    const decoder = new TextDecoder(encoding || undefined)\n    return decoder.decode(this.value)\n  }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string | null | undefined} part\n *   File path part.\n * @param {string} name\n *   Part name.\n * @returns {undefined}\n *   Nothing.\n */\nfunction assertPart(part, name) {\n  if (part && part.includes(minpath.sep)) {\n    throw new Error(\n      '`' + name + '` cannot be a path: did not expect `' + minpath.sep + '`'\n    )\n  }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string | undefined} part\n *   Thing.\n * @param {string} name\n *   Part name.\n * @returns {asserts part is string}\n *   Nothing.\n */\nfunction assertNonEmpty(part, name) {\n  if (!part) {\n    throw new Error('`' + name + '` cannot be empty')\n  }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string | undefined} path\n *   Path.\n * @param {string} name\n *   Dependency name.\n * @returns {asserts path is string}\n *   Nothing.\n */\nfunction assertPath(path, name) {\n  if (!path) {\n    throw new Error('Setting `' + name + '` requires `path` to be set too')\n  }\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n *   thing.\n * @returns {value is Uint8Array}\n *   Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n  return Boolean(\n    value &&\n      typeof value === 'object' &&\n      'byteLength' in value &&\n      'byteOffset' in value\n  )\n}\n","export const CallableInstance =\n  /**\n   * @type {new <Parameters extends Array<unknown>, Result>(property: string | symbol) => (...parameters: Parameters) => Result}\n   */\n  (\n    /** @type {unknown} */\n    (\n      /**\n       * @this {Function}\n       * @param {string | symbol} property\n       * @returns {(...parameters: Array<unknown>) => unknown}\n       */\n      function (property) {\n        const self = this\n        const constr = self.constructor\n        const proto = /** @type {Record<string | symbol, Function>} */ (\n          // Prototypes do exist.\n          // type-coverage:ignore-next-line\n          constr.prototype\n        )\n        const value = proto[property]\n        /** @type {(...parameters: Array<unknown>) => unknown} */\n        const apply = function () {\n          return value.apply(apply, arguments)\n        }\n\n        Object.setPrototypeOf(apply, proto)\n\n        // Not needed for us in `unified`: we only call this on the `copy`\n        // function,\n        // and we don't need to add its fields (`length`, `name`)\n        // over.\n        // See also: GH-246.\n        // const names = Object.getOwnPropertyNames(value)\n        //\n        // for (const p of names) {\n        //   const descriptor = Object.getOwnPropertyDescriptor(value, p)\n        //   if (descriptor) Object.defineProperty(apply, p, descriptor)\n        // }\n\n        return apply\n      }\n    )\n  )\n","/**\n * @typedef {import('trough').Pipeline} Pipeline\n *\n * @typedef {import('unist').Node} Node\n *\n * @typedef {import('vfile').Compatible} Compatible\n * @typedef {import('vfile').Value} Value\n *\n * @typedef {import('../index.js').CompileResultMap} CompileResultMap\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Settings} Settings\n */\n\n/**\n * @typedef {CompileResultMap[keyof CompileResultMap]} CompileResults\n *   Acceptable results from compilers.\n *\n *   To register custom results, add them to\n *   {@linkcode CompileResultMap}.\n */\n\n/**\n * @template {Node} [Tree=Node]\n *   The node that the compiler receives (default: `Node`).\n * @template {CompileResults} [Result=CompileResults]\n *   The thing that the compiler yields (default: `CompileResults`).\n * @callback Compiler\n *   A **compiler** handles the compiling of a syntax tree to something else\n *   (in most cases, text) (TypeScript type).\n *\n *   It is used in the stringify phase and called with a {@linkcode Node}\n *   and {@linkcode VFile} representation of the document to compile.\n *   It should return the textual representation of the given tree (typically\n *   `string`).\n *\n *   > **Note**: unified typically compiles by serializing: most compilers\n *   > return `string` (or `Uint8Array`).\n *   > Some compilers, such as the one configured with\n *   > [`rehype-react`][rehype-react], return other values (in this case, a\n *   > React tree).\n *   > If you’re using a compiler that doesn’t serialize, expect different\n *   > result values.\n *   >\n *   > To register custom results in TypeScript, add them to\n *   > {@linkcode CompileResultMap}.\n *\n *   [rehype-react]: https://github.com/rehypejs/rehype-react\n * @param {Tree} tree\n *   Tree to compile.\n * @param {VFile} file\n *   File associated with `tree`.\n * @returns {Result}\n *   New content: compiled text (`string` or `Uint8Array`, for `file.value`) or\n *   something else (for `file.result`).\n */\n\n/**\n * @template {Node} [Tree=Node]\n *   The node that the parser yields (default: `Node`)\n * @callback Parser\n *   A **parser** handles the parsing of text to a syntax tree.\n *\n *   It is used in the parse phase and is called with a `string` and\n *   {@linkcode VFile} of the document to parse.\n *   It must return the syntax tree representation of the given file\n *   ({@linkcode Node}).\n * @param {string} document\n *   Document to parse.\n * @param {VFile} file\n *   File associated with `document`.\n * @returns {Tree}\n *   Node representing the given file.\n */\n\n/**\n * @typedef {(\n *   Plugin<Array<any>, any, any> |\n *   PluginTuple<Array<any>, any, any> |\n *   Preset\n * )} Pluggable\n *   Union of the different ways to add plugins and settings.\n */\n\n/**\n * @typedef {Array<Pluggable>} PluggableList\n *   List of plugins and presets.\n */\n\n// Note: we can’t use `callback` yet as it messes up `this`:\n//  <https://github.com/microsoft/TypeScript/issues/55197>.\n/**\n * @template {Array<unknown>} [PluginParameters=[]]\n *   Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=Node]\n *   Value that is expected as input (default: `Node`).\n *\n *   *   If the plugin returns a {@linkcode Transformer}, this\n *       should be the node it expects.\n *   *   If the plugin sets a {@linkcode Parser}, this should be\n *       `string`.\n *   *   If the plugin sets a {@linkcode Compiler}, this should be the\n *       node it expects.\n * @template [Output=Input]\n *   Value that is yielded as output (default: `Input`).\n *\n *   *   If the plugin returns a {@linkcode Transformer}, this\n *       should be the node that that yields.\n *   *   If the plugin sets a {@linkcode Parser}, this should be the\n *       node that it yields.\n *   *   If the plugin sets a {@linkcode Compiler}, this should be\n *       result it yields.\n * @typedef {(\n *   (this: Processor, ...parameters: PluginParameters) =>\n *     Input extends string ? // Parser.\n *        Output extends Node | undefined ? undefined | void : never :\n *     Output extends CompileResults ? // Compiler.\n *        Input extends Node | undefined ? undefined | void : never :\n *     Transformer<\n *       Input extends Node ? Input : Node,\n *       Output extends Node ? Output : Node\n *     > | undefined | void\n * )} Plugin\n *   Single plugin.\n *\n *   Plugins configure the processors they are applied on in the following\n *   ways:\n *\n *   *   they change the processor, such as the parser, the compiler, or by\n *       configuring data\n *   *   they specify how to handle trees and files\n *\n *   In practice, they are functions that can receive options and configure the\n *   processor (`this`).\n *\n *   > **Note**: plugins are called when the processor is *frozen*, not when\n *   > they are applied.\n */\n\n/**\n * Tuple of a plugin and its configuration.\n *\n * The first item is a plugin, the rest are its parameters.\n *\n * @template {Array<unknown>} [TupleParameters=[]]\n *   Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=undefined]\n *   Value that is expected as input (optional).\n *\n *   *   If the plugin returns a {@linkcode Transformer}, this\n *       should be the node it expects.\n *   *   If the plugin sets a {@linkcode Parser}, this should be\n *       `string`.\n *   *   If the plugin sets a {@linkcode Compiler}, this should be the\n *       node it expects.\n * @template [Output=undefined] (optional).\n *   Value that is yielded as output.\n *\n *   *   If the plugin returns a {@linkcode Transformer}, this\n *       should be the node that that yields.\n *   *   If the plugin sets a {@linkcode Parser}, this should be the\n *       node that it yields.\n *   *   If the plugin sets a {@linkcode Compiler}, this should be\n *       result it yields.\n * @typedef {(\n *   [\n *     plugin: Plugin<TupleParameters, Input, Output>,\n *     ...parameters: TupleParameters\n *   ]\n * )} PluginTuple\n */\n\n/**\n * @typedef Preset\n *   Sharable configuration.\n *\n *   They can contain plugins and settings.\n * @property {PluggableList | undefined} [plugins]\n *   List of plugins and presets (optional).\n * @property {Settings | undefined} [settings]\n *   Shared settings for parsers and compilers (optional).\n */\n\n/**\n * @template {VFile} [File=VFile]\n *   The file that the callback receives (default: `VFile`).\n * @callback ProcessCallback\n *   Callback called when the process is done.\n *\n *   Called with either an error or a result.\n * @param {Error | undefined} [error]\n *   Fatal error (optional).\n * @param {File | undefined} [file]\n *   Processed file (optional).\n * @returns {undefined}\n *   Nothing.\n */\n\n/**\n * @template {Node} [Tree=Node]\n *   The tree that the callback receives (default: `Node`).\n * @callback RunCallback\n *   Callback called when transformers are done.\n *\n *   Called with either an error or results.\n * @param {Error | undefined} [error]\n *   Fatal error (optional).\n * @param {Tree | undefined} [tree]\n *   Transformed tree (optional).\n * @param {VFile | undefined} [file]\n *   File (optional).\n * @returns {undefined}\n *   Nothing.\n */\n\n/**\n * @template {Node} [Output=Node]\n *   Node type that the transformer yields (default: `Node`).\n * @callback TransformCallback\n *   Callback passed to transforms.\n *\n *   If the signature of a `transformer` accepts a third argument, the\n *   transformer may perform asynchronous operations, and must call it.\n * @param {Error | undefined} [error]\n *   Fatal error to stop the process (optional).\n * @param {Output | undefined} [tree]\n *   New, changed, tree (optional).\n * @param {VFile | undefined} [file]\n *   New, changed, file (optional).\n * @returns {undefined}\n *   Nothing.\n */\n\n/**\n * @template {Node} [Input=Node]\n *   Node type that the transformer expects (default: `Node`).\n * @template {Node} [Output=Input]\n *   Node type that the transformer yields (default: `Input`).\n * @callback Transformer\n *   Transformers handle syntax trees and files.\n *\n *   They are functions that are called each time a syntax tree and file are\n *   passed through the run phase.\n *   When an error occurs in them (either because it’s thrown, returned,\n *   rejected, or passed to `next`), the process stops.\n *\n *   The run phase is handled by [`trough`][trough], see its documentation for\n *   the exact semantics of these functions.\n *\n *   > **Note**: you should likely ignore `next`: don’t accept it.\n *   > it supports callback-style async work.\n *   > But promises are likely easier to reason about.\n *\n *   [trough]: https://github.com/wooorm/trough#function-fninput-next\n * @param {Input} tree\n *   Tree to handle.\n * @param {VFile} file\n *   File to handle.\n * @param {TransformCallback<Output>} next\n *   Callback.\n * @returns {(\n *   Promise<Output | undefined | void> |\n *   Promise<never> | // For some reason this is needed separately.\n *   Output |\n *   Error |\n *   undefined |\n *   void\n * )}\n *   If you accept `next`, nothing.\n *   Otherwise:\n *\n *   *   `Error` — fatal error to stop the process\n *   *   `Promise<undefined>` or `undefined` — the next transformer keeps using\n *       same tree\n *   *   `Promise<Node>` or `Node` — new, changed, tree\n */\n\n/**\n * @template {Node | undefined} ParseTree\n *   Output of `parse`.\n * @template {Node | undefined} HeadTree\n *   Input for `run`.\n * @template {Node | undefined} TailTree\n *   Output for `run`.\n * @template {Node | undefined} CompileTree\n *   Input of `stringify`.\n * @template {CompileResults | undefined} CompileResult\n *   Output of `stringify`.\n * @template {Node | string | undefined} Input\n *   Input of plugin.\n * @template Output\n *   Output of plugin (optional).\n * @typedef {(\n *   Input extends string\n *     ? Output extends Node | undefined\n *       ? // Parser.\n *         Processor<\n *           Output extends undefined ? ParseTree : Output,\n *           HeadTree,\n *           TailTree,\n *           CompileTree,\n *           CompileResult\n *         >\n *       : // Unknown.\n *         Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n *     : Output extends CompileResults\n *     ? Input extends Node | undefined\n *       ? // Compiler.\n *         Processor<\n *           ParseTree,\n *           HeadTree,\n *           TailTree,\n *           Input extends undefined ? CompileTree : Input,\n *           Output extends undefined ? CompileResult : Output\n *         >\n *       : // Unknown.\n *         Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n *     : Input extends Node | undefined\n *     ? Output extends Node | undefined\n *       ? // Transform.\n *         Processor<\n *           ParseTree,\n *           HeadTree extends undefined ? Input : HeadTree,\n *           Output extends undefined ? TailTree : Output,\n *           CompileTree,\n *           CompileResult\n *         >\n *       : // Unknown.\n *         Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n *     : // Unknown.\n *       Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n * )} UsePlugin\n *   Create a processor based on the input/output of a {@link Plugin plugin}.\n */\n\n/**\n * @template {CompileResults | undefined} Result\n *   Node type that the transformer yields.\n * @typedef {(\n *   Result extends Value | undefined ?\n *     VFile :\n *     VFile & {result: Result}\n *   )} VFileWithOutput\n *   Type to generate a {@linkcode VFile} corresponding to a compiler result.\n *\n *   If a result that is not acceptable on a `VFile` is used, that will\n *   be stored on the `result` field of {@linkcode VFile}.\n */\n\nimport {bail} from 'bail'\nimport extend from 'extend'\nimport {ok as assert} from 'devlop'\nimport isPlainObj from 'is-plain-obj'\nimport {trough} from 'trough'\nimport {VFile} from 'vfile'\nimport {CallableInstance} from './callable-instance.js'\n\n// To do: next major: drop `Compiler`, `Parser`: prefer lowercase.\n\n// To do: we could start yielding `never` in TS when a parser is missing and\n// `parse` is called.\n// Currently, we allow directly setting `processor.parser`, which is untyped.\n\nconst own = {}.hasOwnProperty\n\n/**\n * @template {Node | undefined} [ParseTree=undefined]\n *   Output of `parse` (optional).\n * @template {Node | undefined} [HeadTree=undefined]\n *   Input for `run` (optional).\n * @template {Node | undefined} [TailTree=undefined]\n *   Output for `run` (optional).\n * @template {Node | undefined} [CompileTree=undefined]\n *   Input of `stringify` (optional).\n * @template {CompileResults | undefined} [CompileResult=undefined]\n *   Output of `stringify` (optional).\n * @extends {CallableInstance<[], Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>>}\n */\nexport class Processor extends CallableInstance {\n  /**\n   * Create a processor.\n   */\n  constructor() {\n    // If `Processor()` is called (w/o new), `copy` is called instead.\n    super('copy')\n\n    /**\n     * Compiler to use (deprecated).\n     *\n     * @deprecated\n     *   Use `compiler` instead.\n     * @type {(\n     *   Compiler<\n     *     CompileTree extends undefined ? Node : CompileTree,\n     *     CompileResult extends undefined ? CompileResults : CompileResult\n     *   > |\n     *   undefined\n     * )}\n     */\n    this.Compiler = undefined\n\n    /**\n     * Parser to use (deprecated).\n     *\n     * @deprecated\n     *   Use `parser` instead.\n     * @type {(\n     *   Parser<ParseTree extends undefined ? Node : ParseTree> |\n     *   undefined\n     * )}\n     */\n    this.Parser = undefined\n\n    // Note: the following fields are considered private.\n    // However, they are needed for tests, and TSC generates an untyped\n    // `private freezeIndex` field for, which trips `type-coverage` up.\n    // Instead, we use `@deprecated` to visualize that they shouldn’t be used.\n    /**\n     * Internal list of configured plugins.\n     *\n     * @deprecated\n     *   This is a private internal property and should not be used.\n     * @type {Array<PluginTuple<Array<unknown>>>}\n     */\n    this.attachers = []\n\n    /**\n     * Compiler to use.\n     *\n     * @type {(\n     *   Compiler<\n     *     CompileTree extends undefined ? Node : CompileTree,\n     *     CompileResult extends undefined ? CompileResults : CompileResult\n     *   > |\n     *   undefined\n     * )}\n     */\n    this.compiler = undefined\n\n    /**\n     * Internal state to track where we are while freezing.\n     *\n     * @deprecated\n     *   This is a private internal property and should not be used.\n     * @type {number}\n     */\n    this.freezeIndex = -1\n\n    /**\n     * Internal state to track whether we’re frozen.\n     *\n     * @deprecated\n     *   This is a private internal property and should not be used.\n     * @type {boolean | undefined}\n     */\n    this.frozen = undefined\n\n    /**\n     * Internal state.\n     *\n     * @deprecated\n     *   This is a private internal property and should not be used.\n     * @type {Data}\n     */\n    this.namespace = {}\n\n    /**\n     * Parser to use.\n     *\n     * @type {(\n     *   Parser<ParseTree extends undefined ? Node : ParseTree> |\n     *   undefined\n     * )}\n     */\n    this.parser = undefined\n\n    /**\n     * Internal list of configured transformers.\n     *\n     * @deprecated\n     *   This is a private internal property and should not be used.\n     * @type {Pipeline}\n     */\n    this.transformers = trough()\n  }\n\n  /**\n   * Copy a processor.\n   *\n   * @deprecated\n   *   This is a private internal method and should not be used.\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *   New *unfrozen* processor ({@linkcode Processor}) that is\n   *   configured to work the same as its ancestor.\n   *   When the descendant processor is configured in the future it does not\n   *   affect the ancestral processor.\n   */\n  copy() {\n    // Cast as the type parameters will be the same after attaching.\n    const destination =\n      /** @type {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>} */ (\n        new Processor()\n      )\n    let index = -1\n\n    while (++index < this.attachers.length) {\n      const attacher = this.attachers[index]\n      destination.use(...attacher)\n    }\n\n    destination.data(extend(true, {}, this.namespace))\n\n    return destination\n  }\n\n  /**\n   * Configure the processor with info available to all plugins.\n   * Information is stored in an object.\n   *\n   * Typically, options can be given to a specific plugin, but sometimes it\n   * makes sense to have information shared with several plugins.\n   * For example, a list of HTML elements that are self-closing, which is\n   * needed during all phases.\n   *\n   * > **Note**: setting information cannot occur on *frozen* processors.\n   * > Call the processor first to create a new unfrozen processor.\n   *\n   * > **Note**: to register custom data in TypeScript, augment the\n   * > {@linkcode Data} interface.\n   *\n   * @example\n   *   This example show how to get and set info:\n   *\n   *   ```js\n   *   import {unified} from 'unified'\n   *\n   *   const processor = unified().data('alpha', 'bravo')\n   *\n   *   processor.data('alpha') // => 'bravo'\n   *\n   *   processor.data() // => {alpha: 'bravo'}\n   *\n   *   processor.data({charlie: 'delta'})\n   *\n   *   processor.data() // => {charlie: 'delta'}\n   *   ```\n   *\n   * @template {keyof Data} Key\n   *\n   * @overload\n   * @returns {Data}\n   *\n   * @overload\n   * @param {Data} dataset\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *\n   * @overload\n   * @param {Key} key\n   * @returns {Data[Key]}\n   *\n   * @overload\n   * @param {Key} key\n   * @param {Data[Key]} value\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *\n   * @param {Data | Key} [key]\n   *   Key to get or set, or entire dataset to set, or nothing to get the\n   *   entire dataset (optional).\n   * @param {Data[Key]} [value]\n   *   Value to set (optional).\n   * @returns {unknown}\n   *   The current processor when setting, the value at `key` when getting, or\n   *   the entire dataset when getting without key.\n   */\n  data(key, value) {\n    if (typeof key === 'string') {\n      // Set `key`.\n      if (arguments.length === 2) {\n        assertUnfrozen('data', this.frozen)\n        this.namespace[key] = value\n        return this\n      }\n\n      // Get `key`.\n      return (own.call(this.namespace, key) && this.namespace[key]) || undefined\n    }\n\n    // Set space.\n    if (key) {\n      assertUnfrozen('data', this.frozen)\n      this.namespace = key\n      return this\n    }\n\n    // Get space.\n    return this.namespace\n  }\n\n  /**\n   * Freeze a processor.\n   *\n   * Frozen processors are meant to be extended and not to be configured\n   * directly.\n   *\n   * When a processor is frozen it cannot be unfrozen.\n   * New processors working the same way can be created by calling the\n   * processor.\n   *\n   * It’s possible to freeze processors explicitly by calling `.freeze()`.\n   * Processors freeze automatically when `.parse()`, `.run()`, `.runSync()`,\n   * `.stringify()`, `.process()`, or `.processSync()` are called.\n   *\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *   The current processor.\n   */\n  freeze() {\n    if (this.frozen) {\n      return this\n    }\n\n    // Cast so that we can type plugins easier.\n    // Plugins are supposed to be usable on different processors, not just on\n    // this exact processor.\n    const self = /** @type {Processor} */ (/** @type {unknown} */ (this))\n\n    while (++this.freezeIndex < this.attachers.length) {\n      const [attacher, ...options] = this.attachers[this.freezeIndex]\n\n      if (options[0] === false) {\n        continue\n      }\n\n      if (options[0] === true) {\n        options[0] = undefined\n      }\n\n      const transformer = attacher.call(self, ...options)\n\n      if (typeof transformer === 'function') {\n        this.transformers.use(transformer)\n      }\n    }\n\n    this.frozen = true\n    this.freezeIndex = Number.POSITIVE_INFINITY\n\n    return this\n  }\n\n  /**\n   * Parse text to a syntax tree.\n   *\n   * > **Note**: `parse` freezes the processor if not already *frozen*.\n   *\n   * > **Note**: `parse` performs the parse phase, not the run phase or other\n   * > phases.\n   *\n   * @param {Compatible | undefined} [file]\n   *   file to parse (optional); typically `string` or `VFile`; any value\n   *   accepted as `x` in `new VFile(x)`.\n   * @returns {ParseTree extends undefined ? Node : ParseTree}\n   *   Syntax tree representing `file`.\n   */\n  parse(file) {\n    this.freeze()\n    const realFile = vfile(file)\n    const parser = this.parser || this.Parser\n    assertParser('parse', parser)\n    return parser(String(realFile), realFile)\n  }\n\n  /**\n   * Process the given file as configured on the processor.\n   *\n   * > **Note**: `process` freezes the processor if not already *frozen*.\n   *\n   * > **Note**: `process` performs the parse, run, and stringify phases.\n   *\n   * @overload\n   * @param {Compatible | undefined} file\n   * @param {ProcessCallback<VFileWithOutput<CompileResult>>} done\n   * @returns {undefined}\n   *\n   * @overload\n   * @param {Compatible | undefined} [file]\n   * @returns {Promise<VFileWithOutput<CompileResult>>}\n   *\n   * @param {Compatible | undefined} [file]\n   *   File (optional); typically `string` or `VFile`]; any value accepted as\n   *   `x` in `new VFile(x)`.\n   * @param {ProcessCallback<VFileWithOutput<CompileResult>> | undefined} [done]\n   *   Callback (optional).\n   * @returns {Promise<VFile> | undefined}\n   *   Nothing if `done` is given.\n   *   Otherwise a promise, rejected with a fatal error or resolved with the\n   *   processed file.\n   *\n   *   The parsed, transformed, and compiled value is available at\n   *   `file.value` (see note).\n   *\n   *   > **Note**: unified typically compiles by serializing: most\n   *   > compilers return `string` (or `Uint8Array`).\n   *   > Some compilers, such as the one configured with\n   *   > [`rehype-react`][rehype-react], return other values (in this case, a\n   *   > React tree).\n   *   > If you’re using a compiler that doesn’t serialize, expect different\n   *   > result values.\n   *   >\n   *   > To register custom results in TypeScript, add them to\n   *   > {@linkcode CompileResultMap}.\n   *\n   *   [rehype-react]: https://github.com/rehypejs/rehype-react\n   */\n  process(file, done) {\n    const self = this\n\n    this.freeze()\n    assertParser('process', this.parser || this.Parser)\n    assertCompiler('process', this.compiler || this.Compiler)\n\n    return done ? executor(undefined, done) : new Promise(executor)\n\n    // Note: `void`s needed for TS.\n    /**\n     * @param {((file: VFileWithOutput<CompileResult>) => undefined | void) | undefined} resolve\n     * @param {(error: Error | undefined) => undefined | void} reject\n     * @returns {undefined}\n     */\n    function executor(resolve, reject) {\n      const realFile = vfile(file)\n      // Assume `ParseTree` (the result of the parser) matches `HeadTree` (the\n      // input of the first transform).\n      const parseTree =\n        /** @type {HeadTree extends undefined ? Node : HeadTree} */ (\n          /** @type {unknown} */ (self.parse(realFile))\n        )\n\n      self.run(parseTree, realFile, function (error, tree, file) {\n        if (error || !tree || !file) {\n          return realDone(error)\n        }\n\n        // Assume `TailTree` (the output of the last transform) matches\n        // `CompileTree` (the input of the compiler).\n        const compileTree =\n          /** @type {CompileTree extends undefined ? Node : CompileTree} */ (\n            /** @type {unknown} */ (tree)\n          )\n\n        const compileResult = self.stringify(compileTree, file)\n\n        if (looksLikeAValue(compileResult)) {\n          file.value = compileResult\n        } else {\n          file.result = compileResult\n        }\n\n        realDone(error, /** @type {VFileWithOutput<CompileResult>} */ (file))\n      })\n\n      /**\n       * @param {Error | undefined} error\n       * @param {VFileWithOutput<CompileResult> | undefined} [file]\n       * @returns {undefined}\n       */\n      function realDone(error, file) {\n        if (error || !file) {\n          reject(error)\n        } else if (resolve) {\n          resolve(file)\n        } else {\n          assert(done, '`done` is defined if `resolve` is not')\n          done(undefined, file)\n        }\n      }\n    }\n  }\n\n  /**\n   * Process the given file as configured on the processor.\n   *\n   * An error is thrown if asynchronous transforms are configured.\n   *\n   * > **Note**: `processSync` freezes the processor if not already *frozen*.\n   *\n   * > **Note**: `processSync` performs the parse, run, and stringify phases.\n   *\n   * @param {Compatible | undefined} [file]\n   *   File (optional); typically `string` or `VFile`; any value accepted as\n   *   `x` in `new VFile(x)`.\n   * @returns {VFileWithOutput<CompileResult>}\n   *   The processed file.\n   *\n   *   The parsed, transformed, and compiled value is available at\n   *   `file.value` (see note).\n   *\n   *   > **Note**: unified typically compiles by serializing: most\n   *   > compilers return `string` (or `Uint8Array`).\n   *   > Some compilers, such as the one configured with\n   *   > [`rehype-react`][rehype-react], return other values (in this case, a\n   *   > React tree).\n   *   > If you’re using a compiler that doesn’t serialize, expect different\n   *   > result values.\n   *   >\n   *   > To register custom results in TypeScript, add them to\n   *   > {@linkcode CompileResultMap}.\n   *\n   *   [rehype-react]: https://github.com/rehypejs/rehype-react\n   */\n  processSync(file) {\n    /** @type {boolean} */\n    let complete = false\n    /** @type {VFileWithOutput<CompileResult> | undefined} */\n    let result\n\n    this.freeze()\n    assertParser('processSync', this.parser || this.Parser)\n    assertCompiler('processSync', this.compiler || this.Compiler)\n\n    this.process(file, realDone)\n    assertDone('processSync', 'process', complete)\n    assert(result, 'we either bailed on an error or have a tree')\n\n    return result\n\n    /**\n     * @type {ProcessCallback<VFileWithOutput<CompileResult>>}\n     */\n    function realDone(error, file) {\n      complete = true\n      bail(error)\n      result = file\n    }\n  }\n\n  /**\n   * Run *transformers* on a syntax tree.\n   *\n   * > **Note**: `run` freezes the processor if not already *frozen*.\n   *\n   * > **Note**: `run` performs the run phase, not other phases.\n   *\n   * @overload\n   * @param {HeadTree extends undefined ? Node : HeadTree} tree\n   * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} done\n   * @returns {undefined}\n   *\n   * @overload\n   * @param {HeadTree extends undefined ? Node : HeadTree} tree\n   * @param {Compatible | undefined} file\n   * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} done\n   * @returns {undefined}\n   *\n   * @overload\n   * @param {HeadTree extends undefined ? Node : HeadTree} tree\n   * @param {Compatible | undefined} [file]\n   * @returns {Promise<TailTree extends undefined ? Node : TailTree>}\n   *\n   * @param {HeadTree extends undefined ? Node : HeadTree} tree\n   *   Tree to transform and inspect.\n   * @param {(\n   *   RunCallback<TailTree extends undefined ? Node : TailTree> |\n   *   Compatible\n   * )} [file]\n   *   File associated with `node` (optional); any value accepted as `x` in\n   *   `new VFile(x)`.\n   * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} [done]\n   *   Callback (optional).\n   * @returns {Promise<TailTree extends undefined ? Node : TailTree> | undefined}\n   *   Nothing if `done` is given.\n   *   Otherwise, a promise rejected with a fatal error or resolved with the\n   *   transformed tree.\n   */\n  run(tree, file, done) {\n    assertNode(tree)\n    this.freeze()\n\n    const transformers = this.transformers\n\n    if (!done && typeof file === 'function') {\n      done = file\n      file = undefined\n    }\n\n    return done ? executor(undefined, done) : new Promise(executor)\n\n    // Note: `void`s needed for TS.\n    /**\n     * @param {(\n     *   ((tree: TailTree extends undefined ? Node : TailTree) => undefined | void) |\n     *   undefined\n     * )} resolve\n     * @param {(error: Error) => undefined | void} reject\n     * @returns {undefined}\n     */\n    function executor(resolve, reject) {\n      assert(\n        typeof file !== 'function',\n        '`file` can’t be a `done` anymore, we checked'\n      )\n      const realFile = vfile(file)\n      transformers.run(tree, realFile, realDone)\n\n      /**\n       * @param {Error | undefined} error\n       * @param {Node} outputTree\n       * @param {VFile} file\n       * @returns {undefined}\n       */\n      function realDone(error, outputTree, file) {\n        const resultingTree =\n          /** @type {TailTree extends undefined ? Node : TailTree} */ (\n            outputTree || tree\n          )\n\n        if (error) {\n          reject(error)\n        } else if (resolve) {\n          resolve(resultingTree)\n        } else {\n          assert(done, '`done` is defined if `resolve` is not')\n          done(undefined, resultingTree, file)\n        }\n      }\n    }\n  }\n\n  /**\n   * Run *transformers* on a syntax tree.\n   *\n   * An error is thrown if asynchronous transforms are configured.\n   *\n   * > **Note**: `runSync` freezes the processor if not already *frozen*.\n   *\n   * > **Note**: `runSync` performs the run phase, not other phases.\n   *\n   * @param {HeadTree extends undefined ? Node : HeadTree} tree\n   *   Tree to transform and inspect.\n   * @param {Compatible | undefined} [file]\n   *   File associated with `node` (optional); any value accepted as `x` in\n   *   `new VFile(x)`.\n   * @returns {TailTree extends undefined ? Node : TailTree}\n   *   Transformed tree.\n   */\n  runSync(tree, file) {\n    /** @type {boolean} */\n    let complete = false\n    /** @type {(TailTree extends undefined ? Node : TailTree) | undefined} */\n    let result\n\n    this.run(tree, file, realDone)\n\n    assertDone('runSync', 'run', complete)\n    assert(result, 'we either bailed on an error or have a tree')\n    return result\n\n    /**\n     * @type {RunCallback<TailTree extends undefined ? Node : TailTree>}\n     */\n    function realDone(error, tree) {\n      bail(error)\n      result = tree\n      complete = true\n    }\n  }\n\n  /**\n   * Compile a syntax tree.\n   *\n   * > **Note**: `stringify` freezes the processor if not already *frozen*.\n   *\n   * > **Note**: `stringify` performs the stringify phase, not the run phase\n   * > or other phases.\n   *\n   * @param {CompileTree extends undefined ? Node : CompileTree} tree\n   *   Tree to compile.\n   * @param {Compatible | undefined} [file]\n   *   File associated with `node` (optional); any value accepted as `x` in\n   *   `new VFile(x)`.\n   * @returns {CompileResult extends undefined ? Value : CompileResult}\n   *   Textual representation of the tree (see note).\n   *\n   *   > **Note**: unified typically compiles by serializing: most compilers\n   *   > return `string` (or `Uint8Array`).\n   *   > Some compilers, such as the one configured with\n   *   > [`rehype-react`][rehype-react], return other values (in this case, a\n   *   > React tree).\n   *   > If you’re using a compiler that doesn’t serialize, expect different\n   *   > result values.\n   *   >\n   *   > To register custom results in TypeScript, add them to\n   *   > {@linkcode CompileResultMap}.\n   *\n   *   [rehype-react]: https://github.com/rehypejs/rehype-react\n   */\n  stringify(tree, file) {\n    this.freeze()\n    const realFile = vfile(file)\n    const compiler = this.compiler || this.Compiler\n    assertCompiler('stringify', compiler)\n    assertNode(tree)\n\n    return compiler(tree, realFile)\n  }\n\n  /**\n   * Configure the processor to use a plugin, a list of usable values, or a\n   * preset.\n   *\n   * If the processor is already using a plugin, the previous plugin\n   * configuration is changed based on the options that are passed in.\n   * In other words, the plugin is not added a second time.\n   *\n   * > **Note**: `use` cannot be called on *frozen* processors.\n   * > Call the processor first to create a new unfrozen processor.\n   *\n   * @example\n   *   There are many ways to pass plugins to `.use()`.\n   *   This example gives an overview:\n   *\n   *   ```js\n   *   import {unified} from 'unified'\n   *\n   *   unified()\n   *     // Plugin with options:\n   *     .use(pluginA, {x: true, y: true})\n   *     // Passing the same plugin again merges configuration (to `{x: true, y: false, z: true}`):\n   *     .use(pluginA, {y: false, z: true})\n   *     // Plugins:\n   *     .use([pluginB, pluginC])\n   *     // Two plugins, the second with options:\n   *     .use([pluginD, [pluginE, {}]])\n   *     // Preset with plugins and settings:\n   *     .use({plugins: [pluginF, [pluginG, {}]], settings: {position: false}})\n   *     // Settings only:\n   *     .use({settings: {position: false}})\n   *   ```\n   *\n   * @template {Array<unknown>} [Parameters=[]]\n   * @template {Node | string | undefined} [Input=undefined]\n   * @template [Output=Input]\n   *\n   * @overload\n   * @param {Preset | null | undefined} [preset]\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *\n   * @overload\n   * @param {PluggableList} list\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *\n   * @overload\n   * @param {Plugin<Parameters, Input, Output>} plugin\n   * @param {...(Parameters | [boolean])} parameters\n   * @returns {UsePlugin<ParseTree, HeadTree, TailTree, CompileTree, CompileResult, Input, Output>}\n   *\n   * @param {PluggableList | Plugin | Preset | null | undefined} value\n   *   Usable value.\n   * @param {...unknown} parameters\n   *   Parameters, when a plugin is given as a usable value.\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *   Current processor.\n   */\n  use(value, ...parameters) {\n    const attachers = this.attachers\n    const namespace = this.namespace\n\n    assertUnfrozen('use', this.frozen)\n\n    if (value === null || value === undefined) {\n      // Empty.\n    } else if (typeof value === 'function') {\n      addPlugin(value, parameters)\n    } else if (typeof value === 'object') {\n      if (Array.isArray(value)) {\n        addList(value)\n      } else {\n        addPreset(value)\n      }\n    } else {\n      throw new TypeError('Expected usable value, not `' + value + '`')\n    }\n\n    return this\n\n    /**\n     * @param {Pluggable} value\n     * @returns {undefined}\n     */\n    function add(value) {\n      if (typeof value === 'function') {\n        addPlugin(value, [])\n      } else if (typeof value === 'object') {\n        if (Array.isArray(value)) {\n          const [plugin, ...parameters] =\n            /** @type {PluginTuple<Array<unknown>>} */ (value)\n          addPlugin(plugin, parameters)\n        } else {\n          addPreset(value)\n        }\n      } else {\n        throw new TypeError('Expected usable value, not `' + value + '`')\n      }\n    }\n\n    /**\n     * @param {Preset} result\n     * @returns {undefined}\n     */\n    function addPreset(result) {\n      if (!('plugins' in result) && !('settings' in result)) {\n        throw new Error(\n          'Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither'\n        )\n      }\n\n      addList(result.plugins)\n\n      if (result.settings) {\n        namespace.settings = extend(true, namespace.settings, result.settings)\n      }\n    }\n\n    /**\n     * @param {PluggableList | null | undefined} plugins\n     * @returns {undefined}\n     */\n    function addList(plugins) {\n      let index = -1\n\n      if (plugins === null || plugins === undefined) {\n        // Empty.\n      } else if (Array.isArray(plugins)) {\n        while (++index < plugins.length) {\n          const thing = plugins[index]\n          add(thing)\n        }\n      } else {\n        throw new TypeError('Expected a list of plugins, not `' + plugins + '`')\n      }\n    }\n\n    /**\n     * @param {Plugin} plugin\n     * @param {Array<unknown>} parameters\n     * @returns {undefined}\n     */\n    function addPlugin(plugin, parameters) {\n      let index = -1\n      let entryIndex = -1\n\n      while (++index < attachers.length) {\n        if (attachers[index][0] === plugin) {\n          entryIndex = index\n          break\n        }\n      }\n\n      if (entryIndex === -1) {\n        attachers.push([plugin, ...parameters])\n      }\n      // Only set if there was at least a `primary` value, otherwise we’d change\n      // `arguments.length`.\n      else if (parameters.length > 0) {\n        let [primary, ...rest] = parameters\n        const currentPrimary = attachers[entryIndex][1]\n        if (isPlainObj(currentPrimary) && isPlainObj(primary)) {\n          primary = extend(true, currentPrimary, primary)\n        }\n\n        attachers[entryIndex] = [plugin, primary, ...rest]\n      }\n    }\n  }\n}\n\n// Note: this returns a *callable* instance.\n// That’s why it’s documented as a function.\n/**\n * Create a new processor.\n *\n * @example\n *   This example shows how a new processor can be created (from `remark`) and linked\n *   to **stdin**(4) and **stdout**(4).\n *\n *   ```js\n *   import process from 'node:process'\n *   import concatStream from 'concat-stream'\n *   import {remark} from 'remark'\n *\n *   process.stdin.pipe(\n *     concatStream(function (buf) {\n *       process.stdout.write(String(remark().processSync(buf)))\n *     })\n *   )\n *   ```\n *\n * @returns\n *   New *unfrozen* processor (`processor`).\n *\n *   This processor is configured to work the same as its ancestor.\n *   When the descendant processor is configured in the future it does not\n *   affect the ancestral processor.\n */\nexport const unified = new Processor().freeze()\n\n/**\n * Assert a parser is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Parser}\n */\nfunction assertParser(name, value) {\n  if (typeof value !== 'function') {\n    throw new TypeError('Cannot `' + name + '` without `parser`')\n  }\n}\n\n/**\n * Assert a compiler is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Compiler}\n */\nfunction assertCompiler(name, value) {\n  if (typeof value !== 'function') {\n    throw new TypeError('Cannot `' + name + '` without `compiler`')\n  }\n}\n\n/**\n * Assert the processor is not frozen.\n *\n * @param {string} name\n * @param {unknown} frozen\n * @returns {asserts frozen is false}\n */\nfunction assertUnfrozen(name, frozen) {\n  if (frozen) {\n    throw new Error(\n      'Cannot call `' +\n        name +\n        '` on a frozen processor.\\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.'\n    )\n  }\n}\n\n/**\n * Assert `node` is a unist node.\n *\n * @param {unknown} node\n * @returns {asserts node is Node}\n */\nfunction assertNode(node) {\n  // `isPlainObj` unfortunately uses `any` instead of `unknown`.\n  // type-coverage:ignore-next-line\n  if (!isPlainObj(node) || typeof node.type !== 'string') {\n    throw new TypeError('Expected node, got `' + node + '`')\n    // Fine.\n  }\n}\n\n/**\n * Assert that `complete` is `true`.\n *\n * @param {string} name\n * @param {string} asyncName\n * @param {unknown} complete\n * @returns {asserts complete is true}\n */\nfunction assertDone(name, asyncName, complete) {\n  if (!complete) {\n    throw new Error(\n      '`' + name + '` finished async. Use `' + asyncName + '` instead'\n    )\n  }\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n  return looksLikeAVFile(value) ? value : new VFile(value)\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {value is VFile}\n */\nfunction looksLikeAVFile(value) {\n  return Boolean(\n    value &&\n      typeof value === 'object' &&\n      'message' in value &&\n      'messages' in value\n  )\n}\n\n/**\n * @param {unknown} [value]\n * @returns {value is Value}\n */\nfunction looksLikeAValue(value) {\n  return typeof value === 'string' || isUint8Array(value)\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n *   thing.\n * @returns {value is Uint8Array}\n *   Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n  return Boolean(\n    value &&\n      typeof value === 'object' &&\n      'byteLength' in value &&\n      'byteOffset' in value\n  )\n}\n","/**\n * @import {Element, Nodes, Parents, Root} from 'hast'\n * @import {Root as MdastRoot} from 'mdast'\n * @import {ComponentType, JSX, ReactElement, ReactNode} from 'react'\n * @import {Options as RemarkRehypeOptions} from 'remark-rehype'\n * @import {BuildVisitor} from 'unist-util-visit'\n * @import {PluggableList, Processor} from 'unified'\n */\n\n/**\n * @callback AllowElement\n *   Filter elements.\n * @param {Readonly<Element>} element\n *   Element to check.\n * @param {number} index\n *   Index of `element` in `parent`.\n * @param {Readonly<Parents> | undefined} parent\n *   Parent of `element`.\n * @returns {boolean | null | undefined}\n *   Whether to allow `element` (default: `false`).\n */\n\n/**\n * @typedef ExtraProps\n *   Extra fields we pass.\n * @property {Element | undefined} [node]\n *   passed when `passNode` is on.\n */\n\n/**\n * @typedef {{\n *   [Key in keyof JSX.IntrinsicElements]?: ComponentType<JSX.IntrinsicElements[Key] & ExtraProps> | keyof JSX.IntrinsicElements\n * }} Components\n *   Map tag names to components.\n */\n\n/**\n * @typedef Deprecation\n *   Deprecation.\n * @property {string} from\n *   Old field.\n * @property {string} id\n *   ID in readme.\n * @property {keyof Options} [to]\n *   New field.\n */\n\n/**\n * @typedef Options\n *   Configuration.\n * @property {AllowElement | null | undefined} [allowElement]\n *   Filter elements (optional);\n *   `allowedElements` / `disallowedElements` is used first.\n * @property {ReadonlyArray<string> | null | undefined} [allowedElements]\n *   Tag names to allow (default: all tag names);\n *   cannot combine w/ `disallowedElements`.\n * @property {string | null | undefined} [children]\n *   Markdown.\n * @property {Components | null | undefined} [components]\n *   Map tag names to components.\n * @property {ReadonlyArray<string> | null | undefined} [disallowedElements]\n *   Tag names to disallow (default: `[]`);\n *   cannot combine w/ `allowedElements`.\n * @property {PluggableList | null | undefined} [rehypePlugins]\n *   List of rehype plugins to use.\n * @property {PluggableList | null | undefined} [remarkPlugins]\n *   List of remark plugins to use.\n * @property {Readonly<RemarkRehypeOptions> | null | undefined} [remarkRehypeOptions]\n *   Options to pass through to `remark-rehype`.\n * @property {boolean | null | undefined} [skipHtml=false]\n *   Ignore HTML in markdown completely (default: `false`).\n * @property {boolean | null | undefined} [unwrapDisallowed=false]\n *   Extract (unwrap) what’s in disallowed elements (default: `false`);\n *   normally when say `strong` is not allowed, it and it’s children are dropped,\n *   with `unwrapDisallowed` the element itself is replaced by its children.\n * @property {UrlTransform | null | undefined} [urlTransform]\n *   Change URLs (default: `defaultUrlTransform`)\n */\n\n/**\n * @typedef HooksOptionsOnly\n *   Configuration specifically for {@linkcode MarkdownHooks}.\n * @property {ReactNode | null | undefined} [fallback]\n *   Content to render while the processor processing the markdown (optional).\n */\n\n/**\n * @typedef {Options & HooksOptionsOnly} HooksOptions\n *   Configuration for {@linkcode MarkdownHooks};\n *   extends the regular {@linkcode Options} with a `fallback` prop.\n */\n\n/**\n * @callback UrlTransform\n *   Transform all URLs.\n * @param {string} url\n *   URL.\n * @param {string} key\n *   Property name (example: `'href'`).\n * @param {Readonly<Element>} node\n *   Node.\n * @returns {string | null | undefined}\n *   Transformed URL (optional).\n */\n\nimport {unreachable} from 'devlop'\nimport {toJsxRuntime} from 'hast-util-to-jsx-runtime'\nimport {urlAttributes} from 'html-url-attributes'\nimport {Fragment, jsx, jsxs} from 'react/jsx-runtime'\nimport {useEffect, useState} from 'react'\nimport remarkParse from 'remark-parse'\nimport remarkRehype from 'remark-rehype'\nimport {unified} from 'unified'\nimport {visit} from 'unist-util-visit'\nimport {VFile} from 'vfile'\n\nconst changelog =\n  'https://github.com/remarkjs/react-markdown/blob/main/changelog.md'\n\n/** @type {PluggableList} */\nconst emptyPlugins = []\n/** @type {Readonly<RemarkRehypeOptions>} */\nconst emptyRemarkRehypeOptions = {allowDangerousHtml: true}\nconst safeProtocol = /^(https?|ircs?|mailto|xmpp)$/i\n\n// Mutable because we `delete` any time it’s used and a message is sent.\n/** @type {ReadonlyArray<Readonly<Deprecation>>} */\nconst deprecations = [\n  {from: 'astPlugins', id: 'remove-buggy-html-in-markdown-parser'},\n  {from: 'allowDangerousHtml', id: 'remove-buggy-html-in-markdown-parser'},\n  {\n    from: 'allowNode',\n    id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n    to: 'allowElement'\n  },\n  {\n    from: 'allowedTypes',\n    id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n    to: 'allowedElements'\n  },\n  {from: 'className', id: 'remove-classname'},\n  {\n    from: 'disallowedTypes',\n    id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n    to: 'disallowedElements'\n  },\n  {from: 'escapeHtml', id: 'remove-buggy-html-in-markdown-parser'},\n  {from: 'includeElementIndex', id: '#remove-includeelementindex'},\n  {\n    from: 'includeNodeIndex',\n    id: 'change-includenodeindex-to-includeelementindex'\n  },\n  {from: 'linkTarget', id: 'remove-linktarget'},\n  {from: 'plugins', id: 'change-plugins-to-remarkplugins', to: 'remarkPlugins'},\n  {from: 'rawSourcePos', id: '#remove-rawsourcepos'},\n  {from: 'renderers', id: 'change-renderers-to-components', to: 'components'},\n  {from: 'source', id: 'change-source-to-children', to: 'children'},\n  {from: 'sourcePos', id: '#remove-sourcepos'},\n  {from: 'transformImageUri', id: '#add-urltransform', to: 'urlTransform'},\n  {from: 'transformLinkUri', id: '#add-urltransform', to: 'urlTransform'}\n]\n\n/**\n * Component to render markdown.\n *\n * This is a synchronous component.\n * When using async plugins,\n * see {@linkcode MarkdownAsync} or {@linkcode MarkdownHooks}.\n *\n * @param {Readonly<Options>} options\n *   Props.\n * @returns {ReactElement}\n *   React element.\n */\nexport function Markdown(options) {\n  const processor = createProcessor(options)\n  const file = createFile(options)\n  return post(processor.runSync(processor.parse(file), file), options)\n}\n\n/**\n * Component to render markdown with support for async plugins\n * through async/await.\n *\n * Components returning promises are supported on the server.\n * For async support on the client,\n * see {@linkcode MarkdownHooks}.\n *\n * @param {Readonly<Options>} options\n *   Props.\n * @returns {Promise<ReactElement>}\n *   Promise to a React element.\n */\nexport async function MarkdownAsync(options) {\n  const processor = createProcessor(options)\n  const file = createFile(options)\n  const tree = await processor.run(processor.parse(file), file)\n  return post(tree, options)\n}\n\n/**\n * Component to render markdown with support for async plugins through hooks.\n *\n * This uses `useEffect` and `useState` hooks.\n * Hooks run on the client and do not immediately render something.\n * For async support on the server,\n * see {@linkcode MarkdownAsync}.\n *\n * @param {Readonly<HooksOptions>} options\n *   Props.\n * @returns {ReactNode}\n *   React node.\n */\nexport function MarkdownHooks(options) {\n  const processor = createProcessor(options)\n  const [error, setError] = useState(\n    /** @type {Error | undefined} */ (undefined)\n  )\n  const [tree, setTree] = useState(/** @type {Root | undefined} */ (undefined))\n\n  useEffect(\n    function () {\n      let cancelled = false\n      const file = createFile(options)\n\n      processor.run(processor.parse(file), file, function (error, tree) {\n        if (!cancelled) {\n          setError(error)\n          setTree(tree)\n        }\n      })\n\n      /**\n       * @returns {undefined}\n       *   Nothing.\n       */\n      return function () {\n        cancelled = true\n      }\n    },\n    [\n      options.children,\n      options.rehypePlugins,\n      options.remarkPlugins,\n      options.remarkRehypeOptions\n    ]\n  )\n\n  if (error) throw error\n\n  return tree ? post(tree, options) : options.fallback\n}\n\n/**\n * Set up the `unified` processor.\n *\n * @param {Readonly<Options>} options\n *   Props.\n * @returns {Processor<MdastRoot, MdastRoot, Root, undefined, undefined>}\n *   Result.\n */\nfunction createProcessor(options) {\n  const rehypePlugins = options.rehypePlugins || emptyPlugins\n  const remarkPlugins = options.remarkPlugins || emptyPlugins\n  const remarkRehypeOptions = options.remarkRehypeOptions\n    ? {...options.remarkRehypeOptions, ...emptyRemarkRehypeOptions}\n    : emptyRemarkRehypeOptions\n\n  const processor = unified()\n    .use(remarkParse)\n    .use(remarkPlugins)\n    .use(remarkRehype, remarkRehypeOptions)\n    .use(rehypePlugins)\n\n  return processor\n}\n\n/**\n * Set up the virtual file.\n *\n * @param {Readonly<Options>} options\n *   Props.\n * @returns {VFile}\n *   Result.\n */\nfunction createFile(options) {\n  const children = options.children || ''\n  const file = new VFile()\n\n  if (typeof children === 'string') {\n    file.value = children\n  } else {\n    unreachable(\n      'Unexpected value `' +\n        children +\n        '` for `children` prop, expected `string`'\n    )\n  }\n\n  return file\n}\n\n/**\n * Process the result from unified some more.\n *\n * @param {Nodes} tree\n *   Tree.\n * @param {Readonly<Options>} options\n *   Props.\n * @returns {ReactElement}\n *   React element.\n */\nfunction post(tree, options) {\n  const allowedElements = options.allowedElements\n  const allowElement = options.allowElement\n  const components = options.components\n  const disallowedElements = options.disallowedElements\n  const skipHtml = options.skipHtml\n  const unwrapDisallowed = options.unwrapDisallowed\n  const urlTransform = options.urlTransform || defaultUrlTransform\n\n  for (const deprecation of deprecations) {\n    if (Object.hasOwn(options, deprecation.from)) {\n      unreachable(\n        'Unexpected `' +\n          deprecation.from +\n          '` prop, ' +\n          (deprecation.to\n            ? 'use `' + deprecation.to + '` instead'\n            : 'remove it') +\n          ' (see <' +\n          changelog +\n          '#' +\n          deprecation.id +\n          '> for more info)'\n      )\n    }\n  }\n\n  if (allowedElements && disallowedElements) {\n    unreachable(\n      'Unexpected combined `allowedElements` and `disallowedElements`, expected one or the other'\n    )\n  }\n\n  visit(tree, transform)\n\n  return toJsxRuntime(tree, {\n    Fragment,\n    components,\n    ignoreInvalidStyle: true,\n    jsx,\n    jsxs,\n    passKeys: true,\n    passNode: true\n  })\n\n  /** @type {BuildVisitor<Root>} */\n  function transform(node, index, parent) {\n    if (node.type === 'raw' && parent && typeof index === 'number') {\n      if (skipHtml) {\n        parent.children.splice(index, 1)\n      } else {\n        parent.children[index] = {type: 'text', value: node.value}\n      }\n\n      return index\n    }\n\n    if (node.type === 'element') {\n      /** @type {string} */\n      let key\n\n      for (key in urlAttributes) {\n        if (\n          Object.hasOwn(urlAttributes, key) &&\n          Object.hasOwn(node.properties, key)\n        ) {\n          const value = node.properties[key]\n          const test = urlAttributes[key]\n          if (test === null || test.includes(node.tagName)) {\n            node.properties[key] = urlTransform(String(value || ''), key, node)\n          }\n        }\n      }\n    }\n\n    if (node.type === 'element') {\n      let remove = allowedElements\n        ? !allowedElements.includes(node.tagName)\n        : disallowedElements\n          ? disallowedElements.includes(node.tagName)\n          : false\n\n      if (!remove && allowElement && typeof index === 'number') {\n        remove = !allowElement(node, index, parent)\n      }\n\n      if (remove && parent && typeof index === 'number') {\n        if (unwrapDisallowed && node.children) {\n          parent.children.splice(index, 1, ...node.children)\n        } else {\n          parent.children.splice(index, 1)\n        }\n\n        return index\n      }\n    }\n  }\n}\n\n/**\n * Make a URL safe.\n *\n * @satisfies {UrlTransform}\n * @param {string} value\n *   URL.\n * @returns {string}\n *   Safe URL.\n */\nexport function defaultUrlTransform(value) {\n  // Same as:\n  // <https://github.com/micromark/micromark/blob/929275e/packages/micromark-util-sanitize-uri/dev/index.js#L34>\n  // But without the `encode` part.\n  const colon = value.indexOf(':')\n  const questionMark = value.indexOf('?')\n  const numberSign = value.indexOf('#')\n  const slash = value.indexOf('/')\n\n  if (\n    // If there is no protocol, it’s relative.\n    colon === -1 ||\n    // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n    (slash !== -1 && colon > slash) ||\n    (questionMark !== -1 && colon > questionMark) ||\n    (numberSign !== -1 && colon > numberSign) ||\n    // It is a protocol, it should be allowed.\n    safeProtocol.test(value.slice(0, colon))\n  ) {\n    return value\n  }\n\n  return ''\n}\n","/**\n * Count how often a character (or substring) is used in a string.\n *\n * @param {string} value\n *   Value to search in.\n * @param {string} character\n *   Character (or substring) to look for.\n * @return {number}\n *   Number of times `character` occurred in `value`.\n */\nexport function ccount(value, character) {\n  const source = String(value)\n\n  if (typeof character !== 'string') {\n    throw new TypeError('Expected character')\n  }\n\n  let count = 0\n  let index = source.indexOf(character)\n\n  while (index !== -1) {\n    count++\n    index = source.indexOf(character, index + character.length)\n  }\n\n  return count\n}\n","export default function escapeStringRegexp(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n}\n","/**\n * @import {Nodes, Parents, PhrasingContent, Root, Text} from 'mdast'\n * @import {BuildVisitor, Test, VisitorResult} from 'unist-util-visit-parents'\n */\n\n/**\n * @typedef RegExpMatchObject\n *   Info on the match.\n * @property {number} index\n *   The index of the search at which the result was found.\n * @property {string} input\n *   A copy of the search string in the text node.\n * @property {[...Array<Parents>, Text]} stack\n *   All ancestors of the text node, where the last node is the text itself.\n *\n * @typedef {RegExp | string} Find\n *   Pattern to find.\n *\n *   Strings are escaped and then turned into global expressions.\n *\n * @typedef {Array<FindAndReplaceTuple>} FindAndReplaceList\n *   Several find and replaces, in array form.\n *\n * @typedef {[Find, Replace?]} FindAndReplaceTuple\n *   Find and replace in tuple form.\n *\n * @typedef {ReplaceFunction | string | null | undefined} Replace\n *   Thing to replace with.\n *\n * @callback ReplaceFunction\n *   Callback called when a search matches.\n * @param {...any} parameters\n *   The parameters are the result of corresponding search expression:\n *\n *   * `value` (`string`) — whole match\n *   * `...capture` (`Array<string>`) — matches from regex capture groups\n *   * `match` (`RegExpMatchObject`) — info on the match\n * @returns {Array<PhrasingContent> | PhrasingContent | string | false | null | undefined}\n *   Thing to replace with.\n *\n *   * when `null`, `undefined`, `''`, remove the match\n *   * …or when `false`, do not replace at all\n *   * …or when `string`, replace with a text node of that value\n *   * …or when `Node` or `Array<Node>`, replace with those nodes\n *\n * @typedef {[RegExp, ReplaceFunction]} Pair\n *   Normalized find and replace.\n *\n * @typedef {Array<Pair>} Pairs\n *   All find and replaced.\n *\n * @typedef Options\n *   Configuration.\n * @property {Test | null | undefined} [ignore]\n *   Test for which nodes to ignore (optional).\n */\n\nimport escape from 'escape-string-regexp'\nimport {visitParents} from 'unist-util-visit-parents'\nimport {convert} from 'unist-util-is'\n\n/**\n * Find patterns in a tree and replace them.\n *\n * The algorithm searches the tree in *preorder* for complete values in `Text`\n * nodes.\n * Partial matches are not supported.\n *\n * @param {Nodes} tree\n *   Tree to change.\n * @param {FindAndReplaceList | FindAndReplaceTuple} list\n *   Patterns to find.\n * @param {Options | null | undefined} [options]\n *   Configuration (when `find` is not `Find`).\n * @returns {undefined}\n *   Nothing.\n */\nexport function findAndReplace(tree, list, options) {\n  const settings = options || {}\n  const ignored = convert(settings.ignore || [])\n  const pairs = toPairs(list)\n  let pairIndex = -1\n\n  while (++pairIndex < pairs.length) {\n    visitParents(tree, 'text', visitor)\n  }\n\n  /** @type {BuildVisitor<Root, 'text'>} */\n  function visitor(node, parents) {\n    let index = -1\n    /** @type {Parents | undefined} */\n    let grandparent\n\n    while (++index < parents.length) {\n      const parent = parents[index]\n      /** @type {Array<Nodes> | undefined} */\n      const siblings = grandparent ? grandparent.children : undefined\n\n      if (\n        ignored(\n          parent,\n          siblings ? siblings.indexOf(parent) : undefined,\n          grandparent\n        )\n      ) {\n        return\n      }\n\n      grandparent = parent\n    }\n\n    if (grandparent) {\n      return handler(node, parents)\n    }\n  }\n\n  /**\n   * Handle a text node which is not in an ignored parent.\n   *\n   * @param {Text} node\n   *   Text node.\n   * @param {Array<Parents>} parents\n   *   Parents.\n   * @returns {VisitorResult}\n   *   Result.\n   */\n  function handler(node, parents) {\n    const parent = parents[parents.length - 1]\n    const find = pairs[pairIndex][0]\n    const replace = pairs[pairIndex][1]\n    let start = 0\n    /** @type {Array<Nodes>} */\n    const siblings = parent.children\n    const index = siblings.indexOf(node)\n    let change = false\n    /** @type {Array<PhrasingContent>} */\n    let nodes = []\n\n    find.lastIndex = 0\n\n    let match = find.exec(node.value)\n\n    while (match) {\n      const position = match.index\n      /** @type {RegExpMatchObject} */\n      const matchObject = {\n        index: match.index,\n        input: match.input,\n        stack: [...parents, node]\n      }\n      let value = replace(...match, matchObject)\n\n      if (typeof value === 'string') {\n        value = value.length > 0 ? {type: 'text', value} : undefined\n      }\n\n      // It wasn’t a match after all.\n      if (value === false) {\n        // False acts as if there was no match.\n        // So we need to reset `lastIndex`, which currently being at the end of\n        // the current match, to the beginning.\n        find.lastIndex = position + 1\n      } else {\n        if (start !== position) {\n          nodes.push({\n            type: 'text',\n            value: node.value.slice(start, position)\n          })\n        }\n\n        if (Array.isArray(value)) {\n          nodes.push(...value)\n        } else if (value) {\n          nodes.push(value)\n        }\n\n        start = position + match[0].length\n        change = true\n      }\n\n      if (!find.global) {\n        break\n      }\n\n      match = find.exec(node.value)\n    }\n\n    if (change) {\n      if (start < node.value.length) {\n        nodes.push({type: 'text', value: node.value.slice(start)})\n      }\n\n      parent.children.splice(index, 1, ...nodes)\n    } else {\n      nodes = [node]\n    }\n\n    return index + nodes.length\n  }\n}\n\n/**\n * Turn a tuple or a list of tuples into pairs.\n *\n * @param {FindAndReplaceList | FindAndReplaceTuple} tupleOrList\n *   Schema.\n * @returns {Pairs}\n *   Clean pairs.\n */\nfunction toPairs(tupleOrList) {\n  /** @type {Pairs} */\n  const result = []\n\n  if (!Array.isArray(tupleOrList)) {\n    throw new TypeError('Expected find and replace tuple or list of tuples')\n  }\n\n  /** @type {FindAndReplaceList} */\n  // @ts-expect-error: correct.\n  const list =\n    !tupleOrList[0] || Array.isArray(tupleOrList[0])\n      ? tupleOrList\n      : [tupleOrList]\n\n  let index = -1\n\n  while (++index < list.length) {\n    const tuple = list[index]\n    result.push([toExpression(tuple[0]), toFunction(tuple[1])])\n  }\n\n  return result\n}\n\n/**\n * Turn a find into an expression.\n *\n * @param {Find} find\n *   Find.\n * @returns {RegExp}\n *   Expression.\n */\nfunction toExpression(find) {\n  return typeof find === 'string' ? new RegExp(escape(find), 'g') : find\n}\n\n/**\n * Turn a replace into a function.\n *\n * @param {Replace} replace\n *   Replace.\n * @returns {ReplaceFunction}\n *   Function.\n */\nfunction toFunction(replace) {\n  return typeof replace === 'function'\n    ? replace\n    : function () {\n        return replace\n      }\n}\n","/**\n * @import {RegExpMatchObject, ReplaceFunction} from 'mdast-util-find-and-replace'\n * @import {CompileContext, Extension as FromMarkdownExtension, Handle as FromMarkdownHandle, Transform as FromMarkdownTransform} from 'mdast-util-from-markdown'\n * @import {ConstructName, Options as ToMarkdownExtension} from 'mdast-util-to-markdown'\n * @import {Link, PhrasingContent} from 'mdast'\n */\n\nimport {ccount} from 'ccount'\nimport {ok as assert} from 'devlop'\nimport {unicodePunctuation, unicodeWhitespace} from 'micromark-util-character'\nimport {findAndReplace} from 'mdast-util-find-and-replace'\n\n/** @type {ConstructName} */\nconst inConstruct = 'phrasing'\n/** @type {Array<ConstructName>} */\nconst notInConstruct = ['autolink', 'link', 'image', 'label']\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM autolink\n * literals in markdown.\n *\n * @returns {FromMarkdownExtension}\n *   Extension for `mdast-util-to-markdown` to enable GFM autolink literals.\n */\nexport function gfmAutolinkLiteralFromMarkdown() {\n  return {\n    transforms: [transformGfmAutolinkLiterals],\n    enter: {\n      literalAutolink: enterLiteralAutolink,\n      literalAutolinkEmail: enterLiteralAutolinkValue,\n      literalAutolinkHttp: enterLiteralAutolinkValue,\n      literalAutolinkWww: enterLiteralAutolinkValue\n    },\n    exit: {\n      literalAutolink: exitLiteralAutolink,\n      literalAutolinkEmail: exitLiteralAutolinkEmail,\n      literalAutolinkHttp: exitLiteralAutolinkHttp,\n      literalAutolinkWww: exitLiteralAutolinkWww\n    }\n  }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM autolink\n * literals in markdown.\n *\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown` to enable GFM autolink literals.\n */\nexport function gfmAutolinkLiteralToMarkdown() {\n  return {\n    unsafe: [\n      {\n        character: '@',\n        before: '[+\\\\-.\\\\w]',\n        after: '[\\\\-.\\\\w]',\n        inConstruct,\n        notInConstruct\n      },\n      {\n        character: '.',\n        before: '[Ww]',\n        after: '[\\\\-.\\\\w]',\n        inConstruct,\n        notInConstruct\n      },\n      {\n        character: ':',\n        before: '[ps]',\n        after: '\\\\/',\n        inConstruct,\n        notInConstruct\n      }\n    ]\n  }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterLiteralAutolink(token) {\n  this.enter({type: 'link', title: null, url: '', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterLiteralAutolinkValue(token) {\n  this.config.enter.autolinkProtocol.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkHttp(token) {\n  this.config.exit.autolinkProtocol.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkWww(token) {\n  this.config.exit.data.call(this, token)\n  const node = this.stack[this.stack.length - 1]\n  assert(node.type === 'link')\n  node.url = 'http://' + this.sliceSerialize(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkEmail(token) {\n  this.config.exit.autolinkEmail.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolink(token) {\n  this.exit(token)\n}\n\n/** @type {FromMarkdownTransform} */\nfunction transformGfmAutolinkLiterals(tree) {\n  findAndReplace(\n    tree,\n    [\n      [/(https?:\\/\\/|www(?=\\.))([-.\\w]+)([^ \\t\\r\\n]*)/gi, findUrl],\n      [/(?<=^|\\s|\\p{P}|\\p{S})([-.\\w+]+)@([-\\w]+(?:\\.[-\\w]+)+)/gu, findEmail]\n    ],\n    {ignore: ['link', 'linkReference']}\n  )\n}\n\n/**\n * @type {ReplaceFunction}\n * @param {string} _\n * @param {string} protocol\n * @param {string} domain\n * @param {string} path\n * @param {RegExpMatchObject} match\n * @returns {Array<PhrasingContent> | Link | false}\n */\n// eslint-disable-next-line max-params\nfunction findUrl(_, protocol, domain, path, match) {\n  let prefix = ''\n\n  // Not an expected previous character.\n  if (!previous(match)) {\n    return false\n  }\n\n  // Treat `www` as part of the domain.\n  if (/^w/i.test(protocol)) {\n    domain = protocol + domain\n    protocol = ''\n    prefix = 'http://'\n  }\n\n  if (!isCorrectDomain(domain)) {\n    return false\n  }\n\n  const parts = splitUrl(domain + path)\n\n  if (!parts[0]) return false\n\n  /** @type {Link} */\n  const result = {\n    type: 'link',\n    title: null,\n    url: prefix + protocol + parts[0],\n    children: [{type: 'text', value: protocol + parts[0]}]\n  }\n\n  if (parts[1]) {\n    return [result, {type: 'text', value: parts[1]}]\n  }\n\n  return result\n}\n\n/**\n * @type {ReplaceFunction}\n * @param {string} _\n * @param {string} atext\n * @param {string} label\n * @param {RegExpMatchObject} match\n * @returns {Link | false}\n */\nfunction findEmail(_, atext, label, match) {\n  if (\n    // Not an expected previous character.\n    !previous(match, true) ||\n    // Label ends in not allowed character.\n    /[-\\d_]$/.test(label)\n  ) {\n    return false\n  }\n\n  return {\n    type: 'link',\n    title: null,\n    url: 'mailto:' + atext + '@' + label,\n    children: [{type: 'text', value: atext + '@' + label}]\n  }\n}\n\n/**\n * @param {string} domain\n * @returns {boolean}\n */\nfunction isCorrectDomain(domain) {\n  const parts = domain.split('.')\n\n  if (\n    parts.length < 2 ||\n    (parts[parts.length - 1] &&\n      (/_/.test(parts[parts.length - 1]) ||\n        !/[a-zA-Z\\d]/.test(parts[parts.length - 1]))) ||\n    (parts[parts.length - 2] &&\n      (/_/.test(parts[parts.length - 2]) ||\n        !/[a-zA-Z\\d]/.test(parts[parts.length - 2])))\n  ) {\n    return false\n  }\n\n  return true\n}\n\n/**\n * @param {string} url\n * @returns {[string, string | undefined]}\n */\nfunction splitUrl(url) {\n  const trailExec = /[!\"&'),.:;<>?\\]}]+$/.exec(url)\n\n  if (!trailExec) {\n    return [url, undefined]\n  }\n\n  url = url.slice(0, trailExec.index)\n\n  let trail = trailExec[0]\n  let closingParenIndex = trail.indexOf(')')\n  const openingParens = ccount(url, '(')\n  let closingParens = ccount(url, ')')\n\n  while (closingParenIndex !== -1 && openingParens > closingParens) {\n    url += trail.slice(0, closingParenIndex + 1)\n    trail = trail.slice(closingParenIndex + 1)\n    closingParenIndex = trail.indexOf(')')\n    closingParens++\n  }\n\n  return [url, trail]\n}\n\n/**\n * @param {RegExpMatchObject} match\n * @param {boolean | null | undefined} [email=false]\n * @returns {boolean}\n */\nfunction previous(match, email) {\n  const code = match.input.charCodeAt(match.index - 1)\n\n  return (\n    (match.index === 0 ||\n      unicodeWhitespace(code) ||\n      unicodePunctuation(code)) &&\n    // If it’s an email, the previous character should not be a slash.\n    (!email || code !== 47)\n  )\n}\n","/**\n * @import {\n *   CompileContext,\n *   Extension as FromMarkdownExtension,\n *   Handle as FromMarkdownHandle\n * } from 'mdast-util-from-markdown'\n * @import {ToMarkdownOptions} from 'mdast-util-gfm-footnote'\n * @import {\n *   Handle as ToMarkdownHandle,\n *   Map,\n *   Options as ToMarkdownExtension\n * } from 'mdast-util-to-markdown'\n * @import {FootnoteDefinition, FootnoteReference} from 'mdast'\n */\n\nimport {ok as assert} from 'devlop'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\n\nfootnoteReference.peek = footnoteReferencePeek\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteCallString() {\n  this.buffer()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteCall(token) {\n  this.enter({type: 'footnoteReference', identifier: '', label: ''}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteDefinitionLabelString() {\n  this.buffer()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteDefinition(token) {\n  this.enter(\n    {type: 'footnoteDefinition', identifier: '', label: '', children: []},\n    token\n  )\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteCallString(token) {\n  const label = this.resume()\n  const node = this.stack[this.stack.length - 1]\n  assert(node.type === 'footnoteReference')\n  node.identifier = normalizeIdentifier(\n    this.sliceSerialize(token)\n  ).toLowerCase()\n  node.label = label\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteCall(token) {\n  this.exit(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteDefinitionLabelString(token) {\n  const label = this.resume()\n  const node = this.stack[this.stack.length - 1]\n  assert(node.type === 'footnoteDefinition')\n  node.identifier = normalizeIdentifier(\n    this.sliceSerialize(token)\n  ).toLowerCase()\n  node.label = label\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteDefinition(token) {\n  this.exit(token)\n}\n\n/** @type {ToMarkdownHandle} */\nfunction footnoteReferencePeek() {\n  return '['\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {FootnoteReference} node\n */\nfunction footnoteReference(node, _, state, info) {\n  const tracker = state.createTracker(info)\n  let value = tracker.move('[^')\n  const exit = state.enter('footnoteReference')\n  const subexit = state.enter('reference')\n  value += tracker.move(\n    state.safe(state.associationId(node), {after: ']', before: value})\n  )\n  subexit()\n  exit()\n  value += tracker.move(']')\n  return value\n}\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM footnotes\n * in markdown.\n *\n * @returns {FromMarkdownExtension}\n *   Extension for `mdast-util-from-markdown`.\n */\nexport function gfmFootnoteFromMarkdown() {\n  return {\n    enter: {\n      gfmFootnoteCallString: enterFootnoteCallString,\n      gfmFootnoteCall: enterFootnoteCall,\n      gfmFootnoteDefinitionLabelString: enterFootnoteDefinitionLabelString,\n      gfmFootnoteDefinition: enterFootnoteDefinition\n    },\n    exit: {\n      gfmFootnoteCallString: exitFootnoteCallString,\n      gfmFootnoteCall: exitFootnoteCall,\n      gfmFootnoteDefinitionLabelString: exitFootnoteDefinitionLabelString,\n      gfmFootnoteDefinition: exitFootnoteDefinition\n    }\n  }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM footnotes\n * in markdown.\n *\n * @param {ToMarkdownOptions | null | undefined} [options]\n *   Configuration (optional).\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown`.\n */\nexport function gfmFootnoteToMarkdown(options) {\n  // To do: next major: change default.\n  let firstLineBlank = false\n\n  if (options && options.firstLineBlank) {\n    firstLineBlank = true\n  }\n\n  return {\n    handlers: {footnoteDefinition, footnoteReference},\n    // This is on by default already.\n    unsafe: [{character: '[', inConstruct: ['label', 'phrasing', 'reference']}]\n  }\n\n  /**\n   * @type {ToMarkdownHandle}\n   * @param {FootnoteDefinition} node\n   */\n  function footnoteDefinition(node, _, state, info) {\n    const tracker = state.createTracker(info)\n    let value = tracker.move('[^')\n    const exit = state.enter('footnoteDefinition')\n    const subexit = state.enter('label')\n    value += tracker.move(\n      state.safe(state.associationId(node), {before: value, after: ']'})\n    )\n    subexit()\n\n    value += tracker.move(']:')\n\n    if (node.children && node.children.length > 0) {\n      tracker.shift(4)\n\n      value += tracker.move(\n        (firstLineBlank ? '\\n' : ' ') +\n          state.indentLines(\n            state.containerFlow(node, tracker.current()),\n            firstLineBlank ? mapAll : mapExceptFirst\n          )\n      )\n    }\n\n    exit()\n\n    return value\n  }\n}\n\n/** @type {Map} */\nfunction mapExceptFirst(line, index, blank) {\n  return index === 0 ? line : mapAll(line, index, blank)\n}\n\n/** @type {Map} */\nfunction mapAll(line, index, blank) {\n  return (blank ? '' : '    ') + line\n}\n","/**\n * @typedef {import('mdast').Delete} Delete\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n *\n * @typedef {import('mdast-util-to-markdown').ConstructName} ConstructName\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n */\n\n/**\n * List of constructs that occur in phrasing (paragraphs, headings), but cannot\n * contain strikethrough.\n * So they sort of cancel each other out.\n * Note: could use a better name.\n *\n * Note: keep in sync with: <https://github.com/syntax-tree/mdast-util-to-markdown/blob/8ce8dbf/lib/unsafe.js#L14>\n *\n * @type {Array<ConstructName>}\n */\nconst constructsWithoutStrikethrough = [\n  'autolink',\n  'destinationLiteral',\n  'destinationRaw',\n  'reference',\n  'titleQuote',\n  'titleApostrophe'\n]\n\nhandleDelete.peek = peekDelete\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM\n * strikethrough in markdown.\n *\n * @returns {FromMarkdownExtension}\n *   Extension for `mdast-util-from-markdown` to enable GFM strikethrough.\n */\nexport function gfmStrikethroughFromMarkdown() {\n  return {\n    canContainEols: ['delete'],\n    enter: {strikethrough: enterStrikethrough},\n    exit: {strikethrough: exitStrikethrough}\n  }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM\n * strikethrough in markdown.\n *\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown` to enable GFM strikethrough.\n */\nexport function gfmStrikethroughToMarkdown() {\n  return {\n    unsafe: [\n      {\n        character: '~',\n        inConstruct: 'phrasing',\n        notInConstruct: constructsWithoutStrikethrough\n      }\n    ],\n    handlers: {delete: handleDelete}\n  }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterStrikethrough(token) {\n  this.enter({type: 'delete', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitStrikethrough(token) {\n  this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {Delete} node\n */\nfunction handleDelete(node, _, state, info) {\n  const tracker = state.createTracker(info)\n  const exit = state.enter('strikethrough')\n  let value = tracker.move('~~')\n  value += state.containerPhrasing(node, {\n    ...tracker.current(),\n    before: value,\n    after: '~'\n  })\n  value += tracker.move('~~')\n  exit()\n  return value\n}\n\n/** @type {ToMarkdownHandle} */\nfunction peekDelete() {\n  return '~'\n}\n","// To do: next major: remove.\n/**\n * @typedef {Options} MarkdownTableOptions\n *   Configuration.\n */\n\n/**\n * @typedef Options\n *   Configuration.\n * @property {boolean | null | undefined} [alignDelimiters=true]\n *   Whether to align the delimiters (default: `true`);\n *   they are aligned by default:\n *\n *   ```markdown\n *   | Alpha | B     |\n *   | ----- | ----- |\n *   | C     | Delta |\n *   ```\n *\n *   Pass `false` to make them staggered:\n *\n *   ```markdown\n *   | Alpha | B |\n *   | - | - |\n *   | C | Delta |\n *   ```\n * @property {ReadonlyArray<string | null | undefined> | string | null | undefined} [align]\n *   How to align columns (default: `''`);\n *   one style for all columns or styles for their respective columns;\n *   each style is either `'l'` (left), `'r'` (right), or `'c'` (center);\n *   other values are treated as `''`, which doesn’t place the colon in the\n *   alignment row but does align left;\n *   *only the lowercased first character is used, so `Right` is fine.*\n * @property {boolean | null | undefined} [delimiterEnd=true]\n *   Whether to end each row with the delimiter (default: `true`).\n *\n *   > 👉 **Note**: please don’t use this: it could create fragile structures\n *   > that aren’t understandable to some markdown parsers.\n *\n *   When `true`, there are ending delimiters:\n *\n *   ```markdown\n *   | Alpha | B     |\n *   | ----- | ----- |\n *   | C     | Delta |\n *   ```\n *\n *   When `false`, there are no ending delimiters:\n *\n *   ```markdown\n *   | Alpha | B\n *   | ----- | -----\n *   | C     | Delta\n *   ```\n * @property {boolean | null | undefined} [delimiterStart=true]\n *   Whether to begin each row with the delimiter (default: `true`).\n *\n *   > 👉 **Note**: please don’t use this: it could create fragile structures\n *   > that aren’t understandable to some markdown parsers.\n *\n *   When `true`, there are starting delimiters:\n *\n *   ```markdown\n *   | Alpha | B     |\n *   | ----- | ----- |\n *   | C     | Delta |\n *   ```\n *\n *   When `false`, there are no starting delimiters:\n *\n *   ```markdown\n *   Alpha | B     |\n *   ----- | ----- |\n *   C     | Delta |\n *   ```\n * @property {boolean | null | undefined} [padding=true]\n *   Whether to add a space of padding between delimiters and cells\n *   (default: `true`).\n *\n *   When `true`, there is padding:\n *\n *   ```markdown\n *   | Alpha | B     |\n *   | ----- | ----- |\n *   | C     | Delta |\n *   ```\n *\n *   When `false`, there is no padding:\n *\n *   ```markdown\n *   |Alpha|B    |\n *   |-----|-----|\n *   |C    |Delta|\n *   ```\n * @property {((value: string) => number) | null | undefined} [stringLength]\n *   Function to detect the length of table cell content (optional);\n *   this is used when aligning the delimiters (`|`) between table cells;\n *   full-width characters and emoji mess up delimiter alignment when viewing\n *   the markdown source;\n *   to fix this, you can pass this function,\n *   which receives the cell content and returns its “visible” size;\n *   note that what is and isn’t visible depends on where the text is displayed.\n *\n *   Without such a function, the following:\n *\n *   ```js\n *   markdownTable([\n *     ['Alpha', 'Bravo'],\n *     ['中文', 'Charlie'],\n *     ['👩‍❤️‍👩', 'Delta']\n *   ])\n *   ```\n *\n *   Yields:\n *\n *   ```markdown\n *   | Alpha | Bravo |\n *   | - | - |\n *   | 中文 | Charlie |\n *   | 👩‍❤️‍👩 | Delta |\n *   ```\n *\n *   With [`string-width`](https://github.com/sindresorhus/string-width):\n *\n *   ```js\n *   import stringWidth from 'string-width'\n *\n *   markdownTable(\n *     [\n *       ['Alpha', 'Bravo'],\n *       ['中文', 'Charlie'],\n *       ['👩‍❤️‍👩', 'Delta']\n *     ],\n *     {stringLength: stringWidth}\n *   )\n *   ```\n *\n *   Yields:\n *\n *   ```markdown\n *   | Alpha | Bravo   |\n *   | ----- | ------- |\n *   | 中文  | Charlie |\n *   | 👩‍❤️‍👩    | Delta   |\n *   ```\n */\n\n/**\n * @param {string} value\n *   Cell value.\n * @returns {number}\n *   Cell size.\n */\nfunction defaultStringLength(value) {\n  return value.length\n}\n\n/**\n * Generate a markdown\n * ([GFM](https://docs.github.com/en/github/writing-on-github/working-with-advanced-formatting/organizing-information-with-tables))\n * table.\n *\n * @param {ReadonlyArray<ReadonlyArray<string | null | undefined>>} table\n *   Table data (matrix of strings).\n * @param {Readonly<Options> | null | undefined} [options]\n *   Configuration (optional).\n * @returns {string}\n *   Result.\n */\nexport function markdownTable(table, options) {\n  const settings = options || {}\n  // To do: next major: change to spread.\n  const align = (settings.align || []).concat()\n  const stringLength = settings.stringLength || defaultStringLength\n  /** @type {Array<number>} Character codes as symbols for alignment per column. */\n  const alignments = []\n  /** @type {Array<Array<string>>} Cells per row. */\n  const cellMatrix = []\n  /** @type {Array<Array<number>>} Sizes of each cell per row. */\n  const sizeMatrix = []\n  /** @type {Array<number>} */\n  const longestCellByColumn = []\n  let mostCellsPerRow = 0\n  let rowIndex = -1\n\n  // This is a superfluous loop if we don’t align delimiters, but otherwise we’d\n  // do superfluous work when aligning, so optimize for aligning.\n  while (++rowIndex < table.length) {\n    /** @type {Array<string>} */\n    const row = []\n    /** @type {Array<number>} */\n    const sizes = []\n    let columnIndex = -1\n\n    if (table[rowIndex].length > mostCellsPerRow) {\n      mostCellsPerRow = table[rowIndex].length\n    }\n\n    while (++columnIndex < table[rowIndex].length) {\n      const cell = serialize(table[rowIndex][columnIndex])\n\n      if (settings.alignDelimiters !== false) {\n        const size = stringLength(cell)\n        sizes[columnIndex] = size\n\n        if (\n          longestCellByColumn[columnIndex] === undefined ||\n          size > longestCellByColumn[columnIndex]\n        ) {\n          longestCellByColumn[columnIndex] = size\n        }\n      }\n\n      row.push(cell)\n    }\n\n    cellMatrix[rowIndex] = row\n    sizeMatrix[rowIndex] = sizes\n  }\n\n  // Figure out which alignments to use.\n  let columnIndex = -1\n\n  if (typeof align === 'object' && 'length' in align) {\n    while (++columnIndex < mostCellsPerRow) {\n      alignments[columnIndex] = toAlignment(align[columnIndex])\n    }\n  } else {\n    const code = toAlignment(align)\n\n    while (++columnIndex < mostCellsPerRow) {\n      alignments[columnIndex] = code\n    }\n  }\n\n  // Inject the alignment row.\n  columnIndex = -1\n  /** @type {Array<string>} */\n  const row = []\n  /** @type {Array<number>} */\n  const sizes = []\n\n  while (++columnIndex < mostCellsPerRow) {\n    const code = alignments[columnIndex]\n    let before = ''\n    let after = ''\n\n    if (code === 99 /* `c` */) {\n      before = ':'\n      after = ':'\n    } else if (code === 108 /* `l` */) {\n      before = ':'\n    } else if (code === 114 /* `r` */) {\n      after = ':'\n    }\n\n    // There *must* be at least one hyphen-minus in each alignment cell.\n    let size =\n      settings.alignDelimiters === false\n        ? 1\n        : Math.max(\n            1,\n            longestCellByColumn[columnIndex] - before.length - after.length\n          )\n\n    const cell = before + '-'.repeat(size) + after\n\n    if (settings.alignDelimiters !== false) {\n      size = before.length + size + after.length\n\n      if (size > longestCellByColumn[columnIndex]) {\n        longestCellByColumn[columnIndex] = size\n      }\n\n      sizes[columnIndex] = size\n    }\n\n    row[columnIndex] = cell\n  }\n\n  // Inject the alignment row.\n  cellMatrix.splice(1, 0, row)\n  sizeMatrix.splice(1, 0, sizes)\n\n  rowIndex = -1\n  /** @type {Array<string>} */\n  const lines = []\n\n  while (++rowIndex < cellMatrix.length) {\n    const row = cellMatrix[rowIndex]\n    const sizes = sizeMatrix[rowIndex]\n    columnIndex = -1\n    /** @type {Array<string>} */\n    const line = []\n\n    while (++columnIndex < mostCellsPerRow) {\n      const cell = row[columnIndex] || ''\n      let before = ''\n      let after = ''\n\n      if (settings.alignDelimiters !== false) {\n        const size =\n          longestCellByColumn[columnIndex] - (sizes[columnIndex] || 0)\n        const code = alignments[columnIndex]\n\n        if (code === 114 /* `r` */) {\n          before = ' '.repeat(size)\n        } else if (code === 99 /* `c` */) {\n          if (size % 2) {\n            before = ' '.repeat(size / 2 + 0.5)\n            after = ' '.repeat(size / 2 - 0.5)\n          } else {\n            before = ' '.repeat(size / 2)\n            after = before\n          }\n        } else {\n          after = ' '.repeat(size)\n        }\n      }\n\n      if (settings.delimiterStart !== false && !columnIndex) {\n        line.push('|')\n      }\n\n      if (\n        settings.padding !== false &&\n        // Don’t add the opening space if we’re not aligning and the cell is\n        // empty: there will be a closing space.\n        !(settings.alignDelimiters === false && cell === '') &&\n        (settings.delimiterStart !== false || columnIndex)\n      ) {\n        line.push(' ')\n      }\n\n      if (settings.alignDelimiters !== false) {\n        line.push(before)\n      }\n\n      line.push(cell)\n\n      if (settings.alignDelimiters !== false) {\n        line.push(after)\n      }\n\n      if (settings.padding !== false) {\n        line.push(' ')\n      }\n\n      if (\n        settings.delimiterEnd !== false ||\n        columnIndex !== mostCellsPerRow - 1\n      ) {\n        line.push('|')\n      }\n    }\n\n    lines.push(\n      settings.delimiterEnd === false\n        ? line.join('').replace(/ +$/, '')\n        : line.join('')\n    )\n  }\n\n  return lines.join('\\n')\n}\n\n/**\n * @param {string | null | undefined} [value]\n *   Value to serialize.\n * @returns {string}\n *   Result.\n */\nfunction serialize(value) {\n  return value === null || value === undefined ? '' : String(value)\n}\n\n/**\n * @param {string | null | undefined} value\n *   Value.\n * @returns {number}\n *   Alignment.\n */\nfunction toAlignment(value) {\n  const code = typeof value === 'string' ? value.codePointAt(0) : 0\n\n  return code === 67 /* `C` */ || code === 99 /* `c` */\n    ? 99 /* `c` */\n    : code === 76 /* `L` */ || code === 108 /* `l` */\n      ? 108 /* `l` */\n      : code === 82 /* `R` */ || code === 114 /* `r` */\n        ? 114 /* `r` */\n        : 0\n}\n","/**\n * @callback Handler\n *   Handle a value, with a certain ID field set to a certain value.\n *   The ID field is passed to `zwitch`, and it’s value is this function’s\n *   place on the `handlers` record.\n * @param {...any} parameters\n *   Arbitrary parameters passed to the zwitch.\n *   The first will be an object with a certain ID field set to a certain value.\n * @returns {any}\n *   Anything!\n */\n\n/**\n * @callback UnknownHandler\n *   Handle values that do have a certain ID field, but it’s set to a value\n *   that is not listed in the `handlers` record.\n * @param {unknown} value\n *   An object with a certain ID field set to an unknown value.\n * @param {...any} rest\n *   Arbitrary parameters passed to the zwitch.\n * @returns {any}\n *   Anything!\n */\n\n/**\n * @callback InvalidHandler\n *   Handle values that do not have a certain ID field.\n * @param {unknown} value\n *   Any unknown value.\n * @param {...any} rest\n *   Arbitrary parameters passed to the zwitch.\n * @returns {void|null|undefined|never}\n *   This should crash or return nothing.\n */\n\n/**\n * @template {InvalidHandler} [Invalid=InvalidHandler]\n * @template {UnknownHandler} [Unknown=UnknownHandler]\n * @template {Record<string, Handler>} [Handlers=Record<string, Handler>]\n * @typedef Options\n *   Configuration (required).\n * @property {Invalid} [invalid]\n *   Handler to use for invalid values.\n * @property {Unknown} [unknown]\n *   Handler to use for unknown values.\n * @property {Handlers} [handlers]\n *   Handlers to use.\n */\n\nconst own = {}.hasOwnProperty\n\n/**\n * Handle values based on a field.\n *\n * @template {InvalidHandler} [Invalid=InvalidHandler]\n * @template {UnknownHandler} [Unknown=UnknownHandler]\n * @template {Record<string, Handler>} [Handlers=Record<string, Handler>]\n * @param {string} key\n *   Field to switch on.\n * @param {Options<Invalid, Unknown, Handlers>} [options]\n *   Configuration (required).\n * @returns {{unknown: Unknown, invalid: Invalid, handlers: Handlers, (...parameters: Parameters<Handlers[keyof Handlers]>): ReturnType<Handlers[keyof Handlers]>, (...parameters: Parameters<Unknown>): ReturnType<Unknown>}}\n */\nexport function zwitch(key, options) {\n  const settings = options || {}\n\n  /**\n   * Handle one value.\n   *\n   * Based on the bound `key`, a respective handler will be called.\n   * If `value` is not an object, or doesn’t have a `key` property, the special\n   * “invalid” handler will be called.\n   * If `value` has an unknown `key`, the special “unknown” handler will be\n   * called.\n   *\n   * All arguments, and the context object, are passed through to the handler,\n   * and it’s result is returned.\n   *\n   * @this {unknown}\n   *   Any context object.\n   * @param {unknown} [value]\n   *   Any value.\n   * @param {...unknown} parameters\n   *   Arbitrary parameters passed to the zwitch.\n   * @property {Handler} invalid\n   *   Handle for values that do not have a certain ID field.\n   * @property {Handler} unknown\n   *   Handle values that do have a certain ID field, but it’s set to a value\n   *   that is not listed in the `handlers` record.\n   * @property {Handlers} handlers\n   *   Record of handlers.\n   * @returns {unknown}\n   *   Anything.\n   */\n  function one(value, ...parameters) {\n    /** @type {Handler|undefined} */\n    let fn = one.invalid\n    const handlers = one.handlers\n\n    if (value && own.call(value, key)) {\n      // @ts-expect-error Indexable.\n      const id = String(value[key])\n      // @ts-expect-error Indexable.\n      fn = own.call(handlers, id) ? handlers[id] : one.unknown\n    }\n\n    if (fn) {\n      return fn.call(this, value, ...parameters)\n    }\n  }\n\n  one.handlers = settings.handlers || {}\n  one.invalid = settings.invalid\n  one.unknown = settings.unknown\n\n  // @ts-expect-error: matches!\n  return one\n}\n","/**\n * @import {Blockquote, Parents} from 'mdast'\n * @import {Info, Map, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {Blockquote} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function blockquote(node, _, state, info) {\n  const exit = state.enter('blockquote')\n  const tracker = state.createTracker(info)\n  tracker.move('> ')\n  tracker.shift(2)\n  const value = state.indentLines(\n    state.containerFlow(node, tracker.current()),\n    map\n  )\n  exit()\n  return value\n}\n\n/** @type {Map} */\nfunction map(line, _, blank) {\n  return '>' + (blank ? '' : ' ') + line\n}\n","/**\n * @import {ConstructName, Unsafe} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {Array<ConstructName>} stack\n * @param {Unsafe} pattern\n * @returns {boolean}\n */\nexport function patternInScope(stack, pattern) {\n  return (\n    listInScope(stack, pattern.inConstruct, true) &&\n    !listInScope(stack, pattern.notInConstruct, false)\n  )\n}\n\n/**\n * @param {Array<ConstructName>} stack\n * @param {Unsafe['inConstruct']} list\n * @param {boolean} none\n * @returns {boolean}\n */\nfunction listInScope(stack, list, none) {\n  if (typeof list === 'string') {\n    list = [list]\n  }\n\n  if (!list || list.length === 0) {\n    return none\n  }\n\n  let index = -1\n\n  while (++index < list.length) {\n    if (stack.includes(list[index])) {\n      return true\n    }\n  }\n\n  return false\n}\n","/**\n * @import {Break, Parents} from 'mdast'\n * @import {Info, State} from 'mdast-util-to-markdown'\n */\n\nimport {patternInScope} from '../util/pattern-in-scope.js'\n\n/**\n * @param {Break} _\n * @param {Parents | undefined} _1\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function hardBreak(_, _1, state, info) {\n  let index = -1\n\n  while (++index < state.unsafe.length) {\n    // If we can’t put eols in this construct (setext headings, tables), use a\n    // space instead.\n    if (\n      state.unsafe[index].character === '\\n' &&\n      patternInScope(state.stack, state.unsafe[index])\n    ) {\n      return /[ \\t]/.test(info.before) ? '' : ' '\n    }\n  }\n\n  return '\\\\\\n'\n}\n","/**\n * Get the count of the longest repeating streak of `substring` in `value`.\n *\n * @param {string} value\n *   Content to search in.\n * @param {string} substring\n *   Substring to look for, typically one character.\n * @returns {number}\n *   Count of most frequent adjacent `substring`s in `value`.\n */\nexport function longestStreak(value, substring) {\n  const source = String(value)\n  let index = source.indexOf(substring)\n  let expected = index\n  let count = 0\n  let max = 0\n\n  if (typeof substring !== 'string') {\n    throw new TypeError('Expected substring')\n  }\n\n  while (index !== -1) {\n    if (index === expected) {\n      if (++count > max) {\n        max = count\n      }\n    } else {\n      count = 1\n    }\n\n    expected = index + substring.length\n    index = source.indexOf(substring, expected)\n  }\n\n  return max\n}\n","/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {Code} from 'mdast'\n */\n\n/**\n * @param {Code} node\n * @param {State} state\n * @returns {boolean}\n */\nexport function formatCodeAsIndented(node, state) {\n  return Boolean(\n    state.options.fences === false &&\n      node.value &&\n      // If there’s no info…\n      !node.lang &&\n      // And there’s a non-whitespace character…\n      /[^ \\r\\n]/.test(node.value) &&\n      // And the value doesn’t start or end in a blank…\n      !/^[\\t ]*(?:[\\r\\n]|$)|(?:^|[\\r\\n])[\\t ]*$/.test(node.value)\n  )\n}\n","/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['fence'], null | undefined>}\n */\nexport function checkFence(state) {\n  const marker = state.options.fence || '`'\n\n  if (marker !== '`' && marker !== '~') {\n    throw new Error(\n      'Cannot serialize code with `' +\n        marker +\n        '` for `options.fence`, expected `` ` `` or `~`'\n    )\n  }\n\n  return marker\n}\n","/**\n * @import {Info, Map, State} from 'mdast-util-to-markdown'\n * @import {Code, Parents} from 'mdast'\n */\n\nimport {longestStreak} from 'longest-streak'\nimport {formatCodeAsIndented} from '../util/format-code-as-indented.js'\nimport {checkFence} from '../util/check-fence.js'\n\n/**\n * @param {Code} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function code(node, _, state, info) {\n  const marker = checkFence(state)\n  const raw = node.value || ''\n  const suffix = marker === '`' ? 'GraveAccent' : 'Tilde'\n\n  if (formatCodeAsIndented(node, state)) {\n    const exit = state.enter('codeIndented')\n    const value = state.indentLines(raw, map)\n    exit()\n    return value\n  }\n\n  const tracker = state.createTracker(info)\n  const sequence = marker.repeat(Math.max(longestStreak(raw, marker) + 1, 3))\n  const exit = state.enter('codeFenced')\n  let value = tracker.move(sequence)\n\n  if (node.lang) {\n    const subexit = state.enter(`codeFencedLang${suffix}`)\n    value += tracker.move(\n      state.safe(node.lang, {\n        before: value,\n        after: ' ',\n        encode: ['`'],\n        ...tracker.current()\n      })\n    )\n    subexit()\n  }\n\n  if (node.lang && node.meta) {\n    const subexit = state.enter(`codeFencedMeta${suffix}`)\n    value += tracker.move(' ')\n    value += tracker.move(\n      state.safe(node.meta, {\n        before: value,\n        after: '\\n',\n        encode: ['`'],\n        ...tracker.current()\n      })\n    )\n    subexit()\n  }\n\n  value += tracker.move('\\n')\n\n  if (raw) {\n    value += tracker.move(raw + '\\n')\n  }\n\n  value += tracker.move(sequence)\n  exit()\n  return value\n}\n\n/** @type {Map} */\nfunction map(line, _, blank) {\n  return (blank ? '' : '    ') + line\n}\n","/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['quote'], null | undefined>}\n */\nexport function checkQuote(state) {\n  const marker = state.options.quote || '\"'\n\n  if (marker !== '\"' && marker !== \"'\") {\n    throw new Error(\n      'Cannot serialize title with `' +\n        marker +\n        '` for `options.quote`, expected `\"`, or `\\'`'\n    )\n  }\n\n  return marker\n}\n","/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Definition, Parents} from 'mdast'\n */\n\nimport {checkQuote} from '../util/check-quote.js'\n\n/**\n * @param {Definition} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function definition(node, _, state, info) {\n  const quote = checkQuote(state)\n  const suffix = quote === '\"' ? 'Quote' : 'Apostrophe'\n  const exit = state.enter('definition')\n  let subexit = state.enter('label')\n  const tracker = state.createTracker(info)\n  let value = tracker.move('[')\n  value += tracker.move(\n    state.safe(state.associationId(node), {\n      before: value,\n      after: ']',\n      ...tracker.current()\n    })\n  )\n  value += tracker.move(']: ')\n\n  subexit()\n\n  if (\n    // If there’s no url, or…\n    !node.url ||\n    // If there are control characters or whitespace.\n    /[\\0- \\u007F]/.test(node.url)\n  ) {\n    subexit = state.enter('destinationLiteral')\n    value += tracker.move('<')\n    value += tracker.move(\n      state.safe(node.url, {before: value, after: '>', ...tracker.current()})\n    )\n    value += tracker.move('>')\n  } else {\n    // No whitespace, raw is prettier.\n    subexit = state.enter('destinationRaw')\n    value += tracker.move(\n      state.safe(node.url, {\n        before: value,\n        after: node.title ? ' ' : '\\n',\n        ...tracker.current()\n      })\n    )\n  }\n\n  subexit()\n\n  if (node.title) {\n    subexit = state.enter(`title${suffix}`)\n    value += tracker.move(' ' + quote)\n    value += tracker.move(\n      state.safe(node.title, {\n        before: value,\n        after: quote,\n        ...tracker.current()\n      })\n    )\n    value += tracker.move(quote)\n    subexit()\n  }\n\n  exit()\n\n  return value\n}\n","/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['emphasis'], null | undefined>}\n */\nexport function checkEmphasis(state) {\n  const marker = state.options.emphasis || '*'\n\n  if (marker !== '*' && marker !== '_') {\n    throw new Error(\n      'Cannot serialize emphasis with `' +\n        marker +\n        '` for `options.emphasis`, expected `*`, or `_`'\n    )\n  }\n\n  return marker\n}\n","/**\n * Encode a code point as a character reference.\n *\n * @param {number} code\n *   Code point to encode.\n * @returns {string}\n *   Encoded character reference.\n */\nexport function encodeCharacterReference(code) {\n  return '&#x' + code.toString(16).toUpperCase() + ';'\n}\n","/**\n * @import {EncodeSides} from '../types.js'\n */\n\nimport {classifyCharacter} from 'micromark-util-classify-character'\n\n/**\n * Check whether to encode (as a character reference) the characters\n * surrounding an attention run.\n *\n * Which characters are around an attention run influence whether it works or\n * not.\n *\n * See <https://github.com/orgs/syntax-tree/discussions/60> for more info.\n * See this markdown in a particular renderer to see what works:\n *\n * ```markdown\n * |                         | A (letter inside) | B (punctuation inside) | C (whitespace inside) | D (nothing inside) |\n * | ----------------------- | ----------------- | ---------------------- | --------------------- | ------------------ |\n * | 1 (letter outside)      | x*y*z             | x*.*z                  | x* *z                 | x**z               |\n * | 2 (punctuation outside) | .*y*.             | .*.*.                  | .* *.                 | .**.               |\n * | 3 (whitespace outside)  | x *y* z           | x *.* z                | x * * z               | x ** z             |\n * | 4 (nothing outside)     | *x*               | *.*                    | * *                   | **                 |\n * ```\n *\n * @param {number} outside\n *   Code point on the outer side of the run.\n * @param {number} inside\n *   Code point on the inner side of the run.\n * @param {'*' | '_'} marker\n *   Marker of the run.\n *   Underscores are handled more strictly (they form less often) than\n *   asterisks.\n * @returns {EncodeSides}\n *   Whether to encode characters.\n */\n// Important: punctuation must never be encoded.\n// Punctuation is solely used by markdown constructs.\n// And by encoding itself.\n// Encoding them will break constructs or double encode things.\nexport function encodeInfo(outside, inside, marker) {\n  const outsideKind = classifyCharacter(outside)\n  const insideKind = classifyCharacter(inside)\n\n  // Letter outside:\n  if (outsideKind === undefined) {\n    return insideKind === undefined\n      ? // Letter inside:\n        // we have to encode *both* letters for `_` as it is looser.\n        // it already forms for `*` (and GFMs `~`).\n        marker === '_'\n        ? {inside: true, outside: true}\n        : {inside: false, outside: false}\n      : insideKind === 1\n        ? // Whitespace inside: encode both (letter, whitespace).\n          {inside: true, outside: true}\n        : // Punctuation inside: encode outer (letter)\n          {inside: false, outside: true}\n  }\n\n  // Whitespace outside:\n  if (outsideKind === 1) {\n    return insideKind === undefined\n      ? // Letter inside: already forms.\n        {inside: false, outside: false}\n      : insideKind === 1\n        ? // Whitespace inside: encode both (whitespace).\n          {inside: true, outside: true}\n        : // Punctuation inside: already forms.\n          {inside: false, outside: false}\n  }\n\n  // Punctuation outside:\n  return insideKind === undefined\n    ? // Letter inside: already forms.\n      {inside: false, outside: false}\n    : insideKind === 1\n      ? // Whitespace inside: encode inner (whitespace).\n        {inside: true, outside: false}\n      : // Punctuation inside: already forms.\n        {inside: false, outside: false}\n}\n","/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Emphasis, Parents} from 'mdast'\n */\n\nimport {checkEmphasis} from '../util/check-emphasis.js'\nimport {encodeCharacterReference} from '../util/encode-character-reference.js'\nimport {encodeInfo} from '../util/encode-info.js'\n\nemphasis.peek = emphasisPeek\n\n/**\n * @param {Emphasis} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function emphasis(node, _, state, info) {\n  const marker = checkEmphasis(state)\n  const exit = state.enter('emphasis')\n  const tracker = state.createTracker(info)\n  const before = tracker.move(marker)\n\n  let between = tracker.move(\n    state.containerPhrasing(node, {\n      after: marker,\n      before,\n      ...tracker.current()\n    })\n  )\n  const betweenHead = between.charCodeAt(0)\n  const open = encodeInfo(\n    info.before.charCodeAt(info.before.length - 1),\n    betweenHead,\n    marker\n  )\n\n  if (open.inside) {\n    between = encodeCharacterReference(betweenHead) + between.slice(1)\n  }\n\n  const betweenTail = between.charCodeAt(between.length - 1)\n  const close = encodeInfo(info.after.charCodeAt(0), betweenTail, marker)\n\n  if (close.inside) {\n    between = between.slice(0, -1) + encodeCharacterReference(betweenTail)\n  }\n\n  const after = tracker.move(marker)\n\n  exit()\n\n  state.attentionEncodeSurroundingInfo = {\n    after: close.outside,\n    before: open.outside\n  }\n  return before + between + after\n}\n\n/**\n * @param {Emphasis} _\n * @param {Parents | undefined} _1\n * @param {State} state\n * @returns {string}\n */\nfunction emphasisPeek(_, _1, state) {\n  return state.options.emphasis || '*'\n}\n","/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {Heading} from 'mdast'\n */\n\nimport {EXIT, visit} from 'unist-util-visit'\nimport {toString} from 'mdast-util-to-string'\n\n/**\n * @param {Heading} node\n * @param {State} state\n * @returns {boolean}\n */\nexport function formatHeadingAsSetext(node, state) {\n  let literalWithBreak = false\n\n  // Look for literals with a line break.\n  // Note that this also\n  visit(node, function (node) {\n    if (\n      ('value' in node && /\\r?\\n|\\r/.test(node.value)) ||\n      node.type === 'break'\n    ) {\n      literalWithBreak = true\n      return EXIT\n    }\n  })\n\n  return Boolean(\n    (!node.depth || node.depth < 3) &&\n      toString(node) &&\n      (state.options.setext || literalWithBreak)\n  )\n}\n","/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Heading, Parents} from 'mdast'\n */\n\nimport {encodeCharacterReference} from '../util/encode-character-reference.js'\nimport {formatHeadingAsSetext} from '../util/format-heading-as-setext.js'\n\n/**\n * @param {Heading} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function heading(node, _, state, info) {\n  const rank = Math.max(Math.min(6, node.depth || 1), 1)\n  const tracker = state.createTracker(info)\n\n  if (formatHeadingAsSetext(node, state)) {\n    const exit = state.enter('headingSetext')\n    const subexit = state.enter('phrasing')\n    const value = state.containerPhrasing(node, {\n      ...tracker.current(),\n      before: '\\n',\n      after: '\\n'\n    })\n    subexit()\n    exit()\n\n    return (\n      value +\n      '\\n' +\n      (rank === 1 ? '=' : '-').repeat(\n        // The whole size…\n        value.length -\n          // Minus the position of the character after the last EOL (or\n          // 0 if there is none)…\n          (Math.max(value.lastIndexOf('\\r'), value.lastIndexOf('\\n')) + 1)\n      )\n    )\n  }\n\n  const sequence = '#'.repeat(rank)\n  const exit = state.enter('headingAtx')\n  const subexit = state.enter('phrasing')\n\n  // Note: for proper tracking, we should reset the output positions when there\n  // is no content returned, because then the space is not output.\n  // Practically, in that case, there is no content, so it doesn’t matter that\n  // we’ve tracked one too many characters.\n  tracker.move(sequence + ' ')\n\n  let value = state.containerPhrasing(node, {\n    before: '# ',\n    after: '\\n',\n    ...tracker.current()\n  })\n\n  if (/^[\\t ]/.test(value)) {\n    // To do: what effect has the character reference on tracking?\n    value = encodeCharacterReference(value.charCodeAt(0)) + value.slice(1)\n  }\n\n  value = value ? sequence + ' ' + value : sequence\n\n  if (state.options.closeAtx) {\n    value += ' ' + sequence\n  }\n\n  subexit()\n  exit()\n\n  return value\n}\n","/**\n * @import {Html} from 'mdast'\n */\n\nhtml.peek = htmlPeek\n\n/**\n * @param {Html} node\n * @returns {string}\n */\nexport function html(node) {\n  return node.value || ''\n}\n\n/**\n * @returns {string}\n */\nfunction htmlPeek() {\n  return '<'\n}\n","/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Image, Parents} from 'mdast'\n */\n\nimport {checkQuote} from '../util/check-quote.js'\n\nimage.peek = imagePeek\n\n/**\n * @param {Image} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function image(node, _, state, info) {\n  const quote = checkQuote(state)\n  const suffix = quote === '\"' ? 'Quote' : 'Apostrophe'\n  const exit = state.enter('image')\n  let subexit = state.enter('label')\n  const tracker = state.createTracker(info)\n  let value = tracker.move('![')\n  value += tracker.move(\n    state.safe(node.alt, {before: value, after: ']', ...tracker.current()})\n  )\n  value += tracker.move('](')\n\n  subexit()\n\n  if (\n    // If there’s no url but there is a title…\n    (!node.url && node.title) ||\n    // If there are control characters or whitespace.\n    /[\\0- \\u007F]/.test(node.url)\n  ) {\n    subexit = state.enter('destinationLiteral')\n    value += tracker.move('<')\n    value += tracker.move(\n      state.safe(node.url, {before: value, after: '>', ...tracker.current()})\n    )\n    value += tracker.move('>')\n  } else {\n    // No whitespace, raw is prettier.\n    subexit = state.enter('destinationRaw')\n    value += tracker.move(\n      state.safe(node.url, {\n        before: value,\n        after: node.title ? ' ' : ')',\n        ...tracker.current()\n      })\n    )\n  }\n\n  subexit()\n\n  if (node.title) {\n    subexit = state.enter(`title${suffix}`)\n    value += tracker.move(' ' + quote)\n    value += tracker.move(\n      state.safe(node.title, {\n        before: value,\n        after: quote,\n        ...tracker.current()\n      })\n    )\n    value += tracker.move(quote)\n    subexit()\n  }\n\n  value += tracker.move(')')\n  exit()\n\n  return value\n}\n\n/**\n * @returns {string}\n */\nfunction imagePeek() {\n  return '!'\n}\n","/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {ImageReference, Parents} from 'mdast'\n */\n\nimageReference.peek = imageReferencePeek\n\n/**\n * @param {ImageReference} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function imageReference(node, _, state, info) {\n  const type = node.referenceType\n  const exit = state.enter('imageReference')\n  let subexit = state.enter('label')\n  const tracker = state.createTracker(info)\n  let value = tracker.move('![')\n  const alt = state.safe(node.alt, {\n    before: value,\n    after: ']',\n    ...tracker.current()\n  })\n  value += tracker.move(alt + '][')\n\n  subexit()\n  // Hide the fact that we’re in phrasing, because escapes don’t work.\n  const stack = state.stack\n  state.stack = []\n  subexit = state.enter('reference')\n  // Note: for proper tracking, we should reset the output positions when we end\n  // up making a `shortcut` reference, because then there is no brace output.\n  // Practically, in that case, there is no content, so it doesn’t matter that\n  // we’ve tracked one too many characters.\n  const reference = state.safe(state.associationId(node), {\n    before: value,\n    after: ']',\n    ...tracker.current()\n  })\n  subexit()\n  state.stack = stack\n  exit()\n\n  if (type === 'full' || !alt || alt !== reference) {\n    value += tracker.move(reference + ']')\n  } else if (type === 'shortcut') {\n    // Remove the unwanted `[`.\n    value = value.slice(0, -1)\n  } else {\n    value += tracker.move(']')\n  }\n\n  return value\n}\n\n/**\n * @returns {string}\n */\nfunction imageReferencePeek() {\n  return '!'\n}\n","/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {InlineCode, Parents} from 'mdast'\n */\n\ninlineCode.peek = inlineCodePeek\n\n/**\n * @param {InlineCode} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @returns {string}\n */\nexport function inlineCode(node, _, state) {\n  let value = node.value || ''\n  let sequence = '`'\n  let index = -1\n\n  // If there is a single grave accent on its own in the code, use a fence of\n  // two.\n  // If there are two in a row, use one.\n  while (new RegExp('(^|[^`])' + sequence + '([^`]|$)').test(value)) {\n    sequence += '`'\n  }\n\n  // If this is not just spaces or eols (tabs don’t count), and either the\n  // first or last character are a space, eol, or tick, then pad with spaces.\n  if (\n    /[^ \\r\\n]/.test(value) &&\n    ((/^[ \\r\\n]/.test(value) && /[ \\r\\n]$/.test(value)) || /^`|`$/.test(value))\n  ) {\n    value = ' ' + value + ' '\n  }\n\n  // We have a potential problem: certain characters after eols could result in\n  // blocks being seen.\n  // For example, if someone injected the string `'\\n# b'`, then that would\n  // result in an ATX heading.\n  // We can’t escape characters in `inlineCode`, but because eols are\n  // transformed to spaces when going from markdown to HTML anyway, we can swap\n  // them out.\n  while (++index < state.unsafe.length) {\n    const pattern = state.unsafe[index]\n    const expression = state.compilePattern(pattern)\n    /** @type {RegExpExecArray | null} */\n    let match\n\n    // Only look for `atBreak`s.\n    // Btw: note that `atBreak` patterns will always start the regex at LF or\n    // CR.\n    if (!pattern.atBreak) continue\n\n    while ((match = expression.exec(value))) {\n      let position = match.index\n\n      // Support CRLF (patterns only look for one of the characters).\n      if (\n        value.charCodeAt(position) === 10 /* `\\n` */ &&\n        value.charCodeAt(position - 1) === 13 /* `\\r` */\n      ) {\n        position--\n      }\n\n      value = value.slice(0, position) + ' ' + value.slice(match.index + 1)\n    }\n  }\n\n  return sequence + value + sequence\n}\n\n/**\n * @returns {string}\n */\nfunction inlineCodePeek() {\n  return '`'\n}\n","/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {Link} from 'mdast'\n */\n\nimport {toString} from 'mdast-util-to-string'\n\n/**\n * @param {Link} node\n * @param {State} state\n * @returns {boolean}\n */\nexport function formatLinkAsAutolink(node, state) {\n  const raw = toString(node)\n\n  return Boolean(\n    !state.options.resourceLink &&\n      // If there’s a url…\n      node.url &&\n      // And there’s a no title…\n      !node.title &&\n      // And the content of `node` is a single text node…\n      node.children &&\n      node.children.length === 1 &&\n      node.children[0].type === 'text' &&\n      // And if the url is the same as the content…\n      (raw === node.url || 'mailto:' + raw === node.url) &&\n      // And that starts w/ a protocol…\n      /^[a-z][a-z+.-]+:/i.test(node.url) &&\n      // And that doesn’t contain ASCII control codes (character escapes and\n      // references don’t work), space, or angle brackets…\n      !/[\\0- <>\\u007F]/.test(node.url)\n  )\n}\n","/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Link, Parents} from 'mdast'\n * @import {Exit} from '../types.js'\n */\n\nimport {checkQuote} from '../util/check-quote.js'\nimport {formatLinkAsAutolink} from '../util/format-link-as-autolink.js'\n\nlink.peek = linkPeek\n\n/**\n * @param {Link} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function link(node, _, state, info) {\n  const quote = checkQuote(state)\n  const suffix = quote === '\"' ? 'Quote' : 'Apostrophe'\n  const tracker = state.createTracker(info)\n  /** @type {Exit} */\n  let exit\n  /** @type {Exit} */\n  let subexit\n\n  if (formatLinkAsAutolink(node, state)) {\n    // Hide the fact that we’re in phrasing, because escapes don’t work.\n    const stack = state.stack\n    state.stack = []\n    exit = state.enter('autolink')\n    let value = tracker.move('<')\n    value += tracker.move(\n      state.containerPhrasing(node, {\n        before: value,\n        after: '>',\n        ...tracker.current()\n      })\n    )\n    value += tracker.move('>')\n    exit()\n    state.stack = stack\n    return value\n  }\n\n  exit = state.enter('link')\n  subexit = state.enter('label')\n  let value = tracker.move('[')\n  value += tracker.move(\n    state.containerPhrasing(node, {\n      before: value,\n      after: '](',\n      ...tracker.current()\n    })\n  )\n  value += tracker.move('](')\n  subexit()\n\n  if (\n    // If there’s no url but there is a title…\n    (!node.url && node.title) ||\n    // If there are control characters or whitespace.\n    /[\\0- \\u007F]/.test(node.url)\n  ) {\n    subexit = state.enter('destinationLiteral')\n    value += tracker.move('<')\n    value += tracker.move(\n      state.safe(node.url, {before: value, after: '>', ...tracker.current()})\n    )\n    value += tracker.move('>')\n  } else {\n    // No whitespace, raw is prettier.\n    subexit = state.enter('destinationRaw')\n    value += tracker.move(\n      state.safe(node.url, {\n        before: value,\n        after: node.title ? ' ' : ')',\n        ...tracker.current()\n      })\n    )\n  }\n\n  subexit()\n\n  if (node.title) {\n    subexit = state.enter(`title${suffix}`)\n    value += tracker.move(' ' + quote)\n    value += tracker.move(\n      state.safe(node.title, {\n        before: value,\n        after: quote,\n        ...tracker.current()\n      })\n    )\n    value += tracker.move(quote)\n    subexit()\n  }\n\n  value += tracker.move(')')\n\n  exit()\n  return value\n}\n\n/**\n * @param {Link} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @returns {string}\n */\nfunction linkPeek(node, _, state) {\n  return formatLinkAsAutolink(node, state) ? '<' : '['\n}\n","/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {LinkReference, Parents} from 'mdast'\n */\n\nlinkReference.peek = linkReferencePeek\n\n/**\n * @param {LinkReference} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function linkReference(node, _, state, info) {\n  const type = node.referenceType\n  const exit = state.enter('linkReference')\n  let subexit = state.enter('label')\n  const tracker = state.createTracker(info)\n  let value = tracker.move('[')\n  const text = state.containerPhrasing(node, {\n    before: value,\n    after: ']',\n    ...tracker.current()\n  })\n  value += tracker.move(text + '][')\n\n  subexit()\n  // Hide the fact that we’re in phrasing, because escapes don’t work.\n  const stack = state.stack\n  state.stack = []\n  subexit = state.enter('reference')\n  // Note: for proper tracking, we should reset the output positions when we end\n  // up making a `shortcut` reference, because then there is no brace output.\n  // Practically, in that case, there is no content, so it doesn’t matter that\n  // we’ve tracked one too many characters.\n  const reference = state.safe(state.associationId(node), {\n    before: value,\n    after: ']',\n    ...tracker.current()\n  })\n  subexit()\n  state.stack = stack\n  exit()\n\n  if (type === 'full' || !text || text !== reference) {\n    value += tracker.move(reference + ']')\n  } else if (type === 'shortcut') {\n    // Remove the unwanted `[`.\n    value = value.slice(0, -1)\n  } else {\n    value += tracker.move(']')\n  }\n\n  return value\n}\n\n/**\n * @returns {string}\n */\nfunction linkReferencePeek() {\n  return '['\n}\n","/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['bullet'], null | undefined>}\n */\nexport function checkBullet(state) {\n  const marker = state.options.bullet || '*'\n\n  if (marker !== '*' && marker !== '+' && marker !== '-') {\n    throw new Error(\n      'Cannot serialize items with `' +\n        marker +\n        '` for `options.bullet`, expected `*`, `+`, or `-`'\n    )\n  }\n\n  return marker\n}\n","/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\nimport {checkBullet} from './check-bullet.js'\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['bullet'], null | undefined>}\n */\nexport function checkBulletOther(state) {\n  const bullet = checkBullet(state)\n  const bulletOther = state.options.bulletOther\n\n  if (!bulletOther) {\n    return bullet === '*' ? '-' : '*'\n  }\n\n  if (bulletOther !== '*' && bulletOther !== '+' && bulletOther !== '-') {\n    throw new Error(\n      'Cannot serialize items with `' +\n        bulletOther +\n        '` for `options.bulletOther`, expected `*`, `+`, or `-`'\n    )\n  }\n\n  if (bulletOther === bullet) {\n    throw new Error(\n      'Expected `bullet` (`' +\n        bullet +\n        '`) and `bulletOther` (`' +\n        bulletOther +\n        '`) to be different'\n    )\n  }\n\n  return bulletOther\n}\n","/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['bulletOrdered'], null | undefined>}\n */\nexport function checkBulletOrdered(state) {\n  const marker = state.options.bulletOrdered || '.'\n\n  if (marker !== '.' && marker !== ')') {\n    throw new Error(\n      'Cannot serialize items with `' +\n        marker +\n        '` for `options.bulletOrdered`, expected `.` or `)`'\n    )\n  }\n\n  return marker\n}\n","/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['rule'], null | undefined>}\n */\nexport function checkRule(state) {\n  const marker = state.options.rule || '*'\n\n  if (marker !== '*' && marker !== '-' && marker !== '_') {\n    throw new Error(\n      'Cannot serialize rules with `' +\n        marker +\n        '` for `options.rule`, expected `*`, `-`, or `_`'\n    )\n  }\n\n  return marker\n}\n","/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {List, Parents} from 'mdast'\n */\n\nimport {checkBullet} from '../util/check-bullet.js'\nimport {checkBulletOther} from '../util/check-bullet-other.js'\nimport {checkBulletOrdered} from '../util/check-bullet-ordered.js'\nimport {checkRule} from '../util/check-rule.js'\n\n/**\n * @param {List} node\n * @param {Parents | undefined} parent\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function list(node, parent, state, info) {\n  const exit = state.enter('list')\n  const bulletCurrent = state.bulletCurrent\n  /** @type {string} */\n  let bullet = node.ordered ? checkBulletOrdered(state) : checkBullet(state)\n  /** @type {string} */\n  const bulletOther = node.ordered\n    ? bullet === '.'\n      ? ')'\n      : '.'\n    : checkBulletOther(state)\n  let useDifferentMarker =\n    parent && state.bulletLastUsed ? bullet === state.bulletLastUsed : false\n\n  if (!node.ordered) {\n    const firstListItem = node.children ? node.children[0] : undefined\n\n    // If there’s an empty first list item directly in two list items,\n    // we have to use a different bullet:\n    //\n    // ```markdown\n    // * - *\n    // ```\n    //\n    // …because otherwise it would become one big thematic break.\n    if (\n      // Bullet could be used as a thematic break marker:\n      (bullet === '*' || bullet === '-') &&\n      // Empty first list item:\n      firstListItem &&\n      (!firstListItem.children || !firstListItem.children[0]) &&\n      // Directly in two other list items:\n      state.stack[state.stack.length - 1] === 'list' &&\n      state.stack[state.stack.length - 2] === 'listItem' &&\n      state.stack[state.stack.length - 3] === 'list' &&\n      state.stack[state.stack.length - 4] === 'listItem' &&\n      // That are each the first child.\n      state.indexStack[state.indexStack.length - 1] === 0 &&\n      state.indexStack[state.indexStack.length - 2] === 0 &&\n      state.indexStack[state.indexStack.length - 3] === 0\n    ) {\n      useDifferentMarker = true\n    }\n\n    // If there’s a thematic break at the start of the first list item,\n    // we have to use a different bullet:\n    //\n    // ```markdown\n    // * ---\n    // ```\n    //\n    // …because otherwise it would become one big thematic break.\n    if (checkRule(state) === bullet && firstListItem) {\n      let index = -1\n\n      while (++index < node.children.length) {\n        const item = node.children[index]\n\n        if (\n          item &&\n          item.type === 'listItem' &&\n          item.children &&\n          item.children[0] &&\n          item.children[0].type === 'thematicBreak'\n        ) {\n          useDifferentMarker = true\n          break\n        }\n      }\n    }\n  }\n\n  if (useDifferentMarker) {\n    bullet = bulletOther\n  }\n\n  state.bulletCurrent = bullet\n  const value = state.containerFlow(node, info)\n  state.bulletLastUsed = bullet\n  state.bulletCurrent = bulletCurrent\n  exit()\n  return value\n}\n","/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['listItemIndent'], null | undefined>}\n */\nexport function checkListItemIndent(state) {\n  const style = state.options.listItemIndent || 'one'\n\n  if (style !== 'tab' && style !== 'one' && style !== 'mixed') {\n    throw new Error(\n      'Cannot serialize items with `' +\n        style +\n        '` for `options.listItemIndent`, expected `tab`, `one`, or `mixed`'\n    )\n  }\n\n  return style\n}\n","/**\n * @import {Info, Map, State} from 'mdast-util-to-markdown'\n * @import {ListItem, Parents} from 'mdast'\n */\n\nimport {checkBullet} from '../util/check-bullet.js'\nimport {checkListItemIndent} from '../util/check-list-item-indent.js'\n\n/**\n * @param {ListItem} node\n * @param {Parents | undefined} parent\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function listItem(node, parent, state, info) {\n  const listItemIndent = checkListItemIndent(state)\n  let bullet = state.bulletCurrent || checkBullet(state)\n\n  // Add the marker value for ordered lists.\n  if (parent && parent.type === 'list' && parent.ordered) {\n    bullet =\n      (typeof parent.start === 'number' && parent.start > -1\n        ? parent.start\n        : 1) +\n      (state.options.incrementListMarker === false\n        ? 0\n        : parent.children.indexOf(node)) +\n      bullet\n  }\n\n  let size = bullet.length + 1\n\n  if (\n    listItemIndent === 'tab' ||\n    (listItemIndent === 'mixed' &&\n      ((parent && parent.type === 'list' && parent.spread) || node.spread))\n  ) {\n    size = Math.ceil(size / 4) * 4\n  }\n\n  const tracker = state.createTracker(info)\n  tracker.move(bullet + ' '.repeat(size - bullet.length))\n  tracker.shift(size)\n  const exit = state.enter('listItem')\n  const value = state.indentLines(\n    state.containerFlow(node, tracker.current()),\n    map\n  )\n  exit()\n\n  return value\n\n  /** @type {Map} */\n  function map(line, index, blank) {\n    if (index) {\n      return (blank ? '' : ' '.repeat(size)) + line\n    }\n\n    return (blank ? bullet : bullet + ' '.repeat(size - bullet.length)) + line\n  }\n}\n","/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Paragraph, Parents} from 'mdast'\n */\n\n/**\n * @param {Paragraph} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function paragraph(node, _, state, info) {\n  const exit = state.enter('paragraph')\n  const subexit = state.enter('phrasing')\n  const value = state.containerPhrasing(node, info)\n  subexit()\n  exit()\n  return value\n}\n","/**\n * @typedef {import('mdast').Html} Html\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n */\n\nimport {convert} from 'unist-util-is'\n\n/**\n * Check if the given value is *phrasing content*.\n *\n * > 👉 **Note**: Excludes `html`, which can be both phrasing or flow.\n *\n * @param node\n *   Thing to check, typically `Node`.\n * @returns\n *   Whether `value` is phrasing content.\n */\n\nexport const phrasing =\n  /** @type {(node?: unknown) => node is Exclude<PhrasingContent, Html>} */\n  (\n    convert([\n      'break',\n      'delete',\n      'emphasis',\n      // To do: next major: removed since footnotes were added to GFM.\n      'footnote',\n      'footnoteReference',\n      'image',\n      'imageReference',\n      'inlineCode',\n      // Enabled by `mdast-util-math`:\n      'inlineMath',\n      'link',\n      'linkReference',\n      // Enabled by `mdast-util-mdx`:\n      'mdxJsxTextElement',\n      // Enabled by `mdast-util-mdx`:\n      'mdxTextExpression',\n      'strong',\n      'text',\n      // Enabled by `mdast-util-directive`:\n      'textDirective'\n    ])\n  )\n","/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Parents, Root} from 'mdast'\n */\n\nimport {phrasing} from 'mdast-util-phrasing'\n\n/**\n * @param {Root} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function root(node, _, state, info) {\n  // Note: `html` nodes are ambiguous.\n  const hasPhrasing = node.children.some(function (d) {\n    return phrasing(d)\n  })\n\n  const container = hasPhrasing ? state.containerPhrasing : state.containerFlow\n  return container.call(state, node, info)\n}\n","/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['strong'], null | undefined>}\n */\nexport function checkStrong(state) {\n  const marker = state.options.strong || '*'\n\n  if (marker !== '*' && marker !== '_') {\n    throw new Error(\n      'Cannot serialize strong with `' +\n        marker +\n        '` for `options.strong`, expected `*`, or `_`'\n    )\n  }\n\n  return marker\n}\n","/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Parents, Strong} from 'mdast'\n */\n\nimport {checkStrong} from '../util/check-strong.js'\nimport {encodeCharacterReference} from '../util/encode-character-reference.js'\nimport {encodeInfo} from '../util/encode-info.js'\n\nstrong.peek = strongPeek\n\n/**\n * @param {Strong} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function strong(node, _, state, info) {\n  const marker = checkStrong(state)\n  const exit = state.enter('strong')\n  const tracker = state.createTracker(info)\n  const before = tracker.move(marker + marker)\n\n  let between = tracker.move(\n    state.containerPhrasing(node, {\n      after: marker,\n      before,\n      ...tracker.current()\n    })\n  )\n  const betweenHead = between.charCodeAt(0)\n  const open = encodeInfo(\n    info.before.charCodeAt(info.before.length - 1),\n    betweenHead,\n    marker\n  )\n\n  if (open.inside) {\n    between = encodeCharacterReference(betweenHead) + between.slice(1)\n  }\n\n  const betweenTail = between.charCodeAt(between.length - 1)\n  const close = encodeInfo(info.after.charCodeAt(0), betweenTail, marker)\n\n  if (close.inside) {\n    between = between.slice(0, -1) + encodeCharacterReference(betweenTail)\n  }\n\n  const after = tracker.move(marker + marker)\n\n  exit()\n\n  state.attentionEncodeSurroundingInfo = {\n    after: close.outside,\n    before: open.outside\n  }\n  return before + between + after\n}\n\n/**\n * @param {Strong} _\n * @param {Parents | undefined} _1\n * @param {State} state\n * @returns {string}\n */\nfunction strongPeek(_, _1, state) {\n  return state.options.strong || '*'\n}\n","/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Parents, Text} from 'mdast'\n */\n\n/**\n * @param {Text} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function text(node, _, state, info) {\n  return state.safe(node.value, info)\n}\n","/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['ruleRepetition'], null | undefined>}\n */\nexport function checkRuleRepetition(state) {\n  const repetition = state.options.ruleRepetition || 3\n\n  if (repetition < 3) {\n    throw new Error(\n      'Cannot serialize rules with repetition `' +\n        repetition +\n        '` for `options.ruleRepetition`, expected `3` or more'\n    )\n  }\n\n  return repetition\n}\n","/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {Parents, ThematicBreak} from 'mdast'\n */\n\nimport {checkRuleRepetition} from '../util/check-rule-repetition.js'\nimport {checkRule} from '../util/check-rule.js'\n\n/**\n * @param {ThematicBreak} _\n * @param {Parents | undefined} _1\n * @param {State} state\n * @returns {string}\n */\nexport function thematicBreak(_, _1, state) {\n  const value = (\n    checkRule(state) + (state.options.ruleSpaces ? ' ' : '')\n  ).repeat(checkRuleRepetition(state))\n\n  return state.options.ruleSpaces ? value.slice(0, -1) : value\n}\n","import {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {definition} from './definition.js'\nimport {emphasis} from './emphasis.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {image} from './image.js'\nimport {imageReference} from './image-reference.js'\nimport {inlineCode} from './inline-code.js'\nimport {link} from './link.js'\nimport {linkReference} from './link-reference.js'\nimport {list} from './list.js'\nimport {listItem} from './list-item.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default (CommonMark) handlers.\n */\nexport const handle = {\n  blockquote,\n  break: hardBreak,\n  code,\n  definition,\n  emphasis,\n  hardBreak,\n  heading,\n  html,\n  image,\n  imageReference,\n  inlineCode,\n  link,\n  linkReference,\n  list,\n  listItem,\n  paragraph,\n  root,\n  strong,\n  text,\n  thematicBreak\n}\n","/**\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Table} Table\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('mdast').TableRow} TableRow\n *\n * @typedef {import('markdown-table').Options} MarkdownTableOptions\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n *\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').State} State\n * @typedef {import('mdast-util-to-markdown').Info} Info\n */\n\n/**\n * @typedef Options\n *   Configuration.\n * @property {boolean | null | undefined} [tableCellPadding=true]\n *   Whether to add a space of padding between delimiters and cells (default:\n *   `true`).\n * @property {boolean | null | undefined} [tablePipeAlign=true]\n *   Whether to align the delimiters (default: `true`).\n * @property {MarkdownTableOptions['stringLength'] | null | undefined} [stringLength]\n *   Function to detect the length of table cell content, used when aligning\n *   the delimiters between cells (optional).\n */\n\nimport {ok as assert} from 'devlop'\nimport {markdownTable} from 'markdown-table'\nimport {defaultHandlers} from 'mdast-util-to-markdown'\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM tables in\n * markdown.\n *\n * @returns {FromMarkdownExtension}\n *   Extension for `mdast-util-from-markdown` to enable GFM tables.\n */\nexport function gfmTableFromMarkdown() {\n  return {\n    enter: {\n      table: enterTable,\n      tableData: enterCell,\n      tableHeader: enterCell,\n      tableRow: enterRow\n    },\n    exit: {\n      codeText: exitCodeText,\n      table: exitTable,\n      tableData: exit,\n      tableHeader: exit,\n      tableRow: exit\n    }\n  }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterTable(token) {\n  const align = token._align\n  assert(align, 'expected `_align` on table')\n  this.enter(\n    {\n      type: 'table',\n      align: align.map(function (d) {\n        return d === 'none' ? null : d\n      }),\n      children: []\n    },\n    token\n  )\n  this.data.inTable = true\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitTable(token) {\n  this.exit(token)\n  this.data.inTable = undefined\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterRow(token) {\n  this.enter({type: 'tableRow', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exit(token) {\n  this.exit(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterCell(token) {\n  this.enter({type: 'tableCell', children: []}, token)\n}\n\n// Overwrite the default code text data handler to unescape escaped pipes when\n// they are in tables.\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitCodeText(token) {\n  let value = this.resume()\n\n  if (this.data.inTable) {\n    value = value.replace(/\\\\([\\\\|])/g, replace)\n  }\n\n  const node = this.stack[this.stack.length - 1]\n  assert(node.type === 'inlineCode')\n  node.value = value\n  this.exit(token)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @returns {string}\n */\nfunction replace($0, $1) {\n  // Pipes work, backslashes don’t (but can’t escape pipes).\n  return $1 === '|' ? $1 : $0\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM tables in\n * markdown.\n *\n * @param {Options | null | undefined} [options]\n *   Configuration.\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown` to enable GFM tables.\n */\nexport function gfmTableToMarkdown(options) {\n  const settings = options || {}\n  const padding = settings.tableCellPadding\n  const alignDelimiters = settings.tablePipeAlign\n  const stringLength = settings.stringLength\n  const around = padding ? ' ' : '|'\n\n  return {\n    unsafe: [\n      {character: '\\r', inConstruct: 'tableCell'},\n      {character: '\\n', inConstruct: 'tableCell'},\n      // A pipe, when followed by a tab or space (padding), or a dash or colon\n      // (unpadded delimiter row), could result in a table.\n      {atBreak: true, character: '|', after: '[\\t :-]'},\n      // A pipe in a cell must be encoded.\n      {character: '|', inConstruct: 'tableCell'},\n      // A colon must be followed by a dash, in which case it could start a\n      // delimiter row.\n      {atBreak: true, character: ':', after: '-'},\n      // A delimiter row can also start with a dash, when followed by more\n      // dashes, a colon, or a pipe.\n      // This is a stricter version than the built in check for lists, thematic\n      // breaks, and setex heading underlines though:\n      // <https://github.com/syntax-tree/mdast-util-to-markdown/blob/51a2038/lib/unsafe.js#L57>\n      {atBreak: true, character: '-', after: '[:|-]'}\n    ],\n    handlers: {\n      inlineCode: inlineCodeWithTable,\n      table: handleTable,\n      tableCell: handleTableCell,\n      tableRow: handleTableRow\n    }\n  }\n\n  /**\n   * @type {ToMarkdownHandle}\n   * @param {Table} node\n   */\n  function handleTable(node, _, state, info) {\n    return serializeData(handleTableAsData(node, state, info), node.align)\n  }\n\n  /**\n   * This function isn’t really used normally, because we handle rows at the\n   * table level.\n   * But, if someone passes in a table row, this ensures we make somewhat sense.\n   *\n   * @type {ToMarkdownHandle}\n   * @param {TableRow} node\n   */\n  function handleTableRow(node, _, state, info) {\n    const row = handleTableRowAsData(node, state, info)\n    const value = serializeData([row])\n    // `markdown-table` will always add an align row\n    return value.slice(0, value.indexOf('\\n'))\n  }\n\n  /**\n   * @type {ToMarkdownHandle}\n   * @param {TableCell} node\n   */\n  function handleTableCell(node, _, state, info) {\n    const exit = state.enter('tableCell')\n    const subexit = state.enter('phrasing')\n    const value = state.containerPhrasing(node, {\n      ...info,\n      before: around,\n      after: around\n    })\n    subexit()\n    exit()\n    return value\n  }\n\n  /**\n   * @param {Array<Array<string>>} matrix\n   * @param {Array<string | null | undefined> | null | undefined} [align]\n   */\n  function serializeData(matrix, align) {\n    return markdownTable(matrix, {\n      align,\n      // @ts-expect-error: `markdown-table` types should support `null`.\n      alignDelimiters,\n      // @ts-expect-error: `markdown-table` types should support `null`.\n      padding,\n      // @ts-expect-error: `markdown-table` types should support `null`.\n      stringLength\n    })\n  }\n\n  /**\n   * @param {Table} node\n   * @param {State} state\n   * @param {Info} info\n   */\n  function handleTableAsData(node, state, info) {\n    const children = node.children\n    let index = -1\n    /** @type {Array<Array<string>>} */\n    const result = []\n    const subexit = state.enter('table')\n\n    while (++index < children.length) {\n      result[index] = handleTableRowAsData(children[index], state, info)\n    }\n\n    subexit()\n\n    return result\n  }\n\n  /**\n   * @param {TableRow} node\n   * @param {State} state\n   * @param {Info} info\n   */\n  function handleTableRowAsData(node, state, info) {\n    const children = node.children\n    let index = -1\n    /** @type {Array<string>} */\n    const result = []\n    const subexit = state.enter('tableRow')\n\n    while (++index < children.length) {\n      // Note: the positional info as used here is incorrect.\n      // Making it correct would be impossible due to aligning cells?\n      // And it would need copy/pasting `markdown-table` into this project.\n      result[index] = handleTableCell(children[index], node, state, info)\n    }\n\n    subexit()\n\n    return result\n  }\n\n  /**\n   * @type {ToMarkdownHandle}\n   * @param {InlineCode} node\n   */\n  function inlineCodeWithTable(node, parent, state) {\n    let value = defaultHandlers.inlineCode(node, parent, state)\n\n    if (state.stack.includes('tableCell')) {\n      value = value.replace(/\\|/g, '\\\\$&')\n    }\n\n    return value\n  }\n}\n","/**\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n */\n\nimport {ok as assert} from 'devlop'\nimport {defaultHandlers} from 'mdast-util-to-markdown'\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM task\n * list items in markdown.\n *\n * @returns {FromMarkdownExtension}\n *   Extension for `mdast-util-from-markdown` to enable GFM task list items.\n */\nexport function gfmTaskListItemFromMarkdown() {\n  return {\n    exit: {\n      taskListCheckValueChecked: exitCheck,\n      taskListCheckValueUnchecked: exitCheck,\n      paragraph: exitParagraphWithTaskListItem\n    }\n  }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM task list\n * items in markdown.\n *\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown` to enable GFM task list items.\n */\nexport function gfmTaskListItemToMarkdown() {\n  return {\n    unsafe: [{atBreak: true, character: '-', after: '[:|-]'}],\n    handlers: {listItem: listItemWithTaskListItem}\n  }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitCheck(token) {\n  // We’re always in a paragraph, in a list item.\n  const node = this.stack[this.stack.length - 2]\n  assert(node.type === 'listItem')\n  node.checked = token.type === 'taskListCheckValueChecked'\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitParagraphWithTaskListItem(token) {\n  const parent = this.stack[this.stack.length - 2]\n\n  if (\n    parent &&\n    parent.type === 'listItem' &&\n    typeof parent.checked === 'boolean'\n  ) {\n    const node = this.stack[this.stack.length - 1]\n    assert(node.type === 'paragraph')\n    const head = node.children[0]\n\n    if (head && head.type === 'text') {\n      const siblings = parent.children\n      let index = -1\n      /** @type {Paragraph | undefined} */\n      let firstParaghraph\n\n      while (++index < siblings.length) {\n        const sibling = siblings[index]\n        if (sibling.type === 'paragraph') {\n          firstParaghraph = sibling\n          break\n        }\n      }\n\n      if (firstParaghraph === node) {\n        // Must start with a space or a tab.\n        head.value = head.value.slice(1)\n\n        if (head.value.length === 0) {\n          node.children.shift()\n        } else if (\n          node.position &&\n          head.position &&\n          typeof head.position.start.offset === 'number'\n        ) {\n          head.position.start.column++\n          head.position.start.offset++\n          node.position.start = Object.assign({}, head.position.start)\n        }\n      }\n    }\n  }\n\n  this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {ListItem} node\n */\nfunction listItemWithTaskListItem(node, parent, state, info) {\n  const head = node.children[0]\n  const checkable =\n    typeof node.checked === 'boolean' && head && head.type === 'paragraph'\n  const checkbox = '[' + (node.checked ? 'x' : ' ') + '] '\n  const tracker = state.createTracker(info)\n\n  if (checkable) {\n    tracker.move(checkbox)\n  }\n\n  let value = defaultHandlers.listItem(node, parent, state, {\n    ...info,\n    ...tracker.current()\n  })\n\n  if (checkable) {\n    value = value.replace(/^(?:[*+-]|\\d+\\.)([\\r\\n]| {1,3})/, check)\n  }\n\n  return value\n\n  /**\n   * @param {string} $0\n   * @returns {string}\n   */\n  function check($0) {\n    return $0 + checkbox\n  }\n}\n","/**\n * @import {Extension as FromMarkdownExtension} from 'mdast-util-from-markdown'\n * @import {Options} from 'mdast-util-gfm'\n * @import {Options as ToMarkdownExtension} from 'mdast-util-to-markdown'\n */\n\nimport {\n  gfmAutolinkLiteralFromMarkdown,\n  gfmAutolinkLiteralToMarkdown\n} from 'mdast-util-gfm-autolink-literal'\nimport {\n  gfmFootnoteFromMarkdown,\n  gfmFootnoteToMarkdown\n} from 'mdast-util-gfm-footnote'\nimport {\n  gfmStrikethroughFromMarkdown,\n  gfmStrikethroughToMarkdown\n} from 'mdast-util-gfm-strikethrough'\nimport {gfmTableFromMarkdown, gfmTableToMarkdown} from 'mdast-util-gfm-table'\nimport {\n  gfmTaskListItemFromMarkdown,\n  gfmTaskListItemToMarkdown\n} from 'mdast-util-gfm-task-list-item'\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM (autolink\n * literals, footnotes, strikethrough, tables, tasklists).\n *\n * @returns {Array<FromMarkdownExtension>}\n *   Extension for `mdast-util-from-markdown` to enable GFM (autolink literals,\n *   footnotes, strikethrough, tables, tasklists).\n */\nexport function gfmFromMarkdown() {\n  return [\n    gfmAutolinkLiteralFromMarkdown(),\n    gfmFootnoteFromMarkdown(),\n    gfmStrikethroughFromMarkdown(),\n    gfmTableFromMarkdown(),\n    gfmTaskListItemFromMarkdown()\n  ]\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM (autolink\n * literals, footnotes, strikethrough, tables, tasklists).\n *\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown` to enable GFM (autolink literals,\n *   footnotes, strikethrough, tables, tasklists).\n */\nexport function gfmToMarkdown(options) {\n  return {\n    extensions: [\n      gfmAutolinkLiteralToMarkdown(),\n      gfmFootnoteToMarkdown(options),\n      gfmStrikethroughToMarkdown(),\n      gfmTableToMarkdown(options),\n      gfmTaskListItemToMarkdown()\n    ]\n  }\n}\n","/**\n * @import {Code, ConstructRecord, Event, Extension, Previous, State, TokenizeContext, Tokenizer} from 'micromark-util-types'\n */\n\nimport { asciiAlpha, asciiAlphanumeric, asciiControl, markdownLineEndingOrSpace, unicodePunctuation, unicodeWhitespace } from 'micromark-util-character';\nconst wwwPrefix = {\n  tokenize: tokenizeWwwPrefix,\n  partial: true\n};\nconst domain = {\n  tokenize: tokenizeDomain,\n  partial: true\n};\nconst path = {\n  tokenize: tokenizePath,\n  partial: true\n};\nconst trail = {\n  tokenize: tokenizeTrail,\n  partial: true\n};\nconst emailDomainDotTrail = {\n  tokenize: tokenizeEmailDomainDotTrail,\n  partial: true\n};\nconst wwwAutolink = {\n  name: 'wwwAutolink',\n  tokenize: tokenizeWwwAutolink,\n  previous: previousWww\n};\nconst protocolAutolink = {\n  name: 'protocolAutolink',\n  tokenize: tokenizeProtocolAutolink,\n  previous: previousProtocol\n};\nconst emailAutolink = {\n  name: 'emailAutolink',\n  tokenize: tokenizeEmailAutolink,\n  previous: previousEmail\n};\n\n/** @type {ConstructRecord} */\nconst text = {};\n\n/**\n * Create an extension for `micromark` to support GitHub autolink literal\n * syntax.\n *\n * @returns {Extension}\n *   Extension for `micromark` that can be passed in `extensions` to enable GFM\n *   autolink literal syntax.\n */\nexport function gfmAutolinkLiteral() {\n  return {\n    text\n  };\n}\n\n/** @type {Code} */\nlet code = 48;\n\n// Add alphanumerics.\nwhile (code < 123) {\n  text[code] = emailAutolink;\n  code++;\n  if (code === 58) code = 65;else if (code === 91) code = 97;\n}\ntext[43] = emailAutolink;\ntext[45] = emailAutolink;\ntext[46] = emailAutolink;\ntext[95] = emailAutolink;\ntext[72] = [emailAutolink, protocolAutolink];\ntext[104] = [emailAutolink, protocolAutolink];\ntext[87] = [emailAutolink, wwwAutolink];\ntext[119] = [emailAutolink, wwwAutolink];\n\n// To do: perform email autolink literals on events, afterwards.\n// That’s where `markdown-rs` and `cmark-gfm` perform it.\n// It should look for `@`, then for atext backwards, and then for a label\n// forwards.\n// To do: `mailto:`, `xmpp:` protocol as prefix.\n\n/**\n * Email autolink literal.\n *\n * ```markdown\n * > | a contact@example.org b\n *       ^^^^^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeEmailAutolink(effects, ok, nok) {\n  const self = this;\n  /** @type {boolean | undefined} */\n  let dot;\n  /** @type {boolean} */\n  let data;\n  return start;\n\n  /**\n   * Start of email autolink literal.\n   *\n   * ```markdown\n   * > | a contact@example.org b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (!gfmAtext(code) || !previousEmail.call(self, self.previous) || previousUnbalanced(self.events)) {\n      return nok(code);\n    }\n    effects.enter('literalAutolink');\n    effects.enter('literalAutolinkEmail');\n    return atext(code);\n  }\n\n  /**\n   * In email atext.\n   *\n   * ```markdown\n   * > | a contact@example.org b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atext(code) {\n    if (gfmAtext(code)) {\n      effects.consume(code);\n      return atext;\n    }\n    if (code === 64) {\n      effects.consume(code);\n      return emailDomain;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In email domain.\n   *\n   * The reference code is a bit overly complex as it handles the `@`, of which\n   * there may be just one.\n   * Source: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L318>\n   *\n   * ```markdown\n   * > | a contact@example.org b\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailDomain(code) {\n    // Dot followed by alphanumerical (not `-` or `_`).\n    if (code === 46) {\n      return effects.check(emailDomainDotTrail, emailDomainAfter, emailDomainDot)(code);\n    }\n\n    // Alphanumerical, `-`, and `_`.\n    if (code === 45 || code === 95 || asciiAlphanumeric(code)) {\n      data = true;\n      effects.consume(code);\n      return emailDomain;\n    }\n\n    // To do: `/` if xmpp.\n\n    // Note: normally we’d truncate trailing punctuation from the link.\n    // However, email autolink literals cannot contain any of those markers,\n    // except for `.`, but that can only occur if it isn’t trailing.\n    // So we can ignore truncating!\n    return emailDomainAfter(code);\n  }\n\n  /**\n   * In email domain, on dot that is not a trail.\n   *\n   * ```markdown\n   * > | a contact@example.org b\n   *                      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailDomainDot(code) {\n    effects.consume(code);\n    dot = true;\n    return emailDomain;\n  }\n\n  /**\n   * After email domain.\n   *\n   * ```markdown\n   * > | a contact@example.org b\n   *                          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailDomainAfter(code) {\n    // Domain must not be empty, must include a dot, and must end in alphabetical.\n    // Source: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L332>.\n    if (data && dot && asciiAlpha(self.previous)) {\n      effects.exit('literalAutolinkEmail');\n      effects.exit('literalAutolink');\n      return ok(code);\n    }\n    return nok(code);\n  }\n}\n\n/**\n * `www` autolink literal.\n *\n * ```markdown\n * > | a www.example.org b\n *       ^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeWwwAutolink(effects, ok, nok) {\n  const self = this;\n  return wwwStart;\n\n  /**\n   * Start of www autolink literal.\n   *\n   * ```markdown\n   * > | www.example.com/a?b#c\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function wwwStart(code) {\n    if (code !== 87 && code !== 119 || !previousWww.call(self, self.previous) || previousUnbalanced(self.events)) {\n      return nok(code);\n    }\n    effects.enter('literalAutolink');\n    effects.enter('literalAutolinkWww');\n    // Note: we *check*, so we can discard the `www.` we parsed.\n    // If it worked, we consider it as a part of the domain.\n    return effects.check(wwwPrefix, effects.attempt(domain, effects.attempt(path, wwwAfter), nok), nok)(code);\n  }\n\n  /**\n   * After a www autolink literal.\n   *\n   * ```markdown\n   * > | www.example.com/a?b#c\n   *                          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function wwwAfter(code) {\n    effects.exit('literalAutolinkWww');\n    effects.exit('literalAutolink');\n    return ok(code);\n  }\n}\n\n/**\n * Protocol autolink literal.\n *\n * ```markdown\n * > | a https://example.org b\n *       ^^^^^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeProtocolAutolink(effects, ok, nok) {\n  const self = this;\n  let buffer = '';\n  let seen = false;\n  return protocolStart;\n\n  /**\n   * Start of protocol autolink literal.\n   *\n   * ```markdown\n   * > | https://example.com/a?b#c\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function protocolStart(code) {\n    if ((code === 72 || code === 104) && previousProtocol.call(self, self.previous) && !previousUnbalanced(self.events)) {\n      effects.enter('literalAutolink');\n      effects.enter('literalAutolinkHttp');\n      buffer += String.fromCodePoint(code);\n      effects.consume(code);\n      return protocolPrefixInside;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In protocol.\n   *\n   * ```markdown\n   * > | https://example.com/a?b#c\n   *     ^^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function protocolPrefixInside(code) {\n    // `5` is size of `https`\n    if (asciiAlpha(code) && buffer.length < 5) {\n      // @ts-expect-error: definitely number.\n      buffer += String.fromCodePoint(code);\n      effects.consume(code);\n      return protocolPrefixInside;\n    }\n    if (code === 58) {\n      const protocol = buffer.toLowerCase();\n      if (protocol === 'http' || protocol === 'https') {\n        effects.consume(code);\n        return protocolSlashesInside;\n      }\n    }\n    return nok(code);\n  }\n\n  /**\n   * In slashes.\n   *\n   * ```markdown\n   * > | https://example.com/a?b#c\n   *           ^^\n   * ```\n   *\n   * @type {State}\n   */\n  function protocolSlashesInside(code) {\n    if (code === 47) {\n      effects.consume(code);\n      if (seen) {\n        return afterProtocol;\n      }\n      seen = true;\n      return protocolSlashesInside;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After protocol, before domain.\n   *\n   * ```markdown\n   * > | https://example.com/a?b#c\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function afterProtocol(code) {\n    // To do: this is different from `markdown-rs`:\n    // https://github.com/wooorm/markdown-rs/blob/b3a921c761309ae00a51fe348d8a43adbc54b518/src/construct/gfm_autolink_literal.rs#L172-L182\n    return code === null || asciiControl(code) || markdownLineEndingOrSpace(code) || unicodeWhitespace(code) || unicodePunctuation(code) ? nok(code) : effects.attempt(domain, effects.attempt(path, protocolAfter), nok)(code);\n  }\n\n  /**\n   * After a protocol autolink literal.\n   *\n   * ```markdown\n   * > | https://example.com/a?b#c\n   *                              ^\n   * ```\n   *\n   * @type {State}\n   */\n  function protocolAfter(code) {\n    effects.exit('literalAutolinkHttp');\n    effects.exit('literalAutolink');\n    return ok(code);\n  }\n}\n\n/**\n * `www` prefix.\n *\n * ```markdown\n * > | a www.example.org b\n *       ^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeWwwPrefix(effects, ok, nok) {\n  let size = 0;\n  return wwwPrefixInside;\n\n  /**\n   * In www prefix.\n   *\n   * ```markdown\n   * > | www.example.com\n   *     ^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function wwwPrefixInside(code) {\n    if ((code === 87 || code === 119) && size < 3) {\n      size++;\n      effects.consume(code);\n      return wwwPrefixInside;\n    }\n    if (code === 46 && size === 3) {\n      effects.consume(code);\n      return wwwPrefixAfter;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After www prefix.\n   *\n   * ```markdown\n   * > | www.example.com\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function wwwPrefixAfter(code) {\n    // If there is *anything*, we can link.\n    return code === null ? nok(code) : ok(code);\n  }\n}\n\n/**\n * Domain.\n *\n * ```markdown\n * > | a https://example.org b\n *               ^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDomain(effects, ok, nok) {\n  /** @type {boolean | undefined} */\n  let underscoreInLastSegment;\n  /** @type {boolean | undefined} */\n  let underscoreInLastLastSegment;\n  /** @type {boolean | undefined} */\n  let seen;\n  return domainInside;\n\n  /**\n   * In domain.\n   *\n   * ```markdown\n   * > | https://example.com/a\n   *             ^^^^^^^^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function domainInside(code) {\n    // Check whether this marker, which is a trailing punctuation\n    // marker, optionally followed by more trailing markers, and then\n    // followed by an end.\n    if (code === 46 || code === 95) {\n      return effects.check(trail, domainAfter, domainAtPunctuation)(code);\n    }\n\n    // GH documents that only alphanumerics (other than `-`, `.`, and `_`) can\n    // occur, which sounds like ASCII only, but they also support `www.點看.com`,\n    // so that’s Unicode.\n    // Instead of some new production for Unicode alphanumerics, markdown\n    // already has that for Unicode punctuation and whitespace, so use those.\n    // Source: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L12>.\n    if (code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code) || code !== 45 && unicodePunctuation(code)) {\n      return domainAfter(code);\n    }\n    seen = true;\n    effects.consume(code);\n    return domainInside;\n  }\n\n  /**\n   * In domain, at potential trailing punctuation, that was not trailing.\n   *\n   * ```markdown\n   * > | https://example.com\n   *                    ^\n   * ```\n   *\n   * @type {State}\n   */\n  function domainAtPunctuation(code) {\n    // There is an underscore in the last segment of the domain\n    if (code === 95) {\n      underscoreInLastSegment = true;\n    }\n    // Otherwise, it’s a `.`: save the last segment underscore in the\n    // penultimate segment slot.\n    else {\n      underscoreInLastLastSegment = underscoreInLastSegment;\n      underscoreInLastSegment = undefined;\n    }\n    effects.consume(code);\n    return domainInside;\n  }\n\n  /**\n   * After domain.\n   *\n   * ```markdown\n   * > | https://example.com/a\n   *                        ^\n   * ```\n   *\n   * @type {State} */\n  function domainAfter(code) {\n    // Note: that’s GH says a dot is needed, but it’s not true:\n    // <https://github.com/github/cmark-gfm/issues/279>\n    if (underscoreInLastLastSegment || underscoreInLastSegment || !seen) {\n      return nok(code);\n    }\n    return ok(code);\n  }\n}\n\n/**\n * Path.\n *\n * ```markdown\n * > | a https://example.org/stuff b\n *                          ^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizePath(effects, ok) {\n  let sizeOpen = 0;\n  let sizeClose = 0;\n  return pathInside;\n\n  /**\n   * In path.\n   *\n   * ```markdown\n   * > | https://example.com/a\n   *                        ^^\n   * ```\n   *\n   * @type {State}\n   */\n  function pathInside(code) {\n    if (code === 40) {\n      sizeOpen++;\n      effects.consume(code);\n      return pathInside;\n    }\n\n    // To do: `markdown-rs` also needs this.\n    // If this is a paren, and there are less closings than openings,\n    // we don’t check for a trail.\n    if (code === 41 && sizeClose < sizeOpen) {\n      return pathAtPunctuation(code);\n    }\n\n    // Check whether this trailing punctuation marker is optionally\n    // followed by more trailing markers, and then followed\n    // by an end.\n    if (code === 33 || code === 34 || code === 38 || code === 39 || code === 41 || code === 42 || code === 44 || code === 46 || code === 58 || code === 59 || code === 60 || code === 63 || code === 93 || code === 95 || code === 126) {\n      return effects.check(trail, ok, pathAtPunctuation)(code);\n    }\n    if (code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n      return ok(code);\n    }\n    effects.consume(code);\n    return pathInside;\n  }\n\n  /**\n   * In path, at potential trailing punctuation, that was not trailing.\n   *\n   * ```markdown\n   * > | https://example.com/a\"b\n   *                          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function pathAtPunctuation(code) {\n    // Count closing parens.\n    if (code === 41) {\n      sizeClose++;\n    }\n    effects.consume(code);\n    return pathInside;\n  }\n}\n\n/**\n * Trail.\n *\n * This calls `ok` if this *is* the trail, followed by an end, which means\n * the entire trail is not part of the link.\n * It calls `nok` if this *is* part of the link.\n *\n * ```markdown\n * > | https://example.com\").\n *                        ^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTrail(effects, ok, nok) {\n  return trail;\n\n  /**\n   * In trail of domain or path.\n   *\n   * ```markdown\n   * > | https://example.com\").\n   *                        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function trail(code) {\n    // Regular trailing punctuation.\n    if (code === 33 || code === 34 || code === 39 || code === 41 || code === 42 || code === 44 || code === 46 || code === 58 || code === 59 || code === 63 || code === 95 || code === 126) {\n      effects.consume(code);\n      return trail;\n    }\n\n    // `&` followed by one or more alphabeticals and then a `;`, is\n    // as a whole considered as trailing punctuation.\n    // In all other cases, it is considered as continuation of the URL.\n    if (code === 38) {\n      effects.consume(code);\n      return trailCharacterReferenceStart;\n    }\n\n    // Needed because we allow literals after `[`, as we fix:\n    // <https://github.com/github/cmark-gfm/issues/278>.\n    // Check that it is not followed by `(` or `[`.\n    if (code === 93) {\n      effects.consume(code);\n      return trailBracketAfter;\n    }\n    if (\n    // `<` is an end.\n    code === 60 ||\n    // So is whitespace.\n    code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n      return ok(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * In trail, after `]`.\n   *\n   * > 👉 **Note**: this deviates from `cmark-gfm` to fix a bug.\n   * > See end of <https://github.com/github/cmark-gfm/issues/278> for more.\n   *\n   * ```markdown\n   * > | https://example.com](\n   *                         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function trailBracketAfter(code) {\n    // Whitespace or something that could start a resource or reference is the end.\n    // Switch back to trail otherwise.\n    if (code === null || code === 40 || code === 91 || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n      return ok(code);\n    }\n    return trail(code);\n  }\n\n  /**\n   * In character-reference like trail, after `&`.\n   *\n   * ```markdown\n   * > | https://example.com&amp;).\n   *                         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function trailCharacterReferenceStart(code) {\n    // When non-alpha, it’s not a trail.\n    return asciiAlpha(code) ? trailCharacterReferenceInside(code) : nok(code);\n  }\n\n  /**\n   * In character-reference like trail.\n   *\n   * ```markdown\n   * > | https://example.com&amp;).\n   *                         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function trailCharacterReferenceInside(code) {\n    // Switch back to trail if this is well-formed.\n    if (code === 59) {\n      effects.consume(code);\n      return trail;\n    }\n    if (asciiAlpha(code)) {\n      effects.consume(code);\n      return trailCharacterReferenceInside;\n    }\n\n    // It’s not a trail.\n    return nok(code);\n  }\n}\n\n/**\n * Dot in email domain trail.\n *\n * This calls `ok` if this *is* the trail, followed by an end, which means\n * the trail is not part of the link.\n * It calls `nok` if this *is* part of the link.\n *\n * ```markdown\n * > | contact@example.org.\n *                        ^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeEmailDomainDotTrail(effects, ok, nok) {\n  return start;\n\n  /**\n   * Dot.\n   *\n   * ```markdown\n   * > | contact@example.org.\n   *                    ^   ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // Must be dot.\n    effects.consume(code);\n    return after;\n  }\n\n  /**\n   * After dot.\n   *\n   * ```markdown\n   * > | contact@example.org.\n   *                     ^   ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    // Not a trail if alphanumeric.\n    return asciiAlphanumeric(code) ? nok(code) : ok(code);\n  }\n}\n\n/**\n * See:\n * <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L156>.\n *\n * @type {Previous}\n */\nfunction previousWww(code) {\n  return code === null || code === 40 || code === 42 || code === 95 || code === 91 || code === 93 || code === 126 || markdownLineEndingOrSpace(code);\n}\n\n/**\n * See:\n * <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L214>.\n *\n * @type {Previous}\n */\nfunction previousProtocol(code) {\n  return !asciiAlpha(code);\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Previous}\n */\nfunction previousEmail(code) {\n  // Do not allow a slash “inside” atext.\n  // The reference code is a bit weird, but that’s what it results in.\n  // Source: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L307>.\n  // Other than slash, every preceding character is allowed.\n  return !(code === 47 || gfmAtext(code));\n}\n\n/**\n * @param {Code} code\n * @returns {boolean}\n */\nfunction gfmAtext(code) {\n  return code === 43 || code === 45 || code === 46 || code === 95 || asciiAlphanumeric(code);\n}\n\n/**\n * @param {Array<Event>} events\n * @returns {boolean}\n */\nfunction previousUnbalanced(events) {\n  let index = events.length;\n  let result = false;\n  while (index--) {\n    const token = events[index][1];\n    if ((token.type === 'labelLink' || token.type === 'labelImage') && !token._balanced) {\n      result = true;\n      break;\n    }\n\n    // If we’ve seen this token, and it was marked as not having any unbalanced\n    // bracket before it, we can exit.\n    if (token._gfmAutolinkLiteralWalkedInto) {\n      result = false;\n      break;\n    }\n  }\n  if (events.length > 0 && !result) {\n    // Mark the last token as “walked into” w/o finding\n    // anything.\n    events[events.length - 1][1]._gfmAutolinkLiteralWalkedInto = true;\n  }\n  return result;\n}","/**\n * @import {Event, Exiter, Extension, Resolver, State, Token, TokenizeContext, Tokenizer} from 'micromark-util-types'\n */\n\nimport { blankLine } from 'micromark-core-commonmark';\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEndingOrSpace } from 'micromark-util-character';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nconst indent = {\n  tokenize: tokenizeIndent,\n  partial: true\n};\n\n// To do: micromark should support a `_hiddenGfmFootnoteSupport`, which only\n// affects label start (image).\n// That will let us drop `tokenizePotentialGfmFootnote*`.\n// It currently has a `_hiddenFootnoteSupport`, which affects that and more.\n// That can be removed when `micromark-extension-footnote` is archived.\n\n/**\n * Create an extension for `micromark` to enable GFM footnote syntax.\n *\n * @returns {Extension}\n *   Extension for `micromark` that can be passed in `extensions` to\n *   enable GFM footnote syntax.\n */\nexport function gfmFootnote() {\n  /** @type {Extension} */\n  return {\n    document: {\n      [91]: {\n        name: 'gfmFootnoteDefinition',\n        tokenize: tokenizeDefinitionStart,\n        continuation: {\n          tokenize: tokenizeDefinitionContinuation\n        },\n        exit: gfmFootnoteDefinitionEnd\n      }\n    },\n    text: {\n      [91]: {\n        name: 'gfmFootnoteCall',\n        tokenize: tokenizeGfmFootnoteCall\n      },\n      [93]: {\n        name: 'gfmPotentialFootnoteCall',\n        add: 'after',\n        tokenize: tokenizePotentialGfmFootnoteCall,\n        resolveTo: resolveToPotentialGfmFootnoteCall\n      }\n    }\n  };\n}\n\n// To do: remove after micromark update.\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizePotentialGfmFootnoteCall(effects, ok, nok) {\n  const self = this;\n  let index = self.events.length;\n  const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = []);\n  /** @type {Token} */\n  let labelStart;\n\n  // Find an opening.\n  while (index--) {\n    const token = self.events[index][1];\n    if (token.type === \"labelImage\") {\n      labelStart = token;\n      break;\n    }\n\n    // Exit if we’ve walked far enough.\n    if (token.type === 'gfmFootnoteCall' || token.type === \"labelLink\" || token.type === \"label\" || token.type === \"image\" || token.type === \"link\") {\n      break;\n    }\n  }\n  return start;\n\n  /**\n   * @type {State}\n   */\n  function start(code) {\n    if (!labelStart || !labelStart._balanced) {\n      return nok(code);\n    }\n    const id = normalizeIdentifier(self.sliceSerialize({\n      start: labelStart.end,\n      end: self.now()\n    }));\n    if (id.codePointAt(0) !== 94 || !defined.includes(id.slice(1))) {\n      return nok(code);\n    }\n    effects.enter('gfmFootnoteCallLabelMarker');\n    effects.consume(code);\n    effects.exit('gfmFootnoteCallLabelMarker');\n    return ok(code);\n  }\n}\n\n// To do: remove after micromark update.\n/** @type {Resolver} */\nfunction resolveToPotentialGfmFootnoteCall(events, context) {\n  let index = events.length;\n  /** @type {Token | undefined} */\n  let labelStart;\n\n  // Find an opening.\n  while (index--) {\n    if (events[index][1].type === \"labelImage\" && events[index][0] === 'enter') {\n      labelStart = events[index][1];\n      break;\n    }\n  }\n  // Change the `labelImageMarker` to a `data`.\n  events[index + 1][1].type = \"data\";\n  events[index + 3][1].type = 'gfmFootnoteCallLabelMarker';\n\n  // The whole (without `!`):\n  /** @type {Token} */\n  const call = {\n    type: 'gfmFootnoteCall',\n    start: Object.assign({}, events[index + 3][1].start),\n    end: Object.assign({}, events[events.length - 1][1].end)\n  };\n  // The `^` marker\n  /** @type {Token} */\n  const marker = {\n    type: 'gfmFootnoteCallMarker',\n    start: Object.assign({}, events[index + 3][1].end),\n    end: Object.assign({}, events[index + 3][1].end)\n  };\n  // Increment the end 1 character.\n  marker.end.column++;\n  marker.end.offset++;\n  marker.end._bufferIndex++;\n  /** @type {Token} */\n  const string = {\n    type: 'gfmFootnoteCallString',\n    start: Object.assign({}, marker.end),\n    end: Object.assign({}, events[events.length - 1][1].start)\n  };\n  /** @type {Token} */\n  const chunk = {\n    type: \"chunkString\",\n    contentType: 'string',\n    start: Object.assign({}, string.start),\n    end: Object.assign({}, string.end)\n  };\n\n  /** @type {Array<Event>} */\n  const replacement = [\n  // Take the `labelImageMarker` (now `data`, the `!`)\n  events[index + 1], events[index + 2], ['enter', call, context],\n  // The `[`\n  events[index + 3], events[index + 4],\n  // The `^`.\n  ['enter', marker, context], ['exit', marker, context],\n  // Everything in between.\n  ['enter', string, context], ['enter', chunk, context], ['exit', chunk, context], ['exit', string, context],\n  // The ending (`]`, properly parsed and labelled).\n  events[events.length - 2], events[events.length - 1], ['exit', call, context]];\n  events.splice(index, events.length - index + 1, ...replacement);\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeGfmFootnoteCall(effects, ok, nok) {\n  const self = this;\n  const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = []);\n  let size = 0;\n  /** @type {boolean} */\n  let data;\n\n  // Note: the implementation of `markdown-rs` is different, because it houses\n  // core *and* extensions in one project.\n  // Therefore, it can include footnote logic inside `label-end`.\n  // We can’t do that, but luckily, we can parse footnotes in a simpler way than\n  // needed for labels.\n  return start;\n\n  /**\n   * Start of footnote label.\n   *\n   * ```markdown\n   * > | a [^b] c\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter('gfmFootnoteCall');\n    effects.enter('gfmFootnoteCallLabelMarker');\n    effects.consume(code);\n    effects.exit('gfmFootnoteCallLabelMarker');\n    return callStart;\n  }\n\n  /**\n   * After `[`, at `^`.\n   *\n   * ```markdown\n   * > | a [^b] c\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function callStart(code) {\n    if (code !== 94) return nok(code);\n    effects.enter('gfmFootnoteCallMarker');\n    effects.consume(code);\n    effects.exit('gfmFootnoteCallMarker');\n    effects.enter('gfmFootnoteCallString');\n    effects.enter('chunkString').contentType = 'string';\n    return callData;\n  }\n\n  /**\n   * In label.\n   *\n   * ```markdown\n   * > | a [^b] c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function callData(code) {\n    if (\n    // Too long.\n    size > 999 ||\n    // Closing brace with nothing.\n    code === 93 && !data ||\n    // Space or tab is not supported by GFM for some reason.\n    // `\\n` and `[` not being supported makes sense.\n    code === null || code === 91 || markdownLineEndingOrSpace(code)) {\n      return nok(code);\n    }\n    if (code === 93) {\n      effects.exit('chunkString');\n      const token = effects.exit('gfmFootnoteCallString');\n      if (!defined.includes(normalizeIdentifier(self.sliceSerialize(token)))) {\n        return nok(code);\n      }\n      effects.enter('gfmFootnoteCallLabelMarker');\n      effects.consume(code);\n      effects.exit('gfmFootnoteCallLabelMarker');\n      effects.exit('gfmFootnoteCall');\n      return ok;\n    }\n    if (!markdownLineEndingOrSpace(code)) {\n      data = true;\n    }\n    size++;\n    effects.consume(code);\n    return code === 92 ? callEscape : callData;\n  }\n\n  /**\n   * On character after escape.\n   *\n   * ```markdown\n   * > | a [^b\\c] d\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function callEscape(code) {\n    if (code === 91 || code === 92 || code === 93) {\n      effects.consume(code);\n      size++;\n      return callData;\n    }\n    return callData(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDefinitionStart(effects, ok, nok) {\n  const self = this;\n  const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = []);\n  /** @type {string} */\n  let identifier;\n  let size = 0;\n  /** @type {boolean | undefined} */\n  let data;\n  return start;\n\n  /**\n   * Start of GFM footnote definition.\n   *\n   * ```markdown\n   * > | [^a]: b\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter('gfmFootnoteDefinition')._container = true;\n    effects.enter('gfmFootnoteDefinitionLabel');\n    effects.enter('gfmFootnoteDefinitionLabelMarker');\n    effects.consume(code);\n    effects.exit('gfmFootnoteDefinitionLabelMarker');\n    return labelAtMarker;\n  }\n\n  /**\n   * In label, at caret.\n   *\n   * ```markdown\n   * > | [^a]: b\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelAtMarker(code) {\n    if (code === 94) {\n      effects.enter('gfmFootnoteDefinitionMarker');\n      effects.consume(code);\n      effects.exit('gfmFootnoteDefinitionMarker');\n      effects.enter('gfmFootnoteDefinitionLabelString');\n      effects.enter('chunkString').contentType = 'string';\n      return labelInside;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In label.\n   *\n   * > 👉 **Note**: `cmark-gfm` prevents whitespace from occurring in footnote\n   * > definition labels.\n   *\n   * ```markdown\n   * > | [^a]: b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelInside(code) {\n    if (\n    // Too long.\n    size > 999 ||\n    // Closing brace with nothing.\n    code === 93 && !data ||\n    // Space or tab is not supported by GFM for some reason.\n    // `\\n` and `[` not being supported makes sense.\n    code === null || code === 91 || markdownLineEndingOrSpace(code)) {\n      return nok(code);\n    }\n    if (code === 93) {\n      effects.exit('chunkString');\n      const token = effects.exit('gfmFootnoteDefinitionLabelString');\n      identifier = normalizeIdentifier(self.sliceSerialize(token));\n      effects.enter('gfmFootnoteDefinitionLabelMarker');\n      effects.consume(code);\n      effects.exit('gfmFootnoteDefinitionLabelMarker');\n      effects.exit('gfmFootnoteDefinitionLabel');\n      return labelAfter;\n    }\n    if (!markdownLineEndingOrSpace(code)) {\n      data = true;\n    }\n    size++;\n    effects.consume(code);\n    return code === 92 ? labelEscape : labelInside;\n  }\n\n  /**\n   * After `\\`, at a special character.\n   *\n   * > 👉 **Note**: `cmark-gfm` currently does not support escaped brackets:\n   * > <https://github.com/github/cmark-gfm/issues/240>\n   *\n   * ```markdown\n   * > | [^a\\*b]: c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelEscape(code) {\n    if (code === 91 || code === 92 || code === 93) {\n      effects.consume(code);\n      size++;\n      return labelInside;\n    }\n    return labelInside(code);\n  }\n\n  /**\n   * After definition label.\n   *\n   * ```markdown\n   * > | [^a]: b\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelAfter(code) {\n    if (code === 58) {\n      effects.enter('definitionMarker');\n      effects.consume(code);\n      effects.exit('definitionMarker');\n      if (!defined.includes(identifier)) {\n        defined.push(identifier);\n      }\n\n      // Any whitespace after the marker is eaten, forming indented code\n      // is not possible.\n      // No space is also fine, just like a block quote marker.\n      return factorySpace(effects, whitespaceAfter, 'gfmFootnoteDefinitionWhitespace');\n    }\n    return nok(code);\n  }\n\n  /**\n   * After definition prefix.\n   *\n   * ```markdown\n   * > | [^a]: b\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function whitespaceAfter(code) {\n    // `markdown-rs` has a wrapping token for the prefix that is closed here.\n    return ok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDefinitionContinuation(effects, ok, nok) {\n  /// Start of footnote definition continuation.\n  ///\n  /// ```markdown\n  ///   | [^a]: b\n  /// > |     c\n  ///     ^\n  /// ```\n  //\n  // Either a blank line, which is okay, or an indented thing.\n  return effects.check(blankLine, ok, effects.attempt(indent, ok, nok));\n}\n\n/** @type {Exiter} */\nfunction gfmFootnoteDefinitionEnd(effects) {\n  effects.exit('gfmFootnoteDefinition');\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeIndent(effects, ok, nok) {\n  const self = this;\n  return factorySpace(effects, afterPrefix, 'gfmFootnoteDefinitionIndent', 4 + 1);\n\n  /**\n   * @type {State}\n   */\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1];\n    return tail && tail[1].type === 'gfmFootnoteDefinitionIndent' && tail[2].sliceSerialize(tail[1], true).length === 4 ? ok(code) : nok(code);\n  }\n}","/**\n * @import {Options} from 'micromark-extension-gfm-strikethrough'\n * @import {Event, Extension, Resolver, State, Token, TokenizeContext, Tokenizer} from 'micromark-util-types'\n */\n\nimport { splice } from 'micromark-util-chunked';\nimport { classifyCharacter } from 'micromark-util-classify-character';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/**\n * Create an extension for `micromark` to enable GFM strikethrough syntax.\n *\n * @param {Options | null | undefined} [options={}]\n *   Configuration.\n * @returns {Extension}\n *   Extension for `micromark` that can be passed in `extensions`, to\n *   enable GFM strikethrough syntax.\n */\nexport function gfmStrikethrough(options) {\n  const options_ = options || {};\n  let single = options_.singleTilde;\n  const tokenizer = {\n    name: 'strikethrough',\n    tokenize: tokenizeStrikethrough,\n    resolveAll: resolveAllStrikethrough\n  };\n  if (single === null || single === undefined) {\n    single = true;\n  }\n  return {\n    text: {\n      [126]: tokenizer\n    },\n    insideSpan: {\n      null: [tokenizer]\n    },\n    attentionMarkers: {\n      null: [126]\n    }\n  };\n\n  /**\n   * Take events and resolve strikethrough.\n   *\n   * @type {Resolver}\n   */\n  function resolveAllStrikethrough(events, context) {\n    let index = -1;\n\n    // Walk through all events.\n    while (++index < events.length) {\n      // Find a token that can close.\n      if (events[index][0] === 'enter' && events[index][1].type === 'strikethroughSequenceTemporary' && events[index][1]._close) {\n        let open = index;\n\n        // Now walk back to find an opener.\n        while (open--) {\n          // Find a token that can open the closer.\n          if (events[open][0] === 'exit' && events[open][1].type === 'strikethroughSequenceTemporary' && events[open][1]._open &&\n          // If the sizes are the same:\n          events[index][1].end.offset - events[index][1].start.offset === events[open][1].end.offset - events[open][1].start.offset) {\n            events[index][1].type = 'strikethroughSequence';\n            events[open][1].type = 'strikethroughSequence';\n\n            /** @type {Token} */\n            const strikethrough = {\n              type: 'strikethrough',\n              start: Object.assign({}, events[open][1].start),\n              end: Object.assign({}, events[index][1].end)\n            };\n\n            /** @type {Token} */\n            const text = {\n              type: 'strikethroughText',\n              start: Object.assign({}, events[open][1].end),\n              end: Object.assign({}, events[index][1].start)\n            };\n\n            // Opening.\n            /** @type {Array<Event>} */\n            const nextEvents = [['enter', strikethrough, context], ['enter', events[open][1], context], ['exit', events[open][1], context], ['enter', text, context]];\n            const insideSpan = context.parser.constructs.insideSpan.null;\n            if (insideSpan) {\n              // Between.\n              splice(nextEvents, nextEvents.length, 0, resolveAll(insideSpan, events.slice(open + 1, index), context));\n            }\n\n            // Closing.\n            splice(nextEvents, nextEvents.length, 0, [['exit', text, context], ['enter', events[index][1], context], ['exit', events[index][1], context], ['exit', strikethrough, context]]);\n            splice(events, open - 1, index - open + 3, nextEvents);\n            index = open + nextEvents.length - 2;\n            break;\n          }\n        }\n      }\n    }\n    index = -1;\n    while (++index < events.length) {\n      if (events[index][1].type === 'strikethroughSequenceTemporary') {\n        events[index][1].type = \"data\";\n      }\n    }\n    return events;\n  }\n\n  /**\n   * @this {TokenizeContext}\n   * @type {Tokenizer}\n   */\n  function tokenizeStrikethrough(effects, ok, nok) {\n    const previous = this.previous;\n    const events = this.events;\n    let size = 0;\n    return start;\n\n    /** @type {State} */\n    function start(code) {\n      if (previous === 126 && events[events.length - 1][1].type !== \"characterEscape\") {\n        return nok(code);\n      }\n      effects.enter('strikethroughSequenceTemporary');\n      return more(code);\n    }\n\n    /** @type {State} */\n    function more(code) {\n      const before = classifyCharacter(previous);\n      if (code === 126) {\n        // If this is the third marker, exit.\n        if (size > 1) return nok(code);\n        effects.consume(code);\n        size++;\n        return more;\n      }\n      if (size < 2 && !single) return nok(code);\n      const token = effects.exit('strikethroughSequenceTemporary');\n      const after = classifyCharacter(code);\n      token._open = !after || after === 2 && Boolean(before);\n      token._close = !before || before === 2 && Boolean(after);\n      return ok(code);\n    }\n  }\n}","/**\n * @import {Event} from 'micromark-util-types'\n */\n\n// Port of `edit_map.rs` from `markdown-rs`.\n// This should move to `markdown-js` later.\n\n// Deal with several changes in events, batching them together.\n//\n// Preferably, changes should be kept to a minimum.\n// Sometimes, it’s needed to change the list of events, because parsing can be\n// messy, and it helps to expose a cleaner interface of events to the compiler\n// and other users.\n// It can also help to merge many adjacent similar events.\n// And, in other cases, it’s needed to parse subcontent: pass some events\n// through another tokenizer and inject the result.\n\n/**\n * @typedef {[number, number, Array<Event>]} Change\n * @typedef {[number, number, number]} Jump\n */\n\n/**\n * Tracks a bunch of edits.\n */\nexport class EditMap {\n  /**\n   * Create a new edit map.\n   */\n  constructor() {\n    /**\n     * Record of changes.\n     *\n     * @type {Array<Change>}\n     */\n    this.map = [];\n  }\n\n  /**\n   * Create an edit: a remove and/or add at a certain place.\n   *\n   * @param {number} index\n   * @param {number} remove\n   * @param {Array<Event>} add\n   * @returns {undefined}\n   */\n  add(index, remove, add) {\n    addImplementation(this, index, remove, add);\n  }\n\n  // To do: add this when moving to `micromark`.\n  // /**\n  //  * Create an edit: but insert `add` before existing additions.\n  //  *\n  //  * @param {number} index\n  //  * @param {number} remove\n  //  * @param {Array<Event>} add\n  //  * @returns {undefined}\n  //  */\n  // addBefore(index, remove, add) {\n  //   addImplementation(this, index, remove, add, true)\n  // }\n\n  /**\n   * Done, change the events.\n   *\n   * @param {Array<Event>} events\n   * @returns {undefined}\n   */\n  consume(events) {\n    this.map.sort(function (a, b) {\n      return a[0] - b[0];\n    });\n\n    /* c8 ignore next 3 -- `resolve` is never called without tables, so without edits. */\n    if (this.map.length === 0) {\n      return;\n    }\n\n    // To do: if links are added in events, like they are in `markdown-rs`,\n    // this is needed.\n    // // Calculate jumps: where items in the current list move to.\n    // /** @type {Array<Jump>} */\n    // const jumps = []\n    // let index = 0\n    // let addAcc = 0\n    // let removeAcc = 0\n    // while (index < this.map.length) {\n    //   const [at, remove, add] = this.map[index]\n    //   removeAcc += remove\n    //   addAcc += add.length\n    //   jumps.push([at, removeAcc, addAcc])\n    //   index += 1\n    // }\n    //\n    // . shiftLinks(events, jumps)\n\n    let index = this.map.length;\n    /** @type {Array<Array<Event>>} */\n    const vecs = [];\n    while (index > 0) {\n      index -= 1;\n      vecs.push(events.slice(this.map[index][0] + this.map[index][1]), this.map[index][2]);\n\n      // Truncate rest.\n      events.length = this.map[index][0];\n    }\n    vecs.push(events.slice());\n    events.length = 0;\n    let slice = vecs.pop();\n    while (slice) {\n      for (const element of slice) {\n        events.push(element);\n      }\n      slice = vecs.pop();\n    }\n\n    // Truncate everything.\n    this.map.length = 0;\n  }\n}\n\n/**\n * Create an edit.\n *\n * @param {EditMap} editMap\n * @param {number} at\n * @param {number} remove\n * @param {Array<Event>} add\n * @returns {undefined}\n */\nfunction addImplementation(editMap, at, remove, add) {\n  let index = 0;\n\n  /* c8 ignore next 3 -- `resolve` is never called without tables, so without edits. */\n  if (remove === 0 && add.length === 0) {\n    return;\n  }\n  while (index < editMap.map.length) {\n    if (editMap.map[index][0] === at) {\n      editMap.map[index][1] += remove;\n\n      // To do: before not used by tables, use when moving to micromark.\n      // if (before) {\n      //   add.push(...editMap.map[index][2])\n      //   editMap.map[index][2] = add\n      // } else {\n      editMap.map[index][2].push(...add);\n      // }\n\n      return;\n    }\n    index += 1;\n  }\n  editMap.map.push([at, remove, add]);\n}\n\n// /**\n//  * Shift `previous` and `next` links according to `jumps`.\n//  *\n//  * This fixes links in case there are events removed or added between them.\n//  *\n//  * @param {Array<Event>} events\n//  * @param {Array<Jump>} jumps\n//  */\n// function shiftLinks(events, jumps) {\n//   let jumpIndex = 0\n//   let index = 0\n//   let add = 0\n//   let rm = 0\n\n//   while (index < events.length) {\n//     const rmCurr = rm\n\n//     while (jumpIndex < jumps.length && jumps[jumpIndex][0] <= index) {\n//       add = jumps[jumpIndex][2]\n//       rm = jumps[jumpIndex][1]\n//       jumpIndex += 1\n//     }\n\n//     // Ignore items that will be removed.\n//     if (rm > rmCurr) {\n//       index += rm - rmCurr\n//     } else {\n//       // ?\n//       // if let Some(link) = &events[index].link {\n//       //     if let Some(next) = link.next {\n//       //         events[next].link.as_mut().unwrap().previous = Some(index + add - rm);\n//       //         while jumpIndex < jumps.len() && jumps[jumpIndex].0 <= next {\n//       //             add = jumps[jumpIndex].2;\n//       //             rm = jumps[jumpIndex].1;\n//       //             jumpIndex += 1;\n//       //         }\n//       //         events[index].link.as_mut().unwrap().next = Some(next + add - rm);\n//       //         index = next;\n//       //         continue;\n//       //     }\n//       // }\n//       index += 1\n//     }\n//   }\n// }","/**\n * @import {Event} from 'micromark-util-types'\n */\n\n/**\n * @typedef {'center' | 'left' | 'none' | 'right'} Align\n */\n\n/**\n * Figure out the alignment of a GFM table.\n *\n * @param {Readonly<Array<Event>>} events\n *   List of events.\n * @param {number} index\n *   Table enter event.\n * @returns {Array<Align>}\n *   List of aligns.\n */\nexport function gfmTableAlign(events, index) {\n  let inDelimiterRow = false;\n  /** @type {Array<Align>} */\n  const align = [];\n  while (index < events.length) {\n    const event = events[index];\n    if (inDelimiterRow) {\n      if (event[0] === 'enter') {\n        // Start of alignment value: set a new column.\n        // To do: `markdown-rs` uses `tableDelimiterCellValue`.\n        if (event[1].type === 'tableContent') {\n          align.push(events[index + 1][1].type === 'tableDelimiterMarker' ? 'left' : 'none');\n        }\n      }\n      // Exits:\n      // End of alignment value: change the column.\n      // To do: `markdown-rs` uses `tableDelimiterCellValue`.\n      else if (event[1].type === 'tableContent') {\n        if (events[index - 1][1].type === 'tableDelimiterMarker') {\n          const alignIndex = align.length - 1;\n          align[alignIndex] = align[alignIndex] === 'left' ? 'center' : 'right';\n        }\n      }\n      // Done!\n      else if (event[1].type === 'tableDelimiterRow') {\n        break;\n      }\n    } else if (event[0] === 'enter' && event[1].type === 'tableDelimiterRow') {\n      inDelimiterRow = true;\n    }\n    index += 1;\n  }\n  return align;\n}","/**\n * @import {Event, Extension, Point, Resolver, State, Token, TokenizeContext, Tokenizer} from 'micromark-util-types'\n */\n\n/**\n * @typedef {[number, number, number, number]} Range\n *   Cell info.\n *\n * @typedef {0 | 1 | 2 | 3} RowKind\n *   Where we are: `1` for head row, `2` for delimiter row, `3` for body row.\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownLineEndingOrSpace, markdownSpace } from 'micromark-util-character';\nimport { EditMap } from './edit-map.js';\nimport { gfmTableAlign } from './infer.js';\n\n/**\n * Create an HTML extension for `micromark` to support GitHub tables syntax.\n *\n * @returns {Extension}\n *   Extension for `micromark` that can be passed in `extensions` to enable GFM\n *   table syntax.\n */\nexport function gfmTable() {\n  return {\n    flow: {\n      null: {\n        name: 'table',\n        tokenize: tokenizeTable,\n        resolveAll: resolveTable\n      }\n    }\n  };\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTable(effects, ok, nok) {\n  const self = this;\n  let size = 0;\n  let sizeB = 0;\n  /** @type {boolean | undefined} */\n  let seen;\n  return start;\n\n  /**\n   * Start of a GFM table.\n   *\n   * If there is a valid table row or table head before, then we try to parse\n   * another row.\n   * Otherwise, we try to parse a head.\n   *\n   * ```markdown\n   * > | | a |\n   *     ^\n   *   | | - |\n   * > | | b |\n   *     ^\n   * ```\n   * @type {State}\n   */\n  function start(code) {\n    let index = self.events.length - 1;\n    while (index > -1) {\n      const type = self.events[index][1].type;\n      if (type === \"lineEnding\" ||\n      // Note: markdown-rs uses `whitespace` instead of `linePrefix`\n      type === \"linePrefix\") index--;else break;\n    }\n    const tail = index > -1 ? self.events[index][1].type : null;\n    const next = tail === 'tableHead' || tail === 'tableRow' ? bodyRowStart : headRowBefore;\n\n    // Don’t allow lazy body rows.\n    if (next === bodyRowStart && self.parser.lazy[self.now().line]) {\n      return nok(code);\n    }\n    return next(code);\n  }\n\n  /**\n   * Before table head row.\n   *\n   * ```markdown\n   * > | | a |\n   *     ^\n   *   | | - |\n   *   | | b |\n   * ```\n   *\n   * @type {State}\n   */\n  function headRowBefore(code) {\n    effects.enter('tableHead');\n    effects.enter('tableRow');\n    return headRowStart(code);\n  }\n\n  /**\n   * Before table head row, after whitespace.\n   *\n   * ```markdown\n   * > | | a |\n   *     ^\n   *   | | - |\n   *   | | b |\n   * ```\n   *\n   * @type {State}\n   */\n  function headRowStart(code) {\n    if (code === 124) {\n      return headRowBreak(code);\n    }\n\n    // To do: micromark-js should let us parse our own whitespace in extensions,\n    // like `markdown-rs`:\n    //\n    // ```js\n    // // 4+ spaces.\n    // if (markdownSpace(code)) {\n    //   return nok(code)\n    // }\n    // ```\n\n    seen = true;\n    // Count the first character, that isn’t a pipe, double.\n    sizeB += 1;\n    return headRowBreak(code);\n  }\n\n  /**\n   * At break in table head row.\n   *\n   * ```markdown\n   * > | | a |\n   *     ^\n   *       ^\n   *         ^\n   *   | | - |\n   *   | | b |\n   * ```\n   *\n   * @type {State}\n   */\n  function headRowBreak(code) {\n    if (code === null) {\n      // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don‘t.\n      return nok(code);\n    }\n    if (markdownLineEnding(code)) {\n      // If anything other than one pipe (ignoring whitespace) was used, it’s fine.\n      if (sizeB > 1) {\n        sizeB = 0;\n        // To do: check if this works.\n        // Feel free to interrupt:\n        self.interrupt = true;\n        effects.exit('tableRow');\n        effects.enter(\"lineEnding\");\n        effects.consume(code);\n        effects.exit(\"lineEnding\");\n        return headDelimiterStart;\n      }\n\n      // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don‘t.\n      return nok(code);\n    }\n    if (markdownSpace(code)) {\n      // To do: check if this is fine.\n      // effects.attempt(State::Next(StateName::GfmTableHeadRowBreak), State::Nok)\n      // State::Retry(space_or_tab(tokenizer))\n      return factorySpace(effects, headRowBreak, \"whitespace\")(code);\n    }\n    sizeB += 1;\n    if (seen) {\n      seen = false;\n      // Header cell count.\n      size += 1;\n    }\n    if (code === 124) {\n      effects.enter('tableCellDivider');\n      effects.consume(code);\n      effects.exit('tableCellDivider');\n      // Whether a delimiter was seen.\n      seen = true;\n      return headRowBreak;\n    }\n\n    // Anything else is cell data.\n    effects.enter(\"data\");\n    return headRowData(code);\n  }\n\n  /**\n   * In table head row data.\n   *\n   * ```markdown\n   * > | | a |\n   *       ^\n   *   | | - |\n   *   | | b |\n   * ```\n   *\n   * @type {State}\n   */\n  function headRowData(code) {\n    if (code === null || code === 124 || markdownLineEndingOrSpace(code)) {\n      effects.exit(\"data\");\n      return headRowBreak(code);\n    }\n    effects.consume(code);\n    return code === 92 ? headRowEscape : headRowData;\n  }\n\n  /**\n   * In table head row escape.\n   *\n   * ```markdown\n   * > | | a\\-b |\n   *         ^\n   *   | | ---- |\n   *   | | c    |\n   * ```\n   *\n   * @type {State}\n   */\n  function headRowEscape(code) {\n    if (code === 92 || code === 124) {\n      effects.consume(code);\n      return headRowData;\n    }\n    return headRowData(code);\n  }\n\n  /**\n   * Before delimiter row.\n   *\n   * ```markdown\n   *   | | a |\n   * > | | - |\n   *     ^\n   *   | | b |\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterStart(code) {\n    // Reset `interrupt`.\n    self.interrupt = false;\n\n    // Note: in `markdown-rs`, we need to handle piercing here too.\n    if (self.parser.lazy[self.now().line]) {\n      return nok(code);\n    }\n    effects.enter('tableDelimiterRow');\n    // Track if we’ve seen a `:` or `|`.\n    seen = false;\n    if (markdownSpace(code)) {\n      return factorySpace(effects, headDelimiterBefore, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code);\n    }\n    return headDelimiterBefore(code);\n  }\n\n  /**\n   * Before delimiter row, after optional whitespace.\n   *\n   * Reused when a `|` is found later, to parse another cell.\n   *\n   * ```markdown\n   *   | | a |\n   * > | | - |\n   *     ^\n   *   | | b |\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterBefore(code) {\n    if (code === 45 || code === 58) {\n      return headDelimiterValueBefore(code);\n    }\n    if (code === 124) {\n      seen = true;\n      // If we start with a pipe, we open a cell marker.\n      effects.enter('tableCellDivider');\n      effects.consume(code);\n      effects.exit('tableCellDivider');\n      return headDelimiterCellBefore;\n    }\n\n    // More whitespace / empty row not allowed at start.\n    return headDelimiterNok(code);\n  }\n\n  /**\n   * After `|`, before delimiter cell.\n   *\n   * ```markdown\n   *   | | a |\n   * > | | - |\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterCellBefore(code) {\n    if (markdownSpace(code)) {\n      return factorySpace(effects, headDelimiterValueBefore, \"whitespace\")(code);\n    }\n    return headDelimiterValueBefore(code);\n  }\n\n  /**\n   * Before delimiter cell value.\n   *\n   * ```markdown\n   *   | | a |\n   * > | | - |\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterValueBefore(code) {\n    // Align: left.\n    if (code === 58) {\n      sizeB += 1;\n      seen = true;\n      effects.enter('tableDelimiterMarker');\n      effects.consume(code);\n      effects.exit('tableDelimiterMarker');\n      return headDelimiterLeftAlignmentAfter;\n    }\n\n    // Align: none.\n    if (code === 45) {\n      sizeB += 1;\n      // To do: seems weird that this *isn’t* left aligned, but that state is used?\n      return headDelimiterLeftAlignmentAfter(code);\n    }\n    if (code === null || markdownLineEnding(code)) {\n      return headDelimiterCellAfter(code);\n    }\n    return headDelimiterNok(code);\n  }\n\n  /**\n   * After delimiter cell left alignment marker.\n   *\n   * ```markdown\n   *   | | a  |\n   * > | | :- |\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterLeftAlignmentAfter(code) {\n    if (code === 45) {\n      effects.enter('tableDelimiterFiller');\n      return headDelimiterFiller(code);\n    }\n\n    // Anything else is not ok after the left-align colon.\n    return headDelimiterNok(code);\n  }\n\n  /**\n   * In delimiter cell filler.\n   *\n   * ```markdown\n   *   | | a |\n   * > | | - |\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterFiller(code) {\n    if (code === 45) {\n      effects.consume(code);\n      return headDelimiterFiller;\n    }\n\n    // Align is `center` if it was `left`, `right` otherwise.\n    if (code === 58) {\n      seen = true;\n      effects.exit('tableDelimiterFiller');\n      effects.enter('tableDelimiterMarker');\n      effects.consume(code);\n      effects.exit('tableDelimiterMarker');\n      return headDelimiterRightAlignmentAfter;\n    }\n    effects.exit('tableDelimiterFiller');\n    return headDelimiterRightAlignmentAfter(code);\n  }\n\n  /**\n   * After delimiter cell right alignment marker.\n   *\n   * ```markdown\n   *   | |  a |\n   * > | | -: |\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterRightAlignmentAfter(code) {\n    if (markdownSpace(code)) {\n      return factorySpace(effects, headDelimiterCellAfter, \"whitespace\")(code);\n    }\n    return headDelimiterCellAfter(code);\n  }\n\n  /**\n   * After delimiter cell.\n   *\n   * ```markdown\n   *   | |  a |\n   * > | | -: |\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterCellAfter(code) {\n    if (code === 124) {\n      return headDelimiterBefore(code);\n    }\n    if (code === null || markdownLineEnding(code)) {\n      // Exit when:\n      // * there was no `:` or `|` at all (it’s a thematic break or setext\n      //   underline instead)\n      // * the header cell count is not the delimiter cell count\n      if (!seen || size !== sizeB) {\n        return headDelimiterNok(code);\n      }\n\n      // Note: in markdown-rs`, a reset is needed here.\n      effects.exit('tableDelimiterRow');\n      effects.exit('tableHead');\n      // To do: in `markdown-rs`, resolvers need to be registered manually.\n      // effects.register_resolver(ResolveName::GfmTable)\n      return ok(code);\n    }\n    return headDelimiterNok(code);\n  }\n\n  /**\n   * In delimiter row, at a disallowed byte.\n   *\n   * ```markdown\n   *   | | a |\n   * > | | x |\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterNok(code) {\n    // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don‘t.\n    return nok(code);\n  }\n\n  /**\n   * Before table body row.\n   *\n   * ```markdown\n   *   | | a |\n   *   | | - |\n   * > | | b |\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function bodyRowStart(code) {\n    // Note: in `markdown-rs` we need to manually take care of a prefix,\n    // but in `micromark-js` that is done for us, so if we’re here, we’re\n    // never at whitespace.\n    effects.enter('tableRow');\n    return bodyRowBreak(code);\n  }\n\n  /**\n   * At break in table body row.\n   *\n   * ```markdown\n   *   | | a |\n   *   | | - |\n   * > | | b |\n   *     ^\n   *       ^\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function bodyRowBreak(code) {\n    if (code === 124) {\n      effects.enter('tableCellDivider');\n      effects.consume(code);\n      effects.exit('tableCellDivider');\n      return bodyRowBreak;\n    }\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('tableRow');\n      return ok(code);\n    }\n    if (markdownSpace(code)) {\n      return factorySpace(effects, bodyRowBreak, \"whitespace\")(code);\n    }\n\n    // Anything else is cell content.\n    effects.enter(\"data\");\n    return bodyRowData(code);\n  }\n\n  /**\n   * In table body row data.\n   *\n   * ```markdown\n   *   | | a |\n   *   | | - |\n   * > | | b |\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function bodyRowData(code) {\n    if (code === null || code === 124 || markdownLineEndingOrSpace(code)) {\n      effects.exit(\"data\");\n      return bodyRowBreak(code);\n    }\n    effects.consume(code);\n    return code === 92 ? bodyRowEscape : bodyRowData;\n  }\n\n  /**\n   * In table body row escape.\n   *\n   * ```markdown\n   *   | | a    |\n   *   | | ---- |\n   * > | | b\\-c |\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function bodyRowEscape(code) {\n    if (code === 92 || code === 124) {\n      effects.consume(code);\n      return bodyRowData;\n    }\n    return bodyRowData(code);\n  }\n}\n\n/** @type {Resolver} */\n\nfunction resolveTable(events, context) {\n  let index = -1;\n  let inFirstCellAwaitingPipe = true;\n  /** @type {RowKind} */\n  let rowKind = 0;\n  /** @type {Range} */\n  let lastCell = [0, 0, 0, 0];\n  /** @type {Range} */\n  let cell = [0, 0, 0, 0];\n  let afterHeadAwaitingFirstBodyRow = false;\n  let lastTableEnd = 0;\n  /** @type {Token | undefined} */\n  let currentTable;\n  /** @type {Token | undefined} */\n  let currentBody;\n  /** @type {Token | undefined} */\n  let currentCell;\n  const map = new EditMap();\n  while (++index < events.length) {\n    const event = events[index];\n    const token = event[1];\n    if (event[0] === 'enter') {\n      // Start of head.\n      if (token.type === 'tableHead') {\n        afterHeadAwaitingFirstBodyRow = false;\n\n        // Inject previous (body end and) table end.\n        if (lastTableEnd !== 0) {\n          flushTableEnd(map, context, lastTableEnd, currentTable, currentBody);\n          currentBody = undefined;\n          lastTableEnd = 0;\n        }\n\n        // Inject table start.\n        currentTable = {\n          type: 'table',\n          start: Object.assign({}, token.start),\n          // Note: correct end is set later.\n          end: Object.assign({}, token.end)\n        };\n        map.add(index, 0, [['enter', currentTable, context]]);\n      } else if (token.type === 'tableRow' || token.type === 'tableDelimiterRow') {\n        inFirstCellAwaitingPipe = true;\n        currentCell = undefined;\n        lastCell = [0, 0, 0, 0];\n        cell = [0, index + 1, 0, 0];\n\n        // Inject table body start.\n        if (afterHeadAwaitingFirstBodyRow) {\n          afterHeadAwaitingFirstBodyRow = false;\n          currentBody = {\n            type: 'tableBody',\n            start: Object.assign({}, token.start),\n            // Note: correct end is set later.\n            end: Object.assign({}, token.end)\n          };\n          map.add(index, 0, [['enter', currentBody, context]]);\n        }\n        rowKind = token.type === 'tableDelimiterRow' ? 2 : currentBody ? 3 : 1;\n      }\n      // Cell data.\n      else if (rowKind && (token.type === \"data\" || token.type === 'tableDelimiterMarker' || token.type === 'tableDelimiterFiller')) {\n        inFirstCellAwaitingPipe = false;\n\n        // First value in cell.\n        if (cell[2] === 0) {\n          if (lastCell[1] !== 0) {\n            cell[0] = cell[1];\n            currentCell = flushCell(map, context, lastCell, rowKind, undefined, currentCell);\n            lastCell = [0, 0, 0, 0];\n          }\n          cell[2] = index;\n        }\n      } else if (token.type === 'tableCellDivider') {\n        if (inFirstCellAwaitingPipe) {\n          inFirstCellAwaitingPipe = false;\n        } else {\n          if (lastCell[1] !== 0) {\n            cell[0] = cell[1];\n            currentCell = flushCell(map, context, lastCell, rowKind, undefined, currentCell);\n          }\n          lastCell = cell;\n          cell = [lastCell[1], index, 0, 0];\n        }\n      }\n    }\n    // Exit events.\n    else if (token.type === 'tableHead') {\n      afterHeadAwaitingFirstBodyRow = true;\n      lastTableEnd = index;\n    } else if (token.type === 'tableRow' || token.type === 'tableDelimiterRow') {\n      lastTableEnd = index;\n      if (lastCell[1] !== 0) {\n        cell[0] = cell[1];\n        currentCell = flushCell(map, context, lastCell, rowKind, index, currentCell);\n      } else if (cell[1] !== 0) {\n        currentCell = flushCell(map, context, cell, rowKind, index, currentCell);\n      }\n      rowKind = 0;\n    } else if (rowKind && (token.type === \"data\" || token.type === 'tableDelimiterMarker' || token.type === 'tableDelimiterFiller')) {\n      cell[3] = index;\n    }\n  }\n  if (lastTableEnd !== 0) {\n    flushTableEnd(map, context, lastTableEnd, currentTable, currentBody);\n  }\n  map.consume(context.events);\n\n  // To do: move this into `html`, when events are exposed there.\n  // That’s what `markdown-rs` does.\n  // That needs updates to `mdast-util-gfm-table`.\n  index = -1;\n  while (++index < context.events.length) {\n    const event = context.events[index];\n    if (event[0] === 'enter' && event[1].type === 'table') {\n      event[1]._align = gfmTableAlign(context.events, index);\n    }\n  }\n  return events;\n}\n\n/**\n * Generate a cell.\n *\n * @param {EditMap} map\n * @param {Readonly<TokenizeContext>} context\n * @param {Readonly<Range>} range\n * @param {RowKind} rowKind\n * @param {number | undefined} rowEnd\n * @param {Token | undefined} previousCell\n * @returns {Token | undefined}\n */\n// eslint-disable-next-line max-params\nfunction flushCell(map, context, range, rowKind, rowEnd, previousCell) {\n  // `markdown-rs` uses:\n  // rowKind === 2 ? 'tableDelimiterCell' : 'tableCell'\n  const groupName = rowKind === 1 ? 'tableHeader' : rowKind === 2 ? 'tableDelimiter' : 'tableData';\n  // `markdown-rs` uses:\n  // rowKind === 2 ? 'tableDelimiterCellValue' : 'tableCellText'\n  const valueName = 'tableContent';\n\n  // Insert an exit for the previous cell, if there is one.\n  //\n  // ```markdown\n  // > | | aa | bb | cc |\n  //          ^-- exit\n  //           ^^^^-- this cell\n  // ```\n  if (range[0] !== 0) {\n    previousCell.end = Object.assign({}, getPoint(context.events, range[0]));\n    map.add(range[0], 0, [['exit', previousCell, context]]);\n  }\n\n  // Insert enter of this cell.\n  //\n  // ```markdown\n  // > | | aa | bb | cc |\n  //           ^-- enter\n  //           ^^^^-- this cell\n  // ```\n  const now = getPoint(context.events, range[1]);\n  previousCell = {\n    type: groupName,\n    start: Object.assign({}, now),\n    // Note: correct end is set later.\n    end: Object.assign({}, now)\n  };\n  map.add(range[1], 0, [['enter', previousCell, context]]);\n\n  // Insert text start at first data start and end at last data end, and\n  // remove events between.\n  //\n  // ```markdown\n  // > | | aa | bb | cc |\n  //            ^-- enter\n  //             ^-- exit\n  //           ^^^^-- this cell\n  // ```\n  if (range[2] !== 0) {\n    const relatedStart = getPoint(context.events, range[2]);\n    const relatedEnd = getPoint(context.events, range[3]);\n    /** @type {Token} */\n    const valueToken = {\n      type: valueName,\n      start: Object.assign({}, relatedStart),\n      end: Object.assign({}, relatedEnd)\n    };\n    map.add(range[2], 0, [['enter', valueToken, context]]);\n    if (rowKind !== 2) {\n      // Fix positional info on remaining events\n      const start = context.events[range[2]];\n      const end = context.events[range[3]];\n      start[1].end = Object.assign({}, end[1].end);\n      start[1].type = \"chunkText\";\n      start[1].contentType = \"text\";\n\n      // Remove if needed.\n      if (range[3] > range[2] + 1) {\n        const a = range[2] + 1;\n        const b = range[3] - range[2] - 1;\n        map.add(a, b, []);\n      }\n    }\n    map.add(range[3] + 1, 0, [['exit', valueToken, context]]);\n  }\n\n  // Insert an exit for the last cell, if at the row end.\n  //\n  // ```markdown\n  // > | | aa | bb | cc |\n  //                    ^-- exit\n  //               ^^^^^^-- this cell (the last one contains two “between” parts)\n  // ```\n  if (rowEnd !== undefined) {\n    previousCell.end = Object.assign({}, getPoint(context.events, rowEnd));\n    map.add(rowEnd, 0, [['exit', previousCell, context]]);\n    previousCell = undefined;\n  }\n  return previousCell;\n}\n\n/**\n * Generate table end (and table body end).\n *\n * @param {Readonly<EditMap>} map\n * @param {Readonly<TokenizeContext>} context\n * @param {number} index\n * @param {Token} table\n * @param {Token | undefined} tableBody\n */\n// eslint-disable-next-line max-params\nfunction flushTableEnd(map, context, index, table, tableBody) {\n  /** @type {Array<Event>} */\n  const exits = [];\n  const related = getPoint(context.events, index);\n  if (tableBody) {\n    tableBody.end = Object.assign({}, related);\n    exits.push(['exit', tableBody, context]);\n  }\n  table.end = Object.assign({}, related);\n  exits.push(['exit', table, context]);\n  map.add(index + 1, 0, exits);\n}\n\n/**\n * @param {Readonly<Array<Event>>} events\n * @param {number} index\n * @returns {Readonly<Point>}\n */\nfunction getPoint(events, index) {\n  const event = events[index];\n  const side = event[0] === 'enter' ? 'start' : 'end';\n  return event[1][side];\n}","/**\n * @import {Extension, State, TokenizeContext, Tokenizer} from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownLineEndingOrSpace, markdownSpace } from 'micromark-util-character';\nconst tasklistCheck = {\n  name: 'tasklistCheck',\n  tokenize: tokenizeTasklistCheck\n};\n\n/**\n * Create an HTML extension for `micromark` to support GFM task list items\n * syntax.\n *\n * @returns {Extension}\n *   Extension for `micromark` that can be passed in `htmlExtensions` to\n *   support GFM task list items when serializing to HTML.\n */\nexport function gfmTaskListItem() {\n  return {\n    text: {\n      [91]: tasklistCheck\n    }\n  };\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTasklistCheck(effects, ok, nok) {\n  const self = this;\n  return open;\n\n  /**\n   * At start of task list item check.\n   *\n   * ```markdown\n   * > | * [x] y.\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (\n    // Exit if there’s stuff before.\n    self.previous !== null ||\n    // Exit if not in the first content that is the first child of a list\n    // item.\n    !self._gfmTasklistFirstContentOfListItem) {\n      return nok(code);\n    }\n    effects.enter('taskListCheck');\n    effects.enter('taskListCheckMarker');\n    effects.consume(code);\n    effects.exit('taskListCheckMarker');\n    return inside;\n  }\n\n  /**\n   * In task list item check.\n   *\n   * ```markdown\n   * > | * [x] y.\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    // Currently we match how GH works in files.\n    // To match how GH works in comments, use `markdownSpace` (`[\\t ]`) instead\n    // of `markdownLineEndingOrSpace` (`[\\t\\n\\r ]`).\n    if (markdownLineEndingOrSpace(code)) {\n      effects.enter('taskListCheckValueUnchecked');\n      effects.consume(code);\n      effects.exit('taskListCheckValueUnchecked');\n      return close;\n    }\n    if (code === 88 || code === 120) {\n      effects.enter('taskListCheckValueChecked');\n      effects.consume(code);\n      effects.exit('taskListCheckValueChecked');\n      return close;\n    }\n    return nok(code);\n  }\n\n  /**\n   * At close of task list item check.\n   *\n   * ```markdown\n   * > | * [x] y.\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function close(code) {\n    if (code === 93) {\n      effects.enter('taskListCheckMarker');\n      effects.consume(code);\n      effects.exit('taskListCheckMarker');\n      effects.exit('taskListCheck');\n      return after;\n    }\n    return nok(code);\n  }\n\n  /**\n   * @type {State}\n   */\n  function after(code) {\n    // EOL in paragraph means there must be something else after it.\n    if (markdownLineEnding(code)) {\n      return ok(code);\n    }\n\n    // Space or tab?\n    // Check what comes after.\n    if (markdownSpace(code)) {\n      return effects.check({\n        tokenize: spaceThenNonSpace\n      }, ok, nok)(code);\n    }\n\n    // EOF, or non-whitespace, both wrong.\n    return nok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction spaceThenNonSpace(effects, ok, nok) {\n  return factorySpace(effects, after, \"whitespace\");\n\n  /**\n   * After whitespace, after task list item check.\n   *\n   * ```markdown\n   * > | * [x] y.\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    // EOF means there was nothing, so bad.\n    // EOL means there’s content after it, so good.\n    // Impossible to have more spaces.\n    // Anything else is good.\n    return code === null ? nok(code) : ok(code);\n  }\n}","/**\n * @typedef {import('micromark-extension-gfm-footnote').HtmlOptions} HtmlOptions\n * @typedef {import('micromark-extension-gfm-strikethrough').Options} Options\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n */\n\nimport {\n  combineExtensions,\n  combineHtmlExtensions\n} from 'micromark-util-combine-extensions'\nimport {\n  gfmAutolinkLiteral,\n  gfmAutolinkLiteralHtml\n} from 'micromark-extension-gfm-autolink-literal'\nimport {gfmFootnote, gfmFootnoteHtml} from 'micromark-extension-gfm-footnote'\nimport {\n  gfmStrikethrough,\n  gfmStrikethroughHtml\n} from 'micromark-extension-gfm-strikethrough'\nimport {gfmTable, gfmTableHtml} from 'micromark-extension-gfm-table'\nimport {gfmTagfilterHtml} from 'micromark-extension-gfm-tagfilter'\nimport {\n  gfmTaskListItem,\n  gfmTaskListItemHtml\n} from 'micromark-extension-gfm-task-list-item'\n\n/**\n * Create an extension for `micromark` to enable GFM syntax.\n *\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n *\n *   Passed to `micromark-extens-gfm-strikethrough`.\n * @returns {Extension}\n *   Extension for `micromark` that can be passed in `extensions` to enable GFM\n *   syntax.\n */\nexport function gfm(options) {\n  return combineExtensions([\n    gfmAutolinkLiteral(),\n    gfmFootnote(),\n    gfmStrikethrough(options),\n    gfmTable(),\n    gfmTaskListItem()\n  ])\n}\n\n/**\n * Create an extension for `micromark` to support GFM when serializing to HTML.\n *\n * @param {HtmlOptions | null | undefined} [options]\n *   Configuration (optional).\n *\n *   Passed to `micromark-extens-gfm-footnote`.\n * @returns {HtmlExtension}\n *   Extension for `micromark` that can be passed in `htmlExtensions` to\n *   support GFM when serializing to HTML.\n */\nexport function gfmHtml(options) {\n  return combineHtmlExtensions([\n    gfmAutolinkLiteralHtml(),\n    gfmFootnoteHtml(options),\n    gfmStrikethroughHtml(),\n    gfmTableHtml(),\n    gfmTagfilterHtml(),\n    gfmTaskListItemHtml()\n  ])\n}\n","/**\n * @import {Root} from 'mdast'\n * @import {Options} from 'remark-gfm'\n * @import {} from 'remark-parse'\n * @import {} from 'remark-stringify'\n * @import {Processor} from 'unified'\n */\n\nimport {gfmFromMarkdown, gfmToMarkdown} from 'mdast-util-gfm'\nimport {gfm} from 'micromark-extension-gfm'\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Add support GFM (autolink literals, footnotes, strikethrough, tables,\n * tasklists).\n *\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {undefined}\n *   Nothing.\n */\nexport default function remarkGfm(options) {\n  // @ts-expect-error: TS is wrong about `this`.\n  // eslint-disable-next-line unicorn/no-this-assignment\n  const self = /** @type {Processor<Root>} */ (this)\n  const settings = options || emptyOptions\n  const data = self.data()\n\n  const micromarkExtensions =\n    data.micromarkExtensions || (data.micromarkExtensions = [])\n  const fromMarkdownExtensions =\n    data.fromMarkdownExtensions || (data.fromMarkdownExtensions = [])\n  const toMarkdownExtensions =\n    data.toMarkdownExtensions || (data.toMarkdownExtensions = [])\n\n  micromarkExtensions.push(gfm(settings))\n  fromMarkdownExtensions.push(gfmFromMarkdown())\n  toMarkdownExtensions.push(gfmToMarkdown(settings))\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n */\n\n/**\n * @template {string} SimpleSelector\n *   Selector type.\n * @template {string} DefaultTagName\n *   Default tag name.\n * @typedef {(\n *   SimpleSelector extends ''\n *     ? DefaultTagName\n *     : SimpleSelector extends `${infer TagName}.${infer Rest}`\n *     ? ExtractTagName<TagName, DefaultTagName>\n *     : SimpleSelector extends `${infer TagName}#${infer Rest}`\n *     ? ExtractTagName<TagName, DefaultTagName>\n *     : SimpleSelector extends string\n *     ? SimpleSelector\n *     : DefaultTagName\n * )} ExtractTagName\n *   Extract tag name from a simple selector.\n */\n\nconst search = /[#.]/g\n\n/**\n * Create a hast element from a simple CSS selector.\n *\n * @template {string} Selector\n *   Type of selector.\n * @template {string} [DefaultTagName='div']\n *   Type of default tag name (default: `'div'`).\n * @param {Selector | null | undefined} [selector]\n *   Simple CSS selector (optional).\n *\n *   Can contain a tag name (`foo`), classes (`.bar`), and an ID (`#baz`).\n *   Multiple classes are allowed.\n *   Uses the last ID if multiple IDs are found.\n * @param {DefaultTagName | null | undefined} [defaultTagName='div']\n *   Tag name to use if `selector` does not specify one (default: `'div'`).\n * @returns {Element & {tagName: ExtractTagName<Selector, DefaultTagName>}}\n *   Built element.\n */\nexport function parseSelector(selector, defaultTagName) {\n  const value = selector || ''\n  /** @type {Properties} */\n  const props = {}\n  let start = 0\n  /** @type {string | undefined} */\n  let previous\n  /** @type {string | undefined} */\n  let tagName\n\n  while (start < value.length) {\n    search.lastIndex = start\n    const match = search.exec(value)\n    const subvalue = value.slice(start, match ? match.index : value.length)\n\n    if (subvalue) {\n      if (!previous) {\n        tagName = subvalue\n      } else if (previous === '#') {\n        props.id = subvalue\n      } else if (Array.isArray(props.className)) {\n        props.className.push(subvalue)\n      } else {\n        props.className = [subvalue]\n      }\n\n      start += subvalue.length\n    }\n\n    if (match) {\n      previous = match[0]\n      start++\n    }\n  }\n\n  return {\n    type: 'element',\n    // @ts-expect-error: tag name is parsed.\n    tagName: tagName || defaultTagName || 'div',\n    properties: props,\n    children: []\n  }\n}\n","/**\n * @import {Element, Nodes, RootContent, Root} from 'hast'\n * @import {Info, Schema} from 'property-information'\n */\n\n/**\n * @typedef {Array<Nodes | PrimitiveChild>} ArrayChildNested\n *   List of children (deep).\n */\n\n/**\n * @typedef {Array<ArrayChildNested | Nodes | PrimitiveChild>} ArrayChild\n *   List of children.\n */\n\n/**\n * @typedef {Array<number | string>} ArrayValue\n *   List of property values for space- or comma separated values (such as `className`).\n */\n\n/**\n * @typedef {ArrayChild | Nodes | PrimitiveChild} Child\n *   Acceptable child value.\n */\n\n/**\n * @typedef {number | string | null | undefined} PrimitiveChild\n *   Primitive children, either ignored (nullish), or turned into text nodes.\n */\n\n/**\n * @typedef {boolean | number | string | null | undefined} PrimitiveValue\n *   Primitive property value.\n */\n\n/**\n * @typedef {Record<string, PropertyValue | Style>} Properties\n *   Acceptable value for element properties.\n */\n\n/**\n * @typedef {ArrayValue | PrimitiveValue} PropertyValue\n *   Primitive value or list value.\n */\n\n/**\n * @typedef {Element | Root} Result\n *   Result from a `h` (or `s`) call.\n */\n\n/**\n * @typedef {number | string} StyleValue\n *   Value for a CSS style field.\n */\n\n/**\n * @typedef {Record<string, StyleValue>} Style\n *   Supported value of a `style` prop.\n */\n\nimport {parse as parseCommas} from 'comma-separated-tokens'\nimport {parseSelector} from 'hast-util-parse-selector'\nimport {find, normalize} from 'property-information'\nimport {parse as parseSpaces} from 'space-separated-tokens'\n\n/**\n * @param {Schema} schema\n *   Schema to use.\n * @param {string} defaultTagName\n *   Default tag name.\n * @param {ReadonlyArray<string> | undefined} [caseSensitive]\n *   Case-sensitive tag names (default: `undefined`).\n * @returns\n *   `h`.\n */\nexport function createH(schema, defaultTagName, caseSensitive) {\n  const adjust = caseSensitive ? createAdjustMap(caseSensitive) : undefined\n\n  /**\n   * Hyperscript compatible DSL for creating virtual hast trees.\n   *\n   * @overload\n   * @param {null | undefined} [selector]\n   * @param {...Child} children\n   * @returns {Root}\n   *\n   * @overload\n   * @param {string} selector\n   * @param {Properties} properties\n   * @param {...Child} children\n   * @returns {Element}\n   *\n   * @overload\n   * @param {string} selector\n   * @param {...Child} children\n   * @returns {Element}\n   *\n   * @param {string | null | undefined} [selector]\n   *   Selector.\n   * @param {Child | Properties | null | undefined} [properties]\n   *   Properties (or first child) (default: `undefined`).\n   * @param {...Child} children\n   *   Children.\n   * @returns {Result}\n   *   Result.\n   */\n  function h(selector, properties, ...children) {\n    /** @type {Result} */\n    let node\n\n    if (selector === null || selector === undefined) {\n      node = {type: 'root', children: []}\n      // Properties are not supported for roots.\n      const child = /** @type {Child} */ (properties)\n      children.unshift(child)\n    } else {\n      node = parseSelector(selector, defaultTagName)\n      // Normalize the name.\n      const lower = node.tagName.toLowerCase()\n      const adjusted = adjust ? adjust.get(lower) : undefined\n      node.tagName = adjusted || lower\n\n      // Handle properties.\n      if (isChild(properties)) {\n        children.unshift(properties)\n      } else {\n        for (const [key, value] of Object.entries(properties)) {\n          addProperty(schema, node.properties, key, value)\n        }\n      }\n    }\n\n    // Handle children.\n    for (const child of children) {\n      addChild(node.children, child)\n    }\n\n    if (node.type === 'element' && node.tagName === 'template') {\n      node.content = {type: 'root', children: node.children}\n      node.children = []\n    }\n\n    return node\n  }\n\n  return h\n}\n\n/**\n * Check if something is properties or a child.\n *\n * @param {Child | Properties} value\n *   Value to check.\n * @returns {value is Child}\n *   Whether `value` is definitely a child.\n */\nfunction isChild(value) {\n  // Never properties if not an object.\n  if (value === null || typeof value !== 'object' || Array.isArray(value)) {\n    return true\n  }\n\n  // Never node without `type`; that’s the main discriminator.\n  if (typeof value.type !== 'string') return false\n\n  // Slower check: never property value if object or array with\n  // non-number/strings.\n  const record = /** @type {Record<string, unknown>} */ (value)\n  const keys = Object.keys(value)\n\n  for (const key of keys) {\n    const value = record[key]\n\n    if (value && typeof value === 'object') {\n      if (!Array.isArray(value)) return true\n\n      const list = /** @type {ReadonlyArray<unknown>} */ (value)\n\n      for (const item of list) {\n        if (typeof item !== 'number' && typeof item !== 'string') {\n          return true\n        }\n      }\n    }\n  }\n\n  // Also see empty `children` as a node.\n  if ('children' in value && Array.isArray(value.children)) {\n    return true\n  }\n\n  // Default to properties, someone can always pass an empty object,\n  // put `data: {}` in a node,\n  // or wrap it in an array.\n  return false\n}\n\n/**\n * @param {Schema} schema\n *   Schema.\n * @param {Properties} properties\n *   Properties object.\n * @param {string} key\n *   Property name.\n * @param {PropertyValue | Style} value\n *   Property value.\n * @returns {undefined}\n *   Nothing.\n */\nfunction addProperty(schema, properties, key, value) {\n  const info = find(schema, key)\n  /** @type {PropertyValue} */\n  let result\n\n  // Ignore nullish and NaN values.\n  if (value === null || value === undefined) return\n\n  if (typeof value === 'number') {\n    // Ignore NaN.\n    if (Number.isNaN(value)) return\n\n    result = value\n  }\n  // Booleans.\n  else if (typeof value === 'boolean') {\n    result = value\n  }\n  // Handle list values.\n  else if (typeof value === 'string') {\n    if (info.spaceSeparated) {\n      result = parseSpaces(value)\n    } else if (info.commaSeparated) {\n      result = parseCommas(value)\n    } else if (info.commaOrSpaceSeparated) {\n      result = parseSpaces(parseCommas(value).join(' '))\n    } else {\n      result = parsePrimitive(info, info.property, value)\n    }\n  } else if (Array.isArray(value)) {\n    result = [...value]\n  } else {\n    result = info.property === 'style' ? style(value) : String(value)\n  }\n\n  if (Array.isArray(result)) {\n    /** @type {Array<number | string>} */\n    const finalResult = []\n\n    for (const item of result) {\n      // Assume no booleans in array.\n      finalResult.push(\n        /** @type {number | string} */ (\n          parsePrimitive(info, info.property, item)\n        )\n      )\n    }\n\n    result = finalResult\n  }\n\n  // Class names (which can be added both on the `selector` and here).\n  if (info.property === 'className' && Array.isArray(properties.className)) {\n    // Assume no booleans in `className`.\n    result = properties.className.concat(\n      /** @type {Array<number | string> | number | string} */ (result)\n    )\n  }\n\n  properties[info.property] = result\n}\n\n/**\n * @param {Array<RootContent>} nodes\n *   Children.\n * @param {Child} value\n *   Child.\n * @returns {undefined}\n *   Nothing.\n */\nfunction addChild(nodes, value) {\n  if (value === null || value === undefined) {\n    // Empty.\n  } else if (typeof value === 'number' || typeof value === 'string') {\n    nodes.push({type: 'text', value: String(value)})\n  } else if (Array.isArray(value)) {\n    for (const child of value) {\n      addChild(nodes, child)\n    }\n  } else if (typeof value === 'object' && 'type' in value) {\n    if (value.type === 'root') {\n      addChild(nodes, value.children)\n    } else {\n      nodes.push(value)\n    }\n  } else {\n    throw new Error('Expected node, nodes, or string, got `' + value + '`')\n  }\n}\n\n/**\n * Parse a single primitives.\n *\n * @param {Info} info\n *   Property information.\n * @param {string} name\n *   Property name.\n * @param {PrimitiveValue} value\n *   Property value.\n * @returns {PrimitiveValue}\n *   Property value.\n */\nfunction parsePrimitive(info, name, value) {\n  if (typeof value === 'string') {\n    if (info.number && value && !Number.isNaN(Number(value))) {\n      return Number(value)\n    }\n\n    if (\n      (info.boolean || info.overloadedBoolean) &&\n      (value === '' || normalize(value) === normalize(name))\n    ) {\n      return true\n    }\n  }\n\n  return value\n}\n\n/**\n * Serialize a `style` object as a string.\n *\n * @param {Style} styles\n *   Style object.\n * @returns {string}\n *   CSS string.\n */\nfunction style(styles) {\n  /** @type {Array<string>} */\n  const result = []\n\n  for (const [key, value] of Object.entries(styles)) {\n    result.push([key, value].join(': '))\n  }\n\n  return result.join('; ')\n}\n\n/**\n * Create a map to adjust casing.\n *\n * @param {ReadonlyArray<string>} values\n *   List of properly cased keys.\n * @returns {Map<string, string>}\n *   Map of lowercase keys to uppercase keys.\n */\nfunction createAdjustMap(values) {\n  /** @type {Map<string, string>} */\n  const result = new Map()\n\n  for (const value of values) {\n    result.set(value.toLowerCase(), value)\n  }\n\n  return result\n}\n","/**\n * List of case-sensitive SVG tag names.\n *\n * @type {ReadonlyArray<string>}\n */\nexport const svgCaseSensitiveTagNames = [\n  'altGlyph',\n  'altGlyphDef',\n  'altGlyphItem',\n  'animateColor',\n  'animateMotion',\n  'animateTransform',\n  'clipPath',\n  'feBlend',\n  'feColorMatrix',\n  'feComponentTransfer',\n  'feComposite',\n  'feConvolveMatrix',\n  'feDiffuseLighting',\n  'feDisplacementMap',\n  'feDistantLight',\n  'feDropShadow',\n  'feFlood',\n  'feFuncA',\n  'feFuncB',\n  'feFuncG',\n  'feFuncR',\n  'feGaussianBlur',\n  'feImage',\n  'feMerge',\n  'feMergeNode',\n  'feMorphology',\n  'feOffset',\n  'fePointLight',\n  'feSpecularLighting',\n  'feSpotLight',\n  'feTile',\n  'feTurbulence',\n  'foreignObject',\n  'glyphRef',\n  'linearGradient',\n  'radialGradient',\n  'solidColor',\n  'textArea',\n  'textPath'\n]\n","// Register the JSX namespace on `h`.\n/**\n * @typedef {import('./jsx-classic.js').Element} h.JSX.Element\n * @typedef {import('./jsx-classic.js').ElementChildrenAttribute} h.JSX.ElementChildrenAttribute\n * @typedef {import('./jsx-classic.js').IntrinsicAttributes} h.JSX.IntrinsicAttributes\n * @typedef {import('./jsx-classic.js').IntrinsicElements} h.JSX.IntrinsicElements\n */\n\n// Register the JSX namespace on `s`.\n/**\n * @typedef {import('./jsx-classic.js').Element} s.JSX.Element\n * @typedef {import('./jsx-classic.js').ElementChildrenAttribute} s.JSX.ElementChildrenAttribute\n * @typedef {import('./jsx-classic.js').IntrinsicAttributes} s.JSX.IntrinsicAttributes\n * @typedef {import('./jsx-classic.js').IntrinsicElements} s.JSX.IntrinsicElements\n */\n\nimport {html, svg} from 'property-information'\nimport {createH} from './create-h.js'\nimport {svgCaseSensitiveTagNames} from './svg-case-sensitive-tag-names.js'\n\n// Note: this explicit type is needed, otherwise TS creates broken types.\n/** @type {ReturnType<createH>} */\nexport const h = createH(html, 'div')\n\n// Note: this explicit type is needed, otherwise TS creates broken types.\n/** @type {ReturnType<createH>} */\nexport const s = createH(svg, 'g', svgCaseSensitiveTagNames)\n","/**\n * @import {VFile, Value} from 'vfile'\n * @import {Location} from 'vfile-location'\n */\n\n/**\n * Create an index of the given document to translate between line/column and\n * offset based positional info.\n *\n * Also implemented in Rust in [`wooorm/markdown-rs`][markdown-rs].\n *\n * [markdown-rs]: https://github.com/wooorm/markdown-rs/blob/main/src/util/location.rs\n *\n * @param {VFile | Value} file\n *   File to index.\n * @returns {Location}\n *   Accessors for index.\n */\nexport function location(file) {\n  const value = String(file)\n  /**\n   * List, where each index is a line number (0-based), and each value is the\n   * byte index *after* where the line ends.\n   *\n   * @type {Array<number>}\n   */\n  const indices = []\n\n  return {toOffset, toPoint}\n\n  /** @type {Location['toPoint']} */\n  function toPoint(offset) {\n    if (typeof offset === 'number' && offset > -1 && offset <= value.length) {\n      let index = 0\n\n      while (true) {\n        let end = indices[index]\n\n        if (end === undefined) {\n          const eol = next(value, indices[index - 1])\n          end = eol === -1 ? value.length + 1 : eol + 1\n          indices[index] = end\n        }\n\n        if (end > offset) {\n          return {\n            line: index + 1,\n            column: offset - (index > 0 ? indices[index - 1] : 0) + 1,\n            offset\n          }\n        }\n\n        index++\n      }\n    }\n  }\n\n  /** @type {Location['toOffset']} */\n  function toOffset(point) {\n    if (\n      point &&\n      typeof point.line === 'number' &&\n      typeof point.column === 'number' &&\n      !Number.isNaN(point.line) &&\n      !Number.isNaN(point.column)\n    ) {\n      while (indices.length < point.line) {\n        const from = indices[indices.length - 1]\n        const eol = next(value, from)\n        const end = eol === -1 ? value.length + 1 : eol + 1\n        if (from === end) break\n        indices.push(end)\n      }\n\n      const offset =\n        (point.line > 1 ? indices[point.line - 2] : 0) + point.column - 1\n      // The given `column` could not exist on this line.\n      if (offset < indices[point.line - 1]) return offset\n    }\n  }\n}\n\n/**\n * @param {string} value\n * @param {number} from\n */\nfunction next(value, from) {\n  const cr = value.indexOf('\\r', from)\n  const lf = value.indexOf('\\n', from)\n  if (lf === -1) return cr\n  if (cr === -1 || cr + 1 === lf) return lf\n  return cr < lf ? cr : lf\n}\n","/**\n * Map of web namespaces.\n *\n * @type {Record<string, string>}\n */\nexport const webNamespaces = {\n  html: 'http://www.w3.org/1999/xhtml',\n  mathml: 'http://www.w3.org/1998/Math/MathML',\n  svg: 'http://www.w3.org/2000/svg',\n  xlink: 'http://www.w3.org/1999/xlink',\n  xml: 'http://www.w3.org/XML/1998/namespace',\n  xmlns: 'http://www.w3.org/2000/xmlns/'\n}\n","/**\n * @import {ElementData, Element, Nodes, RootContent, Root} from 'hast'\n * @import {DefaultTreeAdapterMap, Token} from 'parse5'\n * @import {Schema} from 'property-information'\n * @import {Point, Position} from 'unist'\n * @import {VFile} from 'vfile'\n * @import {Options} from 'hast-util-from-parse5'\n */\n\n/**\n * @typedef State\n *   Info passed around about the current state.\n * @property {VFile | undefined} file\n *   Corresponding file.\n * @property {boolean} location\n *   Whether location info was found.\n * @property {Schema} schema\n *   Current schema.\n * @property {boolean | undefined} verbose\n *   Add extra positional info.\n */\n\nimport {ok as assert} from 'devlop'\nimport {h, s} from 'hastscript'\nimport {find, html, svg} from 'property-information'\nimport {location} from 'vfile-location'\nimport {webNamespaces} from 'web-namespaces'\n\nconst own = {}.hasOwnProperty\n/** @type {unknown} */\n// type-coverage:ignore-next-line\nconst proto = Object.prototype\n\n/**\n * Transform a `parse5` AST to hast.\n *\n * @param {DefaultTreeAdapterMap['node']} tree\n *   `parse5` tree to transform.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {Nodes}\n *   hast tree.\n */\nexport function fromParse5(tree, options) {\n  const settings = options || {}\n\n  return one(\n    {\n      file: settings.file || undefined,\n      location: false,\n      schema: settings.space === 'svg' ? svg : html,\n      verbose: settings.verbose || false\n    },\n    tree\n  )\n}\n\n/**\n * Transform a node.\n *\n * @param {State} state\n *   Info passed around about the current state.\n * @param {DefaultTreeAdapterMap['node']} node\n *   p5 node.\n * @returns {Nodes}\n *   hast node.\n */\nfunction one(state, node) {\n  /** @type {Nodes} */\n  let result\n\n  switch (node.nodeName) {\n    case '#comment': {\n      const reference = /** @type {DefaultTreeAdapterMap['commentNode']} */ (\n        node\n      )\n      result = {type: 'comment', value: reference.data}\n      patch(state, reference, result)\n      return result\n    }\n\n    case '#document':\n    case '#document-fragment': {\n      const reference =\n        /** @type {DefaultTreeAdapterMap['document'] | DefaultTreeAdapterMap['documentFragment']} */ (\n          node\n        )\n      const quirksMode =\n        'mode' in reference\n          ? reference.mode === 'quirks' || reference.mode === 'limited-quirks'\n          : false\n\n      result = {\n        type: 'root',\n        children: all(state, node.childNodes),\n        data: {quirksMode}\n      }\n\n      if (state.file && state.location) {\n        const document = String(state.file)\n        const loc = location(document)\n        const start = loc.toPoint(0)\n        const end = loc.toPoint(document.length)\n        // Always defined as we give valid input.\n        assert(start, 'expected `start`')\n        assert(end, 'expected `end`')\n        result.position = {start, end}\n      }\n\n      return result\n    }\n\n    case '#documentType': {\n      const reference = /** @type {DefaultTreeAdapterMap['documentType']} */ (\n        node\n      )\n      result = {type: 'doctype'}\n      patch(state, reference, result)\n      return result\n    }\n\n    case '#text': {\n      const reference = /** @type {DefaultTreeAdapterMap['textNode']} */ (node)\n      result = {type: 'text', value: reference.value}\n      patch(state, reference, result)\n      return result\n    }\n\n    // Element.\n    default: {\n      const reference = /** @type {DefaultTreeAdapterMap['element']} */ (node)\n      result = element(state, reference)\n      return result\n    }\n  }\n}\n\n/**\n * Transform children.\n *\n * @param {State} state\n *   Info passed around about the current state.\n * @param {Array<DefaultTreeAdapterMap['node']>} nodes\n *   Nodes.\n * @returns {Array<RootContent>}\n *   hast nodes.\n */\nfunction all(state, nodes) {\n  let index = -1\n  /** @type {Array<RootContent>} */\n  const results = []\n\n  while (++index < nodes.length) {\n    // Assume no roots in `nodes`.\n    const result = /** @type {RootContent} */ (one(state, nodes[index]))\n    results.push(result)\n  }\n\n  return results\n}\n\n/**\n * Transform an element.\n *\n * @param {State} state\n *   Info passed around about the current state.\n * @param {DefaultTreeAdapterMap['element']} node\n *   `parse5` node to transform.\n * @returns {Element}\n *   hast node.\n */\nfunction element(state, node) {\n  const schema = state.schema\n\n  state.schema = node.namespaceURI === webNamespaces.svg ? svg : html\n\n  // Props.\n  let index = -1\n  /** @type {Record<string, string>} */\n  const properties = {}\n\n  while (++index < node.attrs.length) {\n    const attribute = node.attrs[index]\n    const name =\n      (attribute.prefix ? attribute.prefix + ':' : '') + attribute.name\n    if (!own.call(proto, name)) {\n      properties[name] = attribute.value\n    }\n  }\n\n  // Build.\n  const x = state.schema.space === 'svg' ? s : h\n  const result = x(node.tagName, properties, all(state, node.childNodes))\n  patch(state, node, result)\n\n  // Switch content.\n  if (result.tagName === 'template') {\n    const reference = /** @type {DefaultTreeAdapterMap['template']} */ (node)\n    const pos = reference.sourceCodeLocation\n    const startTag = pos && pos.startTag && position(pos.startTag)\n    const endTag = pos && pos.endTag && position(pos.endTag)\n\n    // Root in, root out.\n    const content = /** @type {Root} */ (one(state, reference.content))\n\n    if (startTag && endTag && state.file) {\n      content.position = {start: startTag.end, end: endTag.start}\n    }\n\n    result.content = content\n  }\n\n  state.schema = schema\n\n  return result\n}\n\n/**\n * Patch positional info from `from` onto `to`.\n *\n * @param {State} state\n *   Info passed around about the current state.\n * @param {DefaultTreeAdapterMap['node']} from\n *   p5 node.\n * @param {Nodes} to\n *   hast node.\n * @returns {undefined}\n *   Nothing.\n */\nfunction patch(state, from, to) {\n  if ('sourceCodeLocation' in from && from.sourceCodeLocation && state.file) {\n    const position = createLocation(state, to, from.sourceCodeLocation)\n\n    if (position) {\n      state.location = true\n      to.position = position\n    }\n  }\n}\n\n/**\n * Create clean positional information.\n *\n * @param {State} state\n *   Info passed around about the current state.\n * @param {Nodes} node\n *   hast node.\n * @param {Token.ElementLocation} location\n *   p5 location info.\n * @returns {Position | undefined}\n *   Position, or nothing.\n */\nfunction createLocation(state, node, location) {\n  const result = position(location)\n\n  if (node.type === 'element') {\n    const tail = node.children[node.children.length - 1]\n\n    // Bug for unclosed with children.\n    // See: <https://github.com/inikulin/parse5/issues/109>.\n    if (\n      result &&\n      !location.endTag &&\n      tail &&\n      tail.position &&\n      tail.position.end\n    ) {\n      result.end = Object.assign({}, tail.position.end)\n    }\n\n    if (state.verbose) {\n      /** @type {Record<string, Position | undefined>} */\n      const properties = {}\n      /** @type {string} */\n      let key\n\n      if (location.attrs) {\n        for (key in location.attrs) {\n          if (own.call(location.attrs, key)) {\n            properties[find(state.schema, key).property] = position(\n              location.attrs[key]\n            )\n          }\n        }\n      }\n\n      assert(location.startTag, 'a start tag should exist')\n      const opening = position(location.startTag)\n      const closing = location.endTag ? position(location.endTag) : undefined\n      /** @type {ElementData['position']} */\n      const data = {opening}\n      if (closing) data.closing = closing\n      data.properties = properties\n\n      node.data = {position: data}\n    }\n  }\n\n  return result\n}\n\n/**\n * Turn a p5 location into a position.\n *\n * @param {Token.Location} loc\n *   Location.\n * @returns {Position | undefined}\n *   Position or nothing.\n */\nfunction position(loc) {\n  const start = point({\n    line: loc.startLine,\n    column: loc.startCol,\n    offset: loc.startOffset\n  })\n  const end = point({\n    line: loc.endLine,\n    column: loc.endCol,\n    offset: loc.endOffset\n  })\n\n  // @ts-expect-error: we do use `undefined` for points if one or the other\n  // exists.\n  return start || end ? {start, end} : undefined\n}\n\n/**\n * Filter out invalid points.\n *\n * @param {Point} point\n *   Point with potentially `undefined` values.\n * @returns {Point | undefined}\n *   Point or nothing.\n */\nfunction point(point) {\n  return point.line && point.column ? point : undefined\n}\n","/**\n * @typedef {import('./info.js').Info} Info\n * @typedef {Record<string, Info>} Properties\n * @typedef {Record<string, string>} Normal\n */\n\nexport class Schema {\n  /**\n   * @constructor\n   * @param {Properties} property\n   * @param {Normal} normal\n   * @param {string} [space]\n   */\n  constructor(property, normal, space) {\n    this.property = property\n    this.normal = normal\n    if (space) {\n      this.space = space\n    }\n  }\n}\n\n/** @type {Properties} */\nSchema.prototype.property = {}\n/** @type {Normal} */\nSchema.prototype.normal = {}\n/** @type {string|null} */\nSchema.prototype.space = null\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {Schema[]} definitions\n * @param {string} [space]\n * @returns {Schema}\n */\nexport function merge(definitions, space) {\n  /** @type {Properties} */\n  const property = {}\n  /** @type {Normal} */\n  const normal = {}\n  let index = -1\n\n  while (++index < definitions.length) {\n    Object.assign(property, definitions[index].property)\n    Object.assign(normal, definitions[index].normal)\n  }\n\n  return new Schema(property, normal, space)\n}\n","/**\n * @param {string} value\n * @returns {string}\n */\nexport function normalize(value) {\n  return value.toLowerCase()\n}\n","export class Info {\n  /**\n   * @constructor\n   * @param {string} property\n   * @param {string} attribute\n   */\n  constructor(property, attribute) {\n    /** @type {string} */\n    this.property = property\n    /** @type {string} */\n    this.attribute = attribute\n  }\n}\n\n/** @type {string|null} */\nInfo.prototype.space = null\nInfo.prototype.boolean = false\nInfo.prototype.booleanish = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.number = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.spaceSeparated = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.defined = false\n","let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n  return 2 ** ++powers\n}\n","import {Info} from './info.js'\nimport * as types from './types.js'\n\n/** @type {Array<keyof types>} */\n// @ts-expect-error: hush.\nconst checks = Object.keys(types)\n\nexport class DefinedInfo extends Info {\n  /**\n   * @constructor\n   * @param {string} property\n   * @param {string} attribute\n   * @param {number|null} [mask]\n   * @param {string} [space]\n   */\n  constructor(property, attribute, mask, space) {\n    let index = -1\n\n    super(property, attribute)\n\n    mark(this, 'space', space)\n\n    if (typeof mask === 'number') {\n      while (++index < checks.length) {\n        const check = checks[index]\n        mark(this, checks[index], (mask & types[check]) === types[check])\n      }\n    }\n  }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @param {DefinedInfo} values\n * @param {string} key\n * @param {unknown} value\n */\nfunction mark(values, key, value) {\n  if (value) {\n    // @ts-expect-error: assume `value` matches the expected value of `key`.\n    values[key] = value\n  }\n}\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n *\n * @typedef {Record<string, string>} Attributes\n *\n * @typedef {Object} Definition\n * @property {Record<string, number|null>} properties\n * @property {(attributes: Attributes, property: string) => string} transform\n * @property {string} [space]\n * @property {Attributes} [attributes]\n * @property {Array<string>} [mustUseProperty]\n */\n\nimport {normalize} from '../normalize.js'\nimport {Schema} from './schema.js'\nimport {DefinedInfo} from './defined-info.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param {Definition} definition\n * @returns {Schema}\n */\nexport function create(definition) {\n  /** @type {Properties} */\n  const property = {}\n  /** @type {Normal} */\n  const normal = {}\n  /** @type {string} */\n  let prop\n\n  for (prop in definition.properties) {\n    if (own.call(definition.properties, prop)) {\n      const value = definition.properties[prop]\n      const info = new DefinedInfo(\n        prop,\n        definition.transform(definition.attributes || {}, prop),\n        value,\n        definition.space\n      )\n\n      if (\n        definition.mustUseProperty &&\n        definition.mustUseProperty.includes(prop)\n      ) {\n        info.mustUseProperty = true\n      }\n\n      property[prop] = info\n\n      normal[normalize(prop)] = prop\n      normal[normalize(info.attribute)] = prop\n    }\n  }\n\n  return new Schema(property, normal, definition.space)\n}\n","import {create} from './util/create.js'\n\nexport const xlink = create({\n  space: 'xlink',\n  transform(_, prop) {\n    return 'xlink:' + prop.slice(5).toLowerCase()\n  },\n  properties: {\n    xLinkActuate: null,\n    xLinkArcRole: null,\n    xLinkHref: null,\n    xLinkRole: null,\n    xLinkShow: null,\n    xLinkTitle: null,\n    xLinkType: null\n  }\n})\n","import {create} from './util/create.js'\n\nexport const xml = create({\n  space: 'xml',\n  transform(_, prop) {\n    return 'xml:' + prop.slice(3).toLowerCase()\n  },\n  properties: {xmlLang: null, xmlBase: null, xmlSpace: null}\n})\n","/**\n * @param {Record<string, string>} attributes\n * @param {string} attribute\n * @returns {string}\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n  return attribute in attributes ? attributes[attribute] : attribute\n}\n","import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record<string, string>} attributes\n * @param {string} property\n * @returns {string}\n */\nexport function caseInsensitiveTransform(attributes, property) {\n  return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n  space: 'xmlns',\n  attributes: {xmlnsxlink: 'xmlns:xlink'},\n  transform: caseInsensitiveTransform,\n  properties: {xmlns: null, xmlnsXLink: null}\n})\n","import {booleanish, number, spaceSeparated} from './util/types.js'\nimport {create} from './util/create.js'\n\nexport const aria = create({\n  transform(_, prop) {\n    return prop === 'role' ? prop : 'aria-' + prop.slice(4).toLowerCase()\n  },\n  properties: {\n    ariaActiveDescendant: null,\n    ariaAtomic: booleanish,\n    ariaAutoComplete: null,\n    ariaBusy: booleanish,\n    ariaChecked: booleanish,\n    ariaColCount: number,\n    ariaColIndex: number,\n    ariaColSpan: number,\n    ariaControls: spaceSeparated,\n    ariaCurrent: null,\n    ariaDescribedBy: spaceSeparated,\n    ariaDetails: null,\n    ariaDisabled: booleanish,\n    ariaDropEffect: spaceSeparated,\n    ariaErrorMessage: null,\n    ariaExpanded: booleanish,\n    ariaFlowTo: spaceSeparated,\n    ariaGrabbed: booleanish,\n    ariaHasPopup: null,\n    ariaHidden: booleanish,\n    ariaInvalid: null,\n    ariaKeyShortcuts: null,\n    ariaLabel: null,\n    ariaLabelledBy: spaceSeparated,\n    ariaLevel: number,\n    ariaLive: null,\n    ariaModal: booleanish,\n    ariaMultiLine: booleanish,\n    ariaMultiSelectable: booleanish,\n    ariaOrientation: null,\n    ariaOwns: spaceSeparated,\n    ariaPlaceholder: null,\n    ariaPosInSet: number,\n    ariaPressed: booleanish,\n    ariaReadOnly: booleanish,\n    ariaRelevant: null,\n    ariaRequired: booleanish,\n    ariaRoleDescription: spaceSeparated,\n    ariaRowCount: number,\n    ariaRowIndex: number,\n    ariaRowSpan: number,\n    ariaSelected: booleanish,\n    ariaSetSize: number,\n    ariaSort: null,\n    ariaValueMax: number,\n    ariaValueMin: number,\n    ariaValueNow: number,\n    ariaValueText: null,\n    role: null\n  }\n})\n","import {\n  boolean,\n  overloadedBoolean,\n  booleanish,\n  number,\n  spaceSeparated,\n  commaSeparated\n} from './util/types.js'\nimport {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const html = create({\n  space: 'html',\n  attributes: {\n    acceptcharset: 'accept-charset',\n    classname: 'class',\n    htmlfor: 'for',\n    httpequiv: 'http-equiv'\n  },\n  transform: caseInsensitiveTransform,\n  mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n  properties: {\n    // Standard Properties.\n    abbr: null,\n    accept: commaSeparated,\n    acceptCharset: spaceSeparated,\n    accessKey: spaceSeparated,\n    action: null,\n    allow: null,\n    allowFullScreen: boolean,\n    allowPaymentRequest: boolean,\n    allowUserMedia: boolean,\n    alt: null,\n    as: null,\n    async: boolean,\n    autoCapitalize: null,\n    autoComplete: spaceSeparated,\n    autoFocus: boolean,\n    autoPlay: boolean,\n    blocking: spaceSeparated,\n    capture: null,\n    charSet: null,\n    checked: boolean,\n    cite: null,\n    className: spaceSeparated,\n    cols: number,\n    colSpan: null,\n    content: null,\n    contentEditable: booleanish,\n    controls: boolean,\n    controlsList: spaceSeparated,\n    coords: number | commaSeparated,\n    crossOrigin: null,\n    data: null,\n    dateTime: null,\n    decoding: null,\n    default: boolean,\n    defer: boolean,\n    dir: null,\n    dirName: null,\n    disabled: boolean,\n    download: overloadedBoolean,\n    draggable: booleanish,\n    encType: null,\n    enterKeyHint: null,\n    fetchPriority: null,\n    form: null,\n    formAction: null,\n    formEncType: null,\n    formMethod: null,\n    formNoValidate: boolean,\n    formTarget: null,\n    headers: spaceSeparated,\n    height: number,\n    hidden: boolean,\n    high: number,\n    href: null,\n    hrefLang: null,\n    htmlFor: spaceSeparated,\n    httpEquiv: spaceSeparated,\n    id: null,\n    imageSizes: null,\n    imageSrcSet: null,\n    inert: boolean,\n    inputMode: null,\n    integrity: null,\n    is: null,\n    isMap: boolean,\n    itemId: null,\n    itemProp: spaceSeparated,\n    itemRef: spaceSeparated,\n    itemScope: boolean,\n    itemType: spaceSeparated,\n    kind: null,\n    label: null,\n    lang: null,\n    language: null,\n    list: null,\n    loading: null,\n    loop: boolean,\n    low: number,\n    manifest: null,\n    max: null,\n    maxLength: number,\n    media: null,\n    method: null,\n    min: null,\n    minLength: number,\n    multiple: boolean,\n    muted: boolean,\n    name: null,\n    nonce: null,\n    noModule: boolean,\n    noValidate: boolean,\n    onAbort: null,\n    onAfterPrint: null,\n    onAuxClick: null,\n    onBeforeMatch: null,\n    onBeforePrint: null,\n    onBeforeToggle: null,\n    onBeforeUnload: null,\n    onBlur: null,\n    onCancel: null,\n    onCanPlay: null,\n    onCanPlayThrough: null,\n    onChange: null,\n    onClick: null,\n    onClose: null,\n    onContextLost: null,\n    onContextMenu: null,\n    onContextRestored: null,\n    onCopy: null,\n    onCueChange: null,\n    onCut: null,\n    onDblClick: null,\n    onDrag: null,\n    onDragEnd: null,\n    onDragEnter: null,\n    onDragExit: null,\n    onDragLeave: null,\n    onDragOver: null,\n    onDragStart: null,\n    onDrop: null,\n    onDurationChange: null,\n    onEmptied: null,\n    onEnded: null,\n    onError: null,\n    onFocus: null,\n    onFormData: null,\n    onHashChange: null,\n    onInput: null,\n    onInvalid: null,\n    onKeyDown: null,\n    onKeyPress: null,\n    onKeyUp: null,\n    onLanguageChange: null,\n    onLoad: null,\n    onLoadedData: null,\n    onLoadedMetadata: null,\n    onLoadEnd: null,\n    onLoadStart: null,\n    onMessage: null,\n    onMessageError: null,\n    onMouseDown: null,\n    onMouseEnter: null,\n    onMouseLeave: null,\n    onMouseMove: null,\n    onMouseOut: null,\n    onMouseOver: null,\n    onMouseUp: null,\n    onOffline: null,\n    onOnline: null,\n    onPageHide: null,\n    onPageShow: null,\n    onPaste: null,\n    onPause: null,\n    onPlay: null,\n    onPlaying: null,\n    onPopState: null,\n    onProgress: null,\n    onRateChange: null,\n    onRejectionHandled: null,\n    onReset: null,\n    onResize: null,\n    onScroll: null,\n    onScrollEnd: null,\n    onSecurityPolicyViolation: null,\n    onSeeked: null,\n    onSeeking: null,\n    onSelect: null,\n    onSlotChange: null,\n    onStalled: null,\n    onStorage: null,\n    onSubmit: null,\n    onSuspend: null,\n    onTimeUpdate: null,\n    onToggle: null,\n    onUnhandledRejection: null,\n    onUnload: null,\n    onVolumeChange: null,\n    onWaiting: null,\n    onWheel: null,\n    open: boolean,\n    optimum: number,\n    pattern: null,\n    ping: spaceSeparated,\n    placeholder: null,\n    playsInline: boolean,\n    popover: null,\n    popoverTarget: null,\n    popoverTargetAction: null,\n    poster: null,\n    preload: null,\n    readOnly: boolean,\n    referrerPolicy: null,\n    rel: spaceSeparated,\n    required: boolean,\n    reversed: boolean,\n    rows: number,\n    rowSpan: number,\n    sandbox: spaceSeparated,\n    scope: null,\n    scoped: boolean,\n    seamless: boolean,\n    selected: boolean,\n    shadowRootClonable: boolean,\n    shadowRootDelegatesFocus: boolean,\n    shadowRootMode: null,\n    shape: null,\n    size: number,\n    sizes: null,\n    slot: null,\n    span: number,\n    spellCheck: booleanish,\n    src: null,\n    srcDoc: null,\n    srcLang: null,\n    srcSet: null,\n    start: number,\n    step: null,\n    style: null,\n    tabIndex: number,\n    target: null,\n    title: null,\n    translate: null,\n    type: null,\n    typeMustMatch: boolean,\n    useMap: null,\n    value: booleanish,\n    width: number,\n    wrap: null,\n    writingSuggestions: null,\n\n    // Legacy.\n    // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n    align: null, // Several. Use CSS `text-align` instead,\n    aLink: null, // `<body>`. Use CSS `a:active {color}` instead\n    archive: spaceSeparated, // `<object>`. List of URIs to archives\n    axis: null, // `<td>` and `<th>`. Use `scope` on `<th>`\n    background: null, // `<body>`. Use CSS `background-image` instead\n    bgColor: null, // `<body>` and table elements. Use CSS `background-color` instead\n    border: number, // `<table>`. Use CSS `border-width` instead,\n    borderColor: null, // `<table>`. Use CSS `border-color` instead,\n    bottomMargin: number, // `<body>`\n    cellPadding: null, // `<table>`\n    cellSpacing: null, // `<table>`\n    char: null, // Several table elements. When `align=char`, sets the character to align on\n    charOff: null, // Several table elements. When `char`, offsets the alignment\n    classId: null, // `<object>`\n    clear: null, // `<br>`. Use CSS `clear` instead\n    code: null, // `<object>`\n    codeBase: null, // `<object>`\n    codeType: null, // `<object>`\n    color: null, // `<font>` and `<hr>`. Use CSS instead\n    compact: boolean, // Lists. Use CSS to reduce space between items instead\n    declare: boolean, // `<object>`\n    event: null, // `<script>`\n    face: null, // `<font>`. Use CSS instead\n    frame: null, // `<table>`\n    frameBorder: null, // `<iframe>`. Use CSS `border` instead\n    hSpace: number, // `<img>` and `<object>`\n    leftMargin: number, // `<body>`\n    link: null, // `<body>`. Use CSS `a:link {color: *}` instead\n    longDesc: null, // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`\n    lowSrc: null, // `<img>`. Use a `<picture>`\n    marginHeight: number, // `<body>`\n    marginWidth: number, // `<body>`\n    noResize: boolean, // `<frame>`\n    noHref: boolean, // `<area>`. Use no href instead of an explicit `nohref`\n    noShade: boolean, // `<hr>`. Use background-color and height instead of borders\n    noWrap: boolean, // `<td>` and `<th>`\n    object: null, // `<applet>`\n    profile: null, // `<head>`\n    prompt: null, // `<isindex>`\n    rev: null, // `<link>`\n    rightMargin: number, // `<body>`\n    rules: null, // `<table>`\n    scheme: null, // `<meta>`\n    scrolling: booleanish, // `<frame>`. Use overflow in the child context\n    standby: null, // `<object>`\n    summary: null, // `<table>`\n    text: null, // `<body>`. Use CSS `color` instead\n    topMargin: number, // `<body>`\n    valueType: null, // `<param>`\n    version: null, // `<html>`. Use a doctype.\n    vAlign: null, // Several. Use CSS `vertical-align` instead\n    vLink: null, // `<body>`. Use CSS `a:visited {color}` instead\n    vSpace: number, // `<img>` and `<object>`\n\n    // Non-standard Properties.\n    allowTransparency: null,\n    autoCorrect: null,\n    autoSave: null,\n    disablePictureInPicture: boolean,\n    disableRemotePlayback: boolean,\n    prefix: null,\n    property: null,\n    results: number,\n    security: null,\n    unselectable: null\n  }\n})\n","import {\n  boolean,\n  number,\n  spaceSeparated,\n  commaSeparated,\n  commaOrSpaceSeparated\n} from './util/types.js'\nimport {create} from './util/create.js'\nimport {caseSensitiveTransform} from './util/case-sensitive-transform.js'\n\nexport const svg = create({\n  space: 'svg',\n  attributes: {\n    accentHeight: 'accent-height',\n    alignmentBaseline: 'alignment-baseline',\n    arabicForm: 'arabic-form',\n    baselineShift: 'baseline-shift',\n    capHeight: 'cap-height',\n    className: 'class',\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    crossOrigin: 'crossorigin',\n    dataType: 'datatype',\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    hrefLang: 'hreflang',\n    horizAdvX: 'horiz-adv-x',\n    horizOriginX: 'horiz-origin-x',\n    horizOriginY: 'horiz-origin-y',\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    navDown: 'nav-down',\n    navDownLeft: 'nav-down-left',\n    navDownRight: 'nav-down-right',\n    navLeft: 'nav-left',\n    navNext: 'nav-next',\n    navPrev: 'nav-prev',\n    navRight: 'nav-right',\n    navUp: 'nav-up',\n    navUpLeft: 'nav-up-left',\n    navUpRight: 'nav-up-right',\n    onAbort: 'onabort',\n    onActivate: 'onactivate',\n    onAfterPrint: 'onafterprint',\n    onBeforePrint: 'onbeforeprint',\n    onBegin: 'onbegin',\n    onCancel: 'oncancel',\n    onCanPlay: 'oncanplay',\n    onCanPlayThrough: 'oncanplaythrough',\n    onChange: 'onchange',\n    onClick: 'onclick',\n    onClose: 'onclose',\n    onCopy: 'oncopy',\n    onCueChange: 'oncuechange',\n    onCut: 'oncut',\n    onDblClick: 'ondblclick',\n    onDrag: 'ondrag',\n    onDragEnd: 'ondragend',\n    onDragEnter: 'ondragenter',\n    onDragExit: 'ondragexit',\n    onDragLeave: 'ondragleave',\n    onDragOver: 'ondragover',\n    onDragStart: 'ondragstart',\n    onDrop: 'ondrop',\n    onDurationChange: 'ondurationchange',\n    onEmptied: 'onemptied',\n    onEnd: 'onend',\n    onEnded: 'onended',\n    onError: 'onerror',\n    onFocus: 'onfocus',\n    onFocusIn: 'onfocusin',\n    onFocusOut: 'onfocusout',\n    onHashChange: 'onhashchange',\n    onInput: 'oninput',\n    onInvalid: 'oninvalid',\n    onKeyDown: 'onkeydown',\n    onKeyPress: 'onkeypress',\n    onKeyUp: 'onkeyup',\n    onLoad: 'onload',\n    onLoadedData: 'onloadeddata',\n    onLoadedMetadata: 'onloadedmetadata',\n    onLoadStart: 'onloadstart',\n    onMessage: 'onmessage',\n    onMouseDown: 'onmousedown',\n    onMouseEnter: 'onmouseenter',\n    onMouseLeave: 'onmouseleave',\n    onMouseMove: 'onmousemove',\n    onMouseOut: 'onmouseout',\n    onMouseOver: 'onmouseover',\n    onMouseUp: 'onmouseup',\n    onMouseWheel: 'onmousewheel',\n    onOffline: 'onoffline',\n    onOnline: 'ononline',\n    onPageHide: 'onpagehide',\n    onPageShow: 'onpageshow',\n    onPaste: 'onpaste',\n    onPause: 'onpause',\n    onPlay: 'onplay',\n    onPlaying: 'onplaying',\n    onPopState: 'onpopstate',\n    onProgress: 'onprogress',\n    onRateChange: 'onratechange',\n    onRepeat: 'onrepeat',\n    onReset: 'onreset',\n    onResize: 'onresize',\n    onScroll: 'onscroll',\n    onSeeked: 'onseeked',\n    onSeeking: 'onseeking',\n    onSelect: 'onselect',\n    onShow: 'onshow',\n    onStalled: 'onstalled',\n    onStorage: 'onstorage',\n    onSubmit: 'onsubmit',\n    onSuspend: 'onsuspend',\n    onTimeUpdate: 'ontimeupdate',\n    onToggle: 'ontoggle',\n    onUnload: 'onunload',\n    onVolumeChange: 'onvolumechange',\n    onWaiting: 'onwaiting',\n    onZoom: 'onzoom',\n    overlinePosition: 'overline-position',\n    overlineThickness: 'overline-thickness',\n    paintOrder: 'paint-order',\n    panose1: 'panose-1',\n    pointerEvents: 'pointer-events',\n    referrerPolicy: 'referrerpolicy',\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    tabIndex: 'tabindex',\n    textAnchor: 'text-anchor',\n    textDecoration: 'text-decoration',\n    textRendering: 'text-rendering',\n    transformOrigin: 'transform-origin',\n    typeOf: 'typeof',\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    xHeight: 'x-height',\n    // These were camelcased in Tiny. Now lowercased in SVG 2\n    playbackOrder: 'playbackorder',\n    timelineBegin: 'timelinebegin'\n  },\n  transform: caseSensitiveTransform,\n  properties: {\n    about: commaOrSpaceSeparated,\n    accentHeight: number,\n    accumulate: null,\n    additive: null,\n    alignmentBaseline: null,\n    alphabetic: number,\n    amplitude: number,\n    arabicForm: null,\n    ascent: number,\n    attributeName: null,\n    attributeType: null,\n    azimuth: number,\n    bandwidth: null,\n    baselineShift: null,\n    baseFrequency: null,\n    baseProfile: null,\n    bbox: null,\n    begin: null,\n    bias: number,\n    by: null,\n    calcMode: null,\n    capHeight: number,\n    className: spaceSeparated,\n    clip: null,\n    clipPath: null,\n    clipPathUnits: null,\n    clipRule: null,\n    color: null,\n    colorInterpolation: null,\n    colorInterpolationFilters: null,\n    colorProfile: null,\n    colorRendering: null,\n    content: null,\n    contentScriptType: null,\n    contentStyleType: null,\n    crossOrigin: null,\n    cursor: null,\n    cx: null,\n    cy: null,\n    d: null,\n    dataType: null,\n    defaultAction: null,\n    descent: number,\n    diffuseConstant: number,\n    direction: null,\n    display: null,\n    dur: null,\n    divisor: number,\n    dominantBaseline: null,\n    download: boolean,\n    dx: null,\n    dy: null,\n    edgeMode: null,\n    editable: null,\n    elevation: number,\n    enableBackground: null,\n    end: null,\n    event: null,\n    exponent: number,\n    externalResourcesRequired: null,\n    fill: null,\n    fillOpacity: number,\n    fillRule: null,\n    filter: null,\n    filterRes: null,\n    filterUnits: null,\n    floodColor: null,\n    floodOpacity: null,\n    focusable: null,\n    focusHighlight: null,\n    fontFamily: null,\n    fontSize: null,\n    fontSizeAdjust: null,\n    fontStretch: null,\n    fontStyle: null,\n    fontVariant: null,\n    fontWeight: null,\n    format: null,\n    fr: null,\n    from: null,\n    fx: null,\n    fy: null,\n    g1: commaSeparated,\n    g2: commaSeparated,\n    glyphName: commaSeparated,\n    glyphOrientationHorizontal: null,\n    glyphOrientationVertical: null,\n    glyphRef: null,\n    gradientTransform: null,\n    gradientUnits: null,\n    handler: null,\n    hanging: number,\n    hatchContentUnits: null,\n    hatchUnits: null,\n    height: null,\n    href: null,\n    hrefLang: null,\n    horizAdvX: number,\n    horizOriginX: number,\n    horizOriginY: number,\n    id: null,\n    ideographic: number,\n    imageRendering: null,\n    initialVisibility: null,\n    in: null,\n    in2: null,\n    intercept: number,\n    k: number,\n    k1: number,\n    k2: number,\n    k3: number,\n    k4: number,\n    kernelMatrix: commaOrSpaceSeparated,\n    kernelUnitLength: null,\n    keyPoints: null, // SEMI_COLON_SEPARATED\n    keySplines: null, // SEMI_COLON_SEPARATED\n    keyTimes: null, // SEMI_COLON_SEPARATED\n    kerning: null,\n    lang: null,\n    lengthAdjust: null,\n    letterSpacing: null,\n    lightingColor: null,\n    limitingConeAngle: number,\n    local: null,\n    markerEnd: null,\n    markerMid: null,\n    markerStart: null,\n    markerHeight: null,\n    markerUnits: null,\n    markerWidth: null,\n    mask: null,\n    maskContentUnits: null,\n    maskUnits: null,\n    mathematical: null,\n    max: null,\n    media: null,\n    mediaCharacterEncoding: null,\n    mediaContentEncodings: null,\n    mediaSize: number,\n    mediaTime: null,\n    method: null,\n    min: null,\n    mode: null,\n    name: null,\n    navDown: null,\n    navDownLeft: null,\n    navDownRight: null,\n    navLeft: null,\n    navNext: null,\n    navPrev: null,\n    navRight: null,\n    navUp: null,\n    navUpLeft: null,\n    navUpRight: null,\n    numOctaves: null,\n    observer: null,\n    offset: null,\n    onAbort: null,\n    onActivate: null,\n    onAfterPrint: null,\n    onBeforePrint: null,\n    onBegin: null,\n    onCancel: null,\n    onCanPlay: null,\n    onCanPlayThrough: null,\n    onChange: null,\n    onClick: null,\n    onClose: null,\n    onCopy: null,\n    onCueChange: null,\n    onCut: null,\n    onDblClick: null,\n    onDrag: null,\n    onDragEnd: null,\n    onDragEnter: null,\n    onDragExit: null,\n    onDragLeave: null,\n    onDragOver: null,\n    onDragStart: null,\n    onDrop: null,\n    onDurationChange: null,\n    onEmptied: null,\n    onEnd: null,\n    onEnded: null,\n    onError: null,\n    onFocus: null,\n    onFocusIn: null,\n    onFocusOut: null,\n    onHashChange: null,\n    onInput: null,\n    onInvalid: null,\n    onKeyDown: null,\n    onKeyPress: null,\n    onKeyUp: null,\n    onLoad: null,\n    onLoadedData: null,\n    onLoadedMetadata: null,\n    onLoadStart: null,\n    onMessage: null,\n    onMouseDown: null,\n    onMouseEnter: null,\n    onMouseLeave: null,\n    onMouseMove: null,\n    onMouseOut: null,\n    onMouseOver: null,\n    onMouseUp: null,\n    onMouseWheel: null,\n    onOffline: null,\n    onOnline: null,\n    onPageHide: null,\n    onPageShow: null,\n    onPaste: null,\n    onPause: null,\n    onPlay: null,\n    onPlaying: null,\n    onPopState: null,\n    onProgress: null,\n    onRateChange: null,\n    onRepeat: null,\n    onReset: null,\n    onResize: null,\n    onScroll: null,\n    onSeeked: null,\n    onSeeking: null,\n    onSelect: null,\n    onShow: null,\n    onStalled: null,\n    onStorage: null,\n    onSubmit: null,\n    onSuspend: null,\n    onTimeUpdate: null,\n    onToggle: null,\n    onUnload: null,\n    onVolumeChange: null,\n    onWaiting: null,\n    onZoom: null,\n    opacity: null,\n    operator: null,\n    order: null,\n    orient: null,\n    orientation: null,\n    origin: null,\n    overflow: null,\n    overlay: null,\n    overlinePosition: number,\n    overlineThickness: number,\n    paintOrder: null,\n    panose1: null,\n    path: null,\n    pathLength: number,\n    patternContentUnits: null,\n    patternTransform: null,\n    patternUnits: null,\n    phase: null,\n    ping: spaceSeparated,\n    pitch: null,\n    playbackOrder: null,\n    pointerEvents: null,\n    points: null,\n    pointsAtX: number,\n    pointsAtY: number,\n    pointsAtZ: number,\n    preserveAlpha: null,\n    preserveAspectRatio: null,\n    primitiveUnits: null,\n    propagate: null,\n    property: commaOrSpaceSeparated,\n    r: null,\n    radius: null,\n    referrerPolicy: null,\n    refX: null,\n    refY: null,\n    rel: commaOrSpaceSeparated,\n    rev: commaOrSpaceSeparated,\n    renderingIntent: null,\n    repeatCount: null,\n    repeatDur: null,\n    requiredExtensions: commaOrSpaceSeparated,\n    requiredFeatures: commaOrSpaceSeparated,\n    requiredFonts: commaOrSpaceSeparated,\n    requiredFormats: commaOrSpaceSeparated,\n    resource: null,\n    restart: null,\n    result: null,\n    rotate: null,\n    rx: null,\n    ry: null,\n    scale: null,\n    seed: null,\n    shapeRendering: null,\n    side: null,\n    slope: null,\n    snapshotTime: null,\n    specularConstant: number,\n    specularExponent: number,\n    spreadMethod: null,\n    spacing: null,\n    startOffset: null,\n    stdDeviation: null,\n    stemh: null,\n    stemv: null,\n    stitchTiles: null,\n    stopColor: null,\n    stopOpacity: null,\n    strikethroughPosition: number,\n    strikethroughThickness: number,\n    string: null,\n    stroke: null,\n    strokeDashArray: commaOrSpaceSeparated,\n    strokeDashOffset: null,\n    strokeLineCap: null,\n    strokeLineJoin: null,\n    strokeMiterLimit: number,\n    strokeOpacity: number,\n    strokeWidth: null,\n    style: null,\n    surfaceScale: number,\n    syncBehavior: null,\n    syncBehaviorDefault: null,\n    syncMaster: null,\n    syncTolerance: null,\n    syncToleranceDefault: null,\n    systemLanguage: commaOrSpaceSeparated,\n    tabIndex: number,\n    tableValues: null,\n    target: null,\n    targetX: number,\n    targetY: number,\n    textAnchor: null,\n    textDecoration: null,\n    textRendering: null,\n    textLength: null,\n    timelineBegin: null,\n    title: null,\n    transformBehavior: null,\n    type: null,\n    typeOf: commaOrSpaceSeparated,\n    to: null,\n    transform: null,\n    transformOrigin: null,\n    u1: null,\n    u2: null,\n    underlinePosition: number,\n    underlineThickness: number,\n    unicode: null,\n    unicodeBidi: null,\n    unicodeRange: null,\n    unitsPerEm: number,\n    values: null,\n    vAlphabetic: number,\n    vMathematical: number,\n    vectorEffect: null,\n    vHanging: number,\n    vIdeographic: number,\n    version: null,\n    vertAdvY: number,\n    vertOriginX: number,\n    vertOriginY: number,\n    viewBox: null,\n    viewTarget: null,\n    visibility: null,\n    width: null,\n    widths: null,\n    wordSpacing: null,\n    writingMode: null,\n    x: null,\n    x1: null,\n    x2: null,\n    xChannelSelector: null,\n    xHeight: number,\n    y: null,\n    y1: null,\n    y2: null,\n    yChannelSelector: null,\n    z: null,\n    zoomAndPan: null\n  }\n})\n","/**\n * @typedef {import('./util/schema.js').Schema} Schema\n */\n\nimport {normalize} from './normalize.js'\nimport {DefinedInfo} from './util/defined-info.js'\nimport {Info} from './util/info.js'\n\nconst valid = /^data[-\\w.:]+$/i\nconst dash = /-[a-z]/g\nconst cap = /[A-Z]/g\n\n/**\n * @param {Schema} schema\n * @param {string} value\n * @returns {Info}\n */\nexport function find(schema, value) {\n  const normal = normalize(value)\n  let prop = value\n  let Type = Info\n\n  if (normal in schema.normal) {\n    return schema.property[schema.normal[normal]]\n  }\n\n  if (normal.length > 4 && normal.slice(0, 4) === 'data' && valid.test(value)) {\n    // Attribute or property.\n    if (value.charAt(4) === '-') {\n      // Turn it into a property.\n      const rest = value.slice(5).replace(dash, camelcase)\n      prop = 'data' + rest.charAt(0).toUpperCase() + rest.slice(1)\n    } else {\n      // Turn it into an attribute.\n      const rest = value.slice(4)\n\n      if (!dash.test(rest)) {\n        let dashes = rest.replace(cap, kebab)\n\n        if (dashes.charAt(0) !== '-') {\n          dashes = '-' + dashes\n        }\n\n        value = 'data' + dashes\n      }\n    }\n\n    Type = DefinedInfo\n  }\n\n  return new Type(prop, value)\n}\n\n/**\n * @param {string} $0\n * @returns {string}\n */\nfunction kebab($0) {\n  return '-' + $0.toLowerCase()\n}\n\n/**\n * @param {string} $0\n * @returns {string}\n */\nfunction camelcase($0) {\n  return $0.charAt(1).toUpperCase()\n}\n","/**\n * @typedef {import('./lib/util/info.js').Info} Info\n * @typedef {import('./lib/util/schema.js').Schema} Schema\n */\n\nimport {merge} from './lib/util/merge.js'\nimport {xlink} from './lib/xlink.js'\nimport {xml} from './lib/xml.js'\nimport {xmlns} from './lib/xmlns.js'\nimport {aria} from './lib/aria.js'\nimport {html as htmlBase} from './lib/html.js'\nimport {svg as svgBase} from './lib/svg.js'\n\nexport {find} from './lib/find.js'\nexport {hastToReact} from './lib/hast-to-react.js'\nexport {normalize} from './lib/normalize.js'\nexport const html = merge([xml, xlink, xmlns, aria, htmlBase], 'html')\nexport const svg = merge([xml, xlink, xmlns, aria, svgBase], 'svg')\n","/**\n * @typedef {import('hast').Comment} Comment\n * @typedef {import('hast').Doctype} Doctype\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Nodes} Nodes\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').RootContent} RootContent\n * @typedef {import('hast').Text} Text\n *\n * @typedef {import('parse5').DefaultTreeAdapterMap['document']} Parse5Document\n * @typedef {import('parse5').DefaultTreeAdapterMap['documentFragment']} Parse5Fragment\n * @typedef {import('parse5').DefaultTreeAdapterMap['element']} Parse5Element\n * @typedef {import('parse5').DefaultTreeAdapterMap['node']} Parse5Nodes\n * @typedef {import('parse5').DefaultTreeAdapterMap['documentType']} Parse5Doctype\n * @typedef {import('parse5').DefaultTreeAdapterMap['commentNode']} Parse5Comment\n * @typedef {import('parse5').DefaultTreeAdapterMap['textNode']} Parse5Text\n * @typedef {import('parse5').DefaultTreeAdapterMap['parentNode']} Parse5Parent\n * @typedef {import('parse5').Token.Attribute} Parse5Attribute\n *\n * @typedef {import('property-information').Schema} Schema\n */\n\n/**\n * @typedef Options\n *   Configuration.\n * @property {Space | null | undefined} [space='html']\n *   Which space the document is in (default: `'html'`).\n *\n *   When an `<svg>` element is found in the HTML space, this package already\n *   automatically switches to and from the SVG space when entering and exiting\n *   it.\n *\n * @typedef {Exclude<Parse5Nodes, Parse5Document | Parse5Fragment>} Parse5Content\n *\n * @typedef {'html' | 'svg'} Space\n */\n\nimport {stringify as commas} from 'comma-separated-tokens'\nimport {ok as assert} from 'devlop'\nimport {find, html, svg} from 'property-information'\nimport {stringify as spaces} from 'space-separated-tokens'\nimport {webNamespaces} from 'web-namespaces'\nimport {zwitch} from 'zwitch'\n\n/** @type {Options} */\nconst emptyOptions = {}\n\nconst own = {}.hasOwnProperty\n\nconst one = zwitch('type', {handlers: {root, element, text, comment, doctype}})\n\n/**\n * Transform a hast tree to a `parse5` AST.\n *\n * @param {Nodes} tree\n *   Tree to transform.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {Parse5Nodes}\n *   `parse5` node.\n */\nexport function toParse5(tree, options) {\n  const settings = options || emptyOptions\n  const space = settings.space\n  return one(tree, space === 'svg' ? svg : html)\n}\n\n/**\n * @param {Root} node\n *   Node (hast) to transform.\n * @param {Schema} schema\n *   Current schema.\n * @returns {Parse5Document}\n *   Parse5 node.\n */\nfunction root(node, schema) {\n  /** @type {Parse5Document} */\n  const result = {\n    nodeName: '#document',\n    // @ts-expect-error: `parse5` uses enums, which are actually strings.\n    mode: (node.data || {}).quirksMode ? 'quirks' : 'no-quirks',\n    childNodes: []\n  }\n  result.childNodes = all(node.children, result, schema)\n  patch(node, result)\n  return result\n}\n\n/**\n * @param {Root} node\n *   Node (hast) to transform.\n * @param {Schema} schema\n *   Current schema.\n * @returns {Parse5Fragment}\n *   Parse5 node.\n */\nfunction fragment(node, schema) {\n  /** @type {Parse5Fragment} */\n  const result = {nodeName: '#document-fragment', childNodes: []}\n  result.childNodes = all(node.children, result, schema)\n  patch(node, result)\n  return result\n}\n\n/**\n * @param {Doctype} node\n *   Node (hast) to transform.\n * @returns {Parse5Doctype}\n *   Parse5 node.\n */\nfunction doctype(node) {\n  /** @type {Parse5Doctype} */\n  const result = {\n    nodeName: '#documentType',\n    name: 'html',\n    publicId: '',\n    systemId: '',\n    parentNode: null\n  }\n\n  patch(node, result)\n  return result\n}\n\n/**\n * @param {Text} node\n *   Node (hast) to transform.\n * @returns {Parse5Text}\n *   Parse5 node.\n */\nfunction text(node) {\n  /** @type {Parse5Text} */\n  const result = {\n    nodeName: '#text',\n    value: node.value,\n    parentNode: null\n  }\n  patch(node, result)\n  return result\n}\n\n/**\n * @param {Comment} node\n *   Node (hast) to transform.\n * @returns {Parse5Comment}\n *   Parse5 node.\n */\nfunction comment(node) {\n  /** @type {Parse5Comment} */\n  const result = {\n    nodeName: '#comment',\n    data: node.value,\n    parentNode: null\n  }\n\n  patch(node, result)\n\n  return result\n}\n\n/**\n * @param {Element} node\n *   Node (hast) to transform.\n * @param {Schema} schema\n *   Current schema.\n * @returns {Parse5Element}\n *   Parse5 node.\n */\nfunction element(node, schema) {\n  const parentSchema = schema\n  let currentSchema = parentSchema\n\n  if (\n    node.type === 'element' &&\n    node.tagName.toLowerCase() === 'svg' &&\n    parentSchema.space === 'html'\n  ) {\n    currentSchema = svg\n  }\n\n  /** @type {Array<Parse5Attribute>} */\n  const attrs = []\n  /** @type {string} */\n  let prop\n\n  if (node.properties) {\n    for (prop in node.properties) {\n      if (prop !== 'children' && own.call(node.properties, prop)) {\n        const result = createProperty(\n          currentSchema,\n          prop,\n          node.properties[prop]\n        )\n\n        if (result) {\n          attrs.push(result)\n        }\n      }\n    }\n  }\n\n  const space = currentSchema.space\n  // `html` and `svg` both have a space.\n  assert(space)\n\n  /** @type {Parse5Element} */\n  const result = {\n    nodeName: node.tagName,\n    tagName: node.tagName,\n    attrs,\n    // @ts-expect-error: `parse5` types are wrong.\n    namespaceURI: webNamespaces[space],\n    childNodes: [],\n    parentNode: null\n  }\n  result.childNodes = all(node.children, result, currentSchema)\n  patch(node, result)\n\n  if (node.tagName === 'template' && node.content) {\n    // @ts-expect-error: `parse5` types are wrong.\n    result.content = fragment(node.content, currentSchema)\n  }\n\n  return result\n}\n\n/**\n * Handle a property.\n *\n * @param {Schema} schema\n *   Current schema.\n * @param {string} prop\n *   Key.\n * @param {Array<number | string> | boolean | number | string | null | undefined} value\n *   hast property value.\n * @returns {Parse5Attribute | undefined}\n *   Field for runtime, optional.\n */\nfunction createProperty(schema, prop, value) {\n  const info = find(schema, prop)\n\n  // Ignore nullish and `NaN` values.\n  if (\n    value === false ||\n    value === null ||\n    value === undefined ||\n    (typeof value === 'number' && Number.isNaN(value)) ||\n    (!value && info.boolean)\n  ) {\n    return\n  }\n\n  if (Array.isArray(value)) {\n    // Accept `array`.\n    // Most props are space-separated.\n    value = info.commaSeparated ? commas(value) : spaces(value)\n  }\n\n  /** @type {Parse5Attribute} */\n  const attribute = {\n    name: info.attribute,\n    value: value === true ? '' : String(value)\n  }\n\n  if (info.space && info.space !== 'html' && info.space !== 'svg') {\n    const index = attribute.name.indexOf(':')\n\n    if (index < 0) {\n      attribute.prefix = ''\n    } else {\n      attribute.name = attribute.name.slice(index + 1)\n      attribute.prefix = info.attribute.slice(0, index)\n    }\n\n    attribute.namespace = webNamespaces[info.space]\n  }\n\n  return attribute\n}\n\n/**\n * Transform all hast nodes.\n *\n * @param {Array<RootContent>} children\n *   List of children.\n * @param {Parse5Parent} parentNode\n *   `parse5` parent node.\n * @param {Schema} schema\n *   Current schema.\n * @returns {Array<Parse5Content>}\n *   Transformed children.\n */\nfunction all(children, parentNode, schema) {\n  let index = -1\n  /** @type {Array<Parse5Content>} */\n  const results = []\n\n  if (children) {\n    while (++index < children.length) {\n      /** @type {Parse5Content} */\n      const child = one(children[index], schema)\n\n      child.parentNode = parentNode\n\n      results.push(child)\n    }\n  }\n\n  return results\n}\n\n/**\n * Add position info from `from` to `to`.\n *\n * @param {Nodes} from\n *   hast node.\n * @param {Parse5Nodes} to\n *   `parse5` node.\n * @returns {undefined}\n *   Nothing.\n */\nfunction patch(from, to) {\n  const position = from.position\n\n  if (position && position.start && position.end) {\n    assert(typeof position.start.offset === 'number')\n    assert(typeof position.end.offset === 'number')\n\n    to.sourceCodeLocation = {\n      startLine: position.start.line,\n      startCol: position.start.column,\n      startOffset: position.start.offset,\n      endLine: position.end.line,\n      endCol: position.end.column,\n      endOffset: position.end.offset\n    }\n  }\n}\n","/**\n * List of HTML void tag names.\n *\n * @type {Array<string>}\n */\nexport const htmlVoidElements = [\n  'area',\n  'base',\n  'basefont',\n  'bgsound',\n  'br',\n  'col',\n  'command',\n  'embed',\n  'frame',\n  'hr',\n  'image',\n  'img',\n  'input',\n  'keygen',\n  'link',\n  'meta',\n  'param',\n  'source',\n  'track',\n  'wbr'\n]\n","const UNDEFINED_CODE_POINTS = new Set([\n    65534, 65535, 131070, 131071, 196606, 196607, 262142, 262143, 327678, 327679, 393214,\n    393215, 458750, 458751, 524286, 524287, 589822, 589823, 655358, 655359, 720894,\n    720895, 786430, 786431, 851966, 851967, 917502, 917503, 983038, 983039, 1048574,\n    1048575, 1114110, 1114111,\n]);\nexport const REPLACEMENT_CHARACTER = '\\uFFFD';\nexport var CODE_POINTS;\n(function (CODE_POINTS) {\n    CODE_POINTS[CODE_POINTS[\"EOF\"] = -1] = \"EOF\";\n    CODE_POINTS[CODE_POINTS[\"NULL\"] = 0] = \"NULL\";\n    CODE_POINTS[CODE_POINTS[\"TABULATION\"] = 9] = \"TABULATION\";\n    CODE_POINTS[CODE_POINTS[\"CARRIAGE_RETURN\"] = 13] = \"CARRIAGE_RETURN\";\n    CODE_POINTS[CODE_POINTS[\"LINE_FEED\"] = 10] = \"LINE_FEED\";\n    CODE_POINTS[CODE_POINTS[\"FORM_FEED\"] = 12] = \"FORM_FEED\";\n    CODE_POINTS[CODE_POINTS[\"SPACE\"] = 32] = \"SPACE\";\n    CODE_POINTS[CODE_POINTS[\"EXCLAMATION_MARK\"] = 33] = \"EXCLAMATION_MARK\";\n    CODE_POINTS[CODE_POINTS[\"QUOTATION_MARK\"] = 34] = \"QUOTATION_MARK\";\n    CODE_POINTS[CODE_POINTS[\"AMPERSAND\"] = 38] = \"AMPERSAND\";\n    CODE_POINTS[CODE_POINTS[\"APOSTROPHE\"] = 39] = \"APOSTROPHE\";\n    CODE_POINTS[CODE_POINTS[\"HYPHEN_MINUS\"] = 45] = \"HYPHEN_MINUS\";\n    CODE_POINTS[CODE_POINTS[\"SOLIDUS\"] = 47] = \"SOLIDUS\";\n    CODE_POINTS[CODE_POINTS[\"DIGIT_0\"] = 48] = \"DIGIT_0\";\n    CODE_POINTS[CODE_POINTS[\"DIGIT_9\"] = 57] = \"DIGIT_9\";\n    CODE_POINTS[CODE_POINTS[\"SEMICOLON\"] = 59] = \"SEMICOLON\";\n    CODE_POINTS[CODE_POINTS[\"LESS_THAN_SIGN\"] = 60] = \"LESS_THAN_SIGN\";\n    CODE_POINTS[CODE_POINTS[\"EQUALS_SIGN\"] = 61] = \"EQUALS_SIGN\";\n    CODE_POINTS[CODE_POINTS[\"GREATER_THAN_SIGN\"] = 62] = \"GREATER_THAN_SIGN\";\n    CODE_POINTS[CODE_POINTS[\"QUESTION_MARK\"] = 63] = \"QUESTION_MARK\";\n    CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_A\"] = 65] = \"LATIN_CAPITAL_A\";\n    CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_Z\"] = 90] = \"LATIN_CAPITAL_Z\";\n    CODE_POINTS[CODE_POINTS[\"RIGHT_SQUARE_BRACKET\"] = 93] = \"RIGHT_SQUARE_BRACKET\";\n    CODE_POINTS[CODE_POINTS[\"GRAVE_ACCENT\"] = 96] = \"GRAVE_ACCENT\";\n    CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_A\"] = 97] = \"LATIN_SMALL_A\";\n    CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_Z\"] = 122] = \"LATIN_SMALL_Z\";\n})(CODE_POINTS || (CODE_POINTS = {}));\nexport const SEQUENCES = {\n    DASH_DASH: '--',\n    CDATA_START: '[CDATA[',\n    DOCTYPE: 'doctype',\n    SCRIPT: 'script',\n    PUBLIC: 'public',\n    SYSTEM: 'system',\n};\n//Surrogates\nexport function isSurrogate(cp) {\n    return cp >= 55296 && cp <= 57343;\n}\nexport function isSurrogatePair(cp) {\n    return cp >= 56320 && cp <= 57343;\n}\nexport function getSurrogatePairCodePoint(cp1, cp2) {\n    return (cp1 - 55296) * 1024 + 9216 + cp2;\n}\n//NOTE: excluding NULL and ASCII whitespace\nexport function isControlCodePoint(cp) {\n    return ((cp !== 0x20 && cp !== 0x0a && cp !== 0x0d && cp !== 0x09 && cp !== 0x0c && cp >= 0x01 && cp <= 0x1f) ||\n        (cp >= 0x7f && cp <= 0x9f));\n}\nexport function isUndefinedCodePoint(cp) {\n    return (cp >= 64976 && cp <= 65007) || UNDEFINED_CODE_POINTS.has(cp);\n}\n","export var ERR;\n(function (ERR) {\n    ERR[\"controlCharacterInInputStream\"] = \"control-character-in-input-stream\";\n    ERR[\"noncharacterInInputStream\"] = \"noncharacter-in-input-stream\";\n    ERR[\"surrogateInInputStream\"] = \"surrogate-in-input-stream\";\n    ERR[\"nonVoidHtmlElementStartTagWithTrailingSolidus\"] = \"non-void-html-element-start-tag-with-trailing-solidus\";\n    ERR[\"endTagWithAttributes\"] = \"end-tag-with-attributes\";\n    ERR[\"endTagWithTrailingSolidus\"] = \"end-tag-with-trailing-solidus\";\n    ERR[\"unexpectedSolidusInTag\"] = \"unexpected-solidus-in-tag\";\n    ERR[\"unexpectedNullCharacter\"] = \"unexpected-null-character\";\n    ERR[\"unexpectedQuestionMarkInsteadOfTagName\"] = \"unexpected-question-mark-instead-of-tag-name\";\n    ERR[\"invalidFirstCharacterOfTagName\"] = \"invalid-first-character-of-tag-name\";\n    ERR[\"unexpectedEqualsSignBeforeAttributeName\"] = \"unexpected-equals-sign-before-attribute-name\";\n    ERR[\"missingEndTagName\"] = \"missing-end-tag-name\";\n    ERR[\"unexpectedCharacterInAttributeName\"] = \"unexpected-character-in-attribute-name\";\n    ERR[\"unknownNamedCharacterReference\"] = \"unknown-named-character-reference\";\n    ERR[\"missingSemicolonAfterCharacterReference\"] = \"missing-semicolon-after-character-reference\";\n    ERR[\"unexpectedCharacterAfterDoctypeSystemIdentifier\"] = \"unexpected-character-after-doctype-system-identifier\";\n    ERR[\"unexpectedCharacterInUnquotedAttributeValue\"] = \"unexpected-character-in-unquoted-attribute-value\";\n    ERR[\"eofBeforeTagName\"] = \"eof-before-tag-name\";\n    ERR[\"eofInTag\"] = \"eof-in-tag\";\n    ERR[\"missingAttributeValue\"] = \"missing-attribute-value\";\n    ERR[\"missingWhitespaceBetweenAttributes\"] = \"missing-whitespace-between-attributes\";\n    ERR[\"missingWhitespaceAfterDoctypePublicKeyword\"] = \"missing-whitespace-after-doctype-public-keyword\";\n    ERR[\"missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers\"] = \"missing-whitespace-between-doctype-public-and-system-identifiers\";\n    ERR[\"missingWhitespaceAfterDoctypeSystemKeyword\"] = \"missing-whitespace-after-doctype-system-keyword\";\n    ERR[\"missingQuoteBeforeDoctypePublicIdentifier\"] = \"missing-quote-before-doctype-public-identifier\";\n    ERR[\"missingQuoteBeforeDoctypeSystemIdentifier\"] = \"missing-quote-before-doctype-system-identifier\";\n    ERR[\"missingDoctypePublicIdentifier\"] = \"missing-doctype-public-identifier\";\n    ERR[\"missingDoctypeSystemIdentifier\"] = \"missing-doctype-system-identifier\";\n    ERR[\"abruptDoctypePublicIdentifier\"] = \"abrupt-doctype-public-identifier\";\n    ERR[\"abruptDoctypeSystemIdentifier\"] = \"abrupt-doctype-system-identifier\";\n    ERR[\"cdataInHtmlContent\"] = \"cdata-in-html-content\";\n    ERR[\"incorrectlyOpenedComment\"] = \"incorrectly-opened-comment\";\n    ERR[\"eofInScriptHtmlCommentLikeText\"] = \"eof-in-script-html-comment-like-text\";\n    ERR[\"eofInDoctype\"] = \"eof-in-doctype\";\n    ERR[\"nestedComment\"] = \"nested-comment\";\n    ERR[\"abruptClosingOfEmptyComment\"] = \"abrupt-closing-of-empty-comment\";\n    ERR[\"eofInComment\"] = \"eof-in-comment\";\n    ERR[\"incorrectlyClosedComment\"] = \"incorrectly-closed-comment\";\n    ERR[\"eofInCdata\"] = \"eof-in-cdata\";\n    ERR[\"absenceOfDigitsInNumericCharacterReference\"] = \"absence-of-digits-in-numeric-character-reference\";\n    ERR[\"nullCharacterReference\"] = \"null-character-reference\";\n    ERR[\"surrogateCharacterReference\"] = \"surrogate-character-reference\";\n    ERR[\"characterReferenceOutsideUnicodeRange\"] = \"character-reference-outside-unicode-range\";\n    ERR[\"controlCharacterReference\"] = \"control-character-reference\";\n    ERR[\"noncharacterCharacterReference\"] = \"noncharacter-character-reference\";\n    ERR[\"missingWhitespaceBeforeDoctypeName\"] = \"missing-whitespace-before-doctype-name\";\n    ERR[\"missingDoctypeName\"] = \"missing-doctype-name\";\n    ERR[\"invalidCharacterSequenceAfterDoctypeName\"] = \"invalid-character-sequence-after-doctype-name\";\n    ERR[\"duplicateAttribute\"] = \"duplicate-attribute\";\n    ERR[\"nonConformingDoctype\"] = \"non-conforming-doctype\";\n    ERR[\"missingDoctype\"] = \"missing-doctype\";\n    ERR[\"misplacedDoctype\"] = \"misplaced-doctype\";\n    ERR[\"endTagWithoutMatchingOpenElement\"] = \"end-tag-without-matching-open-element\";\n    ERR[\"closingOfElementWithOpenChildElements\"] = \"closing-of-element-with-open-child-elements\";\n    ERR[\"disallowedContentInNoscriptInHead\"] = \"disallowed-content-in-noscript-in-head\";\n    ERR[\"openElementsLeftAfterEof\"] = \"open-elements-left-after-eof\";\n    ERR[\"abandonedHeadElementChild\"] = \"abandoned-head-element-child\";\n    ERR[\"misplacedStartTagForHeadElement\"] = \"misplaced-start-tag-for-head-element\";\n    ERR[\"nestedNoscriptInHead\"] = \"nested-noscript-in-head\";\n    ERR[\"eofInElementThatCanContainOnlyText\"] = \"eof-in-element-that-can-contain-only-text\";\n})(ERR || (ERR = {}));\n","import { CODE_POINTS as $, getSurrogatePairCodePoint, isControlCodePoint, isSurrogate, isSurrogatePair, isUndefinedCodePoint, } from '../common/unicode.js';\nimport { ERR } from '../common/error-codes.js';\n//Const\nconst DEFAULT_BUFFER_WATERLINE = 1 << 16;\n//Preprocessor\n//NOTE: HTML input preprocessing\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#preprocessing-the-input-stream)\nexport class Preprocessor {\n    constructor(handler) {\n        this.handler = handler;\n        this.html = '';\n        this.pos = -1;\n        // NOTE: Initial `lastGapPos` is -2, to ensure `col` on initialisation is 0\n        this.lastGapPos = -2;\n        this.gapStack = [];\n        this.skipNextNewLine = false;\n        this.lastChunkWritten = false;\n        this.endOfChunkHit = false;\n        this.bufferWaterline = DEFAULT_BUFFER_WATERLINE;\n        this.isEol = false;\n        this.lineStartPos = 0;\n        this.droppedBufferSize = 0;\n        this.line = 1;\n        //NOTE: avoid reporting errors twice on advance/retreat\n        this.lastErrOffset = -1;\n    }\n    /** The column on the current line. If we just saw a gap (eg. a surrogate pair), return the index before. */\n    get col() {\n        return this.pos - this.lineStartPos + Number(this.lastGapPos !== this.pos);\n    }\n    get offset() {\n        return this.droppedBufferSize + this.pos;\n    }\n    getError(code, cpOffset) {\n        const { line, col, offset } = this;\n        const startCol = col + cpOffset;\n        const startOffset = offset + cpOffset;\n        return {\n            code,\n            startLine: line,\n            endLine: line,\n            startCol,\n            endCol: startCol,\n            startOffset,\n            endOffset: startOffset,\n        };\n    }\n    _err(code) {\n        if (this.handler.onParseError && this.lastErrOffset !== this.offset) {\n            this.lastErrOffset = this.offset;\n            this.handler.onParseError(this.getError(code, 0));\n        }\n    }\n    _addGap() {\n        this.gapStack.push(this.lastGapPos);\n        this.lastGapPos = this.pos;\n    }\n    _processSurrogate(cp) {\n        //NOTE: try to peek a surrogate pair\n        if (this.pos !== this.html.length - 1) {\n            const nextCp = this.html.charCodeAt(this.pos + 1);\n            if (isSurrogatePair(nextCp)) {\n                //NOTE: we have a surrogate pair. Peek pair character and recalculate code point.\n                this.pos++;\n                //NOTE: add a gap that should be avoided during retreat\n                this._addGap();\n                return getSurrogatePairCodePoint(cp, nextCp);\n            }\n        }\n        //NOTE: we are at the end of a chunk, therefore we can't infer the surrogate pair yet.\n        else if (!this.lastChunkWritten) {\n            this.endOfChunkHit = true;\n            return $.EOF;\n        }\n        //NOTE: isolated surrogate\n        this._err(ERR.surrogateInInputStream);\n        return cp;\n    }\n    willDropParsedChunk() {\n        return this.pos > this.bufferWaterline;\n    }\n    dropParsedChunk() {\n        if (this.willDropParsedChunk()) {\n            this.html = this.html.substring(this.pos);\n            this.lineStartPos -= this.pos;\n            this.droppedBufferSize += this.pos;\n            this.pos = 0;\n            this.lastGapPos = -2;\n            this.gapStack.length = 0;\n        }\n    }\n    write(chunk, isLastChunk) {\n        if (this.html.length > 0) {\n            this.html += chunk;\n        }\n        else {\n            this.html = chunk;\n        }\n        this.endOfChunkHit = false;\n        this.lastChunkWritten = isLastChunk;\n    }\n    insertHtmlAtCurrentPos(chunk) {\n        this.html = this.html.substring(0, this.pos + 1) + chunk + this.html.substring(this.pos + 1);\n        this.endOfChunkHit = false;\n    }\n    startsWith(pattern, caseSensitive) {\n        // Check if our buffer has enough characters\n        if (this.pos + pattern.length > this.html.length) {\n            this.endOfChunkHit = !this.lastChunkWritten;\n            return false;\n        }\n        if (caseSensitive) {\n            return this.html.startsWith(pattern, this.pos);\n        }\n        for (let i = 0; i < pattern.length; i++) {\n            const cp = this.html.charCodeAt(this.pos + i) | 0x20;\n            if (cp !== pattern.charCodeAt(i)) {\n                return false;\n            }\n        }\n        return true;\n    }\n    peek(offset) {\n        const pos = this.pos + offset;\n        if (pos >= this.html.length) {\n            this.endOfChunkHit = !this.lastChunkWritten;\n            return $.EOF;\n        }\n        const code = this.html.charCodeAt(pos);\n        return code === $.CARRIAGE_RETURN ? $.LINE_FEED : code;\n    }\n    advance() {\n        this.pos++;\n        //NOTE: LF should be in the last column of the line\n        if (this.isEol) {\n            this.isEol = false;\n            this.line++;\n            this.lineStartPos = this.pos;\n        }\n        if (this.pos >= this.html.length) {\n            this.endOfChunkHit = !this.lastChunkWritten;\n            return $.EOF;\n        }\n        let cp = this.html.charCodeAt(this.pos);\n        //NOTE: all U+000D CARRIAGE RETURN (CR) characters must be converted to U+000A LINE FEED (LF) characters\n        if (cp === $.CARRIAGE_RETURN) {\n            this.isEol = true;\n            this.skipNextNewLine = true;\n            return $.LINE_FEED;\n        }\n        //NOTE: any U+000A LINE FEED (LF) characters that immediately follow a U+000D CARRIAGE RETURN (CR) character\n        //must be ignored.\n        if (cp === $.LINE_FEED) {\n            this.isEol = true;\n            if (this.skipNextNewLine) {\n                // `line` will be bumped again in the recursive call.\n                this.line--;\n                this.skipNextNewLine = false;\n                this._addGap();\n                return this.advance();\n            }\n        }\n        this.skipNextNewLine = false;\n        if (isSurrogate(cp)) {\n            cp = this._processSurrogate(cp);\n        }\n        //OPTIMIZATION: first check if code point is in the common allowed\n        //range (ASCII alphanumeric, whitespaces, big chunk of BMP)\n        //before going into detailed performance cost validation.\n        const isCommonValidRange = this.handler.onParseError === null ||\n            (cp > 0x1f && cp < 0x7f) ||\n            cp === $.LINE_FEED ||\n            cp === $.CARRIAGE_RETURN ||\n            (cp > 0x9f && cp < 64976);\n        if (!isCommonValidRange) {\n            this._checkForProblematicCharacters(cp);\n        }\n        return cp;\n    }\n    _checkForProblematicCharacters(cp) {\n        if (isControlCodePoint(cp)) {\n            this._err(ERR.controlCharacterInInputStream);\n        }\n        else if (isUndefinedCodePoint(cp)) {\n            this._err(ERR.noncharacterInInputStream);\n        }\n    }\n    retreat(count) {\n        this.pos -= count;\n        while (this.pos < this.lastGapPos) {\n            this.lastGapPos = this.gapStack.pop();\n            this.pos--;\n        }\n        this.isEol = false;\n    }\n}\n","export var TokenType;\n(function (TokenType) {\n    TokenType[TokenType[\"CHARACTER\"] = 0] = \"CHARACTER\";\n    TokenType[TokenType[\"NULL_CHARACTER\"] = 1] = \"NULL_CHARACTER\";\n    TokenType[TokenType[\"WHITESPACE_CHARACTER\"] = 2] = \"WHITESPACE_CHARACTER\";\n    TokenType[TokenType[\"START_TAG\"] = 3] = \"START_TAG\";\n    TokenType[TokenType[\"END_TAG\"] = 4] = \"END_TAG\";\n    TokenType[TokenType[\"COMMENT\"] = 5] = \"COMMENT\";\n    TokenType[TokenType[\"DOCTYPE\"] = 6] = \"DOCTYPE\";\n    TokenType[TokenType[\"EOF\"] = 7] = \"EOF\";\n    TokenType[TokenType[\"HIBERNATION\"] = 8] = \"HIBERNATION\";\n})(TokenType || (TokenType = {}));\nexport function getTokenAttr(token, attrName) {\n    for (let i = token.attrs.length - 1; i >= 0; i--) {\n        if (token.attrs[i].name === attrName) {\n            return token.attrs[i].value;\n        }\n    }\n    return null;\n}\n","// Generated using scripts/write-decode-map.ts\nexport const htmlDecodeTree = /* #__PURE__ */ new Uint16Array(\n// prettier-ignore\n/* #__PURE__ */ \"\\u1d41<\\xd5\\u0131\\u028a\\u049d\\u057b\\u05d0\\u0675\\u06de\\u07a2\\u07d6\\u080f\\u0a4a\\u0a91\\u0da1\\u0e6d\\u0f09\\u0f26\\u10ca\\u1228\\u12e1\\u1415\\u149d\\u14c3\\u14df\\u1525\\0\\0\\0\\0\\0\\0\\u156b\\u16cd\\u198d\\u1c12\\u1ddd\\u1f7e\\u2060\\u21b0\\u228d\\u23c0\\u23fb\\u2442\\u2824\\u2912\\u2d08\\u2e48\\u2fce\\u3016\\u32ba\\u3639\\u37ac\\u38fe\\u3a28\\u3a71\\u3ae0\\u3b2e\\u0800EMabcfglmnoprstu\\\\bfms\\x7f\\x84\\x8b\\x90\\x95\\x98\\xa6\\xb3\\xb9\\xc8\\xcflig\\u803b\\xc6\\u40c6P\\u803b&\\u4026cute\\u803b\\xc1\\u40c1reve;\\u4102\\u0100iyx}rc\\u803b\\xc2\\u40c2;\\u4410r;\\uc000\\ud835\\udd04rave\\u803b\\xc0\\u40c0pha;\\u4391acr;\\u4100d;\\u6a53\\u0100gp\\x9d\\xa1on;\\u4104f;\\uc000\\ud835\\udd38plyFunction;\\u6061ing\\u803b\\xc5\\u40c5\\u0100cs\\xbe\\xc3r;\\uc000\\ud835\\udc9cign;\\u6254ilde\\u803b\\xc3\\u40c3ml\\u803b\\xc4\\u40c4\\u0400aceforsu\\xe5\\xfb\\xfe\\u0117\\u011c\\u0122\\u0127\\u012a\\u0100cr\\xea\\xf2kslash;\\u6216\\u0176\\xf6\\xf8;\\u6ae7ed;\\u6306y;\\u4411\\u0180crt\\u0105\\u010b\\u0114ause;\\u6235noullis;\\u612ca;\\u4392r;\\uc000\\ud835\\udd05pf;\\uc000\\ud835\\udd39eve;\\u42d8c\\xf2\\u0113mpeq;\\u624e\\u0700HOacdefhilorsu\\u014d\\u0151\\u0156\\u0180\\u019e\\u01a2\\u01b5\\u01b7\\u01ba\\u01dc\\u0215\\u0273\\u0278\\u027ecy;\\u4427PY\\u803b\\xa9\\u40a9\\u0180cpy\\u015d\\u0162\\u017aute;\\u4106\\u0100;i\\u0167\\u0168\\u62d2talDifferentialD;\\u6145leys;\\u612d\\u0200aeio\\u0189\\u018e\\u0194\\u0198ron;\\u410cdil\\u803b\\xc7\\u40c7rc;\\u4108nint;\\u6230ot;\\u410a\\u0100dn\\u01a7\\u01adilla;\\u40b8terDot;\\u40b7\\xf2\\u017fi;\\u43a7rcle\\u0200DMPT\\u01c7\\u01cb\\u01d1\\u01d6ot;\\u6299inus;\\u6296lus;\\u6295imes;\\u6297o\\u0100cs\\u01e2\\u01f8kwiseContourIntegral;\\u6232eCurly\\u0100DQ\\u0203\\u020foubleQuote;\\u601duote;\\u6019\\u0200lnpu\\u021e\\u0228\\u0247\\u0255on\\u0100;e\\u0225\\u0226\\u6237;\\u6a74\\u0180git\\u022f\\u0236\\u023aruent;\\u6261nt;\\u622fourIntegral;\\u622e\\u0100fr\\u024c\\u024e;\\u6102oduct;\\u6210nterClockwiseContourIntegral;\\u6233oss;\\u6a2fcr;\\uc000\\ud835\\udc9ep\\u0100;C\\u0284\\u0285\\u62d3ap;\\u624d\\u0580DJSZacefios\\u02a0\\u02ac\\u02b0\\u02b4\\u02b8\\u02cb\\u02d7\\u02e1\\u02e6\\u0333\\u048d\\u0100;o\\u0179\\u02a5trahd;\\u6911cy;\\u4402cy;\\u4405cy;\\u440f\\u0180grs\\u02bf\\u02c4\\u02c7ger;\\u6021r;\\u61a1hv;\\u6ae4\\u0100ay\\u02d0\\u02d5ron;\\u410e;\\u4414l\\u0100;t\\u02dd\\u02de\\u6207a;\\u4394r;\\uc000\\ud835\\udd07\\u0100af\\u02eb\\u0327\\u0100cm\\u02f0\\u0322ritical\\u0200ADGT\\u0300\\u0306\\u0316\\u031ccute;\\u40b4o\\u0174\\u030b\\u030d;\\u42d9bleAcute;\\u42ddrave;\\u4060ilde;\\u42dcond;\\u62c4ferentialD;\\u6146\\u0470\\u033d\\0\\0\\0\\u0342\\u0354\\0\\u0405f;\\uc000\\ud835\\udd3b\\u0180;DE\\u0348\\u0349\\u034d\\u40a8ot;\\u60dcqual;\\u6250ble\\u0300CDLRUV\\u0363\\u0372\\u0382\\u03cf\\u03e2\\u03f8ontourIntegra\\xec\\u0239o\\u0274\\u0379\\0\\0\\u037b\\xbb\\u0349nArrow;\\u61d3\\u0100eo\\u0387\\u03a4ft\\u0180ART\\u0390\\u0396\\u03a1rrow;\\u61d0ightArrow;\\u61d4e\\xe5\\u02cang\\u0100LR\\u03ab\\u03c4eft\\u0100AR\\u03b3\\u03b9rrow;\\u67f8ightArrow;\\u67faightArrow;\\u67f9ight\\u0100AT\\u03d8\\u03derrow;\\u61d2ee;\\u62a8p\\u0241\\u03e9\\0\\0\\u03efrrow;\\u61d1ownArrow;\\u61d5erticalBar;\\u6225n\\u0300ABLRTa\\u0412\\u042a\\u0430\\u045e\\u047f\\u037crrow\\u0180;BU\\u041d\\u041e\\u0422\\u6193ar;\\u6913pArrow;\\u61f5reve;\\u4311eft\\u02d2\\u043a\\0\\u0446\\0\\u0450ightVector;\\u6950eeVector;\\u695eector\\u0100;B\\u0459\\u045a\\u61bdar;\\u6956ight\\u01d4\\u0467\\0\\u0471eeVector;\\u695fector\\u0100;B\\u047a\\u047b\\u61c1ar;\\u6957ee\\u0100;A\\u0486\\u0487\\u62a4rrow;\\u61a7\\u0100ct\\u0492\\u0497r;\\uc000\\ud835\\udc9frok;\\u4110\\u0800NTacdfglmopqstux\\u04bd\\u04c0\\u04c4\\u04cb\\u04de\\u04e2\\u04e7\\u04ee\\u04f5\\u0521\\u052f\\u0536\\u0552\\u055d\\u0560\\u0565G;\\u414aH\\u803b\\xd0\\u40d0cute\\u803b\\xc9\\u40c9\\u0180aiy\\u04d2\\u04d7\\u04dcron;\\u411arc\\u803b\\xca\\u40ca;\\u442dot;\\u4116r;\\uc000\\ud835\\udd08rave\\u803b\\xc8\\u40c8ement;\\u6208\\u0100ap\\u04fa\\u04fecr;\\u4112ty\\u0253\\u0506\\0\\0\\u0512mallSquare;\\u65fberySmallSquare;\\u65ab\\u0100gp\\u0526\\u052aon;\\u4118f;\\uc000\\ud835\\udd3csilon;\\u4395u\\u0100ai\\u053c\\u0549l\\u0100;T\\u0542\\u0543\\u6a75ilde;\\u6242librium;\\u61cc\\u0100ci\\u0557\\u055ar;\\u6130m;\\u6a73a;\\u4397ml\\u803b\\xcb\\u40cb\\u0100ip\\u056a\\u056fsts;\\u6203onentialE;\\u6147\\u0280cfios\\u0585\\u0588\\u058d\\u05b2\\u05ccy;\\u4424r;\\uc000\\ud835\\udd09lled\\u0253\\u0597\\0\\0\\u05a3mallSquare;\\u65fcerySmallSquare;\\u65aa\\u0370\\u05ba\\0\\u05bf\\0\\0\\u05c4f;\\uc000\\ud835\\udd3dAll;\\u6200riertrf;\\u6131c\\xf2\\u05cb\\u0600JTabcdfgorst\\u05e8\\u05ec\\u05ef\\u05fa\\u0600\\u0612\\u0616\\u061b\\u061d\\u0623\\u066c\\u0672cy;\\u4403\\u803b>\\u403emma\\u0100;d\\u05f7\\u05f8\\u4393;\\u43dcreve;\\u411e\\u0180eiy\\u0607\\u060c\\u0610dil;\\u4122rc;\\u411c;\\u4413ot;\\u4120r;\\uc000\\ud835\\udd0a;\\u62d9pf;\\uc000\\ud835\\udd3eeater\\u0300EFGLST\\u0635\\u0644\\u064e\\u0656\\u065b\\u0666qual\\u0100;L\\u063e\\u063f\\u6265ess;\\u62dbullEqual;\\u6267reater;\\u6aa2ess;\\u6277lantEqual;\\u6a7eilde;\\u6273cr;\\uc000\\ud835\\udca2;\\u626b\\u0400Aacfiosu\\u0685\\u068b\\u0696\\u069b\\u069e\\u06aa\\u06be\\u06caRDcy;\\u442a\\u0100ct\\u0690\\u0694ek;\\u42c7;\\u405eirc;\\u4124r;\\u610clbertSpace;\\u610b\\u01f0\\u06af\\0\\u06b2f;\\u610dizontalLine;\\u6500\\u0100ct\\u06c3\\u06c5\\xf2\\u06a9rok;\\u4126mp\\u0144\\u06d0\\u06d8ownHum\\xf0\\u012fqual;\\u624f\\u0700EJOacdfgmnostu\\u06fa\\u06fe\\u0703\\u0707\\u070e\\u071a\\u071e\\u0721\\u0728\\u0744\\u0778\\u078b\\u078f\\u0795cy;\\u4415lig;\\u4132cy;\\u4401cute\\u803b\\xcd\\u40cd\\u0100iy\\u0713\\u0718rc\\u803b\\xce\\u40ce;\\u4418ot;\\u4130r;\\u6111rave\\u803b\\xcc\\u40cc\\u0180;ap\\u0720\\u072f\\u073f\\u0100cg\\u0734\\u0737r;\\u412ainaryI;\\u6148lie\\xf3\\u03dd\\u01f4\\u0749\\0\\u0762\\u0100;e\\u074d\\u074e\\u622c\\u0100gr\\u0753\\u0758ral;\\u622bsection;\\u62c2isible\\u0100CT\\u076c\\u0772omma;\\u6063imes;\\u6062\\u0180gpt\\u077f\\u0783\\u0788on;\\u412ef;\\uc000\\ud835\\udd40a;\\u4399cr;\\u6110ilde;\\u4128\\u01eb\\u079a\\0\\u079ecy;\\u4406l\\u803b\\xcf\\u40cf\\u0280cfosu\\u07ac\\u07b7\\u07bc\\u07c2\\u07d0\\u0100iy\\u07b1\\u07b5rc;\\u4134;\\u4419r;\\uc000\\ud835\\udd0dpf;\\uc000\\ud835\\udd41\\u01e3\\u07c7\\0\\u07ccr;\\uc000\\ud835\\udca5rcy;\\u4408kcy;\\u4404\\u0380HJacfos\\u07e4\\u07e8\\u07ec\\u07f1\\u07fd\\u0802\\u0808cy;\\u4425cy;\\u440cppa;\\u439a\\u0100ey\\u07f6\\u07fbdil;\\u4136;\\u441ar;\\uc000\\ud835\\udd0epf;\\uc000\\ud835\\udd42cr;\\uc000\\ud835\\udca6\\u0580JTaceflmost\\u0825\\u0829\\u082c\\u0850\\u0863\\u09b3\\u09b8\\u09c7\\u09cd\\u0a37\\u0a47cy;\\u4409\\u803b<\\u403c\\u0280cmnpr\\u0837\\u083c\\u0841\\u0844\\u084dute;\\u4139bda;\\u439bg;\\u67ealacetrf;\\u6112r;\\u619e\\u0180aey\\u0857\\u085c\\u0861ron;\\u413ddil;\\u413b;\\u441b\\u0100fs\\u0868\\u0970t\\u0500ACDFRTUVar\\u087e\\u08a9\\u08b1\\u08e0\\u08e6\\u08fc\\u092f\\u095b\\u0390\\u096a\\u0100nr\\u0883\\u088fgleBracket;\\u67e8row\\u0180;BR\\u0899\\u089a\\u089e\\u6190ar;\\u61e4ightArrow;\\u61c6eiling;\\u6308o\\u01f5\\u08b7\\0\\u08c3bleBracket;\\u67e6n\\u01d4\\u08c8\\0\\u08d2eeVector;\\u6961ector\\u0100;B\\u08db\\u08dc\\u61c3ar;\\u6959loor;\\u630aight\\u0100AV\\u08ef\\u08f5rrow;\\u6194ector;\\u694e\\u0100er\\u0901\\u0917e\\u0180;AV\\u0909\\u090a\\u0910\\u62a3rrow;\\u61a4ector;\\u695aiangle\\u0180;BE\\u0924\\u0925\\u0929\\u62b2ar;\\u69cfqual;\\u62b4p\\u0180DTV\\u0937\\u0942\\u094cownVector;\\u6951eeVector;\\u6960ector\\u0100;B\\u0956\\u0957\\u61bfar;\\u6958ector\\u0100;B\\u0965\\u0966\\u61bcar;\\u6952ight\\xe1\\u039cs\\u0300EFGLST\\u097e\\u098b\\u0995\\u099d\\u09a2\\u09adqualGreater;\\u62daullEqual;\\u6266reater;\\u6276ess;\\u6aa1lantEqual;\\u6a7dilde;\\u6272r;\\uc000\\ud835\\udd0f\\u0100;e\\u09bd\\u09be\\u62d8ftarrow;\\u61daidot;\\u413f\\u0180npw\\u09d4\\u0a16\\u0a1bg\\u0200LRlr\\u09de\\u09f7\\u0a02\\u0a10eft\\u0100AR\\u09e6\\u09ecrrow;\\u67f5ightArrow;\\u67f7ightArrow;\\u67f6eft\\u0100ar\\u03b3\\u0a0aight\\xe1\\u03bfight\\xe1\\u03caf;\\uc000\\ud835\\udd43er\\u0100LR\\u0a22\\u0a2ceftArrow;\\u6199ightArrow;\\u6198\\u0180cht\\u0a3e\\u0a40\\u0a42\\xf2\\u084c;\\u61b0rok;\\u4141;\\u626a\\u0400acefiosu\\u0a5a\\u0a5d\\u0a60\\u0a77\\u0a7c\\u0a85\\u0a8b\\u0a8ep;\\u6905y;\\u441c\\u0100dl\\u0a65\\u0a6fiumSpace;\\u605flintrf;\\u6133r;\\uc000\\ud835\\udd10nusPlus;\\u6213pf;\\uc000\\ud835\\udd44c\\xf2\\u0a76;\\u439c\\u0480Jacefostu\\u0aa3\\u0aa7\\u0aad\\u0ac0\\u0b14\\u0b19\\u0d91\\u0d97\\u0d9ecy;\\u440acute;\\u4143\\u0180aey\\u0ab4\\u0ab9\\u0aberon;\\u4147dil;\\u4145;\\u441d\\u0180gsw\\u0ac7\\u0af0\\u0b0eative\\u0180MTV\\u0ad3\\u0adf\\u0ae8ediumSpace;\\u600bhi\\u0100cn\\u0ae6\\u0ad8\\xeb\\u0ad9eryThi\\xee\\u0ad9ted\\u0100GL\\u0af8\\u0b06reaterGreate\\xf2\\u0673essLes\\xf3\\u0a48Line;\\u400ar;\\uc000\\ud835\\udd11\\u0200Bnpt\\u0b22\\u0b28\\u0b37\\u0b3areak;\\u6060BreakingSpace;\\u40a0f;\\u6115\\u0680;CDEGHLNPRSTV\\u0b55\\u0b56\\u0b6a\\u0b7c\\u0ba1\\u0beb\\u0c04\\u0c5e\\u0c84\\u0ca6\\u0cd8\\u0d61\\u0d85\\u6aec\\u0100ou\\u0b5b\\u0b64ngruent;\\u6262pCap;\\u626doubleVerticalBar;\\u6226\\u0180lqx\\u0b83\\u0b8a\\u0b9bement;\\u6209ual\\u0100;T\\u0b92\\u0b93\\u6260ilde;\\uc000\\u2242\\u0338ists;\\u6204reater\\u0380;EFGLST\\u0bb6\\u0bb7\\u0bbd\\u0bc9\\u0bd3\\u0bd8\\u0be5\\u626fqual;\\u6271ullEqual;\\uc000\\u2267\\u0338reater;\\uc000\\u226b\\u0338ess;\\u6279lantEqual;\\uc000\\u2a7e\\u0338ilde;\\u6275ump\\u0144\\u0bf2\\u0bfdownHump;\\uc000\\u224e\\u0338qual;\\uc000\\u224f\\u0338e\\u0100fs\\u0c0a\\u0c27tTriangle\\u0180;BE\\u0c1a\\u0c1b\\u0c21\\u62eaar;\\uc000\\u29cf\\u0338qual;\\u62ecs\\u0300;EGLST\\u0c35\\u0c36\\u0c3c\\u0c44\\u0c4b\\u0c58\\u626equal;\\u6270reater;\\u6278ess;\\uc000\\u226a\\u0338lantEqual;\\uc000\\u2a7d\\u0338ilde;\\u6274ested\\u0100GL\\u0c68\\u0c79reaterGreater;\\uc000\\u2aa2\\u0338essLess;\\uc000\\u2aa1\\u0338recedes\\u0180;ES\\u0c92\\u0c93\\u0c9b\\u6280qual;\\uc000\\u2aaf\\u0338lantEqual;\\u62e0\\u0100ei\\u0cab\\u0cb9verseElement;\\u620cghtTriangle\\u0180;BE\\u0ccb\\u0ccc\\u0cd2\\u62ebar;\\uc000\\u29d0\\u0338qual;\\u62ed\\u0100qu\\u0cdd\\u0d0cuareSu\\u0100bp\\u0ce8\\u0cf9set\\u0100;E\\u0cf0\\u0cf3\\uc000\\u228f\\u0338qual;\\u62e2erset\\u0100;E\\u0d03\\u0d06\\uc000\\u2290\\u0338qual;\\u62e3\\u0180bcp\\u0d13\\u0d24\\u0d4eset\\u0100;E\\u0d1b\\u0d1e\\uc000\\u2282\\u20d2qual;\\u6288ceeds\\u0200;EST\\u0d32\\u0d33\\u0d3b\\u0d46\\u6281qual;\\uc000\\u2ab0\\u0338lantEqual;\\u62e1ilde;\\uc000\\u227f\\u0338erset\\u0100;E\\u0d58\\u0d5b\\uc000\\u2283\\u20d2qual;\\u6289ilde\\u0200;EFT\\u0d6e\\u0d6f\\u0d75\\u0d7f\\u6241qual;\\u6244ullEqual;\\u6247ilde;\\u6249erticalBar;\\u6224cr;\\uc000\\ud835\\udca9ilde\\u803b\\xd1\\u40d1;\\u439d\\u0700Eacdfgmoprstuv\\u0dbd\\u0dc2\\u0dc9\\u0dd5\\u0ddb\\u0de0\\u0de7\\u0dfc\\u0e02\\u0e20\\u0e22\\u0e32\\u0e3f\\u0e44lig;\\u4152cute\\u803b\\xd3\\u40d3\\u0100iy\\u0dce\\u0dd3rc\\u803b\\xd4\\u40d4;\\u441eblac;\\u4150r;\\uc000\\ud835\\udd12rave\\u803b\\xd2\\u40d2\\u0180aei\\u0dee\\u0df2\\u0df6cr;\\u414cga;\\u43a9cron;\\u439fpf;\\uc000\\ud835\\udd46enCurly\\u0100DQ\\u0e0e\\u0e1aoubleQuote;\\u601cuote;\\u6018;\\u6a54\\u0100cl\\u0e27\\u0e2cr;\\uc000\\ud835\\udcaaash\\u803b\\xd8\\u40d8i\\u016c\\u0e37\\u0e3cde\\u803b\\xd5\\u40d5es;\\u6a37ml\\u803b\\xd6\\u40d6er\\u0100BP\\u0e4b\\u0e60\\u0100ar\\u0e50\\u0e53r;\\u603eac\\u0100ek\\u0e5a\\u0e5c;\\u63deet;\\u63b4arenthesis;\\u63dc\\u0480acfhilors\\u0e7f\\u0e87\\u0e8a\\u0e8f\\u0e92\\u0e94\\u0e9d\\u0eb0\\u0efcrtialD;\\u6202y;\\u441fr;\\uc000\\ud835\\udd13i;\\u43a6;\\u43a0usMinus;\\u40b1\\u0100ip\\u0ea2\\u0eadncareplan\\xe5\\u069df;\\u6119\\u0200;eio\\u0eb9\\u0eba\\u0ee0\\u0ee4\\u6abbcedes\\u0200;EST\\u0ec8\\u0ec9\\u0ecf\\u0eda\\u627aqual;\\u6aaflantEqual;\\u627cilde;\\u627eme;\\u6033\\u0100dp\\u0ee9\\u0eeeuct;\\u620fortion\\u0100;a\\u0225\\u0ef9l;\\u621d\\u0100ci\\u0f01\\u0f06r;\\uc000\\ud835\\udcab;\\u43a8\\u0200Ufos\\u0f11\\u0f16\\u0f1b\\u0f1fOT\\u803b\\\"\\u4022r;\\uc000\\ud835\\udd14pf;\\u611acr;\\uc000\\ud835\\udcac\\u0600BEacefhiorsu\\u0f3e\\u0f43\\u0f47\\u0f60\\u0f73\\u0fa7\\u0faa\\u0fad\\u1096\\u10a9\\u10b4\\u10bearr;\\u6910G\\u803b\\xae\\u40ae\\u0180cnr\\u0f4e\\u0f53\\u0f56ute;\\u4154g;\\u67ebr\\u0100;t\\u0f5c\\u0f5d\\u61a0l;\\u6916\\u0180aey\\u0f67\\u0f6c\\u0f71ron;\\u4158dil;\\u4156;\\u4420\\u0100;v\\u0f78\\u0f79\\u611cerse\\u0100EU\\u0f82\\u0f99\\u0100lq\\u0f87\\u0f8eement;\\u620builibrium;\\u61cbpEquilibrium;\\u696fr\\xbb\\u0f79o;\\u43a1ght\\u0400ACDFTUVa\\u0fc1\\u0feb\\u0ff3\\u1022\\u1028\\u105b\\u1087\\u03d8\\u0100nr\\u0fc6\\u0fd2gleBracket;\\u67e9row\\u0180;BL\\u0fdc\\u0fdd\\u0fe1\\u6192ar;\\u61e5eftArrow;\\u61c4eiling;\\u6309o\\u01f5\\u0ff9\\0\\u1005bleBracket;\\u67e7n\\u01d4\\u100a\\0\\u1014eeVector;\\u695dector\\u0100;B\\u101d\\u101e\\u61c2ar;\\u6955loor;\\u630b\\u0100er\\u102d\\u1043e\\u0180;AV\\u1035\\u1036\\u103c\\u62a2rrow;\\u61a6ector;\\u695biangle\\u0180;BE\\u1050\\u1051\\u1055\\u62b3ar;\\u69d0qual;\\u62b5p\\u0180DTV\\u1063\\u106e\\u1078ownVector;\\u694feeVector;\\u695cector\\u0100;B\\u1082\\u1083\\u61bear;\\u6954ector\\u0100;B\\u1091\\u1092\\u61c0ar;\\u6953\\u0100pu\\u109b\\u109ef;\\u611dndImplies;\\u6970ightarrow;\\u61db\\u0100ch\\u10b9\\u10bcr;\\u611b;\\u61b1leDelayed;\\u69f4\\u0680HOacfhimoqstu\\u10e4\\u10f1\\u10f7\\u10fd\\u1119\\u111e\\u1151\\u1156\\u1161\\u1167\\u11b5\\u11bb\\u11bf\\u0100Cc\\u10e9\\u10eeHcy;\\u4429y;\\u4428FTcy;\\u442ccute;\\u415a\\u0280;aeiy\\u1108\\u1109\\u110e\\u1113\\u1117\\u6abcron;\\u4160dil;\\u415erc;\\u415c;\\u4421r;\\uc000\\ud835\\udd16ort\\u0200DLRU\\u112a\\u1134\\u113e\\u1149ownArrow\\xbb\\u041eeftArrow\\xbb\\u089aightArrow\\xbb\\u0fddpArrow;\\u6191gma;\\u43a3allCircle;\\u6218pf;\\uc000\\ud835\\udd4a\\u0272\\u116d\\0\\0\\u1170t;\\u621aare\\u0200;ISU\\u117b\\u117c\\u1189\\u11af\\u65a1ntersection;\\u6293u\\u0100bp\\u118f\\u119eset\\u0100;E\\u1197\\u1198\\u628fqual;\\u6291erset\\u0100;E\\u11a8\\u11a9\\u6290qual;\\u6292nion;\\u6294cr;\\uc000\\ud835\\udcaear;\\u62c6\\u0200bcmp\\u11c8\\u11db\\u1209\\u120b\\u0100;s\\u11cd\\u11ce\\u62d0et\\u0100;E\\u11cd\\u11d5qual;\\u6286\\u0100ch\\u11e0\\u1205eeds\\u0200;EST\\u11ed\\u11ee\\u11f4\\u11ff\\u627bqual;\\u6ab0lantEqual;\\u627dilde;\\u627fTh\\xe1\\u0f8c;\\u6211\\u0180;es\\u1212\\u1213\\u1223\\u62d1rset\\u0100;E\\u121c\\u121d\\u6283qual;\\u6287et\\xbb\\u1213\\u0580HRSacfhiors\\u123e\\u1244\\u1249\\u1255\\u125e\\u1271\\u1276\\u129f\\u12c2\\u12c8\\u12d1ORN\\u803b\\xde\\u40deADE;\\u6122\\u0100Hc\\u124e\\u1252cy;\\u440by;\\u4426\\u0100bu\\u125a\\u125c;\\u4009;\\u43a4\\u0180aey\\u1265\\u126a\\u126fron;\\u4164dil;\\u4162;\\u4422r;\\uc000\\ud835\\udd17\\u0100ei\\u127b\\u1289\\u01f2\\u1280\\0\\u1287efore;\\u6234a;\\u4398\\u0100cn\\u128e\\u1298kSpace;\\uc000\\u205f\\u200aSpace;\\u6009lde\\u0200;EFT\\u12ab\\u12ac\\u12b2\\u12bc\\u623cqual;\\u6243ullEqual;\\u6245ilde;\\u6248pf;\\uc000\\ud835\\udd4bipleDot;\\u60db\\u0100ct\\u12d6\\u12dbr;\\uc000\\ud835\\udcafrok;\\u4166\\u0ae1\\u12f7\\u130e\\u131a\\u1326\\0\\u132c\\u1331\\0\\0\\0\\0\\0\\u1338\\u133d\\u1377\\u1385\\0\\u13ff\\u1404\\u140a\\u1410\\u0100cr\\u12fb\\u1301ute\\u803b\\xda\\u40dar\\u0100;o\\u1307\\u1308\\u619fcir;\\u6949r\\u01e3\\u1313\\0\\u1316y;\\u440eve;\\u416c\\u0100iy\\u131e\\u1323rc\\u803b\\xdb\\u40db;\\u4423blac;\\u4170r;\\uc000\\ud835\\udd18rave\\u803b\\xd9\\u40d9acr;\\u416a\\u0100di\\u1341\\u1369er\\u0100BP\\u1348\\u135d\\u0100ar\\u134d\\u1350r;\\u405fac\\u0100ek\\u1357\\u1359;\\u63dfet;\\u63b5arenthesis;\\u63ddon\\u0100;P\\u1370\\u1371\\u62c3lus;\\u628e\\u0100gp\\u137b\\u137fon;\\u4172f;\\uc000\\ud835\\udd4c\\u0400ADETadps\\u1395\\u13ae\\u13b8\\u13c4\\u03e8\\u13d2\\u13d7\\u13f3rrow\\u0180;BD\\u1150\\u13a0\\u13a4ar;\\u6912ownArrow;\\u61c5ownArrow;\\u6195quilibrium;\\u696eee\\u0100;A\\u13cb\\u13cc\\u62a5rrow;\\u61a5own\\xe1\\u03f3er\\u0100LR\\u13de\\u13e8eftArrow;\\u6196ightArrow;\\u6197i\\u0100;l\\u13f9\\u13fa\\u43d2on;\\u43a5ing;\\u416ecr;\\uc000\\ud835\\udcb0ilde;\\u4168ml\\u803b\\xdc\\u40dc\\u0480Dbcdefosv\\u1427\\u142c\\u1430\\u1433\\u143e\\u1485\\u148a\\u1490\\u1496ash;\\u62abar;\\u6aeby;\\u4412ash\\u0100;l\\u143b\\u143c\\u62a9;\\u6ae6\\u0100er\\u1443\\u1445;\\u62c1\\u0180bty\\u144c\\u1450\\u147aar;\\u6016\\u0100;i\\u144f\\u1455cal\\u0200BLST\\u1461\\u1465\\u146a\\u1474ar;\\u6223ine;\\u407ceparator;\\u6758ilde;\\u6240ThinSpace;\\u600ar;\\uc000\\ud835\\udd19pf;\\uc000\\ud835\\udd4dcr;\\uc000\\ud835\\udcb1dash;\\u62aa\\u0280cefos\\u14a7\\u14ac\\u14b1\\u14b6\\u14bcirc;\\u4174dge;\\u62c0r;\\uc000\\ud835\\udd1apf;\\uc000\\ud835\\udd4ecr;\\uc000\\ud835\\udcb2\\u0200fios\\u14cb\\u14d0\\u14d2\\u14d8r;\\uc000\\ud835\\udd1b;\\u439epf;\\uc000\\ud835\\udd4fcr;\\uc000\\ud835\\udcb3\\u0480AIUacfosu\\u14f1\\u14f5\\u14f9\\u14fd\\u1504\\u150f\\u1514\\u151a\\u1520cy;\\u442fcy;\\u4407cy;\\u442ecute\\u803b\\xdd\\u40dd\\u0100iy\\u1509\\u150drc;\\u4176;\\u442br;\\uc000\\ud835\\udd1cpf;\\uc000\\ud835\\udd50cr;\\uc000\\ud835\\udcb4ml;\\u4178\\u0400Hacdefos\\u1535\\u1539\\u153f\\u154b\\u154f\\u155d\\u1560\\u1564cy;\\u4416cute;\\u4179\\u0100ay\\u1544\\u1549ron;\\u417d;\\u4417ot;\\u417b\\u01f2\\u1554\\0\\u155boWidt\\xe8\\u0ad9a;\\u4396r;\\u6128pf;\\u6124cr;\\uc000\\ud835\\udcb5\\u0be1\\u1583\\u158a\\u1590\\0\\u15b0\\u15b6\\u15bf\\0\\0\\0\\0\\u15c6\\u15db\\u15eb\\u165f\\u166d\\0\\u1695\\u169b\\u16b2\\u16b9\\0\\u16becute\\u803b\\xe1\\u40e1reve;\\u4103\\u0300;Ediuy\\u159c\\u159d\\u15a1\\u15a3\\u15a8\\u15ad\\u623e;\\uc000\\u223e\\u0333;\\u623frc\\u803b\\xe2\\u40e2te\\u80bb\\xb4\\u0306;\\u4430lig\\u803b\\xe6\\u40e6\\u0100;r\\xb2\\u15ba;\\uc000\\ud835\\udd1erave\\u803b\\xe0\\u40e0\\u0100ep\\u15ca\\u15d6\\u0100fp\\u15cf\\u15d4sym;\\u6135\\xe8\\u15d3ha;\\u43b1\\u0100ap\\u15dfc\\u0100cl\\u15e4\\u15e7r;\\u4101g;\\u6a3f\\u0264\\u15f0\\0\\0\\u160a\\u0280;adsv\\u15fa\\u15fb\\u15ff\\u1601\\u1607\\u6227nd;\\u6a55;\\u6a5clope;\\u6a58;\\u6a5a\\u0380;elmrsz\\u1618\\u1619\\u161b\\u161e\\u163f\\u164f\\u1659\\u6220;\\u69a4e\\xbb\\u1619sd\\u0100;a\\u1625\\u1626\\u6221\\u0461\\u1630\\u1632\\u1634\\u1636\\u1638\\u163a\\u163c\\u163e;\\u69a8;\\u69a9;\\u69aa;\\u69ab;\\u69ac;\\u69ad;\\u69ae;\\u69aft\\u0100;v\\u1645\\u1646\\u621fb\\u0100;d\\u164c\\u164d\\u62be;\\u699d\\u0100pt\\u1654\\u1657h;\\u6222\\xbb\\xb9arr;\\u637c\\u0100gp\\u1663\\u1667on;\\u4105f;\\uc000\\ud835\\udd52\\u0380;Eaeiop\\u12c1\\u167b\\u167d\\u1682\\u1684\\u1687\\u168a;\\u6a70cir;\\u6a6f;\\u624ad;\\u624bs;\\u4027rox\\u0100;e\\u12c1\\u1692\\xf1\\u1683ing\\u803b\\xe5\\u40e5\\u0180cty\\u16a1\\u16a6\\u16a8r;\\uc000\\ud835\\udcb6;\\u402amp\\u0100;e\\u12c1\\u16af\\xf1\\u0288ilde\\u803b\\xe3\\u40e3ml\\u803b\\xe4\\u40e4\\u0100ci\\u16c2\\u16c8onin\\xf4\\u0272nt;\\u6a11\\u0800Nabcdefiklnoprsu\\u16ed\\u16f1\\u1730\\u173c\\u1743\\u1748\\u1778\\u177d\\u17e0\\u17e6\\u1839\\u1850\\u170d\\u193d\\u1948\\u1970ot;\\u6aed\\u0100cr\\u16f6\\u171ek\\u0200ceps\\u1700\\u1705\\u170d\\u1713ong;\\u624cpsilon;\\u43f6rime;\\u6035im\\u0100;e\\u171a\\u171b\\u623dq;\\u62cd\\u0176\\u1722\\u1726ee;\\u62bded\\u0100;g\\u172c\\u172d\\u6305e\\xbb\\u172drk\\u0100;t\\u135c\\u1737brk;\\u63b6\\u0100oy\\u1701\\u1741;\\u4431quo;\\u601e\\u0280cmprt\\u1753\\u175b\\u1761\\u1764\\u1768aus\\u0100;e\\u010a\\u0109ptyv;\\u69b0s\\xe9\\u170cno\\xf5\\u0113\\u0180ahw\\u176f\\u1771\\u1773;\\u43b2;\\u6136een;\\u626cr;\\uc000\\ud835\\udd1fg\\u0380costuvw\\u178d\\u179d\\u17b3\\u17c1\\u17d5\\u17db\\u17de\\u0180aiu\\u1794\\u1796\\u179a\\xf0\\u0760rc;\\u65efp\\xbb\\u1371\\u0180dpt\\u17a4\\u17a8\\u17adot;\\u6a00lus;\\u6a01imes;\\u6a02\\u0271\\u17b9\\0\\0\\u17becup;\\u6a06ar;\\u6605riangle\\u0100du\\u17cd\\u17d2own;\\u65bdp;\\u65b3plus;\\u6a04e\\xe5\\u1444\\xe5\\u14adarow;\\u690d\\u0180ako\\u17ed\\u1826\\u1835\\u0100cn\\u17f2\\u1823k\\u0180lst\\u17fa\\u05ab\\u1802ozenge;\\u69ebriangle\\u0200;dlr\\u1812\\u1813\\u1818\\u181d\\u65b4own;\\u65beeft;\\u65c2ight;\\u65b8k;\\u6423\\u01b1\\u182b\\0\\u1833\\u01b2\\u182f\\0\\u1831;\\u6592;\\u65914;\\u6593ck;\\u6588\\u0100eo\\u183e\\u184d\\u0100;q\\u1843\\u1846\\uc000=\\u20e5uiv;\\uc000\\u2261\\u20e5t;\\u6310\\u0200ptwx\\u1859\\u185e\\u1867\\u186cf;\\uc000\\ud835\\udd53\\u0100;t\\u13cb\\u1863om\\xbb\\u13cctie;\\u62c8\\u0600DHUVbdhmptuv\\u1885\\u1896\\u18aa\\u18bb\\u18d7\\u18db\\u18ec\\u18ff\\u1905\\u190a\\u1910\\u1921\\u0200LRlr\\u188e\\u1890\\u1892\\u1894;\\u6557;\\u6554;\\u6556;\\u6553\\u0280;DUdu\\u18a1\\u18a2\\u18a4\\u18a6\\u18a8\\u6550;\\u6566;\\u6569;\\u6564;\\u6567\\u0200LRlr\\u18b3\\u18b5\\u18b7\\u18b9;\\u655d;\\u655a;\\u655c;\\u6559\\u0380;HLRhlr\\u18ca\\u18cb\\u18cd\\u18cf\\u18d1\\u18d3\\u18d5\\u6551;\\u656c;\\u6563;\\u6560;\\u656b;\\u6562;\\u655fox;\\u69c9\\u0200LRlr\\u18e4\\u18e6\\u18e8\\u18ea;\\u6555;\\u6552;\\u6510;\\u650c\\u0280;DUdu\\u06bd\\u18f7\\u18f9\\u18fb\\u18fd;\\u6565;\\u6568;\\u652c;\\u6534inus;\\u629flus;\\u629eimes;\\u62a0\\u0200LRlr\\u1919\\u191b\\u191d\\u191f;\\u655b;\\u6558;\\u6518;\\u6514\\u0380;HLRhlr\\u1930\\u1931\\u1933\\u1935\\u1937\\u1939\\u193b\\u6502;\\u656a;\\u6561;\\u655e;\\u653c;\\u6524;\\u651c\\u0100ev\\u0123\\u1942bar\\u803b\\xa6\\u40a6\\u0200ceio\\u1951\\u1956\\u195a\\u1960r;\\uc000\\ud835\\udcb7mi;\\u604fm\\u0100;e\\u171a\\u171cl\\u0180;bh\\u1968\\u1969\\u196b\\u405c;\\u69c5sub;\\u67c8\\u016c\\u1974\\u197el\\u0100;e\\u1979\\u197a\\u6022t\\xbb\\u197ap\\u0180;Ee\\u012f\\u1985\\u1987;\\u6aae\\u0100;q\\u06dc\\u06db\\u0ce1\\u19a7\\0\\u19e8\\u1a11\\u1a15\\u1a32\\0\\u1a37\\u1a50\\0\\0\\u1ab4\\0\\0\\u1ac1\\0\\0\\u1b21\\u1b2e\\u1b4d\\u1b52\\0\\u1bfd\\0\\u1c0c\\u0180cpr\\u19ad\\u19b2\\u19ddute;\\u4107\\u0300;abcds\\u19bf\\u19c0\\u19c4\\u19ca\\u19d5\\u19d9\\u6229nd;\\u6a44rcup;\\u6a49\\u0100au\\u19cf\\u19d2p;\\u6a4bp;\\u6a47ot;\\u6a40;\\uc000\\u2229\\ufe00\\u0100eo\\u19e2\\u19e5t;\\u6041\\xee\\u0693\\u0200aeiu\\u19f0\\u19fb\\u1a01\\u1a05\\u01f0\\u19f5\\0\\u19f8s;\\u6a4don;\\u410ddil\\u803b\\xe7\\u40e7rc;\\u4109ps\\u0100;s\\u1a0c\\u1a0d\\u6a4cm;\\u6a50ot;\\u410b\\u0180dmn\\u1a1b\\u1a20\\u1a26il\\u80bb\\xb8\\u01adptyv;\\u69b2t\\u8100\\xa2;e\\u1a2d\\u1a2e\\u40a2r\\xe4\\u01b2r;\\uc000\\ud835\\udd20\\u0180cei\\u1a3d\\u1a40\\u1a4dy;\\u4447ck\\u0100;m\\u1a47\\u1a48\\u6713ark\\xbb\\u1a48;\\u43c7r\\u0380;Ecefms\\u1a5f\\u1a60\\u1a62\\u1a6b\\u1aa4\\u1aaa\\u1aae\\u65cb;\\u69c3\\u0180;el\\u1a69\\u1a6a\\u1a6d\\u42c6q;\\u6257e\\u0261\\u1a74\\0\\0\\u1a88rrow\\u0100lr\\u1a7c\\u1a81eft;\\u61baight;\\u61bb\\u0280RSacd\\u1a92\\u1a94\\u1a96\\u1a9a\\u1a9f\\xbb\\u0f47;\\u64c8st;\\u629birc;\\u629aash;\\u629dnint;\\u6a10id;\\u6aefcir;\\u69c2ubs\\u0100;u\\u1abb\\u1abc\\u6663it\\xbb\\u1abc\\u02ec\\u1ac7\\u1ad4\\u1afa\\0\\u1b0aon\\u0100;e\\u1acd\\u1ace\\u403a\\u0100;q\\xc7\\xc6\\u026d\\u1ad9\\0\\0\\u1ae2a\\u0100;t\\u1ade\\u1adf\\u402c;\\u4040\\u0180;fl\\u1ae8\\u1ae9\\u1aeb\\u6201\\xee\\u1160e\\u0100mx\\u1af1\\u1af6ent\\xbb\\u1ae9e\\xf3\\u024d\\u01e7\\u1afe\\0\\u1b07\\u0100;d\\u12bb\\u1b02ot;\\u6a6dn\\xf4\\u0246\\u0180fry\\u1b10\\u1b14\\u1b17;\\uc000\\ud835\\udd54o\\xe4\\u0254\\u8100\\xa9;s\\u0155\\u1b1dr;\\u6117\\u0100ao\\u1b25\\u1b29rr;\\u61b5ss;\\u6717\\u0100cu\\u1b32\\u1b37r;\\uc000\\ud835\\udcb8\\u0100bp\\u1b3c\\u1b44\\u0100;e\\u1b41\\u1b42\\u6acf;\\u6ad1\\u0100;e\\u1b49\\u1b4a\\u6ad0;\\u6ad2dot;\\u62ef\\u0380delprvw\\u1b60\\u1b6c\\u1b77\\u1b82\\u1bac\\u1bd4\\u1bf9arr\\u0100lr\\u1b68\\u1b6a;\\u6938;\\u6935\\u0270\\u1b72\\0\\0\\u1b75r;\\u62dec;\\u62dfarr\\u0100;p\\u1b7f\\u1b80\\u61b6;\\u693d\\u0300;bcdos\\u1b8f\\u1b90\\u1b96\\u1ba1\\u1ba5\\u1ba8\\u622arcap;\\u6a48\\u0100au\\u1b9b\\u1b9ep;\\u6a46p;\\u6a4aot;\\u628dr;\\u6a45;\\uc000\\u222a\\ufe00\\u0200alrv\\u1bb5\\u1bbf\\u1bde\\u1be3rr\\u0100;m\\u1bbc\\u1bbd\\u61b7;\\u693cy\\u0180evw\\u1bc7\\u1bd4\\u1bd8q\\u0270\\u1bce\\0\\0\\u1bd2re\\xe3\\u1b73u\\xe3\\u1b75ee;\\u62ceedge;\\u62cfen\\u803b\\xa4\\u40a4earrow\\u0100lr\\u1bee\\u1bf3eft\\xbb\\u1b80ight\\xbb\\u1bbde\\xe4\\u1bdd\\u0100ci\\u1c01\\u1c07onin\\xf4\\u01f7nt;\\u6231lcty;\\u632d\\u0980AHabcdefhijlorstuwz\\u1c38\\u1c3b\\u1c3f\\u1c5d\\u1c69\\u1c75\\u1c8a\\u1c9e\\u1cac\\u1cb7\\u1cfb\\u1cff\\u1d0d\\u1d7b\\u1d91\\u1dab\\u1dbb\\u1dc6\\u1dcdr\\xf2\\u0381ar;\\u6965\\u0200glrs\\u1c48\\u1c4d\\u1c52\\u1c54ger;\\u6020eth;\\u6138\\xf2\\u1133h\\u0100;v\\u1c5a\\u1c5b\\u6010\\xbb\\u090a\\u016b\\u1c61\\u1c67arow;\\u690fa\\xe3\\u0315\\u0100ay\\u1c6e\\u1c73ron;\\u410f;\\u4434\\u0180;ao\\u0332\\u1c7c\\u1c84\\u0100gr\\u02bf\\u1c81r;\\u61catseq;\\u6a77\\u0180glm\\u1c91\\u1c94\\u1c98\\u803b\\xb0\\u40b0ta;\\u43b4ptyv;\\u69b1\\u0100ir\\u1ca3\\u1ca8sht;\\u697f;\\uc000\\ud835\\udd21ar\\u0100lr\\u1cb3\\u1cb5\\xbb\\u08dc\\xbb\\u101e\\u0280aegsv\\u1cc2\\u0378\\u1cd6\\u1cdc\\u1ce0m\\u0180;os\\u0326\\u1cca\\u1cd4nd\\u0100;s\\u0326\\u1cd1uit;\\u6666amma;\\u43ddin;\\u62f2\\u0180;io\\u1ce7\\u1ce8\\u1cf8\\u40f7de\\u8100\\xf7;o\\u1ce7\\u1cf0ntimes;\\u62c7n\\xf8\\u1cf7cy;\\u4452c\\u026f\\u1d06\\0\\0\\u1d0arn;\\u631eop;\\u630d\\u0280lptuw\\u1d18\\u1d1d\\u1d22\\u1d49\\u1d55lar;\\u4024f;\\uc000\\ud835\\udd55\\u0280;emps\\u030b\\u1d2d\\u1d37\\u1d3d\\u1d42q\\u0100;d\\u0352\\u1d33ot;\\u6251inus;\\u6238lus;\\u6214quare;\\u62a1blebarwedg\\xe5\\xfan\\u0180adh\\u112e\\u1d5d\\u1d67ownarrow\\xf3\\u1c83arpoon\\u0100lr\\u1d72\\u1d76ef\\xf4\\u1cb4igh\\xf4\\u1cb6\\u0162\\u1d7f\\u1d85karo\\xf7\\u0f42\\u026f\\u1d8a\\0\\0\\u1d8ern;\\u631fop;\\u630c\\u0180cot\\u1d98\\u1da3\\u1da6\\u0100ry\\u1d9d\\u1da1;\\uc000\\ud835\\udcb9;\\u4455l;\\u69f6rok;\\u4111\\u0100dr\\u1db0\\u1db4ot;\\u62f1i\\u0100;f\\u1dba\\u1816\\u65bf\\u0100ah\\u1dc0\\u1dc3r\\xf2\\u0429a\\xf2\\u0fa6angle;\\u69a6\\u0100ci\\u1dd2\\u1dd5y;\\u445fgrarr;\\u67ff\\u0900Dacdefglmnopqrstux\\u1e01\\u1e09\\u1e19\\u1e38\\u0578\\u1e3c\\u1e49\\u1e61\\u1e7e\\u1ea5\\u1eaf\\u1ebd\\u1ee1\\u1f2a\\u1f37\\u1f44\\u1f4e\\u1f5a\\u0100Do\\u1e06\\u1d34o\\xf4\\u1c89\\u0100cs\\u1e0e\\u1e14ute\\u803b\\xe9\\u40e9ter;\\u6a6e\\u0200aioy\\u1e22\\u1e27\\u1e31\\u1e36ron;\\u411br\\u0100;c\\u1e2d\\u1e2e\\u6256\\u803b\\xea\\u40ealon;\\u6255;\\u444dot;\\u4117\\u0100Dr\\u1e41\\u1e45ot;\\u6252;\\uc000\\ud835\\udd22\\u0180;rs\\u1e50\\u1e51\\u1e57\\u6a9aave\\u803b\\xe8\\u40e8\\u0100;d\\u1e5c\\u1e5d\\u6a96ot;\\u6a98\\u0200;ils\\u1e6a\\u1e6b\\u1e72\\u1e74\\u6a99nters;\\u63e7;\\u6113\\u0100;d\\u1e79\\u1e7a\\u6a95ot;\\u6a97\\u0180aps\\u1e85\\u1e89\\u1e97cr;\\u4113ty\\u0180;sv\\u1e92\\u1e93\\u1e95\\u6205et\\xbb\\u1e93p\\u01001;\\u1e9d\\u1ea4\\u0133\\u1ea1\\u1ea3;\\u6004;\\u6005\\u6003\\u0100gs\\u1eaa\\u1eac;\\u414bp;\\u6002\\u0100gp\\u1eb4\\u1eb8on;\\u4119f;\\uc000\\ud835\\udd56\\u0180als\\u1ec4\\u1ece\\u1ed2r\\u0100;s\\u1eca\\u1ecb\\u62d5l;\\u69e3us;\\u6a71i\\u0180;lv\\u1eda\\u1edb\\u1edf\\u43b5on\\xbb\\u1edb;\\u43f5\\u0200csuv\\u1eea\\u1ef3\\u1f0b\\u1f23\\u0100io\\u1eef\\u1e31rc\\xbb\\u1e2e\\u0269\\u1ef9\\0\\0\\u1efb\\xed\\u0548ant\\u0100gl\\u1f02\\u1f06tr\\xbb\\u1e5dess\\xbb\\u1e7a\\u0180aei\\u1f12\\u1f16\\u1f1als;\\u403dst;\\u625fv\\u0100;D\\u0235\\u1f20D;\\u6a78parsl;\\u69e5\\u0100Da\\u1f2f\\u1f33ot;\\u6253rr;\\u6971\\u0180cdi\\u1f3e\\u1f41\\u1ef8r;\\u612fo\\xf4\\u0352\\u0100ah\\u1f49\\u1f4b;\\u43b7\\u803b\\xf0\\u40f0\\u0100mr\\u1f53\\u1f57l\\u803b\\xeb\\u40ebo;\\u60ac\\u0180cip\\u1f61\\u1f64\\u1f67l;\\u4021s\\xf4\\u056e\\u0100eo\\u1f6c\\u1f74ctatio\\xee\\u0559nential\\xe5\\u0579\\u09e1\\u1f92\\0\\u1f9e\\0\\u1fa1\\u1fa7\\0\\0\\u1fc6\\u1fcc\\0\\u1fd3\\0\\u1fe6\\u1fea\\u2000\\0\\u2008\\u205allingdotse\\xf1\\u1e44y;\\u4444male;\\u6640\\u0180ilr\\u1fad\\u1fb3\\u1fc1lig;\\u8000\\ufb03\\u0269\\u1fb9\\0\\0\\u1fbdg;\\u8000\\ufb00ig;\\u8000\\ufb04;\\uc000\\ud835\\udd23lig;\\u8000\\ufb01lig;\\uc000fj\\u0180alt\\u1fd9\\u1fdc\\u1fe1t;\\u666dig;\\u8000\\ufb02ns;\\u65b1of;\\u4192\\u01f0\\u1fee\\0\\u1ff3f;\\uc000\\ud835\\udd57\\u0100ak\\u05bf\\u1ff7\\u0100;v\\u1ffc\\u1ffd\\u62d4;\\u6ad9artint;\\u6a0d\\u0100ao\\u200c\\u2055\\u0100cs\\u2011\\u2052\\u03b1\\u201a\\u2030\\u2038\\u2045\\u2048\\0\\u2050\\u03b2\\u2022\\u2025\\u2027\\u202a\\u202c\\0\\u202e\\u803b\\xbd\\u40bd;\\u6153\\u803b\\xbc\\u40bc;\\u6155;\\u6159;\\u615b\\u01b3\\u2034\\0\\u2036;\\u6154;\\u6156\\u02b4\\u203e\\u2041\\0\\0\\u2043\\u803b\\xbe\\u40be;\\u6157;\\u615c5;\\u6158\\u01b6\\u204c\\0\\u204e;\\u615a;\\u615d8;\\u615el;\\u6044wn;\\u6322cr;\\uc000\\ud835\\udcbb\\u0880Eabcdefgijlnorstv\\u2082\\u2089\\u209f\\u20a5\\u20b0\\u20b4\\u20f0\\u20f5\\u20fa\\u20ff\\u2103\\u2112\\u2138\\u0317\\u213e\\u2152\\u219e\\u0100;l\\u064d\\u2087;\\u6a8c\\u0180cmp\\u2090\\u2095\\u209dute;\\u41f5ma\\u0100;d\\u209c\\u1cda\\u43b3;\\u6a86reve;\\u411f\\u0100iy\\u20aa\\u20aerc;\\u411d;\\u4433ot;\\u4121\\u0200;lqs\\u063e\\u0642\\u20bd\\u20c9\\u0180;qs\\u063e\\u064c\\u20c4lan\\xf4\\u0665\\u0200;cdl\\u0665\\u20d2\\u20d5\\u20e5c;\\u6aa9ot\\u0100;o\\u20dc\\u20dd\\u6a80\\u0100;l\\u20e2\\u20e3\\u6a82;\\u6a84\\u0100;e\\u20ea\\u20ed\\uc000\\u22db\\ufe00s;\\u6a94r;\\uc000\\ud835\\udd24\\u0100;g\\u0673\\u061bmel;\\u6137cy;\\u4453\\u0200;Eaj\\u065a\\u210c\\u210e\\u2110;\\u6a92;\\u6aa5;\\u6aa4\\u0200Eaes\\u211b\\u211d\\u2129\\u2134;\\u6269p\\u0100;p\\u2123\\u2124\\u6a8arox\\xbb\\u2124\\u0100;q\\u212e\\u212f\\u6a88\\u0100;q\\u212e\\u211bim;\\u62e7pf;\\uc000\\ud835\\udd58\\u0100ci\\u2143\\u2146r;\\u610am\\u0180;el\\u066b\\u214e\\u2150;\\u6a8e;\\u6a90\\u8300>;cdlqr\\u05ee\\u2160\\u216a\\u216e\\u2173\\u2179\\u0100ci\\u2165\\u2167;\\u6aa7r;\\u6a7aot;\\u62d7Par;\\u6995uest;\\u6a7c\\u0280adels\\u2184\\u216a\\u2190\\u0656\\u219b\\u01f0\\u2189\\0\\u218epro\\xf8\\u209er;\\u6978q\\u0100lq\\u063f\\u2196les\\xf3\\u2088i\\xed\\u066b\\u0100en\\u21a3\\u21adrtneqq;\\uc000\\u2269\\ufe00\\xc5\\u21aa\\u0500Aabcefkosy\\u21c4\\u21c7\\u21f1\\u21f5\\u21fa\\u2218\\u221d\\u222f\\u2268\\u227dr\\xf2\\u03a0\\u0200ilmr\\u21d0\\u21d4\\u21d7\\u21dbrs\\xf0\\u1484f\\xbb\\u2024il\\xf4\\u06a9\\u0100dr\\u21e0\\u21e4cy;\\u444a\\u0180;cw\\u08f4\\u21eb\\u21efir;\\u6948;\\u61adar;\\u610firc;\\u4125\\u0180alr\\u2201\\u220e\\u2213rts\\u0100;u\\u2209\\u220a\\u6665it\\xbb\\u220alip;\\u6026con;\\u62b9r;\\uc000\\ud835\\udd25s\\u0100ew\\u2223\\u2229arow;\\u6925arow;\\u6926\\u0280amopr\\u223a\\u223e\\u2243\\u225e\\u2263rr;\\u61fftht;\\u623bk\\u0100lr\\u2249\\u2253eftarrow;\\u61a9ightarrow;\\u61aaf;\\uc000\\ud835\\udd59bar;\\u6015\\u0180clt\\u226f\\u2274\\u2278r;\\uc000\\ud835\\udcbdas\\xe8\\u21f4rok;\\u4127\\u0100bp\\u2282\\u2287ull;\\u6043hen\\xbb\\u1c5b\\u0ae1\\u22a3\\0\\u22aa\\0\\u22b8\\u22c5\\u22ce\\0\\u22d5\\u22f3\\0\\0\\u22f8\\u2322\\u2367\\u2362\\u237f\\0\\u2386\\u23aa\\u23b4cute\\u803b\\xed\\u40ed\\u0180;iy\\u0771\\u22b0\\u22b5rc\\u803b\\xee\\u40ee;\\u4438\\u0100cx\\u22bc\\u22bfy;\\u4435cl\\u803b\\xa1\\u40a1\\u0100fr\\u039f\\u22c9;\\uc000\\ud835\\udd26rave\\u803b\\xec\\u40ec\\u0200;ino\\u073e\\u22dd\\u22e9\\u22ee\\u0100in\\u22e2\\u22e6nt;\\u6a0ct;\\u622dfin;\\u69dcta;\\u6129lig;\\u4133\\u0180aop\\u22fe\\u231a\\u231d\\u0180cgt\\u2305\\u2308\\u2317r;\\u412b\\u0180elp\\u071f\\u230f\\u2313in\\xe5\\u078ear\\xf4\\u0720h;\\u4131f;\\u62b7ed;\\u41b5\\u0280;cfot\\u04f4\\u232c\\u2331\\u233d\\u2341are;\\u6105in\\u0100;t\\u2338\\u2339\\u621eie;\\u69dddo\\xf4\\u2319\\u0280;celp\\u0757\\u234c\\u2350\\u235b\\u2361al;\\u62ba\\u0100gr\\u2355\\u2359er\\xf3\\u1563\\xe3\\u234darhk;\\u6a17rod;\\u6a3c\\u0200cgpt\\u236f\\u2372\\u2376\\u237by;\\u4451on;\\u412ff;\\uc000\\ud835\\udd5aa;\\u43b9uest\\u803b\\xbf\\u40bf\\u0100ci\\u238a\\u238fr;\\uc000\\ud835\\udcben\\u0280;Edsv\\u04f4\\u239b\\u239d\\u23a1\\u04f3;\\u62f9ot;\\u62f5\\u0100;v\\u23a6\\u23a7\\u62f4;\\u62f3\\u0100;i\\u0777\\u23aelde;\\u4129\\u01eb\\u23b8\\0\\u23bccy;\\u4456l\\u803b\\xef\\u40ef\\u0300cfmosu\\u23cc\\u23d7\\u23dc\\u23e1\\u23e7\\u23f5\\u0100iy\\u23d1\\u23d5rc;\\u4135;\\u4439r;\\uc000\\ud835\\udd27ath;\\u4237pf;\\uc000\\ud835\\udd5b\\u01e3\\u23ec\\0\\u23f1r;\\uc000\\ud835\\udcbfrcy;\\u4458kcy;\\u4454\\u0400acfghjos\\u240b\\u2416\\u2422\\u2427\\u242d\\u2431\\u2435\\u243bppa\\u0100;v\\u2413\\u2414\\u43ba;\\u43f0\\u0100ey\\u241b\\u2420dil;\\u4137;\\u443ar;\\uc000\\ud835\\udd28reen;\\u4138cy;\\u4445cy;\\u445cpf;\\uc000\\ud835\\udd5ccr;\\uc000\\ud835\\udcc0\\u0b80ABEHabcdefghjlmnoprstuv\\u2470\\u2481\\u2486\\u248d\\u2491\\u250e\\u253d\\u255a\\u2580\\u264e\\u265e\\u2665\\u2679\\u267d\\u269a\\u26b2\\u26d8\\u275d\\u2768\\u278b\\u27c0\\u2801\\u2812\\u0180art\\u2477\\u247a\\u247cr\\xf2\\u09c6\\xf2\\u0395ail;\\u691barr;\\u690e\\u0100;g\\u0994\\u248b;\\u6a8bar;\\u6962\\u0963\\u24a5\\0\\u24aa\\0\\u24b1\\0\\0\\0\\0\\0\\u24b5\\u24ba\\0\\u24c6\\u24c8\\u24cd\\0\\u24f9ute;\\u413amptyv;\\u69b4ra\\xee\\u084cbda;\\u43bbg\\u0180;dl\\u088e\\u24c1\\u24c3;\\u6991\\xe5\\u088e;\\u6a85uo\\u803b\\xab\\u40abr\\u0400;bfhlpst\\u0899\\u24de\\u24e6\\u24e9\\u24eb\\u24ee\\u24f1\\u24f5\\u0100;f\\u089d\\u24e3s;\\u691fs;\\u691d\\xeb\\u2252p;\\u61abl;\\u6939im;\\u6973l;\\u61a2\\u0180;ae\\u24ff\\u2500\\u2504\\u6aabil;\\u6919\\u0100;s\\u2509\\u250a\\u6aad;\\uc000\\u2aad\\ufe00\\u0180abr\\u2515\\u2519\\u251drr;\\u690crk;\\u6772\\u0100ak\\u2522\\u252cc\\u0100ek\\u2528\\u252a;\\u407b;\\u405b\\u0100es\\u2531\\u2533;\\u698bl\\u0100du\\u2539\\u253b;\\u698f;\\u698d\\u0200aeuy\\u2546\\u254b\\u2556\\u2558ron;\\u413e\\u0100di\\u2550\\u2554il;\\u413c\\xec\\u08b0\\xe2\\u2529;\\u443b\\u0200cqrs\\u2563\\u2566\\u256d\\u257da;\\u6936uo\\u0100;r\\u0e19\\u1746\\u0100du\\u2572\\u2577har;\\u6967shar;\\u694bh;\\u61b2\\u0280;fgqs\\u258b\\u258c\\u0989\\u25f3\\u25ff\\u6264t\\u0280ahlrt\\u2598\\u25a4\\u25b7\\u25c2\\u25e8rrow\\u0100;t\\u0899\\u25a1a\\xe9\\u24f6arpoon\\u0100du\\u25af\\u25b4own\\xbb\\u045ap\\xbb\\u0966eftarrows;\\u61c7ight\\u0180ahs\\u25cd\\u25d6\\u25derrow\\u0100;s\\u08f4\\u08a7arpoon\\xf3\\u0f98quigarro\\xf7\\u21f0hreetimes;\\u62cb\\u0180;qs\\u258b\\u0993\\u25falan\\xf4\\u09ac\\u0280;cdgs\\u09ac\\u260a\\u260d\\u261d\\u2628c;\\u6aa8ot\\u0100;o\\u2614\\u2615\\u6a7f\\u0100;r\\u261a\\u261b\\u6a81;\\u6a83\\u0100;e\\u2622\\u2625\\uc000\\u22da\\ufe00s;\\u6a93\\u0280adegs\\u2633\\u2639\\u263d\\u2649\\u264bppro\\xf8\\u24c6ot;\\u62d6q\\u0100gq\\u2643\\u2645\\xf4\\u0989gt\\xf2\\u248c\\xf4\\u099bi\\xed\\u09b2\\u0180ilr\\u2655\\u08e1\\u265asht;\\u697c;\\uc000\\ud835\\udd29\\u0100;E\\u099c\\u2663;\\u6a91\\u0161\\u2669\\u2676r\\u0100du\\u25b2\\u266e\\u0100;l\\u0965\\u2673;\\u696alk;\\u6584cy;\\u4459\\u0280;acht\\u0a48\\u2688\\u268b\\u2691\\u2696r\\xf2\\u25c1orne\\xf2\\u1d08ard;\\u696bri;\\u65fa\\u0100io\\u269f\\u26a4dot;\\u4140ust\\u0100;a\\u26ac\\u26ad\\u63b0che\\xbb\\u26ad\\u0200Eaes\\u26bb\\u26bd\\u26c9\\u26d4;\\u6268p\\u0100;p\\u26c3\\u26c4\\u6a89rox\\xbb\\u26c4\\u0100;q\\u26ce\\u26cf\\u6a87\\u0100;q\\u26ce\\u26bbim;\\u62e6\\u0400abnoptwz\\u26e9\\u26f4\\u26f7\\u271a\\u272f\\u2741\\u2747\\u2750\\u0100nr\\u26ee\\u26f1g;\\u67ecr;\\u61fdr\\xeb\\u08c1g\\u0180lmr\\u26ff\\u270d\\u2714eft\\u0100ar\\u09e6\\u2707ight\\xe1\\u09f2apsto;\\u67fcight\\xe1\\u09fdparrow\\u0100lr\\u2725\\u2729ef\\xf4\\u24edight;\\u61ac\\u0180afl\\u2736\\u2739\\u273dr;\\u6985;\\uc000\\ud835\\udd5dus;\\u6a2dimes;\\u6a34\\u0161\\u274b\\u274fst;\\u6217\\xe1\\u134e\\u0180;ef\\u2757\\u2758\\u1800\\u65cange\\xbb\\u2758ar\\u0100;l\\u2764\\u2765\\u4028t;\\u6993\\u0280achmt\\u2773\\u2776\\u277c\\u2785\\u2787r\\xf2\\u08a8orne\\xf2\\u1d8car\\u0100;d\\u0f98\\u2783;\\u696d;\\u600eri;\\u62bf\\u0300achiqt\\u2798\\u279d\\u0a40\\u27a2\\u27ae\\u27bbquo;\\u6039r;\\uc000\\ud835\\udcc1m\\u0180;eg\\u09b2\\u27aa\\u27ac;\\u6a8d;\\u6a8f\\u0100bu\\u252a\\u27b3o\\u0100;r\\u0e1f\\u27b9;\\u601arok;\\u4142\\u8400<;cdhilqr\\u082b\\u27d2\\u2639\\u27dc\\u27e0\\u27e5\\u27ea\\u27f0\\u0100ci\\u27d7\\u27d9;\\u6aa6r;\\u6a79re\\xe5\\u25f2mes;\\u62c9arr;\\u6976uest;\\u6a7b\\u0100Pi\\u27f5\\u27f9ar;\\u6996\\u0180;ef\\u2800\\u092d\\u181b\\u65c3r\\u0100du\\u2807\\u280dshar;\\u694ahar;\\u6966\\u0100en\\u2817\\u2821rtneqq;\\uc000\\u2268\\ufe00\\xc5\\u281e\\u0700Dacdefhilnopsu\\u2840\\u2845\\u2882\\u288e\\u2893\\u28a0\\u28a5\\u28a8\\u28da\\u28e2\\u28e4\\u0a83\\u28f3\\u2902Dot;\\u623a\\u0200clpr\\u284e\\u2852\\u2863\\u287dr\\u803b\\xaf\\u40af\\u0100et\\u2857\\u2859;\\u6642\\u0100;e\\u285e\\u285f\\u6720se\\xbb\\u285f\\u0100;s\\u103b\\u2868to\\u0200;dlu\\u103b\\u2873\\u2877\\u287bow\\xee\\u048cef\\xf4\\u090f\\xf0\\u13d1ker;\\u65ae\\u0100oy\\u2887\\u288cmma;\\u6a29;\\u443cash;\\u6014asuredangle\\xbb\\u1626r;\\uc000\\ud835\\udd2ao;\\u6127\\u0180cdn\\u28af\\u28b4\\u28c9ro\\u803b\\xb5\\u40b5\\u0200;acd\\u1464\\u28bd\\u28c0\\u28c4s\\xf4\\u16a7ir;\\u6af0ot\\u80bb\\xb7\\u01b5us\\u0180;bd\\u28d2\\u1903\\u28d3\\u6212\\u0100;u\\u1d3c\\u28d8;\\u6a2a\\u0163\\u28de\\u28e1p;\\u6adb\\xf2\\u2212\\xf0\\u0a81\\u0100dp\\u28e9\\u28eeels;\\u62a7f;\\uc000\\ud835\\udd5e\\u0100ct\\u28f8\\u28fdr;\\uc000\\ud835\\udcc2pos\\xbb\\u159d\\u0180;lm\\u2909\\u290a\\u290d\\u43bctimap;\\u62b8\\u0c00GLRVabcdefghijlmoprstuvw\\u2942\\u2953\\u297e\\u2989\\u2998\\u29da\\u29e9\\u2a15\\u2a1a\\u2a58\\u2a5d\\u2a83\\u2a95\\u2aa4\\u2aa8\\u2b04\\u2b07\\u2b44\\u2b7f\\u2bae\\u2c34\\u2c67\\u2c7c\\u2ce9\\u0100gt\\u2947\\u294b;\\uc000\\u22d9\\u0338\\u0100;v\\u2950\\u0bcf\\uc000\\u226b\\u20d2\\u0180elt\\u295a\\u2972\\u2976ft\\u0100ar\\u2961\\u2967rrow;\\u61cdightarrow;\\u61ce;\\uc000\\u22d8\\u0338\\u0100;v\\u297b\\u0c47\\uc000\\u226a\\u20d2ightarrow;\\u61cf\\u0100Dd\\u298e\\u2993ash;\\u62afash;\\u62ae\\u0280bcnpt\\u29a3\\u29a7\\u29ac\\u29b1\\u29ccla\\xbb\\u02deute;\\u4144g;\\uc000\\u2220\\u20d2\\u0280;Eiop\\u0d84\\u29bc\\u29c0\\u29c5\\u29c8;\\uc000\\u2a70\\u0338d;\\uc000\\u224b\\u0338s;\\u4149ro\\xf8\\u0d84ur\\u0100;a\\u29d3\\u29d4\\u666el\\u0100;s\\u29d3\\u0b38\\u01f3\\u29df\\0\\u29e3p\\u80bb\\xa0\\u0b37mp\\u0100;e\\u0bf9\\u0c00\\u0280aeouy\\u29f4\\u29fe\\u2a03\\u2a10\\u2a13\\u01f0\\u29f9\\0\\u29fb;\\u6a43on;\\u4148dil;\\u4146ng\\u0100;d\\u0d7e\\u2a0aot;\\uc000\\u2a6d\\u0338p;\\u6a42;\\u443dash;\\u6013\\u0380;Aadqsx\\u0b92\\u2a29\\u2a2d\\u2a3b\\u2a41\\u2a45\\u2a50rr;\\u61d7r\\u0100hr\\u2a33\\u2a36k;\\u6924\\u0100;o\\u13f2\\u13f0ot;\\uc000\\u2250\\u0338ui\\xf6\\u0b63\\u0100ei\\u2a4a\\u2a4ear;\\u6928\\xed\\u0b98ist\\u0100;s\\u0ba0\\u0b9fr;\\uc000\\ud835\\udd2b\\u0200Eest\\u0bc5\\u2a66\\u2a79\\u2a7c\\u0180;qs\\u0bbc\\u2a6d\\u0be1\\u0180;qs\\u0bbc\\u0bc5\\u2a74lan\\xf4\\u0be2i\\xed\\u0bea\\u0100;r\\u0bb6\\u2a81\\xbb\\u0bb7\\u0180Aap\\u2a8a\\u2a8d\\u2a91r\\xf2\\u2971rr;\\u61aear;\\u6af2\\u0180;sv\\u0f8d\\u2a9c\\u0f8c\\u0100;d\\u2aa1\\u2aa2\\u62fc;\\u62facy;\\u445a\\u0380AEadest\\u2ab7\\u2aba\\u2abe\\u2ac2\\u2ac5\\u2af6\\u2af9r\\xf2\\u2966;\\uc000\\u2266\\u0338rr;\\u619ar;\\u6025\\u0200;fqs\\u0c3b\\u2ace\\u2ae3\\u2aeft\\u0100ar\\u2ad4\\u2ad9rro\\xf7\\u2ac1ightarro\\xf7\\u2a90\\u0180;qs\\u0c3b\\u2aba\\u2aealan\\xf4\\u0c55\\u0100;s\\u0c55\\u2af4\\xbb\\u0c36i\\xed\\u0c5d\\u0100;r\\u0c35\\u2afei\\u0100;e\\u0c1a\\u0c25i\\xe4\\u0d90\\u0100pt\\u2b0c\\u2b11f;\\uc000\\ud835\\udd5f\\u8180\\xac;in\\u2b19\\u2b1a\\u2b36\\u40acn\\u0200;Edv\\u0b89\\u2b24\\u2b28\\u2b2e;\\uc000\\u22f9\\u0338ot;\\uc000\\u22f5\\u0338\\u01e1\\u0b89\\u2b33\\u2b35;\\u62f7;\\u62f6i\\u0100;v\\u0cb8\\u2b3c\\u01e1\\u0cb8\\u2b41\\u2b43;\\u62fe;\\u62fd\\u0180aor\\u2b4b\\u2b63\\u2b69r\\u0200;ast\\u0b7b\\u2b55\\u2b5a\\u2b5flle\\xec\\u0b7bl;\\uc000\\u2afd\\u20e5;\\uc000\\u2202\\u0338lint;\\u6a14\\u0180;ce\\u0c92\\u2b70\\u2b73u\\xe5\\u0ca5\\u0100;c\\u0c98\\u2b78\\u0100;e\\u0c92\\u2b7d\\xf1\\u0c98\\u0200Aait\\u2b88\\u2b8b\\u2b9d\\u2ba7r\\xf2\\u2988rr\\u0180;cw\\u2b94\\u2b95\\u2b99\\u619b;\\uc000\\u2933\\u0338;\\uc000\\u219d\\u0338ghtarrow\\xbb\\u2b95ri\\u0100;e\\u0ccb\\u0cd6\\u0380chimpqu\\u2bbd\\u2bcd\\u2bd9\\u2b04\\u0b78\\u2be4\\u2bef\\u0200;cer\\u0d32\\u2bc6\\u0d37\\u2bc9u\\xe5\\u0d45;\\uc000\\ud835\\udcc3ort\\u026d\\u2b05\\0\\0\\u2bd6ar\\xe1\\u2b56m\\u0100;e\\u0d6e\\u2bdf\\u0100;q\\u0d74\\u0d73su\\u0100bp\\u2beb\\u2bed\\xe5\\u0cf8\\xe5\\u0d0b\\u0180bcp\\u2bf6\\u2c11\\u2c19\\u0200;Ees\\u2bff\\u2c00\\u0d22\\u2c04\\u6284;\\uc000\\u2ac5\\u0338et\\u0100;e\\u0d1b\\u2c0bq\\u0100;q\\u0d23\\u2c00c\\u0100;e\\u0d32\\u2c17\\xf1\\u0d38\\u0200;Ees\\u2c22\\u2c23\\u0d5f\\u2c27\\u6285;\\uc000\\u2ac6\\u0338et\\u0100;e\\u0d58\\u2c2eq\\u0100;q\\u0d60\\u2c23\\u0200gilr\\u2c3d\\u2c3f\\u2c45\\u2c47\\xec\\u0bd7lde\\u803b\\xf1\\u40f1\\xe7\\u0c43iangle\\u0100lr\\u2c52\\u2c5ceft\\u0100;e\\u0c1a\\u2c5a\\xf1\\u0c26ight\\u0100;e\\u0ccb\\u2c65\\xf1\\u0cd7\\u0100;m\\u2c6c\\u2c6d\\u43bd\\u0180;es\\u2c74\\u2c75\\u2c79\\u4023ro;\\u6116p;\\u6007\\u0480DHadgilrs\\u2c8f\\u2c94\\u2c99\\u2c9e\\u2ca3\\u2cb0\\u2cb6\\u2cd3\\u2ce3ash;\\u62adarr;\\u6904p;\\uc000\\u224d\\u20d2ash;\\u62ac\\u0100et\\u2ca8\\u2cac;\\uc000\\u2265\\u20d2;\\uc000>\\u20d2nfin;\\u69de\\u0180Aet\\u2cbd\\u2cc1\\u2cc5rr;\\u6902;\\uc000\\u2264\\u20d2\\u0100;r\\u2cca\\u2ccd\\uc000<\\u20d2ie;\\uc000\\u22b4\\u20d2\\u0100At\\u2cd8\\u2cdcrr;\\u6903rie;\\uc000\\u22b5\\u20d2im;\\uc000\\u223c\\u20d2\\u0180Aan\\u2cf0\\u2cf4\\u2d02rr;\\u61d6r\\u0100hr\\u2cfa\\u2cfdk;\\u6923\\u0100;o\\u13e7\\u13e5ear;\\u6927\\u1253\\u1a95\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\u2d2d\\0\\u2d38\\u2d48\\u2d60\\u2d65\\u2d72\\u2d84\\u1b07\\0\\0\\u2d8d\\u2dab\\0\\u2dc8\\u2dce\\0\\u2ddc\\u2e19\\u2e2b\\u2e3e\\u2e43\\u0100cs\\u2d31\\u1a97ute\\u803b\\xf3\\u40f3\\u0100iy\\u2d3c\\u2d45r\\u0100;c\\u1a9e\\u2d42\\u803b\\xf4\\u40f4;\\u443e\\u0280abios\\u1aa0\\u2d52\\u2d57\\u01c8\\u2d5alac;\\u4151v;\\u6a38old;\\u69bclig;\\u4153\\u0100cr\\u2d69\\u2d6dir;\\u69bf;\\uc000\\ud835\\udd2c\\u036f\\u2d79\\0\\0\\u2d7c\\0\\u2d82n;\\u42dbave\\u803b\\xf2\\u40f2;\\u69c1\\u0100bm\\u2d88\\u0df4ar;\\u69b5\\u0200acit\\u2d95\\u2d98\\u2da5\\u2da8r\\xf2\\u1a80\\u0100ir\\u2d9d\\u2da0r;\\u69beoss;\\u69bbn\\xe5\\u0e52;\\u69c0\\u0180aei\\u2db1\\u2db5\\u2db9cr;\\u414dga;\\u43c9\\u0180cdn\\u2dc0\\u2dc5\\u01cdron;\\u43bf;\\u69b6pf;\\uc000\\ud835\\udd60\\u0180ael\\u2dd4\\u2dd7\\u01d2r;\\u69b7rp;\\u69b9\\u0380;adiosv\\u2dea\\u2deb\\u2dee\\u2e08\\u2e0d\\u2e10\\u2e16\\u6228r\\xf2\\u1a86\\u0200;efm\\u2df7\\u2df8\\u2e02\\u2e05\\u6a5dr\\u0100;o\\u2dfe\\u2dff\\u6134f\\xbb\\u2dff\\u803b\\xaa\\u40aa\\u803b\\xba\\u40bagof;\\u62b6r;\\u6a56lope;\\u6a57;\\u6a5b\\u0180clo\\u2e1f\\u2e21\\u2e27\\xf2\\u2e01ash\\u803b\\xf8\\u40f8l;\\u6298i\\u016c\\u2e2f\\u2e34de\\u803b\\xf5\\u40f5es\\u0100;a\\u01db\\u2e3as;\\u6a36ml\\u803b\\xf6\\u40f6bar;\\u633d\\u0ae1\\u2e5e\\0\\u2e7d\\0\\u2e80\\u2e9d\\0\\u2ea2\\u2eb9\\0\\0\\u2ecb\\u0e9c\\0\\u2f13\\0\\0\\u2f2b\\u2fbc\\0\\u2fc8r\\u0200;ast\\u0403\\u2e67\\u2e72\\u0e85\\u8100\\xb6;l\\u2e6d\\u2e6e\\u40b6le\\xec\\u0403\\u0269\\u2e78\\0\\0\\u2e7bm;\\u6af3;\\u6afdy;\\u443fr\\u0280cimpt\\u2e8b\\u2e8f\\u2e93\\u1865\\u2e97nt;\\u4025od;\\u402eil;\\u6030enk;\\u6031r;\\uc000\\ud835\\udd2d\\u0180imo\\u2ea8\\u2eb0\\u2eb4\\u0100;v\\u2ead\\u2eae\\u43c6;\\u43d5ma\\xf4\\u0a76ne;\\u660e\\u0180;tv\\u2ebf\\u2ec0\\u2ec8\\u43c0chfork\\xbb\\u1ffd;\\u43d6\\u0100au\\u2ecf\\u2edfn\\u0100ck\\u2ed5\\u2eddk\\u0100;h\\u21f4\\u2edb;\\u610e\\xf6\\u21f4s\\u0480;abcdemst\\u2ef3\\u2ef4\\u1908\\u2ef9\\u2efd\\u2f04\\u2f06\\u2f0a\\u2f0e\\u402bcir;\\u6a23ir;\\u6a22\\u0100ou\\u1d40\\u2f02;\\u6a25;\\u6a72n\\u80bb\\xb1\\u0e9dim;\\u6a26wo;\\u6a27\\u0180ipu\\u2f19\\u2f20\\u2f25ntint;\\u6a15f;\\uc000\\ud835\\udd61nd\\u803b\\xa3\\u40a3\\u0500;Eaceinosu\\u0ec8\\u2f3f\\u2f41\\u2f44\\u2f47\\u2f81\\u2f89\\u2f92\\u2f7e\\u2fb6;\\u6ab3p;\\u6ab7u\\xe5\\u0ed9\\u0100;c\\u0ece\\u2f4c\\u0300;acens\\u0ec8\\u2f59\\u2f5f\\u2f66\\u2f68\\u2f7eppro\\xf8\\u2f43urlye\\xf1\\u0ed9\\xf1\\u0ece\\u0180aes\\u2f6f\\u2f76\\u2f7approx;\\u6ab9qq;\\u6ab5im;\\u62e8i\\xed\\u0edfme\\u0100;s\\u2f88\\u0eae\\u6032\\u0180Eas\\u2f78\\u2f90\\u2f7a\\xf0\\u2f75\\u0180dfp\\u0eec\\u2f99\\u2faf\\u0180als\\u2fa0\\u2fa5\\u2faalar;\\u632eine;\\u6312urf;\\u6313\\u0100;t\\u0efb\\u2fb4\\xef\\u0efbrel;\\u62b0\\u0100ci\\u2fc0\\u2fc5r;\\uc000\\ud835\\udcc5;\\u43c8ncsp;\\u6008\\u0300fiopsu\\u2fda\\u22e2\\u2fdf\\u2fe5\\u2feb\\u2ff1r;\\uc000\\ud835\\udd2epf;\\uc000\\ud835\\udd62rime;\\u6057cr;\\uc000\\ud835\\udcc6\\u0180aeo\\u2ff8\\u3009\\u3013t\\u0100ei\\u2ffe\\u3005rnion\\xf3\\u06b0nt;\\u6a16st\\u0100;e\\u3010\\u3011\\u403f\\xf1\\u1f19\\xf4\\u0f14\\u0a80ABHabcdefhilmnoprstux\\u3040\\u3051\\u3055\\u3059\\u30e0\\u310e\\u312b\\u3147\\u3162\\u3172\\u318e\\u3206\\u3215\\u3224\\u3229\\u3258\\u326e\\u3272\\u3290\\u32b0\\u32b7\\u0180art\\u3047\\u304a\\u304cr\\xf2\\u10b3\\xf2\\u03ddail;\\u691car\\xf2\\u1c65ar;\\u6964\\u0380cdenqrt\\u3068\\u3075\\u3078\\u307f\\u308f\\u3094\\u30cc\\u0100eu\\u306d\\u3071;\\uc000\\u223d\\u0331te;\\u4155i\\xe3\\u116emptyv;\\u69b3g\\u0200;del\\u0fd1\\u3089\\u308b\\u308d;\\u6992;\\u69a5\\xe5\\u0fd1uo\\u803b\\xbb\\u40bbr\\u0580;abcfhlpstw\\u0fdc\\u30ac\\u30af\\u30b7\\u30b9\\u30bc\\u30be\\u30c0\\u30c3\\u30c7\\u30cap;\\u6975\\u0100;f\\u0fe0\\u30b4s;\\u6920;\\u6933s;\\u691e\\xeb\\u225d\\xf0\\u272el;\\u6945im;\\u6974l;\\u61a3;\\u619d\\u0100ai\\u30d1\\u30d5il;\\u691ao\\u0100;n\\u30db\\u30dc\\u6236al\\xf3\\u0f1e\\u0180abr\\u30e7\\u30ea\\u30eer\\xf2\\u17e5rk;\\u6773\\u0100ak\\u30f3\\u30fdc\\u0100ek\\u30f9\\u30fb;\\u407d;\\u405d\\u0100es\\u3102\\u3104;\\u698cl\\u0100du\\u310a\\u310c;\\u698e;\\u6990\\u0200aeuy\\u3117\\u311c\\u3127\\u3129ron;\\u4159\\u0100di\\u3121\\u3125il;\\u4157\\xec\\u0ff2\\xe2\\u30fa;\\u4440\\u0200clqs\\u3134\\u3137\\u313d\\u3144a;\\u6937dhar;\\u6969uo\\u0100;r\\u020e\\u020dh;\\u61b3\\u0180acg\\u314e\\u315f\\u0f44l\\u0200;ips\\u0f78\\u3158\\u315b\\u109cn\\xe5\\u10bbar\\xf4\\u0fa9t;\\u65ad\\u0180ilr\\u3169\\u1023\\u316esht;\\u697d;\\uc000\\ud835\\udd2f\\u0100ao\\u3177\\u3186r\\u0100du\\u317d\\u317f\\xbb\\u047b\\u0100;l\\u1091\\u3184;\\u696c\\u0100;v\\u318b\\u318c\\u43c1;\\u43f1\\u0180gns\\u3195\\u31f9\\u31fcht\\u0300ahlrst\\u31a4\\u31b0\\u31c2\\u31d8\\u31e4\\u31eerrow\\u0100;t\\u0fdc\\u31ada\\xe9\\u30c8arpoon\\u0100du\\u31bb\\u31bfow\\xee\\u317ep\\xbb\\u1092eft\\u0100ah\\u31ca\\u31d0rrow\\xf3\\u0feaarpoon\\xf3\\u0551ightarrows;\\u61c9quigarro\\xf7\\u30cbhreetimes;\\u62ccg;\\u42daingdotse\\xf1\\u1f32\\u0180ahm\\u320d\\u3210\\u3213r\\xf2\\u0feaa\\xf2\\u0551;\\u600foust\\u0100;a\\u321e\\u321f\\u63b1che\\xbb\\u321fmid;\\u6aee\\u0200abpt\\u3232\\u323d\\u3240\\u3252\\u0100nr\\u3237\\u323ag;\\u67edr;\\u61fer\\xeb\\u1003\\u0180afl\\u3247\\u324a\\u324er;\\u6986;\\uc000\\ud835\\udd63us;\\u6a2eimes;\\u6a35\\u0100ap\\u325d\\u3267r\\u0100;g\\u3263\\u3264\\u4029t;\\u6994olint;\\u6a12ar\\xf2\\u31e3\\u0200achq\\u327b\\u3280\\u10bc\\u3285quo;\\u603ar;\\uc000\\ud835\\udcc7\\u0100bu\\u30fb\\u328ao\\u0100;r\\u0214\\u0213\\u0180hir\\u3297\\u329b\\u32a0re\\xe5\\u31f8mes;\\u62cai\\u0200;efl\\u32aa\\u1059\\u1821\\u32ab\\u65b9tri;\\u69celuhar;\\u6968;\\u611e\\u0d61\\u32d5\\u32db\\u32df\\u332c\\u3338\\u3371\\0\\u337a\\u33a4\\0\\0\\u33ec\\u33f0\\0\\u3428\\u3448\\u345a\\u34ad\\u34b1\\u34ca\\u34f1\\0\\u3616\\0\\0\\u3633cute;\\u415bqu\\xef\\u27ba\\u0500;Eaceinpsy\\u11ed\\u32f3\\u32f5\\u32ff\\u3302\\u330b\\u330f\\u331f\\u3326\\u3329;\\u6ab4\\u01f0\\u32fa\\0\\u32fc;\\u6ab8on;\\u4161u\\xe5\\u11fe\\u0100;d\\u11f3\\u3307il;\\u415frc;\\u415d\\u0180Eas\\u3316\\u3318\\u331b;\\u6ab6p;\\u6abaim;\\u62e9olint;\\u6a13i\\xed\\u1204;\\u4441ot\\u0180;be\\u3334\\u1d47\\u3335\\u62c5;\\u6a66\\u0380Aacmstx\\u3346\\u334a\\u3357\\u335b\\u335e\\u3363\\u336drr;\\u61d8r\\u0100hr\\u3350\\u3352\\xeb\\u2228\\u0100;o\\u0a36\\u0a34t\\u803b\\xa7\\u40a7i;\\u403bwar;\\u6929m\\u0100in\\u3369\\xf0nu\\xf3\\xf1t;\\u6736r\\u0100;o\\u3376\\u2055\\uc000\\ud835\\udd30\\u0200acoy\\u3382\\u3386\\u3391\\u33a0rp;\\u666f\\u0100hy\\u338b\\u338fcy;\\u4449;\\u4448rt\\u026d\\u3399\\0\\0\\u339ci\\xe4\\u1464ara\\xec\\u2e6f\\u803b\\xad\\u40ad\\u0100gm\\u33a8\\u33b4ma\\u0180;fv\\u33b1\\u33b2\\u33b2\\u43c3;\\u43c2\\u0400;deglnpr\\u12ab\\u33c5\\u33c9\\u33ce\\u33d6\\u33de\\u33e1\\u33e6ot;\\u6a6a\\u0100;q\\u12b1\\u12b0\\u0100;E\\u33d3\\u33d4\\u6a9e;\\u6aa0\\u0100;E\\u33db\\u33dc\\u6a9d;\\u6a9fe;\\u6246lus;\\u6a24arr;\\u6972ar\\xf2\\u113d\\u0200aeit\\u33f8\\u3408\\u340f\\u3417\\u0100ls\\u33fd\\u3404lsetm\\xe9\\u336ahp;\\u6a33parsl;\\u69e4\\u0100dl\\u1463\\u3414e;\\u6323\\u0100;e\\u341c\\u341d\\u6aaa\\u0100;s\\u3422\\u3423\\u6aac;\\uc000\\u2aac\\ufe00\\u0180flp\\u342e\\u3433\\u3442tcy;\\u444c\\u0100;b\\u3438\\u3439\\u402f\\u0100;a\\u343e\\u343f\\u69c4r;\\u633ff;\\uc000\\ud835\\udd64a\\u0100dr\\u344d\\u0402es\\u0100;u\\u3454\\u3455\\u6660it\\xbb\\u3455\\u0180csu\\u3460\\u3479\\u349f\\u0100au\\u3465\\u346fp\\u0100;s\\u1188\\u346b;\\uc000\\u2293\\ufe00p\\u0100;s\\u11b4\\u3475;\\uc000\\u2294\\ufe00u\\u0100bp\\u347f\\u348f\\u0180;es\\u1197\\u119c\\u3486et\\u0100;e\\u1197\\u348d\\xf1\\u119d\\u0180;es\\u11a8\\u11ad\\u3496et\\u0100;e\\u11a8\\u349d\\xf1\\u11ae\\u0180;af\\u117b\\u34a6\\u05b0r\\u0165\\u34ab\\u05b1\\xbb\\u117car\\xf2\\u1148\\u0200cemt\\u34b9\\u34be\\u34c2\\u34c5r;\\uc000\\ud835\\udcc8tm\\xee\\xf1i\\xec\\u3415ar\\xe6\\u11be\\u0100ar\\u34ce\\u34d5r\\u0100;f\\u34d4\\u17bf\\u6606\\u0100an\\u34da\\u34edight\\u0100ep\\u34e3\\u34eapsilo\\xee\\u1ee0h\\xe9\\u2eafs\\xbb\\u2852\\u0280bcmnp\\u34fb\\u355e\\u1209\\u358b\\u358e\\u0480;Edemnprs\\u350e\\u350f\\u3511\\u3515\\u351e\\u3523\\u352c\\u3531\\u3536\\u6282;\\u6ac5ot;\\u6abd\\u0100;d\\u11da\\u351aot;\\u6ac3ult;\\u6ac1\\u0100Ee\\u3528\\u352a;\\u6acb;\\u628alus;\\u6abfarr;\\u6979\\u0180eiu\\u353d\\u3552\\u3555t\\u0180;en\\u350e\\u3545\\u354bq\\u0100;q\\u11da\\u350feq\\u0100;q\\u352b\\u3528m;\\u6ac7\\u0100bp\\u355a\\u355c;\\u6ad5;\\u6ad3c\\u0300;acens\\u11ed\\u356c\\u3572\\u3579\\u357b\\u3326ppro\\xf8\\u32faurlye\\xf1\\u11fe\\xf1\\u11f3\\u0180aes\\u3582\\u3588\\u331bppro\\xf8\\u331aq\\xf1\\u3317g;\\u666a\\u0680123;Edehlmnps\\u35a9\\u35ac\\u35af\\u121c\\u35b2\\u35b4\\u35c0\\u35c9\\u35d5\\u35da\\u35df\\u35e8\\u35ed\\u803b\\xb9\\u40b9\\u803b\\xb2\\u40b2\\u803b\\xb3\\u40b3;\\u6ac6\\u0100os\\u35b9\\u35bct;\\u6abeub;\\u6ad8\\u0100;d\\u1222\\u35c5ot;\\u6ac4s\\u0100ou\\u35cf\\u35d2l;\\u67c9b;\\u6ad7arr;\\u697bult;\\u6ac2\\u0100Ee\\u35e4\\u35e6;\\u6acc;\\u628blus;\\u6ac0\\u0180eiu\\u35f4\\u3609\\u360ct\\u0180;en\\u121c\\u35fc\\u3602q\\u0100;q\\u1222\\u35b2eq\\u0100;q\\u35e7\\u35e4m;\\u6ac8\\u0100bp\\u3611\\u3613;\\u6ad4;\\u6ad6\\u0180Aan\\u361c\\u3620\\u362drr;\\u61d9r\\u0100hr\\u3626\\u3628\\xeb\\u222e\\u0100;o\\u0a2b\\u0a29war;\\u692alig\\u803b\\xdf\\u40df\\u0be1\\u3651\\u365d\\u3660\\u12ce\\u3673\\u3679\\0\\u367e\\u36c2\\0\\0\\0\\0\\0\\u36db\\u3703\\0\\u3709\\u376c\\0\\0\\0\\u3787\\u0272\\u3656\\0\\0\\u365bget;\\u6316;\\u43c4r\\xeb\\u0e5f\\u0180aey\\u3666\\u366b\\u3670ron;\\u4165dil;\\u4163;\\u4442lrec;\\u6315r;\\uc000\\ud835\\udd31\\u0200eiko\\u3686\\u369d\\u36b5\\u36bc\\u01f2\\u368b\\0\\u3691e\\u01004f\\u1284\\u1281a\\u0180;sv\\u3698\\u3699\\u369b\\u43b8ym;\\u43d1\\u0100cn\\u36a2\\u36b2k\\u0100as\\u36a8\\u36aeppro\\xf8\\u12c1im\\xbb\\u12acs\\xf0\\u129e\\u0100as\\u36ba\\u36ae\\xf0\\u12c1rn\\u803b\\xfe\\u40fe\\u01ec\\u031f\\u36c6\\u22e7es\\u8180\\xd7;bd\\u36cf\\u36d0\\u36d8\\u40d7\\u0100;a\\u190f\\u36d5r;\\u6a31;\\u6a30\\u0180eps\\u36e1\\u36e3\\u3700\\xe1\\u2a4d\\u0200;bcf\\u0486\\u36ec\\u36f0\\u36f4ot;\\u6336ir;\\u6af1\\u0100;o\\u36f9\\u36fc\\uc000\\ud835\\udd65rk;\\u6ada\\xe1\\u3362rime;\\u6034\\u0180aip\\u370f\\u3712\\u3764d\\xe5\\u1248\\u0380adempst\\u3721\\u374d\\u3740\\u3751\\u3757\\u375c\\u375fngle\\u0280;dlqr\\u3730\\u3731\\u3736\\u3740\\u3742\\u65b5own\\xbb\\u1dbbeft\\u0100;e\\u2800\\u373e\\xf1\\u092e;\\u625cight\\u0100;e\\u32aa\\u374b\\xf1\\u105aot;\\u65ecinus;\\u6a3alus;\\u6a39b;\\u69cdime;\\u6a3bezium;\\u63e2\\u0180cht\\u3772\\u377d\\u3781\\u0100ry\\u3777\\u377b;\\uc000\\ud835\\udcc9;\\u4446cy;\\u445brok;\\u4167\\u0100io\\u378b\\u378ex\\xf4\\u1777head\\u0100lr\\u3797\\u37a0eftarro\\xf7\\u084fightarrow\\xbb\\u0f5d\\u0900AHabcdfghlmoprstuw\\u37d0\\u37d3\\u37d7\\u37e4\\u37f0\\u37fc\\u380e\\u381c\\u3823\\u3834\\u3851\\u385d\\u386b\\u38a9\\u38cc\\u38d2\\u38ea\\u38f6r\\xf2\\u03edar;\\u6963\\u0100cr\\u37dc\\u37e2ute\\u803b\\xfa\\u40fa\\xf2\\u1150r\\u01e3\\u37ea\\0\\u37edy;\\u445eve;\\u416d\\u0100iy\\u37f5\\u37farc\\u803b\\xfb\\u40fb;\\u4443\\u0180abh\\u3803\\u3806\\u380br\\xf2\\u13adlac;\\u4171a\\xf2\\u13c3\\u0100ir\\u3813\\u3818sht;\\u697e;\\uc000\\ud835\\udd32rave\\u803b\\xf9\\u40f9\\u0161\\u3827\\u3831r\\u0100lr\\u382c\\u382e\\xbb\\u0957\\xbb\\u1083lk;\\u6580\\u0100ct\\u3839\\u384d\\u026f\\u383f\\0\\0\\u384arn\\u0100;e\\u3845\\u3846\\u631cr\\xbb\\u3846op;\\u630fri;\\u65f8\\u0100al\\u3856\\u385acr;\\u416b\\u80bb\\xa8\\u0349\\u0100gp\\u3862\\u3866on;\\u4173f;\\uc000\\ud835\\udd66\\u0300adhlsu\\u114b\\u3878\\u387d\\u1372\\u3891\\u38a0own\\xe1\\u13b3arpoon\\u0100lr\\u3888\\u388cef\\xf4\\u382digh\\xf4\\u382fi\\u0180;hl\\u3899\\u389a\\u389c\\u43c5\\xbb\\u13faon\\xbb\\u389aparrows;\\u61c8\\u0180cit\\u38b0\\u38c4\\u38c8\\u026f\\u38b6\\0\\0\\u38c1rn\\u0100;e\\u38bc\\u38bd\\u631dr\\xbb\\u38bdop;\\u630eng;\\u416fri;\\u65f9cr;\\uc000\\ud835\\udcca\\u0180dir\\u38d9\\u38dd\\u38e2ot;\\u62f0lde;\\u4169i\\u0100;f\\u3730\\u38e8\\xbb\\u1813\\u0100am\\u38ef\\u38f2r\\xf2\\u38a8l\\u803b\\xfc\\u40fcangle;\\u69a7\\u0780ABDacdeflnoprsz\\u391c\\u391f\\u3929\\u392d\\u39b5\\u39b8\\u39bd\\u39df\\u39e4\\u39e8\\u39f3\\u39f9\\u39fd\\u3a01\\u3a20r\\xf2\\u03f7ar\\u0100;v\\u3926\\u3927\\u6ae8;\\u6ae9as\\xe8\\u03e1\\u0100nr\\u3932\\u3937grt;\\u699c\\u0380eknprst\\u34e3\\u3946\\u394b\\u3952\\u395d\\u3964\\u3996app\\xe1\\u2415othin\\xe7\\u1e96\\u0180hir\\u34eb\\u2ec8\\u3959op\\xf4\\u2fb5\\u0100;h\\u13b7\\u3962\\xef\\u318d\\u0100iu\\u3969\\u396dgm\\xe1\\u33b3\\u0100bp\\u3972\\u3984setneq\\u0100;q\\u397d\\u3980\\uc000\\u228a\\ufe00;\\uc000\\u2acb\\ufe00setneq\\u0100;q\\u398f\\u3992\\uc000\\u228b\\ufe00;\\uc000\\u2acc\\ufe00\\u0100hr\\u399b\\u399fet\\xe1\\u369ciangle\\u0100lr\\u39aa\\u39afeft\\xbb\\u0925ight\\xbb\\u1051y;\\u4432ash\\xbb\\u1036\\u0180elr\\u39c4\\u39d2\\u39d7\\u0180;be\\u2dea\\u39cb\\u39cfar;\\u62bbq;\\u625alip;\\u62ee\\u0100bt\\u39dc\\u1468a\\xf2\\u1469r;\\uc000\\ud835\\udd33tr\\xe9\\u39aesu\\u0100bp\\u39ef\\u39f1\\xbb\\u0d1c\\xbb\\u0d59pf;\\uc000\\ud835\\udd67ro\\xf0\\u0efbtr\\xe9\\u39b4\\u0100cu\\u3a06\\u3a0br;\\uc000\\ud835\\udccb\\u0100bp\\u3a10\\u3a18n\\u0100Ee\\u3980\\u3a16\\xbb\\u397en\\u0100Ee\\u3992\\u3a1e\\xbb\\u3990igzag;\\u699a\\u0380cefoprs\\u3a36\\u3a3b\\u3a56\\u3a5b\\u3a54\\u3a61\\u3a6airc;\\u4175\\u0100di\\u3a40\\u3a51\\u0100bg\\u3a45\\u3a49ar;\\u6a5fe\\u0100;q\\u15fa\\u3a4f;\\u6259erp;\\u6118r;\\uc000\\ud835\\udd34pf;\\uc000\\ud835\\udd68\\u0100;e\\u1479\\u3a66at\\xe8\\u1479cr;\\uc000\\ud835\\udccc\\u0ae3\\u178e\\u3a87\\0\\u3a8b\\0\\u3a90\\u3a9b\\0\\0\\u3a9d\\u3aa8\\u3aab\\u3aaf\\0\\0\\u3ac3\\u3ace\\0\\u3ad8\\u17dc\\u17dftr\\xe9\\u17d1r;\\uc000\\ud835\\udd35\\u0100Aa\\u3a94\\u3a97r\\xf2\\u03c3r\\xf2\\u09f6;\\u43be\\u0100Aa\\u3aa1\\u3aa4r\\xf2\\u03b8r\\xf2\\u09eba\\xf0\\u2713is;\\u62fb\\u0180dpt\\u17a4\\u3ab5\\u3abe\\u0100fl\\u3aba\\u17a9;\\uc000\\ud835\\udd69im\\xe5\\u17b2\\u0100Aa\\u3ac7\\u3acar\\xf2\\u03cer\\xf2\\u0a01\\u0100cq\\u3ad2\\u17b8r;\\uc000\\ud835\\udccd\\u0100pt\\u17d6\\u3adcr\\xe9\\u17d4\\u0400acefiosu\\u3af0\\u3afd\\u3b08\\u3b0c\\u3b11\\u3b15\\u3b1b\\u3b21c\\u0100uy\\u3af6\\u3afbte\\u803b\\xfd\\u40fd;\\u444f\\u0100iy\\u3b02\\u3b06rc;\\u4177;\\u444bn\\u803b\\xa5\\u40a5r;\\uc000\\ud835\\udd36cy;\\u4457pf;\\uc000\\ud835\\udd6acr;\\uc000\\ud835\\udcce\\u0100cm\\u3b26\\u3b29y;\\u444el\\u803b\\xff\\u40ff\\u0500acdefhiosw\\u3b42\\u3b48\\u3b54\\u3b58\\u3b64\\u3b69\\u3b6d\\u3b74\\u3b7a\\u3b80cute;\\u417a\\u0100ay\\u3b4d\\u3b52ron;\\u417e;\\u4437ot;\\u417c\\u0100et\\u3b5d\\u3b61tr\\xe6\\u155fa;\\u43b6r;\\uc000\\ud835\\udd37cy;\\u4436grarr;\\u61ddpf;\\uc000\\ud835\\udd6bcr;\\uc000\\ud835\\udccf\\u0100jn\\u3b85\\u3b87;\\u600dj;\\u600c\"\n    .split(\"\")\n    .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-html.js.map","// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nconst decodeMap = new Map([\n    [0, 65533],\n    // C1 Unicode control character reference replacements\n    [128, 8364],\n    [130, 8218],\n    [131, 402],\n    [132, 8222],\n    [133, 8230],\n    [134, 8224],\n    [135, 8225],\n    [136, 710],\n    [137, 8240],\n    [138, 352],\n    [139, 8249],\n    [140, 338],\n    [142, 381],\n    [145, 8216],\n    [146, 8217],\n    [147, 8220],\n    [148, 8221],\n    [149, 8226],\n    [150, 8211],\n    [151, 8212],\n    [152, 732],\n    [153, 8482],\n    [154, 353],\n    [155, 8250],\n    [156, 339],\n    [158, 382],\n    [159, 376],\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexport const fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n    let output = \"\";\n    if (codePoint > 65535) {\n        codePoint -= 65536;\n        output += String.fromCharCode(((codePoint >>> 10) & 1023) | 55296);\n        codePoint = 56320 | (codePoint & 1023);\n    }\n    output += String.fromCharCode(codePoint);\n    return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nexport function replaceCodePoint(codePoint) {\n    var _a;\n    if ((codePoint >= 55296 && codePoint <= 57343) ||\n        codePoint > 1114111) {\n        return 65533;\n    }\n    return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nexport function decodeCodePoint(codePoint) {\n    return fromCodePoint(replaceCodePoint(codePoint));\n}\n//# sourceMappingURL=decode-codepoint.js.map","import { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nimport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\nimport { replaceCodePoint, fromCodePoint } from \"./decode-codepoint.js\";\nvar CharCodes;\n(function (CharCodes) {\n    CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n    CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n    CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n    CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n    CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n    CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n    CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n    CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n    CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n    CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n    CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n    CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nconst TO_LOWER_BIT = 32;\nexport var BinTrieFlags;\n(function (BinTrieFlags) {\n    BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n    BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n    BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags || (BinTrieFlags = {}));\nfunction isNumber(code) {\n    return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n    return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n        (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n    return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n        (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n        isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code) {\n    return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n    EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n    EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n    EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n    EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n    EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nexport var DecodingMode;\n(function (DecodingMode) {\n    /** Entities in text nodes that can end with any character. */\n    DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n    /** Only allow entities terminated with a semicolon. */\n    DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n    /** Entities in attributes have limitations on ending characters. */\n    DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode || (DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n    constructor(\n    /** The tree used to decode entities. */\n    decodeTree, \n    /**\n     * The function that is called when a codepoint is decoded.\n     *\n     * For multi-byte named entities, this will be called multiple times,\n     * with the second codepoint, and the same `consumed` value.\n     *\n     * @param codepoint The decoded codepoint.\n     * @param consumed The number of bytes consumed by the decoder.\n     */\n    emitCodePoint, \n    /** An object that is used to produce errors. */\n    errors) {\n        this.decodeTree = decodeTree;\n        this.emitCodePoint = emitCodePoint;\n        this.errors = errors;\n        /** The current state of the decoder. */\n        this.state = EntityDecoderState.EntityStart;\n        /** Characters that were consumed while parsing an entity. */\n        this.consumed = 1;\n        /**\n         * The result of the entity.\n         *\n         * Either the result index of a numeric entity, or the codepoint of a\n         * numeric entity.\n         */\n        this.result = 0;\n        /** The current index in the decode tree. */\n        this.treeIndex = 0;\n        /** The number of characters that were consumed in excess. */\n        this.excess = 1;\n        /** The mode in which the decoder is operating. */\n        this.decodeMode = DecodingMode.Strict;\n    }\n    /** Resets the instance to make it reusable. */\n    startEntity(decodeMode) {\n        this.decodeMode = decodeMode;\n        this.state = EntityDecoderState.EntityStart;\n        this.result = 0;\n        this.treeIndex = 0;\n        this.excess = 1;\n        this.consumed = 1;\n    }\n    /**\n     * Write an entity to the decoder. This can be called multiple times with partial entities.\n     * If the entity is incomplete, the decoder will return -1.\n     *\n     * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n     * entity is incomplete, and resume when the next string is written.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    write(input, offset) {\n        switch (this.state) {\n            case EntityDecoderState.EntityStart: {\n                if (input.charCodeAt(offset) === CharCodes.NUM) {\n                    this.state = EntityDecoderState.NumericStart;\n                    this.consumed += 1;\n                    return this.stateNumericStart(input, offset + 1);\n                }\n                this.state = EntityDecoderState.NamedEntity;\n                return this.stateNamedEntity(input, offset);\n            }\n            case EntityDecoderState.NumericStart: {\n                return this.stateNumericStart(input, offset);\n            }\n            case EntityDecoderState.NumericDecimal: {\n                return this.stateNumericDecimal(input, offset);\n            }\n            case EntityDecoderState.NumericHex: {\n                return this.stateNumericHex(input, offset);\n            }\n            case EntityDecoderState.NamedEntity: {\n                return this.stateNamedEntity(input, offset);\n            }\n        }\n    }\n    /**\n     * Switches between the numeric decimal and hexadecimal states.\n     *\n     * Equivalent to the `Numeric character reference state` in the HTML spec.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNumericStart(input, offset) {\n        if (offset >= input.length) {\n            return -1;\n        }\n        if ((input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n            this.state = EntityDecoderState.NumericHex;\n            this.consumed += 1;\n            return this.stateNumericHex(input, offset + 1);\n        }\n        this.state = EntityDecoderState.NumericDecimal;\n        return this.stateNumericDecimal(input, offset);\n    }\n    addToNumericResult(input, start, end, base) {\n        if (start !== end) {\n            const digitCount = end - start;\n            this.result =\n                this.result * Math.pow(base, digitCount) +\n                    Number.parseInt(input.substr(start, digitCount), base);\n            this.consumed += digitCount;\n        }\n    }\n    /**\n     * Parses a hexadecimal numeric entity.\n     *\n     * Equivalent to the `Hexademical character reference state` in the HTML spec.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNumericHex(input, offset) {\n        const startIndex = offset;\n        while (offset < input.length) {\n            const char = input.charCodeAt(offset);\n            if (isNumber(char) || isHexadecimalCharacter(char)) {\n                offset += 1;\n            }\n            else {\n                this.addToNumericResult(input, startIndex, offset, 16);\n                return this.emitNumericEntity(char, 3);\n            }\n        }\n        this.addToNumericResult(input, startIndex, offset, 16);\n        return -1;\n    }\n    /**\n     * Parses a decimal numeric entity.\n     *\n     * Equivalent to the `Decimal character reference state` in the HTML spec.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNumericDecimal(input, offset) {\n        const startIndex = offset;\n        while (offset < input.length) {\n            const char = input.charCodeAt(offset);\n            if (isNumber(char)) {\n                offset += 1;\n            }\n            else {\n                this.addToNumericResult(input, startIndex, offset, 10);\n                return this.emitNumericEntity(char, 2);\n            }\n        }\n        this.addToNumericResult(input, startIndex, offset, 10);\n        return -1;\n    }\n    /**\n     * Validate and emit a numeric entity.\n     *\n     * Implements the logic from the `Hexademical character reference start\n     * state` and `Numeric character reference end state` in the HTML spec.\n     *\n     * @param lastCp The last code point of the entity. Used to see if the\n     *               entity was terminated with a semicolon.\n     * @param expectedLength The minimum number of characters that should be\n     *                       consumed. Used to validate that at least one digit\n     *                       was consumed.\n     * @returns The number of characters that were consumed.\n     */\n    emitNumericEntity(lastCp, expectedLength) {\n        var _a;\n        // Ensure we consumed at least one digit.\n        if (this.consumed <= expectedLength) {\n            (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n            return 0;\n        }\n        // Figure out if this is a legit end of the entity\n        if (lastCp === CharCodes.SEMI) {\n            this.consumed += 1;\n        }\n        else if (this.decodeMode === DecodingMode.Strict) {\n            return 0;\n        }\n        this.emitCodePoint(replaceCodePoint(this.result), this.consumed);\n        if (this.errors) {\n            if (lastCp !== CharCodes.SEMI) {\n                this.errors.missingSemicolonAfterCharacterReference();\n            }\n            this.errors.validateNumericCharacterReference(this.result);\n        }\n        return this.consumed;\n    }\n    /**\n     * Parses a named entity.\n     *\n     * Equivalent to the `Named character reference state` in the HTML spec.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNamedEntity(input, offset) {\n        const { decodeTree } = this;\n        let current = decodeTree[this.treeIndex];\n        // The mask is the number of bytes of the value, including the current byte.\n        let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n        for (; offset < input.length; offset++, this.excess++) {\n            const char = input.charCodeAt(offset);\n            this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n            if (this.treeIndex < 0) {\n                return this.result === 0 ||\n                    // If we are parsing an attribute\n                    (this.decodeMode === DecodingMode.Attribute &&\n                        // We shouldn't have consumed any characters after the entity,\n                        (valueLength === 0 ||\n                            // And there should be no invalid characters.\n                            isEntityInAttributeInvalidEnd(char)))\n                    ? 0\n                    : this.emitNotTerminatedNamedEntity();\n            }\n            current = decodeTree[this.treeIndex];\n            valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n            // If the branch is a value, store it and continue\n            if (valueLength !== 0) {\n                // If the entity is terminated by a semicolon, we are done.\n                if (char === CharCodes.SEMI) {\n                    return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n                }\n                // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n                if (this.decodeMode !== DecodingMode.Strict) {\n                    this.result = this.treeIndex;\n                    this.consumed += this.excess;\n                    this.excess = 0;\n                }\n            }\n        }\n        return -1;\n    }\n    /**\n     * Emit a named entity that was not terminated with a semicolon.\n     *\n     * @returns The number of characters consumed.\n     */\n    emitNotTerminatedNamedEntity() {\n        var _a;\n        const { result, decodeTree } = this;\n        const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n        this.emitNamedEntityData(result, valueLength, this.consumed);\n        (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n        return this.consumed;\n    }\n    /**\n     * Emit a named entity.\n     *\n     * @param result The index of the entity in the decode tree.\n     * @param valueLength The number of bytes in the entity.\n     * @param consumed The number of characters consumed.\n     *\n     * @returns The number of characters consumed.\n     */\n    emitNamedEntityData(result, valueLength, consumed) {\n        const { decodeTree } = this;\n        this.emitCodePoint(valueLength === 1\n            ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n            : decodeTree[result + 1], consumed);\n        if (valueLength === 3) {\n            // For multi-byte values, we need to emit the second byte.\n            this.emitCodePoint(decodeTree[result + 2], consumed);\n        }\n        return consumed;\n    }\n    /**\n     * Signal to the parser that the end of the input was reached.\n     *\n     * Remaining data will be emitted and relevant errors will be produced.\n     *\n     * @returns The number of characters consumed.\n     */\n    end() {\n        var _a;\n        switch (this.state) {\n            case EntityDecoderState.NamedEntity: {\n                // Emit a named entity if we have one.\n                return this.result !== 0 &&\n                    (this.decodeMode !== DecodingMode.Attribute ||\n                        this.result === this.treeIndex)\n                    ? this.emitNotTerminatedNamedEntity()\n                    : 0;\n            }\n            // Otherwise, emit a numeric entity if we have one.\n            case EntityDecoderState.NumericDecimal: {\n                return this.emitNumericEntity(0, 2);\n            }\n            case EntityDecoderState.NumericHex: {\n                return this.emitNumericEntity(0, 3);\n            }\n            case EntityDecoderState.NumericStart: {\n                (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n                return 0;\n            }\n            case EntityDecoderState.EntityStart: {\n                // Return 0 if we have no entity.\n                return 0;\n            }\n        }\n    }\n}\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n    let returnValue = \"\";\n    const decoder = new EntityDecoder(decodeTree, (data) => (returnValue += fromCodePoint(data)));\n    return function decodeWithTrie(input, decodeMode) {\n        let lastIndex = 0;\n        let offset = 0;\n        while ((offset = input.indexOf(\"&\", offset)) >= 0) {\n            returnValue += input.slice(lastIndex, offset);\n            decoder.startEntity(decodeMode);\n            const length = decoder.write(input, \n            // Skip the \"&\"\n            offset + 1);\n            if (length < 0) {\n                lastIndex = offset + decoder.end();\n                break;\n            }\n            lastIndex = offset + length;\n            // If `length` is 0, skip the current `&` and continue.\n            offset = length === 0 ? lastIndex + 1 : lastIndex;\n        }\n        const result = returnValue + input.slice(lastIndex);\n        // Make sure we don't keep a reference to the final string.\n        returnValue = \"\";\n        return result;\n    };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nexport function determineBranch(decodeTree, current, nodeIndex, char) {\n    const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n    const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n    // Case 1: Single branch encoded in jump offset\n    if (branchCount === 0) {\n        return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1;\n    }\n    // Case 2: Multiple branches encoded in jump table\n    if (jumpOffset) {\n        const value = char - jumpOffset;\n        return value < 0 || value >= branchCount\n            ? -1\n            : decodeTree[nodeIndex + value] - 1;\n    }\n    // Case 3: Multiple branches encoded in dictionary\n    // Binary search for the character.\n    let lo = nodeIndex;\n    let hi = lo + branchCount - 1;\n    while (lo <= hi) {\n        const mid = (lo + hi) >>> 1;\n        const midValue = decodeTree[mid];\n        if (midValue < char) {\n            lo = mid + 1;\n        }\n        else if (midValue > char) {\n            hi = mid - 1;\n        }\n        else {\n            return decodeTree[mid + branchCount];\n        }\n    }\n    return -1;\n}\nconst htmlDecoder = /* #__PURE__ */ getDecoder(htmlDecodeTree);\nconst xmlDecoder = /* #__PURE__ */ getDecoder(xmlDecodeTree);\n/**\n * Decodes an HTML string.\n *\n * @param htmlString The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nexport function decodeHTML(htmlString, mode = DecodingMode.Legacy) {\n    return htmlDecoder(htmlString, mode);\n}\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param htmlAttribute The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(htmlAttribute) {\n    return htmlDecoder(htmlAttribute, DecodingMode.Attribute);\n}\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param htmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLStrict(htmlString) {\n    return htmlDecoder(htmlString, DecodingMode.Strict);\n}\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param xmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeXML(xmlString) {\n    return xmlDecoder(xmlString, DecodingMode.Strict);\n}\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nexport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\nexport { decodeCodePoint, replaceCodePoint, fromCodePoint, } from \"./decode-codepoint.js\";\n//# sourceMappingURL=decode.js.map","/** All valid namespaces in HTML. */\nexport var NS;\n(function (NS) {\n    NS[\"HTML\"] = \"http://www.w3.org/1999/xhtml\";\n    NS[\"MATHML\"] = \"http://www.w3.org/1998/Math/MathML\";\n    NS[\"SVG\"] = \"http://www.w3.org/2000/svg\";\n    NS[\"XLINK\"] = \"http://www.w3.org/1999/xlink\";\n    NS[\"XML\"] = \"http://www.w3.org/XML/1998/namespace\";\n    NS[\"XMLNS\"] = \"http://www.w3.org/2000/xmlns/\";\n})(NS || (NS = {}));\nexport var ATTRS;\n(function (ATTRS) {\n    ATTRS[\"TYPE\"] = \"type\";\n    ATTRS[\"ACTION\"] = \"action\";\n    ATTRS[\"ENCODING\"] = \"encoding\";\n    ATTRS[\"PROMPT\"] = \"prompt\";\n    ATTRS[\"NAME\"] = \"name\";\n    ATTRS[\"COLOR\"] = \"color\";\n    ATTRS[\"FACE\"] = \"face\";\n    ATTRS[\"SIZE\"] = \"size\";\n})(ATTRS || (ATTRS = {}));\n/**\n * The mode of the document.\n *\n * @see {@link https://dom.spec.whatwg.org/#concept-document-limited-quirks}\n */\nexport var DOCUMENT_MODE;\n(function (DOCUMENT_MODE) {\n    DOCUMENT_MODE[\"NO_QUIRKS\"] = \"no-quirks\";\n    DOCUMENT_MODE[\"QUIRKS\"] = \"quirks\";\n    DOCUMENT_MODE[\"LIMITED_QUIRKS\"] = \"limited-quirks\";\n})(DOCUMENT_MODE || (DOCUMENT_MODE = {}));\nexport var TAG_NAMES;\n(function (TAG_NAMES) {\n    TAG_NAMES[\"A\"] = \"a\";\n    TAG_NAMES[\"ADDRESS\"] = \"address\";\n    TAG_NAMES[\"ANNOTATION_XML\"] = \"annotation-xml\";\n    TAG_NAMES[\"APPLET\"] = \"applet\";\n    TAG_NAMES[\"AREA\"] = \"area\";\n    TAG_NAMES[\"ARTICLE\"] = \"article\";\n    TAG_NAMES[\"ASIDE\"] = \"aside\";\n    TAG_NAMES[\"B\"] = \"b\";\n    TAG_NAMES[\"BASE\"] = \"base\";\n    TAG_NAMES[\"BASEFONT\"] = \"basefont\";\n    TAG_NAMES[\"BGSOUND\"] = \"bgsound\";\n    TAG_NAMES[\"BIG\"] = \"big\";\n    TAG_NAMES[\"BLOCKQUOTE\"] = \"blockquote\";\n    TAG_NAMES[\"BODY\"] = \"body\";\n    TAG_NAMES[\"BR\"] = \"br\";\n    TAG_NAMES[\"BUTTON\"] = \"button\";\n    TAG_NAMES[\"CAPTION\"] = \"caption\";\n    TAG_NAMES[\"CENTER\"] = \"center\";\n    TAG_NAMES[\"CODE\"] = \"code\";\n    TAG_NAMES[\"COL\"] = \"col\";\n    TAG_NAMES[\"COLGROUP\"] = \"colgroup\";\n    TAG_NAMES[\"DD\"] = \"dd\";\n    TAG_NAMES[\"DESC\"] = \"desc\";\n    TAG_NAMES[\"DETAILS\"] = \"details\";\n    TAG_NAMES[\"DIALOG\"] = \"dialog\";\n    TAG_NAMES[\"DIR\"] = \"dir\";\n    TAG_NAMES[\"DIV\"] = \"div\";\n    TAG_NAMES[\"DL\"] = \"dl\";\n    TAG_NAMES[\"DT\"] = \"dt\";\n    TAG_NAMES[\"EM\"] = \"em\";\n    TAG_NAMES[\"EMBED\"] = \"embed\";\n    TAG_NAMES[\"FIELDSET\"] = \"fieldset\";\n    TAG_NAMES[\"FIGCAPTION\"] = \"figcaption\";\n    TAG_NAMES[\"FIGURE\"] = \"figure\";\n    TAG_NAMES[\"FONT\"] = \"font\";\n    TAG_NAMES[\"FOOTER\"] = \"footer\";\n    TAG_NAMES[\"FOREIGN_OBJECT\"] = \"foreignObject\";\n    TAG_NAMES[\"FORM\"] = \"form\";\n    TAG_NAMES[\"FRAME\"] = \"frame\";\n    TAG_NAMES[\"FRAMESET\"] = \"frameset\";\n    TAG_NAMES[\"H1\"] = \"h1\";\n    TAG_NAMES[\"H2\"] = \"h2\";\n    TAG_NAMES[\"H3\"] = \"h3\";\n    TAG_NAMES[\"H4\"] = \"h4\";\n    TAG_NAMES[\"H5\"] = \"h5\";\n    TAG_NAMES[\"H6\"] = \"h6\";\n    TAG_NAMES[\"HEAD\"] = \"head\";\n    TAG_NAMES[\"HEADER\"] = \"header\";\n    TAG_NAMES[\"HGROUP\"] = \"hgroup\";\n    TAG_NAMES[\"HR\"] = \"hr\";\n    TAG_NAMES[\"HTML\"] = \"html\";\n    TAG_NAMES[\"I\"] = \"i\";\n    TAG_NAMES[\"IMG\"] = \"img\";\n    TAG_NAMES[\"IMAGE\"] = \"image\";\n    TAG_NAMES[\"INPUT\"] = \"input\";\n    TAG_NAMES[\"IFRAME\"] = \"iframe\";\n    TAG_NAMES[\"KEYGEN\"] = \"keygen\";\n    TAG_NAMES[\"LABEL\"] = \"label\";\n    TAG_NAMES[\"LI\"] = \"li\";\n    TAG_NAMES[\"LINK\"] = \"link\";\n    TAG_NAMES[\"LISTING\"] = \"listing\";\n    TAG_NAMES[\"MAIN\"] = \"main\";\n    TAG_NAMES[\"MALIGNMARK\"] = \"malignmark\";\n    TAG_NAMES[\"MARQUEE\"] = \"marquee\";\n    TAG_NAMES[\"MATH\"] = \"math\";\n    TAG_NAMES[\"MENU\"] = \"menu\";\n    TAG_NAMES[\"META\"] = \"meta\";\n    TAG_NAMES[\"MGLYPH\"] = \"mglyph\";\n    TAG_NAMES[\"MI\"] = \"mi\";\n    TAG_NAMES[\"MO\"] = \"mo\";\n    TAG_NAMES[\"MN\"] = \"mn\";\n    TAG_NAMES[\"MS\"] = \"ms\";\n    TAG_NAMES[\"MTEXT\"] = \"mtext\";\n    TAG_NAMES[\"NAV\"] = \"nav\";\n    TAG_NAMES[\"NOBR\"] = \"nobr\";\n    TAG_NAMES[\"NOFRAMES\"] = \"noframes\";\n    TAG_NAMES[\"NOEMBED\"] = \"noembed\";\n    TAG_NAMES[\"NOSCRIPT\"] = \"noscript\";\n    TAG_NAMES[\"OBJECT\"] = \"object\";\n    TAG_NAMES[\"OL\"] = \"ol\";\n    TAG_NAMES[\"OPTGROUP\"] = \"optgroup\";\n    TAG_NAMES[\"OPTION\"] = \"option\";\n    TAG_NAMES[\"P\"] = \"p\";\n    TAG_NAMES[\"PARAM\"] = \"param\";\n    TAG_NAMES[\"PLAINTEXT\"] = \"plaintext\";\n    TAG_NAMES[\"PRE\"] = \"pre\";\n    TAG_NAMES[\"RB\"] = \"rb\";\n    TAG_NAMES[\"RP\"] = \"rp\";\n    TAG_NAMES[\"RT\"] = \"rt\";\n    TAG_NAMES[\"RTC\"] = \"rtc\";\n    TAG_NAMES[\"RUBY\"] = \"ruby\";\n    TAG_NAMES[\"S\"] = \"s\";\n    TAG_NAMES[\"SCRIPT\"] = \"script\";\n    TAG_NAMES[\"SEARCH\"] = \"search\";\n    TAG_NAMES[\"SECTION\"] = \"section\";\n    TAG_NAMES[\"SELECT\"] = \"select\";\n    TAG_NAMES[\"SOURCE\"] = \"source\";\n    TAG_NAMES[\"SMALL\"] = \"small\";\n    TAG_NAMES[\"SPAN\"] = \"span\";\n    TAG_NAMES[\"STRIKE\"] = \"strike\";\n    TAG_NAMES[\"STRONG\"] = \"strong\";\n    TAG_NAMES[\"STYLE\"] = \"style\";\n    TAG_NAMES[\"SUB\"] = \"sub\";\n    TAG_NAMES[\"SUMMARY\"] = \"summary\";\n    TAG_NAMES[\"SUP\"] = \"sup\";\n    TAG_NAMES[\"TABLE\"] = \"table\";\n    TAG_NAMES[\"TBODY\"] = \"tbody\";\n    TAG_NAMES[\"TEMPLATE\"] = \"template\";\n    TAG_NAMES[\"TEXTAREA\"] = \"textarea\";\n    TAG_NAMES[\"TFOOT\"] = \"tfoot\";\n    TAG_NAMES[\"TD\"] = \"td\";\n    TAG_NAMES[\"TH\"] = \"th\";\n    TAG_NAMES[\"THEAD\"] = \"thead\";\n    TAG_NAMES[\"TITLE\"] = \"title\";\n    TAG_NAMES[\"TR\"] = \"tr\";\n    TAG_NAMES[\"TRACK\"] = \"track\";\n    TAG_NAMES[\"TT\"] = \"tt\";\n    TAG_NAMES[\"U\"] = \"u\";\n    TAG_NAMES[\"UL\"] = \"ul\";\n    TAG_NAMES[\"SVG\"] = \"svg\";\n    TAG_NAMES[\"VAR\"] = \"var\";\n    TAG_NAMES[\"WBR\"] = \"wbr\";\n    TAG_NAMES[\"XMP\"] = \"xmp\";\n})(TAG_NAMES || (TAG_NAMES = {}));\n/**\n * Tag IDs are numeric IDs for known tag names.\n *\n * We use tag IDs to improve the performance of tag name comparisons.\n */\nexport var TAG_ID;\n(function (TAG_ID) {\n    TAG_ID[TAG_ID[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n    TAG_ID[TAG_ID[\"A\"] = 1] = \"A\";\n    TAG_ID[TAG_ID[\"ADDRESS\"] = 2] = \"ADDRESS\";\n    TAG_ID[TAG_ID[\"ANNOTATION_XML\"] = 3] = \"ANNOTATION_XML\";\n    TAG_ID[TAG_ID[\"APPLET\"] = 4] = \"APPLET\";\n    TAG_ID[TAG_ID[\"AREA\"] = 5] = \"AREA\";\n    TAG_ID[TAG_ID[\"ARTICLE\"] = 6] = \"ARTICLE\";\n    TAG_ID[TAG_ID[\"ASIDE\"] = 7] = \"ASIDE\";\n    TAG_ID[TAG_ID[\"B\"] = 8] = \"B\";\n    TAG_ID[TAG_ID[\"BASE\"] = 9] = \"BASE\";\n    TAG_ID[TAG_ID[\"BASEFONT\"] = 10] = \"BASEFONT\";\n    TAG_ID[TAG_ID[\"BGSOUND\"] = 11] = \"BGSOUND\";\n    TAG_ID[TAG_ID[\"BIG\"] = 12] = \"BIG\";\n    TAG_ID[TAG_ID[\"BLOCKQUOTE\"] = 13] = \"BLOCKQUOTE\";\n    TAG_ID[TAG_ID[\"BODY\"] = 14] = \"BODY\";\n    TAG_ID[TAG_ID[\"BR\"] = 15] = \"BR\";\n    TAG_ID[TAG_ID[\"BUTTON\"] = 16] = \"BUTTON\";\n    TAG_ID[TAG_ID[\"CAPTION\"] = 17] = \"CAPTION\";\n    TAG_ID[TAG_ID[\"CENTER\"] = 18] = \"CENTER\";\n    TAG_ID[TAG_ID[\"CODE\"] = 19] = \"CODE\";\n    TAG_ID[TAG_ID[\"COL\"] = 20] = \"COL\";\n    TAG_ID[TAG_ID[\"COLGROUP\"] = 21] = \"COLGROUP\";\n    TAG_ID[TAG_ID[\"DD\"] = 22] = \"DD\";\n    TAG_ID[TAG_ID[\"DESC\"] = 23] = \"DESC\";\n    TAG_ID[TAG_ID[\"DETAILS\"] = 24] = \"DETAILS\";\n    TAG_ID[TAG_ID[\"DIALOG\"] = 25] = \"DIALOG\";\n    TAG_ID[TAG_ID[\"DIR\"] = 26] = \"DIR\";\n    TAG_ID[TAG_ID[\"DIV\"] = 27] = \"DIV\";\n    TAG_ID[TAG_ID[\"DL\"] = 28] = \"DL\";\n    TAG_ID[TAG_ID[\"DT\"] = 29] = \"DT\";\n    TAG_ID[TAG_ID[\"EM\"] = 30] = \"EM\";\n    TAG_ID[TAG_ID[\"EMBED\"] = 31] = \"EMBED\";\n    TAG_ID[TAG_ID[\"FIELDSET\"] = 32] = \"FIELDSET\";\n    TAG_ID[TAG_ID[\"FIGCAPTION\"] = 33] = \"FIGCAPTION\";\n    TAG_ID[TAG_ID[\"FIGURE\"] = 34] = \"FIGURE\";\n    TAG_ID[TAG_ID[\"FONT\"] = 35] = \"FONT\";\n    TAG_ID[TAG_ID[\"FOOTER\"] = 36] = \"FOOTER\";\n    TAG_ID[TAG_ID[\"FOREIGN_OBJECT\"] = 37] = \"FOREIGN_OBJECT\";\n    TAG_ID[TAG_ID[\"FORM\"] = 38] = \"FORM\";\n    TAG_ID[TAG_ID[\"FRAME\"] = 39] = \"FRAME\";\n    TAG_ID[TAG_ID[\"FRAMESET\"] = 40] = \"FRAMESET\";\n    TAG_ID[TAG_ID[\"H1\"] = 41] = \"H1\";\n    TAG_ID[TAG_ID[\"H2\"] = 42] = \"H2\";\n    TAG_ID[TAG_ID[\"H3\"] = 43] = \"H3\";\n    TAG_ID[TAG_ID[\"H4\"] = 44] = \"H4\";\n    TAG_ID[TAG_ID[\"H5\"] = 45] = \"H5\";\n    TAG_ID[TAG_ID[\"H6\"] = 46] = \"H6\";\n    TAG_ID[TAG_ID[\"HEAD\"] = 47] = \"HEAD\";\n    TAG_ID[TAG_ID[\"HEADER\"] = 48] = \"HEADER\";\n    TAG_ID[TAG_ID[\"HGROUP\"] = 49] = \"HGROUP\";\n    TAG_ID[TAG_ID[\"HR\"] = 50] = \"HR\";\n    TAG_ID[TAG_ID[\"HTML\"] = 51] = \"HTML\";\n    TAG_ID[TAG_ID[\"I\"] = 52] = \"I\";\n    TAG_ID[TAG_ID[\"IMG\"] = 53] = \"IMG\";\n    TAG_ID[TAG_ID[\"IMAGE\"] = 54] = \"IMAGE\";\n    TAG_ID[TAG_ID[\"INPUT\"] = 55] = \"INPUT\";\n    TAG_ID[TAG_ID[\"IFRAME\"] = 56] = \"IFRAME\";\n    TAG_ID[TAG_ID[\"KEYGEN\"] = 57] = \"KEYGEN\";\n    TAG_ID[TAG_ID[\"LABEL\"] = 58] = \"LABEL\";\n    TAG_ID[TAG_ID[\"LI\"] = 59] = \"LI\";\n    TAG_ID[TAG_ID[\"LINK\"] = 60] = \"LINK\";\n    TAG_ID[TAG_ID[\"LISTING\"] = 61] = \"LISTING\";\n    TAG_ID[TAG_ID[\"MAIN\"] = 62] = \"MAIN\";\n    TAG_ID[TAG_ID[\"MALIGNMARK\"] = 63] = \"MALIGNMARK\";\n    TAG_ID[TAG_ID[\"MARQUEE\"] = 64] = \"MARQUEE\";\n    TAG_ID[TAG_ID[\"MATH\"] = 65] = \"MATH\";\n    TAG_ID[TAG_ID[\"MENU\"] = 66] = \"MENU\";\n    TAG_ID[TAG_ID[\"META\"] = 67] = \"META\";\n    TAG_ID[TAG_ID[\"MGLYPH\"] = 68] = \"MGLYPH\";\n    TAG_ID[TAG_ID[\"MI\"] = 69] = \"MI\";\n    TAG_ID[TAG_ID[\"MO\"] = 70] = \"MO\";\n    TAG_ID[TAG_ID[\"MN\"] = 71] = \"MN\";\n    TAG_ID[TAG_ID[\"MS\"] = 72] = \"MS\";\n    TAG_ID[TAG_ID[\"MTEXT\"] = 73] = \"MTEXT\";\n    TAG_ID[TAG_ID[\"NAV\"] = 74] = \"NAV\";\n    TAG_ID[TAG_ID[\"NOBR\"] = 75] = \"NOBR\";\n    TAG_ID[TAG_ID[\"NOFRAMES\"] = 76] = \"NOFRAMES\";\n    TAG_ID[TAG_ID[\"NOEMBED\"] = 77] = \"NOEMBED\";\n    TAG_ID[TAG_ID[\"NOSCRIPT\"] = 78] = \"NOSCRIPT\";\n    TAG_ID[TAG_ID[\"OBJECT\"] = 79] = \"OBJECT\";\n    TAG_ID[TAG_ID[\"OL\"] = 80] = \"OL\";\n    TAG_ID[TAG_ID[\"OPTGROUP\"] = 81] = \"OPTGROUP\";\n    TAG_ID[TAG_ID[\"OPTION\"] = 82] = \"OPTION\";\n    TAG_ID[TAG_ID[\"P\"] = 83] = \"P\";\n    TAG_ID[TAG_ID[\"PARAM\"] = 84] = \"PARAM\";\n    TAG_ID[TAG_ID[\"PLAINTEXT\"] = 85] = \"PLAINTEXT\";\n    TAG_ID[TAG_ID[\"PRE\"] = 86] = \"PRE\";\n    TAG_ID[TAG_ID[\"RB\"] = 87] = \"RB\";\n    TAG_ID[TAG_ID[\"RP\"] = 88] = \"RP\";\n    TAG_ID[TAG_ID[\"RT\"] = 89] = \"RT\";\n    TAG_ID[TAG_ID[\"RTC\"] = 90] = \"RTC\";\n    TAG_ID[TAG_ID[\"RUBY\"] = 91] = \"RUBY\";\n    TAG_ID[TAG_ID[\"S\"] = 92] = \"S\";\n    TAG_ID[TAG_ID[\"SCRIPT\"] = 93] = \"SCRIPT\";\n    TAG_ID[TAG_ID[\"SEARCH\"] = 94] = \"SEARCH\";\n    TAG_ID[TAG_ID[\"SECTION\"] = 95] = \"SECTION\";\n    TAG_ID[TAG_ID[\"SELECT\"] = 96] = \"SELECT\";\n    TAG_ID[TAG_ID[\"SOURCE\"] = 97] = \"SOURCE\";\n    TAG_ID[TAG_ID[\"SMALL\"] = 98] = \"SMALL\";\n    TAG_ID[TAG_ID[\"SPAN\"] = 99] = \"SPAN\";\n    TAG_ID[TAG_ID[\"STRIKE\"] = 100] = \"STRIKE\";\n    TAG_ID[TAG_ID[\"STRONG\"] = 101] = \"STRONG\";\n    TAG_ID[TAG_ID[\"STYLE\"] = 102] = \"STYLE\";\n    TAG_ID[TAG_ID[\"SUB\"] = 103] = \"SUB\";\n    TAG_ID[TAG_ID[\"SUMMARY\"] = 104] = \"SUMMARY\";\n    TAG_ID[TAG_ID[\"SUP\"] = 105] = \"SUP\";\n    TAG_ID[TAG_ID[\"TABLE\"] = 106] = \"TABLE\";\n    TAG_ID[TAG_ID[\"TBODY\"] = 107] = \"TBODY\";\n    TAG_ID[TAG_ID[\"TEMPLATE\"] = 108] = \"TEMPLATE\";\n    TAG_ID[TAG_ID[\"TEXTAREA\"] = 109] = \"TEXTAREA\";\n    TAG_ID[TAG_ID[\"TFOOT\"] = 110] = \"TFOOT\";\n    TAG_ID[TAG_ID[\"TD\"] = 111] = \"TD\";\n    TAG_ID[TAG_ID[\"TH\"] = 112] = \"TH\";\n    TAG_ID[TAG_ID[\"THEAD\"] = 113] = \"THEAD\";\n    TAG_ID[TAG_ID[\"TITLE\"] = 114] = \"TITLE\";\n    TAG_ID[TAG_ID[\"TR\"] = 115] = \"TR\";\n    TAG_ID[TAG_ID[\"TRACK\"] = 116] = \"TRACK\";\n    TAG_ID[TAG_ID[\"TT\"] = 117] = \"TT\";\n    TAG_ID[TAG_ID[\"U\"] = 118] = \"U\";\n    TAG_ID[TAG_ID[\"UL\"] = 119] = \"UL\";\n    TAG_ID[TAG_ID[\"SVG\"] = 120] = \"SVG\";\n    TAG_ID[TAG_ID[\"VAR\"] = 121] = \"VAR\";\n    TAG_ID[TAG_ID[\"WBR\"] = 122] = \"WBR\";\n    TAG_ID[TAG_ID[\"XMP\"] = 123] = \"XMP\";\n})(TAG_ID || (TAG_ID = {}));\nconst TAG_NAME_TO_ID = new Map([\n    [TAG_NAMES.A, TAG_ID.A],\n    [TAG_NAMES.ADDRESS, TAG_ID.ADDRESS],\n    [TAG_NAMES.ANNOTATION_XML, TAG_ID.ANNOTATION_XML],\n    [TAG_NAMES.APPLET, TAG_ID.APPLET],\n    [TAG_NAMES.AREA, TAG_ID.AREA],\n    [TAG_NAMES.ARTICLE, TAG_ID.ARTICLE],\n    [TAG_NAMES.ASIDE, TAG_ID.ASIDE],\n    [TAG_NAMES.B, TAG_ID.B],\n    [TAG_NAMES.BASE, TAG_ID.BASE],\n    [TAG_NAMES.BASEFONT, TAG_ID.BASEFONT],\n    [TAG_NAMES.BGSOUND, TAG_ID.BGSOUND],\n    [TAG_NAMES.BIG, TAG_ID.BIG],\n    [TAG_NAMES.BLOCKQUOTE, TAG_ID.BLOCKQUOTE],\n    [TAG_NAMES.BODY, TAG_ID.BODY],\n    [TAG_NAMES.BR, TAG_ID.BR],\n    [TAG_NAMES.BUTTON, TAG_ID.BUTTON],\n    [TAG_NAMES.CAPTION, TAG_ID.CAPTION],\n    [TAG_NAMES.CENTER, TAG_ID.CENTER],\n    [TAG_NAMES.CODE, TAG_ID.CODE],\n    [TAG_NAMES.COL, TAG_ID.COL],\n    [TAG_NAMES.COLGROUP, TAG_ID.COLGROUP],\n    [TAG_NAMES.DD, TAG_ID.DD],\n    [TAG_NAMES.DESC, TAG_ID.DESC],\n    [TAG_NAMES.DETAILS, TAG_ID.DETAILS],\n    [TAG_NAMES.DIALOG, TAG_ID.DIALOG],\n    [TAG_NAMES.DIR, TAG_ID.DIR],\n    [TAG_NAMES.DIV, TAG_ID.DIV],\n    [TAG_NAMES.DL, TAG_ID.DL],\n    [TAG_NAMES.DT, TAG_ID.DT],\n    [TAG_NAMES.EM, TAG_ID.EM],\n    [TAG_NAMES.EMBED, TAG_ID.EMBED],\n    [TAG_NAMES.FIELDSET, TAG_ID.FIELDSET],\n    [TAG_NAMES.FIGCAPTION, TAG_ID.FIGCAPTION],\n    [TAG_NAMES.FIGURE, TAG_ID.FIGURE],\n    [TAG_NAMES.FONT, TAG_ID.FONT],\n    [TAG_NAMES.FOOTER, TAG_ID.FOOTER],\n    [TAG_NAMES.FOREIGN_OBJECT, TAG_ID.FOREIGN_OBJECT],\n    [TAG_NAMES.FORM, TAG_ID.FORM],\n    [TAG_NAMES.FRAME, TAG_ID.FRAME],\n    [TAG_NAMES.FRAMESET, TAG_ID.FRAMESET],\n    [TAG_NAMES.H1, TAG_ID.H1],\n    [TAG_NAMES.H2, TAG_ID.H2],\n    [TAG_NAMES.H3, TAG_ID.H3],\n    [TAG_NAMES.H4, TAG_ID.H4],\n    [TAG_NAMES.H5, TAG_ID.H5],\n    [TAG_NAMES.H6, TAG_ID.H6],\n    [TAG_NAMES.HEAD, TAG_ID.HEAD],\n    [TAG_NAMES.HEADER, TAG_ID.HEADER],\n    [TAG_NAMES.HGROUP, TAG_ID.HGROUP],\n    [TAG_NAMES.HR, TAG_ID.HR],\n    [TAG_NAMES.HTML, TAG_ID.HTML],\n    [TAG_NAMES.I, TAG_ID.I],\n    [TAG_NAMES.IMG, TAG_ID.IMG],\n    [TAG_NAMES.IMAGE, TAG_ID.IMAGE],\n    [TAG_NAMES.INPUT, TAG_ID.INPUT],\n    [TAG_NAMES.IFRAME, TAG_ID.IFRAME],\n    [TAG_NAMES.KEYGEN, TAG_ID.KEYGEN],\n    [TAG_NAMES.LABEL, TAG_ID.LABEL],\n    [TAG_NAMES.LI, TAG_ID.LI],\n    [TAG_NAMES.LINK, TAG_ID.LINK],\n    [TAG_NAMES.LISTING, TAG_ID.LISTING],\n    [TAG_NAMES.MAIN, TAG_ID.MAIN],\n    [TAG_NAMES.MALIGNMARK, TAG_ID.MALIGNMARK],\n    [TAG_NAMES.MARQUEE, TAG_ID.MARQUEE],\n    [TAG_NAMES.MATH, TAG_ID.MATH],\n    [TAG_NAMES.MENU, TAG_ID.MENU],\n    [TAG_NAMES.META, TAG_ID.META],\n    [TAG_NAMES.MGLYPH, TAG_ID.MGLYPH],\n    [TAG_NAMES.MI, TAG_ID.MI],\n    [TAG_NAMES.MO, TAG_ID.MO],\n    [TAG_NAMES.MN, TAG_ID.MN],\n    [TAG_NAMES.MS, TAG_ID.MS],\n    [TAG_NAMES.MTEXT, TAG_ID.MTEXT],\n    [TAG_NAMES.NAV, TAG_ID.NAV],\n    [TAG_NAMES.NOBR, TAG_ID.NOBR],\n    [TAG_NAMES.NOFRAMES, TAG_ID.NOFRAMES],\n    [TAG_NAMES.NOEMBED, TAG_ID.NOEMBED],\n    [TAG_NAMES.NOSCRIPT, TAG_ID.NOSCRIPT],\n    [TAG_NAMES.OBJECT, TAG_ID.OBJECT],\n    [TAG_NAMES.OL, TAG_ID.OL],\n    [TAG_NAMES.OPTGROUP, TAG_ID.OPTGROUP],\n    [TAG_NAMES.OPTION, TAG_ID.OPTION],\n    [TAG_NAMES.P, TAG_ID.P],\n    [TAG_NAMES.PARAM, TAG_ID.PARAM],\n    [TAG_NAMES.PLAINTEXT, TAG_ID.PLAINTEXT],\n    [TAG_NAMES.PRE, TAG_ID.PRE],\n    [TAG_NAMES.RB, TAG_ID.RB],\n    [TAG_NAMES.RP, TAG_ID.RP],\n    [TAG_NAMES.RT, TAG_ID.RT],\n    [TAG_NAMES.RTC, TAG_ID.RTC],\n    [TAG_NAMES.RUBY, TAG_ID.RUBY],\n    [TAG_NAMES.S, TAG_ID.S],\n    [TAG_NAMES.SCRIPT, TAG_ID.SCRIPT],\n    [TAG_NAMES.SEARCH, TAG_ID.SEARCH],\n    [TAG_NAMES.SECTION, TAG_ID.SECTION],\n    [TAG_NAMES.SELECT, TAG_ID.SELECT],\n    [TAG_NAMES.SOURCE, TAG_ID.SOURCE],\n    [TAG_NAMES.SMALL, TAG_ID.SMALL],\n    [TAG_NAMES.SPAN, TAG_ID.SPAN],\n    [TAG_NAMES.STRIKE, TAG_ID.STRIKE],\n    [TAG_NAMES.STRONG, TAG_ID.STRONG],\n    [TAG_NAMES.STYLE, TAG_ID.STYLE],\n    [TAG_NAMES.SUB, TAG_ID.SUB],\n    [TAG_NAMES.SUMMARY, TAG_ID.SUMMARY],\n    [TAG_NAMES.SUP, TAG_ID.SUP],\n    [TAG_NAMES.TABLE, TAG_ID.TABLE],\n    [TAG_NAMES.TBODY, TAG_ID.TBODY],\n    [TAG_NAMES.TEMPLATE, TAG_ID.TEMPLATE],\n    [TAG_NAMES.TEXTAREA, TAG_ID.TEXTAREA],\n    [TAG_NAMES.TFOOT, TAG_ID.TFOOT],\n    [TAG_NAMES.TD, TAG_ID.TD],\n    [TAG_NAMES.TH, TAG_ID.TH],\n    [TAG_NAMES.THEAD, TAG_ID.THEAD],\n    [TAG_NAMES.TITLE, TAG_ID.TITLE],\n    [TAG_NAMES.TR, TAG_ID.TR],\n    [TAG_NAMES.TRACK, TAG_ID.TRACK],\n    [TAG_NAMES.TT, TAG_ID.TT],\n    [TAG_NAMES.U, TAG_ID.U],\n    [TAG_NAMES.UL, TAG_ID.UL],\n    [TAG_NAMES.SVG, TAG_ID.SVG],\n    [TAG_NAMES.VAR, TAG_ID.VAR],\n    [TAG_NAMES.WBR, TAG_ID.WBR],\n    [TAG_NAMES.XMP, TAG_ID.XMP],\n]);\nexport function getTagID(tagName) {\n    var _a;\n    return (_a = TAG_NAME_TO_ID.get(tagName)) !== null && _a !== void 0 ? _a : TAG_ID.UNKNOWN;\n}\nconst $ = TAG_ID;\nexport const SPECIAL_ELEMENTS = {\n    [NS.HTML]: new Set([\n        $.ADDRESS,\n        $.APPLET,\n        $.AREA,\n        $.ARTICLE,\n        $.ASIDE,\n        $.BASE,\n        $.BASEFONT,\n        $.BGSOUND,\n        $.BLOCKQUOTE,\n        $.BODY,\n        $.BR,\n        $.BUTTON,\n        $.CAPTION,\n        $.CENTER,\n        $.COL,\n        $.COLGROUP,\n        $.DD,\n        $.DETAILS,\n        $.DIR,\n        $.DIV,\n        $.DL,\n        $.DT,\n        $.EMBED,\n        $.FIELDSET,\n        $.FIGCAPTION,\n        $.FIGURE,\n        $.FOOTER,\n        $.FORM,\n        $.FRAME,\n        $.FRAMESET,\n        $.H1,\n        $.H2,\n        $.H3,\n        $.H4,\n        $.H5,\n        $.H6,\n        $.HEAD,\n        $.HEADER,\n        $.HGROUP,\n        $.HR,\n        $.HTML,\n        $.IFRAME,\n        $.IMG,\n        $.INPUT,\n        $.LI,\n        $.LINK,\n        $.LISTING,\n        $.MAIN,\n        $.MARQUEE,\n        $.MENU,\n        $.META,\n        $.NAV,\n        $.NOEMBED,\n        $.NOFRAMES,\n        $.NOSCRIPT,\n        $.OBJECT,\n        $.OL,\n        $.P,\n        $.PARAM,\n        $.PLAINTEXT,\n        $.PRE,\n        $.SCRIPT,\n        $.SECTION,\n        $.SELECT,\n        $.SOURCE,\n        $.STYLE,\n        $.SUMMARY,\n        $.TABLE,\n        $.TBODY,\n        $.TD,\n        $.TEMPLATE,\n        $.TEXTAREA,\n        $.TFOOT,\n        $.TH,\n        $.THEAD,\n        $.TITLE,\n        $.TR,\n        $.TRACK,\n        $.UL,\n        $.WBR,\n        $.XMP,\n    ]),\n    [NS.MATHML]: new Set([$.MI, $.MO, $.MN, $.MS, $.MTEXT, $.ANNOTATION_XML]),\n    [NS.SVG]: new Set([$.TITLE, $.FOREIGN_OBJECT, $.DESC]),\n    [NS.XLINK]: new Set(),\n    [NS.XML]: new Set(),\n    [NS.XMLNS]: new Set(),\n};\nexport const NUMBERED_HEADERS = new Set([$.H1, $.H2, $.H3, $.H4, $.H5, $.H6]);\nconst UNESCAPED_TEXT = new Set([\n    TAG_NAMES.STYLE,\n    TAG_NAMES.SCRIPT,\n    TAG_NAMES.XMP,\n    TAG_NAMES.IFRAME,\n    TAG_NAMES.NOEMBED,\n    TAG_NAMES.NOFRAMES,\n    TAG_NAMES.PLAINTEXT,\n]);\nexport function hasUnescapedText(tn, scriptingEnabled) {\n    return UNESCAPED_TEXT.has(tn) || (scriptingEnabled && tn === TAG_NAMES.NOSCRIPT);\n}\n","import { Preprocessor } from './preprocessor.js';\nimport { CODE_POINTS as $, SEQUENCES as $$, REPLACEMENT_CHARACTER, isSurrogate, isUndefinedCodePoint, isControlCodePoint, } from '../common/unicode.js';\nimport { TokenType, getTokenAttr, } from '../common/token.js';\nimport { htmlDecodeTree, EntityDecoder, DecodingMode } from 'entities/decode';\nimport { ERR } from '../common/error-codes.js';\nimport { TAG_ID, getTagID } from '../common/html.js';\n//States\nvar State;\n(function (State) {\n    State[State[\"DATA\"] = 0] = \"DATA\";\n    State[State[\"RCDATA\"] = 1] = \"RCDATA\";\n    State[State[\"RAWTEXT\"] = 2] = \"RAWTEXT\";\n    State[State[\"SCRIPT_DATA\"] = 3] = \"SCRIPT_DATA\";\n    State[State[\"PLAINTEXT\"] = 4] = \"PLAINTEXT\";\n    State[State[\"TAG_OPEN\"] = 5] = \"TAG_OPEN\";\n    State[State[\"END_TAG_OPEN\"] = 6] = \"END_TAG_OPEN\";\n    State[State[\"TAG_NAME\"] = 7] = \"TAG_NAME\";\n    State[State[\"RCDATA_LESS_THAN_SIGN\"] = 8] = \"RCDATA_LESS_THAN_SIGN\";\n    State[State[\"RCDATA_END_TAG_OPEN\"] = 9] = \"RCDATA_END_TAG_OPEN\";\n    State[State[\"RCDATA_END_TAG_NAME\"] = 10] = \"RCDATA_END_TAG_NAME\";\n    State[State[\"RAWTEXT_LESS_THAN_SIGN\"] = 11] = \"RAWTEXT_LESS_THAN_SIGN\";\n    State[State[\"RAWTEXT_END_TAG_OPEN\"] = 12] = \"RAWTEXT_END_TAG_OPEN\";\n    State[State[\"RAWTEXT_END_TAG_NAME\"] = 13] = \"RAWTEXT_END_TAG_NAME\";\n    State[State[\"SCRIPT_DATA_LESS_THAN_SIGN\"] = 14] = \"SCRIPT_DATA_LESS_THAN_SIGN\";\n    State[State[\"SCRIPT_DATA_END_TAG_OPEN\"] = 15] = \"SCRIPT_DATA_END_TAG_OPEN\";\n    State[State[\"SCRIPT_DATA_END_TAG_NAME\"] = 16] = \"SCRIPT_DATA_END_TAG_NAME\";\n    State[State[\"SCRIPT_DATA_ESCAPE_START\"] = 17] = \"SCRIPT_DATA_ESCAPE_START\";\n    State[State[\"SCRIPT_DATA_ESCAPE_START_DASH\"] = 18] = \"SCRIPT_DATA_ESCAPE_START_DASH\";\n    State[State[\"SCRIPT_DATA_ESCAPED\"] = 19] = \"SCRIPT_DATA_ESCAPED\";\n    State[State[\"SCRIPT_DATA_ESCAPED_DASH\"] = 20] = \"SCRIPT_DATA_ESCAPED_DASH\";\n    State[State[\"SCRIPT_DATA_ESCAPED_DASH_DASH\"] = 21] = \"SCRIPT_DATA_ESCAPED_DASH_DASH\";\n    State[State[\"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN\"] = 22] = \"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN\";\n    State[State[\"SCRIPT_DATA_ESCAPED_END_TAG_OPEN\"] = 23] = \"SCRIPT_DATA_ESCAPED_END_TAG_OPEN\";\n    State[State[\"SCRIPT_DATA_ESCAPED_END_TAG_NAME\"] = 24] = \"SCRIPT_DATA_ESCAPED_END_TAG_NAME\";\n    State[State[\"SCRIPT_DATA_DOUBLE_ESCAPE_START\"] = 25] = \"SCRIPT_DATA_DOUBLE_ESCAPE_START\";\n    State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED\"] = 26] = \"SCRIPT_DATA_DOUBLE_ESCAPED\";\n    State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_DASH\"] = 27] = \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH\";\n    State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH\"] = 28] = \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH\";\n    State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN\"] = 29] = \"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN\";\n    State[State[\"SCRIPT_DATA_DOUBLE_ESCAPE_END\"] = 30] = \"SCRIPT_DATA_DOUBLE_ESCAPE_END\";\n    State[State[\"BEFORE_ATTRIBUTE_NAME\"] = 31] = \"BEFORE_ATTRIBUTE_NAME\";\n    State[State[\"ATTRIBUTE_NAME\"] = 32] = \"ATTRIBUTE_NAME\";\n    State[State[\"AFTER_ATTRIBUTE_NAME\"] = 33] = \"AFTER_ATTRIBUTE_NAME\";\n    State[State[\"BEFORE_ATTRIBUTE_VALUE\"] = 34] = \"BEFORE_ATTRIBUTE_VALUE\";\n    State[State[\"ATTRIBUTE_VALUE_DOUBLE_QUOTED\"] = 35] = \"ATTRIBUTE_VALUE_DOUBLE_QUOTED\";\n    State[State[\"ATTRIBUTE_VALUE_SINGLE_QUOTED\"] = 36] = \"ATTRIBUTE_VALUE_SINGLE_QUOTED\";\n    State[State[\"ATTRIBUTE_VALUE_UNQUOTED\"] = 37] = \"ATTRIBUTE_VALUE_UNQUOTED\";\n    State[State[\"AFTER_ATTRIBUTE_VALUE_QUOTED\"] = 38] = \"AFTER_ATTRIBUTE_VALUE_QUOTED\";\n    State[State[\"SELF_CLOSING_START_TAG\"] = 39] = \"SELF_CLOSING_START_TAG\";\n    State[State[\"BOGUS_COMMENT\"] = 40] = \"BOGUS_COMMENT\";\n    State[State[\"MARKUP_DECLARATION_OPEN\"] = 41] = \"MARKUP_DECLARATION_OPEN\";\n    State[State[\"COMMENT_START\"] = 42] = \"COMMENT_START\";\n    State[State[\"COMMENT_START_DASH\"] = 43] = \"COMMENT_START_DASH\";\n    State[State[\"COMMENT\"] = 44] = \"COMMENT\";\n    State[State[\"COMMENT_LESS_THAN_SIGN\"] = 45] = \"COMMENT_LESS_THAN_SIGN\";\n    State[State[\"COMMENT_LESS_THAN_SIGN_BANG\"] = 46] = \"COMMENT_LESS_THAN_SIGN_BANG\";\n    State[State[\"COMMENT_LESS_THAN_SIGN_BANG_DASH\"] = 47] = \"COMMENT_LESS_THAN_SIGN_BANG_DASH\";\n    State[State[\"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\"] = 48] = \"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\";\n    State[State[\"COMMENT_END_DASH\"] = 49] = \"COMMENT_END_DASH\";\n    State[State[\"COMMENT_END\"] = 50] = \"COMMENT_END\";\n    State[State[\"COMMENT_END_BANG\"] = 51] = \"COMMENT_END_BANG\";\n    State[State[\"DOCTYPE\"] = 52] = \"DOCTYPE\";\n    State[State[\"BEFORE_DOCTYPE_NAME\"] = 53] = \"BEFORE_DOCTYPE_NAME\";\n    State[State[\"DOCTYPE_NAME\"] = 54] = \"DOCTYPE_NAME\";\n    State[State[\"AFTER_DOCTYPE_NAME\"] = 55] = \"AFTER_DOCTYPE_NAME\";\n    State[State[\"AFTER_DOCTYPE_PUBLIC_KEYWORD\"] = 56] = \"AFTER_DOCTYPE_PUBLIC_KEYWORD\";\n    State[State[\"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER\"] = 57] = \"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER\";\n    State[State[\"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED\"] = 58] = \"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED\";\n    State[State[\"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED\"] = 59] = \"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED\";\n    State[State[\"AFTER_DOCTYPE_PUBLIC_IDENTIFIER\"] = 60] = \"AFTER_DOCTYPE_PUBLIC_IDENTIFIER\";\n    State[State[\"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS\"] = 61] = \"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS\";\n    State[State[\"AFTER_DOCTYPE_SYSTEM_KEYWORD\"] = 62] = \"AFTER_DOCTYPE_SYSTEM_KEYWORD\";\n    State[State[\"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER\"] = 63] = \"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER\";\n    State[State[\"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED\"] = 64] = \"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED\";\n    State[State[\"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED\"] = 65] = \"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED\";\n    State[State[\"AFTER_DOCTYPE_SYSTEM_IDENTIFIER\"] = 66] = \"AFTER_DOCTYPE_SYSTEM_IDENTIFIER\";\n    State[State[\"BOGUS_DOCTYPE\"] = 67] = \"BOGUS_DOCTYPE\";\n    State[State[\"CDATA_SECTION\"] = 68] = \"CDATA_SECTION\";\n    State[State[\"CDATA_SECTION_BRACKET\"] = 69] = \"CDATA_SECTION_BRACKET\";\n    State[State[\"CDATA_SECTION_END\"] = 70] = \"CDATA_SECTION_END\";\n    State[State[\"CHARACTER_REFERENCE\"] = 71] = \"CHARACTER_REFERENCE\";\n    State[State[\"AMBIGUOUS_AMPERSAND\"] = 72] = \"AMBIGUOUS_AMPERSAND\";\n})(State || (State = {}));\n//Tokenizer initial states for different modes\nexport const TokenizerMode = {\n    DATA: State.DATA,\n    RCDATA: State.RCDATA,\n    RAWTEXT: State.RAWTEXT,\n    SCRIPT_DATA: State.SCRIPT_DATA,\n    PLAINTEXT: State.PLAINTEXT,\n    CDATA_SECTION: State.CDATA_SECTION,\n};\n//Utils\n//OPTIMIZATION: these utility functions should not be moved out of this module. V8 Crankshaft will not inline\n//this functions if they will be situated in another module due to context switch.\n//Always perform inlining check before modifying this functions ('node --trace-inlining').\nfunction isAsciiDigit(cp) {\n    return cp >= $.DIGIT_0 && cp <= $.DIGIT_9;\n}\nfunction isAsciiUpper(cp) {\n    return cp >= $.LATIN_CAPITAL_A && cp <= $.LATIN_CAPITAL_Z;\n}\nfunction isAsciiLower(cp) {\n    return cp >= $.LATIN_SMALL_A && cp <= $.LATIN_SMALL_Z;\n}\nfunction isAsciiLetter(cp) {\n    return isAsciiLower(cp) || isAsciiUpper(cp);\n}\nfunction isAsciiAlphaNumeric(cp) {\n    return isAsciiLetter(cp) || isAsciiDigit(cp);\n}\nfunction toAsciiLower(cp) {\n    return cp + 32;\n}\nfunction isWhitespace(cp) {\n    return cp === $.SPACE || cp === $.LINE_FEED || cp === $.TABULATION || cp === $.FORM_FEED;\n}\nfunction isScriptDataDoubleEscapeSequenceEnd(cp) {\n    return isWhitespace(cp) || cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN;\n}\nfunction getErrorForNumericCharacterReference(code) {\n    if (code === $.NULL) {\n        return ERR.nullCharacterReference;\n    }\n    else if (code > 1114111) {\n        return ERR.characterReferenceOutsideUnicodeRange;\n    }\n    else if (isSurrogate(code)) {\n        return ERR.surrogateCharacterReference;\n    }\n    else if (isUndefinedCodePoint(code)) {\n        return ERR.noncharacterCharacterReference;\n    }\n    else if (isControlCodePoint(code) || code === $.CARRIAGE_RETURN) {\n        return ERR.controlCharacterReference;\n    }\n    return null;\n}\n//Tokenizer\nexport class Tokenizer {\n    constructor(options, handler) {\n        this.options = options;\n        this.handler = handler;\n        this.paused = false;\n        /** Ensures that the parsing loop isn't run multiple times at once. */\n        this.inLoop = false;\n        /**\n         * Indicates that the current adjusted node exists, is not an element in the HTML namespace,\n         * and that it is not an integration point for either MathML or HTML.\n         *\n         * @see {@link https://html.spec.whatwg.org/multipage/parsing.html#tree-construction}\n         */\n        this.inForeignNode = false;\n        this.lastStartTagName = '';\n        this.active = false;\n        this.state = State.DATA;\n        this.returnState = State.DATA;\n        this.entityStartPos = 0;\n        this.consumedAfterSnapshot = -1;\n        this.currentCharacterToken = null;\n        this.currentToken = null;\n        this.currentAttr = { name: '', value: '' };\n        this.preprocessor = new Preprocessor(handler);\n        this.currentLocation = this.getCurrentLocation(-1);\n        this.entityDecoder = new EntityDecoder(htmlDecodeTree, (cp, consumed) => {\n            // Note: Set `pos` _before_ flushing, as flushing might drop\n            // the current chunk and invalidate `entityStartPos`.\n            this.preprocessor.pos = this.entityStartPos + consumed - 1;\n            this._flushCodePointConsumedAsCharacterReference(cp);\n        }, handler.onParseError\n            ? {\n                missingSemicolonAfterCharacterReference: () => {\n                    this._err(ERR.missingSemicolonAfterCharacterReference, 1);\n                },\n                absenceOfDigitsInNumericCharacterReference: (consumed) => {\n                    this._err(ERR.absenceOfDigitsInNumericCharacterReference, this.entityStartPos - this.preprocessor.pos + consumed);\n                },\n                validateNumericCharacterReference: (code) => {\n                    const error = getErrorForNumericCharacterReference(code);\n                    if (error)\n                        this._err(error, 1);\n                },\n            }\n            : undefined);\n    }\n    //Errors\n    _err(code, cpOffset = 0) {\n        var _a, _b;\n        (_b = (_a = this.handler).onParseError) === null || _b === void 0 ? void 0 : _b.call(_a, this.preprocessor.getError(code, cpOffset));\n    }\n    // NOTE: `offset` may never run across line boundaries.\n    getCurrentLocation(offset) {\n        if (!this.options.sourceCodeLocationInfo) {\n            return null;\n        }\n        return {\n            startLine: this.preprocessor.line,\n            startCol: this.preprocessor.col - offset,\n            startOffset: this.preprocessor.offset - offset,\n            endLine: -1,\n            endCol: -1,\n            endOffset: -1,\n        };\n    }\n    _runParsingLoop() {\n        if (this.inLoop)\n            return;\n        this.inLoop = true;\n        while (this.active && !this.paused) {\n            this.consumedAfterSnapshot = 0;\n            const cp = this._consume();\n            if (!this._ensureHibernation()) {\n                this._callState(cp);\n            }\n        }\n        this.inLoop = false;\n    }\n    //API\n    pause() {\n        this.paused = true;\n    }\n    resume(writeCallback) {\n        if (!this.paused) {\n            throw new Error('Parser was already resumed');\n        }\n        this.paused = false;\n        // Necessary for synchronous resume.\n        if (this.inLoop)\n            return;\n        this._runParsingLoop();\n        if (!this.paused) {\n            writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback();\n        }\n    }\n    write(chunk, isLastChunk, writeCallback) {\n        this.active = true;\n        this.preprocessor.write(chunk, isLastChunk);\n        this._runParsingLoop();\n        if (!this.paused) {\n            writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback();\n        }\n    }\n    insertHtmlAtCurrentPos(chunk) {\n        this.active = true;\n        this.preprocessor.insertHtmlAtCurrentPos(chunk);\n        this._runParsingLoop();\n    }\n    //Hibernation\n    _ensureHibernation() {\n        if (this.preprocessor.endOfChunkHit) {\n            this.preprocessor.retreat(this.consumedAfterSnapshot);\n            this.consumedAfterSnapshot = 0;\n            this.active = false;\n            return true;\n        }\n        return false;\n    }\n    //Consumption\n    _consume() {\n        this.consumedAfterSnapshot++;\n        return this.preprocessor.advance();\n    }\n    _advanceBy(count) {\n        this.consumedAfterSnapshot += count;\n        for (let i = 0; i < count; i++) {\n            this.preprocessor.advance();\n        }\n    }\n    _consumeSequenceIfMatch(pattern, caseSensitive) {\n        if (this.preprocessor.startsWith(pattern, caseSensitive)) {\n            // We will already have consumed one character before calling this method.\n            this._advanceBy(pattern.length - 1);\n            return true;\n        }\n        return false;\n    }\n    //Token creation\n    _createStartTagToken() {\n        this.currentToken = {\n            type: TokenType.START_TAG,\n            tagName: '',\n            tagID: TAG_ID.UNKNOWN,\n            selfClosing: false,\n            ackSelfClosing: false,\n            attrs: [],\n            location: this.getCurrentLocation(1),\n        };\n    }\n    _createEndTagToken() {\n        this.currentToken = {\n            type: TokenType.END_TAG,\n            tagName: '',\n            tagID: TAG_ID.UNKNOWN,\n            selfClosing: false,\n            ackSelfClosing: false,\n            attrs: [],\n            location: this.getCurrentLocation(2),\n        };\n    }\n    _createCommentToken(offset) {\n        this.currentToken = {\n            type: TokenType.COMMENT,\n            data: '',\n            location: this.getCurrentLocation(offset),\n        };\n    }\n    _createDoctypeToken(initialName) {\n        this.currentToken = {\n            type: TokenType.DOCTYPE,\n            name: initialName,\n            forceQuirks: false,\n            publicId: null,\n            systemId: null,\n            location: this.currentLocation,\n        };\n    }\n    _createCharacterToken(type, chars) {\n        this.currentCharacterToken = {\n            type,\n            chars,\n            location: this.currentLocation,\n        };\n    }\n    //Tag attributes\n    _createAttr(attrNameFirstCh) {\n        this.currentAttr = {\n            name: attrNameFirstCh,\n            value: '',\n        };\n        this.currentLocation = this.getCurrentLocation(0);\n    }\n    _leaveAttrName() {\n        var _a;\n        var _b;\n        const token = this.currentToken;\n        if (getTokenAttr(token, this.currentAttr.name) === null) {\n            token.attrs.push(this.currentAttr);\n            if (token.location && this.currentLocation) {\n                const attrLocations = ((_a = (_b = token.location).attrs) !== null && _a !== void 0 ? _a : (_b.attrs = Object.create(null)));\n                attrLocations[this.currentAttr.name] = this.currentLocation;\n                // Set end location\n                this._leaveAttrValue();\n            }\n        }\n        else {\n            this._err(ERR.duplicateAttribute);\n        }\n    }\n    _leaveAttrValue() {\n        if (this.currentLocation) {\n            this.currentLocation.endLine = this.preprocessor.line;\n            this.currentLocation.endCol = this.preprocessor.col;\n            this.currentLocation.endOffset = this.preprocessor.offset;\n        }\n    }\n    //Token emission\n    prepareToken(ct) {\n        this._emitCurrentCharacterToken(ct.location);\n        this.currentToken = null;\n        if (ct.location) {\n            ct.location.endLine = this.preprocessor.line;\n            ct.location.endCol = this.preprocessor.col + 1;\n            ct.location.endOffset = this.preprocessor.offset + 1;\n        }\n        this.currentLocation = this.getCurrentLocation(-1);\n    }\n    emitCurrentTagToken() {\n        const ct = this.currentToken;\n        this.prepareToken(ct);\n        ct.tagID = getTagID(ct.tagName);\n        if (ct.type === TokenType.START_TAG) {\n            this.lastStartTagName = ct.tagName;\n            this.handler.onStartTag(ct);\n        }\n        else {\n            if (ct.attrs.length > 0) {\n                this._err(ERR.endTagWithAttributes);\n            }\n            if (ct.selfClosing) {\n                this._err(ERR.endTagWithTrailingSolidus);\n            }\n            this.handler.onEndTag(ct);\n        }\n        this.preprocessor.dropParsedChunk();\n    }\n    emitCurrentComment(ct) {\n        this.prepareToken(ct);\n        this.handler.onComment(ct);\n        this.preprocessor.dropParsedChunk();\n    }\n    emitCurrentDoctype(ct) {\n        this.prepareToken(ct);\n        this.handler.onDoctype(ct);\n        this.preprocessor.dropParsedChunk();\n    }\n    _emitCurrentCharacterToken(nextLocation) {\n        if (this.currentCharacterToken) {\n            //NOTE: if we have a pending character token, make it's end location equal to the\n            //current token's start location.\n            if (nextLocation && this.currentCharacterToken.location) {\n                this.currentCharacterToken.location.endLine = nextLocation.startLine;\n                this.currentCharacterToken.location.endCol = nextLocation.startCol;\n                this.currentCharacterToken.location.endOffset = nextLocation.startOffset;\n            }\n            switch (this.currentCharacterToken.type) {\n                case TokenType.CHARACTER: {\n                    this.handler.onCharacter(this.currentCharacterToken);\n                    break;\n                }\n                case TokenType.NULL_CHARACTER: {\n                    this.handler.onNullCharacter(this.currentCharacterToken);\n                    break;\n                }\n                case TokenType.WHITESPACE_CHARACTER: {\n                    this.handler.onWhitespaceCharacter(this.currentCharacterToken);\n                    break;\n                }\n            }\n            this.currentCharacterToken = null;\n        }\n    }\n    _emitEOFToken() {\n        const location = this.getCurrentLocation(0);\n        if (location) {\n            location.endLine = location.startLine;\n            location.endCol = location.startCol;\n            location.endOffset = location.startOffset;\n        }\n        this._emitCurrentCharacterToken(location);\n        this.handler.onEof({ type: TokenType.EOF, location });\n        this.active = false;\n    }\n    //Characters emission\n    //OPTIMIZATION: The specification uses only one type of character token (one token per character).\n    //This causes a huge memory overhead and a lot of unnecessary parser loops. parse5 uses 3 groups of characters.\n    //If we have a sequence of characters that belong to the same group, the parser can process it\n    //as a single solid character token.\n    //So, there are 3 types of character tokens in parse5:\n    //1)TokenType.NULL_CHARACTER - \\u0000-character sequences (e.g. '\\u0000\\u0000\\u0000')\n    //2)TokenType.WHITESPACE_CHARACTER - any whitespace/new-line character sequences (e.g. '\\n  \\r\\t   \\f')\n    //3)TokenType.CHARACTER - any character sequence which don't belong to groups 1 and 2 (e.g. 'abcdef1234@@#$%^')\n    _appendCharToCurrentCharacterToken(type, ch) {\n        if (this.currentCharacterToken) {\n            if (this.currentCharacterToken.type === type) {\n                this.currentCharacterToken.chars += ch;\n                return;\n            }\n            else {\n                this.currentLocation = this.getCurrentLocation(0);\n                this._emitCurrentCharacterToken(this.currentLocation);\n                this.preprocessor.dropParsedChunk();\n            }\n        }\n        this._createCharacterToken(type, ch);\n    }\n    _emitCodePoint(cp) {\n        const type = isWhitespace(cp)\n            ? TokenType.WHITESPACE_CHARACTER\n            : cp === $.NULL\n                ? TokenType.NULL_CHARACTER\n                : TokenType.CHARACTER;\n        this._appendCharToCurrentCharacterToken(type, String.fromCodePoint(cp));\n    }\n    //NOTE: used when we emit characters explicitly.\n    //This is always for non-whitespace and non-null characters, which allows us to avoid additional checks.\n    _emitChars(ch) {\n        this._appendCharToCurrentCharacterToken(TokenType.CHARACTER, ch);\n    }\n    // Character reference helpers\n    _startCharacterReference() {\n        this.returnState = this.state;\n        this.state = State.CHARACTER_REFERENCE;\n        this.entityStartPos = this.preprocessor.pos;\n        this.entityDecoder.startEntity(this._isCharacterReferenceInAttribute() ? DecodingMode.Attribute : DecodingMode.Legacy);\n    }\n    _isCharacterReferenceInAttribute() {\n        return (this.returnState === State.ATTRIBUTE_VALUE_DOUBLE_QUOTED ||\n            this.returnState === State.ATTRIBUTE_VALUE_SINGLE_QUOTED ||\n            this.returnState === State.ATTRIBUTE_VALUE_UNQUOTED);\n    }\n    _flushCodePointConsumedAsCharacterReference(cp) {\n        if (this._isCharacterReferenceInAttribute()) {\n            this.currentAttr.value += String.fromCodePoint(cp);\n        }\n        else {\n            this._emitCodePoint(cp);\n        }\n    }\n    // Calling states this way turns out to be much faster than any other approach.\n    _callState(cp) {\n        switch (this.state) {\n            case State.DATA: {\n                this._stateData(cp);\n                break;\n            }\n            case State.RCDATA: {\n                this._stateRcdata(cp);\n                break;\n            }\n            case State.RAWTEXT: {\n                this._stateRawtext(cp);\n                break;\n            }\n            case State.SCRIPT_DATA: {\n                this._stateScriptData(cp);\n                break;\n            }\n            case State.PLAINTEXT: {\n                this._statePlaintext(cp);\n                break;\n            }\n            case State.TAG_OPEN: {\n                this._stateTagOpen(cp);\n                break;\n            }\n            case State.END_TAG_OPEN: {\n                this._stateEndTagOpen(cp);\n                break;\n            }\n            case State.TAG_NAME: {\n                this._stateTagName(cp);\n                break;\n            }\n            case State.RCDATA_LESS_THAN_SIGN: {\n                this._stateRcdataLessThanSign(cp);\n                break;\n            }\n            case State.RCDATA_END_TAG_OPEN: {\n                this._stateRcdataEndTagOpen(cp);\n                break;\n            }\n            case State.RCDATA_END_TAG_NAME: {\n                this._stateRcdataEndTagName(cp);\n                break;\n            }\n            case State.RAWTEXT_LESS_THAN_SIGN: {\n                this._stateRawtextLessThanSign(cp);\n                break;\n            }\n            case State.RAWTEXT_END_TAG_OPEN: {\n                this._stateRawtextEndTagOpen(cp);\n                break;\n            }\n            case State.RAWTEXT_END_TAG_NAME: {\n                this._stateRawtextEndTagName(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_LESS_THAN_SIGN: {\n                this._stateScriptDataLessThanSign(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_END_TAG_OPEN: {\n                this._stateScriptDataEndTagOpen(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_END_TAG_NAME: {\n                this._stateScriptDataEndTagName(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_ESCAPE_START: {\n                this._stateScriptDataEscapeStart(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_ESCAPE_START_DASH: {\n                this._stateScriptDataEscapeStartDash(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_ESCAPED: {\n                this._stateScriptDataEscaped(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_ESCAPED_DASH: {\n                this._stateScriptDataEscapedDash(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_ESCAPED_DASH_DASH: {\n                this._stateScriptDataEscapedDashDash(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN: {\n                this._stateScriptDataEscapedLessThanSign(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN: {\n                this._stateScriptDataEscapedEndTagOpen(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_ESCAPED_END_TAG_NAME: {\n                this._stateScriptDataEscapedEndTagName(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_DOUBLE_ESCAPE_START: {\n                this._stateScriptDataDoubleEscapeStart(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_DOUBLE_ESCAPED: {\n                this._stateScriptDataDoubleEscaped(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH: {\n                this._stateScriptDataDoubleEscapedDash(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH: {\n                this._stateScriptDataDoubleEscapedDashDash(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN: {\n                this._stateScriptDataDoubleEscapedLessThanSign(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_DOUBLE_ESCAPE_END: {\n                this._stateScriptDataDoubleEscapeEnd(cp);\n                break;\n            }\n            case State.BEFORE_ATTRIBUTE_NAME: {\n                this._stateBeforeAttributeName(cp);\n                break;\n            }\n            case State.ATTRIBUTE_NAME: {\n                this._stateAttributeName(cp);\n                break;\n            }\n            case State.AFTER_ATTRIBUTE_NAME: {\n                this._stateAfterAttributeName(cp);\n                break;\n            }\n            case State.BEFORE_ATTRIBUTE_VALUE: {\n                this._stateBeforeAttributeValue(cp);\n                break;\n            }\n            case State.ATTRIBUTE_VALUE_DOUBLE_QUOTED: {\n                this._stateAttributeValueDoubleQuoted(cp);\n                break;\n            }\n            case State.ATTRIBUTE_VALUE_SINGLE_QUOTED: {\n                this._stateAttributeValueSingleQuoted(cp);\n                break;\n            }\n            case State.ATTRIBUTE_VALUE_UNQUOTED: {\n                this._stateAttributeValueUnquoted(cp);\n                break;\n            }\n            case State.AFTER_ATTRIBUTE_VALUE_QUOTED: {\n                this._stateAfterAttributeValueQuoted(cp);\n                break;\n            }\n            case State.SELF_CLOSING_START_TAG: {\n                this._stateSelfClosingStartTag(cp);\n                break;\n            }\n            case State.BOGUS_COMMENT: {\n                this._stateBogusComment(cp);\n                break;\n            }\n            case State.MARKUP_DECLARATION_OPEN: {\n                this._stateMarkupDeclarationOpen(cp);\n                break;\n            }\n            case State.COMMENT_START: {\n                this._stateCommentStart(cp);\n                break;\n            }\n            case State.COMMENT_START_DASH: {\n                this._stateCommentStartDash(cp);\n                break;\n            }\n            case State.COMMENT: {\n                this._stateComment(cp);\n                break;\n            }\n            case State.COMMENT_LESS_THAN_SIGN: {\n                this._stateCommentLessThanSign(cp);\n                break;\n            }\n            case State.COMMENT_LESS_THAN_SIGN_BANG: {\n                this._stateCommentLessThanSignBang(cp);\n                break;\n            }\n            case State.COMMENT_LESS_THAN_SIGN_BANG_DASH: {\n                this._stateCommentLessThanSignBangDash(cp);\n                break;\n            }\n            case State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH: {\n                this._stateCommentLessThanSignBangDashDash(cp);\n                break;\n            }\n            case State.COMMENT_END_DASH: {\n                this._stateCommentEndDash(cp);\n                break;\n            }\n            case State.COMMENT_END: {\n                this._stateCommentEnd(cp);\n                break;\n            }\n            case State.COMMENT_END_BANG: {\n                this._stateCommentEndBang(cp);\n                break;\n            }\n            case State.DOCTYPE: {\n                this._stateDoctype(cp);\n                break;\n            }\n            case State.BEFORE_DOCTYPE_NAME: {\n                this._stateBeforeDoctypeName(cp);\n                break;\n            }\n            case State.DOCTYPE_NAME: {\n                this._stateDoctypeName(cp);\n                break;\n            }\n            case State.AFTER_DOCTYPE_NAME: {\n                this._stateAfterDoctypeName(cp);\n                break;\n            }\n            case State.AFTER_DOCTYPE_PUBLIC_KEYWORD: {\n                this._stateAfterDoctypePublicKeyword(cp);\n                break;\n            }\n            case State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER: {\n                this._stateBeforeDoctypePublicIdentifier(cp);\n                break;\n            }\n            case State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED: {\n                this._stateDoctypePublicIdentifierDoubleQuoted(cp);\n                break;\n            }\n            case State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED: {\n                this._stateDoctypePublicIdentifierSingleQuoted(cp);\n                break;\n            }\n            case State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER: {\n                this._stateAfterDoctypePublicIdentifier(cp);\n                break;\n            }\n            case State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS: {\n                this._stateBetweenDoctypePublicAndSystemIdentifiers(cp);\n                break;\n            }\n            case State.AFTER_DOCTYPE_SYSTEM_KEYWORD: {\n                this._stateAfterDoctypeSystemKeyword(cp);\n                break;\n            }\n            case State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER: {\n                this._stateBeforeDoctypeSystemIdentifier(cp);\n                break;\n            }\n            case State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED: {\n                this._stateDoctypeSystemIdentifierDoubleQuoted(cp);\n                break;\n            }\n            case State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED: {\n                this._stateDoctypeSystemIdentifierSingleQuoted(cp);\n                break;\n            }\n            case State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER: {\n                this._stateAfterDoctypeSystemIdentifier(cp);\n                break;\n            }\n            case State.BOGUS_DOCTYPE: {\n                this._stateBogusDoctype(cp);\n                break;\n            }\n            case State.CDATA_SECTION: {\n                this._stateCdataSection(cp);\n                break;\n            }\n            case State.CDATA_SECTION_BRACKET: {\n                this._stateCdataSectionBracket(cp);\n                break;\n            }\n            case State.CDATA_SECTION_END: {\n                this._stateCdataSectionEnd(cp);\n                break;\n            }\n            case State.CHARACTER_REFERENCE: {\n                this._stateCharacterReference();\n                break;\n            }\n            case State.AMBIGUOUS_AMPERSAND: {\n                this._stateAmbiguousAmpersand(cp);\n                break;\n            }\n            default: {\n                throw new Error('Unknown state');\n            }\n        }\n    }\n    // State machine\n    // Data state\n    //------------------------------------------------------------------\n    _stateData(cp) {\n        switch (cp) {\n            case $.LESS_THAN_SIGN: {\n                this.state = State.TAG_OPEN;\n                break;\n            }\n            case $.AMPERSAND: {\n                this._startCharacterReference();\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this._emitCodePoint(cp);\n                break;\n            }\n            case $.EOF: {\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    //  RCDATA state\n    //------------------------------------------------------------------\n    _stateRcdata(cp) {\n        switch (cp) {\n            case $.AMPERSAND: {\n                this._startCharacterReference();\n                break;\n            }\n            case $.LESS_THAN_SIGN: {\n                this.state = State.RCDATA_LESS_THAN_SIGN;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case $.EOF: {\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // RAWTEXT state\n    //------------------------------------------------------------------\n    _stateRawtext(cp) {\n        switch (cp) {\n            case $.LESS_THAN_SIGN: {\n                this.state = State.RAWTEXT_LESS_THAN_SIGN;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case $.EOF: {\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // Script data state\n    //------------------------------------------------------------------\n    _stateScriptData(cp) {\n        switch (cp) {\n            case $.LESS_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA_LESS_THAN_SIGN;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case $.EOF: {\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // PLAINTEXT state\n    //------------------------------------------------------------------\n    _statePlaintext(cp) {\n        switch (cp) {\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case $.EOF: {\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // Tag open state\n    //------------------------------------------------------------------\n    _stateTagOpen(cp) {\n        if (isAsciiLetter(cp)) {\n            this._createStartTagToken();\n            this.state = State.TAG_NAME;\n            this._stateTagName(cp);\n        }\n        else\n            switch (cp) {\n                case $.EXCLAMATION_MARK: {\n                    this.state = State.MARKUP_DECLARATION_OPEN;\n                    break;\n                }\n                case $.SOLIDUS: {\n                    this.state = State.END_TAG_OPEN;\n                    break;\n                }\n                case $.QUESTION_MARK: {\n                    this._err(ERR.unexpectedQuestionMarkInsteadOfTagName);\n                    this._createCommentToken(1);\n                    this.state = State.BOGUS_COMMENT;\n                    this._stateBogusComment(cp);\n                    break;\n                }\n                case $.EOF: {\n                    this._err(ERR.eofBeforeTagName);\n                    this._emitChars('<');\n                    this._emitEOFToken();\n                    break;\n                }\n                default: {\n                    this._err(ERR.invalidFirstCharacterOfTagName);\n                    this._emitChars('<');\n                    this.state = State.DATA;\n                    this._stateData(cp);\n                }\n            }\n    }\n    // End tag open state\n    //------------------------------------------------------------------\n    _stateEndTagOpen(cp) {\n        if (isAsciiLetter(cp)) {\n            this._createEndTagToken();\n            this.state = State.TAG_NAME;\n            this._stateTagName(cp);\n        }\n        else\n            switch (cp) {\n                case $.GREATER_THAN_SIGN: {\n                    this._err(ERR.missingEndTagName);\n                    this.state = State.DATA;\n                    break;\n                }\n                case $.EOF: {\n                    this._err(ERR.eofBeforeTagName);\n                    this._emitChars('</');\n                    this._emitEOFToken();\n                    break;\n                }\n                default: {\n                    this._err(ERR.invalidFirstCharacterOfTagName);\n                    this._createCommentToken(2);\n                    this.state = State.BOGUS_COMMENT;\n                    this._stateBogusComment(cp);\n                }\n            }\n    }\n    // Tag name state\n    //------------------------------------------------------------------\n    _stateTagName(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                this.state = State.BEFORE_ATTRIBUTE_NAME;\n                break;\n            }\n            case $.SOLIDUS: {\n                this.state = State.SELF_CLOSING_START_TAG;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.DATA;\n                this.emitCurrentTagToken();\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                token.tagName += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInTag);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.tagName += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n            }\n        }\n    }\n    // RCDATA less-than sign state\n    //------------------------------------------------------------------\n    _stateRcdataLessThanSign(cp) {\n        if (cp === $.SOLIDUS) {\n            this.state = State.RCDATA_END_TAG_OPEN;\n        }\n        else {\n            this._emitChars('<');\n            this.state = State.RCDATA;\n            this._stateRcdata(cp);\n        }\n    }\n    // RCDATA end tag open state\n    //------------------------------------------------------------------\n    _stateRcdataEndTagOpen(cp) {\n        if (isAsciiLetter(cp)) {\n            this.state = State.RCDATA_END_TAG_NAME;\n            this._stateRcdataEndTagName(cp);\n        }\n        else {\n            this._emitChars('</');\n            this.state = State.RCDATA;\n            this._stateRcdata(cp);\n        }\n    }\n    handleSpecialEndTag(_cp) {\n        if (!this.preprocessor.startsWith(this.lastStartTagName, false)) {\n            return !this._ensureHibernation();\n        }\n        this._createEndTagToken();\n        const token = this.currentToken;\n        token.tagName = this.lastStartTagName;\n        const cp = this.preprocessor.peek(this.lastStartTagName.length);\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                this._advanceBy(this.lastStartTagName.length);\n                this.state = State.BEFORE_ATTRIBUTE_NAME;\n                return false;\n            }\n            case $.SOLIDUS: {\n                this._advanceBy(this.lastStartTagName.length);\n                this.state = State.SELF_CLOSING_START_TAG;\n                return false;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._advanceBy(this.lastStartTagName.length);\n                this.emitCurrentTagToken();\n                this.state = State.DATA;\n                return false;\n            }\n            default: {\n                return !this._ensureHibernation();\n            }\n        }\n    }\n    // RCDATA end tag name state\n    //------------------------------------------------------------------\n    _stateRcdataEndTagName(cp) {\n        if (this.handleSpecialEndTag(cp)) {\n            this._emitChars('</');\n            this.state = State.RCDATA;\n            this._stateRcdata(cp);\n        }\n    }\n    // RAWTEXT less-than sign state\n    //------------------------------------------------------------------\n    _stateRawtextLessThanSign(cp) {\n        if (cp === $.SOLIDUS) {\n            this.state = State.RAWTEXT_END_TAG_OPEN;\n        }\n        else {\n            this._emitChars('<');\n            this.state = State.RAWTEXT;\n            this._stateRawtext(cp);\n        }\n    }\n    // RAWTEXT end tag open state\n    //------------------------------------------------------------------\n    _stateRawtextEndTagOpen(cp) {\n        if (isAsciiLetter(cp)) {\n            this.state = State.RAWTEXT_END_TAG_NAME;\n            this._stateRawtextEndTagName(cp);\n        }\n        else {\n            this._emitChars('</');\n            this.state = State.RAWTEXT;\n            this._stateRawtext(cp);\n        }\n    }\n    // RAWTEXT end tag name state\n    //------------------------------------------------------------------\n    _stateRawtextEndTagName(cp) {\n        if (this.handleSpecialEndTag(cp)) {\n            this._emitChars('</');\n            this.state = State.RAWTEXT;\n            this._stateRawtext(cp);\n        }\n    }\n    // Script data less-than sign state\n    //------------------------------------------------------------------\n    _stateScriptDataLessThanSign(cp) {\n        switch (cp) {\n            case $.SOLIDUS: {\n                this.state = State.SCRIPT_DATA_END_TAG_OPEN;\n                break;\n            }\n            case $.EXCLAMATION_MARK: {\n                this.state = State.SCRIPT_DATA_ESCAPE_START;\n                this._emitChars('<!');\n                break;\n            }\n            default: {\n                this._emitChars('<');\n                this.state = State.SCRIPT_DATA;\n                this._stateScriptData(cp);\n            }\n        }\n    }\n    // Script data end tag open state\n    //------------------------------------------------------------------\n    _stateScriptDataEndTagOpen(cp) {\n        if (isAsciiLetter(cp)) {\n            this.state = State.SCRIPT_DATA_END_TAG_NAME;\n            this._stateScriptDataEndTagName(cp);\n        }\n        else {\n            this._emitChars('</');\n            this.state = State.SCRIPT_DATA;\n            this._stateScriptData(cp);\n        }\n    }\n    // Script data end tag name state\n    //------------------------------------------------------------------\n    _stateScriptDataEndTagName(cp) {\n        if (this.handleSpecialEndTag(cp)) {\n            this._emitChars('</');\n            this.state = State.SCRIPT_DATA;\n            this._stateScriptData(cp);\n        }\n    }\n    // Script data escape start state\n    //------------------------------------------------------------------\n    _stateScriptDataEscapeStart(cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.state = State.SCRIPT_DATA_ESCAPE_START_DASH;\n            this._emitChars('-');\n        }\n        else {\n            this.state = State.SCRIPT_DATA;\n            this._stateScriptData(cp);\n        }\n    }\n    // Script data escape start dash state\n    //------------------------------------------------------------------\n    _stateScriptDataEscapeStartDash(cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH;\n            this._emitChars('-');\n        }\n        else {\n            this.state = State.SCRIPT_DATA;\n            this._stateScriptData(cp);\n        }\n    }\n    // Script data escaped state\n    //------------------------------------------------------------------\n    _stateScriptDataEscaped(cp) {\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                this.state = State.SCRIPT_DATA_ESCAPED_DASH;\n                this._emitChars('-');\n                break;\n            }\n            case $.LESS_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInScriptHtmlCommentLikeText);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // Script data escaped dash state\n    //------------------------------------------------------------------\n    _stateScriptDataEscapedDash(cp) {\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH;\n                this._emitChars('-');\n                break;\n            }\n            case $.LESS_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this.state = State.SCRIPT_DATA_ESCAPED;\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInScriptHtmlCommentLikeText);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this.state = State.SCRIPT_DATA_ESCAPED;\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // Script data escaped dash dash state\n    //------------------------------------------------------------------\n    _stateScriptDataEscapedDashDash(cp) {\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                this._emitChars('-');\n                break;\n            }\n            case $.LESS_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA;\n                this._emitChars('>');\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this.state = State.SCRIPT_DATA_ESCAPED;\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInScriptHtmlCommentLikeText);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this.state = State.SCRIPT_DATA_ESCAPED;\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // Script data escaped less-than sign state\n    //------------------------------------------------------------------\n    _stateScriptDataEscapedLessThanSign(cp) {\n        if (cp === $.SOLIDUS) {\n            this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN;\n        }\n        else if (isAsciiLetter(cp)) {\n            this._emitChars('<');\n            this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_START;\n            this._stateScriptDataDoubleEscapeStart(cp);\n        }\n        else {\n            this._emitChars('<');\n            this.state = State.SCRIPT_DATA_ESCAPED;\n            this._stateScriptDataEscaped(cp);\n        }\n    }\n    // Script data escaped end tag open state\n    //------------------------------------------------------------------\n    _stateScriptDataEscapedEndTagOpen(cp) {\n        if (isAsciiLetter(cp)) {\n            this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_NAME;\n            this._stateScriptDataEscapedEndTagName(cp);\n        }\n        else {\n            this._emitChars('</');\n            this.state = State.SCRIPT_DATA_ESCAPED;\n            this._stateScriptDataEscaped(cp);\n        }\n    }\n    // Script data escaped end tag name state\n    //------------------------------------------------------------------\n    _stateScriptDataEscapedEndTagName(cp) {\n        if (this.handleSpecialEndTag(cp)) {\n            this._emitChars('</');\n            this.state = State.SCRIPT_DATA_ESCAPED;\n            this._stateScriptDataEscaped(cp);\n        }\n    }\n    // Script data double escape start state\n    //------------------------------------------------------------------\n    _stateScriptDataDoubleEscapeStart(cp) {\n        if (this.preprocessor.startsWith($$.SCRIPT, false) &&\n            isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek($$.SCRIPT.length))) {\n            this._emitCodePoint(cp);\n            for (let i = 0; i < $$.SCRIPT.length; i++) {\n                this._emitCodePoint(this._consume());\n            }\n            this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n        }\n        else if (!this._ensureHibernation()) {\n            this.state = State.SCRIPT_DATA_ESCAPED;\n            this._stateScriptDataEscaped(cp);\n        }\n    }\n    // Script data double escaped state\n    //------------------------------------------------------------------\n    _stateScriptDataDoubleEscaped(cp) {\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH;\n                this._emitChars('-');\n                break;\n            }\n            case $.LESS_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n                this._emitChars('<');\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInScriptHtmlCommentLikeText);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // Script data double escaped dash state\n    //------------------------------------------------------------------\n    _stateScriptDataDoubleEscapedDash(cp) {\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH;\n                this._emitChars('-');\n                break;\n            }\n            case $.LESS_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n                this._emitChars('<');\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInScriptHtmlCommentLikeText);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // Script data double escaped dash dash state\n    //------------------------------------------------------------------\n    _stateScriptDataDoubleEscapedDashDash(cp) {\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                this._emitChars('-');\n                break;\n            }\n            case $.LESS_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n                this._emitChars('<');\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA;\n                this._emitChars('>');\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInScriptHtmlCommentLikeText);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // Script data double escaped less-than sign state\n    //------------------------------------------------------------------\n    _stateScriptDataDoubleEscapedLessThanSign(cp) {\n        if (cp === $.SOLIDUS) {\n            this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_END;\n            this._emitChars('/');\n        }\n        else {\n            this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n            this._stateScriptDataDoubleEscaped(cp);\n        }\n    }\n    // Script data double escape end state\n    //------------------------------------------------------------------\n    _stateScriptDataDoubleEscapeEnd(cp) {\n        if (this.preprocessor.startsWith($$.SCRIPT, false) &&\n            isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek($$.SCRIPT.length))) {\n            this._emitCodePoint(cp);\n            for (let i = 0; i < $$.SCRIPT.length; i++) {\n                this._emitCodePoint(this._consume());\n            }\n            this.state = State.SCRIPT_DATA_ESCAPED;\n        }\n        else if (!this._ensureHibernation()) {\n            this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n            this._stateScriptDataDoubleEscaped(cp);\n        }\n    }\n    // Before attribute name state\n    //------------------------------------------------------------------\n    _stateBeforeAttributeName(cp) {\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                // Ignore whitespace\n                break;\n            }\n            case $.SOLIDUS:\n            case $.GREATER_THAN_SIGN:\n            case $.EOF: {\n                this.state = State.AFTER_ATTRIBUTE_NAME;\n                this._stateAfterAttributeName(cp);\n                break;\n            }\n            case $.EQUALS_SIGN: {\n                this._err(ERR.unexpectedEqualsSignBeforeAttributeName);\n                this._createAttr('=');\n                this.state = State.ATTRIBUTE_NAME;\n                break;\n            }\n            default: {\n                this._createAttr('');\n                this.state = State.ATTRIBUTE_NAME;\n                this._stateAttributeName(cp);\n            }\n        }\n    }\n    // Attribute name state\n    //------------------------------------------------------------------\n    _stateAttributeName(cp) {\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED:\n            case $.SOLIDUS:\n            case $.GREATER_THAN_SIGN:\n            case $.EOF: {\n                this._leaveAttrName();\n                this.state = State.AFTER_ATTRIBUTE_NAME;\n                this._stateAfterAttributeName(cp);\n                break;\n            }\n            case $.EQUALS_SIGN: {\n                this._leaveAttrName();\n                this.state = State.BEFORE_ATTRIBUTE_VALUE;\n                break;\n            }\n            case $.QUOTATION_MARK:\n            case $.APOSTROPHE:\n            case $.LESS_THAN_SIGN: {\n                this._err(ERR.unexpectedCharacterInAttributeName);\n                this.currentAttr.name += String.fromCodePoint(cp);\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this.currentAttr.name += REPLACEMENT_CHARACTER;\n                break;\n            }\n            default: {\n                this.currentAttr.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n            }\n        }\n    }\n    // After attribute name state\n    //------------------------------------------------------------------\n    _stateAfterAttributeName(cp) {\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                // Ignore whitespace\n                break;\n            }\n            case $.SOLIDUS: {\n                this.state = State.SELF_CLOSING_START_TAG;\n                break;\n            }\n            case $.EQUALS_SIGN: {\n                this.state = State.BEFORE_ATTRIBUTE_VALUE;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.DATA;\n                this.emitCurrentTagToken();\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInTag);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._createAttr('');\n                this.state = State.ATTRIBUTE_NAME;\n                this._stateAttributeName(cp);\n            }\n        }\n    }\n    // Before attribute value state\n    //------------------------------------------------------------------\n    _stateBeforeAttributeValue(cp) {\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                // Ignore whitespace\n                break;\n            }\n            case $.QUOTATION_MARK: {\n                this.state = State.ATTRIBUTE_VALUE_DOUBLE_QUOTED;\n                break;\n            }\n            case $.APOSTROPHE: {\n                this.state = State.ATTRIBUTE_VALUE_SINGLE_QUOTED;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.missingAttributeValue);\n                this.state = State.DATA;\n                this.emitCurrentTagToken();\n                break;\n            }\n            default: {\n                this.state = State.ATTRIBUTE_VALUE_UNQUOTED;\n                this._stateAttributeValueUnquoted(cp);\n            }\n        }\n    }\n    // Attribute value (double-quoted) state\n    //------------------------------------------------------------------\n    _stateAttributeValueDoubleQuoted(cp) {\n        switch (cp) {\n            case $.QUOTATION_MARK: {\n                this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED;\n                break;\n            }\n            case $.AMPERSAND: {\n                this._startCharacterReference();\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this.currentAttr.value += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInTag);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this.currentAttr.value += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // Attribute value (single-quoted) state\n    //------------------------------------------------------------------\n    _stateAttributeValueSingleQuoted(cp) {\n        switch (cp) {\n            case $.APOSTROPHE: {\n                this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED;\n                break;\n            }\n            case $.AMPERSAND: {\n                this._startCharacterReference();\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this.currentAttr.value += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInTag);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this.currentAttr.value += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // Attribute value (unquoted) state\n    //------------------------------------------------------------------\n    _stateAttributeValueUnquoted(cp) {\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                this._leaveAttrValue();\n                this.state = State.BEFORE_ATTRIBUTE_NAME;\n                break;\n            }\n            case $.AMPERSAND: {\n                this._startCharacterReference();\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._leaveAttrValue();\n                this.state = State.DATA;\n                this.emitCurrentTagToken();\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this.currentAttr.value += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case $.QUOTATION_MARK:\n            case $.APOSTROPHE:\n            case $.LESS_THAN_SIGN:\n            case $.EQUALS_SIGN:\n            case $.GRAVE_ACCENT: {\n                this._err(ERR.unexpectedCharacterInUnquotedAttributeValue);\n                this.currentAttr.value += String.fromCodePoint(cp);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInTag);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this.currentAttr.value += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // After attribute value (quoted) state\n    //------------------------------------------------------------------\n    _stateAfterAttributeValueQuoted(cp) {\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                this._leaveAttrValue();\n                this.state = State.BEFORE_ATTRIBUTE_NAME;\n                break;\n            }\n            case $.SOLIDUS: {\n                this._leaveAttrValue();\n                this.state = State.SELF_CLOSING_START_TAG;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._leaveAttrValue();\n                this.state = State.DATA;\n                this.emitCurrentTagToken();\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInTag);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.missingWhitespaceBetweenAttributes);\n                this.state = State.BEFORE_ATTRIBUTE_NAME;\n                this._stateBeforeAttributeName(cp);\n            }\n        }\n    }\n    // Self-closing start tag state\n    //------------------------------------------------------------------\n    _stateSelfClosingStartTag(cp) {\n        switch (cp) {\n            case $.GREATER_THAN_SIGN: {\n                const token = this.currentToken;\n                token.selfClosing = true;\n                this.state = State.DATA;\n                this.emitCurrentTagToken();\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInTag);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.unexpectedSolidusInTag);\n                this.state = State.BEFORE_ATTRIBUTE_NAME;\n                this._stateBeforeAttributeName(cp);\n            }\n        }\n    }\n    // Bogus comment state\n    //------------------------------------------------------------------\n    _stateBogusComment(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.DATA;\n                this.emitCurrentComment(token);\n                break;\n            }\n            case $.EOF: {\n                this.emitCurrentComment(token);\n                this._emitEOFToken();\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                token.data += REPLACEMENT_CHARACTER;\n                break;\n            }\n            default: {\n                token.data += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // Markup declaration open state\n    //------------------------------------------------------------------\n    _stateMarkupDeclarationOpen(cp) {\n        if (this._consumeSequenceIfMatch($$.DASH_DASH, true)) {\n            this._createCommentToken($$.DASH_DASH.length + 1);\n            this.state = State.COMMENT_START;\n        }\n        else if (this._consumeSequenceIfMatch($$.DOCTYPE, false)) {\n            // NOTE: Doctypes tokens are created without fixed offsets. We keep track of the moment a doctype *might* start here.\n            this.currentLocation = this.getCurrentLocation($$.DOCTYPE.length + 1);\n            this.state = State.DOCTYPE;\n        }\n        else if (this._consumeSequenceIfMatch($$.CDATA_START, true)) {\n            if (this.inForeignNode) {\n                this.state = State.CDATA_SECTION;\n            }\n            else {\n                this._err(ERR.cdataInHtmlContent);\n                this._createCommentToken($$.CDATA_START.length + 1);\n                this.currentToken.data = '[CDATA[';\n                this.state = State.BOGUS_COMMENT;\n            }\n        }\n        //NOTE: Sequence lookups can be abrupted by hibernation. In that case, lookup\n        //results are no longer valid and we will need to start over.\n        else if (!this._ensureHibernation()) {\n            this._err(ERR.incorrectlyOpenedComment);\n            this._createCommentToken(2);\n            this.state = State.BOGUS_COMMENT;\n            this._stateBogusComment(cp);\n        }\n    }\n    // Comment start state\n    //------------------------------------------------------------------\n    _stateCommentStart(cp) {\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                this.state = State.COMMENT_START_DASH;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.abruptClosingOfEmptyComment);\n                this.state = State.DATA;\n                const token = this.currentToken;\n                this.emitCurrentComment(token);\n                break;\n            }\n            default: {\n                this.state = State.COMMENT;\n                this._stateComment(cp);\n            }\n        }\n    }\n    // Comment start dash state\n    //------------------------------------------------------------------\n    _stateCommentStartDash(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                this.state = State.COMMENT_END;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.abruptClosingOfEmptyComment);\n                this.state = State.DATA;\n                this.emitCurrentComment(token);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInComment);\n                this.emitCurrentComment(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.data += '-';\n                this.state = State.COMMENT;\n                this._stateComment(cp);\n            }\n        }\n    }\n    // Comment state\n    //------------------------------------------------------------------\n    _stateComment(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                this.state = State.COMMENT_END_DASH;\n                break;\n            }\n            case $.LESS_THAN_SIGN: {\n                token.data += '<';\n                this.state = State.COMMENT_LESS_THAN_SIGN;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                token.data += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInComment);\n                this.emitCurrentComment(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.data += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // Comment less-than sign state\n    //------------------------------------------------------------------\n    _stateCommentLessThanSign(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.EXCLAMATION_MARK: {\n                token.data += '!';\n                this.state = State.COMMENT_LESS_THAN_SIGN_BANG;\n                break;\n            }\n            case $.LESS_THAN_SIGN: {\n                token.data += '<';\n                break;\n            }\n            default: {\n                this.state = State.COMMENT;\n                this._stateComment(cp);\n            }\n        }\n    }\n    // Comment less-than sign bang state\n    //------------------------------------------------------------------\n    _stateCommentLessThanSignBang(cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH;\n        }\n        else {\n            this.state = State.COMMENT;\n            this._stateComment(cp);\n        }\n    }\n    // Comment less-than sign bang dash state\n    //------------------------------------------------------------------\n    _stateCommentLessThanSignBangDash(cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH;\n        }\n        else {\n            this.state = State.COMMENT_END_DASH;\n            this._stateCommentEndDash(cp);\n        }\n    }\n    // Comment less-than sign bang dash dash state\n    //------------------------------------------------------------------\n    _stateCommentLessThanSignBangDashDash(cp) {\n        if (cp !== $.GREATER_THAN_SIGN && cp !== $.EOF) {\n            this._err(ERR.nestedComment);\n        }\n        this.state = State.COMMENT_END;\n        this._stateCommentEnd(cp);\n    }\n    // Comment end dash state\n    //------------------------------------------------------------------\n    _stateCommentEndDash(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                this.state = State.COMMENT_END;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInComment);\n                this.emitCurrentComment(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.data += '-';\n                this.state = State.COMMENT;\n                this._stateComment(cp);\n            }\n        }\n    }\n    // Comment end state\n    //------------------------------------------------------------------\n    _stateCommentEnd(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.DATA;\n                this.emitCurrentComment(token);\n                break;\n            }\n            case $.EXCLAMATION_MARK: {\n                this.state = State.COMMENT_END_BANG;\n                break;\n            }\n            case $.HYPHEN_MINUS: {\n                token.data += '-';\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInComment);\n                this.emitCurrentComment(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.data += '--';\n                this.state = State.COMMENT;\n                this._stateComment(cp);\n            }\n        }\n    }\n    // Comment end bang state\n    //------------------------------------------------------------------\n    _stateCommentEndBang(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                token.data += '--!';\n                this.state = State.COMMENT_END_DASH;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.incorrectlyClosedComment);\n                this.state = State.DATA;\n                this.emitCurrentComment(token);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInComment);\n                this.emitCurrentComment(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.data += '--!';\n                this.state = State.COMMENT;\n                this._stateComment(cp);\n            }\n        }\n    }\n    // DOCTYPE state\n    //------------------------------------------------------------------\n    _stateDoctype(cp) {\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                this.state = State.BEFORE_DOCTYPE_NAME;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.BEFORE_DOCTYPE_NAME;\n                this._stateBeforeDoctypeName(cp);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                this._createDoctypeToken(null);\n                const token = this.currentToken;\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.missingWhitespaceBeforeDoctypeName);\n                this.state = State.BEFORE_DOCTYPE_NAME;\n                this._stateBeforeDoctypeName(cp);\n            }\n        }\n    }\n    // Before DOCTYPE name state\n    //------------------------------------------------------------------\n    _stateBeforeDoctypeName(cp) {\n        if (isAsciiUpper(cp)) {\n            this._createDoctypeToken(String.fromCharCode(toAsciiLower(cp)));\n            this.state = State.DOCTYPE_NAME;\n        }\n        else\n            switch (cp) {\n                case $.SPACE:\n                case $.LINE_FEED:\n                case $.TABULATION:\n                case $.FORM_FEED: {\n                    // Ignore whitespace\n                    break;\n                }\n                case $.NULL: {\n                    this._err(ERR.unexpectedNullCharacter);\n                    this._createDoctypeToken(REPLACEMENT_CHARACTER);\n                    this.state = State.DOCTYPE_NAME;\n                    break;\n                }\n                case $.GREATER_THAN_SIGN: {\n                    this._err(ERR.missingDoctypeName);\n                    this._createDoctypeToken(null);\n                    const token = this.currentToken;\n                    token.forceQuirks = true;\n                    this.emitCurrentDoctype(token);\n                    this.state = State.DATA;\n                    break;\n                }\n                case $.EOF: {\n                    this._err(ERR.eofInDoctype);\n                    this._createDoctypeToken(null);\n                    const token = this.currentToken;\n                    token.forceQuirks = true;\n                    this.emitCurrentDoctype(token);\n                    this._emitEOFToken();\n                    break;\n                }\n                default: {\n                    this._createDoctypeToken(String.fromCodePoint(cp));\n                    this.state = State.DOCTYPE_NAME;\n                }\n            }\n    }\n    // DOCTYPE name state\n    //------------------------------------------------------------------\n    _stateDoctypeName(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                this.state = State.AFTER_DOCTYPE_NAME;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.DATA;\n                this.emitCurrentDoctype(token);\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                token.name += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n            }\n        }\n    }\n    // After DOCTYPE name state\n    //------------------------------------------------------------------\n    _stateAfterDoctypeName(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                // Ignore whitespace\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.DATA;\n                this.emitCurrentDoctype(token);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                if (this._consumeSequenceIfMatch($$.PUBLIC, false)) {\n                    this.state = State.AFTER_DOCTYPE_PUBLIC_KEYWORD;\n                }\n                else if (this._consumeSequenceIfMatch($$.SYSTEM, false)) {\n                    this.state = State.AFTER_DOCTYPE_SYSTEM_KEYWORD;\n                }\n                //NOTE: sequence lookup can be abrupted by hibernation. In that case lookup\n                //results are no longer valid and we will need to start over.\n                else if (!this._ensureHibernation()) {\n                    this._err(ERR.invalidCharacterSequenceAfterDoctypeName);\n                    token.forceQuirks = true;\n                    this.state = State.BOGUS_DOCTYPE;\n                    this._stateBogusDoctype(cp);\n                }\n            }\n        }\n    }\n    // After DOCTYPE public keyword state\n    //------------------------------------------------------------------\n    _stateAfterDoctypePublicKeyword(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                this.state = State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER;\n                break;\n            }\n            case $.QUOTATION_MARK: {\n                this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n                token.publicId = '';\n                this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;\n                break;\n            }\n            case $.APOSTROPHE: {\n                this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n                token.publicId = '';\n                this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.missingDoctypePublicIdentifier);\n                token.forceQuirks = true;\n                this.state = State.DATA;\n                this.emitCurrentDoctype(token);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n                token.forceQuirks = true;\n                this.state = State.BOGUS_DOCTYPE;\n                this._stateBogusDoctype(cp);\n            }\n        }\n    }\n    // Before DOCTYPE public identifier state\n    //------------------------------------------------------------------\n    _stateBeforeDoctypePublicIdentifier(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                // Ignore whitespace\n                break;\n            }\n            case $.QUOTATION_MARK: {\n                token.publicId = '';\n                this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;\n                break;\n            }\n            case $.APOSTROPHE: {\n                token.publicId = '';\n                this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.missingDoctypePublicIdentifier);\n                token.forceQuirks = true;\n                this.state = State.DATA;\n                this.emitCurrentDoctype(token);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n                token.forceQuirks = true;\n                this.state = State.BOGUS_DOCTYPE;\n                this._stateBogusDoctype(cp);\n            }\n        }\n    }\n    // DOCTYPE public identifier (double-quoted) state\n    //------------------------------------------------------------------\n    _stateDoctypePublicIdentifierDoubleQuoted(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.QUOTATION_MARK: {\n                this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                token.publicId += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.abruptDoctypePublicIdentifier);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this.state = State.DATA;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.publicId += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // DOCTYPE public identifier (single-quoted) state\n    //------------------------------------------------------------------\n    _stateDoctypePublicIdentifierSingleQuoted(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.APOSTROPHE: {\n                this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                token.publicId += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.abruptDoctypePublicIdentifier);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this.state = State.DATA;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.publicId += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // After DOCTYPE public identifier state\n    //------------------------------------------------------------------\n    _stateAfterDoctypePublicIdentifier(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                this.state = State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.DATA;\n                this.emitCurrentDoctype(token);\n                break;\n            }\n            case $.QUOTATION_MARK: {\n                this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n                token.systemId = '';\n                this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n                break;\n            }\n            case $.APOSTROPHE: {\n                this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n                token.systemId = '';\n                this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n                token.forceQuirks = true;\n                this.state = State.BOGUS_DOCTYPE;\n                this._stateBogusDoctype(cp);\n            }\n        }\n    }\n    // Between DOCTYPE public and system identifiers state\n    //------------------------------------------------------------------\n    _stateBetweenDoctypePublicAndSystemIdentifiers(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                // Ignore whitespace\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this.emitCurrentDoctype(token);\n                this.state = State.DATA;\n                break;\n            }\n            case $.QUOTATION_MARK: {\n                token.systemId = '';\n                this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n                break;\n            }\n            case $.APOSTROPHE: {\n                token.systemId = '';\n                this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n                token.forceQuirks = true;\n                this.state = State.BOGUS_DOCTYPE;\n                this._stateBogusDoctype(cp);\n            }\n        }\n    }\n    // After DOCTYPE system keyword state\n    //------------------------------------------------------------------\n    _stateAfterDoctypeSystemKeyword(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                this.state = State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER;\n                break;\n            }\n            case $.QUOTATION_MARK: {\n                this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n                token.systemId = '';\n                this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n                break;\n            }\n            case $.APOSTROPHE: {\n                this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n                token.systemId = '';\n                this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.missingDoctypeSystemIdentifier);\n                token.forceQuirks = true;\n                this.state = State.DATA;\n                this.emitCurrentDoctype(token);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n                token.forceQuirks = true;\n                this.state = State.BOGUS_DOCTYPE;\n                this._stateBogusDoctype(cp);\n            }\n        }\n    }\n    // Before DOCTYPE system identifier state\n    //------------------------------------------------------------------\n    _stateBeforeDoctypeSystemIdentifier(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                // Ignore whitespace\n                break;\n            }\n            case $.QUOTATION_MARK: {\n                token.systemId = '';\n                this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n                break;\n            }\n            case $.APOSTROPHE: {\n                token.systemId = '';\n                this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.missingDoctypeSystemIdentifier);\n                token.forceQuirks = true;\n                this.state = State.DATA;\n                this.emitCurrentDoctype(token);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n                token.forceQuirks = true;\n                this.state = State.BOGUS_DOCTYPE;\n                this._stateBogusDoctype(cp);\n            }\n        }\n    }\n    // DOCTYPE system identifier (double-quoted) state\n    //------------------------------------------------------------------\n    _stateDoctypeSystemIdentifierDoubleQuoted(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.QUOTATION_MARK: {\n                this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                token.systemId += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.abruptDoctypeSystemIdentifier);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this.state = State.DATA;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.systemId += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // DOCTYPE system identifier (single-quoted) state\n    //------------------------------------------------------------------\n    _stateDoctypeSystemIdentifierSingleQuoted(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.APOSTROPHE: {\n                this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                token.systemId += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.abruptDoctypeSystemIdentifier);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this.state = State.DATA;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.systemId += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // After DOCTYPE system identifier state\n    //------------------------------------------------------------------\n    _stateAfterDoctypeSystemIdentifier(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                // Ignore whitespace\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this.emitCurrentDoctype(token);\n                this.state = State.DATA;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.unexpectedCharacterAfterDoctypeSystemIdentifier);\n                this.state = State.BOGUS_DOCTYPE;\n                this._stateBogusDoctype(cp);\n            }\n        }\n    }\n    // Bogus DOCTYPE state\n    //------------------------------------------------------------------\n    _stateBogusDoctype(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.GREATER_THAN_SIGN: {\n                this.emitCurrentDoctype(token);\n                this.state = State.DATA;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                break;\n            }\n            case $.EOF: {\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    // CDATA section state\n    //------------------------------------------------------------------\n    _stateCdataSection(cp) {\n        switch (cp) {\n            case $.RIGHT_SQUARE_BRACKET: {\n                this.state = State.CDATA_SECTION_BRACKET;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInCdata);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // CDATA section bracket state\n    //------------------------------------------------------------------\n    _stateCdataSectionBracket(cp) {\n        if (cp === $.RIGHT_SQUARE_BRACKET) {\n            this.state = State.CDATA_SECTION_END;\n        }\n        else {\n            this._emitChars(']');\n            this.state = State.CDATA_SECTION;\n            this._stateCdataSection(cp);\n        }\n    }\n    // CDATA section end state\n    //------------------------------------------------------------------\n    _stateCdataSectionEnd(cp) {\n        switch (cp) {\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.DATA;\n                break;\n            }\n            case $.RIGHT_SQUARE_BRACKET: {\n                this._emitChars(']');\n                break;\n            }\n            default: {\n                this._emitChars(']]');\n                this.state = State.CDATA_SECTION;\n                this._stateCdataSection(cp);\n            }\n        }\n    }\n    // Character reference state\n    //------------------------------------------------------------------\n    _stateCharacterReference() {\n        let length = this.entityDecoder.write(this.preprocessor.html, this.preprocessor.pos);\n        if (length < 0) {\n            if (this.preprocessor.lastChunkWritten) {\n                length = this.entityDecoder.end();\n            }\n            else {\n                // Wait for the rest of the entity.\n                this.active = false;\n                // Mark the entire buffer as read.\n                this.preprocessor.pos = this.preprocessor.html.length - 1;\n                this.consumedAfterSnapshot = 0;\n                this.preprocessor.endOfChunkHit = true;\n                return;\n            }\n        }\n        if (length === 0) {\n            // This was not a valid entity. Go back to the beginning, and\n            // figure out what to do.\n            this.preprocessor.pos = this.entityStartPos;\n            this._flushCodePointConsumedAsCharacterReference($.AMPERSAND);\n            this.state =\n                !this._isCharacterReferenceInAttribute() && isAsciiAlphaNumeric(this.preprocessor.peek(1))\n                    ? State.AMBIGUOUS_AMPERSAND\n                    : this.returnState;\n        }\n        else {\n            // We successfully parsed an entity. Switch to the return state.\n            this.state = this.returnState;\n        }\n    }\n    // Ambiguos ampersand state\n    //------------------------------------------------------------------\n    _stateAmbiguousAmpersand(cp) {\n        if (isAsciiAlphaNumeric(cp)) {\n            this._flushCodePointConsumedAsCharacterReference(cp);\n        }\n        else {\n            if (cp === $.SEMICOLON) {\n                this._err(ERR.unknownNamedCharacterReference);\n            }\n            this.state = this.returnState;\n            this._callState(cp);\n        }\n    }\n}\n","import { TAG_ID as $, NS, NUMBERED_HEADERS } from '../common/html.js';\n//Element utils\nconst IMPLICIT_END_TAG_REQUIRED = new Set([$.DD, $.DT, $.LI, $.OPTGROUP, $.OPTION, $.P, $.RB, $.RP, $.RT, $.RTC]);\nconst IMPLICIT_END_TAG_REQUIRED_THOROUGHLY = new Set([\n    ...IMPLICIT_END_TAG_REQUIRED,\n    $.CAPTION,\n    $.COLGROUP,\n    $.TBODY,\n    $.TD,\n    $.TFOOT,\n    $.TH,\n    $.THEAD,\n    $.TR,\n]);\nconst SCOPING_ELEMENTS_HTML = new Set([\n    $.APPLET,\n    $.CAPTION,\n    $.HTML,\n    $.MARQUEE,\n    $.OBJECT,\n    $.TABLE,\n    $.TD,\n    $.TEMPLATE,\n    $.TH,\n]);\nconst SCOPING_ELEMENTS_HTML_LIST = new Set([...SCOPING_ELEMENTS_HTML, $.OL, $.UL]);\nconst SCOPING_ELEMENTS_HTML_BUTTON = new Set([...SCOPING_ELEMENTS_HTML, $.BUTTON]);\nconst SCOPING_ELEMENTS_MATHML = new Set([$.ANNOTATION_XML, $.MI, $.MN, $.MO, $.MS, $.MTEXT]);\nconst SCOPING_ELEMENTS_SVG = new Set([$.DESC, $.FOREIGN_OBJECT, $.TITLE]);\nconst TABLE_ROW_CONTEXT = new Set([$.TR, $.TEMPLATE, $.HTML]);\nconst TABLE_BODY_CONTEXT = new Set([$.TBODY, $.TFOOT, $.THEAD, $.TEMPLATE, $.HTML]);\nconst TABLE_CONTEXT = new Set([$.TABLE, $.TEMPLATE, $.HTML]);\nconst TABLE_CELLS = new Set([$.TD, $.TH]);\n//Stack of open elements\nexport class OpenElementStack {\n    get currentTmplContentOrNode() {\n        return this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : this.current;\n    }\n    constructor(document, treeAdapter, handler) {\n        this.treeAdapter = treeAdapter;\n        this.handler = handler;\n        this.items = [];\n        this.tagIDs = [];\n        this.stackTop = -1;\n        this.tmplCount = 0;\n        this.currentTagId = $.UNKNOWN;\n        this.current = document;\n    }\n    //Index of element\n    _indexOf(element) {\n        return this.items.lastIndexOf(element, this.stackTop);\n    }\n    //Update current element\n    _isInTemplate() {\n        return this.currentTagId === $.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === NS.HTML;\n    }\n    _updateCurrentElement() {\n        this.current = this.items[this.stackTop];\n        this.currentTagId = this.tagIDs[this.stackTop];\n    }\n    //Mutations\n    push(element, tagID) {\n        this.stackTop++;\n        this.items[this.stackTop] = element;\n        this.current = element;\n        this.tagIDs[this.stackTop] = tagID;\n        this.currentTagId = tagID;\n        if (this._isInTemplate()) {\n            this.tmplCount++;\n        }\n        this.handler.onItemPush(element, tagID, true);\n    }\n    pop() {\n        const popped = this.current;\n        if (this.tmplCount > 0 && this._isInTemplate()) {\n            this.tmplCount--;\n        }\n        this.stackTop--;\n        this._updateCurrentElement();\n        this.handler.onItemPop(popped, true);\n    }\n    replace(oldElement, newElement) {\n        const idx = this._indexOf(oldElement);\n        this.items[idx] = newElement;\n        if (idx === this.stackTop) {\n            this.current = newElement;\n        }\n    }\n    insertAfter(referenceElement, newElement, newElementID) {\n        const insertionIdx = this._indexOf(referenceElement) + 1;\n        this.items.splice(insertionIdx, 0, newElement);\n        this.tagIDs.splice(insertionIdx, 0, newElementID);\n        this.stackTop++;\n        if (insertionIdx === this.stackTop) {\n            this._updateCurrentElement();\n        }\n        if (this.current && this.currentTagId !== undefined) {\n            this.handler.onItemPush(this.current, this.currentTagId, insertionIdx === this.stackTop);\n        }\n    }\n    popUntilTagNamePopped(tagName) {\n        let targetIdx = this.stackTop + 1;\n        do {\n            targetIdx = this.tagIDs.lastIndexOf(tagName, targetIdx - 1);\n        } while (targetIdx > 0 && this.treeAdapter.getNamespaceURI(this.items[targetIdx]) !== NS.HTML);\n        this.shortenToLength(Math.max(targetIdx, 0));\n    }\n    shortenToLength(idx) {\n        while (this.stackTop >= idx) {\n            const popped = this.current;\n            if (this.tmplCount > 0 && this._isInTemplate()) {\n                this.tmplCount -= 1;\n            }\n            this.stackTop--;\n            this._updateCurrentElement();\n            this.handler.onItemPop(popped, this.stackTop < idx);\n        }\n    }\n    popUntilElementPopped(element) {\n        const idx = this._indexOf(element);\n        this.shortenToLength(Math.max(idx, 0));\n    }\n    popUntilPopped(tagNames, targetNS) {\n        const idx = this._indexOfTagNames(tagNames, targetNS);\n        this.shortenToLength(Math.max(idx, 0));\n    }\n    popUntilNumberedHeaderPopped() {\n        this.popUntilPopped(NUMBERED_HEADERS, NS.HTML);\n    }\n    popUntilTableCellPopped() {\n        this.popUntilPopped(TABLE_CELLS, NS.HTML);\n    }\n    popAllUpToHtmlElement() {\n        //NOTE: here we assume that the root <html> element is always first in the open element stack, so\n        //we perform this fast stack clean up.\n        this.tmplCount = 0;\n        this.shortenToLength(1);\n    }\n    _indexOfTagNames(tagNames, namespace) {\n        for (let i = this.stackTop; i >= 0; i--) {\n            if (tagNames.has(this.tagIDs[i]) && this.treeAdapter.getNamespaceURI(this.items[i]) === namespace) {\n                return i;\n            }\n        }\n        return -1;\n    }\n    clearBackTo(tagNames, targetNS) {\n        const idx = this._indexOfTagNames(tagNames, targetNS);\n        this.shortenToLength(idx + 1);\n    }\n    clearBackToTableContext() {\n        this.clearBackTo(TABLE_CONTEXT, NS.HTML);\n    }\n    clearBackToTableBodyContext() {\n        this.clearBackTo(TABLE_BODY_CONTEXT, NS.HTML);\n    }\n    clearBackToTableRowContext() {\n        this.clearBackTo(TABLE_ROW_CONTEXT, NS.HTML);\n    }\n    remove(element) {\n        const idx = this._indexOf(element);\n        if (idx >= 0) {\n            if (idx === this.stackTop) {\n                this.pop();\n            }\n            else {\n                this.items.splice(idx, 1);\n                this.tagIDs.splice(idx, 1);\n                this.stackTop--;\n                this._updateCurrentElement();\n                this.handler.onItemPop(element, false);\n            }\n        }\n    }\n    //Search\n    tryPeekProperlyNestedBodyElement() {\n        //Properly nested <body> element (should be second element in stack).\n        return this.stackTop >= 1 && this.tagIDs[1] === $.BODY ? this.items[1] : null;\n    }\n    contains(element) {\n        return this._indexOf(element) > -1;\n    }\n    getCommonAncestor(element) {\n        const elementIdx = this._indexOf(element) - 1;\n        return elementIdx >= 0 ? this.items[elementIdx] : null;\n    }\n    isRootHtmlElementCurrent() {\n        return this.stackTop === 0 && this.tagIDs[0] === $.HTML;\n    }\n    //Element in scope\n    hasInDynamicScope(tagName, htmlScope) {\n        for (let i = this.stackTop; i >= 0; i--) {\n            const tn = this.tagIDs[i];\n            switch (this.treeAdapter.getNamespaceURI(this.items[i])) {\n                case NS.HTML: {\n                    if (tn === tagName)\n                        return true;\n                    if (htmlScope.has(tn))\n                        return false;\n                    break;\n                }\n                case NS.SVG: {\n                    if (SCOPING_ELEMENTS_SVG.has(tn))\n                        return false;\n                    break;\n                }\n                case NS.MATHML: {\n                    if (SCOPING_ELEMENTS_MATHML.has(tn))\n                        return false;\n                    break;\n                }\n            }\n        }\n        return true;\n    }\n    hasInScope(tagName) {\n        return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML);\n    }\n    hasInListItemScope(tagName) {\n        return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML_LIST);\n    }\n    hasInButtonScope(tagName) {\n        return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML_BUTTON);\n    }\n    hasNumberedHeaderInScope() {\n        for (let i = this.stackTop; i >= 0; i--) {\n            const tn = this.tagIDs[i];\n            switch (this.treeAdapter.getNamespaceURI(this.items[i])) {\n                case NS.HTML: {\n                    if (NUMBERED_HEADERS.has(tn))\n                        return true;\n                    if (SCOPING_ELEMENTS_HTML.has(tn))\n                        return false;\n                    break;\n                }\n                case NS.SVG: {\n                    if (SCOPING_ELEMENTS_SVG.has(tn))\n                        return false;\n                    break;\n                }\n                case NS.MATHML: {\n                    if (SCOPING_ELEMENTS_MATHML.has(tn))\n                        return false;\n                    break;\n                }\n            }\n        }\n        return true;\n    }\n    hasInTableScope(tagName) {\n        for (let i = this.stackTop; i >= 0; i--) {\n            if (this.treeAdapter.getNamespaceURI(this.items[i]) !== NS.HTML) {\n                continue;\n            }\n            switch (this.tagIDs[i]) {\n                case tagName: {\n                    return true;\n                }\n                case $.TABLE:\n                case $.HTML: {\n                    return false;\n                }\n            }\n        }\n        return true;\n    }\n    hasTableBodyContextInTableScope() {\n        for (let i = this.stackTop; i >= 0; i--) {\n            if (this.treeAdapter.getNamespaceURI(this.items[i]) !== NS.HTML) {\n                continue;\n            }\n            switch (this.tagIDs[i]) {\n                case $.TBODY:\n                case $.THEAD:\n                case $.TFOOT: {\n                    return true;\n                }\n                case $.TABLE:\n                case $.HTML: {\n                    return false;\n                }\n            }\n        }\n        return true;\n    }\n    hasInSelectScope(tagName) {\n        for (let i = this.stackTop; i >= 0; i--) {\n            if (this.treeAdapter.getNamespaceURI(this.items[i]) !== NS.HTML) {\n                continue;\n            }\n            switch (this.tagIDs[i]) {\n                case tagName: {\n                    return true;\n                }\n                case $.OPTION:\n                case $.OPTGROUP: {\n                    break;\n                }\n                default: {\n                    return false;\n                }\n            }\n        }\n        return true;\n    }\n    //Implied end tags\n    generateImpliedEndTags() {\n        while (this.currentTagId !== undefined && IMPLICIT_END_TAG_REQUIRED.has(this.currentTagId)) {\n            this.pop();\n        }\n    }\n    generateImpliedEndTagsThoroughly() {\n        while (this.currentTagId !== undefined && IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {\n            this.pop();\n        }\n    }\n    generateImpliedEndTagsWithExclusion(exclusionId) {\n        while (this.currentTagId !== undefined &&\n            this.currentTagId !== exclusionId &&\n            IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {\n            this.pop();\n        }\n    }\n}\n","//Const\nconst NOAH_ARK_CAPACITY = 3;\nexport var EntryType;\n(function (EntryType) {\n    EntryType[EntryType[\"Marker\"] = 0] = \"Marker\";\n    EntryType[EntryType[\"Element\"] = 1] = \"Element\";\n})(EntryType || (EntryType = {}));\nconst MARKER = { type: EntryType.Marker };\n//List of formatting elements\nexport class FormattingElementList {\n    constructor(treeAdapter) {\n        this.treeAdapter = treeAdapter;\n        this.entries = [];\n        this.bookmark = null;\n    }\n    //Noah Ark's condition\n    //OPTIMIZATION: at first we try to find possible candidates for exclusion using\n    //lightweight heuristics without thorough attributes check.\n    _getNoahArkConditionCandidates(newElement, neAttrs) {\n        const candidates = [];\n        const neAttrsLength = neAttrs.length;\n        const neTagName = this.treeAdapter.getTagName(newElement);\n        const neNamespaceURI = this.treeAdapter.getNamespaceURI(newElement);\n        for (let i = 0; i < this.entries.length; i++) {\n            const entry = this.entries[i];\n            if (entry.type === EntryType.Marker) {\n                break;\n            }\n            const { element } = entry;\n            if (this.treeAdapter.getTagName(element) === neTagName &&\n                this.treeAdapter.getNamespaceURI(element) === neNamespaceURI) {\n                const elementAttrs = this.treeAdapter.getAttrList(element);\n                if (elementAttrs.length === neAttrsLength) {\n                    candidates.push({ idx: i, attrs: elementAttrs });\n                }\n            }\n        }\n        return candidates;\n    }\n    _ensureNoahArkCondition(newElement) {\n        if (this.entries.length < NOAH_ARK_CAPACITY)\n            return;\n        const neAttrs = this.treeAdapter.getAttrList(newElement);\n        const candidates = this._getNoahArkConditionCandidates(newElement, neAttrs);\n        if (candidates.length < NOAH_ARK_CAPACITY)\n            return;\n        //NOTE: build attrs map for the new element, so we can perform fast lookups\n        const neAttrsMap = new Map(neAttrs.map((neAttr) => [neAttr.name, neAttr.value]));\n        let validCandidates = 0;\n        //NOTE: remove bottommost candidates, until Noah's Ark condition will not be met\n        for (let i = 0; i < candidates.length; i++) {\n            const candidate = candidates[i];\n            // We know that `candidate.attrs.length === neAttrs.length`\n            if (candidate.attrs.every((cAttr) => neAttrsMap.get(cAttr.name) === cAttr.value)) {\n                validCandidates += 1;\n                if (validCandidates >= NOAH_ARK_CAPACITY) {\n                    this.entries.splice(candidate.idx, 1);\n                }\n            }\n        }\n    }\n    //Mutations\n    insertMarker() {\n        this.entries.unshift(MARKER);\n    }\n    pushElement(element, token) {\n        this._ensureNoahArkCondition(element);\n        this.entries.unshift({\n            type: EntryType.Element,\n            element,\n            token,\n        });\n    }\n    insertElementAfterBookmark(element, token) {\n        const bookmarkIdx = this.entries.indexOf(this.bookmark);\n        this.entries.splice(bookmarkIdx, 0, {\n            type: EntryType.Element,\n            element,\n            token,\n        });\n    }\n    removeEntry(entry) {\n        const entryIndex = this.entries.indexOf(entry);\n        if (entryIndex !== -1) {\n            this.entries.splice(entryIndex, 1);\n        }\n    }\n    /**\n     * Clears the list of formatting elements up to the last marker.\n     *\n     * @see https://html.spec.whatwg.org/multipage/parsing.html#clear-the-list-of-active-formatting-elements-up-to-the-last-marker\n     */\n    clearToLastMarker() {\n        const markerIdx = this.entries.indexOf(MARKER);\n        if (markerIdx === -1) {\n            this.entries.length = 0;\n        }\n        else {\n            this.entries.splice(0, markerIdx + 1);\n        }\n    }\n    //Search\n    getElementEntryInScopeWithTagName(tagName) {\n        const entry = this.entries.find((entry) => entry.type === EntryType.Marker || this.treeAdapter.getTagName(entry.element) === tagName);\n        return entry && entry.type === EntryType.Element ? entry : null;\n    }\n    getElementEntry(element) {\n        return this.entries.find((entry) => entry.type === EntryType.Element && entry.element === element);\n    }\n}\n","import { DOCUMENT_MODE } from '../common/html.js';\nexport const defaultTreeAdapter = {\n    //Node construction\n    createDocument() {\n        return {\n            nodeName: '#document',\n            mode: DOCUMENT_MODE.NO_QUIRKS,\n            childNodes: [],\n        };\n    },\n    createDocumentFragment() {\n        return {\n            nodeName: '#document-fragment',\n            childNodes: [],\n        };\n    },\n    createElement(tagName, namespaceURI, attrs) {\n        return {\n            nodeName: tagName,\n            tagName,\n            attrs,\n            namespaceURI,\n            childNodes: [],\n            parentNode: null,\n        };\n    },\n    createCommentNode(data) {\n        return {\n            nodeName: '#comment',\n            data,\n            parentNode: null,\n        };\n    },\n    createTextNode(value) {\n        return {\n            nodeName: '#text',\n            value,\n            parentNode: null,\n        };\n    },\n    //Tree mutation\n    appendChild(parentNode, newNode) {\n        parentNode.childNodes.push(newNode);\n        newNode.parentNode = parentNode;\n    },\n    insertBefore(parentNode, newNode, referenceNode) {\n        const insertionIdx = parentNode.childNodes.indexOf(referenceNode);\n        parentNode.childNodes.splice(insertionIdx, 0, newNode);\n        newNode.parentNode = parentNode;\n    },\n    setTemplateContent(templateElement, contentElement) {\n        templateElement.content = contentElement;\n    },\n    getTemplateContent(templateElement) {\n        return templateElement.content;\n    },\n    setDocumentType(document, name, publicId, systemId) {\n        const doctypeNode = document.childNodes.find((node) => node.nodeName === '#documentType');\n        if (doctypeNode) {\n            doctypeNode.name = name;\n            doctypeNode.publicId = publicId;\n            doctypeNode.systemId = systemId;\n        }\n        else {\n            const node = {\n                nodeName: '#documentType',\n                name,\n                publicId,\n                systemId,\n                parentNode: null,\n            };\n            defaultTreeAdapter.appendChild(document, node);\n        }\n    },\n    setDocumentMode(document, mode) {\n        document.mode = mode;\n    },\n    getDocumentMode(document) {\n        return document.mode;\n    },\n    detachNode(node) {\n        if (node.parentNode) {\n            const idx = node.parentNode.childNodes.indexOf(node);\n            node.parentNode.childNodes.splice(idx, 1);\n            node.parentNode = null;\n        }\n    },\n    insertText(parentNode, text) {\n        if (parentNode.childNodes.length > 0) {\n            const prevNode = parentNode.childNodes[parentNode.childNodes.length - 1];\n            if (defaultTreeAdapter.isTextNode(prevNode)) {\n                prevNode.value += text;\n                return;\n            }\n        }\n        defaultTreeAdapter.appendChild(parentNode, defaultTreeAdapter.createTextNode(text));\n    },\n    insertTextBefore(parentNode, text, referenceNode) {\n        const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1];\n        if (prevNode && defaultTreeAdapter.isTextNode(prevNode)) {\n            prevNode.value += text;\n        }\n        else {\n            defaultTreeAdapter.insertBefore(parentNode, defaultTreeAdapter.createTextNode(text), referenceNode);\n        }\n    },\n    adoptAttributes(recipient, attrs) {\n        const recipientAttrsMap = new Set(recipient.attrs.map((attr) => attr.name));\n        for (let j = 0; j < attrs.length; j++) {\n            if (!recipientAttrsMap.has(attrs[j].name)) {\n                recipient.attrs.push(attrs[j]);\n            }\n        }\n    },\n    //Tree traversing\n    getFirstChild(node) {\n        return node.childNodes[0];\n    },\n    getChildNodes(node) {\n        return node.childNodes;\n    },\n    getParentNode(node) {\n        return node.parentNode;\n    },\n    getAttrList(element) {\n        return element.attrs;\n    },\n    //Node data\n    getTagName(element) {\n        return element.tagName;\n    },\n    getNamespaceURI(element) {\n        return element.namespaceURI;\n    },\n    getTextNodeContent(textNode) {\n        return textNode.value;\n    },\n    getCommentNodeContent(commentNode) {\n        return commentNode.data;\n    },\n    getDocumentTypeNodeName(doctypeNode) {\n        return doctypeNode.name;\n    },\n    getDocumentTypeNodePublicId(doctypeNode) {\n        return doctypeNode.publicId;\n    },\n    getDocumentTypeNodeSystemId(doctypeNode) {\n        return doctypeNode.systemId;\n    },\n    //Node types\n    isTextNode(node) {\n        return node.nodeName === '#text';\n    },\n    isCommentNode(node) {\n        return node.nodeName === '#comment';\n    },\n    isDocumentTypeNode(node) {\n        return node.nodeName === '#documentType';\n    },\n    isElementNode(node) {\n        return Object.prototype.hasOwnProperty.call(node, 'tagName');\n    },\n    // Source code location\n    setNodeSourceCodeLocation(node, location) {\n        node.sourceCodeLocation = location;\n    },\n    getNodeSourceCodeLocation(node) {\n        return node.sourceCodeLocation;\n    },\n    updateNodeSourceCodeLocation(node, endLocation) {\n        node.sourceCodeLocation = { ...node.sourceCodeLocation, ...endLocation };\n    },\n};\n","import { DOCUMENT_MODE } from './html.js';\n//Const\nconst VALID_DOCTYPE_NAME = 'html';\nconst VALID_SYSTEM_ID = 'about:legacy-compat';\nconst QUIRKS_MODE_SYSTEM_ID = 'http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd';\nconst QUIRKS_MODE_PUBLIC_ID_PREFIXES = [\n    '+//silmaril//dtd html pro v0r11 19970101//',\n    '-//as//dtd html 3.0 aswedit + extensions//',\n    '-//advasoft ltd//dtd html 3.0 aswedit + extensions//',\n    '-//ietf//dtd html 2.0 level 1//',\n    '-//ietf//dtd html 2.0 level 2//',\n    '-//ietf//dtd html 2.0 strict level 1//',\n    '-//ietf//dtd html 2.0 strict level 2//',\n    '-//ietf//dtd html 2.0 strict//',\n    '-//ietf//dtd html 2.0//',\n    '-//ietf//dtd html 2.1e//',\n    '-//ietf//dtd html 3.0//',\n    '-//ietf//dtd html 3.2 final//',\n    '-//ietf//dtd html 3.2//',\n    '-//ietf//dtd html 3//',\n    '-//ietf//dtd html level 0//',\n    '-//ietf//dtd html level 1//',\n    '-//ietf//dtd html level 2//',\n    '-//ietf//dtd html level 3//',\n    '-//ietf//dtd html strict level 0//',\n    '-//ietf//dtd html strict level 1//',\n    '-//ietf//dtd html strict level 2//',\n    '-//ietf//dtd html strict level 3//',\n    '-//ietf//dtd html strict//',\n    '-//ietf//dtd html//',\n    '-//metrius//dtd metrius presentational//',\n    '-//microsoft//dtd internet explorer 2.0 html strict//',\n    '-//microsoft//dtd internet explorer 2.0 html//',\n    '-//microsoft//dtd internet explorer 2.0 tables//',\n    '-//microsoft//dtd internet explorer 3.0 html strict//',\n    '-//microsoft//dtd internet explorer 3.0 html//',\n    '-//microsoft//dtd internet explorer 3.0 tables//',\n    '-//netscape comm. corp.//dtd html//',\n    '-//netscape comm. corp.//dtd strict html//',\n    \"-//o'reilly and associates//dtd html 2.0//\",\n    \"-//o'reilly and associates//dtd html extended 1.0//\",\n    \"-//o'reilly and associates//dtd html extended relaxed 1.0//\",\n    '-//sq//dtd html 2.0 hotmetal + extensions//',\n    '-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//',\n    '-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//',\n    '-//spyglass//dtd html 2.0 extended//',\n    '-//sun microsystems corp.//dtd hotjava html//',\n    '-//sun microsystems corp.//dtd hotjava strict html//',\n    '-//w3c//dtd html 3 1995-03-24//',\n    '-//w3c//dtd html 3.2 draft//',\n    '-//w3c//dtd html 3.2 final//',\n    '-//w3c//dtd html 3.2//',\n    '-//w3c//dtd html 3.2s draft//',\n    '-//w3c//dtd html 4.0 frameset//',\n    '-//w3c//dtd html 4.0 transitional//',\n    '-//w3c//dtd html experimental 19960712//',\n    '-//w3c//dtd html experimental 970421//',\n    '-//w3c//dtd w3 html//',\n    '-//w3o//dtd w3 html 3.0//',\n    '-//webtechs//dtd mozilla html 2.0//',\n    '-//webtechs//dtd mozilla html//',\n];\nconst QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES = [\n    ...QUIRKS_MODE_PUBLIC_ID_PREFIXES,\n    '-//w3c//dtd html 4.01 frameset//',\n    '-//w3c//dtd html 4.01 transitional//',\n];\nconst QUIRKS_MODE_PUBLIC_IDS = new Set([\n    '-//w3o//dtd w3 html strict 3.0//en//',\n    '-/w3c/dtd html 4.0 transitional/en',\n    'html',\n]);\nconst LIMITED_QUIRKS_PUBLIC_ID_PREFIXES = ['-//w3c//dtd xhtml 1.0 frameset//', '-//w3c//dtd xhtml 1.0 transitional//'];\nconst LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES = [\n    ...LIMITED_QUIRKS_PUBLIC_ID_PREFIXES,\n    '-//w3c//dtd html 4.01 frameset//',\n    '-//w3c//dtd html 4.01 transitional//',\n];\n//Utils\nfunction hasPrefix(publicId, prefixes) {\n    return prefixes.some((prefix) => publicId.startsWith(prefix));\n}\n//API\nexport function isConforming(token) {\n    return (token.name === VALID_DOCTYPE_NAME &&\n        token.publicId === null &&\n        (token.systemId === null || token.systemId === VALID_SYSTEM_ID));\n}\nexport function getDocumentMode(token) {\n    if (token.name !== VALID_DOCTYPE_NAME) {\n        return DOCUMENT_MODE.QUIRKS;\n    }\n    const { systemId } = token;\n    if (systemId && systemId.toLowerCase() === QUIRKS_MODE_SYSTEM_ID) {\n        return DOCUMENT_MODE.QUIRKS;\n    }\n    let { publicId } = token;\n    if (publicId !== null) {\n        publicId = publicId.toLowerCase();\n        if (QUIRKS_MODE_PUBLIC_IDS.has(publicId)) {\n            return DOCUMENT_MODE.QUIRKS;\n        }\n        let prefixes = systemId === null ? QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES : QUIRKS_MODE_PUBLIC_ID_PREFIXES;\n        if (hasPrefix(publicId, prefixes)) {\n            return DOCUMENT_MODE.QUIRKS;\n        }\n        prefixes =\n            systemId === null ? LIMITED_QUIRKS_PUBLIC_ID_PREFIXES : LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES;\n        if (hasPrefix(publicId, prefixes)) {\n            return DOCUMENT_MODE.LIMITED_QUIRKS;\n        }\n    }\n    return DOCUMENT_MODE.NO_QUIRKS;\n}\n","import { TAG_ID as $, NS, ATTRS, getTagID } from './html.js';\n//MIME types\nconst MIME_TYPES = {\n    TEXT_HTML: 'text/html',\n    APPLICATION_XML: 'application/xhtml+xml',\n};\n//Attributes\nconst DEFINITION_URL_ATTR = 'definitionurl';\nconst ADJUSTED_DEFINITION_URL_ATTR = 'definitionURL';\nconst SVG_ATTRS_ADJUSTMENT_MAP = new Map([\n    'attributeName',\n    'attributeType',\n    'baseFrequency',\n    'baseProfile',\n    'calcMode',\n    'clipPathUnits',\n    'diffuseConstant',\n    'edgeMode',\n    'filterUnits',\n    'glyphRef',\n    'gradientTransform',\n    'gradientUnits',\n    'kernelMatrix',\n    'kernelUnitLength',\n    'keyPoints',\n    'keySplines',\n    'keyTimes',\n    'lengthAdjust',\n    'limitingConeAngle',\n    'markerHeight',\n    'markerUnits',\n    'markerWidth',\n    'maskContentUnits',\n    'maskUnits',\n    'numOctaves',\n    'pathLength',\n    'patternContentUnits',\n    'patternTransform',\n    'patternUnits',\n    'pointsAtX',\n    'pointsAtY',\n    'pointsAtZ',\n    'preserveAlpha',\n    'preserveAspectRatio',\n    'primitiveUnits',\n    'refX',\n    'refY',\n    'repeatCount',\n    'repeatDur',\n    'requiredExtensions',\n    'requiredFeatures',\n    'specularConstant',\n    'specularExponent',\n    'spreadMethod',\n    'startOffset',\n    'stdDeviation',\n    'stitchTiles',\n    'surfaceScale',\n    'systemLanguage',\n    'tableValues',\n    'targetX',\n    'targetY',\n    'textLength',\n    'viewBox',\n    'viewTarget',\n    'xChannelSelector',\n    'yChannelSelector',\n    'zoomAndPan',\n].map((attr) => [attr.toLowerCase(), attr]));\nconst XML_ATTRS_ADJUSTMENT_MAP = new Map([\n    ['xlink:actuate', { prefix: 'xlink', name: 'actuate', namespace: NS.XLINK }],\n    ['xlink:arcrole', { prefix: 'xlink', name: 'arcrole', namespace: NS.XLINK }],\n    ['xlink:href', { prefix: 'xlink', name: 'href', namespace: NS.XLINK }],\n    ['xlink:role', { prefix: 'xlink', name: 'role', namespace: NS.XLINK }],\n    ['xlink:show', { prefix: 'xlink', name: 'show', namespace: NS.XLINK }],\n    ['xlink:title', { prefix: 'xlink', name: 'title', namespace: NS.XLINK }],\n    ['xlink:type', { prefix: 'xlink', name: 'type', namespace: NS.XLINK }],\n    ['xml:lang', { prefix: 'xml', name: 'lang', namespace: NS.XML }],\n    ['xml:space', { prefix: 'xml', name: 'space', namespace: NS.XML }],\n    ['xmlns', { prefix: '', name: 'xmlns', namespace: NS.XMLNS }],\n    ['xmlns:xlink', { prefix: 'xmlns', name: 'xlink', namespace: NS.XMLNS }],\n]);\n//SVG tag names adjustment map\nexport const SVG_TAG_NAMES_ADJUSTMENT_MAP = new Map([\n    'altGlyph',\n    'altGlyphDef',\n    'altGlyphItem',\n    'animateColor',\n    'animateMotion',\n    'animateTransform',\n    'clipPath',\n    'feBlend',\n    'feColorMatrix',\n    'feComponentTransfer',\n    'feComposite',\n    'feConvolveMatrix',\n    'feDiffuseLighting',\n    'feDisplacementMap',\n    'feDistantLight',\n    'feFlood',\n    'feFuncA',\n    'feFuncB',\n    'feFuncG',\n    'feFuncR',\n    'feGaussianBlur',\n    'feImage',\n    'feMerge',\n    'feMergeNode',\n    'feMorphology',\n    'feOffset',\n    'fePointLight',\n    'feSpecularLighting',\n    'feSpotLight',\n    'feTile',\n    'feTurbulence',\n    'foreignObject',\n    'glyphRef',\n    'linearGradient',\n    'radialGradient',\n    'textPath',\n].map((tn) => [tn.toLowerCase(), tn]));\n//Tags that causes exit from foreign content\nconst EXITS_FOREIGN_CONTENT = new Set([\n    $.B,\n    $.BIG,\n    $.BLOCKQUOTE,\n    $.BODY,\n    $.BR,\n    $.CENTER,\n    $.CODE,\n    $.DD,\n    $.DIV,\n    $.DL,\n    $.DT,\n    $.EM,\n    $.EMBED,\n    $.H1,\n    $.H2,\n    $.H3,\n    $.H4,\n    $.H5,\n    $.H6,\n    $.HEAD,\n    $.HR,\n    $.I,\n    $.IMG,\n    $.LI,\n    $.LISTING,\n    $.MENU,\n    $.META,\n    $.NOBR,\n    $.OL,\n    $.P,\n    $.PRE,\n    $.RUBY,\n    $.S,\n    $.SMALL,\n    $.SPAN,\n    $.STRONG,\n    $.STRIKE,\n    $.SUB,\n    $.SUP,\n    $.TABLE,\n    $.TT,\n    $.U,\n    $.UL,\n    $.VAR,\n]);\n//Check exit from foreign content\nexport function causesExit(startTagToken) {\n    const tn = startTagToken.tagID;\n    const isFontWithAttrs = tn === $.FONT &&\n        startTagToken.attrs.some(({ name }) => name === ATTRS.COLOR || name === ATTRS.SIZE || name === ATTRS.FACE);\n    return isFontWithAttrs || EXITS_FOREIGN_CONTENT.has(tn);\n}\n//Token adjustments\nexport function adjustTokenMathMLAttrs(token) {\n    for (let i = 0; i < token.attrs.length; i++) {\n        if (token.attrs[i].name === DEFINITION_URL_ATTR) {\n            token.attrs[i].name = ADJUSTED_DEFINITION_URL_ATTR;\n            break;\n        }\n    }\n}\nexport function adjustTokenSVGAttrs(token) {\n    for (let i = 0; i < token.attrs.length; i++) {\n        const adjustedAttrName = SVG_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name);\n        if (adjustedAttrName != null) {\n            token.attrs[i].name = adjustedAttrName;\n        }\n    }\n}\nexport function adjustTokenXMLAttrs(token) {\n    for (let i = 0; i < token.attrs.length; i++) {\n        const adjustedAttrEntry = XML_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name);\n        if (adjustedAttrEntry) {\n            token.attrs[i].prefix = adjustedAttrEntry.prefix;\n            token.attrs[i].name = adjustedAttrEntry.name;\n            token.attrs[i].namespace = adjustedAttrEntry.namespace;\n        }\n    }\n}\nexport function adjustTokenSVGTagName(token) {\n    const adjustedTagName = SVG_TAG_NAMES_ADJUSTMENT_MAP.get(token.tagName);\n    if (adjustedTagName != null) {\n        token.tagName = adjustedTagName;\n        token.tagID = getTagID(token.tagName);\n    }\n}\n//Integration points\nfunction isMathMLTextIntegrationPoint(tn, ns) {\n    return ns === NS.MATHML && (tn === $.MI || tn === $.MO || tn === $.MN || tn === $.MS || tn === $.MTEXT);\n}\nfunction isHtmlIntegrationPoint(tn, ns, attrs) {\n    if (ns === NS.MATHML && tn === $.ANNOTATION_XML) {\n        for (let i = 0; i < attrs.length; i++) {\n            if (attrs[i].name === ATTRS.ENCODING) {\n                const value = attrs[i].value.toLowerCase();\n                return value === MIME_TYPES.TEXT_HTML || value === MIME_TYPES.APPLICATION_XML;\n            }\n        }\n    }\n    return ns === NS.SVG && (tn === $.FOREIGN_OBJECT || tn === $.DESC || tn === $.TITLE);\n}\nexport function isIntegrationPoint(tn, ns, attrs, foreignNS) {\n    return (((!foreignNS || foreignNS === NS.HTML) && isHtmlIntegrationPoint(tn, ns, attrs)) ||\n        ((!foreignNS || foreignNS === NS.MATHML) && isMathMLTextIntegrationPoint(tn, ns)));\n}\n","import { Tokenizer, TokenizerMode } from '../tokenizer/index.js';\nimport { OpenElementStack } from './open-element-stack.js';\nimport { FormattingElementList, EntryType } from './formatting-element-list.js';\nimport { defaultTreeAdapter } from '../tree-adapters/default.js';\nimport * as doctype from '../common/doctype.js';\nimport * as foreignContent from '../common/foreign-content.js';\nimport { ERR } from '../common/error-codes.js';\nimport * as unicode from '../common/unicode.js';\nimport { TAG_ID as $, TAG_NAMES as TN, NS, ATTRS, SPECIAL_ELEMENTS, DOCUMENT_MODE, NUMBERED_HEADERS, getTagID, } from '../common/html.js';\nimport { TokenType, getTokenAttr, } from '../common/token.js';\n//Misc constants\nconst HIDDEN_INPUT_TYPE = 'hidden';\n//Adoption agency loops iteration count\nconst AA_OUTER_LOOP_ITER = 8;\nconst AA_INNER_LOOP_ITER = 3;\n//Insertion modes\nvar InsertionMode;\n(function (InsertionMode) {\n    InsertionMode[InsertionMode[\"INITIAL\"] = 0] = \"INITIAL\";\n    InsertionMode[InsertionMode[\"BEFORE_HTML\"] = 1] = \"BEFORE_HTML\";\n    InsertionMode[InsertionMode[\"BEFORE_HEAD\"] = 2] = \"BEFORE_HEAD\";\n    InsertionMode[InsertionMode[\"IN_HEAD\"] = 3] = \"IN_HEAD\";\n    InsertionMode[InsertionMode[\"IN_HEAD_NO_SCRIPT\"] = 4] = \"IN_HEAD_NO_SCRIPT\";\n    InsertionMode[InsertionMode[\"AFTER_HEAD\"] = 5] = \"AFTER_HEAD\";\n    InsertionMode[InsertionMode[\"IN_BODY\"] = 6] = \"IN_BODY\";\n    InsertionMode[InsertionMode[\"TEXT\"] = 7] = \"TEXT\";\n    InsertionMode[InsertionMode[\"IN_TABLE\"] = 8] = \"IN_TABLE\";\n    InsertionMode[InsertionMode[\"IN_TABLE_TEXT\"] = 9] = \"IN_TABLE_TEXT\";\n    InsertionMode[InsertionMode[\"IN_CAPTION\"] = 10] = \"IN_CAPTION\";\n    InsertionMode[InsertionMode[\"IN_COLUMN_GROUP\"] = 11] = \"IN_COLUMN_GROUP\";\n    InsertionMode[InsertionMode[\"IN_TABLE_BODY\"] = 12] = \"IN_TABLE_BODY\";\n    InsertionMode[InsertionMode[\"IN_ROW\"] = 13] = \"IN_ROW\";\n    InsertionMode[InsertionMode[\"IN_CELL\"] = 14] = \"IN_CELL\";\n    InsertionMode[InsertionMode[\"IN_SELECT\"] = 15] = \"IN_SELECT\";\n    InsertionMode[InsertionMode[\"IN_SELECT_IN_TABLE\"] = 16] = \"IN_SELECT_IN_TABLE\";\n    InsertionMode[InsertionMode[\"IN_TEMPLATE\"] = 17] = \"IN_TEMPLATE\";\n    InsertionMode[InsertionMode[\"AFTER_BODY\"] = 18] = \"AFTER_BODY\";\n    InsertionMode[InsertionMode[\"IN_FRAMESET\"] = 19] = \"IN_FRAMESET\";\n    InsertionMode[InsertionMode[\"AFTER_FRAMESET\"] = 20] = \"AFTER_FRAMESET\";\n    InsertionMode[InsertionMode[\"AFTER_AFTER_BODY\"] = 21] = \"AFTER_AFTER_BODY\";\n    InsertionMode[InsertionMode[\"AFTER_AFTER_FRAMESET\"] = 22] = \"AFTER_AFTER_FRAMESET\";\n})(InsertionMode || (InsertionMode = {}));\nconst BASE_LOC = {\n    startLine: -1,\n    startCol: -1,\n    startOffset: -1,\n    endLine: -1,\n    endCol: -1,\n    endOffset: -1,\n};\nconst TABLE_STRUCTURE_TAGS = new Set([$.TABLE, $.TBODY, $.TFOOT, $.THEAD, $.TR]);\nconst defaultParserOptions = {\n    scriptingEnabled: true,\n    sourceCodeLocationInfo: false,\n    treeAdapter: defaultTreeAdapter,\n    onParseError: null,\n};\n//Parser\nexport class Parser {\n    constructor(options, document, \n    /** @internal */\n    fragmentContext = null, \n    /** @internal */\n    scriptHandler = null) {\n        this.fragmentContext = fragmentContext;\n        this.scriptHandler = scriptHandler;\n        this.currentToken = null;\n        this.stopped = false;\n        /** @internal */\n        this.insertionMode = InsertionMode.INITIAL;\n        /** @internal */\n        this.originalInsertionMode = InsertionMode.INITIAL;\n        /** @internal */\n        this.headElement = null;\n        /** @internal */\n        this.formElement = null;\n        /** Indicates that the current node is not an element in the HTML namespace */\n        this.currentNotInHTML = false;\n        /**\n         * The template insertion mode stack is maintained from the left.\n         * Ie. the topmost element will always have index 0.\n         *\n         * @internal\n         */\n        this.tmplInsertionModeStack = [];\n        /** @internal */\n        this.pendingCharacterTokens = [];\n        /** @internal */\n        this.hasNonWhitespacePendingCharacterToken = false;\n        /** @internal */\n        this.framesetOk = true;\n        /** @internal */\n        this.skipNextNewLine = false;\n        /** @internal */\n        this.fosterParentingEnabled = false;\n        this.options = {\n            ...defaultParserOptions,\n            ...options,\n        };\n        this.treeAdapter = this.options.treeAdapter;\n        this.onParseError = this.options.onParseError;\n        // Always enable location info if we report parse errors.\n        if (this.onParseError) {\n            this.options.sourceCodeLocationInfo = true;\n        }\n        this.document = document !== null && document !== void 0 ? document : this.treeAdapter.createDocument();\n        this.tokenizer = new Tokenizer(this.options, this);\n        this.activeFormattingElements = new FormattingElementList(this.treeAdapter);\n        this.fragmentContextID = fragmentContext ? getTagID(this.treeAdapter.getTagName(fragmentContext)) : $.UNKNOWN;\n        this._setContextModes(fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : this.document, this.fragmentContextID);\n        this.openElements = new OpenElementStack(this.document, this.treeAdapter, this);\n    }\n    // API\n    static parse(html, options) {\n        const parser = new this(options);\n        parser.tokenizer.write(html, true);\n        return parser.document;\n    }\n    static getFragmentParser(fragmentContext, options) {\n        const opts = {\n            ...defaultParserOptions,\n            ...options,\n        };\n        //NOTE: use a <template> element as the fragment context if no context element was provided,\n        //so we will parse in a \"forgiving\" manner\n        fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : (fragmentContext = opts.treeAdapter.createElement(TN.TEMPLATE, NS.HTML, []));\n        //NOTE: create a fake element which will be used as the `document` for fragment parsing.\n        //This is important for jsdom, where a new `document` cannot be created. This led to\n        //fragment parsing messing with the main `document`.\n        const documentMock = opts.treeAdapter.createElement('documentmock', NS.HTML, []);\n        const parser = new this(opts, documentMock, fragmentContext);\n        if (parser.fragmentContextID === $.TEMPLATE) {\n            parser.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE);\n        }\n        parser._initTokenizerForFragmentParsing();\n        parser._insertFakeRootElement();\n        parser._resetInsertionMode();\n        parser._findFormInFragmentContext();\n        return parser;\n    }\n    getFragment() {\n        const rootElement = this.treeAdapter.getFirstChild(this.document);\n        const fragment = this.treeAdapter.createDocumentFragment();\n        this._adoptNodes(rootElement, fragment);\n        return fragment;\n    }\n    //Errors\n    /** @internal */\n    _err(token, code, beforeToken) {\n        var _a;\n        if (!this.onParseError)\n            return;\n        const loc = (_a = token.location) !== null && _a !== void 0 ? _a : BASE_LOC;\n        const err = {\n            code,\n            startLine: loc.startLine,\n            startCol: loc.startCol,\n            startOffset: loc.startOffset,\n            endLine: beforeToken ? loc.startLine : loc.endLine,\n            endCol: beforeToken ? loc.startCol : loc.endCol,\n            endOffset: beforeToken ? loc.startOffset : loc.endOffset,\n        };\n        this.onParseError(err);\n    }\n    //Stack events\n    /** @internal */\n    onItemPush(node, tid, isTop) {\n        var _a, _b;\n        (_b = (_a = this.treeAdapter).onItemPush) === null || _b === void 0 ? void 0 : _b.call(_a, node);\n        if (isTop && this.openElements.stackTop > 0)\n            this._setContextModes(node, tid);\n    }\n    /** @internal */\n    onItemPop(node, isTop) {\n        var _a, _b;\n        if (this.options.sourceCodeLocationInfo) {\n            this._setEndLocation(node, this.currentToken);\n        }\n        (_b = (_a = this.treeAdapter).onItemPop) === null || _b === void 0 ? void 0 : _b.call(_a, node, this.openElements.current);\n        if (isTop) {\n            let current;\n            let currentTagId;\n            if (this.openElements.stackTop === 0 && this.fragmentContext) {\n                current = this.fragmentContext;\n                currentTagId = this.fragmentContextID;\n            }\n            else {\n                ({ current, currentTagId } = this.openElements);\n            }\n            this._setContextModes(current, currentTagId);\n        }\n    }\n    _setContextModes(current, tid) {\n        const isHTML = current === this.document || (current && this.treeAdapter.getNamespaceURI(current) === NS.HTML);\n        this.currentNotInHTML = !isHTML;\n        this.tokenizer.inForeignNode =\n            !isHTML && current !== undefined && tid !== undefined && !this._isIntegrationPoint(tid, current);\n    }\n    /** @protected */\n    _switchToTextParsing(currentToken, nextTokenizerState) {\n        this._insertElement(currentToken, NS.HTML);\n        this.tokenizer.state = nextTokenizerState;\n        this.originalInsertionMode = this.insertionMode;\n        this.insertionMode = InsertionMode.TEXT;\n    }\n    switchToPlaintextParsing() {\n        this.insertionMode = InsertionMode.TEXT;\n        this.originalInsertionMode = InsertionMode.IN_BODY;\n        this.tokenizer.state = TokenizerMode.PLAINTEXT;\n    }\n    //Fragment parsing\n    /** @protected */\n    _getAdjustedCurrentElement() {\n        return this.openElements.stackTop === 0 && this.fragmentContext\n            ? this.fragmentContext\n            : this.openElements.current;\n    }\n    /** @protected */\n    _findFormInFragmentContext() {\n        let node = this.fragmentContext;\n        while (node) {\n            if (this.treeAdapter.getTagName(node) === TN.FORM) {\n                this.formElement = node;\n                break;\n            }\n            node = this.treeAdapter.getParentNode(node);\n        }\n    }\n    _initTokenizerForFragmentParsing() {\n        if (!this.fragmentContext || this.treeAdapter.getNamespaceURI(this.fragmentContext) !== NS.HTML) {\n            return;\n        }\n        switch (this.fragmentContextID) {\n            case $.TITLE:\n            case $.TEXTAREA: {\n                this.tokenizer.state = TokenizerMode.RCDATA;\n                break;\n            }\n            case $.STYLE:\n            case $.XMP:\n            case $.IFRAME:\n            case $.NOEMBED:\n            case $.NOFRAMES:\n            case $.NOSCRIPT: {\n                this.tokenizer.state = TokenizerMode.RAWTEXT;\n                break;\n            }\n            case $.SCRIPT: {\n                this.tokenizer.state = TokenizerMode.SCRIPT_DATA;\n                break;\n            }\n            case $.PLAINTEXT: {\n                this.tokenizer.state = TokenizerMode.PLAINTEXT;\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    //Tree mutation\n    /** @protected */\n    _setDocumentType(token) {\n        const name = token.name || '';\n        const publicId = token.publicId || '';\n        const systemId = token.systemId || '';\n        this.treeAdapter.setDocumentType(this.document, name, publicId, systemId);\n        if (token.location) {\n            const documentChildren = this.treeAdapter.getChildNodes(this.document);\n            const docTypeNode = documentChildren.find((node) => this.treeAdapter.isDocumentTypeNode(node));\n            if (docTypeNode) {\n                this.treeAdapter.setNodeSourceCodeLocation(docTypeNode, token.location);\n            }\n        }\n    }\n    /** @protected */\n    _attachElementToTree(element, location) {\n        if (this.options.sourceCodeLocationInfo) {\n            const loc = location && {\n                ...location,\n                startTag: location,\n            };\n            this.treeAdapter.setNodeSourceCodeLocation(element, loc);\n        }\n        if (this._shouldFosterParentOnInsertion()) {\n            this._fosterParentElement(element);\n        }\n        else {\n            const parent = this.openElements.currentTmplContentOrNode;\n            this.treeAdapter.appendChild(parent !== null && parent !== void 0 ? parent : this.document, element);\n        }\n    }\n    /**\n     * For self-closing tags. Add an element to the tree, but skip adding it\n     * to the stack.\n     */\n    /** @protected */\n    _appendElement(token, namespaceURI) {\n        const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n        this._attachElementToTree(element, token.location);\n    }\n    /** @protected */\n    _insertElement(token, namespaceURI) {\n        const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n        this._attachElementToTree(element, token.location);\n        this.openElements.push(element, token.tagID);\n    }\n    /** @protected */\n    _insertFakeElement(tagName, tagID) {\n        const element = this.treeAdapter.createElement(tagName, NS.HTML, []);\n        this._attachElementToTree(element, null);\n        this.openElements.push(element, tagID);\n    }\n    /** @protected */\n    _insertTemplate(token) {\n        const tmpl = this.treeAdapter.createElement(token.tagName, NS.HTML, token.attrs);\n        const content = this.treeAdapter.createDocumentFragment();\n        this.treeAdapter.setTemplateContent(tmpl, content);\n        this._attachElementToTree(tmpl, token.location);\n        this.openElements.push(tmpl, token.tagID);\n        if (this.options.sourceCodeLocationInfo)\n            this.treeAdapter.setNodeSourceCodeLocation(content, null);\n    }\n    /** @protected */\n    _insertFakeRootElement() {\n        const element = this.treeAdapter.createElement(TN.HTML, NS.HTML, []);\n        if (this.options.sourceCodeLocationInfo)\n            this.treeAdapter.setNodeSourceCodeLocation(element, null);\n        this.treeAdapter.appendChild(this.openElements.current, element);\n        this.openElements.push(element, $.HTML);\n    }\n    /** @protected */\n    _appendCommentNode(token, parent) {\n        const commentNode = this.treeAdapter.createCommentNode(token.data);\n        this.treeAdapter.appendChild(parent, commentNode);\n        if (this.options.sourceCodeLocationInfo) {\n            this.treeAdapter.setNodeSourceCodeLocation(commentNode, token.location);\n        }\n    }\n    /** @protected */\n    _insertCharacters(token) {\n        let parent;\n        let beforeElement;\n        if (this._shouldFosterParentOnInsertion()) {\n            ({ parent, beforeElement } = this._findFosterParentingLocation());\n            if (beforeElement) {\n                this.treeAdapter.insertTextBefore(parent, token.chars, beforeElement);\n            }\n            else {\n                this.treeAdapter.insertText(parent, token.chars);\n            }\n        }\n        else {\n            parent = this.openElements.currentTmplContentOrNode;\n            this.treeAdapter.insertText(parent, token.chars);\n        }\n        if (!token.location)\n            return;\n        const siblings = this.treeAdapter.getChildNodes(parent);\n        const textNodeIdx = beforeElement ? siblings.lastIndexOf(beforeElement) : siblings.length;\n        const textNode = siblings[textNodeIdx - 1];\n        //NOTE: if we have a location assigned by another token, then just update the end position\n        const tnLoc = this.treeAdapter.getNodeSourceCodeLocation(textNode);\n        if (tnLoc) {\n            const { endLine, endCol, endOffset } = token.location;\n            this.treeAdapter.updateNodeSourceCodeLocation(textNode, { endLine, endCol, endOffset });\n        }\n        else if (this.options.sourceCodeLocationInfo) {\n            this.treeAdapter.setNodeSourceCodeLocation(textNode, token.location);\n        }\n    }\n    /** @protected */\n    _adoptNodes(donor, recipient) {\n        for (let child = this.treeAdapter.getFirstChild(donor); child; child = this.treeAdapter.getFirstChild(donor)) {\n            this.treeAdapter.detachNode(child);\n            this.treeAdapter.appendChild(recipient, child);\n        }\n    }\n    /** @protected */\n    _setEndLocation(element, closingToken) {\n        if (this.treeAdapter.getNodeSourceCodeLocation(element) && closingToken.location) {\n            const ctLoc = closingToken.location;\n            const tn = this.treeAdapter.getTagName(element);\n            const endLoc = \n            // NOTE: For cases like <p> <p> </p> - First 'p' closes without a closing\n            // tag and for cases like <td> <p> </td> - 'p' closes without a closing tag.\n            closingToken.type === TokenType.END_TAG && tn === closingToken.tagName\n                ? {\n                    endTag: { ...ctLoc },\n                    endLine: ctLoc.endLine,\n                    endCol: ctLoc.endCol,\n                    endOffset: ctLoc.endOffset,\n                }\n                : {\n                    endLine: ctLoc.startLine,\n                    endCol: ctLoc.startCol,\n                    endOffset: ctLoc.startOffset,\n                };\n            this.treeAdapter.updateNodeSourceCodeLocation(element, endLoc);\n        }\n    }\n    //Token processing\n    shouldProcessStartTagTokenInForeignContent(token) {\n        // Check that neither current === document, or ns === NS.HTML\n        if (!this.currentNotInHTML)\n            return false;\n        let current;\n        let currentTagId;\n        if (this.openElements.stackTop === 0 && this.fragmentContext) {\n            current = this.fragmentContext;\n            currentTagId = this.fragmentContextID;\n        }\n        else {\n            ({ current, currentTagId } = this.openElements);\n        }\n        if (token.tagID === $.SVG &&\n            this.treeAdapter.getTagName(current) === TN.ANNOTATION_XML &&\n            this.treeAdapter.getNamespaceURI(current) === NS.MATHML) {\n            return false;\n        }\n        return (\n        // Check that `current` is not an integration point for HTML or MathML elements.\n        this.tokenizer.inForeignNode ||\n            // If it _is_ an integration point, then we might have to check that it is not an HTML\n            // integration point.\n            ((token.tagID === $.MGLYPH || token.tagID === $.MALIGNMARK) &&\n                currentTagId !== undefined &&\n                !this._isIntegrationPoint(currentTagId, current, NS.HTML)));\n    }\n    /** @protected */\n    _processToken(token) {\n        switch (token.type) {\n            case TokenType.CHARACTER: {\n                this.onCharacter(token);\n                break;\n            }\n            case TokenType.NULL_CHARACTER: {\n                this.onNullCharacter(token);\n                break;\n            }\n            case TokenType.COMMENT: {\n                this.onComment(token);\n                break;\n            }\n            case TokenType.DOCTYPE: {\n                this.onDoctype(token);\n                break;\n            }\n            case TokenType.START_TAG: {\n                this._processStartTag(token);\n                break;\n            }\n            case TokenType.END_TAG: {\n                this.onEndTag(token);\n                break;\n            }\n            case TokenType.EOF: {\n                this.onEof(token);\n                break;\n            }\n            case TokenType.WHITESPACE_CHARACTER: {\n                this.onWhitespaceCharacter(token);\n                break;\n            }\n        }\n    }\n    //Integration points\n    /** @protected */\n    _isIntegrationPoint(tid, element, foreignNS) {\n        const ns = this.treeAdapter.getNamespaceURI(element);\n        const attrs = this.treeAdapter.getAttrList(element);\n        return foreignContent.isIntegrationPoint(tid, ns, attrs, foreignNS);\n    }\n    //Active formatting elements reconstruction\n    /** @protected */\n    _reconstructActiveFormattingElements() {\n        const listLength = this.activeFormattingElements.entries.length;\n        if (listLength) {\n            const endIndex = this.activeFormattingElements.entries.findIndex((entry) => entry.type === EntryType.Marker || this.openElements.contains(entry.element));\n            const unopenIdx = endIndex === -1 ? listLength - 1 : endIndex - 1;\n            for (let i = unopenIdx; i >= 0; i--) {\n                const entry = this.activeFormattingElements.entries[i];\n                this._insertElement(entry.token, this.treeAdapter.getNamespaceURI(entry.element));\n                entry.element = this.openElements.current;\n            }\n        }\n    }\n    //Close elements\n    /** @protected */\n    _closeTableCell() {\n        this.openElements.generateImpliedEndTags();\n        this.openElements.popUntilTableCellPopped();\n        this.activeFormattingElements.clearToLastMarker();\n        this.insertionMode = InsertionMode.IN_ROW;\n    }\n    /** @protected */\n    _closePElement() {\n        this.openElements.generateImpliedEndTagsWithExclusion($.P);\n        this.openElements.popUntilTagNamePopped($.P);\n    }\n    //Insertion modes\n    /** @protected */\n    _resetInsertionMode() {\n        for (let i = this.openElements.stackTop; i >= 0; i--) {\n            //Insertion mode reset map\n            switch (i === 0 && this.fragmentContext ? this.fragmentContextID : this.openElements.tagIDs[i]) {\n                case $.TR: {\n                    this.insertionMode = InsertionMode.IN_ROW;\n                    return;\n                }\n                case $.TBODY:\n                case $.THEAD:\n                case $.TFOOT: {\n                    this.insertionMode = InsertionMode.IN_TABLE_BODY;\n                    return;\n                }\n                case $.CAPTION: {\n                    this.insertionMode = InsertionMode.IN_CAPTION;\n                    return;\n                }\n                case $.COLGROUP: {\n                    this.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n                    return;\n                }\n                case $.TABLE: {\n                    this.insertionMode = InsertionMode.IN_TABLE;\n                    return;\n                }\n                case $.BODY: {\n                    this.insertionMode = InsertionMode.IN_BODY;\n                    return;\n                }\n                case $.FRAMESET: {\n                    this.insertionMode = InsertionMode.IN_FRAMESET;\n                    return;\n                }\n                case $.SELECT: {\n                    this._resetInsertionModeForSelect(i);\n                    return;\n                }\n                case $.TEMPLATE: {\n                    this.insertionMode = this.tmplInsertionModeStack[0];\n                    return;\n                }\n                case $.HTML: {\n                    this.insertionMode = this.headElement ? InsertionMode.AFTER_HEAD : InsertionMode.BEFORE_HEAD;\n                    return;\n                }\n                case $.TD:\n                case $.TH: {\n                    if (i > 0) {\n                        this.insertionMode = InsertionMode.IN_CELL;\n                        return;\n                    }\n                    break;\n                }\n                case $.HEAD: {\n                    if (i > 0) {\n                        this.insertionMode = InsertionMode.IN_HEAD;\n                        return;\n                    }\n                    break;\n                }\n            }\n        }\n        this.insertionMode = InsertionMode.IN_BODY;\n    }\n    /** @protected */\n    _resetInsertionModeForSelect(selectIdx) {\n        if (selectIdx > 0) {\n            for (let i = selectIdx - 1; i > 0; i--) {\n                const tn = this.openElements.tagIDs[i];\n                if (tn === $.TEMPLATE) {\n                    break;\n                }\n                else if (tn === $.TABLE) {\n                    this.insertionMode = InsertionMode.IN_SELECT_IN_TABLE;\n                    return;\n                }\n            }\n        }\n        this.insertionMode = InsertionMode.IN_SELECT;\n    }\n    //Foster parenting\n    /** @protected */\n    _isElementCausesFosterParenting(tn) {\n        return TABLE_STRUCTURE_TAGS.has(tn);\n    }\n    /** @protected */\n    _shouldFosterParentOnInsertion() {\n        return (this.fosterParentingEnabled &&\n            this.openElements.currentTagId !== undefined &&\n            this._isElementCausesFosterParenting(this.openElements.currentTagId));\n    }\n    /** @protected */\n    _findFosterParentingLocation() {\n        for (let i = this.openElements.stackTop; i >= 0; i--) {\n            const openElement = this.openElements.items[i];\n            switch (this.openElements.tagIDs[i]) {\n                case $.TEMPLATE: {\n                    if (this.treeAdapter.getNamespaceURI(openElement) === NS.HTML) {\n                        return { parent: this.treeAdapter.getTemplateContent(openElement), beforeElement: null };\n                    }\n                    break;\n                }\n                case $.TABLE: {\n                    const parent = this.treeAdapter.getParentNode(openElement);\n                    if (parent) {\n                        return { parent, beforeElement: openElement };\n                    }\n                    return { parent: this.openElements.items[i - 1], beforeElement: null };\n                }\n                default:\n                // Do nothing\n            }\n        }\n        return { parent: this.openElements.items[0], beforeElement: null };\n    }\n    /** @protected */\n    _fosterParentElement(element) {\n        const location = this._findFosterParentingLocation();\n        if (location.beforeElement) {\n            this.treeAdapter.insertBefore(location.parent, element, location.beforeElement);\n        }\n        else {\n            this.treeAdapter.appendChild(location.parent, element);\n        }\n    }\n    //Special elements\n    /** @protected */\n    _isSpecialElement(element, id) {\n        const ns = this.treeAdapter.getNamespaceURI(element);\n        return SPECIAL_ELEMENTS[ns].has(id);\n    }\n    /** @internal */\n    onCharacter(token) {\n        this.skipNextNewLine = false;\n        if (this.tokenizer.inForeignNode) {\n            characterInForeignContent(this, token);\n            return;\n        }\n        switch (this.insertionMode) {\n            case InsertionMode.INITIAL: {\n                tokenInInitialMode(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HTML: {\n                tokenBeforeHtml(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HEAD: {\n                tokenBeforeHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD: {\n                tokenInHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD_NO_SCRIPT: {\n                tokenInHeadNoScript(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_HEAD: {\n                tokenAfterHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_BODY:\n            case InsertionMode.IN_CAPTION:\n            case InsertionMode.IN_CELL:\n            case InsertionMode.IN_TEMPLATE: {\n                characterInBody(this, token);\n                break;\n            }\n            case InsertionMode.TEXT:\n            case InsertionMode.IN_SELECT:\n            case InsertionMode.IN_SELECT_IN_TABLE: {\n                this._insertCharacters(token);\n                break;\n            }\n            case InsertionMode.IN_TABLE:\n            case InsertionMode.IN_TABLE_BODY:\n            case InsertionMode.IN_ROW: {\n                characterInTable(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE_TEXT: {\n                characterInTableText(this, token);\n                break;\n            }\n            case InsertionMode.IN_COLUMN_GROUP: {\n                tokenInColumnGroup(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_BODY: {\n                tokenAfterBody(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_AFTER_BODY: {\n                tokenAfterAfterBody(this, token);\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    /** @internal */\n    onNullCharacter(token) {\n        this.skipNextNewLine = false;\n        if (this.tokenizer.inForeignNode) {\n            nullCharacterInForeignContent(this, token);\n            return;\n        }\n        switch (this.insertionMode) {\n            case InsertionMode.INITIAL: {\n                tokenInInitialMode(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HTML: {\n                tokenBeforeHtml(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HEAD: {\n                tokenBeforeHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD: {\n                tokenInHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD_NO_SCRIPT: {\n                tokenInHeadNoScript(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_HEAD: {\n                tokenAfterHead(this, token);\n                break;\n            }\n            case InsertionMode.TEXT: {\n                this._insertCharacters(token);\n                break;\n            }\n            case InsertionMode.IN_TABLE:\n            case InsertionMode.IN_TABLE_BODY:\n            case InsertionMode.IN_ROW: {\n                characterInTable(this, token);\n                break;\n            }\n            case InsertionMode.IN_COLUMN_GROUP: {\n                tokenInColumnGroup(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_BODY: {\n                tokenAfterBody(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_AFTER_BODY: {\n                tokenAfterAfterBody(this, token);\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    /** @internal */\n    onComment(token) {\n        this.skipNextNewLine = false;\n        if (this.currentNotInHTML) {\n            appendComment(this, token);\n            return;\n        }\n        switch (this.insertionMode) {\n            case InsertionMode.INITIAL:\n            case InsertionMode.BEFORE_HTML:\n            case InsertionMode.BEFORE_HEAD:\n            case InsertionMode.IN_HEAD:\n            case InsertionMode.IN_HEAD_NO_SCRIPT:\n            case InsertionMode.AFTER_HEAD:\n            case InsertionMode.IN_BODY:\n            case InsertionMode.IN_TABLE:\n            case InsertionMode.IN_CAPTION:\n            case InsertionMode.IN_COLUMN_GROUP:\n            case InsertionMode.IN_TABLE_BODY:\n            case InsertionMode.IN_ROW:\n            case InsertionMode.IN_CELL:\n            case InsertionMode.IN_SELECT:\n            case InsertionMode.IN_SELECT_IN_TABLE:\n            case InsertionMode.IN_TEMPLATE:\n            case InsertionMode.IN_FRAMESET:\n            case InsertionMode.AFTER_FRAMESET: {\n                appendComment(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE_TEXT: {\n                tokenInTableText(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_BODY: {\n                appendCommentToRootHtmlElement(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_AFTER_BODY:\n            case InsertionMode.AFTER_AFTER_FRAMESET: {\n                appendCommentToDocument(this, token);\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    /** @internal */\n    onDoctype(token) {\n        this.skipNextNewLine = false;\n        switch (this.insertionMode) {\n            case InsertionMode.INITIAL: {\n                doctypeInInitialMode(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HEAD:\n            case InsertionMode.IN_HEAD:\n            case InsertionMode.IN_HEAD_NO_SCRIPT:\n            case InsertionMode.AFTER_HEAD: {\n                this._err(token, ERR.misplacedDoctype);\n                break;\n            }\n            case InsertionMode.IN_TABLE_TEXT: {\n                tokenInTableText(this, token);\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    /** @internal */\n    onStartTag(token) {\n        this.skipNextNewLine = false;\n        this.currentToken = token;\n        this._processStartTag(token);\n        if (token.selfClosing && !token.ackSelfClosing) {\n            this._err(token, ERR.nonVoidHtmlElementStartTagWithTrailingSolidus);\n        }\n    }\n    /**\n     * Processes a given start tag.\n     *\n     * `onStartTag` checks if a self-closing tag was recognized. When a token\n     * is moved inbetween multiple insertion modes, this check for self-closing\n     * could lead to false positives. To avoid this, `_processStartTag` is used\n     * for nested calls.\n     *\n     * @param token The token to process.\n     * @protected\n     */\n    _processStartTag(token) {\n        if (this.shouldProcessStartTagTokenInForeignContent(token)) {\n            startTagInForeignContent(this, token);\n        }\n        else {\n            this._startTagOutsideForeignContent(token);\n        }\n    }\n    /** @protected */\n    _startTagOutsideForeignContent(token) {\n        switch (this.insertionMode) {\n            case InsertionMode.INITIAL: {\n                tokenInInitialMode(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HTML: {\n                startTagBeforeHtml(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HEAD: {\n                startTagBeforeHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD: {\n                startTagInHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD_NO_SCRIPT: {\n                startTagInHeadNoScript(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_HEAD: {\n                startTagAfterHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_BODY: {\n                startTagInBody(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE: {\n                startTagInTable(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE_TEXT: {\n                tokenInTableText(this, token);\n                break;\n            }\n            case InsertionMode.IN_CAPTION: {\n                startTagInCaption(this, token);\n                break;\n            }\n            case InsertionMode.IN_COLUMN_GROUP: {\n                startTagInColumnGroup(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE_BODY: {\n                startTagInTableBody(this, token);\n                break;\n            }\n            case InsertionMode.IN_ROW: {\n                startTagInRow(this, token);\n                break;\n            }\n            case InsertionMode.IN_CELL: {\n                startTagInCell(this, token);\n                break;\n            }\n            case InsertionMode.IN_SELECT: {\n                startTagInSelect(this, token);\n                break;\n            }\n            case InsertionMode.IN_SELECT_IN_TABLE: {\n                startTagInSelectInTable(this, token);\n                break;\n            }\n            case InsertionMode.IN_TEMPLATE: {\n                startTagInTemplate(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_BODY: {\n                startTagAfterBody(this, token);\n                break;\n            }\n            case InsertionMode.IN_FRAMESET: {\n                startTagInFrameset(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_FRAMESET: {\n                startTagAfterFrameset(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_AFTER_BODY: {\n                startTagAfterAfterBody(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_AFTER_FRAMESET: {\n                startTagAfterAfterFrameset(this, token);\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    /** @internal */\n    onEndTag(token) {\n        this.skipNextNewLine = false;\n        this.currentToken = token;\n        if (this.currentNotInHTML) {\n            endTagInForeignContent(this, token);\n        }\n        else {\n            this._endTagOutsideForeignContent(token);\n        }\n    }\n    /** @protected */\n    _endTagOutsideForeignContent(token) {\n        switch (this.insertionMode) {\n            case InsertionMode.INITIAL: {\n                tokenInInitialMode(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HTML: {\n                endTagBeforeHtml(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HEAD: {\n                endTagBeforeHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD: {\n                endTagInHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD_NO_SCRIPT: {\n                endTagInHeadNoScript(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_HEAD: {\n                endTagAfterHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_BODY: {\n                endTagInBody(this, token);\n                break;\n            }\n            case InsertionMode.TEXT: {\n                endTagInText(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE: {\n                endTagInTable(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE_TEXT: {\n                tokenInTableText(this, token);\n                break;\n            }\n            case InsertionMode.IN_CAPTION: {\n                endTagInCaption(this, token);\n                break;\n            }\n            case InsertionMode.IN_COLUMN_GROUP: {\n                endTagInColumnGroup(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE_BODY: {\n                endTagInTableBody(this, token);\n                break;\n            }\n            case InsertionMode.IN_ROW: {\n                endTagInRow(this, token);\n                break;\n            }\n            case InsertionMode.IN_CELL: {\n                endTagInCell(this, token);\n                break;\n            }\n            case InsertionMode.IN_SELECT: {\n                endTagInSelect(this, token);\n                break;\n            }\n            case InsertionMode.IN_SELECT_IN_TABLE: {\n                endTagInSelectInTable(this, token);\n                break;\n            }\n            case InsertionMode.IN_TEMPLATE: {\n                endTagInTemplate(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_BODY: {\n                endTagAfterBody(this, token);\n                break;\n            }\n            case InsertionMode.IN_FRAMESET: {\n                endTagInFrameset(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_FRAMESET: {\n                endTagAfterFrameset(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_AFTER_BODY: {\n                tokenAfterAfterBody(this, token);\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    /** @internal */\n    onEof(token) {\n        switch (this.insertionMode) {\n            case InsertionMode.INITIAL: {\n                tokenInInitialMode(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HTML: {\n                tokenBeforeHtml(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HEAD: {\n                tokenBeforeHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD: {\n                tokenInHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD_NO_SCRIPT: {\n                tokenInHeadNoScript(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_HEAD: {\n                tokenAfterHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_BODY:\n            case InsertionMode.IN_TABLE:\n            case InsertionMode.IN_CAPTION:\n            case InsertionMode.IN_COLUMN_GROUP:\n            case InsertionMode.IN_TABLE_BODY:\n            case InsertionMode.IN_ROW:\n            case InsertionMode.IN_CELL:\n            case InsertionMode.IN_SELECT:\n            case InsertionMode.IN_SELECT_IN_TABLE: {\n                eofInBody(this, token);\n                break;\n            }\n            case InsertionMode.TEXT: {\n                eofInText(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE_TEXT: {\n                tokenInTableText(this, token);\n                break;\n            }\n            case InsertionMode.IN_TEMPLATE: {\n                eofInTemplate(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_BODY:\n            case InsertionMode.IN_FRAMESET:\n            case InsertionMode.AFTER_FRAMESET:\n            case InsertionMode.AFTER_AFTER_BODY:\n            case InsertionMode.AFTER_AFTER_FRAMESET: {\n                stopParsing(this, token);\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    /** @internal */\n    onWhitespaceCharacter(token) {\n        if (this.skipNextNewLine) {\n            this.skipNextNewLine = false;\n            if (token.chars.charCodeAt(0) === unicode.CODE_POINTS.LINE_FEED) {\n                if (token.chars.length === 1) {\n                    return;\n                }\n                token.chars = token.chars.substr(1);\n            }\n        }\n        if (this.tokenizer.inForeignNode) {\n            this._insertCharacters(token);\n            return;\n        }\n        switch (this.insertionMode) {\n            case InsertionMode.IN_HEAD:\n            case InsertionMode.IN_HEAD_NO_SCRIPT:\n            case InsertionMode.AFTER_HEAD:\n            case InsertionMode.TEXT:\n            case InsertionMode.IN_COLUMN_GROUP:\n            case InsertionMode.IN_SELECT:\n            case InsertionMode.IN_SELECT_IN_TABLE:\n            case InsertionMode.IN_FRAMESET:\n            case InsertionMode.AFTER_FRAMESET: {\n                this._insertCharacters(token);\n                break;\n            }\n            case InsertionMode.IN_BODY:\n            case InsertionMode.IN_CAPTION:\n            case InsertionMode.IN_CELL:\n            case InsertionMode.IN_TEMPLATE:\n            case InsertionMode.AFTER_BODY:\n            case InsertionMode.AFTER_AFTER_BODY:\n            case InsertionMode.AFTER_AFTER_FRAMESET: {\n                whitespaceCharacterInBody(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE:\n            case InsertionMode.IN_TABLE_BODY:\n            case InsertionMode.IN_ROW: {\n                characterInTable(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE_TEXT: {\n                whitespaceCharacterInTableText(this, token);\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n}\n//Adoption agency algorithm\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/tree-construction.html#adoptionAgency)\n//------------------------------------------------------------------\n//Steps 5-8 of the algorithm\nfunction aaObtainFormattingElementEntry(p, token) {\n    let formattingElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(token.tagName);\n    if (formattingElementEntry) {\n        if (!p.openElements.contains(formattingElementEntry.element)) {\n            p.activeFormattingElements.removeEntry(formattingElementEntry);\n            formattingElementEntry = null;\n        }\n        else if (!p.openElements.hasInScope(token.tagID)) {\n            formattingElementEntry = null;\n        }\n    }\n    else {\n        genericEndTagInBody(p, token);\n    }\n    return formattingElementEntry;\n}\n//Steps 9 and 10 of the algorithm\nfunction aaObtainFurthestBlock(p, formattingElementEntry) {\n    let furthestBlock = null;\n    let idx = p.openElements.stackTop;\n    for (; idx >= 0; idx--) {\n        const element = p.openElements.items[idx];\n        if (element === formattingElementEntry.element) {\n            break;\n        }\n        if (p._isSpecialElement(element, p.openElements.tagIDs[idx])) {\n            furthestBlock = element;\n        }\n    }\n    if (!furthestBlock) {\n        p.openElements.shortenToLength(Math.max(idx, 0));\n        p.activeFormattingElements.removeEntry(formattingElementEntry);\n    }\n    return furthestBlock;\n}\n//Step 13 of the algorithm\nfunction aaInnerLoop(p, furthestBlock, formattingElement) {\n    let lastElement = furthestBlock;\n    let nextElement = p.openElements.getCommonAncestor(furthestBlock);\n    for (let i = 0, element = nextElement; element !== formattingElement; i++, element = nextElement) {\n        //NOTE: store the next element for the next loop iteration (it may be deleted from the stack by step 9.5)\n        nextElement = p.openElements.getCommonAncestor(element);\n        const elementEntry = p.activeFormattingElements.getElementEntry(element);\n        const counterOverflow = elementEntry && i >= AA_INNER_LOOP_ITER;\n        const shouldRemoveFromOpenElements = !elementEntry || counterOverflow;\n        if (shouldRemoveFromOpenElements) {\n            if (counterOverflow) {\n                p.activeFormattingElements.removeEntry(elementEntry);\n            }\n            p.openElements.remove(element);\n        }\n        else {\n            element = aaRecreateElementFromEntry(p, elementEntry);\n            if (lastElement === furthestBlock) {\n                p.activeFormattingElements.bookmark = elementEntry;\n            }\n            p.treeAdapter.detachNode(lastElement);\n            p.treeAdapter.appendChild(element, lastElement);\n            lastElement = element;\n        }\n    }\n    return lastElement;\n}\n//Step 13.7 of the algorithm\nfunction aaRecreateElementFromEntry(p, elementEntry) {\n    const ns = p.treeAdapter.getNamespaceURI(elementEntry.element);\n    const newElement = p.treeAdapter.createElement(elementEntry.token.tagName, ns, elementEntry.token.attrs);\n    p.openElements.replace(elementEntry.element, newElement);\n    elementEntry.element = newElement;\n    return newElement;\n}\n//Step 14 of the algorithm\nfunction aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement) {\n    const tn = p.treeAdapter.getTagName(commonAncestor);\n    const tid = getTagID(tn);\n    if (p._isElementCausesFosterParenting(tid)) {\n        p._fosterParentElement(lastElement);\n    }\n    else {\n        const ns = p.treeAdapter.getNamespaceURI(commonAncestor);\n        if (tid === $.TEMPLATE && ns === NS.HTML) {\n            commonAncestor = p.treeAdapter.getTemplateContent(commonAncestor);\n        }\n        p.treeAdapter.appendChild(commonAncestor, lastElement);\n    }\n}\n//Steps 15-19 of the algorithm\nfunction aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry) {\n    const ns = p.treeAdapter.getNamespaceURI(formattingElementEntry.element);\n    const { token } = formattingElementEntry;\n    const newElement = p.treeAdapter.createElement(token.tagName, ns, token.attrs);\n    p._adoptNodes(furthestBlock, newElement);\n    p.treeAdapter.appendChild(furthestBlock, newElement);\n    p.activeFormattingElements.insertElementAfterBookmark(newElement, token);\n    p.activeFormattingElements.removeEntry(formattingElementEntry);\n    p.openElements.remove(formattingElementEntry.element);\n    p.openElements.insertAfter(furthestBlock, newElement, token.tagID);\n}\n//Algorithm entry point\nfunction callAdoptionAgency(p, token) {\n    for (let i = 0; i < AA_OUTER_LOOP_ITER; i++) {\n        const formattingElementEntry = aaObtainFormattingElementEntry(p, token);\n        if (!formattingElementEntry) {\n            break;\n        }\n        const furthestBlock = aaObtainFurthestBlock(p, formattingElementEntry);\n        if (!furthestBlock) {\n            break;\n        }\n        p.activeFormattingElements.bookmark = formattingElementEntry;\n        const lastElement = aaInnerLoop(p, furthestBlock, formattingElementEntry.element);\n        const commonAncestor = p.openElements.getCommonAncestor(formattingElementEntry.element);\n        p.treeAdapter.detachNode(lastElement);\n        if (commonAncestor)\n            aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement);\n        aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry);\n    }\n}\n//Generic token handlers\n//------------------------------------------------------------------\nfunction appendComment(p, token) {\n    p._appendCommentNode(token, p.openElements.currentTmplContentOrNode);\n}\nfunction appendCommentToRootHtmlElement(p, token) {\n    p._appendCommentNode(token, p.openElements.items[0]);\n}\nfunction appendCommentToDocument(p, token) {\n    p._appendCommentNode(token, p.document);\n}\nfunction stopParsing(p, token) {\n    p.stopped = true;\n    // NOTE: Set end locations for elements that remain on the open element stack.\n    if (token.location) {\n        // NOTE: If we are not in a fragment, `html` and `body` will stay on the stack.\n        // This is a problem, as we might overwrite their end position here.\n        const target = p.fragmentContext ? 0 : 2;\n        for (let i = p.openElements.stackTop; i >= target; i--) {\n            p._setEndLocation(p.openElements.items[i], token);\n        }\n        // Handle `html` and `body`\n        if (!p.fragmentContext && p.openElements.stackTop >= 0) {\n            const htmlElement = p.openElements.items[0];\n            const htmlLocation = p.treeAdapter.getNodeSourceCodeLocation(htmlElement);\n            if (htmlLocation && !htmlLocation.endTag) {\n                p._setEndLocation(htmlElement, token);\n                if (p.openElements.stackTop >= 1) {\n                    const bodyElement = p.openElements.items[1];\n                    const bodyLocation = p.treeAdapter.getNodeSourceCodeLocation(bodyElement);\n                    if (bodyLocation && !bodyLocation.endTag) {\n                        p._setEndLocation(bodyElement, token);\n                    }\n                }\n            }\n        }\n    }\n}\n// The \"initial\" insertion mode\n//------------------------------------------------------------------\nfunction doctypeInInitialMode(p, token) {\n    p._setDocumentType(token);\n    const mode = token.forceQuirks ? DOCUMENT_MODE.QUIRKS : doctype.getDocumentMode(token);\n    if (!doctype.isConforming(token)) {\n        p._err(token, ERR.nonConformingDoctype);\n    }\n    p.treeAdapter.setDocumentMode(p.document, mode);\n    p.insertionMode = InsertionMode.BEFORE_HTML;\n}\nfunction tokenInInitialMode(p, token) {\n    p._err(token, ERR.missingDoctype, true);\n    p.treeAdapter.setDocumentMode(p.document, DOCUMENT_MODE.QUIRKS);\n    p.insertionMode = InsertionMode.BEFORE_HTML;\n    p._processToken(token);\n}\n// The \"before html\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHtml(p, token) {\n    if (token.tagID === $.HTML) {\n        p._insertElement(token, NS.HTML);\n        p.insertionMode = InsertionMode.BEFORE_HEAD;\n    }\n    else {\n        tokenBeforeHtml(p, token);\n    }\n}\nfunction endTagBeforeHtml(p, token) {\n    const tn = token.tagID;\n    if (tn === $.HTML || tn === $.HEAD || tn === $.BODY || tn === $.BR) {\n        tokenBeforeHtml(p, token);\n    }\n}\nfunction tokenBeforeHtml(p, token) {\n    p._insertFakeRootElement();\n    p.insertionMode = InsertionMode.BEFORE_HEAD;\n    p._processToken(token);\n}\n// The \"before head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHead(p, token) {\n    switch (token.tagID) {\n        case $.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case $.HEAD: {\n            p._insertElement(token, NS.HTML);\n            p.headElement = p.openElements.current;\n            p.insertionMode = InsertionMode.IN_HEAD;\n            break;\n        }\n        default: {\n            tokenBeforeHead(p, token);\n        }\n    }\n}\nfunction endTagBeforeHead(p, token) {\n    const tn = token.tagID;\n    if (tn === $.HEAD || tn === $.BODY || tn === $.HTML || tn === $.BR) {\n        tokenBeforeHead(p, token);\n    }\n    else {\n        p._err(token, ERR.endTagWithoutMatchingOpenElement);\n    }\n}\nfunction tokenBeforeHead(p, token) {\n    p._insertFakeElement(TN.HEAD, $.HEAD);\n    p.headElement = p.openElements.current;\n    p.insertionMode = InsertionMode.IN_HEAD;\n    p._processToken(token);\n}\n// The \"in head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHead(p, token) {\n    switch (token.tagID) {\n        case $.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case $.BASE:\n        case $.BASEFONT:\n        case $.BGSOUND:\n        case $.LINK:\n        case $.META: {\n            p._appendElement(token, NS.HTML);\n            token.ackSelfClosing = true;\n            break;\n        }\n        case $.TITLE: {\n            p._switchToTextParsing(token, TokenizerMode.RCDATA);\n            break;\n        }\n        case $.NOSCRIPT: {\n            if (p.options.scriptingEnabled) {\n                p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n            }\n            else {\n                p._insertElement(token, NS.HTML);\n                p.insertionMode = InsertionMode.IN_HEAD_NO_SCRIPT;\n            }\n            break;\n        }\n        case $.NOFRAMES:\n        case $.STYLE: {\n            p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n            break;\n        }\n        case $.SCRIPT: {\n            p._switchToTextParsing(token, TokenizerMode.SCRIPT_DATA);\n            break;\n        }\n        case $.TEMPLATE: {\n            p._insertTemplate(token);\n            p.activeFormattingElements.insertMarker();\n            p.framesetOk = false;\n            p.insertionMode = InsertionMode.IN_TEMPLATE;\n            p.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE);\n            break;\n        }\n        case $.HEAD: {\n            p._err(token, ERR.misplacedStartTagForHeadElement);\n            break;\n        }\n        default: {\n            tokenInHead(p, token);\n        }\n    }\n}\nfunction endTagInHead(p, token) {\n    switch (token.tagID) {\n        case $.HEAD: {\n            p.openElements.pop();\n            p.insertionMode = InsertionMode.AFTER_HEAD;\n            break;\n        }\n        case $.BODY:\n        case $.BR:\n        case $.HTML: {\n            tokenInHead(p, token);\n            break;\n        }\n        case $.TEMPLATE: {\n            templateEndTagInHead(p, token);\n            break;\n        }\n        default: {\n            p._err(token, ERR.endTagWithoutMatchingOpenElement);\n        }\n    }\n}\nfunction templateEndTagInHead(p, token) {\n    if (p.openElements.tmplCount > 0) {\n        p.openElements.generateImpliedEndTagsThoroughly();\n        if (p.openElements.currentTagId !== $.TEMPLATE) {\n            p._err(token, ERR.closingOfElementWithOpenChildElements);\n        }\n        p.openElements.popUntilTagNamePopped($.TEMPLATE);\n        p.activeFormattingElements.clearToLastMarker();\n        p.tmplInsertionModeStack.shift();\n        p._resetInsertionMode();\n    }\n    else {\n        p._err(token, ERR.endTagWithoutMatchingOpenElement);\n    }\n}\nfunction tokenInHead(p, token) {\n    p.openElements.pop();\n    p.insertionMode = InsertionMode.AFTER_HEAD;\n    p._processToken(token);\n}\n// The \"in head no script\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHeadNoScript(p, token) {\n    switch (token.tagID) {\n        case $.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case $.BASEFONT:\n        case $.BGSOUND:\n        case $.HEAD:\n        case $.LINK:\n        case $.META:\n        case $.NOFRAMES:\n        case $.STYLE: {\n            startTagInHead(p, token);\n            break;\n        }\n        case $.NOSCRIPT: {\n            p._err(token, ERR.nestedNoscriptInHead);\n            break;\n        }\n        default: {\n            tokenInHeadNoScript(p, token);\n        }\n    }\n}\nfunction endTagInHeadNoScript(p, token) {\n    switch (token.tagID) {\n        case $.NOSCRIPT: {\n            p.openElements.pop();\n            p.insertionMode = InsertionMode.IN_HEAD;\n            break;\n        }\n        case $.BR: {\n            tokenInHeadNoScript(p, token);\n            break;\n        }\n        default: {\n            p._err(token, ERR.endTagWithoutMatchingOpenElement);\n        }\n    }\n}\nfunction tokenInHeadNoScript(p, token) {\n    const errCode = token.type === TokenType.EOF ? ERR.openElementsLeftAfterEof : ERR.disallowedContentInNoscriptInHead;\n    p._err(token, errCode);\n    p.openElements.pop();\n    p.insertionMode = InsertionMode.IN_HEAD;\n    p._processToken(token);\n}\n// The \"after head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterHead(p, token) {\n    switch (token.tagID) {\n        case $.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case $.BODY: {\n            p._insertElement(token, NS.HTML);\n            p.framesetOk = false;\n            p.insertionMode = InsertionMode.IN_BODY;\n            break;\n        }\n        case $.FRAMESET: {\n            p._insertElement(token, NS.HTML);\n            p.insertionMode = InsertionMode.IN_FRAMESET;\n            break;\n        }\n        case $.BASE:\n        case $.BASEFONT:\n        case $.BGSOUND:\n        case $.LINK:\n        case $.META:\n        case $.NOFRAMES:\n        case $.SCRIPT:\n        case $.STYLE:\n        case $.TEMPLATE:\n        case $.TITLE: {\n            p._err(token, ERR.abandonedHeadElementChild);\n            p.openElements.push(p.headElement, $.HEAD);\n            startTagInHead(p, token);\n            p.openElements.remove(p.headElement);\n            break;\n        }\n        case $.HEAD: {\n            p._err(token, ERR.misplacedStartTagForHeadElement);\n            break;\n        }\n        default: {\n            tokenAfterHead(p, token);\n        }\n    }\n}\nfunction endTagAfterHead(p, token) {\n    switch (token.tagID) {\n        case $.BODY:\n        case $.HTML:\n        case $.BR: {\n            tokenAfterHead(p, token);\n            break;\n        }\n        case $.TEMPLATE: {\n            templateEndTagInHead(p, token);\n            break;\n        }\n        default: {\n            p._err(token, ERR.endTagWithoutMatchingOpenElement);\n        }\n    }\n}\nfunction tokenAfterHead(p, token) {\n    p._insertFakeElement(TN.BODY, $.BODY);\n    p.insertionMode = InsertionMode.IN_BODY;\n    modeInBody(p, token);\n}\n// The \"in body\" insertion mode\n//------------------------------------------------------------------\nfunction modeInBody(p, token) {\n    switch (token.type) {\n        case TokenType.CHARACTER: {\n            characterInBody(p, token);\n            break;\n        }\n        case TokenType.WHITESPACE_CHARACTER: {\n            whitespaceCharacterInBody(p, token);\n            break;\n        }\n        case TokenType.COMMENT: {\n            appendComment(p, token);\n            break;\n        }\n        case TokenType.START_TAG: {\n            startTagInBody(p, token);\n            break;\n        }\n        case TokenType.END_TAG: {\n            endTagInBody(p, token);\n            break;\n        }\n        case TokenType.EOF: {\n            eofInBody(p, token);\n            break;\n        }\n        default:\n        // Do nothing\n    }\n}\nfunction whitespaceCharacterInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertCharacters(token);\n}\nfunction characterInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertCharacters(token);\n    p.framesetOk = false;\n}\nfunction htmlStartTagInBody(p, token) {\n    if (p.openElements.tmplCount === 0) {\n        p.treeAdapter.adoptAttributes(p.openElements.items[0], token.attrs);\n    }\n}\nfunction bodyStartTagInBody(p, token) {\n    const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n    if (bodyElement && p.openElements.tmplCount === 0) {\n        p.framesetOk = false;\n        p.treeAdapter.adoptAttributes(bodyElement, token.attrs);\n    }\n}\nfunction framesetStartTagInBody(p, token) {\n    const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n    if (p.framesetOk && bodyElement) {\n        p.treeAdapter.detachNode(bodyElement);\n        p.openElements.popAllUpToHtmlElement();\n        p._insertElement(token, NS.HTML);\n        p.insertionMode = InsertionMode.IN_FRAMESET;\n    }\n}\nfunction addressStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n    p._insertElement(token, NS.HTML);\n}\nfunction numberedHeaderStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n    if (p.openElements.currentTagId !== undefined && NUMBERED_HEADERS.has(p.openElements.currentTagId)) {\n        p.openElements.pop();\n    }\n    p._insertElement(token, NS.HTML);\n}\nfunction preStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n    p._insertElement(token, NS.HTML);\n    //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n    //on to the next one. (Newlines at the start of pre blocks are ignored as an authoring convenience.)\n    p.skipNextNewLine = true;\n    p.framesetOk = false;\n}\nfunction formStartTagInBody(p, token) {\n    const inTemplate = p.openElements.tmplCount > 0;\n    if (!p.formElement || inTemplate) {\n        if (p.openElements.hasInButtonScope($.P)) {\n            p._closePElement();\n        }\n        p._insertElement(token, NS.HTML);\n        if (!inTemplate) {\n            p.formElement = p.openElements.current;\n        }\n    }\n}\nfunction listItemStartTagInBody(p, token) {\n    p.framesetOk = false;\n    const tn = token.tagID;\n    for (let i = p.openElements.stackTop; i >= 0; i--) {\n        const elementId = p.openElements.tagIDs[i];\n        if ((tn === $.LI && elementId === $.LI) ||\n            ((tn === $.DD || tn === $.DT) && (elementId === $.DD || elementId === $.DT))) {\n            p.openElements.generateImpliedEndTagsWithExclusion(elementId);\n            p.openElements.popUntilTagNamePopped(elementId);\n            break;\n        }\n        if (elementId !== $.ADDRESS &&\n            elementId !== $.DIV &&\n            elementId !== $.P &&\n            p._isSpecialElement(p.openElements.items[i], elementId)) {\n            break;\n        }\n    }\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n    p._insertElement(token, NS.HTML);\n}\nfunction plaintextStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n    p._insertElement(token, NS.HTML);\n    p.tokenizer.state = TokenizerMode.PLAINTEXT;\n}\nfunction buttonStartTagInBody(p, token) {\n    if (p.openElements.hasInScope($.BUTTON)) {\n        p.openElements.generateImpliedEndTags();\n        p.openElements.popUntilTagNamePopped($.BUTTON);\n    }\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n    p.framesetOk = false;\n}\nfunction aStartTagInBody(p, token) {\n    const activeElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(TN.A);\n    if (activeElementEntry) {\n        callAdoptionAgency(p, token);\n        p.openElements.remove(activeElementEntry.element);\n        p.activeFormattingElements.removeEntry(activeElementEntry);\n    }\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n    p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction bStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n    p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction nobrStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    if (p.openElements.hasInScope($.NOBR)) {\n        callAdoptionAgency(p, token);\n        p._reconstructActiveFormattingElements();\n    }\n    p._insertElement(token, NS.HTML);\n    p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction appletStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n    p.activeFormattingElements.insertMarker();\n    p.framesetOk = false;\n}\nfunction tableStartTagInBody(p, token) {\n    if (p.treeAdapter.getDocumentMode(p.document) !== DOCUMENT_MODE.QUIRKS && p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n    p._insertElement(token, NS.HTML);\n    p.framesetOk = false;\n    p.insertionMode = InsertionMode.IN_TABLE;\n}\nfunction areaStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._appendElement(token, NS.HTML);\n    p.framesetOk = false;\n    token.ackSelfClosing = true;\n}\nfunction isHiddenInput(token) {\n    const inputType = getTokenAttr(token, ATTRS.TYPE);\n    return inputType != null && inputType.toLowerCase() === HIDDEN_INPUT_TYPE;\n}\nfunction inputStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._appendElement(token, NS.HTML);\n    if (!isHiddenInput(token)) {\n        p.framesetOk = false;\n    }\n    token.ackSelfClosing = true;\n}\nfunction paramStartTagInBody(p, token) {\n    p._appendElement(token, NS.HTML);\n    token.ackSelfClosing = true;\n}\nfunction hrStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n    p._appendElement(token, NS.HTML);\n    p.framesetOk = false;\n    token.ackSelfClosing = true;\n}\nfunction imageStartTagInBody(p, token) {\n    token.tagName = TN.IMG;\n    token.tagID = $.IMG;\n    areaStartTagInBody(p, token);\n}\nfunction textareaStartTagInBody(p, token) {\n    p._insertElement(token, NS.HTML);\n    //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n    //on to the next one. (Newlines at the start of textarea elements are ignored as an authoring convenience.)\n    p.skipNextNewLine = true;\n    p.tokenizer.state = TokenizerMode.RCDATA;\n    p.originalInsertionMode = p.insertionMode;\n    p.framesetOk = false;\n    p.insertionMode = InsertionMode.TEXT;\n}\nfunction xmpStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n    p._reconstructActiveFormattingElements();\n    p.framesetOk = false;\n    p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\nfunction iframeStartTagInBody(p, token) {\n    p.framesetOk = false;\n    p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\n//NOTE: here we assume that we always act as a user agent with enabled plugins/frames, so we parse\n//<noembed>/<noframes> as rawtext.\nfunction rawTextStartTagInBody(p, token) {\n    p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\nfunction selectStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n    p.framesetOk = false;\n    p.insertionMode =\n        p.insertionMode === InsertionMode.IN_TABLE ||\n            p.insertionMode === InsertionMode.IN_CAPTION ||\n            p.insertionMode === InsertionMode.IN_TABLE_BODY ||\n            p.insertionMode === InsertionMode.IN_ROW ||\n            p.insertionMode === InsertionMode.IN_CELL\n            ? InsertionMode.IN_SELECT_IN_TABLE\n            : InsertionMode.IN_SELECT;\n}\nfunction optgroupStartTagInBody(p, token) {\n    if (p.openElements.currentTagId === $.OPTION) {\n        p.openElements.pop();\n    }\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n}\nfunction rbStartTagInBody(p, token) {\n    if (p.openElements.hasInScope($.RUBY)) {\n        p.openElements.generateImpliedEndTags();\n    }\n    p._insertElement(token, NS.HTML);\n}\nfunction rtStartTagInBody(p, token) {\n    if (p.openElements.hasInScope($.RUBY)) {\n        p.openElements.generateImpliedEndTagsWithExclusion($.RTC);\n    }\n    p._insertElement(token, NS.HTML);\n}\nfunction mathStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    foreignContent.adjustTokenMathMLAttrs(token);\n    foreignContent.adjustTokenXMLAttrs(token);\n    if (token.selfClosing) {\n        p._appendElement(token, NS.MATHML);\n    }\n    else {\n        p._insertElement(token, NS.MATHML);\n    }\n    token.ackSelfClosing = true;\n}\nfunction svgStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    foreignContent.adjustTokenSVGAttrs(token);\n    foreignContent.adjustTokenXMLAttrs(token);\n    if (token.selfClosing) {\n        p._appendElement(token, NS.SVG);\n    }\n    else {\n        p._insertElement(token, NS.SVG);\n    }\n    token.ackSelfClosing = true;\n}\nfunction genericStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n}\nfunction startTagInBody(p, token) {\n    switch (token.tagID) {\n        case $.I:\n        case $.S:\n        case $.B:\n        case $.U:\n        case $.EM:\n        case $.TT:\n        case $.BIG:\n        case $.CODE:\n        case $.FONT:\n        case $.SMALL:\n        case $.STRIKE:\n        case $.STRONG: {\n            bStartTagInBody(p, token);\n            break;\n        }\n        case $.A: {\n            aStartTagInBody(p, token);\n            break;\n        }\n        case $.H1:\n        case $.H2:\n        case $.H3:\n        case $.H4:\n        case $.H5:\n        case $.H6: {\n            numberedHeaderStartTagInBody(p, token);\n            break;\n        }\n        case $.P:\n        case $.DL:\n        case $.OL:\n        case $.UL:\n        case $.DIV:\n        case $.DIR:\n        case $.NAV:\n        case $.MAIN:\n        case $.MENU:\n        case $.ASIDE:\n        case $.CENTER:\n        case $.FIGURE:\n        case $.FOOTER:\n        case $.HEADER:\n        case $.HGROUP:\n        case $.DIALOG:\n        case $.DETAILS:\n        case $.ADDRESS:\n        case $.ARTICLE:\n        case $.SEARCH:\n        case $.SECTION:\n        case $.SUMMARY:\n        case $.FIELDSET:\n        case $.BLOCKQUOTE:\n        case $.FIGCAPTION: {\n            addressStartTagInBody(p, token);\n            break;\n        }\n        case $.LI:\n        case $.DD:\n        case $.DT: {\n            listItemStartTagInBody(p, token);\n            break;\n        }\n        case $.BR:\n        case $.IMG:\n        case $.WBR:\n        case $.AREA:\n        case $.EMBED:\n        case $.KEYGEN: {\n            areaStartTagInBody(p, token);\n            break;\n        }\n        case $.HR: {\n            hrStartTagInBody(p, token);\n            break;\n        }\n        case $.RB:\n        case $.RTC: {\n            rbStartTagInBody(p, token);\n            break;\n        }\n        case $.RT:\n        case $.RP: {\n            rtStartTagInBody(p, token);\n            break;\n        }\n        case $.PRE:\n        case $.LISTING: {\n            preStartTagInBody(p, token);\n            break;\n        }\n        case $.XMP: {\n            xmpStartTagInBody(p, token);\n            break;\n        }\n        case $.SVG: {\n            svgStartTagInBody(p, token);\n            break;\n        }\n        case $.HTML: {\n            htmlStartTagInBody(p, token);\n            break;\n        }\n        case $.BASE:\n        case $.LINK:\n        case $.META:\n        case $.STYLE:\n        case $.TITLE:\n        case $.SCRIPT:\n        case $.BGSOUND:\n        case $.BASEFONT:\n        case $.TEMPLATE: {\n            startTagInHead(p, token);\n            break;\n        }\n        case $.BODY: {\n            bodyStartTagInBody(p, token);\n            break;\n        }\n        case $.FORM: {\n            formStartTagInBody(p, token);\n            break;\n        }\n        case $.NOBR: {\n            nobrStartTagInBody(p, token);\n            break;\n        }\n        case $.MATH: {\n            mathStartTagInBody(p, token);\n            break;\n        }\n        case $.TABLE: {\n            tableStartTagInBody(p, token);\n            break;\n        }\n        case $.INPUT: {\n            inputStartTagInBody(p, token);\n            break;\n        }\n        case $.PARAM:\n        case $.TRACK:\n        case $.SOURCE: {\n            paramStartTagInBody(p, token);\n            break;\n        }\n        case $.IMAGE: {\n            imageStartTagInBody(p, token);\n            break;\n        }\n        case $.BUTTON: {\n            buttonStartTagInBody(p, token);\n            break;\n        }\n        case $.APPLET:\n        case $.OBJECT:\n        case $.MARQUEE: {\n            appletStartTagInBody(p, token);\n            break;\n        }\n        case $.IFRAME: {\n            iframeStartTagInBody(p, token);\n            break;\n        }\n        case $.SELECT: {\n            selectStartTagInBody(p, token);\n            break;\n        }\n        case $.OPTION:\n        case $.OPTGROUP: {\n            optgroupStartTagInBody(p, token);\n            break;\n        }\n        case $.NOEMBED:\n        case $.NOFRAMES: {\n            rawTextStartTagInBody(p, token);\n            break;\n        }\n        case $.FRAMESET: {\n            framesetStartTagInBody(p, token);\n            break;\n        }\n        case $.TEXTAREA: {\n            textareaStartTagInBody(p, token);\n            break;\n        }\n        case $.NOSCRIPT: {\n            if (p.options.scriptingEnabled) {\n                rawTextStartTagInBody(p, token);\n            }\n            else {\n                genericStartTagInBody(p, token);\n            }\n            break;\n        }\n        case $.PLAINTEXT: {\n            plaintextStartTagInBody(p, token);\n            break;\n        }\n        case $.COL:\n        case $.TH:\n        case $.TD:\n        case $.TR:\n        case $.HEAD:\n        case $.FRAME:\n        case $.TBODY:\n        case $.TFOOT:\n        case $.THEAD:\n        case $.CAPTION:\n        case $.COLGROUP: {\n            // Ignore token\n            break;\n        }\n        default: {\n            genericStartTagInBody(p, token);\n        }\n    }\n}\nfunction bodyEndTagInBody(p, token) {\n    if (p.openElements.hasInScope($.BODY)) {\n        p.insertionMode = InsertionMode.AFTER_BODY;\n        //NOTE: <body> is never popped from the stack, so we need to updated\n        //the end location explicitly.\n        if (p.options.sourceCodeLocationInfo) {\n            const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n            if (bodyElement) {\n                p._setEndLocation(bodyElement, token);\n            }\n        }\n    }\n}\nfunction htmlEndTagInBody(p, token) {\n    if (p.openElements.hasInScope($.BODY)) {\n        p.insertionMode = InsertionMode.AFTER_BODY;\n        endTagAfterBody(p, token);\n    }\n}\nfunction addressEndTagInBody(p, token) {\n    const tn = token.tagID;\n    if (p.openElements.hasInScope(tn)) {\n        p.openElements.generateImpliedEndTags();\n        p.openElements.popUntilTagNamePopped(tn);\n    }\n}\nfunction formEndTagInBody(p) {\n    const inTemplate = p.openElements.tmplCount > 0;\n    const { formElement } = p;\n    if (!inTemplate) {\n        p.formElement = null;\n    }\n    if ((formElement || inTemplate) && p.openElements.hasInScope($.FORM)) {\n        p.openElements.generateImpliedEndTags();\n        if (inTemplate) {\n            p.openElements.popUntilTagNamePopped($.FORM);\n        }\n        else if (formElement) {\n            p.openElements.remove(formElement);\n        }\n    }\n}\nfunction pEndTagInBody(p) {\n    if (!p.openElements.hasInButtonScope($.P)) {\n        p._insertFakeElement(TN.P, $.P);\n    }\n    p._closePElement();\n}\nfunction liEndTagInBody(p) {\n    if (p.openElements.hasInListItemScope($.LI)) {\n        p.openElements.generateImpliedEndTagsWithExclusion($.LI);\n        p.openElements.popUntilTagNamePopped($.LI);\n    }\n}\nfunction ddEndTagInBody(p, token) {\n    const tn = token.tagID;\n    if (p.openElements.hasInScope(tn)) {\n        p.openElements.generateImpliedEndTagsWithExclusion(tn);\n        p.openElements.popUntilTagNamePopped(tn);\n    }\n}\nfunction numberedHeaderEndTagInBody(p) {\n    if (p.openElements.hasNumberedHeaderInScope()) {\n        p.openElements.generateImpliedEndTags();\n        p.openElements.popUntilNumberedHeaderPopped();\n    }\n}\nfunction appletEndTagInBody(p, token) {\n    const tn = token.tagID;\n    if (p.openElements.hasInScope(tn)) {\n        p.openElements.generateImpliedEndTags();\n        p.openElements.popUntilTagNamePopped(tn);\n        p.activeFormattingElements.clearToLastMarker();\n    }\n}\nfunction brEndTagInBody(p) {\n    p._reconstructActiveFormattingElements();\n    p._insertFakeElement(TN.BR, $.BR);\n    p.openElements.pop();\n    p.framesetOk = false;\n}\nfunction genericEndTagInBody(p, token) {\n    const tn = token.tagName;\n    const tid = token.tagID;\n    for (let i = p.openElements.stackTop; i > 0; i--) {\n        const element = p.openElements.items[i];\n        const elementId = p.openElements.tagIDs[i];\n        // Compare the tag name here, as the tag might not be a known tag with an ID.\n        if (tid === elementId && (tid !== $.UNKNOWN || p.treeAdapter.getTagName(element) === tn)) {\n            p.openElements.generateImpliedEndTagsWithExclusion(tid);\n            if (p.openElements.stackTop >= i)\n                p.openElements.shortenToLength(i);\n            break;\n        }\n        if (p._isSpecialElement(element, elementId)) {\n            break;\n        }\n    }\n}\nfunction endTagInBody(p, token) {\n    switch (token.tagID) {\n        case $.A:\n        case $.B:\n        case $.I:\n        case $.S:\n        case $.U:\n        case $.EM:\n        case $.TT:\n        case $.BIG:\n        case $.CODE:\n        case $.FONT:\n        case $.NOBR:\n        case $.SMALL:\n        case $.STRIKE:\n        case $.STRONG: {\n            callAdoptionAgency(p, token);\n            break;\n        }\n        case $.P: {\n            pEndTagInBody(p);\n            break;\n        }\n        case $.DL:\n        case $.UL:\n        case $.OL:\n        case $.DIR:\n        case $.DIV:\n        case $.NAV:\n        case $.PRE:\n        case $.MAIN:\n        case $.MENU:\n        case $.ASIDE:\n        case $.BUTTON:\n        case $.CENTER:\n        case $.FIGURE:\n        case $.FOOTER:\n        case $.HEADER:\n        case $.HGROUP:\n        case $.DIALOG:\n        case $.ADDRESS:\n        case $.ARTICLE:\n        case $.DETAILS:\n        case $.SEARCH:\n        case $.SECTION:\n        case $.SUMMARY:\n        case $.LISTING:\n        case $.FIELDSET:\n        case $.BLOCKQUOTE:\n        case $.FIGCAPTION: {\n            addressEndTagInBody(p, token);\n            break;\n        }\n        case $.LI: {\n            liEndTagInBody(p);\n            break;\n        }\n        case $.DD:\n        case $.DT: {\n            ddEndTagInBody(p, token);\n            break;\n        }\n        case $.H1:\n        case $.H2:\n        case $.H3:\n        case $.H4:\n        case $.H5:\n        case $.H6: {\n            numberedHeaderEndTagInBody(p);\n            break;\n        }\n        case $.BR: {\n            brEndTagInBody(p);\n            break;\n        }\n        case $.BODY: {\n            bodyEndTagInBody(p, token);\n            break;\n        }\n        case $.HTML: {\n            htmlEndTagInBody(p, token);\n            break;\n        }\n        case $.FORM: {\n            formEndTagInBody(p);\n            break;\n        }\n        case $.APPLET:\n        case $.OBJECT:\n        case $.MARQUEE: {\n            appletEndTagInBody(p, token);\n            break;\n        }\n        case $.TEMPLATE: {\n            templateEndTagInHead(p, token);\n            break;\n        }\n        default: {\n            genericEndTagInBody(p, token);\n        }\n    }\n}\nfunction eofInBody(p, token) {\n    if (p.tmplInsertionModeStack.length > 0) {\n        eofInTemplate(p, token);\n    }\n    else {\n        stopParsing(p, token);\n    }\n}\n// The \"text\" insertion mode\n//------------------------------------------------------------------\nfunction endTagInText(p, token) {\n    var _a;\n    if (token.tagID === $.SCRIPT) {\n        (_a = p.scriptHandler) === null || _a === void 0 ? void 0 : _a.call(p, p.openElements.current);\n    }\n    p.openElements.pop();\n    p.insertionMode = p.originalInsertionMode;\n}\nfunction eofInText(p, token) {\n    p._err(token, ERR.eofInElementThatCanContainOnlyText);\n    p.openElements.pop();\n    p.insertionMode = p.originalInsertionMode;\n    p.onEof(token);\n}\n// The \"in table\" insertion mode\n//------------------------------------------------------------------\nfunction characterInTable(p, token) {\n    if (p.openElements.currentTagId !== undefined && TABLE_STRUCTURE_TAGS.has(p.openElements.currentTagId)) {\n        p.pendingCharacterTokens.length = 0;\n        p.hasNonWhitespacePendingCharacterToken = false;\n        p.originalInsertionMode = p.insertionMode;\n        p.insertionMode = InsertionMode.IN_TABLE_TEXT;\n        switch (token.type) {\n            case TokenType.CHARACTER: {\n                characterInTableText(p, token);\n                break;\n            }\n            case TokenType.WHITESPACE_CHARACTER: {\n                whitespaceCharacterInTableText(p, token);\n                break;\n            }\n            // Ignore null\n        }\n    }\n    else {\n        tokenInTable(p, token);\n    }\n}\nfunction captionStartTagInTable(p, token) {\n    p.openElements.clearBackToTableContext();\n    p.activeFormattingElements.insertMarker();\n    p._insertElement(token, NS.HTML);\n    p.insertionMode = InsertionMode.IN_CAPTION;\n}\nfunction colgroupStartTagInTable(p, token) {\n    p.openElements.clearBackToTableContext();\n    p._insertElement(token, NS.HTML);\n    p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n}\nfunction colStartTagInTable(p, token) {\n    p.openElements.clearBackToTableContext();\n    p._insertFakeElement(TN.COLGROUP, $.COLGROUP);\n    p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n    startTagInColumnGroup(p, token);\n}\nfunction tbodyStartTagInTable(p, token) {\n    p.openElements.clearBackToTableContext();\n    p._insertElement(token, NS.HTML);\n    p.insertionMode = InsertionMode.IN_TABLE_BODY;\n}\nfunction tdStartTagInTable(p, token) {\n    p.openElements.clearBackToTableContext();\n    p._insertFakeElement(TN.TBODY, $.TBODY);\n    p.insertionMode = InsertionMode.IN_TABLE_BODY;\n    startTagInTableBody(p, token);\n}\nfunction tableStartTagInTable(p, token) {\n    if (p.openElements.hasInTableScope($.TABLE)) {\n        p.openElements.popUntilTagNamePopped($.TABLE);\n        p._resetInsertionMode();\n        p._processStartTag(token);\n    }\n}\nfunction inputStartTagInTable(p, token) {\n    if (isHiddenInput(token)) {\n        p._appendElement(token, NS.HTML);\n    }\n    else {\n        tokenInTable(p, token);\n    }\n    token.ackSelfClosing = true;\n}\nfunction formStartTagInTable(p, token) {\n    if (!p.formElement && p.openElements.tmplCount === 0) {\n        p._insertElement(token, NS.HTML);\n        p.formElement = p.openElements.current;\n        p.openElements.pop();\n    }\n}\nfunction startTagInTable(p, token) {\n    switch (token.tagID) {\n        case $.TD:\n        case $.TH:\n        case $.TR: {\n            tdStartTagInTable(p, token);\n            break;\n        }\n        case $.STYLE:\n        case $.SCRIPT:\n        case $.TEMPLATE: {\n            startTagInHead(p, token);\n            break;\n        }\n        case $.COL: {\n            colStartTagInTable(p, token);\n            break;\n        }\n        case $.FORM: {\n            formStartTagInTable(p, token);\n            break;\n        }\n        case $.TABLE: {\n            tableStartTagInTable(p, token);\n            break;\n        }\n        case $.TBODY:\n        case $.TFOOT:\n        case $.THEAD: {\n            tbodyStartTagInTable(p, token);\n            break;\n        }\n        case $.INPUT: {\n            inputStartTagInTable(p, token);\n            break;\n        }\n        case $.CAPTION: {\n            captionStartTagInTable(p, token);\n            break;\n        }\n        case $.COLGROUP: {\n            colgroupStartTagInTable(p, token);\n            break;\n        }\n        default: {\n            tokenInTable(p, token);\n        }\n    }\n}\nfunction endTagInTable(p, token) {\n    switch (token.tagID) {\n        case $.TABLE: {\n            if (p.openElements.hasInTableScope($.TABLE)) {\n                p.openElements.popUntilTagNamePopped($.TABLE);\n                p._resetInsertionMode();\n            }\n            break;\n        }\n        case $.TEMPLATE: {\n            templateEndTagInHead(p, token);\n            break;\n        }\n        case $.BODY:\n        case $.CAPTION:\n        case $.COL:\n        case $.COLGROUP:\n        case $.HTML:\n        case $.TBODY:\n        case $.TD:\n        case $.TFOOT:\n        case $.TH:\n        case $.THEAD:\n        case $.TR: {\n            // Ignore token\n            break;\n        }\n        default: {\n            tokenInTable(p, token);\n        }\n    }\n}\nfunction tokenInTable(p, token) {\n    const savedFosterParentingState = p.fosterParentingEnabled;\n    p.fosterParentingEnabled = true;\n    // Process token in `In Body` mode\n    modeInBody(p, token);\n    p.fosterParentingEnabled = savedFosterParentingState;\n}\n// The \"in table text\" insertion mode\n//------------------------------------------------------------------\nfunction whitespaceCharacterInTableText(p, token) {\n    p.pendingCharacterTokens.push(token);\n}\nfunction characterInTableText(p, token) {\n    p.pendingCharacterTokens.push(token);\n    p.hasNonWhitespacePendingCharacterToken = true;\n}\nfunction tokenInTableText(p, token) {\n    let i = 0;\n    if (p.hasNonWhitespacePendingCharacterToken) {\n        for (; i < p.pendingCharacterTokens.length; i++) {\n            tokenInTable(p, p.pendingCharacterTokens[i]);\n        }\n    }\n    else {\n        for (; i < p.pendingCharacterTokens.length; i++) {\n            p._insertCharacters(p.pendingCharacterTokens[i]);\n        }\n    }\n    p.insertionMode = p.originalInsertionMode;\n    p._processToken(token);\n}\n// The \"in caption\" insertion mode\n//------------------------------------------------------------------\nconst TABLE_VOID_ELEMENTS = new Set([$.CAPTION, $.COL, $.COLGROUP, $.TBODY, $.TD, $.TFOOT, $.TH, $.THEAD, $.TR]);\nfunction startTagInCaption(p, token) {\n    const tn = token.tagID;\n    if (TABLE_VOID_ELEMENTS.has(tn)) {\n        if (p.openElements.hasInTableScope($.CAPTION)) {\n            p.openElements.generateImpliedEndTags();\n            p.openElements.popUntilTagNamePopped($.CAPTION);\n            p.activeFormattingElements.clearToLastMarker();\n            p.insertionMode = InsertionMode.IN_TABLE;\n            startTagInTable(p, token);\n        }\n    }\n    else {\n        startTagInBody(p, token);\n    }\n}\nfunction endTagInCaption(p, token) {\n    const tn = token.tagID;\n    switch (tn) {\n        case $.CAPTION:\n        case $.TABLE: {\n            if (p.openElements.hasInTableScope($.CAPTION)) {\n                p.openElements.generateImpliedEndTags();\n                p.openElements.popUntilTagNamePopped($.CAPTION);\n                p.activeFormattingElements.clearToLastMarker();\n                p.insertionMode = InsertionMode.IN_TABLE;\n                if (tn === $.TABLE) {\n                    endTagInTable(p, token);\n                }\n            }\n            break;\n        }\n        case $.BODY:\n        case $.COL:\n        case $.COLGROUP:\n        case $.HTML:\n        case $.TBODY:\n        case $.TD:\n        case $.TFOOT:\n        case $.TH:\n        case $.THEAD:\n        case $.TR: {\n            // Ignore token\n            break;\n        }\n        default: {\n            endTagInBody(p, token);\n        }\n    }\n}\n// The \"in column group\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInColumnGroup(p, token) {\n    switch (token.tagID) {\n        case $.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case $.COL: {\n            p._appendElement(token, NS.HTML);\n            token.ackSelfClosing = true;\n            break;\n        }\n        case $.TEMPLATE: {\n            startTagInHead(p, token);\n            break;\n        }\n        default: {\n            tokenInColumnGroup(p, token);\n        }\n    }\n}\nfunction endTagInColumnGroup(p, token) {\n    switch (token.tagID) {\n        case $.COLGROUP: {\n            if (p.openElements.currentTagId === $.COLGROUP) {\n                p.openElements.pop();\n                p.insertionMode = InsertionMode.IN_TABLE;\n            }\n            break;\n        }\n        case $.TEMPLATE: {\n            templateEndTagInHead(p, token);\n            break;\n        }\n        case $.COL: {\n            // Ignore token\n            break;\n        }\n        default: {\n            tokenInColumnGroup(p, token);\n        }\n    }\n}\nfunction tokenInColumnGroup(p, token) {\n    if (p.openElements.currentTagId === $.COLGROUP) {\n        p.openElements.pop();\n        p.insertionMode = InsertionMode.IN_TABLE;\n        p._processToken(token);\n    }\n}\n// The \"in table body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTableBody(p, token) {\n    switch (token.tagID) {\n        case $.TR: {\n            p.openElements.clearBackToTableBodyContext();\n            p._insertElement(token, NS.HTML);\n            p.insertionMode = InsertionMode.IN_ROW;\n            break;\n        }\n        case $.TH:\n        case $.TD: {\n            p.openElements.clearBackToTableBodyContext();\n            p._insertFakeElement(TN.TR, $.TR);\n            p.insertionMode = InsertionMode.IN_ROW;\n            startTagInRow(p, token);\n            break;\n        }\n        case $.CAPTION:\n        case $.COL:\n        case $.COLGROUP:\n        case $.TBODY:\n        case $.TFOOT:\n        case $.THEAD: {\n            if (p.openElements.hasTableBodyContextInTableScope()) {\n                p.openElements.clearBackToTableBodyContext();\n                p.openElements.pop();\n                p.insertionMode = InsertionMode.IN_TABLE;\n                startTagInTable(p, token);\n            }\n            break;\n        }\n        default: {\n            startTagInTable(p, token);\n        }\n    }\n}\nfunction endTagInTableBody(p, token) {\n    const tn = token.tagID;\n    switch (token.tagID) {\n        case $.TBODY:\n        case $.TFOOT:\n        case $.THEAD: {\n            if (p.openElements.hasInTableScope(tn)) {\n                p.openElements.clearBackToTableBodyContext();\n                p.openElements.pop();\n                p.insertionMode = InsertionMode.IN_TABLE;\n            }\n            break;\n        }\n        case $.TABLE: {\n            if (p.openElements.hasTableBodyContextInTableScope()) {\n                p.openElements.clearBackToTableBodyContext();\n                p.openElements.pop();\n                p.insertionMode = InsertionMode.IN_TABLE;\n                endTagInTable(p, token);\n            }\n            break;\n        }\n        case $.BODY:\n        case $.CAPTION:\n        case $.COL:\n        case $.COLGROUP:\n        case $.HTML:\n        case $.TD:\n        case $.TH:\n        case $.TR: {\n            // Ignore token\n            break;\n        }\n        default: {\n            endTagInTable(p, token);\n        }\n    }\n}\n// The \"in row\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInRow(p, token) {\n    switch (token.tagID) {\n        case $.TH:\n        case $.TD: {\n            p.openElements.clearBackToTableRowContext();\n            p._insertElement(token, NS.HTML);\n            p.insertionMode = InsertionMode.IN_CELL;\n            p.activeFormattingElements.insertMarker();\n            break;\n        }\n        case $.CAPTION:\n        case $.COL:\n        case $.COLGROUP:\n        case $.TBODY:\n        case $.TFOOT:\n        case $.THEAD:\n        case $.TR: {\n            if (p.openElements.hasInTableScope($.TR)) {\n                p.openElements.clearBackToTableRowContext();\n                p.openElements.pop();\n                p.insertionMode = InsertionMode.IN_TABLE_BODY;\n                startTagInTableBody(p, token);\n            }\n            break;\n        }\n        default: {\n            startTagInTable(p, token);\n        }\n    }\n}\nfunction endTagInRow(p, token) {\n    switch (token.tagID) {\n        case $.TR: {\n            if (p.openElements.hasInTableScope($.TR)) {\n                p.openElements.clearBackToTableRowContext();\n                p.openElements.pop();\n                p.insertionMode = InsertionMode.IN_TABLE_BODY;\n            }\n            break;\n        }\n        case $.TABLE: {\n            if (p.openElements.hasInTableScope($.TR)) {\n                p.openElements.clearBackToTableRowContext();\n                p.openElements.pop();\n                p.insertionMode = InsertionMode.IN_TABLE_BODY;\n                endTagInTableBody(p, token);\n            }\n            break;\n        }\n        case $.TBODY:\n        case $.TFOOT:\n        case $.THEAD: {\n            if (p.openElements.hasInTableScope(token.tagID) || p.openElements.hasInTableScope($.TR)) {\n                p.openElements.clearBackToTableRowContext();\n                p.openElements.pop();\n                p.insertionMode = InsertionMode.IN_TABLE_BODY;\n                endTagInTableBody(p, token);\n            }\n            break;\n        }\n        case $.BODY:\n        case $.CAPTION:\n        case $.COL:\n        case $.COLGROUP:\n        case $.HTML:\n        case $.TD:\n        case $.TH: {\n            // Ignore end tag\n            break;\n        }\n        default: {\n            endTagInTable(p, token);\n        }\n    }\n}\n// The \"in cell\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInCell(p, token) {\n    const tn = token.tagID;\n    if (TABLE_VOID_ELEMENTS.has(tn)) {\n        if (p.openElements.hasInTableScope($.TD) || p.openElements.hasInTableScope($.TH)) {\n            p._closeTableCell();\n            startTagInRow(p, token);\n        }\n    }\n    else {\n        startTagInBody(p, token);\n    }\n}\nfunction endTagInCell(p, token) {\n    const tn = token.tagID;\n    switch (tn) {\n        case $.TD:\n        case $.TH: {\n            if (p.openElements.hasInTableScope(tn)) {\n                p.openElements.generateImpliedEndTags();\n                p.openElements.popUntilTagNamePopped(tn);\n                p.activeFormattingElements.clearToLastMarker();\n                p.insertionMode = InsertionMode.IN_ROW;\n            }\n            break;\n        }\n        case $.TABLE:\n        case $.TBODY:\n        case $.TFOOT:\n        case $.THEAD:\n        case $.TR: {\n            if (p.openElements.hasInTableScope(tn)) {\n                p._closeTableCell();\n                endTagInRow(p, token);\n            }\n            break;\n        }\n        case $.BODY:\n        case $.CAPTION:\n        case $.COL:\n        case $.COLGROUP:\n        case $.HTML: {\n            // Ignore token\n            break;\n        }\n        default: {\n            endTagInBody(p, token);\n        }\n    }\n}\n// The \"in select\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelect(p, token) {\n    switch (token.tagID) {\n        case $.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case $.OPTION: {\n            if (p.openElements.currentTagId === $.OPTION) {\n                p.openElements.pop();\n            }\n            p._insertElement(token, NS.HTML);\n            break;\n        }\n        case $.OPTGROUP: {\n            if (p.openElements.currentTagId === $.OPTION) {\n                p.openElements.pop();\n            }\n            if (p.openElements.currentTagId === $.OPTGROUP) {\n                p.openElements.pop();\n            }\n            p._insertElement(token, NS.HTML);\n            break;\n        }\n        case $.HR: {\n            if (p.openElements.currentTagId === $.OPTION) {\n                p.openElements.pop();\n            }\n            if (p.openElements.currentTagId === $.OPTGROUP) {\n                p.openElements.pop();\n            }\n            p._appendElement(token, NS.HTML);\n            token.ackSelfClosing = true;\n            break;\n        }\n        case $.INPUT:\n        case $.KEYGEN:\n        case $.TEXTAREA:\n        case $.SELECT: {\n            if (p.openElements.hasInSelectScope($.SELECT)) {\n                p.openElements.popUntilTagNamePopped($.SELECT);\n                p._resetInsertionMode();\n                if (token.tagID !== $.SELECT) {\n                    p._processStartTag(token);\n                }\n            }\n            break;\n        }\n        case $.SCRIPT:\n        case $.TEMPLATE: {\n            startTagInHead(p, token);\n            break;\n        }\n        default:\n        // Do nothing\n    }\n}\nfunction endTagInSelect(p, token) {\n    switch (token.tagID) {\n        case $.OPTGROUP: {\n            if (p.openElements.stackTop > 0 &&\n                p.openElements.currentTagId === $.OPTION &&\n                p.openElements.tagIDs[p.openElements.stackTop - 1] === $.OPTGROUP) {\n                p.openElements.pop();\n            }\n            if (p.openElements.currentTagId === $.OPTGROUP) {\n                p.openElements.pop();\n            }\n            break;\n        }\n        case $.OPTION: {\n            if (p.openElements.currentTagId === $.OPTION) {\n                p.openElements.pop();\n            }\n            break;\n        }\n        case $.SELECT: {\n            if (p.openElements.hasInSelectScope($.SELECT)) {\n                p.openElements.popUntilTagNamePopped($.SELECT);\n                p._resetInsertionMode();\n            }\n            break;\n        }\n        case $.TEMPLATE: {\n            templateEndTagInHead(p, token);\n            break;\n        }\n        default:\n        // Do nothing\n    }\n}\n// The \"in select in table\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelectInTable(p, token) {\n    const tn = token.tagID;\n    if (tn === $.CAPTION ||\n        tn === $.TABLE ||\n        tn === $.TBODY ||\n        tn === $.TFOOT ||\n        tn === $.THEAD ||\n        tn === $.TR ||\n        tn === $.TD ||\n        tn === $.TH) {\n        p.openElements.popUntilTagNamePopped($.SELECT);\n        p._resetInsertionMode();\n        p._processStartTag(token);\n    }\n    else {\n        startTagInSelect(p, token);\n    }\n}\nfunction endTagInSelectInTable(p, token) {\n    const tn = token.tagID;\n    if (tn === $.CAPTION ||\n        tn === $.TABLE ||\n        tn === $.TBODY ||\n        tn === $.TFOOT ||\n        tn === $.THEAD ||\n        tn === $.TR ||\n        tn === $.TD ||\n        tn === $.TH) {\n        if (p.openElements.hasInTableScope(tn)) {\n            p.openElements.popUntilTagNamePopped($.SELECT);\n            p._resetInsertionMode();\n            p.onEndTag(token);\n        }\n    }\n    else {\n        endTagInSelect(p, token);\n    }\n}\n// The \"in template\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTemplate(p, token) {\n    switch (token.tagID) {\n        // First, handle tags that can start without a mode change\n        case $.BASE:\n        case $.BASEFONT:\n        case $.BGSOUND:\n        case $.LINK:\n        case $.META:\n        case $.NOFRAMES:\n        case $.SCRIPT:\n        case $.STYLE:\n        case $.TEMPLATE:\n        case $.TITLE: {\n            startTagInHead(p, token);\n            break;\n        }\n        // Re-process the token in the appropriate mode\n        case $.CAPTION:\n        case $.COLGROUP:\n        case $.TBODY:\n        case $.TFOOT:\n        case $.THEAD: {\n            p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE;\n            p.insertionMode = InsertionMode.IN_TABLE;\n            startTagInTable(p, token);\n            break;\n        }\n        case $.COL: {\n            p.tmplInsertionModeStack[0] = InsertionMode.IN_COLUMN_GROUP;\n            p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n            startTagInColumnGroup(p, token);\n            break;\n        }\n        case $.TR: {\n            p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE_BODY;\n            p.insertionMode = InsertionMode.IN_TABLE_BODY;\n            startTagInTableBody(p, token);\n            break;\n        }\n        case $.TD:\n        case $.TH: {\n            p.tmplInsertionModeStack[0] = InsertionMode.IN_ROW;\n            p.insertionMode = InsertionMode.IN_ROW;\n            startTagInRow(p, token);\n            break;\n        }\n        default: {\n            p.tmplInsertionModeStack[0] = InsertionMode.IN_BODY;\n            p.insertionMode = InsertionMode.IN_BODY;\n            startTagInBody(p, token);\n        }\n    }\n}\nfunction endTagInTemplate(p, token) {\n    if (token.tagID === $.TEMPLATE) {\n        templateEndTagInHead(p, token);\n    }\n}\nfunction eofInTemplate(p, token) {\n    if (p.openElements.tmplCount > 0) {\n        p.openElements.popUntilTagNamePopped($.TEMPLATE);\n        p.activeFormattingElements.clearToLastMarker();\n        p.tmplInsertionModeStack.shift();\n        p._resetInsertionMode();\n        p.onEof(token);\n    }\n    else {\n        stopParsing(p, token);\n    }\n}\n// The \"after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterBody(p, token) {\n    if (token.tagID === $.HTML) {\n        startTagInBody(p, token);\n    }\n    else {\n        tokenAfterBody(p, token);\n    }\n}\nfunction endTagAfterBody(p, token) {\n    var _a;\n    if (token.tagID === $.HTML) {\n        if (!p.fragmentContext) {\n            p.insertionMode = InsertionMode.AFTER_AFTER_BODY;\n        }\n        //NOTE: <html> is never popped from the stack, so we need to updated\n        //the end location explicitly.\n        if (p.options.sourceCodeLocationInfo && p.openElements.tagIDs[0] === $.HTML) {\n            p._setEndLocation(p.openElements.items[0], token);\n            // Update the body element, if it doesn't have an end tag\n            const bodyElement = p.openElements.items[1];\n            if (bodyElement && !((_a = p.treeAdapter.getNodeSourceCodeLocation(bodyElement)) === null || _a === void 0 ? void 0 : _a.endTag)) {\n                p._setEndLocation(bodyElement, token);\n            }\n        }\n    }\n    else {\n        tokenAfterBody(p, token);\n    }\n}\nfunction tokenAfterBody(p, token) {\n    p.insertionMode = InsertionMode.IN_BODY;\n    modeInBody(p, token);\n}\n// The \"in frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInFrameset(p, token) {\n    switch (token.tagID) {\n        case $.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case $.FRAMESET: {\n            p._insertElement(token, NS.HTML);\n            break;\n        }\n        case $.FRAME: {\n            p._appendElement(token, NS.HTML);\n            token.ackSelfClosing = true;\n            break;\n        }\n        case $.NOFRAMES: {\n            startTagInHead(p, token);\n            break;\n        }\n        default:\n        // Do nothing\n    }\n}\nfunction endTagInFrameset(p, token) {\n    if (token.tagID === $.FRAMESET && !p.openElements.isRootHtmlElementCurrent()) {\n        p.openElements.pop();\n        if (!p.fragmentContext && p.openElements.currentTagId !== $.FRAMESET) {\n            p.insertionMode = InsertionMode.AFTER_FRAMESET;\n        }\n    }\n}\n// The \"after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterFrameset(p, token) {\n    switch (token.tagID) {\n        case $.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case $.NOFRAMES: {\n            startTagInHead(p, token);\n            break;\n        }\n        default:\n        // Do nothing\n    }\n}\nfunction endTagAfterFrameset(p, token) {\n    if (token.tagID === $.HTML) {\n        p.insertionMode = InsertionMode.AFTER_AFTER_FRAMESET;\n    }\n}\n// The \"after after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterBody(p, token) {\n    if (token.tagID === $.HTML) {\n        startTagInBody(p, token);\n    }\n    else {\n        tokenAfterAfterBody(p, token);\n    }\n}\nfunction tokenAfterAfterBody(p, token) {\n    p.insertionMode = InsertionMode.IN_BODY;\n    modeInBody(p, token);\n}\n// The \"after after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterFrameset(p, token) {\n    switch (token.tagID) {\n        case $.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case $.NOFRAMES: {\n            startTagInHead(p, token);\n            break;\n        }\n        default:\n        // Do nothing\n    }\n}\n// The rules for parsing tokens in foreign content\n//------------------------------------------------------------------\nfunction nullCharacterInForeignContent(p, token) {\n    token.chars = unicode.REPLACEMENT_CHARACTER;\n    p._insertCharacters(token);\n}\nfunction characterInForeignContent(p, token) {\n    p._insertCharacters(token);\n    p.framesetOk = false;\n}\nfunction popUntilHtmlOrIntegrationPoint(p) {\n    while (p.treeAdapter.getNamespaceURI(p.openElements.current) !== NS.HTML &&\n        p.openElements.currentTagId !== undefined &&\n        !p._isIntegrationPoint(p.openElements.currentTagId, p.openElements.current)) {\n        p.openElements.pop();\n    }\n}\nfunction startTagInForeignContent(p, token) {\n    if (foreignContent.causesExit(token)) {\n        popUntilHtmlOrIntegrationPoint(p);\n        p._startTagOutsideForeignContent(token);\n    }\n    else {\n        const current = p._getAdjustedCurrentElement();\n        const currentNs = p.treeAdapter.getNamespaceURI(current);\n        if (currentNs === NS.MATHML) {\n            foreignContent.adjustTokenMathMLAttrs(token);\n        }\n        else if (currentNs === NS.SVG) {\n            foreignContent.adjustTokenSVGTagName(token);\n            foreignContent.adjustTokenSVGAttrs(token);\n        }\n        foreignContent.adjustTokenXMLAttrs(token);\n        if (token.selfClosing) {\n            p._appendElement(token, currentNs);\n        }\n        else {\n            p._insertElement(token, currentNs);\n        }\n        token.ackSelfClosing = true;\n    }\n}\nfunction endTagInForeignContent(p, token) {\n    if (token.tagID === $.P || token.tagID === $.BR) {\n        popUntilHtmlOrIntegrationPoint(p);\n        p._endTagOutsideForeignContent(token);\n        return;\n    }\n    for (let i = p.openElements.stackTop; i > 0; i--) {\n        const element = p.openElements.items[i];\n        if (p.treeAdapter.getNamespaceURI(element) === NS.HTML) {\n            p._endTagOutsideForeignContent(token);\n            break;\n        }\n        const tagName = p.treeAdapter.getTagName(element);\n        if (tagName.toLowerCase() === token.tagName) {\n            //NOTE: update the token tag name for `_setEndLocation`.\n            token.tagName = tagName;\n            p.openElements.shortenToLength(i);\n            break;\n        }\n    }\n}\n","import { TAG_NAMES as $, NS, hasUnescapedText } from '../common/html.js';\nimport { escapeText, escapeAttribute } from 'entities/escape';\nimport { defaultTreeAdapter } from '../tree-adapters/default.js';\n// Sets\nconst VOID_ELEMENTS = new Set([\n    $.AREA,\n    $.BASE,\n    $.BASEFONT,\n    $.BGSOUND,\n    $.BR,\n    $.COL,\n    $.EMBED,\n    $.FRAME,\n    $.HR,\n    $.IMG,\n    $.INPUT,\n    $.KEYGEN,\n    $.LINK,\n    $.META,\n    $.PARAM,\n    $.SOURCE,\n    $.TRACK,\n    $.WBR,\n]);\nfunction isVoidElement(node, options) {\n    return (options.treeAdapter.isElementNode(node) &&\n        options.treeAdapter.getNamespaceURI(node) === NS.HTML &&\n        VOID_ELEMENTS.has(options.treeAdapter.getTagName(node)));\n}\nconst defaultOpts = { treeAdapter: defaultTreeAdapter, scriptingEnabled: true };\n/**\n * Serializes an AST node to an HTML string.\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parse('<!DOCTYPE html><html><head></head><body>Hi there!</body></html>');\n *\n * // Serializes a document.\n * const html = parse5.serialize(document);\n *\n * // Serializes the <html> element content.\n * const str = parse5.serialize(document.childNodes[1]);\n *\n * console.log(str); //> '<head></head><body>Hi there!</body>'\n * ```\n *\n * @param node Node to serialize.\n * @param options Serialization options.\n */\nexport function serialize(node, options) {\n    const opts = { ...defaultOpts, ...options };\n    if (isVoidElement(node, opts)) {\n        return '';\n    }\n    return serializeChildNodes(node, opts);\n}\n/**\n * Serializes an AST element node to an HTML string, including the element node.\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parseFragment('<div>Hello, <b>world</b>!</div>');\n *\n * // Serializes the <div> element.\n * const str = parse5.serializeOuter(document.childNodes[0]);\n *\n * console.log(str); //> '<div>Hello, <b>world</b>!</div>'\n * ```\n *\n * @param node Node to serialize.\n * @param options Serialization options.\n */\nexport function serializeOuter(node, options) {\n    const opts = { ...defaultOpts, ...options };\n    return serializeNode(node, opts);\n}\nfunction serializeChildNodes(parentNode, options) {\n    let html = '';\n    // Get container of the child nodes\n    const container = options.treeAdapter.isElementNode(parentNode) &&\n        options.treeAdapter.getTagName(parentNode) === $.TEMPLATE &&\n        options.treeAdapter.getNamespaceURI(parentNode) === NS.HTML\n        ? options.treeAdapter.getTemplateContent(parentNode)\n        : parentNode;\n    const childNodes = options.treeAdapter.getChildNodes(container);\n    if (childNodes) {\n        for (const currentNode of childNodes) {\n            html += serializeNode(currentNode, options);\n        }\n    }\n    return html;\n}\nfunction serializeNode(node, options) {\n    if (options.treeAdapter.isElementNode(node)) {\n        return serializeElement(node, options);\n    }\n    if (options.treeAdapter.isTextNode(node)) {\n        return serializeTextNode(node, options);\n    }\n    if (options.treeAdapter.isCommentNode(node)) {\n        return serializeCommentNode(node, options);\n    }\n    if (options.treeAdapter.isDocumentTypeNode(node)) {\n        return serializeDocumentTypeNode(node, options);\n    }\n    // Return an empty string for unknown nodes\n    return '';\n}\nfunction serializeElement(node, options) {\n    const tn = options.treeAdapter.getTagName(node);\n    return `<${tn}${serializeAttributes(node, options)}>${isVoidElement(node, options) ? '' : `${serializeChildNodes(node, options)}</${tn}>`}`;\n}\nfunction serializeAttributes(node, { treeAdapter }) {\n    let html = '';\n    for (const attr of treeAdapter.getAttrList(node)) {\n        html += ' ';\n        if (attr.namespace) {\n            switch (attr.namespace) {\n                case NS.XML: {\n                    html += `xml:${attr.name}`;\n                    break;\n                }\n                case NS.XMLNS: {\n                    if (attr.name !== 'xmlns') {\n                        html += 'xmlns:';\n                    }\n                    html += attr.name;\n                    break;\n                }\n                case NS.XLINK: {\n                    html += `xlink:${attr.name}`;\n                    break;\n                }\n                default: {\n                    html += `${attr.prefix}:${attr.name}`;\n                }\n            }\n        }\n        else {\n            html += attr.name;\n        }\n        html += `=\"${escapeAttribute(attr.value)}\"`;\n    }\n    return html;\n}\nfunction serializeTextNode(node, options) {\n    const { treeAdapter } = options;\n    const content = treeAdapter.getTextNodeContent(node);\n    const parent = treeAdapter.getParentNode(node);\n    const parentTn = parent && treeAdapter.isElementNode(parent) && treeAdapter.getTagName(parent);\n    return parentTn &&\n        treeAdapter.getNamespaceURI(parent) === NS.HTML &&\n        hasUnescapedText(parentTn, options.scriptingEnabled)\n        ? content\n        : escapeText(content);\n}\nfunction serializeCommentNode(node, { treeAdapter }) {\n    return `<!--${treeAdapter.getCommentNodeContent(node)}-->`;\n}\nfunction serializeDocumentTypeNode(node, { treeAdapter }) {\n    return `<!DOCTYPE ${treeAdapter.getDocumentTypeNodeName(node)}>`;\n}\n","/**\n * @import {Options} from 'hast-util-raw'\n * @import {Comment, Doctype, Element, Nodes, RootContent, Root, Text} from 'hast'\n * @import {Raw} from 'mdast-util-to-hast'\n * @import {DefaultTreeAdapterMap, ParserOptions} from 'parse5'\n * @import {Point} from 'unist'\n */\n\n/**\n * @typedef State\n *   Info passed around about the current state.\n * @property {(node: Nodes) => undefined} handle\n *   Add a hast node to the parser.\n * @property {Options} options\n *   User configuration.\n * @property {Parser<DefaultTreeAdapterMap>} parser\n *   Current parser.\n * @property {boolean} stitches\n *   Whether there are stitches.\n */\n\n/**\n * @typedef Stitch\n *   Custom comment-like value we pass through parse5, which contains a\n *   replacement node that we’ll swap back in afterwards.\n * @property {'comment'} type\n *   Node type.\n * @property {{stitch: Nodes}} value\n *   Replacement value.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {fromParse5} from 'hast-util-from-parse5'\nimport {toParse5} from 'hast-util-to-parse5'\nimport {htmlVoidElements} from 'html-void-elements'\nimport {Parser, Token, TokenizerMode, html} from 'parse5'\nimport {pointEnd, pointStart} from 'unist-util-position'\nimport {visit} from 'unist-util-visit'\nimport {webNamespaces} from 'web-namespaces'\nimport {zwitch} from 'zwitch'\n\nconst gfmTagfilterExpression =\n  /<(\\/?)(iframe|noembed|noframes|plaintext|script|style|textarea|title|xmp)(?=[\\t\\n\\f\\r />])/gi\n\n// Node types associated with MDX.\n// <https://github.com/mdx-js/mdx/blob/8a56312/packages/mdx/lib/node-types.js>\nconst knownMdxNames = new Set([\n  'mdxFlowExpression',\n  'mdxJsxFlowElement',\n  'mdxJsxTextElement',\n  'mdxTextExpression',\n  'mdxjsEsm'\n])\n\n/** @type {ParserOptions<DefaultTreeAdapterMap>} */\nconst parseOptions = {sourceCodeLocationInfo: true, scriptingEnabled: false}\n\n/**\n * Pass a hast tree through an HTML parser, which will fix nesting, and turn\n * raw nodes into actual nodes.\n *\n * @param {Nodes} tree\n *   Original hast tree to transform.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {Nodes}\n *   Parsed again tree.\n */\nexport function raw(tree, options) {\n  const document = documentMode(tree)\n  /** @type {(node: Nodes, state: State) => undefined} */\n  const one = zwitch('type', {\n    handlers: {root, element, text, comment, doctype, raw: handleRaw},\n    unknown\n  })\n\n  /** @type {State} */\n  const state = {\n    parser: document\n      ? new Parser(parseOptions)\n      : Parser.getFragmentParser(undefined, parseOptions),\n    handle(node) {\n      one(node, state)\n    },\n    stitches: false,\n    options: options || {}\n  }\n\n  one(tree, state)\n  resetTokenizer(state, pointStart())\n\n  const p5 = document ? state.parser.document : state.parser.getFragment()\n  const result = fromParse5(p5, {\n    // To do: support `space`?\n    file: state.options.file\n  })\n\n  if (state.stitches) {\n    visit(result, 'comment', function (node, index, parent) {\n      const stitch = /** @type {Stitch} */ (/** @type {unknown} */ (node))\n      if (stitch.value.stitch && parent && index !== undefined) {\n        /** @type {Array<RootContent>} */\n        const siblings = parent.children\n        // @ts-expect-error: assume the stitch is allowed.\n        siblings[index] = stitch.value.stitch\n        return index\n      }\n    })\n  }\n\n  // Unpack if possible and when not given a `root`.\n  if (\n    result.type === 'root' &&\n    result.children.length === 1 &&\n    result.children[0].type === tree.type\n  ) {\n    return result.children[0]\n  }\n\n  return result\n}\n\n/**\n * Transform all nodes\n *\n * @param {Array<RootContent>} nodes\n *   hast content.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {undefined}\n *   Nothing.\n */\nfunction all(nodes, state) {\n  let index = -1\n\n  /* istanbul ignore else - invalid nodes, see rehypejs/rehype-raw#7. */\n  if (nodes) {\n    while (++index < nodes.length) {\n      state.handle(nodes[index])\n    }\n  }\n}\n\n/**\n * Transform a root.\n *\n * @param {Root} node\n *   hast root node.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {undefined}\n *   Nothing.\n */\nfunction root(node, state) {\n  all(node.children, state)\n}\n\n/**\n * Transform an element.\n *\n * @param {Element} node\n *   hast element node.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {undefined}\n *   Nothing.\n */\nfunction element(node, state) {\n  startTag(node, state)\n\n  all(node.children, state)\n\n  endTag(node, state)\n}\n\n/**\n * Transform a text.\n *\n * @param {Text} node\n *   hast text node.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {undefined}\n *   Nothing.\n */\nfunction text(node, state) {\n  // Allow `DATA` through `PLAINTEXT`,\n  // but when hanging in a tag for example,\n  // switch back to `DATA`.\n  // Note: `State` is not exposed by `parse5`, so these numbers are fragile.\n  // See: <https://github.com/inikulin/parse5/blob/46cba43/packages/parse5/lib/tokenizer/index.ts#L58>\n  if (state.parser.tokenizer.state > 4) {\n    state.parser.tokenizer.state = 0\n  }\n\n  /** @type {Token.CharacterToken} */\n  const token = {\n    type: Token.TokenType.CHARACTER,\n    chars: node.value,\n    location: createParse5Location(node)\n  }\n\n  resetTokenizer(state, pointStart(node))\n  // @ts-expect-error: private.\n  state.parser.currentToken = token\n  // @ts-expect-error: private.\n  state.parser._processToken(state.parser.currentToken)\n}\n\n/**\n * Transform a doctype.\n *\n * @param {Doctype} node\n *   hast doctype node.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {undefined}\n *   Nothing.\n */\nfunction doctype(node, state) {\n  /** @type {Token.DoctypeToken} */\n  const token = {\n    type: Token.TokenType.DOCTYPE,\n    name: 'html',\n    forceQuirks: false,\n    publicId: '',\n    systemId: '',\n    location: createParse5Location(node)\n  }\n\n  resetTokenizer(state, pointStart(node))\n  // @ts-expect-error: private.\n  state.parser.currentToken = token\n  // @ts-expect-error: private.\n  state.parser._processToken(state.parser.currentToken)\n}\n\n/**\n * Transform a stitch.\n *\n * @param {Nodes} node\n *   unknown node.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {undefined}\n *   Nothing.\n */\nfunction stitch(node, state) {\n  // Mark that there are stitches, so we need to walk the tree and revert them.\n  state.stitches = true\n\n  /** @type {Nodes} */\n  const clone = cloneWithoutChildren(node)\n\n  // Recurse, because to somewhat handle `[<x>]</x>` (where `[]` denotes the\n  // passed through node).\n  if ('children' in node && 'children' in clone) {\n    // Root in root out.\n    const fakeRoot = /** @type {Root} */ (\n      raw({type: 'root', children: node.children}, state.options)\n    )\n    clone.children = fakeRoot.children\n  }\n\n  // Hack: `value` is supposed to be a string, but as none of the tools\n  // (`parse5` or `hast-util-from-parse5`) looks at it, we can pass nodes\n  // through.\n  comment({type: 'comment', value: {stitch: clone}}, state)\n}\n\n/**\n * Transform a comment (or stitch).\n *\n * @param {Comment | Stitch} node\n *   hast comment node.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {undefined}\n *   Nothing.\n */\nfunction comment(node, state) {\n  /** @type {string} */\n  // @ts-expect-error: we pass stitches through.\n  const data = node.value\n\n  /** @type {Token.CommentToken} */\n  const token = {\n    type: Token.TokenType.COMMENT,\n    data,\n    location: createParse5Location(node)\n  }\n  resetTokenizer(state, pointStart(node))\n  // @ts-expect-error: private.\n  state.parser.currentToken = token\n  // @ts-expect-error: private.\n  state.parser._processToken(state.parser.currentToken)\n}\n\n/**\n * Transform a raw node.\n *\n * @param {Raw} node\n *   hast raw node.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {undefined}\n *   Nothing.\n */\nfunction handleRaw(node, state) {\n  // Reset preprocessor:\n  // See: <https://github.com/inikulin/parse5/blob/6f7ca60/packages/parse5/lib/tokenizer/preprocessor.ts#L18-L31>.\n  state.parser.tokenizer.preprocessor.html = ''\n  state.parser.tokenizer.preprocessor.pos = -1\n  // @ts-expect-error: private.\n  // type-coverage:ignore-next-line\n  state.parser.tokenizer.preprocessor.lastGapPos = -2\n  // @ts-expect-error: private.\n  // type-coverage:ignore-next-line\n  state.parser.tokenizer.preprocessor.gapStack = []\n  // @ts-expect-error: private.\n  // type-coverage:ignore-next-line\n  state.parser.tokenizer.preprocessor.skipNextNewLine = false\n  state.parser.tokenizer.preprocessor.lastChunkWritten = false\n  state.parser.tokenizer.preprocessor.endOfChunkHit = false\n  // @ts-expect-error: private.\n  // type-coverage:ignore-next-line\n  state.parser.tokenizer.preprocessor.isEol = false\n\n  // Now pass `node.value`.\n  setPoint(state, pointStart(node))\n\n  state.parser.tokenizer.write(\n    state.options.tagfilter\n      ? node.value.replace(gfmTagfilterExpression, '&lt;$1$2')\n      : node.value,\n    false\n  )\n  // @ts-expect-error: private.\n  state.parser.tokenizer._runParsingLoop()\n\n  // Character references hang, so if we ended there, we need to flush\n  // those too.\n  // We reset the preprocessor as if the document ends here.\n  // Then one single call to the relevant state does the trick, parse5\n  // consumes the whole token.\n\n  // Note: `State` is not exposed by `parse5`, so these numbers are fragile.\n  // See: <https://github.com/inikulin/parse5/blob/46cba43/packages/parse5/lib/tokenizer/index.ts#L58>\n  // Note: a change to `parse5`, which breaks this, was merged but not released.\n  // Investigate when it is.\n  // To do: remove next major.\n  /* c8 ignore next 12 -- removed in <https://github.com/inikulin/parse5/pull/897> */\n  if (\n    state.parser.tokenizer.state === 72 /* NAMED_CHARACTER_REFERENCE */ ||\n    // @ts-expect-error: removed.\n    state.parser.tokenizer.state === 78 /* NUMERIC_CHARACTER_REFERENCE_END */\n  ) {\n    state.parser.tokenizer.preprocessor.lastChunkWritten = true\n    /** @type {number} */\n    // @ts-expect-error: private.\n    const cp = state.parser.tokenizer._consume()\n    // @ts-expect-error: private.\n    state.parser.tokenizer._callState(cp)\n  }\n}\n\n/**\n * Crash on an unknown node.\n *\n * @param {unknown} node_\n *   unknown node.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {undefined}\n *   Never.\n */\nfunction unknown(node_, state) {\n  const node = /** @type {Nodes} */ (node_)\n\n  if (\n    state.options.passThrough &&\n    state.options.passThrough.includes(node.type)\n  ) {\n    stitch(node, state)\n  } else {\n    let extra = ''\n\n    if (knownMdxNames.has(node.type)) {\n      extra =\n        \". It looks like you are using MDX nodes with `hast-util-raw` (or `rehype-raw`). If you use this because you are using remark or rehype plugins that inject `'html'` nodes, then please raise an issue with that plugin, as its a bad and slow idea. If you use this because you are using markdown syntax, then you have to configure this utility (or plugin) to pass through these nodes (see `passThrough` in docs), but you can also migrate to use the MDX syntax\"\n    }\n\n    throw new Error('Cannot compile `' + node.type + '` node' + extra)\n  }\n}\n\n/**\n * Reset the tokenizer of a parser.\n *\n * @param {State} state\n *   Info passed around about the current state.\n * @param {Point | undefined} point\n *   Point.\n * @returns {undefined}\n *   Nothing.\n */\nfunction resetTokenizer(state, point) {\n  setPoint(state, point)\n\n  // Process final characters if they’re still there after hibernating.\n  /** @type {Token.CharacterToken} */\n  // @ts-expect-error: private.\n  const token = state.parser.tokenizer.currentCharacterToken\n\n  if (token && token.location) {\n    token.location.endLine = state.parser.tokenizer.preprocessor.line\n    token.location.endCol = state.parser.tokenizer.preprocessor.col + 1\n    token.location.endOffset = state.parser.tokenizer.preprocessor.offset + 1\n    // @ts-expect-error: private.\n    state.parser.currentToken = token\n    // @ts-expect-error: private.\n    state.parser._processToken(state.parser.currentToken)\n  }\n\n  // Reset tokenizer:\n  // See: <https://github.com/inikulin/parse5/blob/6f7ca60/packages/parse5/lib/tokenizer/index.ts#L187-L223>.\n  // Especially putting it back in the `data` state is useful: some elements,\n  // like textareas and iframes, change the state.\n  // See GH-7.\n  // But also if broken HTML is in `raw`, and then a correct element is given.\n  // See GH-11.\n  // @ts-expect-error: private.\n  state.parser.tokenizer.paused = false\n  // @ts-expect-error: private.\n  state.parser.tokenizer.inLoop = false\n\n  // Note: don’t reset `state`, `inForeignNode`, or `lastStartTagName`, we\n  // manually update those when needed.\n  state.parser.tokenizer.active = false\n  // @ts-expect-error: private.\n  state.parser.tokenizer.returnState = TokenizerMode.DATA\n  // @ts-expect-error: private.\n  state.parser.tokenizer.charRefCode = -1\n  // @ts-expect-error: private.\n  state.parser.tokenizer.consumedAfterSnapshot = -1\n  // @ts-expect-error: private.\n  state.parser.tokenizer.currentLocation = null\n  // @ts-expect-error: private.\n  state.parser.tokenizer.currentCharacterToken = null\n  // @ts-expect-error: private.\n  state.parser.tokenizer.currentToken = null\n  // @ts-expect-error: private.\n  state.parser.tokenizer.currentAttr = {name: '', value: ''}\n}\n\n/**\n * Set current location.\n *\n * @param {State} state\n *   Info passed around about the current state.\n * @param {Point | undefined} point\n *   Point.\n * @returns {undefined}\n *   Nothing.\n */\nfunction setPoint(state, point) {\n  if (point && point.offset !== undefined) {\n    /** @type {Token.Location} */\n    const location = {\n      startLine: point.line,\n      startCol: point.column,\n      startOffset: point.offset,\n      endLine: -1,\n      endCol: -1,\n      endOffset: -1\n    }\n\n    // @ts-expect-error: private.\n    // type-coverage:ignore-next-line\n    state.parser.tokenizer.preprocessor.lineStartPos = -point.column + 1 // Looks weird, but ensures we get correct positional info.\n    state.parser.tokenizer.preprocessor.droppedBufferSize = point.offset\n    state.parser.tokenizer.preprocessor.line = point.line\n    // @ts-expect-error: private.\n    state.parser.tokenizer.currentLocation = location\n  }\n}\n\n/**\n * Emit a start tag.\n *\n * @param {Element} node\n *   Element.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {undefined}\n *   Nothing.\n */\nfunction startTag(node, state) {\n  const tagName = node.tagName.toLowerCase()\n\n  // Ignore tags if we’re in plain text.\n  if (state.parser.tokenizer.state === TokenizerMode.PLAINTEXT) return\n\n  resetTokenizer(state, pointStart(node))\n\n  const current = state.parser.openElements.current\n  let ns = 'namespaceURI' in current ? current.namespaceURI : webNamespaces.html\n\n  if (ns === webNamespaces.html && tagName === 'svg') {\n    ns = webNamespaces.svg\n  }\n\n  const result = toParse5(\n    // Shallow clone to not delve into `children`: we only need the attributes.\n    {...node, children: []},\n    {space: ns === webNamespaces.svg ? 'svg' : 'html'}\n  )\n\n  /** @type {Token.TagToken} */\n  const tag = {\n    type: Token.TokenType.START_TAG,\n    tagName,\n    tagID: html.getTagID(tagName),\n    // We always send start and end tags.\n    selfClosing: false,\n    ackSelfClosing: false,\n    // Always element.\n    /* c8 ignore next */\n    attrs: 'attrs' in result ? result.attrs : [],\n    location: createParse5Location(node)\n  }\n\n  // The HTML parsing algorithm works by doing half of the state management in\n  // the tokenizer and half in the parser.\n  // We can’t use the tokenizer here, as we don’t have strings.\n  // So we act *as if* the tokenizer emits tokens:\n\n  // @ts-expect-error: private.\n  state.parser.currentToken = tag\n  // @ts-expect-error: private.\n  state.parser._processToken(state.parser.currentToken)\n\n  // …but then we still need a bunch of work that the tokenizer would normally\n  // do, such as:\n\n  // Set a tag name, similar to how the tokenizer would do it.\n  state.parser.tokenizer.lastStartTagName = tagName\n\n  // `inForeignNode` is correctly set by the parser.\n}\n\n/**\n * Emit an end tag.\n *\n * @param {Element} node\n *   Element.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {undefined}\n *   Nothing.\n */\nfunction endTag(node, state) {\n  const tagName = node.tagName.toLowerCase()\n  // Do not emit closing tags for HTML void elements.\n  if (\n    !state.parser.tokenizer.inForeignNode &&\n    htmlVoidElements.includes(tagName)\n  ) {\n    return\n  }\n\n  // Ignore tags if we’re in plain text.\n  if (state.parser.tokenizer.state === TokenizerMode.PLAINTEXT) return\n\n  resetTokenizer(state, pointEnd(node))\n\n  /** @type {Token.TagToken} */\n  const tag = {\n    type: Token.TokenType.END_TAG,\n    tagName,\n    tagID: html.getTagID(tagName),\n    selfClosing: false,\n    ackSelfClosing: false,\n    attrs: [],\n    location: createParse5Location(node)\n  }\n\n  // The HTML parsing algorithm works by doing half of the state management in\n  // the tokenizer and half in the parser.\n  // We can’t use the tokenizer here, as we don’t have strings.\n  // So we act *as if* the tokenizer emits tokens:\n\n  // @ts-expect-error: private.\n  state.parser.currentToken = tag\n  // @ts-expect-error: private.\n  state.parser._processToken(state.parser.currentToken)\n\n  // …but then we still need a bunch of work that the tokenizer would normally\n  // do, such as:\n\n  // Switch back to the data state after alternative states that don’t accept\n  // tags:\n  if (\n    // Current element is closed.\n    tagName === state.parser.tokenizer.lastStartTagName &&\n    // `<textarea>` and `<title>`\n    (state.parser.tokenizer.state === TokenizerMode.RCDATA ||\n      // `<iframe>`, `<noembed>`, `<noframes>`, `<style>`, `<xmp>`\n      state.parser.tokenizer.state === TokenizerMode.RAWTEXT ||\n      // `<script>`\n      state.parser.tokenizer.state === TokenizerMode.SCRIPT_DATA)\n    // Note: `<plaintext>` not needed, as it’s the last element.\n  ) {\n    state.parser.tokenizer.state = TokenizerMode.DATA\n  }\n}\n\n/**\n * Check if `node` represents a whole document or a fragment.\n *\n * @param {Nodes} node\n *   hast node.\n * @returns {boolean}\n *   Whether this represents a whole document or a fragment.\n */\nfunction documentMode(node) {\n  const head = node.type === 'root' ? node.children[0] : node\n  return Boolean(\n    head &&\n      (head.type === 'doctype' ||\n        (head.type === 'element' && head.tagName.toLowerCase() === 'html'))\n  )\n}\n\n/**\n * Get a `parse5` location from a node.\n *\n * @param {Nodes | Stitch} node\n *   hast node.\n * @returns {Token.Location}\n *   `parse5` location.\n */\nfunction createParse5Location(node) {\n  const start = pointStart(node) || {\n    line: undefined,\n    column: undefined,\n    offset: undefined\n  }\n  const end = pointEnd(node) || {\n    line: undefined,\n    column: undefined,\n    offset: undefined\n  }\n\n  /** @type {Record<keyof Token.Location, number | undefined>} */\n  const location = {\n    startLine: start.line,\n    startCol: start.column,\n    startOffset: start.offset,\n    endLine: end.line,\n    endCol: end.column,\n    endOffset: end.offset\n  }\n\n  // @ts-expect-error: unist point values can be `undefined` in hast, which\n  // `parse5` types don’t want.\n  return location\n}\n\n/**\n * @template {Nodes} NodeType\n *   Node type.\n * @param {NodeType} node\n *   Node to clone.\n * @returns {NodeType}\n *   Cloned node, without children.\n */\nfunction cloneWithoutChildren(node) {\n  return 'children' in node\n    ? structuredClone({...node, children: []})\n    : structuredClone(node)\n}\n","/**\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast-util-raw').Options} RawOptions\n * @typedef {import('vfile').VFile} VFile\n */\n\n/**\n * @typedef {Omit<RawOptions, 'file'>} Options\n *   Configuration.\n */\n\nimport {raw} from 'hast-util-raw'\n\n/**\n * Parse the tree (and raw nodes) again, keeping positional info okay.\n *\n * @param {Options | null | undefined}  [options]\n *   Configuration (optional).\n * @returns\n *   Transform.\n */\nexport default function rehypeRaw(options) {\n  /**\n   * @param {Root} tree\n   *   Tree.\n   * @param {VFile} file\n   *   File.\n   * @returns {Root}\n   *   New tree.\n   */\n  return function (tree, file) {\n    // Assume root in -> root out.\n    const result = /** @type {Root} */ (raw(tree, {...options, file}))\n    return result\n  }\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Parents} Parents\n */\n\n/**\n * @template Fn\n * @template Fallback\n * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate\n */\n\n/**\n * @callback Check\n *   Check that an arbitrary value is an element.\n * @param {unknown} this\n *   Context object (`this`) to call `test` with\n * @param {unknown} [element]\n *   Anything (typically a node).\n * @param {number | null | undefined} [index]\n *   Position of `element` in its parent.\n * @param {Parents | null | undefined} [parent]\n *   Parent of `element`.\n * @returns {boolean}\n *   Whether this is an element and passes a test.\n *\n * @typedef {Array<TestFunction | string> | TestFunction | string | null | undefined} Test\n *   Check for an arbitrary element.\n *\n *   * when `string`, checks that the element has that tag name\n *   * when `function`, see `TestFunction`\n *   * when `Array`, checks if one of the subtests pass\n *\n * @callback TestFunction\n *   Check if an element passes a test.\n * @param {unknown} this\n *   The given context.\n * @param {Element} element\n *   An element.\n * @param {number | undefined} [index]\n *   Position of `element` in its parent.\n * @param {Parents | undefined} [parent]\n *   Parent of `element`.\n * @returns {boolean | undefined | void}\n *   Whether this element passes the test.\n *\n *   Note: `void` is included until TS sees no return as `undefined`.\n */\n\n/**\n * Check if `element` is an `Element` and whether it passes the given test.\n *\n * @param element\n *   Thing to check, typically `element`.\n * @param test\n *   Check for a specific element.\n * @param index\n *   Position of `element` in its parent.\n * @param parent\n *   Parent of `element`.\n * @param context\n *   Context object (`this`) to call `test` with.\n * @returns\n *   Whether `element` is an `Element` and passes a test.\n * @throws\n *   When an incorrect `test`, `index`, or `parent` is given; there is no error\n *   thrown when `element` is not a node or not an element.\n */\nexport const isElement =\n  // Note: overloads in JSDoc can’t yet use different `@template`s.\n  /**\n   * @type {(\n   *   (<Condition extends TestFunction>(element: unknown, test: Condition, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => element is Element & Predicate<Condition, Element>) &\n   *   (<Condition extends string>(element: unknown, test: Condition, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => element is Element & {tagName: Condition}) &\n   *   ((element?: null | undefined) => false) &\n   *   ((element: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => element is Element) &\n   *   ((element: unknown, test?: Test, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => boolean)\n   * )}\n   */\n  (\n    /**\n     * @param {unknown} [element]\n     * @param {Test | undefined} [test]\n     * @param {number | null | undefined} [index]\n     * @param {Parents | null | undefined} [parent]\n     * @param {unknown} [context]\n     * @returns {boolean}\n     */\n    // eslint-disable-next-line max-params\n    function (element, test, index, parent, context) {\n      const check = convertElement(test)\n\n      if (\n        index !== null &&\n        index !== undefined &&\n        (typeof index !== 'number' ||\n          index < 0 ||\n          index === Number.POSITIVE_INFINITY)\n      ) {\n        throw new Error('Expected positive finite `index`')\n      }\n\n      if (\n        parent !== null &&\n        parent !== undefined &&\n        (!parent.type || !parent.children)\n      ) {\n        throw new Error('Expected valid `parent`')\n      }\n\n      if (\n        (index === null || index === undefined) !==\n        (parent === null || parent === undefined)\n      ) {\n        throw new Error('Expected both `index` and `parent`')\n      }\n\n      return looksLikeAnElement(element)\n        ? check.call(context, element, index, parent)\n        : false\n    }\n  )\n\n/**\n * Generate a check from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * an `element`, `index`, and `parent`.\n *\n * @param test\n *   A test for a specific element.\n * @returns\n *   A check.\n */\nexport const convertElement =\n  // Note: overloads in JSDoc can’t yet use different `@template`s.\n  /**\n   * @type {(\n   *   (<Condition extends TestFunction>(test: Condition) => (element: unknown, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => element is Element & Predicate<Condition, Element>) &\n   *   (<Condition extends string>(test: Condition) => (element: unknown, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => element is Element & {tagName: Condition}) &\n   *   ((test?: null | undefined) => (element?: unknown, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => element is Element) &\n   *   ((test?: Test) => Check)\n   * )}\n   */\n  (\n    /**\n     * @param {Test | null | undefined} [test]\n     * @returns {Check}\n     */\n    function (test) {\n      if (test === null || test === undefined) {\n        return element\n      }\n\n      if (typeof test === 'string') {\n        return tagNameFactory(test)\n      }\n\n      // Assume array.\n      if (typeof test === 'object') {\n        return anyFactory(test)\n      }\n\n      if (typeof test === 'function') {\n        return castFactory(test)\n      }\n\n      throw new Error('Expected function, string, or array as `test`')\n    }\n  )\n\n/**\n * Handle multiple tests.\n *\n * @param {Array<TestFunction | string>} tests\n * @returns {Check}\n */\nfunction anyFactory(tests) {\n  /** @type {Array<Check>} */\n  const checks = []\n  let index = -1\n\n  while (++index < tests.length) {\n    checks[index] = convertElement(tests[index])\n  }\n\n  return castFactory(any)\n\n  /**\n   * @this {unknown}\n   * @type {TestFunction}\n   */\n  function any(...parameters) {\n    let index = -1\n\n    while (++index < checks.length) {\n      if (checks[index].apply(this, parameters)) return true\n    }\n\n    return false\n  }\n}\n\n/**\n * Turn a string into a test for an element with a certain type.\n *\n * @param {string} check\n * @returns {Check}\n */\nfunction tagNameFactory(check) {\n  return castFactory(tagName)\n\n  /**\n   * @param {Element} element\n   * @returns {boolean}\n   */\n  function tagName(element) {\n    return element.tagName === check\n  }\n}\n\n/**\n * Turn a custom test into a test for an element that passes that test.\n *\n * @param {TestFunction} testFunction\n * @returns {Check}\n */\nfunction castFactory(testFunction) {\n  return check\n\n  /**\n   * @this {unknown}\n   * @type {Check}\n   */\n  function check(value, index, parent) {\n    return Boolean(\n      looksLikeAnElement(value) &&\n        testFunction.call(\n          this,\n          value,\n          typeof index === 'number' ? index : undefined,\n          parent || undefined\n        )\n    )\n  }\n}\n\n/**\n * Make sure something is an element.\n *\n * @param {unknown} element\n * @returns {element is Element}\n */\nfunction element(element) {\n  return Boolean(\n    element &&\n      typeof element === 'object' &&\n      'type' in element &&\n      element.type === 'element' &&\n      'tagName' in element &&\n      typeof element.tagName === 'string'\n  )\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Element}\n */\nfunction looksLikeAnElement(value) {\n  return (\n    value !== null &&\n    typeof value === 'object' &&\n    'type' in value &&\n    'tagName' in value\n  )\n}\n","// Scheme: https://tools.ietf.org/html/rfc3986#section-3.1\n// Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\nconst ABSOLUTE_URL_REGEX = /^[a-zA-Z][a-zA-Z\\d+\\-.]*?:/;\n\n// Windows paths like `c:\\`\nconst WINDOWS_PATH_REGEX = /^[a-zA-Z]:\\\\/;\n\nexport default function isAbsoluteUrl(url) {\n\tif (typeof url !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof url}\\``);\n\t}\n\n\tif (WINDOWS_PATH_REGEX.test(url)) {\n\t\treturn false;\n\t}\n\n\treturn ABSOLUTE_URL_REGEX.test(url);\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast-util-is-element').Test} Test\n */\n\n/**\n * @callback CreateContent\n *   Create a target for the element.\n * @param {Element} element\n *   Element to check.\n * @returns {Array<ElementContent> | ElementContent | null | undefined}\n *   Content to add.\n *\n * @callback CreateProperties\n *   Create properties for an element.\n * @param {Element} element\n *   Element to check.\n * @returns {Properties | null | undefined}\n *   Properties to add.\n *\n * @callback CreateRel\n *   Create a `rel` for the element.\n * @param {Element} element\n *   Element to check.\n * @returns {Array<string> | string | null | undefined}\n *   `rel` to use.\n *\n * @callback CreateTarget\n *   Create a `target` for the element.\n * @param {Element} element\n *   Element to check.\n * @returns {Target | null | undefined}\n *   `target` to use.\n *\n * @typedef Options\n *   Configuration.\n * @property {Array<ElementContent> | CreateContent | ElementContent | null | undefined} [content]\n *   Content to insert at the end of external links (optional); will be\n *   inserted in a `<span>` element; useful for improving accessibility by\n *   giving users advanced warning when opening a new window.\n * @property {CreateProperties | Properties | null | undefined} [contentProperties]\n *   Properties to add to the `span` wrapping `content` (optional).\n * @property {CreateProperties | Properties | null | undefined} [properties]\n *   Properties to add to the link itself (optional).\n * @property {Array<string> | null | undefined} [protocols=['http', 'https']]\n *   Protocols to check, such as `mailto` or `tel` (default: `['http',\n *   'https']`).\n * @property {Array<string> | CreateRel | string | null | undefined} [rel=['nofollow']]\n *   Link types to hint about the referenced documents (default:\n *   `['nofollow']`); pass an empty array (`[]`) to not set `rel`s on links;\n *   when using a `target`, add `noopener` and `noreferrer` to avoid\n *   exploitation of the `window.opener` API.\n * @property {CreateTarget | Target | null | undefined} [target]\n *   How to display referenced documents; the default (nothing) is to not set\n *   `target`s on links.\n * @property {Test | null | undefined} [test]\n *   Extra test to define which external link elements are modified (optional);\n *   any test that can be given to `hast-util-is-element` is supported.\n *\n * @typedef {'_blank' | '_parent' | '_self' | '_top'} Target\n *   Target.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {convertElement} from 'hast-util-is-element'\nimport isAbsoluteUrl from 'is-absolute-url'\nimport {parse} from 'space-separated-tokens'\nimport {visit} from 'unist-util-visit'\n\nconst defaultProtocols = ['http', 'https']\nconst defaultRel = ['nofollow']\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Automatically add `rel` (and `target`?) to external links.\n *\n * ###### Notes\n *\n * You should [likely not configure `target`][css-tricks].\n *\n * You should at least set `rel` to `['nofollow']`.\n * When using a `target`, add `noopener` and `noreferrer` to avoid exploitation\n * of the `window.opener` API.\n *\n * When using a `target`, you should set `content` to adhere to accessibility\n * guidelines by giving users advanced warning when opening a new window.\n *\n * [css-tricks]: https://css-tricks.com/use-target_blank/\n *\n * @param {Readonly<Options> | null | undefined} [options]\n *   Configuration (optional).\n * @returns\n *   Transform.\n */\nexport default function rehypeExternalLinks(options) {\n  const settings = options || emptyOptions\n  const protocols = settings.protocols || defaultProtocols\n  const is = convertElement(settings.test)\n\n  /**\n   * Transform.\n   *\n   * @param {Root} tree\n   *   Tree.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  return function (tree) {\n    visit(tree, 'element', function (node, index, parent) {\n      if (\n        node.tagName === 'a' &&\n        typeof node.properties.href === 'string' &&\n        is(node, index, parent)\n      ) {\n        const url = node.properties.href\n\n        if (\n          isAbsoluteUrl(url)\n            ? protocols.includes(url.slice(0, url.indexOf(':')))\n            : url.startsWith('//')\n        ) {\n          const contentRaw = createIfNeeded(settings.content, node)\n          const content =\n            contentRaw && !Array.isArray(contentRaw) ? [contentRaw] : contentRaw\n          const relRaw = createIfNeeded(settings.rel, node) || defaultRel\n          const rel = typeof relRaw === 'string' ? parse(relRaw) : relRaw\n          const target = createIfNeeded(settings.target, node)\n\n          const properties = createIfNeeded(settings.properties, node)\n\n          if (properties) {\n            Object.assign(node.properties, structuredClone(properties))\n          }\n\n          if (rel.length > 0) {\n            node.properties.rel = [...rel]\n          }\n\n          if (target) {\n            node.properties.target = target\n          }\n\n          if (content) {\n            const properties =\n              createIfNeeded(settings.contentProperties, node) || {}\n\n            node.children.push({\n              type: 'element',\n              tagName: 'span',\n              properties: structuredClone(properties),\n              children: structuredClone(content)\n            })\n          }\n        }\n      }\n    })\n  }\n}\n\n/**\n * Call a function to get a return value or use the value.\n *\n * @template T\n *   Type of value.\n * @param {T} value\n *   Value.\n * @param {Element} element\n *   Element.\n * @returns {T extends Function ? ReturnType<T> : T}\n *   Result.\n */\nfunction createIfNeeded(value, element) {\n  return typeof value === 'function' ? value(element) : value\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n */\n\n/**\n * @typedef {Record<string, unknown>} Props\n * @typedef {null | undefined | string | Props | TestFunctionAnything | Array<string | Props | TestFunctionAnything>} Test\n *   Check for an arbitrary node, unaware of TypeScript inferral.\n *\n * @callback TestFunctionAnything\n *   Check if a node passes a test, unaware of TypeScript inferral.\n * @param {unknown} this\n *   The given context.\n * @param {Node} node\n *   A node.\n * @param {number | null | undefined} [index]\n *   The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n *   The node’s parent.\n * @returns {boolean | void}\n *   Whether this node passes the test.\n */\n\n/**\n * @template {Node} Kind\n *   Node type.\n * @typedef {Kind['type'] | Partial<Kind> | TestFunctionPredicate<Kind> | Array<Kind['type'] | Partial<Kind> | TestFunctionPredicate<Kind>>} PredicateTest\n *   Check for a node that can be inferred by TypeScript.\n */\n\n/**\n * Check if a node passes a certain test.\n *\n * @template {Node} Kind\n *   Node type.\n * @callback TestFunctionPredicate\n *   Complex test function for a node that can be inferred by TypeScript.\n * @param {Node} node\n *   A node.\n * @param {number | null | undefined} [index]\n *   The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n *   The node’s parent.\n * @returns {node is Kind}\n *   Whether this node passes the test.\n */\n\n/**\n * @callback AssertAnything\n *   Check that an arbitrary value is a node, unaware of TypeScript inferral.\n * @param {unknown} [node]\n *   Anything (typically a node).\n * @param {number | null | undefined} [index]\n *   The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n *   The node’s parent.\n * @returns {boolean}\n *   Whether this is a node and passes a test.\n */\n\n/**\n * Check if a node is a node and passes a certain node test.\n *\n * @template {Node} Kind\n *   Node type.\n * @callback AssertPredicate\n *   Check that an arbitrary value is a specific node, aware of TypeScript.\n * @param {unknown} [node]\n *   Anything (typically a node).\n * @param {number | null | undefined} [index]\n *   The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n *   The node’s parent.\n * @returns {node is Kind}\n *   Whether this is a node and passes a test.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param node\n *   Thing to check, typically `Node`.\n * @param test\n *   A check for a specific node.\n * @param index\n *   The node’s position in its parent.\n * @param parent\n *   The node’s parent.\n * @returns\n *   Whether `node` is a node and passes a test.\n */\nexport const is =\n  /**\n   * @type {(\n   *   (() => false) &\n   *   (<Kind extends Node = Node>(node: unknown, test: PredicateTest<Kind>, index: number, parent: Parent, context?: unknown) => node is Kind) &\n   *   (<Kind extends Node = Node>(node: unknown, test: PredicateTest<Kind>, index?: null | undefined, parent?: null | undefined, context?: unknown) => node is Kind) &\n   *   ((node: unknown, test: Test, index: number, parent: Parent, context?: unknown) => boolean) &\n   *   ((node: unknown, test?: Test, index?: null | undefined, parent?: null | undefined, context?: unknown) => boolean)\n   * )}\n   */\n  (\n    /**\n     * @param {unknown} [node]\n     * @param {Test} [test]\n     * @param {number | null | undefined} [index]\n     * @param {Parent | null | undefined} [parent]\n     * @param {unknown} [context]\n     * @returns {boolean}\n     */\n    // eslint-disable-next-line max-params\n    function is(node, test, index, parent, context) {\n      const check = convert(test)\n\n      if (\n        index !== undefined &&\n        index !== null &&\n        (typeof index !== 'number' ||\n          index < 0 ||\n          index === Number.POSITIVE_INFINITY)\n      ) {\n        throw new Error('Expected positive finite index')\n      }\n\n      if (\n        parent !== undefined &&\n        parent !== null &&\n        (!is(parent) || !parent.children)\n      ) {\n        throw new Error('Expected parent node')\n      }\n\n      if (\n        (parent === undefined || parent === null) !==\n        (index === undefined || index === null)\n      ) {\n        throw new Error('Expected both parent and index')\n      }\n\n      // @ts-expect-error Looks like a node.\n      return node && node.type && typeof node.type === 'string'\n        ? Boolean(check.call(context, node, index, parent))\n        : false\n    }\n  )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param test\n *   *   when nullish, checks if `node` is a `Node`.\n *   *   when `string`, works like passing `(node) => node.type === test`.\n *   *   when `function` checks if function passed the node is true.\n *   *   when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n *   *   when `array`, checks if any one of the subtests pass.\n * @returns\n *   An assertion.\n */\nexport const convert =\n  /**\n   * @type {(\n   *   (<Kind extends Node>(test: PredicateTest<Kind>) => AssertPredicate<Kind>) &\n   *   ((test?: Test) => AssertAnything)\n   * )}\n   */\n  (\n    /**\n     * @param {Test} [test]\n     * @returns {AssertAnything}\n     */\n    function (test) {\n      if (test === undefined || test === null) {\n        return ok\n      }\n\n      if (typeof test === 'string') {\n        return typeFactory(test)\n      }\n\n      if (typeof test === 'object') {\n        return Array.isArray(test) ? anyFactory(test) : propsFactory(test)\n      }\n\n      if (typeof test === 'function') {\n        return castFactory(test)\n      }\n\n      throw new Error('Expected function, string, or object as test')\n    }\n  )\n\n/**\n * @param {Array<string | Props | TestFunctionAnything>} tests\n * @returns {AssertAnything}\n */\nfunction anyFactory(tests) {\n  /** @type {Array<AssertAnything>} */\n  const checks = []\n  let index = -1\n\n  while (++index < tests.length) {\n    checks[index] = convert(tests[index])\n  }\n\n  return castFactory(any)\n\n  /**\n   * @this {unknown}\n   * @param {Array<unknown>} parameters\n   * @returns {boolean}\n   */\n  function any(...parameters) {\n    let index = -1\n\n    while (++index < checks.length) {\n      if (checks[index].call(this, ...parameters)) return true\n    }\n\n    return false\n  }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {AssertAnything}\n */\nfunction propsFactory(check) {\n  return castFactory(all)\n\n  /**\n   * @param {Node} node\n   * @returns {boolean}\n   */\n  function all(node) {\n    /** @type {string} */\n    let key\n\n    for (key in check) {\n      // @ts-expect-error: hush, it sure works as an index.\n      if (node[key] !== check[key]) return false\n    }\n\n    return true\n  }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {AssertAnything}\n */\nfunction typeFactory(check) {\n  return castFactory(type)\n\n  /**\n   * @param {Node} node\n   */\n  function type(node) {\n    return node && node.type === check\n  }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunctionAnything} check\n * @returns {AssertAnything}\n */\nfunction castFactory(check) {\n  return assertion\n\n  /**\n   * @this {unknown}\n   * @param {unknown} node\n   * @param {Array<unknown>} parameters\n   * @returns {boolean}\n   */\n  function assertion(node, ...parameters) {\n    return Boolean(\n      node &&\n        typeof node === 'object' &&\n        'type' in node &&\n        // @ts-expect-error: fine.\n        Boolean(check.call(this, node, ...parameters))\n    )\n  }\n}\n\nfunction ok() {\n  return true\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n */\n\nimport {convert} from 'unist-util-is'\n\n/**\n * Find the first node in `parent` after another `node` or after an index,\n * that passes `test`.\n\n * @param parent\n *   Parent node.\n * @param index\n *   Child of `parent` or it’s index.\n * @param test\n *   `unist-util-is`-compatible test.\n * @returns\n *   Child of `parent` or `null`.\n */\nexport const findAfter =\n  /**\n   * @type {(\n   *  (<T extends Node>(node: Parent, index: Node | number, test: import('unist-util-is').PredicateTest<T>) => T | null) &\n   *  ((node: Parent, index: Node | number, test?: Test) => Node | null)\n   * )}\n   */\n  (\n    /**\n     * @param {Parent} parent\n     * @param {Node | number} index\n     * @param {Test} [test]\n     * @returns {Node | null}\n     */\n    function (parent, index, test) {\n      const is = convert(test)\n\n      if (!parent || !parent.type || !parent.children) {\n        throw new Error('Expected parent node')\n      }\n\n      if (typeof index === 'number') {\n        if (index < 0 || index === Number.POSITIVE_INFINITY) {\n          throw new Error('Expected positive finite number as index')\n        }\n      } else {\n        index = parent.children.indexOf(index)\n\n        if (index < 0) {\n          throw new Error('Expected child node or index')\n        }\n      }\n\n      while (++index < parent.children.length) {\n        if (is(parent.children[index], index, parent)) {\n          return parent.children[index]\n        }\n      }\n\n      return null\n    }\n  )\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n */\n\n/**\n * @typedef {Record<string, unknown>} Props\n * @typedef {null | undefined | string | Props | TestFunctionAnything | Array<string | Props | TestFunctionAnything>} Test\n *   Check for an arbitrary node, unaware of TypeScript inferral.\n *\n * @callback TestFunctionAnything\n *   Check if a node passes a test, unaware of TypeScript inferral.\n * @param {unknown} this\n *   The given context.\n * @param {Node} node\n *   A node.\n * @param {number | null | undefined} [index]\n *   The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n *   The node’s parent.\n * @returns {boolean | void}\n *   Whether this node passes the test.\n */\n\n/**\n * @template {Node} Kind\n *   Node type.\n * @typedef {Kind['type'] | Partial<Kind> | TestFunctionPredicate<Kind> | Array<Kind['type'] | Partial<Kind> | TestFunctionPredicate<Kind>>} PredicateTest\n *   Check for a node that can be inferred by TypeScript.\n */\n\n/**\n * Check if a node passes a certain test.\n *\n * @template {Node} Kind\n *   Node type.\n * @callback TestFunctionPredicate\n *   Complex test function for a node that can be inferred by TypeScript.\n * @param {Node} node\n *   A node.\n * @param {number | null | undefined} [index]\n *   The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n *   The node’s parent.\n * @returns {node is Kind}\n *   Whether this node passes the test.\n */\n\n/**\n * @callback AssertAnything\n *   Check that an arbitrary value is a node, unaware of TypeScript inferral.\n * @param {unknown} [node]\n *   Anything (typically a node).\n * @param {number | null | undefined} [index]\n *   The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n *   The node’s parent.\n * @returns {boolean}\n *   Whether this is a node and passes a test.\n */\n\n/**\n * Check if a node is a node and passes a certain node test.\n *\n * @template {Node} Kind\n *   Node type.\n * @callback AssertPredicate\n *   Check that an arbitrary value is a specific node, aware of TypeScript.\n * @param {unknown} [node]\n *   Anything (typically a node).\n * @param {number | null | undefined} [index]\n *   The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n *   The node’s parent.\n * @returns {node is Kind}\n *   Whether this is a node and passes a test.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param node\n *   Thing to check, typically `Node`.\n * @param test\n *   A check for a specific node.\n * @param index\n *   The node’s position in its parent.\n * @param parent\n *   The node’s parent.\n * @returns\n *   Whether `node` is a node and passes a test.\n */\nexport const is =\n  /**\n   * @type {(\n   *   (() => false) &\n   *   (<Kind extends Node = Node>(node: unknown, test: PredicateTest<Kind>, index: number, parent: Parent, context?: unknown) => node is Kind) &\n   *   (<Kind extends Node = Node>(node: unknown, test: PredicateTest<Kind>, index?: null | undefined, parent?: null | undefined, context?: unknown) => node is Kind) &\n   *   ((node: unknown, test: Test, index: number, parent: Parent, context?: unknown) => boolean) &\n   *   ((node: unknown, test?: Test, index?: null | undefined, parent?: null | undefined, context?: unknown) => boolean)\n   * )}\n   */\n  (\n    /**\n     * @param {unknown} [node]\n     * @param {Test} [test]\n     * @param {number | null | undefined} [index]\n     * @param {Parent | null | undefined} [parent]\n     * @param {unknown} [context]\n     * @returns {boolean}\n     */\n    // eslint-disable-next-line max-params\n    function is(node, test, index, parent, context) {\n      const check = convert(test)\n\n      if (\n        index !== undefined &&\n        index !== null &&\n        (typeof index !== 'number' ||\n          index < 0 ||\n          index === Number.POSITIVE_INFINITY)\n      ) {\n        throw new Error('Expected positive finite index')\n      }\n\n      if (\n        parent !== undefined &&\n        parent !== null &&\n        (!is(parent) || !parent.children)\n      ) {\n        throw new Error('Expected parent node')\n      }\n\n      if (\n        (parent === undefined || parent === null) !==\n        (index === undefined || index === null)\n      ) {\n        throw new Error('Expected both parent and index')\n      }\n\n      // @ts-expect-error Looks like a node.\n      return node && node.type && typeof node.type === 'string'\n        ? Boolean(check.call(context, node, index, parent))\n        : false\n    }\n  )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param test\n *   *   when nullish, checks if `node` is a `Node`.\n *   *   when `string`, works like passing `(node) => node.type === test`.\n *   *   when `function` checks if function passed the node is true.\n *   *   when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n *   *   when `array`, checks if any one of the subtests pass.\n * @returns\n *   An assertion.\n */\nexport const convert =\n  /**\n   * @type {(\n   *   (<Kind extends Node>(test: PredicateTest<Kind>) => AssertPredicate<Kind>) &\n   *   ((test?: Test) => AssertAnything)\n   * )}\n   */\n  (\n    /**\n     * @param {Test} [test]\n     * @returns {AssertAnything}\n     */\n    function (test) {\n      if (test === undefined || test === null) {\n        return ok\n      }\n\n      if (typeof test === 'string') {\n        return typeFactory(test)\n      }\n\n      if (typeof test === 'object') {\n        return Array.isArray(test) ? anyFactory(test) : propsFactory(test)\n      }\n\n      if (typeof test === 'function') {\n        return castFactory(test)\n      }\n\n      throw new Error('Expected function, string, or object as test')\n    }\n  )\n\n/**\n * @param {Array<string | Props | TestFunctionAnything>} tests\n * @returns {AssertAnything}\n */\nfunction anyFactory(tests) {\n  /** @type {Array<AssertAnything>} */\n  const checks = []\n  let index = -1\n\n  while (++index < tests.length) {\n    checks[index] = convert(tests[index])\n  }\n\n  return castFactory(any)\n\n  /**\n   * @this {unknown}\n   * @param {Array<unknown>} parameters\n   * @returns {boolean}\n   */\n  function any(...parameters) {\n    let index = -1\n\n    while (++index < checks.length) {\n      if (checks[index].call(this, ...parameters)) return true\n    }\n\n    return false\n  }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {AssertAnything}\n */\nfunction propsFactory(check) {\n  return castFactory(all)\n\n  /**\n   * @param {Node} node\n   * @returns {boolean}\n   */\n  function all(node) {\n    /** @type {string} */\n    let key\n\n    for (key in check) {\n      // @ts-expect-error: hush, it sure works as an index.\n      if (node[key] !== check[key]) return false\n    }\n\n    return true\n  }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {AssertAnything}\n */\nfunction typeFactory(check) {\n  return castFactory(type)\n\n  /**\n   * @param {Node} node\n   */\n  function type(node) {\n    return node && node.type === check\n  }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunctionAnything} check\n * @returns {AssertAnything}\n */\nfunction castFactory(check) {\n  return assertion\n\n  /**\n   * @this {unknown}\n   * @param {unknown} node\n   * @param {Array<unknown>} parameters\n   * @returns {boolean}\n   */\n  function assertion(node, ...parameters) {\n    return Boolean(\n      node &&\n        typeof node === 'object' &&\n        'type' in node &&\n        // @ts-expect-error: fine.\n        Boolean(check.call(this, node, ...parameters))\n    )\n  }\n}\n\nfunction ok() {\n  return true\n}\n","/**\n * @param {string} d\n * @returns {string}\n */\nexport function color(d) {\n  return d\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n */\n\n/**\n * @typedef {boolean | 'skip'} Action\n *   Union of the action types.\n *\n * @typedef {number} Index\n *   Move to the sibling at `index` next (after node itself is completely\n *   traversed).\n *\n *   Useful if mutating the tree, such as removing the node the visitor is\n *   currently on, or any of its previous siblings.\n *   Results less than 0 or greater than or equal to `children.length` stop\n *   traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n *   List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n *   Any value that can be returned from a visitor.\n */\n\n/**\n * @template {Node} [Visited=Node]\n *   Visited node type.\n * @template {Parent} [Ancestor=Parent]\n *   Ancestor type.\n * @callback Visitor\n *   Handle a node (matching `test`, if given).\n *\n *   Visitors are free to transform `node`.\n *   They can also transform the parent of node (the last of `ancestors`).\n *\n *   Replacing `node` itself, if `SKIP` is not returned, still causes its\n *   descendants to be walked (which is a bug).\n *\n *   When adding or removing previous siblings of `node` (or next siblings, in\n *   case of reverse), the `Visitor` should return a new `Index` to specify the\n *   sibling to traverse after `node` is traversed.\n *   Adding or removing next siblings of `node` (or previous siblings, in case\n *   of reverse) is handled as expected without needing to return a new `Index`.\n *\n *   Removing the children property of an ancestor still results in them being\n *   traversed.\n * @param {Visited} node\n *   Found node.\n * @param {Array<Ancestor>} ancestors\n *   Ancestors of `node`.\n * @returns {VisitorResult}\n *   What to do next.\n *\n *   An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n *   An `Action` is treated as a tuple of `[Action]`.\n *\n *   Passing a tuple back only makes sense if the `Action` is `SKIP`.\n *   When the `Action` is `EXIT`, that action can be returned.\n *   When the `Action` is `CONTINUE`, `Index` can be returned.\n */\n\n/**\n * @template {Node} [Tree=Node]\n *   Tree type.\n * @template {Test} [Check=string]\n *   Test type.\n * @typedef {Visitor<import('./complex-types.js').Matches<import('./complex-types.js').InclusiveDescendant<Tree>, Check>, Extract<import('./complex-types.js').InclusiveDescendant<Tree>, Parent>>} BuildVisitor\n *   Build a typed `Visitor` function from a tree and a test.\n *\n *   It will infer which values are passed as `node` and which as `parents`.\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from './color.js'\n\n/**\n * Continue traversing as normal.\n */\nexport const CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node’s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @param tree\n *   Tree to traverse.\n * @param test\n *   `unist-util-is`-compatible test\n * @param visitor\n *   Handle each node.\n * @param reverse\n *   Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns\n *   Nothing.\n */\nexport const visitParents =\n  /**\n   * @type {(\n   *   (<Tree extends Node, Check extends Test>(tree: Tree, test: Check, visitor: BuildVisitor<Tree, Check>, reverse?: boolean | null | undefined) => void) &\n   *   (<Tree extends Node>(tree: Tree, visitor: BuildVisitor<Tree>, reverse?: boolean | null | undefined) => void)\n   * )}\n   */\n  (\n    /**\n     * @param {Node} tree\n     * @param {Test} test\n     * @param {Visitor<Node>} visitor\n     * @param {boolean | null | undefined} [reverse]\n     * @returns {void}\n     */\n    function (tree, test, visitor, reverse) {\n      if (typeof test === 'function' && typeof visitor !== 'function') {\n        reverse = visitor\n        // @ts-expect-error no visitor given, so `visitor` is test.\n        visitor = test\n        test = null\n      }\n\n      const is = convert(test)\n      const step = reverse ? -1 : 1\n\n      factory(tree, undefined, [])()\n\n      /**\n       * @param {Node} node\n       * @param {number | undefined} index\n       * @param {Array<Parent>} parents\n       */\n      function factory(node, index, parents) {\n        /** @type {Record<string, unknown>} */\n        // @ts-expect-error: hush\n        const value = node && typeof node === 'object' ? node : {}\n\n        if (typeof value.type === 'string') {\n          const name =\n            // `hast`\n            typeof value.tagName === 'string'\n              ? value.tagName\n              : // `xast`\n              typeof value.name === 'string'\n              ? value.name\n              : undefined\n\n          Object.defineProperty(visit, 'name', {\n            value:\n              'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n          })\n        }\n\n        return visit\n\n        function visit() {\n          /** @type {ActionTuple} */\n          let result = []\n          /** @type {ActionTuple} */\n          let subresult\n          /** @type {number} */\n          let offset\n          /** @type {Array<Parent>} */\n          let grandparents\n\n          if (!test || is(node, index, parents[parents.length - 1] || null)) {\n            result = toResult(visitor(node, parents))\n\n            if (result[0] === EXIT) {\n              return result\n            }\n          }\n\n          // @ts-expect-error looks like a parent.\n          if (node.children && result[0] !== SKIP) {\n            // @ts-expect-error looks like a parent.\n            offset = (reverse ? node.children.length : -1) + step\n            // @ts-expect-error looks like a parent.\n            grandparents = parents.concat(node)\n\n            // @ts-expect-error looks like a parent.\n            while (offset > -1 && offset < node.children.length) {\n              // @ts-expect-error looks like a parent.\n              subresult = factory(node.children[offset], offset, grandparents)()\n\n              if (subresult[0] === EXIT) {\n                return subresult\n              }\n\n              offset =\n                typeof subresult[1] === 'number' ? subresult[1] : offset + step\n            }\n          }\n\n          return result\n        }\n      }\n    }\n  )\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n *   Valid return values from visitors.\n * @returns {ActionTuple}\n *   Clean result.\n */\nfunction toResult(value) {\n  if (Array.isArray(value)) {\n    return value\n  }\n\n  if (typeof value === 'number') {\n    return [CONTINUE, value]\n  }\n\n  return [value]\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * Check if `Child` can be a child of `Ancestor`.\n *\n * Returns the ancestor when `Child` can be a child of `Ancestor`, or returns\n * `never`.\n *\n * @template {Node} Ancestor\n *   Node type.\n * @template {Node} Child\n *   Node type.\n * @typedef {(\n *   Ancestor extends Parent\n *     ? Child extends Ancestor['children'][number]\n *       ? Ancestor\n *       : never\n *     : never\n * )} ParentsOf\n */\n\n/**\n * @template {Node} [Visited=Node]\n *   Visited node type.\n * @template {Parent} [Ancestor=Parent]\n *   Ancestor type.\n * @callback Visitor\n *   Handle a node (matching `test`, if given).\n *\n *   Visitors are free to transform `node`.\n *   They can also transform `parent`.\n *\n *   Replacing `node` itself, if `SKIP` is not returned, still causes its\n *   descendants to be walked (which is a bug).\n *\n *   When adding or removing previous siblings of `node` (or next siblings, in\n *   case of reverse), the `Visitor` should return a new `Index` to specify the\n *   sibling to traverse after `node` is traversed.\n *   Adding or removing next siblings of `node` (or previous siblings, in case\n *   of reverse) is handled as expected without needing to return a new `Index`.\n *\n *   Removing the children property of `parent` still results in them being\n *   traversed.\n * @param {Visited} node\n *   Found node.\n * @param {Visited extends Node ? number | null : never} index\n *   Index of `node` in `parent`.\n * @param {Ancestor extends Node ? Ancestor | null : never} parent\n *   Parent of `node`.\n * @returns {VisitorResult}\n *   What to do next.\n *\n *   An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n *   An `Action` is treated as a tuple of `[Action]`.\n *\n *   Passing a tuple back only makes sense if the `Action` is `SKIP`.\n *   When the `Action` is `EXIT`, that action can be returned.\n *   When the `Action` is `CONTINUE`, `Index` can be returned.\n */\n\n/**\n * Build a typed `Visitor` function from a node and all possible parents.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n *\n * @template {Node} Visited\n *   Node type.\n * @template {Parent} Ancestor\n *   Parent type.\n * @typedef {Visitor<Visited, ParentsOf<Ancestor, Visited>>} BuildVisitorFromMatch\n */\n\n/**\n * Build a typed `Visitor` function from a list of descendants and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n *\n * @template {Node} Descendant\n *   Node type.\n * @template {Test} Check\n *   Test type.\n * @typedef {(\n *   BuildVisitorFromMatch<\n *     import('unist-util-visit-parents/complex-types.js').Matches<Descendant, Check>,\n *     Extract<Descendant, Parent>\n *   >\n * )} BuildVisitorFromDescendants\n */\n\n/**\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n *\n * @template {Node} [Tree=Node]\n *   Node type.\n * @template {Test} [Check=string]\n *   Test type.\n * @typedef {(\n *   BuildVisitorFromDescendants<\n *     import('unist-util-visit-parents/complex-types.js').InclusiveDescendant<Tree>,\n *     Check\n *   >\n * )} BuildVisitor\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @param tree\n *   Tree to traverse.\n * @param test\n *   `unist-util-is`-compatible test\n * @param visitor\n *   Handle each node.\n * @param reverse\n *   Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns\n *   Nothing.\n */\nexport const visit =\n  /**\n   * @type {(\n   *   (<Tree extends Node, Check extends Test>(tree: Tree, test: Check, visitor: BuildVisitor<Tree, Check>, reverse?: boolean | null | undefined) => void) &\n   *   (<Tree extends Node>(tree: Tree, visitor: BuildVisitor<Tree>, reverse?: boolean | null | undefined) => void)\n   * )}\n   */\n  (\n    /**\n     * @param {Node} tree\n     * @param {Test} test\n     * @param {Visitor} visitor\n     * @param {boolean | null | undefined} [reverse]\n     * @returns {void}\n     */\n    function (tree, test, visitor, reverse) {\n      if (typeof test === 'function' && typeof visitor !== 'function') {\n        reverse = visitor\n        visitor = test\n        test = null\n      }\n\n      visitParents(tree, test, overload, reverse)\n\n      /**\n       * @param {Node} node\n       * @param {Array<Parent>} parents\n       */\n      function overload(node, parents) {\n        const parent = parents[parents.length - 1]\n        return visitor(\n          node,\n          parent ? parent.children.indexOf(node) : null,\n          parent\n        )\n      }\n    }\n  )\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n","import { findAfter } from 'unist-util-find-after';\nimport { visit } from 'unist-util-visit';\n\nconst MAX_HEADING_DEPTH = 6\n\nfunction plugin () {\n  return transform\n}\n\nfunction transform (tree) {\n  for (let depth = MAX_HEADING_DEPTH; depth > 0; depth--) {\n    visit(\n      tree,\n      node => node.type === 'heading' && node.depth === depth,\n      sectionize\n    )\n  }\n}\n\nfunction sectionize (node, index, parent) {\n  const start = node\n  const startIndex = index\n  const depth = start.depth\n\n  const isEnd = node => node.type === 'heading' && node.depth <= depth || node.type === 'export'\n  const end = findAfter(parent, start, isEnd)\n  const endIndex = parent.children.indexOf(end)\n\n  const between = parent.children.slice(\n    startIndex,\n    endIndex > 0 ? endIndex : undefined\n  )\n\n  const section = {\n    type: 'section',\n    depth: depth,\n    children: between,\n    data: {\n      hName: 'section'\n    }\n  }\n\n  parent.children.splice(startIndex, section.children.length, section)\n}\n\nexport default plugin\n","import { Alert } from \"antd\";\n\nfunction ErrorView({ message, description }: { message: string, description: React.ReactNode }) {\n    return (\n        <Alert\n            message={message}\n            description={description}\n            type=\"error\"\n            showIcon\n            style={{ margin: \"16px 0\" }}\n        />\n    );\n}\n\nexport default ErrorView;\n","import { useCallback, useEffect, useState } from 'react'\nimport Markdown from \"react-markdown\";\nimport remarkGfm from \"remark-gfm\";\nimport rehypeRaw from 'rehype-raw'\nimport rehypeExternalLinks from 'rehype-external-links';\nimport sectionize from 'remark-sectionize'\nimport { FetchError, LyricItem } from './types';\nimport ErrorView from './ErrorView';\nimport { useTranslation } from 'react-i18next';\nimport { Button } from 'antd';\nimport useStore from './store';\nimport { CloseOutlined } from '@ant-design/icons';\n\n\nconst markdownTitle = (title: string) => `# ${title}\\n\\n`\nconst markdownSubtitle = (subtitle: string) => `## ${subtitle}\\n\\n`\n\nconst formatPoemText = (text: string, initialLineNumber: number) => {\n    var formattedText = \"\";\n    var lastLineNumber = initialLineNumber\n\n    for (let line of text.split('\\n')) {\n\n        if (line == \"\") {\n            formattedText = formattedText.slice(0, -2) + \"\\n\\n\"\n        } else if (line.startsWith(\"[\") && line.endsWith(\"]\")) {\n            formattedText += `### ${line.slice(1, -1)}\\n`\n        } else {\n            lastLineNumber += 1\n            if (lastLineNumber % 5 == 0) {\n                formattedText += `*${line}*<span class=\"line-number\" style=\"float: right; margin-right: -20px;\" > ${lastLineNumber}</span>\\\\\\n`\n            } else {\n                formattedText += `*${line}*\\\\\\n`\n            }\n        }\n    }\n    return { formattedText, lastLineNumber }\n\n}\n\n\nexport interface TextViewProps {\n    title?: string;\n    intro?: string | FetchError | null;\n    items?: LyricItem[] | null;\n    comments?: string | FetchError | null;\n}\n\nfunction TextView(props: TextViewProps) {\n    const { t } = useTranslation(\"common\");\n    const splitView = useStore.use.isSplitView();\n    const setSplitView = useStore.use.setIsSplitView();\n    const { title, intro, items, comments } = props\n    const [markdownText, setMarkdownText] = useState<string>(\"\")\n\n    const renderIntro = (intro: string | FetchError) => {\n        var introText = markdownSubtitle(t(\"textView.intro\"))\n        if (intro instanceof FetchError) {\n            introText += `**${t(\"error.fetchTextSeeErrorAbove\")}**\\n\\n`\n        } else {\n            introText += intro\n        }\n        introText += \"\\n\\n\"\n\n        return introText\n    }\n\n    const renderPoem = (items: LyricItem[], comments?: string | FetchError | null) => {\n        var poemText = markdownSubtitle(t(\"textView.poeticText\"))\n\n        var lineNumber = 0\n        for (let item of items) {\n            if (items.length > 1) {\n                poemText += `### ${item.title}\\n`\n            }\n            if (item.text instanceof FetchError) {\n                poemText += `**${t(\"error.fetchTextSeeErrorAbove\")}**\\n\\n`\n            } else {\n                const { formattedText, lastLineNumber } = formatPoemText(item.text, lineNumber)\n                poemText += formattedText\n                lineNumber = lastLineNumber\n            }\n        }\n\n        if (comments) {\n            poemText += \"\\n\\n\"\n            poemText += markdownSubtitle(t(\"textView.notes\"))\n            if (comments instanceof FetchError) {\n                poemText += `**${t(\"error.fetchTextSeeErrorAbove\")}**\\n\\n`\n            } else {\n                poemText += comments + \"\\n\\n\"\n            }\n        }\n        return poemText\n    }\n\n    const close = useCallback(() => {\n        setSplitView(false);\n    }, [splitView, setSplitView]);\n\n    useEffect(() => {\n        var text = title ? markdownTitle(title) : \"\"\n        if (intro) {\n            text += renderIntro(intro)\n        } else if (items && items.length > 0) {\n            text += renderPoem(items, comments)\n        }\n\n        setMarkdownText(text);\n    }, [intro, title, items, comments])\n\n    const introError = intro instanceof FetchError ? intro : null\n    const itemsErrors = items ? items.filter(item => item.text instanceof FetchError) : []\n    const commentsError = comments instanceof FetchError ? comments : null\n\n    const fetchErrors = [intro, ...items ? items.map(item => item.text) : [], comments]\n        .filter(e => e instanceof FetchError)\n    const errorView = fetchErrors.length > 0 ?\n        <ErrorView message={t('error.fetchErrorDescription')} description={\n            <div>\n                <ul>\n                    {introError ?<li key=\"intro\">\n                        <strong>{t('error.fetchIntroError')}:</strong> {introError.message}\n                    </li> : null}\n                    {itemsErrors.map((item, index) => (\n                        <li key={index}>\n                            <strong>{t('error.fetchLyricsItemErrorWithSection', { section: item.title })}:</strong>\n                            {(item.text as FetchError).message}\n                        </li>\n                    ))}\n                    {commentsError ?<li key=\"comments\">\n                        <strong>{t('error.fetchTextCommentsError')}:</strong> {commentsError.message}\n                    </li> : null}\n                </ul>\n            </div>\n        } /> : null\n\n\n    return (\n        <div>\n            { splitView ?\n                <div style={{ display: \"flex\", justifyContent: \"flex-end\" }}>\n                    <Button icon={<CloseOutlined />} onClick={() => close()}/>\n            </div>\n            : null }\n\n            {errorView ? errorView : null}\n            <div style={{ display: \"flex\", flexDirection: \"row\" }}>\n\n                <div className=\"text-view\" style={{ textAlign: \"left\" }}>\n                    <Markdown\n                        remarkPlugins={[remarkGfm, sectionize]}\n                        rehypePlugins={[\n                            rehypeRaw,\n                            [rehypeExternalLinks, { target: \"_blank\", rel: \"noopener noreferrer\" }]\n                        ]}>{markdownText}</Markdown>\n                </div>\n            </div>\n        </div>\n    )\n}\n\nexport default TextView\n","import React, { useRef, useImperativeHandle, useEffect, useContext, useLayoutEffect, useState, useCallback, useMemo } from 'react';\n\n/**\n * Rounds number to given decimal\n * eg. roundNumber(2.34343, 1) => 2.3\n */\nvar roundNumber = function (num, decimal) {\n    return Number(num.toFixed(decimal));\n};\n/**\n * Checks if value is number, if not it returns default value\n * 1# eg. checkIsNumber(2, 30) => 2\n * 2# eg. checkIsNumber(null, 30) => 30\n */\nvar checkIsNumber = function (num, defaultValue) {\n    return typeof num === \"number\" ? num : defaultValue;\n};\n\nvar handleCallback = function (context, event, callback) {\n    if (callback && typeof callback === \"function\") {\n        callback(context, event);\n    }\n};\n\n/* eslint-disable no-plusplus */\n/* eslint-disable no-param-reassign */\n/**\n * Functions should return denominator of the target value, which is the next animation step.\n * t is a value from 0 to 1, reflecting the percentage of animation status.\n */\nvar easeOut = function (t) {\n    return -Math.cos(t * Math.PI) / 2 + 0.5;\n};\n// linear\nvar linear = function (t) {\n    return t;\n};\n// accelerating from zero velocity\nvar easeInQuad = function (t) {\n    return t * t;\n};\n// decelerating to zero velocity\nvar easeOutQuad = function (t) {\n    return t * (2 - t);\n};\n// acceleration until halfway, then deceleration\nvar easeInOutQuad = function (t) {\n    return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\n};\n// accelerating from zero velocity\nvar easeInCubic = function (t) {\n    return t * t * t;\n};\n// decelerating to zero velocity\nvar easeOutCubic = function (t) {\n    return --t * t * t + 1;\n};\n// acceleration until halfway, then deceleration\nvar easeInOutCubic = function (t) {\n    return t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;\n};\n// accelerating from zero velocity\nvar easeInQuart = function (t) {\n    return t * t * t * t;\n};\n// decelerating to zero velocity\nvar easeOutQuart = function (t) {\n    return 1 - --t * t * t * t;\n};\n// acceleration until halfway, then deceleration\nvar easeInOutQuart = function (t) {\n    return t < 0.5 ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t;\n};\n// accelerating from zero velocity\nvar easeInQuint = function (t) {\n    return t * t * t * t * t;\n};\n// decelerating to zero velocity\nvar easeOutQuint = function (t) {\n    return 1 + --t * t * t * t * t;\n};\n// acceleration until halfway, then deceleration\nvar easeInOutQuint = function (t) {\n    return t < 0.5 ? 16 * t * t * t * t * t : 1 + 16 * --t * t * t * t * t;\n};\nvar animations = {\n    easeOut: easeOut,\n    linear: linear,\n    easeInQuad: easeInQuad,\n    easeOutQuad: easeOutQuad,\n    easeInOutQuad: easeInOutQuad,\n    easeInCubic: easeInCubic,\n    easeOutCubic: easeOutCubic,\n    easeInOutCubic: easeInOutCubic,\n    easeInQuart: easeInQuart,\n    easeOutQuart: easeOutQuart,\n    easeInOutQuart: easeInOutQuart,\n    easeInQuint: easeInQuint,\n    easeOutQuint: easeOutQuint,\n    easeInOutQuint: easeInOutQuint,\n};\n\n/* eslint-disable no-param-reassign */\nvar handleCancelAnimationFrame = function (animation) {\n    if (typeof animation === \"number\") {\n        cancelAnimationFrame(animation);\n    }\n};\nvar handleCancelAnimation = function (contextInstance) {\n    if (!contextInstance.mounted)\n        return;\n    handleCancelAnimationFrame(contextInstance.animation);\n    // Clear animation state\n    contextInstance.animate = false;\n    contextInstance.animation = null;\n    contextInstance.velocity = null;\n};\nfunction handleSetupAnimation(contextInstance, animationName, animationTime, callback) {\n    if (!contextInstance.mounted)\n        return;\n    var startTime = new Date().getTime();\n    var lastStep = 1;\n    // if another animation is active\n    handleCancelAnimation(contextInstance);\n    // new animation\n    contextInstance.animation = function () {\n        if (!contextInstance.mounted) {\n            return handleCancelAnimationFrame(contextInstance.animation);\n        }\n        var frameTime = new Date().getTime() - startTime;\n        var animationProgress = frameTime / animationTime;\n        var animationType = animations[animationName];\n        var step = animationType(animationProgress);\n        if (frameTime >= animationTime) {\n            callback(lastStep);\n            contextInstance.animation = null;\n        }\n        else if (contextInstance.animation) {\n            callback(step);\n            requestAnimationFrame(contextInstance.animation);\n        }\n    };\n    requestAnimationFrame(contextInstance.animation);\n}\nfunction isValidTargetState(targetState) {\n    var scale = targetState.scale, positionX = targetState.positionX, positionY = targetState.positionY;\n    if (Number.isNaN(scale) ||\n        Number.isNaN(positionX) ||\n        Number.isNaN(positionY)) {\n        return false;\n    }\n    return true;\n}\nfunction animate(contextInstance, targetState, animationTime, animationName) {\n    var isValid = isValidTargetState(targetState);\n    if (!contextInstance.mounted || !isValid)\n        return;\n    var setTransformState = contextInstance.setTransformState;\n    var _a = contextInstance.transformState, scale = _a.scale, positionX = _a.positionX, positionY = _a.positionY;\n    var scaleDiff = targetState.scale - scale;\n    var positionXDiff = targetState.positionX - positionX;\n    var positionYDiff = targetState.positionY - positionY;\n    if (animationTime === 0) {\n        setTransformState(targetState.scale, targetState.positionX, targetState.positionY);\n    }\n    else {\n        // animation start timestamp\n        handleSetupAnimation(contextInstance, animationName, animationTime, function (step) {\n            var newScale = scale + scaleDiff * step;\n            var newPositionX = positionX + positionXDiff * step;\n            var newPositionY = positionY + positionYDiff * step;\n            setTransformState(newScale, newPositionX, newPositionY);\n        });\n    }\n}\n\n/* eslint-disable no-param-reassign */\nfunction getComponentsSizes(wrapperComponent, contentComponent, newScale) {\n    var wrapperWidth = wrapperComponent.offsetWidth;\n    var wrapperHeight = wrapperComponent.offsetHeight;\n    var contentWidth = contentComponent.offsetWidth;\n    var contentHeight = contentComponent.offsetHeight;\n    var newContentWidth = contentWidth * newScale;\n    var newContentHeight = contentHeight * newScale;\n    var newDiffWidth = wrapperWidth - newContentWidth;\n    var newDiffHeight = wrapperHeight - newContentHeight;\n    return {\n        wrapperWidth: wrapperWidth,\n        wrapperHeight: wrapperHeight,\n        newContentWidth: newContentWidth,\n        newDiffWidth: newDiffWidth,\n        newContentHeight: newContentHeight,\n        newDiffHeight: newDiffHeight,\n    };\n}\nvar getBounds = function (wrapperWidth, newContentWidth, diffWidth, wrapperHeight, newContentHeight, diffHeight, centerZoomedOut) {\n    var scaleWidthFactor = wrapperWidth > newContentWidth\n        ? diffWidth * (centerZoomedOut ? 1 : 0.5)\n        : 0;\n    var scaleHeightFactor = wrapperHeight > newContentHeight\n        ? diffHeight * (centerZoomedOut ? 1 : 0.5)\n        : 0;\n    var minPositionX = wrapperWidth - newContentWidth - scaleWidthFactor;\n    var maxPositionX = scaleWidthFactor;\n    var minPositionY = wrapperHeight - newContentHeight - scaleHeightFactor;\n    var maxPositionY = scaleHeightFactor;\n    return { minPositionX: minPositionX, maxPositionX: maxPositionX, minPositionY: minPositionY, maxPositionY: maxPositionY };\n};\nvar calculateBounds = function (contextInstance, newScale) {\n    var wrapperComponent = contextInstance.wrapperComponent, contentComponent = contextInstance.contentComponent;\n    var centerZoomedOut = contextInstance.setup.centerZoomedOut;\n    if (!wrapperComponent || !contentComponent) {\n        throw new Error(\"Components are not mounted\");\n    }\n    var _a = getComponentsSizes(wrapperComponent, contentComponent, newScale), wrapperWidth = _a.wrapperWidth, wrapperHeight = _a.wrapperHeight, newContentWidth = _a.newContentWidth, newDiffWidth = _a.newDiffWidth, newContentHeight = _a.newContentHeight, newDiffHeight = _a.newDiffHeight;\n    var bounds = getBounds(wrapperWidth, newContentWidth, newDiffWidth, wrapperHeight, newContentHeight, newDiffHeight, Boolean(centerZoomedOut));\n    return bounds;\n};\n/**\n * Keeps value between given bounds, used for limiting view to given boundaries\n * 1# eg. boundLimiter(2, 0, 3, true) => 2\n * 2# eg. boundLimiter(4, 0, 3, true) => 3\n * 3# eg. boundLimiter(-2, 0, 3, true) => 0\n * 4# eg. boundLimiter(10, 0, 3, false) => 10\n */\nvar boundLimiter = function (value, minBound, maxBound, isActive) {\n    if (!isActive)\n        return roundNumber(value, 2);\n    if (value < minBound)\n        return roundNumber(minBound, 2);\n    if (value > maxBound)\n        return roundNumber(maxBound, 2);\n    return roundNumber(value, 2);\n};\nvar handleCalculateBounds = function (contextInstance, newScale) {\n    var bounds = calculateBounds(contextInstance, newScale);\n    // Save bounds\n    contextInstance.bounds = bounds;\n    return bounds;\n};\nfunction getMouseBoundedPosition(positionX, positionY, bounds, limitToBounds, paddingValueX, paddingValueY, wrapperComponent) {\n    var minPositionX = bounds.minPositionX, minPositionY = bounds.minPositionY, maxPositionX = bounds.maxPositionX, maxPositionY = bounds.maxPositionY;\n    var paddingX = 0;\n    var paddingY = 0;\n    if (wrapperComponent) {\n        paddingX = paddingValueX;\n        paddingY = paddingValueY;\n    }\n    var x = boundLimiter(positionX, minPositionX - paddingX, maxPositionX + paddingX, limitToBounds);\n    var y = boundLimiter(positionY, minPositionY - paddingY, maxPositionY + paddingY, limitToBounds);\n    return { x: x, y: y };\n}\n\nfunction handleCalculateZoomPositions(contextInstance, mouseX, mouseY, newScale, bounds, limitToBounds) {\n    var _a = contextInstance.transformState, scale = _a.scale, positionX = _a.positionX, positionY = _a.positionY;\n    var scaleDifference = newScale - scale;\n    if (typeof mouseX !== \"number\" || typeof mouseY !== \"number\") {\n        console.error(\"Mouse X and Y position were not provided!\");\n        return { x: positionX, y: positionY };\n    }\n    var calculatedPositionX = positionX - mouseX * scaleDifference;\n    var calculatedPositionY = positionY - mouseY * scaleDifference;\n    // do not limit to bounds when there is padding animation,\n    // it causes animation strange behaviour\n    var newPositions = getMouseBoundedPosition(calculatedPositionX, calculatedPositionY, bounds, limitToBounds, 0, 0, null);\n    return newPositions;\n}\nfunction checkZoomBounds(zoom, minScale, maxScale, zoomPadding, enablePadding) {\n    var scalePadding = enablePadding ? zoomPadding : 0;\n    var minScaleWithPadding = minScale - scalePadding;\n    if (!Number.isNaN(maxScale) && zoom >= maxScale)\n        return maxScale;\n    if (!Number.isNaN(minScale) && zoom <= minScaleWithPadding)\n        return minScaleWithPadding;\n    return zoom;\n}\n\nvar isPanningStartAllowed = function (contextInstance, event) {\n    var excluded = contextInstance.setup.panning.excluded;\n    var isInitialized = contextInstance.isInitialized, wrapperComponent = contextInstance.wrapperComponent;\n    var target = event.target;\n    var targetIsShadowDom = \"shadowRoot\" in target && \"composedPath\" in event;\n    var isWrapperChild = targetIsShadowDom\n        ? event.composedPath().some(function (el) {\n            if (!(el instanceof Element)) {\n                return false;\n            }\n            return wrapperComponent === null || wrapperComponent === void 0 ? void 0 : wrapperComponent.contains(el);\n        })\n        : wrapperComponent === null || wrapperComponent === void 0 ? void 0 : wrapperComponent.contains(target);\n    var isAllowed = isInitialized && target && isWrapperChild;\n    if (!isAllowed)\n        return false;\n    var isExcluded = isExcludedNode(target, excluded);\n    if (isExcluded)\n        return false;\n    return true;\n};\nvar isPanningAllowed = function (contextInstance) {\n    var isInitialized = contextInstance.isInitialized, isPanning = contextInstance.isPanning, setup = contextInstance.setup;\n    var disabled = setup.panning.disabled;\n    var isAllowed = isInitialized && isPanning && !disabled;\n    if (!isAllowed)\n        return false;\n    return true;\n};\nvar handlePanningSetup = function (contextInstance, event) {\n    var _a = contextInstance.transformState, positionX = _a.positionX, positionY = _a.positionY;\n    contextInstance.isPanning = true;\n    // Panning with mouse\n    var x = event.clientX;\n    var y = event.clientY;\n    contextInstance.startCoords = { x: x - positionX, y: y - positionY };\n};\nvar handleTouchPanningSetup = function (contextInstance, event) {\n    var touches = event.touches;\n    var _a = contextInstance.transformState, positionX = _a.positionX, positionY = _a.positionY;\n    contextInstance.isPanning = true;\n    // Panning with touch\n    var oneFingerTouch = touches.length === 1;\n    if (oneFingerTouch) {\n        var x = touches[0].clientX;\n        var y = touches[0].clientY;\n        contextInstance.startCoords = { x: x - positionX, y: y - positionY };\n    }\n};\nfunction handlePanToBounds(contextInstance) {\n    var _a = contextInstance.transformState, positionX = _a.positionX, positionY = _a.positionY, scale = _a.scale;\n    var _b = contextInstance.setup, disabled = _b.disabled, limitToBounds = _b.limitToBounds, centerZoomedOut = _b.centerZoomedOut;\n    var wrapperComponent = contextInstance.wrapperComponent;\n    if (disabled || !wrapperComponent || !contextInstance.bounds)\n        return;\n    var _c = contextInstance.bounds, maxPositionX = _c.maxPositionX, minPositionX = _c.minPositionX, maxPositionY = _c.maxPositionY, minPositionY = _c.minPositionY;\n    var xChanged = positionX > maxPositionX || positionX < minPositionX;\n    var yChanged = positionY > maxPositionY || positionY < minPositionY;\n    var mousePosX = positionX > maxPositionX\n        ? wrapperComponent.offsetWidth\n        : contextInstance.setup.minPositionX || 0;\n    var mousePosY = positionY > maxPositionY\n        ? wrapperComponent.offsetHeight\n        : contextInstance.setup.minPositionY || 0;\n    var _d = handleCalculateZoomPositions(contextInstance, mousePosX, mousePosY, scale, contextInstance.bounds, limitToBounds || centerZoomedOut), x = _d.x, y = _d.y;\n    return {\n        scale: scale,\n        positionX: xChanged ? x : positionX,\n        positionY: yChanged ? y : positionY,\n    };\n}\nfunction handleNewPosition(contextInstance, newPositionX, newPositionY, paddingValueX, paddingValueY) {\n    var limitToBounds = contextInstance.setup.limitToBounds;\n    var wrapperComponent = contextInstance.wrapperComponent, bounds = contextInstance.bounds;\n    var _a = contextInstance.transformState, scale = _a.scale, positionX = _a.positionX, positionY = _a.positionY;\n    if (wrapperComponent === null ||\n        bounds === null ||\n        (newPositionX === positionX && newPositionY === positionY)) {\n        return;\n    }\n    var _b = getMouseBoundedPosition(newPositionX, newPositionY, bounds, limitToBounds, paddingValueX, paddingValueY, wrapperComponent), x = _b.x, y = _b.y;\n    contextInstance.setTransformState(scale, x, y);\n}\nvar getPanningClientPosition = function (contextInstance, clientX, clientY) {\n    var startCoords = contextInstance.startCoords, transformState = contextInstance.transformState;\n    var panning = contextInstance.setup.panning;\n    var lockAxisX = panning.lockAxisX, lockAxisY = panning.lockAxisY;\n    var positionX = transformState.positionX, positionY = transformState.positionY;\n    if (!startCoords) {\n        return { x: positionX, y: positionY };\n    }\n    var mouseX = clientX - startCoords.x;\n    var mouseY = clientY - startCoords.y;\n    var newPositionX = lockAxisX ? positionX : mouseX;\n    var newPositionY = lockAxisY ? positionY : mouseY;\n    return { x: newPositionX, y: newPositionY };\n};\nvar getPaddingValue = function (contextInstance, size) {\n    var setup = contextInstance.setup, transformState = contextInstance.transformState;\n    var scale = transformState.scale;\n    var minScale = setup.minScale, disablePadding = setup.disablePadding;\n    if (size > 0 && scale >= minScale && !disablePadding) {\n        return size;\n    }\n    return 0;\n};\n\nvar isVelocityCalculationAllowed = function (contextInstance) {\n    var mounted = contextInstance.mounted;\n    var _a = contextInstance.setup, disabled = _a.disabled, velocityAnimation = _a.velocityAnimation;\n    var scale = contextInstance.transformState.scale;\n    var disabledVelocity = velocityAnimation.disabled;\n    var isAllowed = !disabledVelocity || scale > 1 || !disabled || mounted;\n    if (!isAllowed)\n        return false;\n    return true;\n};\nvar isVelocityAllowed = function (contextInstance) {\n    var mounted = contextInstance.mounted, velocity = contextInstance.velocity, bounds = contextInstance.bounds;\n    var _a = contextInstance.setup, disabled = _a.disabled, velocityAnimation = _a.velocityAnimation;\n    var scale = contextInstance.transformState.scale;\n    var disabledVelocity = velocityAnimation.disabled;\n    var isAllowed = !disabledVelocity || scale > 1 || !disabled || mounted;\n    if (!isAllowed)\n        return false;\n    if (!velocity || !bounds)\n        return false;\n    return true;\n};\nfunction getVelocityMoveTime(contextInstance, velocity) {\n    var velocityAnimation = contextInstance.setup.velocityAnimation;\n    var equalToMove = velocityAnimation.equalToMove, animationTime = velocityAnimation.animationTime, sensitivity = velocityAnimation.sensitivity;\n    if (equalToMove) {\n        return animationTime * velocity * sensitivity;\n    }\n    return animationTime;\n}\nfunction getVelocityPosition(newPosition, startPosition, currentPosition, isLocked, limitToBounds, minPosition, maxPosition, minTarget, maxTarget, step) {\n    if (limitToBounds) {\n        if (startPosition > maxPosition && currentPosition > maxPosition) {\n            var calculatedPosition = maxPosition + (newPosition - maxPosition) * step;\n            if (calculatedPosition > maxTarget)\n                return maxTarget;\n            if (calculatedPosition < maxPosition)\n                return maxPosition;\n            return calculatedPosition;\n        }\n        if (startPosition < minPosition && currentPosition < minPosition) {\n            var calculatedPosition = minPosition + (newPosition - minPosition) * step;\n            if (calculatedPosition < minTarget)\n                return minTarget;\n            if (calculatedPosition > minPosition)\n                return minPosition;\n            return calculatedPosition;\n        }\n    }\n    if (isLocked)\n        return startPosition;\n    return boundLimiter(newPosition, minPosition, maxPosition, limitToBounds);\n}\n\nfunction getSizeMultiplier(wrapperComponent, equalToMove) {\n    var defaultMultiplier = 1;\n    if (equalToMove) {\n        return Math.min(defaultMultiplier, wrapperComponent.offsetWidth / window.innerWidth);\n    }\n    return defaultMultiplier;\n}\nfunction handleCalculateVelocity(contextInstance, position) {\n    var isAllowed = isVelocityCalculationAllowed(contextInstance);\n    if (!isAllowed) {\n        return;\n    }\n    var lastMousePosition = contextInstance.lastMousePosition, velocityTime = contextInstance.velocityTime, setup = contextInstance.setup;\n    var wrapperComponent = contextInstance.wrapperComponent;\n    var equalToMove = setup.velocityAnimation.equalToMove;\n    var now = Date.now();\n    if (lastMousePosition && velocityTime && wrapperComponent) {\n        var sizeMultiplier = getSizeMultiplier(wrapperComponent, equalToMove);\n        var distanceX = position.x - lastMousePosition.x;\n        var distanceY = position.y - lastMousePosition.y;\n        var velocityX = distanceX / sizeMultiplier;\n        var velocityY = distanceY / sizeMultiplier;\n        var interval = now - velocityTime;\n        var speed = distanceX * distanceX + distanceY * distanceY;\n        var velocity = Math.sqrt(speed) / interval;\n        contextInstance.velocity = { velocityX: velocityX, velocityY: velocityY, total: velocity };\n    }\n    contextInstance.lastMousePosition = position;\n    contextInstance.velocityTime = now;\n}\nfunction handleVelocityPanning(contextInstance) {\n    var velocity = contextInstance.velocity, bounds = contextInstance.bounds, setup = contextInstance.setup, wrapperComponent = contextInstance.wrapperComponent;\n    var isAllowed = isVelocityAllowed(contextInstance);\n    if (!isAllowed || !velocity || !bounds || !wrapperComponent) {\n        return;\n    }\n    var velocityX = velocity.velocityX, velocityY = velocity.velocityY, total = velocity.total;\n    var maxPositionX = bounds.maxPositionX, minPositionX = bounds.minPositionX, maxPositionY = bounds.maxPositionY, minPositionY = bounds.minPositionY;\n    var limitToBounds = setup.limitToBounds, alignmentAnimation = setup.alignmentAnimation;\n    var zoomAnimation = setup.zoomAnimation, panning = setup.panning;\n    var lockAxisY = panning.lockAxisY, lockAxisX = panning.lockAxisX;\n    var animationType = zoomAnimation.animationType;\n    var sizeX = alignmentAnimation.sizeX, sizeY = alignmentAnimation.sizeY, velocityAlignmentTime = alignmentAnimation.velocityAlignmentTime;\n    var alignAnimationTime = velocityAlignmentTime;\n    var moveAnimationTime = getVelocityMoveTime(contextInstance, total);\n    var finalAnimationTime = Math.max(moveAnimationTime, alignAnimationTime);\n    var paddingValueX = getPaddingValue(contextInstance, sizeX);\n    var paddingValueY = getPaddingValue(contextInstance, sizeY);\n    var paddingX = (paddingValueX * wrapperComponent.offsetWidth) / 100;\n    var paddingY = (paddingValueY * wrapperComponent.offsetHeight) / 100;\n    var maxTargetX = maxPositionX + paddingX;\n    var minTargetX = minPositionX - paddingX;\n    var maxTargetY = maxPositionY + paddingY;\n    var minTargetY = minPositionY - paddingY;\n    var startState = contextInstance.transformState;\n    var startTime = new Date().getTime();\n    handleSetupAnimation(contextInstance, animationType, finalAnimationTime, function (step) {\n        var _a = contextInstance.transformState, scale = _a.scale, positionX = _a.positionX, positionY = _a.positionY;\n        var frameTime = new Date().getTime() - startTime;\n        var animationProgress = frameTime / alignAnimationTime;\n        var alignAnimation = animations[alignmentAnimation.animationType];\n        var alignStep = 1 - alignAnimation(Math.min(1, animationProgress));\n        var customStep = 1 - step;\n        var newPositionX = positionX + velocityX * customStep;\n        var newPositionY = positionY + velocityY * customStep;\n        var currentPositionX = getVelocityPosition(newPositionX, startState.positionX, positionX, lockAxisX, limitToBounds, minPositionX, maxPositionX, minTargetX, maxTargetX, alignStep);\n        var currentPositionY = getVelocityPosition(newPositionY, startState.positionY, positionY, lockAxisY, limitToBounds, minPositionY, maxPositionY, minTargetY, maxTargetY, alignStep);\n        if (positionX !== newPositionX || positionY !== newPositionY) {\n            contextInstance.setTransformState(scale, currentPositionX, currentPositionY);\n        }\n    });\n}\n\nfunction handlePanningStart(contextInstance, event) {\n    var scale = contextInstance.transformState.scale;\n    handleCancelAnimation(contextInstance);\n    handleCalculateBounds(contextInstance, scale);\n    if (window.TouchEvent !== undefined && event instanceof TouchEvent) {\n        handleTouchPanningSetup(contextInstance, event);\n    }\n    else {\n        handlePanningSetup(contextInstance, event);\n    }\n}\nfunction handleAlignToBounds(contextInstance, customAnimationTime) {\n    var scale = contextInstance.transformState.scale;\n    var _a = contextInstance.setup, minScale = _a.minScale, alignmentAnimation = _a.alignmentAnimation;\n    var disabled = alignmentAnimation.disabled, sizeX = alignmentAnimation.sizeX, sizeY = alignmentAnimation.sizeY, animationTime = alignmentAnimation.animationTime, animationType = alignmentAnimation.animationType;\n    var isDisabled = disabled || scale < minScale || (!sizeX && !sizeY);\n    if (isDisabled)\n        return;\n    var targetState = handlePanToBounds(contextInstance);\n    if (targetState) {\n        animate(contextInstance, targetState, customAnimationTime !== null && customAnimationTime !== void 0 ? customAnimationTime : animationTime, animationType);\n    }\n}\nfunction handlePanning(contextInstance, clientX, clientY) {\n    var startCoords = contextInstance.startCoords, setup = contextInstance.setup;\n    var _a = setup.alignmentAnimation, sizeX = _a.sizeX, sizeY = _a.sizeY;\n    if (!startCoords)\n        return;\n    var _b = getPanningClientPosition(contextInstance, clientX, clientY), x = _b.x, y = _b.y;\n    var paddingValueX = getPaddingValue(contextInstance, sizeX);\n    var paddingValueY = getPaddingValue(contextInstance, sizeY);\n    handleCalculateVelocity(contextInstance, { x: x, y: y });\n    handleNewPosition(contextInstance, x, y, paddingValueX, paddingValueY);\n}\nfunction handlePanningEnd(contextInstance) {\n    if (contextInstance.isPanning) {\n        var velocityDisabled = contextInstance.setup.panning.velocityDisabled;\n        var velocity = contextInstance.velocity, wrapperComponent = contextInstance.wrapperComponent, contentComponent = contextInstance.contentComponent;\n        contextInstance.isPanning = false;\n        contextInstance.animate = false;\n        contextInstance.animation = null;\n        var wrapperRect = wrapperComponent === null || wrapperComponent === void 0 ? void 0 : wrapperComponent.getBoundingClientRect();\n        var contentRect = contentComponent === null || contentComponent === void 0 ? void 0 : contentComponent.getBoundingClientRect();\n        var wrapperWidth = (wrapperRect === null || wrapperRect === void 0 ? void 0 : wrapperRect.width) || 0;\n        var wrapperHeight = (wrapperRect === null || wrapperRect === void 0 ? void 0 : wrapperRect.height) || 0;\n        var contentWidth = (contentRect === null || contentRect === void 0 ? void 0 : contentRect.width) || 0;\n        var contentHeight = (contentRect === null || contentRect === void 0 ? void 0 : contentRect.height) || 0;\n        var isZoomed = wrapperWidth < contentWidth || wrapperHeight < contentHeight;\n        var shouldAnimate = !velocityDisabled && velocity && (velocity === null || velocity === void 0 ? void 0 : velocity.total) > 0.1 && isZoomed;\n        if (shouldAnimate) {\n            handleVelocityPanning(contextInstance);\n        }\n        else {\n            handleAlignToBounds(contextInstance);\n        }\n    }\n}\n\nfunction handleZoomToPoint(contextInstance, scale, mouseX, mouseY) {\n    var _a = contextInstance.setup, minScale = _a.minScale, maxScale = _a.maxScale, limitToBounds = _a.limitToBounds;\n    var newScale = checkZoomBounds(roundNumber(scale, 2), minScale, maxScale, 0, false);\n    var bounds = handleCalculateBounds(contextInstance, newScale);\n    var _b = handleCalculateZoomPositions(contextInstance, mouseX, mouseY, newScale, bounds, limitToBounds), x = _b.x, y = _b.y;\n    return { scale: newScale, positionX: x, positionY: y };\n}\nfunction handleAlignToScaleBounds(contextInstance, mousePositionX, mousePositionY) {\n    var scale = contextInstance.transformState.scale;\n    var wrapperComponent = contextInstance.wrapperComponent;\n    var _a = contextInstance.setup, minScale = _a.minScale, limitToBounds = _a.limitToBounds, zoomAnimation = _a.zoomAnimation;\n    var disabled = zoomAnimation.disabled, animationTime = zoomAnimation.animationTime, animationType = zoomAnimation.animationType;\n    var isDisabled = disabled || scale >= minScale;\n    if (scale >= 1 || limitToBounds) {\n        // fire fit to bounds animation\n        handleAlignToBounds(contextInstance);\n    }\n    if (isDisabled || !wrapperComponent || !contextInstance.mounted)\n        return;\n    var mouseX = mousePositionX || wrapperComponent.offsetWidth / 2;\n    var mouseY = mousePositionY || wrapperComponent.offsetHeight / 2;\n    var targetState = handleZoomToPoint(contextInstance, minScale, mouseX, mouseY);\n    if (targetState) {\n        animate(contextInstance, targetState, animationTime, animationType);\n    }\n}\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    };\r\n    return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n        if (ar || !(i in from)) {\r\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n            ar[i] = from[i];\r\n        }\r\n    }\r\n    return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n    var e = new Error(message);\r\n    return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nvar initialState = {\n    previousScale: 1,\n    scale: 1,\n    positionX: 0,\n    positionY: 0,\n};\nvar initialSetup = {\n    disabled: false,\n    minPositionX: null,\n    maxPositionX: null,\n    minPositionY: null,\n    maxPositionY: null,\n    minScale: 1,\n    maxScale: 8,\n    limitToBounds: true,\n    centerZoomedOut: false,\n    centerOnInit: false,\n    disablePadding: false,\n    smooth: true,\n    wheel: {\n        step: 0.2,\n        disabled: false,\n        smoothStep: 0.001,\n        wheelDisabled: false,\n        touchPadDisabled: false,\n        activationKeys: [],\n        excluded: [],\n    },\n    panning: {\n        disabled: false,\n        velocityDisabled: false,\n        lockAxisX: false,\n        lockAxisY: false,\n        allowLeftClickPan: true,\n        allowMiddleClickPan: true,\n        allowRightClickPan: true,\n        wheelPanning: false,\n        activationKeys: [],\n        excluded: [],\n    },\n    pinch: {\n        step: 5,\n        disabled: false,\n        excluded: [],\n    },\n    doubleClick: {\n        disabled: false,\n        step: 0.7,\n        mode: \"zoomIn\",\n        animationType: \"easeOut\",\n        animationTime: 200,\n        excluded: [],\n    },\n    zoomAnimation: {\n        disabled: false,\n        size: 0.4,\n        animationTime: 200,\n        animationType: \"easeOut\",\n    },\n    alignmentAnimation: {\n        disabled: false,\n        sizeX: 100,\n        sizeY: 100,\n        animationTime: 200,\n        velocityAlignmentTime: 400,\n        animationType: \"easeOut\",\n    },\n    velocityAnimation: {\n        disabled: false,\n        sensitivity: 1,\n        animationTime: 400,\n        animationType: \"easeOut\",\n        equalToMove: true,\n    },\n};\nvar baseClasses = {\n    wrapperClass: \"react-transform-wrapper\",\n    contentClass: \"react-transform-component\",\n};\n\nvar createState = function (props) {\n    var _a, _b, _c, _d;\n    return {\n        previousScale: (_a = props.initialScale) !== null && _a !== void 0 ? _a : initialState.scale,\n        scale: (_b = props.initialScale) !== null && _b !== void 0 ? _b : initialState.scale,\n        positionX: (_c = props.initialPositionX) !== null && _c !== void 0 ? _c : initialState.positionX,\n        positionY: (_d = props.initialPositionY) !== null && _d !== void 0 ? _d : initialState.positionY,\n    };\n};\nvar createSetup = function (props) {\n    var newSetup = __assign({}, initialSetup);\n    Object.keys(props).forEach(function (key) {\n        var validValue = typeof props[key] !== \"undefined\";\n        var validParameter = typeof initialSetup[key] !== \"undefined\";\n        if (validParameter && validValue) {\n            var dataType = Object.prototype.toString.call(initialSetup[key]);\n            var isObject = dataType === \"[object Object]\";\n            var isArray = dataType === \"[object Array]\";\n            if (isObject) {\n                newSetup[key] = __assign(__assign({}, initialSetup[key]), props[key]);\n            }\n            else if (isArray) {\n                newSetup[key] = __spreadArray(__spreadArray([], initialSetup[key], true), props[key], true);\n            }\n            else {\n                newSetup[key] = props[key];\n            }\n        }\n    });\n    return newSetup;\n};\n\nvar handleCalculateButtonZoom = function (contextInstance, delta, step) {\n    var scale = contextInstance.transformState.scale;\n    var wrapperComponent = contextInstance.wrapperComponent, setup = contextInstance.setup;\n    var maxScale = setup.maxScale, minScale = setup.minScale, zoomAnimation = setup.zoomAnimation, smooth = setup.smooth;\n    var size = zoomAnimation.size;\n    if (!wrapperComponent) {\n        throw new Error(\"Wrapper is not mounted\");\n    }\n    var targetScale = smooth\n        ? scale * Math.exp(delta * step)\n        : scale + delta * step;\n    var newScale = checkZoomBounds(roundNumber(targetScale, 3), minScale, maxScale, size, false);\n    return newScale;\n};\nfunction handleZoomToViewCenter(contextInstance, delta, step, animationTime, animationType) {\n    var wrapperComponent = contextInstance.wrapperComponent;\n    var _a = contextInstance.transformState, scale = _a.scale, positionX = _a.positionX, positionY = _a.positionY;\n    if (!wrapperComponent)\n        return console.error(\"No WrapperComponent found\");\n    var wrapperWidth = wrapperComponent.offsetWidth;\n    var wrapperHeight = wrapperComponent.offsetHeight;\n    var mouseX = (wrapperWidth / 2 - positionX) / scale;\n    var mouseY = (wrapperHeight / 2 - positionY) / scale;\n    var newScale = handleCalculateButtonZoom(contextInstance, delta, step);\n    var targetState = handleZoomToPoint(contextInstance, newScale, mouseX, mouseY);\n    if (!targetState) {\n        return console.error(\"Error during zoom event. New transformation state was not calculated.\");\n    }\n    animate(contextInstance, targetState, animationTime, animationType);\n}\nfunction resetTransformations(contextInstance, animationTime, animationType, onResetTransformation) {\n    var setup = contextInstance.setup, wrapperComponent = contextInstance.wrapperComponent;\n    var limitToBounds = setup.limitToBounds;\n    var initialTransformation = createState(contextInstance.props);\n    var _a = contextInstance.transformState, scale = _a.scale, positionX = _a.positionX, positionY = _a.positionY;\n    if (!wrapperComponent)\n        return;\n    var newBounds = calculateBounds(contextInstance, initialTransformation.scale);\n    var boundedPositions = getMouseBoundedPosition(initialTransformation.positionX, initialTransformation.positionY, newBounds, limitToBounds, 0, 0, wrapperComponent);\n    var newState = {\n        scale: initialTransformation.scale,\n        positionX: boundedPositions.x,\n        positionY: boundedPositions.y,\n    };\n    if (scale === initialTransformation.scale &&\n        positionX === initialTransformation.positionX &&\n        positionY === initialTransformation.positionY) {\n        return;\n    }\n    onResetTransformation === null || onResetTransformation === void 0 ? void 0 : onResetTransformation();\n    animate(contextInstance, newState, animationTime, animationType);\n}\nfunction getOffset(element, wrapper, content, state) {\n    var offset = element.getBoundingClientRect();\n    var wrapperOffset = wrapper.getBoundingClientRect();\n    var contentOffset = content.getBoundingClientRect();\n    var xOff = wrapperOffset.x * state.scale;\n    var yOff = wrapperOffset.y * state.scale;\n    return {\n        x: (offset.x - contentOffset.x + xOff) / state.scale,\n        y: (offset.y - contentOffset.y + yOff) / state.scale,\n    };\n}\nfunction calculateZoomToNode(contextInstance, node, customZoom) {\n    var wrapperComponent = contextInstance.wrapperComponent, contentComponent = contextInstance.contentComponent, transformState = contextInstance.transformState;\n    var _a = contextInstance.setup, limitToBounds = _a.limitToBounds, minScale = _a.minScale, maxScale = _a.maxScale;\n    if (!wrapperComponent || !contentComponent)\n        return transformState;\n    var wrapperRect = wrapperComponent.getBoundingClientRect();\n    var nodeRect = node.getBoundingClientRect();\n    var nodeOffset = getOffset(node, wrapperComponent, contentComponent, transformState);\n    var nodeLeft = nodeOffset.x;\n    var nodeTop = nodeOffset.y;\n    var nodeWidth = nodeRect.width / transformState.scale;\n    var nodeHeight = nodeRect.height / transformState.scale;\n    var scaleX = wrapperComponent.offsetWidth / nodeWidth;\n    var scaleY = wrapperComponent.offsetHeight / nodeHeight;\n    var newScale = checkZoomBounds(customZoom || Math.min(scaleX, scaleY), minScale, maxScale, 0, false);\n    var offsetX = (wrapperRect.width - nodeWidth * newScale) / 2;\n    var offsetY = (wrapperRect.height - nodeHeight * newScale) / 2;\n    var newPositionX = (wrapperRect.left - nodeLeft) * newScale + offsetX;\n    var newPositionY = (wrapperRect.top - nodeTop) * newScale + offsetY;\n    var bounds = calculateBounds(contextInstance, newScale);\n    var _b = getMouseBoundedPosition(newPositionX, newPositionY, bounds, limitToBounds, 0, 0, wrapperComponent), x = _b.x, y = _b.y;\n    return { positionX: x, positionY: y, scale: newScale };\n}\n\nvar zoomIn = function (contextInstance) {\n    return function (step, animationTime, animationType) {\n        if (step === void 0) { step = 0.5; }\n        if (animationTime === void 0) { animationTime = 300; }\n        if (animationType === void 0) { animationType = \"easeOut\"; }\n        handleZoomToViewCenter(contextInstance, 1, step, animationTime, animationType);\n    };\n};\nvar zoomOut = function (contextInstance) {\n    return function (step, animationTime, animationType) {\n        if (step === void 0) { step = 0.5; }\n        if (animationTime === void 0) { animationTime = 300; }\n        if (animationType === void 0) { animationType = \"easeOut\"; }\n        handleZoomToViewCenter(contextInstance, -1, step, animationTime, animationType);\n    };\n};\nvar setTransform = function (contextInstance) {\n    return function (newPositionX, newPositionY, newScale, animationTime, animationType) {\n        if (animationTime === void 0) { animationTime = 300; }\n        if (animationType === void 0) { animationType = \"easeOut\"; }\n        var _a = contextInstance.transformState, positionX = _a.positionX, positionY = _a.positionY, scale = _a.scale;\n        var wrapperComponent = contextInstance.wrapperComponent, contentComponent = contextInstance.contentComponent;\n        var disabled = contextInstance.setup.disabled;\n        if (disabled || !wrapperComponent || !contentComponent)\n            return;\n        var targetState = {\n            positionX: Number.isNaN(newPositionX) ? positionX : newPositionX,\n            positionY: Number.isNaN(newPositionY) ? positionY : newPositionY,\n            scale: Number.isNaN(newScale) ? scale : newScale,\n        };\n        animate(contextInstance, targetState, animationTime, animationType);\n    };\n};\nvar resetTransform = function (contextInstance) {\n    return function (animationTime, animationType) {\n        if (animationTime === void 0) { animationTime = 200; }\n        if (animationType === void 0) { animationType = \"easeOut\"; }\n        resetTransformations(contextInstance, animationTime, animationType);\n    };\n};\nvar centerView = function (contextInstance) {\n    return function (scale, animationTime, animationType) {\n        if (animationTime === void 0) { animationTime = 200; }\n        if (animationType === void 0) { animationType = \"easeOut\"; }\n        var transformState = contextInstance.transformState, wrapperComponent = contextInstance.wrapperComponent, contentComponent = contextInstance.contentComponent;\n        if (wrapperComponent && contentComponent) {\n            var targetState = getCenterPosition(scale || transformState.scale, wrapperComponent, contentComponent);\n            animate(contextInstance, targetState, animationTime, animationType);\n        }\n    };\n};\nvar zoomToElement = function (contextInstance) {\n    return function (node, scale, animationTime, animationType) {\n        if (animationTime === void 0) { animationTime = 600; }\n        if (animationType === void 0) { animationType = \"easeOut\"; }\n        handleCancelAnimation(contextInstance);\n        var wrapperComponent = contextInstance.wrapperComponent;\n        var target = typeof node === \"string\" ? document.getElementById(node) : node;\n        if (wrapperComponent && target && wrapperComponent.contains(target)) {\n            var targetState = calculateZoomToNode(contextInstance, target, scale);\n            animate(contextInstance, targetState, animationTime, animationType);\n        }\n    };\n};\n\nvar getControls = function (contextInstance) {\n    return {\n        instance: contextInstance,\n        zoomIn: zoomIn(contextInstance),\n        zoomOut: zoomOut(contextInstance),\n        setTransform: setTransform(contextInstance),\n        resetTransform: resetTransform(contextInstance),\n        centerView: centerView(contextInstance),\n        zoomToElement: zoomToElement(contextInstance),\n    };\n};\nvar getState = function (contextInstance) {\n    return {\n        instance: contextInstance,\n        state: contextInstance.transformState,\n    };\n};\nvar getContext = function (contextInstance) {\n    var ref = {};\n    Object.assign(ref, getState(contextInstance));\n    Object.assign(ref, getControls(contextInstance));\n    return ref;\n};\n\n// We want to make event listeners non-passive, and to do so have to check\n// that browsers support EventListenerOptions in the first place.\n// https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\nvar passiveSupported = false;\nfunction makePassiveEventOption() {\n    try {\n        var options = {\n            get passive() {\n                // This function will be called when the browser\n                //   attempts to access the passive property.\n                passiveSupported = true;\n                return false;\n            },\n        };\n        return options;\n    }\n    catch (err) {\n        passiveSupported = false;\n        return passiveSupported;\n    }\n}\n\nvar matchPrefix = \".\".concat(baseClasses.wrapperClass);\nvar isExcludedNode = function (node, excluded) {\n    return excluded.some(function (exclude) {\n        return node.matches(\"\".concat(matchPrefix, \" \").concat(exclude, \", \").concat(matchPrefix, \" .\").concat(exclude, \", \").concat(matchPrefix, \" \").concat(exclude, \" *, \").concat(matchPrefix, \" .\").concat(exclude, \" *\"));\n    });\n};\nvar cancelTimeout = function (timeout) {\n    if (timeout) {\n        clearTimeout(timeout);\n    }\n};\n\nvar getTransformStyles = function (x, y, scale) {\n    // Standard translate prevents blurry svg on the safari\n    return \"translate(\".concat(x, \"px, \").concat(y, \"px) scale(\").concat(scale, \")\");\n};\nvar getMatrixTransformStyles = function (x, y, scale) {\n    // The shorthand for matrix does not work for Safari hence the need to explicitly use matrix3d\n    // Refer to https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/matrix\n    var a = scale;\n    var b = 0;\n    var c = 0;\n    var d = scale;\n    var tx = x;\n    var ty = y;\n    return \"matrix3d(\".concat(a, \", \").concat(b, \", 0, 0, \").concat(c, \", \").concat(d, \", 0, 0, 0, 0, 1, 0, \").concat(tx, \", \").concat(ty, \", 0, 1)\");\n};\nvar getCenterPosition = function (scale, wrapperComponent, contentComponent) {\n    var contentWidth = contentComponent.offsetWidth * scale;\n    var contentHeight = contentComponent.offsetHeight * scale;\n    var centerPositionX = (wrapperComponent.offsetWidth - contentWidth) / 2;\n    var centerPositionY = (wrapperComponent.offsetHeight - contentHeight) / 2;\n    return {\n        scale: scale,\n        positionX: centerPositionX,\n        positionY: centerPositionY,\n    };\n};\n\nfunction mergeRefs(refs) {\n    return function (value) {\n        refs.forEach(function (ref) {\n            if (typeof ref === \"function\") {\n                ref(value);\n            }\n            else if (ref != null) {\n                ref.current = value;\n            }\n        });\n    };\n}\n\nvar isWheelAllowed = function (contextInstance, event) {\n    var _a = contextInstance.setup.wheel, disabled = _a.disabled, wheelDisabled = _a.wheelDisabled, touchPadDisabled = _a.touchPadDisabled, excluded = _a.excluded;\n    var isInitialized = contextInstance.isInitialized, isPanning = contextInstance.isPanning;\n    var target = event.target;\n    var isAllowed = isInitialized && !isPanning && !disabled && target;\n    if (!isAllowed)\n        return false;\n    // Event ctrlKey detects if touchpad action is executing wheel or pinch gesture\n    if (wheelDisabled && !event.ctrlKey)\n        return false;\n    if (touchPadDisabled && event.ctrlKey)\n        return false;\n    var isExcluded = isExcludedNode(target, excluded);\n    if (isExcluded)\n        return false;\n    return true;\n};\nvar getDeltaY = function (event) {\n    if (event) {\n        return event.deltaY < 0 ? 1 : -1;\n    }\n    return 0;\n};\nfunction getDelta(event, customDelta) {\n    var deltaY = getDeltaY(event);\n    var delta = checkIsNumber(customDelta, deltaY);\n    return delta;\n}\nfunction getMousePosition(event, contentComponent, scale) {\n    var contentRect = contentComponent.getBoundingClientRect();\n    var mouseX = 0;\n    var mouseY = 0;\n    if (\"clientX\" in event) {\n        // mouse position x, y over wrapper component\n        mouseX = (event.clientX - contentRect.left) / scale;\n        mouseY = (event.clientY - contentRect.top) / scale;\n    }\n    else {\n        var touch = event.touches[0];\n        mouseX = (touch.clientX - contentRect.left) / scale;\n        mouseY = (touch.clientY - contentRect.top) / scale;\n    }\n    if (Number.isNaN(mouseX) || Number.isNaN(mouseY))\n        console.error(\"No mouse or touch offset found\");\n    return {\n        x: mouseX,\n        y: mouseY,\n    };\n}\nvar handleCalculateWheelZoom = function (contextInstance, delta, step, disable, getTarget) {\n    var scale = contextInstance.transformState.scale;\n    var wrapperComponent = contextInstance.wrapperComponent, setup = contextInstance.setup;\n    var maxScale = setup.maxScale, minScale = setup.minScale, zoomAnimation = setup.zoomAnimation, disablePadding = setup.disablePadding;\n    var size = zoomAnimation.size, disabled = zoomAnimation.disabled;\n    if (!wrapperComponent) {\n        throw new Error(\"Wrapper is not mounted\");\n    }\n    var targetScale = scale + delta * step;\n    if (getTarget)\n        return targetScale;\n    var paddingEnabled = disable ? false : !disabled;\n    var newScale = checkZoomBounds(roundNumber(targetScale, 3), minScale, maxScale, size, paddingEnabled && !disablePadding);\n    return newScale;\n};\nvar handleWheelZoomStop = function (contextInstance, event) {\n    var previousWheelEvent = contextInstance.previousWheelEvent;\n    var scale = contextInstance.transformState.scale;\n    var _a = contextInstance.setup, maxScale = _a.maxScale, minScale = _a.minScale;\n    if (!previousWheelEvent)\n        return false;\n    if (scale < maxScale || scale > minScale)\n        return true;\n    if (Math.sign(previousWheelEvent.deltaY) !== Math.sign(event.deltaY))\n        return true;\n    if (previousWheelEvent.deltaY > 0 && previousWheelEvent.deltaY < event.deltaY)\n        return true;\n    if (previousWheelEvent.deltaY < 0 && previousWheelEvent.deltaY > event.deltaY)\n        return true;\n    if (Math.sign(previousWheelEvent.deltaY) !== Math.sign(event.deltaY))\n        return true;\n    return false;\n};\n\nvar isPinchStartAllowed = function (contextInstance, event) {\n    var _a = contextInstance.setup.pinch, disabled = _a.disabled, excluded = _a.excluded;\n    var isInitialized = contextInstance.isInitialized;\n    var target = event.target;\n    var isAllowed = isInitialized && !disabled && target;\n    if (!isAllowed)\n        return false;\n    var isExcluded = isExcludedNode(target, excluded);\n    if (isExcluded)\n        return false;\n    return true;\n};\nvar isPinchAllowed = function (contextInstance) {\n    var disabled = contextInstance.setup.pinch.disabled;\n    var isInitialized = contextInstance.isInitialized, pinchStartDistance = contextInstance.pinchStartDistance;\n    var isAllowed = isInitialized && !disabled && pinchStartDistance;\n    if (!isAllowed)\n        return false;\n    return true;\n};\nvar calculateTouchMidPoint = function (event, scale, contentComponent) {\n    var contentRect = contentComponent.getBoundingClientRect();\n    var touches = event.touches;\n    var firstPointX = roundNumber(touches[0].clientX - contentRect.left, 5);\n    var firstPointY = roundNumber(touches[0].clientY - contentRect.top, 5);\n    var secondPointX = roundNumber(touches[1].clientX - contentRect.left, 5);\n    var secondPointY = roundNumber(touches[1].clientY - contentRect.top, 5);\n    return {\n        x: (firstPointX + secondPointX) / 2 / scale,\n        y: (firstPointY + secondPointY) / 2 / scale,\n    };\n};\nvar getTouchDistance = function (event) {\n    return Math.sqrt(Math.pow((event.touches[0].pageX - event.touches[1].pageX), 2) +\n        Math.pow((event.touches[0].pageY - event.touches[1].pageY), 2));\n};\nvar calculatePinchZoom = function (contextInstance, currentDistance) {\n    var pinchStartScale = contextInstance.pinchStartScale, pinchStartDistance = contextInstance.pinchStartDistance, setup = contextInstance.setup;\n    var maxScale = setup.maxScale, minScale = setup.minScale, zoomAnimation = setup.zoomAnimation, disablePadding = setup.disablePadding;\n    var size = zoomAnimation.size, disabled = zoomAnimation.disabled;\n    if (!pinchStartScale || pinchStartDistance === null || !currentDistance) {\n        throw new Error(\"Pinch touches distance was not provided\");\n    }\n    if (currentDistance < 0) {\n        return contextInstance.transformState.scale;\n    }\n    var touchProportion = currentDistance / pinchStartDistance;\n    var scaleDifference = touchProportion * pinchStartScale;\n    return checkZoomBounds(roundNumber(scaleDifference, 2), minScale, maxScale, size, !disabled && !disablePadding);\n};\n\nvar wheelStopEventTime = 160;\nvar wheelAnimationTime = 100;\nvar handleWheelStart = function (contextInstance, event) {\n    var _a = contextInstance.props, onWheelStart = _a.onWheelStart, onZoomStart = _a.onZoomStart;\n    if (!contextInstance.wheelStopEventTimer) {\n        handleCancelAnimation(contextInstance);\n        handleCallback(getContext(contextInstance), event, onWheelStart);\n        handleCallback(getContext(contextInstance), event, onZoomStart);\n    }\n};\nvar handleWheelZoom = function (contextInstance, event) {\n    var _a = contextInstance.props, onWheel = _a.onWheel, onZoom = _a.onZoom;\n    var contentComponent = contextInstance.contentComponent, setup = contextInstance.setup, transformState = contextInstance.transformState;\n    var scale = transformState.scale;\n    var limitToBounds = setup.limitToBounds, centerZoomedOut = setup.centerZoomedOut, zoomAnimation = setup.zoomAnimation, wheel = setup.wheel, disablePadding = setup.disablePadding, smooth = setup.smooth;\n    var size = zoomAnimation.size, disabled = zoomAnimation.disabled;\n    var step = wheel.step, smoothStep = wheel.smoothStep;\n    if (!contentComponent) {\n        throw new Error(\"Component not mounted\");\n    }\n    event.preventDefault();\n    event.stopPropagation();\n    var delta = getDelta(event, null);\n    var zoomStep = smooth ? smoothStep * Math.abs(event.deltaY) : step;\n    var newScale = handleCalculateWheelZoom(contextInstance, delta, zoomStep, !event.ctrlKey);\n    // if scale not change\n    if (scale === newScale)\n        return;\n    var bounds = handleCalculateBounds(contextInstance, newScale);\n    var mousePosition = getMousePosition(event, contentComponent, scale);\n    var isPaddingDisabled = disabled || size === 0 || centerZoomedOut || disablePadding;\n    var isLimitedToBounds = limitToBounds && isPaddingDisabled;\n    var _b = handleCalculateZoomPositions(contextInstance, mousePosition.x, mousePosition.y, newScale, bounds, isLimitedToBounds), x = _b.x, y = _b.y;\n    contextInstance.previousWheelEvent = event;\n    contextInstance.setTransformState(newScale, x, y);\n    handleCallback(getContext(contextInstance), event, onWheel);\n    handleCallback(getContext(contextInstance), event, onZoom);\n};\nvar handleWheelStop = function (contextInstance, event) {\n    var _a = contextInstance.props, onWheelStop = _a.onWheelStop, onZoomStop = _a.onZoomStop;\n    // fire animation\n    cancelTimeout(contextInstance.wheelAnimationTimer);\n    contextInstance.wheelAnimationTimer = setTimeout(function () {\n        if (!contextInstance.mounted)\n            return;\n        handleAlignToScaleBounds(contextInstance, event.x, event.y);\n        contextInstance.wheelAnimationTimer = null;\n    }, wheelAnimationTime);\n    // Wheel stop event\n    var hasStoppedZooming = handleWheelZoomStop(contextInstance, event);\n    if (hasStoppedZooming) {\n        cancelTimeout(contextInstance.wheelStopEventTimer);\n        contextInstance.wheelStopEventTimer = setTimeout(function () {\n            if (!contextInstance.mounted)\n                return;\n            contextInstance.wheelStopEventTimer = null;\n            handleCallback(getContext(contextInstance), event, onWheelStop);\n            handleCallback(getContext(contextInstance), event, onZoomStop);\n        }, wheelStopEventTime);\n    }\n};\n\nvar getTouchCenter = function (event) {\n    var totalX = 0;\n    var totalY = 0;\n    // Sum up the positions of all touches\n    for (var i = 0; i < 2; i += 1) {\n        totalX += event.touches[i].clientX;\n        totalY += event.touches[i].clientY;\n    }\n    // Calculate the average position\n    var x = totalX / 2;\n    var y = totalY / 2;\n    return { x: x, y: y };\n};\nvar handlePinchStart = function (contextInstance, event) {\n    var distance = getTouchDistance(event);\n    contextInstance.pinchStartDistance = distance;\n    contextInstance.lastDistance = distance;\n    contextInstance.pinchStartScale = contextInstance.transformState.scale;\n    contextInstance.isPanning = false;\n    var center = getTouchCenter(event);\n    contextInstance.pinchLastCenterX = center.x;\n    contextInstance.pinchLastCenterY = center.y;\n    handleCancelAnimation(contextInstance);\n};\nvar handlePinchZoom = function (contextInstance, event) {\n    var contentComponent = contextInstance.contentComponent, pinchStartDistance = contextInstance.pinchStartDistance, wrapperComponent = contextInstance.wrapperComponent;\n    var scale = contextInstance.transformState.scale;\n    var _a = contextInstance.setup, limitToBounds = _a.limitToBounds, centerZoomedOut = _a.centerZoomedOut, zoomAnimation = _a.zoomAnimation, alignmentAnimation = _a.alignmentAnimation;\n    var disabled = zoomAnimation.disabled, size = zoomAnimation.size;\n    // if one finger starts from outside of wrapper\n    if (pinchStartDistance === null || !contentComponent)\n        return;\n    var midPoint = calculateTouchMidPoint(event, scale, contentComponent);\n    // if touches goes off of the wrapper element\n    if (!Number.isFinite(midPoint.x) || !Number.isFinite(midPoint.y))\n        return;\n    var currentDistance = getTouchDistance(event);\n    var newScale = calculatePinchZoom(contextInstance, currentDistance);\n    var center = getTouchCenter(event);\n    // pan should be scale invariant.\n    var panX = center.x - (contextInstance.pinchLastCenterX || 0);\n    var panY = center.y - (contextInstance.pinchLastCenterY || 0);\n    if (newScale === scale && panX === 0 && panY === 0)\n        return;\n    contextInstance.pinchLastCenterX = center.x;\n    contextInstance.pinchLastCenterY = center.y;\n    var bounds = handleCalculateBounds(contextInstance, newScale);\n    var isPaddingDisabled = disabled || size === 0 || centerZoomedOut;\n    var isLimitedToBounds = limitToBounds && isPaddingDisabled;\n    var _b = handleCalculateZoomPositions(contextInstance, midPoint.x, midPoint.y, newScale, bounds, isLimitedToBounds), x = _b.x, y = _b.y;\n    contextInstance.pinchMidpoint = midPoint;\n    contextInstance.lastDistance = currentDistance;\n    var sizeX = alignmentAnimation.sizeX, sizeY = alignmentAnimation.sizeY;\n    var paddingValueX = getPaddingValue(contextInstance, sizeX);\n    var paddingValueY = getPaddingValue(contextInstance, sizeY);\n    var newPositionX = x + panX;\n    var newPositionY = y + panY;\n    var _c = getMouseBoundedPosition(newPositionX, newPositionY, bounds, limitToBounds, paddingValueX, paddingValueY, wrapperComponent), finalX = _c.x, finalY = _c.y;\n    contextInstance.setTransformState(newScale, finalX, finalY);\n};\nvar handlePinchStop = function (contextInstance) {\n    var pinchMidpoint = contextInstance.pinchMidpoint;\n    contextInstance.velocity = null;\n    contextInstance.lastDistance = null;\n    contextInstance.pinchMidpoint = null;\n    contextInstance.pinchStartScale = null;\n    contextInstance.pinchStartDistance = null;\n    handleAlignToScaleBounds(contextInstance, pinchMidpoint === null || pinchMidpoint === void 0 ? void 0 : pinchMidpoint.x, pinchMidpoint === null || pinchMidpoint === void 0 ? void 0 : pinchMidpoint.y);\n};\n\nvar handleDoubleClickStop = function (contextInstance, event) {\n    var onZoomStop = contextInstance.props.onZoomStop;\n    var animationTime = contextInstance.setup.doubleClick.animationTime;\n    cancelTimeout(contextInstance.doubleClickStopEventTimer);\n    contextInstance.doubleClickStopEventTimer = setTimeout(function () {\n        contextInstance.doubleClickStopEventTimer = null;\n        handleCallback(getContext(contextInstance), event, onZoomStop);\n    }, animationTime);\n};\nvar handleDoubleClickResetMode = function (contextInstance, event) {\n    var _a = contextInstance.props, onZoomStart = _a.onZoomStart, onZoom = _a.onZoom;\n    var _b = contextInstance.setup.doubleClick, animationTime = _b.animationTime, animationType = _b.animationType;\n    handleCallback(getContext(contextInstance), event, onZoomStart);\n    resetTransformations(contextInstance, animationTime, animationType, function () {\n        return handleCallback(getContext(contextInstance), event, onZoom);\n    });\n    handleDoubleClickStop(contextInstance, event);\n};\nfunction getDoubleClickScale(mode, scale) {\n    if (mode === \"toggle\") {\n        return scale === 1 ? 1 : -1;\n    }\n    return mode === \"zoomOut\" ? -1 : 1;\n}\nfunction handleDoubleClick(contextInstance, event) {\n    var setup = contextInstance.setup, doubleClickStopEventTimer = contextInstance.doubleClickStopEventTimer, transformState = contextInstance.transformState, contentComponent = contextInstance.contentComponent;\n    var scale = transformState.scale;\n    var _a = contextInstance.props, onZoomStart = _a.onZoomStart, onZoom = _a.onZoom;\n    var _b = setup.doubleClick, disabled = _b.disabled, mode = _b.mode, step = _b.step, animationTime = _b.animationTime, animationType = _b.animationType;\n    if (disabled)\n        return;\n    if (doubleClickStopEventTimer)\n        return;\n    if (mode === \"reset\") {\n        return handleDoubleClickResetMode(contextInstance, event);\n    }\n    if (!contentComponent)\n        return console.error(\"No ContentComponent found\");\n    var delta = getDoubleClickScale(mode, contextInstance.transformState.scale);\n    var newScale = handleCalculateButtonZoom(contextInstance, delta, step);\n    // stop execution when scale didn't change\n    if (scale === newScale)\n        return;\n    handleCallback(getContext(contextInstance), event, onZoomStart);\n    var mousePosition = getMousePosition(event, contentComponent, scale);\n    var targetState = handleZoomToPoint(contextInstance, newScale, mousePosition.x, mousePosition.y);\n    if (!targetState) {\n        return console.error(\"Error during zoom event. New transformation state was not calculated.\");\n    }\n    handleCallback(getContext(contextInstance), event, onZoom);\n    animate(contextInstance, targetState, animationTime, animationType);\n    handleDoubleClickStop(contextInstance, event);\n}\nvar isDoubleClickAllowed = function (contextInstance, event) {\n    var isInitialized = contextInstance.isInitialized, setup = contextInstance.setup, wrapperComponent = contextInstance.wrapperComponent;\n    var _a = setup.doubleClick, disabled = _a.disabled, excluded = _a.excluded;\n    var target = event.target;\n    var isWrapperChild = wrapperComponent === null || wrapperComponent === void 0 ? void 0 : wrapperComponent.contains(target);\n    var isAllowed = isInitialized && target && isWrapperChild && !disabled;\n    if (!isAllowed)\n        return false;\n    var isExcluded = isExcludedNode(target, excluded);\n    if (isExcluded)\n        return false;\n    return true;\n};\n\nvar ZoomPanPinch = /** @class */ (function () {\n    function ZoomPanPinch(props) {\n        var _this = this;\n        this.mounted = true;\n        this.pinchLastCenterX = null;\n        this.pinchLastCenterY = null;\n        this.onChangeCallbacks = new Set();\n        this.onInitCallbacks = new Set();\n        // Components\n        this.wrapperComponent = null;\n        this.contentComponent = null;\n        // Initialization\n        this.isInitialized = false;\n        this.bounds = null;\n        // wheel helpers\n        this.previousWheelEvent = null;\n        this.wheelStopEventTimer = null;\n        this.wheelAnimationTimer = null;\n        // panning helpers\n        this.isPanning = false;\n        this.isWheelPanning = false;\n        this.startCoords = null;\n        this.lastTouch = null;\n        // pinch helpers\n        this.distance = null;\n        this.lastDistance = null;\n        this.pinchStartDistance = null;\n        this.pinchStartScale = null;\n        this.pinchMidpoint = null;\n        // double click helpers\n        this.doubleClickStopEventTimer = null;\n        // velocity helpers\n        this.velocity = null;\n        this.velocityTime = null;\n        this.lastMousePosition = null;\n        // animations helpers\n        this.animate = false;\n        this.animation = null;\n        this.maxBounds = null;\n        // key press\n        this.pressedKeys = {};\n        this.mount = function () {\n            _this.initializeWindowEvents();\n        };\n        this.unmount = function () {\n            _this.cleanupWindowEvents();\n        };\n        this.update = function (newProps) {\n            _this.props = newProps;\n            handleCalculateBounds(_this, _this.transformState.scale);\n            _this.setup = createSetup(newProps);\n        };\n        this.initializeWindowEvents = function () {\n            var _a, _b;\n            var passive = makePassiveEventOption();\n            var currentDocument = (_a = _this.wrapperComponent) === null || _a === void 0 ? void 0 : _a.ownerDocument;\n            var currentWindow = currentDocument === null || currentDocument === void 0 ? void 0 : currentDocument.defaultView;\n            (_b = _this.wrapperComponent) === null || _b === void 0 ? void 0 : _b.addEventListener(\"wheel\", _this.onWheelPanning, passive);\n            // Panning on window to allow panning when mouse is out of component wrapper\n            currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.addEventListener(\"mousedown\", _this.onPanningStart, passive);\n            currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.addEventListener(\"mousemove\", _this.onPanning, passive);\n            currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.addEventListener(\"mouseup\", _this.onPanningStop, passive);\n            currentDocument === null || currentDocument === void 0 ? void 0 : currentDocument.addEventListener(\"mouseleave\", _this.clearPanning, passive);\n            currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.addEventListener(\"keyup\", _this.setKeyUnPressed, passive);\n            currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.addEventListener(\"keydown\", _this.setKeyPressed, passive);\n        };\n        this.cleanupWindowEvents = function () {\n            var _a, _b;\n            var passive = makePassiveEventOption();\n            var currentDocument = (_a = _this.wrapperComponent) === null || _a === void 0 ? void 0 : _a.ownerDocument;\n            var currentWindow = currentDocument === null || currentDocument === void 0 ? void 0 : currentDocument.defaultView;\n            currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.removeEventListener(\"mousedown\", _this.onPanningStart, passive);\n            currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.removeEventListener(\"mousemove\", _this.onPanning, passive);\n            currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.removeEventListener(\"mouseup\", _this.onPanningStop, passive);\n            currentDocument === null || currentDocument === void 0 ? void 0 : currentDocument.removeEventListener(\"mouseleave\", _this.clearPanning, passive);\n            currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.removeEventListener(\"keyup\", _this.setKeyUnPressed, passive);\n            currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.removeEventListener(\"keydown\", _this.setKeyPressed, passive);\n            document.removeEventListener(\"mouseleave\", _this.clearPanning, passive);\n            handleCancelAnimation(_this);\n            (_b = _this.observer) === null || _b === void 0 ? void 0 : _b.disconnect();\n        };\n        this.handleInitializeWrapperEvents = function (wrapper) {\n            // Zooming events on wrapper\n            var passive = makePassiveEventOption();\n            wrapper.addEventListener(\"wheel\", _this.onWheelZoom, passive);\n            wrapper.addEventListener(\"dblclick\", _this.onDoubleClick, passive);\n            wrapper.addEventListener(\"touchstart\", _this.onTouchPanningStart, passive);\n            wrapper.addEventListener(\"touchmove\", _this.onTouchPanning, passive);\n            wrapper.addEventListener(\"touchend\", _this.onTouchPanningStop, passive);\n        };\n        this.handleInitialize = function (wrapper, contentComponent) {\n            var isCentered = false;\n            var centerOnInit = _this.setup.centerOnInit;\n            var hasTarget = function (entries, target) {\n                // eslint-disable-next-line no-restricted-syntax\n                for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n                    var entry = entries_1[_i];\n                    if (entry.target === target) {\n                        return true;\n                    }\n                }\n                return false;\n            };\n            _this.applyTransformation();\n            _this.onInitCallbacks.forEach(function (callback) {\n                callback(getContext(_this));\n            });\n            _this.observer = new ResizeObserver(function (entries) {\n                if (hasTarget(entries, wrapper) || hasTarget(entries, contentComponent)) {\n                    if (centerOnInit && !isCentered) {\n                        var currentWidth = contentComponent.offsetWidth;\n                        var currentHeight = contentComponent.offsetHeight;\n                        if (currentWidth > 0 || currentHeight > 0) {\n                            isCentered = true;\n                            _this.setCenter();\n                        }\n                    }\n                    else {\n                        handleCancelAnimation(_this);\n                        handleCalculateBounds(_this, _this.transformState.scale);\n                        handleAlignToBounds(_this, 0);\n                    }\n                }\n            });\n            // Start observing the target node for configured mutations\n            _this.observer.observe(wrapper);\n            _this.observer.observe(contentComponent);\n        };\n        /// ///////\n        // Zoom\n        /// ///////\n        this.onWheelZoom = function (event) {\n            var disabled = _this.setup.disabled;\n            if (disabled)\n                return;\n            var isAllowed = isWheelAllowed(_this, event);\n            if (!isAllowed)\n                return;\n            var keysPressed = _this.isPressingKeys(_this.setup.wheel.activationKeys);\n            if (!keysPressed)\n                return;\n            handleWheelStart(_this, event);\n            handleWheelZoom(_this, event);\n            handleWheelStop(_this, event);\n        };\n        /// ///////\n        // Pan\n        /// ///////\n        this.onWheelPanning = function (event) {\n            var _a = _this.setup, disabled = _a.disabled, wheel = _a.wheel, panning = _a.panning;\n            if (!_this.wrapperComponent ||\n                !_this.contentComponent ||\n                disabled ||\n                !wheel.wheelDisabled ||\n                panning.disabled ||\n                !panning.wheelPanning ||\n                event.ctrlKey) {\n                return;\n            }\n            event.preventDefault();\n            event.stopPropagation();\n            var _b = _this.transformState, positionX = _b.positionX, positionY = _b.positionY;\n            var mouseX = positionX - event.deltaX;\n            var mouseY = positionY - event.deltaY;\n            var newPositionX = panning.lockAxisX ? positionX : mouseX;\n            var newPositionY = panning.lockAxisY ? positionY : mouseY;\n            var _c = _this.setup.alignmentAnimation, sizeX = _c.sizeX, sizeY = _c.sizeY;\n            var paddingValueX = getPaddingValue(_this, sizeX);\n            var paddingValueY = getPaddingValue(_this, sizeY);\n            if (newPositionX === positionX && newPositionY === positionY)\n                return;\n            handleNewPosition(_this, newPositionX, newPositionY, paddingValueX, paddingValueY);\n        };\n        this.onPanningStart = function (event) {\n            var disabled = _this.setup.disabled;\n            var onPanningStart = _this.props.onPanningStart;\n            if (disabled)\n                return;\n            var isAllowed = isPanningStartAllowed(_this, event);\n            if (!isAllowed)\n                return;\n            var keysPressed = _this.isPressingKeys(_this.setup.panning.activationKeys);\n            if (!keysPressed)\n                return;\n            if (event.button === 0 && !_this.setup.panning.allowLeftClickPan)\n                return;\n            if (event.button === 1 && !_this.setup.panning.allowMiddleClickPan)\n                return;\n            if (event.button === 2 && !_this.setup.panning.allowRightClickPan)\n                return;\n            event.preventDefault();\n            event.stopPropagation();\n            handleCancelAnimation(_this);\n            handlePanningStart(_this, event);\n            handleCallback(getContext(_this), event, onPanningStart);\n        };\n        this.onPanning = function (event) {\n            var disabled = _this.setup.disabled;\n            var onPanning = _this.props.onPanning;\n            if (disabled)\n                return;\n            var isAllowed = isPanningAllowed(_this);\n            if (!isAllowed)\n                return;\n            var keysPressed = _this.isPressingKeys(_this.setup.panning.activationKeys);\n            if (!keysPressed)\n                return;\n            event.preventDefault();\n            event.stopPropagation();\n            handlePanning(_this, event.clientX, event.clientY);\n            handleCallback(getContext(_this), event, onPanning);\n        };\n        this.onPanningStop = function (event) {\n            var onPanningStop = _this.props.onPanningStop;\n            if (_this.isPanning) {\n                handlePanningEnd(_this);\n                handleCallback(getContext(_this), event, onPanningStop);\n            }\n        };\n        /// ///////\n        // Pinch\n        /// ///////\n        this.onPinchStart = function (event) {\n            var disabled = _this.setup.disabled;\n            var _a = _this.props, onPinchingStart = _a.onPinchingStart, onZoomStart = _a.onZoomStart;\n            if (disabled)\n                return;\n            var isAllowed = isPinchStartAllowed(_this, event);\n            if (!isAllowed)\n                return;\n            handlePinchStart(_this, event);\n            handleCancelAnimation(_this);\n            handleCallback(getContext(_this), event, onPinchingStart);\n            handleCallback(getContext(_this), event, onZoomStart);\n        };\n        this.onPinch = function (event) {\n            var disabled = _this.setup.disabled;\n            var _a = _this.props, onPinching = _a.onPinching, onZoom = _a.onZoom;\n            if (disabled)\n                return;\n            var isAllowed = isPinchAllowed(_this);\n            if (!isAllowed)\n                return;\n            event.preventDefault();\n            event.stopPropagation();\n            handlePinchZoom(_this, event);\n            handleCallback(getContext(_this), event, onPinching);\n            handleCallback(getContext(_this), event, onZoom);\n        };\n        this.onPinchStop = function (event) {\n            var _a = _this.props, onPinchingStop = _a.onPinchingStop, onZoomStop = _a.onZoomStop;\n            if (_this.pinchStartScale) {\n                handlePinchStop(_this);\n                handleCallback(getContext(_this), event, onPinchingStop);\n                handleCallback(getContext(_this), event, onZoomStop);\n            }\n        };\n        /// ///////\n        // Touch\n        /// ///////\n        this.onTouchPanningStart = function (event) {\n            var disabled = _this.setup.disabled;\n            var onPanningStart = _this.props.onPanningStart;\n            if (disabled)\n                return;\n            var isAllowed = isPanningStartAllowed(_this, event);\n            if (!isAllowed)\n                return;\n            var isDoubleTap = _this.lastTouch &&\n                +new Date() - _this.lastTouch < 200 &&\n                event.touches.length === 1;\n            if (!isDoubleTap) {\n                _this.lastTouch = +new Date();\n                handleCancelAnimation(_this);\n                var touches = event.touches;\n                var isPanningAction = touches.length === 1;\n                var isPinchAction = touches.length === 2;\n                if (isPanningAction) {\n                    handleCancelAnimation(_this);\n                    handlePanningStart(_this, event);\n                    handleCallback(getContext(_this), event, onPanningStart);\n                }\n                if (isPinchAction) {\n                    _this.onPinchStart(event);\n                }\n            }\n        };\n        this.onTouchPanning = function (event) {\n            var disabled = _this.setup.disabled;\n            var onPanning = _this.props.onPanning;\n            if (_this.isPanning && event.touches.length === 1) {\n                if (disabled)\n                    return;\n                var isAllowed = isPanningAllowed(_this);\n                if (!isAllowed)\n                    return;\n                event.preventDefault();\n                event.stopPropagation();\n                var touch = event.touches[0];\n                handlePanning(_this, touch.clientX, touch.clientY);\n                handleCallback(getContext(_this), event, onPanning);\n            }\n            else if (event.touches.length > 1) {\n                _this.onPinch(event);\n            }\n        };\n        this.onTouchPanningStop = function (event) {\n            _this.onPanningStop(event);\n            _this.onPinchStop(event);\n        };\n        /// ///////\n        // Double Click\n        /// ///////\n        this.onDoubleClick = function (event) {\n            var disabled = _this.setup.disabled;\n            if (disabled)\n                return;\n            var isAllowed = isDoubleClickAllowed(_this, event);\n            if (!isAllowed)\n                return;\n            handleDoubleClick(_this, event);\n        };\n        /// ///////\n        // Helpers\n        /// ///////\n        this.clearPanning = function (event) {\n            if (_this.isPanning) {\n                _this.onPanningStop(event);\n            }\n        };\n        this.setKeyPressed = function (e) {\n            _this.pressedKeys[e.key] = true;\n        };\n        this.setKeyUnPressed = function (e) {\n            _this.pressedKeys[e.key] = false;\n        };\n        this.isPressingKeys = function (keys) {\n            if (!keys.length) {\n                return true;\n            }\n            return Boolean(keys.find(function (key) { return _this.pressedKeys[key]; }));\n        };\n        this.setTransformState = function (scale, positionX, positionY) {\n            var onTransformed = _this.props.onTransformed;\n            if (!Number.isNaN(scale) &&\n                !Number.isNaN(positionX) &&\n                !Number.isNaN(positionY)) {\n                if (scale !== _this.transformState.scale) {\n                    _this.transformState.previousScale = _this.transformState.scale;\n                    _this.transformState.scale = scale;\n                }\n                _this.transformState.positionX = positionX;\n                _this.transformState.positionY = positionY;\n                _this.applyTransformation();\n                var ctx_1 = getContext(_this);\n                _this.onChangeCallbacks.forEach(function (callback) { return callback(ctx_1); });\n                handleCallback(ctx_1, { scale: scale, positionX: positionX, positionY: positionY }, onTransformed);\n            }\n            else {\n                console.error(\"Detected NaN set state values\");\n            }\n        };\n        this.setCenter = function () {\n            if (_this.wrapperComponent && _this.contentComponent) {\n                var targetState = getCenterPosition(_this.transformState.scale, _this.wrapperComponent, _this.contentComponent);\n                _this.setTransformState(targetState.scale, targetState.positionX, targetState.positionY);\n            }\n        };\n        this.handleTransformStyles = function (x, y, scale) {\n            if (_this.props.customTransform) {\n                return _this.props.customTransform(x, y, scale);\n            }\n            return getTransformStyles(x, y, scale);\n        };\n        this.applyTransformation = function () {\n            if (!_this.mounted || !_this.contentComponent)\n                return;\n            var _a = _this.transformState, scale = _a.scale, positionX = _a.positionX, positionY = _a.positionY;\n            var transform = _this.handleTransformStyles(positionX, positionY, scale);\n            _this.contentComponent.style.transform = transform;\n        };\n        this.getContext = function () {\n            return getContext(_this);\n        };\n        /**\n         * Hooks\n         */\n        this.onChange = function (callback) {\n            if (!_this.onChangeCallbacks.has(callback)) {\n                _this.onChangeCallbacks.add(callback);\n            }\n            return function () {\n                _this.onChangeCallbacks.delete(callback);\n            };\n        };\n        this.onInit = function (callback) {\n            if (!_this.onInitCallbacks.has(callback)) {\n                _this.onInitCallbacks.add(callback);\n            }\n            return function () {\n                _this.onInitCallbacks.delete(callback);\n            };\n        };\n        /**\n         * Initialization\n         */\n        this.init = function (wrapperComponent, contentComponent) {\n            _this.cleanupWindowEvents();\n            _this.wrapperComponent = wrapperComponent;\n            _this.contentComponent = contentComponent;\n            handleCalculateBounds(_this, _this.transformState.scale);\n            _this.handleInitializeWrapperEvents(wrapperComponent);\n            _this.handleInitialize(wrapperComponent, contentComponent);\n            _this.initializeWindowEvents();\n            _this.isInitialized = true;\n            var ctx = getContext(_this);\n            handleCallback(ctx, undefined, _this.props.onInit);\n        };\n        this.props = props;\n        this.setup = createSetup(this.props);\n        this.transformState = createState(this.props);\n    }\n    return ZoomPanPinch;\n}());\n\nvar Context = React.createContext(null);\nvar getContent = function (children, ctx) {\n    if (typeof children === \"function\") {\n        return children(ctx);\n    }\n    return children;\n};\nvar TransformWrapper = React.forwardRef(function (props, ref) {\n    var instance = useRef(new ZoomPanPinch(props)).current;\n    var content = getContent(props.children, getControls(instance));\n    useImperativeHandle(ref, function () { return getControls(instance); }, [instance]);\n    useEffect(function () {\n        instance.update(props);\n    }, [instance, props]);\n    return React.createElement(Context.Provider, { value: instance }, content);\n});\n\nvar KeepScale = React.forwardRef(function (props, ref) {\n    var localRef = useRef(null);\n    var instance = useContext(Context);\n    useEffect(function () {\n        return instance.onChange(function (ctx) {\n            if (localRef.current) {\n                var positionX = 0;\n                var positionY = 0;\n                localRef.current.style.transform = instance.handleTransformStyles(positionX, positionY, 1 / ctx.instance.transformState.scale);\n            }\n        });\n    }, [instance]);\n    return React.createElement(\"div\", __assign({}, props, { ref: mergeRefs([localRef, ref]) }));\n});\n\nvar initialElementRect = {\n    width: 0,\n    height: 0,\n    y: 0,\n    x: 0,\n    top: 0,\n    bottom: 0,\n    left: 0,\n    right: 0,\n};\nvar useResize = function (ref, onResize, dependencies) {\n    var resizeObserverRef = useRef();\n    var rectRef = useRef(initialElementRect);\n    var didUnmount = useRef(false);\n    useLayoutEffect(function () {\n        var _a;\n        didUnmount.current = false;\n        if (!(\"ResizeObserver\" in window)) {\n            return;\n        }\n        if (ref) {\n            resizeObserverRef.current = new ResizeObserver(function (entries) {\n                var newSize = ref.getBoundingClientRect();\n                if (!Array.isArray(entries) ||\n                    !entries.length ||\n                    didUnmount.current ||\n                    (newSize.width === rectRef.current.width &&\n                        newSize.height === rectRef.current.height))\n                    return;\n                onResize(newSize, ref);\n                rectRef.current = newSize;\n            });\n            (_a = resizeObserverRef.current) === null || _a === void 0 ? void 0 : _a.observe(ref);\n        }\n        return function () {\n            var _a;\n            didUnmount.current = true;\n            if (ref) {\n                (_a = resizeObserverRef.current) === null || _a === void 0 ? void 0 : _a.unobserve(ref);\n            }\n        };\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, __spreadArray([onResize, ref], dependencies, true));\n};\n\nvar previewStyles = {\n    position: \"absolute\",\n    zIndex: 2,\n    top: \"0px\",\n    left: \"0px\",\n    boxSizing: \"border-box\",\n    border: \"3px solid red\",\n    transformOrigin: \"0% 0%\",\n    boxShadow: \"rgba(0,0,0,0.2) 0 0 0 10000000px\",\n};\nvar MiniMap = function (_a) {\n    var _b = _a.width, width = _b === void 0 ? 200 : _b, _c = _a.height, height = _c === void 0 ? 200 : _c, _d = _a.borderColor, borderColor = _d === void 0 ? \"red\" : _d, children = _a.children, rest = __rest(_a, [\"width\", \"height\", \"borderColor\", \"children\"]);\n    var _e = useState(false), initialized = _e[0], setInitialized = _e[1];\n    var instance = useTransformContext();\n    var miniMapInstance = useRef(null);\n    var mainRef = useRef(null);\n    var wrapperRef = useRef(null);\n    var previewRef = useRef(null);\n    var getViewportSize = useCallback(function () {\n        if (instance.wrapperComponent) {\n            var rect = instance.wrapperComponent.getBoundingClientRect();\n            return {\n                width: rect.width,\n                height: rect.height,\n            };\n        }\n        return {\n            width: 0,\n            height: 0,\n        };\n    }, [instance.wrapperComponent]);\n    var getContentSize = useCallback(function () {\n        if (instance.contentComponent) {\n            var rect = instance.contentComponent.getBoundingClientRect();\n            return {\n                width: rect.width / instance.transformState.scale,\n                height: rect.height / instance.transformState.scale,\n            };\n        }\n        return {\n            width: 0,\n            height: 0,\n        };\n    }, [instance.contentComponent, instance.transformState.scale]);\n    var computeMiniMapScale = useCallback(function () {\n        var contentSize = getContentSize();\n        var scaleX = width / contentSize.width;\n        var scaleY = height / contentSize.height;\n        var scale = scaleY > scaleX ? scaleX : scaleY;\n        return scale;\n    }, [getContentSize, height, width]);\n    var computeMiniMapSize = function () {\n        var contentSize = getContentSize();\n        var scaleX = width / contentSize.width;\n        var scaleY = height / contentSize.height;\n        if (scaleY > scaleX) {\n            return { width: width, height: contentSize.height * scaleX };\n        }\n        return { width: contentSize.width * scaleY, height: height };\n    };\n    var computeMiniMapStyle = function () {\n        var scale = computeMiniMapScale();\n        var style = {\n            transform: \"scale(\".concat(scale || 1, \")\"),\n            transformOrigin: \"0% 0%\",\n            position: \"absolute\",\n            boxSizing: \"border-box\",\n            zIndex: 1,\n            overflow: \"hidden\",\n        };\n        Object.keys(style).forEach(function (key) {\n            if (wrapperRef.current) {\n                wrapperRef.current.style[key] = style[key];\n            }\n        });\n    };\n    var transformMiniMap = function () {\n        computeMiniMapStyle();\n        var miniSize = computeMiniMapSize();\n        var wrapSize = getContentSize();\n        if (wrapperRef.current) {\n            wrapperRef.current.style.width = \"\".concat(wrapSize.width, \"px\");\n            wrapperRef.current.style.height = \"\".concat(wrapSize.height, \"px\");\n        }\n        if (mainRef.current) {\n            mainRef.current.style.width = \"\".concat(miniSize.width, \"px\");\n            mainRef.current.style.height = \"\".concat(miniSize.height, \"px\");\n        }\n        if (previewRef.current) {\n            var size = getViewportSize();\n            var scale = computeMiniMapScale();\n            var previewScale = scale * (1 / instance.transformState.scale);\n            var transform = instance.handleTransformStyles(-instance.transformState.positionX * previewScale, -instance.transformState.positionY * previewScale, 1);\n            previewRef.current.style.transform = transform;\n            previewRef.current.style.width = \"\".concat(size.width * previewScale, \"px\");\n            previewRef.current.style.height = \"\".concat(size.height * previewScale, \"px\");\n        }\n    };\n    var initialize = function () {\n        transformMiniMap();\n    };\n    useTransformEffect(function () {\n        transformMiniMap();\n    });\n    useTransformInit(function () {\n        initialize();\n        setInitialized(true);\n    });\n    useResize(instance.contentComponent, initialize, [initialized]);\n    useEffect(function () {\n        return instance.onChange(function (zpp) {\n            var scale = computeMiniMapScale();\n            if (miniMapInstance.current) {\n                miniMapInstance.current.instance.transformState.scale =\n                    zpp.instance.transformState.scale;\n                miniMapInstance.current.instance.transformState.positionX =\n                    zpp.instance.transformState.positionX * scale;\n                miniMapInstance.current.instance.transformState.positionY =\n                    zpp.instance.transformState.positionY * scale;\n            }\n        });\n    }, [computeMiniMapScale, instance, miniMapInstance]);\n    var wrapperStyle = useMemo(function () {\n        return {\n            position: \"relative\",\n            zIndex: 2,\n            overflow: \"hidden\",\n        };\n    }, []);\n    return (React.createElement(\"div\", __assign({}, rest, { ref: mainRef, style: wrapperStyle, className: \"rzpp-mini-map \".concat(rest.className || \"\") }),\n        React.createElement(\"div\", __assign({}, rest, { ref: wrapperRef, className: \"rzpp-wrapper\" }), children),\n        React.createElement(\"div\", { className: \"rzpp-preview\", ref: previewRef, style: __assign(__assign({}, previewStyles), { borderColor: borderColor }) })));\n};\n\nfunction styleInject(css, ref) {\n  if ( ref === void 0 ) ref = {};\n  var insertAt = ref.insertAt;\n\n  if (!css || typeof document === 'undefined') { return; }\n\n  var head = document.head || document.getElementsByTagName('head')[0];\n  var style = document.createElement('style');\n  style.type = 'text/css';\n\n  if (insertAt === 'top') {\n    if (head.firstChild) {\n      head.insertBefore(style, head.firstChild);\n    } else {\n      head.appendChild(style);\n    }\n  } else {\n    head.appendChild(style);\n  }\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = css;\n  } else {\n    style.appendChild(document.createTextNode(css));\n  }\n}\n\nvar css_248z = \".transform-component-module_wrapper__SPB86 {\\n  position: relative;\\n  width: -moz-fit-content;\\n  width: fit-content;\\n  height: -moz-fit-content;\\n  height: fit-content;\\n  overflow: hidden;\\n  -webkit-touch-callout: none; /* iOS Safari */\\n  -webkit-user-select: none; /* Safari */\\n  -khtml-user-select: none; /* Konqueror HTML */\\n  -moz-user-select: none; /* Firefox */\\n  -ms-user-select: none; /* Internet Explorer/Edge */\\n  user-select: none;\\n  margin: 0;\\n  padding: 0;\\n  transform: translate3d(0, 0, 0);\\n}\\n.transform-component-module_content__FBWxo {\\n  display: flex;\\n  flex-wrap: wrap;\\n  width: -moz-fit-content;\\n  width: fit-content;\\n  height: -moz-fit-content;\\n  height: fit-content;\\n  margin: 0;\\n  padding: 0;\\n  transform-origin: 0% 0%;\\n}\\n.transform-component-module_content__FBWxo img {\\n  pointer-events: none;\\n}\\n\";\nvar styles = {\"wrapper\":\"transform-component-module_wrapper__SPB86\",\"content\":\"transform-component-module_content__FBWxo\"};\nstyleInject(css_248z);\n\nvar TransformComponent = function (_a) {\n    var children = _a.children, _b = _a.wrapperClass, wrapperClass = _b === void 0 ? \"\" : _b, _c = _a.contentClass, contentClass = _c === void 0 ? \"\" : _c, wrapperStyle = _a.wrapperStyle, contentStyle = _a.contentStyle, _d = _a.wrapperProps, wrapperProps = _d === void 0 ? {} : _d, _e = _a.contentProps, contentProps = _e === void 0 ? {} : _e;\n    var _f = useContext(Context), init = _f.init, cleanupWindowEvents = _f.cleanupWindowEvents;\n    var wrapperRef = useRef(null);\n    var contentRef = useRef(null);\n    useEffect(function () {\n        var wrapper = wrapperRef.current;\n        var content = contentRef.current;\n        if (wrapper !== null && content !== null && init) {\n            init === null || init === void 0 ? void 0 : init(wrapper, content);\n        }\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n        return function () {\n            cleanupWindowEvents === null || cleanupWindowEvents === void 0 ? void 0 : cleanupWindowEvents();\n        };\n    }, []);\n    return (React.createElement(\"div\", __assign({}, wrapperProps, { ref: wrapperRef, className: \"\".concat(baseClasses.wrapperClass, \" \").concat(styles.wrapper, \" \").concat(wrapperClass), style: wrapperStyle }),\n        React.createElement(\"div\", __assign({}, contentProps, { ref: contentRef, className: \"\".concat(baseClasses.contentClass, \" \").concat(styles.content, \" \").concat(contentClass), style: contentStyle }), children)));\n};\n\nvar useTransformContext = function () {\n    var libraryContext = useContext(Context);\n    if (!libraryContext) {\n        throw new Error(\"Transform context must be placed inside TransformWrapper\");\n    }\n    return libraryContext;\n};\n\nvar useControls = function () {\n    var libraryContext = useTransformContext();\n    return getControls(libraryContext);\n};\n\nvar useTransformInit = function (callback) {\n    var libraryContext = useTransformContext();\n    useEffect(function () {\n        var unmountCallback;\n        var unmount;\n        if (libraryContext.contentComponent && libraryContext.wrapperComponent) {\n            unmountCallback = callback(getState(libraryContext));\n        }\n        else {\n            unmount = libraryContext.onInit(function (ref) {\n                unmountCallback = callback(getState(ref.instance));\n            });\n        }\n        return function () {\n            unmount === null || unmount === void 0 ? void 0 : unmount();\n            unmountCallback === null || unmountCallback === void 0 ? void 0 : unmountCallback();\n        };\n    }, []);\n};\n\nvar useTransformEffect = function (callback) {\n    var libraryContext = useTransformContext();\n    useEffect(function () {\n        var unmountCallback;\n        var unmount = libraryContext.onChange(function (ref) {\n            unmountCallback = callback(getState(ref.instance));\n        });\n        return function () {\n            unmount();\n            unmountCallback === null || unmountCallback === void 0 ? void 0 : unmountCallback();\n        };\n    }, [callback, libraryContext]);\n};\n\nfunction useTransformComponent(callback) {\n    var libraryContext = useTransformContext();\n    var _a = useState(callback(getState(libraryContext))), transformRender = _a[0], setTransformRender = _a[1];\n    useEffect(function () {\n        var mounted = true;\n        var unmount = libraryContext.onChange(function (ref) {\n            if (mounted) {\n                setTransformRender(callback(getState(ref.instance)));\n            }\n        });\n        return function () {\n            unmount();\n            mounted = false;\n        };\n    }, [callback, libraryContext]);\n    return transformRender;\n}\n\nexport { Context, KeepScale, MiniMap, TransformComponent, TransformWrapper, getCenterPosition, getMatrixTransformStyles, getTransformStyles, useControls, useTransformComponent, useTransformContext, useTransformEffect, useTransformInit };\n//# sourceMappingURL=index.esm.js.map\n","import { Button, Pagination, Space } from 'antd';\nimport { FacsimileItem } from './types';\nimport useStore from \"./store\";\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { TransformWrapper, TransformComponent, useControls } from \"react-zoom-pan-pinch\";\nimport { CloseOutlined, ZoomInOutlined, ZoomOutOutlined } from '@ant-design/icons';\nimport { useTranslation } from 'react-i18next';\n\n\nfunction FacsimileView({ path, items }: { path: string, items: FacsimileItem[] }) {\n  const { t } = useTranslation(\"common\");\n  const splitView = useStore.use.isSplitView();\n  const splitViewOrientation = useStore.use.splitViewOrientation();\n  const setSplitView = useStore.use.setIsSplitView();\n\n  const [currentItem, setCurrentItem] = useState(0);\n  const [container, setContainer] = useState<HTMLDivElement | null>(null);\n  const [containerHeight, setContainerHeight] = useState<number>(0);\n\n  const Controls = useCallback(()  => {\n      const { zoomIn, zoomOut, resetTransform } = useControls();\n\n      const handlePageClick = (page: number) => {\n        setCurrentItem(page - 1)\n        resetTransform()\n      };\n\n      const close = useCallback(() => {\n        setSplitView(false);\n      }, [setSplitView]);\n\n      useEffect(() => {\n        resetTransform();\n      }, [splitView, splitViewOrientation, resetTransform]);\n\n      return <div style={{ display: \"flex\", justifyContent: \"space-between\" }}>\n        <Space direction=\"horizontal\" size={12} style={{ flex: \"0\", marginLeft: \"12px\" }}>\n          <Button icon={<ZoomInOutlined />} onClick={() => zoomIn()}/>\n          <Button icon={<ZoomOutOutlined />} onClick={() => zoomOut()}/>\n          <Button onClick={() => resetTransform()}>{t('reset')}</Button>\n        </Space>\n         { items.length > 1 ?  <Pagination\n                  style={{ flex: \"1\", textAlign: \"center\" }}\n                  align=\"center\"\n                  current={currentItem + 1}\n                  defaultPageSize={1}\n                  total={items.length}\n                  simple={false}\n                  onChange={handlePageClick} /> : null }\n          { splitView ? <Button icon={<CloseOutlined />} onClick={() => close()}/> : null }\n\n      </div>\n  }, [items, currentItem, splitView, splitViewOrientation, close, t, setSplitView]);\n\n\n  useEffect(() => {\n    if (container) {\n      const { top } = container.getBoundingClientRect();\n      const height = window.innerHeight - top - 24;\n      setContainerHeight(height);\n    }\n  }, [container])\n\n  useEffect(() => {\n    setCurrentItem(0)\n  }, [items])\n\n  useEffect(() => {\n  }, [splitViewOrientation])\n\n  const transformKey = useMemo(() =>\n    `transform-${splitView ? 'split' : 'tab'}-${splitViewOrientation}`,\n    [splitView, splitViewOrientation]\n  );\n\n  const imageFile = useMemo(() => path + items[currentItem].file\n  , [currentItem, items]);\n\n  const imageTitle = useMemo(() => items[currentItem].name\n  , [currentItem, items]);\n\n  const imageStyle = useMemo(() => {\n    const isVerticalSplit = splitView && splitViewOrientation === 'vertical';\n    const isHorizontalSplit = splitView && splitViewOrientation === 'horizontal';\n\n    if (isVerticalSplit) {\n      // Vertical split: fit to width, allow height to extend\n      return { width: \"100%\", height: \"auto\" };\n    } else if (isHorizontalSplit) {\n      // Horizontal split: fit to both dimensions to maximize space usage\n      return { maxWidth: \"100%\", maxHeight: `${containerHeight}px`, width: \"auto\", height: \"auto\" };\n    } else {\n      // Tab mode: fit to height\n      return { height: `${containerHeight}px`, width: \"auto\" };\n    }\n  }, [splitView, splitViewOrientation, containerHeight]);\n\n  const initialScale = useMemo(() => {\n    const isVerticalSplit = splitView && splitViewOrientation === 'vertical';\n    return isVerticalSplit ? 0.7 : 1;\n  }, [splitView, splitViewOrientation]);\n\n  const shouldCenterOnInit = useMemo(() => {\n    const isVerticalSplit = splitView && splitViewOrientation === 'vertical';\n    const isHorizontalSplit = splitView && splitViewOrientation === 'horizontal';\n\n    return !isVerticalSplit && !isHorizontalSplit;\n  }, [splitView, splitViewOrientation]);\n\n  const containerStyle = useMemo(() => {\n    const isHorizontalSplit = splitView && splitViewOrientation === 'horizontal';\n\n    const baseStyle = {\n      width: \"100%\",\n      height: \"100%\",\n      padding: \"12px\"\n    };\n\n    if (isHorizontalSplit) {\n      return {\n        ...baseStyle,\n        display: \"flex\",\n        alignItems: \"flex-start\",\n        justifyContent: \"flex-start\",\n        flexDirection: \"column\" as const\n      };\n    } else {\n      return baseStyle;\n    }\n  }, [splitView, splitViewOrientation]);  return (\n      <TransformWrapper\n        key={transformKey}\n        initialScale={initialScale}\n        minScale={0.1}\n        maxScale={5}\n        centerOnInit={shouldCenterOnInit}\n        limitToBounds={true}\n        doubleClick={{\n          disabled: false,\n          mode: 'zoomIn',\n          step: 0.5,\n        }}\n        wheel={{\n          step: 0.1,\n        }}\n      >\n          <>\n            <Controls />\n            <TransformComponent\n                wrapperStyle={{ width: \"100%\", height: \"100%\" }}>\n                <div style={containerStyle} ref={(el: HTMLDivElement | null) => setContainer(el)}>\n                  <img src={imageFile} alt={imageTitle} style={imageStyle}/>\n                </div>\n            </TransformComponent>\n          </>\n      </TransformWrapper>\n  );\n}\n\nexport default FacsimileView;\n","import { Score, ScoreProperties, Transposition } from '../types';\nimport useStore from '../store';\nimport ScoreProcessor from '../ScoreProcessor';\nimport ScoreAnalyzer from '../ScoreAnalyzer';\nimport { ScoreViewerConfig } from '../types/config';\nimport { useCallback } from 'react';\n\ninterface UseScoreManagerProps {\n  t: any;\n  config: ScoreViewerConfig;\n  normalizeFicta: boolean | null;\n  onScoreAnalyzed?: ((scoreIndex: number, properties: ScoreProperties) => void) | undefined;\n  onFetchScoreError?: ((url: string, error: Error) => void) | undefined;\n}\n\nexport function useScoreManager({\n  t,\n  config,\n  normalizeFicta,\n  onScoreAnalyzed,\n  onFetchScoreError\n}: UseScoreManagerProps) {\n  const scoreCache = useStore.use.scoreCache();\n  const setScoreCache = useStore.use.setScoreCache();\n  const score = useStore.use.score();\n  const setScore = useStore.use.setScore();\n  const setShowNVerses = useStore.use.setShowNVerses();\n  const setNormalizeFicta = useStore.use.setNormalizeFicta();\n  const setShowReconstructions = useStore.use.setShowReconstructions();\n  const setShowOriginalClefs = useStore.use.setShowOriginalClefs();\n  const setTransposition = useStore.use.setTransposition();\n\n  const fetchMei = async (meiUrl: string): Promise<string> => {\n    const res = await fetch(meiUrl);\n\n    if (!res.ok) {\n      throw new Error(`Failed to fetch MEI file: ${res.status} ${res.statusText}`);\n    }\n\n    const meiContent = await res.text();\n\n\n    const parser = new DOMParser();\n    const xmlDoc = parser.parseFromString(meiContent, 'text/xml');\n\n    // Check for parsing errors\n    const parseError = xmlDoc.querySelector('parsererror');\n    if (parseError) {\n      throw new Error(`Invalid XML content: ${parseError.textContent}`);\n    }\n\n    // Check if it has a root element\n    if (!xmlDoc.documentElement) {\n      throw new Error('Invalid XML: No root element found');\n    }\n\n\n    return meiContent;\n  };\n\n  const generateOneVerseMei = (mei: string) => {\n    const scoreProcessor = new ScoreProcessor(mei);\n    if (normalizeFicta) {\n      scoreProcessor.addNormalizeFictaFilter();\n    }\n    scoreProcessor.addNVersesFilter(1);\n    return scoreProcessor.filterScore();\n  };\n\n  const fadeOut = () => {\n    const svgElement = document.querySelector(\".svg-container svg\") as SVGSVGElement | null;\n    if (svgElement) {\n      svgElement.classList.add(\"transition-zero-end\");\n    }\n  };\n\n  const updateScore = (scoreIndex: number, newScore: Score) => {\n    if (score) {\n      if (newScore == score) {\n        return;\n      } else {\n        fadeOut()\n      }\n    }\n\n    // clear options that should not be persistent\n    // TODO: define all these settings consistently\n    setShowNVerses(null);\n    setNormalizeFicta(null);\n    setShowReconstructions({}, true);\n    setShowOriginalClefs(null);\n    setTransposition(null);\n\n    setScore(newScore);\n\n    if (onScoreAnalyzed) {\n      onScoreAnalyzed(scoreIndex, newScore.properties);\n    }\n  };\n\n\n\n  const fetchScore = useCallback((scoreIndex: number) => {\n    const timestamp = performance.now();\n    (async () => {\n      if (scoreIndex === null) return;\n\n      const scoreDef = config.scores[scoreIndex];\n      if (!scoreDef) {\n        console.error(`No score definition found for index ${scoreIndex}`);\n        return;\n      }\n      const path = config.settings.basePath + scoreDef.path + \"/\";\n      const meiUrl = path + scoreDef.meiFile;\n      const encodingProperties = scoreDef.encodingProperties;\n      if (scoreCache[meiUrl]) {\n        const cachedScore = scoreCache[meiUrl];\n        updateScore(scoreIndex, cachedScore);\n      } else {\n        try {\n          const meiString = await fetchMei(meiUrl);\n\n          const scoreProcessor = new ScoreProcessor(meiString);\n          if (config.settings.renderTitlesFromMEI) {\n            scoreProcessor.addTitlesFilter();\n            scoreProcessor.addReonstructionNamesFilter();\n          }\n          scoreProcessor.addEnsureMeasuresIdFilter();\n          scoreProcessor.addEnsureSectionsIdFilter();\n          const originalMei = scoreProcessor.filterScore();\n          const analyzer = new ScoreAnalyzer(t, 0, originalMei);\n          const properties = {\n            ...analyzer.getScoreProperties(),\n            encodedTransposition: encodingProperties.encodedTransposition as Transposition ?? undefined,\n          }\n          const audioUrl = scoreDef.audioBaseFile && scoreDef.audioBaseFile != \"\" ? path + scoreDef.audioBaseFile : null\n          const audioOverlayTracks = []\n          if (scoreDef.audioOverlays) {\n            for (const overlay of scoreDef.audioOverlays) {\n              audioOverlayTracks.push({\n                id: `overlay-staff-${overlay.staff}`,\n                label: overlay.appLabel,\n                url: path + overlay.file,\n                volume: 1\n              });\n            }\n          }\n\n\n          const editorialItems = analyzer.getEditorial();\n          const newScore: Score = {\n            url: meiUrl,\n            title: scoreDef.title,\n            originalMei: originalMei,\n            singleVerseMei: generateOneVerseMei(originalMei),\n            properties,\n            editorialItems,\n            audioUrl,\n            audioOverlayTracks,\n          }\n\n          setScoreCache(\n            { [meiUrl]: newScore }\n          )\n          updateScore(scoreIndex, newScore);\n          console.log(`Score fetched from network: ${meiUrl} took ${performance.now() - timestamp}ms`);\n        } catch (error: Error | any) {\n          if (onFetchScoreError) {\n            onFetchScoreError(meiUrl, error);\n          }\n        }\n      }\n    })();\n  }, [config.scores, config.settings.basePath, config.settings.renderTitlesFromMEI, scoreCache, score, setScore, setScoreCache, onScoreAnalyzed, normalizeFicta]);\n\n  const unloadScore = () => {\n    setScore(null);\n  }\n\n  const hasIntro = useCallback((scoreIndex: number) => {\n    const scoreDef = config.scores[scoreIndex];\n    return (scoreDef && scoreDef.introductionFile) ? true : false;\n  }, [config.scores]);\n\n  const hasText = useCallback((scoreIndex: number) => {\n    const scoreDef = config.scores[scoreIndex];\n    return (scoreDef && scoreDef.text && scoreDef.text.length > 0) ? true : false;\n  }, [config.scores]);\n\n\n  return { fetchScore, unloadScore, hasIntro, hasText };\n}\n","import { useCallback } from 'react';\nimport { FetchError, LyricItem, TextPartsCache } from '../types';\nimport useStore from '../store';\nimport { ScoreViewerConfig, ScoreViewerConfigScore, ScoreViewerConfigScoreText } from '../types/config';\nimport { unstable_batchedUpdates } from 'react-dom';\n\nconst CACHE_UPDATING_MARK = \"updating\"\n\nconst getText = async (url: string): Promise<string> => {\n  return fetch(url).then((res) => {\n    const contentType = res.headers.get('Content-Type')\n    if (res.ok && contentType && (contentType.includes('text/markdown') || contentType.includes('text/plain'))) {\n      return res.text()\n    } else {\n      const error = new FetchError(\"Content error\", `Unsupported content type from url ${url} (${contentType})`);\n      return Promise.reject(error)\n    }\n  }, (error) => {\n    console.error(`Error fetching text from ${url}:`, error);\n    return Promise.reject(new FetchError(\"Network error\",`Failed to fetch text from url ${url} (${error.message})`))\n  })\n}\n\nconst getTitleFromItem = (textItem: ScoreViewerConfigScoreText) => {\n  if (textItem.name && textItem.name.length > 0) {\n    return textItem.name\n  } else if (textItem.type && textItem.type.length > 0) {\n    return textItem.type[0].toUpperCase() + textItem.type.substring(1);\n  }\n  return \"\"\n}\n\n\ninterface UseTextPartsProps {\n  config: ScoreViewerConfig;\n}\n\nexport function useTextParts({\n  config,\n}: UseTextPartsProps) {\n  const textCache = useStore.use.textCache();\n  const setTextCache = useStore.use.setTextCache();\n  const textComments = useStore.use.textComments();\n  const setTextComments = useStore.use.setTextComments();\n  const textIntroduction = useStore.use.textIntroduction();\n  const setTextIntroduction = useStore.use.setTextIntroduction();\n  const textLyrics = useStore.use.textLyrics();\n  const setTextLyrics = useStore.use.setTextLyrics();\n\n\n\n  const getPath = useCallback((scoreDef: ScoreViewerConfigScore, path: string) => {\n    return config.settings.basePath + scoreDef.path + \"/\" + path\n  }, [config.settings.basePath])\n\n  const hasSection = (section: string | undefined | ScoreViewerConfigScoreText[]) => section != undefined && section.length > 0\n\n  const getUrlsForScore = useCallback((scoreDef: ScoreViewerConfigScore) => {\n    const path = getPath(scoreDef, \"\")\n\n    const lyricsUrls = hasSection(scoreDef?.text) ? scoreDef.text!.map((textItem) => path + textItem.file) : null\n    const commentsUrl = hasSection(scoreDef?.textCommentsFile) ? path + scoreDef.textCommentsFile : null\n    const introductionUrl = hasSection(scoreDef?.introductionFile) ? path + scoreDef.introductionFile : null\n    return { lyricsUrls, commentsUrl, introductionUrl }\n  }, [getPath])\n\n  const getLyricItemsFromCache = useCallback((scoreDef: ScoreViewerConfigScore) => {\n    const lyricItems: LyricItem[] = []\n    scoreDef?.text?.forEach((textItem) => {\n      const path = getPath(scoreDef, textItem.file)\n      const text = textCache[path]\n      if (text && text != CACHE_UPDATING_MARK) {\n        lyricItems.push({ title: getTitleFromItem(textItem), text: text })\n      }\n    })\n    return lyricItems\n  }, [textCache, getPath])\n\n\n\n  const fetchTextParts = useCallback((scoreIndex: number) => {\n\n    const scoreDef = config.scores[scoreIndex]\n\n    if (!scoreDef) return;\n\n    const { lyricsUrls, commentsUrl, introductionUrl } = getUrlsForScore(scoreDef)\n\n    const urls =\n      [...lyricsUrls ? lyricsUrls : [],\n      ...commentsUrl ? [commentsUrl] : [],\n      ...introductionUrl ? [introductionUrl] : []]\n\n    if (urls.length == 0) return;\n\n    const cachedUrls = Object.keys(textCache).filter(url => textCache[url] != CACHE_UPDATING_MARK)\n\n    console.log(`Fetching text parts for score ${scoreIndex}: introductionUrl: ${introductionUrl}`)\n\n    // null: when the score does not have the part\n    // undefined: when score has it but is missing from the cache of being retrieved\n    if (commentsUrl) {\n      setTextComments(cachedUrls.includes(commentsUrl) ? textCache[commentsUrl] : undefined)\n    } else {\n      setTextComments(null)\n    }\n    if (introductionUrl) {\n      setTextIntroduction(cachedUrls.includes(introductionUrl) ? textCache[introductionUrl] : undefined)\n    } else {\n      setTextIntroduction(null)\n    }\n    if (lyricsUrls) {\n      setTextLyrics(lyricsUrls.every(u => cachedUrls.includes(u)) ? getLyricItemsFromCache(scoreDef) : undefined, true)\n    } else {\n      setTextLyrics(null, true)\n    }\n\n    const urlsToUpdate = urls.filter(url => !Object.keys(textCache).includes(url))\n    if (urlsToUpdate.length == 0) return;\n\n    const updatingCache: TextPartsCache = {}\n    urlsToUpdate.forEach((url) => {\n      updatingCache[url] = CACHE_UPDATING_MARK\n    })\n    setTextCache(updatingCache, false)\n\n    urlsToUpdate.forEach((url) => {\n      getText(url).then((res: string) => {\n\n        unstable_batchedUpdates(() => {\n          setTextCache({ [url]: res }, false)\n          if (commentsUrl && url == commentsUrl) {\n            setTextComments(res)\n          } else if (introductionUrl && url == introductionUrl) {\n            setTextIntroduction(res)\n          } else if (lyricsUrls && lyricsUrls.includes(url)) {\n            const textItem = scoreDef.text?.find((textItem) => url == getPath(scoreDef, textItem.file))\n            if (textItem)\n              setTextLyrics([{ title: getTitleFromItem(textItem), text: res }], false)\n          }\n        })\n      }, (error: FetchError) => {\n        console.log(`${error.type}: ${error.message}`)\n         unstable_batchedUpdates(() => {\n          setTextCache({ [url]: error }, false)\n          if (commentsUrl && url == commentsUrl) {\n            setTextComments(error)\n          } else if (introductionUrl && url == introductionUrl) {\n            setTextIntroduction(error)\n          } else if (lyricsUrls && lyricsUrls.includes(url)) {\n            const textItem = scoreDef.text?.find((textItem) => url == getPath(scoreDef, textItem.file))\n            if (textItem)\n              setTextLyrics([{ title: getTitleFromItem(textItem), text: error }], false)\n          }\n        })\n      })\n    })\n  }, [getPath, config.scores, textCache, getLyricItemsFromCache, setTextCache, setTextComments, setTextIntroduction, setTextLyrics])\n\n  return { fetchTextParts, textIntroduction, textLyrics, textComments }\n}\n","import { useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { ScoreViewerConfig } from '../types/config';\n\ninterface ConfigValidationError {\n  field: string;\n  message: string;\n}\n\nexport const useConfigValidation = (config: ScoreViewerConfig) => {\n  const { t } = useTranslation(\"common\");\n\n  const validateConfig = useMemo(() => (config: ScoreViewerConfig): ConfigValidationError[] => {\n    const errors: ConfigValidationError[] = [];\n\n    // Validate config exists\n    if (!config) {\n      errors.push({\n        field: 'config',\n        message: t('configValidation.configRequired')\n      });\n      return errors;\n    }\n\n    // Validate settings\n    if (!config.settings) {\n      errors.push({\n        field: 'settings',\n        message: t('configValidation.settingsRequired')\n      });\n    } else {\n      const settings = config.settings;\n\n      // Validate required boolean fields\n      if (typeof settings.showScoreSelector !== 'boolean') {\n        errors.push({\n          field: 'settings.showScoreSelector',\n          message: t('configValidation.showScoreSelectorBoolean')\n        });\n      }\n      if (typeof settings.showTitle !== 'boolean') {\n        errors.push({\n          field: 'settings.showTitle',\n          message: t('configValidation.showTitleBoolean')\n        });\n      }\n      if (typeof settings.showDownloadButton !== 'boolean') {\n        errors.push({\n          field: 'settings.showDownloadButton',\n          message: t('configValidation.showDownloadButtonBoolean')\n        });\n      }\n      if (typeof settings.showIntroductionSection !== 'boolean') {\n        errors.push({\n          field: 'settings.showIntroductionSection',\n          message: t('configValidation.showIntroductionSectionBoolean')\n        });\n      }\n      if (typeof settings.showTextSection !== 'boolean') {\n        errors.push({\n          field: 'settings.showTextSection',\n          message: t('configValidation.showTextSectionBoolean')\n        });\n      }\n      if (typeof settings.showFacsimileSection !== 'boolean') {\n        errors.push({\n          field: 'settings.showFacsimileSection',\n          message: t('configValidation.showFacsimileSectionBoolean')\n        });\n      }\n      if (typeof settings.renderTitlesFromMEI !== 'boolean') {\n        errors.push({\n          field: 'settings.renderTitlesFromMEI',\n          message: t('configValidation.renderTitlesFromMEIBoolean')\n        });\n      }\n      if (typeof settings.allowUserLanguageChange !== 'boolean') {\n        errors.push({\n          field: 'settings.allowUserLanguageChange',\n          message: t('configValidation.allowUserLanguageChangeBoolean')\n        });\n      }\n\n      // Validate required string fields\n      if (!settings.basePath || typeof settings.basePath !== 'string') {\n        errors.push({\n          field: 'settings.basePath',\n          message: t('configValidation.basePathRequired')\n        });\n      }\n\n      if (!settings.facsimileImagesPath || typeof settings.facsimileImagesPath !== 'string') {\n        errors.push({\n          field: 'settings.facsimileImagesPath',\n          message: t('configValidation.facsimileImagesPathRequired')\n        });\n      }\n\n      // Validate optional fields\n      if (settings.backgroundColor && typeof settings.backgroundColor !== 'string') {\n        errors.push({\n          field: 'settings.backgroundColor',\n          message: t('configValidation.backgroundColorString')\n        });\n      }\n\n      if (settings.language && typeof settings.language !== 'string') {\n        errors.push({\n          field: 'settings.language',\n          message: t('configValidation.languageString')\n        });\n      }\n    }\n\n    // Validate scores array\n    if (!Array.isArray(config.scores)) {\n      errors.push({\n        field: 'scores',\n        message: t('configValidation.scoresArray')\n      });\n    } else if (config.scores.length === 0) {\n      errors.push({\n        field: 'scores',\n        message: t('configValidation.scoresNotEmpty')\n      });\n    } else {\n      config.scores.forEach((score, index) => {\n        if (!score.title || typeof score.title !== 'string') {\n          errors.push({\n            field: `scores[${index}].title`,\n            message: t('configValidation.scoreTitleRequired')\n          });\n        }\n\n        if (!score.path || typeof score.path !== 'string') {\n          errors.push({\n            field: `scores[${index}].path`,\n            message: t('configValidation.scorePathRequired')\n          });\n        }\n\n        if (!score.meiFile || typeof score.meiFile !== 'string') {\n          errors.push({\n            field: `scores[${index}].meiFile`,\n            message: t('configValidation.scoreMeiFileRequired')\n          });\n        }\n\n        if (!score.encodingProperties) {\n          errors.push({\n            field: `scores[${index}].encodingProperties`,\n            message: t('configValidation.scoreEncodingPropertiesRequired')\n          });\n        }\n\n        // Validate optional arrays\n        if (score.audioOverlays && !Array.isArray(score.audioOverlays)) {\n          errors.push({\n            field: `scores[${index}].audioOverlays`,\n            message: t('configValidation.scoreAudioOverlaysArray')\n          });\n        }\n\n        if (score.text && !Array.isArray(score.text)) {\n          errors.push({\n            field: `scores[${index}].text`,\n            message: t('configValidation.scoreTextArray')\n          });\n        }\n\n        if (score.facsimileItems && !Array.isArray(score.facsimileItems)) {\n          errors.push({\n            field: `scores[${index}].facsimileItems`,\n            message: t('configValidation.scoreFacsimileItemsArray')\n          });\n        }\n      });\n    }\n\n    return errors;\n  }, [t]);\n\n  const configErrors = useMemo(() => validateConfig(config), [config, validateConfig]);\n\n  return {\n    configErrors,\n    hasConfigErrors: configErrors.length > 0\n  };\n};\n\nexport default useConfigValidation;\n","import { Drawer, Space, Row, Col, Typography, Switch, Select, Divider, SelectProps } from \"antd\"\nimport { useTranslation } from 'react-i18next';\nimport { isMobile } from 'react-device-detect';\n\nimport { LANGUAGE_SESSION_STORAGE_KEY, SUPPORTED_LANGUAGES } from \"./types/ui\";\nimport useStore from \"./store\";\nimport { useCallback, useMemo } from \"react\";\n\n\nconst getReverseTransposition = (transposition?: string) => {\n    if (transposition?.startsWith(\"-\")) {\n        return \"+\" + transposition.substring(1);\n    } else if (transposition?.startsWith(\"+\") || (transposition && transposition.length > 1)) {\n        return \"-\" + transposition.substring(1);\n    }\n    return \"\";\n};\n\n\nfunction ScoreOptionsPanel({ allowUserLanguageChange, showMusicAnalysisByDefault, onClose, open }: { allowUserLanguageChange: boolean, showMusicAnalysisByDefault: boolean, onClose: () => void, open: boolean }) {\n    const { t, i18n } = useTranslation(\"common\")\n\n    const score = useStore.use.score();\n    const showNVerses = useStore.use.showNVerses();\n    const setShowNVerses = useStore.use.setShowNVerses();\n    const showOriginalClefs = useStore.use.showOriginalClefs();\n    const setShowOriginalClefs = useStore.use.setShowOriginalClefs();\n    const showReconstructions = useStore.use.showReconstructions();\n    const setShowReconstructions = useStore.use.setShowReconstructions();\n    const showEditorial = useStore.use.showEditorial();\n    const setShowEditorial = useStore.use.setShowEditorial();\n    const normalizeFicta = useStore.use.normalizeFicta();\n    const setNormalizeFicta = useStore.use.setNormalizeFicta();\n    const transposition = useStore.use.transposition();\n    const setTransposition = useStore.use.setTransposition();\n    const showMusicAnalysis = useStore.use.showMusicAnalysis();\n    const setShowMusicAnalysis = useStore.use.setShowMusicAnalysis();\n    const isSplitView = useStore.use.isSplitView();\n    const setIsSplitView = useStore.use.setIsSplitView();\n    const splitViewOrientation = useStore.use.splitViewOrientation();\n    const setSplitViewOrientation = useStore.use.setSplitViewOrientation();\n    const measureNumberInterval = useStore.use.measureNumberInterval();\n    const setMeasureNumberInterval = useStore.use.setMeasureNumberInterval();\n\n    const onVersesSelected = useCallback((value: number) => {\n        setShowNVerses(value);\n    }, [setShowNVerses]);\n\n    const onReconstructionSelected = useCallback((staff: string, reconstruction: string) => {\n        console.log(`Selected reconstruction for staff ${staff}:  ${reconstruction}`);\n        setShowReconstructions({ [staff]: reconstruction }, false);\n    }, [setShowReconstructions]);\n\n    const onShowEditorialChange = useCallback((value: boolean) => {\n        setShowEditorial(value);\n    }, [setShowEditorial]);\n\n    const onNormalizeFictaChange = useCallback((value: boolean) => {\n        setNormalizeFicta(value);\n    }, [setNormalizeFicta]);\n\n    const onShowOriginalClefsChange = useCallback(() => {\n        console.log(`Show original clefs: ${!showOriginalClefs}`);\n        setShowOriginalClefs(!showOriginalClefs);\n    }, [showOriginalClefs, setShowOriginalClefs]);\n\n    const onTranspositionChange = useCallback(() => {\n        if (transposition != null) {\n            setTransposition(null);\n        } else {\n            const reverseTransposition = getReverseTransposition(score?.properties?.encodedTransposition);\n            setTransposition(reverseTransposition);\n        }\n    }, [transposition, score?.properties?.encodedTransposition, setTransposition]);\n\n    const onShowMusicAnalysisChange = useCallback((value: boolean) => {\n        setShowMusicAnalysis(value);\n    }, [setShowMusicAnalysis]);\n\n    const onMeasureNumberIntervalChange = useCallback((value: number | null) => {\n        setMeasureNumberInterval(value);\n    }, [setMeasureNumberInterval]);\n\n    const numVersesAvailable = useMemo(() =>\n        score?.properties?.numVerses || 0\n        , [score?.properties?.numVerses]);\n\n    const numReconstructionsAvailable = useMemo(() =>\n        score?.properties ? Object.entries(score.properties.reconstructions).length : 0\n        , [score?.properties]);\n\n    const originalClefsAvailable = useMemo(() =>\n        score?.properties?.hasOriginalClefs || false\n        , [score?.properties?.hasOriginalClefs]);\n\n    const verseOptions: SelectProps['options'] = useMemo(() =>\n        Array.from({ length: numVersesAvailable }, (_, key) => 1 + key).map(i => ({\n            value: i,\n            label: t(\"scoreOptions.verseAmmount\", { \"count\": i })\n        })),\n        [numVersesAvailable, t]\n    )\n\n\n    const voiceRecontructions: { staff: string, voiceName: string, selectOptions: SelectProps['options'] }[] = useMemo(() => {\n        if (score?.properties?.reconstructions === undefined) {\n            return []\n        }\n        const reconstructions: { staff: string, voiceName: string, selectOptions: SelectProps['options'] }[] = []\n        for (const voiceRecontructed of score?.properties?.reconstructions) {\n            if (voiceRecontructed.reconstructionsForVoice.length === 0) {\n                continue;\n            }\n            const reconstructionsForVoice: SelectProps['options'] = []\n            for (const reconstruction of voiceRecontructed.reconstructionsForVoice) {\n                // Format is reconstruction:staff:type:name\n                const name = reconstruction.label != \"none\" ? reconstruction.label.split(\":\")[3] : t(\"scoreOptions.reconstructionNone\");\n                reconstructionsForVoice.push({ value: reconstruction.label, label: name })\n            }\n            reconstructions.push({ staff: voiceRecontructed.staff, voiceName: voiceRecontructed.voiceName, selectOptions: reconstructionsForVoice })\n        }\n        return reconstructions\n    }, [numReconstructionsAvailable, t])\n\n\n    const editorialDisabled = useMemo(() =>\n        score?.properties ? !score.properties.hasEditorial : true\n        , [score?.properties]);\n\n    const fictaSwictchDisabled = useMemo(() =>\n        score?.properties ? !score.properties.hasFicta : true\n        , [score?.properties]);\n\n    const showTranspositionOption = useMemo(() =>\n        score?.properties?.encodedTransposition !== undefined && score?.properties?.encodedTransposition !== \"\"\n        , [score?.properties]);\n\n    const showVerseOptions = useMemo(() =>\n        verseOptions.length > 0\n        , [score?.properties]);\n\n    const showReconstructionOptions = useMemo(() =>\n        numReconstructionsAvailable > 0\n        , [score?.properties]);\n\n\n    const reconstructionRows = showReconstructionOptions ? voiceRecontructions?.map(voiceReconstruction =>\n        <Row align={\"middle\"}>\n            <Col span={12}>\n                <Space direction=\"vertical\">\n                    <Typography.Text strong={true} >\n                        {t('scoreOptions.reconstruction', { voiceName: voiceReconstruction.voiceName })}\n                    </Typography.Text>\n                </Space>\n            </Col>\n            <Col span={10}>\n                <Select\n                    size=\"middle\"\n                    options={voiceReconstruction.selectOptions || []}\n                    defaultValue={showReconstructions?.[voiceReconstruction.staff] ?? \"none\"}\n                    disabled={voiceReconstruction.selectOptions ? voiceReconstruction.selectOptions.length <= 1 : true}\n                    onSelect={(value) => onReconstructionSelected(voiceReconstruction.staff, value)}\n                />\n            </Col>\n        </Row>\n    ) : null\n\n    const onLanguageSelected = useCallback((value: string) => {\n        sessionStorage.setItem(LANGUAGE_SESSION_STORAGE_KEY, value)\n        i18n.changeLanguage(value);\n    }, [i18n]);\n\n    const layoutOptions = [\n        { label: \"Tabs\", value: \"tabs\" },\n        { label: \"Horizontal Split\", value: \"horizontal-split\" },\n        { label: \"Vertical Split\", value: \"vertical-split\" }\n    ]\n\n\n    const onLayoutSelected = useCallback((value: string) => {\n        if (value === \"tabs\") {\n            setIsSplitView(false);\n        } else {\n            setIsSplitView(true);\n            if (value === \"horizontal-split\") {\n                setSplitViewOrientation('horizontal');\n            } else if (value === \"vertical-split\") {\n                setSplitViewOrientation('vertical');\n            }\n        }\n    }, [setIsSplitView, setSplitViewOrientation])\n\n    const languageOptions = allowUserLanguageChange ? SUPPORTED_LANGUAGES.map(lang => ({ label: lang.label, value: lang.key })) : [];\n\n    const languageRow = allowUserLanguageChange ?\n        <Row align={\"middle\"}>\n            <Col span={16}>\n                <Space direction=\"vertical\">\n                    <Typography.Text strong={true} >\n                        {t('scoreOptions.language.title')}\n                    </Typography.Text>\n                    <Typography.Text style={{ fontWeight: \"lighter\", fontSize: \"0.8em\" }} >\n                        {t('scoreOptions.language.description')}\n                    </Typography.Text>\n                </Space>\n            </Col>\n            <Col span={8}>\n                <Select value={i18n.language} options={languageOptions} onSelect={onLanguageSelected} />\n            </Col>\n        </Row> : null\n\n    const iuLayoutRow = !isMobile ?\n        <Row align={\"middle\"}>\n            <Col span={16}>\n                <Space direction=\"vertical\">\n                    <Typography.Text strong={true}>\n                        {t('scoreOptions.uiLayout.title')}\n                    </Typography.Text>\n                    <Typography.Text style={{ fontWeight: \"lighter\", fontSize: \"0.8em\" }}>\n                        {t('scoreOptions.uiLayout.description')}\n                    </Typography.Text>\n                </Space>\n            </Col>\n            <Col span={8}>\n                <Select\n                    defaultValue={isSplitView ? `${splitViewOrientation}-split` : \"tabs\"}\n                    options={layoutOptions}\n                    onSelect={onLayoutSelected}\n                />\n            </Col>\n        </Row> : null\n\n\n\n    return (\n        <Drawer title={t('scoreOptions.title')} open={open} onClose={onClose}>\n            <Space direction=\"vertical\" size=\"large\">\n\n                {/* UI Settings Section */}\n                {(languageRow || iuLayoutRow) &&\n                    <>\n                        <Typography.Title level={5} style={{ margin: 0 }}>\n                            {t('scoreOptions.uiSettings.title')}\n                        </Typography.Title>\n                        <Space direction=\"vertical\" size=\"middle\">\n                            {languageRow}\n                            {iuLayoutRow}\n                        </Space>\n                        <Divider />\n                    </>\n                }\n                <Typography.Title level={5} style={{ margin: 0 }}>\n                    {t('scoreOptions.scoreViewerSettings.title')}\n                </Typography.Title>\n                <Space direction=\"vertical\" size=\"middle\">\n                    <Row align={\"middle\"}>\n                        <Col span={20}>\n                            <Space direction=\"vertical\">\n                                <Typography.Text strong={true}  {...(!showEditorial ? { type: 'secondary' } : {})}>\n                                    {t('scoreOptions.editorialNotes.title')}\n                                </Typography.Text>\n                                <Typography.Text style={{ fontWeight: \"lighter\", fontSize: \"0.8em\" }}  {...(!showEditorial ? { type: 'secondary' } : {})}>\n                                    {t('scoreOptions.editorialNotes.description')}\n                                </Typography.Text>\n                            </Space>\n                        </Col>\n                        <Col span={4}>\n                            <Switch value={showEditorial || false} defaultValue={false} disabled={editorialDisabled} onChange={onShowEditorialChange} />\n                        </Col>\n                    </Row>\n                </Space>\n                <Divider />\n\n                <Typography.Title level={5} style={{ margin: 0 }}>\n                    {t('scoreOptions.scoreSettings.title')}\n                </Typography.Title>\n                <Space direction=\"vertical\" size=\"middle\">\n                    {reconstructionRows}\n\n                    <Row align={\"middle\"}>\n                        <Col span={20}>\n                            <Space direction=\"vertical\">\n                                <Typography.Text strong={true}  {...(!normalizeFicta ? { type: 'secondary' } : {})}>\n                                    {t('scoreOptions.normalizeFicta.title')}\n                                </Typography.Text>\n                                <Typography.Text style={{ fontWeight: \"lighter\", fontSize: \"0.8em\" }} {...(!normalizeFicta ? { type: 'secondary' } : {})}>\n                                    {t('scoreOptions.normalizeFicta.description')}\n                                </Typography.Text>\n                            </Space>\n                        </Col>\n                        <Col span={4}>\n                            <Switch defaultValue={normalizeFicta || false} disabled={fictaSwictchDisabled} onChange={onNormalizeFictaChange} />\n                        </Col>\n                    </Row>\n\n                    {originalClefsAvailable &&\n                        <Row align={\"middle\"}>\n                            <Col span={20}>\n                                <Space direction=\"vertical\">\n                                    <Typography.Text strong={true} {...(!showOriginalClefs ? { type: 'secondary' } : {})}>\n                                        {t('scoreOptions.originalClefs.title')}\n                                    </Typography.Text>\n                                    <Typography.Text style={{ fontWeight: \"lighter\", fontSize: \"0.8em\" }} {...(!showOriginalClefs ? { type: 'secondary' } : {})} >\n                                        {t('scoreOptions.originalClefs.description')}\n                                    </Typography.Text>\n                                </Space>\n                            </Col>\n                            <Col span={4}>\n                                <Switch\n                                    defaultValue={showOriginalClefs || false}\n                                    disabled={!originalClefsAvailable}\n                                    onChange={onShowOriginalClefsChange}\n                                />\n                            </Col>\n                        </Row>}\n\n                    {showTranspositionOption &&\n                        <Row align={\"middle\"}>\n                            <Col span={20}>\n                                <Space direction=\"vertical\">\n                                    <Typography.Text strong={true} {...(!transposition ? { type: 'secondary' } : {})}>\n                                        {t('scoreOptions.noTransposition.title')}\n                                    </Typography.Text>\n                                    <Typography.Text style={{ fontWeight: \"lighter\", fontSize: \"0.8em\" }} {...(!transposition ? { type: 'secondary' } : {})} >\n                                        {t('scoreOptions.noTransposition.description', { encodedTransposition: score?.properties?.encodedTransposition })}\n                                    </Typography.Text>\n                                </Space>\n                            </Col>\n                            <Col span={4}>\n                                <Switch\n                                    defaultValue={transposition != null}\n                                    disabled={!score?.properties?.encodedTransposition}\n                                    onChange={onTranspositionChange}\n                                />\n                            </Col>\n                        </Row>}\n\n\n                    <Row align={\"middle\"}>\n                        <Col span={20}>\n                            <Space direction=\"vertical\">\n                                <Typography.Text strong={true} {...(!showMusicAnalysis ? { type: 'secondary' } : {})}>\n                                    {t('scoreOptions.harmonicAnalysis.title')}\n                                </Typography.Text>\n                                <Typography.Text style={{ fontWeight: \"lighter\", fontSize: \"0.8em\" }} {...(!showMusicAnalysis ? { type: 'secondary' } : {})} >\n                                    {t('scoreOptions.harmonicAnalysis.description')}\n                                </Typography.Text>\n                            </Space>\n                        </Col>\n                        <Col span={4}>\n                            <Switch\n                                defaultValue={showMusicAnalysis || showMusicAnalysisByDefault}\n                                onChange={onShowMusicAnalysisChange}\n                            />\n                        </Col>\n                    </Row>\n\n\n                    {showVerseOptions &&\n                        <Row align={\"middle\"}>\n                            <Col span={16}>\n                                <Space direction=\"vertical\">\n                                    <Typography.Text strong={true} {...(!showNVerses ? { type: 'secondary' } : {})}>\n                                        {t('scoreOptions.limitVerses.title')}\n                                    </Typography.Text>\n                                    <Typography.Text style={{ fontWeight: \"lighter\", fontSize: \"0.8em\" }} {...(!showNVerses ? { type: 'secondary' } : {})} >\n                                        {t('scoreOptions.limitVerses.description')}\n                                    </Typography.Text>\n                                </Space>\n                            </Col>\n                            <Col span={8}>\n                                <Select\n                                    size=\"large\"\n                                    options={verseOptions}\n                                    style={{ width: 120 }}\n                                    defaultValue={showNVerses ? showNVerses : numVersesAvailable}\n                                    disabled={numVersesAvailable <= 1}\n                                    onSelect={onVersesSelected}\n                                />\n                            </Col>\n                        </Row>}\n\n                    <Row align={\"middle\"}>\n                        <Col span={12}>\n                            <Space direction=\"vertical\">\n                                <Typography.Text strong={true}>\n                                    {t('scoreOptions.measureNumberInterval.title')}\n                                </Typography.Text>\n                                <Typography.Text style={{ fontWeight: \"lighter\", fontSize: \"0.8em\" }}>\n                                    {t('scoreOptions.measureNumberInterval.description')}\n                                </Typography.Text>\n                            </Space>\n                        </Col>\n                        <Col span={12}>\n                            <Select<number>\n                                options={[\n                                    { label: t('scoreOptions.measureIntervalPage'), value: 0 },\n                                    { label: t('scoreOptions.measureInterval10'), value: 10 },\n                                    { label: t('scoreOptions.measureInterval5'), value: 5 },\n                                    { label: t('scoreOptions.measureInterval1'), value: 1 }]}\n                                defaultValue={measureNumberInterval != null ? measureNumberInterval : 10}\n                                onChange={onMeasureNumberIntervalChange}\n                            />\n                        </Col>\n                    </Row>\n\n                </Space>\n            </Space>\n        </Drawer>\n    );\n}\n\nexport default ScoreOptionsPanel;\n","import * as React from \"react\";\nconst SvgMusic = (props) => /* @__PURE__ */ React.createElement(\"svg\", { fill: \"#000000\", height: \"800px\", width: \"800px\", id: \"Layer_1\", xmlns: \"http://www.w3.org/2000/svg\", xmlnsXlink: \"http://www.w3.org/1999/xlink\", viewBox: \"0 0 512 512\", xmlSpace: \"preserve\", ...props }, /* @__PURE__ */ React.createElement(\"g\", null, /* @__PURE__ */ React.createElement(\"g\", null, /* @__PURE__ */ React.createElement(\"path\", { d: \"M503.319,5.939c-5.506-4.705-12.783-6.767-19.958-5.635L169.555,49.852c-12.04,1.901-20.909,12.28-20.909,24.47v99.097 v156.903H99.097C44.455,330.323,0,371.073,0,421.161C0,471.25,44.455,512,99.097,512c54.642,0,99.097-40.75,99.097-90.839v-66.065 V194.588l264.258-41.725v136.169h-49.548c-54.642,0-99.097,40.75-99.097,90.839s44.455,90.839,99.097,90.839 S512,429.959,512,379.871v-66.065V123.871V24.774C512,17.529,508.827,10.646,503.319,5.939z\" }))));\nexport default SvgMusic;\n","import { useCallback, useMemo } from 'react';\nimport { Tabs, TabsProps, Space } from 'antd';\nimport { FileTextOutlined, FileImageOutlined } from '@ant-design/icons';\nimport Icon from '@ant-design/icons';\nimport { useTranslation } from 'react-i18next';\nimport MusicSvg from \"../../assets/music.svg?react\";\nimport useStore from '../store';\n\ninterface TabLayoutProps {\n  scoreView: React.ReactNode;\n  textView: React.ReactNode | null;\n  introView: React.ReactNode | null;\n  facsimileView: React.ReactNode | null;\n  showIntroductionSection: boolean;\n  showTextSection: boolean;\n  showFacsimileSection: boolean;\n}\n\nexport default function TabLayout({\n  scoreView,\n  textView,\n  introView,\n  facsimileView,\n  showIntroductionSection,\n  showTextSection,\n  showFacsimileSection\n}: TabLayoutProps) {\n  const { t } = useTranslation(\"common\");\n  const activeTab = useStore.use.activeTab()\n  const setActiveTab = useStore.use.setActiveTab();\n\n  const tabsItems: TabsProps['items'] = useMemo(() =>\n    showIntroductionSection || showTextSection || showFacsimileSection ? [\n      introView ? {\n        key: 'intro',\n        label: <Space direction='horizontal'>{t('tab.introduction')}</Space>,\n        children: introView\n      } : null,\n      {\n        key: 'music',\n        label: <Space direction='horizontal'><Icon component={MusicSvg} />{t('tab.music')}</Space>,\n        children: scoreView\n      },\n      textView ? {\n        key: 'text',\n        label: <Space direction='horizontal'><FileTextOutlined />{t('tab.text')}</Space>,\n        children: textView\n      } : null,\n      facsimileView ? {\n        key: 'facsimile',\n        label: <Space direction='horizontal'> <FileImageOutlined />{t('tab.facsimile')}</Space>,\n        children: facsimileView\n      } : null\n    ].filter(tab => tab != null) : [],\n    [scoreView, textView, introView, facsimileView, showIntroductionSection, showTextSection, showFacsimileSection, t]\n  );\n\n  const onTabChange = useCallback((key: string) => {\n    setActiveTab(key);\n  }, [setActiveTab]);\n\n  const shouldShowTabs = tabsItems.length > 1;\n\n  if (!shouldShowTabs) {\n    return <>{scoreView}</>;\n  }\n\n  return (\n    <Tabs\n      items={tabsItems}\n      defaultActiveKey=\"music\"\n      onChange={onTabChange}\n      style={{\n        width: \"100%\",\n        flex: \"1\",\n        ...(activeTab === \"text\" || activeTab === \"intro\" ? { height: \"100%\" } : {})\n      }}\n    />\n  );\n}\n\nexport { type TabLayoutProps };\n","import { Splitter } from 'antd';\nimport useStore from '../store';\n\ninterface SplitViewLayoutProps {\n  scoreView: React.ReactNode;\n  textView: React.ReactNode | null;\n  introView: React.ReactNode | null;\n  facsimileView: React.ReactNode | null;\n  sizes: (number | string)[];\n  setSizes: (sizes: (number | string)[]) => void;\n}\n\nexport default function SplitViewLayout({\n  scoreView,\n  textView,\n  introView,\n  facsimileView,\n  sizes,\n  setSizes,\n}: SplitViewLayoutProps) {\n\n  const activeSplitView = useStore.use.activeSplitView();\n  const orientation = useStore.use.splitViewOrientation();\n\n  const getSecondaryView = (): React.ReactNode => {\n    if (activeSplitView === \"facsimile\") {\n      return facsimileView;\n    } else if (activeSplitView === \"text\") {\n      return textView;\n    } else if (activeSplitView === \"intro\") {\n      return introView;\n    }\n    return null;\n  };\n\n  return (\n    <>\n      <Splitter\n        layout={orientation}\n        onResize={setSizes}\n        style={{ height: \"100%\", boxShadow: '0 0 10px rgba(0, 0, 0, 0.1)' }}\n      >\n        <Splitter.Panel size={sizes[0]} resizable={true}>\n          {scoreView}\n        </Splitter.Panel>\n        <Splitter.Panel size={sizes[1]}>\n          {getSecondaryView()}\n        </Splitter.Panel>\n      </Splitter>\n    </>\n  );\n}\n\nexport { type SplitViewLayoutProps };\n","import { useCallback, useEffect, useState } from 'react';\nimport TabLayout from './TabLayout';\nimport SplitViewLayout from './SplitViewLayout';\nimport useStore from \"../store\";\n\n\ninterface LayoutManagerProps {\n  scoreView: React.ReactNode;\n  textView: React.ReactNode | null;\n  introView: React.ReactNode | null;\n  facsimileView: React.ReactNode | null;\n\n  showIntroductionSection: boolean;\n  showTextSection: boolean;\n  showFacsimileSection: boolean;\n}\n\nexport default function LayoutManager({\n  scoreView,\n  textView,\n  introView,\n  facsimileView,\n\n  showIntroductionSection,\n  showTextSection,\n  showFacsimileSection,\n}: LayoutManagerProps) {\n\n  const isSplitView = useStore.use.isSplitView();\n  const splitViewOrientation = useStore.use.splitViewOrientation();\n  const activeSplitView = useStore.use.activeSplitView();\n  const setActiveSplitView = useStore.use.setActiveSplitView();\n  const activeTab = useStore.use.activeTab()\n  const setActiveTab = useStore.use.setActiveTab();\n\n\n  const [sizes, setSizes] = useState<(number | string)[]>(['50%', '50%']);\n\n  useEffect(() => {\n    setSizes(['50%', '50%']);\n  }, [isSplitView, splitViewOrientation]);\n\n\n  const checkContentAvailable = useCallback((key: string | null) => {\n    if (key === null) {\n      return false;\n    } else if (key === \"facsimile\" && facsimileView === null) {\n      return false;\n    } else if (key === \"text\" && textView === null) {\n      return false;\n    } else if (key === \"intro\" && introView === null) {\n      return false;\n    }\n    return true;\n  }, [facsimileView, textView, introView]);\n\n  const tabContentNotAvailable = useCallback(() => {\n    return !checkContentAvailable(activeTab);\n  }, [checkContentAvailable, activeTab]);\n\n  const splitViewContentNotAvailable = useCallback(() => {\n    return !checkContentAvailable(activeSplitView);\n  }, [checkContentAvailable, activeSplitView]);\n\n  const getAvailableViews = useCallback(() => {\n    const options = [];\n    if (facsimileView) options.push('facsimile');\n    if (introView) options.push('intro');\n    if (textView) options.push('text');\n    return options;\n  }, [facsimileView, introView, textView]);\n\n  // Handle content availability changes\n  useEffect(() => {\n    if (isSplitView && splitViewContentNotAvailable()) {\n      const availableViews = getAvailableViews();\n      if (availableViews.length > 0) {\n        setActiveSplitView(availableViews[0]);\n      }\n    } else if (!isSplitView && tabContentNotAvailable()) {\n      setActiveTab(\"music\");\n    }\n  }, [isSplitView, facsimileView, introView, textView, splitViewContentNotAvailable, tabContentNotAvailable, getAvailableViews, setActiveSplitView, setActiveTab]);\n\n  // Determine what to render\n  const shouldShowTabs = !isSplitView && (showIntroductionSection || showTextSection || showFacsimileSection);\n  const hasMultipleTabs = [introView, textView, facsimileView].filter(Boolean).length > 0;\n\n  if (isSplitView) {\n    return (\n      <SplitViewLayout\n        scoreView={scoreView}\n        textView={textView}\n        introView={introView}\n        facsimileView={facsimileView}\n        sizes={sizes}\n        setSizes={setSizes}\n      />\n    );\n  } else if (shouldShowTabs && hasMultipleTabs) {\n    return (\n      <TabLayout\n        scoreView={scoreView}\n        textView={textView}\n        introView={introView}\n        facsimileView={facsimileView}\n        showIntroductionSection={showIntroductionSection}\n        showTextSection={showTextSection}\n        showFacsimileSection={showFacsimileSection}\n      />\n    );\n  } else {\n    return (\n      scoreView\n    );\n  }\n}\n\nexport { type LayoutManagerProps };\n","import { useCallback, useMemo } from 'react';\nimport { Space, Select, Typography } from 'antd';\nimport { useTranslation } from 'react-i18next';\nimport useStore from '../store';\n\ninterface SplitViewSelectorProps {\n  facsimileView: React.ReactNode | null;\n  introView: React.ReactNode | null;\n  textView: React.ReactNode | null;\n}\n\nexport default function SplitViewSelector({\n  facsimileView,\n  introView,\n  textView\n}: SplitViewSelectorProps) {\n  const { t } = useTranslation(\"common\");\n  const activeSplitView = useStore.use.activeSplitView();\n  const setActiveSplitView = useStore.use.setActiveSplitView();\n\n  const selectorItems = useMemo(() => [\n    facsimileView ? { label: t('tab.facsimile'), value: 'facsimile' } : null,\n    introView ? { label: t('tab.introduction'), value: 'intro' } : null,\n    textView ? { label: t('tab.text'), value: 'text' } : null,\n  ].filter(item => item != null)\n  ,[facsimileView, introView, textView, t]);\n\n  const onActiveSplitViewChange = useCallback((value: string) => {\n    setActiveSplitView(value);\n  }, [setActiveSplitView]);\n\n  if (selectorItems.length === 0) {\n    return null;\n  }\n\n  return (\n    <Space direction='horizontal' style={{ marginBottom: \"10px\", textAlign: \"start\", flex: \"0\" }}>\n      <Typography.Text style={{ marginLeft: \"10px\" }}>{t('heading.splitViewSelector')}:</Typography.Text>\n      <Select\n        style={{ minWidth: \"200px\", marginRight: \"10px\" }}\n        options={selectorItems}\n        value={activeSplitView}\n        onChange={onActiveSplitViewChange}\n      />\n    </Space>\n  );\n}\n\nexport { type SplitViewSelectorProps };\n","import { useMemo } from 'react';\nimport { Button, Select, Space, Typography } from 'antd';\nimport Icon, { SettingOutlined } from '@ant-design/icons';\nimport { DefaultOptionType } from 'antd/es/select';\nimport { useTranslation } from 'react-i18next';\nimport { PlayingState } from '../types';\nimport SplitViewSelector from './SplitViewSelector';\nimport useStore from '../store';\n\ninterface ScoreViewerHeaderProps {\n  showScoreSelector: boolean;\n  showOptions: boolean;\n  selectorLabel: string | \"work\" | \"section\";\n  scoreItems: DefaultOptionType[];\n  onScoreSelectedChanged: (value: number) => void;\n\n  facsimileView: React.ReactNode | null;\n  introView: React.ReactNode | null;\n  textView: React.ReactNode | null;\n\n  onShowDrawer: () => void;\n}\n\nexport default function ScoreViewerHeader({\n  showScoreSelector,\n  showOptions,\n  selectorLabel,\n  scoreItems,\n  onScoreSelectedChanged: onScoreChanged,\n  facsimileView,\n  introView,\n  textView,\n  onShowDrawer\n}: ScoreViewerHeaderProps) {\n  const { t } = useTranslation(\"common\");\n  const isSplitView = useStore.use.isSplitView();\n  const playingState = useStore.use.playingState();\n  const label = selectorLabel === \"work\" ? t('heading.work') : t('heading.section');\n\n\n  const scoreSelector = useMemo(() =>\n    showScoreSelector ?\n      <Space direction='horizontal' style={{ marginBottom: \"10px\", textAlign: \"start\", flex: \"0\" }}>\n        <Typography.Text style={{ marginLeft: \"10px\" }}>{label}:</Typography.Text>\n        <Select\n          style={{ minWidth: \"200px\", marginRight: \"10px\" }}\n          defaultValue={0}\n          options={scoreItems}\n          onChange={onScoreChanged} />\n      </Space>\n      : null\n    , [showScoreSelector, scoreItems, onScoreChanged, t]);\n\n  const splitViewSelector = useMemo(() => isSplitView ?\n    <SplitViewSelector\n      facsimileView={facsimileView}\n      introView={introView}\n      textView={textView}\n    /> : null\n    , [isSplitView, facsimileView, introView, textView]);\n\n  return (\n    <Space direction='horizontal' style={{\n      width: \"100%\",\n      justifyContent: scoreSelector || splitViewSelector ? \"space-between\" : \"flex-end\",\n      alignItems: \"center\"\n    }}>\n      {scoreSelector}\n      {splitViewSelector}\n      {showOptions ? <Button\n        icon={<Icon component={SettingOutlined} />}\n        onClick={onShowDrawer}\n        disabled={playingState === PlayingState.PLAYING}>\n        {t('scoreControls.settings')}\n      </Button> : null}\n    </Space>\n  );\n}\n\nexport { type ScoreViewerHeaderProps };\n","import { useEffect, useRef } from 'react';\nimport { isMobile, useMobileOrientation } from 'react-device-detect';\nimport { ScoreViewContainerRef } from '../ScoreViewContainer';\nimport { PlayingState, VisualizationOptions } from '../types';\nimport { LANGUAGE_SESSION_STORAGE_KEY } from '../types';\nimport { ScoreViewerConfigScore } from '../types/config';\n\ninterface UseScoreViewerEffectsProps {\n  configLanguage?: string;\n  configScores: ScoreViewerConfigScore[];\n  configShowScoreSelector: boolean;\n  playingState: PlayingState;\n  setPlayingState: (state: PlayingState) => void;\n  activeTab: string;\n  scoreViewContainerRef: React.RefObject<ScoreViewContainerRef | null>;\n  showOriginalClefs: boolean | null;\n  showReconstructions: { [staff: string]: string };\n  onVisualizationOptionsChanged?: (options: VisualizationOptions) => void;\n  i18n: any;\n  loadAll: (scoreIndex: number) => void;\n}\n\nexport function useScoreViewerEffects({\n  configLanguage,\n  configScores,\n  configShowScoreSelector,\n  playingState,\n  setPlayingState,\n  activeTab,\n  scoreViewContainerRef,\n  showOriginalClefs,\n  showReconstructions,\n  onVisualizationOptionsChanged,\n  i18n,\n  loadAll\n}: UseScoreViewerEffectsProps) {\n  const mobileOrientation = useMobileOrientation();\n  const hasInitiallyLoaded = useRef(false);\n\n  useEffect(() => {\n    if (configLanguage && configLanguage !== \"autodetect\" && sessionStorage.getItem(LANGUAGE_SESSION_STORAGE_KEY) == null) {\n      i18n.changeLanguage(configLanguage);\n    }\n  }, [configLanguage, i18n]);\n\n  // Initial score loading effect\n  useEffect(() => {\n    if (configScores.length > 0 && configShowScoreSelector && !hasInitiallyLoaded.current) {\n      hasInitiallyLoaded.current = true;\n      loadAll(0);\n    }\n  }, []);\n\n  useEffect(() => {\n    if (onVisualizationOptionsChanged && showOriginalClefs != null) {\n      onVisualizationOptionsChanged({ showOriginalClefs });\n    }\n  }, [showOriginalClefs]);\n\n  useEffect(() => {\n    if (onVisualizationOptionsChanged && Object.keys(showReconstructions).length > 0) {\n      onVisualizationOptionsChanged({ showReconstructions });\n    }\n  }, [showReconstructions]);\n\n  useEffect(() => {\n    if (playingState == PlayingState.PLAYING) {\n      setPlayingState(PlayingState.STOPPED);\n    }\n  }, [showReconstructions]);\n\n  useEffect(() => {\n    if (isMobile && mobileOrientation.isLandscape && activeTab == \"music\") {\n      setTimeout(() => {\n        scoreViewContainerRef.current?.scrollIntoView();\n      }, 100);\n    }\n  }, [mobileOrientation.orientation, activeTab, scoreViewContainerRef]);\n}\n","import './App.css'\nimport useStore from \"./store\";\nimport { forwardRef, Ref, useCallback, useMemo, useRef, useState } from 'react';\nimport useVerovio from './useVerovio';\nimport { Context } from './Context';\nimport { ConfigProvider, theme, Typography } from 'antd'\nimport { isMobile, useMobileOrientation } from 'react-device-detect';\nimport ErrorBoundary from './ErrorBoundary';\nimport { FacsimileItem, ScoreProperties, VisualizationOptions } from './types';\nimport ScoreViewContainer, { ScoreViewContainerRef } from './ScoreViewContainer';\nimport { DefaultOptionType } from 'antd/es/select';\nimport TextView from './TextView';\nimport FacsimileView from './FacsimileView';\nimport { ScoreViewerConfig } from './types/config';\nimport { useScoreManager } from './hooks/useScoreManager';\nimport { useTextParts } from './hooks/useTextParts';\nimport { useImperativeHandle } from 'react';\nimport { useConfigValidation } from './hooks/useConfigValidation';\nimport { useTranslation } from 'react-i18next';\nimport ErrorView from './ErrorView';\nimport ScoreOptionsPanel from './ScoreOptionsPanel';\nimport LayoutManager from './components/LayoutManager';\nimport ScoreViewerHeader from './components/ScoreViewerHeader';\nimport { useScoreViewerEffects } from './hooks/useScoreViewerEffects';\n\n\nexport interface ScoreViewerProps {\n  config: ScoreViewerConfig\n  width: string\n  height: string\n  onScoreAnalyzed?: (scoreIndex: number, properties: ScoreProperties) => void\n  onVisualizationOptionsChanged?: (options: VisualizationOptions) => void\n}\n\nexport interface ScoreViewerRef {\n  goToSection: (sectionId: string) => void\n  selectScore: (scoreIndex: number | null) => void\n}\n\n\ntype FetchError = {\n  url: string\n  error: Error;\n}\n\n\nconst ScoreViewer = ({ config, width, height, onScoreAnalyzed, onVisualizationOptionsChanged }: ScoreViewerProps, ref: Ref<ScoreViewerRef>) => {\n  const { t, i18n } = useTranslation(\"common\");\n\n  const { configErrors, hasConfigErrors } = useConfigValidation(config);\n\n  const score = useStore.use.score()\n\n  const showReconstructions = useStore.use.showReconstructions()\n  const normalizeFicta = useStore.use.normalizeFicta()\n  const showOriginalClefs = useStore.use.showOriginalClefs()\n  const activeTab = useStore.use.activeTab()\n\n  const playingState = useStore.use.playingState()\n  const setPlayingState = useStore.use.setPlayingState()\n\n  const goToSection = useStore.use.goToSection()\n\n  const verovio = useVerovio()\n  const mobileOrientation = useMobileOrientation()\n\n  const [fetchScoreError, setFetchScoreError] = useState<FetchError | null>(null);\n\n\n\n  const [introAvailable, setIntroAvailable] = useState<boolean>(false);\n  const [textAvailable, setTextAvailable] = useState<boolean>(false);\n  const [facsimileItems, setFacsimileItems] = useState<FacsimileItem[]>([]);\n\n  const scoreViewContainerRef = useRef<ScoreViewContainerRef>(null);\n  const [openDrawer, setOpenDrawer] = useState(false);\n\n\n  const onFetchScoreError = (url: string, error: Error) => {\n    setFetchScoreError({ url, error });\n    unloadScore()\n  }\n\n  const { fetchScore, unloadScore, hasIntro, hasText } = useScoreManager({ t, config, normalizeFicta, onScoreAnalyzed, onFetchScoreError });\n\n  const { fetchTextParts, textIntroduction, textLyrics, textComments } = useTextParts({ config })\n\n  const overflow = useMemo(() =>\n    isMobile && mobileOrientation.isLandscape ? \"scroll\" : \"hidden\"\n    , [isMobile, mobileOrientation, height])\n\n  const renderMainContent = (content: React.ReactNode) =>\n    <ConfigProvider\n      theme={{\n        algorithm: theme.defaultAlgorithm,\n        token: {\n          fontSize: isMobile ? 12 : 16\n        },\n      }}>\n      <Context.Provider value={{ verovio }}>\n        <ErrorBoundary>\n          <div className=\"score-viewer-top-element\" style={{ width: width, height: height, overflow: overflow }}>\n            <div style={{\n              width: \"calc(100% - 12px)\",\n              height: \"calc(100% - 12px)\",\n              padding: \"6px\",\n              display: \"flex\",\n              flexDirection: \"column\"\n            }}>\n              {content}\n            </div>\n          </div>\n        </ErrorBoundary>\n      </Context.Provider>\n    </ConfigProvider>\n\n\n  if (hasConfigErrors) {\n    return renderMainContent(\n      <ErrorView message={t('error.configValidation')} description={\n        <div>\n          <p>{t('configValidation.configurationErrorDescription')}</p>\n          <ul>\n            {configErrors.map((error, index) => (\n              <li key={index}>\n                <strong>{error.field}:</strong> {error.message}\n              </li>\n            ))}\n          </ul>\n        </div>\n      } />\n    )\n  }\n\n\n\n  const loadAll = useCallback((scoreIndex: number) => {\n    setFetchScoreError(null);\n    setIntroAvailable(hasIntro(scoreIndex));\n    setTextAvailable(hasText(scoreIndex));\n    setFacsimileItems(config.scores[scoreIndex].facsimileItems || []);\n    fetchScore(scoreIndex);\n    fetchTextParts(scoreIndex);\n  }, [config.scores, fetchScore, fetchTextParts]);\n\n  useImperativeHandle(ref, () => ({\n    goToSection: (section: string) => {\n      goToSection(section)\n    },\n    selectScore: (scoreIndex: number | null) => {\n      if (scoreIndex === null) {\n        unloadScore()\n      } else if (scoreIndex >= 0 && scoreIndex < config.scores.length) {\n        loadAll(scoreIndex);\n      }\n    }\n  }));\n\n  // All effects moved to useScoreViewerEffects hook\n  useScoreViewerEffects({\n    configLanguage: config.settings.language,\n    configScores: config.scores,\n    configShowScoreSelector: config.settings.showScoreSelector,\n    playingState,\n    setPlayingState,\n    activeTab,\n    scoreViewContainerRef,\n    showOriginalClefs,\n    showReconstructions,\n    onVisualizationOptionsChanged,\n    i18n,\n    loadAll\n  });\n\n  const onScoreSelectedChanged = (value: number) => {\n    loadAll(value);\n  };\n\n  const scoreItems: DefaultOptionType[] = useMemo(() => config.scores.map((score, index) => ({\n    label: score.title,\n    value: index,\n  })), [config.scores])\n\n\n\n\n  // On mobile devices we give the controls + score the full height assigned\n  // to the component + scrolling  on the top element to maximize the space\n  // available for the score\n  const containerHeight = useMemo(() => isMobile && mobileOrientation.isLandscape ? height : \"100%\"\n    , [isMobile, mobileOrientation, height])\n\n\n\n  const introView = useMemo(() =>\n    config.settings.showIntroductionSection && introAvailable ?\n      <TextView intro={textIntroduction} /> : null\n    , [config.settings.showIntroductionSection, introAvailable, textIntroduction])\n\n  const scoreView = useMemo(() => {\n    if (fetchScoreError != null) {\n      return <ErrorView message={t('error.fetchingScore.title')} description={\n        <div>\n          <p>{t('error.fetchingScore.details', { url: fetchScoreError.url })}</p>\n          {fetchScoreError.error.message.split('\\n').map((c, i) => { return (<p key={i}> {c} </p>) })}\n        </div>\n      } />\n    } else {\n      return <ScoreViewContainer\n        ref={scoreViewContainerRef}\n        backgroundColor={config.settings.backgroundColor}\n        showDownloadButton={config.settings.showDownloadButton}\n        showMusicAnalysisByDefault={config.settings.showMusicAnalysisByDefault}\n        height={containerHeight} />\n    }\n  }, [config.settings.backgroundColor, config.settings.showDownloadButton, containerHeight, fetchScoreError, t])\n\n  const textView = useMemo(() =>\n    config.settings.showTextSection && textAvailable ?\n      <TextView items={textLyrics} comments={textComments} /> : null\n    , [config.settings.showTextSection, textAvailable, textLyrics, textComments])\n\n  const title = useMemo(() => config.settings.showTitle && score?.title ?\n    <Typography.Title style={{ flex: \"0\" }} level={3}>{score.title}</Typography.Title> : null\n    , [config.settings.showTitle, score])\n\n  const facsimileView = useMemo(() =>\n    config.settings.showFacsimileSection && facsimileItems?.length ?\n      <FacsimileView path={config.settings.facsimileImagesPath} items={facsimileItems} /> : null\n    , [config.settings.showFacsimileSection, config.settings.facsimileImagesPath, facsimileItems])\n\n\n\n  const content = useMemo(() => (\n    <LayoutManager\n      scoreView={scoreView}\n      textView={textView}\n      introView={introView}\n      facsimileView={facsimileView}\n      showIntroductionSection={config.settings.showIntroductionSection}\n      showTextSection={config.settings.showTextSection}\n      showFacsimileSection={config.settings.showFacsimileSection}\n    />\n  ), [\n    scoreView, textView, introView, facsimileView,\n    config.settings.showIntroductionSection, config.settings.showTextSection, config.settings.showFacsimileSection,\n  ]);\n\n  const showDrawer = useCallback(() => {\n    setOpenDrawer(true);\n  }, []);\n\n  const onDrawerClose = useCallback(() => {\n    setOpenDrawer(false);\n  }, []);\n\n  const drawer = useMemo(() =>\n    openDrawer ? <ScoreOptionsPanel\n      allowUserLanguageChange={config.settings.allowUserLanguageChange}\n      showMusicAnalysisByDefault={config.settings.showMusicAnalysisByDefault}\n      onClose={onDrawerClose}\n      open={openDrawer} /> : null\n    , [openDrawer, config.settings.allowUserLanguageChange, onDrawerClose])\n\n\n  const header = useMemo(() => (\n    <ScoreViewerHeader\n      showScoreSelector={config.scores.length > 1 && config.settings.showScoreSelector}\n      showOptions={config.settings.showOptions}\n      selectorLabel={config.settings.selectorLabel || \"work\"}\n      scoreItems={scoreItems}\n      onScoreSelectedChanged={onScoreSelectedChanged}\n      facsimileView={facsimileView}\n      introView={introView}\n      textView={textView}\n      onShowDrawer={showDrawer}\n    />\n  ), [\n    config.scores.length, config.settings.showScoreSelector, scoreItems, onScoreSelectedChanged,\n    facsimileView, introView, textView, showDrawer\n  ]);\n\n  return renderMainContent(<>\n    {header}\n    {title}\n    {drawer}\n    {content}\n  </>)\n\n\n}\n\nexport default forwardRef<ScoreViewerRef, ScoreViewerProps>(ScoreViewer)\n"],"names":["isString","obj","defer","res","rej","promise","resolve","reject","makeString","object","copy","a","s","t","m","lastOfPathSeparatorRegExp","cleanKey","key","canNotTraverseDeeper","getLastOfPath","path","Empty","stack","stackIndex","setPath","newValue","k","e","p","last","pushPath","concat","getPath","getPathWithDefaults","data","defaultData","value","deepExtend","target","source","overwrite","prop","regexEscape","str","_entityMap","escape","RegExpCache","capacity","pattern","regExpFromCache","regExpNew","chars","looksLikeObjectPathRegExpCache","looksLikeObjectPath","nsSeparator","keySeparator","possibleChars","c","r","matched","ki","deepFind","tokens","current","i","next","nextPath","j","getCleanedCode","code","consoleLogger","args","type","_b","_a","Logger","concreteLogger","options","lvl","prefix","debugOnly","moduleName","baseLogger","EventEmitter","events","listener","event","numListeners","observer","numTimesAdded","ResourceStore","ns","index","lng","ignoreJSONStructure","result","resources","deep","pack","v","postProcessor","module","processors","translator","processor","checkedLoadedFor","shouldHandleAsObject","Translator","services","o","opt","resolved","namespaces","wouldCheckForNsInKey","seemsNaturalLanguage","parts","keys","lastKey","returnDetails","namespace","appendNamespaceToCIMode","resUsedKey","resExactUsedKey","noObject","joinArrays","handleAsObjectInI18nFormat","needsPluralHandling","hasDefaultValue","defaultValueSuffix","defaultValueSuffixOrdinalFallback","needsZeroSuffixLookup","defaultValue","resForObjHndl","handleAsObject","resType","resTypeIsArray","newKeyToUse","deepKey","usedDefault","usedKey","resForMissing","updateMissing","fk","lngs","fallbackLngs","send","l","specificDefaultValue","defaultForMissing","language","suffixes","suffix","skipOnVariables","nestBef","nb","na","nestAft","postProcess","postProcessorNames","found","exactUsedKey","usedLng","usedNS","extracted","needsContextHandling","codes","finalKeys","pluralSuffix","zeroSuffix","ordinalPrefix","contextKey","possibleKey","optionsKeys","useOptionsReplaceForData","option","LanguageUtil","formattedCode","cleanedLng","lngScOnly","lngOnly","supportedLng","fallbacks","fallbackCode","fallbackCodes","addCode","fc","suffixesOrder","dummyRule","count","PluralResolver","languageUtils","cleanedCode","cacheKey","rule","lngPart","pluralCategory1","pluralCategory2","pluralCategory","deepFindWithDefaults","regexSafe","val","Interpolator","escape$1","escapeValue","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapeSuffix","unescapePrefix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","getOrResetRegExp","existingRegExp","match","replaces","handleFormat","f","missingInterpolationHandler","todo","matchedVar","temp","safeValue","clonedOptions","handleHasOptions","inheritedOptions","sep","optionsString","matchedSingleQuotes","matchedDoubleQuotes","formatters","keyEndIndex","elem","parseFormatStr","formatStr","formatName","formatOptions","optStr","rest","trimmedKey","createCachedFormatter","fn","cache","optForCache","frm","createNonCachedFormatter","Formatter","cf","formatter","name","format","formats","lastIndex","mem","formatted","valOptions","error","removePending","q","Connector","backend","store","languages","callback","toLoad","pending","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","err","loaded","loadedKeys","n","fcName","tried","wait","resolver","fallbackValue","isUpdate","clb","_d","_c","_e","opts","get","ret","transformOptions","noop","bindMemberFunctions","inst","I18n","defOpts","createClassOnDemand","ClassOrObject","lu","deferred","load","finish","usedCallback","append","li","lngInLngs","setLngProps","done","setLng","fl","keyPrefix","fixedT","resultKey","fallbackLng","lastLng","loadNotPending","loadState","preResult","preloaded","newLngs","ti","rtlLngs","forkResourceStore","mergedOptions","clone","clonedData","prev","acc","instance","warn","i18n","msg","alreadyWarned","warnOnce","loadedClb","cb","initialized","loadNamespaces","loadLanguages","hasLoadedNamespace","i18nInstance","isObject","matchHtmlEntity","htmlEntities","unescapeHtmlEntity","defaultOptions","text","setDefaults","getDefaults","setI18n","getI18n","initReactI18next","I18nContext","createContext","ReportNamespaces","usePrevious","ignore","ref","useRef","useEffect","alwaysNewT","useMemoizedT","useCallback","useTranslation","props","i18nFromProps","i18nFromContext","defaultNSFromContext","useContext","notReadyT","optsOrDefaultValue","retNotReady","i18nOptions","useSuspense","ready","memoGetT","getT","getNewT","setT","useState","joinedNS","previousJoinedNS","isMounted","bindI18n","bindI18nStore","boundReset","slice","forEach","defaults","hasXSS","input","fieldContentRegExp","serializeCookie","maxAge","cookie","minutes","domain","cookieOptions","nameEQ","ca","cookie$1","_ref","lookupCookie","_ref2","cookieMinutes","cookieDomain","querystring","lookupQuerystring","search","params","pos","hash","lookupHash","lookupFromHashIndex","query","hasLocalStorageSupport","localStorageAvailable","testKey","localStorage","lookupLocalStorage","hasSessionStorageSupport","sessionStorageAvailable","sessionStorage","lookupSessionStorage","navigator$1","userLanguage","htmlTag","internalHtmlTag","lookupFromPathIndex","subdomain","lookupFromSubdomainIndex","internalLookupFromSubdomainIndex","canCookies","order","Browser","detector","detectionOrder","detected","detectorName","lookup","d","caches","cacheName","DEFAULT_SCALE","MIN_SCALE","MAX_SCALE","SUPPORTED_LANGUAGES","LANGUAGE_SESSION_STORAGE_KEY","Transition","i18nextOptions","en","es","LanguageDetector","lang","createStoreImpl","createState","state","listeners","setState","partial","replace","nextState","previousState","getState","api","initialState","createStore","identity","arg","useStore","selector","React","createImpl","useBoundStore","create","createSelectors","storeWithSelectors","loadAction","config","loadAutoScrollAction","renderAction","renderAutoScrollAction","FetchError","message","__publicField","PlayingState","createRenderingStore","set","action","createScoreManagementStore","score","mei","scoreCache","textCache","textComments","textIntroduction","textLyrics","createScoreViewerStore","pageCount","sectionPageMap","currentPage","page","sectionId","createUILayoutStore","isLoading","svg","scale","splitView","view","orientation","tab","createPlayerStore","playingState","position","autoScroll","createEditorialStore","reconstructions","showEditorial","showOriginalClefs","normalizeFicta","editorial","transposition","showMusicAnalysis","interval","createRenderedSvgStore","firstKey","StoreApi","createRenderingStoreWithSelectors","createScoreManagementStoreWithSelectors","createUILayoutStoreWithSelectors","createScoreViewerStoreWithSelectors","createPlayerStoreWithSelectors","createEditorialStoreWithSelectors","createRenderedSvgStoreWithSelectors","sharedWorker","workerReady","workerVersion","pendingRequests","initializationPromise","requestIdCounter","initializeWorker","VerovioWorker","timeout","initMsg","handleWorkerMessage","response","callWorkerMethod","method","id","request","createWorkerProxy","elementId","time","useVerovio","proxy","setProxy","workerRef","Context","hasOwn","classNames","classes","appendClass","parseValue","newClass","_extends","_typeof","REACT_ELEMENT_TYPE_18","REACT_ELEMENT_TYPE_19","REACT_FRAGMENT_TYPE","isFragment","toArray","children","child","warned","preWarningFns","preMessage","warning","valid","finalMessage","preMessageFn","note","resetWarned","call","warningOnce","noteOnce","toPrimitive","toPropertyKey","_defineProperty","ownKeys","_objectSpread2","defineProperty","isDOM","node","getDOM","findDOMNode","domNode","_ReactDOM$findDOMNode","ReactDOM","b","g","h","u","reactIs_production_min","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_SERVER_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_OFFSCREEN_TYPE","enableScopeAPI","enableCacheElement","enableTransitionTracing","enableLegacyHidden","enableDebugTracing","REACT_MODULE_REFERENCE","isValidElementType","typeOf","$$typeof","$$typeofType","ContextConsumer","ContextProvider","Element","ForwardRef","Fragment","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","SuspenseList","hasWarnedAboutDeprecatedIsAsyncMode","hasWarnedAboutDeprecatedIsConcurrentMode","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","isSuspenseList","reactIs_development","reactIsModule","require$$0","require$$1","useMemo","getValue","condition","shouldUpdate","cacheRef","ReactMajorVersion","version","fillRef","composeRef","_len","refs","_key","refList","useComposeRef","_len2","_key2","supportRef","nodeOrComponent","_type$prototype","_nodeOrComponent$prot","isReactElement","isValidElement","getNodeRef","ele","CollectionContext","Collection","onBatchResize","resizeIdRef","resizeInfosRef","onCollectionResize","onResize","size","element","currentId","MapShim","getIndex","arr","entry","class_1","entries","ctx","_i","isBrowser","global$1","requestAnimationFrame$1","trailingTimeout","throttle","delay","leadingCall","trailingCall","lastCallTime","resolvePending","timeoutCallback","timeStamp","REFRESH_DELAY","transitionKeys","mutationObserverSupported","ResizeObserverController","observers","changesDetected","activeObservers","propertyName","isReflowProperty","defineConfigurable","getWindowOf","ownerGlobal","emptyRect","createRectInit","toFloat","getBordersSize","styles","positions","getPaddings","paddings","positions_1","getSVGContentRect","bbox","getHTMLElementContentRect","clientWidth","clientHeight","horizPad","vertPad","width","height","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","getContentRect","createReadOnlyRect","x","y","Constr","rect","ResizeObservation","ResizeObserverEntry","rectInit","contentRect","ResizeObserverSPI","controller","callbackCtx","observations","_this","observation","ResizeObserver","elementListeners","entities","entity","_elementListeners$get","resizeObserver","observe","unobserve","_classCallCheck","_defineProperties","_createClass","_setPrototypeOf","_inherits","setPrototypeOf","_getPrototypeOf","_isNativeReflectConstruct","_assertThisInitialized","_possibleConstructorReturn","assertThisInitialized","_createSuper","isNativeReflectConstruct","getPrototypeOf","possibleConstructorReturn","DomWrapper","_React$Component","_super","SingleObserver","disabled","elementRef","wrapperRef","isRenderProps","mergedChildren","sizeRef","canRef","originRef","mergedRef","getDom","_elementRef$current","propsRef","onInternalResize","_propsRef$current","_target$getBoundingCl","offsetWidth","offsetHeight","fixedWidth","fixedHeight","mergedOffsetWidth","mergedOffsetHeight","sizeInfo","_objectSpread","currentElement","RefSingleObserver","INTERNAL_PREFIX_KEY","childNodes","RefResizeObserver","_arrayLikeToArray","_arrayWithoutHoles","arrayLikeToArray","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","_toConsumableArray","arrayWithoutHoles","iterableToArray","unsupportedIterableToArray","nonIterableSpread","raf","caf","num","handle","rafUUID","rafIds","cleanup","wrapperRaf","times","callRef","leftTimes","realId","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","_slicedToArray","arrayWithHoles","iterableToArrayLimit","nonIterableRest","murmur2","len","canUseDom","contains","root","APPEND_ORDER","APPEND_PRIORITY","MARK_KEY","containerCache","getMark","mark","getContainer","head","getOrder","prepend","findStyles","container","injectCSS","css","csp","_option$priority","priority","mergedOrder","isPrependQueue","styleNode","firstChild","existStyle","nodePriority","findExistNode","removeCSS","existNode","syncRealContainer","cachedRealContainer","placeholderStyle","parentNode","updateCSS","originOption","_option$csp","_option$csp2","_option$csp3","newNode","_objectWithoutPropertiesLoose","_objectWithoutProperties","objectWithoutPropertiesLoose","isEqual","obj1","obj2","shallow","refSet","deepEqual","level","circular","newLevel","SPLIT","pathKey","Entity","instanceId","keyPathStr","valueFn","prevValue","nextValue","ATTR_TOKEN","ATTR_MARK","ATTR_CACHE_PATH","CSS_IN_JS_INSTANCE","createCache","cssinjsInstanceId","style","styleHash","_style$parentNode","CacheEntity","StyleContext","sameDerivativeOption","left","right","ThemeCache","derivativeOption","_cache2","_cache3","updateCallTimes","derivative","_cache","_this$internalGet","_this$keys$reduce","_result","callTimes","_this$keys$reduce2","targetKey","cacheValue","currentCache","derivatives","_cache$value","item","uuid","Theme","token","cacheThemes","createTheme","derivativeArr","resultCache","RESULT_VALUE","memoResult","deps","dep","flattenTokenCache","flattenToken","token2key","salt","isClientSide","unit","toStyleStr","tokenKey","styleId","customizeAttrs","plain","attrs","attrStr","attr","token2CSSVar","serializeCSSVar","cssVars","hashId","transformToken","themeKey","_ref3","_config$preserve","_config$ignore","_ref4","_config$unitless","cssVar","useInternalLayoutEffect","useLayoutEffect","firstMountRef","useLayoutUpdateEffect","firstMount","fullClone","useInsertionEffect","useInsertionEffectPolyfill","renderEffect","effect","useCompatibleInsertionEffect","useCleanupRegister","effectCleanups","cleanupFlag","register","useRun","useEffectCleanupRegister","useProdHMR","webpackHMR","useDevHMR","useHMR","win","originWebpackHotUpdate","useGlobalCache","keyPath","cacheFn","onCacheRemove","onCacheEffect","_React$useContext","globalCache","fullPath","fullPathStr","HMRUpdate","buildCache","updater","prevCache","_ref2$","tmpCache","mergedCache","cacheEntity","cacheContent","polyfill","_ref5","_ref6","_ref6$","nextCount","EMPTY_OVERRIDE","hashPrefix","tokenKeys","recordCleanToken","removeStyleTags","TOKEN_THRESHOLD","cleanTokenStyle","tokenKeyList","cleanableKeyList","getComputedToken","originToken","overrideToken","theme","derivativeToken","mergedDerivativeToken","TOKEN_PREFIX","useCacheToken","_useContext","_option$salt","_option$override","override","formatToken","compute","mergedToken","tokenStr","overrideTokenStr","cssVarStr","cachedToken","_cssVar$key","actualToken","cssVarsStr","_transformToken","_transformToken2","extract","effectStyles","realToken","styleStr","cssVarKey","sharedAttrs","styleText","unitlessKeys","COMMENT","RULESET","DECLARATION","IMPORT","NAMESPACE","KEYFRAMES","LAYER","abs","from","trim","replacement","indexof","charat","substr","begin","end","strlen","sizeof","array","line","column","length","character","characters","parent","siblings","char","peek","caret","alloc","dealloc","delimit","delimiter","whitespace","escaping","commenter","identifier","compile","parse","rules","rulesets","pseudo","points","declarations","offset","atrule","property","previous","variable","scanning","ampersand","reference","comment","declaration","ruleset","post","z","serialize","output","stringify","lintWarning","info","parentSelectors","devWarning","linter","contentValuePattern","contentValues","ATTR_CACHE_MAP","CSS_FILE_STYLE","cachePathMap","fromCSSFile","prepare","div","content","_item$split","_item$split2","inlineMapStyle","_inlineMapStyle$paren","existPath","getStyleAndHash","_style","SKIP_CHECK","MULTI_VALUE","normalizeStyle","serialized","isCompoundCSSProperty","injectSelectorHash","hashPriority","hashClassName","hashSelector","_firstPath$match","firstPath","htmlElement","parseStyle","interpolation","injectHash","layer","_config$transformers","transformers","_config$linters","linters","effectStyle","parseKeyframes","keyframes","animationName","_parseStyle","_parseStyle2","_parsedStr","flattenList","list","fullList","flattenStyleList","originStyle","mergedStyle","trans","_trans$visit","subInjectHash","mergedKey","nextRoot","_parseStyle3","_parseStyle4","_parsedStr2","childEffectStyle","appendStyle","cssKey","cssValue","contentQuotesLinter","hashedAnimationLinter","styleName","formatValue","unitless","_value","actualValue","uniqueHash","STYLE_PREFIX","useStyleRegister","styleFn","nonce","clientOnly","_info$order","autoClear","mock","defaultCache","ssrInline","enableLayer","isMergedClientSide","_useGlobalCache","cachePath","_getStyleAndHash","_getStyleAndHash2","inlineCacheStyleStr","styleObj","_parseStyle5","_parseStyle6","parsedStyle","fromHMR","mergedCSSConfig","nonceStr","effectLayerKeys","effectRestKeys","effectKey","_useGlobalCache2","cachedStyleStr","cachedTokenKey","cachedStyleId","_ref7","keyStyleText","effectStyleStr","effectStyleHTML","CSS_VAR_PREFIX","useCSSVarRegister","_config$scope","scope","stylePath","_ExtractStyleFns","styleExtractStyle","tokenExtractStyle","cssVarExtractStyle","Keyframe","noSplit","IconContext","_toArray","internalSet","paths","removeIfUndefined","_paths","restPath","createEmpty","merge","sources","src","internalMerge","parentLoopSet","loopSet","isArr","originValue","deprecatedWarnList","rcResetWarned","_warning","component","rcWarning","WarningContext","devUseWarning","strict","typeWarning","existWarning","oldProp","newProp","noopWarning","ValidateMessagesContext","locale","commonLocale","CalendarLocale","TimePickerLocale","typeTemplate","localeValues","Pagination","DatePicker","TimePicker","Calendar","runtimeLocale","defaultLocale","localeList","generateLocale","merged","changeConfirmLocale","newLocale","cloneLocale","getConfirmLocale","LocaleContext","useLocale","componentName","fullLocale","getLocale","defaultLocaleData","localeFromContext","getLocaleCode","localeCode","ANT_MARK","LocaleProvider","_ANT_MARK__","getMemoizedContextValue","defaultPresetColors","seedToken","round","splitColorStr","parseNum","numList","parseHSVorHSL","_","limitRange","max","mergedMax","FastColor","matchFormat","matchPrefix","trimStr","hsv","adjustGamma","raw","R","G","B","delta","amount","color","calc","rgba","background","bg","alpha","other","hex","rHex","gHex","bHex","aHex","rgb","withoutPrefix","connectNum","index1","index2","huePrime","chroma","secondComponent","lightnessModification","vv","hh","ff","cells","txt","hueStep","saturationStep","saturationStep2","brightnessStep1","brightnessStep2","lightColorCount","darkColorCount","darkColorMap","getHue","light","hue","getSaturation","saturation","generate","patterns","pColor","presetPrimaryColors","red","volcano","orange","gold","yellow","lime","green","cyan","blue","geekblue","purple","magenta","grey","presetPalettes","genColorMapToken","seed","generateColorPalettes","generateNeutralColorPalettes","colorSuccessBase","colorWarningBase","colorErrorBase","colorInfoBase","colorPrimaryBase","colorBgBase","colorTextBase","primaryColors","successColors","warningColors","errorColors","infoColors","neutralColors","colorLink","linkColors","colorErrorBgFilledHover","genRadius","radiusBase","radiusLG","radiusSM","radiusXS","radiusOuter","genCommonMapToken","motionUnit","motionBase","borderRadius","lineWidth","genControlHeight","controlHeight","getLineHeight","fontSize","getFontSizes","base","fontSizes","baseSize","intSize","genFontMapToken","fontSizePairs","genFontSizes","pair","lineHeights","fontSizeMD","fontSizeSM","fontSizeLG","lineHeight","lineHeightSM","lineHeightLG","genSizeMapToken","sizeUnit","sizeStep","getAlphaColor","baseColor","getSolidColor","brightness","colors","bgBaseColor","textBaseColor","colorPalettes","colorKey","cur","defaultTheme","defaultDerivative","defaultConfig","defaultSeedToken","DesignTokenContext","defaultPrefixCls","defaultIconPrefixCls","Variants","defaultGetPrefixCls","suffixCls","customizePrefixCls","ConfigContext","ConfigConsumer","EMPTY_OBJECT","useComponentConfig","propName","context","getPrefixCls","direction","getPopupContainer","propValue","dynamicStyleMark","getStyle","globalPrefixCls","variables","formatColor","fillColor","colorVal","primaryColor","primaryActiveColor","registerTheme","DisabledContext","DisabledContextProvider","originDisabled","SizeContext","SizeContextProvider","originSize","useConfig","componentDisabled","componentSize","AbstractCalculator","CALC_UNIT","regexp","CSSCalculator","_AbstractCalculator","unitlessCssVar","numType","force","_this2","cssUnit","mergedUnit","NumCalculator","genCalc","Calculator","getCompVarPrefix","useEvent","fnRef","memoFn","_fnRef$current","useSafeState","destroyRef","_React$useState","_React$useState2","setValue","safeSetState","ignoreDestroy","hasValue","useMergedState","defaultStateValue","onChange","postState","_useState","_useState2","innerValue","setInnerValue","mergedValue","postMergedValue","onChangeFn","_useState3","_useState4","setPrevValue","triggerChange","getComponentToken","defaultToken","customToken","deprecatedTokens","oldTokenKey","newTokenKey","_customToken$newToken","enableStatistic","recording","objs","statistic","statisticToken","flush","_tokenKeys","componentToken","_statistic$componentN","getDefaultComponentToken","getDefaultToken","_token$component","mergeToken","genMaxMin","BEAT_LIMIT","ArrayKeyMap","compositeKey","ids","now","beat","uniqueMap","useUniqueMemo","cachedValue","useDefaultCSP","genStyleUtils","_config$useCSP","useCSP","useToken","usePrefix","getResetStyles","getCommonStyle","getCompUnitless","genStyleHooks","prefixToken","originUnitless","originCompUnitless","compUnitless","useStyle","genComponentStyleHook","useCSSVar","genCSSVarRegister","prefixCls","rootCls","_useStyle","_useStyle2","_useCSSVar","_useCSSVar2","wrapCSSVar","cssVarCls","_options$injectStyle","injectStyle","CSSVarRegister","_ref$cssVar","_useToken","_useToken2","_cells","concatComponent","mergedLayer","_useToken3","_usePrefix","rootPrefixCls","iconPrefixCls","_genMaxMin","min","sharedConfig","wrapSSR","_statisticToken","proxyToken","defaultComponentToken","componentCls","styleInterpolation","commonStyle","genSubStyleComponent","StyledComponent","_ref2$rootCls","PresetColors","version$1","isStableColor","frontColor","backgroundColor","fR","fG","fB","originAlpha","bR","bG","bB","fA","__rest","restToken","overrideTokens","screenXS","screenSM","screenMD","screenLG","screenXL","screenXXL","fastDuration","preserve","components","componentTheme","componentTokens","mergedComponentToken","rootDesignToken","hashed","mergedTheme","textEllipsis","resetComponent","needInheritFontFamily","resetIcon","clearFix","genLinkStyle","genCommonStyle","componentPrefixCls","resetFont","prefixSelector","rootPrefixSelector","resetStyle","resetFontStyle","genFocusOutline","genFocusStyle","genIconStyle","operationUnit","useLocalToken","linkStyle","genPresetColor","genCss","lightColor","lightBorderColor","darkColor","textColor","useResetIconStyle","useId","useThemeKey","useTheme","parentTheme","themeConfig","parentThemeConfig","cssVarEnabled","validKey","mergedComponents","mergedCssVar","prevTheme","nextTheme","_excluded","MotionProvider","useSyncState","_React$useReducer","_React$useReducer2","forceUpdate","currentValueRef","STATUS_NONE","STATUS_APPEAR","STATUS_ENTER","STATUS_LEAVE","STEP_NONE","STEP_PREPARE","STEP_START","STEP_ACTIVE","STEP_ACTIVATED","STEP_PREPARED","makePrefixMap","styleProp","eventName","prefixes","getVendorPrefixes","domSupport","vendorPrefixes","canUseDOM","_document$createEleme","prefixedEventNames","getVendorPrefixedEventName","prefixMap","stylePropList","internalAnimationEndName","internalTransitionEndName","supportTransition","animationEndName","transitionEndName","getTransitionName","transitionName","transitionType","useDomMotionEvents","onInternalMotionEnd","cacheElementRef","removeMotionEvents","patchMotionEvents","useIsomorphicLayoutEffect","useNextFrame","nextFrameRef","cancelNextFrame","nextFrame","nextFrameId","FULL_STEP_QUEUE","SIMPLE_STEP_QUEUE","SkipStep","DoStep","isActive","step","useStepQueue","status","prepareOnly","setStep","_useNextFrame","_useNextFrame2","startQueue","STEP_QUEUE","nextStep","doNext","useStatus","supportMotion","visible","getElement","_ref$motionEnter","motionEnter","_ref$motionAppear","motionAppear","_ref$motionLeave","motionLeave","motionDeadline","motionLeaveImmediately","onAppearPrepare","onEnterPrepare","onLeavePrepare","onAppearStart","onEnterStart","onLeaveStart","onAppearActive","onEnterActive","onLeaveActive","onAppearEnd","onEnterEnd","onLeaveEnd","onVisibleChanged","asyncVisible","setAsyncVisible","_useSyncState","_useSyncState2","getStatus","setStatus","setStyle","currentStatus","mountedRef","deadlineRef","getDomElement","activeRef","updateMotionEndStatus","currentActive","canEnd","_useDomMotionEvents","_useDomMotionEvents2","getEventHandlers","targetStatus","eventHandlers","_useStepQueue","newStep","onPrepare","_eventHandlers$step","_useStepQueue2","startStep","active","visibleRef","nextStatus","nextEventHandlers","firstMountChangeRef","genCSSMotion","transitionSupport","isSupportTransition","contextMotion","CSSMotion","_props$visible","_props$removeOnLeave","removeOnLeave","forceRender","motionName","leavedClassName","eventProps","nodeRef","wrapperNodeRef","_useStatus","_useStatus2","statusStep","statusStyle","mergedVisible","renderedRef","setNodeRef","motionChildren","mergedProps","statusSuffix","motionCls","originNodeRef","STATUS_ADD","STATUS_KEEP","STATUS_REMOVE","STATUS_REMOVED","wrapKeyToObject","keyObj","parseKeys","diffKeys","prevKeys","currentKeys","currentIndex","currentLen","prevKeyObjects","currentKeyObjects","hit","currentKeyObj","duplicatedKeys","matchKey","_excluded2","MOTION_PROP_NAMES","genCSSMotionList","OriginCSSMotion","CSSMotionList","removeKey","prevState","nextKeyEntities","keyEntities","restKeysCount","_this$props","_onVisibleChanged","restProps","Component","motionProps","changedVisible","parsedKeyObjects","mixedKeyEntities","prevEntity","MotionCacheContext","MotionWrapper","parentMotion","motion","needWrapMotionProviderRef","PropWarning","dropdownMatchSelectWidth","PropWarning$1","existThemeConfig","warnContext","PASSED_PROPS","globalIconPrefixCls","globalTheme","globalHolderRender","getGlobalPrefixCls","getGlobalIconPrefixCls","isLegacyTheme","setGlobalConfig","holderRender","globalConfig","ProviderChildren","customCsp","autoInsertSpaceInButton","alert","anchor","form","space","splitter","virtual","popupMatchSelectWidth","popupOverflow","legacyLocale","parentContext","customIconPrefixCls","segmented","spin","calendar","carousel","cascader","collapse","typography","checkbox","descriptions","divider","drawer","skeleton","steps","image","layout","mentions","modal","progress","slider","breadcrumb","menu","pagination","textArea","empty","badge","radio","rate","SWITCH","transfer","avatar","tag","table","card","tabs","timeline","timePicker","upload","notification","tree","colorPicker","datePicker","rangePicker","flex","wave","dropdown","warningConfig","tour","tooltip","popover","popconfirm","floatButtonGroup","variant","inputNumber","treeSelect","mergedPrefixCls","baseConfig","memoedConfig","prevConfig","currentConfig","CssInJsStyleContext","memoIconContextValue","childNode","validateMessages","memoTheme","algorithm","themeObj","parsedComponents","parsedToken","ConfigProvider","antLocale","CheckCircleFilled","getRoot","_ele$getRootNode","inShadow","getShadowRoot","camelCase","isIconDefinition","normalizeAttrs","rootProps","getSecondaryColor","generateColor","normalizeTwoToneColors","twoToneColor","svgBaseProps","iconStyles","useInsertStyles","eleRef","mergedStyleStr","shadowRoot","twoToneColorPalette","setTwoToneColors","secondaryColor","getTwoToneColors","IconBase","icon","className","onClick","svgRef","setTwoToneColor","_normalizeTwoToneColo","_normalizeTwoToneColo2","ReactIcon","getTwoToneColor","Icon","rotate","tabIndex","_React$useContext$pre","rootClassName","classString","iconTabIndex","svgStyle","AntdIcon","CheckCircleFilledSvg","RefIcon","CloseCircleFilled","CloseCircleFilledSvg","CloseOutlined","CloseOutlinedSvg","ExclamationCircleFilled","ExclamationCircleFilledSvg","InfoCircleFilled","InfoCircleFilledSvg","attributes","eventsName","propList","ariaPrefix","dataPrefix","pickAttrs","ariaOnly","mergedConfig","replaceElement","cloneElement","genAlertTypeStyle","bgColor","borderColor","iconColor","alertCls","genBaseStyle","duration","marginXS","marginSM","motionEaseInOutCirc","withDescriptionIconSize","colorText","colorTextHeading","withDescriptionPadding","defaultPadding","genTypeStyle","colorSuccess","colorSuccessBorder","colorSuccessBg","colorWarning","colorWarningBorder","colorWarningBg","colorError","colorErrorBorder","colorErrorBg","colorInfo","colorInfoBorder","colorInfoBg","genActionStyle","iconCls","motionDurationMid","fontSizeIcon","colorIcon","colorIconHover","useStyle$k","iconMapFilled","IconNode","iconType","CloseIconNode","isClosable","closeIcon","handleClose","ariaProps","mergedCloseIcon","Alert","description","banner","onMouseEnter","onMouseLeave","afterClose","showIcon","closable","closeText","otherProps","closed","setClosed","internalRef","contextClosable","contextCloseIcon","contextClassName","contextStyle","isShowIcon","mergedAriaProps","motionClassName","motionStyle","setRef","_callSuper","ErrorBoundary","componentStack","errorMessage","errorDescription","InternalAlert","useCSSVarCls","KeyCode","LoadingOutlined","LoadingOutlinedSvg","zIndexContext","CONTAINER_OFFSET","CONTAINER_MAX_OFFSET","CONTAINER_MAX_OFFSET_WITH_CHILDREN","containerBaseZIndexOffset","consumerBaseZIndexOffset","isContainerType","useZIndex","componentType","customZIndex","parentZIndex","isContainer","zIndex","maxZIndex","currentZIndex","usePatchElement","elements","setElements","patchElement","originElements","_OverloadYield","_regeneratorDefine","_regenerator","Generator","regeneratorDefine","GeneratorFunction","GeneratorFunctionPrototype","AsyncIterator","OverloadYield","_regeneratorAsyncGen","regeneratorAsyncIterator","regenerator","_regeneratorAsync","regeneratorAsyncGen","_regeneratorKeys","_regeneratorValues","_regeneratorRuntime","regeneratorValues","_t","regeneratorAsync","regeneratorKeys","asyncGeneratorStep","_asyncToGenerator","_next","_throw","reactRender","unmountComponentAtNode","createRoot","mainVersion","toggleWarning","skip","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","MARK","modernRender","legacyRender","render","modernUnmount","_x","_modernUnmount","_callee","_context","_container$MARK","legacyUnmount","unmount","_x2","_unmount","_callee2","_context2","unstableRender","majorVersion","fullKeys","unstableSetRender","omit","fields","isVisible","_getBBox","_element$getBoundingC","_width","_height","genWaveStyle","colorPrimary","useStyle$j","TARGET_CLS","isValidWaveColor","getTargetWaveColor","borderTopColor","validateNum","WaveEffect","registerUnmount","divRef","unmountRef","setWaveColor","setBorderRadius","setLeft","top","setTop","setWidth","setHeight","enabled","setEnabled","waveStyle","radius","syncPos","nodeStyle","isStatic","borderLeftWidth","borderTopWidth","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","isSmallComponent","holder","showWaveEffect","unmountCallback","useWave","showWave","targetNode","showEffect","rafId","Wave","containerRef","useSize","customSize","genSpaceCompactStyle","genSpaceStyle","antCls","genSpaceGapStyle","useStyle$i","spaceToken","SpaceCompactItemContext","useCompactItemContext","compactItemContext","compactItemClassnames","compactDirection","isFirstItem","isLastItem","separator","NoCompactStyle","CompactItem","others","Compact","directionConfig","block","mergedSize","clx","nodes","GroupSizeContext","ButtonGroup","sizeCls","rxTwoCNChar","isTwoCNChar","convertLegacyProps","isUnBorderedButtonVariant","splitCNCharsBySpace","needInserted","SPACE","spaceChildren","isPrevChildPure","childList","isCurrentChildPure","lastChild","IconWrapper","forwardRef","iconWrapperCls","InnerLoadingIcon","iconClassName","mergedIconCls","getCollapsedWidth","getRealWidth","DefaultLoadingIcon","loading","existIcon","mount","genButtonBorderStyle","buttonTypeCls","genGroupStyle","groupBorderColor","colorErrorHover","getRoundNumber","convertHsb2Hsv","resets","Color","_FastColor","hsb","lightness","hsbString","hsbaString","_this$toHsv","ColorPickerPrefixCls","defaultColor","calculateColor","targetRef","_containerRef$current","_targetRef$current$ge","targetWidth","targetHeight","centerOffsetX","centerOffsetY","bright","alphaOffset","hueOffset","calcOffset","ColorBlock","colorBlockCls","getPosition","scrollXOffset","scrollYOffset","useColorDrag","onDragChange","onDragChangeComplete","calculate","disabledDrag","offsetValue","setOffsetValue","mouseMoveRef","mouseUpRef","updateOffset","_getPosition","pageX","pageY","rectX","rectY","offsetX","offsetY","onDragMove","onDragStop","onDragStart","Handler","_ref$size","Palette","Transform","Picker","onChangeComplete","pickerRef","transformRef","colorRef","calcColor","_useColorDrag","_useColorDrag2","dragStartHandle","useColorState","_useMergedState","_useMergedState2","Gradient","_ref$direction","gradientColors","idx","Slider","sliderRef","handleColor","gradientList","useComponent","HUE_COLORS","ColorPicker","_props$prefixCls","panelRender","_props$disabledAlpha","disabledAlpha","_props$disabled","_useComponent","_useComponent2","_useColorState","_useColorState2","colorValue","setColorValue","alphaColor","handleChange","getHueColor","onHueChange","onAlphaChange","onHueChangeComplete","onAlphaChangeComplete","mergeCls","sharedSliderProps","defaultPanel","toHexFormat","getHex","AggregationColor","isArray","percent","RcColor","RightOutlined","RightOutlinedSvg","initMotionCommon","initMotionCommonLeave","initMotion","inKeyframes","outKeyframes","sameLevel","sameLevelPrefix","fadeIn","Keyframes","fadeOut","initFadeMotion","moveDownIn","moveDownOut","moveLeftIn","moveLeftOut","moveRightIn","moveRightOut","moveUpIn","moveUpOut","moveMotion","initMoveMotion","slideUpIn","slideUpOut","slideDownIn","slideDownOut","slideLeftIn","slideLeftOut","slideRightIn","slideRightOut","slideMotion","initSlideMotion","zoomIn","zoomOut","zoomBigIn","zoomBigOut","zoomUpIn","zoomUpOut","zoomLeftIn","zoomLeftOut","zoomRightIn","zoomRightOut","zoomDownIn","zoomDownOut","zoomMotion","initZoomMotion","isBright","bgColorToken","prepareToken","paddingInline","onlyIconSize","prepareComponentToken","_f","contentFontSize","contentFontSizeSM","contentFontSizeLG","contentLineHeight","contentLineHeightSM","contentLineHeightLG","solidTextColor","shadowColorTokens","genSharedButtonStyle","fontWeight","opacityLoading","motionDurationSlow","motionEaseInOut","transition","genHoverActiveButtonStyle","btnCls","hoverStyle","activeStyle","genCircleButtonStyle","genRoundButtonStyle","genDisabledStyle","genGhostButtonStyle","textColorDisabled","borderColorDisabled","genSolidDisabledButtonStyle","genPureDisabledButtonStyle","genVariantButtonStyle","genDisabledButtonStyle","genSolidButtonStyle","genOutlinedDashedButtonStyle","genDashedButtonStyle","genFilledButtonStyle","genTextLinkButtonStyle","genPresetColorStyle","hoverColor","lightHoverColor","activeColor","genDefaultButtonStyle","genPrimaryButtonStyle","genDangerousStyle","genColorButtonStyle","genCompatibleButtonStyle","genButtonStyle","buttonPaddingHorizontal","buttonPaddingVertical","buttonIconOnlyFontSize","genSizeBaseButtonStyle","baseToken","genSizeSmallButtonStyle","smallToken","genSizeLargeButtonStyle","largeToken","genBlockButtonStyle","useStyle$h","buttonToken","compactItemBorder","parentCls","focusElCls","focus","borderElCls","childCombinator","hoverEffects","compactItemBorderRadius","genCompactItemStyle","compactCls","compactItemVerticalBorder","compactItemBorderVerticalRadius","genCompactItemVerticalStyle","genButtonCompactStyle","colorPrimaryHover","insetOffset","getCompactBorderStyle","vertical","getLoadingConfig","ButtonTypeMap","Button","danger","shape","customizeSize","customDisabled","iconPosition","ghost","htmlType","customClassNames","customStyle","autoInsertSpace","autoFocus","mergedType","button","mergedColor","mergedVariant","colorVariantPair","mergedColorText","contextAutoInsertSpace","contextClassNames","contextStyles","mergedInsertSpace","mergedDisabled","groupSize","loadingOrDelay","innerLoading","setLoading","hasTwoCNChar","setHasTwoCNChar","buttonRef","Children","isMountRef","delayTimer","cleanupTimer","buttonText","handleClick","compactSize","sizeClassNameMap","sizeFullName","ctxSize","linkButtonRestProps","fullStyle","iconClasses","iconStyle","iconNode","kids","buttonNode","Group","isThenable","thing","ActionButton","buttonProps","close","emitEvent","isSilent","quitOnNullishReturnValue","actionFn","clickedRef","onInternalClose","timeoutId","handlePromiseOnOk","returnValueOfOnOk","ModalContext","ModalContextProvider","ConfirmCancelBtn","autoFocusButton","cancelButtonProps","cancelTextLocale","mergedOkCancel","onCancel","onConfirm","ConfirmOkBtn","okButtonProps","okTextLocale","okType","onOk","OrderContext","EMPTY_LIST","useDom","debug","defaultEle","appendedRef","queueCreate","_React$useState3","_React$useState4","queue","setQueue","mergedQueueCreate","appendFn","origin","newQueue","_ele$parentElement","measureScrollbarSize","randomId","measureEle","measureStyle","fallbackWidth","fallbackHeight","targetStyle","webkitScrollbarStyle","widthStyle","heightStyle","scrollWidth","scrollHeight","getTargetScrollBarSize","isBodyOverflowing","UNIQUE_ID","useScrollLocker","lock","mergedLock","scrollbarSize","isOverflow","inline","inlineMock","nextInline","getPortalContainer","open","autoLock","_props$autoDestroy","autoDestroy","shouldRender","setShouldRender","mergedRender","innerContainer","setInnerContainer","customizeContainer","_useDom","_useDom2","defaultContainer","mergedContainer","childRef","renderInline","reffedChildren","createPortal","RefContext","getUseId","useOriginId","useId$1","reactId","innerId","setInnerId","nextId","getMotionName","getScroll","w","el","doc","MemoChildren","sentinelStyle","entityStyle","Panel","title","ariaId","footer","onClose","bodyStyle","bodyProps","modalRender","onMouseDown","onMouseUp","holderRef","modalClassNames","modalStyles","panelRef","sentinelStartRef","sentinelEndRef","_sentinelStartRef$cur","_document","activeElement","contentStyle","footerNode","headerNode","closableObj","closeBtnIsDisabled","closerNode","Content","destroyOnClose","mousePosition","dialogRef","transformOrigin","setTransformOrigin","elementOffset","motionRef","Mask","maskProps","Dialog","_props$keyboard","keyboard","_props$focusTriggerAf","focusTriggerAfterClose","wrapStyle","wrapClassName","wrapProps","afterOpenChange","animation","_props$closable","_props$mask","mask","maskTransitionName","maskAnimation","_props$maskClosable","maskClosable","maskStyle","lastOutSideActiveElementRef","contentRef","animatedVisible","setAnimatedVisible","saveLastOutSideActiveElementRef","focusDialogContent","_contentRef$current","onDialogVisibleChanged","newVisible","contentClickRef","contentTimeoutRef","onContentMouseDown","onContentMouseUp","onWrapperClick","onWrapperKeyDown","DialogWrap","_props$destroyOnClose","_afterClose","refContext","HOOK_MARK","warningFunc","ListContext","isFormInstance","newMessages","cloned","messages","_isNativeFunction","_construct","_wrapNativeSuper","isNativeFunction","Wrapper","construct","formatRegExp","errors","convertFieldsError","field","template","isNativeStringType","isEmptyValue","asyncParallelArray","func","results","total","arrLength","asyncSerialArray","original","flattenObjArr","objArr","AsyncValidationError","_Error","asyncMap","_pending","flattenArr","firstFields","objArrKeys","objArrLength","isErrorObj","complementError","oe","fieldValue","deepMerge","ENUM","enumerable","_pattern","range","spRegexp","required","urlReg","getUrlRegex","word","v4","v6seg","v6List","v6Eth0","v6","v46Exact","v4exact","v6exact","ip","protocol","auth","ipv4","ipv6","host","tld","port","regex","types","custom","ruleType","enumRule","any","validate","boolean","date","dateObject","floatFn","integer","number","string","validators","float","enumValidator","Schema","descriptor","defaultMessages","_messages","source_","oc","complete","add","_errors","series","errorFields","doIt","addFullField","schema","errorList","filledErrors","fieldsSchema","paredFieldsSchema","fieldSchema","fieldSchemaList","errs","finalErrors","_console$error","_console","messageIndex","validator","defaultValidateMessages","AsyncValidator","RawAsyncValidator","replaceMessage","kv","CODE_LOGIC_ERROR","validateRule","_x3","_x4","_x5","_validateRule","messageVariables","cloneRule","originValidator","subRuleField","subResults","fillVariableResult","mergedMessage","subValue","validateRules","namePath","validateFirst","filledRules","currentRule","ruleIndex","originValidatorFunc","hasPromise","wrappedCallback","w1","i1","w2","i2","summaryPromise","_x6","_x7","rulePromises","finishOnFirstFailed","finishOnAllFailed","_x8","_finishOnAllFailed","_callee3","_context3","errorsList","_x9","_finishOnFirstFailed","_callee4","_context4","ruleError","getNamePath","cloneByNamePathList","namePathList","newStore","containsNamePath","partialMatch","matchNamePath","subNamePath","nameUnit","isSimilar","sourceKeys","targetKeys","sourceValue","targetValue","defaultGetValueFromEvent","valuePropName","move","moveIndex","toIndex","diff","EMPTY_ERRORS","requireUpdate","Field","isListField","_this$props2","fieldContext","_fieldContext$prefixN","prefixName","_this$props3","_this$props3$rules","resetCount","destroy","onMetaChange","_meta","prevStore","_this$props4","_this$props4$dependen","dependencies","onReset","curValue","namePathMatch","dependencyList","dependency","currentValue","triggerName","_ref2$validateOnly","validateOnly","rootPromise","_this$props5","_this$props5$validate","validateDebounce","filteredRules","validateTrigger","triggerList","ruleErrors","_ruleErrors$forEach","nextErrors","nextWarnings","warningOnly","_ref4$errors","_fieldContext$getInte","getInitialValue","meta","_meta2","toChildrenArray","getFieldsValue","childProps","_this$props6","trigger","getValueFromEvent","normalize","getValueProps","mergedValidateTrigger","getInternalHooks","_getInternalHooks","dispatch","mergedGetValueProps","originTriggerFunc","valueProps","control","validateTriggerList","originTrigger","_getInternalHooks2","initEntityValue","_this$props7","_getInternalHooks3","registerField","_this$getOnlyChild","isFunction","returnChildNode","FieldContext","WrapperField","_restProps$isListFiel","listContext","isMergedListField","List","initialValue","wrapperListContext","keyRef","keyManager","parentPrefixName","pathName","_ref3$value","getFieldValue","getNewValue","values","operations","indexSet","keysIndex","valueIndex","to","_move","listValue","__","allPromiseFinish","promiseList","hasError","cell","NameMap","_cell$match","_cell$match2","json","FormStore","forceRootUpdate","subscribable","initialValues","init","_this$prevWithoutPres","nextStore","clearOnDestroy","prevWithoutPreserves","initValue","callbacks","allValues","pure","nameList","filterFunc","mergedNameList","mergedFilterFunc","mergedStrict","fieldEntities","filteredNameList","_isListField","_isList","fieldError","arg0","arg1","isAllFieldsTouched","isFieldTouched","map","shortNamePath","fieldNamePath","isNamePathListTouched","namePathListEntities","testField","records","resetWithFields","formInitialValue","requiredFieldEntities","_requiredFieldEntitie","fieldData","fieldPreserve","mergedPreserve","_prevStore","_namePath","mergedInfo","onStoreChange","childrenFields","onValuesChange","changedValues","rootNamePath","dependencies2fields","dependencyNamePath","fillChildren","filedErrors","onFieldsChange","changedFields","fieldName","arg2","provideNameList","TMP_SPLIT","validateNamePathList","_ref8","recursive","dirty","mergedErrors","mergedWarnings","_ref9","resultNamePathList","_ref10","returnPromise","triggerNamePathList","onFinish","onFinishFailed","useForm","formRef","forceReRender","formStore","FormContext","FormProvider","onFormChange","onFormFinish","formContext","formsRef","newForms","Form","_ref$component","_ref$validateTrigger","_onFieldsChange","_onFinish","nativeElementRef","_useForm","_useForm2","formInstance","useSubscribe","setInitialValues","setCallbacks","setValidateMessages","setPreserve","destroyForm","mountRef","childrenNode","childrenRenderProps","_values","prevFieldsRef","formContextValue","wrapperNode","_restProps$onReset","useWatchWarning","fullyStr","nameStrRef","useWatch","_args$","_form","valueStr","valueStrRef","isValidForm","namePathRef","registerWatch","getWatchValue","watchValue","cancelRegister","nextValueStr","InternalForm","FieldForm","RefForm","FormItemInputContext","NoFormStyle","formItemInputContext","newFormItemInputContext","newContext","VariantContext","ContextIsolator","mergeProps","items","pickClosable","useClosableConfig","closableCollection","closableConfig","EmptyFallbackCloseCollection","useClosable","propCloseCollection","contextCloseCollection","fallbackCloseCollection","propCloseConfig","contextCloseConfig","contextLocale","mergedFallbackCloseCollection","mergedClosableConfig","extendsObject","closeIconRender","ariaOrDataProps","isStyleNameSupport","styleNameList","documentElement","isStyleSupport","styleValue","canUseDocElement","shapeCls","sizeStyle","skeletonClsLoading","genSkeletonElementCommonSize","genSkeletonElementAvatarSize","genSkeletonColor","genSkeletonElementInputSize","genSkeletonElementAvatar","skeletonAvatarCls","gradientFromColor","controlHeightLG","controlHeightSM","genSkeletonElementInput","borderRadiusSM","skeletonInputCls","genSkeletonElementImageSize","genSkeletonElementImage","skeletonImageCls","imageSizeBase","genSkeletonElementButtonShape","buttonCls","skeletonButtonCls","genSkeletonElementButtonSize","genSkeletonElementButton","skeletonTitleCls","skeletonParagraphCls","padding","titleHeight","blockRadius","paragraphLiHeight","controlHeightXS","paragraphMarginTop","useStyle$g","skeletonToken","colorFillContent","colorFill","gradientToColor","SkeletonAvatar","cls","SkeletonButton","SkeletonImage","SkeletonInput","SkeletonNode","getWidth","rows","Paragraph","rowList","Title","getComponentProps","getAvatarBasicProps","hasTitle","hasParagraph","getTitleBasicProps","hasAvatar","getParagraphBasicProps","basicProps","Skeleton","paragraph","avatarNode","avatarProps","contentNode","$title","titleProps","paragraphNode","paragraphProps","voidFunc","WatermarkContext","usePanelRef","panelSelector","watermark","panelEleRef","innerContentEle","NormalCancelBtn","NormalOkBtn","confirmLoading","renderCloseIcon","Footer","okText","cancelText","btnCtxValue","btnCtxValueMemo","genGridRowStyle","genGridColStyle","genLoopGridColumnsStyle","gridColumns","gridColumnsStyle","genGridStyle","genGridMediaStyle","screenSize","prepareRowComponentToken","prepareColComponentToken","useRowStyle","getMediaSize","useColStyle","gridToken","gridMediaSizesMap","pre","box","genModalMaskStyle","genModalStyle","genRTLStyle","genResponsiveWidthStyle","responsiveStyles","headerPaddingVertical","headerFontSize","headerLineHeight","useStyle$f","modalToken","getClickPosition","Modal","centered","customizeZIndex","customizeMousePosition","destroyOnHidden","getContextPopupContainer","modalContext","handleCancel","handleOk","deprecatedName","newName","wrapClassNameExtended","dialogFooter","mergedClosable","contextZIndex","numWidth","responsiveWidth","responsiveWidthVars","vars","breakpoint","breakpointWidth","genModalConfirmStyle","titleFontSize","titleLineHeight","modalConfirmIconSize","modalTitleHeight","fontHeight","confirmBodyPadding","confirmComponentCls","Confirm","ConfirmContent","confirmPrefixCls","okCancel","staticLocale","resetProps","mergedIcon","mergedLocale","footerOriginNode","CancelBtn","OkBtn","bodyCls","ConfirmDialog","mergedZIndex","ConfirmDialogWrapper","destroyFns","defaultRootPrefixCls","getRootPrefixCls","mergedGetContainer","confirm","global","reactUnmount","param","_a2","dom","update","configUpdate","withWarn","withInfo","withSuccess","withError","withConfirm","modalGlobalConfig","HookModal","hookAfterClose","setOpen","innerConfig","setInnerConfig","newConfig","originConfig","nextConfig","HookModal$1","ElementsHolder","_props","useModal","actionQueue","setActionQueue","getConfirmFunc","withFunc","modalRef","resolvePromise","silent","closeFunc","confirmed","destroyAction","updateAction","withPureRenderTheme","genPurePanel","alignPropName","postProps","getDropdownCls","popupHeight","setPopupHeight","popupWidth","setPopupWidth","dropdownCls","popup","isMobile$1","agent","TransBtn","customizeIcon","customizeIconProps","_onMouseDown","useAllowClear","onClearMouseDown","displayValues","allowClear","clearIcon","mergedSearchValue","mode","mergedClearIcon","mergedAllowClear","BaseSelectContext","useBaseProps","useDelayReset","bool","setBool","delayRef","cancelLatest","delaySetBool","useLock","lockRef","timeoutRef","doLock","locked","useSelectTriggerControl","triggerOpen","customizedTrigger","onGlobalMouseDown","isValidateOpenKey","currentKeyCode","UNDEFINED","InternalItem","invalidate","renderItem","responsive","responsiveDisabled","registerSize","itemKey","display","_props$component","mergedHidden","internalRegisterSize","overflowStyle","overflowProps","itemNode","Item","channelUpdate","channel","useBatcher","updateFuncRef","notifyEffectUpdate","unstable_batchedUpdates","useEffectState","stateValue","setStateValue","setEffectVal","OverflowContext","_excluded3","InternalRawItem","_restProps","restContext","RawItem","RESPONSIVE","INVALIDATE","defaultRenderRest","omittedItems","Overflow","_props$data","renderRawItem","_props$itemWidth","itemWidth","ssr","maxCount","renderRest","renderRawRest","itemComponent","onVisibleChange","fullySSR","_useEffectState","_useEffectState2","containerWidth","setContainerWidth","mergedContainerWidth","_useEffectState3","_useEffectState4","itemWidths","setItemWidths","_useEffectState5","_useEffectState6","prevRestWidth","setPrevRestWidth","_useEffectState7","_useEffectState8","restWidth","setRestWidth","_useEffectState9","_useEffectState10","suffixWidth","setSuffixWidth","suffixFixedStart","setSuffixFixedStart","displayCount","setDisplayCount","mergedDisplayCount","_useState5","_useState6","restReady","setRestReady","itemPrefixCls","mergedRestWidth","isResponsive","shouldResponsive","showRest","mergedData","getKey","mergedRenderItem","updateDisplayCount","suffixFixedStartVal","notReady","onOverflowResize","registerOverflowSize","registerSuffixSize","getItemWidth","totalWidth","currentItemWidth","displayRest","suffixStyle","itemSharedProps","internalRenderItemNode","restContextProps","mergedRenderRest","restNode","overflowNode","ForwardOverflow","composeProps","originProps","patchProps","isAll","composedProps","_originProps$key","Input","inputElement","autoComplete","editable","activeDescendantId","inputNode","_inputNode","RefInput","isClient","isBrowserClient","isComboNoValue","isTitleType","getTitle","_value$key","onPreventMouseDown","SelectSelector","searchValue","autoClearSearchValue","inputRef","placeholder","showSearch","removeIcon","maxTagCount","maxTagTextLength","_props$maxTagPlacehol","maxTagPlaceholder","omittedValues","tagRender","onToggleOpen","onRemove","onInputChange","onInputPaste","onInputKeyDown","onInputMouseDown","onInputCompositionStart","onInputCompositionEnd","onInputBlur","measureRef","inputWidth","setInputWidth","focused","setFocused","selectionPrefixCls","inputValue","inputEditable","defaultRenderSelector","itemDisabled","customizeRenderSelector","isMaxTag","valueItem","label","displayLabel","strLabel","selectionNode","SingleSelector","activeValue","maxLength","inputChanged","setInputChanged","combobox","hasTextInput","selectionTitle","placeholderNode","Selector","compositionStatusRef","tokenWithEnter","onSearch","onSearchSubmit","domRef","_useLock","_useLock2","getInputMouseDown","setInputMouseDown","onInternalInputKeyDown","which","isTextAreaElement","onInternalInputMouseDown","pastedTextRef","triggerOnSearch","replacedText","clipboardData","isIE","inputMouseDown","sharedProps","selectNode","MultipleSelector","ForwardSelector","Arrow","align","arrow","arrowPos","_arrowPos$x","_arrowPos$y","arrowRef","alignStyle","popupPoints","targetPoints","popupTB","popupLR","targetTB","targetLR","PopupContent","Popup","keepDom","fresh","maskMotion","onPointerEnter","onPointerDownCapture","offsetR","offsetB","onAlign","stretch","isNodeVisible","getPopupContainerNeedParams","show","setShow","AUTO","offsetStyle","_experimental","dynamicInset","alignRight","alignBottom","miscStyle","resizeObserverRef","nextVisible","_motion$onVisibleChan","TriggerWrapper","getTriggerDOMNode","canUseRef","TriggerContext","useAction","mobile","showAction","hideAction","mergedShowAction","mergedHideAction","showActionSet","hideActionSet","isPointsEq","a1","a2","isAlignPoint","getAlignPopupClassName","builtinPlacements","placements","_builtinPlacements$pl","placement","getMotion","getWin","collectScroller","scrollerList","scrollStyle","_getWin$getComputedSt","overflowX","overflowY","overflow","toNum","getPxValue","getVisibleArea","initArea","visibleArea","_getWin$getComputedSt2","overflowClipMargin","borderBottomWidth","borderRightWidth","eleRect","eleOutHeight","eleInnerHeight","eleOutWidth","eleInnerWidth","borderTopNum","borderBottomNum","borderLeftNum","borderRightNum","scaleX","scaleY","eleScrollWidth","eleScrollHeight","scaledBorderTopWidth","scaledBorderBottomWidth","scaledBorderLeftWidth","scaledBorderRightWidth","clipMarginWidth","clipMarginHeight","clipNum","eleLeft","eleTop","eleRight","eleBottom","getUnitOffset","offsetStr","getNumberOffset","splitPoints","getAlignPoint","topBottom","leftRight","reversePoints","reverseMap","point","useAlign","popupEle","popupAlign","onPopupAlign","offsetInfo","setOffsetInfo","alignCountRef","prevFlipRef","resetFlipCache","getIntersectionVisibleArea","area","popupRect","visibleL","visibleT","visibleR","visibleB","syncNextPopupPosition","nextPopupY","nextOffsetY","nextPopupBottom","nextPopupX","nextOffsetX","nextPopupRight","_popupElement$parentE","_popupRect$x","_popupRect$y","_popupElement$parentE2","popupElement","_win$getComputedStyle","popupPosition","originLeft","originTop","originRight","originBottom","originOverflow","placementInfo","placeholderElement","targetRect","_rect$x","_rect$y","_win$getComputedStyle2","_doc$documentElement","scrollTop","scrollLeft","visibleRegion","scrollRegion","htmlRegion","VISIBLE","VISIBLE_FIRST","isVisibleFirst","scrollRegionArea","visibleRegionArea","adjustCheckVisibleArea","popupMirrorRect","_scaleX","_scaleY","targetOffset","_getNumberOffset","_getNumberOffset2","popupOffsetX","popupOffsetY","_getNumberOffset3","_getNumberOffset4","targetOffsetX","targetOffsetY","popupPoint","targetPoint","targetAlignPoint","popupAlignPoint","nextAlignInfo","originIntersectionVisibleArea","originIntersectionRecommendArea","targetAlignPointTL","popupAlignPointTL","targetAlignPointBR","popupAlignPointBR","adjustX","adjustY","shiftX","shiftY","supportAdjust","needAdjustY","sameTB","tmpNextOffsetY","newVisibleArea","newVisibleRecommendArea","_tmpNextOffsetY","_newVisibleArea","_newVisibleRecommendArea","needAdjustX","sameLR","tmpNextOffsetX","_newVisibleArea2","_newVisibleRecommendArea2","_tmpNextOffsetX","_newVisibleArea3","_newVisibleRecommendArea3","numShiftX","numShiftY","popupLeft","popupRight","popupTop","popupBottom","targetLeft","targetRight","targetTop","targetBottom","maxLeft","minRight","xCenter","nextArrowX","maxTop","minBottom","yCenter","nextArrowY","offsetX4Right","offsetY4Bottom","nextOffsetInfo","triggerAlign","resetReady","ori","onScroll","notifyScroll","targetElement","targetScrollList","popupScrollList","mergedList","scroller","useWinClick","clickToHide","targetEle","inPopupOrChild","openRef","popupPointerDownRef","onPointerDown","onTriggerClose","_e$composedPath","targetShadowRoot","_targetEle$getRootNod","_popupEle$getRootNode","targetRoot","popupRoot","onPopupPointerDown","generateTrigger","PortalComponent","Trigger","_props$action","popupVisible","defaultPopupVisible","onPopupVisibleChange","afterPopupVisibleChange","mouseEnterDelay","_props$mouseLeaveDela","mouseLeaveDelay","focusDelay","blurDelay","destroyPopupOnHide","popupClassName","popupStyle","popupPlacement","_props$builtinPlaceme","getPopupClassNameFromAlign","alignPoint","onPopupClick","popupMotion","popupTransitionName","popupAnimation","mergedAutoDestroy","setMobile","isMobile","subPopupElements","subPopupEle","setPopupEle","externalPopupRef","setPopupRef","_React$useState5","_React$useState6","setTargetEle","externalForwardRef","setTargetRef","originChildProps","cloneProps","_getShadowRoot","_getShadowRoot2","childDOM","mergePopupMotion","mergeMaskMotion","_React$useState7","_React$useState8","internalOpen","setInternalOpen","mergedOpen","setMergedOpen","nextOpen","lastTriggerRef","internalTriggerOpen","_lastTriggerRef$curre","clearDelay","_React$useState9","_React$useState10","inMotion","setInMotion","_React$useState11","_React$useState12","motionPrepareResolve","setMotionPrepareResolve","_React$useState13","_React$useState14","mousePos","setMousePos","setMousePosByEvent","_useAlign","_useAlign2","arrowX","arrowY","alignInfo","_useAction","_useAction2","showActions","hideActions","clickToShow","alignedClassName","baseClassName","_React$useState15","_React$useState16","setTargetWidth","_React$useState17","_React$useState18","setTargetHeight","syncTargetSize","onTargetResize","wrapperAction","preEvent","_originChildProps$eve","_originChildProps$onC","hoverToShow","hoverToHide","onPopupMouseEnter","onPopupMouseLeave","_originChildProps$onM","_originChildProps$onC2","_len3","_key3","mergedChildrenProps","passedProps","passedEventList","_mergedChildrenProps$","_len4","_key4","triggerNode","innerArrow","getBuiltInPlacements","SelectTrigger","dropdownStyle","dropdownClassName","_props$direction","dropdownRender","dropdownAlign","dropdownPrefixCls","popupNode","mergedBuiltinPlacements","mergedTransitionName","isNumberPopupWidth","triggerPopupRef","_triggerPopupRef$curr","RefSelectTrigger","isValidCount","fillFieldNames","fieldNames","childrenAsData","groupLabel","mergedLabel","flattenOptions","_fillFieldNames","fieldLabel","fieldOptions","dig","isGroupOption","grpLabel","injectPropsWithOption","newOption","getSeparatedContent","separate","restTokens","prevList","unitStr","SelectContext","Polite","MAX_COUNT","DEFAULT_OMIT_PROPS","isMultiple","BaseSelect","_customizeRawInputEle","omitDomProps","onDisplayValuesChange","emptyOptions","_props$notFoundConten","notFoundContent","onClear","getInputElement","getRawInputElement","defaultOpen","onDropdownVisibleChange","onActiveValueChange","onSearchSplit","tokenSeparators","suffixIcon","OptionList","_props$showAction","onFocus","onBlur","onKeyUp","onKeyDown","multiple","mergedShowSearch","domProps","selectorDomRef","triggerRef","selectorRef","listRef","blurRef","_useDelayReset","_useDelayReset2","mockFocused","setMockFocused","cancelSetMockFocused","_selectorRef$current","_selectorRef$current2","_listRef$current","_displayValues$","customizeInputElement","customizeRawInputElement","customizeRawInputRef","rendered","setRendered","innerOpen","setInnerOpen","emptyListContent","newOpen","tokenSeparator","rawValues","onInternalSearch","searchText","fromTyping","isCompositing","newSearchText","separatedList","patchLabels","onInternalSearchSubmit","getClearLock","setClearLock","keyLockRef","onInternalKeyDown","clearLock","isEnterKey","cloneDisplayValues","removedDisplayValue","_listRef$current2","onInternalKeyUp","_listRef$current3","onSelectorRemove","newValues","focusRef","onContainerFocus","onContainerBlur","activeTimeoutIds","onInternalMouseDown","_triggerRef$current","_selectorRef$current3","restArgs","onTriggerVisibleChange","_triggerRef$current2","baseSelectContext","showSuffixIcon","arrowNode","_selectorRef$current4","_useAllowClear","clearNode","optionList","mergedClassName","selectorNode","renderNode","OptGroup","Option","Filler","onInnerResize","innerProps","rtl","extra","outerStyle","innerStyle","refFunc","useChildren","startIndex","endIndex","renderFunc","eleIndex","findListDiffIndex","originList","targetList","originLen","targetLen","shortList","longList","notExistKey","getItemKey","diffIndex","shortKey","longKey","useDiffItem","onDiff","prevData","setPrevData","diffItem","setDiffItem","isFF","useOriginScroll","isScrollAtTop","isScrollAtBottom","isScrollAtLeft","isScrollAtRight","lockTimeoutRef","lockScroll","scrollPingRef","isHorizontal","smoothOffset","originScroll","useFrameWheel","inVirtual","horizontalScroll","onWheelDelta","offsetRef","wheelValueRef","isMouseScrollRef","onWheelY","deltaY","patchMultiple","onWheelX","deltaX","wheelDirectionRef","wheelDirectionCleanRef","onWheel","shiftKey","mergedDeltaX","mergedDeltaY","absX","absY","onFireFoxScroll","useGetSize","heights","itemHeight","_React$useMemo","_React$useMemo2","key2Index","bottomList","getSize","startKey","endKey","dataLen","_heights$get","cacheHeight","CacheMap","parseNumber","useHeights","onItemAdd","onItemRemove","updatedMark","setUpdatedMark","instanceRef","heightsRef","promiseIdRef","cancelRaf","collectHeight","sync","doCollect","changed","_getComputedStyle","marginTop","marginBottom","marginTopNum","marginBottomNum","totalHeight","setInstanceRef","SMOOTH_PTG","useMobileTouchMove","touchedRef","touchXRef","touchYRef","intervalRef","cleanUpEvents","onTouchMove","currentX","currentY","_isHorizontal","scrollHandled","onTouchEnd","onTouchStart","smoothScrollOffset","getPageXY","horizontal","useScrollDrag","componentRef","onScrollOffset","mouseDownLock","_offset","stopScroll","continueScroll","onMouseMove","mouseY","_ele$getBoundingClien","bottom","_diff","MAX_TIMES","useScrollTo","syncScrollTop","triggerFlash","scrollRef","syncState","setSyncState","targetAlign","originAlign","needCollectHeight","newTargetAlign","mergedAlign","stackTop","itemTop","itemBottom","maxLen","leftHeight","_cacheHeight","scrollBottom","_arg$offset","ScrollBar","scrollOffset","scrollRange","onStartMove","onStopMove","spinSize","containerSize","propsThumbStyle","showScrollBar","dragging","setDragging","pageXY","setPageXY","startTop","setStartTop","isLTR","scrollbarRef","thumbRef","setVisible","visibleTimeoutRef","delayHidden","enableScrollRange","enableOffsetRange","ptg","onContainerMouseDown","stateRef","onThumbMouseDown","onScrollbarTouchStart","scrollbarEle","thumbEle","enableScrollRangeRef","enableOffsetRangeRef","moveRafId","_stateRef$current","stateDragging","statePageY","stateStartTop","newTop","tmpEnableScrollRange","tmpEnableOffsetRange","newScrollTop","scrollbarPrefixCls","containerStyle","thumbStyle","MIN_SIZE","getSpinSize","EMPTY_DATA","ScrollStyle","RawList","_props$fullHeight","fullHeight","onVirtualScroll","extraRender","_props$showScrollBar","_useHeights","_useHeights2","heightUpdatedMark","useVirtual","containerHeight","curr","isRTL","fillerInnerRef","offsetTop","setOffsetTop","offsetLeft","setOffsetLeft","scrollMoving","setScrollMoving","onScrollbarStartMove","onScrollbarStopMove","alignedTop","keepInRange","rangeRef","diffItemRef","_useDiffItem","_useDiffItem2","_fillerInnerRef$curre","startOffset","_item","currentItemBottom","start","fillerOffset","changedRecord","recordKey","prevCacheHeight","startItem","startIndexKey","realStartHeight","diffHeight","setSize","onHolderResize","verticalScrollBarRef","horizontalScrollBarRef","horizontalScrollBarSpinSize","verticalScrollBarSpinSize","maxScrollHeight","maxScrollHeightRef","getVirtualScrollInfo","lastVirtualScrollInfoRef","triggerScroll","nextInfo","onScrollBar","newScrollOffset","newOffset","flushSync","onFallbackScroll","keepInHorizontalRange","nextOffsetLeft","tmpOffsetLeft","offsetXY","fromHorizontal","_useFrameWheel","_useFrameWheel2","onRawWheel","onMozMousePixelScroll","scrollingUpAtTop","scrollingDownAtBottom","componentEle","newOffsetLeft","delayHideScrollBar","_verticalScrollBarRef","_horizontalScrollBarR","_scrollTo","isPosScroll","renderList","extraContent","listChildren","componentStyle","containerProps","isPlatformMac","_useBaseProps","toggleOpen","onPopupScroll","onActiveValue","defaultActiveFirstOption","onSelect","menuItemSelectedIcon","listHeight","listItemHeight","optionRender","memoFlattenOptions","overMaxCount","onListMouseDown","scrollIntoView","isSelected","getEnabledActiveIndex","group","activeIndex","setActiveIndex","setActive","fromKeyboard","flattenItem","isAriaSelected","onSelectValue","ctrlKey","nextActiveIndex","_item$data","omitFieldNameList","getLabel","getItemAriaProps","itemData","a11yProps","itemIndex","groupOption","_data$title","groupTitle","selected","optionPrefixCls","optionClassName","iconVisible","optionTitle","RefOptionList","useCache","labeledValues","valueOptions","filledLabeledValues","_cacheRef$current","prevValueCache","prevOptionCache","patchedValues","_prevValueCache$get","valueCache","optionCache","getOption","includes","test","useFilterOptions","filterOption","optionFilterProp","filteredOptions","customizeFilter","upperSearch","wrapOption","matchGroup","subOptions","subItem","getUUID","retId","convertNodeToOption","_ref$props","convertChildrenToData","optionOnly","isSelectOptGroup","_ref2$props","useOptions","optionLabelProp","labelOptions","setLabelOptions","labelOptionsMap","isChildren","useRefFunc","funcRef","warningProps","backfill","labelInValue","hasNumberValue","invalidateChildType","toNodeArray","allChildrenValid","subNode","warningNullOptions","recursiveOptions","optionsList","inGroup","OMIT_DOM_PROPS","isRawValue","Select","_props$autoClearSearc","onDeselect","_props$dropdownMatchS","filterSort","_props$listHeight","_props$listItemHeight","labelRender","mergedId","mergedFilterOption","mergedFieldNames","setSearchValue","parsedOptions","convert2LabelValues","draftValues","valueList","rawValue","rawLabel","rawKey","rawDisabled","rawTitle","_val$value","_option$key","optionLabel","_useMergedState3","_useMergedState4","internalValue","setInternalValue","rawLabeledValues","_values$","newInternalValue","_useCache","_useCache2","mergedValues","getMixedOption","firstValue","_mergedValues$","strValue","createTagOption","filledTagOptions","cloneOptions","existOptions","filledSearchOptions","sorter","inputOptions","sortedOptions","orderedFilteredOptions","displayOptions","newVal","_mergedValues$index","returnValues","returnOptions","setActiveValue","accessibilityIndex","setAccessibilityIndex","mergedDefaultActiveFirstOption","_ref3$source","triggerSelect","getSelectEnt","_option$key2","_getSelectEnt","_getSelectEnt2","wrappedValue","_option","_getSelectEnt3","_getSelectEnt4","_wrappedValue","_option2","onInternalSelect","cloneValues","mergedSelect","nextValues","newRawValues","onInternalSearchSplit","words","patchValues","newRawValue","selectContext","realVirtual","TypedSelect","getStatusClassNames","hasFeedback","getMergedStatus","contextStatus","customStatus","themeStyle","Simple","colorFillTertiary","colorFillQuaternary","colorBgContainer","shadowColor","contentColor","genSharedEmptyStyle","margin","marginXL","useStyle$e","emptyToken","defaultEmptyImg","DefaultEmptyImg","simpleEmptyImg","SimpleEmptyImg","imageStyle","emptyClassNames","des","alt","imageNode","DefaultRenderEmpty","useVariant","legacyBordered","configVariant","componentConfig","ctxVariant","configComponentVariant","enableVariantCls","buildInPlacements","genItemStyle","optionHeight","optionFontSize","optionLineHeight","optionPadding","genSingleStyle","selectItemCls","slideUpEnterActive","slideUpAppearActive","slideUpLeaveActive","dropdownPlacementCls","selectedItemCls","getMultipleSelectorUnit","multipleSelectItemHeight","paddingXXS","INTERNAL_FIXED_ITEM_MARGIN","basePadding","containerPadding","getSelectItemStyle","selectHeight","genOverflowStyle","paddingXS","multipleItemColorDisabled","multipleItemBorderColorDisabled","genSelectionStyle","selectOverflowPrefixCls","selectItemHeight","selectItemDist","multipleSelectorUnit","genSizeStyle","rawStyle","genMultipleStyle","inputPaddingHorizontalBase","selectHeightWithoutBorder","inputPaddingHorizontalSM","controlPaddingHorizontal","zIndexPopupBase","fontWeightStrong","controlItemBgActive","controlItemBgHover","colorFillSecondary","colorBgContainerDisabled","colorTextDisabled","controlOutline","dblPaddingXXS","dblLineWidth","multipleItemHeight","multipleItemHeightSM","multipleItemHeightLG","genBaseOutlinedStyle","controlOutlineWidth","genOutlinedStatusStyle","genOutlinedStyle","genBaseFilledStyle","genFilledStatusStyle","genFilledStyle","genBorderlessStyle","genBaseUnderlinedStyle","genUnderlinedStatusStyle","genUnderlinedStyle","genVariantsStyle","genSelectorStyle","getSearchInputWithoutBorderStyle","hoverShowClearStyle","genSelectStyle","genDropdownStyle","useSelectStyle","selectToken","CheckOutlined","CheckOutlinedSvg","DownOutlined","DownOutlinedSvg","SearchOutlined","SearchOutlinedSvg","useIcons","feedbackIcon","showArrow","getSuffixIconNode","arrowIcon","mergedSuffixIcon","mergedItemIcon","mergedRemoveIcon","useShowArrow","SECRET_COMBOBOX_MODE_DO_NOT_USE","InternalSelect","bordered","customListItemHeight","propDirection","customizeVariant","popupRender","onOpenChange","renderEmpty","contextDirection","contextPopupMatchSelectWidth","useVariants","mergedPopupMatchSelectWidth","mergedPopupStyle","mergedPopupRender","mergedOnOpenChange","isFormItemInput","mergedStatus","mergedNotFound","itemIcon","selectProps","mergedPopupClassName","memoPlacement","RcSelect","PurePanel","addMediaQueryListener","mql","handler","removeMediaQueryListener","responsiveArray","getResponsiveMap","validateBreakpoints","indexableToken","revBreakpoints","breakpointUpper","screenMin","screen","screenMax","nextScreenMin","useResponsiveObserver","responsiveMap","subscribers","subUid","screens","pointMap","paramToken","mediaQuery","matches","useForceUpdate","useBreakpoint","refreshOnChange","defaultScreens","screensRef","responsiveObserver","supportScreens","bodyClassName","autoAdjustOverflowTopBottom","autoAdjustOverflowLeftRight","Tooltip","overlayClassName","_props$trigger","_props$mouseEnterDela","overlayStyle","afterVisibleChange","_props$placement","_props$align","_props$destroyTooltip","destroyTooltipOnHide","defaultVisible","getTooltipContainer","overlayInnerStyle","overlay","_props$showArrow","tooltipClassNames","tooltipStyles","useImperativeHandle","extraProps","getPopupElement","getChildren","originalProps","Tooltip$2","getArrowToken","sizePopupArrow","borderRadiusXS","borderRadiusOuter","unitWidth","ax","ay","bx","by","cx","cy","dx","dy","ex","ey","fx","fy","shadowWidth","polygonOffset","arrowPolygon","arrowPath","genRoundedArrow","boxShadow","arrowShadowWidth","MAX_VERTICAL_CONTENT_RADIUS","getArrowOffsetToken","contentRadius","limitVerticalRadius","arrowOffset","isInject","getArrowStyle","colorBg","boxShadowPopoverArrow","arrowOffsetVertical","arrowOffsetHorizontal","arrowDistance","arrowPlacement","getOverflowOptions","arrowWidth","autoAdjustOverflow","baseOverflow","mergedOverflow","PlacementAlignMap","ArrowCenterPlacementAlignMap","DisableAutoArrowList","getPlacements","arrowPointAtCenter","halfArrowWidth","placementMap","genTooltipStyle","tooltipMaxWidth","tooltipColor","tooltipBg","tooltipBorderRadius","zIndexPopup","boxShadowSecondary","paddingSM","edgeAlignMinWidth","centerAlignMinWidth","useStyle$d","colorTextLightSolid","colorBgSpotlight","TooltipToken","inverseColors","isPresetColor","includeInverse","parseColor","isInternalColor","arrowStyle","arrowContentStyle","formattedOverlayInnerStyle","openClassName","mergedShowArrow","tooltipRef","forceAlign","noTitle","vis","tooltipPlacements","mergedArrowPointAtCenter","memoOverlay","memoOverlayWrapper","injectFromPopover","tempOpen","childCls","rootClassNames","bodyClassNames","RcTooltip","LeftOutlined","LeftOutlinedSvg","ESC","TAB","useAccessibility","overlayRef","focusMenuRef","handleCloseMenuAndReturnFocus","_triggerRef$current$f","focusMenu","_overlayRef$current","handleKeyDown","focusResult","Overlay","overlayNode","overlayElement","composedRef","Dropdown","_children$props","_props$arrow","_props$placements","Placements","triggerVisible","setTriggerVisible","handleVisibleChange","onOverlayClick","getMenuElement","getMenuElementOrLambda","getMinOverlayWidthMatchTrigger","minOverlayWidthMatchTrigger","getOpenClassName","triggerHideAction","Dropdown$1","IdContext","getMenuId","eventKey","useMenuId","MenuContext","InheritableContextProvider","inheritableContext","EmptyList","PathRegisterContext","useMeasure","PathTrackerContext","useFullPath","parentKeyPath","PathUserContext","PrivateContext","focusable","includePositive","nodeName","isFocusableElement","tabIndexAttr","tabIndexNum","getFocusNodeList","LEFT","RIGHT","UP","DOWN","ENTER","HOME","END","ArrowKeys","getOffset","isRootLevel","isRtl","_offsets","offsets","findContainerUL","getFocusElement","getFocusableElements","getNextFocusElement","parentQueryContainer","focusMenuElement","sameLevelFocusableMenuElementList","focusIndex","refreshElements","key2element","element2key","activeKey","getKeys","getKeyPath","triggerActiveKey","triggerAccessibilityOpen","originOnKeyDown","rafRef","cleanRaf","refreshedElements","_refreshedElements","focusMenuKey","offsetObj","tryFocus","menuElement","focusTargetElement","link","focusableElements","controlId","subQueryContainer","parentKey","parentMenuElement","nextSlice","PATH_SPLIT","getPathStr","getPathKeys","OVERFLOW_KEY","useKeyRecords","internalForceUpdate","key2pathRef","path2keyRef","overflowKeys","setOverflowKeys","updateRef","registerPath","connectedPath","unregisterPath","refreshOverflowKeys","includeOverflow","isSubPathKey","pathKeys","pathKeyList","getSubPathKeys","useMemoCallback","funRef","_funRef$current","uniquePrefix","internalId","useUUID","setUUID","newId","useActive","onActive","onInactive","domEvent","useDirectionStyle","inlineIndent","warnItemProp","restInfo","LegacyMenuItem","attribute","InternalMenuItem","warnKey","role","domDataId","onItemClick","contextDisabled","overflowDisabled","contextItemIcon","selectedKeys","_React$useContext2","_internalRenderMenuItem","itemCls","legacyMenuItemRef","mergedEleRef","connectedKeys","getEventInfo","_useActive","activeProps","directionStyle","onInternalClick","onInternalFocus","optionRoleProps","MenuItem","measure","connectedKeyPath","MenuItem$1","InternalSubMenuList","SubMenuList","parseChildren","_eventKey","_child$props","emptyKey","placementsRtl","defaultMotions","popupPlacementMap","PopupTrigger","popupOffset","subMenuOpenDelay","subMenuCloseDelay","triggerSubMenuAction","forceSubMenuRender","innerVisible","setInnerVisible","targetMotion","targetMotionRef","mergedMotion","InlineSubMenuList","fixedMode","sameModeRef","setDestroy","originOnVisibleChanged","MenuContextProvider","InternalSubMenu","internalPopupClose","expandIcon","onTitleClick","onTitleMouseEnter","onTitleMouseLeave","openKeys","contextExpandIcon","_internalRenderSubMenuItem","_React$useContext3","subMenuPrefixCls","popupRef","mergedExpandIcon","originOpen","childrenSelected","childrenActive","setChildrenActive","triggerChildrenActive","newActive","onInternalMouseEnter","onInternalMouseLeave","mergedActive","onInternalTitleClick","onMergedItemClick","popupId","expandIconNode","titleNode","triggerModeRef","triggerMode","listNode","SubMenu","Divider","InternalMenuItemGroup","groupPrefixCls","MenuItemGroup","convertItemsToNodes","MergedMenuItem","MergedMenuItemGroup","MergedSubMenu","MergedDivider","parseItems","Menu","_childList$","_ref$prefixCls","_ref$tabIndex","_ref$mode","inlineCollapsed","disabledOverflow","_ref$subMenuOpenDelay","_ref$subMenuCloseDela","defaultOpenKeys","defaultActiveFirst","_ref$selectable","selectable","_ref$multiple","defaultSelectedKeys","_ref$inlineIndent","_ref$triggerSubMenuAc","_ref$overflowedIndica","overflowedIndicator","overflowedIndicatorPopupClassName","openAnimation","openTransitionName","_internalComponents","measureChildList","mounted","setMounted","mergedOpenKeys","setMergedOpenKeys","triggerOpenKeys","forceFlush","doUpdate","inlineCacheOpenKeys","setInlineCacheOpenKeys","_React$useMemo3","_React$useMemo4","mergedMode","mergedInlineCollapsed","isInlineMode","internalMode","setInternalMode","internalInlineCollapsed","setInternalInlineCollapsed","lastVisibleIndex","setLastVisibleIndex","allVisible","_useKeyRecords","registerPathContext","pathUserContext","mergedActiveKey","setMergedActiveKey","_childList$find","_refreshElements","shouldFocusKey","elementToFocus","_elementToFocus$focus","_useMergedState5","_useMergedState6","mergedSelectKeys","setMergedSelectKeys","triggerSelection","exist","newSelectKeys","selectInfo","onInternalOpenChange","newOpenKeys","subPathKeys","privateContext","wrappedChildList","omitItems","originOmitItems","newLastIndex","ExportMenu","EllipsisOutlined","EllipsisOutlinedSvg","RadioGroupContext","RadioGroupContextProvider","RadioOptionTypeContext","RadioOptionTypeContextProvider","Checkbox","checked","_props$defaultChecked","defaultChecked","_props$type","inputProps","setRawValue","_inputRef$current","_inputRef$current2","useBubbleLock","onOriginInputClick","labelClickLockRef","getGroupRadioStyle","getRadioBasicStyle","wrapperMarginInlineEnd","radioSize","colorBorder","dotColorDisabled","lineType","radioColor","radioBgColor","radioInnerPrefixCls","radioDotDisabledSize","radioSizeCalc","getRadioButtonStyle","buttonColor","buttonPaddingInline","buttonBg","borderRadiusLG","buttonCheckedBg","buttonSolidCheckedColor","buttonCheckedBgDisabled","buttonCheckedColorDisabled","colorPrimaryActive","buttonSolidCheckedBg","buttonSolidCheckedHoverBg","buttonSolidCheckedActiveBg","useStyle$c","radioFocusShadow","radioToken","wireframe","controlItemBgActiveDisabled","colorWhite","dotPadding","radioDotSize","InternalRadio","groupContext","radioOptionTypeContext","innerRef","radioPrefixCls","isButtonType","radioProps","wrapperClassString","onLabelClick","onInputClick","RcCheckbox","Radio","RadioGroup","defaultName","buttonStyle","optionType","customizedValue","onRadioChange","lastValue","childrenToRender","memoizedValue","RadioButton","initInputToken","initComponentToken","controlPaddingHorizontalSM","colorFillAlter","colorErrorOutline","colorWarningOutline","inputFontSize","inputFontSizeLG","inputFontSizeSM","mergedFontSize","mergedFontSizeSM","mergedFontSizeLG","paddingBlock","paddingBlockSM","paddingBlockLG","genHoverStyle","extraStyles","genOutlinedGroupStatusStyle","genOutlinedGroupStyle","genFilledGroupStatusStyle","genFilledGroupStyle","genPlaceholderStyle","genInputLargeStyle","paddingInlineLG","genInputSmallStyle","genBasicInputStyle","genInputGroupStyle","genInputStyle","colorSmallPadding","genAllowClearStyle","genAffixStyle","inputAffixPadding","colorTextDescription","affixCls","affixClsDisabled","genSearchInputStyle","searchPrefixCls","genRangeStyle","useSharedStyle","inputToken","useStyle$b","PlusOutlined","PlusOutlinedSvg","TabContext","useIndicator","activeTabOffset","_options$indicator","indicator","_indicator$align","inkStyle","setInkStyle","inkBarRafRef","getLength","cleanInkBarRaf","newInkStyle","oldValue","DEFAULT_SIZE","useOffsets","tabSizes","holderScrollWidth","_tabs$","lastOffset","rightOffset","_tabs","defaultState","MIN_SWIPE_DISTANCE","STOP_SWIPE_DISTANCE","REFRESH_INTERVAL","SPEED_OFF_MULTIPLE","useTouchMove","onOffset","touchPosition","setTouchPosition","lastTimestamp","setLastTimestamp","lastTimeDiff","setLastTimeDiff","_useState7","_useState8","setLastOffset","_e$touches$","screenX","screenY","_e$touches$2","distanceX","distanceY","lastWheelDirectionRef","mixed","touchEventsRef","onProxyTouchStart","onProxyTouchMove","onProxyTouchEnd","onProxyWheel","useUpdate","setCount","effectRef","callbackRef","_callbackRef$current","useUpdateState","batchRef","flushUpdate","useVisibleRange","tabOffsets","visibleTabContentValue","transform","tabContentSizeValue","addNodeSizeValue","operationNodeSizeValue","tabPosition","charUnit","transformSize","tgt","RC_TABS_DOUBLE_QUOTE","genDataNodeKey","getRemovable","AddButton","ExtraContent","assertExtra","OperationNode","_props$more","moreProps","tabBarGutter","removeAriaLabel","onTabClick","selectedKey","setSelectedKey","_moreProps$icon","moreIcon","dropdownPrefix","selectedItemId","dropdownAriaLabel","onRemoveTab","removable","selectOffset","enabledTabs","selectedIndex","moreStyle","moreNode","OperationNode$1","TabNode","_props$tab","renderWrapper","tabCount","currentPosition","tabPrefix","labelNode","btnRef","getTabSize","containerRect","_tab$getBoundingClien","refObj","_ref$offsetWidth","_ref$offsetHeight","_refObj$current$getBo","getUnitValue","tabPositionTopOrBottom","TabNavList","animated","onTabScroll","extraLeftRef","extraRightRef","tabsWrapperRef","tabListRef","operationsRef","innerAddButtonRef","transformLeft","setTransformLeft","_useSyncState3","_useSyncState4","transformTop","setTransformTop","containerExcludeExtraSize","setContainerExcludeExtraSize","tabContentSize","setTabContentSize","addSize","setAddSize","operationSize","setOperationSize","_useUpdateState","_useUpdateState2","setTabSizes","containerExcludeExtraSizeValue","addSizeValue","operationSizeValue","needScroll","operationsHiddenClassName","transformMin","transformMax","alignInRange","touchMovingRef","_useState9","_useState10","lockAnimation","setLockAnimation","doLockAnimation","clearTouchMoving","doMove","_useVisibleRange","_useVisibleRange2","visibleStart","visibleEnd","scrollToTab","tabOffset","newTransform","_newTransform","_useState11","_useState12","focusKey","setFocusKey","_useState13","_useState14","isMouse","setIsMouse","nextIndex","newKey","firstEnabledTab","lastEnabledTab","removeIndex","removeTab","tabNodeStyle","tabNodes","updateTabSizes","_tabListRef$current","newSizes","listRect","_tabListRef$current2","btnNode","_getTabSize","_getTabSize2","onListHolderResize","extraLeftSize","extraRightSize","newAddSize","newOperationSize","tabContentFullSize","startHiddenTabs","endHiddenTabs","hiddenTabs","_useIndicator","indicatorStyle","hasDropdown","wrapPrefix","pingLeft","pingRight","pingTop","pingBottom","TabPane","tabKey","TabNavListWrapper","renderTabBar","tabNavBarProps","restTabProps","TabPanelList","destroyInactiveTabPane","tabPaneAnimated","tabPanePrefixCls","paneStyle","paneClassName","itemDestroyInactiveTabPane","useAnimateConfig","mergedAnimated","Tabs","defaultActiveKey","_props$tabPosition","tabBarStyle","tabBarExtraContent","more","newActiveIndex","_tabs$newActiveIndex","setMergedId","onInternalTabClick","isActiveChanged","filter","useLegacyItems","mergedDestroyOnHidden","childrenItems","genMotionStyle","genCardStyle","tabsCardPadding","cardBg","cardGutter","colorBorderSecondary","itemSelectedColor","itemHoverColor","dropdownEdgeChildVerticalPadding","genPositionStyle","horizontalMargin","verticalItemPadding","verticalItemMargin","cardPaddingSM","cardPaddingLG","cardHeightSM","cardHeightLG","horizontalItemPaddingSM","horizontalItemPaddingLG","genTabStyle","itemActiveColor","tabsHorizontalItemMargin","horizontalItemPadding","itemColor","tabCls","genRtlStyle","tabsHorizontalItemMarginRTL","genTabsStyle","cardHeight","useStyle$a","tabsToken","mergedCardHeight","mergedCardHeightSM","mergedCardHeightLG","_g","_h","_j","_k","_l","onEdit","hideAdd","addIcon","indicatorSize","editType","mergedItems","mergedIndicator","RcTabs","_ref$noTrailing","noTrailing","_ref$noLeading","noLeading","_ref$debounceMode","debounceMode","timeoutID","cancelled","lastExec","clearExistingTimeout","cancel","_ref2$upcomingOnly","upcomingOnly","wrapper","arguments_","self","elapsed","exec","clear","debounce","_ref$atBegin","atBegin","RowContext","parseFlex","sizes","Col","gutter","wrap","span","push","pull","sizeClassObj","sizeProps","propSize","horizontalGutter","useGutter","normalizedGutter","mergedScreens","useMergedPropByScreen","oriProp","setProp","calcMergedAlignOrJustify","curVal","Row","justify","mergedJustify","gutters","rowStyle","gutterH","gutterV","rowContext","genSizeDividerStyle","genSharedDividerStyle","sizePaddingEdgeHorizontal","colorSplit","textPaddingInline","orientationMargin","verticalMarginInline","useStyle$9","dividerToken","dividerClassName","dividerStyle","dashed","hasChildren","mergedOrientation","hasMarginStart","hasMarginEnd","memoizedOrientationMargin","calcThumbStyle","toPX","MotionThumb","getValueIndex","onMotionStart","onMotionEnd","_props$vertical","findValueElement","prevStyle","setPrevStyle","nextStyle","setNextStyle","calcPrevStyle","calcNextStyle","thumbStart","_prevStyle$top","thumbActive","_nextStyle$top","getValidTitle","_option$label","normalizeOptions","validTitle","InternalSegmentedOption","Segmented","_segmentedOptions$","_classNames2","_props$options","_props$className","_props$motionName","segmentedOptions","thumbShow","setThumbShow","divProps","isKeyboard","setIsKeyboard","isFocused","setIsFocused","handleFocus","handleBlur","handleMouseDown","handleKeyUp","nextOption","segmentedOption","_classNames3","TypedSegmented","getItemDisabledStyle","getItemSelectedStyle","segmentedTextEllipsisCss","genSegmentedStyle","labelHeight","labelHeightLG","labelHeightSM","useStyle$8","segmentedToken","colorTextLabel","colorBgElevated","lineWidthBold","colorBgLayout","isSegmentedLabeledOptionWithIcon","extendedOptions","restOption","RcSegmented","UpOutlined","UpOutlinedSvg","hasAddon","hasPrefixSuffix","cloneEvent","currentTarget","newEvent","resolveOnChange","triggerFocus","cursor","BaseInput","_props2","_props3","inputEl","addonBefore","addonAfter","readOnly","handleReset","hidden","dataAttrs","AffixWrapperComponent","GroupWrapperComponent","WrapperComponent","GroupAddonComponent","hasAffix","clsx","groupRef","needClear","clearIconCls","affixWrapperPrefixCls","affixWrapperCls","suffixNode","wrapperCls","addonCls","groupWrapperCls","mergedWrapperClassName","mergedGroupClassName","useCount","showCount","onPressEnter","htmlSize","_onCompositionStart","onCompositionEnd","compositionRef","selection","setSelection","countConfig","valueLength","isOutOfRange","_holderRef$current","_inputRef$current3","cutValue","_inputRef$current4","_inputRef$current5","_inputRef$current6","onInternalChange","onInternalCompositionEnd","outOfRangeCls","getSuffix","hasMaxLength","dataCount","getAllowClear","useRemovePasswordTimeout","triggerOnMount","removePasswordTimeoutRef","removePasswordTimeout","timer","customVariant","deprecated","contextAllowClear","contextAutoComplete","wrapSharedCSSVar","inputHasPrefixSuffix","prevHasPrefixSuffix","RcInput","getDirectionStyle","positionStyle","SliderContext","UnstableContext","Handle","onDelete","draggingDelete","onOffsetChange","ariaLabelForHandle","ariaLabelledByForHandle","ariaRequired","ariaValueTextFormatterForHandle","handlePrefixCls","onInternalStartMove","_getIndex","handleNode","Handles","handleRender","activeHandleRender","draggingIndex","handlesRef","activeVisible","setActiveVisible","onHandleFocus","onHandleMouseEnter","_handlesRef$current$i","handleProps","Mark","_onClick","includedStart","includedEnd","included","textCls","Marks","marks","markPrefixCls","Dot","dotClassName","Steps","dots","stepDots","dotSet","dotValue","Track","replaceCls","trackPrefixCls","offsetStart","offsetEnd","Tracks","startPoint","trackList","startValue","endValue","tracksNode","REMOVE_DIST","useDrag","finishChange","offsetValues","minCount","draggingValue","setDraggingValue","setDraggingIndex","setDraggingDelete","cacheValues","setCacheValues","originValues","setOriginValues","mouseMoveEventRef","mouseUpEventRef","touchEventTargetRef","flushValues","deleteMark","changeValues","updateCacheValue","offsetPercent","maxStartOffset","maxEndOffset","formatStartValue","cloneCacheValues","offsetDist","startValues","startX","startY","_getPosition2","moveX","moveY","offSetPercent","removeDist","sourceValues","targetValues","counts","maxDiffCount","diffCount","useOffset","markList","allowCross","pushable","formatRangeValue","formatStepValue","stepValue","getDecimal","maxDecimal","fixedValue","formatNextValue","alignValues","closeValue","closeDist","alignValue","dist","targetDistValue","potentialValues","sign","compareValue","valueDist","potentialValue","offsetChangedValue","needPush","pushNum","_offsetChangedValue","_changed","_offsetChangedValue2","_i2","_changed2","_offsetChangedValue3","_i3","_changed3","_offsetChangedValue4","useRange","draggableTrack","_props$min","_props$max","_props$step","onBeforeChange","onAfterChange","_props$allowCross","_props$pushable","reverse","_props$included","trackStyle","handleStyle","railStyle","dotStyle","activeDotStyle","track","_props$tabIndex","_useRange","_useRange2","rangeEnabled","rangeEditable","rangeDraggableTrack","mergedMin","mergedStep","mergedPush","markObj","_useOffset","_useOffset2","_valueList","_valueList$","val0","pointCount","_returnValues","getTriggerValue","triggerValues","cloneNextValues","finishValue","nextFocusIndex","_useDrag","_useDrag2","onStartDrag","changeToCloseValue","valueBeforeIndex","_document$activeEleme","_document$activeEleme2","onSliderMouseDown","clientX","clientY","keyboardValue","setKeyboardValue","onHandleOffsetChange","mergedDraggableTrack","sortedCacheValues","_containerRef$current2","SliderInternalContext","SliderTooltip","cancelKeepAlign","keepAlign","controlSize","dotSize","marginFull","marginPart","colorFillContentHover","handleColorDisabled","handleSize","handleSizeHover","handleActiveColor","handleActiveOutlineColor","handleLineWidth","handleLineWidthHover","genDirectionStyle","railSize","railPadding","full","part","handlePos","markInset","handlePosSize","draggableBorderSize","draggableBorder","genHorizontalStyle","marginPartWithMark","genVerticalStyle","useStyle$7","sliderToken","controlSizeHover","useRafLock","setDelayState","getTipFormatter","tipFormatter","legacyTipFormatter","legacyTooltipPrefixCls","legacyTooltipVisible","legacyGetTooltipPopupContainer","legacyTooltipPlacement","sliderClassNames","contextHandleRender","internalContextDirection","hoverOpen","setHoverOpen","focusOpen","setFocusOpen","tooltipProps","tooltipOpen","tooltipPlacement","getTooltipPopupContainer","customizeTooltipPrefixCls","lockOpen","activeOpen","mergedTipFormatter","onInternalChangeComplete","getTooltipPlacement","vert","useActiveTooltipHandle","nodeProps","proxyEvent","triggerRestPropsEvent","cloneNode","rootStyle","mergedTracks","mergedTracksClassNames","RcSlider","DrawerContext","DrawerPanel","parseWidthHeight","warnCheck","DrawerPopup","_pushConfig$distance","_pushConfig","drawerClassNames","maskClassName","onMouseOver","drawerRender","onPanelKeyDown","keyCode","_sentinelEndRef$curre","_panelRef$current","pushed","setPushed","pushConfig","pushDistance","mergedContext","_parentContext$push","_parentContext$pull","_parentContext$pull2","maskNode","maskRef","motionMaskClassName","motionMaskStyle","wrapperStyle","panelNode","RefDrawerPopup","Drawer","_props$open","_props$autoFocus","_props$width","lastActiveRef","internalAfterOpenChange","_popupRef$current","_lastActiveRef$curren","drawerPopupProps","headerStyle","footerStyle","drawerStyles","drawerContext","customCloseIconRender","footerClassName","getMoveTranslate","getEnterLeaveStyle","startStyle","endStyle","getFadeStyle","getPanelMotionStyles","genDrawerStyle","colorBgMask","paddingLG","colorBgTextHover","colorBgTextActive","footerPaddingBlock","footerPaddingInline","useStyle$6","drawerToken","defaultPushState","customizeGetContainer","drawerStyle","contentWrapperStyle","drawerClassName","mergedWidth","mergedHeight","panelMotion","motionPlacement","propClassNames","propStyles","RcDrawer","isPresetSize","isValidGapNumber","SpaceContext","SpaceContextProvider","split","latestIndex","Space","contextSize","horizontalSize","verticalSize","isPresetVerticalSize","isPresetHorizontalSize","isValidVerticalSize","isValidHorizontalSize","itemClassName","spaceContext","gapStyle","FileTextOutlined","FileTextOutlinedSvg","ZoomInOutlined","ZoomInOutlinedSvg","ZoomOutOutlined","ZoomOutOutlinedSvg","HIDDEN_TEXTAREA_STYLE","SIZING_STYLE","computedStyleCache","hiddenTextarea","calculateNodeStyling","boxSizing","paddingSize","borderSize","sizingStyle","nodeInfo","calculateAutoSizeStyle","uiTextNode","minRows","maxRows","_calculateNodeStyling","minHeight","maxHeight","singleRowHeight","RESIZE_START","RESIZE_MEASURING","RESIZE_STABLE","ResizableTextArea","autoSize","onInternalAutoSize","setMergedValue","textareaRef","needAutoSize","fixFirefoxAutoScroll","_textareaRef$current","selectionStart","selectionEnd","resizeState","setResizeState","autoSizeStyle","setAutoSizeStyle","startResize","textareaStyles","resizeRafRef","mergedAutoSizeStyle","TextArea","_countConfig$max","customValue","onCompositionStart","textareaResized","setTextareaResized","resizableTextAreaRef","getTextArea","_resizableTextAreaRef","_getTextArea","onInternalCompositionStart","handleResize","_getTextArea2","isPureTextArea","genTextAreaStyle","textareaPrefixCls","useStyle$5","isMouseDown","setIsMouseDown","resizeDirty","setResizeDirty","RcTextArea","DoubleLeftOutlined","DoubleLeftOutlinedSvg","DoubleRightOutlined","DoubleRightOutlinedSvg","defaultPageSizeOptions","Options","_props$pageSizeOption","pageSizeOptions","changeSize","pageSize","goButton","quickGo","buildOptionText","showSizeChanger","sizeChangerRender","goInputText","setGoInputText","getValidValue","mergeBuildOptionText","go","KEYCODE","getPageSizeOptions","numberA","numberB","changeSelect","goInput","gotoButton","Pager","showTitle","onKeyPress","itemRender","handleKeyPress","pager","defaultItemRender","isInteger","calculatePage","_pageSize","_props$selectPrefixCl","selectPrefixCls","currentProp","_props$defaultCurrent","defaultCurrent","_props$total","pageSizeProp","_props$defaultPageSiz","defaultPageSize","_props$onChange","hideOnSinglePage","_props$showPrevNextJu","showPrevNextJumpers","showQuickJumper","showLessItems","_props$showTitle","_props$onShowSizeChan","onShowSizeChange","_props$locale","zhCN","_props$totalBoundaryS","totalBoundaryShowSizeChanger","simple","showTotal","_props$showSizeChange","_props$itemRender","jumpPrevIcon","jumpNextIcon","prevIcon","nextIcon","paginationRef","setPageSize","setCurrent","internalInputVal","setInternalInputVal","hasOnChange","hasCurrent","jumpPrevPage","jumpNextPage","getItemIcon","allPages","isValid","shouldDisplayQuickJumper","changePageSize","newCurrent","nextCurrent","newPage","hasPrev","hasNext","prevHandle","nextHandle","jumpPrevHandle","jumpNextHandle","runIfEnter","restParams","runIfEnterPrev","runIfEnterNext","runIfEnterJumpPrev","runIfEnterJumpNext","renderPrev","prevPage","prevButton","renderNext","nextPage","nextButton","handleGoTO","jumpPrev","dataOrAriaAttributeProps","totalText","jumpNext","pagerList","pagerProps","isReadOnly","simplePager","pageBufferSize","prevItemTitle","nextItemTitle","jumpPrevContent","jumpNextContent","lastOne","prevDisabled","nextDisabled","nextTabIndex","genPaginationDisabledStyle","genPaginationMiniStyle","genPaginationSimpleStyle","genPaginationJumpStyle","genPaginationItemStyle","genPaginationStyle","genPaginationFocusStyle","useStyle$4","paginationToken","genBorderedStyle","BorderedStyle","useShowSizeChanger","customizeSelectPrefixCls","customLocale","selectComponentClass","xs","contextShowSizeChangerConfig","isSmall","enUS","propShowSizeChanger","propSizeChangerSelectProps","contextShowSizeChanger","contextSizeChangerSelectProps","mergedShowSizeChanger","mergedShowSizeChangerSelectProps","SizeChanger","mergedPageSizeOptions","onSizeChange","ariaLabel","sizeChangerClassName","propSizeChangerClassName","propSizeChangerOnChange","selectedValue","nextSize","iconsProps","ellipsis","extendedClassName","RcPagination","viewSize","borderWidth","circumference","CustomCircle","hasCircleCls","Progress","holderClassName","hideClassName","setRender","safePtg","circleStyle","Looper","Indicator","antSpinMove","antRotate","genSpinStyle","useStyle$3","spinToken","AUTO_INTERVAL","STEP_BUCKETS","usePercent","spinning","mockPercent","setMockPercent","mockIntervalRef","isAuto","restPTG","limit","stepPtg","defaultIndicator","shouldDelay","Spin","customSpinning","tip","wrapperClassName","fullscreen","contextIndicator","setSpinning","mergedPercent","showSpinning","isNestedPattern","spinClassName","containerClassName","spinElement","toList","candidate","skipEmpty","PurePanel$1","additionalProps","modalWarn","OriginModal","CloseCircleTwoTone","CloseCircleTwoToneSvg","CopyOutlined","CopyOutlinedSvg","DownloadOutlined","DownloadOutlinedSvg","EditOutlined","EditOutlinedSvg","EnterOutlined","EnterOutlinedSvg","FileImageOutlined","FileImageOutlinedSvg","FullscreenExitOutlined","FullscreenExitOutlinedSvg","FullscreenOutlined","FullscreenOutlinedSvg","PauseCircleTwoTone","PauseCircleTwoToneSvg","PlayCircleTwoTone","PlayCircleTwoToneSvg","SettingOutlined","SettingOutlinedSvg","viewBox","iconRef","svgClassString","innerSvgProps","renderInnerNode","Switch","_classNames","loadingIcon","checkedChildren","unCheckedChildren","innerChecked","setInnerChecked","newChecked","mergedChecked","switchClassName","genSwitchSmallStyle","trackHeightSM","trackPadding","trackMinWidthSM","innerMinMarginSM","innerMaxMarginSM","handleSizeSM","switchInnerCls","trackPaddingCalc","innerMaxMarginCalc","genSwitchLoadingStyle","genSwitchHandleStyle","handleBg","handleShadow","switchHandleCls","genSwitchInnerStyle","trackHeight","innerMinMargin","innerMaxMargin","genSwitchStyle","trackMinWidth","useStyle$2","switchToken","heightSM","checkedProp","defaultCheckedProp","setChecked","changeHandler","RcSwitch","defaultAlgorithm","getTitleStyle","titleMarginBottom","getTitleStyles","headings","headingLevel","getLinkStyles","getEditableStyles","inputShift","getCopyableStyles","getEllipsisStyles","genTypographyStyle","titleMarginTop","useStyle$1","Editable","onSave","onEnd","enterIcon","inComposition","lastKeyCode","confirmChange","altKey","metaKey","textAreaClassName","toggleSelection","ranges","deselectCurrent","clipboardToIE11Formatting","defaultMessage","copyKey","reselectPrevious","success","successful","copyToClipboard","__awaiter","thisArg","_arguments","P","generator","adopt","fulfilled","rejected","useCopyClick","copyConfig","copied","setCopied","copyLoading","setCopyLoading","copyIdRef","cleanCopyId","copyOptions","useMergedConfig","propConfig","templateConfig","support","useTooltipProps","editConfigText","Typography","setContentRef","typographyDirection","componentClassName","getNode","defaultNode","needDom","isEleEllipsis","childDiv","childRect","isValidText","CopyBtn","iconOnly","tooltips","onCopy","btnLoading","tooltipNodes","iconNodes","copiedText","copyText","systemStr","copyTitle","MeasureText","spanRef","getNodesLen","nodeList","totalLen","sliceNodes","currLen","currentNodeList","nodeLen","nextLen","restLen","STATUS_MEASURE_NONE","STATUS_MEASURE_PREPARE","STATUS_MEASURE_START","STATUS_MEASURE_NEED_ELLIPSIS","STATUS_MEASURE_NO_NEED_ELLIPSIS","lineClipStyle","EllipsisMeasure","enableMeasure","expanded","miscDeps","onEllipsis","fullContent","ellipsisCutIndex","setEllipsisCutIndex","cutMidRef","measureWhiteSpaceRef","needEllipsisRef","descRowsEllipsisRef","symbolRowEllipsisRef","canEllipsis","setCanEllipsis","needEllipsis","setNeedEllipsis","ellipsisHeight","setEllipsisHeight","parentWhiteSpace","setParentWhiteSpace","nextWhiteSpace","baseRowsEllipsisHeight","descRowsEllipsisHeight","symbolRowEllipsisHeight","maxRowsHeight","cutMidIndex","minIndex","maxIndex","targetMidIndex","finalContent","EllipsisTooltip","enableEllipsis","isEllipsis","wrapperDecorations","underline","del","strong","italic","currentContent","needed","ELLIPSIS_STR","DECORATION_PROPS","Base","copyable","textLocale","typographyRef","editIconRef","textProps","enableEdit","editConfig","editing","setEditing","triggerType","triggerEdit","edit","prevEditing","onEditClick","onEditChange","onEditCancel","enableCopy","onCopyClick","isLineClampSupport","setIsLineClampSupport","isTextOverflowSupport","setIsTextOverflowSupport","isJsEllipsis","setIsJsEllipsis","isNativeEllipsis","setIsNativeEllipsis","isNativeVisible","setIsNativeVisible","ellipsisConfig","isExpanded","setExpanded","mergedEnableEllipsis","needMeasureEllipsis","cssEllipsis","setCssEllipsis","canUseCssEllipsis","isMergedEllipsis","cssTextOverflow","cssLineClamp","onExpandClick","ellipsisWidth","setEllipsisWidth","onJsEllipsis","jsEllipsis","textEle","currentEllipsis","topAriaLabel","renderExpand","expandable","symbol","renderEdit","editTitle","renderCopy","renderOperations","renderEllipsis","resizeRef","Ellipsis","Link","rel","Text","mergedEllipsis","Text$1","TITLE_ELE_LIST","OriginTypography","InternalPanel","panelClassName","hasSize","getCollapsible","collapsible","mergedCollapsible","useItems","useResizable","pxSizes","resizeInfos","prevItem","nextItem","prevSize","prevResizable","prevMin","prevCollapsible","nextResizable","nextMin","nextCollapsible","mergedResizable","startCollapsible","endCollapsible","getPtg","isPtg","itemSize","useSizes","propSizes","itemsCount","mergedContainerSize","ptg2px","innerSizes","setInnerSizes","mergedSizes","postPercentSizes","ptgList","emptyCount","totalPtg","avgRest","postPxSizes","postPercentMinSizes","postPercentMaxSizes","useResize","resizableInfos","percentSizes","updateSizes","limitSizes","getLimitSize","defaultLimit","cacheSizes","setCacheSizes","cacheCollapsedSize","movingIndex","setMovingIndex","getPxSizes","confirmedIndex","mergedIndex","numSizes","startMinSize","endMinSize","startMaxSize","endMaxSize","mergedOffset","currentSizes","adjustedType","targetIndex","currentSize","targetSize","totalSize","currentSizeMin","currentSizeMax","targetSizeMin","targetSizeMax","limitStart","limitEnd","halfOffset","targetCacheCollapsedSize","currentCacheCollapsedSize","getValidNumber","SplitBar","ariaNow","ariaMin","ariaMax","resizable","onOffsetStart","onOffsetUpdate","onOffsetEnd","onCollapse","lazy","splitBarPrefixCls","startPos","setStartPos","constrainedOffset","setConstrainedOffset","constrainedOffsetX","constrainedOffsetY","touch","getConstrainedOffset","rawOffset","currentPos","newPos","minAllowed","maxAllowed","handleLazyMove","constrainedOffsetValue","handleLazyEnd","handleTouchMove","handleTouchEnd","transformStyle","StartIcon","EndIcon","centerStyle","genSplitterStyle","splitBarDraggableSize","splitBarSize","splitTriggerSize","controlItemBgActiveHover","splitBarCls","splitMaskCls","splitPanelCls","halfTriggerSize","splitterBarPreviewOffsetVar","splitterBarPreviewStyle","resizeSpinnerSize","Splitter","onResizeStart","onResizeEnd","isVertical","existSize","existUndefinedSize","setContainerSize","onContainerResize","panelSizes","itemPxSizes","itemPtgSizes","itemPtgMinSizes","itemPtgMaxSizes","onInternalResizeStart","onInternalResizeUpdate","lazyEnd","nextSizes","onInternalResizeEnd","onInternalCollapse","maskCls","stackSizes","panel","splitBar","resizableInfo","ariaMinStart","ariaMinEnd","ariaMaxStart","ariaMaxEnd","SplitterComp","window","undefined","LIBVERSION","EMPTY","UNKNOWN","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","MAJOR","MODEL","NAME","TYPE","VENDOR","VERSION","ARCHITECTURE","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","EMBEDDED","UA_MAX_LENGTH","AMAZON","APPLE","ASUS","BLACKBERRY","BROWSER","CHROME","EDGE","FIREFOX","GOOGLE","HUAWEI","LG","MICROSOFT","MOTOROLA","OPERA","SAMSUNG","SHARP","SONY","XIAOMI","ZEBRA","FACEBOOK","CHROMIUM_OS","MAC_OS","SUFFIX_BROWSER","extend","regexes","extensions","mergedRegexes","enumerize","enums","has","str1","str2","lowerize","majorize","rgxMapper","ua","arrays","strMapper","oldSafariMap","windowsVersionMap","UAParser","_navigator","_ua","_uach","_rgxmap","_isSelfNav","_browser","_cpu","_device","_engine","_os","exports","$","parser","this","lib","_interopDefault","React__default","ClientUAInstance","browser","cpu","device","engine","os","setUa","userAgentString","parseUserAgent","userAgent","UserAgentInstance","UAHelper","enumerableOnly","symbols","sym","Constructor","protoProps","staticProps","subClass","superClass","excluded","sourceSymbolKeys","_arr","_n","_s","minLen","arr2","DeviceTypes","BrowserTypes","OsTypes","InitialDeviceTypes","checkDeviceType","setUserAgent","getNavigatorInstance","isIOS13Check","nav","browserPayload","mobilePayload","smartTvPayload","isSmartTV","consolePayload","isConsole","wearablePayload","isWearable","embeddedPayload","isEmbedded","deviceDetect","isTablet","isMobileType","isTabletType","isMobileAndTabletType","isSmartTVType","isBrowserType","isWearableType","isConsoleType","isEmbeddedType","getMobileVendor","vendor","getMobileModel","model","getDeviceType","_ref11","isAndroidType","_ref12","isWindowsType","_ref13","isMacOsType","_ref14","isWinPhoneType","_ref15","isIOSType","_ref16","getOsVersion","_ref17","getOsName","_ref18","isChromeType","_ref19","isFirefoxType","_ref20","isChromiumType","_ref21","isEdgeType","_ref22","isYandexType","_ref23","isSafariType","_ref24","isMobileSafariType","_ref25","isOperaType","_ref26","isIEType","_ref27","isMIUIType","_ref28","isSamsungBrowserType","_ref29","getBrowserFullVersion","_ref30","getBrowserVersion","_ref31","major","getBrowserName","_ref32","getEngineName","_ref33","getEngineVersion","_ref34","isElectronType","isEdgeChromiumType","getIOS13","getIPad13","getIphone13","getIPod13","getUseragent","userAg","buildSelectorsObject","isMobileSafari","isChromium","isMobileOnly","isDesktop","isAndroid","isWinPhone","isIOS","isChrome","isFirefox","isSafari","isOpera","osVersion","osName","fullBrowserVersion","browserVersion","browserName","mobileVendor","mobileModel","engineName","engineVersion","getUA","isEdge","isYandex","deviceType","isIOS13","isIPad13","isIPhone13","isIPod13","isElectron","isEdgeChromium","isLegacyEdge","isWindows","isMacOs","isMIUI","isSamsungBrowser","getSelectorsByUserAgent","_UAHelper$parseUserAg","AndroidView","renderWithFragment","BrowserView","IEView","IOSView","MobileView","TabletView","WinPhoneView","MobileOnlyView","SmartTVView","ConsoleView","WearableView","CustomView","withOrientationChange","WrappedComponent","_class","useMobileOrientation","handleOrientationChange","useDeviceData","hookUserAgent","useDeviceSelectors","deviceData","selectors","isMobile_1","useMobileOrientation_1","errorInfo","jsxs","jsx","i18next","defaultProps","mouseMove","mouseUp","touchEnd","touchMove","touchStart","getDirection","rotateXYByAngle","angle","angleInRadians","getHandlers","handlerProps","onStart","isTouch","onMove","onUp","xy","velocity","vxvy","dir","eventData","cancelablePageSwipe","onSwipedDir","cleanUpMouse","attachTouch","baseOptions","tls","addState","updateTransientState","previousProps","useSwipeable","trackMouse","transientState","transientProps","defaultKey","handlers","stateSetter","svgFilter","initialRadius","expandBBsForEditorialItems","svgContainer","svgElement","expandBBsForRdgs","labels","escapedLabel","staff","staffHighlightColors","noteHighlightStyle","svgHighlightFilters","getSvgStyleRules","ignoreStaffs","PlayerHighlighter","timemap","playingPosition","seekPosition","showReconstructions","renderedSvgData","eventsQueue","lastTimeStamp","animateElements","buildAnimateElementsCache","elementMap","stopGlowingNotes","startGlowingNotes","resetHiglights","higlightNotesAtPosition","noteElement","remainingHighlights","staffsWithoutAudio","labelsWithAudio","svgStyleRules","currentPlayingPosition","off","on","escapedId","noteElements","sharedAudioContext","MS_OVER_LAST_TIMESTAMP","useWebAudioPlayer","audioUrl","audioOverlayTracks","originalMei","setSeekPosition","setPlayingState","setPlayingPosition","goToPage","setAutoScroll","verovio","audioContextRef","startTimeRef","pausedPositionRef","animationFrameRef","sourceNodesRef","audioBuffersRef","canPlay","setCanPlay","loadedTracks","setLoadedTracks","needsUserInteractionRef","getAudioContext","AudioContext","resumeAudioContext","loadAudio","buffer","fetchAudioBuffer","stopPlayback","loadOverlayAudio","url","arrayBuffer","checkPageForPosition","playingAtPosition","playingPage","startPlayback","pausePlayback","handlePlayPause","handlePlay","onAudioEnded","getCurrentPosition","positionSeconds","startPosition","startSeconds","trackId","updatePlaybackPosition","playPauseTooltip","handleStop","AudioPlayer","playButton","stopButton","pauseButton","playControls","targets","useEditorialHandler","setShowingEditorial","editorials","getEditorialAttached","elemCorrespTarget","elemCorespId","findTarget","closest","editorialForTarget","handleElementClick","bb","parentTarget","formatType","useHoverHighlighter","svgId","HoverHighlighter","hoverFilterElement","floor","createCoords","oppositeSideMap","oppositeAlignmentMap","clamp","evaluate","getSide","getAlignment","getOppositeAxis","axis","getAxisLength","yAxisSides","getSideAxis","getAlignmentAxis","getAlignmentSides","rects","alignment","alignmentAxis","mainAlignmentSide","getOppositePlacement","getExpandedPlacements","oppositePlacement","getOppositeAlignmentPlacement","lrPlacement","rlPlacement","tbPlacement","btPlacement","getSideList","side","isStart","getOppositeAxisPlacements","flipAlignment","expandPaddingObject","getPaddingObject","rectToClientRect","computeCoordsFromPlacement","floating","sideAxis","alignLength","commonX","commonY","commonAlign","coords","computePosition","strategy","middleware","platform","validMiddleware","statefulPlacement","middlewareData","nextX","nextY","reset","detectOverflow","_await$platform$isEle","boundary","rootBoundary","elementContext","altBoundary","paddingObject","clippingClientRect","offsetParent","offsetScale","elementClientRect","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","center","shouldAddOffset","alignmentOffset","flip","_middlewareData$arrow","_middlewareData$flip","initialPlacement","checkMainAxis","checkCrossAxis","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","detectOverflowOptions","initialSideAxis","isBasePlacement","fallbackPlacements","hasFallbackAxisSideDirection","overflows","overflowsData","sides","_middlewareData$flip2","_overflowsData$filter","nextPlacement","resetPlacement","_overflowsData$filter2","currentSideAxis","originSides","convertValueToCoords","mainAxisMulti","crossAxisMulti","mainAxis","crossAxis","_middlewareData$offse","diffCoords","shift","limiter","mainAxisCoord","crossAxisCoord","minSide","maxSide","limitedCoords","hasWindow","getNodeName","isNode","getWindow","_node$ownerDocument","getDocumentElement","isHTMLElement","isShadowRoot","invalidOverflowDisplayValues","isOverflowElement","getComputedStyle","tableElements","isTableElement","topLayerSelectors","isTopLayer","transformProperties","willChangeValues","containValues","isContainingBlock","elementOrCss","webkit","isWebKit","getContainingBlock","currentNode","getParentNode","isLastTraversableNode","lastTraversableNodeNames","getNodeScroll","getNearestOverflowAncestor","getOverflowAncestors","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","frameElement","getFrameElement","getCssDimensions","hasOffset","shouldFallback","unwrapElement","getScale","domElement","noOffsets","getVisualOffsets","shouldAddVisualOffsets","isFixed","floatingOffsetParent","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","visualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","getWindowScrollBarX","leftScroll","getHTMLOffset","scroll","ignoreScrollbarX","htmlRect","convertOffsetParentRelativeRectToViewportRelativeRect","topLayer","isOffsetParentAnElement","offsetRect","htmlOffset","getClientRects","getDocumentRect","html","body","getViewportRect","visualViewport","visualViewportBased","absoluteOrFixed","getInnerBoundingClientRect","getClientRectFromClippingAncestor","clippingAncestor","hasFixedPositionAncestor","stopNode","getClippingElementAncestors","cachedResult","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","getClippingRect","clippingAncestors","firstClippingAncestor","clippingRect","accRect","getDimensions","getRectRelativeToOffsetParent","setLeftRTLScrollbarOffset","isStaticPositioned","getTrueOffsetParent","rawOffsetParent","getOffsetParent","svgOffsetParent","getElementRects","getOffsetParentFn","getDimensionsFn","floatingDimensions","rectsAreEqual","observeMove","io","_io","refresh","threshold","elementRectForRootMargin","insetTop","insetRight","insetBottom","insetLeft","isFirstUpdate","handleObserve","ratio","autoUpdate","ancestorScroll","ancestorResize","elementResize","layoutShift","animationFrame","referenceEl","ancestors","cleanupIo","reobserveFrame","firstEntry","_resizeObserver","frameId","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","offset$1","shift$1","flip$1","arrow$1","platformWithCache","computePosition$1","S","E","A","O","T","L","C","N","D","I","H","M","W","V","F","K","U","X","Y","Z","J","Q","ee","te","le","re","ne","ie","se","ae","ue","de","pe","ve","me","fe","ye","he","we","be","Se","ge","Ee","Ae","Oe","ke","Te","Le","Ce","Re","xe","Ne","$e","Ie","ze","je","Be","De","qe","He","Me","We","Pe","Ve","Fe","Ke","Ue","Xe","Ye","ce","Editorials","showingEditorial","appOptions","setAppOptions","choiceOptions","setChoiceOptions","TOOLTIP_SELECTOR","showingEditorialItem","getAnnotationText","annot","getAppChoiceExtraText","sourceTitle","contentDescription","getAppChoiceText","subtype","optionSource","extraText","rdgs","getChoiceText","onOptionSelected","choice","selectedOptionIndex","removeEntries","newOptions","getOptionsList","getSelectedOption","inApp","lemIdx","inChoices","getChoices","selectedOptionIdx","getTooltipContent","SvgStaticPlayer","SvgScrollingPlayer","str2padded","formatTime","millis","mins","secs","tooltipNullFormater","PlayerControls","audioDuration","positionString","setPositionString","durationString","setDurationString","playerMode","setPlayerMode","currentDuration","setCurrentDuration","seekValue","isChanging","durationStr","updateTime","currentTimeStr","handleSliderChange","handleSliderChangeComplete","roundedPostion","onPlayerModeChange","playModeSegmented","ScrollingPlayerSvg","StaticPlayerSvg","useScoreControls","fullScreenElement","resetPlayerPosition","increaseScale","decreaseScale","reachedEffectiveMaxScale","setReachedEffectiveMaxScale","currentPageNumber","isFullScreen","handleFullScreenToggle","handlePageClick","isPlaying","canZoomOut","canZoomIn","shouldShowPagination","ScoreControls","showDownloadButton","scoreUrl","mainControls","viewingControls","__createBinding","k2","desc","__setModuleDefault","__importStar","ar","mod","useWindowSize_1","useWindowSize","useBreakpoint_1","useBreakpoints","breakpoints","__assign","useComponentSize_1","useComponentSize","newHeight","newWidth","__exportStar","require$$2","XPATH_RECONSTRUCTION_RDG_LABELS","XPATH_FIRST_MEASURE","XPATH_FICTA_ACCIDS","nsResolver","AddSectionTitlesFilter","rend","AddReconstructionNamesFilter","app","lem","rdg","FilterToNVerses","numVerses","FilterNormalizeFicta","fictacAccidIter","EnsureElementIdFilter","EnsureMeasuresIdFilter","EnsureSectionsIdFilter","ScoreProcessor","APP_GLOBAL_TYPES","PITCH_NAMES","ACCIDENTALS","MENSURAL_DURATIONS","ScoreAnalyzer","tonoNumber","reason","resp","dur","pname","pitchEntry","pitchName","accidCode","accidentalEntry","accidentalText","pitchWithAccidental","durationText","annots","variants","lastMeasureN","notes","sections","section","subChild","voiceName","reconstruction","reconstructionsForVoice","reconstructionItem","choiceId","choiceElement","nodeType","annotations","annotId","targetIds","tiedNotes","startid","endid","first","second","editorialElements","consumedAnnotationsTargets","unusedIds","elementsForAnnotation","EXTRA_SVG_ATTRIBUTES","AUTO_SCROLL_RENDERING_WIDTH_LIMIT","verovioBaseOptions","initialClassForTransition","resolveTimemapAnimations","buildAppOptions","voiceReconstructionSelectors","useScoreActions","svgContainerWidth","svgContainerHeight","showMusicAnalysisByDefault","measureNumberInterval","setScoreLayout","getSectionMap","scoreMei","sectionsMap","sectionPage","performLoadAction","postLoadTransition","meiStr","restorePositionForAchor","loadedHeight","loadedWidth","startTime","optionsStart","loadStart","countStart","loadedPagesCount","sectionMap","renderPage","pageForMeasureOnView","performLoadAutoScrollAction","mergeTimemapTies","newTimeMap","firstOnIndex","firstOffIndex","secondOnIndex","secondOffIndex","resolveTimemap","analyzer","timeMapWithTiesMerged","performRenderAction","timemapStart","svgStart","svgData","domStart","meiStart","firstMeasureId","newSvg","performRenderAutoScrollAction","renderedWidth","renderedHeight","shouldShowSpinner","svgContainerElement","showSpinner","nextAction","useScoreRenderer","svgContainerRef","svgPageHeight","pageElement","boundingBox","svgSingleSystem","calculateEffectiveMaxScale","currentEffectiveMaxScale","scoreEffectiveHeight","newReachedEffectiveMaxScale","svgContainerClasses","getSvgElement","isSpotlightVisible","LoadingSpinner","useIdleCallback","idleCallbackId","ScoreView","scoreViewProps","setIsLoading","pendingAction","setPendingAction","showingMei","setShowingMei","setScale","showNVerses","setRenderedSvgData","getCachedPage","setCachedPage","clearPageCache","setShowSpinner","lastRenderedUrl","executeAction","isReady","renderResult","newScale","svgHTML","svgDataWithHTML","showingReconstructiononsLabels","newMaxScale","generateShowingScore","scoreProcessor","updateLoadedScore","restoreAnchor","newShowingMei","preprocessTime","fadeOutTransition","currentSvg","anchorElement","reloadScore","cachedPage","tempDiv","finalSvg","currentRenderedPage","preRenderPage","tempContainer","useScoreAnimation","animationRef","getAudioDurationMillis","generateKeyframes","viewportBB","initialX","measuresOn","measureElement","xPosition","startAnimation","initialPosition","shouldPause","timing","setupAutoScrollLayout","scoreContainer","containerBoundingBox","expandLeft","hostWidth","ScoreViewAutoScroll","setShowEditorial","addLoadAction","autoScrollResult","useIsVisible","isIntersecting","setIntersecting","SHOW_TIMEOUT","MouseTracker","getContent","setContent","newContent","ScoreViewContainer","scoreViewContainerProps","goToNextPage","goToPreviousPage","mouseOver","setMouseOver","scoreViewerRef","isScoreVisible","swipeHandlers","staffBB","ScoreViewContainer$1","ok","unreachable","settings","nameRe","nameReJsx","Schema$1","normal","definitions","definition","Info$1","Info","powers","increment","booleanish","overloadedBoolean","spaceSeparated","commaSeparated","commaOrSpaceSeparated","checks","check","DefinedInfo","properties","normals","aria","caseSensitiveTransform","caseInsensitiveTransform","xlink","xmlns","xml","hastToReact","cap","dash","find","Type","camelcase","dashes","kebab","$0","htmlBase","svgBase","COMMENT_REGEX","NEWLINE_REGEX","WHITESPACE_REGEX","PROPERTY_REGEX","COLON_REGEX","VALUE_REGEX","SEMICOLON_REGEX","TRIM_REGEX","NEWLINE","FORWARD_SLASH","ASTERISK","EMPTY_STRING","TYPE_COMMENT","TYPE_DECLARATION","inlineStyleParser","lineno","updatePosition","lines","Position","comments","decls","decl","__importDefault","cjs","StyleToObject","inline_style_parser_1","iterator","styleObject","hasIterator","utilities","CUSTOM_PROPERTY_REGEX","HYPHEN_REGEX","NO_HYPHEN_REGEX","VENDOR_PREFIX_REGEX","MS_VENDOR_PREFIX_REGEX","skipCamelCase","capitalize","trimHyphen","style_to_object_1","utilities_1","StyleToJS","pointEnd","pointStart","stringifyPosition","VFileMessage","causeOrReason","optionsOrParentOrPlace","legacyCause","own","emptyMap","tableCellElement","docs","toJsxRuntime","filePath","developmentCreate","productionCreate","one","mdxExpression","mdxJsxElement","mdxEsm","parentSchema","findComponentFromName","createElementProps","createChildren","addNode","addChildren","expression","assert","crashEstree","createJsxElementProps","jsxDEV","isStaticChildren","createProperty","objectExpression","countsByName","commas","spaces","transformStylesToCssCasing","styleToJs","cause","allowExpression","identifiers","isIdentifierName","place","domCasing","cssCasing","transformStyleToCssCasing","toDash","urlAttributes","toString","includeImageAlt","includeHtml","all","decodeNamedCharacterReference","characterReference","splice","remove","chunkStart","parameters","hasOwnProperty","combineExtensions","syntaxExtension","extension","hook","constructs","existing","before","decodeNumericCharacterReference","normalizeIdentifier","asciiAlpha","regexCheck","asciiAlphanumeric","asciiAtext","asciiControl","asciiDigit","asciiHexDigit","asciiPunctuation","markdownLineEnding","markdownLineEndingOrSpace","markdownSpace","unicodePunctuation","unicodeWhitespace","normalizeUri","factorySpace","effects","initializeContent","contentStart","afterContentStartConstruct","paragraphInitial","lineStart","document","initializeDocument","containerConstruct","tokenizeContainer","continued","childFlow","childToken","lineStartOffset","documentContinue","checkNewContainers","closeFlow","indexBeforeExits","indexBeforeFlow","exitContainers","documentContinued","flowStart","thereIsANewContainer","thereIsNoNewContainer","containerContinue","flowContinue","writeToChild","endOfFile","stream","seen","nok","classifyCharacter","resolveAll","called","attention","resolveAllAttention","tokenizeAttention","openingSequence","closingSequence","use","nextEvents","movePoint","attentionMarkers","marker","inside","after","autolink","tokenizeAutolink","schemeOrEmailAtext","emailAtext","schemeInsideOrEmailAtext","urlInside","emailAtSignOrDot","emailLabel","emailValue","blankLine","tokenizeBlankLine","blockQuote","tokenizeBlockQuoteContinuation","exit","tokenizeBlockQuoteStart","contStart","contBefore","characterEscape","tokenizeCharacterEscape","tokenizeCharacterReference","numeric","nonLazyContinuation","tokenizeNonLazyContinuation","codeFenced","tokenizeCodeFenced","closeStart","tokenizeCloseStart","initialPrefix","sizeOpen","beforeSequenceOpen","tail","sequenceOpen","infoBefore","atNonLazyBreak","metaBefore","contentBefore","beforeContentChunk","contentChunk","startBefore","beforeSequenceClose","sequenceClose","sequenceCloseAfter","codeIndented","tokenizeCodeIndented","furtherStart","tokenizeFurtherStart","afterPrefix","atBreak","codeText","resolveCodeText","tokenizeCodeText","tailExitIndex","headEnterIndex","enter","between","SpliceBuffer","initial","stop","deleteCount","removed","chunkedPush","subtokenize","eventsArray","jumps","lineIndex","otherIndex","otherEvent","subevents","subcontent","eventIndex","startPositions","tokenizer","childEvents","gaps","adjust","breaks","resolveContent","tokenizeContent","continuationConstruct","tokenizeContinuation","chunkInside","contentEnd","contentContinue","startLookahead","prefixed","factoryDestination","literalType","literalMarkerType","rawType","stringType","balance","enclosedBefore","enclosed","enclosedEscape","rawEscape","factoryLabel","markerType","labelInside","labelEscape","factoryTitle","factoryWhitespace","tokenizeDefinition","titleBefore","tokenizeTitleBefore","labelAfter","markerAfter","destinationBefore","destinationAfter","afterWhitespace","beforeMarker","titleAfter","titleAfterOptionalWhitespace","hardBreakEscape","tokenizeHardBreakEscape","headingAtx","resolveHeadingAtx","tokenizeHeadingAtx","sequenceFurther","htmlBlockNames","htmlRawNames","htmlFlow","resolveToHtmlFlow","tokenizeHtmlFlow","blankLineBefore","tokenizeBlankLineBefore","nonLazyContinuationStart","tokenizeNonLazyContinuationStart","closingTag","markerB","declarationOpen","tagCloseStart","continuationDeclarationInside","tagName","commentOpenInside","cdataOpenInside","continuation","slash","basicSelfClosing","completeClosingTagAfter","completeAttributeNameBefore","completeEnd","completeAttributeName","completeAttributeNameAfter","completeAttributeValueBefore","completeAttributeValueQuoted","completeAttributeValueUnquoted","completeAttributeValueQuotedAfter","completeAfter","continuationCommentInside","continuationRawTagOpen","continuationClose","continuationCdataInside","continuationAfter","continuationStart","continuationStartNonLazy","continuationBefore","continuationRawEndTag","htmlText","tokenizeHtmlText","returnState","instruction","tagOpen","commentEnd","commentClose","lineEndingBefore","cdata","cdataClose","cdataEnd","instructionClose","tagClose","tagCloseBetween","tagOpenBetween","tagOpenAttributeName","tagOpenAttributeNameAfter","tagOpenAttributeValueBefore","tagOpenAttributeValueQuoted","tagOpenAttributeValueUnquoted","tagOpenAttributeValueQuotedAfter","lineEndingAfter","lineEndingAfterPrefix","labelEnd","resolveAllLabelEnd","resolveToLabelEnd","tokenizeLabelEnd","resourceConstruct","tokenizeResource","referenceFullConstruct","tokenizeReferenceFull","referenceCollapsedConstruct","tokenizeReferenceCollapsed","newEvents","media","labelStart","defined","labelEndNok","labelEndOk","referenceNotFull","resourceStart","resourceBefore","resourceOpen","resourceEnd","resourceDestinationAfter","resourceDestinationMissing","resourceBetween","resourceTitleAfter","referenceFull","referenceFullAfter","referenceFullMissing","referenceCollapsedStart","referenceCollapsedOpen","labelStartImage","tokenizeLabelStartImage","labelStartLink","tokenizeLabelStartLink","lineEnding","tokenizeLineEnding","thematicBreak","tokenizeThematicBreak","sequence","tokenizeListContinuation","tokenizeListEnd","tokenizeListStart","listItemPrefixWhitespaceConstruct","tokenizeListItemPrefixWhitespace","indentConstruct","tokenizeIndent","initialSize","kind","atMarker","onBlank","endOfPrefix","otherPrefix","notBlank","notInCurrentItem","setextUnderline","resolveToSetextUnderline","tokenizeSetextUnderline","heading","flow","initializeFlow","atBlankEnding","afterConstruct","createResolver","initializeFactory","resolveAllLineSuffixes","initializeText","notText","extraResolver","resolveAllText","chunks","bufferIndex","chunk","resolveText","createTokenizer","initialize","columnStart","resolveAllConstructs","constructFactory","onsuccessfulconstruct","onsuccessfulcheck","consume","defineSkip","sliceSerialize","sliceStream","write","main","addResult","expandTabs","serializeChunks","sliceChunks","_bufferIndex","_index","accountForPotentialSkip","chunkIndex","onreturn","bogusState","listOfConstructs","constructIndex","currentConstruct","handleListOfConstructs","handleMapOfConstructs","handleConstruct","startPrevious","startCurrentConstruct","startEventsIndex","startStack","restore","startBufferIndex","endBufferIndex","atTab","defaultConstructs","creator","postprocess","preprocess","atCarriageReturn","preprocessor","encoding","endPosition","characterEscapeOrReference","decodeString","decode","$1","$2","fromMarkdown","compiler","opener","onenterdata","codeFlow","emphasis","hardBreak","listItem","onenterlistitemvalue","onenterlistordered","onenterreference","closer","onexitatxheadingsequence","onexitautolinkemail","onexitautolinkprotocol","onexitdata","onexitcharacterreferencemarker","onexitcharacterreferencevalue","onexitcharacterreference","onexitcodefenced","onexitcodefencedfence","onexitcodefencedfenceinfo","onexitcodefencedfencemeta","onexitcodeindented","onexitcodetext","onexitdefinitiondestinationstring","onexitdefinitionlabelstring","onexitdefinitiontitlestring","onexithardbreak","onexithtmlflow","onexithtmltext","onexitimage","onexitlabel","onexitlabeltext","onexitlineending","onexitlink","onexitreferencestring","onexitresourcedestinationstring","onexitresourcetitlestring","onexitresource","onexitsetextheading","onexitsetextheadinglinesequence","onexitsetextheadingtext","configure","resume","listStack","prepareList","defaultOnError","containerBalance","listSpread","firstBlankLineIndex","tailIndex","tailEvent","and","errorHandler","onExitError","depth","referenceType","fragment","combined","remarkParse","blockquote","strikethrough","footnoteReference","clobberPrefix","safeId","counter","reuseCounter","sup","revert","contents","imageReference","inlineCode","linkReference","loose","listLoose","listItemLoose","spread","firstRow","tableContent","tableRow","cellIndex","tableCell","trimLines","trimLine","VOID","PRIMITIVE","ARRAY","OBJECT","DATE","REGEXP","MAP","SET","ERROR","BIGINT","env","deserializer","as","out","unpair","flags","deserialize","asString","shouldSkip","serializer","lossy","structuredClone$1","defaultFootnoteBackContent","rereferenceIndex","defaultFootnoteBackLabel","referenceIndex","footnoteBackContent","footnoteBackLabel","footnoteLabel","footnoteLabelTagName","footnoteLabelProperties","listItems","backReferences","tailTail","structuredClone","convert","castFactory","anyFactory","propsFactory","typeFactory","tests","checkAsRecord","nodeAsRecord","testFunction","looksLikeANode","CONTINUE","EXIT","SKIP","visitParents","visitor","is","factory","parents","visit","subresult","grandparents","toResult","nodeAsParent","testOrVisitor","visitorOrReverse","maybeReverse","overload","definitionById","footnoteById","footnoteCounts","defaultHandlers","applyData","patch","defaultUnknownHandler","trimMarkdownSpaceStart","hName","hChildren","hProperties","toHast","foot","remarkRehype","destination","file","hastTree","bail","toStr","gOPD","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","setProperty","getProperty","copyIsArray","prototype","trough","fns","pipeline","run","middlewareIndex","middelware","wrapped","fnExpectsCallback","exception","then","minpath","basename","dirname","extname","join","assertPath","seenNonSlash","firstNonSlashEnd","extnameIndex","unmatchedSlash","startPart","startDot","preDotState","segments","joined","absolute","normalizeString","allowAboveRoot","lastSegmentLength","lastSlash","lastSlashIndex","minproc","cwd","isUrl","fileUrlOrPath","urlToPath","getPathFromURLPosix","pathname","third","VFile","isUint8Array","assertNonEmpty","assertPart","stem","CallableInstance","proto","apply","Processor","attacher","assertUnfrozen","transformer","realFile","vfile","assertParser","assertCompiler","executor","parseTree","realDone","compileTree","compileResult","looksLikeAValue","assertDone","assertNode","outputTree","resultingTree","attachers","addPlugin","addList","addPreset","plugin","plugins","entryIndex","primary","currentPrimary","isPlainObj","unified","frozen","asyncName","looksLikeAVFile","changelog","emptyPlugins","emptyRemarkRehypeOptions","safeProtocol","deprecations","Markdown","createProcessor","createFile","rehypePlugins","remarkPlugins","remarkRehypeOptions","allowedElements","allowElement","disallowedElements","skipHtml","unwrapDisallowed","urlTransform","defaultUrlTransform","deprecation","colon","questionMark","numberSign","ccount","escapeStringRegexp","findAndReplace","ignored","pairs","toPairs","pairIndex","grandparent","change","matchObject","tupleOrList","tuple","toExpression","toFunction","inConstruct","notInConstruct","gfmAutolinkLiteralFromMarkdown","transformGfmAutolinkLiterals","enterLiteralAutolink","enterLiteralAutolinkValue","exitLiteralAutolink","exitLiteralAutolinkEmail","exitLiteralAutolinkHttp","exitLiteralAutolinkWww","gfmAutolinkLiteralToMarkdown","findUrl","findEmail","isCorrectDomain","splitUrl","atext","trailExec","trail","closingParenIndex","openingParens","closingParens","email","footnoteReferencePeek","enterFootnoteCallString","enterFootnoteCall","enterFootnoteDefinitionLabelString","enterFootnoteDefinition","exitFootnoteCallString","exitFootnoteCall","exitFootnoteDefinitionLabelString","exitFootnoteDefinition","tracker","subexit","gfmFootnoteFromMarkdown","gfmFootnoteToMarkdown","firstLineBlank","footnoteDefinition","mapAll","mapExceptFirst","blank","constructsWithoutStrikethrough","handleDelete","peekDelete","gfmStrikethroughFromMarkdown","enterStrikethrough","exitStrikethrough","gfmStrikethroughToMarkdown","defaultStringLength","markdownTable","stringLength","alignments","cellMatrix","sizeMatrix","longestCellByColumn","mostCellsPerRow","rowIndex","row","columnIndex","toAlignment","zwitch","patternInScope","listInScope","none","_1","longestStreak","substring","expected","formatCodeAsIndented","checkFence","checkQuote","quote","checkEmphasis","encodeCharacterReference","encodeInfo","outside","outsideKind","insideKind","emphasisPeek","betweenHead","betweenTail","formatHeadingAsSetext","literalWithBreak","rank","htmlPeek","imagePeek","imageReferencePeek","inlineCodePeek","formatLinkAsAutolink","linkPeek","linkReferencePeek","checkBullet","checkBulletOther","bullet","bulletOther","checkBulletOrdered","checkRule","bulletCurrent","useDifferentMarker","firstListItem","checkListItemIndent","listItemIndent","phrasing","checkStrong","strongPeek","checkRuleRepetition","repetition","gfmTableFromMarkdown","enterTable","enterCell","enterRow","exitCodeText","exitTable","gfmTableToMarkdown","alignDelimiters","around","inlineCodeWithTable","handleTable","handleTableCell","handleTableRow","serializeData","handleTableAsData","handleTableRowAsData","matrix","gfmTaskListItemFromMarkdown","exitCheck","exitParagraphWithTaskListItem","gfmTaskListItemToMarkdown","listItemWithTaskListItem","firstParaghraph","sibling","checkable","gfmFromMarkdown","gfmToMarkdown","wwwPrefix","tokenizeWwwPrefix","tokenizeDomain","tokenizePath","tokenizeTrail","emailDomainDotTrail","tokenizeEmailDomainDotTrail","wwwAutolink","tokenizeWwwAutolink","previousWww","protocolAutolink","tokenizeProtocolAutolink","previousProtocol","emailAutolink","tokenizeEmailAutolink","previousEmail","gfmAutolinkLiteral","dot","gfmAtext","previousUnbalanced","emailDomain","emailDomainAfter","emailDomainDot","wwwStart","wwwAfter","protocolStart","protocolPrefixInside","protocolSlashesInside","afterProtocol","protocolAfter","wwwPrefixInside","wwwPrefixAfter","underscoreInLastSegment","underscoreInLastLastSegment","domainInside","domainAfter","domainAtPunctuation","sizeClose","pathInside","pathAtPunctuation","trailCharacterReferenceStart","trailBracketAfter","trailCharacterReferenceInside","indent","gfmFootnote","tokenizeDefinitionStart","tokenizeDefinitionContinuation","gfmFootnoteDefinitionEnd","tokenizeGfmFootnoteCall","tokenizePotentialGfmFootnoteCall","resolveToPotentialGfmFootnoteCall","callStart","callData","callEscape","labelAtMarker","whitespaceAfter","gfmStrikethrough","single","tokenizeStrikethrough","resolveAllStrikethrough","insideSpan","EditMap","addImplementation","vecs","editMap","at","gfmTableAlign","inDelimiterRow","alignIndex","gfmTable","tokenizeTable","resolveTable","sizeB","bodyRowStart","headRowBefore","headRowStart","headRowBreak","headDelimiterStart","headRowData","headRowEscape","headDelimiterBefore","headDelimiterValueBefore","headDelimiterCellBefore","headDelimiterNok","headDelimiterLeftAlignmentAfter","headDelimiterCellAfter","headDelimiterFiller","headDelimiterRightAlignmentAfter","bodyRowBreak","bodyRowData","bodyRowEscape","inFirstCellAwaitingPipe","rowKind","lastCell","afterHeadAwaitingFirstBodyRow","lastTableEnd","currentTable","currentBody","currentCell","flushTableEnd","flushCell","rowEnd","previousCell","groupName","valueName","getPoint","relatedStart","relatedEnd","valueToken","tableBody","exits","related","tasklistCheck","tokenizeTasklistCheck","gfmTaskListItem","spaceThenNonSpace","gfm","remarkGfm","micromarkExtensions","fromMarkdownExtensions","toMarkdownExtensions","parseSelector","defaultTagName","subvalue","createH","caseSensitive","createAdjustMap","lower","adjusted","isChild","addProperty","addChild","record","parseSpaces","parseCommas","parsePrimitive","finalResult","svgCaseSensitiveTagNames","location","indices","toOffset","toPoint","eol","cr","lf","webNamespaces","fromParse5","quirksMode","loc","startTag","endTag","createLocation","opening","closing","doctype","toParse5","currentSchema","htmlVoidElements","UNDEFINED_CODE_POINTS","REPLACEMENT_CHARACTER","CODE_POINTS","SEQUENCES","isSurrogate","cp","isSurrogatePair","getSurrogatePairCodePoint","cp1","cp2","isControlCodePoint","isUndefinedCodePoint","ERR","DEFAULT_BUFFER_WATERLINE","Preprocessor","cpOffset","col","startCol","nextCp","isLastChunk","TokenType","getTokenAttr","attrName","htmlDecodeTree","decodeMap","replaceCodePoint","codePoint","CharCodes","TO_LOWER_BIT","BinTrieFlags","isNumber","isHexadecimalCharacter","isAsciiAlphaNumeric","isEntityInAttributeInvalidEnd","EntityDecoderState","DecodingMode","EntityDecoder","decodeTree","emitCodePoint","decodeMode","digitCount","lastCp","expectedLength","determineBranch","consumed","nodeIndex","branchCount","jumpOffset","lo","hi","mid","midValue","NS","ATTRS","DOCUMENT_MODE","TAG_NAMES","TAG_ID","TAG_NAME_TO_ID","getTagID","SPECIAL_ELEMENTS","NUMBERED_HEADERS","State","TokenizerMode","isAsciiDigit","isAsciiUpper","isAsciiLower","isAsciiLetter","toAsciiLower","isWhitespace","isScriptDataDoubleEscapeSequenceEnd","getErrorForNumericCharacterReference","Tokenizer","writeCallback","initialName","attrNameFirstCh","attrLocations","ct","nextLocation","ch","_cp","$$","IMPLICIT_END_TAG_REQUIRED","IMPLICIT_END_TAG_REQUIRED_THOROUGHLY","SCOPING_ELEMENTS_HTML","SCOPING_ELEMENTS_HTML_LIST","SCOPING_ELEMENTS_HTML_BUTTON","SCOPING_ELEMENTS_MATHML","SCOPING_ELEMENTS_SVG","TABLE_ROW_CONTEXT","TABLE_BODY_CONTEXT","TABLE_CONTEXT","TABLE_CELLS","OpenElementStack","treeAdapter","tagID","popped","oldElement","newElement","referenceElement","newElementID","insertionIdx","targetIdx","tagNames","targetNS","elementIdx","htmlScope","tn","exclusionId","NOAH_ARK_CAPACITY","EntryType","MARKER","FormattingElementList","neAttrs","candidates","neAttrsLength","neTagName","neNamespaceURI","elementAttrs","neAttrsMap","neAttr","validCandidates","cAttr","bookmarkIdx","markerIdx","defaultTreeAdapter","namespaceURI","referenceNode","templateElement","contentElement","publicId","systemId","doctypeNode","prevNode","recipient","recipientAttrsMap","textNode","commentNode","endLocation","VALID_DOCTYPE_NAME","VALID_SYSTEM_ID","QUIRKS_MODE_SYSTEM_ID","QUIRKS_MODE_PUBLIC_ID_PREFIXES","QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES","QUIRKS_MODE_PUBLIC_IDS","LIMITED_QUIRKS_PUBLIC_ID_PREFIXES","LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES","hasPrefix","isConforming","getDocumentMode","MIME_TYPES","DEFINITION_URL_ATTR","ADJUSTED_DEFINITION_URL_ATTR","SVG_ATTRS_ADJUSTMENT_MAP","XML_ATTRS_ADJUSTMENT_MAP","SVG_TAG_NAMES_ADJUSTMENT_MAP","EXITS_FOREIGN_CONTENT","causesExit","startTagToken","adjustTokenMathMLAttrs","adjustTokenSVGAttrs","adjustedAttrName","adjustTokenXMLAttrs","adjustedAttrEntry","adjustTokenSVGTagName","adjustedTagName","isMathMLTextIntegrationPoint","isHtmlIntegrationPoint","isIntegrationPoint","foreignNS","HIDDEN_INPUT_TYPE","AA_OUTER_LOOP_ITER","AA_INNER_LOOP_ITER","InsertionMode","BASE_LOC","TABLE_STRUCTURE_TAGS","defaultParserOptions","Parser","fragmentContext","scriptHandler","TN","documentMock","rootElement","beforeToken","tid","isTop","currentTagId","isHTML","currentToken","nextTokenizerState","docTypeNode","tmpl","beforeElement","textNodeIdx","endLine","endCol","endOffset","donor","closingToken","ctLoc","endLoc","foreignContent.isIntegrationPoint","listLength","unopenIdx","selectIdx","openElement","characterInForeignContent","tokenInInitialMode","tokenBeforeHtml","tokenBeforeHead","tokenInHead","tokenInHeadNoScript","tokenAfterHead","characterInBody","characterInTable","characterInTableText","tokenInColumnGroup","tokenAfterBody","tokenAfterAfterBody","nullCharacterInForeignContent","appendComment","tokenInTableText","appendCommentToRootHtmlElement","appendCommentToDocument","doctypeInInitialMode","startTagInForeignContent","startTagBeforeHtml","startTagBeforeHead","startTagInHead","startTagInHeadNoScript","startTagAfterHead","startTagInBody","startTagInTable","startTagInCaption","startTagInColumnGroup","startTagInTableBody","startTagInRow","startTagInCell","startTagInSelect","startTagInSelectInTable","startTagInTemplate","startTagAfterBody","startTagInFrameset","startTagAfterFrameset","startTagAfterAfterBody","startTagAfterAfterFrameset","endTagInForeignContent","endTagBeforeHtml","endTagBeforeHead","endTagInHead","endTagInHeadNoScript","endTagAfterHead","endTagInBody","endTagInText","endTagInTable","endTagInCaption","endTagInColumnGroup","endTagInTableBody","endTagInRow","endTagInCell","endTagInSelect","endTagInSelectInTable","endTagInTemplate","endTagAfterBody","endTagInFrameset","endTagAfterFrameset","eofInBody","eofInText","eofInTemplate","stopParsing","unicode.CODE_POINTS","whitespaceCharacterInBody","whitespaceCharacterInTableText","aaObtainFormattingElementEntry","formattingElementEntry","genericEndTagInBody","aaObtainFurthestBlock","furthestBlock","aaInnerLoop","formattingElement","lastElement","nextElement","elementEntry","counterOverflow","aaRecreateElementFromEntry","aaInsertLastNodeInCommonAncestor","commonAncestor","aaReplaceFormattingElement","callAdoptionAgency","htmlLocation","bodyElement","bodyLocation","doctype.getDocumentMode","doctype.isConforming","templateEndTagInHead","errCode","modeInBody","htmlStartTagInBody","bodyStartTagInBody","framesetStartTagInBody","addressStartTagInBody","numberedHeaderStartTagInBody","preStartTagInBody","formStartTagInBody","inTemplate","listItemStartTagInBody","plaintextStartTagInBody","buttonStartTagInBody","aStartTagInBody","activeElementEntry","bStartTagInBody","nobrStartTagInBody","appletStartTagInBody","tableStartTagInBody","areaStartTagInBody","isHiddenInput","inputType","inputStartTagInBody","paramStartTagInBody","hrStartTagInBody","imageStartTagInBody","textareaStartTagInBody","xmpStartTagInBody","iframeStartTagInBody","rawTextStartTagInBody","selectStartTagInBody","optgroupStartTagInBody","rbStartTagInBody","rtStartTagInBody","mathStartTagInBody","foreignContent.adjustTokenMathMLAttrs","foreignContent.adjustTokenXMLAttrs","svgStartTagInBody","foreignContent.adjustTokenSVGAttrs","genericStartTagInBody","bodyEndTagInBody","htmlEndTagInBody","addressEndTagInBody","formEndTagInBody","formElement","pEndTagInBody","liEndTagInBody","ddEndTagInBody","numberedHeaderEndTagInBody","appletEndTagInBody","brEndTagInBody","tokenInTable","captionStartTagInTable","colgroupStartTagInTable","colStartTagInTable","tbodyStartTagInTable","tdStartTagInTable","tableStartTagInTable","inputStartTagInTable","formStartTagInTable","savedFosterParentingState","TABLE_VOID_ELEMENTS","unicode.REPLACEMENT_CHARACTER","popUntilHtmlOrIntegrationPoint","foreignContent.causesExit","currentNs","foreignContent.adjustTokenSVGTagName","gfmTagfilterExpression","knownMdxNames","parseOptions","documentMode","handleRaw","unknown","resetTokenizer","p5","stitch","Token.TokenType","createParse5Location","cloneWithoutChildren","fakeRoot","setPoint","node_","html.getTagID","rehypeRaw","convertElement","tagNameFactory","looksLikeAnElement","ABSOLUTE_URL_REGEX","WINDOWS_PATH_REGEX","isAbsoluteUrl","defaultProtocols","defaultRel","rehypeExternalLinks","protocols","contentRaw","createIfNeeded","relRaw","assertion","findAfter","MAX_HEADING_DEPTH","sectionize","ErrorView","markdownTitle","markdownSubtitle","subtitle","formatPoemText","initialLineNumber","formattedText","lastLineNumber","TextView","setSplitView","intro","markdownText","setMarkdownText","renderIntro","introText","renderPoem","poemText","lineNumber","introError","itemsErrors","commentsError","errorView","roundNumber","decimal","checkIsNumber","handleCallback","easeOut","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","animations","handleCancelAnimationFrame","handleCancelAnimation","contextInstance","handleSetupAnimation","animationTime","lastStep","frameTime","animationProgress","animationType","isValidTargetState","targetState","positionX","positionY","animate","setTransformState","scaleDiff","positionXDiff","positionYDiff","newPositionX","newPositionY","getComponentsSizes","wrapperComponent","contentComponent","wrapperWidth","wrapperHeight","contentWidth","contentHeight","newContentWidth","newContentHeight","newDiffWidth","newDiffHeight","getBounds","diffWidth","centerZoomedOut","scaleWidthFactor","scaleHeightFactor","minPositionX","maxPositionX","minPositionY","maxPositionY","calculateBounds","bounds","boundLimiter","minBound","maxBound","handleCalculateBounds","getMouseBoundedPosition","limitToBounds","paddingValueX","paddingValueY","paddingX","paddingY","handleCalculateZoomPositions","mouseX","scaleDifference","calculatedPositionX","calculatedPositionY","newPositions","checkZoomBounds","zoom","minScale","maxScale","zoomPadding","enablePadding","scalePadding","minScaleWithPadding","isPanningStartAllowed","isInitialized","targetIsShadowDom","isWrapperChild","isAllowed","isExcluded","isExcludedNode","isPanningAllowed","isPanning","setup","handlePanningSetup","handleTouchPanningSetup","touches","oneFingerTouch","handlePanToBounds","xChanged","yChanged","mousePosX","mousePosY","handleNewPosition","getPanningClientPosition","startCoords","transformState","panning","lockAxisX","lockAxisY","getPaddingValue","disablePadding","isVelocityCalculationAllowed","velocityAnimation","disabledVelocity","isVelocityAllowed","getVelocityMoveTime","equalToMove","sensitivity","getVelocityPosition","newPosition","isLocked","minPosition","maxPosition","minTarget","maxTarget","calculatedPosition","getSizeMultiplier","defaultMultiplier","handleCalculateVelocity","lastMousePosition","velocityTime","sizeMultiplier","velocityX","velocityY","speed","handleVelocityPanning","alignmentAnimation","zoomAnimation","sizeX","sizeY","velocityAlignmentTime","alignAnimationTime","moveAnimationTime","finalAnimationTime","maxTargetX","minTargetX","maxTargetY","minTargetY","startState","alignAnimation","alignStep","customStep","currentPositionX","currentPositionY","handlePanningStart","handleAlignToBounds","customAnimationTime","isDisabled","handlePanning","handlePanningEnd","velocityDisabled","wrapperRect","isZoomed","shouldAnimate","handleZoomToPoint","handleAlignToScaleBounds","mousePositionX","mousePositionY","__spreadArray","initialSetup","baseClasses","createSetup","newSetup","validValue","validParameter","dataType","handleCalculateButtonZoom","smooth","targetScale","handleZoomToViewCenter","resetTransformations","onResetTransformation","initialTransformation","newBounds","boundedPositions","newState","wrapperOffset","contentOffset","xOff","yOff","calculateZoomToNode","customZoom","nodeRect","nodeOffset","nodeLeft","nodeTop","nodeWidth","nodeHeight","setTransform","resetTransform","centerView","getCenterPosition","zoomToElement","getControls","getContext","passiveSupported","makePassiveEventOption","exclude","cancelTimeout","getTransformStyles","centerPositionX","centerPositionY","mergeRefs","isWheelAllowed","wheelDisabled","touchPadDisabled","getDeltaY","getDelta","customDelta","getMousePosition","handleCalculateWheelZoom","disable","getTarget","paddingEnabled","handleWheelZoomStop","previousWheelEvent","isPinchStartAllowed","isPinchAllowed","pinchStartDistance","calculateTouchMidPoint","firstPointX","firstPointY","secondPointX","secondPointY","getTouchDistance","calculatePinchZoom","currentDistance","pinchStartScale","touchProportion","wheelStopEventTime","wheelAnimationTime","handleWheelStart","onWheelStart","onZoomStart","handleWheelZoom","onZoom","wheel","smoothStep","zoomStep","isPaddingDisabled","isLimitedToBounds","handleWheelStop","onWheelStop","onZoomStop","hasStoppedZooming","getTouchCenter","totalX","totalY","handlePinchStart","distance","handlePinchZoom","midPoint","panX","panY","finalX","finalY","handlePinchStop","pinchMidpoint","handleDoubleClickStop","handleDoubleClickResetMode","getDoubleClickScale","handleDoubleClick","doubleClickStopEventTimer","isDoubleClickAllowed","ZoomPanPinch","newProps","passive","currentDocument","currentWindow","isCentered","centerOnInit","hasTarget","entries_1","currentWidth","currentHeight","keysPressed","onPanningStart","onPanning","onPanningStop","onPinchingStart","onPinching","onPinchingStop","isDoubleTap","isPanningAction","isPinchAction","onTransformed","ctx_1","TransformWrapper","localRef","styleInject","insertAt","css_248z","TransformComponent","wrapperClass","contentClass","wrapperProps","contentProps","cleanupWindowEvents","useTransformContext","libraryContext","useControls","FacsimileView","splitViewOrientation","currentItem","setCurrentItem","setContainer","setContainerHeight","Controls","transformKey","imageFile","imageTitle","isVerticalSplit","isHorizontalSplit","initialScale","shouldCenterOnInit","baseStyle","useScoreManager","onScoreAnalyzed","onFetchScoreError","setScoreCache","setScore","setShowNVerses","setNormalizeFicta","setShowReconstructions","setShowOriginalClefs","setTransposition","fetchMei","meiUrl","meiContent","xmlDoc","parseError","generateOneVerseMei","updateScore","scoreIndex","newScore","fetchScore","timestamp","scoreDef","encodingProperties","cachedScore","meiString","editorialItems","unloadScore","hasIntro","hasText","CACHE_UPDATING_MARK","getText","contentType","getTitleFromItem","textItem","useTextParts","setTextCache","setTextComments","setTextIntroduction","setTextLyrics","hasSection","getUrlsForScore","lyricsUrls","commentsUrl","introductionUrl","getLyricItemsFromCache","lyricItems","urls","cachedUrls","urlsToUpdate","updatingCache","useConfigValidation","validateConfig","configErrors","getReverseTransposition","ScoreOptionsPanel","allowUserLanguageChange","setShowMusicAnalysis","isSplitView","setIsSplitView","setSplitViewOrientation","setMeasureNumberInterval","onVersesSelected","onReconstructionSelected","onShowEditorialChange","onNormalizeFictaChange","onShowOriginalClefsChange","onTranspositionChange","reverseTransposition","onShowMusicAnalysisChange","onMeasureNumberIntervalChange","numVersesAvailable","numReconstructionsAvailable","originalClefsAvailable","verseOptions","voiceRecontructions","voiceRecontructed","editorialDisabled","fictaSwictchDisabled","showTranspositionOption","showVerseOptions","reconstructionRows","voiceReconstruction","onLanguageSelected","layoutOptions","onLayoutSelected","languageOptions","languageRow","iuLayoutRow","SvgMusic","TabLayout","scoreView","textView","introView","facsimileView","showIntroductionSection","showTextSection","showFacsimileSection","activeTab","setActiveTab","tabsItems","MusicSvg","onTabChange","SplitViewLayout","setSizes","activeSplitView","getSecondaryView","LayoutManager","setActiveSplitView","checkContentAvailable","tabContentNotAvailable","splitViewContentNotAvailable","getAvailableViews","availableViews","shouldShowTabs","hasMultipleTabs","SplitViewSelector","selectorItems","onActiveSplitViewChange","ScoreViewerHeader","showScoreSelector","showOptions","selectorLabel","scoreItems","onScoreChanged","onShowDrawer","scoreSelector","splitViewSelector","useScoreViewerEffects","configLanguage","configScores","configShowScoreSelector","scoreViewContainerRef","onVisualizationOptionsChanged","loadAll","mobileOrientation","hasInitiallyLoaded","ScoreViewer","hasConfigErrors","goToSection","fetchScoreError","setFetchScoreError","introAvailable","setIntroAvailable","textAvailable","setTextAvailable","facsimileItems","setFacsimileItems","openDrawer","setOpenDrawer","fetchTextParts","renderMainContent","onScoreSelectedChanged","showDrawer","onDrawerClose","header","ScoreViewer$1"],"mappings":"k1BAAMA,GAAWC,GAAO,OAAOA,GAAQ,SACjCC,GAAQ,IAAM,CAClB,IAAIC,EACAC,EACJ,MAAMC,EAAU,IAAI,QAAQ,CAACC,EAASC,IAAW,CAC/CJ,EAAMG,EACNF,EAAMG,CACR,CAAC,EACD,OAAAF,EAAQ,QAAUF,EAClBE,EAAQ,OAASD,EACVC,CACT,EACMG,GAAaC,GACbA,GAAU,KAAa,GACpB,GAAKA,EAERC,GAAO,CAACC,EAAGC,EAAGC,IAAM,CACxBF,EAAE,QAAQG,GAAK,CACTF,EAAEE,CAAC,IAAGD,EAAEC,CAAC,EAAIF,EAAEE,CAAC,EACtB,CAAC,CACH,EACMC,GAA4B,OAC5BC,GAAWC,GAAOA,GAAOA,EAAI,QAAQ,KAAK,EAAI,GAAKA,EAAI,QAAQF,GAA2B,GAAG,EAAIE,EACjGC,GAAuBT,GAAU,CAACA,GAAUT,GAASS,CAAM,EAC3DU,GAAgB,CAACV,EAAQW,EAAMC,IAAU,CAC7C,MAAMC,EAAStB,GAASoB,CAAI,EAAWA,EAAK,MAAM,GAAG,EAArBA,EAChC,IAAIG,EAAa,EACjB,KAAOA,EAAaD,EAAM,OAAS,GAAG,CACpC,GAAIJ,GAAqBT,CAAM,EAAG,MAAO,CAAA,EACzC,MAAMQ,EAAMD,GAASM,EAAMC,CAAU,CAAC,EAClC,CAACd,EAAOQ,CAAG,GAAKI,IAAOZ,EAAOQ,CAAG,EAAI,IAAII,GACzC,OAAO,UAAU,eAAe,KAAKZ,EAAQQ,CAAG,EAClDR,EAASA,EAAOQ,CAAG,EAEnBR,EAAS,CAAA,EAEX,EAAEc,CACJ,CACA,OAAIL,GAAqBT,CAAM,EAAU,CAAA,EAClC,CACL,IAAKA,EACL,EAAGO,GAASM,EAAMC,CAAU,CAAC,CACjC,CACA,EACMC,GAAU,CAACf,EAAQW,EAAMK,IAAa,CAC1C,KAAM,CACJ,IAAAxB,EACA,EAAAyB,CACJ,EAAMP,GAAcV,EAAQW,EAAM,MAAM,EACtC,GAAInB,IAAQ,QAAamB,EAAK,SAAW,EAAG,CAC1CnB,EAAIyB,CAAC,EAAID,EACT,MACF,CACA,IAAIE,EAAIP,EAAKA,EAAK,OAAS,CAAC,EACxBQ,EAAIR,EAAK,MAAM,EAAGA,EAAK,OAAS,CAAC,EACjCS,EAAOV,GAAcV,EAAQmB,EAAG,MAAM,EAC1C,KAAOC,EAAK,MAAQ,QAAaD,EAAE,QACjCD,EAAI,GAAGC,EAAEA,EAAE,OAAS,CAAC,CAAC,IAAID,CAAC,GAC3BC,EAAIA,EAAE,MAAM,EAAGA,EAAE,OAAS,CAAC,EAC3BC,EAAOV,GAAcV,EAAQmB,EAAG,MAAM,EAClCC,GAAA,MAAAA,EAAM,KAAO,OAAOA,EAAK,IAAI,GAAGA,EAAK,CAAC,IAAIF,CAAC,EAAE,EAAM,MACrDE,EAAK,IAAM,QAGfA,EAAK,IAAI,GAAGA,EAAK,CAAC,IAAIF,CAAC,EAAE,EAAIF,CAC/B,EACMK,GAAW,CAACrB,EAAQW,EAAMK,EAAUM,IAAW,CACnD,KAAM,CACJ,IAAA9B,EACA,EAAAyB,CACJ,EAAMP,GAAcV,EAAQW,EAAM,MAAM,EACtCnB,EAAIyB,CAAC,EAAIzB,EAAIyB,CAAC,GAAK,CAAA,EACnBzB,EAAIyB,CAAC,EAAE,KAAKD,CAAQ,CACtB,EACMO,GAAU,CAACvB,EAAQW,IAAS,CAChC,KAAM,CACJ,IAAAnB,EACA,EAAAyB,CACJ,EAAMP,GAAcV,EAAQW,CAAI,EAC9B,GAAKnB,GACA,OAAO,UAAU,eAAe,KAAKA,EAAKyB,CAAC,EAChD,OAAOzB,EAAIyB,CAAC,CACd,EACMO,GAAsB,CAACC,EAAMC,EAAalB,IAAQ,CACtD,MAAMmB,EAAQJ,GAAQE,EAAMjB,CAAG,EAC/B,OAAImB,IAAU,OACLA,EAEFJ,GAAQG,EAAalB,CAAG,CACjC,EACMoB,GAAa,CAACC,EAAQC,EAAQC,IAAc,CAChD,UAAWC,KAAQF,EACbE,IAAS,aAAeA,IAAS,gBAC/BA,KAAQH,EACNtC,GAASsC,EAAOG,CAAI,CAAC,GAAKH,EAAOG,CAAI,YAAa,QAAUzC,GAASuC,EAAOE,CAAI,CAAC,GAAKF,EAAOE,CAAI,YAAa,OAC5GD,IAAWF,EAAOG,CAAI,EAAIF,EAAOE,CAAI,GAEzCJ,GAAWC,EAAOG,CAAI,EAAGF,EAAOE,CAAI,EAAGD,CAAS,EAGlDF,EAAOG,CAAI,EAAIF,EAAOE,CAAI,GAIhC,OAAOH,CACT,EACMI,GAAcC,GAAOA,EAAI,QAAQ,sCAAuC,MAAM,EACpF,IAAIC,GAAa,CACf,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,QACL,IAAK,QACP,EACA,MAAMC,GAASX,GACTlC,GAASkC,CAAI,EACRA,EAAK,QAAQ,aAActB,GAAKgC,GAAWhC,CAAC,CAAC,EAE/CsB,EAET,MAAMY,EAAY,CAChB,YAAYC,EAAU,CACpB,KAAK,SAAWA,EAChB,KAAK,UAAY,IAAI,IACrB,KAAK,YAAc,CAAA,CACrB,CACA,UAAUC,EAAS,CACjB,MAAMC,EAAkB,KAAK,UAAU,IAAID,CAAO,EAClD,GAAIC,IAAoB,OACtB,OAAOA,EAET,MAAMC,EAAY,IAAI,OAAOF,CAAO,EACpC,OAAI,KAAK,YAAY,SAAW,KAAK,UACnC,KAAK,UAAU,OAAO,KAAK,YAAY,MAAK,CAAE,EAEhD,KAAK,UAAU,IAAIA,EAASE,CAAS,EACrC,KAAK,YAAY,KAAKF,CAAO,EACtBE,CACT,CACF,CACA,MAAMC,GAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,GAAG,EAChCC,GAAiC,IAAIN,GAAY,EAAE,EACnDO,GAAsB,CAACpC,EAAKqC,EAAaC,IAAiB,CAC9DD,EAAcA,GAAe,GAC7BC,EAAeA,GAAgB,GAC/B,MAAMC,EAAgBL,GAAM,OAAOM,GAAKH,EAAY,QAAQG,CAAC,EAAI,GAAKF,EAAa,QAAQE,CAAC,EAAI,CAAC,EACjG,GAAID,EAAc,SAAW,EAAG,MAAO,GACvC,MAAME,EAAIN,GAA+B,UAAU,IAAII,EAAc,IAAIC,GAAKA,IAAM,IAAM,MAAQA,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,EACjH,IAAIE,EAAU,CAACD,EAAE,KAAKzC,CAAG,EACzB,GAAI,CAAC0C,EAAS,CACZ,MAAMC,EAAK3C,EAAI,QAAQsC,CAAY,EAC/BK,EAAK,GAAK,CAACF,EAAE,KAAKzC,EAAI,UAAU,EAAG2C,CAAE,CAAC,IACxCD,EAAU,GAEd,CACA,OAAOA,CACT,EACME,GAAW,CAAC5D,EAAKmB,EAAMmC,EAAe,MAAQ,CAClD,GAAI,CAACtD,EAAK,OACV,GAAIA,EAAImB,CAAI,EACV,OAAK,OAAO,UAAU,eAAe,KAAKnB,EAAKmB,CAAI,EAC5CnB,EAAImB,CAAI,EADuC,OAGxD,MAAM0C,EAAS1C,EAAK,MAAMmC,CAAY,EACtC,IAAIQ,EAAU9D,EACd,QAAS+D,EAAI,EAAGA,EAAIF,EAAO,QAAS,CAClC,GAAI,CAACC,GAAW,OAAOA,GAAY,SACjC,OAEF,IAAIE,EACAC,EAAW,GACf,QAASC,EAAIH,EAAGG,EAAIL,EAAO,OAAQ,EAAEK,EAMnC,GALIA,IAAMH,IACRE,GAAYX,GAEdW,GAAYJ,EAAOK,CAAC,EACpBF,EAAOF,EAAQG,CAAQ,EACnBD,IAAS,OAAW,CACtB,GAAI,CAAC,SAAU,SAAU,SAAS,EAAE,QAAQ,OAAOA,CAAI,EAAI,IAAME,EAAIL,EAAO,OAAS,EACnF,SAEFE,GAAKG,EAAIH,EAAI,EACb,KACF,CAEFD,EAAUE,CACZ,CACA,OAAOF,CACT,EACMK,GAAiBC,GAAQA,GAAA,YAAAA,EAAM,QAAQ,IAAK,KAE5CC,GAAgB,CACpB,KAAM,SACN,IAAIC,EAAM,CACR,KAAK,OAAO,MAAOA,CAAI,CACzB,EACA,KAAKA,EAAM,CACT,KAAK,OAAO,OAAQA,CAAI,CAC1B,EACA,MAAMA,EAAM,CACV,KAAK,OAAO,QAASA,CAAI,CAC3B,EACA,OAAOC,EAAMD,EAAM,UACjBE,GAAAC,EAAA,6BAAUF,KAAV,YAAAE,EAAiB,QAAjB,MAAAD,EAAA,KAAAC,EAAyB,QAASH,EACpC,CACF,EACA,MAAMI,EAAO,CACX,YAAYC,EAAgBC,EAAU,GAAI,CACxC,KAAK,KAAKD,EAAgBC,CAAO,CACnC,CACA,KAAKD,EAAgBC,EAAU,GAAI,CACjC,KAAK,OAASA,EAAQ,QAAU,WAChC,KAAK,OAASD,GAAkBN,GAChC,KAAK,QAAUO,EACf,KAAK,MAAQA,EAAQ,KACvB,CACA,OAAON,EAAM,CACX,OAAO,KAAK,QAAQA,EAAM,MAAO,GAAI,EAAI,CAC3C,CACA,QAAQA,EAAM,CACZ,OAAO,KAAK,QAAQA,EAAM,OAAQ,GAAI,EAAI,CAC5C,CACA,SAASA,EAAM,CACb,OAAO,KAAK,QAAQA,EAAM,QAAS,EAAE,CACvC,CACA,aAAaA,EAAM,CACjB,OAAO,KAAK,QAAQA,EAAM,OAAQ,uBAAwB,EAAI,CAChE,CACA,QAAQA,EAAMO,EAAKC,EAAQC,EAAW,CACpC,OAAIA,GAAa,CAAC,KAAK,MAAc,MACjChF,GAASuE,EAAK,CAAC,CAAC,IAAGA,EAAK,CAAC,EAAI,GAAGQ,CAAM,GAAG,KAAK,MAAM,IAAIR,EAAK,CAAC,CAAC,IAC5D,KAAK,OAAOO,CAAG,EAAEP,CAAI,EAC9B,CACA,OAAOU,EAAY,CACjB,OAAO,IAAIN,GAAO,KAAK,OAAQ,CAE3B,OAAQ,GAAG,KAAK,MAAM,IAAIM,CAAU,IAEtC,GAAG,KAAK,OACd,CAAK,CACH,CACA,MAAMJ,EAAS,CACb,OAAAA,EAAUA,GAAW,KAAK,QAC1BA,EAAQ,OAASA,EAAQ,QAAU,KAAK,OACjC,IAAIF,GAAO,KAAK,OAAQE,CAAO,CACxC,CACF,CACA,IAAIK,GAAa,IAAIP,GAErB,MAAMQ,EAAa,CACjB,aAAc,CACZ,KAAK,UAAY,CAAA,CACnB,CACA,GAAGC,EAAQC,EAAU,CACnB,OAAAD,EAAO,MAAM,GAAG,EAAE,QAAQE,GAAS,CAC5B,KAAK,UAAUA,CAAK,IAAG,KAAK,UAAUA,CAAK,EAAI,IAAI,KACxD,MAAMC,EAAe,KAAK,UAAUD,CAAK,EAAE,IAAID,CAAQ,GAAK,EAC5D,KAAK,UAAUC,CAAK,EAAE,IAAID,EAAUE,EAAe,CAAC,CACtD,CAAC,EACM,IACT,CACA,IAAID,EAAOD,EAAU,CACnB,GAAK,KAAK,UAAUC,CAAK,EACzB,IAAI,CAACD,EAAU,CACb,OAAO,KAAK,UAAUC,CAAK,EAC3B,MACF,CACA,KAAK,UAAUA,CAAK,EAAE,OAAOD,CAAQ,EACvC,CACA,KAAKC,KAAUf,EAAM,CACf,KAAK,UAAUe,CAAK,GACP,MAAM,KAAK,KAAK,UAAUA,CAAK,EAAE,SAAS,EAClD,QAAQ,CAAC,CAACE,EAAUC,CAAa,IAAM,CAC5C,QAASzB,EAAI,EAAGA,EAAIyB,EAAezB,IACjCwB,EAAS,GAAGjB,CAAI,CAEpB,CAAC,EAEC,KAAK,UAAU,GAAG,GACL,MAAM,KAAK,KAAK,UAAU,GAAG,EAAE,SAAS,EAChD,QAAQ,CAAC,CAACiB,EAAUC,CAAa,IAAM,CAC5C,QAASzB,EAAI,EAAGA,EAAIyB,EAAezB,IACjCwB,EAAS,MAAMA,EAAU,CAACF,EAAO,GAAGf,CAAI,CAAC,CAE7C,CAAC,CAEL,CACF,CAEA,MAAMmB,WAAsBP,EAAa,CACvC,YAAYjD,EAAM2C,EAAU,CAC1B,GAAI,CAAC,aAAa,EAClB,UAAW,aACf,EAAK,CACD,MAAK,EACL,KAAK,KAAO3C,GAAQ,CAAA,EACpB,KAAK,QAAU2C,EACX,KAAK,QAAQ,eAAiB,SAChC,KAAK,QAAQ,aAAe,KAE1B,KAAK,QAAQ,sBAAwB,SACvC,KAAK,QAAQ,oBAAsB,GAEvC,CACA,cAAcc,EAAI,CACZ,KAAK,QAAQ,GAAG,QAAQA,CAAE,EAAI,GAChC,KAAK,QAAQ,GAAG,KAAKA,CAAE,CAE3B,CACA,iBAAiBA,EAAI,CACnB,MAAMC,EAAQ,KAAK,QAAQ,GAAG,QAAQD,CAAE,EACpCC,EAAQ,IACV,KAAK,QAAQ,GAAG,OAAOA,EAAO,CAAC,CAEnC,CACA,YAAYC,EAAKF,EAAI1E,EAAK4D,EAAU,CAAA,EAAI,SACtC,MAAMtB,EAAesB,EAAQ,eAAiB,OAAYA,EAAQ,aAAe,KAAK,QAAQ,aACxFiB,EAAsBjB,EAAQ,sBAAwB,OAAYA,EAAQ,oBAAsB,KAAK,QAAQ,oBACnH,IAAIzD,EACAyE,EAAI,QAAQ,GAAG,EAAI,GACrBzE,EAAOyE,EAAI,MAAM,GAAG,GAEpBzE,EAAO,CAACyE,EAAKF,CAAE,EACX1E,IACE,MAAM,QAAQA,CAAG,EACnBG,EAAK,KAAK,GAAGH,CAAG,EACPjB,GAASiB,CAAG,GAAKsC,EAC1BnC,EAAK,KAAK,GAAGH,EAAI,MAAMsC,CAAY,CAAC,EAEpCnC,EAAK,KAAKH,CAAG,IAInB,MAAM8E,EAAS/D,GAAQ,KAAK,KAAMZ,CAAI,EAMtC,MALI,CAAC2E,GAAU,CAACJ,GAAM,CAAC1E,GAAO4E,EAAI,QAAQ,GAAG,EAAI,KAC/CA,EAAMzE,EAAK,CAAC,EACZuE,EAAKvE,EAAK,CAAC,EACXH,EAAMG,EAAK,MAAM,CAAC,EAAE,KAAK,GAAG,GAE1B2E,GAAU,CAACD,GAAuB,CAAC9F,GAASiB,CAAG,EAAU8E,EACtDlC,IAASY,GAAAC,EAAA,KAAK,OAAL,YAAAA,EAAYmB,KAAZ,YAAApB,EAAmBkB,GAAK1E,EAAKsC,CAAY,CAC3D,CACA,YAAYsC,EAAKF,EAAI1E,EAAKmB,EAAOyC,EAAU,CACzC,OAAQ,EACZ,EAAK,CACD,MAAMtB,EAAesB,EAAQ,eAAiB,OAAYA,EAAQ,aAAe,KAAK,QAAQ,aAC9F,IAAIzD,EAAO,CAACyE,EAAKF,CAAE,EACf1E,IAAKG,EAAOA,EAAK,OAAOmC,EAAetC,EAAI,MAAMsC,CAAY,EAAItC,CAAG,GACpE4E,EAAI,QAAQ,GAAG,EAAI,KACrBzE,EAAOyE,EAAI,MAAM,GAAG,EACpBzD,EAAQuD,EACRA,EAAKvE,EAAK,CAAC,GAEb,KAAK,cAAcuE,CAAE,EACrBnE,GAAQ,KAAK,KAAMJ,EAAMgB,CAAK,EACzByC,EAAQ,QAAQ,KAAK,KAAK,QAASgB,EAAKF,EAAI1E,EAAKmB,CAAK,CAC7D,CACA,aAAayD,EAAKF,EAAIK,EAAWnB,EAAU,CACzC,OAAQ,EACZ,EAAK,CACD,UAAW/D,KAAKkF,GACVhG,GAASgG,EAAUlF,CAAC,CAAC,GAAK,MAAM,QAAQkF,EAAUlF,CAAC,CAAC,IAAG,KAAK,YAAY+E,EAAKF,EAAI7E,EAAGkF,EAAUlF,CAAC,EAAG,CACpG,OAAQ,EAChB,CAAO,EAEE+D,EAAQ,QAAQ,KAAK,KAAK,QAASgB,EAAKF,EAAIK,CAAS,CAC5D,CACA,kBAAkBH,EAAKF,EAAIK,EAAWC,EAAMzD,EAAWqC,EAAU,CAC/D,OAAQ,GACR,SAAU,EACd,EAAK,CACD,IAAIzD,EAAO,CAACyE,EAAKF,CAAE,EACfE,EAAI,QAAQ,GAAG,EAAI,KACrBzE,EAAOyE,EAAI,MAAM,GAAG,EACpBI,EAAOD,EACPA,EAAYL,EACZA,EAAKvE,EAAK,CAAC,GAEb,KAAK,cAAcuE,CAAE,EACrB,IAAIO,EAAOlE,GAAQ,KAAK,KAAMZ,CAAI,GAAK,CAAA,EAClCyD,EAAQ,WAAUmB,EAAY,KAAK,MAAM,KAAK,UAAUA,CAAS,CAAC,GACnEC,EACF5D,GAAW6D,EAAMF,EAAWxD,CAAS,EAErC0D,EAAO,CACL,GAAGA,EACH,GAAGF,CACX,EAEIxE,GAAQ,KAAK,KAAMJ,EAAM8E,CAAI,EACxBrB,EAAQ,QAAQ,KAAK,KAAK,QAASgB,EAAKF,EAAIK,CAAS,CAC5D,CACA,qBAAqBH,EAAKF,EAAI,CACxB,KAAK,kBAAkBE,EAAKF,CAAE,GAChC,OAAO,KAAK,KAAKE,CAAG,EAAEF,CAAE,EAE1B,KAAK,iBAAiBA,CAAE,EACxB,KAAK,KAAK,UAAWE,EAAKF,CAAE,CAC9B,CACA,kBAAkBE,EAAKF,EAAI,CACzB,OAAO,KAAK,YAAYE,EAAKF,CAAE,IAAM,MACvC,CACA,kBAAkBE,EAAKF,EAAI,CACzB,OAAKA,IAAIA,EAAK,KAAK,QAAQ,WACpB,KAAK,YAAYE,EAAKF,CAAE,CACjC,CACA,kBAAkBE,EAAK,CACrB,OAAO,KAAK,KAAKA,CAAG,CACtB,CACA,4BAA4BA,EAAK,CAC/B,MAAM3D,EAAO,KAAK,kBAAkB2D,CAAG,EAEvC,MAAO,CAAC,EADE3D,GAAQ,OAAO,KAAKA,CAAI,GAAK,CAAA,GAC5B,KAAKiE,GAAKjE,EAAKiE,CAAC,GAAK,OAAO,KAAKjE,EAAKiE,CAAC,CAAC,EAAE,OAAS,CAAC,CACjE,CACA,QAAS,CACP,OAAO,KAAK,IACd,CACF,CAEA,IAAIC,GAAgB,CAClB,WAAY,CAAA,EACZ,iBAAiBC,EAAQ,CACvB,KAAK,WAAWA,EAAO,IAAI,EAAIA,CACjC,EACA,OAAOC,EAAYlE,EAAOnB,EAAK4D,EAAS0B,EAAY,CAClD,OAAAD,EAAW,QAAQE,GAAa,OAC9BpE,IAAQsC,EAAA,KAAK,WAAW8B,CAAS,IAAzB,YAAA9B,EAA4B,QAAQtC,EAAOnB,EAAK4D,EAAS0B,KAAenE,CAClF,CAAC,EACMA,CACT,CACF,EAEA,MAAMqE,GAAmB,CAAA,EACnBC,GAAuBvG,GAAO,CAACH,GAASG,CAAG,GAAK,OAAOA,GAAQ,WAAa,OAAOA,GAAQ,SACjG,MAAMwG,WAAmBxB,EAAa,CACpC,YAAYyB,EAAU/B,EAAU,GAAI,CAClC,MAAK,EACLnE,GAAK,CAAC,gBAAiB,gBAAiB,iBAAkB,eAAgB,mBAAoB,aAAc,OAAO,EAAGkG,EAAU,IAAI,EACpI,KAAK,QAAU/B,EACX,KAAK,QAAQ,eAAiB,SAChC,KAAK,QAAQ,aAAe,KAE9B,KAAK,OAASK,GAAW,OAAO,YAAY,CAC9C,CACA,eAAeW,EAAK,CACdA,IAAK,KAAK,SAAWA,EAC3B,CACA,OAAO5E,EAAK4F,EAAI,CACd,cAAe,CAAA,CACnB,EAAK,CACD,MAAMC,EAAM,CACV,GAAGD,CACT,EACI,GAAI5F,GAAO,KAAM,MAAO,GACxB,MAAM8F,EAAW,KAAK,QAAQ9F,EAAK6F,CAAG,EACtC,OAAOC,GAAA,YAAAA,EAAU,OAAQ,MAC3B,CACA,eAAe9F,EAAK6F,EAAK,CACvB,IAAIxD,EAAcwD,EAAI,cAAgB,OAAYA,EAAI,YAAc,KAAK,QAAQ,YAC7ExD,IAAgB,SAAWA,EAAc,KAC7C,MAAMC,EAAeuD,EAAI,eAAiB,OAAYA,EAAI,aAAe,KAAK,QAAQ,aACtF,IAAIE,EAAaF,EAAI,IAAM,KAAK,QAAQ,WAAa,CAAA,EACrD,MAAMG,EAAuB3D,GAAerC,EAAI,QAAQqC,CAAW,EAAI,GACjE4D,EAAuB,CAAC,KAAK,QAAQ,yBAA2B,CAACJ,EAAI,cAAgB,CAAC,KAAK,QAAQ,wBAA0B,CAACA,EAAI,aAAe,CAACzD,GAAoBpC,EAAKqC,EAAaC,CAAY,EAC1M,GAAI0D,GAAwB,CAACC,EAAsB,CACjD,MAAMpG,EAAIG,EAAI,MAAM,KAAK,aAAa,aAAa,EACnD,GAAIH,GAAKA,EAAE,OAAS,EAClB,MAAO,CACL,IAAAG,EACA,WAAYjB,GAASgH,CAAU,EAAI,CAACA,CAAU,EAAIA,CAC5D,EAEM,MAAMG,EAAQlG,EAAI,MAAMqC,CAAW,GAC/BA,IAAgBC,GAAgBD,IAAgBC,GAAgB,KAAK,QAAQ,GAAG,QAAQ4D,EAAM,CAAC,CAAC,EAAI,MAAIH,EAAaG,EAAM,MAAK,GACpIlG,EAAMkG,EAAM,KAAK5D,CAAY,CAC/B,CACA,MAAO,CACL,IAAAtC,EACA,WAAYjB,GAASgH,CAAU,EAAI,CAACA,CAAU,EAAIA,CACxD,CACE,CACA,UAAUI,EAAMP,EAAGQ,EAAS,CAC1B,IAAIP,EAAM,OAAOD,GAAM,SAAW,CAChC,GAAGA,CACT,EAAQA,EAQJ,GAPI,OAAOC,GAAQ,UAAY,KAAK,QAAQ,mCAC1CA,EAAM,KAAK,QAAQ,iCAAiC,SAAS,GAE3D,OAAO,SAAY,WAAUA,EAAM,CACrC,GAAGA,CACT,GACSA,IAAKA,EAAM,CAAA,GACZM,GAAQ,KAAM,MAAO,GACpB,MAAM,QAAQA,CAAI,IAAGA,EAAO,CAAC,OAAOA,CAAI,CAAC,GAC9C,MAAME,EAAgBR,EAAI,gBAAkB,OAAYA,EAAI,cAAgB,KAAK,QAAQ,cACnFvD,EAAeuD,EAAI,eAAiB,OAAYA,EAAI,aAAe,KAAK,QAAQ,aAChF,CACJ,IAAA7F,EACA,WAAA+F,CACN,EAAQ,KAAK,eAAeI,EAAKA,EAAK,OAAS,CAAC,EAAGN,CAAG,EAC5CS,EAAYP,EAAWA,EAAW,OAAS,CAAC,EAClD,IAAI1D,EAAcwD,EAAI,cAAgB,OAAYA,EAAI,YAAc,KAAK,QAAQ,YAC7ExD,IAAgB,SAAWA,EAAc,KAC7C,MAAMuC,EAAMiB,EAAI,KAAO,KAAK,SACtBU,EAA0BV,EAAI,yBAA2B,KAAK,QAAQ,wBAC5E,IAAIjB,GAAA,YAAAA,EAAK,iBAAkB,SACzB,OAAI2B,EACEF,EACK,CACL,IAAK,GAAGC,CAAS,GAAGjE,CAAW,GAAGrC,CAAG,GACrC,QAASA,EACT,aAAcA,EACd,QAAS4E,EACT,OAAQ0B,EACR,WAAY,KAAK,qBAAqBT,CAAG,CACrD,EAEe,GAAGS,CAAS,GAAGjE,CAAW,GAAGrC,CAAG,GAErCqG,EACK,CACL,IAAKrG,EACL,QAASA,EACT,aAAcA,EACd,QAAS4E,EACT,OAAQ0B,EACR,WAAY,KAAK,qBAAqBT,CAAG,CACnD,EAEa7F,EAET,MAAM8F,EAAW,KAAK,QAAQK,EAAMN,CAAG,EACvC,IAAI3G,EAAM4G,GAAA,YAAAA,EAAU,IACpB,MAAMU,GAAaV,GAAA,YAAAA,EAAU,UAAW9F,EAClCyG,GAAkBX,GAAA,YAAAA,EAAU,eAAgB9F,EAC5C0G,EAAW,CAAC,kBAAmB,oBAAqB,iBAAiB,EACrEC,EAAad,EAAI,aAAe,OAAYA,EAAI,WAAa,KAAK,QAAQ,WAC1Ee,EAA6B,CAAC,KAAK,YAAc,KAAK,WAAW,eACjEC,EAAsBhB,EAAI,QAAU,QAAa,CAAC9G,GAAS8G,EAAI,KAAK,EACpEiB,EAAkBpB,GAAW,gBAAgBG,CAAG,EAChDkB,EAAqBF,EAAsB,KAAK,eAAe,UAAUjC,EAAKiB,EAAI,MAAOA,CAAG,EAAI,GAChGmB,EAAoCnB,EAAI,SAAWgB,EAAsB,KAAK,eAAe,UAAUjC,EAAKiB,EAAI,MAAO,CAC3H,QAAS,EACf,CAAK,EAAI,GACCoB,EAAwBJ,GAAuB,CAAChB,EAAI,SAAWA,EAAI,QAAU,EAC7EqB,EAAeD,GAAyBpB,EAAI,eAAe,KAAK,QAAQ,eAAe,MAAM,GAAKA,EAAI,eAAekB,CAAkB,EAAE,GAAKlB,EAAI,eAAemB,CAAiC,EAAE,GAAKnB,EAAI,aACnN,IAAIsB,EAAgBjI,EAChB0H,GAA8B,CAAC1H,GAAO4H,IACxCK,EAAgBD,GAElB,MAAME,EAAiB3B,GAAqB0B,CAAa,EACnDE,EAAU,OAAO,UAAU,SAAS,MAAMF,CAAa,EAC7D,GAAIP,GAA8BO,GAAiBC,GAAkBV,EAAS,QAAQW,CAAO,EAAI,GAAK,EAAEtI,GAAS4H,CAAU,GAAK,MAAM,QAAQQ,CAAa,GAAI,CAC7J,GAAI,CAACtB,EAAI,eAAiB,CAAC,KAAK,QAAQ,cAAe,CAChD,KAAK,QAAQ,uBAChB,KAAK,OAAO,KAAK,iEAAiE,EAEpF,MAAMpD,EAAI,KAAK,QAAQ,sBAAwB,KAAK,QAAQ,sBAAsB+D,EAAYW,EAAe,CAC3G,GAAGtB,EACH,GAAIE,CACd,CAAS,EAAI,QAAQ/F,CAAG,KAAK,KAAK,QAAQ,2CAClC,OAAIqG,GACFP,EAAS,IAAMrD,EACfqD,EAAS,WAAa,KAAK,qBAAqBD,CAAG,EAC5CC,GAEFrD,CACT,CACA,GAAIH,EAAc,CAChB,MAAMgF,EAAiB,MAAM,QAAQH,CAAa,EAC5C1H,EAAO6H,EAAiB,CAAA,EAAK,CAAA,EAC7BC,EAAcD,EAAiBb,EAAkBD,EACvD,UAAW3G,KAAKsH,EACd,GAAI,OAAO,UAAU,eAAe,KAAKA,EAAetH,CAAC,EAAG,CAC1D,MAAM2H,EAAU,GAAGD,CAAW,GAAGjF,CAAY,GAAGzC,CAAC,GAC7CiH,GAAmB,CAAC5H,EACtBO,EAAKI,CAAC,EAAI,KAAK,UAAU2H,EAAS,CAChC,GAAG3B,EACH,aAAcJ,GAAqByB,CAAY,EAAIA,EAAarH,CAAC,EAAI,OAEnE,WAAY,GACZ,GAAIkG,CAEtB,CAAe,EAEDtG,EAAKI,CAAC,EAAI,KAAK,UAAU2H,EAAS,CAChC,GAAG3B,EAED,WAAY,GACZ,GAAIE,CAEtB,CAAe,EAECtG,EAAKI,CAAC,IAAM2H,IAAS/H,EAAKI,CAAC,EAAIsH,EAActH,CAAC,EACpD,CAEFX,EAAMO,CACR,CACF,SAAWmH,GAA8B7H,GAAS4H,CAAU,GAAK,MAAM,QAAQzH,CAAG,EAChFA,EAAMA,EAAI,KAAKyH,CAAU,EACrBzH,IAAKA,EAAM,KAAK,kBAAkBA,EAAKiH,EAAMN,EAAKO,CAAO,OACxD,CACL,IAAIqB,EAAc,GACdC,EAAU,GACV,CAAC,KAAK,cAAcxI,CAAG,GAAK4H,IAC9BW,EAAc,GACdvI,EAAMgI,GAEH,KAAK,cAAchI,CAAG,IACzBwI,EAAU,GACVxI,EAAMc,GAGR,MAAM2H,GADiC9B,EAAI,gCAAkC,KAAK,QAAQ,iCAClC6B,EAAU,OAAYxI,EACxE0I,EAAgBd,GAAmBI,IAAiBhI,GAAO,KAAK,QAAQ,cAC9E,GAAIwI,GAAWD,GAAeG,EAAe,CAE3C,GADA,KAAK,OAAO,IAAIA,EAAgB,YAAc,aAAchD,EAAK0B,EAAWtG,EAAK4H,EAAgBV,EAAehI,CAAG,EAC/GoD,EAAc,CAChB,MAAMuF,EAAK,KAAK,QAAQ7H,EAAK,CAC3B,GAAG6F,EACH,aAAc,EAC1B,CAAW,EACGgC,GAAMA,EAAG,KAAK,KAAK,OAAO,KAAK,iLAAiL,CACtN,CACA,IAAIC,EAAO,CAAA,EACX,MAAMC,EAAe,KAAK,cAAc,iBAAiB,KAAK,QAAQ,YAAalC,EAAI,KAAO,KAAK,QAAQ,EAC3G,GAAI,KAAK,QAAQ,gBAAkB,YAAckC,GAAgBA,EAAa,CAAC,EAC7E,QAAShF,EAAI,EAAGA,EAAIgF,EAAa,OAAQhF,IACvC+E,EAAK,KAAKC,EAAahF,CAAC,CAAC,OAElB,KAAK,QAAQ,gBAAkB,MACxC+E,EAAO,KAAK,cAAc,mBAAmBjC,EAAI,KAAO,KAAK,QAAQ,EAErEiC,EAAK,KAAKjC,EAAI,KAAO,KAAK,QAAQ,EAEpC,MAAMmC,EAAO,CAACC,EAAGxH,EAAGyH,IAAyB,OAC3C,MAAMC,EAAoBrB,GAAmBoB,IAAyBhJ,EAAMgJ,EAAuBP,EAC/F,KAAK,QAAQ,kBACf,KAAK,QAAQ,kBAAkBM,EAAG3B,EAAW7F,EAAG0H,EAAmBP,EAAe/B,CAAG,GAC5EpC,EAAA,KAAK,mBAAL,MAAAA,EAAuB,aAChC,KAAK,iBAAiB,YAAYwE,EAAG3B,EAAW7F,EAAG0H,EAAmBP,EAAe/B,CAAG,EAE1F,KAAK,KAAK,aAAcoC,EAAG3B,EAAW7F,EAAGvB,CAAG,CAC9C,EACI,KAAK,QAAQ,cACX,KAAK,QAAQ,oBAAsB2H,EACrCiB,EAAK,QAAQM,GAAY,CACvB,MAAMC,EAAW,KAAK,eAAe,YAAYD,EAAUvC,CAAG,EAC1DoB,GAAyBpB,EAAI,eAAe,KAAK,QAAQ,eAAe,MAAM,GAAKwC,EAAS,QAAQ,GAAG,KAAK,QAAQ,eAAe,MAAM,EAAI,GAC/IA,EAAS,KAAK,GAAG,KAAK,QAAQ,eAAe,MAAM,EAErDA,EAAS,QAAQC,GAAU,CACzBN,EAAK,CAACI,CAAQ,EAAGpI,EAAMsI,EAAQzC,EAAI,eAAeyC,CAAM,EAAE,GAAKpB,CAAY,CAC7E,CAAC,CACH,CAAC,EAEDc,EAAKF,EAAM9H,EAAKkH,CAAY,EAGlC,CACAhI,EAAM,KAAK,kBAAkBA,EAAKiH,EAAMN,EAAKC,EAAUM,CAAO,EAC1DsB,GAAWxI,IAAQc,GAAO,KAAK,QAAQ,8BACzCd,EAAM,GAAGoH,CAAS,GAAGjE,CAAW,GAAGrC,CAAG,KAEnC0H,GAAWD,IAAgB,KAAK,QAAQ,yBAC3CvI,EAAM,KAAK,QAAQ,uBAAuB,KAAK,QAAQ,4BAA8B,GAAGoH,CAAS,GAAGjE,CAAW,GAAGrC,CAAG,GAAKA,EAAKyH,EAAcvI,EAAM,OAAW2G,CAAG,EAErK,CACA,OAAIQ,GACFP,EAAS,IAAM5G,EACf4G,EAAS,WAAa,KAAK,qBAAqBD,CAAG,EAC5CC,GAEF5G,CACT,CACA,kBAAkBA,EAAKc,EAAK6F,EAAKC,EAAUM,EAAS,SAClD,IAAI3C,EAAA,KAAK,aAAL,MAAAA,EAAiB,MACnBvE,EAAM,KAAK,WAAW,MAAMA,EAAK,CAC/B,GAAG,KAAK,QAAQ,cAAc,iBAC9B,GAAG2G,CACX,EAASA,EAAI,KAAO,KAAK,UAAYC,EAAS,QAASA,EAAS,OAAQA,EAAS,QAAS,CAClF,SAAAA,CACR,CAAO,UACQ,CAACD,EAAI,kBAAmB,CAC7BA,EAAI,eAAe,KAAK,aAAa,KAAK,CAC5C,GAAGA,EAED,cAAe,CACb,GAAG,KAAK,QAAQ,cAChB,GAAGA,EAAI,aACnB,CAEA,CAAO,EACD,MAAM0C,EAAkBxJ,GAASG,CAAG,MAAMsE,EAAAqC,GAAA,YAAAA,EAAK,gBAAL,YAAArC,EAAoB,mBAAoB,OAAYqC,EAAI,cAAc,gBAAkB,KAAK,QAAQ,cAAc,iBAC7J,IAAI2C,EACJ,GAAID,EAAiB,CACnB,MAAME,EAAKvJ,EAAI,MAAM,KAAK,aAAa,aAAa,EACpDsJ,EAAUC,GAAMA,EAAG,MACrB,CACA,IAAIxH,EAAO4E,EAAI,SAAW,CAAC9G,GAAS8G,EAAI,OAAO,EAAIA,EAAI,QAAUA,EAMjE,GALI,KAAK,QAAQ,cAAc,mBAAkB5E,EAAO,CACtD,GAAG,KAAK,QAAQ,cAAc,iBAC9B,GAAGA,CACX,GACM/B,EAAM,KAAK,aAAa,YAAYA,EAAK+B,EAAM4E,EAAI,KAAO,KAAK,UAAYC,EAAS,QAASD,CAAG,EAC5F0C,EAAiB,CACnB,MAAMG,EAAKxJ,EAAI,MAAM,KAAK,aAAa,aAAa,EAC9CyJ,EAAUD,GAAMA,EAAG,OACrBF,EAAUG,IAAS9C,EAAI,KAAO,GACpC,CACI,CAACA,EAAI,KAAOC,GAAYA,EAAS,MAAKD,EAAI,IAAM,KAAK,UAAYC,EAAS,SAC1ED,EAAI,OAAS,KAAO3G,EAAM,KAAK,aAAa,KAAKA,EAAK,IAAIoE,KACxD8C,GAAA,YAAAA,EAAU,MAAO9C,EAAK,CAAC,GAAK,CAACuC,EAAI,SACnC,KAAK,OAAO,KAAK,6CAA6CvC,EAAK,CAAC,CAAC,YAAYtD,EAAI,CAAC,CAAC,EAAE,EAClF,MAEF,KAAK,UAAU,GAAGsD,EAAMtD,CAAG,EACjC6F,CAAG,GACFA,EAAI,eAAe,KAAK,aAAa,MAAK,CAChD,CACA,MAAM+C,EAAc/C,EAAI,aAAe,KAAK,QAAQ,YAC9CgD,EAAqB9J,GAAS6J,CAAW,EAAI,CAACA,CAAW,EAAIA,EACnE,OAAI1J,GAAO,OAAQ2J,GAAA,MAAAA,EAAoB,SAAUhD,EAAI,qBAAuB,KAC1E3G,EAAMiG,GAAc,OAAO0D,EAAoB3J,EAAKc,EAAK,KAAK,SAAW,KAAK,QAAQ,wBAA0B,CAC9G,aAAc,CACZ,GAAG8F,EACH,WAAY,KAAK,qBAAqBD,CAAG,CACnD,EACQ,GAAGA,CACX,EAAUA,EAAK,IAAI,GAER3G,CACT,CACA,QAAQiH,EAAMN,EAAM,GAAI,CACtB,IAAIiD,EACApB,EACAqB,EACAC,EACAC,EACJ,OAAIlK,GAASoH,CAAI,IAAGA,EAAO,CAACA,CAAI,GAChCA,EAAK,QAAQ1F,GAAK,CAChB,GAAI,KAAK,cAAcqI,CAAK,EAAG,OAC/B,MAAMI,EAAY,KAAK,eAAezI,EAAGoF,CAAG,EACtC7F,EAAMkJ,EAAU,IACtBxB,EAAU1H,EACV,IAAI+F,EAAamD,EAAU,WACvB,KAAK,QAAQ,aAAYnD,EAAaA,EAAW,OAAO,KAAK,QAAQ,UAAU,GACnF,MAAMc,EAAsBhB,EAAI,QAAU,QAAa,CAAC9G,GAAS8G,EAAI,KAAK,EACpEoB,EAAwBJ,GAAuB,CAAChB,EAAI,SAAWA,EAAI,QAAU,EAC7EsD,EAAuBtD,EAAI,UAAY,SAAc9G,GAAS8G,EAAI,OAAO,GAAK,OAAOA,EAAI,SAAY,WAAaA,EAAI,UAAY,GAClIuD,EAAQvD,EAAI,KAAOA,EAAI,KAAO,KAAK,cAAc,mBAAmBA,EAAI,KAAO,KAAK,SAAUA,EAAI,WAAW,EACnHE,EAAW,QAAQrB,GAAM,SACnB,KAAK,cAAcoE,CAAK,IAC5BG,EAASvE,EACL,CAACc,GAAiB,GAAG4D,EAAM,CAAC,CAAC,IAAI1E,CAAE,EAAE,KAAKjB,EAAA,KAAK,QAAL,MAAAA,EAAY,qBAAsB,GAACD,EAAA,KAAK,QAAL,MAAAA,EAAY,mBAAmByF,MAC9GzD,GAAiB,GAAG4D,EAAM,CAAC,CAAC,IAAI1E,CAAE,EAAE,EAAI,GACxC,KAAK,OAAO,KAAK,QAAQgD,CAAO,oBAAoB0B,EAAM,KAAK,IAAI,CAAC,sCAAsCH,CAAM,uBAAwB,0NAA0N,GAEpWG,EAAM,QAAQhG,GAAQ,OACpB,GAAI,KAAK,cAAc0F,CAAK,EAAG,OAC/BE,EAAU5F,EACV,MAAMiG,EAAY,CAACrJ,CAAG,EACtB,IAAIyD,EAAA,KAAK,aAAL,MAAAA,EAAiB,cACnB,KAAK,WAAW,cAAc4F,EAAWrJ,EAAKoD,EAAMsB,EAAImB,CAAG,MACtD,CACL,IAAIyD,EACAzC,IAAqByC,EAAe,KAAK,eAAe,UAAUlG,EAAMyC,EAAI,MAAOA,CAAG,GAC1F,MAAM0D,EAAa,GAAG,KAAK,QAAQ,eAAe,OAC5CC,EAAgB,GAAG,KAAK,QAAQ,eAAe,UAAU,KAAK,QAAQ,eAAe,GAU3F,GATI3C,IACFwC,EAAU,KAAKrJ,EAAMsJ,CAAY,EAC7BzD,EAAI,SAAWyD,EAAa,QAAQE,CAAa,IAAM,GACzDH,EAAU,KAAKrJ,EAAMsJ,EAAa,QAAQE,EAAe,KAAK,QAAQ,eAAe,CAAC,EAEpFvC,GACFoC,EAAU,KAAKrJ,EAAMuJ,CAAU,GAG/BJ,EAAsB,CACxB,MAAMM,EAAa,GAAGzJ,CAAG,GAAG,KAAK,QAAQ,gBAAgB,GAAG6F,EAAI,OAAO,GACvEwD,EAAU,KAAKI,CAAU,EACrB5C,IACFwC,EAAU,KAAKI,EAAaH,CAAY,EACpCzD,EAAI,SAAWyD,EAAa,QAAQE,CAAa,IAAM,GACzDH,EAAU,KAAKI,EAAaH,EAAa,QAAQE,EAAe,KAAK,QAAQ,eAAe,CAAC,EAE3FvC,GACFoC,EAAU,KAAKI,EAAaF,CAAU,EAG5C,CACF,CACA,IAAIG,EACJ,KAAOA,EAAcL,EAAU,OACxB,KAAK,cAAcP,CAAK,IAC3BC,EAAeW,EACfZ,EAAQ,KAAK,YAAY1F,EAAMsB,EAAIgF,EAAa7D,CAAG,EAGzD,CAAC,EACH,CAAC,CACH,CAAC,EACM,CACL,IAAKiD,EACL,QAAApB,EACA,aAAAqB,EACA,QAAAC,EACA,OAAAC,CACN,CACE,CACA,cAAc/J,EAAK,CACjB,OAAOA,IAAQ,QAAa,EAAE,CAAC,KAAK,QAAQ,YAAcA,IAAQ,OAAS,EAAE,CAAC,KAAK,QAAQ,mBAAqBA,IAAQ,GAC1H,CACA,YAAYkE,EAAMsB,EAAI1E,EAAK4D,EAAU,CAAA,EAAI,OACvC,OAAIH,EAAA,KAAK,aAAL,MAAAA,EAAiB,YAAoB,KAAK,WAAW,YAAYL,EAAMsB,EAAI1E,EAAK4D,CAAO,EACpF,KAAK,cAAc,YAAYR,EAAMsB,EAAI1E,EAAK4D,CAAO,CAC9D,CACA,qBAAqBA,EAAU,GAAI,CACjC,MAAM+F,EAAc,CAAC,eAAgB,UAAW,UAAW,UAAW,MAAO,OAAQ,cAAe,KAAM,eAAgB,cAAe,gBAAiB,gBAAiB,aAAc,cAAe,eAAe,EACjNC,EAA2BhG,EAAQ,SAAW,CAAC7E,GAAS6E,EAAQ,OAAO,EAC7E,IAAI3C,EAAO2I,EAA2BhG,EAAQ,QAAUA,EAUxD,GATIgG,GAA4B,OAAOhG,EAAQ,MAAU,MACvD3C,EAAK,MAAQ2C,EAAQ,OAEnB,KAAK,QAAQ,cAAc,mBAC7B3C,EAAO,CACL,GAAG,KAAK,QAAQ,cAAc,iBAC9B,GAAGA,CACX,GAEQ,CAAC2I,EAA0B,CAC7B3I,EAAO,CACL,GAAGA,CACX,EACM,UAAWjB,KAAO2J,EAChB,OAAO1I,EAAKjB,CAAG,CAEnB,CACA,OAAOiB,CACT,CACA,OAAO,gBAAgB2C,EAAS,CAC9B,MAAME,EAAS,eACf,UAAW+F,KAAUjG,EACnB,GAAI,OAAO,UAAU,eAAe,KAAKA,EAASiG,CAAM,GAAK/F,IAAW+F,EAAO,UAAU,EAAG/F,EAAO,MAAM,GAAmBF,EAAQiG,CAAM,IAA5B,OAC5G,MAAO,GAGX,MAAO,EACT,CACF,CAEA,MAAMC,EAAa,CACjB,YAAYlG,EAAS,CACnB,KAAK,QAAUA,EACf,KAAK,cAAgB,KAAK,QAAQ,eAAiB,GACnD,KAAK,OAASK,GAAW,OAAO,eAAe,CACjD,CACA,sBAAsBb,EAAM,CAE1B,GADAA,EAAOD,GAAeC,CAAI,EACtB,CAACA,GAAQA,EAAK,QAAQ,GAAG,EAAI,EAAG,OAAO,KAC3C,MAAMzC,EAAIyC,EAAK,MAAM,GAAG,EAGxB,OAFIzC,EAAE,SAAW,IACjBA,EAAE,IAAG,EACDA,EAAEA,EAAE,OAAS,CAAC,EAAE,YAAW,IAAO,KAAY,KAC3C,KAAK,mBAAmBA,EAAE,KAAK,GAAG,CAAC,CAC5C,CACA,wBAAwByC,EAAM,CAE5B,GADAA,EAAOD,GAAeC,CAAI,EACtB,CAACA,GAAQA,EAAK,QAAQ,GAAG,EAAI,EAAG,OAAOA,EAC3C,MAAMzC,EAAIyC,EAAK,MAAM,GAAG,EACxB,OAAO,KAAK,mBAAmBzC,EAAE,CAAC,CAAC,CACrC,CACA,mBAAmByC,EAAM,CACvB,GAAIrE,GAASqE,CAAI,GAAKA,EAAK,QAAQ,GAAG,EAAI,GAAI,CAC5C,IAAI2G,EACJ,GAAI,CACFA,EAAgB,KAAK,oBAAoB3G,CAAI,EAAE,CAAC,CAClD,MAAY,CAAC,CAIb,OAHI2G,GAAiB,KAAK,QAAQ,eAChCA,EAAgBA,EAAc,YAAW,GAEvCA,IACA,KAAK,QAAQ,aACR3G,EAAK,YAAW,EAElBA,EACT,CACA,OAAO,KAAK,QAAQ,WAAa,KAAK,QAAQ,aAAeA,EAAK,YAAW,EAAKA,CACpF,CACA,gBAAgBA,EAAM,CACpB,OAAI,KAAK,QAAQ,OAAS,gBAAkB,KAAK,QAAQ,4BACvDA,EAAO,KAAK,wBAAwBA,CAAI,GAEnC,CAAC,KAAK,eAAiB,CAAC,KAAK,cAAc,QAAU,KAAK,cAAc,QAAQA,CAAI,EAAI,EACjG,CACA,sBAAsBgG,EAAO,CAC3B,GAAI,CAACA,EAAO,OAAO,KACnB,IAAIN,EACJ,OAAAM,EAAM,QAAQhG,GAAQ,CACpB,GAAI0F,EAAO,OACX,MAAMkB,EAAa,KAAK,mBAAmB5G,CAAI,GAC3C,CAAC,KAAK,QAAQ,eAAiB,KAAK,gBAAgB4G,CAAU,KAAGlB,EAAQkB,EAC/E,CAAC,EACG,CAAClB,GAAS,KAAK,QAAQ,eACzBM,EAAM,QAAQhG,GAAQ,CACpB,GAAI0F,EAAO,OACX,MAAMmB,EAAY,KAAK,sBAAsB7G,CAAI,EACjD,GAAI,KAAK,gBAAgB6G,CAAS,EAAG,OAAOnB,EAAQmB,EACpD,MAAMC,EAAU,KAAK,wBAAwB9G,CAAI,EACjD,GAAI,KAAK,gBAAgB8G,CAAO,EAAG,OAAOpB,EAAQoB,EAClDpB,EAAQ,KAAK,QAAQ,cAAc,KAAKqB,GAAgB,CACtD,GAAIA,IAAiBD,EAAS,OAAOC,EACrC,GAAI,EAAAA,EAAa,QAAQ,GAAG,EAAI,GAAKD,EAAQ,QAAQ,GAAG,EAAI,KACxDC,EAAa,QAAQ,GAAG,EAAI,GAAKD,EAAQ,QAAQ,GAAG,EAAI,GAAKC,EAAa,UAAU,EAAGA,EAAa,QAAQ,GAAG,CAAC,IAAMD,GACtHC,EAAa,QAAQD,CAAO,IAAM,GAAKA,EAAQ,OAAS,GAAG,OAAOC,CACxE,CAAC,CACH,CAAC,EAEErB,IAAOA,EAAQ,KAAK,iBAAiB,KAAK,QAAQ,WAAW,EAAE,CAAC,GAC9DA,CACT,CACA,iBAAiBsB,EAAWhH,EAAM,CAChC,GAAI,CAACgH,EAAW,MAAO,CAAA,EAGvB,GAFI,OAAOA,GAAc,aAAYA,EAAYA,EAAUhH,CAAI,GAC3DrE,GAASqL,CAAS,IAAGA,EAAY,CAACA,CAAS,GAC3C,MAAM,QAAQA,CAAS,EAAG,OAAOA,EACrC,GAAI,CAAChH,EAAM,OAAOgH,EAAU,SAAW,CAAA,EACvC,IAAItB,EAAQsB,EAAUhH,CAAI,EAC1B,OAAK0F,IAAOA,EAAQsB,EAAU,KAAK,sBAAsBhH,CAAI,CAAC,GACzD0F,IAAOA,EAAQsB,EAAU,KAAK,mBAAmBhH,CAAI,CAAC,GACtD0F,IAAOA,EAAQsB,EAAU,KAAK,wBAAwBhH,CAAI,CAAC,GAC3D0F,IAAOA,EAAQsB,EAAU,SACvBtB,GAAS,CAAA,CAClB,CACA,mBAAmB1F,EAAMiH,EAAc,CACrC,MAAMC,EAAgB,KAAK,kBAAkBD,IAAiB,GAAQ,GAAKA,IAAiB,KAAK,QAAQ,aAAe,CAAA,EAAIjH,CAAI,EAC1HgG,EAAQ,CAAA,EACRmB,EAAU/H,GAAK,CACdA,IACD,KAAK,gBAAgBA,CAAC,EACxB4G,EAAM,KAAK5G,CAAC,EAEZ,KAAK,OAAO,KAAK,uDAAuDA,CAAC,EAAE,EAE/E,EACA,OAAIzD,GAASqE,CAAI,IAAMA,EAAK,QAAQ,GAAG,EAAI,IAAMA,EAAK,QAAQ,GAAG,EAAI,KAC/D,KAAK,QAAQ,OAAS,gBAAgBmH,EAAQ,KAAK,mBAAmBnH,CAAI,CAAC,EAC3E,KAAK,QAAQ,OAAS,gBAAkB,KAAK,QAAQ,OAAS,eAAemH,EAAQ,KAAK,sBAAsBnH,CAAI,CAAC,EACrH,KAAK,QAAQ,OAAS,eAAemH,EAAQ,KAAK,wBAAwBnH,CAAI,CAAC,GAC1ErE,GAASqE,CAAI,GACtBmH,EAAQ,KAAK,mBAAmBnH,CAAI,CAAC,EAEvCkH,EAAc,QAAQE,GAAM,CACtBpB,EAAM,QAAQoB,CAAE,EAAI,GAAGD,EAAQ,KAAK,mBAAmBC,CAAE,CAAC,CAChE,CAAC,EACMpB,CACT,CACF,CAEA,MAAMqB,GAAgB,CACpB,KAAM,EACN,IAAK,EACL,IAAK,EACL,IAAK,EACL,KAAM,EACN,MAAO,CACT,EACMC,GAAY,CAChB,OAAQC,GAASA,IAAU,EAAI,MAAQ,QACvC,gBAAiB,KAAO,CACtB,iBAAkB,CAAC,MAAO,OAAO,CACrC,EACA,EACA,MAAMC,EAAe,CACnB,YAAYC,EAAejH,EAAU,GAAI,CACvC,KAAK,cAAgBiH,EACrB,KAAK,QAAUjH,EACf,KAAK,OAASK,GAAW,OAAO,gBAAgB,EAChD,KAAK,iBAAmB,CAAA,CAC1B,CACA,QAAQW,EAAK5F,EAAK,CAChB,KAAK,MAAM4F,CAAG,EAAI5F,CACpB,CACA,YAAa,CACX,KAAK,iBAAmB,CAAA,CAC1B,CACA,QAAQoE,EAAMQ,EAAU,GAAI,CAC1B,MAAMkH,EAAc3H,GAAeC,IAAS,MAAQ,KAAOA,CAAI,EACzDG,EAAOK,EAAQ,QAAU,UAAY,WACrCmH,EAAW,KAAK,UAAU,CAC9B,YAAAD,EACA,KAAAvH,CACN,CAAK,EACD,GAAIwH,KAAY,KAAK,iBACnB,OAAO,KAAK,iBAAiBA,CAAQ,EAEvC,IAAIC,EACJ,GAAI,CACFA,EAAO,IAAI,KAAK,YAAYF,EAAa,CACvC,KAAAvH,CACR,CAAO,CACH,MAAc,CACZ,GAAI,CAAC,KACH,YAAK,OAAO,MAAM,+CAA+C,EAC1DmH,GAET,GAAI,CAACtH,EAAK,MAAM,KAAK,EAAG,OAAOsH,GAC/B,MAAMO,EAAU,KAAK,cAAc,wBAAwB7H,CAAI,EAC/D4H,EAAO,KAAK,QAAQC,EAASrH,CAAO,CACtC,CACA,YAAK,iBAAiBmH,CAAQ,EAAIC,EAC3BA,CACT,CACA,YAAY5H,EAAMQ,EAAU,GAAI,CAC9B,IAAIoH,EAAO,KAAK,QAAQ5H,EAAMQ,CAAO,EACrC,OAAKoH,IAAMA,EAAO,KAAK,QAAQ,MAAOpH,CAAO,IACtCoH,GAAA,YAAAA,EAAM,kBAAkB,iBAAiB,QAAS,CAC3D,CACA,oBAAoB5H,EAAMpD,EAAK4D,EAAU,CAAA,EAAI,CAC3C,OAAO,KAAK,YAAYR,EAAMQ,CAAO,EAAE,IAAI0E,GAAU,GAAGtI,CAAG,GAAGsI,CAAM,EAAE,CACxE,CACA,YAAYlF,EAAMQ,EAAU,GAAI,CAC9B,IAAIoH,EAAO,KAAK,QAAQ5H,EAAMQ,CAAO,EAErC,OADKoH,IAAMA,EAAO,KAAK,QAAQ,MAAOpH,CAAO,GACxCoH,EACEA,EAAK,gBAAe,EAAG,iBAAiB,KAAK,CAACE,EAAiBC,IAAoBV,GAAcS,CAAe,EAAIT,GAAcU,CAAe,CAAC,EAAE,IAAIC,GAAkB,GAAG,KAAK,QAAQ,OAAO,GAAGxH,EAAQ,QAAU,UAAU,KAAK,QAAQ,OAAO,GAAK,EAAE,GAAGwH,CAAc,EAAE,EADnQ,CAAA,CAEpB,CACA,UAAUhI,EAAMuH,EAAO/G,EAAU,CAAA,EAAI,CACnC,MAAMoH,EAAO,KAAK,QAAQ5H,EAAMQ,CAAO,EACvC,OAAIoH,EACK,GAAG,KAAK,QAAQ,OAAO,GAAGpH,EAAQ,QAAU,UAAU,KAAK,QAAQ,OAAO,GAAK,EAAE,GAAGoH,EAAK,OAAOL,CAAK,CAAC,IAE/G,KAAK,OAAO,KAAK,6BAA6BvH,CAAI,EAAE,EAC7C,KAAK,UAAU,MAAOuH,EAAO/G,CAAO,EAC7C,CACF,CAEA,MAAMyH,GAAuB,CAACpK,EAAMC,EAAalB,EAAKsC,EAAe,IAAKuC,EAAsB,KAAS,CACvG,IAAI1E,EAAOa,GAAoBC,EAAMC,EAAalB,CAAG,EACrD,MAAI,CAACG,GAAQ0E,GAAuB9F,GAASiB,CAAG,IAC9CG,EAAOyC,GAAS3B,EAAMjB,EAAKsC,CAAY,EACnCnC,IAAS,SAAWA,EAAOyC,GAAS1B,EAAalB,EAAKsC,CAAY,IAEjEnC,CACT,EACMmL,GAAYC,GAAOA,EAAI,QAAQ,MAAO,MAAM,EAClD,MAAMC,EAAa,CACjB,YAAY5H,EAAU,GAAI,OACxB,KAAK,OAASK,GAAW,OAAO,cAAc,EAC9C,KAAK,QAAUL,EACf,KAAK,SAASH,EAAAG,GAAA,YAAAA,EAAS,gBAAT,YAAAH,EAAwB,UAAWtC,GAASA,GAC1D,KAAK,KAAKyC,CAAO,CACnB,CACA,KAAKA,EAAU,GAAI,CACZA,EAAQ,gBAAeA,EAAQ,cAAgB,CAClD,YAAa,EACnB,GACI,KAAM,CACJ,OAAQ6H,EACR,YAAAC,EACA,oBAAAC,EACA,OAAA7H,EACA,cAAA8H,EACA,OAAAtD,EACA,cAAAuD,EACA,gBAAAC,EACA,eAAAC,EACA,eAAAC,EACA,cAAAC,EACA,qBAAAC,EACA,cAAAC,EACA,qBAAAC,EACA,wBAAAC,EACA,YAAAC,EACA,aAAAC,CACN,EAAQ3I,EAAQ,cACZ,KAAK,OAAS6H,IAAa,OAAYA,EAAW7J,GAClD,KAAK,YAAc8J,IAAgB,OAAYA,EAAc,GAC7D,KAAK,oBAAsBC,IAAwB,OAAYA,EAAsB,GACrF,KAAK,OAAS7H,EAASrC,GAAYqC,CAAM,EAAI8H,GAAiB,KAC9D,KAAK,OAAStD,EAAS7G,GAAY6G,CAAM,EAAIuD,GAAiB,KAC9D,KAAK,gBAAkBC,GAAmB,IAC1C,KAAK,eAAiBC,EAAiB,GAAKC,GAAkB,IAC9D,KAAK,eAAiB,KAAK,eAAiB,GAAKD,GAAkB,GACnE,KAAK,cAAgBE,EAAgBxK,GAAYwK,CAAa,EAAIC,GAAwBzK,GAAY,KAAK,EAC3G,KAAK,cAAgB0K,EAAgB1K,GAAY0K,CAAa,EAAIC,GAAwB3K,GAAY,GAAG,EACzG,KAAK,wBAA0B4K,GAA2B,IAC1D,KAAK,YAAcC,GAAe,IAClC,KAAK,aAAeC,IAAiB,OAAYA,EAAe,GAChE,KAAK,YAAW,CAClB,CACA,OAAQ,CACF,KAAK,SAAS,KAAK,KAAK,KAAK,OAAO,CAC1C,CACA,aAAc,CACZ,MAAMC,EAAmB,CAACC,EAAgB1K,KACpC0K,GAAA,YAAAA,EAAgB,UAAW1K,GAC7B0K,EAAe,UAAY,EACpBA,GAEF,IAAI,OAAO1K,EAAS,GAAG,EAEhC,KAAK,OAASyK,EAAiB,KAAK,OAAQ,GAAG,KAAK,MAAM,QAAQ,KAAK,MAAM,EAAE,EAC/E,KAAK,eAAiBA,EAAiB,KAAK,eAAgB,GAAG,KAAK,MAAM,GAAG,KAAK,cAAc,QAAQ,KAAK,cAAc,GAAG,KAAK,MAAM,EAAE,EAC3I,KAAK,cAAgBA,EAAiB,KAAK,cAAe,GAAG,KAAK,aAAa,QAAQ,KAAK,aAAa,EAAE,CAC7G,CACA,YAAY9K,EAAKT,EAAM2D,EAAKhB,EAAS,OACnC,IAAI8I,EACAvL,EACAwL,EACJ,MAAMzL,EAAc,KAAK,SAAW,KAAK,QAAQ,eAAiB,KAAK,QAAQ,cAAc,kBAAoB,CAAA,EAC3G0L,EAAe5M,GAAO,CAC1B,GAAIA,EAAI,QAAQ,KAAK,eAAe,EAAI,EAAG,CACzC,MAAMG,EAAOkL,GAAqBpK,EAAMC,EAAalB,EAAK,KAAK,QAAQ,aAAc,KAAK,QAAQ,mBAAmB,EACrH,OAAO,KAAK,aAAe,KAAK,OAAOG,EAAM,OAAWyE,EAAK,CAC3D,GAAGhB,EACH,GAAG3C,EACH,iBAAkBjB,CAC5B,CAAS,EAAIG,CACP,CACA,MAAMQ,EAAIX,EAAI,MAAM,KAAK,eAAe,EAClCS,EAAIE,EAAE,MAAK,EAAG,KAAI,EAClBkM,EAAIlM,EAAE,KAAK,KAAK,eAAe,EAAE,KAAI,EAC3C,OAAO,KAAK,OAAO0K,GAAqBpK,EAAMC,EAAaT,EAAG,KAAK,QAAQ,aAAc,KAAK,QAAQ,mBAAmB,EAAGoM,EAAGjI,EAAK,CAClI,GAAGhB,EACH,GAAG3C,EACH,iBAAkBR,CAC1B,CAAO,CACH,EACA,KAAK,YAAW,EAChB,MAAMqM,GAA8BlJ,GAAA,YAAAA,EAAS,8BAA+B,KAAK,QAAQ,4BACnF2E,IAAkB9E,EAAAG,GAAA,YAAAA,EAAS,gBAAT,YAAAH,EAAwB,mBAAoB,OAAYG,EAAQ,cAAc,gBAAkB,KAAK,QAAQ,cAAc,gBAQnJ,MAPc,CAAC,CACb,MAAO,KAAK,eACZ,UAAW2H,GAAOD,GAAUC,CAAG,CACrC,EAAO,CACD,MAAO,KAAK,OACZ,UAAWA,GAAO,KAAK,YAAcD,GAAU,KAAK,OAAOC,CAAG,CAAC,EAAID,GAAUC,CAAG,CACtF,CAAK,EACK,QAAQwB,GAAQ,CAEpB,IADAJ,EAAW,EACJD,EAAQK,EAAK,MAAM,KAAKrL,CAAG,GAAG,CACnC,MAAMsL,EAAaN,EAAM,CAAC,EAAE,KAAI,EAEhC,GADAvL,EAAQyL,EAAaI,CAAU,EAC3B7L,IAAU,OACZ,GAAI,OAAO2L,GAAgC,WAAY,CACrD,MAAMG,EAAOH,EAA4BpL,EAAKgL,EAAO9I,CAAO,EAC5DzC,EAAQpC,GAASkO,CAAI,EAAIA,EAAO,EAClC,SAAWrJ,GAAW,OAAO,UAAU,eAAe,KAAKA,EAASoJ,CAAU,EAC5E7L,EAAQ,WACCoH,EAAiB,CAC1BpH,EAAQuL,EAAM,CAAC,EACf,QACF,MACE,KAAK,OAAO,KAAK,8BAA8BM,CAAU,sBAAsBtL,CAAG,EAAE,EACpFP,EAAQ,OAED,CAACpC,GAASoC,CAAK,GAAK,CAAC,KAAK,sBACnCA,EAAQ5B,GAAW4B,CAAK,GAE1B,MAAM+L,EAAYH,EAAK,UAAU5L,CAAK,EAStC,GARAO,EAAMA,EAAI,QAAQgL,EAAM,CAAC,EAAGQ,CAAS,EACjC3E,GACFwE,EAAK,MAAM,WAAa5L,EAAM,OAC9B4L,EAAK,MAAM,WAAaL,EAAM,CAAC,EAAE,QAEjCK,EAAK,MAAM,UAAY,EAEzBJ,IACIA,GAAY,KAAK,YACnB,KAEJ,CACF,CAAC,EACMjL,CACT,CACA,KAAKA,EAAK8I,EAAI5G,EAAU,CAAA,EAAI,CAC1B,IAAI8I,EACAvL,EACAgM,EACJ,MAAMC,EAAmB,CAACpN,EAAKqN,IAAqB,CAClD,MAAMC,EAAM,KAAK,wBACjB,GAAItN,EAAI,QAAQsN,CAAG,EAAI,EAAG,OAAOtN,EACjC,MAAMwC,EAAIxC,EAAI,MAAM,IAAI,OAAO,GAAGsN,CAAG,OAAO,CAAC,EAC7C,IAAIC,EAAgB,IAAI/K,EAAE,CAAC,CAAC,GAC5BxC,EAAMwC,EAAE,CAAC,EACT+K,EAAgB,KAAK,YAAYA,EAAeJ,CAAa,EAC7D,MAAMK,EAAsBD,EAAc,MAAM,IAAI,EAC9CE,EAAsBF,EAAc,MAAM,IAAI,KAC/CC,GAAA,YAAAA,EAAqB,SAAU,GAAK,IAAM,GAAK,CAACC,GAAuBA,EAAoB,OAAS,IAAM,KAC7GF,EAAgBA,EAAc,QAAQ,KAAM,GAAG,GAEjD,GAAI,CACFJ,EAAgB,KAAK,MAAMI,CAAa,EACpCF,IAAkBF,EAAgB,CACpC,GAAGE,EACH,GAAGF,CACb,EACM,OAASzM,EAAG,CACV,YAAK,OAAO,KAAK,oDAAoDV,CAAG,GAAIU,CAAC,EACtE,GAAGV,CAAG,GAAGsN,CAAG,GAAGC,CAAa,EACrC,CACA,OAAIJ,EAAc,cAAgBA,EAAc,aAAa,QAAQ,KAAK,MAAM,EAAI,IAAI,OAAOA,EAAc,aACtGnN,CACT,EACA,KAAO0M,EAAQ,KAAK,cAAc,KAAKhL,CAAG,GAAG,CAC3C,IAAIgM,EAAa,CAAA,EACjBP,EAAgB,CACd,GAAGvJ,CACX,EACMuJ,EAAgBA,EAAc,SAAW,CAACpO,GAASoO,EAAc,OAAO,EAAIA,EAAc,QAAUA,EACpGA,EAAc,mBAAqB,GACnC,OAAOA,EAAc,aACrB,MAAMQ,EAAc,OAAO,KAAKjB,EAAM,CAAC,CAAC,EAAIA,EAAM,CAAC,EAAE,YAAY,GAAG,EAAI,EAAIA,EAAM,CAAC,EAAE,QAAQ,KAAK,eAAe,EAMjH,GALIiB,IAAgB,KAClBD,EAAahB,EAAM,CAAC,EAAE,MAAMiB,CAAW,EAAE,MAAM,KAAK,eAAe,EAAE,IAAIC,GAAQA,EAAK,KAAI,CAAE,EAAE,OAAO,OAAO,EAC5GlB,EAAM,CAAC,EAAIA,EAAM,CAAC,EAAE,MAAM,EAAGiB,CAAW,GAE1CxM,EAAQqJ,EAAG4C,EAAiB,KAAK,KAAMV,EAAM,CAAC,EAAE,KAAI,EAAIS,CAAa,EAAGA,CAAa,EACjFhM,GAASuL,EAAM,CAAC,IAAMhL,GAAO,CAAC3C,GAASoC,CAAK,EAAG,OAAOA,EACrDpC,GAASoC,CAAK,IAAGA,EAAQ5B,GAAW4B,CAAK,GACzCA,IACH,KAAK,OAAO,KAAK,qBAAqBuL,EAAM,CAAC,CAAC,gBAAgBhL,CAAG,EAAE,EACnEP,EAAQ,IAENuM,EAAW,SACbvM,EAAQuM,EAAW,OAAO,CAACxI,EAAG2H,IAAM,KAAK,OAAO3H,EAAG2H,EAAGjJ,EAAQ,IAAK,CACjE,GAAGA,EACH,iBAAkB8I,EAAM,CAAC,EAAE,KAAI,CACzC,CAAS,EAAGvL,EAAM,MAAM,GAElBO,EAAMA,EAAI,QAAQgL,EAAM,CAAC,EAAGvL,CAAK,EACjC,KAAK,OAAO,UAAY,CAC1B,CACA,OAAOO,CACT,CACF,CAEA,MAAMmM,GAAiBC,GAAa,CAClC,IAAIC,EAAaD,EAAU,YAAW,EAAG,KAAI,EAC7C,MAAME,EAAgB,CAAA,EACtB,GAAIF,EAAU,QAAQ,GAAG,EAAI,GAAI,CAC/B,MAAMnN,EAAImN,EAAU,MAAM,GAAG,EAC7BC,EAAapN,EAAE,CAAC,EAAE,YAAW,EAAG,KAAI,EACpC,MAAMsN,EAAStN,EAAE,CAAC,EAAE,UAAU,EAAGA,EAAE,CAAC,EAAE,OAAS,CAAC,EAC5CoN,IAAe,YAAcE,EAAO,QAAQ,GAAG,EAAI,EAChDD,EAAc,WAAUA,EAAc,SAAWC,EAAO,KAAI,GACxDF,IAAe,gBAAkBE,EAAO,QAAQ,GAAG,EAAI,EAC3DD,EAAc,QAAOA,EAAc,MAAQC,EAAO,KAAI,GAE9CA,EAAO,MAAM,GAAG,EACxB,QAAQpI,GAAO,CAClB,GAAIA,EAAK,CACP,KAAM,CAAC7F,EAAK,GAAGkO,CAAI,EAAIrI,EAAI,MAAM,GAAG,EAC9B0F,EAAM2C,EAAK,KAAK,GAAG,EAAE,OAAO,QAAQ,WAAY,EAAE,EAClDC,EAAanO,EAAI,KAAI,EACtBgO,EAAcG,CAAU,IAAGH,EAAcG,CAAU,EAAI5C,GACxDA,IAAQ,UAASyC,EAAcG,CAAU,EAAI,IAC7C5C,IAAQ,SAAQyC,EAAcG,CAAU,EAAI,IAC3C,MAAM5C,CAAG,IAAGyC,EAAcG,CAAU,EAAI,SAAS5C,EAAK,EAAE,EAC/D,CACF,CAAC,CAEL,CACA,MAAO,CACL,WAAAwC,EACA,cAAAC,CACJ,CACA,EACMI,GAAwBC,GAAM,CAClC,MAAMC,EAAQ,CAAA,EACd,MAAO,CAACpJ,EAAG+C,EAAGrC,IAAM,CAClB,IAAI2I,EAAc3I,EACdA,GAAKA,EAAE,kBAAoBA,EAAE,cAAgBA,EAAE,aAAaA,EAAE,gBAAgB,GAAKA,EAAEA,EAAE,gBAAgB,IACzG2I,EAAc,CACZ,GAAGA,EACH,CAAC3I,EAAE,gBAAgB,EAAG,MAC9B,GAEI,MAAM5F,EAAMiI,EAAI,KAAK,UAAUsG,CAAW,EAC1C,IAAIC,EAAMF,EAAMtO,CAAG,EACnB,OAAKwO,IACHA,EAAMH,EAAGlL,GAAe8E,CAAC,EAAGrC,CAAC,EAC7B0I,EAAMtO,CAAG,EAAIwO,GAERA,EAAItJ,CAAC,CACd,CACF,EACMuJ,GAA2BJ,GAAM,CAACnJ,EAAG+C,EAAGrC,IAAMyI,EAAGlL,GAAe8E,CAAC,EAAGrC,CAAC,EAAEV,CAAC,EAC9E,MAAMwJ,EAAU,CACd,YAAY9K,EAAU,GAAI,CACxB,KAAK,OAASK,GAAW,OAAO,WAAW,EAC3C,KAAK,QAAUL,EACf,KAAK,KAAKA,CAAO,CACnB,CACA,KAAK+B,EAAU/B,EAAU,CACvB,cAAe,CAAA,CACnB,EAAK,CACD,KAAK,gBAAkBA,EAAQ,cAAc,iBAAmB,IAChE,MAAM+K,EAAK/K,EAAQ,oBAAsBwK,GAAwBK,GACjE,KAAK,QAAU,CACb,OAAQE,EAAG,CAAC/J,EAAKiB,IAAQ,CACvB,MAAM+I,EAAY,IAAI,KAAK,aAAahK,EAAK,CAC3C,GAAGiB,CACb,CAAS,EACD,OAAO0F,GAAOqD,EAAU,OAAOrD,CAAG,CACpC,CAAC,EACD,SAAUoD,EAAG,CAAC/J,EAAKiB,IAAQ,CACzB,MAAM+I,EAAY,IAAI,KAAK,aAAahK,EAAK,CAC3C,GAAGiB,EACH,MAAO,UACjB,CAAS,EACD,OAAO0F,GAAOqD,EAAU,OAAOrD,CAAG,CACpC,CAAC,EACD,SAAUoD,EAAG,CAAC/J,EAAKiB,IAAQ,CACzB,MAAM+I,EAAY,IAAI,KAAK,eAAehK,EAAK,CAC7C,GAAGiB,CACb,CAAS,EACD,OAAO0F,GAAOqD,EAAU,OAAOrD,CAAG,CACpC,CAAC,EACD,aAAcoD,EAAG,CAAC/J,EAAKiB,IAAQ,CAC7B,MAAM+I,EAAY,IAAI,KAAK,mBAAmBhK,EAAK,CACjD,GAAGiB,CACb,CAAS,EACD,OAAO0F,GAAOqD,EAAU,OAAOrD,EAAK1F,EAAI,OAAS,KAAK,CACxD,CAAC,EACD,KAAM8I,EAAG,CAAC/J,EAAKiB,IAAQ,CACrB,MAAM+I,EAAY,IAAI,KAAK,WAAWhK,EAAK,CACzC,GAAGiB,CACb,CAAS,EACD,OAAO0F,GAAOqD,EAAU,OAAOrD,CAAG,CACpC,CAAC,CACP,CACE,CACA,IAAIsD,EAAMrE,EAAI,CACZ,KAAK,QAAQqE,EAAK,YAAW,EAAG,KAAI,CAAE,EAAIrE,CAC5C,CACA,UAAUqE,EAAMrE,EAAI,CAClB,KAAK,QAAQqE,EAAK,YAAW,EAAG,MAAM,EAAIT,GAAsB5D,CAAE,CACpE,CACA,OAAOrJ,EAAO2N,EAAQlK,EAAKhB,EAAU,CAAA,EAAI,CACvC,MAAMmL,EAAUD,EAAO,MAAM,KAAK,eAAe,EACjD,GAAIC,EAAQ,OAAS,GAAKA,EAAQ,CAAC,EAAE,QAAQ,GAAG,EAAI,GAAKA,EAAQ,CAAC,EAAE,QAAQ,GAAG,EAAI,GAAKA,EAAQ,KAAKlC,GAAKA,EAAE,QAAQ,GAAG,EAAI,EAAE,EAAG,CAC9H,MAAMmC,EAAYD,EAAQ,UAAUlC,GAAKA,EAAE,QAAQ,GAAG,EAAI,EAAE,EAC5DkC,EAAQ,CAAC,EAAI,CAACA,EAAQ,CAAC,EAAG,GAAGA,EAAQ,OAAO,EAAGC,CAAS,CAAC,EAAE,KAAK,KAAK,eAAe,CACtF,CAyBA,OAxBeD,EAAQ,OAAO,CAACE,EAAKpC,IAAM,OACxC,KAAM,CACJ,WAAAkB,EACA,cAAAC,CACR,EAAUH,GAAehB,CAAC,EACpB,GAAI,KAAK,QAAQkB,CAAU,EAAG,CAC5B,IAAImB,EAAYD,EAChB,GAAI,CACF,MAAME,IAAa1L,EAAAG,GAAA,YAAAA,EAAS,eAAT,YAAAH,EAAwBG,EAAQ,oBAAqB,CAAA,EAClEqE,EAAIkH,EAAW,QAAUA,EAAW,KAAOvL,EAAQ,QAAUA,EAAQ,KAAOgB,EAClFsK,EAAY,KAAK,QAAQnB,CAAU,EAAEkB,EAAKhH,EAAG,CAC3C,GAAG+F,EACH,GAAGpK,EACH,GAAGuL,CACf,CAAW,CACH,OAASC,EAAO,CACd,KAAK,OAAO,KAAKA,CAAK,CACxB,CACA,OAAOF,CACT,MACE,KAAK,OAAO,KAAK,oCAAoCnB,CAAU,EAAE,EAEnE,OAAOkB,CACT,EAAG9N,CAAK,CAEV,CACF,CAEA,MAAMkO,GAAgB,CAACC,EAAGT,IAAS,CAC7BS,EAAE,QAAQT,CAAI,IAAM,SACtB,OAAOS,EAAE,QAAQT,CAAI,EACrBS,EAAE,eAEN,EACA,MAAMC,WAAkBrL,EAAa,CACnC,YAAYsL,EAASC,EAAO9J,EAAU/B,EAAU,CAAA,EAAI,SAClD,MAAK,EACL,KAAK,QAAU4L,EACf,KAAK,MAAQC,EACb,KAAK,SAAW9J,EAChB,KAAK,cAAgBA,EAAS,cAC9B,KAAK,QAAU/B,EACf,KAAK,OAASK,GAAW,OAAO,kBAAkB,EAClD,KAAK,aAAe,CAAA,EACpB,KAAK,iBAAmBL,EAAQ,kBAAoB,GACpD,KAAK,aAAe,EACpB,KAAK,WAAaA,EAAQ,YAAc,EAAIA,EAAQ,WAAa,EACjE,KAAK,aAAeA,EAAQ,cAAgB,EAAIA,EAAQ,aAAe,IACvE,KAAK,MAAQ,CAAA,EACb,KAAK,MAAQ,CAAA,GACbJ,GAAAC,EAAA,KAAK,UAAL,YAAAA,EAAc,OAAd,MAAAD,EAAA,KAAAC,EAAqBkC,EAAU/B,EAAQ,QAASA,EAClD,CACA,UAAU8L,EAAW3J,EAAYnC,EAAS+L,EAAU,CAClD,MAAMC,EAAS,CAAA,EACTC,EAAU,CAAA,EACVC,EAAkB,CAAA,EAClBC,EAAmB,CAAA,EACzB,OAAAL,EAAU,QAAQ9K,GAAO,CACvB,IAAIoL,EAAmB,GACvBjK,EAAW,QAAQrB,GAAM,CACvB,MAAMmK,EAAO,GAAGjK,CAAG,IAAIF,CAAE,GACrB,CAACd,EAAQ,QAAU,KAAK,MAAM,kBAAkBgB,EAAKF,CAAE,EACzD,KAAK,MAAMmK,CAAI,EAAI,EACV,KAAK,MAAMA,CAAI,EAAI,IAAc,KAAK,MAAMA,CAAI,IAAM,EAC3DgB,EAAQhB,CAAI,IAAM,SAAWgB,EAAQhB,CAAI,EAAI,KAEjD,KAAK,MAAMA,CAAI,EAAI,EACnBmB,EAAmB,GACfH,EAAQhB,CAAI,IAAM,SAAWgB,EAAQhB,CAAI,EAAI,IAC7Ce,EAAOf,CAAI,IAAM,SAAWe,EAAOf,CAAI,EAAI,IAC3CkB,EAAiBrL,CAAE,IAAM,SAAWqL,EAAiBrL,CAAE,EAAI,KAEnE,CAAC,EACIsL,IAAkBF,EAAgBlL,CAAG,EAAI,GAChD,CAAC,GACG,OAAO,KAAKgL,CAAM,EAAE,QAAU,OAAO,KAAKC,CAAO,EAAE,SACrD,KAAK,MAAM,KAAK,CACd,QAAAA,EACA,aAAc,OAAO,KAAKA,CAAO,EAAE,OACnC,OAAQ,CAAA,EACR,OAAQ,CAAA,EACR,SAAAF,CACR,CAAO,EAEI,CACL,OAAQ,OAAO,KAAKC,CAAM,EAC1B,QAAS,OAAO,KAAKC,CAAO,EAC5B,gBAAiB,OAAO,KAAKC,CAAe,EAC5C,iBAAkB,OAAO,KAAKC,CAAgB,CACpD,CACE,CACA,OAAOlB,EAAMoB,EAAKhP,EAAM,CACtB,MAAMtB,EAAIkP,EAAK,MAAM,GAAG,EAClBjK,EAAMjF,EAAE,CAAC,EACT+E,EAAK/E,EAAE,CAAC,EACVsQ,GAAK,KAAK,KAAK,gBAAiBrL,EAAKF,EAAIuL,CAAG,EAC5C,CAACA,GAAOhP,GACV,KAAK,MAAM,kBAAkB2D,EAAKF,EAAIzD,EAAM,OAAW,OAAW,CAChE,SAAU,EAClB,CAAO,EAEH,KAAK,MAAM4N,CAAI,EAAIoB,EAAM,GAAK,EAC1BA,GAAOhP,IAAM,KAAK,MAAM4N,CAAI,EAAI,GACpC,MAAMqB,EAAS,CAAA,EACf,KAAK,MAAM,QAAQZ,GAAK,CACtBzO,GAASyO,EAAE,OAAQ,CAAC1K,CAAG,EAAGF,CAAE,EAC5B2K,GAAcC,EAAGT,CAAI,EACjBoB,GAAKX,EAAE,OAAO,KAAKW,CAAG,EACtBX,EAAE,eAAiB,GAAK,CAACA,EAAE,OAC7B,OAAO,KAAKA,EAAE,MAAM,EAAE,QAAQrH,GAAK,CAC5BiI,EAAOjI,CAAC,IAAGiI,EAAOjI,CAAC,EAAI,CAAA,GAC5B,MAAMkI,EAAab,EAAE,OAAOrH,CAAC,EACzBkI,EAAW,QACbA,EAAW,QAAQC,GAAK,CAClBF,EAAOjI,CAAC,EAAEmI,CAAC,IAAM,SAAWF,EAAOjI,CAAC,EAAEmI,CAAC,EAAI,GACjD,CAAC,CAEL,CAAC,EACDd,EAAE,KAAO,GACLA,EAAE,OAAO,OACXA,EAAE,SAASA,EAAE,MAAM,EAEnBA,EAAE,SAAQ,EAGhB,CAAC,EACD,KAAK,KAAK,SAAUY,CAAM,EAC1B,KAAK,MAAQ,KAAK,MAAM,OAAOZ,GAAK,CAACA,EAAE,IAAI,CAC7C,CACA,KAAK1K,EAAKF,EAAI2L,EAAQC,EAAQ,EAAGC,EAAO,KAAK,aAAcZ,EAAU,CACnE,GAAI,CAAC/K,EAAI,OAAQ,OAAO+K,EAAS,KAAM,CAAA,CAAE,EACzC,GAAI,KAAK,cAAgB,KAAK,iBAAkB,CAC9C,KAAK,aAAa,KAAK,CACrB,IAAA/K,EACA,GAAAF,EACA,OAAA2L,EACA,MAAAC,EACA,KAAAC,EACA,SAAAZ,CACR,CAAO,EACD,MACF,CACA,KAAK,eACL,MAAMa,EAAW,CAACP,EAAKhP,IAAS,CAE9B,GADA,KAAK,eACD,KAAK,aAAa,OAAS,EAAG,CAChC,MAAM+B,EAAO,KAAK,aAAa,MAAK,EACpC,KAAK,KAAKA,EAAK,IAAKA,EAAK,GAAIA,EAAK,OAAQA,EAAK,MAAOA,EAAK,KAAMA,EAAK,QAAQ,CAChF,CACA,GAAIiN,GAAOhP,GAAQqP,EAAQ,KAAK,WAAY,CAC1C,WAAW,IAAM,CACf,KAAK,KAAK,KAAK,KAAM1L,EAAKF,EAAI2L,EAAQC,EAAQ,EAAGC,EAAO,EAAGZ,CAAQ,CACrE,EAAGY,CAAI,EACP,MACF,CACAZ,EAASM,EAAKhP,CAAI,CACpB,EACMuJ,EAAK,KAAK,QAAQ6F,CAAM,EAAE,KAAK,KAAK,OAAO,EACjD,GAAI7F,EAAG,SAAW,EAAG,CACnB,GAAI,CACF,MAAM/H,EAAI+H,EAAG5F,EAAKF,CAAE,EAChBjC,GAAK,OAAOA,EAAE,MAAS,WACzBA,EAAE,KAAKxB,GAAQuP,EAAS,KAAMvP,CAAI,CAAC,EAAE,MAAMuP,CAAQ,EAEnDA,EAAS,KAAM/N,CAAC,CAEpB,OAASwN,EAAK,CACZO,EAASP,CAAG,CACd,CACA,MACF,CACA,OAAOzF,EAAG5F,EAAKF,EAAI8L,CAAQ,CAC7B,CACA,eAAed,EAAW3J,EAAYnC,EAAU,CAAA,EAAI+L,EAAU,CAC5D,GAAI,CAAC,KAAK,QACR,YAAK,OAAO,KAAK,gEAAgE,EAC1EA,GAAYA,EAAQ,EAEzB5Q,GAAS2Q,CAAS,IAAGA,EAAY,KAAK,cAAc,mBAAmBA,CAAS,GAChF3Q,GAASgH,CAAU,IAAGA,EAAa,CAACA,CAAU,GAClD,MAAM6J,EAAS,KAAK,UAAUF,EAAW3J,EAAYnC,EAAS+L,CAAQ,EACtE,GAAI,CAACC,EAAO,OAAO,OACjB,OAAKA,EAAO,QAAQ,QAAQD,EAAQ,EAC7B,KAETC,EAAO,OAAO,QAAQf,GAAQ,CAC5B,KAAK,QAAQA,CAAI,CACnB,CAAC,CACH,CACA,KAAKa,EAAW3J,EAAY4J,EAAU,CACpC,KAAK,eAAeD,EAAW3J,EAAY,CAAA,EAAI4J,CAAQ,CACzD,CACA,OAAOD,EAAW3J,EAAY4J,EAAU,CACtC,KAAK,eAAeD,EAAW3J,EAAY,CACzC,OAAQ,EACd,EAAO4J,CAAQ,CACb,CACA,QAAQd,EAAM/K,EAAS,GAAI,CACzB,MAAMnE,EAAIkP,EAAK,MAAM,GAAG,EAClBjK,EAAMjF,EAAE,CAAC,EACT+E,EAAK/E,EAAE,CAAC,EACd,KAAK,KAAKiF,EAAKF,EAAI,OAAQ,OAAW,OAAW,CAACuL,EAAKhP,IAAS,CAC1DgP,GAAK,KAAK,OAAO,KAAK,GAAGnM,CAAM,qBAAqBY,CAAE,iBAAiBE,CAAG,UAAWqL,CAAG,EACxF,CAACA,GAAOhP,GAAM,KAAK,OAAO,IAAI,GAAG6C,CAAM,oBAAoBY,CAAE,iBAAiBE,CAAG,GAAI3D,CAAI,EAC7F,KAAK,OAAO4N,EAAMoB,EAAKhP,CAAI,CAC7B,CAAC,CACH,CACA,YAAYyO,EAAWpJ,EAAWtG,EAAKyQ,EAAeC,EAAU9M,EAAU,CAAA,EAAI+M,EAAM,IAAM,CAAC,EAAG,eAC5F,IAAInN,GAAAC,EAAA,KAAK,WAAL,YAAAA,EAAe,QAAf,MAAAD,EAAsB,oBAAsB,GAACoN,GAAAC,EAAA,KAAK,WAAL,YAAAA,EAAe,QAAf,MAAAD,EAAsB,mBAAmBtK,IAAY,CACpG,KAAK,OAAO,KAAK,qBAAqBtG,CAAG,uBAAuBsG,CAAS,uBAAwB,0NAA0N,EAC3T,MACF,CACA,GAAI,EAAqBtG,GAAQ,MAAQA,IAAQ,IACjD,KAAI8Q,EAAA,KAAK,UAAL,MAAAA,EAAc,OAAQ,CACxB,MAAMC,EAAO,CACX,GAAGnN,EACH,SAAA8M,CACR,EACYlG,EAAK,KAAK,QAAQ,OAAO,KAAK,KAAK,OAAO,EAChD,GAAIA,EAAG,OAAS,EACd,GAAI,CACF,IAAI/H,EACA+H,EAAG,SAAW,EAChB/H,EAAI+H,EAAGkF,EAAWpJ,EAAWtG,EAAKyQ,EAAeM,CAAI,EAErDtO,EAAI+H,EAAGkF,EAAWpJ,EAAWtG,EAAKyQ,CAAa,EAE7ChO,GAAK,OAAOA,EAAE,MAAS,WACzBA,EAAE,KAAKxB,GAAQ0P,EAAI,KAAM1P,CAAI,CAAC,EAAE,MAAM0P,CAAG,EAEzCA,EAAI,KAAMlO,CAAC,CAEf,OAASwN,EAAK,CACZU,EAAIV,CAAG,CACT,MAEAzF,EAAGkF,EAAWpJ,EAAWtG,EAAKyQ,EAAeE,EAAKI,CAAI,CAE1D,CACI,CAACrB,GAAa,CAACA,EAAU,CAAC,GAC9B,KAAK,MAAM,YAAYA,EAAU,CAAC,EAAGpJ,EAAWtG,EAAKyQ,CAAa,EACpE,CACF,CAEA,MAAMO,GAAM,KAAO,CACjB,MAAO,GACP,UAAW,GACX,GAAI,CAAC,aAAa,EAClB,UAAW,CAAC,aAAa,EACzB,YAAa,CAAC,KAAK,EACnB,WAAY,GACZ,cAAe,GACf,yBAA0B,GAC1B,KAAM,MACN,QAAS,GACT,qBAAsB,GACtB,aAAc,IACd,YAAa,IACb,gBAAiB,IACjB,iBAAkB,IAClB,wBAAyB,GACzB,YAAa,GACb,cAAe,GACf,cAAe,WACf,mBAAoB,GACpB,kBAAmB,GACnB,4BAA6B,GAC7B,YAAa,GACb,wBAAyB,GACzB,WAAY,GACZ,kBAAmB,GACnB,cAAe,GACf,WAAY,GACZ,sBAAuB,GACvB,uBAAwB,GACxB,4BAA6B,GAC7B,wBAAyB,GACzB,iCAAkC1N,GAAQ,CACxC,IAAI2N,EAAM,CAAA,EAIV,GAHI,OAAO3N,EAAK,CAAC,GAAM,WAAU2N,EAAM3N,EAAK,CAAC,GACzCvE,GAASuE,EAAK,CAAC,CAAC,IAAG2N,EAAI,aAAe3N,EAAK,CAAC,GAC5CvE,GAASuE,EAAK,CAAC,CAAC,IAAG2N,EAAI,aAAe3N,EAAK,CAAC,GAC5C,OAAOA,EAAK,CAAC,GAAM,UAAY,OAAOA,EAAK,CAAC,GAAM,SAAU,CAC9D,MAAMM,EAAUN,EAAK,CAAC,GAAKA,EAAK,CAAC,EACjC,OAAO,KAAKM,CAAO,EAAE,QAAQ5D,GAAO,CAClCiR,EAAIjR,CAAG,EAAI4D,EAAQ5D,CAAG,CACxB,CAAC,CACH,CACA,OAAOiR,CACT,EACA,cAAe,CACb,YAAa,GACb,OAAQ9P,GAASA,EACjB,OAAQ,KACR,OAAQ,KACR,gBAAiB,IACjB,eAAgB,IAChB,cAAe,MACf,cAAe,IACf,wBAAyB,IACzB,YAAa,IACb,gBAAiB,EACrB,EACE,oBAAqB,EACvB,GACM+P,GAAmBtN,GAAW,SAClC,OAAI7E,GAAS6E,EAAQ,EAAE,IAAGA,EAAQ,GAAK,CAACA,EAAQ,EAAE,GAC9C7E,GAAS6E,EAAQ,WAAW,IAAGA,EAAQ,YAAc,CAACA,EAAQ,WAAW,GACzE7E,GAAS6E,EAAQ,UAAU,IAAGA,EAAQ,WAAa,CAACA,EAAQ,UAAU,KACtEJ,GAAAC,EAAAG,EAAQ,gBAAR,YAAAH,EAAuB,UAAvB,YAAAD,EAAA,KAAAC,EAAiC,WAAY,IAC/CG,EAAQ,cAAgBA,EAAQ,cAAc,OAAO,CAAC,QAAQ,CAAC,GAE7D,OAAOA,EAAQ,eAAkB,YAAWA,EAAQ,UAAYA,EAAQ,eACrEA,CACT,EAEMuN,GAAO,IAAM,CAAC,EACdC,GAAsBC,GAAQ,CACrB,OAAO,oBAAoB,OAAO,eAAeA,CAAI,CAAC,EAC9D,QAAQpC,GAAO,CACd,OAAOoC,EAAKpC,CAAG,GAAM,aACvBoC,EAAKpC,CAAG,EAAIoC,EAAKpC,CAAG,EAAE,KAAKoC,CAAI,EAEnC,CAAC,CACH,EACA,MAAMC,WAAapN,EAAa,CAC9B,YAAYN,EAAU,CAAA,EAAI+L,EAAU,CASlC,GARA,MAAK,EACL,KAAK,QAAUuB,GAAiBtN,CAAO,EACvC,KAAK,SAAW,CAAA,EAChB,KAAK,OAASK,GACd,KAAK,QAAU,CACb,SAAU,CAAA,CAChB,EACImN,GAAoB,IAAI,EACpBzB,GAAY,CAAC,KAAK,eAAiB,CAAC/L,EAAQ,QAAS,CACvD,GAAI,CAAC,KAAK,QAAQ,UAChB,YAAK,KAAKA,EAAS+L,CAAQ,EACpB,KAET,WAAW,IAAM,CACf,KAAK,KAAK/L,EAAS+L,CAAQ,CAC7B,EAAG,CAAC,CACN,CACF,CACA,KAAK/L,EAAU,CAAA,EAAI+L,EAAU,CAC3B,KAAK,eAAiB,GAClB,OAAO/L,GAAY,aACrB+L,EAAW/L,EACXA,EAAU,CAAA,GAERA,EAAQ,WAAa,MAAQA,EAAQ,KACnC7E,GAAS6E,EAAQ,EAAE,EACrBA,EAAQ,UAAYA,EAAQ,GACnBA,EAAQ,GAAG,QAAQ,aAAa,EAAI,IAC7CA,EAAQ,UAAYA,EAAQ,GAAG,CAAC,IAGpC,MAAM2N,EAAUP,GAAG,EACnB,KAAK,QAAU,CACb,GAAGO,EACH,GAAG,KAAK,QACR,GAAGL,GAAiBtN,CAAO,CACjC,EACI,KAAK,QAAQ,cAAgB,CAC3B,GAAG2N,EAAQ,cACX,GAAG,KAAK,QAAQ,aACtB,EACQ3N,EAAQ,eAAiB,SAC3B,KAAK,QAAQ,wBAA0BA,EAAQ,cAE7CA,EAAQ,cAAgB,SAC1B,KAAK,QAAQ,uBAAyBA,EAAQ,aAEhD,MAAM4N,EAAsBC,GACrBA,EACD,OAAOA,GAAkB,WAAmB,IAAIA,EAC7CA,EAFoB,KAI7B,GAAI,CAAC,KAAK,QAAQ,QAAS,CACrB,KAAK,QAAQ,OACfxN,GAAW,KAAKuN,EAAoB,KAAK,QAAQ,MAAM,EAAG,KAAK,OAAO,EAEtEvN,GAAW,KAAK,KAAM,KAAK,OAAO,EAEpC,IAAI2K,EACA,KAAK,QAAQ,UACfA,EAAY,KAAK,QAAQ,UAEzBA,EAAYF,GAEd,MAAMgD,EAAK,IAAI5H,GAAa,KAAK,OAAO,EACxC,KAAK,MAAQ,IAAIrF,GAAc,KAAK,QAAQ,UAAW,KAAK,OAAO,EACnE,MAAM9E,EAAI,KAAK,SACfA,EAAE,OAASsE,GACXtE,EAAE,cAAgB,KAAK,MACvBA,EAAE,cAAgB+R,EAClB/R,EAAE,eAAiB,IAAIiL,GAAe8G,EAAI,CACxC,QAAS,KAAK,QAAQ,gBACtB,qBAAsB,KAAK,QAAQ,oBAC3C,CAAO,EACiC,KAAK,QAAQ,cAAc,QAAU,KAAK,QAAQ,cAAc,SAAWH,EAAQ,cAAc,QAEjI,KAAK,OAAO,KAAK,4IAA4I,EAE3J3C,IAAc,CAAC,KAAK,QAAQ,cAAc,QAAU,KAAK,QAAQ,cAAc,SAAW2C,EAAQ,cAAc,UAClH5R,EAAE,UAAY6R,EAAoB5C,CAAS,EACvCjP,EAAE,UAAU,MAAMA,EAAE,UAAU,KAAKA,EAAG,KAAK,OAAO,EACtD,KAAK,QAAQ,cAAc,OAASA,EAAE,UAAU,OAAO,KAAKA,EAAE,SAAS,GAEzEA,EAAE,aAAe,IAAI6L,GAAa,KAAK,OAAO,EAC9C7L,EAAE,MAAQ,CACR,mBAAoB,KAAK,mBAAmB,KAAK,IAAI,CAC7D,EACMA,EAAE,iBAAmB,IAAI4P,GAAUiC,EAAoB,KAAK,QAAQ,OAAO,EAAG7R,EAAE,cAAeA,EAAG,KAAK,OAAO,EAC9GA,EAAE,iBAAiB,GAAG,IAAK,CAAC0E,KAAUf,IAAS,CAC7C,KAAK,KAAKe,EAAO,GAAGf,CAAI,CAC1B,CAAC,EACG,KAAK,QAAQ,mBACf3D,EAAE,iBAAmB6R,EAAoB,KAAK,QAAQ,gBAAgB,EAClE7R,EAAE,iBAAiB,MAAMA,EAAE,iBAAiB,KAAKA,EAAG,KAAK,QAAQ,UAAW,KAAK,OAAO,GAE1F,KAAK,QAAQ,aACfA,EAAE,WAAa6R,EAAoB,KAAK,QAAQ,UAAU,EACtD7R,EAAE,WAAW,MAAMA,EAAE,WAAW,KAAK,IAAI,GAE/C,KAAK,WAAa,IAAI+F,GAAW,KAAK,SAAU,KAAK,OAAO,EAC5D,KAAK,WAAW,GAAG,IAAK,CAACrB,KAAUf,IAAS,CAC1C,KAAK,KAAKe,EAAO,GAAGf,CAAI,CAC1B,CAAC,EACD,KAAK,QAAQ,SAAS,QAAQzD,GAAK,CAC7BA,EAAE,MAAMA,EAAE,KAAK,IAAI,CACzB,CAAC,CACH,CAGA,GAFA,KAAK,OAAS,KAAK,QAAQ,cAAc,OACpC8P,IAAUA,EAAWwB,IACtB,KAAK,QAAQ,aAAe,CAAC,KAAK,SAAS,kBAAoB,CAAC,KAAK,QAAQ,IAAK,CACpF,MAAM/H,EAAQ,KAAK,SAAS,cAAc,iBAAiB,KAAK,QAAQ,WAAW,EAC/EA,EAAM,OAAS,GAAKA,EAAM,CAAC,IAAM,QAAO,KAAK,QAAQ,IAAMA,EAAM,CAAC,EACxE,CACI,CAAC,KAAK,SAAS,kBAAoB,CAAC,KAAK,QAAQ,KACnD,KAAK,OAAO,KAAK,yDAAyD,EAE3D,CAAC,cAAe,oBAAqB,oBAAqB,mBAAmB,EACrF,QAAQiH,GAAU,CACzB,KAAKA,CAAM,EAAI,IAAI/M,IAAS,KAAK,MAAM+M,CAAM,EAAE,GAAG/M,CAAI,CACxD,CAAC,EACuB,CAAC,cAAe,eAAgB,oBAAqB,sBAAsB,EACnF,QAAQ+M,GAAU,CAChC,KAAKA,CAAM,EAAI,IAAI/M,KACjB,KAAK,MAAM+M,CAAM,EAAE,GAAG/M,CAAI,EACnB,KAEX,CAAC,EACD,MAAMqO,EAAW1S,GAAK,EAChB2S,EAAO,IAAM,CACjB,MAAMC,EAAS,CAAC5B,EAAKrQ,IAAM,CACzB,KAAK,eAAiB,GAClB,KAAK,eAAiB,CAAC,KAAK,sBAAsB,KAAK,OAAO,KAAK,uEAAuE,EAC9I,KAAK,cAAgB,GAChB,KAAK,QAAQ,SAAS,KAAK,OAAO,IAAI,cAAe,KAAK,OAAO,EACtE,KAAK,KAAK,cAAe,KAAK,OAAO,EACrC+R,EAAS,QAAQ/R,CAAC,EAClB+P,EAASM,EAAKrQ,CAAC,CACjB,EACA,GAAI,KAAK,WAAa,CAAC,KAAK,cAAe,OAAOiS,EAAO,KAAM,KAAK,EAAE,KAAK,IAAI,CAAC,EAChF,KAAK,eAAe,KAAK,QAAQ,IAAKA,CAAM,CAC9C,EACA,OAAI,KAAK,QAAQ,WAAa,CAAC,KAAK,QAAQ,UAC1CD,EAAI,EAEJ,WAAWA,EAAM,CAAC,EAEbD,CACT,CACA,cAAcvJ,EAAUuH,EAAWwB,GAAM,SACvC,IAAIW,EAAenC,EACnB,MAAM3G,EAAUjK,GAASqJ,CAAQ,EAAIA,EAAW,KAAK,SAErD,GADI,OAAOA,GAAa,aAAY0J,EAAe1J,GAC/C,CAAC,KAAK,QAAQ,WAAa,KAAK,QAAQ,wBAAyB,CACnE,IAAIY,GAAA,YAAAA,EAAS,iBAAkB,WAAa,CAAC,KAAK,QAAQ,SAAW,KAAK,QAAQ,QAAQ,SAAW,GAAI,OAAO8I,EAAY,EAC5H,MAAMlC,EAAS,CAAA,EACTmC,EAASnN,GAAO,CAEpB,GADI,CAACA,GACDA,IAAQ,SAAU,OACT,KAAK,SAAS,cAAc,mBAAmBA,CAAG,EAC1D,QAAQqD,GAAK,CACZA,IAAM,UACN2H,EAAO,QAAQ3H,CAAC,EAAI,GAAG2H,EAAO,KAAK3H,CAAC,CAC1C,CAAC,CACH,EACKe,EAIH+I,EAAO/I,CAAO,EAHI,KAAK,SAAS,cAAc,iBAAiB,KAAK,QAAQ,WAAW,EAC7E,QAAQf,GAAK8J,EAAO9J,CAAC,CAAC,GAIlCzE,GAAAC,EAAA,KAAK,QAAQ,UAAb,YAAAA,EAAsB,UAAtB,MAAAD,EAAA,KAAAC,EAAgCwE,GAAK8J,EAAO9J,CAAC,GAC7C,KAAK,SAAS,iBAAiB,KAAK2H,EAAQ,KAAK,QAAQ,GAAIlP,GAAK,CAC5D,CAACA,GAAK,CAAC,KAAK,kBAAoB,KAAK,UAAU,KAAK,oBAAoB,KAAK,QAAQ,EACzFoR,EAAapR,CAAC,CAChB,CAAC,CACH,MACEoR,EAAa,IAAI,CAErB,CACA,gBAAgBhK,EAAMpD,EAAIiL,EAAU,CAClC,MAAMgC,EAAW1S,GAAK,EACtB,OAAI,OAAO6I,GAAS,aAClB6H,EAAW7H,EACXA,EAAO,QAEL,OAAOpD,GAAO,aAChBiL,EAAWjL,EACXA,EAAK,QAEFoD,IAAMA,EAAO,KAAK,WAClBpD,IAAIA,EAAK,KAAK,QAAQ,IACtBiL,IAAUA,EAAWwB,IAC1B,KAAK,SAAS,iBAAiB,OAAOrJ,EAAMpD,EAAIuL,GAAO,CACrD0B,EAAS,QAAO,EAChBhC,EAASM,CAAG,CACd,CAAC,EACM0B,CACT,CACA,IAAIvM,EAAQ,CACV,GAAI,CAACA,EAAQ,MAAM,IAAI,MAAM,+FAA+F,EAC5H,GAAI,CAACA,EAAO,KAAM,MAAM,IAAI,MAAM,0FAA0F,EAC5H,OAAIA,EAAO,OAAS,YAClB,KAAK,QAAQ,QAAUA,IAErBA,EAAO,OAAS,UAAYA,EAAO,KAAOA,EAAO,MAAQA,EAAO,SAClE,KAAK,QAAQ,OAASA,GAEpBA,EAAO,OAAS,qBAClB,KAAK,QAAQ,iBAAmBA,GAE9BA,EAAO,OAAS,eAClB,KAAK,QAAQ,WAAaA,GAExBA,EAAO,OAAS,iBAClBD,GAAc,iBAAiBC,CAAM,EAEnCA,EAAO,OAAS,cAClB,KAAK,QAAQ,UAAYA,GAEvBA,EAAO,OAAS,YAClB,KAAK,QAAQ,SAAS,KAAKA,CAAM,EAE5B,IACT,CACA,oBAAoB6C,EAAG,CACrB,GAAI,GAACA,GAAK,CAAC,KAAK,YACZ,GAAC,SAAU,KAAK,EAAE,QAAQA,CAAC,EAAI,IACnC,SAAS+J,EAAK,EAAGA,EAAK,KAAK,UAAU,OAAQA,IAAM,CACjD,MAAMC,EAAY,KAAK,UAAUD,CAAE,EACnC,GAAI,GAAC,SAAU,KAAK,EAAE,QAAQC,CAAS,EAAI,KACvC,KAAK,MAAM,4BAA4BA,CAAS,EAAG,CACrD,KAAK,iBAAmBA,EACxB,KACF,CACF,CACI,CAAC,KAAK,kBAAoB,KAAK,UAAU,QAAQhK,CAAC,EAAI,GAAK,KAAK,MAAM,4BAA4BA,CAAC,IACrG,KAAK,iBAAmBA,EACxB,KAAK,UAAU,QAAQA,CAAC,GAE5B,CACA,eAAerD,EAAK+K,EAAU,CAC5B,KAAK,qBAAuB/K,EAC5B,MAAM+M,EAAW1S,GAAK,EACtB,KAAK,KAAK,mBAAoB2F,CAAG,EACjC,MAAMsN,EAAcjK,GAAK,CACvB,KAAK,SAAWA,EAChB,KAAK,UAAY,KAAK,SAAS,cAAc,mBAAmBA,CAAC,EACjE,KAAK,iBAAmB,OACxB,KAAK,oBAAoBA,CAAC,CAC5B,EACMkK,EAAO,CAAClC,EAAK,IAAM,CACnB,EACE,KAAK,uBAAyBrL,IAChCsN,EAAY,CAAC,EACb,KAAK,WAAW,eAAe,CAAC,EAChC,KAAK,qBAAuB,OAC5B,KAAK,KAAK,kBAAmB,CAAC,EAC9B,KAAK,OAAO,IAAI,kBAAmB,CAAC,GAGtC,KAAK,qBAAuB,OAE9BP,EAAS,QAAQ,IAAIrO,IAAS,KAAK,EAAE,GAAGA,CAAI,CAAC,EACzCqM,GAAUA,EAASM,EAAK,IAAI3M,IAAS,KAAK,EAAE,GAAGA,CAAI,CAAC,CAC1D,EACM8O,EAAStK,GAAQ,SACjB,CAAClD,GAAO,CAACkD,GAAQ,KAAK,SAAS,mBAAkBA,EAAO,CAAA,GAC5D,MAAMuK,EAAKtT,GAAS+I,CAAI,EAAIA,EAAOA,GAAQA,EAAK,CAAC,EAC3CG,EAAI,KAAK,MAAM,4BAA4BoK,CAAE,EAAIA,EAAK,KAAK,SAAS,cAAc,sBAAsBtT,GAAS+I,CAAI,EAAI,CAACA,CAAI,EAAIA,CAAI,EACxIG,IACG,KAAK,UACRiK,EAAYjK,CAAC,EAEV,KAAK,WAAW,UAAU,KAAK,WAAW,eAAeA,CAAC,GAC/DzE,GAAAC,EAAA,KAAK,SAAS,mBAAd,YAAAA,EAAgC,oBAAhC,MAAAD,EAAA,KAAAC,EAAoDwE,IAEtD,KAAK,cAAcA,EAAGgI,GAAO,CAC3BkC,EAAKlC,EAAKhI,CAAC,CACb,CAAC,CACH,EACA,MAAI,CAACrD,GAAO,KAAK,SAAS,kBAAoB,CAAC,KAAK,SAAS,iBAAiB,MAC5EwN,EAAO,KAAK,SAAS,iBAAiB,OAAM,CAAE,EACrC,CAACxN,GAAO,KAAK,SAAS,kBAAoB,KAAK,SAAS,iBAAiB,MAC9E,KAAK,SAAS,iBAAiB,OAAO,SAAW,EACnD,KAAK,SAAS,iBAAiB,OAAM,EAAG,KAAKwN,CAAM,EAEnD,KAAK,SAAS,iBAAiB,OAAOA,CAAM,EAG9CA,EAAOxN,CAAG,EAEL+M,CACT,CACA,UAAU/M,EAAKF,EAAI4N,EAAW,CAC5B,MAAMC,EAAS,CAACvS,EAAK+Q,KAAS7C,IAAS,CACrC,IAAItI,EACA,OAAOmL,GAAS,SAClBnL,EAAI,KAAK,QAAQ,iCAAiC,CAAC5F,EAAK+Q,CAAI,EAAE,OAAO7C,CAAI,CAAC,EAE1EtI,EAAI,CACF,GAAGmL,CACb,EAEMnL,EAAE,IAAMA,EAAE,KAAO2M,EAAO,IACxB3M,EAAE,KAAOA,EAAE,MAAQ2M,EAAO,KAC1B3M,EAAE,GAAKA,EAAE,IAAM2M,EAAO,GAClB3M,EAAE,YAAc,KAAIA,EAAE,UAAYA,EAAE,WAAa0M,GAAaC,EAAO,WACzE,MAAMjQ,EAAe,KAAK,QAAQ,cAAgB,IAClD,IAAIkQ,EACJ,OAAI5M,EAAE,WAAa,MAAM,QAAQ5F,CAAG,EAClCwS,EAAYxS,EAAI,IAAIS,GAAK,GAAGmF,EAAE,SAAS,GAAGtD,CAAY,GAAG7B,CAAC,EAAE,EAE5D+R,EAAY5M,EAAE,UAAY,GAAGA,EAAE,SAAS,GAAGtD,CAAY,GAAGtC,CAAG,GAAKA,EAE7D,KAAK,EAAEwS,EAAW5M,CAAC,CAC5B,EACA,OAAI7G,GAAS6F,CAAG,EACd2N,EAAO,IAAM3N,EAEb2N,EAAO,KAAO3N,EAEhB2N,EAAO,GAAK7N,EACZ6N,EAAO,UAAYD,EACZC,CACT,CACA,KAAKjP,EAAM,OACT,OAAOG,EAAA,KAAK,aAAL,YAAAA,EAAiB,UAAU,GAAGH,EACvC,CACA,UAAUA,EAAM,OACd,OAAOG,EAAA,KAAK,aAAL,YAAAA,EAAiB,OAAO,GAAGH,EACpC,CACA,oBAAoBoB,EAAI,CACtB,KAAK,QAAQ,UAAYA,CAC3B,CACA,mBAAmBA,EAAId,EAAU,GAAI,CACnC,GAAI,CAAC,KAAK,cACR,YAAK,OAAO,KAAK,kDAAmD,KAAK,SAAS,EAC3E,GAET,GAAI,CAAC,KAAK,WAAa,CAAC,KAAK,UAAU,OACrC,YAAK,OAAO,KAAK,6DAA8D,KAAK,SAAS,EACtF,GAET,MAAMgB,EAAMhB,EAAQ,KAAO,KAAK,kBAAoB,KAAK,UAAU,CAAC,EAC9D6O,EAAc,KAAK,QAAU,KAAK,QAAQ,YAAc,GACxDC,EAAU,KAAK,UAAU,KAAK,UAAU,OAAS,CAAC,EACxD,GAAI9N,EAAI,gBAAkB,SAAU,MAAO,GAC3C,MAAM+N,EAAiB,CAAC1K,EAAGmI,IAAM,CAC/B,MAAMwC,EAAY,KAAK,SAAS,iBAAiB,MAAM,GAAG3K,CAAC,IAAImI,CAAC,EAAE,EAClE,OAAOwC,IAAc,IAAMA,IAAc,GAAKA,IAAc,CAC9D,EACA,GAAIhP,EAAQ,SAAU,CACpB,MAAMiP,EAAYjP,EAAQ,SAAS,KAAM+O,CAAc,EACvD,GAAIE,IAAc,OAAW,OAAOA,CACtC,CAGA,MAFI,QAAK,kBAAkBjO,EAAKF,CAAE,GAC9B,CAAC,KAAK,SAAS,iBAAiB,SAAW,KAAK,QAAQ,WAAa,CAAC,KAAK,QAAQ,yBACnFiO,EAAe/N,EAAKF,CAAE,IAAM,CAAC+N,GAAeE,EAAeD,EAAShO,CAAE,GAE5E,CACA,eAAeA,EAAIiL,EAAU,CAC3B,MAAMgC,EAAW1S,GAAK,EACtB,OAAK,KAAK,QAAQ,IAIdF,GAAS2F,CAAE,IAAGA,EAAK,CAACA,CAAE,GAC1BA,EAAG,QAAQ0L,GAAK,CACV,KAAK,QAAQ,GAAG,QAAQA,CAAC,EAAI,GAAG,KAAK,QAAQ,GAAG,KAAKA,CAAC,CAC5D,CAAC,EACD,KAAK,cAAcH,GAAO,CACxB0B,EAAS,QAAO,EACZhC,GAAUA,EAASM,CAAG,CAC5B,CAAC,EACM0B,IAXDhC,GAAUA,EAAQ,EACf,QAAQ,QAAO,EAW1B,CACA,cAAc7H,EAAM6H,EAAU,CAC5B,MAAMgC,EAAW1S,GAAK,EAClBF,GAAS+I,CAAI,IAAGA,EAAO,CAACA,CAAI,GAChC,MAAMgL,EAAY,KAAK,QAAQ,SAAW,CAAA,EACpCC,EAAUjL,EAAK,OAAOlD,GAAOkO,EAAU,QAAQlO,CAAG,EAAI,GAAK,KAAK,SAAS,cAAc,gBAAgBA,CAAG,CAAC,EACjH,OAAKmO,EAAQ,QAIb,KAAK,QAAQ,QAAUD,EAAU,OAAOC,CAAO,EAC/C,KAAK,cAAc9C,GAAO,CACxB0B,EAAS,QAAO,EACZhC,GAAUA,EAASM,CAAG,CAC5B,CAAC,EACM0B,IARDhC,GAAUA,EAAQ,EACf,QAAQ,QAAO,EAQ1B,CACA,IAAI/K,EAAK,SAEP,GADKA,IAAKA,EAAM,KAAK,qBAAqBnB,EAAA,KAAK,YAAL,YAAAA,EAAgB,QAAS,EAAI,KAAK,UAAU,CAAC,EAAI,KAAK,WAC5F,CAACmB,EAAK,MAAO,MACjB,GAAI,CACF,MAAMqD,EAAI,IAAI,KAAK,OAAOrD,CAAG,EAC7B,GAAIqD,GAAKA,EAAE,YAAa,CACtB,MAAM+K,EAAK/K,EAAE,YAAW,EACxB,GAAI+K,GAAMA,EAAG,UAAW,OAAOA,EAAG,SACpC,CACF,MAAY,CAAC,CACb,MAAMC,EAAU,CAAC,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,MAAO,MAAO,MAAO,KAAM,KAAM,MAAO,MAAO,MAAO,KAAM,MAAO,MAAO,MAAO,MAAO,KAAM,MAAO,KAAK,EACjbpI,IAAgBrH,EAAA,KAAK,WAAL,YAAAA,EAAe,gBAAiB,IAAIsG,GAAakH,IAAK,EAC5E,OAAIpM,EAAI,cAAc,QAAQ,OAAO,EAAI,EAAU,MAC5CqO,EAAQ,QAAQpI,EAAc,wBAAwBjG,CAAG,CAAC,EAAI,IAAMA,EAAI,YAAW,EAAG,QAAQ,OAAO,EAAI,EAAI,MAAQ,KAC9H,CACA,OAAO,eAAehB,EAAU,CAAA,EAAI+L,EAAU,CAC5C,OAAO,IAAI2B,GAAK1N,EAAS+L,CAAQ,CACnC,CACA,cAAc/L,EAAU,GAAI+L,EAAWwB,GAAM,CAC3C,MAAM+B,EAAoBtP,EAAQ,kBAC9BsP,GAAmB,OAAOtP,EAAQ,kBACtC,MAAMuP,EAAgB,CACpB,GAAG,KAAK,QACR,GAAGvP,EAED,QAAS,EAEjB,EACUwP,EAAQ,IAAI9B,GAAK6B,CAAa,EAcpC,IAbIvP,EAAQ,QAAU,QAAaA,EAAQ,SAAW,UACpDwP,EAAM,OAASA,EAAM,OAAO,MAAMxP,CAAO,GAErB,CAAC,QAAS,WAAY,UAAU,EACxC,QAAQ/D,GAAK,CACzBuT,EAAMvT,CAAC,EAAI,KAAKA,CAAC,CACnB,CAAC,EACDuT,EAAM,SAAW,CACf,GAAG,KAAK,QACd,EACIA,EAAM,SAAS,MAAQ,CACrB,mBAAoBA,EAAM,mBAAmB,KAAKA,CAAK,CAC7D,EACQF,EAAmB,CACrB,MAAMG,EAAa,OAAO,KAAK,KAAK,MAAM,IAAI,EAAE,OAAO,CAACC,EAAMrL,KAC5DqL,EAAKrL,CAAC,EAAI,CACR,GAAG,KAAK,MAAM,KAAKA,CAAC,CAC9B,EACQqL,EAAKrL,CAAC,EAAI,OAAO,KAAKqL,EAAKrL,CAAC,CAAC,EAAE,OAAO,CAACsL,EAAKnD,KAC1CmD,EAAInD,CAAC,EAAI,CACP,GAAGkD,EAAKrL,CAAC,EAAEmI,CAAC,CACxB,EACiBmD,GACND,EAAKrL,CAAC,CAAC,EACHqL,GACN,CAAA,CAAE,EACLF,EAAM,MAAQ,IAAI3O,GAAc4O,EAAYF,CAAa,EACzDC,EAAM,SAAS,cAAgBA,EAAM,KACvC,CACA,OAAAA,EAAM,WAAa,IAAI1N,GAAW0N,EAAM,SAAUD,CAAa,EAC/DC,EAAM,WAAW,GAAG,IAAK,CAAC/O,KAAUf,IAAS,CAC3C8P,EAAM,KAAK/O,EAAO,GAAGf,CAAI,CAC3B,CAAC,EACD8P,EAAM,KAAKD,EAAexD,CAAQ,EAClCyD,EAAM,WAAW,QAAUD,EAC3BC,EAAM,WAAW,iBAAiB,SAAS,MAAQ,CACjD,mBAAoBA,EAAM,mBAAmB,KAAKA,CAAK,CAC7D,EACWA,CACT,CACA,QAAS,CACP,MAAO,CACL,QAAS,KAAK,QACd,MAAO,KAAK,MACZ,SAAU,KAAK,SACf,UAAW,KAAK,UAChB,iBAAkB,KAAK,gBAC7B,CACE,CACF,CACA,MAAMI,GAAWlC,GAAK,eAAc,EACpCkC,GAAS,eAAiBlC,GAAK,eAERkC,GAAS,eACpBA,GAAS,IACRA,GAAS,KACAA,GAAS,cACPA,GAAS,gBACrBA,GAAS,IACEA,GAAS,eACdA,GAAS,UACjBA,GAAS,EACJA,GAAS,OACIA,GAAS,oBACVA,GAAS,mBACbA,GAAS,eACVA,GAAS,qOCjnExB,MAAMC,GAAO,CAACC,EAAMtQ,EAAMuQ,EAAKzF,IAAS,aAC7C,MAAM5K,EAAO,CAACqQ,EAAK,CACjB,KAAAvQ,EACA,GAAI8K,GAAQ,CAAA,CAChB,CAAG,EACD,IAAI1K,GAAAC,EAAAiQ,GAAA,YAAAA,EAAM,WAAN,YAAAjQ,EAAgB,SAAhB,MAAAD,EAAwB,QAC1B,OAAOkQ,EAAK,SAAS,OAAO,QAAQpQ,EAAM,OAAQ,kBAAmB,EAAI,EAEvEvE,GAASuE,EAAK,CAAC,CAAC,IAAGA,EAAK,CAAC,EAAI,mBAAmBA,EAAK,CAAC,CAAC,KACvDsN,GAAAC,EAAA6C,GAAA,YAAAA,EAAM,WAAN,YAAA7C,EAAgB,SAAhB,MAAAD,EAAwB,KAC1B8C,EAAK,SAAS,OAAO,KAAK,GAAGpQ,CAAI,EACxB,uBAAS,MAClB,QAAQ,KAAK,GAAGA,CAAI,CAExB,EACMsQ,GAAgB,CAAA,EACTC,GAAW,CAACH,EAAMtQ,EAAMuQ,EAAKzF,IAAS,CAC7CnP,GAAS4U,CAAG,GAAKC,GAAcD,CAAG,IAClC5U,GAAS4U,CAAG,IAAGC,GAAcD,CAAG,EAAI,IAAI,MAC5CF,GAAKC,EAAMtQ,EAAMuQ,EAAKzF,CAAI,EAC5B,EACM4F,GAAY,CAACJ,EAAMK,IAAO,IAAM,CACpC,GAAIL,EAAK,cACPK,EAAE,MACG,CACL,MAAMC,EAAc,IAAM,CACxB,WAAW,IAAM,CACfN,EAAK,IAAI,cAAeM,CAAW,CACrC,EAAG,CAAC,EACJD,EAAE,CACJ,EACAL,EAAK,GAAG,cAAeM,CAAW,CACpC,CACF,EACaC,GAAiB,CAACP,EAAMhP,EAAIqP,IAAO,CAC9CL,EAAK,eAAehP,EAAIoP,GAAUJ,EAAMK,CAAE,CAAC,CAC7C,EACaG,GAAgB,CAACR,EAAM9O,EAAKF,EAAIqP,IAAO,CAElD,GADIhV,GAAS2F,CAAE,IAAGA,EAAK,CAACA,CAAE,GACtBgP,EAAK,QAAQ,SAAWA,EAAK,QAAQ,QAAQ,QAAQ9O,CAAG,EAAI,GAAI,OAAOqP,GAAeP,EAAMhP,EAAIqP,CAAE,EACtGrP,EAAG,QAAQ0L,GAAK,CACVsD,EAAK,QAAQ,GAAG,QAAQtD,CAAC,EAAI,GAAGsD,EAAK,QAAQ,GAAG,KAAKtD,CAAC,CAC5D,CAAC,EACDsD,EAAK,cAAc9O,EAAKkP,GAAUJ,EAAMK,CAAE,CAAC,CAC7C,EACaI,GAAqB,CAACzP,EAAIgP,EAAM9P,EAAU,CAAA,IACjD,CAAC8P,EAAK,WAAa,CAACA,EAAK,UAAU,QACrCG,GAASH,EAAM,eAAgB,yCAA0C,CACvE,UAAWA,EAAK,SACtB,CAAK,EACM,IAEFA,EAAK,mBAAmBhP,EAAI,CACjC,IAAKd,EAAQ,IACb,SAAU,CAACwQ,EAAczB,IAAmB,CAC1C,GAAI/O,EAAQ,UAAYA,EAAQ,SAAS,QAAQ,kBAAkB,EAAI,IAAMwQ,EAAa,SAAS,iBAAiB,SAAWA,EAAa,sBAAwB,CAACzB,EAAeyB,EAAa,qBAAsB1P,CAAE,EAAG,MAAO,EACrO,CACJ,CAAG,EAGU3F,GAAWC,GAAO,OAAOA,GAAQ,SACjCqV,GAAWrV,GAAO,OAAOA,GAAQ,UAAYA,IAAQ,KC7D5DsV,GAAkB,oGAClBC,GAAe,CACnB,QAAS,IACT,QAAS,IACT,OAAQ,IACR,QAAS,IACT,OAAQ,IACR,QAAS,IACT,SAAU,IACV,QAAS,IACT,SAAU,IACV,QAAS,IACT,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,QAAS,IACT,SAAU,IACV,WAAY,IACZ,UAAW,IACX,SAAU,IACV,QAAS,GACX,EACMC,GAAqB3U,GAAK0U,GAAa1U,CAAC,ECtB9C,IAAI4U,GAAiB,CACnB,SAAU,kBACV,cAAe,GACf,oBAAqB,GACrB,2BAA4B,GAC5B,mBAAoB,GACpB,2BAA4B,CAAC,KAAM,SAAU,IAAK,GAAG,EACrD,YAAa,GACb,SDesBC,GAAQA,EAAK,QAAQJ,GAAiBE,EAAkB,CCdhF,EACO,MAAMG,GAAc,CAAC/Q,EAAU,KAAO,CAC3C6Q,GAAiB,CACf,GAAGA,GACH,GAAG7Q,CACP,CACA,EACagR,GAAc,IAAMH,GCjBjC,IAAIL,GACG,MAAMS,GAAUrB,GAAY,CACjCY,GAAeZ,CACjB,EACasB,GAAU,IAAMV,GCFhBW,GAAmB,CAC9B,KAAM,WACN,KAAKvB,EAAU,CACbmB,GAAYnB,EAAS,QAAQ,KAAK,EAClCqB,GAAQrB,CAAQ,CAClB,CACF,ECHawB,GAAcC,EAAAA,cAAa,EACjC,MAAMC,EAAiB,CAC5B,aAAc,CACZ,KAAK,eAAiB,CAAA,CACxB,CACA,kBAAkBnP,EAAY,CAC5BA,EAAW,QAAQrB,GAAM,CAClB,KAAK,eAAeA,CAAE,IAAG,KAAK,eAAeA,CAAE,EAAI,GAC1D,CAAC,CACH,CACA,mBAAoB,CAClB,OAAO,OAAO,KAAK,KAAK,cAAc,CACxC,CACF,CCfA,MAAMyQ,GAAc,CAAChU,EAAOiU,IAAW,CACrC,MAAMC,EAAMC,EAAAA,OAAM,EAClBC,OAAAA,EAAAA,UAAU,IAAM,CACdF,EAAI,QAAiClU,CACvC,EAAG,CAACA,EAAOiU,CAAM,CAAC,EACXC,EAAI,OACb,EACMG,GAAa,CAAC9B,EAAMtL,EAAU9B,EAAWgM,IAAcoB,EAAK,UAAUtL,EAAU9B,EAAWgM,CAAS,EACpGmD,GAAe,CAAC/B,EAAMtL,EAAU9B,EAAWgM,IAAcoD,EAAAA,YAAYF,GAAW9B,EAAMtL,EAAU9B,EAAWgM,CAAS,EAAG,CAACoB,EAAMtL,EAAU9B,EAAWgM,CAAS,CAAC,EACtJqD,GAAiB,CAACjR,EAAIkR,EAAQ,KAAO,WAChD,KAAM,CACJ,KAAMC,CACV,EAAMD,EACE,CACJ,KAAME,EACN,UAAWC,CACf,EAAMC,EAAAA,WAAWhB,EAAW,GAAK,CAAA,EACzBtB,EAAOmC,GAAiBC,GAAmBhB,GAAO,EAExD,GADIpB,GAAQ,CAACA,EAAK,mBAAkBA,EAAK,iBAAmB,IAAIwB,IAC5D,CAACxB,EAAM,CACTG,GAASH,EAAM,sBAAuB,wFAAwF,EAC9H,MAAMuC,EAAY,CAACxV,EAAGyV,IAChBnX,GAASmX,CAAkB,EAAUA,EACrC7B,GAAS6B,CAAkB,GAAKnX,GAASmX,EAAmB,YAAY,EAAUA,EAAmB,aAClG,MAAM,QAAQzV,CAAC,EAAIA,EAAEA,EAAE,OAAS,CAAC,EAAIA,EAExC0V,EAAc,CAACF,EAAW,CAAA,EAAI,EAAK,EACzC,OAAAE,EAAY,EAAIF,EAChBE,EAAY,KAAO,CAAA,EACnBA,EAAY,MAAQ,GACbA,CACT,EACI1S,EAAAiQ,EAAK,QAAQ,QAAb,MAAAjQ,EAAoB,MAAMoQ,GAASH,EAAM,oBAAqB,qHAAqH,EACvL,MAAM0C,EAAc,CAClB,GAAGxB,GAAW,EACd,GAAGlB,EAAK,QAAQ,MAChB,GAAGkC,CACP,EACQ,CACJ,YAAAS,EACA,UAAA/D,CACJ,EAAM8D,EACJ,IAAIrQ,EAAarB,EACjBqB,EAAahH,GAASgH,CAAU,EAAI,CAACA,CAAU,EAAIA,GAAc,CAAC,aAAa,GAC/E8K,GAAArN,EAAAkQ,EAAK,kBAAiB,oBAAtB,MAAA7C,EAAA,KAAArN,EAA0CuC,GAC1C,MAAMuQ,GAAS5C,EAAK,eAAiBA,EAAK,uBAAyB3N,EAAW,MAAMqK,GAAK+D,GAAmB/D,EAAGsD,EAAM0C,CAAW,CAAC,EAC3HG,EAAWd,GAAa/B,EAAMkC,EAAM,KAAO,KAAMQ,EAAY,SAAW,WAAarQ,EAAaA,EAAW,CAAC,EAAGuM,CAAS,EAC1HkE,EAAO,IAAMD,EACbE,EAAU,IAAMjB,GAAW9B,EAAMkC,EAAM,KAAO,KAAMQ,EAAY,SAAW,WAAarQ,EAAaA,EAAW,CAAC,EAAGuM,CAAS,EAC7H,CAAC1S,EAAG8W,CAAI,EAAIC,EAAAA,SAASH,CAAI,EAC/B,IAAII,EAAW7Q,EAAW,KAAI,EAC1B6P,EAAM,MAAKgB,EAAW,GAAGhB,EAAM,GAAG,GAAGgB,CAAQ,IACjD,MAAMC,EAAmB1B,GAAYyB,CAAQ,EACvCE,EAAYxB,EAAAA,OAAO,EAAI,EAC7BC,EAAAA,UAAU,IAAM,CACd,KAAM,CACJ,SAAAwB,EACA,cAAAC,CACN,EAAQZ,EACJU,EAAU,QAAU,GAChB,CAACR,GAAS,CAACD,IACTT,EAAM,IACR1B,GAAcR,EAAMkC,EAAM,IAAK7P,EAAY,IAAM,CAC3C+Q,EAAU,SAASJ,EAAKD,CAAO,CACrC,CAAC,EAEDxC,GAAeP,EAAM3N,EAAY,IAAM,CACjC+Q,EAAU,SAASJ,EAAKD,CAAO,CACrC,CAAC,GAGDH,GAASO,GAAoBA,IAAqBD,GAAYE,EAAU,SAC1EJ,EAAKD,CAAO,EAEd,MAAMQ,EAAa,IAAM,CACnBH,EAAU,SAASJ,EAAKD,CAAO,CACrC,EACA,OAAIM,IAAUrD,GAAA,MAAAA,EAAM,GAAGqD,EAAUE,IAC7BD,IAAetD,GAAA,MAAAA,EAAM,MAAM,GAAGsD,EAAeC,IAC1C,IAAM,CACXH,EAAU,QAAU,GAChBpD,GAAQqD,IAAUA,GAAA,MAAAA,EAAU,MAAM,KAAK,QAAQrW,GAAKgT,EAAK,IAAIhT,EAAGuW,CAAU,IAC1ED,GAAiBtD,GAAMsD,EAAc,MAAM,GAAG,EAAE,QAAQtW,GAAKgT,EAAK,MAAM,IAAIhT,EAAGuW,CAAU,CAAC,CAChG,CACF,EAAG,CAACvD,EAAMkD,CAAQ,CAAC,EACnBrB,EAAAA,UAAU,IAAM,CACVuB,EAAU,SAAWR,GACvBI,EAAKF,CAAI,CAEb,EAAG,CAAC9C,EAAMpB,EAAWgE,CAAK,CAAC,EAC3B,MAAMrF,EAAM,CAACrR,EAAG8T,EAAM4C,CAAK,EAK3B,GAJArF,EAAI,EAAIrR,EACRqR,EAAI,KAAOyC,EACXzC,EAAI,MAAQqF,EACRA,GACA,CAACA,GAAS,CAACD,EAAa,OAAOpF,EACnC,MAAM,IAAI,QAAQ5R,GAAW,CACvBuW,EAAM,IACR1B,GAAcR,EAAMkC,EAAM,IAAK7P,EAAY,IAAM1G,GAAS,EAE1D4U,GAAeP,EAAM3N,EAAY,IAAM1G,EAAO,CAAE,CAEpD,CAAC,CACH,EC1GM,CACN,MAAE6X,GACA,QAAAC,EACF,EAAI,CAAA,EACJ,SAASC,GAASpY,EAAK,CACrB,OAAAmY,GAAQ,KAAKD,GAAM,KAAK,UAAW,CAAC,EAAG5V,GAAU,CAC/C,GAAIA,EACF,UAAWE,KAAQF,EACbtC,EAAIwC,CAAI,IAAM,SAAWxC,EAAIwC,CAAI,EAAIF,EAAOE,CAAI,EAG1D,CAAC,EACMxC,CACT,CACA,SAASqY,GAAOC,EAAO,CACrB,OAAI,OAAOA,GAAU,SAAiB,GAGlB,CAAC,kBAAmB,uBAAwB,uBAAwB,2BAA4B,kBAAmB,gBAAiB,mBAAoB,aAAc,cAAe,oBAAqB,wBAAyB,oBAAqB,YAAY,EACrQ,KAAKvV,GAAWA,EAAQ,KAAKuV,CAAK,CAAC,CACxD,CAGA,MAAMC,GAAqB,wCACrBC,GAAkB,SAAU3I,EAAMtD,EAAK,CAI3C,MAAM1F,EAHQ,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAChF,KAAM,GACV,EAEQ1E,EAAQ,mBAAmBoK,CAAG,EACpC,IAAI7J,EAAM,GAAGmN,CAAI,IAAI1N,CAAK,GAC1B,GAAI0E,EAAI,OAAS,EAAG,CAClB,MAAM4R,EAAS5R,EAAI,OAAS,EAC5B,GAAI,OAAO,MAAM4R,CAAM,EAAG,MAAM,IAAI,MAAM,2BAA2B,EACrE/V,GAAO,aAAa,KAAK,MAAM+V,CAAM,CAAC,EACxC,CACA,GAAI5R,EAAI,OAAQ,CACd,GAAI,CAAC0R,GAAmB,KAAK1R,EAAI,MAAM,EACrC,MAAM,IAAI,UAAU,0BAA0B,EAEhDnE,GAAO,YAAYmE,EAAI,MAAM,EAC/B,CACA,GAAIA,EAAI,KAAM,CACZ,GAAI,CAAC0R,GAAmB,KAAK1R,EAAI,IAAI,EACnC,MAAM,IAAI,UAAU,wBAAwB,EAE9CnE,GAAO,UAAUmE,EAAI,IAAI,EAC3B,CACA,GAAIA,EAAI,QAAS,CACf,GAAI,OAAOA,EAAI,QAAQ,aAAgB,WACrC,MAAM,IAAI,UAAU,2BAA2B,EAEjDnE,GAAO,aAAamE,EAAI,QAAQ,YAAW,CAAE,EAC/C,CAGA,GAFIA,EAAI,WAAUnE,GAAO,cACrBmE,EAAI,SAAQnE,GAAO,YACnBmE,EAAI,SAEN,OADiB,OAAOA,EAAI,UAAa,SAAWA,EAAI,SAAS,cAAgBA,EAAI,SACrE,CACd,IAAK,GACHnE,GAAO,oBACP,MACF,IAAK,MACHA,GAAO,iBACP,MACF,IAAK,SACHA,GAAO,oBACP,MACF,IAAK,OACHA,GAAO,kBACP,MACF,QACE,MAAM,IAAI,UAAU,4BAA4B,CACxD,CAEE,OAAImE,EAAI,cAAanE,GAAO,iBACrBA,CACT,EACMgW,GAAS,CACb,OAAO7I,EAAM1N,EAAOwW,EAASC,EAAQ,CACnC,IAAIC,EAAgB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CACtF,KAAM,IACN,SAAU,QAChB,EACQF,IACFE,EAAc,QAAU,IAAI,KAC5BA,EAAc,QAAQ,QAAQA,EAAc,QAAQ,UAAYF,EAAU,GAAK,GAAI,GAEjFC,IAAQC,EAAc,OAASD,GACnC,SAAS,OAASJ,GAAgB3I,EAAM1N,EAAO0W,CAAa,CAC9D,EACA,KAAKhJ,EAAM,CACT,MAAMiJ,EAAS,GAAGjJ,CAAI,IAChBkJ,EAAK,SAAS,OAAO,MAAM,GAAG,EACpC,QAAShV,EAAI,EAAGA,EAAIgV,EAAG,OAAQhV,IAAK,CAClC,IAAIP,EAAIuV,EAAGhV,CAAC,EACZ,KAAOP,EAAE,OAAO,CAAC,IAAM,KAAKA,EAAIA,EAAE,UAAU,EAAGA,EAAE,MAAM,EACvD,GAAIA,EAAE,QAAQsV,CAAM,IAAM,EAAG,OAAOtV,EAAE,UAAUsV,EAAO,OAAQtV,EAAE,MAAM,CACzE,CACA,OAAO,IACT,EACA,OAAOqM,EAAM+I,EAAQ,CACnB,KAAK,OAAO/I,EAAM,GAAI,GAAI+I,CAAM,CAClC,CACF,EACA,IAAII,GAAW,CACb,KAAM,SAEN,OAAOC,EAAM,CACX,GAAI,CACF,aAAAC,CACN,EAAQD,EACJ,GAAIC,GAAgB,OAAO,SAAa,IACtC,OAAOR,GAAO,KAAKQ,CAAY,GAAK,MAGxC,EAEA,kBAAkBtT,EAAKuT,EAAO,CAC5B,GAAI,CACF,aAAAD,EACA,cAAAE,EACA,aAAAC,EACA,cAAAR,CACN,EAAQM,EACAD,GAAgB,OAAO,SAAa,KACtCR,GAAO,OAAOQ,EAActT,EAAKwT,EAAeC,EAAcR,CAAa,CAE/E,CACF,EAEIS,GAAc,CAChB,KAAM,cAEN,OAAOL,EAAM,OACX,GAAI,CACF,kBAAAM,CACN,EAAQN,EACAnP,EACJ,GAAI,OAAO,OAAW,IAAa,CACjC,GAAI,CACF,OAAA0P,CACR,EAAU,OAAO,SACP,CAAC,OAAO,SAAS,UAAU/U,EAAA,OAAO,SAAS,OAAhB,YAAAA,EAAsB,QAAQ,MAAO,KAClE+U,EAAS,OAAO,SAAS,KAAK,UAAU,OAAO,SAAS,KAAK,QAAQ,GAAG,CAAC,GAG3E,MAAMC,EADQD,EAAO,UAAU,CAAC,EACX,MAAM,GAAG,EAC9B,QAASzV,EAAI,EAAGA,EAAI0V,EAAO,OAAQ1V,IAAK,CACtC,MAAM2V,EAAMD,EAAO1V,CAAC,EAAE,QAAQ,GAAG,EAC7B2V,EAAM,GACID,EAAO1V,CAAC,EAAE,UAAU,EAAG2V,CAAG,IAC1BH,IACVzP,EAAQ2P,EAAO1V,CAAC,EAAE,UAAU2V,EAAM,CAAC,EAGzC,CACF,CACA,OAAO5P,CACT,CACF,EAEI6P,GAAO,CACT,KAAM,OAEN,OAAOV,EAAM,OACX,GAAI,CACF,WAAAW,EACA,oBAAAC,CACN,EAAQZ,EACAnP,EACJ,GAAI,OAAO,OAAW,IAAa,CACjC,KAAM,CACJ,KAAA6P,CACR,EAAU,OAAO,SACX,GAAIA,GAAQA,EAAK,OAAS,EAAG,CAC3B,MAAMG,EAAQH,EAAK,UAAU,CAAC,EAC9B,GAAIC,EAAY,CACd,MAAMH,EAASK,EAAM,MAAM,GAAG,EAC9B,QAAS/V,EAAI,EAAGA,EAAI0V,EAAO,OAAQ1V,IAAK,CACtC,MAAM2V,EAAMD,EAAO1V,CAAC,EAAE,QAAQ,GAAG,EAC7B2V,EAAM,GACID,EAAO1V,CAAC,EAAE,UAAU,EAAG2V,CAAG,IAC1BE,IACV9P,EAAQ2P,EAAO1V,CAAC,EAAE,UAAU2V,EAAM,CAAC,EAGzC,CACF,CACA,GAAI5P,EAAO,OAAOA,EAClB,GAAI,CAACA,GAAS+P,EAAsB,GAAI,CACtC,MAAMzQ,EAAWuQ,EAAK,MAAM,iBAAiB,EAC7C,OAAK,MAAM,QAAQvQ,CAAQ,GAEpB3E,EAAA2E,EADO,OAAOyQ,GAAwB,SAAWA,EAAsB,CACzD,IAAd,YAAApV,EAAiB,QAAQ,IAAK,IAFP,MAGhC,CACF,CACF,CACA,OAAOqF,CACT,CACF,EAEA,IAAIiQ,GAAyB,KAC7B,MAAMC,GAAwB,IAAM,CAClC,GAAID,KAA2B,KAAM,OAAOA,GAC5C,GAAI,CAEF,GADAA,GAAyB,OAAO,OAAW,KAAe,OAAO,eAAiB,KAC9E,CAACA,GACH,MAAO,GAET,MAAME,EAAU,wBAChB,OAAO,aAAa,QAAQA,EAAS,KAAK,EAC1C,OAAO,aAAa,WAAWA,CAAO,CACxC,MAAY,CACVF,GAAyB,EAC3B,CACA,OAAOA,EACT,EACA,IAAIG,GAAe,CACjB,KAAM,eAEN,OAAOjB,EAAM,CACX,GAAI,CACF,mBAAAkB,CACN,EAAQlB,EACJ,GAAIkB,GAAsBH,KACxB,OAAO,OAAO,aAAa,QAAQG,CAAkB,GAAK,MAG9D,EAEA,kBAAkBvU,EAAKuT,EAAO,CAC5B,GAAI,CACF,mBAAAgB,CACN,EAAQhB,EACAgB,GAAsBH,MACxB,OAAO,aAAa,QAAQG,EAAoBvU,CAAG,CAEvD,CACF,EAEA,IAAIwU,GAA2B,KAC/B,MAAMC,GAA0B,IAAM,CACpC,GAAID,KAA6B,KAAM,OAAOA,GAC9C,GAAI,CAEF,GADAA,GAA2B,OAAO,OAAW,KAAe,OAAO,iBAAmB,KAClF,CAACA,GACH,MAAO,GAET,MAAMH,EAAU,wBAChB,OAAO,eAAe,QAAQA,EAAS,KAAK,EAC5C,OAAO,eAAe,WAAWA,CAAO,CAC1C,MAAY,CACVG,GAA2B,EAC7B,CACA,OAAOA,EACT,EACA,IAAIE,GAAiB,CACnB,KAAM,iBACN,OAAOrB,EAAM,CACX,GAAI,CACF,qBAAAsB,CACN,EAAQtB,EACJ,GAAIsB,GAAwBF,KAC1B,OAAO,OAAO,eAAe,QAAQE,CAAoB,GAAK,MAGlE,EACA,kBAAkB3U,EAAKuT,EAAO,CAC5B,GAAI,CACF,qBAAAoB,CACN,EAAQpB,EACAoB,GAAwBF,MAC1B,OAAO,eAAe,QAAQE,EAAsB3U,CAAG,CAE3D,CACF,EAEI4U,GAAc,CAChB,KAAM,YACN,OAAO5V,EAAS,CACd,MAAMkF,EAAQ,CAAA,EACd,GAAI,OAAO,UAAc,IAAa,CACpC,KAAM,CACJ,UAAA4G,EACA,aAAA+J,EACA,SAAArR,CACR,EAAU,UACJ,GAAIsH,EAEF,QAAS3M,EAAI,EAAGA,EAAI2M,EAAU,OAAQ3M,IACpC+F,EAAM,KAAK4G,EAAU3M,CAAC,CAAC,EAGvB0W,GACF3Q,EAAM,KAAK2Q,CAAY,EAErBrR,GACFU,EAAM,KAAKV,CAAQ,CAEvB,CACA,OAAOU,EAAM,OAAS,EAAIA,EAAQ,MACpC,CACF,EAEI4Q,GAAU,CACZ,KAAM,UAEN,OAAOzB,EAAM,CACX,GAAI,CACF,QAAAyB,CACN,EAAQzB,EACAnP,EACJ,MAAM6Q,EAAkBD,IAAY,OAAO,SAAa,IAAc,SAAS,gBAAkB,MACjG,OAAIC,GAAmB,OAAOA,EAAgB,cAAiB,aAC7D7Q,EAAQ6Q,EAAgB,aAAa,MAAM,GAEtC7Q,CACT,CACF,EAEI3I,GAAO,CACT,KAAM,OAEN,OAAO8X,EAAM,OACX,GAAI,CACF,oBAAA2B,CACN,EAAQ3B,EACJ,GAAI,OAAO,OAAW,IAAa,OACnC,MAAM7P,EAAW,OAAO,SAAS,SAAS,MAAM,iBAAiB,EACjE,OAAK,MAAM,QAAQA,CAAQ,GAEpB3E,EAAA2E,EADO,OAAOwR,GAAwB,SAAWA,EAAsB,CACzD,IAAd,YAAAnW,EAAiB,QAAQ,IAAK,IAFP,MAGhC,CACF,EAEIoW,GAAY,CACd,KAAM,YACN,OAAO5B,EAAM,SACX,GAAI,CACF,yBAAA6B,CACN,EAAQ7B,EAEJ,MAAM8B,EAAmC,OAAOD,GAA6B,SAAWA,EAA2B,EAAI,EAIjH1R,EAAW,OAAO,OAAW,OAAe5E,GAAAC,EAAA,OAAO,WAAP,YAAAA,EAAiB,WAAjB,YAAAD,EAA2B,MAAM,2DAGnF,GAAK4E,EAEL,OAAOA,EAAS2R,CAAgC,CAClD,CACF,EAGA,IAAIC,GAAa,GACjB,GAAI,CAEF,SAAS,OACTA,GAAa,EAEf,MAAY,CAAC,CACb,MAAMC,GAAQ,CAAC,cAAe,SAAU,eAAgB,iBAAkB,YAAa,SAAS,EAC3FD,IAAYC,GAAM,OAAO,EAAG,CAAC,EAClC,MAAMrF,GAAc,KAAO,CAC3B,MAAEqF,GACA,kBAAmB,MACnB,aAAc,UACd,mBAAoB,aACpB,qBAAsB,aAEtB,OAAQ,CAAC,cAAc,EACvB,gBAAiB,CAAC,QAAQ,EAI1B,wBAAyBhS,GAAKA,CAChC,GACA,MAAMiS,EAAQ,CACZ,YAAYvU,EAAU,CACpB,IAAI/B,EAAU,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAA,EAClF,KAAK,KAAO,mBACZ,KAAK,UAAY,CAAA,EACjB,KAAK,KAAK+B,EAAU/B,CAAO,CAC7B,CACA,MAAO,CACL,IAAI+B,EAAW,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CACjF,cAAe,CAAA,CACrB,EACQ/B,EAAU,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAA,EAC9EwS,EAAc,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAA,EACtF,KAAK,SAAWzQ,EAChB,KAAK,QAAUyR,GAASxT,EAAS,KAAK,SAAW,CAAA,EAAIgR,IAAa,EAC9D,OAAO,KAAK,QAAQ,yBAA4B,UAAY,KAAK,QAAQ,wBAAwB,QAAQ,OAAO,EAAI,KACtH,KAAK,QAAQ,wBAA0B3M,GAAKA,EAAE,QAAQ,IAAK,GAAG,GAI5D,KAAK,QAAQ,qBAAoB,KAAK,QAAQ,oBAAsB,KAAK,QAAQ,oBACrF,KAAK,YAAcmO,EACnB,KAAK,YAAY4B,EAAQ,EACzB,KAAK,YAAYM,EAAW,EAC5B,KAAK,YAAYY,EAAY,EAC7B,KAAK,YAAYI,EAAc,EAC/B,KAAK,YAAYE,EAAW,EAC5B,KAAK,YAAYE,EAAO,EACxB,KAAK,YAAYvZ,EAAI,EACrB,KAAK,YAAY0Z,EAAS,EAC1B,KAAK,YAAYlB,EAAI,CACvB,CACA,YAAYwB,EAAU,CACpB,YAAK,UAAUA,EAAS,IAAI,EAAIA,EACzB,IACT,CACA,QAAS,CACP,IAAIC,EAAiB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,KAAK,QAAQ,MAClGC,EAAW,CAAA,EASf,OARAD,EAAe,QAAQE,GAAgB,CACrC,GAAI,KAAK,UAAUA,CAAY,EAAG,CAChC,IAAIC,EAAS,KAAK,UAAUD,CAAY,EAAE,OAAO,KAAK,OAAO,EACzDC,GAAU,OAAOA,GAAW,WAAUA,EAAS,CAACA,CAAM,GACtDA,IAAQF,EAAWA,EAAS,OAAOE,CAAM,EAC/C,CACF,CAAC,EACDF,EAAWA,EAAS,OAAOG,GAAwBA,GAAM,MAAQ,CAACnD,GAAOmD,CAAC,CAAC,EAAE,IAAIA,GAAK,KAAK,QAAQ,wBAAwBA,CAAC,CAAC,EACzH,KAAK,UAAY,KAAK,SAAS,eAAiB,KAAK,SAAS,cAAc,sBAA8BH,EACvGA,EAAS,OAAS,EAAIA,EAAS,CAAC,EAAI,IAC7C,CACA,kBAAkBzV,EAAK,CACrB,IAAI6V,EAAS,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,KAAK,QAAQ,OACzFA,IACD,KAAK,QAAQ,iBAAmB,KAAK,QAAQ,gBAAgB,QAAQ7V,CAAG,EAAI,IAChF6V,EAAO,QAAQC,GAAa,CACtB,KAAK,UAAUA,CAAS,GAAG,KAAK,UAAUA,CAAS,EAAE,kBAAkB9V,EAAK,KAAK,OAAO,CAC9F,CAAC,EACH,CACF,CACAsV,GAAQ,KAAO,mBCrbR,MAAMS,GAAgB,GAChBC,GAAY,GACZC,GAAY,IAIZC,GAAsB,CAAC,CAAE,IAAK,KAAM,MAAO,WAAa,CAAE,IAAK,KAAM,MAAO,UAAW,EACvFC,GAA+B,aAErC,IAAKC,IAAAA,IACRA,EAAAA,EAAA,SAAA,CAAA,EAAA,WACAA,EAAAA,EAAA,QAAA,CAAA,EAAA,UAFQA,IAAAA,IAAA,CAAA,CAAA,qmUCHNC,GAAiB,CACnB,MAAO,CAAC,iBAAkB,WAAW,EACrC,qBAAsBF,GACtB,OAAQ,CAAC,gBAAgB,CAC7B,EACMhW,GAAY,CAChB,GAAI,CAAE,OAAQmW,EAAA,EACd,GAAI,CAAE,OAAQC,EAAA,CAChB,EAGAzH,GACG,IAAIqB,EAAgB,EACpB,IAAIqG,EAAgB,EACpB,KAAK,CACJ,cAAeN,GAAoB,IAAIO,GAAQA,EAAK,GAAG,EACvD,UAAAtW,GACA,GAAGkW,GACH,YAAa,KACb,MAAO,GACP,UAAW,SACX,cAAe,CACb,YAAa,EAAA,CAEnB,CAAC,EChCD,MAAMK,GAAmBC,GAAgB,CACvC,IAAIC,EACJ,MAAMC,EAA4B,IAAI,IAChCC,EAAW,CAACC,EAASC,IAAY,CACrC,MAAMC,EAAY,OAAOF,GAAY,WAAaA,EAAQH,CAAK,EAAIG,EACnE,GAAI,CAAC,OAAO,GAAGE,EAAWL,CAAK,EAAG,CAChC,MAAMM,EAAgBN,EACtBA,EAASI,IAA4B,OAAOC,GAAc,UAAYA,IAAc,MAAQA,EAAY,OAAO,OAAO,CAAA,EAAIL,EAAOK,CAAS,EAC1IJ,EAAU,QAASrX,GAAaA,EAASoX,EAAOM,CAAa,CAAC,CAChE,CACF,EACMC,EAAW,IAAMP,EAMjBQ,EAAM,CAAE,SAAAN,EAAU,SAAAK,EAAU,gBALV,IAAME,EAKqB,UAJhC7X,IACjBqX,EAAU,IAAIrX,CAAQ,EACf,IAAMqX,EAAU,OAAOrX,CAAQ,EAEoB,EACtD6X,EAAeT,EAAQD,EAAYG,EAAUK,EAAUC,CAAG,EAChE,OAAOA,CACT,EACME,GAAeX,GAAgBA,EAAcD,GAAgBC,CAAW,EAAID,GClB5Ea,GAAYC,GAAQA,EAC1B,SAASC,GAASL,EAAKM,EAAWH,GAAU,CAC1C,MAAMjF,EAAQqF,EAAM,qBAClBP,EAAI,UACJ,IAAMM,EAASN,EAAI,UAAU,EAC7B,IAAMM,EAASN,EAAI,gBAAe,CAAE,CACxC,EACEO,OAAAA,EAAM,cAAcrF,CAAK,EAClBA,CACT,CACA,MAAMsF,GAAcjB,GAAgB,CAClC,MAAMS,EAAME,GAAYX,CAAW,EAC7BkB,EAAiBH,GAAaD,GAASL,EAAKM,CAAQ,EAC1D,cAAO,OAAOG,EAAeT,CAAG,EACzBS,CACT,EACMC,GAAUnB,GAAgBA,EAAciB,GAAWjB,CAAW,EAAIiB,GChBjE,SAASG,GACdlN,EACA,CACA,MAAMmN,EAAqBnN,EAI3BmN,EAAmB,IAAM,CAAA,EAGzB,MAAMzW,EAAO,OAAO,KAAKsJ,EAAM,UAAU,EAEzC,UAAWzP,KAAOmG,EAEhByW,EAAmB,IAAI5c,CAAG,EAAI,IAAMyP,EAAO9P,GAAMA,EAAEK,CAAG,CAAC,EAGzD,OAAO4c,CACT,CCgBO,MAAMC,GAAcC,IAAgC,CAAC,KAAM,OAAQ,OAAAA,CAAA,GAC7DC,GAAwBD,IAA0C,CAAC,KAAM,iBAAkB,OAAAA,CAAA,GAC3FE,GAAgBF,IAAkC,CAAC,KAAM,SAAU,OAAAA,CAAA,GACnEG,GAA0BH,IAA4C,CAAC,KAAM,mBAAoB,OAAAA,CAAA,GC0BvG,MAAMI,WAAmB,KAAM,CAGlC,YAAY3Z,EAAc4Z,EAAiB,CACvC,MAAMA,CAAO,EAHjBC,GAAA,aAII,KAAK,KAAO7Z,EACZ,OAAO,eAAe,KAAM2Z,GAAW,SAAS,CACpD,CACJ,CCxEO,IAAKG,IAAAA,IACRA,EAAAA,EAAA,QAAA,CAAA,EAAA,UACAA,EAAAA,EAAA,OAAA,CAAA,EAAA,SACAA,EAAAA,EAAA,QAAA,CAAA,EAAA,UAHQA,IAAAA,IAAA,CAAA,CAAA,ECqBZ,MAAMC,GAAuBZ,GAAwBa,IAAS,CAC1D,cAAe,KACf,iBAAmBC,GAA0BD,EAAI,KAAO,CAAE,cAAeC,GAAS,CACtF,EAAE,EAuBIC,GAA6Bf,GAA8Ba,IAAS,CACtE,MAAO,KACP,WAAY,KACZ,WAAY,CAAA,EACZ,UAAW,CAAA,EACX,aAAc,OACd,iBAAkB,OAClB,WAAY,OAEZ,SAAWG,GAAwBH,EAAI,KAAO,CAAE,MAAAG,GAAe,EAE/D,cAAgBC,GAAuBJ,EAAI,KAAO,CAAE,WAAYI,GAAM,EACtE,cAAgBC,GAA2CL,EAAK/B,IAAW,CACvE,WAAY,CAAE,GAAGA,EAAM,WAAY,GAAGoC,CAAA,CAAW,EACnD,EACF,aAAc,CAACC,EAA2BjC,IAAqB2B,EAAK/B,IAAW,CAC3E,UAAWI,EAAUiC,EAAY,CAAE,GAAGrC,EAAM,UAAW,GAAGqC,CAAA,CAAU,EACtE,EACF,gBAAkBC,GAAyDP,EAAI,KAAO,CAAE,aAAAO,GAAe,EACvG,oBAAsBC,GAA6DR,EAAI,KAAO,CAAE,iBAAAQ,GAAmB,EACnH,cAAe,CAACC,EAA4CpC,IAAqB2B,EAAK/B,IAAW,CAC7F,WAAYI,EAAUoC,EAAa,CAAC,GAAGxC,EAAM,YAAc,CAAA,EAAI,GAAIwC,GAAc,CAAA,CAAG,CAAA,EACtF,CACN,EAAE,EAqBWC,GAAyBvB,GAA6B,CAACa,EAAKvM,KAAS,CAC9E,UAAW,EACX,YAAa,EACb,eAAgB,CAAA,EAEhB,eAAgB,CAAC,CAAE,UAAAkN,EAAW,eAAAC,EAAgB,YAAAC,KAAkB,CAC5Db,EAAI,CACA,UAAAW,EACA,eAAAC,EACA,YAAAC,EACA,kBAAmB,IAAA,CACtB,CACL,EAEA,SAAWC,GAASd,EAAI,CACpB,YAAa,KAAK,IAAI,EAAG,KAAK,IAAIc,EAAMrN,EAAA,EAAM,SAAS,CAAC,CAAA,CAC3D,EACD,aAAc,IAAMA,IAAM,SAASA,EAAA,EAAM,YAAc,CAAC,EACxD,iBAAkB,IAAMA,IAAM,SAASA,EAAA,EAAM,YAAc,CAAC,EAE5D,YAAcsN,GAAc,CACxB,MAAMD,EAAOrN,IAAM,eAAesN,CAAS,EACvCD,GACAd,EAAI,CACA,kBAAmB,CAAE,KAAM,UAAW,OAAQe,CAAA,EAC9C,YAAaD,CAAA,CAChB,CAET,EAEA,kBAAmB,KAEnB,uBAAwB,IAAMd,EAAI,CAAE,kBAAmB,KAAM,CACjE,EAAE,EA0BIgB,GAAsB7B,GAAuBa,IAAS,CACxD,UAAW,GACX,SAAU,KACV,MAAO5C,GACP,yBAA0B,GAC1B,YAAa,GACb,gBAAiB,YACjB,qBAAsB,aACtB,UAAW,QAGX,aAAe6D,GAAuBjB,EAAI,KAAO,CAAE,UAAAiB,GAAY,EAC/D,YAAcC,GAAuBlB,EAAI,KAAO,CAAE,SAAUkB,GAAM,EAClE,SAAWC,GAAkBnB,EAAK/B,IAAW,CACzC,MAAOkD,GAAS7D,IAAa6D,GAAS9D,GAAY8D,EAAQlD,EAAM,KAAA,EAClE,EACF,cAAe,IAAM+B,EAAK/B,IAAW,CACjC,MAAO,KAAK,IAAIA,EAAM,MAAQ,GAAIX,EAAS,CAAA,EAC7C,EACF,cAAe,IAAM0C,EAAK/B,IAAW,CACjC,MAAO,KAAK,IAAIA,EAAM,MAAQ,GAAIZ,EAAS,CAAA,EAC7C,EACF,4BAA8BzZ,GAAmBoc,EAAI,KAAO,CAAE,yBAA0Bpc,GAAQ,EAChG,eAAiBwd,GAAuBpB,EAAI,KAAO,CAAE,YAAaoB,GAAY,EAC9E,mBAAqBC,GAAiBrB,EAAI,KAAO,CAAE,gBAAiBqB,GAAO,EAC3E,wBAA0BC,GAA2CtB,EAAI,KAAO,CAAE,qBAAsBsB,GAAc,EACtH,aAAeC,GAAgBvB,EAAI,KAAO,CAAE,UAAWuB,GAAM,CACjE,EAAE,EAgBIC,GAAoBrC,GAAqBa,IAAS,CACpD,aAAcF,GAAa,QAC3B,gBAAiB,EACjB,aAAc,GACd,WAAY,GAEZ,gBAAkB2B,GAA+BzB,EAAI,KAAO,CAAE,aAAAyB,GAA6B,EAC3F,mBAAqBC,GAAqB1B,EAAI,KAAO,CAAE,gBAAiB0B,GAAW,EACnF,gBAAkBA,GAAqB1B,EAAI,KAAO,CAAE,aAAc0B,GAAW,EAC7E,cAAgBC,GAAwB3B,EAAI,KAAO,CAAE,WAAA2B,GAAyB,EAC9E,oBAAqB,IAAM3B,EAAI,KAAO,CAClC,gBAAiB,EACjB,aAAc,CAAA,EAChB,CACN,EAAE,EA6BI4B,GAAuBzC,GAAwBa,IAAS,CAC1D,YAAa,KACb,oBAAqB,CAAA,EACrB,cAAe,GACf,kBAAmB,KACnB,eAAgB,KAChB,iBAAkB,KAClB,WAAY,CAAA,EACZ,cAAe,CAAA,EACf,cAAe,KACf,kBAAmB,KACnB,sBAAuB,KAEvB,eAAiBnN,GAAqBmN,EAAI,KAAO,CAAE,YAAanN,GAAI,EACpE,uBAAwB,CAACgP,EAA8CxD,IAAqB2B,EAAK/B,IAAW,CACxG,oBAAqBI,EAAUwD,EAAkB,CAAE,GAAG5D,EAAM,oBAAqB,GAAG4D,CAAA,CAAgB,EACtG,EACF,iBAAmBC,GAA2B9B,EAAI,KAAO,CAAE,cAAA8B,GAAgB,EAC3E,qBAAuBC,GAAsC/B,EAAI,KAAO,CAAE,kBAAA+B,GAAoB,EAC9F,kBAAoBC,GAAmChC,EAAI,KAAO,CAAE,eAAAgC,GAAiB,EACrF,oBAAsBC,GAA6BjC,EAAI,KAAO,CAAE,iBAAkBiC,GAAY,EAC9F,cAAe,CAAC5b,EAAmBgY,IAAqB2B,EAAK/B,IAAW,CACpE,WAAYI,EAAUhY,EAAU,CAAC,GAAG4X,EAAM,WAAY,GAAG5X,CAAO,CAAA,EAClE,EACF,iBAAkB,CAACA,EAAmBgY,IAAqB2B,EAAK/B,IAAW,CACvE,cAAeI,EAAUhY,EAAU,CAAC,GAAG4X,EAAM,cAAe,GAAG5X,CAAO,CAAA,EACxE,EACF,iBAAmB6b,GAAiClC,EAAI,KAAO,CAAE,cAAAkC,GAAgB,EACjF,qBAAuBC,GAA+BnC,EAAI,KAAO,CAAE,kBAAAmC,GAAoB,EACvF,yBAA2BC,GAA4BpC,EAAI,KAAO,CAAE,sBAAuBoC,GAAW,CAC1G,EAAE,EAYIC,GAAyBlD,GAAyB,CAACa,EAAKvM,KAAS,CACnE,gBAAiB,KACjB,cAAe,IAEf,mBAAqB/P,GAAuBsc,EAAI,KAAO,CAAE,gBAAiBtc,GAAO,EAEjF,cAAe,CAACod,EAAcpd,IAAuB,CACjD,MAAMqN,EAAQ,IAAI,IAAI0C,EAAA,EAAM,SAAS,EAIrC,GAAI1C,EAAM,MAHa,GAGa,CAACA,EAAM,IAAI+P,CAAI,EAAG,CAClD,MAAMwB,EAAWvR,EAAM,KAAA,EAAO,OAAO,MACjCuR,IAAa,QACbvR,EAAM,OAAOuR,CAAQ,CAE7B,CAEAvR,EAAM,IAAI+P,EAAMpd,CAAI,EACpBsc,EAAI,CAAE,UAAWjP,EAAO,CAC5B,EAEA,cAAgB+P,GACLrN,EAAA,EAAM,UAAU,IAAIqN,CAAI,GAAK,KAGxC,eAAgB,IAAMd,EAAI,CAAE,UAAW,IAAI,IAAO,CACtD,EAAE,EAGF,MAAMuC,EAAS,CAAf,cACW1C,GAAA,WAAM,CAET,cAAe2C,GAAkC,IAAI,cACrD,iBAAkBA,GAAkC,IAAI,iBAGxD,MAAOC,GAAwC,IAAI,MACnD,WAAYA,GAAwC,IAAI,WACxD,WAAYA,GAAwC,IAAI,WACxD,UAAWA,GAAwC,IAAI,UACvD,aAAcA,GAAwC,IAAI,aAC1D,iBAAkBA,GAAwC,IAAI,iBAC9D,WAAYA,GAAwC,IAAI,WACxD,SAAUA,GAAwC,IAAI,SACtD,cAAeA,GAAwC,IAAI,cAC3D,cAAeA,GAAwC,IAAI,cAC3D,aAAcA,GAAwC,IAAI,aAC1D,gBAAiBA,GAAwC,IAAI,gBAC7D,oBAAqBA,GAAwC,IAAI,oBACjE,cAAeA,GAAwC,IAAI,cAI3D,UAAWC,GAAiC,IAAI,UAChD,SAAUA,GAAiC,IAAI,SAC/C,MAAOA,GAAiC,IAAI,MAC5C,yBAA0BA,GAAiC,IAAI,yBAC/D,YAAaA,GAAiC,IAAI,YAClD,gBAAiBA,GAAiC,IAAI,gBACtD,qBAAsBA,GAAiC,IAAI,qBAC3D,UAAWA,GAAiC,IAAI,UAChD,aAAcA,GAAiC,IAAI,aACnD,YAAaA,GAAiC,IAAI,YAClD,SAAUA,GAAiC,IAAI,SAC/C,cAAeA,GAAiC,IAAI,cACpD,cAAeA,GAAiC,IAAI,cACpD,4BAA6BA,GAAiC,IAAI,4BAClE,eAAgBA,GAAiC,IAAI,eACrD,wBAAyBA,GAAiC,IAAI,wBAC9D,aAAcA,GAAiC,IAAI,aACnD,mBAAoBA,GAAiC,IAAI,mBAGzD,UAAWC,GAAoC,IAAI,UACnD,YAAaA,GAAoC,IAAI,YACrD,eAAgBA,GAAoC,IAAI,eACxD,eAAgBA,GAAoC,IAAI,eACxD,SAAUA,GAAoC,IAAI,SAClD,aAAcA,GAAoC,IAAI,aACtD,iBAAkBA,GAAoC,IAAI,iBAC1D,YAAaA,GAAoC,IAAI,YACrD,kBAAmBA,GAAoC,IAAI,kBAC3D,uBAAwBA,GAAoC,IAAI,uBAIhE,aAAcC,GAA+B,IAAI,aACjD,gBAAiBA,GAA+B,IAAI,gBACpD,aAAcA,GAA+B,IAAI,aACjD,WAAYA,GAA+B,IAAI,WAC/C,gBAAiBA,GAA+B,IAAI,gBACpD,mBAAoBA,GAA+B,IAAI,mBACvD,gBAAiBA,GAA+B,IAAI,gBACpD,cAAeA,GAA+B,IAAI,cAClD,oBAAqBA,GAA+B,IAAI,oBAGxD,YAAaC,GAAkC,IAAI,YACnD,oBAAqBA,GAAkC,IAAI,oBAC3D,cAAeA,GAAkC,IAAI,cACrD,kBAAmBA,GAAkC,IAAI,kBACzD,eAAgBA,GAAkC,IAAI,eACtD,iBAAkBA,GAAkC,IAAI,iBACxD,WAAYA,GAAkC,IAAI,WAClD,cAAeA,GAAkC,IAAI,cACrD,cAAeA,GAAkC,IAAI,cACrD,kBAAmBA,GAAkC,IAAI,kBACzD,sBAAuBA,GAAkC,IAAI,sBAC7D,eAAgBA,GAAkC,IAAI,eACtD,uBAAwBA,GAAkC,IAAI,uBAC9D,iBAAkBA,GAAkC,IAAI,iBACxD,qBAAsBA,GAAkC,IAAI,qBAC5D,kBAAmBA,GAAkC,IAAI,kBACzD,oBAAqBA,GAAkC,IAAI,oBAC3D,cAAeA,GAAkC,IAAI,cACrD,iBAAkBA,GAAkC,IAAI,iBACxD,iBAAkBA,GAAkC,IAAI,iBACxD,qBAAsBA,GAAkC,IAAI,qBAC5D,yBAA0BA,GAAkC,IAAI,yBAIhE,gBAAiBC,GAAoC,IAAI,gBACzD,mBAAoBA,GAAoC,IAAI,mBAC5D,UAAWA,GAAoC,IAAI,UACnD,cAAeA,GAAoC,IAAI,cACvD,cAAeA,GAAoC,IAAI,cACvD,eAAgBA,GAAoC,IAAI,cAAA,GAEhE,CAEA,MAAMN,GAAoCpD,GAAgBW,EAAoB,EACxE0C,GAA0CrD,GAAgBc,EAA0B,EACpFyC,GAAsCvD,GAAgBsB,EAAsB,EAE5EgC,GAAmCtD,GAAgB4B,EAAmB,EACtE4B,GAAiCxD,GAAgBoC,EAAiB,EAClEqB,GAAoCzD,GAAgBwC,EAAoB,EACxEkB,GAAsC1D,GAAgBiD,EAAsB,EAE5EvD,GAAW,IAAIyD,wYC/ZrB,IAAIQ,GAA8B,KAC9BC,GAAc,GACdC,GAA+B,KAGnC,MAAMC,OAAsB,IAM5B,IAAIC,GAA8C,KAG9CC,GAAmB,EAKvB,SAASC,IAA2B,CAChC,OAAIN,KAIJ,QAAQ,IAAI,yCAAyC,EACrDA,GAAe,IAAIO,GAGnBH,GAAwB,IAAI,QAAQ,CAACrhB,EAASC,IAAW,CACrD,MAAMwhB,EAAU,WAAW,IAAM,CAC7BxhB,EAAO,IAAI,MAAM,+BAA+B,CAAC,CACrD,EAAG,GAAK,EAERghB,GAAc,UAAajc,GAAwB,CAC/C,MAAM8Y,EAAU9Y,EAAM,KAGtB,GAAI8Y,EAAQ,OAAS,OAAQ,CACzB,aAAa2D,CAAO,EACpB,MAAMC,EAAU5D,EACZ4D,EAAQ,SAAW,SACnBR,GAAc,GACdC,GAAgBO,EAAQ,SAAW,KACnC,QAAQ,IAAI,8CAA+CP,EAAa,EACxEnhB,EAAA,IAEA,QAAQ,MAAM,6CAA8C0hB,EAAQ,KAAK,EACzEzhB,EAAO,IAAI,MAAMyhB,EAAQ,OAAS,8BAA8B,CAAC,GAGrET,GAAc,UAAYU,GAC1B,MACJ,CACJ,EAEAV,GAAc,QAAWlR,GAAU,CAC/B,aAAa0R,CAAO,EACpB,QAAQ,MAAM,yCAA0C1R,CAAK,EAC7D9P,EAAO8P,CAAK,CAChB,CACJ,CAAC,EAEMkR,GACX,CAKA,SAASU,GAAoB3c,EAAqB,CAC9C,MAAM4c,EAAW5c,EAAM,KACjBwL,EAAU4Q,GAAgB,IAAIQ,EAAS,EAAE,EAE3CpR,IACA4Q,GAAgB,OAAOQ,EAAS,EAAE,EAE9BA,EAAS,MACTpR,EAAQ,OAAO,IAAI,MAAMoR,EAAS,KAAK,CAAC,EAExCpR,EAAQ,QAAQoR,EAAS,MAAM,EAG3C,CAKA,eAAeC,GAAiBC,KAAmB7d,EAA2B,CAC1E,GAAI,CAACgd,GACD,MAAM,IAAI,MAAM,wBAAwB,EAQ5C,GAJI,CAACC,IAAeG,IAChB,MAAMA,GAGN,CAACH,GACD,MAAM,IAAI,MAAM,kBAAkB,EAGtC,OAAO,IAAI,QAAQ,CAAClhB,EAASC,IAAW,CACpC,GAAI,CAACghB,GAAc,CACfhhB,EAAO,IAAI,MAAM,wBAAwB,CAAC,EAC1C,MACJ,CAEA,MAAM8hB,EAAK,OAAO,EAAET,EAAgB,GACpCF,GAAgB,IAAIW,EAAI,CAAE,QAAA/hB,EAAS,OAAAC,EAAQ,EAE3C,MAAM+hB,EAAgC,CAClC,GAAAD,EACA,OAAAD,EACA,KAAA7d,CAAA,EAGJgd,GAAa,YAAYe,CAAO,CACpC,CAAC,CACL,CAKA,SAASC,IAAwC,CAC7C,MAAO,CACH,IAAI,SAAU,CACV,OAAOf,EACX,EACA,WAAa3c,GAAYsd,GAAiB,aAActd,CAAO,EAC/D,SAAW3C,GAASigB,GAAiB,WAAYjgB,CAAI,EACrD,aAAc,IAAMigB,GAAiB,cAAc,EACnD,YAAc7C,GAAS6C,GAAiB,cAAe7C,CAAI,EAC3D,gBAAkBza,GAAYsd,GAAiB,kBAAmBtd,CAAO,EACzE,OAASA,GAAYsd,GAAiB,SAAUtd,CAAO,EACvD,mBAAqB2d,GAAcL,GAAiB,qBAAsBK,CAAS,EACnF,kBAAoBC,GAASN,GAAiB,oBAAqBM,CAAI,EACvE,WAAY,IAAMN,GAAiB,YAAY,CAAA,CAEvD,CAKA,SAASO,IAAwC,CAC7C,KAAM,CAACC,EAAOC,CAAQ,EAAIhL,EAAAA,SAAoC,IAAI,EAC5DiL,EAAYtM,EAAAA,OAAsB,IAAI,EAE5CC,OAAAA,EAAAA,UAAU,KAEDqM,EAAU,UACXA,EAAU,QAAUhB,GAAA,EACpBe,EAASL,IAAmB,GAIzB,IAAM,CAGb,GACD,CAAA,CAAE,EAEEI,CACX,CCpKO,MAAMG,GAAU5M,EAAAA,cAEpB,CAAC,QAAS,OAAW;;;;gBCEvB,UAAY,CAGZ,IAAI6M,EAAS,CAAA,EAAG,eAEhB,SAASC,GAAc,CAGtB,QAFIC,EAAU,GAELjf,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAC1C,IAAIqZ,EAAM,UAAUrZ,CAAC,EACjBqZ,IACH4F,EAAUC,EAAYD,EAASE,EAAW9F,CAAG,CAAC,EAElD,CAEE,OAAO4F,CACT,CAEC,SAASE,EAAY9F,EAAK,CACzB,GAAI,OAAOA,GAAQ,UAAY,OAAOA,GAAQ,SAC7C,OAAOA,EAGR,GAAI,OAAOA,GAAQ,SAClB,MAAO,GAGR,GAAI,MAAM,QAAQA,CAAG,EACpB,OAAO2F,EAAW,MAAM,KAAM3F,CAAG,EAGlC,GAAIA,EAAI,WAAa,OAAO,UAAU,UAAY,CAACA,EAAI,SAAS,SAAQ,EAAG,SAAS,eAAe,EAClG,OAAOA,EAAI,SAAQ,EAGpB,IAAI4F,EAAU,GAEd,QAAShiB,KAAOoc,EACX0F,EAAO,KAAK1F,EAAKpc,CAAG,GAAKoc,EAAIpc,CAAG,IACnCgiB,EAAUC,EAAYD,EAAShiB,CAAG,GAIpC,OAAOgiB,CACT,CAEC,SAASC,EAAa9gB,EAAOghB,EAAU,CACtC,OAAKA,EAIDhhB,EACIA,EAAQ,IAAMghB,EAGfhhB,EAAQghB,EAPPhhB,CAQV,CAEsCiE,EAAO,SAC3C2c,EAAW,QAAUA,EACrB3c,EAAA,QAAiB2c,GAOjB,OAAO,WAAaA,CAEtB,6CC5EA,SAASK,IAAW,CAClB,OAAOA,GAAW,OAAO,OAAS,OAAO,OAAO,KAAI,EAAK,SAAUhS,EAAG,CACpE,QAAS1P,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CACzC,IAAId,EAAI,UAAUc,CAAC,EACnB,QAAS,KAAKd,GAAI,CAAA,GAAI,eAAe,KAAKA,EAAG,CAAC,IAAMwQ,EAAE,CAAC,EAAIxQ,EAAE,CAAC,EAChE,CACA,OAAOwQ,CACT,EAAGgS,GAAS,MAAM,KAAM,SAAS,CACnC,CCRA,SAASC,GAAQzc,EAAG,CAClB,0BAEA,OAAOyc,GAAwB,OAAO,QAArB,YAA2C,OAAO,OAAO,UAA1B,SAAqC,SAAUzc,EAAG,CAChG,OAAO,OAAOA,CAChB,EAAI,SAAUA,EAAG,CACf,OAAOA,GAAmB,OAAO,QAArB,YAA+BA,EAAE,cAAgB,QAAUA,IAAM,OAAO,UAAY,SAAW,OAAOA,CACpH,EAAGyc,GAAQzc,CAAC,CACd,CCPA,IAAI0c,GAAwB,OAAO,IAAI,eAAe,EAClDC,GAAwB,OAAO,IAAI,4BAA4B,EAC/DC,GAAsB,OAAO,IAAI,gBAAgB,EAKtC,SAASC,GAAWjjB,EAAQ,CACzC,OAEEA,GAAU6iB,GAAQ7iB,CAAM,IAAM,WAE9BA,EAAO,WAAa8iB,IAAyB9iB,EAAO,WAAa+iB,KAEjE/iB,EAAO,OAASgjB,EAEpB,CCfe,SAASE,GAAQC,EAAU,CACxC,IAAI9Y,EAAS,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAA,EAC7EoH,EAAM,CAAA,EACVsL,OAAAA,EAAM,SAAS,QAAQoG,EAAU,SAAUC,EAAO,CACpBA,GAAU,MAAS,CAAC/Y,EAAO,YAGnD,MAAM,QAAQ+Y,CAAK,EACrB3R,EAAMA,EAAI,OAAOyR,GAAQE,CAAK,CAAC,EACtBH,GAAWG,CAAK,GAAKA,EAAM,MACpC3R,EAAMA,EAAI,OAAOyR,GAAQE,EAAM,MAAM,SAAU/Y,CAAM,CAAC,EAEtDoH,EAAI,KAAK2R,CAAK,EAElB,CAAC,EACM3R,CACT,CCjBA,IAAI4R,GAAS,CAAA,EACTC,GAAgB,CAAA,EAMTC,GAAa,SAAoB1U,EAAI,CAC9CyU,GAAc,KAAKzU,CAAE,CACvB,EAaO,SAAS2U,GAAQC,EAAO9F,EAAS,CACtC,GAAI,QAAQ,IAAI,WAAa,cAAgB,CAAC8F,GAAS,UAAY,OAAW,CAC5E,IAAIC,EAAeJ,GAAc,OAAO,SAAUnP,EAAKwP,EAAc,CACnE,OAAOA,EAAaxP,GAAuC,GAAI,SAAS,CAC1E,EAAGwJ,CAAO,EACN+F,GACF,QAAQ,MAAM,YAAY,OAAOA,CAAY,CAAC,CAElD,CACF,CAGO,SAASE,GAAKH,EAAO9F,EAAS,CACnC,GAAI,QAAQ,IAAI,WAAa,cAAgB,CAAC8F,GAAS,UAAY,OAAW,CAC5E,IAAIC,EAAeJ,GAAc,OAAO,SAAUnP,EAAKwP,EAAc,CACnE,OAAOA,EAAaxP,GAAuC,GAAI,MAAM,CACvE,EAAGwJ,CAAO,EACN+F,GACF,QAAQ,KAAK,SAAS,OAAOA,CAAY,CAAC,CAE9C,CACF,CACO,SAASG,IAAc,CAC5BR,GAAS,CAAA,CACX,CACO,SAASS,GAAKnC,EAAQ8B,EAAO9F,EAAS,CACvC,CAAC8F,GAAS,CAACJ,GAAO1F,CAAO,IAC3BgE,EAAO,GAAOhE,CAAO,EACrB0F,GAAO1F,CAAO,EAAI,GAEtB,CAGO,SAASoG,GAAYN,EAAO9F,EAAS,CAC1CmG,GAAKN,GAASC,EAAO9F,CAAO,CAC9B,CAGO,SAASqG,GAASP,EAAO9F,EAAS,CACvCmG,GAAKF,GAAMH,EAAO9F,CAAO,CAC3B,CACAoG,GAAY,WAAaR,GACzBQ,GAAY,YAAcF,GAC1BE,GAAY,SAAWC,GCjEvB,SAASC,GAAY7jB,EAAG6C,EAAG,CACzB,GAAgB4f,GAAQziB,CAAC,GAArB,UAA0B,CAACA,EAAG,OAAOA,EACzC,IAAIc,EAAId,EAAE,OAAO,WAAW,EAC5B,GAAec,IAAX,OAAc,CAChB,IAAIqC,EAAIrC,EAAE,KAAKd,EAAG6C,CAAc,EAChC,GAAgB4f,GAAQtf,CAAC,GAArB,SAAwB,OAAOA,EACnC,MAAM,IAAI,UAAU,8CAA8C,CACpE,CACA,OAAqBN,IAAb,SAAiB,OAAS,QAAQ7C,CAAC,CAC7C,CCRA,SAAS8jB,GAAc9jB,EAAG,CACxB,IAAImD,EAAI0gB,GAAY7jB,EAAG,QAAQ,EAC/B,OAAmByiB,GAAQtf,CAAC,GAArB,SAAyBA,EAAIA,EAAI,EAC1C,CCJA,SAAS4gB,EAAgB,EAAGlhB,EAAG7C,EAAG,CAChC,OAAQ6C,EAAIihB,GAAcjhB,CAAC,KAAM,EAAI,OAAO,eAAe,EAAGA,EAAG,CAC/D,MAAO7C,EACP,WAAY,GACZ,aAAc,GACd,SAAU,EACd,CAAG,EAAI,EAAE6C,CAAC,EAAI7C,EAAG,CACjB,CCPA,SAASgkB,GAAQ,EAAGnhB,EAAG,CACrB,IAAI7C,EAAI,OAAO,KAAK,CAAC,EACrB,GAAI,OAAO,sBAAuB,CAChC,IAAIgG,EAAI,OAAO,sBAAsB,CAAC,EACtCnD,IAAMmD,EAAIA,EAAE,OAAO,SAAUnD,EAAG,CAC9B,OAAO,OAAO,yBAAyB,EAAGA,CAAC,EAAE,UAC/C,CAAC,GAAI7C,EAAE,KAAK,MAAMA,EAAGgG,CAAC,CACxB,CACA,OAAOhG,CACT,CACA,SAASikB,EAAe,EAAG,CACzB,QAASphB,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CACzC,IAAI7C,EAAY,UAAU6C,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,CAAA,EAC9CA,EAAI,EAAImhB,GAAQ,OAAOhkB,CAAC,EAAG,EAAE,EAAE,QAAQ,SAAU,EAAG,CAClDkkB,EAAe,EAAG,EAAGlkB,EAAE,CAAC,CAAC,CAC3B,CAAC,EAAI,OAAO,0BAA4B,OAAO,iBAAiB,EAAG,OAAO,0BAA0BA,CAAC,CAAC,EAAIgkB,GAAQ,OAAOhkB,CAAC,CAAC,EAAE,QAAQ,SAAU,EAAG,CAChJ,OAAO,eAAe,EAAG,EAAG,OAAO,yBAAyBA,EAAG,CAAC,CAAC,CACnE,CAAC,CACH,CACA,OAAO,CACT,CClBO,SAASmkB,GAAMC,EAAM,CAG1B,OAAOA,aAAgB,aAAeA,aAAgB,UACxD,CAKO,SAASC,GAAOD,EAAM,CAC3B,OAAIA,GAAQ3B,GAAQ2B,CAAI,IAAM,UAAYD,GAAMC,EAAK,aAAa,EACzDA,EAAK,cAEVD,GAAMC,CAAI,EACLA,EAEF,IACT,CAKe,SAASE,GAAYF,EAAM,CACxC,IAAIG,EAAUF,GAAOD,CAAI,EACzB,GAAIG,EACF,OAAOA,EAET,GAAIH,aAAgBzH,EAAM,UAAW,CACnC,IAAI6H,EACJ,OAAQA,EAAwBC,GAAS,eAAiB,MAAQD,IAA0B,OAAS,OAASA,EAAsB,KAAKC,GAAUL,CAAI,CACzJ,CACA,OAAO,IACT;;;;;;;;6CC1Ba,IAAIM,EAAE,OAAO,IAAI,eAAe,EAAE9hB,EAAE,OAAO,IAAI,cAAc,EAAEgY,EAAE,OAAO,IAAI,gBAAgB,EAAE9Z,EAAE,OAAO,IAAI,mBAAmB,EAAEmM,EAAE,OAAO,IAAI,gBAAgB,EAAE0X,EAAE,OAAO,IAAI,gBAAgB,EAAEC,EAAE,OAAO,IAAI,eAAe,EAAE/jB,EAAE,OAAO,IAAI,sBAAsB,EAAE,EAAE,OAAO,IAAI,mBAAmB,EAAEZ,EAAE,OAAO,IAAI,gBAAgB,EAAEuQ,EAAE,OAAO,IAAI,qBAAqB,EAAEzP,EAAE,OAAO,IAAI,YAAY,EAAE2O,EAAE,OAAO,IAAI,YAAY,EAAE1P,EAAE,OAAO,IAAI,iBAAiB,EAAE6kB,EAAEA,EAAE,OAAO,IAAI,wBAAwB,EAChf,SAASvf,EAAExF,EAAE,CAAC,GAAc,OAAOA,GAAlB,UAA4BA,IAAP,KAAS,CAAC,IAAI+C,EAAE/C,EAAE,SAAS,OAAO+C,GAAG,KAAK6hB,EAAE,OAAO5kB,EAAEA,EAAE,KAAKA,EAAC,CAAE,KAAK8a,EAAE,KAAK3N,EAAE,KAAKnM,EAAE,KAAKb,EAAE,KAAKuQ,EAAE,OAAO1Q,EAAE,QAAQ,OAAOA,EAAEA,GAAGA,EAAE,SAASA,EAAC,CAAE,KAAKe,EAAE,KAAK+jB,EAAE,KAAK,EAAE,KAAKlV,EAAE,KAAK3O,EAAE,KAAK4jB,EAAE,OAAO7kB,EAAE,QAAQ,OAAO+C,CAAC,CAAC,CAAC,KAAKD,EAAE,OAAOC,CAAC,CAAC,CAAC,CAAC,OAAAiiB,GAAA,gBAAwBF,EAAEE,mBAAwBH,EAAEG,GAAA,QAAgBJ,EAAEI,GAAA,WAAmB,EAAEA,GAAA,SAAiBlK,EAAEkK,GAAA,KAAapV,EAAEoV,GAAA,KAAa/jB,EAAE+jB,GAAA,OAAeliB,EAAEkiB,YAAiB7X,EAAE6X,GAAA,WAAmBhkB,EAAEgkB,GAAA,SAAiB7kB,EAChe6kB,GAAA,aAAqBtU,EAAEsU,GAAA,YAAoB,UAAU,CAAC,MAAM,EAAE,EAAEA,oBAAyB,UAAU,CAAC,QAAQ,EAAEA,GAAA,kBAA0B,SAAShlB,EAAE,CAAC,OAAOwF,EAAExF,CAAC,IAAI8kB,CAAC,EAAEE,GAAA,kBAA0B,SAAShlB,EAAE,CAAC,OAAOwF,EAAExF,CAAC,IAAI6kB,CAAC,EAAEG,GAAA,UAAkB,SAAShlB,EAAE,CAAC,OAAiB,OAAOA,GAAlB,UAA4BA,IAAP,MAAUA,EAAE,WAAW4kB,CAAC,EAAEI,GAAA,aAAqB,SAAShlB,EAAE,CAAC,OAAOwF,EAAExF,CAAC,IAAI,CAAC,EAAEglB,GAAA,WAAmB,SAAShlB,EAAE,CAAC,OAAOwF,EAAExF,CAAC,IAAI8a,CAAC,EAAEkK,GAAA,OAAe,SAAShlB,EAAE,CAAC,OAAOwF,EAAExF,CAAC,IAAI4P,CAAC,EAAEoV,GAAA,OAAe,SAAShlB,EAAE,CAAC,OAAOwF,EAAExF,CAAC,IAAIiB,CAAC,EACve+jB,GAAA,SAAiB,SAAShlB,EAAE,CAAC,OAAOwF,EAAExF,CAAC,IAAI8C,CAAC,EAAEkiB,cAAmB,SAAShlB,EAAE,CAAC,OAAOwF,EAAExF,CAAC,IAAImN,CAAC,EAAE6X,GAAA,aAAqB,SAAShlB,EAAE,CAAC,OAAOwF,EAAExF,CAAC,IAAIgB,CAAC,EAAEgkB,GAAA,WAAmB,SAAShlB,EAAE,CAAC,OAAOwF,EAAExF,CAAC,IAAIG,CAAC,EAAE6kB,GAAA,eAAuB,SAAShlB,EAAE,CAAC,OAAOwF,EAAExF,CAAC,IAAI0Q,CAAC,EAClPsU,GAAA,mBAA2B,SAAShlB,EAAE,CAAC,OAAiB,OAAOA,GAAlB,UAAkC,OAAOA,GAApB,YAAuBA,IAAI8a,GAAG9a,IAAImN,GAAGnN,IAAIgB,GAAGhB,IAAIG,GAAGH,IAAI0Q,GAAG1Q,IAAIE,GAAc,OAAOF,GAAlB,UAA4BA,IAAP,OAAWA,EAAE,WAAW4P,GAAG5P,EAAE,WAAWiB,GAAGjB,EAAE,WAAW6kB,GAAG7kB,EAAE,WAAW8kB,GAAG9kB,EAAE,WAAW,GAAGA,EAAE,WAAW+kB,GAAY/kB,EAAE,cAAX,OAA6B,EAAEglB,GAAA,OAAexf;;;;;;;;yCCD7S,QAAQ,IAAI,WAAa,cAC1B,UAAW,CAOd,IAAIyf,EAAqB,OAAO,IAAI,eAAe,EAC/CC,EAAoB,OAAO,IAAI,cAAc,EAC7CpC,EAAsB,OAAO,IAAI,gBAAgB,EACjDqC,EAAyB,OAAO,IAAI,mBAAmB,EACvDC,EAAsB,OAAO,IAAI,gBAAgB,EACjDC,EAAsB,OAAO,IAAI,gBAAgB,EACjDC,EAAqB,OAAO,IAAI,eAAe,EAC/CC,EAA4B,OAAO,IAAI,sBAAsB,EAC7DC,EAAyB,OAAO,IAAI,mBAAmB,EACvDC,EAAsB,OAAO,IAAI,gBAAgB,EACjDC,EAA2B,OAAO,IAAI,qBAAqB,EAC3DC,EAAkB,OAAO,IAAI,YAAY,EACzCC,EAAkB,OAAO,IAAI,YAAY,EACzCC,EAAuB,OAAO,IAAI,iBAAiB,EAInDC,EAAiB,GACjBC,EAAqB,GACrBC,EAA0B,GAE1BC,EAAqB,GAIrBC,EAAqB,GAErBC,EAGFA,EAAyB,OAAO,IAAI,wBAAwB,EAG9D,SAASC,EAAmBviB,EAAM,CAUhC,MATI,UAAOA,GAAS,UAAY,OAAOA,GAAS,YAK5CA,IAASif,GAAuBjf,IAASuhB,GAAuBc,GAAuBriB,IAASshB,GAA0BthB,IAAS4hB,GAAuB5hB,IAAS6hB,GAA4BO,GAAuBpiB,IAASgiB,GAAwBC,GAAmBC,GAAuBC,GAIjS,OAAOniB,GAAS,UAAYA,IAAS,OACnCA,EAAK,WAAa+hB,GAAmB/hB,EAAK,WAAa8hB,GAAmB9hB,EAAK,WAAawhB,GAAuBxhB,EAAK,WAAayhB,GAAsBzhB,EAAK,WAAa2hB,GAIjL3hB,EAAK,WAAasiB,GAA0BtiB,EAAK,cAAgB,QAMrE,CAEA,SAASwiB,EAAOvmB,EAAQ,CACtB,GAAI,OAAOA,GAAW,UAAYA,IAAW,KAAM,CACjD,IAAIwmB,GAAWxmB,EAAO,SAEtB,OAAQwmB,GAAQ,CACd,KAAKrB,EACH,IAAIphB,GAAO/D,EAAO,KAElB,OAAQ+D,GAAI,CACV,KAAKif,EACL,KAAKsC,EACL,KAAKD,EACL,KAAKM,EACL,KAAKC,EACH,OAAO7hB,GAET,QACE,IAAI0iB,GAAe1iB,IAAQA,GAAK,SAEhC,OAAQ0iB,GAAY,CAClB,KAAKhB,EACL,KAAKD,EACL,KAAKE,EACL,KAAKI,EACL,KAAKD,EACL,KAAKN,EACH,OAAOkB,GAET,QACE,OAAOD,IAKjB,KAAKpB,EACH,OAAOoB,GAEf,CAGA,CACA,IAAIE,EAAkBlB,EAClBmB,EAAkBpB,EAClBqB,EAAUzB,EACV0B,EAAanB,EACboB,EAAW9D,EACX+D,EAAOjB,EACPkB,EAAOnB,EACPoB,EAAS7B,EACT8B,EAAW5B,EACX6B,EAAa9B,EACb+B,EAAWzB,EACX0B,EAAezB,EACf0B,EAAsC,GACtCC,EAA2C,GAE/C,SAASC,EAAYxnB,EAAQ,CAEzB,OAAKsnB,IACHA,EAAsC,GAEtC,QAAQ,KAAQ,wFAA6F,GAI1G,EACT,CACA,SAASG,EAAiBznB,EAAQ,CAE9B,OAAKunB,IACHA,EAA2C,GAE3C,QAAQ,KAAQ,6FAAkG,GAI/G,EACT,CACA,SAASG,EAAkB1nB,EAAQ,CACjC,OAAOumB,EAAOvmB,CAAM,IAAMwlB,CAC5B,CACA,SAASmC,EAAkB3nB,EAAQ,CACjC,OAAOumB,EAAOvmB,CAAM,IAAMulB,CAC5B,CACA,SAASqC,EAAU5nB,EAAQ,CACzB,OAAO,OAAOA,GAAW,UAAYA,IAAW,MAAQA,EAAO,WAAamlB,CAC9E,CACA,SAAS0C,EAAa7nB,EAAQ,CAC5B,OAAOumB,EAAOvmB,CAAM,IAAM0lB,CAC5B,CACA,SAASzC,GAAWjjB,EAAQ,CAC1B,OAAOumB,EAAOvmB,CAAM,IAAMgjB,CAC5B,CACA,SAAS8E,GAAO9nB,EAAQ,CACtB,OAAOumB,EAAOvmB,CAAM,IAAM8lB,CAC5B,CACA,SAASiC,GAAO/nB,EAAQ,CACtB,OAAOumB,EAAOvmB,CAAM,IAAM6lB,CAC5B,CACA,SAASmC,GAAShoB,EAAQ,CACxB,OAAOumB,EAAOvmB,CAAM,IAAMolB,CAC5B,CACA,SAAS6C,GAAWjoB,EAAQ,CAC1B,OAAOumB,EAAOvmB,CAAM,IAAMslB,CAC5B,CACA,SAAS4C,EAAaloB,EAAQ,CAC5B,OAAOumB,EAAOvmB,CAAM,IAAMqlB,CAC5B,CACA,SAAS8C,EAAWnoB,EAAQ,CAC1B,OAAOumB,EAAOvmB,CAAM,IAAM2lB,CAC5B,CACA,SAASyC,GAAepoB,EAAQ,CAC9B,OAAOumB,EAAOvmB,CAAM,IAAM4lB,CAC5B,CAEAyC,GAAA,gBAA0B3B,EAC1B2B,GAAA,gBAA0B1B,EAC1B0B,GAAA,QAAkBzB,EAClByB,GAAA,WAAqBxB,EACrBwB,GAAA,SAAmBvB,EACnBuB,GAAA,KAAetB,EACfsB,GAAA,KAAerB,EACfqB,GAAA,OAAiBpB,EACjBoB,GAAA,SAAmBnB,EACnBmB,GAAA,WAAqBlB,EACrBkB,GAAA,SAAmBjB,EACnBiB,GAAA,aAAuBhB,EACvBgB,GAAA,YAAsBb,EACtBa,GAAA,iBAA2BZ,EAC3BY,GAAA,kBAA4BX,EAC5BW,GAAA,kBAA4BV,EAC5BU,GAAA,UAAoBT,EACpBS,GAAA,aAAuBR,EACvBQ,GAAA,WAAqBpF,GACrBoF,GAAA,OAAiBP,GACjBO,GAAA,OAAiBN,GACjBM,GAAA,SAAmBL,GACnBK,GAAA,WAAqBJ,GACrBI,GAAA,aAAuBH,EACvBG,GAAA,WAAqBF,EACrBE,GAAA,eAAyBD,GACzBC,GAAA,mBAA6B/B,EAC7B+B,GAAA,OAAiB9B,CACjB,EAAG,MCzNC,QAAQ,IAAI,WAAa,aAC3B+B,GAAA,QAAiBC,GAAA,EAEjBD,GAAA,QAAiBE,GAAA,oBCJJ,SAASC,GAAQC,EAAUC,EAAWC,EAAc,CACjE,IAAIC,EAAW9L,EAAM,OAAO,EAAE,EAC9B,OAAI,EAAE,UAAW8L,EAAS,UAAYD,EAAaC,EAAS,QAAQ,UAAWF,CAAS,KACtFE,EAAS,QAAQ,MAAQH,EAAQ,EACjCG,EAAS,QAAQ,UAAYF,GAExBE,EAAS,QAAQ,KAC1B,CCHA,IAAIC,GAAoB,OAAOC,EAAAA,QAAQ,MAAM,GAAG,EAAE,CAAC,CAAC,EACzCC,GAAU,SAAiBnT,EAAK2O,EAAM,CAC3C,OAAO3O,GAAQ,WACjBA,EAAI2O,CAAI,EACC3B,GAAQhN,CAAG,IAAM,UAAYA,GAAO,YAAaA,IAC1DA,EAAI,QAAU2O,EAElB,EAKWyE,GAAa,UAAsB,CAC5C,QAASC,EAAO,UAAU,OAAQC,EAAO,IAAI,MAAMD,CAAI,EAAGE,EAAO,EAAGA,EAAOF,EAAME,IAC/ED,EAAKC,CAAI,EAAI,UAAUA,CAAI,EAE7B,IAAIC,EAAUF,EAAK,OAAO,OAAO,EACjC,OAAIE,EAAQ,QAAU,EACbA,EAAQ,CAAC,EAEX,SAAU7E,EAAM,CACrB2E,EAAK,QAAQ,SAAUtT,EAAK,CAC1BmT,GAAQnT,EAAK2O,CAAI,CACnB,CAAC,CACH,CACF,EACW8E,GAAgB,UAAyB,CAClD,QAASC,EAAQ,UAAU,OAAQJ,EAAO,IAAI,MAAMI,CAAK,EAAGC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFL,EAAKK,CAAK,EAAI,UAAUA,CAAK,EAE/B,OAAOf,GAAQ,UAAY,CACzB,OAAOQ,GAAW,MAAM,OAAQE,CAAI,CACtC,EAAGA,EAAM,SAAUrV,EAAMtQ,EAAM,CAC7B,OAAOsQ,EAAK,SAAWtQ,EAAK,QAAUsQ,EAAK,MAAM,SAAU+B,EAAKtS,EAAG,CACjE,OAAOsS,IAAQrS,EAAKD,CAAC,CACvB,CAAC,CACH,CAAC,CACH,EACWkmB,GAAa,SAAoBC,EAAiB,CAC3D,IAAIC,EAAiBC,EACrB,GAAI,CAACF,EACH,MAAO,GAIT,GAAIG,GAAeH,CAAe,GAAKZ,IAAqB,GAC1D,MAAO,GAET,IAAI/kB,EAAOgkB,GAAAA,OAAO2B,CAAe,EAAIA,EAAgB,KAAK,KAAOA,EAAgB,KAQjF,MALI,SAAO3lB,GAAS,YAAc,GAAG4lB,EAAkB5lB,EAAK,aAAe,MAAQ4lB,IAAoB,QAAUA,EAAgB,SAAW5lB,EAAK,WAAa8iB,eAK1J,OAAO6C,GAAoB,YAAc,GAAGE,EAAwBF,EAAgB,aAAe,MAAQE,IAA0B,QAAUA,EAAsB,SAAWF,EAAgB,WAAa7C,cAInN,EACA,SAASgD,GAAerF,EAAM,CAC5B,OAAoBsF,EAAAA,eAAetF,CAAI,GAAK,CAACvB,GAAWuB,CAAI,CAC9D,CAUO,IAAIuF,GAAa,SAAoBvF,EAAM,CAChD,GAAIA,GAAQqF,GAAerF,CAAI,EAAG,CAChC,IAAIwF,EAAMxF,EAIV,OAAOwF,EAAI,MAAM,qBAAqB,KAAK,EAAIA,EAAI,MAAM,IAAMA,EAAI,GACrE,CACA,OAAO,IACT,ECtFWC,GAAiClN,EAAM,cAAc,IAAI,EAI7D,SAASmN,GAAWzR,EAAM,CAC/B,IAAI0K,EAAW1K,EAAK,SAClB0R,EAAgB1R,EAAK,cACnB2R,EAAcrN,EAAM,OAAO,CAAC,EAC5BsN,EAAiBtN,EAAM,OAAO,EAAE,EAChCuN,EAAqBvN,EAAM,WAAWkN,EAAiB,EACvDM,EAAWxN,EAAM,YAAY,SAAUyN,EAAMC,EAAShpB,EAAM,CAC9D2oB,EAAY,SAAW,EACvB,IAAIM,EAAYN,EAAY,QAC5BC,EAAe,QAAQ,KAAK,CAC1B,KAAMG,EACN,QAASC,EACT,KAAMhpB,CACZ,CAAK,EACD,QAAQ,UAAU,KAAK,UAAY,CAC7BipB,IAAcN,EAAY,UAC5BD,GAAkB,MAAoCA,EAAcE,EAAe,OAAO,EAC1FA,EAAe,QAAU,CAAA,EAE7B,CAAC,EAGDC,GAAuB,MAAyCA,EAAmBE,EAAMC,EAAShpB,CAAI,CACxG,EAAG,CAAC0oB,EAAeG,CAAkB,CAAC,EACtC,OAAoBvN,EAAM,cAAckN,GAAkB,SAAU,CAClE,MAAOM,CACX,EAAKpH,CAAQ,CACb,CCzBA,IAAIwH,GAAW,UAAY,CACvB,GAAI,OAAO,IAAQ,IACf,OAAO,IASX,SAASC,EAASC,EAAKrqB,EAAK,CACxB,IAAI8E,EAAS,GACb,OAAAulB,EAAI,KAAK,SAAUC,EAAO3lB,EAAO,CAC7B,OAAI2lB,EAAM,CAAC,IAAMtqB,GACb8E,EAASH,EACF,IAEJ,EACX,CAAC,EACMG,CACX,CACA,OAAsB,UAAY,CAC9B,SAASylB,GAAU,CACf,KAAK,YAAc,EACvB,CACA,cAAO,eAAeA,EAAQ,UAAW,OAAQ,CAI7C,IAAK,UAAY,CACb,OAAO,KAAK,YAAY,MAC5B,EACA,WAAY,GACZ,aAAc,EAC1B,CAAS,EAKDA,EAAQ,UAAU,IAAM,SAAUvqB,EAAK,CACnC,IAAI2E,EAAQylB,EAAS,KAAK,YAAapqB,CAAG,EACtCsqB,EAAQ,KAAK,YAAY3lB,CAAK,EAClC,OAAO2lB,GAASA,EAAM,CAAC,CAC3B,EAMAC,EAAQ,UAAU,IAAM,SAAUvqB,EAAKmB,EAAO,CAC1C,IAAIwD,EAAQylB,EAAS,KAAK,YAAapqB,CAAG,EACtC,CAAC2E,EACD,KAAK,YAAYA,CAAK,EAAE,CAAC,EAAIxD,EAG7B,KAAK,YAAY,KAAK,CAACnB,EAAKmB,CAAK,CAAC,CAE1C,EAKAopB,EAAQ,UAAU,OAAS,SAAUvqB,EAAK,CACtC,IAAIwqB,EAAU,KAAK,YACf7lB,EAAQylB,EAASI,EAASxqB,CAAG,EAC7B,CAAC2E,GACD6lB,EAAQ,OAAO7lB,EAAO,CAAC,CAE/B,EAKA4lB,EAAQ,UAAU,IAAM,SAAUvqB,EAAK,CACnC,MAAO,CAAC,CAAC,CAACoqB,EAAS,KAAK,YAAapqB,CAAG,CAC5C,EAIAuqB,EAAQ,UAAU,MAAQ,UAAY,CAClC,KAAK,YAAY,OAAO,CAAC,CAC7B,EAMAA,EAAQ,UAAU,QAAU,SAAU5a,EAAU8a,EAAK,CAC7CA,IAAQ,SAAUA,EAAM,MAC5B,QAASC,EAAK,EAAGjnB,EAAK,KAAK,YAAainB,EAAKjnB,EAAG,OAAQinB,IAAM,CAC1D,IAAIJ,EAAQ7mB,EAAGinB,CAAE,EACjB/a,EAAS,KAAK8a,EAAKH,EAAM,CAAC,EAAGA,EAAM,CAAC,CAAC,CACzC,CACJ,EACOC,CACX,GACJ,EAAC,EAKGI,GAAY,OAAO,OAAW,KAAe,OAAO,SAAa,KAAe,OAAO,WAAa,SAGpGC,GAAY,UAAY,CACxB,OAAI,OAAO,OAAW,KAAe,OAAO,OAAS,KAC1C,OAEP,OAAO,KAAS,KAAe,KAAK,OAAS,KACtC,KAEP,OAAO,OAAW,KAAe,OAAO,OAAS,KAC1C,OAGJ,SAAS,aAAa,GACjC,EAAC,EAQGC,GAA2B,UAAY,CACvC,OAAI,OAAO,uBAA0B,WAI1B,sBAAsB,KAAKD,EAAQ,EAEvC,SAAUjb,EAAU,CAAE,OAAO,WAAW,UAAY,CAAE,OAAOA,EAAS,KAAK,IAAG,CAAE,CAAG,EAAG,IAAO,EAAE,CAAG,CAC7G,EAAC,EAGGmb,GAAkB,EAStB,SAASC,GAAUpb,EAAUqb,EAAO,CAChC,IAAIC,EAAc,GAAOC,EAAe,GAAOC,EAAe,EAO9D,SAASC,GAAiB,CAClBH,IACAA,EAAc,GACdtb,KAEAub,GACAxJ,GAER,CAQA,SAAS2J,GAAkB,CACvBR,GAAwBO,CAAc,CAC1C,CAMA,SAAS1J,GAAQ,CACb,IAAI4J,EAAY,KAAK,MACrB,GAAIL,EAAa,CAEb,GAAIK,EAAYH,EAAeL,GAC3B,OAMJI,EAAe,EACnB,MAEID,EAAc,GACdC,EAAe,GACf,WAAWG,EAAiBL,CAAK,EAErCG,EAAeG,CACnB,CACA,OAAO5J,CACX,CAGA,IAAI6J,GAAgB,GAGhBC,GAAiB,CAAC,MAAO,QAAS,SAAU,OAAQ,QAAS,SAAU,OAAQ,QAAQ,EAEvFC,GAA4B,OAAO,iBAAqB,IAIxDC,GAA0C,UAAY,CAMtD,SAASA,GAA2B,CAMhC,KAAK,WAAa,GAMlB,KAAK,qBAAuB,GAM5B,KAAK,mBAAqB,KAM1B,KAAK,WAAa,GAClB,KAAK,iBAAmB,KAAK,iBAAiB,KAAK,IAAI,EACvD,KAAK,QAAUX,GAAS,KAAK,QAAQ,KAAK,IAAI,EAAGQ,EAAa,CAClE,CAOA,OAAAG,EAAyB,UAAU,YAAc,SAAUnnB,EAAU,CAC5D,CAAC,KAAK,WAAW,QAAQA,CAAQ,GAClC,KAAK,WAAW,KAAKA,CAAQ,EAG5B,KAAK,YACN,KAAK,SAAQ,CAErB,EAOAmnB,EAAyB,UAAU,eAAiB,SAAUnnB,EAAU,CACpE,IAAIonB,EAAY,KAAK,WACjBhnB,EAAQgnB,EAAU,QAAQpnB,CAAQ,EAElC,CAACI,GACDgnB,EAAU,OAAOhnB,EAAO,CAAC,EAGzB,CAACgnB,EAAU,QAAU,KAAK,YAC1B,KAAK,YAAW,CAExB,EAOAD,EAAyB,UAAU,QAAU,UAAY,CACrD,IAAIE,EAAkB,KAAK,mBAGvBA,GACA,KAAK,QAAO,CAEpB,EASAF,EAAyB,UAAU,iBAAmB,UAAY,CAE9D,IAAIG,EAAkB,KAAK,WAAW,OAAO,SAAUtnB,EAAU,CAC7D,OAAOA,EAAS,aAAY,EAAIA,EAAS,UAAS,CACtD,CAAC,EAMD,OAAAsnB,EAAgB,QAAQ,SAAUtnB,EAAU,CAAE,OAAOA,EAAS,gBAAe,CAAI,CAAC,EAC3EsnB,EAAgB,OAAS,CACpC,EAOAH,EAAyB,UAAU,SAAW,UAAY,CAGlD,CAACf,IAAa,KAAK,aAMvB,SAAS,iBAAiB,gBAAiB,KAAK,gBAAgB,EAChE,OAAO,iBAAiB,SAAU,KAAK,OAAO,EAC1Cc,IACA,KAAK,mBAAqB,IAAI,iBAAiB,KAAK,OAAO,EAC3D,KAAK,mBAAmB,QAAQ,SAAU,CACtC,WAAY,GACZ,UAAW,GACX,cAAe,GACf,QAAS,EACzB,CAAa,IAGD,SAAS,iBAAiB,qBAAsB,KAAK,OAAO,EAC5D,KAAK,qBAAuB,IAEhC,KAAK,WAAa,GACtB,EAOAC,EAAyB,UAAU,YAAc,UAAY,CAGrD,CAACf,IAAa,CAAC,KAAK,aAGxB,SAAS,oBAAoB,gBAAiB,KAAK,gBAAgB,EACnE,OAAO,oBAAoB,SAAU,KAAK,OAAO,EAC7C,KAAK,oBACL,KAAK,mBAAmB,aAExB,KAAK,sBACL,SAAS,oBAAoB,qBAAsB,KAAK,OAAO,EAEnE,KAAK,mBAAqB,KAC1B,KAAK,qBAAuB,GAC5B,KAAK,WAAa,GACtB,EAQAe,EAAyB,UAAU,iBAAmB,SAAUjoB,EAAI,CAChE,IAAID,EAAKC,EAAG,aAAcqoB,EAAetoB,IAAO,OAAS,GAAKA,EAE1DuoB,EAAmBP,GAAe,KAAK,SAAUxrB,EAAK,CACtD,MAAO,CAAC,CAAC,CAAC8rB,EAAa,QAAQ9rB,CAAG,CACtC,CAAC,EACG+rB,GACA,KAAK,QAAO,CAEpB,EAMAL,EAAyB,YAAc,UAAY,CAC/C,OAAK,KAAK,YACN,KAAK,UAAY,IAAIA,GAElB,KAAK,SAChB,EAMAA,EAAyB,UAAY,KAC9BA,CACX,IASIM,GAAsB,SAAU3qB,EAAQuU,EAAO,CAC/C,QAAS8U,EAAK,EAAGjnB,EAAK,OAAO,KAAKmS,CAAK,EAAG8U,EAAKjnB,EAAG,OAAQinB,IAAM,CAC5D,IAAI1qB,EAAMyD,EAAGinB,CAAE,EACf,OAAO,eAAerpB,EAAQrB,EAAK,CAC/B,MAAO4V,EAAM5V,CAAG,EAChB,WAAY,GACZ,SAAU,GACV,aAAc,EAC1B,CAAS,CACL,CACA,OAAOqB,CACX,EAQI4qB,GAAe,SAAU5qB,EAAQ,CAIjC,IAAI6qB,EAAc7qB,GAAUA,EAAO,eAAiBA,EAAO,cAAc,YAGzE,OAAO6qB,GAAetB,EAC1B,EAGIuB,GAAYC,GAAe,EAAG,EAAG,EAAG,CAAC,EAOzC,SAASC,GAAQlrB,EAAO,CACpB,OAAO,WAAWA,CAAK,GAAK,CAChC,CAQA,SAASmrB,GAAeC,EAAQ,CAE5B,QADIC,EAAY,CAAA,EACP9B,EAAK,EAAGA,EAAK,UAAU,OAAQA,IACpC8B,EAAU9B,EAAK,CAAC,EAAI,UAAUA,CAAE,EAEpC,OAAO8B,EAAU,OAAO,SAAUxC,EAAM/K,EAAU,CAC9C,IAAI9d,EAAQorB,EAAO,UAAYtN,EAAW,QAAQ,EAClD,OAAO+K,EAAOqC,GAAQlrB,CAAK,CAC/B,EAAG,CAAC,CACR,CAOA,SAASsrB,GAAYF,EAAQ,CAGzB,QAFIC,EAAY,CAAC,MAAO,QAAS,SAAU,MAAM,EAC7CE,EAAW,CAAA,EACNhC,EAAK,EAAGiC,EAAcH,EAAW9B,EAAKiC,EAAY,OAAQjC,IAAM,CACrE,IAAIzL,EAAW0N,EAAYjC,CAAE,EACzBvpB,EAAQorB,EAAO,WAAatN,CAAQ,EACxCyN,EAASzN,CAAQ,EAAIoN,GAAQlrB,CAAK,CACtC,CACA,OAAOurB,CACX,CAQA,SAASE,GAAkBvrB,EAAQ,CAC/B,IAAIwrB,EAAOxrB,EAAO,UAClB,OAAO+qB,GAAe,EAAG,EAAGS,EAAK,MAAOA,EAAK,MAAM,CACvD,CAOA,SAASC,GAA0BzrB,EAAQ,CAGvC,IAAI0rB,EAAc1rB,EAAO,YAAa2rB,EAAe3rB,EAAO,aAS5D,GAAI,CAAC0rB,GAAe,CAACC,EACjB,OAAOb,GAEX,IAAII,EAASN,GAAY5qB,CAAM,EAAE,iBAAiBA,CAAM,EACpDqrB,EAAWD,GAAYF,CAAM,EAC7BU,EAAWP,EAAS,KAAOA,EAAS,MACpCQ,EAAUR,EAAS,IAAMA,EAAS,OAKlCS,EAAQd,GAAQE,EAAO,KAAK,EAAGa,EAASf,GAAQE,EAAO,MAAM,EAqBjE,GAlBIA,EAAO,YAAc,eAOjB,KAAK,MAAMY,EAAQF,CAAQ,IAAMF,IACjCI,GAASb,GAAeC,EAAQ,OAAQ,OAAO,EAAIU,GAEnD,KAAK,MAAMG,EAASF,CAAO,IAAMF,IACjCI,GAAUd,GAAeC,EAAQ,MAAO,QAAQ,EAAIW,IAOxD,CAACG,GAAkBhsB,CAAM,EAAG,CAK5B,IAAIisB,EAAgB,KAAK,MAAMH,EAAQF,CAAQ,EAAIF,EAC/CQ,EAAiB,KAAK,MAAMH,EAASF,CAAO,EAAIF,EAMhD,KAAK,IAAIM,CAAa,IAAM,IAC5BH,GAASG,GAET,KAAK,IAAIC,CAAc,IAAM,IAC7BH,GAAUG,EAElB,CACA,OAAOnB,GAAeM,EAAS,KAAMA,EAAS,IAAKS,EAAOC,CAAM,CACpE,CAOA,IAAII,GAAwB,UAAY,CAGpC,OAAI,OAAO,mBAAuB,IACvB,SAAUnsB,EAAQ,CAAE,OAAOA,aAAkB4qB,GAAY5qB,CAAM,EAAE,kBAAoB,EAKzF,SAAUA,EAAQ,CAAE,OAAQA,aAAkB4qB,GAAY5qB,CAAM,EAAE,YACrE,OAAOA,EAAO,SAAY,UAAa,CAC/C,IAOA,SAASgsB,GAAkBhsB,EAAQ,CAC/B,OAAOA,IAAW4qB,GAAY5qB,CAAM,EAAE,SAAS,eACnD,CAOA,SAASosB,GAAepsB,EAAQ,CAC5B,OAAKspB,GAGD6C,GAAqBnsB,CAAM,EACpBurB,GAAkBvrB,CAAM,EAE5ByrB,GAA0BzrB,CAAM,EAL5B8qB,EAMf,CAQA,SAASuB,GAAmBjqB,EAAI,CAC5B,IAAIkqB,EAAIlqB,EAAG,EAAGmqB,EAAInqB,EAAG,EAAG0pB,EAAQ1pB,EAAG,MAAO2pB,EAAS3pB,EAAG,OAElDoqB,EAAS,OAAO,gBAAoB,IAAc,gBAAkB,OACpEC,EAAO,OAAO,OAAOD,EAAO,SAAS,EAEzC,OAAA7B,GAAmB8B,EAAM,CACrB,EAAGH,EAAG,EAAGC,EAAG,MAAOT,EAAO,OAAQC,EAClC,IAAKQ,EACL,MAAOD,EAAIR,EACX,OAAQC,EAASQ,EACjB,KAAMD,CACd,CAAK,EACMG,CACX,CAWA,SAAS1B,GAAeuB,EAAGC,EAAGT,EAAOC,EAAQ,CACzC,MAAO,CAAE,EAAGO,EAAG,EAAGC,EAAG,MAAOT,EAAO,OAAQC,EAC/C,CAMA,IAAIW,GAAmC,UAAY,CAM/C,SAASA,EAAkB1sB,EAAQ,CAM/B,KAAK,eAAiB,EAMtB,KAAK,gBAAkB,EAMvB,KAAK,aAAe+qB,GAAe,EAAG,EAAG,EAAG,CAAC,EAC7C,KAAK,OAAS/qB,CAClB,CAOA,OAAA0sB,EAAkB,UAAU,SAAW,UAAY,CAC/C,IAAID,EAAOL,GAAe,KAAK,MAAM,EACrC,YAAK,aAAeK,EACZA,EAAK,QAAU,KAAK,gBACxBA,EAAK,SAAW,KAAK,eAC7B,EAOAC,EAAkB,UAAU,cAAgB,UAAY,CACpD,IAAID,EAAO,KAAK,aAChB,YAAK,eAAiBA,EAAK,MAC3B,KAAK,gBAAkBA,EAAK,OACrBA,CACX,EACOC,CACX,IAEIC,GAAqC,UAAY,CAOjD,SAASA,EAAoB3sB,EAAQ4sB,EAAU,CAC3C,IAAIC,EAAcR,GAAmBO,CAAQ,EAO7CjC,GAAmB,KAAM,CAAE,OAAQ3qB,EAAQ,YAAa6sB,CAAW,CAAE,CACzE,CACA,OAAOF,CACX,IAEIG,GAAmC,UAAY,CAW/C,SAASA,EAAkBxe,EAAUye,EAAYC,EAAa,CAc1D,GAPA,KAAK,oBAAsB,GAM3B,KAAK,cAAgB,IAAIlE,GACrB,OAAOxa,GAAa,WACpB,MAAM,IAAI,UAAU,yDAAyD,EAEjF,KAAK,UAAYA,EACjB,KAAK,YAAcye,EACnB,KAAK,aAAeC,CACxB,CAOA,OAAAF,EAAkB,UAAU,QAAU,SAAU9sB,EAAQ,CACpD,GAAI,CAAC,UAAU,OACX,MAAM,IAAI,UAAU,0CAA0C,EAGlE,GAAI,SAAO,QAAY,KAAe,EAAE,mBAAmB,SAG3D,IAAI,EAAEA,aAAkB4qB,GAAY5qB,CAAM,EAAE,SACxC,MAAM,IAAI,UAAU,uCAAuC,EAE/D,IAAIitB,EAAe,KAAK,cAEpBA,EAAa,IAAIjtB,CAAM,IAG3BitB,EAAa,IAAIjtB,EAAQ,IAAI0sB,GAAkB1sB,CAAM,CAAC,EACtD,KAAK,YAAY,YAAY,IAAI,EAEjC,KAAK,YAAY,WACrB,EAOA8sB,EAAkB,UAAU,UAAY,SAAU9sB,EAAQ,CACtD,GAAI,CAAC,UAAU,OACX,MAAM,IAAI,UAAU,0CAA0C,EAGlE,GAAI,SAAO,QAAY,KAAe,EAAE,mBAAmB,SAG3D,IAAI,EAAEA,aAAkB4qB,GAAY5qB,CAAM,EAAE,SACxC,MAAM,IAAI,UAAU,uCAAuC,EAE/D,IAAIitB,EAAe,KAAK,cAEnBA,EAAa,IAAIjtB,CAAM,IAG5BitB,EAAa,OAAOjtB,CAAM,EACrBitB,EAAa,MACd,KAAK,YAAY,eAAe,IAAI,GAE5C,EAMAH,EAAkB,UAAU,WAAa,UAAY,CACjD,KAAK,YAAW,EAChB,KAAK,cAAc,QACnB,KAAK,YAAY,eAAe,IAAI,CACxC,EAOAA,EAAkB,UAAU,aAAe,UAAY,CACnD,IAAII,EAAQ,KACZ,KAAK,YAAW,EAChB,KAAK,cAAc,QAAQ,SAAUC,EAAa,CAC1CA,EAAY,YACZD,EAAM,oBAAoB,KAAKC,CAAW,CAElD,CAAC,CACL,EAOAL,EAAkB,UAAU,gBAAkB,UAAY,CAEtD,GAAK,KAAK,YAGV,KAAI1D,EAAM,KAAK,aAEXD,EAAU,KAAK,oBAAoB,IAAI,SAAUgE,EAAa,CAC9D,OAAO,IAAIR,GAAoBQ,EAAY,OAAQA,EAAY,cAAa,CAAE,CAClF,CAAC,EACD,KAAK,UAAU,KAAK/D,EAAKD,EAASC,CAAG,EACrC,KAAK,YAAW,EACpB,EAMA0D,EAAkB,UAAU,YAAc,UAAY,CAClD,KAAK,oBAAoB,OAAO,CAAC,CACrC,EAMAA,EAAkB,UAAU,UAAY,UAAY,CAChD,OAAO,KAAK,oBAAoB,OAAS,CAC7C,EACOA,CACX,IAKIxC,GAAY,OAAO,QAAY,IAAc,IAAI,QAAY,IAAIxB,GAKjEsE,GAAgC,UAAY,CAO5C,SAASA,EAAe9e,EAAU,CAC9B,GAAI,EAAE,gBAAgB8e,GAClB,MAAM,IAAI,UAAU,oCAAoC,EAE5D,GAAI,CAAC,UAAU,OACX,MAAM,IAAI,UAAU,0CAA0C,EAElE,IAAIL,EAAa1C,GAAyB,cACtCnnB,EAAW,IAAI4pB,GAAkBxe,EAAUye,EAAY,IAAI,EAC/DzC,GAAU,IAAI,KAAMpnB,CAAQ,CAChC,CACA,OAAOkqB,CACX,EAAC,EAED,CACI,UACA,YACA,YACJ,EAAE,QAAQ,SAAUtN,EAAQ,CACxBsN,GAAe,UAAUtN,CAAM,EAAI,UAAY,CAC3C,IAAI1d,EACJ,OAAQA,EAAKkoB,GAAU,IAAI,IAAI,GAAGxK,CAAM,EAAE,MAAM1d,EAAI,SAAS,CACjE,CACJ,CAAC,EAED,IAAIkB,GAAS,UAAY,CAErB,OAAI,OAAOimB,GAAS,eAAmB,IAC5BA,GAAS,eAEb6D,EACX,EAAC,EC35BGC,GAAmB,IAAI,IAC3B,SAAS3E,GAAS4E,EAAU,CAC1BA,EAAS,QAAQ,SAAUC,EAAQ,CACjC,IAAIC,EACAxtB,EAASutB,EAAO,QACnBC,EAAwBH,GAAiB,IAAIrtB,CAAM,KAAO,MAAQwtB,IAA0B,QAAUA,EAAsB,QAAQ,SAAUzqB,EAAU,CACvJ,OAAOA,EAAS/C,CAAM,CACxB,CAAC,CACH,CAAC,CACH,CAGA,IAAIytB,GAAiB,IAAIL,GAAe1E,EAAQ,EAG/B,QAAQ,IAAI,SACZ,QAAQ,IAAI,SAGtB,SAASgF,GAAQ9E,EAASta,EAAU,CACpC+e,GAAiB,IAAIzE,CAAO,IAC/ByE,GAAiB,IAAIzE,EAAS,IAAI,GAAK,EACvC6E,GAAe,QAAQ7E,CAAO,GAEhCyE,GAAiB,IAAIzE,CAAO,EAAE,IAAIta,CAAQ,CAC5C,CACO,SAASqf,GAAU/E,EAASta,EAAU,CACvC+e,GAAiB,IAAIzE,CAAO,IAC9ByE,GAAiB,IAAIzE,CAAO,EAAE,OAAOta,CAAQ,EACxC+e,GAAiB,IAAIzE,CAAO,EAAE,OACjC6E,GAAe,UAAU7E,CAAO,EAChCyE,GAAiB,OAAOzE,CAAO,GAGrC,CCpCA,SAASgF,GAAgBvvB,EAAG0Q,EAAG,CAC7B,GAAI,EAAE1Q,aAAa0Q,GAAI,MAAM,IAAI,UAAU,mCAAmC,CAChF,CCDA,SAAS8e,GAAkB,EAAGzsB,EAAG,CAC/B,QAAS7C,EAAI,EAAGA,EAAI6C,EAAE,OAAQ7C,IAAK,CACjC,IAAIgG,EAAInD,EAAE7C,CAAC,EACXgG,EAAE,WAAaA,EAAE,YAAc,GAAIA,EAAE,aAAe,GAAI,UAAWA,IAAMA,EAAE,SAAW,IAAK,OAAO,eAAe,EAAG8d,GAAc9d,EAAE,GAAG,EAAGA,CAAC,CAC7I,CACF,CACA,SAASupB,GAAa,EAAG1sB,EAAG7C,EAAG,CAC7B,OAAO6C,GAAKysB,GAAkB,EAAE,UAAWzsB,CAAC,EAAG7C,GAAKsvB,GAAkB,EAAGtvB,CAAC,EAAG,OAAO,eAAe,EAAG,YAAa,CACjH,SAAU,EACd,CAAG,EAAG,CACN,CCXA,SAASwvB,GAAgBxvB,EAAGc,EAAG,CAC7B,OAAO0uB,GAAkB,OAAO,eAAiB,OAAO,eAAe,KAAI,EAAK,SAAUxvB,EAAGc,EAAG,CAC9F,OAAOd,EAAE,UAAYc,EAAGd,CAC1B,EAAGwvB,GAAgBxvB,EAAGc,CAAC,CACzB,CCHA,SAAS2uB,GAAUzvB,EAAGc,EAAG,CACvB,GAAkB,OAAOA,GAArB,YAAmCA,IAAT,KAAY,MAAM,IAAI,UAAU,oDAAoD,EAClHd,EAAE,UAAY,OAAO,OAAOc,GAAKA,EAAE,UAAW,CAC5C,YAAa,CACX,MAAOd,EACP,SAAU,GACV,aAAc,EACpB,CACA,CAAG,EAAG,OAAO,eAAeA,EAAG,YAAa,CACxC,SAAU,EACd,CAAG,EAAGc,GAAK4uB,GAAe1vB,EAAGc,CAAC,CAC9B,CCZA,SAAS6uB,GAAgB3vB,EAAG,CAC1B,OAAO2vB,GAAkB,OAAO,eAAiB,OAAO,eAAe,KAAI,EAAK,SAAU,EAAG,CAC3F,OAAO,EAAE,WAAa,OAAO,eAAe,CAAC,CAC/C,EAAGA,GAAgB3vB,CAAC,CACtB,CCJA,SAAS4vB,IAA4B,CACnC,GAAI,CACF,IAAI5vB,EAAI,CAAC,QAAQ,UAAU,QAAQ,KAAK,QAAQ,UAAU,QAAS,CAAA,EAAI,UAAY,CAAC,CAAC,CAAC,CACxF,MAAY,CAAC,CACb,OAAQ4vB,GAA4B,UAAqC,CACvE,MAAO,CAAC,CAAC5vB,CACX,GAAC,CACH,CCPA,SAAS6vB,GAAuB,EAAG,CACjC,GAAe,IAAX,OAAc,MAAM,IAAI,eAAe,2DAA2D,EACtG,OAAO,CACT,CCDA,SAASC,GAA2B9vB,EAAGc,EAAG,CACxC,GAAIA,IAAkB2hB,GAAQ3hB,CAAC,GAArB,UAAwC,OAAOA,GAArB,YAAyB,OAAOA,EACpE,GAAeA,IAAX,OAAc,MAAM,IAAI,UAAU,0DAA0D,EAChG,OAAOivB,GAAsB/vB,CAAC,CAChC,CCHA,SAASgwB,GAAahwB,EAAG,CACvB,IAAI6C,EAAIotB,GAAwB,EAChC,OAAO,UAAY,CACjB,IAAInvB,EACFkF,EAAIkqB,GAAelwB,CAAC,EACtB,GAAI6C,EAAG,CACL,IAAI9C,EAAImwB,GAAe,IAAI,EAAE,YAC7BpvB,EAAI,QAAQ,UAAUkF,EAAG,UAAWjG,CAAC,CACvC,MAAOe,EAAIkF,EAAE,MAAM,KAAM,SAAS,EAClC,OAAOmqB,GAA0B,KAAMrvB,CAAC,CAC1C,CACF,CCNA,IAAIsvB,GAA0B,SAAUC,EAAkB,CACxDZ,GAAUW,EAAYC,CAAgB,EACtC,IAAIC,EAASN,GAAaI,CAAU,EACpC,SAASA,GAAa,CACpBf,OAAAA,GAAgB,KAAMe,CAAU,EACzBE,EAAO,MAAM,KAAM,SAAS,CACrC,CACAf,OAAAA,GAAaa,EAAY,CAAC,CACxB,IAAK,SACL,MAAO,UAAkB,CACvB,OAAO,KAAK,MAAM,QACpB,CACJ,CAAG,CAAC,EACKA,CACT,EAAEzT,EAAM,SAAS,ECdjB,SAAS4T,GAAeva,EAAOP,EAAK,CAClC,IAAIsN,EAAW/M,EAAM,SACnBwa,EAAWxa,EAAM,SACfya,EAAa9T,EAAM,OAAO,IAAI,EAC9B+T,EAAa/T,EAAM,OAAO,IAAI,EAC9BuN,EAAqBvN,EAAM,WAAWkN,EAAiB,EAGvD8G,EAAgB,OAAO5N,GAAa,WACpC6N,EAAiBD,EAAgB5N,EAAS0N,CAAU,EAAI1N,EAGxD8N,EAAUlU,EAAM,OAAO,CACzB,MAAO,GACP,OAAQ,GACR,YAAa,GACb,aAAc,EAClB,CAAG,EAGGmU,EAAS,CAACH,GAA8BhU,EAAM,eAAeiU,CAAc,GAAKvH,GAAWuH,CAAc,EACzGG,EAAYD,EAASnH,GAAWiH,CAAc,EAAI,KAClDI,EAAY9H,GAAc6H,EAAWN,CAAU,EAC/CQ,EAAS,UAAkB,CAC7B,IAAIC,EACJ,OAAO5M,GAAYmM,EAAW,OAAO,IAErCA,EAAW,SAAWhO,GAAQgO,EAAW,OAAO,IAAM,SAAWnM,IAAa4M,EAAsBT,EAAW,WAAa,MAAQS,IAAwB,OAAS,OAASA,EAAoB,aAAa,EAAI,OAAS5M,GAAYoM,EAAW,OAAO,CAC5P,EACA/T,EAAM,oBAAoBlH,EAAK,UAAY,CACzC,OAAOwb,EAAM,CACf,CAAC,EAGD,IAAIE,EAAWxU,EAAM,OAAO3G,CAAK,EACjCmb,EAAS,QAAUnb,EAGnB,IAAIob,EAAmBzU,EAAM,YAAY,SAAUlb,EAAQ,CACzD,IAAI4vB,EAAoBF,EAAS,QAC/BhH,EAAWkH,EAAkB,SAC7BhwB,EAAOgwB,EAAkB,KACvBC,EAAwB7vB,EAAO,sBAAqB,EACtD8rB,EAAQ+D,EAAsB,MAC9B9D,EAAS8D,EAAsB,OAC7BC,EAAc9vB,EAAO,YACvB+vB,EAAe/vB,EAAO,aAOpBgwB,EAAa,KAAK,MAAMlE,CAAK,EAC7BmE,EAAc,KAAK,MAAMlE,CAAM,EACnC,GAAIqD,EAAQ,QAAQ,QAAUY,GAAcZ,EAAQ,QAAQ,SAAWa,GAAeb,EAAQ,QAAQ,cAAgBU,GAAeV,EAAQ,QAAQ,eAAiBW,EAAc,CAClL,IAAIpH,EAAO,CACT,MAAOqH,EACP,OAAQC,EACR,YAAaH,EACb,aAAcC,CACtB,EACMX,EAAQ,QAAUzG,EAGlB,IAAIuH,EAAoBJ,IAAgB,KAAK,MAAMhE,CAAK,EAAIA,EAAQgE,EAChEK,EAAqBJ,IAAiB,KAAK,MAAMhE,CAAM,EAAIA,EAASgE,EACpEK,EAAWC,EAAcA,EAAc,CAAA,EAAI1H,CAAI,EAAG,GAAI,CACxD,YAAauH,EACb,aAAcC,CACtB,CAAO,EAGD1H,GAAuB,MAAyCA,EAAmB2H,EAAUpwB,EAAQJ,CAAI,EACrG8oB,GAEF,QAAQ,UAAU,KAAK,UAAY,CACjCA,EAAS0H,EAAUpwB,CAAM,CAC3B,CAAC,CAEL,CACF,EAAG,CAAA,CAAE,EAGLkb,OAAAA,EAAM,UAAU,UAAY,CAC1B,IAAIoV,EAAiBd,EAAM,EAC3B,OAAIc,GAAkB,CAACvB,GACrBrB,GAAQ4C,EAAgBX,CAAgB,EAEnC,UAAY,CACjB,OAAOhC,GAAU2C,EAAgBX,CAAgB,CACnD,CACF,EAAG,CAACX,EAAW,QAASD,CAAQ,CAAC,EAGb7T,EAAM,cAAcyT,GAAY,CAClD,IAAKM,CACT,EAAKI,EAAsBnU,EAAM,aAAaiU,EAAgB,CAC1D,IAAKI,CACT,CAAG,EAAIJ,CAAc,CACrB,CACA,IAAIoB,GAAiCrV,EAAM,WAAW4T,EAAc,EAChE,QAAQ,IAAI,WAAa,eAC3ByB,GAAkB,YAAc,kBCzGlC,IAAIC,GAAsB,kBAI1B,SAASpD,GAAe7Y,EAAOP,EAAK,CAClC,IAAIsN,EAAW/M,EAAM,SACjBkc,EAAa,OAAOnP,GAAa,WAAa,CAACA,CAAQ,EAAID,GAAQC,CAAQ,EAC/E,OAAI,QAAQ,IAAI,WAAa,eACvBmP,EAAW,OAAS,EACtB9O,GAAQ,GAAO,gHAAgH,EACtH8O,EAAW,SAAW,GAC/B9O,GAAQ,GAAO,+DAA+D,GAG3E8O,EAAW,IAAI,SAAUlP,EAAOje,EAAO,CAC5C,IAAI3E,GAAO4iB,GAAU,KAA2B,OAASA,EAAM,MAAQ,GAAG,OAAOiP,GAAqB,GAAG,EAAE,OAAOltB,CAAK,EACvH,OAAoB4X,EAAM,cAAc4T,GAAgB/N,GAAS,CAAA,EAAIxM,EAAO,CAC1E,IAAK5V,EACL,IAAK2E,IAAU,EAAI0Q,EAAM,MAC/B,CAAK,EAAGuN,CAAK,CACX,CAAC,CACH,CACA,IAAImP,GAAiCxV,EAAM,WAAWkS,EAAc,EAChE,QAAQ,IAAI,WAAa,eAC3BsD,GAAkB,YAAc,kBAElCA,GAAkB,WAAarI,GChC/B,SAASsI,GAAkBvvB,EAAG/C,EAAG,EACtBA,GAAR,MAAaA,EAAI+C,EAAE,UAAY/C,EAAI+C,EAAE,QACtC,QAAS/B,EAAI,EAAG0P,EAAI,MAAM1Q,CAAC,EAAGgB,EAAIhB,EAAGgB,IAAK0P,EAAE1P,CAAC,EAAI+B,EAAE/B,CAAC,EACpD,OAAO0P,CACT,CCHA,SAAS6hB,GAAmBxvB,EAAG,CAC7B,GAAI,MAAM,QAAQA,CAAC,EAAG,OAAOyvB,GAAiBzvB,CAAC,CACjD,CCHA,SAAS0vB,GAAiB1vB,EAAG,CAC3B,GAAmB,OAAO,OAAtB,KAAwCA,EAAE,OAAO,QAAQ,GAAzB,MAAsCA,EAAE,YAAY,GAAtB,KAAyB,OAAO,MAAM,KAAKA,CAAC,CAChH,CCDA,SAAS2vB,GAA4B3vB,EAAG/C,EAAG,CACzC,GAAI+C,EAAG,CACL,GAAgB,OAAOA,GAAnB,SAAsB,OAAOyvB,GAAiBzvB,EAAG/C,CAAC,EACtD,IAAIE,EAAI,CAAA,EAAG,SAAS,KAAK6C,CAAC,EAAE,MAAM,EAAG,EAAE,EACvC,OAAoB7C,IAAb,UAAkB6C,EAAE,cAAgB7C,EAAI6C,EAAE,YAAY,MAAiB7C,IAAV,OAAyBA,IAAV,MAAc,MAAM,KAAK6C,CAAC,EAAoB7C,IAAhB,aAAqB,2CAA2C,KAAKA,CAAC,EAAIsyB,GAAiBzvB,EAAG/C,CAAC,EAAI,MACtN,CACF,CCPA,SAAS2yB,IAAqB,CAC5B,MAAM,IAAI,UAAU;AAAA,mFAAsI,CAC5J,CCEA,SAASC,GAAmB7vB,EAAG,CAC7B,OAAO8vB,GAAkB9vB,CAAC,GAAK+vB,GAAgB/vB,CAAC,GAAKgwB,GAA2BhwB,CAAC,GAAKiwB,GAAiB,CACzG,CCNA,IAAIC,GAAM,SAAahjB,EAAU,CAC/B,MAAO,CAAC,WAAWA,EAAU,EAAE,CACjC,EACIijB,GAAM,SAAaC,EAAK,CAC1B,OAAO,aAAaA,CAAG,CACzB,EACI,OAAO,OAAW,KAAe,0BAA2B,SAC9DF,GAAM,SAAahjB,EAAU,CAC3B,OAAO,OAAO,sBAAsBA,CAAQ,CAC9C,EACAijB,GAAM,SAAaE,EAAQ,CACzB,OAAO,OAAO,qBAAqBA,CAAM,CAC3C,GAEF,IAAIC,GAAU,EACVC,GAAS,IAAI,IACjB,SAASC,GAAQ7R,EAAI,CACnB4R,GAAO,OAAO5R,CAAE,CAClB,CACA,IAAI8R,GAAa,SAAoBvjB,EAAU,CAC7C,IAAIwjB,EAAQ,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,EAChFJ,IAAW,EACX,IAAI3R,EAAK2R,GACT,SAASK,EAAQC,EAAW,CAC1B,GAAIA,IAAc,EAEhBJ,GAAQ7R,CAAE,EAGVzR,EAAQ,MACH,CAEL,IAAI2jB,EAASX,GAAI,UAAY,CAC3BS,EAAQC,EAAY,CAAC,CACvB,CAAC,EAGDL,GAAO,IAAI5R,EAAIkS,CAAM,CACvB,CACF,CACA,OAAAF,EAAQD,CAAK,EACN/R,CACT,EACA8R,GAAW,OAAS,SAAU9R,EAAI,CAChC,IAAIkS,EAASN,GAAO,IAAI5R,CAAE,EAC1B,OAAA6R,GAAQ7R,CAAE,EACHwR,GAAIU,CAAM,CACnB,EACI,QAAQ,IAAI,WAAa,eAC3BJ,GAAW,IAAM,UAAY,CAC3B,OAAOF,EACT,GCnDF,SAASO,GAAgB9wB,EAAG,CAC1B,GAAI,MAAM,QAAQA,CAAC,EAAG,OAAOA,CAC/B,CCFA,SAAS+wB,GAAsB/wB,EAAGwF,EAAG,CACnC,IAAIrI,EAAY6C,GAAR,KAAY,KAAsB,OAAO,OAAtB,KAAgCA,EAAE,OAAO,QAAQ,GAAKA,EAAE,YAAY,EAC/F,GAAY7C,GAAR,KAAW,CACb,IAAIc,EACF0P,EACArN,EACA0hB,EACA/kB,EAAI,CAAA,EACJmN,EAAI,GACJjH,EAAI,GACN,GAAI,CACF,GAAI7C,GAAKnD,EAAIA,EAAE,KAAK6C,CAAC,GAAG,KAAYwF,IAAN,EAAS,CACrC,GAAI,OAAOrI,CAAC,IAAMA,EAAG,OACrBiN,EAAI,EACN,KAAO,MAAO,EAAEA,GAAKnM,EAAIqC,EAAE,KAAKnD,CAAC,GAAG,QAAUF,EAAE,KAAKgB,EAAE,KAAK,EAAGhB,EAAE,SAAWuI,GAAI4E,EAAI,GAAG,CACzF,OAASpK,EAAG,CACVmD,EAAI,GAAIwK,EAAI3N,CACd,QAAC,CACC,GAAI,CACF,GAAI,CAACoK,GAAajN,EAAE,QAAV,OAAwB6kB,EAAI7kB,EAAE,OAAS,EAAI,OAAO6kB,CAAC,IAAMA,GAAI,MACzE,QAAC,CACC,GAAI7e,EAAG,MAAMwK,CACf,CACF,CACA,OAAO1Q,CACT,CACF,CC1BA,SAAS+zB,IAAmB,CAC1B,MAAM,IAAI,UAAU;AAAA,mFAA2I,CACjK,CCEA,SAASC,GAAejxB,EAAG/B,EAAG,CAC5B,OAAOizB,GAAelxB,CAAC,GAAKmxB,GAAqBnxB,EAAG/B,CAAC,GAAK+xB,GAA2BhwB,EAAG/B,CAAC,GAAKmzB,GAAe,CAC/G,CCHA,SAASC,GAAQpyB,EAAK,CAYpB,QANI8iB,EAAI,EAEJ/jB,EACAsC,EAAI,EACJgxB,EAAMryB,EAAI,OAEPqyB,GAAO,EAAG,EAAEhxB,EAAGgxB,GAAO,EAC3BtzB,EAAIiB,EAAI,WAAWqB,CAAC,EAAI,KAAQrB,EAAI,WAAW,EAAEqB,CAAC,EAAI,MAAS,GAAKrB,EAAI,WAAW,EAAEqB,CAAC,EAAI,MAAS,IAAMrB,EAAI,WAAW,EAAEqB,CAAC,EAAI,MAAS,GACxItC,GAECA,EAAI,OAAU,aAAeA,IAAM,IAAM,OAAU,IACpDA,GAEAA,IAAM,GACN+jB,GAEC/jB,EAAI,OAAU,aAAeA,IAAM,IAAM,OAAU,KAEnD+jB,EAAI,OAAU,aAAeA,IAAM,IAAM,OAAU,IAItD,OAAQuP,EAAG,CACT,IAAK,GACHvP,IAAM9iB,EAAI,WAAWqB,EAAI,CAAC,EAAI,MAAS,GAEzC,IAAK,GACHyhB,IAAM9iB,EAAI,WAAWqB,EAAI,CAAC,EAAI,MAAS,EAEzC,IAAK,GACHyhB,GAAK9iB,EAAI,WAAWqB,CAAC,EAAI,IACzByhB,GAECA,EAAI,OAAU,aAAeA,IAAM,IAAM,OAAU,GAC1D,CAIE,OAAAA,GAAKA,IAAM,GACXA,GAECA,EAAI,OAAU,aAAeA,IAAM,IAAM,OAAU,MAC3CA,EAAIA,IAAM,MAAQ,GAAG,SAAS,EAAE,CAC3C,CCpDe,SAASwP,IAAY,CAClC,MAAO,CAAC,EAAE,OAAO,OAAW,KAAe,OAAO,UAAY,OAAO,SAAS,cAChF,CCFe,SAASC,GAASC,EAAM9jB,EAAG,CACxC,GAAI,CAAC8jB,EACH,MAAO,GAIT,GAAIA,EAAK,SACP,OAAOA,EAAK,SAAS9jB,CAAC,EAKxB,QADI4T,EAAO5T,EACJ4T,GAAM,CACX,GAAIA,IAASkQ,EACX,MAAO,GAETlQ,EAAOA,EAAK,UACd,CACA,MAAO,EACT,CChBA,IAAImQ,GAAe,gBACfC,GAAkB,mBAClBC,GAAW,cACXC,GAAiB,IAAI,IACzB,SAASC,IAAU,CACjB,IAAItc,EAAO,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAA,EAC7Euc,EAAOvc,EAAK,KACd,OAAIuc,EACKA,EAAK,WAAW,OAAO,EAAIA,EAAO,QAAQ,OAAOA,CAAI,EAEvDH,EACT,CACA,SAASI,GAAa5qB,EAAQ,CAC5B,GAAIA,EAAO,SACT,OAAOA,EAAO,SAEhB,IAAI6qB,EAAO,SAAS,cAAc,MAAM,EACxC,OAAOA,GAAQ,SAAS,IAC1B,CACA,SAASC,GAASC,EAAS,CACzB,OAAIA,IAAY,QACP,eAEFA,EAAU,UAAY,QAC/B,CAKA,SAASC,GAAWC,EAAW,CAC7B,OAAO,MAAM,MAAMR,GAAe,IAAIQ,CAAS,GAAKA,GAAW,QAAQ,EAAE,OAAO,SAAU9Q,EAAM,CAC9F,OAAOA,EAAK,UAAY,OAC1B,CAAC,CACH,CACO,SAAS+Q,GAAUC,EAAK,CAC7B,IAAInrB,EAAS,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAA,EACjF,GAAI,CAACmqB,GAAS,EACZ,OAAO,KAET,IAAIiB,EAAMprB,EAAO,IACf+qB,EAAU/qB,EAAO,QACjBqrB,EAAmBrrB,EAAO,SAC1BsrB,EAAWD,IAAqB,OAAS,EAAIA,EAC3CE,EAAcT,GAASC,CAAO,EAC9BS,EAAiBD,IAAgB,eACjCE,EAAY,SAAS,cAAc,OAAO,EAC9CA,EAAU,aAAanB,GAAciB,CAAW,EAC5CC,GAAkBF,GACpBG,EAAU,aAAalB,GAAiB,GAAG,OAAOe,CAAQ,CAAC,EAEzDF,GAAQ,MAA0BA,EAAI,QACxCK,EAAU,MAAQL,GAAQ,KAAyB,OAASA,EAAI,OAElEK,EAAU,UAAYN,EACtB,IAAIF,EAAYL,GAAa5qB,CAAM,EAC/B0rB,EAAaT,EAAU,WAC3B,GAAIF,EAAS,CAEX,GAAIS,EAAgB,CAClB,IAAIG,GAAc3rB,EAAO,QAAUgrB,GAAWC,CAAS,GAAG,OAAO,SAAU9Q,EAAM,CAE/E,GAAI,CAAC,CAAC,UAAW,cAAc,EAAE,SAASA,EAAK,aAAamQ,EAAY,CAAC,EACvE,MAAO,GAIT,IAAIsB,EAAe,OAAOzR,EAAK,aAAaoQ,EAAe,GAAK,CAAC,EACjE,OAAOe,GAAYM,CACrB,CAAC,EACD,GAAID,EAAW,OACb,OAAAV,EAAU,aAAaQ,EAAWE,EAAWA,EAAW,OAAS,CAAC,EAAE,WAAW,EACxEF,CAEX,CAGAR,EAAU,aAAaQ,EAAWC,CAAU,CAC9C,MACET,EAAU,YAAYQ,CAAS,EAEjC,OAAOA,CACT,CACA,SAASI,GAAc11B,EAAK,CAC1B,IAAI6J,EAAS,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAA,EAC7EirB,EAAYL,GAAa5qB,CAAM,EACnC,OAAQA,EAAO,QAAUgrB,GAAWC,CAAS,GAAG,KAAK,SAAU9Q,EAAM,CACnE,OAAOA,EAAK,aAAauQ,GAAQ1qB,CAAM,CAAC,IAAM7J,CAChD,CAAC,CACH,CACO,SAAS21B,GAAU31B,EAAK,CAC7B,IAAI6J,EAAS,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAA,EAC7E+rB,EAAYF,GAAc11B,EAAK6J,CAAM,EACzC,GAAI+rB,EAAW,CACb,IAAId,EAAYL,GAAa5qB,CAAM,EACnCirB,EAAU,YAAYc,CAAS,CACjC,CACF,CAKA,SAASC,GAAkBf,EAAWjrB,EAAQ,CAC5C,IAAIisB,EAAsBxB,GAAe,IAAIQ,CAAS,EAGtD,GAAI,CAACgB,GAAuB,CAAC7B,GAAS,SAAU6B,CAAmB,EAAG,CACpE,IAAIC,EAAmBhB,GAAU,GAAIlrB,CAAM,EACvCmsB,EAAaD,EAAiB,WAClCzB,GAAe,IAAIQ,EAAWkB,CAAU,EACxClB,EAAU,YAAYiB,CAAgB,CACxC,CACF,CAQO,SAASE,GAAUjB,EAAKh1B,EAAK,CAClC,IAAIk2B,EAAe,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAA,EACnFpB,EAAYL,GAAayB,CAAY,EACrC3J,EAASsI,GAAWC,CAAS,EAC7BjrB,EAAS6nB,EAAcA,EAAc,CAAA,EAAIwE,CAAY,EAAG,GAAI,CAC9D,OAAQ3J,CACZ,CAAG,EAGDsJ,GAAkBf,EAAWjrB,CAAM,EACnC,IAAI+rB,EAAYF,GAAc11B,EAAK6J,CAAM,EACzC,GAAI+rB,EAAW,CACb,IAAIO,EAAaC,EACjB,IAAKD,EAActsB,EAAO,OAAS,MAAQssB,IAAgB,QAAUA,EAAY,OAASP,EAAU,UAAYQ,EAAevsB,EAAO,OAAS,MAAQusB,IAAiB,OAAS,OAASA,EAAa,OAAQ,CAC7M,IAAIC,EACJT,EAAU,OAASS,EAAexsB,EAAO,OAAS,MAAQwsB,IAAiB,OAAS,OAASA,EAAa,KAC5G,CACA,OAAIT,EAAU,YAAcZ,IAC1BY,EAAU,UAAYZ,GAEjBY,CACT,CACA,IAAIU,EAAUvB,GAAUC,EAAKnrB,CAAM,EACnC,OAAAysB,EAAQ,aAAa/B,GAAQ1qB,CAAM,EAAG7J,CAAG,EAClCs2B,CACT,CCnJA,SAASC,GAA8B9zB,EAAG/B,EAAG,CAC3C,GAAY+B,GAAR,KAAW,MAAO,CAAA,EACtB,IAAI7C,EAAI,CAAA,EACR,QAASwQ,KAAK3N,EAAG,GAAI,CAAA,EAAG,eAAe,KAAKA,EAAG2N,CAAC,EAAG,CACjD,GAAW1P,EAAE,QAAQ0P,CAAC,IAAlB,GAAqB,SACzBxQ,EAAEwQ,CAAC,EAAI3N,EAAE2N,CAAC,CACZ,CACA,OAAOxQ,CACT,CCPA,SAAS42B,GAAyB,EAAG,EAAG,CACtC,GAAY,GAAR,KAAW,MAAO,CAAA,EACtB,IAAI5wB,EACF,EACA,EAAI6wB,GAA6B,EAAG,CAAC,EACvC,GAAI,OAAO,sBAAuB,CAChC,IAAIrmB,EAAI,OAAO,sBAAsB,CAAC,EACtC,IAAK,EAAI,EAAG,EAAIA,EAAE,OAAQ,IAAKxK,EAAIwK,EAAE,CAAC,EAAU,EAAE,QAAQxK,CAAC,IAAlB,IAAuB,CAAA,EAAG,qBAAqB,KAAK,EAAGA,CAAC,IAAM,EAAEA,CAAC,EAAI,EAAEA,CAAC,EACnH,CACA,OAAO,CACT,CCDA,SAAS8wB,GAAQC,EAAMC,EAAM,CAC3B,IAAIC,EAAU,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAE9EC,EAAS,IAAI,IACjB,SAASC,EAAUr3B,EAAG4kB,EAAG,CACvB,IAAI0S,EAAQ,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,EAC5EC,EAAWH,EAAO,IAAIp3B,CAAC,EAE3B,GADAsjB,GAAQ,CAACiU,EAAU,2CAA2C,EAC1DA,EACF,MAAO,GAET,GAAIv3B,IAAM4kB,EACR,MAAO,GAET,GAAIuS,GAAWG,EAAQ,EACrB,MAAO,GAETF,EAAO,IAAIp3B,CAAC,EACZ,IAAIw3B,EAAWF,EAAQ,EACvB,GAAI,MAAM,QAAQt3B,CAAC,EAAG,CACpB,GAAI,CAAC,MAAM,QAAQ4kB,CAAC,GAAK5kB,EAAE,SAAW4kB,EAAE,OACtC,MAAO,GAET,QAASvhB,EAAI,EAAGA,EAAIrD,EAAE,OAAQqD,IAC5B,GAAI,CAACg0B,EAAUr3B,EAAEqD,CAAC,EAAGuhB,EAAEvhB,CAAC,EAAGm0B,CAAQ,EACjC,MAAO,GAGX,MAAO,EACT,CACA,GAAIx3B,GAAK4kB,GAAKjC,GAAQ3iB,CAAC,IAAM,UAAY2iB,GAAQiC,CAAC,IAAM,SAAU,CAChE,IAAIne,EAAO,OAAO,KAAKzG,CAAC,EACxB,OAAIyG,EAAK,SAAW,OAAO,KAAKme,CAAC,EAAE,OAC1B,GAEFne,EAAK,MAAM,SAAUnG,EAAK,CAC/B,OAAO+2B,EAAUr3B,EAAEM,CAAG,EAAGskB,EAAEtkB,CAAG,EAAGk3B,CAAQ,CAC3C,CAAC,CACH,CAEA,MAAO,EACT,CACA,OAAOH,EAAUJ,EAAMC,CAAI,CAC7B,CChDA,IAAIO,GAAQ,IAGL,SAASC,GAAQjxB,EAAM,CAC5B,OAAOA,EAAK,KAAKgxB,EAAK,CACxB,CACA,IAAIE,GAAsB,UAAY,CACpC,SAASA,EAAOC,EAAY,CAC1BrI,GAAgB,KAAMoI,CAAM,EAC5B1T,EAAgB,KAAM,aAAc,MAAM,EAE1CA,EAAgB,KAAM,QAAS,IAAI,GAAK,EACxC,KAAK,WAAa2T,CACpB,CACAnI,OAAAA,GAAakI,EAAQ,CAAC,CACpB,IAAK,MACL,MAAO,SAAalxB,EAAM,CACxB,OAAO,KAAK,MAAMixB,GAAQjxB,CAAI,CAAC,CACjC,CAGJ,EAAK,CACD,IAAK,QACL,MAAO,SAAeoxB,EAAY,CAChC,OAAO,KAAK,MAAM,IAAIA,CAAU,GAAK,IACvC,CACJ,EAAK,CACD,IAAK,SACL,MAAO,SAAgBpxB,EAAMqxB,EAAS,CACpC,OAAO,KAAK,SAASJ,GAAQjxB,CAAI,EAAGqxB,CAAO,CAC7C,CAGJ,EAAK,CACD,IAAK,WACL,MAAO,SAAkBD,EAAYC,EAAS,CAC5C,IAAIC,EAAY,KAAK,MAAM,IAAIF,CAAU,EACrCG,EAAYF,EAAQC,CAAS,EAC7BC,IAAc,KAChB,KAAK,MAAM,OAAOH,CAAU,EAE5B,KAAK,MAAM,IAAIA,EAAYG,CAAS,CAExC,CACJ,CAAG,CAAC,EACKL,CACT,EAAC,EC5CUM,GAAa,kBACbC,GAAY,gBACZC,GAAkB,kBAGlBC,GAAqB,uBACzB,SAASC,IAAc,CAC5B,IAAIC,EAAoB,KAAK,OAAM,EAAG,SAAS,EAAE,EAAE,MAAM,CAAC,EAI1D,GAAI,OAAO,SAAa,KAAe,SAAS,MAAQ,SAAS,KAAM,CACrE,IAAIzL,EAAS,SAAS,KAAK,iBAAiB,SAAS,OAAOqL,GAAW,GAAG,CAAC,GAAK,CAAA,EAC5ErC,EAAa,SAAS,KAAK,WAC/B,MAAM,KAAKhJ,CAAM,EAAE,QAAQ,SAAU0L,EAAO,CAC1CA,EAAMH,EAAkB,EAAIG,EAAMH,EAAkB,GAAKE,EAGrDC,EAAMH,EAAkB,IAAME,GAChC,SAAS,KAAK,aAAaC,EAAO1C,CAAU,CAEhD,CAAC,EAGD,IAAI2C,EAAY,CAAA,EAChB,MAAM,KAAK,SAAS,iBAAiB,SAAS,OAAON,GAAW,GAAG,CAAC,CAAC,EAAE,QAAQ,SAAUK,EAAO,CAC9F,IAAItf,EAAOsf,EAAM,aAAaL,EAAS,EACvC,GAAIM,EAAUvf,CAAI,GAChB,GAAIsf,EAAMH,EAAkB,IAAME,EAAmB,CACnD,IAAIG,GACHA,EAAoBF,EAAM,cAAgB,MAAQE,IAAsB,QAAUA,EAAkB,YAAYF,CAAK,CACxH,OAEAC,EAAUvf,CAAI,EAAI,EAEtB,CAAC,CACH,CACA,OAAO,IAAIyf,GAAYJ,CAAiB,CAC1C,CACA,IAAIK,GAA4B9b,EAAM,cAAc,CAClD,aAAc,MACd,MAAOwb,GAAW,EAClB,aAAc,EAChB,CAAC,EC5CM,SAASO,GAAqBC,EAAMC,EAAO,CAChD,GAAID,EAAK,SAAWC,EAAM,OACxB,MAAO,GAET,QAASz1B,EAAI,EAAGA,EAAIw1B,EAAK,OAAQx1B,IAC/B,GAAIw1B,EAAKx1B,CAAC,IAAMy1B,EAAMz1B,CAAC,EACrB,MAAO,GAGX,MAAO,EACT,CACA,IAAI01B,GAA0B,UAAY,CACxC,SAASA,GAAa,CACpBxJ,GAAgB,KAAMwJ,CAAU,EAChC9U,EAAgB,KAAM,QAAS,MAAM,EACrCA,EAAgB,KAAM,OAAQ,MAAM,EACpCA,EAAgB,KAAM,iBAAkB,MAAM,EAC9C,KAAK,MAAQ,IAAI,IACjB,KAAK,KAAO,CAAA,EACZ,KAAK,eAAiB,CACxB,CACAwL,OAAAA,GAAasJ,EAAY,CAAC,CACxB,IAAK,OACL,MAAO,UAAgB,CACrB,OAAO,KAAK,KAAK,MACnB,CACJ,EAAK,CACD,IAAK,cACL,MAAO,SAAqBC,EAAkB,CAC5C,IAAIC,EAASC,EACTC,EAAkB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACtFvqB,EAAQ,CACV,IAAK,KAAK,KAClB,EACM,OAAAoqB,EAAiB,QAAQ,SAAUI,EAAY,CAC7C,GAAI,CAACxqB,EACHA,EAAQ,WACH,CACL,IAAIyqB,EACJzqB,GAASyqB,EAASzqB,KAAW,MAAQyqB,IAAW,SAAWA,EAASA,EAAO,OAAS,MAAQA,IAAW,OAAS,OAASA,EAAO,IAAID,CAAU,CAChJ,CACF,CAAC,GACIH,EAAUrqB,KAAW,MAAQqqB,IAAY,QAAUA,EAAQ,OAASE,IACvEvqB,EAAM,MAAM,CAAC,EAAI,KAAK,mBAEhBsqB,EAAUtqB,KAAW,MAAQsqB,IAAY,OAAS,OAASA,EAAQ,KAC7E,CACJ,EAAK,CACD,IAAK,MACL,MAAO,SAAaF,EAAkB,CACpC,IAAIM,EACJ,OAAQA,EAAoB,KAAK,YAAYN,EAAkB,EAAI,KAAO,MAAQM,IAAsB,OAAS,OAASA,EAAkB,CAAC,CAC/I,CACJ,EAAK,CACD,IAAK,MACL,MAAO,SAAaN,EAAkB,CACpC,MAAO,CAAC,CAAC,KAAK,YAAYA,CAAgB,CAC5C,CACJ,EAAK,CACD,IAAK,MACL,MAAO,SAAaA,EAAkBv3B,EAAO,CAC3C,IAAIotB,EAAQ,KAEZ,GAAI,CAAC,KAAK,IAAImK,CAAgB,EAAG,CAC/B,GAAI,KAAK,OAAS,EAAID,EAAW,eAAiBA,EAAW,iBAAkB,CAC7E,IAAIQ,EAAoB,KAAK,KAAK,OAAO,SAAUn0B,EAAQ9E,EAAK,CAC5D,IAAIk5B,EAAUxF,GAAe5uB,EAAQ,CAAC,EACpCq0B,EAAYD,EAAQ,CAAC,EACvB,OAAI3K,EAAM,YAAYvuB,CAAG,EAAE,CAAC,EAAIm5B,EACvB,CAACn5B,EAAKuuB,EAAM,YAAYvuB,CAAG,EAAE,CAAC,CAAC,EAEjC8E,CACT,EAAG,CAAC,KAAK,KAAK,CAAC,EAAG,KAAK,cAAc,CAAC,EACtCs0B,EAAqB1F,GAAeuF,EAAmB,CAAC,EACxDI,EAAYD,EAAmB,CAAC,EAClC,KAAK,OAAOC,CAAS,CACvB,CACA,KAAK,KAAK,KAAKX,CAAgB,CACjC,CACA,IAAIpqB,EAAQ,KAAK,MACjBoqB,EAAiB,QAAQ,SAAUI,EAAYn0B,EAAO,CACpD,GAAIA,IAAU+zB,EAAiB,OAAS,EACtCpqB,EAAM,IAAIwqB,EAAY,CACpB,MAAO,CAAC33B,EAAOotB,EAAM,gBAAgB,CACjD,CAAW,MACI,CACL,IAAI+K,EAAahrB,EAAM,IAAIwqB,CAAU,EAChCQ,EAIOA,EAAW,MACrBA,EAAW,IAAM,IAAI,KAJrBhrB,EAAM,IAAIwqB,EAAY,CACpB,IAAK,IAAI,GACvB,CAAa,EAIHxqB,EAAQA,EAAM,IAAIwqB,CAAU,EAAE,GAChC,CACF,CAAC,CACH,CACJ,EAAK,CACD,IAAK,eACL,MAAO,SAAsBS,EAAcC,EAAa,CACtD,IAAIlrB,EAAQirB,EAAa,IAAIC,EAAY,CAAC,CAAC,EAC3C,GAAIA,EAAY,SAAW,EAAG,CAC5B,IAAIC,EACJ,OAAKnrB,EAAM,IAGTirB,EAAa,IAAIC,EAAY,CAAC,EAAG,CAC/B,IAAKlrB,EAAM,GACvB,CAAW,EAJDirB,EAAa,OAAOC,EAAY,CAAC,CAAC,GAM5BC,EAAenrB,EAAM,SAAW,MAAQmrB,IAAiB,OAAS,OAASA,EAAa,CAAC,CACnG,CACA,IAAI30B,EAAS,KAAK,aAAawJ,EAAM,IAAKkrB,EAAY,MAAM,CAAC,CAAC,EAC9D,OAAK,CAAClrB,EAAM,KAAOA,EAAM,IAAI,OAAS,IAAM,CAACA,EAAM,OACjDirB,EAAa,OAAOC,EAAY,CAAC,CAAC,EAE7B10B,CACT,CACJ,EAAK,CACD,IAAK,SACL,MAAO,SAAiB4zB,EAAkB,CAExC,GAAI,KAAK,IAAIA,CAAgB,EAC3B,YAAK,KAAO,KAAK,KAAK,OAAO,SAAUgB,EAAM,CAC3C,MAAO,CAACpB,GAAqBoB,EAAMhB,CAAgB,CACrD,CAAC,EACM,KAAK,aAAa,KAAK,MAAOA,CAAgB,CAGzD,CACJ,CAAG,CAAC,EACKD,CACT,EAAC,EACD9U,EAAgB8U,GAAY,iBAAkB,EAAE,EAChD9U,EAAgB8U,GAAY,mBAAoB,CAAC,ECzIjD,IAAIkB,GAAO,EAMPC,GAAqB,UAAY,CACnC,SAASA,EAAMJ,EAAa,CAC1BvK,GAAgB,KAAM2K,CAAK,EAC3BjW,EAAgB,KAAM,cAAe,MAAM,EAC3CA,EAAgB,KAAM,KAAM,MAAM,EAClC,KAAK,YAAc,MAAM,QAAQ6V,CAAW,EAAIA,EAAc,CAACA,CAAW,EAC1E,KAAK,GAAKG,GACNH,EAAY,SAAW,GACzBxW,GAAQwW,EAAY,OAAS,EAAG,4EAA4E,EAE9GG,IAAQ,CACV,CACAxK,OAAAA,GAAayK,EAAO,CAAC,CACnB,IAAK,qBACL,MAAO,SAA4BC,EAAO,CACxC,OAAO,KAAK,YAAY,OAAO,SAAU/0B,EAAQg0B,EAAY,CAC3D,OAAOA,EAAWe,EAAO/0B,CAAM,CACjC,EAAG,MAAS,CACd,CACJ,CAAG,CAAC,EACK80B,CACT,EAAC,EC7BGE,GAAc,IAAIrB,GAKP,SAASsB,GAAYP,EAAa,CAC/C,IAAIQ,EAAgB,MAAM,QAAQR,CAAW,EAAIA,EAAc,CAACA,CAAW,EAE3E,OAAKM,GAAY,IAAIE,CAAa,GAChCF,GAAY,IAAIE,EAAe,IAAIJ,GAAMI,CAAa,CAAC,EAIlDF,GAAY,IAAIE,CAAa,CACtC,CCLA,IAAIC,GAAc,IAAI,QAClBC,GAAe,CAAA,EACZ,SAASC,GAAWxqB,EAAUyqB,EAAM,CAEzC,QADIt3B,EAAUm3B,GACLl3B,EAAI,EAAGA,EAAIq3B,EAAK,OAAQr3B,GAAK,EAAG,CACvC,IAAIs3B,EAAMD,EAAKr3B,CAAC,EACXD,EAAQ,IAAIu3B,CAAG,GAClBv3B,EAAQ,IAAIu3B,EAAK,IAAI,OAAS,EAEhCv3B,EAAUA,EAAQ,IAAIu3B,CAAG,CAC3B,CACA,OAAKv3B,EAAQ,IAAIo3B,EAAY,GAC3Bp3B,EAAQ,IAAIo3B,GAAcvqB,GAAU,EAE/B7M,EAAQ,IAAIo3B,EAAY,CACjC,CAGA,IAAII,GAAoB,IAAI,QAKrB,SAASC,GAAaV,EAAO,CAClC,IAAIn4B,EAAM44B,GAAkB,IAAIT,CAAK,GAAK,GAC1C,OAAKn4B,IACH,OAAO,KAAKm4B,CAAK,EAAE,QAAQ,SAAU75B,EAAK,CACxC,IAAImB,EAAQ04B,EAAM75B,CAAG,EACrB0B,GAAO1B,EACHmB,aAAiBy4B,GACnBl4B,GAAOP,EAAM,GACJA,GAASkhB,GAAQlhB,CAAK,IAAM,SACrCO,GAAO64B,GAAap5B,CAAK,EAEzBO,GAAOP,CAEX,CAAC,EAIDO,EAAMiX,GAAKjX,CAAG,EAGd44B,GAAkB,IAAIT,EAAOn4B,CAAG,GAE3BA,CACT,CAKO,SAAS84B,GAAUX,EAAOY,EAAM,CACrC,OAAO9hB,GAAK,GAAG,OAAO8hB,EAAM,GAAG,EAAE,OAAOF,GAAaV,CAAK,CAAC,CAAC,CAC9D,CAuDO,IAAIa,GAAe1G,GAAS,EAC5B,SAAS2G,GAAK9H,EAAK,CACxB,OAAI,OAAOA,GAAQ,SACV,GAAG,OAAOA,EAAK,IAAI,EAErBA,CACT,CACO,SAAS+H,GAAW3C,EAAO4C,EAAUC,EAAS,CACnD,IAAIjX,EACAkX,EAAiB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAA,EACrFC,EAAQ,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAChF,GAAIA,EACF,OAAO/C,EAET,IAAIgD,EAAQvJ,EAAcA,EAAc,CAAA,EAAIqJ,CAAc,EAAG,CAAA,GAAKlX,EAAiB,CAAA,EAAIF,EAAgBE,EAAgB8T,GAAYkD,CAAQ,EAAGlX,EAAgBE,EAAgB+T,GAAWkD,CAAO,EAAGjX,EAAc,EAC7MqX,EAAU,OAAO,KAAKD,CAAK,EAAE,IAAI,SAAUE,EAAM,CACnD,IAAI5vB,EAAM0vB,EAAME,CAAI,EACpB,OAAO5vB,EAAM,GAAG,OAAO4vB,EAAM,IAAK,EAAE,OAAO5vB,EAAK,GAAI,EAAI,IAC1D,CAAC,EAAE,OAAO,SAAUrG,EAAG,CACrB,OAAOA,CACT,CAAC,EAAE,KAAK,GAAG,EACX,MAAO,UAAU,OAAOg2B,EAAS,GAAG,EAAE,OAAOjD,EAAO,UAAU,CAChE,CC5IO,IAAImD,GAAe,SAAsBvB,EAAO,CACrD,IAAI/1B,EAAS,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACjF,MAAO,KAAK,OAAOA,EAAS,GAAG,OAAOA,EAAQ,GAAG,EAAI,EAAE,EAAE,OAAO+1B,CAAK,EAAE,QAAQ,qBAAsB,OAAO,EAAE,QAAQ,4BAA6B,OAAO,EAAE,QAAQ,qBAAsB,OAAO,EAAE,YAAW,CAChN,EACWwB,GAAkB,SAAyBC,EAASC,EAAQ33B,EAAS,CAC9E,OAAK,OAAO,KAAK03B,CAAO,EAAE,OAGnB,IAAI,OAAOC,CAAM,EAAE,OAAO33B,GAAY,MAA8BA,EAAQ,MAAQ,IAAI,OAAOA,EAAQ,KAAK,EAAI,GAAI,GAAG,EAAE,OAAO,OAAO,QAAQ03B,CAAO,EAAE,IAAI,SAAUrjB,EAAM,CACjL,IAAIE,EAAQub,GAAezb,EAAM,CAAC,EAChCjY,EAAMmY,EAAM,CAAC,EACbhX,EAAQgX,EAAM,CAAC,EACjB,MAAO,GAAG,OAAOnY,EAAK,GAAG,EAAE,OAAOmB,EAAO,GAAG,CAC9C,CAAC,EAAE,KAAK,EAAE,EAAG,GAAG,EAPP,EAQX,EACWq6B,GAAiB,SAAwB3B,EAAO4B,EAAU3e,EAAQ,CAC3E,IAAIwe,EAAU,CAAA,EACVx2B,EAAS,CAAA,EACb,cAAO,QAAQ+0B,CAAK,EAAE,QAAQ,SAAU6B,EAAO,CAC7C,IAAIC,EAAkBC,EAClBC,EAAQnI,GAAegI,EAAO,CAAC,EACjC17B,EAAM67B,EAAM,CAAC,EACb16B,EAAQ06B,EAAM,CAAC,EACjB,GAAI/e,GAAW,OAA8B6e,EAAmB7e,EAAO,YAAc,MAAQ6e,IAAqB,QAAUA,EAAiB37B,CAAG,EAC9I8E,EAAO9E,CAAG,EAAImB,WACJ,OAAOA,GAAU,UAAY,OAAOA,GAAU,WAAa,EAAE2b,GAAW,OAA8B8e,EAAiB9e,EAAO,UAAY,MAAQ8e,IAAmB,QAAUA,EAAe57B,CAAG,GAAI,CAC/M,IAAI87B,EACAC,EAASX,GAAap7B,EAAK8c,GAAW,KAA4B,OAASA,EAAO,MAAM,EAC5Fwe,EAAQS,CAAM,EAAI,OAAO56B,GAAU,UAAY,EAAE2b,GAAW,OAA8Bgf,EAAmBhf,EAAO,YAAc,MAAQgf,IAAqB,QAAUA,EAAiB97B,CAAG,GAAK,GAAG,OAAOmB,EAAO,IAAI,EAAI,OAAOA,CAAK,EACvO2D,EAAO9E,CAAG,EAAI,OAAO,OAAO+7B,EAAQ,GAAG,CACzC,CACF,CAAC,EACM,CAACj3B,EAAQu2B,GAAgBC,EAASG,EAAU,CACjD,MAAO3e,GAAW,KAA4B,OAASA,EAAO,KAClE,CAAG,CAAC,CACJ,EC9BIkf,GAA0B,QAAQ,IAAI,WAAa,QAAUhI,GAAS,EAAKzX,EAAM,gBAAkBA,EAAM,UACzG0f,GAAkB,SAAyBtsB,EAAUyqB,EAAM,CAC7D,IAAI8B,EAAgB3f,EAAM,OAAO,EAAI,EACrCyf,GAAwB,UAAY,CAClC,OAAOrsB,EAASusB,EAAc,OAAO,CACvC,EAAG9B,CAAI,EAGP4B,GAAwB,UAAY,CAClC,OAAAE,EAAc,QAAU,GACjB,UAAY,CACjBA,EAAc,QAAU,EAC1B,CACF,EAAG,CAAA,CAAE,CACP,EACWC,GAAwB,SAA+BxsB,EAAUyqB,EAAM,CAChF6B,GAAgB,SAAUG,EAAY,CACpC,GAAI,CAACA,EACH,OAAOzsB,EAAQ,CAEnB,EAAGyqB,CAAI,CACT,ECpBIiC,GAAY3K,EAAc,CAAA,EAAInV,CAAK,EACnC+f,GAAqBD,GAAU,mBAO/BE,GAA6B,SAAoCC,EAAcC,EAAQrC,EAAM,CAC/F7d,EAAM,QAAQigB,EAAcpC,CAAI,EAChC6B,GAAgB,UAAY,CAC1B,OAAOQ,EAAO,EAAI,CACpB,EAAGrC,CAAI,CACT,EAOIsC,GAA+BJ,GAAqB,SAAUE,EAAcC,EAAQrC,EAAM,CAC5F,OAAOkC,GAAmB,UAAY,CACpC,OAAAE,EAAY,EACLC,EAAM,CACf,EAAGrC,CAAI,CACT,EAAImC,GC7BAF,GAAY3K,EAAc,CAAA,EAAInV,CAAK,EACnC+f,GAAqBD,GAAU,mBAG/BM,GAAqB,SAA4BvC,EAAM,CACzD,IAAIwC,EAAiB,CAAA,EACjBC,EAAc,GAClB,SAASC,EAASzuB,EAAI,CACpB,GAAIwuB,EAAa,CACX,QAAQ,IAAI,WAAa,cAC3B7Z,GAAQ,GAAO,8GAA8G,EAE/H,MACF,CACA4Z,EAAe,KAAKvuB,CAAE,CACxB,CACAkO,OAAAA,EAAM,UAAU,UAAY,CAE1B,OAAAsgB,EAAc,GACP,UAAY,CACjBA,EAAc,GACVD,EAAe,QACjBA,EAAe,QAAQ,SAAUvuB,EAAI,CACnC,OAAOA,EAAE,CACX,CAAC,CAEL,CACF,EAAG+rB,CAAI,EACA0C,CACT,EACIC,GAAS,UAAkB,CAC7B,OAAO,SAAU1uB,EAAI,CACnBA,EAAE,CACJ,CACF,EAGI2uB,GAA2B,OAAOV,GAAuB,IAAcK,GAAqBI,GCxChG,SAASE,IAAa,CACpB,MAAO,EACT,CACA,IAAIC,GAAa,GACjB,SAASC,IAAY,CACnB,OAAOD,EACT,CACA,MAAAE,GAAe,QAAQ,IAAI,WAAa,aAAeH,GAAaE,GAIpE,GAAI,QAAQ,IAAI,WAAa,cAAgB,OAAO,OAAW,KAAe,QAAU,OAAO,KAAO,OAAO,OAAW,IAAa,CAGnI,IAAIE,GAAM,OAAO,WAAe,IAAc,WAAa,OAAO,OAAW,IAAc,OAAS,KACpG,GAAIA,IAAO,OAAOA,GAAI,kBAAqB,WAAY,CACrD,IAAIC,GAAyBD,GAAI,iBACjCA,GAAI,iBAAmB,UAAY,CACjC,OAAAH,GAAa,GACb,WAAW,UAAY,CACrBA,GAAa,EACf,EAAG,CAAC,EACGI,GAAuB,MAAM,OAAQ,SAAS,CACvD,CACF,CACF,CCjBe,SAASC,GAAez5B,EAAQ05B,EAASC,EAASC,EAEjEC,EAAe,CACb,IAAIC,EAAoBrhB,EAAM,WAAW8b,EAAY,EACnDwF,EAAcD,EAAkB,MAC9BE,EAAW,CAACh6B,CAAM,EAAE,OAAOwuB,GAAmBkL,CAAO,CAAC,EACtDO,EAAc3G,GAAQ0G,CAAQ,EAC9BhB,EAAWE,GAAyB,CAACe,CAAW,CAAC,EACjDC,EAAYZ,GAAM,EAClBa,EAAa,SAAoBC,EAAS,CAC5CL,EAAY,SAASE,EAAa,SAAUI,EAAW,CACrD,IAAIlmB,EAAOkmB,GAAa,CAAC,OAAW,MAAS,EAC3ChmB,EAAQub,GAAezb,EAAM,CAAC,EAC9BmmB,EAASjmB,EAAM,CAAC,EAChBgb,EAAQiL,IAAW,OAAS,EAAIA,EAChC9vB,EAAQ6J,EAAM,CAAC,EAGbkmB,EAAW/vB,EACX,QAAQ,IAAI,WAAa,cAAgBA,GAAS0vB,IACpDN,GAAkB,MAAoCA,EAAcW,EAAUL,CAAS,EACvFK,EAAW,MAEb,IAAIC,EAAcD,GAAYZ,EAAO,EACjCx8B,EAAO,CAACkyB,EAAOmL,CAAW,EAG9B,OAAOJ,EAAUA,EAAQj9B,CAAI,EAAIA,CACnC,CAAC,CACH,EAGAsb,EAAM,QAAQ,UAAY,CACxB0hB,EAAU,CACZ,EACA,CAACF,CAAW,CACd,EAEE,IAAIQ,EAAcV,EAAY,MAAME,CAAW,EAK3C,QAAQ,IAAI,WAAa,cAAgB,CAACQ,IAC5CN,EAAU,EACVM,EAAcV,EAAY,MAAME,CAAW,GAE7C,IAAIS,EAAeD,EAAY,CAAC,EAGhC,OAAA7B,GAA6B,UAAY,CACvCiB,GAAkB,MAAoCA,EAAca,CAAY,CAClF,EAAG,SAAUC,EAAU,CAIrB,OAAAR,EAAW,SAAUvC,EAAO,CAC1B,IAAIG,EAAQnI,GAAegI,EAAO,CAAC,EACjCvI,EAAQ0I,EAAM,CAAC,EACfvtB,EAAQutB,EAAM,CAAC,EACjB,OAAI4C,GAAYtL,IAAU,IACxBwK,GAAkB,MAAoCA,EAAca,CAAY,GAE3E,CAACrL,EAAQ,EAAG7kB,CAAK,CAC1B,CAAC,EACM,UAAY,CACjBuvB,EAAY,SAASE,EAAa,SAAUI,EAAW,CACrD,IAAIO,EAAQP,GAAa,CAAA,EACvBQ,EAAQjL,GAAegL,EAAO,CAAC,EAC/BE,EAASD,EAAM,CAAC,EAChBxL,EAAQyL,IAAW,OAAS,EAAIA,EAChCtwB,EAAQqwB,EAAM,CAAC,EACbE,EAAY1L,EAAQ,EACxB,OAAI0L,IAAc,GAEhB/B,EAAS,UAAY,EAIf2B,GAAY,CAACZ,EAAY,MAAME,CAAW,KAC5CL,GAAkB,MAAoCA,EAAcpvB,EAAO,EAAK,EAEpF,CAAC,EACM,MAEF,CAAC6kB,EAAQ,EAAG7kB,CAAK,CAC1B,CAAC,CACH,CACF,EAAG,CAACyvB,CAAW,CAAC,EACTS,CACT,CCxFA,IAAIM,GAAiB,CAAA,EAIjBC,GAAa,QAAQ,IAAI,WAAa,aAAe,+BAAiC,MACtFC,GAAY,IAAI,IACpB,SAASC,GAAiBpE,EAAU,CAClCmE,GAAU,IAAInE,GAAWmE,GAAU,IAAInE,CAAQ,GAAK,GAAK,CAAC,CAC5D,CACA,SAASqE,GAAgBl/B,EAAKs3B,EAAY,CACxC,GAAI,OAAO,SAAa,IAAa,CACnC,IAAI/K,EAAS,SAAS,iBAAiB,SAAS,OAAOoL,GAAY,IAAK,EAAE,OAAO33B,EAAK,IAAK,CAAC,EAC5FusB,EAAO,QAAQ,SAAU0L,EAAO,CAC9B,GAAIA,EAAMH,EAAkB,IAAMR,EAAY,CAC5C,IAAIa,GACHA,EAAoBF,EAAM,cAAgB,MAAQE,IAAsB,QAAUA,EAAkB,YAAYF,CAAK,CACxH,CACF,CAAC,CACH,CACF,CACA,IAAIkH,GAAkB,EAGtB,SAASC,GAAgBvE,EAAUvD,EAAY,CAC7C0H,GAAU,IAAInE,GAAWmE,GAAU,IAAInE,CAAQ,GAAK,GAAK,CAAC,EAC1D,IAAIwE,EAAe,MAAM,KAAKL,GAAU,KAAI,CAAE,EAC1CM,EAAmBD,EAAa,OAAO,SAAUr/B,EAAK,CACxD,IAAI2K,EAAQq0B,GAAU,IAAIh/B,CAAG,GAAK,EAClC,OAAO2K,GAAS,CAClB,CAAC,EAGG00B,EAAa,OAASC,EAAiB,OAASH,IAClDG,EAAiB,QAAQ,SAAUt/B,EAAK,CACtCk/B,GAAgBl/B,EAAKs3B,CAAU,EAC/B0H,GAAU,OAAOh/B,CAAG,CACtB,CAAC,CAEL,CACO,IAAIu/B,GAAmB,SAA0BC,EAAaC,EAAeC,EAAO5wB,EAAQ,CACjG,IAAI6wB,EAAkBD,EAAM,mBAAmBF,CAAW,EAGtDI,EAAwBlO,EAAcA,EAAc,CAAA,EAAIiO,CAAe,EAAGF,CAAa,EAG3F,OAAI3wB,IACF8wB,EAAwB9wB,EAAO8wB,CAAqB,GAE/CA,CACT,EACWC,GAAe,QAQX,SAASC,GAAcJ,EAAO78B,EAAQ,CACnD,IAAIgH,EAAS,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAA,EAC7Ek2B,EAAc/pB,EAAAA,WAAWqiB,EAAY,EACvCf,EAAayI,EAAY,MAAM,WAC/BjL,EAAYiL,EAAY,UACtBC,EAAen2B,EAAO,KACxB4wB,EAAOuF,IAAiB,OAAS,GAAKA,EACtCC,EAAmBp2B,EAAO,SAC1Bq2B,EAAWD,IAAqB,OAASnB,GAAiBmB,EAC1DE,EAAct2B,EAAO,YACrBu2B,EAAUv2B,EAAO,iBACjBkyB,EAASlyB,EAAO,OAGdw2B,EAAclG,GAAW,UAAY,CACvC,OAAO,OAAO,OAAO,MAAM,OAAQ,CAAC,EAAE,EAAE,OAAO7H,GAAmBzvB,CAAM,CAAC,CAAC,CAC5E,EAAGA,CAAM,EACLy9B,EAAW/F,GAAa8F,CAAW,EACnCE,EAAmBhG,GAAa2F,CAAQ,EACxCM,EAAYzE,EAASxB,GAAawB,CAAM,EAAI,GAC5C0E,EAAclD,GAAesC,GAAc,CAACpF,EAAMiF,EAAM,GAAIY,EAAUC,EAAkBC,CAAS,EAAG,UAAY,CAClH,IAAIE,EACAd,EAAwBQ,EAAUA,EAAQC,EAAaH,EAAUR,CAAK,EAAIH,GAAiBc,EAAaH,EAAUR,EAAOS,CAAW,EAGpIQ,EAAcjP,EAAc,CAAA,EAAIkO,CAAqB,EACrDgB,EAAa,GACjB,GAAM7E,EAAQ,CACZ,IAAI8E,EAAkBrF,GAAeoE,EAAuB7D,EAAO,IAAK,CACtE,OAAQA,EAAO,OACf,OAAQA,EAAO,OACf,SAAUA,EAAO,SACjB,SAAUA,EAAO,QACzB,CAAO,EACG+E,EAAmBpN,GAAemN,EAAiB,CAAC,EACxDjB,EAAwBkB,EAAiB,CAAC,EAC1CF,EAAaE,EAAiB,CAAC,CACjC,CAGA,IAAIjG,EAAWL,GAAUoF,EAAuBnF,CAAI,EACpDmF,EAAsB,UAAY/E,EAClC8F,EAAY,UAAYnG,GAAUmG,EAAalG,CAAI,EACnD,IAAIgB,GAAYiF,EAAc3E,GAAW,KAA4B,OAASA,EAAO,OAAS,MAAQ2E,IAAgB,OAASA,EAAc7F,EAC7I+E,EAAsB,UAAYnE,EAClCwD,GAAiBxD,CAAQ,EACzB,IAAIF,EAAS,GAAG,OAAOwD,GAAY,GAAG,EAAE,OAAOpmB,GAAKkiB,CAAQ,CAAC,EAC7D,OAAA+E,EAAsB,QAAUrE,EAEzB,CAACqE,EAAuBrE,EAAQoF,EAAaC,GAAa7E,GAAW,KAA4B,OAASA,EAAO,MAAQ,EAAE,CACpI,EAAG,SAAUztB,EAAO,CAElB8wB,GAAgB9wB,EAAM,CAAC,EAAE,UAAWgpB,CAAU,CAChD,EAAG,SAAUrf,EAAM,CACjB,IAAIE,EAAQub,GAAezb,EAAM,CAAC,EAChC4hB,EAAQ1hB,EAAM,CAAC,EACfyoB,EAAazoB,EAAM,CAAC,EACtB,GAAI4jB,GAAU6E,EAAY,CACxB,IAAI3I,EAAQhC,GAAU2K,EAAYjoB,GAAK,iBAAiB,OAAOkhB,EAAM,SAAS,CAAC,EAAG,CAChF,KAAMjC,GACN,QAAS,QACT,SAAU9C,EACV,SAAU,IAClB,CAAO,EACDmD,EAAMH,EAAkB,EAAIR,EAG5BW,EAAM,aAAaN,GAAYkC,EAAM,SAAS,CAChD,CACF,CAAC,EACD,OAAO4G,CACT,CACO,IAAIM,GAAU,SAAiBzyB,EAAO0yB,EAAcp9B,EAAS,CAClE,IAAIm1B,EAASrF,GAAeplB,EAAO,CAAC,EAClC2yB,EAAYlI,EAAO,CAAC,EACpBmI,EAAWnI,EAAO,CAAC,EACnBoI,EAAYpI,EAAO,CAAC,EAClB2C,EAAQ93B,GAAW,CAAA,EACrBo3B,EAAQU,EAAM,MAChB,GAAI,CAACwF,EACH,OAAO,KAET,IAAIpG,EAAUmG,EAAU,UACpBhnB,EAAQ,KAIRmnB,EAAc,CAChB,gBAAiB,eACjB,mBAAoB,GAAG,OAAOnnB,CAAK,CACvC,EACMonB,EAAYzG,GAAWsG,EAAUC,EAAWrG,EAASsG,EAAapG,CAAK,EAC3E,MAAO,CAAC/gB,EAAO6gB,EAASuG,CAAS,CACnC,EClKIC,GAAe,CACjB,wBAAyB,EACzB,kBAAmB,EACnB,iBAAkB,EAClB,iBAAkB,EAClB,QAAS,EACT,aAAc,EACd,gBAAiB,EACjB,YAAa,EACb,QAAS,EACT,KAAM,EACN,SAAU,EACV,aAAc,EACd,WAAY,EACZ,aAAc,EACd,UAAW,EACX,QAAS,EACT,WAAY,EACZ,YAAa,EACb,aAAc,EACd,WAAY,EACZ,cAAe,EACf,eAAgB,EAChB,gBAAiB,EACjB,UAAW,EACX,cAAe,EACf,aAAc,EACd,iBAAkB,EAClB,WAAY,EACZ,WAAY,EACZ,QAAS,EACT,MAAO,EACP,QAAS,EACT,QAAS,EACT,OAAQ,EACR,OAAQ,EACR,KAAM,EACN,gBAAiB,EAEjB,YAAa,EACb,aAAc,EACd,YAAa,EACb,gBAAiB,EACjB,iBAAkB,EAClB,iBAAkB,EAClB,cAAe,EACf,YAAa,CACf,EC3CWC,GAAU,OACVC,GAAU,OACVC,GAAc,OAIdC,GAAS,UAKTC,GAAY,aACZC,GAAY,aAIZC,GAAQ,SChBRC,GAAM,KAAK,IAMXC,GAAO,OAAO,aAqBlB,SAASC,GAAM7gC,EAAO,CAC5B,OAAOA,EAAM,KAAI,CAClB,CAiBO,SAASya,GAASza,EAAOY,EAASkgC,EAAa,CACrD,OAAO9gC,EAAM,QAAQY,EAASkgC,CAAW,CAC1C,CAQO,SAASC,GAAS/gC,EAAOqX,EAAQyG,EAAU,CACjD,OAAO9d,EAAM,QAAQqX,EAAQyG,CAAQ,CACtC,CAOO,SAASkjB,GAAQhhC,EAAOwD,EAAO,CACrC,OAAOxD,EAAM,WAAWwD,CAAK,EAAI,CAClC,CAQO,SAASy9B,GAAQjhC,EAAOkhC,EAAOC,EAAK,CAC1C,OAAOnhC,EAAM,MAAMkhC,EAAOC,CAAG,CAC9B,CAMO,SAASC,GAAQphC,EAAO,CAC9B,OAAOA,EAAM,MACd,CAMO,SAASqhC,GAAQrhC,EAAO,CAC9B,OAAOA,EAAM,MACd,CAOO,SAAS4Q,GAAQ5Q,EAAOshC,EAAO,CACrC,OAAOA,EAAM,KAAKthC,CAAK,EAAGA,CAC3B,CCxGO,IAAIuhC,GAAO,EACPC,GAAS,EACTC,GAAS,EACT3jB,GAAW,EACX4jB,GAAY,EACZC,GAAa,GAYjB,SAAS9e,GAAM7iB,EAAO+yB,EAAM6O,EAAQx/B,EAAMqS,EAAO+M,EAAUigB,EAAQI,EAAU,CACnF,MAAO,CAAC,MAAO7hC,EAAO,KAAM+yB,EAAM,OAAQ6O,EAAQ,KAAMx/B,EAAM,MAAOqS,EAAO,SAAU+M,EAAU,KAAM+f,GAAM,OAAQC,GAAQ,OAAQC,EAAQ,OAAQ,GAAI,SAAUI,CAAQ,CAC3K,CAwBO,SAASC,IAAQ,CACvB,OAAOJ,EACR,CAKO,SAASvvB,IAAQ,CACvB,OAAAuvB,GAAY5jB,GAAW,EAAIkjB,GAAOW,GAAY,EAAE7jB,EAAQ,EAAI,EAExD0jB,KAAUE,KAAc,KAC3BF,GAAS,EAAGD,MAENG,EACR,CAKO,SAAS7/B,IAAQ,CACvB,OAAA6/B,GAAY5jB,GAAW2jB,GAAST,GAAOW,GAAY7jB,IAAU,EAAI,EAE7D0jB,KAAUE,KAAc,KAC3BF,GAAS,EAAGD,MAENG,EACR,CAKO,SAASK,IAAQ,CACvB,OAAOf,GAAOW,GAAY7jB,EAAQ,CACnC,CAKO,SAASkkB,IAAS,CACxB,OAAOlkB,EACR,CAOO,SAAS/H,GAAOmrB,EAAOC,EAAK,CAClC,OAAOF,GAAOU,GAAYT,EAAOC,CAAG,CACrC,CAMO,SAASzI,GAAOt2B,EAAM,CAC5B,OAAQA,EAAI,CAEX,IAAK,GAAG,IAAK,GAAG,IAAK,IAAI,IAAK,IAAI,IAAK,IACtC,MAAO,GAER,IAAK,IAAI,IAAK,IAAI,IAAK,IAAI,IAAK,IAAI,IAAK,IAAI,IAAK,IAAI,IAAK,KAE3D,IAAK,IAAI,IAAK,KAAK,IAAK,KACvB,MAAO,GAER,IAAK,IACJ,MAAO,GAER,IAAK,IAAI,IAAK,IAAI,IAAK,IAAI,IAAK,IAC/B,MAAO,GAER,IAAK,IAAI,IAAK,IACb,MAAO,EACV,CAEC,MAAO,EACR,CAMO,SAAS6/B,GAAOjiC,EAAO,CAC7B,OAAOuhC,GAAOC,GAAS,EAAGC,GAASL,GAAOO,GAAa3hC,CAAK,EAAG8d,GAAW,EAAG,CAAA,CAC9E,CAMO,SAASokB,GAASliC,EAAO,CAC/B,OAAO2hC,GAAa,GAAI3hC,CACzB,CAMO,SAASmiC,GAAS//B,EAAM,CAC9B,OAAOy+B,GAAK9qB,GAAM+H,GAAW,EAAGskB,GAAUhgC,IAAS,GAAKA,EAAO,EAAIA,IAAS,GAAKA,EAAO,EAAIA,CAAI,CAAC,CAAC,CACnG,CAcO,SAASigC,GAAYjgC,EAAM,CACjC,MAAOs/B,GAAYK,GAAI,IAClBL,GAAY,IACf7/B,GAAI,EAIN,OAAO62B,GAAMt2B,CAAI,EAAI,GAAKs2B,GAAMgJ,EAAS,EAAI,EAAI,GAAK,GACvD,CAwBO,SAASY,GAAU9+B,EAAOgG,EAAO,CACvC,KAAO,EAAEA,GAAS3H,GAAI,GAEjB,EAAA6/B,GAAY,IAAMA,GAAY,KAAQA,GAAY,IAAMA,GAAY,IAAQA,GAAY,IAAMA,GAAY,KAA9G,CAGD,OAAO3rB,GAAMvS,EAAOw+B,GAAK,GAAMx4B,EAAQ,GAAKu4B,MAAU,IAAMlgC,GAAI,GAAM,GAAG,CAC1E,CAMO,SAASugC,GAAWhgC,EAAM,CAChC,KAAOP,GAAI,GACV,OAAQ6/B,GAAS,CAEhB,KAAKt/B,EACJ,OAAO0b,GAER,IAAK,IAAI,IAAK,IACT1b,IAAS,IAAMA,IAAS,IAC3BggC,GAAUV,EAAS,EACpB,MAED,IAAK,IACAt/B,IAAS,IACZggC,GAAUhgC,CAAI,EACf,MAED,IAAK,IACJP,GAAI,EACJ,KACJ,CAEC,OAAOic,EACR,CAOO,SAASykB,GAAWngC,EAAMoB,EAAO,CACvC,KAAO3B,GAAI,GAENO,EAAOs/B,KAAc,IAGpB,GAAIt/B,EAAOs/B,KAAc,IAAWK,GAAI,IAAO,GACnD,MAEF,MAAO,KAAOhsB,GAAMvS,EAAOsa,GAAW,CAAC,EAAI,IAAM8iB,GAAKx+B,IAAS,GAAKA,EAAOP,GAAI,CAAE,CAClF,CAMO,SAAS2gC,GAAYh/B,EAAO,CAClC,KAAO,CAACk1B,GAAMqJ,IAAM,GACnBlgC,GAAI,EAEL,OAAOkU,GAAMvS,EAAOsa,EAAQ,CAC7B,CCxPO,SAAS2kB,GAASziC,EAAO,CAC/B,OAAOkiC,GAAQQ,GAAM,GAAI,KAAM,KAAM,KAAM,CAAC,EAAE,EAAG1iC,EAAQiiC,GAAMjiC,CAAK,EAAG,EAAG,CAAC,CAAC,EAAGA,CAAK,CAAC,CACtF,CAcO,SAAS0iC,GAAO1iC,EAAO+yB,EAAM6O,EAAQ/3B,EAAM84B,EAAOC,EAAUC,EAAQC,EAAQC,EAAc,CAiBhG,QAhBIv/B,EAAQ,EACRw/B,EAAS,EACTvB,EAASoB,EACTI,EAAS,EACTC,EAAW,EACXC,EAAW,EACXC,EAAW,EACXC,EAAW,EACXC,EAAY,EACZ5B,EAAY,EACZt/B,EAAO,GACPqS,EAAQkuB,EACRnhB,EAAWohB,EACXW,EAAY15B,EACZ83B,EAAav/B,EAEVihC,GACN,OAAQF,EAAWzB,EAAWA,EAAY7/B,GAAI,EAAE,CAE/C,IAAK,IACJ,GAAIshC,GAAY,KAAOnC,GAAOW,EAAYF,EAAS,CAAC,GAAK,GAAI,CACxDV,GAAQY,GAAclnB,GAAQ0nB,GAAQT,CAAS,EAAG,IAAK,KAAK,EAAG,MAAOf,GAAIn9B,EAAQs/B,EAAOt/B,EAAQ,CAAC,EAAI,CAAC,CAAC,GAAK,KAChH8/B,EAAY,IACb,KACD,CAED,IAAK,IAAI,IAAK,IAAI,IAAK,IACtB3B,GAAcQ,GAAQT,CAAS,EAC/B,MAED,IAAK,GAAG,IAAK,IAAI,IAAK,IAAI,IAAK,IAC9BC,GAAcU,GAAWc,CAAQ,EACjC,MAED,IAAK,IACJxB,GAAcW,GAASN,GAAK,EAAK,EAAG,CAAC,EACrC,SAED,IAAK,IACJ,OAAQD,GAAI,EAAE,CACb,IAAK,IAAI,IAAK,IACbnxB,GAAO4yB,GAAQjB,GAAU1gC,KAAQmgC,IAAO,EAAGjP,EAAM6O,EAAQmB,CAAY,EAAGA,CAAY,GAC/ErK,GAAMyK,GAAY,CAAC,GAAK,GAAKzK,GAAMqJ,GAAI,GAAM,CAAC,GAAK,IAAMX,GAAOO,CAAU,GAAKV,GAAOU,EAAY,GAAI,MAAM,IAAM,MAAKA,GAAc,KAC1I,MACD,QACCA,GAAc,GACpB,CACI,MAED,IAAK,KAAMyB,EACVN,EAAOt/B,GAAO,EAAI49B,GAAOO,CAAU,EAAI2B,EAExC,IAAK,KAAMF,EAAU,IAAK,IAAI,IAAK,GAClC,OAAQ1B,EAAS,CAEhB,IAAK,GAAG,IAAK,KAAK2B,EAAW,EAE7B,IAAK,IAAKL,EAAYM,GAAa,KAAI3B,EAAalnB,GAAQknB,EAAY,MAAO,EAAE,GAC5EuB,EAAW,IAAM9B,GAAOO,CAAU,EAAIF,GAAW2B,IAAa,GAAKD,IAAa,KACnFvyB,GAAOsyB,EAAW,GAAKO,GAAY9B,EAAa,IAAK93B,EAAM+3B,EAAQH,EAAS,EAAGsB,CAAY,EAAIU,GAAYhpB,GAAQknB,EAAY,IAAK,EAAE,EAAI,IAAK93B,EAAM+3B,EAAQH,EAAS,EAAGsB,CAAY,EAAGA,CAAY,EACrM,MAED,IAAK,IAAIpB,GAAc,IAEvB,QAGC,GAFA/wB,GAAO2yB,EAAYG,GAAQ/B,EAAY5O,EAAM6O,EAAQp+B,EAAOw/B,EAAQL,EAAOG,EAAQ1gC,EAAMqS,EAAQ,GAAI+M,EAAW,CAAA,EAAIigB,EAAQmB,CAAQ,EAAGA,CAAQ,EAE3IlB,IAAc,IACjB,GAAIsB,IAAW,EACdN,GAAMf,EAAY5O,EAAMwQ,EAAWA,EAAW9uB,EAAOmuB,EAAUnB,EAAQqB,EAAQthB,CAAQ,MACnF,CACJ,OAAQyhB,EAAM,CAEb,IAAK,IACJ,GAAIjC,GAAOW,EAAY,CAAC,IAAM,IAAK,MAEpC,IAAK,KACJ,GAAIX,GAAOW,EAAY,CAAC,IAAM,GAAI,MACnC,QACCqB,EAAS,EAEV,IAAK,KAAK,IAAK,KAAK,IAAK,KAClC,CACYA,EAAQN,GAAM1iC,EAAOujC,EAAWA,EAAW15B,GAAQ+G,GAAO8yB,GAAQ1jC,EAAOujC,EAAWA,EAAW,EAAG,EAAGZ,EAAOG,EAAQ1gC,EAAMugC,EAAOluB,EAAQ,CAAA,EAAIgtB,EAAQjgB,CAAQ,EAAGA,CAAQ,EAAGmhB,EAAOnhB,EAAUigB,EAAQqB,EAAQj5B,EAAO4K,EAAQ+M,CAAQ,EAClOkhB,GAAMf,EAAY4B,EAAWA,EAAWA,EAAW,CAAC,EAAE,EAAG/hB,EAAU,EAAGshB,EAAQthB,CAAQ,CAC5F,CACP,CAEIhe,EAAQw/B,EAASE,EAAW,EAAGE,EAAWE,EAAY,EAAGlhC,EAAOu/B,EAAa,GAAIF,EAASoB,EAC1F,MAED,IAAK,IACJpB,EAAS,EAAIL,GAAOO,CAAU,EAAGuB,EAAWC,EAC7C,QACC,GAAIC,EAAW,GACd,GAAI1B,GAAa,IAChB,EAAE0B,UACM1B,GAAa,KAAO0B,KAAc,GAAKjxB,GAAI,GAAM,IACzD,SAEF,OAAQwvB,GAAcf,GAAKc,CAAS,EAAGA,EAAY0B,EAAQ,CAE1D,IAAK,IACJE,EAAYN,EAAS,EAAI,GAAKrB,GAAc,KAAM,IAClD,MAED,IAAK,IACJmB,EAAOt/B,GAAO,GAAK49B,GAAOO,CAAU,EAAI,GAAK2B,EAAWA,EAAY,EACpE,MAED,IAAK,IAEAvB,GAAI,IAAO,KACdJ,GAAcQ,GAAQtgC,GAAI,CAAE,GAE7BohC,EAASlB,GAAI,EAAIiB,EAASvB,EAASL,GAAOh/B,EAAOu/B,GAAca,GAAWR,GAAK,CAAE,CAAC,EAAGN,IACrF,MAED,IAAK,IACAyB,IAAa,IAAM/B,GAAOO,CAAU,GAAK,IAC5CyB,EAAW,EAClB,CACA,CAEC,OAAOR,CACR,CAiBO,SAASc,GAAS1jC,EAAO+yB,EAAM6O,EAAQp+B,EAAOw/B,EAAQL,EAAOG,EAAQ1gC,EAAMqS,EAAO+M,EAAUigB,EAAQI,EAAU,CAKpH,QAJI8B,EAAOX,EAAS,EAChBn5B,EAAOm5B,IAAW,EAAIL,EAAQ,CAAC,EAAE,EACjC9Z,EAAOwY,GAAOx3B,CAAI,EAEbjI,EAAI,EAAGG,EAAI,EAAGzC,EAAI,EAAGsC,EAAI4B,EAAO,EAAE5B,EAC1C,QAAS4qB,EAAI,EAAGC,EAAIwU,GAAOjhC,EAAO2jC,EAAO,EAAGA,EAAOhD,GAAI5+B,EAAI+gC,EAAOlhC,CAAC,CAAC,CAAC,EAAGgiC,EAAI5jC,EAAOwsB,EAAI3D,EAAM,EAAE2D,GAC1FoX,EAAI/C,GAAK9+B,EAAI,EAAI8H,EAAK2iB,CAAC,EAAI,IAAMC,EAAIhS,GAAQgS,EAAG,OAAQ5iB,EAAK2iB,CAAC,CAAC,CAAC,KACnE/X,EAAMnV,GAAG,EAAIskC,GAEhB,OAAO/gB,GAAK7iB,EAAO+yB,EAAM6O,EAAQoB,IAAW,EAAI3C,GAAUj+B,EAAMqS,EAAO+M,EAAUigB,EAAQI,CAAQ,CAClG,CASO,SAAS2B,GAASxjC,EAAO+yB,EAAM6O,EAAQC,EAAU,CACvD,OAAOhf,GAAK7iB,EAAO+yB,EAAM6O,EAAQxB,GAASQ,GAAKkB,GAAI,CAAE,EAAGb,GAAOjhC,EAAO,EAAG,EAAE,EAAG,EAAG6hC,CAAQ,CAC1F,CAUO,SAAS4B,GAAazjC,EAAO+yB,EAAM6O,EAAQH,EAAQI,EAAU,CACnE,OAAOhf,GAAK7iB,EAAO+yB,EAAM6O,EAAQtB,GAAaW,GAAOjhC,EAAO,EAAGyhC,CAAM,EAAGR,GAAOjhC,EAAOyhC,EAAS,EAAG,EAAE,EAAGA,EAAQI,CAAQ,CACxH,CCjMO,SAASgC,GAAWriB,EAAUhT,EAAU,CAG9C,QAFIs1B,EAAS,GAEJliC,EAAI,EAAGA,EAAI4f,EAAS,OAAQ5f,IACpCkiC,GAAUt1B,EAASgT,EAAS5f,CAAC,EAAGA,EAAG4f,EAAUhT,CAAQ,GAAK,GAE3D,OAAOs1B,CACR,CASO,SAASC,GAAWjb,EAAStlB,EAAOge,EAAUhT,EAAU,CAC9D,OAAQsa,EAAQ,KAAI,CACnB,KAAK4X,GAAO,GAAI5X,EAAQ,SAAS,OAAQ,MACzC,KAAKyX,GAAQ,KAAKC,GAAW,KAAKF,GAAa,OAAOxX,EAAQ,OAASA,EAAQ,QAAUA,EAAQ,MACjG,KAAKsX,GAAS,MAAO,GACrB,KAAKK,GAAW,OAAO3X,EAAQ,OAASA,EAAQ,MAAQ,IAAM+a,GAAU/a,EAAQ,SAAUta,CAAQ,EAAI,IACtG,KAAK6xB,GAAS,GAAI,CAACe,GAAOtY,EAAQ,MAAQA,EAAQ,MAAM,KAAK,GAAG,CAAC,EAAG,MAAO,EAC7E,CAEC,OAAOsY,GAAO5f,EAAWqiB,GAAU/a,EAAQ,SAAUta,CAAQ,CAAC,EAAIsa,EAAQ,OAASA,EAAQ,MAAQ,IAAMtH,EAAW,IAAM,EAC3H,CCjCO,SAASwiB,GAAYhoB,EAASioB,EAAM,CACzC,IAAIjlC,EAAOilC,EAAK,KACdC,EAAkBD,EAAK,gBACzBE,GAAW,GAAO,0BAA0B,OAAOnlC,EAAO,YAAY,OAAOA,EAAM,IAAI,EAAI,EAAE,EAAE,OAAOgd,CAAO,EAAE,OAAOkoB,EAAgB,OAAS,cAAc,OAAOA,EAAgB,KAAK,KAAK,CAAC,EAAI,EAAE,CAAC,CACxM,CCJA,IAAIE,GAAS,SAAgBvlC,EAAKmB,EAAOikC,EAAM,CAC7C,GAAIplC,IAAQ,UAAW,CAErB,IAAIwlC,EAAsB,kGACtBC,EAAgB,CAAC,SAAU,OAAQ,UAAW,UAAW,OAAO,GAChE,OAAOtkC,GAAU,UAAYskC,EAAc,QAAQtkC,CAAK,IAAM,IAAM,CAACqkC,EAAoB,KAAKrkC,CAAK,IAAMA,EAAM,OAAO,CAAC,IAAMA,EAAM,OAAOA,EAAM,OAAS,CAAC,GAAKA,EAAM,OAAO,CAAC,IAAM,KAAOA,EAAM,OAAO,CAAC,IAAM,OAChNgkC,GAAY,iGAAiG,OAAOhkC,EAAO,OAAO,EAAGikC,CAAI,CAE7I,CACF,ECTIG,GAAS,SAAgBvlC,EAAKmB,EAAOikC,EAAM,CACzCplC,IAAQ,aACNolC,EAAK,QAAUjkC,IAAU,QAC3BgkC,GAAY,0CAA0C,OAAOhkC,EAAO,yEAAyE,EAAGikC,CAAI,CAG1J,ECJWM,GAAiB,8BAMjBC,GAAiB,gBAOxBC,GACAC,GAAc,GAUX,SAASC,IAAU,CACxB,GAAI,CAACF,KACHA,GAAe,CAAA,EACX5R,GAAS,GAAI,CACf,IAAI+R,EAAM,SAAS,cAAc,KAAK,EACtCA,EAAI,UAAYL,GAChBK,EAAI,MAAM,SAAW,QACrBA,EAAI,MAAM,WAAa,SACvBA,EAAI,MAAM,IAAM,UAChB,SAAS,KAAK,YAAYA,CAAG,EAC7B,IAAIC,EAAU,iBAAiBD,CAAG,EAAE,SAAW,GAC/CC,EAAUA,EAAQ,QAAQ,KAAM,EAAE,EAAE,QAAQ,KAAM,EAAE,EAGpDA,EAAQ,MAAM,GAAG,EAAE,QAAQ,SAAUtM,EAAM,CACzC,IAAIuM,EAAcvM,EAAK,MAAM,GAAG,EAC9BwM,EAAexS,GAAeuS,EAAa,CAAC,EAC5C9lC,EAAO+lC,EAAa,CAAC,EACrBvtB,EAAOutB,EAAa,CAAC,EACvBN,GAAazlC,CAAI,EAAIwY,CACvB,CAAC,EAGD,IAAIwtB,EAAiB,SAAS,cAAc,SAAS,OAAOT,GAAgB,GAAG,CAAC,EAChF,GAAIS,EAAgB,CAClB,IAAIC,EACJP,GAAc,IACbO,EAAwBD,EAAe,cAAgB,MAAQC,IAA0B,QAAUA,EAAsB,YAAYD,CAAc,CACtJ,CACA,SAAS,KAAK,YAAYJ,CAAG,CAC/B,CAEJ,CACO,SAASM,GAAUlmC,EAAM,CAC9B,OAAA2lC,GAAO,EACA,CAAC,CAACF,GAAazlC,CAAI,CAC5B,CACO,SAASmmC,GAAgBnmC,EAAM,CACpC,IAAIwY,EAAOitB,GAAazlC,CAAI,EACxB+gC,EAAW,KACf,GAAIvoB,GAAQqb,KACV,GAAI6R,GACF3E,EAAWyE,OACN,CACL,IAAIY,EAAS,SAAS,cAAc,SAAS,OAAO3O,GAAW,IAAK,EAAE,OAAOgO,GAAazlC,CAAI,EAAG,IAAK,CAAC,EACnGomC,EACFrF,EAAWqF,EAAO,UAGlB,OAAOX,GAAazlC,CAAI,CAE5B,CAEF,MAAO,CAAC+gC,EAAUvoB,CAAI,CACxB,CChEA,IAAI6tB,GAAa,eACbC,GAAc,gBAKX,SAASC,GAAexF,EAAU,CACvC,IAAIyF,EAAa3B,GAAUpB,GAAQ1C,CAAQ,EAAGgE,EAAS,EACvD,OAAOyB,EAAW,QAAQ,iBAAkB,GAAG,CACjD,CACA,SAASC,GAAsBzlC,EAAO,CACpC,OAAOkhB,GAAQlhB,CAAK,IAAM,UAAYA,IAAUqlC,MAAcrlC,GAASslC,MAAetlC,EACxF,CAGA,SAAS0lC,GAAmB7mC,EAAKu7B,EAAQuL,EAAc,CACrD,GAAI,CAACvL,EACH,OAAOv7B,EAET,IAAI+mC,EAAgB,IAAI,OAAOxL,CAAM,EACjCyL,EAAeF,IAAiB,MAAQ,UAAU,OAAOC,EAAe,GAAG,EAAIA,EAG/E5gC,EAAOnG,EAAI,MAAM,GAAG,EAAE,IAAI,SAAUS,EAAG,CACzC,IAAIwmC,EACAnJ,EAAWr9B,EAAE,KAAI,EAAG,MAAM,KAAK,EAG/BymC,EAAYpJ,EAAS,CAAC,GAAK,GAC3BqJ,IAAgBF,EAAmBC,EAAU,MAAM,MAAM,KAAO,MAAQD,IAAqB,OAAS,OAASA,EAAiB,CAAC,IAAM,GAC3I,OAAAC,EAAY,GAAG,OAAOC,CAAW,EAAE,OAAOH,CAAY,EAAE,OAAOE,EAAU,MAAMC,EAAY,MAAM,CAAC,EAC3F,CAACD,CAAS,EAAE,OAAO5U,GAAmBwL,EAAS,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAC3E,CAAC,EACD,OAAO33B,EAAK,KAAK,GAAG,CACtB,CAEO,IAAIihC,GAAa,SAASA,EAAWC,EAAe,CACzD,IAAIvqB,EAAS,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAA,EAC7E7E,EAAO,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAC3E,KAAM,GACN,gBAAiB,CAAA,CACvB,EACIic,EAAOjc,EAAK,KACZqvB,EAAarvB,EAAK,WAClBotB,EAAkBptB,EAAK,gBACrBsjB,EAASze,EAAO,OAClByqB,EAAQzqB,EAAO,MACf3c,EAAO2c,EAAO,KACdgqB,EAAehqB,EAAO,aACtB0qB,EAAuB1qB,EAAO,aAC9B2qB,EAAeD,IAAyB,OAAS,CAAA,EAAKA,EACtDE,EAAkB5qB,EAAO,QACzB6qB,EAAUD,IAAoB,OAAS,CAAA,EAAKA,EAC1CxG,EAAW,GACX0G,EAAc,CAAA,EAClB,SAASC,EAAeC,EAAW,CACjC,IAAIC,EAAgBD,EAAU,QAAQvM,CAAM,EAC5C,GAAI,CAACqM,EAAYG,CAAa,EAAG,CAC/B,IAAIC,EAAcZ,EAAWU,EAAU,MAAOhrB,EAAQ,CAClD,KAAM,GACN,gBAAiBuoB,CAC3B,CAAS,EACD4C,EAAevU,GAAesU,EAAa,CAAC,EAC5CE,EAAaD,EAAa,CAAC,EAC7BL,EAAYG,CAAa,EAAI,cAAc,OAAOD,EAAU,QAAQvM,CAAM,CAAC,EAAE,OAAO2M,CAAU,CAChG,CACF,CACA,SAASC,EAAYC,EAAM,CACzB,IAAIC,EAAW,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAA,EACnF,OAAAD,EAAK,QAAQ,SAAU1O,EAAM,CACvB,MAAM,QAAQA,CAAI,EACpByO,EAAYzO,EAAM2O,CAAQ,EACjB3O,GACT2O,EAAS,KAAK3O,CAAI,CAEtB,CAAC,EACM2O,CACT,CACA,IAAIC,EAAmBH,EAAY,MAAM,QAAQd,CAAa,EAAIA,EAAgB,CAACA,CAAa,CAAC,EACjG,OAAAiB,EAAiB,QAAQ,SAAUC,EAAa,CAE9C,IAAItQ,EAAQ,OAAOsQ,GAAgB,UAAY,CAACrU,EAAO,CAAA,EAAKqU,EAC5D,GAAI,OAAOtQ,GAAU,SACnBiJ,GAAY,GAAG,OAAOjJ,EAAO;AAAA,CAAI,UACxBA,EAAM,UAEf4P,EAAe5P,CAAK,MACf,CACL,IAAIuQ,EAAcf,EAAa,OAAO,SAAUn0B,EAAMm1B,EAAO,CAC3D,IAAIC,EACJ,OAAQD,GAAU,OAA6BC,EAAeD,EAAM,SAAW,MAAQC,IAAiB,OAAS,OAASA,EAAa,KAAKD,EAAOn1B,CAAI,IAAMA,CAC/J,EAAG2kB,CAAK,EAGR,OAAO,KAAKuQ,CAAW,EAAE,QAAQ,SAAUxoC,EAAK,CAC9C,IAAImB,EAAQqnC,EAAYxoC,CAAG,EAC3B,GAAIqiB,GAAQlhB,CAAK,IAAM,UAAYA,IAAUnB,IAAQ,iBAAmB,CAACmB,EAAM,YAAc,CAACylC,GAAsBzlC,CAAK,EAAG,CAC1H,IAAIwnC,EAAgB,GAGhBC,EAAY5oC,EAAI,KAAI,EAEpB6oC,EAAW,IAGV3U,GAAQoT,IAAe/L,EACtBqN,EAAU,WAAW,GAAG,EAE1BD,EAAgB,GACPC,IAAc,IAEvBA,EAAY/B,GAAmB,GAAItL,EAAQuL,CAAY,EAGvD8B,EAAY/B,GAAmB7mC,EAAKu7B,EAAQuL,CAAY,EAEjD5S,GAAQ,CAACqH,IAAWqN,IAAc,KAAOA,IAAc,MAMhEA,EAAY,GACZC,EAAW,IAEb,IAAIC,EAAe1B,EAAWjmC,EAAO2b,EAAQ,CACzC,KAAM+rB,EACN,WAAYF,EACZ,gBAAiB,CAAA,EAAG,OAAOrW,GAAmB+S,CAAe,EAAG,CAACuD,CAAS,CAAC,CACzF,CAAa,EACDG,EAAerV,GAAeoV,EAAc,CAAC,EAC7CE,EAAcD,EAAa,CAAC,EAC5BE,EAAmBF,EAAa,CAAC,EACnCnB,EAAclW,EAAcA,EAAc,CAAA,EAAIkW,CAAW,EAAGqB,CAAgB,EAC5E/H,GAAY,GAAG,OAAO0H,CAAS,EAAE,OAAOI,CAAW,CACrD,KAAO,CAEL,IAASE,EAAT,SAAqBC,EAAQC,EAAU,CACjC,QAAQ,IAAI,WAAa,eAAiB/mB,GAAQlhB,CAAK,IAAM,UAAY,EAAEA,GAAU,MAA4BA,EAAMqlC,EAAU,KACnI,CAAC6C,GAAqBC,EAAqB,EAAE,OAAOhX,GAAmBqV,CAAO,CAAC,EAAE,QAAQ,SAAUpC,EAAQ,CACzG,OAAOA,EAAO4D,EAAQC,EAAU,CAC9B,KAAMjpC,EACN,OAAQo7B,EACR,gBAAiB8J,CACnC,CAAiB,CACH,CAAC,EAIH,IAAIkE,EAAYJ,EAAO,QAAQ,SAAU,SAAUz8B,EAAO,CACxD,MAAO,IAAI,OAAOA,EAAM,YAAW,CAAE,CACvC,CAAC,EAGG88B,EAAcJ,EACd,CAACK,GAASN,CAAM,GAAK,OAAOK,GAAgB,UAAYA,IAAgB,IAC1EA,EAAc,GAAG,OAAOA,EAAa,IAAI,GAIvCL,IAAW,iBAAmBC,IAAa,MAAQA,IAAa,QAAUA,EAAS,YACrFvB,EAAeuB,CAAQ,EACvBI,EAAcJ,EAAS,QAAQ7N,CAAM,GAEvC2F,GAAY,GAAG,OAAOqI,EAAW,GAAG,EAAE,OAAOC,EAAa,GAAG,CAC/D,EA7BA,IAAIE,EA8BAC,GAAeD,EAASvoC,GAAU,KAA2B,OAASA,EAAM,SAAW,MAAQuoC,IAAW,OAASA,EAASvoC,EAC5HkhB,GAAQlhB,CAAK,IAAM,UAAYA,IAAU,MAAQA,IAAU,QAAUA,EAAMslC,EAAW,GAAK,MAAM,QAAQkD,CAAW,EACtHA,EAAY,QAAQ,SAAUjQ,EAAM,CAClCwP,EAAYlpC,EAAK05B,CAAI,CACvB,CAAC,EAEDwP,EAAYlpC,EAAK2pC,CAAW,CAEhC,CACF,CAAC,CACH,CACF,CAAC,EACIzV,EAEMqT,IAELrG,IACFA,EAAW,UAAU,OAAOqG,EAAM,KAAM,IAAI,EAAE,OAAOrG,EAAU,GAAG,GAEhEqG,EAAM,eACRK,EAAY,UAAU,OAAOL,EAAM,IAAI,CAAC,EAAIA,EAAM,aAAa,IAAI,SAAUnN,EAAM,CACjF,MAAO,UAAU,OAAOA,EAAM,IAAI,EAAE,OAAOmN,EAAM,KAAM,GAAG,CAC5D,CAAC,EAAE,KAAK;AAAA,CAAI,IATdrG,EAAW,IAAI,OAAOA,EAAU,GAAG,EAY9B,CAACA,EAAU0G,CAAW,CAC/B,EAKO,SAASgC,GAAWzpC,EAAM+gC,EAAU,CACzC,OAAOvoB,GAAK,GAAG,OAAOxY,EAAK,KAAK,GAAG,CAAC,EAAE,OAAO+gC,CAAQ,CAAC,CACxD,CACA,SAAS9gC,IAAQ,CACf,OAAO,IACT,CACO,IAAIypC,GAAe,QAIX,SAASC,GAAiB1E,EAAM2E,EAAS,CACtD,IAAIlQ,EAAQuL,EAAK,MACfjlC,EAAOilC,EAAK,KACZ7J,EAAS6J,EAAK,OACdmC,EAAQnC,EAAK,MACb4E,EAAQ5E,EAAK,MACb6E,EAAa7E,EAAK,WAClB8E,EAAc9E,EAAK,MACnBnrB,EAAQiwB,IAAgB,OAAS,EAAIA,EACnCtM,EAAoBrhB,EAAM,WAAW8b,EAAY,EACnD8R,EAAYvM,EAAkB,UAC9BwM,EAAOxM,EAAkB,KACzByM,EAAezM,EAAkB,aACjCkJ,EAAelJ,EAAkB,aACjC9I,EAAY8I,EAAkB,UAC9B0M,EAAY1M,EAAkB,UAC9B6J,EAAe7J,EAAkB,aACjC+J,EAAU/J,EAAkB,QAC5BtvB,EAAQsvB,EAAkB,MAC1B2M,EAAc3M,EAAkB,MAC9B/C,EAAWhB,EAAM,UACjBiE,EAAW,CAACjD,CAAQ,EACpB0P,GACFzM,EAAS,KAAK,OAAO,EAEvBA,EAAS,KAAK,MAAMA,EAAUxL,GAAmBnyB,CAAI,CAAC,EAGtD,IAAIqqC,EAAqB9P,GACrB,QAAQ,IAAI,WAAa,cAAgB0P,IAAS,SACpDI,EAAqBJ,IAAS,UAEhC,IAAIK,EAAkBlN,GAAesM,GAAc/L,EAEjD,UAAY,CACV,IAAI4M,EAAY5M,EAAS,KAAK,GAAG,EAGjC,GAAIuI,GAAUqE,CAAS,EAAG,CACxB,IAAIC,EAAmBrE,GAAgBoE,CAAS,EAC9CE,EAAoBlX,GAAeiX,EAAkB,CAAC,EACtDE,EAAsBD,EAAkB,CAAC,EACzC1S,EAAY0S,EAAkB,CAAC,EACjC,GAAIC,EACF,MAAO,CAACA,EAAqBhQ,EAAU3C,EAAW,CAAA,EAAI+R,EAAYhwB,CAAK,CAE3E,CAGA,IAAI6wB,EAAWf,EAAO,EAClBgB,EAAe3D,GAAW0D,EAAU,CACpC,OAAQvP,EACR,aAAcuL,EACd,MAAOyD,EAAchD,EAAQ,OAC7B,KAAMpnC,EAAK,KAAK,GAAG,EACnB,aAAcsnC,EACd,QAASE,CACnB,CAAS,EACDqD,EAAetX,GAAeqX,EAAc,CAAC,EAC7CE,EAAcD,EAAa,CAAC,EAC5BpD,EAAcoD,EAAa,CAAC,EAC1B9J,EAAWwF,GAAeuE,CAAW,EACrCnQ,EAAU8O,GAAW9L,EAAUoD,CAAQ,EAC3C,MAAO,CAACA,EAAUrG,EAAUC,EAAS8M,EAAaqC,EAAYhwB,CAAK,CACrE,EAEA,SAAU9B,EAAO+yB,EAAS,CACxB,IAAIxP,EAAQhI,GAAevb,EAAO,CAAC,EACjC2iB,EAAUY,EAAM,CAAC,GACdwP,GAAWf,IAAczP,IAC5B/E,GAAUmF,EAAS,CACjB,KAAMlD,EAChB,CAAS,CAEL,EAEA,SAAUiE,EAAO,CACZ,IAAC6C,EAAQhL,GAAemI,EAAO,CAAC,EACjCqF,EAAWxC,EAAM,CAAC,EACdA,EAAM,CAAC,EACnB,IAAQ5D,EAAU4D,EAAM,CAAC,EACjBkJ,EAAclJ,EAAM,CAAC,EACvB,GAAI8L,GAAsBtJ,IAAayE,GAAgB,CACrD,IAAIwF,EAAkB,CACpB,KAAMvT,GACN,QAAS2S,EAAc,GAAQ,QAC/B,SAAUzV,EACV,SAAU7a,CACpB,EACYmxB,EAAW,OAAOpB,GAAU,WAAaA,EAAK,EAAKA,EACnDoB,IACFD,EAAgB,IAAM,CACpB,MAAOC,CACnB,GAKQ,IAAIC,EAAkB,CAAA,EAClBC,EAAiB,CAAA,EACrB,OAAO,KAAK1D,CAAW,EAAE,QAAQ,SAAU5nC,EAAK,CAC1CA,EAAI,WAAW,QAAQ,EACzBqrC,EAAgB,KAAKrrC,CAAG,EAExBsrC,EAAe,KAAKtrC,CAAG,CAE3B,CAAC,EAIDqrC,EAAgB,QAAQ,SAAUE,EAAW,CAC3CtV,GAAUyQ,GAAekB,EAAY2D,CAAS,CAAC,EAAG,UAAU,OAAOA,CAAS,EAAG7Z,EAAcA,EAAc,CAAA,EAAIyZ,CAAe,EAAG,CAAA,EAAI,CACnI,QAAS,EACrB,CAAW,CAAC,CACJ,CAAC,EAID,IAAIlT,EAAQhC,GAAUiL,EAAUpG,EAASqQ,CAAe,EACxDlT,EAAMH,EAAkB,EAAIxpB,EAAM,WAGlC2pB,EAAM,aAAaN,GAAYkD,CAAQ,EAGnC,QAAQ,IAAI,WAAa,cAC3B5C,EAAM,aAAaJ,GAAiBiG,EAAS,KAAK,GAAG,CAAC,EAKxDwN,EAAe,QAAQ,SAAUC,EAAW,CAC1CtV,GAAUyQ,GAAekB,EAAY2D,CAAS,CAAC,EAAG,WAAW,OAAOA,CAAS,EAAGJ,CAAe,CACjG,CAAC,CACH,CACF,CAAC,EACDK,EAAmB9X,GAAe+W,EAAiB,CAAC,EACpDgB,EAAiBD,EAAiB,CAAC,EACnCE,EAAiBF,EAAiB,CAAC,EACnCG,EAAgBH,EAAiB,CAAC,EACpC,OAAO,SAAUxnB,EAAM,CACrB,IAAIsR,EACJ,GAAI,CAACgV,GAAaE,GAAsB,CAACH,EACvC/U,EAAyB/Y,EAAM,cAAcnc,GAAO,IAAI,MACnD,CACL,IAAIu+B,EACJrJ,EAAyB/Y,EAAM,cAAc,QAAS6F,GAAS,CAAA,GAAKuc,EAAQ,GAAIhb,EAAgBgb,EAAOhH,GAAY+T,CAAc,EAAG/nB,EAAgBgb,EAAO/G,GAAW+T,CAAa,EAAGhN,GAAQ,CAC5L,wBAAyB,CACvB,OAAQ8M,CAClB,CACA,CAAO,CAAC,CACJ,CACA,OAAoBlvB,EAAM,cAAcA,EAAM,SAAU,KAAM+Y,EAAWtR,CAAI,CAC/E,CACF,CACO,IAAI+c,GAAU,SAAiBzyB,EAAO0yB,EAAcp9B,EAAS,CAClE,IAAIm1B,EAASrF,GAAeplB,EAAO,CAAC,EAClC4yB,EAAWnI,EAAO,CAAC,EACnB8B,EAAW9B,EAAO,CAAC,EACnB+B,EAAU/B,EAAO,CAAC,EAClB6O,EAAc7O,EAAO,CAAC,EACtBkR,EAAalR,EAAO,CAAC,EACrB9e,EAAQ8e,EAAO,CAAC,EACd6S,EAAQhoC,GAAW,CAAA,EACrBo3B,EAAQ4Q,EAAM,MAGhB,GAAI3B,EACF,OAAO,KAET,IAAI4B,EAAe3K,EAIfE,EAAc,CAChB,gBAAiB,eACjB,mBAAoB,GAAG,OAAOnnB,CAAK,CACvC,EAGE,OAAA4xB,EAAejR,GAAWsG,EAAUrG,EAAUC,EAASsG,EAAapG,CAAK,EAGrE4M,GACF,OAAO,KAAKA,CAAW,EAAE,QAAQ,SAAU2D,EAAW,CAEpD,GAAI,CAACvK,EAAauK,CAAS,EAAG,CAC5BvK,EAAauK,CAAS,EAAI,GAC1B,IAAIO,EAAiBpF,GAAekB,EAAY2D,CAAS,CAAC,EACtDQ,EAAkBnR,GAAWkR,EAAgBjR,EAAU,WAAW,OAAO0Q,CAAS,EAAGnK,EAAapG,CAAK,EACvGuQ,EAAU,WAAW,QAAQ,EAC/BM,EAAeE,EAAkBF,EAEjCA,GAAgBE,CAEpB,CACF,CAAC,EAEI,CAAC9xB,EAAO6gB,EAAS+Q,CAAY,CACtC,EC9ZWG,GAAiB,SACxBC,GAAoB,SAA2BnvB,EAAQzO,EAAI,CAC7D,IAAIrO,EAAM8c,EAAO,IACfhZ,EAASgZ,EAAO,OAChB2sB,EAAW3sB,EAAO,SAClB1H,EAAS0H,EAAO,OAChB+c,EAAQ/c,EAAO,MACfovB,EAAgBpvB,EAAO,MACvBqvB,EAAQD,IAAkB,OAAS,GAAKA,EACtCnM,EAAc/pB,EAAAA,WAAWqiB,EAAY,EACvCf,EAAayI,EAAY,MAAM,WAC/BjL,EAAYiL,EAAY,UACtBlF,EAAWhB,EAAM,UACjBuS,EAAY,CAAA,EAAG,OAAO9Z,GAAmBxV,EAAO,IAAI,EAAG,CAAC9c,EAAKmsC,EAAOtR,CAAQ,CAAC,EAC7EvsB,EAAQivB,GAAeyO,GAAgBI,EAAW,UAAY,CAChE,IAAI5M,EAAcnxB,EAAE,EAChBwyB,EAAkBrF,GAAegE,EAAax/B,EAAK,CACnD,OAAQ8D,EACR,SAAU2lC,EACV,OAAQr0B,EACR,MAAO+2B,CACf,CAAO,EACDrL,EAAmBpN,GAAemN,EAAiB,CAAC,EACpDR,EAAcS,EAAiB,CAAC,EAChCF,EAAaE,EAAiB,CAAC,EAC7BhG,EAAU8O,GAAWwC,EAAWxL,CAAU,EAC9C,MAAO,CAACP,EAAaO,EAAY9F,EAAS96B,CAAG,CAC/C,EAAG,SAAUiY,EAAM,CACjB,IAAIE,EAAQub,GAAezb,EAAM,CAAC,EAChC6iB,EAAU3iB,EAAM,CAAC,EACfuiB,IACF/E,GAAUmF,EAAS,CACjB,KAAMlD,EACd,CAAO,CAEL,EAAG,SAAU8D,EAAO,CAClB,IAAIG,EAAQnI,GAAegI,EAAO,CAAC,EACjCkF,EAAa/E,EAAM,CAAC,EACpBf,EAAUe,EAAM,CAAC,EACnB,GAAK+E,EAGL,KAAI3I,EAAQhC,GAAU2K,EAAY9F,EAAS,CACzC,KAAMlD,GACN,QAAS,QACT,SAAU9C,EACV,SAAU,IAChB,CAAK,EACDmD,EAAMH,EAAkB,EAAIR,EAG5BW,EAAM,aAAaN,GAAY33B,CAAG,EACpC,CAAC,EACD,OAAOsO,CACT,EACWyyB,GAAU,SAAiBzyB,EAAO0yB,EAAcp9B,EAAS,CAClE,IAAIm1B,EAASrF,GAAeplB,EAAO,CAAC,EAClC4yB,EAAWnI,EAAO,CAAC,EACnB+B,EAAU/B,EAAO,CAAC,EAClBoI,EAAYpI,EAAO,CAAC,EAClB2F,EAAQ96B,GAAW,CAAA,EACrBo3B,EAAQ0D,EAAM,MAChB,GAAI,CAACwC,EACH,OAAO,KAET,IAAIjnB,EAAQ,KAIRmnB,EAAc,CAChB,gBAAiB,eACjB,mBAAoB,GAAG,OAAOnnB,CAAK,CACvC,EACMonB,EAAYzG,GAAWsG,EAAUC,EAAWrG,EAASsG,EAAapG,CAAK,EAC3E,MAAO,CAAC/gB,EAAO6gB,EAASuG,CAAS,CACnC,EClFIgL,GAMmBA,GAAmB,CAAA,EAAI1oB,EAAgB0oB,GAAkBxC,GAAcyC,EAAiB,EAAG3oB,EAAgB0oB,GAAkBxM,GAAc0M,EAAiB,EAAG5oB,EAAgB0oB,GAAkBL,GAAgBQ,EAAkB,ECL1P,IAAIC,GAAwB,UAAY,CACtC,SAASA,EAAS59B,EAAMopB,EAAO,CAC7BhJ,GAAgB,KAAMwd,CAAQ,EAC9B9oB,EAAgB,KAAM,OAAQ,MAAM,EACpCA,EAAgB,KAAM,QAAS,MAAM,EACrCA,EAAgB,KAAM,YAAa,EAAI,EACvC,KAAK,KAAO9U,EACZ,KAAK,MAAQopB,CACf,CACA9I,OAAAA,GAAasd,EAAU,CAAC,CACtB,IAAK,UACL,MAAO,UAAmB,CACxB,IAAIlR,EAAS,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACjF,OAAOA,EAAS,GAAG,OAAOA,EAAQ,GAAG,EAAE,OAAO,KAAK,IAAI,EAAI,KAAK,IAClE,CACJ,CAAG,CAAC,EACKkR,CACT,EAAC,ECMD,SAASC,GAAQtE,EAAM,CACrB,OAAAA,EAAK,SAAW,GACTA,CACT,CAyBesE,GAAQ,CAAC,YAAa,cAAc,CAAC,EAChCA,GAAQ,CAAC,WAAW,CAAC,EACvBA,GAAQ,CAAC,cAAc,CAAC,EAC1BA,GAAQ,CAAC,aAAc,aAAa,CAAC,EAChCA,GAAQ,CAAC,YAAY,CAAC,EACxBA,GAAQ,CAAC,aAAa,CAAC,EC1D1C,IAAIC,GAA2B13B,EAAAA,cAAc,EAAE,ECG/C,SAAS23B,GAASnqC,EAAG,CACnB,OAAOkxB,GAAelxB,CAAC,GAAK+vB,GAAgB/vB,CAAC,GAAKgwB,GAA2BhwB,CAAC,GAAKoxB,GAAe,CACpG,CCNe,SAAS7iB,GAAI4d,EAAQzuB,EAAM,CAExC,QADI2C,EAAU8rB,EACL7rB,EAAI,EAAGA,EAAI5C,EAAK,OAAQ4C,GAAK,EAAG,CACvC,GAAID,GAAY,KACd,OAEFA,EAAUA,EAAQ3C,EAAK4C,CAAC,CAAC,CAC3B,CACA,OAAOD,CACT,CCJA,SAAS+pC,GAAYje,EAAQke,EAAO3rC,EAAO4rC,EAAmB,CAC5D,GAAI,CAACD,EAAM,OACT,OAAO3rC,EAET,IAAI6rC,EAASJ,GAASE,CAAK,EACzB3sC,EAAO6sC,EAAO,CAAC,EACfC,EAAWD,EAAO,MAAM,CAAC,EACvB55B,EACJ,MAAI,CAACwb,GAAU,OAAOzuB,GAAS,SAC7BiT,EAAQ,CAAA,EACC,MAAM,QAAQwb,CAAM,EAC7Bxb,EAAQkf,GAAmB1D,CAAM,EAEjCxb,EAAQse,EAAc,CAAA,EAAI9C,CAAM,EAI9Bme,GAAqB5rC,IAAU,QAAa8rC,EAAS,SAAW,EAClE,OAAO75B,EAAMjT,CAAI,EAAE8sC,EAAS,CAAC,CAAC,EAE9B75B,EAAMjT,CAAI,EAAI0sC,GAAYz5B,EAAMjT,CAAI,EAAG8sC,EAAU9rC,EAAO4rC,CAAiB,EAEpE35B,CACT,CACe,SAASmK,GAAIqR,EAAQke,EAAO3rC,EAAO,CAChD,IAAI4rC,EAAoB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAE5F,OAAID,EAAM,QAAUC,GAAqB5rC,IAAU,QAAa,CAAC6P,GAAI4d,EAAQke,EAAM,MAAM,EAAG,EAAE,CAAC,EACtFle,EAEFie,GAAYje,EAAQke,EAAO3rC,EAAO4rC,CAAiB,CAC5D,CACA,SAAS14B,GAASrV,EAAK,CACrB,OAAOqjB,GAAQrjB,CAAG,IAAM,UAAYA,IAAQ,MAAQ,OAAO,eAAeA,CAAG,IAAM,OAAO,SAC5F,CACA,SAASkuC,GAAY5rC,EAAQ,CAC3B,OAAO,MAAM,QAAQA,CAAM,EAAI,CAAA,EAAK,CAAA,CACtC,CACA,IAAI6E,GAAO,OAAO,QAAY,IAAc,OAAO,KAAO,QAAQ,QAK3D,SAASgnC,IAAQ,CACtB,QAASzkB,EAAO,UAAU,OAAQ0kB,EAAU,IAAI,MAAM1kB,CAAI,EAAGE,EAAO,EAAGA,EAAOF,EAAME,IAClFwkB,EAAQxkB,CAAI,EAAI,UAAUA,CAAI,EAEhC,IAAIxV,EAAQ85B,GAAYE,EAAQ,CAAC,CAAC,EAClC,OAAAA,EAAQ,QAAQ,SAAUC,EAAK,CAC7B,SAASC,EAAcntC,EAAMotC,EAAe,CAC1C,IAAIC,EAAU,IAAI,IAAID,CAAa,EAC/BpsC,EAAQ6P,GAAIq8B,EAAKltC,CAAI,EACrBstC,EAAQ,MAAM,QAAQtsC,CAAK,EAC/B,GAAIssC,GAASp5B,GAASlT,CAAK,GAEzB,GAAI,CAACqsC,EAAQ,IAAIrsC,CAAK,EAAG,CACvBqsC,EAAQ,IAAIrsC,CAAK,EACjB,IAAIusC,EAAc18B,GAAIoC,EAAOjT,CAAI,EAC7BstC,EAEFr6B,EAAQmK,GAAInK,EAAOjT,EAAM,CAAA,CAAE,GAClB,CAACutC,GAAerrB,GAAQqrB,CAAW,IAAM,YAElDt6B,EAAQmK,GAAInK,EAAOjT,EAAM+sC,GAAY/rC,CAAK,CAAC,GAE7CgF,GAAKhF,CAAK,EAAE,QAAQ,SAAUnB,EAAK,CACjCstC,EAAc,CAAA,EAAG,OAAOhb,GAAmBnyB,CAAI,EAAG,CAACH,CAAG,CAAC,EAAGwtC,CAAO,CACnE,CAAC,CACH,OAEAp6B,EAAQmK,GAAInK,EAAOjT,EAAMgB,CAAK,CAElC,CACAmsC,EAAc,CAAA,CAAE,CAClB,CAAC,EACMl6B,CACT,CC/EO,SAASjC,IAAO,CAAC,CACxB,IAAIw8B,GAAqB,KAClB,SAAStqB,IAAc,CAC5BsqB,GAAqB,KACrBC,GAAa,CACf,CACA,IAAIC,GAAW18B,GACX,QAAQ,IAAI,WAAa,eAC3B08B,GAAW,CAAC5qB,EAAO6qB,EAAW3wB,IAAY,CACxC4wB,GAAU9qB,EAAO,UAAU6qB,CAAS,KAAK3wB,CAAO,EAAE,EAE9C,QAAQ,IAAI,WAAa,QAC3BkG,GAAW,CAEf,GAEF,MAAML,GAAU6qB,GACHG,GAA8BzxB,EAAM,cAAc,EAAE,EAMpD0xB,GAAgB,QAAQ,IAAI,WAAa,aAAeH,GAAa,CAChF,KAAM,CACJ,OAAAI,CACJ,EAAM3xB,EAAM,WAAWyxB,EAAc,EAC7BG,EAAc,CAAClrB,EAAO1f,EAAM4Z,IAAY,CAC5C,GAAI,CAAC8F,EACH,GAAIirB,IAAW,IAAS3qC,IAAS,aAAc,CAC7C,MAAM6qC,EAAeT,GAChBA,KACHA,GAAqB,CAAA,GAEvBA,GAAmBG,CAAS,EAAIH,GAAmBG,CAAS,GAAK,CAAA,EAC5DH,GAAmBG,CAAS,EAAE,SAAS3wB,GAAW,EAAE,GACvDwwB,GAAmBG,CAAS,EAAE,KAAK3wB,GAAW,EAAE,EAG7CixB,GACH,QAAQ,KAAK,qDAAsDT,EAAkB,CAEzF,MACE,QAAQ,IAAI,WAAa,cAAe3qB,GAAQC,EAAO6qB,EAAW3wB,CAAO,CAG/E,EACA,OAAAgxB,EAAY,WAAa,CAAClrB,EAAOorB,EAASC,EAASnxB,IAAY,CAC7DgxB,EAAYlrB,EAAO,aAAc,KAAKorB,CAAO,kCAAkCC,CAAO,cAAcnxB,EAAU,IAAIA,CAAO,GAAK,EAAE,EAAE,CACpI,EACOgxB,CACT,EAAI,IAAM,CACR,MAAMI,EAAc,IAAM,CAAC,EAC3B,OAAAA,EAAY,WAAap9B,GAClBo9B,CACT,ECnDAC,GAA4Bv5B,EAAAA,cAAc,MAAS,ECNnD,IAAIw5B,GAAS,CAEX,eAAgB,SAChB,QAAS,QACT,gBAAiB,UACjB,KAAM,OAEN,UAAW,gBACX,UAAW,YACX,OAAQ,mBACR,OAAQ,eACR,OAAQ,mBACR,OAAQ,eACR,UAAW,WACb,ECdWC,GAAe,CACxB,WAAY,OACZ,UAAW,IACX,mBAAoB,IACpB,gBAAiB,EACnB,ECHID,GAAS/c,EAAcA,EAAc,CAAA,EAAIgd,EAAY,EAAG,CAAA,EAAI,CAC9D,OAAQ,QACR,MAAO,QACP,IAAK,MACL,YAAa,gBACb,GAAI,KACJ,MAAO,QACP,KAAM,OACN,MAAO,QACP,KAAM,OACN,WAAY,cACZ,WAAY,cACZ,WAAY,gBACZ,YAAa,iBACb,WAAY,gBACZ,aAAc,kBACd,WAAY,WACZ,eAAgB,oBAChB,cAAe,0BACf,UAAW,wBACX,aAAc,6BACd,SAAU,8BACV,eAAgB,cAChB,WAAY,cACZ,gBAAiB,eACjB,YAAa,cACf,CAAC,EC5BD,MAAMD,GAAS,CACb,YAAa,cACb,iBAAkB,CAAC,aAAc,UAAU,CAC7C,ECAMA,GAAS,CACb,KAAM,OAAO,OAAO,CAClB,YAAa,cACb,gBAAiB,cACjB,mBAAoB,iBACpB,iBAAkB,eAClB,gBAAiB,cACjB,iBAAkB,CAAC,aAAc,UAAU,EAC3C,qBAAsB,CAAC,aAAc,UAAU,EAC/C,wBAAyB,CAAC,gBAAiB,aAAa,EACxD,sBAAuB,CAAC,cAAe,WAAW,EAClD,qBAAsB,CAAC,aAAc,UAAU,CACnD,EAAKE,EAAc,EACjB,iBAAkB,OAAO,OAAO,CAAA,EAAIC,EAAgB,CACtD,ECbMC,GAAe,kCACfC,GAAe,CACnB,OAAQ,KACV,WAAEC,GACF,WAAEC,GACF,WAAEC,GACF,SAAEC,GACA,OAAQ,CACN,YAAa,gBACb,MAAO,OACX,EACE,MAAO,CACL,YAAa,cACb,cAAe,KACf,YAAa,QACb,gBAAiB,aACjB,eAAgB,mBAChB,wBAAyB,oBACzB,UAAW,UACX,UAAW,sBACX,aAAc,sBACd,WAAY,iBACZ,aAAc,kBACd,UAAW,OACX,OAAQ,aACR,SAAU,eACV,YAAa,2BACb,WAAY,0BACZ,WAAY,yBAChB,EACE,KAAM,CACJ,KAAM,OACN,SAAU,WACV,OAAQ,QACZ,EACE,MAAO,CACL,OAAQ,KACR,WAAY,SACZ,WAAY,IAChB,EACE,WAAY,CACV,OAAQ,KACR,WAAY,QAChB,EACE,SAAU,CACR,OAAQ,CAAC,GAAI,EAAE,EACf,kBAAmB,cACnB,SAAU,OACV,UAAW,QACX,OAAQ,SACR,cAAe,sBACf,cAAe,sBACf,UAAW,kBACX,YAAa,oBACb,UAAW,kBACX,aAAc,qBAClB,EACE,OAAQ,CACN,UAAW,eACX,WAAY,cACZ,YAAa,eACb,YAAa,eACb,aAAc,eAClB,EACE,MAAO,CACL,YAAa,SACjB,EACE,KAAM,CACJ,KAAM,MACV,EACE,KAAM,CACJ,KAAM,OACN,KAAM,OACN,OAAQ,SACR,OAAQ,SACR,SAAU,UACd,EACE,KAAM,CACJ,SAAU,aACV,wBAAyB,CACvB,QAAS,sCACT,SAAU,wBACV,KAAM,oCACN,WAAY,uCACZ,KAAM,CACJ,OAAQ,kCACR,MAAO,yCACP,QAAS,6BACjB,EACM,MAAO,CACL,OAAQL,GACR,OAAQA,GACR,MAAOA,GACP,OAAQA,GACR,OAAQA,GACR,KAAMA,GACN,QAASA,GACT,QAASA,GACT,MAAOA,GACP,OAAQA,GACR,MAAOA,GACP,IAAKA,GACL,IAAKA,EACb,EACM,OAAQ,CACN,IAAK,qCACL,IAAK,8CACL,IAAK,2CACL,MAAO,mDACf,EACM,OAAQ,CACN,IAAK,mCACL,IAAK,kCACL,IAAK,kCACL,MAAO,wCACf,EACM,MAAO,CACL,IAAK,0BACL,IAAK,2BACL,IAAK,0BACL,MAAO,sDACf,EACM,QAAS,CACP,SAAU,gDAClB,CACA,CACA,EACE,MAAO,CACL,QAAS,SACb,EACE,OAAQ,CACN,QAAS,kBACT,QAAS,UACT,QAAS,SACb,EACE,YAAa,CACX,YAAa,QACb,YAAa,cACb,YAAa,SACb,cAAe,UACnB,CACA,EChJA,IAAIM,GAAgB,OAAO,OAAO,CAAA,EAAIC,GAAc,KAAK,EACrDC,GAAa,CAAA,EACjB,MAAMC,GAAiB,IAAMD,GAAW,OAAO,CAACE,EAAQd,IAAW,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIc,CAAM,EAAGd,CAAM,EAAGW,GAAc,KAAK,EACjI,SAASI,GAAoBC,EAAW,CAC7C,GAAIA,EAAW,CACb,MAAMC,EAAc,OAAO,OAAO,CAAA,EAAID,CAAS,EAC/C,OAAAJ,GAAW,KAAKK,CAAW,EAC3BP,GAAgBG,GAAc,EACvB,IAAM,CACXD,GAAaA,GAAW,OAAOZ,GAAUA,IAAWiB,CAAW,EAC/DP,GAAgBG,GAAc,CAChC,CACF,CACAH,GAAgB,OAAO,OAAO,CAAA,EAAIC,GAAc,KAAK,CACvD,CACO,SAASO,IAAmB,CACjC,OAAOR,EACT,CCjBA,MAAMS,GAA6B36B,EAAAA,cAAc,MAAS,ECEpD46B,GAAY,CAACC,EAAeV,IAAkB,CAClD,MAAMW,EAAaxzB,EAAM,WAAWqzB,EAAa,EAC3CI,EAAYzzB,EAAM,QAAQ,IAAM,CACpC,IAAI9Y,EACJ,MAAMgrC,EAASW,GAAiBa,GAAkBH,CAAa,EACzDI,GAAqBzsC,EAAKssC,GAAe,KAAgC,OAASA,EAAWD,CAAa,KAAO,MAAQrsC,IAAO,OAASA,EAAK,CAAA,EACpJ,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAI,OAAOgrC,GAAW,WAAaA,EAAM,EAAKA,CAAM,EAAGyB,GAAqB,CAAA,CAAE,CACnH,EAAG,CAACJ,EAAeV,EAAeW,CAAU,CAAC,EACvCI,EAAgB5zB,EAAM,QAAQ,IAAM,CACxC,MAAM6zB,EAAaL,GAAe,KAAgC,OAASA,EAAW,OAEtF,OAAKA,GAAe,MAAyCA,EAAW,OAAU,CAACK,EAC1EH,GAAkB,OAEpBG,CACT,EAAG,CAACL,CAAU,CAAC,EACf,MAAO,CAACC,EAAWG,CAAa,CAClC,ECbaE,GAAW,eAClBC,GAAiB16B,GAAS,CAC9B,KAAM,CACJ,OAAA64B,EAAS,CAAA,EACT,SAAA9rB,EACA,YAAA4tB,CACJ,EAAM36B,EACJ,GAAI,QAAQ,IAAI,WAAa,aAAc,CACzC,MAAMoN,EAAUirB,GAAc,gBAAgB,EAC9C,QAAQ,IAAI,WAAa,cAAejrB,EAAQutB,IAAgBF,GAAU,aAAc,+GAA+G,CACzM,CACA9zB,EAAM,UAAU,IACMizB,GAAoBf,GAAW,KAA4B,OAASA,EAAO,KAAK,EAEnG,CAACA,CAAM,CAAC,EACX,MAAM+B,EAA0Bj0B,EAAM,QAAQ,IAAM,OAAO,OAAO,OAAO,OAAO,GAAIkyB,CAAM,EAAG,CAC3F,MAAO,EACX,CAAG,EAAG,CAACA,CAAM,CAAC,EACZ,OAAoBlyB,EAAM,cAAcqzB,GAAc,SAAU,CAC9D,MAAOY,CACX,EAAK7tB,CAAQ,CACb,EACI,QAAQ,IAAI,WAAa,eAC3B2tB,GAAe,YAAc,kBC9BxB,MAAMG,GAAsB,CACjC,KAAM,UACN,OAAQ,UACR,KAAM,UACN,MAAO,UACP,QAAS,UAIT,KAAM,UACN,IAAK,UACL,OAAQ,UACR,OAAQ,UACR,QAAS,UACT,SAAU,UACV,KAAM,UACN,KAAM,SACR,EACMC,GAAY,OAAO,OAAO,OAAO,OAAO,CAAA,EAAID,EAAmB,EAAG,CAEtE,aAAc,UACd,aAAc,UACd,aAAc,UACd,WAAY,UACZ,UAAW,UACX,UAAW,GACX,cAAe,GACf,YAAa,GAEb,WAAY;AAAA;AAAA,oBAGZ,eAAgB,2EAChB,SAAU,GAEV,UAAW,EACX,SAAU,QAEV,WAAY,GACZ,WAAY,EACZ,kBAAmB,oCACnB,oBAAqB,uCACrB,cAAe,sCACf,gBAAiB,uCACjB,kBAAmB,sCACnB,iBAAkB,uCAClB,kBAAmB,yCACnB,mBAAoB,iCAEpB,aAAc,EAEd,SAAU,EACV,SAAU,EACV,eAAgB,GAEhB,cAAe,GAEf,WAAY,EACZ,gBAAiB,IAEjB,aAAc,EAEd,UAAW,GAEX,OAAQ,EACV,CAAC,EChEKE,GAAQ,KAAK,MAYnB,SAASC,GAAclvC,EAAKmvC,EAAU,CACpC,MAAMnkC,EAAQhL,EAEb,QAAQ,eAAgB,IAAI,EAE5B,QAAQ,OAAQ,EAAE,EAAE,MAAM,cAAc,GAAK,CAAA,EACxCovC,EAAUpkC,EAAM,IAAIgtB,GAAQ,WAAWA,CAAI,CAAC,EAClD,QAAS,EAAI,EAAG,EAAI,EAAG,GAAK,EAC1BoX,EAAQ,CAAC,EAAID,EAASC,EAAQ,CAAC,GAAK,EAAGpkC,EAAM,CAAC,GAAK,GAAI,CAAC,EAI1D,OAAIA,EAAM,CAAC,EACTokC,EAAQ,CAAC,EAAIpkC,EAAM,CAAC,EAAE,SAAS,GAAG,EAAIokC,EAAQ,CAAC,EAAI,IAAMA,EAAQ,CAAC,EAGlEA,EAAQ,CAAC,EAAI,EAERA,CACT,CACA,MAAMC,GAAgB,CAACle,EAAKme,EAAGrsC,IAAUA,IAAU,EAAIkuB,EAAMA,EAAM,IAGnE,SAASoe,GAAW9vC,EAAO+vC,EAAK,CAC9B,MAAMC,EAAYD,GAAO,IACzB,OAAI/vC,EAAQgwC,EACHA,EAELhwC,EAAQ,EACH,EAEFA,CACT,CACO,MAAMiwC,EAAU,CACrB,YAAY95B,EAAO,CAIjBqM,EAAgB,KAAM,UAAW,EAAI,EAIrCA,EAAgB,KAAM,IAAK,CAAC,EAI5BA,EAAgB,KAAM,IAAK,CAAC,EAI5BA,EAAgB,KAAM,IAAK,CAAC,EAI5BA,EAAgB,KAAM,IAAK,CAAC,EAE5BA,EAAgB,KAAM,KAAM,MAAM,EAClCA,EAAgB,KAAM,KAAM,MAAM,EAClCA,EAAgB,KAAM,KAAM,MAAM,EAClCA,EAAgB,KAAM,KAAM,MAAM,EAElCA,EAAgB,KAAM,OAAQ,MAAM,EACpCA,EAAgB,KAAM,OAAQ,MAAM,EACpCA,EAAgB,KAAM,cAAe,MAAM,EAM3C,SAAS0tB,EAAY3vC,EAAK,CACxB,OAAOA,EAAI,CAAC,IAAK4V,GAAS5V,EAAI,CAAC,IAAK4V,GAAS5V,EAAI,CAAC,IAAK4V,CACzD,CACA,GAAKA,EAEE,GAAI,OAAOA,GAAU,SAAU,CAEpC,IAASg6B,EAAT,SAAqBxtC,EAAQ,CAC3B,OAAOytC,EAAQ,WAAWztC,CAAM,CAClC,EAHA,MAAMytC,EAAUj6B,EAAM,KAAI,EAItB,oBAAoB,KAAKi6B,CAAO,EAClC,KAAK,cAAcA,CAAO,EACjBD,EAAY,KAAK,EAC1B,KAAK,cAAcC,CAAO,EACjBD,EAAY,KAAK,EAC1B,KAAK,cAAcC,CAAO,GACjBD,EAAY,KAAK,GAAKA,EAAY,KAAK,IAChD,KAAK,cAAcC,CAAO,CAE9B,SAAWj6B,aAAiB85B,GAC1B,KAAK,EAAI95B,EAAM,EACf,KAAK,EAAIA,EAAM,EACf,KAAK,EAAIA,EAAM,EACf,KAAK,EAAIA,EAAM,EACf,KAAK,GAAKA,EAAM,GAChB,KAAK,GAAKA,EAAM,GAChB,KAAK,GAAKA,EAAM,GAChB,KAAK,GAAKA,EAAM,WACP+5B,EAAY,KAAK,EAC1B,KAAK,EAAIJ,GAAW35B,EAAM,CAAC,EAC3B,KAAK,EAAI25B,GAAW35B,EAAM,CAAC,EAC3B,KAAK,EAAI25B,GAAW35B,EAAM,CAAC,EAC3B,KAAK,EAAI,OAAOA,EAAM,GAAM,SAAW25B,GAAW35B,EAAM,EAAG,CAAC,EAAI,UACvD+5B,EAAY,KAAK,EAC1B,KAAK,QAAQ/5B,CAAK,UACT+5B,EAAY,KAAK,EAC1B,KAAK,QAAQ/5B,CAAK,MAElB,OAAM,IAAI,MAAM,6CAA+C,KAAK,UAAUA,CAAK,CAAC,CAExF,CAIA,KAAKnW,EAAO,CACV,OAAO,KAAK,IAAI,IAAKA,CAAK,CAC5B,CACA,KAAKA,EAAO,CACV,OAAO,KAAK,IAAI,IAAKA,CAAK,CAC5B,CACA,KAAKA,EAAO,CACV,OAAO,KAAK,IAAI,IAAKA,CAAK,CAC5B,CACA,KAAKA,EAAO,CACV,OAAO,KAAK,IAAI,IAAKA,EAAO,CAAC,CAC/B,CACA,OAAOA,EAAO,CACZ,MAAMqwC,EAAM,KAAK,MAAK,EACtB,OAAAA,EAAI,EAAIrwC,EACD,KAAK,GAAGqwC,CAAG,CACpB,CAOA,cAAe,CACb,SAASC,EAAYC,EAAK,CACxB,MAAMnmC,EAAMmmC,EAAM,IAClB,OAAOnmC,GAAO,OAAUA,EAAM,MAAQ,KAAK,KAAKA,EAAM,MAAS,MAAO,GAAG,CAC3E,CACA,MAAMomC,EAAIF,EAAY,KAAK,CAAC,EACtBG,EAAIH,EAAY,KAAK,CAAC,EACtBI,EAAIJ,EAAY,KAAK,CAAC,EAC5B,MAAO,OAASE,EAAI,MAASC,EAAI,MAASC,CAC5C,CACA,QAAS,CACP,GAAI,OAAO,KAAK,GAAO,IAAa,CAClC,MAAMC,EAAQ,KAAK,OAAM,EAAK,KAAK,OAAM,EACrCA,IAAU,EACZ,KAAK,GAAK,EAEV,KAAK,GAAKnB,GAAM,IAAM,KAAK,IAAM,KAAK,UAAY,KAAK,EAAI,KAAK,GAAKmB,GAAS,KAAK,EAAI,KAAK,EAAI,EAAI,GAAK,KAAK,IAAM,KAAK,OAAM,GAAM,KAAK,EAAI,KAAK,GAAKA,EAAQ,GAAK,KAAK,EAAI,KAAK,GAAKA,EAAQ,EAAE,CAEtM,CACA,OAAO,KAAK,EACd,CACA,eAAgB,CACd,GAAI,OAAO,KAAK,GAAO,IAAa,CAClC,MAAMA,EAAQ,KAAK,OAAM,EAAK,KAAK,OAAM,EACrCA,IAAU,EACZ,KAAK,GAAK,EAEV,KAAK,GAAKA,EAAQ,KAAK,OAAM,CAEjC,CACA,OAAO,KAAK,EACd,CACA,cAAe,CACb,OAAI,OAAO,KAAK,GAAO,MACrB,KAAK,IAAM,KAAK,OAAM,EAAK,KAAK,OAAM,GAAM,KAEvC,KAAK,EACd,CACA,UAAW,CACT,OAAI,OAAO,KAAK,GAAO,MACrB,KAAK,GAAK,KAAK,OAAM,EAAK,KAErB,KAAK,EACd,CAOA,eAAgB,CACd,OAAI,OAAO,KAAK,YAAgB,MAC9B,KAAK,aAAe,KAAK,EAAI,IAAM,KAAK,EAAI,IAAM,KAAK,EAAI,KAAO,KAE7D,KAAK,WACd,CAIA,OAAOC,EAAS,GAAI,CAClB,MAAMvtB,EAAI,KAAK,OAAM,EACf7kB,EAAI,KAAK,cAAa,EAC5B,IAAIsI,EAAI,KAAK,aAAY,EAAK8pC,EAAS,IACvC,OAAI9pC,EAAI,IACNA,EAAI,GAEC,KAAK,GAAG,CACb,EAAAuc,EACA,EAAA7kB,EACA,EAAAsI,EACA,EAAG,KAAK,CACd,CAAK,CACH,CACA,QAAQ8pC,EAAS,GAAI,CACnB,MAAMvtB,EAAI,KAAK,OAAM,EACf7kB,EAAI,KAAK,cAAa,EAC5B,IAAIsI,EAAI,KAAK,aAAY,EAAK8pC,EAAS,IACvC,OAAI9pC,EAAI,IACNA,EAAI,GAEC,KAAK,GAAG,CACb,EAAAuc,EACA,EAAA7kB,EACA,EAAAsI,EACA,EAAG,KAAK,CACd,CAAK,CACH,CAMA,IAAIqP,EAAOy6B,EAAS,GAAI,CACtB,MAAMC,EAAQ,KAAK,GAAG16B,CAAK,EACrB3W,EAAIoxC,EAAS,IACbE,EAAOjyC,IAAQgyC,EAAMhyC,CAAG,EAAI,KAAKA,CAAG,GAAKW,EAAI,KAAKX,CAAG,EACrDkyC,EAAO,CACX,EAAGvB,GAAMsB,EAAK,GAAG,CAAC,EAClB,EAAGtB,GAAMsB,EAAK,GAAG,CAAC,EAClB,EAAGtB,GAAMsB,EAAK,GAAG,CAAC,EAClB,EAAGtB,GAAMsB,EAAK,GAAG,EAAI,GAAG,EAAI,GAClC,EACI,OAAO,KAAK,GAAGC,CAAI,CACrB,CAMA,KAAKH,EAAS,GAAI,CAChB,OAAO,KAAK,IAAI,CACd,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,CACT,EAAOA,CAAM,CACX,CAMA,MAAMA,EAAS,GAAI,CACjB,OAAO,KAAK,IAAI,CACd,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,CACT,EAAOA,CAAM,CACX,CACA,aAAaI,EAAY,CACvB,MAAMC,EAAK,KAAK,GAAGD,CAAU,EACvBE,EAAQ,KAAK,EAAID,EAAG,GAAK,EAAI,KAAK,GAClCH,EAAOjyC,GACJ2wC,IAAO,KAAK3wC,CAAG,EAAI,KAAK,EAAIoyC,EAAGpyC,CAAG,EAAIoyC,EAAG,GAAK,EAAI,KAAK,IAAMC,CAAK,EAE3E,OAAO,KAAK,GAAG,CACb,EAAGJ,EAAK,GAAG,EACX,EAAGA,EAAK,GAAG,EACX,EAAGA,EAAK,GAAG,EACX,EAAGI,CACT,CAAK,CACH,CAGA,QAAS,CACP,OAAO,KAAK,cAAa,EAAK,GAChC,CACA,SAAU,CACR,OAAO,KAAK,cAAa,GAAM,GACjC,CAGA,OAAOC,EAAO,CACZ,OAAO,KAAK,IAAMA,EAAM,GAAK,KAAK,IAAMA,EAAM,GAAK,KAAK,IAAMA,EAAM,GAAK,KAAK,IAAMA,EAAM,CAC5F,CACA,OAAQ,CACN,OAAO,KAAK,GAAG,IAAI,CACrB,CAGA,aAAc,CACZ,IAAIC,EAAM,IACV,MAAMC,GAAQ,KAAK,GAAK,GAAG,SAAS,EAAE,EACtCD,GAAOC,EAAK,SAAW,EAAIA,EAAO,IAAMA,EACxC,MAAMC,GAAQ,KAAK,GAAK,GAAG,SAAS,EAAE,EACtCF,GAAOE,EAAK,SAAW,EAAIA,EAAO,IAAMA,EACxC,MAAMC,GAAQ,KAAK,GAAK,GAAG,SAAS,EAAE,EAEtC,GADAH,GAAOG,EAAK,SAAW,EAAIA,EAAO,IAAMA,EACpC,OAAO,KAAK,GAAM,UAAY,KAAK,GAAK,GAAK,KAAK,EAAI,EAAG,CAC3D,MAAMC,EAAOhC,GAAM,KAAK,EAAI,GAAG,EAAE,SAAS,EAAE,EAC5C4B,GAAOI,EAAK,SAAW,EAAIA,EAAO,IAAMA,CAC1C,CACA,OAAOJ,CACT,CAGA,OAAQ,CACN,MAAO,CACL,EAAG,KAAK,OAAM,EACd,EAAG,KAAK,cAAa,EACrB,EAAG,KAAK,aAAY,EACpB,EAAG,KAAK,CACd,CACE,CAGA,aAAc,CACZ,MAAM/tB,EAAI,KAAK,OAAM,EACf7kB,EAAIgxC,GAAM,KAAK,cAAa,EAAK,GAAG,EACpC1oC,EAAI0oC,GAAM,KAAK,aAAY,EAAK,GAAG,EACzC,OAAO,KAAK,IAAM,EAAI,QAAQnsB,CAAC,IAAI7kB,CAAC,KAAKsI,CAAC,KAAK,KAAK,CAAC,IAAM,OAAOuc,CAAC,IAAI7kB,CAAC,KAAKsI,CAAC,IAChF,CAGA,OAAQ,CACN,MAAO,CACL,EAAG,KAAK,OAAM,EACd,EAAG,KAAK,cAAa,EACrB,EAAG,KAAK,SAAQ,EAChB,EAAG,KAAK,CACd,CACE,CACA,OAAQ,CACN,MAAO,CACL,EAAG,KAAK,EACR,EAAG,KAAK,EACR,EAAG,KAAK,EACR,EAAG,KAAK,CACd,CACE,CACA,aAAc,CACZ,OAAO,KAAK,IAAM,EAAI,QAAQ,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,IAAM,OAAO,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,GAC3G,CACA,UAAW,CACT,OAAO,KAAK,YAAW,CACzB,CAIA,IAAI2qC,EAAKzxC,EAAO+vC,EAAK,CACnB,MAAM99B,EAAQ,KAAK,MAAK,EACxB,OAAAA,EAAMw/B,CAAG,EAAI3B,GAAW9vC,EAAO+vC,CAAG,EAC3B99B,CACT,CACA,GAAGkE,EAAO,CACR,OAAO,IAAI,KAAK,YAAYA,CAAK,CACnC,CACA,QAAS,CACP,OAAI,OAAO,KAAK,KAAS,MACvB,KAAK,KAAO,KAAK,IAAI,KAAK,EAAG,KAAK,EAAG,KAAK,CAAC,GAEtC,KAAK,IACd,CACA,QAAS,CACP,OAAI,OAAO,KAAK,KAAS,MACvB,KAAK,KAAO,KAAK,IAAI,KAAK,EAAG,KAAK,EAAG,KAAK,CAAC,GAEtC,KAAK,IACd,CACA,cAAci6B,EAAS,CACrB,MAAMsB,EAAgBtB,EAAQ,QAAQ,IAAK,EAAE,EAC7C,SAASuB,EAAWC,EAAQC,EAAQ,CAClC,OAAO,SAASH,EAAcE,CAAM,EAAIF,EAAcG,GAAUD,CAAM,EAAG,EAAE,CAC7E,CACIF,EAAc,OAAS,GAEzB,KAAK,EAAIC,EAAW,CAAC,EACrB,KAAK,EAAIA,EAAW,CAAC,EACrB,KAAK,EAAIA,EAAW,CAAC,EACrB,KAAK,EAAID,EAAc,CAAC,EAAIC,EAAW,CAAC,EAAI,IAAM,IAGlD,KAAK,EAAIA,EAAW,EAAG,CAAC,EACxB,KAAK,EAAIA,EAAW,EAAG,CAAC,EACxB,KAAK,EAAIA,EAAW,EAAG,CAAC,EACxB,KAAK,EAAID,EAAc,CAAC,EAAIC,EAAW,EAAG,CAAC,EAAI,IAAM,EAEzD,CACA,QAAQ,CACN,EAAAtuB,EACA,EAAA7kB,EACA,EAAAsI,EACA,EAAAvI,CACJ,EAAK,CAKD,GAJA,KAAK,GAAK8kB,EAAI,IACd,KAAK,GAAK7kB,EACV,KAAK,GAAKsI,EACV,KAAK,EAAI,OAAOvI,GAAM,SAAWA,EAAI,EACjCC,GAAK,EAAG,CACV,MAAMizC,EAAMjC,GAAM1oC,EAAI,GAAG,EACzB,KAAK,EAAI2qC,EACT,KAAK,EAAIA,EACT,KAAK,EAAIA,CACX,CACA,IAAInwC,EAAI,EACN8hB,EAAI,EACJD,EAAI,EACN,MAAM2uB,EAAWzuB,EAAI,GACf0uB,GAAU,EAAI,KAAK,IAAI,EAAIjrC,EAAI,CAAC,GAAKtI,EACrCwzC,EAAkBD,GAAU,EAAI,KAAK,IAAID,EAAW,EAAI,CAAC,GAC3DA,GAAY,GAAKA,EAAW,GAC9BxwC,EAAIywC,EACJ3uB,EAAI4uB,GACKF,GAAY,GAAKA,EAAW,GACrCxwC,EAAI0wC,EACJ5uB,EAAI2uB,GACKD,GAAY,GAAKA,EAAW,GACrC1uB,EAAI2uB,EACJ5uB,EAAI6uB,GACKF,GAAY,GAAKA,EAAW,GACrC1uB,EAAI4uB,EACJ7uB,EAAI4uB,GACKD,GAAY,GAAKA,EAAW,GACrCxwC,EAAI0wC,EACJ7uB,EAAI4uB,GACKD,GAAY,GAAKA,EAAW,IACrCxwC,EAAIywC,EACJ5uB,EAAI6uB,GAEN,MAAMC,EAAwBnrC,EAAIirC,EAAS,EAC3C,KAAK,EAAIvC,IAAOluC,EAAI2wC,GAAyB,GAAG,EAChD,KAAK,EAAIzC,IAAOpsB,EAAI6uB,GAAyB,GAAG,EAChD,KAAK,EAAIzC,IAAOrsB,EAAI8uB,GAAyB,GAAG,CAClD,CACA,QAAQ,CACN,EAAA5uB,EACA,EAAA7kB,EACA,EAAAuF,EACA,EAAAxF,CACJ,EAAK,CACD,KAAK,GAAK8kB,EAAI,IACd,KAAK,GAAK7kB,EACV,KAAK,GAAKuF,EACV,KAAK,EAAI,OAAOxF,GAAM,SAAWA,EAAI,EACrC,MAAM2zC,EAAK1C,GAAMzrC,EAAI,GAAG,EAIxB,GAHA,KAAK,EAAImuC,EACT,KAAK,EAAIA,EACT,KAAK,EAAIA,EACL1zC,GAAK,EACP,OAEF,MAAM2zC,EAAK9uB,EAAI,GACTzhB,EAAI,KAAK,MAAMuwC,CAAE,EACjBC,EAAKD,EAAKvwC,EACVpC,EAAIgwC,GAAMzrC,GAAK,EAAMvF,GAAK,GAAG,EAC7B2P,EAAIqhC,GAAMzrC,GAAK,EAAMvF,EAAI4zC,GAAM,GAAG,EAClC3zC,EAAI+wC,GAAMzrC,GAAK,EAAMvF,GAAK,EAAM4zC,IAAO,GAAG,EAChD,OAAQxwC,EAAC,CACP,IAAK,GACH,KAAK,EAAInD,EACT,KAAK,EAAIe,EACT,MACF,IAAK,GACH,KAAK,EAAI2O,EACT,KAAK,EAAI3O,EACT,MACF,IAAK,GACH,KAAK,EAAIA,EACT,KAAK,EAAIf,EACT,MACF,IAAK,GACH,KAAK,EAAIe,EACT,KAAK,EAAI2O,EACT,MACF,IAAK,GACH,KAAK,EAAI1P,EACT,KAAK,EAAIe,EACT,MACF,IAAK,GACL,QACE,KAAK,EAAIA,EACT,KAAK,EAAI2O,EACT,KACR,CACE,CACA,cAAciiC,EAAS,CACrB,MAAMiC,EAAQ5C,GAAcW,EAASR,EAAa,EAClD,KAAK,QAAQ,CACX,EAAGyC,EAAM,CAAC,EACV,EAAGA,EAAM,CAAC,EACV,EAAGA,EAAM,CAAC,EACV,EAAGA,EAAM,CAAC,CAChB,CAAK,CACH,CACA,cAAcjC,EAAS,CACrB,MAAMiC,EAAQ5C,GAAcW,EAASR,EAAa,EAClD,KAAK,QAAQ,CACX,EAAGyC,EAAM,CAAC,EACV,EAAGA,EAAM,CAAC,EACV,EAAGA,EAAM,CAAC,EACV,EAAGA,EAAM,CAAC,CAChB,CAAK,CACH,CACA,cAAcjC,EAAS,CACrB,MAAMiC,EAAQ5C,GAAcW,EAAS,CAAC1e,EAAK4gB,IAE3CA,EAAI,SAAS,GAAG,EAAI9C,GAAM9d,EAAM,IAAM,GAAG,EAAIA,CAAG,EAChD,KAAK,EAAI2gB,EAAM,CAAC,EAChB,KAAK,EAAIA,EAAM,CAAC,EAChB,KAAK,EAAIA,EAAM,CAAC,EAChB,KAAK,EAAIA,EAAM,CAAC,CAClB,CACF,CCnhBA,IAAIE,GAAU,EACVC,GAAiB,IACjBC,GAAkB,IAClBC,GAAkB,IAClBC,GAAkB,IAClBC,GAAkB,EAClBC,GAAiB,EAGjBC,GAAe,CAAC,CAClB,MAAO,EACP,OAAQ,EACV,EAAG,CACD,MAAO,EACP,OAAQ,EACV,EAAG,CACD,MAAO,EACP,OAAQ,EACV,EAAG,CACD,MAAO,EACP,OAAQ,EACV,EAAG,CACD,MAAO,EACP,OAAQ,EACV,EAAG,CACD,MAAO,EACP,OAAQ,EACV,EAAG,CACD,MAAO,EACP,OAAQ,EACV,EAAG,CACD,MAAO,EACP,OAAQ,EACV,EAAG,CACD,MAAO,EACP,OAAQ,EACV,EAAG,CACD,MAAO,EACP,OAAQ,EACV,CAAC,EACD,SAASC,GAAO1C,EAAKzuC,EAAGoxC,EAAO,CAC7B,IAAIC,EAEJ,OAAI,KAAK,MAAM5C,EAAI,CAAC,GAAK,IAAM,KAAK,MAAMA,EAAI,CAAC,GAAK,IAClD4C,EAAMD,EAAQ,KAAK,MAAM3C,EAAI,CAAC,EAAIkC,GAAU3wC,EAAI,KAAK,MAAMyuC,EAAI,CAAC,EAAIkC,GAAU3wC,EAE9EqxC,EAAMD,EAAQ,KAAK,MAAM3C,EAAI,CAAC,EAAIkC,GAAU3wC,EAAI,KAAK,MAAMyuC,EAAI,CAAC,EAAIkC,GAAU3wC,EAE5EqxC,EAAM,EACRA,GAAO,IACEA,GAAO,MAChBA,GAAO,KAEFA,CACT,CACA,SAASC,GAAc7C,EAAKzuC,EAAGoxC,EAAO,CAEpC,GAAI3C,EAAI,IAAM,GAAKA,EAAI,IAAM,EAC3B,OAAOA,EAAI,EAEb,IAAI8C,EACJ,OAAIH,EACFG,EAAa9C,EAAI,EAAImC,GAAiB5wC,EAC7BA,IAAMixC,GACfM,EAAa9C,EAAI,EAAImC,GAErBW,EAAa9C,EAAI,EAAIoC,GAAkB7wC,EAGrCuxC,EAAa,IACfA,EAAa,GAGXH,GAASpxC,IAAMgxC,IAAmBO,EAAa,KACjDA,EAAa,IAEXA,EAAa,MACfA,EAAa,KAER,KAAK,MAAMA,EAAa,GAAG,EAAI,GACxC,CACA,SAASpsB,GAASspB,EAAKzuC,EAAGoxC,EAAO,CAC/B,IAAIhzC,EACJ,OAAIgzC,EACFhzC,EAAQqwC,EAAI,EAAIqC,GAAkB9wC,EAElC5B,EAAQqwC,EAAI,EAAIsC,GAAkB/wC,EAGpC5B,EAAQ,KAAK,IAAI,EAAG,KAAK,IAAI,EAAGA,CAAK,CAAC,EAC/B,KAAK,MAAMA,EAAQ,GAAG,EAAI,GACnC,CACe,SAASozC,GAASvC,EAAO,CAKtC,QAJIjhC,EAAO,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAA,EAC3EyjC,EAAW,CAAA,EACXC,EAAS,IAAIrD,GAAUY,CAAK,EAC5BR,EAAMiD,EAAO,MAAK,EACb1xC,EAAIgxC,GAAiBhxC,EAAI,EAAGA,GAAK,EAAG,CAC3C,IAAIP,EAAI,IAAI4uC,GAAU,CACpB,EAAG8C,GAAO1C,EAAKzuC,EAAG,EAAI,EACtB,EAAGsxC,GAAc7C,EAAKzuC,EAAG,EAAI,EAC7B,EAAGmlB,GAASspB,EAAKzuC,EAAG,EAAI,CAC9B,CAAK,EACDyxC,EAAS,KAAKhyC,CAAC,CACjB,CACAgyC,EAAS,KAAKC,CAAM,EACpB,QAAS/pB,EAAK,EAAGA,GAAMspB,GAAgBtpB,GAAM,EAAG,CAC9C,IAAI7Z,EAAK,IAAIugC,GAAU,CACrB,EAAG8C,GAAO1C,EAAK9mB,CAAE,EACjB,EAAG2pB,GAAc7C,EAAK9mB,CAAE,EACxB,EAAGxC,GAASspB,EAAK9mB,CAAE,CACzB,CAAK,EACD8pB,EAAS,KAAK3jC,CAAE,CAClB,CAGA,OAAIE,EAAK,QAAU,OACVkjC,GAAa,IAAI,SAAUh8B,EAAM,CACtC,IAAItT,EAAQsT,EAAK,MACf85B,EAAS95B,EAAK,OAChB,OAAO,IAAIm5B,GAAUrgC,EAAK,iBAAmB,SAAS,EAAE,IAAIyjC,EAAS7vC,CAAK,EAAGotC,CAAM,EAAE,YAAW,CAClG,CAAC,EAEIyC,EAAS,IAAI,SAAUhyC,EAAG,CAC/B,OAAOA,EAAE,YAAW,CACtB,CAAC,CACH,CC7HO,IAAIkyC,GAAsB,CAC/B,IAAO,UACP,QAAW,UACX,OAAU,UACV,KAAQ,UACR,OAAU,UACV,KAAQ,UACR,MAAS,UACT,KAAQ,UACR,KAAQ,UACR,SAAY,UACZ,OAAU,UACV,QAAW,UACX,KAAQ,SACV,EACWC,GAAM,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EAC9HA,GAAI,QAAUA,GAAI,CAAC,EACZ,IAAIC,GAAU,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EAClIA,GAAQ,QAAUA,GAAQ,CAAC,EACpB,IAAIC,GAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EACjIA,GAAO,QAAUA,GAAO,CAAC,EAClB,IAAIC,GAAO,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EAC/HA,GAAK,QAAUA,GAAK,CAAC,EACd,IAAIC,GAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EACjIA,GAAO,QAAUA,GAAO,CAAC,EAClB,IAAIC,GAAO,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EAC/HA,GAAK,QAAUA,GAAK,CAAC,EACd,IAAIC,GAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EAChIA,GAAM,QAAUA,GAAM,CAAC,EAChB,IAAIC,GAAO,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EAC/HA,GAAK,QAAUA,GAAK,CAAC,EACd,IAAIC,GAAO,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EAC/HA,GAAK,QAAUA,GAAK,CAAC,EACd,IAAIC,GAAW,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EACnIA,GAAS,QAAUA,GAAS,CAAC,EACtB,IAAIC,GAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EACjIA,GAAO,QAAUA,GAAO,CAAC,EAClB,IAAIC,GAAU,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EAClIA,GAAQ,QAAUA,GAAQ,CAAC,EACpB,IAAIC,GAAO,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EAC/HA,GAAK,QAAUA,GAAK,CAAC,EAEd,IAAIC,GAAiB,CAC1B,IAAKb,GACL,QAASC,GACT,OAAQC,GACR,KAAMC,GACN,OAAQC,GACR,KAAMC,GACN,MAAOC,GACP,KAAMC,GACN,KAAMC,GACN,SAAUC,GACV,OAAQC,GACR,QAASC,GACT,KAAMC,EACR,ECzDe,SAASE,GAAiBC,EAAM,CAC7C,sBAAAC,EACA,6BAAAC,CACF,EAAG,CACD,KAAM,CACJ,aAAcC,EACd,aAAcC,EACd,WAAYC,EACZ,UAAWC,EACX,aAAcC,EACd,YAAAC,EACA,cAAAC,CACJ,EAAMT,EACEU,EAAgBT,EAAsBM,CAAgB,EACtDI,EAAgBV,EAAsBE,CAAgB,EACtDS,EAAgBX,EAAsBG,CAAgB,EACtDS,EAAcZ,EAAsBI,CAAc,EAClDS,EAAab,EAAsBK,CAAa,EAChDS,EAAgBb,EAA6BM,EAAaC,CAAa,EAEvEO,EAAYhB,EAAK,WAAaA,EAAK,UACnCiB,EAAahB,EAAsBe,CAAS,EAC5CE,EAA0B,IAAIxF,GAAUmF,EAAY,CAAC,CAAC,EAAE,IAAI,IAAInF,GAAUmF,EAAY,CAAC,CAAC,EAAG,EAAE,EAAE,YAAW,EAChH,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIE,CAAa,EAAG,CACrD,eAAgBL,EAAc,CAAC,EAC/B,oBAAqBA,EAAc,CAAC,EACpC,mBAAoBA,EAAc,CAAC,EACnC,wBAAyBA,EAAc,CAAC,EACxC,kBAAmBA,EAAc,CAAC,EAClC,aAAcA,EAAc,CAAC,EAC7B,mBAAoBA,EAAc,CAAC,EACnC,sBAAuBA,EAAc,CAAC,EACtC,iBAAkBA,EAAc,CAAC,EACjC,uBAAwBA,EAAc,EAAE,EACxC,eAAgBC,EAAc,CAAC,EAC/B,oBAAqBA,EAAc,CAAC,EACpC,mBAAoBA,EAAc,CAAC,EACnC,wBAAyBA,EAAc,CAAC,EACxC,kBAAmBA,EAAc,CAAC,EAClC,aAAcA,EAAc,CAAC,EAC7B,mBAAoBA,EAAc,CAAC,EACnC,sBAAuBA,EAAc,CAAC,EACtC,iBAAkBA,EAAc,CAAC,EACjC,uBAAwBA,EAAc,EAAE,EACxC,aAAcE,EAAY,CAAC,EAC3B,kBAAmBA,EAAY,CAAC,EAChC,wBAAAK,EACA,mBAAoBL,EAAY,CAAC,EACjC,iBAAkBA,EAAY,CAAC,EAC/B,sBAAuBA,EAAY,CAAC,EACpC,gBAAiBA,EAAY,CAAC,EAC9B,WAAYA,EAAY,CAAC,EACzB,iBAAkBA,EAAY,CAAC,EAC/B,oBAAqBA,EAAY,CAAC,EAClC,eAAgBA,EAAY,CAAC,EAC7B,qBAAsBA,EAAY,EAAE,EACpC,eAAgBD,EAAc,CAAC,EAC/B,oBAAqBA,EAAc,CAAC,EACpC,mBAAoBA,EAAc,CAAC,EACnC,wBAAyBA,EAAc,CAAC,EACxC,kBAAmBA,EAAc,CAAC,EAClC,aAAcA,EAAc,CAAC,EAC7B,mBAAoBA,EAAc,CAAC,EACnC,sBAAuBA,EAAc,CAAC,EACtC,iBAAkBA,EAAc,CAAC,EACjC,uBAAwBA,EAAc,EAAE,EACxC,YAAaE,EAAW,CAAC,EACzB,iBAAkBA,EAAW,CAAC,EAC9B,gBAAiBA,EAAW,CAAC,EAC7B,qBAAsBA,EAAW,CAAC,EAClC,eAAgBA,EAAW,CAAC,EAC5B,UAAWA,EAAW,CAAC,EACvB,gBAAiBA,EAAW,CAAC,EAC7B,mBAAoBA,EAAW,CAAC,EAChC,cAAeA,EAAW,CAAC,EAC3B,oBAAqBA,EAAW,EAAE,EAClC,eAAgBG,EAAW,CAAC,EAC5B,UAAWA,EAAW,CAAC,EACvB,gBAAiBA,EAAW,CAAC,EAC7B,YAAa,IAAIvF,GAAU,MAAM,EAAE,KAAK,GAAI,EAAE,YAAW,EACzD,WAAY,MAChB,CAAG,CACH,CCnFA,MAAMyF,GAAYC,GAAc,CAC9B,IAAIC,EAAWD,EACXE,EAAWF,EACXG,EAAWH,EACXI,EAAcJ,EAElB,OAAIA,EAAa,GAAKA,GAAc,EAClCC,EAAWD,EAAa,EACfA,EAAa,IAAMA,GAAc,EAC1CC,EAAWD,EAAa,EACfA,GAAc,KACvBC,EAAW,IAGTD,EAAa,GAAKA,GAAc,EAClCE,EAAW,EACFF,EAAa,GAAKA,GAAc,EACzCE,EAAW,EACFF,EAAa,IAAMA,GAAc,EAC1CE,EAAW,EACFF,EAAa,IAAMA,GAAc,GAC1CE,EAAW,EACFF,GAAc,KACvBE,EAAW,GAGTF,EAAa,GAAKA,GAAc,EAClCG,EAAW,EACFH,GAAc,IACvBG,EAAW,GAGTH,EAAa,GAAKA,EAAa,EACjCI,EAAc,EACLJ,GAAc,IACvBI,EAAc,GAET,CACL,aAAcJ,EACd,eAAgBG,EAChB,eAAgBD,EAChB,eAAgBD,EAChB,kBAAmBG,CACvB,CACA,EC3Ce,SAASC,GAAkBtd,EAAO,CAC/C,KAAM,CACJ,WAAAud,EACA,WAAAC,EACA,aAAAC,EACA,UAAAC,CACJ,EAAM1d,EACJ,OAAO,OAAO,OAAO,CAEnB,mBAAoB,IAAIwd,EAAaD,GAAY,QAAQ,CAAC,CAAC,IAC3D,kBAAmB,IAAIC,EAAaD,EAAa,GAAG,QAAQ,CAAC,CAAC,IAC9D,mBAAoB,IAAIC,EAAaD,EAAa,GAAG,QAAQ,CAAC,CAAC,IAE/D,cAAeG,EAAY,CAC/B,EAAKV,GAAUS,CAAY,CAAC,CAC5B,CChBA,MAAME,GAAmB3d,GAAS,CAChC,KAAM,CACJ,cAAA4d,CACJ,EAAM5d,EACJ,MAAO,CACL,gBAAiB4d,EAAgB,IACjC,gBAAiBA,EAAgB,GACjC,gBAAiBA,EAAgB,IACrC,CACA,ECTO,SAASC,GAAcC,EAAU,CACtC,OAAQA,EAAW,GAAKA,CAC1B,CAEe,SAASC,GAAaC,EAAM,CACzC,MAAMC,EAAY,MAAM,KAAK,CAC3B,OAAQ,EACZ,CAAG,EAAE,IAAI,CAAC9G,EAAGrsC,IAAU,CACnB,MAAM,EAAIA,EAAQ,EACZozC,EAAWF,EAAO,KAAK,IAAI,KAAK,EAAG,EAAI,CAAC,EACxCG,EAAUrzC,EAAQ,EAAI,KAAK,MAAMozC,CAAQ,EAAI,KAAK,KAAKA,CAAQ,EAErE,OAAO,KAAK,MAAMC,EAAU,CAAC,EAAI,CACnC,CAAC,EACD,OAAAF,EAAU,CAAC,EAAID,EACRC,EAAU,IAAI9tB,IAAS,CAC5B,KAAAA,EACA,WAAY0tB,GAAc1tB,CAAI,CAClC,EAAI,CACJ,CClBA,MAAMiuB,GAAkBN,GAAY,CAClC,MAAMO,EAAgBC,GAAaR,CAAQ,EACrCG,EAAYI,EAAc,IAAIE,GAAQA,EAAK,IAAI,EAC/CC,EAAcH,EAAc,IAAIE,GAAQA,EAAK,UAAU,EACvDE,EAAaR,EAAU,CAAC,EACxBS,EAAaT,EAAU,CAAC,EACxBU,EAAaV,EAAU,CAAC,EACxBW,EAAaJ,EAAY,CAAC,EAC1BK,EAAeL,EAAY,CAAC,EAC5BM,EAAeN,EAAY,CAAC,EAClC,MAAO,CACL,WAAAE,EACA,SAAUD,EACV,WAAAE,EACA,WAAYV,EAAU,CAAC,EACvB,iBAAkBA,EAAU,CAAC,EAC7B,iBAAkBA,EAAU,CAAC,EAC7B,iBAAkBA,EAAU,CAAC,EAC7B,iBAAkBA,EAAU,CAAC,EAC7B,iBAAkBA,EAAU,CAAC,EAC7B,WAAAW,EACA,aAAAE,EACA,aAAAD,EACA,WAAY,KAAK,MAAMD,EAAaH,CAAU,EAC9C,aAAc,KAAK,MAAMK,EAAeH,CAAU,EAClD,aAAc,KAAK,MAAME,EAAeH,CAAU,EAClD,mBAAoBF,EAAY,CAAC,EACjC,mBAAoBA,EAAY,CAAC,EACjC,mBAAoBA,EAAY,CAAC,EACjC,mBAAoBA,EAAY,CAAC,EACjC,mBAAoBA,EAAY,CAAC,CACrC,CACA,ECjCe,SAASO,GAAgB/e,EAAO,CAC7C,KAAM,CACJ,SAAAgf,EACA,SAAAC,CACJ,EAAMjf,EACJ,MAAO,CACL,QAASgf,GAAYC,EAAW,GAEhC,OAAQD,GAAYC,EAAW,GAE/B,OAAQD,GAAYC,EAAW,GAE/B,OAAQD,GAAYC,EAAW,GAE/B,OAAQD,EAAWC,EAEnB,KAAMD,EAAWC,EAEjB,OAAQD,GAAYC,EAAW,GAE/B,OAAQD,GAAYC,EAAW,GAE/B,QAASD,GAAYC,EAAW,EACpC,CACA,CCvBO,MAAMC,GAAgB,CAACC,EAAW3G,IAAU,IAAIjB,GAAU4H,CAAS,EAAE,KAAK3G,CAAK,EAAE,YAAW,EACtF4G,GAAgB,CAACD,EAAWE,IACtB,IAAI9H,GAAU4H,CAAS,EACxB,OAAOE,CAAU,EAAE,YAAW,ECFnCvD,GAAwBqD,GAAa,CAChD,MAAMG,EAAS5E,GAASyE,CAAS,EACjC,MAAO,CACL,EAAGG,EAAO,CAAC,EACX,EAAGA,EAAO,CAAC,EACX,EAAGA,EAAO,CAAC,EACX,EAAGA,EAAO,CAAC,EACX,EAAGA,EAAO,CAAC,EACX,EAAGA,EAAO,CAAC,EACX,EAAGA,EAAO,CAAC,EACX,EAAGA,EAAO,CAAC,EACX,EAAGA,EAAO,CAAC,EACX,GAAIA,EAAO,CAAC,CAIhB,CACA,EACavD,GAA+B,CAACwD,EAAaC,IAAkB,CAC1E,MAAMnD,EAAckD,GAAe,OAC7BjD,EAAgBkD,GAAiB,OACvC,MAAO,CACL,YAAAnD,EACA,cAAAC,EACA,UAAW4C,GAAc5C,EAAe,GAAI,EAC5C,mBAAoB4C,GAAc5C,EAAe,GAAI,EACrD,kBAAmB4C,GAAc5C,EAAe,GAAI,EACpD,oBAAqB4C,GAAc5C,EAAe,GAAI,EACtD,UAAW4C,GAAc5C,EAAe,GAAI,EAC5C,mBAAoB4C,GAAc5C,EAAe,GAAI,EACrD,kBAAmB4C,GAAc5C,EAAe,GAAI,EACpD,oBAAqB4C,GAAc5C,EAAe,GAAI,EACtD,aAAc4C,GAAc5C,EAAe,CAAC,EAC5C,kBAAmB4C,GAAc5C,EAAe,GAAI,EACpD,mBAAoB4C,GAAc5C,EAAe,GAAI,EACrD,cAAe8C,GAAc/C,EAAa,CAAC,EAC3C,iBAAkB+C,GAAc/C,EAAa,CAAC,EAC9C,gBAAiB+C,GAAc/C,EAAa,CAAC,EAC7C,iBAAkB6C,GAAc5C,EAAe,GAAI,EACnD,YAAa,cACb,YAAa8C,GAAc/C,EAAa,EAAE,EAC1C,qBAAsB+C,GAAc/C,EAAa,CAAC,CACtD,CACA,ECrCe,SAASpd,GAAWe,EAAO,CAExC6a,GAAoB,KAAOA,GAAoB,QAC/Cc,GAAe,KAAOA,GAAe,QACrC,MAAM8D,EAAgB,OAAO,KAAK7I,EAAmB,EAAE,IAAI8I,GAAY,CACrE,MAAMJ,EAAStf,EAAM0f,CAAQ,IAAM7E,GAAoB6E,CAAQ,EAAI/D,GAAe+D,CAAQ,EAAIhF,GAAS1a,EAAM0f,CAAQ,CAAC,EACtH,OAAO,MAAM,KAAK,CAChB,OAAQ,EACd,EAAO,IAAM,CAAC,EAAE,OAAO,CAACjmC,EAAM09B,EAAGjuC,KAC3BuQ,EAAK,GAAGimC,CAAQ,IAAIx2C,EAAI,CAAC,EAAE,EAAIo2C,EAAOp2C,CAAC,EACvCuQ,EAAK,GAAGimC,CAAQ,GAAGx2C,EAAI,CAAC,EAAE,EAAIo2C,EAAOp2C,CAAC,EAC/BuQ,GACN,CAAA,CAAE,CACP,CAAC,EAAE,OAAO,CAACA,EAAMkmC,KACflmC,EAAO,OAAO,OAAO,OAAO,OAAO,GAAIA,CAAI,EAAGkmC,CAAG,EAC1ClmC,GACN,CAAA,CAAE,EACL,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIumB,CAAK,EAAGyf,CAAa,EAAG7D,GAAiB5b,EAAO,CAC3J,sBAAA8b,GACA,6BAAAC,EACJ,CAAG,CAAC,EAAGqC,GAAgBpe,EAAM,QAAQ,CAAC,EAAG+e,GAAgB/e,CAAK,CAAC,EAAG2d,GAAiB3d,CAAK,CAAC,EAAGsd,GAAkBtd,CAAK,CAAC,CACpH,CC3BA,MAAM4f,GAAe1f,GAAY2f,EAAiB,ECGrCC,GAAgB,CAC3B,MAAOC,GACP,SAAU,CACR,SAAUA,EACd,EACE,OAAQ,EACV,EACaC,GAAkCt9B,EAAM,cAAco9B,EAAa,ECXnEG,GAAmB,MACnBC,GAAuB,UACvBC,GAAW,CAAC,WAAY,aAAc,SAAU,YAAY,EACnEC,GAAsB,CAACC,EAAWC,IAClCA,IAGGD,EAAY,GAAGJ,EAAgB,IAAII,CAAS,GAAKJ,IAG7CM,GAA6B79B,EAAM,cAAc,CAE5D,aAAc09B,GACd,cAAeF,EACjB,CAAC,EACY,CACX,SAAUM,GACZ,EAAID,GACEE,GAAe,CAAA,EASd,SAASC,GAAmBC,EAAU,CAC3C,MAAMC,EAAUl+B,EAAM,WAAW69B,EAAa,EACxC,CACJ,aAAAM,EACA,UAAAC,EACA,kBAAAC,CACJ,EAAMH,EACEI,EAAYJ,EAAQD,CAAQ,EAClC,OAAO,OAAO,OAAO,OAAO,OAAO,CACjC,WAAYF,GACZ,OAAQA,EACZ,EAAKO,CAAS,EAAG,CACb,aAAAH,EACA,UAAAC,EACA,kBAAAC,CACJ,CAAG,CACH,CCvCA,MAAME,GAAmB,QAAQ,KAAK,IAAG,CAAE,IAAI,KAAK,OAAM,CAAE,GACrD,SAASC,GAASC,EAAiBtb,EAAO,CAC/C,MAAMub,EAAY,CAAA,EACZC,EAAc,CAAClJ,EAAO9T,IAAY,CACtC,IAAI9qB,EAAQ4+B,EAAM,MAAK,EACvB,OAAA5+B,GAAS8qB,GAAY,KAA6B,OAASA,EAAQ9qB,CAAK,IAAMA,EACvEA,EAAM,YAAW,CAC1B,EACM+nC,EAAY,CAACC,EAAU73C,IAAS,CACpC,MAAMy1C,EAAY,IAAI5H,GAAUgK,CAAQ,EAClC9B,EAAgB/E,GAASyE,EAAU,YAAW,CAAE,EACtDiC,EAAU,GAAG13C,CAAI,QAAQ,EAAI23C,EAAYlC,CAAS,EAClDiC,EAAU,GAAG13C,CAAI,iBAAiB,EAAI+1C,EAAc,CAAC,EACrD2B,EAAU,GAAG13C,CAAI,cAAc,EAAI+1C,EAAc,CAAC,EAClD2B,EAAU,GAAG13C,CAAI,eAAe,EAAI+1C,EAAc,CAAC,EACnD2B,EAAU,GAAG13C,CAAI,gBAAgB,EAAIy1C,EAAU,QAAQ,KAAK,EAAG,EAAE,YAAW,EAC5EiC,EAAU,GAAG13C,CAAI,sBAAsB,EAAI+1C,EAAc,CAAC,EAC1D2B,EAAU,GAAG13C,CAAI,0BAA0B,EAAI+1C,EAAc,CAAC,CAChE,EAEA,GAAI5Z,EAAM,aAAc,CACtByb,EAAUzb,EAAM,aAAc,SAAS,EACvC,MAAM2b,EAAe,IAAIjK,GAAU1R,EAAM,YAAY,EAC/C0W,EAAgB7B,GAAS8G,EAAa,YAAW,CAAE,EAEzDjF,EAAc,QAAQ,CAACpE,EAAOrtC,IAAU,CACtCs2C,EAAU,WAAWt2C,EAAQ,CAAC,EAAE,EAAIqtC,CACtC,CAAC,EAEDiJ,EAAU,+BAA+B,EAAIC,EAAYG,EAAc74C,GAAKA,EAAE,QAAQ,EAAE,CAAC,EACzFy4C,EAAU,+BAA+B,EAAIC,EAAYG,EAAc74C,GAAKA,EAAE,QAAQ,EAAE,CAAC,EACzFy4C,EAAU,+BAA+B,EAAIC,EAAYG,EAAc74C,GAAKA,EAAE,KAAK,EAAE,CAAC,EACtFy4C,EAAU,+BAA+B,EAAIC,EAAYG,EAAc74C,GAAKA,EAAE,KAAK,EAAE,CAAC,EACtFy4C,EAAU,+BAA+B,EAAIC,EAAYG,EAAc74C,GAAKA,EAAE,KAAKA,EAAE,EAAI,GAAI,CAAC,EAC9F,MAAM84C,EAAqB,IAAIlK,GAAUgF,EAAc,CAAC,CAAC,EACzD6E,EAAU,sCAAsC,EAAIC,EAAYI,EAAoB94C,GAAKA,EAAE,KAAKA,EAAE,EAAI,EAAG,CAAC,EAC1Gy4C,EAAU,sCAAsC,EAAIC,EAAYI,EAAoB94C,GAAKA,EAAE,OAAO,CAAC,CAAC,CACtG,CAEA,OAAIk9B,EAAM,cACRyb,EAAUzb,EAAM,aAAc,SAAS,EAGrCA,EAAM,cACRyb,EAAUzb,EAAM,aAAc,SAAS,EAGrCA,EAAM,YACRyb,EAAUzb,EAAM,WAAY,OAAO,EAGjCA,EAAM,WACRyb,EAAUzb,EAAM,UAAW,MAAM,EAI5B;AAAA;AAAA,MADS,OAAO,KAAKub,CAAS,EAAE,IAAIj7C,GAAO,KAAKg7C,CAAe,IAAIh7C,CAAG,KAAKi7C,EAAUj7C,CAAG,CAAC,GAAG,EAGvF,KAAK;AAAA,CAAI,CAAC;AAAA;AAAA,IAEpB,KAAI,CACR,CACO,SAASu7C,GAAcP,EAAiBtb,EAAO,CACpD,MAAMzH,EAAQ8iB,GAASC,EAAiBtb,CAAK,EACzC1L,GAAS,EACXiC,GAAUgC,EAAO,GAAG6iB,EAAgB,gBAAgB,EAEpD,QAAQ,IAAI,WAAa,cAAe93B,GAAQ,GAAO,iBAAkB,sDAAsD,CAEnI,CCvEA,MAAMw4B,GAA+Bj/B,EAAM,cAAc,EAAK,EACjDk/B,GAA0B,CAAC,CACtC,SAAA94B,EACA,SAAAyN,CACF,IAAM,CACJ,MAAMsrB,EAAiBn/B,EAAM,WAAWi/B,EAAe,EACvD,OAAoBj/B,EAAM,cAAci/B,GAAgB,SAAU,CAChE,MAAOprB,GAAsDsrB,CACjE,EAAK/4B,CAAQ,CACb,ECTMg5B,GAA2Bp/B,EAAM,cAAc,MAAS,EACjDq/B,GAAsB,CAAC,CAClC,SAAAj5B,EACA,KAAAqH,CACF,IAAM,CACJ,MAAM6xB,EAAat/B,EAAM,WAAWo/B,EAAW,EAC/C,OAAoBp/B,EAAM,cAAco/B,GAAY,SAAU,CAC5D,MAAO3xB,GAAQ6xB,CACnB,EAAKl5B,CAAQ,CACb,ECTA,SAASm5B,IAAY,CACnB,MAAMC,EAAoB/lC,EAAAA,WAAWwlC,EAAe,EAC9CQ,EAAgBhmC,EAAAA,WAAW2lC,EAAW,EAC5C,MAAO,CACL,kBAAAI,EACA,cAAAC,CACJ,CACA,CCRA,IAAIC,GAAkC9sB,GAAa,SAAS8sB,GAAqB,CAC/EhtB,GAAgB,KAAMgtB,CAAkB,CAC1C,CAAC,ECIGC,GAAY,YACZC,GAAS,IAAI,OAAOD,GAAW,GAAG,EACtC,SAASvhB,GAAKx5B,EAAO,CACnB,OAAI,OAAOA,GAAU,SACZ,GAAG,OAAOA,CAAK,EAAE,OAAO+6C,EAAS,EAEnC/6C,CACT,CACA,IAAIi7C,GAA6B,SAAUC,EAAqB,CAC9DhtB,GAAU+sB,EAAeC,CAAmB,EAC5C,IAAInsB,EAASN,GAAawsB,CAAa,EACvC,SAASA,EAAcvpB,EAAKypB,EAAgB,CAC1C,IAAI/tB,EACJU,GAAgB,KAAMmtB,CAAa,EACnC7tB,EAAQ2B,EAAO,KAAK,IAAI,EACxBvM,EAAgB8L,GAAuBlB,CAAK,EAAG,SAAU,EAAE,EAC3D5K,EAAgB8L,GAAuBlB,CAAK,EAAG,iBAAkB,MAAM,EACvE5K,EAAgB8L,GAAuBlB,CAAK,EAAG,cAAe,MAAM,EACpE,IAAIguB,EAAUl6B,GAAQwQ,CAAG,EACzB,OAAAtE,EAAM,eAAiB+tB,EACnBzpB,aAAeupB,EACjB7tB,EAAM,OAAS,IAAI,OAAOsE,EAAI,OAAQ,GAAG,EAChC0pB,IAAY,SACrBhuB,EAAM,OAASoM,GAAK9H,CAAG,EACd0pB,IAAY,WACrBhuB,EAAM,OAASsE,GAEVtE,CACT,CACAY,OAAAA,GAAaitB,EAAe,CAAC,CAC3B,IAAK,MACL,MAAO,SAAavpB,EAAK,CACvB,OAAIA,aAAeupB,EACjB,KAAK,OAAS,GAAG,OAAO,KAAK,OAAQ,KAAK,EAAE,OAAOvpB,EAAI,UAAS,CAAE,GACzD,OAAOA,GAAQ,UAAY,OAAOA,GAAQ,YACnD,KAAK,OAAS,GAAG,OAAO,KAAK,OAAQ,KAAK,EAAE,OAAO8H,GAAK9H,CAAG,CAAC,GAE9D,KAAK,YAAc,GACZ,IACT,CACJ,EAAK,CACD,IAAK,MACL,MAAO,SAAaA,EAAK,CACvB,OAAIA,aAAeupB,EACjB,KAAK,OAAS,GAAG,OAAO,KAAK,OAAQ,KAAK,EAAE,OAAOvpB,EAAI,UAAS,CAAE,GACzD,OAAOA,GAAQ,UAAY,OAAOA,GAAQ,YACnD,KAAK,OAAS,GAAG,OAAO,KAAK,OAAQ,KAAK,EAAE,OAAO8H,GAAK9H,CAAG,CAAC,GAE9D,KAAK,YAAc,GACZ,IACT,CACJ,EAAK,CACD,IAAK,MACL,MAAO,SAAaA,EAAK,CACvB,OAAI,KAAK,cACP,KAAK,OAAS,IAAI,OAAO,KAAK,OAAQ,GAAG,GAEvCA,aAAeupB,EACjB,KAAK,OAAS,GAAG,OAAO,KAAK,OAAQ,KAAK,EAAE,OAAOvpB,EAAI,UAAU,EAAI,CAAC,GAC7D,OAAOA,GAAQ,UAAY,OAAOA,GAAQ,YACnD,KAAK,OAAS,GAAG,OAAO,KAAK,OAAQ,KAAK,EAAE,OAAOA,CAAG,GAExD,KAAK,YAAc,GACZ,IACT,CACJ,EAAK,CACD,IAAK,MACL,MAAO,SAAaA,EAAK,CACvB,OAAI,KAAK,cACP,KAAK,OAAS,IAAI,OAAO,KAAK,OAAQ,GAAG,GAEvCA,aAAeupB,EACjB,KAAK,OAAS,GAAG,OAAO,KAAK,OAAQ,KAAK,EAAE,OAAOvpB,EAAI,UAAU,EAAI,CAAC,GAC7D,OAAOA,GAAQ,UAAY,OAAOA,GAAQ,YACnD,KAAK,OAAS,GAAG,OAAO,KAAK,OAAQ,KAAK,EAAE,OAAOA,CAAG,GAExD,KAAK,YAAc,GACZ,IACT,CACJ,EAAK,CACD,IAAK,YACL,MAAO,SAAmB2pB,EAAO,CAC/B,OAAO,KAAK,aAAeA,EAAQ,IAAI,OAAO,KAAK,OAAQ,GAAG,EAAI,KAAK,MACzE,CACJ,EAAK,CACD,IAAK,QACL,MAAO,SAAe54C,EAAS,CAC7B,IAAI64C,EAAS,KACTxkC,EAAOrU,GAAW,CAAA,EACpB84C,EAAUzkC,EAAK,KACb0kC,EAAa,GASjB,OARI,OAAOD,GAAY,UACrBC,EAAaD,EACJ,MAAM,KAAK,KAAK,cAAc,EAAE,KAAK,SAAU3gB,EAAQ,CAChE,OAAO0gB,EAAO,OAAO,SAAS1gB,CAAM,CACtC,CAAC,IACC4gB,EAAa,IAEf,KAAK,OAAS,KAAK,OAAO,QAAQR,GAAQQ,EAAa,KAAO,EAAE,EAC5D,OAAO,KAAK,YAAgB,IACvB,QAAQ,OAAO,KAAK,OAAQ,GAAG,EAEjC,KAAK,MACd,CACJ,CAAG,CAAC,EACKP,CACT,EAAEH,EAAkB,EC3GhBW,GAA6B,SAAUP,EAAqB,CAC9DhtB,GAAUutB,EAAeP,CAAmB,EAC5C,IAAInsB,EAASN,GAAagtB,CAAa,EACvC,SAASA,EAAc/pB,EAAK,CAC1B,IAAItE,EACJU,OAAAA,GAAgB,KAAM2tB,CAAa,EACnCruB,EAAQ2B,EAAO,KAAK,IAAI,EACxBvM,EAAgB8L,GAAuBlB,CAAK,EAAG,SAAU,CAAC,EACtDsE,aAAe+pB,EACjBruB,EAAM,OAASsE,EAAI,OACV,OAAOA,GAAQ,WACxBtE,EAAM,OAASsE,GAEVtE,CACT,CACAY,OAAAA,GAAaytB,EAAe,CAAC,CAC3B,IAAK,MACL,MAAO,SAAa/pB,EAAK,CACvB,OAAIA,aAAe+pB,EACjB,KAAK,QAAU/pB,EAAI,OACV,OAAOA,GAAQ,WACxB,KAAK,QAAUA,GAEV,IACT,CACJ,EAAK,CACD,IAAK,MACL,MAAO,SAAaA,EAAK,CACvB,OAAIA,aAAe+pB,EACjB,KAAK,QAAU/pB,EAAI,OACV,OAAOA,GAAQ,WACxB,KAAK,QAAUA,GAEV,IACT,CACJ,EAAK,CACD,IAAK,MACL,MAAO,SAAaA,EAAK,CACvB,OAAIA,aAAe+pB,EACjB,KAAK,QAAU/pB,EAAI,OACV,OAAOA,GAAQ,WACxB,KAAK,QAAUA,GAEV,IACT,CACJ,EAAK,CACD,IAAK,MACL,MAAO,SAAaA,EAAK,CACvB,OAAIA,aAAe+pB,EACjB,KAAK,QAAU/pB,EAAI,OACV,OAAOA,GAAQ,WACxB,KAAK,QAAUA,GAEV,IACT,CACJ,EAAK,CACD,IAAK,QACL,MAAO,UAAiB,CACtB,OAAO,KAAK,MACd,CACJ,CAAG,CAAC,EACK+pB,CACT,EAAEX,EAAkB,ECnEhBY,GAAU,SAAiBt5C,EAAM+4C,EAAgB,CACnD,IAAIQ,EAAav5C,IAAS,MAAQ64C,GAAgBQ,GAClD,OAAO,SAAU/pB,EAAK,CACpB,OAAO,IAAIiqB,EAAWjqB,EAAKypB,CAAc,CAC3C,CACF,ECPIS,GAAmB,SAA0BjP,EAAWhqC,EAAQ,CAClE,MAAO,GAAG,OAAO,CAACA,EAAQgqC,EAAU,QAAQ,yBAA0B,OAAO,EAAE,QAAQ,kBAAmB,OAAO,CAAC,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,CAAC,CAC/I,ECDe,SAASkP,GAASrtC,EAAU,CACzC,IAAIstC,EAAQ1gC,EAAM,OAAM,EACxB0gC,EAAM,QAAUttC,EAChB,IAAIutC,EAAS3gC,EAAM,YAAY,UAAY,CAEzC,QADI4gC,EACKz0B,EAAO,UAAU,OAAQplB,EAAO,IAAI,MAAMolB,CAAI,EAAGE,EAAO,EAAGA,EAAOF,EAAME,IAC/EtlB,EAAKslB,CAAI,EAAI,UAAUA,CAAI,EAE7B,OAAQu0B,EAAiBF,EAAM,WAAa,MAAQE,IAAmB,OAAS,OAASA,EAAe,KAAK,MAAMA,EAAgB,CAACF,CAAK,EAAE,OAAO35C,CAAI,CAAC,CACzJ,EAAG,CAAA,CAAE,EACL,OAAO45C,CACT,CCLe,SAASE,GAAal2C,EAAc,CACjD,IAAIm2C,EAAa9gC,EAAM,OAAO,EAAK,EAC/B+gC,EAAkB/gC,EAAM,SAASrV,CAAY,EAC/Cq2C,EAAmB7pB,GAAe4pB,EAAiB,CAAC,EACpDn8C,EAAQo8C,EAAiB,CAAC,EAC1BC,EAAWD,EAAiB,CAAC,EAC/BhhC,EAAM,UAAU,UAAY,CAC1B,OAAA8gC,EAAW,QAAU,GACd,UAAY,CACjBA,EAAW,QAAU,EACvB,CACF,EAAG,CAAA,CAAE,EACL,SAASI,EAAavf,EAASwf,EAAe,CACxCA,GAAiBL,EAAW,SAGhCG,EAAStf,CAAO,CAClB,CACA,MAAO,CAAC/8B,EAAOs8C,CAAY,CAC7B,CCrBA,SAASE,GAASx8C,EAAO,CACvB,OAAOA,IAAU,MACnB,CAMe,SAASy8C,GAAeC,EAAmBh0C,EAAQ,CAChE,IAAIoO,EAAOpO,GAAU,CAAA,EACnB3C,EAAe+Q,EAAK,aACpB9W,EAAQ8W,EAAK,MACb6lC,EAAW7lC,EAAK,SAChB8lC,EAAY9lC,EAAK,UAGf+lC,EAAYrnC,GAAS,UAAY,CACjC,OAAIgnC,GAASx8C,CAAK,EACTA,EACEw8C,GAASz2C,CAAY,EACvB,OAAOA,GAAiB,WAAaA,EAAY,EAAKA,EAEtD,OAAO22C,GAAsB,WAAaA,EAAiB,EAAKA,CAE3E,CAAC,EACDI,EAAavqB,GAAesqB,EAAW,CAAC,EACxCE,EAAaD,EAAW,CAAC,EACzBE,EAAgBF,EAAW,CAAC,EAC1BG,EAAcj9C,IAAU,OAAYA,EAAQ+8C,EAC5CG,EAAkBN,EAAYA,EAAUK,CAAW,EAAIA,EAGvDE,EAAatB,GAASc,CAAQ,EAC9BS,EAAa5nC,GAAS,CAACynC,CAAW,CAAC,EACrCI,EAAa9qB,GAAe6qB,EAAY,CAAC,EACzC9mB,EAAY+mB,EAAW,CAAC,EACxBC,EAAeD,EAAW,CAAC,EAC7BriB,GAAsB,UAAY,CAChC,IAAI7oB,EAAOmkB,EAAU,CAAC,EAClBymB,IAAe5qC,GACjBgrC,EAAWJ,EAAY5qC,CAAI,CAE/B,EAAG,CAACmkB,CAAS,CAAC,EAGd0E,GAAsB,UAAY,CAC3BwhB,GAASx8C,CAAK,GACjBg9C,EAAch9C,CAAK,CAEvB,EAAG,CAACA,CAAK,CAAC,EAGV,IAAIu9C,EAAgB1B,GAAS,SAAU9e,EAASwf,EAAe,CAC7DS,EAAcjgB,EAASwf,CAAa,EACpCe,EAAa,CAACL,CAAW,EAAGV,CAAa,CAC3C,CAAC,EACD,MAAO,CAACW,EAAiBK,CAAa,CACxC,CC3DA,SAASC,GAAkB7Q,EAAWjU,EAAO+kB,EAAch7C,EAAS,CAClE,IAAIi7C,EAAcntB,EAAc,CAAA,EAAImI,EAAMiU,CAAS,CAAC,EACpD,GAAIlqC,GAAY,MAA8BA,EAAQ,iBAAkB,CACtE,IAAIk7C,EAAmBl7C,EAAQ,iBAC/Bk7C,EAAiB,QAAQ,SAAU7mC,EAAM,CACvC,IAAIE,EAAQub,GAAezb,EAAM,CAAC,EAChC8mC,EAAc5mC,EAAM,CAAC,EACrB6mC,EAAc7mC,EAAM,CAAC,EAMvB,GALI,QAAQ,IAAI,WAAa,cAC3B6K,GAAQ,EAAE67B,GAAgB,MAAkCA,EAAYE,CAAW,GAAI,oBAAoB,OAAO,OAAOA,CAAW,EAAG,OAAO,EAAE,OAAO,OAAOjR,CAAS,EAAG,8BAA8B,EAAE,OAAO,OAAOkR,CAAW,EAAG,YAAY,CAAC,EAIjPH,GAAgB,MAAkCA,EAAYE,CAAW,GAAKF,GAAgB,MAAkCA,EAAYG,CAAW,EAAG,CAC5J,IAAIC,GACHA,EAAwBJ,EAAYG,CAAW,KAAO,MAAQC,IAA0B,SAAiCJ,EAAYG,CAAW,EAAIH,GAAgB,KAAiC,OAASA,EAAYE,CAAW,EACxO,CACF,CAAC,CACH,CACA,IAAI1e,EAAc3O,EAAcA,EAAc,CAAA,EAAIktB,CAAY,EAAGC,CAAW,EAG5E,cAAO,KAAKxe,CAAW,EAAE,QAAQ,SAAUrgC,EAAK,CAC1CqgC,EAAYrgC,CAAG,IAAM65B,EAAM75B,CAAG,GAChC,OAAOqgC,EAAYrgC,CAAG,CAE1B,CAAC,EACMqgC,CACT,CC7BA,IAAI6e,GAAkB,QAAQ,IAAI,WAAa,cAAgB,OAAO,kBAAsB,IACxFC,GAAY,GAMT,SAAShS,IAAQ,CACtB,QAASzkB,EAAO,UAAU,OAAQ02B,EAAO,IAAI,MAAM12B,CAAI,EAAGE,EAAO,EAAGA,EAAOF,EAAME,IAC/Ew2B,EAAKx2B,CAAI,EAAI,UAAUA,CAAI,EAG7B,GAAI,CAACs2B,GACH,OAAO,OAAO,OAAO,MAAM,OAAQ,CAAC,EAAE,EAAE,OAAOE,CAAI,CAAC,EAEtDD,GAAY,GACZ,IAAIluC,EAAM,CAAA,EACV,OAAAmuC,EAAK,QAAQ,SAAUpgD,EAAK,CAC1B,GAAIqjB,GAAQrjB,CAAG,IAAM,SAGrB,KAAImH,EAAO,OAAO,KAAKnH,CAAG,EAC1BmH,EAAK,QAAQ,SAAUnG,EAAK,CAC1B,OAAO,eAAeiR,EAAKjR,EAAK,CAC9B,aAAc,GACd,WAAY,GACZ,IAAK,UAAe,CAClB,OAAOhB,EAAIgB,CAAG,CAChB,CACR,CAAO,CACH,CAAC,EACH,CAAC,EACDm/C,GAAY,GACLluC,CACT,CAGO,IAAIouC,GAAY,CAAA,EAMvB,SAASluC,IAAO,CAAC,CAGjB,IAAImuC,GAAiB,SAAwBzlB,EAAO,CAClD,IAAImF,EACAtd,EAAQmY,EACR0lB,EAAQpuC,GACZ,OAAI+tC,IAAmB,OAAO,MAAU,MACtClgB,EAAY,IAAI,IAChBtd,EAAQ,IAAI,MAAMmY,EAAO,CACvB,IAAK,SAAa76B,EAAKwC,EAAM,CAC3B,GAAI29C,GAAW,CACb,IAAIK,GACHA,EAAaxgB,KAAe,MAAQwgB,IAAe,QAAUA,EAAW,IAAIh+C,CAAI,CACnF,CACA,OAAOxC,EAAIwC,CAAI,CACjB,CACN,CAAK,EACD+9C,EAAQ,SAAezP,EAAe2P,EAAgB,CACpD,IAAIC,EACJL,GAAUvP,CAAa,EAAI,CACzB,OAAQ,MAAM,KAAK9Q,CAAS,EAC5B,UAAWtN,EAAcA,EAAc,CAAA,GAAKguB,EAAwBL,GAAUvP,CAAa,KAAO,MAAQ4P,IAA0B,OAAS,OAASA,EAAsB,SAAS,EAAGD,CAAc,CAC9M,CACI,GAEK,CACL,MAAO/9B,EACP,KAAMsd,EACN,MAAOugB,CACX,CACA,EC3EA,SAASI,GAAyB7R,EAAWjU,EAAO+lB,EAAiB,CACnE,GAAI,OAAOA,GAAoB,WAAY,CACzC,IAAIC,EACJ,OAAOD,EAAgBE,GAAWjmB,GAAQgmB,EAAmBhmB,EAAMiU,CAAS,KAAO,MAAQ+R,IAAqB,OAASA,EAAmB,CAAA,CAAE,CAAC,CACjJ,CACA,OAAOD,GAA2E,CAAA,CACpF,CCNA,SAASG,GAAUx8C,EAAM,CACvB,OAAIA,IAAS,KACJ,CACL,IAAK,KAAK,IACV,IAAK,KAAK,GAChB,EAES,CACL,IAAK,UAAe,CAClB,QAASmlB,EAAO,UAAU,OAAQplB,EAAO,IAAI,MAAMolB,CAAI,EAAGE,EAAO,EAAGA,EAAOF,EAAME,IAC/EtlB,EAAKslB,CAAI,EAAI,UAAUA,CAAI,EAE7B,MAAO,OAAO,OAAOtlB,EAAK,IAAI,SAAUnC,EAAO,CAC7C,OAAOw5B,GAAKx5B,CAAK,CACnB,CAAC,EAAE,KAAK,GAAG,EAAG,GAAG,CACnB,EACA,IAAK,UAAe,CAClB,QAAS4nB,EAAQ,UAAU,OAAQzlB,EAAO,IAAI,MAAMylB,CAAK,EAAGC,EAAQ,EAAGA,EAAQD,EAAOC,IACpF1lB,EAAK0lB,CAAK,EAAI,UAAUA,CAAK,EAE/B,MAAO,OAAO,OAAO1lB,EAAK,IAAI,SAAUnC,EAAO,CAC7C,OAAOw5B,GAAKx5B,CAAK,CACnB,CAAC,EAAE,KAAK,GAAG,EAAG,GAAG,CACnB,CACJ,CACA,CCrBA,IAAI6+C,GAAa,IAAO,GAAK,GAMzBC,GAA2B,UAAY,CACzC,SAASA,GAAc,CACrBhxB,GAAgB,KAAMgxB,CAAW,EACjCt8B,EAAgB,KAAM,MAAO,IAAI,GAAK,EAEtCA,EAAgB,KAAM,cAAe,IAAI,OAAS,EAClDA,EAAgB,KAAM,SAAU,CAAC,EACjCA,EAAgB,KAAM,iBAAkB,IAAI,GAAK,EAEjDA,EAAgB,KAAM,aAAc,CAAC,CACvC,CACAwL,OAAAA,GAAa8wB,EAAa,CAAC,CACzB,IAAK,MACL,MAAO,SAAa95C,EAAMhF,EAAO,CAE/B,KAAK,MAAK,EAGV,IAAI++C,EAAe,KAAK,gBAAgB/5C,CAAI,EAC5C,KAAK,IAAI,IAAI+5C,EAAc/+C,CAAK,EAChC,KAAK,eAAe,IAAI++C,EAAc,KAAK,IAAG,CAAE,CAClD,CACJ,EAAK,CACD,IAAK,MACL,MAAO,SAAa/5C,EAAM,CACxB,IAAI+5C,EAAe,KAAK,gBAAgB/5C,CAAI,EACxCmI,EAAQ,KAAK,IAAI,IAAI4xC,CAAY,EACrC,YAAK,eAAe,IAAIA,EAAc,KAAK,IAAG,CAAE,EAChD,KAAK,YAAc,EACZ5xC,CACT,CACJ,EAAK,CACD,IAAK,kBACL,MAAO,SAAyBnI,EAAM,CACpC,IAAIooB,EAAQ,KACR4xB,EAAMh6C,EAAK,IAAI,SAAUnG,EAAK,CAChC,OAAIA,GAAOqiB,GAAQriB,CAAG,IAAM,SACnB,OAAO,OAAOuuB,EAAM,YAAYvuB,CAAG,CAAC,EAEtC,GAAG,OAAOqiB,GAAQriB,CAAG,EAAG,GAAG,EAAE,OAAOA,CAAG,CAChD,CAAC,EACD,OAAOmgD,EAAI,KAAK,GAAG,CACrB,CACJ,EAAK,CACD,IAAK,cACL,MAAO,SAAqBnhD,EAAK,CAC/B,GAAI,KAAK,YAAY,IAAIA,CAAG,EAC1B,OAAO,KAAK,YAAY,IAAIA,CAAG,EAEjC,IAAIoiB,EAAK,KAAK,OACd,YAAK,YAAY,IAAIpiB,EAAKoiB,CAAE,EAC5B,KAAK,QAAU,EACRA,CACT,CACJ,EAAK,CACD,IAAK,QACL,MAAO,UAAiB,CACtB,IAAIq7B,EAAS,KACb,GAAI,KAAK,WAAa,IAAO,CAC3B,IAAI2D,EAAM,KAAK,IAAG,EAClB,KAAK,eAAe,QAAQ,SAAUC,EAAMrgD,EAAK,CAC3CogD,EAAMC,EAAOL,KACfvD,EAAO,IAAI,OAAOz8C,CAAG,EACrBy8C,EAAO,eAAe,OAAOz8C,CAAG,EAEpC,CAAC,EACD,KAAK,WAAa,CACpB,CACF,CACJ,CAAG,CAAC,EACKigD,CACT,EAAC,EACGK,GAAY,IAAIL,GAKpB,SAASM,GAAcrD,EAAQ9iB,EAAM,CACnC,OAAO7d,EAAM,QAAQ,UAAY,CAC/B,IAAIikC,EAAcF,GAAU,IAAIlmB,CAAI,EACpC,GAAIomB,EACF,OAAOA,EAET,IAAIhgD,EAAW08C,EAAM,EACrB,OAAAoD,GAAU,IAAIlmB,EAAM55B,CAAQ,EACrBA,CACT,EAAG45B,CAAI,CACT,CC/FA,IAAIqmB,GAAgB,UAAyB,CAC3C,MAAO,CAAA,CACT,ECSA,SAASC,GAAc5jC,EAAQ,CAE7B,IAAI6jC,EAAiB7jC,EAAO,OAC1B8jC,EAASD,IAAmB,OAASF,GAAgBE,EACrDE,EAAW/jC,EAAO,SAClBgkC,EAAYhkC,EAAO,UACnBikC,EAAiBjkC,EAAO,eACxBkkC,EAAiBlkC,EAAO,eACxBmkC,EAAkBnkC,EAAO,gBAC3B,SAASokC,EAAcpT,EAAW/D,EAAS6V,EAAiBh8C,EAAS,CACnE,IAAIksC,EAAgB,MAAM,QAAQhC,CAAS,EAAIA,EAAU,CAAC,EAAIA,EAC9D,SAASqT,EAAYnhD,EAAK,CACxB,MAAO,GAAG,OAAO,OAAO8vC,CAAa,CAAC,EAAE,OAAO9vC,EAAI,MAAM,EAAG,CAAC,EAAE,aAAa,EAAE,OAAOA,EAAI,MAAM,CAAC,CAAC,CACnG,CAGA,IAAIohD,GAAkBx9C,GAAY,KAA6B,OAASA,EAAQ,WAAa,CAAA,EACzFy9C,EAAqB,OAAOJ,GAAoB,WAAaA,EAAgBnT,CAAS,EAAI,CAAA,EAC1FwT,EAAe5vB,EAAcA,EAAc,CAAA,EAAI2vB,CAAkB,EAAG,GAAI19B,EAAgB,CAAA,EAAIw9B,EAAY,aAAa,EAAG,EAAI,CAAC,EACjI,OAAO,KAAKC,CAAc,EAAE,QAAQ,SAAUphD,EAAK,CACjDshD,EAAaH,EAAYnhD,CAAG,CAAC,EAAIohD,EAAephD,CAAG,CACrD,CAAC,EAGD,IAAImT,EAAgBue,EAAcA,EAAc,CAAA,EAAI9tB,CAAO,EAAG,GAAI,CAChE,SAAU09C,EACV,YAAaH,CACnB,CAAK,EAGGI,EAAWC,EAAsB1T,EAAW/D,EAAS6V,EAAiBzsC,CAAa,EACnFsuC,EAAYC,EAAkB5R,EAAe8P,EAAiBzsC,CAAa,EAC/E,OAAO,SAAUwuC,EAAW,CAC1B,IAAIC,EAAU,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAID,EAC9EE,EAAYN,EAASI,EAAWC,CAAO,EACzCE,EAAapuB,GAAemuB,EAAW,CAAC,EACxCtmB,EAASumB,EAAW,CAAC,EACnBC,EAAaN,EAAUG,CAAO,EAChCI,EAActuB,GAAequB,EAAY,CAAC,EAC1CE,EAAaD,EAAY,CAAC,EAC1BE,EAAYF,EAAY,CAAC,EAC3B,MAAO,CAACC,EAAY1mB,EAAQ2mB,CAAS,CACvC,CACF,CACA,SAASR,EAAkB5T,EAAW8R,EAAiBh8C,EAAS,CAC9D,IAAI09C,EAAe19C,EAAQ,SACzBu+C,EAAuBv+C,EAAQ,YAC/Bw+C,EAAcD,IAAyB,OAAS,GAAOA,EACvDhB,EAAcv9C,EAAQ,YACtBwR,EAASxR,EAAQ,OACfy+C,EAAiB,SAAwBpqC,EAAM,CACjD,IAAI2pC,EAAU3pC,EAAK,QACjBqqC,EAAcrqC,EAAK,OACnB8jB,EAASumB,IAAgB,OAAS,CAAA,EAAKA,EACrCC,EAAY1B,EAAQ,EACtB5f,EAAYshB,EAAU,UACxB,OAAAtW,GAAkB,CAChB,KAAM,CAAC6B,CAAS,EAChB,OAAQ/R,EAAO,OACf,IAAKA,EAAO,IACZ,SAAUulB,EACV,OAAQlsC,EACR,MAAO6rB,EACP,MAAO2gB,CACf,EAAS,UAAY,CACb,IAAIhD,EAAee,GAAyB7R,EAAW7M,EAAW2e,CAAe,EAC7EH,EAAiBd,GAAkB7Q,EAAW7M,EAAW2d,EAAc,CACzE,iBAAkBh7C,GAAY,KAA6B,OAASA,EAAQ,gBACtF,CAAS,EACD,cAAO,KAAKg7C,CAAY,EAAE,QAAQ,SAAU5+C,EAAK,CAC/Cy/C,EAAe0B,EAAYnhD,CAAG,CAAC,EAAIy/C,EAAez/C,CAAG,EACrD,OAAOy/C,EAAez/C,CAAG,CAC3B,CAAC,EACMy/C,CACT,CAAC,EACM,IACT,EACIgC,EAAY,SAAmBG,EAAS,CAC1C,IAAIY,EAAa3B,EAAQ,EACvB9kB,EAASymB,EAAW,OACtB,MAAO,CAAC,SAAUx+B,EAAM,CACtB,OAAOo+B,GAAermB,EAAsBxf,EAAM,cAAcA,EAAM,SAAU,KAAmBA,EAAM,cAAc8lC,EAAgB,CACrI,QAAST,EACT,OAAQ7lB,EACR,UAAW+R,CACrB,CAAS,EAAG9pB,CAAI,EAAIA,CACd,EAAG+X,GAAW,KAA4B,OAASA,EAAO,GAAG,CAC/D,EACA,OAAO0lB,CACT,CACA,SAASD,EAAsB1R,EAAe/F,EAAS6V,EAAiB,CACtE,IAAIh8C,EAAU,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAA,EAC9E4vC,EAAQ,MAAM,QAAQ1D,CAAa,EAAIA,EAAgB,CAACA,EAAeA,CAAa,EACpF2S,EAAS/uB,GAAe8f,EAAO,CAAC,EAClC1F,EAAY2U,EAAO,CAAC,EAClBC,EAAkBlP,EAAM,KAAK,GAAG,EAChCmP,EAAc7lC,EAAO,OAAS,CAChC,KAAM,MACZ,EAGI,OAAO,SAAU6kC,EAAW,CAC1B,IAAIC,EAAU,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAID,EAC9EiB,EAAa/B,EAAQ,EACvBnhB,EAAQkjB,EAAW,MACnB3hB,EAAY2hB,EAAW,UACvBrnB,EAASqnB,EAAW,OACpB/oB,EAAQ+oB,EAAW,MACnB7mB,EAAS6mB,EAAW,OAClBC,EAAa/B,EAAS,EACxBgC,EAAgBD,EAAW,cAC3BE,EAAgBF,EAAW,cACzB5tB,EAAM2rB,EAAM,EACZr9C,EAAOw4B,EAAS,MAAQ,KAGxBkW,EAAOsO,GAAc,UAAY,CACnC,IAAIjE,EAAiB,IAAI,IACzB,OAAIvgB,GACF,OAAO,KAAKn4B,EAAQ,UAAY,CAAA,CAAE,EAAE,QAAQ,SAAU5D,EAAK,CAGzDs8C,EAAe,IAAIlhB,GAAap7B,EAAK+7B,EAAO,MAAM,CAAC,EACnDugB,EAAe,IAAIlhB,GAAap7B,EAAK+8C,GAAiBjP,EAAW/R,EAAO,MAAM,CAAC,CAAC,CAClF,CAAC,EAEI8gB,GAAQt5C,EAAM+4C,CAAc,CACrC,EAAG,CAAC/4C,EAAMuqC,EAAW/R,GAAW,KAA4B,OAASA,EAAO,MAAM,CAAC,EAC/EinB,EAAajD,GAAUx8C,CAAI,EAC7B2tC,EAAM8R,EAAW,IACjBC,EAAMD,EAAW,IAGfE,EAAe,CACjB,MAAOxjB,EACP,MAAO7F,EACP,OAAQ0B,EACR,MAAO,UAAiB,CACtB,OAAOtG,EAAI,KACb,EACA,WAAYrxB,EAAQ,WACpB,MAAO++C,EAEP,MAAO/+C,EAAQ,OAAS,IAChC,EAGU,OAAOm9C,GAAmB,YAE5BjX,GAAiBpY,EAAcA,EAAc,CAAA,EAAIwxB,CAAY,EAAG,CAAA,EAAI,CAClE,WAAY,GACZ,KAAM,CAAC,SAAUJ,CAAa,CACxC,CAAS,EAAG,UAAY,CACd,OAAO/B,EAAelnB,EAAO,CAC3B,OAAQ,CACN,cAAeipB,EACf,cAAeC,CAC7B,EACY,IAAK9tB,CACjB,CAAW,CACH,CAAC,EAEH,IAAIkuB,EAAUrZ,GAAiBpY,EAAcA,EAAc,GAAIwxB,CAAY,EAAG,GAAI,CAChF,KAAM,CAACR,EAAiBf,EAAWoB,CAAa,CACxD,CAAO,EAAG,UAAY,CACd,GAAIn/C,EAAQ,cAAgB,GAC1B,MAAO,CAAA,EAET,IAAIw/C,EAAkB9D,GAAezlB,CAAK,EACxCwpB,EAAaD,EAAgB,MAC7B7D,GAAQ6D,EAAgB,MACtBE,GAAwB3D,GAAyB7R,EAAW7M,EAAW2e,CAAe,EACtF2D,GAAe,IAAI,OAAO5B,CAAS,EACnClC,GAAiBd,GAAkB7Q,EAAW7M,EAAWqiB,GAAuB,CAClF,iBAAkB1/C,EAAQ,gBACpC,CAAS,EACGm4B,GAAUunB,IAAyBjhC,GAAQihC,EAAqB,IAAM,UACxE,OAAO,KAAKA,EAAqB,EAAE,QAAQ,SAAUtjD,GAAK,CACxDsjD,GAAsBtjD,EAAG,EAAI,OAAO,OAAOo7B,GAAap7B,GAAK+8C,GAAiBjP,EAAW/R,EAAO,MAAM,CAAC,EAAG,GAAG,CAC/G,CAAC,EAEH,IAAIsE,GAAcyf,GAAWuD,EAAY,CACvC,aAAcE,GACd,UAAW5B,EACX,QAAS,IAAI,OAAOoB,CAAa,EACjC,OAAQ,IAAI,OAAOD,CAAa,EAChC,KAAM7Q,EAEN,IAAKf,EAEL,IAAK+R,CACf,EAAWlnB,EAASunB,GAAwB7D,EAAc,EAC9C+D,EAAqBzZ,EAAQ1J,GAAa,CAC5C,OAAQ9E,EACR,UAAWomB,EACX,cAAemB,EACf,cAAeC,CACzB,CAAS,EACDxD,GAAMzR,EAAW2R,EAAc,EAC/B,IAAIgE,EAAc,OAAOzC,GAAmB,WAAaA,EAAe3gB,GAAashB,EAAWC,EAASh+C,EAAQ,SAAS,EAAI,KAC9H,MAAO,CAACA,EAAQ,aAAe,GAAQ,KAAO6/C,EAAaD,CAAkB,CAC/E,CAAC,EACD,MAAO,CAACL,EAAS5nB,CAAM,CACzB,CACF,CACA,SAASmoB,EAAqB5T,EAAe/F,EAAS6V,EAAiB,CACrE,IAAIh8C,EAAU,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAA,EAC9E29C,EAAWC,EAAsB1R,EAAe/F,EAAS6V,EAAiBluB,EAAc,CAC1F,WAAY,GAEZ,MAAO,IACb,EAAO9tB,CAAO,CAAC,EACP+/C,EAAkB,SAAyBxrC,EAAO,CACpD,IAAIwpC,EAAYxpC,EAAM,UACpByrC,EAAgBzrC,EAAM,QACtBypC,EAAUgC,IAAkB,OAASjC,EAAYiC,EACnD,OAAArC,EAASI,EAAWC,CAAO,EACpB,IACT,EACA,OAAI,QAAQ,IAAI,WAAa,eAC3B+B,EAAgB,YAAc,YAAY,OAAO,OAAO,MAAM,QAAQ7T,CAAa,EAAIA,EAAc,KAAK,GAAG,EAAIA,CAAa,CAAC,GAE1H6T,CACT,CACA,MAAO,CACL,cAAezC,EACf,qBAAsBwC,EACtB,sBAAuBlC,CAC3B,CACA,CCnPO,MAAMqC,GAAe,CAAC,OAAQ,SAAU,OAAQ,QAAS,UAAW,OAAQ,MAAO,SAAU,SAAU,UAAW,WAAY,OAAQ,MAAM,ECAnJC,GAAe,SCCf,SAASC,GAAc/R,EAAO,CAC5B,OAAOA,GAAS,GAAKA,GAAS,GAChC,CACA,SAAS+G,GAAciL,EAAYC,EAAiB,CAClD,KAAM,CACJ,EAAGC,EACH,EAAGC,EACH,EAAGC,EACH,EAAGC,CACP,EAAM,IAAIjT,GAAU4S,CAAU,EAAE,MAAK,EACnC,GAAIK,EAAc,EAChB,OAAOL,EAET,KAAM,CACJ,EAAGM,EACH,EAAGC,EACH,EAAGC,CACP,EAAM,IAAIpT,GAAU6S,CAAe,EAAE,MAAK,EACxC,QAASQ,EAAK,IAAMA,GAAM,EAAGA,GAAM,IAAM,CACvC,MAAMhiD,EAAI,KAAK,OAAOyhD,EAAKI,GAAM,EAAIG,IAAOA,CAAE,EACxClgC,EAAI,KAAK,OAAO4/B,EAAKI,GAAM,EAAIE,IAAOA,CAAE,EACxCngC,EAAI,KAAK,OAAO8/B,EAAKI,GAAM,EAAIC,IAAOA,CAAE,EAC9C,GAAIV,GAActhD,CAAC,GAAKshD,GAAcx/B,CAAC,GAAKw/B,GAAcz/B,CAAC,EACzD,OAAO,IAAI8sB,GAAU,CACnB,EAAA3uC,EACA,EAAA8hB,EACA,EAAAD,EACA,EAAG,KAAK,MAAMmgC,EAAK,GAAG,EAAI,GAClC,CAAO,EAAE,YAAW,CAElB,CAGA,OAAO,IAAIrT,GAAU,CACnB,EAAG8S,EACH,EAAGC,EACH,EAAGC,EACH,EAAG,CACP,CAAG,EAAE,YAAW,CAChB,CCxCA,IAAIM,GAAgC,SAAU/kD,EAAGe,EAAG,CAClD,IAAId,EAAI,CAAA,EACR,QAASe,KAAKhB,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGgB,CAAC,GAAKD,EAAE,QAAQC,CAAC,EAAI,IAAGf,EAAEe,CAAC,EAAIhB,EAAEgB,CAAC,GAC/F,GAAIhB,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WAAY,QAAS,EAAI,EAAGgB,EAAI,OAAO,sBAAsBhB,CAAC,EAAG,EAAIgB,EAAE,OAAQ,IAClID,EAAE,QAAQC,EAAE,CAAC,CAAC,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKhB,EAAGgB,EAAE,CAAC,CAAC,IAAGf,EAAEe,EAAE,CAAC,CAAC,EAAIhB,EAAEgB,EAAE,CAAC,CAAC,GAElG,OAAOf,CACT,EASe,SAASugC,GAAYR,EAAiB,CACnD,KAAM,CACF,SAAAO,CACN,EAAQP,EACJglB,EAAYD,GAAO/kB,EAAiB,CAAC,UAAU,CAAC,EAC5CilB,EAAiB,OAAO,OAAO,CAAA,EAAI1kB,CAAQ,EACjD,OAAO,KAAKwQ,EAAS,EAAE,QAAQ7W,GAAS,CACtC,OAAO+qB,EAAe/qB,CAAK,CAC7B,CAAC,EACD,MAAMwG,EAAc,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIskB,CAAS,EAAGC,CAAc,EACxEC,EAAW,IACXC,EAAW,IACXC,EAAW,IACXC,EAAW,IACXC,EAAW,KACXC,EAAY,KAElB,GAAI7kB,EAAY,SAAW,GAAO,CAChC,MAAM8kB,EAAe,KACrB9kB,EAAY,mBAAqB8kB,EACjC9kB,EAAY,kBAAoB8kB,EAChC9kB,EAAY,mBAAqB8kB,CACnC,CAwIA,OAtImB,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,GAAI9kB,CAAW,EAAG,CAE7E,iBAAkBA,EAAY,mBAC9B,sBAAuBA,EAAY,UACnC,eAAgBA,EAAY,oBAC5B,yBAA0BA,EAAY,kBAEtC,cAAeA,EAAY,iBAC3B,WAAY0Y,GAAc1Y,EAAY,qBAAsBA,EAAY,gBAAgB,EAExF,qBAAsBA,EAAY,oBAClC,kBAAmBA,EAAY,oBAC/B,iBAAkBA,EAAY,UAC9B,eAAgBA,EAAY,mBAC5B,qBAAsBA,EAAY,kBAClC,oBAAqBA,EAAY,WACjC,eAAgBA,EAAY,WAC5B,iBAAkBA,EAAY,mBAC9B,kBAAmBA,EAAY,UAC/B,UAAWA,EAAY,kBACvB,eAAgBA,EAAY,UAC5B,kBAAmB0Y,GAAc1Y,EAAY,aAAcA,EAAY,gBAAgB,EACvF,oBAAqB0Y,GAAc1Y,EAAY,eAAgBA,EAAY,gBAAgB,EAE3F,aAAcA,EAAY,WAE1B,eAAgBA,EAAY,UAAY,EAExC,UAAWA,EAAY,UACvB,oBAAqBA,EAAY,UAAY,EAE7C,uBAAwBA,EAAY,cAAgB,EACpD,mBAAoBA,EAAY,kBAChC,oBAAqBA,EAAY,eACjC,yBAA0BA,EAAY,oBACtC,4BAA6BA,EAAY,UACzC,kBAAmBA,EAAY,oBAC/B,eAAgB0Y,GAAc1Y,EAAY,eAAgBA,EAAY,gBAAgB,EACtF,SAAUA,EAAY,SACtB,aAAcA,EAAY,aAC1B,eAAgBA,EAAY,eAC5B,eAAgBA,EAAY,eAC5B,eAAgBA,EAAY,eAC5B,iBAAkB,IAClB,eAAgB,IAChB,eAAgB,OAChB,oBAAqB,OACrB,oBAAqB,OACrB,yBAA0B,GAC1B,2BAA4B,EAC5B,WAAYA,EAAY,QACxB,UAAWA,EAAY,OACvB,UAAWA,EAAY,OACvB,QAASA,EAAY,KACrB,UAAWA,EAAY,OACvB,UAAWA,EAAY,OACvB,UAAWA,EAAY,OACvB,2BAA4BA,EAAY,OACxC,yBAA0BA,EAAY,OACtC,yBAA0BA,EAAY,OACtC,uBAAwBA,EAAY,OACpC,2BAA4BA,EAAY,KACxC,yBAA0BA,EAAY,OACtC,UAAWA,EAAY,QACvB,SAAUA,EAAY,OACtB,SAAUA,EAAY,OACtB,OAAQA,EAAY,KACpB,SAAUA,EAAY,OACtB,SAAUA,EAAY,OACtB,SAAUA,EAAY,OACtB,UAAWA,EAAY,QACvB,UAAW;AAAA;AAAA;AAAA;AAAA,MAKX,mBAAoB;AAAA;AAAA;AAAA;AAAA,MAKpB,kBAAmB;AAAA;AAAA;AAAA;AAAA,MAKnB,SAAAwkB,EACA,YAAaA,EACb,YAAaC,EAAW,EACxB,SAAAA,EACA,YAAaA,EACb,YAAaC,EAAW,EACxB,SAAAA,EACA,YAAaA,EACb,YAAaC,EAAW,EACxB,SAAAA,EACA,YAAaA,EACb,YAAaC,EAAW,EACxB,SAAAA,EACA,YAAaA,EACb,YAAaC,EAAY,EACzB,UAAAA,EACA,aAAcA,EACd,sBAAuB,kCACvB,cAAe;AAAA,uBACI,IAAI9T,GAAU,qBAAqB,EAAE,YAAW,CAAE;AAAA,oBACrD,IAAIA,GAAU,qBAAqB,EAAE,YAAW,CAAE;AAAA,uBAC/C,IAAIA,GAAU,qBAAqB,EAAE,YAAW,CAAE;AAAA,MAErE,qBAAsB;AAAA;AAAA;AAAA;AAAA,MAKtB,oBAAqB;AAAA;AAAA;AAAA;AAAA,MAKrB,kBAAmB;AAAA;AAAA;AAAA;AAAA,MAKnB,oBAAqB;AAAA;AAAA;AAAA;AAAA,MAKrB,0BAA2B,4CAC3B,2BAA4B,6CAC5B,yBAA0B,4CAC1B,4BAA6B,4CACjC,CAAG,EAAGwT,CAAc,CAEpB,CC/KA,IAAIF,GAAgC,SAAU/kD,EAAGe,EAAG,CAClD,IAAId,EAAI,CAAA,EACR,QAASe,KAAKhB,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGgB,CAAC,GAAKD,EAAE,QAAQC,CAAC,EAAI,IAAGf,EAAEe,CAAC,EAAIhB,EAAEgB,CAAC,GAC/F,GAAIhB,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WAAY,QAAS,EAAI,EAAGgB,EAAI,OAAO,sBAAsBhB,CAAC,EAAG,EAAIgB,EAAE,OAAQ,IAClID,EAAE,QAAQC,EAAE,CAAC,CAAC,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKhB,EAAGgB,EAAE,CAAC,CAAC,IAAGf,EAAEe,EAAE,CAAC,CAAC,EAAIhB,EAAEgB,EAAE,CAAC,CAAC,GAElG,OAAOf,CACT,EAOO,MAAM6pC,GAAW,CACtB,WAAY,GACZ,aAAc,GACd,aAAc,GACd,mBAAoB,GACpB,mBAAoB,GACpB,mBAAoB,GACpB,mBAAoB,GACpB,mBAAoB,GACpB,eAAgB,GAChB,iBAAkB,GAClB,gBAAiB,GACjB,WAAY,GACZ,aAAc,EAChB,EACar0B,GAAS,CACpB,KAAM,GACN,OAAQ,GACR,OAAQ,GACR,OAAQ,GACR,OAAQ,GACR,QAAS,GACT,OAAQ,GACR,OAAQ,GACR,QAAS,GACT,SAAU,GACV,SAAU,GACV,WAAY,GACZ,WAAY,EACd,EACMgwC,GAAW,CACf,SAAU,GACV,YAAa,GACb,YAAa,GACb,SAAU,GACV,YAAa,GACb,YAAa,GACb,SAAU,GACV,YAAa,GACb,YAAa,GACb,SAAU,GACV,YAAa,GACb,YAAa,GACb,SAAU,GACV,YAAa,GACb,YAAa,GACb,UAAW,GACX,aAAc,EAChB,EACa7lB,GAAmB,CAACC,EAAaC,EAAeC,IAAU,CACrE,MAAMC,EAAkBD,EAAM,mBAAmBF,CAAW,EACtD,CACF,SAAAU,CACN,EAAQT,EACJ4lB,EAAaX,GAAOjlB,EAAe,CAAC,UAAU,CAAC,EAEjD,IAAIG,EAAwB,OAAO,OAAO,OAAO,OAAO,CAAA,EAAID,CAAe,EAAG,CAC5E,SAAAO,CACJ,CAAG,EAED,OAAAN,EAAwBO,GAAYP,CAAqB,EACrDylB,GACF,OAAO,QAAQA,CAAU,EAAE,QAAQ,CAAC,CAACrlD,EAAKmB,CAAK,IAAM,CACnD,KAAM,CACF,MAAOmkD,CACjB,EAAYnkD,EACJokD,EAAkBb,GAAOvjD,EAAO,CAAC,OAAO,CAAC,EAC3C,IAAIqkD,EAAuBD,EACvBD,IACFE,EAAuBjmB,GAAiB,OAAO,OAAO,OAAO,OAAO,GAAIK,CAAqB,EAAG2lB,CAAe,EAAG,CAChH,SAAUA,CACpB,EAAWD,CAAc,GAEnB1lB,EAAsB5/B,CAAG,EAAIwlD,CAC/B,CAAC,EAEI5lB,CACT,EAEe,SAASihB,IAAW,CACjC,KAAM,CACJ,MAAO4E,EACP,OAAAC,EACA,MAAAhmB,EACA,SAAAQ,EACA,OAAAnE,CACJ,EAAMxf,EAAM,WAAWs9B,EAAkB,EACjCpf,EAAO,GAAGlS,EAAO,IAAIm9B,GAAU,EAAE,GACjCC,EAAcjmB,GAAS+Z,GACvB,CAAC5f,EAAO0B,EAAQ0F,CAAS,EAAInB,GAAc6lB,EAAa,CAAC/L,GAAkB6L,CAAe,EAAG,CACjG,KAAAhrB,EACA,SAAAyF,EACA,iBAAAX,GAGA,YAAAY,GACA,OAAQpE,GAAU,CAChB,OAAQA,EAAO,OACf,IAAKA,EAAO,IACZ,SAAA0N,GACN,OAAMr0B,GACA,SAAAgwC,EACN,CACA,CAAG,EACD,MAAO,CAACO,EAAa1kB,EAAWykB,EAASnqB,EAAS,GAAI1B,EAAOkC,CAAM,CACrE,CCpHO,MAAM6pB,GAAe,CAC1B,SAAU,SACV,WAAY,SACZ,aAAc,UAChB,EACaC,GAAiB,CAAChsB,EAAOisB,EAAwB,MAAW,CACvE,UAAW,aACX,OAAQ,EACR,QAAS,EACT,MAAOjsB,EAAM,UACb,SAAUA,EAAM,SAEhB,WAAYA,EAAM,WAClB,UAAW,OAEX,WAAYisB,EAAwB,UAAYjsB,EAAM,UACxD,GACaksB,GAAY,KAAO,CAC9B,QAAS,cACT,WAAY,SACZ,MAAO,UACP,UAAW,SACX,WAAY,EACZ,UAAW,SACX,cAAe,OAEf,cAAe,WACf,cAAe,qBACf,yBAA0B,cAC1B,0BAA2B,YAC3B,MAAO,CACL,WAAY,CAChB,EACE,IAAK,CACH,QAAS,cACb,CACA,GACaC,GAAW,KAAO,CAE7B,YAAa,CACX,QAAS,QACT,QAAS,IACb,EACE,WAAY,CAEV,QAAS,QACT,MAAO,OACP,QAAS,IACb,CACA,GACaC,GAAepsB,IAAU,CACpC,EAAG,CACD,MAAOA,EAAM,UACb,eAAgBA,EAAM,eACtB,gBAAiB,cAEjB,QAAS,OACT,OAAQ,UACR,WAAY,SAASA,EAAM,kBAAkB,GAC7C,+BAAgC,UAEhC,UAAW,CACT,MAAOA,EAAM,cACnB,EACI,WAAY,CACV,MAAOA,EAAM,eACnB,EACI,oBAAqB,CACnB,eAAgBA,EAAM,oBACtB,QAAS,CACf,EAEI,UAAW,CACT,eAAgBA,EAAM,oBACtB,QAAS,CACf,EACI,cAAe,CACb,MAAOA,EAAM,kBACb,OAAQ,aACd,CACA,CACA,GACaqsB,GAAiB,CAACrsB,EAAOssB,EAAoBvE,EAASwE,IAAc,CAC/E,MAAMC,EAAiB,YAAYF,CAAkB,iBAAiBA,CAAkB,KAClFG,EAAqB1E,EAAU,IAAIA,CAAO,GAAKyE,EAC/CE,EAAa,CACjB,UAAW,aACX,sBAAuB,CACrB,UAAW,YACjB,CACA,EACE,IAAIC,EAAiB,CAAA,EACrB,OAAIJ,IAAc,KAChBI,EAAiB,CACf,WAAY3sB,EAAM,WAClB,SAAUA,EAAM,QACtB,GAES,CACL,CAACysB,CAAkB,EAAG,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIE,CAAc,EAAGD,CAAU,EAAG,CAChG,CAACF,CAAc,EAAGE,CACxB,CAAK,CACL,CACA,EACaE,GAAkB,CAAC5sB,EAAOsK,KAAY,CACjD,QAAS,GAAGxJ,GAAKd,EAAM,cAAc,CAAC,UAAUA,EAAM,kBAAkB,GACxE,cAAesK,GAAgD,EAC/D,WAAY,+BACd,GACauiB,GAAgB,CAAC7sB,EAAOsK,KAAY,CAC/C,kBAAmB,OAAO,OAAO,CAAA,EAAIsiB,GAAgB5sB,EAAOsK,CAAM,CAAC,CACrE,GACawiB,GAAe5D,IAAkB,CAC5C,CAAC,IAAIA,CAAa,EAAE,EAAG,OAAO,OAAO,OAAO,OAAO,GAAIgD,GAAS,CAAE,EAAG,CACnE,CAAC,IAAIhD,CAAa,KAAKA,CAAa,OAAO,EAAG,CAC5C,QAAS,OACf,CACA,CAAG,CACH,GACa6D,GAAgB/sB,GAAS,OAAO,OAAO,OAAO,OAAO,CAGhE,MAAOA,EAAM,UACb,eAAgBA,EAAM,eACtB,QAAS,OACT,OAAQ,UACR,WAAY,OAAOA,EAAM,kBAAkB,GAC3C,OAAQ,EACR,QAAS,EACT,WAAY,OACZ,WAAY,MACd,EAAG6sB,GAAc7sB,CAAK,CAAC,EAAG,CACxB,mBAAoB,CAClB,MAAOA,EAAM,cACjB,EACE,WAAY,CACV,MAAOA,EAAM,eACjB,CACA,CAAC,ECxIY,CACX,cAAAqnB,GACA,sBAAAM,GACA,qBAAAkC,EACF,EAAIhD,GAAc,CAChB,UAAW,IAAM,CACf,KAAM,CACJ,aAAAhG,EACA,cAAAqI,CACN,EAAQ/sC,EAAAA,WAAWokC,EAAa,EAE5B,MAAO,CACL,cAFoBM,EAAY,EAGhC,cAAAqI,CACN,CACE,EACA,SAAU,IAAM,CACd,KAAM,CAACrjB,EAAOuB,EAAW1F,EAAQ1B,EAAOkC,CAAM,EAAI8qB,GAAa,EAC/D,MAAO,CACL,MAAAnnB,EACA,UAAAuB,EACA,OAAA1F,EACA,MAAA1B,EACA,OAAAkC,CACN,CACE,EACA,OAAQ,IAAM,CACZ,KAAM,CACJ,IAAA9G,CACN,EAAQjf,EAAAA,WAAWokC,EAAa,EAC5B,OAAOnlB,GAAuC,CAAA,CAChD,EACA,eAAgB,CAAC4E,EAAO/c,IAAW,CACjC,IAAIrZ,EACJ,MAAMqjD,EAAYb,GAAapsB,CAAK,EACpC,MAAO,CAACitB,EAAW,CACjB,IAAKA,CACX,EAAOH,IAAcljD,EAAKqZ,GAAW,KAA4B,OAASA,EAAO,OAAO,iBAAmB,MAAQrZ,IAAO,OAASA,EAAKs2C,EAAoB,CAAC,CAC3J,EACA,eAAgBmM,GAChB,gBAAiB,IAAMzc,EACzB,CAAC,EC7Cc,SAASsd,GAAeltB,EAAOmtB,EAAQ,CACpD,OAAOnD,GAAa,OAAO,CAACvwC,EAAMimC,IAAa,CAC7C,MAAM0N,EAAaptB,EAAM,GAAG0f,CAAQ,GAAG,EACjC2N,EAAmBrtB,EAAM,GAAG0f,CAAQ,GAAG,EACvC4N,EAAYttB,EAAM,GAAG0f,CAAQ,GAAG,EAChC6N,EAAYvtB,EAAM,GAAG0f,CAAQ,GAAG,EACtC,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIjmC,CAAI,EAAG0zC,EAAOzN,EAAU,CAC7D,WAAA0N,EACA,iBAAAC,EACA,UAAAC,EACA,UAAAC,CACN,CAAK,CAAC,CACJ,EAAG,CAAA,CAAE,CACP,CCXA,MAAMC,GAAoB,CAACtE,EAAe9tB,IAAQ,CAChD,KAAM,CAACyK,EAAO7F,CAAK,EAAIgnB,GAAQ,EAE/B,OAAO/W,GAAiB,CAEtB,MAAAjQ,EACA,OAAQ,GACR,KAAM,CAAC,mBAAoBkpB,CAAa,EACxC,MAAO,IAAM9tB,GAAQ,KAAyB,OAASA,EAAI,MAC3D,MAAO,CACL,KAAM,MACZ,CACA,EAAK,IAAM,CAAC0xB,GAAa5D,CAAa,CAAC,CAAC,CACxC,ECfM1mB,GAAY,OAAO,OAAO,CAAA,EAAI9f,CAAK,EACnC,CACN,MAAE+qC,EACF,EAAIjrB,GAEEkrB,GAAc,OAAOD,GAAU,IADlB,IAAM,GACuCA,GCDjD,SAASE,GAAS9nB,EAAO+nB,EAAa3qC,EAAQ,CAC3D,IAAIrZ,EAAID,EACR,MAAMwf,EAAUirB,GAAc,gBAAgB,EACxCyZ,EAAchoB,GAAS,CAAA,EACvBioB,EAAoBD,EAAY,UAAY,IAAS,CAACD,EAAc,OAAO,OAAO,OAAO,OAAO,CAAA,EAAI9N,EAAa,EAAG,CACxH,QAASl2C,EAAKgkD,GAAgB,KAAiC,OAASA,EAAY,UAAY,MAAQhkD,IAAO,OAASA,EAAKk2C,GAAc,OAC3I,OAAQ8N,GAAgB,KAAiC,OAASA,EAAY,MAClF,CAAG,EAAIA,EACChsB,EAAW8rB,GAAW,EAC5B,GAAI,QAAQ,IAAI,WAAa,aAAc,CACzC,MAAMK,EAAgBF,EAAY,QAAUC,EAAkB,OACxDE,EAAW,CAAC,EAAE,OAAOH,EAAY,QAAW,WAAc,GAAAlkD,EAAKkkD,EAAY,UAAY,MAAQlkD,IAAO,SAAkBA,EAAG,MAAQi4B,GACzI,QAAQ,IAAI,WAAa,cAAezY,EAAQ,CAAC4kC,GAAiBC,EAAU,WAAY,wJAAwJ,CAClP,CACA,OAAO5/B,GAAQ,IAAM,CACnB,IAAIxkB,EAAID,EACR,GAAI,CAACk8B,EACH,OAAO+nB,EAGT,MAAMK,EAAmB,OAAO,OAAO,CAAA,EAAIH,EAAkB,UAAU,EACvE,OAAO,KAAKjoB,EAAM,YAAc,CAAA,CAAE,EAAE,QAAQoQ,GAAiB,CAC3DgY,EAAiBhY,CAAa,EAAI,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIgY,EAAiBhY,CAAa,CAAC,EAAGpQ,EAAM,WAAWoQ,CAAa,CAAC,CACrI,CAAC,EACD,MAAM3O,EAAY,WAAW1F,EAAS,QAAQ,KAAM,EAAE,CAAC,GACjDssB,IAAiBtkD,EAAKikD,EAAY,UAAY,MAAQjkD,IAAO,OAASA,EAAKkkD,EAAkB,SAAW,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CACtJ,OAAQ7qC,GAAW,KAA4B,OAASA,EAAO,SACrE,EAAO,OAAO6qC,EAAkB,QAAW,SAAWA,EAAkB,OAAS,CAAA,CAAE,EAAG,OAAOD,EAAY,QAAW,SAAWA,EAAY,OAAS,CAAA,CAAE,EAAG,CACnJ,IAAK,OAAOA,EAAY,QAAW,YAAclkD,EAAKkkD,EAAY,UAAY,MAAQlkD,IAAO,OAAS,OAASA,EAAG,MAAQ29B,CAChI,CAAK,EAED,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,GAAIwmB,CAAiB,EAAGD,CAAW,EAAG,CACrF,MAAO,OAAO,OAAO,OAAO,OAAO,GAAIC,EAAkB,KAAK,EAAGD,EAAY,KAAK,EAClF,WAAYI,EACZ,OAAQC,CACd,CAAK,CACH,EAAG,CAACL,EAAaC,CAAiB,EAAG,CAACr0C,EAAMtQ,IAASsQ,EAAK,KAAK,CAAC00C,EAAWrjD,IAAU,CACnF,MAAMsjD,EAAYjlD,EAAK2B,CAAK,EAC5B,MAAO,CAAC+xB,GAAQsxB,EAAWC,EAAW,EAAI,CAC5C,CAAC,CAAC,CACJ,CC5CA,IAAIC,GAAY,CAAC,UAAU,EAEhBrmC,GAAuBtF,EAAM,cAAc,EAAE,EACzC,SAAS4rC,GAAelwC,EAAM,CAC3C,IAAI0K,EAAW1K,EAAK,SAClBrC,EAAQ4gB,GAAyBve,EAAMiwC,EAAS,EAClD,OAAoB3rC,EAAM,cAAcsF,GAAQ,SAAU,CACxD,MAAOjM,CACX,EAAK+M,CAAQ,CACb,CCLA,IAAIqN,GAA0B,SAAUC,EAAkB,CACxDZ,GAAUW,EAAYC,CAAgB,EACtC,IAAIC,EAASN,GAAaI,CAAU,EACpC,SAASA,GAAa,CACpBf,OAAAA,GAAgB,KAAMe,CAAU,EACzBE,EAAO,MAAM,KAAM,SAAS,CACrC,CACAf,OAAAA,GAAaa,EAAY,CAAC,CACxB,IAAK,SACL,MAAO,UAAkB,CACvB,OAAO,KAAK,MAAM,QACpB,CACJ,CAAG,CAAC,EACKA,CACT,EAAEzT,EAAM,SAAS,ECXF,SAAS6rC,GAAalhD,EAAc,CACjD,IAAImhD,EAAoB9rC,EAAM,WAAW,SAAUoR,EAAG,CAClD,OAAOA,EAAI,CACb,EAAG,CAAC,EACJ26B,EAAqB50B,GAAe20B,EAAmB,CAAC,EACxDE,EAAcD,EAAmB,CAAC,EAChCE,EAAkBjsC,EAAM,OAAOrV,CAAY,EAC3CghB,EAAW80B,GAAS,UAAY,CAClC,OAAOwL,EAAgB,OACzB,CAAC,EACGhL,EAAWR,GAAS,SAAU9e,EAAS,CACzCsqB,EAAgB,QAAU,OAAOtqB,GAAY,WAAaA,EAAQsqB,EAAgB,OAAO,EAAItqB,EAC7FqqB,EAAW,CACb,CAAC,EACD,MAAO,CAACrgC,EAAUs1B,CAAQ,CAC5B,CCvBO,IAAIiL,GAAc,OACdC,GAAgB,SAChBC,GAAe,QACfC,GAAe,QACfC,GAAY,OACZC,GAAe,UACfC,GAAa,QACbC,GAAc,SACdC,GAAiB,MAKjBC,GAAgB,WCT3B,SAASC,GAAcC,EAAWC,EAAW,CAC3C,IAAIC,EAAW,CAAA,EACf,OAAAA,EAASF,EAAU,YAAW,CAAE,EAAIC,EAAU,YAAW,EACzDC,EAAS,SAAS,OAAOF,CAAS,CAAC,EAAI,SAAS,OAAOC,CAAS,EAChEC,EAAS,MAAM,OAAOF,CAAS,CAAC,EAAI,MAAM,OAAOC,CAAS,EAC1DC,EAAS,KAAK,OAAOF,CAAS,CAAC,EAAI,KAAK,OAAOC,CAAS,EACxDC,EAAS,IAAI,OAAOF,CAAS,CAAC,EAAI,IAAI,OAAOC,EAAU,aAAa,EAC7DC,CACT,CACO,SAASC,GAAkBC,EAAYnsB,EAAK,CACjD,IAAIisB,EAAW,CACb,aAAcH,GAAc,YAAa,cAAc,EACvD,cAAeA,GAAc,aAAc,eAAe,CAC9D,EACE,OAAIK,IACI,mBAAoBnsB,GACxB,OAAOisB,EAAS,aAAa,UAEzB,oBAAqBjsB,GACzB,OAAOisB,EAAS,cAAc,YAG3BA,CACT,CACA,IAAIG,GAAiBF,GAAkBG,GAAS,EAAI,OAAO,OAAW,IAAc,OAAS,EAAE,EAC3FzxB,GAAQ,CAAA,EACZ,GAAIyxB,KAAa,CACf,IAAIC,GAAwB,SAAS,cAAc,KAAK,EACxD1xB,GAAQ0xB,GAAsB,KAChC,CACA,IAAIC,GAAqB,CAAA,EAClB,SAASC,GAA2BR,EAAW,CACpD,GAAIO,GAAmBP,CAAS,EAC9B,OAAOO,GAAmBP,CAAS,EAErC,IAAIS,EAAYL,GAAeJ,CAAS,EACxC,GAAIS,EAGF,QAFIC,EAAgB,OAAO,KAAKD,CAAS,EACrC/1B,EAAMg2B,EAAc,OACf,EAAI,EAAG,EAAIh2B,EAAK,GAAK,EAAG,CAC/B,IAAIq1B,EAAYW,EAAc,CAAC,EAC/B,GAAI,OAAO,UAAU,eAAe,KAAKD,EAAWV,CAAS,GAAKA,KAAanxB,GAC7E,OAAA2xB,GAAmBP,CAAS,EAAIS,EAAUV,CAAS,EAC5CQ,GAAmBP,CAAS,CAEvC,CAEF,MAAO,EACT,CACA,IAAIW,GAA2BH,GAA2B,cAAc,EACpEI,GAA4BJ,GAA2B,eAAe,EAC/DK,GAAoB,CAAC,EAAEF,IAA4BC,IACnDE,GAAmBH,IAA4B,eAC/CI,GAAoBH,IAA6B,gBACrD,SAASI,GAAkBC,EAAgBC,EAAgB,CAChE,GAAI,CAACD,EAAgB,OAAO,KAC5B,GAAIjoC,GAAQioC,CAAc,IAAM,SAAU,CACxC,IAAI/mD,EAAOgnD,EAAe,QAAQ,OAAQ,SAAU79C,EAAO,CACzD,OAAOA,EAAM,CAAC,EAAE,YAAW,CAC7B,CAAC,EACD,OAAO49C,EAAe/mD,CAAI,CAC5B,CACA,MAAO,GAAG,OAAO+mD,EAAgB,GAAG,EAAE,OAAOC,CAAc,CAC7D,CChEA,MAAAC,GAAgB,SAAUC,EAAqB,CAC7C,IAAIC,EAAkBp1C,EAAAA,OAAM,EAG5B,SAASq1C,EAAmB1gC,EAAS,CAC/BA,IACFA,EAAQ,oBAAoBmgC,GAAmBK,CAAmB,EAClExgC,EAAQ,oBAAoBkgC,GAAkBM,CAAmB,EAErE,CAGA,SAASG,EAAkB3gC,EAAS,CAC9BygC,EAAgB,SAAWA,EAAgB,UAAYzgC,GACzD0gC,EAAmBD,EAAgB,OAAO,EAExCzgC,GAAWA,IAAYygC,EAAgB,UACzCzgC,EAAQ,iBAAiBmgC,GAAmBK,CAAmB,EAC/DxgC,EAAQ,iBAAiBkgC,GAAkBM,CAAmB,EAG9DC,EAAgB,QAAUzgC,EAE9B,CAGA1N,OAAAA,EAAM,UAAU,UAAY,CAC1B,OAAO,UAAY,CACjBouC,EAAmBD,EAAgB,OAAO,CAC5C,CACF,EAAG,CAAA,CAAE,EACE,CAACE,EAAmBD,CAAkB,CAC/C,EC/BA,IAAIE,GAA4B72B,KAAciI,EAAAA,gBAAkB1mB,EAAAA,UCFhE,MAAAu1C,GAAgB,UAAY,CAC1B,IAAIC,EAAexuC,EAAM,OAAO,IAAI,EACpC,SAASyuC,GAAkB,CACzBr4B,GAAI,OAAOo4B,EAAa,OAAO,CACjC,CACA,SAASE,EAAUt7C,EAAU,CAC3B,IAAIqb,EAAQ,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,EAChFggC,EAAe,EACf,IAAIE,EAAcv4B,GAAI,UAAY,CAC5B3H,GAAS,EACXrb,EAAS,CACP,WAAY,UAAsB,CAChC,OAAOu7C,IAAgBH,EAAa,OACtC,CACV,CAAS,EAEDE,EAAUt7C,EAAUqb,EAAQ,CAAC,CAEjC,CAAC,EACD+/B,EAAa,QAAUG,CACzB,CACA3uC,OAAAA,EAAM,UAAU,UAAY,CAC1B,OAAO,UAAY,CACjByuC,EAAe,CACjB,CACF,EAAG,CAAA,CAAE,EACE,CAACC,EAAWD,CAAe,CACpC,ECvBA,IAAIG,GAAkB,CAACrC,GAAcC,GAAYC,GAAaC,EAAc,EACxEmC,GAAoB,CAACtC,GAAcI,EAAa,EAGzCmC,GAAW,GAEXC,GAAS,GACb,SAASC,GAASC,EAAM,CAC7B,OAAOA,IAASxC,IAAewC,IAASvC,EAC1C,CACA,MAAAwC,GAAgB,SAAUC,EAAQC,EAAah8C,EAAU,CACvD,IAAIquC,EAAYrnC,GAASkyC,EAAS,EAChC5K,EAAavqB,GAAesqB,EAAW,CAAC,EACxCwN,EAAOvN,EAAW,CAAC,EACnB2N,EAAU3N,EAAW,CAAC,EACpB4N,EAAgBf,GAAY,EAC9BgB,EAAiBp4B,GAAem4B,EAAe,CAAC,EAChDZ,EAAYa,EAAe,CAAC,EAC5Bd,EAAkBc,EAAe,CAAC,EACpC,SAASC,GAAa,CACpBH,EAAQ9C,GAAc,EAAI,CAC5B,CACA,IAAIkD,EAAaL,EAAcP,GAAoBD,GACnD,OAAAN,GAA0B,UAAY,CACpC,GAAIW,IAAS3C,IAAa2C,IAASvC,GAAgB,CACjD,IAAItkD,EAAQqnD,EAAW,QAAQR,CAAI,EAC/BS,EAAWD,EAAWrnD,EAAQ,CAAC,EAC/BG,EAAS6K,EAAS67C,CAAI,EACtB1mD,IAAWumD,GAEbO,EAAQK,EAAU,EAAI,EACbA,GAEThB,EAAU,SAAU7lB,EAAM,CACxB,SAAS8mB,GAAS,CAEZ9mB,EAAK,cACTwmB,EAAQK,EAAU,EAAI,CACxB,CACInnD,IAAW,GACbonD,EAAM,EAGN,QAAQ,QAAQpnD,CAAM,EAAE,KAAKonD,CAAM,CAEvC,CAAC,CAEL,CACF,EAAG,CAACR,EAAQF,CAAI,CAAC,EACjBjvC,EAAM,UAAU,UAAY,CAC1B,OAAO,UAAY,CACjByuC,EAAe,CACjB,CACF,EAAG,CAAA,CAAE,EACE,CAACe,EAAYP,CAAI,CAC1B,ECjDe,SAASW,GAAUC,EAAeC,EAASC,EAAYr0C,EAAM,CAC1E,IAAIs0C,EAAmBt0C,EAAK,YAC1Bu0C,EAAcD,IAAqB,OAAS,GAAOA,EACnDE,EAAoBx0C,EAAK,aACzBy0C,EAAeD,IAAsB,OAAS,GAAOA,EACrDE,EAAmB10C,EAAK,YACxB20C,EAAcD,IAAqB,OAAS,GAAOA,EACnDE,EAAiB50C,EAAK,eACtB60C,EAAyB70C,EAAK,uBAC9B80C,EAAkB90C,EAAK,gBACvB+0C,EAAiB/0C,EAAK,eACtBg1C,EAAiBh1C,EAAK,eACtBi1C,EAAgBj1C,EAAK,cACrBk1C,EAAel1C,EAAK,aACpBm1C,EAAen1C,EAAK,aACpBo1C,EAAiBp1C,EAAK,eACtBq1C,EAAgBr1C,EAAK,cACrBs1C,EAAgBt1C,EAAK,cACrBu1C,EAAcv1C,EAAK,YACnBw1C,EAAax1C,EAAK,WAClBy1C,EAAaz1C,EAAK,WAClB01C,EAAmB11C,EAAK,iBAEtB+lC,EAAYrnC,GAAQ,EACtBsnC,EAAavqB,GAAesqB,EAAW,CAAC,EACxC4P,EAAe3P,EAAW,CAAC,EAC3B4P,EAAkB5P,EAAW,CAAC,EAC5B6P,EAAgB1F,GAAaK,EAAW,EAC1CsF,EAAiBr6B,GAAeo6B,EAAe,CAAC,EAChDE,EAAYD,EAAe,CAAC,EAC5BE,EAAYF,EAAe,CAAC,EAC1BxP,EAAa5nC,GAAS,IAAI,EAC5B6nC,EAAa9qB,GAAe6qB,EAAY,CAAC,EACzCtmB,EAAQumB,EAAW,CAAC,EACpB0P,EAAW1P,EAAW,CAAC,EACrB2P,EAAgBH,EAAS,EACzBI,EAAa94C,EAAAA,OAAO,EAAK,EACzB+4C,EAAc/4C,EAAAA,OAAO,IAAI,EAG7B,SAASg5C,GAAgB,CACvB,OAAOhC,EAAU,CACnB,CAGA,IAAIiC,EAAYj5C,EAAAA,OAAO,EAAK,EAK5B,SAASk5C,IAAwB,CAC/BP,EAAUxF,EAAW,EACrByF,EAAS,KAAM,EAAI,CACrB,CACA,IAAIzD,GAAsBzN,GAAS,SAAU34C,GAAO,CAClD,IAAIqnD,GAASsC,EAAS,EAGtB,GAAItC,KAAWjD,GAGf,KAAIx+B,GAAUqkC,EAAa,EAC3B,GAAI,EAAAjqD,IAAS,CAACA,GAAM,UAAYA,GAAM,SAAW4lB,IAMjD,KAAIwkC,GAAgBF,EAAU,QAC1BG,GACAhD,KAAWhD,IAAiB+F,GAC9BC,GAASlB,GAAgB,KAAiC,OAASA,EAAYvjC,GAAS5lB,EAAK,EACpFqnD,KAAW/C,IAAgB8F,GACpCC,GAASjB,GAAe,KAAgC,OAASA,EAAWxjC,GAAS5lB,EAAK,EACjFqnD,KAAW9C,IAAgB6F,KACpCC,GAAShB,GAAe,KAAgC,OAASA,EAAWzjC,GAAS5lB,EAAK,GAIxFoqD,IAAiBC,KAAW,IAC9BF,GAAqB,GAEzB,CAAC,EACGG,GAAsBnE,GAAmBC,EAAmB,EAC9DmE,GAAuBl7B,GAAei7B,GAAqB,CAAC,EAC5D/D,GAAoBgE,GAAqB,CAAC,EAGxCC,EAAmB,SAA0BC,GAAc,CAC7D,OAAQA,GAAY,CAClB,KAAKpG,GACH,OAAO/kC,EAAgBA,EAAgBA,EAAgB,CAAA,EAAImlC,GAAciE,CAAe,EAAGhE,GAAYmE,CAAa,EAAGlE,GAAaqE,CAAc,EACpJ,KAAK1E,GACH,OAAOhlC,EAAgBA,EAAgBA,EAAgB,CAAA,EAAImlC,GAAckE,CAAc,EAAGjE,GAAYoE,CAAY,EAAGnE,GAAasE,CAAa,EACjJ,KAAK1E,GACH,OAAOjlC,EAAgBA,EAAgBA,EAAgB,CAAA,EAAImlC,GAAcmE,CAAc,EAAGlE,GAAYqE,CAAY,EAAGpE,GAAauE,CAAa,EACjJ,QACE,MAAO,CAAA,CACf,CACE,EACIwB,EAAgBxyC,EAAM,QAAQ,UAAY,CAC5C,OAAOsyC,EAAiBV,CAAa,CACvC,EAAG,CAACA,CAAa,CAAC,EACda,GAAgBvD,GAAa0C,EAAe,CAAC/B,EAAe,SAAU6C,GAAS,CAE/E,GAAIA,KAAYnG,GAAc,CAC5B,IAAIoG,GAAYH,EAAcjG,EAAY,EAC1C,OAAKoG,GAGEA,GAAUZ,GAAe,EAFvBjD,EAGX,CAGA,GAAIG,MAAQuD,EAAe,CACzB,IAAII,GACJjB,IAAWiB,GAAsBJ,EAAcvD,EAAI,KAAO,MAAQ2D,KAAwB,OAAS,OAASA,GAAoB,KAAKJ,EAAeT,EAAa,EAAI,IAAI,IAAM,IAAI,CACrL,CACA,OAAI9C,KAASxC,IAAemF,IAAkB1F,KAE5CmC,GAAkB0D,EAAa,CAAE,EAC7BzB,EAAiB,IACnB,aAAawB,EAAY,OAAO,EAChCA,EAAY,QAAU,WAAW,UAAY,CAC3C5D,GAAoB,CAClB,SAAU,EACxB,CAAa,CACH,EAAGoC,CAAc,IAGjBrB,KAAStC,IACXsF,GAAqB,EAEhBlD,EACT,CAAC,EACD8D,EAAiB17B,GAAes7B,GAAe,CAAC,EAChDK,GAAYD,EAAe,CAAC,EAC5B5D,GAAO4D,EAAe,CAAC,EACrBE,GAAS/D,GAASC,EAAI,EAC1B+C,EAAU,QAAUe,GAGpB,IAAIC,GAAaj6C,EAAAA,OAAO,IAAI,EAG5Bu1C,GAA0B,UAAY,CAIpC,GAAI,EAAAuD,EAAW,SAAWmB,GAAW,UAAYlD,GAGjD,CAAAwB,EAAgBxB,CAAO,EACvB,IAAIv1C,GAAYs3C,EAAW,QAC3BA,EAAW,QAAU,GAMrB,IAAIoB,GAGA,CAAC14C,IAAau1C,GAAWK,IAC3B8C,GAAa9G,IAIX5xC,IAAau1C,GAAWG,IAC1BgD,GAAa7G,KAIX7xC,IAAa,CAACu1C,GAAWO,GAAe,CAAC91C,IAAag2C,GAA0B,CAACT,GAAWO,KAC9F4C,GAAa5G,IAEf,IAAI6G,GAAoBZ,EAAiBW,EAAU,EAG/CA,KAAepD,GAAiBqD,GAAkB3G,EAAY,IAChEmF,EAAUuB,EAAU,EACpBH,GAAS,GAGTpB,EAAUxF,EAAW,EAEvB8G,GAAW,QAAUlD,EACvB,EAAG,CAACA,CAAO,CAAC,EAIZ92C,EAAAA,UAAU,UAAY,EAGpB44C,IAAkBzF,IAAiB,CAACgE,GAEpCyB,IAAkBxF,IAAgB,CAAC6D,GAEnC2B,IAAkBvF,IAAgB,CAACgE,IACjCqB,EAAUxF,EAAW,CAEzB,EAAG,CAACiE,EAAcF,EAAaI,CAAW,CAAC,EAC3Cr3C,EAAAA,UAAU,UAAY,CACpB,OAAO,UAAY,CACjB64C,EAAW,QAAU,GACrB,aAAaC,EAAY,OAAO,CAClC,CACF,EAAG,CAAA,CAAE,EAGL,IAAIqB,GAAsBnzC,EAAM,OAAO,EAAK,EAC5ChH,EAAAA,UAAU,UAAY,CAEhBq4C,IACF8B,GAAoB,QAAU,IAE5B9B,IAAiB,QAAaO,IAAkB1F,MAE9CiH,GAAoB,SAAW9B,KACjCD,GAAqB,MAAuCA,EAAiBC,CAAY,GAE3F8B,GAAoB,QAAU,GAElC,EAAG,CAAC9B,EAAcO,CAAa,CAAC,EAGhC,IAAI3lB,GAAcvQ,EAClB,OAAI82B,EAAcjG,EAAY,GAAK0C,KAASzC,KAC1CvgB,GAAc9W,EAAc,CAC1B,WAAY,MAClB,EAAO8W,EAAW,GAET,CAAC2lB,EAAe3C,GAAMhjB,GAAaolB,GAAkEvB,CAAO,CACrH,CCjOO,SAASsD,GAAa7yC,EAAQ,CACnC,IAAI8yC,EAAoB9yC,EACpBuF,GAAQvF,CAAM,IAAM,WACtB8yC,EAAoB9yC,EAAO,mBAE7B,SAAS+yC,EAAoBj6C,EAAOk6C,EAAe,CACjD,MAAO,CAAC,EAAEl6C,EAAM,YAAcg6C,GAAqBE,IAAkB,GACvE,CACA,IAAIC,EAAyBxzC,EAAM,WAAW,SAAU3G,EAAOP,EAAK,CAClE,IAAI26C,EAAiBp6C,EAAM,QACzBy2C,EAAU2D,IAAmB,OAAS,GAAOA,EAC7CC,EAAuBr6C,EAAM,cAC7Bs6C,EAAgBD,IAAyB,OAAS,GAAOA,EACzDE,EAAcv6C,EAAM,YACpB+M,EAAW/M,EAAM,SACjBw6C,EAAax6C,EAAM,WACnBy6C,EAAkBz6C,EAAM,gBACxB06C,EAAa16C,EAAM,WACjBgoB,EAAoBrhB,EAAM,WAAWsF,EAAO,EAC9CiuC,EAAgBlyB,EAAkB,OAChCwuB,EAAgByD,EAAoBj6C,EAAOk6C,CAAa,EAGxDS,EAAUj7C,EAAAA,OAAM,EAEhBk7C,EAAiBl7C,EAAAA,OAAM,EAC3B,SAASg5C,GAAgB,CACvB,GAAI,CAKF,OAAOiC,EAAQ,mBAAmB,YAAcA,EAAQ,QAAUrsC,GAAYssC,EAAe,OAAO,CACtG,MAAY,CAEV,OAAO,IACT,CACF,CACA,IAAIC,EAAatE,GAAUC,EAAeC,EAASiC,EAAe14C,CAAK,EACrE86C,EAAch9B,GAAe+8B,EAAY,CAAC,EAC1C/E,EAASgF,EAAY,CAAC,EACtBC,EAAaD,EAAY,CAAC,EAC1BE,EAAcF,EAAY,CAAC,EAC3BG,EAAgBH,EAAY,CAAC,EAI3BI,EAAcv0C,EAAM,OAAOs0C,CAAa,EACxCA,IACFC,EAAY,QAAU,IAIxB,IAAIC,EAAax0C,EAAM,YAAY,SAAUyH,EAAM,CACjDusC,EAAQ,QAAUvsC,EAClBwE,GAAQnT,EAAK2O,CAAI,CACnB,EAAG,CAAC3O,CAAG,CAAC,EAGJ27C,EACAC,EAAcv/B,EAAcA,EAAc,CAAA,EAAI4+B,CAAU,EAAG,GAAI,CACjE,QAASjE,CACf,CAAK,EACD,GAAI,CAAC1pC,EAEHquC,EAAiB,aACRtF,IAAWjD,GAEhBoI,EACFG,EAAiBruC,EAAS+O,EAAc,CAAA,EAAIu/B,CAAW,EAAGF,CAAU,EAC3D,CAACb,GAAiBY,EAAY,SAAWT,EAClDW,EAAiBruC,EAAS+O,EAAcA,EAAc,CAAA,EAAIu/B,CAAW,EAAG,GAAI,CAC1E,UAAWZ,CACrB,CAAS,EAAGU,CAAU,EACLZ,GAAe,CAACD,GAAiB,CAACG,EAC3CW,EAAiBruC,EAAS+O,EAAcA,EAAc,CAAA,EAAIu/B,CAAW,EAAG,GAAI,CAC1E,MAAO,CACL,QAAS,MACrB,CACA,CAAS,EAAGF,CAAU,EAEdC,EAAiB,SAEd,CAEL,IAAIE,EACAP,IAAe7H,GACjBoI,EAAe,UACN3F,GAASoF,CAAU,EAC5BO,EAAe,SACNP,IAAe5H,KACxBmI,EAAe,SAEjB,IAAIC,EAAY9G,GAAkB+F,EAAY,GAAG,OAAO1E,EAAQ,GAAG,EAAE,OAAOwF,CAAY,CAAC,EACzFF,EAAiBruC,EAAS+O,EAAcA,EAAc,CAAA,EAAIu/B,CAAW,EAAG,GAAI,CAC1E,UAAWlvC,GAAWsoC,GAAkB+F,EAAY1E,CAAM,EAAG/nC,EAAgBA,EAAgB,CAAA,EAAIwtC,EAAWA,GAAaD,CAAY,EAAGd,EAAY,OAAOA,GAAe,QAAQ,CAAC,EACnL,MAAOQ,CACf,CAAO,EAAGG,CAAU,CAChB,CAGA,GAAkBx0C,EAAM,eAAey0C,CAAc,GAAK/nC,GAAW+nC,CAAc,EAAG,CACpF,IAAII,EAAgB7nC,GAAWynC,CAAc,EACxCI,IACHJ,EAA8Bz0C,EAAM,aAAay0C,EAAgB,CAC/D,IAAKD,CACf,CAAS,EAEL,CACA,OAAoBx0C,EAAM,cAAcyT,GAAY,CAClD,IAAKwgC,CACX,EAAOQ,CAAc,CACnB,CAAC,EACD,OAAAjB,EAAU,YAAc,YACjBA,CACT,CACA,MAAAA,GAAeJ,GAAazF,EAAiB,ECtItC,IAAImH,GAAa,MACbC,GAAc,OACdC,GAAgB,SAChBC,GAAiB,UACrB,SAASC,GAAgBzxD,EAAK,CACnC,IAAI0xD,EACJ,OAAI1xD,GAAOqiB,GAAQriB,CAAG,IAAM,UAAY,QAASA,EAC/C0xD,EAAS1xD,EAET0xD,EAAS,CACP,IAAK1xD,CACX,EAES0xB,EAAcA,EAAc,CAAA,EAAIggC,CAAM,EAAG,CAAA,EAAI,CAClD,IAAK,OAAOA,EAAO,GAAG,CAC1B,CAAG,CACH,CACO,SAASC,IAAY,CAC1B,IAAIxrD,EAAO,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAA,EAC/E,OAAOA,EAAK,IAAIsrD,EAAe,CACjC,CACO,SAASG,IAAW,CACzB,IAAIC,EAAW,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAA,EAC/EC,EAAc,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAA,EAClF1pB,EAAO,CAAA,EACP2pB,EAAe,EACfC,EAAaF,EAAY,OACzBG,EAAiBN,GAAUE,CAAQ,EACnCK,EAAoBP,GAAUG,CAAW,EAG7CG,EAAe,QAAQ,SAAUP,EAAQ,CAEvC,QADIS,EAAM,GACDpvD,EAAIgvD,EAAchvD,EAAIivD,EAAYjvD,GAAK,EAAG,CACjD,IAAIqvD,EAAgBF,EAAkBnvD,CAAC,EACvC,GAAIqvD,EAAc,MAAQV,EAAO,IAAK,CAEhCK,EAAehvD,IACjBqlC,EAAOA,EAAK,OAAO8pB,EAAkB,MAAMH,EAAchvD,CAAC,EAAE,IAAI,SAAU/D,EAAK,CAC7E,OAAO0yB,EAAcA,EAAc,CAAA,EAAI1yB,CAAG,EAAG,CAAA,EAAI,CAC/C,OAAQqyD,EACtB,CAAa,CACH,CAAC,CAAC,EACFU,EAAehvD,GAEjBqlC,EAAK,KAAK1W,EAAcA,EAAc,CAAA,EAAI0gC,CAAa,EAAG,GAAI,CAC5D,OAAQd,EAClB,CAAS,CAAC,EACFS,GAAgB,EAChBI,EAAM,GACN,KACF,CACF,CAGKA,GACH/pB,EAAK,KAAK1W,EAAcA,EAAc,CAAA,EAAIggC,CAAM,EAAG,GAAI,CACrD,OAAQH,EAChB,CAAO,CAAC,CAEN,CAAC,EAGGQ,EAAeC,IACjB5pB,EAAOA,EAAK,OAAO8pB,EAAkB,MAAMH,CAAY,EAAE,IAAI,SAAU/yD,EAAK,CAC1E,OAAO0yB,EAAcA,EAAc,CAAA,EAAI1yB,CAAG,EAAG,CAAA,EAAI,CAC/C,OAAQqyD,EAChB,CAAO,CACH,CAAC,CAAC,GAOJ,IAAIlrD,EAAO,CAAA,EACXiiC,EAAK,QAAQ,SAAUnwB,EAAM,CAC3B,IAAIjY,EAAMiY,EAAK,IACf9R,EAAKnG,CAAG,GAAKmG,EAAKnG,CAAG,GAAK,GAAK,CACjC,CAAC,EACD,IAAIqyD,EAAiB,OAAO,KAAKlsD,CAAI,EAAE,OAAO,SAAUnG,EAAK,CAC3D,OAAOmG,EAAKnG,CAAG,EAAI,CACrB,CAAC,EACD,OAAAqyD,EAAe,QAAQ,SAAUC,EAAU,CAEzClqB,EAAOA,EAAK,OAAO,SAAUjwB,EAAO,CAClC,IAAInY,EAAMmY,EAAM,IACduzC,EAASvzC,EAAM,OACjB,OAAOnY,IAAQsyD,GAAY5G,IAAW6F,EACxC,CAAC,EAGDnpB,EAAK,QAAQ,SAAUpkB,EAAM,CACvBA,EAAK,MAAQsuC,IAEftuC,EAAK,OAASstC,GAElB,CAAC,CACH,CAAC,EACMlpB,CACT,CC7FA,IAAI8f,GAAY,CAAC,YAAa,WAAY,mBAAoB,cAAc,EAC1EqK,GAAa,CAAC,QAAQ,EAMpBC,GAAoB,CAAC,aAAc,UAAW,WAAY,aAAc,eAAgB,cAAe,cAAe,yBAA0B,iBAAkB,gBAAiB,kBAAmB,kBAAmB,gBAAiB,iBAAkB,cAAe,eAAgB,gBAAiB,aAAc,eAAgB,gBAAiB,YAAY,EAMpW,SAASC,GAAiB7C,EAAmB,CAClD,IAAIG,EAAY,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI2C,GAChFC,EAA6B,SAAU1iC,EAAkB,CAC3DZ,GAAUsjC,EAAe1iC,CAAgB,EACzC,IAAIC,EAASN,GAAa+iC,CAAa,EACvC,SAASA,GAAgB,CACvB,IAAIpkC,EACJU,GAAgB,KAAM0jC,CAAa,EACnC,QAASjqC,EAAO,UAAU,OAAQplB,EAAO,IAAI,MAAMolB,CAAI,EAAGE,EAAO,EAAGA,EAAOF,EAAME,IAC/EtlB,EAAKslB,CAAI,EAAI,UAAUA,CAAI,EAE7B,OAAA2F,EAAQ2B,EAAO,KAAK,MAAMA,EAAQ,CAAC,IAAI,EAAE,OAAO5sB,CAAI,CAAC,EACrDqgB,EAAgB8L,GAAuBlB,CAAK,EAAG,QAAS,CACtD,YAAa,CAAA,CACrB,CAAO,EAED5K,EAAgB8L,GAAuBlB,CAAK,EAAG,YAAa,SAAUqkC,EAAW,CAC/ErkC,EAAM,SAAS,SAAUskC,EAAW,CAClC,IAAIC,EAAkBD,EAAU,YAAY,IAAI,SAAUjkC,EAAQ,CAChE,OAAIA,EAAO,MAAQgkC,EAAkBhkC,EAC9B8C,EAAcA,EAAc,CAAA,EAAI9C,CAAM,EAAG,CAAA,EAAI,CAClD,OAAQ4iC,EACtB,CAAa,CACH,CAAC,EACD,MAAO,CACL,YAAasB,CACzB,CACQ,EAAG,UAAY,CACb,IAAIC,EAAcxkC,EAAM,MAAM,YAC1BykC,EAAgBD,EAAY,OAAO,SAAU96C,EAAM,CACrD,IAAIyzC,EAASzzC,EAAK,OAClB,OAAOyzC,IAAW8F,EACpB,CAAC,EAAE,OACCwB,IAAkB,GAAKzkC,EAAM,MAAM,cACrCA,EAAM,MAAM,aAAY,CAE5B,CAAC,CACH,CAAC,EACMA,CACT,CACAY,OAAAA,GAAawjC,EAAe,CAAC,CAC3B,IAAK,SACL,MAAO,UAAkB,CACvB,IAAIlW,EAAS,KACTsW,EAAc,KAAK,MAAM,YACzBE,EAAc,KAAK,MACrBnlB,EAAYmlB,EAAY,UACxBtwC,EAAWswC,EAAY,SACvBC,EAAoBD,EAAY,iBACjBA,EAAY,aACrC,IAAUE,EAAY38B,GAAyBy8B,EAAa/K,EAAS,EACzDkL,EAAYtlB,GAAavxB,EAAM,SAC/B82C,EAAc,CAAA,EAClB,OAAAb,GAAkB,QAAQ,SAAUhxD,EAAM,CACxC6xD,EAAY7xD,CAAI,EAAI2xD,EAAU3xD,CAAI,EAClC,OAAO2xD,EAAU3xD,CAAI,CACvB,CAAC,EACD,OAAO2xD,EAAU,KACG52C,EAAM,cAAc62C,EAAWD,EAAWJ,EAAY,IAAI,SAAU56C,EAAOxT,EAAO,CACpG,IAAI+mD,EAASvzC,EAAM,OACjBm4C,EAAa95B,GAAyBre,EAAOo6C,EAAU,EACrDlG,EAAUX,IAAW2F,IAAc3F,IAAW4F,GAClD,OAAoB/0C,EAAM,cAAcwzC,EAAW3tC,GAAS,CAAA,EAAIixC,EAAa,CAC3E,IAAK/C,EAAW,IAChB,QAASjE,EACT,WAAYiE,EACZ,iBAAkB,SAA0BgD,EAAgB,CAC1DJ,GAAsB,MAAwCA,EAAkBI,EAAgB,CAC9F,IAAKhD,EAAW,GAChC,CAAe,EACIgD,GACH7W,EAAO,UAAU6T,EAAW,GAAG,CAEnC,CACZ,CAAW,EAAG,SAAU16C,EAAOP,EAAK,CACxB,OAAOsN,EAAS+O,EAAcA,EAAc,CAAA,EAAI9b,CAAK,EAAG,GAAI,CAC1D,MAAOjR,CACrB,CAAa,EAAG0Q,CAAG,CACT,CAAC,CACH,CAAC,CAAC,CACJ,CACN,CAAK,EAAG,CAAC,CACH,IAAK,2BACL,MAAO,SAAkCqmB,EAAOG,EAAO,CACrD,IAAI11B,EAAOu1B,EAAM,KACbq3B,EAAcl3B,EAAM,YACpB03B,EAAmB5B,GAAUxrD,CAAI,EACjCqtD,EAAmB5B,GAASmB,EAAaQ,CAAgB,EAC7D,MAAO,CACL,YAAaC,EAAiB,OAAO,SAAU5kC,EAAQ,CACrD,IAAI6kC,EAAaV,EAAY,KAAK,SAAUr0B,EAAO,CACjD,IAAI1+B,EAAM0+B,EAAM,IAChB,OAAO9P,EAAO,MAAQ5uB,CACxB,CAAC,EAGD,MAAI,EAAAyzD,GAAcA,EAAW,SAAWjC,IAAkB5iC,EAAO,SAAW2iC,GAI9E,CAAC,CACX,CACM,CACN,CAAK,CAAC,EACKoB,CACT,EAAEp2C,EAAM,SAAS,EACjBoH,OAAAA,EAAgBgvC,EAAe,eAAgB,CAC7C,UAAW,KACf,CAAG,EACMA,CACT,CACeF,GAAiBvI,EAAiB,EChIjD,MAAMwJ,GAAkCn3C,EAAM,cAAc,EAAI,EAC5D,QAAQ,IAAI,WAAa,eAC3Bm3C,GAAmB,YAAc,sBAEpB,SAASC,GAAc/9C,EAAO,CAC3C,MAAMg+C,EAAer3C,EAAM,WAAWm3C,EAAkB,EAClD,CACJ,SAAA/wC,CACJ,EAAM/M,EACE,CAAA,CAAGikB,CAAK,EAAIgnB,GAAQ,EACpB,CACJ,OAAAgT,CACJ,EAAMh6B,EACEi6B,EAA4Bv3C,EAAM,OAAO,EAAK,EAEpD,OADAu3C,EAA0B,UAAYA,EAA0B,QAAUF,IAAiBC,GACvFC,EAA0B,QACRv3C,EAAM,cAAcm3C,GAAmB,SAAU,CACnE,MAAOG,CACb,EAAoBt3C,EAAM,cAAc4rC,GAAgB,CAClD,OAAQ0L,CACd,EAAOlxC,CAAQ,CAAC,EAEPA,CACT,CCpBA,MAAMoxC,GAA2Bx3C,EAAM,KAAK,CAAC,CAC3C,yBAAAy3C,CACF,KACkB/lB,GAAc,gBAAgB,EACtC,WAAW+lB,IAA6B,OAAW,2BAA4B,uBAAuB,EACvG,KACR,EACG,QAAQ,IAAI,WAAa,eAC3BD,GAAY,YAAc,eAE5B,MAAAE,GAAe,QAAQ,IAAI,WAAa,aAAeF,GAAc,IAAM,KChB3E,IAAIrP,GAAgC,SAAU/kD,EAAGe,EAAG,CAClD,IAAId,EAAI,CAAA,EACR,QAASe,KAAKhB,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGgB,CAAC,GAAKD,EAAE,QAAQC,CAAC,EAAI,IAAGf,EAAEe,CAAC,EAAIhB,EAAEgB,CAAC,GAC/F,GAAIhB,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WAAY,QAAS,EAAI,EAAGgB,EAAI,OAAO,sBAAsBhB,CAAC,EAAG,EAAIgB,EAAE,OAAQ,IAClID,EAAE,QAAQC,EAAE,CAAC,CAAC,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKhB,EAAGgB,EAAE,CAAC,CAAC,IAAGf,EAAEe,EAAE,CAAC,CAAC,EAAIhB,EAAEgB,EAAE,CAAC,CAAC,GAElG,OAAOf,CACT,EA2BA,IAAIs0D,GAAmB,GAChB,MAAMC,GAAc,QAAQ,IAAI,WAAa,aAAerkB,GAAiB,CAClF,QAAQ,IAAI,WAAa,cAAe9sB,GAAQ,CAACkxC,GAAkBpkB,EAAe,iGAAiG,CACrL,EACA,KAIMskB,GAAe,CAAC,qBAAsB,oBAAqB,cAAe,QAAS,aAAc,OAAQ,SAAU,QAAQ,EACjI,IAAIpZ,GACAqZ,GACAC,GACAC,GACJ,SAASC,IAAqB,CAC5B,OAAOxZ,IAAmBlB,EAC5B,CACA,SAAS2a,IAAyB,CAChC,OAAOJ,IAAuBta,EAChC,CACA,SAAS2a,GAAch1B,EAAO,CAC5B,OAAO,OAAO,KAAKA,CAAK,EAAE,KAAK1/B,GAAOA,EAAI,SAAS,OAAO,CAAC,CAC7D,CACA,MAAM20D,GAAkB/+C,GAAS,CAC/B,KAAM,CACJ,UAAA+rC,EACA,cAAAoB,EACA,MAAArjB,EACA,aAAAk1B,CACJ,EAAMh/C,EACA+rC,IAAc,SAChB3G,GAAkB2G,GAEhBoB,IAAkB,SACpBsR,GAAsBtR,GAEpB,iBAAkBntC,IACpB2+C,GAAqBK,GAEnBl1B,IACEg1B,GAAch1B,CAAK,GACrB,QAAQ,IAAI,WAAa,cAAe1c,GAAQ,GAAO,iBAAkB,0FAA0F,EACnKu4B,GAAciZ,GAAkB,EAAI90B,CAAK,GAEzC40B,GAAc50B,EAGpB,EACam1B,GAAe,KAAO,CACjC,aAAc,CAAC3a,EAAWC,IACpBA,IAGGD,EAAY,GAAGsa,GAAkB,CAAE,IAAIta,CAAS,GAAKsa,GAAkB,GAEhF,iBAAkBC,GAClB,iBAAkB,IAEZzZ,IAIGwZ,GAAkB,EAE3B,SAAU,IAAMF,GAChB,aAAcC,EAChB,GACMO,GAAmBl/C,GAAS,CAChC,KAAM,CACJ,SAAA+M,EACA,IAAKoyC,EACL,wBAAAC,EACA,MAAAC,EACA,OAAAC,EACA,KAAAC,EACA,OAAA1mB,EACA,cAAAuN,EACA,UAAArB,EACA,MAAAya,EACA,SAAAC,EACA,QAAAC,EACA,yBAAAtB,EACA,sBAAAuB,EACA,cAAAC,EACA,aAAAC,EACA,cAAAC,EACA,cAAeC,EACf,MAAAj2B,EACA,kBAAAqc,EACA,UAAA6Z,EACA,UAAAvW,EACA,KAAAwW,EACA,SAAAC,EACA,SAAAC,EACA,SAAAC,EACA,SAAAC,EACA,WAAAC,EACA,SAAAC,EACA,aAAAC,EACA,QAAAC,EACA,OAAAC,EACA,SAAAC,EACA,MAAAC,EACA,MAAAC,EACA,OAAAC,EACA,KAAAtuB,EACA,SAAAuuB,EACA,MAAAC,EACA,SAAAC,EACA,OAAA/xD,EACA,OAAAgyD,GACA,WAAAC,GACA,KAAAC,GACA,WAAAC,GACA,MAAA3/C,GACA,SAAA4/C,EACA,MAAAC,EACA,MAAAC,GACA,MAAAC,EACA,KAAAC,GACA,OAAQC,GACR,SAAAC,GACA,OAAAC,GACA,QAAAt6C,GACA,IAAAu6C,GACA,MAAAC,GACA,KAAAC,GACA,KAAAC,GACA,SAAAC,GACA,WAAAC,GACA,OAAAC,EACA,aAAAC,GACA,KAAAC,GACA,YAAAC,GACA,WAAAC,GACA,YAAAC,GACA,KAAAC,GACA,KAAAC,GACA,SAAAC,GACA,QAASC,GACT,KAAAC,GACA,QAAAC,GACA,QAAAC,GACA,WAAAC,GACA,iBAAAC,GACA,QAAAC,GACA,YAAAC,GACA,WAAAC,EACJ,EAAMrjD,EAEE8kC,GAAen+B,EAAM,YAAY,CAAC29B,GAAWC,KAAuB,CACxE,KAAM,CACJ,UAAAwH,EACN,EAAQ/rC,EACJ,GAAIukC,GACF,OAAOA,GAET,MAAM+e,GAAkBvX,IAAa+T,EAAc,aAAa,EAAE,EAClE,OAAOxb,GAAY,GAAGgf,EAAe,IAAIhf,EAAS,GAAKgf,EACzD,EAAG,CAACxD,EAAc,aAAc9/C,EAAM,SAAS,CAAC,EAC1CmtC,GAAgB4S,GAAuBD,EAAc,eAAiB3b,GACtE9kB,GAAM8/B,GAAaW,EAAc,IACvCnU,GAASwB,GAAe9tB,EAAG,EAC3B,MAAM0wB,GAAc6B,GAAS9nB,EAAOg2B,EAAc,MAAO,CACvD,UAAWhb,GAAa,EAAE,CAC9B,CAAG,EACG,QAAQ,IAAI,WAAa,eAC3BwZ,GAAmBA,IAAoB,CAAC,CAACvO,IAE3C,MAAMwT,GAAa,CACjB,IAAAlkC,GACA,wBAAA+/B,EACA,MAAAC,EACA,OAAAC,EACA,OAAQzmB,GAAUgnB,EAClB,UAAA9a,EACA,MAAAya,EACA,SAAAC,EACA,QAAAC,EACA,sBAAuBC,GAA6FvB,EACpH,cAAAwB,EACA,aAAA9a,GACA,cAAAqI,GACA,MAAO4C,GACP,UAAAiQ,EACA,UAAAvW,EACA,KAAAwW,EACA,SAAAC,EACA,SAAAC,EACA,SAAAC,EACA,SAAAC,EACA,WAAAC,EACA,SAAAC,EACA,aAAAC,EACA,QAAAC,EACA,OAAAC,EACA,SAAAC,EACA,MAAAC,EACA,MAAAC,EACA,MAAAn/C,GACA,SAAA4/C,EACA,OAAAR,EACA,KAAAtuB,EACA,SAAAuuB,EACA,MAAAC,EACA,SAAAC,EACA,OAAA/xD,EACA,OAAAgyD,GACA,WAAAC,GACA,KAAAC,GACA,WAAAC,GACA,MAAAE,EACA,MAAAC,GACA,MAAAC,EACA,KAAAC,GACA,OAAQC,GACR,SAAAC,GACA,OAAAC,GACA,QAAAt6C,GACA,IAAAu6C,GACA,MAAAC,GACA,KAAAC,GACA,KAAAC,GACA,SAAAC,GACA,WAAAC,GACA,OAAAC,EACA,aAAAC,GACA,KAAAC,GACA,YAAAC,GACA,WAAAC,GACA,YAAAC,GACA,KAAAC,GACA,KAAAC,GACA,SAAAC,GACA,QAASC,GACT,KAAAC,GACA,QAAAC,GACA,QAAAC,GACA,WAAAC,GACA,iBAAAC,GACA,QAAAC,GACA,YAAAC,GACA,WAAAC,EACJ,EACM,QAAQ,IAAI,WAAa,cACThrB,GAAc,gBAAgB,EACtC,EAAE,4BAA6Br4B,GAAQ,aAAc,wGAAwG,EAEzK,MAAMkH,GAAS,OAAO,OAAO,CAAA,EAAI44C,CAAa,EAC9C,OAAO,KAAKyD,EAAU,EAAE,QAAQn5D,IAAO,CACjCm5D,GAAWn5D,EAAG,IAAM,SACtB8c,GAAO9c,EAAG,EAAIm5D,GAAWn5D,EAAG,EAEhC,CAAC,EAGDo0D,GAAa,QAAQ5Z,IAAY,CAC/B,MAAMK,GAAYjlC,EAAM4kC,EAAQ,EAC5BK,KACF/9B,GAAO09B,EAAQ,EAAIK,GAEvB,CAAC,EACG,OAAOma,EAA4B,MAErCl4C,GAAO,OAAS,OAAO,OAAO,CAC5B,gBAAiBk4C,CACvB,EAAOl4C,GAAO,MAAM,GAGlB,MAAMs8C,GAAenxC,GAAQ,IAAMnL,GAAQA,GAAQ,CAACu8C,GAAYC,KAAkB,CAChF,MAAMzH,GAAW,OAAO,KAAKwH,EAAU,EACjCvH,GAAc,OAAO,KAAKwH,EAAa,EAC7C,OAAOzH,GAAS,SAAWC,GAAY,QAAUD,GAAS,KAAK7xD,IAAOq5D,GAAWr5D,EAAG,IAAMs5D,GAAct5D,EAAG,CAAC,CAC9G,CAAC,EACK,CACJ,MAAAunC,EACJ,EAAMhrB,EAAM,WAAWg9C,EAAmB,EAClCC,GAAuBj9C,EAAM,QAAQ,KAAO,CAChD,UAAWwmC,GACX,IAAA9tB,GACA,MAAOsS,GAAQ,OAAS,MAC5B,GAAM,CAACwb,GAAe9tB,GAAKsS,EAAK,CAAC,EAC/B,IAAIkyB,GAAyBl9C,EAAM,cAAcA,EAAM,SAAU,KAAmBA,EAAM,cAAcw3C,GAAa,CACnH,yBAA0BC,CAC9B,CAAG,EAAGrxC,CAAQ,EACZ,MAAM+2C,GAAmBn9C,EAAM,QAAQ,IAAM,CAC3C,IAAI9Y,GAAID,GAAIqN,GAAID,GAChB,OAAOu8B,KAAQ1pC,GAAK2rC,GAAc,QAAU,MAAQ3rC,KAAO,OAAS,OAASA,GAAG,0BAA4B,CAAA,IAAMoN,IAAMrN,GAAK41D,GAAa,UAAY,MAAQ51D,KAAO,OAAS,OAASA,GAAG,QAAU,MAAQqN,KAAO,OAAS,OAASA,GAAG,0BAA4B,CAAA,IAAMD,GAAKwoD,GAAa,QAAU,MAAQxoD,KAAO,OAAS,OAASA,GAAG,mBAAqB,IAAKukD,GAAS,KAA0B,OAASA,EAAK,mBAAqB,CAAA,CAAE,CAC9a,EAAG,CAACiE,GAAcjE,GAAS,KAA0B,OAASA,EAAK,gBAAgB,CAAC,EAChF,OAAO,KAAKuE,EAAgB,EAAE,OAAS,IACzCD,GAAyBl9C,EAAM,cAAciyB,GAAwB,SAAU,CAC7E,MAAOkrB,EACb,EAAOD,EAAS,GAEVhrB,IACFgrB,GAAyBl9C,EAAM,cAAc+zB,GAAgB,CAC3D,OAAQ7B,EACR,YAAa4B,EACnB,EAAOopB,EAAS,GAGZA,GAAyBl9C,EAAM,cAAcowB,GAAY,SAAU,CACjE,MAAO6sB,EACb,EAAOC,EAAS,EAEVzd,IACFyd,GAAyBl9C,EAAM,cAAcq/B,GAAqB,CAChE,KAAMI,CACZ,EAAOyd,EAAS,GAGdA,GAAyBl9C,EAAM,cAAco3C,GAAe,KAAM8F,EAAS,EAE3E,MAAME,GAAYp9C,EAAM,QAAQ,IAAM,CACpC,MAAM9Y,GAAKkiD,IAAe,CAAA,EACxB,CACE,UAAAiU,GACA,MAAA//B,GACA,WAAAwrB,GACA,OAAAtpB,EACR,EAAUt4B,GACJyK,GAAOw2C,GAAOjhD,GAAI,CAAC,YAAa,QAAS,aAAc,QAAQ,CAAC,EAC5Do2D,GAAWD,KAAc,CAAC,MAAM,QAAQA,EAAS,GAAKA,GAAU,OAAS,GAAK7/B,GAAY6/B,EAAS,EAAIngB,GACvGqgB,GAAmB,CAAA,EACzB,OAAO,QAAQzU,IAAc,CAAA,CAAE,EAAE,QAAQ,CAAC,CAACvV,GAAe2P,EAAc,IAAM,CAC5E,MAAMsa,GAAc,OAAO,OAAO,CAAA,EAAIta,EAAc,EAChD,cAAesa,KACbA,GAAY,YAAc,GAC5BA,GAAY,MAAQF,IACX,MAAM,QAAQE,GAAY,SAAS,GAAK,OAAOA,GAAY,WAAc,cAClFA,GAAY,MAAQhgC,GAAYggC,GAAY,SAAS,GAEvD,OAAOA,GAAY,WAErBD,GAAiBhqB,EAAa,EAAIiqB,EACpC,CAAC,EACD,MAAM15B,GAAc,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIuZ,EAAgB,EAAG/f,EAAK,EAC5E,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAI3rB,EAAI,EAAG,CAC5C,MAAO2rD,GACP,MAAOx5B,GACP,WAAYy5B,GACZ,SAAU,OAAO,OAAO,CACtB,SAAUz5B,EAClB,EAASy5B,EAAgB,EACnB,OAAQ/9B,EACd,CAAK,CACH,EAAG,CAAC4pB,EAAW,CAAC,EAChB,OAAIjmB,IACF+5B,GAAyBl9C,EAAM,cAAcs9B,GAAmB,SAAU,CACxE,MAAO8f,EACb,EAAOF,EAAS,GAGVL,GAAa,UACfK,GAAyBl9C,EAAM,cAAcyxB,GAAe,SAAU,CACpE,MAAOorB,GAAa,OAC1B,EAAOK,EAAS,GAGV1d,IAAsB,SACxB0d,GAAyBl9C,EAAM,cAAck/B,GAAyB,CACpE,SAAUM,CAChB,EAAO0d,EAAS,GAEMl9C,EAAM,cAAc69B,GAAc,SAAU,CAC9D,MAAOgf,EACX,EAAKK,EAAS,CACd,EACMO,GAAiBpkD,GAAS,CAC9B,MAAM6kC,EAAUl+B,EAAM,WAAW69B,EAAa,EACxC6f,EAAY19C,EAAM,WAAWqzB,EAAa,EAChD,OAAoBrzB,EAAM,cAAcu4C,GAAkB,OAAO,OAAO,CACtE,cAAera,EACf,aAAcwf,CAClB,EAAKrkD,CAAK,CAAC,CACX,EACAokD,GAAe,cAAgB5f,GAC/B4f,GAAe,YAAcre,GAC7Bqe,GAAe,OAASrF,GACxBqF,GAAe,UAAYle,GAC3B,OAAO,eAAeke,GAAgB,cAAe,CACnD,IAAK,KACH,QAAQ,IAAI,WAAa,cAAeh3C,GAAQ,GAAO,iBAAkB,0GAA0G,EAC5K24B,GAEX,CAAC,EACG,QAAQ,IAAI,WAAa,eAC3Bqe,GAAe,YAAc,kBCra/B,IAAIE,GAAoB,CAAE,KAAQ,CAAE,IAAO,MAAO,MAAS,CAAE,QAAW,gBAAiB,UAAa,OAAO,EAAI,SAAY,CAAC,CAAE,IAAO,OAAQ,MAAS,CAAE,EAAK,mRAAmR,EAAI,CAAC,EAAI,KAAQ,eAAgB,MAAS,QAAQ,ECDpe,SAASC,GAAQ3wC,EAAK,CACpB,IAAI4wC,EACJ,OAAO5wC,GAAQ,OAA2B4wC,EAAmB5wC,EAAI,eAAiB,MAAQ4wC,IAAqB,OAAS,OAASA,EAAiB,KAAK5wC,CAAG,CAC5J,CAKO,SAAS6wC,GAAS7wC,EAAK,CAC5B,OAAO2wC,GAAQ3wC,CAAG,YAAa,UACjC,CAKO,SAAS8wC,GAAc9wC,EAAK,CACjC,OAAO6wC,GAAS7wC,CAAG,EAAI2wC,GAAQ3wC,CAAG,EAAI,IACxC,CCTA,SAAS+wC,GAAUjjD,EAAO,CACxB,OAAOA,EAAM,QAAQ,QAAS,SAAU5K,EAAO6X,EAAG,CAChD,OAAOA,EAAE,YAAW,CACtB,CAAC,CACH,CACO,SAASvB,GAAQC,EAAO9F,EAAS,CACtC1J,GAAKwP,EAAO,uBAAuB,OAAO9F,CAAO,CAAC,CACpD,CACO,SAASq9C,GAAiBn5D,EAAQ,CACvC,OAAOghB,GAAQhhB,CAAM,IAAM,UAAY,OAAOA,EAAO,MAAS,UAAY,OAAOA,EAAO,OAAU,WAAaghB,GAAQhhB,EAAO,IAAI,IAAM,UAAY,OAAOA,EAAO,MAAS,WAC7K,CACO,SAASo5D,IAAiB,CAC/B,IAAIx/B,EAAQ,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAA,EAChF,OAAO,OAAO,KAAKA,CAAK,EAAE,OAAO,SAAU1nB,EAAKvT,EAAK,CACnD,IAAIuL,EAAM0vB,EAAMj7B,CAAG,EACnB,OAAQA,EAAG,CACT,IAAK,QACHuT,EAAI,UAAYhI,EAChB,OAAOgI,EAAI,MACX,MACF,QACE,OAAOA,EAAIvT,CAAG,EACduT,EAAIgnD,GAAUv6D,CAAG,CAAC,EAAIuL,CAC9B,CACI,OAAOgI,CACT,EAAG,CAAA,CAAE,CACP,CACO,SAASghC,GAASvwB,EAAMhkB,EAAK06D,EAAW,CAC7C,OAAKA,EAOen+C,EAAM,cAAcyH,EAAK,IAAK0N,EAAcA,EAAc,CAC5E,IAAK1xB,CACT,EAAKy6D,GAAez2C,EAAK,KAAK,CAAC,EAAG02C,CAAS,GAAI12C,EAAK,UAAY,CAAA,GAAI,IAAI,SAAUpB,EAAOje,EAAO,CAC5F,OAAO4vC,GAAS3xB,EAAO,GAAG,OAAO5iB,EAAK,GAAG,EAAE,OAAOgkB,EAAK,IAAK,GAAG,EAAE,OAAOrf,CAAK,CAAC,CAChF,CAAC,CAAC,EAVoB4X,EAAM,cAAcyH,EAAK,IAAK0N,EAAc,CAC9D,IAAK1xB,CACX,EAAOy6D,GAAez2C,EAAK,KAAK,CAAC,GAAIA,EAAK,UAAY,IAAI,IAAI,SAAUpB,EAAOje,EAAO,CAChF,OAAO4vC,GAAS3xB,EAAO,GAAG,OAAO5iB,EAAK,GAAG,EAAE,OAAOgkB,EAAK,IAAK,GAAG,EAAE,OAAOrf,CAAK,CAAC,CAChF,CAAC,CAAC,CAON,CACO,SAASg2D,GAAkBtf,EAAc,CAE9C,OAAOuf,GAAcvf,CAAY,EAAE,CAAC,CACtC,CACO,SAASwf,GAAuBC,EAAc,CACnD,OAAKA,EAGE,MAAM,QAAQA,CAAY,EAAIA,EAAe,CAACA,CAAY,EAFxD,CAAA,CAGX,CAIO,IAAIC,GAAe,CACxB,MAAO,MACP,OAAQ,MACR,KAAM,eACN,cAAe,OACf,UAAW,OACb,EACWC,GAAa;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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EACbC,GAAkB,SAAyBC,EAAQ,CAC5D,IAAIn7B,EAAc/pB,EAAAA,WAAW22B,EAAW,EACtC1X,EAAM8K,EAAY,IAClB4hB,EAAY5hB,EAAY,UACxBwH,EAAQxH,EAAY,MAClBo7B,EAAiBH,GACjBrZ,IACFwZ,EAAiBA,EAAe,QAAQ,WAAYxZ,CAAS,GAE3Dpa,IACF4zB,EAAiB,UAAU,OAAO5zB,EAAO;AAAA,CAAM,EAAE,OAAO4zB,EAAgB;AAAA,EAAK,GAE/E5lD,EAAAA,UAAU,UAAY,CACpB,IAAIiU,EAAM0xC,EAAO,QACbE,EAAad,GAAc9wC,CAAG,EAClCyM,GAAUklC,EAAgB,oBAAqB,CAC7C,QAAS,CAAC5zB,EACV,IAAKtS,EACL,SAAUmmC,CAChB,CAAK,CACH,EAAG,CAAA,CAAE,CACP,ECzFIlT,GAAY,CAAC,OAAQ,YAAa,UAAW,QAAS,eAAgB,gBAAgB,EAGtFmT,GAAsB,CACxB,aAAc,OACd,eAAgB,UAChB,WAAY,EACd,EACA,SAASC,GAAiBrjD,EAAM,CAC9B,IAAIojC,EAAepjC,EAAK,aACtBsjD,EAAiBtjD,EAAK,eACxBojD,GAAoB,aAAehgB,EACnCggB,GAAoB,eAAiBE,GAAkBZ,GAAkBtf,CAAY,EACrFggB,GAAoB,WAAa,CAAC,CAACE,CACrC,CACA,SAASC,IAAmB,CAC1B,OAAO9pC,EAAc,CAAA,EAAI2pC,EAAmB,CAC9C,CACA,IAAII,GAAW,SAAkB7lD,EAAO,CACtC,IAAI8lD,EAAO9lD,EAAM,KACf+lD,EAAY/lD,EAAM,UAClBgmD,EAAUhmD,EAAM,QAChBqiB,EAAQriB,EAAM,MACdylC,EAAezlC,EAAM,aACrB2lD,EAAiB3lD,EAAM,eACvBu9C,EAAY38B,GAAyB5gB,EAAOsyC,EAAS,EACnD2T,EAASt/C,EAAM,OAAM,EACrB48B,EAASkiB,GASb,GARIhgB,IACFlC,EAAS,CACP,aAAckC,EACd,eAAgBkgB,GAAkBZ,GAAkBtf,CAAY,CACtE,GAEE4f,GAAgBY,CAAM,EACtB74C,GAAQw3C,GAAiBkB,CAAI,EAAG,0CAA0C,OAAOA,CAAI,CAAC,EAClF,CAAClB,GAAiBkB,CAAI,EACxB,OAAO,KAET,IAAIr6D,EAASq6D,EACb,OAAIr6D,GAAU,OAAOA,EAAO,MAAS,aACnCA,EAASqwB,EAAcA,EAAc,CAAA,EAAIrwB,CAAM,EAAG,CAAA,EAAI,CACpD,KAAMA,EAAO,KAAK83C,EAAO,aAAcA,EAAO,cAAc,CAClE,CAAK,GAEI5E,GAASlzC,EAAO,KAAM,OAAO,OAAOA,EAAO,IAAI,EAAGqwB,EAAcA,EAAc,CACnF,UAAWiqC,EACX,QAASC,EACT,MAAO3jC,EACP,YAAa52B,EAAO,KACpB,MAAO,MACP,OAAQ,MACR,KAAM,eACN,cAAe,MACnB,EAAK8xD,CAAS,EAAG,GAAI,CACjB,IAAK0I,CACT,CAAG,CAAC,CACJ,EACAJ,GAAS,YAAc,YACvBA,GAAS,iBAAmBD,GAC5BC,GAAS,iBAAmBH,GC3DrB,SAASQ,GAAgBhB,EAAc,CAC5C,IAAIiB,EAAwBlB,GAAuBC,CAAY,EAC7DkB,EAAyBtoC,GAAeqoC,EAAuB,CAAC,EAChE1gB,EAAe2gB,EAAuB,CAAC,EACvCT,EAAiBS,EAAuB,CAAC,EAC3C,OAAOC,GAAU,iBAAiB,CAChC,aAAc5gB,EACd,eAAgBkgB,CACpB,CAAG,CACH,CACO,SAASW,IAAkB,CAChC,IAAI/iB,EAAS8iB,GAAU,iBAAgB,EACvC,OAAK9iB,EAAO,WAGL,CAACA,EAAO,aAAcA,EAAO,cAAc,EAFzCA,EAAO,YAGlB,CCbA,IAAI+O,GAAY,CAAC,YAAa,OAAQ,OAAQ,SAAU,WAAY,UAAW,cAAc,EAU7F4T,GAAgB3mB,GAAK,OAAO,EAI5B,IAAIgnB,GAAoB5/C,EAAM,WAAW,SAAU3G,EAAOP,EAAK,CAC7D,IAAIsmD,EAAY/lD,EAAM,UACpB8lD,EAAO9lD,EAAM,KACbigD,EAAOjgD,EAAM,KACbwmD,EAASxmD,EAAM,OACfymD,EAAWzmD,EAAM,SACjBgmD,EAAUhmD,EAAM,QAChBklD,EAAellD,EAAM,aACrBu9C,EAAY38B,GAAyB5gB,EAAOsyC,EAAS,EACnDtqB,EAAoBrhB,EAAM,WAAWsF,EAAO,EAC9Cy6C,EAAwB1+B,EAAkB,UAC1C+jB,EAAY2a,IAA0B,OAAS,UAAYA,EAC3DC,EAAgB3+B,EAAkB,cAChC4+B,EAAcz6C,GAAWw6C,EAAe5a,EAAWh+B,EAAgBA,EAAgB,CAAA,EAAI,GAAG,OAAOg+B,EAAW,GAAG,EAAE,OAAO+Z,EAAK,IAAI,EAAG,CAAC,CAACA,EAAK,IAAI,EAAG,GAAG,OAAO/Z,EAAW,OAAO,EAAG,CAAC,CAACkU,GAAQ6F,EAAK,OAAS,SAAS,EAAGC,CAAS,EAC9Nc,EAAeJ,EACfI,IAAiB,QAAab,IAChCa,EAAe,IAEjB,IAAIC,EAAWN,EAAS,CACtB,YAAa,UAAU,OAAOA,EAAQ,MAAM,EAC5C,UAAW,UAAU,OAAOA,EAAQ,MAAM,CAC9C,EAAM,OACAL,EAAwBlB,GAAuBC,CAAY,EAC7DkB,EAAyBtoC,GAAeqoC,EAAuB,CAAC,EAChE1gB,EAAe2gB,EAAuB,CAAC,EACvCT,EAAiBS,EAAuB,CAAC,EAC3C,OAAoBz/C,EAAM,cAAc,OAAQ6F,GAAS,CACvD,KAAM,MACN,aAAcs5C,EAAK,IACvB,EAAKvI,EAAW,CACZ,IAAK99C,EACL,SAAUonD,EACV,QAASb,EACT,UAAWY,CACf,CAAG,EAAgBjgD,EAAM,cAAc0/C,GAAW,CAC9C,KAAMP,EACN,aAAcrgB,EACd,eAAgBkgB,EAChB,MAAOmB,CACX,CAAG,CAAC,CACJ,CAAC,EACDP,GAAK,YAAc,WACnBA,GAAK,gBAAkBD,GACvBC,GAAK,gBAAkBL,GCxDvB,IAAI5B,GAAoB,SAA2BtkD,EAAOP,EAAK,CAC7D,OAAoBkH,EAAM,cAAcogD,GAAUv6C,GAAS,CAAA,EAAIxM,EAAO,CACpE,IAAKP,EACL,KAAMunD,EACV,CAAG,CAAC,CACJ,EAGIC,GAAuBtgD,EAAM,WAAW29C,EAAiB,EACzD,QAAQ,IAAI,WAAa,eAC3B2C,GAAQ,YAAc,qBChBxB,IAAIC,GAAoB,CAAE,KAAQ,CAAE,IAAO,MAAO,MAAS,CAAE,YAAa,UAAW,QAAW,gBAAiB,UAAa,OAAO,EAAI,SAAY,CAAC,CAAE,IAAO,OAAQ,MAAS,CAAE,EAAK,isBAAksB,CAAE,CAAC,EAAI,KAAQ,eAAgB,MAAS,QAAQ,ECMr6BA,GAAoB,SAA2BlnD,EAAOP,EAAK,CAC7D,OAAoBkH,EAAM,cAAcogD,GAAUv6C,GAAS,CAAA,EAAIxM,EAAO,CACpE,IAAKP,EACL,KAAM0nD,EACV,CAAG,CAAC,CACJ,EAGIF,GAAuBtgD,EAAM,WAAWugD,EAAiB,EACzD,QAAQ,IAAI,WAAa,eAC3BD,GAAQ,YAAc,qBChBxB,IAAIG,GAAgB,CAAE,KAAQ,CAAE,IAAO,MAAO,MAAS,CAAE,YAAa,UAAW,QAAW,gBAAiB,UAAa,OAAO,EAAI,SAAY,CAAC,CAAE,IAAO,OAAQ,MAAS,CAAE,EAAK,4nBAA6nB,CAAE,CAAC,EAAI,KAAQ,QAAS,MAAS,UAAU,ECMv1BA,GAAgB,SAAuBpnD,EAAOP,EAAK,CACrD,OAAoBkH,EAAM,cAAcogD,GAAUv6C,GAAS,CAAA,EAAIxM,EAAO,CACpE,IAAKP,EACL,KAAM4nD,EACV,CAAG,CAAC,CACJ,EAGIJ,GAAuBtgD,EAAM,WAAWygD,EAAa,EACrD,QAAQ,IAAI,WAAa,eAC3BH,GAAQ,YAAc,iBChBxB,IAAIK,GAA0B,CAAE,KAAQ,CAAE,IAAO,MAAO,MAAS,CAAE,QAAW,gBAAiB,UAAa,OAAO,EAAI,SAAY,CAAC,CAAE,IAAO,OAAQ,MAAS,CAAE,EAAK,kOAAkO,EAAI,CAAC,EAAI,KAAQ,qBAAsB,MAAS,QAAQ,ECM3bA,GAA0B,SAAiCtnD,EAAOP,EAAK,CACzE,OAAoBkH,EAAM,cAAcogD,GAAUv6C,GAAS,CAAA,EAAIxM,EAAO,CACpE,IAAKP,EACL,KAAM8nD,EACV,CAAG,CAAC,CACJ,EAGIN,GAAuBtgD,EAAM,WAAW2gD,EAAuB,EAC/D,QAAQ,IAAI,WAAa,eAC3BL,GAAQ,YAAc,2BChBxB,IAAIO,GAAmB,CAAE,KAAQ,CAAE,IAAO,MAAO,MAAS,CAAE,QAAW,gBAAiB,UAAa,OAAO,EAAI,SAAY,CAAC,CAAE,IAAO,OAAQ,MAAS,CAAE,EAAK,kOAAkO,EAAI,CAAC,EAAI,KAAQ,cAAe,MAAS,QAAQ,ECM7aA,GAAmB,SAA0BxnD,EAAOP,EAAK,CAC3D,OAAoBkH,EAAM,cAAcogD,GAAUv6C,GAAS,CAAA,EAAIxM,EAAO,CACpE,IAAKP,EACL,KAAMgoD,EACV,CAAG,CAAC,CACJ,EAGIR,GAAuBtgD,EAAM,WAAW6gD,EAAgB,EACxD,QAAQ,IAAI,WAAa,eAC3BP,GAAQ,YAAc,oBChBxB,IAAIS,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sEACbC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8JACbC,GAAW,GAAG,OAAOF,GAAY,GAAG,EAAE,OAAOC,EAAU,EAAE,MAAM,SAAS,EAGxEE,GAAa,QACbC,GAAa,QACjB,SAAShxD,GAAM1M,EAAK8D,EAAQ,CAC1B,OAAO9D,EAAI,QAAQ8D,CAAM,IAAM,CACjC,CAMe,SAAS65D,GAAU/nD,EAAO,CACvC,IAAIgoD,EAAW,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC/EC,EACAD,IAAa,GACfC,EAAe,CACb,KAAM,GACN,KAAM,GACN,KAAM,EACZ,EACaD,IAAa,GACtBC,EAAe,CACb,KAAM,EACZ,EAEIA,EAAensC,EAAc,CAAA,EAAIksC,CAAQ,EAE3C,IAAI3iC,EAAQ,CAAA,EACZ,cAAO,KAAKrlB,CAAK,EAAE,QAAQ,SAAU5V,EAAK,EAGxC69D,EAAa,OAAS79D,IAAQ,QAAU0M,GAAM1M,EAAKy9D,EAAU,IAE7DI,EAAa,MAAQnxD,GAAM1M,EAAK09D,EAAU,GAE1CG,EAAa,MAAQL,GAAS,SAASx9D,CAAG,KACxCi7B,EAAMj7B,CAAG,EAAI4V,EAAM5V,CAAG,EAE1B,CAAC,EACMi7B,CACT,CC5CO,SAASxY,GAAWG,EAAO,CAChC,OAAOA,GAAsBrG,EAAM,eAAeqG,CAAK,GAAKA,EAAM,OAASrG,EAAM,QACnF,CACO,MAAMuhD,GAAiB,CAAC7zC,EAASgY,EAAarsB,IAChC2G,EAAM,eAAe0N,CAAO,EAG3B1N,EAAM,aAAa0N,EAAS,OAAOrU,GAAU,WAAaA,EAAMqU,EAAQ,OAAS,CAAA,CAAE,EAAIrU,CAAK,EAFvGqsB,EAIJ,SAAS87B,GAAa9zC,EAASrU,EAAO,CAC3C,OAAOkoD,GAAe7zC,EAASA,EAASrU,CAAK,CAC/C,CCTA,MAAMooD,GAAoB,CAACC,EAASC,EAAaC,EAAWtkC,EAAOukC,KAAc,CAC/E,WAAYH,EACZ,OAAQ,GAAGtjC,GAAKd,EAAM,SAAS,CAAC,IAAIA,EAAM,QAAQ,IAAIqkC,CAAW,GACjE,CAAC,GAAGE,CAAQ,OAAO,EAAG,CACpB,MAAOD,CACX,CACA,GACaE,GAAexkC,GAAS,CACnC,KAAM,CACJ,aAAA0pB,EACA,mBAAoB+a,EACpB,SAAAC,EACA,SAAAC,EACA,SAAA7mB,EACA,WAAAa,EACA,WAAAC,EACA,eAAgBnB,EAChB,oBAAAmnB,EACA,wBAAAC,EACA,UAAAC,EACA,iBAAAC,EACA,uBAAAC,EACA,eAAAC,CACJ,EAAMjlC,EACJ,MAAO,CACL,CAAC0pB,CAAY,EAAG,OAAO,OAAO,OAAO,OAAO,GAAIsC,GAAehsB,CAAK,CAAC,EAAG,CACtE,SAAU,WACV,QAAS,OACT,WAAY,SACZ,QAASilC,EACT,SAAU,aACV,aAAAxnB,EACA,CAAC,IAAIiM,CAAY,MAAM,EAAG,CACxB,UAAW,KACnB,EACM,CAAC,GAAGA,CAAY,UAAU,EAAG,CAC3B,KAAM,EACN,SAAU,CAClB,EACM,CAAC,GAAGA,CAAY,OAAO,EAAG,CACxB,gBAAiBgb,EACjB,WAAY,CACpB,EACM,gBAAiB,CACf,QAAS,OACT,SAAA5mB,EACA,WAAAc,CACR,EACM,YAAa,CACX,MAAOmmB,CACf,EACM,CAAC,IAAIrb,CAAY,eAAe,EAAG,CACjC,SAAU,SACV,QAAS,EACT,WAAY,cAAc+a,CAAQ,IAAIG,CAAmB,aAAaH,CAAQ,IAAIG,CAAmB;AAAA,sBACvFH,CAAQ,IAAIG,CAAmB,oBAAoBH,CAAQ,IAAIG,CAAmB;AAAA,wBAChFH,CAAQ,IAAIG,CAAmB,EACvD,EACM,CAAC,IAAIlb,CAAY,sBAAsB,EAAG,CACxC,UAAW,EACX,aAAc,eACd,WAAY,EACZ,cAAe,EACf,QAAS,CACjB,CACA,CAAK,EACD,CAAC,GAAGA,CAAY,mBAAmB,EAAG,CACpC,WAAY,aACZ,QAASsb,EACT,CAAC,GAAGtb,CAAY,OAAO,EAAG,CACxB,gBAAiBib,EACjB,SAAUE,EACV,WAAY,CACpB,EACM,CAAC,GAAGnb,CAAY,UAAU,EAAG,CAC3B,QAAS,QACT,aAAcgb,EACd,MAAOK,EACP,SAAUpmB,CAClB,EACM,CAAC,GAAG+K,CAAY,cAAc,EAAG,CAC/B,QAAS,QACT,MAAOob,CACf,CACA,EACI,CAAC,GAAGpb,CAAY,SAAS,EAAG,CAC1B,aAAc,EACd,OAAQ,eACR,aAAc,CACpB,CACA,CACA,EACawb,GAAellC,GAAS,CACnC,KAAM,CACJ,aAAA0pB,EACA,aAAAyb,EACA,mBAAAC,EACA,eAAAC,EACA,aAAAC,EACA,mBAAAC,EACA,eAAAC,EACA,WAAAC,EACA,iBAAAC,EACA,aAAAC,EACA,UAAAC,EACA,gBAAAC,EACA,YAAAC,CACJ,EAAM9lC,EACJ,MAAO,CACL,CAAC0pB,CAAY,EAAG,CACd,YAAaya,GAAkBkB,EAAgBD,EAAoBD,EAAcnlC,EAAO0pB,CAAY,EACpG,SAAUya,GAAkB2B,EAAaD,EAAiBD,EAAW5lC,EAAO0pB,CAAY,EACxF,YAAaya,GAAkBqB,EAAgBD,EAAoBD,EAActlC,EAAO0pB,CAAY,EACpG,UAAW,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIya,GAAkBwB,EAAcD,EAAkBD,EAAYzlC,EAAO0pB,CAAY,CAAC,EAAG,CAC9H,CAAC,GAAGA,CAAY,oBAAoB,EAAG,CACrC,OAAQ,EACR,QAAS,CACnB,CACA,CAAO,CACP,CACA,CACA,EACaqc,GAAiB/lC,GAAS,CACrC,KAAM,CACJ,aAAA0pB,EACA,QAAAsc,EACA,kBAAAC,EACA,SAAAvB,EACA,aAAAwB,EACA,UAAAC,EACA,eAAAC,CACJ,EAAMpmC,EACJ,MAAO,CACL,CAAC0pB,CAAY,EAAG,CACd,WAAY,CACV,kBAAmBgb,CAC3B,EACM,CAAC,GAAGhb,CAAY,aAAa,EAAG,CAC9B,kBAAmBgb,EACnB,QAAS,EACT,SAAU,SACV,SAAUwB,EACV,WAAYplC,GAAKolC,CAAY,EAC7B,gBAAiB,cACjB,OAAQ,OACR,QAAS,OACT,OAAQ,UACR,CAAC,GAAGF,CAAO,QAAQ,EAAG,CACpB,MAAOG,EACP,WAAY,SAASF,CAAiB,GACtC,UAAW,CACT,MAAOG,CACnB,CACA,CACA,EACM,eAAgB,CACd,MAAOD,EACP,WAAY,SAASF,CAAiB,GACtC,UAAW,CACT,MAAOG,CACjB,CACA,CACA,CACA,CACA,EASAC,GAAehf,GAAc,QAASrnB,GAAS,CAACwkC,GAAaxkC,CAAK,EAAGklC,GAAallC,CAAK,EAAG+lC,GAAe/lC,CAAK,CAAC,EAR1EA,IAE5B,CACL,wBAAyBA,EAAM,iBAC/B,eAAgB,GAAGA,EAAM,wBAAwB,UACjD,uBAAwB,GAAGA,EAAM,SAAS,MAAMA,EAAM,0BAA0B,IACpF,EAEuI,EC9KvI,IAAI6qB,GAAgC,SAAU/kD,EAAGe,EAAG,CAClD,IAAId,EAAI,CAAA,EACR,QAASe,KAAKhB,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGgB,CAAC,GAAKD,EAAE,QAAQC,CAAC,EAAI,IAAGf,EAAEe,CAAC,EAAIhB,EAAEgB,CAAC,GAC/F,GAAIhB,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WAAY,QAAS,EAAI,EAAGgB,EAAI,OAAO,sBAAsBhB,CAAC,EAAG,EAAIgB,EAAE,OAAQ,IAClID,EAAE,QAAQC,EAAE,CAAC,CAAC,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKhB,EAAGgB,EAAE,CAAC,CAAC,IAAGf,EAAEe,EAAE,CAAC,CAAC,EAAIhB,EAAEgB,EAAE,CAAC,CAAC,GAElG,OAAOf,CACT,EAeA,MAAMugE,GAAgB,CACpB,QAASjG,GACT,KAAMkD,GACN,MAAON,GACP,QAASI,EACX,EACMkD,GAAWxqD,GAAS,CACxB,KAAM,CACJ,KAAA8lD,EACA,UAAA/Z,EACA,KAAAp+C,CACJ,EAAMqS,EACEyqD,EAAWF,GAAc58D,CAAI,GAAK,KACxC,OAAIm4D,EACKoC,GAAepC,EAAmBn/C,EAAM,cAAc,OAAQ,CACnE,UAAW,GAAGolC,CAAS,OAC7B,EAAO+Z,CAAI,EAAG,KAAO,CACf,UAAW35C,GAAW,GAAG4/B,CAAS,QAAS+Z,EAAK,MAAM,SAAS,CACrE,EAAM,EAEgBn/C,EAAM,cAAc8jD,EAAU,CAChD,UAAW,GAAG1e,CAAS,OAC3B,CAAG,CACH,EACM2e,GAAgB1qD,GAAS,CAC7B,KAAM,CACJ,WAAA2qD,EACA,UAAA5e,EACA,UAAA6e,EACA,YAAAC,EACA,UAAAC,CACJ,EAAM9qD,EACE+qD,EAAkBH,IAAc,IAAQA,IAAc,OAAyBjkD,EAAM,cAAcygD,GAAe,IAAI,EAAIwD,EAChI,OAAOD,EAA2BhkD,EAAM,cAAc,SAAU,OAAO,OAAO,CAC5E,KAAM,SACN,QAASkkD,EACT,UAAW,GAAG9e,CAAS,cACvB,SAAU,CACd,EAAK+e,CAAS,EAAGC,CAAe,EAAK,IACrC,EACMC,GAAqBrkD,EAAM,WAAW,CAAC3G,EAAOP,IAAQ,CAC1D,KAAM,CACF,YAAAwrD,EACA,UAAW1mB,EACX,QAAAh9B,EACA,OAAA2jD,EACA,UAAAnF,EACA,cAAAY,EACA,MAAAtkC,EACA,aAAA8oC,EACA,aAAAC,EACA,QAAApF,EACA,WAAAqF,EACA,SAAAC,EACA,SAAAC,EACA,UAAAC,EACA,UAAAZ,EACA,OAAAhjD,EACA,GAAA4D,CACN,EAAQxL,EACJyrD,EAAa3c,GAAO9uC,EAAO,CAAC,cAAe,YAAa,UAAW,SAAU,YAAa,gBAAiB,QAAS,eAAgB,eAAgB,UAAW,aAAc,WAAY,WAAY,YAAa,YAAa,SAAU,IAAI,CAAC,EAC1O,CAAC0rD,EAAQC,CAAS,EAAIhlD,EAAM,SAAS,EAAK,EAC5C,QAAQ,IAAI,WAAa,cACX0xB,GAAc,OAAO,EAC7B,WAAW,CAACmzB,EAAW,YAAa,oBAAoB,EAElE,MAAMI,EAAcjlD,EAAM,OAAO,IAAI,EACrCA,EAAM,oBAAoBlH,EAAK,KAAO,CACpC,cAAemsD,EAAY,OAC/B,EAAI,EACF,KAAM,CACJ,aAAA9mB,EACA,UAAAC,EACA,SAAU8mB,EACV,UAAWC,EACX,UAAWC,EACX,MAAOC,CACX,EAAMrnB,GAAmB,OAAO,EACxBoH,EAAYjH,EAAa,QAASP,CAAkB,EACpD,CAAC8H,EAAY1mB,EAAQ2mB,CAAS,EAAIX,GAASI,CAAS,EACpD8e,EAAc//D,GAAK,CACvB,IAAI+C,GACJ89D,EAAU,EAAI,GACb99D,GAAKmS,EAAM,WAAa,MAAQnS,KAAO,QAAkBA,GAAG,KAAKmS,EAAOlV,CAAC,CAC5E,EACM6C,EAAOgZ,EAAM,QAAQ,IACrB3G,EAAM,OAAS,OACVA,EAAM,KAGRkrD,EAAS,UAAY,OAC3B,CAAClrD,EAAM,KAAMkrD,CAAM,CAAC,EAEjBP,EAAahkD,EAAM,QAAQ,IAC3B,OAAO4kD,GAAa,UAAYA,EAAS,WACzCC,EACK,GAEL,OAAOD,GAAa,UACfA,EAGLX,IAAc,IAASA,IAAc,MAAQA,IAAc,OACtD,GAEF,CAAC,CAACiB,EACR,CAACL,EAAWZ,EAAWW,EAAUM,CAAe,CAAC,EAE9CI,EAAaf,GAAUI,IAAa,OAAY,GAAOA,EACvD9C,EAAWr8C,GAAW4/B,EAAW,GAAGA,CAAS,IAAIp+C,CAAI,GAAI,CAC7D,CAAC,GAAGo+C,CAAS,mBAAmB,EAAG,CAAC,CAACkf,EACrC,CAAC,GAAGlf,CAAS,UAAU,EAAG,CAACkgB,EAC3B,CAAC,GAAGlgB,CAAS,SAAS,EAAG,CAAC,CAACmf,EAC3B,CAAC,GAAGnf,CAAS,MAAM,EAAGhH,IAAc,KACxC,EAAKgnB,EAAkBhG,EAAWY,EAAera,EAAW3mB,CAAM,EAC1D43B,EAAYwK,GAAU0D,EAAY,CACtC,KAAM,GACN,KAAM,EACV,CAAG,EACKV,EAAkBpkD,EAAM,QAAQ,IAChC,OAAO4kD,GAAa,UAAYA,EAAS,UACpCA,EAAS,UAEdC,IAGAZ,IAAc,OACTA,EAEL,OAAOiB,GAAoB,UAAYA,EAAgB,UAClDA,EAAgB,UAElBC,GACN,CAAClB,EAAWW,EAAUC,EAAWM,CAAgB,CAAC,EAC/CI,EAAkBvlD,EAAM,QAAQ,IAAM,CAC1C,MAAMgzB,EAAS4xB,GAAsDM,EACrE,GAAI,OAAOlyB,GAAW,SAAU,CAC9B,KAAM,CACF,UAAWyB,EACrB,EAAYzB,EAEN,OADcmV,GAAOnV,EAAQ,CAAC,WAAW,CAAC,CAE5C,CACA,MAAO,CAAA,CACT,EAAG,CAAC4xB,EAAUM,CAAe,CAAC,EAC9B,OAAOxf,EAAwB1lC,EAAM,cAAcwzC,GAAW,CAC5D,QAAS,CAACuR,EACV,WAAY,GAAG3f,CAAS,UACxB,aAAc,GACd,YAAa,GACb,aAAc39B,IAAS,CACrB,UAAWA,EAAK,YACtB,GACI,WAAYi9C,CAChB,EAAK,CAAC,CACF,UAAWc,EACX,MAAOC,EACX,EAAKC,KAAyB1lD,EAAM,cAAc,MAAO,OAAO,OAAO,CACnE,GAAI6E,EACJ,IAAKqH,GAAW+4C,EAAaS,EAAM,EACnC,YAAa,CAACX,EACd,UAAWv/C,GAAWq8C,EAAU2D,CAAe,EAC/C,MAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIH,CAAY,EAAG3pC,CAAK,EAAG+pC,EAAW,EACvF,aAAcjB,EACd,aAAcC,EACd,QAASpF,EACT,KAAM,OACV,EAAKzI,CAAS,EAAG0O,EAA2BtlD,EAAM,cAAc6jD,GAAU,CACtE,YAAaS,EACb,KAAMjrD,EAAM,KACZ,UAAW+rC,EACX,KAAMp+C,CACV,CAAG,EAAK,KAAmBgZ,EAAM,cAAc,MAAO,CAClD,UAAW,GAAGolC,CAAS,UAC3B,EAAKxkC,EAAuBZ,EAAM,cAAc,MAAO,CACnD,UAAW,GAAGolC,CAAS,UAC3B,EAAKxkC,CAAO,EAAI,KAAM0jD,EAA2BtkD,EAAM,cAAc,MAAO,CACxE,UAAW,GAAGolC,CAAS,cAC3B,EAAKkf,CAAW,EAAI,IAAI,EAAGrjD,EAAsBjB,EAAM,cAAc,MAAO,CACxE,UAAW,GAAGolC,CAAS,SAC3B,EAAKnkC,CAAM,EAAI,KAAmBjB,EAAM,cAAc+jD,GAAe,CACjE,WAAYC,EACZ,UAAW5e,EACX,UAAWgf,EACX,YAAaF,EACb,UAAWqB,CACf,CAAG,CAAC,CAAE,CAAC,CACP,CAAC,EACG,QAAQ,IAAI,WAAa,eAC3BlB,GAAM,YAAc,SClNtB,SAASsB,GAAWtiE,EAAGgG,EAAGlF,EAAG,CAC3B,OAAOkF,EAAIkqB,GAAelqB,CAAC,EAAGmqB,GAA0BnwB,EAAGiwB,GAAwB,EAAK,QAAQ,UAAUjqB,EAAGlF,GAAK,CAAA,EAAIovB,GAAelwB,CAAC,EAAE,WAAW,EAAIgG,EAAE,MAAMhG,EAAGc,CAAC,CAAC,CACtK,CCGA,IAAIyhE,GAA6B,SAAUlyC,EAAkB,CAC3D,SAASkyC,GAAgB,CACvB,IAAI5zC,EACJU,OAAAA,GAAgB,KAAMkzC,CAAa,EACnC5zC,EAAQ2zC,GAAW,KAAMC,EAAe,SAAS,EACjD5zC,EAAM,MAAQ,CACZ,MAAO,OACP,KAAM,CACJ,eAAgB,EACxB,CACA,EACWA,CACT,CACAc,OAAAA,GAAU8yC,EAAelyC,CAAgB,EAClCd,GAAagzC,EAAe,CAAC,CAClC,IAAK,oBACL,MAAO,SAA2B/yD,EAAOg2B,EAAM,CAC7C,KAAK,SAAS,CACZ,MAAAh2B,EACA,KAAAg2B,CACR,CAAO,CACH,CACJ,EAAK,CACD,IAAK,SACL,MAAO,UAAkB,CACvB,KAAM,CACJ,QAAAjoB,EACA,YAAA0jD,EACA,GAAAz/C,EACA,SAAAuB,CACR,EAAU,KAAK,MACH,CACJ,MAAAvT,EACA,KAAAg2B,CACR,EAAU,KAAK,MACHg9B,GAAkBh9B,GAAS,KAA0B,OAASA,EAAK,iBAAmB,KACtFi9B,EAAe,OAAOllD,EAAY,KAAe/N,GAAS,IAAI,SAAQ,EAAK+N,EAC3EmlD,EAAmB,OAAOzB,EAAgB,IAAcuB,EAAiBvB,EAC/E,OAAIzxD,EACkBmN,EAAM,cAAcqkD,GAAO,CAC7C,GAAIx/C,EACJ,KAAM,QACN,QAASihD,EACT,YAA0B9lD,EAAM,cAAc,MAAO,CACnD,MAAO,CACL,SAAU,QACV,UAAW,MACzB,CACA,EAAa+lD,CAAgB,CAC7B,CAAS,EAEI3/C,CACT,CACJ,CAAG,CAAC,CACJ,EAAEpG,EAAM,SAAS,EC1DjB,MAAMqkD,GAAQ2B,GACd3B,GAAM,cAAgBuB,GCCtB,MAAMK,GAAe7gB,GAAa,CAChC,KAAM,CAAA,CAAA,CAAA,CAAA,CAAM5lB,CAAM,EAAI8kB,GAAQ,EAC9B,OAAO9kB,EAAS,GAAG4lB,CAAS,WAAa,EAC3C,ECHA,IAAI8gB,GAAU,CAQZ,UAAW,EAIX,IAAK,EASL,MAAO,GAIP,MAAO,GAIP,KAAM,GAIN,IAAK,GAQL,UAAW,GAIX,IAAK,GAIL,MAAO,GAIP,QAAS,GAKT,UAAW,GAKX,IAAK,GAKL,KAAM,GAKN,KAAM,GAKN,GAAI,GAKJ,MAAO,GAKP,KAAM,GAcN,OAAQ,GAsGR,EAAG,GAQH,EAAG,GA4CH,KAAM,GAKN,cAAe,GAIf,aAAc,GAgEd,GAAI,IAIJ,GAAI,IAIJ,GAAI,IAIJ,GAAI,IAIJ,GAAI,IAIJ,GAAI,IAIJ,GAAI,IAIJ,GAAI,IAIJ,GAAI,IAIJ,IAAK,IAIL,IAAK,IAIL,IAAK,IAQL,UAAW,IAUX,OAAQ,IA6CR,QAAS,GA8FX,ECvhBIC,GAAkB,CAAE,KAAQ,CAAE,IAAO,MAAO,MAAS,CAAE,QAAW,gBAAiB,UAAa,OAAO,EAAI,SAAY,CAAC,CAAE,IAAO,OAAQ,MAAS,CAAE,EAAK,6TAA6T,EAAI,CAAC,EAAI,KAAQ,UAAW,MAAS,UAAU,ECMrgBA,GAAkB,SAAyB9sD,EAAOP,EAAK,CACzD,OAAoBkH,EAAM,cAAcogD,GAAUv6C,GAAS,CAAA,EAAIxM,EAAO,CACpE,IAAKP,EACL,KAAMstD,EACV,CAAG,CAAC,CACJ,EAGI9F,GAAuBtgD,EAAM,WAAWmmD,EAAe,EACvD,QAAQ,IAAI,WAAa,eAC3B7F,GAAQ,YAAc,mBChBxB,MAAM+F,GAA6BrmD,EAAM,cAAc,MAAS,EAC5D,QAAQ,IAAI,WAAa,eAC3BqmD,GAAc,YAAc,iBCK9B,MAAMC,GAAmB,IAEZC,GAAuBD,GADD,GAO7BE,GAAqCD,GAAuBD,GACrDG,GAA4B,CACvC,MAAOH,GACP,OAAQA,GACR,QAASA,GACT,WAAYA,GACZ,QAASA,GACT,KAAMA,GACN,YAAaA,EACf,EACaI,GAA2B,CACtC,WAAY,GACZ,SAAU,GACV,WAAY,GACZ,KAAM,GACN,aAAc,CAChB,EACA,SAASC,GAAgB3/D,EAAM,CAC7B,OAAOA,KAAQy/D,EACjB,CACO,MAAMG,GAAY,CAACC,EAAeC,IAAiB,CACxD,KAAM,CAAA,CAAGxpC,CAAK,EAAIgnB,GAAQ,EACpByiB,EAAe/mD,EAAM,WAAWqmD,EAAa,EAC7CW,EAAcL,GAAgBE,CAAa,EACjD,IAAIt+D,EACJ,GAAIu+D,IAAiB,OACnBv+D,EAAS,CAACu+D,EAAcA,CAAY,MAC/B,CACL,IAAIG,EAASF,GAAkE,EAC3EC,EACFC,IAECF,EAAe,EAAIzpC,EAAM,iBAE1BmpC,GAA0BI,CAAa,EAEvCI,GAAUP,GAAyBG,CAAa,EAElDt+D,EAAS,CAACw+D,IAAiB,OAAYD,EAAeG,EAAQA,CAAM,CACtE,CACA,GAAI,QAAQ,IAAI,WAAa,aAAc,CACzC,MAAMxgD,EAAUirB,GAAcm1B,CAAa,EACrCK,EAAY5pC,EAAM,gBAAkBkpC,GACpCW,EAAgB5+D,EAAO,CAAC,GAAK,EACnC,QAAQ,IAAI,WAAa,cAAeke,EAAQqgD,IAAiB,QAAaK,GAAiBD,EAAW,QAAS,6FAA6F,CAClN,CACA,OAAO3+D,CACT,EC7De,SAAS6+D,IAAkB,CACxC,KAAM,CAACC,EAAUC,CAAW,EAAItnD,EAAM,SAAS,CAAA,CAAE,EAC3CunD,EAAevnD,EAAM,YAAY0N,IAErC45C,EAAYE,GAAkB,CAAA,EAAG,OAAOzxC,GAAmByxC,CAAc,EAAG,CAAC95C,CAAO,CAAC,CAAC,EAG/E,IAAM,CACX45C,EAAYE,GAAkBA,EAAe,OAAOv6C,GAAOA,IAAQS,CAAO,CAAC,CAC7E,GACC,CAAA,CAAE,EACL,MAAO,CAAC25C,EAAUE,CAAY,CAChC,CCdA,SAASE,GAAe,EAAGxpD,EAAG,CAC5B,KAAK,EAAI,EAAG,KAAK,EAAIA,CACvB,CCFA,SAASypD,GAAmB,EAAGxhE,EAAG,EAAG7C,EAAG,CACtC,IAAI,EAAI,OAAO,eACf,GAAI,CACF,EAAE,CAAA,EAAI,GAAI,EAAE,CACd,MAAY,CACV,EAAI,CACN,CACAqkE,GAAqB,SAA2BvjE,EAAG+B,EAAG2N,EAAGxQ,EAAG,CAC1D,GAAI6C,EAAG,EAAI,EAAE/B,EAAG+B,EAAG,CACjB,MAAO2N,EACP,WAAY,CAACxQ,EACb,aAAc,CAACA,EACf,SAAU,CAACA,CACjB,CAAK,EAAIc,EAAE+B,CAAC,EAAI2N,MAAO,CACjB,IAAIxK,EAAI,SAAWnD,EAAG2N,EAAG,CACvB6zD,GAAmBvjE,EAAG+B,EAAG,SAAU/B,EAAG,CACpC,OAAO,KAAK,QAAQ+B,EAAG2N,EAAG1P,CAAC,CAC7B,CAAC,CACH,EACAkF,EAAE,OAAQ,CAAC,EAAGA,EAAE,QAAS,CAAC,EAAGA,EAAE,SAAU,CAAC,CAC5C,CACF,EAAGq+D,GAAmB,EAAGxhE,EAAG,EAAG7C,CAAC,CAClC,CCrBA,SAASskE,IAAe,CACxB,kKACE,IAAI,EACF,EACAzhE,EAAkB,OAAO,QAArB,WAA8B,OAAS,CAAA,EAC3C2N,EAAI3N,EAAE,UAAY,aAClBmD,EAAInD,EAAE,aAAe,gBACvB,SAASM,EAAEN,EAAG2N,EAAGxK,EAAG7C,EAAG,CACrB,IAAIP,EAAI4N,GAAKA,EAAE,qBAAqB+zD,EAAY/zD,EAAI+zD,EAClD1/C,EAAI,OAAO,OAAOjiB,EAAE,SAAS,EAC/B,OAAO4hE,GAAkB3/C,EAAG,UAAW,SAAUhiB,EAAG2N,EAAGxK,EAAG,CACxD,IAAI7C,EACFP,EACAiiB,EACA5X,EAAI,EACJlM,EAAIiF,GAAK,CAAA,EACTgoB,EAAI,GACJgkB,EAAI,CACF,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAGp3B,EACH,EAAGA,EAAE,KAAK,EAAG,CAAC,EACd,EAAG,SAAW5a,EAAG6C,EAAG,CAClB,OAAOM,EAAInD,EAAG4C,EAAI,EAAGiiB,EAAI,EAAGmtB,EAAE,EAAInvC,EAAG,CACvC,CACV,EACM,SAAS+X,EAAE/X,EAAG2N,EAAG,CACf,IAAK5N,EAAIC,EAAGgiB,EAAIrU,EAAG,EAAI,EAAG,CAACwd,GAAK/gB,GAAK,CAACjH,GAAK,EAAIjF,EAAE,OAAQ,IAAK,CAC5D,IAAIiF,EACF7C,EAAIpC,EAAE,CAAC,EACP6Z,EAAIo3B,EAAE,EACN3pC,EAAIlF,EAAE,CAAC,EACTN,EAAI,GAAKmD,EAAIqC,IAAMmI,KAAOqU,EAAI1hB,GAAGP,EAAIO,EAAE,CAAC,GAAK,GAAKP,EAAI,EAAG,EAAE,EAAGO,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAI,GAAKA,EAAE,CAAC,GAAKyX,KAAO5U,EAAInD,EAAI,GAAK+X,EAAIzX,EAAE,CAAC,IAAMP,EAAI,EAAGovC,EAAE,EAAIxhC,EAAGwhC,EAAE,EAAI7uC,EAAE,CAAC,GAAKyX,EAAIvS,IAAMrC,EAAInD,EAAI,GAAKM,EAAE,CAAC,EAAIqN,GAAKA,EAAInI,KAAOlF,EAAE,CAAC,EAAIN,EAAGM,EAAE,CAAC,EAAIqN,EAAGwhC,EAAE,EAAI3pC,EAAGzF,EAAI,GACzO,CACA,GAAIoD,GAAKnD,EAAI,EAAG,OAAO,EACvB,MAAMmrB,EAAI,GAAIxd,CAChB,CACA,OAAO,SAAUxK,EAAGjF,EAAGsH,EAAG,CACxB,GAAI4E,EAAI,EAAG,MAAM,UAAU,8BAA8B,EACzD,IAAK+gB,GAAWjtB,IAAN,GAAW6Z,EAAE7Z,EAAGsH,CAAC,EAAGzF,EAAI7B,EAAG8jB,EAAIxc,GAAI,EAAIzF,EAAI,EAAI,EAAIiiB,IAAM,CAACmJ,GAAI,CACtE7qB,IAAMP,EAAIA,EAAI,GAAKA,EAAI,IAAMovC,EAAE,EAAI,IAAKp3B,EAAEhY,EAAGiiB,CAAC,GAAKmtB,EAAE,EAAIntB,EAAImtB,EAAE,EAAIntB,GACnE,GAAI,CACF,GAAI5X,EAAI,EAAG9J,EAAG,CACZ,GAAIP,IAAMoD,EAAI,QAAS,EAAI7C,EAAE6C,CAAC,EAAG,CAC/B,GAAI,EAAE,EAAI,EAAE,KAAK7C,EAAG0hB,CAAC,GAAI,MAAM,UAAU,kCAAkC,EAC3E,GAAI,CAAC,EAAE,KAAM,OAAO,EACpBA,EAAI,EAAE,MAAOjiB,EAAI,IAAMA,EAAI,EAC7B,MAAaA,IAAN,IAAY,EAAIO,EAAE,SAAc,EAAE,KAAKA,CAAC,EAAGP,EAAI,IAAMiiB,EAAI,UAAU,oCAAsC7e,EAAI,UAAU,EAAGpD,EAAI,GACrIO,EAAI,CACN,UAAY,GAAK6qB,EAAIgkB,EAAE,EAAI,GAAKntB,EAAIhiB,EAAE,KAAK2N,EAAGwhC,CAAC,KAAO,EAAG,KAC3D,OAAShyC,EAAG,CACVmD,EAAI,EAAGP,EAAI,EAAGiiB,EAAI7kB,CACpB,QAAC,CACCiN,EAAI,CACN,CACF,CACA,MAAO,CACL,MAAO,EACP,KAAM+gB,CAChB,CACM,CACF,EAAEnrB,EAAGmD,EAAG7C,CAAC,EAAG,EAAE,EAAG0hB,CACnB,CACA,IAAI,EAAI,CAAA,EACR,SAAS0/C,GAAY,CAAC,CACtB,SAASE,GAAoB,CAAC,CAC9B,SAASC,GAA6B,CAAC,CACvC,EAAI,OAAO,eACX,IAAI,EAAI,CAAA,EAAGl0D,CAAC,EAAI,EAAE,EAAE,CAAA,EAAGA,CAAC,EAAC,CAAE,CAAC,GAAKg0D,GAAkB,EAAI,CAAA,EAAIh0D,EAAG,UAAY,CACtE,OAAO,IACT,CAAC,EAAG,GACJqU,EAAI6/C,EAA2B,UAAYH,EAAU,UAAY,OAAO,OAAO,CAAC,EAClF,SAAS,EAAEzjE,EAAG,CACZ,OAAO,OAAO,eAAiB,OAAO,eAAeA,EAAG4jE,CAA0B,GAAK5jE,EAAE,UAAY4jE,EAA4BF,GAAkB1jE,EAAGkF,EAAG,mBAAmB,GAAIlF,EAAE,UAAY,OAAO,OAAO+jB,CAAC,EAAG/jB,CAClN,CACA,OAAO2jE,EAAkB,UAAYC,EAA4BF,GAAkB3/C,EAAG,cAAe6/C,CAA0B,EAAGF,GAAkBE,EAA4B,cAAeD,CAAiB,EAAGA,EAAkB,YAAc,oBAAqBD,GAAkBE,EAA4B1+D,EAAG,mBAAmB,EAAGw+D,GAAkB3/C,CAAC,EAAG2/C,GAAkB3/C,EAAG7e,EAAG,WAAW,EAAGw+D,GAAkB3/C,EAAGrU,EAAG,UAAY,CAC7a,OAAO,IACT,CAAC,EAAGg0D,GAAkB3/C,EAAG,WAAY,UAAY,CAC/C,MAAO,oBACT,CAAC,GAAIy/C,GAAe,UAAwB,CAC1C,MAAO,CACL,EAAGnhE,EACH,EAAG,CACT,CACE,GAAC,CACH,CCrFA,SAASwhE,GAAc3kE,EAAGc,EAAG,CAC3B,SAAS,EAAE+B,EAAG,EAAGM,EAAG8J,EAAG,CACrB,GAAI,CACF,IAAIrK,EAAI5C,EAAE6C,CAAC,EAAE,CAAC,EACZ,EAAID,EAAE,MACR,OAAO,aAAagiE,GAAgB9jE,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,SAAUd,EAAG,CACnE,EAAE,OAAQA,EAAGmD,EAAG8J,CAAC,CACnB,EAAG,SAAUjN,EAAG,CACd,EAAE,QAASA,EAAGmD,EAAG8J,CAAC,CACpB,CAAC,EAAInM,EAAE,QAAQ,CAAC,EAAE,KAAK,SAAUd,EAAG,CAClC4C,EAAE,MAAQ5C,EAAGmD,EAAEP,CAAC,CAClB,EAAG,SAAU5C,EAAG,CACd,OAAO,EAAE,QAASA,EAAGmD,EAAG8J,CAAC,CAC3B,CAAC,CACH,OAASjN,EAAG,CACViN,EAAEjN,CAAC,CACL,CACF,CACA,IAAI,EACJ,KAAK,OAASwkE,GAAkBG,GAAc,SAAS,EAAGH,GAAkBG,GAAc,UAAyB,OAAO,QAArB,YAA+B,OAAO,eAAiB,iBAAkB,UAAY,CACxL,OAAO,IACT,CAAC,GAAIH,GAAkB,KAAM,UAAW,SAAUxkE,EAAG,EAAGmD,EAAG,CACzD,SAAS8J,GAAI,CACX,OAAO,IAAInM,EAAE,SAAUA,EAAG+B,EAAG,CAC3B,EAAE7C,EAAGmD,EAAGrC,EAAG+B,CAAC,CACd,CAAC,CACH,CACA,OAAO,EAAI,EAAI,EAAE,KAAKoK,EAAGA,CAAC,EAAIA,EAAC,CACjC,EAAG,EAAE,CACP,CC7BA,SAAS43D,GAAqBhiE,EAAG/B,EAAGd,EAAGgG,EAAGwK,EAAG,CAC3C,OAAO,IAAIs0D,GAAyBC,GAAW,EAAG,EAAEliE,EAAG/B,EAAGd,EAAGgG,CAAC,EAAGwK,GAAK,OAAO,CAC/E,CCHA,SAASw0D,GAAkBx0D,EAAG1P,EAAG+B,EAAG7C,EAAGgG,EAAG,CACxC,IAAIlG,EAAImlE,GAAoBz0D,EAAG1P,EAAG+B,EAAG7C,EAAGgG,CAAC,EACzC,OAAOlG,EAAE,KAAI,EAAG,KAAK,SAAU0Q,EAAG,CAChC,OAAOA,EAAE,KAAOA,EAAE,MAAQ1Q,EAAE,KAAI,CAClC,CAAC,CACH,CCNA,SAASolE,GAAiB,EAAG,CAC3B,IAAI10D,EAAI,OAAO,CAAC,EACd3N,EAAI,CAAA,EACN,QAAS7C,KAAKwQ,EAAG3N,EAAE,QAAQ7C,CAAC,EAC5B,OAAO,SAASc,GAAI,CAClB,KAAO+B,EAAE,QAAS,IAAK7C,EAAI6C,EAAE,IAAG,KAAO2N,EAAG,OAAO1P,EAAE,MAAQd,EAAGc,EAAE,KAAO,GAAIA,EAC3E,OAAOA,EAAE,KAAO,GAAIA,CACtB,CACF,CCPA,SAASqkE,GAAmB,EAAG,CAC7B,GAAY,GAAR,KAAW,CACb,IAAI,EAAI,EAAgB,OAAO,QAArB,YAA+B,OAAO,UAAY,YAAY,EACtEtiE,EAAI,EACN,GAAI,EAAG,OAAO,EAAE,KAAK,CAAC,EACtB,GAAkB,OAAO,EAAE,MAAvB,WAA6B,OAAO,EACxC,GAAI,CAAC,MAAM,EAAE,MAAM,EAAG,MAAO,CAC3B,KAAM,UAAgB,CACpB,OAAO,GAAKA,GAAK,EAAE,SAAW,EAAI,QAAS,CACzC,MAAO,GAAK,EAAEA,GAAG,EACjB,KAAM,CAAC,CACjB,CACM,CACN,CACE,CACA,MAAM,IAAI,UAAU4f,GAAQ,CAAC,EAAI,kBAAkB,CACrD,CCVA,SAAS2iD,IAAsB,CAG7B,IAAIviE,EAAIkiE,GAAW,EACjBjkE,EAAI+B,EAAE,EAAEuiE,EAAmB,EAC3BplE,GAAK,OAAO,eAAiB,OAAO,eAAec,CAAC,EAAIA,EAAE,WAAW,YACvE,SAAS0P,EAAE3N,EAAG,CACZ,IAAI/B,EAAkB,OAAO+B,GAArB,YAA0BA,EAAE,YACpC,MAAO,CAAC,CAAC/B,IAAMA,IAAMd,IAA8Bc,EAAE,aAAeA,EAAE,QAA5C,oBAC5B,CACA,IAAIkF,EAAI,CACN,MAAS,EACT,OAAU,EACV,MAAS,EACT,SAAY,CAChB,EACE,SAASlG,EAAE+C,EAAG,CACZ,IAAI/B,EAAGd,EACP,OAAO,SAAUwQ,EAAG,CAClB1P,IAAMA,EAAI,CACR,KAAM,UAAgB,CACpB,OAAOd,EAAEwQ,EAAE,EAAG,CAAC,CACjB,EACA,MAAS,UAAkB,CACzB,OAAOA,EAAE,CACX,EACA,OAAQ,SAAgB3N,EAAG/B,EAAG,CAC5B,OAAOd,EAAEwQ,EAAE,EAAGxK,EAAEnD,CAAC,EAAG/B,CAAC,CACvB,EACA,cAAe,SAAuB+B,EAAGmD,EAAGlG,EAAG,CAC7C,OAAOgB,EAAE,WAAakF,EAAGhG,EAAEwQ,EAAE,EAAG60D,GAAkBxiE,CAAC,EAAG/C,CAAC,CACzD,EACA,OAAQ,SAAgB+C,EAAG,CACzB,OAAO7C,EAAEwQ,EAAE,EAAG3N,CAAC,CACjB,CACR,EAAS7C,EAAI,SAAW6C,EAAGyiE,EAAIt/D,EAAG,CAC1BwK,EAAE,EAAI1P,EAAE,KAAM0P,EAAE,EAAI1P,EAAE,KACtB,GAAI,CACF,OAAO+B,EAAEyiE,EAAIt/D,CAAC,CAChB,QAAC,CACClF,EAAE,KAAO0P,EAAE,CACb,CACF,GAAI1P,EAAE,aAAeA,EAAEA,EAAE,UAAU,EAAI0P,EAAE,EAAG1P,EAAE,WAAa,QAASA,EAAE,KAAO0P,EAAE,EAAG1P,EAAE,KAAO0P,EAAE,EAC7F,GAAI,CACF,OAAO3N,EAAE,KAAK,KAAM/B,CAAC,CACvB,QAAC,CACC0P,EAAE,EAAI1P,EAAE,KAAM0P,EAAE,EAAI1P,EAAE,IACxB,CACF,CACF,CACA,OAAQskE,GAAsB,UAA+B,CAC3D,MAAO,CACL,KAAM,SAActkE,EAAGd,EAAGwQ,EAAGxK,EAAG,CAC9B,OAAOnD,EAAE,EAAE/C,EAAEgB,CAAC,EAAGd,EAAGwQ,EAAGxK,GAAKA,EAAE,SAAS,CACzC,EACA,oBAAqBwK,EACrB,KAAM3N,EAAE,EACR,MAAO,SAAeA,EAAG/B,EAAG,CAC1B,OAAO,IAAI8jE,GAAc/hE,EAAG/B,CAAC,CAC/B,EACA,cAAegkE,GACf,MAAO,SAAejiE,EAAG/B,EAAGd,EAAGgG,EAAG6e,EAAG,CACnC,OAAQrU,EAAE1P,CAAC,EAAImkE,GAAsBM,IAAkBzlE,EAAE+C,CAAC,EAAG/B,EAAGd,EAAGgG,EAAG6e,CAAC,CACzE,EACA,KAAM2gD,GACN,OAAQH,EACd,CACE,GAAC,CACH,CC3EA,SAASI,GAAmBj1D,EAAG,EAAG1P,EAAG,EAAGkF,EAAGlG,EAAG8C,EAAG,CAC/C,GAAI,CACF,IAAIO,EAAIqN,EAAE1Q,CAAC,EAAE8C,CAAC,EACZiiB,EAAI1hB,EAAE,KACV,OAASqN,EAAG,CACV,OAAO,KAAK1P,EAAE0P,CAAC,CACjB,CACArN,EAAE,KAAO,EAAE0hB,CAAC,EAAI,QAAQ,QAAQA,CAAC,EAAE,KAAK,EAAG7e,CAAC,CAC9C,CACA,SAAS0/D,GAAkBl1D,EAAG,CAC5B,OAAO,UAAY,CACjB,IAAI,EAAI,KACN1P,EAAI,UACN,OAAO,IAAI,QAAQ,SAAU,EAAGkF,EAAG,CACjC,IAAIlG,EAAI0Q,EAAE,MAAM,EAAG1P,CAAC,EACpB,SAAS6kE,EAAMn1D,EAAG,CAChBi1D,GAAmB3lE,EAAG,EAAGkG,EAAG2/D,EAAOC,EAAQ,OAAQp1D,CAAC,CACtD,CACA,SAASo1D,EAAOp1D,EAAG,CACjBi1D,GAAmB3lE,EAAG,EAAGkG,EAAG2/D,EAAOC,EAAQ,QAASp1D,CAAC,CACvD,CACAm1D,EAAM,MAAM,CACd,CAAC,CACH,CACF,CClBA,IAAIlpC,GAAY3K,EAAc,CAAA,EAAIrN,EAAQ,EACtCkE,GAAU8T,GAAU,QACtBopC,GAAcppC,GAAU,OACxBqpC,GAAyBrpC,GAAU,uBACjCspC,GACJ,GAAI,CACF,IAAIC,GAAc,QAAQr9C,IAAW,IAAI,MAAM,GAAG,EAAE,CAAC,CAAC,EAClDq9C,IAAe,KACjBD,GAAatpC,GAAU,WAE3B,MAAY,CAEZ,CACA,SAASwpC,GAAcC,EAAM,CAC3B,IAAIC,EAAqD1pC,GAAU,mDAC/D0pC,GAAsD1jD,GAAQ0jD,CAAkD,IAAM,WACxHA,EAAmD,sBAAwBD,EAE/E,CACA,IAAIE,GAAO,oBAIX,SAASC,GAAajiD,EAAM8Q,EAAW,CACrC+wC,GAAc,EAAI,EAClB,IAAI3xC,EAAOY,EAAUkxC,EAAI,GAAKL,GAAW7wC,CAAS,EAClD+wC,GAAc,EAAK,EACnB3xC,EAAK,OAAOlQ,CAAI,EAChB8Q,EAAUkxC,EAAI,EAAI9xC,CACpB,CACA,SAASgyC,GAAaliD,EAAM8Q,EAAW,CACrC2wC,IAAgB,MAAkCA,GAAYzhD,EAAM8Q,CAAS,CAC/E,CAQO,SAASqxC,GAAOniD,EAAM8Q,EAAW,CACtC,GAAI6wC,GAAY,CACdM,GAAajiD,EAAM8Q,CAAS,EAC5B,MACF,CACAoxC,GAAaliD,EAAM8Q,CAAS,CAC9B,CAGA,SAASsxC,GAAcC,EAAI,CACzB,OAAOC,GAAe,MAAM,KAAM,SAAS,CAC7C,CACA,SAASA,IAAiB,CACxB,OAAAA,GAAiBhB,GAAgCN,GAAmB,EAAG,KAAK,SAASuB,EAAQzxC,EAAW,CACtG,OAAOkwC,GAAmB,EAAG,KAAK,SAAkBwB,EAAU,CAC5D,OAAU,OAAQA,EAAS,KAAOA,EAAS,KAAI,CAC7C,IAAK,GACH,OAAOA,EAAS,OAAO,SAAU,QAAQ,QAAO,EAAG,KAAK,UAAY,CAClE,IAAIC,GACHA,EAAkB3xC,EAAUkxC,EAAI,KAAO,MAAQS,IAAoB,QAAUA,EAAgB,QAAO,EACrG,OAAO3xC,EAAUkxC,EAAI,CACvB,CAAC,CAAC,EACJ,IAAK,GACL,IAAK,MACH,OAAOQ,EAAS,KAAI,CAC9B,CACI,EAAGD,CAAO,CACZ,CAAC,CAAC,EACKD,GAAe,MAAM,KAAM,SAAS,CAC7C,CACA,SAASI,GAAc5xC,EAAW,CAChC4wC,GAAuB5wC,CAAS,CAClC,CAQO,SAAS6xC,GAAQC,EAAK,CAC3B,OAAOC,GAAS,MAAM,KAAM,SAAS,CACvC,CACA,SAASA,IAAW,CAClB,OAAAA,GAAWvB,GAAgCN,GAAmB,EAAG,KAAK,SAAS8B,EAAShyC,EAAW,CACjG,OAAOkwC,GAAmB,EAAG,KAAK,SAAmB+B,EAAW,CAC9D,OAAU,OAAQA,EAAU,KAAOA,EAAU,KAAI,CAC/C,IAAK,GACH,GAAMpB,KAAe,OAAY,CAC/BoB,EAAU,KAAO,EACjB,KACF,CACA,OAAOA,EAAU,OAAO,SAAUX,GAActxC,CAAS,CAAC,EAC5D,IAAK,GACH4xC,GAAc5xC,CAAS,EACzB,IAAK,GACL,IAAK,MACH,OAAOiyC,EAAU,KAAI,CAC/B,CACI,EAAGD,CAAQ,CACb,CAAC,CAAC,EACKD,GAAS,MAAM,KAAM,SAAS,CACvC,CCzFA,IAAIG,GAbuB,CAAChjD,EAAM8Q,IAAc,CAG9C,GAAI,QAAQ,IAAI,WAAa,aAAc,CACzC,MAAMmyC,EAAe,SAAS1qD,EAAM,QAAQ,MAAM,GAAG,EAAE,CAAC,EAAG,EAAE,EACvD2qD,EAAW,OAAO,KAAK7iD,EAAQ,EACrC,QAAQ,IAAI,WAAa,cAAerB,GAAQikD,EAAe,IAAMC,EAAS,SAAS,YAAY,EAAG,aAAc,sFAAsF,CAC5M,CACA,OAAAf,GAAOniD,EAAM8Q,CAAS,EACf,IACE6xC,GAAQ7xC,CAAS,CAE5B,EAOO,SAASqyC,GAAkBhB,EAAQ,CAIxC,OAAOa,EACT,CCGA,MAAM3c,GAAoB,CAACvH,EAAe+Q,EAAQvJ,IAC5CA,IAAmB,OACdA,EAEF,GAAGxH,CAAa,IAAI+Q,CAAM,GCrCpB,SAASuT,GAAKpoE,EAAKqoE,EAAQ,CACxC,IAAIj0D,EAAQ,OAAO,OAAO,CAAA,EAAIpU,CAAG,EACjC,OAAI,MAAM,QAAQqoE,CAAM,GACtBA,EAAO,QAAQ,SAAUrnE,EAAK,CAC5B,OAAOoT,EAAMpT,CAAG,CAClB,CAAC,EAEIoT,CACT,CCRA,MAAAk0D,GAAgB,SAAUr9C,EAAS,CACjC,GAAI,CAACA,EACH,MAAO,GAET,GAAIA,aAAmB,QAAS,CAC9B,GAAIA,EAAQ,aACV,MAAO,GAET,GAAIA,EAAQ,QAAS,CACnB,IAAIs9C,EAAWt9C,EAAQ,QAAO,EAC5BkD,EAAQo6C,EAAS,MACjBn6C,EAASm6C,EAAS,OACpB,GAAIp6C,GAASC,EACX,MAAO,EAEX,CACA,GAAInD,EAAQ,sBAAuB,CACjC,IAAIu9C,EAAwBv9C,EAAQ,sBAAqB,EACvDw9C,EAASD,EAAsB,MAC/BE,EAAUF,EAAsB,OAClC,GAAIC,GAAUC,EACZ,MAAO,EAEX,CACF,CACA,MAAO,EACT,ECzBMC,GAAe9tC,GAAS,CAC5B,KAAM,CACJ,aAAA0pB,EACA,aAAAqkB,CACJ,EAAM/tC,EACJ,MAAO,CACL,CAAC0pB,CAAY,EAAG,CACd,SAAU,WACV,WAAY,cACZ,cAAe,OACf,UAAW,aACX,MAAO,qBAAqBqkB,CAAY,IACxC,UAAW,uBACX,QAAS,GAET,uBAAwB,CACtB,WAAY,CAAC,mBAAmB/tC,EAAM,iBAAiB,GAAI,cAAcA,EAAM,iBAAiB,EAAE,EAAE,KAAK,GAAG,EAC5G,WAAY,CACV,UAAW,yBACX,QAAS,CACnB,EACQ,eAAgB,CACd,WAAY,CAAC,cAAcA,EAAM,kBAAkB,IAAIA,EAAM,eAAe,GAAI,WAAWA,EAAM,kBAAkB,IAAIA,EAAM,eAAe,EAAE,EAAE,KAAK,GAAG,CAClK,CACA,CACA,CACA,CACA,EACAguC,GAAermB,GAAsB,OAAQ3nB,GAAS,CAAC8tC,GAAa9tC,CAAK,CAAC,CAAC,EC5B9DiuC,GAAa,GAAGhuB,EAAgB,eCDtC,SAASiuB,GAAiB/1B,EAAO,CACtC,OAAOA,GAASA,IAAU,QAAUA,IAAU,WAAaA,IAAU,sBAAwBA,IAAU,0BAA4B,CAAC,wBAAwB,KAAKA,CAAK,GAEtKA,IAAU,aACZ,CACO,SAASg2B,GAAmBhkD,EAAM,CACvC,KAAM,CACJ,eAAAikD,EACA,YAAA/J,EACA,gBAAAja,CACJ,EAAM,iBAAiBjgC,CAAI,EACzB,OAAI+jD,GAAiBE,CAAc,EAC1BA,EAELF,GAAiB7J,CAAW,EACvBA,EAEL6J,GAAiB9jB,CAAe,EAC3BA,EAEF,IACT,CCXA,SAASikB,GAAY/mE,EAAO,CAC1B,OAAO,OAAO,MAAMA,CAAK,EAAI,EAAIA,CACnC,CACA,MAAMgnE,GAAavyD,GAAS,CAC1B,KAAM,CACJ,UAAA+lD,EACA,OAAAt6D,EACA,UAAAysC,EACA,gBAAAs6B,CACJ,EAAMxyD,EACEyyD,EAAS9rD,EAAM,OAAO,IAAI,EAE1B+rD,EAAa/rD,EAAM,OAAO,IAAI,EACpCA,EAAM,UAAU,IAAM,CACpB+rD,EAAW,QAAUF,EAAe,CACtC,EAAG,CAAA,CAAE,EAEL,KAAM,CAACp2B,EAAOu2B,CAAY,EAAIhsD,EAAM,SAAS,IAAI,EAC3C,CAAC+6B,EAAckxB,CAAe,EAAIjsD,EAAM,SAAS,CAAA,CAAE,EACnD,CAACgc,EAAMkwC,CAAO,EAAIlsD,EAAM,SAAS,CAAC,EAClC,CAACmsD,EAAKC,CAAM,EAAIpsD,EAAM,SAAS,CAAC,EAChC,CAAC4Q,EAAOy7C,CAAQ,EAAIrsD,EAAM,SAAS,CAAC,EACpC,CAAC6Q,EAAQy7C,CAAS,EAAItsD,EAAM,SAAS,CAAC,EACtC,CAACusD,EAASC,CAAU,EAAIxsD,EAAM,SAAS,EAAK,EAC5CysD,EAAY,CAChB,KAAAzwC,EACA,IAAAmwC,EACA,MAAAv7C,EACA,OAAAC,EACA,aAAckqB,EAAa,IAAI2xB,GAAU,GAAGA,CAAM,IAAI,EAAE,KAAK,GAAG,CACpE,EACMj3B,IACFg3B,EAAU,cAAc,EAAIh3B,GAE9B,SAASk3B,GAAU,CACjB,MAAMC,EAAY,iBAAiB9nE,CAAM,EAEzCknE,EAAaP,GAAmB3mE,CAAM,CAAC,EACvC,MAAM+nE,EAAWD,EAAU,WAAa,SAElC,CACJ,gBAAAE,EACA,eAAAC,CACN,EAAQH,EACJV,EAAQW,EAAW/nE,EAAO,WAAa6mE,GAAY,CAAC,WAAWmB,CAAe,CAAC,CAAC,EAChFV,EAAOS,EAAW/nE,EAAO,UAAY6mE,GAAY,CAAC,WAAWoB,CAAc,CAAC,CAAC,EAC7EV,EAASvnE,EAAO,WAAW,EAC3BwnE,EAAUxnE,EAAO,YAAY,EAE7B,KAAM,CACJ,oBAAAkoE,EACA,qBAAAC,EACA,uBAAAC,EACA,wBAAAC,CACN,EAAQP,EACJX,EAAgB,CAACe,EAAqBC,EAAsBE,EAAyBD,CAAsB,EAAE,IAAIR,GAAUf,GAAY,WAAWe,CAAM,CAAC,CAAC,CAAC,CAC7J,CAqBA,GApBA1sD,EAAM,UAAU,IAAM,CACpB,GAAIlb,EAAQ,CAGV,MAAM+f,EAAKuR,GAAI,IAAM,CACnBu2C,EAAO,EACPH,EAAW,EAAI,CACjB,CAAC,EAED,IAAIj6C,EACJ,OAAI,OAAO,eAAmB,MAC5BA,EAAiB,IAAI,eAAeo6C,CAAO,EAC3Cp6C,EAAe,QAAQztB,CAAM,GAExB,IAAM,CACXsxB,GAAI,OAAOvR,CAAE,EACb0N,GAAmB,MAA6CA,EAAe,WAAU,CAC3F,CACF,CACF,EAAG,CAAA,CAAE,EACD,CAACg6C,EACH,OAAO,KAET,MAAMa,GAAoB77B,IAAc,YAAcA,IAAc,WAAazsC,GAAW,KAA4B,OAASA,EAAO,UAAU,SAASymE,EAAU,GACrK,OAAoBvrD,EAAM,cAAcwzC,GAAW,CACjD,QAAS,GACT,aAAc,GACd,WAAY,cACZ,eAAgB,IAChB,YAAa,CAAC/e,EAAG3sC,IAAU,CACzB,IAAIZ,EAAID,EACR,GAAIa,EAAM,UAAYA,EAAM,eAAiB,UAAW,CACtD,MAAMulE,GAAUnmE,EAAK4kE,EAAO,WAAa,MAAQ5kE,IAAO,OAAS,OAASA,EAAG,eAC5ED,EAAK8kE,EAAW,WAAa,MAAQ9kE,IAAO,QAAkBA,EAAG,KAAK8kE,CAAU,EAAE,KAAK,IAAM,CAC5FsB,GAAW,MAAqCA,EAAO,OAAM,CAC/D,CAAC,CACH,CACA,MAAO,EACT,CACJ,EAAK,CAAC,CACF,UAAW7H,CACf,EAAK1sD,IAAsBkH,EAAM,cAAc,MAAO,CAClD,IAAKkM,GAAW4/C,EAAQhzD,CAAG,EAC3B,UAAW0M,GAAW45C,EAAWoG,EAAiB,CAChD,aAAc4H,CACpB,CAAK,EACD,MAAOX,CACX,CAAG,CAAE,CACL,EACMa,GAAiB,CAACxoE,EAAQ+jC,IAAS,CACvC,IAAI3hC,EACJ,KAAM,CACJ,UAAAqqC,CACJ,EAAM1I,EAEJ,GAAI0I,IAAc,YAAc,EAAG,GAAArqC,EAAKpC,EAAO,cAAc,OAAO,KAAO,MAAQoC,IAAO,SAAkBA,EAAG,SAC7G,OAGF,MAAMmmE,EAAS,SAAS,cAAc,KAAK,EAC3CA,EAAO,MAAM,SAAW,WACxBA,EAAO,MAAM,KAAO,MACpBA,EAAO,MAAM,IAAM,MACnBvoE,GAAW,MAAqCA,EAAO,aAAauoE,EAAQvoE,GAAW,KAA4B,OAASA,EAAO,UAAU,EAC7I,MAAMokE,EAAc0B,GAAiB,EACrC,IAAI2C,EAAkB,KACtB,SAAS1B,GAAkB,CACzB,OAAO0B,CACT,CACAA,EAAkBrE,EAAyBlpD,EAAM,cAAc4rD,GAAY,OAAO,OAAO,CAAA,EAAI/iC,EAAM,CACjG,OAAQ/jC,EACR,gBAAiB+mE,CACrB,CAAG,CAAC,EAAGwB,CAAM,CACb,ECrIMG,GAAU,CAACxZ,EAASoL,EAAW7tB,IAAc,CACjD,KAAM,CACJ,KAAAyqB,CACJ,EAAMh8C,EAAM,WAAW69B,EAAa,EAC5B,EAAGvgB,EAAO0B,CAAM,EAAIslB,GAAQ,EAC5BmpB,EAAWhtB,GAAS34C,GAAS,CACjC,MAAM2f,EAAOusC,EAAQ,QACrB,GAAKgI,GAAS,MAAmCA,EAAK,UAAa,CAACv0C,EAClE,OAEF,MAAMimD,EAAajmD,EAAK,cAAc,IAAI8jD,EAAU,EAAE,GAAK9jD,EACrD,CACJ,WAAAkmD,CACN,EAAQ3R,GAAQ,CAAA,GAEX2R,GAAcL,IAAgBI,EAAY,CACzC,UAAAtO,EACA,MAAA9hC,EACA,UAAAiU,EACA,MAAAzpC,EACA,OAAAk3B,CACN,CAAK,CACH,CAAC,EACK4uC,EAAQ5tD,EAAM,OAAO,IAAI,EAQ/B,OANyBlY,GAAS,CAChCsuB,GAAI,OAAOw3C,EAAM,OAAO,EACxBA,EAAM,QAAUx3C,GAAI,IAAM,CACxBq3C,EAAS3lE,CAAK,CAChB,CAAC,CACH,CAEF,EC/BM+lE,GAAOx0D,GAAS,CACpB,KAAM,CACJ,SAAA+M,EACA,SAAAyN,EACA,UAAA0d,CACJ,EAAMl4B,EACE,CACJ,aAAA8kC,CACJ,EAAM1kC,EAAAA,WAAWokC,EAAa,EACtBiwB,EAAe/0D,EAAAA,OAAO,IAAI,EAE1BqsC,EAAYjH,EAAa,MAAM,EAC/B,EAAGnf,CAAM,EAAIgmB,GAASI,CAAS,EAE/BqoB,EAAWD,GAAQM,EAActoD,GAAW4/B,EAAWpmB,CAAM,EAAGuS,CAAS,EAwB/E,GAtBAvxB,EAAM,UAAU,IAAM,CACpB,MAAMyH,EAAOqmD,EAAa,QAC1B,GAAI,CAACrmD,GAAQA,EAAK,WAAa,GAAKoM,EAClC,OAGF,MAAMwrC,EAAUl7D,GAAK,CAEf,CAAC4mE,GAAU5mE,EAAE,MAAM,GAEvB,CAACsjB,EAAK,cAAgBA,EAAK,aAAa,UAAU,GAAKA,EAAK,UAAYA,EAAK,UAAU,SAAS,UAAU,GAAKA,EAAK,UAAU,SAAS,QAAQ,GAG/IgmD,EAAStpE,CAAC,CACZ,EAEA,OAAAsjB,EAAK,iBAAiB,QAAS43C,EAAS,EAAI,EACrC,IAAM,CACX53C,EAAK,oBAAoB,QAAS43C,EAAS,EAAI,CACjD,CACF,EAAG,CAACxrC,CAAQ,CAAC,EAET,CAAe7T,EAAM,eAAeoG,CAAQ,EAC9C,OAAOA,GAAsD,KAE/D,MAAMtN,EAAM4T,GAAWtG,CAAQ,EAAI8F,GAAWc,GAAW5G,CAAQ,EAAG0nD,CAAY,EAAIA,EACpF,OAAOtM,GAAap7C,EAAU,CAC5B,IAAAtN,CACJ,CAAG,CACH,EACI,QAAQ,IAAI,WAAa,eAC3B+0D,GAAK,YAAc,QCrDrB,MAAME,GAAUC,GAAc,CAC5B,MAAMvgD,EAAOzN,EAAM,WAAWo/B,EAAW,EAazC,OAZmBp/B,EAAM,QAAQ,IAC1BguD,EAGD,OAAOA,GAAe,SACjBA,GAA4DvgD,EAEjE,OAAOugD,GAAe,WACjBA,EAAWvgD,CAAI,EAEjBA,EAREA,EASR,CAACugD,EAAYvgD,CAAI,CAAC,CAEvB,ECjBMwgD,GAAuB3wC,GAAS,CACpC,KAAM,CACJ,aAAA0pB,CACJ,EAAM1pB,EACJ,MAAO,CACL,CAAC0pB,CAAY,EAAG,CACd,UAAW,CACT,QAAS,OACT,MAAO,MACf,EACM,aAAc,CACZ,cAAe,QACvB,CACA,CACA,CACA,ECbMknB,GAAgB5wC,GAAS,CAC7B,KAAM,CACJ,aAAA0pB,EACA,OAAAmnB,CACJ,EAAM7wC,EACJ,MAAO,CACL,CAAC0pB,CAAY,EAAG,CACd,QAAS,cACT,QAAS,CACP,UAAW,KACnB,EACM,aAAc,CACZ,cAAe,QACvB,EACM,UAAW,CACT,cAAe,SACf,WAAY,CACV,WAAY,QACtB,EACQ,UAAW,CACT,WAAY,YACtB,EACQ,QAAS,CACP,WAAY,UACtB,EACQ,aAAc,CACZ,WAAY,UACtB,CACA,EACM,CAAC,GAAGA,CAAY,aAAa,EAAG,CAC9B,QAAS,MACjB,EAEM,CAAC,GAAGA,CAAY,WAAWmnB,CAAM,iCAAiC,EAAG,CACnE,QAAS,OACjB,CACA,CACA,CACA,EACMC,GAAmB9wC,GAAS,CAChC,KAAM,CACJ,aAAA0pB,CACJ,EAAM1pB,EACJ,MAAO,CACL,CAAC0pB,CAAY,EAAG,CACd,kBAAmB,CACjB,OAAQ1pB,EAAM,iBACtB,EACM,mBAAoB,CAClB,OAAQA,EAAM,kBACtB,EACM,kBAAmB,CACjB,OAAQA,EAAM,iBACtB,EACM,kBAAmB,CACjB,UAAWA,EAAM,iBACzB,EACM,mBAAoB,CAClB,UAAWA,EAAM,kBACzB,EACM,kBAAmB,CACjB,UAAWA,EAAM,iBACzB,CACA,CACA,CACA,EAGA+wC,GAAe1pB,GAAc,QAASrnB,GAAS,CAC7C,MAAMgxC,EAAa/qB,GAAWjmB,EAAO,CACnC,kBAAmBA,EAAM,UACzB,mBAAoBA,EAAM,QAC1B,kBAAmBA,EAAM,SAC7B,CAAG,EACD,MAAO,CAAC4wC,GAAcI,CAAU,EAAGF,GAAiBE,CAAU,EAAGL,GAAqBK,CAAU,CAAC,CACnG,EAAG,KAAO,CAAA,GAAK,CAGb,WAAY,EACd,CAAC,EC/ED,IAAInmB,GAAgC,SAAU/kD,EAAGe,EAAG,CAClD,IAAId,EAAI,CAAA,EACR,QAASe,KAAKhB,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGgB,CAAC,GAAKD,EAAE,QAAQC,CAAC,EAAI,IAAGf,EAAEe,CAAC,EAAIhB,EAAEgB,CAAC,GAC/F,GAAIhB,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WAAY,QAAS,EAAI,EAAGgB,EAAI,OAAO,sBAAsBhB,CAAC,EAAG,EAAIgB,EAAE,OAAQ,IAClID,EAAE,QAAQC,EAAE,CAAC,CAAC,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKhB,EAAGgB,EAAE,CAAC,CAAC,IAAGf,EAAEe,EAAE,CAAC,CAAC,EAAIhB,EAAEgB,EAAE,CAAC,CAAC,GAElG,OAAOf,CACT,EAOO,MAAMkrE,GAAuCvuD,EAAM,cAAc,IAAI,EAC/DwuD,GAAwB,CAACppB,EAAWhH,IAAc,CAC7D,MAAMqwB,EAAqBzuD,EAAM,WAAWuuD,EAAuB,EAC7DG,EAAwB1uD,EAAM,QAAQ,IAAM,CAChD,GAAI,CAACyuD,EACH,MAAO,GAET,KAAM,CACJ,iBAAAE,EACA,YAAAC,EACA,WAAAC,CACN,EAAQJ,EACEK,EAAYH,IAAqB,WAAa,aAAe,IACnE,OAAOnpD,GAAW,GAAG4/B,CAAS,WAAW0pB,CAAS,OAAQ,CACxD,CAAC,GAAG1pB,CAAS,WAAW0pB,CAAS,YAAY,EAAGF,EAChD,CAAC,GAAGxpB,CAAS,WAAW0pB,CAAS,WAAW,EAAGD,EAC/C,CAAC,GAAGzpB,CAAS,WAAW0pB,CAAS,UAAU,EAAG1wB,IAAc,KAClE,CAAK,CACH,EAAG,CAACgH,EAAWhH,EAAWqwB,CAAkB,CAAC,EAC7C,MAAO,CACL,YAAaA,GAAuB,KAAwC,OAASA,EAAmB,YACxG,iBAAkBA,GAAuB,KAAwC,OAASA,EAAmB,iBAC7G,sBAAAC,CACJ,CACA,EACaK,GAAiB11D,GAAS,CACrC,KAAM,CACJ,SAAA+M,CACJ,EAAM/M,EACJ,OAAoB2G,EAAM,cAAcuuD,GAAwB,SAAU,CACxE,MAAO,IACX,EAAKnoD,CAAQ,CACb,EACM4oD,GAAc31D,GAAS,CAC3B,KAAM,CACF,SAAA+M,CACN,EAAQ/M,EACJ41D,EAAS9mB,GAAO9uC,EAAO,CAAC,UAAU,CAAC,EACrC,OAAoB2G,EAAM,cAAcuuD,GAAwB,SAAU,CACxE,MAAOvuD,EAAM,QAAQ,IAAMivD,EAAQ,CAACA,CAAM,CAAC,CAC/C,EAAK7oD,CAAQ,CACb,EACM8oD,GAAU71D,GAAS,CACvB,KAAM,CACJ,aAAA8kC,EACA,UAAWgxB,CACf,EAAMnvD,EAAM,WAAW69B,EAAa,EAC5B,CACF,KAAApwB,EACA,UAAA2wB,EACA,MAAAgxB,EACA,UAAWxxB,EACX,UAAAwhB,EACA,cAAAY,EACA,SAAA55C,CACN,EAAQ/M,EACJu9C,EAAYzO,GAAO9uC,EAAO,CAAC,OAAQ,YAAa,QAAS,YAAa,YAAa,gBAAiB,UAAU,CAAC,EAC3Gg2D,EAAatB,GAAQ7/C,GAAOT,GAA0CS,CAAG,EACzEk3B,EAAYjH,EAAa,gBAAiBP,CAAkB,EAC5D,CAAC8H,EAAY1mB,CAAM,EAAIgmB,GAASI,CAAS,EACzCkqB,EAAM9pD,GAAW4/B,EAAWpmB,EAAQ,CACxC,CAAC,GAAGomB,CAAS,MAAM,EAAG+pB,IAAoB,MAC1C,CAAC,GAAG/pB,CAAS,QAAQ,EAAGgqB,EACxB,CAAC,GAAGhqB,CAAS,WAAW,EAAGhH,IAAc,UAC7C,EAAKghB,EAAWY,CAAa,EACrByO,EAAqBzuD,EAAM,WAAWuuD,EAAuB,EAC7Dh5C,EAAapP,GAAQC,CAAQ,EAC7BmpD,EAAQvvD,EAAM,QAAQ,IAAMuV,EAAW,IAAI,CAAClP,EAAO7f,IAAM,CAC7D,MAAM/C,GAAO4iB,GAAU,KAA2B,OAASA,EAAM,MAAQ,GAAG++B,CAAS,SAAS5+C,CAAC,GAC/F,OAAoBwZ,EAAM,cAAcgvD,GAAa,CACnD,IAAKvrE,EACL,YAAa4rE,EACb,iBAAkBjxB,EAClB,YAAa53C,IAAM,IAAM,CAACioE,IAAuBA,GAAuB,KAAwC,OAASA,EAAmB,cAC5I,WAAYjoE,IAAM+uB,EAAW,OAAS,IAAM,CAACk5C,IAAuBA,GAAuB,KAAwC,OAASA,EAAmB,YACrK,EAAOpoD,CAAK,CACV,CAAC,EAAG,CAACoH,EAAM8H,EAAYk5C,CAAkB,CAAC,EAE1C,OAAIl5C,EAAW,SAAW,EACjB,KAEFmwB,EAAwB1lC,EAAM,cAAc,MAAO,OAAO,OAAO,CACtE,UAAWsvD,CACf,EAAK1Y,CAAS,EAAG2Y,CAAK,CAAC,CACvB,EClGA,IAAIpnB,GAAgC,SAAU/kD,EAAGe,EAAG,CAClD,IAAId,EAAI,CAAA,EACR,QAASe,KAAKhB,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGgB,CAAC,GAAKD,EAAE,QAAQC,CAAC,EAAI,IAAGf,EAAEe,CAAC,EAAIhB,EAAEgB,CAAC,GAC/F,GAAIhB,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WAAY,QAAS,EAAI,EAAGgB,EAAI,OAAO,sBAAsBhB,CAAC,EAAG,EAAIgB,EAAE,OAAQ,IAClID,EAAE,QAAQC,EAAE,CAAC,CAAC,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKhB,EAAGgB,EAAE,CAAC,CAAC,IAAGf,EAAEe,EAAE,CAAC,CAAC,EAAIhB,EAAEgB,EAAE,CAAC,CAAC,GAElG,OAAOf,CACT,EAMO,MAAMmsE,GAAgCxvD,EAAM,cAAc,MAAS,EACpEyvD,GAAcp2D,GAAS,CAC3B,KAAM,CACJ,aAAA8kC,EACA,UAAAC,CACJ,EAAMp+B,EAAM,WAAW69B,EAAa,EAC5B,CACF,UAAWD,EACX,KAAAnwB,EACA,UAAA2xC,CACN,EAAQ/lD,EACJ41D,EAAS9mB,GAAO9uC,EAAO,CAAC,YAAa,OAAQ,WAAW,CAAC,EACrD+rC,EAAYjH,EAAa,YAAaP,CAAkB,EACxD,CAAA,CAAA,CAAI5e,CAAM,EAAIslB,GAAQ,EACtBorB,EAAU1vD,EAAM,QAAQ,IAAM,CAClC,OAAQyN,EAAI,CACV,IAAK,QACH,MAAO,KACT,IAAK,QACH,MAAO,KACT,QACE,MAAO,EACf,CACE,EAAG,CAACA,CAAI,CAAC,EACT,GAAI,QAAQ,IAAI,WAAa,aAAc,CACzC,MAAMhH,EAAUirB,GAAc,cAAc,EAC5CjrB,EAAQ,WAAW,GAAO,eAAgB,eAAe,EACzD,QAAQ,IAAI,WAAa,cAAeA,EAAQ,CAACgH,GAAQ,CAAC,QAAS,QAAS,QAAQ,EAAE,SAASA,CAAI,EAAG,QAAS,sBAAsB,CACvI,CACA,MAAMhI,EAAUD,GAAW4/B,EAAW,CACpC,CAAC,GAAGA,CAAS,IAAIsqB,CAAO,EAAE,EAAGA,EAC7B,CAAC,GAAGtqB,CAAS,MAAM,EAAGhH,IAAc,KACxC,EAAKghB,EAAWpgC,CAAM,EACpB,OAAoBhf,EAAM,cAAcwvD,GAAiB,SAAU,CACjE,MAAO/hD,CACX,EAAkBzN,EAAM,cAAc,MAAO,OAAO,OAAO,CAAA,EAAIivD,EAAQ,CACnE,UAAWxpD,CACf,CAAG,CAAC,CAAC,CACL,EC/CMkqD,GAAc,uBACPC,GAAcD,GAAY,KAAK,KAAKA,EAAW,EACrD,SAASE,GAAmB7oE,EAAM,CACvC,OAAIA,IAAS,SACJ,CACL,OAAQ,EACd,EAES,CACL,KAAAA,CACJ,CACA,CACO,SAASxE,GAAS2C,EAAK,CAC5B,OAAO,OAAOA,GAAQ,QACxB,CACO,SAAS2qE,GAA0B9oE,EAAM,CAC9C,OAAOA,IAAS,QAAUA,IAAS,MACrC,CACA,SAAS+oE,GAAoB1pD,EAAO2pD,EAAc,CAChD,GAAI3pD,GAAU,KACZ,OAEF,MAAM4pD,EAAQD,EAAe,IAAM,GACnC,OAAI,OAAO3pD,GAAU,UAAY,OAAOA,GAAU,UAAY7jB,GAAS6jB,EAAM,IAAI,GAAKupD,GAAYvpD,EAAM,MAAM,QAAQ,EAC7Gm7C,GAAan7C,EAAO,CACzB,SAAUA,EAAM,MAAM,SAAS,MAAM,EAAE,EAAE,KAAK4pD,CAAK,CACzD,CAAK,EAECztE,GAAS6jB,CAAK,EACTupD,GAAYvpD,CAAK,EAAiBrG,EAAM,cAAc,OAAQ,KAAMqG,EAAM,MAAM,EAAE,EAAE,KAAK4pD,CAAK,CAAC,EAAiBjwD,EAAM,cAAc,OAAQ,KAAMqG,CAAK,EAE5JH,GAAWG,CAAK,EACErG,EAAM,cAAc,OAAQ,KAAMqG,CAAK,EAEtDA,CACT,CACO,SAAS6pD,GAAc9pD,EAAU4pD,EAAc,CACpD,IAAIG,EAAkB,GACtB,MAAMC,EAAY,CAAA,EAClBpwD,OAAAA,EAAM,SAAS,QAAQoG,EAAUC,GAAS,CACxC,MAAMrf,EAAO,OAAOqf,EACdgqD,EAAqBrpE,IAAS,UAAYA,IAAS,SACzD,GAAImpE,GAAmBE,EAAoB,CACzC,MAAM59D,EAAY29D,EAAU,OAAS,EAC/BE,EAAYF,EAAU39D,CAAS,EACrC29D,EAAU39D,CAAS,EAAI,GAAG69D,CAAS,GAAGjqD,CAAK,EAC7C,MACE+pD,EAAU,KAAK/pD,CAAK,EAEtB8pD,EAAkBE,CACpB,CAAC,EACMrwD,EAAM,SAAS,IAAIowD,EAAW/pD,GAAS0pD,GAAoB1pD,EAAO2pD,CAAY,CAAC,CACxF,CAKiC,CAAC,UAAW,UAAW,QAAQ,EAAE,OAAOj6C,GAAmBuxB,EAAY,CAAC,EC3DzG,MAAMipB,GAA2BC,EAAAA,WAAW,CAACn3D,EAAOP,IAAQ,CAC1D,KAAM,CACJ,UAAAsmD,EACA,MAAA1jC,EACA,SAAAtV,EACA,UAAAg/B,CACJ,EAAM/rC,EACEo3D,EAAiBjrD,GAAW,GAAG4/B,CAAS,QAASga,CAAS,EAChE,OAAoBp/C,EAAM,cAAc,OAAQ,CAC9C,IAAKlH,EACL,UAAW23D,EACX,MAAO/0C,CACX,EAAKtV,CAAQ,CACb,CAAC,ECVKsqD,GAAgCF,EAAAA,WAAW,CAACn3D,EAAOP,IAAQ,CAC/D,KAAM,CACJ,UAAAssC,EACA,UAAAga,EACA,MAAA1jC,EACA,cAAAi1C,CACJ,EAAMt3D,EACEu3D,EAAgBprD,GAAW,GAAG4/B,CAAS,gBAAiBga,CAAS,EACvE,OAAoBp/C,EAAM,cAAcuwD,GAAa,CACnD,UAAWnrB,EACX,UAAWwrB,EACX,MAAOl1C,EACP,IAAK5iB,CACT,EAAkBkH,EAAM,cAAcmmD,GAAiB,CACnD,UAAWwK,CACf,CAAG,CAAC,CACJ,CAAC,EACKE,GAAoB,KAAO,CAC/B,MAAO,EACP,QAAS,EACT,UAAW,UACb,GACMC,GAAerpD,IAAS,CAC5B,MAAOA,EAAK,YACZ,QAAS,EACT,UAAW,UACb,GACMspD,GAAqB13D,GAAS,CAClC,KAAM,CACJ,UAAA+rC,EACA,QAAA4rB,EACA,UAAAC,EACA,UAAA7R,EACA,MAAA1jC,EACA,MAAAw1C,CACJ,EAAM73D,EACEy2C,EAAU,CAAC,CAACkhB,EAClB,OAAIC,EACkBjxD,EAAM,cAAc0wD,GAAkB,CACxD,UAAWtrB,EACX,UAAWga,EACX,MAAO1jC,CACb,CAAK,EAEiB1b,EAAM,cAAcwzC,GAAW,CACjD,QAAS1D,EAET,WAAY,GAAG1K,CAAS,uBACxB,aAAc,CAAC8rB,EACf,YAAa,CAACA,EACd,YAAa,CAACA,EACd,cAAe,GACf,cAAeL,GACf,eAAgBC,GAChB,aAAcD,GACd,cAAeC,GACf,aAAcA,GACd,cAAeD,EACnB,EAAK,CAAC,CACF,UAAWjc,EACX,MAAO6Q,CACX,EAAK3sD,IAAQ,CACT,MAAMmzB,EAAc,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIvQ,CAAK,EAAG+pC,CAAW,EACvE,OAAoBzlD,EAAM,cAAc0wD,GAAkB,CACxD,UAAWtrB,EACX,UAAW5/B,GAAW45C,EAAWxK,CAAS,EAC1C,MAAO3oB,EACP,IAAKnzB,CACX,CAAK,CACH,CAAC,CACH,EC7EMq4D,GAAuB,CAACC,EAAezP,KAAiB,CAE5D,CAAC,aAAayP,CAAa,EAAE,EAAG,CAC9B,qBAAsB,CACpB,CAAC,UAAUA,CAAa,EAAE,EAAG,CAC3B,mBAAoB,CAClB,qBAAsBzP,CAChC,CACA,CACA,EACI,sBAAuB,CACrB,CAAC,UAAUyP,CAAa,EAAE,EAAG,CAC3B,mBAAoB,CAClB,uBAAwBzP,CAClC,CACA,CACA,CACA,CACA,GACM0P,GAAgB/zC,GAAS,CAC7B,KAAM,CACJ,aAAA0pB,EACA,SAAA5L,EACA,UAAAJ,EACA,iBAAAs2B,EACA,gBAAAC,CACJ,EAAMj0C,EACJ,MAAO,CACL,CAAC,GAAG0pB,CAAY,QAAQ,EAAG,CAAC,CAC1B,SAAU,WACV,QAAS,cAET,CAAC,aAAaA,CAAY,EAAE,EAAG,CAC7B,qBAAsB,CACpB,CAAC,UAAUA,CAAY,EAAE,EAAG,CAC1B,qBAAsB,EACtB,mBAAoB,CAChC,CACA,EACQ,sBAAuB,CACrB,kBAAmB1pB,EAAM,KAAK0d,CAAS,EAAE,IAAI,EAAE,EAAE,MAAK,EACtD,CAAC,UAAUgM,CAAY,EAAE,EAAG,CAC1B,uBAAwB,EACxB,qBAAsB,CAClC,CACA,CACA,EACM,CAACA,CAAY,EAAG,CACd,SAAU,WACV,OAAQ,EACR,6BAA8B,CAC5B,OAAQ,CAClB,EACQ,cAAe,CACb,OAAQ,CAClB,CACA,EACM,CAAC,GAAGA,CAAY,YAAY,EAAG,CAC7B,SAAA5L,CACR,CACA,EAEI+1B,GAAqB,GAAGnqB,CAAY,WAAYsqB,CAAgB,EAAGH,GAAqB,GAAGnqB,CAAY,UAAWuqB,CAAe,CAAC,CACtI,CACA,ECzDA,IAAI5lB,GAAY,CAAC,GAAG,EAClBqK,GAAa,CAAC,GAAG,EAERwb,GAAiB,SAAwB5sE,EAAO,CACzD,OAAO,KAAK,MAAM,OAAOA,GAAS,CAAC,CAAC,CACtC,EACI6sE,GAAiB,SAAwBh8B,EAAO,CAClD,GAAIA,aAAiBZ,GACnB,OAAOY,EAET,GAAIA,GAAS3vB,GAAQ2vB,CAAK,IAAM,UAAY,MAAOA,GAAS,MAAOA,EAAO,CACxE,IAAI/5B,EAAO+5B,EACT1tB,EAAIrM,EAAK,EACTg2D,EAASz3C,GAAyBve,EAAMiwC,EAAS,EACnD,OAAOx2B,EAAcA,EAAc,CAAA,EAAIu8C,CAAM,EAAG,CAAA,EAAI,CAClD,EAAG3pD,CACT,CAAK,CACH,CACA,OAAI,OAAO0tB,GAAU,UAAY,MAAM,KAAKA,CAAK,EACxCA,EAAM,QAAQ,MAAO,KAAK,EAE5BA,CACT,EACWk8B,GAAqB,SAAUC,EAAY,CACpD9+C,GAAU6+C,EAAOC,CAAU,EAC3B,IAAIj+C,EAASN,GAAas+C,CAAK,EAC/B,SAASA,EAAMl8B,EAAO,CACpB/iB,OAAAA,GAAgB,KAAMi/C,CAAK,EACpBh+C,EAAO,KAAK,KAAM89C,GAAeh8B,CAAK,CAAC,CAChD,CACA7iB,OAAAA,GAAa++C,EAAO,CAAC,CACnB,IAAK,cACL,MAAO,UAAuB,CAC5B,IAAIE,EAAM,KAAK,MAAK,EAChB95B,EAAay5B,GAAeK,EAAI,EAAI,GAAG,EACvCC,EAAYN,GAAeK,EAAI,EAAI,GAAG,EACtCh6B,EAAM25B,GAAeK,EAAI,CAAC,EAC1B/7B,EAAQ+7B,EAAI,EACZE,EAAY,OAAO,OAAOl6B,EAAK,IAAI,EAAE,OAAOE,EAAY,KAAK,EAAE,OAAO+5B,EAAW,IAAI,EACrFE,EAAa,QAAQ,OAAOn6B,EAAK,IAAI,EAAE,OAAOE,EAAY,KAAK,EAAE,OAAO+5B,EAAW,KAAK,EAAE,OAAOh8B,EAAM,QAAQA,IAAU,EAAI,EAAI,CAAC,EAAG,GAAG,EAC5I,OAAOA,IAAU,EAAIi8B,EAAYC,CACnC,CACJ,EAAK,CACD,IAAK,QACL,MAAO,UAAiB,CACtB,IAAIC,EAAc,KAAK,MAAK,EAC1BtpE,EAAIspE,EAAY,EAChBP,EAASz3C,GAAyBg4C,EAAajc,EAAU,EAC3D,OAAO7gC,EAAcA,EAAc,CAAA,EAAIu8C,CAAM,EAAG,CAAA,EAAI,CAClD,EAAG/oE,EACH,EAAG,KAAK,CAChB,CAAO,CACH,CACJ,CAAG,CAAC,EACKgpE,CACT,EAAE98B,EAAS,EC5DAq9B,GAAuB,kBACvB7T,GAAgB,SAAuB5oB,EAAO,CACvD,OAAIA,aAAiBk8B,GACZl8B,EAEF,IAAIk8B,GAAMl8B,CAAK,CACxB,EACW08B,GAAe9T,GAAc,SAAS,EACtC+T,GAAiB,SAAwB/4D,EAAO,CACzD,IAAIuuB,EAASvuB,EAAM,OACjBg5D,EAAYh5D,EAAM,UAClBy0D,EAAez0D,EAAM,aACrBo8B,EAAQp8B,EAAM,MACdrS,EAAOqS,EAAM,KACXi5D,EAAwBxE,EAAa,QAAQ,sBAAqB,EACpEl9C,EAAQ0hD,EAAsB,MAC9BzhD,EAASyhD,EAAsB,OAC7BC,EAAwBF,EAAU,QAAQ,sBAAqB,EACjEG,EAAcD,EAAsB,MACpCE,EAAeF,EAAsB,OACnCG,EAAgBF,EAAc,EAC9BG,EAAgBF,EAAe,EAC/B16B,GAAcnQ,EAAO,EAAI8qC,GAAiB9hD,EAC1CgiD,EAAS,GAAKhrC,EAAO,EAAI+qC,GAAiB9hD,EAC1CghD,EAAMp8B,EAAM,MAAK,EACjBo9B,EAAc96B,EACd+6B,GAAalrC,EAAO,EAAI8qC,GAAiB9hD,EAAQ,IACrD,GAAI5pB,EACF,OAAQA,EAAI,CACV,IAAK,MACH,OAAOq3D,GAAclpC,EAAcA,EAAc,CAAA,EAAI08C,CAAG,EAAG,GAAI,CAC7D,EAAGiB,GAAa,EAAI,EAAIA,CAClC,CAAS,CAAC,EACJ,IAAK,QACH,OAAOzU,GAAclpC,EAAcA,EAAc,CAAA,EAAI08C,CAAG,EAAG,GAAI,CAC7D,EAAGgB,GAAe,EAAI,EAAIA,CACpC,CAAS,CAAC,CACV,CAEE,OAAOxU,GAAc,CACnB,EAAGwT,EAAI,EACP,EAAG95B,GAAc,EAAI,EAAIA,EACzB,EAAG66B,GAAU,EAAI,EAAIA,EACrB,EAAGf,EAAI,CACX,CAAG,CACH,EACWkB,GAAa,SAAoBt9B,EAAOzuC,EAAM,CACvD,IAAI6qE,EAAMp8B,EAAM,MAAK,EACrB,OAAQzuC,EAAI,CACV,IAAK,MACH,MAAO,CACL,EAAG6qE,EAAI,EAAI,IAAM,IACjB,EAAG,EACX,EACI,IAAK,QACH,MAAO,CACL,EAAGp8B,EAAM,EAAI,IACb,EAAG,EACX,EAGI,QACE,MAAO,CACL,EAAGo8B,EAAI,EAAI,IACX,GAAI,EAAIA,EAAI,GAAK,GACzB,CACA,CACA,ECnEImB,GAAa,SAAoBt3D,EAAM,CACzC,IAAI+5B,EAAQ/5B,EAAK,MACf0pC,EAAY1pC,EAAK,UACjB0jD,EAAY1jD,EAAK,UACjBggB,EAAQhgB,EAAK,MACb2jD,EAAU3jD,EAAK,QACbu3D,EAAgB,GAAG,OAAO7tB,EAAW,cAAc,EACvD,OAAoBplC,EAAM,cAAc,MAAO,CAC7C,UAAWwF,GAAWytD,EAAe7T,CAAS,EAC9C,MAAO1jC,EACP,QAAS2jC,CACb,EAAkBr/C,EAAM,cAAc,MAAO,CACzC,UAAW,GAAG,OAAOizD,EAAe,QAAQ,EAC5C,MAAO,CACL,WAAYx9B,CAClB,CACA,CAAG,CAAC,CACJ,ECjBA,SAASy9B,GAAY,EAAG,CACtB,IAAIzwE,EAAM,YAAa,EAAI,EAAE,QAAQ,CAAC,EAAI,EACtC0wE,EAAgB,SAAS,gBAAgB,YAAc,SAAS,KAAK,YAAc,OAAO,YAC1FC,EAAgB,SAAS,gBAAgB,WAAa,SAAS,KAAK,WAAa,OAAO,YAC5F,MAAO,CACL,MAAO3wE,EAAI,MAAQ0wE,EACnB,MAAO1wE,EAAI,MAAQ2wE,CACvB,CACA,CACA,SAASC,GAAah6D,EAAO,CAC3B,IAAIg5D,EAAYh5D,EAAM,UACpBy0D,EAAez0D,EAAM,aACrB+kC,EAAY/kC,EAAM,UAClBi6D,EAAej6D,EAAM,aACrBk6D,EAAuBl6D,EAAM,qBAC7Bm6D,EAAYn6D,EAAM,UAClBo8B,EAAQp8B,EAAM,MACdo6D,EAAep6D,EAAM,aACnBooC,EAAYrnC,EAAAA,SAAS,CACrB,EAAG,EACH,EAAG,CACT,CAAK,EACDsnC,EAAavqB,GAAesqB,EAAW,CAAC,EACxCiyB,EAAchyB,EAAW,CAAC,EAC1BiyB,EAAiBjyB,EAAW,CAAC,EAC3BkyB,EAAe76D,EAAAA,OAAO,IAAI,EAC1B86D,EAAa96D,EAAAA,OAAO,IAAI,EAG5BC,EAAAA,UAAU,UAAY,CACpB26D,EAAeH,EAAS,CAAE,CAC5B,EAAG,CAAC/9B,CAAK,CAAC,EACVz8B,EAAAA,UAAU,UAAY,CACpB,OAAO,UAAY,CACjB,SAAS,oBAAoB,YAAa46D,EAAa,OAAO,EAC9D,SAAS,oBAAoB,UAAWC,EAAW,OAAO,EAC1D,SAAS,oBAAoB,YAAaD,EAAa,OAAO,EAC9D,SAAS,oBAAoB,WAAYC,EAAW,OAAO,EAC3DD,EAAa,QAAU,KACvBC,EAAW,QAAU,IACvB,CACF,EAAG,CAAA,CAAE,EACL,IAAIC,EAAe,SAAsB3vE,EAAG,CAC1C,IAAI4vE,EAAeb,GAAY/uE,CAAC,EAC9B6vE,EAAQD,EAAa,MACrBE,EAAQF,EAAa,MACnBzB,EAAwBxE,EAAa,QAAQ,sBAAqB,EACpEoG,EAAQ5B,EAAsB,EAC9B6B,EAAQ7B,EAAsB,EAC9B1hD,EAAQ0hD,EAAsB,MAC9BzhD,EAASyhD,EAAsB,OAC7BC,EAAwBF,EAAU,QAAQ,sBAAqB,EACjEG,EAAcD,EAAsB,MACpCE,EAAeF,EAAsB,OACnCG,EAAgBF,EAAc,EAC9BG,EAAgBF,EAAe,EAC/B2B,EAAU,KAAK,IAAI,EAAG,KAAK,IAAIJ,EAAQE,EAAOtjD,CAAK,CAAC,EAAI8hD,EACxD2B,EAAU,KAAK,IAAI,EAAG,KAAK,IAAIJ,EAAQE,EAAOtjD,CAAM,CAAC,EAAI8hD,EACzDI,EAAa,CACf,EAAGqB,EACH,EAAGh2B,IAAc,IAAMs1B,EAAY,EAAIW,CAC7C,EAGI,GAAI7B,IAAgB,GAAKC,IAAiB,GAAKD,IAAgBC,EAC7D,MAAO,GAETa,GAAiB,MAAmCA,EAAaP,CAAU,CAC7E,EACIuB,EAAa,SAAoBnwE,EAAG,CACtCA,EAAE,eAAc,EAChB2vE,EAAa3vE,CAAC,CAChB,EACIowE,EAAa,SAAoBpwE,EAAG,CACtCA,EAAE,eAAc,EAChB,SAAS,oBAAoB,YAAayvE,EAAa,OAAO,EAC9D,SAAS,oBAAoB,UAAWC,EAAW,OAAO,EAC1D,SAAS,oBAAoB,YAAaD,EAAa,OAAO,EAC9D,SAAS,oBAAoB,WAAYC,EAAW,OAAO,EAC3DD,EAAa,QAAU,KACvBC,EAAW,QAAU,KACrBN,GAAyB,MAA2CA,EAAoB,CAC1F,EACIiB,EAAc,SAAqBrwE,EAAG,CAExC,SAAS,oBAAoB,YAAayvE,EAAa,OAAO,EAC9D,SAAS,oBAAoB,UAAWC,EAAW,OAAO,EACtD,CAAAJ,IAGJK,EAAa3vE,CAAC,EACd,SAAS,iBAAiB,YAAamwE,CAAU,EACjD,SAAS,iBAAiB,UAAWC,CAAU,EAC/C,SAAS,iBAAiB,YAAaD,CAAU,EACjD,SAAS,iBAAiB,WAAYC,CAAU,EAChDX,EAAa,QAAUU,EACvBT,EAAW,QAAUU,EACvB,EACA,MAAO,CAACb,EAAac,CAAW,CAClC,CClGA,IAAIC,GAAU,SAAiB/4D,EAAM,CACnC,IAAIg5D,EAAYh5D,EAAK,KACnB+R,EAAOinD,IAAc,OAAS,UAAYA,EAC1Cj/B,EAAQ/5B,EAAK,MACb0pC,EAAY1pC,EAAK,UACnB,OAAoBsE,EAAM,cAAc,MAAO,CAC7C,UAAWwF,GAAW,GAAG,OAAO4/B,EAAW,UAAU,EAAGh+B,EAAgB,CAAA,EAAI,GAAG,OAAOg+B,EAAW,aAAa,EAAG33B,IAAS,OAAO,CAAC,EAClI,MAAO,CACL,gBAAiBgoB,CACvB,CACA,CAAG,CACH,ECZIk/B,GAAU,SAAiBj5D,EAAM,CACnC,IAAI0K,EAAW1K,EAAK,SAClBggB,EAAQhgB,EAAK,MACb0pC,EAAY1pC,EAAK,UACnB,OAAoBsE,EAAM,cAAc,MAAO,CAC7C,UAAW,GAAG,OAAOolC,EAAW,UAAU,EAC1C,MAAOjwB,EAAc,CACnB,SAAU,UAChB,EAAOuG,CAAK,CACZ,EAAKtV,CAAQ,CACb,ECXIwuD,GAAyBpE,EAAAA,WAAW,SAAUn3D,EAAOP,EAAK,CAC5D,IAAIsN,EAAW/M,EAAM,SACnB+X,EAAI/X,EAAM,EACVgY,EAAIhY,EAAM,EACZ,OAAoB2G,EAAM,cAAc,MAAO,CAC7C,IAAKlH,EACL,MAAO,CACL,SAAU,WACV,KAAM,GAAG,OAAOsY,EAAG,GAAG,EACtB,IAAK,GAAG,OAAOC,EAAG,GAAG,EACrB,OAAQ,EACR,UAAW,uBACjB,CACA,EAAKjL,CAAQ,CACb,CAAC,ECPGyuD,GAAS,SAAgBn5D,EAAM,CACjC,IAAI+5B,EAAQ/5B,EAAK,MACf6lC,EAAW7lC,EAAK,SAChB0pC,EAAY1pC,EAAK,UACjBo5D,EAAmBp5D,EAAK,iBACxBmY,EAAWnY,EAAK,SACdq5D,EAAYh8D,EAAAA,OAAM,EAClBi8D,EAAej8D,EAAAA,OAAM,EACrBk8D,EAAWl8D,EAAAA,OAAO08B,CAAK,EACvB69B,EAAe7yB,GAAS,SAAUizB,EAAa,CACjD,IAAIwB,EAAY9C,GAAe,CAC7B,OAAQsB,EACR,UAAWsB,EACX,aAAcD,EACd,MAAOt/B,CACb,CAAK,EACDw/B,EAAS,QAAUC,EACnB3zB,EAAS2zB,CAAS,CACpB,CAAC,EACGC,EAAgB9B,GAAa,CAC7B,MAAO59B,EACP,aAAcs/B,EACd,UAAWC,EACX,UAAW,UAAqB,CAC9B,OAAOjC,GAAWt9B,CAAK,CACzB,EACA,aAAc69B,EACd,qBAAsB,UAAgC,CACpD,OAAOwB,GAAqB,KAAsC,OAASA,EAAiBG,EAAS,OAAO,CAC9G,EACA,aAAcphD,CACpB,CAAK,EACDuhD,EAAiBj+C,GAAeg+C,EAAe,CAAC,EAChDvtC,EAASwtC,EAAe,CAAC,EACzBC,EAAkBD,EAAe,CAAC,EACpC,OAAoBp1D,EAAM,cAAc,MAAO,CAC7C,IAAK+0D,EACL,UAAW,GAAG,OAAO3vB,EAAW,SAAS,EACzC,YAAaiwB,EACb,aAAcA,CAClB,EAAkBr1D,EAAM,cAAc20D,GAAS,CAC3C,UAAWvvB,CACf,EAAkBplC,EAAM,cAAc40D,GAAW,CAC7C,EAAGhtC,EAAO,EACV,EAAGA,EAAO,EACV,IAAKotC,CACT,EAAkBh1D,EAAM,cAAcy0D,GAAS,CAC3C,MAAOh/B,EAAM,YAAW,EACxB,UAAW2P,CACf,CAAG,CAAC,EAAgBplC,EAAM,cAAc,MAAO,CAC3C,UAAW,GAAG,OAAOolC,EAAW,aAAa,EAC7C,MAAO,CACL,gBAAiB,OAAO,OAAO3P,EAAM,MAAK,EAAG,EAAG,aAAa,EAC7D,gBAAiB,6FACvB,CACA,CAAG,CAAC,CAAC,CACL,EC5DI6/B,GAAgB,SAAuB3qE,EAAc/F,EAAO,CAC9D,IAAI2wE,EAAkBl0B,GAAe12C,EAAc,CAC/C,MAAO/F,CACb,CAAK,EACD4wE,EAAmBr+C,GAAeo+C,EAAiB,CAAC,EACpD1zB,EAAc2zB,EAAiB,CAAC,EAChCv0B,EAAWu0B,EAAiB,CAAC,EAC3B//B,EAAQ/pB,EAAAA,QAAQ,UAAY,CAC9B,OAAO2yC,GAAcxc,CAAW,CAClC,EAAG,CAACA,CAAW,CAAC,EAChB,MAAO,CAACpM,EAAOwL,CAAQ,CACzB,ECZIw0B,GAAW,SAAkB/5D,EAAM,CACrC,IAAIkhC,EAASlhC,EAAK,OAChB0K,EAAW1K,EAAK,SAChBg6D,EAAiBh6D,EAAK,UACtB0iC,EAAYs3B,IAAmB,OAAS,WAAaA,EACrD1uE,EAAO0U,EAAK,KACZ0pC,EAAY1pC,EAAK,UACfi6D,EAAiBjqD,EAAAA,QAAQ,UAAY,CACvC,OAAOkxB,EAAO,IAAI,SAAUnH,EAAOmgC,EAAK,CACtC,IAAIrtE,EAAS81D,GAAc5oB,CAAK,EAChC,OAAIzuC,IAAS,SAAW4uE,IAAQh5B,EAAO,OAAS,IAC9Cr0C,EAAS,IAAIopE,GAAMppE,EAAO,KAAK,CAAC,CAAC,GAE5BA,EAAO,YAAW,CAC3B,CAAC,EAAE,KAAK,GAAG,CACb,EAAG,CAACq0C,EAAQ51C,CAAI,CAAC,EACjB,OAAoBgZ,EAAM,cAAc,MAAO,CAC7C,UAAW,GAAG,OAAOolC,EAAW,WAAW,EAC3C,MAAO,CACL,SAAU,WACV,MAAO,EACP,WAAY,mBAAmB,OAAOhH,EAAW,IAAI,EAAE,OAAOu3B,EAAgB,GAAG,CACvF,CACA,EAAKvvD,CAAQ,CACb,EChBIyvD,GAAS,SAAgBx8D,EAAO,CAClC,IAAI+rC,EAAY/rC,EAAM,UACpBujC,EAASvjC,EAAM,OACfwa,EAAWxa,EAAM,SACjBkoC,EAAWloC,EAAM,SACjBy7D,EAAmBz7D,EAAM,iBACzBo8B,EAAQp8B,EAAM,MACdrS,EAAOqS,EAAM,KACXy8D,EAAY/8D,EAAAA,OAAM,EAClBi8D,EAAej8D,EAAAA,OAAM,EACrBk8D,EAAWl8D,EAAAA,OAAO08B,CAAK,EACvB9pB,EAAW,SAAkB1lB,EAAG,CAClC,OAAOe,IAAS,MAAQf,EAAE,OAAM,EAAKA,EAAE,EAAI,GAC7C,EACIqtE,EAAe7yB,GAAS,SAAUizB,EAAa,CACjD,IAAIwB,EAAY9C,GAAe,CAC7B,OAAQsB,EACR,UAAWsB,EACX,aAAcc,EACd,MAAOrgC,EACP,KAAMzuC,CACZ,CAAK,EACDiuE,EAAS,QAAUC,EACnB3zB,EAAS51B,EAASupD,CAAS,CAAC,CAC9B,CAAC,EACGC,EAAgB9B,GAAa,CAC7B,MAAO59B,EACP,UAAWu/B,EACX,aAAcc,EACd,UAAW,UAAqB,CAC9B,OAAO/C,GAAWt9B,EAAOzuC,CAAI,CAC/B,EACA,aAAcssE,EACd,qBAAsB,UAAgC,CACpDwB,EAAiBnpD,EAASspD,EAAS,OAAO,CAAC,CAC7C,EACA,UAAW,IACX,aAAcphD,CACpB,CAAK,EACDuhD,EAAiBj+C,GAAeg+C,EAAe,CAAC,EAChDvtC,EAASwtC,EAAe,CAAC,EACzBC,EAAkBD,EAAe,CAAC,EAChCW,EAAc/1D,EAAM,QAAQ,UAAY,CAC1C,GAAIhZ,IAAS,MAAO,CAClB,IAAI6qE,EAAMp8B,EAAM,MAAK,EACrBo8B,EAAI,EAAI,EACRA,EAAI,EAAI,EACRA,EAAI,EAAI,EACR,IAAInnB,EAAa,IAAIinB,GAAME,CAAG,EAC9B,OAAOnnB,CACT,CACA,OAAOjV,CACT,EAAG,CAACA,EAAOzuC,CAAI,CAAC,EAGZgvE,EAAeh2D,EAAM,QAAQ,UAAY,CAC3C,OAAO48B,EAAO,IAAI,SAAU/T,EAAM,CAChC,MAAO,GAAG,OAAOA,EAAK,MAAO,GAAG,EAAE,OAAOA,EAAK,QAAS,GAAG,CAC5D,CAAC,CACH,EAAG,CAAC+T,CAAM,CAAC,EAGX,OAAoB58B,EAAM,cAAc,MAAO,CAC7C,IAAK81D,EACL,UAAWtwD,GAAW,GAAG,OAAO4/B,EAAW,SAAS,EAAG,GAAG,OAAOA,EAAW,UAAU,EAAE,OAAOp+C,CAAI,CAAC,EACpG,YAAaquE,EACb,aAAcA,CAClB,EAAkBr1D,EAAM,cAAc20D,GAAS,CAC3C,UAAWvvB,CACf,EAAkBplC,EAAM,cAAc40D,GAAW,CAC7C,EAAGhtC,EAAO,EACV,EAAGA,EAAO,EACV,IAAKotC,CACT,EAAkBh1D,EAAM,cAAcy0D,GAAS,CAC3C,KAAM,QACN,MAAOsB,EAAY,YAAW,EAC9B,UAAW3wB,CACf,CAAG,CAAC,EAAgBplC,EAAM,cAAcy1D,GAAU,CAC9C,OAAQO,EACR,KAAMhvE,EACN,UAAWo+C,CACf,CAAG,CAAC,CAAC,CACL,EC3Fe,SAAS6wB,GAAantB,EAAY,CAC/C,OAAO9oC,EAAM,QAAQ,UAAY,CAC/B,IAAItE,EAAOotC,GAAc,CAAA,EACvByR,EAAS7+C,EAAK,OAChB,MAAO,CAAC6+C,GAAUsb,EAAM,CAC1B,EAAG,CAAC/sB,CAAU,CAAC,CACjB,CCGA,IAAIotB,GAAa,CAAC,CAChB,MAAO,iBACP,QAAS,CACX,EAAG,CACD,MAAO,mBACP,QAAS,EACX,EAAG,CACD,MAAO,iBACP,QAAS,EACX,EAAG,CACD,MAAO,mBACP,QAAS,EACX,EAAG,CACD,MAAO,iBACP,QAAS,EACX,EAAG,CACD,MAAO,mBACP,QAAS,EACX,EAAG,CACD,MAAO,iBACP,QAAS,GACX,CAAC,EACGC,GAA2B3F,EAAAA,WAAW,SAAUn3D,EAAOP,EAAK,CAC9D,IAAIlU,EAAQyU,EAAM,MAChB1O,EAAe0O,EAAM,aACrB+8D,EAAmB/8D,EAAM,UACzB+rC,EAAYgxB,IAAqB,OAASlE,GAAuBkE,EACjE70B,EAAWloC,EAAM,SACjBy7D,EAAmBz7D,EAAM,iBACzB+lD,EAAY/lD,EAAM,UAClBqiB,EAAQriB,EAAM,MACdg9D,EAAch9D,EAAM,YACpBi9D,EAAuBj9D,EAAM,cAC7Bk9D,EAAgBD,IAAyB,OAAS,GAAQA,EAC1DE,EAAkBn9D,EAAM,SACxBwa,EAAW2iD,IAAoB,OAAS,GAAQA,EAChD1tB,EAAazvC,EAAM,WAGjBo9D,EAAgBR,GAAantB,CAAU,EACzC4tB,EAAiBv/C,GAAes/C,EAAe,CAAC,EAChDZ,EAASa,EAAe,CAAC,EAGvBC,EAAiBrB,GAAc3qE,GAAgBwnE,GAAcvtE,CAAK,EACpEgyE,EAAkBz/C,GAAew/C,EAAgB,CAAC,EAClDE,EAAaD,EAAgB,CAAC,EAC9BE,EAAgBF,EAAgB,CAAC,EAC/BG,EAAarrD,EAAAA,QAAQ,UAAY,CACnC,OAAOmrD,EAAW,KAAK,CAAC,EAAE,YAAW,CACvC,EAAG,CAACA,CAAU,CAAC,EAGXG,EAAe,SAAsBtyE,EAAMsC,EAAM,CAC9CpC,GACHkyE,EAAcpyE,CAAI,EAEpB68C,GAAa,MAA+BA,EAAS78C,EAAMsC,CAAI,CACjE,EAGIiwE,EAAc,SAAqBp/B,EAAK,CAC1C,OAAO,IAAI85B,GAAMkF,EAAW,OAAOh/B,CAAG,CAAC,CACzC,EACI2E,EAAgB,SAAuB1G,EAAO,CAChD,OAAO,IAAI67B,GAAMkF,EAAW,KAAK/gC,EAAQ,GAAG,CAAC,CAC/C,EAGIohC,EAAc,SAAqBr/B,EAAK,CAC1Cm/B,EAAaC,EAAYp/B,CAAG,EAAG,CAC7B,KAAM,MACN,MAAOA,CACb,CAAK,CACH,EACIs/B,EAAgB,SAAuBrhC,EAAO,CAChDkhC,EAAax6B,EAAc1G,CAAK,EAAG,CACjC,KAAM,QACN,MAAOA,CACb,CAAK,CACH,EAGIshC,EAAsB,SAA6Bv/B,EAAK,CACtDi9B,GACFA,EAAiBmC,EAAYp/B,CAAG,CAAC,CAErC,EACIw/B,EAAwB,SAA+BvhC,EAAO,CAC5Dg/B,GACFA,EAAiBt4B,EAAc1G,CAAK,CAAC,CAEzC,EAGIwhC,EAAW9xD,GAAW,GAAG,OAAO4/B,EAAW,QAAQ,EAAGga,EAAWh4C,EAAgB,CAAA,EAAI,GAAG,OAAOg+B,EAAW,iBAAiB,EAAGvxB,CAAQ,CAAC,EACvI0jD,EAAoB,CACtB,UAAWnyB,EACX,SAAUvxB,EACV,MAAOgjD,CACX,EACMW,EAA4Bx3D,EAAM,cAAcA,EAAM,SAAU,KAAmBA,EAAM,cAAc60D,GAAQhvD,GAAS,CAC1H,SAAUmxD,CACd,EAAKO,EAAmB,CACpB,iBAAkBzC,CACtB,CAAG,CAAC,EAAgB90D,EAAM,cAAc,MAAO,CAC3C,UAAW,GAAG,OAAOolC,EAAW,mBAAmB,CACvD,EAAkBplC,EAAM,cAAc,MAAO,CACzC,UAAWwF,GAAW,GAAG,OAAO4/B,EAAW,eAAe,EAAGh+B,EAAgB,CAAA,EAAI,GAAG,OAAOg+B,EAAW,8BAA8B,EAAGmxB,CAAa,CAAC,CACzJ,EAAkBv2D,EAAM,cAAc61D,EAAQhwD,GAAS,CAAA,EAAI0xD,EAAmB,CAC1E,KAAM,MACN,OAAQrB,GACR,IAAK,EACL,IAAK,IACL,MAAOW,EAAW,OAAM,EACxB,SAAUK,EACV,iBAAkBE,CACtB,CAAG,CAAC,EAAG,CAACb,GAA8Bv2D,EAAM,cAAc61D,EAAQhwD,GAAS,CAAA,EAAI0xD,EAAmB,CAC9F,KAAM,QACN,OAAQ,CAAC,CACP,QAAS,EACT,MAAO,oBACb,EAAO,CACD,QAAS,IACT,MAAOR,CACb,CAAK,EACD,IAAK,EACL,IAAK,IACL,MAAOF,EAAW,EAAI,IACtB,SAAUM,EACV,iBAAkBE,CACtB,CAAG,CAAC,CAAC,EAAgBr3D,EAAM,cAAcgzD,GAAY,CACjD,MAAO6D,EAAW,YAAW,EAC7B,UAAWzxB,CACf,CAAG,CAAC,CAAC,EACH,OAAoBplC,EAAM,cAAc,MAAO,CAC7C,UAAWs3D,EACX,MAAO57C,EACP,IAAK5iB,CACT,EAAK,OAAOu9D,GAAgB,WAAaA,EAAYmB,CAAY,EAAIA,CAAY,CACjF,CAAC,EACG,QAAQ,IAAI,WAAa,eAC3BrB,GAAY,YAAc,eCtJrB,MAAMsB,GAAc,CAAC7yE,EAAOkxC,KAAWlxC,GAAU,KAA2B,OAASA,EAAM,QAAQ,UAAW,EAAE,EAAE,MAAM,EAAGkxC,EAAQ,EAAI,CAAC,IAAM,GACxI4hC,GAAS,CAAC9yE,EAAOkxC,IAAUlxC,EAAQ6yE,GAAY7yE,EAAOkxC,CAAK,EAAI,GACrE,IAAI6hC,GAAgC,UAAY,CACrD,SAASA,EAAiBliC,EAAO,CAC/B/iB,GAAgB,KAAMilD,CAAgB,EACtC,IAAIzwE,EAGJ,GAFA,KAAK,QAAU,GAEXuuC,aAAiBkiC,EAAkB,CACrC,KAAK,UAAYliC,EAAM,UAAU,MAAK,EACtC,KAAK,QAAUvuC,EAAKuuC,EAAM,UAAY,MAAQvuC,IAAO,OAAS,OAASA,EAAG,IAAI2hC,IAAS,CACrF,MAAO,IAAI8uC,EAAiB9uC,EAAK,KAAK,EACtC,QAASA,EAAK,OACtB,EAAQ,EACF,KAAK,QAAU4M,EAAM,QACrB,MACF,CACA,MAAMmiC,EAAU,MAAM,QAAQniC,CAAK,EAC/BmiC,GAAWniC,EAAM,QACnB,KAAK,OAASA,EAAM,IAAI,CAAC,CACvB,MAAOxvC,EACP,QAAA4xE,CACR,KAAa,CACL,MAAO,IAAIF,EAAiB1xE,CAAC,EAC7B,QAAA4xE,CACR,EAAQ,EACF,KAAK,UAAY,IAAIC,GAAQ,KAAK,OAAO,CAAC,EAAE,MAAM,SAAS,GAE3D,KAAK,UAAY,IAAIA,GAAQF,EAAU,GAAKniC,CAAK,GAE/C,CAACA,GAASmiC,GAAW,CAAC,KAAK,UAC7B,KAAK,UAAY,KAAK,UAAU,KAAK,CAAC,EACtC,KAAK,QAAU,GAEnB,CACA,OAAOhlD,GAAa+kD,EAAkB,CAAC,CACrC,IAAK,QACL,MAAO,UAAiB,CACtB,OAAO,KAAK,UAAU,MAAK,CAC7B,CACJ,EAAK,CACD,IAAK,cACL,MAAO,UAAuB,CAC5B,OAAO,KAAK,UAAU,YAAW,CACnC,CACJ,EAAK,CACD,IAAK,QACL,MAAO,UAAiB,CACtB,OAAOD,GAAO,KAAK,YAAW,EAAI,KAAK,UAAU,EAAI,CAAC,CACxD,CACJ,EAAK,CACD,IAAK,cACL,MAAO,UAAuB,CAC5B,OAAO,KAAK,UAAU,YAAW,CACnC,CACJ,EAAK,CACD,IAAK,QACL,MAAO,UAAiB,CACtB,OAAO,KAAK,UAAU,MAAK,CAC7B,CACJ,EAAK,CACD,IAAK,cACL,MAAO,UAAuB,CAC5B,OAAO,KAAK,UAAU,YAAW,CACnC,CACJ,EAAK,CACD,IAAK,aACL,MAAO,UAAsB,CAC3B,MAAO,CAAC,CAAC,KAAK,QAAU,CAAC,KAAK,OAChC,CACJ,EAAK,CACD,IAAK,YACL,MAAO,UAAqB,CAC1B,OAAO,KAAK,QAAU,CAAC,CACrB,MAAO,KACP,QAAS,CACjB,CAAO,CACH,CACJ,EAAK,CACD,IAAK,cACL,MAAO,UAAuB,CAC5B,KAAM,CACJ,OAAA96B,CACR,EAAU,KAEJ,OAAIA,EAEK,0BADWA,EAAO,IAAI32C,GAAK,GAAGA,EAAE,MAAM,YAAW,CAAE,IAAIA,EAAE,OAAO,GAAG,EAAE,KAAK,IAAI,CAC3C,IAErC,KAAK,UAAU,YAAW,CACnC,CACJ,EAAK,CACD,IAAK,SACL,MAAO,SAAgBwvC,EAAO,CAC5B,MAAI,CAACA,GAAS,KAAK,WAAU,IAAOA,EAAM,aACjC,GAEJ,KAAK,aAGH,KAAK,OAAO,SAAWA,EAAM,OAAO,QAAU,KAAK,OAAO,MAAM,CAACxvC,EAAG,IAAM,CAC/E,MAAMnB,EAAS2wC,EAAM,OAAO,CAAC,EAC7B,OAAOxvC,EAAE,UAAYnB,EAAO,SAAWmB,EAAE,MAAM,OAAOnB,EAAO,KAAK,CACpE,CAAC,EALQ,KAAK,gBAAkB2wC,EAAM,YAAW,CAMnD,CACJ,CAAG,CAAC,CACJ,EAAC,EC5GD,IAAIsiC,GAAgB,CAAE,KAAQ,CAAE,IAAO,MAAO,MAAS,CAAE,QAAW,gBAAiB,UAAa,OAAO,EAAI,SAAY,CAAC,CAAE,IAAO,OAAQ,MAAS,CAAE,EAAK,wLAAwL,EAAI,CAAC,EAAI,KAAQ,QAAS,MAAS,UAAU,ECM5XA,GAAgB,SAAuB1+D,EAAOP,EAAK,CACrD,OAAoBkH,EAAM,cAAcogD,GAAUv6C,GAAS,CAAA,EAAIxM,EAAO,CACpE,IAAKP,EACL,KAAMk/D,EACV,CAAG,CAAC,CACJ,EAGI1X,GAAuBtgD,EAAM,WAAW+3D,EAAa,EACrD,QAAQ,IAAI,WAAa,eAC3BzX,GAAQ,YAAc,iBCjBxB,MAAM2X,GAAmBlW,IAAa,CACpC,kBAAmBA,EACnB,kBAAmB,MACrB,GAEMmW,GAAwBnW,IAAa,CACzC,kBAAmBA,EACnB,kBAAmB,MACrB,GACaoW,GAAa,CAACvjB,EAAWwjB,EAAaC,EAActW,EAAUuW,EAAY,KAAU,CAC/F,MAAMC,EAAkBD,EAAY,IAAM,GAC1C,MAAO,CACL,CAAC;AAAA,QACGC,CAAe,GAAG3jB,CAAS;AAAA,QAC3B2jB,CAAe,GAAG3jB,CAAS;AAAA,KAC9B,EAAG,OAAO,OAAO,OAAO,OAAO,GAAIqjB,GAAiBlW,CAAQ,CAAC,EAAG,CAC/D,mBAAoB,QAC1B,CAAK,EACD,CAAC,GAAGwW,CAAe,GAAG3jB,CAAS,QAAQ,EAAG,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIsjB,GAAsBnW,CAAQ,CAAC,EAAG,CAC1G,mBAAoB,QAC1B,CAAK,EACD,CAAC;AAAA,QACGwW,CAAe,GAAG3jB,CAAS,SAASA,CAAS;AAAA,QAC7C2jB,CAAe,GAAG3jB,CAAS,UAAUA,CAAS;AAAA,KACjD,EAAG,CACF,cAAewjB,EACf,mBAAoB,SAC1B,EACI,CAAC,GAAGG,CAAe,GAAG3jB,CAAS,SAASA,CAAS,eAAe,EAAG,CACjE,cAAeyjB,EACf,mBAAoB,UACpB,cAAe,MACrB,CACA,CACA,EChCaG,GAAS,IAAIC,GAAU,YAAa,CAC/C,KAAM,CACJ,QAAS,CACb,EACE,OAAQ,CACN,QAAS,CACb,CACA,CAAC,EACYC,GAAU,IAAID,GAAU,aAAc,CACjD,KAAM,CACJ,QAAS,CACb,EACE,OAAQ,CACN,QAAS,CACb,CACA,CAAC,EACYE,GAAiB,CAACr7C,EAAOg7C,EAAY,KAAU,CAC1D,KAAM,CACJ,OAAAnK,CACJ,EAAM7wC,EACEs3B,EAAY,GAAGuZ,CAAM,QACrBoK,EAAkBD,EAAY,IAAM,GAC1C,MAAO,CAACH,GAAWvjB,EAAW4jB,GAAQE,GAASp7C,EAAM,kBAAmBg7C,CAAS,EAAG,CAClF,CAAC;AAAA,UACKC,CAAe,GAAG3jB,CAAS;AAAA,UAC3B2jB,CAAe,GAAG3jB,CAAS;AAAA,OAC9B,EAAG,CACJ,QAAS,EACT,wBAAyB,QAC/B,EACI,CAAC,GAAG2jB,CAAe,GAAG3jB,CAAS,QAAQ,EAAG,CACxC,wBAAyB,QAC/B,CACA,CAAG,CACH,EClCagkB,GAAa,IAAIH,GAAU,gBAAiB,CACvD,KAAM,CACJ,UAAW,0BACX,gBAAiB,MACjB,QAAS,CACb,EACE,OAAQ,CACN,UAAW,uBACX,gBAAiB,MACjB,QAAS,CACb,CACA,CAAC,EACYI,GAAc,IAAIJ,GAAU,iBAAkB,CACzD,KAAM,CACJ,UAAW,uBACX,gBAAiB,MACjB,QAAS,CACb,EACE,OAAQ,CACN,UAAW,0BACX,gBAAiB,MACjB,QAAS,CACb,CACA,CAAC,EACYK,GAAa,IAAIL,GAAU,gBAAiB,CACvD,KAAM,CACJ,UAAW,2BACX,gBAAiB,MACjB,QAAS,CACb,EACE,OAAQ,CACN,UAAW,uBACX,gBAAiB,MACjB,QAAS,CACb,CACA,CAAC,EACYM,GAAc,IAAIN,GAAU,iBAAkB,CACzD,KAAM,CACJ,UAAW,uBACX,gBAAiB,MACjB,QAAS,CACb,EACE,OAAQ,CACN,UAAW,2BACX,gBAAiB,MACjB,QAAS,CACb,CACA,CAAC,EACYO,GAAc,IAAIP,GAAU,iBAAkB,CACzD,KAAM,CACJ,UAAW,0BACX,gBAAiB,MACjB,QAAS,CACb,EACE,OAAQ,CACN,UAAW,uBACX,gBAAiB,MACjB,QAAS,CACb,CACA,CAAC,EACYQ,GAAe,IAAIR,GAAU,kBAAmB,CAC3D,KAAM,CACJ,UAAW,uBACX,gBAAiB,MACjB,QAAS,CACb,EACE,OAAQ,CACN,UAAW,0BACX,gBAAiB,MACjB,QAAS,CACb,CACA,CAAC,EACYS,GAAW,IAAIT,GAAU,cAAe,CACnD,KAAM,CACJ,UAAW,2BACX,gBAAiB,MACjB,QAAS,CACb,EACE,OAAQ,CACN,UAAW,uBACX,gBAAiB,MACjB,QAAS,CACb,CACA,CAAC,EACYU,GAAY,IAAIV,GAAU,eAAgB,CACrD,KAAM,CACJ,UAAW,uBACX,gBAAiB,MACjB,QAAS,CACb,EACE,OAAQ,CACN,UAAW,2BACX,gBAAiB,MACjB,QAAS,CACb,CACA,CAAC,EACKW,GAAa,CACjB,UAAW,CACT,YAAaF,GACb,aAAcC,EAClB,EACE,YAAa,CACX,YAAaP,GACb,aAAcC,EAClB,EACE,YAAa,CACX,YAAaC,GACb,aAAcC,EAClB,EACE,aAAc,CACZ,YAAaC,GACb,aAAcC,EAClB,CACA,EACaI,GAAiB,CAAC/7C,EAAOu2B,IAAe,CACnD,KAAM,CACJ,OAAAsa,CACJ,EAAM7wC,EACEs3B,EAAY,GAAGuZ,CAAM,IAAIta,CAAU,GACnC,CACJ,YAAAukB,EACA,aAAAC,CACJ,EAAMe,GAAWvlB,CAAU,EACzB,MAAO,CAACskB,GAAWvjB,EAAWwjB,EAAaC,EAAc/6C,EAAM,iBAAiB,EAAG,CACjF,CAAC;AAAA,UACKs3B,CAAS;AAAA,UACTA,CAAS;AAAA,OACZ,EAAG,CACJ,QAAS,EACT,wBAAyBt3B,EAAM,iBACrC,EACI,CAAC,GAAGs3B,CAAS,QAAQ,EAAG,CACtB,wBAAyBt3B,EAAM,mBACrC,CACA,CAAG,CACH,ECvIag8C,GAAY,IAAIb,GAAU,eAAgB,CACrD,KAAM,CACJ,UAAW,cACX,gBAAiB,QACjB,QAAS,CACb,EACE,OAAQ,CACN,UAAW,YACX,gBAAiB,QACjB,QAAS,CACb,CACA,CAAC,EACYc,GAAa,IAAId,GAAU,gBAAiB,CACvD,KAAM,CACJ,UAAW,YACX,gBAAiB,QACjB,QAAS,CACb,EACE,OAAQ,CACN,UAAW,cACX,gBAAiB,QACjB,QAAS,CACb,CACA,CAAC,EACYe,GAAc,IAAIf,GAAU,iBAAkB,CACzD,KAAM,CACJ,UAAW,cACX,gBAAiB,YACjB,QAAS,CACb,EACE,OAAQ,CACN,UAAW,YACX,gBAAiB,YACjB,QAAS,CACb,CACA,CAAC,EACYgB,GAAe,IAAIhB,GAAU,kBAAmB,CAC3D,KAAM,CACJ,UAAW,YACX,gBAAiB,YACjB,QAAS,CACb,EACE,OAAQ,CACN,UAAW,cACX,gBAAiB,YACjB,QAAS,CACb,CACA,CAAC,EACYiB,GAAc,IAAIjB,GAAU,iBAAkB,CACzD,KAAM,CACJ,UAAW,cACX,gBAAiB,QACjB,QAAS,CACb,EACE,OAAQ,CACN,UAAW,YACX,gBAAiB,QACjB,QAAS,CACb,CACA,CAAC,EACYkB,GAAe,IAAIlB,GAAU,kBAAmB,CAC3D,KAAM,CACJ,UAAW,YACX,gBAAiB,QACjB,QAAS,CACb,EACE,OAAQ,CACN,UAAW,cACX,gBAAiB,QACjB,QAAS,CACb,CACA,CAAC,EACYmB,GAAe,IAAInB,GAAU,kBAAmB,CAC3D,KAAM,CACJ,UAAW,cACX,gBAAiB,UACjB,QAAS,CACb,EACE,OAAQ,CACN,UAAW,YACX,gBAAiB,UACjB,QAAS,CACb,CACA,CAAC,EACYoB,GAAgB,IAAIpB,GAAU,mBAAoB,CAC7D,KAAM,CACJ,UAAW,YACX,gBAAiB,UACjB,QAAS,CACb,EACE,OAAQ,CACN,UAAW,cACX,gBAAiB,UACjB,QAAS,CACb,CACA,CAAC,EACKqB,GAAc,CAClB,WAAY,CACV,YAAaR,GACb,aAAcC,EAClB,EACE,aAAc,CACZ,YAAaC,GACb,aAAcC,EAClB,EACE,aAAc,CACZ,YAAaC,GACb,aAAcC,EAClB,EACE,cAAe,CACb,YAAaC,GACb,aAAcC,EAClB,CACA,EACaE,GAAkB,CAACz8C,EAAOu2B,IAAe,CACpD,KAAM,CACJ,OAAAsa,CACJ,EAAM7wC,EACEs3B,EAAY,GAAGuZ,CAAM,IAAIta,CAAU,GACnC,CACJ,YAAAukB,EACA,aAAAC,CACJ,EAAMyB,GAAYjmB,CAAU,EAC1B,MAAO,CAACskB,GAAWvjB,EAAWwjB,EAAaC,EAAc/6C,EAAM,iBAAiB,EAAG,CACjF,CAAC;AAAA,QACGs3B,CAAS;AAAA,QACTA,CAAS;AAAA,KACZ,EAAG,CACF,UAAW,WACX,gBAAiB,QACjB,QAAS,EACT,wBAAyBt3B,EAAM,mBAC/B,YAAa,CACX,UAAW,UACnB,CACA,EACI,CAAC,GAAGs3B,CAAS,QAAQ,EAAG,CACtB,wBAAyBt3B,EAAM,iBACrC,CACA,CAAG,CACH,EC5Ia08C,GAAS,IAAIvB,GAAU,YAAa,CAC/C,KAAM,CACJ,UAAW,aACX,QAAS,CACb,EACE,OAAQ,CACN,UAAW,WACX,QAAS,CACb,CACA,CAAC,EACYwB,GAAU,IAAIxB,GAAU,aAAc,CACjD,KAAM,CACJ,UAAW,UACf,EACE,OAAQ,CACN,UAAW,aACX,QAAS,CACb,CACA,CAAC,EACYyB,GAAY,IAAIzB,GAAU,eAAgB,CACrD,KAAM,CACJ,UAAW,aACX,QAAS,CACb,EACE,OAAQ,CACN,UAAW,WACX,QAAS,CACb,CACA,CAAC,EACY0B,GAAa,IAAI1B,GAAU,gBAAiB,CACvD,KAAM,CACJ,UAAW,UACf,EACE,OAAQ,CACN,UAAW,aACX,QAAS,CACb,CACA,CAAC,EACY2B,GAAW,IAAI3B,GAAU,cAAe,CACnD,KAAM,CACJ,UAAW,aACX,gBAAiB,SACjB,QAAS,CACb,EACE,OAAQ,CACN,UAAW,WACX,gBAAiB,QACrB,CACA,CAAC,EACY4B,GAAY,IAAI5B,GAAU,eAAgB,CACrD,KAAM,CACJ,UAAW,WACX,gBAAiB,QACrB,EACE,OAAQ,CACN,UAAW,aACX,gBAAiB,SACjB,QAAS,CACb,CACA,CAAC,EACY6B,GAAa,IAAI7B,GAAU,gBAAiB,CACvD,KAAM,CACJ,UAAW,aACX,gBAAiB,SACjB,QAAS,CACb,EACE,OAAQ,CACN,UAAW,WACX,gBAAiB,QACrB,CACA,CAAC,EACY8B,GAAc,IAAI9B,GAAU,iBAAkB,CACzD,KAAM,CACJ,UAAW,WACX,gBAAiB,QACrB,EACE,OAAQ,CACN,UAAW,aACX,gBAAiB,SACjB,QAAS,CACb,CACA,CAAC,EACY+B,GAAc,IAAI/B,GAAU,iBAAkB,CACzD,KAAM,CACJ,UAAW,aACX,gBAAiB,WACjB,QAAS,CACb,EACE,OAAQ,CACN,UAAW,WACX,gBAAiB,UACrB,CACA,CAAC,EACYgC,GAAe,IAAIhC,GAAU,kBAAmB,CAC3D,KAAM,CACJ,UAAW,WACX,gBAAiB,UACrB,EACE,OAAQ,CACN,UAAW,aACX,gBAAiB,WACjB,QAAS,CACb,CACA,CAAC,EACYiC,GAAa,IAAIjC,GAAU,gBAAiB,CACvD,KAAM,CACJ,UAAW,aACX,gBAAiB,WACjB,QAAS,CACb,EACE,OAAQ,CACN,UAAW,WACX,gBAAiB,UACrB,CACA,CAAC,EACYkC,GAAc,IAAIlC,GAAU,iBAAkB,CACzD,KAAM,CACJ,UAAW,WACX,gBAAiB,UACrB,EACE,OAAQ,CACN,UAAW,aACX,gBAAiB,WACjB,QAAS,CACb,CACA,CAAC,EACKmC,GAAa,CACjB,KAAM,CACJ,YAAaZ,GACb,aAAcC,EAClB,EACE,WAAY,CACV,YAAaC,GACb,aAAcC,EAClB,EACE,gBAAiB,CACf,YAAaD,GACb,aAAcC,EAClB,EACE,YAAa,CACX,YAAaG,GACb,aAAcC,EAClB,EACE,aAAc,CACZ,YAAaC,GACb,aAAcC,EAClB,EACE,UAAW,CACT,YAAaL,GACb,aAAcC,EAClB,EACE,YAAa,CACX,YAAaK,GACb,aAAcC,EAClB,CACA,EACaE,GAAiB,CAACv9C,EAAOu2B,IAAe,CACnD,KAAM,CACJ,OAAAsa,CACJ,EAAM7wC,EACEs3B,EAAY,GAAGuZ,CAAM,IAAIta,CAAU,GACnC,CACJ,YAAAukB,EACA,aAAAC,CACJ,EAAMuC,GAAW/mB,CAAU,EACzB,MAAO,CAACskB,GAAWvjB,EAAWwjB,EAAaC,EAAcxkB,IAAe,gBAAkBv2B,EAAM,mBAAqBA,EAAM,iBAAiB,EAAG,CAC7I,CAAC;AAAA,UACKs3B,CAAS;AAAA,UACTA,CAAS;AAAA,OACZ,EAAG,CACJ,UAAW,WACX,QAAS,EACT,wBAAyBt3B,EAAM,kBAC/B,YAAa,CACX,UAAW,MACnB,CACA,EACI,CAAC,GAAGs3B,CAAS,QAAQ,EAAG,CACtB,wBAAyBt3B,EAAM,mBACrC,CACA,CAAG,CACH,ECzKaw9C,GAAW,CAACl2E,EAAOm2E,IAAiB,CAC/C,KAAM,CACJ,EAAA70E,EACA,EAAA8hB,EACA,EAAAD,EACA,EAAA5kB,CACJ,EAAMyB,EAAM,MAAK,EACTqwC,EAAM,IAAI6iC,GAAQlzE,EAAM,YAAW,CAAE,EAAE,aAAam2E,CAAY,EAAE,MAAK,EAC7E,OAAI53E,GAAK,GAEA8xC,EAAI,EAAI,GAEV/uC,EAAI,KAAQ8hB,EAAI,KAAQD,EAAI,KAAQ,GAC7C,ECrBaizD,GAAe19C,GAAS,CACnC,KAAM,CACJ,cAAA29C,EACA,aAAAC,CACJ,EAAM59C,EAMJ,OALoBimB,GAAWjmB,EAAO,CACpC,wBAAyB29C,EACzB,sBAAuB,EACvB,uBAAwBC,CAC5B,CAAG,CAEH,EACaC,GAAwB79C,GAAS,CAC5C,IAAIp2B,EAAID,EAAIqN,EAAID,EAAIE,EAAI6mE,EACxB,MAAMC,GAAmBn0E,EAAKo2B,EAAM,mBAAqB,MAAQp2B,IAAO,OAASA,EAAKo2B,EAAM,SACtFg+C,GAAqBr0E,EAAKq2B,EAAM,qBAAuB,MAAQr2B,IAAO,OAASA,EAAKq2B,EAAM,SAC1Fi+C,GAAqBjnE,EAAKgpB,EAAM,qBAAuB,MAAQhpB,IAAO,OAASA,EAAKgpB,EAAM,WAC1Fk+C,GAAqBnnE,EAAKipB,EAAM,qBAAuB,MAAQjpB,IAAO,OAASA,EAAK8mC,GAAckgC,CAAe,EACjHI,GAAuBlnE,EAAK+oB,EAAM,uBAAyB,MAAQ/oB,IAAO,OAASA,EAAK4mC,GAAcmgC,CAAiB,EACvHI,GAAuBN,EAAK99C,EAAM,uBAAyB,MAAQ89C,IAAO,OAASA,EAAKjgC,GAAcogC,CAAiB,EACvHI,EAAiBb,GAAS,IAAInD,GAAiBr6C,EAAM,YAAY,EAAG,MAAM,EAAI,OAAS,OACvFs+C,EAAoBt0B,GAAa,OAAO,CAACvwC,EAAMimC,IAAa,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIjmC,CAAI,EAAG,CACvG,CAAC,GAAGimC,CAAQ,aAAa,EAAG,KAAK5e,GAAKd,EAAM,mBAAmB,CAAC,MAAMkf,GAAclf,EAAM,GAAG0f,CAAQ,GAAG,EAAG1f,EAAM,gBAAgB,CAAC,EACtI,CAAG,EAAG,CAAA,CAAE,EACN,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIs+C,CAAiB,EAAG,CACzD,WAAY,IACZ,cAAe,KAAKt+C,EAAM,mBAAmB,QAAQA,EAAM,iBAAiB,GAC5E,cAAe,KAAKA,EAAM,mBAAmB,QAAQA,EAAM,cAAc,GACzE,aAAc,KAAKA,EAAM,mBAAmB,QAAQA,EAAM,iBAAiB,GAC3E,aAAcA,EAAM,oBACpB,YAAaA,EAAM,oBACnB,oBAAqBA,EAAM,YAC3B,kBAAmBA,EAAM,iBACzB,QAAS,cACT,wBAAyBA,EAAM,iBAC/B,cAAeA,EAAM,yBAA2BA,EAAM,UACtD,gBAAiBA,EAAM,yBAA2BA,EAAM,UACxD,gBAAiB,EAAIA,EAAM,UAC3B,aAAc,UACd,eAAgB,UAChB,eAAgB,UAChB,iBAAkBA,EAAM,kBACxB,YAAa,cACb,cAAeA,EAAM,UACrB,mBAAoBA,EAAM,UAC1B,oBAAqBA,EAAM,UAC3B,YAAaA,EAAM,kBACnB,aAAcA,EAAM,UACpB,UAAWA,EAAM,iBACjB,mBAAoBA,EAAM,YAC1B,2BAA4BA,EAAM,YAClC,eAAgBA,EAAM,iBACtB,kBAAmBA,EAAM,kBACzB,wBAAyBA,EAAM,kBAC/B,gBAAiBA,EAAM,iBACvB,mBAAoBA,EAAM,mBAC1B,yBAA0BA,EAAM,mBAChC,eAAAq+C,EACA,gBAAAN,EACA,kBAAAC,EACA,kBAAAC,EACA,kBAAAC,EACA,oBAAAC,EACA,oBAAAC,EACA,aAAc,KAAK,KAAKp+C,EAAM,cAAgB+9C,EAAkBG,GAAqB,EAAIl+C,EAAM,UAAW,CAAC,EAC3G,eAAgB,KAAK,KAAKA,EAAM,gBAAkBg+C,EAAoBG,GAAuB,EAAIn+C,EAAM,UAAW,CAAC,EACnH,eAAgB,KAAK,KAAKA,EAAM,gBAAkBi+C,EAAoBG,GAAuB,EAAIp+C,EAAM,UAAW,CAAC,CACvH,CAAG,CACH,ECnEMu+C,GAAuBv+C,GAAS,CACpC,KAAM,CACJ,aAAA0pB,EACA,QAAAsc,EACA,WAAAwY,EACA,eAAAC,EACA,mBAAAC,EACA,gBAAAC,EACA,SAAAja,EACA,KAAAtsB,CACJ,EAAMpY,EACJ,MAAO,CACL,CAAC0pB,CAAY,EAAG,CACd,QAAS,OACT,SAAU,WACV,QAAS,cACT,IAAK1pB,EAAM,SACX,WAAY,SACZ,eAAgB,SAChB,WAAAw+C,EACA,WAAY,SACZ,UAAW,SACX,gBAAiB,OACjB,WAAY,cACZ,OAAQ,GAAG19C,GAAKd,EAAM,SAAS,CAAC,IAAIA,EAAM,QAAQ,eAClD,OAAQ,UACR,WAAY,OAAOA,EAAM,iBAAiB,IAAIA,EAAM,eAAe,GACnE,WAAY,OACZ,YAAa,eACb,MAAOA,EAAM,UACb,iBAAkB,CAChB,cAAe,MACvB,EAEM,CAAC,GAAG0pB,CAAY,aAAa,EAAGwC,GAAS,EACzC,MAAO,CACL,MAAO,cACf,EACM,mBAAoBW,GAAc7sB,CAAK,EACvC,CAAC,IAAI0pB,CAAY,kCAAkC,EAAG,CACpD,cAAe,QACvB,EACM,CAAC,IAAIA,CAAY,8BAA8Bsc,CAAO,GAAG,EAAG,CAC1D,gBAAiB,UACjB,cAAe,QACvB,EACM,CAAC,IAAItc,CAAY,YAAY,EAAG,CAC9B,cAAe,EAEf,CAAC,IAAIA,CAAY,eAAe,EAAG,CACjC,KAAM,MAChB,EACQ,CAAC,IAAIA,CAAY,QAAQ,EAAG,CAC1B,MAAO,MACjB,CACA,EAEM,CAAC,IAAIA,CAAY,UAAU,EAAG,CAC5B,QAAS+0B,EACT,OAAQ,SAChB,EACM,CAAC,GAAG/0B,CAAY,eAAe,EAAG,CAChC,WAAY,CAAC,QAAS,UAAW,QAAQ,EAAE,IAAIk1B,GAAc,GAAGA,CAAU,IAAIF,CAAkB,IAAIC,CAAe,EAAE,EAAE,KAAK,GAAG,CACvI,EAEM,CAAC,SAASj1B,CAAY,YAAY,EAAG,CACnC,CAAC,GAAGA,CAAY,sBAAsB,EAAG,CACvC,gCAAiC,CAC/B,gBAAiBtR,EAAKssB,CAAQ,EAAE,IAAI,EAAE,EAAE,MAAK,CACzD,EACU,kCAAmC,CACjC,gBAAiB,CAC7B,EACU,gBAAiB,CACf,gBAAiB,CAC7B,EACU,iBAAkB,CAChB,gBAAiBtsB,EAAKssB,CAAQ,EAAE,IAAI,EAAE,EAAE,MAAK,CACzD,CACA,CACA,EACM,aAAc,CACZ,cAAe,cACf,CAAC,GAAGhb,CAAY,sBAAsB,EAAG,CACvC,gCAAiC,CAC/B,kBAAmBtR,EAAKssB,CAAQ,EAAE,IAAI,EAAE,EAAE,MAAK,CAC3D,EACU,kCAAmC,CACjC,kBAAmB,CAC/B,EACU,gBAAiB,CACf,kBAAmB,CAC/B,EACU,iBAAkB,CAChB,kBAAmBtsB,EAAKssB,CAAQ,EAAE,IAAI,EAAE,EAAE,MAAK,CAC3D,CACA,CACA,CACA,CACA,CACA,EACMma,GAA4B,CAACC,EAAQC,EAAYC,KAAiB,CACtE,CAAC,wBAAwBF,CAAM,YAAY,EAAG,CAC5C,UAAWC,EACX,WAAYC,CAChB,CACA,GAEMC,GAAuBj/C,IAAU,CACrC,SAAUA,EAAM,cAChB,mBAAoB,EACpB,iBAAkB,EAClB,aAAc,KAChB,GACMk/C,GAAsBl/C,IAAU,CACpC,aAAcA,EAAM,cACpB,mBAAoBA,EAAM,KAAKA,EAAM,aAAa,EAAE,IAAI,CAAC,EAAE,MAAK,EAChE,iBAAkBA,EAAM,KAAKA,EAAM,aAAa,EAAE,IAAI,CAAC,EAAE,MAAK,CAChE,GACMm/C,GAAmBn/C,IAAU,CACjC,OAAQ,cACR,YAAaA,EAAM,oBACnB,MAAOA,EAAM,kBACb,WAAYA,EAAM,yBAClB,UAAW,MACb,GACMo/C,GAAsB,CAACN,EAAQxmC,EAAYiV,EAAW8W,EAAagb,EAAmBC,EAAqBP,EAAYC,KAAiB,CAC5I,CAAC,IAAIF,CAAM,mBAAmB,EAAG,OAAO,OAAO,OAAO,OAAO,CAC3D,MAAOvxB,GAAa,OACpB,WAAAjV,EACA,YAAa+rB,GAAe,OAC5B,UAAW,MACf,EAAKwa,GAA0BC,EAAQ,OAAO,OAAO,CACjD,WAAAxmC,CACJ,EAAKymC,CAAU,EAAG,OAAO,OAAO,CAC5B,WAAAzmC,CACJ,EAAK0mC,CAAW,CAAC,CAAC,EAAG,CACjB,aAAc,CACZ,OAAQ,cACR,MAAOK,GAAqB,OAC5B,YAAaC,GAAuB,MAC1C,CACA,CAAG,CACH,GACMC,GAA8Bv/C,IAAU,CAC5C,CAAC,gBAAgBA,EAAM,YAAY,WAAW,EAAG,OAAO,OAAO,CAAA,EAAIm/C,GAAiBn/C,CAAK,CAAC,CAC5F,GACMw/C,GAA6Bx/C,IAAU,CAC3C,CAAC,gBAAgBA,EAAM,YAAY,WAAW,EAAG,CAC/C,OAAQ,cACR,MAAOA,EAAM,iBACjB,CACA,GAEMy/C,GAAwB,CAACz/C,EAAO++C,EAAYC,EAAa9f,IAAY,CAEzE,MAAMwgB,EADiBxgB,GAAW,CAAC,OAAQ,MAAM,EAAE,SAASA,CAAO,EACnBsgB,GAA6BD,GAC7E,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIG,EAAuB1/C,CAAK,CAAC,EAAG6+C,GAA0B7+C,EAAM,aAAc++C,EAAYC,CAAW,CAAC,CAC/I,EACMW,GAAsB,CAAC3/C,EAAOutB,EAAWjV,EAAYymC,EAAYC,KAAiB,CACtF,CAAC,IAAIh/C,EAAM,YAAY,gBAAgB,EAAG,OAAO,OAAO,CACtD,MAAOutB,EACP,WAAAjV,CACJ,EAAKmnC,GAAsBz/C,EAAO++C,EAAYC,CAAW,CAAC,CAC1D,GACMY,GAA+B,CAAC5/C,EAAOqkC,EAAa/rB,EAAYymC,EAAYC,KAAiB,CACjG,CAAC,IAAIh/C,EAAM,YAAY,uBAAuBA,EAAM,YAAY,iBAAiB,EAAG,OAAO,OAAO,CAChG,YAAAqkC,EACA,WAAA/rB,CACJ,EAAKmnC,GAAsBz/C,EAAO++C,EAAYC,CAAW,CAAC,CAC1D,GACMa,GAAuB7/C,IAAU,CACrC,CAAC,IAAIA,EAAM,YAAY,iBAAiB,EAAG,CACzC,YAAa,QACjB,CACA,GACM8/C,GAAuB,CAAC9/C,EAAOsY,EAAYymC,EAAYC,KAAiB,CAC5E,CAAC,IAAIh/C,EAAM,YAAY,iBAAiB,EAAG,OAAO,OAAO,CACvD,UAAW,OACX,WAAAsY,CACJ,EAAKmnC,GAAsBz/C,EAAO++C,EAAYC,CAAW,CAAC,CAC1D,GACMe,GAAyB,CAAC//C,EAAOutB,EAAW2R,EAAS6f,EAAYC,KAAiB,CACtF,CAAC,IAAIh/C,EAAM,YAAY,YAAYk/B,CAAO,EAAE,EAAG,OAAO,OAAO,CAC3D,MAAO3R,EACP,UAAW,MACf,EAAKkyB,GAAsBz/C,EAAO++C,EAAYC,EAAa9f,CAAO,CAAC,CACnE,GAEM8gB,GAAsBhgD,GAAS,CACnC,KAAM,CACJ,aAAA0pB,CACJ,EAAM1pB,EACJ,OAAOgqB,GAAa,OAAO,CAACvwC,EAAMimC,IAAa,CAC7C,MAAM4N,EAAYttB,EAAM,GAAG0f,CAAQ,GAAG,EAChC0N,EAAaptB,EAAM,GAAG0f,CAAQ,GAAG,EACjCugC,EAAajgD,EAAM,GAAG0f,CAAQ,GAAG,EACjCwgC,EAAkBlgD,EAAM,GAAG0f,CAAQ,GAAG,EACtC2N,EAAmBrtB,EAAM,GAAG0f,CAAQ,GAAG,EACvCygC,EAAcngD,EAAM,GAAG0f,CAAQ,GAAG,EACxC,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIjmC,CAAI,EAAG,CAC5C,CAAC,IAAIiwC,CAAY,UAAUhK,CAAQ,EAAE,EAAG,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAC1H,MAAO4N,EACP,UAAWttB,EAAM,GAAG0f,CAAQ,aAAa,CACjD,EAASigC,GAAoB3/C,EAAOA,EAAM,oBAAqBstB,EAAW,CAClE,WAAY2yB,CACpB,EAAS,CACD,WAAYE,CACpB,CAAO,CAAC,EAAGP,GAA6B5/C,EAAOstB,EAAWttB,EAAM,iBAAkB,CAC1E,MAAOigD,EACP,YAAaA,EACb,WAAYjgD,EAAM,gBAC1B,EAAS,CACD,MAAOmgD,EACP,YAAaA,EACb,WAAYngD,EAAM,gBAC1B,CAAO,CAAC,EAAG6/C,GAAqB7/C,CAAK,CAAC,EAAG8/C,GAAqB9/C,EAAOotB,EAAY,CACzE,WAAY8yB,CACpB,EAAS,CACD,WAAY7yB,CACpB,CAAO,CAAC,EAAG0yB,GAAuB//C,EAAOstB,EAAW,OAAQ,CACpD,MAAO2yB,CACf,EAAS,CACD,MAAOE,CACf,CAAO,CAAC,EAAGJ,GAAuB//C,EAAOstB,EAAW,OAAQ,CACpD,MAAO2yB,EACP,WAAY7yB,CACpB,EAAS,CACD,MAAO+yB,EACP,WAAY9yB,CACpB,CAAO,CAAC,CACR,CAAK,CACH,EAAG,CAAA,CAAE,CACP,EACM+yB,GAAwBpgD,GAAS,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAC3G,MAAOA,EAAM,aACb,UAAWA,EAAM,aACnB,EAAG2/C,GAAoB3/C,EAAOA,EAAM,eAAgBA,EAAM,aAAc,CACtE,MAAOA,EAAM,eACb,WAAYA,EAAM,iBACpB,EAAG,CACD,MAAOA,EAAM,eACb,WAAYA,EAAM,kBACpB,CAAC,CAAC,EAAG6/C,GAAqB7/C,CAAK,CAAC,EAAG8/C,GAAqB9/C,EAAOA,EAAM,kBAAmB,CACtF,WAAYA,EAAM,kBACpB,EAAG,CACD,WAAYA,EAAM,SACpB,CAAC,CAAC,EAAGo/C,GAAoBp/C,EAAM,aAAcA,EAAM,QAASA,EAAM,kBAAmBA,EAAM,wBAAyBA,EAAM,kBAAmBA,EAAM,WAAW,CAAC,EAAG+/C,GAAuB//C,EAAOA,EAAM,cAAe,OAAQ,CAC3N,MAAOA,EAAM,eACb,WAAYA,EAAM,WACpB,EAAG,CACD,MAAOA,EAAM,eACf,CAAC,CAAC,EACIqgD,GAAwBrgD,GAAS,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CACzH,MAAOA,EAAM,aACb,UAAWA,EAAM,aACnB,EAAG4/C,GAA6B5/C,EAAOA,EAAM,aAAcA,EAAM,iBAAkB,CACjF,MAAOA,EAAM,sBACb,YAAaA,EAAM,kBACnB,WAAYA,EAAM,gBACpB,EAAG,CACD,MAAOA,EAAM,uBACb,YAAaA,EAAM,mBACnB,WAAYA,EAAM,gBACpB,CAAC,CAAC,EAAG6/C,GAAqB7/C,CAAK,CAAC,EAAG8/C,GAAqB9/C,EAAOA,EAAM,eAAgB,CACnF,WAAYA,EAAM,mBACpB,EAAG,CACD,WAAYA,EAAM,kBACpB,CAAC,CAAC,EAAG+/C,GAAuB//C,EAAOA,EAAM,iBAAkB,OAAQ,CACjE,MAAOA,EAAM,sBACb,WAAYA,EAAM,cACpB,EAAG,CACD,MAAOA,EAAM,uBACb,WAAYA,EAAM,kBACpB,CAAC,CAAC,EAAG+/C,GAAuB//C,EAAOA,EAAM,iBAAkB,OAAQ,CACjE,MAAOA,EAAM,sBACb,WAAYA,EAAM,WACpB,EAAG,CACD,MAAOA,EAAM,sBACf,CAAC,CAAC,EAAGo/C,GAAoBp/C,EAAM,aAAcA,EAAM,QAASA,EAAM,aAAcA,EAAM,aAAcA,EAAM,kBAAmBA,EAAM,YAAa,CAC9I,MAAOA,EAAM,kBACb,YAAaA,EAAM,iBACrB,EAAG,CACD,MAAOA,EAAM,mBACb,YAAaA,EAAM,kBACrB,CAAC,CAAC,EACIsgD,GAAoBtgD,GAAS,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CACnI,MAAOA,EAAM,WACb,UAAWA,EAAM,YACnB,EAAG2/C,GAAoB3/C,EAAOA,EAAM,YAAaA,EAAM,WAAY,CACjE,WAAYA,EAAM,eACpB,EAAG,CACD,WAAYA,EAAM,gBACpB,CAAC,CAAC,EAAG4/C,GAA6B5/C,EAAOA,EAAM,WAAYA,EAAM,iBAAkB,CACjF,MAAOA,EAAM,gBACb,YAAaA,EAAM,qBACrB,EAAG,CACD,MAAOA,EAAM,iBACb,YAAaA,EAAM,gBACrB,CAAC,CAAC,EAAG6/C,GAAqB7/C,CAAK,CAAC,EAAG8/C,GAAqB9/C,EAAOA,EAAM,aAAc,CACjF,WAAYA,EAAM,uBACpB,EAAG,CACD,WAAYA,EAAM,kBACpB,CAAC,CAAC,EAAG+/C,GAAuB//C,EAAOA,EAAM,WAAY,OAAQ,CAC3D,MAAOA,EAAM,gBACb,WAAYA,EAAM,YACpB,EAAG,CACD,MAAOA,EAAM,gBACb,WAAYA,EAAM,kBACpB,CAAC,CAAC,EAAG+/C,GAAuB//C,EAAOA,EAAM,WAAY,OAAQ,CAC3D,MAAOA,EAAM,eACf,EAAG,CACD,MAAOA,EAAM,gBACf,CAAC,CAAC,EAAGo/C,GAAoBp/C,EAAM,aAAcA,EAAM,QAASA,EAAM,WAAYA,EAAM,WAAYA,EAAM,kBAAmBA,EAAM,YAAa,CAC1I,MAAOA,EAAM,gBACb,YAAaA,EAAM,eACrB,EAAG,CACD,MAAOA,EAAM,iBACb,YAAaA,EAAM,gBACrB,CAAC,CAAC,EACIosB,GAAepsB,GAAS,OAAO,OAAO,OAAO,OAAO,CAAA,EAAI+/C,GAAuB//C,EAAOA,EAAM,UAAW,OAAQ,CACnH,MAAOA,EAAM,cACf,EAAG,CACD,MAAOA,EAAM,eACf,CAAC,CAAC,EAAGo/C,GAAoBp/C,EAAM,aAAcA,EAAM,QAASA,EAAM,UAAWA,EAAM,UAAWA,EAAM,kBAAmBA,EAAM,YAAa,CACxI,MAAOA,EAAM,eACb,YAAaA,EAAM,cACrB,EAAG,CACD,MAAOA,EAAM,gBACb,YAAaA,EAAM,eACrB,CAAC,CAAC,EACIugD,GAAsBvgD,GAAS,CACnC,KAAM,CACJ,aAAA0pB,CACJ,EAAM1pB,EACJ,OAAO,OAAO,OAAO,CACnB,CAAC,GAAG0pB,CAAY,gBAAgB,EAAG02B,GAAsBpgD,CAAK,EAC9D,CAAC,GAAG0pB,CAAY,gBAAgB,EAAG22B,GAAsBrgD,CAAK,EAC9D,CAAC,GAAG0pB,CAAY,kBAAkB,EAAG42B,GAAkBtgD,CAAK,EAC5D,CAAC,GAAG0pB,CAAY,aAAa,EAAG0C,GAAapsB,CAAK,CACtD,EAAKggD,GAAoBhgD,CAAK,CAAC,CAC/B,EAEMwgD,GAA2BxgD,GAAS,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAI4/C,GAA6B5/C,EAAOA,EAAM,mBAAoBA,EAAM,UAAW,CACnL,MAAOA,EAAM,kBACb,YAAaA,EAAM,wBACnB,WAAYA,EAAM,cACpB,EAAG,CACD,MAAOA,EAAM,mBACb,YAAaA,EAAM,yBACnB,WAAYA,EAAM,eACpB,CAAC,CAAC,EAAG+/C,GAAuB//C,EAAOA,EAAM,cAAe,OAAQ,CAC9D,MAAOA,EAAM,mBACb,WAAYA,EAAM,WACpB,EAAG,CACD,MAAOA,EAAM,oBACb,WAAYA,EAAM,iBACpB,CAAC,CAAC,EAAG2/C,GAAoB3/C,EAAOA,EAAM,aAAcA,EAAM,aAAc,CACtE,WAAYA,EAAM,kBAClB,MAAOA,EAAM,YACf,EAAG,CACD,WAAYA,EAAM,mBAClB,MAAOA,EAAM,YACf,CAAC,CAAC,EAAG+/C,GAAuB//C,EAAOA,EAAM,UAAW,OAAQ,CAC1D,MAAOA,EAAM,eACb,WAAYA,EAAM,WACpB,EAAG,CACD,MAAOA,EAAM,eACf,CAAC,CAAC,EAEIygD,GAAiB,CAACzgD,EAAO8nB,EAAY,KAAO,CAChD,KAAM,CACJ,aAAA4B,EACA,cAAA9L,EACA,SAAAE,EACA,aAAAL,EACA,wBAAAijC,EACA,QAAA1a,EACA,sBAAA2a,EACA,uBAAAC,CACJ,EAAM5gD,EACJ,MAAO,CAAC,CACN,CAAC8nB,CAAS,EAAG,CACX,SAAAhK,EACA,OAAQF,EACR,QAAS,GAAG9c,GAAK6/C,CAAqB,CAAC,IAAI7/C,GAAK4/C,CAAuB,CAAC,GACxE,aAAAjjC,EACA,CAAC,IAAIiM,CAAY,YAAY,EAAG,CAC9B,MAAO9L,EACP,CAACooB,CAAO,EAAG,CACT,SAAU4a,CACpB,CACA,CACA,CACA,EAEE,CACE,CAAC,GAAGl3B,CAAY,GAAGA,CAAY,UAAU5B,CAAS,EAAE,EAAGm3B,GAAqBj/C,CAAK,CACrF,EAAK,CACD,CAAC,GAAG0pB,CAAY,GAAGA,CAAY,SAAS5B,CAAS,EAAE,EAAGo3B,GAAoBl/C,CAAK,CACnF,CAAG,CACH,EACM6gD,GAAyB7gD,GAAS,CACtC,MAAM8gD,EAAY76B,GAAWjmB,EAAO,CAClC,SAAUA,EAAM,eACpB,CAAG,EACD,OAAOygD,GAAeK,EAAW9gD,EAAM,YAAY,CACrD,EACM+gD,GAA0B/gD,GAAS,CACvC,MAAMghD,EAAa/6B,GAAWjmB,EAAO,CACnC,cAAeA,EAAM,gBACrB,SAAUA,EAAM,kBAChB,QAASA,EAAM,UACf,wBAAyBA,EAAM,gBAC/B,sBAAuB,EACvB,aAAcA,EAAM,eACpB,uBAAwBA,EAAM,cAClC,CAAG,EACD,OAAOygD,GAAeO,EAAY,GAAGhhD,EAAM,YAAY,KAAK,CAC9D,EACMihD,GAA0BjhD,GAAS,CACvC,MAAMkhD,EAAaj7B,GAAWjmB,EAAO,CACnC,cAAeA,EAAM,gBACrB,SAAUA,EAAM,kBAChB,wBAAyBA,EAAM,gBAC/B,sBAAuB,EACvB,aAAcA,EAAM,eACpB,uBAAwBA,EAAM,cAClC,CAAG,EACD,OAAOygD,GAAeS,EAAY,GAAGlhD,EAAM,YAAY,KAAK,CAC9D,EACMmhD,GAAsBnhD,GAAS,CACnC,KAAM,CACJ,aAAA0pB,CACJ,EAAM1pB,EACJ,MAAO,CACL,CAAC0pB,CAAY,EAAG,CACd,CAAC,IAAIA,CAAY,QAAQ,EAAG,CAC1B,MAAO,MACf,CACA,CACA,CACA,EAEA03B,GAAe/5B,GAAc,SAAUrnB,GAAS,CAC9C,MAAMqhD,EAAc3D,GAAa19C,CAAK,EACtC,MAAO,CAEPu+C,GAAqB8C,CAAW,EAEhCR,GAAuBQ,CAAW,EAAGN,GAAwBM,CAAW,EAAGJ,GAAwBI,CAAW,EAE9GF,GAAoBE,CAAW,EAE/Bd,GAAoBc,CAAW,EAE/Bb,GAAyBa,CAAW,EAEpCtN,GAAcsN,CAAW,CAAC,CAC5B,EAAGxD,GAAuB,CACxB,SAAU,CACR,WAAY,GACZ,kBAAmB,GACnB,oBAAqB,GACrB,oBAAqB,EACzB,CACA,CAAC,ECxdD,SAASyD,GAAkBthD,EAAOuhD,EAAWx3E,EAAS,CACpD,KAAM,CACJ,WAAAy3E,EACA,MAAAC,EACA,YAAAC,CACJ,EAAM33E,EACE43E,EAAkBD,EAAc,MAAQ,GACxCE,EAAe,CAAC,QAASH,EAAQ,QAAU,KAAM,QAAQ,EAAE,OAAO,OAAO,EAAE,IAAIlrE,GAAK,KAAKA,CAAC,IAAIorE,CAAe,EAAE,EAAE,KAAK,GAAG,EAC/H,MAAO,CACL,CAAC,cAAcJ,CAAS,aAAa,EAAG,CACtC,gBAAiBvhD,EAAM,KAAKA,EAAM,SAAS,EAAE,IAAI,EAAE,EAAE,MAAK,CAChE,EACI,SAAU,OAAO,OAAO,OAAO,OAAO,CACpC,CAAC4hD,CAAY,EAAG,CACd,OAAQ,CAChB,CACA,EAAOJ,EAAa,CACd,CAAC,IAAIA,CAAU,EAAE,EAAG,CAClB,OAAQ,CAChB,CACA,EAAQ,CAAA,CAAE,EAAG,CACP,CAAC,eAAeG,CAAe,EAAE,EAAG,CAClC,OAAQ,CAChB,CACA,CAAK,CACL,CACA,CAEA,SAASE,GAAwB/5B,EAAWy5B,EAAWx3E,EAAS,CAC9D,KAAM,CACJ,YAAA23E,CACJ,EAAM33E,EACE43E,EAAkBD,EAAc,KAAKA,CAAW,GAAK,GAC3D,MAAO,CACL,CAAC,cAAcH,CAAS,oBAAoBA,CAAS,eAAeI,CAAe,EAAE,EAAG,CACtF,aAAc,CACpB,EACI,CAAC,cAAcJ,CAAS,cAAcA,CAAS,aAAa,EAAG,CAC7D,CAAC,KAAKI,CAAe,MAAM75B,CAAS,OAAO65B,CAAe,MAAM75B,CAAS,OAAO65B,CAAe,EAAE,EAAG,CAClG,qBAAsB,EACtB,mBAAoB,CAC5B,CACA,EACI,CAAC,cAAcJ,CAAS,eAAeA,CAAS,YAAY,EAAG,CAC7D,CAAC,KAAKI,CAAe,MAAM75B,CAAS,OAAO65B,CAAe,MAAM75B,CAAS,OAAO65B,CAAe,EAAE,EAAG,CAClG,uBAAwB,EACxB,qBAAsB,CAC9B,CACA,CACA,CACA,CACO,SAASG,GAAoB9hD,EAAOj2B,EAAU,CACnD,MAAO,EACT,EAAG,CACD,KAAM,CACJ,aAAA2/C,CACJ,EAAM1pB,EACE+hD,EAAa,GAAGr4B,CAAY,WAClC,MAAO,CACL,CAACq4B,CAAU,EAAG,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIT,GAAkBthD,EAAO+hD,EAAYh4E,CAAO,CAAC,EAAG83E,GAAwBn4B,EAAcq4B,EAAYh4E,CAAO,CAAC,CAC5J,CACA,CC9DA,SAASi4E,GAA0BhiD,EAAOuhD,EAAW,CACnD,MAAO,CAEL,CAAC,cAAcA,CAAS,aAAa,EAAG,CACtC,aAAcvhD,EAAM,KAAKA,EAAM,SAAS,EAAE,IAAI,EAAE,EAAE,MAAK,CAC7D,EACI,SAAU,CACR,2BAA4B,CAC1B,OAAQ,CAChB,EACM,cAAe,CACb,OAAQ,CAChB,CACA,CACA,CACA,CACA,SAASiiD,GAAgCn6B,EAAWy5B,EAAW,CAC7D,MAAO,CACL,CAAC,cAAcA,CAAS,oBAAoBA,CAAS,aAAa,EAAG,CACnE,aAAc,CACpB,EACI,CAAC,SAASA,CAAS,mBAAmBA,CAAS,aAAa,EAAG,CAC7D,CAAC,OAAOz5B,CAAS,SAASA,CAAS,KAAK,EAAG,CACzC,mBAAoB,EACpB,qBAAsB,CAC9B,CACA,EACI,CAAC,SAASy5B,CAAS,kBAAkBA,CAAS,cAAc,EAAG,CAC7D,CAAC,OAAOz5B,CAAS,SAASA,CAAS,KAAK,EAAG,CACzC,uBAAwB,EACxB,qBAAsB,CAC9B,CACA,CACA,CACA,CACO,SAASo6B,GAA4BliD,EAAO,CACjD,MAAM+hD,EAAa,GAAG/hD,EAAM,YAAY,oBACxC,MAAO,CACL,CAAC+hD,CAAU,EAAG,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIC,GAA0BhiD,EAAO+hD,CAAU,CAAC,EAAGE,GAAgCjiD,EAAM,aAAc+hD,CAAU,CAAC,CAChK,CACA,CCpCA,MAAMI,GAAwBniD,GAAS,CACrC,KAAM,CACJ,aAAA0pB,EACA,kBAAA04B,EACA,UAAA1kC,EACA,KAAAtF,CACJ,EAAMpY,EACEqiD,EAAcjqC,EAAKsF,CAAS,EAAE,IAAI,EAAE,EAAE,MAAK,EAC3C4kC,EAAwBC,GAAY,CACxC,MAAM9/D,EAAW,GAAGinC,CAAY,WAAW64B,EAAW,YAAc,EAAE,QAAQ74B,CAAY,2BAC1F,MAAO,CACL,CAAC,GAAGjnC,CAAQ,MAAMA,CAAQ,UAAU,EAAG,CACrC,SAAU,WACV,IAAK8/D,EAAWF,EAAc,EAC9B,iBAAkBE,EAAW,EAAIF,EACjC,gBAAiBD,EACjB,QAAS,KACT,MAAOG,EAAW,OAAS7kC,EAC3B,OAAQ6kC,EAAW7kC,EAAY,MACvC,CACA,CACE,EAEA,OAAO,OAAO,OAAO,OAAO,OAAO,GAAI4kC,GAAuB,EAAGA,EAAsB,EAAI,CAAC,CAC9F,EAEA1Q,GAAe/nB,GAAqB,CAAC,SAAU,SAAS,EAAG7pB,GAAS,CAClE,MAAMqhD,EAAc3D,GAAa19C,CAAK,EACtC,MAAO,CAEP8hD,GAAoBT,CAAW,EAAGa,GAA4Bb,CAAW,EAAGc,GAAsBd,CAAW,CAAC,CAChH,EAAGxD,EAAqB,ECjCxB,IAAIhzB,GAAgC,SAAU/kD,EAAGe,EAAG,CAClD,IAAId,EAAI,CAAA,EACR,QAASe,KAAKhB,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGgB,CAAC,GAAKD,EAAE,QAAQC,CAAC,EAAI,IAAGf,EAAEe,CAAC,EAAIhB,EAAEgB,CAAC,GAC/F,GAAIhB,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WAAY,QAAS,EAAI,EAAGgB,EAAI,OAAO,sBAAsBhB,CAAC,EAAG,EAAIgB,EAAE,OAAQ,IAClID,EAAE,QAAQC,EAAE,CAAC,CAAC,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKhB,EAAGgB,EAAE,CAAC,CAAC,IAAGf,EAAEe,EAAE,CAAC,CAAC,EAAIhB,EAAEgB,EAAE,CAAC,CAAC,GAElG,OAAOf,CACT,EAiBA,SAASy8E,GAAiB9O,EAAS,CACjC,GAAI,OAAOA,GAAY,UAAYA,EAAS,CAC1C,IAAIviD,EAAQuiD,GAAY,KAA6B,OAASA,EAAQ,MACtE,OAAAviD,EAAQ,CAAC,OAAO,MAAMA,CAAK,GAAK,OAAOA,GAAU,SAAWA,EAAQ,EAC7D,CACL,QAASA,GAAS,EAClB,MAAAA,CACN,CACE,CACA,MAAO,CACL,QAAS,CAAC,CAACuiD,EACX,MAAO,CACX,CACA,CACA,MAAM+O,GAAgB,CACpB,QAAS,CAAC,UAAW,UAAU,EAC/B,QAAS,CAAC,UAAW,OAAO,EAC5B,OAAQ,CAAC,UAAW,QAAQ,EAE5B,KAAM,CAAC,OAAQ,MAAM,EACrB,KAAM,CAAC,UAAW,MAAM,CAC1B,EAoOMC,GAnOwChgE,EAAM,WAAW,CAAC3G,EAAOP,IAAQ,CAC7E,IAAI5R,EAAID,EACR,KAAM,CACF,QAAA+pE,EAAU,GACV,UAAWpzB,EACX,MAAAnI,EACA,QAAA+mB,EACA,KAAAx1D,EACA,OAAAi5E,EAAS,GACT,MAAAC,EAAQ,UACR,KAAMC,EACN,OAAAnwD,EACA,SAAUowD,EACV,UAAAhhB,EACA,cAAAY,EACA,SAAA55C,EACA,KAAA+4C,EACA,aAAAkhB,EAAe,QACf,MAAAC,EAAQ,GACR,MAAAlR,EAAQ,GAER,SAAAmR,EAAW,SACX,WAAYC,EACZ,MAAOC,EAAc,CAAA,EACrB,gBAAAC,EACA,UAAAC,CACN,EAAQtnE,EACJ1H,EAAOw2C,GAAO9uC,EAAO,CAAC,UAAW,YAAa,QAAS,UAAW,OAAQ,SAAU,QAAS,OAAQ,SAAU,WAAY,YAAa,gBAAiB,WAAY,OAAQ,eAAgB,QAAS,QAAS,WAAY,aAAc,QAAS,kBAAmB,WAAW,CAAC,EAG7QunE,EAAa55E,GAAQ,UACrB,CACJ,OAAA65E,CACJ,EAAM7gE,EAAM,WAAW69B,EAAa,EAC5B,CAACijC,EAAaC,CAAa,EAAIr1D,EAAAA,QAAQ,IAAM,CAGjD,GAAI+pB,GAAS+mB,EACX,MAAO,CAAC/mB,EAAO+mB,CAAO,EAGxB,GAAIx1D,GAAQi5E,EAAQ,CAClB,MAAMe,GAAmBjB,GAAca,CAAU,GAAK,CAAA,EACtD,OAAIX,EACK,CAAC,SAAUe,GAAiB,CAAC,CAAC,EAEhCA,EACT,CAEA,OAAKH,GAAW,MAAqCA,EAAO,QAAWA,GAAW,MAAqCA,EAAO,SACrH,CAACA,EAAO,MAAOA,EAAO,OAAO,EAE/B,CAAC,UAAW,UAAU,CAC/B,EAAG,CAAC75E,EAAMyuC,EAAO+mB,EAASyjB,EAAQY,GAAW,KAA4B,OAASA,EAAO,QAASA,GAAW,KAA4B,OAASA,EAAO,KAAK,CAAC,EAEzJI,EADWH,IAAgB,SACE,YAAcA,EAC3C,CACJ,aAAA3iC,EACA,UAAAC,EACA,gBAAiB8iC,EACjB,UAAW9b,EACX,MAAOC,EACP,WAAY8b,EACZ,OAAQC,CACZ,EAAMpjC,GAAmB,QAAQ,EACzBqjC,GAAqBn6E,EAAKw5E,GAA2EQ,KAA4B,MAAQh6E,IAAO,OAASA,EAAK,GAC9Jk+C,EAAYjH,EAAa,MAAOP,CAAkB,EAClD,CAAC8H,GAAY1mB,GAAQ2mB,EAAS,EAAIX,GAASI,CAAS,EACpDvxB,GAAWpa,EAAAA,WAAWwlC,EAAe,EACrCqiC,GAAiBlB,GAAwEvsD,GACzF0tD,EAAY9nE,EAAAA,WAAW+1D,EAAgB,EACvCgS,EAAiB91D,EAAAA,QAAQ,IAAMo0D,GAAiB9O,CAAO,EAAG,CAACA,CAAO,CAAC,EACnE,CAACyQ,GAAcC,CAAU,EAAItnE,EAAAA,SAASonE,EAAe,OAAO,EAC5D,CAACG,GAAcC,EAAe,EAAIxnE,EAAAA,SAAS,EAAK,EAChDynE,GAAY9oE,EAAAA,OAAO,IAAI,EACvBsb,GAAY9H,GAAczT,EAAK+oE,EAAS,EACxC7R,GAAe8R,WAAS,MAAM17D,CAAQ,IAAM,GAAK,CAAC+4C,GAAQ,CAAC2Q,GAA0BiR,CAAa,EAIlGgB,GAAahpE,EAAAA,OAAO,EAAI,EAC9BiH,EAAM,UAAU,KACd+hE,GAAW,QAAU,GACd,IAAM,CACXA,GAAW,QAAU,EACvB,GACC,CAAA,CAAE,EAILriD,EAAAA,gBAAgB,IAAM,CACpB,IAAIsiD,GAAa,KACbR,EAAe,MAAQ,EACzBQ,GAAa,WAAW,IAAM,CAC5BA,GAAa,KACbN,EAAW,EAAI,CACjB,EAAGF,EAAe,KAAK,EAEvBE,EAAWF,EAAe,OAAO,EAEnC,SAASS,IAAe,CAClBD,KACF,aAAaA,EAAU,EACvBA,GAAa,KAEjB,CACA,OAAOC,EACT,EAAG,CAACT,EAAe,MAAOA,EAAe,OAAO,CAAC,EAEjDxoE,EAAAA,UAAU,IAAM,CAEd,GAAI,CAAC6oE,GAAU,SAAW,CAACR,EACzB,OAEF,MAAMa,GAAaL,GAAU,QAAQ,aAAe,GAChD7R,IAAgBJ,GAAYsS,EAAU,EACnCP,IACHC,GAAgB,EAAI,EAEbD,IACTC,GAAgB,EAAK,CAEzB,CAAC,EAED5oE,EAAAA,UAAU,IAAM,CACV2nE,GAAakB,GAAU,SACzBA,GAAU,QAAQ,MAAK,CAE3B,EAAG,CAAA,CAAE,EAEL,MAAMM,GAAcniE,EAAM,YAAY7b,IAAK,CACzC,IAAI+C,GAEJ,GAAIu6E,IAAgBH,GAAgB,CAClCn9E,GAAE,eAAc,EAChB,MACF,EACC+C,GAAKmS,EAAM,WAAa,MAAQnS,KAAO,QAAkBA,GAAG,KAAKmS,GAAO,SAAUA,EAAQlV,GAAK,CAClG,EAAG,CAACkV,EAAM,QAASooE,GAAcH,EAAc,CAAC,EAEhD,GAAI,QAAQ,IAAI,WAAa,aAAc,CACzC,MAAM76D,GAAUirB,GAAc,QAAQ,EACtC,QAAQ,IAAI,WAAa,cAAejrB,GAAQ,EAAE,OAAO04C,GAAS,UAAYA,EAAK,OAAS,GAAI,WAAY,8EAA8EA,CAAI,0CAA0C,EACxO,QAAQ,IAAI,WAAa,cAAe14C,GAAQ,EAAE65D,GAASxQ,GAA0BiR,CAAa,GAAI,QAAS,oDAAoD,CACrK,CAEA,KAAM,CACJ,YAAAqB,GACA,sBAAA1T,EACJ,EAAMF,GAAsBppB,EAAWhH,CAAS,EACxCikC,GAAmB,CACvB,MAAO,KACP,MAAO,KACP,OAAQ,MACZ,EACQC,GAAevU,GAAQwU,IAAW,CACtC,IAAIr7E,GAAID,GACR,OAAQA,IAAMC,GAAKi5E,GAAqEiC,MAAiB,MAAQl7E,KAAO,OAASA,GAAKq6E,KAAe,MAAQt6E,KAAO,OAASA,GAAKs7E,EACpL,CAAC,EACK7S,EAAU4S,KAAgBr7E,EAAKo7E,GAAiBC,EAAY,KAAO,MAAQr7E,IAAO,OAASA,EAAU,GACrG68D,GAAW2d,GAAe,UAAYtiB,EACtCqjB,GAAsB3X,GAAKl5D,EAAM,CAAC,UAAU,CAAC,EAE7C8T,GAAUD,GAAW4/B,EAAWpmB,GAAQ2mB,GAAW,CACvD,CAAC,GAAGP,CAAS,IAAI86B,CAAK,EAAE,EAAGA,IAAU,WAAaA,EAElD,CAAC,GAAG96B,CAAS,IAAIw7B,CAAU,EAAE,EAAGA,EAChC,CAAC,GAAGx7B,CAAS,YAAY,EAAG66B,EAC5B,CAAC,GAAG76B,CAAS,UAAU67B,CAAe,EAAE,EAAGA,EAC3C,CAAC,GAAG77B,CAAS,YAAY27B,CAAa,EAAE,EAAGA,EAC3C,CAAC,GAAG37B,CAAS,IAAIsqB,CAAO,EAAE,EAAGA,EAC7B,CAAC,GAAGtqB,CAAS,YAAY,EAAG,CAACh/B,GAAYA,IAAa,GAAK,CAAC,CAAC09C,GAC7D,CAAC,GAAG1e,CAAS,mBAAmB,EAAGk7B,GAAS,CAACxQ,GAA0BiR,CAAa,EACpF,CAAC,GAAG37B,CAAS,UAAU,EAAGq8B,GAC1B,CAAC,GAAGr8B,CAAS,oBAAoB,EAAGu8B,IAAgBN,GAAqB,CAACI,GAC1E,CAAC,GAAGr8B,CAAS,QAAQ,EAAGgqB,EACxB,CAAC,GAAGhqB,CAAS,MAAM,EAAGhH,IAAc,MACpC,CAAC,GAAGgH,CAAS,WAAW,EAAGi7B,IAAiB,KAChD,EAAK3R,GAAuBtP,EAAWY,EAAeoF,CAAgB,EAC9Dqd,GAAY,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIpd,CAAY,EAAGob,CAAW,EACtEiC,GAAcl9D,GAAWg7D,GAAqB,KAAsC,OAASA,EAAiB,KAAMW,EAAkB,IAAI,EAC1IwB,GAAY,OAAO,OAAO,OAAO,OAAO,CAAA,GAAK3yD,GAAW,KAA4B,OAASA,EAAO,OAAS,CAAA,CAAE,EAAGoxD,EAAc,MAAQ,EAAE,EAC1IwB,GAAWzjB,GAAQ,CAACsiB,GAA6BzhE,EAAM,cAAcuwD,GAAa,CACtF,UAAWnrB,EACX,UAAWs9B,GACX,MAAOC,EACX,EAAKxjB,CAAI,EAAK6R,GAAW,OAAOA,GAAY,UAAYA,EAAQ,KAAqBhxD,EAAM,cAAcuwD,GAAa,CAClH,UAAWnrB,EACX,UAAWs9B,GACX,MAAOC,EACX,EAAK3R,EAAQ,IAAI,EAAmBhxD,EAAM,cAAc+wD,GAAoB,CACxE,UAAW,CAAC,CAAC5R,EACb,UAAW/Z,EACX,QAASq8B,GACT,MAAOM,GAAW,OACtB,CAAG,EACKc,GAAOz8D,GAAYA,IAAa,EAAI8pD,GAAc9pD,EAAU4pD,IAAgBqR,CAAiB,EAAI,KACvG,GAAImB,GAAoB,OAAS,OAC/B,OAAO98B,GAAwB1lC,EAAM,cAAc,IAAK,OAAO,OAAO,CAAA,EAAIwiE,GAAqB,CAC7F,UAAWh9D,GAAWC,GAAS,CAC7B,CAAC,GAAG2/B,CAAS,WAAW,EAAGk8B,EACnC,CAAO,EACD,KAAMA,GAAiB,OAAYkB,GAAoB,KACvD,MAAOC,GACP,QAASN,GACT,IAAK9tD,GACL,SAAUitD,GAAiB,GAAK,CACtC,CAAK,EAAGsB,GAAUC,EAAI,CAAC,EAErB,IAAIC,GAA0B9iE,EAAM,cAAc,SAAU,OAAO,OAAO,CAAA,EAAIrO,EAAM,CAClF,KAAM4uE,EACN,UAAW96D,GACX,MAAOg9D,GACP,QAASN,GACT,SAAUb,GACV,IAAKjtD,EACT,CAAG,EAAGuuD,GAAUC,GAAMnU,IAAsC1uD,EAAM,cAAckvD,GAAS,CACrF,UAAW9pB,CACf,CAAG,CAAC,EACF,OAAK0qB,GAA0BiR,CAAa,IAC1C+B,GAA0B9iE,EAAM,cAAc6tD,GAAM,CAClD,UAAW,SACX,SAAU4T,EAChB,EAAOqB,EAAU,GAERp9B,GAAWo9B,EAAU,CAC9B,CAAC,EAED9C,GAAO,MAAQ+C,GACf/C,GAAO,aAAe,GAClB,QAAQ,IAAI,WAAa,eAC3BA,GAAO,YAAc,UCjRvB,SAASgD,GAAWC,EAAO,CACzB,MAAO,CAAC,EAAEA,GAAU,MAAoCA,EAAM,KAChE,CACA,MAAMC,GAAe7pE,GAAS,CAC5B,KAAM,CACJ,KAAArS,EACA,SAAAof,EACA,UAAAg/B,EACA,YAAA+9B,EACA,MAAAC,EACA,UAAAzC,EACA,UAAA0C,EACA,SAAAC,EACA,yBAAAC,EACA,SAAAC,CACJ,EAAMnqE,EACEoqE,EAAazjE,EAAM,OAAO,EAAK,EAC/B6hE,EAAY7hE,EAAM,OAAO,IAAI,EAC7B,CAACgxD,EAAS0Q,CAAU,EAAItnE,GAAS,EAAK,EACtCspE,EAAkB,IAAI38E,IAAS,CACnCq8E,GAAU,MAAoCA,EAAM,MAAM,OAAQr8E,CAAI,CACxE,EACAiZ,EAAM,UAAU,IAAM,CACpB,IAAI2jE,EAAY,KAChB,OAAIhD,IACFgD,EAAY,WAAW,IAAM,CAC3B,IAAIz8E,GACHA,EAAK26E,EAAU,WAAa,MAAQ36E,IAAO,QAAkBA,EAAG,MAAM,CACrE,cAAe,EACzB,CAAS,CACH,CAAC,GAEI,IAAM,CACPy8E,GACF,aAAaA,CAAS,CAE1B,CACF,EAAG,CAAA,CAAE,EACL,MAAMC,EAAoBC,GAAqB,CACxCb,GAAWa,CAAiB,IAGjCnC,EAAW,EAAI,EACfmC,EAAkB,KAAK,IAAI98E,IAAS,CAClC26E,EAAW,GAAO,EAAI,EACtBgC,EAAgB,MAAM,OAAQ38E,CAAI,EAClC08E,EAAW,QAAU,EACvB,EAAGt/E,GAAK,CAKN,GAHAu9E,EAAW,GAAO,EAAI,EACtB+B,EAAW,QAAU,GAEjB,EAAAH,GAAa,MAAuCA,KAGxD,OAAO,QAAQ,OAAOn/E,CAAC,CACzB,CAAC,EACH,EACMk7D,EAAUl7D,GAAK,CACnB,GAAIs/E,EAAW,QACb,OAGF,GADAA,EAAW,QAAU,GACjB,CAACD,EAAU,CACbE,EAAe,EACf,MACF,CACA,IAAIG,EACJ,GAAIR,GAEF,GADAQ,EAAoBL,EAASr/E,CAAC,EAC1Bo/E,GAA4B,CAACP,GAAWa,CAAiB,EAAG,CAC9DJ,EAAW,QAAU,GACrBC,EAAgBv/E,CAAC,EACjB,MACF,UACSq/E,EAAS,OAClBK,EAAoBL,EAASJ,CAAK,EAElCK,EAAW,QAAU,WAErBI,EAAoBL,EAAQ,EACxB,CAACR,GAAWa,CAAiB,EAAG,CAClCH,EAAe,EACf,MACF,CAEFE,EAAkBC,CAAiB,CACrC,EACA,OAAoB7jE,EAAM,cAAcggE,GAAQ,OAAO,OAAO,CAAA,EAAInQ,GAAmB7oE,CAAI,EAAG,CAC1F,QAASq4D,EACT,QAAS2R,EACT,UAAW5rB,CACf,EAAK+9B,EAAa,CACd,IAAKtB,CACT,CAAG,EAAGz7D,CAAQ,CACd,ECpGa09D,GAA4B9jE,EAAM,cAAc,EAAE,EAClD,CACX,SAAU+jE,EACZ,EAAID,GCCEE,GAAmB,IAAM,CAC7B,KAAM,CACJ,gBAAAC,EACA,kBAAAC,EACA,iBAAAC,EACA,SAAAb,EACA,eAAAc,EACA,cAAA79B,EACA,MAAA68B,EACA,SAAAiB,EACA,UAAAC,CACJ,EAAM7qE,EAAAA,WAAWqqE,EAAY,EAC3B,OAAOM,EAA+BpkE,EAAM,cAAckjE,GAAc,CACtE,SAAUI,EACV,SAAUe,EACV,MAAO,IAAIt9E,IAAS,CAClBq8E,GAAU,MAAoCA,EAAM,MAAM,OAAQr8E,CAAI,EACtEu9E,GAAc,MAAwCA,EAAU,EAAK,CACvE,EACA,UAAWL,IAAoB,SAC/B,YAAaC,EACb,UAAW,GAAG39B,CAAa,MAC/B,EAAK49B,CAAgB,EAAK,IAC1B,ECvBMI,GAAe,IAAM,CACzB,KAAM,CACJ,gBAAAN,EACA,MAAAb,EACA,SAAAE,EACA,cAAAkB,EACA,cAAAj+B,EACA,aAAAk+B,EACA,OAAAC,EACA,UAAAJ,EACA,KAAAK,CACJ,EAAMlrE,EAAAA,WAAWqqE,EAAY,EAC3B,OAAoB9jE,EAAM,cAAckjE,GAAc,CACpD,SAAUI,EACV,KAAMoB,GAAU,UAChB,SAAUC,EACV,MAAO,IAAI59E,IAAS,CAClBq8E,GAAU,MAAoCA,EAAM,MAAM,OAAQr8E,CAAI,EACtEu9E,GAAc,MAAwCA,EAAU,EAAI,CACtE,EACA,UAAWL,IAAoB,KAC/B,YAAaO,EACb,UAAW,GAAGj+B,CAAa,MAC/B,EAAKk+B,CAAY,CACjB,EC5BA,IAAIG,GAA4B5kE,EAAM,cAAc,IAAI,ECKpD6kE,GAAa,CAAA,EAMF,SAASC,GAAOlb,EAAQmb,EAAO,CAC5C,IAAIhkC,EAAkB/gC,EAAM,SAAS,UAAY,CAC7C,GAAI,CAACyX,GAAS,EACZ,OAAO,KAET,IAAIutD,EAAa,SAAS,cAAc,KAAK,EAC7C,OAAI,QAAQ,IAAI,WAAa,cAAgBD,GAC3CC,EAAW,aAAa,aAAcD,CAAK,EAEtCC,CACT,CAAC,EACDhkC,EAAmB7pB,GAAe4pB,EAAiB,CAAC,EACpD9zB,EAAM+zB,EAAiB,CAAC,EAGtBikC,EAAcjlE,EAAM,OAAO,EAAK,EAChCklE,EAAcllE,EAAM,WAAW4kE,EAAY,EAC3CO,EAAmBnlE,EAAM,SAAS6kE,EAAU,EAC9CO,EAAmBjuD,GAAeguD,EAAkB,CAAC,EACrDE,EAAQD,EAAiB,CAAC,EAC1BE,EAAWF,EAAiB,CAAC,EAC3BG,EAAoBL,IAAgBD,EAAY,QAAU,OAAY,SAAUO,EAAU,CAC5FF,EAAS,SAAUG,EAAQ,CACzB,IAAIC,EAAW,CAACF,CAAQ,EAAE,OAAOzvD,GAAmB0vD,CAAM,CAAC,EAC3D,OAAOC,CACT,CAAC,CACH,GAGA,SAASlwE,GAAS,CACXyX,EAAI,eACP,SAAS,KAAK,YAAYA,CAAG,EAE/Bg4D,EAAY,QAAU,EACxB,CACA,SAASvuD,GAAU,CACjB,IAAIivD,GACHA,EAAqB14D,EAAI,iBAAmB,MAAQ04D,IAAuB,QAAkBA,EAAmB,YAAY14D,CAAG,EAChIg4D,EAAY,QAAU,EACxB,CACAvlD,OAAAA,GAAgB,UAAY,CAC1B,OAAIkqC,EACEsb,EACFA,EAAY1vE,CAAM,EAElBA,EAAM,EAGRkhB,EAAO,EAEFA,CACT,EAAG,CAACkzC,CAAM,CAAC,EACXlqC,GAAgB,UAAY,CACtB2lD,EAAM,SACRA,EAAM,QAAQ,SAAUG,EAAU,CAChC,OAAOA,EAAQ,CACjB,CAAC,EACDF,EAAST,EAAU,EAEvB,EAAG,CAACQ,CAAK,CAAC,EACH,CAACp4D,EAAKs4D,CAAiB,CAChC,CCtEA,SAASK,GAAqB34D,EAAK,CACjC,IAAI44D,EAAW,wBAAwB,OAAO,KAAK,SAAS,SAAS,EAAE,EAAE,UAAU,CAAC,CAAC,EACjFC,EAAa,SAAS,cAAc,KAAK,EAC7CA,EAAW,GAAKD,EAGhB,IAAIE,EAAeD,EAAW,MAC9BC,EAAa,SAAW,WACxBA,EAAa,KAAO,IACpBA,EAAa,IAAM,IACnBA,EAAa,MAAQ,QACrBA,EAAa,OAAS,QACtBA,EAAa,SAAW,SAGxB,IAAIC,EACAC,EACJ,GAAIh5D,EAAK,CACP,IAAIi5D,EAAc,iBAAiBj5D,CAAG,EACtC84D,EAAa,eAAiBG,EAAY,eAC1CH,EAAa,eAAiBG,EAAY,eAG1C,IAAIC,EAAuB,iBAAiBl5D,EAAK,qBAAqB,EAClE2D,EAAQ,SAASu1D,EAAqB,MAAO,EAAE,EAC/Ct1D,EAAS,SAASs1D,EAAqB,OAAQ,EAAE,EAGrD,GAAI,CACF,IAAIC,EAAax1D,EAAQ,UAAU,OAAOu1D,EAAqB,MAAO,GAAG,EAAI,GACzEE,EAAcx1D,EAAS,WAAW,OAAOs1D,EAAqB,OAAQ,GAAG,EAAI,GACjFzsD,GAAU;AAAA,GAAM,OAAOmsD,EAAU;AAAA,CAAyB,EAAE,OAAOO,EAAY;AAAA,CAAI,EAAE,OAAOC,EAAa;AAAA,EAAK,EAAGR,CAAQ,CAC3H,OAAS1hF,EAAG,CAEV,QAAQ,MAAMA,CAAC,EAGf6hF,EAAgBp1D,EAChBq1D,EAAiBp1D,CACnB,CACF,CACA,SAAS,KAAK,YAAYi1D,CAAU,EAGpC,IAAIQ,EAAcr5D,GAAO+4D,GAAiB,CAAC,MAAMA,CAAa,EAAIA,EAAgBF,EAAW,YAAcA,EAAW,YAClHS,EAAet5D,GAAOg5D,GAAkB,CAAC,MAAMA,CAAc,EAAIA,EAAiBH,EAAW,aAAeA,EAAW,aAG3H,gBAAS,KAAK,YAAYA,CAAU,EACpC1sD,GAAUysD,CAAQ,EACX,CACL,MAAOS,EACP,OAAQC,CACZ,CACA,CAUO,SAASC,GAAuB1hF,EAAQ,CAC7C,OAAI,OAAO,SAAa,KAAe,CAACA,GAAU,EAAEA,aAAkB,SAC7D,CACL,MAAO,EACP,OAAQ,CACd,EAES8gF,GAAqB9gF,CAAM,CACpC,CCxEO,SAAS2hF,IAAoB,CAClC,OAAO,SAAS,KAAK,cAAgB,OAAO,aAAe,SAAS,gBAAgB,eAAiB,OAAO,WAAa,SAAS,KAAK,WACzI,CCCA,IAAIC,GAAY,kBAAkB,OAAO,KAAK,IAAG,CAAE,EAC/CtpD,GAAO,EACI,SAASupD,GAAgBC,EAAM,CAC5C,IAAIC,EAAa,CAAC,CAACD,EACf7lC,EAAkB/gC,EAAM,SAAS,UAAY,CAC7Cod,OAAAA,IAAQ,EACD,GAAG,OAAOspD,GAAW,GAAG,EAAE,OAAOtpD,EAAI,CAC9C,CAAC,EACD4jB,EAAmB7pB,GAAe4pB,EAAiB,CAAC,EACpDl8B,EAAKm8B,EAAiB,CAAC,EACzBthB,GAAgB,UAAY,CAC1B,GAAImnD,EAAY,CACd,IAAIC,EAAgBN,GAAuB,SAAS,IAAI,EAAE,MACtDO,EAAaN,GAAiB,EAClC/sD,GAAU;AAAA;AAAA;AAAA,IAA2C,OAAOqtD,EAAa,sBAAsB,OAAOD,EAAe,MAAM,EAAI,GAAI;AAAA,EAAK,EAAGjiE,CAAE,CAC/I,MACEuU,GAAUvU,CAAE,EAEd,OAAO,UAAY,CACjBuU,GAAUvU,CAAE,CACd,CACF,EAAG,CAACgiE,EAAYhiE,CAAE,CAAC,CACrB,CC5BO,IAAImiE,GAAS,GACb,SAASC,GAAWC,EAAY,CAIrC,OAAOF,EACT,CCIA,IAAIG,GAAqB,SAA4BjvD,EAAc,CACjE,OAAIA,IAAiB,GACZ,GAEL,CAACT,MAAe,CAACS,EACZ,KAEL,OAAOA,GAAiB,SACnB,SAAS,cAAcA,CAAY,EAExC,OAAOA,GAAiB,WACnBA,EAAY,EAEdA,CACT,EACIhO,GAAsBlK,EAAM,WAAW,SAAU3G,EAAOP,EAAK,CAC/D,IAAIsuE,EAAO/tE,EAAM,KACfguE,EAAWhuE,EAAM,SACjB6e,EAAe7e,EAAM,aACrB0rE,EAAQ1rE,EAAM,MACdiuE,EAAqBjuE,EAAM,YAC3BkuE,EAAcD,IAAuB,OAAS,GAAOA,EACrDlhE,EAAW/M,EAAM,SACf0nC,EAAkB/gC,EAAM,SAASonE,CAAI,EACvCpmC,EAAmB7pB,GAAe4pB,EAAiB,CAAC,EACpDymC,EAAexmC,EAAiB,CAAC,EACjCymC,EAAkBzmC,EAAiB,CAAC,EAClC0mC,EAAeF,GAAgBJ,EAG/B,QAAQ,IAAI,WAAa,cAC3B3gE,GAAQgR,GAAS,GAAM,CAAC2vD,EAAM,wGAAwG,EAIxIpnE,EAAM,UAAU,UAAY,EACtBunE,GAAeH,IACjBK,EAAgBL,CAAI,CAExB,EAAG,CAACA,EAAMG,CAAW,CAAC,EAGtB,IAAIpC,EAAmBnlE,EAAM,SAAS,UAAY,CAC9C,OAAOmnE,GAAmBjvD,CAAY,CACxC,CAAC,EACDktD,EAAmBjuD,GAAeguD,EAAkB,CAAC,EACrDwC,EAAiBvC,EAAiB,CAAC,EACnCwC,EAAoBxC,EAAiB,CAAC,EACxCplE,EAAM,UAAU,UAAY,CAC1B,IAAI6nE,EAAqBV,GAAmBjvD,CAAY,EAGxD0vD,EAAkBC,GAAoF,IAAI,CAC5G,CAAC,EACD,IAAIC,EAAUhD,GAAO4C,GAAgB,CAACC,EAAgB5C,CAAK,EACzDgD,EAAW5wD,GAAe2wD,EAAS,CAAC,EACpCE,EAAmBD,EAAS,CAAC,EAC7B7C,EAAc6C,EAAS,CAAC,EACtBE,EAAkBN,GAAwEK,EAG9FrB,GAAgBU,GAAYD,GAAQ3vD,GAAS,IAAOwwD,IAAoBD,GAAoBC,IAAoB,SAAS,KAAK,EAG9H,IAAIC,EAAW,KACf,GAAI9hE,GAAYsG,GAAWtG,CAAQ,GAAKtN,EAAK,CAC3C,IAAI4C,EAAO0K,EACX8hE,EAAWxsE,EAAK,GAClB,CACA,IAAI2Y,EAAY9H,GAAc27D,EAAUpvE,CAAG,EAK3C,GAAI,CAAC4uE,GAAgB,CAACjwD,GAAS,GAAMkwD,IAAmB,OACtD,OAAO,KAIT,IAAIQ,EAAeF,IAAoB,IAAShB,GAAU,EACtDmB,EAAiBhiE,EACrB,OAAItN,IACFsvE,EAA8BpoE,EAAM,aAAaoG,EAAU,CACzD,IAAKiO,CACX,CAAK,GAEiBrU,EAAM,cAAc4kE,GAAa,SAAU,CAC7D,MAAOM,CACX,EAAKiD,EAAeC,EAA8BC,GAAAA,aAAaD,EAAgBH,CAAe,CAAC,CAC/F,CAAC,EACG,QAAQ,IAAI,WAAa,eAC3B/9D,GAAO,YAAc,UCpGhB,IAAIo+D,GAA0BtoE,EAAM,cAAc,EAAE,ECE3D,SAASuoE,IAAW,CAElB,IAAIzoD,EAAY3K,EAAc,CAAA,EAAInV,CAAK,EACvC,OAAO8f,EAAU,KACnB,CACA,IAAI1C,GAAO,EAQPorD,GAAcD,GAAQ,EAC1B,MAAAE,GAAeD,GAEf,SAAe3jE,EAAI,CACjB,IAAI6jE,EAAUF,GAAW,EAGzB,OAAI3jE,IAKA,QAAQ,IAAI,WAAa,OACpB,UAEF6jE,EACT,EAEA,SAAqB7jE,EAAI,CAEvB,IAAIk8B,EAAkB/gC,EAAM,SAAS,QAAQ,EAC3CghC,EAAmB7pB,GAAe4pB,EAAiB,CAAC,EACpD4nC,EAAU3nC,EAAiB,CAAC,EAC5B4nC,EAAa5nC,EAAiB,CAAC,EAQjC,OAPAhhC,EAAM,UAAU,UAAY,CAC1B,IAAI6oE,EAASzrD,GACbA,IAAQ,EACRwrD,EAAW,aAAa,OAAOC,CAAM,CAAC,CACxC,EAAG,CAAA,CAAE,EAGDhkE,IAKA,QAAQ,IAAI,WAAa,OACpB,UAIF8jE,EACT,ECzDO,SAASG,GAAc1jC,EAAW2I,EAAgBviB,EAAe,CACtE,IAAIqoB,EAAa9F,EACjB,MAAI,CAAC8F,GAAcroB,IACjBqoB,EAAa,GAAG,OAAOzO,EAAW,GAAG,EAAE,OAAO5Z,CAAa,GAEtDqoB,CACT,CAGA,SAASk1B,GAAUC,EAAG7c,EAAK,CACzB,IAAIz3D,EAAMs0E,EAAE,OAAO,OAAO7c,EAAM,IAAM,IAAK,QAAQ,CAAC,EAChDvnD,EAAS,SAAS,OAAOunD,EAAM,MAAQ,MAAM,EACjD,GAAI,OAAOz3D,GAAQ,SAAU,CAC3B,IAAIuJ,EAAI+qE,EAAE,SACVt0E,EAAMuJ,EAAE,gBAAgB2G,CAAM,EAC1B,OAAOlQ,GAAQ,WACjBA,EAAMuJ,EAAE,KAAK2G,CAAM,EAEvB,CACA,OAAOlQ,CACT,CACO,SAASkzB,GAAOqhD,EAAI,CACzB,IAAI13D,EAAO03D,EAAG,sBAAqB,EAC/B9sE,EAAM,CACR,KAAMoV,EAAK,KACX,IAAKA,EAAK,GACd,EACM23D,EAAMD,EAAG,cACTD,EAAIE,EAAI,aAAeA,EAAI,aAC/B,OAAA/sE,EAAI,MAAQ4sE,GAAUC,CAAC,EACvB7sE,EAAI,KAAO4sE,GAAUC,EAAG,EAAI,EACrB7sE,CACT,CChCA,MAAAgtE,GAA4BnpE,EAAM,KAAK,SAAUtE,EAAM,CACrD,IAAI0K,EAAW1K,EAAK,SACpB,OAAO0K,CACT,EAAG,SAAUquB,EAAG74B,EAAO,CACrB,IAAIiQ,EAAejQ,EAAM,aACzB,MAAO,CAACiQ,CACV,CAAC,ECED,IAAIu9D,GAAgB,CAClB,MAAO,EACP,OAAQ,EACR,SAAU,SACV,QAAS,MACX,EACIC,GAAc,CAChB,QAAS,MACX,EACIC,GAAqBtpE,EAAM,WAAW,SAAU3G,EAAOP,EAAK,CAC9D,IAAIssC,EAAY/rC,EAAM,UACpB+lD,EAAY/lD,EAAM,UAClBqiB,EAAQriB,EAAM,MACdkwE,EAAQlwE,EAAM,MACdmwE,EAASnwE,EAAM,OACfowE,EAASpwE,EAAM,OACfurD,EAAWvrD,EAAM,SACjB4qD,EAAY5qD,EAAM,UAClBqwE,EAAUrwE,EAAM,QAChB+M,EAAW/M,EAAM,SACjBswE,EAAYtwE,EAAM,UAClBuwE,EAAYvwE,EAAM,UAClBwwE,EAAcxwE,EAAM,YACpBywE,EAAczwE,EAAM,YACpB0wE,EAAY1wE,EAAM,UAClB2wE,EAAY3wE,EAAM,UAClBy2C,EAAUz2C,EAAM,QAChBu6C,EAAcv6C,EAAM,YACpBuX,EAAQvX,EAAM,MACdwX,EAASxX,EAAM,OACf4wE,EAAkB5wE,EAAM,WACxB6wE,EAAc7wE,EAAM,OAGlBgoB,EAAoBrhB,EAAM,WAAWsoE,EAAU,EACjD6B,EAAW9oD,EAAkB,MAC3BhN,EAAY9H,GAAcy9D,EAAWG,CAAQ,EAC7CC,EAAmBrxE,EAAAA,OAAM,EACzBsxE,EAAiBtxE,EAAAA,OAAM,EAC3BiH,EAAM,oBAAoBlH,EAAK,UAAY,CACzC,MAAO,CACL,MAAO,UAAiB,CACtB,IAAIwxE,GACHA,EAAwBF,EAAiB,WAAa,MAAQE,IAA0B,QAAUA,EAAsB,MAAM,CAC7H,cAAe,EACzB,CAAS,CACH,EACA,aAAc,SAAsB7jF,EAAM,CACxC,IAAI8jF,EAAY,SACdC,EAAgBD,EAAU,cACxB9jF,GAAQ+jF,IAAkBH,EAAe,QAC3CD,EAAiB,QAAQ,MAAM,CAC7B,cAAe,EAC3B,CAAW,EACQ,CAAC3jF,GAAQ+jF,IAAkBJ,EAAiB,SACrDC,EAAe,QAAQ,MAAM,CAC3B,cAAe,EAC3B,CAAW,CAEL,CACN,CACE,CAAC,EAGD,IAAII,EAAe,CAAA,EACf75D,IAAU,SACZ65D,EAAa,MAAQ75D,GAEnBC,IAAW,SACb45D,EAAa,OAAS55D,GAGxB,IAAI65D,EAAajB,EAAsBzpE,EAAM,cAAc,MAAO,CAChE,UAAWwF,GAAW,GAAG,OAAO4/B,EAAW,SAAS,EAAG6kC,GAAoB,KAAqC,OAASA,EAAgB,MAAM,EAC/I,MAAO90D,EAAc,CAAA,EAAI+0D,GAAgB,KAAiC,OAASA,EAAY,MAAM,CACzG,EAAKT,CAAM,EAAI,KACTkB,EAAapB,EAAqBvpE,EAAM,cAAc,MAAO,CAC/D,UAAWwF,GAAW,GAAG,OAAO4/B,EAAW,SAAS,EAAG6kC,GAAoB,KAAqC,OAASA,EAAgB,MAAM,EAC/I,MAAO90D,EAAc,CAAA,EAAI+0D,GAAgB,KAAiC,OAASA,EAAY,MAAM,CACzG,EAAkBlqE,EAAM,cAAc,MAAO,CACzC,UAAW,GAAG,OAAOolC,EAAW,QAAQ,EACxC,GAAIokC,CACR,EAAKD,CAAK,CAAC,EAAI,KACTqB,EAAcl/D,EAAAA,QAAQ,UAAY,CACpC,OAAI5F,GAAQ8+C,CAAQ,IAAM,UAAYA,IAAa,KAC1CA,EAELA,EACK,CACL,UAAWX,GAAsEjkD,EAAM,cAAc,OAAQ,CAC3G,UAAW,GAAG,OAAOolC,EAAW,UAAU,CACpD,CAAS,CACT,EAEW,CAAA,CACT,EAAG,CAACwf,EAAUX,EAAW7e,CAAS,CAAC,EAC/B+e,EAAY/C,GAAUwpB,EAAa,EAAI,EACvCC,EAAqB/kE,GAAQ8+C,CAAQ,IAAM,UAAYA,EAAS,SAChEkmB,EAAalmB,EAAwB5kD,EAAM,cAAc,SAAU6F,GAAS,CAC9E,KAAM,SACN,QAAS6jE,EACT,aAAc,OAClB,EAAKvlB,EAAW,CACZ,UAAW,GAAG,OAAO/e,EAAW,QAAQ,EACxC,SAAUylC,CACd,CAAG,EAAGD,EAAY,SAAS,EAAI,KACzBnhD,EAAuBzpB,EAAM,cAAc,MAAO,CACpD,UAAWwF,GAAW,GAAG,OAAO4/B,EAAW,UAAU,EAAG6kC,GAAoB,KAAqC,OAASA,EAAgB,OAAO,EACjJ,MAAOC,GAAgB,KAAiC,OAASA,EAAY,OACjF,EAAKY,EAAYH,EAAyB3qE,EAAM,cAAc,MAAO6F,GAAS,CAC1E,UAAWL,GAAW,GAAG,OAAO4/B,EAAW,OAAO,EAAG6kC,GAAoB,KAAqC,OAASA,EAAgB,IAAI,EAC3I,MAAO90D,EAAcA,EAAc,CAAA,EAAIw0D,CAAS,EAAGO,GAAgB,KAAiC,OAASA,EAAY,IAAI,CACjI,EAAKN,CAAS,EAAGxjE,CAAQ,EAAGskE,CAAU,EACpC,OAAoB1qE,EAAM,cAAc,MAAO,CAC7C,IAAK,iBACL,KAAM,SACN,kBAAmBupE,EAAQC,EAAS,KACpC,aAAc,OACd,IAAKn1D,EACL,MAAOc,EAAcA,EAAc,CAAA,EAAIuG,CAAK,EAAG+uD,CAAY,EAC3D,UAAWjlE,GAAW4/B,EAAWga,CAAS,EAC1C,YAAa0qB,EACb,UAAWC,CACf,EAAkB/pE,EAAM,cAAc,MAAO,CACzC,IAAKoqE,EACL,SAAU,EACV,MAAOf,EACX,EAAkBrpE,EAAM,cAAcmpE,GAAc,CAChD,aAAcr5B,GAAW8D,CAC7B,EAAKi2B,EAAcA,EAAYpgD,CAAO,EAAIA,CAAO,CAAC,EAAgBzpB,EAAM,cAAc,MAAO,CACzF,SAAU,EACV,IAAKqqE,EACL,MAAOjB,EACX,CAAG,CAAC,CACJ,CAAC,EACG,QAAQ,IAAI,WAAa,eAC3BE,GAAM,YAAc,SCxItB,IAAIyB,GAAuB/qE,EAAM,WAAW,SAAU3G,EAAOP,EAAK,CAChE,IAAIssC,EAAY/rC,EAAM,UACpBkwE,EAAQlwE,EAAM,MACdqiB,EAAQriB,EAAM,MACd+lD,EAAY/lD,EAAM,UAClBy2C,EAAUz2C,EAAM,QAChBu6C,EAAcv6C,EAAM,YACpB2xE,EAAiB3xE,EAAM,eACvBw6C,EAAax6C,EAAM,WACnBmwE,EAASnwE,EAAM,OACf+3C,EAAmB/3C,EAAM,iBACzB4xE,EAAgB5xE,EAAM,cACpB6xE,EAAYnyE,EAAAA,OAAM,EAGlBgoC,EAAkB/gC,EAAM,SAAQ,EAClCghC,EAAmB7pB,GAAe4pB,EAAiB,CAAC,EACpDoqC,EAAkBnqC,EAAiB,CAAC,EACpCoqC,EAAqBpqC,EAAiB,CAAC,EACrCypC,EAAe,CAAA,EACfU,IACFV,EAAa,gBAAkBU,GAEjC,SAASx4B,GAAY,CACnB,IAAI04B,EAAgBzjD,GAAOsjD,EAAU,OAAO,EAC5CE,EAAmBH,IAAkBA,EAAc,GAAKA,EAAc,GAAK,GAAG,OAAOA,EAAc,EAAII,EAAc,KAAM,KAAK,EAAE,OAAOJ,EAAc,EAAII,EAAc,IAAK,IAAI,EAAI,EAAE,CAC1L,CAGA,OAAoBrrE,EAAM,cAAcwzC,GAAW,CACjD,QAAS1D,EACT,iBAAkBsB,EAClB,gBAAiBuB,EACjB,eAAgBA,EAChB,YAAaiB,EACb,WAAYC,EACZ,cAAem3B,EACf,IAAKE,CACT,EAAK,SAAUxvE,EAAM4vE,EAAW,CAC5B,IAAI9lB,EAAkB9pD,EAAK,UACzB+pD,EAAc/pD,EAAK,MACrB,OAAoBsE,EAAM,cAAcspE,GAAOzjE,GAAS,CAAA,EAAIxM,EAAO,CACjE,IAAKP,EACL,MAAOywE,EACP,OAAQC,EACR,UAAWpkC,EACX,UAAWkmC,EACX,MAAOn2D,EAAcA,EAAcA,EAAc,CAAA,EAAIswC,CAAW,EAAG/pC,CAAK,EAAG+uD,CAAY,EACvF,UAAWjlE,GAAW45C,EAAWoG,CAAe,CACtD,CAAK,CAAC,CACJ,CAAC,CACH,CAAC,EACDulB,GAAQ,YAAc,UCxDtB,IAAIQ,GAAO,SAAclyE,EAAO,CAC9B,IAAI+rC,EAAY/rC,EAAM,UACpBqiB,EAAQriB,EAAM,MACdy2C,EAAUz2C,EAAM,QAChBmyE,EAAYnyE,EAAM,UAClBw6C,EAAax6C,EAAM,WACnB+lD,EAAY/lD,EAAM,UACpB,OAAoB2G,EAAM,cAAcwzC,GAAW,CACjD,IAAK,OACL,QAAS1D,EACT,WAAY+D,EACZ,gBAAiB,GAAG,OAAOzO,EAAW,cAAc,CACxD,EAAK,SAAU1pC,EAAM5C,EAAK,CACtB,IAAI0sD,EAAkB9pD,EAAK,UACzB+pD,EAAc/pD,EAAK,MACrB,OAAoBsE,EAAM,cAAc,MAAO6F,GAAS,CACtD,IAAK/M,EACL,MAAOqc,EAAcA,EAAc,CAAA,EAAIswC,CAAW,EAAG/pC,CAAK,EAC1D,UAAWlW,GAAW,GAAG,OAAO4/B,EAAW,OAAO,EAAGogB,EAAiBpG,CAAS,CACrF,EAAOosB,CAAS,CAAC,CACf,CAAC,CACH,ECZIC,GAAS,SAAgBpyE,EAAO,CAClC,IAAI+8D,EAAmB/8D,EAAM,UAC3B+rC,EAAYgxB,IAAqB,OAAS,YAAcA,EACxDnP,EAAS5tD,EAAM,OACfo6C,EAAiBp6C,EAAM,QACvBy2C,EAAU2D,IAAmB,OAAS,GAAQA,EAC9Ci4B,EAAkBryE,EAAM,SACxBsyE,EAAWD,IAAoB,OAAS,GAAOA,EAC/CE,EAAwBvyE,EAAM,uBAC9BwyE,EAAyBD,IAA0B,OAAS,GAAOA,EACnEE,EAAYzyE,EAAM,UAClB0yE,EAAgB1yE,EAAM,cACtB2yE,EAAY3yE,EAAM,UAClBqwE,EAAUrwE,EAAM,QAChB4yE,EAAkB5yE,EAAM,gBACxBqrD,EAAarrD,EAAM,WACnB00C,EAAiB10C,EAAM,eACvB6yE,EAAY7yE,EAAM,UAClB8yE,EAAkB9yE,EAAM,SACxBurD,EAAWunB,IAAoB,OAAS,GAAOA,EAC/CC,EAAc/yE,EAAM,KACpBgzE,EAAOD,IAAgB,OAAS,GAAOA,EACvCE,EAAqBjzE,EAAM,mBAC3BkzE,EAAgBlzE,EAAM,cACtBmzE,EAAsBnzE,EAAM,aAC5BozE,EAAeD,IAAwB,OAAS,GAAOA,EACvDE,EAAYrzE,EAAM,UAClBmyE,EAAYnyE,EAAM,UAClB2mD,EAAgB3mD,EAAM,cACtB4wE,EAAkB5wE,EAAM,WACxB6wE,EAAc7wE,EAAM,OAClB,QAAQ,IAAI,WAAa,eAC3B,CAAC,YAAa,YAAa,WAAW,EAAE,QAAQ,SAAUpU,GAAM,CAE9DwhB,GAAQ,EAAExhB,MAAQoU,GAAQ,GAAG,OAAOpU,GAAM,4CAA4C,CAAC,CACzF,CAAC,EACG,kBAAmBoU,GACrBoN,GAAQ,GAAO,6DAA6D,GAGhF,IAAIkmE,EAA8B5zE,EAAAA,OAAM,EACpCgb,EAAahb,EAAAA,OAAM,EACnB6zE,EAAa7zE,EAAAA,OAAM,EACnBgoC,EAAkB/gC,EAAM,SAAS8vC,CAAO,EAC1C9O,EAAmB7pB,GAAe4pB,EAAiB,CAAC,EACpD8rC,EAAkB7rC,EAAiB,CAAC,EACpC8rC,EAAqB9rC,EAAiB,CAAC,EAGrCwoC,EAASz+B,GAAK,EAClB,SAASgiC,GAAkC,CACpCr1D,GAAS3D,EAAW,QAAS,SAAS,aAAa,IACtD44D,EAA4B,QAAU,SAAS,cAEnD,CACA,SAASK,GAAqB,CAC5B,GAAI,CAACt1D,GAAS3D,EAAW,QAAS,SAAS,aAAa,EAAG,CACzD,IAAIk5D,IACHA,GAAsBL,EAAW,WAAa,MAAQK,KAAwB,QAAUA,GAAoB,MAAK,CACpH,CACF,CAGA,SAASC,GAAuBC,GAAY,CAE1C,GAAIA,GACFH,EAAkB,MACb,CAGL,GADAF,EAAmB,EAAK,EACpBT,GAAQM,EAA4B,SAAWd,EAAwB,CACzE,GAAI,CACFc,EAA4B,QAAQ,MAAM,CACxC,cAAe,EAC3B,CAAW,CACH,MAAY,CAEZ,CACAA,EAA4B,QAAU,IACxC,CAGIE,IACFnoB,GAAe,MAAiCA,EAAU,EAE9D,CACAunB,GAAoB,MAAsCA,EAAgBkB,EAAU,CACtF,CACA,SAASzJ,GAAgBv/E,GAAG,CAC1BulF,GAAY,MAA8BA,EAAQvlF,EAAC,CACrD,CAGA,IAAIipF,GAAkBr0E,EAAAA,OAAO,EAAK,EAC9Bs0E,GAAoBt0E,EAAAA,OAAM,EAG1Bu0E,GAAqB,UAA8B,CACrD,aAAaD,GAAkB,OAAO,EACtCD,GAAgB,QAAU,EAC5B,EACIG,EAAmB,UAA4B,CACjDF,GAAkB,QAAU,WAAW,UAAY,CACjDD,GAAgB,QAAU,EAC5B,CAAC,CACH,EAIII,EAAiB,KACjBf,IACFe,EAAiB,SAAwBrpF,GAAG,CACtCipF,GAAgB,QAClBA,GAAgB,QAAU,GACjBr5D,EAAW,UAAY5vB,GAAE,QAClCu/E,GAAgBv/E,EAAC,CAErB,GAEF,SAASspF,GAAiBtpF,GAAG,CAC3B,GAAIwnF,GAAYxnF,GAAE,UAAY+hE,GAAQ,IAAK,CACzC/hE,GAAE,gBAAe,EACjBu/E,GAAgBv/E,EAAC,EACjB,MACF,CAGI2rD,GAAW3rD,GAAE,UAAY+hE,GAAQ,KACnC0mB,EAAW,QAAQ,aAAa,CAACzoF,GAAE,QAAQ,CAE/C,CAGA6U,EAAAA,UAAU,UAAY,CAChB82C,IACFg9B,EAAmB,EAAI,EACvBC,EAA+B,EAEnC,EAAG,CAACj9B,CAAO,CAAC,EAGZ92C,EAAAA,UAAU,UAAY,CACpB,OAAO,UAAY,CACjB,aAAaq0E,GAAkB,OAAO,CACxC,CACF,EAAG,CAAA,CAAE,EACL,IAAIphD,EAAc9W,EAAcA,EAAcA,EAAc,CAC1D,OAAQ8xC,CACZ,EAAK6kB,CAAS,EAAG5B,GAAgB,KAAiC,OAASA,EAAY,OAAO,EAAG,GAAI,CACjG,QAAU2C,EAA2B,KAAT,MAChC,CAAG,EAGD,OAAoB7sE,EAAM,cAAc,MAAO6F,GAAS,CACtD,UAAWL,GAAW,GAAG,OAAO4/B,EAAW,OAAO,EAAG4a,CAAa,CACtE,EAAKoB,GAAU/nD,EAAO,CAClB,KAAM,EACV,CAAG,CAAC,EAAgB2G,EAAM,cAAcurE,GAAM,CAC1C,UAAWnmC,EACX,QAASinC,GAAQv8B,EACjB,WAAYg5B,GAAc1jC,EAAWknC,EAAoBC,CAAa,EACtE,MAAOp3D,EAAcA,EAAc,CACjC,OAAQ8xC,CACd,EAAOylB,CAAS,EAAGxC,GAAgB,KAAiC,OAASA,EAAY,IAAI,EACzF,UAAWsB,EACX,UAAWvB,GAAoB,KAAqC,OAASA,EAAgB,IACjG,CAAG,EAAgBjqE,EAAM,cAAc,MAAO6F,GAAS,CACnD,SAAU,GACV,UAAW4nE,GACX,UAAWjoE,GAAW,GAAG,OAAO4/B,EAAW,OAAO,EAAG2mC,EAAe9B,GAAoB,KAAqC,OAASA,EAAgB,OAAO,EAC7J,IAAKl2D,EACL,QAASy5D,EACT,MAAOvhD,CACX,EAAK+/C,CAAS,EAAgBhsE,EAAM,cAAc+qE,GAASllE,GAAS,CAAA,EAAIxM,EAAO,CAC3E,YAAai0E,GACb,UAAWC,EACX,IAAKX,EACL,SAAUhoB,EACV,OAAQ4kB,EACR,UAAWpkC,EACX,QAAS0K,GAAW+8B,EACpB,QAASnJ,GACT,iBAAkBwJ,GAClB,WAAYpE,GAAc1jC,EAAW2I,EAAgBm+B,CAAS,CAClE,CAAG,CAAC,CAAC,CAAC,CACN,ECxLIwB,GAAa,SAAoBr0E,EAAO,CAC1C,IAAIy2C,EAAUz2C,EAAM,QAClB6e,EAAe7e,EAAM,aACrBu6C,EAAcv6C,EAAM,YACpBs0E,EAAwBt0E,EAAM,eAC9B2xE,EAAiB2C,IAA0B,OAAS,GAAQA,EAC5DC,EAAcv0E,EAAM,WACpB8wE,EAAW9wE,EAAM,SACf0nC,EAAkB/gC,EAAM,SAAS8vC,CAAO,EAC1C9O,EAAmB7pB,GAAe4pB,EAAiB,CAAC,EACpD8rC,EAAkB7rC,EAAiB,CAAC,EACpC8rC,EAAqB9rC,EAAiB,CAAC,EACrC6sC,EAAa7tE,EAAM,QAAQ,UAAY,CACzC,MAAO,CACL,MAAOmqE,CACb,CACE,EAAG,CAACA,CAAQ,CAAC,EAQb,OAPAnqE,EAAM,UAAU,UAAY,CACtB8vC,GACFg9B,EAAmB,EAAI,CAE3B,EAAG,CAACh9B,CAAO,CAAC,EAGR,CAAC8D,GAAeo3B,GAAkB,CAAC6B,EAC9B,KAEW7sE,EAAM,cAAcsoE,GAAW,SAAU,CAC3D,MAAOuF,CACX,EAAkB7tE,EAAM,cAAckK,GAAQ,CAC1C,KAAM4lC,GAAW8D,GAAei5B,EAChC,YAAa,GACb,aAAc30D,EACd,SAAU43B,GAAW+8B,CACzB,EAAkB7sE,EAAM,cAAcyrE,GAAQ5lE,GAAS,CAAA,EAAIxM,EAAO,CAC9D,eAAgB2xE,EAChB,WAAY,UAAsB,CAChC4C,GAAgB,MAAkCA,EAAW,EAC7Dd,EAAmB,EAAK,CAC1B,CACJ,CAAG,CAAC,CAAC,CAAC,CACN,EACAY,GAAW,YAAc,SCvDlB,IAAII,GAAY,yBAGnBC,GAAc,UAAuB,CACvCtnE,GAAQ,GAAO,uEAAuE,CACxF,EACInB,GAAuBtF,EAAM,cAAc,CAC7C,cAAe+tE,GACf,eAAgBA,GAChB,cAAeA,GACf,gBAAiBA,GACjB,eAAgBA,GAChB,gBAAiBA,GACjB,eAAgBA,GAChB,kBAAmBA,GACnB,mBAAoBA,GACpB,YAAaA,GACb,UAAWA,GACX,cAAeA,GACf,eAAgBA,GAChB,eAAgBA,GAChB,OAAQA,GACR,iBAAkB,UAA4B,CAC5C,OAAAA,GAAW,EACJ,CACL,SAAUA,GACV,gBAAiBA,GACjB,cAAeA,GACf,aAAcA,GACd,iBAAkBA,GAClB,YAAaA,GACb,aAAcA,GACd,cAAeA,GACf,UAAWA,GACX,oBAAqBA,GACrB,YAAaA,GACb,gBAAiBA,EACvB,CACE,CACF,CAAC,ECxCGC,GAA2BhuE,EAAM,cAAc,IAAI,ECDhD,SAASmG,GAAQvhB,EAAO,CAC7B,OAA2BA,GAAU,KAC5B,CAAA,EAEF,MAAM,QAAQA,CAAK,EAAIA,EAAQ,CAACA,CAAK,CAC9C,CACO,SAASqpF,GAAer1B,EAAM,CACnC,OAAOA,GAAQ,CAAC,CAACA,EAAK,KACxB,CCRO,SAASs1B,IAAc,CAC5B,MAAO,CACL,QAAS,+BACT,SAAU,iBACV,KAAM,uBACN,WAAY,qBACZ,KAAM,CACJ,OAAQ,sCACR,MAAO,8CACP,QAAS,uBACf,EACI,MAAO,CACL,OAAQ,iBACR,OAAQ,4BACR,MAAO,kBACP,OAAQ,kBACR,OAAQ,iBACR,KAAM,iBACN,QAAS,iBACT,QAAS,kBACT,MAAO,iBACP,OAAQ,uBACR,MAAO,uBACP,IAAK,uBACL,IAAK,sBACX,EACI,OAAQ,CACN,IAAK,mCACL,IAAK,oCACL,IAAK,yCACL,MAAO,yCACb,EACI,OAAQ,CACN,IAAK,mBACL,IAAK,4BACL,IAAK,+BACL,MAAO,8BACb,EACI,MAAO,CACL,IAAK,kCACL,IAAK,sCACL,IAAK,yCACL,MAAO,wCACb,EACI,QAAS,CACP,SAAU,uCAChB,EACI,MAAO,UAAiB,CACtB,IAAIC,EAAS,KAAK,MAAM,KAAK,UAAU,IAAI,CAAC,EAC5C,OAAAA,EAAO,MAAQ,KAAK,MACbA,CACT,CACJ,CACA,CACO,IAAIC,GAAWF,GAAW,ECtDjC,SAASG,GAAkBhrF,EAAG,CAC5B,GAAI,CACF,OAAc,SAAS,SAAS,KAAKA,CAAC,EAAE,QAAQ,eAAe,IAAxD,EACT,MAAY,CACV,OAAqB,OAAOA,GAArB,UACT,CACF,CCJA,SAASirF,GAAWjrF,EAAGc,EAAG+B,EAAG,CAC3B,GAAIotB,GAAwB,EAAI,OAAO,QAAQ,UAAU,MAAM,KAAM,SAAS,EAC9E,IAAIjqB,EAAI,CAAC,IAAI,EACbA,EAAE,KAAK,MAAMA,EAAGlF,CAAC,EACjB,IAAIC,EAAI,IAAKf,EAAE,KAAK,MAAMA,EAAGgG,CAAC,GAC9B,OAAOnD,GAAK6sB,GAAe3uB,EAAG8B,EAAE,SAAS,EAAG9B,CAC9C,CCJA,SAASmqF,GAAiBlrF,EAAG,CAC3B,IAAI6C,EAAkB,OAAO,KAArB,WAA2B,IAAI,IAAQ,OAC/C,OAAOqoF,GAAmB,SAA0BlrF,EAAG,CACrD,GAAaA,IAAT,MAAc,CAACmrF,GAAiBnrF,CAAC,EAAG,OAAOA,EAC/C,GAAkB,OAAOA,GAArB,WAAwB,MAAM,IAAI,UAAU,oDAAoD,EACpG,GAAe6C,IAAX,OAAc,CAChB,GAAIA,EAAE,IAAI7C,CAAC,EAAG,OAAO6C,EAAE,IAAI7C,CAAC,EAC5B6C,EAAE,IAAI7C,EAAGorF,CAAO,CAClB,CACA,SAASA,GAAU,CACjB,OAAOC,GAAUrrF,EAAG,UAAWkwB,GAAe,IAAI,EAAE,WAAW,CACjE,CACA,OAAOk7D,EAAQ,UAAY,OAAO,OAAOprF,EAAE,UAAW,CACpD,YAAa,CACX,MAAOorF,EACP,WAAY,GACZ,SAAU,GACV,aAAc,EACtB,CACA,CAAK,EAAG17D,GAAe07D,EAASprF,CAAC,CAC/B,EAAGkrF,GAAiBlrF,CAAC,CACvB,CCbA,IAAIsrF,GAAe,WACRloE,GAAU,UAAmB,CAAC,EAGrC,OAAO,QAAY,KAAe,QAAQ,KAAO,QAAQ,IAAI,WAAa,cAAgB,OAAO,OAAW,KAAe,OAAO,SAAa,MACjJA,GAAU,SAAiBzf,EAAM4nF,EAAQ,CACnC,OAAO,QAAY,KAAe,QAAQ,MAAQ,OAAO,2BAA+B,KACtFA,EAAO,MAAM,SAAUzqF,EAAG,CAC5B,OAAO,OAAOA,GAAM,QACtB,CAAC,GACC,QAAQ,KAAK6C,EAAM4nF,CAAM,CAG/B,GAEK,SAASC,GAAmBD,EAAQ,CACzC,GAAI,CAACA,GAAU,CAACA,EAAO,OAAQ,OAAO,KACtC,IAAI9jB,EAAS,CAAA,EACb,OAAA8jB,EAAO,QAAQ,SAAU/7E,EAAO,CAC9B,IAAIi8E,EAAQj8E,EAAM,MAClBi4D,EAAOgkB,CAAK,EAAIhkB,EAAOgkB,CAAK,GAAK,CAAA,EACjChkB,EAAOgkB,CAAK,EAAE,KAAKj8E,CAAK,CAC1B,CAAC,EACMi4D,CACT,CACO,SAASv4D,GAAOw8E,EAAU,CAC/B,QAAS5iE,EAAO,UAAU,OAAQplB,EAAO,IAAI,MAAMolB,EAAO,EAAIA,EAAO,EAAI,CAAC,EAAGE,EAAO,EAAGA,EAAOF,EAAME,IAClGtlB,EAAKslB,EAAO,CAAC,EAAI,UAAUA,CAAI,EAEjC,IAAI,EAAI,EACJmL,EAAMzwB,EAAK,OACf,GAAI,OAAOgoF,GAAa,WAEtB,OAAOA,EAAS,MAAM,KAAMhoF,CAAI,EAElC,GAAI,OAAOgoF,GAAa,SAAU,CAChC,IAAI5pF,EAAM4pF,EAAS,QAAQJ,GAAc,SAAUv9D,EAAG,CACpD,GAAIA,IAAM,KACR,MAAO,IAET,GAAI,GAAKoG,EACP,OAAOpG,EAET,OAAQA,EAAC,CACP,IAAK,KACH,OAAO,OAAOrqB,EAAK,GAAG,CAAC,EACzB,IAAK,KACH,OAAO,OAAOA,EAAK,GAAG,CAAC,EACzB,IAAK,KACH,GAAI,CACF,OAAO,KAAK,UAAUA,EAAK,GAAG,CAAC,CACjC,MAAY,CACV,MAAO,YACT,CACA,MACF,QACE,OAAOqqB,CACjB,CACI,CAAC,EACD,OAAOjsB,CACT,CACA,OAAO4pF,CACT,CACA,SAASC,GAAmBhoF,EAAM,CAChC,OAAOA,IAAS,UAAYA,IAAS,OAASA,IAAS,OAASA,IAAS,SAAWA,IAAS,QAAUA,IAAS,SAClH,CACO,SAASioF,GAAarqF,EAAOoC,EAAM,CAOxC,MANI,GAAuBpC,GAAU,MAGjCoC,IAAS,SAAW,MAAM,QAAQpC,CAAK,GAAK,CAACA,EAAM,QAGnDoqF,GAAmBhoF,CAAI,GAAK,OAAOpC,GAAU,UAAY,CAACA,EAIhE,CAIA,SAASsqF,GAAmBphE,EAAKqhE,EAAM/7E,EAAU,CAC/C,IAAIg8E,EAAU,CAAA,EACVC,EAAQ,EACRC,EAAYxhE,EAAI,OACpB,SAAS1f,EAAMwgF,EAAQ,CACrBQ,EAAQ,KAAK,MAAMA,EAASr5D,GAAmB64D,GAAU,CAAA,CAAE,CAAC,EAC5DS,IACIA,IAAUC,GACZl8E,EAASg8E,CAAO,CAEpB,CACAthE,EAAI,QAAQ,SAAU3qB,EAAG,CACvBgsF,EAAKhsF,EAAGiL,CAAK,CACf,CAAC,CACH,CACA,SAASmhF,GAAiBzhE,EAAKqhE,EAAM/7E,EAAU,CAC7C,IAAIhL,EAAQ,EACRknF,EAAYxhE,EAAI,OACpB,SAASrnB,EAAKmoF,EAAQ,CACpB,GAAIA,GAAUA,EAAO,OAAQ,CAC3Bx7E,EAASw7E,CAAM,EACf,MACF,CACA,IAAIY,EAAWpnF,EACfA,EAAQA,EAAQ,EACZonF,EAAWF,EACbH,EAAKrhE,EAAI0hE,CAAQ,EAAG/oF,CAAI,EAExB2M,EAAS,CAAA,CAAE,CAEf,CACA3M,EAAK,CAAA,CAAE,CACT,CACA,SAASgpF,GAAcC,EAAQ,CAC7B,IAAIh7E,EAAM,CAAA,EACV,cAAO,KAAKg7E,CAAM,EAAE,QAAQ,SAAUxrF,EAAG,CACvCwQ,EAAI,KAAK,MAAMA,EAAKqhB,GAAmB25D,EAAOxrF,CAAC,GAAK,CAAA,CAAE,CAAC,CACzD,CAAC,EACMwQ,CACT,CACO,IAAIi7E,GAAoC,SAAUC,EAAQ,CAC/D98D,GAAU68D,EAAsBC,CAAM,EACtC,IAAIj8D,EAASN,GAAas8D,CAAoB,EAC9C,SAASA,EAAqBf,EAAQ9jB,EAAQ,CAC5C,IAAI94C,EACJU,OAAAA,GAAgB,KAAMi9D,CAAoB,EAC1C39D,EAAQ2B,EAAO,KAAK,KAAM,wBAAwB,EAClDvM,EAAgB8L,GAAuBlB,CAAK,EAAG,SAAU,MAAM,EAC/D5K,EAAgB8L,GAAuBlB,CAAK,EAAG,SAAU,MAAM,EAC/DA,EAAM,OAAS48D,EACf58D,EAAM,OAAS84C,EACR94C,CACT,CACA,OAAOY,GAAa+8D,CAAoB,CAC1C,EAAgBpB,GAAiB,KAAK,CAAC,EAChC,SAASsB,GAASH,EAAQpiF,EAAQ6hF,EAAM/7E,EAAUrO,EAAQ,CAC/D,GAAIuI,EAAO,MAAO,CAChB,IAAIwiF,EAAW,IAAI,QAAQ,SAAUhtF,EAASC,EAAQ,CACpD,IAAI0D,EAAO,SAAcmoF,EAAQ,CAC/B,OAAAx7E,EAASw7E,CAAM,EACRA,EAAO,OAAS7rF,EAAO,IAAI4sF,GAAqBf,EAAQC,GAAmBD,CAAM,CAAC,CAAC,EAAI9rF,EAAQiC,CAAM,CAC9G,EACIgrF,EAAaN,GAAcC,CAAM,EACrCH,GAAiBQ,EAAYZ,EAAM1oF,CAAI,CACzC,CAAC,EACD,OAAAqpF,EAAS,MAAM,SAAU3rF,EAAG,CAC1B,OAAOA,CACT,CAAC,EACM2rF,CACT,CACA,IAAIE,EAAc1iF,EAAO,cAAgB,GAAO,OAAO,KAAKoiF,CAAM,EAAIpiF,EAAO,aAAe,CAAA,EACxF2iF,EAAa,OAAO,KAAKP,CAAM,EAC/BQ,EAAeD,EAAW,OAC1BZ,EAAQ,EACRD,EAAU,CAAA,EACV97E,EAAU,IAAI,QAAQ,SAAUxQ,EAASC,EAAQ,CACnD,IAAI0D,EAAO,SAAcmoF,EAAQ,CAI/B,GAFAQ,EAAQ,KAAK,MAAMA,EAASR,CAAM,EAClCS,IACIA,IAAUa,EACZ,OAAA98E,EAASg8E,CAAO,EACTA,EAAQ,OAASrsF,EAAO,IAAI4sF,GAAqBP,EAASP,GAAmBO,CAAO,CAAC,CAAC,EAAItsF,EAAQiC,CAAM,CAEnH,EACKkrF,EAAW,SACd78E,EAASg8E,CAAO,EAChBtsF,EAAQiC,CAAM,GAEhBkrF,EAAW,QAAQ,SAAUxsF,EAAK,CAChC,IAAIqqB,EAAM4hE,EAAOjsF,CAAG,EAChBusF,EAAY,QAAQvsF,CAAG,IAAM,GAC/B8rF,GAAiBzhE,EAAKqhE,EAAM1oF,CAAI,EAEhCyoF,GAAmBphE,EAAKqhE,EAAM1oF,CAAI,CAEtC,CAAC,CACH,CAAC,EACD,OAAA6M,EAAQ,MAAM,SAAUnP,EAAG,CACzB,OAAOA,CACT,CAAC,EACMmP,CACT,CACA,SAAS68E,GAAW1tF,EAAK,CACvB,MAAO,CAAC,EAAEA,GAAOA,EAAI,UAAY,OACnC,CACA,SAASkpB,GAAS/mB,EAAOhB,EAAM,CAE7B,QADI+E,EAAI/D,EACC4B,EAAI,EAAGA,EAAI5C,EAAK,OAAQ4C,IAAK,CACpC,GAAImC,GAAK,KACP,OAAOA,EAETA,EAAIA,EAAE/E,EAAK4C,CAAC,CAAC,CACf,CACA,OAAOmC,CACT,CACO,SAASynF,GAAgB3hF,EAAM1J,EAAQ,CAC5C,OAAO,SAAUsrF,EAAI,CACnB,IAAIC,EAMJ,OALI7hF,EAAK,WACP6hF,EAAa3kE,GAAS5mB,EAAQ0J,EAAK,UAAU,EAE7C6hF,EAAavrF,EAAOsrF,EAAG,OAAS5hF,EAAK,SAAS,EAE5C0hF,GAAWE,CAAE,GACfA,EAAG,MAAQA,EAAG,OAAS5hF,EAAK,UAC5B4hF,EAAG,WAAaC,EACTD,GAEF,CACL,QAAS,OAAOA,GAAO,WAAaA,EAAE,EAAKA,EAC3C,WAAYC,EACZ,MAAOD,EAAG,OAAS5hF,EAAK,SAC9B,CACE,CACF,CACO,SAAS8hF,GAAUzrF,EAAQC,EAAQ,CACxC,GAAIA,GACF,QAAS3B,KAAK2B,EACZ,GAAIA,EAAO,eAAe3B,CAAC,EAAG,CAC5B,IAAIwB,EAAQG,EAAO3B,CAAC,EAChB0iB,GAAQlhB,CAAK,IAAM,UAAYkhB,GAAQhhB,EAAO1B,CAAC,CAAC,IAAM,SACxD0B,EAAO1B,CAAC,EAAI+xB,EAAcA,EAAc,CAAA,EAAIrwB,EAAO1B,CAAC,CAAC,EAAGwB,CAAK,EAE7DE,EAAO1B,CAAC,EAAIwB,CAEhB,EAGJ,OAAOE,CACT,CClPA,IAAI0rF,GAAO,OACPC,GAAa,SAAoBhiF,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,EAAS,CACzEoH,EAAK+hF,EAAI,EAAI,MAAM,QAAQ/hF,EAAK+hF,EAAI,CAAC,EAAI/hF,EAAK+hF,EAAI,EAAI,CAAA,EAClD/hF,EAAK+hF,EAAI,EAAE,QAAQ5rF,CAAK,IAAM,IAChCgqF,EAAO,KAAKr8E,GAAOlL,EAAQ,SAASmpF,EAAI,EAAG/hF,EAAK,UAAWA,EAAK+hF,EAAI,EAAE,KAAK,IAAI,CAAC,CAAC,CAErF,ECNIhrF,GAAU,SAAiBiJ,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,EAAS,CACnE,GAAIoH,EAAK,SACP,GAAIA,EAAK,mBAAmB,OAI1BA,EAAK,QAAQ,UAAY,EACpBA,EAAK,QAAQ,KAAK7J,CAAK,GAC1BgqF,EAAO,KAAKr8E,GAAOlL,EAAQ,SAAS,QAAQ,SAAUoH,EAAK,UAAW7J,EAAO6J,EAAK,OAAO,CAAC,UAEnF,OAAOA,EAAK,SAAY,SAAU,CAC3C,IAAIiiF,EAAW,IAAI,OAAOjiF,EAAK,OAAO,EACjCiiF,EAAS,KAAK9rF,CAAK,GACtBgqF,EAAO,KAAKr8E,GAAOlL,EAAQ,SAAS,QAAQ,SAAUoH,EAAK,UAAW7J,EAAO6J,EAAK,OAAO,CAAC,CAE9F,EAEJ,ECjBIkiF,GAAQ,SAAeliF,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,EAAS,CAC/D,IAAImwB,EAAM,OAAO/oB,EAAK,KAAQ,SAC1Bi4C,EAAM,OAAOj4C,EAAK,KAAQ,SAC1BkmC,EAAM,OAAOlmC,EAAK,KAAQ,SAE1BmiF,EAAW,kCACX5hF,EAAMpK,EACNnB,EAAM,KACN6yB,EAAM,OAAO1xB,GAAU,SACvBO,EAAM,OAAOP,GAAU,SACvBkpB,EAAM,MAAM,QAAQlpB,CAAK,EAW7B,GAVI0xB,EACF7yB,EAAM,SACG0B,EACT1B,EAAM,SACGqqB,IACTrqB,EAAM,SAKJ,CAACA,EACH,MAAO,GAELqqB,IACF9e,EAAMpK,EAAM,QAEVO,IAEF6J,EAAMpK,EAAM,QAAQgsF,EAAU,GAAG,EAAE,QAEjCp5D,EACExoB,IAAQP,EAAK,KACfmgF,EAAO,KAAKr8E,GAAOlL,EAAQ,SAAS5D,CAAG,EAAE,IAAKgL,EAAK,UAAWA,EAAK,GAAG,CAAC,EAEhEi4C,GAAO,CAAC/R,GAAO3lC,EAAMP,EAAK,IACnCmgF,EAAO,KAAKr8E,GAAOlL,EAAQ,SAAS5D,CAAG,EAAE,IAAKgL,EAAK,UAAWA,EAAK,GAAG,CAAC,EAC9DkmC,GAAO,CAAC+R,GAAO13C,EAAMP,EAAK,IACnCmgF,EAAO,KAAKr8E,GAAOlL,EAAQ,SAAS5D,CAAG,EAAE,IAAKgL,EAAK,UAAWA,EAAK,GAAG,CAAC,EAC9Di4C,GAAO/R,IAAQ3lC,EAAMP,EAAK,KAAOO,EAAMP,EAAK,MACrDmgF,EAAO,KAAKr8E,GAAOlL,EAAQ,SAAS5D,CAAG,EAAE,MAAOgL,EAAK,UAAWA,EAAK,IAAKA,EAAK,GAAG,CAAC,CAEvF,EC1CIoiF,GAAW,SAAkBpiF,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,EAASL,EAAM,CACvEyH,EAAK,WAAa,CAAC1J,EAAO,eAAe0J,EAAK,KAAK,GAAKwgF,GAAarqF,EAAOoC,GAAQyH,EAAK,IAAI,IAC/FmgF,EAAO,KAAKr8E,GAAOlL,EAAQ,SAAS,SAAUoH,EAAK,SAAS,CAAC,CAEjE,ECJIqiF,GACJ,MAAAC,GAAgB,UAAY,CAC1B,GAAID,GACF,OAAOA,GAET,IAAIE,EAAO,eACPjpE,EAAI,SAAW1gB,EAAS,CAC1B,OAAOA,GAAWA,EAAQ,kBAAoB,mBAAmB,OAAO2pF,EAAM,QAAQ,EAAE,OAAOA,EAAM,aAAa,EAAI,EACxH,EACIC,EAAK,iGACLC,EAAQ,mBACRC,EAAS,CAAC,MAAM,OAAOD,EAAO,UAAU,EAAE,OAAOA,EAAO,KAAK,EACjE,MAAM,OAAOA,EAAO,UAAU,EAAE,OAAOD,EAAI,IAAI,EAAE,OAAOC,EAAO,KAAK,EACpE,MAAM,OAAOA,EAAO,WAAW,EAAE,OAAOD,EAAI,OAAO,EAAE,OAAOC,EAAO,WAAW,EAC9E,MAAM,OAAOA,EAAO,cAAc,EAAE,OAAOA,EAAO,SAAS,EAAE,OAAOD,EAAI,OAAO,EAAE,OAAOC,EAAO,WAAW,EAC1G,MAAM,OAAOA,EAAO,cAAc,EAAE,OAAOA,EAAO,SAAS,EAAE,OAAOD,EAAI,OAAO,EAAE,OAAOC,EAAO,WAAW,EAC1G,MAAM,OAAOA,EAAO,cAAc,EAAE,OAAOA,EAAO,SAAS,EAAE,OAAOD,EAAI,OAAO,EAAE,OAAOC,EAAO,WAAW,EAC1G,MAAM,OAAOA,EAAO,cAAc,EAAE,OAAOA,EAAO,SAAS,EAAE,OAAOD,EAAI,OAAO,EAAE,OAAOC,EAAO,WAAW,EAC1G,cAAc,OAAOA,EAAO,SAAS,EAAE,OAAOD,EAAI,OAAO,EAAE,OAAOC,EAAO,YAAY,CACvF,EACME,EAAS,wBAETC,EAAK,MAAM,OAAOF,EAAO,KAAK,GAAG,EAAG,GAAG,EAAE,OAAOC,CAAM,EAGtDE,EAAW,IAAI,OAAO,OAAO,OAAOL,EAAI,SAAS,EAAE,OAAOI,EAAI,IAAI,CAAC,EACnEE,EAAU,IAAI,OAAO,IAAI,OAAON,EAAI,GAAG,CAAC,EACxCO,EAAU,IAAI,OAAO,IAAI,OAAOH,EAAI,GAAG,CAAC,EACxCI,EAAK,SAAYpqF,EAAS,CAC5B,OAAOA,GAAWA,EAAQ,MAAQiqF,EAAW,IAAI,OAAO,MAAM,OAAOvpE,EAAE1gB,CAAO,CAAC,EAAE,OAAO4pF,CAAE,EAAE,OAAOlpE,EAAE1gB,CAAO,EAAG,OAAO,EAAE,OAAO0gB,EAAE1gB,CAAO,CAAC,EAAE,OAAOgqF,CAAE,EAAE,OAAOtpE,EAAE1gB,CAAO,EAAG,GAAG,EAAG,GAAG,CACpL,EACAoqF,EAAG,GAAK,SAAUpqF,EAAS,CACzB,OAAOA,GAAWA,EAAQ,MAAQkqF,EAAU,IAAI,OAAO,GAAG,OAAOxpE,EAAE1gB,CAAO,CAAC,EAAE,OAAO4pF,CAAE,EAAE,OAAOlpE,EAAE1gB,CAAO,CAAC,EAAG,GAAG,CACjH,EACAoqF,EAAG,GAAK,SAAUpqF,EAAS,CACzB,OAAOA,GAAWA,EAAQ,MAAQmqF,EAAU,IAAI,OAAO,GAAG,OAAOzpE,EAAE1gB,CAAO,CAAC,EAAE,OAAOgqF,CAAE,EAAE,OAAOtpE,EAAE1gB,CAAO,CAAC,EAAG,GAAG,CACjH,EACA,IAAIqqF,EAAW,qBACXC,EAAO,uBACPC,EAAOH,EAAG,GAAE,EAAG,OACfI,EAAOJ,EAAG,GAAE,EAAG,OACfK,EAAO,gEACPz2E,EAAS,iEACT02E,EAAM,sCACNC,EAAO,iBACPpuF,EAAO,qBACPquF,EAAQ,MAAM,OAAOP,EAAU,UAAU,EAAE,OAAOC,EAAM,eAAe,EAAE,OAAOC,EAAM,GAAG,EAAE,OAAOC,EAAM,GAAG,EAAE,OAAOC,CAAI,EAAE,OAAOz2E,CAAM,EAAE,OAAO02E,EAAK,GAAG,EAAE,OAAOC,CAAI,EAAE,OAAOpuF,CAAI,EACtL,OAAAktF,GAAS,IAAI,OAAO,OAAO,OAAOmB,EAAO,IAAI,EAAG,GAAG,EAC5CnB,EACT,EC5CA,IAAItrF,GAAU,CAEZ,MAAO,uOAKP,IAAK,gCACP,EACI0sF,GAAQ,CACV,QAAS,SAAiBttF,EAAO,CAC/B,OAAOstF,GAAM,OAAOttF,CAAK,GAAK,SAASA,EAAO,EAAE,IAAMA,CACxD,EACA,MAAO,SAAeA,EAAO,CAC3B,OAAOstF,GAAM,OAAOttF,CAAK,GAAK,CAACstF,GAAM,QAAQttF,CAAK,CACpD,EACA,MAAO,SAAeA,EAAO,CAC3B,OAAO,MAAM,QAAQA,CAAK,CAC5B,EACA,OAAQ,SAAgBA,EAAO,CAC7B,GAAIA,aAAiB,OACnB,MAAO,GAET,GAAI,CACF,MAAO,CAAC,CAAC,IAAI,OAAOA,CAAK,CAC3B,MAAY,CACV,MAAO,EACT,CACF,EACA,KAAM,SAAcA,EAAO,CACzB,OAAO,OAAOA,EAAM,SAAY,YAAc,OAAOA,EAAM,UAAa,YAAc,OAAOA,EAAM,SAAY,YAAc,CAAC,MAAMA,EAAM,SAAS,CACrJ,EACA,OAAQ,SAAgBA,EAAO,CAC7B,OAAI,MAAMA,CAAK,EACN,GAEF,OAAOA,GAAU,QAC1B,EACA,OAAQ,SAAgBA,EAAO,CAC7B,OAAOkhB,GAAQlhB,CAAK,IAAM,UAAY,CAACstF,GAAM,MAAMttF,CAAK,CAC1D,EACA,OAAQ,SAAgBA,EAAO,CAC7B,OAAO,OAAOA,GAAU,UAC1B,EACA,MAAO,SAAeA,EAAO,CAC3B,OAAO,OAAOA,GAAU,UAAYA,EAAM,QAAU,KAAO,CAAC,CAACA,EAAM,MAAMY,GAAQ,KAAK,CACxF,EACA,IAAK,SAAaZ,EAAO,CACvB,OAAO,OAAOA,GAAU,UAAYA,EAAM,QAAU,MAAQ,CAAC,CAACA,EAAM,MAAMmsF,IAAa,CACzF,EACA,IAAK,SAAansF,EAAO,CACvB,OAAO,OAAOA,GAAU,UAAY,CAAC,CAACA,EAAM,MAAMY,GAAQ,GAAG,CAC/D,CACF,EACIwB,GAAO,SAAcyH,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,EAAS,CAC7D,GAAIoH,EAAK,UAAY7J,IAAU,OAAW,CACxCisF,GAASpiF,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,CAAO,EAC7C,MACF,CACA,IAAI8qF,EAAS,CAAC,UAAW,QAAS,QAAS,SAAU,SAAU,SAAU,QAAS,SAAU,OAAQ,MAAO,KAAK,EAC5GC,EAAW3jF,EAAK,KAChB0jF,EAAO,QAAQC,CAAQ,EAAI,GACxBF,GAAME,CAAQ,EAAExtF,CAAK,GACxBgqF,EAAO,KAAKr8E,GAAOlL,EAAQ,SAAS,MAAM+qF,CAAQ,EAAG3jF,EAAK,UAAWA,EAAK,IAAI,CAAC,EAGxE2jF,GAAYtsE,GAAQlhB,CAAK,IAAM6J,EAAK,MAC7CmgF,EAAO,KAAKr8E,GAAOlL,EAAQ,SAAS,MAAM+qF,CAAQ,EAAG3jF,EAAK,UAAWA,EAAK,IAAI,CAAC,CAEnF,EC9DIw4B,GAAa,SAAoBx4B,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,EAAS,EACrE,QAAQ,KAAKzC,CAAK,GAAKA,IAAU,KACnCgqF,EAAO,KAAKr8E,GAAOlL,EAAQ,SAAS,WAAYoH,EAAK,SAAS,CAAC,CAEnE,ECXA,MAAA84B,GAAe,CACb,SAAUspD,GACV,WAAY5pD,GACZ,KAAMjgC,GACN,MAAO2pF,GACP,KAAM0B,GACN,QAAS7sF,EACX,ECXA,IAAI8sF,GAAM,SAAa7jF,EAAM7J,EAAOwO,EAAUrO,EAAQsC,EAAS,CAC7D,IAAIunF,EAAS,CAAA,EACT2D,EAAW9jF,EAAK,UAAY,CAACA,EAAK,UAAY1J,EAAO,eAAe0J,EAAK,KAAK,EAClF,GAAI8jF,EAAU,CACZ,GAAItD,GAAarqF,CAAK,GAAK,CAAC6J,EAAK,SAC/B,OAAO2E,EAAQ,EAEjBm0B,GAAM,SAAS94B,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,CAAO,CACrD,CACA+L,EAASw7E,CAAM,CACjB,ECXI1oD,GAAQ,SAAez3B,EAAM7J,EAAOwO,EAAUrO,EAAQsC,EAAS,CACjE,IAAIunF,EAAS,CAAA,EACT2D,EAAW9jF,EAAK,UAAY,CAACA,EAAK,UAAY1J,EAAO,eAAe0J,EAAK,KAAK,EAClF,GAAI8jF,EAAU,CACZ,GAA4B3tF,GAAU,MAAS,CAAC6J,EAAK,SACnD,OAAO2E,EAAQ,EAEjBm0B,GAAM,SAAS94B,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,EAAS,OAAO,EACjCzC,GAAU,OACnC2iC,GAAM,KAAK94B,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,CAAO,EAC/CkgC,GAAM,MAAM94B,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,CAAO,EAEpD,CACA+L,EAASw7E,CAAM,CACjB,ECbI4D,GAAU,SAAiB/jF,EAAM7J,EAAOwO,EAAUrO,EAAQsC,EAAS,CACrE,IAAIunF,EAAS,CAAA,EACT2D,EAAW9jF,EAAK,UAAY,CAACA,EAAK,UAAY1J,EAAO,eAAe0J,EAAK,KAAK,EAClF,GAAI8jF,EAAU,CACZ,GAAItD,GAAarqF,CAAK,GAAK,CAAC6J,EAAK,SAC/B,OAAO2E,EAAQ,EAEjBm0B,GAAM,SAAS94B,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,CAAO,EAC/CzC,IAAU,QACZ2iC,GAAM,KAAK94B,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,CAAO,CAEnD,CACA+L,EAASw7E,CAAM,CACjB,ECbI6D,GAAO,SAAchkF,EAAM7J,EAAOwO,EAAUrO,EAAQsC,EAAS,CAE/D,IAAIunF,EAAS,CAAA,EACT2D,EAAW9jF,EAAK,UAAY,CAACA,EAAK,UAAY1J,EAAO,eAAe0J,EAAK,KAAK,EAElF,GAAI8jF,EAAU,CACZ,GAAItD,GAAarqF,EAAO,MAAM,GAAK,CAAC6J,EAAK,SACvC,OAAO2E,EAAQ,EAGjB,GADAm0B,GAAM,SAAS94B,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,CAAO,EAC/C,CAAC4nF,GAAarqF,EAAO,MAAM,EAAG,CAChC,IAAI8tF,EACA9tF,aAAiB,KACnB8tF,EAAa9tF,EAEb8tF,EAAa,IAAI,KAAK9tF,CAAK,EAE7B2iC,GAAM,KAAK94B,EAAMikF,EAAY3tF,EAAQ6pF,EAAQvnF,CAAO,EAChDqrF,GACFnrD,GAAM,MAAM94B,EAAMikF,EAAW,QAAO,EAAI3tF,EAAQ6pF,EAAQvnF,CAAO,CAEnE,CACF,CACA+L,EAASw7E,CAAM,CACjB,ECxBI4B,GAAO,OACPC,GAAa,SAAoBhiF,EAAM7J,EAAOwO,EAAUrO,EAAQsC,EAAS,CAC3E,IAAIunF,EAAS,CAAA,EACT2D,EAAW9jF,EAAK,UAAY,CAACA,EAAK,UAAY1J,EAAO,eAAe0J,EAAK,KAAK,EAClF,GAAI8jF,EAAU,CACZ,GAAItD,GAAarqF,CAAK,GAAK,CAAC6J,EAAK,SAC/B,OAAO2E,EAAQ,EAEjBm0B,GAAM,SAAS94B,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,CAAO,EAC/CzC,IAAU,QACZ2iC,GAAMipD,EAAI,EAAE/hF,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,CAAO,CAEpD,CACA+L,EAASw7E,CAAM,CACjB,ECdI+D,GAAU,SAAiBlkF,EAAM7J,EAAOwO,EAAUrO,EAAQsC,EAAS,CACrE,IAAIunF,EAAS,CAAA,EACT2D,EAAW9jF,EAAK,UAAY,CAACA,EAAK,UAAY1J,EAAO,eAAe0J,EAAK,KAAK,EAClF,GAAI8jF,EAAU,CACZ,GAAItD,GAAarqF,CAAK,GAAK,CAAC6J,EAAK,SAC/B,OAAO2E,EAAQ,EAEjBm0B,GAAM,SAAS94B,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,CAAO,EAC/CzC,IAAU,SACZ2iC,GAAM,KAAK94B,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,CAAO,EAC/CkgC,GAAM,MAAM94B,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,CAAO,EAEpD,CACA+L,EAASw7E,CAAM,CACjB,ECdIgE,GAAU,SAAiBnkF,EAAM7J,EAAOwO,EAAUrO,EAAQsC,EAAS,CACrE,IAAIunF,EAAS,CAAA,EACT2D,EAAW9jF,EAAK,UAAY,CAACA,EAAK,UAAY1J,EAAO,eAAe0J,EAAK,KAAK,EAClF,GAAI8jF,EAAU,CACZ,GAAItD,GAAarqF,CAAK,GAAK,CAAC6J,EAAK,SAC/B,OAAO2E,EAAQ,EAEjBm0B,GAAM,SAAS94B,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,CAAO,EAC/CzC,IAAU,SACZ2iC,GAAM,KAAK94B,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,CAAO,EAC/CkgC,GAAM,MAAM94B,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,CAAO,EAEpD,CACA+L,EAASw7E,CAAM,CACjB,ECdIhqE,GAAS,SAAgBnW,EAAM7J,EAAOwO,EAAUrO,EAAQsC,EAAS,CACnE,IAAIunF,EAAS,CAAA,EACT2D,EAAW9jF,EAAK,UAAY,CAACA,EAAK,UAAY1J,EAAO,eAAe0J,EAAK,KAAK,EAClF,GAAI8jF,EAAU,CACZ,GAAItD,GAAarqF,CAAK,GAAK,CAAC6J,EAAK,SAC/B,OAAO2E,EAAQ,EAEjBm0B,GAAM,SAAS94B,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,CAAO,EAC/CzC,IAAU,QACZ2iC,GAAM,KAAK94B,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,CAAO,CAEnD,CACA+L,EAASw7E,CAAM,CACjB,ECbIiE,GAAS,SAAgBpkF,EAAM7J,EAAOwO,EAAUrO,EAAQsC,EAAS,CACnE,IAAIunF,EAAS,CAAA,EACT2D,EAAW9jF,EAAK,UAAY,CAACA,EAAK,UAAY1J,EAAO,eAAe0J,EAAK,KAAK,EAClF,GAAI8jF,EAAU,CAKZ,GAJI3tF,IAAU,KAEZA,EAAQ,QAENqqF,GAAarqF,CAAK,GAAK,CAAC6J,EAAK,SAC/B,OAAO2E,EAAQ,EAEjBm0B,GAAM,SAAS94B,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,CAAO,EAC/CzC,IAAU,SACZ2iC,GAAM,KAAK94B,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,CAAO,EAC/CkgC,GAAM,MAAM94B,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,CAAO,EAEpD,CACA+L,EAASw7E,CAAM,CACjB,EClBI3rF,GAAS,SAAgBwL,EAAM7J,EAAOwO,EAAUrO,EAAQsC,EAAS,CACnE,IAAIunF,EAAS,CAAA,EACT2D,EAAW9jF,EAAK,UAAY,CAACA,EAAK,UAAY1J,EAAO,eAAe0J,EAAK,KAAK,EAClF,GAAI8jF,EAAU,CACZ,GAAItD,GAAarqF,CAAK,GAAK,CAAC6J,EAAK,SAC/B,OAAO2E,EAAQ,EAEjBm0B,GAAM,SAAS94B,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,CAAO,EAC/CzC,IAAU,QACZ2iC,GAAM,KAAK94B,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,CAAO,CAEnD,CACA+L,EAASw7E,CAAM,CACjB,ECbIppF,GAAU,SAAiBiJ,EAAM7J,EAAOwO,EAAUrO,EAAQsC,EAAS,CACrE,IAAIunF,EAAS,CAAA,EACT2D,EAAW9jF,EAAK,UAAY,CAACA,EAAK,UAAY1J,EAAO,eAAe0J,EAAK,KAAK,EAClF,GAAI8jF,EAAU,CACZ,GAAItD,GAAarqF,EAAO,QAAQ,GAAK,CAAC6J,EAAK,SACzC,OAAO2E,EAAQ,EAEjBm0B,GAAM,SAAS94B,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,CAAO,EAC9C4nF,GAAarqF,EAAO,QAAQ,GAC/B2iC,GAAM,QAAQ94B,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,CAAO,CAEtD,CACA+L,EAASw7E,CAAM,CACjB,ECbIhvC,GAAS,SAAgBnxC,EAAM7J,EAAOwO,EAAUrO,EAAQsC,EAAS,CACnE,IAAIunF,EAAS,CAAA,EACT2D,EAAW9jF,EAAK,UAAY,CAACA,EAAK,UAAY1J,EAAO,eAAe0J,EAAK,KAAK,EAClF,GAAI8jF,EAAU,CACZ,GAAItD,GAAarqF,CAAK,GAAK,CAAC6J,EAAK,SAC/B,OAAO2E,EAAQ,EAEjBm0B,GAAM,SAAS94B,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,CAAO,EAC9C4nF,GAAarqF,CAAK,GACrB2iC,GAAM,KAAK94B,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,CAAO,CAEnD,CACA+L,EAASw7E,CAAM,CACjB,ECbIiC,GAAW,SAAkBpiF,EAAM7J,EAAOwO,EAAUrO,EAAQsC,EAAS,CACvE,IAAIunF,EAAS,CAAA,EACT5nF,EAAO,MAAM,QAAQpC,CAAK,EAAI,QAAUkhB,GAAQlhB,CAAK,EACzD2iC,GAAM,SAAS94B,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,EAASL,CAAI,EACzDoM,EAASw7E,CAAM,CACjB,ECLIkE,GAAS,SAAgBrkF,EAAM7J,EAAOwO,EAAUrO,EAAQsC,EAAS,CACnE,IAAIunF,EAAS,CAAA,EACT2D,EAAW9jF,EAAK,UAAY,CAACA,EAAK,UAAY1J,EAAO,eAAe0J,EAAK,KAAK,EAClF,GAAI8jF,EAAU,CACZ,GAAItD,GAAarqF,EAAO,QAAQ,GAAK,CAAC6J,EAAK,SACzC,OAAO2E,EAAQ,EAEjBm0B,GAAM,SAAS94B,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,EAAS,QAAQ,EACxD4nF,GAAarqF,EAAO,QAAQ,IAC/B2iC,GAAM,KAAK94B,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,CAAO,EAC/CkgC,GAAM,MAAM94B,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,CAAO,EAChDkgC,GAAM,QAAQ94B,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,CAAO,EAC9CoH,EAAK,aAAe,IACtB84B,GAAM,WAAW94B,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,CAAO,EAG3D,CACA+L,EAASw7E,CAAM,CACjB,EClBI5nF,GAAO,SAAcyH,EAAM7J,EAAOwO,EAAUrO,EAAQsC,EAAS,CAC/D,IAAI+qF,EAAW3jF,EAAK,KAChBmgF,EAAS,CAAA,EACT2D,EAAW9jF,EAAK,UAAY,CAACA,EAAK,UAAY1J,EAAO,eAAe0J,EAAK,KAAK,EAClF,GAAI8jF,EAAU,CACZ,GAAItD,GAAarqF,EAAOwtF,CAAQ,GAAK,CAAC3jF,EAAK,SACzC,OAAO2E,EAAQ,EAEjBm0B,GAAM,SAAS94B,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,EAAS+qF,CAAQ,EACxDnD,GAAarqF,EAAOwtF,CAAQ,GAC/B7qD,GAAM,KAAK94B,EAAM7J,EAAOG,EAAQ6pF,EAAQvnF,CAAO,CAEnD,CACA+L,EAASw7E,CAAM,CACjB,ECDA,MAAAmE,GAAe,CACb,OAAQD,GACR,OAAQluE,GACR,OAAQiuE,GACR,QAASL,GACT,OAAQ5yC,GACR,QAASgzC,GACT,MAAOI,GACP,MAAO9sD,GACP,OAAQjjC,GACR,KAAMgwF,GACN,QAASztF,GACT,KAAMitF,GACN,IAAKzrF,GACL,IAAKA,GACL,MAAOA,GACP,SAAU6pF,GACV,IAAKyB,EACP,EChBA,IAAIY,GAAsB,UAAY,CACpC,SAASA,EAAOC,EAAY,CAC1BzgE,GAAgB,KAAMwgE,CAAM,EAE5B9rE,EAAgB,KAAM,QAAS,IAAI,EACnCA,EAAgB,KAAM,YAAagsE,EAAe,EAClD,KAAK,OAAOD,CAAU,CACxB,CACAvgE,OAAAA,GAAasgE,EAAQ,CAAC,CACpB,IAAK,SACL,MAAO,SAAgB3rD,EAAO,CAC5B,IAAIvV,EAAQ,KACZ,GAAI,CAACuV,EACH,MAAM,IAAI,MAAM,yCAAyC,EAE3D,GAAIzhB,GAAQyhB,CAAK,IAAM,UAAY,MAAM,QAAQA,CAAK,EACpD,MAAM,IAAI,MAAM,yBAAyB,EAE3C,KAAK,MAAQ,CAAA,EACb,OAAO,KAAKA,CAAK,EAAE,QAAQ,SAAUj1B,EAAM,CACzC,IAAI6qB,EAAOoK,EAAMj1B,CAAI,EACrB0f,EAAM,MAAM1f,CAAI,EAAI,MAAM,QAAQ6qB,CAAI,EAAIA,EAAO,CAACA,CAAI,CACxD,CAAC,CACH,CACJ,EAAK,CACD,IAAK,WACL,MAAO,SAAkBk2D,EAAW,CAClC,OAAIA,IACF,KAAK,UAAY9C,GAAUrC,GAAW,EAAImF,CAAS,GAE9C,KAAK,SACd,CACJ,EAAK,CACD,IAAK,WACL,MAAO,SAAkBC,EAAS,CAChC,IAAIpzC,EAAS,KACT72C,EAAI,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAA,EACxEkqF,EAAK,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,UAAY,CAAC,EACtFxuF,EAASuuF,EACTjsF,EAAUgC,EACV+J,EAAWmgF,EAKf,GAJI,OAAOlsF,GAAY,aACrB+L,EAAW/L,EACXA,EAAU,CAAA,GAER,CAAC,KAAK,OAAS,OAAO,KAAK,KAAK,KAAK,EAAE,SAAW,EACpD,OAAI+L,GACFA,EAAS,KAAMrO,CAAM,EAEhB,QAAQ,QAAQA,CAAM,EAE/B,SAASyuF,EAASpE,EAAS,CACzB,IAAIR,EAAS,CAAA,EACT9jB,EAAS,CAAA,EACb,SAAS2oB,EAAItvF,EAAG,CACd,GAAI,MAAM,QAAQA,CAAC,EAAG,CACpB,IAAIuvF,EACJ9E,GAAU8E,EAAU9E,GAAQ,OAAO,MAAM8E,EAAS39D,GAAmB5xB,CAAC,CAAC,CACzE,MACEyqF,EAAO,KAAKzqF,CAAC,CAEjB,CACA,QAASqC,EAAI,EAAGA,EAAI4oF,EAAQ,OAAQ5oF,IAClCitF,EAAIrE,EAAQ5oF,CAAC,CAAC,EAEXooF,EAAO,QAGV9jB,EAAS+jB,GAAmBD,CAAM,EAClCx7E,EAASw7E,EAAQ9jB,CAAM,GAHvB13D,EAAS,KAAMrO,CAAM,CAKzB,CACA,GAAIsC,EAAQ,SAAU,CACpB,IAAI+mF,EAAW,KAAK,SAAQ,EACxBA,IAAagF,KACfhF,EAAWF,GAAW,GAExBqC,GAAUnC,EAAU/mF,EAAQ,QAAQ,EACpCA,EAAQ,SAAW+mF,CACrB,MACE/mF,EAAQ,SAAW,KAAK,SAAQ,EAElC,IAAIssF,EAAS,CAAA,EACT/pF,EAAOvC,EAAQ,MAAQ,OAAO,KAAK,KAAK,KAAK,EACjDuC,EAAK,QAAQ,SAAU4+B,EAAG,CACxB,IAAI1a,EAAMoyB,EAAO,MAAM1X,CAAC,EACpB5jC,EAAQG,EAAOyjC,CAAC,EACpB1a,EAAI,QAAQ,SAAU5nB,EAAG,CACvB,IAAIuI,EAAOvI,EACP,OAAOuI,EAAK,WAAc,aACxB1J,IAAWuuF,IACbvuF,EAASowB,EAAc,CAAA,EAAIpwB,CAAM,GAEnCH,EAAQG,EAAOyjC,CAAC,EAAI/5B,EAAK,UAAU7J,CAAK,EACbA,GAAU,OACnC6J,EAAK,KAAOA,EAAK,OAAS,MAAM,QAAQ7J,CAAK,EAAI,QAAUkhB,GAAQlhB,CAAK,KAGxE,OAAO6J,GAAS,WAClBA,EAAO,CACL,UAAWA,CACzB,EAEYA,EAAO0mB,EAAc,CAAA,EAAI1mB,CAAI,EAI/BA,EAAK,UAAYyxC,EAAO,oBAAoBzxC,CAAI,EAC3CA,EAAK,YAGVA,EAAK,MAAQ+5B,EACb/5B,EAAK,UAAYA,EAAK,WAAa+5B,EACnC/5B,EAAK,KAAOyxC,EAAO,QAAQzxC,CAAI,EAC/BklF,EAAOnrD,CAAC,EAAImrD,EAAOnrD,CAAC,GAAK,CAAA,EACzBmrD,EAAOnrD,CAAC,EAAE,KAAK,CACb,KAAM/5B,EACN,MAAO7J,EACP,OAAQG,EACR,MAAOyjC,CACnB,CAAW,EACH,CAAC,CACH,CAAC,EACD,IAAIorD,EAAc,CAAA,EAClB,OAAO/D,GAAS8D,EAAQtsF,EAAS,SAAU3C,EAAMmvF,EAAM,CACrD,IAAIplF,EAAO/J,EAAK,KACZ+D,GAAQgG,EAAK,OAAS,UAAYA,EAAK,OAAS,WAAaqX,GAAQrX,EAAK,MAAM,IAAM,UAAYqX,GAAQrX,EAAK,YAAY,IAAM,UACrIhG,EAAOA,IAASgG,EAAK,UAAY,CAACA,EAAK,UAAY/J,EAAK,OACxD+J,EAAK,MAAQ/J,EAAK,MAClB,SAASovF,EAAarwF,EAAKswF,EAAQ,CACjC,OAAO5+D,EAAcA,EAAc,CAAA,EAAI4+D,CAAM,EAAG,CAAA,EAAI,CAClD,UAAW,GAAG,OAAOtlF,EAAK,UAAW,GAAG,EAAE,OAAOhL,CAAG,EACpD,WAAYgL,EAAK,WAAa,CAAA,EAAG,OAAOsnB,GAAmBtnB,EAAK,UAAU,EAAG,CAAChL,CAAG,CAAC,EAAI,CAACA,CAAG,CACtG,CAAW,CACH,CACA,SAAS+T,GAAK,CACZ,IAAIrT,EAAI,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAA,EACxE6vF,EAAY,MAAM,QAAQ7vF,CAAC,EAAIA,EAAI,CAACA,CAAC,EACrC,CAACkD,EAAQ,iBAAmB2sF,EAAU,QACxCd,EAAO,QAAQ,mBAAoBc,CAAS,EAE1CA,EAAU,QAAUvlF,EAAK,UAAY,SACvCulF,EAAY,CAAA,EAAG,OAAOvlF,EAAK,OAAO,GAIpC,IAAIwlF,EAAeD,EAAU,IAAI5D,GAAgB3hF,EAAM1J,CAAM,CAAC,EAC9D,GAAIsC,EAAQ,OAAS4sF,EAAa,OAChC,OAAAL,EAAYnlF,EAAK,KAAK,EAAI,EACnBolF,EAAKI,CAAY,EAE1B,GAAI,CAACxrF,EACHorF,EAAKI,CAAY,MACZ,CAIL,GAAIxlF,EAAK,UAAY,CAAC/J,EAAK,MACzB,OAAI+J,EAAK,UAAY,OACnBwlF,EAAe,CAAA,EAAG,OAAOxlF,EAAK,OAAO,EAAE,IAAI2hF,GAAgB3hF,EAAM1J,CAAM,CAAC,EAC/DsC,EAAQ,QACjB4sF,EAAe,CAAC5sF,EAAQ,MAAMoH,EAAM8D,GAAOlL,EAAQ,SAAS,SAAUoH,EAAK,KAAK,CAAC,CAAC,GAE7EolF,EAAKI,CAAY,EAE1B,IAAIC,EAAe,CAAA,EACfzlF,EAAK,cACP,OAAO,KAAK/J,EAAK,KAAK,EAAE,IAAI,SAAUjB,EAAK,CACzCywF,EAAazwF,CAAG,EAAIgL,EAAK,YAC3B,CAAC,EAEHylF,EAAe/+D,EAAcA,EAAc,CAAA,EAAI++D,CAAY,EAAGxvF,EAAK,KAAK,MAAM,EAC9E,IAAIyvF,EAAoB,CAAA,EACxB,OAAO,KAAKD,CAAY,EAAE,QAAQ,SAAUpF,EAAO,CACjD,IAAIsF,EAAcF,EAAapF,CAAK,EAChCuF,EAAkB,MAAM,QAAQD,CAAW,EAAIA,EAAc,CAACA,CAAW,EAC7ED,EAAkBrF,CAAK,EAAIuF,EAAgB,IAAIP,EAAa,KAAK,KAAMhF,CAAK,CAAC,CAC/E,CAAC,EACD,IAAIiF,EAAS,IAAIb,EAAOiB,CAAiB,EACzCJ,EAAO,SAAS1sF,EAAQ,QAAQ,EAC5B3C,EAAK,KAAK,UACZA,EAAK,KAAK,QAAQ,SAAW2C,EAAQ,SACrC3C,EAAK,KAAK,QAAQ,MAAQ2C,EAAQ,OAEpC0sF,EAAO,SAASrvF,EAAK,MAAOA,EAAK,KAAK,SAAW2C,EAAS,SAAUitF,EAAM,CACxE,IAAIC,EAAc,CAAA,EACdN,GAAgBA,EAAa,QAC/BM,EAAY,KAAK,MAAMA,EAAax+D,GAAmBk+D,CAAY,CAAC,EAElEK,GAAQA,EAAK,QACfC,EAAY,KAAK,MAAMA,EAAax+D,GAAmBu+D,CAAI,CAAC,EAE9DT,EAAKU,EAAY,OAASA,EAAc,IAAI,CAC9C,CAAC,CACH,CACF,CACA,IAAI5xF,EACJ,GAAI8L,EAAK,eACP9L,EAAM8L,EAAK,eAAeA,EAAM/J,EAAK,MAAO8S,EAAI9S,EAAK,OAAQ2C,CAAO,UAC3DoH,EAAK,UAAW,CACzB,GAAI,CACF9L,EAAM8L,EAAK,UAAUA,EAAM/J,EAAK,MAAO8S,EAAI9S,EAAK,OAAQ2C,CAAO,CACjE,OAASwL,EAAO,CACd,IAAI2hF,EAAgBC,GACnBD,GAAkBC,EAAW,SAAS,SAAW,MAAQD,IAAmB,QAAUA,EAAe,KAAKC,EAAU5hF,CAAK,EAErHxL,EAAQ,wBACX,WAAW,UAAY,CACrB,MAAMwL,CACR,EAAG,CAAC,EAEN2E,EAAG3E,EAAM,OAAO,CAClB,CACIlQ,IAAQ,GACV6U,EAAE,EACO7U,IAAQ,GACjB6U,EAAG,OAAO/I,EAAK,SAAY,WAAaA,EAAK,QAAQA,EAAK,WAAaA,EAAK,KAAK,EAAIA,EAAK,SAAW,GAAG,OAAOA,EAAK,WAAaA,EAAK,MAAO,QAAQ,CAAC,EAC7I9L,aAAe,MACxB6U,EAAG7U,CAAG,EACGA,aAAe,OACxB6U,EAAG7U,EAAI,OAAO,CAElB,CACIA,GAAOA,EAAI,MACbA,EAAI,KAAK,UAAY,CACnB,OAAO6U,EAAE,CACX,EAAG,SAAUrT,EAAG,CACd,OAAOqT,EAAGrT,CAAC,CACb,CAAC,CAEL,EAAG,SAAUirF,EAAS,CACpBoE,EAASpE,CAAO,CAClB,EAAGrqF,CAAM,CACX,CACJ,EAAK,CACD,IAAK,UACL,MAAO,SAAiB0J,EAAM,CAI5B,GAHIA,EAAK,OAAS,QAAaA,EAAK,mBAAmB,SACrDA,EAAK,KAAO,WAEV,OAAOA,EAAK,WAAc,YAAcA,EAAK,MAAQ,CAACskF,GAAW,eAAetkF,EAAK,IAAI,EAC3F,MAAM,IAAI,MAAM8D,GAAO,uBAAwB9D,EAAK,IAAI,CAAC,EAE3D,OAAOA,EAAK,MAAQ,QACtB,CACJ,EAAK,CACD,IAAK,sBACL,MAAO,SAA6BA,EAAM,CACxC,GAAI,OAAOA,EAAK,WAAc,WAC5B,OAAOA,EAAK,UAEd,IAAI7E,EAAO,OAAO,KAAK6E,CAAI,EACvBimF,EAAe9qF,EAAK,QAAQ,SAAS,EAIzC,OAHI8qF,IAAiB,IACnB9qF,EAAK,OAAO8qF,EAAc,CAAC,EAEzB9qF,EAAK,SAAW,GAAKA,EAAK,CAAC,IAAM,WAC5BmpF,GAAW,SAEbA,GAAW,KAAK,QAAQtkF,CAAI,CAAC,GAAK,MAC3C,CACJ,CAAG,CAAC,EACKykF,CACT,EAAC,EAED9rE,EAAgB8rE,GAAQ,WAAY,SAAkBlsF,EAAM2tF,EAAW,CACrE,GAAI,OAAOA,GAAc,WACvB,MAAM,IAAI,MAAM,kEAAkE,EAEpF5B,GAAW/rF,CAAI,EAAI2tF,CACrB,CAAC,EACDvtE,EAAgB8rE,GAAQ,UAAWzsE,EAAO,EAC1CW,EAAgB8rE,GAAQ,WAAYE,EAAe,EACnDhsE,EAAgB8rE,GAAQ,aAAcH,EAAU,EClShD,IAAIzgD,GAAe,mCACRsiD,GAA0B,CACnC,QAAS,sCACT,SAAU,wBACV,KAAM,qCACN,WAAY,4BACZ,KAAM,CACJ,OAAQ,uCACR,MAAO,wCACP,QAAS,2BACb,EACE,MAAO,CACL,OAAQtiD,GACR,OAAQA,GACR,MAAOA,GACP,OAAQA,GACR,OAAQA,GACR,KAAMA,GACN,QAASA,GACT,QAASA,GACT,MAAOA,GACP,OAAQA,GACR,MAAOA,GACP,IAAKA,GACL,IAAKA,EACT,EACE,OAAQ,CACN,IAAK,8CACL,IAAK,+CACL,IAAK,oDACL,MAAO,wDACX,EACE,OAAQ,CACN,IAAK,8BACL,IAAK,uCACL,IAAK,0CACL,MAAO,6CACX,EACE,MAAO,CACL,IAAK,6CACL,IAAK,iDACL,IAAK,oDACL,MAAO,uDACX,EACE,QAAS,CACP,SAAU,6CACd,CACA,ECnCIuiD,GAAiBC,GAMrB,SAASC,GAAehG,EAAUiG,EAAI,CACpC,OAAOjG,EAAS,QAAQ,gBAAiB,SAAU5pF,EAAK,CACtD,GAAIA,EAAI,WAAW,IAAI,EACrB,OAAOA,EAAI,MAAM,CAAC,EAEpB,IAAI1B,EAAM0B,EAAI,MAAM,EAAG,EAAE,EACzB,OAAO6vF,EAAGvxF,CAAG,CACf,CAAC,CACH,CACA,IAAIwxF,GAAmB,mBACvB,SAASC,GAAaprB,EAAIO,EAAK8qB,EAAKC,EAAKC,EAAK,CAC5C,OAAOC,GAAc,MAAM,KAAM,SAAS,CAC5C,CAKA,SAASA,IAAgB,CACvB,OAAAA,GAAgBvsB,GAAgCN,GAAmB,EAAG,KAAK,SAAS8B,EAASj4D,EAAM1N,EAAO6J,EAAMpH,EAASkuF,EAAkB,CACzI,IAAIC,EAAWC,EAAiBC,EAAcf,EAAWvG,EAAU7lF,EAAQotF,EAAYX,EAAIY,EAC3F,OAAOntB,GAAmB,EAAG,KAAK,SAAmB+B,EAAW,CAC9D,OAAU,OAAQA,EAAU,KAAOA,EAAU,KAAI,CAC/C,IAAK,GACH,OAAAgrB,EAAYrgE,EAAc,GAAI1mB,CAAI,EAGlC,OAAO+mF,EAAU,UAGjBX,GAAe,QAAU,UAAY,CAErC,EACIW,EAAU,YACZC,EAAkBD,EAAU,UAC5BA,EAAU,UAAY,UAAY,CAChC,GAAI,CACF,OAAOC,EAAgB,MAAM,OAAQ,SAAS,CAChD,OAAS5iF,EAAO,CACd,eAAQ,MAAMA,CAAK,EACZ,QAAQ,OAAOoiF,EAAgB,CACxC,CACF,GAIFS,EAAe,KACXF,GAAaA,EAAU,OAAS,SAAWA,EAAU,eACvDE,EAAeF,EAAU,aACzB,OAAOA,EAAU,cAEnBb,EAAY,IAAIE,GAAeztE,EAAgB,CAAA,EAAI9U,EAAM,CAACkjF,CAAS,CAAC,CAAC,EACrEpH,EAAWx9C,GAAMgkD,GAAyBvtF,EAAQ,gBAAgB,EAClEstF,EAAU,SAASvG,CAAQ,EAC3B7lF,EAAS,CAAA,EACTiiE,EAAU,KAAO,GACjBA,EAAU,KAAO,GACV,QAAQ,QAAQmqB,EAAU,SAASvtE,EAAgB,CAAA,EAAI9U,EAAM1N,CAAK,EAAGuwB,EAAc,CAAA,EAAI9tB,CAAO,CAAC,CAAC,EACzG,IAAK,IACHmjE,EAAU,KAAO,GACjB,MACF,IAAK,IACHA,EAAU,KAAO,GACjBA,EAAU,GAAKA,EAAU,MAAS,EAAE,EAChCA,EAAU,GAAG,SACfjiE,EAASiiE,EAAU,GAAG,OAAO,IAAI,SAAUlrC,EAAOl3B,EAAO,CACvD,IAAIwY,EAAU0e,EAAM,QAChBu2D,EAAgBj1E,IAAYq0E,GAAmB7G,EAAS,QAAUxtE,EACtE,OAAoBZ,EAAM,eAAe61E,CAAa,EAGtD71E,EAAM,aAAa61E,EAAe,CAChC,IAAK,SAAS,OAAOztF,CAAK,CAC1C,CAAe,EAAIytF,CACP,CAAC,GAEL,IAAK,IACH,GAAI,EAAE,CAACttF,EAAO,QAAUmtF,GAAe,CACrClrB,EAAU,KAAO,GACjB,KACF,CACA,OAAAA,EAAU,KAAO,GACV,QAAQ,IAAI5lE,EAAM,IAAI,SAAUkxF,EAAUtvF,EAAG,CAClD,OAAO0uF,GAAa,GAAG,OAAO5iF,EAAM,GAAG,EAAE,OAAO9L,CAAC,EAAGsvF,EAAUJ,EAAcruF,EAASkuF,CAAgB,CACvG,CAAC,CAAC,EACJ,IAAK,IACH,OAAAI,EAAanrB,EAAU,KAChBA,EAAU,OAAO,SAAUmrB,EAAW,OAAO,SAAU5+E,EAAM63E,EAAQ,CAC1E,MAAO,CAAA,EAAG,OAAO74D,GAAmBhf,CAAI,EAAGgf,GAAmB64D,CAAM,CAAC,CACvE,EAAG,CAAA,CAAE,CAAC,EACR,IAAK,IAEH,OAAAoG,EAAK7/D,EAAcA,EAAc,CAAA,EAAI1mB,CAAI,EAAG,CAAA,EAAI,CAC9C,KAAM6D,EACN,MAAO7D,EAAK,MAAQ,CAAA,GAAI,KAAK,IAAI,CAC7C,EAAa8mF,CAAgB,EACnBK,EAAqBrtF,EAAO,IAAI,SAAUsK,EAAO,CAC/C,OAAI,OAAOA,GAAU,SACZkiF,GAAeliF,EAAOmiF,CAAE,EAE1BniF,CACT,CAAC,EACM23D,EAAU,OAAO,SAAUorB,CAAkB,EACtD,IAAK,IACL,IAAK,MACH,OAAOprB,EAAU,KAAI,CAC/B,CACI,EAAGD,EAAU,KAAM,CAAC,CAAC,GAAI,EAAE,CAAC,CAAC,CAC/B,CAAC,CAAC,EACK+qB,GAAc,MAAM,KAAM,SAAS,CAC5C,CACO,SAASS,GAAcC,EAAUpxF,EAAO2iC,EAAOlgC,EAAS4uF,EAAeV,EAAkB,CAC9F,IAAIjjF,EAAO0jF,EAAS,KAAK,GAAG,EAGxBE,EAAc3uD,EAAM,IAAI,SAAU4uD,EAAaC,EAAW,CAC5D,IAAIC,EAAsBF,EAAY,UAClCX,EAAYrgE,EAAcA,EAAc,CAAA,EAAIghE,CAAW,EAAG,GAAI,CAChE,UAAWC,CACjB,CAAK,EAGD,OAAIC,IACFb,EAAU,UAAY,SAAU/mF,EAAMO,EAAKoE,EAAU,CACnD,IAAIkjF,EAAa,GAGbC,EAAkB,UAA2B,CAC/C,QAASpqE,EAAO,UAAU,OAAQplB,EAAO,IAAI,MAAMolB,CAAI,EAAGE,EAAO,EAAGA,EAAOF,EAAME,IAC/EtlB,EAAKslB,CAAI,EAAI,UAAUA,CAAI,EAG7B,QAAQ,UAAU,KAAK,UAAY,CACjC5F,GAAQ,CAAC6vE,EAAY,mFAAmF,EACnGA,GACHljF,EAAS,MAAM,OAAQrM,CAAI,CAE/B,CAAC,CACH,EAGIlE,EAAUwzF,EAAoB5nF,EAAMO,EAAKunF,CAAe,EAC5DD,EAAazzF,GAAW,OAAOA,EAAQ,MAAS,YAAc,OAAOA,EAAQ,OAAU,WAMvF4jB,GAAQ6vE,EAAY,4DAA4D,EAC5EA,GACFzzF,EAAQ,KAAK,UAAY,CACvBuQ,EAAQ,CACV,CAAC,EAAE,MAAM,SAAUM,EAAK,CACtBN,EAASM,GAAO,GAAG,CACrB,CAAC,CAEL,GAEK8hF,CACT,CAAC,EAAE,KAAK,SAAU95E,EAAME,EAAO,CAC7B,IAAI46E,EAAK96E,EAAK,YACZ+6E,EAAK/6E,EAAK,UACRg7E,EAAK96E,EAAM,YACb+6E,EAAK/6E,EAAM,UACb,MAAI,CAAC,CAAC46E,GAAO,CAAC,CAACE,EAEND,EAAKE,EAEVH,EACK,EAEF,EACT,CAAC,EAGGI,EACJ,GAAIX,IAAkB,GAEpBW,EAAiB,IAAI,QAAsB,UAAY,CACrD,IAAIz3D,EAAQ4pC,GAAgCN,GAAmB,EAAG,KAAK,SAASuB,EAAQlnE,EAASC,EAAQ,CACvG,IAAIyD,EAAGiI,EAAMmgF,EACb,OAAOnmB,GAAmB,EAAG,KAAK,SAAkBwB,EAAU,CAC5D,OAAU,OAAQA,EAAS,KAAOA,EAAS,KAAI,CAC7C,IAAK,GACHzjE,EAAI,EACN,IAAK,GACH,GAAI,EAAEA,EAAI0vF,EAAY,QAAS,CAC7BjsB,EAAS,KAAO,GAChB,KACF,CACA,OAAAx7D,EAAOynF,EAAY1vF,CAAC,EACpByjE,EAAS,KAAO,EACTirB,GAAa5iF,EAAM1N,EAAO6J,EAAMpH,EAASkuF,CAAgB,EAClE,IAAK,GAEH,GADA3G,EAAS3kB,EAAS,KACd,CAAC2kB,EAAO,OAAQ,CAClB3kB,EAAS,KAAO,EAChB,KACF,CACA,OAAAlnE,EAAO,CAAC,CACN,OAAQ6rF,EACR,KAAMngF,CACtB,CAAe,CAAC,EACKw7D,EAAS,OAAO,QAAQ,EACjC,IAAK,GACHzjE,GAAK,EACLyjE,EAAS,KAAO,EAChB,MACF,IAAK,IAGHnnE,EAAQ,CAAA,CAAE,EACZ,IAAK,IACL,IAAK,MACH,OAAOmnE,EAAS,KAAI,CAClC,CACQ,EAAGD,CAAO,CACZ,CAAC,CAAC,EACF,OAAO,SAAU6sB,EAAKC,EAAK,CACzB,OAAO33D,EAAM,MAAM,KAAM,SAAS,CACpC,CACF,GAAG,MACE,CAEL,IAAI43D,EAAeb,EAAY,IAAI,SAAUznF,EAAM,CACjD,OAAOymF,GAAa5iF,EAAM1N,EAAO6J,EAAMpH,EAASkuF,CAAgB,EAAE,KAAK,SAAU3G,EAAQ,CACvF,MAAO,CACL,OAAQA,EACR,KAAMngF,CAChB,CACM,CAAC,CACH,CAAC,EACDmoF,GAAkBX,EAAgBe,GAAoBD,CAAY,EAAIE,GAAkBF,CAAY,GAAG,KAAK,SAAUnI,EAAQ,CAE5H,OAAO,QAAQ,OAAOA,CAAM,CAC9B,CAAC,CACH,CAGA,OAAAgI,EAAe,MAAM,SAAUzyF,EAAG,CAChC,OAAOA,CACT,CAAC,EACMyyF,CACT,CACA,SAASK,GAAkBC,EAAK,CAC9B,OAAOC,GAAmB,MAAM,KAAM,SAAS,CACjD,CACA,SAASA,IAAqB,CAC5B,OAAAA,GAAqBpuB,GAAgCN,GAAmB,EAAG,KAAK,SAAS2uB,EAASL,EAAc,CAC9G,OAAOtuB,GAAmB,EAAG,KAAK,SAAmB4uB,EAAW,CAC9D,OAAU,OAAQA,EAAU,KAAOA,EAAU,KAAI,CAC/C,IAAK,GACH,OAAOA,EAAU,OAAO,SAAU,QAAQ,IAAIN,CAAY,EAAE,KAAK,SAAUO,EAAY,CACrF,IAAIn1D,EACAysD,GAAUzsD,EAAQ,IAAI,OAAO,MAAMA,EAAOpM,GAAmBuhE,CAAU,CAAC,EAC5E,OAAO1I,CACT,CAAC,CAAC,EACJ,IAAK,GACL,IAAK,MACH,OAAOyI,EAAU,KAAI,CAC/B,CACI,EAAGD,CAAQ,CACb,CAAC,CAAC,EACKD,GAAmB,MAAM,KAAM,SAAS,CACjD,CACA,SAASH,GAAoBO,EAAK,CAChC,OAAOC,GAAqB,MAAM,KAAM,SAAS,CACnD,CACA,SAASA,IAAuB,CAC9B,OAAAA,GAAuBzuB,GAAgCN,GAAmB,EAAG,KAAK,SAASgvB,EAASV,EAAc,CAChH,IAAI3oF,EACJ,OAAOq6D,GAAmB,EAAG,KAAK,SAAmBivB,EAAW,CAC9D,OAAU,OAAQA,EAAU,KAAOA,EAAU,KAAI,CAC/C,IAAK,GACH,OAAAtpF,EAAQ,EACDspF,EAAU,OAAO,SAAU,IAAI,QAAQ,SAAU50F,EAAS,CAC/Di0F,EAAa,QAAQ,SAAUl0F,EAAS,CACtCA,EAAQ,KAAK,SAAU80F,EAAW,CAC5BA,EAAU,OAAO,QACnB70F,EAAQ,CAAC60F,CAAS,CAAC,EAErBvpF,GAAS,EACLA,IAAU2oF,EAAa,QACzBj0F,EAAQ,CAAA,CAAE,CAEd,CAAC,CACH,CAAC,CACH,CAAC,CAAC,EACJ,IAAK,GACL,IAAK,MACH,OAAO40F,EAAU,KAAI,CAC/B,CACI,EAAGD,CAAQ,CACb,CAAC,CAAC,EACKD,GAAqB,MAAM,KAAM,SAAS,CACnD,CC1SO,SAASI,GAAYh0F,EAAM,CAChC,OAAOuiB,GAAQviB,CAAI,CACrB,CACO,SAASi0F,GAAoB3kF,EAAO4kF,EAAc,CACvD,IAAIC,EAAW,CAAA,EACf,OAAAD,EAAa,QAAQ,SAAU9B,EAAU,CACvC,IAAIpxF,EAAQ+mB,GAASzY,EAAO8iF,CAAQ,EACpC+B,EAAW92C,GAAS82C,EAAU/B,EAAUpxF,CAAK,CAC/C,CAAC,EACMmzF,CACT,CAQO,SAASC,GAAiBF,EAAc9B,EAAU,CACvD,IAAIiC,EAAe,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACvF,OAAOH,GAAgBA,EAAa,KAAK,SAAUl0F,EAAM,CACvD,OAAOs0F,GAAclC,EAAUpyF,EAAMq0F,CAAY,CACnD,CAAC,CACH,CAQO,SAASC,GAAclC,EAAUmC,EAAa,CACnD,IAAIF,EAAe,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAIvF,MAHI,CAACjC,GAAY,CAACmC,GAGd,CAACF,GAAgBjC,EAAS,SAAWmC,EAAY,OAC5C,GAEFA,EAAY,MAAM,SAAUC,EAAU,EAAG,CAC9C,OAAOpC,EAAS,CAAC,IAAMoC,CACzB,CAAC,CACH,CAIO,SAASC,GAAUtzF,EAAQD,EAAQ,CACxC,GAAIC,IAAWD,EACb,MAAO,GAKT,GAHI,CAACC,GAAUD,GAAUC,GAAU,CAACD,GAGhC,CAACC,GAAU,CAACD,GAAUghB,GAAQ/gB,CAAM,IAAM,UAAY+gB,GAAQhhB,CAAM,IAAM,SAC5E,MAAO,GAET,IAAIwzF,EAAa,OAAO,KAAKvzF,CAAM,EAC/BwzF,EAAa,OAAO,KAAKzzF,CAAM,EAC/B8E,EAAO,IAAI,IAAI,CAAA,EAAG,OAAO0uF,EAAYC,CAAU,CAAC,EACpD,OAAOxiE,GAAmBnsB,CAAI,EAAE,MAAM,SAAUnG,EAAK,CACnD,IAAI+0F,EAAczzF,EAAOtB,CAAG,EACxBg1F,EAAc3zF,EAAOrB,CAAG,EAC5B,OAAI,OAAO+0F,GAAgB,YAAc,OAAOC,GAAgB,WACvD,GAEFD,IAAgBC,CACzB,CAAC,CACH,CACO,SAASC,GAAyBC,EAAe,CACtD,IAAI7wF,EAAQ,UAAU,QAAU,EAAI,OAAY,UAAU,CAAC,EAC3D,OAAIA,GAASA,EAAM,QAAUge,GAAQhe,EAAM,MAAM,IAAM,UAAY6wF,KAAiB7wF,EAAM,OACjFA,EAAM,OAAO6wF,CAAa,EAE5B7wF,CACT,CAYO,SAAS8wF,GAAK1yD,EAAO2yD,EAAWC,EAAS,CAC9C,IAAIzyD,EAASH,EAAM,OACnB,GAAI2yD,EAAY,GAAKA,GAAaxyD,GAAUyyD,EAAU,GAAKA,GAAWzyD,EACpE,OAAOH,EAET,IAAI/I,EAAO+I,EAAM2yD,CAAS,EACtBE,EAAOF,EAAYC,EACvB,OAAIC,EAAO,EAEF,GAAG,OAAOhjE,GAAmBmQ,EAAM,MAAM,EAAG4yD,CAAO,CAAC,EAAG,CAAC37D,CAAI,EAAGpH,GAAmBmQ,EAAM,MAAM4yD,EAASD,CAAS,CAAC,EAAG9iE,GAAmBmQ,EAAM,MAAM2yD,EAAY,EAAGxyD,CAAM,CAAC,CAAC,EAE/K0yD,EAAO,EAEF,GAAG,OAAOhjE,GAAmBmQ,EAAM,MAAM,EAAG2yD,CAAS,CAAC,EAAG9iE,GAAmBmQ,EAAM,MAAM2yD,EAAY,EAAGC,EAAU,CAAC,CAAC,EAAG,CAAC37D,CAAI,EAAGpH,GAAmBmQ,EAAM,MAAM4yD,EAAU,EAAGzyD,CAAM,CAAC,CAAC,EAEpLH,CACT,CCxGA,IAAIylB,GAAY,CAAC,MAAM,EAUnBqtC,GAAe,CAAA,EACnB,SAASC,GAAcptE,EAAc9U,EAAMtQ,EAAMy0B,EAAWC,EAAW0N,EAAM,CAC3E,OAAI,OAAOhd,GAAiB,WACnBA,EAAa9U,EAAMtQ,EAAM,WAAYoiC,EAAO,CACjD,OAAQA,EAAK,MACnB,EAAQ,EAAE,EAED3N,IAAcC,CACvB,CAIA,IAAI+9D,GAAqB,SAAUxlE,EAAkB,CACnDZ,GAAUomE,EAAOxlE,CAAgB,EACjC,IAAIC,EAASN,GAAa6lE,CAAK,EAE/B,SAASA,EAAM7/E,EAAO,CACpB,IAAI2Y,EA2dJ,GA1dAU,GAAgB,KAAMwmE,CAAK,EAC3BlnE,EAAQ2B,EAAO,KAAK,KAAMta,CAAK,EAG/B+N,EAAgB8L,GAAuBlB,CAAK,EAAG,QAAS,CACtD,WAAY,CAClB,CAAK,EACD5K,EAAgB8L,GAAuBlB,CAAK,EAAG,qBAAsB,IAAI,EACzE5K,EAAgB8L,GAAuBlB,CAAK,EAAG,UAAW,EAAK,EAK/D5K,EAAgB8L,GAAuBlB,CAAK,EAAG,UAAW,EAAK,EAM/D5K,EAAgB8L,GAAuBlB,CAAK,EAAG,QAAS,EAAK,EAC7D5K,EAAgB8L,GAAuBlB,CAAK,EAAG,kBAAmB,MAAM,EACxE5K,EAAgB8L,GAAuBlB,CAAK,EAAG,iBAAkB,MAAM,EACvE5K,EAAgB8L,GAAuBlB,CAAK,EAAG,SAAUgnE,EAAY,EACrE5xE,EAAgB8L,GAAuBlB,CAAK,EAAG,WAAYgnE,EAAY,EACvE5xE,EAAgB8L,GAAuBlB,CAAK,EAAG,iBAAkB,UAAY,CAC3E,IAAI0kC,EAAc1kC,EAAM,MACtB62B,EAAW6N,EAAY,SACvByiC,EAAcziC,EAAY,YAC1BpkD,EAAOokD,EAAY,KACjB1kC,EAAM,oBACRA,EAAM,mBAAmBmnE,EAAatwC,EAAU+uC,GAAYtlF,CAAI,CAAC,EAEnE0f,EAAM,mBAAqB,IAC7B,CAAC,EAED5K,EAAgB8L,GAAuBlB,CAAK,EAAG,cAAe,UAAY,CACxE,IAAIonE,EAAepnE,EAAM,MACvB1f,EAAO8mF,EAAa,KACpBC,EAAeD,EAAa,aAC1BE,EAAwBD,EAAa,WACvCE,EAAaD,IAA0B,OAAS,CAAA,EAAKA,EACvD,OAAOhnF,IAAS,OAAY,CAAA,EAAG,OAAOyjB,GAAmBwjE,CAAU,EAAGxjE,GAAmBzjB,CAAI,CAAC,EAAI,CAAA,CACpG,CAAC,EACD8U,EAAgB8L,GAAuBlB,CAAK,EAAG,WAAY,UAAY,CACrE,IAAIwnE,EAAexnE,EAAM,MACvBynE,EAAqBD,EAAa,MAClCjyD,EAAQkyD,IAAuB,OAAS,CAAA,EAAKA,EAC7CJ,EAAeG,EAAa,aAC9B,OAAOjyD,EAAM,IAAI,SAAU94B,EAAM,CAC/B,OAAI,OAAOA,GAAS,WACXA,EAAK4qF,CAAY,EAEnB5qF,CACT,CAAC,CACH,CAAC,EACD2Y,EAAgB8L,GAAuBlB,CAAK,EAAG,UAAW,UAAY,CAC/DA,EAAM,SAKXA,EAAM,SAAS,SAAUtW,EAAM,CAC7B,IAAIg+E,EAAah+E,EAAK,WACtB,MAAO,CACL,WAAYg+E,EAAa,CACnC,CACM,CAAC,CACH,CAAC,EAEDtyE,EAAgB8L,GAAuBlB,CAAK,EAAG,YAAa,IAAI,EAChE5K,EAAgB8L,GAAuBlB,CAAK,EAAG,mBAAoB,SAAU2nE,EAAS,CACpF,IAAIC,EAAe5nE,EAAM,MAAM,aAC/B,GAAI4nE,EAAc,CAChB,IAAIC,EAAQ1kE,EAAcA,EAAc,CAAA,EAAInD,EAAM,QAAO,CAAE,EAAG,GAAI,CAChE,QAAS2nE,CACnB,CAAS,EACIx/D,GAAQnI,EAAM,UAAW6nE,CAAK,GACjCD,EAAaC,CAAK,EAEpB7nE,EAAM,UAAY6nE,CACpB,MACE7nE,EAAM,UAAY,IAEtB,CAAC,EAGD5K,EAAgB8L,GAAuBlB,CAAK,EAAG,gBAAiB,SAAU8nE,EAAWhC,EAAcjvD,EAAM,CACvG,IAAIkxD,EAAe/nE,EAAM,MACvBnG,EAAekuE,EAAa,aAC5BC,EAAwBD,EAAa,aACrCE,EAAeD,IAA0B,OAAS,CAAA,EAAKA,EACvDE,EAAUH,EAAa,QACrB7mF,EAAQ21B,EAAK,MACbmtD,EAAWhkE,EAAM,YAAW,EAC5BkJ,EAAYlJ,EAAM,SAAS8nE,CAAS,EACpCK,EAAWnoE,EAAM,SAAS9e,CAAK,EAC/BknF,EAAgBtC,GAAgBE,GAAiBF,EAAc9B,CAAQ,EAW3E,OARIntD,EAAK,OAAS,eAAiBA,EAAK,SAAW,YAAc,CAAC1O,GAAQe,EAAWi/D,CAAQ,IAC3FnoE,EAAM,QAAU,GAChBA,EAAM,MAAQ,GACdA,EAAM,gBAAkB,KACxBA,EAAM,OAASgnE,GACfhnE,EAAM,SAAWgnE,GACjBhnE,EAAM,iBAAgB,GAEhB6W,EAAK,KAAI,CACf,IAAK,QACH,GAAI,CAACivD,GAAgBsC,EAAe,CAElCpoE,EAAM,QAAU,GAChBA,EAAM,MAAQ,GACdA,EAAM,gBAAkB,OACxBA,EAAM,OAASgnE,GACfhnE,EAAM,SAAWgnE,GACjBhnE,EAAM,iBAAgB,EACtBkoE,GAAY,MAA8BA,EAAO,EACjDloE,EAAM,QAAO,EACb,MACF,CACA,MAQF,IAAK,SACH,CACE,GAAInG,GAAgBotE,GAAcptE,EAAciuE,EAAW5mF,EAAOgoB,EAAWi/D,EAAUtxD,CAAI,EAAG,CAC5F7W,EAAM,SAAQ,EACd,MACF,CACA,KACF,CACF,IAAK,WACH,CACE,IAAIttB,EAAOmkC,EAAK,KAChB,GAAIuxD,EAAe,CACb,YAAa11F,IACfstB,EAAM,QAAUttB,EAAK,SAEnB,eAAgBA,GAAQ,EAAE,kBAAmBA,KAC/CstB,EAAM,gBAAkBttB,EAAK,WAAa,QAAQ,QAAQ,CAAA,CAAE,EAAI,MAE9D,WAAYA,IACdstB,EAAM,OAASttB,EAAK,QAAUs0F,IAE5B,aAAct0F,IAChBstB,EAAM,SAAWttB,EAAK,UAAYs0F,IAEpChnE,EAAM,MAAQ,GACdA,EAAM,iBAAgB,EACtBA,EAAM,SAAQ,EACd,MACF,SAAW,UAAWttB,GAAQszF,GAAiBF,EAAc9B,EAAU,EAAI,EAAG,CAE5EhkE,EAAM,SAAQ,EACd,MACF,CAGA,GAAInG,GAAgB,CAACmqE,EAAS,QAAUiD,GAAcptE,EAAciuE,EAAW5mF,EAAOgoB,EAAWi/D,EAAUtxD,CAAI,EAAG,CAChH7W,EAAM,SAAQ,EACd,MACF,CACA,KACF,CACF,IAAK,qBACH,CAIE,IAAIqoE,EAAiBJ,EAAa,IAAIrC,EAAW,EAIjD,GAAIyC,EAAe,KAAK,SAAUC,EAAY,CAC5C,OAAOtC,GAAiBnvD,EAAK,cAAeyxD,CAAU,CACxD,CAAC,EAAG,CACFtoE,EAAM,SAAQ,EACd,MACF,CACA,KACF,CACF,QAWE,GAAIooE,IAAkB,CAACH,EAAa,QAAUjE,EAAS,QAAUnqE,IAAiBotE,GAAcptE,EAAciuE,EAAW5mF,EAAOgoB,EAAWi/D,EAAUtxD,CAAI,EAAG,CAC1J7W,EAAM,SAAQ,EACd,MACF,CACA,KACV,CACUnG,IAAiB,IACnBmG,EAAM,SAAQ,CAElB,CAAC,EACD5K,EAAgB8L,GAAuBlB,CAAK,EAAG,gBAAiB,SAAU3qB,EAAS,CAEjF,IAAI2uF,EAAWhkE,EAAM,YAAW,EAC5BuoE,EAAevoE,EAAM,SAAQ,EAC7BpW,EAAQvU,GAAW,CAAA,EACrBmzF,EAAc5+E,EAAM,YACpB6+E,EAAqB7+E,EAAM,aAC3B8+E,EAAeD,IAAuB,OAAS,GAAQA,EAGrDE,EAAc,QAAQ,UAAU,KAAmB5xB,GAAgCN,GAAmB,EAAG,KAAK,SAASuB,GAAU,CACnI,IAAI4wB,EAAcC,EAAuB5E,EAAeV,EAAkBuF,EAAkBC,EAAel4F,EAC3G,OAAO4lE,GAAmB,EAAG,KAAK,SAAkBwB,EAAU,CAC5D,OAAU,OAAQA,EAAS,KAAOA,EAAS,KAAI,CAC7C,IAAK,GACH,GAAIj4C,EAAM,QAAS,CACjBi4C,EAAS,KAAO,EAChB,KACF,CACA,OAAOA,EAAS,OAAO,SAAU,EAAE,EACrC,IAAK,GAiBH,GAhBA2wB,EAAe5oE,EAAM,MAAO6oE,EAAwBD,EAAa,cAAe3E,EAAgB4E,IAA0B,OAAS,GAAQA,EAAuBtF,EAAmBqF,EAAa,iBAAkBE,EAAmBF,EAAa,iBACpPG,EAAgB/oE,EAAM,SAAQ,EAC1BwoE,IACFO,EAAgBA,EAAc,OAAO,SAAUtsF,EAAM,CACnD,OAAOA,CACT,CAAC,EAAE,OAAO,SAAUA,EAAM,CACxB,IAAIusF,EAAkBvsF,EAAK,gBAC3B,GAAI,CAACusF,EACH,MAAO,GAET,IAAIC,EAAc90E,GAAQ60E,CAAe,EACzC,OAAOC,EAAY,SAAST,CAAW,CACzC,CAAC,GAIC,EAAEM,GAAoBN,GAAc,CACtCvwB,EAAS,KAAO,GAChB,KACF,CACA,OAAAA,EAAS,KAAO,EACT,IAAI,QAAQ,SAAUnnE,EAAS,CACpC,WAAWA,EAASg4F,CAAgB,CACtC,CAAC,EACH,IAAK,GACH,GAAM9oE,EAAM,kBAAoB2oE,EAAc,CAC5C1wB,EAAS,KAAO,GAChB,KACF,CACA,OAAOA,EAAS,OAAO,SAAU,EAAE,EACrC,IAAK,IACH,OAAApnE,EAAUkzF,GAAcC,EAAUuE,EAAcQ,EAAe1zF,EAAS4uF,EAAeV,CAAgB,EACvG1yF,EAAQ,MAAM,SAAUsB,EAAG,CACzB,OAAOA,CACT,CAAC,EAAE,KAAK,UAAY,CAClB,IAAI+2F,EAAa,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAIlC,GACrF,GAAIhnE,EAAM,kBAAoB2oE,EAAa,CACzC,IAAIQ,EACJnpE,EAAM,gBAAkB,KAGxB,IAAIopE,EAAa,CAAA,EACbC,EAAe,CAAA,GAClBF,EAAsBD,EAAW,WAAa,MAAQC,IAAwB,QAAUA,EAAoB,KAAKD,EAAY,SAAU57D,EAAO,CAC7I,IAAIg8D,EAAch8D,EAAM,KAAK,YAC3Bi8D,EAAej8D,EAAM,OACrBsvD,EAAS2M,IAAiB,OAASvC,GAAeuC,EAChDD,EACFD,EAAa,KAAK,MAAMA,EAActlE,GAAmB64D,CAAM,CAAC,EAEhEwM,EAAW,KAAK,MAAMA,EAAYrlE,GAAmB64D,CAAM,CAAC,CAEhE,CAAC,EACD58D,EAAM,OAASopE,EACfppE,EAAM,SAAWqpE,EACjBrpE,EAAM,iBAAgB,EACtBA,EAAM,SAAQ,CAChB,CACF,CAAC,EACMi4C,EAAS,OAAO,SAAUpnE,CAAO,EAC1C,IAAK,IACL,IAAK,MACH,OAAOonE,EAAS,KAAI,CAClC,CACQ,EAAGD,CAAO,CACZ,CAAC,CAAC,CAAC,EACH,OAAI0wB,IAGJ1oE,EAAM,gBAAkB2oE,EACxB3oE,EAAM,MAAQ,GACdA,EAAM,OAASgnE,GACfhnE,EAAM,SAAWgnE,GACjBhnE,EAAM,iBAAgB,EAGtBA,EAAM,SAAQ,GACP2oE,CACT,CAAC,EACDvzE,EAAgB8L,GAAuBlB,CAAK,EAAG,oBAAqB,UAAY,CAC9E,MAAO,CAAC,CAACA,EAAM,eACjB,CAAC,EACD5K,EAAgB8L,GAAuBlB,CAAK,EAAG,iBAAkB,UAAY,CAC3E,OAAOA,EAAM,OACf,CAAC,EACD5K,EAAgB8L,GAAuBlB,CAAK,EAAG,eAAgB,UAAY,CAEzE,GAAIA,EAAM,OAASA,EAAM,MAAM,eAAiB,OAC9C,MAAO,GAIT,IAAIqnE,EAAernE,EAAM,MAAM,aAC3BwpE,EAAwBnC,EAAa,iBAAiBvL,EAAS,EACjE2N,EAAkBD,EAAsB,gBAC1C,OAAIC,EAAgBzpE,EAAM,YAAW,CAAE,IAAM,MAI/C,CAAC,EACD5K,EAAgB8L,GAAuBlB,CAAK,EAAG,YAAa,UAAY,CACtE,OAAOA,EAAM,MACf,CAAC,EACD5K,EAAgB8L,GAAuBlB,CAAK,EAAG,cAAe,UAAY,CACxE,OAAOA,EAAM,QACf,CAAC,EACD5K,EAAgB8L,GAAuBlB,CAAK,EAAG,cAAe,UAAY,CACxE,OAAOA,EAAM,MAAM,WACrB,CAAC,EACD5K,EAAgB8L,GAAuBlB,CAAK,EAAG,SAAU,UAAY,CACnE,OAAOA,EAAM,MAAM,MACrB,CAAC,EACD5K,EAAgB8L,GAAuBlB,CAAK,EAAG,aAAc,UAAY,CACvE,OAAOA,EAAM,MAAM,QACrB,CAAC,EAED5K,EAAgB8L,GAAuBlB,CAAK,EAAG,UAAW,UAAY,CAEpEA,EAAM,eAAiBA,EAAM,kBAAiB,EAC9C,IAAI0pE,EAAO,CACT,QAAS1pE,EAAM,eAAc,EAC7B,WAAYA,EAAM,eAClB,OAAQA,EAAM,OACd,SAAUA,EAAM,SAChB,KAAMA,EAAM,YAAW,EACvB,UAAWA,EAAM,kBAAoB,IAC7C,EACM,OAAO0pE,CACT,CAAC,EAEDt0E,EAAgB8L,GAAuBlB,CAAK,EAAG,eAAgB,SAAU5L,EAAU,CAEjF,GAAI,OAAOA,GAAa,WAAY,CAClC,IAAIu1E,EAAS3pE,EAAM,QAAO,EAC1B,OAAOmD,EAAcA,EAAc,CAAA,EAAInD,EAAM,aAAa5L,EAAS4L,EAAM,cAAa,EAAI2pE,EAAQ3pE,EAAM,MAAM,YAAY,CAAC,CAAC,EAAG,GAAI,CACjI,WAAY,EACtB,CAAS,CACH,CAGA,IAAIo+C,EAAYwrB,GAAgBx1E,CAAQ,EACxC,OAAIgqD,EAAU,SAAW,GAAK,CAAepwD,EAAM,eAAeowD,EAAU,CAAC,CAAC,EACrE,CACL,MAAOA,EACP,WAAY,EACtB,EAEa,CACL,MAAOA,EAAU,CAAC,EAClB,WAAY,EACpB,CACI,CAAC,EAEDhpD,EAAgB8L,GAAuBlB,CAAK,EAAG,WAAY,SAAU9e,EAAO,CAC1E,IAAI2oF,EAAiB7pE,EAAM,MAAM,aAAa,eAC1CgkE,EAAWhkE,EAAM,YAAW,EAChC,OAAOrG,GAASzY,GAAS2oF,EAAe,EAAI,EAAG7F,CAAQ,CACzD,CAAC,EACD5uE,EAAgB8L,GAAuBlB,CAAK,EAAG,gBAAiB,UAAY,CAC1E,IAAI8pE,EAAa,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAA,EACjFC,EAAe/pE,EAAM,MACvB1f,EAAOypF,EAAa,KACpBC,EAAUD,EAAa,QACvBf,EAAkBe,EAAa,gBAC/BE,EAAoBF,EAAa,kBACjCG,EAAYH,EAAa,UACzBpD,EAAgBoD,EAAa,cAC7BI,EAAgBJ,EAAa,cAC7B1C,EAAe0C,EAAa,aAC1BK,EAAwBpB,IAAoB,OAAYA,EAAkB3B,EAAa,gBACvFrD,EAAWhkE,EAAM,YAAW,EAC5BqqE,EAAmBhD,EAAa,iBAClCwC,EAAiBxC,EAAa,eAC5BiD,EAAoBD,EAAiBvO,EAAS,EAChDyO,EAAWD,EAAkB,SAC3B13F,EAAQotB,EAAM,SAAQ,EACtBwqE,EAAsBL,GAAiB,SAAUntF,EAAK,CACxD,OAAOoY,EAAgB,CAAA,EAAIuxE,EAAe3pF,CAAG,CAC/C,EACIytF,EAAoBX,EAAWE,CAAO,EACtCU,EAAapqF,IAAS,OAAYkqF,EAAoB53F,CAAK,EAAI,CAAA,EAG/D,QAAQ,IAAI,WAAa,cAAgB83F,GAC3C,OAAO,KAAKA,CAAU,EAAE,QAAQ,SAAUj5F,EAAK,CAC7CgjB,GAAQ,OAAOi2E,EAAWj5F,CAAG,GAAM,WAAY,gIAAgI,OAAOA,EAAK,GAAG,CAAC,CACjM,CAAC,EAEH,IAAIk5F,EAAUxnE,EAAcA,EAAc,CAAA,EAAI2mE,CAAU,EAAGY,CAAU,EAGrEC,EAAQX,CAAO,EAAI,UAAY,CAE7BhqE,EAAM,QAAU,GAChBA,EAAM,MAAQ,GACdA,EAAM,iBAAgB,EAEtB,QADI/tB,EACKkoB,EAAO,UAAU,OAAQplB,EAAO,IAAI,MAAMolB,CAAI,EAAGE,EAAO,EAAGA,EAAOF,EAAME,IAC/EtlB,EAAKslB,CAAI,EAAI,UAAUA,CAAI,EAEzB4vE,EACFh4F,EAAWg4F,EAAkB,MAAM,OAAQl1F,CAAI,EAE/C9C,EAAWy0F,GAAyB,MAAM,OAAQ,CAACC,CAAa,EAAE,OAAO5xF,CAAI,CAAC,EAE5Em1F,IACFj4F,EAAWi4F,EAAUj4F,EAAUW,EAAOi3F,EAAe,EAAI,CAAC,GAExD53F,IAAaW,GACf23F,EAAS,CACP,KAAM,cACN,SAAUvG,EACV,MAAO/xF,CACnB,CAAW,EAECw4F,GACFA,EAAkB,MAAM,OAAQ11F,CAAI,CAExC,EAGA,IAAI61F,EAAsBz2E,GAAQi2E,GAAyB,EAAE,EAC7D,OAAAQ,EAAoB,QAAQ,SAAUpC,EAAa,CAEjD,IAAIqC,EAAgBF,EAAQnC,CAAW,EACvCmC,EAAQnC,CAAW,EAAI,UAAY,CAC7BqC,GACFA,EAAc,MAAM,OAAQ,SAAS,EAIvC,IAAIt1D,EAAQvV,EAAM,MAAM,MACpBuV,GAASA,EAAM,QAGjBg1D,EAAS,CACP,KAAM,gBACN,SAAUvG,EACV,YAAawE,CAC3B,CAAa,CAEL,CACF,CAAC,EACMmC,CACT,CAAC,EACGtjF,EAAM,aAAc,CACtB,IAAIgjF,EAAmBhjF,EAAM,aAAa,iBACtCyjF,EAAqBT,EAAiBvO,EAAS,EACjDiP,EAAkBD,EAAmB,gBACvCC,EAAgB7pE,GAAuBlB,CAAK,CAAC,CAC/C,CACA,OAAOA,CACT,CACAY,OAAAA,GAAasmE,EAAO,CAAC,CACnB,IAAK,oBACL,MAAO,UAA6B,CAClC,IAAI8D,EAAe,KAAK,MACtBnxE,EAAemxE,EAAa,aAC5B3D,EAAe2D,EAAa,aAI9B,GAHA,KAAK,QAAU,GAGX3D,EAAc,CAChB,IAAIgD,EAAmBhD,EAAa,iBAChC4D,EAAqBZ,EAAiBvO,EAAS,EACjDoP,EAAgBD,EAAmB,cACrC,KAAK,mBAAqBC,EAAc,IAAI,CAC9C,CAGIrxE,IAAiB,IACnB,KAAK,SAAQ,CAEjB,CACJ,EAAK,CACD,IAAK,uBACL,MAAO,UAAgC,CACrC,KAAK,eAAc,EACnB,KAAK,iBAAiB,EAAI,EAC1B,KAAK,QAAU,EACjB,CACJ,EAAK,CACD,IAAK,WACL,MAAO,UAAoB,CACpB,KAAK,SACV,KAAK,YAAW,CAClB,CACJ,EAAK,CACD,IAAK,SACL,MAAO,UAAkB,CACvB,IAAI6tE,EAAa,KAAK,MAAM,WACxBtzE,EAAW,KAAK,MAAM,SACtB+2E,EAAqB,KAAK,aAAa/2E,CAAQ,EACjDC,EAAQ82E,EAAmB,MAC3BC,EAAaD,EAAmB,WAG9BE,EACJ,OAAID,EACFC,EAAkBh3E,EACKrG,EAAM,eAAeqG,CAAK,EACjDg3E,EAA+Br9E,EAAM,aAAaqG,EAAO,KAAK,cAAcA,EAAM,KAAK,CAAC,GAExFI,GAAQ,CAACJ,EAAO,mDAAmD,EACnEg3E,EAAkBh3E,GAEArG,EAAM,cAAcA,EAAM,SAAU,CACtD,IAAK05E,CACb,EAAS2D,CAAe,CACpB,CACJ,CAAG,CAAC,EACKnE,CACT,EAAEl5E,EAAM,SAAS,EACjBoH,EAAgB8xE,GAAO,cAAeoE,EAAY,EAClDl2E,EAAgB8xE,GAAO,eAAgB,CACrC,QAAS,WACT,cAAe,OACjB,CAAC,EACD,SAASqE,GAAan7D,EAAO,CAC3B,IAAIo7D,EACAlrF,EAAO8vB,EAAM,KACfw0B,EAAY38B,GAAyBmI,EAAOupB,EAAS,EACnD0tC,EAAer5E,EAAM,WAAWs9E,EAAY,EAC5CG,EAAcz9E,EAAM,WAAWguE,EAAW,EAC1CgI,EAAW1jF,IAAS,OAAYslF,GAAYtlF,CAAI,EAAI,OACpDorF,GAAqBF,EAAwB5mC,EAAU,eAAiB,MAAQ4mC,IAA0B,OAASA,EAAwB,CAAC,CAACC,EAC7Ih6F,EAAM,OACV,OAAKi6F,IACHj6F,EAAM,IAAI,QAAQuyF,GAAY,IAAI,KAAK,GAAG,CAAC,GAKzC,QAAQ,IAAI,WAAa,cAAgBp/B,EAAU,WAAa,IAAS8mC,GAAqB1H,EAAS,QAAU,GACnHvvE,GAAQ,GAAO,kDAAkD,EAE/CzG,EAAM,cAAck5E,GAAOrzE,GAAS,CACtD,IAAKpiB,EACL,KAAMuyF,EACN,YAAa0H,CACjB,EAAK9mC,EAAW,CACZ,aAAcyiC,CAClB,CAAG,CAAC,CACJ,CC5lBA,SAASsE,GAAKjiF,EAAM,CAClB,IAAIpJ,EAAOoJ,EAAK,KACdkiF,EAAeliF,EAAK,aACpB0K,EAAW1K,EAAK,SAChB6rB,EAAQ7rB,EAAK,MACbs/E,EAAkBt/E,EAAK,gBACvBy9E,EAAcz9E,EAAK,YACjBwiC,EAAUl+B,EAAM,WAAWs9E,EAAY,EACvCO,EAAqB79E,EAAM,WAAWguE,EAAW,EACjD8P,EAAS99E,EAAM,OAAO,CACxB,KAAM,CAAA,EACN,GAAI,CACR,CAAG,EACG+9E,EAAaD,EAAO,QACpBvE,EAAav5E,EAAM,QAAQ,UAAY,CACzC,IAAIg+E,EAAmBpG,GAAY15C,EAAQ,UAAU,GAAK,CAAA,EAC1D,MAAO,CAAA,EAAG,OAAOnoB,GAAmBioE,CAAgB,EAAGjoE,GAAmB6hE,GAAYtlF,CAAI,CAAC,CAAC,CAC9F,EAAG,CAAC4rC,EAAQ,WAAY5rC,CAAI,CAAC,EACzB+mF,EAAer5E,EAAM,QAAQ,UAAY,CAC3C,OAAOmV,EAAcA,EAAc,CAAA,EAAI+oB,CAAO,EAAG,CAAA,EAAI,CACnD,WAAYq7C,CAClB,CAAK,CACH,EAAG,CAACr7C,EAASq7C,CAAU,CAAC,EAGpBkE,EAAcz9E,EAAM,QAAQ,UAAY,CAC1C,MAAO,CACL,OAAQ,SAAgBg2E,EAAU,CAChC,IAAIx+D,EAAM+hE,EAAW,OACjB0E,EAAWjI,EAASx+D,CAAG,EAC3B,MAAO,CAACumE,EAAW,KAAKE,CAAQ,EAAGjI,EAAS,MAAMx+D,EAAM,CAAC,CAAC,CAC5D,CACN,CACE,EAAG,CAAC+hE,CAAU,CAAC,EAGf,GAAI,OAAOnzE,GAAa,WACtBK,OAAAA,GAAQ,GAAO,8CAA8C,EACtD,KAET,IAAIoF,EAAe,SAAsBqP,EAAWC,EAAWvf,EAAO,CACpE,IAAI7W,EAAS6W,EAAM,OACnB,OAAI7W,IAAW,WACN,GAEFm2B,IAAcC,CACvB,EACA,OAAoBnb,EAAM,cAAcguE,GAAY,SAAU,CAC5D,MAAOyP,CACX,EAAkBz9E,EAAM,cAAcs9E,GAAa,SAAU,CACzD,MAAOjE,CACX,EAAkBr5E,EAAM,cAAck5E,GAAO,CACzC,KAAM,CAAA,EACN,aAAcrtE,EACd,MAAO0b,EACP,gBAAiByzD,EACjB,aAAc4C,EACd,OAAQ,GACR,YAAazE,GAA+D,CAAC,CAAC0E,CAClF,EAAK,SAAU1+D,EAAOu8D,EAAM,CACxB,IAAIwC,EAAc/+D,EAAM,MACtBv6B,EAAQs5F,IAAgB,OAAS,CAAA,EAAKA,EACtC38C,EAAWpiB,EAAM,SACfg/D,EAAgBjgD,EAAQ,cACxBkgD,EAAc,UAAuB,CACvC,IAAIC,EAASF,EAAc5E,GAAc,EAAE,EAC3C,OAAO8E,GAAU,CAAA,CACnB,EAIIC,EAAa,CACf,IAAK,SAAa3zF,EAAcvC,EAAO,CAErC,IAAInE,EAAWm6F,EAAW,EACtBh2F,GAAS,GAAKA,GAASnE,EAAS,QAClC85F,EAAW,KAAO,CAAA,EAAG,OAAOhoE,GAAmBgoE,EAAW,KAAK,MAAM,EAAG31F,CAAK,CAAC,EAAG,CAAC21F,EAAW,EAAE,EAAGhoE,GAAmBgoE,EAAW,KAAK,MAAM31F,CAAK,CAAC,CAAC,EAClJm5C,EAAS,CAAA,EAAG,OAAOxrB,GAAmB9xB,EAAS,MAAM,EAAGmE,CAAK,CAAC,EAAG,CAACuC,CAAY,EAAGorB,GAAmB9xB,EAAS,MAAMmE,CAAK,CAAC,CAAC,CAAC,IAEvH,QAAQ,IAAI,WAAa,eAAiBA,EAAQ,GAAKA,EAAQnE,EAAS,SAC1EwiB,GAAQ,GAAO,6EAA6E,EAE9Fs3E,EAAW,KAAO,GAAG,OAAOhoE,GAAmBgoE,EAAW,IAAI,EAAG,CAACA,EAAW,EAAE,CAAC,EAChFx8C,EAAS,CAAA,EAAG,OAAOxrB,GAAmB9xB,CAAQ,EAAG,CAAC0G,CAAY,CAAC,CAAC,GAElEozF,EAAW,IAAM,CACnB,EACA,OAAQ,SAAgB31F,EAAO,CAC7B,IAAInE,EAAWm6F,EAAW,EACtBG,EAAW,IAAI,IAAI,MAAM,QAAQn2F,CAAK,EAAIA,EAAQ,CAACA,CAAK,CAAC,EACzDm2F,EAAS,MAAQ,IAGrBR,EAAW,KAAOA,EAAW,KAAK,OAAO,SAAUtpD,EAAG+pD,EAAW,CAC/D,MAAO,CAACD,EAAS,IAAIC,CAAS,CAChC,CAAC,EAGDj9C,EAASt9C,EAAS,OAAO,SAAUwwC,EAAGgqD,EAAY,CAChD,MAAO,CAACF,EAAS,IAAIE,CAAU,CACjC,CAAC,CAAC,EACJ,EACA,KAAM,SAAcj5D,EAAMk5D,EAAI,CAC5B,GAAIl5D,IAASk5D,EAGb,KAAIz6F,EAAWm6F,EAAW,EAGtB54D,EAAO,GAAKA,GAAQvhC,EAAS,QAAUy6F,EAAK,GAAKA,GAAMz6F,EAAS,SAGpE85F,EAAW,KAAOY,GAAMZ,EAAW,KAAMv4D,EAAMk5D,CAAE,EAGjDn9C,EAASo9C,GAAM16F,EAAUuhC,EAAMk5D,CAAE,CAAC,GACpC,CACN,EACQE,EAAYh6F,GAAS,CAAA,EACzB,OAAK,MAAM,QAAQg6F,CAAS,IAC1BA,EAAY,CAAA,EACR,QAAQ,IAAI,WAAa,cAC3Bn4E,GAAQ,GAAO,qBAAqB,OAAO8yE,EAAW,KAAK,KAAK,EAAG,yBAAyB,CAAC,GAG1FnzE,EAASw4E,EAAU,IAAI,SAAUC,EAAIz2F,EAAO,CACjD,IAAI3E,EAAMs6F,EAAW,KAAK31F,CAAK,EAC/B,OAAI3E,IAAQ,SACVs6F,EAAW,KAAK31F,CAAK,EAAI21F,EAAW,GACpCt6F,EAAMs6F,EAAW,KAAK31F,CAAK,EAC3B21F,EAAW,IAAM,GAEZ,CACL,KAAM31F,EACN,IAAK3E,EACL,YAAa,EACrB,CACI,CAAC,EAAG66F,EAAY5C,CAAI,CACtB,CAAC,CAAC,CAAC,CACL,CCnJO,SAASoD,GAAiBC,EAAa,CAC5C,IAAIC,EAAW,GACX5wF,EAAQ2wF,EAAY,OACpB3P,EAAU,CAAA,EACd,OAAK2P,EAAY,OAGV,IAAI,QAAQ,SAAUj8F,EAASC,EAAQ,CAC5Cg8F,EAAY,QAAQ,SAAUl8F,EAASuF,EAAO,CAC5CvF,EAAQ,MAAM,SAAUsB,EAAG,CACzB,OAAA66F,EAAW,GACJ76F,CACT,CAAC,EAAE,KAAK,SAAUoE,EAAQ,CACxB6F,GAAS,EACTghF,EAAQhnF,CAAK,EAAIG,EACb,EAAA6F,EAAQ,KAGR4wF,GACFj8F,EAAOqsF,CAAO,EAEhBtsF,EAAQssF,CAAO,EACjB,CAAC,CACH,CAAC,CACH,CAAC,EAnBQ,QAAQ,QAAQ,EAAE,CAoB7B,CCnBA,IAAIx0D,GAAQ,mBAKZ,SAASshE,GAAUlG,EAAU,CAC3B,OAAOA,EAAS,IAAI,SAAUiJ,EAAM,CAClC,MAAO,GAAG,OAAOn5E,GAAQm5E,CAAI,EAAG,GAAG,EAAE,OAAOA,CAAI,CAClD,CAAC,EAEA,KAAKrkE,EAAK,CACb,CAKA,IAAIskE,GAAuB,UAAY,CACrC,SAASA,GAAU,CACjBxsE,GAAgB,KAAMwsE,CAAO,EAC7B93E,EAAgB,KAAM,MAAO,IAAI,GAAK,CACxC,CACAwL,OAAAA,GAAassE,EAAS,CAAC,CACrB,IAAK,MACL,MAAO,SAAaz7F,EAAKmB,EAAO,CAC9B,KAAK,IAAI,IAAIs3F,GAAUz4F,CAAG,EAAGmB,CAAK,CACpC,CACJ,EAAK,CACD,IAAK,MACL,MAAO,SAAanB,EAAK,CACvB,OAAO,KAAK,IAAI,IAAIy4F,GAAUz4F,CAAG,CAAC,CACpC,CACJ,EAAK,CACD,IAAK,SACL,MAAO,SAAgBA,EAAKk+B,EAAS,CACnC,IAAI8jD,EAAS,KAAK,IAAIhiF,CAAG,EACrBgD,EAAOk7B,EAAQ8jD,CAAM,EACpBh/E,EAGH,KAAK,IAAIhD,EAAKgD,CAAI,EAFlB,KAAK,OAAOhD,CAAG,CAInB,CACJ,EAAK,CACD,IAAK,SACL,MAAO,SAAiBA,EAAK,CAC3B,KAAK,IAAI,OAAOy4F,GAAUz4F,CAAG,CAAC,CAChC,CAGJ,EAAK,CACD,IAAK,MACL,MAAO,SAAa2P,EAAU,CAC5B,OAAO2iB,GAAmB,KAAK,IAAI,QAAO,CAAE,EAAE,IAAI,SAAUra,EAAM,CAChE,IAAIE,EAAQub,GAAezb,EAAM,CAAC,EAChCjY,EAAMmY,EAAM,CAAC,EACbhX,EAAQgX,EAAM,CAAC,EACbq7B,EAAQxzC,EAAI,MAAMm3B,EAAK,EAC3B,OAAOxnB,EAAS,CACd,IAAK6jC,EAAM,IAAI,SAAUgoD,EAAM,CAC7B,IAAIE,EAAcF,EAAK,MAAM,gBAAgB,EAC3CG,EAAejoE,GAAegoE,EAAa,CAAC,EAC5Cn4F,EAAOo4F,EAAa,CAAC,EACrBhhE,EAAOghE,EAAa,CAAC,EACvB,OAAOp4F,IAAS,SAAW,OAAOo3B,CAAI,EAAIA,CAC5C,CAAC,EACD,MAAOx5B,CACjB,CAAS,CACH,CAAC,CACH,CACJ,EAAK,CACD,IAAK,SACL,MAAO,UAAkB,CACvB,IAAIy6F,EAAO,CAAA,EACX,YAAK,IAAI,SAAUlgE,EAAO,CACxB,IAAI17B,EAAM07B,EAAM,IACdv6B,EAAQu6B,EAAM,MAChB,OAAAkgE,EAAK57F,EAAI,KAAK,GAAG,CAAC,EAAImB,EACf,IACT,CAAC,EACMy6F,CACT,CACJ,CAAG,CAAC,EACKH,CACT,EAAC,ECjFGvzC,GAAY,CAAC,MAAM,EASZ2zC,GAAyB1sE,GAAa,SAAS0sE,EAAUC,EAAiB,CACnF,IAAIvtE,EAAQ,KACZU,GAAgB,KAAM4sE,CAAS,EAC/Bl4E,EAAgB,KAAM,aAAc,EAAK,EACzCA,EAAgB,KAAM,kBAAmB,MAAM,EAC/CA,EAAgB,KAAM,eAAgB,EAAI,EAC1CA,EAAgB,KAAM,QAAS,EAAE,EACjCA,EAAgB,KAAM,gBAAiB,EAAE,EACzCA,EAAgB,KAAM,gBAAiB,EAAE,EACzCA,EAAgB,KAAM,YAAa,EAAE,EACrCA,EAAgB,KAAM,mBAAoB,IAAI,EAC9CA,EAAgB,KAAM,WAAY,IAAI,EACtCA,EAAgB,KAAM,sBAAuB,IAAI,EACjDA,EAAgB,KAAM,UAAW,UAAY,CAC3C,MAAO,CACL,cAAe4K,EAAM,cACrB,eAAgBA,EAAM,eACtB,cAAeA,EAAM,cACrB,gBAAiBA,EAAM,gBACvB,eAAgBA,EAAM,eACtB,gBAAiBA,EAAM,gBACvB,eAAgBA,EAAM,eACtB,kBAAmBA,EAAM,kBACzB,mBAAoBA,EAAM,mBAC1B,YAAaA,EAAM,YACnB,UAAWA,EAAM,UACjB,cAAeA,EAAM,cACrB,eAAgBA,EAAM,eACtB,eAAgBA,EAAM,eACtB,OAAQA,EAAM,OACd,MAAO,GACP,iBAAkBA,EAAM,gBAC9B,CACE,CAAC,EAED5K,EAAgB,KAAM,mBAAoB,SAAU3jB,EAAK,CACvD,OAAIA,IAAQqqF,IACV97D,EAAM,WAAa,GACZ,CACL,SAAUA,EAAM,SAChB,gBAAiBA,EAAM,gBACvB,cAAeA,EAAM,cACrB,aAAcA,EAAM,aACpB,iBAAkBA,EAAM,iBACxB,YAAaA,EAAM,YACnB,aAAcA,EAAM,aACpB,oBAAqBA,EAAM,oBAC3B,UAAWA,EAAM,UACjB,YAAaA,EAAM,YACnB,gBAAiBA,EAAM,gBACvB,cAAeA,EAAM,aAC7B,IAEIvL,GAAQ,GAAO,iEAAiE,EACzE,KACT,CAAC,EACDW,EAAgB,KAAM,eAAgB,SAAUo4E,EAAc,CAC5DxtE,EAAM,aAAewtE,CACvB,CAAC,EAKDp4E,EAAgB,KAAM,uBAAwB,IAAI,EAIlDA,EAAgB,KAAM,mBAAoB,SAAUq4E,EAAeC,EAAM,CAEvE,GADA1tE,EAAM,cAAgBytE,GAAiB,CAAA,EACnCC,EAAM,CACR,IAAIC,EACAC,EAAYhvD,GAAM6uD,EAAeztE,EAAM,KAAK,GAK/C2tE,EAAwB3tE,EAAM,wBAA0B,MAAQ2tE,IAA0B,QAAUA,EAAsB,IAAI,SAAUjkF,EAAM,CAC7I,IAAIs6E,EAAWt6E,EAAK,IACpBkkF,EAAY3+C,GAAS2+C,EAAW5J,EAAUrqE,GAAS8zE,EAAezJ,CAAQ,CAAC,CAC7E,CAAC,EACDhkE,EAAM,qBAAuB,KAC7BA,EAAM,YAAY4tE,CAAS,CAC7B,CACF,CAAC,EACDx4E,EAAgB,KAAM,cAAe,SAAUy4E,EAAgB,CAC7D,GAAIA,EAEF7tE,EAAM,YAAY,EAAE,MACf,CAEL,IAAI8tE,EAAuB,IAAIZ,GAC/BltE,EAAM,iBAAiB,EAAI,EAAE,QAAQ,SAAUK,EAAQ,CAChDL,EAAM,iBAAiBK,EAAO,WAAU,CAAE,GAC7CytE,EAAqB,IAAIztE,EAAO,YAAW,EAAI,EAAI,CAEvD,CAAC,EACDL,EAAM,qBAAuB8tE,CAC/B,CACF,CAAC,EACD14E,EAAgB,KAAM,kBAAmB,SAAU4uE,EAAU,CAC3D,IAAI+J,EAAYp0E,GAASqG,EAAM,cAAegkE,CAAQ,EAGtD,OAAOA,EAAS,OAASplD,GAAMmvD,CAAS,EAAIA,CAC9C,CAAC,EACD34E,EAAgB,KAAM,eAAgB,SAAU44E,EAAW,CACzDhuE,EAAM,UAAYguE,CACpB,CAAC,EACD54E,EAAgB,KAAM,sBAAuB,SAAU+1C,EAAkB,CACvEnrC,EAAM,iBAAmBmrC,CAC3B,CAAC,EACD/1C,EAAgB,KAAM,cAAe,SAAUyhC,EAAU,CACvD72B,EAAM,SAAW62B,CACnB,CAAC,EAEDzhC,EAAgB,KAAM,YAAa,EAAE,EACrCA,EAAgB,KAAM,gBAAiB,SAAUhU,EAAU,CACzD,OAAA4e,EAAM,UAAU,KAAK5e,CAAQ,EACtB,UAAY,CACjB4e,EAAM,UAAYA,EAAM,UAAU,OAAO,SAAUlgB,EAAI,CACrD,OAAOA,IAAOsB,CAChB,CAAC,CACH,CACF,CAAC,EACDgU,EAAgB,KAAM,cAAe,UAAY,CAC/C,IAAI4uE,EAAW,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAA,EAEnF,GAAIhkE,EAAM,UAAU,OAAQ,CAC1B,IAAIqsE,EAASrsE,EAAM,eAAc,EAC7BiuE,EAAYjuE,EAAM,eAAe,EAAI,EACzCA,EAAM,UAAU,QAAQ,SAAU5e,EAAU,CAC1CA,EAASirF,EAAQ4B,EAAWjK,CAAQ,CACtC,CAAC,CACH,CACF,CAAC,EAED5uE,EAAgB,KAAM,YAAa,IAAI,EACvCA,EAAgB,KAAM,kBAAmB,UAAY,CAC/C,QAAQ,IAAI,WAAa,cAAgB,CAAC4K,EAAM,WAAa,OAAO,OAAW,MACjFA,EAAM,UAAY,WAAW,UAAY,CACvCA,EAAM,UAAY,KACbA,EAAM,YACTvL,GAAQ,GAAO,iGAAiG,CAEpH,CAAC,EAEL,CAAC,EAEDW,EAAgB,KAAM,cAAe,SAAUw4E,EAAW,CACxD5tE,EAAM,MAAQ4tE,CAChB,CAAC,EAMDx4E,EAAgB,KAAM,mBAAoB,UAAY,CACpD,IAAI84E,EAAO,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC/E,OAAKA,EAGEluE,EAAM,cAAc,OAAO,SAAU88D,EAAO,CACjD,OAAOA,EAAM,YAAW,EAAG,MAC7B,CAAC,EAJQ98D,EAAM,aAKjB,CAAC,EACD5K,EAAgB,KAAM,eAAgB,UAAY,CAChD,IAAI84E,EAAO,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC3EnuF,EAAQ,IAAImtF,GAChB,OAAAltE,EAAM,iBAAiBkuE,CAAI,EAAE,QAAQ,SAAUpR,EAAO,CACpD,IAAIkH,EAAWlH,EAAM,YAAW,EAChC/8E,EAAM,IAAIikF,EAAUlH,CAAK,CAC3B,CAAC,EACM/8E,CACT,CAAC,EACDqV,EAAgB,KAAM,kCAAmC,SAAU+4E,EAAU,CAC3E,GAAI,CAACA,EACH,OAAOnuE,EAAM,iBAAiB,EAAI,EAEpC,IAAIjgB,EAAQigB,EAAM,aAAa,EAAI,EACnC,OAAOmuE,EAAS,IAAI,SAAU7tF,EAAM,CAClC,IAAI0jF,EAAW4B,GAAYtlF,CAAI,EAC/B,OAAOP,EAAM,IAAIikF,CAAQ,GAAK,CAC5B,qBAAsB4B,GAAYtlF,CAAI,CAC9C,CACI,CAAC,CACH,CAAC,EACD8U,EAAgB,KAAM,iBAAkB,SAAU+4E,EAAUC,EAAY,CACtEpuE,EAAM,gBAAe,EAGrB,IAAIquE,EACAC,EACAC,EAQJ,GAPIJ,IAAa,IAAQ,MAAM,QAAQA,CAAQ,GAC7CE,EAAiBF,EACjBG,EAAmBF,GACVD,GAAYr6E,GAAQq6E,CAAQ,IAAM,WAC3CI,EAAeJ,EAAS,OACxBG,EAAmBH,EAAS,QAE1BE,IAAmB,IAAQ,CAACC,EAC9B,OAAOtuE,EAAM,MAEf,IAAIwuE,EAAgBxuE,EAAM,gCAAgC,MAAM,QAAQquE,CAAc,EAAIA,EAAiB,IAAI,EAC3GI,EAAmB,CAAA,EACvB,OAAAD,EAAc,QAAQ,SAAUnuE,EAAQ,CACtC,IAAIquE,EAAcvhE,EACd62D,EAAW,yBAA0B3jE,EAASA,EAAO,qBAAuBA,EAAO,YAAW,EAIlG,GAAIkuE,EAAc,CAChB,IAAII,EAAS/kF,EACb,IAAK+kF,GAAW/kF,EAAQyW,GAAQ,UAAY,MAAQsuE,IAAY,QAAUA,EAAQ,KAAK/kF,CAAK,EAC1F,MAEJ,SAAW,CAACykF,IAAmBK,GAAgBvhE,EAAQ9M,GAAQ,eAAiB,MAAQquE,IAAiB,QAAUA,EAAa,KAAKvhE,CAAK,EACxI,OAEF,GAAI,CAACmhE,EACHG,EAAiB,KAAKzK,CAAQ,MACzB,CACL,IAAI0F,EAAO,YAAarpE,EAASA,EAAO,QAAO,EAAK,KAChDiuE,EAAiB5E,CAAI,GACvB+E,EAAiB,KAAKzK,CAAQ,CAElC,CACF,CAAC,EACM6B,GAAoB7lE,EAAM,MAAOyuE,EAAiB,IAAI7I,EAAW,CAAC,CAC3E,CAAC,EACDxwE,EAAgB,KAAM,gBAAiB,SAAU9U,EAAM,CACrD0f,EAAM,gBAAe,EACrB,IAAIgkE,EAAW4B,GAAYtlF,CAAI,EAC/B,OAAOqZ,GAASqG,EAAM,MAAOgkE,CAAQ,CACvC,CAAC,EACD5uE,EAAgB,KAAM,iBAAkB,SAAU+4E,EAAU,CAC1DnuE,EAAM,gBAAe,EACrB,IAAIwuE,EAAgBxuE,EAAM,gCAAgCmuE,CAAQ,EAClE,OAAOK,EAAc,IAAI,SAAUnuE,EAAQjqB,EAAO,CAChD,OAAIiqB,GAAU,EAAE,yBAA0BA,GACjC,CACL,KAAMA,EAAO,YAAW,EACxB,OAAQA,EAAO,UAAS,EACxB,SAAUA,EAAO,YAAW,CACtC,EAEa,CACL,KAAMulE,GAAYuI,EAAS/3F,CAAK,CAAC,EACjC,OAAQ,CAAA,EACR,SAAU,CAAA,CAClB,CACI,CAAC,CACH,CAAC,EACDgf,EAAgB,KAAM,gBAAiB,SAAU9U,EAAM,CACrD0f,EAAM,gBAAe,EACrB,IAAIgkE,EAAW4B,GAAYtlF,CAAI,EAC3BsuF,EAAa5uE,EAAM,eAAe,CAACgkE,CAAQ,CAAC,EAAE,CAAC,EACnD,OAAO4K,EAAW,MACpB,CAAC,EACDx5E,EAAgB,KAAM,kBAAmB,SAAU9U,EAAM,CACvD0f,EAAM,gBAAe,EACrB,IAAIgkE,EAAW4B,GAAYtlF,CAAI,EAC3BsuF,EAAa5uE,EAAM,eAAe,CAACgkE,CAAQ,CAAC,EAAE,CAAC,EACnD,OAAO4K,EAAW,QACpB,CAAC,EACDx5E,EAAgB,KAAM,kBAAmB,UAAY,CACnD4K,EAAM,gBAAe,EACrB,QAAS7F,EAAO,UAAU,OAAQplB,EAAO,IAAI,MAAMolB,CAAI,EAAGE,EAAO,EAAGA,EAAOF,EAAME,IAC/EtlB,EAAKslB,CAAI,EAAI,UAAUA,CAAI,EAE7B,IAAIw0E,EAAO95F,EAAK,CAAC,EACf+5F,EAAO/5F,EAAK,CAAC,EACX+wF,EACAiJ,EAAqB,GACrBh6F,EAAK,SAAW,EAClB+wF,EAAe,KACN/wF,EAAK,SAAW,EACrB,MAAM,QAAQ85F,CAAI,GACpB/I,EAAe+I,EAAK,IAAIjJ,EAAW,EACnCmJ,EAAqB,KAErBjJ,EAAe,KACfiJ,EAAqBF,IAGvB/I,EAAe+I,EAAK,IAAIjJ,EAAW,EACnCmJ,EAAqBD,GAEvB,IAAIN,EAAgBxuE,EAAM,iBAAiB,EAAI,EAC3CgvE,EAAiB,SAAwBlS,EAAO,CAClD,OAAOA,EAAM,eAAc,CAC7B,EAGA,GAAI,CAACgJ,EACH,OAAOiJ,EAAqBP,EAAc,MAAM,SAAUnuE,EAAQ,CAChE,OAAO2uE,EAAe3uE,CAAM,GAAKA,EAAO,OAAM,CAChD,CAAC,EAAImuE,EAAc,KAAKQ,CAAc,EAIxC,IAAIC,EAAM,IAAI/B,GACdpH,EAAa,QAAQ,SAAUoJ,EAAe,CAC5CD,EAAI,IAAIC,EAAe,EAAE,CAC3B,CAAC,EACDV,EAAc,QAAQ,SAAU1R,EAAO,CACrC,IAAIqS,EAAgBrS,EAAM,YAAW,EAGrCgJ,EAAa,QAAQ,SAAUoJ,EAAe,CACxCA,EAAc,MAAM,SAAU9I,EAAU5xF,EAAG,CAC7C,OAAO26F,EAAc36F,CAAC,IAAM4xF,CAC9B,CAAC,GACC6I,EAAI,OAAOC,EAAe,SAAUr1D,EAAM,CACxC,MAAO,CAAA,EAAG,OAAO9V,GAAmB8V,CAAI,EAAG,CAACijD,CAAK,CAAC,CACpD,CAAC,CAEL,CAAC,CACH,CAAC,EAGD,IAAIsS,EAAwB,SAA+BhvE,EAAU,CACnE,OAAOA,EAAS,KAAK4uE,CAAc,CACrC,EACIK,EAAuBJ,EAAI,IAAI,SAAU3hE,EAAO,CAClD,IAAI16B,EAAQ06B,EAAM,MAClB,OAAO16B,CACT,CAAC,EACD,OAAOm8F,EAAqBM,EAAqB,MAAMD,CAAqB,EAAIC,EAAqB,KAAKD,CAAqB,CACjI,CAAC,EACDh6E,EAAgB,KAAM,iBAAkB,SAAU9U,EAAM,CACtD,OAAA0f,EAAM,gBAAe,EACdA,EAAM,gBAAgB,CAAC1f,CAAI,CAAC,CACrC,CAAC,EACD8U,EAAgB,KAAM,qBAAsB,SAAU+4E,EAAU,CAC9DnuE,EAAM,gBAAe,EACrB,IAAIwuE,EAAgBxuE,EAAM,iBAAgB,EAC1C,GAAI,CAACmuE,EACH,OAAOK,EAAc,KAAK,SAAUc,EAAW,CAC7C,OAAOA,EAAU,kBAAiB,CACpC,CAAC,EAEH,IAAIxJ,EAAeqI,EAAS,IAAIvI,EAAW,EAC3C,OAAO4I,EAAc,KAAK,SAAUc,EAAW,CAC7C,IAAIH,EAAgBG,EAAU,YAAW,EACzC,OAAOtJ,GAAiBF,EAAcqJ,CAAa,GAAKG,EAAU,kBAAiB,CACrF,CAAC,CACH,CAAC,EACDl6E,EAAgB,KAAM,oBAAqB,SAAU9U,EAAM,CACzD,OAAA0f,EAAM,gBAAe,EACdA,EAAM,mBAAmB,CAAC1f,CAAI,CAAC,CACxC,CAAC,EAKD8U,EAAgB,KAAM,6BAA8B,UAAY,CAC9D,IAAIyhB,EAAO,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAA,EAE3E92B,EAAQ,IAAImtF,GACZsB,EAAgBxuE,EAAM,iBAAiB,EAAI,EAC/CwuE,EAAc,QAAQ,SAAU1R,EAAO,CACrC,IAAI8O,EAAe9O,EAAM,MAAM,aAC3BkH,EAAWlH,EAAM,YAAW,EAGhC,GAAI8O,IAAiB,OAAW,CAC9B,IAAI2D,EAAUxvF,EAAM,IAAIikF,CAAQ,GAAK,IAAI,IACzCuL,EAAQ,IAAI,CACV,OAAQzS,EACR,MAAO8O,CACjB,CAAS,EACD7rF,EAAM,IAAIikF,EAAUuL,CAAO,CAC7B,CACF,CAAC,EAGD,IAAIC,EAAkB,SAAyBpvE,EAAU,CACvDA,EAAS,QAAQ,SAAU08D,EAAO,CAChC,IAAI8O,EAAe9O,EAAM,MAAM,aAC/B,GAAI8O,IAAiB,OAAW,CAC9B,IAAI5H,EAAWlH,EAAM,YAAW,EAC5B2S,EAAmBzvE,EAAM,gBAAgBgkE,CAAQ,EACrD,GAAIyL,IAAqB,OAEvBh7E,GAAQ,GAAO,+CAA+C,OAAOuvE,EAAS,KAAK,GAAG,EAAG,gCAAgC,CAAC,MACrH,CACL,IAAIuL,EAAUxvF,EAAM,IAAIikF,CAAQ,EAChC,GAAIuL,GAAWA,EAAQ,KAAO,EAE5B96E,GAAQ,GAAO,6BAA6B,OAAOuvE,EAAS,KAAK,GAAG,EAAG,yDAAyD,CAAC,UACxHuL,EAAS,CAClB,IAAIpwD,EAAcnf,EAAM,cAAcgkE,CAAQ,EAC1CmD,EAAcrK,EAAM,YAAW,EAG/B,CAACqK,IAAgB,CAACtwD,EAAK,WAAasI,IAAgB,SACtDnf,EAAM,YAAYivB,GAASjvB,EAAM,MAAOgkE,EAAUjgE,GAAmBwrE,CAAO,EAAE,CAAC,EAAE,KAAK,CAAC,CAE3F,CACF,CACF,CACF,CAAC,CACH,EACIG,EACA74D,EAAK,SACP64D,EAAwB74D,EAAK,SACpBA,EAAK,cACd64D,EAAwB,CAAA,EACxB74D,EAAK,aAAa,QAAQ,SAAUmtD,EAAU,CAC5C,IAAIuL,EAAUxvF,EAAM,IAAIikF,CAAQ,EAChC,GAAIuL,EAAS,CACX,IAAII,GACHA,EAAwBD,GAAuB,KAAK,MAAMC,EAAuB5rE,GAAmBA,GAAmBwrE,CAAO,EAAE,IAAI,SAAUr7F,EAAG,CAChJ,OAAOA,EAAE,MACX,CAAC,CAAC,CAAC,CACL,CACF,CAAC,GAEDw7F,EAAwBlB,EAE1BgB,EAAgBE,CAAqB,CACvC,CAAC,EACDt6E,EAAgB,KAAM,cAAe,SAAU+4E,EAAU,CACvDnuE,EAAM,gBAAe,EACrB,IAAI8nE,EAAY9nE,EAAM,MACtB,GAAI,CAACmuE,EAAU,CACbnuE,EAAM,YAAY4e,GAAM5e,EAAM,aAAa,CAAC,EAC5CA,EAAM,2BAA0B,EAChCA,EAAM,gBAAgB8nE,EAAW,KAAM,CACrC,KAAM,OACd,CAAO,EACD9nE,EAAM,YAAW,EACjB,MACF,CAGA,IAAI8lE,EAAeqI,EAAS,IAAIvI,EAAW,EAC3CE,EAAa,QAAQ,SAAU9B,EAAU,CACvC,IAAI4H,EAAe5rE,EAAM,gBAAgBgkE,CAAQ,EACjDhkE,EAAM,YAAYivB,GAASjvB,EAAM,MAAOgkE,EAAU4H,CAAY,CAAC,CACjE,CAAC,EACD5rE,EAAM,2BAA2B,CAC/B,aAAc8lE,CACpB,CAAK,EACD9lE,EAAM,gBAAgB8nE,EAAWhC,EAAc,CAC7C,KAAM,OACZ,CAAK,EACD9lE,EAAM,YAAY8lE,CAAY,CAChC,CAAC,EACD1wE,EAAgB,KAAM,YAAa,SAAU0jD,EAAQ,CACnD94C,EAAM,gBAAe,EACrB,IAAI8nE,EAAY9nE,EAAM,MAClB8lE,EAAe,CAAA,EACnBhtB,EAAO,QAAQ,SAAU82B,EAAW,CAClC,IAAItvF,EAAOsvF,EAAU,KACnBl9F,EAAOu1B,GAAyB2nE,EAAWj2C,EAAS,EAClDqqC,EAAW4B,GAAYtlF,CAAI,EAC/BwlF,EAAa,KAAK9B,CAAQ,EAGtB,UAAWtxF,GACbstB,EAAM,YAAYivB,GAASjvB,EAAM,MAAOgkE,EAAUtxF,EAAK,KAAK,CAAC,EAE/DstB,EAAM,gBAAgB8nE,EAAW,CAAC9D,CAAQ,EAAG,CAC3C,KAAM,WACN,KAAM4L,CACd,CAAO,CACH,CAAC,EACD5vE,EAAM,YAAY8lE,CAAY,CAChC,CAAC,EACD1wE,EAAgB,KAAM,YAAa,UAAY,CAC7C,IAAIgL,EAAWJ,EAAM,iBAAiB,EAAI,EACtC84C,EAAS14C,EAAS,IAAI,SAAU08D,EAAO,CACzC,IAAIkH,EAAWlH,EAAM,YAAW,EAC5B4M,EAAO5M,EAAM,QAAO,EACpB8S,EAAYzsE,EAAcA,EAAc,CAAA,EAAIumE,CAAI,EAAG,GAAI,CACzD,KAAM1F,EACN,MAAOhkE,EAAM,cAAcgkE,CAAQ,CAC3C,CAAO,EACD,cAAO,eAAe4L,EAAW,gBAAiB,CAChD,MAAO,EACf,CAAO,EACMA,CACT,CAAC,EACD,OAAO92B,CACT,CAAC,EAKD1jD,EAAgB,KAAM,kBAAmB,SAAUiL,EAAQ,CACzD,IAAIurE,EAAevrE,EAAO,MAAM,aAChC,GAAIurE,IAAiB,OAAW,CAC9B,IAAI5H,EAAW3jE,EAAO,YAAW,EAC7B6I,EAAYvP,GAASqG,EAAM,MAAOgkE,CAAQ,EAC1C96D,IAAc,QAChBlJ,EAAM,YAAYivB,GAASjvB,EAAM,MAAOgkE,EAAU4H,CAAY,CAAC,CAEnE,CACF,CAAC,EACDx2E,EAAgB,KAAM,mBAAoB,SAAUy6E,EAAe,CACjE,IAAIC,EAAiBD,IAAkB,OAAYA,EAAgB7vE,EAAM,SACzE,OAAO8vE,GAAwE,EACjF,CAAC,EACD16E,EAAgB,KAAM,gBAAiB,SAAUiL,EAAQ,CACvDL,EAAM,cAAc,KAAKK,CAAM,EAC/B,IAAI2jE,EAAW3jE,EAAO,YAAW,EAIjC,GAHAL,EAAM,YAAY,CAACgkE,CAAQ,CAAC,EAGxB3jE,EAAO,MAAM,eAAiB,OAAW,CAC3C,IAAIynE,EAAY9nE,EAAM,MACtBA,EAAM,2BAA2B,CAC/B,SAAU,CAACK,CAAM,EACjB,UAAW,EACnB,CAAO,EACDL,EAAM,gBAAgB8nE,EAAW,CAACznE,EAAO,YAAW,CAAE,EAAG,CACvD,KAAM,cACN,OAAQ,UAChB,CAAO,CACH,CAGA,OAAO,SAAU8mE,EAAatwC,EAAU,CACtC,IAAIsvC,EAAc,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAA,EAMtF,GALAnmE,EAAM,cAAgBA,EAAM,cAAc,OAAO,SAAUmL,EAAM,CAC/D,OAAOA,IAAS9K,CAClB,CAAC,EAGG,CAACL,EAAM,iBAAiB62B,CAAQ,IAAM,CAACswC,GAAehB,EAAY,OAAS,GAAI,CACjF,IAAIxtF,EAAewuF,EAAc,OAAYnnE,EAAM,gBAAgBgkE,CAAQ,EAC3E,GAAIA,EAAS,QAAUhkE,EAAM,cAAcgkE,CAAQ,IAAMrrF,GAAgBqnB,EAAM,cAAc,MAAM,SAAU88D,EAAO,CAClH,MAEE,CAACoJ,GAAcpJ,EAAM,YAAW,EAAIkH,CAAQ,CAEhD,CAAC,EAAG,CACF,IAAI+L,EAAa/vE,EAAM,MACvBA,EAAM,YAAYivB,GAAS8gD,EAAY/L,EAAUrrF,EAAc,EAAI,CAAC,EAGpEqnB,EAAM,gBAAgB+vE,EAAY,CAAC/L,CAAQ,EAAG,CAC5C,KAAM,QAClB,CAAW,EAGDhkE,EAAM,0BAA0B+vE,EAAY/L,CAAQ,CACtD,CACF,CACAhkE,EAAM,YAAY,CAACgkE,CAAQ,CAAC,CAC9B,CACF,CAAC,EACD5uE,EAAgB,KAAM,WAAY,SAAUnG,EAAQ,CAClD,OAAQA,EAAO,KAAI,CACjB,IAAK,cACH,CACE,IAAI+0E,EAAW/0E,EAAO,SACpBrc,EAAQqc,EAAO,MACjB+Q,EAAM,YAAYgkE,EAAUpxF,CAAK,EACjC,KACF,CACF,IAAK,gBACH,CACE,IAAIo9F,EAAY/gF,EAAO,SACrBu5E,EAAcv5E,EAAO,YACvB+Q,EAAM,eAAe,CAACgwE,CAAS,EAAG,CAChC,YAAaxH,CACzB,CAAW,EACD,KACF,CAGR,CACE,CAAC,EACDpzE,EAAgB,KAAM,kBAAmB,SAAU0yE,EAAWhC,EAAcjvD,EAAM,CAChF,GAAI7W,EAAM,aAAc,CACtB,IAAIiwE,EAAa9sE,EAAcA,EAAc,CAAA,EAAI0T,CAAI,EAAG,GAAI,CAC1D,MAAO7W,EAAM,eAAe,EAAI,CACxC,CAAO,EACDA,EAAM,iBAAgB,EAAG,QAAQ,SAAUmQ,EAAO,CAChD,IAAI+/D,EAAgB//D,EAAM,cAC1B+/D,EAAcpI,EAAWhC,EAAcmK,CAAU,CACnD,CAAC,CACH,MACEjwE,EAAM,gBAAe,CAEzB,CAAC,EAKD5K,EAAgB,KAAM,4BAA6B,SAAU0yE,EAAW9D,EAAU,CAChF,IAAImM,EAAiBnwE,EAAM,4BAA4BgkE,CAAQ,EAC/D,OAAImM,EAAe,QACjBnwE,EAAM,eAAemwE,CAAc,EAErCnwE,EAAM,gBAAgB8nE,EAAWqI,EAAgB,CAC/C,KAAM,qBACN,cAAe,CAACnM,CAAQ,EAAE,OAAOjgE,GAAmBosE,CAAc,CAAC,CACzE,CAAK,EACMA,CACT,CAAC,EACD/6E,EAAgB,KAAM,cAAe,SAAU9U,EAAM1N,EAAO,CAC1D,IAAIoxF,EAAW4B,GAAYtlF,CAAI,EAC3BwnF,EAAY9nE,EAAM,MACtBA,EAAM,YAAYivB,GAASjvB,EAAM,MAAOgkE,EAAUpxF,CAAK,CAAC,EACxDotB,EAAM,gBAAgB8nE,EAAW,CAAC9D,CAAQ,EAAG,CAC3C,KAAM,cACN,OAAQ,UACd,CAAK,EACDhkE,EAAM,YAAY,CAACgkE,CAAQ,CAAC,EAG5B,IAAImM,EAAiBnwE,EAAM,0BAA0B8nE,EAAW9D,CAAQ,EAGpEoM,EAAiBpwE,EAAM,UAAU,eACrC,GAAIowE,EAAgB,CAClB,IAAIC,EAAgBxK,GAAoB7lE,EAAM,MAAO,CAACgkE,CAAQ,CAAC,EAC/DoM,EAAeC,EAAerwE,EAAM,gBAAgB,CACtD,CACAA,EAAM,sBAAsB,CAACgkE,CAAQ,EAAE,OAAOjgE,GAAmBosE,CAAc,CAAC,CAAC,CACnF,CAAC,EAED/6E,EAAgB,KAAM,iBAAkB,SAAUlU,EAAO,CACvD8e,EAAM,gBAAe,EACrB,IAAI8nE,EAAY9nE,EAAM,MACtB,GAAI9e,EAAO,CACT,IAAI0sF,EAAYhvD,GAAM5e,EAAM,MAAO9e,CAAK,EACxC8e,EAAM,YAAY4tE,CAAS,CAC7B,CACA5tE,EAAM,gBAAgB8nE,EAAW,KAAM,CACrC,KAAM,cACN,OAAQ,UACd,CAAK,EACD9nE,EAAM,YAAW,CACnB,CAAC,EACD5K,EAAgB,KAAM,gBAAiB,SAAU9U,EAAM1N,EAAO,CAC5DotB,EAAM,UAAU,CAAC,CACf,KAAM1f,EACN,MAAO1N,EACP,OAAQ,CAAA,EACR,SAAU,CAAA,CAChB,CAAK,CAAC,CACJ,CAAC,EACDwiB,EAAgB,KAAM,8BAA+B,SAAUk7E,EAAc,CAC3E,IAAIl8E,EAAW,IAAI,IACf+7E,EAAiB,CAAA,EACjBI,EAAsB,IAAIrD,GAM9BltE,EAAM,iBAAgB,EAAG,QAAQ,SAAU88D,EAAO,CAChD,IAAImL,EAAenL,EAAM,MAAM,cAC9BmL,GAAgB,CAAA,GAAI,QAAQ,SAAUK,EAAY,CACjD,IAAIkI,EAAqB5K,GAAY0C,CAAU,EAC/CiI,EAAoB,OAAOC,EAAoB,UAAY,CACzD,IAAI13B,EAAS,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,IAAI,IACrF,OAAAA,EAAO,IAAIgkB,CAAK,EACThkB,CACT,CAAC,CACH,CAAC,CACH,CAAC,EACD,IAAI23B,EAAe,SAASA,EAAazM,EAAU,CACjD,IAAIlrB,EAASy3B,EAAoB,IAAIvM,CAAQ,GAAK,IAAI,IACtDlrB,EAAO,QAAQ,SAAUgkB,EAAO,CAC9B,GAAI,CAAC1oE,EAAS,IAAI0oE,CAAK,EAAG,CACxB1oE,EAAS,IAAI0oE,CAAK,EAClB,IAAIqS,EAAgBrS,EAAM,YAAW,EACjCA,EAAM,gBAAkBqS,EAAc,SACxCgB,EAAe,KAAKhB,CAAa,EACjCsB,EAAatB,CAAa,EAE9B,CACF,CAAC,CACH,EACA,OAAAsB,EAAaH,CAAY,EAClBH,CACT,CAAC,EACD/6E,EAAgB,KAAM,wBAAyB,SAAU0wE,EAAc4K,EAAa,CAClF,IAAIC,EAAiB3wE,EAAM,UAAU,eACrC,GAAI2wE,EAAgB,CAClB,IAAI73B,EAAS94C,EAAM,UAAS,EAK5B,GAAI0wE,EAAa,CACf,IAAI3wF,EAAQ,IAAImtF,GAChBwD,EAAY,QAAQ,SAAUtgE,EAAO,CACnC,IAAI9vB,EAAO8vB,EAAM,KACfwsD,EAASxsD,EAAM,OACjBrwB,EAAM,IAAIO,EAAMs8E,CAAM,CACxB,CAAC,EACD9jB,EAAO,QAAQ,SAAUgkB,EAAO,CAE9BA,EAAM,OAAS/8E,EAAM,IAAI+8E,EAAM,IAAI,GAAKA,EAAM,MAChD,CAAC,CACH,CACA,IAAI8T,EAAgB93B,EAAO,OAAO,SAAUz7B,EAAO,CACjD,IAAIwzD,EAAYxzD,EAAM,KACtB,OAAO2oD,GAAiBF,EAAc+K,CAAS,CACjD,CAAC,EACGD,EAAc,QAChBD,EAAeC,EAAe93B,CAAM,CAExC,CACF,CAAC,EAED1jD,EAAgB,KAAM,iBAAkB,SAAU05E,EAAMgC,EAAM,CAC5D9wE,EAAM,gBAAe,EACrB,IAAImuE,EACA94F,EACA,MAAM,QAAQy5F,CAAI,GAAK,OAAOA,GAAS,UAAY,OAAOgC,GAAS,UACrE3C,EAAWW,EACXz5F,EAAUy7F,GAEVz7F,EAAUy5F,EAEZ,IAAIiC,EAAkB,CAAC,CAAC5C,EACpBrI,EAAeiL,EAAkB5C,EAAS,IAAIvI,EAAW,EAAI,CAAA,EAG7DmH,EAAc,CAAA,EAGdiE,EAAY,OAAO,KAAK,IAAG,CAAE,EAC7BC,EAAuB,IAAI,IAC3BC,EAAQ77F,GAAW,CAAA,EACrB87F,EAAYD,EAAM,UAClBE,EAAQF,EAAM,MAChBlxE,EAAM,iBAAiB,EAAI,EAAE,QAAQ,SAAU88D,EAAO,CAOpD,GALKiU,GACHjL,EAAa,KAAKhJ,EAAM,aAAa,EAInC,GAACA,EAAM,MAAM,OAAS,CAACA,EAAM,MAAM,MAAM,SAKzC,EAAAsU,GAAS,CAACtU,EAAM,gBAGpB,KAAIqS,EAAgBrS,EAAM,YAAW,EAIrC,GAHAmU,EAAqB,IAAI9B,EAAc,KAAK6B,CAAS,CAAC,EAGlD,CAACD,GAAmB/K,GAAiBF,EAAcqJ,EAAegC,CAAS,EAAG,CAChF,IAAItgG,EAAUisF,EAAM,cAAc35D,EAAc,CAC9C,iBAAkBA,EAAcA,EAAc,CAAA,EAAIy/D,EAAuB,EAAG5iE,EAAM,gBAAgB,CAC5G,EAAW3qB,CAAO,CAAC,EAGX03F,EAAY,KAAKl8F,EAAQ,KAAK,UAAY,CACxC,MAAO,CACL,KAAMs+F,EACN,OAAQ,CAAA,EACR,SAAU,CAAA,CACtB,CACQ,CAAC,EAAE,MAAM,SAAUjG,EAAY,CAC7B,IAAIC,EACAkI,EAAe,CAAA,EACfC,EAAiB,CAAA,EAUrB,OATCnI,EAAsBD,EAAW,WAAa,MAAQC,IAAwB,QAAUA,EAAoB,KAAKD,EAAY,SAAUqI,EAAO,CAC7I,IAAIjI,EAAciI,EAAM,KAAK,YAC3B3U,EAAS2U,EAAM,OACbjI,EACFgI,EAAe,KAAK,MAAMA,EAAgBvtE,GAAmB64D,CAAM,CAAC,EAEpEyU,EAAa,KAAK,MAAMA,EAActtE,GAAmB64D,CAAM,CAAC,CAEpE,CAAC,EACGyU,EAAa,OACR,QAAQ,OAAO,CACpB,KAAMlC,EACN,OAAQkC,EACR,SAAUC,CACxB,CAAa,EAEI,CACL,KAAMnC,EACN,OAAQkC,EACR,SAAUC,CACtB,CACQ,CAAC,CAAC,CACJ,EACF,CAAC,EACD,IAAI1M,EAAiBkI,GAAiBC,CAAW,EACjD/sE,EAAM,oBAAsB4kE,EAG5BA,EAAe,MAAM,SAAUxH,EAAS,CACtC,OAAOA,CACT,CAAC,EAAE,KAAK,SAAUA,EAAS,CACzB,IAAIoU,EAAqBpU,EAAQ,IAAI,SAAUqU,EAAQ,CACrD,IAAInxF,EAAOmxF,EAAO,KAClB,OAAOnxF,CACT,CAAC,EACD0f,EAAM,gBAAgBA,EAAM,MAAOwxE,EAAoB,CACrD,KAAM,gBACd,CAAO,EACDxxE,EAAM,sBAAsBwxE,EAAoBpU,CAAO,CACzD,CAAC,EACD,IAAIsU,EAAgB9M,EAAe,KAAK,UAAY,CAClD,OAAI5kE,EAAM,sBAAwB4kE,EACzB,QAAQ,QAAQ5kE,EAAM,eAAe8lE,CAAY,CAAC,EAEpD,QAAQ,OAAO,EAAE,CAC1B,CAAC,EAAE,MAAM,SAAU1I,EAAS,CAC1B,IAAI4E,EAAY5E,EAAQ,OAAO,SAAU7mF,EAAQ,CAC/C,OAAOA,GAAUA,EAAO,OAAO,MACjC,CAAC,EACD,OAAO,QAAQ,OAAO,CACpB,OAAQypB,EAAM,eAAe8lE,CAAY,EACzC,YAAa9D,EACb,UAAWhiE,EAAM,sBAAwB4kE,CACjD,CAAO,CACH,CAAC,EAGD8M,EAAc,MAAM,SAAUv/F,EAAG,CAC/B,OAAOA,CACT,CAAC,EAGD,IAAIw/F,EAAsB7L,EAAa,OAAO,SAAU9B,EAAU,CAChE,OAAOiN,EAAqB,IAAIjN,EAAS,KAAKgN,CAAS,CAAC,CAC1D,CAAC,EACD,OAAAhxE,EAAM,sBAAsB2xE,CAAmB,EACxCD,CACT,CAAC,EAEDt8E,EAAgB,KAAM,SAAU,UAAY,CAC1C4K,EAAM,gBAAe,EACrBA,EAAM,eAAc,EAAG,KAAK,SAAUqsE,EAAQ,CAC5C,IAAIuF,EAAW5xE,EAAM,UAAU,SAC/B,GAAI4xE,EACF,GAAI,CACFA,EAASvF,CAAM,CACjB,OAAS3qF,EAAK,CAEZ,QAAQ,MAAMA,CAAG,CACnB,CAEJ,CAAC,EAAE,MAAM,SAAUvP,EAAG,CACpB,IAAI0/F,EAAiB7xE,EAAM,UAAU,eACjC6xE,GACFA,EAAe1/F,CAAC,CAEpB,CAAC,CACH,CAAC,EACD,KAAK,gBAAkBo7F,CACzB,CAAC,EACD,SAASuE,GAAQlrC,EAAM,CACrB,IAAImrC,EAAU/jF,EAAM,OAAM,EACtB+gC,EAAkB/gC,EAAM,SAAS,EAAE,EACrCghC,EAAmB7pB,GAAe4pB,EAAiB,CAAC,EACpDiL,EAAchL,EAAiB,CAAC,EAClC,GAAI,CAAC+iD,EAAQ,QACX,GAAInrC,EACFmrC,EAAQ,QAAUnrC,MACb,CAEL,IAAIorC,EAAgB,UAAyB,CAC3Ch4C,EAAY,CAAA,CAAE,CAChB,EACIi4C,EAAY,IAAI3E,GAAU0E,CAAa,EAC3CD,EAAQ,QAAUE,EAAU,QAAO,CACrC,CAEF,MAAO,CAACF,EAAQ,OAAO,CACzB,CC53BA,IAAIG,GAA2BlkF,EAAM,cAAc,CACjD,kBAAmB,UAA6B,CAAC,EACjD,kBAAmB,UAA6B,CAAC,EACjD,aAAc,UAAwB,CAAC,EACvC,eAAgB,UAA0B,CAAC,CAC7C,CAAC,EACGmkF,GAAe,SAAsBzoF,EAAM,CAC7C,IAAIyhD,EAAmBzhD,EAAK,iBAC1B0oF,EAAe1oF,EAAK,aACpB2oF,EAAe3oF,EAAK,aACpB0K,EAAW1K,EAAK,SACd4oF,EAActkF,EAAM,WAAWkkF,EAAW,EAC1CK,EAAWvkF,EAAM,OAAO,EAAE,EAC9B,OAAoBA,EAAM,cAAckkF,GAAY,SAAU,CAC5D,MAAO/uE,EAAcA,EAAc,CAAA,EAAImvE,CAAW,EAAG,CAAA,EAAI,CACvD,iBAAkBnvE,EAAcA,EAAc,CAAA,EAAImvE,EAAY,gBAAgB,EAAGnnC,CAAgB,EAIjG,kBAAmB,SAA2B7qD,EAAMswF,EAAe,CAC7DwB,GACFA,EAAa9xF,EAAM,CACjB,cAAeswF,EACf,MAAO2B,EAAS,OAC5B,CAAW,EAEHD,EAAY,kBAAkBhyF,EAAMswF,CAAa,CACnD,EACA,kBAAmB,SAA2BtwF,EAAM+rF,EAAQ,CACtDgG,GACFA,EAAa/xF,EAAM,CACjB,OAAQ+rF,EACR,MAAOkG,EAAS,OAC5B,CAAW,EAEHD,EAAY,kBAAkBhyF,EAAM+rF,CAAM,CAC5C,EACA,aAAc,SAAsB/rF,EAAMsmD,EAAM,CAC1CtmD,IACFiyF,EAAS,QAAUpvE,EAAcA,EAAc,CAAA,EAAIovE,EAAS,OAAO,EAAG,CAAA,EAAIn9E,EAAgB,CAAA,EAAI9U,EAAMsmD,CAAI,CAAC,GAE3G0rC,EAAY,aAAahyF,EAAMsmD,CAAI,CACrC,EACA,eAAgB,SAAwBtmD,EAAM,CAC5C,IAAIkyF,EAAWrvE,EAAc,GAAIovE,EAAS,OAAO,EACjD,OAAOC,EAASlyF,CAAI,EACpBiyF,EAAS,QAAUC,EACnBF,EAAY,eAAehyF,CAAI,CACjC,CACN,CAAK,CACL,EAAK8T,CAAQ,CACb,EClDIulC,GAAY,CAAC,OAAQ,gBAAiB,SAAU,OAAQ,WAAY,WAAY,YAAa,mBAAoB,kBAAmB,iBAAkB,iBAAkB,WAAY,iBAAkB,gBAAgB,EAOtN84C,GAAO,SAAc/oF,EAAM5C,EAAK,CAClC,IAAIxG,EAAOoJ,EAAK,KACd+jF,EAAgB/jF,EAAK,cACrBovD,EAASpvD,EAAK,OACdk9C,EAAOl9C,EAAK,KACZmtC,EAAWntC,EAAK,SAChB0K,EAAW1K,EAAK,SAChBgpF,EAAiBhpF,EAAK,UACtBm7C,EAAY6tC,IAAmB,OAAS,OAASA,EACjDvnC,EAAmBzhD,EAAK,iBACxBipF,EAAuBjpF,EAAK,gBAC5Bs/E,EAAkB2J,IAAyB,OAAS,WAAaA,EACjEvC,EAAiB1mF,EAAK,eACtBkpF,EAAkBlpF,EAAK,eACvBmpF,EAAYnpF,EAAK,SACjBmoF,EAAiBnoF,EAAK,eACtBmkF,EAAiBnkF,EAAK,eACtBk7C,EAAY38B,GAAyBve,EAAMiwC,EAAS,EAClDm5C,EAAmB9kF,EAAM,OAAO,IAAI,EACpCskF,EAActkF,EAAM,WAAWkkF,EAAW,EAI1Ca,EAAWjB,GAAQlrC,CAAI,EACzBosC,EAAY7tE,GAAe4tE,EAAU,CAAC,EACtCE,EAAeD,EAAU,CAAC,EACxB1I,EAAoB2I,EAAa,iBAAiBnX,EAAS,EAC7DoX,EAAe5I,EAAkB,aACjC6I,EAAmB7I,EAAkB,iBACrC8I,EAAe9I,EAAkB,aACjC+I,EAAsB/I,EAAkB,oBACxCgJ,EAAchJ,EAAkB,YAChCiJ,EAAcjJ,EAAkB,YAGlCt8E,EAAM,oBAAoBlH,EAAK,UAAY,CACzC,OAAOqc,EAAcA,EAAc,CAAA,EAAI8vE,CAAY,EAAG,CAAA,EAAI,CACxD,cAAeH,EAAiB,OACtC,CAAK,CACH,CAAC,EAGD9kF,EAAM,UAAU,UAAY,CAC1B,OAAAskF,EAAY,aAAahyF,EAAM2yF,CAAY,EACpC,UAAY,CACjBX,EAAY,eAAehyF,CAAI,CACjC,CACF,EAAG,CAACgyF,EAAaW,EAAc3yF,CAAI,CAAC,EAGpC+yF,EAAoBlwE,EAAcA,EAAc,CAAA,EAAImvE,EAAY,gBAAgB,EAAGnnC,CAAgB,CAAC,EACpGioC,EAAa,CACX,eAAgBhD,EAChB,eAAgB,SAAwBQ,EAAe,CAErD,GADA0B,EAAY,kBAAkBhyF,EAAMswF,CAAa,EAC7CgC,EAAiB,CACnB,QAASz4E,EAAO,UAAU,OAAQxa,GAAO,IAAI,MAAMwa,EAAO,EAAIA,EAAO,EAAI,CAAC,EAAGE,GAAO,EAAGA,GAAOF,EAAME,KAClG1a,GAAK0a,GAAO,CAAC,EAAI,UAAUA,EAAI,EAEjCu4E,EAAgB,MAAM,OAAQ,CAAChC,CAAa,EAAE,OAAOjxF,EAAI,CAAC,CAC5D,CACF,EACA,SAAU,SAAkB0sF,EAAQ,CAClCiG,EAAY,kBAAkBhyF,EAAM+rF,CAAM,EACtCwG,GACFA,EAAUxG,CAAM,CAEpB,EACA,eAAgBwF,CACpB,CAAG,EACDyB,EAAYz8C,CAAQ,EAGpB,IAAI28C,EAAWxlF,EAAM,OAAO,IAAI,EAChCmlF,EAAiB1F,EAAe,CAAC+F,EAAS,OAAO,EAC5CA,EAAS,UACZA,EAAS,QAAU,IAErBxlF,EAAM,UAAU,UAAY,CAC1B,OAAO,UAAY,CACjB,OAAOulF,EAAY1F,CAAc,CACnC,CACF,EAEA,EAAE,EAGF,IAAI4F,EACAC,EAAsB,OAAOt/E,GAAa,WAC9C,GAAIs/E,EAAqB,CACvB,IAAIC,EAAUV,EAAa,eAAe,EAAI,EAC9CQ,EAAer/E,EAASu/E,EAASV,CAAY,CAC/C,MACEQ,EAAer/E,EAIjB8+E,EAAa,CAACQ,CAAmB,EAGjC,IAAIE,EAAgB5lF,EAAM,OAAM,EAChCA,EAAM,UAAU,UAAY,CACrBq4E,GAAUuN,EAAc,SAAW,CAAA,EAAI96B,GAAU,CAAA,CAAE,GACtDm6B,EAAa,UAAUn6B,GAAU,EAAE,EAErC86B,EAAc,QAAU96B,CAC1B,EAAG,CAACA,EAAQm6B,CAAY,CAAC,EACzB,IAAIY,EAAmB7lF,EAAM,QAAQ,UAAY,CAC/C,OAAOmV,EAAcA,EAAc,CAAA,EAAI8vE,CAAY,EAAG,CAAA,EAAI,CACxD,gBAAiBjK,CACvB,CAAK,CACH,EAAG,CAACiK,EAAcjK,CAAe,CAAC,EAC9B8K,EAA2B9lF,EAAM,cAAcguE,GAAY,SAAU,CACvE,MAAO,IACX,EAAkBhuE,EAAM,cAAcs9E,GAAa,SAAU,CACzD,MAAOuI,CACX,EAAKJ,CAAY,CAAC,EAChB,OAAI5uC,IAAc,GACTivC,EAEW9lF,EAAM,cAAc62C,EAAWhxC,GAAS,CAAA,EAAI+wC,EAAW,CACzE,IAAKkuC,EACL,SAAU,SAAkBh9F,EAAO,CACjCA,EAAM,eAAc,EACpBA,EAAM,gBAAe,EACrBm9F,EAAa,OAAM,CACrB,EACA,QAAS,SAAiBn9F,EAAO,CAC/B,IAAIi+F,EACJj+F,EAAM,eAAc,EACpBm9F,EAAa,YAAW,GACvBc,EAAqBnvC,EAAU,WAAa,MAAQmvC,IAAuB,QAAUA,EAAmB,KAAKnvC,EAAW9uD,CAAK,CAChI,CACJ,CAAG,EAAGg+F,CAAW,CACjB,EC3IO,SAASn9D,GAAU/jC,EAAO,CAC/B,GAAI,CACF,OAAO,KAAK,UAAUA,CAAK,CAC7B,MAAc,CACZ,OAAO,KAAK,OAAM,CACpB,CACF,CACA,IAAIohG,GAAkB,QAAQ,IAAI,WAAa,aAAe,SAAUhQ,EAAU,CAChF,IAAIiQ,EAAWjQ,EAAS,KAAK,yBAAyB,EAClDkQ,EAAantF,EAAAA,OAAOktF,CAAQ,EAChCx/E,GAAQy/E,EAAW,UAAYD,EAAU,8EAA8E,CACzH,EAAI,UAAY,CAAC,EAMjB,SAASE,IAAW,CAClB,QAASh6E,EAAO,UAAU,OAAQplB,EAAO,IAAI,MAAMolB,CAAI,EAAGE,EAAO,EAAGA,EAAOF,EAAME,IAC/EtlB,EAAKslB,CAAI,EAAI,UAAUA,CAAI,EAE7B,IAAI4tE,EAAelzF,EAAK,CAAC,EACvBq/F,EAASr/F,EAAK,CAAC,EACfs/F,EAAQD,IAAW,OAAS,CAAA,EAAKA,EAC/B/+F,EAAU4mF,GAAeoY,CAAK,EAAI,CACpC,KAAMA,CACV,EAAMA,EACAztC,EAAOvxD,EAAQ,KACfo6C,EAAYrnC,EAAAA,SAAQ,EACtBsnC,EAAavqB,GAAesqB,EAAW,CAAC,EACxC78C,EAAQ88C,EAAW,CAAC,EACpBT,EAAWS,EAAW,CAAC,EACrB4kD,EAAW56E,EAAAA,QAAQ,UAAY,CACjC,OAAOid,GAAU/jC,CAAK,CACxB,EAAG,CAACA,CAAK,CAAC,EACN2hG,EAAcxtF,EAAAA,OAAOutF,CAAQ,EACjCC,EAAY,QAAUD,EACtB,IAAIjN,EAAe5/E,EAAAA,WAAW6jF,EAAY,EACtC2H,EAAersC,GAAQygC,EACvBmN,EAAcvB,GAAgBA,EAAa,MAG3C,QAAQ,IAAI,WAAa,cAC3Bx+E,GAAQ1f,EAAK,SAAW,EAAI6xD,EAAO4tC,EAAc,GAAOA,EAAa,8EAA8E,EAErJ,IAAIxQ,EAAW4B,GAAYqC,CAAY,EACnCwM,EAAc1tF,EAAAA,OAAOi9E,CAAQ,EACjC,OAAAyQ,EAAY,QAAUzQ,EACtBgQ,GAAgBhQ,CAAQ,EACxBh9E,EAAAA,UAAU,UAAY,CAEpB,GAAKwtF,EAGL,KAAI3K,EAAiBoJ,EAAa,eAChC5I,EAAmB4I,EAAa,iBAC9B3I,EAAoBD,EAAiBvO,EAAS,EAChD4Y,EAAgBpK,EAAkB,cAChCqK,EAAgB,SAAuBtI,EAAQ4B,EAAW,CAC5D,IAAI2G,EAAav/F,EAAQ,SAAW44F,EAAY5B,EAChD,OAAO,OAAOpE,GAAiB,WAAaA,EAAa2M,CAAU,EAAIj7E,GAASi7E,EAAYH,EAAY,OAAO,CACjH,EACII,EAAiBH,EAAc,SAAUrI,EAAQ4B,EAAW,CAC9D,IAAIh8F,EAAW0iG,EAActI,EAAQ4B,CAAS,EAC1C6G,EAAen+D,GAAU1kC,CAAQ,EAGjCsiG,EAAY,UAAYO,IAC1BP,EAAY,QAAUO,EACtB7lD,EAASh9C,CAAQ,EAErB,CAAC,EAGG25F,EAAe+I,EAAc9K,EAAc,EAAIA,EAAe,EAAI,CAAC,EAIvE,OAAIj3F,IAAUg5F,GACZ38C,EAAS28C,CAAY,EAEhBiJ,EACT,EAGA,CAACL,CAAW,CAAC,EACN5hG,CACT,CCpFA,IAAImiG,GAA4B/mF,EAAM,WAAWgnF,EAAS,EACtDC,GAAUF,GACdE,GAAQ,aAAe9C,GACvB8C,GAAQ,MAAQ/N,GAChB+N,GAAQ,KAAOtJ,GACfsJ,GAAQ,QAAUnD,GAClBmD,GAAQ,SAAWd,GCGZ,MAAMe,GAAoClnF,EAAM,cAAc,EAAE,EACnE,QAAQ,IAAI,WAAa,eAC3BknF,GAAqB,YAAc,wBAE9B,MAAMC,GAAc,CAAC,CAC1B,SAAA/gF,EACA,OAAA+oC,EACA,SAAAxrB,CACF,IAAM,CACJ,MAAMyjE,EAAuBpnF,EAAM,WAAWknF,EAAoB,EAC5DG,EAA0BrnF,EAAM,QAAQ,IAAM,CAClD,MAAMsnF,EAAa,OAAO,OAAO,CAAA,EAAIF,CAAoB,EACzD,OAAIzjE,GACF,OAAO2jE,EAAW,gBAEhBn4C,IACF,OAAOm4C,EAAW,OAClB,OAAOA,EAAW,YAClB,OAAOA,EAAW,cAEbA,CACT,EAAG,CAACn4C,EAAQxrB,EAAUyjE,CAAoB,CAAC,EAC3C,OAAoBpnF,EAAM,cAAcknF,GAAqB,SAAU,CACrE,MAAOG,CACX,EAAKjhF,CAAQ,CACb,EACamhF,GAA8BvnF,EAAM,cAAc,MAAS,ECvClEwnF,GAAkBnuF,GAAS,CAC/B,KAAM,CACJ,MAAAw/C,EACA,KAAAD,EACA,SAAAxyC,CACJ,EAAM/M,EACJ,GAA8B+M,GAAa,KACzC,OAAO,KAET,IAAI7d,EAAS6d,EACb,OAAIwyC,IACFrwD,EAAsByX,EAAM,cAAcmnF,GAAa,CACrD,SAAU,GACV,OAAQ,EACd,EAAO5+F,CAAM,GAEPswD,IACFtwD,EAAsByX,EAAM,cAAc+uD,GAAgB,KAAMxmE,CAAM,GAEjEA,CACT,ECzBA,SAASk/F,MAAcC,EAAO,CAC5B,MAAMhzF,EAAM,CAAA,EACZ,OAAAgzF,EAAM,QAAQvqE,GAAQ,CAChBA,GACF,OAAO,KAAKA,CAAI,EAAE,QAAQ15B,GAAO,CAC3B05B,EAAK15B,CAAG,IAAM,SAChBiR,EAAIjR,CAAG,EAAI05B,EAAK15B,CAAG,EAEvB,CAAC,CAEL,CAAC,EACMiR,CACT,CCJO,SAASizF,GAAazpD,EAAS,CACpC,GAAKA,EAGL,MAAO,CACL,SAAUA,EAAQ,SAClB,UAAWA,EAAQ,SACvB,CACA,CAEA,SAAS0pD,GAAkBC,EAAoB,CAC7C,KAAM,CACJ,SAAAjjC,EACA,UAAAX,CACJ,EAAM4jC,GAAsB,CAAA,EAC1B,OAAO7nF,EAAM,QAAQ,IAAM,CACzB,GAEA,CAAC4kD,IAAaA,IAAa,IAASX,IAAc,IAASA,IAAc,MACvE,MAAO,GAET,GAAIW,IAAa,QAAaX,IAAc,OAC1C,OAAO,KAET,IAAI6jC,EAAiB,CACnB,UAAW,OAAO7jC,GAAc,WAAaA,IAAc,KAAOA,EAAY,MACpF,EACI,OAAIW,GAAY,OAAOA,GAAa,WAClCkjC,EAAiB,OAAO,OAAO,OAAO,OAAO,GAAIA,CAAc,EAAGljC,CAAQ,GAErEkjC,CACT,EAAG,CAACljC,EAAUX,CAAS,CAAC,CAC1B,CAEA,MAAM8jC,GAA+B,CAAA,EACtB,SAASC,GAAYC,EAAqBC,EAAwBC,EAA0BJ,GAA8B,CAEvI,MAAMK,EAAkBR,GAAkBK,CAAmB,EACvDI,EAAqBT,GAAkBM,CAAsB,EAC7D,CAACI,CAAa,EAAIh1D,GAAU,SAAUT,GAAc,MAAM,EAC1Dg4C,EAAqB,OAAOud,GAAoB,UAAY,CAAC,EAAEA,GAAoB,MAA8CA,EAAgB,UAAY,GAC7JG,EAAgCvoF,EAAM,QAAQ,IAAM,OAAO,OAAO,CACtE,UAAwBA,EAAM,cAAcygD,GAAe,IAAI,CACnE,EAAK0nC,CAAuB,EAAG,CAACA,CAAuB,CAAC,EAEhDK,EAAuBxoF,EAAM,QAAQ,IAGrCooF,IAAoB,GACf,GAELA,EACKK,GAAcF,EAA+BF,EAAoBD,CAAe,EAIrFC,IAAuB,GAClB,GAELA,EACKI,GAAcF,EAA+BF,CAAkB,EAGhEE,EAA8B,SAAmBA,EAAR,GAChD,CAACH,EAAiBC,EAAoBE,CAA6B,CAAC,EAEvE,OAAOvoF,EAAM,QAAQ,IAAM,CACzB,GAAIwoF,IAAyB,GAC3B,MAAO,CAAC,GAAO,KAAM3d,EAAoB,CAAA,CAAE,EAE7C,KAAM,CACJ,gBAAA6d,CACN,EAAQH,EACE,CACJ,UAAAtkC,CACN,EAAQukC,EACJ,IAAIpkC,EAAkBH,EAEtB,MAAM0kC,EAAkBvnC,GAAUonC,EAAsB,EAAI,EAC5D,OAAIpkC,GAAoB,OAElBskC,IACFtkC,EAAkBskC,EAAgBzkC,CAAS,GAE7CG,EAA+BpkD,EAAM,eAAeokD,CAAe,EAAkBpkD,EAAM,aAAaokD,EAAiB,OAAO,OAAO,CACrI,aAAckkC,EAAc,KACpC,EAASK,CAAe,CAAC,EAAmB3oF,EAAM,cAAc,OAAQ,OAAO,OAAO,CAC9E,aAAcsoF,EAAc,KACpC,EAASK,CAAe,EAAGvkC,CAAe,GAE/B,CAAC,GAAMA,EAAiBymB,EAAoB8d,CAAe,CACpE,EAAG,CAACH,EAAsBD,CAA6B,CAAC,CAC1D,CCnGA,IAAIK,GAAqB,SAA4B57D,EAAW,CAC9D,GAAIvV,GAAS,GAAM,OAAO,SAAS,gBAAiB,CAClD,IAAIoxE,EAAgB,MAAM,QAAQ77D,CAAS,EAAIA,EAAY,CAACA,CAAS,EACjE87D,EAAkB,OAAO,SAAS,gBACtC,OAAOD,EAAc,KAAK,SAAUv2F,EAAM,CACxC,OAAOA,KAAQw2F,EAAgB,KACjC,CAAC,CACH,CACA,MAAO,EACT,EAUO,SAASC,GAAe/7D,EAAWg8D,EAAY,CAIpD,OAAOJ,GAAmB57D,CAAS,CACrC,CCvBO,MAAMi8D,GAAmB,IAAMxxE,GAAS,GAAM,OAAO,SAAS,gBCE/D5N,GAAUxQ,GAAS,CACvB,KAAM,CACJ,UAAA+rC,EACA,UAAAga,EACA,MAAA1jC,EACA,KAAAjO,EACA,MAAAyyD,CACJ,EAAM7mE,EACEq2D,EAAUlqD,GAAW,CACzB,CAAC,GAAG4/B,CAAS,KAAK,EAAG33B,IAAS,QAC9B,CAAC,GAAG23B,CAAS,KAAK,EAAG33B,IAAS,OAClC,CAAG,EACKy7E,EAAW1jF,GAAW,CAC1B,CAAC,GAAG4/B,CAAS,SAAS,EAAG86B,IAAU,SACnC,CAAC,GAAG96B,CAAS,SAAS,EAAG86B,IAAU,SACnC,CAAC,GAAG96B,CAAS,QAAQ,EAAG86B,IAAU,OACtC,CAAG,EACKipB,EAAYnpF,EAAM,QAAQ,IAAM,OAAOyN,GAAS,SAAW,CAC/D,MAAOA,EACP,OAAQA,EACR,WAAY,GAAGA,CAAI,IACvB,EAAM,CAAA,EAAI,CAACA,CAAI,CAAC,EACd,OAAoBzN,EAAM,cAAc,OAAQ,CAC9C,UAAWwF,GAAW4/B,EAAWsqB,EAASw5B,EAAU9pC,CAAS,EAC7D,MAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAI+pC,CAAS,EAAGztE,CAAK,CAC5D,CAAG,CACH,EC5BM0tE,GAAqB,IAAI3wB,GAAU,uBAAwB,CAC/D,KAAM,CACJ,mBAAoB,UACxB,EACE,OAAQ,CACN,mBAAoB,OACxB,CACA,CAAC,EACK4wB,GAA+B57E,IAAS,CAC5C,OAAQA,EACR,WAAY2Q,GAAK3Q,CAAI,CACvB,GACM67E,GAA+B77E,GAAQ,OAAO,OAAO,CACzD,MAAOA,CACT,EAAG47E,GAA6B57E,CAAI,CAAC,EAC/B87E,GAAmBjsE,IAAU,CACjC,WAAYA,EAAM,0BAClB,eAAgB,YAChB,cAAe8rE,GACf,kBAAmB9rE,EAAM,8BACzB,wBAAyB,OACzB,wBAAyB,UAC3B,GACMksE,GAA8B,CAAC/7E,EAAMioB,IAAS,OAAO,OAAO,CAChE,MAAOA,EAAKjoB,CAAI,EAAE,IAAI,CAAC,EAAE,MAAK,EAC9B,SAAUioB,EAAKjoB,CAAI,EAAE,IAAI,CAAC,EAAE,MAAK,CACnC,EAAG47E,GAA6B57E,CAAI,CAAC,EAC/Bg8E,GAA2BnsE,GAAS,CACxC,KAAM,CACJ,kBAAAosE,EACA,kBAAAC,EACA,cAAAzuD,EACA,gBAAA0uD,EACA,gBAAAC,CACJ,EAAMvsE,EACJ,MAAO,CACL,CAACosE,CAAiB,EAAG,OAAO,OAAO,CACjC,QAAS,eACT,cAAe,MACf,WAAYC,CAClB,EAAOL,GAA6BpuD,CAAa,CAAC,EAC9C,CAAC,GAAGwuD,CAAiB,GAAGA,CAAiB,SAAS,EAAG,CACnD,aAAc,KACpB,EACI,CAAC,GAAGA,CAAiB,GAAGA,CAAiB,KAAK,EAAG,OAAO,OAAO,CAAA,EAAIJ,GAA6BM,CAAe,CAAC,EAChH,CAAC,GAAGF,CAAiB,GAAGA,CAAiB,KAAK,EAAG,OAAO,OAAO,CAAA,EAAIJ,GAA6BO,CAAe,CAAC,CACpH,CACA,EACMC,GAA0BxsE,GAAS,CACvC,KAAM,CACJ,cAAA4d,EACA,eAAA6uD,EACA,iBAAAC,EACA,gBAAAJ,EACA,gBAAAC,EACA,kBAAAF,EACA,KAAAj0D,CACJ,EAAMpY,EACJ,MAAO,CACL,CAAC0sE,CAAgB,EAAG,OAAO,OAAO,CAChC,QAAS,eACT,cAAe,MACf,WAAYL,EACZ,aAAcI,CACpB,EAAOP,GAA4BtuD,EAAexF,CAAI,CAAC,EACnD,CAAC,GAAGs0D,CAAgB,KAAK,EAAG,OAAO,OAAO,CAAA,EAAIR,GAA4BI,EAAiBl0D,CAAI,CAAC,EAChG,CAAC,GAAGs0D,CAAgB,KAAK,EAAG,OAAO,OAAO,GAAIR,GAA4BK,EAAiBn0D,CAAI,CAAC,CACpG,CACA,EACMu0D,GAA8Bx8E,GAAQ,OAAO,OAAO,CACxD,MAAOA,CACT,EAAG47E,GAA6B57E,CAAI,CAAC,EAC/By8E,GAA0B5sE,GAAS,CACvC,KAAM,CACJ,iBAAA6sE,EACA,cAAAC,EACA,kBAAAT,EACA,eAAAI,EACA,KAAAr0D,CACJ,EAAMpY,EACJ,MAAO,CACL,CAAC6sE,CAAgB,EAAG,OAAO,OAAO,OAAO,OAAO,CAC9C,QAAS,cACT,WAAY,SACZ,eAAgB,SAChB,cAAe,SACf,WAAYR,EACZ,aAAcI,CACpB,EAAOE,GAA4Bv0D,EAAK00D,CAAa,EAAE,IAAI,CAAC,EAAE,MAAK,CAAE,CAAC,EAAG,CACnE,CAAC,GAAGD,CAAgB,OAAO,EAAG,CAC5B,KAAM,SACd,EACM,CAAC,GAAGA,CAAgB,MAAM,EAAG,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIF,GAA4BG,CAAa,CAAC,EAAG,CACxG,SAAU10D,EAAK00D,CAAa,EAAE,IAAI,CAAC,EAAE,MAAK,EAC1C,UAAW10D,EAAK00D,CAAa,EAAE,IAAI,CAAC,EAAE,MAAK,CACnD,CAAO,EACD,CAAC,GAAGD,CAAgB,OAAOA,CAAgB,aAAa,EAAG,CACzD,aAAc,KACtB,CACA,CAAK,EACD,CAAC,GAAGA,CAAgB,GAAGA,CAAgB,SAAS,EAAG,CACjD,aAAc,KACpB,CACA,CACA,EACME,GAAgC,CAAC/sE,EAAO7P,EAAM68E,IAAc,CAChE,KAAM,CACJ,kBAAAC,CACJ,EAAMjtE,EACJ,MAAO,CACL,CAAC,GAAGgtE,CAAS,GAAGC,CAAiB,SAAS,EAAG,CAC3C,MAAO98E,EACP,SAAUA,EACV,aAAc,KACpB,EACI,CAAC,GAAG68E,CAAS,GAAGC,CAAiB,QAAQ,EAAG,CAC1C,aAAc98E,CACpB,CACA,CACA,EACM+8E,GAA+B,CAAC/8E,EAAMioB,IAAS,OAAO,OAAO,CACjE,MAAOA,EAAKjoB,CAAI,EAAE,IAAI,CAAC,EAAE,MAAK,EAC9B,SAAUioB,EAAKjoB,CAAI,EAAE,IAAI,CAAC,EAAE,MAAK,CACnC,EAAG47E,GAA6B57E,CAAI,CAAC,EAC/Bg9E,GAA2BntE,GAAS,CACxC,KAAM,CACJ,eAAAysE,EACA,kBAAAQ,EACA,cAAArvD,EACA,gBAAA0uD,EACA,gBAAAC,EACA,kBAAAF,EACA,KAAAj0D,CACJ,EAAMpY,EACJ,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAC3E,CAACitE,CAAiB,EAAG,OAAO,OAAO,CACjC,QAAS,eACT,cAAe,MACf,WAAYZ,EACZ,aAAcI,EACd,MAAOr0D,EAAKwF,CAAa,EAAE,IAAI,CAAC,EAAE,MAAK,EACvC,SAAUxF,EAAKwF,CAAa,EAAE,IAAI,CAAC,EAAE,MAAK,CAChD,EAAOsvD,GAA6BtvD,EAAexF,CAAI,CAAC,CACxD,EAAK20D,GAA8B/sE,EAAO4d,EAAeqvD,CAAiB,CAAC,EAAG,CAC1E,CAAC,GAAGA,CAAiB,KAAK,EAAG,OAAO,OAAO,GAAIC,GAA6BZ,EAAiBl0D,CAAI,CAAC,CACtG,CAAG,EAAG20D,GAA8B/sE,EAAOssE,EAAiB,GAAGW,CAAiB,KAAK,CAAC,EAAG,CACrF,CAAC,GAAGA,CAAiB,KAAK,EAAG,OAAO,OAAO,GAAIC,GAA6BX,EAAiBn0D,CAAI,CAAC,CACtG,CAAG,EAAG20D,GAA8B/sE,EAAOusE,EAAiB,GAAGU,CAAiB,KAAK,CAAC,CACtF,EAEMzoC,GAAexkC,GAAS,CAC5B,KAAM,CACJ,aAAA0pB,EACA,kBAAA0iD,EACA,iBAAAgB,EACA,qBAAAC,EACA,kBAAAJ,EACA,iBAAAP,EACA,iBAAAG,EACA,cAAAjvD,EACA,gBAAA0uD,EACA,gBAAAC,EACA,kBAAAF,EACA,QAAAiB,EACA,SAAA3oC,EACA,aAAAlnB,EACA,YAAA8vD,EACA,YAAAC,EACA,kBAAAC,EACA,gBAAAC,EACA,mBAAAC,CACJ,EAAM3tE,EACJ,MAAO,CACL,CAAC0pB,CAAY,EAAG,CACd,QAAS,QACT,MAAO,OACP,CAAC,GAAGA,CAAY,SAAS,EAAG,CAC1B,QAAS,aACT,iBAAkB4jD,EAClB,cAAe,MAEf,CAAClB,CAAiB,EAAG,OAAO,OAAO,CACjC,QAAS,eACT,cAAe,MACf,WAAYC,CACtB,EAAWL,GAA6BpuD,CAAa,CAAC,EAC9C,CAAC,GAAGwuD,CAAiB,SAAS,EAAG,CAC/B,aAAc,KACxB,EACQ,CAAC,GAAGA,CAAiB,KAAK,EAAG,OAAO,OAAO,CAAA,EAAIJ,GAA6BM,CAAe,CAAC,EAC5F,CAAC,GAAGF,CAAiB,KAAK,EAAG,OAAO,OAAO,CAAA,EAAIJ,GAA6BO,CAAe,CAAC,CACpG,EACM,CAAC,GAAG7iD,CAAY,UAAU,EAAG,CAC3B,QAAS,aACT,MAAO,OACP,cAAe,MAEf,CAAC0jD,CAAgB,EAAG,CAClB,MAAO,OACP,OAAQG,EACR,WAAYlB,EACZ,aAAcmB,EACd,CAAC,KAAKH,CAAoB,EAAE,EAAG,CAC7B,iBAAkBd,CAC9B,CACA,EAEQ,CAACc,CAAoB,EAAG,CACtB,QAAS,EACT,OAAQ,CACN,MAAO,OACP,OAAQI,EACR,UAAW,OACX,WAAYpB,EACZ,aAAcmB,EACd,OAAQ,CACN,iBAAkBE,CAChC,CACA,CACA,EACQ,CAAC,GAAGL,CAAoB,sDAAsD,EAAG,CAC/E,MAAO,KACjB,CACA,EACM,CAAC,WAAW3jD,CAAY,UAAU,EAAG,CACnC,CAAC,GAAG0jD,CAAgB,KAAKC,CAAoB,OAAO,EAAG,CACrD,aAAA5vD,CACV,CACA,CACA,EACI,CAAC,GAAGiM,CAAY,gBAAgBA,CAAY,UAAU,EAAG,CAEvD,CAAC0jD,CAAgB,EAAG,CAClB,iBAAkBzoC,EAClB,CAAC,KAAK0oC,CAAoB,EAAE,EAAG,CAC7B,iBAAkBM,CAC5B,CACA,CACA,EAEI,CAAC,GAAGjkD,CAAY,GAAGA,CAAY,UAAU,EAAG,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAClG,QAAS,eACT,MAAO,MACb,EAAOyjD,GAAyBntE,CAAK,CAAC,EAAGmsE,GAAyBnsE,CAAK,CAAC,EAAGwsE,GAAwBxsE,CAAK,CAAC,EAAG4sE,GAAwB5sE,CAAK,CAAC,EAEtI,CAAC,GAAG0pB,CAAY,GAAGA,CAAY,QAAQ,EAAG,CACxC,MAAO,OACP,CAACujD,CAAiB,EAAG,CACnB,MAAO,MACf,EACM,CAACP,CAAgB,EAAG,CAClB,MAAO,MACf,CACA,EAEI,CAAC,GAAGhjD,CAAY,GAAGA,CAAY,SAAS,EAAG,CACzC,CAAC;AAAA,UACG0jD,CAAgB;AAAA,UAChBC,CAAoB;AAAA,UACpBjB,CAAiB;AAAA,UACjBa,CAAiB;AAAA,UACjBP,CAAgB;AAAA,UAChBG,CAAgB;AAAA,OACnB,EAAG,OAAO,OAAO,CAAA,EAAIZ,GAAiBjsE,CAAK,CAAC,CACnD,CACA,CACA,EAoBA4tE,GAAevmD,GAAc,WAAYrnB,GAAS,CAChD,KAAM,CACJ,aAAA0pB,EACA,KAAAtR,CACJ,EAAMpY,EACE6tE,EAAgB5nD,GAAWjmB,EAAO,CACtC,kBAAmB,GAAG0pB,CAAY,UAClC,iBAAkB,GAAGA,CAAY,SACjC,qBAAsB,GAAGA,CAAY,aACrC,kBAAmB,GAAGA,CAAY,UAClC,iBAAkB,GAAGA,CAAY,SACjC,iBAAkB,GAAGA,CAAY,SACjC,cAAetR,EAAKpY,EAAM,aAAa,EAAE,IAAI,GAAG,EAAE,MAAK,EACvD,aAAc,IAEd,0BAA2B,0BAA0BA,EAAM,iBAAiB,SAASA,EAAM,eAAe,SAASA,EAAM,iBAAiB,QAC1I,8BAA+B,MACnC,CAAG,EACD,MAAO,CAACwkC,GAAaqpC,CAAa,CAAC,CACrC,EArCqC7tE,GAAS,CAC5C,KAAM,CACJ,iBAAA8tE,EACA,UAAAC,CACJ,EAAM/tE,EACEqsE,EAAoByB,EACpBE,EAAkBD,EACxB,MAAO,CACL,MAAO1B,EACP,iBAAkB2B,EAClB,kBAAA3B,EACA,gBAAA2B,EACA,YAAahuE,EAAM,cAAgB,EACnC,YAAaA,EAAM,eACnB,mBAAoBA,EAAM,SAAWA,EAAM,UAC3C,kBAAmBA,EAAM,cAAgB,CAC7C,CACA,EAoB0B,CACxB,iBAAkB,CAAC,CAAC,QAAS,mBAAmB,EAAG,CAAC,mBAAoB,iBAAiB,CAAC,CAC5F,CAAC,EC7SKiuE,GAAiBlyF,GAAS,CAC9B,KAAM,CACJ,UAAWukC,EACX,UAAAwhB,EACA,cAAAY,EACA,OAAAjN,EACA,MAAAmtB,EAAQ,SACR,KAAAzyD,EAAO,SACX,EAAMpU,EACE,CACJ,aAAA8kC,CACJ,EAAMn+B,EAAM,WAAW69B,EAAa,EAC5BuH,EAAYjH,EAAa,WAAYP,CAAkB,EACvD,CAAC8H,EAAY1mB,EAAQ2mB,CAAS,EAAIX,GAASI,CAAS,EACpD0f,EAAa+F,GAAKxxD,EAAO,CAAC,YAAa,WAAW,CAAC,EACnDmyF,EAAMhmF,GAAW4/B,EAAW,GAAGA,CAAS,WAAY,CACxD,CAAC,GAAGA,CAAS,SAAS,EAAG2N,CAC7B,EAAKqM,EAAWY,EAAehhC,EAAQ2mB,CAAS,EAC9C,OAAOD,EAAwB1lC,EAAM,cAAc,MAAO,CACxD,UAAWwrF,CACf,EAAkBxrF,EAAM,cAAc6J,GAAS,OAAO,OAAO,CACzD,UAAW,GAAGu7B,CAAS,UACvB,MAAO86B,EACP,KAAMzyD,CACV,EAAKq3C,CAAU,CAAC,CAAC,CAAC,CAClB,ECzBM2mC,GAAiBpyF,GAAS,CAC9B,KAAM,CACJ,UAAWukC,EACX,UAAAwhB,EACA,cAAAY,EACA,OAAAjN,EACA,MAAAqc,EAAQ,GACR,KAAA3hD,EAAO,SACX,EAAMpU,EACE,CACJ,aAAA8kC,CACJ,EAAMn+B,EAAM,WAAW69B,EAAa,EAC5BuH,EAAYjH,EAAa,WAAYP,CAAkB,EACvD,CAAC8H,EAAY1mB,EAAQ2mB,CAAS,EAAIX,GAASI,CAAS,EACpD0f,EAAa+F,GAAKxxD,EAAO,CAAC,WAAW,CAAC,EACtCmyF,EAAMhmF,GAAW4/B,EAAW,GAAGA,CAAS,WAAY,CACxD,CAAC,GAAGA,CAAS,SAAS,EAAG2N,EACzB,CAAC,GAAG3N,CAAS,QAAQ,EAAGgqB,CAC5B,EAAKhQ,EAAWY,EAAehhC,EAAQ2mB,CAAS,EAC9C,OAAOD,EAAwB1lC,EAAM,cAAc,MAAO,CACxD,UAAWwrF,CACf,EAAkBxrF,EAAM,cAAc6J,GAAS,OAAO,OAAO,CACzD,UAAW,GAAGu7B,CAAS,UACvB,KAAM33B,CACV,EAAKq3C,CAAU,CAAC,CAAC,CAAC,CAClB,EC3BMlhE,GAAO,k3BACP8nG,GAAgBryF,GAAS,CAC7B,KAAM,CACJ,UAAWukC,EACX,UAAAwhB,EACA,cAAAY,EACA,MAAAtkC,EACA,OAAAq3B,CACJ,EAAM15C,EACE,CACJ,aAAA8kC,CACJ,EAAMn+B,EAAM,WAAW69B,EAAa,EAC5BuH,EAAYjH,EAAa,WAAYP,CAAkB,EACvD,CAAC8H,EAAY1mB,EAAQ2mB,CAAS,EAAIX,GAASI,CAAS,EACpDomD,EAAMhmF,GAAW4/B,EAAW,GAAGA,CAAS,WAAY,CACxD,CAAC,GAAGA,CAAS,SAAS,EAAG2N,CAC7B,EAAKqM,EAAWY,EAAehhC,EAAQ2mB,CAAS,EAC9C,OAAOD,EAAwB1lC,EAAM,cAAc,MAAO,CACxD,UAAWwrF,CACf,EAAkBxrF,EAAM,cAAc,MAAO,CACzC,UAAWwF,GAAW,GAAG4/B,CAAS,SAAUga,CAAS,EACrD,MAAO1jC,CACX,EAAkB1b,EAAM,cAAc,MAAO,CACzC,QAAS,gBACT,MAAO,6BACP,UAAW,GAAGolC,CAAS,YAC3B,EAAkBplC,EAAM,cAAc,QAAS,KAAM,mBAAmB,EAAgBA,EAAM,cAAc,OAAQ,CAChH,EAAGpc,GACH,UAAW,GAAGwhD,CAAS,aAC3B,CAAG,CAAC,CAAC,CAAC,CAAC,CACP,EC5BMumD,GAAgBtyF,GAAS,CAC7B,KAAM,CACJ,UAAWukC,EACX,UAAAwhB,EACA,cAAAY,EACA,OAAAjN,EACA,MAAAqc,EACA,KAAA3hD,EAAO,SACX,EAAMpU,EACE,CACJ,aAAA8kC,CACJ,EAAMn+B,EAAM,WAAW69B,EAAa,EAC5BuH,EAAYjH,EAAa,WAAYP,CAAkB,EACvD,CAAC8H,EAAY1mB,EAAQ2mB,CAAS,EAAIX,GAASI,CAAS,EACpD0f,EAAa+F,GAAKxxD,EAAO,CAAC,WAAW,CAAC,EACtCmyF,EAAMhmF,GAAW4/B,EAAW,GAAGA,CAAS,WAAY,CACxD,CAAC,GAAGA,CAAS,SAAS,EAAG2N,EACzB,CAAC,GAAG3N,CAAS,QAAQ,EAAGgqB,CAC5B,EAAKhQ,EAAWY,EAAehhC,EAAQ2mB,CAAS,EAC9C,OAAOD,EAAwB1lC,EAAM,cAAc,MAAO,CACxD,UAAWwrF,CACf,EAAkBxrF,EAAM,cAAc6J,GAAS,OAAO,OAAO,CACzD,UAAW,GAAGu7B,CAAS,SACvB,KAAM33B,CACV,EAAKq3C,CAAU,CAAC,CAAC,CAAC,CAClB,EC3BM8mC,GAAevyF,GAAS,CAC5B,KAAM,CACJ,UAAWukC,EACX,UAAAwhB,EACA,cAAAY,EACA,MAAAtkC,EACA,OAAAq3B,EACA,SAAA3sC,CACJ,EAAM/M,EACE,CACJ,aAAA8kC,CACJ,EAAMn+B,EAAM,WAAW69B,EAAa,EAC5BuH,EAAYjH,EAAa,WAAYP,CAAkB,EACvD,CAAC8H,EAAY1mB,EAAQ2mB,CAAS,EAAIX,GAASI,CAAS,EACpDomD,EAAMhmF,GAAW4/B,EAAW,GAAGA,CAAS,WAAY,CACxD,CAAC,GAAGA,CAAS,SAAS,EAAG2N,CAC7B,EAAK/zB,EAAQogC,EAAWY,EAAera,CAAS,EAC9C,OAAOD,EAAwB1lC,EAAM,cAAc,MAAO,CACxD,UAAWwrF,CACf,EAAkBxrF,EAAM,cAAc,MAAO,CACzC,UAAWwF,GAAW,GAAG4/B,CAAS,SAAUga,CAAS,EACrD,MAAO1jC,CACX,EAAKtV,CAAQ,CAAC,CAAC,CACf,ECzBMylF,GAAW,CAACzjG,EAAOiR,IAAU,CACjC,KAAM,CACJ,MAAAuX,EACA,KAAAk7E,EAAO,CACX,EAAMzyF,EACJ,GAAI,MAAM,QAAQuX,CAAK,EACrB,OAAOA,EAAMxoB,CAAK,EAGpB,GAAI0jG,EAAO,IAAM1jG,EACf,OAAOwoB,CAGX,EACMm7E,GAAY1yF,GAAS,CACzB,KAAM,CACJ,UAAA+rC,EACA,UAAAga,EACA,MAAA1jC,EACA,KAAAowE,EAAO,CACX,EAAMzyF,EACE2yF,EAAU,MAAM,KAAK,CACzB,OAAQF,CACZ,CAAG,EAAE,IAAI,CAACr3D,EAAGrsC,IAGX4X,EAAM,cAAc,KAAM,CACxB,IAAK5X,EACL,MAAO,CACL,MAAOyjG,GAASzjG,EAAOiR,CAAK,CAClC,CACA,CAAG,CAAE,EACH,OAAoB2G,EAAM,cAAc,KAAM,CAC5C,UAAWwF,GAAW4/B,EAAWga,CAAS,EAC1C,MAAO1jC,CACX,EAAKswE,CAAO,CACZ,ECnCMC,GAAQ,CAAC,CACb,UAAA7mD,EACA,UAAAga,EACA,MAAAxuC,EACA,MAAA8K,CACF,IAGA1b,EAAM,cAAc,KAAM,CACxB,UAAWwF,GAAW4/B,EAAWga,CAAS,EAC1C,MAAO,OAAO,OAAO,CACnB,MAAAxuC,CACJ,EAAK8K,CAAK,CACV,CAAC,ECJD,SAASwwE,GAAkBjnG,EAAM,CAC/B,OAAIA,GAAQ,OAAOA,GAAS,SACnBA,EAEF,CAAA,CACT,CACA,SAASknG,GAAoBC,EAAUC,EAAc,CACnD,OAAID,GAAY,CAACC,EAER,CACL,KAAM,QACN,MAAO,QACb,EAES,CACL,KAAM,QACN,MAAO,QACX,CACA,CACA,SAASC,GAAmBC,EAAWF,EAAc,CACnD,MAAI,CAACE,GAAaF,EACT,CACL,MAAO,KACb,EAEME,GAAaF,EACR,CACL,MAAO,KACb,EAES,CAAA,CACT,CACA,SAASG,GAAuBD,EAAWH,EAAU,CACnD,MAAMK,EAAa,CAAA,EAEnB,OAAI,CAACF,GAAa,CAACH,KACjBK,EAAW,MAAQ,OAGjB,CAACF,GAAaH,EAChBK,EAAW,KAAO,EAElBA,EAAW,KAAO,EAEbA,CACT,CACA,MAAMC,GAAWrzF,GAAS,CACxB,KAAM,CACJ,UAAWukC,EACX,QAAAozB,EACA,UAAA5R,EACA,cAAAY,EACA,MAAAtkC,EACA,SAAAtV,EACA,OAAA80C,EAAS,GACT,MAAAquB,EAAQ,GACR,UAAAojB,EAAY,GACZ,OAAA55C,EACA,MAAA3e,CACJ,EAAM/6B,EACE,CACJ,aAAA8kC,EACA,UAAAC,EACA,UAAWgnB,EACX,MAAOC,CACX,EAAMrnB,GAAmB,UAAU,EAC3BoH,EAAYjH,EAAa,WAAYP,CAAkB,EACvD,CAAC8H,EAAY1mB,EAAQ2mB,CAAS,EAAIX,GAASI,CAAS,EAC1D,GAAI4rB,GAAW,EAAE,YAAa33D,GAAQ,CACpC,MAAMkzF,EAAY,CAAC,CAACrxC,EACdkxC,EAAW,CAAC,CAAC7iB,EACb8iB,EAAe,CAAC,CAACM,EAEvB,IAAIC,EACJ,GAAIL,EAAW,CACb,MAAMM,EAAc,OAAO,OAAO,OAAO,OAAO,CAC9C,UAAW,GAAGznD,CAAS,SAC/B,EAAS+mD,GAAoBC,EAAUC,CAAY,CAAC,EAAGH,GAAkBhxC,CAAM,CAAC,EAE1E0xC,EAA0B5sF,EAAM,cAAc,MAAO,CACnD,UAAW,GAAGolC,CAAS,SAC/B,EAAsBplC,EAAM,cAAc6J,GAAS,OAAO,OAAO,CAAA,EAAIgjF,CAAW,CAAC,CAAC,CAC9E,CACA,IAAIC,EACJ,GAAIV,GAAYC,EAAc,CAE5B,IAAIU,EACJ,GAAIX,EAAU,CACZ,MAAMY,EAAa,OAAO,OAAO,OAAO,OAAO,CAC7C,UAAW,GAAG5nD,CAAS,QACjC,EAAWknD,GAAmBC,EAAWF,CAAY,CAAC,EAAGH,GAAkB3iB,CAAK,CAAC,EACzEwjB,EAAsB/sF,EAAM,cAAcisF,GAAO,OAAO,OAAO,CAAA,EAAIe,CAAU,CAAC,CAChF,CAEA,IAAIC,EACJ,GAAIZ,EAAc,CAChB,MAAMa,EAAiB,OAAO,OAAO,OAAO,OAAO,CACjD,UAAW,GAAG9nD,CAAS,YACjC,EAAWonD,GAAuBD,EAAWH,CAAQ,CAAC,EAAGF,GAAkBS,CAAS,CAAC,EAC7EM,EAA6BjtF,EAAM,cAAc+rF,GAAW,OAAO,OAAO,CAAA,EAAImB,CAAc,CAAC,CAC/F,CACAJ,EAA2B9sF,EAAM,cAAc,MAAO,CACpD,UAAW,GAAGolC,CAAS,UAC/B,EAAS2nD,EAAQE,CAAa,CAC1B,CACA,MAAMzB,EAAMhmF,GAAW4/B,EAAW,CAChC,CAAC,GAAGA,CAAS,cAAc,EAAGmnD,EAC9B,CAAC,GAAGnnD,CAAS,SAAS,EAAG2N,EACzB,CAAC,GAAG3N,CAAS,MAAM,EAAGhH,IAAc,MACpC,CAAC,GAAGgH,CAAS,QAAQ,EAAGhR,CAC9B,EAAOgxB,EAAkBhG,EAAWY,EAAehhC,EAAQ2mB,CAAS,EAChE,OAAOD,EAAwB1lC,EAAM,cAAc,MAAO,CACxD,UAAWwrF,EACX,MAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAInmC,CAAY,EAAG3pC,CAAK,CACjE,EAAOkxE,EAAYE,CAAW,CAAC,CAC7B,CACA,OAAO1mF,GAAsD,IAC/D,EACAsmF,GAAS,OAASjB,GAClBiB,GAAS,OAASnB,GAClBmB,GAAS,MAAQf,GACjBe,GAAS,MAAQhB,GACjBgB,GAAS,KAAOd,GACZ,QAAQ,IAAI,WAAa,eAC3Bc,GAAS,YAAc,YCxIzB,SAASS,IAAW,CAAC,CACrB,MAAMC,GAAgCptF,EAAM,cAAc,CACxD,IAAKmtF,GACL,OAAQA,EACV,CAAC,EACM,SAASE,GAAYC,EAAe,CACzC,MAAMC,EAAYvtF,EAAM,WAAWotF,EAAgB,EAC7CI,EAAcxtF,EAAM,OAAO,IAAI,EAUrC,OATiBygC,GAASxzB,GAAO,CAC/B,GAAIA,EAAK,CACP,MAAMwgF,EAAkBH,EAAgBrgF,EAAI,cAAcqgF,CAAa,EAAIrgF,EAC3EsgF,EAAU,IAAIE,CAAe,EAC7BD,EAAY,QAAUC,CACxB,MACEF,EAAU,OAAOC,EAAY,OAAO,CAExC,CAAC,CAEH,CCfA,MAAME,GAAkB,IAAM,CAC5B,KAAM,CACJ,kBAAAxpB,EACA,iBAAAC,EACA,SAAAE,CACJ,EAAM5qE,EAAAA,WAAWqqE,EAAY,EAC3B,OAAoB9jE,EAAM,cAAcggE,GAAQ,OAAO,OAAO,CAC5D,QAASqE,CACb,EAAKH,CAAiB,EAAGC,CAAgB,CACzC,ECRMwpB,GAAc,IAAM,CACxB,KAAM,CACJ,eAAAC,EACA,cAAAppB,EACA,OAAAE,EACA,aAAAD,EACA,KAAAE,CACJ,EAAMlrE,EAAAA,WAAWqqE,EAAY,EAC3B,OAAoB9jE,EAAM,cAAcggE,GAAQ,OAAO,OAAO,CAAA,EAAInQ,GAAmB6U,CAAM,EAAG,CAC5F,QAASkpB,EACT,QAASjpB,CACb,EAAKH,CAAa,EAAGC,CAAY,CACjC,ECPO,SAASopB,GAAgBzoD,EAAW6e,EAAW,CACpD,OAAoBjkD,EAAM,cAAc,OAAQ,CAC9C,UAAW,GAAGolC,CAAS,UAC3B,EAAK6e,GAA0BjkD,EAAM,cAAcygD,GAAe,CAC9D,UAAW,GAAGrb,CAAS,aAC3B,CAAG,CAAC,CACJ,CACO,MAAM0oD,GAASz0F,GAAS,CAC7B,KAAM,CACJ,OAAA00F,EACA,OAAArpB,EAAS,UACT,WAAAspB,EACA,eAAAJ,EACA,KAAAjpB,EACA,SAAAN,EACA,cAAAG,EACA,kBAAAN,EACA,OAAAuF,CACJ,EAAMpwE,EACE,CAAC64B,CAAM,EAAIoB,GAAU,QAASF,GAAgB,CAAE,EAEhDqxC,EAAespB,IAAW77D,GAAW,KAA4B,OAASA,EAAO,QACjFiyC,EAAmB6pB,IAAe97D,GAAW,KAA4B,OAASA,EAAO,YAEzF+7D,EAAc,CAClB,eAAAL,EACA,cAAAppB,EACA,kBAAAN,EACA,aAAAO,EACA,iBAAAN,EACA,OAAAO,EACA,KAAAC,EACA,SAAAN,CACJ,EACQ6pB,EAAkBluF,EAAM,QAAQ,IAAMiuF,EAAal4E,GAAmB,OAAO,OAAOk4E,CAAW,CAAC,CAAC,EACvG,IAAIvjB,EACJ,OAAI,OAAOjB,GAAW,YAAc,OAAOA,EAAW,KACpDiB,EAA0B1qE,EAAM,cAAcA,EAAM,SAAU,KAAmBA,EAAM,cAAc0tF,GAAiB,IAAI,EAAgB1tF,EAAM,cAAc2tF,GAAa,IAAI,CAAC,EAC5K,OAAOlkB,GAAW,aACpBiB,EAAajB,EAAOiB,EAAY,CAC9B,MAAOijB,GACP,UAAWD,EACnB,CAAO,GAEHhjB,EAA0B1qE,EAAM,cAAc+jE,GAAsB,CAClE,MAAOmqB,CACb,EAAOxjB,CAAU,GAEbA,EAAajB,EAEKzpE,EAAM,cAAck/B,GAAyB,CAC/D,SAAU,EACd,EAAKwrC,CAAU,CACf,EC7DMyjB,GAAkB7wE,GAAS,CAC/B,KAAM,CACJ,aAAA0pB,CACJ,EAAM1pB,EACJ,MAAO,CAEL,CAAC0pB,CAAY,EAAG,CACd,QAAS,OACT,SAAU,WACV,SAAU,EACV,sBAAuB,CACrB,QAAS,MACjB,EACM,YAAa,CACX,SAAU,QAClB,EAEM,UAAW,CACT,eAAgB,YACxB,EAEM,WAAY,CACV,eAAgB,QACxB,EAEM,QAAS,CACP,eAAgB,UACxB,EACM,kBAAmB,CACjB,eAAgB,eACxB,EACM,iBAAkB,CAChB,eAAgB,cACxB,EACM,iBAAkB,CAChB,eAAgB,cACxB,EAEM,QAAS,CACP,WAAY,YACpB,EAEM,WAAY,CACV,WAAY,QACpB,EACM,WAAY,CACV,WAAY,UACpB,CACA,CACA,CACA,EAEMonD,GAAkB9wE,GAAS,CAC/B,KAAM,CACJ,aAAA0pB,CACJ,EAAM1pB,EACJ,MAAO,CAEL,CAAC0pB,CAAY,EAAG,CACd,SAAU,WACV,SAAU,OAEV,UAAW,CACjB,CACA,CACA,EACMqnD,GAA0B,CAAC/wE,EAAOoyC,IAAY,CAClD,KAAM,CACJ,UAAAtqB,EACA,aAAA4B,EACA,YAAAsnD,CACJ,EAAMhxE,EACEixE,EAAmB,CAAA,EACzB,QAAS/nG,EAAI8nG,EAAa9nG,GAAK,EAAGA,IAC5BA,IAAM,GACR+nG,EAAiB,GAAGvnD,CAAY,GAAG0oB,CAAO,IAAIlpE,CAAC,EAAE,EAAI,CACnD,QAAS,MACjB,EACM+nG,EAAiB,GAAGvnD,CAAY,SAASxgD,CAAC,EAAE,EAAI,CAC9C,iBAAkB,MAC1B,EACM+nG,EAAiB,GAAGvnD,CAAY,SAASxgD,CAAC,EAAE,EAAI,CAC9C,eAAgB,MACxB,EACM+nG,EAAiB,GAAGvnD,CAAY,GAAG0oB,CAAO,SAASlpE,CAAC,EAAE,EAAI,CACxD,iBAAkB,MAC1B,EACM+nG,EAAiB,GAAGvnD,CAAY,GAAG0oB,CAAO,SAASlpE,CAAC,EAAE,EAAI,CACxD,eAAgB,MACxB,EACM+nG,EAAiB,GAAGvnD,CAAY,GAAG0oB,CAAO,WAAWlpE,CAAC,EAAE,EAAI,CAC1D,kBAAmB,CAC3B,EACM+nG,EAAiB,GAAGvnD,CAAY,GAAG0oB,CAAO,UAAUlpE,CAAC,EAAE,EAAI,CACzD,MAAO,CACf,IAEM+nG,EAAiB,GAAGvnD,CAAY,GAAG0oB,CAAO,IAAIlpE,CAAC,EAAE,EAAI,CAIrD,CACG,gBAAkB,QAEnB,QAAS,OACjB,EAAS,CACD,QAAS,qBACT,KAAM,OAAOA,EAAI8nG,EAAc,GAAG,IAClC,SAAU,GAAG9nG,EAAI8nG,EAAc,GAAG,GAC1C,CAAO,EACDC,EAAiB,GAAGvnD,CAAY,GAAG0oB,CAAO,SAASlpE,CAAC,EAAE,EAAI,CACxD,iBAAkB,GAAGA,EAAI8nG,EAAc,GAAG,GAClD,EACMC,EAAiB,GAAGvnD,CAAY,GAAG0oB,CAAO,SAASlpE,CAAC,EAAE,EAAI,CACxD,eAAgB,GAAGA,EAAI8nG,EAAc,GAAG,GAChD,EACMC,EAAiB,GAAGvnD,CAAY,GAAG0oB,CAAO,WAAWlpE,CAAC,EAAE,EAAI,CAC1D,kBAAmB,GAAGA,EAAI8nG,EAAc,GAAG,GACnD,EACMC,EAAiB,GAAGvnD,CAAY,GAAG0oB,CAAO,UAAUlpE,CAAC,EAAE,EAAI,CACzD,MAAOA,CACf,GAIE,OAAA+nG,EAAiB,GAAGvnD,CAAY,GAAG0oB,CAAO,OAAO,EAAI,CACnD,KAAM,SAAStqB,CAAS,GAAGsqB,CAAO,QACtC,EACS6+B,CACT,EACMC,GAAe,CAAClxE,EAAOoyC,IAAY2+B,GAAwB/wE,EAAOoyC,CAAO,EACzE++B,GAAoB,CAACnxE,EAAOoxE,EAAYh/B,KAAa,CACzD,CAAC,sBAAsBtxC,GAAKswE,CAAU,CAAC,GAAG,EAAG,OAAO,OAAO,CAAA,EAAIF,GAAalxE,EAAOoyC,CAAO,CAAC,CAC7F,GACai/B,GAA2B,KAAO,CAAA,GAClCC,GAA2B,KAAO,CAAA,GAElCC,GAAclqD,GAAc,OAAQwpD,GAAiBQ,EAAwB,EAC7EG,GAAexxE,IACJ,CACpB,GAAIA,EAAM,YACV,GAAIA,EAAM,YACV,GAAIA,EAAM,YACV,GAAIA,EAAM,YACV,GAAIA,EAAM,YACV,IAAKA,EAAM,YACf,GAGayxE,GAAcpqD,GAAc,OAAQrnB,GAAS,CACxD,MAAM0xE,EAAYzrD,GAAWjmB,EAAO,CAClC,YAAa,EACjB,CAAG,EACK2xE,EAAoBH,GAAaE,CAAS,EAChD,cAAOC,EAAkB,GAClB,CAACb,GAAgBY,CAAS,EAAGR,GAAaQ,EAAW,EAAE,EAAGR,GAAaQ,EAAW,KAAK,EAAG,OAAO,KAAKC,CAAiB,EAAE,IAAIxrG,GAAOgrG,GAAkBO,EAAWC,EAAkBxrG,CAAG,EAAG,IAAIA,CAAG,EAAE,CAAC,EAAE,OAAO,CAACyrG,EAAKjyD,IAAQ,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIiyD,CAAG,EAAGjyD,CAAG,EAAG,CAAA,CAAE,CAAC,CAClR,EAAG2xD,EAAwB,ECzJ3B,SAASO,GAAIzsF,EAAU,CACrB,MAAO,CACL,SAAAA,EACA,MAAO,CACX,CACA,CACO,MAAM0sF,GAAoB9xE,GAAS,CACxC,KAAM,CACJ,aAAA0pB,EACA,OAAAmnB,CACJ,EAAM7wC,EACJ,MAAO,CAAC,CACN,CAAC,GAAG0pB,CAAY,OAAO,EAAG,CACxB,CAAC,GAAGA,CAAY,GAAGmnB,CAAM,gBAAgBnnB,CAAY,GAAGmnB,CAAM,cAAc,EAAG,CAE7E,UAAW,OACX,QAAS,EACT,kBAAmB7wC,EAAM,mBAEzB,WAAY,MACpB,EAGM,CAAC,GAAG0pB,CAAY,GAAGmnB,CAAM,eAAennB,CAAY,UAAU,EAAG,CAC/D,cAAe,MACvB,EACM,CAAC,GAAGA,CAAY,OAAO,EAAG,OAAO,OAAO,OAAO,OAAO,CAAA,EAAImoD,GAAI,OAAO,CAAC,EAAG,CACvE,OAAQ7xE,EAAM,gBACd,OAAQ,OACR,gBAAiBA,EAAM,YACvB,cAAe,OACf,CAAC,GAAG0pB,CAAY,SAAS,EAAG,CAC1B,QAAS,MACnB,CACA,CAAO,EACD,CAAC,GAAGA,CAAY,OAAO,EAAG,OAAO,OAAO,OAAO,OAAO,CAAA,EAAImoD,GAAI,OAAO,CAAC,EAAG,CACvE,OAAQ7xE,EAAM,gBACd,SAAU,OACV,QAAS,EACT,wBAAyB,OACjC,CAAO,CACP,CACA,EAAK,CACD,CAAC,GAAG0pB,CAAY,OAAO,EAAG2xB,GAAer7C,CAAK,CAClD,CAAG,CACH,EACM+xE,GAAgB/xE,GAAS,CAC7B,KAAM,CACJ,aAAA0pB,CACJ,EAAM1pB,EACJ,MAAO,CAEP,CACE,CAAC,GAAG0pB,CAAY,OAAO,EAAG,CACxB,CAAC,GAAGA,CAAY,WAAW,EAAG,CAC5B,UAAW,KACnB,EACM,CAAC,GAAGA,CAAY,WAAW,EAAG,CAC5B,UAAW,SACX,YAAa,CACX,QAAS,eACT,MAAO,EACP,OAAQ,OACR,cAAe,SACf,QAAS,IACnB,EACQ,CAACA,CAAY,EAAG,CACd,IAAK,EACL,QAAS,eACT,cAAe,EACf,UAAW,QACX,cAAe,QACzB,CACA,EACM,CAAC,sBAAsB1pB,EAAM,WAAW,KAAK,EAAG,CAC9C,CAAC0pB,CAAY,EAAG,CACd,SAAU,qBACV,OAAQ,GAAG5oB,GAAKd,EAAM,QAAQ,CAAC,OACzC,EACQ,CAAC,GAAG0pB,CAAY,WAAW,EAAG,CAC5B,CAACA,CAAY,EAAG,CACd,KAAM,CAClB,CACA,CACA,CACA,CACA,EAEE,CACE,CAACA,CAAY,EAAG,OAAO,OAAO,OAAO,OAAO,GAAIsC,GAAehsB,CAAK,CAAC,EAAG,CACtE,cAAe,OACf,SAAU,WACV,IAAK,IACL,MAAO,OACP,SAAU,gBAAgBc,GAAKd,EAAM,KAAKA,EAAM,MAAM,EAAE,IAAI,CAAC,EAAE,MAAK,CAAE,CAAC,IACvE,OAAQ,SACR,cAAeA,EAAM,UACrB,CAAC,GAAG0pB,CAAY,QAAQ,EAAG,CACzB,OAAQ,EACR,MAAO1pB,EAAM,WACb,WAAYA,EAAM,iBAClB,SAAUA,EAAM,cAChB,WAAYA,EAAM,gBAClB,SAAU,YAClB,EACM,CAAC,GAAG0pB,CAAY,UAAU,EAAG,CAC3B,SAAU,WACV,gBAAiB1pB,EAAM,UACvB,eAAgB,cAChB,OAAQ,EACR,aAAcA,EAAM,eACpB,UAAWA,EAAM,UACjB,cAAe,OACf,QAASA,EAAM,cACvB,EACM,CAAC,GAAG0pB,CAAY,QAAQ,EAAG,OAAO,OAAO,CACvC,SAAU,WACV,IAAK1pB,EAAM,KAAKA,EAAM,iBAAiB,EAAE,IAAIA,EAAM,iBAAiB,EAAE,IAAI,CAAC,EAAE,MAAK,EAClF,eAAgBA,EAAM,KAAKA,EAAM,iBAAiB,EAAE,IAAIA,EAAM,iBAAiB,EAAE,IAAI,CAAC,EAAE,MAAK,EAC7F,OAAQA,EAAM,KAAKA,EAAM,eAAe,EAAE,IAAI,EAAE,EAAE,MAAK,EACvD,QAAS,EACT,MAAOA,EAAM,oBACb,WAAYA,EAAM,iBAClB,WAAY,EACZ,eAAgB,OAChB,WAAY,cACZ,aAAcA,EAAM,eACpB,MAAOA,EAAM,kBACb,OAAQA,EAAM,kBACd,OAAQ,EACR,QAAS,EACT,OAAQ,UACR,WAAY,SAASA,EAAM,iBAAiB,sBAAsBA,EAAM,iBAAiB,GACzF,MAAO,CACL,QAAS,OACT,SAAUA,EAAM,WAChB,UAAW,SACX,WAAYc,GAAKd,EAAM,iBAAiB,EACxC,eAAgB,SAChB,cAAe,OACf,cAAe,MACzB,EACQ,aAAc,CACZ,cAAe,MACzB,EACQ,UAAW,CACT,MAAOA,EAAM,yBACb,gBAAiBA,EAAM,iBACvB,eAAgB,MAC1B,EACQ,WAAY,CACV,gBAAiBA,EAAM,iBACjC,CACA,EAAS6sB,GAAc7sB,CAAK,CAAC,EACvB,CAAC,GAAG0pB,CAAY,SAAS,EAAG,CAC1B,MAAO1pB,EAAM,UACb,WAAYA,EAAM,SAClB,aAAc,GAAGc,GAAKd,EAAM,cAAc,CAAC,IAAIc,GAAKd,EAAM,cAAc,CAAC,OACzE,aAAcA,EAAM,mBACpB,QAASA,EAAM,cACf,aAAcA,EAAM,kBAC5B,EACM,CAAC,GAAG0pB,CAAY,OAAO,EAAG,CACxB,SAAU1pB,EAAM,SAChB,WAAYA,EAAM,WAClB,SAAU,aACV,QAASA,EAAM,YACf,CAAC,GAAG0pB,CAAY,gBAAgB,EAAG,CACjC,MAAO,OACP,OAAQ,OACR,QAAS,OACT,eAAgB,SAChB,WAAY,SACZ,OAAQ,GAAG5oB,GAAKd,EAAM,MAAM,CAAC,OACvC,CACA,EACM,CAAC,GAAG0pB,CAAY,SAAS,EAAG,CAC1B,UAAW,MACX,WAAY1pB,EAAM,SAClB,UAAWA,EAAM,gBACjB,QAASA,EAAM,cACf,UAAWA,EAAM,gBACjB,aAAcA,EAAM,mBACpB,CAAC,KAAKA,EAAM,MAAM,UAAUA,EAAM,MAAM,MAAM,EAAG,CAC/C,kBAAmBA,EAAM,QACnC,CACA,EACM,CAAC,GAAG0pB,CAAY,OAAO,EAAG,CACxB,SAAU,QAClB,CACA,CAAK,CACL,EAEE,CACE,CAAC,GAAGA,CAAY,aAAa,EAAG,CAC9B,IAAK,OACL,QAAS,EACT,QAAS,OACT,cAAe,SACf,CAAC,GAAGA,CAAY;AAAA,YACVA,CAAY;AAAA,YACZA,CAAY,uBAAuB,EAAG,CAC1C,QAAS,OACT,cAAe,SACf,KAAM,MACd,EACM,CAAC,GAAGA,CAAY,eAAe,EAAG,CAChC,aAAc,MACtB,CACA,CACA,CAAG,CACH,EACMsoD,GAAchyE,GAAS,CAC3B,KAAM,CACJ,aAAA0pB,CACJ,EAAM1pB,EACJ,MAAO,CACL,CAAC,GAAG0pB,CAAY,OAAO,EAAG,CACxB,CAAC,GAAGA,CAAY,WAAW,EAAG,CAC5B,UAAW,MACX,CAAC,GAAGA,CAAY,eAAe,EAAG,CAChC,UAAW,KACrB,CACA,CACA,CACA,CACA,EACMuoD,GAA0BjyE,GAAS,CACvC,KAAM,CACJ,aAAA0pB,CACJ,EAAM1pB,EACE2xE,EAAoBH,GAAaxxE,CAAK,EAC5C,OAAO2xE,EAAkB,GACzB,MAAMO,EAAmB,OAAO,KAAKP,CAAiB,EAAE,IAAIxrG,IAAQ,CAClE,CAAC,sBAAsB26B,GAAK6wE,EAAkBxrG,CAAG,CAAC,CAAC,GAAG,EAAG,CACvD,MAAO,SAASujD,EAAa,QAAQ,IAAK,EAAE,CAAC,IAAIvjD,CAAG,SAC1D,CACA,EAAI,EACF,MAAO,CACL,CAAC,GAAGujD,CAAY,OAAO,EAAG,CACxB,CAACA,CAAY,EAAG,CAAC,CACf,MAAO,SAASA,EAAa,QAAQ,IAAK,EAAE,CAAC,YACrD,CAAO,EAAE,OAAOjxB,GAAmBy5E,CAAgB,CAAC,CACpD,CACA,CACA,EAEax0B,GAAe19C,GAAS,CACnC,MAAMmyE,EAAwBnyE,EAAM,QAC9BoyE,EAAiBpyE,EAAM,iBACvBqyE,EAAmBryE,EAAM,mBAY/B,OAXmBimB,GAAWjmB,EAAO,CACnC,kBAAmBA,EAAM,KAAKA,EAAM,KAAKqyE,CAAgB,EAAE,IAAID,CAAc,EAAE,MAAK,CAAE,EAAE,IAAIpyE,EAAM,KAAKmyE,CAAqB,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,MAAK,EACnJ,4BAA6BnyE,EAAM,WACnC,uBAAwBA,EAAM,SAC9B,uBAAwBA,EAAM,UAC9B,oBAAqBA,EAAM,UAC3B,yBAA0BA,EAAM,eAChC,kBAAmBA,EAAM,cACzB,qBAAsBA,EAAM,WAC5B,iBAAkBA,EAAM,KAAKA,EAAM,aAAa,EAAE,IAAIA,EAAM,eAAe,EAAE,MAAK,CACtF,CAAG,CAEH,EACa69C,GAAwB79C,IAAU,CAC7C,SAAU,cACV,SAAUA,EAAM,gBAChB,gBAAiBA,EAAM,mBACvB,cAAeA,EAAM,iBACrB,UAAWA,EAAM,gBACjB,WAAYA,EAAM,iBAElB,eAAgBA,EAAM,UAAY,EAAI,GAAGc,GAAKd,EAAM,SAAS,CAAC,IAAIc,GAAKd,EAAM,0BAA0B,CAAC,GACxG,cAAeA,EAAM,UAAY,GAAGc,GAAKd,EAAM,OAAO,CAAC,IAAIc,GAAKd,EAAM,SAAS,CAAC,GAAK,EACrF,mBAAoBA,EAAM,UAAY,GAAGc,GAAKd,EAAM,SAAS,CAAC,IAAIA,EAAM,QAAQ,IAAIA,EAAM,UAAU,GAAK,OACzG,mBAAoBA,EAAM,UAAY,EAAIA,EAAM,SAChD,YAAaA,EAAM,UAAYA,EAAM,UAAY,EACjD,cAAeA,EAAM,UAAY,GAAGc,GAAKd,EAAM,SAAS,CAAC,IAAIc,GAAKd,EAAM,OAAO,CAAC,GAAK,EACrF,gBAAiBA,EAAM,UAAY,GAAGc,GAAKd,EAAM,SAAS,CAAC,IAAIA,EAAM,QAAQ,IAAIA,EAAM,UAAU,GAAK,OACtG,mBAAoBA,EAAM,UAAY,OAAOc,GAAKd,EAAM,cAAc,CAAC,IAAIc,GAAKd,EAAM,cAAc,CAAC,GAAK,EAC1G,gBAAiBA,EAAM,UAAY,EAAIA,EAAM,SAC7C,mBAAoBA,EAAM,UAAY,GAAGc,GAAKd,EAAM,QAAU,CAAC,CAAC,IAAIc,GAAKd,EAAM,QAAU,CAAC,CAAC,IAAIc,GAAKd,EAAM,SAAS,CAAC,GAAK,EACzH,2BAA4BA,EAAM,UAAYA,EAAM,OAASA,EAAM,SACnE,qBAAsBA,EAAM,UAAYA,EAAM,SAAWA,EAAM,QACjE,GACAsyE,GAAejrD,GAAc,QAASrnB,GAAS,CAC7C,MAAMuyE,EAAa70B,GAAa19C,CAAK,EACrC,MAAO,CAAC+xE,GAAcQ,CAAU,EAAGP,GAAYO,CAAU,EAAGT,GAAkBS,CAAU,EAAGh1B,GAAeg1B,EAAY,MAAM,EAAGN,GAAwBM,CAAU,CAAC,CACpK,EAAG10B,GAAuB,CACxB,SAAU,CACR,gBAAiB,EACrB,CACA,CAAC,ECxSD,IAAIhzB,GAAgC,SAAU/kD,EAAGe,EAAG,CAClD,IAAId,EAAI,CAAA,EACR,QAASe,KAAKhB,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGgB,CAAC,GAAKD,EAAE,QAAQC,CAAC,EAAI,IAAGf,EAAEe,CAAC,EAAIhB,EAAEgB,CAAC,GAC/F,GAAIhB,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WAAY,QAAS,EAAI,EAAGgB,EAAI,OAAO,sBAAsBhB,CAAC,EAAG,EAAIgB,EAAE,OAAQ,IAClID,EAAE,QAAQC,EAAE,CAAC,CAAC,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKhB,EAAGgB,EAAE,CAAC,CAAC,IAAGf,EAAEe,EAAE,CAAC,CAAC,EAAIhB,EAAEgB,EAAE,CAAC,CAAC,GAElG,OAAOf,CACT,EAkBA,IAAI4nF,GAEJ,MAAM6kB,GAAmB,GAAK,CAC5B7kB,GAAgB,CACd,EAAG,EAAE,MACL,EAAG,EAAE,KACT,EAIE,WAAW,IAAM,CACfA,GAAgB,IAClB,EAAG,GAAG,CACR,EAEIge,MACF,SAAS,gBAAgB,iBAAiB,QAAS6G,GAAkB,EAAI,EAE3E,MAAMC,GAAQ12F,GAAS,CACrB,KAAM,CACF,UAAWukC,EACX,UAAAwhB,EACA,cAAAY,EACA,KAAAonB,EACA,cAAA2E,EACA,SAAAikB,EACA,aAAA93E,EACA,uBAAA2zD,EAAyB,GACzB,MAAAnwD,EAEA,QAAAo0B,EACA,MAAAl/B,EAAQ,IACR,OAAA64D,EACA,WAAYQ,EACZ,OAAQC,EACR,SAAA9jE,EACA,QAAA4qD,EACA,eAAA48B,EACA,OAAQqC,EACR,cAAeC,EACf,KAAAvrB,EACA,SAAAN,EACA,gBAAA8rB,EACA,eAAAnlB,CACN,EAAQ3xE,EACJu9C,EAAYzO,GAAO9uC,EAAO,CAAC,YAAa,YAAa,gBAAiB,OAAQ,gBAAiB,WAAY,eAAgB,yBAA0B,QAAS,UAAW,QAAS,SAAU,aAAc,SAAU,WAAY,UAAW,iBAAkB,SAAU,gBAAiB,OAAQ,WAAY,kBAAmB,gBAAgB,CAAC,EAC5U,CACJ,kBAAmB+2F,EACnB,aAAAjyD,EACA,UAAAC,EACA,MAAOiyD,CACX,EAAMrwF,EAAM,WAAW69B,EAAa,EAC5ByyD,EAAensG,IAAK,CACpBypG,GAGJvpB,GAAa,MAAuCA,EAASlgF,EAAC,CAChE,EACMosG,EAAWpsG,IAAK,CACpBwgF,GAAS,MAAmCA,EAAKxgF,EAAC,CACpD,EACA,GAAI,QAAQ,IAAI,WAAa,aAAc,CACzC,MAAMsiB,GAAUirB,GAAc,OAAO,EACrC,CAAC,CAAC,UAAW,MAAM,EAAG,CAAC,YAAa,aAAa,EAAG,CAAC,YAAa,aAAa,EAAG,CAAC,iBAAkB,iBAAiB,CAAC,EAAE,QAAQ,CAAC,CAAC8+D,EAAgBC,EAAO,IAAM,CAC9JhqF,GAAQ,WAAW,EAAE+pF,KAAkBn3F,GAAQm3F,EAAgBC,EAAO,CACxE,CAAC,CACH,CACA,MAAMrrD,EAAYjH,EAAa,QAASP,CAAkB,EACpD2I,EAAgBpI,EAAY,EAE5BkH,EAAU4gB,GAAa7gB,CAAS,EAChC,CAACM,EAAY1mB,EAAQ2mB,CAAS,EAAIX,GAASI,EAAWC,CAAO,EAC7DqrD,EAAwBlrF,GAAWumE,EAAe,CACtD,CAAC,GAAG3mC,CAAS,WAAW,EAAG4qD,IAAsDK,GAAiB,KAAkC,OAASA,EAAa,UAC1J,CAAC,GAAGjrD,CAAS,WAAW,EAAGhH,IAAc,KAC7C,CAAG,EACKuyD,EAAelnB,IAAW,MAAQ,CAACzY,EAAwBhxD,EAAM,cAAc8tF,GAAQ,OAAO,OAAO,CAAA,EAAIz0F,EAAO,CACpH,KAAMk3F,EACN,SAAUD,CACd,CAAG,CAAC,EAAK,KACD,CAACM,EAAgBxsC,EAAiBymB,EAAoB1mB,EAAS,EAAI6jC,GAAYL,GAAatuF,CAAK,EAAGsuF,GAAa0I,CAAY,EAAG,CACpI,SAAU,GACV,UAAwBrwF,EAAM,cAAcygD,GAAe,CACzD,UAAW,GAAGrb,CAAS,aAC7B,CAAK,EACD,gBAAiB+Z,IAAQ0uC,GAAgBzoD,EAAW+Z,EAAI,CAC5D,CAAG,EAGKgrB,GAAWkjB,GAAY,IAAIjoD,CAAS,UAAU,EAE9C,CAAC6hB,GAAQ4pC,EAAa,EAAIjqC,GAAU,QAASqpC,CAAe,EAE5D,CAACa,GAAUC,CAAe,EAAI/wF,EAAM,QAAQ,IAC5C4Q,GAAS,OAAOA,GAAU,SACrB,CAAC,OAAWA,CAAK,EAEnB,CAACA,EAAO,MAAS,EACvB,CAACA,CAAK,CAAC,EACJogF,EAAsBhxF,EAAM,QAAQ,IAAM,CAC9C,MAAMixF,GAAO,CAAA,EACb,OAAIF,GACF,OAAO,KAAKA,CAAe,EAAE,QAAQG,GAAc,CACjD,MAAMC,GAAkBJ,EAAgBG,CAAU,EAC9CC,KAAoB,SACtBF,GAAK,KAAK7rD,CAAS,IAAI8rD,CAAU,QAAQ,EAAI,OAAOC,IAAoB,SAAW,GAAGA,EAAe,KAAOA,GAEhH,CAAC,EAEIF,EACT,EAAG,CAACF,CAAe,CAAC,EAEpB,OAAOrrD,EAAwB1lC,EAAM,cAAcwnF,GAAiB,CAClE,KAAM,GACN,MAAO,EACX,EAAkBxnF,EAAM,cAAcqmD,GAAc,SAAU,CAC1D,MAAOwqC,EACX,EAAkB7wF,EAAM,cAAcyrE,GAAQ,OAAO,OAAO,CACxD,MAAOqlB,EACX,EAAKl6C,EAAW,CACZ,OAAQqQ,GACR,aAAc/uC,IAAiB,OAAYk4E,EAA2Bl4E,EACtE,UAAWktB,EACX,cAAe5/B,GAAWwZ,EAAQghC,EAAera,EAAWN,CAAO,EACnE,OAAQsrD,EACR,QAASvpB,GAA0Ct3B,EACnD,cAAeogD,GAAgGjlB,GAC/G,QAASqlB,EACT,SAAUM,GAAiB,OAAO,OAAO,CACvC,SAAU/lB,EACV,UAAWzmB,CACjB,EAAOD,EAAS,EACZ,UAAWC,EACX,uBAAwBynB,EACxB,eAAgB/9B,GAAkBvH,EAAe,OAAQltC,EAAM,cAAc,EAC7E,mBAAoBy0C,GAAkBvH,EAAe,OAAQltC,EAAM,kBAAkB,EACrF,UAAWmM,GAAWwZ,EAAQogC,EAAWixC,GAAiB,KAAkC,OAASA,EAAa,SAAS,EAC3H,MAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,GAAIA,GAAiB,KAAkC,OAASA,EAAa,KAAK,EAAG30E,CAAK,EAAGs1E,CAAmB,EACjK,WAAY,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIX,GAAiB,KAAkC,OAASA,EAAa,UAAU,EAAGpmB,CAAe,EAAG,CAChK,QAASzkE,GAAWkrF,EAAuBzmB,GAAoB,KAAqC,OAASA,EAAgB,OAAO,CAC1I,CAAK,EACD,OAAQ,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIomB,GAAiB,KAAkC,OAASA,EAAa,MAAM,EAAGnmB,CAAW,EACrI,SAAUC,GAEV,eAAgBgmB,GAA2EnlB,CAC/F,CAAG,EAAGha,EAAwBhxD,EAAM,cAAc0sF,GAAU,CACxD,OAAQ,GACR,MAAO,GACP,UAAW,CACT,KAAM,CACZ,EACI,UAAW,GAAGtnD,CAAS,gBAC3B,CAAG,EAAKh/B,CAAQ,CAAC,CAAC,CAAC,CACnB,EC9KMgrF,GAAuB9zE,GAAS,CACpC,KAAM,CACJ,aAAA0pB,EACA,cAAAqqD,EACA,gBAAAC,EACA,qBAAAC,EACA,SAAAn2D,EACA,WAAAc,EACA,iBAAAs1D,EACA,WAAAC,EACA,mBAAAC,CACJ,EAAMp0E,EACEq0E,EAAsB,GAAG3qD,CAAY,WAC3C,MAAO,CACL,CAAC2qD,CAAmB,EAAG,CACrB,QAAS,CACP,UAAW,KACnB,EACM,CAAC,GAAGr0E,EAAM,MAAM,eAAe,EAAG,CAChC,QAAS,MACjB,EACM,CAAC,GAAGq0E,CAAmB,eAAe,EAAG,OAAO,OAAO,CAAA,EAAIloD,IAAU,EACrE,CAAC,IAAIzC,CAAY,IAAIA,CAAY,OAAO,EAAG,CACzC,QAAS0qD,CACjB,EAEM,CAAC,GAAGC,CAAmB,OAAO,EAAG,CAC/B,QAAS,OACT,SAAU,SACV,WAAY,QACZ,CAAC,KAAKr0E,EAAM,OAAO,EAAE,EAAG,CACtB,KAAM,OACN,SAAUi0E,EACV,gBAAiBj0E,EAAM,2BACvB,UAAWA,EAAM,KAAKA,EAAM,KAAKm0E,CAAU,EAAE,IAAIF,CAAoB,EAAE,MAAK,CAAE,EAAE,IAAI,CAAC,EAAE,MAAK,CACtG,EACQ,CAAC,iBAAiBj0E,EAAM,OAAO,EAAE,EAAG,CAClC,UAAWA,EAAM,KAAKA,EAAM,KAAKk0E,CAAgB,EAAE,IAAID,CAAoB,EAAE,MAAK,CAAE,EAAE,IAAI,CAAC,EAAE,MAAK,CAC5G,CACA,EACM,CAAC,GAAGI,CAAmB,YAAY,EAAG,CACpC,QAAS,OACT,cAAe,SACf,KAAM,OACN,OAAQr0E,EAAM,SAEd,SAAU,eAAec,GAAKd,EAAM,QAAQ,CAAC,GACrD,EAEM,CAAC,GAAGA,EAAM,OAAO,MAAMq0E,CAAmB,YAAY,EAAG,CACvD,SAAU,eAAevzE,GAAKd,EAAM,KAAKA,EAAM,oBAAoB,EAAE,IAAIA,EAAM,QAAQ,EAAE,MAAK,CAAE,CAAC,GACzG,EACM,CAAC,GAAGq0E,CAAmB,QAAQ,EAAG,CAChC,MAAOr0E,EAAM,iBACb,WAAYA,EAAM,iBAClB,SAAU+zE,EACV,WAAYC,CACpB,EACM,CAAC,GAAGK,CAAmB,UAAU,EAAG,CAClC,MAAOr0E,EAAM,UACb,SAAA8d,EACA,WAAAc,CACR,EAEM,CAAC,GAAGy1D,CAAmB,OAAO,EAAG,CAC/B,UAAW,MACX,UAAWr0E,EAAM,qBACjB,CAAC,GAAGA,EAAM,MAAM,UAAUA,EAAM,MAAM,MAAM,EAAG,CAC7C,aAAc,EACd,kBAAmBA,EAAM,QACnC,CACA,CACA,EACI,CAAC,GAAGq0E,CAAmB,UAAUA,CAAmB,WAAWr0E,EAAM,OAAO,EAAE,EAAG,CAC/E,MAAOA,EAAM,UACnB,EACI,CAAC,GAAGq0E,CAAmB,YAAYA,CAAmB,WAAWr0E,EAAM,OAAO;AAAA,UACxEq0E,CAAmB,YAAYA,CAAmB,WAAWr0E,EAAM,OAAO,EAAE,EAAG,CACnF,MAAOA,EAAM,YACnB,EACI,CAAC,GAAGq0E,CAAmB,SAASA,CAAmB,WAAWr0E,EAAM,OAAO,EAAE,EAAG,CAC9E,MAAOA,EAAM,SACnB,EACI,CAAC,GAAGq0E,CAAmB,YAAYA,CAAmB,WAAWr0E,EAAM,OAAO,EAAE,EAAG,CACjF,MAAOA,EAAM,YACnB,CACA,CACA,EAEAs0E,GAAezqD,GAAqB,CAAC,QAAS,SAAS,EAAG7pB,GAAS,CACjE,MAAMuyE,EAAa70B,GAAa19C,CAAK,EACrC,MAAO,CAAC8zE,GAAqBvB,CAAU,CAAC,CAC1C,EAAG10B,GAAuB,CAExB,MAAO,IACT,CAAC,EClGD,IAAIhzB,GAAgC,SAAU/kD,EAAGe,EAAG,CAClD,IAAId,EAAI,CAAA,EACR,QAASe,KAAKhB,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGgB,CAAC,GAAKD,EAAE,QAAQC,CAAC,EAAI,IAAGf,EAAEe,CAAC,EAAIhB,EAAEgB,CAAC,GAC/F,GAAIhB,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WAAY,QAAS,EAAI,EAAGgB,EAAI,OAAO,sBAAsBhB,CAAC,EAAG,EAAIgB,EAAE,OAAQ,IAClID,EAAE,QAAQC,EAAE,CAAC,CAAC,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKhB,EAAGgB,EAAE,CAAC,CAAC,IAAGf,EAAEe,EAAE,CAAC,CAAC,EAAIhB,EAAEgB,EAAE,CAAC,CAAC,GAElG,OAAOf,CACT,EAkBO,SAASwuG,GAAex4F,EAAO,CACpC,KAAM,CACF,UAAA+rC,EACA,KAAA+Z,EACA,OAAA4uC,EACA,WAAAC,EACA,iBAAA8D,EACA,KAAA9qG,EACA,SAAA+qG,EACA,OAAAtoB,EAEA,OAAQuoB,CACd,EAAQ34F,EACJ44F,EAAa9pD,GAAO9uC,EAAO,CAAC,YAAa,OAAQ,SAAU,aAAc,mBAAoB,OAAQ,WAAY,SAAU,QAAQ,CAAC,EACtI,GAAI,QAAQ,IAAI,WAAa,aAAc,CACzC,MAAMoN,EAAUirB,GAAc,OAAO,EACrC,QAAQ,IAAI,WAAa,cAAejrB,EAAQ,EAAE,OAAO04C,GAAS,UAAYA,EAAK,OAAS,GAAI,WAAY,8EAA8EA,CAAI,0CAA0C,CAC1O,CAEA,IAAI+yC,EAAa/yC,EAEjB,GAAI,CAACA,GAAQA,IAAS,KACpB,OAAQn4D,EAAI,CACV,IAAK,OACHkrG,EAA0BlyF,EAAM,cAAc6gD,GAAkB,IAAI,EACpE,MACF,IAAK,UACHqxC,EAA0BlyF,EAAM,cAAc29C,GAAmB,IAAI,EACrE,MACF,IAAK,QACHu0C,EAA0BlyF,EAAM,cAAcugD,GAAmB,IAAI,EACrE,MACF,QACE2xC,EAA0BlyF,EAAM,cAAc2gD,GAAyB,IAAI,CACnF,CAGE,MAAMyjB,EAAiB2tB,GAAsD/qG,IAAS,UAChFi9E,EAAkB5qE,EAAM,kBAAoB,KAAO,GAAQA,EAAM,iBAAmB,KACpF,CAAC64B,CAAM,EAAIoB,GAAU,OAAO,EAC5B6+D,EAAeH,GAAgB9/D,EAE/BuyC,EAAespB,IAAW3pB,EAAiB+tB,GAAiB,KAAkC,OAASA,EAAa,OAASA,GAAiB,KAAkC,OAASA,EAAa,YACtMhuB,EAAmB6pB,IAAemE,GAAiB,KAAkC,OAASA,EAAa,YAE3GlE,EAAc,OAAO,OAAO,CAChC,gBAAAhqB,EACA,iBAAAE,EACA,aAAAM,EACA,eAAAL,CACJ,EAAK6tB,CAAU,EACP/D,EAAkBluF,EAAM,QAAQ,IAAMiuF,EAAal4E,GAAmB,OAAO,OAAOk4E,CAAW,CAAC,CAAC,EAEjGmE,EAAgCpyF,EAAM,cAAcA,EAAM,SAAU,KAAmBA,EAAM,cAAcqyF,GAAW,IAAI,EAAgBryF,EAAM,cAAcsyF,GAAO,IAAI,CAAC,EAC1KlG,EAAW/yF,EAAM,QAAU,QAAaA,EAAM,QAAU,KACxDk5F,EAAU,GAAGT,CAAgB,QACnC,OAAoB9xF,EAAM,cAAc,MAAO,CAC7C,UAAW,GAAG8xF,CAAgB,eAClC,EAAkB9xF,EAAM,cAAc,MAAO,CACzC,UAAWwF,GAAW+sF,EAAS,CAC7B,CAAC,GAAGA,CAAO,YAAY,EAAGnG,CAChC,CAAK,CACL,EAAK8F,EAAyBlyF,EAAM,cAAc,MAAO,CACrD,UAAW,GAAG8xF,CAAgB,YAClC,EAAK1F,GAAyBpsF,EAAM,cAAc,OAAQ,CACtD,UAAW,GAAG8xF,CAAgB,QAClC,EAAKz4F,EAAM,KAAK,EAAgB2G,EAAM,cAAc,MAAO,CACvD,UAAW,GAAG8xF,CAAgB,UAClC,EAAKz4F,EAAM,OAAO,CAAC,CAAC,EAAGowE,IAAW,QAAa,OAAOA,GAAW,WAA2BzpE,EAAM,cAAc+jE,GAAsB,CAClI,MAAOmqB,CACX,EAAkBluF,EAAM,cAAc,MAAO,CACzC,UAAW,GAAG8xF,CAAgB,OAClC,EAAK,OAAOroB,GAAW,WAAaA,EAAO2oB,EAAkB,CAC7D,MAAIE,GACJ,UAAID,EACJ,CAAG,EAAID,CAAgB,CAAC,EAAK3oB,EAAqBzpE,EAAM,cAAc4xF,GAAS,CAC3E,UAAWxsD,CACf,CAAG,CAAC,CACJ,CACA,MAAMotD,GAAgBn5F,GAAS,CAC7B,KAAM,CACJ,MAAA+pE,EACA,OAAAnc,EACA,UAAAylB,EACA,UAAAtuC,EACA,UAAAgH,EACA,cAAA2mC,EACA,cAAAxlC,EACA,UAAAojC,EACA,SAAA/kB,EAAW,GACX,UAAA0f,EACA,OAAAt0D,CACJ,EAAM3W,EACJ,GAAI,QAAQ,IAAI,WAAa,aAAc,CACzC,MAAMoN,EAAUirB,GAAc,OAAO,EACrC,CAAC,CAAC,UAAW,MAAM,EAAG,CAAC,YAAa,aAAa,EAAG,CAAC,YAAa,aAAa,CAAC,EAAE,QAAQ,CAAC,CAAC8+D,EAAgBC,CAAO,IAAM,CACvHhqF,EAAQ,WAAW,EAAE+pF,KAAkBn3F,GAAQm3F,EAAgBC,CAAO,CACxE,CAAC,CACH,CACA,MAAMqB,EAAmB,GAAG1sD,CAAS,WAC/Bx0B,EAAQvX,EAAM,OAAS,IACvBqiB,EAAQriB,EAAM,OAAS,CAAA,EACvBgzE,EAAOhzE,EAAM,OAAS,OAAY,GAAOA,EAAM,KAE/CozE,EAAepzE,EAAM,eAAiB,OAAY,GAAQA,EAAM,aAChE4mD,EAAcz6C,GAAWssF,EAAkB,GAAGA,CAAgB,IAAIz4F,EAAM,IAAI,GAAI,CACpF,CAAC,GAAGy4F,CAAgB,MAAM,EAAG1zD,IAAc,KAC/C,EAAK/kC,EAAM,SAAS,EAEZ,CAAA,CAAGikB,CAAK,EAAIgnB,GAAQ,EACpBmuD,EAAezyF,EAAM,QAAQ,IAC7BinD,IAAW,OACNA,EAGF3pC,EAAM,gBAAkBipC,GAC9B,CAACU,EAAQ3pC,CAAK,CAAC,EAElB,OAAoBtd,EAAM,cAAc+vF,GAAO,OAAO,OAAO,CAAA,EAAI12F,EAAO,CACtE,UAAW4mD,EACX,cAAez6C,GAAW,CACxB,CAAC,GAAGssF,CAAgB,WAAW,EAAG,CAAC,CAACz4F,EAAM,QAChD,EAAO0yE,CAAa,EAChB,SAAU,IAAM,CACd3I,GAAU,MAAoCA,EAAM,CAClD,cAAe,EACvB,CAAO,EACDkB,GAAc,MAAwCA,EAAU,EAAK,CACvE,EACA,MAAO,GACP,OAAQ,KACR,eAAgBx2B,GAAkBvH,GAAiB,GAAI,OAAQltC,EAAM,cAAc,EACnF,mBAAoBy0C,GAAkBvH,GAAiB,GAAI,OAAQltC,EAAM,kBAAkB,EAC3F,KAAMgzE,EACN,aAAcI,EACd,MAAO/wD,EACP,OAAQ,OAAO,OAAO,CACpB,KAAMiuD,EACN,KAAM+C,CACZ,EAAO18D,CAAM,EACT,MAAOY,EACP,OAAQ6hF,EACR,SAAU7tC,CACd,CAAG,EAAgB5kD,EAAM,cAAc6xF,GAAgB,OAAO,OAAO,CAAA,EAAIx4F,EAAO,CAC5E,iBAAkBy4F,CACtB,CAAG,CAAC,CAAC,CACL,EACMY,GAAuBr5F,GAAS,CACpC,KAAM,CACJ,cAAAktC,EACA,cAAAC,EACA,UAAApI,EACA,MAAAjb,CACJ,EAAM9pB,EACJ,OAAoB2G,EAAM,cAAcy9C,GAAgB,CACtD,UAAWlX,EACX,cAAeC,EACf,UAAWpI,EACX,MAAOjb,CACX,EAAkBnjB,EAAM,cAAcwyF,GAAe,OAAO,OAAO,CAAA,EAAIn5F,CAAK,CAAC,CAAC,CAC9E,EACI,QAAQ,IAAI,WAAa,eAC3Bm5F,GAAc,YAAc,gBAC5BE,GAAqB,YAAc,wBC/LrC,MAAMC,GAAa,CAAA,ECUnB,IAAIC,GAAuB,GAC3B,SAASC,IAAmB,CAC1B,OAAOD,EACT,CACA,MAAMF,GAAuBr5F,GAAS,CACpC,IAAInS,EAAID,EACR,KAAM,CACJ,UAAW22C,EACX,aAAA1lB,EACA,UAAAkmB,CACJ,EAAM/kC,EACEu5B,EAAgBQ,GAAgB,EAChC7yB,EAAS9G,EAAAA,WAAWokC,EAAa,EACjC0I,EAAgBssD,MAAsBtyF,EAAO,aAAY,EAEzD6kC,EAAYxH,GAAsB,GAAG2I,CAAa,SACxD,IAAIusD,EAAqB56E,EACzB,OAAI46E,IAAuB,KACzBA,EAAqB,OACjB,QAAQ,IAAI,WAAa,cAC3B,QAAQ,IAAI,WAAa,cAAersF,GAAQ,GAAO,QAAS,0FAA0F,GAG1IzG,EAAM,cAAcwyF,GAAe,OAAO,OAAO,CAAA,EAAIn5F,EAAO,CAC9E,cAAektC,EACf,UAAWnB,EACX,cAAe7kC,EAAO,cACtB,MAAOA,EAAO,MACd,UAAW69B,GAAyD79B,EAAO,UAC3E,QAAStZ,GAAMC,EAAKqZ,EAAO,UAAY,MAAQrZ,IAAO,OAAS,OAASA,EAAG,SAAW,MAAQD,IAAO,OAASA,EAAK2rC,EACnH,aAAckgE,CAClB,CAAG,CAAC,CACJ,EACe,SAASC,GAAQxyF,EAAQ,CACtC,MAAMyyF,EAAS16C,GAAY,EACvB,QAAQ,IAAI,WAAa,cAAgB,CAAC06C,EAAO,cACnDp7C,GAAY,OAAO,EAErB,MAAMr/B,EAAY,SAAS,uBAAsB,EACjD,IAAIwkC,EAAgB,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIx8C,CAAM,EAAG,CAC3D,MAAA6iE,EACA,KAAM,EACV,CAAG,EACGO,EACAsvB,EACJ,SAAStZ,KAAW5yF,EAAM,CACxB,IAAIG,EAEJ,GADsBH,EAAK,KAAKmsG,GAASA,GAAU,KAA2B,OAASA,EAAM,aAAa,EACvF,CACjB,IAAIC,GACHjsG,EAAKqZ,EAAO,YAAc,MAAQrZ,IAAO,SAAmBisG,EAAMjsG,GAAI,KAAK,MAAMisG,EAAK,CAAC5yF,EAAQ,IAAM,CAAC,CAAC,EAAE,OAAOwV,GAAmBhvB,EAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CACrJ,CACA,QAASP,EAAI,EAAGA,EAAImsG,GAAW,OAAQnsG,IAErC,GADWmsG,GAAWnsG,CAAC,IACZ48E,EAAO,CAChBuvB,GAAW,OAAOnsG,EAAG,CAAC,EACtB,KACF,CAEFysG,EAAY,CACd,CACA,SAASrpC,EAAOvwD,EAAO,CACrB,aAAasqE,CAAS,EAMtBA,EAAY,WAAW,IAAM,CAC3B,MAAMp9B,EAAgBysD,EAAO,aAAa,OAAWH,GAAgB,CAAE,EACjErsD,EAAgBwsD,EAAO,iBAAgB,EACvC7vE,EAAQ6vE,EAAO,SAAQ,EACvBI,EAAmBpzF,EAAM,cAAc0yF,GAAsB,OAAO,OAAO,GAAIr5F,CAAK,CAAC,EAE3F45F,EADoBroC,GAAiB,EACG5qD,EAAM,cAAcy9C,GAAgB,CAC1E,UAAWlX,EACX,cAAeC,EACf,MAAOrjB,CACf,EAAS6vE,EAAO,aAAeA,EAAO,aAAaI,CAAG,EAAIA,CAAG,EAAG76E,CAAS,CACrE,CAAC,CACH,CACA,SAAS6qD,KAASr8E,EAAM,CACtBg2D,EAAgB,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIA,CAAa,EAAG,CAC9D,KAAM,GACN,WAAY,IAAM,CACZ,OAAOx8C,EAAO,YAAe,YAC/BA,EAAO,WAAU,EAGnBo5E,EAAQ,MAAM,KAAM5yF,CAAI,CAC1B,CACN,CAAK,EAEGg2D,EAAc,SAChB,OAAOA,EAAc,QAEvB6M,EAAO7M,CAAa,CACtB,CACA,SAASs2C,EAAOC,EAAc,CACxB,OAAOA,GAAiB,WAC1Bv2C,EAAgBu2C,EAAav2C,CAAa,EAE1CA,EAAgB,OAAO,OAAO,OAAO,OAAO,GAAIA,CAAa,EAAGu2C,CAAY,EAE9E1pC,EAAO7M,CAAa,CACtB,CACA,OAAA6M,EAAO7M,CAAa,EACpB41C,GAAW,KAAKvvB,CAAK,EACd,CACL,QAASA,EACT,OAAAiwB,CACJ,CACA,CACO,SAASE,GAASl6F,EAAO,CAC9B,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIA,CAAK,EAAG,CAC7C,KAAM,SACV,CAAG,CACH,CACO,SAASm6F,GAASn6F,EAAO,CAC9B,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIA,CAAK,EAAG,CAC7C,KAAM,MACV,CAAG,CACH,CACO,SAASo6F,GAAYp6F,EAAO,CACjC,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIA,CAAK,EAAG,CAC7C,KAAM,SACV,CAAG,CACH,CACO,SAASq6F,GAAUr6F,EAAO,CAC/B,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIA,CAAK,EAAG,CAC7C,KAAM,OACV,CAAG,CACH,CACO,SAASs6F,GAAYt6F,EAAO,CACjC,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIA,CAAK,EAAG,CAC7C,KAAM,SACV,CAAG,CACH,CACO,SAASu6F,GAAkB,CAChC,cAAArtD,CACF,EAAG,CACD,QAAQ,IAAI,WAAa,cAAe9/B,GAAQ,GAAO,QAAS,uEAAuE,EACvImsF,GAAuBrsD,CACzB,CCtJA,IAAI4B,GAAgC,SAAU/kD,EAAGe,EAAG,CAClD,IAAId,EAAI,CAAA,EACR,QAASe,KAAKhB,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGgB,CAAC,GAAKD,EAAE,QAAQC,CAAC,EAAI,IAAGf,EAAEe,CAAC,EAAIhB,EAAEgB,CAAC,GAC/F,GAAIhB,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WAAY,QAAS,EAAI,EAAGgB,EAAI,OAAO,sBAAsBhB,CAAC,EAAG,EAAIgB,EAAE,OAAQ,IAClID,EAAE,QAAQC,EAAE,CAAC,CAAC,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKhB,EAAGgB,EAAE,CAAC,CAAC,IAAGf,EAAEe,EAAE,CAAC,CAAC,EAAIhB,EAAEgB,EAAE,CAAC,CAAC,GAElG,OAAOf,CACT,EAMA,MAAMwwG,GAAY,CAAC3sG,EAAI4R,IAAQ,CAC7B,IAAI7R,EACA,CACA,WAAY6sG,EACZ,OAAAvzF,CACN,EAAQrZ,EACJ0vD,EAAYzO,GAAOjhD,EAAI,CAAC,aAAc,QAAQ,CAAC,EACjD,KAAM,CAACkgF,EAAM2sB,CAAO,EAAI/zF,EAAM,SAAS,EAAI,EACrC,CAACg0F,EAAaC,CAAc,EAAIj0F,EAAM,SAASO,CAAM,EACrD,CACJ,UAAA69B,EACA,aAAAD,CACJ,EAAMn+B,EAAM,WAAW69B,EAAa,EAC5BuH,EAAYjH,EAAa,OAAO,EAChCoI,EAAgBpI,EAAY,EAC5BumB,EAAa,IAAM,CACvB,IAAIx9D,EACJ4sG,EAAc,GACb5sG,EAAK8sG,EAAY,cAAgB,MAAQ9sG,IAAO,QAAkBA,EAAG,KAAK8sG,CAAW,CACxF,EACM5wB,EAAQ,IAAIr8E,IAAS,CACzB,IAAIG,EAGJ,GAFA6sG,EAAQ,EAAK,EACShtG,EAAK,KAAKmsG,GAASA,GAAU,KAA2B,OAASA,EAAM,aAAa,EACvF,CACjB,IAAIC,GACHjsG,EAAK8sG,EAAY,YAAc,MAAQ9sG,IAAO,SAAmBisG,EAAMjsG,GAAI,KAAK,MAAMisG,EAAK,CAACa,EAAa,IAAM,CAAC,CAAC,EAAE,OAAOj+E,GAAmBhvB,EAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAC/J,CACF,EACAiZ,EAAM,oBAAoBlH,EAAK,KAAO,CACpC,QAASsqE,EACT,OAAQ8wB,GAAa,CACnBD,EAAeE,GAAgB,CAC7B,MAAMC,EAAa,OAAOF,GAAc,WAAaA,EAAUC,CAAY,EAAID,EAC/E,OAAO,OAAO,OAAO,OAAO,OAAO,GAAIC,CAAY,EAAGC,CAAU,CAClE,CAAC,CACH,CACJ,EAAI,EACF,MAAMhwB,GAAkBn9E,EAAK+sG,EAAY,YAAc,MAAQ/sG,IAAO,OAASA,EAAK+sG,EAAY,OAAS,UACnG,CAAC1L,CAAa,EAAIh1D,GAAU,QAAST,GAAc,KAAK,EAC9D,OAAoB7yB,EAAM,cAAcwyF,GAAe,OAAO,OAAO,CACnE,UAAWptD,EACX,cAAemB,CACnB,EAAKytD,EAAa,CACd,MAAO5wB,EACP,KAAMgE,EACN,WAAY1iB,EACZ,OAAQsvC,EAAY,SAAW5vB,EAAiBkkB,GAAkB,KAAmC,OAASA,EAAc,OAASA,GAAkB,KAAmC,OAASA,EAAc,YACjN,UAAW0L,EAAY,WAAa51D,EACpC,WAAY41D,EAAY,aAAe1L,GAAkB,KAAmC,OAASA,EAAc,WACvH,EAAK1xC,CAAS,CAAC,CACf,EACAy9C,GAA4Br0F,EAAM,WAAW6zF,EAAS,EC5DtD,IAAIz2E,GAAO,EACX,MAAMk3E,GAA8Bt0F,EAAM,KAAkBA,EAAM,WAAW,CAACu0F,EAAQz7F,IAAQ,CAC5F,KAAM,CAACuuD,EAAUE,CAAY,EAAIH,GAAe,EAChDpnD,OAAAA,EAAM,oBAAoBlH,EAAK,KAAO,CACpC,aAAAyuD,CACJ,GAAM,CAAA,CAAE,EACcvnD,EAAM,cAAcA,EAAM,SAAU,KAAMqnD,CAAQ,CACxE,CAAC,CAAC,EACF,SAASmtC,IAAW,CAClB,MAAMxqB,EAAYhqE,EAAM,OAAO,IAAI,EAE7B,CAACy0F,EAAaC,CAAc,EAAI10F,EAAM,SAAS,CAAA,CAAE,EACvDA,EAAM,UAAU,IAAM,CAChBy0F,EAAY,SACK1+E,GAAmB0+E,CAAW,EACtC,QAAQxzF,GAAU,CAC3BA,EAAM,CACR,CAAC,EACDyzF,EAAe,CAAA,CAAE,EAErB,EAAG,CAACD,CAAW,CAAC,EAEhB,MAAME,EAAiB30F,EAAM,YAAY40F,GAAY,SAAqBr0F,EAAQ,CAChF,IAAIrZ,EACJk2B,IAAQ,EACR,MAAMy3E,EAAwB70F,EAAM,UAAS,EAE7C,IAAI80F,EACJ,MAAMjyG,EAAU,IAAI,QAAQC,GAAW,CACrCgyG,EAAiBhyG,CACnB,CAAC,EACD,IAAIiyG,EAAS,GACTC,EACJ,MAAM36C,EAAqBr6C,EAAM,cAAc6zF,GAAW,CACxD,IAAK,SAASz2E,EAAI,GAClB,OAAQw3E,EAASr0F,CAAM,EACvB,IAAKs0F,EACL,WAAY,IAAM,CAChBG,GAAc,MAAwCA,EAAS,CACjE,EACA,SAAU,IAAMD,EAChB,UAAWE,GAAa,CACtBH,EAAeG,CAAS,CAC1B,CACN,CAAK,EACD,OAAAD,GAAa9tG,EAAK8iF,EAAU,WAAa,MAAQ9iF,IAAO,OAAS,OAASA,EAAG,aAAamzD,CAAK,EAC3F26C,GACFrC,GAAW,KAAKqC,CAAS,EAEV,CACf,QAAS,IAAM,CACb,SAASE,GAAgB,CACvB,IAAIhuG,GACHA,EAAK2tG,EAAS,WAAa,MAAQ3tG,IAAO,QAAkBA,EAAG,QAAO,CACzE,CACI2tG,EAAS,QACXK,EAAa,EAEbR,EAAe39F,GAAQ,CAAA,EAAG,OAAOgf,GAAmBhf,CAAI,EAAG,CAACm+F,CAAa,CAAC,CAAC,CAE/E,EACA,OAAQhB,GAAa,CACnB,SAASiB,GAAe,CACtB,IAAIjuG,GACHA,EAAK2tG,EAAS,WAAa,MAAQ3tG,IAAO,QAAkBA,EAAG,OAAOgtG,CAAS,CAClF,CACIW,EAAS,QACXM,EAAY,EAEZT,EAAe39F,GAAQ,CAAA,EAAG,OAAOgf,GAAmBhf,CAAI,EAAG,CAACo+F,CAAY,CAAC,CAAC,CAE9E,EACA,KAAMryG,IACJiyG,EAAS,GACFlyG,EAAQ,KAAKC,CAAO,EAEnC,CAEE,EAAG,CAAA,CAAE,EAQL,MAAO,CAPKkd,EAAM,QAAQ,KAAO,CAC/B,KAAM20F,EAAenB,EAAQ,EAC7B,QAASmB,EAAelB,EAAW,EACnC,MAAOkB,EAAejB,EAAS,EAC/B,QAASiB,EAAepB,EAAQ,EAChC,QAASoB,EAAehB,EAAW,CACvC,GAAM,CAAA,CAAE,EACoB3zF,EAAM,cAAcs0F,GAAgB,CAC5D,IAAK,eACL,IAAKtqB,CACT,CAAG,CAAC,CACJ,CC7FO,SAASorB,GAAoBv+C,EAAW,CAC7C,OAAOx9C,GAAuB2G,EAAM,cAAcy9C,GAAgB,CAChE,MAAO,CACL,MAAO,CACL,OAAQ,GACR,gBAAiB,CACzB,CACA,CACA,EAAkBz9C,EAAM,cAAc62C,EAAW,OAAO,OAAO,CAAA,EAAIx9C,CAAK,CAAC,CAAC,CAC1E,CAEA,MAAMg8F,GAAe,CAACx+C,EAAWy+C,EAAeC,EAAWh4D,EAAkBi4D,IAuEpEJ,GAtEW/7F,GAAS,CACzB,KAAM,CACJ,UAAWukC,EACX,MAAAliB,CACN,EAAQriB,EACE2wE,EAAYhqE,EAAM,OAAO,IAAI,EAC7B,CAACy1F,EAAaC,CAAc,EAAI11F,EAAM,SAAS,CAAC,EAChD,CAAC21F,EAAYC,CAAa,EAAI51F,EAAM,SAAS,CAAC,EAC9C,CAAConE,EAAM2sB,CAAO,EAAI1yD,GAAe,GAAO,CAC5C,MAAOhoC,EAAM,IACnB,CAAK,EACK,CACJ,aAAA8kC,CACN,EAAQn+B,EAAM,WAAW69B,EAAa,EAC5BuH,EAAYjH,EAAiC,SAAUP,CAAkB,EAC/E59B,EAAM,UAAU,IAAM,CAGpB,GADA+zF,EAAQ,EAAI,EACR,OAAO,eAAmB,IAAa,CACzC,MAAMxhF,EAAiB,IAAI,eAAetE,GAAW,CACnD,MAAMP,EAAUO,EAAQ,CAAC,EAAE,OAC3BynF,EAAehoF,EAAQ,aAAe,CAAC,EACvCkoF,EAAcloF,EAAQ,WAAW,CACnC,CAAC,EACKtK,EAAW,YAAY,IAAM,CACjC,IAAIlc,EACJ,MAAM2uG,EAAiE,IAAIzwD,CAAS,YAC9E0wD,GAAS5uG,EAAK8iF,EAAU,WAAa,MAAQ9iF,IAAO,OAAS,OAASA,EAAG,cAAc2uG,CAAW,EACpGC,IACF,cAAc1yF,CAAQ,EACtBmP,EAAe,QAAQujF,CAAK,EAEhC,EAAG,EAAE,EACL,MAAO,IAAM,CACX,cAAc1yF,CAAQ,EACtBmP,EAAe,WAAU,CAC3B,CACF,CACF,EAAG,CAAA,CAAE,EACL,IAAImiC,EAAc,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIr7C,CAAK,EAAG,CACxD,MAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIqiB,CAAK,EAAG,CAC7C,OAAQ,CAChB,CAAO,EACD,KAAA0rD,EACA,QAASA,EACT,kBAAmB,IAAM4C,EAAU,OACzC,CAAK,EAKC,OAAO,OAAOt1B,EAAa,CACzB,CAAC4gD,CAAa,EAAG,CACf,SAAU,CACR,QAAS,GACT,QAAS,EACrB,CACA,CACA,CAAO,EAEH,MAAMrpE,EAAc,CAClB,cAAewpE,EACf,SAAU,WACV,SAAUE,CAChB,EACI,OAAoB31F,EAAM,cAAc,MAAO,CAC7C,IAAKgqE,EACL,MAAO/9C,CACb,EAAoBjsB,EAAM,cAAc62C,EAAW,OAAO,OAAO,CAAA,EAAInC,CAAW,CAAC,CAAC,CAChF,CACoC,ECvFtCqhD,GAAgB,UAAY,CAC1B,GAAI,OAAO,UAAc,KAAe,OAAO,OAAW,IACxD,MAAO,GAET,IAAIC,EAAQ,UAAU,WAAa,UAAU,QAAU,OAAO,MAC9D,MAAO,sVAAsV,KAAKA,CAAK,GAAK,4hDAA4hD,KAAKA,GAAU,KAA2B,OAASA,EAAM,OAAO,EAAG,CAAC,CAAC,CAC/8D,ECJA,IAAIC,GAAW,SAAkB58F,EAAO,CACtC,IAAI+lD,EAAY/lD,EAAM,UACpB68F,EAAgB78F,EAAM,cACtB88F,EAAqB98F,EAAM,mBAC3B+M,EAAW/M,EAAM,SACjB+8F,EAAe/8F,EAAM,YACrBgmD,EAAUhmD,EAAM,QACd8lD,EAAO,OAAO+2C,GAAkB,WAAaA,EAAcC,CAAkB,EAAID,EACrF,OAAoBl2F,EAAM,cAAc,OAAQ,CAC9C,UAAWo/C,EACX,YAAa,SAAqBt3D,EAAO,CACvCA,EAAM,eAAc,EACpBsuG,GAAiB,MAAmCA,EAAatuG,CAAK,CACxE,EACA,MAAO,CACL,WAAY,OACZ,iBAAkB,MACxB,EACI,aAAc,KACd,QAASu3D,EACT,cAAe,EACnB,EAAKF,IAAS,OAAYA,EAAoBn/C,EAAM,cAAc,OAAQ,CACtE,UAAWwF,GAAW45C,EAAU,MAAM,KAAK,EAAE,IAAI,SAAUosC,EAAK,CAC9D,MAAO,GAAG,OAAOA,EAAK,OAAO,CAC/B,CAAC,CAAC,CACN,EAAKplF,CAAQ,CAAC,CACd,ECzBWiwF,GAAgB,SAAuBjxD,EAAWkxD,EAAkBC,EAAeC,EAAYC,EAAW,CACnH,IAAI5iF,EAAW,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC/E6iF,EAAoB,UAAU,OAAS,EAAI,UAAU,CAAC,EAAI,OAC1DC,EAAO,UAAU,OAAS,EAAI,UAAU,CAAC,EAAI,OAC7CC,EAAkB52F,EAAM,QAAQ,UAAY,CAC9C,GAAI8F,GAAQ0wF,CAAU,IAAM,SAC1B,OAAOA,EAAW,UAEpB,GAAIC,EACF,OAAOA,CAEX,EAAG,CAACD,EAAYC,CAAS,CAAC,EACtBI,EAAmB72F,EAAM,QAAQ,UAAY,CAC/C,MAAI,IAAC6T,GAAc2iF,IAAeD,EAAc,QAAUG,IAAsB,EAAEC,IAAS,YAAcD,IAAsB,IAIjI,EAAG,CAACF,EAAY3iF,EAAU0iF,EAAc,OAAQG,EAAmBC,CAAI,CAAC,EACxE,MAAO,CACL,WAAYE,EACZ,UAAwB72F,EAAM,cAAci2F,GAAU,CACpD,UAAW,GAAG,OAAO7wD,EAAW,QAAQ,EACxC,YAAakxD,EACb,cAAeM,CACrB,EAAO,GAAM,CACb,CACA,ECvBWE,GAAiC92F,EAAM,cAAc,IAAI,EACrD,SAAS+2F,IAAe,CACrC,OAAO/2F,EAAM,WAAW82F,EAAiB,CAC3C,CCFe,SAASE,IAAgB,CACtC,IAAIzyF,EAAU,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC9Ew8B,EAAkB/gC,EAAM,SAAS,EAAK,EACxCghC,EAAmB7pB,GAAe4pB,EAAiB,CAAC,EACpDk2D,EAAOj2D,EAAiB,CAAC,EACzBk2D,EAAUl2D,EAAiB,CAAC,EAC1Bm2D,EAAWn3F,EAAM,OAAO,IAAI,EAC5Bo3F,EAAe,UAAwB,CACzC,OAAO,aAAaD,EAAS,OAAO,CACtC,EACAn3F,EAAM,UAAU,UAAY,CAC1B,OAAOo3F,CACT,EAAG,CAAA,CAAE,EACL,IAAIC,EAAe,SAAsBzyG,EAAOwO,EAAU,CACxDgkG,EAAY,EACZD,EAAS,QAAU,OAAO,WAAW,UAAY,CAC/CD,EAAQtyG,CAAK,EACTwO,GACFA,EAAQ,CAEZ,EAAGmR,CAAO,CACZ,EACA,MAAO,CAAC0yF,EAAMI,EAAcD,CAAY,CAC1C,CCtBe,SAASE,IAAU,CAChC,IAAIv1C,EAAW,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,IAC/Ew1C,EAAUv3F,EAAM,OAAO,IAAI,EAC3Bw3F,EAAax3F,EAAM,OAAO,IAAI,EAGlCA,EAAM,UAAU,UAAY,CAC1B,OAAO,UAAY,CACjB,OAAO,aAAaw3F,EAAW,OAAO,CACxC,CACF,EAAG,CAAA,CAAE,EACL,SAASC,EAAOC,EAAQ,EAClBA,GAAUH,EAAQ,UAAY,QAChCA,EAAQ,QAAUG,GAEpB,OAAO,aAAaF,EAAW,OAAO,EACtCA,EAAW,QAAU,OAAO,WAAW,UAAY,CACjDD,EAAQ,QAAU,IACpB,EAAGx1C,CAAQ,CACb,CACA,MAAO,CAAC,UAAY,CAClB,OAAOw1C,EAAQ,OACjB,EAAGE,CAAM,CACX,CC9Be,SAASE,GAAwBtwC,EAAU+f,EAAMwwB,EAAaC,EAAmB,CAC9F,IAAIrjF,EAAWxU,EAAM,OAAO,IAAI,EAChCwU,EAAS,QAAU,CACjB,KAAM4yD,EACN,YAAawwB,EACb,kBAAmBC,CACvB,EACE73F,EAAM,UAAU,UAAY,CAC1B,SAAS83F,EAAkBhwG,EAAO,CAChC,IAAI4sB,EAEJ,GAAK,GAAAA,EAAoBF,EAAS,WAAa,MAAQE,IAAsB,QAAUA,EAAkB,mBAGzG,KAAI5vB,EAASgD,EAAM,OACfhD,EAAO,YAAcgD,EAAM,WAC7BhD,EAASgD,EAAM,eAAe,CAAC,GAAKhD,GAElC0vB,EAAS,QAAQ,MAAQ6yC,EAAQ,EAAG,OAAO,SAAU35C,EAAS,CAChE,OAAOA,CACT,CAAC,EAAE,MAAM,SAAUA,EAAS,CAC1B,MAAO,CAACA,EAAQ,SAAS5oB,CAAM,GAAK4oB,IAAY5oB,CAClD,CAAC,GAEC0vB,EAAS,QAAQ,YAAY,EAAK,EAEtC,CACA,cAAO,iBAAiB,YAAasjF,CAAiB,EAC/C,UAAY,CACjB,OAAO,OAAO,oBAAoB,YAAaA,CAAiB,CAClE,CACF,EAAG,CAAA,CAAE,CACP,CC9BO,SAASC,GAAkBC,EAAgB,CAChD,OAGEA,GAEA,CAAC,CAED9xC,GAAQ,IAAKA,GAAQ,MAAOA,GAAQ,UAAWA,GAAQ,IAAKA,GAAQ,QAASA,GAAQ,IAAKA,GAAQ,KAAMA,GAAQ,cAAeA,GAAQ,KAAMA,GAAQ,UAAWA,GAAQ,OAAQA,GAAQ,UAAWA,GAAQ,aAE3MA,GAAQ,GAAIA,GAAQ,GAAIA,GAAQ,GAAIA,GAAQ,GAAIA,GAAQ,GAAIA,GAAQ,GAAIA,GAAQ,GAAIA,GAAQ,GAAIA,GAAQ,GAAIA,GAAQ,IAAKA,GAAQ,IAAKA,GAAQ,GAAG,EAAE,SAAS8xC,CAAc,CAE9K,CCZA,IAAIrsD,GAAY,CAAC,YAAa,aAAc,OAAQ,aAAc,aAAc,qBAAsB,eAAgB,UAAW,YAAa,QAAS,WAAY,UAAW,QAAS,WAAW,EAK9LssD,GAAY,OAChB,SAASC,GAAa7+F,EAAOP,EAAK,CAChC,IAAIssC,EAAY/rC,EAAM,UACpB8+F,EAAa9+F,EAAM,WACnB8jB,EAAO9jB,EAAM,KACb++F,EAAa/+F,EAAM,WACnBg/F,EAAah/F,EAAM,WACnBi/F,EAAqBj/F,EAAM,mBAC3Bk/F,EAAel/F,EAAM,aACrBm/F,EAAUn/F,EAAM,QAChB+lD,EAAY/lD,EAAM,UAClBqiB,EAAQriB,EAAM,MACd+M,EAAW/M,EAAM,SACjBo/F,EAAUp/F,EAAM,QAChBqE,EAAQrE,EAAM,MACdq/F,EAAmBr/F,EAAM,UACzBw9C,EAAY6hD,IAAqB,OAAS,MAAQA,EAClD9hD,EAAY38B,GAAyB5gB,EAAOsyC,EAAS,EACnDgtD,EAAeN,GAAc,CAACI,EAGlC,SAASG,EAAqBhoF,EAAO,CACnC2nF,EAAaC,EAAS5nF,CAAK,CAC7B,CACA5Q,EAAM,UAAU,UAAY,CAC1B,OAAO,UAAY,CACjB44F,EAAqB,IAAI,CAC3B,CACF,EAAG,CAAA,CAAE,EAGL,IAAI17C,EAAYk7C,GAAcj7E,IAAS86E,GAAYG,EAAWj7E,EAAM,CAClE,MAAOzf,CACX,CAAG,EAAI0I,EACDyyF,EACCV,IACHU,EAAgB,CACd,QAASF,EAAe,EAAI,EAC5B,OAAQA,EAAe,EAAIV,GAC3B,UAAWU,EAAe,SAAWV,GACrC,MAAOI,EAAa36F,EAAQu6F,GAC5B,cAAeU,EAAe,OAASV,GACvC,SAAUU,EAAe,WAAaV,EAC5C,GAEE,IAAIa,EAAgB,CAAA,EAChBH,IACFG,EAAc,aAAa,EAAI,IAEjC,IAAIC,EAAwB/4F,EAAM,cAAc62C,EAAWhxC,GAAS,CAClE,UAAWL,GAAW,CAAC2yF,GAAc/yD,EAAWga,CAAS,EACzD,MAAOjqC,EAAcA,EAAc,CAAA,EAAI0jF,CAAa,EAAGn9E,CAAK,CAChE,EAAKo9E,EAAeliD,EAAW,CAC3B,IAAK99C,CACT,CAAG,EAAGokD,CAAS,EACb,OAAIm7C,IACFU,EAAwB/4F,EAAM,cAAckS,GAAgB,CAC1D,SAAU,SAAkBxW,EAAM,CAChC,IAAIkZ,EAAclZ,EAAK,YACvBk9F,EAAqBhkF,CAAW,CAClC,EACA,SAAU0jF,CAChB,EAAOS,CAAQ,GAENA,CACT,CACA,IAAIC,GAAoBh5F,EAAM,WAAWk4F,EAAY,EACrDc,GAAK,YAAc,OC1EJ,SAASC,GAAc7lG,EAAU,CAC9C,GAAI,OAAO,eAAmB,IAC5BgjB,GAAIhjB,CAAQ,MACP,CACL,IAAI8lG,EAAU,IAAI,eAClBA,EAAQ,MAAM,UAAY,UAAY,CACpC,OAAO9lG,EAAQ,CACjB,EACA8lG,EAAQ,MAAM,YAAY,MAAS,CACrC,CACF,CCHO,SAASC,IAAa,CAE3B,IAAIC,EAAgBp5F,EAAM,OAAO,IAAI,EAGjCq5F,EAAqB,SAA4BjmG,EAAU,CACxDgmG,EAAc,UACjBA,EAAc,QAAU,CAAA,EACxBH,GAAc,UAAY,CACxBK,GAAAA,wBAAwB,UAAY,CAClCF,EAAc,QAAQ,QAAQ,SAAUtnG,EAAI,CAC1CA,EAAE,CACJ,CAAC,EACDsnG,EAAc,QAAU,IAC1B,CAAC,CACH,CAAC,GAEHA,EAAc,QAAQ,KAAKhmG,CAAQ,CACrC,EACA,OAAOimG,CACT,CAKe,SAASE,GAAeF,EAAoB1uG,EAAc,CAEvE,IAAIo2C,EAAkB/gC,EAAM,SAASrV,CAAY,EAC/Cq2C,EAAmB7pB,GAAe4pB,EAAiB,CAAC,EACpDy4D,EAAax4D,EAAiB,CAAC,EAC/By4D,EAAgBz4D,EAAiB,CAAC,EAGhC04D,EAAej5D,GAAS,SAAUtlB,EAAW,CAC/Ck+E,EAAmB,UAAY,CAC7BI,EAAct+E,CAAS,CACzB,CAAC,CACH,CAAC,EACD,MAAO,CAACq+E,EAAYE,CAAY,CAClC,CC9CO,IAAIC,GAA+B35F,EAAM,cAAc,IAAI,ECC9D2rC,GAAY,CAAC,WAAW,EAC1BqK,GAAa,CAAC,WAAW,EACzB4jD,GAAa,CAAC,WAAW,EAKvBC,GAAkB,SAAyBxgG,EAAOP,EAAK,CACzD,IAAIolC,EAAUl+B,EAAM,WAAW25F,EAAe,EAG9C,GAAI,CAACz7D,EAAS,CACZ,IAAIw6D,EAAmBr/F,EAAM,UAC3Bw9C,EAAY6hD,IAAqB,OAAS,MAAQA,EAClDoB,EAAa7/E,GAAyB5gB,EAAOsyC,EAAS,EACxD,OAAoB3rC,EAAM,cAAc62C,EAAWhxC,GAAS,CAAA,EAAIi0F,EAAY,CAC1E,IAAKhhG,CACX,CAAK,CAAC,CACJ,CACA,IAAIssD,EAAmBlnB,EAAQ,UAC7B67D,EAAc9/E,GAAyBikB,EAAS8X,EAAU,EACxDoJ,EAAY/lD,EAAM,UACpBu9C,EAAY38B,GAAyB5gB,EAAOugG,EAAU,EAGxD,OAAoB55F,EAAM,cAAc25F,GAAgB,SAAU,CAChE,MAAO,IACX,EAAkB35F,EAAM,cAAcg5F,GAAMnzF,GAAS,CACjD,IAAK/M,EACL,UAAW0M,GAAW4/C,EAAkBhG,CAAS,CACrD,EAAK26C,EAAanjD,CAAS,CAAC,CAAC,CAC7B,EACIojD,GAAuBh6F,EAAM,WAAW65F,EAAe,EAC3DG,GAAQ,YAAc,UC/BtB,IAAIruD,GAAY,CAAC,YAAa,OAAQ,aAAc,gBAAiB,UAAW,YAAa,MAAO,QAAS,YAAa,WAAY,aAAc,gBAAiB,SAAU,YAAa,gBAAiB,iBAAiB,EAU1NsuD,GAAa,aACbC,GAAa,aAEjB,SAASC,GAAkBC,EAAc,CACvC,MAAO,KAAK,OAAOA,EAAa,OAAQ,MAAM,CAChD,CACA,SAASC,GAAShhG,EAAOP,EAAK,CAC5B,IAAIs9D,EAAmB/8D,EAAM,UAC3B+rC,EAAYgxB,IAAqB,OAAS,cAAgBA,EAC1DkkC,EAAcjhG,EAAM,KACpB3U,EAAO41G,IAAgB,OAAS,CAAA,EAAKA,EACrClC,EAAa/+F,EAAM,WACnBkhG,EAAgBlhG,EAAM,cACtBm/F,EAAUn/F,EAAM,QAChBmhG,EAAmBnhG,EAAM,UACzBohG,EAAYD,IAAqB,OAAS,GAAKA,EAC/CE,EAAMrhG,EAAM,IACZqiB,EAAQriB,EAAM,MACd+lD,EAAY/lD,EAAM,UAClBshG,EAAWthG,EAAM,SACjBuhG,EAAavhG,EAAM,WACnBwhG,EAAgBxhG,EAAM,cACtBtN,EAASsN,EAAM,OACfq/F,EAAmBr/F,EAAM,UACzBw9C,EAAY6hD,IAAqB,OAAS,MAAQA,EAClDoC,EAAgBzhG,EAAM,cACtB0hG,EAAkB1hG,EAAM,gBACxBu9C,EAAY38B,GAAyB5gB,EAAOsyC,EAAS,EACnDqvD,EAAWN,IAAQ,OACnBrB,EAAqBF,GAAU,EAC/B8B,EAAkB1B,GAAeF,EAAoB,IAAI,EAC3D6B,EAAmB/jF,GAAe8jF,EAAiB,CAAC,EACpDE,EAAiBD,EAAiB,CAAC,EACnCE,EAAoBF,EAAiB,CAAC,EACpCG,EAAuBF,GAAkB,EACzCG,EAAmB/B,GAAeF,EAAoB,IAAI,GAAK,EACjEkC,EAAmBpkF,GAAemkF,EAAkB,CAAC,EACrDE,EAAaD,EAAiB,CAAC,EAC/BE,EAAgBF,EAAiB,CAAC,EAChCG,EAAmBnC,GAAeF,EAAoB,CAAC,EACzDsC,EAAmBxkF,GAAeukF,EAAkB,CAAC,EACrDE,EAAgBD,EAAiB,CAAC,EAClCE,EAAmBF,EAAiB,CAAC,EACnCG,EAAmBvC,GAAeF,EAAoB,CAAC,EACzD0C,EAAmB5kF,GAAe2kF,EAAkB,CAAC,EACrDE,EAAYD,EAAiB,CAAC,EAC9BE,EAAeF,EAAiB,CAAC,EAC/BG,GAAmB3C,GAAeF,EAAoB,CAAC,EACzD8C,GAAoBhlF,GAAe+kF,GAAkB,CAAC,EACtDE,GAAcD,GAAkB,CAAC,EACjCE,GAAiBF,GAAkB,CAAC,EAClC16D,GAAYrnC,EAAAA,SAAS,IAAI,EAC3BsnC,EAAavqB,GAAesqB,GAAW,CAAC,EACxC66D,EAAmB56D,EAAW,CAAC,EAC/B66D,GAAsB76D,EAAW,CAAC,EAChCM,EAAa5nC,EAAAA,SAAS,IAAI,EAC5B6nC,GAAa9qB,GAAe6qB,EAAY,CAAC,EACzCw6D,GAAev6D,GAAW,CAAC,EAC3Bw6D,GAAkBx6D,GAAW,CAAC,EAC5By6D,GAAqB18F,EAAM,QAAQ,UAAY,CACjD,OAAIw8F,KAAiB,MAAQxB,EACpB,OAAO,iBAETwB,IAAgB,CACzB,EAAG,CAACA,GAAcrB,CAAc,CAAC,EAC7BwB,GAAaviG,EAAAA,SAAS,EAAK,EAC7BwiG,GAAazlF,GAAewlF,GAAY,CAAC,EACzCE,GAAYD,GAAW,CAAC,EACxBE,GAAeF,GAAW,CAAC,EACzBG,GAAgB,GAAG,OAAO33D,EAAW,OAAO,EAG5C43D,GAAkB,KAAK,IAAIpB,EAAeI,CAAS,EAGnDiB,GAAetC,IAAaV,GAC5BiD,EAAmBx4G,EAAK,QAAUu4G,GAClC9E,GAAawC,IAAaT,GAK1BiD,GAAWD,GAAoB,OAAOvC,GAAa,UAAYj2G,EAAK,OAASi2G,EAC7EyC,GAAa1xF,EAAAA,QAAQ,UAAY,CACnC,IAAIg8E,GAAQhjG,EACZ,OAAIw4G,EACE/B,IAAmB,MAAQH,EAC7BtT,GAAQhjG,EAERgjG,GAAQhjG,EAAK,MAAM,EAAG,KAAK,IAAIA,EAAK,OAAQ22G,EAAuBZ,CAAS,CAAC,EAEtE,OAAOE,GAAa,WAC7BjT,GAAQhjG,EAAK,MAAM,EAAGi2G,CAAQ,GAEzBjT,EACT,EAAG,CAAChjG,EAAM+1G,EAAWU,EAAgBR,EAAUuC,CAAgB,CAAC,EAC5D9C,GAAe1uF,EAAAA,QAAQ,UAAY,CACrC,OAAIwxF,EACKx4G,EAAK,MAAMg4G,GAAqB,CAAC,EAEnCh4G,EAAK,MAAM04G,GAAW,MAAM,CACrC,EAAG,CAAC14G,EAAM04G,GAAYF,EAAkBR,EAAkB,CAAC,EAGvDW,GAASlkG,EAAAA,YAAY,SAAUgkB,GAAM/0B,GAAO,CAC9C,IAAIsT,GACJ,OAAI,OAAO88F,GAAY,WACdA,EAAQr7E,EAAI,GAEbzhB,GAAO88F,IAAYr7E,IAAS,KAA0B,OAASA,GAAKq7E,CAAO,MAAQ,MAAQ98F,KAAS,OAASA,GAAOtT,EAC9H,EAAG,CAACowG,CAAO,CAAC,EACR8E,GAAmBnkG,EAAAA,YAAYi/F,GAAc,SAAUj7E,GAAM,CAC/D,OAAOA,EACT,EAAG,CAACi7E,CAAU,CAAC,EACf,SAASmF,GAAmBnvG,GAAOovG,GAAqBC,GAAU,CAI5DjB,KAAiBpuG,KAAUovG,KAAwB,QAAaA,KAAwBlB,KAG5FG,GAAgBruG,EAAK,EAChBqvG,KACHX,GAAa1uG,GAAQ1J,EAAK,OAAS,CAAC,EACpCq2G,GAAoB,MAAsCA,EAAgB3sG,EAAK,GAE7EovG,KAAwB,QAC1BjB,GAAoBiB,EAAmB,EAE3C,CAGA,SAASE,GAAiBjpE,GAAG/mB,GAAS,CACpC0tF,EAAkB1tF,GAAQ,WAAW,CACvC,CACA,SAAS6qF,GAAa90G,GAAKmtB,GAAO,CAChC6qF,EAAc,SAAUh2B,GAAQ,CAC9B,IAAI5uE,GAAQ,IAAI,IAAI4uE,EAAM,EAC1B,OAAI70D,KAAU,KACZ/Z,GAAM,OAAOpT,EAAG,EAEhBoT,GAAM,IAAIpT,GAAKmtB,EAAK,EAEf/Z,EACT,CAAC,CACH,CACA,SAAS8mG,GAAqBlpE,GAAG7jB,GAAO,CACtCqrF,EAAarrF,EAAK,EAClBirF,EAAiBG,CAAS,CAC5B,CACA,SAAS4B,GAAmBnpE,GAAG7jB,GAAO,CACpCyrF,GAAezrF,EAAK,CACtB,CAGA,SAASitF,GAAaz1G,GAAO,CAC3B,OAAOozG,EAAW,IAAI6B,GAAOD,GAAWh1G,EAAK,EAAGA,EAAK,CAAC,CACxD,CACAs3B,GAAgB,UAAY,CAC1B,GAAI27E,GAAwB,OAAO2B,IAAoB,UAAYI,GAAY,CAC7E,IAAIU,GAAa1B,GACb5kF,GAAM4lF,GAAW,OACjB3qG,GAAY+kB,GAAM,EAGtB,GAAI,CAACA,GAAK,CACR+lF,GAAmB,EAAG,IAAI,EAC1B,MACF,CACA,QAAS/2G,GAAI,EAAGA,GAAIgxB,GAAKhxB,IAAK,EAAG,CAC/B,IAAIu3G,GAAmBF,GAAar3G,EAAC,EAQrC,GALIw0G,IACF+C,GAAmBA,IAAoB,GAIrCA,KAAqB,OAAW,CAClCR,GAAmB/2G,GAAI,EAAG,OAAW,EAAI,EACzC,KACF,CAIA,GADAs3G,IAAcC,GAGdtrG,KAAc,GAAKqrG,IAAczC,GAEjC70G,KAAMiM,GAAY,GAAKqrG,GAAaD,GAAaprG,EAAS,GAAK4oG,EAAsB,CAEnFkC,GAAmB9qG,GAAW,IAAI,EAClC,KACF,SAAWqrG,GAAad,GAAkB3B,EAAsB,CAE9DkC,GAAmB/2G,GAAI,EAAGs3G,GAAaC,GAAmB3B,GAAcJ,CAAS,EACjF,KACF,CACF,CACIjwG,GAAU8xG,GAAa,CAAC,EAAIzB,GAAcf,GAC5CkB,GAAoB,IAAI,CAE5B,CACF,EAAG,CAAClB,EAAsBG,EAAYQ,EAAWI,GAAaiB,GAAQD,EAAU,CAAC,EAGjF,IAAIY,GAAcnB,IAAa,CAAC,CAACzC,GAAa,OAC1C6D,GAAc,CAAA,EACd3B,IAAqB,MAAQY,IAC/Be,GAAc,CACZ,SAAU,WACV,KAAM3B,EACN,IAAK,CACX,GAEE,IAAI4B,GAAkB,CACpB,UAAWnB,GACX,WAAYG,EACZ,UAAWpC,EACX,WAAY3C,EAChB,EAGMgG,GAAyB5D,EAAgB,SAAUp9E,GAAM/0B,GAAO,CAClE,IAAI3E,GAAM45G,GAAOlgF,GAAM/0B,EAAK,EAC5B,OAAoB4X,EAAM,cAAc25F,GAAgB,SAAU,CAChE,IAAKl2G,GACL,MAAO0xB,EAAcA,EAAc,CAAA,EAAI+oF,EAAe,EAAG,CAAA,EAAI,CAC3D,MAAO91G,GACP,KAAM+0B,GACN,QAAS15B,GACT,aAAc80G,GACd,QAASnwG,IAASs0G,EAC1B,CAAO,CACP,EAAOnC,EAAcp9E,GAAM/0B,EAAK,CAAC,CAC/B,EAAI,SAAU+0B,GAAM/0B,GAAO,CACzB,IAAI3E,GAAM45G,GAAOlgF,GAAM/0B,EAAK,EAC5B,OAAoB4X,EAAM,cAAcg5F,GAAMnzF,GAAS,CAAA,EAAIq4F,GAAiB,CAC1E,MAAO91G,GACP,IAAK3E,GACL,KAAM05B,GACN,WAAYmgF,GACZ,QAAS75G,GACT,aAAc80G,GACd,QAASnwG,IAASs0G,EACxB,CAAK,CAAC,CACJ,EAGI0B,GAAmB,CACrB,MAAOJ,GAActB,GAAqB,OAAO,iBACjD,UAAW,GAAG,OAAOK,GAAe,OAAO,EAC3C,aAAcY,GACd,QAASK,EACb,EACMK,GAAmBzD,GAAcT,GACjCmE,GAAWzD,EAA6B76F,EAAM,cAAc25F,GAAgB,SAAU,CACxF,MAAOxkF,EAAcA,EAAc,CAAA,EAAI+oF,EAAe,EAAGE,EAAgB,CAC7E,EAAKvD,EAAcT,EAAY,CAAC,EAAiBp6F,EAAM,cAAcg5F,GAAMnzF,GAAS,CAAA,EAAIq4F,GAAiBE,EAAgB,EAAG,OAAOC,IAAqB,WAAaA,GAAiBjE,EAAY,EAAIiE,EAAgB,EAChNE,GAA4Bv+F,EAAM,cAAc62C,EAAWhxC,GAAS,CACtE,UAAWL,GAAW,CAAC2yF,IAAc/yD,EAAWga,CAAS,EACzD,MAAO1jC,EACP,IAAK5iB,CACT,EAAK89C,CAAS,EAAGwmD,GAAW,IAAIe,EAAsB,EAAGhB,GAAWmB,GAAW,KAAMvyG,GAAuBiU,EAAM,cAAcg5F,GAAMnzF,GAAS,CAAA,EAAIq4F,GAAiB,CAChK,WAAYjB,GACZ,mBAAoB,CAACC,EACrB,MAAOR,GACP,UAAW,GAAG,OAAOK,GAAe,SAAS,EAC7C,aAAca,GACd,QAAS,GACT,MAAOK,EACX,CAAG,EAAGlyG,CAAM,CAAC,EACX,OAAOkxG,GAA4Bj9F,EAAM,cAAckS,GAAgB,CACrE,SAAUwrF,GACV,SAAU,CAACR,CACf,EAAKqB,EAAY,EAAIA,EACrB,CACA,IAAIC,GAA+Bx+F,EAAM,WAAWq6F,EAAQ,EAC5DmE,GAAgB,YAAc,WAC9BA,GAAgB,KAAOxE,GACvBwE,GAAgB,WAAavE,GAC7BuE,GAAgB,WAAatE,GCtS7B,SAASuE,GAAaC,EAAaC,EAAYC,EAAO,CACpD,IAAIC,EAAgB1pF,EAAcA,EAAc,CAAA,EAAIupF,CAAW,EAAWC,CAAe,EACzF,cAAO,KAAKA,CAAU,EAAE,QAAQ,SAAUl7G,EAAK,CAC7C,IAAI0rF,EAAOwvB,EAAWl7G,CAAG,EACrB,OAAO0rF,GAAS,aAClB0vB,EAAcp7G,CAAG,EAAI,UAAY,CAE/B,QADIq7G,EACK3yF,EAAO,UAAU,OAAQplB,EAAO,IAAI,MAAMolB,CAAI,EAAGE,EAAO,EAAGA,EAAOF,EAAME,IAC/EtlB,EAAKslB,CAAI,EAAI,UAAUA,CAAI,EAE7B,OAAA8iE,EAAK,MAAM,OAAQpoF,CAAI,GACf+3G,EAAmBJ,EAAYj7G,CAAG,KAAO,MAAQq7G,IAAqB,OAAS,OAASA,EAAiB,KAAK,MAAMA,EAAkB,CAACJ,CAAW,EAAE,OAAO33G,CAAI,CAAC,CAC1K,EAEJ,CAAC,EACM83G,CACT,CCfA,IAAIlzD,GAAY,CAAC,YAAa,KAAM,eAAgB,YAAa,eAAgB,WAAY,qBAAsB,QAAS,OAAQ,OAAO,EAMvIozD,GAAQ,SAAe1lG,EAAOP,EAAK,CACrC,IAAIssC,EAAY/rC,EAAM,UACpBwL,EAAKxL,EAAM,GACX2lG,EAAe3lG,EAAM,aACrBsnE,EAAYtnE,EAAM,UAClB4lG,EAAe5lG,EAAM,aACrB6lG,EAAW7lG,EAAM,SACjB8lG,EAAqB9lG,EAAM,mBAC3BzU,EAAQyU,EAAM,MACd+tE,EAAO/tE,EAAM,KACbqlB,EAAQrlB,EAAM,MACdu9C,EAAY38B,GAAyB5gB,EAAOsyC,EAAS,EACnDyzD,EAAYJ,GAA6Bh/F,EAAM,cAAc,QAAS,IAAI,EAC1Eq/F,EAAaD,EACfhrF,EAAYirF,EAAW,IACvBX,EAAcW,EAAW,MAC3B54F,OAAAA,GAAQ,EAAE,cAAe24F,EAAU,OAAQ,uGAAuG,EAClJA,EAAyBp/F,EAAM,aAAao/F,EAAWjqF,EAAcA,EAAcA,EAAc,CAC/F,KAAM,QACV,EAAKspF,GAAa7nD,EAAW8nD,CAAiB,CAAC,EAAG,CAAA,EAAI,CAElD,GAAI75F,EACJ,IAAKqH,GAAWpT,EAAKsb,CAAS,EAC9B,aAAc6qF,GAAgB,MAC9B,UAAWt+B,EACX,UAAWn7D,GAAW,GAAG,OAAO4/B,EAAW,yBAAyB,EAAGs5D,GAAgB,KAAiC,OAASA,EAAY,SAAS,EACtJ,KAAM,WACN,gBAAiBt3B,GAAQ,GACzB,gBAAiB,UACjB,YAAa,GAAG,OAAOviE,EAAI,OAAO,EAClC,oBAAqB,OACrB,gBAAiB,GAAG,OAAOA,EAAI,OAAO,EACtC,wBAAyBuiE,EAAO+3B,EAAqB,MACzD,EAAKzgF,CAAK,EAAG,GAAI,CACb,MAAOwgF,EAAWt6G,EAAQ,GAC1B,SAAU,CAACs6G,EACX,aAAeA,EAAkB,KAAP,KAC1B,MAAO/pF,EAAcA,EAAc,CAAA,EAAIupF,EAAY,KAAK,EAAG,GAAI,CAC7D,QAASQ,EAAW,KAAO,CACjC,CAAK,CACL,CAAG,CAAC,EACKE,CACT,EACIE,GAAwBt/F,EAAM,WAAW++F,EAAK,EAC9C,QAAQ,IAAI,WAAa,eAC3BO,GAAS,YAAc,SCpDlB,SAASn5F,GAAQvhB,EAAO,CAC7B,OAAI,MAAM,QAAQA,CAAK,EACdA,EAEFA,IAAU,OAAY,CAACA,CAAK,EAAI,CAAA,CACzC,CACO,IAAI26G,GAAW,OAAO,OAAW,KAAe,OAAO,UAAY,OAAO,SAAS,gBAG/EC,GAAkB,QAAQ,IAAI,WAAa,QAAUD,GACzD,SAASn+D,GAASx8C,EAAO,CAC9B,OAA8BA,GAAU,IAC1C,CAGO,SAAS66G,GAAe76G,EAAO,CACpC,MAAO,CAACA,GAASA,IAAU,CAC7B,CACA,SAAS86G,GAAYn2B,EAAO,CAC1B,MAAO,CAAC,SAAU,QAAQ,EAAE,SAASzjE,GAAQyjE,CAAK,CAAC,CACrD,CACO,SAASo2B,GAASxiF,EAAM,CAC7B,IAAIosD,EAAQ,OACZ,OAAIpsD,IACEuiF,GAAYviF,EAAK,KAAK,EACxBosD,EAAQpsD,EAAK,MAAM,SAAQ,EAClBuiF,GAAYviF,EAAK,KAAK,IAC/BosD,EAAQpsD,EAAK,MAAM,SAAQ,IAGxBosD,CACT,CCzBe,SAAS7pD,GAAgBQ,EAAQrC,EAAM,CAEhD2hF,GAEFx/F,EAAM,gBAAgBkgB,EAAQrC,CAAI,EAElC7d,EAAM,UAAUkgB,EAAQrC,CAAI,CAEhC,CCJA,SAAS26E,GAAQ5zG,EAAO,CACtB,IAAIg7G,EACJ,OAAQA,EAAah7G,EAAM,OAAS,MAAQg7G,IAAe,OAASA,EAAah7G,EAAM,KACzF,CACA,IAAIi7G,GAAqB,SAA4B/3G,EAAO,CAC1DA,EAAM,eAAc,EACpBA,EAAM,gBAAe,CACvB,EACIg4G,GAAiB,SAAwBzmG,EAAO,CAClD,IAAIwL,EAAKxL,EAAM,GACb+rC,EAAY/rC,EAAM,UAClBglF,EAAShlF,EAAM,OACf+tE,EAAO/tE,EAAM,KACb0mG,EAAc1mG,EAAM,YACpB2mG,EAAuB3mG,EAAM,qBAC7B4mG,EAAW5mG,EAAM,SACjB6mG,EAAc7mG,EAAM,YACpBwa,EAAWxa,EAAM,SACjBs9F,EAAOt9F,EAAM,KACb8mG,EAAa9mG,EAAM,WACnBsnE,EAAYtnE,EAAM,UAClB4lG,EAAe5lG,EAAM,aACrB8lG,EAAqB9lG,EAAM,mBAC3BymD,EAAWzmD,EAAM,SACjB+mG,EAAa/mG,EAAM,WACnBgnG,EAAchnG,EAAM,YACpBinG,EAAmBjnG,EAAM,iBACzBknG,EAAwBlnG,EAAM,kBAC9BmnG,EAAoBD,IAA0B,OAAS,SAAUE,EAAe,CAC9E,MAAO,KAAK,OAAOA,EAAc,OAAQ,MAAM,CACjD,EAAIF,EACJG,EAAYrnG,EAAM,UAClBsnG,EAAetnG,EAAM,aACrBunG,EAAWvnG,EAAM,SACjBwnG,EAAgBxnG,EAAM,cACtBynG,EAAeznG,EAAM,aACrB0nG,EAAiB1nG,EAAM,eACvB2nG,EAAmB3nG,EAAM,iBACzB4nG,EAA0B5nG,EAAM,wBAChC6nG,EAAwB7nG,EAAM,sBAC9B8nG,EAAc9nG,EAAM,YAClB+nG,EAAaphG,EAAM,OAAO,IAAI,EAC9ByhC,EAAYrnC,EAAAA,SAAS,CAAC,EACxBsnC,EAAavqB,GAAesqB,EAAW,CAAC,EACxC4/D,EAAa3/D,EAAW,CAAC,EACzB4/D,EAAgB5/D,EAAW,CAAC,EAC1BM,EAAa5nC,EAAAA,SAAS,EAAK,EAC7B6nC,EAAa9qB,GAAe6qB,EAAY,CAAC,EACzCu/D,EAAUt/D,EAAW,CAAC,EACtBu/D,EAAav/D,EAAW,CAAC,EACvBw/D,EAAqB,GAAG,OAAOr8D,EAAW,YAAY,EAGtDs8D,GAAat6B,GAAQuvB,IAAS,YAAcqJ,IAAyB,IAASrJ,IAAS,OAASoJ,EAAc,GAC9G4B,GAAgBhL,IAAS,QAAUA,IAAS,YAAcqJ,IAAyB,IAASG,IAAe/4B,GAAQm6B,GAGvH7hF,GAAgB,UAAY,CAC1B4hF,EAAcF,EAAW,QAAQ,WAAW,CAC9C,EAAG,CAACM,EAAU,CAAC,EAIf,IAAIE,GAAwB,SAA+BzkF,GAAMsM,GAASo4E,GAAcj9C,GAAU8kB,GAAS,CACzG,OAAoB1pE,EAAM,cAAc,OAAQ,CAC9C,MAAO2/F,GAASxiF,EAAI,EACpB,UAAW3X,GAAW,GAAG,OAAOi8F,EAAoB,OAAO,EAAGr6F,EAAgB,CAAA,EAAI,GAAG,OAAOq6F,EAAoB,gBAAgB,EAAGI,EAAY,CAAC,CACtJ,EAAoB7hG,EAAM,cAAc,OAAQ,CAC1C,UAAW,GAAG,OAAOyhG,EAAoB,eAAe,CAC9D,EAAOh4E,EAAO,EAAGm7B,IAAyB5kD,EAAM,cAAci2F,GAAU,CAClE,UAAW,GAAG,OAAOwL,EAAoB,cAAc,EACvD,YAAa5B,GACb,QAASn2B,GACT,cAAe02B,CACrB,EAAO,GAAM,CAAC,CACZ,EACI0B,GAA0B,SAAiCl9G,GAAO6kC,GAASo4E,GAAcj9C,GAAU8kB,GAASq4B,GAAU,CACxH,IAAIj4B,GAAc,SAAqB3lF,GAAG,CACxC07G,GAAmB17G,EAAC,EACpBw8G,EAAa,CAACv5B,CAAI,CACpB,EACA,OAAoBpnE,EAAM,cAAc,OAAQ,CAC9C,YAAa8pE,EACnB,EAAO42B,EAAU,CACX,MAAOj3E,GACP,MAAO7kC,GACP,SAAUi9G,GACV,SAAUj9C,GACV,QAAS8kB,GACT,SAAU,CAAC,CAACq4B,EAClB,CAAK,CAAC,CACJ,EACI3J,GAAa,SAAoB4J,GAAW,CAC9C,IAAIH,GAAeG,GAAU,SAC3BC,GAAQD,GAAU,MAClBp9G,GAAQo9G,GAAU,MAChBp9C,GAAW,CAAC/wC,GAAY,CAACguF,GACzBK,GAAeD,GACnB,GAAI,OAAO3B,GAAqB,WAC1B,OAAO2B,IAAU,UAAY,OAAOA,IAAU,UAAU,CAC1D,IAAIE,GAAW,OAAOD,EAAY,EAC9BC,GAAS,OAAS7B,IACpB4B,GAAe,GAAG,OAAOC,GAAS,MAAM,EAAG7B,CAAgB,EAAG,KAAK,EAEvE,CAEF,IAAI52B,GAAU,SAAiB5hF,GAAO,CAChCA,IACFA,GAAM,gBAAe,EAEvB84G,EAASoB,EAAS,CACpB,EACA,OAAO,OAAOtB,GAAc,WAAaoB,GAAwBl9G,GAAOs9G,GAAcL,GAAcj9C,GAAU8kB,EAAO,EAAIk4B,GAAsBI,GAAWE,GAAcL,GAAcj9C,GAAU8kB,EAAO,CACzM,EACIkxB,EAAa,SAAoB6F,GAAe,CAElD,GAAI,CAACpiB,EAAO,OACV,OAAO,KAET,IAAI50D,GAAU,OAAO+2E,GAAsB,WAAaA,EAAkBC,EAAa,EAAID,EAC3F,OAAO,OAAOE,GAAc,WAAaoB,GAAwB,OAAWr4E,GAAS,GAAO,GAAO,OAAW,EAAI,EAAIm4E,GAAsB,CAC1I,MAAOn4E,EACb,EAAOA,GAAS,EAAK,CACnB,EAGI21E,EAAyBp/F,EAAM,cAAc,MAAO,CACtD,UAAW,GAAG,OAAOyhG,EAAoB,SAAS,EAClD,MAAO,CACL,MAAOJ,CACb,EACI,QAAS,UAAmB,CAC1BG,EAAW,EAAI,CACjB,EACA,OAAQ,UAAkB,CACxBA,EAAW,EAAK,CAClB,CACJ,EAAkBxhG,EAAM,cAAc++F,GAAO,CACzC,IAAKkB,EACL,KAAM74B,EACN,UAAWhiC,EACX,GAAIvgC,EACJ,aAAc,KACd,SAAUgP,EACV,UAAW8sD,EACX,aAAcs+B,EACd,SAAU0C,GACV,mBAAoBxC,EACpB,MAAOuC,GACP,UAAWX,EACX,YAAaC,EACb,SAAUH,EACV,QAASC,EACT,mBAAoBG,EACpB,iBAAkBC,EAClB,OAAQC,EACR,SAAUrhD,EACV,MAAOsB,GAAU/nD,EAAO,EAAI,CAChC,CAAG,EAAgB2G,EAAM,cAAc,OAAQ,CAC3C,IAAKohG,EACL,UAAW,GAAG,OAAOK,EAAoB,gBAAgB,EACzD,cAAe,EACnB,EAAKC,GAAY,GAAM,CAAC,EAGlBU,GAA6BpiG,EAAM,cAAcq6F,GAAU,CAC7D,UAAW,GAAG,OAAOoH,EAAoB,WAAW,EACpD,KAAMpjB,EACN,WAAY+Z,GACZ,WAAYwC,EACZ,OAAQwE,EACR,QAAS5G,GACT,SAAU6H,CACd,CAAG,EACD,OAAoBrgG,EAAM,cAAc,OAAQ,CAC9C,UAAW,GAAG,OAAOyhG,EAAoB,OAAO,CACpD,EAAKW,GAAe,CAAC/jB,EAAO,QAAU,CAACqjB,IAA2B1hG,EAAM,cAAc,OAAQ,CAC1F,UAAW,GAAG,OAAOyhG,EAAoB,cAAc,CAC3D,EAAKvB,CAAW,CAAC,CACjB,ECzLImC,GAAiB,SAAwBhpG,EAAO,CAClD,IAAI2lG,EAAe3lG,EAAM,aACvB+rC,EAAY/rC,EAAM,UAClBwL,EAAKxL,EAAM,GACX4mG,EAAW5mG,EAAM,SACjBwa,EAAWxa,EAAM,SACjBsnE,EAAYtnE,EAAM,UAClB4lG,EAAe5lG,EAAM,aACrB8lG,EAAqB9lG,EAAM,mBAC3Bs9F,EAAOt9F,EAAM,KACb+tE,EAAO/tE,EAAM,KACbglF,EAAShlF,EAAM,OACf6mG,EAAc7mG,EAAM,YACpBymD,EAAWzmD,EAAM,SACjB8mG,EAAa9mG,EAAM,WACnB0mG,EAAc1mG,EAAM,YACpBipG,EAAcjpG,EAAM,YACpBkpG,EAAYlpG,EAAM,UAClB0nG,EAAiB1nG,EAAM,eACvB2nG,EAAmB3nG,EAAM,iBACzBwnG,EAAgBxnG,EAAM,cACtBynG,EAAeznG,EAAM,aACrB4nG,EAA0B5nG,EAAM,wBAChC6nG,EAAwB7nG,EAAM,sBAC9B8nG,EAAc9nG,EAAM,YACpBkwE,EAAQlwE,EAAM,MACZ0nC,EAAkB/gC,EAAM,SAAS,EAAK,EACxCghC,EAAmB7pB,GAAe4pB,EAAiB,CAAC,EACpDyhE,EAAexhE,EAAiB,CAAC,EACjCyhE,EAAkBzhE,EAAiB,CAAC,EAClC0hE,EAAW/L,IAAS,WACpBgL,EAAgBe,GAAYvC,EAC5BhjF,EAAOkhE,EAAO,CAAC,EACfqjB,EAAa3B,GAAe,GAC5B2C,GAAYJ,GAAe,CAACE,IAC9Bd,EAAaY,GAEftiG,EAAM,UAAU,UAAY,CACtB0iG,GACFD,EAAgB,EAAK,CAEzB,EAAG,CAACC,EAAUJ,CAAW,CAAC,EAG1B,IAAIK,EAAehM,IAAS,YAAc,CAACvvB,GAAQ,CAAC+4B,EAAa,GAAQ,CAAC,CAACuB,EAGvEkB,EAAiBr5B,IAAU,OAAYo2B,GAASxiF,CAAI,EAAIosD,EACxDs5B,EAAkB7iG,EAAM,QAAQ,UAAY,CAC9C,OAAImd,EACK,KAEWnd,EAAM,cAAc,OAAQ,CAC9C,UAAW,GAAG,OAAOolC,EAAW,wBAAwB,EACxD,MAAOu9D,EAAe,CACpB,WAAY,QACpB,EAAU,MACV,EAAOzC,CAAW,CAChB,EAAG,CAAC/iF,EAAMwlF,EAAczC,EAAa96D,CAAS,CAAC,EAC/C,OAAoBplC,EAAM,cAAc,OAAQ,CAC9C,UAAW,GAAG,OAAOolC,EAAW,iBAAiB,CACrD,EAAkBplC,EAAM,cAAc,OAAQ,CAC1C,UAAW,GAAG,OAAOolC,EAAW,mBAAmB,CACvD,EAAkBplC,EAAM,cAAc++F,GAAO,CACzC,IAAKkB,EACL,UAAW76D,EACX,GAAIvgC,EACJ,KAAMuiE,EACN,aAAc43B,EACd,SAAUnrF,EACV,UAAW8sD,EACX,aAAcs+B,EACd,SAAU0C,EACV,mBAAoBxC,EACpB,MAAOuC,EACP,UAAWX,EACX,YAAaC,EACb,SAAU,SAAkB78G,EAAG,CAC7Bs+G,EAAgB,EAAI,EACpB5B,EAAc18G,CAAC,CACjB,EACA,QAAS28G,EACT,mBAAoBG,EACpB,iBAAkBC,EAClB,OAAQC,EACR,SAAUrhD,EACV,MAAOsB,GAAU/nD,EAAO,EAAI,EAC5B,UAAWqpG,EAAWH,EAAY,MACtC,CAAG,CAAC,EAAG,CAACG,GAAYvlF,EAAoBnd,EAAM,cAAc,OAAQ,CAChE,UAAW,GAAG,OAAOolC,EAAW,iBAAiB,EACjD,MAAOw9D,EAKP,MAAOD,EAAe,CACpB,WAAY,QAClB,EAAQ,MACR,EAAKxlF,EAAK,KAAK,EAAI,KAAM0lF,CAAe,CACxC,ECrFIC,GAAW,SAAkBzpG,EAAOP,EAAK,CAC3C,IAAImnG,EAAWlnG,EAAAA,OAAO,IAAI,EACtBgqG,EAAuBhqG,EAAAA,OAAO,EAAK,EACnCqsC,EAAY/rC,EAAM,UACpB+tE,EAAO/tE,EAAM,KACbs9F,EAAOt9F,EAAM,KACb8mG,EAAa9mG,EAAM,WACnB2pG,EAAiB3pG,EAAM,eACvBwa,EAAWxa,EAAM,SACjB9R,EAAS8R,EAAM,OACf2mG,EAAuB3mG,EAAM,qBAC7B4pG,EAAW5pG,EAAM,SACjB6pG,EAAiB7pG,EAAM,eACvBsnG,EAAetnG,EAAM,aACrB0nG,EAAiB1nG,EAAM,eACvB8nG,EAAc9nG,EAAM,YACpB8pG,EAAS9pG,EAAM,OAGjB2G,EAAM,oBAAoBlH,EAAK,UAAY,CACzC,MAAO,CACL,MAAO,SAAezR,EAAS,CAC7B44G,EAAS,QAAQ,MAAM54G,CAAO,CAChC,EACA,KAAM,UAAgB,CACpB44G,EAAS,QAAQ,KAAI,CACvB,CACN,CACE,CAAC,EAGD,IAAImD,EAAW9L,GAAQ,CAAC,EACtB+L,EAAYlsF,GAAeisF,EAAU,CAAC,EACtCE,EAAoBD,EAAU,CAAC,EAC/BE,EAAoBF,EAAU,CAAC,EAC7BG,EAAyB,SAAgC17G,EAAO,CAClE,IAAI27G,EAAQ37G,EAAM,MAGd47G,EAAoBzD,EAAS,mBAAmB,oBAChD,CAACyD,GAAqBt8B,IAASq8B,IAAUv9C,GAAQ,IAAMu9C,IAAUv9C,GAAQ,OAC3Ep+D,EAAM,eAAc,EAElBi5G,GACFA,EAAej5G,CAAK,EAElB27G,IAAUv9C,GAAQ,OAASywC,IAAS,QAAU,CAACoM,EAAqB,SAAW,CAAC37B,IAGlF87B,GAAmB,MAAqCA,EAAep7G,EAAM,OAAO,KAAK,GAGvF,EAAA47G,GAAqB,CAACt8B,GAAQ,CAAC,CAAClhB,GAAQ,GAAIA,GAAQ,KAAMA,GAAQ,KAAMA,GAAQ,KAAK,EAAE,QAAQu9C,CAAK,IAGpG1L,GAAkB0L,CAAK,GACzB9C,EAAa,EAAI,CAErB,EAMIgD,EAA2B,UAAoC,CACjEJ,EAAkB,EAAI,CACxB,EAGIK,EAAgB7qG,EAAAA,OAAO,IAAI,EAC3B8qG,EAAkB,SAAyBj/G,EAAO,CAChDq+G,EAASr+G,EAAO,GAAMm+G,EAAqB,OAAO,IAAM,IAC1DpC,EAAa,EAAI,CAErB,EACIM,EAA0B,UAAmC,CAC/D8B,EAAqB,QAAU,EACjC,EACI7B,EAAwB,SAA+B/8G,EAAG,CAC5D4+G,EAAqB,QAAU,GAG3BpM,IAAS,YACXkN,EAAgB1/G,EAAE,OAAO,KAAK,CAElC,EACI08G,EAAgB,SAAuB/4G,EAAO,CAChD,IAAIlD,EAAQkD,EAAM,OAAO,MAGzB,GAAIk7G,GAAkBY,EAAc,SAAW,SAAS,KAAKA,EAAc,OAAO,EAAG,CAEnF,IAAIE,EAAeF,EAAc,QAAQ,QAAQ,WAAY,EAAE,EAAE,QAAQ,QAAS,GAAG,EAAE,QAAQ,UAAW,GAAG,EAC7Gh/G,EAAQA,EAAM,QAAQk/G,EAAcF,EAAc,OAAO,CAC3D,CACAA,EAAc,QAAU,KACxBC,EAAgBj/G,CAAK,CACvB,EACIk8G,EAAe,SAAsB38G,EAAG,CAC1C,IAAI4/G,EAAgB5/G,EAAE,cAClBS,EAAQm/G,GAAkB,KAAmC,OAASA,EAAc,QAAQ,MAAM,EACtGH,EAAc,QAAUh/G,GAAS,EACnC,EACIy6D,EAAU,SAAiB3jD,EAAM,CACnC,IAAI5W,EAAS4W,EAAK,OAClB,GAAI5W,IAAWm7G,EAAS,QAAS,CAE/B,IAAI+D,EAAO,SAAS,KAAK,MAAM,gBAAkB,OAC7CA,EACF,WAAW,UAAY,CACrB/D,EAAS,QAAQ,MAAK,CACxB,CAAC,EAEDA,EAAS,QAAQ,MAAK,CAE1B,CACF,EACIn2B,EAAc,SAAqBhiF,EAAO,CAC5C,IAAIm8G,EAAiBX,EAAiB,EAKlCx7G,EAAM,SAAWm4G,EAAS,SAAW,CAACgE,GAAkB,EAAEtN,IAAS,YAAc9iF,IACnF/rB,EAAM,eAAc,GAElB6uG,IAAS,aAAe,CAACwJ,GAAc,CAAC8D,IAAmB,CAAC78B,KAC1DA,GAAQ44B,IAAyB,IACnCiD,EAAS,GAAI,GAAM,EAAK,EAE1BtC,EAAY,EAEhB,EAGIuD,EAAc,CAChB,SAAUjE,EACV,eAAgBuD,EAChB,iBAAkBG,EAClB,cAAe9C,EACf,aAAcC,EACd,wBAAyBG,EACzB,sBAAuBC,EACvB,YAAaC,CACjB,EACMgD,EAAaxN,IAAS,YAAcA,IAAS,OAAsB32F,EAAM,cAAcokG,GAAkBv+F,GAAS,CAAA,EAAIxM,EAAO6qG,CAAW,CAAC,EAAiBlkG,EAAM,cAAcqiG,GAAgBx8F,GAAS,CAAA,EAAIxM,EAAO6qG,CAAW,CAAC,EAClO,OAAoBlkG,EAAM,cAAc,MAAO,CAC7C,IAAKmjG,EACL,UAAW,GAAG,OAAO/9D,EAAW,WAAW,EAC3C,QAASia,EACT,YAAayqB,CACjB,EAAKviF,GAAuByY,EAAM,cAAc,MAAO,CACnD,UAAW,GAAG,OAAOolC,EAAW,SAAS,CAC7C,EAAK79C,CAAM,EAAG48G,CAAU,CACxB,EACIE,GAA+BrkG,EAAM,WAAW8iG,EAAQ,EACxD,QAAQ,IAAI,WAAa,eAC3BuB,GAAgB,YAAc,YC9KjB,SAASC,GAAMjrG,EAAO,CACnC,IAAI+rC,EAAY/rC,EAAM,UACpBkrG,EAAQlrG,EAAM,MACdmrG,EAAQnrG,EAAM,MACdorG,EAAWprG,EAAM,SACfqC,EAAO8oG,GAAS,CAAA,EAClBplD,EAAY1jD,EAAK,UACjB+tB,EAAU/tB,EAAK,QACbgpG,EAAcD,EAAS,EACzBrzF,EAAIszF,IAAgB,OAAS,EAAIA,EACjCC,EAAcF,EAAS,EACvBpzF,EAAIszF,IAAgB,OAAS,EAAIA,EAC/BC,EAAW5kG,EAAM,OAAM,EAG3B,GAAI,CAACukG,GAAS,CAACA,EAAM,OACnB,OAAO,KAET,IAAIM,EAAa,CACf,SAAU,UACd,EAGE,GAAIN,EAAM,YAAc,GAAO,CAC7B,IAAIO,EAAcP,EAAM,OAAO,CAAC,EAC5BQ,EAAeR,EAAM,OAAO,CAAC,EAC7BS,EAAUF,EAAY,CAAC,EACvBG,EAAUH,EAAY,CAAC,EACvBI,EAAWH,EAAa,CAAC,EACzBI,EAAWJ,EAAa,CAAC,EAGzBC,IAAYE,GAAY,CAAC,CAAC,IAAK,GAAG,EAAE,SAASF,CAAO,EACtDH,EAAW,IAAMxzF,EACR2zF,IAAY,IACrBH,EAAW,IAAM,EAEjBA,EAAW,OAAS,EAIlBI,IAAYE,GAAY,CAAC,CAAC,IAAK,GAAG,EAAE,SAASF,CAAO,EACtDJ,EAAW,KAAOzzF,EACT6zF,IAAY,IACrBJ,EAAW,KAAO,EAElBA,EAAW,MAAQ,CAEvB,CACA,OAAoB7kG,EAAM,cAAc,MAAO,CAC7C,IAAK4kG,EACL,UAAWp/F,GAAW,GAAG,OAAO4/B,EAAW,QAAQ,EAAGga,CAAS,EAC/D,MAAOylD,CACX,EAAKp7E,CAAO,CACZ,CCpDe,SAAS8hD,GAAKlyE,EAAO,CAClC,IAAI+rC,EAAY/rC,EAAM,UACpB+tE,EAAO/tE,EAAM,KACb4tD,EAAS5tD,EAAM,OACfgzE,EAAOhzE,EAAM,KACbi+C,EAASj+C,EAAM,OACjB,OAAKgzE,EAGersE,EAAM,cAAcwzC,GAAW3tC,GAAS,CAAA,EAAIyxC,EAAQ,CACtE,aAAc,GACd,QAAS8vB,EACT,cAAe,EACnB,CAAG,EAAG,SAAU1rE,EAAM,CAClB,IAAI0jD,EAAY1jD,EAAK,UACrB,OAAoBsE,EAAM,cAAc,MAAO,CAC7C,MAAO,CACL,OAAQinD,CAChB,EACM,UAAWzhD,GAAW,GAAG,OAAO4/B,EAAW,OAAO,EAAGga,CAAS,CACpE,CAAK,CACH,CAAC,EAdQ,IAeX,CCzBA,IAAIgmD,GAA4BplG,EAAM,KAAK,SAAUtE,EAAM,CACzD,IAAI0K,EAAW1K,EAAK,SACpB,OAAO0K,CACT,EAAG,SAAUquB,EAAGhuC,EAAM,CACpB,OAAOA,EAAK,KACd,CAAC,EACG,QAAQ,IAAI,WAAa,eAC3B2+G,GAAa,YAAc,gBCI7B,IAAIC,GAAqBrlG,EAAM,WAAW,SAAU3G,EAAOP,EAAK,CAC9D,IAAIg9F,EAAQz8F,EAAM,MAChB+lD,EAAY/lD,EAAM,UAClB+rC,EAAY/rC,EAAM,UAClBqiB,EAAQriB,EAAM,MACdvU,EAASuU,EAAM,OACfs9C,EAAoBt9C,EAAM,iBAC1B+tE,EAAO/tE,EAAM,KACbisG,EAAUjsG,EAAM,QAChBksG,EAAQlsG,EAAM,MACdgmD,EAAUhmD,EAAM,QAChBgzE,EAAOhzE,EAAM,KACbmrG,EAAQnrG,EAAM,MACdorG,EAAWprG,EAAM,SACjBkrG,EAAQlrG,EAAM,MACdi+C,EAASj+C,EAAM,OACfmsG,EAAansG,EAAM,WACnBu6C,EAAcv6C,EAAM,YACpBglC,EAAoBhlC,EAAM,kBAC1BkuE,EAAcluE,EAAM,YACpB6Q,EAAS7Q,EAAM,OACf4tD,EAAS5tD,EAAM,OACfmrD,EAAenrD,EAAM,aACrBorD,EAAeprD,EAAM,aACrBosG,EAAiBpsG,EAAM,eACvBqsG,EAAuBrsG,EAAM,qBAC7BU,EAAQV,EAAM,MACd+6D,EAAU/6D,EAAM,QAChBg7D,EAAUh7D,EAAM,QAChBssG,EAAUtsG,EAAM,QAChBusG,EAAUvsG,EAAM,QAChBwsG,EAAUxsG,EAAM,QAChBs5C,EAAYt5C,EAAM,UAClBysG,EAAUzsG,EAAM,QAChBm5D,EAAcn5D,EAAM,YACpBo5D,EAAep5D,EAAM,aACnB6jD,EAAY,OAAO44C,GAAU,WAAaA,EAAK,EAAKA,EAGpDiQ,EAAgB3+B,GAAQk+B,EAGxBU,GAA+B3nE,GAAsB,KAAuC,OAASA,EAAkB,QAAU,EACjI0C,EAAkB/gC,EAAM,SAAS,CAACq+B,GAAqB,CAAC2nE,CAA2B,EACrFhlE,EAAmB7pB,GAAe4pB,EAAiB,CAAC,EACpDklE,GAAOjlE,EAAiB,CAAC,EACzBklE,GAAUllE,EAAiB,CAAC,EAU9B,GAPAthB,GAAgB,UAAY,CACtB,CAACumF,IAAQD,GAA+BlhH,GAC1CohH,GAAQ,EAAI,CAEhB,EAAG,CAACD,GAAMD,EAA6BlhH,CAAM,CAAC,EAG1C,CAACmhH,GACH,OAAO,KAIT,IAAIE,GAAO,OACPC,GAAc,CAChB,KAAM,UACN,IAAK,UACL,MAAOD,GACP,OAAQA,EACZ,EAGE,GAAIpsG,GAAS,CAACqtE,EAAM,CAClB,IAAIi/B,GACA3+E,EAAS68E,EAAM,OACf+B,EAAe/B,EAAM,gBAAkB8B,GAAgB9B,EAAM,iBAAmB,MAAQ8B,KAAkB,OAAS,OAASA,GAAc,cAC1IE,GAAaD,GAAgB5+E,EAAO,CAAC,EAAE,CAAC,IAAM,IAC9C8+E,EAAcF,GAAgB5+E,EAAO,CAAC,EAAE,CAAC,IAAM,IAC/C6+E,IACFH,GAAY,MAAQT,EACpBS,GAAY,KAAOD,KAEnBC,GAAY,KAAOhyC,EACnBgyC,GAAY,MAAQD,IAElBK,GACFJ,GAAY,OAASR,EACrBQ,GAAY,IAAMD,KAElBC,GAAY,IAAM/xC,EAClB+xC,GAAY,OAASD,GAEzB,CAGA,IAAIM,GAAY,CAAA,EAChB,OAAIX,IACEA,EAAQ,SAAS,QAAQ,GAAKrzC,EAChCg0C,GAAU,OAASh0C,EACVqzC,EAAQ,SAAS,WAAW,GAAKrzC,IAC1Cg0C,GAAU,UAAYh0C,GAEpBqzC,EAAQ,SAAS,OAAO,GAAKtzC,EAC/Bi0C,GAAU,MAAQj0C,EACTszC,EAAQ,SAAS,UAAU,GAAKtzC,IACzCi0C,GAAU,SAAWj0C,IAGpB4U,IACHq/B,GAAU,cAAgB,QAERzmG,EAAM,cAAckK,EAAQ,CAC9C,KAAM0pC,GAAemyD,EACrB,aAAc1nE,GAAqB,UAAY,CAC7C,OAAOA,EAAkBv5C,CAAM,CACjC,EACA,YAAayiF,CACjB,EAAkBvnE,EAAM,cAAcurE,GAAM,CACxC,UAAWnmC,EACX,KAAMgiC,EACN,OAAQngB,EACR,KAAMolB,EACN,OAAQm5B,CACZ,CAAG,EAAgBxlG,EAAM,cAAckS,GAAgB,CACnD,SAAU2zF,EACV,SAAU,CAACz+B,CACf,EAAK,SAAUs/B,GAAmB,CAC9B,OAAoB1mG,EAAM,cAAcwzC,GAAW3tC,GAAS,CAC1D,aAAc,GACd,YAAa,GACb,YAAa,GACb,cAAe,GACf,YAAa+tC,EACb,gBAAiB,GAAG,OAAOxO,EAAW,SAAS,CACrD,EAAOkS,EAAQ,CACT,gBAAiB3E,EACjB,eAAgBA,EAChB,QAASy0B,EACT,iBAAkB,SAA0Bu/B,GAAa,CACvD,IAAIC,GACJtvD,GAAW,OAA8BsvD,GAAwBtvD,EAAO,oBAAsB,MAAQsvD,KAA0B,QAAUA,GAAsB,KAAKtvD,EAAQqvD,EAAW,EACxLhwD,EAAkBgwD,EAAW,CAC/B,CACN,CAAK,EAAG,SAAUjrG,GAAM4vE,GAAW,CAC7B,IAAI9lB,GAAkB9pD,GAAK,UACzB+pD,GAAc/pD,GAAK,MACjB8vF,GAAMhmF,GAAW4/B,EAAWogB,GAAiBpG,CAAS,EAC1D,OAAoBp/C,EAAM,cAAc,MAAO,CAC7C,IAAKkM,GAAWw6F,GAAmB5tG,EAAKwyE,EAAS,EACjD,UAAWkgB,GACX,MAAOr2E,EAAcA,EAAcA,EAAcA,EAAc,CAC7D,YAAa,GAAG,OAAOsvF,EAAS,GAAK,EAAG,IAAI,EAC5C,YAAa,GAAG,OAAOA,EAAS,GAAK,EAAG,IAAI,CACtD,EAAW2B,EAAW,EAAGK,EAAS,EAAGhhD,EAAW,EAAG,CAAA,EAAI,CAC7C,UAAW,aACX,OAAQwB,CAClB,EAAWvrC,CAAK,EACR,aAAc8oC,EACd,aAAcC,EACd,eAAgBghD,EAChB,QAASpmD,EACT,qBAAsBqmD,CAC9B,EAASlB,GAAsBxkG,EAAM,cAAcskG,GAAO,CAClD,UAAWl/D,EACX,MAAOo/D,EACP,SAAUC,EACV,MAAOF,CACf,CAAO,EAAgBvkG,EAAM,cAAcolG,GAAc,CACjD,MAAO,CAACh+B,GAAQ,CAACm+B,CACzB,EAASroD,CAAS,CAAC,CACf,CAAC,CACH,CAAC,CAAC,CACJ,CAAC,EACG,QAAQ,IAAI,WAAa,eAC3BmoD,GAAM,YAAc,SCtLtB,IAAIwB,GAA8B7mG,EAAM,WAAW,SAAU3G,EAAOP,EAAK,CACvE,IAAIsN,EAAW/M,EAAM,SACnBytG,EAAoBztG,EAAM,kBACxB0tG,EAAYr6F,GAAWtG,CAAQ,EAG/Bs/C,EAAS1lD,EAAM,YAAY,SAAUyH,EAAM,CAC7CwE,GAAQnT,EAAKguG,EAAoBA,EAAkBr/F,CAAI,EAAIA,CAAI,CACjE,EAAG,CAACq/F,CAAiB,CAAC,EAClBzyF,EAAY9H,GAAcm5C,EAAQ14C,GAAW5G,CAAQ,CAAC,EAC1D,OAAO2gG,EAAyB/mG,EAAM,aAAaoG,EAAU,CAC3D,IAAKiO,CACT,CAAG,EAAIjO,CACP,CAAC,EACG,QAAQ,IAAI,WAAa,eAC3BygG,GAAe,YAAc,kBChB/B,IAAIG,GAA8BhnG,EAAM,cAAc,IAAI,ECA1D,SAASmG,GAAQnX,EAAK,CACpB,OAAOA,EAAM,MAAM,QAAQA,CAAG,EAAIA,EAAM,CAACA,CAAG,EAAI,CAAA,CAClD,CACe,SAASi4G,GAAUC,EAAQjmG,EAAQkmG,EAAYC,EAAY,CACxE,OAAOpnG,EAAM,QAAQ,UAAY,CAC/B,IAAIqnG,EAAmBlhG,GAAQghG,GAA4DlmG,CAAM,EAC7FqmG,EAAmBnhG,GAAQihG,GAA4DnmG,CAAM,EAC7FsmG,EAAgB,IAAI,IAAIF,CAAgB,EACxCG,EAAgB,IAAI,IAAIF,CAAgB,EAC5C,OAAIJ,IACEK,EAAc,IAAI,OAAO,IAC3BA,EAAc,OAAO,OAAO,EAC5BA,EAAc,IAAI,OAAO,GAEvBC,EAAc,IAAI,OAAO,IAC3BA,EAAc,OAAO,OAAO,EAC5BA,EAAc,IAAI,OAAO,IAGtB,CAACD,EAAeC,CAAa,CACtC,EAAG,CAACN,EAAQjmG,EAAQkmG,EAAYC,CAAU,CAAC,CAC7C,CCrBA,SAASK,IAAa,CACpB,IAAIC,EAAK,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAA,EACzEC,EAAK,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAA,EACzEC,EAAe,UAAU,OAAS,EAAI,UAAU,CAAC,EAAI,OACzD,OAAIA,EACKF,EAAG,CAAC,IAAMC,EAAG,CAAC,EAEhBD,EAAG,CAAC,IAAMC,EAAG,CAAC,GAAKD,EAAG,CAAC,IAAMC,EAAG,CAAC,CAC1C,CACO,SAASE,GAAuBC,EAAmB1iE,EAAWm/D,EAAOqD,EAAc,CAGxF,QAFIlgF,EAAS68E,EAAM,OACfwD,EAAa,OAAO,KAAKD,CAAiB,EACrCthH,EAAI,EAAGA,EAAIuhH,EAAW,OAAQvhH,GAAK,EAAG,CAC7C,IAAIwhH,EACAC,EAAYF,EAAWvhH,CAAC,EAC5B,GAAIihH,IAAYO,EAAwBF,EAAkBG,CAAS,KAAO,MAAQD,IAA0B,OAAS,OAASA,EAAsB,OAAQtgF,EAAQkgF,CAAY,EAC9K,MAAO,GAAG,OAAOxiE,EAAW,aAAa,EAAE,OAAO6iE,CAAS,CAE/D,CACA,MAAO,EACT,CAGO,SAASC,GAAU9iE,EAAWkS,EAAQ40B,EAAWn+B,EAAgB,CACtE,OAAIuJ,IAGA40B,EACK,CACL,WAAY,GAAG,OAAO9mC,EAAW,GAAG,EAAE,OAAO8mC,CAAS,CAC5D,EAEMn+B,EACK,CACL,WAAYA,CAClB,EAES,KACT,CACO,SAASo6D,GAAOl7F,EAAK,CAC1B,OAAOA,EAAI,cAAc,WAC3B,CAOO,SAASm7F,GAAgBn7F,EAAK,CAInC,QAHIo7F,EAAe,CAAA,EACf9hH,EAAU0mB,GAAQ,KAAyB,OAASA,EAAI,cACxDq7F,EAAc,CAAC,SAAU,SAAU,OAAQ,MAAM,EAC9C/hH,GAAS,CACd,IAAIgiH,EAAwBJ,GAAO5hH,CAAO,EAAE,iBAAiBA,CAAO,EAClEiiH,EAAYD,EAAsB,UAClCE,EAAYF,EAAsB,UAClCG,EAAWH,EAAsB,SAC/B,CAACC,EAAWC,EAAWC,CAAQ,EAAE,KAAK,SAAUr/G,EAAG,CACrD,OAAOi/G,EAAY,SAASj/G,CAAC,CAC/B,CAAC,GACCg/G,EAAa,KAAK9hH,CAAO,EAE3BA,EAAUA,EAAQ,aACpB,CACA,OAAO8hH,CACT,CACO,SAASM,GAAMryF,EAAK,CACzB,IAAI3rB,EAAe,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,EACvF,OAAO,OAAO,MAAM2rB,CAAG,EAAI3rB,EAAe2rB,CAC5C,CACA,SAASsyF,GAAW55G,EAAK,CACvB,OAAO25G,GAAM,WAAW35G,CAAG,EAAG,CAAC,CACjC,CAuBO,SAAS65G,GAAeC,EAAUT,EAAc,CACrD,IAAIU,EAAc5zF,EAAc,CAAA,EAAI2zF,CAAQ,EAC5C,OAACT,GAAgB,CAAA,GAAI,QAAQ,SAAUp7F,EAAK,CAC1C,GAAI,EAAAA,aAAe,iBAAmBA,aAAe,iBAKrD,KAAI+7F,EAAyBb,GAAOl7F,CAAG,EAAE,iBAAiBA,CAAG,EAC3Dy7F,EAAWM,EAAuB,SAClCC,EAAqBD,EAAuB,mBAC5Cj8C,EAAiBi8C,EAAuB,eACxCE,EAAoBF,EAAuB,kBAC3Cl8C,EAAkBk8C,EAAuB,gBACzCG,EAAmBH,EAAuB,iBACxCI,EAAUn8F,EAAI,sBAAqB,EACnCo8F,EAAep8F,EAAI,aACrBq8F,EAAiBr8F,EAAI,aACrBs8F,EAAct8F,EAAI,YAClBu8F,EAAgBv8F,EAAI,YAClBw8F,EAAeb,GAAW77C,CAAc,EACxC28C,EAAkBd,GAAWM,CAAiB,EAC9CS,EAAgBf,GAAW97C,CAAe,EAC1C88C,EAAiBhB,GAAWO,CAAgB,EAC5CU,EAASlB,GAAM,KAAK,MAAMS,EAAQ,MAAQG,EAAc,GAAI,EAAI,GAAI,EACpEO,EAASnB,GAAM,KAAK,MAAMS,EAAQ,OAASC,EAAe,GAAI,EAAI,GAAI,EAGtEU,GAAkBR,EAAcC,EAAgBG,EAAgBC,GAAkBC,EAClFG,GAAmBX,EAAeC,EAAiBG,EAAeC,GAAmBI,EAGrFG,EAAuBR,EAAeK,EACtCI,EAA0BR,EAAkBI,EAC5CK,EAAwBR,EAAgBE,EACxCO,EAAyBR,EAAiBC,EAG1CQ,EAAkB,EAClBC,EAAmB,EACvB,GAAI5B,IAAa,OAAQ,CACvB,IAAI6B,EAAU3B,GAAWK,CAAkB,EAC3CoB,EAAkBE,EAAUV,EAC5BS,EAAmBC,EAAUT,CAC/B,CAGA,IAAIU,EAAUpB,EAAQ,EAAIe,EAAwBE,EAC9CI,EAASrB,EAAQ,EAAIa,EAAuBK,EAC5CI,EAAWF,EAAUpB,EAAQ,MAAQ,EAAIiB,EAAkBF,EAAwBC,EAAyBL,EAC5GY,EAAYF,EAASrB,EAAQ,OAAS,EAAIkB,EAAmBL,EAAuBC,EAA0BF,EAClHjB,EAAY,KAAO,KAAK,IAAIA,EAAY,KAAMyB,CAAO,EACrDzB,EAAY,IAAM,KAAK,IAAIA,EAAY,IAAK0B,CAAM,EAClD1B,EAAY,MAAQ,KAAK,IAAIA,EAAY,MAAO2B,CAAQ,EACxD3B,EAAY,OAAS,KAAK,IAAIA,EAAY,OAAQ4B,CAAS,EAC7D,CAAC,EACM5B,CACT,CCjJA,SAAS6B,GAAcn9F,EAAM,CAC3B,IAAIma,EAAS,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,EAC7EijF,EAAY,GAAG,OAAOjjF,CAAM,EAC5BqP,EAAQ4zE,EAAU,MAAM,UAAU,EACtC,OAAI5zE,EACKxpB,GAAQ,WAAWwpB,EAAM,CAAC,CAAC,EAAI,KAEjC,WAAW4zE,CAAS,CAC7B,CACA,SAASC,GAAgBv5F,EAAMqW,EAAQ,CACrC,IAAIlsB,EAAOksB,GAAU,CAAA,EACnBhsB,EAAQub,GAAezb,EAAM,CAAC,EAC9B04D,EAAUx4D,EAAM,CAAC,EACjBy4D,EAAUz4D,EAAM,CAAC,EACnB,MAAO,CAACgvG,GAAcr5F,EAAK,MAAO6iD,CAAO,EAAGw2C,GAAcr5F,EAAK,OAAQ8iD,CAAO,CAAC,CACjF,CACA,SAAS02C,IAAc,CACrB,IAAIrjF,EAAS,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACjF,MAAO,CAACA,EAAO,CAAC,EAAGA,EAAO,CAAC,CAAC,CAC9B,CACA,SAASsjF,GAAcz5F,EAAMmW,EAAQ,CACnC,IAAIujF,EAAYvjF,EAAO,CAAC,EACpBwjF,EAAYxjF,EAAO,CAAC,EACpBtW,EACAC,EAGJ,OAAI45F,IAAc,IAChB55F,EAAIE,EAAK,EACA05F,IAAc,IACvB55F,EAAIE,EAAK,EAAIA,EAAK,OAElBF,EAAIE,EAAK,EAAIA,EAAK,OAAS,EAIzB25F,IAAc,IAChB95F,EAAIG,EAAK,EACA25F,IAAc,IACvB95F,EAAIG,EAAK,EAAIA,EAAK,MAElBH,EAAIG,EAAK,EAAIA,EAAK,MAAQ,EAErB,CACL,EAAGH,EACH,EAAGC,CACP,CACA,CACA,SAAS85F,GAAczjF,EAAQt/B,EAAO,CACpC,IAAIgjH,EAAa,CACf,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,GACP,EACE,OAAO1jF,EAAO,IAAI,SAAU2jF,EAAO,EAAG,CACpC,OAAI,IAAMjjH,EACDgjH,EAAWC,CAAK,GAAK,IAEvBA,CACT,CAAC,EAAE,KAAK,EAAE,CACZ,CACe,SAASC,GAASlkC,EAAMmkC,EAAUzmH,EAAQmjH,EAAWH,EAAmB0D,EAAYC,EAAc,CAC/G,IAAI1qE,EAAkB/gC,EAAM,SAAS,CACjC,MAAO,GACP,QAAS,EACT,QAAS,EACT,QAAS,EACT,QAAS,EACT,OAAQ,EACR,OAAQ,EACR,OAAQ,EACR,OAAQ,EACR,MAAO8nG,EAAkBG,CAAS,GAAK,CAAA,CAC7C,CAAK,EACDjnE,EAAmB7pB,GAAe4pB,EAAiB,CAAC,EACpD2qE,EAAa1qE,EAAiB,CAAC,EAC/B2qE,EAAgB3qE,EAAiB,CAAC,EAChC4qE,EAAgB5rG,EAAM,OAAO,CAAC,EAC9BqoG,EAAeroG,EAAM,QAAQ,UAAY,CAC3C,OAAKurG,EAGEnD,GAAgBmD,CAAQ,EAFtB,CAAA,CAGX,EAAG,CAACA,CAAQ,CAAC,EAKTM,EAAc7rG,EAAM,OAAO,EAAE,EAC7B8rG,EAAiB,UAA0B,CAC7CD,EAAY,QAAU,CAAA,CACxB,EACKzkC,GACH0kC,EAAc,EAIhB,IAAIjG,EAAUplE,GAAS,UAAY,CACjC,GAAI8qE,GAAYzmH,GAAUsiF,EAAM,CA4J9B,IAAS2kC,GAAT,SAAoC33C,GAASC,GAAS,CACpD,IAAI23C,GAAO,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAIjD,GAC3Er9G,GAAIugH,EAAU,EAAI73C,GAClB/wE,GAAI4oH,EAAU,EAAI53C,GAClBnuE,GAAIwF,GAAIiqG,EACR5tF,GAAI1kB,GAAIoyG,GACRyW,GAAW,KAAK,IAAIxgH,GAAGsgH,GAAK,IAAI,EAChCG,GAAW,KAAK,IAAI9oH,GAAG2oH,GAAK,GAAG,EAC/BI,GAAW,KAAK,IAAIlmH,GAAG8lH,GAAK,KAAK,EACjCK,GAAW,KAAK,IAAItkG,GAAGikG,GAAK,MAAM,EACtC,OAAO,KAAK,IAAI,GAAII,GAAWF,KAAaG,GAAWF,GAAS,CAClE,EA4BSG,GAAT,UAAiC,CAC/BC,GAAaN,EAAU,EAAIO,GAC3BC,GAAkBF,GAAa9W,GAC/BiX,GAAaT,EAAU,EAAIU,GAC3BC,GAAiBF,GAAa/W,CAChC,EAvMA,IAAIkX,EAAuBC,EAAcC,EAAcC,EACnDC,EAAe1B,EACfriC,EAAM+jC,EAAa,cACnBnsF,EAAMqnF,GAAO8E,CAAY,EACzBC,EAAwBpsF,EAAI,iBAAiBmsF,CAAY,EAC3DE,EAAgBD,EAAsB,SACpCE,EAAaH,EAAa,MAAM,KAChCI,EAAYJ,EAAa,MAAM,IAC/BK,EAAcL,EAAa,MAAM,MACjCM,EAAeN,EAAa,MAAM,OAClCO,EAAiBP,EAAa,MAAM,SAGpCQ,EAAgBt4F,EAAcA,EAAc,CAAA,EAAI2yF,EAAkBG,CAAS,CAAC,EAAGuD,CAAU,EAGzFkC,EAAqBxkC,EAAI,cAAc,KAAK,GAC/C2jC,EAAwBI,EAAa,iBAAmB,MAAQJ,IAA0B,QAAUA,EAAsB,YAAYa,CAAkB,EACzJA,EAAmB,MAAM,KAAO,GAAG,OAAOT,EAAa,WAAY,IAAI,EACvES,EAAmB,MAAM,IAAM,GAAG,OAAOT,EAAa,UAAW,IAAI,EACrES,EAAmB,MAAM,SAAWP,EACpCO,EAAmB,MAAM,OAAS,GAAG,OAAOT,EAAa,aAAc,IAAI,EAC3ES,EAAmB,MAAM,MAAQ,GAAG,OAAOT,EAAa,YAAa,IAAI,EAGzEA,EAAa,MAAM,KAAO,IAC1BA,EAAa,MAAM,IAAM,IACzBA,EAAa,MAAM,MAAQ,OAC3BA,EAAa,MAAM,OAAS,OAC5BA,EAAa,MAAM,SAAW,SAG9B,IAAIU,EACJ,GAAI,MAAM,QAAQ7oH,CAAM,EACtB6oH,EAAa,CACX,EAAG7oH,EAAO,CAAC,EACX,EAAGA,EAAO,CAAC,EACX,MAAO,EACP,OAAQ,CAClB,MACa,CACL,IAAI8oH,EAASC,EACTt8F,EAAOzsB,EAAO,sBAAqB,EACvCysB,EAAK,GAAKq8F,EAAUr8F,EAAK,KAAO,MAAQq8F,IAAY,OAASA,EAAUr8F,EAAK,KAC5EA,EAAK,GAAKs8F,EAAUt8F,EAAK,KAAO,MAAQs8F,IAAY,OAASA,EAAUt8F,EAAK,IAC5Eo8F,EAAa,CACX,EAAGp8F,EAAK,EACR,EAAGA,EAAK,EACR,MAAOA,EAAK,MACZ,OAAQA,EAAK,MACvB,CACM,CACA,IAAI06F,EAAYgB,EAAa,sBAAqB,EAC9Ca,EAAyBhtF,EAAI,iBAAiBmsF,CAAY,EAC5Dp8F,EAASi9F,EAAuB,OAChCl9F,EAAQk9F,EAAuB,MACjC7B,EAAU,GAAKa,EAAeb,EAAU,KAAO,MAAQa,IAAiB,OAASA,EAAeb,EAAU,KAC1GA,EAAU,GAAKc,EAAed,EAAU,KAAO,MAAQc,IAAiB,OAASA,EAAed,EAAU,IAC1G,IAAI8B,GAAuB7kC,EAAI,gBAC7B14D,GAAcu9F,GAAqB,YACnCt9F,GAAes9F,GAAqB,aACpCznC,GAAcynC,GAAqB,YACnCxnC,GAAewnC,GAAqB,aACpCC,EAAYD,GAAqB,UACjCE,EAAaF,GAAqB,WAChCtY,GAAcwW,EAAU,OACxBtW,EAAasW,EAAU,MACvBx5C,GAAek7C,EAAW,OAC1Bn7C,GAAcm7C,EAAW,MAGzBO,GAAgB,CAClB,KAAM,EACN,IAAK,EACL,MAAO19F,GACP,OAAQC,EAChB,EACU09F,GAAe,CACjB,KAAM,CAACF,EACP,IAAK,CAACD,EACN,MAAO1nC,GAAc2nC,EACrB,OAAQ1nC,GAAeynC,CAC/B,EACUI,GAAaX,EAAc,WAC3BY,GAAU,UACVC,GAAgB,eAChBF,KAAe,UAAYA,KAAeE,KAC5CF,GAAaC,IAEf,IAAIE,GAAiBH,KAAeE,GAChCE,GAAmB3F,GAAesF,GAAc9F,CAAY,EAC5DoG,GAAoB5F,GAAeqF,GAAe7F,CAAY,EAC9DU,GAAcqF,KAAeC,GAAUI,GAAoBD,GAI3DE,EAAyBH,GAAiBE,GAAoB1F,GAGlEkE,EAAa,MAAM,KAAO,OAC1BA,EAAa,MAAM,IAAM,OACzBA,EAAa,MAAM,MAAQ,IAC3BA,EAAa,MAAM,OAAS,IAC5B,IAAI0B,GAAkB1B,EAAa,sBAAqB,EAGxDA,EAAa,MAAM,KAAOG,EAC1BH,EAAa,MAAM,IAAMI,EACzBJ,EAAa,MAAM,MAAQK,EAC3BL,EAAa,MAAM,OAASM,EAC5BN,EAAa,MAAM,SAAWO,GAC7BR,EAAyBC,EAAa,iBAAmB,MAAQD,IAA2B,QAAUA,EAAuB,YAAYU,CAAkB,EAG5J,IAAIkB,GAAUjG,GAAM,KAAK,MAAMhT,EAAa,WAAW/kF,CAAK,EAAI,GAAI,EAAI,GAAI,EACxEi+F,GAAUlG,GAAM,KAAK,MAAMlT,GAAc,WAAW5kF,CAAM,EAAI,GAAI,EAAI,GAAI,EAG9E,GAAI+9F,KAAY,GAAKC,KAAY,GAAKrnG,GAAM1iB,CAAM,GAAK,CAACimE,GAAUjmE,CAAM,EACtE,OAIF,IAAI8iC,GAAS6lF,EAAc,OACzBqB,GAAerB,EAAc,aAC3BsB,GAAmBjE,GAAgBmB,EAAWrkF,EAAM,EACtDonF,GAAoB73F,GAAe43F,GAAkB,CAAC,EACtDE,GAAeD,GAAkB,CAAC,EAClCE,GAAeF,GAAkB,CAAC,EAChCG,GAAoBrE,GAAgB6C,EAAYmB,EAAY,EAC9DM,GAAoBj4F,GAAeg4F,GAAmB,CAAC,EACvDE,GAAgBD,GAAkB,CAAC,EACnCE,GAAgBF,GAAkB,CAAC,EACrCzB,EAAW,GAAK0B,GAChB1B,EAAW,GAAK2B,GAGhB,IAAInwF,GAAQsuF,EAAc,QAAU,CAAA,EAClCnuF,GAAQnI,GAAegI,GAAO,CAAC,EAC/BowF,GAAajwF,GAAM,CAAC,EACpBkwF,GAAclwF,GAAM,CAAC,EACnBylF,GAAegG,GAAYyE,EAAW,EACtC1K,GAAciG,GAAYwE,EAAU,EACpCE,GAAmBzE,GAAc2C,EAAY5I,EAAY,EACzD2K,GAAkB1E,GAAciB,EAAWnH,EAAW,EAGtD6K,GAAgBx6F,EAAc,CAAA,EAAIs4F,CAAa,EAG/Cd,GAAc8C,GAAiB,EAAIC,GAAgB,EAAIT,GACvDzC,GAAciD,GAAiB,EAAIC,GAAgB,EAAIR,GAgBvDU,GAAgC7D,GAA2BY,GAAaH,EAAW,EAGnFqD,GAAkC9D,GAA2BY,GAAaH,GAAaiC,EAAiB,EAGxGqB,GAAqB9E,GAAc2C,EAAY,CAAC,IAAK,GAAG,CAAC,EACzDoC,GAAoB/E,GAAciB,EAAW,CAAC,IAAK,GAAG,CAAC,EACvD+D,GAAqBhF,GAAc2C,EAAY,CAAC,IAAK,GAAG,CAAC,EACzDsC,GAAoBjF,GAAciB,EAAW,CAAC,IAAK,GAAG,CAAC,EACvDvD,GAAW+E,EAAc,UAAY,CAAA,EACrCyC,GAAUxH,GAAS,QACrByH,GAAUzH,GAAS,QACnB0H,GAAS1H,GAAS,OAClB2H,GAAS3H,GAAS,OAChB4H,GAAgB,SAAuBthH,GAAK,CAC9C,OAAI,OAAOA,IAAQ,UACVA,GAEFA,IAAO,CAChB,EAGIu9G,GACAE,GACAC,GACAE,GAOJN,GAAqB,EAGrB,IAAIiE,GAAcD,GAAcH,EAAO,EACnCK,GAAS1L,GAAY,CAAC,IAAMC,GAAa,CAAC,EAG9C,GAAIwL,IAAezL,GAAY,CAAC,IAAM,MAAQ2H,GAAkBiC,EAAuB,QAAU7C,EAAY,QAAQ,IAAK,CACxH,IAAI4E,GAAiBjE,GACjBgE,GACFC,IAAkBhb,GAAchjC,GAEhCg+C,GAAiBX,GAAmB,EAAIG,GAAkB,EAAIf,GAEhE,IAAIwB,GAAiB3E,GAA2BY,GAAa8D,EAAc,EACvEE,GAA0B5E,GAA2BY,GAAa8D,GAAgBhC,EAAiB,EAGvGiC,GAAiBd,IAAiCc,KAAmBd,KAAkC,CAACrB,IAExGoC,IAA2Bd,KACzBhE,EAAY,QAAQ,GAAK,GACzBW,GAAciE,GACdvB,GAAe,CAACA,GAChBS,GAAc,OAAS,CAACxE,GAAcrG,GAAa,CAAC,EAAGqG,GAAcpG,GAAc,CAAC,CAAC,GAErF8G,EAAY,QAAQ,GAAK,EAE7B,CAGA,GAAI0E,IAAezL,GAAY,CAAC,IAAM,MAAQyH,GAAamC,EAAuB,KAAO7C,EAAY,QAAQ,IAAK,CAChH,IAAI+E,GAAkBpE,GAClBgE,GACFI,IAAmBnb,GAAchjC,GAEjCm+C,GAAkBZ,GAAmB,EAAID,GAAkB,EAAIb,GAEjE,IAAI2B,GAAkB9E,GAA2BY,GAAaiE,EAAe,EACzEE,GAA2B/E,GAA2BY,GAAaiE,GAAiBnC,EAAiB,EAGzGoC,GAAkBjB,IAAiCiB,KAAoBjB,KAAkC,CAACrB,IAE1GuC,IAA4BjB,KAC1BhE,EAAY,QAAQ,GAAK,GACzBW,GAAcoE,GACd1B,GAAe,CAACA,GAChBS,GAAc,OAAS,CAACxE,GAAcrG,GAAa,CAAC,EAAGqG,GAAcpG,GAAc,CAAC,CAAC,GAErF8G,EAAY,QAAQ,GAAK,EAE7B,CAGA,IAAIkF,GAAcT,GAAcJ,EAAO,EAGnCc,GAASlM,GAAY,CAAC,IAAMC,GAAa,CAAC,EAG9C,GAAIgM,IAAejM,GAAY,CAAC,IAAM,MAAQ8H,GAAiB8B,EAAuB,OAAS7C,EAAY,QAAQ,IAAK,CACtH,IAAIoF,GAAiBtE,GACjBqE,GACFC,IAAkBtb,EAAanjC,GAE/By+C,GAAiBnB,GAAmB,EAAIG,GAAkB,EAAIhB,GAEhE,IAAIiC,GAAmBnF,GAA2BkF,GAAgBzE,EAAW,EACzE2E,GAA4BpF,GAA2BkF,GAAgBzE,GAAaiC,EAAiB,EAGzGyC,GAAmBtB,IAAiCsB,KAAqBtB,KAAkC,CAACrB,IAE5G4C,IAA6BtB,KAC3BhE,EAAY,QAAQ,GAAK,GACzBc,GAAcsE,GACdhC,GAAe,CAACA,GAChBU,GAAc,OAAS,CAACxE,GAAcrG,GAAa,CAAC,EAAGqG,GAAcpG,GAAc,CAAC,CAAC,GAErF8G,EAAY,QAAQ,GAAK,EAE7B,CAGA,GAAIkF,IAAejM,GAAY,CAAC,IAAM,MAAQ4H,GAAagC,EAAuB,MAAQ7C,EAAY,QAAQ,IAAK,CACjH,IAAIuF,GAAkBzE,GAClBqE,GACFI,IAAmBzb,EAAanjC,GAEhC4+C,GAAkBpB,GAAmB,EAAID,GAAkB,EAAId,GAEjE,IAAIoC,GAAmBtF,GAA2BqF,GAAiB5E,EAAW,EAC1E8E,GAA4BvF,GAA2BqF,GAAiB5E,GAAaiC,EAAiB,EAG1G4C,GAAmBzB,IAAiCyB,KAAqBzB,KAAkC,CAACrB,IAE5G+C,IAA6BzB,KAC3BhE,EAAY,QAAQ,GAAK,GACzBc,GAAcyE,GACdnC,GAAe,CAACA,GAChBU,GAAc,OAAS,CAACxE,GAAcrG,GAAa,CAAC,EAAGqG,GAAcpG,GAAc,CAAC,CAAC,GAErF8G,EAAY,QAAQ,GAAK,EAE7B,CAGAS,GAAqB,EACrB,IAAIiF,GAAYnB,KAAW,GAAO,EAAIA,GAClC,OAAOmB,IAAc,WAEnB7E,GAAa+B,GAAkB,OACjC9B,IAAeD,GAAa+B,GAAkB,KAAOQ,GACjDtB,EAAW,EAAIn7C,GAAci8C,GAAkB,KAAO8C,KACxD5E,IAAegB,EAAW,EAAIc,GAAkB,KAAOj8C,GAAc++C,KAKrE3E,GAAiB6B,GAAkB,QACrC9B,IAAeC,GAAiB6B,GAAkB,MAAQQ,GACtDtB,EAAW,EAAIc,GAAkB,MAAQ8C,KAC3C5E,IAAegB,EAAW,EAAIc,GAAkB,MAAQ8C,MAI9D,IAAIC,GAAYnB,KAAW,GAAO,EAAIA,GAClC,OAAOmB,IAAc,WAEnBjF,GAAakC,GAAkB,MACjCjC,IAAeD,GAAakC,GAAkB,IAAMS,GAIhDvB,EAAW,EAAIl7C,GAAeg8C,GAAkB,IAAM+C,KACxDhF,IAAemB,EAAW,EAAIc,GAAkB,IAAMh8C,GAAe++C,KAKrE/E,GAAkBgC,GAAkB,SACtCjC,IAAeC,GAAkBgC,GAAkB,OAASS,GACxDvB,EAAW,EAAIc,GAAkB,OAAS+C,KAC5ChF,IAAemB,EAAW,EAAIc,GAAkB,OAAS+C,MAO/D,IAAIC,GAAYxF,EAAU,EAAIU,GAC1B+E,GAAaD,GAAY9b,EACzBgc,GAAW1F,EAAU,EAAIO,GACzBoF,GAAcD,GAAWlc,GACzBoc,GAAalE,EAAW,EACxBmE,GAAcD,GAAar/C,GAC3Bu/C,GAAYpE,EAAW,EACvBqE,GAAeD,GAAYt/C,GAC3Bw/C,GAAU,KAAK,IAAIR,GAAWI,EAAU,EACxCK,GAAW,KAAK,IAAIR,GAAYI,EAAW,EAC3CK,IAAWF,GAAUC,IAAY,EACjCE,GAAaD,GAAUV,GACvBY,GAAS,KAAK,IAAIV,GAAUI,EAAS,EACrCO,GAAY,KAAK,IAAIV,GAAaI,EAAY,EAC9CO,IAAWF,GAASC,IAAa,EACjCE,GAAaD,GAAUZ,GAC3BlG,GAAiB,MAAmCA,EAAaF,EAAUoE,EAAa,EAGxF,IAAI8C,GAAgB9D,GAAgB,MAAQ1C,EAAU,GAAKU,GAAcV,EAAU,OAC/EyG,GAAiB/D,GAAgB,OAAS1C,EAAU,GAAKO,GAAcP,EAAU,QACjF2C,KAAY,IACdjC,GAAc,KAAK,MAAMA,EAAW,EACpC8F,GAAgB,KAAK,MAAMA,EAAa,GAEtC5D,KAAY,IACdrC,GAAc,KAAK,MAAMA,EAAW,EACpCkG,GAAiB,KAAK,MAAMA,EAAc,GAE5C,IAAIC,GAAiB,CACnB,MAAO,GACP,QAAShG,GAAciC,GACvB,QAASpC,GAAcqC,GACvB,QAAS4D,GAAgB7D,GACzB,QAAS8D,GAAiB7D,GAC1B,OAAQuD,GAAaxD,GACrB,OAAQ4D,GAAa3D,GACrB,OAAQD,GACR,OAAQC,GACR,MAAOc,EACf,EACMhE,EAAcgH,EAAc,CAC9B,CACF,CAAC,EACGC,EAAe,UAAwB,CACzChH,EAAc,SAAW,EACzB,IAAI/mG,EAAK+mG,EAAc,QAGvB,QAAQ,UAAU,KAAK,UAAY,CAC7BA,EAAc,UAAY/mG,GAC5BghG,EAAO,CAEX,CAAC,CACH,EAGIgN,EAAa,UAAsB,CACrClH,EAAc,SAAUmH,EAAK,CAC3B,OAAO39F,EAAcA,EAAc,CAAA,EAAI29F,CAAG,EAAG,CAAA,EAAI,CAC/C,MAAO,EACf,CAAO,CACH,CAAC,CACH,EACApzF,OAAAA,GAAgBmzF,EAAY,CAAC5K,CAAS,CAAC,EACvCvoF,GAAgB,UAAY,CACrB0nD,GACHyrC,EAAU,CAEd,EAAG,CAACzrC,CAAI,CAAC,EACF,CAACskC,EAAW,MAAOA,EAAW,QAASA,EAAW,QAASA,EAAW,QAASA,EAAW,QAASA,EAAW,OAAQA,EAAW,OAAQA,EAAW,OAAQA,EAAW,OAAQA,EAAW,MAAOkH,CAAY,CACtN,CChhBe,SAASzsB,GAAS/e,EAAMtiF,EAAQgxG,EAAO+P,EAASkN,EAAU,CACvErzF,GAAgB,UAAY,CAC1B,GAAI0nD,GAAQtiF,GAAUgxG,EAAO,CAO3B,IAASkd,EAAT,UAAwB,CACtBnN,EAAO,EACPkN,EAAQ,CACV,EATA,IAAIE,EAAgBnuH,EAChBmoH,EAAenX,EACfod,EAAmB9K,GAAgB6K,CAAa,EAChDE,EAAkB/K,GAAgB6E,CAAY,EAC9CnsF,EAAMqnF,GAAO8E,CAAY,EACzBmG,EAAa,IAAI,IAAI,CAACtyF,CAAG,EAAE,OAAO/K,GAAmBm9F,CAAgB,EAAGn9F,GAAmBo9F,CAAe,CAAC,CAAC,EAKhH,OAAAC,EAAW,QAAQ,SAAUC,EAAU,CACrCA,EAAS,iBAAiB,SAAUL,EAAc,CAChD,QAAS,EACnB,CAAS,CACH,CAAC,EACDlyF,EAAI,iBAAiB,SAAUkyF,EAAc,CAC3C,QAAS,EACjB,CAAO,EAGDnN,EAAO,EACA,UAAY,CACjBuN,EAAW,QAAQ,SAAUC,EAAU,CACrCA,EAAS,oBAAoB,SAAUL,CAAY,EACnDlyF,EAAI,oBAAoB,SAAUkyF,CAAY,CAChD,CAAC,CACH,CACF,CACF,EAAG,CAAC5rC,EAAMtiF,EAAQgxG,CAAK,CAAC,CAC1B,CC/Be,SAASwd,GAAYlsC,EAAMmsC,EAAaC,EAAWjI,EAAUl/B,EAAMI,EAAcgnC,EAAgB7b,EAAa,CAC3H,IAAI8b,EAAU1zG,EAAM,OAAOonE,CAAI,EAC/BssC,EAAQ,QAAUtsC,EAClB,IAAIusC,EAAsB3zG,EAAM,OAAO,EAAK,EAG5CA,EAAM,UAAU,UAAY,CAC1B,GAAIuzG,GAAehI,IAAa,CAACl/B,GAAQI,GAAe,CACtD,IAAImnC,EAAgB,UAAyB,CAC3CD,EAAoB,QAAU,EAChC,EACIE,EAAiB,SAAwB1vH,EAAG,CAC9C,IAAI2vH,EACAJ,EAAQ,SAAW,CAACD,IAAiBK,EAAkB3vH,EAAE,gBAAkB,MAAQ2vH,IAAoB,SAAWA,EAAkBA,EAAgB,KAAK3vH,CAAC,KAAO,MAAQ2vH,IAAoB,OAAS,OAASA,EAAgB,CAAC,IAAM3vH,EAAE,MAAM,GAAK,CAACwvH,EAAoB,SAC1Q/b,EAAY,EAAK,CAErB,EACI92E,EAAMqnF,GAAOoD,CAAQ,EACzBzqF,EAAI,iBAAiB,cAAe8yF,EAAe,EAAI,EACvD9yF,EAAI,iBAAiB,YAAa+yF,EAAgB,EAAI,EACtD/yF,EAAI,iBAAiB,cAAe+yF,EAAgB,EAAI,EAGxD,IAAIE,EAAmBh2D,GAAcy1D,CAAS,EAO9C,GANIO,IACFA,EAAiB,iBAAiB,YAAaF,EAAgB,EAAI,EACnEE,EAAiB,iBAAiB,cAAeF,EAAgB,EAAI,GAInE,QAAQ,IAAI,WAAa,aAAc,CACzC,IAAIG,EAAuBC,EACvBC,EAAaV,GAAc,OAAiCQ,EAAwBR,EAAU,eAAiB,MAAQQ,IAA0B,OAAS,OAASA,EAAsB,KAAKR,CAAS,EACvMW,GAAaF,EAAwB1I,EAAS,eAAiB,MAAQ0I,IAA0B,OAAS,OAASA,EAAsB,KAAK1I,CAAQ,EAC1J9kG,GAAQytG,IAAeC,EAAW,+DAA+D,CACnG,CACA,OAAO,UAAY,CACjBrzF,EAAI,oBAAoB,cAAe8yF,EAAe,EAAI,EAC1D9yF,EAAI,oBAAoB,YAAa+yF,EAAgB,EAAI,EACzD/yF,EAAI,oBAAoB,cAAe+yF,EAAgB,EAAI,EACvDE,IACFA,EAAiB,oBAAoB,YAAaF,EAAgB,EAAI,EACtEE,EAAiB,oBAAoB,cAAeF,EAAgB,EAAI,EAE5E,CACF,CACF,EAAG,CAACN,EAAaC,EAAWjI,EAAUl/B,EAAMI,CAAY,CAAC,EACzD,SAAS2nC,GAAqB,CAC5BT,EAAoB,QAAU,EAChC,CACA,OAAOS,CACT,CCpDA,IAAIzoE,GAAY,CAAC,YAAa,WAAY,SAAU,aAAc,aAAc,eAAgB,sBAAuB,uBAAwB,0BAA2B,kBAAmB,kBAAmB,aAAc,YAAa,OAAQ,eAAgB,oBAAqB,cAAe,cAAe,qBAAsB,QAAS,iBAAkB,aAAc,iBAAkB,oBAAqB,aAAc,SAAU,UAAW,6BAA8B,QAAS,aAAc,eAAgB,eAAgB,QAAS,cAAe,aAAc,sBAAuB,iBAAkB,qBAAsB,gBAAiB,YAAa,mBAAmB,EA0BnqB,SAAS0oE,IAAkB,CAChC,IAAIC,EAAkB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAIpqG,GACtFqqG,EAAuBv0G,EAAM,WAAW,SAAU3G,EAAOP,EAAK,CAChE,IAAIs9D,EAAmB/8D,EAAM,UAC3B+rC,EAAYgxB,IAAqB,OAAS,mBAAqBA,EAC/DhwD,EAAW/M,EAAM,SACjBm7G,EAAgBn7G,EAAM,OACtB4H,EAASuzG,IAAkB,OAAS,QAAUA,EAC9CrN,EAAa9tG,EAAM,WACnB+tG,EAAa/tG,EAAM,WACnBo7G,EAAep7G,EAAM,aACrBq7G,EAAsBr7G,EAAM,oBAC5Bs7G,EAAuBt7G,EAAM,qBAC7Bu7G,EAA0Bv7G,EAAM,wBAChCw7G,EAAkBx7G,EAAM,gBACxBy7G,EAAwBz7G,EAAM,gBAC9B07G,EAAkBD,IAA0B,OAAS,GAAMA,EAC3DE,EAAa37G,EAAM,WACnB47G,EAAY57G,EAAM,UAClBgzE,EAAOhzE,EAAM,KACbmzE,EAAsBnzE,EAAM,aAC5BozE,EAAeD,IAAwB,OAAS,GAAOA,EACvDnuC,EAAoBhlC,EAAM,kBAC1Bu6C,EAAcv6C,EAAM,YACpBkuE,EAAcluE,EAAM,YACpB67G,EAAqB77G,EAAM,mBAC3By8F,EAAQz8F,EAAM,MACd87G,EAAiB97G,EAAM,eACvB+7G,EAAa/7G,EAAM,WACnBg8G,EAAiBh8G,EAAM,eACvBi8G,EAAwBj8G,EAAM,kBAC9ByuG,EAAoBwN,IAA0B,OAAS,CAAA,EAAKA,EAC5D9J,EAAanyG,EAAM,WACnB4tD,EAAS5tD,EAAM,OACfysG,EAAUzsG,EAAM,QAChBk8G,EAA6Bl8G,EAAM,2BACnCksG,EAAQlsG,EAAM,MACdm8G,EAAan8G,EAAM,WACnBo8G,EAAep8G,EAAM,aACrBoyG,EAAepyG,EAAM,aACrBmrG,EAAQnrG,EAAM,MACdq8G,GAAcr8G,EAAM,YACpBmsG,GAAansG,EAAM,WACnBs8G,GAAsBt8G,EAAM,oBAC5Bu8G,GAAiBv8G,EAAM,eACvBizE,GAAqBjzE,EAAM,mBAC3BkzE,EAAgBlzE,EAAM,cACtB+lD,EAAY/lD,EAAM,UAClBytG,GAAoBztG,EAAM,kBAC1Bu9C,EAAY38B,GAAyB5gB,EAAOsyC,EAAS,EACnDkqE,GAAoBtuC,GAAe2tC,GAAsB,GAGzDn0E,GAAkB/gC,EAAM,SAAS,EAAK,EACxCghC,GAAmB7pB,GAAe4pB,GAAiB,CAAC,EACpDmmE,GAASlmE,GAAiB,CAAC,EAC3B80E,GAAY90E,GAAiB,CAAC,EAChCthB,GAAgB,UAAY,CAC1Bo2F,GAAUC,GAAQ,CAAE,CACtB,EAAG,CAAA,CAAE,EAGL,IAAIC,GAAmBh2G,EAAM,OAAO,EAAE,EAClCm5C,GAAgBn5C,EAAM,WAAWgnG,EAAc,EAC/C9oE,GAAUl+B,EAAM,QAAQ,UAAY,CACtC,MAAO,CACL,iBAAkB,SAA0B6E,GAAIoxG,GAAa,CAC3DD,GAAiB,QAAQnxG,EAAE,EAAIoxG,GAC/B98D,IAAkB,MAAoCA,GAAc,iBAAiBt0C,GAAIoxG,EAAW,CACtG,CACR,CACI,EAAG,CAAC98D,EAAa,CAAC,EAGdt0C,GAAKkmC,GAAK,EACVo6B,GAAmBnlE,EAAM,SAAS,IAAI,EACxColE,GAAmBjuD,GAAeguD,GAAkB,CAAC,EACrDomC,EAAWnmC,GAAiB,CAAC,EAC7B8wC,GAAc9wC,GAAiB,CAAC,EAG9B+wC,GAAmBn2G,EAAM,OAAO,IAAI,EACpCo2G,GAAc31E,GAAS,SAAUh5B,GAAM,CACzC0uG,GAAiB,QAAU1uG,GACvBD,GAAMC,EAAI,GAAK8jG,IAAa9jG,IAC9ByuG,GAAYzuG,EAAI,EAElB0xC,IAAkB,MAAoCA,GAAc,iBAAiBt0C,GAAI4C,EAAI,CAC/F,CAAC,EAIG4uG,GAAmBr2G,EAAM,SAAS,IAAI,EACxCs2G,GAAmBn/F,GAAek/F,GAAkB,CAAC,EACrD7C,GAAY8C,GAAiB,CAAC,EAC9BC,GAAeD,GAAiB,CAAC,EAG/BE,GAAqBx2G,EAAM,OAAO,IAAI,EACtCy2G,GAAeh2E,GAAS,SAAUh5B,GAAM,CACtCD,GAAMC,EAAI,GAAK+rG,KAAc/rG,KAC/B8uG,GAAa9uG,EAAI,EACjB+uG,GAAmB,QAAU/uG,GAEjC,CAAC,EAGGpB,GAAQrG,EAAM,SAAS,KAAKoG,CAAQ,EACpCswG,IAAoBrwG,IAAU,KAA2B,OAASA,GAAM,QAAU,CAAA,EAClFswG,GAAa,CAAA,EACblD,GAAiBhzE,GAAS,SAAUxzB,GAAK,CAC3C,IAAI2pG,GAAgBC,GAChBC,GAAWtD,GACf,OAAQsD,IAAa,KAA8B,OAASA,GAAS,SAAS7pG,EAAG,MAAQ2pG,GAAiB74D,GAAc+4D,EAAQ,KAAO,MAAQF,KAAmB,OAAS,OAASA,GAAe,QAAU3pG,IAAOA,KAAQ6pG,KAAavL,GAAa,KAA8B,OAASA,EAAS,SAASt+F,EAAG,MAAQ4pG,GAAkB94D,GAAcwtD,CAAQ,KAAO,MAAQsL,KAAoB,OAAS,OAASA,GAAgB,QAAU5pG,IAAOA,KAAQs+F,GAAY,OAAO,OAAOyK,GAAiB,OAAO,EAAE,KAAK,SAAUC,GAAa,CAC9gB,OAAQA,IAAgB,KAAiC,OAASA,GAAY,SAAShpG,EAAG,IAAMA,KAAQgpG,EAC1G,CAAC,CACH,CAAC,EAGGc,GAAmB7O,GAAU9iE,EAAWswE,GAAaE,GAAgBD,EAAmB,EACxFqB,GAAkB9O,GAAU9iE,EAAWogE,GAAYj5B,EAAeD,EAAkB,EAGpF2qC,GAAmBj3G,EAAM,SAAS00G,GAAuB,EAAK,EAChEwC,GAAmB//F,GAAe8/F,GAAkB,CAAC,EACrDE,GAAeD,GAAiB,CAAC,EACjCE,GAAkBF,GAAiB,CAAC,EAGlCG,GAAa5C,GAAkE0C,GAG/EG,GAAgB72E,GAAS,SAAU82E,GAAU,CAC3C9C,IAAiB,QACnB2C,GAAgBG,EAAQ,CAE5B,CAAC,EACD73F,GAAgB,UAAY,CAC1B03F,GAAgB3C,GAAgB,EAAK,CACvC,EAAG,CAACA,CAAY,CAAC,EACjB,IAAIf,GAAU1zG,EAAM,OAAOq3G,EAAU,EACrC3D,GAAQ,QAAU2D,GAClB,IAAIG,GAAiBx3G,EAAM,OAAO,EAAE,EACpCw3G,GAAe,QAAU,CAAA,EACzB,IAAIC,GAAsBh3E,GAAS,SAAU82E,GAAU,CACrD,IAAIG,GACJJ,GAAcC,EAAQ,IAKhBG,GAAwBF,GAAe,QAAQA,GAAe,QAAQ,OAAS,CAAC,KAAO,MAAQE,KAA0B,OAASA,GAAwBL,MAAgBE,KAC9KC,GAAe,QAAQ,KAAKD,EAAQ,EACpC5C,GAAyB,MAA2CA,EAAqB4C,EAAQ,EAErG,CAAC,EAGGpgB,GAAWn3F,EAAM,OAAM,EACvB23G,GAAa,UAAsB,CACrC,aAAaxgB,GAAS,OAAO,CAC/B,EACIS,GAAc,SAAqB2f,GAAU,CAC/C,IAAI9oG,GAAQ,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,EAChFkpG,GAAU,EACNlpG,KAAU,EACZgpG,GAAoBF,EAAQ,EAE5BpgB,GAAS,QAAU,WAAW,UAAY,CACxCsgB,GAAoBF,EAAQ,CAC9B,EAAG9oG,GAAQ,GAAI,CAEnB,EACAzO,EAAM,UAAU,UAAY,CAC1B,OAAO23G,EACT,EAAG,CAAA,CAAE,EAGL,IAAIC,GAAmB53G,EAAM,SAAS,EAAK,EACzC63G,GAAoB1gG,GAAeygG,GAAkB,CAAC,EACtDE,GAAWD,GAAkB,CAAC,EAC9BE,GAAcF,GAAkB,CAAC,EACnCn4F,GAAgB,SAAUG,GAAY,EAChC,CAACA,IAAcw3F,KACjBU,GAAY,EAAI,CAEpB,EAAG,CAACV,EAAU,CAAC,EACf,IAAIW,GAAoBh4G,EAAM,SAAS,IAAI,EACzCi4G,GAAoB9gG,GAAe6gG,GAAmB,CAAC,EACvDE,GAAuBD,GAAkB,CAAC,EAC1CE,GAA0BF,GAAkB,CAAC,EAG3CG,GAAoBp4G,EAAM,SAAS,IAAI,EACzCq4G,GAAoBlhG,GAAeihG,GAAmB,CAAC,EACvDE,GAAWD,GAAkB,CAAC,EAC9BE,GAAcF,GAAkB,CAAC,EAC/BG,GAAqB,SAA4B1wH,GAAO,CAC1DywH,GAAY,CAACzwH,GAAM,QAASA,GAAM,OAAO,CAAC,CAC5C,EACI2wH,GAAYnN,GAAS+L,GAAY9L,EAAUiK,GAAc8C,KAAa,KAAOA,GAAW9E,GAAW6B,EAAgBvN,EAAmB0D,EAAYC,CAAY,EAChKiN,GAAavhG,GAAeshG,GAAW,EAAE,EACzC1+G,GAAQ2+G,GAAW,CAAC,EACpBtkD,GAAUskD,GAAW,CAAC,EACtBrkD,GAAUqkD,GAAW,CAAC,EACtB/S,GAAU+S,GAAW,CAAC,EACtB9S,GAAU8S,GAAW,CAAC,EACtBC,GAASD,GAAW,CAAC,EACrBE,GAASF,GAAW,CAAC,EACrB7O,GAAS6O,GAAW,CAAC,EACrB5O,GAAS4O,GAAW,CAAC,EACrBG,GAAYH,GAAW,CAAC,EACxB7S,GAAU6S,GAAW,EAAE,EACrBI,GAAa7R,GAAUC,GAAQjmG,EAAQkmG,EAAYC,CAAU,EAC/D2R,GAAc5hG,GAAe2hG,GAAY,CAAC,EAC1CE,GAAcD,GAAY,CAAC,EAC3BE,GAAcF,GAAY,CAAC,EACzBG,GAAcF,GAAY,IAAI,OAAO,EACrCzF,GAAc0F,GAAY,IAAI,OAAO,GAAKA,GAAY,IAAI,aAAa,EACvErG,GAAenyE,GAAS,UAAY,CACjCq3E,IACHjS,GAAO,CAEX,CAAC,EACGkN,GAAW,UAAoB,CAC7BW,GAAQ,SAAW8B,GAAcjC,IACnC3b,GAAY,EAAK,CAErB,EACAzR,GAASkxB,GAAY7D,GAAWjI,EAAUqH,GAAcG,EAAQ,EAChErzF,GAAgB,UAAY,CAC1BkzF,GAAY,CACd,EAAG,CAAC0F,GAAUjD,CAAc,CAAC,EAG7B31F,GAAgB,UAAY,CACtB23F,IAAc,EAAEvP,GAAsB,MAAwCA,EAAkBuN,CAAc,IAChHzC,GAAY,CAEhB,EAAG,CAAC,KAAK,UAAUpH,CAAU,CAAC,CAAC,EAC/B,IAAI2N,GAAmBn5G,EAAM,QAAQ,UAAY,CAC/C,IAAIo5G,GAAgBvR,GAAuBC,EAAmB1iE,EAAWyzE,GAAWrD,CAAU,EAC9F,OAAOhwG,GAAW4zG,GAAe7D,GAA+B,KAAgD,OAASA,EAA2BsD,EAAS,CAAC,CAChK,EAAG,CAACA,GAAWtD,EAA4BzN,EAAmB1iE,EAAWowE,CAAU,CAAC,EAGpFx1G,EAAM,oBAAoBlH,EAAK,UAAY,CACzC,MAAO,CACL,cAAe09G,GAAmB,QAClC,aAAcL,GAAiB,QAC/B,WAAYvD,EACpB,CACI,CAAC,EAGD,IAAIyG,GAAoBr5G,EAAM,SAAS,CAAC,EACtCs5G,GAAoBniG,GAAekiG,GAAmB,CAAC,EACvD7mD,GAAc8mD,GAAkB,CAAC,EACjCC,GAAiBD,GAAkB,CAAC,EAClCE,GAAoBx5G,EAAM,SAAS,CAAC,EACtCy5G,GAAoBtiG,GAAeqiG,GAAmB,CAAC,EACvD/mD,GAAegnD,GAAkB,CAAC,EAClCC,GAAkBD,GAAkB,CAAC,EACnCE,GAAiB,UAA0B,CAC7C,GAAI7T,GAAW0N,GAAW,CACxB,IAAIjiG,GAAOiiG,GAAU,sBAAqB,EAC1C+F,GAAehoG,GAAK,KAAK,EACzBmoG,GAAgBnoG,GAAK,MAAM,CAC7B,CACF,EACIqoG,GAAiB,UAA0B,CAC7CD,GAAc,EACd/G,GAAY,CACd,EAGIxhE,GAAmB,SAA0BtB,GAAS,CACxDioE,GAAY,EAAK,EACjBlS,GAAO,EACP+O,GAA4B,MAA8CA,EAAwB9kE,EAAO,CAC3G,EAGI6C,GAAY,UAAqB,CACnC,OAAO,IAAI,QAAQ,SAAU7vD,GAAS,CACpC62H,GAAc,EACdxB,GAAwB,UAAY,CAClC,OAAOr1H,EACT,CAAC,CACH,CAAC,CACH,EACA48B,GAAgB,UAAY,CACtBw4F,KACFrS,GAAO,EACPqS,GAAoB,EACpBC,GAAwB,IAAI,EAEhC,EAAG,CAACD,EAAoB,CAAC,EAMzB,SAAS2B,GAAc/sE,GAAWyqE,GAAU9oG,GAAOqrG,GAAU,CAC3DnD,GAAW7pE,EAAS,EAAI,SAAUhlD,GAAO,CACvC,IAAIiyH,GACJD,IAAa,MAA+BA,GAAShyH,EAAK,EAC1D8vG,GAAY2f,GAAU9oG,EAAK,EAG3B,QAAStC,GAAO,UAAU,OAAQplB,GAAO,IAAI,MAAMolB,GAAO,EAAIA,GAAO,EAAI,CAAC,EAAGE,GAAO,EAAGA,GAAOF,GAAME,KAClGtlB,GAAKslB,GAAO,CAAC,EAAI,UAAUA,EAAI,GAEhC0tG,GAAwBrD,GAAiB5pE,EAAS,KAAO,MAAQitE,KAA0B,QAAUA,GAAsB,KAAK,MAAMA,GAAuB,CAACrD,GAAkB5uH,EAAK,EAAE,OAAOf,EAAI,CAAC,CACtM,CACF,EAGImyH,IAAe3F,MACjBoD,GAAW,QAAU,SAAU7uH,GAAO,CACpC,IAAIkyH,GACAtG,GAAQ,SAAWH,GACrB3b,GAAY,EAAK,EACR,CAAC8b,GAAQ,SAAWwF,KAC7BV,GAAmB1wH,EAAK,EACxB8vG,GAAY,EAAI,GAIlB,QAASprF,GAAQ,UAAU,OAAQzlB,GAAO,IAAI,MAAMylB,GAAQ,EAAIA,GAAQ,EAAI,CAAC,EAAGC,GAAQ,EAAGA,GAAQD,GAAOC,KACxG1lB,GAAK0lB,GAAQ,CAAC,EAAI,UAAUA,EAAK,GAElCutG,GAAwBtD,GAAiB,WAAa,MAAQsD,KAA0B,QAAUA,GAAsB,KAAK,MAAMA,GAAuB,CAACtD,GAAkB5uH,EAAK,EAAE,OAAOf,EAAI,CAAC,CACnM,GAIF,IAAIqtH,GAAqBd,GAAY+D,GAAY9D,GAAaC,GAAWjI,EAAUl/B,EAAMI,EAAcgnC,GAAgB7b,EAAW,EAG9HqiB,GAAcjB,GAAY,IAAI,OAAO,EACrCkB,GAAcjB,GAAY,IAAI,OAAO,EACrCkB,GACAC,GACAH,KAEFJ,GAAc,eAAgB,GAAMhF,EAAiB,SAAU/sH,GAAO,CACpE0wH,GAAmB1wH,EAAK,CAC1B,CAAC,EACD+xH,GAAc,iBAAkB,GAAMhF,EAAiB,SAAU/sH,GAAO,CACtE0wH,GAAmB1wH,EAAK,CAC1B,CAAC,EACDqyH,GAAoB,SAA2BryH,GAAO,EAE/CuvH,IAAcS,KAAavM,IAAa,MAAQA,IAAa,QAAUA,EAAS,SAASzjH,GAAM,MAAM,GACxG8vG,GAAY,GAAMid,CAAe,CAErC,EAGIW,IACFmB,GAAW,YAAc,SAAU7uH,GAAO,CACxC,IAAIuyH,IAEHA,GAAwB3D,GAAiB,eAAiB,MAAQ2D,KAA0B,QAAUA,GAAsB,KAAK3D,GAAkB5uH,EAAK,CAC3J,IAGAoyH,KACFL,GAAc,eAAgB,GAAO9E,CAAe,EACpD8E,GAAc,iBAAkB,GAAO9E,CAAe,EACtDqF,GAAoB,UAA6B,CAC/CxiB,GAAY,GAAOmd,CAAe,CACpC,GAIEiE,GAAY,IAAI,OAAO,GACzBa,GAAc,UAAW,GAAM7E,CAAU,EAEvCiE,GAAY,IAAI,OAAO,GACzBY,GAAc,SAAU,GAAO5E,CAAS,EAItC+D,GAAY,IAAI,aAAa,IAC/BrC,GAAW,cAAgB,SAAU7uH,GAAO,CAC1C,IAAIwyH,GACA5G,GAAQ,SAAWuF,GAAY,IAAI,aAAa,EAClDrhB,GAAY,EAAK,GAEjB4gB,GAAmB1wH,EAAK,EACxB8vG,GAAY,EAAI,GAElB9vG,GAAM,eAAc,EAGpB,QAASyyH,GAAQ,UAAU,OAAQxzH,GAAO,IAAI,MAAMwzH,GAAQ,EAAIA,GAAQ,EAAI,CAAC,EAAGC,GAAQ,EAAGA,GAAQD,GAAOC,KACxGzzH,GAAKyzH,GAAQ,CAAC,EAAI,UAAUA,EAAK,GAElCF,GAAyB5D,GAAiB,iBAAmB,MAAQ4D,KAA2B,QAAUA,GAAuB,KAAK,MAAMA,GAAwB,CAAC5D,GAAkB5uH,EAAK,EAAE,OAAOf,EAAI,CAAC,CAC7M,GAIEq4D,IACFu3D,GAAW,UAAYnxG,GAAWkxG,GAAiB,UAAWt3D,CAAS,GAIzE,IAAIq7D,GAAsBtlG,EAAcA,EAAc,CAAA,EAAIuhG,EAAgB,EAAGC,EAAU,EAGnF+D,GAAc,CAAA,EACdC,GAAkB,CAAC,gBAAiB,UAAW,cAAe,eAAgB,eAAgB,eAAgB,UAAW,QAAQ,EACrIA,GAAgB,QAAQ,SAAU7tE,GAAW,CACvC8J,EAAU9J,EAAS,IACrB4tE,GAAY5tE,EAAS,EAAI,UAAY,CAEnC,QADI8tE,GACKC,GAAQ,UAAU,OAAQ9zH,GAAO,IAAI,MAAM8zH,EAAK,EAAGC,GAAQ,EAAGA,GAAQD,GAAOC,KACpF/zH,GAAK+zH,EAAK,EAAI,UAAUA,EAAK,GAE9BF,GAAwBH,GAAoB3tE,EAAS,KAAO,MAAQ8tE,KAA0B,QAAUA,GAAsB,KAAK,MAAMA,GAAuB,CAACH,EAAmB,EAAE,OAAO1zH,EAAI,CAAC,EACnM6vD,EAAU9J,EAAS,EAAE,MAAM8J,EAAW7vD,EAAI,CAC5C,EAEJ,CAAC,EAGD,IAAIg0H,GAA2B/6G,EAAM,aAAaqG,GAAO8O,EAAcA,EAAc,GAAIslG,EAAmB,EAAGC,EAAW,CAAC,EACvHjW,GAAW,CACb,EAAGkU,GACH,EAAGC,EACT,EACQoC,GAAaxW,EAAQrvF,EAAc,CAAA,EAAIqvF,IAAU,GAAOA,EAAQ,CAAA,CAAE,EAAI,KAG1E,OAAoBxkG,EAAM,cAAcA,EAAM,SAAU,KAAmBA,EAAM,cAAckS,GAAgB,CAC7G,SAAU,CAACmlG,GACX,IAAKZ,GACL,SAAUmD,EAChB,EAAoB55G,EAAM,cAAc6mG,GAAgB,CAClD,kBAAmBC,EACzB,EAAOiU,EAAW,CAAC,EAAgB/6G,EAAM,cAAcgnG,GAAe,SAAU,CAC1E,MAAO9oE,EACb,EAAoBl+B,EAAM,cAAcqlG,GAAO,CACzC,OAAQiP,EACR,IAAK8B,GACL,UAAWhxE,EACX,MAAO0wD,EACP,UAAWtwF,GAAW2vG,EAAgBgE,EAAgB,EACtD,MAAO/D,EACP,OAAQ5B,GACR,aAAc2G,GACd,aAAcC,GAGd,eAAgBD,GAChB,OAAQlzD,EAGR,KAAMowD,GACN,QAASS,GACT,MAAOvS,EAGP,QAASkQ,EACT,qBAAsBrB,GAGtB,KAAM/nC,EAGN,OAAQ0qC,GACR,WAAYC,GACZ,iBAAkB5lE,GAClB,UAAWuB,GAGX,YAAaiB,EACb,YAAaiiE,GACb,kBAAmBx3E,EAGnB,MAAOw6E,GACP,MAAOmC,GACP,SAAUvW,GAGV,MAAO1qG,GACP,QAASq6D,GACT,QAASC,GACT,QAASsxC,GACT,QAASC,GACT,QAASgN,GAGT,QAAS9M,EACT,YAAatzC,GAAcq3C,GAC3B,aAAcp3C,GAAeq3C,EACnC,CAAK,CAAC,CAAC,CACL,CAAC,EACD,OAAI,QAAQ,IAAI,WAAa,eAC3ByK,EAAQ,YAAc,WAEjBA,CACT,CACA,MAAAA,GAAeF,GAAgBnqG,EAAM,ECphBrC,IAAIyhC,GAAY,CAAC,YAAa,WAAY,UAAW,WAAY,eAAgB,YAAa,iBAAkB,gBAAiB,oBAAqB,YAAa,YAAa,oBAAqB,2BAA4B,iBAAkB,gBAAiB,oBAAqB,QAAS,oBAAqB,uBAAwB,mBAAmB,EAI9VsvE,GAAuB,SAA8BxjE,EAA0B,CAEjF,IAAIy4D,EAAUz4D,IAA6B,GAAO,EAAI,EACtD,MAAO,CACL,WAAY,CACV,OAAQ,CAAC,KAAM,IAAI,EACnB,OAAQ,CAAC,EAAG,CAAC,EACb,SAAU,CACR,QAASy4D,EACT,QAAS,CACjB,EACM,WAAY,QAClB,EACI,YAAa,CACX,OAAQ,CAAC,KAAM,IAAI,EACnB,OAAQ,CAAC,EAAG,CAAC,EACb,SAAU,CACR,QAASA,EACT,QAAS,CACjB,EACM,WAAY,QAClB,EACI,QAAS,CACP,OAAQ,CAAC,KAAM,IAAI,EACnB,OAAQ,CAAC,EAAG,EAAE,EACd,SAAU,CACR,QAASA,EACT,QAAS,CACjB,EACM,WAAY,QAClB,EACI,SAAU,CACR,OAAQ,CAAC,KAAM,IAAI,EACnB,OAAQ,CAAC,EAAG,EAAE,EACd,SAAU,CACR,QAASA,EACT,QAAS,CACjB,EACM,WAAY,QAClB,CACA,CACA,EACIgL,GAAgB,SAAuB7hH,EAAOP,EAAK,CAClD,IAACssC,EAAY/rC,EAAM,UACTA,EAAM,SACrB,IAAIy2C,EAAUz2C,EAAM,QAChB+M,EAAW/M,EAAM,SACjB4zG,EAAe5zG,EAAM,aACrB6yE,EAAY7yE,EAAM,UAClB00C,EAAiB10C,EAAM,eACvB8hH,EAAgB9hH,EAAM,cACtB+hH,EAAoB/hH,EAAM,kBAC1BgiH,EAAmBhiH,EAAM,UACzB+kC,EAAYi9E,IAAqB,OAAS,MAAQA,EAClDpT,EAAY5uG,EAAM,UAClByuG,EAAoBzuG,EAAM,kBAC1Bo+C,EAA2Bp+C,EAAM,yBACjCiiH,EAAiBjiH,EAAM,eACvBkiH,EAAgBliH,EAAM,cACtBglC,EAAoBhlC,EAAM,kBAC1BuhD,EAAQvhD,EAAM,MACdytG,EAAoBztG,EAAM,kBAC1Bs7G,EAAuBt7G,EAAM,qBAC7B8gH,EAAoB9gH,EAAM,kBAC1Bu9C,EAAY38B,GAAyB5gB,EAAOsyC,EAAS,EACnD6vE,EAAoB,GAAG,OAAOp2E,EAAW,WAAW,EACpDq2E,EAAYxO,EACZqO,IACFG,EAAYH,EAAerO,CAAY,GAEzC,IAAIyO,EAA0B17G,EAAM,QAAQ,UAAY,CACtD,OAAO8nG,GAAqBmT,GAAqBxjE,CAAwB,CAC3E,EAAG,CAACqwD,EAAmBrwD,CAAwB,CAAC,EAG5CkkE,EAAuBzvC,EAAY,GAAG,OAAOsvC,EAAmB,GAAG,EAAE,OAAOtvC,CAAS,EAAIn+B,EAGzF6tE,EAAqB,OAAOnkE,GAA6B,SACzDquD,EAAU9lG,EAAM,QAAQ,UAAY,CACtC,OAAI47G,EACK,KAEFnkE,IAA6B,GAAQ,WAAa,OAC3D,EAAG,CAACA,EAA0BmkE,CAAkB,CAAC,EAC7CxG,EAAa+F,EACbS,IACFxG,EAAajgG,EAAcA,EAAc,CAAA,EAAIigG,CAAU,EAAG,CAAA,EAAI,CAC5D,MAAO39D,CACb,CAAK,GAIH,IAAIokE,EAAkB77G,EAAM,OAAO,IAAI,EACvCA,OAAAA,EAAM,oBAAoBlH,EAAK,UAAY,CACzC,MAAO,CACL,gBAAiB,UAA2B,CAC1C,IAAIgjH,EACJ,OAAQA,EAAwBD,EAAgB,WAAa,MAAQC,IAA0B,OAAS,OAASA,EAAsB,YACzI,CACN,CACE,CAAC,EACmB97G,EAAM,cAAcu0G,GAAS1uG,GAAS,CAAA,EAAI+wC,EAAW,CACvE,WAAY+9D,EAAuB,CAAC,OAAO,EAAI,CAAA,EAC/C,WAAYA,EAAuB,CAAC,OAAO,EAAI,CAAA,EAC/C,eAAgB1M,IAAc7pE,IAAc,MAAQ,cAAgB,cACpE,kBAAmBs9E,EACnB,UAAWF,EACX,oBAAqBG,EACrB,MAAoB37G,EAAM,cAAc,MAAO,CAC7C,aAAcm6G,CACpB,EAAOsB,CAAS,EACZ,IAAKI,EACL,QAAS/V,EACT,WAAYyV,EACZ,aAAczrE,EACd,kBAAmBzR,EACnB,eAAgB74B,GAAW41G,EAAmBh0G,EAAgB,CAAA,EAAI,GAAG,OAAOo0G,EAAmB,QAAQ,EAAG5gE,CAAK,CAAC,EAChH,WAAYw6D,EACZ,kBAAmBtO,EACnB,qBAAsB6N,CAC1B,CAAG,EAAGvuG,CAAQ,CACd,EACI21G,GAAgC/7G,EAAM,WAAWk7G,EAAa,EAC9D,QAAQ,IAAI,WAAa,eAC3Ba,GAAiB,YAAc,iBCjIjC,SAAS1e,GAAO34G,EAAM0D,EAAO,CAC3B,IAAI3E,EAAMiB,EAAK,IACXE,EAIJ,MAHI,UAAWF,IACbE,EAAQF,EAAK,OAEXjB,IAGAmB,IAAU,OACLA,EAEF,gBAAgB,OAAOwD,CAAK,EACrC,CACO,SAAS4zH,GAAap3H,EAAO,CAClC,OAAO,OAAOA,EAAU,KAAe,CAAC,OAAO,MAAMA,CAAK,CAC5D,CACO,SAASq3H,GAAeC,EAAYC,EAAgB,CACzD,IAAIzgH,EAAOwgH,GAAc,CAAA,EACvBja,EAAQvmG,EAAK,MACb9W,EAAQ8W,EAAK,MACbrU,EAAUqU,EAAK,QACf0gH,EAAa1gH,EAAK,WAChB2gH,EAAcpa,IAAUka,EAAiB,WAAa,SAC1D,MAAO,CACL,MAAOE,EACP,MAAOz3H,GAAS,QAChB,QAASyC,GAAW,UACpB,WAAY+0H,GAAcC,CAC9B,CACA,CAOO,SAASC,GAAej1H,EAAS,CACtC,IAAIuU,EAAQ,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAA,EAC9EsgH,EAAatgH,EAAM,WACnBugH,EAAiBvgH,EAAM,eACrBgwB,EAAc,CAAA,EACd2wF,EAAkBN,GAAeC,EAAY,EAAK,EACpDM,EAAaD,EAAgB,MAC7BjsC,EAAaisC,EAAgB,MAC7BE,EAAeF,EAAgB,QAC/BH,EAAaG,EAAgB,WAC/B,SAASG,EAAI7wF,EAAM8wF,EAAe,CAC3B,MAAM,QAAQ9wF,CAAI,GAGvBA,EAAK,QAAQ,SAAUnnC,EAAM,CAC3B,GAAIi4H,GAAiB,EAAEF,KAAgB/3H,GAAO,CAC5C,IAAIE,EAAQF,EAAK4rF,CAAU,EAG3B1kD,EAAY,KAAK,CACf,IAAKyxE,GAAO34G,EAAMknC,EAAY,MAAM,EACpC,YAAa+wF,EACb,KAAMj4H,EACN,MAAOA,EAAK83H,CAAU,EACtB,MAAO53H,CACjB,CAAS,CACH,KAAO,CACL,IAAIg4H,EAAWl4H,EAAK03H,CAAU,EAC1BQ,IAAa,QAAaT,IAC5BS,EAAWl4H,EAAK,OAIlBknC,EAAY,KAAK,CACf,IAAKyxE,GAAO34G,EAAMknC,EAAY,MAAM,EACpC,MAAO,GACP,KAAMlnC,EACN,MAAOk4H,CACjB,CAAS,EACDF,EAAIh4H,EAAK+3H,CAAY,EAAG,EAAI,CAC9B,CACF,CAAC,CACH,CACA,OAAAC,EAAIr1H,EAAS,EAAK,EACXukC,CACT,CAKO,SAASixF,GAAsBvvH,EAAQ,CAC5C,IAAIwvH,EAAY3nG,EAAc,CAAA,EAAI7nB,CAAM,EACxC,MAAM,UAAWwvH,GACf,OAAO,eAAeA,EAAW,QAAS,CACxC,IAAK,UAAe,CAClBr2G,OAAAA,GAAQ,GAAO,+GAA+G,EACvHq2G,CACT,CACN,CAAK,EAEIA,CACT,CACO,IAAIC,GAAsB,SAA6B5kH,EAAM7R,EAAQy/B,EAAK,CAC/E,GAAI,CAACz/B,GAAU,CAACA,EAAO,OACrB,OAAO,KAET,IAAI6J,EAAQ,GACR6sH,EAAW,SAASA,EAAS73H,EAAKg6B,EAAO,CAC3C,IAAIG,EAAQ+Q,GAASlR,CAAK,EACxB7B,EAAQgC,EAAM,CAAC,EACf29F,EAAa39F,EAAM,MAAM,CAAC,EAC5B,GAAI,CAAChC,EACH,MAAO,CAACn4B,CAAG,EAEb,IAAI0mC,EAAO1mC,EAAI,MAAMm4B,CAAK,EAC1B,OAAAntB,EAAQA,GAAS07B,EAAK,OAAS,EACxBA,EAAK,OAAO,SAAUqxF,EAAUC,EAAS,CAC9C,MAAO,CAAA,EAAG,OAAOpnG,GAAmBmnG,CAAQ,EAAGnnG,GAAmBinG,EAASG,EAASF,CAAU,CAAC,CAAC,CAClG,EAAG,CAAA,CAAE,EAAE,OAAO,OAAO,CACvB,EACIpxF,EAAOmxF,EAAS7kH,EAAM7R,CAAM,EAChC,OAAI6J,EACK,OAAO41B,EAAQ,IAAc8F,EAAK,MAAM,EAAG9F,CAAG,EAAI8F,EAElD,IAEX,EC3HIuxF,GAA6Bp9G,EAAM,cAAc,IAAI,ECF1C,SAASq9G,GAAOhkH,EAAO,CACpC,IAAIy2C,EAAUz2C,EAAM,QAClBglF,EAAShlF,EAAM,OACjB,GAAI,CAACy2C,EACH,OAAO,KAIT,IAAIwtE,EAAY,GAChB,OAAoBt9G,EAAM,cAAc,OAAQ,CAC9C,YAAa,SACb,MAAO,CACL,MAAO,EACP,OAAQ,EACR,SAAU,WACV,SAAU,SACV,QAAS,CACf,CACA,EAAK,GAAG,OAAOq+E,EAAO,MAAM,EAAGi/B,CAAS,EAAE,IAAI,SAAU5hH,EAAM,CAC1D,IAAIumG,EAAQvmG,EAAK,MACf9W,EAAQ8W,EAAK,MACf,MAAO,CAAC,SAAU,QAAQ,EAAE,SAASoK,GAAQm8F,CAAK,CAAC,EAAIA,EAAQr9G,CACjE,CAAC,EAAE,KAAK,IAAI,CAAC,EAAGy5F,EAAO,OAASi/B,EAAY,QAAU,IAAI,CAC5D,CCnBA,IAAI3xE,GAAY,CAAC,KAAM,YAAa,YAAa,aAAc,YAAa,YAAa,eAAgB,gBAAiB,wBAAyB,eAAgB,kBAAmB,UAAW,OAAQ,WAAY,UAAW,kBAAmB,qBAAsB,OAAQ,cAAe,0BAA2B,cAAe,sBAAuB,qBAAsB,cAAe,uBAAwB,WAAY,gBAAiB,kBAAmB,aAAc,SAAU,aAAc,YAAa,aAAc,YAAa,iBAAkB,gBAAiB,oBAAqB,2BAA4B,iBAAkB,gBAAiB,YAAa,oBAAqB,oBAAqB,aAAc,UAAW,SAAU,UAAW,YAAa,aAAa,EAkB9wB4xE,GAAqB,CAAC,QAAS,WAAY,aAAc,cAAe,YAAa,cAAe,mBAAoB,oBAAqB,uBAAwB,iBAAkB,gBAAiB,UAAU,EAC3MC,GAAa,SAAoB7mB,EAAM,CAChD,OAAOA,IAAS,QAAUA,IAAS,UACrC,EACI8mB,GAA0Bz9G,EAAM,WAAW,SAAU3G,EAAOP,EAAK,CACnE,IAAI4kH,EACA74G,EAAKxL,EAAM,GACb+rC,EAAY/rC,EAAM,UAClB+lD,EAAY/lD,EAAM,UAClB8mG,EAAa9mG,EAAM,WACnBqnG,EAAYrnG,EAAM,UAClB+kC,EAAY/kC,EAAM,UAClBskH,EAAetkH,EAAM,aACrBk9F,EAAgBl9F,EAAM,cACtBukH,EAAwBvkH,EAAM,sBAC9BwkH,EAAexkH,EAAM,aACrBykH,EAAwBzkH,EAAM,gBAC9B0kH,EAAkBD,IAA0B,OAAS,YAAcA,EACnEE,EAAU3kH,EAAM,QAChBs9F,EAAOt9F,EAAM,KACbwa,EAAWxa,EAAM,SACjB23D,EAAU33D,EAAM,QAChB4kH,EAAkB5kH,EAAM,gBACxB6kH,EAAqB7kH,EAAM,mBAC3B+tE,EAAO/tE,EAAM,KACb8kH,EAAc9kH,EAAM,YACpB+kH,EAA0B/kH,EAAM,wBAChCipG,EAAcjpG,EAAM,YACpBglH,EAAsBhlH,EAAM,oBAC5B8lG,EAAqB9lG,EAAM,mBAC3B0mG,EAAc1mG,EAAM,YACpB2mG,EAAuB3mG,EAAM,qBAC7B4pG,EAAW5pG,EAAM,SACjBilH,EAAgBjlH,EAAM,cACtBklH,EAAkBllH,EAAM,gBACxBm9F,EAAan9F,EAAM,WACnB9R,EAAS8R,EAAM,OACfmlH,EAAanlH,EAAM,WACnBo9F,EAAYp9F,EAAM,UAClBolH,EAAaplH,EAAM,WACnB6yE,EAAY7yE,EAAM,UAClB00C,EAAiB10C,EAAM,eACvB8hH,EAAgB9hH,EAAM,cACtB+hH,EAAoB/hH,EAAM,kBAC1Bo+C,EAA2Bp+C,EAAM,yBACjCiiH,GAAiBjiH,EAAM,eACvBkiH,GAAgBliH,EAAM,cACtB4uG,GAAY5uG,EAAM,UAClByuG,GAAoBzuG,EAAM,kBAC1BglC,GAAoBhlC,EAAM,kBAC1BqlH,EAAoBrlH,EAAM,WAC1B8tG,EAAauX,IAAsB,OAAS,CAAA,EAAKA,EACjDC,GAAUtlH,EAAM,QAChBulH,EAASvlH,EAAM,OACfwlH,GAAUxlH,EAAM,QAChBylH,GAAYzlH,EAAM,UAClBywE,GAAczwE,EAAM,YACpBu9C,GAAY38B,GAAyB5gB,EAAOsyC,EAAS,EAGnDozE,GAAWvB,GAAW7mB,CAAI,EAC1BqoB,IAAoB7e,IAAe,OAAYA,EAAa4e,KAAapoB,IAAS,WAClFsoB,GAAW9pG,EAAc,CAAA,EAAIyhC,EAAS,EAC1C2mE,GAAmB,QAAQ,SAAUt/E,GAAU,CAC7C,OAAOghF,GAAShhF,EAAQ,CAC1B,CAAC,EACD0/E,GAAiB,MAAmCA,EAAa,QAAQ,SAAU1/E,GAAU,CAC3F,OAAOghF,GAAShhF,EAAQ,CAC1B,CAAC,EAGD,IAAI8C,GAAkB/gC,EAAM,SAAS,EAAK,EACxCghC,GAAmB7pB,GAAe4pB,GAAiB,CAAC,EACpDmmE,GAASlmE,GAAiB,CAAC,EAC3B80E,GAAY90E,GAAiB,CAAC,EAChChhC,EAAM,UAAU,UAAY,CAE1B81G,GAAUC,GAAQ,CAAE,CACtB,EAAG,CAAA,CAAE,EAGL,IAAIjoD,EAAe9tD,EAAM,OAAO,IAAI,EAChCk/G,GAAiBl/G,EAAM,OAAO,IAAI,EAClCm/G,GAAan/G,EAAM,OAAO,IAAI,EAC9Bo/G,GAAcp/G,EAAM,OAAO,IAAI,EAC/Bq/G,GAAUr/G,EAAM,OAAO,IAAI,EAC3Bs/G,GAAUt/G,EAAM,OAAO,EAAK,EAG5Bu/G,GAAiBvoB,GAAa,EAChCwoB,GAAkBroG,GAAeooG,GAAgB,CAAC,EAClDE,GAAcD,GAAgB,CAAC,EAC/BE,GAAiBF,GAAgB,CAAC,EAClCG,GAAuBH,GAAgB,CAAC,EAG1Cx/G,EAAM,oBAAoBlH,EAAK,UAAY,CACzC,IAAI8mH,GAAsBC,GAC1B,MAAO,CACL,OAAQD,GAAuBR,GAAY,WAAa,MAAQQ,KAAyB,OAAS,OAASA,GAAqB,MAChI,MAAOC,GAAwBT,GAAY,WAAa,MAAQS,KAA0B,OAAS,OAASA,GAAsB,KAClI,SAAU,SAAkBhgH,GAAK,CAC/B,IAAIigH,GACJ,OAAQA,GAAmBT,GAAQ,WAAa,MAAQS,KAAqB,OAAS,OAASA,GAAiB,SAASjgH,EAAG,CAC9H,EACA,cAAeiuD,EAAa,SAAWoxD,GAAe,OAC5D,CACE,CAAC,EAGD,IAAIxoB,GAAoB12F,EAAM,QAAQ,UAAY,CAChD,IAAI+/G,GACJ,GAAIppB,IAAS,WACX,OAAOoJ,EAET,IAAI/wG,IAAO+wH,GAAkBxpB,EAAc,CAAC,KAAO,MAAQwpB,KAAoB,OAAS,OAASA,GAAgB,MACjH,OAAO,OAAO/wH,IAAQ,UAAY,OAAOA,IAAQ,SAAW,OAAOA,EAAG,EAAI,EAC5E,EAAG,CAAC+wG,EAAapJ,EAAMJ,CAAa,CAAC,EAIjCypB,GAAwBrpB,IAAS,YAAc,OAAOsnB,GAAoB,YAAcA,EAAe,GAAM,KAG7GgC,GAA2B,OAAO/B,GAAuB,YAAcA,EAAkB,EACzFgC,GAAuB3zG,GAAc2yG,GAAgBe,IAA6B,OAAgDvC,EAAwBuC,GAAyB,SAAW,MAAQvC,IAA0B,OAAS,OAASA,EAAsB,GAAG,EAI3Qv4C,GAAmBnlE,EAAM,SAAS,EAAK,EACzColE,GAAmBjuD,GAAeguD,GAAkB,CAAC,EACrDg7C,GAAW/6C,GAAiB,CAAC,EAC7Bg7C,GAAch7C,GAAiB,CAAC,EAClC1lD,GAAgB,UAAY,CAC1B0gG,GAAY,EAAI,CAClB,EAAG,CAAA,CAAE,EACL,IAAI7qD,GAAkBl0B,GAAe,GAAO,CACxC,aAAc88E,EACd,MAAO/2C,CACb,CAAK,EACD5R,GAAmBr+C,GAAeo+C,GAAiB,CAAC,EACpD8qD,GAAY7qD,GAAiB,CAAC,EAC9B8qD,GAAe9qD,GAAiB,CAAC,EAC/B6hD,GAAa8I,GAAWE,GAAY,GAGpCE,GAAmB,CAACxC,GAAmBF,GACvChqG,GAAY0sG,IAAoBlJ,IAAc1gB,IAAS,cACzD0gB,GAAa,IAEf,IAAIzf,GAAc2oB,GAAmB,GAAQlJ,GACzC1W,GAAe3gG,EAAM,YAAY,SAAUwgH,GAAS,CACtD,IAAIjJ,GAAWiJ,KAAY,OAAYA,GAAU,CAACnJ,GAC7CxjG,IACHysG,GAAa/I,EAAQ,EACjBF,KAAeE,KACjB6G,GAA4B,MAA8CA,EAAwB7G,EAAQ,GAGhH,EAAG,CAAC1jG,EAAUwjG,GAAYiJ,GAAclC,CAAuB,CAAC,EAG5Dpb,GAAiBhjG,EAAM,QAAQ,UAAY,CAC7C,OAAQu+G,GAAmB,CAAA,GAAI,KAAK,SAAUkC,GAAgB,CAC5D,MAAO,CAAC;AAAA,EAAM;AAAA,CAAM,EAAE,SAASA,EAAc,CAC/C,CAAC,CACH,EAAG,CAAClC,CAAe,CAAC,EAChB7iH,GAAOsE,EAAM,WAAWo9G,EAAa,GAAK,CAAA,EAC5CziB,GAAWj/F,GAAK,SAChBglH,GAAYhlH,GAAK,UACfilH,GAAmB,SAA0BC,GAAYC,GAAYC,GAAe,CACtF,GAAI,EAAA/B,IAAY/C,GAAarhB,EAAQ,IAAM+lB,IAAc,KAA+B,OAASA,GAAU,OAAS/lB,IAGpH,KAAIjmG,GAAM,GACNqsH,GAAgBH,GACpBvC,GAAwB,MAA0CA,EAAoB,IAAI,EAC1F,IAAI2C,GAAgBjE,GAAoB6D,GAAYrC,EAAiBvC,GAAarhB,EAAQ,EAAIA,GAAW+lB,GAAU,KAAO,MAAS,EAG/HO,GAAcH,GAAgB,KAAOE,GAGzC,OAAIrqB,IAAS,YAAcsqB,KACzBF,GAAgB,GAChBzC,GAAkB,MAAoCA,EAAc2C,EAAW,EAG/EtgB,GAAa,EAAK,EAGlBjsG,GAAM,IAEJuuG,GAAYvM,KAAsBqqB,IACpC9d,EAAS8d,GAAe,CACtB,OAAQF,GAAa,SAAW,QACxC,CAAO,EAEInsH,GACT,EAKIwsH,GAAyB,SAAgCN,GAAY,CAEnE,CAACA,IAAc,CAACA,GAAW,KAAI,GAGnC3d,EAAS2d,GAAY,CACnB,OAAQ,QACd,CAAK,CACH,EAGA5gH,EAAM,UAAU,UAAY,CACtB,CAACq3G,IAAc,CAAC0H,IAAYpoB,IAAS,YACvCgqB,GAAiB,GAAI,GAAO,EAAK,CAErC,EAAG,CAACtJ,EAAU,CAAC,EAIfr3G,EAAM,UAAU,UAAY,CACtBqgH,IAAaxsG,GACfysG,GAAa,EAAK,EAIhBzsG,GAAY,CAACyrG,GAAQ,SACvBI,GAAe,EAAK,CAExB,EAAG,CAAC7rG,CAAQ,CAAC,EASb,IAAIuvF,GAAW9L,GAAO,EACpB+L,GAAYlsF,GAAeisF,GAAU,CAAC,EACtC+d,GAAe9d,GAAU,CAAC,EAC1B+d,GAAe/d,GAAU,CAAC,EACxBge,GAAarhH,EAAM,OAAO,EAAK,EAG/BshH,GAAoB,SAA2Bx5H,GAAO,CACxD,IAAIy5H,GAAYJ,GAAY,EACxB19H,GAAMqE,GAAM,IACZ05H,GAAa/9H,KAAQ,QAezB,GAdI+9H,KAEE7qB,IAAS,YACX7uG,GAAM,eAAc,EAIjBuvH,IACH1W,GAAa,EAAI,GAGrBygB,GAAa,CAAC,CAAC1qB,EAAiB,EAG5BjzG,KAAQ,aAAe,CAAC89H,IAAaxC,IAAY,CAACroB,IAAqBH,EAAc,OAAQ,CAG/F,QAFIkrB,GAAqB1rG,GAAmBwgF,CAAa,EACrDmrB,GAAsB,KACjBl7H,GAAIi7H,GAAmB,OAAS,EAAGj7H,IAAK,EAAGA,IAAK,EAAG,CAC1D,IAAID,GAAUk7H,GAAmBj7H,EAAC,EAClC,GAAI,CAACD,GAAQ,SAAU,CACrBk7H,GAAmB,OAAOj7H,GAAG,CAAC,EAC9Bk7H,GAAsBn7H,GACtB,KACF,CACF,CACIm7H,IACF9D,EAAsB6D,GAAoB,CACxC,KAAM,SACN,OAAQ,CAACC,EAAmB,CACtC,CAAS,CAEL,CACA,QAASv1G,GAAO,UAAU,OAAQxa,GAAO,IAAI,MAAMwa,GAAO,EAAIA,GAAO,EAAI,CAAC,EAAGE,GAAO,EAAGA,GAAOF,GAAME,KAClG1a,GAAK0a,GAAO,CAAC,EAAI,UAAUA,EAAI,EAEjC,GAAIgrG,KAAe,CAACmK,IAAc,CAACH,GAAW,SAAU,CACtD,IAAIM,GAEAH,KACFH,GAAW,QAAU,KAEtBM,GAAoBtC,GAAQ,WAAa,MAAQsC,KAAsB,QAAUA,GAAkB,UAAU,MAAMA,GAAmB,CAAC75H,EAAK,EAAE,OAAO6J,EAAI,CAAC,CAC7J,CACAmtH,IAAc,MAAgCA,GAAU,MAAM,OAAQ,CAACh3H,EAAK,EAAE,OAAO6J,EAAI,CAAC,CAC5F,EAGIiwH,GAAkB,SAAyB95H,GAAO,CACpD,QAAS0kB,GAAQ,UAAU,OAAQ7a,GAAO,IAAI,MAAM6a,GAAQ,EAAIA,GAAQ,EAAI,CAAC,EAAGC,GAAQ,EAAGA,GAAQD,GAAOC,KACxG9a,GAAK8a,GAAQ,CAAC,EAAI,UAAUA,EAAK,EAEnC,GAAI4qG,GAAY,CACd,IAAIwK,IACHA,GAAoBxC,GAAQ,WAAa,MAAQwC,KAAsB,QAAUA,GAAkB,QAAQ,MAAMA,GAAmB,CAAC/5H,EAAK,EAAE,OAAO6J,EAAI,CAAC,CAC3J,CACI7J,GAAM,MAAQ,UAChBu5H,GAAW,QAAU,IAEvBxC,IAAY,MAA8BA,GAAQ,MAAM,OAAQ,CAAC/2H,EAAK,EAAE,OAAO6J,EAAI,CAAC,CACtF,EAGImwH,GAAmB,SAA0B9yH,GAAK,CACpD,IAAI+yH,GAAYxrB,EAAc,OAAO,SAAU/vG,GAAG,CAChD,OAAOA,KAAMwI,EACf,CAAC,EACD4uH,EAAsBmE,GAAW,CAC/B,KAAM,SACN,OAAQ,CAAC/yH,EAAG,CAClB,CAAK,CACH,EACImyG,GAAc,UAAuB,CAEvCkgB,GAAW,QAAU,EACvB,EAIIW,GAAWhiH,EAAM,OAAO,EAAK,EAC7BiiH,GAAmB,UAA4B,CACjDvC,GAAe,EAAI,EACd7rG,IACC8qG,IAAW,CAACqD,GAAS,SACvBrD,GAAQ,MAAM,OAAQ,SAAS,EAI7BxX,EAAW,SAAS,OAAO,GAC7BxG,GAAa,EAAI,GAGrBqhB,GAAS,QAAU,EACrB,EACIE,GAAkB,UAA2B,CAC/C5C,GAAQ,QAAU,GAClBI,GAAe,GAAO,UAAY,CAChCsC,GAAS,QAAU,GACnB1C,GAAQ,QAAU,GAClB3e,GAAa,EAAK,CACpB,CAAC,EACG,CAAA9sF,IAGA6iF,KAEEC,IAAS,OACXsM,EAASvM,GAAmB,CAC1B,OAAQ,QAClB,CAAS,EACQC,IAAS,YAElBsM,EAAS,GAAI,CACX,OAAQ,MAClB,CAAS,GAGD2b,GACFA,EAAO,MAAM,OAAQ,SAAS,EAElC,EAGIuD,GAAmB,CAAA,EACvBniH,EAAM,UAAU,UAAY,CAC1B,OAAO,UAAY,CACjBmiH,GAAiB,QAAQ,SAAUx+C,GAAW,CAC5C,OAAO,aAAaA,EAAS,CAC/B,CAAC,EACDw+C,GAAiB,OAAO,EAAGA,GAAiB,MAAM,CACpD,CACF,EAAG,CAAA,CAAE,EACL,IAAIC,GAAsB,SAA6Bt6H,GAAO,CAC5D,IAAIu6H,GACAv9H,GAASgD,GAAM,OACfmlH,IAAgBoV,GAAsBlD,GAAW,WAAa,MAAQkD,KAAwB,OAAS,OAASA,GAAoB,gBAAe,EAGvJ,GAAIpV,IAAgBA,GAAa,SAASnoH,EAAM,EAAG,CACjD,IAAI6+E,GAAY,WAAW,UAAY,CACrC,IAAIv7E,GAAQ+5H,GAAiB,QAAQx+C,EAAS,EAK9C,GAJIv7E,KAAU,IACZ+5H,GAAiB,OAAO/5H,GAAO,CAAC,EAElCu3H,GAAoB,EAChB,CAACzY,IAAU,CAAC+F,GAAa,SAAS,SAAS,aAAa,EAAG,CAC7D,IAAIqV,IACHA,GAAwBlD,GAAY,WAAa,MAAQkD,KAA0B,QAAUA,GAAsB,MAAK,CAC3H,CACF,CAAC,EACDH,GAAiB,KAAKx+C,EAAS,CACjC,CACA,QAAS42C,GAAQ,UAAU,OAAQgI,GAAW,IAAI,MAAMhI,GAAQ,EAAIA,GAAQ,EAAI,CAAC,EAAGC,GAAQ,EAAGA,GAAQD,GAAOC,KAC5G+H,GAAS/H,GAAQ,CAAC,EAAI,UAAUA,EAAK,EAEvC1wC,IAAgB,MAAkCA,GAAY,MAAM,OAAQ,CAAChiF,EAAK,EAAE,OAAOy6H,EAAQ,CAAC,CACtG,EAGIlM,GAAmBr2G,EAAM,SAAS,EAAE,EACtCs2G,GAAmBn/F,GAAek/F,GAAkB,CAAC,EACrDrqE,GAAcsqE,GAAiB,CAAC,EAElC,SAAS6D,IAAoB,CAC3BnuE,GAAY,CAAA,CAAE,CAChB,CAGA,IAAIw2E,GACAvC,KACFuC,GAAyB,SAAgChC,GAAS,CAChE7f,GAAa6f,EAAO,CACtB,GAIF7oB,GAAwB,UAAY,CAClC,IAAI8qB,GACJ,MAAO,CAAC30D,EAAa,SAAU20D,GAAuBtD,GAAW,WAAa,MAAQsD,KAAyB,OAAS,OAASA,GAAqB,gBAAe,CAAE,CACzK,EAAG7qB,GAAa+I,GAAc,CAAC,CAACsf,EAAwB,EAGxD,IAAIyC,GAAoB1iH,EAAM,QAAQ,UAAY,CAChD,OAAOmV,EAAcA,EAAc,CAAA,EAAI9b,CAAK,EAAG,CAAA,EAAI,CACjD,gBAAiB0kH,EACjB,KAAM1G,GACN,YAAazf,GACb,GAAI/yF,EACJ,WAAYm6G,GACZ,SAAUD,GACV,WAAYpe,EAClB,CAAK,CACH,EAAG,CAACtnG,EAAO0kH,EAAiBnmB,GAAayf,GAAYxyG,EAAIm6G,GAAkBD,GAAUpe,EAAY,CAAC,EAO9FgiB,GAAiB,CAAC,CAACnE,GAAcxtD,EACjC4xD,GACAD,KACFC,GAAyB5iH,EAAM,cAAci2F,GAAU,CACrD,UAAWzwF,GAAW,GAAG,OAAO4/B,EAAW,QAAQ,EAAGh+B,EAAgB,CAAA,EAAI,GAAG,OAAOg+B,EAAW,gBAAgB,EAAG4rB,CAAO,CAAC,EAC1H,cAAewtD,EACf,mBAAoB,CAClB,QAASxtD,EACT,YAAa0lC,GACb,KAAM2gB,GACN,QAASoI,GACT,WAAYT,EACpB,CACA,CAAK,GAIH,IAAI1oB,GAAmB,UAA4B,CACjD,IAAIusB,GACJ7E,GAAY,MAA8BA,EAAO,GAChD6E,GAAwBzD,GAAY,WAAa,MAAQyD,KAA0B,QAAUA,GAAsB,MAAK,EACzHjF,EAAsB,CAAA,EAAI,CACxB,KAAM,QACN,OAAQrnB,CACd,CAAK,EACDoqB,GAAiB,GAAI,GAAO,EAAK,CACnC,EACImC,GAAiBzsB,GAAcjxD,EAAWkxD,GAAkBC,EAAeC,EAAYC,EAAW5iF,EAAU6iF,GAAmBC,CAAI,EACrIE,GAAmBisB,GAAe,WAClCC,GAAYD,GAAe,UAGzBE,GAA0BhjH,EAAM,cAAcy+G,EAAY,CAC5D,IAAKY,EACT,CAAG,EAGG4D,GAAkBz9G,GAAW4/B,EAAWga,EAAWh4C,EAAgBA,EAAgBA,EAAgBA,EAAgBA,EAAgBA,EAAgBA,EAAgBA,EAAgBA,EAAgBA,EAAgB,CAAA,EAAI,GAAG,OAAOg+B,EAAW,UAAU,EAAGq6E,EAAW,EAAG,GAAG,OAAOr6E,EAAW,WAAW,EAAG25E,EAAQ,EAAG,GAAG,OAAO35E,EAAW,SAAS,EAAG,CAAC25E,EAAQ,EAAG,GAAG,OAAO35E,EAAW,cAAc,EAAGoxD,CAAU,EAAG,GAAG,OAAOpxD,EAAW,aAAa,EAAGu9E,EAAc,EAAG,GAAG,OAAOv9E,EAAW,WAAW,EAAGvxB,CAAQ,EAAG,GAAG,OAAOuxB,EAAW,UAAU,EAAG4rB,CAAO,EAAG,GAAG,OAAO5rB,EAAW,OAAO,EAAGiyE,EAAU,EAAG,GAAG,OAAOjyE,EAAW,kBAAkB,EAAG46E,EAAqB,EAAG,GAAG,OAAO56E,EAAW,cAAc,EAAG45E,EAAgB,CAAC,EAG1sBkE,GAA4BljH,EAAM,cAAck7G,GAAe,CACjE,IAAKiE,GACL,SAAUtrG,EACV,UAAWuxB,EACX,QAASwyD,GACT,aAAcorB,GACd,UAAW92C,EACX,eAAgBn+B,EAChB,cAAeotE,EACf,kBAAmBC,EACnB,UAAWh9E,EACX,yBAA0BqZ,EAC1B,eAAgB6jE,GAChB,cAAeC,GACf,UAAWtT,GACX,kBAAmBH,GACnB,kBAAmBzpE,GACnB,MAAOw/E,EACP,kBAAmB,SAA2Bp2G,GAAM,CAClD,OAIEy3G,GAAe,SAAWz3G,EAE9B,EACA,qBAAsB+6G,GACtB,kBAAmBrI,EACvB,EAAK8F,GAA0CjgH,EAAM,aAAaigH,GAA0B,CACxF,IAAKC,EACT,CAAG,EAAkBlgH,EAAM,cAAc8iG,GAAUj9F,GAAS,CAAA,EAAIxM,EAAO,CACnE,OAAQ6lH,GACR,UAAW95E,EACX,aAAc46E,GACd,IAAKZ,GACL,GAAIv6G,EACJ,OAAQtd,EACR,WAAYy3H,GACZ,qBAAsBhf,EACtB,KAAMrJ,EACN,mBAAoBwI,EACpB,UAAWuB,EACX,OAAQnK,EACR,KAAM8gB,GACN,aAAc1W,GACd,YAAa2B,EACb,YAAa5L,GACb,SAAUiqB,GACV,eAAgBO,GAChB,SAAUY,GACV,eAAgB9e,GAChB,YAAa7B,EACjB,CAAG,CAAC,CAAC,EAGCgiB,GAGJ,OAAIlD,GACFkD,GAAaD,GAEbC,GAA0BnjH,EAAM,cAAc,MAAO6F,GAAS,CAC5D,UAAWo9G,EACjB,EAAOhE,GAAU,CACX,IAAKnxD,EACL,YAAas0D,GACb,UAAWd,GACX,QAASM,GACT,QAASK,GACT,OAAQC,EACd,CAAK,EAAgBliH,EAAM,cAAcq9G,GAAQ,CAC3C,QAASoC,IAAe,CAACpI,GACzB,OAAQ9gB,CACd,CAAK,EAAG2sB,GAAcN,GAAW/rB,IAAoBksB,EAAS,EAExC/iH,EAAM,cAAc82F,GAAkB,SAAU,CAClE,MAAO4rB,EACX,EAAKS,EAAU,CACf,CAAC,EAGG,QAAQ,IAAI,WAAa,eAC3B1F,GAAW,YAAc,cCjlB3B,IAAI2F,GAAW,UAAoB,CACjC,OAAO,IACT,EACAA,GAAS,iBAAmB,GCH5B,IAAIC,GAAS,UAAkB,CAC7B,OAAO,IACT,EACAA,GAAO,eAAiB,GCGxB,IAAIC,GAAsBtjH,EAAM,WAAW,SAAUtE,EAAM5C,EAAK,CAC9D,IAAI+X,EAASnV,EAAK,OAChB24D,EAAU34D,EAAK,QACf04D,EAAU14D,EAAK,QACf0K,EAAW1K,EAAK,SAChB0pC,EAAY1pC,EAAK,UACjB6nH,EAAgB7nH,EAAK,cACrB8nH,EAAa9nH,EAAK,WAClB+nH,EAAM/nH,EAAK,IACXgoH,EAAQhoH,EAAK,MACXioH,EAAa,CAAA,EACbC,EAAa,CACf,QAAS,OACT,cAAe,QACnB,EACE,OAAIvvD,IAAY,SAEdsvD,EAAa,CACX,OAAQ9yG,EACR,SAAU,WACV,SAAU,QAChB,EACI+yG,EAAazuG,EAAcA,EAAc,CAAA,EAAIyuG,CAAU,EAAG,GAAIx8G,EAAgBA,EAAgBA,EAAgBA,EAAgBA,EAAgB,CAC5I,UAAW,cAAc,OAAOitD,EAAS,KAAK,CACpD,EAAOovD,EAAM,cAAgB,aAAc,CAACrvD,CAAO,EAAG,WAAY,UAAU,EAAG,OAAQ,CAAC,EAAG,QAAS,CAAC,EAAG,MAAO,CAAC,CAAC,GAE3Fp0D,EAAM,cAAc,MAAO,CAC7C,MAAO2jH,CACX,EAAkB3jH,EAAM,cAAckS,GAAgB,CAClD,SAAU,SAAkBtW,EAAO,CACjC,IAAIiZ,EAAejZ,EAAM,aACrBiZ,GAAgB0uG,GAClBA,EAAa,CAEjB,CACJ,EAAkBvjH,EAAM,cAAc,MAAO6F,GAAS,CAClD,MAAO+9G,EACP,UAAWp+G,GAAW4B,EAAgB,GAAI,GAAG,OAAOg+B,EAAW,eAAe,EAAGA,CAAS,CAAC,EAC3F,IAAKtsC,CACT,EAAK0qH,CAAU,EAAGp9G,EAAUs9G,CAAK,CAAC,CAAC,CACnC,CAAC,EACDJ,GAAO,YAAc,SCjDd,SAAStqB,GAAKt9F,EAAM,CACzB,IAAI0K,EAAW1K,EAAK,SAClBgqD,EAAShqD,EAAK,OACZmoH,EAAU7jH,EAAM,YAAY,SAAUyH,EAAM,CAC9Ci+C,EAAOj+C,CAAI,CACb,EAAG,CAAA,CAAE,EACL,OAAoBzH,EAAM,aAAaoG,EAAU,CAC/C,IAAKy9G,CACT,CAAG,CACH,CCRe,SAASC,GAAYj4F,EAAMk4F,EAAYC,EAAU19C,EAAalS,EAAS5f,EAAYyvE,EAAYvoH,EAAM,CAClH,IAAI2hG,EAAS3hG,EAAK,OAClB,OAAOmwB,EAAK,MAAMk4F,EAAYC,EAAW,CAAC,EAAE,IAAI,SAAU7mG,EAAM/0B,EAAO,CACrE,IAAI87H,EAAWH,EAAa37H,EACxBqf,EAAOw8G,EAAW9mG,EAAM+mG,EAAU,CACpC,MAAO,CACL,MAAO59C,CACf,EACM,QAASlS,CACf,CAAK,EACG3wE,EAAM45G,EAAOlgF,CAAI,EACrB,OAAoBnd,EAAM,cAAcg5F,GAAM,CAC5C,IAAKv1G,EACL,OAAQ,SAAgBwpB,EAAK,CAC3B,OAAOunC,EAAWr3B,EAAMlQ,CAAG,CAC7B,CACN,EAAOxF,CAAI,CACT,CAAC,CACH,CCkBO,SAAS08G,GAAkBC,EAAYC,EAAYhnB,EAAQ,CAChE,IAAIinB,EAAYF,EAAW,OACvBG,EAAYF,EAAW,OACvBG,EACAC,EACJ,GAAIH,IAAc,GAAKC,IAAc,EACnC,OAAO,KAELD,EAAYC,GACdC,EAAYJ,EACZK,EAAWJ,IAEXG,EAAYH,EACZI,EAAWL,GAEb,IAAIM,EAAc,CAChB,eAAgB,EACpB,EACE,SAASC,EAAWxnG,EAAM,CACxB,OAAIA,IAAS,OACJkgF,EAAOlgF,CAAI,EAEbunG,CACT,CAKA,QAFIE,EAAY,KACZ7F,EAAW,KAAK,IAAIuF,EAAYC,CAAS,IAAM,EAC1C/9H,EAAI,EAAGA,EAAIi+H,EAAS,OAAQj+H,GAAK,EAAG,CAC3C,IAAIq+H,EAAWF,EAAWH,EAAUh+H,CAAC,CAAC,EAClCs+H,EAAUH,EAAWF,EAASj+H,CAAC,CAAC,EACpC,GAAIq+H,IAAaC,EAAS,CACxBF,EAAYp+H,EACZu4H,EAAWA,GAAY8F,IAAaF,EAAWF,EAASj+H,EAAI,CAAC,CAAC,EAC9D,KACF,CACF,CACA,OAAOo+H,IAAc,KAAO,KAAO,CACjC,MAAOA,EACP,SAAU7F,CACd,CACA,CC5Ee,SAASgG,GAAYrgI,EAAM24G,EAAQ2nB,EAAQ,CACxD,IAAIjkF,EAAkB/gC,EAAM,SAAStb,CAAI,EACvCs8C,EAAmB7pB,GAAe4pB,EAAiB,CAAC,EACpDkkF,EAAWjkF,EAAiB,CAAC,EAC7BkkF,EAAclkF,EAAiB,CAAC,EAC9BmkC,EAAmBnlE,EAAM,SAAS,IAAI,EACxColE,EAAmBjuD,GAAeguD,EAAkB,CAAC,EACrDggD,EAAW//C,EAAiB,CAAC,EAC7BggD,EAAchgD,EAAiB,CAAC,EAClCplE,OAAAA,EAAM,UAAU,UAAY,CAC1B,IAAI+4E,EAAOorC,GAAkBc,GAAY,CAAA,EAAIvgI,GAAQ,CAAA,EAAI24G,CAAM,GAC1DtkB,GAAS,KAA0B,OAASA,EAAK,SAAW,QAE/DqsC,EAAY1gI,EAAKq0F,EAAK,KAAK,CAAC,EAE9BmsC,EAAYxgI,CAAI,CAClB,EAAG,CAACA,CAAI,CAAC,EACF,CAACygI,CAAQ,CAClB,CCpBA,IAAIE,IAAQ,OAAO,UAAc,IAAc,YAAcv/G,GAAQ,SAAS,KAAO,UAAY,WAAW,KAAK,UAAU,SAAS,ECApI,MAAAw/G,GAAgB,SAAUC,EAAeC,EAAkBC,EAAgBC,EAAiB,CAE1F,IAAInuB,EAAUx+F,EAAAA,OAAO,EAAK,EACtB4sH,EAAiB5sH,EAAAA,OAAO,IAAI,EAChC,SAAS6sH,GAAa,CACpB,aAAaD,EAAe,OAAO,EACnCpuB,EAAQ,QAAU,GAClBouB,EAAe,QAAU,WAAW,UAAY,CAC9CpuB,EAAQ,QAAU,EACpB,EAAG,EAAE,CACP,CAGA,IAAIsuB,EAAgB9sH,EAAAA,OAAO,CACzB,IAAKwsH,EACL,OAAQC,EACR,KAAMC,EACN,MAAOC,CACX,CAAG,EACD,OAAAG,EAAc,QAAQ,IAAMN,EAC5BM,EAAc,QAAQ,OAASL,EAC/BK,EAAc,QAAQ,KAAOJ,EAC7BI,EAAc,QAAQ,MAAQH,EACvB,SAAUI,EAAcvwF,EAAO,CACpC,IAAIwwF,EAAe,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACnFC,EAAeF,EAEnBvwF,EAAQ,GAAKswF,EAAc,QAAQ,MAEnCtwF,EAAQ,GAAKswF,EAAc,QAAQ,MACjCtwF,EAAQ,GAAKswF,EAAc,QAAQ,KAErCtwF,EAAQ,GAAKswF,EAAc,QAAQ,OACnC,OAAIE,GAAgBC,GAElB,aAAaL,EAAe,OAAO,EACnCpuB,EAAQ,QAAU,KACT,CAACyuB,GAAgBzuB,EAAQ,UAClCquB,EAAU,EAEL,CAACruB,EAAQ,SAAWyuB,CAC7B,CACF,ECvCe,SAASC,GAAcC,EAAWX,EAAeC,EAAkBC,EAAgBC,EAAiBS,EAInHC,EAAc,CACZ,IAAIC,EAAYttH,EAAAA,OAAO,CAAC,EACpBy1C,EAAez1C,EAAAA,OAAO,IAAI,EAG1ButH,EAAgBvtH,EAAAA,OAAO,IAAI,EAC3BwtH,EAAmBxtH,EAAAA,OAAO,EAAK,EAG/BitH,EAAeV,GAAgBC,EAAeC,EAAkBC,EAAgBC,CAAe,EACnG,SAASc,EAASriI,EAAGsiI,EAAQ,CAI3B,GAHArwG,GAAI,OAAOo4B,EAAa,OAAO,EAG3B,CAAAw3E,EAAa,GAAOS,CAAM,EAG9B,KAAI3+H,EAAQ3D,EACZ,GAAI,CAAC2D,EAAM,gBACTA,EAAM,gBAAkB,OAExB,QAEFu+H,EAAU,SAAWI,EACrBH,EAAc,QAAUG,EAGnBpB,IACHv9H,EAAM,eAAc,EAEtB0mD,EAAa,QAAUp4B,GAAI,UAAY,CAGrC,IAAIswG,EAAgBH,EAAiB,QAAU,GAAK,EACpDH,EAAaC,EAAU,QAAUK,EAAe,EAAK,EACrDL,EAAU,QAAU,CACtB,CAAC,EACH,CACA,SAASM,EAAS7+H,EAAO8+H,EAAQ,CAC/BR,EAAaQ,EAAQ,EAAI,EACpBvB,IACHv9H,EAAM,eAAc,CAExB,CAGA,IAAI++H,EAAoB9tH,EAAAA,OAAO,IAAI,EAC/B+tH,EAAyB/tH,EAAAA,OAAO,IAAI,EACxC,SAASguH,EAAQj/H,EAAO,CACtB,GAAKo+H,EAGL9vG,CAAAA,GAAI,OAAO0wG,EAAuB,OAAO,EACzCA,EAAuB,QAAU1wG,GAAI,UAAY,CAC/CywG,EAAkB,QAAU,IAC9B,EAAG,CAAC,EACJ,IAAID,EAAS9+H,EAAM,OACjB2+H,EAAS3+H,EAAM,OACfk/H,EAAWl/H,EAAM,SACfm/H,EAAeL,EACfM,EAAeT,GACfI,EAAkB,UAAY,MAAQ,CAACA,EAAkB,SAAYG,GAAsBP,GAAU,CAACG,KACxGK,EAAeR,EACfS,EAAe,EACfL,EAAkB,QAAU,MAE9B,IAAIM,EAAO,KAAK,IAAIF,CAAY,EAC5BG,EAAO,KAAK,IAAIF,CAAY,EAC5BL,EAAkB,UAAY,OAChCA,EAAkB,QAAUV,GAAoBgB,EAAOC,EAAO,IAAM,KAElEP,EAAkB,UAAY,IAChCL,EAAS1+H,EAAOo/H,CAAY,EAE5BP,EAAS7+H,EAAOm/H,CAAY,EAEhC,CAGA,SAASI,EAAgBv/H,EAAO,CACzBo+H,IACLK,EAAiB,QAAUz+H,EAAM,SAAWw+H,EAAc,QAC5D,CACA,MAAO,CAACS,EAASM,CAAe,CAClC,CCrFO,SAASC,GAAWlqB,EAAYC,EAAQkqB,EAASC,EAAY,CAClE,IAAIC,EAAiBznH,EAAM,QAAQ,UAAY,CAC3C,MAAO,CAAC,IAAI,IAAO,EAAE,CACvB,EAAG,CAACo9F,EAAYmqB,EAAQ,GAAIC,CAAU,CAAC,EACvCE,EAAkBvwG,GAAeswG,EAAgB,CAAC,EAClDE,EAAYD,EAAgB,CAAC,EAC7BE,EAAaF,EAAgB,CAAC,EAC5BG,EAAU,SAAiBC,EAAU,CACvC,IAAIC,EAAS,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAID,EAE7E/D,EAAa4D,EAAU,IAAIG,CAAQ,EACnC9D,EAAW2D,EAAU,IAAII,CAAM,EAGnC,GAAIhE,IAAe,QAAaC,IAAa,OAE3C,QADIgE,EAAU5qB,EAAW,OAChB52G,EAAIohI,EAAW,OAAQphI,EAAIwhI,EAASxhI,GAAK,EAAG,CACnD,IAAIyhI,EACA9qG,EAAOigF,EAAW52G,CAAC,EACnB/C,EAAM45G,EAAOlgF,CAAI,EACrBwqG,EAAU,IAAIlkI,EAAK+C,CAAC,EACpB,IAAI0hI,GAAeD,EAAeV,EAAQ,IAAI9jI,CAAG,KAAO,MAAQwkI,IAAiB,OAASA,EAAeT,EAQzG,GAPAI,EAAWphI,CAAC,GAAKohI,EAAWphI,EAAI,CAAC,GAAK,GAAK0hI,EACvCzkI,IAAQqkI,IACV/D,EAAav9H,GAEX/C,IAAQskI,IACV/D,EAAWx9H,GAETu9H,IAAe,QAAaC,IAAa,OAC3C,KAEJ,CAEF,MAAO,CACL,IAAK4D,EAAW7D,EAAa,CAAC,GAAK,EACnC,OAAQ6D,EAAW5D,CAAQ,CACjC,CACE,EACA,OAAO6D,CACT,CC3CA,IAAIM,GAAwB,UAAY,CACtC,SAASA,GAAW,CAClBz1G,GAAgB,KAAMy1G,CAAQ,EAC9B/gH,EAAgB,KAAM,OAAQ,MAAM,EAGpCA,EAAgB,KAAM,KAAM,CAAC,EAC7BA,EAAgB,KAAM,cAAe,IAAI,GAAK,EAC9C,KAAK,KAAO,OAAO,OAAO,IAAI,CAChC,CACAwL,OAAAA,GAAau1G,EAAU,CAAC,CACtB,IAAK,MACL,MAAO,SAAa1kI,EAAKmB,EAAO,CAE9B,KAAK,YAAY,IAAInB,EAAK,KAAK,KAAKA,CAAG,CAAC,EACxC,KAAK,KAAKA,CAAG,EAAImB,EACjB,KAAK,IAAM,CACb,CACJ,EAAK,CACD,IAAK,MACL,MAAO,SAAanB,EAAK,CACvB,OAAO,KAAK,KAAKA,CAAG,CACtB,CAMJ,EAAK,CACD,IAAK,cACL,MAAO,UAAuB,CAC5B,KAAK,YAAY,MAAK,CACxB,CACJ,EAAK,CACD,IAAK,YACL,MAAO,UAAqB,CAC1B,OAAO,KAAK,WACd,CACJ,CAAG,CAAC,EACK0kI,CACT,EAAC,ECxCD,SAASC,GAAYxjI,EAAO,CAC1B,IAAI0xB,EAAM,WAAW1xB,CAAK,EAC1B,OAAO,MAAM0xB,CAAG,EAAI,EAAIA,CAC1B,CACe,SAAS+xG,GAAWhrB,EAAQirB,EAAWC,EAAc,CAClE,IAAIxnF,EAAkB/gC,EAAM,SAAS,CAAC,EACpCghC,EAAmB7pB,GAAe4pB,EAAiB,CAAC,EACpDynF,EAAcxnF,EAAiB,CAAC,EAChCynF,EAAiBznF,EAAiB,CAAC,EACjC0nF,EAAc3vH,EAAAA,OAAO,IAAI,GAAK,EAC9B4vH,EAAa5vH,EAAAA,OAAO,IAAIovH,EAAU,EAClCS,EAAe7vH,EAAAA,OAAO,CAAC,EAC3B,SAAS8vH,GAAY,CACnBD,EAAa,SAAW,CAC1B,CACA,SAASE,GAAgB,CACvB,IAAIC,EAAO,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC/EF,EAAS,EACT,IAAIG,EAAY,UAAqB,CACnC,IAAIC,EAAU,GACdP,EAAY,QAAQ,QAAQ,SAAUh7G,EAASjqB,EAAK,CAClD,GAAIiqB,GAAWA,EAAQ,aAAc,CACnC,IAAImH,EAAenH,EAAQ,aACvBw7G,EAAoB,iBAAiBx7G,CAAO,EAC9Cy7G,EAAYD,EAAkB,UAC9BE,EAAeF,EAAkB,aAC/BG,EAAejB,GAAYe,CAAS,EACpCG,EAAkBlB,GAAYgB,CAAY,EAC1CG,EAAc10G,EAAew0G,EAAeC,EAC5CX,EAAW,QAAQ,IAAIllI,CAAG,IAAM8lI,IAClCZ,EAAW,QAAQ,IAAIllI,EAAK8lI,CAAW,EACvCN,EAAU,GAEd,CACF,CAAC,EAGGA,GACFR,EAAe,SAAUxiI,EAAG,CAC1B,OAAOA,EAAI,CACb,CAAC,CAEL,EACA,GAAI8iI,EACFC,EAAS,MACJ,CACLJ,EAAa,SAAW,EACxB,IAAI/jH,EAAK+jH,EAAa,QACtB,QAAQ,UAAU,KAAK,UAAY,CAC7B/jH,IAAO+jH,EAAa,SACtBI,EAAS,CAEb,CAAC,CACH,CACF,CACA,SAASQ,EAAersG,EAAMlmB,EAAU,CACtC,IAAIxT,EAAM45G,EAAOlgF,CAAI,EACRurG,EAAY,QAAQ,IAAIjlI,CAAG,EACpCwT,GACFyxH,EAAY,QAAQ,IAAIjlI,EAAKwT,CAAQ,EACrC6xH,EAAa,GAEbJ,EAAY,QAAQ,OAAOjlI,CAAG,CAWlC,CACAuV,OAAAA,EAAAA,UAAU,UAAY,CACpB,OAAO6vH,CACT,EAAG,CAAA,CAAE,EACE,CAACW,EAAgBV,EAAeH,EAAW,QAASH,CAAW,CACxE,CChFA,IAAIiB,GAAa,GAAK,GACP,SAASC,GAAmBxD,EAAW7G,EAASjsH,EAAU,CACvE,IAAIu2H,EAAa5wH,EAAAA,OAAO,EAAK,EACzB6wH,EAAY7wH,EAAAA,OAAO,CAAC,EACpB8wH,EAAY9wH,EAAAA,OAAO,CAAC,EACpB+a,EAAa/a,EAAAA,OAAO,IAAI,EAGxB+wH,EAAc/wH,EAAAA,OAAO,IAAI,EAGzBgxH,EACAC,EAAc,SAAqB7lI,EAAG,CACxC,GAAIwlI,EAAW,QAAS,CACtB,IAAIM,EAAW,KAAK,KAAK9lI,EAAE,QAAQ,CAAC,EAAE,KAAK,EACvC+lI,EAAW,KAAK,KAAK/lI,EAAE,QAAQ,CAAC,EAAE,KAAK,EACvCiwE,EAAUw1D,EAAU,QAAUK,EAC9B51D,EAAUw1D,EAAU,QAAUK,EAC9BC,EAAgB,KAAK,IAAI/1D,CAAO,EAAI,KAAK,IAAIC,CAAO,EACpD81D,EACFP,EAAU,QAAUK,EAEpBJ,EAAU,QAAUK,EAEtB,IAAIE,EAAgBh3H,EAAS+2H,EAAeA,EAAgB/1D,EAAUC,EAAS,GAAOlwE,CAAC,EACnFimI,GACFjmI,EAAE,eAAc,EAIlB,cAAc2lI,EAAY,OAAO,EAC7BM,IACFN,EAAY,QAAU,YAAY,UAAY,CACxCK,EACF/1D,GAAWq1D,GAEXp1D,GAAWo1D,GAEb,IAAI7hG,EAAS,KAAK,MAAMuiG,EAAgB/1D,EAAUC,CAAO,GACrD,CAACjhE,EAAS+2H,EAAeviG,EAAQ,EAAI,GAAK,KAAK,IAAIA,CAAM,GAAK,KAChE,cAAckiG,EAAY,OAAO,CAErC,EAAG,EAAE,EAET,CACF,EACIO,EAAa,UAAsB,CACrCV,EAAW,QAAU,GACrBI,EAAa,CACf,EACIO,EAAe,SAAsBnmI,EAAG,CAC1C4lI,EAAa,EACT5lI,EAAE,QAAQ,SAAW,GAAK,CAACwlI,EAAW,UACxCA,EAAW,QAAU,GACrBC,EAAU,QAAU,KAAK,KAAKzlI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAChD0lI,EAAU,QAAU,KAAK,KAAK1lI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAChD2vB,EAAW,QAAU3vB,EAAE,OACvB2vB,EAAW,QAAQ,iBAAiB,YAAak2G,EAAa,CAC5D,QAAS,EACjB,CAAO,EACDl2G,EAAW,QAAQ,iBAAiB,WAAYu2G,EAAY,CAC1D,QAAS,EACjB,CAAO,EAEL,EACAN,EAAgB,UAAyB,CACnCj2G,EAAW,UACbA,EAAW,QAAQ,oBAAoB,YAAak2G,CAAW,EAC/Dl2G,EAAW,QAAQ,oBAAoB,WAAYu2G,CAAU,EAEjE,EACA3qG,GAAgB,UAAY,CAC1B,OAAIwmG,GACF7G,EAAQ,QAAQ,iBAAiB,aAAciL,EAAc,CAC3D,QAAS,EACjB,CAAO,EAEI,UAAY,CACjB,IAAIxK,GACHA,EAAmBT,EAAQ,WAAa,MAAQS,IAAqB,QAAUA,EAAiB,oBAAoB,aAAcwK,CAAY,EAC/IP,EAAa,EACb,cAAcD,EAAY,OAAO,CACnC,CACF,EAAG,CAAC5D,CAAS,CAAC,CAChB,CCpFA,SAASqE,GAAmB3iG,EAAQ,CAClC,OAAO,KAAK,MAAM,KAAK,IAAIA,EAAQ,EAAG,CAAC,CACzC,CACO,SAAS4iG,GAAU,EAAGC,EAAY,CACvC,IAAIhoI,EAAM,YAAa,EAAI,EAAE,QAAQ,CAAC,EAAI,EAC1C,OAAOA,EAAIgoI,EAAa,QAAU,OAAO,EAAI,OAAOA,EAAa,UAAY,SAAS,CACxF,CACe,SAASC,GAAcxE,EAAWyE,EAAcC,EAAgB,CAC7E5qH,EAAM,UAAU,UAAY,CAC1B,IAAIiN,EAAM09G,EAAa,QACvB,GAAIzE,GAAaj5G,EAAK,CACpB,IAAI49G,EAAgB,GAChBj9D,EACAk9D,EACAC,EAAa,UAAsB,CACrC30G,GAAI,OAAOw3C,CAAK,CAClB,EACIo9D,EAAiB,SAASA,GAAiB,CAC7CD,EAAU,EACVn9D,EAAQx3C,GAAI,UAAY,CACtBw0G,EAAeE,CAAO,EACtBE,EAAc,CAChB,CAAC,CACH,EACIlhD,EAAc,SAAqB3lF,EAAG,CAExC,GAAI,EAAAA,EAAE,OAAO,WAAaA,EAAE,SAAW,GAIvC,KAAI2D,EAAQ3D,EACP2D,EAAM,kBACTA,EAAM,gBAAkB,GACxB+iI,EAAgB,IAEpB,EACI9gD,EAAY,UAAqB,CACnC8gD,EAAgB,GAChBE,EAAU,CACZ,EACIE,EAAc,SAAqB9mI,EAAG,CACxC,GAAI0mI,EAAe,CACjB,IAAIK,EAASV,GAAUrmI,EAAG,EAAK,EAC3BgnI,EAAwBl+G,EAAI,sBAAqB,EACnDk/C,EAAMg/D,EAAsB,IAC5BC,EAASD,EAAsB,OACjC,GAAID,GAAU/+D,EAAK,CACjB,IAAI4sB,EAAO5sB,EAAM++D,EACjBJ,EAAU,CAACP,GAAmBxxC,CAAI,EAClCiyC,EAAc,CAChB,SAAWE,GAAUE,EAAQ,CAC3B,IAAIC,EAAQH,EAASE,EACrBN,EAAUP,GAAmBc,CAAK,EAClCL,EAAc,CAChB,MACED,EAAU,CAEd,CACF,EACA,OAAA99G,EAAI,iBAAiB,YAAa68D,CAAW,EAC7C78D,EAAI,cAAc,iBAAiB,UAAW88D,CAAS,EACvD98D,EAAI,cAAc,iBAAiB,YAAag+G,CAAW,EACpD,UAAY,CACjBh+G,EAAI,oBAAoB,YAAa68D,CAAW,EAChD78D,EAAI,cAAc,oBAAoB,UAAW88D,CAAS,EAC1D98D,EAAI,cAAc,oBAAoB,YAAag+G,CAAW,EAC9DF,EAAU,CACZ,CACF,CACF,EAAG,CAAC7E,CAAS,CAAC,CAChB,CChEA,IAAIoF,GAAY,GACD,SAASC,GAAYz9D,EAAcppE,EAAM6iI,EAASC,EAAYnqB,EAAQyrB,EAAe0C,EAAeC,EAAc,CAC/H,IAAIC,EAAY1rH,EAAM,OAAM,EACxB+gC,EAAkB/gC,EAAM,SAAS,IAAI,EACvCghC,EAAmB7pB,GAAe4pB,EAAiB,CAAC,EACpD4qF,EAAY3qF,EAAiB,CAAC,EAC9B4qF,EAAe5qF,EAAiB,CAAC,EAGnCthB,OAAAA,GAAgB,UAAY,CAC1B,GAAIisG,GAAaA,EAAU,MAAQL,GAAW,CAE5C,GAAI,CAACx9D,EAAa,QAAS,CACzB89D,EAAa,SAAU9Y,EAAK,CAC1B,OAAO39F,EAAc,CAAA,EAAI29F,CAAG,CAC9B,CAAC,EACD,MACF,CACAgW,EAAa,EACb,IAAI+C,EAAcF,EAAU,YAC1BG,EAAcH,EAAU,YACxBvjI,EAAQujI,EAAU,MAClB/jG,EAAS+jG,EAAU,OACjB96G,EAASi9C,EAAa,QAAQ,aAC9Bi+D,EAAoB,GACpBC,EAAiBH,EACjB9Z,EAAY,KAGhB,GAAIlhG,EAAQ,CAQV,QAPIo7G,EAAcJ,GAAeC,EAG7BI,EAAW,EACXC,EAAU,EACVC,EAAa,EACbC,EAAS,KAAK,IAAI3nI,EAAK,OAAS,EAAG0D,CAAK,EACnC5B,EAAI,EAAGA,GAAK6lI,EAAQ7lI,GAAK,EAAG,CACnC,IAAI/C,EAAM45G,EAAO34G,EAAK8B,CAAC,CAAC,EACxB2lI,EAAUD,EACV,IAAIhE,EAAcX,EAAQ,IAAI9jI,CAAG,EACjC2oI,EAAaD,GAAWjE,IAAgB,OAAYV,EAAaU,GACjEgE,EAAWE,CACb,CAIA,QADIE,EAAaL,IAAgB,MAAQrkG,EAAS/W,EAAS+W,EAClDzZ,EAAKk+G,EAAQl+G,GAAM,EAAGA,GAAM,EAAG,CACtC,IAAI9B,EAAOgxF,EAAO34G,EAAKypB,CAAE,CAAC,EACtBo+G,EAAehF,EAAQ,IAAIl7G,CAAI,EACnC,GAAIkgH,IAAiB,OAAW,CAC9BR,EAAoB,GACpB,KACF,CAEA,GADAO,GAAcC,EACVD,GAAc,EAChB,KAEJ,CAGA,OAAQL,EAAW,CACjB,IAAK,MACHla,EAAYoa,EAAUvkG,EACtB,MACF,IAAK,SACHmqF,EAAYqa,EAAav7G,EAAS+W,EAClC,MACF,QACE,CACE,IAAIomF,EAAYlgD,EAAa,QAAQ,UACjC0+D,EAAexe,EAAYn9F,EAC3Bs7G,EAAUne,EACZge,EAAiB,MACRI,EAAaI,IACtBR,EAAiB,SAErB,CACZ,CACYja,IAAc,MAChByZ,EAAczZ,CAAS,EAIrBA,IAAc4Z,EAAU,UAC1BI,EAAoB,GAExB,CAGIA,GACFH,EAAaz2G,EAAcA,EAAc,CAAA,EAAIw2G,CAAS,EAAG,CAAA,EAAI,CAC3D,MAAOA,EAAU,MAAQ,EACzB,YAAaK,EACb,QAASja,CACnB,CAAS,CAAC,CAEN,MAAW,QAAQ,IAAI,WAAa,eAAiB4Z,GAAc,KAA+B,OAASA,EAAU,SAAWL,IAC9H7kH,GAAQ,GAAO,qGAAqG,CAExH,EAAG,CAACklH,EAAW79D,EAAa,OAAO,CAAC,EAG7B,SAAUjuD,EAAK,CAEpB,GAAIA,GAAQ,KAA2B,CACrC4rH,EAAY,EACZ,MACF,CAIA,GADAr1G,GAAI,OAAOs1G,EAAU,OAAO,EACxB,OAAO7rH,GAAQ,SACjB2rH,EAAc3rH,CAAG,UACRA,GAAOiG,GAAQjG,CAAG,IAAM,SAAU,CAC3C,IAAIzX,EACAm8G,EAAQ1kG,EAAI,MACZ,UAAWA,EACbzX,EAAQyX,EAAI,MAEZzX,EAAQ1D,EAAK,UAAU,SAAUy4B,EAAM,CACrC,OAAOkgF,EAAOlgF,CAAI,IAAMtd,EAAI,GAC9B,CAAC,EAEH,IAAI4sH,EAAc5sH,EAAI,OACpB+nB,EAAS6kG,IAAgB,OAAS,EAAIA,EACxCb,EAAa,CACX,MAAO,EACP,MAAOxjI,EACP,OAAQw/B,EACR,YAAa28E,CACrB,CAAO,CACH,CACF,CACF,CCvIA,IAAImoB,GAAyB1sH,EAAM,WAAW,SAAU3G,EAAOP,EAAK,CAClE,IAAIssC,EAAY/rC,EAAM,UACpBoqH,EAAMpqH,EAAM,IACZszH,EAAetzH,EAAM,aACrBuzH,EAAcvzH,EAAM,YACpBwzH,EAAcxzH,EAAM,YACpByzH,EAAazzH,EAAM,WACnB05G,EAAW15G,EAAM,SACjBoxH,EAAapxH,EAAM,WACnB0zH,EAAW1zH,EAAM,SACjB2zH,EAAgB3zH,EAAM,cACtBqiB,EAAQriB,EAAM,MACd4zH,EAAkB5zH,EAAM,WACxB6zH,EAAgB7zH,EAAM,cACpB0nC,EAAkB/gC,EAAM,SAAS,EAAK,EACxCghC,EAAmB7pB,GAAe4pB,EAAiB,CAAC,EACpDosF,EAAWnsF,EAAiB,CAAC,EAC7BosF,EAAcpsF,EAAiB,CAAC,EAC9BmkC,EAAmBnlE,EAAM,SAAS,IAAI,EACxColE,EAAmBjuD,GAAeguD,EAAkB,CAAC,EACrDkoD,EAASjoD,EAAiB,CAAC,EAC3BkoD,EAAYloD,EAAiB,CAAC,EAC5BixC,EAAmBr2G,EAAM,SAAS,IAAI,EACxCs2G,EAAmBn/F,GAAek/F,EAAkB,CAAC,EACrDkX,EAAWjX,EAAiB,CAAC,EAC7BkX,EAAclX,EAAiB,CAAC,EAC9BmX,EAAQ,CAAChK,EAGTiK,EAAe1tH,EAAM,OAAM,EAC3B2tH,EAAW3tH,EAAM,OAAM,EAGvBi3G,EAAmBj3G,EAAM,SAASktH,CAAa,EACjDhW,EAAmB//F,GAAe8/F,EAAkB,CAAC,EACrDnnE,EAAUonE,EAAiB,CAAC,EAC5B0W,EAAa1W,EAAiB,CAAC,EAC7B2W,EAAoB7tH,EAAM,OAAM,EAChC8tH,EAAc,UAAuB,CACnCZ,IAAkB,IAAQA,IAAkB,KAChD,aAAaW,EAAkB,OAAO,EACtCD,EAAW,EAAI,EACfC,EAAkB,QAAU,WAAW,UAAY,CACjDD,EAAW,EAAK,CAClB,EAAG,GAAI,EACT,EAGIG,EAAoBnB,EAAcI,GAAiB,EACnDgB,EAAoBhB,EAAgBD,GAAY,EAGhD5gE,EAAMnsD,EAAM,QAAQ,UAAY,CAClC,GAAI2sH,IAAiB,GAAKoB,IAAsB,EAC9C,MAAO,GAET,IAAIE,EAAMtB,EAAeoB,EACzB,OAAOE,EAAMD,CACf,EAAG,CAACrB,EAAcoB,EAAmBC,CAAiB,CAAC,EAGnDE,EAAuB,SAA8B/pI,EAAG,CAC1DA,EAAE,gBAAe,EACjBA,EAAE,eAAc,CAClB,EAGIgqI,EAAWnuH,EAAM,OAAO,CAC1B,IAAKmsD,EACL,SAAUghE,EACV,MAAOE,EACP,SAAUE,CACd,CAAG,EACDY,EAAS,QAAU,CACjB,IAAKhiE,EACL,SAAUghE,EACV,MAAOE,EACP,SAAUE,CACd,EACE,IAAIa,EAAmB,SAA0BjqI,EAAG,CAClDipI,EAAY,EAAI,EAChBE,EAAU9C,GAAUrmI,EAAGsmI,CAAU,CAAC,EAClC+C,EAAYW,EAAS,QAAQ,GAAG,EAChCtB,EAAW,EACX1oI,EAAE,gBAAe,EACjBA,EAAE,eAAc,CAClB,EAOA6b,EAAM,UAAU,UAAY,CAC1B,IAAIquH,EAAwB,SAA+BlqI,GAAG,CAC5DA,GAAE,eAAc,CAClB,EACImqI,EAAeZ,EAAa,QAC5Ba,GAAWZ,EAAS,QACxB,OAAAW,EAAa,iBAAiB,aAAcD,EAAuB,CACjE,QAAS,EACf,CAAK,EACDE,GAAS,iBAAiB,aAAcH,EAAkB,CACxD,QAAS,EACf,CAAK,EACM,UAAY,CACjBE,EAAa,oBAAoB,aAAcD,CAAqB,EACpEE,GAAS,oBAAoB,aAAcH,CAAgB,CAC7D,CACF,EAAG,CAAA,CAAE,EAGL,IAAII,GAAuBxuH,EAAM,OAAM,EACvCwuH,GAAqB,QAAUT,EAC/B,IAAIU,GAAuBzuH,EAAM,OAAM,EACvCyuH,GAAqB,QAAUT,EAC/BhuH,EAAM,UAAU,UAAY,CAC1B,GAAImtH,EAAU,CACZ,IAAIuB,EACAzD,EAAc,SAAqB9mI,GAAG,CACxC,IAAIwqI,GAAoBR,EAAS,QAC/BS,GAAgBD,GAAkB,SAClCE,GAAaF,GAAkB,MAC/BG,GAAgBH,GAAkB,SACpCv4G,GAAI,OAAOs4G,CAAS,EACpB,IAAIn9G,GAAOm8G,EAAa,QAAQ,sBAAqB,EACjDvrH,GAAQ6qH,GAAiBvC,EAAal5G,GAAK,MAAQA,GAAK,QAC5D,GAAIq9G,GAAe,CACjB,IAAIhnG,IAAU4iG,GAAUrmI,GAAGsmI,CAAU,EAAIoE,IAAc1sH,GACnD4sH,GAASD,GACT,CAACrB,GAAShD,EACZsE,IAAUnnG,GAEVmnG,IAAUnnG,GAEZ,IAAIonG,GAAuBR,GAAqB,QAC5CS,GAAuBR,GAAqB,QAC5CR,EAAMgB,GAAuBF,GAASE,GAAuB,EAC7DC,GAAe,KAAK,KAAKjB,EAAMe,EAAoB,EACvDE,GAAe,KAAK,IAAIA,GAAc,CAAC,EACvCA,GAAe,KAAK,IAAIA,GAAcF,EAAoB,EAC1DN,EAAYt4G,GAAI,UAAY,CAC1B28F,EAASmc,GAAczE,CAAU,CACnC,CAAC,CACH,CACF,EACI1gD,GAAY,UAAqB,CACnCqjD,EAAY,EAAK,EACjBN,EAAU,CACZ,EACA,cAAO,iBAAiB,YAAa7B,EAAa,CAChD,QAAS,EACjB,CAAO,EACD,OAAO,iBAAiB,YAAaA,EAAa,CAChD,QAAS,EACjB,CAAO,EACD,OAAO,iBAAiB,UAAWlhD,GAAW,CAC5C,QAAS,EACjB,CAAO,EACD,OAAO,iBAAiB,WAAYA,GAAW,CAC7C,QAAS,EACjB,CAAO,EACM,UAAY,CACjB,OAAO,oBAAoB,YAAakhD,CAAW,EACnD,OAAO,oBAAoB,YAAaA,CAAW,EACnD,OAAO,oBAAoB,UAAWlhD,EAAS,EAC/C,OAAO,oBAAoB,WAAYA,EAAS,EAChD3zD,GAAI,OAAOs4G,CAAS,CACtB,CACF,CACF,EAAG,CAACvB,CAAQ,CAAC,EACbntH,EAAM,UAAU,UAAY,CAC1B,OAAA8tH,EAAW,EACJ,UAAY,CACjB,aAAaD,EAAkB,OAAO,CACxC,CACF,EAAG,CAAClB,CAAY,CAAC,EAGjB3sH,EAAM,oBAAoBlH,EAAK,UAAY,CACzC,MAAO,CACL,YAAag1H,CACnB,CACE,CAAC,EAGD,IAAIqB,GAAqB,GAAG,OAAO/pF,EAAW,YAAY,EACtDgqF,GAAiB,CACnB,SAAU,WACV,WAAYt/E,EAAU,KAAO,QACjC,EACMu/E,GAAa,CACf,SAAU,WACV,aAAc,GACd,WAAY,0DACZ,OAAQ,UACR,WAAY,MAChB,EACE,OAAI5E,GACF,OAAO,OAAO2E,GAAgB,CAC5B,OAAQ,EACR,KAAM,EACN,MAAO,EACP,OAAQ,CACd,CAAK,EACD,OAAO,OAAOC,GAAYjoH,EAAgB,CACxC,OAAQ,OACR,MAAO2lH,CACb,EAAOU,EAAQ,OAAS,QAASthE,CAAG,CAAC,IAEjC,OAAO,OAAOijE,GAAgBhoH,EAAgB,CAC5C,MAAO,EACP,IAAK,EACL,OAAQ,CACd,EAAOqmH,EAAQ,QAAU,OAAQ,CAAC,CAAC,EAC/B,OAAO,OAAO4B,GAAY,CACxB,MAAO,OACP,OAAQtC,EACR,IAAK5gE,CACX,CAAK,GAEiBnsD,EAAM,cAAc,MAAO,CAC7C,IAAK0tH,EACL,UAAWloH,GAAW2pH,GAAoB/nH,EAAgBA,EAAgBA,EAAgB,CAAA,EAAI,GAAG,OAAO+nH,GAAoB,aAAa,EAAG1E,CAAU,EAAG,GAAG,OAAO0E,GAAoB,WAAW,EAAG,CAAC1E,CAAU,EAAG,GAAG,OAAO0E,GAAoB,UAAU,EAAGr/E,CAAO,CAAC,EACtQ,MAAO36B,EAAcA,EAAc,CAAA,EAAIi6G,EAAc,EAAG1zG,CAAK,EAC7D,YAAawyG,EACb,YAAaJ,CACjB,EAAkB9tH,EAAM,cAAc,MAAO,CACzC,IAAK2tH,EACL,UAAWnoH,GAAW,GAAG,OAAO2pH,GAAoB,QAAQ,EAAG/nH,EAAgB,CAAA,EAAI,GAAG,OAAO+nH,GAAoB,eAAe,EAAGhC,CAAQ,CAAC,EAC5I,MAAOh4G,EAAcA,EAAc,CAAA,EAAIk6G,EAAU,EAAGpC,CAAe,EACnE,YAAamB,CACjB,CAAG,CAAC,CACJ,CAAC,EACG,QAAQ,IAAI,WAAa,eAC3B1B,GAAU,YAAc,aClP1B,IAAI4C,GAAW,GACR,SAASC,IAAc,CAC5B,IAAIvC,EAAgB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,EACpFJ,EAAc,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,EAClFpxF,EAAWwxF,EAAgBJ,EAAcI,EAC7C,OAAI,MAAMxxF,CAAQ,IAChBA,EAAW,GAEbA,EAAW,KAAK,IAAIA,EAAU8zF,EAAQ,EAC/B,KAAK,MAAM9zF,CAAQ,CAC5B,CCJA,IAAImQ,GAAY,CAAC,YAAa,YAAa,SAAU,aAAc,aAAc,QAAS,OAAQ,WAAY,UAAW,UAAW,YAAa,cAAe,YAAa,WAAY,kBAAmB,kBAAmB,aAAc,cAAe,SAAU,eAAe,EAoBjR6jF,GAAa,CAAA,EACbC,GAAc,CAChB,UAAW,OACX,eAAgB,MAClB,EACO,SAASC,GAAQr2H,EAAOP,EAAK,CAClC,IAAIs9D,EAAmB/8D,EAAM,UAC3B+rC,EAAYgxB,IAAqB,OAAS,kBAAoBA,EAC9DhX,EAAY/lD,EAAM,UAClBwX,EAASxX,EAAM,OACfmuH,EAAanuH,EAAM,WACnBs2H,EAAoBt2H,EAAM,WAC1Bu2H,EAAaD,IAAsB,OAAS,GAAOA,EACnDj0G,EAAQriB,EAAM,MACd3U,EAAO2U,EAAM,KACb+M,EAAW/M,EAAM,SACjBm/F,EAAUn/F,EAAM,QAChB0/C,EAAU1/C,EAAM,QAChB+kC,EAAY/kC,EAAM,UAClBitE,EAAcjtE,EAAM,YACpBq/F,EAAmBr/F,EAAM,UACzBw9C,EAAY6hD,IAAqB,OAAS,MAAQA,EAClDqa,EAAW15G,EAAM,SACjBw2H,EAAkBx2H,EAAM,gBACxB0hG,EAAkB1hG,EAAM,gBACxBmqH,EAAanqH,EAAM,WACnBy2H,EAAcz2H,EAAM,YACpB2W,EAAS3W,EAAM,OACf02H,EAAuB12H,EAAM,cAC7B6zH,EAAgB6C,IAAyB,OAAS,WAAaA,EAC/Dn5E,EAAY38B,GAAyB5gB,EAAOsyC,EAAS,EAGnD0xD,EAASr9F,EAAM,YAAY,SAAUmd,GAAM,CAC7C,OAAI,OAAOq7E,GAAY,WACdA,EAAQr7E,EAAI,EAEdA,IAAS,KAA0B,OAASA,GAAKq7E,CAAO,CACjE,EAAG,CAACA,CAAO,CAAC,EAGRw3B,EAAc3H,GAAWhrB,CAAkB,EAC7C4yB,EAAe94G,GAAe64G,EAAa,CAAC,EAC5CxG,EAAiByG,EAAa,CAAC,EAC/BnH,EAAgBmH,EAAa,CAAC,EAC9B1I,EAAU0I,EAAa,CAAC,EACxBC,EAAoBD,EAAa,CAAC,EAGhCE,EAAa,CAAC,EAAEp3E,IAAY,IAASloC,GAAU22G,GAC/C4I,EAAkBpwH,EAAM,QAAQ,UAAY,CAC9C,OAAO,OAAO,OAAOunH,EAAQ,IAAI,EAAE,OAAO,SAAUl4C,GAAOghD,GAAM,CAC/D,OAAOhhD,GAAQghD,EACjB,EAAG,CAAC,CACN,EAAG,CAAC9I,EAAQ,GAAIA,EAAQ,IAAI,CAAC,EACzBrB,EAAYiK,GAAczrI,IAAS,KAAK,IAAI8iI,EAAa9iI,EAAK,OAAQ0rI,CAAe,EAAIv/G,GAAU,CAAC,CAACy1D,GACrGgqD,EAAQlyF,IAAc,MACtB6kF,EAAkBz9G,GAAW4/B,EAAWh+B,EAAgB,CAAA,EAAI,GAAG,OAAOg+B,EAAW,MAAM,EAAGkrF,CAAK,EAAGlxE,CAAS,EAC3Gg+C,EAAa14G,GAAQ8qI,GACrB7E,EAAe5xH,EAAAA,OAAM,EACrBw3H,EAAiBx3H,EAAAA,OAAM,EACvB+0D,GAAe/0D,EAAAA,OAAM,EAIrB0oC,GAAYrnC,EAAAA,SAAS,CAAC,EACxBsnC,GAAavqB,GAAesqB,GAAW,CAAC,EACxC+uF,GAAY9uF,GAAW,CAAC,EACxB+uF,GAAe/uF,GAAW,CAAC,EACzBM,EAAa5nC,EAAAA,SAAS,CAAC,EACzB6nC,EAAa9qB,GAAe6qB,EAAY,CAAC,EACzC0uF,GAAazuF,EAAW,CAAC,EACzB0uF,EAAgB1uF,EAAW,CAAC,EAC1B06D,GAAaviG,EAAAA,SAAS,EAAK,EAC7BwiG,GAAazlF,GAAewlF,GAAY,CAAC,EACzCi0B,GAAeh0B,GAAW,CAAC,EAC3Bi0B,GAAkBj0B,GAAW,CAAC,EAC5Bk0B,GAAuB,UAAgC,CACzDD,GAAgB,EAAI,CACtB,EACIE,GAAsB,UAA+B,CACvDF,GAAgB,EAAK,CACvB,EACIlqF,GAAe,CACjB,OAAQ02D,CACZ,EAGE,SAASmuB,GAAcuD,GAAQ,CAC7B0B,GAAa,SAAUhrD,GAAQ,CAC7B,IAAI7gF,GACA,OAAOmqI,IAAW,WACpBnqI,GAAQmqI,GAAOtpD,EAAM,EAErB7gF,GAAQmqI,GAEV,IAAIiC,GAAaC,GAAYrsI,EAAK,EAClC,OAAA+lI,EAAa,QAAQ,UAAYqG,GAC1BA,EACT,CAAC,CACH,CAIA,IAAIE,GAAWn4H,EAAAA,OAAO,CACpB,MAAO,EACP,IAAKqkG,EAAW,MACpB,CAAG,EACG+zB,GAAcp4H,EAAAA,OAAM,EACpBq4H,GAAerM,GAAY3nB,EAAYC,CAAM,EAC/Cg0B,EAAgBl6G,GAAei6G,GAAc,CAAC,EAC9CjM,GAAWkM,EAAc,CAAC,EAC5BF,GAAY,QAAUhM,GAGtB,IAAIsC,GAAiBznH,EAAM,QAAQ,UAAY,CAC3C,GAAI,CAACmwH,EACH,MAAO,CACL,aAAc,OACd,MAAO,EACP,IAAK/yB,EAAW,OAAS,EACzB,OAAQ,MAClB,EAIM,GAAI,CAAC8oB,EAAW,CACd,IAAIoL,GACJ,MAAO,CACL,eAAgBA,GAAwBf,EAAe,WAAa,MAAQe,KAA0B,OAAS,OAASA,GAAsB,eAAiB,EAC/J,MAAO,EACP,IAAKl0B,EAAW,OAAS,EACzB,OAAQ,MAClB,CACM,CAMA,QALI+uB,GAAU,EACVpI,GACAwN,GACAvN,GACAgE,GAAU5qB,EAAW,OAChB52G,GAAI,EAAGA,GAAIwhI,GAASxhI,IAAK,EAAG,CACnC,IAAIgrI,GAAQp0B,EAAW52G,EAAC,EACpB/C,GAAM45G,EAAOm0B,EAAK,EAClBtJ,GAAcX,EAAQ,IAAI9jI,EAAG,EAC7BguI,GAAoBtF,IAAWjE,KAAgB,OAAYV,EAAaU,IAGxEuJ,IAAqBjB,IAAazM,KAAe,SACnDA,GAAav9H,GACb+qI,GAAcpF,IAIZsF,GAAoBjB,GAAY3/G,GAAUmzG,KAAa,SACzDA,GAAWx9H,IAEb2lI,GAAUsF,EACZ,CAGA,OAAI1N,KAAe,SACjBA,GAAa,EACbwN,GAAc,EACdvN,GAAW,KAAK,KAAKnzG,EAAS22G,CAAU,GAEtCxD,KAAa,SACfA,GAAW5mB,EAAW,OAAS,GAIjC4mB,GAAW,KAAK,IAAIA,GAAW,EAAG5mB,EAAW,OAAS,CAAC,EAChD,CACL,aAAc+uB,GACd,MAAOpI,GACP,IAAKC,GACL,OAAQuN,EAChB,CACI,EAAG,CAACrL,EAAWiK,EAAYK,GAAWpzB,EAAY8yB,EAAmBr/G,CAAM,CAAC,EAC5E01D,GAAekhD,GAAe,aAC9BiK,GAAQjK,GAAe,MACvB1hG,GAAM0hG,GAAe,IACrBkK,GAAelK,GAAe,OAChCyJ,GAAS,QAAQ,MAAQQ,GACzBR,GAAS,QAAQ,IAAMnrG,GAKvB/lB,EAAM,gBAAgB,UAAY,CAChC,IAAI4xH,GAAgBrK,EAAQ,UAAS,EACrC,GAAIqK,GAAc,OAAS,EAAG,CAC5B,IAAIC,GAAY,MAAM,KAAKD,GAAc,KAAI,CAAE,EAAE,CAAC,EAC9CE,GAAkBF,GAAc,IAAIC,EAAS,EAG7CE,GAAY30B,EAAWs0B,EAAK,EAChC,GAAIK,IAAaD,KAAoB,OAAW,CAC9C,IAAIE,GAAgB30B,EAAO00B,EAAS,EACpC,GAAIC,KAAkBH,GAAW,CAC/B,IAAII,GAAkB1K,EAAQ,IAAIsK,EAAS,EACvCK,GAAaD,GAAkBzK,EACnCgE,GAAc,SAAU1Y,GAAK,CAC3B,OAAOA,GAAMof,EACf,CAAC,CACH,CACF,CACF,CACA3K,EAAQ,YAAW,CACrB,EAAG,CAAChhD,EAAY,CAAC,EAGjB,IAAIxlC,GAAkB/gC,EAAM,SAAS,CACjC,MAAO,EACP,OAAQ6Q,CACd,CAAK,EACDmwB,GAAmB7pB,GAAe4pB,GAAiB,CAAC,EACpDtzB,GAAOuzB,GAAiB,CAAC,EACzBmxF,GAAUnxF,GAAiB,CAAC,EAC1BoxF,GAAiB,SAAwBl9G,GAAU,CACrDi9G,GAAQ,CACN,MAAOj9G,GAAS,YAChB,OAAQA,GAAS,YACvB,CAAK,CACH,EAGIm9G,GAAuBt5H,EAAAA,OAAM,EAC7Bu5H,GAAyBv5H,EAAAA,OAAM,EAC/Bw5H,GAA8BvyH,EAAM,QAAQ,UAAY,CAC1D,OAAOuvH,GAAY9hH,GAAK,MAAO64D,CAAW,CAC5C,EAAG,CAAC74D,GAAK,MAAO64D,CAAW,CAAC,EACxBksD,GAA4BxyH,EAAM,QAAQ,UAAY,CACxD,OAAOuvH,GAAY9hH,GAAK,OAAQ84D,EAAY,CAC9C,EAAG,CAAC94D,GAAK,OAAQ84D,EAAY,CAAC,EAG1BksD,GAAkBlsD,GAAe11D,EACjC6hH,GAAqB35H,EAAAA,OAAO05H,EAAe,EAC/CC,GAAmB,QAAUD,GAC7B,SAASxB,GAAY/B,GAAc,CACjC,IAAIH,GAASG,GACb,OAAK,OAAO,MAAMwD,GAAmB,OAAO,IAC1C3D,GAAS,KAAK,IAAIA,GAAQ2D,GAAmB,OAAO,GAEtD3D,GAAS,KAAK,IAAIA,GAAQ,CAAC,EACpBA,EACT,CACA,IAAIxJ,GAAgBiL,IAAa,EAC7BhL,GAAmBgL,IAAaiC,GAChChN,GAAiBiL,IAAc,EAC/BhL,GAAkBgL,IAAcpqD,EAChC0/C,GAAeV,GAAgBC,GAAeC,GAAkBC,GAAgBC,EAAe,EAG/FiN,GAAuB,UAAgC,CACzD,MAAO,CACL,EAAGrC,EAAQ,CAACI,GAAaA,GACzB,EAAGF,EACT,CACE,EACIoC,GAA2B75H,SAAO45H,IAAsB,EACxDE,GAAgBpyF,GAAS,SAAUvkC,GAAQ,CAC7C,GAAI2zH,EAAiB,CACnB,IAAIiD,GAAW39G,EAAcA,EAAc,CAAA,EAAIw9G,GAAoB,CAAE,EAAGz2H,EAAM,GAG1E02H,GAAyB,QAAQ,IAAME,GAAS,GAAKF,GAAyB,QAAQ,IAAME,GAAS,KACvGjD,EAAgBiD,EAAQ,EACxBF,GAAyB,QAAUE,GAEvC,CACF,CAAC,EACD,SAASC,GAAYC,GAAiBvI,GAAY,CAChD,IAAIwI,GAAYD,GACZvI,IACFyI,GAAAA,UAAU,UAAY,CACpBvC,EAAcsC,EAAS,CACzB,CAAC,EACDJ,GAAa,GAEbrH,GAAcyH,EAAS,CAE3B,CAGA,SAASE,GAAiBhvI,GAAG,CAC3B,IAAI+qI,GAAe/qI,GAAE,cAAc,UAC/B+qI,KAAiBsB,IACnBhF,GAAc0D,EAAY,EAI5Bnc,GAAa,MAA+BA,EAAS5uH,EAAC,EACtD0uI,GAAa,CACf,CACA,IAAIO,GAAwB,SAA+BC,GAAgB,CACzE,IAAIC,GAAgBD,GAChB1+F,GAAQ2xC,EAAcA,EAAc74D,GAAK,MAAQ,EACrD,OAAA6lH,GAAgB,KAAK,IAAIA,GAAe,CAAC,EACzCA,GAAgB,KAAK,IAAIA,GAAe3+F,EAAG,EACpC2+F,EACT,EACIlN,GAAe3lF,GAAS,SAAU8yF,GAAUC,GAAgB,CAC1DA,IACFN,GAAAA,UAAU,UAAY,CACpBvC,EAAc,SAAU30G,GAAM,CAC5B,IAAIq3G,GAAiBr3G,IAAQs0G,EAAQ,CAACiD,GAAWA,IACjD,OAAOH,GAAsBC,EAAc,CAC7C,CAAC,CACH,CAAC,EACDR,GAAa,GAEbrH,GAAc,SAAUr/D,GAAK,CAC3B,IAAI4iE,GAAS5iE,GAAMonE,GACnB,OAAOxE,EACT,CAAC,CAEL,CAAC,EAGG0E,GAAiBxN,GAAckK,EAAY5K,GAAeC,GAAkBC,GAAgBC,GAAiB,CAAC,CAACp/C,EAAa8/C,EAAY,EAC1IsN,GAAkBv8G,GAAes8G,GAAgB,CAAC,EAClDE,GAAaD,GAAgB,CAAC,EAC9BrM,GAAkBqM,GAAgB,CAAC,EAGrChK,GAAmByG,EAAYxF,EAAc,SAAU7E,GAAcvwF,GAAOwwF,GAAc5hI,GAAG,CAC3F,IAAI2D,GAAQ3D,GACZ,OAAI6hI,GAAaF,GAAcvwF,GAAOwwF,EAAY,EACzC,GAIL,CAACj+H,IAAS,CAACA,GAAM,iBACfA,KACFA,GAAM,gBAAkB,IAE1B6rI,GAAW,CACT,eAAgB,UAA0B,CAAC,EAC3C,OAAQ7N,GAAevwF,GAAQ,EAC/B,OAAQuwF,GAAe,EAAIvwF,EACnC,CAAO,EACM,IAEF,EACT,CAAC,EAGDm1F,GAAcxE,EAAWyE,EAAc,SAAU/iG,GAAQ,CACvD4jG,GAAc,SAAUr/D,GAAK,CAC3B,OAAOA,GAAMvkC,EACf,CAAC,CACH,CAAC,EACDlI,GAAgB,UAAY,CAE1B,SAASk0G,GAAsBzvI,GAAG,CAEhC,IAAI0vI,GAAmBtO,IAAiBphI,GAAE,OAAS,EAC/C2vI,GAAwBtO,IAAoBrhI,GAAE,OAAS,EACvDgsI,GAAc,CAAC0D,IAAoB,CAACC,IACtC3vI,GAAE,eAAc,CAEpB,CACA,IAAI4vI,GAAepJ,EAAa,QAChC,OAAAoJ,GAAa,iBAAiB,QAASJ,GAAY,CACjD,QAAS,EACf,CAAK,EACDI,GAAa,iBAAiB,iBAAkB1M,GAAiB,CAC/D,QAAS,EACf,CAAK,EACD0M,GAAa,iBAAiB,sBAAuBH,GAAuB,CAC1E,QAAS,EACf,CAAK,EACM,UAAY,CACjBG,GAAa,oBAAoB,QAASJ,EAAU,EACpDI,GAAa,oBAAoB,iBAAkB1M,EAAe,EAClE0M,GAAa,oBAAoB,sBAAuBH,EAAqB,CAC/E,CACF,EAAG,CAACzD,EAAY5K,GAAeC,EAAgB,CAAC,EAGhD9lG,GAAgB,UAAY,CAC1B,GAAI4mD,EAAa,CACf,IAAI0tD,GAAgBZ,GAAsB1C,EAAU,EACpDC,EAAcqD,EAAa,EAC3BnB,GAAc,CACZ,EAAGmB,EACX,CAAO,CACH,CACF,EAAG,CAACvmH,GAAK,MAAO64D,CAAW,CAAC,EAG5B,IAAI2tD,GAAqB,UAA8B,CACrD,IAAIC,GAAuBC,IAC1BD,GAAwB7B,GAAqB,WAAa,MAAQ6B,KAA0B,QAAUA,GAAsB,YAAW,GACvIC,GAAwB7B,GAAuB,WAAa,MAAQ6B,KAA0B,QAAUA,GAAsB,YAAW,CAC5I,EACIC,GAAY7I,GAAYZ,EAAcvtB,EAAYmqB,EAASC,EAAYnqB,EAAQ,UAAY,CAC7F,OAAOyrB,EAAc,EAAI,CAC3B,EAAG0C,GAAeyI,EAAkB,EACpCj0H,EAAM,oBAAoBlH,EAAK,UAAY,CACzC,MAAO,CACL,cAAeg1D,GAAa,QAC5B,cAAe6kE,GACf,SAAU,SAAkBpyH,GAAQ,CAClC,SAAS8zH,GAAYx0H,GAAK,CACxB,OAAOA,IAAOiG,GAAQjG,EAAG,IAAM,WAAa,SAAUA,IAAO,QAASA,GACxE,CACIw0H,GAAY9zH,EAAM,GAEhBA,GAAO,OAAS,QAClBowH,EAAcyC,GAAsB7yH,GAAO,IAAI,CAAC,EAIlD6zH,GAAU7zH,GAAO,GAAG,GAEpB6zH,GAAU7zH,EAAM,CAEpB,CACN,CACE,CAAC,EAIDmf,GAAgB,UAAY,CAC1B,GAAIq7E,EAAiB,CACnB,IAAIu5B,GAAal3B,EAAW,MAAMs0B,GAAO3rG,GAAM,CAAC,EAChDg1E,EAAgBu5B,GAAYl3B,CAAU,CACxC,CACF,EAAG,CAACs0B,GAAO3rG,GAAKq3E,CAAU,CAAC,EAG3B,IAAIyqB,GAAUP,GAAWlqB,EAAYC,EAAQkqB,EAASC,CAAU,EAC5D+M,GAAezE,GAAgB,KAAiC,OAASA,EAAY,CACvF,MAAO4B,GACP,IAAK3rG,GACL,QAASmgG,EACT,QAASwK,GACT,QAASiB,GACT,IAAKrB,EACL,QAASzI,EACb,CAAG,EAGG2M,GAAe1Q,GAAY1mB,EAAYs0B,GAAO3rG,GAAKugD,EAAaoqD,GAAYlH,EAAgBpjH,EAAUugC,EAAY,EAClH8tF,GAAiB,KACjB5jH,IACF4jH,GAAiBt/G,EAAc/N,EAAgB,GAAIwoH,EAAa,SAAW,YAAa/+G,CAAM,EAAG4+G,EAAW,EACxGU,IACFsE,GAAe,UAAY,SACvBnuD,IACFmuD,GAAe,UAAY,UAEzB7D,KACF6D,GAAe,cAAgB,UAIrC,IAAIC,GAAiB,CAAA,EACrB,OAAIpE,IACFoE,GAAe,IAAM,OAEH10H,EAAM,cAAc,MAAO6F,GAAS,CACtD,IAAKioD,GACL,MAAO34C,EAAcA,EAAc,CAAA,EAAIuG,CAAK,EAAG,CAAA,EAAI,CACjD,SAAU,UAChB,CAAK,EACD,UAAWunG,CACf,EAAKyR,GAAgB99E,CAAS,EAAgB52C,EAAM,cAAckS,GAAgB,CAC9E,SAAUkgH,EACd,EAAkBpyH,EAAM,cAAc62C,EAAW,CAC7C,UAAW,GAAG,OAAOzR,EAAW,SAAS,EACzC,MAAOqvF,GACP,IAAK9J,EACL,SAAUwI,GACV,aAAcc,EAClB,EAAkBj0H,EAAM,cAAcsjH,GAAQ,CAC1C,UAAWl+E,EACX,OAAQmhC,GACR,QAASmqD,GACT,QAASiB,GACT,YAAarrD,EACb,cAAewiD,EACf,IAAKyH,EACL,WAAY/M,EACZ,IAAK8M,EACL,MAAOiE,EACX,EAAKC,EAAY,CAAC,CAAC,EAAGtO,GAAa3/C,GAAe11D,GAAuB7Q,EAAM,cAAc0sH,GAAW,CACpG,IAAK2F,GACL,UAAWjtF,EACX,aAAcorF,GACd,YAAajqD,GACb,IAAK+pD,EACL,SAAUyC,GACV,YAAajC,GACb,WAAYC,GACZ,SAAUyB,GACV,cAAe/kH,GAAK,OACpB,MAAOuC,GAAW,KAA4B,OAASA,EAAO,kBAC9D,WAAYA,GAAW,KAA4B,OAASA,EAAO,uBACnE,cAAek9G,CACnB,CAAG,EAAGhH,GAAa5/C,EAAc74D,GAAK,OAAsBzN,EAAM,cAAc0sH,GAAW,CACvF,IAAK4F,GACL,UAAWltF,EACX,aAAcsrF,GACd,YAAapqD,EACb,IAAKgqD,EACL,SAAUyC,GACV,YAAajC,GACb,WAAYC,GACZ,SAAUwB,GACV,cAAe9kH,GAAK,MACpB,WAAY,GACZ,MAAOuC,GAAW,KAA4B,OAASA,EAAO,oBAC9D,WAAYA,GAAW,KAA4B,OAASA,EAAO,yBACnE,cAAek9G,CACnB,CAAG,CAAC,CACJ,CACA,IAAIvvC,GAAoB39E,EAAM,WAAW0vH,EAAO,EAChD/xC,GAAK,YAAc,OCjiBZ,SAASg3C,IAAgB,CAC9B,MAAO,uBAAuB,KAAK,UAAU,UAAU,CACzD,CCEA,IAAIhpF,GAAY,CAAC,WAAY,QAAS,WAAY,QAAS,WAAW,EAiBtE,SAAS+zD,GAAYj2E,EAAS,CAC5B,OAAO,OAAOA,GAAY,UAAY,OAAOA,GAAY,QAC3D,CAMA,IAAIg1F,GAAa,SAAoBhqF,EAAG37B,EAAK,CAC3C,IAAI87H,EAAgB79B,GAAY,EAC9B3xD,EAAYwvF,EAAc,UAC1B/vH,EAAK+vH,EAAc,GACnBxtD,EAAOwtD,EAAc,KACrB7V,EAAW6V,EAAc,SACzBj+B,EAAOi+B,EAAc,KACrB70B,EAAc60B,EAAc,YAC5BC,EAAaD,EAAc,WAC3B7W,EAAkB6W,EAAc,gBAChCE,EAAgBF,EAAc,cAC5BvzG,EAAoBrhB,EAAM,WAAWo9G,EAAa,EACpDziB,EAAWt5E,EAAkB,SAC7Bi7F,EAAiBj7F,EAAkB,eACnC0zG,EAAgB1zG,EAAkB,cAClC2zG,EAA2B3zG,EAAkB,yBAC7C4zG,EAAW5zG,EAAkB,SAC7B6zG,EAAuB7zG,EAAkB,qBACzCq/F,EAAYr/F,EAAkB,UAC9B66F,EAAa76F,EAAkB,WAC/B03B,EAAU13B,EAAkB,QAC5B+c,EAAY/c,EAAkB,UAC9B8zG,EAAa9zG,EAAkB,WAC/B+zG,EAAiB/zG,EAAkB,eACnCg0G,EAAeh0G,EAAkB,aAC/B07E,EAAgB,GAAG,OAAO33D,EAAW,OAAO,EAC5CkwF,EAAqB5pH,GAAQ,UAAY,CAC3C,OAAO4wG,CACT,EAAG,CAACl1C,EAAMk1C,CAAc,EAAG,SAAUvlH,EAAMtQ,EAAM,CAC/C,OAAOA,EAAK,CAAC,GAAKsQ,EAAK,CAAC,IAAMtQ,EAAK,CAAC,CACtC,CAAC,EAGG44H,EAAUr/G,EAAM,OAAO,IAAI,EAC3Bu1H,EAAev1H,EAAM,QAAQ,UAAY,CAC3C,OAAO++G,GAAY/C,GAAarhB,CAAQ,IAAM+lB,GAAc,KAA+B,OAASA,EAAU,OAAS/lB,CACzH,EAAG,CAACokB,EAAUpkB,EAAU+lB,GAAc,KAA+B,OAASA,EAAU,IAAI,CAAC,EACzF8U,EAAkB,SAAyB1tI,EAAO,CACpDA,EAAM,eAAc,CACtB,EACI2tI,EAAiB,SAAwB1uI,EAAM,CACjD,IAAI+4H,IACHA,GAAmBT,EAAQ,WAAa,MAAQS,KAAqB,QAAUA,GAAiB,SAAS,OAAO/4H,GAAS,SAAW,CACnI,MAAOA,CACb,EAAQA,CAAI,CACV,EAGI2uI,EAAa11H,EAAM,YAAY,SAAUpb,EAAO,CAClD,OAAI+xG,IAAS,WACJ,GAEF+pB,EAAU,IAAI97H,CAAK,CAC5B,EAAG,CAAC+xG,EAAM5gF,GAAmB2qG,CAAS,EAAE,SAAQ,EAAIA,EAAU,IAAI,CAAC,EAG/DiV,EAAwB,SAA+BvtI,EAAO,CAGhE,QAFIw/B,GAAS,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,EAC7EpQ,EAAM89G,EAAmB,OACpB9uI,GAAI,EAAGA,GAAIgxB,EAAKhxB,IAAK,EAAG,CAC/B,IAAID,IAAW6B,EAAQ5B,GAAIohC,GAASpQ,GAAOA,EACvC9b,GAAO45H,EAAmB/uI,EAAO,GAAK,CAAA,EACxCqvI,GAAQl6H,GAAK,MACbhX,GAAOgX,GAAK,KACd,GAAI,CAACk6H,IAAS,EAAElxI,IAAS,MAA2BA,GAAK,YAAcgxI,EAAWhxI,GAAK,KAAK,GAAK,CAAC6wI,GAChG,OAAOhvI,EAEX,CACA,MAAO,EACT,EACIw6C,EAAkB/gC,EAAM,SAAS,UAAY,CAC7C,OAAO21H,EAAsB,CAAC,CAChC,CAAC,EACD30F,EAAmB7pB,GAAe4pB,EAAiB,CAAC,EACpD80F,EAAc70F,EAAiB,CAAC,EAChC80F,EAAiB90F,EAAiB,CAAC,EACjC+0F,EAAY,SAAmB3tI,EAAO,CACxC,IAAI4tI,GAAe,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACvFF,EAAe1tI,CAAK,EACpB,IAAIygC,EAAO,CACT,OAAQmtG,GAAe,WAAa,OAC1C,EAGQC,GAAcX,EAAmBltI,CAAK,EAC1C,GAAI,CAAC6tI,GAAa,CAChBlB,EAAc,KAAM,GAAIlsG,CAAI,EAC5B,MACF,CACAksG,EAAckB,GAAY,MAAO7tI,EAAOygC,CAAI,CAC9C,EAGA7vB,EAAAA,UAAU,UAAY,CACpB+8H,EAAUf,IAA6B,GAAQW,EAAsB,CAAC,EAAI,EAAE,CAC9E,EAAG,CAACL,EAAmB,OAAQv1B,CAAW,CAAC,EAG3C,IAAIm2B,EAAiBl2H,EAAM,YAAY,SAAUpb,EAAO,CACtD,OAAI+xG,IAAS,WACJ,OAAO/xG,CAAK,EAAE,YAAW,IAAOm7G,EAAY,YAAW,EAEzD2gB,EAAU,IAAI97H,CAAK,CAC5B,EAAG,CAAC+xG,EAAMoJ,EAAahqF,GAAmB2qG,CAAS,EAAE,SAAQ,EAAIA,EAAU,IAAI,CAAC,EAGhF1nH,EAAAA,UAAU,UAAY,CAMpB,IAAI2qE,EAAY,WAAW,UAAY,CACrC,GAAI,CAACo7C,GAAY33C,GAAQs5C,EAAU,OAAS,EAAG,CAC7C,IAAI97H,GAAQ,MAAM,KAAK87H,CAAS,EAAE,CAAC,EAE/Bt4H,EAAQktI,EAAmB,UAAU,SAAU15H,GAAO,CACxD,IAAIlX,GAAOkX,GAAM,KACjB,OAAOmkG,EAAc,OAAOr7G,GAAK,KAAK,EAAE,WAAWq7G,CAAW,EAAIr7G,GAAK,QAAUE,EACnF,CAAC,EACGwD,IAAU,KACZ2tI,EAAU3tI,CAAK,EACfqtI,EAAertI,CAAK,EAExB,CACF,CAAC,EAGD,GAAIg/E,EAAM,CACR,IAAIu6C,GACHA,EAAoBtC,EAAQ,WAAa,MAAQsC,IAAsB,QAAUA,EAAkB,SAAS,MAAS,CACxH,CACA,OAAO,UAAY,CACjB,OAAO,aAAah+C,CAAS,CAC/B,CACF,EAAG,CAACyD,EAAM24B,CAAW,CAAC,EAGtB,IAAIo2B,EAAgB,SAAuBvxI,EAAO,CAC5CA,IAAU,QACZqwI,EAASrwI,EAAO,CACd,SAAU,CAAC87H,EAAU,IAAI97H,CAAK,CACtC,CAAO,EAIEm6H,GACH8V,EAAW,EAAK,CAEpB,EAuEA,GApEA70H,EAAM,oBAAoBlH,EAAK,UAAY,CACzC,MAAO,CACL,UAAW,SAAmBhR,EAAO,CACnC,IAAI27G,GAAQ37G,EAAM,MAChBsuI,EAAUtuI,EAAM,QAClB,OAAQ27G,GAAK,CAEX,KAAKv9C,GAAQ,EACb,KAAKA,GAAQ,EACb,KAAKA,GAAQ,GACb,KAAKA,GAAQ,KACX,CACE,IAAIt+B,GAAS,EAYb,GAXI67E,KAAUv9C,GAAQ,GACpBt+B,GAAS,GACA67E,KAAUv9C,GAAQ,KAC3Bt+B,GAAS,EACA+sG,GAAa,GAAMyB,IACxB3yB,KAAUv9C,GAAQ,EACpBt+B,GAAS,EACA67E,KAAUv9C,GAAQ,IAC3Bt+B,GAAS,KAGTA,KAAW,EAAG,CAChB,IAAIyuG,GAAkBV,EAAsBE,EAAcjuG,GAAQA,EAAM,EACxE6tG,EAAeY,EAAe,EAC9BN,EAAUM,GAAiB,EAAI,CACjC,CACA,KACF,CAGF,KAAKnwE,GAAQ,IACb,KAAKA,GAAQ,MACX,CACE,IAAIowE,GAEAn5G,GAAOm4G,EAAmBO,CAAW,EACrC14G,IAAQ,EAAEA,IAAS,OAA4Bm5G,GAAan5G,GAAK,QAAU,MAAQm5G,KAAe,QAAUA,GAAW,WAAa,CAACf,EACvIY,EAAch5G,GAAK,KAAK,EAExBg5G,EAAc,MAAS,EAErB/uD,GACFt/E,EAAM,eAAc,EAEtB,KACF,CAGF,KAAKo+D,GAAQ,IAET2uE,EAAW,EAAK,EACZztD,GACFt/E,EAAM,gBAAe,CAGrC,CACM,EACA,QAAS,UAAmB,CAAC,EAC7B,SAAU,SAAkBM,EAAO,CACjCqtI,EAAertI,CAAK,CACtB,CACN,CACE,CAAC,EAGGktI,EAAmB,SAAW,EAChC,OAAoBt1H,EAAM,cAAc,MAAO,CAC7C,KAAM,UACN,GAAI,GAAG,OAAO6E,EAAI,OAAO,EACzB,UAAW,GAAG,OAAOk4F,EAAe,QAAQ,EAC5C,YAAay4B,CACnB,EAAOzX,CAAe,EAEpB,IAAIwY,GAAoB,OAAO,KAAKra,CAAU,EAAE,IAAI,SAAUz4H,EAAK,CACjE,OAAOy4H,EAAWz4H,CAAG,CACvB,CAAC,EACG+yI,GAAW,SAAkBr5G,EAAM,CACrC,OAAOA,EAAK,KACd,EACA,SAASs5G,GAAiBt5G,EAAM/0B,EAAO,CACrC,IAAIwtI,GAAQz4G,EAAK,MACjB,MAAO,CACL,KAAMy4G,GAAQ,eAAiB,SAC/B,GAAI,GAAG,OAAO/wH,EAAI,QAAQ,EAAE,OAAOzc,CAAK,CAC9C,CACE,CACA,IAAIgwG,GAAa,SAAoBhwG,EAAO,CAC1C,IAAI+0B,GAAOm4G,EAAmBltI,CAAK,EACnC,GAAI,CAAC+0B,GACH,OAAO,KAET,IAAIu5G,EAAWv5G,GAAK,MAAQ,CAAA,EACxBv4B,GAAQ8xI,EAAS,MACjBd,GAAQz4G,GAAK,MACbuB,GAAQ0iC,GAAUs1E,EAAU,EAAI,EAChCra,GAAcma,GAASr5G,EAAI,EAC/B,OAAOA,GAAoBnd,EAAM,cAAc,MAAO6F,GAAS,CAC7D,aAAc,OAAOw2G,IAAgB,UAAY,CAACuZ,GAAQvZ,GAAc,IAC9E,EAAO39F,GAAO,CACR,IAAKt2B,CACX,EAAOquI,GAAiBt5G,GAAM/0B,CAAK,EAAG,CAChC,gBAAiB8tI,EAAetxI,EAAK,CAC3C,CAAK,EAAGA,EAAK,EAAI,IACf,EACI+xI,GAAY,CACd,KAAM,UACN,GAAI,GAAG,OAAO9xH,EAAI,OAAO,CAC7B,EACE,OAAoB7E,EAAM,cAAcA,EAAM,SAAU,KAAM+4C,GAAwB/4C,EAAM,cAAc,MAAO6F,GAAS,CAAA,EAAI8wH,GAAW,CACvI,MAAO,CACL,OAAQ,EACR,MAAO,EACP,SAAU,QAChB,CACA,CAAG,EAAGv+B,GAAWy9B,EAAc,CAAC,EAAGz9B,GAAWy9B,CAAW,EAAGz9B,GAAWy9B,EAAc,CAAC,CAAC,EAAgB71H,EAAM,cAAc29E,GAAM,CAC7H,QAAS,MACT,IAAK0hC,EACL,KAAMiW,EACN,OAAQH,EACR,WAAYC,EACZ,WAAY,GACZ,YAAaI,EACb,SAAUV,EACV,QAAS/7E,EACT,UAAW3a,EACX,WAAY2a,EAAU,KAAO49E,EACjC,EAAK,SAAUx5G,EAAMy5G,EAAW,CAC5B,IAAIhB,GAAQz4G,EAAK,MACf05G,EAAc15G,EAAK,YACnBz4B,GAAOy4B,EAAK,KACZ8kF,GAAQ9kF,EAAK,MACbv4B,GAAQu4B,EAAK,MACX15B,GAAMiB,GAAK,IAGf,GAAIkxI,GAAO,CACT,IAAIkB,GACAC,IAAcD,GAAcpyI,GAAK,SAAW,MAAQoyI,KAAgB,OAASA,GAAcp3B,GAAYuC,EAAK,EAAIA,GAAM,SAAQ,EAAK,OACvI,OAAoBjiG,EAAM,cAAc,MAAO,CAC7C,UAAWwF,GAAWu3F,EAAe,GAAG,OAAOA,EAAe,QAAQ,EAAGr4G,GAAK,SAAS,EACvF,MAAOqyI,EACf,EAAS90B,KAAU,OAAYA,GAAQx+G,EAAG,CACtC,CACG,IAACowB,GAAWnvB,GAAK,SAClB6kF,GAAQ7kF,GAAK,MACFA,GAAK,SACtB,IAAMg3B,GAAQh3B,GAAK,MACb06D,GAAY16D,GAAK,UACjBogE,GAAa7qC,GAAyBv1B,GAAMinD,EAAS,EACnD+uE,EAAc7vD,GAAK/F,GAAYyxE,EAAiB,EAGhDS,GAAWtB,EAAW9wI,EAAK,EAC3B08E,GAAiBztD,IAAY,CAACmjH,IAAYzB,EAC1C0B,GAAkB,GAAG,OAAOl6B,EAAe,SAAS,EACpDm6B,GAAkB1xH,GAAWu3F,EAAek6B,GAAiB73E,GAAWh4C,EAAgBA,EAAgBA,EAAgBA,EAAgB,CAAA,EAAI,GAAG,OAAO6vH,GAAiB,UAAU,EAAGJ,CAAW,EAAG,GAAG,OAAOI,GAAiB,SAAS,EAAGpB,IAAgBe,GAAa,CAACt1D,EAAc,EAAG,GAAG,OAAO21D,GAAiB,WAAW,EAAG31D,EAAc,EAAG,GAAG,OAAO21D,GAAiB,WAAW,EAAGD,EAAQ,CAAC,EACpY3a,GAAcma,GAASr5G,CAAI,EAC3Bg6G,GAAc,CAACjC,GAAwB,OAAOA,GAAyB,YAAc8B,GAGrFvtG,GAAU,OAAO4yF,IAAgB,SAAWA,GAAcA,IAAez3H,GAEzEwyI,GAAc13B,GAAYj2E,EAAO,EAAIA,GAAQ,SAAQ,EAAK,OAC9D,OAAI8/C,KAAU,SACZ6tD,GAAc7tD,IAEIvpE,EAAM,cAAc,MAAO6F,GAAS,CAAA,EAAIu7C,GAAUs5D,CAAW,EAAI3hE,EAA8C,CAAA,EAApC09E,GAAiBt5G,EAAMy5G,CAAS,EAAQ,CACrI,gBAAiBV,EAAetxI,EAAK,EACrC,UAAWsyI,GACX,MAAOE,GACP,YAAa,UAAuB,CAC9BvB,IAAgBe,GAAat1D,IAGjCy0D,EAAUa,CAAS,CACrB,EACA,QAAS,UAAmB,CACrBt1D,IACH60D,EAAcvxI,EAAK,CAEvB,EACA,MAAO82B,EACb,CAAK,EAAgB1b,EAAM,cAAc,MAAO,CAC1C,UAAW,GAAG,OAAOi3H,GAAiB,UAAU,CACtD,EAAO,OAAO5B,GAAiB,WAAaA,EAAal4G,EAAM,CACzD,MAAOy5G,CACb,CAAK,EAAIntG,EAAO,EAAgBzpB,EAAM,eAAek1H,CAAoB,GAAK8B,GAAUG,IAA4Bn3H,EAAM,cAAci2F,GAAU,CAC5I,UAAW,GAAG,OAAO8G,EAAe,eAAe,EACnD,cAAem4B,EACf,mBAAoB,CAClB,MAAOtwI,GACP,SAAU08E,GACV,WAAY01D,EACpB,CACA,EAAOA,GAAW,IAAM,IAAI,CAAC,CAC3B,CAAC,CAAC,CACJ,EACIK,GAA6Br3H,EAAM,WAAWy+G,EAAU,EACxD,QAAQ,IAAI,WAAa,eAC3B4Y,GAAc,YAAc,cC3X9B,MAAAC,GAAgB,SAAUC,EAAeC,EAAc,CACrD,IAAI1rH,EAAW9L,EAAM,OAAO,CAC1B,OAAQ,IAAI,IACZ,QAAS,IAAI,GACjB,CAAG,EACGy3H,EAAsBz3H,EAAM,QAAQ,UAAY,CAClD,IAAI03H,EAAoB5rH,EAAS,QAC/B6rH,EAAiBD,EAAkB,OACnCE,EAAkBF,EAAkB,QAGlCG,EAAgBN,EAAc,IAAI,SAAUp6G,EAAM,CACpD,GAAIA,EAAK,QAAU,OAAW,CAC5B,IAAI26G,EACJ,OAAO3iH,EAAcA,EAAc,CAAA,EAAIgI,CAAI,EAAG,CAAA,EAAI,CAChD,OAAQ26G,EAAsBH,EAAe,IAAIx6G,EAAK,KAAK,KAAO,MAAQ26G,IAAwB,OAAS,OAASA,EAAoB,KAClJ,CAAS,CACH,CACA,OAAO36G,CACT,CAAC,EAGG46G,EAAa,IAAI,IACjBC,EAAc,IAAI,IACtB,OAAAH,EAAc,QAAQ,SAAU16G,EAAM,CACpC46G,EAAW,IAAI56G,EAAK,MAAOA,CAAI,EAC/B66G,EAAY,IAAI76G,EAAK,MAAOq6G,EAAa,IAAIr6G,EAAK,KAAK,GAAKy6G,EAAgB,IAAIz6G,EAAK,KAAK,CAAC,CAC7F,CAAC,EACDrR,EAAS,QAAQ,OAASisH,EAC1BjsH,EAAS,QAAQ,QAAUksH,EACpBH,CACT,EAAG,CAACN,EAAeC,CAAY,CAAC,EAC5BS,EAAYj4H,EAAM,YAAY,SAAUhR,EAAK,CAC/C,OAAOwoI,EAAa,IAAIxoI,CAAG,GAAK8c,EAAS,QAAQ,QAAQ,IAAI9c,CAAG,CAClE,EAAG,CAACwoI,CAAY,CAAC,EACjB,MAAO,CAACC,EAAqBQ,CAAS,CACxC,ECpCA,SAASC,GAASC,EAAMl8H,EAAQ,CAC9B,OAAOkK,GAAQgyH,CAAI,EAAE,KAAK,EAAE,EAAE,YAAW,EAAG,SAASl8H,CAAM,CAC7D,CACA,MAAAm8H,GAAgB,SAAU/wI,EAAS60H,EAAYnc,EAAas4B,EAAcC,EAAkB,CAC1F,OAAOt4H,EAAM,QAAQ,UAAY,CAC/B,GAAI,CAAC+/F,GAAes4B,IAAiB,GACnC,OAAOhxI,EAET,IAAIo1H,EAAeP,EAAW,QAC5BM,EAAaN,EAAW,MACxB5rC,EAAa4rC,EAAW,MACtBqc,EAAkB,CAAA,EAClBC,EAAkB,OAAOH,GAAiB,WAC1CI,EAAc14B,EAAY,YAAW,EACrC3f,EAAao4C,EAAkBH,EAAe,SAAU5jG,EAAGnnC,EAAQ,CAErE,OAAIgrI,EACKJ,GAAS5qI,EAAOgrI,CAAgB,EAAGG,CAAW,EAInDnrI,EAAOmvH,CAAY,EAEdyb,GAAS5qI,EAAOkvH,IAAe,WAAaA,EAAa,OAAO,EAAGic,CAAW,EAEhFP,GAAS5qI,EAAOgjF,CAAU,EAAGmoD,CAAW,CACjD,EACIC,EAAaF,EAAkB,SAAUlvI,EAAK,CAChD,OAAOuzH,GAAsBvzH,CAAG,CAClC,EAAI,SAAUA,EAAK,CACjB,OAAOA,CACT,EACA,OAAAjC,EAAQ,QAAQ,SAAU81B,EAAM,CAE9B,GAAIA,EAAKs/F,CAAY,EAAG,CAEtB,IAAIkc,EAAav4C,EAAW2f,EAAa24B,EAAWv7G,CAAI,CAAC,EACzD,GAAIw7G,EACFJ,EAAgB,KAAKp7G,CAAI,MACpB,CAEL,IAAIy7G,EAAaz7G,EAAKs/F,CAAY,EAAE,OAAO,SAAUoc,EAAS,CAC5D,OAAOz4C,EAAW2f,EAAa24B,EAAWG,CAAO,CAAC,CACpD,CAAC,EACGD,EAAW,QACbL,EAAgB,KAAKpjH,EAAcA,EAAc,CAAA,EAAIgI,CAAI,EAAG,CAAA,EAAI/V,EAAgB,CAAA,EAAIq1G,EAAcmc,CAAU,CAAC,CAAC,CAElH,CACA,MACF,CACIx4C,EAAW2f,EAAa24B,EAAWv7G,CAAI,CAAC,GAC1Co7G,EAAgB,KAAKp7G,CAAI,CAE7B,CAAC,EACMo7G,CACT,EAAG,CAAClxI,EAASgxI,EAAcC,EAAkBv4B,EAAamc,CAAU,CAAC,CACvE,EC1DA,IAAI9+F,GAAO,EAGAoiF,GAAkB,QAAQ,IAAI,WAAa,QAAU/nF,GAAS,EAGlE,SAASqhH,IAAU,CACxB,IAAIC,EAIJ,OAAIv5B,IACFu5B,EAAQ37G,GACRA,IAAQ,GAER27G,EAAQ,cAEHA,CACT,CACe,SAAShuF,GAAMlmC,EAAI,CAEhC,IAAIk8B,EAAkB/gC,EAAM,SAAQ,EAClCghC,EAAmB7pB,GAAe4pB,EAAiB,CAAC,EACpD4nC,EAAU3nC,EAAiB,CAAC,EAC5B4nC,EAAa5nC,EAAiB,CAAC,EACjChhC,OAAAA,EAAM,UAAU,UAAY,CAC1B4oE,EAAW,aAAa,OAAOkwD,GAAO,CAAE,CAAC,CAC3C,EAAG,CAAA,CAAE,EACEj0H,GAAM8jE,CACf,CC9BA,IAAIh9B,GAAY,CAAC,WAAY,OAAO,EAClCqK,GAAa,CAAC,UAAU,EAG1B,SAASgjF,GAAoBvxH,EAAM,CACjC,IAAI/L,EAAO+L,EACThkB,EAAMiY,EAAK,IACXu9H,EAAav9H,EAAK,MAClB0K,EAAW6yH,EAAW,SACtBr0I,EAAQq0I,EAAW,MACnBriF,EAAY38B,GAAyBg/G,EAAYttF,EAAS,EAC5D,OAAOx2B,EAAc,CACnB,IAAK1xB,EACL,MAAOmB,IAAU,OAAYA,EAAQnB,EACrC,SAAU2iB,CACd,EAAKwwC,CAAS,CACd,CACO,SAASsiF,GAAsB3pE,EAAO,CAC3C,IAAI4pE,EAAa,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACrF,OAAOhzH,GAAQopD,CAAK,EAAE,IAAI,SAAU9nD,EAAMrf,EAAO,CAC/C,GAAI,CAAe4X,EAAM,eAAeyH,CAAI,GAAK,CAACA,EAAK,KACrD,OAAO,KAET,IAAI7L,EAAQ6L,EACV2xH,EAAmBx9H,EAAM,KAAK,iBAC9BnY,EAAMmY,EAAM,IACZy9H,EAAcz9H,EAAM,MACpBwK,EAAWizH,EAAY,SACvBziF,EAAY38B,GAAyBo/G,EAAarjF,EAAU,EAC9D,OAAImjF,GAAc,CAACC,EACVJ,GAAoBvxH,CAAI,EAE1B0N,EAAcA,EAAc,CACjC,IAAK,oBAAoB,OAAO1xB,IAAQ,KAAO2E,EAAQ3E,EAAK,IAAI,EAChE,MAAOA,CACb,EAAOmzD,CAAS,EAAG,GAAI,CACjB,QAASsiF,GAAsB9yH,CAAQ,CAC7C,CAAK,CACH,CAAC,EAAE,OAAO,SAAU1hB,EAAM,CACxB,OAAOA,CACT,CAAC,CACH,CCpCA,IAAI40I,GAAa,SAAoBjyI,EAAS+e,EAAU81G,EAAYoc,EAAkBiB,EAAiB,CACrG,OAAOv5H,EAAM,QAAQ,UAAY,CAC/B,IAAIpJ,EAAgBvP,EAChB80H,EAAiB,CAAC90H,EAClB80H,IACFvlH,EAAgBsiI,GAAsB9yH,CAAQ,GAEhD,IAAIoxH,EAAe,IAAI,IACnBgC,EAAe,IAAI,IACnBC,EAAkB,SAAyBC,EAAiBpsI,EAAQ7J,EAAK,CACvEA,GAAO,OAAOA,GAAQ,UACxBi2I,EAAgB,IAAIpsI,EAAO7J,CAAG,EAAG6J,CAAM,CAE3C,EACIovH,EAAM,SAASA,EAAIsG,EAAY,CAGjC,QAFI2W,EAAa,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAE5EnzI,EAAI,EAAGA,EAAIw8H,EAAW,OAAQx8H,GAAK,EAAG,CAC7C,IAAI8G,EAAS01H,EAAWx8H,CAAC,EACrB,CAAC8G,EAAO4uH,EAAW,OAAO,GAAKyd,GACjCnC,EAAa,IAAIlqI,EAAO4uH,EAAW,KAAK,EAAG5uH,CAAM,EACjDmsI,EAAgBD,EAAclsI,EAAQ4uH,EAAW,KAAK,EAEtDud,EAAgBD,EAAclsI,EAAQgrI,CAAgB,EACtDmB,EAAgBD,EAAclsI,EAAQisI,CAAe,GAErD7c,EAAIpvH,EAAO4uH,EAAW,OAAO,EAAG,EAAI,CAExC,CACF,EACA,OAAAQ,EAAI9lH,CAAa,EACV,CACL,QAASA,EACT,aAAc4gI,EACd,aAAcgC,CACpB,CACE,EAAG,CAACnyI,EAAS+e,EAAU81G,EAAYoc,EAAkBiB,CAAe,CAAC,CACvE,ECtCe,SAASK,GAAWxmI,EAAU,CAC3C,IAAIymI,EAAU75H,EAAM,OAAM,EAC1B65H,EAAQ,QAAUzmI,EAClB,IAAI8tB,EAAUlhB,EAAM,YAAY,UAAY,CAC1C,OAAO65H,EAAQ,QAAQ,MAAMA,EAAS,SAAS,CACjD,EAAG,CAAA,CAAE,EACL,OAAO34G,CACT,CCNA,SAAS44G,GAAazgI,EAAO,CAC3B,IAAIs9F,EAAOt9F,EAAM,KACfhS,EAAUgS,EAAM,QAChB+M,EAAW/M,EAAM,SACjB0gI,EAAW1gI,EAAM,SACjBm9F,EAAan9F,EAAM,WACnB6mG,EAAc7mG,EAAM,YACpB4kH,EAAkB5kH,EAAM,gBACxB8mG,EAAa9mG,EAAM,WACnB4pG,EAAW5pG,EAAM,SACjB8kH,EAAc9kH,EAAM,YACpBsnE,EAAYtnE,EAAM,UAClB2gI,EAAe3gI,EAAM,aACrBzU,EAAQyU,EAAM,MACdqoG,EAAaroG,EAAM,WACnBkgI,EAAkBlgI,EAAM,gBACtB0lH,EAAWvB,GAAW7mB,CAAI,EAC1BqoB,EAAmB7e,IAAe,OAAYA,EAAa4e,GAAYpoB,IAAS,WAChF//F,EAAgBvP,GAAW6xI,GAAsB9yH,CAAQ,EAQ7D,GALAK,GAAQkwF,IAAS,QAAU//F,EAAc,MAAM,SAAUtN,EAAK,CAC5D,MAAO,CAACA,EAAI,QACd,CAAC,EAAG,8FAA8F,EAG9FqtG,IAAS,QAAUA,IAAS,WAAY,CAC1C,IAAIsjC,EAAiBrjI,EAAc,KAAK,SAAUumB,EAAM,CACtD,OAAIA,EAAK,QACAA,EAAK,QAAQ,KAAK,SAAU7zB,EAAK,CACtC,OAAO,OAAQ,UAAWA,EAAMA,EAAI,MAAQA,EAAI,MAAS,QAC3D,CAAC,EAEI,OAAQ,UAAW6zB,EAAOA,EAAK,MAAQA,EAAK,MAAS,QAC9D,CAAC,EACD1W,GAAQ,CAACwzH,EAAgB,mFAAmF,CAC9G,CAmBA,GAhBAxzH,GAAQkwF,IAAS,YAAc,CAAC4iC,EAAiB,uFAAuF,EAGxI9yH,GAAQkwF,IAAS,YAAc,CAACojC,EAAU,6CAA6C,EAGvFtzH,GAAQkwF,IAAS,YAAc,CAACsnB,EAAiB,mDAAmD,EAGpGh3G,GAAS0vF,IAAS,YAAc,CAACsnB,GAAmB,CAACznB,GAAc,CAAC0J,EAAa,iIAAiI,EAG9M+C,GAAY,CAAC+b,GAAoBroB,IAAS,YAAcA,IAAS,QACnElwF,GAAQ,GAAO,gEAAgE,EAEjFQ,GAAS,CAACk3G,GAAex9C,EAAW,kIAAkI,EAC3I/7E,GAAU,KAAM,CACzC,IAAIy5F,EAASl4E,GAAQvhB,CAAK,EAC1B6hB,GAAQ,CAACuzH,GAAgB37C,EAAO,MAAM,SAAUrvF,EAAK,CACnD,OAAO8W,GAAQ9W,CAAG,IAAM,WAAa,QAASA,GAAO,UAAWA,EAClE,CAAC,EAAG,kHAAkH,EACtHyX,GAAQ,CAACs4G,GAAY,MAAM,QAAQn6H,CAAK,EAAG,6DAA6D,CAC1G,CAGA,GAAIwhB,EAAU,CACZ,IAAI8zH,EAAsB,KAC1BC,GAAY/zH,CAAQ,EAAE,KAAK,SAAUqB,EAAM,CACzC,GAAI,CAAezH,EAAM,eAAeyH,CAAI,GAAK,CAACA,EAAK,KACrD,MAAO,GAET,IAAI/L,EAAO+L,EACTzgB,EAAO0U,EAAK,KACd,GAAI1U,EAAK,eACP,MAAO,GAET,GAAIA,EAAK,iBAAkB,CACzB,IAAIozI,EAAmBD,GAAY1yH,EAAK,MAAM,QAAQ,EAAE,MAAM,SAAU4yH,EAAS,CAC/E,MAAI,CAAer6H,EAAM,eAAeq6H,CAAO,GAAK,CAAC5yH,EAAK,MAAQ4yH,EAAQ,KAAK,eACtE,IAETH,EAAsBG,EAAQ,KACvB,GACT,CAAC,EACD,MAAI,CAAAD,CAIN,CACA,OAAAF,EAAsBlzI,EACf,EACT,CAAC,EACGkzI,GACFzzH,GAAQ,GAAO,yEAAyE,OAAOyzH,EAAoB,aAAeA,EAAoB,MAAQA,EAAqB,IAAI,CAAC,EAE1LzzH,GAAQi7F,IAAe,OAAW,+DAA+D,CACnG,CACF,CAIO,SAAS44B,GAAmBjzI,EAAS60H,EAAY,CACtD,GAAI70H,EAAS,CACX,IAAIkzI,EAAmB,SAASA,EAAiBC,EAAa,CAE5D,QADIC,EAAU,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACzEj0I,EAAI,EAAGA,EAAIg0I,EAAY,OAAQh0I,IAAK,CAC3C,IAAI8G,EAASktI,EAAYh0I,CAAC,EAC1B,GAAI8G,EAAO4uH,GAAe,KAAgC,OAASA,EAAW,KAAK,IAAM,KACvFz1G,OAAAA,GAAQ,GAAO,iDAAiD,EACzD,GAET,GAAI,CAACg0H,GAAW,MAAM,QAAQntI,EAAO4uH,GAAe,KAAgC,OAASA,EAAW,OAAO,CAAC,GAAKqe,EAAiBjtI,EAAO4uH,GAAe,KAAgC,OAASA,EAAW,OAAO,EAAG,EAAI,EAC5N,KAEJ,CACF,EACAqe,EAAiBlzI,CAAO,CAC1B,CACF,CCrHA,IAAIskD,GAAY,CAAC,KAAM,OAAQ,YAAa,WAAY,aAAc,aAAc,cAAe,WAAY,uBAAwB,WAAY,aAAc,2BAA4B,eAAgB,aAAc,mBAAoB,kBAAmB,UAAW,eAAgB,WAAY,2BAA4B,uBAAwB,UAAW,YAAa,aAAc,iBAAkB,cAAe,QAAS,eAAgB,eAAgB,WAAY,UAAU,EAgD/d+uF,GAAiB,CAAC,YAAY,EAClC,SAASC,GAAW/1I,EAAO,CACzB,MAAO,CAACA,GAASkhB,GAAQlhB,CAAK,IAAM,QACtC,CACA,IAAIg2I,GAAsB56H,EAAM,WAAW,SAAU3G,EAAOP,EAAK,CAC/D,IAAI+L,EAAKxL,EAAM,GACbs9F,EAAOt9F,EAAM,KACb+8D,EAAmB/8D,EAAM,UACzB+rC,EAAYgxB,IAAqB,OAAS,YAAcA,EACxD2jE,EAAW1gI,EAAM,SACjB6iH,EAAa7iH,EAAM,WACnBqoG,EAAaroG,EAAM,WACnB0mG,EAAc1mG,EAAM,YACpB4pG,EAAW5pG,EAAM,SACjBwhI,EAAwBxhI,EAAM,qBAC9B2mG,EAAuB66B,IAA0B,OAAS,GAAOA,EACjE5F,EAAW57H,EAAM,SACjByhI,EAAazhI,EAAM,WACnB0hI,EAAwB1hI,EAAM,yBAC9Bo+C,EAA2BsjF,IAA0B,OAAS,GAAOA,EACrE1C,EAAeh/H,EAAM,aACrB2hI,EAAa3hI,EAAM,WACnBi/H,EAAmBj/H,EAAM,iBACzBkgI,EAAkBlgI,EAAM,gBACxBhS,EAAUgS,EAAM,QAChBg8H,EAAeh8H,EAAM,aACrB+M,EAAW/M,EAAM,SACjB27H,EAA2B37H,EAAM,yBACjC67H,EAAuB77H,EAAM,qBAC7B0/C,EAAU1/C,EAAM,QAChB+kC,EAAY/kC,EAAM,UAClB4hI,EAAoB5hI,EAAM,WAC1B87H,EAAa8F,IAAsB,OAAS,IAAMA,EAClDC,EAAwB7hI,EAAM,eAC9B+7H,EAAiB8F,IAA0B,OAAS,GAAKA,EACzDC,EAAc9hI,EAAM,YACpBzU,EAAQyU,EAAM,MACd1O,EAAe0O,EAAM,aACrB2gI,EAAe3gI,EAAM,aACrBkoC,EAAWloC,EAAM,SACjBshG,EAAWthG,EAAM,SACjBu9C,EAAY38B,GAAyB5gB,EAAOsyC,EAAS,EACnDyvF,EAAWrwF,GAAMlmC,CAAE,EACnBk6G,EAAWvB,GAAW7mB,CAAI,EAC1BwlB,EAAiB,CAAC,EAAE,CAAC90H,GAAW+e,GAChCi1H,GAAqBr7H,EAAM,QAAQ,UAAY,CACjD,OAAIq4H,IAAiB,QAAa1hC,IAAS,WAClC,GAEF0hC,CACT,EAAG,CAACA,EAAc1hC,CAAI,CAAC,EAGnB2kC,GAAmBt7H,EAAM,QAAQ,UAAY,CAC/C,OAAOi8G,GAAeC,EAAYC,CAAc,CAClD,EACA,CAEA,KAAK,UAAUD,CAAU,EAAGC,CAAc,CAC5C,EAGM5mD,GAAkBl0B,GAAe,GAAI,CACrC,MAAO0+D,IAAgB,OAAYA,EAAc2B,EACjD,UAAW,SAAmBzlG,GAAQ,CACpC,OAAOA,IAAU,EACnB,CACN,CAAK,EACDu5D,GAAmBr+C,GAAeo+C,GAAiB,CAAC,EACpDmhC,GAAoBlhC,GAAiB,CAAC,EACtC+lE,EAAiB/lE,GAAiB,CAAC,EAGjCgmE,EAAgBlC,GAAWjyI,EAAS+e,EAAUk1H,GAAkBhD,EAAkBiB,CAAe,EACjG/B,GAAegE,EAAc,aAC/BhC,EAAegC,EAAc,aAC7B5kI,GAAgB4kI,EAAc,QAG5BC,GAAsBz7H,EAAM,YAAY,SAAU07H,GAAa,CAEjE,IAAIC,GAAYx1H,GAAQu1H,EAAW,EAGnC,OAAOC,GAAU,IAAI,SAAU3sI,GAAK,CAClC,IAAI4sI,GACAC,GACAC,GACAC,GACAC,GAGJ,GAAIrB,GAAW3rI,EAAG,EAChB4sI,GAAW5sI,OACN,CACL,IAAIitI,GACJH,GAAS9sI,GAAI,IACb6sI,GAAW7sI,GAAI,MACf4sI,IAAYK,GAAajtI,GAAI,SAAW,MAAQitI,KAAe,OAASA,GAAaH,EACvF,CACA,IAAIxuI,GAASkqI,GAAa,IAAIoE,EAAQ,EACtC,GAAItuI,GAAQ,CACV,IAAI4uI,GAQJ,GANIL,KAAa,SAAWA,GAAWvuI,IAAW,KAA4B,OAASA,GAAOisI,GAAmB+B,GAAiB,KAAK,GACnIQ,KAAW,SAAWA,IAAUI,GAAc5uI,IAAW,KAA4B,OAASA,GAAO,OAAS,MAAQ4uI,KAAgB,OAASA,GAAcN,IACjKG,GAAczuI,IAAW,KAA4B,OAASA,GAAO,SACrE0uI,GAAW1uI,IAAW,KAA4B,OAASA,GAAO,MAG9D,QAAQ,IAAI,WAAa,cAAgB,CAACisI,EAAiB,CAC7D,IAAI4C,GAAc7uI,IAAW,KAA4B,OAASA,GAAOguI,GAAiB,KAAK,EAC3Fa,KAAgB,QAAa,CAAen8H,EAAM,eAAem8H,EAAW,GAAK,CAAen8H,EAAM,eAAe67H,EAAQ,GAAKM,KAAgBN,IACpJp1H,GAAQ,GAAO,8DAA8D,CAEjF,CACF,CACA,MAAO,CACL,MAAOo1H,GACP,MAAOD,GACP,IAAKE,GACL,SAAUC,GACV,MAAOC,EACf,CACI,CAAC,CACH,EAAG,CAACV,GAAkB/B,EAAiB/B,EAAY,CAAC,EAGhD4E,GAAmB/6F,GAAe12C,EAAc,CAChD,MAAO/F,CACb,CAAK,EACDy3I,GAAmBllH,GAAeilH,GAAkB,CAAC,EACrDE,GAAgBD,GAAiB,CAAC,EAClCE,GAAmBF,GAAiB,CAAC,EAGnCG,GAAmBx8H,EAAM,QAAQ,UAAY,CAC/C,IAAIy8H,GACAC,GAAmB3d,GAAYud,KAAkB,KAAO,CAAA,EAAKA,GAC7Dj+C,GAASo9C,GAAoBiB,EAAgB,EAGjD,OAAI/lC,IAAS,YAAc8I,IAAgBg9B,GAAWp+C,GAAO,CAAC,KAAO,MAAQo+C,KAAa,OAAS,OAASA,GAAS,KAAK,EACjH,CAAA,EAEFp+C,EACT,EAAG,CAACi+C,GAAeb,GAAqB9kC,EAAMooB,CAAQ,CAAC,EAGnD4d,GAAYrF,GAASkF,GAAkBhF,EAAY,EACrDoF,GAAazlH,GAAewlH,GAAW,CAAC,EACxCE,GAAeD,GAAW,CAAC,EAC3BE,GAAiBF,GAAW,CAAC,EAC3BrmC,EAAgBv2F,EAAM,QAAQ,UAAY,CAG5C,GAAI,CAAC22F,GAAQkmC,GAAa,SAAW,EAAG,CACtC,IAAIE,GAAaF,GAAa,CAAC,EAC/B,GAAIE,GAAW,QAAU,OAASA,GAAW,QAAU,MAAQA,GAAW,QAAU,QAClF,MAAO,CAAA,CAEX,CACA,OAAOF,GAAa,IAAI,SAAU1/G,GAAM,CACtC,IAAIzhB,GACJ,OAAOyZ,EAAcA,EAAc,CAAA,EAAIgI,EAAI,EAAG,CAAA,EAAI,CAChD,OAAQzhB,GAAO,OAAOy/H,GAAgB,WAAaA,EAAYh+G,EAAI,EAAIA,GAAK,SAAW,MAAQzhB,KAAS,OAASA,GAAOyhB,GAAK,KACrI,CAAO,CACH,CAAC,CACH,EAAG,CAACw5E,EAAMkmC,GAAc1B,CAAW,CAAC,EAGhCza,GAAY1gH,EAAM,QAAQ,UAAY,CACxC,OAAO,IAAI,IAAI68H,GAAa,IAAI,SAAU7tI,GAAK,CAC7C,OAAOA,GAAI,KACb,CAAC,CAAC,CACJ,EAAG,CAAC6tI,EAAY,CAAC,EACjB78H,EAAM,UAAU,UAAY,CAC1B,GAAI22F,IAAS,WAAY,CACvB,IAAIqmC,GACAC,IAAYD,GAAiBH,GAAa,CAAC,KAAO,MAAQG,KAAmB,OAAS,OAASA,GAAe,MAClHzB,EAAen6F,GAAS67F,EAAQ,EAAI,OAAOA,EAAQ,EAAI,EAAE,CAC3D,CACF,EAAG,CAACJ,EAAY,CAAC,EAIjB,IAAIK,GAAkBtD,GAAW,SAAU5qI,GAAKizG,GAAO,CACrD,IAAIoa,GAAcpa,IAA6CjzG,GAC/D,OAAOoY,EAAgBA,EAAgB,CAAA,EAAIk0H,GAAiB,MAAOtsI,EAAG,EAAGssI,GAAiB,MAAOjf,EAAW,CAC9G,CAAC,EAGG8gB,GAAmBn9H,EAAM,QAAQ,UAAY,CAC/C,GAAI22F,IAAS,OACX,OAAO//F,GAIT,IAAIwmI,GAAernH,GAAmBnf,EAAa,EAG/CymI,GAAe,SAAsBruI,GAAK,CAC5C,OAAOwoI,GAAa,IAAIxoI,EAAG,CAC7B,EAGA,OAAA+mB,GAAmB8mH,EAAY,EAAE,KAAK,SAAU15I,GAAG4kB,GAAG,CACpD,OAAO5kB,GAAE,MAAQ4kB,GAAE,MAAQ,GAAK,CAClC,CAAC,EAAE,QAAQ,SAAUoV,GAAM,CACzB,IAAInuB,GAAMmuB,GAAK,MACVkgH,GAAaruI,EAAG,GACnBouI,GAAa,KAAKF,GAAgBluI,GAAKmuB,GAAK,KAAK,CAAC,CAEtD,CAAC,EACMigH,EACT,EAAG,CAACF,GAAiBtmI,GAAe4gI,GAAcqF,GAAclmC,CAAI,CAAC,EACjE4hC,GAAkBH,GAAiB+E,GAAkB7B,GAAkB5kC,GAAmB2kC,GAAoB/C,CAAgB,EAG9HgF,GAAsBt9H,EAAM,QAAQ,UAAY,CAOlD,OANI22F,IAAS,QAAU,CAACD,IAAqB6hC,GAAgB,KAAK,SAAUp7G,GAAM,CAChF,OAAOA,GAAKm7G,GAAoB,OAAO,IAAM5hC,EAC/C,CAAC,GAIG6hC,GAAgB,KAAK,SAAUp7G,GAAM,CACvC,OAAOA,GAAKm+G,GAAiB,KAAK,IAAM5kC,EAC1C,CAAC,EACQ6hC,GAGF,CAAC2E,GAAgBxmC,EAAiB,CAAC,EAAE,OAAO3gF,GAAmBwiH,EAAe,CAAC,CACxF,EAAG,CAAC2E,GAAiB5E,EAAkB3hC,EAAM4hC,GAAiB7hC,GAAmB4kC,EAAgB,CAAC,EAC9FiC,GAAS,SAASA,GAAOC,GAAc,CACzC,IAAIC,GAAgB1nH,GAAmBynH,EAAY,EAAE,KAAK,SAAUr6I,GAAG4kB,GAAG,CACxE,OAAOizH,EAAW73I,GAAG4kB,GAAG,CACtB,YAAa2uF,EACrB,CAAO,CACH,CAAC,EACD,OAAO+mC,GAAc,IAAI,SAAUtgH,GAAM,CACvC,OAAI,MAAM,QAAQA,GAAK,OAAO,EACrBhI,EAAcA,EAAc,CAAA,EAAIgI,EAAI,EAAG,CAAA,EAAI,CAChD,QAASA,GAAK,QAAQ,OAAS,EAAIogH,GAAOpgH,GAAK,OAAO,EAAIA,GAAK,OACzE,CAAS,EAEIA,EACT,CAAC,CACH,EACIugH,GAAyB19H,EAAM,QAAQ,UAAY,CACrD,OAAKg7H,EAGEuC,GAAOD,EAAmB,EAFxBA,EAGX,EAAG,CAACA,GAAqBtC,EAAYtkC,EAAiB,CAAC,EACnDinC,GAAiB39H,EAAM,QAAQ,UAAY,CAC7C,OAAOs8G,GAAeohB,GAAwB,CAC5C,WAAYpC,GACZ,eAAgBnf,CACtB,CAAK,CACH,EAAG,CAACuhB,GAAwBpC,GAAkBnf,CAAc,CAAC,EAGzDh6E,GAAgB,SAAuBk8C,GAAQ,CACjD,IAAIk5C,GAAgBkE,GAAoBp9C,EAAM,EAE9C,GADAk+C,GAAiBhF,EAAa,EAC1Bh2F,IAEJg2F,GAAc,SAAWsF,GAAa,QAAUtF,GAAc,KAAK,SAAUqG,GAAQx1I,GAAO,CAC1F,IAAIy1I,GACJ,QAASA,GAAsBhB,GAAaz0I,EAAK,KAAO,MAAQy1I,KAAwB,OAAS,OAASA,GAAoB,UAAYD,IAAW,KAA4B,OAASA,GAAO,MACnM,CAAC,GAAI,CACH,IAAIE,GAAe9D,EAAezC,GAAgBA,GAAc,IAAI,SAAU5uI,GAAG,CAC/E,OAAOA,GAAE,KACX,CAAC,EACGo1I,GAAgBxG,GAAc,IAAI,SAAU5uI,GAAG,CACjD,OAAOk0H,GAAsBigB,GAAen0I,GAAE,KAAK,CAAC,CACtD,CAAC,EACD44C,EAEAw9E,EAAW+e,GAAeA,GAAa,CAAC,EAExC/e,EAAWgf,GAAgBA,GAAc,CAAC,CAAC,CAC7C,CACF,EAGIh9F,GAAkB/gC,EAAM,SAAS,IAAI,EACvCghC,GAAmB7pB,GAAe4pB,GAAiB,CAAC,EACpDuhE,GAActhE,GAAiB,CAAC,EAChCg9F,GAAiBh9F,GAAiB,CAAC,EACjCmkC,GAAmBnlE,EAAM,SAAS,CAAC,EACrColE,GAAmBjuD,GAAeguD,GAAkB,CAAC,EACrD84D,GAAqB74D,GAAiB,CAAC,EACvC84D,GAAwB94D,GAAiB,CAAC,EACxC+4D,GAAiCnJ,IAA6B,OAAYA,EAA2Br+B,IAAS,WAC9Go+B,GAAgB/0H,EAAM,YAAY,SAAU+yC,GAAQ3qD,GAAO,CAC7D,IAAI+2B,GAAQ,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAA,EAC9Ei/G,GAAej/G,GAAM,OACrBp6B,GAASq5I,KAAiB,OAAS,WAAaA,GAClDF,GAAsB91I,EAAK,EACvB2xI,GAAYpjC,IAAS,YAAc5jD,KAAW,MAAQhuD,KAAW,YACnEi5I,GAAe,OAAOjrF,EAAM,CAAC,CAEjC,EAAG,CAACgnF,EAAUpjC,CAAI,CAAC,EAGf0nC,GAAgB,SAAuBrvI,GAAKgoI,GAAUhwI,GAAM,CAC9D,IAAIs3I,GAAe,UAAwB,CACzC,IAAIC,GACAjxI,GAASwvI,GAAe9tI,EAAG,EAC/B,MAAO,CAACgrI,EAAe,CACrB,MAAO1sI,IAAW,KAA4B,OAASA,GAAOguI,GAAiB,KAAK,EACpF,MAAOtsI,GACP,KAAMuvI,GAAejxI,IAAW,KAA4B,OAASA,GAAO,OAAS,MAAQixI,KAAiB,OAASA,GAAevvI,EAC9I,EAAUA,GAAK6tH,GAAsBvvH,EAAM,CAAC,CACxC,EACA,GAAI0pI,IAAY/B,EAAU,CACxB,IAAIuJ,GAAgBF,GAAY,EAC9BG,GAAiBtnH,GAAeqnH,GAAe,CAAC,EAChDE,GAAeD,GAAe,CAAC,EAC/BE,GAAUF,GAAe,CAAC,EAC5BxJ,EAASyJ,GAAcC,EAAO,CAChC,SAAW,CAAC3H,IAAY8D,GAAc9zI,KAAS,QAAS,CACtD,IAAI43I,GAAiBN,GAAY,EAC/BO,GAAiB1nH,GAAeynH,GAAgB,CAAC,EACjDE,GAAgBD,GAAe,CAAC,EAChCE,GAAWF,GAAe,CAAC,EAC7B/D,EAAWgE,GAAeC,EAAQ,CACpC,CACF,EAGIC,GAAmBpF,GAAW,SAAU5qI,GAAK65B,GAAM,CACrD,IAAIo2G,GAGAC,GAAengB,EAAWl2F,GAAK,SAAW,GAC1Cq2G,GACFD,GAAclgB,EAAW,GAAG,OAAOhpG,GAAmB8mH,EAAY,EAAG,CAAC7tI,EAAG,CAAC,EAAI,CAACA,EAAG,EAElFiwI,GAAcpC,GAAa,OAAO,SAAUl0I,GAAG,CAC7C,OAAOA,GAAE,QAAUqG,EACrB,CAAC,EAEHmzC,GAAc88F,EAAW,EACzBZ,GAAcrvI,GAAKkwI,EAAY,EAG3BvoC,IAAS,WAEXqnC,GAAe,EAAE,GACR,CAACxgB,IAAcxd,KACxBu7B,EAAe,EAAE,EACjByC,GAAe,EAAE,EAErB,CAAC,EAIGpgB,GAAwB,SAA+BuhB,GAAYt2G,GAAM,CAC3EsZ,GAAcg9F,EAAU,EACxB,IAAIn4I,GAAO6hC,GAAK,KACdw1D,GAASx1D,GAAK,QACZ7hC,KAAS,UAAYA,KAAS,UAChCq3F,GAAO,QAAQ,SAAUlhE,GAAM,CAC7BkhH,GAAclhH,GAAK,MAAO,GAAOn2B,EAAI,CACvC,CAAC,CAEL,EAGI25H,GAAmB,SAA0BC,GAAY/3F,GAAM,CAKjE,GAJA0yG,EAAe3a,EAAU,EACzBod,GAAe,IAAI,EAGfn1G,GAAK,SAAW,SAAU,CAC5B,IAAIl2B,IAAaiuH,IAAc,IAAI,KAAI,EAEvC,GAAIjuH,GAAW,CACb,IAAIysI,GAAe,MAAM,KAAK,IAAI,IAAI,CAAA,EAAG,OAAOrpH,GAAmB2qG,EAAS,EAAG,CAAC/tH,EAAS,CAAC,CAAC,CAAC,EAC5FwvC,GAAci9F,EAAY,EAC1Bf,GAAc1rI,GAAW,EAAI,EAC7B4oI,EAAe,EAAE,CACnB,CACA,MACF,CACI1yG,GAAK,SAAW,SACd8tE,IAAS,YACXx0D,GAAcy+E,EAAU,EAE1B3d,GAAa,MAA+BA,EAAS2d,EAAU,EAEnE,EACIye,GAAwB,SAA+BC,GAAO,CAChE,IAAIC,GAAcD,GACd3oC,IAAS,SACX4oC,GAAcD,GAAM,IAAI,SAAUtuD,GAAM,CACtC,IAAI1nF,GAAMkwI,EAAa,IAAIxoD,EAAI,EAC/B,OAAO1nF,IAAQ,KAAyB,OAASA,GAAI,KACvD,CAAC,EAAE,OAAO,SAAU0F,GAAK,CACvB,OAAOA,KAAQ,MACjB,CAAC,GAEH,IAAIowI,GAAe,MAAM,KAAK,IAAI,IAAI,CAAA,EAAG,OAAOrpH,GAAmB2qG,EAAS,EAAG3qG,GAAmBwpH,EAAW,CAAC,CAAC,CAAC,EAChHp9F,GAAci9F,EAAY,EAC1BA,GAAa,QAAQ,SAAUI,GAAa,CAC1CnB,GAAcmB,GAAa,EAAI,CACjC,CAAC,CACH,EAGIC,GAAgBz/H,EAAM,QAAQ,UAAY,CAC5C,IAAI0/H,GAAc3mF,IAAY,IAAStB,IAA6B,GACpE,OAAOtiC,EAAcA,EAAc,CAAA,EAAIqmH,CAAa,EAAG,CAAA,EAAI,CACzD,eAAgBmC,GAChB,cAAe5I,GACf,yBAA0BoJ,GAC1B,SAAUa,GACV,qBAAsB9J,EACtB,UAAWxU,GACX,WAAY4a,GACZ,QAASoE,GACT,UAAWthG,EACX,WAAY+2F,EACZ,eAAgBC,EAChB,eAAgBjZ,EAChB,SAAUxhB,EACV,aAAc06B,CACpB,CAAK,CACH,EAAG,CAAC16B,EAAU6gC,EAAemC,GAAgB5I,GAAeoJ,GAAgCa,GAAkB9J,EAAsBxU,GAAW4a,GAAkBviF,EAAStB,EAA0BrZ,EAAW+2F,EAAYC,EAAgBjZ,EAAgBkZ,CAAY,CAAC,EAGxQ,OAAI,QAAQ,IAAI,WAAa,eAC3ByE,GAAazgI,CAAK,EAClBihI,GAAmB1jI,GAAe0kI,EAAgB,GAMhCt7H,EAAM,cAAco9G,GAAc,SAAU,CAC9D,MAAOqiB,EACX,EAAkBz/H,EAAM,cAAcy9G,GAAY53G,GAAS,CAAA,EAAI+wC,EAAW,CAEtE,GAAIwkF,EACJ,UAAWh2F,EACX,IAAKtsC,EACL,aAAc4hI,GACd,KAAM/jC,EAGN,cAAeJ,EACf,sBAAuBqnB,GAGvB,UAAWx/E,EAGX,YAAas4D,GACb,SAAUiqB,GACV,qBAAsB3gB,EACtB,cAAeq/B,GACf,yBAA0B5nF,EAG1B,WAAYgnE,GACZ,aAAc,CAACkf,GAAe,OAG9B,YAAar7B,GACb,mBAAoB,GAAG,OAAO84B,EAAU,QAAQ,EAAE,OAAO6C,EAAkB,CAC/E,CAAG,CAAC,CAAC,CACL,CAAC,EACG,QAAQ,IAAI,WAAa,eAC3BrD,GAAO,YAAc,UAEvB,IAAI+E,GAAc/E,GAClB+E,GAAY,OAAStc,GACrBsc,GAAY,SAAWvc,GCrhBhB,SAASwc,GAAoBx6F,EAAW+J,EAAQ0wF,EAAa,CAClE,OAAOr6H,GAAW,CAChB,CAAC,GAAG4/B,CAAS,iBAAiB,EAAG+J,IAAW,UAC5C,CAAC,GAAG/J,CAAS,iBAAiB,EAAG+J,IAAW,UAC5C,CAAC,GAAG/J,CAAS,eAAe,EAAG+J,IAAW,QAC1C,CAAC,GAAG/J,CAAS,oBAAoB,EAAG+J,IAAW,aAC/C,CAAC,GAAG/J,CAAS,eAAe,EAAGy6F,CACnC,CAAG,CACH,CACO,MAAMC,GAAkB,CAACC,EAAeC,IAAiBA,GAAgBD,ECL1El8I,GAAQ,IAAM,CAClB,KAAM,CAAA,CAAGy5B,CAAK,EAAIgnB,GAAQ,EACpB,CAACpS,CAAM,EAAIoB,GAAU,OAAO,EAG5B2sG,EAFU,IAAIprG,GAAUvX,EAAM,WAAW,EAEpB,MAAK,EAAG,EAAI,GAAM,CAC3C,QAAS,GACb,EAAM,CAAA,EACJ,OAAoBtd,EAAM,cAAc,MAAO,CAC7C,MAAOigI,EACP,MAAO,MACP,OAAQ,MACR,QAAS,cACT,MAAO,4BACX,EAAkBjgI,EAAM,cAAc,QAAS,MAAOkyB,GAAW,KAA4B,OAASA,EAAO,cAAgB,OAAO,EAAgBlyB,EAAM,cAAc,IAAK,CACzK,KAAM,OACN,SAAU,SACd,EAAkBA,EAAM,cAAc,IAAK,CACvC,UAAW,qBACf,EAAkBA,EAAM,cAAc,UAAW,CAC7C,YAAa,KACb,KAAM,UACN,GAAI,SACJ,GAAI,SACJ,GAAI,SACJ,GAAI,QACR,CAAG,EAAgBA,EAAM,cAAc,OAAQ,CAC3C,EAAG,+IACH,KAAM,SACV,CAAG,EAAgBA,EAAM,cAAc,OAAQ,CAC3C,EAAG,2IACH,KAAM,yBACN,UAAW,kBACf,CAAG,EAAgBA,EAAM,cAAc,OAAQ,CAC3C,EAAG,0FACH,KAAM,SACV,CAAG,EAAgBA,EAAM,cAAc,OAAQ,CAC3C,EAAG,ujBACH,KAAM,SACV,CAAG,CAAC,EAAgBA,EAAM,cAAc,OAAQ,CAC5C,EAAG,yOACH,KAAM,SACV,CAAG,EAAgBA,EAAM,cAAc,IAAK,CACxC,UAAW,2BACX,KAAM,MACV,EAAkBA,EAAM,cAAc,UAAW,CAC7C,GAAI,SACJ,GAAI,QACJ,GAAI,QACJ,GAAI,OACR,CAAG,EAAgBA,EAAM,cAAc,OAAQ,CAC3C,EAAG,sDACP,CAAG,CAAC,CAAC,CAAC,CACN,EACI,QAAQ,IAAI,WAAa,eAC3Bnc,GAAM,YAAc,cCtDtB,MAAMq8I,GAAS,IAAM,CACnB,KAAM,CAAA,CAAG5iH,CAAK,EAAIgnB,GAAQ,EACpB,CAACpS,CAAM,EAAIoB,GAAU,OAAO,EAC5B,CACJ,UAAA+3D,EACA,kBAAA80C,EACA,oBAAAC,EACA,iBAAAC,CACJ,EAAM/iH,EACE,CACJ,YAAAqkC,EACA,YAAA2+E,EACA,aAAAC,CACJ,EAAM70H,EAAAA,QAAQ,KAAO,CACjB,YAAa,IAAImpB,GAAUw2D,CAAS,EAAE,aAAag1C,CAAgB,EAAE,YAAW,EAChF,YAAa,IAAIxrG,GAAUsrG,CAAiB,EAAE,aAAaE,CAAgB,EAAE,YAAW,EACxF,aAAc,IAAIxrG,GAAUurG,CAAmB,EAAE,aAAaC,CAAgB,EAAE,YAAW,CAC/F,GAAM,CAACh1C,EAAW80C,EAAmBC,EAAqBC,CAAgB,CAAC,EACzE,OAAoBrgI,EAAM,cAAc,MAAO,CAC7C,MAAO,KACP,OAAQ,KACR,QAAS,YACT,MAAO,4BACX,EAAkBA,EAAM,cAAc,QAAS,MAAOkyB,GAAW,KAA4B,OAASA,EAAO,cAAgB,OAAO,EAAgBlyB,EAAM,cAAc,IAAK,CACzK,UAAW,iBACX,KAAM,OACN,SAAU,SACd,EAAkBA,EAAM,cAAc,UAAW,CAC7C,KAAMsgI,EACN,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,GACR,CAAG,EAAgBtgI,EAAM,cAAc,IAAK,CACxC,SAAU,UACV,OAAQ2hD,CACZ,EAAkB3hD,EAAM,cAAc,OAAQ,CAC1C,EAAG,+GACP,CAAG,EAAgBA,EAAM,cAAc,OAAQ,CAC3C,EAAG,gPACH,KAAMugI,CACV,CAAG,CAAC,CAAC,CAAC,CACN,EACI,QAAQ,IAAI,WAAa,eAC3BL,GAAO,YAAc,eCjDvB,MAAMM,GAAsBljH,GAAS,CACnC,KAAM,CACJ,aAAA0pB,EACA,OAAAy5F,EACA,SAAAz+E,EACA,SAAA0+E,EACA,SAAAtlG,EACA,WAAAc,CACJ,EAAM5e,EACJ,MAAO,CACL,CAAC0pB,CAAY,EAAG,CACd,aAAcgb,EACd,SAAA5mB,EACA,WAAAc,EACA,UAAW,SAEX,CAAC,GAAG8K,CAAY,QAAQ,EAAG,CACzB,OAAQ1pB,EAAM,eACd,aAAc0kC,EACd,QAAS1kC,EAAM,aACf,IAAK,CACH,OAAQ,MAClB,EACQ,IAAK,CACH,SAAU,OACV,OAAQ,OACR,OAAQ,MAClB,CACA,EACM,CAAC,GAAG0pB,CAAY,cAAc,EAAG,CAC/B,MAAO1pB,EAAM,oBACrB,EAEM,CAAC,GAAG0pB,CAAY,SAAS,EAAG,CAC1B,UAAWy5F,CACnB,EACM,WAAY,CACV,YAAaC,EACb,MAAOpjH,EAAM,qBACb,CAAC,GAAG0pB,CAAY,cAAc,EAAG,CAC/B,MAAO1pB,EAAM,oBACvB,EACQ,CAAC,GAAG0pB,CAAY,QAAQ,EAAG,CACzB,OAAQ1pB,EAAM,gBACxB,CACA,EACM,UAAW,CACT,YAAa0kC,EACb,MAAO1kC,EAAM,qBACb,CAAC,GAAG0pB,CAAY,QAAQ,EAAG,CACzB,OAAQ1pB,EAAM,gBACxB,CACA,CACA,CACA,CACA,EAEAqjH,GAAeh8F,GAAc,QAASrnB,GAAS,CAC7C,KAAM,CACJ,aAAA0pB,EACA,gBAAA4iD,EACA,KAAAl0D,CACJ,EAAMpY,EACEsjH,EAAar9F,GAAWjmB,EAAO,CACnC,YAAa,GAAG0pB,CAAY,OAC5B,eAAgBtR,EAAKk0D,CAAe,EAAE,IAAI,GAAG,EAAE,MAAK,EACpD,iBAAkBA,EAClB,iBAAkBl0D,EAAKk0D,CAAe,EAAE,IAAI,IAAK,EAAE,MAAK,CAC5D,CAAG,EACD,MAAO,CAAC42C,GAAoBI,CAAU,CAAC,CACzC,CAAC,ECtED,IAAIz4F,GAAgC,SAAU/kD,EAAGe,EAAG,CAClD,IAAId,EAAI,CAAA,EACR,QAASe,KAAKhB,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGgB,CAAC,GAAKD,EAAE,QAAQC,CAAC,EAAI,IAAGf,EAAEe,CAAC,EAAIhB,EAAEgB,CAAC,GAC/F,GAAIhB,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WAAY,QAAS,EAAI,EAAGgB,EAAI,OAAO,sBAAsBhB,CAAC,EAAG,EAAIgB,EAAE,OAAQ,IAClID,EAAE,QAAQC,EAAE,CAAC,CAAC,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKhB,EAAGgB,EAAE,CAAC,CAAC,IAAGf,EAAEe,EAAE,CAAC,CAAC,EAAIhB,EAAEgB,EAAE,CAAC,CAAC,GAElG,OAAOf,CACT,EASA,MAAMw9I,GAA+B7gI,EAAM,cAAc8gI,GAAiB,IAAI,EACxEC,GAA8B/gI,EAAM,cAAcghI,GAAgB,IAAI,EACtEn9I,GAAQwV,GAAS,CACrB,KAAM,CACF,UAAA+lD,EACA,cAAAY,EACA,UAAWpiB,EACX,MAAAsc,EAAQ2mF,GACR,YAAAv8E,EACA,SAAAl+C,EACA,WAAA66H,EACA,MAAAvlH,EACA,WAAYwlH,EACZ,OAAAlxH,CACN,EAAQ3W,EACJu9C,EAAYzO,GAAO9uC,EAAO,CAAC,YAAa,gBAAiB,YAAa,QAAS,cAAe,WAAY,aAAc,QAAS,aAAc,QAAQ,CAAC,EACpJ,CACJ,aAAA8kC,EACA,UAAAC,EACA,UAAWgnB,EACX,MAAOC,EACP,WAAY8b,EACZ,OAAQC,CACZ,EAAMpjC,GAAmB,OAAO,EACxBoH,EAAYjH,EAAa,QAASP,CAAkB,EACpD,CAAC8H,EAAY1mB,EAAQ2mB,CAAS,EAAIX,GAASI,CAAS,EACpD,CAAClT,CAAM,EAAIoB,GAAU,OAAO,EAC5B6tG,EAAM,OAAO78E,EAAgB,IAAcA,EAAcpyB,GAAW,KAA4B,OAASA,EAAO,YAChHkvG,EAAM,OAAOD,GAAQ,SAAWA,EAAM,QAC5C,IAAIE,EAAY,KAUhB,GATI,OAAOnnF,GAAU,SACnBmnF,EAAyBrhI,EAAM,cAAc,MAAO,CAClD,IAAKohI,EACL,IAAKlnF,CACX,CAAK,EAEDmnF,EAAYnnF,EAGV,QAAQ,IAAI,WAAa,aAAc,CACzC,MAAMzzC,EAAUirB,GAAc,OAAO,EACrC,CAAC,CAAC,aAAc,uBAAuB,CAAC,EAAE,QAAQ,CAAC,CAAC8+D,EAAgBC,CAAO,IAAM,CAC/EhqF,EAAQ,WAAW,EAAE+pF,KAAkBn3F,GAAQm3F,EAAgBC,CAAO,CACxE,CAAC,CACH,CACA,OAAO/qD,EAAwB1lC,EAAM,cAAc,MAAO,OAAO,OAAO,CACtE,UAAWwF,GAAWwZ,EAAQ2mB,EAAWP,EAAWggB,EAAkB,CACpE,CAAC,GAAGhgB,CAAS,SAAS,EAAG8U,IAAU6mF,GACnC,CAAC,GAAG37F,CAAS,MAAM,EAAGhH,IAAc,KAC1C,EAAOghB,EAAWY,EAAemhB,EAAkB,KAAM+/D,GAAoB,KAAqC,OAASA,EAAgB,IAAI,EAC3I,MAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,GAAI9/D,EAAc,IAAI,EAAG/b,CAAY,EAAGr1C,GAAW,KAA4B,OAASA,EAAO,IAAI,EAAG0L,CAAK,CAC9K,EAAKk7B,CAAS,EAAgB52C,EAAM,cAAc,MAAO,CACrD,UAAWwF,GAAW,GAAG4/B,CAAS,SAAU+7B,EAAkB,MAAO+/D,GAAoB,KAAqC,OAASA,EAAgB,KAAK,EAC5J,MAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAID,CAAU,EAAG7/D,EAAc,KAAK,EAAGpxD,GAAW,KAA4B,OAASA,EAAO,KAAK,CACxJ,EAAKqxH,CAAS,EAAGF,GAAqBnhI,EAAM,cAAc,MAAO,CAC7D,UAAWwF,GAAW,GAAG4/B,CAAS,eAAgB+7B,EAAkB,YAAa+/D,GAAoB,KAAqC,OAASA,EAAgB,WAAW,EAC9K,MAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAI9/D,EAAc,WAAW,EAAGpxD,GAAW,KAA4B,OAASA,EAAO,WAAW,CACzI,EAAKmxH,CAAG,EAAI/6H,GAA0BpG,EAAM,cAAc,MAAO,CAC7D,UAAWwF,GAAW,GAAG4/B,CAAS,UAAW+7B,EAAkB,OAAQ+/D,GAAoB,KAAqC,OAASA,EAAgB,MAAM,EAC/J,MAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAI9/D,EAAc,MAAM,EAAGpxD,GAAW,KAA4B,OAASA,EAAO,MAAM,CAC/H,EAAK5J,CAAQ,CAAE,CAAC,CAChB,EACAviB,GAAM,wBAA0Bg9I,GAChCh9I,GAAM,uBAAyBk9I,GAC3B,QAAQ,IAAI,WAAa,eAC3Bl9I,GAAM,YAAc,SC9EtB,MAAMy9I,GAAqBjoI,GAAS,CAClC,KAAM,CACJ,cAAAk6B,CACJ,EAAMl6B,EACE,CACJ,aAAA8kC,CACJ,EAAM1kC,EAAAA,WAAWokC,EAAa,EACtBt2C,EAAS42C,EAAa,OAAO,EACnC,OAAQ5K,EAAa,CACnB,IAAK,QACL,IAAK,OACH,OAAoBvzB,EAAM,cAAcnc,GAAO,CAC7C,MAAOA,GAAM,sBACrB,CAAO,EACH,IAAK,SACL,IAAK,aACL,IAAK,WACL,IAAK,WACL,IAAK,WACH,OAAoBmc,EAAM,cAAcnc,GAAO,CAC7C,MAAOA,GAAM,uBACb,UAAW,GAAG0D,CAAM,QAC5B,CAAO,EAMH,IAAK,eAEH,OAAO,KACT,QAEE,OAAoByY,EAAM,cAAcnc,GAAO,IAAI,CACzD,CACA,EClCM09I,GAAa,CAAChwG,EAAWirB,EAASglF,EAAiB,SAAc,CACrE,IAAIt6I,EAAID,EACR,KAAM,CACJ,QAASw6I,EACT,CAAClwG,CAAS,EAAGmwG,CACjB,EAAM1hI,EAAM,WAAW69B,EAAa,EAC5B8jG,EAAa3hI,EAAM,WAAWunF,EAAc,EAC5Cq6C,EAAyBF,GAAoB,KAAqC,OAASA,EAAgB,QACjH,IAAI3gE,EACA,OAAOvkB,EAAY,IACrBukB,EAAgBvkB,EACPglF,IAAmB,GAC5BzgE,EAAgB,aAGhBA,GAAiB95E,GAAMC,EAAKy6I,GAA4DC,KAA4B,MAAQ16I,IAAO,OAASA,EAAKu6I,KAAmB,MAAQx6I,IAAO,OAASA,EAAK,WAEnM,MAAM46I,EAAmBpkG,GAAS,SAASsjC,CAAa,EACxD,MAAO,CAACA,EAAe8gE,CAAgB,CACzC,ECzBM5mB,GAAuBhiE,GAAiB,CAE5C,MAAMtS,EAAe,CACnB,SAAU,CACR,QAAS,GACT,QAAS,GACT,OAAQ,EACd,EACI,WAPiBsS,IAAkB,SAAW,SAAW,UAQzD,aAAc,EAClB,EACE,MAAO,CACL,WAAY,OAAO,OAAO,OAAO,OAAO,CAAA,EAAItS,CAAY,EAAG,CACzD,OAAQ,CAAC,KAAM,IAAI,EACnB,OAAQ,CAAC,EAAG,CAAC,CACnB,CAAK,EACD,YAAa,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIA,CAAY,EAAG,CAC1D,OAAQ,CAAC,KAAM,IAAI,EACnB,OAAQ,CAAC,EAAG,CAAC,CACnB,CAAK,EACD,QAAS,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIA,CAAY,EAAG,CACtD,OAAQ,CAAC,KAAM,IAAI,EACnB,OAAQ,CAAC,EAAG,EAAE,CACpB,CAAK,EACD,SAAU,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIA,CAAY,EAAG,CACvD,OAAQ,CAAC,KAAM,IAAI,EACnB,OAAQ,CAAC,EAAG,EAAE,CACpB,CAAK,CACL,CACA,EACA,SAAS+0E,GAAwBomB,EAAmB7oF,EAAe,CACjE,OAAO6oF,GAAqB7mB,GAAqBhiE,CAAa,CAChE,CC9BA,MAAM8oF,GAAezkH,GAAS,CAC5B,KAAM,CACJ,aAAA0kH,EACA,eAAAC,EACA,iBAAAC,EACA,cAAAC,CACJ,EAAM7kH,EACJ,MAAO,CACL,SAAU,WACV,QAAS,QACT,UAAW0kH,EACX,QAASG,EACT,MAAO7kH,EAAM,UACb,WAAY,SACZ,SAAU2kH,EACV,WAAYC,EACZ,UAAW,YACf,CACA,EACME,GAAiB9kH,GAAS,CAC9B,KAAM,CACJ,OAAA6wC,EACA,aAAAnnB,CACJ,EAAM1pB,EACE+kH,EAAgB,GAAGr7F,CAAY,QAC/Bs7F,EAAqB,IAAIn0E,CAAM,kBAAkBA,CAAM,yBACvDo0E,EAAsB,IAAIp0E,CAAM,mBAAmBA,CAAM,0BACzDq0E,EAAqB,IAAIr0E,CAAM,kBAAkBA,CAAM,yBACvDs0E,EAAuB,GAAGz7F,CAAY,uBACtC07F,EAAkB,GAAGL,CAAa,mBACxC,MAAO,CAAC,CACN,CAAC,GAAGr7F,CAAY,WAAW,EAAG,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIsC,GAAehsB,CAAK,CAAC,EAAG,CACpF,SAAU,WACV,IAAK,MACL,OAAQA,EAAM,YACd,UAAW,aACX,QAASA,EAAM,WACf,SAAU,SACV,SAAUA,EAAM,SAIhB,YAAa,UACb,gBAAiBA,EAAM,gBACvB,aAAcA,EAAM,eACpB,QAAS,OACT,UAAWA,EAAM,mBACjB,CAAC;AAAA,YACKglH,CAAkB,GAAGG,CAAoB;AAAA,YACzCF,CAAmB,GAAGE,CAAoB;AAAA,SAC7C,EAAG,CACJ,cAAenpE,EACvB,EACM,CAAC;AAAA,YACKgpE,CAAkB,GAAGG,CAAoB;AAAA,YACzCF,CAAmB,GAAGE,CAAoB;AAAA,YAC1CH,CAAkB,GAAGG,CAAoB;AAAA,YACzCF,CAAmB,GAAGE,CAAoB;AAAA,SAC7C,EAAG,CACJ,cAAejpE,EACvB,EACM,CAAC,GAAGgpE,CAAkB,GAAGC,CAAoB,YAAY,EAAG,CAC1D,cAAelpE,EACvB,EACM,CAAC;AAAA,YACKipE,CAAkB,GAAGC,CAAoB;AAAA,YACzCD,CAAkB,GAAGC,CAAoB;AAAA,SAC5C,EAAG,CACJ,cAAehpE,EACvB,EACM,WAAY,CACV,QAAS,MACjB,EACM,CAAC4oE,CAAa,EAAG,OAAO,OAAO,OAAO,OAAO,GAAIN,GAAazkH,CAAK,CAAC,EAAG,CACrE,OAAQ,UACR,WAAY,cAAcA,EAAM,kBAAkB,QAClD,aAAcA,EAAM,eAEpB,UAAW,CACT,MAAOA,EAAM,qBACb,SAAUA,EAAM,WAChB,OAAQ,SAClB,EAEQ,WAAY,CACV,QAAS,OACT,YAAa,OAAO,OAAO,CACzB,KAAM,MAClB,EAAa+rB,EAAY,EACf,UAAW,CACT,KAAM,OACN,QAAS,OACT,WAAY,QACxB,EACU,CAAC,gBAAgBg5F,CAAa,mBAAmB,EAAG,CAClD,gBAAiB/kH,EAAM,cACnC,EACU,CAAC,kBAAkB+kH,CAAa,mBAAmB,EAAG,CACpD,MAAO/kH,EAAM,oBACb,WAAYA,EAAM,yBAClB,gBAAiBA,EAAM,iBACvB,CAAC,GAAG+kH,CAAa,eAAe,EAAG,CACjC,MAAO/kH,EAAM,YAC3B,CACA,EACU,aAAc,CACZ,CAAC,IAAI+kH,CAAa,kBAAkB,EAAG,CACrC,gBAAiB/kH,EAAM,wBACrC,EACY,MAAOA,EAAM,kBACb,OAAQ,aACpB,EACU,YAAa,CACX,mBAAoBA,EAAM,KAAKA,EAAM,wBAAwB,EAAE,IAAI,CAAC,EAAE,MAAK,CACvF,CACA,EACQ,UAAW,OAAO,OAAO,OAAO,OAAO,GAAIykH,GAAazkH,CAAK,CAAC,EAAG,CAC/D,MAAOA,EAAM,iBACvB,CAAS,CACT,CAAO,EAED,CAAC,GAAGolH,CAAe,UAAUA,CAAe,GAAG,EAAG,CAChD,qBAAsB,EACtB,mBAAoB,EACpB,CAAC,OAAOA,CAAe,EAAE,EAAG,CAC1B,uBAAwB,EACxB,qBAAsB,CAChC,CACA,EAEM,QAAS,CACP,UAAW,KACnB,CACA,CAAK,CACL,EAEE3oE,GAAgBz8C,EAAO,UAAU,EAAGy8C,GAAgBz8C,EAAO,YAAY,EAAG+7C,GAAe/7C,EAAO,SAAS,EAAG+7C,GAAe/7C,EAAO,WAAW,CAAC,CAChJ,ECvHaqlH,GAA0BrlH,GAAS,CAC9C,KAAM,CACJ,yBAAAslH,EACA,WAAAC,EACA,UAAA7nG,EACA,2BAAA8nG,CACJ,EAAMxlH,EACEylH,EAAczlH,EAAM,IAAIA,EAAM,KAAKulH,CAAU,EAAE,IAAI7nG,CAAS,EAAE,MAAK,EAAI,CAAC,EACxEgoG,EAAmB1lH,EAAM,IAAIA,EAAM,KAAKylH,CAAW,EAAE,IAAID,CAA0B,EAAE,MAAK,EAAI,CAAC,EACrG,MAAO,CACL,YAAAC,EACA,iBAAAC,EACA,WAAY5kH,GAAKwkH,CAAwB,EACzC,eAAgBxkH,GAAKd,EAAM,KAAKslH,CAAwB,EAAE,IAAItlH,EAAM,KAAKA,EAAM,SAAS,EAAE,IAAI,CAAC,CAAC,EAAE,MAAK,CAAE,CAC7G,CACA,EACM2lH,GAAqB3lH,GAAS,CAClC,KAAM,CACJ,yBAAAslH,EACA,aAAAM,EACA,UAAAloG,CACJ,EAAM1d,EAEJ,OADuBA,EAAM,KAAK4lH,CAAY,EAAE,IAAIN,CAAwB,EAAE,IAAI,CAAC,EAAE,IAAI5nG,CAAS,EAAE,MAAK,CAE3G,EAKamoG,GAAmB7lH,GAAS,CACvC,KAAM,CACJ,aAAA0pB,EACA,QAAAsc,EACA,eAAAymC,EACA,mBAAA/tB,EACA,UAAAonE,EACA,0BAAAC,EACA,gCAAAC,EACA,UAAA7/E,EACA,eAAAC,EACA,2BAAAo/E,CACJ,EAAMxlH,EAEJ,MAAO,CAML,CAP8B,GAAG0pB,CAAY,qBAOrB,EAAG,CACzB,SAAU,WACV,QAAS,OACT,KAAM,OACN,SAAU,OACV,SAAU,OACV,SAAU,CACR,KAAM,OACN,UAAW,SAEX,SAAU,mBACV,QAAS,aACjB,EAEM,CAAC,GAAGA,CAAY,iBAAiB,EAAG,CAClC,QAAS,OACT,UAAW,SACX,KAAM,OACN,UAAW,aACX,SAAU,OACV,YAAa87F,EACb,aAAc/4C,EACd,OAAQ,UACR,WAAY,aAAa/tB,CAAkB,iBAAiBA,CAAkB,YAAYA,CAAkB,GAC5G,gBAAiB1+C,EAAM,KAAKwlH,CAA0B,EAAE,IAAI,CAAC,EAAE,MAAK,EACpE,mBAAoBM,EACpB,iBAAkB9lH,EAAM,KAAK8lH,CAAS,EAAE,IAAI,CAAC,EAAE,MAAK,EACpD,CAAC,GAAGp8F,CAAY,YAAY,EAAG,CAC7B,MAAOq8F,EACP,YAAaC,EACb,OAAQ,aAClB,EAEQ,YAAa,CACX,QAAS,eACT,gBAAiBhmH,EAAM,KAAK8lH,CAAS,EAAE,IAAI,CAAC,EAAE,MAAK,EACnD,SAAU,SACV,WAAY,MAEZ,aAAc,UACxB,EACQ,WAAY,OAAO,OAAO,OAAO,OAAO,CAAA,EAAI55F,GAAS,CAAE,EAAG,CACxD,QAAS,cACT,WAAY,SACZ,MAAOia,EACP,WAAY,OACZ,SAAU,GACV,WAAY,UACZ,OAAQ,UACR,CAAC,KAAKH,CAAO,EAAE,EAAG,CAChB,cAAe,QAC3B,EACU,UAAW,CACT,MAAOI,CACnB,CACA,CAAS,CACT,CACA,CACA,CACA,EACM6/E,GAAoB,CAACjmH,EAAOvxB,IAAW,CAC3C,KAAM,CACJ,aAAAi7C,EACA,2BAAA87F,CACJ,EAAMxlH,EACEkmH,EAA0B,GAAGx8F,CAAY,sBACzCy8F,EAAmBnmH,EAAM,yBACzBomH,EAAiBT,GAAmB3lH,CAAK,EACzCqgB,EAAY5xC,EAAS,GAAGi7C,CAAY,IAAIj7C,CAAM,GAAK,GACnD43I,EAAuBhB,GAAwBrlH,CAAK,EAC1D,MAAO,CACL,CAAC,GAAG0pB,CAAY,YAAYrJ,CAAS,EAAE,EAAG,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIwlG,GAAiB7lH,CAAK,CAAC,EAAG,CAElG,CAAC,GAAG0pB,CAAY,WAAW,EAAG,CAC5B,QAAS,OACT,WAAY,SACZ,MAAO,OACP,OAAQ,OAER,cAAe28F,EAAqB,YACpC,aAAcA,EAAqB,iBACnC,aAAcrmH,EAAM,aACpB,CAAC,GAAG0pB,CAAY,YAAY,EAAG,CAC7B,WAAY1pB,EAAM,2BAClB,OAAQ,aAClB,EACQ,UAAW,CACT,QAAS,eACT,MAAO,EACP,OAAQ,GAAGc,GAAK0kH,CAA0B,CAAC,KAC3C,WAAY1kH,GAAKqlH,CAAgB,EACjC,WAAY,SACZ,QAAS,QACnB,CACA,EAEM,CAAC,GAAGz8F,CAAY,iBAAiB,EAAG,CAClC,OAAQ28F,EAAqB,WAC7B,WAAYvlH,GAAKulH,EAAqB,cAAc,CAC5D,EAEM,CAAC,GAAG38F,CAAY,iBAAiB,EAAG,CAClC,UAAW,aACX,UAAW,CACT,WAAY5oB,GAAKqlH,CAAgB,EACjC,YAAaX,CACvB,CACA,EAEM,CAAC,GAAG97F,CAAY,SAAS,EAAG,CAC1B,kBAAmB1pB,EAAM,KAAKA,EAAM,0BAA0B,EAAE,IAAIqmH,EAAqB,WAAW,EAAE,MAAK,CACnH,EACM,CAAC,GAAGH,CAAuB,WAAWA,CAAuB;AAAA,UACzDx8F,CAAY,aAAaA,CAAY;AAAA,OACxC,EAAG,CACF,CAAC,GAAGA,CAAY,mBAAmB,EAAG,CACpC,kBAAmB,CAC7B,EACQ,CAAC,GAAGA,CAAY,wBAAwB,EAAG,CACzC,iBAAkB,CAC5B,CACA,EAGM,CAAC,GAAGw8F,CAAuB,cAAc,EAAG,CAC1C,UAAWG,EAAqB,WAChC,YAAab,CACrB,EACM,CAAC,GAAG97F,CAAY,mBAAmB,EAAG,CACpC,QAAS,cACT,SAAU,WACV,SAAU,OACV,kBAAmB1pB,EAAM,KAAKA,EAAM,0BAA0B,EAAE,IAAIomH,CAAc,EAAE,MAAK,EACxF,qDAGG,CACF,OAAQD,EACR,WAAYnmH,EAAM,WAClB,WAAYc,GAAKqlH,CAAgB,EACjC,WAAY,OAAOnmH,EAAM,kBAAkB,EACrD,EACQ,UAAW,CACT,MAAO,OACP,SAAU,GACpB,EACQ,WAAY,CACV,SAAU,WACV,IAAK,EACL,iBAAkB,EAClB,eAAgB,OAChB,OAAQ,IACR,WAAY,MAEZ,WAAY,QACtB,CACA,EAEM,CAAC,GAAG0pB,CAAY,wBAAwB,EAAG,CACzC,SAAU,WACV,IAAK,MACL,iBAAkB1pB,EAAM,KAAKA,EAAM,0BAA0B,EAAE,IAAIqmH,EAAqB,WAAW,EAAE,MAAK,EAC1G,eAAgBrmH,EAAM,2BACtB,UAAW,mBACX,WAAY,OAAOA,EAAM,kBAAkB,EACnD,CACA,CAAK,CACL,CACA,EACA,SAASsmH,GAAatmH,EAAOvxB,EAAQ,CACnC,KAAM,CACJ,aAAAi7C,CACJ,EAAM1pB,EACEqgB,EAAY5xC,EAAS,GAAGi7C,CAAY,IAAIj7C,CAAM,GAAK,GACnD83I,EAAW,CACf,CAAC,GAAG78F,CAAY,YAAYrJ,CAAS,EAAE,EAAG,CACxC,SAAUrgB,EAAM,SAEhB,CAAC,GAAG0pB,CAAY,WAAW,EAAG,CAC5B,CAAC,GAAGA,CAAY,eAAe,EAAG,CAChC,OAAQ,MAClB,CACA,EACM,CAAC;AAAA,WACIA,CAAY,eAAeA,CAAY;AAAA,WACvCA,CAAY,gBAAgBA,CAAY;AAAA,OAC5C,EAAG,CACF,iBAAkB1pB,EAAM,KAAKA,EAAM,YAAY,EAAE,IAAIA,EAAM,wBAAwB,EAAE,MAAK,CAClG,CACA,CACA,EACE,MAAO,CAACimH,GAAkBjmH,EAAOvxB,CAAM,EAAG83I,CAAQ,CACpD,CACA,MAAMC,GAAmBxmH,GAAS,CAChC,KAAM,CACJ,aAAA0pB,CACJ,EAAM1pB,EACEghD,EAAa/6B,GAAWjmB,EAAO,CACnC,aAAcA,EAAM,gBACpB,yBAA0BA,EAAM,qBAChC,aAAcA,EAAM,eACpB,eAAgBA,EAAM,cAC1B,CAAG,EACKkhD,EAAaj7B,GAAWjmB,EAAO,CACnC,SAAUA,EAAM,WAChB,aAAcA,EAAM,gBACpB,yBAA0BA,EAAM,qBAChC,aAAcA,EAAM,eACpB,eAAgBA,EAAM,YAC1B,CAAG,EACD,MAAO,CAACsmH,GAAatmH,CAAK,EAE1BsmH,GAAatlE,EAAY,IAAI,EAE7B,CACE,CAAC,GAAGt3B,CAAY,YAAYA,CAAY,KAAK,EAAG,CAC9C,CAAC,GAAGA,CAAY,wBAAwB,EAAG,CACzC,YAAa1pB,EAAM,KAAKA,EAAM,0BAA0B,EAAE,IAAIA,EAAM,SAAS,EAAE,MAAK,CAC5F,EAEM,CAAC,GAAG0pB,CAAY,mBAAmB,EAAG,CACpC,kBAAmB,CAC3B,CACA,CACA,EAEE48F,GAAaplE,EAAY,IAAI,CAAC,CAChC,ECrSA,SAASolE,GAAatmH,EAAOvxB,EAAQ,CACnC,KAAM,CACJ,aAAAi7C,EACA,2BAAA+8F,EACA,aAAAhpG,CACJ,EAAMzd,EACE0mH,EAA4B1mH,EAAM,KAAKA,EAAM,aAAa,EAAE,IAAIA,EAAM,KAAKA,EAAM,SAAS,EAAE,IAAI,CAAC,CAAC,EAAE,MAAK,EACzGqgB,EAAY5xC,EAAS,GAAGi7C,CAAY,IAAIj7C,CAAM,GAAK,GACzD,MAAO,CACL,CAAC,GAAGi7C,CAAY,UAAUrJ,CAAS,EAAE,EAAG,CACtC,SAAUrgB,EAAM,SAChB,OAAQA,EAAM,cAEd,CAAC,GAAG0pB,CAAY,WAAW,EAAG,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIsC,GAAehsB,EAAO,EAAI,CAAC,EAAG,CAC1F,QAAS,OACT,aAAAyd,EACA,KAAM,WACN,CAAC,GAAGiM,CAAY,uBAAuB,EAAG,CACxC,WAAY5oB,GAAK4lH,CAAyB,CACpD,EACQ,CAAC,GAAGh9F,CAAY,mBAAmB,EAAG,CACpC,SAAU,WACV,MAAO,EACP,MAAO,OACP,UAAW,CACT,MAAO,OACP,iBAAkB,WAC9B,CACA,EACQ,CAAC;AAAA,YACGA,CAAY;AAAA,YACZA,CAAY;AAAA,SACf,EAAG,CACF,QAAS,QACT,QAAS,EACT,WAAY5oB,GAAK4lH,CAAyB,EAC1C,WAAY,OAAO1mH,EAAM,kBAAkB,kBAC3C,UAAW,QACrB,EACQ,CAAC,GAAG0pB,CAAY,wBAAwB,EAAG,CACzC,WAAY,OACZ,cAAe,MACzB,EAEQ,CAAC,CAAC,UACF,GAAGA,CAAY,8BACf,GAAGA,CAAY,oCAAoC,EAAE,KAAK,GAAG,CAAC,EAAG,CAC/D,QAAS,eACT,MAAO,EACP,WAAY,SACZ,QAAS,QACnB,CACA,CAAO,EACD,CAAC;AAAA,WACIA,CAAY,eAAeA,CAAY;AAAA,WACvCA,CAAY,eAAeA,CAAY;AAAA,WACvCA,CAAY,eAAeA,CAAY;AAAA,OAC3C,EAAG,CACF,iBAAkB1pB,EAAM,yBAChC,EAEM,CAAC,IAAI0pB,CAAY,SAASA,CAAY,iBAAiB,EAAG,CACxD,MAAO1pB,EAAM,oBACrB,EAIM,CAAC,SAAS0pB,CAAY,mBAAmB,EAAG,CAC1C,CAAC,GAAGA,CAAY,WAAW,EAAG,CAC5B,MAAO,OACP,OAAQ,OACR,WAAY,SACZ,QAAS,KAAK5oB,GAAK2lH,CAA0B,CAAC,GAC9C,CAAC,GAAG/8F,CAAY,yBAAyB,EAAG,CAC1C,OAAQg9F,EACR,SAAU1mH,EAAM,QAC5B,EACU,UAAW,CACT,WAAYc,GAAK4lH,CAAyB,CACtD,CACA,CACA,EACM,CAAC,IAAIh9F,CAAY,kBAAkB,EAAG,CACpC,CAAC,GAAGA,CAAY,WAAW,EAAG,CAC5B,UAAW,CACT,QAAS,MACrB,EACU,CAAC,GAAGA,CAAY,mBAAmB,EAAG,CACpC,SAAU,SACV,MAAO,MACnB,EACU,CAAC,GAAGA,CAAY,wBAAwB,EAAG,CACzC,SAAU,WACV,iBAAkB,EAClB,eAAgB,EAChB,QAAS,KAAK5oB,GAAK2lH,CAA0B,CAAC,GAC9C,UAAW,CACT,QAAS,MACvB,CACA,CACA,CACA,CACA,CACA,CACA,CACe,SAAS3B,GAAe9kH,EAAO,CAC5C,KAAM,CACJ,aAAA0pB,CACJ,EAAM1pB,EACE2mH,EAA2B3mH,EAAM,KAAKA,EAAM,0BAA0B,EAAE,IAAIA,EAAM,SAAS,EAAE,MAAK,EACxG,MAAO,CAACsmH,GAAatmH,CAAK,EAG1BsmH,GAAargG,GAAWjmB,EAAO,CAC7B,cAAeA,EAAM,gBACrB,aAAcA,EAAM,cACxB,CAAG,EAAG,IAAI,EAER,CACE,CAAC,GAAG0pB,CAAY,UAAUA,CAAY,KAAK,EAAG,CAC5C,CAAC,SAASA,CAAY,mBAAmB,EAAG,CAC1C,CAAC,GAAGA,CAAY,WAAW,EAAG,CAC5B,QAAS,KAAK5oB,GAAK6lH,CAAwB,CAAC,EACtD,EAEQ,CAAC,IAAIj9F,CAAY,eAAeA,CAAY,mBAAmB,EAAG,CAChE,eAAgB1pB,EAAM,KAAK2mH,CAAwB,EAAE,IAAI3mH,EAAM,KAAKA,EAAM,QAAQ,EAAE,IAAI,GAAG,CAAC,EAAE,MAAK,CAC7G,EACQ,CAAC;AAAA,eACM0pB,CAAY,eAAeA,CAAY;AAAA,eACvCA,CAAY,eAAeA,CAAY;AAAA,WAC3C,EAAG,CACJ,iBAAkB1pB,EAAM,KAAKA,EAAM,QAAQ,EAAE,IAAI,GAAG,EAAE,MAAK,CACrE,CACA,CACA,CACA,EAGEsmH,GAAargG,GAAWjmB,EAAO,CAC7B,cAAeA,EAAM,mBACrB,SAAUA,EAAM,WAChB,aAAcA,EAAM,cACxB,CAAG,EAAG,IAAI,CAAC,CACX,CCnJO,MAAM69C,GAAwB79C,GAAS,CAC5C,KAAM,CACJ,SAAA8d,EACA,WAAAc,EACA,UAAAlB,EACA,cAAAE,EACA,gBAAA2uD,EACA,gBAAAD,EACA,WAAAi5C,EACA,yBAAAqB,EACA,gBAAAC,EACA,UAAA/hF,EACA,iBAAAgiF,EACA,oBAAAC,EACA,mBAAAC,EACA,iBAAAjE,EACA,mBAAAkE,EACA,yBAAAC,EACA,kBAAAC,EACA,kBAAA/kE,EACA,aAAArU,EACA,eAAAq5E,CACJ,EAAMpnH,EAIEqnH,EAAgB9B,EAAa,EAC7B+B,EAAe5pG,EAAY,EAC3B6pG,EAAqB,KAAK,IAAI3pG,EAAgBypG,EAAezpG,EAAgB0pG,CAAY,EACzFE,EAAuB,KAAK,IAAIj7C,EAAkB86C,EAAe96C,EAAkB+6C,CAAY,EAC/FG,EAAuB,KAAK,IAAIn7C,EAAkB+6C,EAAe/6C,EAAkBg7C,CAAY,EAGrG,MAAO,CACL,2BAFiC,KAAK,MAAM/B,EAAa,CAAC,EAG1D,YAAasB,EAAkB,GAC/B,oBAAqB/hF,EACrB,yBAA0BgiF,EAC1B,iBAAkBC,EAClB,eAAgBC,EAChB,cAAe,IAAIppG,EAAgBE,EAAWc,GAAc,CAAC,MAAMgoG,CAAwB,KAC3F,eAAgB9oG,EAChB,iBAAkBc,EAClB,aAAchB,EACd,WAAYmlG,EACZ,QAASA,EACT,mBAAoBz2C,EACpB,eAAgB26C,EAChB,wBAAyB,cACzB,mBAAAM,EACA,qBAAAC,EACA,qBAAAC,EACA,2BAA4BP,EAC5B,0BAA2BC,EAC3B,gCAAiC,cACjC,0BAA2B,KAAK,KAAKnnH,EAAM,SAAW,IAAI,EAC1D,iBAAkBoiD,EAClB,kBAAmBrU,EACnB,mBAAoBq5E,EACpB,mBAAoB7B,CACxB,CACA,ECzDMmC,GAAuB,CAAC1nH,EAAOj2B,IAAY,CAC/C,KAAM,CACJ,aAAA2/C,EACA,OAAAmnB,EACA,oBAAA82E,CACJ,EAAM3nH,EACJ,MAAO,CACL,CAAC,SAAS0pB,CAAY,qBAAqBA,CAAY,WAAW,EAAG,CACnE,OAAQ,GAAG5oB,GAAKd,EAAM,SAAS,CAAC,IAAIA,EAAM,QAAQ,IAAIj2B,EAAQ,WAAW,GACzE,WAAYi2B,EAAM,UACxB,EACI,CAAC,SAAS0pB,CAAY,kBAAkBA,CAAY,yBAAyBmnB,CAAM,2BAA2B,EAAG,CAC/G,CAAC,WAAWnnB,CAAY,WAAW,EAAG,CACpC,YAAa3/C,EAAQ,gBAC7B,EACM,CAAC,GAAG2/C,CAAY,aAAaA,CAAY,WAAW,EAAG,CACrD,YAAa3/C,EAAQ,kBACrB,UAAW,SAAS+2B,GAAK6mH,CAAmB,CAAC,IAAI59I,EAAQ,kBAAkB,GAC3E,QAAS,CACjB,EACM,CAAC,GAAG2/C,CAAY,SAAS,EAAG,CAC1B,MAAO3/C,EAAQ,KACvB,CACA,CACA,CACA,EACM69I,GAAyB,CAAC5nH,EAAOj2B,KAAa,CAClD,CAAC,IAAIi2B,EAAM,YAAY,WAAWj2B,EAAQ,MAAM,EAAE,EAAG,OAAO,OAAO,CAAA,EAAI29I,GAAqB1nH,EAAOj2B,CAAO,CAAC,CAC7G,GACM89I,GAAmB7nH,IAAU,CACjC,aAAc,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,GAAI0nH,GAAqB1nH,EAAO,CACpG,YAAaA,EAAM,YACnB,iBAAkBA,EAAM,iBACxB,kBAAmBA,EAAM,kBACzB,mBAAoBA,EAAM,mBAC1B,MAAOA,EAAM,SACjB,CAAG,CAAC,EAAG4nH,GAAuB5nH,EAAO,CACjC,OAAQ,QACR,YAAaA,EAAM,WACnB,iBAAkBA,EAAM,gBACxB,kBAAmBA,EAAM,WACzB,mBAAoBA,EAAM,kBAC1B,MAAOA,EAAM,UACjB,CAAG,CAAC,EAAG4nH,GAAuB5nH,EAAO,CACjC,OAAQ,UACR,YAAaA,EAAM,aACnB,iBAAkBA,EAAM,kBACxB,kBAAmBA,EAAM,aACzB,mBAAoBA,EAAM,oBAC1B,MAAOA,EAAM,YACjB,CAAG,CAAC,EAAG,CACH,CAAC,IAAIA,EAAM,YAAY,WAAW,EAAG,CACnC,CAAC,SAASA,EAAM,YAAY,qBAAqBA,EAAM,YAAY,WAAW,EAAG,CAC/E,WAAYA,EAAM,yBAClB,MAAOA,EAAM,iBACrB,CACA,EACI,CAAC,IAAIA,EAAM,YAAY,aAAaA,EAAM,YAAY,iBAAiB,EAAG,CACxE,WAAYA,EAAM,eAClB,OAAQ,GAAGc,GAAKd,EAAM,SAAS,CAAC,IAAIA,EAAM,QAAQ,IAAIA,EAAM,uBAAuB,EACzF,CACA,CAAG,CACH,GAIM8nH,GAAqB,CAAC9nH,EAAOj2B,IAAY,CAC7C,KAAM,CACJ,aAAA2/C,EACA,OAAAmnB,CACJ,EAAM7wC,EACJ,MAAO,CACL,CAAC,SAAS0pB,CAAY,qBAAqBA,CAAY,WAAW,EAAG,CACnE,WAAY3/C,EAAQ,GACpB,OAAQ,GAAG+2B,GAAKd,EAAM,SAAS,CAAC,IAAIA,EAAM,QAAQ,eAClD,MAAOj2B,EAAQ,KACrB,EACI,CAAC,SAAS2/C,CAAY,kBAAkBA,CAAY,yBAAyBmnB,CAAM,2BAA2B,EAAG,CAC/G,CAAC,WAAWnnB,CAAY,WAAW,EAAG,CACpC,WAAY3/C,EAAQ,OAC5B,EACM,CAAC,GAAG2/C,CAAY,aAAaA,CAAY,WAAW,EAAG,CACrD,WAAY1pB,EAAM,WAClB,YAAaj2B,EAAQ,kBACrB,QAAS,CACjB,CACA,CACA,CACA,EACMg+I,GAAuB,CAAC/nH,EAAOj2B,KAAa,CAChD,CAAC,IAAIi2B,EAAM,YAAY,WAAWj2B,EAAQ,MAAM,EAAE,EAAG,OAAO,OAAO,CAAA,EAAI+9I,GAAmB9nH,EAAOj2B,CAAO,CAAC,CAC3G,GACMi+I,GAAiBhoH,IAAU,CAC/B,WAAY,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,GAAI8nH,GAAmB9nH,EAAO,CAChG,GAAIA,EAAM,kBACV,QAASA,EAAM,mBACf,kBAAmBA,EAAM,kBACzB,MAAOA,EAAM,SACjB,CAAG,CAAC,EAAG+nH,GAAqB/nH,EAAO,CAC/B,OAAQ,QACR,GAAIA,EAAM,aACV,QAASA,EAAM,kBACf,kBAAmBA,EAAM,WACzB,MAAOA,EAAM,UACjB,CAAG,CAAC,EAAG+nH,GAAqB/nH,EAAO,CAC/B,OAAQ,UACR,GAAIA,EAAM,eACV,QAASA,EAAM,oBACf,kBAAmBA,EAAM,aACzB,MAAOA,EAAM,YACjB,CAAG,CAAC,EAAG,CACH,CAAC,IAAIA,EAAM,YAAY,WAAW,EAAG,CACnC,CAAC,SAASA,EAAM,YAAY,qBAAqBA,EAAM,YAAY,WAAW,EAAG,CAC/E,YAAaA,EAAM,YACnB,WAAYA,EAAM,yBAClB,MAAOA,EAAM,iBACrB,CACA,EACI,CAAC,IAAIA,EAAM,YAAY,aAAaA,EAAM,YAAY,iBAAiB,EAAG,CACxE,WAAYA,EAAM,iBAClB,OAAQ,GAAGc,GAAKd,EAAM,SAAS,CAAC,IAAIA,EAAM,QAAQ,IAAIA,EAAM,UAAU,EAC5E,CACA,CAAG,CACH,GAIMioH,GAAqBjoH,IAAU,CACnC,eAAgB,CACd,CAAC,GAAGA,EAAM,YAAY,WAAW,EAAG,CAClC,WAAY,cACZ,OAAQ,GAAGc,GAAKd,EAAM,SAAS,CAAC,IAAIA,EAAM,QAAQ,cACxD,EACI,CAAC,IAAIA,EAAM,YAAY,WAAW,EAAG,CACnC,CAAC,SAASA,EAAM,YAAY,qBAAqBA,EAAM,YAAY,WAAW,EAAG,CAC/E,MAAOA,EAAM,iBACrB,CACA,EACI,CAAC,IAAIA,EAAM,YAAY,aAAaA,EAAM,YAAY,iBAAiB,EAAG,CACxE,WAAYA,EAAM,eAClB,OAAQ,GAAGc,GAAKd,EAAM,SAAS,CAAC,IAAIA,EAAM,QAAQ,IAAIA,EAAM,uBAAuB,EACzF,EAEI,CAAC,IAAIA,EAAM,YAAY,eAAe,EAAG,CACvC,CAAC,GAAGA,EAAM,YAAY,YAAYA,EAAM,YAAY,iBAAiB,EAAG,CACtE,MAAOA,EAAM,UACrB,CACA,EACI,CAAC,IAAIA,EAAM,YAAY,iBAAiB,EAAG,CACzC,CAAC,GAAGA,EAAM,YAAY,YAAYA,EAAM,YAAY,iBAAiB,EAAG,CACtE,MAAOA,EAAM,YACrB,CACA,CACA,CACA,GAIMkoH,GAAyB,CAACloH,EAAOj2B,IAAY,CACjD,KAAM,CACJ,aAAA2/C,EACA,OAAAmnB,CACJ,EAAM7wC,EACJ,MAAO,CACL,CAAC,SAAS0pB,CAAY,qBAAqBA,CAAY,WAAW,EAAG,CACnE,YAAa,OAAO5oB,GAAKd,EAAM,SAAS,CAAC,KACzC,YAAa,aAAaA,EAAM,QAAQ,QACxC,YAAaj2B,EAAQ,YACrB,WAAYi2B,EAAM,WAClB,aAAc,CACpB,EACI,CAAC,SAAS0pB,CAAY,kBAAkBA,CAAY,yBAAyBmnB,CAAM,2BAA2B,EAAG,CAC/G,CAAC,WAAWnnB,CAAY,WAAW,EAAG,CACpC,YAAa3/C,EAAQ,gBAC7B,EACM,CAAC,GAAG2/C,CAAY,aAAaA,CAAY,WAAW,EAAG,CACrD,YAAa3/C,EAAQ,kBACrB,QAAS,CACjB,EACM,CAAC,GAAG2/C,CAAY,SAAS,EAAG,CAC1B,MAAO3/C,EAAQ,KACvB,CACA,CACA,CACA,EACMo+I,GAA2B,CAACnoH,EAAOj2B,KAAa,CACpD,CAAC,IAAIi2B,EAAM,YAAY,WAAWj2B,EAAQ,MAAM,EAAE,EAAG,OAAO,OAAO,CAAA,EAAIm+I,GAAuBloH,EAAOj2B,CAAO,CAAC,CAC/G,GACMq+I,GAAqBpoH,IAAU,CACnC,eAAgB,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,GAAIkoH,GAAuBloH,EAAO,CACxG,YAAaA,EAAM,YACnB,iBAAkBA,EAAM,iBACxB,kBAAmBA,EAAM,kBACzB,mBAAoBA,EAAM,mBAC1B,MAAOA,EAAM,SACjB,CAAG,CAAC,EAAGmoH,GAAyBnoH,EAAO,CACnC,OAAQ,QACR,YAAaA,EAAM,WACnB,iBAAkBA,EAAM,gBACxB,kBAAmBA,EAAM,WACzB,mBAAoBA,EAAM,kBAC1B,MAAOA,EAAM,UACjB,CAAG,CAAC,EAAGmoH,GAAyBnoH,EAAO,CACnC,OAAQ,UACR,YAAaA,EAAM,aACnB,iBAAkBA,EAAM,kBACxB,kBAAmBA,EAAM,aACzB,mBAAoBA,EAAM,oBAC1B,MAAOA,EAAM,YACjB,CAAG,CAAC,EAAG,CACH,CAAC,IAAIA,EAAM,YAAY,WAAW,EAAG,CACnC,CAAC,SAASA,EAAM,YAAY,qBAAqBA,EAAM,YAAY,WAAW,EAAG,CAC/E,MAAOA,EAAM,iBACrB,CACA,EACI,CAAC,IAAIA,EAAM,YAAY,aAAaA,EAAM,YAAY,iBAAiB,EAAG,CACxE,WAAYA,EAAM,eAClB,OAAQ,GAAGc,GAAKd,EAAM,SAAS,CAAC,IAAIA,EAAM,QAAQ,IAAIA,EAAM,uBAAuB,EACzF,CACA,CAAG,CACH,GACMqoH,GAAmBroH,IAAU,CACjC,CAACA,EAAM,YAAY,EAAG,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAI6nH,GAAiB7nH,CAAK,CAAC,EAAGgoH,GAAehoH,CAAK,CAAC,EAAGioH,GAAmBjoH,CAAK,CAAC,EAAGooH,GAAmBpoH,CAAK,CAAC,CAC3L,GC1NMsoH,GAAmBtoH,GAAS,CAChC,KAAM,CACJ,aAAA0pB,CACJ,EAAM1pB,EACJ,MAAO,CACL,SAAU,WACV,WAAY,OAAOA,EAAM,iBAAiB,IAAIA,EAAM,eAAe,GACnE,MAAO,CACL,OAAQ,SACd,EACI,CAAC,GAAG0pB,CAAY,eAAe,EAAG,CAChC,OAAQ,OACR,MAAO,CACL,OAAQ,OACR,MAAO,UACP,OAAQ,MAChB,CACA,EACI,CAAC,GAAGA,CAAY,YAAY,EAAG,CAC7B,OAAQ,cACR,MAAO,CACL,OAAQ,aAChB,CACA,CACA,CACA,EAGM6+F,GAAmCvoH,GAAS,CAChD,KAAM,CACJ,aAAA0pB,CACJ,EAAM1pB,EACJ,MAAO,CACL,CAAC,GAAG0pB,CAAY,yBAAyB,EAAG,CAC1C,OAAQ,EACR,QAAS,EACT,WAAY,cACZ,OAAQ,OACR,QAAS,OACT,WAAY,OACZ,WAAY,UACZ,kCAAmC,CACjC,QAAS,OACT,WAAY,MACpB,CACA,CACA,CACA,EAEM8a,GAAexkC,GAAS,CAC5B,KAAM,CACJ,OAAA6wC,EACA,aAAAnnB,EACA,2BAAA+8F,EACA,QAAAzgF,CACJ,EAAMhmC,EACEwoH,EAAsB,CAC1B,CAAC,GAAG9+F,CAAY,QAAQ,EAAG,CACzB,QAAS,EACT,WAAY1pB,EAAM,YAClB,aAAc,KACpB,CACA,EACE,MAAO,CACL,CAAC0pB,CAAY,EAAG,OAAO,OAAO,OAAO,OAAO,GAAIsC,GAAehsB,CAAK,CAAC,EAAG,CACtE,SAAU,WACV,QAAS,cACT,OAAQ,UACR,CAAC,SAAS0pB,CAAY,qBAAqBA,CAAY,WAAW,EAAG,OAAO,OAAO,OAAO,OAAO,CAAA,EAAI4+F,GAAiBtoH,CAAK,CAAC,EAAGuoH,GAAiCvoH,CAAK,CAAC,EAEtK,CAAC,GAAG0pB,CAAY,iBAAiB,EAAG,OAAO,OAAO,OAAO,OAAO,CAC9D,KAAM,EACN,WAAY,SACZ,SAAU,WACV,WAAY,MACpB,EAASqC,EAAY,EAAG,CAEhB,CAAC,KAAK8kB,CAAM,aAAa,EAAG,CAC1B,QAAS,QACnB,CACA,CAAO,EAED,CAAC,GAAGnnB,CAAY,wBAAwB,EAAG,OAAO,OAAO,OAAO,OAAO,GAAIqC,EAAY,EAAG,CACxF,KAAM,EACN,MAAO/rB,EAAM,qBACb,cAAe,MACvB,CAAO,EAED,CAAC,GAAG0pB,CAAY,QAAQ,EAAG,OAAO,OAAO,OAAO,OAAO,GAAIwC,GAAS,CAAE,EAAG,CACvE,SAAU,WACV,IAAK,MACL,iBAAkB,OAClB,eAAgBu6F,EAChB,OAAQzmH,EAAM,aACd,UAAWA,EAAM,KAAKA,EAAM,YAAY,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,MAAK,EAC9D,MAAOA,EAAM,oBACb,SAAUA,EAAM,aAChB,WAAY,EACZ,UAAW,SACX,cAAe,OACf,QAAS,OACT,WAAY,SACZ,WAAY,WAAWA,EAAM,kBAAkB,QAC/C,CAACgmC,CAAO,EAAG,CACT,cAAe,MACf,WAAY,aAAahmC,EAAM,kBAAkB,GACjD,QAAS,CACP,cAAe,KAC3B,EACU,CAAC,SAAS0pB,CAAY,UAAU,EAAG,CACjC,cAAe,MAC3B,CACA,EACQ,CAAC,GAAGA,CAAY,aAAa,EAAG,CAC9B,OAAQ,aAClB,EACQ,uBAAwB,CACtB,gBAAiB,CAC3B,CACA,CAAO,EAED,CAAC,GAAGA,CAAY,iBAAiB,EAAG,CAClC,QAAS,OACT,MAAO,OACP,SAAU,WACV,SAAU,EAEV,UAAW,CACT,QAAS,SACT,MAAO,EACP,SAAU,QACpB,CACA,EAEM,CAAC,GAAGA,CAAY,SAAS,EAAG,CAC1B,KAAM,OACN,gBAAiB1pB,EAAM,kBAC/B,EAEM,CAAC,GAAG0pB,CAAY,QAAQ,EAAG,CACzB,SAAU,WACV,IAAK,MACL,iBAAkB,OAClB,eAAgB+8F,EAChB,OAAQ,EACR,QAAS,eACT,MAAOzmH,EAAM,aACb,OAAQA,EAAM,aACd,UAAWA,EAAM,KAAKA,EAAM,YAAY,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,MAAK,EAC9D,MAAOA,EAAM,oBACb,SAAUA,EAAM,aAChB,UAAW,SACX,WAAY,EACZ,UAAW,SACX,cAAe,OACf,OAAQ,UACR,QAAS,EACT,WAAY,SAASA,EAAM,iBAAiB,kBAAkBA,EAAM,kBAAkB,QACtF,cAAe,OACf,WAAY,CACV,QAAS,OACnB,EACQ,UAAW,CACT,MAAOA,EAAM,SACvB,CACA,EACM,qBAAsBwoH,EACtB,UAAWA,CACjB,CAAK,EAED,CAAC,GAAG9+F,CAAY,SAAS,EAAG,CAC1B,8CAA+C,CAC7C,CAAC,IAAIA,CAAY,eAAe,EAAG,CACjC,CAAC,GAAGA,CAAY,QAAQ,EAAG,CACzB,eAAgB1pB,EAAM,KAAKymH,CAA0B,EAAE,IAAIzmH,EAAM,QAAQ,EAAE,IAAIA,EAAM,SAAS,EAAE,MAAK,CACjH,CACA,CACA,CACA,CACA,CACA,EAEMyoH,GAAiBzoH,GAAS,CAC9B,KAAM,CACJ,aAAA0pB,CACJ,EAAM1pB,EACJ,MAAO,CAAC,CACN,CAAC0pB,CAAY,EAAG,CAEd,CAAC,IAAIA,CAAY,eAAe,EAAG,CACjC,MAAO,MACf,CACA,CACA,EAKE8a,GAAaxkC,CAAK,EAElB8kH,GAAe9kH,CAAK,EAEpBwmH,GAAiBxmH,CAAK,EAEtB0oH,GAAiB1oH,CAAK,EAItB,CACE,CAAC,GAAG0pB,CAAY,MAAM,EAAG,CACvB,UAAW,KACjB,CACA,EAIEo4B,GAAoB9hD,EAAO,CACzB,YAAa,GAAG0pB,CAAY,YAC5B,WAAY,GAAGA,CAAY,UAC/B,CAAG,CAAC,CACJ,EAEAi/F,GAAethG,GAAc,SAAU,CAACrnB,EAAO,CAC7C,cAAAipB,CACF,IAAM,CACJ,MAAM2/F,EAAc3iG,GAAWjmB,EAAO,CACpC,cAAAipB,EACA,2BAA4BjpB,EAAM,KAAKA,EAAM,SAAS,EAAE,IAAI,CAAC,EAAE,MAAK,EACpE,yBAA0BA,EAAM,mBAChC,aAAcA,EAAM,aACxB,CAAG,EACD,MAAO,CAACyoH,GAAeG,CAAW,EAAGP,GAAiBO,CAAW,CAAC,CACpE,EAAG/qE,GAAuB,CACxB,SAAU,CACR,iBAAkB,GAClB,yBAA0B,EAC9B,CACA,CAAC,ECrPD,IAAIgrE,GAAgB,CAAE,KAAQ,CAAE,IAAO,MAAO,MAAS,CAAE,QAAW,gBAAiB,UAAa,OAAO,EAAI,SAAY,CAAC,CAAE,IAAO,OAAQ,MAAS,CAAE,EAAK,0LAA0L,EAAI,CAAC,EAAI,KAAQ,QAAS,MAAS,UAAU,ECM9XA,GAAgB,SAAuB9sI,EAAOP,EAAK,CACrD,OAAoBkH,EAAM,cAAcogD,GAAUv6C,GAAS,CAAA,EAAIxM,EAAO,CACpE,IAAKP,EACL,KAAMstI,EACV,CAAG,CAAC,CACJ,EAGI9lF,GAAuBtgD,EAAM,WAAWmmI,EAAa,EACrD,QAAQ,IAAI,WAAa,eAC3B7lF,GAAQ,YAAc,iBChBxB,IAAI+lF,GAAe,CAAE,KAAQ,CAAE,IAAO,MAAO,MAAS,CAAE,QAAW,gBAAiB,UAAa,OAAO,EAAI,SAAY,CAAC,CAAE,IAAO,OAAQ,MAAS,CAAE,EAAK,2LAA2L,EAAI,CAAC,EAAI,KAAQ,OAAQ,MAAS,UAAU,ECM7XA,GAAe,SAAsBhtI,EAAOP,EAAK,CACnD,OAAoBkH,EAAM,cAAcogD,GAAUv6C,GAAS,CAAA,EAAIxM,EAAO,CACpE,IAAKP,EACL,KAAMwtI,EACV,CAAG,CAAC,CACJ,EAGIhmF,GAAuBtgD,EAAM,WAAWqmI,EAAY,EACpD,QAAQ,IAAI,WAAa,eAC3B/lF,GAAQ,YAAc,gBChBxB,IAAIimF,GAAiB,CAAE,KAAQ,CAAE,IAAO,MAAO,MAAS,CAAE,QAAW,gBAAiB,UAAa,OAAO,EAAI,SAAY,CAAC,CAAE,IAAO,OAAQ,MAAS,CAAE,EAAK,kgBAAkgB,EAAI,CAAC,EAAI,KAAQ,SAAU,MAAS,UAAU,ECMxsBA,GAAiB,SAAwBltI,EAAOP,EAAK,CACvD,OAAoBkH,EAAM,cAAcogD,GAAUv6C,GAAS,CAAA,EAAIxM,EAAO,CACpE,IAAKP,EACL,KAAM0tI,EACV,CAAG,CAAC,CACJ,EAGIlmF,GAAuBtgD,EAAM,WAAWumI,EAAc,EACtD,QAAQ,IAAI,WAAa,eAC3BjmF,GAAQ,YAAc,kBCPT,SAASmmF,GAAS,CAC/B,WAAAjoB,EACA,UAAA/nB,EACA,qBAAAy+B,EACA,WAAA90B,EACA,QAAApvC,EACA,SAAA+tD,EACA,YAAA8gB,EACA,UAAAz6F,EACA,eAAAu9E,EACA,aAAA+jB,EACA,UAAAC,EACA,cAAApzG,CACF,EAAG,CACG,QAAQ,IAAI,WAAa,cACX7B,GAAc6B,CAAa,EACnC,WAAW,CAACkjE,EAAW,YAAa,6CAA6C,EAG3F,MAAMG,EAAkBH,GAAsEz2F,EAAM,cAAcugD,GAAmB,IAAI,EAEnIqmF,EAAoBC,GACpBroB,IAAe,MAAQ,CAACqhB,GAAe,CAAC8G,EACnC,KAEW3mI,EAAM,cAAcA,EAAM,SAAU,KAAM2iH,IAAmB,IAASkkB,EAAWhH,GAAe6G,CAAY,EAGlI,IAAII,EAAmB,KACvB,GAAItoB,IAAe,OACjBsoB,EAAmBF,EAAkBpoB,CAAU,UACtCxtD,EACT81E,EAAmBF,EAA+B5mI,EAAM,cAAcmmD,GAAiB,CACrF,KAAM,EACZ,CAAK,CAAC,MACG,CACL,MAAM7C,EAAU,GAAGle,CAAS,UAC5B0hG,EAAmB,CAAC,CAClB,KAAA1/D,EACA,WAAA+4B,CACN,IAEeymC,EADLx/D,GAAQ+4B,EAC4BngG,EAAM,cAAcumI,GAAgB,CACxE,UAAWjjF,CACrB,CAAS,EAEmCtjD,EAAM,cAAcqmI,GAAc,CACtE,UAAW/iF,CACnB,CAAO,CAJG,CAMR,CAEA,IAAIyjF,EAAiB,KACjB7R,IAAyB,OAC3B6R,EAAiB7R,EACRnW,EACTgoB,EAA8B/mI,EAAM,cAAcmmI,GAAe,IAAI,EAErEY,EAAiB,KAEnB,IAAIC,EAAmB,KACvB,OAAI5mC,IAAe,OACjB4mC,EAAmB5mC,EAEnB4mC,EAAgChnI,EAAM,cAAcygD,GAAe,IAAI,EAElE,CACL,UAAWm2C,EACX,WAAYkwC,EACZ,SAAUC,EACV,WAAYC,CAChB,CACA,CC5Ee,SAASC,GAAazoB,EAAYmoB,EAAW,CAC1D,OAAOA,IAAc,OAAYA,EAAYnoB,IAAe,IAC9D,CCNA,IAAIr2E,GAAgC,SAAU/kD,EAAGe,EAAG,CAClD,IAAId,EAAI,CAAA,EACR,QAASe,KAAKhB,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGgB,CAAC,GAAKD,EAAE,QAAQC,CAAC,EAAI,IAAGf,EAAEe,CAAC,EAAIhB,EAAEgB,CAAC,GAC/F,GAAIhB,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WAAY,QAAS,EAAI,EAAGgB,EAAI,OAAO,sBAAsBhB,CAAC,EAAG,EAAIgB,EAAE,OAAQ,IAClID,EAAE,QAAQC,EAAE,CAAC,CAAC,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKhB,EAAGgB,EAAE,CAAC,CAAC,IAAGf,EAAEe,EAAE,CAAC,CAAC,EAAIhB,EAAEgB,EAAE,CAAC,CAAC,GAElG,OAAOf,CACT,EAyBA,MAAM6jJ,GAAkC,kCAClCC,GAAiB,CAAC9tI,EAAOP,IAAQ,CACrC,IAAI5R,EAAID,EAAIqN,EAAID,EAAIE,EACpB,KAAM,CACF,UAAWqpC,EACX,SAAAwpG,EACA,UAAAhoF,EACA,cAAAY,EACA,kBAAA3hB,EACA,eAAA82E,EACA,kBAAAiG,EACA,WAAA+Z,EAAa,IACb,UAAAltB,EACA,eAAgBo/B,EAChB,KAAMlnE,EACN,SAAUC,EACV,gBAAA29C,EACA,OAAQiiB,EACR,kBAAAl4B,EACA,yBAAArwD,EACA,sBAAAuB,EACA,UAAWsuF,EACX,MAAA5rH,EACA,WAAA86E,EACA,QAAS+wC,EACT,cAAApsB,EACA,eAAAptE,EACA,UAAA2yD,EACA,SAAA/F,EACA,OAAApzG,EACA,eAAA+zH,EACA,YAAAksB,EACA,wBAAAppB,EACA,aAAAqpB,EACA,OAAAz3H,EACA,WAAAxK,CACN,EAAQnM,EACJ1H,EAAOw2C,GAAO9uC,EAAO,CAAC,YAAa,WAAY,YAAa,gBAAiB,oBAAqB,iBAAkB,oBAAqB,aAAc,YAAa,iBAAkB,OAAQ,WAAY,kBAAmB,SAAU,oBAAqB,2BAA4B,wBAAyB,YAAa,QAAS,aAAc,UAAW,gBAAiB,iBAAkB,YAAa,WAAY,SAAU,iBAAkB,cAAe,0BAA2B,eAAgB,SAAU,YAAY,CAAC,EACrgB,CACJ,kBAAmB+2F,EACnB,aAAAjyD,EACA,YAAAupG,GACA,UAAWC,GACX,QAAA5uF,GACA,sBAAuB6uF,GACvB,cAAA3uF,EACJ,EAAMj5C,EAAM,WAAW69B,EAAa,EAC5B,CACJ,WAAAsiE,EACA,MAAO96C,EACP,OAAQ+b,GACR,UAAWhc,EACX,WAAY+b,EAChB,EAAMnjC,GAAmB,QAAQ,EACzB,CAAA,CAAG1gB,EAAK,EAAIgnB,GAAQ,EACpB8wF,GAAiBiS,IAA0F/pH,IAAU,KAA2B,OAASA,GAAM,eAC/J8nB,GAAYjH,EAAa,SAAUP,CAAkB,EACrD2I,GAAgBpI,EAAY,EAC5BC,GAAYkpG,GAAqEK,GACjF,CACJ,YAAAvlE,GACA,sBAAA1T,EACJ,EAAMF,GAAsBppB,GAAWhH,EAAS,EACxC,CAACoe,GAASqlF,EAAgB,EAAIgG,GAAY,SAAUN,EAAkBH,CAAQ,EAC9E/hG,GAAU4gB,GAAa7gB,EAAS,EAChC,CAACM,EAAY1mB,GAAQ2mB,EAAS,EAAIX,GAASI,GAAWC,EAAO,EAC7DsxD,GAAO32F,EAAM,QAAQ,IAAM,CAC/B,KAAM,CACJ,KAAM1c,EACZ,EAAQ+V,EACJ,GAAI/V,KAAM,WAGV,OAAIA,KAAM4jJ,GACD,WAEF5jJ,EACT,EAAG,CAAC+V,EAAM,IAAI,CAAC,EACTmkH,GAAa7mB,KAAS,YAAcA,KAAS,OAC7CgsB,GAAiBskB,GAAa5tI,EAAM,WAAYA,EAAM,SAAS,EAC/DyuI,IAA+B5gJ,EAAK8xD,GAA6FvB,KAA8B,MAAQvwD,IAAO,OAASA,EAAK0gJ,GAC5LG,KAAqB9gJ,EAAK+oB,GAAW,KAA4B,OAASA,EAAO,SAAW,MAAQ/oB,IAAO,OAAS,OAASA,EAAG,SAAWqN,EAAK8sE,GAAc,SAAW,MAAQ9sE,IAAO,OAAS,OAASA,EAAG,OAAS6mH,EACtN6sB,GAAoBR,GAAelsB,EACnC2sB,GAAqBR,GAAgBrpB,EAErC,CACJ,OAAQ2hB,GACR,YAAAF,GACA,gBAAAqI,GACA,aAAAxB,EACJ,EAAM1mI,EAAM,WAAWknF,EAAoB,EACnCihD,GAAerI,GAAgBC,GAAeC,CAAY,EAEhE,IAAIoI,GACArqB,IAAoB,OACtBqqB,GAAiBrqB,EACRpnB,KAAS,WAClByxC,GAAiB,KAEjBA,IAAkBV,IAAgB,KAAiC,OAASA,GAAY,QAAQ,IAAmB1nI,EAAM,cAAcshI,GAAoB,CACzJ,cAAe,QACrB,CAAK,EAGH,KAAM,CACJ,WAAA9iB,GACA,SAAA6pB,GACA,WAAAjoC,GACA,UAAA3J,EACJ,EAAMgwC,GAAS,OAAO,OAAO,OAAO,OAAO,CAAA,EAAI90I,CAAI,EAAG,CAClD,SAAU6rH,GACV,YAAAqiB,GACA,aAAA6G,GACA,eAAA/jB,GACA,UAAAv9E,GACA,cAAe,QACnB,CAAG,CAAC,EACIyxD,GAAmBL,IAAe,GAAO,CAC7C,UAAAC,EACJ,EAAMD,EACE8xC,GAAcz9E,GAAKl5D,EAAM,CAAC,aAAc,UAAU,CAAC,EACnD42I,GAAuB/8C,KAAMn3F,EAAKmR,GAAe,KAAgC,OAASA,EAAW,SAAW,MAAQnR,IAAO,OAAS,OAASA,EAAG,SAAWE,EAAK4sE,IAAsB,KAAuC,OAASA,GAAkB,SAAW,MAAQ5sE,IAAO,OAAS,OAASA,EAAG,OAAS4gH,GAAkBiG,EAAmB,CAC7V,CAAC,GAAGh2E,EAAS,aAAahH,EAAS,EAAE,EAAGA,KAAc,KAC1D,EAAK4hB,EAAemhB,GAAkB,KAAM37D,GAAe,KAAgC,OAASA,EAAW,KAAMmgC,GAAWN,GAASrmB,EAAM,EACvIqwC,GAAatB,GAAQ7/C,IAAO,CAChC,IAAIhnB,GACJ,OAAQA,GAAKi5E,GAAqEiC,MAAiB,MAAQl7E,KAAO,OAASA,GAAKgnB,EAClI,CAAC,EAEK2F,GAAW7T,EAAM,WAAWi/B,EAAe,EAC3CqiC,GAAiBlB,GAAwEvsD,GACzFovG,GAAkBz3B,GAAI,CAC1B,CAAC,GAAGpmD,EAAS,KAAK,EAAGiqB,KAAe,QACpC,CAAC,GAAGjqB,EAAS,KAAK,EAAGiqB,KAAe,QACpC,CAAC,GAAGjqB,EAAS,MAAM,EAAGhH,KAAc,MACpC,CAAC,GAAGgH,EAAS,IAAIoX,EAAO,EAAE,EAAGqlF,GAC7B,CAAC,GAAGz8F,EAAS,eAAe,EAAG8iG,EACnC,EAAKtI,GAAoBx6F,GAAW+iG,GAActI,EAAW,EAAGnxE,GAAuBtJ,EAAkBhG,EAAW+hB,GAAkB,KAAM37D,GAAe,KAAgC,OAASA,EAAW,KAAMw6C,EAAera,GAAWN,GAASrmB,EAAM,EAEtPwpH,GAAgBxoI,EAAM,QAAQ,IAC9BioG,IAAc,OACTA,EAEF7pE,KAAc,MAAQ,cAAgB,aAC5C,CAAC6pE,EAAW7pE,EAAS,CAAC,EAEzB,GAAI,QAAQ,IAAI,WAAa,aAAc,CACzC,MAAM33B,GAAUirB,GAAc,QAAQ,EAUtC,OAAO,QATiB,CACtB,yBAA0B,wBAC1B,cAAe,oBACf,kBAAmB,wBACnB,eAAgB,wBAChB,eAAgB,cAChB,wBAAyB,eACzB,SAAU,SAChB,CACkC,EAAE,QAAQ,CAAC,CAACI,GAASC,EAAO,IAAM,CAC9DtrB,GAAQ,WAAW,EAAEqrB,MAAWz4B,GAAQy4B,GAASC,EAAO,CAC1D,CAAC,EACD,QAAQ,IAAI,WAAa,cAAetrB,GAAQ,EAAE,cAAepN,GAAQ,aAAc,wJAAwJ,EAC/O,QAAQ,IAAI,WAAa,cAAeoN,GAAQ,EAAE,OAAOk0F,EAAa,KAAe,CAAC6iB,IAAa,QAAS,sDAAsD,CACpK,CAEA,KAAM,CAACv2D,EAAM,EAAIL,GAAU,aAAcmhF,IAAqB,KAAsC,OAASA,GAAiB,MAAM,EAEpI,OAAOriG,EAAwB1lC,EAAM,cAAcyoI,GAAU,OAAO,OAAO,CACzE,IAAK3vI,EACL,QAASigD,GACT,WAAYonD,CAChB,EAAKmoC,GAAa,CACd,MAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIlnE,GAAc,IAAI,EAAGpxD,GAAW,KAA4B,OAASA,EAAO,IAAI,EAAGq1C,CAAY,EAAG3pC,CAAK,EAC1K,yBAA0BosH,GAC1B,eAAgBh6F,GAAkBvH,GAAe,WAAYwH,CAAc,EAC3E,kBAAmB2tE,GAAwB5T,EAAmB7uD,EAAa,EAC3E,WAAYk8E,EACZ,eAAgBC,GAChB,KAAMz+B,GACN,UAAWvxD,GACX,UAAWojG,GACX,UAAWpqG,GACX,OAAQ72C,EACR,WAAYi3H,GACZ,qBAAsB6pB,GACtB,WAAYjoC,GACZ,WAAYvJ,GACZ,gBAAiBuxC,GACjB,UAAWnlB,GACX,kBAAmB5kF,GAAqB+xD,EACxC,kBAAmBm4C,GACnB,SAAUjnE,GACV,cAAe,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIymE,EAAgB,EAAG,CAChE,OAAA9gF,EACN,CAAK,EACD,SAAUu2D,GAAa7iB,EAAW,OAClC,UAAW6iB,GAAa9c,EAAY,OACpC,eAAgBsnC,GAChB,wBAAyBC,EAC7B,CAAG,CAAC,CAAC,CACL,EACI,QAAQ,IAAI,WAAa,eAC3Bd,GAAe,YAAc,UAE/B,MAAMvM,GAAsB56H,EAAM,WAAWmnI,EAAc,EAGrDuB,GAAYrzC,GAAaulC,GAAQ,eAAe,EACtDA,GAAO,gCAAkCsM,GACzCtM,GAAO,OAASvX,GAChBuX,GAAO,SAAWxX,GAClBwX,GAAO,uCAAyC8N,GAC5C,QAAQ,IAAI,WAAa,eAC3B9N,GAAO,YAAc,UCtPhB,MAAM+N,GAAwB,CAACC,EAAKC,IAAY,CAEjD,OAAQD,GAAQ,KAAyB,OAASA,EAAI,kBAAsB,IAC9EA,EAAI,iBAAiB,SAAUC,CAAO,EAC7B,OAAQD,GAAQ,KAAyB,OAASA,EAAI,aAAiB,KAChFA,EAAI,YAAYC,CAAO,CAE3B,EACaC,GAA2B,CAACF,EAAKC,IAAY,CAEpD,OAAQD,GAAQ,KAAyB,OAASA,EAAI,qBAAyB,IACjFA,EAAI,oBAAoB,SAAUC,CAAO,EAChC,OAAQD,GAAQ,KAAyB,OAASA,EAAI,gBAAoB,KACnFA,EAAI,eAAeC,CAAO,CAE9B,ECZaE,GAAkB,CAAC,MAAO,KAAM,KAAM,KAAM,KAAM,IAAI,EAC7DC,GAAmB1rH,IAAU,CACjC,GAAI,eAAeA,EAAM,WAAW,MACpC,GAAI,eAAeA,EAAM,QAAQ,MACjC,GAAI,eAAeA,EAAM,QAAQ,MACjC,GAAI,eAAeA,EAAM,QAAQ,MACjC,GAAI,eAAeA,EAAM,QAAQ,MACjC,IAAK,eAAeA,EAAM,SAAS,KACrC,GAKM2rH,GAAsB3rH,GAAS,CACnC,MAAM4rH,EAAiB5rH,EACjB6rH,EAAiB,CAAA,EAAG,OAAOJ,EAAe,EAAE,QAAO,EACzD,OAAAI,EAAe,QAAQ,CAACj4C,EAAY,IAAM,CACxC,MAAMk4C,EAAkBl4C,EAAW,YAAW,EACxCm4C,EAAY,SAASD,CAAe,MACpCE,EAAS,SAASF,CAAe,GACvC,GAAI,EAAEF,EAAeG,CAAS,GAAKH,EAAeI,CAAM,GACtD,MAAM,IAAI,MAAM,GAAGD,CAAS,KAAKC,CAAM,cAAcJ,EAAeG,CAAS,CAAC,KAAKH,EAAeI,CAAM,CAAC,GAAG,EAE9G,GAAI,EAAIH,EAAe,OAAS,EAAG,CACjC,MAAMI,EAAY,SAASH,CAAe,MAC1C,GAAI,EAAEF,EAAeI,CAAM,GAAKJ,EAAeK,CAAS,GACtD,MAAM,IAAI,MAAM,GAAGD,CAAM,KAAKC,CAAS,cAAcL,EAAeI,CAAM,CAAC,KAAKJ,EAAeK,CAAS,CAAC,GAAG,EAG9G,MAAMC,EAAgB,SADSL,EAAe,EAAI,CAAC,EAAE,YAAW,CACX,MACrD,GAAI,EAAED,EAAeK,CAAS,GAAKL,EAAeM,CAAa,GAC7D,MAAM,IAAI,MAAM,GAAGD,CAAS,KAAKC,CAAa,cAAcN,EAAeK,CAAS,CAAC,KAAKL,EAAeM,CAAa,CAAC,GAAG,CAE9H,CACF,CAAC,EACMlsH,CACT,EAWMmsH,GAAwB,IAAM,CAClC,KAAM,CAAA,CAAGnsH,CAAK,EAAIgnB,GAAQ,EACpBolG,EAAgBV,GAAiBC,GAAoB3rH,CAAK,CAAC,EAEjE,OAAOtd,EAAM,QAAQ,IAAM,CACzB,MAAM2pI,EAAc,IAAI,IACxB,IAAIC,EAAS,GACTC,EAAU,CAAA,EACd,MAAO,CACL,cAAAH,EACA,cAAe,CAAA,EACf,SAASI,EAAU,CACjB,OAAAD,EAAUC,EACVH,EAAY,QAAQx6D,GAAQA,EAAK06D,CAAO,CAAC,EAClCF,EAAY,MAAQ,CAC7B,EACA,UAAUx6D,EAAM,CACd,OAAKw6D,EAAY,MACf,KAAK,SAAQ,EAEfC,GAAU,EACVD,EAAY,IAAIC,EAAQz6D,CAAI,EAC5BA,EAAK06D,CAAO,EACLD,CACT,EACA,YAAYG,EAAY,CACtBJ,EAAY,OAAOI,CAAU,EACxBJ,EAAY,MACf,KAAK,WAAU,CAEnB,EACA,UAAW,CACT,OAAO,QAAQD,CAAa,EAAE,QAAQ,CAAC,CAACJ,EAAQU,CAAU,IAAM,CAC9D,MAAMniJ,EAAW,CAAC,CAChB,QAAAoiJ,CACZ,IAAgB,CACJ,KAAK,SAAS,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIJ,CAAO,EAAG,CACtD,CAACP,CAAM,EAAGW,CACxB,CAAa,CAAC,CACJ,EACMrB,EAAM,OAAO,WAAWoB,CAAU,EACxCrB,GAAsBC,EAAK/gJ,CAAQ,EACnC,KAAK,cAAcmiJ,CAAU,EAAI,CAC/B,IAAApB,EACA,SAAA/gJ,CACZ,EACUA,EAAS+gJ,CAAG,CACd,CAAC,CACH,EACA,YAAa,CACX,OAAO,OAAOc,CAAa,EAAE,QAAQM,GAAc,CACjD,MAAMnB,EAAU,KAAK,cAAcmB,CAAU,EAC7ClB,GAAyBD,GAAY,KAA6B,OAASA,EAAQ,IAAKA,GAAY,KAA6B,OAASA,EAAQ,QAAQ,CAC5J,CAAC,EACDc,EAAY,MAAK,CACnB,CACN,CACE,EAAG,CAACrsH,CAAK,CAAC,CACZ,EC3Ge,SAAS4sH,IAAiB,CACvC,KAAM,CAAA,CAAGl+F,CAAW,EAAIhsC,EAAM,WAAWoR,GAAKA,EAAI,EAAG,CAAC,EACtD,OAAO46B,CACT,CCEA,SAASm+F,GAAcC,EAAkB,GAAMC,EAAiB,CAAA,EAAI,CAClE,MAAMC,EAAavxI,EAAAA,OAAOsxI,CAAc,EAClCr+F,EAAck+F,GAAc,EAC5BK,EAAqBd,GAAqB,EAChD/pH,OAAAA,GAAgB,IAAM,CACpB,MAAMpC,EAAQitH,EAAmB,UAAUC,GAAkB,CAC3DF,EAAW,QAAUE,EACjBJ,GACFp+F,EAAW,CAEf,CAAC,EACD,MAAO,IAAMu+F,EAAmB,YAAYjtH,CAAK,CACnD,EAAG,CAAA,CAAE,EACEgtH,EAAW,OACpB,CClBe,SAASjlC,GAAMhsG,EAAO,CACnC,IAAI+M,EAAW/M,EAAM,SACnB+rC,EAAY/rC,EAAM,UAClBwL,EAAKxL,EAAM,GACXuqH,EAAavqH,EAAM,kBACnBoxI,EAAgBpxI,EAAM,cACtB+lD,EAAY/lD,EAAM,UAClBqiB,EAAQriB,EAAM,MAChB,OAAoB2G,EAAM,cAAc,MAAO,CAC7C,UAAWwF,GAAW,GAAG,OAAO4/B,EAAW,UAAU,EAAGga,CAAS,EACjE,MAAO1jC,CACX,EAAkB1b,EAAM,cAAc,MAAO,CACzC,UAAWwF,GAAW,GAAG,OAAO4/B,EAAW,QAAQ,EAAGqlG,CAAa,EACnE,GAAI5lI,EACJ,KAAM,UACN,MAAO++G,CACX,EAAK,OAAOx9G,GAAa,WAAaA,EAAQ,EAAKA,CAAQ,CAAC,CAC5D,CCnBA,IAAIskI,GAA8B,CAChC,OAAQ,GACR,QAAS,CACX,EACIC,GAA8B,CAChC,QAAS,EACT,OAAQ,EACV,EACI77B,GAAe,CAAC,EAAG,CAAC,EACb/G,GAAa,CACtB,KAAM,CACJ,OAAQ,CAAC,KAAM,IAAI,EACnB,SAAU4iC,GACV,OAAQ,CAAC,GAAI,CAAC,EACd,aAAc77B,EAClB,EACE,MAAO,CACL,OAAQ,CAAC,KAAM,IAAI,EACnB,SAAU67B,GACV,OAAQ,CAAC,EAAG,CAAC,EACb,aAAc77B,EAClB,EACE,IAAK,CACH,OAAQ,CAAC,KAAM,IAAI,EACnB,SAAU47B,GACV,OAAQ,CAAC,EAAG,EAAE,EACd,aAAc57B,EAClB,EACE,OAAQ,CACN,OAAQ,CAAC,KAAM,IAAI,EACnB,SAAU47B,GACV,OAAQ,CAAC,EAAG,CAAC,EACb,aAAc57B,EAClB,EACE,QAAS,CACP,OAAQ,CAAC,KAAM,IAAI,EACnB,SAAU47B,GACV,OAAQ,CAAC,EAAG,EAAE,EACd,aAAc57B,EAClB,EACE,QAAS,CACP,OAAQ,CAAC,KAAM,IAAI,EACnB,SAAU67B,GACV,OAAQ,CAAC,GAAI,CAAC,EACd,aAAc77B,EAClB,EACE,SAAU,CACR,OAAQ,CAAC,KAAM,IAAI,EACnB,SAAU47B,GACV,OAAQ,CAAC,EAAG,EAAE,EACd,aAAc57B,EAClB,EACE,SAAU,CACR,OAAQ,CAAC,KAAM,IAAI,EACnB,SAAU67B,GACV,OAAQ,CAAC,EAAG,CAAC,EACb,aAAc77B,EAClB,EACE,YAAa,CACX,OAAQ,CAAC,KAAM,IAAI,EACnB,SAAU47B,GACV,OAAQ,CAAC,EAAG,CAAC,EACb,aAAc57B,EAClB,EACE,YAAa,CACX,OAAQ,CAAC,KAAM,IAAI,EACnB,SAAU67B,GACV,OAAQ,CAAC,EAAG,CAAC,EACb,aAAc77B,EAClB,EACE,WAAY,CACV,OAAQ,CAAC,KAAM,IAAI,EACnB,SAAU47B,GACV,OAAQ,CAAC,EAAG,CAAC,EACb,aAAc57B,EAClB,EACE,WAAY,CACV,OAAQ,CAAC,KAAM,IAAI,EACnB,SAAU67B,GACV,OAAQ,CAAC,GAAI,CAAC,EACd,aAAc77B,EAClB,CACA,EC/EInjE,GAAY,CAAC,mBAAoB,UAAW,kBAAmB,kBAAmB,eAAgB,YAAa,WAAY,kBAAmB,qBAAsB,iBAAkB,YAAa,SAAU,YAAa,QAAS,uBAAwB,iBAAkB,sBAAuB,oBAAqB,eAAgB,UAAW,KAAM,YAAa,aAAc,QAAQ,EAQ7Xi/F,GAAU,SAAiBvxI,EAAOP,EAAK,CACtC,IAAC+xI,EAAmBxxI,EAAM,iBAC3ByxI,EAAiBzxI,EAAM,QACvB2iF,EAAU8uD,IAAmB,OAAS,CAAC,OAAO,EAAIA,EAClDC,EAAwB1xI,EAAM,gBAC9Bw7G,EAAkBk2B,IAA0B,OAAS,EAAIA,EACzDj2B,EAAwBz7G,EAAM,gBAC9B07G,EAAkBD,IAA0B,OAAS,GAAMA,EAC3Dk2B,EAAe3xI,EAAM,aACrB+8D,EAAmB/8D,EAAM,UACzB+rC,EAAYgxB,IAAqB,OAAS,aAAeA,EACzDhwD,EAAW/M,EAAM,SACjB0hG,EAAkB1hG,EAAM,gBACxB4xI,EAAqB5xI,EAAM,mBAC3B00C,EAAiB10C,EAAM,eACvB6yE,EAAY7yE,EAAM,UAClBi+C,EAASj+C,EAAM,OACf6xI,EAAmB7xI,EAAM,UACzB4uG,EAAYijC,IAAqB,OAAS,QAAUA,EACpDC,EAAe9xI,EAAM,MACrBkrG,EAAQ4mC,IAAiB,OAAS,CAAA,EAAKA,EACvCC,EAAwB/xI,EAAM,qBAC9BgyI,EAAuBD,IAA0B,OAAS,GAAQA,EAClEE,EAAiBjyI,EAAM,eACvBkyI,EAAsBlyI,EAAM,oBAC5BmyI,EAAoBnyI,EAAM,kBACXA,EAAM,aACzB,IAAIoyI,EAAUpyI,EAAM,QAChBwL,EAAKxL,EAAM,GACXqyI,EAAmBryI,EAAM,UACzBstI,EAAY+E,IAAqB,OAAS,GAAOA,EACjDC,EAAoBtyI,EAAM,WAC1BuyI,EAAgBvyI,EAAM,OACtBu9C,EAAY38B,GAAyB5gB,EAAOsyC,EAAS,EACnDyvF,EAAWrwF,GAAMlmC,CAAE,EACnBs6G,EAAapmH,EAAAA,OAAO,IAAI,EAC5B8yI,EAAAA,oBAAoB/yI,EAAK,UAAY,CACnC,OAAOqmH,EAAW,OACpB,CAAC,EACD,IAAI2sB,EAAa32H,EAAc,CAAA,EAAIyhC,CAAS,EACxC,YAAav9C,IACfyyI,EAAW,aAAezyI,EAAM,SAElC,IAAI0yI,EAAkB,UAA2B,CAC/C,OAAoB/rI,EAAM,cAAcqlG,GAAO,CAC7C,IAAK,UACL,UAAWjgE,EACX,GAAIg2F,EACJ,cAAeuQ,GAAsB,KAAuC,OAASA,EAAkB,KACvG,kBAAmBx2H,EAAcA,EAAc,CAAA,EAAIq2H,CAAiB,EAAGI,GAAkB,KAAmC,OAASA,EAAc,IAAI,CAC7J,EAAOH,CAAO,CACZ,EACIO,EAAc,UAAuB,CACvC,IAAI3lI,EAAQrG,EAAM,SAAS,KAAKoG,CAAQ,EACpC6lI,IAAiB5lI,GAAU,KAA2B,OAASA,EAAM,QAAU,CAAA,EAC/Ey1E,GAAa3mE,EAAcA,EAAc,CAAA,EAAI82H,EAAa,EAAG,GAAI,CACnE,mBAAoBR,EAAUrQ,EAAW,IAC/C,CAAK,EACD,OAAoBp7H,EAAM,aAAaoG,EAAU01E,EAAU,CAC7D,EACA,OAAoB97E,EAAM,cAAcu0G,GAAS1uG,GAAS,CACxD,eAAgBL,GAAWqlI,EAAkBc,GAAsB,KAAuC,OAASA,EAAkB,IAAI,EACzI,UAAWvmG,EACX,MAAO2mG,EACP,OAAQ/vD,EACR,kBAAmB+rB,GACnB,eAAgBE,EAChB,IAAKkX,EACL,WAAY5a,EACZ,kBAAmBgnC,EACnB,qBAAsBxwC,EACtB,wBAAyBkwC,EACzB,oBAAqBl9F,EACrB,eAAgBm+B,EAChB,YAAa50B,EACb,oBAAqBg0F,EACrB,YAAaD,EACb,gBAAiBt2B,EACjB,WAAY5/F,EAAcA,EAAc,CAAA,EAAI61H,CAAY,EAAGY,GAAkB,KAAmC,OAASA,EAAc,IAAI,EAC3I,gBAAiB/2B,EACjB,MAAO8xB,CACX,EAAKmF,CAAU,EAAGE,GAAa,CAC/B,EACA,MAAAE,GAA4B17E,EAAAA,WAAWo6E,EAAO,EC7FvC,SAASuB,GAAc7uH,EAAO,CACnC,KAAM,CACJ,eAAA8uH,EACA,eAAAC,EACA,kBAAAC,CACJ,EAAMhvH,EACEivH,EAAYH,EAAiB,EAC7BI,EAAK,EACLC,EAAKF,EACLG,EAAKJ,EAAoB,EAAI,KAAK,KAAK,CAAC,EACxCK,EAAKJ,EAAYD,GAAqB,EAAI,EAAI,KAAK,KAAK,CAAC,GACzDM,EAAKL,EAAYF,GAAkB,EAAI,KAAK,KAAK,CAAC,GAClDQ,EAAKP,GAAqB,KAAK,KAAK,CAAC,EAAI,GAAKD,GAAkB,EAAI,KAAK,KAAK,CAAC,GAC/ES,EAAK,EAAIP,EAAYK,EACrBG,EAAKF,EACLG,EAAK,EAAIT,EAAYG,EACrBO,EAAKN,EACLO,EAAK,EAAIX,EAAYC,EACrBW,EAAKV,EACLW,EAAcb,EAAY,KAAK,KAAK,CAAC,EAAID,GAAqB,KAAK,KAAK,CAAC,EAAI,GAC7Ee,EAAgBf,GAAqB,KAAK,KAAK,CAAC,EAAI,GACpDgB,EAAe,WAAWD,CAAa,gBAAgBA,CAAa,OAAO,EAAId,EAAYc,CAAa,YAAYA,CAAa,WACjIE,EAAY,WAAWf,CAAE,IAAIC,CAAE,MAAMH,CAAiB,IAAIA,CAAiB,UAAUI,CAAE,IAAIC,CAAE,MAAMC,CAAE,IAAIC,CAAE,MAAMR,CAAc,IAAIA,CAAc,UAAUS,CAAE,IAAIC,CAAE,MAAMC,CAAE,IAAIC,CAAE,MAAMX,CAAiB,IAAIA,CAAiB,UAAUY,CAAE,IAAIC,CAAE,OACrP,MAAO,CACL,iBAAkBC,EAClB,UAAAG,EACA,aAAAD,CACJ,CACA,CACO,MAAME,GAAkB,CAAClwH,EAAOokC,EAAS+rF,IAAc,CAC5D,KAAM,CACJ,eAAArB,EACA,aAAAkB,EACA,UAAAC,EACA,iBAAAG,EACA,eAAArB,EACA,KAAA32G,CACJ,EAAMpY,EACJ,MAAO,CACL,cAAe,OACf,MAAO8uH,EACP,OAAQA,EACR,SAAU,SACV,YAAa,CACX,SAAU,WACV,OAAQ,EACR,iBAAkB,EAClB,MAAOA,EACP,OAAQ12G,EAAK02G,CAAc,EAAE,IAAI,CAAC,EAAE,MAAK,EACzC,WAAY1qF,EACZ,SAAU,CACR,cAAe,GACf,MAAO,CAAC4rF,EAAcC,CAAS,CACvC,EACM,QAAS,IACf,EACI,WAAY,CACV,QAAS,KACT,SAAU,WACV,MAAOG,EACP,OAAQA,EACR,OAAQ,EACR,YAAa,EACb,OAAQ,OACR,aAAc,CACZ,aAAc,GACd,MAAO,OAAOtvH,GAAKiuH,CAAc,CAAC,IAC1C,EACM,UAAW,kCACX,UAAAoB,EACA,OAAQ,EACR,WAAY,aAClB,CACA,CACA,ECzEaE,GAA8B,EACpC,SAASC,GAAoBvmJ,EAAS,CAC3C,KAAM,CACJ,cAAAwmJ,EACA,oBAAAC,CACJ,EAAMzmJ,EACE0mJ,EAAcF,EAAgB,GAAKA,EAAgB,EAAI,GAE7D,MAAO,CACL,sBAAuBE,EACvB,oBAH0BD,EAAsBH,GAA8BI,CAIlF,CACA,CACA,SAASC,GAAStnI,EAAO7f,EAAM,CAC7B,OAAK6f,EAGE7f,EAFE,CAAA,CAGX,CACe,SAASonJ,GAAc3wH,EAAO4wH,EAAS7mJ,EAAS,CAC7D,KAAM,CACJ,aAAA2/C,EACA,sBAAAmnG,EACA,oBAAAC,EACA,sBAAAC,CACJ,EAAM/wH,EACE,CACJ,cAAAgxH,EAAgB,EAChB,eAAAC,EAAiB,CACf,KAAM,GACN,MAAO,GACP,IAAK,GACL,OAAQ,EACd,CACA,EAAiB,CAAA,EACf,MAAO,CACL,CAACvnG,CAAY,EAAG,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAEtE,CAAC,GAAGA,CAAY,QAAQ,EAAG,CAAC,OAAO,OAAO,OAAO,OAAO,CACtD,SAAU,WACV,OAAQ,EACR,QAAS,OACjB,EAASwmG,GAAgBlwH,EAAO4wH,EAASC,CAAqB,CAAC,EAAG,CAC1D,WAAY,CACV,WAAYD,CACtB,CACA,CAAO,CAAC,CACR,EAAOF,GAAS,CAAC,CAACO,EAAe,IAAK,CAChC,CAAC,CAAC,qBAAqBvnG,CAAY,SAAU,yBAAyBA,CAAY,SAAU,0BAA0BA,CAAY,QAAQ,EAAE,KAAK,GAAG,CAAC,EAAG,CACtJ,OAAQsnG,EACR,UAAW,iCACnB,EACM,CAAC,qBAAqBtnG,CAAY,QAAQ,EAAG,CAC3C,KAAM,CACJ,aAAc,GACd,MAAO,KACjB,EACQ,UAAW,kDACnB,EACM,sBAAuB,CACrB,4BAA6BqnG,EAC7B,CAAC,KAAKrnG,CAAY,QAAQ,EAAG,CAC3B,KAAM,CACJ,aAAc,GACd,MAAOqnG,CACnB,CACA,CACA,EACM,uBAAwB,CACtB,4BAA6B,eAAejwH,GAAKiwH,CAAqB,CAAC,IACvE,CAAC,KAAKrnG,CAAY,QAAQ,EAAG,CAC3B,MAAO,CACL,aAAc,GACd,MAAOqnG,CACnB,CACA,CACA,CACA,CAAK,CAAC,EAAGL,GAAS,CAAC,CAACO,EAAe,OAAQ,CACrC,CAAC,CAAC,wBAAwBvnG,CAAY,SAAU,4BAA4BA,CAAY,SAAU,6BAA6BA,CAAY,QAAQ,EAAE,KAAK,GAAG,CAAC,EAAG,CAC/J,IAAKsnG,EACL,UAAW,mBACnB,EACM,CAAC,wBAAwBtnG,CAAY,QAAQ,EAAG,CAC9C,KAAM,CACJ,aAAc,GACd,MAAO,KACjB,EACQ,UAAW,oCACnB,EACM,yBAA0B,CACxB,4BAA6BqnG,EAC7B,CAAC,KAAKrnG,CAAY,QAAQ,EAAG,CAC3B,KAAM,CACJ,aAAc,GACd,MAAOqnG,CACnB,CACA,CACA,EACM,0BAA2B,CACzB,4BAA6B,eAAejwH,GAAKiwH,CAAqB,CAAC,IACvE,CAAC,KAAKrnG,CAAY,QAAQ,EAAG,CAC3B,MAAO,CACL,aAAc,GACd,MAAOqnG,CACnB,CACA,CACA,CACA,CAAK,CAAC,EAAGL,GAAS,CAAC,CAACO,EAAe,KAAM,CACnC,CAAC,CAAC,sBAAsBvnG,CAAY,SAAU,yBAAyBA,CAAY,SAAU,4BAA4BA,CAAY,QAAQ,EAAE,KAAK,GAAG,CAAC,EAAG,CACzJ,MAAO,CACL,aAAc,GACd,MAAOsnG,CACjB,EACQ,UAAW,gCACnB,EACM,CAAC,sBAAsBtnG,CAAY,QAAQ,EAAG,CAC5C,IAAK,CACH,aAAc,GACd,MAAO,KACjB,EACQ,UAAW,iDACnB,EACM,CAAC,yBAAyBA,CAAY,QAAQ,EAAG,CAC/C,IAAKonG,CACb,EACM,CAAC,4BAA4BpnG,CAAY,QAAQ,EAAG,CAClD,OAAQonG,CAChB,CACA,CAAK,CAAC,EAAGJ,GAAS,CAAC,CAACO,EAAe,MAAO,CACpC,CAAC,CAAC,uBAAuBvnG,CAAY,SAAU,0BAA0BA,CAAY,SAAU,6BAA6BA,CAAY,QAAQ,EAAE,KAAK,GAAG,CAAC,EAAG,CAC5J,KAAM,CACJ,aAAc,GACd,MAAOsnG,CACjB,EACQ,UAAW,kCACnB,EACM,CAAC,uBAAuBtnG,CAAY,QAAQ,EAAG,CAC7C,IAAK,CACH,aAAc,GACd,MAAO,KACjB,EACQ,UAAW,mDACnB,EACM,CAAC,0BAA0BA,CAAY,QAAQ,EAAG,CAChD,IAAKonG,CACb,EACM,CAAC,6BAA6BpnG,CAAY,QAAQ,EAAG,CACnD,OAAQonG,CAChB,CACA,CAAK,CAAC,CACN,CACA,CCxJO,SAASI,GAAmBvmC,EAAW8lC,EAAaU,EAAYC,EAAoB,CACzF,GAAIA,IAAuB,GACzB,MAAO,CACL,QAAS,GACT,QAAS,EACf,EAEE,MAAMhmC,EAAWgmC,GAAsB,OAAOA,GAAuB,SAAWA,EAAqB,CAAA,EAC/FC,EAAe,CAAA,EACrB,OAAQ1mC,EAAS,CACf,IAAK,MACL,IAAK,SACH0mC,EAAa,OAASZ,EAAY,sBAAwB,EAAIU,EAC9DE,EAAa,OAAS,GACtBA,EAAa,QAAU,GACvB,MACF,IAAK,OACL,IAAK,QACHA,EAAa,OAASZ,EAAY,oBAAsB,EAAIU,EAC5DE,EAAa,OAAS,GACtBA,EAAa,QAAU,GACvB,KACN,CACE,MAAMC,EAAiB,OAAO,OAAO,OAAO,OAAO,CAAA,EAAID,CAAY,EAAGjmC,CAAQ,EAE9E,OAAKkmC,EAAe,SAClBA,EAAe,QAAU,IAEtBA,EAAe,SAClBA,EAAe,QAAU,IAEpBA,CACT,CACA,MAAMC,GAAoB,CACxB,KAAM,CACJ,OAAQ,CAAC,KAAM,IAAI,CACvB,EACE,MAAO,CACL,OAAQ,CAAC,KAAM,IAAI,CACvB,EACE,IAAK,CACH,OAAQ,CAAC,KAAM,IAAI,CACvB,EACE,OAAQ,CACN,OAAQ,CAAC,KAAM,IAAI,CACvB,EACE,QAAS,CACP,OAAQ,CAAC,KAAM,IAAI,CACvB,EACE,QAAS,CACP,OAAQ,CAAC,KAAM,IAAI,CACvB,EACE,SAAU,CACR,OAAQ,CAAC,KAAM,IAAI,CACvB,EACE,SAAU,CACR,OAAQ,CAAC,KAAM,IAAI,CACvB,EACE,YAAa,CACX,OAAQ,CAAC,KAAM,IAAI,CACvB,EACE,YAAa,CACX,OAAQ,CAAC,KAAM,IAAI,CACvB,EACE,WAAY,CACV,OAAQ,CAAC,KAAM,IAAI,CACvB,EACE,WAAY,CACV,OAAQ,CAAC,KAAM,IAAI,CACvB,CACA,EACMC,GAA+B,CACnC,QAAS,CACP,OAAQ,CAAC,KAAM,IAAI,CACvB,EACE,QAAS,CACP,OAAQ,CAAC,KAAM,IAAI,CACvB,EACE,SAAU,CACR,OAAQ,CAAC,KAAM,IAAI,CACvB,EACE,SAAU,CACR,OAAQ,CAAC,KAAM,IAAI,CACvB,EACE,YAAa,CACX,OAAQ,CAAC,KAAM,IAAI,CACvB,EACE,YAAa,CACX,OAAQ,CAAC,KAAM,IAAI,CACvB,EACE,WAAY,CACV,OAAQ,CAAC,KAAM,IAAI,CACvB,EACE,WAAY,CACV,OAAQ,CAAC,KAAM,IAAI,CACvB,CACA,EACMC,GAAuB,IAAI,IAAI,CAAC,UAAW,WAAY,aAAc,cAAe,UAAW,aAAc,WAAY,aAAa,CAAC,EAC9H,SAASC,GAAczuI,EAAQ,CAC5C,KAAM,CACJ,WAAAkuI,EACA,mBAAAC,EACA,mBAAAO,EACA,OAAArnH,EACA,aAAAmT,CAEF,EAAIx6B,EACE2uI,EAAiBT,EAAa,EAC9BU,EAAe,CAAA,EACrB,cAAO,KAAKN,EAAiB,EAAE,QAAQprJ,GAAO,CAC5C,MAAMsrF,EAAWkgE,GAAsBH,GAA6BrrJ,CAAG,GAAKorJ,GAAkBprJ,CAAG,EAC3FgqH,EAAgB,OAAO,OAAO,OAAO,OAAO,CAAA,EAAI1+B,CAAQ,EAAG,CAC/D,OAAQ,CAAC,EAAG,CAAC,EACb,aAAc,EACpB,CAAK,EAOD,OANAogE,EAAa1rJ,CAAG,EAAIgqH,EAEhBshC,GAAqB,IAAItrJ,CAAG,IAC9BgqH,EAAc,UAAY,IAGpBhqH,EAAG,CACT,IAAK,MACL,IAAK,UACL,IAAK,WACHgqH,EAAc,OAAO,CAAC,EAAI,CAACyhC,EAAiBtnH,EAC5C,MACF,IAAK,SACL,IAAK,aACL,IAAK,cACH6lF,EAAc,OAAO,CAAC,EAAIyhC,EAAiBtnH,EAC3C,MACF,IAAK,OACL,IAAK,UACL,IAAK,aACH6lF,EAAc,OAAO,CAAC,EAAI,CAACyhC,EAAiBtnH,EAC5C,MACF,IAAK,QACL,IAAK,WACL,IAAK,cACH6lF,EAAc,OAAO,CAAC,EAAIyhC,EAAiBtnH,EAC3C,KACR,CAEI,MAAMmmH,EAAcH,GAAoB,CACtC,cAAe7yG,EACf,oBAAqB,EAC3B,CAAK,EACD,GAAIk0G,EACF,OAAQxrJ,EAAG,CACT,IAAK,UACL,IAAK,aACHgqH,EAAc,OAAO,CAAC,EAAI,CAACsgC,EAAY,sBAAwBmB,EAC/D,MACF,IAAK,WACL,IAAK,cACHzhC,EAAc,OAAO,CAAC,EAAIsgC,EAAY,sBAAwBmB,EAC9D,MACF,IAAK,UACL,IAAK,WACHzhC,EAAc,OAAO,CAAC,EAAI,CAACsgC,EAAY,sBAAwB,EAAImB,EACnE,MACF,IAAK,aACL,IAAK,cACHzhC,EAAc,OAAO,CAAC,EAAIsgC,EAAY,sBAAwB,EAAImB,EAClE,KACV,CAGIzhC,EAAc,SAAW+gC,GAAmB/qJ,EAAKsqJ,EAAaU,EAAYC,CAAkB,EAG1FjhC,EAAc,WAAa,cAE/B,CAAC,EACM0hC,CACT,CC3KA,MAAMC,GAAkB9xH,GAAS,CAC/B,KAAM,CACJ,KAAAoY,EACA,aAAAsR,EAEA,gBAAAqoG,EACA,aAAAC,EACA,UAAAC,EACA,oBAAAC,EACA,YAAAC,EACA,cAAAv0G,EACA,mBAAAw0G,EACA,UAAAC,EACA,UAAAvM,EACA,sBAAAiL,EACA,eAAAjC,CACJ,EAAM9uH,EAEEsyH,EAAoBl6G,EAAK85G,CAAmB,EAAE,IAAIpD,CAAc,EAAE,IAAIiC,CAAqB,EAAE,MAAK,EAElGwB,EAAsBn6G,EAAK85G,CAAmB,EAAE,IAAI,CAAC,EAAE,IAAIpD,CAAc,EAAE,MAAK,EACtF,MAAO,CAAC,CACN,CAACplG,CAAY,EAAG,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIsC,GAAehsB,CAAK,CAAC,EAAG,CAClG,SAAU,WACV,OAAQmyH,EACR,QAAS,QACT,MAAO,cACP,SAAUJ,EACV,WAAY,UAEZ,mBAAoB,iDACpB,gBAAiB,CAAC,6BAA8B,qBAAqB,EAAE,KAAK,GAAG,EAC/E,WAAY,CACV,QAAS,MACjB,EACM,gCAAiCE,EAEjC,CAAC,GAAGvoG,CAAY,QAAQ,EAAG,CACzB,SAAU6oG,EACV,UAAW30G,EACX,QAAS,GAAG9c,GAAKd,EAAM,KAAKqyH,CAAS,EAAE,IAAI,CAAC,EAAE,MAAK,CAAE,CAAC,IAAIvxH,GAAKglH,CAAS,CAAC,GACzE,MAAOkM,EACP,UAAW,QACX,eAAgB,OAChB,SAAU,aACV,gBAAiBC,EACjB,aAAcC,EACd,UAAWE,EACX,UAAW,YACnB,EAEM,CAAC,CAAC,sBAAuB,uBAAwB,yBAA0B,yBAAyB,EAAE,KAAK,GAAG,CAAC,EAAG,CAChH,SAAUE,CAClB,EAEM,CAAC,CAAC,mBAAoB,sBAAuB,yBAA0B,oBAAqB,uBAAwB,yBAAyB,EAAE,KAAK,GAAG,CAAC,EAAG,CACzJ,CAAC,GAAG5oG,CAAY,QAAQ,EAAG,CACzB,aAAc1pB,EAAM,IAAIkyH,EAAqB7B,EAA2B,CAClF,CACA,EACM,CAAC,GAAG3mG,CAAY,UAAU,EAAG,CAC3B,SAAU,UAClB,CACA,CAAK,EAAGwD,GAAeltB,EAAO,CAAC0f,EAAU,CACnC,UAAA4N,CACN,KAAW,CACL,CAAC,IAAI5D,CAAY,IAAIhK,CAAQ,EAAE,EAAG,CAChC,CAAC,GAAGgK,CAAY,QAAQ,EAAG,CACzB,gBAAiB4D,CAC3B,EACQ,CAAC,GAAG5D,CAAY,QAAQ,EAAG,CACzB,gCAAiC4D,CAC3C,CACA,CACA,EAAM,CAAC,EAAG,CAEJ,QAAS,CACP,UAAW,KACnB,CACA,CAAK,CACL,EAEEqjG,GAAc3wH,EAAO,oCAAoC,EAEzD,CACE,CAAC,GAAG0pB,CAAY,OAAO,EAAG,CACxB,SAAU,WACV,SAAU,OACV,OAAQ1pB,EAAM,cACpB,CACA,CAAG,CACH,EAEa69C,GAAwB79C,GAAS,OAAO,OAAO,OAAO,OAAO,CACxE,YAAaA,EAAM,gBAAkB,EACvC,EAAGswH,GAAoB,CACrB,cAAetwH,EAAM,aACrB,oBAAqB,EACvB,CAAC,CAAC,EAAG6uH,GAAc5oG,GAAWjmB,EAAO,CACnC,kBAAmB,KAAK,IAAIA,EAAM,kBAAmB,CAAC,CACxD,CAAC,CAAC,CAAC,EACHwyH,GAAe,CAAC1qG,EAAWS,EAAc,KACtBlB,GAAc,UAAWrnB,GAAS,CACjD,KAAM,CACJ,aAAAyd,EACA,oBAAAg1G,EACA,iBAAAC,CACN,EAAQ1yH,EACE2yH,EAAe1sG,GAAWjmB,EAAO,CAErC,gBAAiB,IACjB,aAAcyyH,EACd,oBAAqBh1G,EACrB,UAAWi1G,CACjB,CAAK,EACD,MAAO,CAACZ,GAAgBa,CAAY,EAAGp1E,GAAev9C,EAAO,eAAe,CAAC,CAC/E,EAAG69C,GAAuB,CACxB,WAAY,GAEZ,YAAAt1B,CACJ,CAAG,EACeT,CAAS,EC7HrB8qG,GAAgB5oG,GAAa,IAAI7R,GAAS,GAAGA,CAAK,UAAU,EAO3D,SAAS06G,GAAc16G,EAAO26G,EAAiB,GAAM,CAC1D,OAAIA,EACK,CAAA,EAAG,OAAOr6H,GAAmBm6H,EAAa,EAAGn6H,GAAmBuxB,EAAY,CAAC,EAAE,SAAS7R,CAAK,EAE/F6R,GAAa,SAAS7R,CAAK,CACpC,CCZO,SAAS46G,GAAWjrG,EAAW3P,EAAO,CAC3C,MAAM66G,EAAkBH,GAAc16G,CAAK,EACrC2pB,EAAY55C,GAAW,CAC3B,CAAC,GAAG4/B,CAAS,IAAI3P,CAAK,EAAE,EAAGA,GAAS66G,CACxC,CAAG,EACKtF,EAAe,CAAA,EACfuF,EAAa,CAAA,EACnB,OAAI96G,GAAS,CAAC66G,IACZtF,EAAa,WAAav1G,EAE1B86G,EAAW,+BAA+B,EAAI96G,GAEzC,CACL,UAAA2pB,EACA,aAAA4rF,EACA,WAAAuF,CACJ,CACA,CCVA,MAAM7H,GAAYrvI,GAAS,CACzB,KAAM,CACJ,UAAWukC,EACX,UAAAwhB,EACA,UAAA6oD,EAAY,MACZ,MAAA1+B,EACA,MAAA9zC,EACA,kBAAA+1G,CACJ,EAAMnyI,EACE,CACJ,aAAA8kC,CACJ,EAAMn+B,EAAM,WAAW69B,EAAa,EAC5BuH,EAAYjH,EAAa,UAAWP,CAAkB,EACtD,CAAC8H,EAAY1mB,EAAQ2mB,CAAS,EAAIX,GAASI,CAAS,EAEpD8d,EAAYmtF,GAAWjrG,EAAW3P,CAAK,EACvC+6G,EAAoBttF,EAAU,WAC9ButF,EAA6B,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIjF,CAAiB,EAAGtoF,EAAU,YAAY,EACvGsoC,EAAMhmF,GAAWwZ,EAAQ2mB,EAAWP,EAAW,GAAGA,CAAS,QAAS,GAAGA,CAAS,cAAc6iE,CAAS,GAAI7oD,EAAW8D,EAAU,SAAS,EAC/I,OAAOxd,EAAwB1lC,EAAM,cAAc,MAAO,CACxD,UAAWwrF,EACX,MAAOglD,CACX,EAAkBxwI,EAAM,cAAc,MAAO,CACzC,UAAW,GAAGolC,CAAS,QAC3B,CAAG,EAAgBplC,EAAM,cAAcqlG,GAAO,OAAO,OAAO,CAAA,EAAIhsG,EAAO,CACnE,UAAW2lB,EACX,UAAWomB,EACX,kBAAmBqrG,CACvB,CAAG,EAAGlnE,CAAK,CAAC,CAAC,CACb,ECpCA,IAAIphC,GAAgC,SAAU/kD,EAAGe,EAAG,CAClD,IAAId,EAAI,CAAA,EACR,QAASe,KAAKhB,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGgB,CAAC,GAAKD,EAAE,QAAQC,CAAC,EAAI,IAAGf,EAAEe,CAAC,EAAIhB,EAAEgB,CAAC,GAC/F,GAAIhB,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WAAY,QAAS,EAAI,EAAGgB,EAAI,OAAO,sBAAsBhB,CAAC,EAAG,EAAIgB,EAAE,OAAQ,IAClID,EAAE,QAAQC,EAAE,CAAC,CAAC,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKhB,EAAGgB,EAAE,CAAC,CAAC,IAAGf,EAAEe,EAAE,CAAC,CAAC,EAAIhB,EAAEgB,EAAE,CAAC,CAAC,GAElG,OAAOf,CACT,EAyLA,MAAMunJ,GAxK+B5qI,EAAM,WAAW,CAAC3G,EAAOP,IAAQ,CACpE,IAAI5R,EAAID,EACR,KAAM,CACF,UAAW22C,EACX,cAAA8yG,EACA,oBAAAnF,EACA,MAAA91G,EACA,kBAAA+1G,EACA,SAAAplI,EACA,gBAAA6lE,EACA,mBAAAg/D,EACA,qBAAAI,EACA,gBAAAl7C,EACA,MAAAqU,EAAQ,GACR,MAAAj7B,EACA,QAAAkiE,EACA,kBAAA3jC,EACA,mBAAAmnC,EAAqB,GACrB,mBAAAP,EAAqB,GACrB,OAAAp3F,EACA,kBAAAjZ,EACA,UAAA4pE,EAAY,MACZ,gBAAA4M,EAAkB,GAClB,gBAAAE,EAAkB,GAClB,aAAAi2B,EACA,cAAAhrF,EACA,iBAAA6qF,EACA,OAAA76H,EACA,WAAY27H,CAClB,EAAQtyI,EACJu9C,EAAYzO,GAAO9uC,EAAO,CAAC,YAAa,gBAAiB,sBAAuB,QAAS,oBAAqB,WAAY,kBAAmB,qBAAsB,uBAAwB,kBAAmB,QAAS,QAAS,UAAW,oBAAqB,qBAAsB,qBAAsB,SAAU,oBAAqB,YAAa,kBAAmB,kBAAmB,eAAgB,gBAAiB,mBAAoB,SAAU,YAAY,CAAC,EACtcs3I,EAAkB,CAAC,CAACnsC,EACpB,CAAA,CAAGlnF,CAAK,EAAIgnB,GAAQ,EACpB,CACJ,kBAAmB8rD,EACnB,aAAAjyD,EACA,UAAAC,EACA,UAAWgnB,EACX,MAAOC,EACP,WAAY8b,EACZ,OAAQC,CACZ,EAAMpjC,GAAmB,SAAS,EAE1Bv3B,EAAUirB,GAAc,SAAS,EACjCk/G,EAAa5wI,EAAM,OAAO,IAAI,EAC9B6wI,GAAa,IAAM,CACvB,IAAI3pJ,IACHA,GAAK0pJ,EAAW,WAAa,MAAQ1pJ,KAAO,QAAkBA,GAAG,WAAU,CAC9E,EACA8Y,EAAM,oBAAoBlH,EAAK,IAAM,CACnC,IAAI5R,GAAID,GACR,MAAO,CACL,WAAA4pJ,GACA,gBAAiB,IAAM,CACrBpqI,EAAQ,WAAW,GAAO,kBAAmB,YAAY,EACzDoqI,GAAU,CACZ,EACA,eAAgB3pJ,GAAK0pJ,EAAW,WAAa,MAAQ1pJ,KAAO,OAAS,OAASA,GAAG,cACjF,cAAeD,GAAK2pJ,EAAW,WAAa,MAAQ3pJ,KAAO,OAAS,OAASA,GAAG,YACtF,CACE,CAAC,EAEG,QAAQ,IAAI,WAAa,eAC3B,CAAC,CAAC,UAAW,MAAM,EAAG,CAAC,iBAAkB,aAAa,EAAG,CAAC,kBAAmB,cAAc,EAAG,CAAC,qBAAsB,iBAAiB,EAAG,CAAC,uBAAwB,iBAAiB,EAAG,CAAC,qBAAsB,iCAAiC,EAAG,CAAC,eAAgB,uBAAuB,EAAG,CAAC,oBAAqB,uBAAuB,EAAG,CAAC,mBAAoB,2BAA2B,CAAC,EAAE,QAAQ,CAAC,CAACupG,GAAgBC,EAAO,IAAM,CACpahqF,EAAQ,WAAW,EAAE+pF,MAAkBn3F,GAAQm3F,GAAgBC,EAAO,CACxE,CAAC,EACD,QAAQ,IAAI,WAAa,cAAehqF,EAAQ,CAAC4kI,GAAwB,OAAOA,GAAyB,UAAW,QAAS,kGAAkG,EAC/N,QAAQ,IAAI,WAAa,cAAe5kI,EAAQ,CAAC+9F,GAAS,OAAOA,GAAU,WAAa,EAAE,uBAAwBA,GAAQ,aAAc,oFAAoF,GAG9N,KAAM,CAACp9B,GAAM2sB,EAAO,EAAI1yD,GAAe,GAAO,CAC5C,OAAQn6C,EAAKmS,EAAM,QAAU,MAAQnS,IAAO,OAASA,EAAKmS,EAAM,QAChE,cAAepS,EAAKoS,EAAM,eAAiB,MAAQpS,IAAO,OAASA,EAAKoS,EAAM,cAClF,CAAG,EACKy3I,GAAU,CAACvnE,GAAS,CAACkiE,GAAWliE,IAAU,EAC1Ck+D,GAAesJ,IAAO,CAC1B,IAAI7pJ,GAAID,GACR8sG,GAAQ+8C,GAAU,GAAQC,EAAG,EACxBD,MACF5pJ,GAAKmS,EAAM,gBAAkB,MAAQnS,KAAO,QAAkBA,GAAG,KAAKmS,EAAO03I,EAAG,GAChF9pJ,GAAKoS,EAAM,mBAAqB,MAAQpS,KAAO,QAAkBA,GAAG,KAAKoS,EAAO03I,EAAG,EAExF,EACMC,EAAoBhxI,EAAM,QAAQ,IAAM,CAC5C,IAAI9Y,GAAID,GACR,IAAIgqJ,GAA2BhC,EAC/B,OAAI,OAAOzqC,GAAU,WACnBysC,IAA4BhqJ,IAAMC,GAAKs9G,EAAM,iBAAmB,MAAQt9G,KAAO,OAASA,GAAKs9G,EAAM,sBAAwB,MAAQv9G,KAAO,OAASA,GAAKgoJ,GAEnJnnC,GAAqBknC,GAAc,CACxC,mBAAoBiC,GACpB,mBAAAvC,EACA,WAAYiC,EAAkBrzH,EAAM,eAAiB,EACrD,aAAcA,EAAM,aACpB,OAAQA,EAAM,SAEhB,CAAC,CACH,EAAG,CAAC2xH,EAAoBzqC,EAAOsD,EAAmBxqF,CAAK,CAAC,EAClD4zH,EAAclxI,EAAM,QAAQ,IAC5BupE,IAAU,EACLA,EAEFkiE,GAAWliE,GAAS,GAC1B,CAACkiE,EAASliE,CAAK,CAAC,EACb4nE,GAAkCnxI,EAAM,cAAcwnF,GAAiB,CAC3E,MAAO,EACX,EAAK,OAAO0pD,GAAgB,WAAaA,EAAW,EAAKA,CAAW,EAC5D9rG,EAAYjH,EAAa,UAAWP,CAAkB,EACtD2I,GAAgBpI,EAAY,EAC5BizG,GAAoB/3I,EAAM,qBAAqB,EACrD,IAAIg4I,GAAWjqE,GAEX,EAAE,SAAU/tE,IAAU,EAAE,YAAaA,IAAUy3I,KACjDO,GAAW,IAGb,MAAMhrI,GAAqBrG,EAAM,eAAeoG,CAAQ,GAAK,CAACF,GAAWE,CAAQ,EAAIA,EAAwBpG,EAAM,cAAc,OAAQ,KAAMoG,CAAQ,EACjJ01E,GAAaz1E,GAAM,MACnBirI,GAAW,CAACx1D,GAAW,WAAa,OAAOA,GAAW,WAAc,SAAWt2E,GAAWs2E,GAAW,UAAW40D,GAAiB,GAAGtrG,CAAS,OAAO,EAAI02C,GAAW,UAEnK,CAACp2C,GAAY1mB,GAAQ2mB,EAAS,EAAIX,GAASI,EAAW,CAACgsG,EAAiB,EAExEluF,GAAYmtF,GAAWjrG,EAAW3P,CAAK,EACvC+6G,GAAoBttF,GAAU,WAC9BquF,EAAiB/rI,GAAWqlI,EAAkB,CAClD,CAAC,GAAGzlG,CAAS,MAAM,EAAGhH,IAAc,KACxC,EAAK8kB,GAAU,UAAWlD,EAAehhC,GAAQ2mB,GAAWyf,EAAkB+b,EAAkB,KAAMwqE,GAAsB,KAAuC,OAASA,EAAkB,IAAI,EAC1L6F,GAAiBhsI,GAAW27D,EAAkB,KAAMwqE,GAAsB,KAAuC,OAASA,EAAkB,IAAI,EAEhJ,CAAC1kF,GAAQ4pC,EAAa,EAAIjqC,GAAU,UAAWhQ,EAAU,MAAM,EAC/DntB,GAAuBzpB,EAAM,cAAcyxI,GAAW,OAAO,OAAO,CAAA,EAAI76F,EAAW,CACvF,OAAQqQ,GACR,UAAW0pF,EACX,UAAW1oC,EACX,gBAAiB4M,EACjB,gBAAiBE,EACjB,UAAW3vE,EACX,WAAY,CACV,KAAMmsG,EACN,KAAMC,EACZ,EACI,OAAQ,CACN,KAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIhB,EAAiB,EAAGpvE,EAAc,IAAI,EAAG/b,CAAY,EAAG2lF,CAAY,EAAGh7H,GAAW,KAA4B,OAASA,EAAO,IAAI,EAClN,KAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIoxD,EAAc,IAAI,EAAGoqE,CAAiB,EAAGx7H,GAAW,KAA4B,OAASA,EAAO,IAAI,EAAGkzC,GAAU,YAAY,CACrM,EACI,oBAAqB7kB,GAAqBktG,GAAuBn7C,EACjE,IAAKwgD,EACL,kBAAmBI,EACnB,QAASG,GACT,QAASE,GACT,gBAAiB5J,GACjB,mBAAoBx7D,GAA2Eg/D,EAC/F,aAA2BjrI,EAAM,cAAc,OAAQ,CACrD,UAAW,GAAGolC,CAAS,gBAC7B,CAAK,EACD,OAAQ,CACN,WAAY0I,GAAkBvH,GAAe,gBAAiBltC,EAAM,cAAc,EAClF,eAAgB,GACtB,EAEI,qBAAsB82F,GAA2E,CAAC,CAACk7C,CACvG,CAAG,EAAGgG,GAAW7vF,GAAan7C,GAAO,CACjC,UAAWirI,EACf,CAAG,EAAIjrI,EAAK,EACV,OAAOq/B,GAAwB1lC,EAAM,cAAcqmD,GAAc,SAAU,CACzE,MAAOwqC,EACX,EAAKpnE,EAAO,CAAC,CACb,CAAC,EAEG,QAAQ,IAAI,WAAa,eAC3BmhH,GAAQ,YAAc,WAExBA,GAAQ,uCAAyClC,GCrMjD,IAAIgJ,GAAe,CAAE,KAAQ,CAAE,IAAO,MAAO,MAAS,CAAE,QAAW,gBAAiB,UAAa,OAAO,EAAI,SAAY,CAAC,CAAE,IAAO,OAAQ,MAAS,CAAE,EAAK,uLAAuL,EAAI,CAAC,EAAI,KAAQ,OAAQ,MAAS,UAAU,ECMzXA,GAAe,SAAsBr4I,EAAOP,EAAK,CACnD,OAAoBkH,EAAM,cAAcogD,GAAUv6C,GAAS,CAAA,EAAIxM,EAAO,CACpE,IAAKP,EACL,KAAM64I,EACV,CAAG,CAAC,CACJ,EAGIrxF,GAAuBtgD,EAAM,WAAW0xI,EAAY,EACpD,QAAQ,IAAI,WAAa,eAC3BpxF,GAAQ,YAAc,gBCdxB,IAAIsxF,GAAM1rF,GAAQ,IAChB2rF,GAAM3rF,GAAQ,IACD,SAAS4rF,GAAiBp2I,EAAM,CAC7C,IAAIo0C,EAAUp0C,EAAK,QACjByjH,EAAazjH,EAAK,WAClBq/F,EAAkBr/F,EAAK,gBACvBilE,EAAYjlE,EAAK,UACjBq2I,EAAar2I,EAAK,WAChBs2I,EAAehyI,EAAM,OAAO,EAAK,EACjCiyI,EAAgC,UAAyC,CAC3E,GAAIniG,EAAS,CACX,IAAIuyE,EAAqB6vB,GACxB7vB,EAAsBlD,EAAW,WAAa,MAAQkD,IAAwB,SAAW6vB,EAAwB7vB,EAAoB,SAAW,MAAQ6vB,IAA0B,QAAUA,EAAsB,KAAK7vB,CAAmB,EAC3OtnB,GAAoB,MAAsCA,EAAgB,EAAK,CACjF,CACF,EACIo3C,EAAY,UAAqB,CACnC,IAAIC,EACJ,OAAKA,EAAsBL,EAAW,WAAa,MAAQK,IAAwB,QAAUA,EAAoB,OAC/GL,EAAW,QAAQ,MAAK,EACxBC,EAAa,QAAU,GAChB,IAEF,EACT,EACIK,EAAgB,SAAuBvqJ,EAAO,CAChD,OAAQA,EAAM,QAAO,CACnB,KAAK8pJ,GACHK,EAA6B,EAC7B,MACF,KAAKJ,GACH,CACE,IAAIS,EAAc,GACbN,EAAa,UAChBM,EAAcH,EAAS,GAErBG,EACFxqJ,EAAM,eAAc,EAEpBmqJ,EAA6B,EAE/B,KACF,CACR,CACE,EACAjyI,EAAM,UAAU,UAAY,CAC1B,OAAI8vC,GACF,OAAO,iBAAiB,UAAWuiG,CAAa,EAC5C1xE,GAEFvqD,GAAI+7H,EAAW,CAAC,EAEX,UAAY,CACjB,OAAO,oBAAoB,UAAWE,CAAa,EACnDL,EAAa,QAAU,EACzB,GAEK,UAAY,CACjBA,EAAa,QAAU,EACzB,CACF,EAAG,CAACliG,CAAO,CAAC,CACd,CC9DA,IAAIyiG,GAAuB/hF,EAAAA,WAAW,SAAUn3D,EAAOP,EAAK,CAC1D,IAAI2yI,EAAUpyI,EAAM,QAClBmrG,EAAQnrG,EAAM,MACd+rC,EAAY/rC,EAAM,UAChBm5I,EAAc9mI,EAAAA,QAAQ,UAAY,CACpC,IAAI+mI,EACJ,OAAI,OAAOhH,GAAY,WACrBgH,EAAiBhH,EAAO,EAExBgH,EAAiBhH,EAEZgH,CACT,EAAG,CAAChH,CAAO,CAAC,EACRiH,EAAcxmI,GAAWpT,EAAKkU,GAAWwlI,CAAW,CAAC,EACzD,OAAoBxyI,EAAM,cAAcA,EAAM,SAAU,KAAMwkG,GAAsBxkG,EAAM,cAAc,MAAO,CAC7G,UAAW,GAAG,OAAOolC,EAAW,QAAQ,CAC5C,CAAG,EAAgBplC,EAAM,aAAawyI,EAAa,CAC/C,IAAK9lI,GAAW8lI,CAAW,EAAIE,EAAc,MACjD,CAAG,CAAC,CACJ,CAAC,ECrBGhE,GAAqB,CACvB,QAAS,EACT,QAAS,CACX,EACI5/B,GAAe,CAAC,EAAG,CAAC,EACpB/G,GAAa,CACf,QAAS,CACP,OAAQ,CAAC,KAAM,IAAI,EACnB,SAAU2mC,GACV,OAAQ,CAAC,EAAG,EAAE,EACd,aAAc5/B,EAClB,EACE,IAAK,CACH,OAAQ,CAAC,KAAM,IAAI,EACnB,SAAU4/B,GACV,OAAQ,CAAC,EAAG,EAAE,EACd,aAAc5/B,EAClB,EACE,SAAU,CACR,OAAQ,CAAC,KAAM,IAAI,EACnB,SAAU4/B,GACV,OAAQ,CAAC,EAAG,EAAE,EACd,aAAc5/B,EAClB,EACE,WAAY,CACV,OAAQ,CAAC,KAAM,IAAI,EACnB,SAAU4/B,GACV,OAAQ,CAAC,EAAG,CAAC,EACb,aAAc5/B,EAClB,EACE,OAAQ,CACN,OAAQ,CAAC,KAAM,IAAI,EACnB,SAAU4/B,GACV,OAAQ,CAAC,EAAG,CAAC,EACb,aAAc5/B,EAClB,EACE,YAAa,CACX,OAAQ,CAAC,KAAM,IAAI,EACnB,SAAU4/B,GACV,OAAQ,CAAC,EAAG,CAAC,EACb,aAAc5/B,EAClB,CACA,ECtCInjE,GAAY,CAAC,QAAS,YAAa,iBAAkB,YAAa,QAAS,YAAa,aAAc,oBAAqB,aAAc,aAAc,mBAAoB,eAAgB,UAAW,UAAW,YAAa,UAAW,WAAY,iBAAiB,EAQ1Q,SAASgnG,GAASt5I,EAAOP,EAAK,CAC5B,IAAI85I,EACAC,EAAex5I,EAAM,MACvBmrG,EAAQquC,IAAiB,OAAS,GAAQA,EAC1Cz8E,EAAmB/8D,EAAM,UACzB+rC,EAAYgxB,IAAqB,OAAS,cAAgBA,EAC1DroB,EAAiB10C,EAAM,eACvB6yE,EAAY7yE,EAAM,UAClBkrG,EAAQlrG,EAAM,MACd6xI,EAAmB7xI,EAAM,UACzB4uG,EAAYijC,IAAqB,OAAS,aAAeA,EACzD4H,EAAoBz5I,EAAM,WAC1B0uG,EAAa+qC,IAAsB,OAASC,GAAaD,EACzDz0G,EAAoBhlC,EAAM,kBAC1B8tG,EAAa9tG,EAAM,WACnB+tG,EAAa/tG,EAAM,WACnBwxI,EAAmBxxI,EAAM,iBACzB2xI,EAAe3xI,EAAM,aACrBy2C,EAAUz2C,EAAM,QAChByxI,EAAiBzxI,EAAM,QACvB2iF,EAAU8uD,IAAmB,OAAS,CAAC,OAAO,EAAIA,EAClDnqE,EAAYtnE,EAAM,UAClBoyI,EAAUpyI,EAAM,QAChB+M,EAAW/M,EAAM,SACjB0hG,EAAkB1hG,EAAM,gBACxByrD,EAAa7qC,GAAyB5gB,EAAOsyC,EAAS,EACpD5K,EAAkB/gC,EAAM,SAAQ,EAClCghC,EAAmB7pB,GAAe4pB,EAAiB,CAAC,EACpDiyG,EAAiBhyG,EAAiB,CAAC,EACnCiyG,EAAoBjyG,EAAiB,CAAC,EACpCsT,EAAgB,YAAaj7C,EAAQy2C,EAAUkjG,EAC/C7zB,EAAan/G,EAAM,OAAO,IAAI,EAC9B+xI,EAAa/xI,EAAM,OAAO,IAAI,EAC9BkoE,EAAWloE,EAAM,OAAO,IAAI,EAChCA,EAAM,oBAAoBlH,EAAK,UAAY,CACzC,OAAOqmH,EAAW,OACpB,CAAC,EACD,IAAI+zB,EAAsB,SAA6B/lE,GAAY,CACjE8lE,EAAkB9lE,EAAU,EAC5B4tB,GAAoB,MAAsCA,EAAgB5tB,EAAU,CACtF,EACA2kE,GAAiB,CACf,QAASx9F,EACT,WAAY4zB,EACZ,gBAAiBgrE,EACjB,UAAWvyE,EACX,WAAYoxE,CAChB,CAAG,EACD,IAAI1yF,EAAU,SAAiBl7D,GAAG,CAChC,IAAIgvJ,GAAiB95I,EAAM,eAC3B45I,EAAkB,EAAK,EACnBE,IACFA,GAAehvJ,EAAC,CAEpB,EACIivJ,EAAiB,UAA0B,CAC7C,OAAoBpzI,EAAM,cAAcuyI,GAAS,CAC/C,IAAKR,EACL,QAAStG,EACT,UAAWrmG,EACX,MAAOo/D,CACb,CAAK,CACH,EACI6uC,EAAyB,UAAkC,CAC7D,OAAI,OAAO5H,GAAY,WACd2H,EAEFA,EAAc,CACvB,EACIE,EAAiC,UAA0C,CAC7E,IAAIC,GAA8Bl6I,EAAM,4BACtCm8G,GAAan8G,EAAM,WACrB,MAAI,gCAAiCA,EAC5Bk6I,GAEF,CAAC/9B,EACV,EACIg+B,EAAmB,UAA4B,CACjD,IAAI9C,GAAgBr3I,EAAM,cAC1B,OAAIq3I,KAAkB,OACbA,GAEF,GAAG,OAAOtrG,EAAW,OAAO,CACrC,EACIqgD,EAA4BzlF,EAAM,aAAaoG,EAAU,CAC3D,UAAWZ,IAAYotI,EAAkBxsI,EAAS,SAAW,MAAQwsI,IAAoB,OAAS,OAASA,EAAgB,UAAWt+F,GAAiBk/F,EAAgB,CAAE,EACzK,IAAK9mI,GAAWtG,CAAQ,EAAI8F,GAAWg8D,EAAUl7D,GAAW5G,CAAQ,CAAC,EAAI,MAC7E,CAAG,EACGqtI,GAAoBrsC,EACxB,MAAI,CAACqsC,IAAqBz3D,EAAQ,QAAQ,aAAa,IAAM,KAC3Dy3D,GAAoB,CAAC,OAAO,GAEVzzI,EAAM,cAAcu0G,GAAS1uG,GAAS,CACxD,kBAAmBkiG,CACvB,EAAKjjD,EAAY,CACb,UAAW1f,EACX,IAAK+5E,EACL,eAAgB35G,GAAWqlI,EAAkBzjI,EAAgB,CAAA,EAAI,GAAG,OAAOg+B,EAAW,aAAa,EAAGo/D,CAAK,CAAC,EAC5G,WAAYwmC,EACZ,OAAQhvD,EACR,WAAYmrB,EACZ,WAAYssC,GACZ,eAAgBxrC,EAChB,WAAY1D,EACZ,oBAAqBx2D,EACrB,eAAgBm+B,EAChB,aAAc53B,EACd,QAASg/F,IAAmC,WAAa,GACzD,MAAOD,EAAsB,EAC7B,qBAAsBH,EACtB,aAAc7zF,EACd,kBAAmBhhB,CACvB,CAAG,EAAGonD,CAAY,CAClB,CACA,MAAAiuD,GAA4B1zI,EAAM,WAAW2yI,EAAQ,EC7H9C,IAAIgB,GAAyB3zI,EAAM,cAAc,IAAI,EACrD,SAAS4zI,GAAUx2H,EAAMy2H,EAAU,CACxC,OAAIz2H,IAAS,OACJ,KAEF,GAAG,OAAOA,EAAM,GAAG,EAAE,OAAOy2H,CAAQ,CAC7C,CAKO,SAASC,GAAUD,EAAU,CAClC,IAAIhvI,EAAK7E,EAAM,WAAW2zI,EAAS,EACnC,OAAOC,GAAU/uI,EAAIgvI,CAAQ,CAC/B,CCbA,IAAIloG,GAAY,CAAC,WAAY,QAAQ,EAI1BooG,GAA2B/zI,EAAM,cAAc,IAAI,EAC9D,SAASynF,GAAWhiB,EAAQ3gF,EAAQ,CAClC,IAAI+R,EAAQse,EAAc,CAAA,EAAIswD,CAAM,EACpC,cAAO,KAAK3gF,CAAM,EAAE,QAAQ,SAAUrB,EAAK,CACzC,IAAImB,EAAQE,EAAOrB,CAAG,EAClBmB,IAAU,SACZiS,EAAMpT,CAAG,EAAImB,EAEjB,CAAC,EACMiS,CACT,CACe,SAASm9I,GAA2Bt4I,EAAM,CACvD,IAAI0K,EAAW1K,EAAK,SAClBg8F,EAASh8F,EAAK,OACdk7C,EAAY38B,GAAyBve,EAAMiwC,EAAS,EAClDzN,EAAUl+B,EAAM,WAAW+zI,EAAW,EACtCE,EAAqBvoI,GAAQ,UAAY,CAC3C,OAAO+7E,GAAWvpD,EAAS0Y,CAAS,CACtC,EAAG,CAAC1Y,EAAS0Y,CAAS,EAAG,SAAU7/C,EAAMtQ,EAAM,CAC7C,MAAO,CAACixG,IAAW3gG,EAAK,CAAC,IAAMtQ,EAAK,CAAC,GAAK,CAAC0zB,GAAQpjB,EAAK,CAAC,EAAGtQ,EAAK,CAAC,EAAG,EAAI,EAC3E,CAAC,EACD,OAAoBuZ,EAAM,cAAc+zI,GAAY,SAAU,CAC5D,MAAOE,CACX,EAAK7tI,CAAQ,CACb,CC5BA,IAAI8tI,GAAY,CAAA,EAILC,GAAmCn0I,EAAM,cAAc,IAAI,EAC/D,SAASo0I,IAAa,CAC3B,OAAOp0I,EAAM,WAAWm0I,EAAmB,CAC7C,CAGO,IAAIE,GAAkCr0I,EAAM,cAAck0I,EAAS,EACnE,SAASI,GAAYT,EAAU,CACpC,IAAIU,EAAgBv0I,EAAM,WAAWq0I,EAAkB,EACvD,OAAOr0I,EAAM,QAAQ,UAAY,CAC/B,OAAO6zI,IAAa,OAAY,CAAA,EAAG,OAAO99H,GAAmBw+H,CAAa,EAAG,CAACV,CAAQ,CAAC,EAAIU,CAC7F,EAAG,CAACA,EAAeV,CAAQ,CAAC,CAC9B,CAIO,IAAIW,GAA+Bx0I,EAAM,cAAc,IAAI,ECrB9Dy0I,GAA8Bz0I,EAAM,cAAc,EAAE,ECCxD,SAAS00I,GAAUjtI,EAAM,CACvB,IAAIktI,EAAkB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC1F,GAAI5pF,GAAUtjD,CAAI,EAAG,CACnB,IAAImtI,EAAWntI,EAAK,SAAS,YAAW,EACpCotI,EAEJ,CAAC,QAAS,SAAU,WAAY,QAAQ,EAAE,SAASD,CAAQ,GAE3DntI,EAAK,mBAELmtI,IAAa,KAAO,CAAC,CAACntI,EAAK,aAAa,MAAM,EAG1CqtI,EAAertI,EAAK,aAAa,UAAU,EAC3CstI,EAAc,OAAOD,CAAY,EAGjCh1F,EAAW,KACf,OAAIg1F,GAAgB,CAAC,OAAO,MAAMC,CAAW,EAC3Cj1F,EAAWi1F,EACFF,GAAsB/0F,IAAa,OAC5CA,EAAW,GAIT+0F,GAAsBptI,EAAK,WAC7Bq4C,EAAW,MAENA,IAAa,OAASA,GAAY,GAAK60F,GAAmB70F,EAAW,EAC9E,CACA,MAAO,EACT,CACO,SAASk1F,GAAiBvtI,EAAM,CACrC,IAAIktI,EAAkB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACtFhyJ,EAAMozB,GAAmBtO,EAAK,iBAAiB,GAAG,CAAC,EAAE,OAAO,SAAUpB,EAAO,CAC/E,OAAOquI,GAAUruI,EAAOsuI,CAAe,CACzC,CAAC,EACD,OAAID,GAAUjtI,EAAMktI,CAAe,GACjChyJ,EAAI,QAAQ8kB,CAAI,EAEX9kB,CACT,CCpCA,IAAIsyJ,GAAO/uF,GAAQ,KACjBgvF,GAAQhvF,GAAQ,MAChBivF,GAAKjvF,GAAQ,GACbkvF,GAAOlvF,GAAQ,KACfmvF,GAAQnvF,GAAQ,MAChB0rF,GAAM1rF,GAAQ,IACdovF,GAAOpvF,GAAQ,KACfqvF,GAAMrvF,GAAQ,IACZsvF,GAAY,CAACL,GAAIC,GAAMH,GAAMC,EAAK,EACtC,SAASO,GAAU9+C,EAAM++C,EAAaC,EAAOlyC,EAAO,CAClD,IAAImyC,EACA7+I,EAAO,OACPtQ,EAAO,OACP2f,EAAW,WACXogB,EAAS,SAGb,GAAImwE,IAAS,UAAY8M,IAAU4xC,GACjC,MAAO,CACL,cAAe,EACrB,EAEE,IAAIruE,EAAS5/D,EAAgBA,EAAgB,CAAA,EAAI+tI,GAAIp+I,CAAI,EAAGq+I,GAAM3uJ,CAAI,EAClEgkI,EAAarjH,EAAgBA,EAAgBA,EAAgBA,EAAgB,CAAA,EAAI6tI,GAAMU,EAAQlvJ,EAAOsQ,CAAI,EAAGm+I,GAAOS,EAAQ5+I,EAAOtQ,CAAI,EAAG2uJ,GAAMhvI,CAAQ,EAAGivI,GAAOjvI,CAAQ,EAC1Ky5D,EAAWz4D,EAAgBA,EAAgBA,EAAgBA,EAAgBA,EAAgBA,EAAgB,CAAA,EAAI+tI,GAAIp+I,CAAI,EAAGq+I,GAAM3uJ,CAAI,EAAG4uJ,GAAOjvI,CAAQ,EAAGwrI,GAAKprH,CAAM,EAAGyuH,GAAMU,EAAQvvI,EAAWogB,CAAM,EAAG0uH,GAAOS,EAAQnvH,EAASpgB,CAAQ,EACzOyvI,EAAU,CACZ,OAAQ7uE,EACR,WAAYyjD,EACZ,SAAU5qD,EACV,UAAWmH,EACX,cAAenH,EACf,YAAaA,CACjB,EACM74E,GAAQ4uJ,EAAWC,EAAQ,GAAG,OAAOl/C,CAAI,EAAE,OAAO++C,EAAc,GAAK,KAAK,CAAC,KAAO,MAAQE,IAAa,OAAS,OAASA,EAASnyC,CAAK,EAC3I,OAAQz8G,EAAI,CACV,KAAK+P,EACH,MAAO,CACL,OAAQ,GACR,QAAS,EACjB,EACI,KAAKtQ,EACH,MAAO,CACL,OAAQ,EACR,QAAS,EACjB,EACI,KAAK+/B,EACH,MAAO,CACL,OAAQ,GACR,QAAS,EACjB,EACI,KAAKpgB,EACH,MAAO,CACL,OAAQ,EACR,QAAS,EACjB,EACI,QACE,OAAO,IACb,CACA,CACA,SAAS0vI,GAAgBpoI,EAAS,CAEhC,QADInnB,EAAUmnB,EACPnnB,GAAS,CACd,GAAIA,EAAQ,aAAa,gBAAgB,EACvC,OAAOA,EAETA,EAAUA,EAAQ,aACpB,CAIA,OAAO,IACT,CAKA,SAASwvJ,GAAgBvrE,EAAenjB,EAAU,CAEhD,QADI9gE,EAAUikF,GAAiB,SAAS,cACjCjkF,GAAS,CACd,GAAI8gE,EAAS,IAAI9gE,CAAO,EACtB,OAAOA,EAETA,EAAUA,EAAQ,aACpB,CACA,OAAO,IACT,CAKO,SAASyvJ,GAAqBz9H,EAAW8uC,EAAU,CACxD,IAAIx7B,EAAOmpH,GAAiBz8H,EAAW,EAAI,EAC3C,OAAOsT,EAAK,OAAO,SAAU5e,EAAK,CAChC,OAAOo6C,EAAS,IAAIp6C,CAAG,CACzB,CAAC,CACH,CACA,SAASgpI,GAAoBC,EAAsB7uF,EAAU8uF,EAAkB,CAC7E,IAAIvuH,EAAS,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,EAEjF,GAAI,CAACsuH,EACH,OAAO,KAIT,IAAIE,EAAoCJ,GAAqBE,EAAsB7uF,CAAQ,EAGvFj5D,EAAQgoJ,EAAkC,OAC1CC,EAAaD,EAAkC,UAAU,SAAUnpI,EAAK,CAC1E,OAAOkpI,IAAqBlpI,CAC9B,CAAC,EACD,OAAI2a,EAAS,EACPyuH,IAAe,GACjBA,EAAajoJ,EAAQ,EAErBioJ,GAAc,EAEPzuH,EAAS,IAClByuH,GAAc,GAEhBA,GAAcA,EAAajoJ,GAASA,EAG7BgoJ,EAAkCC,CAAU,CACrD,CACO,IAAIC,GAAkB,SAAyB1sJ,EAAMib,EAAI,CAC9D,IAAIwiD,EAAW,IAAI,IACfkvF,EAAc,IAAI,IAClBC,EAAc,IAAI,IACtB,OAAA5sJ,EAAK,QAAQ,SAAUnG,EAAK,CAC1B,IAAIiqB,EAAU,SAAS,cAAc,kBAAkB,OAAOkmI,GAAU/uI,EAAIphB,CAAG,EAAG,IAAI,CAAC,EACnFiqB,IACF25C,EAAS,IAAI35C,CAAO,EACpB8oI,EAAY,IAAI9oI,EAASjqB,CAAG,EAC5B8yJ,EAAY,IAAI9yJ,EAAKiqB,CAAO,EAEhC,CAAC,EACM,CACL,SAAU25C,EACV,YAAakvF,EACb,YAAaC,CACjB,CACA,EACO,SAAS1E,GAAiBn7C,EAAM8/C,EAAWd,EAAO9wI,EAAIipD,EAAc4oF,EAASC,EAAYC,EAAkBC,EAA0BC,EAAiB,CAC3J,IAAIC,EAAS/2I,EAAM,OAAM,EACrBgyC,EAAYhyC,EAAM,OAAM,EAC5BgyC,EAAU,QAAUykG,EACpB,IAAIO,EAAW,UAAoB,CACjC5gI,GAAI,OAAO2gI,EAAO,OAAO,CAC3B,EACA/2I,OAAAA,EAAM,UAAU,UAAY,CAC1B,OAAO,UAAY,CACjBg3I,EAAQ,CACV,CACF,EAAG,CAAA,CAAE,EACE,SAAU7yJ,EAAG,CAClB,IAAIs/G,EAAQt/G,EAAE,MACd,GAAI,GAAG,OAAOqxJ,GAAW,CAACH,GAAOzD,GAAK0D,GAAMC,EAAG,CAAC,EAAE,SAAS9xC,CAAK,EAAG,CACjE,IAAI75G,EAAO8sJ,EAAO,EACdO,EAAoBX,GAAgB1sJ,EAAMib,CAAE,EAC5CqyI,EAAqBD,EACvB5vF,EAAW6vF,EAAmB,SAC9BX,EAAcW,EAAmB,YACjCV,EAAcU,EAAmB,YAG/B1sE,EAAgB+rE,EAAY,IAAIE,CAAS,EACzCN,EAAmBJ,GAAgBvrE,EAAenjB,CAAQ,EAC1D8vF,EAAeX,EAAY,IAAIL,CAAgB,EAC/CiB,EAAY3B,GAAU9+C,EAAMggD,EAAWQ,EAAc,EAAI,EAAE,SAAW,EAAGxB,EAAOlyC,CAAK,EAGzF,GAAI,CAAC2zC,GAAa3zC,IAAU6xC,IAAQ7xC,IAAU8xC,GAC5C,QAIEC,GAAU,SAAS/xC,CAAK,GAAK,CAAC6xC,GAAMC,EAAG,EAAE,SAAS9xC,CAAK,IACzDt/G,EAAE,eAAc,EAElB,IAAIkzJ,EAAW,SAAkBC,EAAa,CAC5C,GAAIA,EAAa,CACf,IAAIC,EAAqBD,EAGrBE,EAAOF,EAAY,cAAc,GAAG,EACpCE,GAAS,MAA2BA,EAAK,aAAa,MAAM,IAC9DD,EAAqBC,GAEvB,IAAI16H,EAAY05H,EAAY,IAAIc,CAAW,EAC3CV,EAAiB95H,CAAS,EAO1Bk6H,EAAQ,EACRD,EAAO,QAAU3gI,GAAI,UAAY,CAC3B47B,EAAU,UAAYl1B,GACxBy6H,EAAmB,MAAK,CAE5B,CAAC,CACH,CACF,EACA,GAAI,CAACjC,GAAMC,EAAG,EAAE,SAAS9xC,CAAK,GAAK2zC,EAAU,SAAW,CAACjB,EAAkB,CAGzE,IAAID,EACA,CAACC,GAAoBx/C,IAAS,SAChCu/C,EAAuBpoF,EAAa,QAEpCooF,EAAuBJ,GAAgBK,CAAgB,EAIzD,IAAIljC,EACAwkC,EAAoBzB,GAAqBE,EAAsB7uF,CAAQ,EACvEo8C,IAAU6xC,GACZriC,EAAgBwkC,EAAkB,CAAC,EAC1Bh0C,IAAU8xC,GACnBtiC,EAAgBwkC,EAAkBA,EAAkB,OAAS,CAAC,EAE9DxkC,EAAgBgjC,GAAoBC,EAAsB7uF,EAAU8uF,EAAkBiB,EAAU,MAAM,EAGxGC,EAASpkC,CAAa,CAGxB,SAAWmkC,EAAU,cAEnBP,EAAyBM,CAAY,UAE5BC,EAAU,OAAS,EAC5BP,EAAyBM,EAAc,EAAI,EAC3CH,EAAQ,EACRD,EAAO,QAAU3gI,GAAI,UAAY,CAE/B6gI,EAAoBX,GAAgB1sJ,EAAMib,CAAE,EAC5C,IAAI6yI,EAAYvB,EAAiB,aAAa,eAAe,EACzDwB,EAAoB,SAAS,eAAeD,CAAS,EAGrDzkC,EAAgBgjC,GAAoB0B,EAAmBV,EAAkB,QAAQ,EAGrFI,EAASpkC,CAAa,CACxB,EAAG,CAAC,UACKmkC,EAAU,OAAS,EAAG,CAC/B,IAAIn2H,EAAU01H,EAAWQ,EAAc,EAAI,EACvCS,EAAY32H,EAAQA,EAAQ,OAAS,CAAC,EACtC42H,EAAoBtB,EAAY,IAAIqB,CAAS,EAGjDf,EAAyBe,EAAW,EAAK,EACzCP,EAASQ,CAAiB,CAC5B,CACF,CAGAf,GAAoB,MAAsCA,EAAgB3yJ,CAAC,CAC7E,CACF,CC7QO,SAAS2zJ,GAAU1kJ,EAAU,CAElC,QAAQ,QAAO,EAAG,KAAKA,CAAQ,CACjC,CCGA,IAAI2kJ,GAAa,yBACbC,GAAa,SAAoB/2H,EAAS,CAC5C,OAAOA,EAAQ,KAAK82H,EAAU,CAChC,EACIE,GAAc,SAAqBj9H,EAAY,CACjD,OAAOA,EAAW,MAAM+8H,EAAU,CACpC,EACWG,GAAe,eACX,SAASC,IAAgB,CACtC,IAAIp3G,EAAkB/gC,EAAM,SAAS,EAAE,EACrCghC,EAAmB7pB,GAAe4pB,EAAiB,CAAC,EACpDq3G,EAAsBp3G,EAAiB,CAAC,EACtCq3G,EAAct/I,EAAAA,OAAO,IAAI,GAAK,EAC9Bu/I,EAAcv/I,EAAAA,OAAO,IAAI,GAAK,EAC9BosE,EAAmBnlE,EAAM,SAAS,EAAE,EACtColE,EAAmBjuD,GAAeguD,EAAkB,CAAC,EACrDozE,EAAenzE,EAAiB,CAAC,EACjCozE,EAAkBpzE,EAAiB,CAAC,EAClCqzE,EAAY1/I,EAAAA,OAAO,CAAC,EACpB+nC,EAAa/nC,EAAAA,OAAO,EAAK,EACzBizC,EAAc,UAAuB,CAClClL,EAAW,SACds3G,EAAoB,CAAA,CAAE,CAE1B,EACIM,EAAev/I,EAAAA,YAAY,SAAU1V,EAAKw9B,EAAS,CAEjD,QAAQ,IAAI,WAAa,cAC3Bxa,GAAQ,CAAC4xI,EAAY,QAAQ,IAAI50J,CAAG,EAAG,mBAAmB,OAAOA,EAAK,0BAA0B,EAAE,OAAOw9B,EAAQ,KAAK,KAAK,EAAG,GAAG,CAAC,EAIpI,IAAI03H,EAAgBX,GAAW/2H,CAAO,EACtCq3H,EAAY,QAAQ,IAAIK,EAAel1J,CAAG,EAC1C40J,EAAY,QAAQ,IAAI50J,EAAKk1J,CAAa,EAC1CF,EAAU,SAAW,EACrB,IAAI5zI,EAAK4zI,EAAU,QACnBX,GAAU,UAAY,CAChBjzI,IAAO4zI,EAAU,SACnBzsG,EAAW,CAEf,CAAC,CACH,EAAG,CAAA,CAAE,EACD4sG,EAAiBz/I,EAAAA,YAAY,SAAU1V,EAAKw9B,EAAS,CACvD,IAAI03H,EAAgBX,GAAW/2H,CAAO,EACtCq3H,EAAY,QAAQ,OAAOK,CAAa,EACxCN,EAAY,QAAQ,OAAO50J,CAAG,CAChC,EAAG,CAAA,CAAE,EACDo1J,EAAsB1/I,cAAY,SAAUvP,EAAM,CACpD4uJ,EAAgB5uJ,CAAI,CACtB,EAAG,CAAA,CAAE,EACD+sJ,EAAax9I,EAAAA,YAAY,SAAU06I,EAAUiF,EAAiB,CAChE,IAAIv3H,EAAW82H,EAAY,QAAQ,IAAIxE,CAAQ,GAAK,GAChDjqJ,EAAOquJ,GAAY12H,CAAQ,EAC/B,OAAIu3H,GAAmBP,EAAa,SAAS3uJ,EAAK,CAAC,CAAC,GAClDA,EAAK,QAAQsuJ,EAAY,EAEpBtuJ,CACT,EAAG,CAAC2uJ,CAAY,CAAC,EACbQ,EAAe5/I,EAAAA,YAAY,SAAU6/I,EAAUnF,EAAU,CAC3D,OAAOmF,EAAS,OAAO,SAAU77H,EAAM,CACrC,OAAOA,IAAS,MAClB,CAAC,EAAE,KAAK,SAAUtC,EAAS,CACzB,IAAIo+H,EAActC,EAAW97H,EAAS,EAAI,EAC1C,OAAOo+H,EAAY,SAASpF,CAAQ,CACtC,CAAC,CACH,EAAG,CAAC8C,CAAU,CAAC,EACXD,EAAU,UAAmB,CAC/B,IAAI9sJ,EAAOmsB,GAAmBsiI,EAAY,QAAQ,KAAI,CAAE,EACxD,OAAIE,EAAa,QACf3uJ,EAAK,KAAKsuJ,EAAY,EAEjBtuJ,CACT,EAKIsvJ,EAAiB//I,cAAY,SAAU1V,EAAK,CAC9C,IAAIk1J,EAAgB,GAAG,OAAON,EAAY,QAAQ,IAAI50J,CAAG,CAAC,EAAE,OAAOs0J,EAAU,EACzEiB,EAAW,IAAI,IACnB,OAAAjjI,GAAmBuiI,EAAY,QAAQ,KAAI,CAAE,EAAE,QAAQ,SAAUz9H,EAAS,CACpEA,EAAQ,WAAW89H,CAAa,GAClCK,EAAS,IAAIV,EAAY,QAAQ,IAAIz9H,CAAO,CAAC,CAEjD,CAAC,EACMm+H,CACT,EAAG,CAAA,CAAE,EACLh5I,OAAAA,EAAM,UAAU,UAAY,CAC1B,OAAO,UAAY,CACjB8gC,EAAW,QAAU,EACvB,CACF,EAAG,CAAA,CAAE,EACE,CAEL,aAAc43G,EACd,eAAgBE,EAChB,oBAAqBC,EAErB,aAAcE,EACd,WAAYpC,EACZ,QAASD,EACT,eAAgBwC,CACpB,CACA,CCxGe,SAASC,GAAgBhqE,EAAM,CAC5C,IAAIiqE,EAASp5I,EAAM,OAAOmvE,CAAI,EAC9BiqE,EAAO,QAAUjqE,EACjB,IAAI/7E,EAAW4M,EAAM,YAAY,UAAY,CAE3C,QADIq5I,EACKltI,EAAO,UAAU,OAAQplB,EAAO,IAAI,MAAMolB,CAAI,EAAGE,EAAO,EAAGA,EAAOF,EAAME,IAC/EtlB,EAAKslB,CAAI,EAAI,UAAUA,CAAI,EAE7B,OAAQgtI,EAAkBD,EAAO,WAAa,MAAQC,IAAoB,OAAS,OAASA,EAAgB,KAAK,MAAMA,EAAiB,CAACD,CAAM,EAAE,OAAOryJ,CAAI,CAAC,CAC/J,EAAG,CAAA,CAAE,EACL,OAAOooF,EAAO/7E,EAAW,MAC3B,CCdA,IAAIkmJ,GAAe,KAAK,OAAM,EAAG,QAAQ,CAAC,EAAE,SAAQ,EAAG,MAAM,CAAC,EAC1DC,GAAa,EACF,SAASC,GAAQ30I,EAAI,CAClC,IAAI0wD,EAAkBl0B,GAAex8B,EAAI,CACrC,MAAOA,CACb,CAAK,EACD2wD,EAAmBr+C,GAAeo+C,EAAiB,CAAC,EACpDn4C,EAAOo4C,EAAiB,CAAC,EACzBikF,EAAUjkF,EAAiB,CAAC,EAC9Bx1D,OAAAA,EAAM,UAAU,UAAY,CAC1Bu5I,IAAc,EACd,IAAIG,EAAQ,QAAQ,IAAI,WAAa,OAAS,OAAS,GAAG,OAAOJ,GAAc,GAAG,EAAE,OAAOC,EAAU,EACrGE,EAAQ,gBAAgB,OAAOC,CAAK,CAAC,CACvC,EAAG,CAAA,CAAE,EACEt8H,CACT,CChBe,SAASu8H,GAAU9F,EAAUhgI,EAAU2wC,EAAcC,EAAc,CAChF,IAAIpjC,EAAoBrhB,EAAM,WAAW+zI,EAAW,EAClD0C,EAAYp1H,EAAkB,UAC9Bu4H,EAAWv4H,EAAkB,SAC7Bw4H,EAAax4H,EAAkB,WAC7B3sB,EAAM,CACR,OAAQ+hJ,IAAc5C,CAC1B,EAGE,OAAKhgI,IACHnf,EAAI,aAAe,SAAUolJ,EAAU,CACrCt1F,GAAiB,MAAmCA,EAAa,CAC/D,IAAKqvF,EACL,SAAUiG,CAClB,CAAO,EACDF,EAAS/F,CAAQ,CACnB,EACAn/I,EAAI,aAAe,SAAUolJ,EAAU,CACrCr1F,GAAiB,MAAmCA,EAAa,CAC/D,IAAKovF,EACL,SAAUiG,CAClB,CAAO,EACDD,EAAWhG,CAAQ,CACrB,GAEKn/I,CACT,CC3Be,SAASqlJ,GAAkBt/H,EAAO,CAC/C,IAAI4G,EAAoBrhB,EAAM,WAAW+zI,EAAW,EAClDp9C,EAAOt1E,EAAkB,KACzBoiG,EAAMpiG,EAAkB,IACxB24H,EAAe34H,EAAkB,aACnC,GAAIs1E,IAAS,SACX,OAAO,KAET,IAAIn/E,EAAMiD,EACV,OAAOgpG,EAAM,CACX,aAAcjsG,EAAMwiI,CACxB,EAAM,CACF,YAAaxiI,EAAMwiI,CACvB,CACA,CCde,SAASp6F,GAAKlkD,EAAM,CACjC,IAAIyjD,EAAOzjD,EAAK,KACdrC,EAAQqC,EAAK,MACb0K,EAAW1K,EAAK,SACdknE,EACJ,OAAIzjB,IAAS,MAAQA,IAAS,GACrB,MAEL,OAAOA,GAAS,WAClByjB,EAAwB5iE,EAAM,cAAcm/C,EAAMhqC,EAAc,CAAA,EAAI9b,CAAK,CAAC,EACjE,OAAO8lD,GAAS,YAEzByjB,EAAWzjB,GAENyjB,GAAYx8D,GAAY,KACjC,CChBA,IAAIulC,GAAY,CAAC,MAAM,EAOhB,SAASsuG,GAAav+I,EAAM,CACjC,IAAIyhB,EAAOzhB,EAAK,KACdw+I,EAAWjgI,GAAyBve,EAAMiwC,EAAS,EACrD,cAAO,eAAeuuG,EAAU,OAAQ,CACtC,IAAK,UAAe,CAClBzzI,OAAAA,GAAQ,GAAO,qHAAqH,EAC7H0W,CACT,CACJ,CAAG,EACM+8H,CACT,CCTA,IAAIvuG,GAAY,CAAC,QAAS,YAAa,YAAY,EACjDqK,GAAa,CAAC,QAAS,YAAa,WAAY,UAAW,WAAY,WAAY,WAAY,OAAQ,eAAgB,eAAgB,UAAW,YAAa,SAAS,EACxK4jD,GAAa,CAAC,QAAQ,EAmBpBugD,GAA8B,SAAUzmI,EAAkB,CAC5DZ,GAAUqnI,EAAgBzmI,CAAgB,EAC1C,IAAIC,EAASN,GAAa8mI,CAAc,EACxC,SAASA,GAAiB,CACxBznI,OAAAA,GAAgB,KAAMynI,CAAc,EAC7BxmI,EAAO,MAAM,KAAM,SAAS,CACrC,CACAf,OAAAA,GAAaunI,EAAgB,CAAC,CAC5B,IAAK,SACL,MAAO,UAAkB,CACvB,IAAIzjG,EAAc,KAAK,MACrB6yB,EAAQ7yB,EAAY,MACpB0jG,EAAY1jG,EAAY,UACxB5iC,EAAa4iC,EAAY,WACzBE,EAAY38B,GAAyBy8B,EAAa/K,EAAS,EAMzD+uE,EAAc7vD,GAAKjU,EAAW,CAAC,WAAY,iBAAkB,cAAe,cAAc,CAAC,EAC/FnwC,OAAAA,GAAQ,CAAC2zI,EAAW,yEAAyE,EACzEp6I,EAAM,cAAcq6F,GAAS,KAAMx0F,GAAS,CAAA,EAAIu0I,EAAW,CAC7E,MAAO,OAAO7wE,GAAU,SAAWA,EAAQ,MACnD,EAASmxC,EAAa,CACd,IAAK5mG,CACb,CAAO,CAAC,CACJ,CACJ,CAAG,CAAC,EACKqmI,CACT,EAAEn6I,EAAM,SAAS,EAIbq6I,GAAgCr6I,EAAM,WAAW,SAAU3G,EAAOP,EAAK,CACzE,IAAI4iB,EAAQriB,EAAM,MAChB+lD,EAAY/lD,EAAM,UAClBw6I,EAAWx6I,EAAM,SACjBihJ,EAAUjhJ,EAAM,QAChBwa,EAAWxa,EAAM,SACjBgvI,EAAWhvI,EAAM,SACjB+M,EAAW/M,EAAM,SACjBkhJ,EAAOlhJ,EAAM,KACbmrD,EAAenrD,EAAM,aACrBorD,EAAeprD,EAAM,aACrBgmD,EAAUhmD,EAAM,QAChBylH,EAAYzlH,EAAM,UAClBslH,EAAUtlH,EAAM,QAChBu9C,EAAY38B,GAAyB5gB,EAAO28C,EAAU,EACpDwkG,EAAY1G,GAAUD,CAAQ,EAC9BxyH,EAAoBrhB,EAAM,WAAW+zI,EAAW,EAClD3uG,EAAY/jB,EAAkB,UAC9Bo5H,EAAcp5H,EAAkB,YAChCq5H,EAAkBr5H,EAAkB,SACpCs5H,EAAmBt5H,EAAkB,iBACrCu5H,EAAkBv5H,EAAkB,SACpCw5H,EAAex5H,EAAkB,aACjCu4H,EAAWv4H,EAAkB,SAC3By5H,EAAqB96I,EAAM,WAAWy0I,EAAc,EACtDsG,EAA0BD,EAAmB,wBAC3CE,EAAU,GAAG,OAAO51G,EAAW,OAAO,EACtC61G,EAAoBj7I,EAAM,OAAM,EAChC8T,EAAa9T,EAAM,OAAM,EACzBshE,EAAiBo5E,GAAmB7mI,EACpCqnI,EAAe3uI,GAAczT,EAAKgb,CAAU,EAC5CqnI,EAAgB7G,GAAYT,CAAQ,EAGpC,QAAQ,IAAI,WAAa,cAAgByG,GAC3C7zI,GAAQ,GAAO,4CAA4C,EAI7D,IAAI20I,EAAe,SAAsBj3J,GAAG,CAC1C,MAAO,CACL,IAAK0vJ,EAEL,QAAS99H,GAAmBolI,CAAa,EAAE,QAAO,EAClD,KAAMF,EAAkB,QACxB,SAAU92J,EAChB,CACE,EAGI4iJ,EAAiBsB,GAAYuS,EAG7BS,EAAa1B,GAAU9F,EAAUvyE,EAAgB9c,EAAcC,CAAY,EAC7E1R,EAASsoG,EAAW,OACpBC,EAAcrhI,GAAyBohI,EAAYzhD,EAAU,EAG3Do9B,EAAW6jB,EAAa,SAAShH,CAAQ,EAGzC0H,EAAiBxB,GAAkBoB,EAAc,MAAM,EAGvDK,EAAkB,SAAyBr3J,GAAG,CAChD,GAAI,CAAAm9E,EAGJ,KAAIz4C,EAAOuyH,EAAaj3J,EAAC,EACzBk7D,GAAY,MAA8BA,EAAQ46F,GAAapxH,CAAI,CAAC,EACpE4xH,EAAY5xH,CAAI,EAClB,EACIy4F,EAAoB,SAA2Bn9H,GAAG,CAEpD,GADA26H,GAAc,MAAgCA,EAAU36H,EAAC,EACrDA,GAAE,QAAU+hE,GAAQ,MAAO,CAC7B,IAAIr9B,EAAOuyH,EAAaj3J,EAAC,EAGzBk7D,GAAY,MAA8BA,EAAQ46F,GAAapxH,CAAI,CAAC,EACpE4xH,EAAY5xH,CAAI,CAClB,CACF,EAMI4yH,GAAkB,SAAyBt3J,GAAG,CAChDy1J,EAAS/F,CAAQ,EACjBl1B,GAAY,MAA8BA,EAAQx6H,EAAC,CACrD,EAGIu3J,GAAkB,CAAA,EAClBriJ,EAAM,OAAS,WACjBqiJ,GAAgB,eAAe,EAAI1kB,GAErC,IAAI7T,GAA0BnjH,EAAM,cAAcm6I,GAAgBt0I,GAAS,CACzE,IAAKo1I,EACL,WAAYC,EACZ,KAAMX,IAAS,KAAO,OAASA,GAAQ,WACvC,SAAU1mI,EAAW,KAAO,GAC5B,eAAgB8mI,GAAoBH,EAAY,KAAOA,CAC3D,EAAK3vF,GAAKjU,EAAW,CAAC,OAAO,CAAC,EAAG0kG,EAAaI,GAAiB,CAC3D,UAAW,KACX,gBAAiB7nI,EACjB,MAAOsB,EAAcA,EAAc,CAAA,EAAIomI,CAAc,EAAG7/H,CAAK,EAC7D,UAAWlW,GAAWw1I,EAAS5zI,EAAgBA,EAAgBA,EAAgB,CAAA,EAAI,GAAG,OAAO4zI,EAAS,SAAS,EAAGjoG,CAAM,EAAG,GAAG,OAAOioG,EAAS,WAAW,EAAGhkB,CAAQ,EAAG,GAAG,OAAOgkB,EAAS,WAAW,EAAG15E,CAAc,EAAGliB,CAAS,EAClO,QAASo8F,EACT,UAAWl6B,EACX,QAASm6B,EACb,CAAG,EAAGr1I,EAAuBpG,EAAM,cAAc4/C,GAAM,CACnD,MAAOzqC,EAAcA,EAAc,CAAA,EAAI9b,CAAK,EAAG,CAAA,EAAI,CACjD,WAAY29H,CAClB,CAAK,EACD,KAAM+P,CACV,CAAG,CAAC,EACF,OAAIgU,IACF53B,GAAa43B,EAAwB53B,GAAY9pH,EAAO,CACtD,SAAU29H,CAChB,CAAK,GAEI7T,EACT,CAAC,EACD,SAASw4B,GAAStiJ,EAAOP,EAAK,CAC5B,IAAI+6I,EAAWx6I,EAAM,SAGjBuiJ,EAAUxH,GAAU,EACpByH,EAAmBvH,GAAYT,CAAQ,EAW3C,OARA7zI,EAAM,UAAU,UAAY,CAC1B,GAAI47I,EACF,OAAAA,EAAQ,aAAa/H,EAAUgI,CAAgB,EACxC,UAAY,CACjBD,EAAQ,eAAe/H,EAAUgI,CAAgB,CACnD,CAEJ,EAAG,CAACA,CAAgB,CAAC,EACjBD,EACK,KAIW57I,EAAM,cAAcq6I,GAAkBx0I,GAAS,CAAA,EAAIxM,EAAO,CAC5E,IAAKP,CACT,CAAG,CAAC,CACJ,CACA,MAAAgjJ,GAA4B97I,EAAM,WAAW27I,EAAQ,ECnNrD,IAAIhwG,GAAY,CAAC,YAAa,UAAU,EAIpCowG,GAAsB,SAA6BrgJ,EAAM5C,EAAK,CAChE,IAAIsmD,EAAY1jD,EAAK,UACnB0K,EAAW1K,EAAK,SAChBk7C,EAAY38B,GAAyBve,EAAMiwC,EAAS,EAClDtqB,EAAoBrhB,EAAM,WAAW+zI,EAAW,EAClD3uG,EAAY/jB,EAAkB,UAC9Bs1E,EAAOt1E,EAAkB,KACzBoiG,EAAMpiG,EAAkB,IAC1B,OAAoBrhB,EAAM,cAAc,KAAM6F,GAAS,CACrD,UAAWL,GAAW4/B,EAAWq+E,GAAO,GAAG,OAAOr+E,EAAW,MAAM,EAAG,GAAG,OAAOA,EAAW,MAAM,EAAG,GAAG,OAAOA,EAAW,GAAG,EAAE,OAAOuxD,IAAS,SAAW,SAAW,UAAU,EAAGv3C,CAAS,EAC1L,KAAM,MACV,EAAKxI,EAAW,CACZ,iBAAkB,GAClB,IAAK99C,CACT,CAAG,EAAGsN,CAAQ,CACd,EACI41I,GAA2Bh8I,EAAM,WAAW+7I,EAAmB,EACnEC,GAAY,YAAc,cCpBnB,SAASC,GAAc71I,EAAU6a,EAAS,CAC/C,OAAO9a,GAAQC,CAAQ,EAAE,IAAI,SAAUC,EAAOje,EAAO,CACnD,GAAkB4X,EAAM,eAAeqG,CAAK,EAAG,CAC7C,IAAI61I,EAAWC,EACX14J,EAAM4iB,EAAM,IACZwtI,GAAYqI,GAAaC,EAAe91I,EAAM,SAAW,MAAQ81I,IAAiB,OAAS,OAASA,EAAa,YAAc,MAAQD,IAAc,OAASA,EAAYz4J,EAC1K24J,EAAWvI,GAAa,KACxBuI,IACFvI,EAAW,WAAW,OAAO,CAAA,EAAG,OAAO99H,GAAmBkL,CAAO,EAAG,CAAC74B,CAAK,CAAC,EAAE,KAAK,GAAG,CAAC,GAExF,IAAIuuH,EAAa,CACf,IAAKk9B,EACL,SAAUA,CAClB,EACM,OAAI,QAAQ,IAAI,WAAa,cAAgBuI,IAC3CzlC,EAAW,QAAU,IAEH32G,EAAM,aAAaqG,EAAOswG,CAAU,CAC1D,CACA,OAAOtwG,CACT,CAAC,CACH,CCxBA,IAAIqoI,GAAqB,CACvB,QAAS,EACT,QAAS,CACX,EACW3mC,GAAa,CACtB,QAAS,CACP,OAAQ,CAAC,KAAM,IAAI,EACnB,SAAU2mC,EACd,EACE,SAAU,CACR,OAAQ,CAAC,KAAM,IAAI,EACnB,SAAUA,EACd,EACE,WAAY,CACV,OAAQ,CAAC,KAAM,IAAI,EACnB,SAAUA,EACd,EACE,YAAa,CACX,OAAQ,CAAC,KAAM,IAAI,EACnB,SAAUA,EACd,EACE,QAAS,CACP,OAAQ,CAAC,KAAM,IAAI,EACnB,SAAUA,EACd,EACE,WAAY,CACV,OAAQ,CAAC,KAAM,IAAI,EACnB,SAAUA,EACd,EACE,SAAU,CACR,OAAQ,CAAC,KAAM,IAAI,EACnB,SAAUA,EACd,EACE,YAAa,CACX,OAAQ,CAAC,KAAM,IAAI,EACnB,SAAUA,EACd,CACA,EACW2N,GAAgB,CACzB,QAAS,CACP,OAAQ,CAAC,KAAM,IAAI,EACnB,SAAU3N,EACd,EACE,SAAU,CACR,OAAQ,CAAC,KAAM,IAAI,EACnB,SAAUA,EACd,EACE,WAAY,CACV,OAAQ,CAAC,KAAM,IAAI,EACnB,SAAUA,EACd,EACE,YAAa,CACX,OAAQ,CAAC,KAAM,IAAI,EACnB,SAAUA,EACd,EACE,SAAU,CACR,OAAQ,CAAC,KAAM,IAAI,EACnB,SAAUA,EACd,EACE,YAAa,CACX,OAAQ,CAAC,KAAM,IAAI,EACnB,SAAUA,EACd,EACE,QAAS,CACP,OAAQ,CAAC,KAAM,IAAI,EACnB,SAAUA,EACd,EACE,WAAY,CACV,OAAQ,CAAC,KAAM,IAAI,EACnB,SAAUA,EACd,CACA,ECvEO,SAASxmC,GAAUvR,EAAMr/C,EAAQglG,EAAgB,CACtD,GAAIhlG,EACF,OAAOA,EAET,GAAIglG,EACF,OAAOA,EAAe3lD,CAAI,GAAK2lD,EAAe,KAGlD,CCEA,IAAIC,GAAoB,CACtB,WAAY,aACZ,SAAU,WACV,gBAAiB,WACjB,iBAAkB,SACpB,EACe,SAASC,GAAa9gJ,EAAM,CACzC,IAAI0pC,EAAY1pC,EAAK,UACnBo0C,EAAUp0C,EAAK,QACf0K,EAAW1K,EAAK,SAChBo6F,EAAQp6F,EAAK,MACb05G,EAAa15G,EAAK,WAClBy5G,EAAiBz5G,EAAK,eACtB+gJ,EAAc/gJ,EAAK,YACnBmY,EAAWnY,EAAK,SAChBi7F,EAAOj7F,EAAK,KACZq/F,EAAkBr/F,EAAK,gBACrB2lB,EAAoBrhB,EAAM,WAAW+zI,EAAW,EAClD11G,EAAoBhd,EAAkB,kBACtCoiG,EAAMpiG,EAAkB,IACxBq7H,EAAmBr7H,EAAkB,iBACrCs7H,EAAoBt7H,EAAkB,kBACtCymF,EAAoBzmF,EAAkB,kBACtCu7H,EAAuBv7H,EAAkB,qBACzCw7H,EAAqBx7H,EAAkB,mBACvC2+B,EAAgB3+B,EAAkB,cAClCi2B,EAASj2B,EAAkB,OAC3Bi7H,EAAiBj7H,EAAkB,eACjC0f,EAAkB/gC,EAAM,SAAS,EAAK,EACxCghC,EAAmB7pB,GAAe4pB,EAAiB,CAAC,EACpD+7G,EAAe97G,EAAiB,CAAC,EACjC+7G,EAAkB/7G,EAAiB,CAAC,EAClCinE,EAAkB9yF,EAANsuG,EAAoBtuG,EAAc,CAAA,EAAIknI,EAAa,EAAsClnI,EAAc,CAAA,EAAI4yF,EAAU,EAA/DD,CAAiB,EACnFuN,EAAiBknC,GAAkB5lD,CAAI,EACvCqmD,EAAe90C,GAAUvR,EAAMr/C,EAAQglG,CAAc,EACrDW,EAAkBj9I,EAAM,OAAOg9I,CAAY,EAC3CrmD,IAAS,WAKXsmD,EAAgB,QAAUD,GAE5B,IAAIE,EAAe/nI,EAAcA,EAAc,CAAA,EAAI8nI,EAAgB,OAAO,EAAG,GAAI,CAC/E,gBAAiB,GAAG,OAAO73G,EAAW,SAAS,EAC/C,cAAe,GACf,aAAc,EAClB,CAAG,EAGG4N,EAAahzC,EAAM,OAAM,EAC7BA,OAAAA,EAAM,UAAU,UAAY,CAC1B,OAAAgzC,EAAW,QAAU58B,GAAI,UAAY,CACnC2mI,EAAgBjtG,CAAO,CACzB,CAAC,EACM,UAAY,CACjB15B,GAAI,OAAO48B,EAAW,OAAO,CAC/B,CACF,EAAG,CAAClD,CAAO,CAAC,EACQ9vC,EAAM,cAAcu0G,GAAS,CAC/C,UAAWnvE,EACX,eAAgB5/B,GAAW,GAAG,OAAO4/B,EAAW,QAAQ,EAAGh+B,EAAgB,CAAA,EAAI,GAAG,OAAOg+B,EAAW,MAAM,EAAGq+E,CAAG,EAAGtO,EAAgBn1D,CAAa,EAChJ,QAAS22C,IAAS,aAAe,WAAa,KAC9C,kBAAmBt4D,EACnB,kBAAmB4pE,EACnB,eAAgBoN,EAChB,aAAcynC,EACd,MAAOhnD,EACP,WAAYsf,EACZ,WAAYqnC,GAAe,CACzB,OAAQA,CACd,EACI,OAAQ5oI,EAAW,GAAK,CAAC+oI,CAAoB,EAC7C,gBAAiBF,EACjB,gBAAiBC,EACjB,qBAAsB5hD,EACtB,YAAa8hD,EACb,YAAaK,EACb,MAAO,EACX,EAAK92I,CAAQ,CACb,CClFe,SAAS+2I,GAAkBzhJ,EAAM,CAC9C,IAAImJ,EAAKnJ,EAAK,GACZ0rE,EAAO1rE,EAAK,KACZulB,EAAUvlB,EAAK,QACf0K,EAAW1K,EAAK,SACd0hJ,EAAY,SACZ/7H,EAAoBrhB,EAAM,WAAW+zI,EAAW,EAClD3uG,EAAY/jB,EAAkB,UAC9Bw7H,EAAqBx7H,EAAkB,mBACvCi2B,EAASj2B,EAAkB,OAC3Bi7H,EAAiBj7H,EAAkB,eACnCs1E,EAAOt1E,EAAkB,KAGvBg8H,EAAcr9I,EAAM,OAAO,EAAK,EACpCq9I,EAAY,QAAU1mD,IAASymD,EAI/B,IAAIr8G,EAAkB/gC,EAAM,SAAS,CAACq9I,EAAY,OAAO,EACvDr8G,EAAmB7pB,GAAe4pB,EAAiB,CAAC,EACpD44C,EAAU34C,EAAiB,CAAC,EAC5Bs8G,EAAat8G,EAAiB,CAAC,EAC7Bq2E,EAAagmC,EAAY,QAAUj2E,EAAO,GAI9CpnE,EAAM,UAAU,UAAY,CACtBq9I,EAAY,SACdC,EAAW,EAAK,CAEpB,EAAG,CAAC3mD,CAAI,CAAC,EAGT,IAAIumD,EAAe/nI,EAAc,CAAA,EAAI+yF,GAAUk1C,EAAW9lG,EAAQglG,CAAc,CAAC,EAG7Er7H,EAAQ,OAAS,IACnBi8H,EAAa,aAAe,IAI9B,IAAIK,EAAyBL,EAAa,iBAO1C,OANAA,EAAa,iBAAmB,SAAU/vE,EAAY,CACpD,MAAI,CAACkwE,EAAY,SAAW,CAAClwE,GAC3BmwE,EAAW,EAAI,EAEVC,GAA2B,KAA4C,OAASA,EAAuBpwE,CAAU,CAC1H,EACIwM,EACK,KAEW35E,EAAM,cAAcw9I,GAAqB,CAC3D,KAAMJ,EACN,OAAQ,CAACC,EAAY,OACzB,EAAkBr9I,EAAM,cAAcwzC,GAAW3tC,GAAS,CACtD,QAASwxG,CACb,EAAK6lC,EAAc,CACf,YAAaL,EACb,cAAe,GACf,gBAAiB,GAAG,OAAOz3G,EAAW,SAAS,CACnD,CAAG,EAAG,SAAUxpC,EAAO,CACnB,IAAI4pD,EAAkB5pD,EAAM,UAC1B6pD,EAAc7pD,EAAM,MACtB,OAAoBoE,EAAM,cAAcg8I,GAAa,CACnD,GAAIn3I,EACJ,UAAW2gD,EACX,MAAOC,CACb,EAAOr/C,CAAQ,CACb,CAAC,CAAC,CACJ,CCzEA,IAAIulC,GAAY,CAAC,QAAS,YAAa,QAAS,WAAY,UAAW,WAAY,qBAAsB,WAAY,WAAY,aAAc,iBAAkB,cAAe,aAAc,UAAW,eAAgB,eAAgB,eAAgB,oBAAqB,mBAAmB,EAC/RqK,GAAa,CAAC,QAAQ,EAkBpBynG,GAA+Bz9I,EAAM,WAAW,SAAU3G,EAAOP,EAAK,CACxE,IAAI4iB,EAAQriB,EAAM,MAChB+lD,EAAY/lD,EAAM,UAClBkwE,EAAQlwE,EAAM,MACdw6I,EAAWx6I,EAAM,SACjBihJ,EAAUjhJ,EAAM,QAChBwa,EAAWxa,EAAM,SACjBqkJ,EAAqBrkJ,EAAM,mBAC3B+M,EAAW/M,EAAM,SACjBgvI,EAAWhvI,EAAM,SACjBskJ,EAAatkJ,EAAM,WACnB87G,EAAiB97G,EAAM,eACvBojJ,EAAcpjJ,EAAM,YACpB+7G,EAAa/7G,EAAM,WACnBgmD,EAAUhmD,EAAM,QAChBmrD,EAAenrD,EAAM,aACrBorD,EAAeprD,EAAM,aACrBukJ,EAAevkJ,EAAM,aACrBwkJ,EAAoBxkJ,EAAM,kBAC1BykJ,EAAoBzkJ,EAAM,kBAC1Bu9C,EAAY38B,GAAyB5gB,EAAOsyC,EAAS,EACnD6uG,EAAY1G,GAAUD,CAAQ,EAC9BxyH,EAAoBrhB,EAAM,WAAW+zI,EAAW,EAClD3uG,EAAY/jB,EAAkB,UAC9Bs1E,EAAOt1E,EAAkB,KACzB08H,EAAW18H,EAAkB,SAC7Bq5H,EAAkBr5H,EAAkB,SACpCs5H,EAAmBt5H,EAAkB,iBACrCo1H,EAAYp1H,EAAkB,UAC9Bw5H,EAAex5H,EAAkB,aACjCu5H,EAAkBv5H,EAAkB,SACpC28H,EAAoB38H,EAAkB,WACtCo5H,EAAcp5H,EAAkB,YAChComH,EAAepmH,EAAkB,aACjCu4H,EAAWv4H,EAAkB,SAC3By5H,EAAqB96I,EAAM,WAAWy0I,EAAc,EACtDwJ,EAA6BnD,EAAmB,2BAC9CoD,EAAqBl+I,EAAM,WAAWw0I,EAAe,EACvDuE,EAAemF,EAAmB,aAChCvF,EAAgBrE,GAAW,EAC3B6J,EAAmB,GAAG,OAAO/4G,EAAW,UAAU,EAClDk8B,GAAiBo5E,GAAmB7mI,EACpCC,GAAa9T,EAAM,OAAM,EACzBo+I,GAAWp+I,EAAM,OAAM,EAGvB,QAAQ,IAAI,WAAa,cAAgBs6I,GAC3C7zI,GAAQ,GAAO,2CAA2C,EAI5D,IAAIsgI,GAAiBsB,GAAsDuS,EACvEyD,GAAmBV,GAA4DK,EAG/EM,EAAaP,EAAS,SAASlK,CAAQ,EACvCzsE,EAAO,CAACuzE,GAAoB2D,EAG5BC,GAAmBxF,EAAa8B,EAAchH,CAAQ,EAGtDwH,EAAa1B,GAAU9F,EAAUvyE,GAAgBu8E,EAAmBC,CAAiB,EACvF/qG,GAASsoG,EAAW,OACpBC,GAAcrhI,GAAyBohI,EAAYrlG,EAAU,EAG3DjV,GAAkB/gC,EAAM,SAAS,EAAK,EACxCghC,GAAmB7pB,GAAe4pB,GAAiB,CAAC,EACpDy9G,GAAiBx9G,GAAiB,CAAC,EACnCy9G,GAAoBz9G,GAAiB,CAAC,EACpC09G,GAAwB,SAA+BC,GAAW,CAC/Dr9E,IACHm9E,GAAkBE,EAAS,CAE/B,EACIC,GAAuB,SAA8B9E,GAAU,CACjE4E,GAAsB,EAAI,EAC1Bl6F,GAAiB,MAAmCA,EAAa,CAC/D,IAAKqvF,EACL,SAAUiG,EAChB,CAAK,CACH,EACI+E,GAAuB,SAA8B/E,GAAU,CACjE4E,GAAsB,EAAK,EAC3Bj6F,GAAiB,MAAmCA,EAAa,CAC/D,IAAKovF,EACL,SAAUiG,EAChB,CAAK,CACH,EACIgF,GAAe9+I,EAAM,QAAQ,UAAY,CAC3C,OAAI+yC,KAGA4jD,IAAS,SACJ6nD,IAAkBzF,EAAa,CAACtC,CAAS,EAAG5C,CAAQ,EAEtD,GACT,EAAG,CAACl9C,EAAM5jD,GAAQ0jG,EAAW+H,GAAgB3K,EAAUkF,CAAY,CAAC,EAGhEwC,GAAiBxB,GAAkBpB,EAAc,MAAM,EAIvDoG,EAAuB,SAA8B56J,GAAG,CAEtDm9E,KAGJs8E,GAAiB,MAAmCA,EAAa,CAC/D,IAAK/J,EACL,SAAU1vJ,EAChB,CAAK,EAGGwyG,IAAS,UACX8wC,EAAaoM,EAAU,CAACyK,CAAU,EAEtC,EAGIU,GAAoB7F,GAAgB,SAAUtwH,GAAM,CACtDw2B,GAAY,MAA8BA,EAAQ46F,GAAapxH,EAAI,CAAC,EACpE4xH,EAAY5xH,EAAI,CAClB,CAAC,EAGG8rF,GAAuB,SAA8BxnC,GAAY,CAC/DwpB,IAAS,UACX8wC,EAAaoM,EAAU1mE,EAAU,CAErC,EAMIsuE,GAAkB,UAA2B,CAC/C7B,EAAS/F,CAAQ,CACnB,EAGIoL,GAAUzE,GAAa,GAAG,OAAOA,EAAW,QAAQ,EACpD0E,GAAiBl/I,EAAM,QAAQ,UAAY,CAC7C,OAAoBA,EAAM,cAAc4/C,GAAM,CAC5C,KAAM+2C,IAAS,aAAe0nD,GAAmB,OACjD,MAAOlpI,EAAcA,EAAc,CAAA,EAAI9b,CAAK,EAAG,CAAA,EAAI,CACjD,OAAQ+tE,EAER,UAAW,EACnB,CAAO,CACP,EAAoBpnE,EAAM,cAAc,IAAK,CACvC,UAAW,GAAG,OAAOm+I,EAAkB,QAAQ,CACrD,CAAK,CAAC,CACJ,EAAG,CAACxnD,EAAM0nD,GAAkBhlJ,EAAO+tE,EAAM+2E,CAAgB,CAAC,EAGtDgB,GAAyBn/I,EAAM,cAAc,MAAO6F,GAAS,CAC/D,KAAM,WACN,MAAO01I,GACP,UAAW,GAAG,OAAO4C,EAAkB,QAAQ,EAC/C,SAAU78E,GAAiB,KAAO,GAClC,IAAKxtD,GACL,MAAO,OAAOy1D,GAAU,SAAWA,EAAQ,KAC3C,eAAgBoxE,GAAoBH,EAAY,KAAOA,EACvD,gBAAiBpzE,EACjB,gBAAiB,GACjB,gBAAiB63E,GACjB,gBAAiB39E,GACjB,QAASy9E,EACT,QAAStD,EACb,EAAKH,EAAW,EAAG/xE,EAAO21E,EAAc,EAGlCE,GAAiBp/I,EAAM,OAAO22F,CAAI,EAMtC,GALIA,IAAS,UAAYgiD,EAAc,OAAS,EAC9CyG,GAAe,QAAU,WAEzBA,GAAe,QAAUzoD,EAEvB,CAACgkD,EAAkB,CACrB,IAAI0E,GAAcD,GAAe,QAIjCD,GAAyBn/I,EAAM,cAAcw8I,GAAc,CACzD,KAAM6C,GACN,UAAWlB,EACX,QAAS,CAACT,GAAsBt2E,GAAQuvB,IAAS,SACjD,eAAgBwe,EAChB,YAAasnC,EACb,WAAYrnC,EACZ,MAAoBp1G,EAAM,cAAcw9I,GAEtC,CACA,KAAM6B,KAAgB,aAAe,WAAaA,EAC1D,EAAsBr/I,EAAM,cAAcg8I,GAAa,CAC/C,GAAIiD,GACJ,IAAKb,EACb,EAASh4I,CAAQ,CAAC,EACZ,SAAUk7D,GACV,gBAAiBqzC,EACvB,EAAOwqC,EAAS,CACd,CAGA,IAAIG,GAAwBt/I,EAAM,cAAcq6F,GAAS,KAAMx0F,GAAS,CACtE,IAAK/M,EACL,KAAM,MACV,EAAK89C,EAAW,CACZ,UAAW,KACX,MAAOl7B,EACP,UAAWlW,GAAW24I,EAAkB,GAAG,OAAOA,EAAkB,GAAG,EAAE,OAAOxnD,CAAI,EAAGv3C,EAAWh4C,EAAgBA,EAAgBA,EAAgBA,EAAgB,GAAI,GAAG,OAAO+2I,EAAkB,OAAO,EAAG/2E,CAAI,EAAG,GAAG,OAAO+2E,EAAkB,SAAS,EAAGW,EAAY,EAAG,GAAG,OAAOX,EAAkB,WAAW,EAAGI,EAAgB,EAAG,GAAG,OAAOJ,EAAkB,WAAW,EAAG78E,EAAc,CAAC,EAChY,aAAcs9E,GACd,aAAcC,EAClB,CAAG,EAAGM,GAAW,CAACxE,GAAiC36I,EAAM,cAAcm9I,GAAmB,CACtF,GAAI8B,GACJ,KAAM73E,EACN,QAASuxE,CACb,EAAKvyI,CAAQ,CAAC,EACZ,OAAI63I,IACFqB,GAAWrB,EAA2BqB,GAAUjmJ,EAAO,CACrD,SAAUklJ,GACV,OAAQO,GACR,KAAM13E,EACN,SAAU9F,EAChB,CAAK,GAIiBthE,EAAM,cAAcw9I,GAAqB,CAC3D,YAAawB,GACb,KAAMroD,IAAS,aAAe,WAAaA,EAC3C,SAAUowC,GACV,WAAYsX,EAChB,EAAKiB,EAAQ,CACb,CAAC,EACGC,GAAuBv/I,EAAM,WAAW,SAAU3G,EAAOP,EAAK,CAChE,IAAI+6I,EAAWx6I,EAAM,SACnB+M,EAAW/M,EAAM,SACfwiJ,EAAmBvH,GAAYT,CAAQ,EACvCzjF,EAAY6rF,GAAc71I,EAAUy1I,CAAgB,EAGpDD,EAAUxH,GAAU,EAGxBp0I,EAAM,UAAU,UAAY,CAC1B,GAAI47I,EACF,OAAAA,EAAQ,aAAa/H,EAAUgI,CAAgB,EACxC,UAAY,CACjBD,EAAQ,eAAe/H,EAAUgI,CAAgB,CACnD,CAEJ,EAAG,CAACA,CAAgB,CAAC,EACrB,IAAI14B,EAGJ,OAAIy4B,EACFz4B,EAAa/yD,EAEb+yD,EAA0BnjH,EAAM,cAAcy9I,GAAiB53I,GAAS,CACtE,IAAK/M,CACX,EAAOO,CAAK,EAAG+2D,CAAS,EAEFpwD,EAAM,cAAcq0I,GAAmB,SAAU,CACnE,MAAOwH,CACX,EAAK14B,CAAU,CACf,CAAC,EACG,QAAQ,IAAI,WAAa,eAC3Bo8B,GAAQ,YAAc,WCnST,SAASC,GAAQ9jJ,EAAM,CACpC,IAAI0jD,EAAY1jD,EAAK,UACnBggB,EAAQhgB,EAAK,MACX2lB,EAAoBrhB,EAAM,WAAW+zI,EAAW,EAClD3uG,EAAY/jB,EAAkB,UAC5Bu6H,EAAUxH,GAAU,EACxB,OAAIwH,EACK,KAEW57I,EAAM,cAAc,KAAM,CAC5C,KAAM,YACN,UAAWwF,GAAW,GAAG,OAAO4/B,EAAW,eAAe,EAAGga,CAAS,EACtE,MAAO1jC,CACX,CAAG,CACH,CChBA,IAAIiwB,GAAY,CAAC,YAAa,QAAS,WAAY,UAAU,EAOzD8zG,GAAqCz/I,EAAM,WAAW,SAAU3G,EAAOP,EAAK,CAC3E,IAACsmD,EAAY/lD,EAAM,UACpBkwE,EAAQlwE,EAAM,MACHA,EAAM,SACrB,IAAI+M,EAAW/M,EAAM,SACjBu9C,EAAY38B,GAAyB5gB,EAAOsyC,EAAS,EACnDtqB,EAAoBrhB,EAAM,WAAW+zI,EAAW,EAClD3uG,EAAY/jB,EAAkB,UAC5Bq+H,EAAiB,GAAG,OAAOt6G,EAAW,aAAa,EACvD,OAAoBplC,EAAM,cAAc,KAAM6F,GAAS,CACrD,IAAK/M,EACL,KAAM,cACV,EAAK89C,EAAW,CACZ,QAAS,SAAiBzyD,EAAG,CAC3B,OAAOA,EAAE,gBAAe,CAC1B,EACA,UAAWqhB,GAAWk6I,EAAgBtgG,CAAS,CACnD,CAAG,EAAgBp/C,EAAM,cAAc,MAAO,CAC1C,KAAM,eACN,UAAW,GAAG,OAAO0/I,EAAgB,QAAQ,EAC7C,MAAO,OAAOn2E,GAAU,SAAWA,EAAQ,MAC/C,EAAKA,CAAK,EAAgBvpE,EAAM,cAAc,KAAM,CAChD,KAAM,QACN,UAAW,GAAG,OAAO0/I,EAAgB,OAAO,CAChD,EAAKt5I,CAAQ,CAAC,CACd,CAAC,EACGu5I,GAA6B3/I,EAAM,WAAW,SAAU3G,EAAOP,EAAK,CACtE,IAAI+6I,EAAWx6I,EAAM,SACnB+M,EAAW/M,EAAM,SACfwiJ,EAAmBvH,GAAYT,CAAQ,EACvCzjF,EAAY6rF,GAAc71I,EAAUy1I,CAAgB,EACpDD,EAAUxH,GAAU,EACxB,OAAIwH,EACKxrF,EAEWpwD,EAAM,cAAcy/I,GAAuB55I,GAAS,CACtE,IAAK/M,CACT,EAAK+xD,GAAKxxD,EAAO,CAAC,SAAS,CAAC,CAAC,EAAG+2D,CAAS,CACzC,CAAC,EACG,QAAQ,IAAI,WAAa,eAC3BuvF,GAAc,YAAc,iBC7C9B,IAAIh0G,GAAY,CAAC,QAAS,WAAY,MAAO,OAAQ,OAAO,EAO5D,SAASi0G,GAAoB/zH,EAAMid,EAAY1D,EAAW,CACxD,IAAIy6G,EAAiB/2G,EAAW,KAC9Bg3G,EAAsBh3G,EAAW,MACjCi3G,EAAgBj3G,EAAW,QAC3Bk3G,EAAgBl3G,EAAW,QAC7B,OAAQjd,GAAQ,CAAA,GAAI,IAAI,SAAUviC,EAAKlB,EAAO,CAC5C,GAAIkB,GAAOwc,GAAQxc,CAAG,IAAM,SAAU,CACpC,IAAIoS,EAAOpS,EACT24G,EAAQvmG,EAAK,MACb0K,EAAW1K,EAAK,SAChBjY,EAAMiY,EAAK,IACX1U,EAAO0U,EAAK,KACZgoH,EAAQhoH,EAAK,MACbk7C,EAAY38B,GAAyBve,EAAMiwC,EAAS,EAClDtf,EAAY5oC,GAAuC,OAAO,OAAO2E,CAAK,EAG1E,OAAIge,GAAYpf,IAAS,QACnBA,IAAS,QAESgZ,EAAM,cAAc8/I,EAAqBj6I,GAAS,CACpE,IAAKwmB,CACjB,EAAauqB,EAAW,CACZ,MAAOqrD,CACnB,CAAW,EAAG29C,GAAoBx5I,EAAU0iC,EAAY1D,CAAS,CAAC,EAItCplC,EAAM,cAAc+/I,EAAel6I,GAAS,CAC9D,IAAKwmB,CACf,EAAWuqB,EAAW,CACZ,MAAOqrD,CACjB,CAAS,EAAG29C,GAAoBx5I,EAAU0iC,EAAY1D,CAAS,CAAC,EAItDp+C,IAAS,UACSgZ,EAAM,cAAcggJ,EAAen6I,GAAS,CAC9D,IAAKwmB,CACf,EAAWuqB,CAAS,CAAC,EAEK52C,EAAM,cAAc6/I,EAAgBh6I,GAAS,CAC/D,IAAKwmB,CACb,EAASuqB,EAAW,CACZ,MAAO8sE,CACf,CAAO,EAAGzhB,GAAQ,CAAC,CAACyhB,GAASA,IAAU,IAAmB1jH,EAAM,cAAc,OAAQ,CAC9E,UAAW,GAAG,OAAOolC,EAAW,aAAa,CACrD,EAASs+E,CAAK,CAAC,CACX,CACA,OAAO,IACT,CAAC,EAAE,OAAO,SAAUp6H,EAAK,CACvB,OAAOA,CACT,CAAC,CACH,CACO,SAAS22J,GAAW75I,EAAUshF,EAAOzmE,EAAS6nB,EAAY1D,EAAW,CAC1E,IAAI7vB,EAAanP,EACbmlC,EAAmBp2B,EAAc,CACnC,QAASqqI,GACT,KAAM7D,GACN,MAAOgE,GACP,QAASJ,EACb,EAAKz2G,CAAU,EACb,OAAI4+C,IACFnyE,EAAaqqI,GAAoBl4D,EAAOn8C,EAAkBnG,CAAS,GAE9D62G,GAAc1mI,EAAY0L,CAAO,CAC1C,CCvEA,IAAI0qB,GAAY,CAAC,YAAa,gBAAiB,QAAS,YAAa,WAAY,QAAS,WAAY,YAAa,KAAM,OAAQ,kBAAmB,WAAY,mBAAoB,mBAAoB,oBAAqB,qBAAsB,kBAAmB,WAAY,YAAa,qBAAsB,aAAc,WAAY,sBAAuB,eAAgB,WAAY,aAAc,eAAgB,SAAU,iBAAkB,uBAAwB,oBAAqB,WAAY,aAAc,sBAAuB,oCAAqC,oBAAqB,UAAW,eAAgB,YAAa,gBAAiB,qBAAsB,0BAA2B,6BAA8B,qBAAqB,EAoC7uBk5B,GAAa,CAAA,EACbq7E,GAAoBlgJ,EAAM,WAAW,SAAU3G,EAAOP,EAAK,CAC7D,IAAIqnJ,EACAzkJ,EAAOrC,EACT+mJ,EAAiB1kJ,EAAK,UACtB0pC,EAAYg7G,IAAmB,OAAS,UAAYA,EACpDpgG,EAAgBtkD,EAAK,cACrBggB,EAAQhgB,EAAK,MACb0jD,EAAY1jD,EAAK,UACjB2kJ,EAAgB3kJ,EAAK,SACrBokD,EAAWugG,IAAkB,OAAS,EAAIA,EAC1C34D,EAAQhsF,EAAK,MACb0K,EAAW1K,EAAK,SAChB0iC,EAAY1iC,EAAK,UACjBmJ,EAAKnJ,EAAK,GACV4kJ,EAAY5kJ,EAAK,KACjBi7F,EAAO2pD,IAAc,OAAS,WAAaA,EAC3CC,EAAkB7kJ,EAAK,gBACvBmY,EAAWnY,EAAK,SAChB8kJ,EAAmB9kJ,EAAK,iBACxB+kJ,EAAwB/kJ,EAAK,iBAC7BghJ,EAAmB+D,IAA0B,OAAS,GAAMA,EAC5DC,EAAwBhlJ,EAAK,kBAC7BihJ,EAAoB+D,IAA0B,OAAS,GAAMA,EAC7D7D,EAAqBnhJ,EAAK,mBAC1BilJ,EAAkBjlJ,EAAK,gBACvBqiJ,EAAWriJ,EAAK,SAChB+6I,EAAY/6I,EAAK,UACjBklJ,EAAqBllJ,EAAK,mBAC1BmlJ,EAAkBnlJ,EAAK,WACvBolJ,EAAaD,IAAoB,OAAS,GAAOA,EACjDE,EAAgBrlJ,EAAK,SACrBqjH,EAAWgiC,IAAkB,OAAS,GAAQA,EAC9CC,EAAsBtlJ,EAAK,oBAC3Bm/I,EAAen/I,EAAK,aACpBu5H,EAAWv5H,EAAK,SAChBo/H,EAAap/H,EAAK,WAClBulJ,EAAoBvlJ,EAAK,aACzBs+I,EAAeiH,IAAsB,OAAS,GAAKA,EACnD3pG,EAAS57C,EAAK,OACd4gJ,EAAiB5gJ,EAAK,eACtBwlJ,EAAwBxlJ,EAAK,qBAC7BkhJ,GAAuBsE,IAA0B,OAAS,QAAUA,EACpEp5C,GAAoBpsG,EAAK,kBACzB2sI,GAAW3sI,EAAK,SAChBiiJ,GAAajiJ,EAAK,WAClBylJ,GAAwBzlJ,EAAK,oBAC7B0lJ,EAAsBD,KAA0B,OAAS,MAAQA,GACjEE,EAAoC3lJ,EAAK,kCACzC2iC,GAAoB3iC,EAAK,kBACzB2jD,EAAU3jD,EAAK,QACf+rI,GAAe/rI,EAAK,aACpBojH,GAAYpjH,EAAK,UACjB4lJ,GAAgB5lJ,EAAK,cACrB6lJ,GAAqB7lJ,EAAK,mBAC1Bq/I,GAA0Br/I,EAAK,wBAC/BuiJ,GAA6BviJ,EAAK,2BAClC8lJ,GAAsB9lJ,EAAK,oBAC3Bk7C,GAAY38B,GAAyBve,EAAMiwC,EAAS,EAClD87E,GAAiBznH,EAAM,QAAQ,UAAY,CAC3C,MAAO,CAACigJ,GAAW75I,EAAUshF,EAAO7iB,GAAY28E,GAAqBp8G,CAAS,EAAG66G,GAAW75I,EAAUshF,EAAO7iB,GAAY,CAAA,EAAIz/B,CAAS,CAAC,CACzI,EAAG,CAACh/B,EAAUshF,EAAO85D,EAAmB,CAAC,EACzC95B,GAAkBvwG,GAAeswG,GAAgB,CAAC,EAClDr3D,GAAYs3D,GAAgB,CAAC,EAC7B+5B,EAAmB/5B,GAAgB,CAAC,EAClC3mF,GAAkB/gC,EAAM,SAAS,EAAK,EACxCghC,GAAmB7pB,GAAe4pB,GAAiB,CAAC,EACpD2gH,GAAU1gH,GAAiB,CAAC,EAC5B2gH,GAAa3gH,GAAiB,CAAC,EAC7B8sB,GAAe9tD,EAAM,OAAM,EAC3Bod,GAAOo8H,GAAQ30I,CAAE,EACjB8wI,GAAQv3G,IAAc,MAGtB,QAAQ,IAAI,WAAa,cAC3B33B,GAAQ,CAAC66I,IAAiB,CAACC,GAAoB,sGAAsG,EAIvJ,IAAIhsF,GAAkBl0B,GAAes/G,EAAiB,CAClD,MAAO5C,EACP,UAAW,SAAmBn0J,GAAM,CAClC,OAAOA,IAAQi7E,EACjB,CACN,CAAK,EACDrP,GAAmBr+C,GAAeo+C,GAAiB,CAAC,EACpDqsF,GAAiBpsF,GAAiB,CAAC,EACnCqsF,GAAoBrsF,GAAiB,CAAC,EAIpCssF,GAAkB,SAAyBl4J,GAAM,CACnD,IAAIm4J,GAAa,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACrF,SAASC,IAAW,CAClBH,GAAkBj4J,EAAI,EACtB69I,IAAiB,MAAmCA,GAAa79I,EAAI,CACvE,CACIm4J,GACF7uB,GAAAA,UAAU8uB,EAAQ,EAElBA,GAAQ,CAEZ,EAGI78E,GAAmBnlE,EAAM,SAAS4hJ,EAAc,EAClDx8E,GAAmBjuD,GAAeguD,GAAkB,CAAC,EACrD88E,GAAsB78E,GAAiB,CAAC,EACxC88E,GAAyB98E,GAAiB,CAAC,EACzCogB,GAAWxlF,EAAM,OAAO,EAAK,EAG7BmiJ,GAAkBniJ,EAAM,QAAQ,UAAY,CAC5C,OAAK22F,IAAS,UAAYA,IAAS,aAAe4pD,EACzC,CAAC,WAAYA,CAAe,EAE9B,CAAC5pD,EAAM,EAAK,CACrB,EAAG,CAACA,EAAM4pD,CAAe,CAAC,EAC1B6B,GAAkBjrI,GAAegrI,GAAiB,CAAC,EACnDE,GAAaD,GAAgB,CAAC,EAC9BE,GAAwBF,GAAgB,CAAC,EACvCG,GAAeF,KAAe,SAC9BhsC,GAAmBr2G,EAAM,SAASqiJ,EAAU,EAC9C/rC,GAAmBn/F,GAAek/F,GAAkB,CAAC,EACrDmsC,GAAelsC,GAAiB,CAAC,EACjCmsC,GAAkBnsC,GAAiB,CAAC,EAClCW,GAAmBj3G,EAAM,SAASsiJ,EAAqB,EACzDprC,GAAmB//F,GAAe8/F,GAAkB,CAAC,EACrDyrC,GAA0BxrC,GAAiB,CAAC,EAC5CyrC,GAA6BzrC,GAAiB,CAAC,EACjDl3G,EAAM,UAAU,UAAY,CAC1ByiJ,GAAgBJ,EAAU,EAC1BM,GAA2BL,EAAqB,EAC3C98D,GAAS,UAIV+8D,GACFV,GAAkBI,EAAmB,EAGrCH,GAAgBj9E,EAAU,EAE9B,EAAG,CAACw9E,GAAYC,EAAqB,CAAC,EAGtC,IAAI1qC,GAAmB53G,EAAM,SAAS,CAAC,EACrC63G,GAAoB1gG,GAAeygG,GAAkB,CAAC,EACtDgrC,GAAmB/qC,GAAkB,CAAC,EACtCgrC,GAAsBhrC,GAAkB,CAAC,EACvCirC,GAAaF,IAAoBxyF,GAAU,OAAS,GAAKoyF,KAAiB,cAAgBhC,EAG9FxgJ,EAAM,UAAU,UAAY,CACtBuiJ,IACFL,GAAuBN,EAAc,CAEzC,EAAG,CAACA,EAAc,CAAC,EACnB5hJ,EAAM,UAAU,UAAY,CAC1B,OAAAwlF,GAAS,QAAU,GACZ,UAAY,CACjBA,GAAS,QAAU,EACrB,CACF,EAAG,CAAA,CAAE,EAGL,IAAIu9D,GAAiB5K,GAAa,EAChCO,GAAeqK,GAAe,aAC9BnK,GAAiBmK,GAAe,eAChClK,GAAsBkK,GAAe,oBACrChK,GAAegK,GAAe,aAC9BpM,GAAaoM,GAAe,WAC5BrM,GAAUqM,GAAe,QACzB7J,GAAiB6J,GAAe,eAC9BC,GAAsBhjJ,EAAM,QAAQ,UAAY,CAClD,MAAO,CACL,aAAc04I,GACd,eAAgBE,EACtB,CACE,EAAG,CAACF,GAAcE,EAAc,CAAC,EAC7BqK,GAAkBjjJ,EAAM,QAAQ,UAAY,CAC9C,MAAO,CACL,aAAc+4I,EACpB,CACE,EAAG,CAACA,EAAY,CAAC,EACjB/4I,EAAM,UAAU,UAAY,CAC1B64I,GAAoBiK,GAAaj+E,GAAazU,GAAU,MAAMwyF,GAAmB,CAAC,EAAE,IAAI,SAAUv8I,GAAO,CACvG,OAAOA,GAAM,GACf,CAAC,CAAC,CACJ,EAAG,CAACu8I,GAAkBE,EAAU,CAAC,EAGjC,IAAI1mB,GAAmB/6F,GAAeo1G,GAAamK,KAAwBT,EAAc/vF,GAAU,CAAC,KAAO,MAAQ+vF,IAAgB,OAAS,OAASA,EAAY,KAAM,CACnK,MAAO1J,CACb,CAAK,EACDpa,GAAmBllH,GAAeilH,GAAkB,CAAC,EACrD8mB,GAAkB7mB,GAAiB,CAAC,EACpC8mB,GAAqB9mB,GAAiB,CAAC,EACrCud,GAAWT,GAAgB,SAAU11J,GAAK,CAC5C0/J,GAAmB1/J,EAAG,CACxB,CAAC,EACGo2J,GAAaV,GAAgB,UAAY,CAC3CgK,GAAmB,MAAS,CAC9B,CAAC,EACDtX,EAAAA,oBAAoB/yI,EAAK,UAAY,CACnC,MAAO,CACL,KAAMg1D,GAAa,QACnB,MAAO,SAAezmE,GAAS,CAC7B,IAAI+7J,GACAx5J,GAAO8sJ,GAAO,EACd2M,GAAmB/M,GAAgB1sJ,GAAMwzB,EAAI,EAC/CiqC,GAAWg8F,GAAiB,SAC5B9M,GAAc8M,GAAiB,YAC/B7M,GAAc6M,GAAiB,YAC7B5L,GAAoBzB,GAAqBloF,GAAa,QAASzG,EAAQ,EACvEi8F,GAAiBJ,KAA2EzL,GAAkB,CAAC,EAAIjB,GAAY,IAAIiB,GAAkB,CAAC,CAAC,GAAK2L,GAAkBhzF,GAAU,KAAK,SAAU3oD,GAAM,CAC/M,MAAO,CAACA,GAAK,MAAM,QACrB,CAAC,KAAO,MAAQ27I,KAAoB,OAAS,OAASA,GAAgB,KAClEG,GAAiBhN,GAAY,IAAI+M,EAAc,EACnD,GAAIA,IAAkBC,GAAgB,CACpC,IAAIC,GACJD,IAAmB,OAAsCC,GAAwBD,GAAe,SAAW,MAAQC,KAA0B,QAAUA,GAAsB,KAAKD,GAAgBl8J,EAAO,CAC3M,CACF,CACN,CACE,CAAC,EAID,IAAIo8J,GAAmBpiH,GAAe2/G,GAAuB,GAAI,CAC7D,MAAOnG,EAEP,UAAW,SAAmBjxJ,GAAM,CAClC,OAAI,MAAM,QAAQA,EAAI,EACbA,GAELA,IAAS,KACJi7E,GAEF,CAACj7E,EAAI,CACd,CACN,CAAK,EACD85J,GAAmBvsI,GAAessI,GAAkB,CAAC,EACrDE,GAAmBD,GAAiB,CAAC,EACrCE,GAAsBF,GAAiB,CAAC,EAGtCG,GAAmB,SAA0Bh7H,GAAM,CACrD,GAAIi4H,EAAY,CAEd,IAAIhkI,GAAY+L,GAAK,IACjBi7H,GAAQH,GAAiB,SAAS7mI,EAAS,EAC3CinI,GACAhlC,EACE+kC,GACFC,GAAgBJ,GAAiB,OAAO,SAAUlgK,GAAK,CACrD,OAAOA,KAAQq5B,EACjB,CAAC,EAEDinI,GAAgB,CAAA,EAAG,OAAOhuI,GAAmB4tI,EAAgB,EAAG,CAAC7mI,EAAS,CAAC,EAG7EinI,GAAgB,CAACjnI,EAAS,EAE5B8mI,GAAoBG,EAAa,EAGjC,IAAIC,GAAa7uI,EAAcA,EAAc,CAAA,EAAI0T,EAAI,EAAG,GAAI,CAC1D,aAAck7H,EACtB,CAAO,EACGD,GACFhpB,GAAe,MAAiCA,EAAWkpB,EAAU,EAErE/uB,GAAa,MAA+BA,EAAS+uB,EAAU,CAEnE,CAGI,CAACjlC,GAAY6iC,GAAe,QAAUY,KAAiB,UACzDV,GAAgBj9E,EAAU,CAE9B,EAMI22E,GAAkBrC,GAAgB,SAAUtwH,GAAM,CACpDw2B,GAAY,MAA8BA,EAAQ46F,GAAapxH,EAAI,CAAC,EACpEg7H,GAAiBh7H,EAAI,CACvB,CAAC,EACGo7H,GAAuB9K,GAAgB,SAAU11J,GAAK2jF,GAAM,CAC9D,IAAI88E,GAActC,GAAe,OAAO,SAAU19J,GAAG,CACnD,OAAOA,KAAMT,EACf,CAAC,EACD,GAAI2jF,GACF88E,GAAY,KAAKzgK,EAAG,UACX++J,KAAiB,SAAU,CAEpC,IAAI2B,GAAcjL,GAAez1J,EAAG,EACpCygK,GAAcA,GAAY,OAAO,SAAUhgK,GAAG,CAC5C,MAAO,CAACigK,GAAY,IAAIjgK,EAAC,CAC3B,CAAC,CACH,CACKi2B,GAAQynI,GAAgBsC,GAAa,EAAI,GAC5CpC,GAAgBoC,GAAa,EAAI,CAErC,CAAC,EAGGrN,GAA2B,SAAkCpzJ,GAAK2jF,GAAM,CAC1E,IAAImwC,GAAWnwC,IAA0C,CAACw6E,GAAe,SAASn+J,EAAG,EACrFwgK,GAAqBxgK,GAAK8zH,EAAQ,CACpC,EACI+J,GAAoBwwB,GAAiB0Q,GAAcU,GAAiBvN,GAAOv4H,GAAM0wC,GAAc4oF,GAASC,GAAYwM,GAAoBtM,GAA0B/3B,EAAS,EAG/K9+G,EAAM,UAAU,UAAY,CAC1B2hJ,GAAW,EAAI,CACjB,EAAG,CAAA,CAAE,EAGL,IAAIyC,GAAiBpkJ,EAAM,QAAQ,UAAY,CAC7C,MAAO,CACL,wBAAyB+6I,GACzB,2BAA4BkD,EAClC,CACE,EAAG,CAAClD,GAAyBkD,EAA0B,CAAC,EAKpDoG,GAAmB7B,KAAiB,cAAgBhC,EAAmBpwF,GAE3EA,GAAU,IAAI,SAAU/pD,GAAOje,GAAO,CACpC,OAGE4X,EAAM,cAAcw9I,GAAqB,CACvC,IAAKn3I,GAAM,IACX,iBAAkBje,GAAQw6J,EAClC,EAASv8I,EAAK,CAEZ,CAAC,EAGGkS,GAAyBvY,EAAM,cAAcq6F,GAAUx0F,GAAS,CAClE,GAAIhB,EACJ,IAAKipD,GACL,UAAW,GAAG,OAAO1oB,EAAW,WAAW,EAC3C,UAAW,KACX,cAAeu2G,GACf,UAAWn2I,GAAW4/B,EAAW,GAAG,OAAOA,EAAW,OAAO,EAAG,GAAG,OAAOA,EAAW,GAAG,EAAE,OAAOo9G,EAAY,EAAGpjG,EAAWh4C,EAAgBA,EAAgB,CAAA,EAAI,GAAG,OAAOg+B,EAAW,mBAAmB,EAAGs9G,EAAuB,EAAG,GAAG,OAAOt9G,EAAW,MAAM,EAAGuwG,EAAK,EAAG31F,CAAa,EACvR,IAAK5hB,EACL,MAAO1iB,EACP,KAAM,OACN,SAAUokC,EACV,KAAMukG,GACN,cAAe,SAAuB58I,GAAM,CAC1C,OAAOA,EACT,EACA,cAAe,SAAuB68I,GAAW,CAE/C,IAAI9sI,GAAM8sI,GAAU,OAChBC,GAAkB/sI,GAAM44C,GAAU,MAAM,CAAC54C,EAAG,EAAI,KACpD,OAAoBxX,EAAM,cAAcu/I,GAAS,CAC/C,SAAUrH,GACV,MAAOkJ,EACP,SAAU0B,GACV,mBAAoBtrI,KAAQ,EAC5B,eAAgB6pI,CACxB,EAASkD,EAAe,CACpB,EACA,SAAU/B,KAAiB,cAAgBhC,EAAmBnmD,GAAS,WAAaA,GAAS,WAC7F,IAAK,OACL,iBAAkB,GAClB,gBAAiB,SAAyBmqD,GAAc,CACtD3B,GAAoB2B,EAAY,CAClC,EACA,UAAWljC,EACf,EAAK1qE,EAAS,CAAC,EAGb,OAAoB52C,EAAM,cAAcy0I,GAAe,SAAU,CAC/D,MAAO2P,EACX,EAAkBpkJ,EAAM,cAAc2zI,GAAU,SAAU,CACtD,MAAOv2H,EACX,EAAkBpd,EAAM,cAAcw9I,GAAqB,CACvD,UAAWp4G,EACX,cAAe4a,EACf,KAAMwiG,GACN,SAAUZ,GACV,IAAKjM,GAGL,SAAU9hI,EAGV,OAAQ6tI,GAAUpqG,EAAS,KAC3B,eAAgBoqG,GAAUpF,EAAiB,KAG3C,UAAW4G,GACX,SAAUtJ,GACV,WAAYC,GAGZ,aAAc8J,GAGd,aAAc3J,EAGd,iBAAkB0C,EAClB,kBAAmBC,EACnB,mBAAoBE,EACpB,kBAAmB/0C,GACnB,qBAAsB80C,GACtB,kBAAmBv+G,GAGnB,SAAUgqG,GACV,WAAYsV,GAGZ,YAAanC,GACb,aAAcyI,EAClB,EAAkBjkJ,EAAM,cAAcw0I,GAAgB,SAAU,CAC5D,MAAOyO,EACX,EAAK1qI,EAAS,EAAgBvY,EAAM,cAAc,MAAO,CACrD,MAAO,CACL,QAAS,MACf,EACI,cAAe,EACnB,EAAkBA,EAAM,cAAcm0I,GAAoB,SAAU,CAChE,MAAO6O,EACX,EAAKvB,CAAgB,CAAC,CAAC,CAAC,CAAC,CACzB,CAAC,ECvdGgD,GAAavE,GACjBuE,GAAW,KAAO9I,GAClB8I,GAAW,QAAUlF,GACrBkF,GAAW,UAAY9E,GACvB8E,GAAW,QAAUjF,GCXrB,IAAIkF,GAAmB,CAAE,KAAQ,CAAE,IAAO,MAAO,MAAS,CAAE,QAAW,gBAAiB,UAAa,OAAO,EAAI,SAAY,CAAC,CAAE,IAAO,OAAQ,MAAS,CAAE,EAAK,4HAA4H,EAAI,CAAC,EAAI,KAAQ,WAAY,MAAS,UAAU,ECMtUA,GAAmB,SAA0BrrJ,EAAOP,EAAK,CAC3D,OAAoBkH,EAAM,cAAcogD,GAAUv6C,GAAS,CAAA,EAAIxM,EAAO,CACpE,IAAKP,EACL,KAAM6rJ,EACV,CAAG,CAAC,CACJ,EAGIrkG,GAAuBtgD,EAAM,WAAW0kJ,EAAgB,EACxD,QAAQ,IAAI,WAAa,eAC3BpkG,GAAQ,YAAc,oBChBxB,MAAMskG,GAAiC5kJ,EAAM,cAAc,IAAI,EAClD6kJ,GAA4BD,GAAkB,SAE9CE,GAAsC9kJ,EAAM,cAAc,IAAI,EAC9D+kJ,GAAiCD,GAAuB,SCArE,IAAIn5G,GAAY,CAAC,YAAa,YAAa,QAAS,UAAW,WAAY,iBAAkB,OAAQ,QAAS,UAAU,EAK7Gq5G,GAAwBx0F,EAAAA,WAAW,SAAUn3D,EAAOP,EAAK,CAClE,IAAIs9D,EAAmB/8D,EAAM,UAC3B+rC,EAAYgxB,IAAqB,OAAS,cAAgBA,EAC1DhX,EAAY/lD,EAAM,UAClBqiB,EAAQriB,EAAM,MACd4rJ,EAAU5rJ,EAAM,QAChBwa,EAAWxa,EAAM,SACjB6rJ,EAAwB7rJ,EAAM,eAC9B8rJ,EAAiBD,IAA0B,OAAS,GAAQA,EAC5DE,EAAc/rJ,EAAM,KACpBrS,EAAOo+J,IAAgB,OAAS,WAAaA,EAC7C77E,EAAQlwE,EAAM,MACdkoC,EAAWloC,EAAM,SACjBgsJ,EAAaprI,GAAyB5gB,EAAOsyC,EAAS,EACpDs0D,EAAWlnG,EAAAA,OAAO,IAAI,EACtBixE,EAAYjxE,EAAAA,OAAO,IAAI,EACvBw8D,EAAkBl0B,GAAe8jH,EAAgB,CACjD,MAAOF,CACb,CAAK,EACDzvF,EAAmBr+C,GAAeo+C,EAAiB,CAAC,EACpDqmE,EAAWpmE,EAAiB,CAAC,EAC7B8vF,EAAc9vF,EAAiB,CAAC,EAClCq2E,EAAAA,oBAAoB/yI,EAAK,UAAY,CACnC,MAAO,CACL,MAAO,SAAezR,EAAS,CAC7B,IAAIk+J,GACHA,EAAoBtlD,EAAS,WAAa,MAAQslD,IAAsB,QAAUA,EAAkB,MAAMl+J,CAAO,CACpH,EACA,KAAM,UAAgB,CACpB,IAAIm+J,GACHA,EAAqBvlD,EAAS,WAAa,MAAQulD,IAAuB,QAAUA,EAAmB,KAAI,CAC9G,EACA,MAAOvlD,EAAS,QAChB,cAAej2B,EAAU,OAC/B,CACE,CAAC,EACD,IAAI/pB,EAAcz6C,GAAW4/B,EAAWga,EAAWh4C,EAAgBA,EAAgB,GAAI,GAAG,OAAOg+B,EAAW,UAAU,EAAGw2F,CAAQ,EAAG,GAAG,OAAOx2F,EAAW,WAAW,EAAGvxB,CAAQ,CAAC,EAC5KmjD,EAAe,SAAsB7yE,EAAG,CACtC0vB,IAGE,YAAaxa,GACjBisJ,EAAYnhK,EAAE,OAAO,OAAO,EAE9Bo9C,GAAa,MAA+BA,EAAS,CACnD,OAAQpsB,EAAcA,EAAc,CAAA,EAAI9b,CAAK,EAAG,CAAA,EAAI,CAClD,KAAMrS,EACN,QAAS7C,EAAE,OAAO,OAC1B,CAAO,EACD,gBAAiB,UAA2B,CAC1CA,EAAE,gBAAe,CACnB,EACA,eAAgB,UAA0B,CACxCA,EAAE,eAAc,CAClB,EACA,YAAaA,EAAE,WACrB,CAAK,EACH,EACA,OAAoB6b,EAAM,cAAc,OAAQ,CAC9C,UAAWigD,EACX,MAAOspB,EACP,MAAO7tD,EACP,IAAKsuD,CACT,EAAkBhqE,EAAM,cAAc,QAAS6F,GAAS,CAAA,EAAIw/I,EAAY,CACpE,UAAW,GAAG,OAAOjgH,EAAW,QAAQ,EACxC,IAAK66D,EACL,SAAUjpC,EACV,SAAUnjD,EACV,QAAS,CAAC,CAAC+nH,EACX,KAAM50I,CACV,CAAG,CAAC,EAAgBgZ,EAAM,cAAc,OAAQ,CAC5C,UAAW,GAAG,OAAOolC,EAAW,QAAQ,CAC5C,CAAG,CAAC,CACJ,CAAC,EC5Ec,SAASqgH,GAAcC,EAAoB,CACxD,MAAMC,EAAoB3lJ,EAAM,OAAO,IAAI,EACrCuhH,EAAY,IAAM,CACtBnrG,GAAI,OAAOuvI,EAAkB,OAAO,EACpCA,EAAkB,QAAU,IAC9B,EAcA,MAAO,CAbc,IAAM,CACzBpkC,EAAS,EACTokC,EAAkB,QAAUvvI,GAAI,IAAM,CACpCuvI,EAAkB,QAAU,IAC9B,CAAC,CACH,EACqBxhK,GAAK,CACpBwhK,EAAkB,UACpBxhK,EAAE,gBAAe,EACjBo9H,EAAS,GAEXmkC,GAAuB,MAAiDA,EAAmBvhK,CAAC,CAC9F,CACkC,CACpC,CCtBA,MAAMyhK,GAAqBtoI,GAAS,CAClC,KAAM,CACJ,aAAA0pB,EACA,OAAAmnB,CACJ,EAAM7wC,EACEoiI,EAAiB,GAAG14G,CAAY,SACtC,MAAO,CACL,CAAC04G,CAAc,EAAG,OAAO,OAAO,OAAO,OAAO,GAAIp2G,GAAehsB,CAAK,CAAC,EAAG,CACxE,QAAS,eACT,SAAU,EAEV,CAAC,IAAIoiI,CAAc,MAAM,EAAG,CAC1B,UAAW,KACnB,EACM,CAAC,IAAIA,CAAc,QAAQ,EAAG,CAC5B,QAAS,MACjB,EACM,CAAC,GAAGvxF,CAAM,UAAUA,CAAM,cAAc,EAAG,CACzC,OAAQ,CAChB,EACM,CAAC,KAAKA,CAAM,8BAA8BA,CAAM,iBAAiB,EAAG,CAClE,kBAAmB,MAC3B,CACA,CAAK,CACL,CACA,EAEM03F,GAAqBvoI,GAAS,CAClC,KAAM,CACJ,aAAA0pB,EACA,uBAAA8+G,EACA,aAAAz6F,EACA,UAAA06F,EACA,mBAAA/pF,EACA,kBAAAzY,EACA,oBAAArB,EACA,iBAAAm+E,EACA,YAAA2lB,EACA,UAAAhrH,EACA,yBAAAwpG,EACA,kBAAAC,EACA,UAAArB,EACA,iBAAA6iB,EACA,SAAAC,EACA,WAAAC,EACA,aAAAC,EACA,KAAA1wH,CACJ,EAAMpY,EACE+oI,EAAsB,GAAGr/G,CAAY,SAErCs/G,EAAuB5wH,EAAKqwH,CAAS,EAAE,IAAIrwH,EAD9B,CAC6C,EAAE,IAAI,CAAC,CAAC,EAClE6wH,EAAgB7wH,EAAK,CAAC,EAAE,IAAIqwH,CAAS,EAAE,MAAM,CACjD,KAAM,EACV,CAAG,EACD,MAAO,CACL,CAAC,GAAG/+G,CAAY,UAAU,EAAG,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIsC,GAAehsB,CAAK,CAAC,EAAG,CACnF,QAAS,cACT,WAAY,WACZ,kBAAmB,EACnB,gBAAiBwoI,EACjB,OAAQ,UACR,eAAgB,CACd,gBAAiB,CACzB,EAEM,CAAC,IAAI9+G,CAAY,cAAc,EAAG,CAChC,UAAW,KACnB,EACM,aAAc,CACZ,OAAQ,cACR,MAAO1pB,EAAM,iBACrB,EACM,WAAY,CACV,QAAS,eACT,MAAO,EACP,SAAU,SACV,QAAS,QACjB,EACM,UAAW,CACT,KAAM,EACN,eAAgB,QACxB,EAEM,CAAC,GAAG0pB,CAAY,iBAAiB,EAAG,CAClC,SAAU,WACV,gBAAiB,EACjB,iBAAkB,EAClB,MAAO,OACP,OAAQ,OACR,OAAQ,GAAG5oB,GAAK4c,CAAS,CAAC,IAAIkrH,CAAQ,IAAI76F,CAAY,GACtD,aAAc,MACd,WAAY,SACZ,QAAS,EACT,QAAS,IACjB,EACM,CAACrkB,CAAY,EAAG,OAAO,OAAO,OAAO,OAAO,GAAIsC,GAAehsB,CAAK,CAAC,EAAG,CACtE,SAAU,WACV,QAAS,eACT,QAAS,OACT,OAAQ,UACR,UAAW,SACX,aAAc,KACtB,CAAO,EACD,CAAC,GAAG0pB,CAAY;AAAA,kBACJq/G,CAAmB,EAAE,EAAG,CAClC,YAAah7F,CACrB,EACM,CAAC,GAAGrkB,CAAY,0BAA0Bq/G,CAAmB,EAAE,EAAG,OAAO,OAAO,CAAA,EAAIn8G,GAAgB5sB,CAAK,CAAC,EAC1G,CAAC,GAAG0pB,CAAY,kBAAkBA,CAAY,yBAAyB,EAAG,CACxE,WAAY,SACpB,EACM,CAAC,GAAGA,CAAY,QAAQ,EAAG,CACzB,WAAY,CACV,UAAW,aACX,SAAU,WACV,gBAAiB,MACjB,iBAAkB,MAClB,QAAS,QACT,MAAOu/G,EACP,OAAQA,EACR,iBAAkB7wH,EAAK,CAAC,EAAE,IAAIqwH,CAAS,EAAE,IAAI,EAAE,EAAE,MAAM,CACrD,KAAM,EAClB,CAAW,EACD,kBAAmBrwH,EAAK,CAAC,EAAE,IAAIqwH,CAAS,EAAE,IAAI,EAAE,EAAE,MAAM,CACtD,KAAM,EAClB,CAAW,EACD,gBAAiBI,EACjB,iBAAkB,EAClB,kBAAmB,EACnB,aAAcI,EACd,UAAW,WACX,QAAS,EACT,WAAY,OAAOvqF,CAAkB,IAAI9Z,CAAmB,GAC5D,QAAS,IACnB,EACQ,UAAW,aACX,SAAU,WACV,gBAAiB,EACjB,iBAAkB,EAClB,QAAS,QACT,MAAOqkG,EACP,OAAQA,EACR,gBAAiBlmB,EACjB,YAAa2lB,EACb,YAAa,QACb,YAAahrH,EACb,aAAc,MACd,WAAY,OAAOuoB,CAAiB,EAC5C,EACM,CAAC,GAAGvc,CAAY,QAAQ,EAAG,CACzB,SAAU,WACV,MAAO,EACP,OAAQ,EACR,OAAQ,UACR,QAAS,CACjB,EAEM,CAAC,GAAGA,CAAY,UAAU,EAAG,CAC3B,CAACq/G,CAAmB,EAAG,CACrB,YAAah7F,EACb,gBAAiB+6F,EACjB,WAAY,CACV,UAAW,SAAS9oI,EAAM,KAAKA,EAAM,OAAO,EAAE,IAAIyoI,CAAS,EAAE,MAAK,CAAE,IACpE,QAAS,EACT,WAAY,OAAO/pF,CAAkB,IAAI9Z,CAAmB,EACxE,CACA,CACA,EACM,CAAC,GAAGlb,CAAY,WAAW,EAAG,CAC5B,OAAQ,cACR,CAACq/G,CAAmB,EAAG,CACrB,gBAAiB7hB,EACjB,YAAawhB,EACb,OAAQ,cACR,WAAY,CACV,gBAAiBC,CAC7B,CACA,EACQ,CAAC,GAAGj/G,CAAY,QAAQ,EAAG,CACzB,OAAQ,aAClB,EACQ,CAAC,GAAGA,CAAY,kBAAkB,EAAG,CACnC,MAAOy9F,EACP,OAAQ,aAClB,EACQ,CAAC,IAAIz9F,CAAY,UAAU,EAAG,CAC5B,CAACq/G,CAAmB,EAAG,CACrB,WAAY,CACV,UAAW,SAAS3wH,EAAK4wH,CAAoB,EAAE,IAAIP,CAAS,EAAE,MAAK,CAAE,GACnF,CACA,CACA,CACA,EACM,CAAC,OAAO/+G,CAAY,MAAM,EAAG,CAC3B,mBAAoBo8F,EACpB,iBAAkBA,CAC1B,CACA,CAAK,CACL,CACA,EAEMojB,GAAsBlpI,GAAS,CACnC,KAAM,CACJ,YAAAmpI,EACA,cAAAvrH,EACA,aAAA8L,EACA,UAAAhM,EACA,SAAAkrH,EACA,YAAAF,EACA,mBAAAhqF,EACA,kBAAAzY,EACA,oBAAAmjG,EACA,SAAAtrH,EACA,SAAAurH,EACA,WAAA1qH,EACA,gBAAA2tD,EACA,gBAAAC,EACA,UAAAu5C,EACA,aAAAroG,EACA,eAAAgvD,EACA,eAAA68D,EACA,gBAAAC,EACA,wBAAAC,EACA,kBAAAriB,EACA,yBAAAD,EACA,wBAAAuiB,EACA,2BAAAC,EACA,aAAA37F,EACA,kBAAAqU,EACA,mBAAAunF,EACA,qBAAAC,EACA,0BAAAC,EACA,2BAAAC,EACA,KAAA1xH,CACJ,EAAMpY,EACJ,MAAO,CACL,CAAC,GAAG0pB,CAAY,iBAAiB,EAAG,CAClC,SAAU,WACV,QAAS,eACT,OAAQ9L,EACR,OAAQ,EACR,cAAewrH,EACf,aAAc,EACd,MAAOD,EACP,SAAArrH,EACA,WAAYhd,GAAKsX,EAAKwF,CAAa,EAAE,IAAIxF,EAAKsF,CAAS,EAAE,IAAI,CAAC,CAAC,EAAE,MAAK,CAAE,EACxE,WAAY2rH,EACZ,OAAQ,GAAGvoI,GAAK4c,CAAS,CAAC,IAAIkrH,CAAQ,IAAIF,CAAW,GAGrD,sBAAuBtwH,EAAKsF,CAAS,EAAE,IAAI,GAAI,EAAE,MAAK,EACtD,uBAAwB,EACxB,qBAAsBA,EACtB,OAAQ,UACR,WAAY,CAAC,SAASuoB,CAAiB,GAAI,cAAcA,CAAiB,GAAI,cAAcA,CAAiB,EAAE,EAAE,KAAK,GAAG,EACzH,EAAG,CACD,MAAOkjG,CACf,EACM,CAAC,KAAKz/G,CAAY,SAAS,EAAG,CAC5B,SAAU,WACV,gBAAiB,EACjB,iBAAkB,EAClB,OAAQ,GACR,MAAO,OACP,OAAQ,MAChB,EACM,sBAAuB,CACrB,YAAa,CACX,SAAU,WACV,gBAAiBtR,EAAKsF,CAAS,EAAE,IAAI,EAAE,EAAE,MAAK,EAC9C,iBAAkBtF,EAAKsF,CAAS,EAAE,IAAI,EAAE,EAAE,MAAK,EAC/C,QAAS,QACT,UAAW,cACX,MAAO,EACP,OAAQ,OACR,aAAcA,EACd,cAAe,EACf,gBAAiBgrH,EACjB,WAAY,oBAAoBhqF,CAAkB,GAClD,QAAS,IACnB,CACA,EACM,gBAAiB,CACf,kBAAmB,GAAG59C,GAAK4c,CAAS,CAAC,IAAIkrH,CAAQ,IAAIF,CAAW,GAChE,uBAAwBjrH,EACxB,qBAAsBA,CAC9B,EACM,eAAgB,CACd,qBAAsBA,EACtB,mBAAoBA,CAC5B,EACM,2BAA4B,CAC1B,aAAAA,CACR,EACM,CAAC,GAAGiM,CAAY,gBAAgB,EAAG,CACjC,OAAQ4iD,EACR,SAAU3tD,EACV,WAAY7d,GAAKsX,EAAKk0D,CAAe,EAAE,IAAIl0D,EAAKsF,CAAS,EAAE,IAAI,CAAC,CAAC,EAAE,MAAK,CAAE,EAC1E,gBAAiB,CACf,uBAAwB4rH,EACxB,qBAAsBA,CAChC,EACQ,eAAgB,CACd,qBAAsBA,EACtB,mBAAoBA,CAC9B,CACA,EACM,CAAC,GAAG5/G,CAAY,gBAAgB,EAAG,CACjC,OAAQ6iD,EACR,cAAen0D,EAAK0tG,CAAS,EAAE,IAAIpoG,CAAS,EAAE,MAAK,EACnD,aAAc,EACd,WAAY5c,GAAKsX,EAAKm0D,CAAe,EAAE,IAAIn0D,EAAKsF,CAAS,EAAE,IAAI,CAAC,CAAC,EAAE,MAAK,CAAE,EAC1E,gBAAiB,CACf,uBAAwB+uD,EACxB,qBAAsBA,CAChC,EACQ,eAAgB,CACd,qBAAsBA,EACtB,mBAAoBA,CAC9B,CACA,EACM,UAAW,CACT,SAAU,WACV,MAAO1+B,CACf,EACM,wBAAyB,OAAO,OAAO,CAAA,EAAInhB,GAAgB5sB,CAAK,CAAC,EACjE,CAAC,GAAG0pB,CAAY,qDAAqD,EAAG,CACtE,MAAO,EACP,OAAQ,EACR,QAAS,EACT,cAAe,MACvB,EACM,CAAC,iBAAiBA,CAAY,2BAA2B,EAAG,CAC1D,OAAQ,EACR,MAAOqkB,EACP,WAAYw7F,EACZ,YAAax7F,EACb,YAAa,CACX,gBAAiBA,CAC3B,EACQ,gBAAiB,CACf,YAAaA,CACvB,EACQ,UAAW,CACT,MAAOqU,EACP,YAAaA,EACb,YAAa,CACX,gBAAiBA,CAC7B,CACA,EACQ,WAAY,CACV,MAAOunF,EACP,YAAaA,EACb,YAAa,CACX,gBAAiBA,CAC7B,CACA,CACA,EACM,CAAC,GAAGjgH,CAAY,8BAA8BA,CAAY,2BAA2B,EAAG,CACtF,MAAO8/G,EACP,WAAYI,EACZ,YAAaA,EACb,UAAW,CACT,MAAOJ,EACP,WAAYK,EACZ,YAAaA,CACvB,EACQ,WAAY,CACV,MAAOL,EACP,WAAYM,EACZ,YAAaA,CACvB,CACA,EACM,aAAc,CACZ,MAAO3iB,EACP,gBAAiBD,EACjB,YAAawhB,EACb,OAAQ,cACR,yBAA0B,CACxB,MAAOvhB,EACP,gBAAiBD,EACjB,YAAawhB,CACvB,CACA,EACM,CAAC,aAAah/G,CAAY,yBAAyB,EAAG,CACpD,MAAOggH,EACP,gBAAiBD,EACjB,YAAaf,EACb,UAAW,MACnB,EACM,UAAW,CACT,KAAM,EACN,UAAW,QACnB,CACA,CACA,CACA,EA4CAqB,GAAe1iH,GAAc,QAASrnB,GAAS,CAC7C,KAAM,CACJ,eAAAonH,EACA,oBAAAO,CACJ,EAAM3nH,EACEgqI,EAAmB,SAASlpI,GAAK6mH,CAAmB,CAAC,IAAIP,CAAc,GAEvE6iB,EAAahkH,GAAWjmB,EAAO,CACnC,iBAAAgqI,EACA,uBAH6BA,CAIjC,CAAG,EACD,MAAO,CAAC1B,GAAmB2B,CAAU,EAAG1B,GAAmB0B,CAAU,EAAGf,GAAoBe,CAAU,CAAC,CACzG,EAtDqCjqI,GAAS,CAC5C,KAAM,CACJ,UAAAkqI,EACA,QAAA58D,EACA,SAAA5oC,EACA,UAAAhnB,EACA,WAAAiB,EACA,UAAAmmB,EACA,iBAAAi+E,EACA,kBAAAoE,EACA,4BAAAgjB,EACA,oBAAA1X,EACA,aAAA1kF,EACA,kBAAAqU,EACA,mBAAAunF,EACA,WAAAS,CACJ,EAAMpqI,EACEqqI,EAAa,EACb5B,EAAY9pH,EACZ2rH,EAAeJ,EAAYzB,EAAY4B,EAAa,EAAI5B,GAAa4B,EAAa3sH,GAAa,EACrG,MAAO,CAEL,UAAA+qH,EACA,QAAS6B,EACT,iBAAkBnjB,EAElB,wBAAyBsL,EACzB,qBAAsB1kF,EACtB,0BAA2BqU,EAC3B,2BAA4BunF,EAC5B,SAAU5mB,EACV,gBAAiBA,EACjB,YAAaj+E,EACb,wBAAyBqlG,EACzB,2BAA4BhjB,EAC5B,oBAAqB75C,EAAU5vD,EAC/B,uBAAwBgnB,EAExB,WAAYwlG,EAAYn8F,EAAeq8F,EACvC,aAAcF,EAAYnnB,EAAmBh1E,CACjD,CACA,EAa0B,CACxB,SAAU,CACR,UAAW,GACX,QAAS,EACb,CACA,CAAC,EC5cD,IAAIljB,GAAgC,SAAU/kD,EAAGe,EAAG,CAClD,IAAId,EAAI,CAAA,EACR,QAASe,KAAKhB,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGgB,CAAC,GAAKD,EAAE,QAAQC,CAAC,EAAI,IAAGf,EAAEe,CAAC,EAAIhB,EAAEgB,CAAC,GAC/F,GAAIhB,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WAAY,QAAS,EAAI,EAAGgB,EAAI,OAAO,sBAAsBhB,CAAC,EAAG,EAAIgB,EAAE,OAAQ,IAClID,EAAE,QAAQC,EAAE,CAAC,CAAC,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKhB,EAAGgB,EAAE,CAAC,CAAC,IAAGf,EAAEe,EAAE,CAAC,CAAC,EAAIhB,EAAEgB,EAAE,CAAC,CAAC,GAElG,OAAOf,CACT,EAeA,MAAMwkK,GAAgB,CAACxuJ,EAAOP,IAAQ,CACpC,IAAI5R,EAAID,EACR,MAAM6gK,EAAe9nJ,EAAM,WAAW4kJ,EAAiB,EACjDmD,EAAyB/nJ,EAAM,WAAW8kJ,EAAsB,EAChE,CACJ,aAAA3mH,EACA,UAAAC,EACA,MAAA0c,CACJ,EAAM96C,EAAM,WAAW69B,EAAa,EAC5BmqH,EAAWhoJ,EAAM,OAAO,IAAI,EAC5BqU,EAAYnI,GAAWpT,EAAKkvJ,CAAQ,EACpC,CACJ,gBAAA9f,CACJ,EAAMloI,EAAM,WAAWknF,EAAoB,EACzC,GAAI,QAAQ,IAAI,WAAa,aAAc,CACzC,MAAMzgF,EAAUirB,GAAc,OAAO,EACrC,QAAQ,IAAI,WAAa,cAAejrB,EAAQ,EAAE,eAAgBpN,GAAQ,QAAS,8CAA8C,CACnI,CACA,MAAMkoC,EAAWp9C,GAAK,CACpB,IAAI+C,EAAID,GACPC,EAAKmS,EAAM,YAAc,MAAQnS,IAAO,QAAkBA,EAAG,KAAKmS,EAAOlV,CAAC,GAC1E8C,EAAK6gK,GAAiB,KAAkC,OAASA,EAAa,YAAc,MAAQ7gK,IAAO,QAAkBA,EAAG,KAAK6gK,EAAc3jK,CAAC,CACvJ,EACM,CACF,UAAWy5C,EACX,UAAAwhB,EACA,cAAAY,EACA,SAAA55C,EACA,MAAAsV,EACA,MAAA6tD,CACN,EAAQlwE,EACJu9C,EAAYzO,GAAO9uC,EAAO,CAAC,YAAa,YAAa,gBAAiB,WAAY,QAAS,OAAO,CAAC,EAC/F4uJ,EAAiB9pH,EAAa,QAASP,CAAkB,EACzDsqH,IAAiBJ,GAAiB,KAAkC,OAASA,EAAa,aAAeC,KAA4B,SACrI3iH,EAAY8iH,EAAe,GAAGD,CAAc,UAAYA,EAExD5iH,EAAU4gB,GAAagiG,CAAc,EACrC,CAACviH,EAAY1mB,EAAQ2mB,CAAS,EAAIX,GAASijH,EAAgB5iH,CAAO,EAClE8iH,EAAa,OAAO,OAAO,CAAA,EAAIvxG,CAAS,EAExC/iC,EAAW7T,EAAM,WAAWi/B,EAAe,EAC7C6oH,IACFK,EAAW,KAAOL,EAAa,KAC/BK,EAAW,SAAW5mH,EACtB4mH,EAAW,QAAU9uJ,EAAM,QAAUyuJ,EAAa,MAClDK,EAAW,UAAYjhK,EAAKihK,EAAW,YAAc,MAAQjhK,IAAO,OAASA,EAAK4gK,EAAa,UAEjGK,EAAW,UAAYlhK,EAAKkhK,EAAW,YAAc,MAAQlhK,IAAO,OAASA,EAAK4sB,EAClF,MAAMu0I,EAAqB5iJ,GAAW,GAAG4/B,CAAS,WAAY,CAC5D,CAAC,GAAGA,CAAS,kBAAkB,EAAG+iH,EAAW,QAC7C,CAAC,GAAG/iH,CAAS,mBAAmB,EAAG+iH,EAAW,SAC9C,CAAC,GAAG/iH,CAAS,cAAc,EAAGhH,IAAc,MAC5C,CAAC,GAAGgH,CAAS,uBAAuB,EAAG8iG,EACvC,CAAC,GAAG9iG,CAAS,gBAAgB,EAAG,CAAC,EAAE0iH,GAAiB,MAA2CA,EAAa,MAChH,EAAKhtG,GAAU,KAA2B,OAASA,EAAM,UAAWsE,EAAWY,EAAehhC,EAAQ2mB,EAAWN,CAAO,EAEhH,CAACgjH,EAAcC,CAAY,EAAI7C,GAAc0C,EAAW,OAAO,EAErE,OAAOziH,EAAwB1lC,EAAM,cAAc6tD,GAAM,CACvD,UAAW,QACX,SAAUs6F,EAAW,QACzB,EAAkBnoJ,EAAM,cAAc,QAAS,CAC3C,UAAWooJ,EACX,MAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIttG,GAAU,KAA2B,OAASA,EAAM,KAAK,EAAGp/B,CAAK,EACxG,aAAcriB,EAAM,aACpB,aAAcA,EAAM,aACpB,MAAOkwE,EACP,QAAS8+E,CACb,EAAkBroJ,EAAM,cAAcuoJ,GAAY,OAAO,OAAO,CAAA,EAAIJ,EAAY,CAC5E,UAAW3iJ,GAAW2iJ,EAAW,UAAW,CAC1C,CAAC58F,EAAU,EAAG,CAAC28F,CACrB,CAAK,EACD,KAAM,QACN,UAAW9iH,EACX,IAAK/wB,EACL,QAASi0I,CACb,CAAG,CAAC,EAAGliJ,IAAa,OAAyBpG,EAAM,cAAc,OAAQ,CACrE,UAAW,GAAGolC,CAAS,QAC3B,EAAKh/B,CAAQ,EAAI,IAAI,CAAC,CAAC,CACvB,EACMoiJ,GAAqBxoJ,EAAM,WAAW6nJ,EAAa,EACrD,QAAQ,IAAI,WAAa,eAC3BW,GAAM,YAAc,SC7FtB,MAAMC,GAA0BzoJ,EAAM,WAAW,CAAC3G,EAAOP,IAAQ,CAC/D,KAAM,CACJ,aAAAqlC,EACA,UAAAC,CACJ,EAAMp+B,EAAM,WAAW69B,EAAa,EAC5B6qH,EAAc39G,GAAK,EACnB,CACJ,UAAWnN,EACX,UAAAwhB,EACA,cAAAY,EACA,QAAA34D,EACA,YAAAshK,EAAc,UACd,SAAA90I,EACA,SAAAzN,EACA,KAAM+5D,EACN,MAAAzkD,EACA,GAAA7W,EACA,WAAA+jJ,EACA,KAAAt2J,EAAOo2J,EACP,aAAA/9J,EACA,MAAOk+J,EACP,MAAAz5F,EAAQ,GACR,SAAA7tB,EACA,aAAAijB,EACA,aAAAC,EACA,QAAAk6D,EACA,OAAAC,CACJ,EAAMvlH,EACE,CAACzU,EAAOq8C,CAAQ,EAAII,GAAe12C,EAAc,CACrD,MAAOk+J,CACX,CAAG,EACKC,EAAgB9oJ,EAAM,YAAYlY,GAAS,CAC/C,MAAMihK,EAAYnkK,EACZoK,EAAMlH,EAAM,OAAO,MACnB,UAAWuR,GACf4nC,EAASjyC,CAAG,EAEVA,IAAQ+5J,IACVxnH,GAAa,MAAuCA,EAASz5C,CAAK,EAEtE,EAAG,CAAClD,EAAOq8C,EAAUM,CAAQ,CAAC,EACxB6D,EAAYjH,EAAa,QAASP,CAAkB,EACpD8hH,EAAiB,GAAGt6G,CAAS,SAE7BC,EAAU4gB,GAAa7gB,CAAS,EAChC,CAACM,EAAY1mB,EAAQ2mB,CAAS,EAAIX,GAASI,EAAWC,CAAO,EACnE,IAAI2jH,EAAmB5iJ,EAEnB/e,GAAWA,EAAQ,OAAS,IAC9B2hK,EAAmB3hK,EAAQ,IAAIiG,GACzB,OAAOA,GAAW,UAAY,OAAOA,GAAW,SAE9B0S,EAAM,cAAcwoJ,GAAO,CAC7C,IAAKl7J,EAAO,SAAQ,EACpB,UAAW83C,EACX,SAAUvxB,EACV,MAAOvmB,EACP,QAAS1I,IAAU0I,CAC7B,EAAWA,CAAM,EAGS0S,EAAM,cAAcwoJ,GAAO,CAC7C,IAAK,6BAA6Bl7J,EAAO,KAAK,GAC9C,UAAW83C,EACX,SAAU93C,EAAO,UAAYumB,EAC7B,MAAOvmB,EAAO,MACd,QAAS1I,IAAU0I,EAAO,MAC1B,MAAOA,EAAO,MACd,MAAOA,EAAO,MACd,UAAWA,EAAO,UAClB,GAAIA,EAAO,GACX,SAAUA,EAAO,QACzB,EAASA,EAAO,KAAK,CAChB,GAEH,MAAM+hE,EAAatB,GAAQoS,CAAa,EAClClgB,EAAcz6C,GAAWk6I,EAAgB,GAAGA,CAAc,IAAIiJ,CAAW,GAAI,CACjF,CAAC,GAAGjJ,CAAc,IAAIrwF,CAAU,EAAE,EAAGA,EACrC,CAAC,GAAGqwF,CAAc,MAAM,EAAGthH,IAAc,MACzC,CAAC,GAAGshH,CAAc,QAAQ,EAAGtwF,CACjC,EAAKhQ,EAAWY,EAAehhC,EAAQ2mB,EAAWN,CAAO,EACjD4jH,EAAgBjpJ,EAAM,QAAQ,KAAO,CACzC,SAAU8oJ,EACV,MAAAlkK,EACA,SAAAivB,EACA,KAAAvhB,EACA,WAAAs2J,EACA,MAAAx5F,CACJ,GAAM,CAAC05F,EAAelkK,EAAOivB,EAAUvhB,EAAMs2J,EAAYx5F,CAAK,CAAC,EAC7D,OAAO1pB,EAAwB1lC,EAAM,cAAc,MAAO,OAAO,OAAO,CAAA,EAAIohD,GAAU/nD,EAAO,CAC3F,KAAM,GACN,KAAM,EACV,CAAG,EAAG,CACF,UAAW4mD,EACX,MAAOvkC,EACP,aAAc8oC,EACd,aAAcC,EACd,QAASk6D,EACT,OAAQC,EACR,GAAI/5G,EACJ,IAAK/L,CACT,CAAG,EAAgBkH,EAAM,cAAc6kJ,GAA2B,CAC9D,MAAOoE,CACX,EAAKD,CAAgB,CAAC,CAAC,CACvB,CAAC,EACDjmF,GAA4B/iE,EAAM,KAAKyoJ,EAAU,ECpHjD,IAAItgH,GAAgC,SAAU/kD,EAAGe,EAAG,CAClD,IAAId,EAAI,CAAA,EACR,QAASe,KAAKhB,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGgB,CAAC,GAAKD,EAAE,QAAQC,CAAC,EAAI,IAAGf,EAAEe,CAAC,EAAIhB,EAAEgB,CAAC,GAC/F,GAAIhB,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WAAY,QAAS,EAAI,EAAGgB,EAAI,OAAO,sBAAsBhB,CAAC,EAAG,EAAIgB,EAAE,OAAQ,IAClID,EAAE,QAAQC,EAAE,CAAC,CAAC,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKhB,EAAGgB,EAAE,CAAC,CAAC,IAAGf,EAAEe,EAAE,CAAC,CAAC,EAAIhB,EAAEgB,EAAE,CAAC,CAAC,GAElG,OAAOf,CACT,EAKA,MAAM6lK,GAAc,CAAC7vJ,EAAOP,IAAQ,CAClC,KAAM,CACJ,aAAAqlC,CACJ,EAAMn+B,EAAM,WAAW69B,EAAa,EAC5B,CACF,UAAWD,CACjB,EAAQvkC,EACJ8uJ,EAAahgH,GAAO9uC,EAAO,CAAC,WAAW,CAAC,EACpC+rC,EAAYjH,EAAa,QAASP,CAAkB,EAC1D,OAAoB59B,EAAM,cAAc+kJ,GAAgC,CACtE,MAAO,QACX,EAAkB/kJ,EAAM,cAAcwoJ,GAAO,OAAO,OAAO,CACvD,UAAWpjH,CACf,EAAK+iH,EAAY,CACb,KAAM,QACN,IAAKrvJ,CACT,CAAG,CAAC,CAAC,CACL,EACAknE,GAA4BhgE,EAAM,WAAWkpJ,EAAW,EC1BlDV,GAAQX,GACdW,GAAM,OAASxoF,GACfwoF,GAAM,MAAQzlF,GACdylF,GAAM,YAAc,GCRb,SAASW,GAAe7rI,EAAO,CACpC,OAAOimB,GAAWjmB,EAAO,CACvB,kBAAmBA,EAAM,UAC7B,CAAG,CACH,CACO,MAAM8rI,GAAqB9rI,GAAS,CACzC,KAAM,CACJ,cAAA4d,EACA,SAAAE,EACA,WAAAc,EACA,UAAAlB,EACA,gBAAA6uD,EACA,gBAAAD,EACA,WAAA3tD,EACA,aAAAG,EACA,UAAAuzG,EACA,2BAAA0Z,EACA,yBAAAnlB,EACA,eAAAolB,EACA,kBAAA5pF,EACA,aAAArU,EACA,oBAAA45E,EACA,eAAAP,EACA,kBAAA6kB,EACA,oBAAAC,EACA,iBAAAnpB,EACA,cAAAopB,EACA,gBAAAC,EACA,gBAAAC,CACJ,EAAMrsI,EACEssI,EAAiBH,GAAiBruH,EAClCyuH,EAAmBF,GAAmBC,EACtCE,EAAmBJ,GAAmBztH,EACtC8tH,EAAe,KAAK,OAAO7uH,EAAgB0uH,EAAiB1tH,GAAc,EAAI,EAAE,EAAI,GAAKlB,EACzFgvH,EAAiB,KAAK,OAAOngE,EAAkBggE,EAAmB3tH,GAAc,EAAI,EAAE,EAAI,GAAKlB,EAC/FivH,EAAiB,KAAK,MAAMrgE,EAAkBkgE,EAAmB1tH,GAAgB,EAAI,EAAE,EAAI,GAAKpB,EACtG,MAAO,CACL,aAAc,KAAK,IAAI+uH,EAAc,CAAC,EACtC,eAAgB,KAAK,IAAIC,EAAgB,CAAC,EAC1C,eAAgB,KAAK,IAAIC,EAAgB,CAAC,EAC1C,cAAeta,EAAY30G,EAC3B,gBAAiBquH,EAA6BruH,EAC9C,gBAAiBkpG,EAA2BlpG,EAC5C,QAASsuH,EACT,kBAAmBj+F,EACnB,iBAAkBqU,EAClB,aAAc,SAASulE,CAAmB,MAAMP,CAAc,GAC9D,kBAAmB,SAASO,CAAmB,MAAMskB,CAAiB,GACtE,oBAAqB,SAAStkB,CAAmB,MAAMukB,CAAmB,GAC1E,QAASnpB,EACT,SAAUA,EACV,cAAeupB,EACf,gBAAiBE,EACjB,gBAAiBD,CACrB,CACA,ECtDaK,GAAgB5sI,IAAU,CACrC,YAAaA,EAAM,iBACnB,gBAAiBA,EAAM,OACzB,GACam/C,GAAmBn/C,IAAU,CACxC,MAAOA,EAAM,kBACb,gBAAiBA,EAAM,yBACvB,YAAaA,EAAM,YACnB,UAAW,OACX,OAAQ,cACR,QAAS,EACT,sCAAuC,CACrC,OAAQ,aACZ,EACE,0BAA2B,OAAO,OAAO,CAAA,EAAI4sI,GAAc3mH,GAAWjmB,EAAO,CAC3E,iBAAkBA,EAAM,YACxB,QAASA,EAAM,wBACnB,CAAG,CAAC,CAAC,CACL,GAEa0nH,GAAuB,CAAC1nH,EAAOj2B,KAAa,CACvD,WAAYi2B,EAAM,iBAClB,YAAaA,EAAM,UACnB,YAAaA,EAAM,SACnB,YAAaj2B,EAAQ,YACrB,UAAW,CACT,YAAaA,EAAQ,iBACrB,gBAAiBi2B,EAAM,OAC3B,EACE,0BAA2B,CACzB,YAAaj2B,EAAQ,kBACrB,UAAWA,EAAQ,aACnB,QAAS,EACT,gBAAiBi2B,EAAM,QAC3B,CACA,GACM4nH,GAAyB,CAAC5nH,EAAOj2B,KAAa,CAClD,CAAC,IAAIi2B,EAAM,YAAY,WAAWj2B,EAAQ,MAAM,QAAQi2B,EAAM,YAAY,YAAY,EAAG,OAAO,OAAO,OAAO,OAAO,CAAA,EAAI0nH,GAAqB1nH,EAAOj2B,CAAO,CAAC,EAAG,CAC9J,CAAC,GAAGi2B,EAAM,YAAY,YAAYA,EAAM,YAAY,SAAS,EAAG,CAC9D,MAAOj2B,EAAQ,UACrB,CACA,CAAG,EACD,CAAC,IAAIi2B,EAAM,YAAY,WAAWj2B,EAAQ,MAAM,GAAGi2B,EAAM,YAAY,WAAW,EAAG,CACjF,YAAaj2B,EAAQ,WACzB,CACA,GACa89I,GAAmB,CAAC7nH,EAAO6sI,KAAiB,CACvD,aAAc,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAInlB,GAAqB1nH,EAAO,CAClH,YAAaA,EAAM,YACnB,iBAAkBA,EAAM,iBACxB,kBAAmBA,EAAM,kBACzB,aAAcA,EAAM,YACxB,CAAG,CAAC,EAAG,CACH,CAAC,IAAIA,EAAM,YAAY,wBAAwB,EAAG,OAAO,OAAO,CAAA,EAAIm/C,GAAiBn/C,CAAK,CAAC,CAC/F,CAAG,EAAG4nH,GAAuB5nH,EAAO,CAChC,OAAQ,QACR,YAAaA,EAAM,WACnB,iBAAkBA,EAAM,sBACxB,kBAAmBA,EAAM,WACzB,aAAcA,EAAM,kBACpB,WAAYA,EAAM,UACtB,CAAG,CAAC,EAAG4nH,GAAuB5nH,EAAO,CACjC,OAAQ,UACR,YAAaA,EAAM,aACnB,iBAAkBA,EAAM,wBACxB,kBAAmBA,EAAM,aACzB,aAAcA,EAAM,oBACpB,WAAYA,EAAM,YACtB,CAAG,CAAC,EAAG6sI,CAAW,CAClB,GACMC,GAA8B,CAAC9sI,EAAOj2B,KAAa,CACvD,CAAC,IAAIi2B,EAAM,YAAY,yBAAyBj2B,EAAQ,MAAM,EAAE,EAAG,CACjE,CAAC,GAAGi2B,EAAM,YAAY,cAAc,EAAG,CACrC,YAAaj2B,EAAQ,iBACrB,MAAOA,EAAQ,UACrB,CACA,CACA,GACagjK,GAAwB/sI,IAAU,CAC7C,aAAc,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CACtD,CAAC,GAAGA,EAAM,YAAY,QAAQ,EAAG,CAC/B,UAAW,CACT,WAAYA,EAAM,QAClB,OAAQ,GAAGc,GAAKd,EAAM,SAAS,CAAC,IAAIA,EAAM,QAAQ,IAAIA,EAAM,WAAW,EAC/E,EACM,sBAAuB,CACrB,gBAAiB,CACzB,EACM,qBAAsB,CACpB,kBAAmB,CAC3B,CACA,CACA,EAAK8sI,GAA4B9sI,EAAO,CACpC,OAAQ,QACR,iBAAkBA,EAAM,WACxB,WAAYA,EAAM,cACtB,CAAG,CAAC,EAAG8sI,GAA4B9sI,EAAO,CACtC,OAAQ,UACR,iBAAkBA,EAAM,aACxB,WAAYA,EAAM,gBACtB,CAAG,CAAC,EAAG,CACH,CAAC,IAAIA,EAAM,YAAY,yBAAyB,EAAG,CACjD,CAAC,GAAGA,EAAM,YAAY,cAAc,EAAG,OAAO,OAAO,CAAA,EAAIm/C,GAAiBn/C,CAAK,CAAC,CACtF,CACA,CAAG,CACH,GAEaioH,GAAqB,CAACjoH,EAAO6sI,IAAgB,CACxD,KAAM,CACJ,aAAAnjH,CACJ,EAAM1pB,EACJ,MAAO,CACL,eAAgB,OAAO,OAAO,CAC5B,WAAY,cACZ,OAAQ,OACR,0BAA2B,CACzB,QAAS,MACjB,EAEM,CAAC,IAAI0pB,CAAY,wBAAwB,EAAG,CAC1C,MAAO1pB,EAAM,kBACb,OAAQ,aAChB,EAEM,CAAC,IAAI0pB,CAAY,eAAe,EAAG,CACjC,yBAA0B,CACxB,MAAO1pB,EAAM,UACvB,CACA,EACM,CAAC,IAAI0pB,CAAY,iBAAiB,EAAG,CACnC,yBAA0B,CACxB,MAAO1pB,EAAM,YACvB,CACA,CACA,EAAO6sI,CAAW,CAClB,CACA,EAEM/kB,GAAqB,CAAC9nH,EAAOj2B,IAAY,CAC7C,IAAIH,EACJ,MAAO,CACL,WAAYG,EAAQ,GACpB,YAAai2B,EAAM,UACnB,YAAaA,EAAM,SACnB,YAAa,cACb,yCAA0C,CACxC,OAAQp2B,EAAKG,GAAY,KAA6B,OAASA,EAAQ,cAAgB,MAAQH,IAAO,OAASA,EAAK,OAC1H,EACI,UAAW,CACT,WAAYG,EAAQ,OAC1B,EACI,0BAA2B,CACzB,QAAS,EACT,YAAaA,EAAQ,kBACrB,gBAAiBi2B,EAAM,QAC7B,CACA,CACA,EACM+nH,GAAuB,CAAC/nH,EAAOj2B,KAAa,CAChD,CAAC,IAAIi2B,EAAM,YAAY,WAAWj2B,EAAQ,MAAM,QAAQi2B,EAAM,YAAY,YAAY,EAAG,OAAO,OAAO,OAAO,OAAO,CAAA,EAAI8nH,GAAmB9nH,EAAOj2B,CAAO,CAAC,EAAG,CAC5J,CAAC,GAAGi2B,EAAM,YAAY,YAAYA,EAAM,YAAY,SAAS,EAAG,CAC9D,MAAOj2B,EAAQ,UACrB,CACA,CAAG,CACH,GACai+I,GAAiB,CAAChoH,EAAO6sI,KAAiB,CACrD,WAAY,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAI/kB,GAAmB9nH,EAAO,CAC9G,GAAIA,EAAM,kBACV,QAASA,EAAM,mBACf,kBAAmBA,EAAM,iBAC7B,CAAG,CAAC,EAAG,CACH,CAAC,IAAIA,EAAM,YAAY,wBAAwB,EAAG,OAAO,OAAO,CAAA,EAAIm/C,GAAiBn/C,CAAK,CAAC,CAC/F,CAAG,EAAG+nH,GAAqB/nH,EAAO,CAC9B,OAAQ,QACR,GAAIA,EAAM,aACV,QAASA,EAAM,kBACf,kBAAmBA,EAAM,WACzB,WAAYA,EAAM,eAClB,WAAYA,EAAM,UACtB,CAAG,CAAC,EAAG+nH,GAAqB/nH,EAAO,CAC/B,OAAQ,UACR,GAAIA,EAAM,eACV,QAASA,EAAM,oBACf,kBAAmBA,EAAM,aACzB,WAAYA,EAAM,iBAClB,WAAYA,EAAM,YACtB,CAAG,CAAC,EAAG6sI,CAAW,CAClB,GACMG,GAA4B,CAAChtI,EAAOj2B,KAAa,CACrD,CAAC,IAAIi2B,EAAM,YAAY,yBAAyBj2B,EAAQ,MAAM,EAAE,EAAG,CACjE,CAAC,GAAGi2B,EAAM,YAAY,cAAc,EAAG,CACrC,WAAYj2B,EAAQ,QACpB,MAAOA,EAAQ,UACrB,CACA,CACA,GACakjK,GAAsBjtI,IAAU,CAC3C,WAAY,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CACpD,CAAC,GAAGA,EAAM,YAAY,cAAc,EAAG,CACrC,WAAYA,EAAM,kBAClB,eAAgB,CACd,SAAU,QAClB,CACA,CACA,EAAKgtI,GAA0BhtI,EAAO,CAClC,OAAQ,QACR,QAASA,EAAM,aACf,WAAYA,EAAM,cACtB,CAAG,CAAC,EAAGgtI,GAA0BhtI,EAAO,CACpC,OAAQ,UACR,QAASA,EAAM,eACf,WAAYA,EAAM,gBACtB,CAAG,CAAC,EAAG,CACH,CAAC,IAAIA,EAAM,YAAY,yBAAyB,EAAG,CACjD,CAAC,GAAGA,EAAM,YAAY,QAAQ,EAAG,CAC/B,UAAW,CACT,WAAYA,EAAM,kBAClB,MAAOA,EAAM,iBACvB,EACQ,sBAAuB,CACrB,kBAAmB,GAAGc,GAAKd,EAAM,SAAS,CAAC,IAAIA,EAAM,QAAQ,IAAIA,EAAM,WAAW,GAClF,UAAW,GAAGc,GAAKd,EAAM,SAAS,CAAC,IAAIA,EAAM,QAAQ,IAAIA,EAAM,WAAW,GAC1E,aAAc,GAAGc,GAAKd,EAAM,SAAS,CAAC,IAAIA,EAAM,QAAQ,IAAIA,EAAM,WAAW,EACvF,EACQ,qBAAsB,CACpB,gBAAiB,GAAGc,GAAKd,EAAM,SAAS,CAAC,IAAIA,EAAM,QAAQ,IAAIA,EAAM,WAAW,GAChF,UAAW,GAAGc,GAAKd,EAAM,SAAS,CAAC,IAAIA,EAAM,QAAQ,IAAIA,EAAM,WAAW,GAC1E,aAAc,GAAGc,GAAKd,EAAM,SAAS,CAAC,IAAIA,EAAM,QAAQ,IAAIA,EAAM,WAAW,EACvF,CACA,CACA,CACA,CAAG,CACH,GAGakoH,GAAyB,CAACloH,EAAOj2B,KAAa,CACzD,WAAYi2B,EAAM,iBAClB,YAAa,GAAGc,GAAKd,EAAM,SAAS,CAAC,KACrC,YAAa,GAAGA,EAAM,QAAQ,QAC9B,YAAa,2BAA2Bj2B,EAAQ,WAAW,eAC3D,aAAc,EACd,UAAW,CACT,YAAa,2BAA2BA,EAAQ,WAAW,eAC3D,gBAAiBi2B,EAAM,OAC3B,EACE,0BAA2B,CACzB,YAAa,2BAA2Bj2B,EAAQ,WAAW,eAC3D,QAAS,EACT,gBAAiBi2B,EAAM,QAC3B,CACA,GACMmoH,GAA2B,CAACnoH,EAAOj2B,KAAa,CACpD,CAAC,IAAIi2B,EAAM,YAAY,WAAWj2B,EAAQ,MAAM,QAAQi2B,EAAM,YAAY,YAAY,EAAG,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIkoH,GAAuBloH,EAAOj2B,CAAO,CAAC,EAAG,CAChK,CAAC,GAAGi2B,EAAM,YAAY,YAAYA,EAAM,YAAY,SAAS,EAAG,CAC9D,MAAOj2B,EAAQ,UACrB,CACA,CAAG,EACD,CAAC,IAAIi2B,EAAM,YAAY,WAAWj2B,EAAQ,MAAM,GAAGi2B,EAAM,YAAY,WAAW,EAAG,CACjF,YAAa,2BAA2Bj2B,EAAQ,WAAW,cAC/D,CACA,GACaq+I,GAAqB,CAACpoH,EAAO6sI,KAAiB,CACzD,eAAgB,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAI3kB,GAAuBloH,EAAO,CACtH,YAAaA,EAAM,YACnB,iBAAkBA,EAAM,iBACxB,kBAAmBA,EAAM,kBACzB,aAAcA,EAAM,YACxB,CAAG,CAAC,EAAG,CAEH,CAAC,IAAIA,EAAM,YAAY,wBAAwB,EAAG,CAChD,MAAOA,EAAM,kBACb,UAAW,OACX,OAAQ,cACR,UAAW,CACT,YAAa,2BAA2BA,EAAM,WAAW,cACjE,CACA,EACI,sCAAuC,CACrC,OAAQ,aACd,CACA,CAAG,EAAGmoH,GAAyBnoH,EAAO,CAClC,OAAQ,QACR,YAAaA,EAAM,WACnB,iBAAkBA,EAAM,sBACxB,kBAAmBA,EAAM,WACzB,aAAcA,EAAM,kBACpB,WAAYA,EAAM,UACtB,CAAG,CAAC,EAAGmoH,GAAyBnoH,EAAO,CACnC,OAAQ,UACR,YAAaA,EAAM,aACnB,iBAAkBA,EAAM,wBACxB,kBAAmBA,EAAM,aACzB,aAAcA,EAAM,oBACpB,WAAYA,EAAM,YACtB,CAAG,CAAC,EAAG6sI,CAAW,CAClB,GClSaK,GAAsB/0H,IAAU,CAE3C,sBAAuB,CACrB,QAAS,CACb,EACE,iBAAkB,CAChB,MAAAA,EACA,WAAY,MAChB,EACE,sBAAuB,CACrB,aAAc,UAClB,CACA,GAOMg1H,GAAqBntI,GAAS,CAClC,KAAM,CACJ,eAAA2sI,EACA,aAAA7tH,EACA,eAAAwqH,EACA,gBAAA8D,CACJ,EAAMptI,EACJ,MAAO,CACL,QAAS,GAAGc,GAAK6rI,CAAc,CAAC,IAAI7rI,GAAKssI,CAAe,CAAC,GACzD,SAAUptI,EAAM,gBAChB,WAAY8e,EACZ,aAAcwqH,CAClB,CACA,EACa+D,GAAqBrtI,IAAU,CAC1C,QAAS,GAAGc,GAAKd,EAAM,cAAc,CAAC,IAAIc,GAAKd,EAAM,eAAe,CAAC,GACrE,SAAUA,EAAM,gBAChB,aAAcA,EAAM,cACtB,GACastI,GAAqBttI,GAAS,OAAO,OAAO,OAAO,OAAO,CACrE,SAAU,WACV,QAAS,eACT,MAAO,OACP,SAAU,EACV,QAAS,GAAGc,GAAKd,EAAM,YAAY,CAAC,IAAIc,GAAKd,EAAM,aAAa,CAAC,GACjE,MAAOA,EAAM,UACb,SAAUA,EAAM,cAChB,WAAYA,EAAM,WAClB,aAAcA,EAAM,aACpB,WAAY,OAAOA,EAAM,iBAAiB,EAC5C,EAAGktI,GAAoBltI,EAAM,oBAAoB,CAAC,EAAG,CAEnD,OAAQ,OAAO,OAAO,CAAA,EAAImtI,GAAmBntI,CAAK,CAAC,EACnD,OAAQ,OAAO,OAAO,CAAA,EAAIqtI,GAAmBrtI,CAAK,CAAC,EAEnD,wBAAyB,CACvB,UAAW,KACf,CACA,CAAC,EACYutI,GAAqBvtI,GAAS,CACzC,KAAM,CACJ,aAAA0pB,EACA,OAAAmnB,CACJ,EAAM7wC,EACJ,MAAO,CACL,SAAU,WACV,QAAS,QACT,MAAO,OACP,eAAgB,WAChB,cAAe,EAEf,mBAAoB,CAClB,iBAAkBA,EAAM,UACxB,eAAgB,CACd,iBAAkB,CAC1B,CACA,EAEI,CAAC,QAAQ0pB,CAAY,YAAYA,CAAY,cAAc,EAAG,OAAO,OAAO,CAAA,EAAIyjH,GAAmBntI,CAAK,CAAC,EACzG,CAAC,QAAQ0pB,CAAY,YAAYA,CAAY,cAAc,EAAG,OAAO,OAAO,CAAA,EAAI2jH,GAAmBrtI,CAAK,CAAC,EAEzG,CAAC,QAAQ6wC,CAAM,kBAAkBA,CAAM,kBAAkB,EAAG,CAC1D,OAAQ7wC,EAAM,eACpB,EACI,CAAC,QAAQ6wC,CAAM,kBAAkBA,CAAM,kBAAkB,EAAG,CAC1D,OAAQ7wC,EAAM,eACpB,EACI,CAAC,KAAK0pB,CAAY,EAAE,EAAG,CACrB,QAAS,aACT,uCAAwC,CACtC,aAAc,CACtB,CACA,EACI,CAAC,GAAGA,CAAY,QAAQ,EAAG,CACzB,kBAAmB,CACjB,QAAS,aACT,MAAO,EACP,WAAY,SACZ,cAAe,SACf,uCAAwC,CACtC,aAAc,CACxB,CACA,EACM,aAAc,CACZ,QAAS,kBACjB,EACM,UAAW,CACT,SAAU,WACV,QAAS,KAAK5oB,GAAKd,EAAM,aAAa,CAAC,GACvC,MAAOA,EAAM,UACb,WAAY,SACZ,SAAUA,EAAM,cAChB,UAAW,SACX,aAAcA,EAAM,aACpB,WAAY,OAAOA,EAAM,kBAAkB,GAC3C,WAAY,EAEZ,CAAC,GAAG6wC,CAAM,SAAS,EAAG,CACpB,OAAQ,GAAG/vC,GAAKd,EAAM,KAAKA,EAAM,YAAY,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,MAAK,CAAE,CAAC,IAAIc,GAAKd,EAAM,KAAKA,EAAM,aAAa,EAAE,IAAI,EAAE,EAAE,MAAK,CAAE,CAAC,GAC/H,CAAC,IAAI6wC,CAAM,sBAAsBA,CAAM,gCAAgCA,CAAM,2BAA2B,EAAG,CACzG,CAAC,GAAGA,CAAM,kBAAkB,EAAG,CAC7B,gBAAiB,UACjB,OAAQ,GAAG/vC,GAAKd,EAAM,SAAS,CAAC,IAAIA,EAAM,QAAQ,eAClD,UAAW,MACzB,CACA,CACA,EAEQ,CAAC,GAAG6wC,CAAM,kBAAkB,EAAG,CAC7B,OAAQ,QAAQ/vC,GAAKd,EAAM,KAAKA,EAAM,aAAa,EAAE,IAAI,EAAE,EAAE,MAAK,CAAE,CAAC,GACrE,gBAAiB,cACjB,CAAC,GAAG6wC,CAAM,iBAAiB,EAAG,CAC5B,UAAW,QACX,OAAQ,EACR,UAAW,MACvB,CACA,CACA,CACA,EACI,CAACnnB,CAAY,EAAG,CACd,MAAO,OACP,aAAc,EACd,UAAW,UACX,UAAW,CACT,OAAQ,EAER,qBAAsB,CAC9B,EACM,UAAW,CACT,OAAQ,EACR,qBAAsB,EACtB,CAAC,GAAGA,CAAY,uBAAuB,EAAG,CACxC,OAAQ,CAClB,CACA,CACA,EAEI,CAAC,KAAKA,CAAY,iBAAiBA,CAAY,0BAA0B,EAAG,CAC1E,qBAAsB,EACtB,mBAAoB,EAEpB,CAAC,GAAGmnB,CAAM,WAAWA,CAAM,kBAAkB,EAAG,CAC9C,qBAAsB,EACtB,mBAAoB,CAC5B,CACA,EACI,CAAC,KAAKnnB,CAAY,gBAAgB,EAAG,CACnC,CAAC,uBAAuBA,CAAY,EAAE,EAAG,CACvC,uBAAwB,EACxB,qBAAsB,CAC9B,EACM,CAAC,sBAAsBA,CAAY,EAAE,EAAG,CACtC,qBAAsB,EACtB,mBAAoB,CAC5B,CACA,EACI,CAAC,KAAKA,CAAY,gBAAgBA,CAAY,yBAAyB,EAAG,CACxE,uBAAwB,EACxB,qBAAsB,EAEtB,CAAC,GAAGmnB,CAAM,WAAWA,CAAM,kBAAkB,EAAG,CAC9C,uBAAwB,EACxB,qBAAsB,CAC9B,CACA,EACI,CAAC,GAAGnnB,CAAY,gBAAgB,EAAG,CACjC,qBAAsB,CACpB,qBAAsB,EACtB,mBAAoB,EACpB,CAAC,GAAGA,CAAY,WAAW,EAAG,CAC5B,uBAAwB1pB,EAAM,aAC9B,qBAAsBA,EAAM,YACtC,CACA,EACM,CAAC,wBAAwB0pB,CAAY,6BAA6B,EAAG,CACnE,uBAAwB,EACxB,qBAAsB,CAC9B,CACA,EACI,CAAC,IAAIA,CAAY,gBAAgB,EAAG,OAAO,OAAO,OAAO,OAAO,CAC9D,QAAS,OACf,EAAOyC,GAAQ,CAAE,EAAG,CACd,CAAC,GAAGzC,CAAY,iBAAiBA,CAAY,kBAAkBA,CAAY,EAAE,EAAG,CAC9E,uCAAwC,CACtC,qBAAsB1pB,EAAM,UAC5B,mBAAoB,CAClB,OAAQ,CACpB,CACA,CACA,EACM,QAAS,CACP,QAAS,cACT,MAAO,OACP,cAAe,MAEf,aAAc,CACtB,EACM,CAAC;AAAA,cACO0pB,CAAY;AAAA,cACZA,CAAY;AAAA,cACZmnB,CAAM;AAAA,OACb,EAAG,CACF,QAAS,aACjB,EACM,yBAA0B,CACxB,gBAAiB7wC,EAAM,KAAKA,EAAM,SAAS,EAAE,IAAI,EAAE,EAAE,MAAK,EAC1D,qBAAsBA,EAAM,SACpC,EAEM,CAAC0pB,CAAY,EAAG,CACd,MAAO,MACf,EAEM,CAAC,OAAOmnB,CAAM,aAAaA,CAAM;AAAA,YAC3BA,CAAM,yBAAyBnnB,CAAY;AAAA,YAC3CmnB,CAAM,oBAAoBnnB,CAAY;AAAA,YACtCA,CAAY,kBAAkBA,CAAY,EAAE,EAAG,CACnD,qBAAsB1pB,EAAM,UAC5B,aAAc,EACd,mBAAoB,CAClB,OAAQ,CAClB,CACA,EACM,CAAC,OAAO6wC,CAAM,iBAAiB,EAAG,CAChC,OAAQ,CAChB,EAEM,CAAC,OAAOA,CAAM,aAAaA,CAAM,eAAe,EAAG,CACjD,OAAQ,CAChB,EACM,CAAC;AAAA,YACKA,CAAM,yBAAyBA,CAAM;AAAA,YACrCA,CAAM,qCAAqCnnB,CAAY;AAAA,YACvDmnB,CAAM,gCAAgCnnB,CAAY,EAAE,EAAG,CAC3D,uBAAwB1pB,EAAM,aAC9B,qBAAsBA,EAAM,YACpC,EACM,CAAC;AAAA,YACK6wC,CAAM,wBAAwBA,CAAM;AAAA,YACpCA,CAAM,+BAA+BnnB,CAAY;AAAA,YACjDmnB,CAAM,uCAAuCnnB,CAAY,EAAE,EAAG,CAClE,qBAAsB1pB,EAAM,UAC5B,qBAAsBA,EAAM,aAC5B,mBAAoBA,EAAM,YAClC,EAEM,CAAC,OAAO6wC,CAAM,yBAAyBnnB,CAAY,EAAE,EAAG,CACtD,cAAe,KACvB,EACM,CAAC,GAAGA,CAAY,oBAAoBA,CAAY,gBAAgB,EAAG,CACjE,kBAAmB1pB,EAAM,KAAKA,EAAM,SAAS,EAAE,IAAI,EAAE,EAAE,MAAK,EAC5D,CAAC,GAAG0pB,CAAY,gBAAgB,EAAG,CACjC,aAAc,CACxB,CACA,EACM,CAAC,GAAGA,CAAY,iCAAiC,EAAG,CAClD,CAAC,IAAIA,CAAY,aAAaA,CAAY,QAAQ,EAAG,CACnD,CAAC,OAAOA,CAAY,kBAAkBA,CAAY,gBAAgB,EAAG,CACnE,aAAc,CAC1B,EACU,CAAC,OAAOA,CAAY,EAAE,EAAG,CACvB,uBAAwB1pB,EAAM,aAC9B,qBAAsB,EACtB,mBAAoB,EACpB,qBAAsBA,EAAM,YACxC,CACA,CACA,CACA,CAAK,CACL,CACA,EACawtI,GAAgBxtI,GAAS,CACpC,KAAM,CACJ,aAAA0pB,EACA,gBAAA6iD,EACA,UAAA7uD,EACA,KAAAtF,CACJ,EAAMpY,EAEEytI,EAAoBr1H,EAAKm0D,CAAe,EAAE,IAAIn0D,EAAKsF,CAAS,EAAE,IAAI,CAAC,CAAC,EAAE,IAD1C,EACuE,EAAE,IAAI,CAAC,EAAE,MAAK,EACvH,MAAO,CACL,CAACgM,CAAY,EAAG,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,GAAIsC,GAAehsB,CAAK,CAAC,EAAGstI,GAAmBttI,CAAK,CAAC,EAAG6nH,GAAiB7nH,CAAK,CAAC,EAAGgoH,GAAehoH,CAAK,CAAC,EAAGioH,GAAmBjoH,CAAK,CAAC,EAAGooH,GAAmBpoH,CAAK,CAAC,EAAG,CAClR,kBAAmB,CACjB,OAAQA,EAAM,cACd,CAAC,IAAI0pB,CAAY,KAAK,EAAG,CACvB,OAAQ1pB,EAAM,eACxB,EACQ,CAAC,IAAI0pB,CAAY,KAAK,EAAG,CACvB,OAAQ6iD,EACR,WAAYkhE,EACZ,cAAeA,CACzB,CACA,EACM,8FAA+F,CAC7F,WAAY,MACpB,CACA,CAAK,CACL,CACA,EACMC,GAAqB1tI,GAAS,CAClC,KAAM,CACJ,aAAA0pB,CACJ,EAAM1pB,EACJ,MAAO,CAEL,CAAC,GAAG0pB,CAAY,aAAa,EAAG,CAC9B,OAAQ,EACR,QAAS,EACT,WAAY,EACZ,MAAO1pB,EAAM,oBACb,SAAUA,EAAM,aAChB,cAAe,GAGf,OAAQ,UACR,WAAY,SAASA,EAAM,kBAAkB,GAC7C,OAAQ,OACR,QAAS,OACT,gBAAiB,cACjB,UAAW,CACT,MAAOA,EAAM,SACrB,EACM,WAAY,CACV,MAAOA,EAAM,SACrB,EACM,WAAY,CACV,WAAY,QACpB,EACM,eAAgB,CACd,OAAQ,KAAKc,GAAKd,EAAM,iBAAiB,CAAC,EAClD,CACA,CACA,CACA,EACa2tI,GAAgB3tI,GAAS,CACpC,KAAM,CACJ,aAAA0pB,EACA,kBAAAkkH,EACA,qBAAAC,EACA,mBAAAnvF,EACA,UAAAvY,EACA,eAAAC,EACA,QAAAJ,CACJ,EAAMhmC,EACE8tI,EAAW,GAAGpkH,CAAY,iBAC1BqkH,EAAmB,GAAGrkH,CAAY,0BACxC,MAAO,CACL,CAACokH,CAAQ,EAAG,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIR,GAAmBttI,CAAK,CAAC,EAAG,CAClG,QAAS,cACT,CAAC,SAAS0pB,CAAY,kBAAkB,EAAG,CACzC,OAAQ,EACR,CAAC,GAAGA,CAAY,uBAAuB,EAAG,CACxC,OAAQ,CAClB,CACA,EACM,qBAAsB,CACpB,OAAQ,CAChB,EACM,CAAC,UAAUA,CAAY,EAAE,EAAG,CAC1B,QAAS,CACjB,EACM,CAAC,UAAUA,CAAY,eAAeA,CAAY,EAAE,EAAG,CACrD,SAAU,UACV,OAAQ,OACR,aAAc,EACd,QAAS,OACT,WAAY,cACZ,MAAO,UACP,gBAAiB,CACf,QAAS,MACnB,EACQ,UAAW,CACT,UAAW,iBACrB,CACA,EACM,YAAa,CACX,QAAS,eACT,MAAO,EACP,WAAY,SACZ,QAAS,QACjB,EACM,CAACA,CAAY,EAAG,CACd,qBAAsB,CACpB,QAAS,OACT,KAAM,OACN,WAAY,SACZ,uBAAwB,CACtB,gBAAiB1pB,EAAM,SACnC,CACA,EACQ,sBAAuB,CACrB,MAAO6tI,EACP,UAAW,KACrB,EACQ,0BAA2B,CACzB,gBAAiB7tI,EAAM,UACjC,EACQ,WAAY,CACV,gBAAiB4tI,CAC3B,EACQ,WAAY,CACV,kBAAmBA,CAC7B,CACA,CACA,CAAK,EAAGF,GAAmB1tI,CAAK,CAAC,EAAG,CAE9B,CAAC,GAAGgmC,CAAO,GAAGtc,CAAY,gBAAgB,EAAG,CAC3C,MAAOyc,EACP,OAAQ,UACR,WAAY,OAAOuY,CAAkB,GACrC,UAAW,CACT,MAAOtY,CACjB,CACA,CACA,CAAK,EAED,CAAC,GAAG1c,CAAY,aAAa,EAAG,CAC9B,aAAc,CACpB,EACI,CAACqkH,CAAgB,EAAG,CAElB,CAAC,GAAG/nG,CAAO,GAAGtc,CAAY,gBAAgB,EAAG,CAC3C,MAAOyc,EACP,OAAQ,cACR,UAAW,CACT,MAAOA,CACjB,CACA,CACA,CACA,CACA,EACM4N,GAAgB/zC,GAAS,CAC7B,KAAM,CACJ,aAAA0pB,EACA,eAAA4/G,EACA,eAAA78D,CACJ,EAAMzsE,EACJ,MAAO,CACL,CAAC,GAAG0pB,CAAY,QAAQ,EAAG,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIsC,GAAehsB,CAAK,CAAC,EAAGutI,GAAmBvtI,CAAK,CAAC,EAAG,CAC3H,QAAS,CACP,UAAW,KACnB,EACM,YAAa,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CACrD,QAAS,eACT,MAAO,OACP,UAAW,QACX,cAAe,MACf,QAAS,CACP,UAAW,KACrB,EAEQ,OAAQ,CACN,CAAC,GAAG0pB,CAAY,cAAc,EAAG,CAC/B,aAAc4/G,EACd,SAAUtpI,EAAM,eAC5B,CACA,EACQ,OAAQ,CACN,CAAC,GAAG0pB,CAAY,cAAc,EAAG,CAC/B,aAAc+iD,CAC1B,CACA,CACA,EAASsgE,GAAsB/sI,CAAK,CAAC,EAAGitI,GAAoBjtI,CAAK,CAAC,EAAG,CAQ7D,CAAC,SAAS0pB,CAAY,4BAA4BA,CAAY,sBAAsBA,CAAY,eAAe,EAAG,CAChH,CAAC,GAAGA,CAAY,KAAKA,CAAY,cAAc,EAAG,CAChD,aAAc,CAC1B,CACA,EACQ,CAAC,SAASA,CAAY,sBAAsBA,CAAY,qBAAqB,EAAG,CAC9E,CAAC,GAAGA,CAAY,KAAKA,CAAY,cAAc,EAAG,CAChD,qBAAsB,EACtB,mBAAoB,CAChC,CACA,EACQ,CAAC,SAASA,CAAY,uBAAuBA,CAAY,oBAAoB,EAAG,CAC9E,CAAC,GAAGA,CAAY,KAAKA,CAAY,cAAc,EAAG,CAChD,uBAAwB,EACxB,qBAAsB,CAClC,CACA,EAGQ,CAAC,SAASA,CAAY,sBAAsBA,CAAY,eAAe,EAAG,CACxE,CAAC,GAAGA,CAAY,gBAAgB,EAAG,CACjC,qBAAsB,EACtB,mBAAoB,CAChC,CACA,EAGQ,CAAC,SAASA,CAAY,uBAAuBA,CAAY,eAAe,EAAG,CACzE,CAAC,GAAGA,CAAY,gBAAgB,EAAG,CACjC,uBAAwB,EACxB,qBAAsB,CAClC,CACA,CACA,CAAO,CACP,CAAK,CACL,CACA,EACMskH,GAAsBhuI,GAAS,CACnC,KAAM,CACJ,aAAA0pB,EACA,OAAAmnB,CACJ,EAAM7wC,EACEiuI,EAAkB,GAAGvkH,CAAY,UACvC,MAAO,CACL,CAACukH,CAAe,EAAG,CACjB,CAACvkH,CAAY,EAAG,CACd,mBAAoB,CAClB,CAAC,KAAKA,CAAY,gBAAgBukH,CAAe,eAAep9F,CAAM,2BAA2BA,CAAM,oBAAoB,EAAG,CAC5H,uBAAwB7wC,EAAM,iBAC1C,CACA,CACA,EACM,CAAC,GAAG0pB,CAAY,gBAAgB,EAAG,CACjC,OAAQ1pB,EAAM,cACd,aAAc,CACtB,EAGM,CAAC,GAAG0pB,CAAY,KAAK,EAAG,CACtB,WAAY1pB,EAAM,KAAKA,EAAM,YAAY,EAAE,IAAI,IAAM,EAAE,MAAK,CACpE,EACM,CAAC,KAAK0pB,CAAY,QAAQ,EAAG,CAC3B,CAAC,KAAKA,CAAY,yBAAyB,EAAG,CAC5C,iBAAkB,GAClB,QAAS,EACT,OAAQ,EACR,CAAC,GAAGukH,CAAe,SAAS,EAAG,CAE7B,gBAAiB,GACjB,uBAAwB,EACxB,qBAAsB,EACtB,UAAW,MACvB,EACU,CAAC,GAAGA,CAAe,eAAep9F,CAAM,qBAAqB,EAAG,CAC9D,MAAO7wC,EAAM,qBACb,UAAW,CACT,MAAOA,EAAM,iBAC3B,EACY,WAAY,CACV,MAAOA,EAAM,kBAC3B,EACY,CAAC,IAAI6wC,CAAM,sBAAsB,EAAG,CAClC,MAAO,CACrB,CACA,CACA,CACA,EACM,CAAC,GAAGo9F,CAAe,SAAS,EAAG,CAC7B,OAAQjuI,EAAM,cACd,mBAAoB,CAClB,OAAQ,CAClB,CACA,EACM,UAAW,CACT,CAAC,GAAG0pB,CAAY,mBAAmBukH,CAAe,SAAS,EAAG,CAC5D,OAAQjuI,EAAM,eACxB,CACA,EACM,UAAW,CACT,CAAC,GAAG0pB,CAAY,mBAAmBukH,CAAe,SAAS,EAAG,CAC5D,OAAQjuI,EAAM,eACxB,CACA,EACM,QAAS,CACP,UAAW,KACnB,EAEM,CAAC,IAAI0pB,CAAY,eAAe,EAAG,CACjC,CAAC,SAASA,CAAY,qBAAqB,EAAG,CAC5C,CAAC,GAAGA,CAAY,cAAc,EAAG,CAC/B,CAAC,GAAGA,CAAY,gBAAgB,EAAG,CACjC,gBAAiB1pB,EAAM,KAAKA,EAAM,SAAS,EAAE,IAAI,EAAE,EAAE,MAAK,EAC1D,aAAc,CAC5B,CACA,CACA,EACQ,CAAC,SAAS0pB,CAAY,sBAAsB,EAAG,CAC7C,CAAC,GAAGA,CAAY,IAAIA,CAAY,gBAAgB,EAAG,CACjD,aAAc,CAC1B,CACA,EACQ,CAAC,KAAKA,CAAY,gBAAgBA,CAAY;AAAA,YAC1CA,CAAY;AAAA,UACdA,CAAY,gBAAgB,EAAG,CAC/B,6BAA8B,CAC5B,OAAQ,CACpB,CACA,EACQ,CAAC,KAAKA,CAAY,wBAAwB,EAAG,CAC3C,OAAQ,CAClB,CACA,CACA,CACA,CACA,EAEMwkH,GAAgBluI,GAAS,CAC7B,KAAM,CACJ,aAAA0pB,CACJ,EAAM1pB,EACJ,MAAO,CACL,CAAC,GAAG0pB,CAAY,eAAe,EAAG,CAChC,CAAC,2BAA2BA,CAAY,uBAAuBA,CAAY,aAAa,EAAG,CACzF,MAAO1pB,EAAM,UACrB,CACA,CACA,CACA,EAEamuI,GAAiB9mH,GAAc,CAAC,QAAS,QAAQ,EAAGrnB,GAAS,CACxE,MAAMouI,EAAanoH,GAAWjmB,EAAO6rI,GAAe7rI,CAAK,CAAC,EAC1D,MAAO,CAACwtI,GAAcY,CAAU,EAAGT,GAAcS,CAAU,CAAC,CAC9D,EAAGtC,GAAoB,CACrB,UAAW,EACb,CAAC,EACDuC,GAAehnH,GAAc,CAAC,QAAS,WAAW,EAAGrnB,GAAS,CAC5D,MAAMouI,EAAanoH,GAAWjmB,EAAO6rI,GAAe7rI,CAAK,CAAC,EAC1D,MAAO,CAAC+zC,GAAcq6F,CAAU,EAAGJ,GAAoBI,CAAU,EAAGF,GAAcE,CAAU,EAI5FtsF,GAAoBssF,CAAU,CAAC,CACjC,EAAGtC,GAAoB,CACrB,UAAW,EACb,CAAC,ECnpBD,IAAIwC,GAAe,CAAE,KAAQ,CAAE,IAAO,MAAO,MAAS,CAAE,QAAW,gBAAiB,UAAa,OAAO,EAAI,SAAY,CAAC,CAAE,IAAO,OAAQ,MAAS,CAAE,EAAK,2DAA2D,CAAE,EAAI,CAAE,IAAO,OAAQ,MAAS,CAAE,EAAK,2DAA2D,CAAE,CAAE,CAAC,EAAI,KAAQ,OAAQ,MAAS,UAAU,ECM/VA,GAAe,SAAsBvyJ,EAAOP,EAAK,CACnD,OAAoBkH,EAAM,cAAcogD,GAAUv6C,GAAS,CAAA,EAAIxM,EAAO,CACpE,IAAKP,EACL,KAAM+yJ,EACV,CAAG,CAAC,CACJ,EAGIvrG,GAAuBtgD,EAAM,WAAW4rJ,EAAY,EACpD,QAAQ,IAAI,WAAa,eAC3BtrG,GAAQ,YAAc,gBChBxB,MAAAwrG,GAA4BpzJ,EAAAA,cAAc,IAAI,ECE9C,IAAIqzJ,GAAe,SAAsB1kK,EAAS,CAChD,IAAI2kK,EAAkB3kK,EAAQ,gBAC5BojI,EAAapjI,EAAQ,WACrBo8H,EAAMp8H,EAAQ,IACd4kK,EAAqB5kK,EAAQ,UAC7B6kK,EAAYD,IAAuB,OAAS,CAAA,EAAKA,EAC/Cx+I,EAAOy+I,EAAU,KACnBC,EAAmBD,EAAU,MAC7B3nD,EAAQ4nD,IAAqB,OAAS,SAAWA,EAC/C1qH,EAAYrnC,EAAAA,SAAQ,EACtBsnC,EAAavqB,GAAesqB,EAAW,CAAC,EACxC2qH,EAAW1qH,EAAW,CAAC,EACvB2qH,EAAc3qH,EAAW,CAAC,EACxB4qH,EAAevzJ,EAAAA,OAAM,EACrBwzJ,EAAYvsJ,EAAM,YAAY,SAAUylE,EAAQ,CAClD,OAAI,OAAOh4D,GAAS,WACXA,EAAKg4D,CAAM,EAEhB,OAAOh4D,GAAS,SACXA,EAEFg4D,CACT,EAAG,CAACh4D,CAAI,CAAC,EAGT,SAAS++I,GAAiB,CACxBp2I,GAAI,OAAOk2I,EAAa,OAAO,CACjC,CACAtzJ,OAAAA,EAAAA,UAAU,UAAY,CACpB,IAAIyzJ,EAAc,CAAA,EAClB,GAAIT,EACF,GAAIvhC,EAAY,CACdgiC,EAAY,MAAQF,EAAUP,EAAgB,KAAK,EACnD,IAAIvoK,EAAMggI,EAAM,QAAU,OACtBlf,IAAU,UACZkoD,EAAYhpK,CAAG,EAAIuoK,EAAgBvoK,CAAG,GAEpC8gH,IAAU,WACZkoD,EAAYhpK,CAAG,EAAIuoK,EAAgBvoK,CAAG,EAAIuoK,EAAgB,MAAQ,EAClES,EAAY,UAAYhpC,EAAM,kBAAoB,oBAEhDlf,IAAU,QACZkoD,EAAYhpK,CAAG,EAAIuoK,EAAgBvoK,CAAG,EAAIuoK,EAAgB,MAC1DS,EAAY,UAAY,oBAE5B,MACEA,EAAY,OAASF,EAAUP,EAAgB,MAAM,EACjDznD,IAAU,UACZkoD,EAAY,IAAMT,EAAgB,KAEhCznD,IAAU,WACZkoD,EAAY,IAAMT,EAAgB,IAAMA,EAAgB,OAAS,EACjES,EAAY,UAAY,oBAEtBloD,IAAU,QACZkoD,EAAY,IAAMT,EAAgB,IAAMA,EAAgB,OACxDS,EAAY,UAAY,qBAI9B,OAAAD,EAAc,EACdF,EAAa,QAAUl2I,GAAI,UAAY,CAGrC,IAAI+D,EAAUiyI,GAAYK,GAAe,OAAO,KAAKA,CAAW,EAAE,MAAM,SAAUhpK,EAAK,CACrF,IAAIQ,EAAWwoK,EAAYhpK,CAAG,EAC1BipK,EAAWN,EAAS3oK,CAAG,EAC3B,OAAO,OAAOQ,GAAa,UAAY,OAAOyoK,GAAa,SAAW,KAAK,MAAMzoK,CAAQ,IAAM,KAAK,MAAMyoK,CAAQ,EAAIzoK,IAAayoK,CACrI,CAAC,EACIvyI,GACHkyI,EAAYI,CAAW,CAE3B,CAAC,EACMD,CACT,EAAG,CAAC,KAAK,UAAUR,CAAe,EAAGvhC,EAAYhH,EAAKlf,EAAOgoD,CAAS,CAAC,EAChE,CACL,MAAOH,CACX,CACA,EC/EIO,GAAe,CACjB,MAAO,EACP,OAAQ,EACR,KAAM,EACN,IAAK,CACP,EACe,SAASC,GAAWtxG,EAAMuxG,EAAUC,EAAmB,CACpE,OAAOphJ,EAAAA,QAAQ,UAAY,CAKzB,QAJIqhJ,EACA9rE,EAAM,IAAI,IACV+rE,EAAaH,EAAS,KAAKE,EAASzxG,EAAK,CAAC,KAAO,MAAQyxG,IAAW,OAAS,OAASA,EAAO,GAAG,GAAKJ,GACrGM,EAAcD,EAAW,KAAOA,EAAW,MACtCxmK,EAAI,EAAGA,EAAI80D,EAAK,OAAQ90D,GAAK,EAAG,CACvC,IAAI/C,EAAM63D,EAAK90D,CAAC,EAAE,IACd9B,EAAOmoK,EAAS,IAAIppK,CAAG,EAG3B,GAAI,CAACiB,EAAM,CACT,IAAIwoK,EACJxoK,EAAOmoK,EAAS,KAAKK,EAAQ5xG,EAAK90D,EAAI,CAAC,KAAO,MAAQ0mK,IAAU,OAAS,OAASA,EAAM,GAAG,GAAKP,EAClG,CACA,IAAIt6I,EAAS4uE,EAAI,IAAIx9F,CAAG,GAAK0xB,EAAc,CAAA,EAAIzwB,CAAI,EAGnD2tB,EAAO,MAAQ46I,EAAc56I,EAAO,KAAOA,EAAO,MAGlD4uE,EAAI,IAAIx9F,EAAK4uB,CAAM,CACrB,CACA,OAAO4uE,CACT,EAAG,CAAC3lC,EAAK,IAAI,SAAU/4C,EAAK,CAC1B,OAAOA,EAAI,GACb,CAAC,EAAE,KAAK,GAAG,EAAGsqJ,EAAUC,CAAiB,CAAC,CAC5C,CCjCe,SAASjhH,GAAashH,EAAc5rH,EAAU,CAC3D,IAAI4sF,EAAWnuH,EAAM,OAAOmtJ,CAAY,EACpCpsH,EAAkB/gC,EAAM,SAAS,EAAE,EACrCghC,EAAmB7pB,GAAe4pB,EAAiB,CAAC,EACpDiL,EAAchL,EAAiB,CAAC,EAClC,SAAS7hC,EAASwiB,EAAS,CACzB,IAAI19B,EAAW,OAAO09B,GAAY,WAAaA,EAAQwsG,EAAS,OAAO,EAAIxsG,EACvE19B,IAAakqI,EAAS,SACxB5sF,EAASt9C,EAAUkqI,EAAS,OAAO,EAErCA,EAAS,QAAUlqI,EACnB+nD,EAAY,CAAA,CAAE,CAChB,CACA,MAAO,CAACmiF,EAAS,QAAShvH,CAAQ,CACpC,CCbA,IAAIiuJ,GAAqB,GACrBC,GAAsB,IACtBC,GAAmB,GACnBC,GAAqB,KAAK,IAAI,KAAOD,EAAgB,EAG1C,SAASE,GAAa10J,EAAK20J,EAAU,CAClD,IAAIhsH,EAAYrnC,EAAAA,SAAQ,EACtBsnC,EAAavqB,GAAesqB,EAAW,CAAC,EACxCisH,EAAgBhsH,EAAW,CAAC,EAC5BisH,EAAmBjsH,EAAW,CAAC,EAC7BM,EAAa5nC,EAAAA,SAAS,CAAC,EACzB6nC,EAAa9qB,GAAe6qB,EAAY,CAAC,EACzC4rH,EAAgB3rH,EAAW,CAAC,EAC5B4rH,EAAmB5rH,EAAW,CAAC,EAC7B06D,EAAaviG,EAAAA,SAAS,CAAC,EACzBwiG,EAAazlF,GAAewlF,EAAY,CAAC,EACzCmxD,EAAelxD,EAAW,CAAC,EAC3BmxD,EAAkBnxD,EAAW,CAAC,EAC5BoxD,EAAa5zJ,EAAAA,SAAQ,EACvB6zJ,EAAa92I,GAAe62I,EAAY,CAAC,EACzChB,EAAaiB,EAAW,CAAC,EACzBC,EAAgBD,EAAW,CAAC,EAC1B3iF,EAAYvyE,EAAAA,OAAM,EAItB,SAASuxH,EAAanmI,EAAG,CACvB,IAAIgqK,EAAchqK,EAAE,QAAQ,CAAC,EAC3BiqK,EAAUD,EAAY,QACtBE,EAAUF,EAAY,QACxBR,EAAiB,CACf,EAAGS,EACH,EAAGC,CACT,CAAK,EACD,OAAO,cAAc/iF,EAAU,OAAO,CACxC,CACA,SAAS0+C,EAAY7lI,EAAG,CACtB,GAAKupK,EAGL,KAAIY,EAAenqK,EAAE,QAAQ,CAAC,EAC5BiqK,EAAUE,EAAa,QACvBD,EAAUC,EAAa,QACzBX,EAAiB,CACf,EAAGS,EACH,EAAGC,CACT,CAAK,EACD,IAAIj6F,EAAUg6F,EAAUV,EAAc,EAClCr5F,EAAUg6F,EAAUX,EAAc,EACtCD,EAASr5F,EAASC,CAAO,EACzB,IAAIxwB,EAAM,KAAK,IAAG,EAClBgqH,EAAiBhqH,CAAG,EACpBkqH,EAAgBlqH,EAAM+pH,CAAa,EACnCM,EAAc,CACZ,EAAG95F,EACH,EAAGC,CACT,CAAK,EACH,CACA,SAASg2D,GAAa,CACpB,GAAKqjC,IACLC,EAAiB,IAAI,EACrBO,EAAc,IAAI,EAGdlB,GAAY,CACd,IAAIuB,EAAYvB,EAAW,EAAIc,EAC3BU,EAAYxB,EAAW,EAAIc,EAC3B3mC,EAAO,KAAK,IAAIonC,CAAS,EACzBnnC,EAAO,KAAK,IAAIonC,CAAS,EAG7B,GAAI,KAAK,IAAIrnC,EAAMC,CAAI,EAAIgmC,GAAoB,OAC/C,IAAInjC,EAAWskC,EACXrkC,EAAWskC,EACfljF,EAAU,QAAU,OAAO,YAAY,UAAY,CACjD,GAAI,KAAK,IAAI2+C,CAAQ,EAAIojC,IAAuB,KAAK,IAAInjC,CAAQ,EAAImjC,GAAqB,CACxF,OAAO,cAAc/hF,EAAU,OAAO,EACtC,MACF,CACA2+C,GAAYsjC,GACZrjC,GAAYqjC,GACZE,EAASxjC,EAAWqjC,GAAkBpjC,EAAWojC,EAAgB,CACnE,EAAGA,EAAgB,CACrB,CACF,CAGA,IAAImB,EAAwB11J,EAAAA,OAAM,EAClC,SAASguH,EAAQ5iI,EAAG,CAClB,IAAIyiI,EAASziI,EAAE,OACbsiI,EAAStiI,EAAE,OAGTuqK,EAAQ,EACRvnC,EAAO,KAAK,IAAIP,CAAM,EACtBQ,EAAO,KAAK,IAAIX,CAAM,EACtBU,IAASC,EACXsnC,EAAQD,EAAsB,UAAY,IAAM7nC,EAASH,EAChDU,EAAOC,GAChBsnC,EAAQ9nC,EACR6nC,EAAsB,QAAU,MAEhCC,EAAQjoC,EACRgoC,EAAsB,QAAU,KAE9BhB,EAAS,CAACiB,EAAO,CAACA,CAAK,GACzBvqK,EAAE,eAAc,CAEpB,CAGA,IAAIwqK,EAAiB51J,EAAAA,OAAO,IAAI,EAChC41J,EAAe,QAAU,CACvB,aAAcrkC,EACd,YAAaN,EACb,WAAYK,EACZ,QAAStD,CACb,EACE/mH,EAAM,UAAU,UAAY,CAC1B,SAAS4uJ,EAAkBzqK,EAAG,CAC5BwqK,EAAe,QAAQ,aAAaxqK,CAAC,CACvC,CACA,SAAS0qK,EAAiB1qK,EAAG,CAC3BwqK,EAAe,QAAQ,YAAYxqK,CAAC,CACtC,CACA,SAAS2qK,EAAgB3qK,EAAG,CAC1BwqK,EAAe,QAAQ,WAAWxqK,CAAC,CACrC,CACA,SAAS4qK,EAAa5qK,EAAG,CACvBwqK,EAAe,QAAQ,QAAQxqK,CAAC,CAClC,CACA,gBAAS,iBAAiB,YAAa0qK,EAAkB,CACvD,QAAS,EACf,CAAK,EACD,SAAS,iBAAiB,WAAYC,EAAiB,CACrD,QAAS,EACf,CAAK,EAGDh2J,EAAI,QAAQ,iBAAiB,aAAc81J,EAAmB,CAC5D,QAAS,EACf,CAAK,EACD91J,EAAI,QAAQ,iBAAiB,QAASi2J,EAAc,CAClD,QAAS,EACf,CAAK,EACM,UAAY,CACjB,SAAS,oBAAoB,YAAaF,CAAgB,EAC1D,SAAS,oBAAoB,WAAYC,CAAe,CAC1D,CACF,EAAG,CAAA,CAAE,CACP,CClJe,SAASE,GAAU57J,EAAU,CAC1C,IAAIquC,EAAYrnC,EAAAA,SAAS,CAAC,EACxBsnC,EAAavqB,GAAesqB,EAAW,CAAC,EACxCrzC,EAAQszC,EAAW,CAAC,EACpButH,EAAWvtH,EAAW,CAAC,EACrBwtH,EAAYn2J,EAAAA,OAAO,CAAC,EACpBo2J,EAAcp2J,EAAAA,OAAM,EACxB,OAAAo2J,EAAY,QAAU/7J,EAGtBwsB,GAAsB,UAAY,CAChC,IAAIwvI,GACHA,EAAuBD,EAAY,WAAa,MAAQC,IAAyB,QAAUA,EAAqB,KAAKD,CAAW,CACnI,EAAG,CAAC/gK,CAAK,CAAC,EAGH,UAAY,CACb8gK,EAAU,UAAY9gK,IAG1B8gK,EAAU,SAAW,EACrBD,EAASC,EAAU,OAAO,EAC5B,CACF,CACO,SAASG,GAAelC,EAAc,CAC3C,IAAImC,EAAWv2J,EAAAA,OAAO,EAAE,EACpBipC,EAAa5nC,EAAAA,SAAS,EAAE,EAC1B6nC,EAAa9qB,GAAe6qB,EAAY,CAAC,EACzCgK,EAAc/J,EAAW,CAAC,EACxBhjC,EAAQlG,EAAAA,OAAO,OAAOo0J,GAAiB,WAAaA,EAAY,EAAKA,CAAY,EACjFoC,EAAcP,GAAU,UAAY,CACtC,IAAIzoK,EAAU0Y,EAAM,QACpBqwJ,EAAS,QAAQ,QAAQ,SAAUl8J,EAAU,CAC3C7M,EAAU6M,EAAS7M,CAAO,CAC5B,CAAC,EACD+oK,EAAS,QAAU,CAAA,EACnBrwJ,EAAM,QAAU1Y,EAChBylD,EAAY,CAAA,CAAE,CAChB,CAAC,EACD,SAASrqB,EAAQvuB,EAAU,CACzBk8J,EAAS,QAAQ,KAAKl8J,CAAQ,EAC9Bm8J,EAAW,CACb,CACA,MAAO,CAACtwJ,EAAM,QAAS0iB,CAAO,CAChC,CCnDA,IAAIgrI,GAAe,CACjB,MAAO,EACP,OAAQ,EACR,KAAM,EACN,IAAK,EACL,MAAO,CACT,EACe,SAAS6C,GAAgBC,EAAYC,EAAwBC,EAAWC,EAAqBC,EAAkBC,EAAwBp0J,EAAM,CAC1J,IAAI4/C,EAAO5/C,EAAK,KACdq0J,EAAcr0J,EAAK,YACnB+nH,EAAM/nH,EAAK,IACTs0J,EACAttJ,EACAutJ,EACJ,MAAI,CAAC,MAAO,QAAQ,EAAE,SAASF,CAAW,GACxCC,EAAW,QACXttJ,EAAW+gH,EAAM,QAAU,OAC3BwsC,EAAgB,KAAK,IAAIN,CAAS,IAElCK,EAAW,SACXttJ,EAAW,MACXutJ,EAAgB,CAACN,GAEZjkJ,EAAAA,QAAQ,UAAY,CACzB,GAAI,CAAC4vC,EAAK,OACR,MAAO,CAAC,EAAG,CAAC,EAId,QAFI9jC,EAAM8jC,EAAK,OACX0oE,EAAWxsG,EACNhxB,EAAI,EAAGA,EAAIgxB,EAAKhxB,GAAK,EAAG,CAC/B,IAAIohC,EAAS6nI,EAAW,IAAIn0G,EAAK90D,CAAC,EAAE,GAAG,GAAKmmK,GAC5C,GAAI,KAAK,MAAM/kI,EAAOllB,CAAQ,EAAIklB,EAAOooI,CAAQ,CAAC,EAAI,KAAK,MAAMC,EAAgBP,CAAsB,EAAG,CACxG1rC,EAAWx9H,EAAI,EACf,KACF,CACF,CAEA,QADIu9H,EAAa,EACR51G,EAAKqJ,EAAM,EAAGrJ,GAAM,EAAGA,GAAM,EAAG,CACvC,IAAI28G,EAAU2kC,EAAW,IAAIn0G,EAAKntC,CAAE,EAAE,GAAG,GAAKw+I,GAC9C,GAAI7hC,EAAQpoH,CAAQ,EAAIutJ,EAAe,CACrClsC,EAAa51G,EAAK,EAClB,KACF,CACF,CACA,OAAO41G,GAAcC,EAAW,CAAC,EAAG,CAAC,EAAI,CAACD,EAAYC,CAAQ,CAChE,EAAG,CAACyrC,EAAYC,EAAwBE,EAAqBC,EAAkBC,EAAwBG,EAAeF,EAAaz0G,EAAK,IAAI,SAAU/4C,EAAK,CACzJ,OAAOA,EAAI,GACb,CAAC,EAAE,KAAK,GAAG,EAAGkhH,CAAG,CAAC,CACpB,CC7CO,SAAS96F,GAAUlmC,EAAK,CAC7B,IAAIytK,EACJ,OAAIztK,aAAe,KACjBytK,EAAM,CAAA,EACNztK,EAAI,QAAQ,SAAUkG,EAAGzE,EAAG,CAC1BgsK,EAAIhsK,CAAC,EAAIyE,CACX,CAAC,GAEDunK,EAAMztK,EAED,KAAK,UAAUytK,CAAG,CAC3B,CACA,IAAIC,GAAuB,UACpB,SAASC,GAAe3sK,EAAK,CAClC,OAAO,OAAOA,CAAG,EAAE,QAAQ,KAAM0sK,EAAoB,CACvD,CACO,SAASE,GAAazrG,EAAUX,EAAWi7C,EAAUrrF,EAAU,CACpE,MAEA,GAACqrF,GAEDrrF,GAEA+wC,IAAa,IAEbA,IAAa,SAAcX,IAAc,IAASA,IAAc,MAIlE,CChCA,IAAIqsG,GAAyBtwJ,EAAM,WAAW,SAAU3G,EAAOP,EAAK,CAClE,IAAIssC,EAAY/rC,EAAM,UACpB6lG,EAAW7lG,EAAM,SACjB64B,EAAS74B,EAAM,OACfqiB,EAAQriB,EAAM,MAChB,MAAI,CAAC6lG,GAAYA,EAAS,UAAY,GAC7B,KAEWl/F,EAAM,cAAc,SAAU,CAChD,IAAKlH,EACL,KAAM,SACN,UAAW,GAAG,OAAOssC,EAAW,UAAU,EAC1C,MAAO1pB,EACP,cAAewW,GAAW,KAA4B,OAASA,EAAO,eAAiB,UACvF,QAAS,SAAiBpqC,EAAO,CAC/Bo3G,EAAS,OAAO,MAAO,CACrB,MAAOp3G,CACf,CAAO,CACH,CACJ,EAAKo3G,EAAS,SAAW,GAAG,CAC5B,CAAC,ECnBGqxD,GAA4BvwJ,EAAM,WAAW,SAAU3G,EAAOP,EAAK,CACrE,IAAI4J,EAAWrJ,EAAM,SACnB+rC,EAAY/rC,EAAM,UAClBqqH,EAAQrqH,EAAM,MAChB,GAAI,CAACqqH,EACH,OAAO,KAET,IAAIj6F,EAGA+mI,EAAc,CAAA,EAClB,OAAI1qJ,GAAQ49G,CAAK,IAAM,UAAY,CAAe1jH,EAAM,eAAe0jH,CAAK,EAC1E8sC,EAAc9sC,EAEd8sC,EAAY,MAAQ9sC,EAElBhhH,IAAa,UACf+mB,EAAU+mI,EAAY,OAEpB9tJ,IAAa,SACf+mB,EAAU+mI,EAAY,MAEjB/mI,EAAuBzpB,EAAM,cAAc,MAAO,CACvD,UAAW,GAAG,OAAOolC,EAAW,gBAAgB,EAChD,IAAKtsC,CACT,EAAK2wB,CAAO,EAAI,IAChB,CAAC,EACG,QAAQ,IAAI,WAAa,eAC3B8mI,GAAa,YAAc,gBCnB7B,IAAIE,GAA6BzwJ,EAAM,WAAW,SAAU3G,EAAOP,EAAK,CACtE,IAAIssC,EAAY/rC,EAAM,UACpBwL,EAAKxL,EAAM,GACXiiD,EAAOjiD,EAAM,KACb64B,EAAS74B,EAAM,OACf6tG,EAAS7tG,EAAM,OACfq3J,EAAcr3J,EAAM,KACpBs3J,EAAYD,IAAgB,OAAS,CAAA,EAAKA,EAC1Ch1I,EAAQriB,EAAM,MACd+lD,EAAY/lD,EAAM,UAClB6lG,EAAW7lG,EAAM,SACjBu3J,EAAev3J,EAAM,aACrBoqH,EAAMpqH,EAAM,IACZw3J,EAAkBx3J,EAAM,gBACxBy3J,EAAaz3J,EAAM,WACnBglC,EAAoBhlC,EAAM,kBAC1B87G,EAAiB97G,EAAM,eAErBooC,EAAYrnC,EAAAA,SAAS,EAAK,EAC5BsnC,EAAavqB,GAAesqB,EAAW,CAAC,EACxC2lC,EAAO1lC,EAAW,CAAC,EACnBqyD,EAAUryD,EAAW,CAAC,EACpBM,EAAa5nC,EAAAA,SAAS,IAAI,EAC5B6nC,EAAa9qB,GAAe6qB,EAAY,CAAC,EACzC+uH,EAAc9uH,EAAW,CAAC,EAC1B+uH,EAAiB/uH,EAAW,CAAC,EAC3BgvH,EAAkBN,EAAU,KAC9BO,EAAWD,IAAoB,OAAS,OAASA,EAC/ChS,EAAU,GAAG,OAAOp6I,EAAI,aAAa,EACrCssJ,EAAiB,GAAG,OAAO/rH,EAAW,WAAW,EACjDgsH,EAAiBL,IAAgB,KAAO,GAAG,OAAO9R,EAAS,GAAG,EAAE,OAAO8R,CAAW,EAAI,KACtFM,EAAoBn/H,GAAW,KAA4B,OAASA,EAAO,kBAC/E,SAASo/H,EAAYxpK,EAAOrE,EAAK,CAC/BqE,EAAM,eAAc,EACpBA,EAAM,gBAAe,EACrBo3G,EAAS,OAAO,SAAU,CACxB,IAAKz7G,EACL,MAAOqE,CACb,CAAK,CACH,CACA,IAAI2yD,EAAoBz6C,EAAM,cAAckgJ,GAAM,CAChD,QAAS,SAAiBxkJ,EAAM,CAC9B,IAAIjY,EAAMiY,EAAK,IACbo+I,GAAWp+I,EAAK,SAClBo1J,EAAWrtK,EAAKq2J,EAAQ,EACxB/lD,EAAQ,EAAK,CACf,EACA,UAAW,GAAG,OAAOo9D,EAAgB,OAAO,EAC5C,GAAIlS,EACJ,SAAU,GACV,KAAM,UACN,wBAAyBmS,EACzB,aAAc,CAACL,CAAW,EAC1B,aAAcM,IAAsB,OAAYA,EAAoB,mBACxE,EAAK/1G,EAAK,IAAI,SAAU/4C,EAAK,CACzB,IAAIqiD,EAAWriD,EAAI,SACjBsR,EAAWtR,EAAI,SACf0hD,GAAY1hD,EAAI,UAChB9e,GAAM8e,EAAI,IACV0/F,GAAQ1/F,EAAI,MACVgvJ,GAAYlB,GAAazrG,EAAUX,GAAWi7C,EAAUrrF,CAAQ,EACpE,OAAoB7T,EAAM,cAAc27I,GAAU,CAChD,IAAKl4J,GACL,GAAI,GAAG,OAAOw7J,EAAS,GAAG,EAAE,OAAOx7J,EAAG,EACtC,KAAM,SACN,gBAAiBohB,GAAM,GAAG,OAAOA,EAAI,SAAS,EAAE,OAAOphB,EAAG,EAC1D,SAAUowB,CAChB,EAAoB7T,EAAM,cAAc,OAAQ,KAAMiiG,EAAK,EAAGsvD,IAA0BvxJ,EAAM,cAAc,SAAU,CAChH,KAAM,SACN,aAAc6wJ,GAAmB,SACjC,SAAU,EACV,UAAW,GAAG,OAAOM,EAAgB,mBAAmB,EACxD,QAAS,SAAiBhtK,EAAG,CAC3BA,EAAE,gBAAe,EACjBmtK,EAAYntK,EAAGV,EAAG,CACpB,CACN,EAAOwgE,IAAai7C,EAAS,YAAc,GAAG,CAAC,CAC7C,CAAC,CAAC,EACF,SAASsyD,EAAa5pI,EAAQ,CAQ5B,QAPI6pI,EAAcn2G,EAAK,OAAO,SAAU/4C,GAAK,CAC3C,MAAO,CAACA,GAAI,QACd,CAAC,EACGmvJ,EAAgBD,EAAY,UAAU,SAAUlvJ,GAAK,CACvD,OAAOA,GAAI,MAAQwuJ,CACrB,CAAC,GAAK,EACFv5I,GAAMi6I,EAAY,OACbjrK,GAAI,EAAGA,GAAIgxB,GAAKhxB,IAAK,EAAG,CAC/BkrK,GAAiBA,EAAgB9pI,EAASpQ,IAAOA,GACjD,IAAIjV,GAAMkvJ,EAAYC,CAAa,EACnC,GAAI,CAACnvJ,GAAI,SAAU,CACjByuJ,EAAezuJ,GAAI,GAAG,EACtB,MACF,CACF,CACF,CACA,SAASu8G,EAAU36H,EAAG,CACpB,IAAIs/G,EAAQt/G,EAAE,MACd,GAAI,CAACijF,EAAM,CACL,CAAClhB,GAAQ,KAAMA,GAAQ,MAAOA,GAAQ,KAAK,EAAE,SAASu9C,CAAK,IAC7D1P,EAAQ,EAAI,EACZ5vG,EAAE,eAAc,GAElB,MACF,CACA,OAAQs/G,EAAK,CACX,KAAKv9C,GAAQ,GACXsrG,EAAa,EAAE,EACfrtK,EAAE,eAAc,EAChB,MACF,KAAK+hE,GAAQ,KACXsrG,EAAa,CAAC,EACdrtK,EAAE,eAAc,EAChB,MACF,KAAK+hE,GAAQ,IACX6tC,EAAQ,EAAK,EACb,MACF,KAAK7tC,GAAQ,MACb,KAAKA,GAAQ,MACP6qG,IAAgB,MAClBD,EAAWC,EAAa5sK,CAAC,EAE3B,KACR,CACE,CAGA6U,EAAAA,UAAU,UAAY,CAEpB,IAAIiU,EAAM,SAAS,eAAemkJ,CAAc,EAC5CnkJ,GAAOA,EAAI,gBACbA,EAAI,eAAe,EAAK,CAE5B,EAAG,CAAC8jJ,CAAW,CAAC,EAChB/3J,EAAAA,UAAU,UAAY,CACfouE,GACH4pF,EAAe,IAAI,CAEvB,EAAG,CAAC5pF,CAAI,CAAC,EAGT,IAAIuqF,EAAYvqJ,EAAgB,CAAA,EAAIq8G,EAAM,cAAgB,aAAcmtC,CAAY,EAC/Et1G,EAAK,SACRq2G,EAAU,WAAa,SACvBA,EAAU,MAAQ,GAEpB,IAAI9mB,EAAmBrlI,GAAW4B,EAAgB,GAAI,GAAG,OAAO+pJ,EAAgB,MAAM,EAAG1tC,CAAG,CAAC,EACzFmuC,EAAW1qD,EAAS,KAAoBlnG,EAAM,cAAc2yI,GAAU9sI,GAAS,CACjF,UAAWsrJ,EACX,QAAS12G,EACT,QAASa,EAAK,OAAS8rB,EAAO,GAC9B,gBAAiB2sB,EACjB,iBAAkBvuF,GAAWqlI,EAAkB11B,CAAc,EAC7D,gBAAiB,GACjB,gBAAiB,GACjB,kBAAmB92E,CACvB,EAAKsyH,CAAS,EAAgB3wJ,EAAM,cAAc,SAAU,CACxD,KAAM,SACN,UAAW,GAAG,OAAOolC,EAAW,WAAW,EAC3C,MAAOusH,EACP,gBAAiB,UACjB,gBAAiB1S,EACjB,GAAI,GAAG,OAAOp6I,EAAI,OAAO,EACzB,gBAAiBuiE,EACjB,UAAW03C,CACf,EAAKoyC,CAAQ,CAAC,EACZ,OAAoBlxJ,EAAM,cAAc,MAAO,CAC7C,UAAWwF,GAAW,GAAG,OAAO4/B,EAAW,iBAAiB,EAAGga,CAAS,EACxE,MAAO1jC,EACP,IAAK5iB,CACT,EAAK84J,EAAuB5xJ,EAAM,cAAcswJ,GAAW,CACvD,UAAWlrH,EACX,OAAQlT,EACR,SAAUgtE,CACd,CAAG,CAAC,CACJ,CAAC,EACD,MAAA2yD,GAA4B7xJ,EAAM,KAAKywJ,GAAe,SAAUh8H,EAAGhuC,EAAM,CACvE,OAGEA,EAAK,SAET,CAAC,EC5LD,IAAIqrK,GAAU,SAAiBz4J,EAAO,CACpC,IAAI+rC,EAAY/rC,EAAM,UACpBwL,EAAKxL,EAAM,GACX05C,EAAS15C,EAAM,OACf0lE,EAAQ1lE,EAAM,MACd04J,EAAa14J,EAAM,IACnB5V,EAAMsuK,EAAW,IACjB9vD,EAAQ8vD,EAAW,MACnBl+I,EAAWk+I,EAAW,SACtB9tG,EAAY8tG,EAAW,UACvB5yG,EAAO4yG,EAAW,KAClBntG,EAAWvrD,EAAM,SACjB24J,EAAgB34J,EAAM,cACtBw3J,EAAkBx3J,EAAM,gBACxB6lG,EAAW7lG,EAAM,SACjBgmD,EAAUhmD,EAAM,QAChBslH,EAAUtlH,EAAM,QAChBulH,EAASvlH,EAAM,OACfylH,EAAYzlH,EAAM,UAClBywE,EAAczwE,EAAM,YACpB0wE,EAAY1wE,EAAM,UAClBqiB,EAAQriB,EAAM,MACd44J,EAAW54J,EAAM,SACjB64J,EAAkB74J,EAAM,gBACtB84J,EAAY,GAAG,OAAO/sH,EAAW,MAAM,EACvCmsH,EAAYlB,GAAazrG,EAAUX,EAAWi7C,EAAUrrF,CAAQ,EACpE,SAAS2nI,EAAgBr3J,EAAG,CACtB0vB,GAGJwrC,EAAQl7D,CAAC,CACX,CACA,SAASmtK,EAAYxpK,EAAO,CAC1BA,EAAM,eAAc,EACpBA,EAAM,gBAAe,EACrBo3G,EAAS,OAAO,SAAU,CACxB,IAAKz7G,EACL,MAAOqE,CACb,CAAK,CACH,CACA,IAAIsqK,EAAYpyJ,EAAM,QAAQ,UAAY,CACxC,OAAOm/C,GAAQ,OAAO8iD,GAAU,SAAwBjiG,EAAM,cAAc,OAAQ,KAAMiiG,CAAK,EAAIA,CACrG,EAAG,CAACA,EAAO9iD,CAAI,CAAC,EACZkzG,EAASryJ,EAAM,OAAO,IAAI,EAC9BA,EAAM,UAAU,UAAY,CACtB++D,GAASszF,EAAO,SAClBA,EAAO,QAAQ,MAAK,CAExB,EAAG,CAACtzF,CAAK,CAAC,EACV,IAAIt3D,EAAoBzH,EAAM,cAAc,MAAO,CACjD,IAAKvc,EACL,gBAAiB2sK,GAAe3sK,CAAG,EACnC,UAAW+hB,GAAW2sJ,EAAW/qJ,EAAgBA,EAAgBA,EAAgBA,EAAgB,CAAA,EAAI,GAAG,OAAO+qJ,EAAW,cAAc,EAAGZ,CAAS,EAAG,GAAG,OAAOY,EAAW,SAAS,EAAGp/G,CAAM,EAAG,GAAG,OAAOo/G,EAAW,WAAW,EAAGt+I,CAAQ,EAAG,GAAG,OAAOs+I,EAAW,QAAQ,EAAGpzF,CAAK,CAAC,EACrR,MAAOrjD,EACP,QAAS8/H,CACb,EAAkBx7I,EAAM,cAAc,MAAO,CACzC,IAAKqyJ,EACL,KAAM,MACN,gBAAiBt/G,EACjB,GAAIluC,GAAM,GAAG,OAAOA,EAAI,OAAO,EAAE,OAAOphB,CAAG,EAC3C,UAAW,GAAG,OAAO0uK,EAAW,MAAM,EACtC,gBAAiBttJ,GAAM,GAAG,OAAOA,EAAI,SAAS,EAAE,OAAOphB,CAAG,EAC1D,gBAAiBowB,EACjB,SAAUA,EAAW,KAAOk/B,EAAS,EAAI,GACzC,QAAS,SAAiB5uD,EAAG,CAC3BA,EAAE,gBAAe,EACjBq3J,EAAgBr3J,CAAC,CACnB,EACA,UAAW26H,EACX,YAAah1C,EACb,UAAWC,EACX,QAAS40C,EACT,OAAQC,CACZ,EAAK7/C,GAAsB/+D,EAAM,cAAc,MAAO,CAClD,YAAa,SACb,MAAO,CACL,MAAO,EACP,OAAQ,EACR,SAAU,WACV,SAAU,SACV,QAAS,CACf,CACA,EAAK,OAAO,OAAOkyJ,EAAiB,MAAM,EAAE,OAAOD,CAAQ,CAAC,EAAG9yG,GAAqBn/C,EAAM,cAAc,OAAQ,CAC5G,UAAW,GAAG,OAAOmyJ,EAAW,OAAO,CAC3C,EAAKhzG,CAAI,EAAG8iD,GAASmwD,CAAS,EAAGb,GAA0BvxJ,EAAM,cAAc,SAAU,CACrF,KAAM,SACN,KAAM,MACN,aAAc6wJ,GAAmB,SACjC,SAAU99G,EAAS,EAAI,GACvB,UAAW,GAAG,OAAOo/G,EAAW,SAAS,EACzC,QAAS,SAAiBhuK,EAAG,CAC3BA,EAAE,gBAAe,EACjBmtK,EAAYntK,CAAC,CACf,CACJ,EAAK8/D,GAAai7C,EAAS,YAAc,GAAG,CAAC,EAC3C,OAAO8yD,EAAgBA,EAAcvqJ,CAAI,EAAIA,CAC/C,EC5EI6qJ,GAAa,SAAoB/vJ,EAAKgwJ,EAAe,CAEvD,IAAI39I,EAAcrS,EAAI,YACpBsS,EAAetS,EAAI,aACnBiuH,EAAYjuH,EAAI,UAChBmuH,EAAanuH,EAAI,WACfiwJ,EAAwBjwJ,EAAI,sBAAqB,EACnDqO,EAAQ4hJ,EAAsB,MAC9B3hJ,EAAS2hJ,EAAsB,OAC/Bx2I,EAAOw2I,EAAsB,KAC7BrmG,EAAMqmG,EAAsB,IAG9B,OAAI,KAAK,IAAI5hJ,EAAQgE,CAAW,EAAI,EAC3B,CAAChE,EAAOC,EAAQmL,EAAOu2I,EAAc,KAAMpmG,EAAMomG,EAAc,GAAG,EAEpE,CAAC39I,EAAaC,EAAc67G,EAAYF,CAAS,CAC1D,EACI3I,GAAU,SAAiB4qC,EAAQ,CACrC,IAAI/2J,EAAO+2J,EAAO,SAAW,CAAA,EAC3BC,EAAmBh3J,EAAK,YACxBkZ,EAAc89I,IAAqB,OAAS,EAAIA,EAChDC,EAAoBj3J,EAAK,aACzBmZ,EAAe89I,IAAsB,OAAS,EAAIA,EAGpD,GAAIF,EAAO,QAAS,CAClB,IAAIG,EAAwBH,EAAO,QAAQ,sBAAqB,EAC9D7hJ,EAAQgiJ,EAAsB,MAC9B/hJ,EAAS+hJ,EAAsB,OACjC,GAAI,KAAK,IAAIhiJ,EAAQgE,CAAW,EAAI,EAClC,MAAO,CAAChE,EAAOC,CAAM,CAEzB,CACA,MAAO,CAAC+D,EAAaC,CAAY,CACnC,EAKIg+I,GAAe,SAAsBplJ,EAAMqlJ,EAAwB,CACrE,OAAOrlJ,EAAKqlJ,EAAyB,EAAI,CAAC,CAC5C,EACIC,GAA0B/yJ,EAAM,WAAW,SAAU3G,EAAOP,EAAK,CACnE,IAAIsmD,EAAY/lD,EAAM,UACpBqiB,EAAQriB,EAAM,MACdwL,EAAKxL,EAAM,GACX25J,EAAW35J,EAAM,SACjBo9I,EAAYp9I,EAAM,UAClBoqH,EAAMpqH,EAAM,IACZqqH,EAAQrqH,EAAM,MACd6lG,EAAW7lG,EAAM,SACjB64B,EAAS74B,EAAM,OACf02J,EAAc12J,EAAM,YACpBu3J,EAAev3J,EAAM,aACrB+M,EAAW/M,EAAM,SACjBy3J,EAAaz3J,EAAM,WACnB45J,EAAc55J,EAAM,YACpB6yJ,EAAY7yJ,EAAM,UAChBgoB,EAAoBrhB,EAAM,WAAW8rJ,EAAU,EACjD1mH,EAAY/jB,EAAkB,UAC9Bi6B,EAAOj6B,EAAkB,KACvBysC,EAAe/0D,EAAAA,OAAO,IAAI,EAC1Bm6J,EAAen6J,EAAAA,OAAO,IAAI,EAC1Bo6J,EAAgBp6J,EAAAA,OAAO,IAAI,EAC3Bq6J,EAAiBr6J,EAAAA,OAAO,IAAI,EAC5Bs6J,EAAat6J,EAAAA,OAAO,IAAI,EACxBu6J,EAAgBv6J,EAAAA,OAAO,IAAI,EAC3Bw6J,EAAoBx6J,EAAAA,OAAO,IAAI,EAC/B+5J,EAAyB/C,IAAgB,OAASA,IAAgB,SAClEx+G,EAAgB1F,GAAa,EAAG,SAAUplD,GAAMsQ,GAAM,CAClD+7J,GAA0BG,GAC5BA,EAAY,CACV,UAAWxsK,GAAOsQ,GAAO,OAAS,OAC5C,CAAS,CAEL,CAAC,EACDy6C,EAAiBr6B,GAAeo6B,EAAe,CAAC,EAChDiiH,EAAgBhiH,EAAe,CAAC,EAChCiiH,EAAmBjiH,EAAe,CAAC,EACjCkiH,EAAiB7nH,GAAa,EAAG,SAAUplD,GAAMsQ,GAAM,CACnD,CAAC+7J,GAA0BG,GAC7BA,EAAY,CACV,UAAWxsK,GAAOsQ,GAAO,MAAQ,QAC3C,CAAS,CAEL,CAAC,EACD48J,EAAiBx8I,GAAeu8I,EAAgB,CAAC,EACjDE,EAAeD,EAAe,CAAC,EAC/BE,EAAkBF,EAAe,CAAC,EAChClyH,EAAYrnC,EAAAA,SAAS,CAAC,EAAG,CAAC,CAAC,EAC7BsnC,EAAavqB,GAAesqB,EAAW,CAAC,EACxCqyH,EAA4BpyH,EAAW,CAAC,EACxCqyH,EAA+BryH,EAAW,CAAC,EACzCM,EAAa5nC,EAAAA,SAAS,CAAC,EAAG,CAAC,CAAC,EAC9B6nC,EAAa9qB,GAAe6qB,EAAY,CAAC,EACzCgyH,GAAiB/xH,EAAW,CAAC,EAC7BgyH,GAAoBhyH,EAAW,CAAC,EAC9B06D,GAAaviG,EAAAA,SAAS,CAAC,EAAG,CAAC,CAAC,EAC9BwiG,GAAazlF,GAAewlF,GAAY,CAAC,EACzCu3D,GAAUt3D,GAAW,CAAC,EACtBu3D,EAAav3D,GAAW,CAAC,EACvBoxD,EAAa5zJ,EAAAA,SAAS,CAAC,EAAG,CAAC,CAAC,EAC9B6zJ,GAAa92I,GAAe62I,EAAY,CAAC,EACzCoG,EAAgBnG,GAAW,CAAC,EAC5BoG,GAAmBpG,GAAW,CAAC,EAC7BqG,GAAkBjF,GAAe,IAAI,GAAK,EAC5CkF,GAAmBp9I,GAAem9I,GAAiB,CAAC,EACpDzH,GAAW0H,GAAiB,CAAC,EAC7BC,GAAcD,GAAiB,CAAC,EAC9B9E,GAAa7C,GAAWtxG,EAAMuxG,GAAUmH,GAAe,CAAC,CAAC,EAGzDS,GAAiC5B,GAAaiB,EAA2BhB,CAAsB,EAC/FlD,GAAsBiD,GAAamB,GAAgBlB,CAAsB,EACzE4B,GAAe7B,GAAaqB,GAASpB,CAAsB,EAC3D6B,GAAqB9B,GAAauB,EAAetB,CAAsB,EACvE8B,GAAa,KAAK,MAAMH,EAA8B,EAAI,KAAK,MAAM7E,GAAsB8E,EAAY,EACvGhF,EAAyBkF,GAAaH,GAAiCE,GAAqBF,GAAiCC,GAG7HG,GAA4B,GAAG,OAAOzvH,EAAW,wBAAwB,EACzE0vH,GAAe,EACfC,GAAe,EACdjC,GAGMrvC,GACTqxC,GAAe,EACfC,GAAe,KAAK,IAAI,EAAGnF,GAAsBF,CAAsB,IAJvEoF,GAAe,KAAK,IAAI,EAAGpF,EAAyBE,EAAmB,EACvEmF,GAAe,GAQjB,SAASC,GAAapwK,GAAO,CAC3B,OAAIA,GAAQkwK,GACHA,GAELlwK,GAAQmwK,GACHA,GAEFnwK,EACT,CAGA,IAAIqwK,GAAiBl8J,EAAAA,OAAO,IAAI,EAC5Bm8J,GAAa96J,EAAAA,SAAQ,EACvB+6J,GAAch+I,GAAe+9I,GAAY,CAAC,EAC1CE,GAAgBD,GAAY,CAAC,EAC7BE,GAAmBF,GAAY,CAAC,EAClC,SAASG,IAAkB,CACzBD,GAAiB,KAAK,KAAK,CAC7B,CACA,SAASE,IAAmB,CACtBN,GAAe,SACjB,aAAaA,GAAe,OAAO,CAEvC,CACAzH,GAAa4F,EAAgB,SAAUh/F,GAASC,GAAS,CACvD,SAASmhG,GAAOr2J,GAAUyoB,GAAQ,CAChCzoB,GAAS,SAAUva,GAAO,CACxB,IAAIX,GAAW+wK,GAAapwK,GAAQgjC,EAAM,EAC1C,OAAO3jC,EACT,CAAC,CACH,CAGA,OAAK2wK,IAGD9B,EACF0C,GAAO/B,EAAkBr/F,EAAO,EAEhCohG,GAAO3B,EAAiBx/F,EAAO,EAEjCkhG,GAAgB,EAChBD,GAAe,EACR,IATE,EAUX,CAAC,EACDt8J,EAAAA,UAAU,UAAY,CACpB,OAAAu8J,GAAgB,EACZH,KACFH,GAAe,QAAU,WAAW,UAAY,CAC9CI,GAAiB,CAAC,CACpB,EAAG,GAAG,GAEDE,EACT,EAAG,CAACH,EAAa,CAAC,EAIlB,IAAIK,GAAmBjG,GAAgBC,GAErCC,EAEAoD,EAAyBU,EAAgBI,EAEzChE,GAEA8E,GAEAC,GAAoBx/I,EAAcA,EAAc,CAAA,EAAI9b,CAAK,EAAG,CAAA,EAAI,CAC9D,KAAMiiD,CACZ,CAAK,CAAC,EACFo6G,GAAoBv+I,GAAes+I,GAAkB,CAAC,EACtDE,GAAeD,GAAkB,CAAC,EAClCE,GAAaF,GAAkB,CAAC,EAG9BG,GAAcp1H,GAAS,UAAY,CACrC,IAAIh9C,GAAM,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAIgzJ,EAC1Eqf,GAAYrG,GAAW,IAAIhsK,EAAG,GAAK,CACrC,MAAO,EACP,OAAQ,EACR,KAAM,EACN,MAAO,EACP,IAAK,CACX,EACI,GAAIqvK,EAAwB,CAE1B,IAAIiD,GAAevC,EAGf/vC,EACEqyC,GAAU,MAAQtC,EACpBuC,GAAeD,GAAU,MAChBA,GAAU,MAAQA,GAAU,MAAQtC,EAAgB9D,IAC7DqG,GAAeD,GAAU,MAAQA,GAAU,MAAQpG,GAI9CoG,GAAU,KAAO,CAACtC,EACzBuC,GAAe,CAACD,GAAU,KACjBA,GAAU,KAAOA,GAAU,MAAQ,CAACtC,EAAgB9D,IAC7DqG,GAAe,EAAED,GAAU,KAAOA,GAAU,MAAQpG,IAEtDmE,EAAgB,CAAC,EACjBJ,EAAiBuB,GAAae,EAAY,CAAC,CAC7C,KAAO,CAEL,IAAIC,GAAgBpC,EAChBkC,GAAU,IAAM,CAAClC,EACnBoC,GAAgB,CAACF,GAAU,IAClBA,GAAU,IAAMA,GAAU,OAAS,CAAClC,EAAelE,IAC5DsG,GAAgB,EAAEF,GAAU,IAAMA,GAAU,OAASpG,IAEvD+D,EAAiB,CAAC,EAClBI,EAAgBmB,GAAagB,EAAa,CAAC,CAC7C,CACF,CAAC,EAGGC,GAAc77J,EAAAA,SAAQ,EACxB87J,GAAc/+I,GAAe8+I,GAAa,CAAC,EAC3CE,GAAWD,GAAY,CAAC,EACxBE,GAAcF,GAAY,CAAC,EACzBG,GAAcj8J,EAAAA,SAAS,EAAK,EAC9Bk8J,GAAcn/I,GAAek/I,GAAa,CAAC,EAC3CE,GAAUD,GAAY,CAAC,EACvBE,GAAaF,GAAY,CAAC,EACxB7E,GAAcn2G,EAAK,OAAO,SAAU/4C,GAAK,CAC3C,MAAO,CAACA,GAAI,QACd,CAAC,EAAE,IAAI,SAAUA,GAAK,CACpB,OAAOA,GAAI,GACb,CAAC,EACGkrJ,GAAW,SAAkB7lI,GAAQ,CACvC,IAAI4tB,GAAei8G,GAAY,QAAQ0E,IAAY1f,CAAS,EACxDj/H,GAAMi6I,GAAY,OAClBgF,IAAajhH,GAAe5tB,GAASpQ,IAAOA,GAC5Ck/I,GAASjF,GAAYgF,EAAS,EAClCL,GAAYM,EAAM,CACpB,EACIrkB,GAAgB,SAAuBluJ,GAAG,CAC5C,IAAI0C,GAAO1C,GAAE,KACTmsI,GAAQ7M,GAAOqvC,EACf6D,GAAkBlF,GAAY,CAAC,EAC/BmF,GAAiBnF,GAAYA,GAAY,OAAS,CAAC,EACvD,OAAQ5qK,GAAI,CAEV,IAAK,YACH,CACMisK,GACFrF,GAASn9B,GAAQ,EAAI,EAAE,EAEzB,KACF,CAGF,IAAK,aACH,CACMwiC,GACFrF,GAASn9B,GAAQ,GAAK,CAAC,EAEzB,KACF,CAGF,IAAK,UACH,CACEnsI,GAAE,eAAc,EACX2uK,GACHrF,GAAS,EAAE,EAEb,KACF,CAGF,IAAK,YACH,CACEtpK,GAAE,eAAc,EACX2uK,GACHrF,GAAS,CAAC,EAEZ,KACF,CAGF,IAAK,OACH,CACEtpK,GAAE,eAAc,EAChBiyK,GAAYO,EAAe,EAC3B,KACF,CAGF,IAAK,MACH,CACExyK,GAAE,eAAc,EAChBiyK,GAAYQ,EAAc,EAC1B,KACF,CAGF,IAAK,QACL,IAAK,QACH,CACEzyK,GAAE,eAAc,EAChB2sK,EAAWqF,IAAsD1f,EAAWtyJ,EAAC,EAC7E,KACF,CAEF,IAAK,YACL,IAAK,SACH,CACE,IAAI0yK,GAAcpF,GAAY,QAAQ0E,EAAQ,EAC1CW,GAAYx7G,EAAK,KAAK,SAAU/4C,GAAK,CACvC,OAAOA,GAAI,MAAQ4zJ,EACrB,CAAC,EACG5E,GAAYlB,GAAayG,IAAc,KAA+B,OAASA,GAAU,SAAUA,IAAc,KAA+B,OAASA,GAAU,UAAW53D,EAAU43D,IAAc,KAA+B,OAASA,GAAU,QAAQ,EAChQvF,KACFptK,GAAE,eAAc,EAChBA,GAAE,gBAAe,EACjB+6G,EAAS,OAAO,SAAU,CACxB,IAAKi3D,GACL,MAAOhyK,EACrB,CAAa,EAEG0yK,KAAgBpF,GAAY,OAAS,EACvChE,GAAS,EAAE,EAEXA,GAAS,CAAC,GAGd,KACF,CACR,CACE,EAGIsJ,GAAe,CAAA,EACfjE,EACFiE,GAAatzC,EAAM,cAAgB,YAAY,EAAImtC,EAEnDmG,GAAa,UAAYnG,EAE3B,IAAIoG,GAAW17G,EAAK,IAAI,SAAU/4C,GAAK/b,GAAG,CACxC,IAAI/C,GAAM8e,GAAI,IACd,OAAoBvC,EAAM,cAAc8xJ,GAAS,CAC/C,GAAIjtJ,EACJ,UAAWugC,EACX,IAAK3hD,GACL,IAAK8e,GAEL,MAAO/b,KAAM,EAAI,OAAYuwK,GAC7B,SAAUx0J,GAAI,SACd,SAAU28F,EACV,OAAQz7G,KAAQgzJ,EAChB,MAAOhzJ,KAAQ0yK,GACf,cAAe/vJ,EACf,gBAAiB8rB,GAAW,KAA4B,OAASA,EAAO,gBACxE,SAAUu/H,GAAY,OACtB,gBAAiBjrK,GAAI,EACrB,QAAS,SAAiBrC,GAAG,CAC3B2sK,EAAWrtK,GAAKU,EAAC,CACnB,EACA,UAAWkuJ,GACX,QAAS,UAAmB,CACrBkkB,IACHH,GAAY3yK,EAAG,EAEjBoyK,GAAYpyK,EAAG,EACf6xK,GAAe,EACVlC,EAAe,UAIf3vC,IACH2vC,EAAe,QAAQ,WAAa,GAEtCA,EAAe,QAAQ,UAAY,EACrC,EACA,OAAQ,UAAkB,CACxBgD,GAAY,MAAS,CACvB,EACA,YAAa,UAAuB,CAClCI,GAAW,EAAI,CACjB,EACA,UAAW,UAAqB,CAC9BA,GAAW,EAAK,CAClB,CACN,CAAK,CACH,CAAC,EAGGS,GAAiB,UAA0B,CAC7C,OAAOzC,GAAY,UAAY,CAC7B,IAAI0C,GACAC,GAAW,IAAI,IACfC,IAAYF,GAAsB7D,EAAW,WAAa,MAAQ6D,KAAwB,OAAS,OAASA,GAAoB,sBAAqB,EACzJ,OAAA57G,EAAK,QAAQ,SAAU1/C,GAAO,CAC5B,IAAIy7J,GACA5zK,GAAMmY,GAAM,IACZ07J,IAAWD,GAAuBhE,EAAW,WAAa,MAAQgE,KAAyB,OAAS,OAASA,GAAqB,cAAc,mBAAoB,OAAOjH,GAAe3sK,EAAG,EAAG,IAAK,CAAC,EAC1M,GAAI6zK,GAAS,CACX,IAAIC,GAAcjF,GAAWgF,GAASF,EAAQ,EAC5CI,GAAergJ,GAAeogJ,GAAa,CAAC,EAC5C3mJ,GAAQ4mJ,GAAa,CAAC,EACtB3mJ,GAAS2mJ,GAAa,CAAC,EACvBx7I,GAAOw7I,GAAa,CAAC,EACrBrrG,GAAMqrG,GAAa,CAAC,EACtBL,GAAS,IAAI1zK,GAAK,CAChB,MAAOmtB,GACP,OAAQC,GACR,KAAMmL,GACN,IAAKmwC,EACjB,CAAW,CACH,CACF,CAAC,EACMgrG,EACT,CAAC,CACH,EACAn+J,EAAAA,UAAU,UAAY,CACpBi+J,GAAc,CAChB,EAAG,CAAC37G,EAAK,IAAI,SAAU/4C,GAAK,CAC1B,OAAOA,GAAI,GACb,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,EACb,IAAIk1J,GAAqBzI,GAAU,UAAY,CAE7C,IAAIhiC,GAAgBnF,GAAQ/5D,CAAY,EACpC4pG,GAAgB7vC,GAAQqrC,CAAY,EACpCyE,GAAiB9vC,GAAQsrC,CAAa,EAC1CY,EAA6B,CAAC/mC,GAAc,CAAC,EAAI0qC,GAAc,CAAC,EAAIC,GAAe,CAAC,EAAG3qC,GAAc,CAAC,EAAI0qC,GAAc,CAAC,EAAIC,GAAe,CAAC,CAAC,CAAC,EAC/I,IAAIC,GAAa/vC,GAAQ0rC,CAAiB,EAC1CY,EAAWyD,EAAU,EACrB,IAAIC,GAAmBhwC,GAAQyrC,CAAa,EAC5Ce,GAAiBwD,EAAgB,EAGjC,IAAIC,GAAqBjwC,GAAQwrC,CAAU,EAC3CY,GAAkB,CAAC6D,GAAmB,CAAC,EAAIF,GAAW,CAAC,EAAGE,GAAmB,CAAC,EAAIF,GAAW,CAAC,CAAC,CAAC,EAGhGX,GAAc,CAChB,CAAC,EAGGc,GAAkBz8G,EAAK,MAAM,EAAGq6G,EAAY,EAC5CqC,GAAgB18G,EAAK,MAAMs6G,GAAa,CAAC,EACzCqC,GAAa,CAAA,EAAG,OAAOliJ,GAAmBgiJ,EAAe,EAAGhiJ,GAAmBiiJ,EAAa,CAAC,EAG7FhM,GAAkByD,GAAW,IAAIhZ,CAAS,EAC1CyhB,GAAgBnM,GAAa,CAC7B,gBAAiBC,GACjB,WAAY8G,EACZ,UAAW5G,EACX,IAAKzoC,CACX,CAAK,EACD00C,GAAiBD,GAAc,MAGjCl/J,EAAAA,UAAU,UAAY,CACpB68J,GAAW,CACb,EAAG,CAACpf,EAAWqe,GAAcC,GAAcpsI,GAAUqjI,EAAe,EAAGrjI,GAAU8mI,EAAU,EAAGqD,CAAsB,CAAC,EAGrH95J,EAAAA,UAAU,UAAY,CACpBy+J,GAAkB,CAEpB,EAAG,CAACh0C,CAAG,CAAC,EAGR,IAAI20C,GAAc,CAAC,CAACH,GAAW,OAC3BI,GAAa,GAAG,OAAOjzH,EAAW,WAAW,EAC7CkzH,GACAC,GACAC,GACAC,GACJ,OAAI3F,EACErvC,GACF80C,GAAY/E,EAAgB,EAC5B8E,GAAW9E,IAAkBuB,KAE7BuD,GAAW9E,EAAgB,EAC3B+E,GAAY/E,IAAkBsB,KAGhC0D,GAAU5E,EAAe,EACzB6E,GAAa7E,IAAiBkB,IAEZ90J,EAAM,cAAckS,GAAgB,CACtD,SAAUulJ,EACd,EAAkBz3J,EAAM,cAAc,MAAO,CACzC,IAAKuM,GAAczT,EAAKg1D,CAAY,EACpC,KAAM,UACN,mBAAoBglG,EAAyB,aAAe,WAC5D,UAAWttJ,GAAW,GAAG,OAAO4/B,EAAW,MAAM,EAAGga,CAAS,EAC7D,MAAO1jC,EACP,UAAW,UAAqB,CAE9B45I,GAAe,CACjB,CACJ,EAAkBt1J,EAAM,cAAcuwJ,GAAc,CAChD,IAAK2C,EACL,SAAU,OACV,MAAOxvC,EACP,UAAWt+E,CACf,CAAG,EAAgBplC,EAAM,cAAckS,GAAgB,CACnD,SAAUulJ,EACd,EAAkBz3J,EAAM,cAAc,MAAO,CACzC,UAAWwF,GAAW6yJ,GAAYjxJ,EAAgBA,EAAgBA,EAAgBA,EAAgB,CAAA,EAAI,GAAG,OAAOixJ,GAAY,YAAY,EAAGC,EAAQ,EAAG,GAAG,OAAOD,GAAY,aAAa,EAAGE,EAAS,EAAG,GAAG,OAAOF,GAAY,WAAW,EAAGG,EAAO,EAAG,GAAG,OAAOH,GAAY,cAAc,EAAGI,EAAU,CAAC,EACxS,IAAKrF,CACT,EAAkBpzJ,EAAM,cAAckS,GAAgB,CAClD,SAAUulJ,EACd,EAAkBz3J,EAAM,cAAc,MAAO,CACzC,IAAKqzJ,EACL,UAAW,GAAG,OAAOjuH,EAAW,WAAW,EAC3C,MAAO,CACL,UAAW,aAAa,OAAOouH,EAAe,MAAM,EAAE,OAAOI,EAAc,KAAK,EAChF,WAAYwB,GAAgB,OAAS,MAC3C,CACA,EAAK4B,GAAuBh3J,EAAM,cAAcswJ,GAAW,CACvD,IAAKiD,EACL,UAAWnuH,EACX,OAAQlT,EACR,SAAUgtE,EACV,MAAO/pF,EAAcA,EAAc,CAAA,EAAI6hJ,GAAS,SAAW,EAAI,OAAYD,EAAY,EAAG,GAAI,CAC5F,WAAYqB,GAAc,SAAW,IAC3C,CAAK,CACL,CAAG,EAAgBp4J,EAAM,cAAc,MAAO,CAC1C,UAAWwF,GAAW,GAAG,OAAO4/B,EAAW,UAAU,EAAGh+B,EAAgB,CAAA,EAAI,GAAG,OAAOg+B,EAAW,mBAAmB,EAAG4tH,EAAS,MAAM,CAAC,EACvI,MAAOmF,EACX,CAAG,CAAC,CAAC,CAAC,CAAC,EAAgBn4J,EAAM,cAAcywJ,GAAe5qJ,GAAS,CAAA,EAAIxM,EAAO,CAC1E,gBAAiB64B,GAAW,KAA4B,OAASA,EAAO,gBACxE,IAAKohI,EACL,UAAWluH,EACX,KAAM6yH,GACN,UAAW,CAACG,IAAevD,GAC3B,UAAW,CAAC,CAACO,EACjB,CAAG,CAAC,EAAgBp1J,EAAM,cAAcuwJ,GAAc,CAClD,IAAK4C,EACL,SAAU,QACV,MAAOzvC,EACP,UAAWt+E,CACf,CAAG,CAAC,CAAC,CAEL,CAAC,ECtlBGszH,GAAuB14J,EAAM,WAAW,SAAU3G,EAAOP,EAAK,CAChE,IAAIssC,EAAY/rC,EAAM,UACpB+lD,EAAY/lD,EAAM,UAClBqiB,EAAQriB,EAAM,MACdwL,EAAKxL,EAAM,GACX05C,EAAS15C,EAAM,OACfs/J,EAASt/J,EAAM,OACf+M,EAAW/M,EAAM,SACnB,OAAoB2G,EAAM,cAAc,MAAO,CAC7C,GAAI6E,GAAM,GAAG,OAAOA,EAAI,SAAS,EAAE,OAAO8zJ,CAAM,EAChD,KAAM,WACN,SAAU5lH,EAAS,EAAI,GACvB,kBAAmBluC,GAAM,GAAG,OAAOA,EAAI,OAAO,EAAE,OAAO8zJ,CAAM,EAC7D,cAAe,CAAC5lH,EAChB,MAAOr3B,EACP,UAAWlW,GAAW4/B,EAAW2N,GAAU,GAAG,OAAO3N,EAAW,SAAS,EAAGga,CAAS,EACrF,IAAKtmD,CACT,EAAKsN,CAAQ,CACb,CAAC,EACG,QAAQ,IAAI,WAAa,eAC3BsyJ,GAAQ,YAAc,WCnBxB,IAAI/sH,GAAY,CAAC,cAAc,EAC7BqK,GAAa,CAAC,QAAS,KAAK,EAQ1B4iH,GAAoB,SAA2Bl9J,EAAM,CACvD,IAAIm9J,EAAen9J,EAAK,aACtBk7C,EAAY38B,GAAyBve,EAAMiwC,EAAS,EAClDtqB,EAAoBrhB,EAAM,WAAW8rJ,EAAU,EACjDxwG,EAAOj6B,EAAkB,KAC3B,GAAIw3I,EAAc,CAChB,IAAIC,EAAiB3jJ,EAAcA,EAAc,CAAA,EAAIyhC,CAAS,EAAG,GAAI,CAEnE,MAAO0E,EAAK,IAAI,SAAU1/C,EAAO,CAC/B,IAAIqmG,EAAQrmG,EAAM,MAChBnY,EAAMmY,EAAM,IACZm9J,EAAe9+I,GAAyBre,EAAOo6C,EAAU,EAC3D,OAAoBh2C,EAAM,cAAc04J,GAAS7yJ,GAAS,CACxD,IAAKo8F,EACL,IAAKx+G,EACL,OAAQA,CAClB,EAAWs1K,CAAY,CAAC,CAClB,CAAC,CACP,CAAK,EACD,OAAOF,EAAaC,EAAgB/F,EAAU,CAChD,CACA,OAAoB/yJ,EAAM,cAAc+yJ,GAAYn8G,CAAS,CAC/D,EACI,QAAQ,IAAI,WAAa,eAC3BgiH,GAAkB,YAAc,qBChClC,IAAIjtH,GAAY,CAAC,MAAO,cAAe,QAAS,YAAa,wBAAwB,EAMjFqtH,GAAe,SAAsB3/J,EAAO,CAC9C,IAAIwL,EAAKxL,EAAM,GACbo9I,EAAYp9I,EAAM,UAClB25J,EAAW35J,EAAM,SACjB02J,EAAc12J,EAAM,YACpB4/J,EAAyB5/J,EAAM,uBAC7BgoB,EAAoBrhB,EAAM,WAAW8rJ,EAAU,EACjD1mH,EAAY/jB,EAAkB,UAC9Bi6B,EAAOj6B,EAAkB,KACvB63I,EAAkBlG,EAAS,QAC3BmG,EAAmB,GAAG,OAAO/zH,EAAW,UAAU,EACtD,OAAoBplC,EAAM,cAAc,MAAO,CAC7C,UAAWwF,GAAW,GAAG,OAAO4/B,EAAW,iBAAiB,CAAC,CACjE,EAAkBplC,EAAM,cAAc,MAAO,CACzC,UAAWwF,GAAW,GAAG,OAAO4/B,EAAW,UAAU,EAAG,GAAG,OAAOA,EAAW,WAAW,EAAE,OAAO2qH,CAAW,EAAG3oJ,EAAgB,CAAA,EAAI,GAAG,OAAOg+B,EAAW,mBAAmB,EAAG8zH,CAAe,CAAC,CAClM,EAAK59G,EAAK,IAAI,SAAUn+B,EAAM,CAC1B,IAAI15B,EAAM05B,EAAK,IACby2B,EAAcz2B,EAAK,YACnBi8I,EAAYj8I,EAAK,MACjBk8I,EAAgBl8I,EAAK,UACrBm8I,EAA6Bn8I,EAAK,uBAClC47I,EAAe9+I,GAAyBkD,EAAMwuB,EAAS,EACrDoH,EAAStvD,IAAQgzJ,EACrB,OAAoBz2I,EAAM,cAAcwzC,GAAW3tC,GAAS,CAC1D,IAAKpiB,EACL,QAASsvD,EACT,YAAaa,EACb,cAAe,CAAC,EAAEqlH,GAA0BK,GAC5C,gBAAiB,GAAG,OAAOH,EAAkB,SAAS,CAC5D,EAAOnG,EAAS,aAAa,EAAG,SAAUt3J,EAAM5C,EAAK,CAC/C,IAAI2sD,EAAc/pD,EAAK,MACrB8pD,EAAkB9pD,EAAK,UACzB,OAAoBsE,EAAM,cAAc04J,GAAS7yJ,GAAS,CAAA,EAAIkzJ,EAAc,CAC1E,UAAWI,EACX,GAAIt0J,EACJ,OAAQphB,EACR,SAAUy1K,EACV,OAAQnmH,EACR,MAAO59B,EAAcA,EAAc,CAAA,EAAIikJ,CAAS,EAAG3zG,CAAW,EAC9D,UAAWjgD,GAAW6zJ,EAAe7zG,CAAe,EACpD,IAAK1sD,CACb,CAAO,CAAC,CACJ,CAAC,CACH,CAAC,CAAC,CAAC,CACL,ECnDe,SAASygK,IAAmB,CACzC,IAAIvG,EAAW,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CACjF,OAAQ,GACR,QAAS,EACb,EACMwG,EACJ,OAAIxG,IAAa,GACfwG,EAAiB,CACf,OAAQ,GACR,QAAS,EACf,EACaxG,IAAa,GACtBwG,EAAiB,CACf,OAAQ,GACR,QAAS,EACf,EAEIA,EAAiBrkJ,EAAc,CAC7B,OAAQ,EACd,EAAOrP,GAAQktJ,CAAQ,IAAM,SAAWA,EAAW,CAAA,CAAE,EAI/CwG,EAAe,eAAiBA,EAAe,UAAY,SAC7DA,EAAe,QAAU,IAEvB,CAACA,EAAe,eAAiBA,EAAe,UAC9C,QAAQ,IAAI,WAAa,cAC3B/yJ,GAAQ,GAAO,gGAAgG,EAEjH+yJ,EAAe,QAAU,IAEpBA,CACT,CC9BA,IAAI7tH,GAAY,CAAC,KAAM,YAAa,YAAa,QAAS,YAAa,YAAa,mBAAoB,WAAY,WAAY,cAAe,eAAgB,cAAe,qBAAsB,SAAU,OAAQ,yBAA0B,eAAgB,WAAY,aAAc,cAAe,oBAAqB,iBAAkB,WAAW,EAsBvVvuB,GAAO,EACPq8I,GAAoBz5J,EAAM,WAAW,SAAU3G,EAAOP,EAAK,CAC7D,IAAI+L,EAAKxL,EAAM,GACb+8D,EAAmB/8D,EAAM,UACzB+rC,EAAYgxB,IAAqB,OAAS,UAAYA,EACtDhX,EAAY/lD,EAAM,UAClBquF,EAAQruF,EAAM,MACd+kC,EAAY/kC,EAAM,UAClBo9I,EAAYp9I,EAAM,UAClBqgK,EAAmBrgK,EAAM,iBACzB6lG,EAAW7lG,EAAM,SACjB25J,EAAW35J,EAAM,SACjBsgK,EAAqBtgK,EAAM,YAC3B02J,EAAc4J,IAAuB,OAAS,MAAQA,EACtD/I,EAAev3J,EAAM,aACrBugK,EAAcvgK,EAAM,YACpBwgK,EAAqBxgK,EAAM,mBAC3B64B,EAAS74B,EAAM,OACfygK,EAAOzgK,EAAM,KACb4/J,EAAyB5/J,EAAM,uBAC/Bw/J,EAAex/J,EAAM,aACrBkoC,EAAWloC,EAAM,SACjBy3J,EAAaz3J,EAAM,WACnB45J,EAAc55J,EAAM,YACpBglC,EAAoBhlC,EAAM,kBAC1B87G,EAAiB97G,EAAM,eACvB6yJ,EAAY7yJ,EAAM,UAClBu9C,EAAY38B,GAAyB5gB,EAAOsyC,EAAS,EACnD2P,EAAOt7C,EAAM,QAAQ,UAAY,CACnC,OAAQ0nF,GAAS,CAAA,GAAI,OAAO,SAAUvqE,EAAM,CAC1C,OAAOA,GAAQrX,GAAQqX,CAAI,IAAM,UAAY,QAASA,CACxD,CAAC,CACH,EAAG,CAACuqE,CAAK,CAAC,EACN+7B,EAAMrlF,IAAc,MACpBo7H,EAAiBD,GAAiBvG,CAAQ,EAG1CvxH,EAAYrnC,EAAAA,SAAS,EAAK,EAC5BsnC,EAAavqB,GAAesqB,EAAW,CAAC,EACxCylE,EAASxlE,EAAW,CAAC,EACrBo0E,EAAYp0E,EAAW,CAAC,EAC1B1oC,EAAAA,UAAU,UAAY,CAEpB88G,EAAUC,GAAQ,CAAE,CACtB,EAAG,CAAA,CAAE,EAGL,IAAIxgD,EAAkBl0B,GAAe,UAAY,CAC7C,IAAI0rH,EACJ,OAAQA,EAASzxG,EAAK,CAAC,KAAO,MAAQyxG,IAAW,OAAS,OAASA,EAAO,GAC5E,EAAG,CACD,MAAOtW,EACP,aAAcijB,CACpB,CAAK,EACDlkG,EAAmBr+C,GAAeo+C,EAAiB,CAAC,EACpD2tF,EAAkB1tF,EAAiB,CAAC,EACpC2tF,EAAqB3tF,EAAiB,CAAC,EACrCxzB,EAAa5nC,EAAAA,SAAS,UAAY,CAClC,OAAOkhD,EAAK,UAAU,SAAU/4C,EAAK,CACnC,OAAOA,EAAI,MAAQ2gJ,CACrB,CAAC,CACH,CAAC,EACDjhH,EAAa9qB,GAAe6qB,EAAY,CAAC,EACzC6zF,EAAc5zF,EAAW,CAAC,EAC1B6zF,GAAiB7zF,EAAW,CAAC,EAG/BjpC,EAAAA,UAAU,UAAY,CACpB,IAAI+gK,EAAiBz+G,EAAK,UAAU,SAAU/4C,GAAK,CACjD,OAAOA,GAAI,MAAQ2gJ,CACrB,CAAC,EACD,GAAI6W,IAAmB,GAAI,CACzB,IAAIC,GACJD,EAAiB,KAAK,IAAI,EAAG,KAAK,IAAIlkC,EAAav6E,EAAK,OAAS,CAAC,CAAC,EACnE6nG,GAAoB6W,GAAuB1+G,EAAKy+G,CAAc,KAAO,MAAQC,KAAyB,OAAS,OAASA,GAAqB,GAAG,CAClJ,CACAlkC,GAAeikC,CAAc,CAC/B,EAAG,CAACz+G,EAAK,IAAI,SAAU/4C,EAAK,CAC1B,OAAOA,EAAI,GACb,CAAC,EAAE,KAAK,GAAG,EAAG2gJ,EAAiBrtB,CAAW,CAAC,EAG3C,IAAIuG,GAAmB/6F,GAAe,KAAM,CACxC,MAAOx8B,CACb,CAAK,EACDw3H,GAAmBllH,GAAeilH,GAAkB,CAAC,EACrDhB,GAAWiB,GAAiB,CAAC,EAC7B49B,GAAc59B,GAAiB,CAAC,EAGlCrjI,EAAAA,UAAU,UAAY,CACf6L,IACHo1J,GAAY,WAAW,OAAO,QAAQ,IAAI,WAAa,OAAS,OAAS78I,EAAI,CAAC,EAC9EA,IAAQ,EAEZ,EAAG,CAAA,CAAE,EAGL,SAAS88I,EAAmBz2K,EAAKU,GAAG,CAClC2sK,GAAe,MAAiCA,EAAWrtK,EAAKU,EAAC,EACjE,IAAIg2K,GAAkB12K,IAAQy/J,EAC9BC,EAAmB1/J,CAAG,EAClB02K,KACF54H,GAAa,MAA+BA,EAAS99C,CAAG,EAE5D,CAGA,IAAIygH,EAAc,CAChB,GAAIk3B,GACJ,UAAW8nB,EACX,SAAUsW,EACV,YAAazJ,EACb,IAAKtsC,EACL,OAAQvc,CACZ,EACM4xD,GAAiB3jJ,EAAcA,EAAc,CAAA,EAAI+uF,CAAW,EAAG,GAAI,CACrE,SAAUhF,EACV,OAAQhtE,EACR,KAAM4nI,EACN,aAAclJ,EACd,WAAYsJ,EACZ,YAAajH,EACb,MAAO4G,EACP,MAAOD,EACP,MAAO,KACP,kBAAmBv7H,EACnB,eAAgB82E,EAChB,UAAW+2C,CACf,CAAG,EACD,OAAoBlsJ,EAAM,cAAc8rJ,GAAW,SAAU,CAC3D,MAAO,CACL,KAAMxwG,EACN,UAAWlW,CACjB,CACA,EAAkBplC,EAAM,cAAc,MAAO6F,GAAS,CAClD,IAAK/M,EACL,GAAI+L,EACJ,UAAWW,GAAW4/B,EAAW,GAAG,OAAOA,EAAW,GAAG,EAAE,OAAO2qH,CAAW,EAAG3oJ,EAAgBA,EAAgBA,EAAgB,CAAA,EAAI,GAAG,OAAOg+B,EAAW,SAAS,EAAG8hE,CAAM,EAAG,GAAG,OAAO9hE,EAAW,WAAW,EAAG85D,CAAQ,EAAG,GAAG,OAAO95D,EAAW,MAAM,EAAGq+E,CAAG,EAAGrkE,CAAS,CAC7Q,EAAKxI,CAAS,EAAgB52C,EAAM,cAAc44J,GAAmB/yJ,GAAS,CAAA,EAAIizJ,GAAgB,CAC9F,aAAcD,CAClB,CAAG,CAAC,EAAgB74J,EAAM,cAAcg5J,GAAcnzJ,GAAS,CAC3D,uBAAwBozJ,CAC5B,EAAK/0D,EAAa,CACd,SAAUs1D,CACd,CAAG,CAAC,CAAC,CAAC,CACN,CAAC,EACG,QAAQ,IAAI,WAAa,eAC3BC,GAAK,YAAc,QC/KrB,MAAMniH,GAAS,CACb,aAAc,GACd,YAAa,GACb,YAAa,EACf,EACe,SAASiiH,GAAiBn0H,EAAW4tH,EAAW,CAC7D,OAAQ,GACR,QAAS,EACX,EAAG,CACD,IAAIwG,EACJ,OAAIxG,IAAa,GACfwG,EAAiB,CACf,OAAQ,GACR,QAAS,EACf,EACaxG,IAAa,GACtBwG,EAAiB,CACf,OAAQ,GACR,QAAS,EACf,EAEIA,EAAiB,OAAO,OAAO,CAC7B,OAAQ,EACd,EAAO,OAAOxG,GAAa,SAAWA,EAAW,CAAA,CAAE,EAE7CwG,EAAe,UACjBA,EAAe,cAAgB,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIliH,EAAM,EAAG,CACtE,WAAYxJ,GAAkB1I,EAAW,QAAQ,CACvD,CAAK,GAEIo0H,CACT,CChCA,IAAIrxH,GAAgC,SAAU/kD,EAAGe,EAAG,CAClD,IAAId,EAAI,CAAA,EACR,QAASe,KAAKhB,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGgB,CAAC,GAAKD,EAAE,QAAQC,CAAC,EAAI,IAAGf,EAAEe,CAAC,EAAIhB,EAAEgB,CAAC,GAC/F,GAAIhB,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WAAY,QAAS,EAAI,EAAGgB,EAAI,OAAO,sBAAsBhB,CAAC,EAAG,EAAIgB,EAAE,OAAQ,IAClID,EAAE,QAAQC,EAAE,CAAC,CAAC,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKhB,EAAGgB,EAAE,CAAC,CAAC,IAAGf,EAAEe,EAAE,CAAC,CAAC,EAAIhB,EAAEgB,EAAE,CAAC,CAAC,GAElG,OAAOf,CACT,EAIA,SAAS+2K,GAAO1yE,EAAO,CACrB,OAAOA,EAAM,OAAOvqE,GAAQA,CAAI,CAClC,CACA,SAASk9I,GAAe3yE,EAAOthF,EAAU,CAKvC,GAJI,QAAQ,IAAI,WAAa,cACXsrB,GAAc,MAAM,EAC5B,WAAW,CAACtrB,EAAU,eAAgB,OAAO,EAEnDshF,EACF,OAAOA,EAAM,IAAIvqE,GAAQ,CACvB,IAAIj2B,EACJ,MAAMozK,GAAyBpzK,EAAKi2B,EAAK,mBAAqB,MAAQj2B,IAAO,OAASA,EAAKi2B,EAAK,uBAChG,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIA,CAAI,EAAG,CAE5C,uBAAwBm9I,CAChC,CAAO,CACH,CAAC,EAEH,MAAMC,EAAgBp0J,GAAQC,CAAQ,EAAE,IAAIqB,GAAQ,CAClD,GAAiBzH,EAAM,eAAeyH,CAAI,EAAG,CAC3C,KAAM,CACJ,IAAAhkB,EACA,MAAA4V,CACR,EAAUoO,EACEvgB,EAAKmS,GAAS,CAAA,EAClB,CACE,IAAAkJ,CACV,EAAYrb,EACJ0vD,EAAYzO,GAAOjhD,EAAI,CAAC,KAAK,CAAC,EAMhC,OALa,OAAO,OAAO,OAAO,OAAO,CACvC,IAAK,OAAOzD,CAAG,CACvB,EAASmzD,CAAS,EAAG,CACb,MAAOr0C,CACf,CAAO,CAEH,CACA,OAAO,IACT,CAAC,EACD,OAAO63J,GAAOG,CAAa,CAC7B,CCjDA,MAAMC,GAAiBl9I,GAAS,CAC9B,KAAM,CACJ,aAAA0pB,EACA,mBAAAg1B,CACJ,EAAM1+C,EACJ,MAAO,CAAC,CACN,CAAC0pB,CAAY,EAAG,CACd,CAAC,GAAGA,CAAY,SAAS,EAAG,CAC1B,oBAAqB,CACnB,WAAY,OACZ,UAAW,CACT,QAAS,CACrB,EACU,WAAY,CACV,QAAS,EACT,WAAY,WAAWg1B,CAAkB,EACrD,CACA,EACQ,UAAW,CACT,SAAU,WACV,WAAY,OACZ,MAAO,EACP,UAAW,CACT,QAAS,CACrB,EACU,WAAY,CACV,QAAS,EACT,WAAY,WAAWA,CAAkB,EACrD,CACA,CACA,CACA,CACA,EAEE,CAACjC,GAAgBz8C,EAAO,UAAU,EAAGy8C,GAAgBz8C,EAAO,YAAY,CAAC,CAAC,CAC5E,EChCMm9I,GAAen9I,GAAS,CAC5B,KAAM,CACJ,aAAA0pB,EACA,gBAAA0zH,EACA,OAAAC,EACA,WAAAC,EACA,qBAAAC,EACA,kBAAAC,CACJ,EAAMx9I,EACJ,MAAO,CACL,CAAC,GAAG0pB,CAAY,OAAO,EAAG,CACxB,CAAC,KAAKA,CAAY,iBAAiBA,CAAY,MAAM,EAAG,CACtD,CAAC,GAAGA,CAAY,MAAM,EAAG,CACvB,OAAQ,EACR,QAAS0zH,EACT,WAAYC,EACZ,OAAQ,GAAGv8I,GAAKd,EAAM,SAAS,CAAC,IAAIA,EAAM,QAAQ,IAAIu9I,CAAoB,GAC1E,WAAY,OAAOv9I,EAAM,kBAAkB,IAAIA,EAAM,eAAe,EAC9E,EACQ,CAAC,GAAG0pB,CAAY,aAAa,EAAG,CAC9B,MAAO8zH,EACP,WAAYx9I,EAAM,gBAC5B,EACQ,CAAC,GAAG0pB,CAAY,kBAAkBA,CAAY,yBAAyB,EAAGkD,GAAgB5sB,EAAO,EAAE,EACnG,CAAC,KAAK0pB,CAAY,OAAOA,CAAY,cAAcA,CAAY,wBAAwB,EAAG,CACxF,QAAS,MACnB,EACQ,CAAC,GAAGA,CAAY,UAAU,EAAG,CAC3B,WAAY,QACtB,CACA,EAEM,CAAC,IAAIA,CAAY,UAAUA,CAAY,SAAS,EAAG,CACjD,CAAC,KAAKA,CAAY,iBAAiBA,CAAY,MAAM,EAAG,CACtD,CAAC,GAAGA,CAAY,UAAUA,CAAY,MAAM,EAAG,CAC7C,WAAY,CACV,aAAc,GACd,MAAO5oB,GAAKw8I,CAAU,CACpC,CACA,CACA,CACA,EACM,CAAC,IAAI5zH,CAAY,MAAM,EAAG,CACxB,CAAC,KAAKA,CAAY,iBAAiBA,CAAY,MAAM,EAAG,CACtD,CAAC,GAAGA,CAAY,MAAM,EAAG,CACvB,aAAc,GAAG5oB,GAAKd,EAAM,cAAc,CAAC,IAAIc,GAAKd,EAAM,cAAc,CAAC,MACrF,EACU,CAAC,GAAG0pB,CAAY,aAAa,EAAG,CAC9B,kBAAmB1pB,EAAM,gBACrC,CACA,CACA,EACM,CAAC,IAAI0pB,CAAY,SAAS,EAAG,CAC3B,CAAC,KAAKA,CAAY,iBAAiBA,CAAY,MAAM,EAAG,CACtD,CAAC,GAAGA,CAAY,MAAM,EAAG,CACvB,aAAc,OAAO5oB,GAAKd,EAAM,cAAc,CAAC,IAAIc,GAAKd,EAAM,cAAc,CAAC,EACzF,EACU,CAAC,GAAG0pB,CAAY,aAAa,EAAG,CAC9B,eAAgB1pB,EAAM,gBAClC,CACA,CACA,EAEM,CAAC,IAAI0pB,CAAY,WAAWA,CAAY,QAAQ,EAAG,CACjD,CAAC,KAAKA,CAAY,iBAAiBA,CAAY,MAAM,EAAG,CACtD,CAAC,GAAGA,CAAY,UAAUA,CAAY,MAAM,EAAG,CAC7C,UAAW5oB,GAAKw8I,CAAU,CACtC,CACA,CACA,EACM,CAAC,IAAI5zH,CAAY,OAAO,EAAG,CACzB,CAAC,KAAKA,CAAY,iBAAiBA,CAAY,MAAM,EAAG,CACtD,CAAC,GAAGA,CAAY,MAAM,EAAG,CACvB,aAAc,CACZ,aAAc,GACd,MAAO,GAAG5oB,GAAKd,EAAM,cAAc,CAAC,QAAQc,GAAKd,EAAM,cAAc,CAAC,EACpF,CACA,EACU,CAAC,GAAG0pB,CAAY,aAAa,EAAG,CAC9B,iBAAkB,CAChB,aAAc,GACd,MAAO1pB,EAAM,gBAC3B,CACA,CACA,CACA,EACM,CAAC,IAAI0pB,CAAY,QAAQ,EAAG,CAC1B,CAAC,KAAKA,CAAY,iBAAiBA,CAAY,MAAM,EAAG,CACtD,CAAC,GAAGA,CAAY,MAAM,EAAG,CACvB,aAAc,CACZ,aAAc,GACd,MAAO,KAAK5oB,GAAKd,EAAM,cAAc,CAAC,IAAIc,GAAKd,EAAM,cAAc,CAAC,IAClF,CACA,EACU,CAAC,GAAG0pB,CAAY,aAAa,EAAG,CAC9B,gBAAiB,CACf,aAAc,GACd,MAAO1pB,EAAM,gBAC3B,CACA,CACA,CACA,CACA,CACA,CACA,EACM0oH,GAAmB1oH,GAAS,CAChC,KAAM,CACJ,aAAA0pB,EACA,eAAA+zH,EACA,iCAAAC,CACJ,EAAM19I,EACJ,MAAO,CACL,CAAC,GAAG0pB,CAAY,WAAW,EAAG,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIsC,GAAehsB,CAAK,CAAC,EAAG,CACpF,SAAU,WACV,IAAK,MACL,KAAM,CACJ,aAAc,GACd,MAAO,KACf,EACM,OAAQA,EAAM,YACd,QAAS,QACT,WAAY,CACV,QAAS,MACjB,EACM,CAAC,GAAG0pB,CAAY,gBAAgB,EAAG,CACjC,UAAW1pB,EAAM,mBACjB,OAAQ,EACR,QAAS,GAAGc,GAAK48I,CAAgC,CAAC,KAClD,UAAW,SACX,UAAW,OACX,UAAW,CACT,aAAc,GACd,MAAO,MACjB,EACQ,cAAe,OACf,gBAAiB19I,EAAM,iBACvB,eAAgB,cAChB,aAAcA,EAAM,eACpB,QAAS,OACT,UAAWA,EAAM,mBACjB,SAAU,OAAO,OAAO,OAAO,OAAO,CAAA,EAAI+rB,EAAY,EAAG,CACvD,QAAS,OACT,WAAY,SACZ,SAAU/rB,EAAM,kBAChB,OAAQ,EACR,QAAS,GAAGc,GAAKd,EAAM,UAAU,CAAC,IAAIc,GAAKd,EAAM,SAAS,CAAC,GAC3D,MAAOA,EAAM,UACb,WAAY,SACZ,SAAUA,EAAM,SAChB,WAAYA,EAAM,WAClB,OAAQ,UACR,WAAY,OAAOA,EAAM,kBAAkB,GAC3C,SAAU,CACR,KAAM,EACN,WAAY,QACxB,EACU,WAAY,CACV,KAAM,OACN,WAAY,CACV,aAAc,GACd,MAAOA,EAAM,QAC3B,EACY,MAAOA,EAAM,UACb,SAAUA,EAAM,WAChB,WAAY,cACZ,OAAQ,EACR,OAAQ,UACR,UAAW,CACT,MAAOy9I,CACrB,CACA,EACU,UAAW,CACT,WAAYz9I,EAAM,kBAC9B,EACU,aAAc,CACZ,aAAc,CACZ,MAAOA,EAAM,kBACb,WAAY,cACZ,OAAQ,aACtB,CACA,CACA,CAAS,CACT,CACA,CAAK,CACL,CACA,EACM29I,GAAmB39I,GAAS,CAChC,KAAM,CACJ,aAAA0pB,EACA,OAAAy5F,EACA,qBAAAo6B,EACA,iBAAAK,EACA,oBAAAC,EACA,mBAAAC,EACA,KAAA1lI,CACJ,EAAMpY,EACJ,MAAO,CAEL,CAAC,GAAG0pB,CAAY,SAASA,CAAY,SAAS,EAAG,CAC/C,cAAe,SACf,CAAC,KAAKA,CAAY,iBAAiBA,CAAY,MAAM,EAAG,CACtD,OAAQk0H,EACR,YAAa,CACX,SAAU,WACV,MAAO,CACL,aAAc,GACd,MAAO,CACnB,EACU,KAAM,CACJ,aAAc,GACd,MAAO,CACnB,EACU,aAAc,GAAG98I,GAAKd,EAAM,SAAS,CAAC,IAAIA,EAAM,QAAQ,IAAIu9I,CAAoB,GAChF,QAAS,IACnB,EACQ,CAAC,GAAG7zH,CAAY,UAAU,EAAG,CAC3B,OAAQ1pB,EAAM,cACd,aAAc,CACZ,WAAY,SAASA,EAAM,kBAAkB,UAAUA,EAAM,kBAAkB;AAAA,oBACvEA,EAAM,kBAAkB,EAC5C,CACA,EACQ,CAAC,GAAG0pB,CAAY,WAAW,EAAG,CAC5B,sBAAuB,CACrB,IAAK,EACL,OAAQ,EACR,MAAO1pB,EAAM,aACzB,EACU,YAAa,CACX,KAAM,CACJ,aAAc,GACd,MAAO,CACrB,EACY,UAAWA,EAAM,yBAC7B,EACU,WAAY,CACV,MAAO,CACL,aAAc,GACd,MAAO,CACrB,EACY,UAAWA,EAAM,0BAC7B,EACU,CAAC,IAAI0pB,CAAY,6BAA6B,EAAG,CAC/C,QAAS,CACrB,EACU,CAAC,IAAIA,CAAY,6BAA6B,EAAG,CAC/C,QAAS,CACrB,CACA,CACA,CACA,EACI,CAAC,GAAGA,CAAY,MAAM,EAAG,CACvB,CAAC,KAAKA,CAAY;AAAA,kBACNA,CAAY,MAAM,EAAG,CAC/B,YAAa,CACX,OAAQ,CAClB,EACQ,CAAC,GAAGA,CAAY,UAAU,EAAG,CAC3B,OAAQ,CAClB,CACA,CACA,EACI,CAAC,GAAGA,CAAY,SAAS,EAAG,CAC1B,CAAC,KAAKA,CAAY,iBAAiBA,CAAY,MAAM,EAAG,CACtD,MAAO,EACP,UAAWy5F,EACX,aAAc,EACd,YAAa,CACX,IAAK,CACf,EACQ,CAAC,GAAGz5F,CAAY,UAAU,EAAG,CAC3B,IAAK,CACf,CACA,EACM,CAAC,KAAKA,CAAY,4BAA4BA,CAAY,iBAAiB,EAAG,CAC5E,MAAO,CACf,CACA,EAEI,CAAC,GAAGA,CAAY,UAAUA,CAAY,QAAQ,EAAG,CAC/C,CAAC,KAAKA,CAAY,iBAAiBA,CAAY,MAAM,EAAG,CACtD,cAAe,SACf,SAAUtR,EAAKpY,EAAM,aAAa,EAAE,IAAI,IAAI,EAAE,MAAK,EAEnD,CAAC,GAAG0pB,CAAY,MAAM,EAAG,CACvB,QAASm0H,EACT,UAAW,QACrB,EACQ,CAAC,GAAGn0H,CAAY,UAAUA,CAAY,MAAM,EAAG,CAC7C,OAAQo0H,CAClB,EAEQ,CAAC,GAAGp0H,CAAY,WAAW,EAAG,CAC5B,cAAe,SACf,sBAAuB,CACrB,MAAO,CACL,aAAc,GACd,MAAO,CACrB,EACY,KAAM,CACJ,aAAc,GACd,MAAO,CACrB,EACY,OAAQ1pB,EAAM,aAC1B,EACU,YAAa,CACX,IAAK,EACL,UAAWA,EAAM,wBAC7B,EACU,WAAY,CACV,OAAQ,EACR,UAAWA,EAAM,2BAC7B,EACU,CAAC,IAAI0pB,CAAY,4BAA4B,EAAG,CAC9C,QAAS,CACrB,EACU,CAAC,IAAIA,CAAY,8BAA8B,EAAG,CAChD,QAAS,CACrB,CACA,EAEQ,CAAC,GAAGA,CAAY,UAAU,EAAG,CAC3B,MAAO1pB,EAAM,cACb,aAAc,CACZ,WAAY,UAAUA,EAAM,kBAAkB,SAASA,EAAM,kBAAkB,EAC3F,CACA,EACQ,CAAC,GAAG0pB,CAAY,cAAcA,CAAY,iBAAiB,EAAG,CAC5D,KAAM,WAEN,cAAe,QACzB,CACA,CACA,EACI,CAAC,GAAGA,CAAY,OAAO,EAAG,CACxB,CAAC,KAAKA,CAAY,iBAAiBA,CAAY,MAAM,EAAG,CACtD,CAAC,GAAGA,CAAY,UAAU,EAAG,CAC3B,MAAO,CACL,aAAc,GACd,MAAO,CACnB,CACA,CACA,EACM,CAAC,KAAKA,CAAY,4BAA4BA,CAAY,iBAAiB,EAAG,CAC5E,WAAY,CACV,aAAc,GACd,MAAO5oB,GAAKsX,EAAKpY,EAAM,SAAS,EAAE,IAAI,EAAE,EAAE,MAAK,CAAE,CAC3D,EACQ,WAAY,CACV,aAAc,GACd,MAAO,GAAGc,GAAKd,EAAM,SAAS,CAAC,IAAIA,EAAM,QAAQ,IAAIA,EAAM,WAAW,EAChF,EACQ,CAAC,KAAK0pB,CAAY,cAAcA,CAAY,UAAU,EAAG,CACvD,YAAa,CACX,aAAc,GACd,MAAO1pB,EAAM,SACzB,CACA,CACA,CACA,EACI,CAAC,GAAG0pB,CAAY,QAAQ,EAAG,CACzB,CAAC,KAAKA,CAAY,iBAAiBA,CAAY,MAAM,EAAG,CACtD,MAAO,EACP,CAAC,GAAGA,CAAY,UAAU,EAAG,CAC3B,KAAM,CACJ,aAAc,GACd,MAAO,CACnB,CACA,CACA,EACM,CAAC,KAAKA,CAAY,4BAA4BA,CAAY,iBAAiB,EAAG,CAC5E,MAAO,EACP,YAAa,CACX,aAAc,GACd,MAAOtR,EAAKpY,EAAM,SAAS,EAAE,IAAI,EAAE,EAAE,MAAK,CACpD,EACQ,YAAa,CACX,aAAc,GACd,MAAO,GAAGc,GAAKd,EAAM,SAAS,CAAC,IAAIA,EAAM,QAAQ,IAAIA,EAAM,WAAW,EAChF,EACQ,CAAC,KAAK0pB,CAAY,cAAcA,CAAY,UAAU,EAAG,CACvD,aAAc,CACZ,aAAc,GACd,MAAO1pB,EAAM,SACzB,CACA,CACA,CACA,CACA,CACA,EACMsmH,GAAetmH,GAAS,CAC5B,KAAM,CACJ,aAAA0pB,EACA,cAAAq0H,EACA,cAAAC,EACA,aAAAC,EACA,aAAAC,EACA,wBAAAC,EACA,wBAAAC,CACJ,EAAMp+I,EACJ,MAAO,CAEL,CAAC0pB,CAAY,EAAG,CACd,UAAW,CACT,CAAC,KAAKA,CAAY,MAAM,EAAG,CACzB,CAAC,GAAGA,CAAY,MAAM,EAAG,CACvB,QAASy0H,EACT,SAAUn+I,EAAM,eAC5B,CACA,CACA,EACM,UAAW,CACT,CAAC,KAAK0pB,CAAY,MAAM,EAAG,CACzB,CAAC,GAAGA,CAAY,MAAM,EAAG,CACvB,QAAS00H,EACT,SAAUp+I,EAAM,gBAChB,WAAYA,EAAM,YAC9B,CACA,CACA,CACA,EAEI,CAAC,GAAG0pB,CAAY,OAAO,EAAG,CAExB,CAAC,IAAIA,CAAY,QAAQ,EAAG,CAC1B,CAAC,KAAKA,CAAY,MAAM,EAAG,CACzB,CAAC,GAAGA,CAAY,MAAM,EAAG,CACvB,QAASq0H,CACrB,EACU,CAAC,GAAGr0H,CAAY,UAAU,EAAG,CAC3B,SAAUu0H,EACV,UAAWA,CACvB,CACA,EACQ,CAAC,IAAIv0H,CAAY,SAAS,EAAG,CAC3B,CAAC,KAAKA,CAAY,QAAQA,CAAY,MAAM,EAAG,CAC7C,aAAc,OAAO5oB,GAAKd,EAAM,YAAY,CAAC,IAAIc,GAAKd,EAAM,YAAY,CAAC,EACrF,CACA,EACQ,CAAC,IAAI0pB,CAAY,MAAM,EAAG,CACxB,CAAC,KAAKA,CAAY,QAAQA,CAAY,MAAM,EAAG,CAC7C,aAAc,GAAG5oB,GAAKd,EAAM,YAAY,CAAC,IAAIc,GAAKd,EAAM,YAAY,CAAC,MACjF,CACA,EACQ,CAAC,IAAI0pB,CAAY,QAAQ,EAAG,CAC1B,CAAC,KAAKA,CAAY,QAAQA,CAAY,MAAM,EAAG,CAC7C,aAAc,CACZ,aAAc,GACd,MAAO,KAAK5oB,GAAKd,EAAM,YAAY,CAAC,IAAIc,GAAKd,EAAM,YAAY,CAAC,IAC9E,CACA,CACA,EACQ,CAAC,IAAI0pB,CAAY,OAAO,EAAG,CACzB,CAAC,KAAKA,CAAY,QAAQA,CAAY,MAAM,EAAG,CAC7C,aAAc,CACZ,aAAc,GACd,MAAO,GAAG5oB,GAAKd,EAAM,YAAY,CAAC,QAAQc,GAAKd,EAAM,YAAY,CAAC,EAChF,CACA,CACA,CACA,EAEM,CAAC,IAAI0pB,CAAY,QAAQ,EAAG,CAC1B,CAAC,KAAKA,CAAY,MAAM,EAAG,CACzB,CAAC,GAAGA,CAAY,MAAM,EAAG,CACvB,QAASs0H,CACrB,EACU,CAAC,GAAGt0H,CAAY,UAAU,EAAG,CAC3B,SAAUw0H,EACV,UAAWA,CACvB,CACA,CACA,CACA,CACA,CACA,EACMG,GAAcr+I,GAAS,CAC3B,KAAM,CACJ,aAAA0pB,EACA,gBAAA40H,EACA,eAAAb,EACA,QAAAz3G,EACA,yBAAAu4G,EACA,sBAAAC,EACA,kBAAAhB,EACA,UAAAiB,CACJ,EAAMz+I,EACE0+I,EAAS,GAAGh1H,CAAY,OAC9B,MAAO,CACL,CAACg1H,CAAM,EAAG,CACR,SAAU,WACV,mBAAoB,OACpB,wBAAyB,cACzB,QAAS,cACT,WAAY,SACZ,QAASF,EACT,SAAUx+I,EAAM,cAChB,WAAY,cACZ,OAAQ,EACR,QAAS,OACT,OAAQ,UACR,MAAOy+I,EACP,kBAAmB,CACjB,wCAAyC,CACvC,MAAOH,CACjB,CACA,EACM,QAAS,CACP,QAAS,OACT,WAAY,OAAOt+I,EAAM,kBAAkB,GAC3C,CAAC,GAAG0+I,CAAM,wBAAwB,EAAG,CACnC,gBAAiB1+I,EAAM,QACjC,CACA,EACM,WAAY,OAAO,OAAO,CACxB,KAAM,OACN,YAAa,CACX,aAAc,GACd,MAAOA,EAAM,KAAKA,EAAM,SAAS,EAAE,IAAI,EAAE,EAAE,MAAK,CAC1D,EACQ,WAAY,CACV,aAAc,GACd,MAAOA,EAAM,QACvB,EACQ,MAAOA,EAAM,UACb,SAAUA,EAAM,WAChB,WAAY,cACZ,OAAQ,OACR,QAAS,OACT,OAAQ,UACR,WAAY,OAAOA,EAAM,kBAAkB,GAC3C,UAAW,CACT,MAAOA,EAAM,gBACvB,CACA,EAAS6sB,GAAc7sB,CAAK,CAAC,EACvB,UAAW,CACT,MAAOy9I,CACf,EACM,CAAC,IAAIiB,CAAM,WAAWA,CAAM,MAAM,EAAG,CACnC,MAAOlB,EACP,WAAYx9I,EAAM,oBAC1B,EACM,CAAC,IAAI0+I,CAAM,UAAUA,CAAM,oBAAoB,EAAG9xH,GAAgB5sB,CAAK,EACvE,CAAC,IAAI0+I,CAAM,WAAW,EAAG,CACvB,MAAO1+I,EAAM,kBACb,OAAQ,aAChB,EACM,CAAC,IAAI0+I,CAAM,aAAaA,CAAM,UAAUA,CAAM,aAAah1H,CAAY,SAAS,EAAG,CACjF,oBAAqB,CACnB,MAAO1pB,EAAM,iBACvB,CACA,EACM,CAAC,KAAK0+I,CAAM,WAAW14G,CAAO,EAAE,EAAG,CACjC,OAAQ,CAChB,EACM,CAAC,GAAGA,CAAO,mBAAmB,EAAG,CAC/B,YAAa,CACX,aAAc,GACd,MAAOhmC,EAAM,QACvB,CACA,CACA,EACI,CAAC,GAAG0+I,CAAM,MAAMA,CAAM,EAAE,EAAG,CACzB,OAAQ,CACN,aAAc,GACd,MAAOH,CACf,CACA,CACA,CACA,EACMI,GAAc3+I,GAAS,CAC3B,KAAM,CACJ,aAAA0pB,EACA,4BAAAk1H,EACA,QAAA54G,EACA,WAAAs3G,EACA,KAAAllI,CACJ,EAAMpY,EAEJ,MAAO,CACL,CAFa,GAAG0pB,CAAY,MAErB,EAAG,CACR,UAAW,MACX,CAAC,GAAGA,CAAY,MAAM,EAAG,CACvB,CAAC,GAAGA,CAAY,MAAM,EAAG,CACvB,OAAQ,CACN,aAAc,GACd,MAAOk1H,CACnB,EACU,CAAC,GAAGl1H,CAAY,mBAAmB,EAAG,CACpC,WAAY,CACV,aAAc,GACd,MAAO,CACrB,CACA,EACU,CAACsc,CAAO,EAAG,CACT,YAAa,CACX,aAAc,GACd,MAAO,CACrB,EACY,WAAY,CACV,aAAc,GACd,MAAOllC,GAAKd,EAAM,QAAQ,CACxC,CACA,EACU,CAAC,GAAG0pB,CAAY,aAAa,EAAG,CAC9B,YAAa,CACX,aAAc,GACd,MAAO5oB,GAAKd,EAAM,QAAQ,CACxC,EACY,WAAY,CACV,aAAc,GACd,MAAOc,GAAKsX,EAAKpY,EAAM,SAAS,EAAE,IAAI,EAAE,EAAE,MAAK,CAAE,CAC/D,EACY,CAACgmC,CAAO,EAAG,CACT,OAAQ,CACtB,CACA,CACA,CACA,EACM,CAAC,IAAItc,CAAY,OAAO,EAAG,CACzB,CAAC,KAAKA,CAAY,MAAM,EAAG,CACzB,MAAO,CACjB,EACQ,CAAC,KAAKA,CAAY,iBAAiB,EAAG,CACpC,MAAO,CACjB,CACA,EACM,CAAC,IAAIA,CAAY,QAAQ,EAAG,CAC1B,CAAC,KAAKA,CAAY,MAAM,EAAG,CACzB,MAAO,CACjB,EACQ,CAAC,KAAKA,CAAY,iBAAiB,EAAG,CACpC,MAAO,CACjB,CACA,EAEM,CAAC,IAAIA,CAAY,QAAQA,CAAY,UAAUA,CAAY,QAAQA,CAAY,SAAS,EAAG,CACzF,CAAC,KAAKA,CAAY,iBAAiBA,CAAY,MAAM,EAAG,CACtD,CAAC,GAAGA,CAAY,UAAUA,CAAY,MAAM,EAAG,CAC7C,YAAa,CACX,aAAc,GACd,MAAO4zH,CACrB,EACY,WAAY,CACV,aAAc,GACd,MAAO,CACrB,CACA,CACA,CACA,CACA,EACI,CAAC,GAAG5zH,CAAY,eAAe,EAAG,CAChC,UAAW,KACjB,EACI,CAAC,GAAGA,CAAY,YAAY,EAAG,CAC7B,CAAC,GAAGA,CAAY,eAAe,EAAG,CAChC,UAAW,CACT,aAAc,GACd,MAAO,OACjB,CACA,CACA,CACA,CACA,EACMm1H,GAAe7+I,GAAS,CAC5B,KAAM,CACJ,aAAA0pB,EACA,gBAAA0zH,EACA,WAAA0B,EACA,WAAAxB,EACA,eAAAG,EACA,gBAAAa,EACA,qBAAAf,CACJ,EAAMv9I,EACJ,MAAO,CACL,CAAC0pB,CAAY,EAAG,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIsC,GAAehsB,CAAK,CAAC,EAAG,CAClG,QAAS,OAET,CAAC,KAAK0pB,CAAY,iBAAiBA,CAAY,MAAM,EAAG,CACtD,SAAU,WACV,QAAS,OACT,KAAM,OACN,WAAY,SACZ,CAAC,GAAGA,CAAY,WAAW,EAAG,CAC5B,SAAU,WACV,QAAS,OACT,KAAM,OACN,UAAW,UACX,SAAU,SACV,WAAY,SACZ,UAAW,eAGX,sBAAuB,CACrB,SAAU,WACV,OAAQ,EACR,QAAS,EACT,WAAY,WAAW1pB,EAAM,kBAAkB,GAC/C,QAAS,KACT,cAAe,MAC3B,CACA,EACQ,CAAC,GAAG0pB,CAAY,WAAW,EAAG,CAC5B,SAAU,WACV,QAAS,OACT,WAAY,WAAW1pB,EAAM,kBAAkB,EACzD,EAEQ,CAAC,GAAG0pB,CAAY,iBAAiB,EAAG,CAClC,QAAS,OACT,UAAW,SACrB,EACQ,CAAC,GAAGA,CAAY,wBAAwB,EAAG,CACzC,SAAU,WACV,WAAY,SACZ,cAAe,MACzB,EACQ,CAAC,GAAGA,CAAY,WAAW,EAAG,CAC5B,SAAU,WACV,QAAS0zH,EACT,WAAY,cACZ,OAAQ,EACR,MAAOp9I,EAAM,UACb,WAAY,CACV,SAAU,WACV,MAAO,CACL,aAAc,GACd,MAAO,CACrB,EACY,OAAQ,EACR,KAAM,CACJ,aAAc,GACd,MAAO,CACrB,EACY,OAAQA,EAAM,KAAKA,EAAM,eAAe,EAAE,IAAI,CAAC,EAAE,MAAK,EACtD,UAAW,mBACX,QAAS,IACrB,CACA,EACQ,CAAC,GAAG0pB,CAAY,UAAU,EAAG,OAAO,OAAO,CACzC,SAAUo1H,EACV,UAAWA,EACX,WAAY,CACV,aAAc,GACd,MAAOxB,CACnB,EACU,WAAY,cACZ,OAAQ,GAAGx8I,GAAKd,EAAM,SAAS,CAAC,IAAIA,EAAM,QAAQ,IAAIu9I,CAAoB,GAC1E,aAAc,GAAGz8I,GAAKd,EAAM,cAAc,CAAC,IAAIc,GAAKd,EAAM,cAAc,CAAC,OACzE,QAAS,OACT,OAAQ,UACR,MAAOA,EAAM,UACb,WAAY,OAAOA,EAAM,kBAAkB,IAAIA,EAAM,eAAe,GACpE,UAAW,CACT,MAAOy9I,CACnB,EACU,wCAAyC,CACvC,MAAOa,CACnB,CACA,EAAWzxH,GAAc7sB,EAAO,EAAE,CAAC,CACnC,EACM,CAAC,GAAG0pB,CAAY,gBAAgB,EAAG,CACjC,KAAM,MACd,EAEM,CAAC,GAAGA,CAAY,UAAU,EAAG,CAC3B,SAAU,WACV,WAAY1pB,EAAM,YAClB,cAAe,MACvB,CACA,CAAK,EAAGq+I,GAAYr+I,CAAK,CAAC,EAAG,CAEvB,CAAC,GAAG0pB,CAAY,UAAU,EAAG,CAC3B,SAAU,WACV,MAAO,MACf,EACM,CAAC,GAAGA,CAAY,iBAAiB,EAAG,CAClC,KAAM,OACN,SAAU,EACV,UAAW,CACnB,EACM,CAAC,GAAGA,CAAY,UAAU,EAAG,OAAO,OAAO,OAAO,OAAO,CAAA,EAAImD,GAAc7sB,CAAK,CAAC,EAAG,CAClF,WAAY,CACV,QAAS,MACnB,CACA,CAAO,CACP,CAAK,EACD,CAAC,GAAG0pB,CAAY,WAAW,EAAG,CAC5B,CAAC,KAAKA,CAAY,iBAAiBA,CAAY,MAAM,EAAG,CACtD,CAAC,GAAGA,CAAY,WAAW,EAAG,CAC5B,CAAC,kBAAkBA,CAAY,uBAAuBA,CAAY,WAAW,EAAG,CAC9E,OAAQ,MACpB,CACA,CACA,CACA,CACA,CACA,EAgDAq1H,GAAe13H,GAAc,OAAQrnB,GAAS,CAC5C,MAAMg/I,EAAY/4H,GAAWjmB,EAAO,CAElC,gBAAiBA,EAAM,YACvB,iCAAkCA,EAAM,WACxC,qBAAsB,0BACtB,mBAAoB,IACpB,kBAAmB,IACnB,yBAA0B,SAASc,GAAKd,EAAM,oBAAoB,CAAC,GACnE,4BAA6B,SAASc,GAAKd,EAAM,oBAAoB,CAAC,EAC1E,CAAG,EACD,MAAO,CAACsmH,GAAa04B,CAAS,EAAGL,GAAYK,CAAS,EAAGrB,GAAiBqB,CAAS,EAAGt2B,GAAiBs2B,CAAS,EAAG7B,GAAa6B,CAAS,EAAGH,GAAaG,CAAS,EAAG9B,GAAe8B,CAAS,CAAC,CAChM,EA3DqCh/I,GAAS,CAC5C,KAAM,CACJ,WAAA8+I,EACA,aAAAb,EACA,aAAAC,EACA,cAAAtgI,EACA,gBAAA0uD,CACJ,EAAMtsE,EACEi/I,EAAmBH,GAAcxyE,EACjC4yE,EAAqBjB,GAAgBrgI,EAErCuhI,EAAqBjB,GAAgB5xE,EAAkB,EAC7D,MAAO,CACL,YAAatsE,EAAM,gBAAkB,GACrC,OAAQA,EAAM,eAGd,WAAYi/I,EACZ,aAAcC,EACd,aAAcC,EAEd,YAAa,IAAIF,EAAmBj/I,EAAM,YAAc,EAAIA,EAAM,SAAS,MAAMA,EAAM,OAAO,KAC9F,cAAe,IAAIk/I,EAAqBl/I,EAAM,YAAc,EAAIA,EAAM,SAAS,MAAMA,EAAM,SAAS,KACpG,cAAe,IAAIm/I,EAAqBn/I,EAAM,cAAgB,EAAIA,EAAM,SAAS,MAAMA,EAAM,OAAO,KACpG,cAAeA,EAAM,SACrB,gBAAiBA,EAAM,WACvB,gBAAiBA,EAAM,SACvB,YAAaA,EAAM,aACnB,iBAAkB,OAAOA,EAAM,MAAM,OACrC,qBAAsB,GAGtB,qBAAsB,GACtB,wBAAyB,GACzB,sBAAuB,GAAGA,EAAM,SAAS,OACzC,wBAAyB,GAAGA,EAAM,SAAS,OAC3C,wBAAyB,GAAGA,EAAM,OAAO,OACzC,oBAAqB,GAAGA,EAAM,SAAS,MAAMA,EAAM,SAAS,KAC5D,mBAAoB,GAAGA,EAAM,MAAM,WACnC,UAAWA,EAAM,UACjB,kBAAmBA,EAAM,aACzB,eAAgBA,EAAM,kBACtB,gBAAiBA,EAAM,mBACvB,WAAYA,EAAM,UAAY,CAClC,CACA,CAcwB,EC71BlBo7I,GAAU,IAAM,KAClB,QAAQ,IAAI,WAAa,eAC3BA,GAAQ,YAAc,qBCAxB,IAAIvwH,GAAgC,SAAU/kD,EAAGe,EAAG,CAClD,IAAId,EAAI,CAAA,EACR,QAASe,KAAKhB,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGgB,CAAC,GAAKD,EAAE,QAAQC,CAAC,EAAI,IAAGf,EAAEe,CAAC,EAAIhB,EAAEgB,CAAC,GAC/F,GAAIhB,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WAAY,QAAS,EAAI,EAAGgB,EAAI,OAAO,sBAAsBhB,CAAC,EAAG,EAAIgB,EAAE,OAAQ,IAClID,EAAE,QAAQC,EAAE,CAAC,CAAC,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKhB,EAAGgB,EAAE,CAAC,CAAC,IAAGf,EAAEe,EAAE,CAAC,CAAC,EAAIhB,EAAEgB,EAAE,CAAC,CAAC,GAElG,OAAOf,CACT,EAeA,MAAMo2K,GAAOpgK,GAAS,CACpB,IAAInS,EAAID,EAAIqN,EAAID,EAAIE,EAAI6mE,EAAIshG,EAAIC,EAAIC,EAAIC,EAAIC,EAC5C,KAAM,CACF,KAAA91K,EACA,UAAAo4D,EACA,cAAAY,EACA,KAAMgO,EACN,OAAA+uG,EACA,QAAAC,EACA,SAAAhtE,EACA,QAAAitE,EACA,WAAA78D,EACA,SAAA8wD,EACA,KAAA4I,EACA,eAAA3kD,EACA,SAAA/uG,EACA,MAAAshF,EACA,SAAAsrE,EACA,MAAAt3I,EACA,cAAAwhJ,EACA,UAAAhR,EACA,uBAAA+M,EACA,gBAAA9oE,CACN,EAAQ92F,EACJyrD,EAAa3c,GAAO9uC,EAAO,CAAC,OAAQ,YAAa,gBAAiB,OAAQ,SAAU,UAAW,WAAY,UAAW,aAAc,WAAY,OAAQ,iBAAkB,WAAY,QAAS,WAAY,QAAS,gBAAiB,YAAa,yBAA0B,iBAAiB,CAAC,EAC1R,CACJ,UAAWukC,CACf,EAAMknB,EACE,CACJ,UAAA1mB,EACA,KAAAkd,EACA,aAAAnd,EACA,kBAAAE,CACJ,EAAMr+B,EAAM,WAAW69B,EAAa,EAC5BuH,EAAYjH,EAAa,OAAQP,CAAkB,EACnDyH,EAAU4gB,GAAa7gB,CAAS,EAChC,CAACM,EAAY1mB,EAAQ2mB,EAAS,EAAIX,GAASI,EAAWC,CAAO,EACnE,IAAI65D,GACAl4G,IAAS,kBACXk4G,GAAW,CACT,OAAQ,CAACi+D,EAAU,CACjB,IAAA15K,GACA,MAAAqE,EACR,IAAY,CACJi1K,GAAW,MAAqCA,EAAOI,IAAa,MAAQr1K,GAAQrE,GAAK05K,CAAQ,CACnG,EACA,YAAaj2K,EAAKk5G,IAA4D9kD,GAAS,KAA0B,OAASA,EAAK,eAAgB,MAAQp0D,IAAO,OAASA,EAAkB8Y,EAAM,cAAcygD,GAAe,IAAI,EAChO,SAAUw8G,IAAmD3hH,GAAS,KAA0B,OAASA,EAAK,WAAyBt7C,EAAM,cAAc4rJ,GAAc,IAAI,EAC7K,QAASoR,IAAY,EAC3B,GAEE,MAAMz2H,GAAgBpI,EAAY,EAClC,GAAI,QAAQ,IAAI,WAAa,aAAc,CACzC,MAAM13B,EAAUirB,GAAc,MAAM,EACpC,QAAQ,IAAI,WAAa,cAAejrB,EAAQ,EAAE,gBAAiBpN,IAAU,EAAE,gBAAiBA,GAAQ,WAAY,qFAAqF,EACzM,QAAQ,IAAI,WAAa,cAAeoN,EAAQ,EAAEy2J,GAAkB5hH,GAAS,MAAmCA,EAAK,eAAiB,aAAc,sFAAsF,EAC1O70C,EAAQ,WAAW,EAAE,2BAA4BpN,GAAUquF,GAAU,MAAoCA,EAAM,KAAKvqE,IAAQ,2BAA4BA,EAAI,GAAK,yBAA0B,iBAAiB,CAC9M,CACA,MAAM1P,GAAOsgD,GAAQC,CAAU,EACzBovG,GAAc/C,GAAe3yE,EAAOthF,CAAQ,EAC5CozJ,EAAiBD,GAAiBn0H,EAAW4tH,CAAQ,EACrD/mI,EAAc,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIqvB,GAAS,KAA0B,OAASA,EAAK,KAAK,EAAG5/B,CAAK,EAC5G2hJ,GAAkB,CACtB,OAAQp2K,EAAKilK,GAAc,KAA+B,OAASA,EAAU,SAAW,MAAQjlK,IAAO,OAASA,GAAMqN,EAAKgnD,GAAS,KAA0B,OAASA,EAAK,aAAe,MAAQhnD,IAAO,OAAS,OAASA,EAAG,MAC/N,MAAOooK,GAAMnoK,GAAMF,EAAK63J,GAAc,KAA+B,OAASA,EAAU,QAAU,MAAQ73J,IAAO,OAASA,EAAK6oK,KAAmB,MAAQ3oK,IAAO,OAASA,GAAM6mE,EAAK9f,GAAS,KAA0B,OAASA,EAAK,aAAe,MAAQ8f,IAAO,OAAS,OAASA,EAAG,QAAU,MAAQshG,IAAO,OAASA,EAAKphH,GAAS,KAA0B,OAASA,EAAK,aACrX,EACE,OAAO5V,EAAwB1lC,EAAM,cAAcs9J,GAAQ,OAAO,OAAO,CACvE,UAAWl/H,EACX,kBAAmBC,CACvB,EAAKymB,EAAY,CACb,MAAOs4G,GACP,UAAW53J,GAAW,CACpB,CAAC,GAAG4/B,CAAS,IAAI33B,EAAI,EAAE,EAAGA,GAC1B,CAAC,GAAG23B,CAAS,OAAO,EAAG,CAAC,OAAQ,eAAe,EAAE,SAASp+C,CAAI,EAC9D,CAAC,GAAGo+C,CAAS,gBAAgB,EAAGp+C,IAAS,gBACzC,CAAC,GAAGo+C,CAAS,WAAW,EAAG4qD,CACjC,EAAO10C,GAAS,KAA0B,OAASA,EAAK,UAAW8D,EAAWY,EAAehhC,EAAQ2mB,GAAWN,CAAO,EACnH,eAAgB7/B,GAAW2vG,EAAgBn2F,EAAQ2mB,GAAWN,CAAO,EACrE,MAAOpZ,EACP,SAAUizE,GACV,KAAM,OAAO,OAAO,CAClB,MAAO49D,GAAMD,GAAMD,GAAMD,EAAKrhH,GAAS,KAA0B,OAASA,EAAK,QAAU,MAAQqhH,IAAO,OAAS,OAASA,EAAG,QAAU,MAAQC,IAAO,OAASA,EAAKthH,GAAS,KAA0B,OAASA,EAAK,YAAc,MAAQuhH,IAAO,OAASA,EAAK3L,KAAc,MAAQ4L,IAAO,OAASA,EAAkB98J,EAAM,cAAc0kJ,GAAkB,IAAI,EAClW,eAAgB,GAAGn+G,EAAa,WACtC,EAAOuzH,CAAI,EACP,UAAW10H,EACX,SAAUo0H,EACV,UAAW6D,GAEX,uBAAwBltE,GAA2E8oE,CACvG,CAAG,CAAC,CAAC,CACL,EACAQ,GAAK,QAAUf,GACX,QAAQ,IAAI,WAAa,eAC3Be,GAAK,YAAc,QC9FrB,SAASjrJ,GAAUC,EAAOrb,EAAU/L,EAAS,CAC3C,IAAIqU,EAAOrU,GAAW,CAAA,EACpBk2K,EAAkB7hK,EAAK,WACvB8hK,EAAaD,IAAoB,OAAS,GAAQA,EAClDE,EAAiB/hK,EAAK,UACtBgiK,EAAYD,IAAmB,OAAS,GAAQA,EAChDE,EAAoBjiK,EAAK,aACzBkiK,EAAeD,IAAsB,OAAS,OAAYA,EAMxDE,EACAC,EAAY,GAGZC,EAAW,EAGf,SAASC,GAAuB,CAC1BH,GACF,aAAaA,CAAS,CAE1B,CAGA,SAASI,EAAO52K,EAAS,CACvB,IAAIuU,EAAQvU,GAAW,CAAA,EACrB62K,EAAqBtiK,EAAM,aAC3BuiK,EAAeD,IAAuB,OAAS,GAAQA,EACzDF,EAAoB,EACpBF,EAAY,CAACK,CACf,CAOA,SAASC,GAAU,CACjB,QAASjyJ,EAAO,UAAU,OAAQkyJ,EAAa,IAAI,MAAMlyJ,CAAI,EAAGE,EAAO,EAAGA,EAAOF,EAAME,IACrFgyJ,EAAWhyJ,CAAI,EAAI,UAAUA,CAAI,EAEnC,IAAIiyJ,EAAO,KACPC,EAAU,KAAK,IAAG,EAAKR,EAC3B,GAAID,EACF,OAIF,SAASU,GAAO,CACdT,EAAW,KAAK,IAAG,EACnB3qK,EAAS,MAAMkrK,EAAMD,CAAU,CACjC,CAMA,SAASI,GAAQ,CACfZ,EAAY,MACd,CACI,CAACH,GAAaE,GAAgB,CAACC,GAMjCW,EAAI,EAENR,EAAoB,EAChBJ,IAAiB,QAAaW,EAAU9vJ,EACtCivJ,GAMFK,EAAW,KAAK,IAAG,EACdP,IACHK,EAAY,WAAWD,EAAea,EAAQD,EAAM/vJ,CAAK,IAO3D+vJ,EAAI,EAEGhB,IAAe,KAYxBK,EAAY,WAAWD,EAAea,EAAQD,EAAMZ,IAAiB,OAAYnvJ,EAAQ8vJ,EAAU9vJ,CAAK,EAE5G,CACA,OAAA2vJ,EAAQ,OAASH,EAGVG,CACT,CAmBA,SAASM,GAAUjwJ,EAAOrb,EAAU/L,EAAS,CAC3C,IAAIqU,EAAkB,CAAA,EACpBijK,EAAejjK,EAAK,QACpBkjK,EAAUD,IAAiB,OAAS,GAAQA,EAC9C,OAAOnwJ,GAASC,EAAOrb,EAAU,CAC/B,aAAcwrK,IAAY,EAC9B,CAAG,CACH,CC7JA,MAAMC,GAA0BnmK,EAAAA,cAAc,EAAE,ECChD,IAAIyvC,GAAgC,SAAU/kD,EAAGe,EAAG,CAClD,IAAId,EAAI,CAAA,EACR,QAASe,KAAKhB,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGgB,CAAC,GAAKD,EAAE,QAAQC,CAAC,EAAI,IAAGf,EAAEe,CAAC,EAAIhB,EAAEgB,CAAC,GAC/F,GAAIhB,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WAAY,QAAS,EAAI,EAAGgB,EAAI,OAAO,sBAAsBhB,CAAC,EAAG,EAAIgB,EAAE,OAAQ,IAClID,EAAE,QAAQC,EAAE,CAAC,CAAC,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKhB,EAAGgB,EAAE,CAAC,CAAC,IAAGf,EAAEe,EAAE,CAAC,CAAC,EAAIhB,EAAEgB,EAAE,CAAC,CAAC,GAElG,OAAOf,CACT,EAMA,SAASy7K,GAAU/iH,EAAM,CACvB,OAAI,OAAOA,GAAS,SACX,GAAGA,CAAI,IAAIA,CAAI,QAEpB,6BAA6B,KAAKA,CAAI,EACjC,OAAOA,CAAI,GAEbA,CACT,CACA,MAAMgjH,GAAQ,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAK,EAC5CC,GAAmBh/J,EAAM,WAAW,CAAC3G,EAAOP,IAAQ,CACxD,KAAM,CACJ,aAAAqlC,EACA,UAAAC,CACJ,EAAMp+B,EAAM,WAAW69B,EAAa,EAC5B,CACJ,OAAAohI,EACA,KAAAC,CACJ,EAAMl/J,EAAM,WAAW6+J,EAAU,EACzB,CACF,UAAWjhI,EACX,KAAAuhI,EACA,MAAAzhK,EACA,OAAAkqB,EACA,KAAAw3I,EACA,KAAAC,EACA,UAAAjgH,EACA,SAAAh5C,EACA,KAAA21C,EACA,MAAArgC,CACN,EAAQriB,EACJ41D,EAAS9mB,GAAO9uC,EAAO,CAAC,YAAa,OAAQ,QAAS,SAAU,OAAQ,OAAQ,YAAa,WAAY,OAAQ,OAAO,CAAC,EACrH+rC,EAAYjH,EAAa,MAAOP,CAAkB,EAClD,CAAC8H,EAAY1mB,EAAQ2mB,CAAS,EAAIopD,GAAY3pD,CAAS,EAEvD+jD,EAAY,CAAA,EAClB,IAAIm2E,EAAe,CAAA,EACnBP,GAAM,QAAQtxJ,GAAQ,CACpB,IAAI8xJ,EAAY,CAAA,EAChB,MAAMC,EAAWnmK,EAAMoU,CAAI,EACvB,OAAO+xJ,GAAa,SACtBD,EAAU,KAAOC,EACR,OAAOA,GAAa,WAC7BD,EAAYC,GAAY,CAAA,GAE1B,OAAOvwG,EAAOxhD,CAAI,EAClB6xJ,EAAe,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIA,CAAY,EAAG,CAC5D,CAAC,GAAGl6H,CAAS,IAAI33B,CAAI,IAAI8xJ,EAAU,IAAI,EAAE,EAAGA,EAAU,OAAS,OAC/D,CAAC,GAAGn6H,CAAS,IAAI33B,CAAI,UAAU8xJ,EAAU,KAAK,EAAE,EAAGA,EAAU,OAASA,EAAU,QAAU,EAC1F,CAAC,GAAGn6H,CAAS,IAAI33B,CAAI,WAAW8xJ,EAAU,MAAM,EAAE,EAAGA,EAAU,QAAUA,EAAU,SAAW,EAC9F,CAAC,GAAGn6H,CAAS,IAAI33B,CAAI,SAAS8xJ,EAAU,IAAI,EAAE,EAAGA,EAAU,MAAQA,EAAU,OAAS,EACtF,CAAC,GAAGn6H,CAAS,IAAI33B,CAAI,SAAS8xJ,EAAU,IAAI,EAAE,EAAGA,EAAU,MAAQA,EAAU,OAAS,EACtF,CAAC,GAAGn6H,CAAS,MAAM,EAAGhH,IAAc,KAC1C,CAAK,EAEGmhI,EAAU,OACZD,EAAa,GAAGl6H,CAAS,IAAI33B,CAAI,OAAO,EAAI,GAC5C07E,EAAU,KAAK/jD,CAAS,IAAI33B,CAAI,OAAO,EAAIqxJ,GAAUS,EAAU,IAAI,EAEvE,CAAC,EAED,MAAM95J,EAAUD,GAAW4/B,EAAW,CACpC,CAAC,GAAGA,CAAS,IAAI+5H,CAAI,EAAE,EAAGA,IAAS,OACnC,CAAC,GAAG/5H,CAAS,UAAU1nC,CAAK,EAAE,EAAGA,EACjC,CAAC,GAAG0nC,CAAS,WAAWxd,CAAM,EAAE,EAAGA,EACnC,CAAC,GAAGwd,CAAS,SAASg6H,CAAI,EAAE,EAAGA,EAC/B,CAAC,GAAGh6H,CAAS,SAASi6H,CAAI,EAAE,EAAGA,CACnC,EAAKjgH,EAAWkgH,EAActgJ,EAAQ2mB,CAAS,EACvC1Z,EAAc,CAAA,EAEpB,GAAIgzI,GAAUA,EAAO,CAAC,EAAI,EAAG,CAC3B,MAAMQ,EAAmBR,EAAO,CAAC,EAAI,EACrChzI,EAAY,YAAcwzI,EAC1BxzI,EAAY,aAAewzI,CAC7B,CACA,OAAI1jH,IACF9vB,EAAY,KAAO6yI,GAAU/iH,CAAI,EAG7BmjH,IAAS,IAAS,CAACjzI,EAAY,WACjCA,EAAY,SAAW,IAIpByZ,EAAwB1lC,EAAM,cAAc,MAAO,OAAO,OAAO,CAAA,EAAIivD,EAAQ,CAClF,MAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIhjC,CAAW,EAAGvQ,CAAK,EAAGytE,CAAS,EACpF,UAAW1jF,EACX,IAAK3M,CACT,CAAG,EAAGsN,CAAQ,CAAC,CACf,CAAC,EACG,QAAQ,IAAI,WAAa,eAC3B44J,GAAI,YAAc,OCzGL,SAASU,GAAUT,EAAQp1B,EAAS,CACjD,MAAMz6D,EAAU,CAAC,OAAW,MAAS,EAC/BuwF,EAAmB,MAAM,QAAQV,CAAM,EAAIA,EAAS,CAACA,EAAQ,MAAS,EAEtEW,EAAgB/1B,GAAW,CAC/B,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,IAAK,EACT,EACE,OAAA81B,EAAiB,QAAQ,CAAC33J,EAAG5f,IAAU,CACrC,GAAI,OAAO4f,GAAM,UAAYA,IAAM,KACjC,QAASxhB,EAAI,EAAGA,EAAIuiJ,GAAgB,OAAQviJ,IAAK,CAC/C,MAAM0qG,EAAa63C,GAAgBviJ,CAAC,EACpC,GAAIo5K,EAAc1uE,CAAU,GAAKlpF,EAAEkpF,CAAU,IAAM,OAAW,CAC5D9hB,EAAQhnF,CAAK,EAAI4f,EAAEkpF,CAAU,EAC7B,KACF,CACF,MAEA9hB,EAAQhnF,CAAK,EAAI4f,CAErB,CAAC,EACMonE,CACT,CCzBA,IAAIjnC,GAAgC,SAAU/kD,EAAGe,EAAG,CAClD,IAAId,EAAI,CAAA,EACR,QAASe,KAAKhB,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGgB,CAAC,GAAKD,EAAE,QAAQC,CAAC,EAAI,IAAGf,EAAEe,CAAC,EAAIhB,EAAEgB,CAAC,GAC/F,GAAIhB,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WAAY,QAAS,EAAI,EAAGgB,EAAI,OAAO,sBAAsBhB,CAAC,EAAG,EAAIgB,EAAE,OAAQ,IAClID,EAAE,QAAQC,EAAE,CAAC,CAAC,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKhB,EAAGgB,EAAE,CAAC,CAAC,IAAGf,EAAEe,EAAE,CAAC,CAAC,EAAIhB,EAAEgB,EAAE,CAAC,CAAC,GAElG,OAAOf,CACT,EAWA,SAASw8K,GAAsBC,EAASx2B,EAAQ,CAC9C,KAAM,CAACrkJ,EAAM86K,CAAO,EAAI//J,EAAM,SAAS,OAAO8/J,GAAY,SAAWA,EAAU,EAAE,EAC3EE,EAA2B,IAAM,CAIrC,GAHI,OAAOF,GAAY,UACrBC,EAAQD,CAAO,EAEb,OAAOA,GAAY,SAGvB,QAASt5K,EAAI,EAAGA,EAAIuiJ,GAAgB,OAAQviJ,IAAK,CAC/C,MAAM0qG,EAAa63C,GAAgBviJ,CAAC,EAEpC,GAAI,CAAC8iJ,GAAU,CAACA,EAAOp4C,CAAU,EAC/B,SAEF,MAAM+uE,EAASH,EAAQ5uE,CAAU,EACjC,GAAI+uE,IAAW,OAAW,CACxBF,EAAQE,CAAM,EACd,MACF,CACF,CACF,EACAjgK,OAAAA,EAAM,UAAU,IAAM,CACpBggK,EAAwB,CAC1B,EAAG,CAAC,KAAK,UAAUF,CAAO,EAAGx2B,CAAM,CAAC,EAC7BrkJ,CACT,CACA,MAAMi7K,GAAmBlgK,EAAM,WAAW,CAAC3G,EAAOP,IAAQ,CACxD,KAAM,CACF,UAAW8kC,EACX,QAAAuiI,EACA,MAAA57D,EACA,UAAAnlD,EACA,MAAA1jC,EACA,SAAAtV,EACA,OAAA64J,EAAS,EACT,KAAAC,CACN,EAAQ7lK,EACJ41D,EAAS9mB,GAAO9uC,EAAO,CAAC,YAAa,UAAW,QAAS,YAAa,QAAS,WAAY,SAAU,MAAM,CAAC,EACxG,CACJ,aAAA8kC,EACA,UAAAC,CACJ,EAAMp+B,EAAM,WAAW69B,EAAa,EAC5BgsG,EAAUM,GAAc,GAAM,IAAI,EAClCle,EAAc4zC,GAAsBt7D,EAAOslC,CAAO,EAClDu2B,EAAgBP,GAAsBM,EAASt2B,CAAO,EACtDzkG,EAAYjH,EAAa,MAAOP,CAAkB,EAClD,CAAC8H,EAAY1mB,EAAQ2mB,CAAS,EAAIkpD,GAAYzpD,CAAS,EACvDi7H,EAAUX,GAAUT,EAAQp1B,CAAO,EACnCpkI,EAAUD,GAAW4/B,EAAW,CACpC,CAAC,GAAGA,CAAS,UAAU,EAAG85H,IAAS,GACnC,CAAC,GAAG95H,CAAS,IAAIg7H,CAAa,EAAE,EAAGA,EACnC,CAAC,GAAGh7H,CAAS,IAAI6mF,CAAW,EAAE,EAAGA,EACjC,CAAC,GAAG7mF,CAAS,MAAM,EAAGhH,IAAc,KACxC,EAAKghB,EAAWpgC,EAAQ2mB,CAAS,EAEzB26H,EAAW,CAAA,EACXb,EAAmBY,EAAQ,CAAC,GAAK,MAAQA,EAAQ,CAAC,EAAI,EAAIA,EAAQ,CAAC,EAAI,GAAK,OAC9EZ,IACFa,EAAS,WAAab,EACtBa,EAAS,YAAcb,GAIzB,KAAM,CAACc,EAASC,CAAO,EAAIH,EAC3BC,EAAS,OAASE,EAClB,MAAMC,EAAazgK,EAAM,QAAQ,KAAO,CACtC,OAAQ,CAACugK,EAASC,CAAO,EACzB,KAAAtB,CACJ,GAAM,CAACqB,EAASC,EAAStB,CAAI,CAAC,EAC5B,OAAOx5H,EAAwB1lC,EAAM,cAAc6+J,GAAW,SAAU,CACtE,MAAO4B,CACX,EAAkBzgK,EAAM,cAAc,MAAO,OAAO,OAAO,CAAA,EAAIivD,EAAQ,CACnE,UAAWxpD,EACX,MAAO,OAAO,OAAO,OAAO,OAAO,GAAI66J,CAAQ,EAAG5kJ,CAAK,EACvD,IAAK5iB,CACT,CAAG,EAAGsN,CAAQ,CAAC,CAAC,CAChB,CAAC,EACG,QAAQ,IAAI,WAAa,eAC3B85J,GAAI,YAAc,OC/FpB,MAAMQ,GAAsBpjJ,GAAS,CACnC,KAAM,CACJ,aAAA0pB,CACJ,EAAM1pB,EACJ,MAAO,CACL,CAAC0pB,CAAY,EAAG,CACd,eAAgB,CACd,CAAC,IAAIA,CAAY,EAAE,EAAG,CACpB,OAAQ,CACN,YAAa1pB,EAAM,QAC/B,EACU,OAAQ,CACN,YAAaA,EAAM,MAC/B,CACA,CACA,CACA,CACA,CACA,EAEMqjJ,GAAwBrjJ,GAAS,CACrC,KAAM,CACJ,aAAA0pB,EACA,0BAAA45H,EACA,WAAAC,EACA,UAAA7lI,EACA,kBAAA8lI,EACA,kBAAAC,EACA,qBAAAC,CACJ,EAAM1jJ,EACJ,MAAO,CACL,CAAC0pB,CAAY,EAAG,OAAO,OAAO,OAAO,OAAO,GAAIsC,GAAehsB,CAAK,CAAC,EAAG,CACtE,iBAAkB,GAAGc,GAAK4c,CAAS,CAAC,UAAU6lI,CAAU,GAExD,aAAc,CACZ,SAAU,WACV,IAAK,UACL,QAAS,eACT,OAAQ,QACR,aAAcG,EACd,YAAa,EACb,cAAe,SACf,UAAW,EACX,kBAAmB,GAAG5iJ,GAAK4c,CAAS,CAAC,UAAU6lI,CAAU,EACjE,EACM,eAAgB,CACd,QAAS,OACT,MAAO,OACP,MAAO,OACP,SAAU,OAEV,OAAQ,GAAGziJ,GAAKd,EAAM,QAAQ,CAAC,IACvC,EACM,CAAC,eAAe0pB,CAAY,YAAY,EAAG,CACzC,QAAS,OACT,WAAY,SACZ,OAAQ,GAAG5oB,GAAKd,EAAM,qCAAqC,CAAC,KAC5D,MAAOA,EAAM,iBACb,WAAY,IACZ,SAAUA,EAAM,WAChB,WAAY,SACZ,UAAW,SACX,iBAAkB,KAAKujJ,CAAU,GACjC,sBAAuB,CACrB,SAAU,WACV,MAAO,MACP,iBAAkB,GAAGziJ,GAAK4c,CAAS,CAAC,qBAEpC,sBAAuB,UACvB,eAAgB,EAChB,UAAW,kBACX,QAAS,IACnB,CACA,EACM,CAAC,eAAegM,CAAY,kBAAkB,EAAG,CAC/C,YAAa,CACX,MAAO,QAAQ+5H,CAAiB,UAC1C,EACQ,WAAY,CACV,MAAO,eAAeA,CAAiB,UACjD,CACA,EACM,CAAC,eAAe/5H,CAAY,gBAAgB,EAAG,CAC7C,YAAa,CACX,MAAO,eAAe+5H,CAAiB,UACjD,EACQ,WAAY,CACV,MAAO,QAAQA,CAAiB,UAC1C,CACA,EACM,CAAC,GAAG/5H,CAAY,aAAa,EAAG,CAC9B,QAAS,eACT,aAAc,EACd,cAAe85H,CACvB,EACM,WAAY,CACV,WAAY,OACZ,YAAaD,EACb,YAAa,SACb,YAAa,GAAGziJ,GAAK4c,CAAS,CAAC,MACvC,EACM,CAAC,eAAegM,CAAY,aAAaA,CAAY,SAAS,EAAG,CAC/D,sBAAuB,CACrB,YAAa,kBACvB,CACA,EACM,CAAC,aAAaA,CAAY,SAAS,EAAG,CACpC,uBAAwBhM,EACxB,gBAAiB,EACjB,iBAAkB,EAClB,eAAgB,CACxB,EACM,WAAY,CACV,WAAY,OACZ,YAAa6lI,EACb,YAAa,SACb,YAAa,GAAGziJ,GAAK4c,CAAS,CAAC,MACvC,EACM,CAAC,eAAegM,CAAY,aAAaA,CAAY,SAAS,EAAG,CAC/D,sBAAuB,CACrB,YAAa,kBACvB,CACA,EACM,CAAC,aAAaA,CAAY,SAAS,EAAG,CACpC,uBAAwBhM,EACxB,gBAAiB,EACjB,iBAAkB,EAClB,eAAgB,CACxB,EACM,CAAC,UAAUgM,CAAY,YAAY,EAAG,CACpC,MAAO1pB,EAAM,UACb,WAAY,SACZ,SAAUA,EAAM,QACxB,EACM,CAAC,eAAe0pB,CAAY,mBAAmBA,CAAY,sCAAsC,EAAG,CAClG,YAAa,CACX,MAAO,CACjB,EACQ,WAAY,CACV,MAAO,MACjB,EACQ,CAAC,GAAGA,CAAY,aAAa,EAAG,CAC9B,mBAAoB45H,CAC9B,CACA,EACM,CAAC,eAAe55H,CAAY,iBAAiBA,CAAY,oCAAoC,EAAG,CAC9F,YAAa,CACX,MAAO,MACjB,EACQ,WAAY,CACV,MAAO,CACjB,EACQ,CAAC,GAAGA,CAAY,aAAa,EAAG,CAC9B,iBAAkB45H,CAC5B,CACA,CACA,CAAK,CACL,CACA,EAOAK,GAAet8H,GAAc,UAAWrnB,GAAS,CAC/C,MAAM4jJ,EAAe39H,GAAWjmB,EAAO,CACrC,sCAAuCA,EAAM,OAC7C,0BAA2B,CAC/B,CAAG,EACD,MAAO,CAACqjJ,GAAsBO,CAAY,EAAGR,GAAoBQ,CAAY,CAAC,CAChF,EAZqC5jJ,IAAU,CAC7C,kBAAmB,MACnB,kBAAmB,IACnB,qBAAsBA,EAAM,QAC9B,GAQ0B,CACxB,SAAU,CACR,kBAAmB,EACvB,CACA,CAAC,ECjLD,IAAI6qB,GAAgC,SAAU/kD,EAAGe,EAAG,CAClD,IAAId,EAAI,CAAA,EACR,QAASe,KAAKhB,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGgB,CAAC,GAAKD,EAAE,QAAQC,CAAC,EAAI,IAAGf,EAAEe,CAAC,EAAIhB,EAAEgB,CAAC,GAC/F,GAAIhB,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WAAY,QAAS,EAAI,EAAGgB,EAAI,OAAO,sBAAsBhB,CAAC,EAAG,EAAIgB,EAAE,OAAQ,IAClID,EAAE,QAAQC,EAAE,CAAC,CAAC,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKhB,EAAGgB,EAAE,CAAC,CAAC,IAAGf,EAAEe,EAAE,CAAC,CAAC,EAAIhB,EAAEgB,EAAE,CAAC,CAAC,GAElG,OAAOf,CACT,EAOA,MAAMg/E,GAAmB,CACvB,MAAO,KACP,OAAQ,IACV,EACMm9E,GAAUnmJ,GAAS,CACvB,KAAM,CACJ,aAAA8kC,EACA,UAAAC,EACA,UAAW+iI,EACX,MAAOC,CACX,EAAMpjI,GAAmB,SAAS,EAC1B,CACF,UAAWJ,EACX,KAAA52C,EAAO,aACP,YAAAsb,EAAc,SACd,kBAAAy+J,EACA,UAAA3hH,EACA,cAAAY,EACA,SAAA55C,EACA,OAAAi7J,EACA,QAAA7kH,EAAU,QACV,MAAA/9B,EACA,MAAA/C,EACA,KAAMsyC,CACZ,EAAQ30D,EACJu9C,EAAYzO,GAAO9uC,EAAO,CAAC,YAAa,OAAQ,cAAe,oBAAqB,YAAa,gBAAiB,WAAY,SAAU,UAAW,QAAS,QAAS,MAAM,CAAC,EACxK+rC,EAAYjH,EAAa,UAAWP,CAAkB,EACtD,CAAC8H,EAAY1mB,EAAQ2mB,CAAS,EAAIX,GAASI,CAAS,EACpDk9B,EAAevU,GAAQC,CAAU,EACjC0B,EAAU2S,GAAiBC,CAAY,EACvCg/F,EAAc,CAAC,CAACl7J,EAChBm7J,EAAoBvhK,EAAM,QAAQ,IAClCsC,IAAgB,OACX87B,IAAc,MAAQ,MAAQ,QAEnC97B,IAAgB,QACX87B,IAAc,MAAQ,QAAU,MAElC97B,EACN,CAAC87B,EAAW97B,CAAW,CAAC,EACrBk/J,EAAiBD,IAAsB,SAAWR,GAAqB,KACvEU,EAAeF,IAAsB,OAASR,GAAqB,KACnE9gH,EAAcz6C,GAAW4/B,EAAW+7H,EAAkBniJ,EAAQ2mB,EAAW,GAAGP,CAAS,IAAIp+C,CAAI,GAAI,CACrG,CAAC,GAAGo+C,CAAS,YAAY,EAAGk8H,EAC5B,CAAC,GAAGl8H,CAAS,cAAcm8H,CAAiB,EAAE,EAAGD,EACjD,CAAC,GAAGl8H,CAAS,SAAS,EAAG,CAAC,CAACi8H,EAC3B,CAAC,GAAGj8H,CAAS,IAAIoX,CAAO,EAAE,EAAGA,IAAY,QACzC,CAAC,GAAGpX,CAAS,QAAQ,EAAG,CAAC,CAAC3mB,EAC1B,CAAC,GAAG2mB,CAAS,MAAM,EAAGhH,IAAc,MACpC,CAAC,GAAGgH,CAAS,sCAAsC,EAAGo8H,EACtD,CAAC,GAAGp8H,CAAS,oCAAoC,EAAGq8H,EACpD,CAAC,GAAGr8H,CAAS,IAAIsqB,CAAO,EAAE,EAAG,CAAC,CAACA,CACnC,EAAKtQ,EAAWY,CAAa,EACrB0hH,EAA4B1hK,EAAM,QAAQ,IAC1C,OAAO+gK,GAAsB,SACxBA,EAEL,QAAQ,KAAKA,CAAiB,EACzB,OAAOA,CAAiB,EAE1BA,EACN,CAACA,CAAiB,CAAC,EAChBn9C,EAAa,CACjB,kBAAmB49C,EAAiBE,EAA4B,OAChE,gBAAiBD,EAAeC,EAA4B,MAChE,EAEE,GAAI,QAAQ,IAAI,WAAa,aAAc,CACzC,MAAMj7J,EAAUirB,GAAc,SAAS,EACvC,QAAQ,IAAI,WAAa,cAAejrB,EAAQ,CAACL,GAAYpf,IAAS,WAAY,QAAS,4CAA4C,CACzI,CACA,OAAO0+C,EAAwB1lC,EAAM,cAAc,MAAO,OAAO,OAAO,CACtE,UAAWigD,EACX,MAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAImhH,CAAY,EAAG1lJ,CAAK,CAC/D,EAAKk7B,EAAW,CACZ,KAAM,WACV,CAAG,EAAGxwC,GAAYpf,IAAS,YAA4BgZ,EAAM,cAAc,OAAQ,CAC/E,UAAW,GAAGolC,CAAS,cACvB,MAAOw+E,CACX,EAAKx9G,CAAQ,CAAE,CAAC,CAChB,EACI,QAAQ,IAAI,WAAa,eAC3Bo5I,GAAQ,YAAc,WC3FxB,IAAImiB,GAAiB,SAAwB1uD,EAAepzC,EAAU,CACpE,GAAI,CAACozC,EAAe,OAAO,KAC3B,IAAIv3F,EAAQ,CACV,KAAMu3F,EAAc,WACpB,MAAOA,EAAc,cAAc,YAAcA,EAAc,YAAcA,EAAc,WAC3F,MAAOA,EAAc,YACrB,IAAKA,EAAc,UACnB,OAAQA,EAAc,cAAc,aAAeA,EAAc,aAAeA,EAAc,UAC9F,OAAQA,EAAc,YAC1B,EACE,OAAIpzC,EAEK,CACL,KAAM,EACN,MAAO,EACP,MAAO,EACP,IAAKnkD,EAAM,IACX,OAAQA,EAAM,OACd,OAAQA,EAAM,MACpB,EAES,CACL,KAAMA,EAAM,KACZ,MAAOA,EAAM,MACb,MAAOA,EAAM,MACb,IAAK,EACL,OAAQ,EACR,OAAQ,CACZ,CACA,EACIkmJ,GAAO,SAAch9K,EAAO,CAC9B,OAAOA,IAAU,OAAY,GAAG,OAAOA,EAAO,IAAI,EAAI,MACxD,EACe,SAASi9K,GAAYxoK,EAAO,CACzC,IAAI+rC,EAAY/rC,EAAM,UACpBy0D,EAAez0D,EAAM,aACrBzU,EAAQyU,EAAM,MACdyoK,EAAgBzoK,EAAM,cACtBw6C,EAAax6C,EAAM,WACnB0oK,EAAgB1oK,EAAM,cACtB2oK,EAAc3oK,EAAM,YACpB+kC,EAAY/kC,EAAM,UAClB4oK,EAAkB5oK,EAAM,SACxBwmE,EAAWoiG,IAAoB,OAAS,GAAQA,EAC9Ct0C,EAAW3tH,EAAM,OAAO,IAAI,EAC5B+gC,EAAkB/gC,EAAM,SAASpb,CAAK,EACxCo8C,EAAmB7pB,GAAe4pB,EAAiB,CAAC,EACpD7lB,EAAY8lB,EAAiB,CAAC,EAC9BkB,EAAelB,EAAiB,CAAC,EAG/BkhI,EAAmB,SAA0BlzK,EAAK,CACpD,IAAIsjE,EACAlqE,EAAQ05K,EAAc9yK,CAAG,EACzBie,GAAOqlD,EAAwBxE,EAAa,WAAa,MAAQwE,IAA0B,OAAS,OAASA,EAAsB,iBAAiB,IAAI,OAAOltB,EAAW,OAAO,CAAC,EAAEh9C,CAAK,EAC7L,OAAQ6kB,GAAQ,KAAyB,OAASA,EAAI,eAAiBA,CACzE,EACIk4D,EAAmBnlE,EAAM,SAAS,IAAI,EACxColE,EAAmBjuD,GAAeguD,EAAkB,CAAC,EACrDg9F,EAAY/8F,EAAiB,CAAC,EAC9Bg9F,EAAeh9F,EAAiB,CAAC,EAC/BixC,EAAmBr2G,EAAM,SAAS,IAAI,EACxCs2G,EAAmBn/F,GAAek/F,EAAkB,CAAC,EACrDgsD,EAAY/rD,EAAiB,CAAC,EAC9BgsD,EAAehsD,EAAiB,CAAC,EACnC52F,GAAgB,UAAY,CAC1B,GAAIxE,IAAct2B,EAAO,CACvB,IAAImS,EAAOmrK,EAAiBhnJ,CAAS,EACjCz0B,EAAOy7K,EAAiBt9K,CAAK,EAC7B29K,EAAgBZ,GAAe5qK,EAAM8oE,CAAQ,EAC7C2iG,EAAgBb,GAAel7K,EAAMo5E,CAAQ,EACjD39B,EAAat9C,CAAK,EAClBw9K,EAAaG,CAAa,EAC1BD,EAAaE,CAAa,EACtBzrK,GAAQtQ,EACVs7K,EAAa,EAEbC,EAAW,CAEf,CACF,EAAG,CAACp9K,CAAK,CAAC,EACV,IAAI69K,EAAaziK,EAAM,QAAQ,UAAY,CACzC,GAAI6/D,EAAU,CACZ,IAAI6iG,EACJ,OAAOd,IAAMc,EAAiBP,GAAc,KAA+B,OAASA,EAAU,OAAS,MAAQO,IAAmB,OAASA,EAAiB,CAAC,CAC/J,CACA,OACSd,GADLxjI,IAAc,MACJ,EAAE+jI,GAAc,KAA+B,OAASA,EAAU,OAEpEA,GAAc,KAA+B,OAASA,EAAU,IAFU,CAGxF,EAAG,CAACtiG,EAAUzhC,EAAW+jI,CAAS,CAAC,EAC/BQ,EAAc3iK,EAAM,QAAQ,UAAY,CAC1C,GAAI6/D,EAAU,CACZ,IAAI+iG,EACJ,OAAOhB,IAAMgB,EAAiBP,GAAc,KAA+B,OAASA,EAAU,OAAS,MAAQO,IAAmB,OAASA,EAAiB,CAAC,CAC/J,CACA,OACShB,GADLxjI,IAAc,MACJ,EAAEikI,GAAc,KAA+B,OAASA,EAAU,OAEpEA,GAAc,KAA+B,OAASA,EAAU,IAFU,CAGxF,EAAG,CAACxiG,EAAUzhC,EAAWikI,CAAS,CAAC,EAG/B1xH,EAAgB,UAAyB,CAC3C,OAAIkvB,EACK,CACL,UAAW,qCACX,OAAQ,2BAChB,EAEW,CACL,UAAW,sCACX,MAAO,0BACb,CACE,EACI/uB,EAAiB,UAA0B,CAC7C,OAAI+uB,EACK,CACL,UAAW,sCACX,OAAQ,4BAChB,EAEW,CACL,UAAW,uCACX,MAAO,2BACb,CACE,EACIzuB,EAAmB,UAA4B,CACjDgxH,EAAa,IAAI,EACjBE,EAAa,IAAI,EACjBN,EAAW,CACb,EAIA,MAAI,CAACG,GAAa,CAACE,EACV,KAEWriK,EAAM,cAAcwzC,GAAW,CACjD,QAAS,GACT,WAAYK,EACZ,aAAc,GACd,cAAelD,EACf,eAAgBG,EAChB,iBAAkBM,CACtB,EAAK,SAAU11C,EAAM5C,EAAK,CACtB,IAAI0sD,EAAkB9pD,EAAK,UACzB+pD,EAAc/pD,EAAK,MACjBuwB,EAAc9W,EAAcA,EAAc,CAAA,EAAIswC,CAAW,EAAG,GAAI,CAClE,qBAAsBg9G,EACtB,sBAAuBb,GAAKO,GAAc,KAA+B,OAASA,EAAU,KAAK,EACjG,sBAAuBQ,EACvB,uBAAwBf,GAAKS,GAAc,KAA+B,OAASA,EAAU,KAAK,EAClG,oBAAqBI,EACrB,uBAAwBb,GAAKO,GAAc,KAA+B,OAASA,EAAU,MAAM,EACnG,qBAAsBQ,EACtB,wBAAyBf,GAAKS,GAAc,KAA+B,OAASA,EAAU,MAAM,CAC1G,CAAK,EAGGvrH,EAAc,CAChB,IAAK5qC,GAAWyhH,EAAU70H,CAAG,EAC7B,MAAOmzB,EACP,UAAWzmB,GAAW,GAAG,OAAO4/B,EAAW,QAAQ,EAAGogB,CAAe,CAC3E,EACI,OAAI,QAAQ,IAAI,WAAa,SAC3B1O,EAAY,iBAAiB,EAAI,KAAK,UAAU7qB,CAAW,GAEzCjsB,EAAM,cAAc,MAAO82C,CAAW,CAC5D,CAAC,CACH,CC3KA,IAAInL,GAAY,CAAC,YAAa,YAAa,WAAY,UAAW,WAAY,eAAgB,QAAS,OAAQ,WAAY,YAAa,YAAY,EAOpJ,SAASk3H,GAAcv1K,EAAQ,CAC7B,GAAI,OAAOA,EAAO,MAAU,IAC1B,OAAOA,EAAO,MAIhB,GAAIwY,GAAQxY,EAAO,KAAK,IAAM,SAAU,CACtC,IAAIw1K,EACJ,OAAQA,EAAgBx1K,EAAO,SAAW,MAAQw1K,IAAkB,OAAS,OAASA,EAAc,SAAQ,CAC9G,CACF,CACA,SAASC,GAAiB17K,EAAS,CACjC,OAAOA,EAAQ,IAAI,SAAUiG,EAAQ,CACnC,GAAIwY,GAAQxY,CAAM,IAAM,UAAYA,IAAW,KAAM,CACnD,IAAI01K,EAAaH,GAAcv1K,CAAM,EACrC,OAAO6nB,EAAcA,EAAc,CAAA,EAAI7nB,CAAM,EAAG,CAAA,EAAI,CAClD,MAAO01K,CACf,CAAO,CACH,CACA,MAAO,CACL,MAAO11K,GAAW,KAA4B,OAASA,EAAO,SAAQ,EACtE,MAAOA,GAAW,KAA4B,OAASA,EAAO,SAAQ,EACtE,MAAOA,CACb,CACE,CAAC,CACH,CACA,IAAI21K,GAA0B,SAAiCvnK,EAAM,CACnE,IAAI0pC,EAAY1pC,EAAK,UACnB0jD,EAAY1jD,EAAK,UACjBmY,EAAWnY,EAAK,SAChBupJ,EAAUvpJ,EAAK,QACfumG,EAAQvmG,EAAK,MACb6tE,EAAQ7tE,EAAK,MACb9W,EAAQ8W,EAAK,MACbpJ,EAAOoJ,EAAK,KACZ6lC,EAAW7lC,EAAK,SAChBijH,EAAUjjH,EAAK,QACfkjH,EAASljH,EAAK,OACdojH,EAAYpjH,EAAK,UACjBmjH,EAAUnjH,EAAK,QACfouE,EAAcpuE,EAAK,YACjBs7D,EAAe,SAAsBlvE,EAAO,CAC1C+rB,GAGJ0tB,EAASz5C,EAAOlD,CAAK,CACvB,EACA,OAAoBob,EAAM,cAAc,QAAS,CAC/C,UAAWwF,GAAW45C,EAAWh4C,EAAgB,CAAA,EAAI,GAAG,OAAOg+B,EAAW,gBAAgB,EAAGvxB,CAAQ,CAAC,EACtG,YAAai2D,CACjB,EAAkB9pE,EAAM,cAAc,QAAS,CAC3C,KAAM1N,EACN,UAAW,GAAG,OAAO8yC,EAAW,aAAa,EAC7C,KAAM,QACN,SAAUvxB,EACV,QAASoxI,EACT,SAAUjuF,EACV,QAAS2nD,EACT,OAAQC,EACR,UAAWE,EACX,QAASD,CACb,CAAG,EAAgB7+G,EAAM,cAAc,MAAO,CAC1C,UAAW,GAAG,OAAOolC,EAAW,aAAa,EAC7C,MAAOmkC,EACP,gBAAiB07E,CACrB,EAAKhjD,CAAK,CAAC,CACX,EACIihE,GAAyBljK,EAAM,WAAW,SAAU3G,EAAOP,EAAK,CAClE,IAAIqqK,EAAoBC,EACpBhtG,EAAmB/8D,EAAM,UAC3B+rC,EAAYgxB,IAAqB,OAAS,eAAiBA,EAC3Dh4B,EAAY/kC,EAAM,UAClBwmE,EAAWxmE,EAAM,SACjBgqK,EAAiBhqK,EAAM,QACvBhS,EAAUg8K,IAAmB,OAAS,CAAA,EAAKA,EAC3CxvJ,EAAWxa,EAAM,SACjB1O,EAAe0O,EAAM,aACrBzU,EAAQyU,EAAM,MACd/G,EAAO+G,EAAM,KACbkoC,EAAWloC,EAAM,SACjBiqK,EAAmBjqK,EAAM,UACzB+lD,EAAYkkH,IAAqB,OAAS,GAAKA,EAC/CC,EAAoBlqK,EAAM,WAC1Bw6C,EAAa0vH,IAAsB,OAAS,eAAiBA,EAC7D3sH,EAAY38B,GAAyB5gB,EAAOsyC,EAAS,EACnDmiB,EAAe9tD,EAAM,OAAO,IAAI,EAChCqU,EAAYrU,EAAM,QAAQ,UAAY,CACxC,OAAOkM,GAAW4hD,EAAch1D,CAAG,CACrC,EAAG,CAACg1D,EAAch1D,CAAG,CAAC,EAClB0qK,EAAmBxjK,EAAM,QAAQ,UAAY,CAC/C,OAAO+iK,GAAiB17K,CAAO,CACjC,EAAG,CAACA,CAAO,CAAC,EAIRkuE,EAAkBl0B,IAAgB8hI,EAAqBK,EAAiB,CAAC,KAAO,MAAQL,IAAuB,OAAS,OAASA,EAAmB,MAAO,CAC3J,MAAOv+K,EACP,aAAc+F,CACpB,CAAK,EACD6qE,EAAmBr+C,GAAeo+C,EAAiB,CAAC,EACpDqmE,EAAWpmE,EAAiB,CAAC,EAC7B8vF,EAAc9vF,EAAiB,CAAC,EAG9Bz0B,EAAkB/gC,EAAM,SAAS,EAAK,EACxCghC,EAAmB7pB,GAAe4pB,EAAiB,CAAC,EACpD0iI,EAAYziI,EAAiB,CAAC,EAC9B0iI,EAAe1iI,EAAiB,CAAC,EAC/Bg2B,EAAe,SAAsBlvE,EAAOkH,GAAK,CACnDs2J,EAAYt2J,EAAG,EACfuyC,GAAa,MAA+BA,EAASvyC,EAAG,CAC1D,EACI20K,EAAW94G,GAAKjU,EAAW,CAAC,UAAU,CAAC,EAGvCuuB,EAAmBnlE,EAAM,SAAS,EAAK,EACzColE,EAAmBjuD,GAAeguD,EAAkB,CAAC,EACrDy+F,EAAax+F,EAAiB,CAAC,EAC/By+F,EAAgBz+F,EAAiB,CAAC,EAChCixC,EAAmBr2G,EAAM,SAAS,EAAK,EACzCs2G,EAAmBn/F,GAAek/F,EAAkB,CAAC,EACrDytD,EAAYxtD,EAAiB,CAAC,EAC9BytD,EAAeztD,EAAiB,CAAC,EAC/B0tD,EAAc,UAAuB,CACvCD,EAAa,EAAI,CACnB,EACIE,GAAa,UAAsB,CACrCF,EAAa,EAAK,CACpB,EACIG,GAAkB,UAA2B,CAC/CL,EAAc,EAAK,CACrB,EAGIM,GAAc,SAAqBr8K,EAAO,CACxCA,EAAM,MAAQ,OAChB+7K,EAAc,EAAI,CAEtB,EAGIpW,GAAW,SAAkB7lI,EAAQ,CACvC,IAAI4tB,GAAeguH,EAAiB,UAAU,SAAUl2K,GAAQ,CAC9D,OAAOA,GAAO,QAAUsuI,CAC1B,CAAC,EACGvsD,EAAQm0F,EAAiB,OACzB/M,IAAajhH,GAAe5tB,EAASynD,GAASA,EAC9C+0F,GAAaZ,EAAiB/M,EAAS,EACvC2N,KACF9e,EAAY8e,GAAW,KAAK,EAC5B7iI,GAAa,MAA+BA,EAAS6iI,GAAW,KAAK,EAEzE,EACI/xB,GAAgB,SAAuBvqJ,EAAO,CAChD,OAAQA,EAAM,IAAG,CACf,IAAK,YACL,IAAK,UACH2lK,GAAS,EAAE,EACX,MACF,IAAK,aACL,IAAK,YACHA,GAAS,CAAC,EACV,KACR,CACE,EACA,OAAoBztJ,EAAM,cAAc,MAAO6F,GAAS,CACtD,KAAM,aACN,aAAc,oBACd,SAAUgO,EAAW,OAAY,CACrC,EAAK8vJ,EAAU,CACX,UAAWn+J,GAAW4/B,GAAYg+H,EAAe,CAAA,EAAIh8J,EAAgBg8J,EAAc,GAAG,OAAOh+H,EAAW,MAAM,EAAGhH,IAAc,KAAK,EAAGh3B,EAAgBg8J,EAAc,GAAG,OAAOh+H,EAAW,WAAW,EAAGvxB,CAAQ,EAAGzM,EAAgBg8J,EAAc,GAAG,OAAOh+H,EAAW,WAAW,EAAGy6B,CAAQ,EAAGujG,GAAehkH,CAAS,EACvT,IAAK/qC,CACT,CAAG,EAAgBrU,EAAM,cAAc,MAAO,CAC1C,UAAW,GAAG,OAAOolC,EAAW,QAAQ,CAC5C,EAAkBplC,EAAM,cAAc6hK,GAAa,CAC/C,SAAUhiG,EACV,UAAWz6B,EACX,MAAOw2F,EACP,aAAc9tE,EACd,WAAY,GAAG,OAAO1oB,EAAW,GAAG,EAAE,OAAOyO,CAAU,EACvD,UAAWzV,EACX,cAAe,SAAuBpvC,EAAK,CACzC,OAAOw0K,EAAiB,UAAU,SAAU3vK,GAAG,CAC7C,OAAOA,GAAE,QAAU7E,CACrB,CAAC,CACH,EACA,cAAe,UAAyB,CACtC00K,EAAa,EAAI,CACnB,EACA,YAAa,UAAuB,CAClCA,EAAa,EAAK,CACpB,CACJ,CAAG,EAAGF,EAAiB,IAAI,SAAUa,EAAiB,CAClD,IAAIC,EACJ,OAAoBtkK,EAAM,cAAcijK,GAAyBp9J,GAAS,CAAA,EAAIw+J,EAAiB,CAC7F,KAAM/xK,EACN,IAAK+xK,EAAgB,MACrB,UAAWj/H,EACX,UAAW5/B,GAAW6+J,EAAgB,UAAW,GAAG,OAAOj/H,EAAW,OAAO,GAAIk/H,EAAe,CAAA,EAAIl9J,EAAgBk9J,EAAc,GAAG,OAAOl/H,EAAW,gBAAgB,EAAGi/H,EAAgB,QAAUzoC,GAAY,CAAC6nC,CAAS,EAAGr8J,EAAgBk9J,EAAc,GAAG,OAAOl/H,EAAW,eAAe,EAAG0+H,GAAaF,GAAcS,EAAgB,QAAUzoC,CAAQ,EAAG0oC,EAAY,EAC9W,QAASD,EAAgB,QAAUzoC,EACnC,SAAU5kE,EACV,QAASgtG,EACT,OAAQC,GACR,UAAW5xB,GACX,QAAS8xB,GACT,YAAaD,GACb,SAAU,CAAC,CAACrwJ,GAAY,CAAC,CAACwwJ,EAAgB,QAChD,CAAK,CAAC,CACJ,CAAC,CAAC,CAAC,CACL,CAAC,EACG,QAAQ,IAAI,WAAa,eAC3BnB,GAAU,YAAc,aAE1B,IAAIqB,GAAiBrB,GC9NrB,SAASsB,GAAqBh5E,EAAKluE,EAAO,CACxC,MAAO,CACL,CAAC,GAAGkuE,CAAG,KAAKA,CAAG,WAAWA,CAAG,QAAQ,EAAG,CACtC,MAAOluE,EAAM,kBACb,OAAQ,aACd,CACA,CACA,CACA,SAASmnJ,GAAqBnnJ,EAAO,CACnC,MAAO,CACL,gBAAiBA,EAAM,eACvB,UAAWA,EAAM,iBACrB,CACA,CACA,MAAMonJ,GAA2B,OAAO,OAAO,CAC7C,SAAU,QACZ,EAAGr7H,EAAY,EAETs7H,GAAoBrnJ,GAAS,CACjC,KAAM,CACJ,aAAA0pB,CACJ,EAAM1pB,EACEsnJ,EAActnJ,EAAM,KAAKA,EAAM,aAAa,EAAE,IAAIA,EAAM,KAAKA,EAAM,YAAY,EAAE,IAAI,CAAC,CAAC,EAAE,MAAK,EAC9FunJ,EAAgBvnJ,EAAM,KAAKA,EAAM,eAAe,EAAE,IAAIA,EAAM,KAAKA,EAAM,YAAY,EAAE,IAAI,CAAC,CAAC,EAAE,MAAK,EAClGwnJ,EAAgBxnJ,EAAM,KAAKA,EAAM,eAAe,EAAE,IAAIA,EAAM,KAAKA,EAAM,YAAY,EAAE,IAAI,CAAC,CAAC,EAAE,MAAK,EACxG,MAAO,CACL,CAAC0pB,CAAY,EAAG,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,GAAIsC,GAAehsB,CAAK,CAAC,EAAG,CAC5I,QAAS,eACT,QAASA,EAAM,aACf,MAAOA,EAAM,UACb,WAAYA,EAAM,QAClB,aAAcA,EAAM,aACpB,WAAY,OAAOA,EAAM,iBAAiB,IAAIA,EAAM,eAAe,EACzE,CAAK,EAAG6sB,GAAc7sB,CAAK,CAAC,EAAG,CACzB,CAAC,GAAG0pB,CAAY,QAAQ,EAAG,CACzB,SAAU,WACV,QAAS,OACT,WAAY,UACZ,aAAc,aACd,cAAe,MACf,MAAO,MACf,EAEM,CAAC,IAAIA,CAAY,MAAM,EAAG,CACxB,UAAW,KACnB,EACM,CAAC,IAAIA,CAAY,WAAW,EAAG,CAC7B,CAAC,GAAGA,CAAY,QAAQ,EAAG,CACzB,cAAe,QACzB,EACQ,CAAC,GAAGA,CAAY,QAAQ,EAAG,CACzB,MAAO,OACP,OAAQ,EACR,QAAS,KAAK5oB,GAAKd,EAAM,UAAU,CAAC,EAC9C,CACA,EAEM,CAAC,IAAI0pB,CAAY,QAAQ,EAAG,CAC1B,QAAS,MACjB,EACM,CAAC,IAAIA,CAAY,UAAUA,CAAY,OAAO,EAAG,CAC/C,KAAM,EACN,SAAU,CAClB,EAEM,CAAC,GAAGA,CAAY,OAAO,EAAG,CACxB,SAAU,WACV,UAAW,SACX,OAAQ,UACR,WAAY,SAAS1pB,EAAM,iBAAiB,IAAIA,EAAM,eAAe,GACrE,aAAcA,EAAM,eAGpB,UAAW,gBACX,aAAc,OAAO,OAAO,OAAO,OAAO,GAAImnJ,GAAqBnnJ,CAAK,CAAC,EAAG,CAC1E,MAAOA,EAAM,iBACvB,CAAS,EACD,YAAa,OAAO,OAAO,CAAA,EAAI4sB,GAAgB5sB,CAAK,CAAC,EACrD,WAAY,CACV,QAAS,KACT,SAAU,WACV,OAAQ,GACR,MAAO,OACP,OAAQ,OACR,IAAK,EACL,iBAAkB,EAClB,aAAc,UACd,QAAS,EACT,WAAY,WAAWA,EAAM,iBAAiB,GAG9C,cAAe,MACzB,EACQ,CAAC,eAAe0pB,CAAY,uBAAuBA,CAAY,iBAAiB,EAAG,CACjF,MAAO1pB,EAAM,eACb,WAAY,CACV,QAAS,EACT,gBAAiBA,EAAM,WACnC,CACA,EACQ,CAAC,gBAAgB0pB,CAAY,uBAAuBA,CAAY,iBAAiB,EAAG,CAClF,MAAO1pB,EAAM,eACb,WAAY,CACV,QAAS,EACT,gBAAiBA,EAAM,YACnC,CACA,EACQ,UAAW,OAAO,OAAO,CACvB,UAAWsnJ,EACX,WAAYxmJ,GAAKwmJ,CAAW,EAC5B,QAAS,KAAKxmJ,GAAKd,EAAM,0BAA0B,CAAC,EAC9D,EAAWonJ,EAAwB,EAE3B,aAAc,CACZ,kBAAmBpnJ,EAAM,KAAKA,EAAM,QAAQ,EAAE,IAAI,CAAC,EAAE,MAAK,CACpE,EACQ,UAAW,CACT,SAAU,WACV,gBAAiB,EACjB,iBAAkB,EAClB,MAAO,EACP,OAAQ,EACR,QAAS,EACT,cAAe,MACzB,CACA,EAEM,CAAC,GAAG0pB,CAAY,QAAQ,EAAG,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIy9H,GAAqBnnJ,CAAK,CAAC,EAAG,CACvF,SAAU,WACV,gBAAiB,EACjB,iBAAkB,EAClB,MAAO,EACP,OAAQ,OACR,QAAS,GAAGc,GAAKd,EAAM,UAAU,CAAC,KAClC,aAAcA,EAAM,eACpB,WAAY,aAAaA,EAAM,kBAAkB,IAAIA,EAAM,eAAe,YAAYA,EAAM,kBAAkB,IAAIA,EAAM,eAAe,GACvI,CAAC,OAAO0pB,CAAY,aAAaA,CAAY,uBAAuBA,CAAY,wBAAwB,EAAG,CACzG,gBAAiB,aAC3B,CACA,CAAO,EAED,CAAC,IAAIA,CAAY,KAAK,EAAG,CACvB,aAAc1pB,EAAM,eACpB,CAAC,GAAG0pB,CAAY,aAAa,EAAG,CAC9B,UAAW69H,EACX,WAAYzmJ,GAAKymJ,CAAa,EAC9B,QAAS,KAAKzmJ,GAAKd,EAAM,0BAA0B,CAAC,GACpD,SAAUA,EAAM,UAC1B,EACQ,CAAC,GAAG0pB,CAAY,UAAUA,CAAY,QAAQ,EAAG,CAC/C,aAAc1pB,EAAM,YAC9B,CACA,EACM,CAAC,IAAI0pB,CAAY,KAAK,EAAG,CACvB,aAAc1pB,EAAM,eACpB,CAAC,GAAG0pB,CAAY,aAAa,EAAG,CAC9B,UAAW89H,EACX,WAAY1mJ,GAAK0mJ,CAAa,EAC9B,QAAS,KAAK1mJ,GAAKd,EAAM,4BAA4B,CAAC,EAChE,EACQ,CAAC,GAAG0pB,CAAY,UAAUA,CAAY,QAAQ,EAAG,CAC/C,aAAc1pB,EAAM,cAC9B,CACA,CACA,CAAK,EAAGknJ,GAAqB,cAAcx9H,CAAY,QAAS1pB,CAAK,CAAC,EAAGknJ,GAAqB,GAAGx9H,CAAY,iBAAkB1pB,CAAK,CAAC,EAAG,CAElI,CAAC,GAAG0pB,CAAY,6BAA6B,EAAG,CAC9C,WAAY,aAAa1pB,EAAM,kBAAkB,IAAIA,EAAM,eAAe,WAAWA,EAAM,kBAAkB,IAAIA,EAAM,eAAe,GACtI,WAAY,kBACpB,EACM,CAAC,IAAI0pB,CAAY,cAAc,EAAG,CAChC,aAAc,KACd,CAAC,GAAGA,CAAY,UAAUA,CAAY,QAAQ,EAAG,CAC/C,aAAc,IACxB,CACA,CACA,CAAK,CACL,CACA,EAuBA+9H,GAAepgI,GAAc,YAAarnB,GAAS,CACjD,KAAM,CACJ,UAAA0d,EACA,KAAAtF,CACJ,EAAMpY,EACE0nJ,EAAiBzhI,GAAWjmB,EAAO,CACvC,2BAA4BoY,EAAKpY,EAAM,wBAAwB,EAAE,IAAI0d,CAAS,EAAE,MAAK,EACrF,6BAA8BtF,EAAKpY,EAAM,0BAA0B,EAAE,IAAI0d,CAAS,EAAE,MAAK,CAC7F,CAAG,EACD,MAAO,CAAC2pI,GAAkBK,CAAc,CAAC,CAC3C,EA/BqC1nJ,GAAS,CAC5C,KAAM,CACJ,eAAA2nJ,EACA,UAAA7iH,EACA,mBAAAmiF,EACA,gBAAA2gC,EACA,UAAA75E,EACA,cAAA85E,EACA,cAAAC,CACJ,EAAM9nJ,EACJ,MAAO,CACL,aAAc6nJ,EACd,QAASC,EACT,UAAWH,EACX,eAAgB7iH,EAChB,YAAamiF,EACb,eAAgB2gC,EAChB,aAAc75E,EACd,kBAAmBjpC,CACvB,CACA,CAWwB,ECrNxB,IAAIja,GAAgC,SAAU/kD,EAAGe,EAAG,CAClD,IAAId,EAAI,CAAA,EACR,QAASe,KAAKhB,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGgB,CAAC,GAAKD,EAAE,QAAQC,CAAC,EAAI,IAAGf,EAAEe,CAAC,EAAIhB,EAAEgB,CAAC,GAC/F,GAAIhB,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WAAY,QAAS,EAAI,EAAGgB,EAAI,OAAO,sBAAsBhB,CAAC,EAAG,EAAIgB,EAAE,OAAQ,IAClID,EAAE,QAAQC,EAAE,CAAC,CAAC,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKhB,EAAGgB,EAAE,CAAC,CAAC,IAAGf,EAAEe,EAAE,CAAC,CAAC,EAAIhB,EAAEgB,EAAE,CAAC,CAAC,GAElG,OAAOf,CACT,EAQA,SAASgiL,GAAiC/3K,EAAQ,CAChD,OAAO,OAAOA,GAAW,UAAY,CAAC,EAAEA,GAAW,MAAqCA,EAAO,KACjG,CA8DA,MAAM41K,GA7DiCljK,EAAM,WAAW,CAAC3G,EAAOP,IAAQ,CACtE,MAAM4vJ,EAAc39G,GAAK,EACnB,CACF,UAAWnN,EACX,UAAAwhB,EACA,cAAAY,EACA,MAAAoP,EACA,QAAA/nE,EAAU,CAAA,EACV,KAAM2mE,EAAa,SACnB,MAAAtyC,EACA,SAAAmkD,EACA,MAAAK,EAAQ,UACR,KAAA5tE,EAAOo2J,CACb,EAAQrvJ,EACJu9C,EAAYzO,GAAO9uC,EAAO,CAAC,YAAa,YAAa,gBAAiB,QAAS,UAAW,OAAQ,QAAS,WAAY,QAAS,MAAM,CAAC,EACnI,CACJ,aAAA8kC,EACA,UAAAC,EACA,UAAWgnB,EACX,MAAOC,CACX,EAAMrnB,GAAmB,WAAW,EAC5BoH,EAAYjH,EAAa,YAAaP,CAAkB,EAExD,CAAC8H,EAAY1mB,EAAQ2mB,CAAS,EAAIX,GAASI,CAAS,EAEpDiqB,EAAatB,GAAQC,CAAU,EAE/Bs3G,EAAkBtlK,EAAM,QAAQ,IAAM3Y,EAAQ,IAAIiG,GAAU,CAChE,GAAI+3K,GAAiC/3K,CAAM,EAAG,CAC5C,KAAM,CACF,KAAA6xD,EACA,MAAA8iD,CACV,EAAY30G,EACJi4K,EAAap9H,GAAO76C,EAAQ,CAAC,OAAQ,OAAO,CAAC,EAC/C,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIi4K,CAAU,EAAG,CAClD,MAAqBvlK,EAAM,cAAcA,EAAM,SAAU,KAAmBA,EAAM,cAAc,OAAQ,CACtG,UAAW,GAAGolC,CAAS,YACjC,EAAW+Z,CAAI,EAAG8iD,GAAsBjiG,EAAM,cAAc,OAAQ,KAAMiiG,CAAK,CAAC,CAChF,CAAO,CACH,CACA,OAAO30G,CACT,CAAC,EAAG,CAACjG,EAAS+9C,CAAS,CAAC,EAClBomD,EAAMhmF,GAAW45C,EAAWY,EAAeoF,EAAkB,CACjE,CAAC,GAAGhgB,CAAS,QAAQ,EAAGgqB,EACxB,CAAC,GAAGhqB,CAAS,KAAK,EAAGiqB,IAAe,QACpC,CAAC,GAAGjqB,CAAS,KAAK,EAAGiqB,IAAe,QACpC,CAAC,GAAGjqB,CAAS,WAAW,EAAGy6B,EAC3B,CAAC,GAAGz6B,CAAS,UAAU86B,CAAK,EAAE,EAAGA,IAAU,OAC/C,EAAKlhD,EAAQ2mB,CAAS,EACd1Z,EAAc,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIo5B,CAAY,EAAG3pC,CAAK,EACxE,OAAOgqB,EAAwB1lC,EAAM,cAAcwlK,GAAa,OAAO,OAAO,CAAA,EAAI5uH,EAAW,CAC3F,KAAMtkD,EACN,UAAWk5F,EACX,MAAOv/D,EACP,QAASq5I,EACT,IAAKxsK,EACL,UAAWssC,EACX,UAAWhH,EACX,SAAUyhC,CACd,CAAG,CAAC,CAAC,CACL,CAAC,EAEG,QAAQ,IAAI,WAAa,eAC3BqjG,GAAU,YAAc,aClF1B,IAAIuC,GAAa,CAAE,KAAQ,CAAE,IAAO,MAAO,MAAS,CAAE,QAAW,gBAAiB,UAAa,OAAO,EAAI,SAAY,CAAC,CAAE,IAAO,OAAQ,MAAS,CAAE,EAAK,mLAAmL,EAAI,CAAC,EAAI,KAAQ,KAAM,MAAS,UAAU,ECMjXA,GAAa,SAAoBpsK,EAAOP,EAAK,CAC/C,OAAoBkH,EAAM,cAAcogD,GAAUv6C,GAAS,CAAA,EAAIxM,EAAO,CACpE,IAAKP,EACL,KAAM4sK,EACV,CAAG,CAAC,CACJ,EAGIplH,GAAuBtgD,EAAM,WAAWylK,EAAU,EAClD,QAAQ,IAAI,WAAa,eAC3BnlH,GAAQ,YAAc,cCjBjB,SAASqlH,GAAStsK,EAAO,CAC9B,MAAO,CAAC,EAAEA,EAAM,aAAeA,EAAM,WACvC,CACO,SAASusK,GAAgBvsK,EAAO,CACrC,MAAO,CAAC,EAAEA,EAAM,QAAUA,EAAM,QAAUA,EAAM,WAClD,CAGA,SAASwsK,GAAW/9K,EAAOhD,EAAQF,EAAO,CAIxC,IAAIkhL,EAAgBhhL,EAAO,UAAU,EAAI,EAGrCihL,EAAW,OAAO,OAAOj+K,EAAO,CAClC,OAAQ,CACN,MAAOg+K,CACb,EACI,cAAe,CACb,MAAOA,CACb,CACA,CAAG,EAGD,OAAAA,EAAc,MAAQlhL,EAIlB,OAAOE,EAAO,gBAAmB,UAAY,OAAOA,EAAO,cAAiB,WAC9EghL,EAAc,eAAiBhhL,EAAO,eACtCghL,EAAc,aAAehhL,EAAO,cAEtCghL,EAAc,kBAAoB,UAAY,CAC5ChhL,EAAO,kBAAkB,MAAMA,EAAQ,SAAS,CAClD,EACOihL,CACT,CACO,SAASC,GAAgBlhL,EAAQX,EAAGo9C,EAAUk3C,EAAa,CAChE,GAAKl3C,EAGL,KAAIz5C,EAAQ3D,EACZ,GAAIA,EAAE,OAAS,QAAS,CAatB2D,EAAQ+9K,GAAW1hL,EAAGW,EAAQ,EAAE,EAChCy8C,EAASz5C,CAAK,EACd,MACF,CAKA,GAAIhD,EAAO,OAAS,QAAU2zF,IAAgB,OAAW,CACvD3wF,EAAQ+9K,GAAW1hL,EAAGW,EAAQ2zF,CAAW,EACzCl3C,EAASz5C,CAAK,EACd,MACF,CACAy5C,EAASz5C,CAAK,EAChB,CACO,SAASm+K,GAAav4J,EAASpgB,EAAQ,CAC5C,GAAKogB,EACL,CAAAA,EAAQ,MAAMpgB,CAAM,EAGpB,IAAIoO,EAAOpO,GAAU,CAAA,EACnB44K,EAASxqK,EAAK,OAChB,GAAIwqK,EAAQ,CACV,IAAI1uJ,EAAM9J,EAAQ,MAAM,OACxB,OAAQw4J,EAAM,CACZ,IAAK,QACHx4J,EAAQ,kBAAkB,EAAG,CAAC,EAC9B,MACF,IAAK,MACHA,EAAQ,kBAAkB8J,EAAKA,CAAG,EAClC,MACF,QACE9J,EAAQ,kBAAkB,EAAG8J,CAAG,CACxC,CACE,EACF,CCpFA,IAAI2uJ,GAAyBnmK,EAAM,WAAW,SAAU3G,EAAOP,EAAK,CAClE,IAAIy7F,EAAQ6xE,EAASC,EACjBC,EAAUjtK,EAAM,aAClB+M,EAAW/M,EAAM,SACjB+rC,EAAY/rC,EAAM,UAClB9R,EAAS8R,EAAM,OACftN,EAASsN,EAAM,OACfktK,EAAcltK,EAAM,YACpBmtK,EAAantK,EAAM,WACnB+lD,EAAY/lD,EAAM,UAClBqiB,EAAQriB,EAAM,MACdwa,EAAWxa,EAAM,SACjBotK,EAAWptK,EAAM,SACjBkoG,EAAUloG,EAAM,QAChB4sK,EAAe5sK,EAAM,aACrBm9F,EAAan9F,EAAM,WACnBzU,EAAQyU,EAAM,MACdqtK,EAAcrtK,EAAM,YACpBstK,EAASttK,EAAM,OACfoM,EAAUpM,EAAM,QAChBmM,EAAanM,EAAM,WACnButK,EAAYvtK,EAAM,UAClB2W,EAAS3W,EAAM,OACfyvC,EAAazvC,EAAM,WACnB2kH,EAAU3kH,EAAM,QACd2lG,EAAe54F,GAAsDkgK,EACrEO,GAAyB/9H,GAAe,KAAgC,OAASA,EAAW,eAAiB,OAC7Gg+H,GAAyBh+H,GAAe,KAAgC,OAASA,EAAW,eAAiB,OAC7Gi+H,GAAoBj+H,GAAe,KAAgC,OAASA,EAAW,UAAY,OACnGk+H,GAAuBl+H,GAAe,KAAgC,OAASA,EAAW,aAAe,OACzGglB,EAAe/0D,EAAAA,OAAO,IAAI,EAC1BuvJ,EAAe,SAAsBnkK,GAAG,CAC1C,IAAImuE,IACCA,GAAwBxE,EAAa,WAAa,MAAQwE,KAA0B,QAAUA,GAAsB,SAASnuE,GAAE,MAAM,IACxI8hL,GAAiB,MAAmCA,EAAY,EAEpE,EACIgB,EAAWrB,GAAgBvsK,CAAK,EAChCqU,EAAuB8zC,EAAAA,aAAaw9C,EAAc,CACpD,MAAOp6G,EACP,UAAWsiL,IAAM3yE,EAASyK,EAAa,SAAW,MAAQzK,IAAW,OAAS,OAASA,EAAO,UAAW,CAAC0yE,IAAazhK,GAAe,KAAgC,OAASA,EAAW,QAAQ,GAAK,IAC3M,CAAG,EAGG2hK,EAAWpuK,EAAAA,OAAO,IAAI,EAQ1B,GAPAiH,EAAM,oBAAoBlH,EAAK,UAAY,CACzC,MAAO,CACL,cAAequK,EAAS,SAAWr5G,EAAa,OACtD,CACE,CAAC,EAGGm5G,EAAU,CAEZ,IAAIxwE,EAAY,KAChB,GAAID,EAAY,CACd,IAAI4wE,EAAY,CAACvzJ,GAAY,CAAC4yJ,GAAY7hL,EACtCyiL,EAAe,GAAG,OAAOjiI,EAAW,aAAa,EACjDw9B,EAAW98D,GAAQ0wF,CAAU,IAAM,UAAYA,IAAe,MAAQA,IAAe,QAAUA,EAAW,UAAYA,EAAW,UAAY,IACjJC,EAAyBz2F,EAAM,cAAc,SAAU,CACrD,KAAM,SACN,SAAU,GACV,QAAS,SAAiBlY,GAAO,CAC/B4+K,GAAgB,MAAkCA,EAAY5+K,EAAK,EACnEk2H,GAAY,MAA8BA,EAAO,CACnD,EAIA,YAAa,SAAqB75H,GAAG,CACnC,OAAOA,GAAE,eAAc,CACzB,EACA,UAAW+iL,GAAKG,EAAcjgK,EAAgBA,EAAgB,GAAI,GAAG,OAAOigK,EAAc,SAAS,EAAG,CAACD,CAAS,EAAG,GAAG,OAAOC,EAAc,aAAa,EAAG,CAAC,CAACt7K,CAAM,CAAC,CAC5K,EAAS62E,CAAQ,CACb,CACA,IAAI0kG,GAAwB,GAAG,OAAOliI,EAAW,gBAAgB,EAC7DmiI,GAAkBL,GAAKI,GAAuBlgK,EAAgBA,EAAgBA,EAAgBA,EAAgBA,EAAgB,CAAA,EAAI,GAAG,OAAOg+B,EAAW,WAAW,EAAGvxB,CAAQ,EAAG,GAAG,OAAOyzJ,GAAuB,WAAW,EAAGzzJ,CAAQ,EAAG,GAAG,OAAOyzJ,GAAuB,UAAU,EAAG/lE,CAAO,EAAG,GAAG,OAAO+lE,GAAuB,WAAW,EAAGb,CAAQ,EAAG,GAAG,OAAOa,GAAuB,uBAAuB,EAAGv7K,GAAUyqG,GAAc5xG,CAAK,EAAG6gB,GAAY,KAA6B,OAASA,EAAQ,aAAcD,GAAe,KAAgC,OAASA,EAAW,aAAcA,GAAe,KAAgC,OAASA,EAAW,OAAO,EAC1pBgiK,IAAcz7K,GAAUyqG,IAA4Bx2F,EAAM,cAAc,OAAQ,CAClF,UAAWknK,GAAK,GAAG,OAAO9hI,EAAW,SAAS,EAAG5/B,GAAe,KAAgC,OAASA,EAAW,MAAM,EAC1H,MAAOwK,GAAW,KAA4B,OAASA,EAAO,MACpE,EAAOymF,EAAW1qG,CAAM,EACpB2hB,EAAuB1N,EAAM,cAAc6mK,EAAuBhhK,GAAS,CACzE,UAAW0hK,GACX,MAAOv3J,GAAW,KAA4B,OAASA,EAAO,aAC9D,QAASs4I,CACf,EAAOse,GAAc,KAA+B,OAASA,EAAU,aAAc,CAC/E,IAAK94G,CACX,CAAK,EAAGvmE,GAAuByY,EAAM,cAAc,OAAQ,CACrD,UAAWknK,GAAK,GAAG,OAAO9hI,EAAW,SAAS,EAAG5/B,GAAe,KAAgC,OAASA,EAAW,MAAM,EAC1H,MAAOwK,GAAW,KAA4B,OAASA,EAAO,MACpE,EAAOzoB,CAAM,EAAGmmB,EAAS85J,EAAU,CACjC,CAGA,GAAI7B,GAAStsK,CAAK,EAAG,CACnB,IAAIouK,GAAa,GAAG,OAAOriI,EAAW,QAAQ,EAC1CsiI,GAAW,GAAG,OAAOD,GAAY,QAAQ,EACzCE,EAAkB,GAAG,OAAOF,GAAY,UAAU,EAClDG,EAAyBV,GAAK,GAAG,OAAO9hI,EAAW,UAAU,EAAGqiI,GAAYhiK,GAAY,KAA6B,OAASA,EAAQ,QAASD,GAAe,KAAgC,OAASA,EAAW,OAAO,EACzNqiK,GAAuBX,GAAKS,EAAiBvgK,EAAgB,CAAA,EAAI,GAAG,OAAOugK,EAAiB,WAAW,EAAG9zJ,CAAQ,EAAGpO,GAAY,KAA6B,OAASA,EAAQ,MAAOD,GAAe,KAAgC,OAASA,EAAW,YAAY,EAIzQkI,EAAuB1N,EAAM,cAAc8mK,EAAuB,CAChE,UAAWe,GACX,IAAKV,CACX,EAAoBnnK,EAAM,cAAc+mK,EAAkB,CACpD,UAAWa,CACjB,EAAOrB,GAA4BvmK,EAAM,cAAcgnK,EAAqB,CACtE,UAAWU,EACjB,EAAOnB,CAAW,EAAG74J,EAAS84J,GAA2BxmK,EAAM,cAAcgnK,EAAqB,CAC5F,UAAWU,EACjB,EAAOlB,CAAU,CAAC,CAAC,CACjB,CAGA,OAAoBxmK,EAAM,aAAa0N,EAAS,CAC9C,UAAWw5J,IAAMd,EAAU14J,EAAQ,SAAW,MAAQ04J,IAAY,OAAS,OAASA,EAAQ,UAAWhnH,CAAS,GAAK,KACrH,MAAOjqC,EAAcA,EAAc,CAAA,GAAKkxJ,EAAU34J,EAAQ,SAAW,MAAQ24J,IAAY,OAAS,OAASA,EAAQ,KAAK,EAAG3qJ,CAAK,EAChI,OAAQirJ,CACZ,CAAG,CACH,CAAC,EC7HGh7H,GAAY,CAAC,MAAM,EAYR,SAASm8H,GAAS15K,EAAO25K,EAAW,CACjD,OAAO/nK,EAAM,QAAQ,UAAY,CAC/B,IAAIshD,EAAe,CAAA,EACfymH,IACFzmH,EAAa,KAAOx7C,GAAQiiK,CAAS,IAAM,UAAYA,EAAU,UAAYA,EAAU,UAAY,CAAC,CAACA,GAEvGzmH,EAAensC,EAAcA,EAAc,CAAA,EAAImsC,CAAY,EAAGlzD,CAAK,EACnE,IAAIsN,EAAO4lD,EACT2kD,EAAOvqG,EAAK,KACZ/J,EAAOsoB,GAAyBve,EAAMiwC,EAAS,EACjD,OAAOx2B,EAAcA,EAAc,CAAA,EAAIxjB,CAAI,EAAG,CAAA,EAAI,CAChD,KAAM,CAAC,CAACs0G,EACR,cAAe,OAAOA,GAAS,WAAaA,EAAO,OACnD,SAAUt0G,EAAK,UAAY,SAAU/M,EAAO,CAC1C,OAAOA,EAAM,MACf,CACN,CAAK,CACH,EAAG,CAACwJ,EAAO25K,CAAS,CAAC,CACvB,CC3BA,IAAIp8H,GAAY,CAAC,eAAgB,WAAY,UAAW,SAAU,eAAgB,YAAa,UAAW,YAAa,WAAY,WAAY,YAAa,YAAa,SAAU,YAAa,QAAS,OAAQ,UAAW,aAAc,SAAU,qBAAsB,kBAAkB,EAQxRozD,GAAqBvuC,EAAAA,WAAW,SAAUn3D,EAAOP,EAAK,CACxD,IAAImmG,EAAe5lG,EAAM,aACvBkoC,EAAWloC,EAAM,SACjBslH,EAAUtlH,EAAM,QAChBulH,EAASvlH,EAAM,OACf2uK,EAAe3uK,EAAM,aACrBylH,EAAYzlH,EAAM,UAClBwlH,EAAUxlH,EAAM,QAChB+8D,EAAmB/8D,EAAM,UACzB+rC,EAAYgxB,IAAqB,OAAS,WAAaA,EACvDviD,EAAWxa,EAAM,SACjB4uK,EAAW5uK,EAAM,SACjB+lD,EAAY/lD,EAAM,UAClBkpG,EAAYlpG,EAAM,UAClBtN,EAASsN,EAAM,OACf0uK,EAAY1uK,EAAM,UAClBjL,EAAQiL,EAAM,MACd+rJ,EAAc/rJ,EAAM,KACpBrS,EAAOo+J,IAAgB,OAAS,OAASA,EACzC3/I,EAAUpM,EAAM,QAChBmM,EAAanM,EAAM,WACnB2W,EAAS3W,EAAM,OACf6uK,EAAsB7uK,EAAM,mBAC5B8uK,EAAmB9uK,EAAM,iBACzB1H,EAAOsoB,GAAyB5gB,EAAOsyC,EAAS,EAC9ClK,EAAYrnC,EAAAA,SAAS,EAAK,EAC5BsnC,EAAavqB,GAAesqB,EAAW,CAAC,EACxC8/D,EAAU7/D,EAAW,CAAC,EACtB8/D,EAAa9/D,EAAW,CAAC,EACvB0mI,EAAiBrvK,EAAAA,OAAO,EAAK,EAC7BsoH,EAAatoH,EAAAA,OAAO,EAAK,EACzBknG,EAAWlnG,EAAAA,OAAO,IAAI,EACtBixE,EAAYjxE,EAAAA,OAAO,IAAI,EACvBgmE,EAAQ,SAAezxE,GAAQ,CAC7B2yG,EAAS,SACXgmE,GAAahmE,EAAS,QAAS3yG,EAAM,CAEzC,EAGIioE,EAAkBl0B,GAAehoC,EAAM,aAAc,CACrD,MAAOA,EAAM,KACnB,CAAK,EACDm8D,EAAmBr+C,GAAeo+C,EAAiB,CAAC,EACpD3wE,EAAQ4wE,EAAiB,CAAC,EAC1Bv0B,EAAWu0B,EAAiB,CAAC,EAC3BvoC,EAAqCroC,GAAU,KAAO,GAAK,OAAOA,CAAK,EAGvEo9C,EAAa5nC,EAAAA,SAAS,IAAI,EAC5B6nC,EAAa9qB,GAAe6qB,EAAY,CAAC,EACzCqmI,GAAYpmI,EAAW,CAAC,EACxBqmI,GAAermI,EAAW,CAAC,EAGzBsmI,GAAcT,GAAS15K,EAAO25K,CAAS,EACvCnzI,GAAY2zI,GAAY,KAAOhmE,EAC/BimE,GAAcD,GAAY,SAASt7I,CAAW,EAC9Cw7I,EAAe,CAAC,CAAC7zI,IAAa4zI,GAAc5zI,GAGhDi3G,EAAAA,oBAAoB/yI,EAAK,UAAY,CACnC,IAAI4vK,GACJ,MAAO,CACL,MAAO3pG,EACP,KAAM,UAAgB,CACpB,IAAIwmF,IACHA,GAAoBtlD,EAAS,WAAa,MAAQslD,KAAsB,QAAUA,GAAkB,KAAI,CAC3G,EACA,kBAAmB,SAA2B7zB,GAAO3rG,EAAKqY,GAAW,CACnE,IAAIonH,IACHA,GAAqBvlD,EAAS,WAAa,MAAQulD,KAAuB,QAAUA,GAAmB,kBAAkB9zB,GAAO3rG,EAAKqY,EAAS,CACjJ,EACA,OAAQ,UAAkB,CACxB,IAAIuqI,IACHA,GAAqB1oE,EAAS,WAAa,MAAQ0oE,KAAuB,QAAUA,GAAmB,OAAM,CAChH,EACA,MAAO1oE,EAAS,QAChB,gBAAiByoE,GAAqB1+F,EAAU,WAAa,MAAQ0+F,KAAuB,OAAS,OAASA,GAAmB,gBAAkBzoE,EAAS,OAClK,CACE,CAAC,EACDjnG,EAAAA,UAAU,UAAY,CAChBqoH,EAAW,UACbA,EAAW,QAAU,IAEvB7f,EAAW,SAAUzqG,GAAM,CACzB,OAAOA,IAAQ8c,EAAW,GAAQ9c,EACpC,CAAC,CACH,EAAG,CAAC8c,CAAQ,CAAC,EACb,IAAIsuB,EAAgB,SAAuBh+C,GAAGo2F,GAAc1xD,EAAM,CAChE,IAAI+/I,GAAWruF,GACf,GAAI,CAAC6tF,EAAe,SAAWG,GAAY,iBAAmBA,GAAY,KAAOA,GAAY,SAAShuF,EAAY,EAAIguF,GAAY,KAIhI,GAHAK,GAAWL,GAAY,gBAAgBhuF,GAAc,CACnD,IAAKguF,GAAY,GACzB,CAAO,EACGhuF,KAAiBquF,GAAU,CAC7B,IAAIC,GAAoBC,GACxBR,GAAa,GAAGO,GAAqB5oE,EAAS,WAAa,MAAQ4oE,KAAuB,OAAS,OAASA,GAAmB,iBAAmB,IAAKC,GAAqB7oE,EAAS,WAAa,MAAQ6oE,KAAuB,OAAS,OAASA,GAAmB,eAAiB,CAAC,CAAC,CAC3R,UACSjgJ,EAAK,SAAW,iBAGzB,OAEFoY,EAAS2nI,EAAQ,EACb3oE,EAAS,SACX+lE,GAAgB/lE,EAAS,QAAS97G,GAAGo9C,EAAUqnI,EAAQ,CAE3D,EACA5vK,EAAAA,UAAU,UAAY,CACpB,GAAIqvK,GAAW,CACb,IAAIU,IACHA,GAAqB9oE,EAAS,WAAa,MAAQ8oE,KAAuB,QAAUA,GAAmB,kBAAkB,MAAMA,GAAoBhzJ,GAAmBsyJ,EAAS,CAAC,CACnL,CACF,EAAG,CAACA,EAAS,CAAC,EACd,IAAIW,GAAmB,SAA0B7kL,GAAG,CAClDg+C,EAAch+C,GAAGA,GAAE,OAAO,MAAO,CAC/B,OAAQ,QACd,CAAK,CACH,EACI8kL,EAA2B,SAAkC9kL,GAAG,CAClEikL,EAAe,QAAU,GACzBjmI,EAAch+C,GAAGA,GAAE,cAAc,MAAO,CACtC,OAAQ,gBACd,CAAK,EACDgkL,GAAqB,MAAuCA,EAAiBhkL,EAAC,CAChF,EACIkuJ,GAAgB,SAAuBluJ,GAAG,CACxC6jL,GAAgB7jL,GAAE,MAAQ,SAAW,CAACk9H,EAAW,UACnDA,EAAW,QAAU,GACrB2mD,EAAa7jL,EAAC,GAEhB26H,GAAc,MAAgCA,EAAU36H,EAAC,CAC3D,EACIggL,GAAc,SAAqBhgL,GAAG,CACpCA,GAAE,MAAQ,UACZk9H,EAAW,QAAU,IAEvBxC,GAAY,MAA8BA,EAAQ16H,EAAC,CACrD,EACI6/K,GAAc,SAAqB7/K,GAAG,CACxCq9G,EAAW,EAAI,EACfmd,GAAY,MAA8BA,EAAQx6H,EAAC,CACrD,EACI8/K,GAAa,SAAoB9/K,GAAG,CAClCk9H,EAAW,UACbA,EAAW,QAAU,IAEvB7f,EAAW,EAAK,EAChBod,GAAW,MAA6BA,EAAOz6H,EAAC,CAClD,EACIuiL,GAAc,SAAqBviL,GAAG,CACxC88C,EAAS,EAAE,EACX89B,EAAK,EACDkhC,EAAS,SACX+lE,GAAgB/lE,EAAS,QAAS97G,GAAGo9C,CAAQ,CAEjD,EAGI2nI,GAAgBT,GAAgB,GAAG,OAAOrjI,EAAW,eAAe,EACpE64E,GAAkB,UAA2B,CAE/C,IAAIn5D,GAAa+F,GAAKxxD,EAAO,CAAC,YAAa,eAAgB,cAAe,aAAc,SAAU,SAAU,aAG5G,eAAgB,YAAa,QAAS,UAAW,WAAY,SAAU,aAAc,SAAS,CAAC,EAC/F,OAAoB2G,EAAM,cAAc,QAAS6F,GAAS,CACxD,aAAco5F,CACpB,EAAOn6C,GAAY,CACb,SAAUkkH,GACV,QAAShF,GACT,OAAQC,GACR,UAAW5xB,GACX,QAAS8xB,GACT,UAAW+C,GAAK9hI,EAAWh+B,EAAgB,CAAA,EAAI,GAAG,OAAOg+B,EAAW,WAAW,EAAGvxB,CAAQ,EAAGrO,GAAe,KAAgC,OAASA,EAAW,KAAK,EACrK,MAAOwK,GAAW,KAA4B,OAASA,EAAO,MAC9D,IAAKiwF,EACL,KAAMgoE,EACN,KAAMjhL,EACN,mBAAoB,SAA4B7C,EAAG,CACjDikL,EAAe,QAAU,GACzBF,GAAwB,MAA0CA,EAAoB/jL,CAAC,CACzF,EACA,iBAAkB8kL,CACxB,CAAK,CAAC,CACJ,EACIE,GAAY,UAAqB,CAEnC,IAAIC,GAAe,OAAOx0I,EAAS,EAAI,EACvC,GAAI7oC,GAAUw8K,GAAY,KAAM,CAC9B,IAAIc,GAAYd,GAAY,cAAgBA,GAAY,cAAc,CACpE,MAAOt7I,EACP,MAAOu7I,GACP,UAAW5zI,EACnB,CAAO,EAAI,GAAG,OAAO4zI,EAAW,EAAE,OAAOY,GAAe,MAAM,OAAOx0I,EAAS,EAAI,EAAE,EAC9E,OAAoB50B,EAAM,cAAcA,EAAM,SAAU,KAAMuoK,GAAY,MAAqBvoK,EAAM,cAAc,OAAQ,CACzH,UAAWknK,GAAK,GAAG,OAAO9hI,EAAW,oBAAoB,EAAGh+B,EAAgB,CAAA,EAAI,GAAG,OAAOg+B,EAAW,wBAAwB,EAAG,CAAC,CAACr5C,CAAM,EAAGyZ,GAAe,KAAgC,OAASA,EAAW,KAAK,EACnN,MAAO2P,EAAc,CAAA,EAAInF,GAAW,KAA4B,OAASA,EAAO,KAAK,CAC7F,EAASq5J,EAAS,EAAGt9K,CAAM,CACvB,CACA,OAAO,IACT,EAGA,OAAoBiU,EAAM,cAAcmmK,GAAWtgK,GAAS,CAAA,EAAIlU,EAAM,CACpE,UAAWyzC,EACX,UAAW8hI,GAAK9nH,EAAW8pH,EAAa,EACxC,YAAaxC,GACb,MAAOz5I,EACP,QAASs0E,EACT,aAAcxiC,EACd,OAAQoqG,GAAS,EACjB,SAAUt1J,EACV,QAASpO,EACT,WAAYD,EACZ,OAAQwK,EACR,IAAKg6D,CACT,CAAG,EAAGi0C,GAAe,CAAE,CACvB,CAAC,ECrOD,MAAMqrD,GAAgB9yE,GAAc,CAClC,IAAIK,EACJ,OAAI,OAAOL,GAAe,WAAaA,GAAe,MAAyCA,EAAW,WACxGK,EAAmBL,EACVA,IACTK,EAAmB,CACjB,UAAwB72F,EAAM,cAAcugD,GAAmB,IAAI,CACzE,GAESs2C,CACT,ECbe,SAAS0yE,GAAyBtpE,EAAUupE,EAAgB,CACzE,MAAMC,EAA2B1wK,EAAAA,OAAO,EAAE,EACpC2wK,EAAwB,IAAM,CAClCD,EAAyB,QAAQ,KAAK,WAAW,IAAM,CACrD,IAAIviL,EAAID,EAAIqN,EAAID,EACV,GAAAnN,EAAK+4G,EAAS,WAAa,MAAQ/4G,IAAO,SAAkBA,EAAG,SAAYD,EAAKg5G,EAAS,WAAa,MAAQh5G,IAAO,OAAS,OAASA,EAAG,MAAM,aAAa,MAAM,KAAO,aAAgB,GAAAqN,EAAK2rG,EAAS,WAAa,MAAQ3rG,IAAO,SAAkBA,EAAG,MAAM,aAAa,OAAO,MACtRD,EAAK4rG,EAAS,WAAa,MAAQ5rG,IAAO,QAAkBA,EAAG,MAAM,gBAAgB,OAAO,EAEjG,CAAC,CAAC,CACJ,EACA2E,OAAAA,EAAAA,UAAU,KAEN0wK,EAAqB,EAEhB,IAAMD,EAAyB,QAAQ,QAAQE,GAAS,CACzDA,GACF,aAAaA,CAAK,CAEtB,CAAC,GACA,CAAA,CAAE,EACED,CACT,CCtBO,SAAS9D,GAAgBvsK,EAAO,CACrC,MAAO,CAAC,EAAEA,EAAM,QAAUA,EAAM,QAAUA,EAAM,YAAcA,EAAM,UACtE,CCAA,IAAI8uC,GAAgC,SAAU/kD,EAAGe,EAAG,CAClD,IAAId,EAAI,CAAA,EACR,QAASe,KAAKhB,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGgB,CAAC,GAAKD,EAAE,QAAQC,CAAC,EAAI,IAAGf,EAAEe,CAAC,EAAIhB,EAAEgB,CAAC,GAC/F,GAAIhB,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WAAY,QAAS,EAAI,EAAGgB,EAAI,OAAO,sBAAsBhB,CAAC,EAAG,EAAIgB,EAAE,OAAQ,IAClID,EAAE,QAAQC,EAAE,CAAC,CAAC,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKhB,EAAGgB,EAAE,CAAC,CAAC,IAAGf,EAAEe,EAAE,CAAC,CAAC,EAAIhB,EAAEgB,EAAE,CAAC,CAAC,GAElG,OAAOf,CACT,EAqBA,MAAM07G,GAAqBvuC,EAAAA,WAAW,CAACn3D,EAAOP,IAAQ,CACpD,KAAM,CACF,UAAW8kC,EACX,SAAAwpG,EAAW,GACX,OAAQpH,EACR,KAAMhyE,EACN,SAAUoS,EACV,OAAAw+C,EACA,QAAAD,EACA,OAAA5yH,EACA,WAAAyqG,EACA,WAAAgwE,EACA,YAAAD,EACA,UAAAnnH,EACA,MAAA1jC,EACA,OAAA1L,EACA,cAAAgwC,EACA,SAAAze,EACA,WAAA/7B,EACA,QAASokK,CACf,EAAQvwK,EACJ1H,EAAOw2C,GAAO9uC,EAAO,CAAC,YAAa,WAAY,SAAU,OAAQ,WAAY,SAAU,UAAW,SAAU,aAAc,aAAc,cAAe,YAAa,QAAS,SAAU,gBAAiB,WAAY,aAAc,SAAS,CAAC,EAC9O,GAAI,QAAQ,IAAI,WAAa,aAAc,CACzC,KAAM,CACJ,WAAAwwK,EACN,EAAQn4I,GAAc,OAAO,EACzBm4I,GAAW,EAAE,aAAcxwK,GAAQ,WAAY,SAAS,CAC1D,CACA,KAAM,CACJ,aAAA8kC,EACA,UAAAC,EACA,WAAY0rI,EACZ,aAAcC,EACd,UAAW3kH,EACX,MAAOC,EACP,WAAY8b,EACZ,OAAQC,CACZ,EAAMpjC,GAAmB,OAAO,EACxBoH,EAAYjH,EAAa,QAASP,CAAkB,EACpDqiE,EAAWlnG,EAAAA,OAAO,IAAI,EAEtBssC,EAAU4gB,GAAa7gB,CAAS,EAChC,CAAC4kI,EAAkBhrJ,EAAQ2mB,CAAS,EAAI8lH,GAAermH,EAAW4a,CAAa,EAC/E,CAACta,CAAU,EAAIV,GAASI,EAAWC,CAAO,EAE1C,CACJ,YAAA+8B,EACA,sBAAA1T,CACJ,EAAMF,GAAsBppB,EAAWhH,CAAS,EAExCixB,EAAatB,GAAQ7/C,IAAO,CAChC,IAAIhnB,GACJ,OAAQA,GAAK8mE,GAA4DoU,KAAiB,MAAQl7E,KAAO,OAASA,GAAKgnB,EACzH,CAAC,EAEK2F,EAAW7T,EAAM,WAAWi/B,EAAe,EAC3CqiC,EAAiBlB,GAAwEvsD,EAEzF,CACJ,OAAQksH,EACR,YAAAF,GACA,aAAA6G,EACJ,EAAMjtI,EAAAA,WAAWytF,EAAoB,EAC7BihD,GAAerI,GAAgBC,EAAeC,CAAY,EAE1DiqC,GAAuBrE,GAAgBvsK,CAAK,GAAK,CAAC,CAACwmI,GACnDqqC,GAAsBnxK,EAAAA,OAAOkxK,EAAoB,EAEvD,GAAI,QAAQ,IAAI,WAAa,aAAc,CACzC,MAAMxjK,GAAUirB,GAAc,OAAO,EACrC14B,EAAAA,UAAU,IAAM,CACd,IAAI9R,GACA+iL,IAAwB,CAACC,GAAoB,SAC/C,QAAQ,IAAI,WAAa,cAAezjK,GAAQ,SAAS,kBAAoBvf,GAAK+4G,EAAS,WAAa,MAAQ/4G,KAAO,OAAS,OAASA,GAAG,OAAQ,QAAS,0KAA0K,EAEzUgjL,GAAoB,QAAUD,EAChC,EAAG,CAACA,EAAoB,CAAC,CAC3B,CAGA,MAAMP,EAAwBH,GAAyBtpE,CAAc,EAC/DgkE,EAAa9/K,IAAK,CACtBulL,EAAqB,EACrB9qD,GAAW,MAAqCA,EAAOz6H,EAAC,CAC1D,EACM6/K,GAAc7/K,IAAK,CACvBulL,EAAqB,EACrB/qD,GAAY,MAAsCA,EAAQx6H,EAAC,CAC7D,EACM6yE,EAAe7yE,IAAK,CACxBulL,EAAqB,EACrBnoI,GAAa,MAAuCA,EAASp9C,EAAC,CAChE,EACMqjL,IAAc3nC,IAAe9zI,IAAyBiU,EAAM,cAAcA,EAAM,SAAU,KAAMjU,EAAQ8zI,IAAe6G,EAAY,EACnI7vC,GAAmByyE,GAAc9yE,GAA4DszE,CAAiB,EAC9G,CAACttH,GAASqlF,EAAgB,EAAIN,GAAW,QAASqoC,EAAexiC,CAAQ,EAC/E,OAAO4iC,EAAiBtkI,EAAwB1lC,EAAM,cAAcmqK,GAAS,OAAO,OAAO,CACzF,IAAKj+J,GAAWpT,EAAKmnG,CAAQ,EAC7B,UAAW76D,EACX,aAAc2kI,CAClB,EAAKp4K,EAAM,CACP,SAAU2vE,EACV,OAAQ2iG,EACR,QAASD,GACT,MAAO,OAAO,OAAO,OAAO,OAAO,GAAI3+G,CAAY,EAAG3pC,CAAK,EAC3D,OAAQ,OAAO,OAAO,OAAO,OAAO,GAAI0lD,CAAa,EAAGpxD,CAAM,EAC9D,OAAQw3J,GACR,WAAY3wE,GACZ,UAAWrL,GAAIpsC,EAAWY,EAAera,EAAWN,EAASqpB,EAAuBtJ,CAAgB,EACpG,SAAU4R,EACV,YAAauvG,GAA6BvmK,EAAM,cAAcwnF,GAAiB,CAC7E,KAAM,GACN,MAAO,EACb,EAAO++E,CAAW,EACd,WAAYC,GAA4BxmK,EAAM,cAAcwnF,GAAiB,CAC3E,KAAM,GACN,MAAO,EACb,EAAOg/E,CAAU,EACb,WAAY,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIhhK,CAAU,EAAG27D,CAAiB,EAAG,CACzF,MAAOqqB,GAAI,CACT,CAAC,GAAGpmD,CAAS,KAAK,EAAGiqB,IAAe,QACpC,CAAC,GAAGjqB,CAAS,KAAK,EAAGiqB,IAAe,QACpC,CAAC,GAAGjqB,CAAS,MAAM,EAAGhH,IAAc,KAC5C,EAAS54B,GAAe,KAAgC,OAASA,EAAW,MAAO27D,EAAkB,MAAOniD,CAAM,EAC5G,QAASwsE,GAAI,CACX,CAAC,GAAGpmD,CAAS,IAAIoX,EAAO,EAAE,EAAGqlF,EACrC,EAASjC,GAAoBx6F,EAAW+iG,EAAY,CAAC,EAC/C,aAAc38C,GAAI,CAChB,CAAC,GAAGpmD,CAAS,mBAAmB,EAAGiqB,IAAe,QAClD,CAAC,GAAGjqB,CAAS,mBAAmB,EAAGiqB,IAAe,QAClD,CAAC,GAAGjqB,CAAS,oBAAoB,EAAGhH,IAAc,KAC1D,EAASpf,CAAM,EACT,QAASwsE,GAAI,CACX,CAAC,GAAGpmD,CAAS,YAAY,EAAGhH,IAAc,KAClD,EAASpf,CAAM,EACT,aAAcwsE,GAAI,CAChB,CAAC,GAAGpmD,CAAS,mBAAmB,EAAGiqB,IAAe,QAClD,CAAC,GAAGjqB,CAAS,mBAAmB,EAAGiqB,IAAe,QAClD,CAAC,GAAGjqB,CAAS,oBAAoB,EAAGhH,IAAc,MAClD,CAAC,GAAGgH,CAAS,kBAAkBoX,EAAO,EAAE,EAAGqlF,EACnD,EAASjC,GAAoB,GAAGx6F,CAAS,iBAAkB+iG,GAActI,EAAW,EAAG7gH,CAAM,CAC7F,CAAK,CACL,CAAG,CAAC,CAAC,CAAC,CACN,CAAC,EACG,QAAQ,IAAI,WAAa,eAC3B+/E,GAAM,YAAc,SC/Kf,SAAS02C,GAAU7wJ,EAAO8hD,EAAK/R,EAAK,CACzC,OAAQ/vC,EAAQ8hD,IAAQ/R,EAAM+R,EAChC,CACO,SAAS0jI,GAAkBhsI,EAAWx5C,EAAO8hD,EAAK/R,EAAK,CAC5D,IAAI/M,EAAS6tH,GAAU7wJ,EAAO8hD,EAAK/R,CAAG,EAClC01I,EAAgB,CAAA,EACpB,OAAQjsI,EAAS,CACf,IAAK,MACHisI,EAAc,MAAQ,GAAG,OAAOziJ,EAAS,IAAK,GAAG,EACjDyiJ,EAAc,UAAY,kBAC1B,MACF,IAAK,MACHA,EAAc,OAAS,GAAG,OAAOziJ,EAAS,IAAK,GAAG,EAClDyiJ,EAAc,UAAY,kBAC1B,MACF,IAAK,MACHA,EAAc,IAAM,GAAG,OAAOziJ,EAAS,IAAK,GAAG,EAC/CyiJ,EAAc,UAAY,mBAC1B,MACF,QACEA,EAAc,KAAO,GAAG,OAAOziJ,EAAS,IAAK,GAAG,EAChDyiJ,EAAc,UAAY,mBAC1B,KACN,CACE,OAAOA,CACT,CAGO,SAASx8J,GAASjpB,EAAOwD,EAAO,CACrC,OAAO,MAAM,QAAQxD,CAAK,EAAIA,EAAMwD,CAAK,EAAIxD,CAC/C,CC7BA,IAAI0lL,GAA6BtqK,EAAM,cAAc,CACnD,IAAK,EACL,IAAK,EACL,UAAW,MACX,KAAM,EACN,cAAe,EACf,YAAa,EACb,SAAU,EACV,SAAU,GACV,OAAQ,CAAA,EACR,WAAY,CAAA,CACd,CAAC,EAGUuqK,GAA+BvqK,EAAM,cAAc,EAAE,ECX5D2rC,GAAY,CAAC,YAAa,QAAS,aAAc,cAAe,WAAY,QAAS,SAAU,WAAY,iBAAkB,iBAAkB,mBAAoB,UAAW,cAAc,EAM5L6+H,GAAsBxqK,EAAM,WAAW,SAAU3G,EAAOP,EAAK,CAC/D,IAAIssC,EAAY/rC,EAAM,UACpBzU,EAAQyU,EAAM,MACdolF,EAAaplF,EAAM,WACnBwzH,EAAcxzH,EAAM,YACpBoxK,EAAWpxK,EAAM,SACjBqiB,EAAQriB,EAAM,MACduwD,EAASvwD,EAAM,OACf8zH,EAAW9zH,EAAM,SACjBqxK,EAAiBrxK,EAAM,eACvBsxK,EAAiBtxK,EAAM,eACvBy7D,EAAmBz7D,EAAM,iBACzBslH,EAAUtlH,EAAM,QAChBmrD,EAAenrD,EAAM,aACrBu9C,EAAY38B,GAAyB5gB,EAAOsyC,EAAS,EACnDtqB,EAAoBrhB,EAAM,WAAWsqK,EAAa,EACpD5jI,EAAMrlB,EAAkB,IACxBsT,EAAMtT,EAAkB,IACxB+c,EAAY/c,EAAkB,UAC9BxN,EAAWwN,EAAkB,SAC7BsqD,EAAWtqD,EAAkB,SAC7BsvD,EAAQtvD,EAAkB,MAC1By+B,EAAWz+B,EAAkB,SAC7BupJ,EAAqBvpJ,EAAkB,mBACvCwpJ,EAA0BxpJ,EAAkB,wBAC5CypJ,EAAezpJ,EAAkB,aACjC0pJ,EAAkC1pJ,EAAkB,gCACpDrR,EAASqR,EAAkB,OAC3B7b,EAAa6b,EAAkB,WAC7B2pJ,EAAkB,GAAG,OAAO5lI,EAAW,SAAS,EAGhD6lI,EAAsB,SAA6B9mL,EAAG,CACnD0vB,GACHg5G,EAAY1oI,EAAGs6F,CAAU,CAE7B,EACIg9D,EAAkB,SAAyBt3J,EAAG,CAChDw6H,GAAY,MAA8BA,EAAQx6H,EAAGs6F,CAAU,CACjE,EACImgE,EAAuB,SAA8Bz6J,EAAG,CAC1DqgE,EAAargE,EAAGs6F,CAAU,CAC5B,EAGIqgC,EAAY,SAAmB36H,EAAG,CACpC,GAAI,CAAC0vB,GAAY83D,EAAU,CACzB,IAAI/jD,GAAS,KAGb,OAAQzjC,EAAE,OAASA,EAAE,QAAO,CAC1B,KAAK+hE,GAAQ,KACXt+B,GAASwW,IAAc,OAASA,IAAc,MAAQ,GAAK,EAC3D,MACF,KAAK8nB,GAAQ,MACXt+B,GAASwW,IAAc,OAASA,IAAc,MAAQ,EAAI,GAC1D,MAGF,KAAK8nB,GAAQ,GACXt+B,GAASwW,IAAc,MAAQ,EAAI,GACnC,MAGF,KAAK8nB,GAAQ,KACXt+B,GAASwW,IAAc,MAAQ,GAAK,EACpC,MACF,KAAK8nB,GAAQ,KACXt+B,GAAS,MACT,MACF,KAAKs+B,GAAQ,IACXt+B,GAAS,MACT,MACF,KAAKs+B,GAAQ,QACXt+B,GAAS,EACT,MACF,KAAKs+B,GAAQ,UACXt+B,GAAS,GACT,MACF,KAAKs+B,GAAQ,UACb,KAAKA,GAAQ,OACXukH,EAAShsF,CAAU,EACnB,KACV,CACU72D,KAAW,OACbzjC,EAAE,eAAc,EAChBwmL,EAAe/iJ,GAAQ62D,CAAU,EAErC,CACF,EACI0lF,EAAc,SAAqBhgL,EAAG,CACxC,OAAQA,EAAE,OAASA,EAAE,QAAO,CAC1B,KAAK+hE,GAAQ,KACb,KAAKA,GAAQ,MACb,KAAKA,GAAQ,GACb,KAAKA,GAAQ,KACb,KAAKA,GAAQ,KACb,KAAKA,GAAQ,IACb,KAAKA,GAAQ,QACb,KAAKA,GAAQ,UACX4O,GAAqB,MAAuCA,EAAgB,EAC5E,KACR,CACE,EAGIu1G,EAAgBD,GAAkBhsI,EAAWx5C,EAAO8hD,EAAK/R,CAAG,EAG5DgvI,EAAW,CAAA,EACf,GAAIllF,IAAe,KAAM,CACvB,IAAIysF,EACJvH,EAAW,CACT,SAAU9vJ,EAAW,KAAOhG,GAASiyC,EAAU2+B,CAAU,EACzD,KAAM,SACN,gBAAiB/3C,EACjB,gBAAiB/R,EACjB,gBAAiB/vC,EACjB,gBAAiBivB,EACjB,aAAchG,GAAS+8J,EAAoBnsF,CAAU,EACrD,kBAAmB5wE,GAASg9J,EAAyBpsF,CAAU,EAC/D,gBAAiB5wE,GAASi9J,EAAcrsF,CAAU,EAClD,kBAAmBysF,EAAYr9J,GAASk9J,EAAiCtsF,CAAU,KAAO,MAAQysF,IAAc,OAAS,OAASA,EAAUtmL,CAAK,EACjJ,mBAAoBw5C,IAAc,OAASA,IAAc,MAAQ,aAAe,WAChF,YAAa6sI,EACb,aAAcA,EACd,QAASxvB,EACT,aAAcmD,EACd,UAAW9/B,EACX,QAASqlD,CACf,CACE,CACA,IAAIgH,EAA0BnrK,EAAM,cAAc,MAAO6F,GAAS,CAChE,IAAK/M,EACL,UAAW0yF,GAAIw/E,EAAiB5jK,EAAgBA,EAAgBA,EAAgB,GAAI,GAAG,OAAO4jK,EAAiB,GAAG,EAAE,OAAOvsF,EAAa,CAAC,EAAGA,IAAe,MAAQ9N,CAAK,EAAG,GAAG,OAAOq6F,EAAiB,WAAW,EAAG79C,CAAQ,EAAG,GAAG,OAAO69C,EAAiB,kBAAkB,EAAGN,CAAc,EAAGllK,EAAW,MAAM,EACjT,MAAO2P,EAAcA,EAAcA,EAAc,CAAA,EAAIk1J,CAAa,EAAG3uJ,CAAK,EAAG1L,EAAO,MAAM,CAC9F,EAAK2zJ,EAAU/sH,CAAS,CAAC,EAGvB,OAAIgT,IACFuhH,EAAavhH,EAAOuhH,EAAY,CAC9B,MAAO1sF,EACP,UAAWr5C,EACX,MAAOxgD,EACP,SAAUuoI,EACV,eAAgBu9C,CACtB,CAAK,GAEIS,CACT,CAAC,EACG,QAAQ,IAAI,WAAa,eAC3BX,GAAO,YAAc,UC7JvB,IAAI7+H,GAAY,CAAC,YAAa,QAAS,cAAe,iBAAkB,SAAU,eAAgB,qBAAsB,gBAAiB,iBAAkB,SAAS,EAKhKy/H,GAAuBprK,EAAM,WAAW,SAAU3G,EAAOP,EAAK,CAChE,IAAIssC,EAAY/rC,EAAM,UACpBqiB,EAAQriB,EAAM,MACdwzH,EAAcxzH,EAAM,YACpBsxK,EAAiBtxK,EAAM,eACvBglF,EAAShlF,EAAM,OACfgyK,EAAehyK,EAAM,aACrBiyK,EAAqBjyK,EAAM,mBAC3BkyK,EAAgBlyK,EAAM,cACtBqxK,EAAiBrxK,EAAM,eACvBslH,EAAUtlH,EAAM,QAChBu9C,EAAY38B,GAAyB5gB,EAAOsyC,EAAS,EACnD6/H,EAAaxrK,EAAM,OAAO,EAAE,EAG5B+gC,EAAkB/gC,EAAM,SAAS,EAAK,EACxCghC,EAAmB7pB,GAAe4pB,EAAiB,CAAC,EACpD0qI,EAAgBzqI,EAAiB,CAAC,EAClC0qI,EAAmB1qI,EAAiB,CAAC,EACnCmkC,EAAmBnlE,EAAM,SAAS,EAAE,EACtColE,EAAmBjuD,GAAeguD,EAAkB,CAAC,EACrD0wD,EAAczwD,EAAiB,CAAC,EAChC0wD,EAAiB1wD,EAAiB,CAAC,EACjCw0E,EAAW,SAAkBxxJ,EAAO,CACtC0tI,EAAe1tI,CAAK,EACpBsjL,EAAiB,EAAI,CACvB,EACIC,EAAgB,SAAuBxnL,EAAGiE,EAAO,CACnDwxJ,EAASxxJ,CAAK,EACdu2H,GAAY,MAA8BA,EAAQx6H,CAAC,CACrD,EACIynL,EAAqB,SAA4BznL,EAAGiE,EAAO,CAC7DwxJ,EAASxxJ,CAAK,CAChB,EAGA4X,EAAM,oBAAoBlH,EAAK,UAAY,CACzC,MAAO,CACL,MAAO,SAAe1Q,EAAO,CAC3B,IAAIyjL,GACHA,EAAwBL,EAAW,QAAQpjL,CAAK,KAAO,MAAQyjL,IAA0B,QAAUA,EAAsB,MAAK,CACjI,EACA,SAAU,UAAoB,CAC5B34C,GAAAA,UAAU,UAAY,CACpBw4C,EAAiB,EAAK,CACxB,CAAC,CACH,CACN,CACE,CAAC,EAID,IAAII,EAAc32J,EAAc,CAC9B,UAAWiwB,EACX,YAAaynF,EACb,eAAgB89C,EAChB,OAAQU,EACR,QAASM,EACT,aAAcC,CAClB,EAAKh1H,CAAS,EACZ,OAAoB52C,EAAM,cAAcA,EAAM,SAAU,KAAMq+E,EAAO,IAAI,SAAUz5F,EAAOwD,EAAO,CAC/F,IAAI+kI,EAAWo+C,IAAkBnjL,EACjC,OAAoB4X,EAAM,cAAcwqK,GAAQ3kK,GAAS,CACvD,IAAK,SAAa4B,EAAM,CACjBA,EAGH+jK,EAAW,QAAQpjL,CAAK,EAAIqf,EAF5B,OAAO+jK,EAAW,QAAQpjL,CAAK,CAInC,EACA,SAAU+kI,EACV,eAAgBA,GAAYu9C,EAC5B,MAAO78J,GAAS6N,EAAOtzB,CAAK,EAC5B,IAAKA,EACL,MAAOxD,EACP,WAAYwD,CAClB,EAAO0jL,CAAW,CAAC,CACjB,CAAC,EAAGR,GAAsBG,GAA8BzrK,EAAM,cAAcwqK,GAAQ3kK,GAAS,CAC3F,IAAK,MACT,EAAKimK,EAAa,CACd,MAAOztF,EAAOw3C,CAAW,EACzB,WAAY,KACZ,SAAU01C,IAAkB,GAC5B,eAAgBb,EAChB,OAAQY,EACR,MAAO,CACL,cAAe,MACrB,EACI,SAAU,KACV,cAAe,EACnB,CAAG,CAAC,CAAC,CACL,CAAC,EACG,QAAQ,IAAI,WAAa,eAC3BF,GAAQ,YAAc,WChGxB,IAAIW,GAAO,SAAc1yK,EAAO,CAC9B,IAAI+rC,EAAY/rC,EAAM,UACpBqiB,EAAQriB,EAAM,MACd+M,EAAW/M,EAAM,SACjBzU,EAAQyU,EAAM,MACd2yK,EAAW3yK,EAAM,QACfgoB,EAAoBrhB,EAAM,WAAWsqK,EAAa,EACpD5jI,EAAMrlB,EAAkB,IACxBsT,EAAMtT,EAAkB,IACxB+c,EAAY/c,EAAkB,UAC9B4qJ,EAAgB5qJ,EAAkB,cAClC6qJ,EAAc7qJ,EAAkB,YAChC8qJ,EAAW9qJ,EAAkB,SAC3B+qJ,EAAU,GAAG,OAAOhnI,EAAW,OAAO,EAGtCilI,EAAgBD,GAAkBhsI,EAAWx5C,EAAO8hD,EAAK/R,CAAG,EAChE,OAAoB30B,EAAM,cAAc,OAAQ,CAC9C,UAAWwF,GAAW4mK,EAAShlK,EAAgB,CAAA,EAAI,GAAG,OAAOglK,EAAS,SAAS,EAAGD,GAAYF,GAAiBrnL,GAASA,GAASsnL,CAAW,CAAC,EAC7I,MAAO/2J,EAAcA,EAAc,CAAA,EAAIk1J,CAAa,EAAG3uJ,CAAK,EAC5D,YAAa,SAAqBv3B,EAAG,CACnCA,EAAE,gBAAe,CACnB,EACA,QAAS,UAAmB,CAC1B6nL,EAASpnL,CAAK,CAChB,CACJ,EAAKwhB,CAAQ,CACb,EC/BIimK,GAAQ,SAAehzK,EAAO,CAChC,IAAI+rC,EAAY/rC,EAAM,UACpBizK,EAAQjzK,EAAM,MACdgmD,EAAUhmD,EAAM,QACdkzK,EAAgB,GAAG,OAAOnnI,EAAW,OAAO,EAGhD,OAAKknI,EAAM,OAGStsK,EAAM,cAAc,MAAO,CAC7C,UAAWusK,CACf,EAAKD,EAAM,IAAI,SAAU5wK,EAAM,CAC3B,IAAI9W,EAAQ8W,EAAK,MACfggB,EAAQhgB,EAAK,MACbumG,EAAQvmG,EAAK,MACf,OAAoBsE,EAAM,cAAc+rK,GAAM,CAC5C,IAAKnnL,EACL,UAAW2nL,EACX,MAAO7wJ,EACP,MAAO92B,EACP,QAASy6D,CACf,EAAO4iD,CAAK,CACV,CAAC,CAAC,EAfO,IAgBX,ECpBIuqE,GAAM,SAAanzK,EAAO,CAC5B,IAAI+rC,EAAY/rC,EAAM,UACpBzU,EAAQyU,EAAM,MACdqiB,EAAQriB,EAAM,MACdijE,EAAcjjE,EAAM,YAClBgoB,EAAoBrhB,EAAM,WAAWsqK,EAAa,EACpD5jI,EAAMrlB,EAAkB,IACxBsT,EAAMtT,EAAkB,IACxB+c,EAAY/c,EAAkB,UAC9B8qJ,EAAW9qJ,EAAkB,SAC7B4qJ,EAAgB5qJ,EAAkB,cAClC6qJ,EAAc7qJ,EAAkB,YAC9BorJ,EAAe,GAAG,OAAOrnI,EAAW,MAAM,EAC1C2N,EAASo5H,GAAYF,GAAiBrnL,GAASA,GAASsnL,EAGxDjgJ,EAAc9W,EAAcA,EAAc,CAAA,EAAIi1J,GAAkBhsI,EAAWx5C,EAAO8hD,EAAK/R,CAAG,CAAC,EAAG,OAAOjZ,GAAU,WAAaA,EAAM92B,CAAK,EAAI82B,CAAK,EACpJ,OAAIq3B,IACF9mB,EAAc9W,EAAcA,EAAc,CAAA,EAAI8W,CAAW,EAAG,OAAOqwC,GAAgB,WAAaA,EAAY13E,CAAK,EAAI03E,CAAW,GAE9Gt8D,EAAM,cAAc,OAAQ,CAC9C,UAAWwF,GAAWinK,EAAcrlK,EAAgB,CAAA,EAAI,GAAG,OAAOqlK,EAAc,SAAS,EAAG15H,CAAM,CAAC,EACnG,MAAO9mB,CACX,CAAG,CACH,EC3BIygJ,GAAQ,SAAerzK,EAAO,CAChC,IAAI+rC,EAAY/rC,EAAM,UACpBizK,EAAQjzK,EAAM,MACdszK,EAAOtzK,EAAM,KACbqiB,EAAQriB,EAAM,MACdijE,EAAcjjE,EAAM,YAClBgoB,EAAoBrhB,EAAM,WAAWsqK,EAAa,EACpD5jI,EAAMrlB,EAAkB,IACxBsT,EAAMtT,EAAkB,IACxB4tB,EAAO5tB,EAAkB,KACvBurJ,EAAW5sK,EAAM,QAAQ,UAAY,CACvC,IAAI6sK,EAAS,IAAI,IAQjB,GALAP,EAAM,QAAQ,SAAUr0J,EAAM,CAC5B40J,EAAO,IAAI50J,EAAK,KAAK,CACvB,CAAC,EAGG00J,GAAQ19H,IAAS,KAEnB,QADI1oD,EAAUmgD,EACPngD,GAAWouC,GAChBk4I,EAAO,IAAItmL,CAAO,EAClBA,GAAW0oD,EAGf,OAAO,MAAM,KAAK49H,CAAM,CAC1B,EAAG,CAACnmI,EAAK/R,EAAKsa,EAAM09H,EAAML,CAAK,CAAC,EAChC,OAAoBtsK,EAAM,cAAc,MAAO,CAC7C,UAAW,GAAG,OAAOolC,EAAW,OAAO,CAC3C,EAAKwnI,EAAS,IAAI,SAAUE,EAAU,CAClC,OAAoB9sK,EAAM,cAAcwsK,GAAK,CAC3C,UAAWpnI,EACX,IAAK0nI,EACL,MAAOA,EACP,MAAOpxJ,EACP,YAAa4gD,CACnB,CAAK,CACH,CAAC,CAAC,CACJ,ECpCIywG,GAAQ,SAAe1zK,EAAO,CAChC,IAAI+rC,EAAY/rC,EAAM,UACpBqiB,EAAQriB,EAAM,MACdq4H,EAAQr4H,EAAM,MACd0sB,EAAM1sB,EAAM,IACZjR,EAAQiR,EAAM,MACdwzH,EAAcxzH,EAAM,YACpB2zK,EAAa3zK,EAAM,WACjBgoB,EAAoBrhB,EAAM,WAAWsqK,EAAa,EACpDlsI,EAAY/c,EAAkB,UAC9BqlB,EAAMrlB,EAAkB,IACxBsT,EAAMtT,EAAkB,IACxBxN,EAAWwN,EAAkB,SAC7BsvD,EAAQtvD,EAAkB,MAC1B7b,EAAa6b,EAAkB,WAC7B4rJ,EAAiB,GAAG,OAAO7nI,EAAW,QAAQ,EAC9C8nI,EAAcz3B,GAAU/jB,EAAOhrF,EAAK/R,CAAG,EACvCw4I,EAAY13B,GAAU1vH,EAAK2gB,EAAK/R,CAAG,EAGnCs2I,EAAsB,SAA6B9mL,EAAG,CACpD,CAAC0vB,GAAYg5G,GACfA,EAAY1oI,EAAG,EAAE,CAErB,EAGIkmL,EAAgB,CAAA,EACpB,OAAQjsI,EAAS,CACf,IAAK,MACHisI,EAAc,MAAQ,GAAG,OAAO6C,EAAc,IAAK,GAAG,EACtD7C,EAAc,MAAQ,GAAG,OAAO8C,EAAY,IAAMD,EAAc,IAAK,GAAG,EACxE,MACF,IAAK,MACH7C,EAAc,OAAS,GAAG,OAAO6C,EAAc,IAAK,GAAG,EACvD7C,EAAc,OAAS,GAAG,OAAO8C,EAAY,IAAMD,EAAc,IAAK,GAAG,EACzE,MACF,IAAK,MACH7C,EAAc,IAAM,GAAG,OAAO6C,EAAc,IAAK,GAAG,EACpD7C,EAAc,OAAS,GAAG,OAAO8C,EAAY,IAAMD,EAAc,IAAK,GAAG,EACzE,MACF,QACE7C,EAAc,KAAO,GAAG,OAAO6C,EAAc,IAAK,GAAG,EACrD7C,EAAc,MAAQ,GAAG,OAAO8C,EAAY,IAAMD,EAAc,IAAK,GAAG,CAC9E,CACE,IAAI9tH,EAAY4tH,GAAcxhF,GAAIyhF,EAAgB7lK,EAAgBA,EAAgB,CAAA,EAAI,GAAG,OAAO6lK,EAAgB,GAAG,EAAE,OAAO7kL,EAAQ,CAAC,EAAGA,IAAU,MAAQuoF,CAAK,EAAG,GAAG,OAAOvrC,EAAW,kBAAkB,EAAGynF,CAAW,EAAGrnH,EAAW,KAAK,EAC1O,OAAoBxF,EAAM,cAAc,MAAO,CAC7C,UAAWo/C,EACX,MAAOjqC,EAAcA,EAAc,CAAA,EAAIk1J,CAAa,EAAG3uJ,CAAK,EAC5D,YAAauvJ,EACb,aAAcA,CAClB,CAAG,CACH,ECpDImC,GAAS,SAAgB/zK,EAAO,CAClC,IAAI+rC,EAAY/rC,EAAM,UACpBqiB,EAAQriB,EAAM,MACdglF,EAAShlF,EAAM,OACfg0K,EAAah0K,EAAM,WACnBwzH,EAAcxzH,EAAM,YAClBgoB,EAAoBrhB,EAAM,WAAWsqK,EAAa,EACpD6B,EAAW9qJ,EAAkB,SAC7BsvD,EAAQtvD,EAAkB,MAC1BqlB,EAAMrlB,EAAkB,IACxBrR,EAASqR,EAAkB,OAC3B7b,EAAa6b,EAAkB,WAG7BisJ,EAAYttK,EAAM,QAAQ,UAAY,CACxC,GAAI,CAAC2wE,EAAO,CAEV,GAAI0N,EAAO,SAAW,EACpB,MAAO,CAAA,EAET,IAAIkvF,EAAaF,GAA4D3mI,EACzE8mI,EAAWnvF,EAAO,CAAC,EACvB,MAAO,CAAC,CACN,MAAO,KAAK,IAAIkvF,EAAYC,CAAQ,EACpC,IAAK,KAAK,IAAID,EAAYC,CAAQ,CAC1C,CAAO,CACH,CAIA,QADI3hJ,EAAO,CAAA,EACFrlC,EAAI,EAAGA,EAAI63F,EAAO,OAAS,EAAG73F,GAAK,EAC1CqlC,EAAK,KAAK,CACR,MAAOwyD,EAAO73F,CAAC,EACf,IAAK63F,EAAO73F,EAAI,CAAC,CACzB,CAAO,EAEH,OAAOqlC,CACT,EAAG,CAACwyD,EAAQ1N,EAAO08F,EAAY3mI,CAAG,CAAC,EACnC,GAAI,CAACylI,EACH,OAAO,KAIT,IAAIsB,EAAaH,GAAc,MAAgCA,EAAU,SAAW9nK,EAAW,QAAUwK,EAAO,QAAuBhQ,EAAM,cAAc+sK,GAAO,CAChK,MAAO,KACP,UAAW3nI,EACX,MAAOkoI,EAAU,CAAC,EAAE,MACpB,IAAKA,EAAUA,EAAU,OAAS,CAAC,EAAE,IACrC,WAAY9hF,GAAIhmF,EAAW,OAAQ,GAAG,OAAO4/B,EAAW,SAAS,CAAC,EAClE,MAAOp1B,EAAO,MAClB,CAAG,EAAI,KACL,OAAoBhQ,EAAM,cAAcA,EAAM,SAAU,KAAMytK,EAAYH,EAAU,IAAI,SAAU5xK,EAAMtT,EAAO,CAC7G,IAAIspI,EAAQh2H,EAAK,MACfqqB,EAAMrqB,EAAK,IACb,OAAoBsE,EAAM,cAAc+sK,GAAO,CAC7C,MAAO3kL,EACP,UAAWg9C,EACX,MAAOjwB,EAAcA,EAAc,GAAItH,GAAS6N,EAAOtzB,CAAK,CAAC,EAAG4nB,EAAO,KAAK,EAC5E,MAAO0hH,EACP,IAAK3rG,EACL,IAAK39B,EACL,YAAaykI,CACnB,CAAK,CACH,CAAC,CAAC,CACJ,EC/DI6gD,GAAc,IAClB,SAASx6G,GAAY,EAAG,CACtB,IAAIzwE,EAAM,kBAAmB,EAAI,EAAE,cAAc,CAAC,EAAI,EACtD,MAAO,CACL,MAAOA,EAAI,MACX,MAAOA,EAAI,KACf,CACA,CACA,SAASkrL,GAAQ7/G,EAAc1vB,EAAWsiF,EAAWh6E,EAAK/R,EAAK1H,EAAakV,EAAeyrI,EAAcC,EAAc3uE,EAAU4uE,EAAU,CACzI,IAAI/sI,EAAkB/gC,EAAM,SAAS,IAAI,EACvCghC,EAAmB7pB,GAAe4pB,EAAiB,CAAC,EACpDgtI,EAAgB/sI,EAAiB,CAAC,EAClCgtI,EAAmBhtI,EAAiB,CAAC,EACnCmkC,EAAmBnlE,EAAM,SAAS,EAAE,EACtColE,EAAmBjuD,GAAeguD,EAAkB,CAAC,EACrDomG,EAAgBnmG,EAAiB,CAAC,EAClC6oG,EAAmB7oG,EAAiB,CAAC,EACnCixC,EAAmBr2G,EAAM,SAAS,EAAK,EACzCs2G,EAAmBn/F,GAAek/F,EAAkB,CAAC,EACrDq0D,EAAiBp0D,EAAiB,CAAC,EACnC43D,EAAoB53D,EAAiB,CAAC,EACpCW,EAAmBj3G,EAAM,SAAS0gH,CAAS,EAC7CxJ,EAAmB//F,GAAe8/F,EAAkB,CAAC,EACrDk3D,EAAcj3D,EAAiB,CAAC,EAChCk3D,EAAiBl3D,EAAiB,CAAC,EACjCU,EAAmB53G,EAAM,SAAS0gH,CAAS,EAC7C7I,EAAoB1gG,GAAeygG,EAAkB,CAAC,EACtDy2D,EAAex2D,EAAkB,CAAC,EAClCy2D,EAAkBz2D,EAAkB,CAAC,EACnC02D,EAAoBvuK,EAAM,OAAO,IAAI,EACrCwuK,EAAkBxuK,EAAM,OAAO,IAAI,EACnCyuK,EAAsBzuK,EAAM,OAAO,IAAI,EACvCqhB,EAAoBrhB,EAAM,WAAWuqK,EAAe,EACtD/1G,EAAcnzC,EAAkB,YAChCiyC,EAAejyC,EAAkB,aACnC3B,GAAgB,UAAY,CACtB6rJ,IAAkB,IACpB6C,EAAe1tD,CAAS,CAE5B,EAAG,CAACA,EAAW6qD,CAAa,CAAC,EAG7BvrK,EAAM,UAAU,UAAY,CAC1B,OAAO,UAAY,CACjB,SAAS,oBAAoB,YAAauuK,EAAkB,OAAO,EACnE,SAAS,oBAAoB,UAAWC,EAAgB,OAAO,EAC3DC,EAAoB,UACtBA,EAAoB,QAAQ,oBAAoB,YAAaF,EAAkB,OAAO,EACtFE,EAAoB,QAAQ,oBAAoB,WAAYD,EAAgB,OAAO,EAEvF,CACF,EAAG,CAAA,CAAE,EACL,IAAIE,EAAc,SAAqBvvC,GAAYhkH,GAAWwzJ,GAAY,CAEpExzJ,KAAc,QAChB6yJ,EAAiB7yJ,EAAS,EAE5BizJ,EAAejvC,EAAU,EACzB,IAAIyvC,GAAezvC,GACfwvC,KACFC,GAAezvC,GAAW,OAAO,SAAU1qG,GAAGjuC,EAAG,CAC/C,OAAOA,IAAM+kL,CACf,CAAC,GAEHppI,EAAcysI,EAAY,EACtBt7G,GACFA,EAAa,CACX,UAAW6rE,GACX,YAAawvC,GAAapD,EAAgB,GAC1C,cAAeA,EACf,cAAepwJ,EACvB,CAAO,CAEL,EACI0zJ,EAAmBpuI,GAAS,SAAUg+C,EAAYqwF,GAAeH,GAAY,CAC/E,GAAIlwF,IAAe,GAAI,CAErB,IAAI8uF,GAAac,EAAa,CAAC,EAC3Bb,GAAWa,EAAaA,EAAa,OAAS,CAAC,EAC/CU,GAAiBroI,EAAM6mI,GACvByB,EAAer6I,EAAM64I,GAGrB5lJ,EAASknJ,IAAiBn6I,EAAM+R,GACpC9e,EAAS,KAAK,IAAIA,EAAQmnJ,EAAc,EACxCnnJ,EAAS,KAAK,IAAIA,EAAQonJ,CAAY,EAGtC,IAAIC,GAAmBhiJ,EAAYsgJ,GAAa3lJ,CAAM,EACtDA,EAASqnJ,GAAmB1B,GAC5B,IAAI2B,EAAmBb,EAAa,IAAI,SAAUr/K,GAAK,CACrD,OAAOA,GAAM44B,CACf,CAAC,EACD8mJ,EAAYQ,CAAgB,CAC9B,KAAO,CAEL,IAAIC,IAAcx6I,EAAM+R,GAAOooI,GAG3B7vC,GAAclpH,GAAmBo4J,CAAW,EAChDlvC,GAAYxgD,CAAU,EAAI4vF,EAAa5vF,CAAU,EACjD,IAAIh4F,GAAOonL,EAAa5uC,GAAakwC,GAAY1wF,EAAY,MAAM,EACnEiwF,EAAYjoL,GAAK,OAAQA,GAAK,MAAOkoL,EAAU,CACjD,CACF,CAAC,EACG9hD,EAAc,SAAqB1oI,GAAGs6F,GAAY2wF,GAAa,CACjEjrL,GAAE,gBAAe,EAGjB,IAAIs7F,GAAgB2vF,IAAe1uD,EAC/BvvF,GAAcsuD,GAAchB,EAAU,EAC1CwvF,EAAiBxvF,EAAU,EAC3BuvF,EAAiB78I,EAAW,EAC5Bm9I,EAAgB7uF,EAAa,EAC7B2uF,EAAe3uF,EAAa,EAC5ByuF,EAAkB,EAAK,EACvB,IAAIn6G,EAAeb,GAAY/uE,EAAC,EAC9BkrL,EAASt7G,EAAa,MACtBu7G,GAASv7G,EAAa,MAGpB46G,EAAa,GAGbn6G,GACFA,EAAY,CACV,UAAWirB,GACX,cAAehB,GACf,cAAettD,EACvB,CAAO,EAIH,IAAI85F,GAAc,SAAqBnjI,GAAO,CAC5CA,GAAM,eAAc,EACpB,IAAIynL,GAAgBr8G,GAAYprE,EAAK,EACnC0nL,GAAQD,GAAc,MACtBE,GAAQF,GAAc,MACpBn7G,GAAUo7G,GAAQH,EAClBh7G,GAAUo7G,GAAQH,GAClBh9G,GAAwBxE,EAAa,QAAQ,sBAAqB,EACpEl9C,GAAQ0hD,GAAsB,MAC9BzhD,EAASyhD,GAAsB,OAC7Bo9G,GACAC,GACJ,OAAQvxI,EAAS,CACf,IAAK,MACHsxI,GAAgB,CAACr7G,GAAUxjD,EAC3B8+J,GAAav7G,GACb,MACF,IAAK,MACHs7G,GAAgBr7G,GAAUxjD,EAC1B8+J,GAAav7G,GACb,MACF,IAAK,MACHs7G,GAAgB,CAACt7G,GAAUxjD,GAC3B++J,GAAat7G,GACb,MACF,QACEq7G,GAAgBt7G,GAAUxjD,GAC1B++J,GAAat7G,EACvB,CAGMs6G,EAAazvE,EAAW,KAAK,IAAIywE,EAAU,EAAIjC,IAAeI,EAAWK,EAAY,OAAS,GAC9FD,EAAkBS,CAAU,EAC5BE,EAAiBpwF,GAAYixF,GAAef,CAAU,CACxD,EAGI5kG,GAAY,SAASA,GAAUjiF,GAAO,CACxCA,GAAM,eAAc,EACpB,SAAS,oBAAoB,UAAWiiF,EAAS,EACjD,SAAS,oBAAoB,YAAakhD,EAAW,EACjDwjD,EAAoB,UACtBA,EAAoB,QAAQ,oBAAoB,YAAaF,EAAkB,OAAO,EACtFE,EAAoB,QAAQ,oBAAoB,WAAYD,EAAgB,OAAO,GAErFD,EAAkB,QAAU,KAC5BC,EAAgB,QAAU,KAC1BC,EAAoB,QAAU,KAC9Bb,EAAae,CAAU,EACvBV,EAAiB,EAAE,EACnBC,EAAkB,EAAK,CACzB,EACA,SAAS,iBAAiB,UAAWnkG,EAAS,EAC9C,SAAS,iBAAiB,YAAakhD,EAAW,EAClD9mI,GAAE,cAAc,iBAAiB,WAAY4lF,EAAS,EACtD5lF,GAAE,cAAc,iBAAiB,YAAa8mI,EAAW,EACzDsjD,EAAkB,QAAUtjD,GAC5BujD,EAAgB,QAAUzkG,GAC1B0kG,EAAoB,QAAUtqL,GAAE,aAClC,EAGI25I,EAAe99H,EAAM,QAAQ,UAAY,CAC3C,IAAI4vK,EAAe75J,GAAmB2qG,CAAS,EAAE,KAAK,SAAUv9H,GAAG4kB,EAAG,CACpE,OAAO5kB,GAAI4kB,CACb,CAAC,EACG8nK,GAAe95J,GAAmBo4J,CAAW,EAAE,KAAK,SAAUhrL,GAAG4kB,EAAG,CACtE,OAAO5kB,GAAI4kB,CACb,CAAC,EACG+nK,GAAS,CAAA,EACbD,GAAa,QAAQ,SAAU7gL,GAAK,CAClC8gL,GAAO9gL,EAAG,GAAK8gL,GAAO9gL,EAAG,GAAK,GAAK,CACrC,CAAC,EACD4gL,EAAa,QAAQ,SAAU5gL,GAAK,CAClC8gL,GAAO9gL,EAAG,GAAK8gL,GAAO9gL,EAAG,GAAK,GAAK,CACrC,CAAC,EACD,IAAI+gL,GAAe7wE,EAAW,EAAI,EAC9B8wE,GAAY,OAAO,OAAOF,EAAM,EAAE,OAAO,SAAU/4K,GAAMtQ,EAAM,CACjE,OAAOsQ,GAAO,KAAK,IAAItQ,CAAI,CAC7B,EAAG,CAAC,EACJ,OAAOupL,IAAaD,GAAe5B,EAAcztD,CACnD,EAAG,CAACA,EAAWytD,EAAajvE,CAAQ,CAAC,EACrC,MAAO,CAACqsE,EAAewC,EAAerD,EAAgB5sC,EAAcjR,CAAW,CACjF,CCtNe,SAASojD,GAAUvpI,EAAK/R,EAAKsa,EAAMihI,EAAUC,EAAYC,EAAU,CAChF,IAAIC,EAAmBrwK,EAAM,YAAY,SAAUhR,EAAK,CACtD,OAAO,KAAK,IAAI03C,EAAK,KAAK,IAAI/R,EAAK3lC,CAAG,CAAC,CACzC,EAAG,CAAC03C,EAAK/R,CAAG,CAAC,EACT27I,EAAkBtwK,EAAM,YAAY,SAAUhR,EAAK,CACrD,GAAIigD,IAAS,KAAM,CACjB,IAAIshI,EAAY7pI,EAAM,KAAK,OAAO2pI,EAAiBrhL,CAAG,EAAI03C,GAAOuI,CAAI,EAAIA,EAGrEuhI,EAAa,SAAoBl6J,EAAK,CACxC,OAAQ,OAAOA,CAAG,EAAE,MAAM,GAAG,EAAE,CAAC,GAAK,IAAI,MAC3C,EACIm6J,EAAa,KAAK,IAAID,EAAWvhI,CAAI,EAAGuhI,EAAW77I,CAAG,EAAG67I,EAAW9pI,CAAG,CAAC,EACxEgqI,EAAa,OAAOH,EAAU,QAAQE,CAAU,CAAC,EACrD,OAAO/pI,GAAOgqI,GAAcA,GAAc/7I,EAAM+7I,EAAa,IAC/D,CACA,OAAO,IACT,EAAG,CAACzhI,EAAMvI,EAAK/R,EAAK07I,CAAgB,CAAC,EACjCpjJ,EAAcjtB,EAAM,YAAY,SAAUhR,EAAK,CACjD,IAAI2hL,EAAkBN,EAAiBrhL,CAAG,EAGtC4hL,EAAcV,EAAS,IAAI,SAAUj4J,EAAM,CAC7C,OAAOA,EAAK,KACd,CAAC,EACGg3B,IAAS,MACX2hI,EAAY,KAAKN,EAAgBthL,CAAG,CAAC,EAIvC4hL,EAAY,KAAKlqI,EAAK/R,CAAG,EAGzB,IAAIk8I,EAAaD,EAAY,CAAC,EAC1BE,EAAYn8I,EAAM+R,EACtB,OAAAkqI,EAAY,QAAQ,SAAUG,EAAY,CACxC,IAAIC,EAAO,KAAK,IAAIL,EAAkBI,CAAU,EAC5CC,GAAQF,IACVD,EAAaE,EACbD,EAAYE,EAEhB,CAAC,EACMH,CACT,EAAG,CAACnqI,EAAK/R,EAAKu7I,EAAUjhI,EAAMohI,EAAkBC,CAAe,CAAC,EAI5D58G,EAAc,SAASA,EAAY2qB,EAAQz2D,EAAQ62D,EAAY,CACjE,IAAIkY,EAAO,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,OAC/E,GAAI,OAAO/uE,GAAW,SAAU,CAC9B,IAAIzM,EACAgW,EAAcktD,EAAOI,CAAU,EAG/BwyF,EAAkB9/I,EAAcvJ,EAGhCspJ,EAAkB,CAAA,EACtBhB,EAAS,QAAQ,SAAUj4J,EAAM,CAC/Bi5J,EAAgB,KAAKj5J,EAAK,KAAK,CACjC,CAAC,EAGDi5J,EAAgB,KAAKxqI,EAAK/R,CAAG,EAG7Bu8I,EAAgB,KAAKZ,EAAgBn/I,CAAW,CAAC,EAGjD,IAAIggJ,EAAOvpJ,EAAS,EAAI,EAAI,GACxB+uE,IAAS,OACXu6E,EAAgB,KAAKZ,EAAgBn/I,EAAcggJ,EAAOliI,CAAI,CAAC,EAE/DiiI,EAAgB,KAAKZ,EAAgBW,CAAe,CAAC,EAIvDC,EAAkBA,EAAgB,OAAO,SAAUliL,EAAK,CACtD,OAAOA,IAAQ,IACjB,CAAC,EAEA,OAAO,SAAUA,EAAK,CACrB,OAAO44B,EAAS,EAAI54B,GAAOmiC,EAAcniC,GAAOmiC,CAClD,CAAC,EACGwlE,IAAS,SAEXu6E,EAAkBA,EAAgB,OAAO,SAAUliL,EAAK,CACtD,OAAOA,IAAQmiC,CACjB,CAAC,GAEH,IAAIigJ,EAAez6E,IAAS,OAASxlE,EAAc8/I,EACnD91J,EAAY+1J,EAAgB,CAAC,EAC7B,IAAIG,EAAY,KAAK,IAAIl2J,EAAYi2J,CAAY,EAUjD,GATAF,EAAgB,QAAQ,SAAUI,EAAgB,CAChD,IAAIN,EAAO,KAAK,IAAIM,EAAiBF,CAAY,EAC7CJ,EAAOK,IACTl2J,EAAYm2J,EACZD,EAAYL,EAEhB,CAAC,EAGG71J,IAAc,OAChB,OAAOyM,EAAS,EAAI8e,EAAM/R,EAI5B,GAAIgiE,IAAS,OACX,OAAOx7E,EAIT,GAAI,KAAK,IAAIyM,CAAM,EAAI,EAAG,CACxB,IAAIq3G,EAAclpH,GAAmBsoE,CAAM,EAC3C,OAAA4gD,EAAYxgD,CAAU,EAAItjE,EACnBu4C,EAAYurE,EAAar3G,EAASupJ,EAAM1yF,EAAYkY,CAAI,CACjE,CACA,OAAOx7E,CACT,KAAO,IAAIyM,IAAW,MACpB,OAAO8e,EACF,GAAI9e,IAAW,MACpB,OAAO+M,EAEX,EAGI48I,EAAqB,SAA4BlzF,EAAQz2D,EAAQ62D,EAAY,CAC/E,IAAIkY,EAAO,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,OAC3ExlE,EAAcktD,EAAOI,CAAU,EAC/BtjE,EAAYu4C,EAAY2qB,EAAQz2D,EAAQ62D,EAAYkY,CAAI,EAC5D,MAAO,CACL,MAAOx7E,EACP,QAASA,IAAcgW,CAC7B,CACE,EACIqgJ,EAAW,SAAkBR,EAAM,CACrC,OAAOZ,IAAa,MAAQY,IAAS,GAAK,OAAOZ,GAAa,UAAYY,EAAOZ,CACnF,EAGIvC,EAAe,SAAsBxvF,EAAQz2D,EAAQ62D,EAAY,CACnE,IAAIkY,EAAO,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,OAC3EwoC,EAAa9gD,EAAO,IAAIpxD,CAAW,EACnCkE,EAAcguG,EAAW1gD,CAAU,EACnCtjE,EAAYu4C,EAAYyrE,EAAYv3G,EAAQ62D,EAAYkY,CAAI,EAEhE,GADAwoC,EAAW1gD,CAAU,EAAItjE,EACrBg1J,IAAe,GAAO,CAExB,IAAIsB,EAAUrB,GAAY,EAGtB3xF,EAAa,GAAK0gD,EAAW1gD,EAAa,CAAC,IAAMttD,IACnDguG,EAAW1gD,CAAU,EAAI,KAAK,IAAI0gD,EAAW1gD,CAAU,EAAG0gD,EAAW1gD,EAAa,CAAC,EAAIgzF,CAAO,GAE5FhzF,EAAa0gD,EAAW,OAAS,GAAKA,EAAW1gD,EAAa,CAAC,IAAMttD,IACvEguG,EAAW1gD,CAAU,EAAI,KAAK,IAAI0gD,EAAW1gD,CAAU,EAAG0gD,EAAW1gD,EAAa,CAAC,EAAIgzF,CAAO,EAElG,SAAW,OAAOrB,GAAa,UAAYA,IAAa,KAAM,CAM5D,QAAS5pL,EAAIi4F,EAAa,EAAGj4F,EAAI24I,EAAW,OAAQ34I,GAAK,EAEvD,QADIyiI,EAAU,GACPuoD,EAASryC,EAAW34I,CAAC,EAAI24I,EAAW34I,EAAI,CAAC,CAAC,GAAKyiI,GAAS,CAC7D,IAAIyoD,EAAsBH,EAAmBpyC,EAAY,EAAG34I,CAAC,EAC7D24I,EAAW34I,CAAC,EAAIkrL,EAAoB,MACpCzoD,EAAUyoD,EAAoB,OAChC,CAIF,QAASvjK,EAAKswE,EAAYtwE,EAAK,EAAGA,GAAM,EAEtC,QADIwjK,EAAW,GACRH,EAASryC,EAAWhxH,CAAE,EAAIgxH,EAAWhxH,EAAK,CAAC,CAAC,GAAKwjK,GAAU,CAChE,IAAIC,EAAuBL,EAAmBpyC,EAAY,GAAIhxH,EAAK,CAAC,EACpEgxH,EAAWhxH,EAAK,CAAC,EAAIyjK,EAAqB,MAC1CD,EAAWC,EAAqB,OAClC,CAKF,QAASC,EAAM1yC,EAAW,OAAS,EAAG0yC,EAAM,EAAGA,GAAO,EAEpD,QADIC,EAAY,GACTN,EAASryC,EAAW0yC,CAAG,EAAI1yC,EAAW0yC,EAAM,CAAC,CAAC,GAAKC,GAAW,CACnE,IAAIC,EAAuBR,EAAmBpyC,EAAY,GAAI0yC,EAAM,CAAC,EACrE1yC,EAAW0yC,EAAM,CAAC,EAAIE,EAAqB,MAC3CD,EAAYC,EAAqB,OACnC,CAIF,QAASC,EAAM,EAAGA,EAAM7yC,EAAW,OAAS,EAAG6yC,GAAO,EAEpD,QADIC,EAAY,GACTT,EAASryC,EAAW6yC,EAAM,CAAC,EAAI7yC,EAAW6yC,CAAG,CAAC,GAAKC,GAAW,CACnE,IAAIC,EAAuBX,EAAmBpyC,EAAY,EAAG6yC,EAAM,CAAC,EACpE7yC,EAAW6yC,EAAM,CAAC,EAAIE,EAAqB,MAC3CD,EAAYC,EAAqB,OACnC,CAEJ,CACA,MAAO,CACL,MAAO/yC,EAAW1gD,CAAU,EAC5B,OAAQ0gD,CACd,CACE,EACA,MAAO,CAAClyG,EAAa4gJ,CAAY,CACnC,CCxNe,SAASsE,GAASxhG,EAAO,CACtC,OAAOjlE,EAAAA,QAAQ,UAAY,CACzB,GAAIilE,IAAU,IAAQ,CAACA,EACrB,MAAO,CAAC,CAAC,CAACA,EAAO,GAAO,GAAO,CAAC,EAElC,IAAIuuB,EAAWvuB,EAAM,SACnByhG,EAAiBzhG,EAAM,eACvBm9F,EAAWn9F,EAAM,SACjBgqB,EAAWhqB,EAAM,SACnB,OAAI,QAAQ,IAAI,WAAa,cAC3BlqE,GAAQ,CAACy4F,GAAY,CAACkzE,EAAgB,gDAAgD,EAEjF,CAAC,GAAMlzE,EAAU,CAACA,GAAYkzE,EAAgBtE,GAAY,EAAGnzE,CAAQ,CAC9E,EAAG,CAAChqB,CAAK,CAAC,CACZ,CCkBA,IAAI9a,GAAsB71D,EAAM,WAAW,SAAU3G,EAAOP,EAAK,CAC/D,IAAIs9D,EAAmB/8D,EAAM,UAC3B+rC,EAAYgxB,IAAqB,OAAS,YAAcA,EACxDhX,EAAY/lD,EAAM,UAClBqiB,EAAQriB,EAAM,MACdmM,EAAanM,EAAM,WACnB2W,EAAS3W,EAAM,OACfwL,EAAKxL,EAAM,GACXm9D,EAAkBn9D,EAAM,SACxBwa,EAAW2iD,IAAoB,OAAS,GAAQA,EAChDkV,EAAkBryE,EAAM,SACxBsyE,EAAWD,IAAoB,OAAS,GAAOA,EAC/C/K,EAAYtnE,EAAM,UAClBslH,EAAUtlH,EAAM,QAChBulH,EAASvlH,EAAM,OACfg5K,EAAah5K,EAAM,IACnBqtC,EAAM2rI,IAAe,OAAS,EAAIA,EAClCC,EAAaj5K,EAAM,IACnBs7B,EAAM29I,IAAe,OAAS,IAAMA,EACpCC,EAAcl5K,EAAM,KACpB41C,EAAOsjI,IAAgB,OAAS,EAAIA,EACpC3tL,EAAQyU,EAAM,MACd1O,EAAe0O,EAAM,aACrBs3E,EAAQt3E,EAAM,MACdjL,EAAQiL,EAAM,MACdkoC,EAAWloC,EAAM,SACjBm5K,EAAiBn5K,EAAM,eACvBo5K,EAAgBp5K,EAAM,cACtBy7D,EAAmBz7D,EAAM,iBACzBq5K,EAAoBr5K,EAAM,WAC1B82K,EAAauC,IAAsB,OAAS,GAAOA,EACnDC,EAAkBt5K,EAAM,SACxB+2K,EAAWuC,IAAoB,OAAS,GAAQA,EAChDC,EAAUv5K,EAAM,QAChBwmE,EAAWxmE,EAAM,SACjBw5K,EAAkBx5K,EAAM,SACxB8yK,EAAW0G,IAAoB,OAAS,GAAOA,EAC/CxF,EAAah0K,EAAM,WACnBy5K,EAAaz5K,EAAM,WACnB05K,EAAc15K,EAAM,YACpB25K,EAAY35K,EAAM,UAClB45K,GAAW55K,EAAM,SACjB65K,GAAiB75K,EAAM,eACvBizK,GAAQjzK,EAAM,MACdszK,GAAOtzK,EAAM,KACbgyK,GAAehyK,EAAM,aACrBiyK,EAAqBjyK,EAAM,mBAC3B85K,EAAQ95K,EAAM,MACd+5K,GAAkB/5K,EAAM,SACxBymD,EAAWszH,KAAoB,OAAS,EAAIA,GAC5CxI,GAAqBvxK,EAAM,mBAC3BwxK,GAA0BxxK,EAAM,wBAChCyxK,GAAezxK,EAAM,aACrB0xK,GAAkC1xK,EAAM,gCACtCmyK,GAAaxrK,EAAM,OAAO,IAAI,EAC9B8tD,GAAe9tD,EAAM,OAAO,IAAI,EAChCo+B,GAAYp+B,EAAM,QAAQ,UAAY,CACxC,OAAI6/D,EACK+yG,EAAU,MAAQ,MAEpBA,EAAU,MAAQ,KAC3B,EAAG,CAACA,EAAS/yG,CAAQ,CAAC,EAGlBwzG,GAAYlB,GAASxhG,CAAK,EAC5B2iG,GAAan8J,GAAek8J,GAAW,CAAC,EACxCE,GAAeD,GAAW,CAAC,EAC3BE,GAAgBF,GAAW,CAAC,EAC5BG,EAAsBH,GAAW,CAAC,EAClCxF,GAAWwF,GAAW,CAAC,EACvB34E,GAAW24E,GAAW,CAAC,EACrBI,GAAY1zK,EAAM,QAAQ,UAAY,CACxC,OAAO,SAAS0mC,CAAG,EAAIA,EAAM,CAC/B,EAAG,CAACA,CAAG,CAAC,EACJ9R,GAAY50B,EAAM,QAAQ,UAAY,CACxC,OAAO,SAAS20B,CAAG,EAAIA,EAAM,GAC/B,EAAG,CAACA,CAAG,CAAC,EAGJg/I,GAAa3zK,EAAM,QAAQ,UAAY,CACzC,OAAOivC,IAAS,MAAQA,GAAQ,EAAI,EAAIA,CAC1C,EAAG,CAACA,CAAI,CAAC,EAGL2kI,GAAa5zK,EAAM,QAAQ,UAAY,CACzC,OAAI,OAAOowK,GAAa,UACfA,EAAWuD,GAAa,GAE1BvD,GAAY,EAAIA,EAAW,EACpC,EAAG,CAACA,EAAUuD,EAAU,CAAC,EAGrBzD,GAAWlwK,EAAM,QAAQ,UAAY,CACvC,OAAO,OAAO,KAAKssK,IAAS,CAAA,CAAE,EAAE,IAAI,SAAU7oL,GAAK,CACjD,IAAIw0B,GAAOq0J,GAAM7oL,EAAG,EAChBowL,GAAU,CACZ,MAAO,OAAOpwL,EAAG,CACzB,EACM,OAAIw0B,IAAQnS,GAAQmS,EAAI,IAAM,UAAY,CAAejY,EAAM,eAAeiY,EAAI,IAAM,UAAWA,IAAQ,UAAWA,KACpH47J,GAAQ,MAAQ57J,GAAK,MACrB47J,GAAQ,MAAQ57J,GAAK,OAErB47J,GAAQ,MAAQ57J,GAEX47J,EACT,CAAC,EAAE,OAAO,SAAUn4K,GAAM,CACxB,IAAIumG,GAAQvmG,GAAK,MACjB,OAAOumG,IAAS,OAAOA,IAAU,QACnC,CAAC,EAAE,KAAK,SAAU9+G,GAAG4kB,GAAG,CACtB,OAAO5kB,GAAE,MAAQ4kB,GAAE,KACrB,CAAC,CACH,EAAG,CAACukK,EAAK,CAAC,EAGNwH,GAAa7D,GAAUyD,GAAW9+I,GAAW++I,GAAYzD,GAAUC,EAAYyD,EAAU,EAC3FG,GAAc58J,GAAe28J,GAAY,CAAC,EAC1C7mJ,GAAc8mJ,GAAY,CAAC,EAC3BlG,GAAekG,GAAY,CAAC,EAG1Bx+G,GAAkBl0B,GAAe12C,EAAc,CAC/C,MAAO/F,CACb,CAAK,EACD4wE,GAAmBr+C,GAAeo+C,GAAiB,CAAC,EACpD1zB,GAAc2zB,GAAiB,CAAC,EAChCv0B,GAAWu0B,GAAiB,CAAC,EAC3BkrD,GAAY1gH,EAAM,QAAQ,UAAY,CACxC,IAAI27H,GAAY95F,IAAgB,KAAoC,CAAA,EAAK,MAAM,QAAQA,EAAW,EAAIA,GAAc,CAACA,EAAW,EAC5HmyI,GAAa78J,GAAewkH,GAAW,CAAC,EAC1Cs4C,GAAcD,GAAW,CAAC,EAC1BE,GAAOD,KAAgB,OAASP,GAAYO,GAC1Cn2C,GAAej8F,KAAgB,KAAO,CAAA,EAAK,CAACqyI,EAAI,EAGpD,GAAIX,GAAc,CAIhB,GAHAz1C,GAAe/nH,GAAmB4lH,EAAS,EAGvCvtI,GAASyzC,KAAgB,OAAW,CACtC,IAAIsyI,GAAa/lL,GAAS,EAAIA,EAAQ,EAAI,EAI1C,IAHA0vI,GAAeA,GAAa,MAAM,EAAGq2C,EAAU,EAGxCr2C,GAAa,OAASq2C,IAAY,CACvC,IAAIC,GACJt2C,GAAa,MAAMs2C,GAAgBt2C,GAAaA,GAAa,OAAS,CAAC,KAAO,MAAQs2C,KAAkB,OAASA,GAAgBV,EAAS,CAC5I,CACF,CACA51C,GAAa,KAAK,SAAU36I,GAAG4kB,GAAG,CAChC,OAAO5kB,GAAI4kB,EACb,CAAC,CACH,CAGA,OAAA+1H,GAAa,QAAQ,SAAU9uI,GAAK5G,GAAO,CACzC01I,GAAa11I,EAAK,EAAI6kC,GAAYj+B,EAAG,CACvC,CAAC,EACM8uI,EACT,EAAG,CAACj8F,GAAa0xI,GAAcG,GAAWtlL,EAAO6+B,EAAW,CAAC,EAGzDonJ,GAAkB,SAAyBC,GAAe,CAC5D,OAAOf,GAAee,GAAgBA,GAAc,CAAC,CACvD,EACInyI,GAAgB1B,GAAS,SAAU0+F,GAAY,CAEjD,IAAIo1C,GAAkBx+J,GAAmBopH,EAAU,EAAE,KAAK,SAAUh8I,GAAG4kB,GAAG,CACxE,OAAO5kB,GAAI4kB,EACb,CAAC,EAGGw5B,GAAY,CAACpnB,GAAQo6J,GAAiB7zD,GAAW,EAAI,GACvDn/E,EAAS8yI,GAAgBE,EAAe,CAAC,EAI3CtzI,GAASszI,EAAe,CAC1B,CAAC,EACG3G,GAAentI,GAAS,SAAUiqI,GAAgB,CAEhDA,IACFc,GAAW,QAAQ,SAAQ,EAE7B,IAAIgJ,GAAcH,GAAgB3zD,EAAS,EAC3C+xD,GAAkB,MAAoCA,EAAc+B,EAAW,EAC/E/tK,GAAQ,CAACgsK,EAAe,mFAAmF,EAC3G39G,GAAqB,MAAuCA,EAAiB0/G,EAAW,CAC1F,CAAC,EACG/J,GAAW,SAAkBriL,GAAO,CACtC,GAAI,EAAAyrB,GAAY,CAAC2/J,IAAiB9yD,GAAU,QAAUotD,IAGtD,KAAIyG,GAAkBx+J,GAAmB2qG,EAAS,EAClD6zD,GAAgB,OAAOnsL,GAAO,CAAC,EAC/BoqL,GAAmB,MAAqCA,EAAe6B,GAAgBE,EAAe,CAAC,EACvGpyI,GAAcoyI,EAAe,EAC7B,IAAIE,GAAiB,KAAK,IAAI,EAAGrsL,GAAQ,CAAC,EAC1CojL,GAAW,QAAQ,SAAQ,EAC3BA,GAAW,QAAQ,MAAMiJ,EAAc,EACzC,EACIC,GAAW/G,GAAQ7/G,GAAc1vB,GAAWsiF,GAAWgzD,GAAW9+I,GAAW3H,GAAakV,GAAeyrI,GAAcC,GAAc2F,GAAe1F,EAAQ,EAC9J6G,GAAYx9J,GAAeu9J,GAAU,CAAC,EACtCnJ,GAAgBoJ,GAAU,CAAC,EAC3B5G,GAAgB4G,GAAU,CAAC,EAC3BjK,GAAiBiK,GAAU,CAAC,EAC5BxG,GAAcwG,GAAU,CAAC,EACzBC,GAAcD,GAAU,CAAC,EAMvBE,GAAqB,SAA4B5wL,GAAUE,GAAG,CAChE,GAAI,CAAC0vB,EAAU,CAEb,IAAI0gK,GAAkBx+J,GAAmB2qG,EAAS,EAC9CjiC,GAAa,EACbq2F,GAAmB,EACnBzD,GAAYz8I,GAAY8+I,GAC5BhzD,GAAU,QAAQ,SAAU1xH,GAAK5G,GAAO,CACtC,IAAI4oL,GAAO,KAAK,IAAI/sL,GAAW+K,EAAG,EAC9BgiL,IAAQK,KACVA,GAAYL,GACZvyF,GAAar2F,IAEX4G,GAAM/K,KACR6wL,GAAmB1sL,GAEvB,CAAC,EACD,IAAIiuJ,GAAa53D,GACb+0F,IAAiBnC,KAAc,IAAM,CAAC12E,IAAY+lB,GAAU,OAAS/lB,KACvE45E,GAAgB,OAAOO,GAAmB,EAAG,EAAG7wL,EAAQ,EACxDoyJ,GAAay+B,GAAmB,GAEhCP,GAAgB91F,EAAU,EAAIx6F,GAI5BsvL,IAAgB,CAAC7yD,GAAU,QAAUtyH,IAAU,QACjDmmL,GAAgB,KAAKtwL,EAAQ,EAE/B,IAAIk3B,GAAYk5J,GAAgBE,EAAe,EAG/C,GAFA/B,GAAmB,MAAqCA,EAAer3J,EAAS,EAChFgnB,GAAcoyI,EAAe,EACzBpwL,GAAG,CACL,IAAI4wL,GAAuBC,IAC1BD,GAAwB,SAAS,iBAAmB,MAAQA,KAA0B,SAAWC,GAAyBD,GAAsB,QAAU,MAAQC,KAA2B,QAAUA,GAAuB,KAAKD,EAAqB,EACzPvJ,GAAW,QAAQ,MAAMn1B,EAAU,EACnCu+B,GAAYzwL,GAAGkyJ,GAAYk+B,EAAe,CAC5C,MAEE9B,GAAkB,MAAoCA,EAAct3J,EAAS,EAC7E1U,GAAQ,CAACgsK,EAAe,mFAAmF,EAC3G39G,GAAqB,MAAuCA,EAAiB35C,EAAS,CAE1F,CACF,EAGI85J,GAAoB,SAA2B9wL,GAAG,CACpDA,GAAE,eAAc,EAChB,IAAImuE,GAAwBxE,GAAa,QAAQ,sBAAqB,EACpEl9C,GAAQ0hD,GAAsB,MAC9BzhD,GAASyhD,GAAsB,OAC/Bt2C,GAAOs2C,GAAsB,KAC7BnG,GAAMmG,GAAsB,IAC5B84D,GAAS94D,GAAsB,OAC/Br2C,GAAQq2C,GAAsB,MAC5B4iH,GAAU/wL,GAAE,QACdgxL,GAAUhxL,GAAE,QACV0zE,GACJ,OAAQz5B,GAAS,CACf,IAAK,MACHy5B,IAAWuzD,GAAS+pD,IAAWtkK,GAC/B,MACF,IAAK,MACHgnD,IAAWs9G,GAAUhpH,IAAOt7C,GAC5B,MACF,IAAK,MACHgnD,IAAW57C,GAAQi5J,IAAWtkK,GAC9B,MACF,QACEinD,IAAWq9G,GAAUl5J,IAAQpL,EACrC,CACI,IAAIuK,GAAYu4J,GAAY77G,IAAWjjC,GAAY8+I,IACnDmB,GAAmB5nJ,GAAY9R,EAAS,EAAGh3B,EAAC,CAC9C,EAGI48C,GAAkB/gC,EAAM,SAAS,IAAI,EACvCghC,GAAmB7pB,GAAe4pB,GAAiB,CAAC,EACpDq0I,GAAgBp0I,GAAiB,CAAC,EAClCq0I,GAAmBr0I,GAAiB,CAAC,EACnCs0I,GAAuB,SAA8B1tJ,GAAQ62D,GAAY,CAC3E,GAAI,CAAC5qE,EAAU,CACb,IAAIptB,GAAOonL,GAAantD,GAAW94F,GAAQ62D,EAAU,EACrD+zF,GAAmB,MAAqCA,EAAe6B,GAAgB3zD,EAAS,CAAC,EACjGv+E,GAAc17C,GAAK,MAAM,EACzB4uL,GAAiB5uL,GAAK,KAAK,CAC7B,CACF,EACAuZ,EAAM,UAAU,UAAY,CAC1B,GAAIo1K,KAAkB,KAAM,CAC1B,IAAI32F,GAAaiiC,GAAU,QAAQ00D,EAAa,EAC5C32F,IAAc,GAChB+sF,GAAW,QAAQ,MAAM/sF,EAAU,CAEvC,CACA42F,GAAiB,IAAI,CACvB,EAAG,CAACD,EAAa,CAAC,EAGlB,IAAIG,GAAuBv1K,EAAM,QAAQ,UAAY,CACnD,OAAIyzK,GAAuBE,KAAe,MACpC,QAAQ,IAAI,WAAa,cAC3BltK,GAAQ,GAAO,0DAA0D,EAEpE,IAEFgtK,CACT,EAAG,CAACA,EAAqBE,EAAU,CAAC,EAChC9mD,GAAcpsF,GAAS,SAAUt8C,GAAGs6F,GAAY,CAClDm2F,GAAYzwL,GAAGs6F,EAAU,EACzB+zF,GAAmB,MAAqCA,EAAe6B,GAAgB3zD,EAAS,CAAC,CACnG,CAAC,EAGGyM,GAAWo+C,KAAkB,GACjCvrK,EAAM,UAAU,UAAY,CAC1B,GAAI,CAACmtH,GAAU,CACb,IAAI1uC,GAAaiiC,GAAU,YAAYqtD,EAAa,EACpDvC,GAAW,QAAQ,MAAM/sF,EAAU,CACrC,CACF,EAAG,CAAC0uC,EAAQ,CAAC,EAGb,IAAIqoD,GAAoBx1K,EAAM,QAAQ,UAAY,CAChD,OAAO+V,GAAmBo4J,EAAW,EAAE,KAAK,SAAUhrL,GAAG4kB,GAAG,CAC1D,OAAO5kB,GAAI4kB,EACb,CAAC,CACH,EAAG,CAAComK,EAAW,CAAC,EAIZ1mD,GAAiBznH,EAAM,QAAQ,UAAY,CAC3C,OAAKuzK,GAGE,CAACiC,GAAkB,CAAC,EAAGA,GAAkBA,GAAkB,OAAS,CAAC,CAAC,EAFpE,CAAC9B,GAAW8B,GAAkB,CAAC,CAAC,CAG3C,EAAG,CAACA,GAAmBjC,GAAcG,EAAS,CAAC,EAC/ChsD,GAAkBvwG,GAAeswG,GAAgB,CAAC,EAClDwkD,GAAgBvkD,GAAgB,CAAC,EACjCwkD,GAAcxkD,GAAgB,CAAC,EAGjC1nH,EAAM,oBAAoBlH,EAAK,UAAY,CACzC,MAAO,CACL,MAAO,UAAiB,CACtB0yK,GAAW,QAAQ,MAAM,CAAC,CAC5B,EACA,KAAM,UAAgB,CACpB,IAAIiK,GACAlrG,GAAY,SACdC,GAAgBD,GAAU,eACvBkrG,GAAyB3nH,GAAa,WAAa,MAAQ2nH,KAA2B,QAAUA,GAAuB,SAASjrG,EAAa,IAChJA,IAAkB,MAAoCA,GAAc,KAAI,EAE5E,CACN,CACE,CAAC,EAGDxqE,EAAM,UAAU,UAAY,CACtB2gE,GACF6qG,GAAW,QAAQ,MAAM,CAAC,CAE9B,EAAG,CAAA,CAAE,EAGL,IAAIttI,GAAUl+B,EAAM,QAAQ,UAAY,CACtC,MAAO,CACL,IAAK0zK,GACL,IAAK9+I,GACL,UAAWwJ,GACX,SAAUvqB,EACV,SAAU83D,EACV,KAAMgoG,GACN,SAAUxH,EACV,cAAeF,GACf,YAAaC,GACb,MAAOqH,GACP,SAAUzzH,EACV,mBAAoB8qH,GACpB,wBAAyBC,GACzB,aAAcC,GACd,gCAAiCC,GACjC,OAAQ/6J,GAAU,CAAA,EAClB,WAAYxK,GAAc,CAAA,CAChC,CACE,EAAG,CAACkuK,GAAW9+I,GAAWwJ,GAAWvqB,EAAU83D,EAAUgoG,GAAYxH,EAAUF,GAAeC,GAAaqH,GAAczzH,EAAU8qH,GAAoBC,GAAyBC,GAAcC,GAAiC/6J,EAAQxK,CAAU,CAAC,EAGlP,OAAoBxF,EAAM,cAAcsqK,GAAc,SAAU,CAC9D,MAAOpsI,EACX,EAAkBl+B,EAAM,cAAc,MAAO,CACzC,IAAK8tD,GACL,UAAW09B,GAAIpmD,EAAWga,EAAWh4C,EAAgBA,EAAgBA,EAAgBA,EAAgB,CAAA,EAAI,GAAG,OAAOg+B,EAAW,WAAW,EAAGvxB,CAAQ,EAAG,GAAG,OAAOuxB,EAAW,WAAW,EAAGy6B,CAAQ,EAAG,GAAG,OAAOz6B,EAAW,aAAa,EAAG,CAACy6B,CAAQ,EAAG,GAAG,OAAOz6B,EAAW,aAAa,EAAG8qI,GAAS,MAAM,CAAC,EAC3S,MAAOx0J,EACP,YAAau5J,GACb,GAAIpwK,CACR,EAAkB7E,EAAM,cAAc,MAAO,CACzC,UAAWwrF,GAAI,GAAG,OAAOpmD,EAAW,OAAO,EAAG5/B,GAAe,KAAgC,OAASA,EAAW,IAAI,EACrH,MAAO2P,EAAcA,EAAc,CAAA,EAAI69J,CAAS,EAAGhjK,GAAW,KAA4B,OAASA,EAAO,IAAI,CAClH,CAAG,EAAGmjK,IAAU,IAAsBnzK,EAAM,cAAcotK,GAAQ,CAC9D,UAAWhoI,EACX,MAAO0tI,EACP,OAAQpyD,GACR,WAAY2sD,EACZ,YAAakI,GAAuB1oD,GAAc,MACtD,CAAG,EAAgB7sH,EAAM,cAAc0sK,GAAO,CAC1C,UAAWtnI,EACX,MAAO8qI,GACP,KAAMvD,GACN,MAAOsG,GACP,YAAaC,EACjB,CAAG,EAAgBlzK,EAAM,cAAcorK,GAAS,CAC5C,IAAKI,GACL,UAAWpmI,EACX,MAAO2tI,EACP,OAAQ5E,GACR,cAAe5C,GACf,eAAgBb,GAChB,YAAa79C,GACb,eAAgByoD,GAChB,QAAS32D,EACT,OAAQC,EACR,aAAcysD,GACd,mBAAoBC,EACpB,iBAAkBsC,GAClB,SAAU4F,GAAgB/I,GAAW,MACzC,CAAG,EAAgBzqK,EAAM,cAAcqsK,GAAO,CAC1C,UAAWjnI,EACX,MAAO8qI,GACP,QAAS2E,EACb,CAAG,CAAC,CAAC,CACL,CAAC,EACG,QAAQ,IAAI,WAAa,eAC3Bh/G,GAAO,YAAc,UC/dvB,MAAM6/G,GAAqCh9K,EAAAA,cAAc,EAAE,ECKrDi9K,GAA6B31K,EAAM,WAAW,CAAC3G,EAAOP,IAAQ,CAClE,KAAM,CACJ,KAAAsuE,EACA,eAAAsjG,EACA,MAAA9lL,CACJ,EAAMyU,EACE2uJ,EAAWjvJ,EAAAA,OAAO,IAAI,EACtBs+G,EAAajwC,GAAQ,CAACsjG,EACtB3zB,EAASh+I,EAAAA,OAAO,IAAI,EAC1B,SAAS68K,GAAkB,CACzBx/J,GAAI,OAAO2gI,EAAO,OAAO,EACzBA,EAAO,QAAU,IACnB,CACA,SAAS8+B,GAAY,CACnB9+B,EAAO,QAAU3gI,GAAI,IAAM,CACzB,IAAIlvB,GACHA,EAAK8gK,EAAS,WAAa,MAAQ9gK,IAAO,QAAkBA,EAAG,WAAU,EAC1E6vJ,EAAO,QAAU,IACnB,CAAC,CACH,CACA/2I,OAAAA,EAAM,UAAU,KACVq3G,EACFw+D,EAAS,EAETD,EAAe,EAEVA,GACN,CAACv+D,EAAYh+G,EAAM,MAAOzU,CAAK,CAAC,EACfob,EAAM,cAAc4qI,GAAS,OAAO,OAAO,CAC7D,IAAK1+H,GAAW87I,EAAUlvJ,CAAG,CACjC,EAAKO,EAAO,CACR,KAAMg+G,CACV,CAAG,CAAC,CACJ,CAAC,EACG,QAAQ,IAAI,WAAa,eAC3Bs+D,GAAc,YAAc,iBCrC9B,MAAM7zH,GAAexkC,GAAS,CAC5B,KAAM,CACJ,aAAA0pB,EACA,OAAAmnB,EACA,YAAA2nH,EACA,QAAAC,EACA,WAAAC,EACA,WAAAC,EACA,sBAAAC,EACA,oBAAAC,EACA,KAAAzgJ,EACA,WAAA0gJ,EACA,gBAAAC,EACA,kBAAAC,EACA,yBAAAC,EACA,gBAAAC,EACA,qBAAAC,EACA,kBAAAlzH,CACJ,EAAMjmC,EACJ,MAAO,CACL,CAAC0pB,CAAY,EAAG,OAAO,OAAO,OAAO,OAAO,GAAIsC,GAAehsB,CAAK,CAAC,EAAG,CACtE,SAAU,WACV,OAAQw4J,EACR,OAAQ,GAAG13J,GAAK63J,CAAU,CAAC,IAAI73J,GAAK43J,CAAU,CAAC,GAC/C,QAAS,EACT,OAAQ,UACR,YAAa,OACb,aAAc,CACZ,OAAQ,GAAG53J,GAAK43J,CAAU,CAAC,IAAI53J,GAAK63J,CAAU,CAAC,EACvD,EACM,CAAC,GAAGjvI,CAAY,OAAO,EAAG,CACxB,SAAU,WACV,gBAAiB1pB,EAAM,OACvB,aAAcA,EAAM,eACpB,WAAY,oBAAoBimC,CAAiB,EACzD,EACM,CAAC,GAAGvc,CAAY,UAAUA,CAAY,SAAS,EAAG,CAChD,SAAU,WACV,WAAY,oBAAoBuc,CAAiB,EACzD,EACM,CAAC,GAAGvc,CAAY,QAAQ,EAAG,CACzB,gBAAiB1pB,EAAM,QACvB,aAAcA,EAAM,cAC5B,EACM,CAAC,GAAG0pB,CAAY,kBAAkB,EAAG,CACnC,UAAW,cACX,eAAgB,cAChB,OAAQ,qBAChB,EACM,UAAW,CACT,CAAC,GAAGA,CAAY,OAAO,EAAG,CACxB,gBAAiB1pB,EAAM,WACjC,EACQ,CAAC,GAAG0pB,CAAY,QAAQ,EAAG,CACzB,gBAAiB1pB,EAAM,YACjC,EACQ,CAAC,GAAG0pB,CAAY,MAAM,EAAG,CACvB,YAAakvI,CACvB,EACQ,CAAC,GAAGlvI,CAAY,gBAAgB,EAAG,CACjC,UAAW,SAAS5oB,GAAKo4J,CAAe,CAAC,IAAIl5J,EAAM,uBAAuB,EACpF,EACQ,CAAC,GAAG0pB,CAAY,aAAa,EAAG,CAC9B,YAAa1pB,EAAM,oBAC7B,CACA,EACM,CAAC,GAAG0pB,CAAY,SAAS,EAAG,CAC1B,SAAU,WACV,MAAOovI,EACP,OAAQA,EACR,QAAS,OACT,WAAY,OAEZ,oBAAqB,CACnB,QAAS,CACnB,EAEQ,YAAa,CACX,QAAS,KACT,SAAU,WACV,iBAAkB1gJ,EAAK8gJ,CAAe,EAAE,IAAI,EAAE,EAAE,MAAK,EACrD,gBAAiB9gJ,EAAK8gJ,CAAe,EAAE,IAAI,EAAE,EAAE,MAAK,EACpD,MAAO9gJ,EAAK0gJ,CAAU,EAAE,IAAI1gJ,EAAK8gJ,CAAe,EAAE,IAAI,CAAC,CAAC,EAAE,MAAK,EAC/D,OAAQ9gJ,EAAK0gJ,CAAU,EAAE,IAAI1gJ,EAAK8gJ,CAAe,EAAE,IAAI,CAAC,CAAC,EAAE,MAAK,EAChE,gBAAiB,aAC3B,EACQ,WAAY,CACV,QAAS,KACT,SAAU,WACV,gBAAiB,EACjB,iBAAkB,EAClB,MAAOJ,EACP,OAAQA,EACR,gBAAiB94J,EAAM,gBACvB,UAAW,SAASc,GAAKo4J,CAAe,CAAC,IAAIl5J,EAAM,WAAW,GAC9D,QAAS,wBACT,aAAc,MACd,OAAQ,UACR,WAAY;AAAA,iCACWimC,CAAiB;AAAA,gCAClBA,CAAiB;AAAA,oBAC7BA,CAAiB;AAAA,qBAChBA,CAAiB;AAAA,yBACbA,CAAiB;AAAA,sBACpBA,CAAiB;AAAA,WAEvC,EACQ,6BAA8B,CAC5B,YAAa,CACX,iBAAkB7tB,EAAK2gJ,CAAe,EAAE,IAAID,CAAU,EAAE,IAAI,CAAC,EAAE,IAAIK,CAAoB,EAAE,IAAI,EAAE,EAAE,MAAK,EACtG,gBAAiB/gJ,EAAK2gJ,CAAe,EAAE,IAAID,CAAU,EAAE,IAAI,CAAC,EAAE,IAAIK,CAAoB,EAAE,IAAI,EAAE,EAAE,MAAK,EACrG,MAAO/gJ,EAAK2gJ,CAAe,EAAE,IAAI3gJ,EAAK+gJ,CAAoB,EAAE,IAAI,CAAC,CAAC,EAAE,MAAK,EACzE,OAAQ/gJ,EAAK2gJ,CAAe,EAAE,IAAI3gJ,EAAK+gJ,CAAoB,EAAE,IAAI,CAAC,CAAC,EAAE,MAAK,CACtF,EACU,WAAY,CACV,UAAW,SAASr4J,GAAKq4J,CAAoB,CAAC,IAAIH,CAAiB,GACnE,QAAS,aAAaC,CAAwB,GAC9C,MAAOF,EACP,OAAQA,EACR,iBAAkB/4J,EAAM,KAAK84J,CAAU,EAAE,IAAIC,CAAe,EAAE,IAAI,CAAC,EAAE,MAAK,EAC1E,gBAAiB/4J,EAAM,KAAK84J,CAAU,EAAE,IAAIC,CAAe,EAAE,IAAI,CAAC,EAAE,MAAK,CACrF,CACA,CACA,EACM,CAAC,UAAUrvI,CAAY,SAAS,EAAG,CACjC,sBAAuB,CACrB,WAAY,MACtB,CACA,EACM,CAAC,GAAGA,CAAY,OAAO,EAAG,CACxB,SAAU,WACV,SAAU1pB,EAAM,QACxB,EACM,CAAC,GAAG0pB,CAAY,YAAY,EAAG,CAC7B,SAAU,WACV,QAAS,eACT,MAAO1pB,EAAM,qBACb,UAAW,SACX,UAAW,WACX,OAAQ,UACR,WAAY,OACZ,WAAY,CACV,MAAOA,EAAM,SACvB,CACA,EACM,CAAC,GAAG0pB,CAAY,OAAO,EAAG,CACxB,SAAU,WACV,WAAY,cACZ,cAAe,MACvB,EACM,CAAC,GAAGA,CAAY,MAAM,EAAG,CACvB,SAAU,WACV,MAAO+uI,EACP,OAAQA,EACR,gBAAiBz4J,EAAM,gBACvB,OAAQ,GAAGc,GAAKo4J,CAAe,CAAC,UAAUl5J,EAAM,cAAc,GAC9D,aAAc,MACd,OAAQ,UACR,WAAY,gBAAgBA,EAAM,kBAAkB,GACpD,cAAe,OACf,WAAY,CACV,YAAaA,EAAM,oBAC7B,CACA,EACM,CAAC,IAAI0pB,CAAY,WAAW,EAAG,CAC7B,OAAQ,cACR,CAAC,GAAGA,CAAY,OAAO,EAAG,CACxB,gBAAiB,GAAG1pB,EAAM,MAAM,aAC1C,EACQ,CAAC,GAAG0pB,CAAY,QAAQ,EAAG,CACzB,gBAAiB,GAAG1pB,EAAM,eAAe,aACnD,EACQ,CAAC;AAAA,YACG0pB,CAAY;AAAA,SACf,EAAG,CACF,gBAAiB1pB,EAAM,gBACvB,YAAaA,EAAM,gBACnB,UAAW,OACX,OAAQ,aAClB,EACQ,CAAC,GAAG0pB,CAAY,gBAAgB,EAAG,CACjC,gBAAiB1pB,EAAM,gBACvB,OAAQ,cACR,MAAO84J,EACP,OAAQA,EACR,UAAW,SAASh4J,GAAKo4J,CAAe,CAAC,IAAIL,CAAmB,GAChE,iBAAkB,EAClB,gBAAiB,CAC3B,EACQ,CAAC;AAAA,YACGnvI,CAAY;AAAA,YACZA,CAAY;AAAA,SACf,EAAG,CACF,OAAQ,wBAClB,CACA,EACM,CAAC,aAAamnB,CAAM,gBAAgB,EAAG,CACrC,SAAU,OAClB,CACA,CAAK,CACL,CACA,EAEMuoH,GAAoB,CAACp5J,EAAOmtG,IAAe,CAC/C,KAAM,CACJ,aAAAzjF,EACA,SAAA2vI,EACA,WAAAP,EACA,QAAAL,EACA,WAAAC,EACA,KAAAtgJ,CACJ,EAAMpY,EACEs5J,EAAcnsD,EAAa,eAAiB,gBAC5CosD,EAAOpsD,EAAa,QAAU,SAC9BqsD,EAAOrsD,EAAa,SAAW,QAC/BssD,EAAYtsD,EAAa,kBAAoB,mBAC7CusD,EAAYvsD,EAAa,MAAQ,mBACjCwsD,EAAgBvhJ,EAAKihJ,CAAQ,EAAE,IAAI,CAAC,EAAE,IAAIP,CAAU,EAAE,IAAI,CAAC,EAAE,MAAK,EAClEc,EAAsBxhJ,EAAK0gJ,CAAU,EAAE,IAAIO,CAAQ,EAAE,IAAI,CAAC,EAAE,MAAK,EACjEQ,EAAkB1sD,EAAa,CACnC,YAAa,GAAGrsG,GAAK84J,CAAmB,CAAC,KACzC,UAAW,cAAc94J,GAAKsX,EAAKwhJ,CAAmB,EAAE,IAAI,EAAE,EAAE,MAAK,CAAE,CAAC,GAC5E,EAAM,CACF,YAAa,KAAK94J,GAAK84J,CAAmB,CAAC,GAC3C,UAAW,cAAc94J,GAAKd,EAAM,KAAK45J,CAAmB,EAAE,IAAI,EAAE,EAAE,MAAK,CAAE,CAAC,GAClF,EACE,MAAO,CACL,CAACN,CAAW,EAAGD,EACf,CAACG,CAAI,EAAGphJ,EAAKihJ,CAAQ,EAAE,IAAI,CAAC,EAAE,MAAK,EACnC,CAAC,GAAG3vI,CAAY,OAAO,EAAG,CACxB,CAAC6vI,CAAI,EAAG,OACR,CAACC,CAAI,EAAGH,CACd,EACI,CAAC,GAAG3vI,CAAY,UAAUA,CAAY,SAAS,EAAG,CAChD,CAAC8vI,CAAI,EAAGH,CACd,EACI,CAAC,GAAG3vI,CAAY,kBAAkB,EAAG,OAAO,OAAO,CAAA,EAAImwI,CAAe,EACtE,CAAC,GAAGnwI,CAAY,SAAS,EAAG,CAC1B,CAAC+vI,CAAS,EAAGE,CACnB,EACI,CAAC,GAAGjwI,CAAY,OAAO,EAAG,CAExB,iBAAkB,EAClB,IAAK,EAEL,CAACgwI,CAAS,EAAGthJ,EAAKihJ,CAAQ,EAAE,IAAI,CAAC,EAAE,IAAIlsD,EAAa,EAAIurD,CAAU,EAAE,MAAK,EACzE,CAACa,CAAI,EAAG,MACd,EACI,CAAC,GAAG7vI,CAAY,OAAO,EAAG,CAExB,iBAAkB,EAClB,IAAK,EACL,CAACgwI,CAAS,EAAGL,EACb,CAACE,CAAI,EAAG,OACR,CAACC,CAAI,EAAGH,CACd,EACI,CAAC,GAAG3vI,CAAY,MAAM,EAAG,CACvB,SAAU,WACV,CAAC+vI,CAAS,EAAGrhJ,EAAKihJ,CAAQ,EAAE,IAAIZ,CAAO,EAAE,IAAI,CAAC,EAAE,MAAK,CAC3D,CACA,CACA,EAEMqB,GAAqB95J,GAAS,CAClC,KAAM,CACJ,aAAA0pB,EACA,mBAAAqwI,CACJ,EAAM/5J,EACJ,MAAO,CACL,CAAC,GAAG0pB,CAAY,aAAa,EAAG,OAAO,OAAO,OAAO,OAAO,CAAA,EAAI0vI,GAAkBp5J,EAAO,EAAI,CAAC,EAAG,CAC/F,CAAC,IAAI0pB,CAAY,aAAa,EAAG,CAC/B,aAAcqwI,CACtB,CACA,CAAK,CACL,CACA,EAEMC,GAAmBh6J,GAAS,CAChC,KAAM,CACJ,aAAA0pB,CACJ,EAAM1pB,EACJ,MAAO,CACL,CAAC,GAAG0pB,CAAY,WAAW,EAAG,OAAO,OAAO,OAAO,OAAO,CAAA,EAAI0vI,GAAkBp5J,EAAO,EAAK,CAAC,EAAG,CAC9F,OAAQ,MACd,CAAK,CACL,CACA,EAgCAi6J,GAAe5yI,GAAc,SAAUrnB,GAAS,CAC9C,MAAMk6J,EAAcj0I,GAAWjmB,EAAO,CACpC,WAAYA,EAAM,KAAKA,EAAM,aAAa,EAAE,IAAIA,EAAM,WAAW,EAAE,IAAI,CAAC,EAAE,MAAK,EAC/E,WAAYA,EAAM,KAAKA,EAAM,WAAW,EAAE,IAAI,CAAC,EAAE,MAAK,EACtD,mBAAoBA,EAAM,KAAKA,EAAM,eAAe,EAAE,IAAIA,EAAM,WAAW,EAAE,MAAK,CACtF,CAAG,EACD,MAAO,CAACwkC,GAAa01H,CAAW,EAAGJ,GAAmBI,CAAW,EAAGF,GAAiBE,CAAW,CAAC,CACnG,EArCqCl6J,GAAS,CAG5C,MAAMw4J,EAAcx4J,EAAM,gBAAkB,EACtCm6J,EAAmBn6J,EAAM,gBAAkB,EAC3Ck5J,EAAkBl5J,EAAM,UAAY,EACpCm5J,EAAuBn5J,EAAM,UAAY,EAAsB,IAC/Dg5J,EAAoBh5J,EAAM,aAC1Bi5J,EAA2B,IAAI1hJ,GAAUyhJ,CAAiB,EAAE,KAAK,EAAG,EAAE,YAAW,EACvF,MAAO,CACL,YAAAR,EACA,SAAU,EACV,WAAYA,EACZ,gBAAiB2B,EACjB,QAAS,EACT,gBAAAjB,EACA,qBAAAC,EACA,OAAQn5J,EAAM,kBACd,YAAaA,EAAM,mBACnB,QAASA,EAAM,mBACf,aAAcA,EAAM,wBACpB,YAAaA,EAAM,mBACnB,kBAAAg5J,EACA,yBAAAC,EACA,oBAAqB,IAAI1hJ,GAAUvX,EAAM,iBAAiB,EAAE,aAAaA,EAAM,gBAAgB,EAAE,YAAW,EAC5G,eAAgBA,EAAM,qBACtB,qBAAsBA,EAAM,mBAC5B,gBAAiBA,EAAM,wBAC3B,CACA,CAQwB,ECxUT,SAASo6J,IAAa,CACnC,KAAM,CAACz4K,EAAOE,CAAQ,EAAIa,EAAM,SAAS,EAAK,EACxC+2I,EAAS/2I,EAAM,OAAO,IAAI,EAC1B0W,EAAU,IAAM,CACpBN,GAAI,OAAO2gI,EAAO,OAAO,CAC3B,EACM4gC,EAAgBr4K,GAAa,CACjCoX,EAAO,EACHpX,EACFH,EAASG,CAAS,EAElBy3I,EAAO,QAAU3gI,GAAI,IAAM,CACzBjX,EAASG,CAAS,CACpB,CAAC,CAEL,EACAU,OAAAA,EAAM,UAAU,IAAM0W,EAAS,EAAE,EAC1B,CAACzX,EAAO04K,CAAa,CAC9B,CClBA,IAAIxvI,GAAgC,SAAU/kD,EAAGe,EAAG,CAClD,IAAId,EAAI,CAAA,EACR,QAASe,KAAKhB,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGgB,CAAC,GAAKD,EAAE,QAAQC,CAAC,EAAI,IAAGf,EAAEe,CAAC,EAAIhB,EAAEgB,CAAC,GAC/F,GAAIhB,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WAAY,QAAS,EAAI,EAAGgB,EAAI,OAAO,sBAAsBhB,CAAC,EAAG,EAAIgB,EAAE,OAAQ,IAClID,EAAE,QAAQC,EAAE,CAAC,CAAC,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKhB,EAAGgB,EAAE,CAAC,CAAC,IAAGf,EAAEe,EAAE,CAAC,CAAC,EAAIhB,EAAEgB,EAAE,CAAC,CAAC,GAElG,OAAOf,CACT,EAYA,SAASu0L,GAAgBC,EAAcC,EAAoB,CACzD,OAAID,GAAgBA,IAAiB,KAC5BA,EAELC,GAAsBA,IAAuB,KACxCA,EAEF9oL,GAAO,OAAOA,GAAQ,SAAWA,EAAI,SAAQ,EAAK,EAC3D,CACA,MAAM6mE,GAAsB71D,EAAM,WAAW,CAAC3G,EAAOP,IAAQ,CAC3D,KAAM,CACF,UAAW8kC,EACX,MAAA+yC,EACA,UAAAvxB,EACA,cAAAY,EACA,MAAAtkC,EACA,SAAA7H,EAEA,iBAAkBkkK,EAClB,aAAcD,EACd,eAAgBE,EAChB,yBAA0BC,EAC1B,iBAAkBC,EAClB,QAAA97H,EAAU,CAAA,EACV,iBAAA0Y,EACA,WAAYqjH,EACZ,OAAAnoK,CACN,EAAQ3W,EACJu9C,EAAYzO,GAAO9uC,EAAO,CAAC,YAAa,QAAS,YAAa,gBAAiB,QAAS,WAAY,mBAAoB,eAAgB,iBAAkB,2BAA4B,mBAAoB,UAAW,mBAAoB,aAAc,QAAQ,CAAC,EAC5P,CACJ,SAAAwmE,CACJ,EAAMxmE,EACE,CACJ,aAAA8kC,EACA,UAAWwpG,EACX,UAAWviF,EACX,MAAOC,EACP,WAAY8b,EACZ,OAAQC,EACR,kBAAA/iC,CACJ,EAAML,GAAmB,QAAQ,EACzB08G,EAAkB16I,EAAM,WAAWi/B,EAAe,EAClDqiC,EAAiBztD,GAAsD6mI,EAEvE,CACJ,aAAc09B,EACd,UAAWC,CACf,EAAMr4K,EAAM,WAAW01K,EAAqB,EAEpCplD,GADkB+nD,GAA4B1wC,KAClB,MAE5B,CAAC2wC,EAAWC,CAAY,EAAIb,GAAU,EACtC,CAACc,EAAWC,CAAY,EAAIf,GAAU,EACtCgB,EAAe,OAAO,OAAO,CAAA,EAAIt8H,CAAO,EACxC,CACJ,KAAMu8H,EACN,UAAWC,EACX,kBAAmBC,EACnB,UAAWC,EACX,UAAWjB,CACf,EAAMa,EACEK,GAAWJ,GAA+DX,EAC1EgB,IAAcV,GAAaE,IAAcO,KAAa,GACtDE,GAAqBrB,GAAgBC,EAAcC,CAAkB,EAErE,CAAC3qD,GAAUC,EAAW,EAAIsqD,GAAU,EACpCwB,EAA2B/5C,IAAc,CAC7CrqE,GAAqB,MAA+CA,EAAiBqqE,EAAU,EAC/F/R,GAAY,EAAK,CACnB,EAEM+rD,EAAsB,CAAClxE,GAAWmxE,KAClCnxE,KAGCmxE,GAGE9oD,EAAQ,OAAS,QAFf,OAKLlrF,GAAYjH,EAAa,SAAUP,CAAkB,EACrD,CAAC8H,EAAY1mB,GAAQ2mB,EAAS,EAAIX,GAASI,EAAS,EACpDmsG,GAAiB/rI,GAAW45C,EAAWgG,EAAkB+b,EAAkB,KAAMg3G,GAAqB,KAAsC,OAASA,EAAiB,KAAMn4H,EAAe,CAC/L,CAAC,GAAG5a,EAAS,MAAM,EAAGkrF,EACtB,CAAC,GAAGlrF,EAAS,OAAO,EAAG+nF,EAC3B,EAAKnuG,GAAQ2mB,EAAS,EAOpB,GALI2qF,GAAS,CAAC15E,EAAU,WACtBA,EAAU,QAAU,CAACA,EAAU,SAI7B,QAAQ,IAAI,WAAa,aAAc,CACzC,MAAMnwC,GAAUirB,GAAc,QAAQ,EACtC,CAAC,CAAC,mBAAoB,WAAW,EAAG,CAAC,2BAA4B,mBAAmB,EAAG,CAAC,eAAgB,WAAW,EAAG,CAAC,mBAAoB,WAAW,EAAG,CAAC,iBAAkB,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC8+D,GAAgBC,CAAO,IAAM,CAC1NhqF,GAAQ,WAAW,EAAE+pF,MAAkBn3F,GAAQm3F,GAAgB,WAAWC,CAAO,EAAE,CACrF,CAAC,CACH,CAEAzwF,EAAM,UAAU,IAAM,CACpB,MAAM+pE,GAAY,IAAM,CAGtB3zD,GAAI,IAAM,CACRqiK,EAAa,EAAK,CACpB,EAAG,CAAC,CACN,EACA,gBAAS,iBAAiB,UAAW1uG,EAAS,EACvC,IAAM,CACX,SAAS,oBAAoB,UAAWA,EAAS,CACnD,CACF,EAAG,CAAA,CAAE,EACL,MAAMsvG,GAAyB1oG,GAAS,CAACooG,GACnC1N,GAAe+M,IAAwB,CAAC3wK,GAAMohB,KAAS,CAC3D,KAAM,CACJ,MAAAzgC,CACN,EAAQygC,GACEywJ,GAAY7xK,GAAK,MACvB,SAAS8xK,GAAWzsI,GAAWhlD,GAAO0xL,GAAuB,CAC3D,IAAItyL,GAAID,GAAIqN,GAAID,GACZmlL,MACDvyL,IAAMC,GAAK0vD,GAAW9J,EAAS,KAAO,MAAQ7lD,KAAO,QAAkBA,GAAG,KAAKC,GAAIY,EAAK,IAE1FuM,IAAMC,GAAKglL,IAAWxsI,EAAS,KAAO,MAAQz4C,KAAO,QAAkBA,GAAG,KAAKC,GAAIxM,EAAK,CAC3F,CACA,MAAM4yH,GAAc,OAAO,OAAO,OAAO,OAAO,CAAA,EAAI4+D,EAAS,EAAG,CAC9D,aAAcn1L,IAAK,CACjBo0L,EAAa,EAAI,EACjBgB,GAAW,eAAgBp1L,EAAC,CAC9B,EACA,aAAcA,IAAK,CACjBo0L,EAAa,EAAK,EAClBgB,GAAW,eAAgBp1L,EAAC,CAC9B,EACA,YAAaA,IAAK,CAChBs0L,EAAa,EAAI,EACjBrrD,GAAY,EAAI,EAChBmsD,GAAW,cAAep1L,EAAC,CAC7B,EACA,QAASA,IAAK,CACZ,IAAI+C,GACJuxL,EAAa,EAAI,GAChBvxL,GAAK0vD,EAAU,WAAa,MAAQ1vD,KAAO,QAAkBA,GAAG,KAAK0vD,EAAWzyD,EAAC,EAClFo1L,GAAW,UAAWp1L,GAAG,EAAI,CAC/B,EACA,OAAQA,IAAK,CACX,IAAI+C,GACJuxL,EAAa,EAAK,GACjBvxL,GAAK0vD,EAAU,UAAY,MAAQ1vD,KAAO,QAAkBA,GAAG,KAAK0vD,EAAWzyD,EAAC,EACjFo1L,GAAW,SAAUp1L,GAAG,EAAI,CAC9B,CACN,CAAK,EACKs1L,GAAyBz5K,EAAM,aAAayH,GAAMizG,EAAW,EAC7DtzC,IAAQ,CAAC,CAAC2xG,IAAYC,KAAeC,KAAuB,KAElE,OAAKI,GAcEI,GAbez5K,EAAM,cAAc21K,GAAe,OAAO,OAAO,CAAA,EAAI+C,EAAc,CACrF,UAAWv6I,EAAa,UAAW26I,GAAyGf,CAAsB,EAClK,MAAOkB,GAAqBA,GAAmBpwJ,GAAK,KAAK,EAAI,GAC7D,MAAOA,GAAK,MACZ,KAAMu+C,GACN,UAAW+xG,EAAoBP,GAA8EV,EAAwBr4G,CAAQ,EAC7I,IAAKz3E,EACL,WAAY,CACV,KAAM,GAAGg9C,EAAS,UAC5B,EACQ,kBAAmByzI,GAA4BZ,GAAkC55I,CACzF,CAAO,EAAGo7I,EAAS,CAGjB,GAEMnO,GAAqB+N,GAAyB,CAAC9iK,GAAQsS,KAAS,CACpE,MAAM4wJ,EAAyBz5K,EAAM,aAAauW,GAAQ,CACxD,MAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIA,GAAO,MAAM,KAAK,EAAG,CAC1D,WAAY,QACpB,CAAO,CACP,CAAK,EACD,OAAoBvW,EAAM,cAAc21K,GAAe,OAAO,OAAO,CAAA,EAAI+C,EAAc,CACrF,UAAWv6I,EAAa,UAAW26I,GAAyGf,CAAsB,EAClK,MAAOkB,GAAqBA,GAAmBpwJ,GAAK,KAAK,EAAI,GAC7D,KAAMowJ,KAAuB,MAAQD,GACrC,UAAWG,EAAoBP,GAA8EV,EAAwBr4G,CAAQ,EAC7I,IAAK,UACL,WAAY,CACV,KAAM,GAAGz6B,EAAS,UAC1B,EACM,kBAAmByzI,GAA4BZ,GAAkC55I,EACjF,eAAgBxV,GAAK,cAC3B,CAAK,EAAG4wJ,CAAS,CACf,EAAI,OAEEC,GAAY,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,GAAIt4G,EAAc,IAAI,EAAG/b,CAAY,EAAGr1C,GAAW,KAA4B,OAASA,EAAO,IAAI,EAAG0L,CAAK,EAC/Ki+J,GAAe,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIv4G,EAAc,MAAM,EAAGpxD,GAAW,KAA4B,OAASA,EAAO,MAAM,EACnI4pK,GAAyBp0K,GAAW27D,EAAkB,OAAQg3G,GAAqB,KAAsC,OAASA,EAAiB,MAAM,EAC/J,OAAOzyI,EAGP1lC,EAAM,cAAc65K,GAAU,OAAO,OAAO,CAAA,EAAIjjI,EAAW,CACzD,WAAY,OAAO,OAAO,CACxB,OAAQpxC,GAAW27D,EAAkB,OAAQg3G,GAAqB,KAAsC,OAASA,EAAiB,MAAM,EACxI,KAAM3yK,GAAW27D,EAAkB,KAAMg3G,GAAqB,KAAsC,OAASA,EAAiB,IAAI,EAClI,MAAO3yK,GAAW27D,EAAkB,MAAOg3G,GAAqB,KAAsC,OAASA,EAAiB,KAAK,CAC3I,EAAOyB,GAAyB,CAC1B,OAAQA,EACd,EAAQ,EAAE,EACN,OAAQ,OAAO,OAAO,CACpB,OAAQ,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIx4G,EAAc,MAAM,EAAGpxD,GAAW,KAA4B,OAASA,EAAO,MAAM,EAC5H,KAAM,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIoxD,EAAc,IAAI,EAAGpxD,GAAW,KAA4B,OAASA,EAAO,IAAI,EACtH,MAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIoxD,EAAc,KAAK,EAAGpxD,GAAW,KAA4B,OAASA,EAAO,KAAK,CAC/H,EAAO,OAAO,KAAK2pK,EAAY,EAAE,OAAS,CACpC,OAAQA,EACd,EAAQ,EAAE,EACN,KAAM/iI,EAAU,KAChB,MAAO+5B,EACP,UAAW4gE,GACX,MAAOmoC,GACP,SAAUp4G,EACV,IAAKxoE,EACL,UAAWssC,GACX,aAAcimI,GACd,mBAAoBC,GACpB,iBAAkB4N,CACtB,CAAG,CAAC,CAAC,CACL,CAAC,EACG,QAAQ,IAAI,WAAa,eAC3BrjH,GAAO,YAAc,UCvPvB,IAAIikH,GAA6B95K,EAAM,cAAc,IAAI,EAC9CsoE,GAA0BtoE,EAAM,cAAc,EAAE,ECAvD2rC,GAAY,CAAC,YAAa,YAAa,cAAc,EAMrDouI,GAAc,SAAqB1gL,EAAO,CAC5C,IAAI+rC,EAAY/rC,EAAM,UACpB+lD,EAAY/lD,EAAM,UAClBy0D,EAAez0D,EAAM,aACrBu9C,EAAY38B,GAAyB5gB,EAAOsyC,EAAS,EACnDtqB,EAAoBrhB,EAAM,WAAWsoE,EAAU,EACjD6B,EAAW9oD,EAAkB,MAC3BhN,EAAY9H,GAAc49D,EAAUrc,CAAY,EAIpD,OAAoB9tD,EAAM,cAAc,MAAO6F,GAAS,CACtD,UAAWL,GAAW,GAAG,OAAO4/B,EAAW,UAAU,EAAGga,CAAS,EACjE,KAAM,SACN,IAAK/qC,CACT,EAAK+sC,GAAU/nD,EAAO,CAClB,KAAM,EACV,CAAG,EAAG,CACF,aAAc,MAClB,EAAKu9C,CAAS,CAAC,CACf,EACI,QAAQ,IAAI,WAAa,eAC3BmjI,GAAY,YAAc,eC5BrB,SAASC,GAAiBp1L,EAAO,CACtC,OAAI,OAAOA,GAAU,UAAY,OAAO,OAAOA,CAAK,CAAC,IAAMA,GACzD6hB,GAAQ,GAAO,gFAAgF,EACxF,OAAO7hB,CAAK,GAEdA,CACT,CACO,SAASq1L,GAAU5gL,EAAO,CAC/BoN,GAAQ,EAAE,qBAAsBpN,GAAQ,oEAAoE,EAC5GoN,GAAQgR,GAAS,GAAM,CAACpe,EAAM,KAAM,2GAA2G,CACjJ,CCAA,IAAI+vE,GAAgB,CAClB,MAAO,EACP,OAAQ,EACR,SAAU,SACV,QAAS,OACT,SAAU,UACZ,EACA,SAAS8wG,GAAY7gL,EAAOP,EAAK,CAC/B,IAAI4C,EAAMy+K,EAAsBC,EAC5Bh1I,EAAY/rC,EAAM,UACpB+tE,EAAO/tE,EAAM,KACb4uG,EAAY5uG,EAAM,UAClB2tE,EAAS3tE,EAAM,OACf+lK,EAAO/lK,EAAM,KACbu6C,EAAcv6C,EAAM,YACpBsnE,EAAYtnE,EAAM,UAClBsyE,EAAWtyE,EAAM,SACjBghL,EAAmBhhL,EAAM,WACzB2mD,EAAgB3mD,EAAM,cACtBqgL,EAAYrgL,EAAM,UAClB4tD,EAAS5tD,EAAM,OACf+lD,EAAY/lD,EAAM,UAClBwL,EAAKxL,EAAM,GACXqiB,EAAQriB,EAAM,MACdi+C,EAASj+C,EAAM,OACfuX,EAAQvX,EAAM,MACdwX,EAASxX,EAAM,OACf+M,EAAW/M,EAAM,SACjBgzE,EAAOhzE,EAAM,KACbozE,EAAepzE,EAAM,aACrBmsG,EAAansG,EAAM,WACnBihL,EAAgBjhL,EAAM,cACtBqzE,EAAYrzE,EAAM,UAClB4yE,EAAkB5yE,EAAM,gBACxBqwE,EAAUrwE,EAAM,QAChBmrD,EAAenrD,EAAM,aACrBkhL,EAAclhL,EAAM,YACpBorD,EAAeprD,EAAM,aACrBgmD,EAAUhmD,EAAM,QAChBylH,EAAYzlH,EAAM,UAClBwlH,EAAUxlH,EAAM,QAChB2W,EAAS3W,EAAM,OACfmhL,EAAenhL,EAAM,aAGnB8wE,EAAWnqE,EAAM,OAAM,EACvBoqE,EAAmBpqE,EAAM,OAAM,EAC/BqqE,EAAiBrqE,EAAM,OAAM,EACjCA,EAAM,oBAAoBlH,EAAK,UAAY,CACzC,OAAOqxE,EAAS,OAClB,CAAC,EACD,IAAIswG,GAAiB,SAAwB3yL,GAAO,CAClD,IAAI4yL,GAAU5yL,GAAM,QAClBk/H,GAAWl/H,GAAM,SACnB,OAAQ4yL,GAAO,CAEb,KAAKx0H,GAAQ,IACX,CACE,GAAIw0H,KAAYx0H,GAAQ,KACtB,GAAI,CAAC8gE,IAAY,SAAS,gBAAkB38C,EAAe,QAAS,CAClE,IAAIC,IACHA,GAAwBF,EAAiB,WAAa,MAAQE,KAA0B,QAAUA,GAAsB,MAAM,CAC7H,cAAe,EAC/B,CAAe,CACH,SAAW08C,IAAY,SAAS,gBAAkB58C,EAAiB,QAAS,CAC1E,IAAIuwG,GACHA,EAAwBtwG,EAAe,WAAa,MAAQswG,IAA0B,QAAUA,EAAsB,MAAM,CAC3H,cAAe,EAC/B,CAAe,CACH,EAEF,KACF,CAGF,KAAKz0H,GAAQ,IACX,CACMwjB,GAAWiC,IACb7jF,GAAM,gBAAe,EACrB4hF,EAAQ5hF,EAAK,GAEf,KACF,CACR,CACE,EAIAkY,EAAM,UAAU,UAAY,CAC1B,GAAIonE,GAAQzG,EAAW,CACrB,IAAIi6G,IACHA,GAAoBzwG,EAAS,WAAa,MAAQywG,KAAsB,QAAUA,GAAkB,MAAM,CACzG,cAAe,EACvB,CAAO,CACH,CACF,EAAG,CAACxzG,CAAI,CAAC,EAGT,IAAIrmC,GAAkB/gC,EAAM,SAAS,EAAK,EACxCghC,GAAmB7pB,GAAe4pB,GAAiB,CAAC,EACpD85I,GAAS75I,GAAiB,CAAC,EAC3B85I,GAAY95I,GAAiB,CAAC,EAC5BmY,EAAgBn5C,EAAM,WAAW85K,EAAa,EAG9CiB,EACA,OAAO3b,GAAS,UAClB2b,EAAa3b,EAAO,GAAK,CACvB,SAAU,CAChB,EAEI2b,EAAa3b,GAAQ,CAAA,EAEvB,IAAI4b,IAAgBt/K,GAAQy+K,GAAwBC,EAAcW,KAAgB,MAAQX,IAAgB,OAAS,OAASA,EAAY,YAAc,MAAQD,IAAyB,OAASA,EAAuBhhI,GAAkB,KAAmC,OAASA,EAAc,gBAAkB,MAAQz9C,IAAS,OAASA,EAAO,IAClVu/K,EAAgBj7K,EAAM,QAAQ,UAAY,CAC5C,MAAO,CACL,aAAcg7K,GACd,KAAM,UAAgB,CACpBF,GAAU,EAAI,CAChB,EACA,KAAM,UAAgB,CACpBA,GAAU,EAAK,CACjB,CACN,CACE,EAAG,CAACE,EAAY,CAAC,EAIjBh7K,EAAM,UAAU,UAAY,CAC1B,GAAIonE,EAAM,CACR,IAAI8zG,GACJ/hI,GAAkB,OAAqC+hI,GAAsB/hI,EAAc,QAAU,MAAQ+hI,KAAwB,QAAUA,GAAoB,KAAK/hI,CAAa,CACvL,KAAO,CACL,IAAIgiI,GACJhiI,GAAkB,OAAqCgiI,GAAsBhiI,EAAc,QAAU,MAAQgiI,KAAwB,QAAUA,GAAoB,KAAKhiI,CAAa,CACvL,CACF,EAAG,CAACiuB,CAAI,CAAC,EAGTpnE,EAAM,UAAU,UAAY,CAC1B,OAAO,UAAY,CACjB,IAAIo7K,GACJjiI,GAAkB,OAAqCiiI,GAAuBjiI,EAAc,QAAU,MAAQiiI,KAAyB,QAAUA,GAAqB,KAAKjiI,CAAa,CAC1L,CACF,EAAG,CAAA,CAAE,EAGL,IAAIkiI,GAAwBr7K,EAAM,cAAcwzC,GAAW3tC,GAAS,CAClE,IAAK,MACT,EAAK2/F,EAAY,CACb,QAASn5B,GAAQjF,CACrB,CAAG,EAAG,SAAUxrE,GAAO0/K,GAAS,CAC5B,IAAIC,GAAsB3/K,GAAM,UAC9B4/K,GAAkB5/K,GAAM,MAC1B,OAAoBoE,EAAM,cAAc,MAAO,CAC7C,UAAWwF,GAAW,GAAG,OAAO4/B,EAAW,OAAO,EAAGm2I,GAAqBlB,GAAqB,KAAsC,OAASA,EAAiB,KAAMC,CAAa,EAClL,MAAOnlK,EAAcA,EAAcA,EAAc,CAAA,EAAIqmK,EAAe,EAAG9uG,CAAS,EAAG18D,GAAW,KAA4B,OAASA,EAAO,IAAI,EAC9I,QAASy8D,GAAgBrF,EAAOsC,EAAU,OAC1C,IAAK4xG,EACX,CAAK,CACH,CAAC,EAGGxkI,GAAc,OAAOQ,GAAW,WAAaA,EAAO2wD,CAAS,EAAI3wD,EACjEmkI,GAAe,CAAA,EACnB,GAAIZ,IAAUG,GACZ,OAAQ/yE,EAAS,CACf,IAAK,MACHwzE,GAAa,UAAY,cAAc,OAAOT,GAAc,KAAK,EACjE,MACF,IAAK,SACHS,GAAa,UAAY,cAAc,OAAO,CAACT,GAAc,KAAK,EAClE,MACF,IAAK,OACHS,GAAa,UAAY,cAAc,OAAOT,GAAc,KAAK,EACjE,MACF,QACES,GAAa,UAAY,cAAc,OAAO,CAACT,GAAc,KAAK,EAClE,KACR,CAEM/yE,IAAc,QAAUA,IAAc,QACxCwzE,GAAa,MAAQzB,GAAiBppK,CAAK,EAE3C6qK,GAAa,OAASzB,GAAiBnpK,CAAM,EAE/C,IAAI2hC,GAAgB,CAClB,aAAcgS,EACd,YAAa+1H,EACb,aAAc91H,EACd,QAASpF,EACT,UAAWy/D,EACX,QAASD,CACb,EACM68D,GAAyB17K,EAAM,cAAcwzC,GAAW3tC,GAAS,CACnE,IAAK,OACT,EAAKixC,GAAa,CACd,QAASswB,EACT,YAAaxzB,EACb,iBAAkB,SAA0B+yD,GAAa,CACvD16B,GAAoB,MAAsCA,EAAgB06B,EAAW,CACvF,EACA,cAAe,GACf,gBAAiB,GAAG,OAAOvhE,EAAW,yBAAyB,CACnE,CAAG,EAAG,SAAUjmB,GAAOmsD,GAAW,CAC9B,IAAI9lB,GAAkBrmC,GAAM,UAC1BsmC,GAActmC,GAAM,MAClBsK,GAAuBzpB,EAAM,cAAc+5K,GAAal0K,GAAS,CACnE,GAAIhB,EACJ,aAAcymE,GACd,UAAWlmC,EACX,UAAW5/B,GAAW45C,EAAWi7H,GAAqB,KAAsC,OAASA,EAAiB,OAAO,EAC7H,MAAOllK,EAAcA,EAAc,CAAA,EAAIuG,CAAK,EAAG1L,GAAW,KAA4B,OAASA,EAAO,OAAO,CACnH,EAAOoxC,GAAU/nD,EAAO,CAClB,KAAM,EACZ,CAAK,EAAGm5C,EAAa,EAAGpsC,CAAQ,EAC5B,OAAoBpG,EAAM,cAAc,MAAO6F,GAAS,CACtD,UAAWL,GAAW,GAAG,OAAO4/B,EAAW,kBAAkB,EAAGi1I,GAAqB,KAAsC,OAASA,EAAiB,QAAS70H,EAAe,EAC7K,MAAOrwC,EAAcA,EAAcA,EAAc,CAAA,EAAIsmK,EAAY,EAAGh2H,EAAW,EAAGz1C,GAAW,KAA4B,OAASA,EAAO,OAAO,CACtJ,EAAOoxC,GAAU/nD,EAAO,CAClB,KAAM,EACZ,CAAK,CAAC,EAAGmhL,EAAeA,EAAa/wJ,EAAO,EAAIA,EAAO,CACrD,CAAC,EAGG2lG,GAAiBj6G,EAAc,CAAA,EAAIukK,CAAS,EAChD,OAAIzyH,IACFmoE,GAAe,OAASnoE,GAENjnD,EAAM,cAAc85K,GAAc,SAAU,CAC9D,MAAOmB,CACX,EAAkBj7K,EAAM,cAAc,MAAO,CACzC,UAAWwF,GAAW4/B,EAAW,GAAG,OAAOA,EAAW,GAAG,EAAE,OAAO6iE,CAAS,EAAGjoD,EAAe54C,EAAgBA,EAAgB,CAAA,EAAI,GAAG,OAAOg+B,EAAW,OAAO,EAAGgiC,CAAI,EAAG,GAAG,OAAOhiC,EAAW,SAAS,EAAG4hC,CAAM,CAAC,EAC/M,MAAOooD,GACP,SAAU,GACV,IAAKjlD,EACL,UAAWswG,EACf,EAAKY,GAAuBr7K,EAAM,cAAc,MAAO,CACnD,SAAU,EACV,IAAKoqE,EACL,MAAOhB,GACP,cAAe,OACf,gBAAiB,OACrB,CAAG,EAAGsyG,GAAwB17K,EAAM,cAAc,MAAO,CACrD,SAAU,EACV,IAAKqqE,EACL,MAAOjB,GACP,cAAe,OACf,gBAAiB,KACrB,CAAG,CAAC,CAAC,CACL,CACA,IAAIuyG,GAA8B37K,EAAM,WAAWk6K,EAAW,EAC1D,QAAQ,IAAI,WAAa,eAC3ByB,GAAe,YAAc,eCjQ/B,IAAIC,GAAS,SAAgBviL,EAAO,CAClC,IAAIwiL,EAAcxiL,EAAM,KACtB+tE,EAAOy0G,IAAgB,OAAS,GAAQA,EACxCzlH,EAAmB/8D,EAAM,UACzB+rC,EAAYgxB,IAAqB,OAAS,YAAcA,EACxD80E,EAAmB7xI,EAAM,UACzB4uG,EAAYijC,IAAqB,OAAS,QAAUA,EACpD4wC,EAAmBziL,EAAM,UACzBsnE,EAAYm7G,IAAqB,OAAS,GAAOA,EACjDpwG,EAAkBryE,EAAM,SACxBsyE,EAAWD,IAAoB,OAAS,GAAOA,EAC/CqwG,EAAe1iL,EAAM,MACrBuX,EAAQmrK,IAAiB,OAAS,IAAMA,EACxC3vG,EAAc/yE,EAAM,KACpBgzE,EAAOD,IAAgB,OAAS,GAAOA,EACvCI,EAAsBnzE,EAAM,aAC5BozE,EAAeD,IAAwB,OAAS,GAAOA,EACvDt0D,EAAe7e,EAAM,aACrBu6C,EAAcv6C,EAAM,YACpB4yE,EAAkB5yE,EAAM,gBACxB2xE,EAAiB3xE,EAAM,eACvBmrD,EAAenrD,EAAM,aACrBkhL,EAAclhL,EAAM,YACpBorD,EAAeprD,EAAM,aACrBgmD,EAAUhmD,EAAM,QAChBylH,EAAYzlH,EAAM,UAClBwlH,EAAUxlH,EAAM,QAChB8wE,EAAW9wE,EAAM,SACf0nC,EAAkB/gC,EAAM,SAAS,EAAK,EACxCghC,EAAmB7pB,GAAe4pB,EAAiB,CAAC,EACpD8rC,EAAkB7rC,EAAiB,CAAC,EACpC8rC,EAAqB9rC,EAAiB,CAAC,EAGrC,QAAQ,IAAI,WAAa,cAC3Bi5I,GAAU5gL,CAAK,EAIjB,IAAI8rE,EAAmBnlE,EAAM,SAAS,EAAK,EACzColE,EAAmBjuD,GAAeguD,EAAkB,CAAC,EACrDu8E,EAAUt8E,EAAiB,CAAC,EAC5Bu8E,EAAav8E,EAAiB,CAAC,EACjC1lD,GAAgB,UAAY,CAC1BiiI,EAAW,EAAI,CACjB,EAAG,CAAA,CAAE,EACL,IAAItqC,EAAaqqC,EAAUt6E,EAAO,GAG9Bg3E,EAAWp+I,EAAM,OAAM,EACvBg8K,EAAgBh8K,EAAM,OAAM,EAChC0f,GAAgB,UAAY,CACtB23F,IACF2kE,EAAc,QAAU,SAAS,cAErC,EAAG,CAAC3kE,CAAU,CAAC,EAGf,IAAI4kE,EAA0B,SAAiCt1E,GAAa,CAC1E,IAAIu1E,GAGJ,GAFApvG,EAAmB65B,EAAW,EAC9B16B,GAAoB,MAAsCA,EAAgB06B,EAAW,EACjF,CAACA,IAAeq1E,EAAc,SAAW,GAAGE,GAAoB99B,EAAS,WAAa,MAAQ89B,KAAsB,QAAUA,GAAkB,SAASF,EAAc,OAAO,GAAI,CACpL,IAAIG,GACHA,EAAwBH,EAAc,WAAa,MAAQG,IAA0B,QAAUA,EAAsB,MAAM,CAC1H,cAAe,EACvB,CAAO,CACH,CACF,EAGItuG,EAAa7tE,EAAM,QAAQ,UAAY,CACzC,MAAO,CACL,MAAOmqE,CACb,CACE,EAAG,CAACA,CAAQ,CAAC,EAGb,GAAI,CAACv2B,GAAe,CAACi5B,GAAmB,CAACwqC,GAAcrsC,EACrD,OAAO,KAET,IAAIx4B,GAAgB,CAClB,aAAcgS,EACd,YAAa+1H,EACb,aAAc91H,EACd,QAASpF,EACT,UAAWy/D,EACX,QAASD,CACb,EACMu9D,GAAmBjnK,EAAcA,EAAc,CAAA,EAAI9b,CAAK,EAAG,GAAI,CACjE,KAAMg+G,EACN,UAAWjyE,EACX,UAAW6iE,EACX,UAAWtnC,EACX,SAAUgL,EACV,MAAO/6D,EACP,KAAMy7D,EACN,aAAcI,EACd,OAAQv0D,IAAiB,GACzB,gBAAiB+jK,EACjB,IAAK79B,CACT,EAAK5rG,EAAa,EAChB,OAAoBxyC,EAAM,cAAcsoE,GAAW,SAAU,CAC3D,MAAOuF,CACX,EAAkB7tE,EAAM,cAAckK,GAAQ,CAC1C,KAAMmtG,GAAczjE,GAAei5B,EACnC,YAAa,GACb,aAAc30D,EACd,SAAUm0D,IAASgrC,GAAcxqC,EACrC,EAAkB7sE,EAAM,cAAck6K,GAAakC,EAAgB,CAAC,CAAC,CACrE,EACI,QAAQ,IAAI,WAAa,eAC3BR,GAAO,YAAc,UCjHvB,MAAM7B,GAAc1gL,GAAS,CAC3B,IAAInS,EAAID,EACR,KAAM,CACJ,UAAAm+C,EACA,MAAAmkC,EACA,OAAAE,EACA,MAAAi6C,EACA,QAAA1yD,EACA,QAAA0Y,EACA,YAAA2yG,EACA,UAAA1yG,EACA,YAAA2yG,EACA,SAAAl2K,EACA,WAAYi0K,EACZ,OAAQkC,CACZ,EAAMljL,EACEmjL,EAAgBx+I,GAAmB,QAAQ,EAC3Cy+I,EAAwBz8K,EAAM,YAAYm/C,GAAsBn/C,EAAM,cAAc,SAAU,CAClG,KAAM,SACN,QAAS0pE,EACT,UAAW,GAAGtkC,CAAS,QAC3B,EAAK+Z,CAAI,EAAI,CAACuqB,CAAO,CAAC,EACd,CAACknB,EAAgBxsC,CAAe,EAAI4jC,GAAYL,GAAatuF,CAAK,EAAGsuF,GAAa60F,CAAa,EAAG,CACtG,SAAU,GACV,gBAAiBC,CACrB,CAAG,EACK9xG,EAAa3qE,EAAM,QAAQ,IAAM,CACrC,IAAI9Y,EAAID,EACR,MAAI,CAACsiF,GAAS,CAACqnB,EACN,KAEW5wF,EAAM,cAAc,MAAO,CAC7C,MAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,GAAK9Y,EAAKs1L,EAAc,UAAY,MAAQt1L,IAAO,OAAS,OAASA,EAAG,MAAM,EAAGm1L,CAAW,EAAGE,GAAiB,KAAkC,OAASA,EAAa,MAAM,EAC/N,UAAW/2K,GAAW,GAAG4/B,CAAS,UAAW,CAC3C,CAAC,GAAGA,CAAS,oBAAoB,EAAGwrD,GAAkB,CAACrnB,GAAS,CAACm6C,CACzE,GAAUz8H,EAAKu1L,EAAc,cAAgB,MAAQv1L,IAAO,OAAS,OAASA,EAAG,OAAQozL,GAAqB,KAAsC,OAASA,EAAiB,MAAM,CACpL,EAAoBr6K,EAAM,cAAc,MAAO,CACzC,UAAW,GAAGolC,CAAS,eAC7B,EAAOgf,EAAiBmlB,GAAsBvpE,EAAM,cAAc,MAAO,CACnE,UAAW,GAAGolC,CAAS,QAC7B,EAAOmkC,CAAK,CAAC,EAAGm6C,GAAsB1jH,EAAM,cAAc,MAAO,CAC3D,UAAW,GAAGolC,CAAS,QAC7B,EAAOs+E,CAAK,CAAC,CACX,EAAG,CAAC9yB,EAAgBxsC,EAAiBs/D,EAAO24D,EAAaj3I,EAAWmkC,CAAK,CAAC,EACpEmB,EAAa1qE,EAAM,QAAQ,IAAM,CACrC,IAAI9Y,EAAID,EACR,GAAI,CAACwiF,EACH,OAAO,KAET,MAAMizG,EAAkB,GAAGt3I,CAAS,UACpC,OAAoBplC,EAAM,cAAc,MAAO,CAC7C,UAAWwF,GAAWk3K,GAAkBx1L,EAAKs1L,EAAc,cAAgB,MAAQt1L,IAAO,OAAS,OAASA,EAAG,OAAQmzL,GAAqB,KAAsC,OAASA,EAAiB,MAAM,EAClN,MAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,GAAKpzL,EAAKu1L,EAAc,UAAY,MAAQv1L,IAAO,OAAS,OAASA,EAAG,MAAM,EAAGq1L,CAAW,EAAGC,GAAiB,KAAkC,OAASA,EAAa,MAAM,CACrO,EAAO9yG,CAAM,CACX,EAAG,CAACA,EAAQ6yG,EAAal3I,CAAS,CAAC,EACnC,OAAoBplC,EAAM,cAAcA,EAAM,SAAU,KAAM2qE,EAAyB3qE,EAAM,cAAc,MAAO,CAChH,UAAWwF,GAAW,GAAG4/B,CAAS,QAASi1I,GAAqB,KAAsC,OAASA,EAAiB,MAAOnzL,EAAKs1L,EAAc,cAAgB,MAAQt1L,IAAO,OAAS,OAASA,EAAG,IAAI,EAClN,MAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,GAAKD,EAAKu1L,EAAc,UAAY,MAAQv1L,IAAO,OAAS,OAASA,EAAG,IAAI,EAAG0iF,CAAS,EAAG4yG,GAAiB,KAAkC,OAASA,EAAa,IAAI,CAC7N,EAAKvrH,EAAwBhxD,EAAM,cAAc0sF,GAAU,CACvD,OAAQ,GACR,MAAO,GACP,UAAW,CACT,KAAM,CACZ,EACI,UAAW,GAAGtnD,CAAS,gBAC3B,CAAG,EAAKh/B,CAAQ,EAAGskE,CAAU,CAC7B,ECzEMiyG,GAAmBv+I,GAAa,CACpC,MAAMx5C,EAAQ,OACd,MAAO,CACL,KAAM,eAAeA,CAAK,IAC1B,MAAO,cAAcA,CAAK,IAC1B,IAAK,eAAeA,CAAK,IACzB,OAAQ,cAAcA,CAAK,GAC/B,EAAIw5C,CAAS,CACb,EACMw+I,GAAqB,CAACC,EAAYC,KAAc,CACpD,oBAAqB,OAAO,OAAO,OAAO,OAAO,CAAA,EAAID,CAAU,EAAG,CAChE,WAAYC,CAChB,CAAG,EACD,UAAW,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIA,CAAQ,EAAG,CACpD,WAAYD,CAChB,CAAG,CACH,GACME,GAAe,CAACv3J,EAAMu8B,IAAa,OAAO,OAAO,CACrD,6BAA8B,CAC5B,UAAW,CACT,WAAY,MAClB,EACI,WAAY,CACV,WAAY,OAAOA,CAAQ,EACjC,CACA,CACA,EAAG66H,GAAmB,CACpB,QAASp3J,CACX,EAAG,CACD,QAAS,CACX,CAAC,CAAC,EACIw3J,GAAuB,CAAC5+I,EAAW2jB,IAAa,CAACg7H,GAAa,GAAKh7H,CAAQ,EAAG66H,GAAmB,CACrG,UAAWD,GAAiBv+I,CAAS,CACvC,EAAG,CACD,UAAW,MACb,CAAC,CAAC,EACIo8H,GAAiBl9I,GAAS,CAC9B,KAAM,CACJ,aAAA0pB,EACA,mBAAAg1B,CACJ,EAAM1+C,EACJ,MAAO,CACL,CAAC0pB,CAAY,EAAG,CAEd,CAAC,GAAGA,CAAY,cAAc,EAAG+1I,GAAa,EAAG/gH,CAAkB,EAEnE,CAAC,GAAGh1B,CAAY,eAAe,EAAG,CAAC,OAAQ,QAAS,MAAO,QAAQ,EAAE,OAAO,CAACvkD,EAAK27C,IAAc,OAAO,OAAO,OAAO,OAAO,GAAI37C,CAAG,EAAG,CACpI,CAAC,KAAK27C,CAAS,EAAE,EAAG4+I,GAAqB5+I,EAAW49B,CAAkB,CAC9E,CAAO,EAAG,CAAA,CAAE,CACZ,CACA,CACA,EC9CMihH,GAAiB3/J,GAAS,CAC9B,KAAM,CACJ,eAAAysE,EACA,aAAA/iD,EACA,YAAAyoG,EACA,YAAAytC,EACA,gBAAAhY,EACA,mBAAAlpG,EACA,kBAAAzY,EACA,UAAA6/E,EACA,QAAAx4C,EACA,UAAAuyF,EACA,WAAAlhJ,EACA,aAAAG,EACA,UAAApB,EACA,SAAAkrH,EACA,WAAA2a,EACA,SAAA7+G,EACA,UAAAyB,EACA,eAAAC,EACA,iBAAA05H,EACA,kBAAAC,EACA,UAAAj7H,EACA,iBAAAgiF,EACA,mBAAAk5C,EACA,oBAAAC,EACA,KAAA7nJ,CACJ,EAAMpY,EACEmqJ,EAAa,GAAGzgI,CAAY,mBAClC,MAAO,CACL,CAACA,CAAY,EAAG,CACd,SAAU,QACV,MAAO,EACP,OAAQyoG,EACR,cAAe,OACf,MAAOrtF,EACP,SAAU,CACR,SAAU,WACV,WAAY8iH,EACZ,QAAS,OACT,cAAe,SACf,CAAC,IAAIl+H,CAAY,OAAO,EAAG,CACzB,UAAW1pB,EAAM,mBAC3B,EACQ,CAAC,IAAI0pB,CAAY,QAAQ,EAAG,CAC1B,UAAW1pB,EAAM,oBAC3B,EACQ,CAAC,IAAI0pB,CAAY,MAAM,EAAG,CACxB,UAAW1pB,EAAM,iBAC3B,EACQ,CAAC,IAAI0pB,CAAY,SAAS,EAAG,CAC3B,UAAW1pB,EAAM,mBAC3B,CACA,EACM,WAAY,CACV,SAAU,UAClB,EAEM,CAAC,GAAG0pB,CAAY,OAAO,EAAG,CACxB,SAAU,WACV,MAAO,EACP,OAAQyoG,EACR,WAAYytC,EACZ,cAAe,MACvB,EAEM,CAACzV,CAAU,EAAG,CACZ,SAAU,WACV,OAAQh4B,EACR,SAAU,QACV,WAAY,OAAOzzE,CAAkB,GACrC,WAAY,CACV,QAAS,MACnB,CACA,EAEM,CAAC,YAAYyrG,CAAU,EAAE,EAAG,CAC1B,IAAK,EACL,OAAQ,EACR,KAAM,CACJ,aAAc,GACd,MAAO,CACjB,EACQ,UAAWnqJ,EAAM,mBACzB,EACM,CAAC,aAAamqJ,CAAU,EAAE,EAAG,CAC3B,IAAK,EACL,MAAO,CACL,aAAc,GACd,MAAO,CACjB,EACQ,OAAQ,EACR,UAAWnqJ,EAAM,oBACzB,EACM,CAAC,WAAWmqJ,CAAU,EAAE,EAAG,CACzB,IAAK,EACL,YAAa,EACb,UAAWnqJ,EAAM,iBACzB,EACM,CAAC,cAAcmqJ,CAAU,EAAE,EAAG,CAC5B,OAAQ,EACR,YAAa,EACb,UAAWnqJ,EAAM,mBACzB,EACM,CAAC,GAAG0pB,CAAY,UAAU,EAAG,CAC3B,QAAS,OACT,cAAe,SACf,MAAO,OACP,OAAQ,OACR,SAAU,OACV,WAAYk+H,EACZ,cAAe,MACvB,EAEM,CAAC,GAAGl+H,CAAY,SAAS,EAAG,CAC1B,QAAS,OACT,KAAM,EACN,WAAY,SACZ,QAAS,GAAG5oB,GAAKwsE,CAAO,CAAC,IAAIxsE,GAAK++J,CAAS,CAAC,GAC5C,SAAUlhJ,EACV,WAAYG,EACZ,aAAc,GAAGhe,GAAK4c,CAAS,CAAC,IAAIkrH,CAAQ,IAAI2a,CAAU,GAC1D,UAAW,CACT,QAAS,OACT,KAAM,EACN,WAAY,SACZ,SAAU,EACV,UAAW,CACrB,CACA,EACM,CAAC,GAAG75H,CAAY,QAAQ,EAAG,CACzB,KAAM,MACd,EACM,CAAC,GAAGA,CAAY,QAAQ,EAAG,OAAO,OAAO,CACvC,QAAS,cACT,MAAOtR,EAAKuG,CAAU,EAAE,IAAImnG,CAAS,EAAE,MAAK,EAC5C,OAAQ1tG,EAAKuG,CAAU,EAAE,IAAImnG,CAAS,EAAE,MAAK,EAC7C,aAAcr5C,EACd,eAAgB,SAChB,WAAY,SACZ,gBAAiB/nC,EACjB,MAAOyB,EACP,WAAY2gF,EACZ,SAAUnoG,EACV,UAAW,SACX,WAAY,EACZ,UAAW,SACX,cAAe,OACf,eAAgB,OAChB,WAAY,cACZ,OAAQ,EACR,OAAQ,UACR,WAAY,OAAOsnB,CAAiB,GACpC,cAAe,OACf,UAAW,CACT,MAAOG,EACP,gBAAiB05H,EACjB,eAAgB,MAC1B,EACQ,WAAY,CACV,gBAAiBC,CAC3B,CACA,EAASlzI,GAAc7sB,CAAK,CAAC,EACvB,CAAC,GAAG0pB,CAAY,QAAQ,EAAG,CACzB,KAAM,EACN,OAAQ,EACR,WAAY1pB,EAAM,iBAClB,SAAU2e,EACV,WAAYG,CACpB,EAEM,CAAC,GAAG4K,CAAY,OAAO,EAAG,CACxB,KAAM,EACN,SAAU,EACV,UAAW,EACX,QAASm2I,EACT,SAAU,OACV,CAAC,GAAGn2I,CAAY,gBAAgB,EAAG,CACjC,MAAO,OACP,OAAQ,OACR,QAAS,OACT,eAAgB,QAC1B,CACA,EAEM,CAAC,GAAGA,CAAY,SAAS,EAAG,CAC1B,WAAY,EACZ,QAAS,GAAG5oB,GAAKk/J,CAAkB,CAAC,IAAIl/J,GAAKm/J,CAAmB,CAAC,GACjE,UAAW,GAAGn/J,GAAK4c,CAAS,CAAC,IAAIkrH,CAAQ,IAAI2a,CAAU,EAC/D,EAEM,QAAS,CACP,UAAW,KACnB,CACA,CACA,CACA,EAOA2c,GAAe74I,GAAc,SAAUrnB,GAAS,CAC9C,MAAMmgK,EAAcl6I,GAAWjmB,EAAO,EAAE,EACxC,MAAO,CAAC2/J,GAAeQ,CAAW,EAAGjjB,GAAeijB,CAAW,CAAC,CAClE,EATqCngK,IAAU,CAC7C,YAAaA,EAAM,gBACnB,mBAAoBA,EAAM,UAC1B,oBAAqBA,EAAM,OAC7B,EAKwB,ECjNxB,IAAI6qB,GAAgC,SAAU/kD,EAAGe,EAAG,CAClD,IAAId,EAAI,CAAA,EACR,QAASe,KAAKhB,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGgB,CAAC,GAAKD,EAAE,QAAQC,CAAC,EAAI,IAAGf,EAAEe,CAAC,EAAIhB,EAAEgB,CAAC,GAC/F,GAAIhB,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WAAY,QAAS,EAAI,EAAGgB,EAAI,OAAO,sBAAsBhB,CAAC,EAAG,EAAIgB,EAAE,OAAQ,IAClID,EAAE,QAAQC,EAAE,CAAC,CAAC,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKhB,EAAGgB,EAAE,CAAC,CAAC,IAAGf,EAAEe,EAAE,CAAC,CAAC,EAAIhB,EAAEgB,EAAE,CAAC,CAAC,GAElG,OAAOf,CACT,EAeA,MAAMq6L,GAAmB,CACvB,SAAU,GACZ,EACM9B,GAASviL,GAAS,CACtB,IAAInS,EACJ,KAAM,CACF,cAAA84D,EACA,MAAApvC,EACA,OAAAC,EACA,KAAApD,EAAO,UACP,KAAA4+D,EAAO,GACP,KAAA+yF,EAAOse,GACP,KAAAt2G,EACA,gBAAA6E,EACA,QAAAvC,EACA,UAAW9rC,EACX,aAAc+/I,EACd,MAAAjiK,EACA,UAAA0jC,EAEA,QAAAtP,EACA,mBAAAm7F,EACA,UAAAv+D,EACA,YAAAkxG,EACA,oBAAAC,EACA,eAAA7yG,EACA,gBAAAmlB,CACN,EAAQ92F,EACJ1H,EAAOw2C,GAAO9uC,EAAO,CAAC,gBAAiB,QAAS,SAAU,OAAQ,OAAQ,OAAQ,OAAQ,kBAAmB,UAAW,YAAa,eAAgB,QAAS,YAAa,UAAW,qBAAsB,YAAa,cAAe,sBAAuB,iBAAkB,iBAAiB,CAAC,EAC/R,CACJ,kBAAAglC,EACA,aAAAF,EACA,UAAAC,EACA,UAAWgnB,EACX,MAAOC,EACP,WAAY8b,EACZ,OAAQC,CACZ,EAAMpjC,GAAmB,QAAQ,EACzBoH,EAAYjH,EAAa,SAAUP,CAAkB,EACrD,CAAC8H,EAAY1mB,EAAQ2mB,CAAS,EAAIX,GAASI,CAAS,EACpDltB,EAENylK,IAA0B,QAAat/I,EAAoB,IAAMA,EAAkB,SAAS,IAAI,EAAIs/I,EAC9FG,EAAkBt4K,GAAW,CACjC,UAAW,CAAC6mE,EACZ,CAAC,GAAGjnC,CAAS,MAAM,EAAGhH,IAAc,KACxC,EAAK4hB,EAAehhC,EAAQ2mB,CAAS,EAEnC,GAAI,QAAQ,IAAI,WAAa,aAAc,CACzC,MAAMl/B,GAAUirB,GAAc,QAAQ,EACtC,CAAC,CAAC,UAAW,MAAM,EAAG,CAAC,qBAAsB,iBAAiB,EAAG,CAAC,cAAe,eAAe,EAAG,CAAC,YAAa,aAAa,EAAG,CAAC,cAAe,eAAe,EAAG,CAAC,sBAAuB,gBAAgB,EAAG,CAAC,YAAa,aAAa,EAAG,CAAC,cAAe,gBAAgB,EAAG,CAAC,uBAAwB,iBAAiB,CAAC,EAAE,QAAQ,CAAC,CAAC8+D,GAAgBC,CAAO,IAAM,CACjWhqF,GAAQ,WAAW,EAAE+pF,MAAkBn3F,GAAQm3F,GAAgBC,CAAO,CACxE,CAAC,EACGv4E,IAAiB,UAAehxB,EAAKmS,EAAM,SAAW,MAAQnS,IAAO,OAAS,OAASA,EAAG,YAAc,YAC1G,QAAQ,IAAI,WAAa,cAAeuf,GAAQ,GAAO,WAAY,gGAAgG,CAEvK,CAEA,MAAMs3K,EAAc/9K,EAAM,QAAQ,IAAM4Q,IAA6CnD,IAAS,QAAU,IAAM,KAAK,CAACmD,EAAOnD,CAAI,CAAC,EAC1HuwK,EAAeh+K,EAAM,QAAQ,IAAM6Q,IAAgDpD,IAAS,QAAU,IAAM,KAAK,CAACoD,EAAQpD,CAAI,CAAC,EAE/H+3F,EAAa,CACjB,WAAY13D,GAAkB1I,EAAW,aAAa,EACtD,aAAc,GACd,YAAa,GACb,YAAa,GACb,eAAgB,GACpB,EACQ64I,EAAcC,KAAoB,CACtC,WAAYpwI,GAAkB1I,EAAW,gBAAgB84I,EAAe,EAAE,EAC1E,aAAc,GACd,YAAa,GACb,YAAa,GACb,eAAgB,GACpB,GAGQ/zG,EAAWkjB,GAAW,EAEtB,CAACpmC,EAAQ4pC,EAAa,EAAIjqC,GAAU,SAAUj1D,EAAK,MAAM,EAEzD,CACJ,WAAYwsL,GAAiB,CAAA,EAC7B,OAAQC,GAAa,CAAA,CACzB,EAAMzsL,EACJ,OAAO+zC,EAAwB1lC,EAAM,cAAcwnF,GAAiB,CAClE,KAAM,GACN,MAAO,EACX,EAAkBxnF,EAAM,cAAcqmD,GAAc,SAAU,CAC1D,MAAOwqC,EACX,EAAkB7wF,EAAM,cAAcq+K,GAAU,OAAO,OAAO,CAC1D,UAAWj5I,EACX,QAASskC,EACT,WAAY87B,EACZ,OAAQy4E,CACZ,EAAKtsL,EAAM,CACP,WAAY,CACV,KAAM6T,GAAW24K,GAAe,KAAMh9G,EAAkB,IAAI,EAC5D,QAAS37D,GAAW24K,GAAe,QAASh9G,EAAkB,OAAO,EACrE,QAAS37D,GAAW24K,GAAe,QAASh9G,EAAkB,OAAO,CAC3E,EACI,OAAQ,CACN,KAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIi9G,GAAW,IAAI,EAAG1xG,CAAS,EAAGtL,EAAc,IAAI,EACpG,QAAS,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIg9G,GAAW,OAAO,EAAGR,CAAW,EAAGx8G,EAAc,OAAO,EAC/G,QAAS,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIg9G,GAAW,OAAO,EAAGP,CAAmB,EAAGz8G,EAAc,OAAO,CAC7H,EACI,KAAMgG,GAA0Ct3B,EAChD,KAAMu8B,EACN,KAAM+yF,EACN,MAAO2e,EACP,OAAQC,EACR,MAAO,OAAO,OAAO,OAAO,OAAO,GAAI34H,CAAY,EAAG3pC,CAAK,EAC3D,UAAWlW,GAAW4/C,EAAkBhG,CAAS,EACjD,cAAe0+H,EACf,aAAc5lK,EACd,gBAAiB+zD,GAA2Eg/D,EAC5F,SAAU9gE,EACV,OAAQljB,EAER,eAAgBkpC,GAA2EnlB,CAC/F,CAAG,EAAgBhrE,EAAM,cAAc+5K,GAAa,OAAO,OAAO,CAC9D,UAAW30I,CACf,EAAKzzC,EAAM,CACP,QAAS+3E,CACb,CAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CACR,EAEMg/D,GAAYrvI,GAAS,CACzB,KAAM,CACF,UAAWukC,EACX,MAAAliB,EACA,UAAA0jC,EACA,UAAA6oD,EAAY,OAClB,EAAQ5uG,EACJu9C,EAAYzO,GAAO9uC,EAAO,CAAC,YAAa,QAAS,YAAa,WAAW,CAAC,EACtE,CACJ,aAAA8kC,CACJ,EAAMn+B,EAAM,WAAW69B,EAAa,EAC5BuH,EAAYjH,EAAa,SAAUP,CAAkB,EACrD,CAAC8H,EAAY1mB,EAAQ2mB,CAAS,EAAIX,GAASI,CAAS,EACpDomD,EAAMhmF,GAAW4/B,EAAW,GAAGA,CAAS,QAAS,GAAGA,CAAS,IAAI6iE,CAAS,GAAIjpF,EAAQ2mB,EAAWyZ,CAAS,EAChH,OAAO1Z,EAAwB1lC,EAAM,cAAc,MAAO,CACxD,UAAWwrF,EACX,MAAO9vE,CACX,EAAkB1b,EAAM,cAAc+5K,GAAa,OAAO,OAAO,CAC7D,UAAW30I,CACf,EAAKwR,CAAS,CAAC,CAAC,CAAC,CACjB,EACAglI,GAAO,uCAAyClzC,GAC5C,QAAQ,IAAI,WAAa,eAC3BkzC,GAAO,YAAc,UC9KhB,SAAS0C,GAAa7wK,EAAM,CACjC,MAAO,CAAC,QAAS,SAAU,OAAO,EAAE,SAASA,CAAI,CACnD,CACO,SAAS8wK,GAAiB9wK,EAAM,CACrC,OAAKA,EAIE,OAAOA,GAAS,UAAY,CAAC,OAAO,MAAMA,CAAI,EAF5C,EAGX,CCRO,MAAM+wK,GAA4Bx+K,EAAM,cAAc,CAC3D,YAAa,CACf,CAAC,EACYy+K,GAAuBD,GAAa,SCA3CxlF,GAAO,CAAC,CACZ,UAAA55C,EACA,MAAAh3D,EACA,SAAAge,EACA,MAAAs4K,EACA,MAAAhjK,CACF,IAAM,CACJ,KAAM,CACJ,YAAAijK,CACJ,EAAM3+K,EAAM,WAAWw+K,EAAY,EACjC,OAAIp4K,GAAa,KACR,KAEWpG,EAAM,cAAcA,EAAM,SAAU,KAAmBA,EAAM,cAAc,MAAO,CACpG,UAAWo/C,EACX,MAAO1jC,CACX,EAAKtV,CAAQ,EAAGhe,EAAQu2L,GAAeD,GAAsB1+K,EAAM,cAAc,OAAQ,CACrF,UAAW,GAAGo/C,CAAS,QAC3B,EAAKs/H,CAAK,CAAC,CACX,ECrBA,IAAIv2I,GAAgC,SAAU/kD,EAAGe,EAAG,CAClD,IAAId,EAAI,CAAA,EACR,QAASe,KAAKhB,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGgB,CAAC,GAAKD,EAAE,QAAQC,CAAC,EAAI,IAAGf,EAAEe,CAAC,EAAIhB,EAAEgB,CAAC,GAC/F,GAAIhB,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WAAY,QAAS,EAAI,EAAGgB,EAAI,OAAO,sBAAsBhB,CAAC,EAAG,EAAIgB,EAAE,OAAQ,IAClID,EAAE,QAAQC,EAAE,CAAC,CAAC,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKhB,EAAGgB,EAAE,CAAC,CAAC,IAAGf,EAAEe,EAAE,CAAC,CAAC,EAAIhB,EAAEgB,EAAE,CAAC,CAAC,GAElG,OAAOf,CACT,EAgGA,MAAMu7L,GArF6B5+K,EAAM,WAAW,CAAC3G,EAAOP,IAAQ,CAClE,IAAI5R,EACJ,KAAM,CACJ,aAAAi3C,EACA,UAAWgxB,EACX,KAAM0vH,EACN,UAAWz5H,EACX,MAAOC,EACP,WAAY8b,EACZ,OAAQC,CACZ,EAAMpjC,GAAmB,OAAO,EACxB,CACF,KAAAvwB,EAAOoxK,GAA+D,QACtE,MAAAt6E,EACA,UAAAnlD,EACA,cAAAY,EACA,SAAA55C,EACA,UAAAg4B,EAAY,aACZ,UAAWR,EACX,MAAA8gJ,EACA,MAAAhjK,EACA,KAAAwjJ,EAAO,GACP,WAAY1+F,EACZ,OAAAxwD,CACN,EAAQ3W,EACJyrD,EAAa3c,GAAO9uC,EAAO,CAAC,OAAQ,QAAS,YAAa,gBAAiB,WAAY,YAAa,YAAa,QAAS,QAAS,OAAQ,aAAc,QAAQ,CAAC,EAC9J,CAACylL,EAAgBC,CAAY,EAAI,MAAM,QAAQtxK,CAAI,EAAIA,EAAO,CAACA,EAAMA,CAAI,EACzEuxK,EAAuBV,GAAaS,CAAY,EAChDE,EAAyBX,GAAaQ,CAAc,EACpDI,EAAsBX,GAAiBQ,CAAY,EACnDI,EAAwBZ,GAAiBO,CAAc,EACvDvpK,EAAapP,GAAQC,EAAU,CACnC,UAAW,EACf,CAAG,EACK6lH,EAAc1nB,IAAU,QAAanmE,IAAc,aAAe,SAAWmmE,EAC7En/D,EAAYjH,EAAa,QAASP,CAAkB,EACpD,CAAC8H,EAAY1mB,EAAQ2mB,CAAS,EAAIX,GAASI,CAAS,EACpDomD,EAAMhmF,GAAW4/B,EAAWggB,EAAkBpmC,EAAQ,GAAGomB,CAAS,IAAIhH,CAAS,GAAI,CACvF,CAAC,GAAGgH,CAAS,MAAM,EAAG+pB,IAAoB,MAC1C,CAAC,GAAG/pB,CAAS,UAAU6mF,CAAW,EAAE,EAAGA,EACvC,CAAC,GAAG7mF,CAAS,YAAY25I,CAAY,EAAE,EAAGC,EAC1C,CAAC,GAAG55I,CAAS,YAAY05I,CAAc,EAAE,EAAGG,CAChD,EAAK7/H,EAAWY,EAAera,CAAS,EAChCy5I,EAAgB55K,GAAW,GAAG4/B,CAAS,SAAUl+C,EAAKs5E,GAAqB,KAAsC,OAASA,EAAiB,QAAU,MAAQt5E,IAAO,OAASA,EAAKi6E,EAAkB,IAAI,EAE9M,IAAIw9G,EAAc,EAClB,MAAMpvH,EAAQh6C,EAAW,IAAI,CAAClP,EAAO7f,KAAM,CACzC,IAAIU,GACAmf,GAAU,OACZs4K,EAAcn4L,IAEhB,MAAM/C,IAAO4iB,GAAU,KAA2B,OAASA,EAAM,MAAQ,GAAG+4K,CAAa,IAAI54L,EAAC,GAC9F,OAAoBwZ,EAAM,cAAcg5F,GAAM,CAC5C,UAAWomF,EACX,IAAK37L,GACL,MAAO+C,GACP,MAAOk4L,EACP,OAAQx3L,GAAK8oB,GAAW,KAA4B,OAASA,EAAO,QAAU,MAAQ9oB,KAAO,OAASA,GAAKk6E,EAAc,IAC/H,EAAO/6D,CAAK,CACV,CAAC,EACKg5K,EAAer/K,EAAM,QAAQ,KAAO,CACxC,YAAA2+K,CACJ,GAAM,CAACA,CAAW,CAAC,EAEjB,GAAIppK,EAAW,SAAW,EACxB,OAAO,KAET,MAAM+pK,EAAW,CAAA,EACjB,OAAIpgB,IACFogB,EAAS,SAAW,QAElB,CAACL,GAA0BE,IAC7BG,EAAS,UAAYR,GAEnB,CAACE,GAAwBE,IAC3BI,EAAS,OAASP,GAEbr5I,EAAwB1lC,EAAM,cAAc,MAAO,OAAO,OAAO,CACtE,IAAKlH,EACL,UAAW0yF,EACX,MAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,GAAI8zF,CAAQ,EAAGj6H,CAAY,EAAG3pC,CAAK,CACxF,EAAKopC,CAAU,EAAgB9kD,EAAM,cAAcy+K,GAAsB,CACrE,MAAOY,CACX,EAAK9vH,CAAK,CAAC,CAAC,CACZ,CAAC,EAEDqvH,GAAM,QAAU1vH,GACZ,QAAQ,IAAI,WAAa,eAC3B0vH,GAAM,YAAc,SC3GtB,IAAIW,GAAmB,CAAE,KAAQ,CAAE,IAAO,MAAO,MAAS,CAAE,QAAW,gBAAiB,UAAa,OAAO,EAAI,SAAY,CAAC,CAAE,IAAO,OAAQ,MAAS,CAAE,EAAK,6ZAA6Z,EAAI,CAAC,EAAI,KAAQ,YAAa,MAAS,UAAU,ECMxmBA,GAAmB,SAA0BlmL,EAAOP,EAAK,CAC3D,OAAoBkH,EAAM,cAAcogD,GAAUv6C,GAAS,CAAA,EAAIxM,EAAO,CACpE,IAAKP,EACL,KAAM0mL,EACV,CAAG,CAAC,CACJ,EAGIl/H,GAAuBtgD,EAAM,WAAWu/K,EAAgB,EACxD,QAAQ,IAAI,WAAa,eAC3Bj/H,GAAQ,YAAc,oBChBxB,IAAIm/H,GAAiB,CAAE,KAAQ,CAAE,IAAO,MAAO,MAAS,CAAE,QAAW,gBAAiB,UAAa,OAAO,EAAI,SAAY,CAAC,CAAE,IAAO,OAAQ,MAAS,CAAE,EAAK,4fAA4f,EAAI,CAAC,EAAI,KAAQ,UAAW,MAAS,UAAU,ECMnsBA,GAAiB,SAAwBpmL,EAAOP,EAAK,CACvD,OAAoBkH,EAAM,cAAcogD,GAAUv6C,GAAS,CAAA,EAAIxM,EAAO,CACpE,IAAKP,EACL,KAAM4mL,EACV,CAAG,CAAC,CACJ,EAGIp/H,GAAuBtgD,EAAM,WAAWy/K,EAAc,EACtD,QAAQ,IAAI,WAAa,eAC3Bn/H,GAAQ,YAAc,kBChBxB,IAAIq/H,GAAkB,CAAE,KAAQ,CAAE,IAAO,MAAO,MAAS,CAAE,QAAW,gBAAiB,UAAa,OAAO,EAAI,SAAY,CAAC,CAAE,IAAO,OAAQ,MAAS,CAAE,EAAK,4ZAA4Z,EAAI,CAAC,EAAI,KAAQ,WAAY,MAAS,UAAU,ECMrmBA,GAAkB,SAAyBtmL,EAAOP,EAAK,CACzD,OAAoBkH,EAAM,cAAcogD,GAAUv6C,GAAS,CAAA,EAAIxM,EAAO,CACpE,IAAKP,EACL,KAAM8mL,EACV,CAAG,CAAC,CACJ,EAGIt/H,GAAuBtgD,EAAM,WAAW2/K,EAAe,EACvD,QAAQ,IAAI,WAAa,eAC3Br/H,GAAQ,YAAc,mBCXxB,IAAIu/H,GAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EACxBC,GAAe,CAAC,iBAAkB,cAAe,cAAe,iBAAkB,cAAe,cAAe,YAAa,eAAgB,iBAAkB,iBAAkB,QAAS,cAAe,eAAgB,gBAAiB,eAAgB,aAAc,aAAc,aAAa,EACnSC,GAAqB,CAAA,EACrBC,GACG,SAASC,GAAqBx4K,EAAM,CACzC,IAAI6vH,EAAW,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC/EtjF,EAAUvsC,EAAK,aAAa,IAAI,GAAKA,EAAK,aAAa,cAAc,GAAKA,EAAK,aAAa,MAAM,EACtG,GAAI6vH,GAAYyoD,GAAmB/rI,CAAO,EACxC,OAAO+rI,GAAmB/rI,CAAO,EAEnC,IAAIt4B,EAAQ,OAAO,iBAAiBjU,CAAI,EACpCy4K,EAAYxkK,EAAM,iBAAiB,YAAY,GAAKA,EAAM,iBAAiB,iBAAiB,GAAKA,EAAM,iBAAiB,oBAAoB,EAC5IykK,EAAc,WAAWzkK,EAAM,iBAAiB,gBAAgB,CAAC,EAAI,WAAWA,EAAM,iBAAiB,aAAa,CAAC,EACrH0kK,EAAa,WAAW1kK,EAAM,iBAAiB,qBAAqB,CAAC,EAAI,WAAWA,EAAM,iBAAiB,kBAAkB,CAAC,EAC9H2kK,EAAcP,GAAa,IAAI,SAAUxtL,EAAM,CACjD,MAAO,GAAG,OAAOA,EAAM,GAAG,EAAE,OAAOopB,EAAM,iBAAiBppB,CAAI,CAAC,CACjE,CAAC,EAAE,KAAK,GAAG,EACPguL,EAAW,CACb,YAAaD,EACb,YAAaF,EACb,WAAYC,EACZ,UAAWF,CACf,EACE,OAAI5oD,GAAYtjF,IACd+rI,GAAmB/rI,CAAO,EAAIssI,GAEzBA,CACT,CACe,SAASC,GAAuBC,EAAY,CACzD,IAAIlpD,EAAW,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC/EmpD,EAAU,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,KAC9EC,EAAU,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,KAC7EV,KACHA,GAAiB,SAAS,cAAc,UAAU,EAClDA,GAAe,aAAa,YAAa,IAAI,EAC7CA,GAAe,aAAa,cAAe,MAAM,EAIjDA,GAAe,aAAa,OAAQ,gBAAgB,EACpD,SAAS,KAAK,YAAYA,EAAc,GAKtCQ,EAAW,aAAa,MAAM,EAChCR,GAAe,aAAa,OAAQQ,EAAW,aAAa,MAAM,CAAC,EAEnER,GAAe,gBAAgB,MAAM,EAKvC,IAAIW,EAAwBV,GAAqBO,EAAYlpD,CAAQ,EACnE6oD,EAAcQ,EAAsB,YACpCP,EAAaO,EAAsB,WACnCT,EAAYS,EAAsB,UAClCN,EAAcM,EAAsB,YAKtCX,GAAe,aAAa,QAAS,GAAG,OAAOK,EAAa,GAAG,EAAE,OAAOR,EAAqB,CAAC,EAC9FG,GAAe,MAAQQ,EAAW,OAASA,EAAW,aAAe,GACrE,IAAII,EAAY,OACZC,EAAY,OACZp4E,EACA53F,EAASmvK,GAAe,aAQ5B,GAPIE,IAAc,aAEhBrvK,GAAUuvK,EACDF,IAAc,gBAEvBrvK,GAAUsvK,GAERM,IAAY,MAAQC,IAAY,KAAM,CAExCV,GAAe,MAAQ,IACvB,IAAIc,EAAkBd,GAAe,aAAeG,EAChDM,IAAY,OACdG,EAAYE,EAAkBL,EAC1BP,IAAc,eAChBU,EAAYA,EAAYT,EAAcC,GAExCvvK,EAAS,KAAK,IAAI+vK,EAAW/vK,CAAM,GAEjC6vK,IAAY,OACdG,EAAYC,EAAkBJ,EAC1BR,IAAc,eAChBW,EAAYA,EAAYV,EAAcC,GAExC33E,EAAY53F,EAASgwK,EAAY,GAAK,SACtChwK,EAAS,KAAK,IAAIgwK,EAAWhwK,CAAM,EAEvC,CACA,IAAI6K,EAAQ,CACV,OAAQ7K,EACR,UAAW43F,EACX,OAAQ,MACZ,EACE,OAAIm4E,IACFllK,EAAM,UAAYklK,GAEhBC,IACFnlK,EAAM,UAAYmlK,GAEbnlK,CACT,CC3GA,IAAIiwB,GAAY,CAAC,YAAa,eAAgB,QAAS,WAAY,WAAY,YAAa,QAAS,WAAY,WAAY,oBAAoB,EAQ7Io1I,GAAe,EACfC,GAAmB,EACnBC,GAAgB,EAChBC,GAAiClhL,EAAM,WAAW,SAAU3G,EAAOP,EAAK,CAC1E,IAAI4C,EAAOrC,EACT+rC,EAAY1pC,EAAK,UACjB/Q,EAAe+Q,EAAK,aACpB9W,EAAQ8W,EAAK,MACbylL,EAAWzlL,EAAK,SAChB8R,EAAW9R,EAAK,SAChB0jD,EAAY1jD,EAAK,UACjBggB,EAAQhgB,EAAK,MACbmY,EAAWnY,EAAK,SAChB6lC,EAAW7lC,EAAK,SAChB0lL,EAAqB1lL,EAAK,mBAC1Bk7C,EAAY38B,GAAyBve,EAAMiwC,EAAS,EAGlD4pB,EAAkBl0B,GAAe12C,EAAc,CAC/C,MAAO/F,EACP,UAAW,SAAmBoK,EAAK,CACjC,OAAOA,GAAuC,EAChD,CACN,CAAK,EACDwmE,EAAmBr+C,GAAeo+C,EAAiB,CAAC,EACpD1zB,EAAc2zB,EAAiB,CAAC,EAChC6rH,EAAiB7rH,EAAiB,CAAC,EACjCwzG,EAAmB,SAA0BlhL,EAAO,CACtDu5L,EAAev5L,EAAM,OAAO,KAAK,EACjCy5C,GAAa,MAA+BA,EAASz5C,CAAK,CAC5D,EAGIw5L,EAActhL,EAAM,OAAM,EAC9BA,EAAM,oBAAoBlH,EAAK,UAAY,CACzC,MAAO,CACL,SAAUwoL,EAAY,OAC5B,CACE,CAAC,EAGD,IAAI75D,EAAiBznH,EAAM,QAAQ,UAAY,CAC3C,OAAImhL,GAAYr7K,GAAQq7K,CAAQ,IAAM,SAC7B,CAACA,EAAS,QAASA,EAAS,OAAO,EAErC,CAAA,CACT,EAAG,CAACA,CAAQ,CAAC,EACbz5D,EAAkBvwG,GAAeswG,EAAgB,CAAC,EAClDg5D,EAAU/4D,EAAgB,CAAC,EAC3Bg5D,EAAUh5D,EAAgB,CAAC,EACzB65D,EAAe,CAAC,CAACJ,EAIjBK,EAAuB,UAAgC,CACzD,GAAI,CAEF,GAAI,SAAS,gBAAkBF,EAAY,QAAS,CAClD,IAAIG,EAAuBH,EAAY,QACrCI,GAAiBD,EAAqB,eACtCE,GAAeF,EAAqB,aACpCzzE,GAAYyzE,EAAqB,UAQnCH,EAAY,QAAQ,kBAAkBI,GAAgBC,EAAY,EAClEL,EAAY,QAAQ,UAAYtzE,EAClC,CACF,MAAY,CAIZ,CACF,EAGIjtE,EAAkB/gC,EAAM,SAASihL,EAAa,EAChDjgJ,EAAmB7pB,GAAe4pB,EAAiB,CAAC,EACpD6gJ,EAAc5gJ,EAAiB,CAAC,EAChC6gJ,EAAiB7gJ,EAAiB,CAAC,EACjCmkC,EAAmBnlE,EAAM,SAAQ,EACnColE,EAAmBjuD,GAAeguD,EAAkB,CAAC,EACrD28G,EAAgB18G,EAAiB,CAAC,EAClC28G,EAAmB38G,EAAiB,CAAC,EACnC48G,EAAc,UAAuB,CACvCH,EAAed,EAAY,EACvB,QAAQ,IAAI,WAAa,SAC3BK,GAAuB,MAAyCA,EAAkB,EAEtF,EAGA1hK,GAAgB,UAAY,CACtB6hK,GACFS,EAAW,CAEf,EAAG,CAACp9L,EAAO67L,EAASC,EAASa,CAAY,CAAC,EAC1C7hK,GAAgB,UAAY,CAC1B,GAAIkiK,IAAgBb,GAClBc,EAAeb,EAAgB,UACtBY,IAAgBZ,GAAkB,CAC3C,IAAIiB,EAAiB1B,GAAuBe,EAAY,QAAS,GAAOb,EAASC,CAAO,EAcxFmB,EAAeZ,EAAa,EAC5Bc,EAAiBE,CAAc,CACjC,MACET,EAAoB,CAExB,EAAG,CAACI,CAAW,CAAC,EAGhB,IAAIM,EAAeliL,EAAM,OAAM,EAC3Bg3I,EAAW,UAAoB,CACjC5gI,GAAI,OAAO8rK,EAAa,OAAO,CACjC,EACIztK,EAAmB,SAA0BhH,EAAM,CACjDm0K,IAAgBX,KAClBzzK,GAAa,MAA+BA,EAASC,CAAI,EACrD0zK,IACFnqC,EAAQ,EACRkrC,EAAa,QAAU9rK,GAAI,UAAY,CACrC4rK,EAAW,CACb,CAAC,GAGP,EACAhiL,EAAM,UAAU,UAAY,CAC1B,OAAOg3I,CACT,EAAG,CAAA,CAAE,EAGL,IAAImrC,EAAsBZ,EAAeO,EAAgB,KACrD71J,EAAc9W,EAAcA,EAAc,CAAA,EAAIuG,CAAK,EAAGymK,CAAmB,EAC7E,OAAIP,IAAgBb,IAAgBa,IAAgBZ,MAClD/0J,EAAY,UAAY,SACxBA,EAAY,UAAY,UAENjsB,EAAM,cAAckS,GAAgB,CACtD,SAAUuC,EACV,SAAU,EAAE0sK,GAAY3zK,EAC5B,EAAkBxN,EAAM,cAAc,WAAY6F,GAAS,CAAA,EAAI+wC,EAAW,CACtE,IAAK0qI,EACL,MAAOr1J,EACP,UAAWzmB,GAAW4/B,EAAWga,EAAWh4C,EAAgB,CAAA,EAAI,GAAG,OAAOg+B,EAAW,WAAW,EAAGvxB,CAAQ,CAAC,EAC5G,SAAUA,EACV,MAAOguB,EACP,SAAUmnI,CACd,CAAG,CAAC,CAAC,CACL,CAAC,EC5KGr9H,GAAY,CAAC,eAAgB,QAAS,UAAW,SAAU,WAAY,aAAc,YAAa,qBAAsB,mBAAoB,SAAU,YAAa,YAAa,QAAS,YAAa,QAAS,WAAY,SAAU,aAAc,SAAU,WAAY,UAAW,eAAgB,WAAY,WAAY,WAAW,EAQvUy2I,GAAwBpiL,EAAM,WAAW,SAAUtE,EAAM5C,EAAK,CAChE,IAAIupL,EACA13L,EAAe+Q,EAAK,aACtB4mL,EAAc5mL,EAAK,MACnBijH,EAAUjjH,EAAK,QACfkjH,EAASljH,EAAK,OACd6lC,EAAW7lC,EAAK,SAChB86F,EAAa96F,EAAK,WAClB6mG,EAAY7mG,EAAK,UACjB6mL,EAAqB7mL,EAAK,mBAC1BysK,EAAmBzsK,EAAK,iBACxB3P,EAAS2P,EAAK,OACd0kJ,EAAiB1kJ,EAAK,UACtB0pC,EAAYg7G,IAAmB,OAAS,cAAgBA,EACxD2nB,EAAYrsK,EAAK,UACjBtN,EAAQsN,EAAK,MACb0jD,EAAY1jD,EAAK,UACjBggB,EAAQhgB,EAAK,MACbmY,EAAWnY,EAAK,SAChBirK,EAASjrK,EAAK,OACd8J,EAAa9J,EAAK,WAClBsU,EAAStU,EAAK,OACd8R,EAAW9R,EAAK,SAChBsiH,EAAUtiH,EAAK,QACfssK,EAAetsK,EAAK,aACpB+qK,EAAW/qK,EAAK,SAChBylL,EAAWzlL,EAAK,SAChBojH,EAAYpjH,EAAK,UACjB/J,EAAOsoB,GAAyBve,EAAMiwC,EAAS,EAC7C4pB,EAAkBl0B,GAAe12C,EAAc,CAC/C,MAAO23L,EACP,aAAc33L,CACpB,CAAK,EACD6qE,EAAmBr+C,GAAeo+C,EAAiB,CAAC,EACpD3wE,EAAQ4wE,EAAiB,CAAC,EAC1Bv0B,EAAWu0B,EAAiB,CAAC,EAC3BvoC,EAAqCroC,GAAU,KAAO,GAAK,OAAOA,CAAK,EACvEm8C,EAAkB/gC,EAAM,SAAS,EAAK,EACxCghC,EAAmB7pB,GAAe4pB,EAAiB,CAAC,EACpDwgE,EAAUvgE,EAAiB,CAAC,EAC5BwgE,EAAaxgE,EAAiB,CAAC,EAC7BonI,EAAiBpoK,EAAM,OAAO,EAAK,EACnCmlE,EAAmBnlE,EAAM,SAAS,IAAI,EACxColE,EAAmBjuD,GAAeguD,EAAkB,CAAC,EACrDq9G,GAAkBp9G,EAAiB,CAAC,EACpCq9G,GAAqBr9G,EAAiB,CAAC,EAGrC4E,GAAYjxE,EAAAA,OAAO,IAAI,EACvB2pL,GAAuB3pL,EAAAA,OAAO,IAAI,EAClC4pL,GAAc,UAAuB,CACvC,IAAIC,GACJ,OAAQA,GAAwBF,GAAqB,WAAa,MAAQE,KAA0B,OAAS,OAASA,GAAsB,QAC9I,EACI7jH,EAAQ,UAAiB,CAC3B4jH,GAAW,EAAG,MAAK,CACrB,EACA92C,EAAAA,oBAAoB/yI,EAAK,UAAY,CACnC,IAAI4vK,GACJ,MAAO,CACL,kBAAmBga,GAAqB,QACxC,MAAO3jH,EACP,KAAM,UAAgB,CACpB4jH,GAAW,EAAG,KAAI,CACpB,EACA,gBAAiBja,GAAqB1+F,GAAU,WAAa,MAAQ0+F,KAAuB,OAAS,OAASA,GAAmB,gBAAkBia,GAAW,CACpK,CACE,CAAC,EACD3pL,EAAAA,UAAU,UAAY,CACpBwoG,EAAW,SAAUzqG,GAAM,CACzB,MAAO,CAAC8c,GAAY9c,EACtB,CAAC,CACH,EAAG,CAAC8c,CAAQ,CAAC,EAGb,IAAIwiG,EAAmBr2G,EAAM,SAAS,IAAI,EACxCs2G,GAAmBn/F,GAAek/F,EAAkB,CAAC,EACrDgyD,EAAY/xD,GAAiB,CAAC,EAC9BgyD,GAAehyD,GAAiB,CAAC,EACnCt2G,EAAM,UAAU,UAAY,CAC1B,GAAIqoK,EAAW,CACb,IAAIwa,IACHA,GAAeF,GAAW,GAAI,kBAAkB,MAAME,GAAc9sK,GAAmBsyJ,CAAS,CAAC,CACpG,CACF,EAAG,CAACA,CAAS,CAAC,EAGd,IAAIE,GAAcT,GAAS15K,EAAO25K,CAAS,EACvCnzI,IAAaytJ,EAAmB9Z,GAAY,OAAS,MAAQ8Z,IAAqB,OAASA,EAAmB9/E,EAG9G6mE,GAAe,OAAOx0I,EAAS,EAAI,EACnC4zI,GAAcD,GAAY,SAASt7I,CAAW,EAC9Cw7I,GAAe,CAAC,CAAC7zI,IAAa4zI,GAAc5zI,GAG5CuN,GAAgB,SAAuBh+C,GAAGo2F,GAAc,CAC1D,IAAIquF,GAAWruF,GACX,CAAC6tF,EAAe,SAAWG,GAAY,iBAAmBA,GAAY,KAAOA,GAAY,SAAShuF,EAAY,EAAIguF,GAAY,MAChIK,GAAWL,GAAY,gBAAgBhuF,GAAc,CACnD,IAAKguF,GAAY,GACzB,CAAO,EACGhuF,KAAiBquF,IACnBN,GAAa,CAACqa,GAAW,EAAG,gBAAkB,EAAGA,GAAW,EAAG,cAAgB,CAAC,CAAC,GAGrF1hJ,EAAS2nI,EAAQ,EACjB5C,GAAgB7hL,GAAE,cAAeA,GAAGo9C,EAAUqnI,EAAQ,CACxD,EAGIka,GAA6B,SAAoC3+L,GAAG,CACtEikL,EAAe,QAAU,GACzBma,GAAuB,MAAyCA,EAAmBp+L,EAAC,CACtF,EACI8kL,GAA2B,SAAkC9kL,GAAG,CAClEikL,EAAe,QAAU,GACzBjmI,GAAch+C,GAAGA,GAAE,cAAc,KAAK,EACtCgkL,GAAqB,MAAuCA,EAAiBhkL,EAAC,CAChF,EACI6kL,GAAmB,SAA0B7kL,GAAG,CAClDg+C,GAAch+C,GAAGA,GAAE,OAAO,KAAK,CACjC,EACIkuJ,GAAgB,SAAuBluJ,GAAG,CACxCA,GAAE,MAAQ,SAAW6jL,GACvBA,EAAa7jL,EAAC,EAEhB26H,GAAc,MAAgCA,EAAU36H,EAAC,CAC3D,EACI6/K,EAAc,SAAqB7/K,GAAG,CACxCq9G,EAAW,EAAI,EACfmd,GAAY,MAA8BA,EAAQx6H,EAAC,CACrD,EACI8/K,GAAa,SAAoB9/K,GAAG,CACtCq9G,EAAW,EAAK,EAChBod,GAAW,MAA6BA,EAAOz6H,EAAC,CAClD,EAGIuiL,GAAc,SAAqBviL,GAAG,CACxC88C,EAAS,EAAE,EACX89B,EAAK,EACLinG,GAAgB2c,GAAW,EAAIx+L,GAAGo9C,CAAQ,CAC5C,EACIimI,GAAaz7K,EACbs9K,GACAd,GAAY,OACVA,GAAY,cACdc,GAAYd,GAAY,cAAc,CACpC,MAAOt7I,EACP,MAAOu7I,GACP,UAAW5zI,EACnB,CAAO,EAEDy0I,GAAY,GAAG,OAAOb,EAAW,EAAE,OAAOY,GAAe,MAAM,OAAOx0I,EAAS,EAAI,EAAE,EAEvF4yI,GAA0BxnK,EAAM,cAAcA,EAAM,SAAU,KAAMwnK,GAAyBxnK,EAAM,cAAc,OAAQ,CACvH,UAAWknK,GAAK,GAAG,OAAO9hI,EAAW,aAAa,EAAG5/B,GAAe,KAAgC,OAASA,EAAW,KAAK,EAC7H,MAAOwK,GAAW,KAA4B,OAASA,EAAO,KACpE,EAAOq5J,EAAS,CAAC,GAEf,IAAI0Z,GAAe,SAAsBt1K,GAAM,CAC7C,IAAIu1K,GACJx1K,GAAa,MAA+BA,EAASC,EAAI,GACpDu1K,GAAgBL,GAAW,KAAQ,MAAQK,KAAkB,QAAUA,GAAc,MAAM,QAC9FP,GAAmB,EAAI,CAE3B,EACIQ,GAAiB,CAAC9B,GAAY,CAACpZ,GAAa,CAACvxE,EACjD,OAAoBx2F,EAAM,cAAcmmK,GAAW,CACjD,IAAKn8F,GACL,MAAO/8C,EACP,WAAYupE,EACZ,YAAakwE,GACb,OAAQc,GACR,UAAWpiI,EACX,WAAYjwB,EAAcA,EAAc,CAAA,EAAI3P,CAAU,EAAG,CAAA,EAAI,CAC3D,aAAc0hK,GAAK1hK,GAAe,KAAgC,OAASA,EAAW,aAAc4B,EAAgBA,EAAgB,CAAA,EAAI,GAAG,OAAOg+B,EAAW,aAAa,EAAG2iI,CAAS,EAAG,GAAG,OAAO3iI,EAAW,uBAAuB,EAAGoxD,CAAU,CAAC,CACzP,CAAK,EACD,SAAU3iF,EACV,QAAS0tF,EACT,UAAW2lE,GAAK9nH,EAAWqpH,IAAgB,GAAG,OAAOrjI,EAAW,eAAe,CAAC,EAChF,MAAOjwB,EAAcA,EAAc,CAAA,EAAIuG,CAAK,EAAG8mK,IAAmB,CAACS,GAAiB,CAClF,OAAQ,MACd,EAAQ,EAAE,EACN,UAAW,CACT,aAAc,CACZ,aAAc,OAAO5Z,IAAc,SAAWA,GAAY,MAClE,CACA,EACI,OAAQ1C,EACR,SAAUF,EACV,QAASzoD,CACb,EAAkBh+G,EAAM,cAAckhL,GAAmBr7K,GAAS,CAAA,EAAIlU,EAAM,CACxE,SAAUwvL,EACV,UAAW5+E,EACX,UAAW8vC,GACX,SAAU22B,GACV,QAAShF,EACT,OAAQC,GACR,mBAAoB6e,GACpB,iBAAkB7Z,GAClB,UAAW/B,GAAK1hK,GAAe,KAAgC,OAASA,EAAW,QAAQ,EAC3F,MAAO2P,EAAcA,EAAc,CAAA,EAAInF,GAAW,KAA4B,OAASA,EAAO,QAAQ,EAAG,CAAA,EAAI,CAC3G,OAAQ0L,GAAU,KAA2B,OAASA,EAAM,MAClE,CAAK,EACD,SAAU7H,EACV,UAAWuxB,EACX,SAAU29I,GACV,IAAKL,GACL,SAAUjc,CACd,CAAG,CAAC,CAAC,CACL,CAAC,EC/ND,MAAMyc,GAAmB5lK,GAAS,CAChC,KAAM,CACJ,aAAA0pB,EACA,UAAAm2I,CACJ,EAAM7/J,EACE6lK,EAAoB,GAAGn8I,CAAY,YACzC,MAAO,CAEL,CAAC,WAAWA,CAAY,EAAE,EAAG,CAC3B,SAAU,OAEV,OAAQ,OACR,UAAW1pB,EAAM,cACjB,WAAYA,EAAM,WAClB,cAAe,SACf,WAAY,OAAOA,EAAM,kBAAkB,GAC3C,OAAQ,WACR,CAAC,IAAI0pB,CAAY,eAAe,EAAG,CACjC,WAAY,OAAO1pB,EAAM,kBAAkB,uBACnD,CACA,EAEI,CAAC,GAAG0pB,CAAY,sCAAsC,EAAG,CACvD,MAAO,MACb,EACI,CAACm8I,CAAiB,EAAG,CACnB,SAAU,WACV,eAAgB,CACd,CAAC,GAAGn8I,CAAY,aAAa,EAAG,CAC9B,SAAU,WACV,OAAQ1pB,EAAM,KAAKA,EAAM,QAAQ,EAAE,IAAIA,EAAM,UAAU,EAAE,IAAI,EAAE,EAAE,MAAK,EACtE,eAAgB,EAChB,MAAOA,EAAM,qBACb,WAAY,SACZ,cAAe,MACzB,CACA,EACM,CAAC;AAAA,0BACmB0pB,CAAY;AAAA,yBACbm8I,CAAiB,iBAAiBn8I,CAAY;AAAA,OAChE,EAAG,CACF,iBAAkBm2I,CAC1B,EACM,CAAC,kBAAkBn2I,CAAY,gBAAgB,EAAG,CAChD,QAAS,EACT,CAAC,aAAaA,CAAY,EAAE,EAAG,CAC7B,SAAU,UACV,OAAQ,OACR,QAAS,OACT,WAAY,cACZ,UAAW1pB,EAAM,KAAKA,EAAM,aAAa,EAAE,IAAIA,EAAM,KAAKA,EAAM,SAAS,EAAE,IAAI,CAAC,CAAC,EAAE,MAAK,EACxF,UAAW,CACT,UAAW,iBACvB,CACA,EACQ,CAAC,GAAG0pB,CAAY,SAAS,EAAG,CAC1B,OAAQ,EACR,uBAAwB,CACtB,aAAc,CAC1B,EAEU,CAAC,GAAGA,CAAY,aAAa,EAAG,CAC9B,SAAU,WACV,eAAgB1pB,EAAM,cACtB,gBAAiBA,EAAM,SACnC,EAEU,CAAC,GAAG6lK,CAAiB,SAAS,EAAG,CAC/B,SAAU,WACV,IAAK,EACL,eAAgB7lK,EAAM,cACtB,OAAQ,EACR,OAAQ,EACR,QAAS,cACT,WAAY,SACZ,OAAQ,OACR,cAAe,MAC3B,CACA,CACA,EACM,CAAC,kBAAkB0pB,CAAY,oBAAoB,EAAG,CACpD,CAAC,GAAGA,CAAY,SAAS,EAAG,CAC1B,CAAC,GAAGA,CAAY,aAAa,EAAG,CAC9B,UAAW,MACX,iBAAkB,CAC9B,CACA,CACA,EACM,CAAC,kBAAkBA,CAAY,mBAAmB,EAAG,CACnD,CAAC,GAAGA,CAAY,SAAS,EAAG,CAC1B,CAAC,GAAGA,CAAY,aAAa,EAAG,CAC9B,eAAgB1pB,EAAM,eAClC,CACA,CACA,CACA,CACA,CACA,EAEA8lK,GAAez+I,GAAc,CAAC,QAAS,UAAU,EAAGrnB,GAAS,CAC3D,MAAMouI,EAAanoH,GAAWjmB,EAAO6rI,GAAe7rI,CAAK,CAAC,EAC1D,MAAO,CAAC4lK,GAAiBx3B,CAAU,CAAC,CACtC,EAAGtC,GAAoB,CACrB,UAAW,EACb,CAAC,ECzGD,IAAIjhH,GAAgC,SAAU/kD,EAAGe,EAAG,CAClD,IAAId,EAAI,CAAA,EACR,QAASe,KAAKhB,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGgB,CAAC,GAAKD,EAAE,QAAQC,CAAC,EAAI,IAAGf,EAAEe,CAAC,EAAIhB,EAAEgB,CAAC,GAC/F,GAAIhB,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WAAY,QAAS,EAAI,EAAGgB,EAAI,OAAO,sBAAsBhB,CAAC,EAAG,EAAIgB,EAAE,OAAQ,IAClID,EAAE,QAAQC,EAAE,CAAC,CAAC,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKhB,EAAGgB,EAAE,CAAC,CAAC,IAAGf,EAAEe,EAAE,CAAC,CAAC,EAAIhB,EAAEgB,EAAE,CAAC,CAAC,GAElG,OAAOf,CACT,EAkBA,MAAM++L,GAAwB5xH,EAAAA,WAAW,CAACn3D,EAAOP,IAAQ,CACvD,IAAI5R,EACJ,KAAM,CACF,UAAW02C,EACX,SAAAwpG,EAAW,GACX,KAAMjnE,EACN,SAAUC,EACV,OAAQ4/D,EACR,WAAAxpC,EACA,WAAY/wF,EACZ,cAAAu6C,EACA,UAAAZ,EACA,MAAA1jC,EACA,OAAA1L,EACA,QAAS45J,EACT,UAAA7B,EACA,YAAAj+F,EACA,SAAAt8D,CACN,EAAQnU,EACJ1H,EAAOw2C,GAAO9uC,EAAO,CAAC,YAAa,WAAY,OAAQ,WAAY,SAAU,aAAc,aAAc,gBAAiB,YAAa,QAAS,SAAU,UAAW,YAAa,cAAe,UAAU,CAAC,EAC9M,GAAI,QAAQ,IAAI,WAAa,aAAc,CACzC,KAAM,CACJ,WAAAwwK,EACN,EAAQn4I,GAAc,UAAU,EAC5Bm4I,GAAW,EAAE,aAAcxwK,GAAQ,WAAY,SAAS,CAC1D,CACA,KAAM,CACJ,aAAA8kC,EACA,UAAAC,EACA,WAAY0rI,EACZ,aAAcC,EACd,UAAW3kH,EACX,MAAOC,EACP,WAAY8b,EACZ,OAAQC,CACZ,EAAMpjC,GAAmB,UAAU,EAE3BnqB,EAAW7T,EAAM,WAAWi/B,EAAe,EAC3CqiC,EAAiBlB,GAAwEvsD,EAEzF,CACJ,OAAQksH,EACR,YAAAF,EACA,aAAA6G,CACJ,EAAM1mI,EAAM,WAAWknF,EAAoB,EACnCihD,EAAerI,GAAgBC,EAAeC,CAAY,EAE1DgoB,EAAWhoJ,EAAM,OAAO,IAAI,EAClCA,EAAM,oBAAoBlH,EAAK,IAAM,CACnC,IAAI5R,GACJ,MAAO,CACL,mBAAoBA,GAAK8gK,EAAS,WAAa,MAAQ9gK,KAAO,OAAS,OAASA,GAAG,kBACnF,MAAOoG,IAAU,CACf,IAAIpG,GAAID,GACRg/K,IAAch/K,IAAMC,GAAK8gK,EAAS,WAAa,MAAQ9gK,KAAO,OAAS,OAASA,GAAG,qBAAuB,MAAQD,KAAO,OAAS,OAASA,GAAG,SAAUqG,EAAM,CAChK,EACA,KAAM,IAAM,CACV,IAAIpG,GACJ,OAAQA,GAAK8gK,EAAS,WAAa,MAAQ9gK,KAAO,OAAS,OAASA,GAAG,KAAI,CAC7E,CACN,CACE,CAAC,EACD,MAAMk+C,EAAYjH,EAAa,QAASP,CAAkB,EAEpDyH,EAAU4gB,GAAa7gB,CAAS,EAChC,CAAC4kI,EAAkBhrJ,EAAQ2mB,CAAS,EAAI8lH,GAAermH,EAAW4a,CAAa,EAC/E,CAACta,CAAU,EAAIV,GAASI,EAAWC,CAAO,EAE1C,CACJ,YAAA+8B,EACA,sBAAA1T,CACJ,EAAMF,GAAsBppB,EAAWhH,CAAS,EAExCixB,GAAatB,GAAQ7/C,IAAO,CAChC,IAAIhnB,GACJ,OAAQA,GAAKi5E,GAAqEiC,KAAiB,MAAQl7E,KAAO,OAASA,GAAKgnB,EAClI,CAAC,EACK,CAACsuC,GAASqlF,EAAgB,EAAIN,GAAW,WAAYqoC,EAAexiC,CAAQ,EAC5EvwC,GAAmByyE,GAAc9yE,GAA4DszE,CAAiB,EAG9G,CAACuZ,GAAaC,CAAc,EAAItjL,EAAM,SAAS,EAAK,EAEpD,CAACujL,EAAaC,EAAc,EAAIxjL,EAAM,SAAS,EAAK,EACpDoiH,EAAsBj+H,IAAK,CAC/Bm/L,EAAe,EAAI,EACnBx5G,GAAgB,MAA0CA,EAAY3lF,EAAC,EACvE,MAAM4lF,GAAY,IAAM,CACtBu5G,EAAe,EAAK,EACpB,SAAS,oBAAoB,UAAWv5G,EAAS,CACnD,EACA,SAAS,iBAAiB,UAAWA,EAAS,CAChD,EACMt1D,GAAmBhH,IAAQ,CAC/B,IAAIvmB,GAAID,GAGR,GAFAumB,GAAa,MAAuCA,EAASC,EAAI,EAE7D41K,IAAe,OAAO,kBAAqB,WAAY,CACzD,MAAMp2K,IAAOhmB,IAAMC,GAAK8gK,EAAS,WAAa,MAAQ9gK,KAAO,OAAS,OAASA,GAAG,iBAAmB,MAAQD,KAAO,OAAS,OAASA,GAAG,cAAc,UAAU,EAC7JgmB,IAAO,iBAAiBA,EAAG,EAAE,SAAW,QAC1Cu2K,GAAe,EAAI,CAEvB,CACF,EAEA,OAAOxZ,EAAiBtkI,EAAwB1lC,EAAM,cAAcyjL,GAAY,OAAO,OAAO,CAC5F,aAAc1Z,CAClB,EAAKp4K,EAAM,CACP,MAAO,OAAO,OAAO,OAAO,OAAO,GAAI0zD,CAAY,EAAG3pC,CAAK,EAC3D,OAAQ,OAAO,OAAO,OAAO,OAAO,GAAI0lD,CAAa,EAAGpxD,CAAM,EAC9D,SAAUsxD,EACV,WAAYu1B,GACZ,UAAWrxF,GAAWmgC,EAAWN,EAAS+Z,EAAWY,EAAe0O,EAAuBtJ,EAE3Fm+H,GAAe,GAAGn+I,CAAS,sCAAsC,EACjE,WAAY,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAI3/B,CAAO,EAAG07D,CAAiB,EAAG,CACtF,SAAU37D,GAAW,CACnB,CAAC,GAAG4/B,CAAS,KAAK,EAAGiqB,KAAe,QACpC,CAAC,GAAGjqB,CAAS,KAAK,EAAGiqB,KAAe,OAC5C,EAASrwC,EAAQvZ,GAAY,KAA6B,OAASA,EAAQ,SAAU07D,EAAkB,SAAUkiH,IAAe,GAAGj+I,CAAS,eAAe,EACrJ,QAAS5/B,GAAW,CAClB,CAAC,GAAG4/B,CAAS,IAAIoX,EAAO,EAAE,EAAGqlF,EACrC,EAASjC,GAAoBx6F,EAAW+iG,CAAY,CAAC,EAC/C,aAAc3iI,GAAW,GAAG4/B,CAAS,0BAA2B,CAC9D,CAAC,GAAGA,CAAS,oBAAoB,EAAGhH,IAAc,MAClD,CAAC,GAAGgH,CAAS,mBAAmB,EAAGiqB,KAAe,QAClD,CAAC,GAAGjqB,CAAS,mBAAmB,EAAGiqB,KAAe,QAClD,CAAC,GAAGjqB,CAAS,sBAAsB,EAAG2iI,KAAe7gL,EAAKmS,EAAM,SAAW,MAAQnS,IAAO,OAAS,OAASA,EAAG,KACvH,EAAS83B,CAAM,CACf,CAAK,EACD,UAAWomB,EACX,OAAQy6F,GAA4B7/H,EAAM,cAAc,OAAQ,CAC9D,UAAW,GAAGolC,CAAS,kBAC7B,EAAOshG,CAAY,EACf,UAAWqhC,EACX,IAAK/f,EACL,SAAUvzI,GACV,YAAa2tG,CACjB,CAAG,CAAC,CAAC,CAAC,CACN,CAAC,ECrKD,IAAIshE,GAAqB,CAAE,KAAQ,CAAE,IAAO,MAAO,MAAS,CAAE,QAAW,gBAAiB,UAAa,OAAO,EAAI,SAAY,CAAC,CAAE,IAAO,OAAQ,MAAS,CAAE,EAAK,gXAAgX,EAAI,CAAC,EAAI,KAAQ,cAAe,MAAS,UAAU,ECM/jBA,GAAqB,SAA4BrqL,EAAOP,EAAK,CAC/D,OAAoBkH,EAAM,cAAcogD,GAAUv6C,GAAS,CAAA,EAAIxM,EAAO,CACpE,IAAKP,EACL,KAAM6qL,EACV,CAAG,CAAC,CACJ,EAGIrjI,GAAuBtgD,EAAM,WAAW0jL,EAAkB,EAC1D,QAAQ,IAAI,WAAa,eAC3BpjI,GAAQ,YAAc,sBChBxB,IAAIsjI,GAAsB,CAAE,KAAQ,CAAE,IAAO,MAAO,MAAS,CAAE,QAAW,gBAAiB,UAAa,OAAO,EAAI,SAAY,CAAC,CAAE,IAAO,OAAQ,MAAS,CAAE,EAAK,kXAAkX,EAAI,CAAC,EAAI,KAAQ,eAAgB,MAAS,UAAU,ECMnkBA,GAAsB,SAA6BvqL,EAAOP,EAAK,CACjE,OAAoBkH,EAAM,cAAcogD,GAAUv6C,GAAS,CAAA,EAAIxM,EAAO,CACpE,IAAKP,EACL,KAAM+qL,EACV,CAAG,CAAC,CACJ,EAGIvjI,GAAuBtgD,EAAM,WAAW4jL,EAAmB,EAC3D,QAAQ,IAAI,WAAa,eAC3BtjI,GAAQ,YAAc,uBCjBxB,IAAIpuB,GAAS,CAEX,eAAgB,MAChB,QAAS,KACT,gBAAiB,KACjB,KAAM,IAEN,UAAW,MACX,UAAW,MACX,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,UAAW,IACb,ECXI4xJ,GAAyB,CAAC,GAAI,GAAI,GAAI,GAAG,EACzCC,GAAU,SAAiB1qL,EAAO,CACpC,IAAI2qL,EAAwB3qL,EAAM,gBAChC4qL,EAAkBD,IAA0B,OAASF,GAAyBE,EAC9E9xJ,EAAS74B,EAAM,OACf6qL,EAAa7qL,EAAM,WACnB8qL,EAAW9qL,EAAM,SACjB+qL,EAAW/qL,EAAM,SACjBgrL,EAAUhrL,EAAM,QAChBktC,EAAgBltC,EAAM,cACtBwa,EAAWxa,EAAM,SACjBirL,EAAkBjrL,EAAM,gBACxBkrL,EAAkBlrL,EAAM,gBACxBmrL,EAAoBnrL,EAAM,kBACxB0nC,EAAkB/gC,EAAM,SAAS,EAAE,EACrCghC,EAAmB7pB,GAAe4pB,EAAiB,CAAC,EACpD0jJ,EAAczjJ,EAAiB,CAAC,EAChC0jJ,EAAiB1jJ,EAAiB,CAAC,EACjC2jJ,EAAgB,UAAyB,CAC3C,MAAO,CAACF,GAAe,OAAO,MAAMA,CAAW,EAAI,OAAY,OAAOA,CAAW,CACnF,EACIG,EAAuB,OAAON,GAAoB,WAAaA,EAAkB,SAAU1/L,EAAO,CACpG,MAAO,GAAG,OAAOA,EAAO,GAAG,EAAE,OAAOstC,EAAO,cAAc,CAC3D,EACI8kC,EAAe,SAAsB7yE,EAAG,CAC1CugM,EAAevgM,EAAE,OAAO,KAAK,CAC/B,EACI8/K,EAAa,SAAoB9/K,EAAG,CAClCigM,GAAYK,IAAgB,KAGhCC,EAAe,EAAE,EACb,EAAAvgM,EAAE,gBAAkBA,EAAE,cAAc,UAAU,QAAQ,GAAG,OAAOoiD,EAAe,YAAY,CAAC,GAAK,GAAKpiD,EAAE,cAAc,UAAU,QAAQ,GAAG,OAAOoiD,EAAe,OAAO,CAAC,GAAK,MAGlL89I,GAAY,MAA8BA,EAAQM,EAAa,CAAE,GACnE,EACIE,EAAK,SAAY1gM,EAAG,CAClBsgM,IAAgB,KAGhBtgM,EAAE,UAAY2gM,GAAQ,OAAS3gM,EAAE,OAAS,WAC5CugM,EAAe,EAAE,EACjBL,GAAY,MAA8BA,EAAQM,EAAa,CAAE,EAErE,EACII,EAAqB,UAA8B,CACrD,OAAId,EAAgB,KAAK,SAAU32L,EAAQ,CACzC,OAAOA,EAAO,aAAe62L,EAAS,SAAQ,CAChD,CAAC,EACQF,EAEFA,EAAgB,OAAO,CAACE,CAAQ,CAAC,EAAE,KAAK,SAAUhhM,EAAG4kB,EAAG,CAC7D,IAAIi9K,EAAU,OAAO,MAAM,OAAO7hM,CAAC,CAAC,EAAI,EAAI,OAAOA,CAAC,EAChD8hM,EAAU,OAAO,MAAM,OAAOl9K,CAAC,CAAC,EAAI,EAAI,OAAOA,CAAC,EACpD,OAAOi9K,EAAUC,CACnB,CAAC,CACH,EAEI7/I,EAAY,GAAG,OAAOmB,EAAe,UAAU,EAInD,GAAI,CAACg+I,GAAmB,CAACF,EACvB,OAAO,KAET,IAAIa,EAAe,KACfC,EAAU,KACVC,EAAa,KAGjB,OAAIb,GAAmBC,IACrBU,EAAeV,EAAkB,CAC/B,SAAU3wK,EACV,KAAMswK,EACN,aAAc,SAAsBhpK,EAAW,CAC7C+oK,GAAe,MAAiCA,EAAW,OAAO/oK,CAAS,CAAC,CAC9E,EACA,aAAc+W,EAAO,UACrB,UAAW,GAAG,OAAOkT,EAAW,eAAe,EAC/C,QAAS2/I,EAAkB,EAAG,IAAI,SAAUz7L,EAAK,CAC/C,MAAO,CACL,MAAOs7L,EAAqBt7L,CAAG,EAC/B,MAAOA,CACjB,CACM,CAAC,CACP,CAAK,GAIC+6L,IACED,IACFgB,EAAa,OAAOhB,GAAa,UAAyBpkL,EAAM,cAAc,SAAU,CACtF,KAAM,SACN,QAAS6kL,EACT,QAASA,EACT,SAAUhxK,EACV,UAAW,GAAG,OAAOuxB,EAAW,sBAAsB,CAC9D,EAASlT,EAAO,eAAe,EAAiBlyB,EAAM,cAAc,OAAQ,CACpE,QAAS6kL,EACT,QAASA,CACjB,EAAST,CAAQ,GAEbe,EAAuBnlL,EAAM,cAAc,MAAO,CAChD,UAAW,GAAG,OAAOolC,EAAW,eAAe,CACrD,EAAOlT,EAAO,QAAsBlyB,EAAM,cAAc,QAAS,CAC3D,SAAU6T,EACV,KAAM,OACN,MAAO4wK,EACP,SAAUztH,EACV,QAAS6tH,EACT,OAAQ5gB,EACR,aAAc/xI,EAAO,IAC3B,CAAK,EAAGA,EAAO,KAAMkzJ,CAAU,GAETplL,EAAM,cAAc,KAAM,CAC5C,UAAWolC,CACf,EAAK8/I,EAAcC,CAAO,CAC1B,EACI,QAAQ,IAAI,WAAa,eAC3BpB,GAAQ,YAAc,WCvHxB,IAAIsB,GAAQ,SAAehsL,EAAO,CAChC,IAAIktC,EAAgBltC,EAAM,cACxByI,EAAOzI,EAAM,KACb05C,EAAS15C,EAAM,OACf+lD,EAAY/lD,EAAM,UAClBisL,EAAYjsL,EAAM,UAClBgmD,EAAUhmD,EAAM,QAChBksL,EAAalsL,EAAM,WACnBmsL,EAAansL,EAAM,WACjB+rC,EAAY,GAAG,OAAOmB,EAAe,OAAO,EAC5CilD,EAAMhmF,GAAW4/B,EAAW,GAAG,OAAOA,EAAW,GAAG,EAAE,OAAOtjC,CAAI,EAAGsF,EAAgBA,EAAgB,CAAA,EAAI,GAAG,OAAOg+B,EAAW,SAAS,EAAG2N,CAAM,EAAG,GAAG,OAAO3N,EAAW,WAAW,EAAG,CAACtjC,CAAI,EAAGs9C,CAAS,EACtM+iB,EAAc,UAAuB,CACvC9iB,EAAQv9C,CAAI,CACd,EACI2jL,EAAiB,SAAwBthM,EAAG,CAC9CohM,EAAWphM,EAAGk7D,EAASv9C,CAAI,CAC7B,EACI4jL,EAAQF,EAAW1jL,EAAM,OAAqB9B,EAAM,cAAc,IAAK,CACzE,IAAK,UACT,EAAK8B,CAAI,CAAC,EACR,OAAO4jL,EAAqB1lL,EAAM,cAAc,KAAM,CACpD,MAAOslL,EAAY,OAAOxjL,CAAI,EAAI,KAClC,UAAW0pF,EACX,QAASrpB,EACT,UAAWsjH,EACX,SAAU,CACd,EAAKC,CAAK,EAAI,IACd,EACI,QAAQ,IAAI,WAAa,eAC3BL,GAAM,YAAc,SCnBtB,IAAIM,GAAoB,SAA2B7jL,EAAM9a,EAAM0mB,EAAS,CACtE,OAAOA,CACT,EACA,SAAS9Y,IAAO,CAAC,CACjB,SAASgxL,GAAUj9L,EAAG,CACpB,IAAI/D,EAAQ,OAAO+D,CAAC,EACpB,OAAO,OAAO/D,GAAU,UAAY,CAAC,OAAO,MAAMA,CAAK,GAAK,SAASA,CAAK,GAAK,KAAK,MAAMA,CAAK,IAAMA,CACvG,CACA,SAASihM,GAAczhM,EAAG+/L,EAAU90G,EAAO,CACzC,IAAIy2G,EAAY,OAAO1hM,EAAM,IAAc+/L,EAAW//L,EACtD,OAAO,KAAK,OAAOirF,EAAQ,GAAKy2G,CAAS,EAAI,CAC/C,CACA,IAAItzJ,GAAa,SAAoBn5B,EAAO,CAC1C,IAAI+8D,EAAmB/8D,EAAM,UAC3B+rC,EAAYgxB,IAAqB,OAAS,gBAAkBA,EAC5D2vH,EAAwB1sL,EAAM,gBAC9B2sL,EAAkBD,IAA0B,OAAS,YAAcA,EACnE3mI,EAAY/lD,EAAM,UAClB4sL,EAAc5sL,EAAM,QACpB6sL,EAAwB7sL,EAAM,eAC9B8sL,EAAiBD,IAA0B,OAAS,EAAIA,EACxDE,EAAe/sL,EAAM,MACrBg2E,EAAQ+2G,IAAiB,OAAS,EAAIA,EACtCC,EAAehtL,EAAM,SACrBitL,EAAwBjtL,EAAM,gBAC9BktL,EAAkBD,IAA0B,OAAS,GAAKA,EAC1DE,EAAkBntL,EAAM,SACxBkoC,EAAWilJ,IAAoB,OAAS5xL,GAAO4xL,EAC/CC,EAAmBptL,EAAM,iBACzBkrG,EAAQlrG,EAAM,MACdqtL,EAAwBrtL,EAAM,oBAC9BstL,EAAsBD,IAA0B,OAAS,GAAOA,EAChEE,EAAkBvtL,EAAM,gBACxBwtL,EAAgBxtL,EAAM,cACtBytL,EAAmBztL,EAAM,UACzBisL,EAAYwB,IAAqB,OAAS,GAAOA,EACjDC,EAAwB1tL,EAAM,iBAC9B2tL,EAAmBD,IAA0B,OAASnyL,GAAOmyL,EAC7DE,EAAgB5tL,EAAM,OACtB64B,EAAS+0J,IAAkB,OAASC,GAAOD,EAC3CvrK,EAAQriB,EAAM,MACd8tL,EAAwB9tL,EAAM,6BAC9B+tL,EAA+BD,IAA0B,OAAS,GAAKA,EACvEtzK,EAAWxa,EAAM,SACjBguL,EAAShuL,EAAM,OACfiuL,EAAYjuL,EAAM,UAClBkuL,EAAwBluL,EAAM,gBAC9BkrL,EAAkBgD,IAA0B,OAASl4G,EAAQ+3G,EAA+BG,EAC5F/C,EAAoBnrL,EAAM,kBAC1B4qL,EAAkB5qL,EAAM,gBACxBmuL,EAAoBnuL,EAAM,WAC1BmsL,EAAagC,IAAsB,OAAS7B,GAAoB6B,EAChEC,EAAepuL,EAAM,aACrBquL,GAAeruL,EAAM,aACrBsuL,GAAWtuL,EAAM,SACjBuuL,GAAWvuL,EAAM,SACfwuL,GAAgB7nL,EAAM,OAAO,IAAI,EACjCu1D,GAAkBl0B,GAAe,GAAI,CACrC,MAAOglJ,EACP,aAAcE,CACpB,CAAK,EACD/wH,EAAmBr+C,GAAeo+C,GAAiB,CAAC,EACpD4uH,EAAW3uH,EAAiB,CAAC,EAC7BsyH,GAActyH,EAAiB,CAAC,EAC9B4mE,EAAmB/6F,GAAe,EAAG,CACrC,MAAO4kJ,EACP,aAAcE,EACd,UAAW,SAAmBlgM,GAAG,CAC/B,OAAO,KAAK,IAAI,EAAG,KAAK,IAAIA,GAAG4/L,GAAc,OAAW1B,EAAU90G,CAAK,CAAC,CAAC,CAC3E,CACN,CAAK,EACDgtD,GAAmBllH,GAAeilH,EAAkB,CAAC,EACrD71I,GAAU81I,GAAiB,CAAC,EAC5B0rD,GAAa1rD,GAAiB,CAAC,EAC7Bt7F,GAAkB/gC,EAAM,SAASzZ,EAAO,EAC1Cy6C,GAAmB7pB,GAAe4pB,GAAiB,CAAC,EACpDinJ,GAAmBhnJ,GAAiB,CAAC,EACrCinJ,GAAsBjnJ,GAAiB,CAAC,EAC1ChoC,EAAAA,UAAU,UAAY,CACpBivL,GAAoB1hM,EAAO,CAC7B,EAAG,CAACA,EAAO,CAAC,EACZ,IAAI2hM,GAAc3mJ,IAAa3sC,GAC3BuzL,GAAc,YAAa9uL,EAC3B,QAAQ,IAAI,WAAa,cAC3BoN,GAAQ0hL,GAAaD,GAAc,GAAM,gIAAgI,EAE3K,IAAIE,GAAe,KAAK,IAAI,EAAG7hM,IAAWsgM,EAAgB,EAAI,EAAE,EAC5DwB,GAAe,KAAK,IAAIxC,GAAc,OAAW1B,EAAU90G,CAAK,EAAG9oF,IAAWsgM,EAAgB,EAAI,EAAE,EACxG,SAASyB,EAAYnpI,GAAM8iD,GAAO,CAChC,IAAIr/B,GAAWzjB,IAAqBn/C,EAAM,cAAc,SAAU,CAChE,KAAM,SACN,aAAciiG,GACd,UAAW,GAAG,OAAO78D,EAAW,YAAY,CAClD,CAAK,EACD,OAAI,OAAO+Z,IAAS,aAClByjB,GAAwB5iE,EAAM,cAAcm/C,GAAMhqC,EAAc,CAAA,EAAI9b,CAAK,CAAC,GAErEupE,EACT,CACA,SAAS+hH,GAAcxgM,GAAG,CACxB,IAAIu9G,GAAav9G,GAAE,OAAO,MACtBokM,GAAW1C,GAAc,OAAW1B,EAAU90G,CAAK,EACnDzqF,GACJ,OAAI88G,KAAe,GACjB98G,GAAQ88G,GACC,OAAO,MAAM,OAAOA,EAAU,CAAC,EACxC98G,GAAQojM,GACCtmF,IAAc6mF,GACvB3jM,GAAQ2jM,GAER3jM,GAAQ,OAAO88G,EAAU,EAEpB98G,EACT,CACA,SAAS4jM,GAAQ1mL,GAAM,CACrB,OAAO8jL,GAAU9jL,EAAI,GAAKA,KAASvb,IAAWq/L,GAAUv2G,CAAK,GAAKA,EAAQ,CAC5E,CACA,IAAIo5G,GAA2Bp5G,EAAQ80G,EAAWyC,EAAkB,GAMpE,SAASv0C,GAAcvqJ,GAAO,EACxBA,GAAM,UAAYo+D,GAAQ,IAAMp+D,GAAM,UAAYo+D,GAAQ,OAC5Dp+D,GAAM,eAAc,CAExB,CACA,SAASq8K,GAAYr8K,GAAO,CAC1B,IAAIlD,GAAQ+/L,GAAc78L,EAAK,EAI/B,OAHIlD,KAAUojM,IACZC,GAAoBrjM,EAAK,EAEnBkD,GAAM,QAAO,CACnB,KAAKo+D,GAAQ,MACX8Q,GAAapyE,EAAK,EAClB,MACF,KAAKshE,GAAQ,GACX8Q,GAAapyE,GAAQ,CAAC,EACtB,MACF,KAAKshE,GAAQ,KACX8Q,GAAapyE,GAAQ,CAAC,EACtB,KAGR,CACE,CACA,SAASq/K,GAAWn8K,GAAO,CACzBkvE,GAAa2tH,GAAc78L,EAAK,CAAC,CACnC,CACA,SAAS4gM,GAAej7K,GAAM,CAC5B,IAAIk7K,GAAa9C,GAAcp4K,GAAM02K,EAAU90G,CAAK,EAChDu5G,GAAcriM,GAAUoiM,IAAcA,KAAe,EAAIA,GAAapiM,GAC1EuhM,GAAYr6K,EAAI,EAChBw6K,GAAoBW,EAAW,EAC/B5B,GAAqB,MAAuCA,EAAiBzgM,GAASknB,EAAI,EAC1Fs6K,GAAWa,EAAW,EACtBrnJ,GAAa,MAA+BA,EAASqnJ,GAAan7K,EAAI,CACxE,CACA,SAASupD,GAAal1D,GAAM,CAC1B,GAAI0mL,GAAQ1mL,EAAI,GAAK,CAAC+R,EAAU,CAC9B,IAAIhS,GAAcgkL,GAAc,OAAW1B,EAAU90G,CAAK,EACtDw5G,GAAU/mL,GACd,OAAIA,GAAOD,GACTgnL,GAAUhnL,GACDC,GAAO,IAChB+mL,GAAU,GAERA,KAAYb,IACdC,GAAoBY,EAAO,EAE7Bd,GAAWc,EAAO,EAClBtnJ,GAAa,MAA+BA,EAASsnJ,GAAS1E,CAAQ,EAC/D0E,EACT,CACA,OAAOtiM,EACT,CACA,IAAIuiM,GAAUviM,GAAU,EACpBwiM,GAAUxiM,GAAUs/L,GAAc,OAAW1B,EAAU90G,CAAK,EAChE,SAAS25G,IAAa,CAChBF,IAAS9xH,GAAazwE,GAAU,CAAC,CACvC,CACA,SAAS0iM,IAAa,CAChBF,IAAS/xH,GAAazwE,GAAU,CAAC,CACvC,CACA,SAAS2iM,IAAiB,CACxBlyH,GAAaoxH,EAAY,CAC3B,CACA,SAASe,IAAiB,CACxBnyH,GAAaqxH,EAAY,CAC3B,CACA,SAASe,GAAWthM,GAAOsL,GAAU,CACnC,GAAItL,GAAM,MAAQ,SAAWA,GAAM,WAAao+D,GAAQ,OAASp+D,GAAM,UAAYo+D,GAAQ,MAAO,CAChG,QAAS/5C,GAAO,UAAU,OAAQk9K,GAAa,IAAI,MAAMl9K,GAAO,EAAIA,GAAO,EAAI,CAAC,EAAGE,GAAO,EAAGA,GAAOF,GAAME,KACxGg9K,GAAWh9K,GAAO,CAAC,EAAI,UAAUA,EAAI,EAEvCjZ,GAAS,MAAM,OAAQi2L,EAAU,CACnC,CACF,CACA,SAASC,GAAexhM,GAAO,CAC7BshM,GAAWthM,GAAOkhM,EAAU,CAC9B,CACA,SAASO,GAAezhM,GAAO,CAC7BshM,GAAWthM,GAAOmhM,EAAU,CAC9B,CACA,SAASO,GAAmB1hM,GAAO,CACjCshM,GAAWthM,GAAOohM,EAAc,CAClC,CACA,SAASO,GAAmB3hM,GAAO,CACjCshM,GAAWthM,GAAOqhM,EAAc,CAClC,CACA,SAASO,GAAWC,GAAU,CAC5B,IAAIC,GAAapE,EAAWmE,GAAU,OAAQrB,EAAYX,GAAU,WAAW,CAAC,EAChF,OAAoB3nL,EAAM,eAAe4pL,EAAU,EAAiB5pL,EAAM,aAAa4pL,GAAY,CACjG,SAAU,CAACd,EACjB,CAAK,EAAIc,EACP,CACA,SAASC,GAAWC,GAAU,CAC5B,IAAIC,GAAavE,EAAWsE,GAAU,OAAQxB,EAAYV,GAAU,WAAW,CAAC,EAChF,OAAoB5nL,EAAM,eAAe+pL,EAAU,EAAiB/pL,EAAM,aAAa+pL,GAAY,CACjG,SAAU,CAAChB,EACjB,CAAK,EAAIgB,EACP,CACA,SAASC,GAAWliM,GAAO,EACrBA,GAAM,OAAS,SAAWA,GAAM,UAAYo+D,GAAQ,QACtD8Q,GAAagxH,EAAgB,CAEjC,CACA,IAAIiC,GAAW,KACXC,GAA2B9oI,GAAU/nD,EAAO,CAC9C,KAAM,GACN,KAAM,EACV,CAAG,EACG8wL,GAAY7C,GAA0BtnL,EAAM,cAAc,KAAM,CAClE,UAAW,GAAG,OAAOolC,EAAW,aAAa,CACjD,EAAKkiJ,EAAUj4G,EAAO,CAACA,IAAU,EAAI,GAAK9oF,GAAU,GAAK49L,EAAW,EAAG59L,GAAU49L,EAAW90G,EAAQA,EAAQ9oF,GAAU49L,CAAQ,CAAC,CAAC,EAC1HiG,GAAW,KACX7B,GAAW1C,GAAc,OAAW1B,EAAU90G,CAAK,EAIvD,GAAIo3G,GAAoBp3G,GAAS80G,EAC/B,OAAO,KAET,IAAIkG,GAAY,CAAA,EACZC,GAAa,CACf,cAAellJ,EACf,QAAS4xB,GACT,WAAYoyH,GACZ,UAAW9D,EACX,WAAYE,EACZ,KAAM,EACV,EACMmE,GAAWpjM,GAAU,EAAI,EAAIA,GAAU,EAAI,EAC3CujM,GAAWvjM,GAAU,EAAIgiM,GAAWhiM,GAAU,EAAIgiM,GAClDnE,GAAWwC,GAAmBA,EAAgB,SAI9C2D,GAAazkL,GAAQuhL,CAAM,IAAM,SAAWA,EAAO,SAAW,CAACA,EAC/DjC,GAAahB,GACboG,GAAc,KACdnD,IAEEjD,KACE,OAAOA,IAAa,UACtBgB,GAA0BplL,EAAM,cAAc,SAAU,CACtD,KAAM,SACN,QAASgqL,GACT,QAASA,EACnB,EAAW93J,EAAO,eAAe,EAEzBkzJ,GAA0BplL,EAAM,cAAc,OAAQ,CACpD,QAASgqL,GACT,QAASA,EACnB,EAAW5F,EAAQ,EAEbgB,GAA0BplL,EAAM,cAAc,KAAM,CAClD,MAAOslL,EAAY,GAAG,OAAOpzJ,EAAO,OAAO,EAAE,OAAO3rC,GAAS,GAAG,EAAE,OAAOgiM,EAAQ,EAAI,KACrF,UAAW,GAAG,OAAOnjJ,EAAW,eAAe,CACvD,EAASggJ,EAAU,GAEfoF,GAA2BxqL,EAAM,cAAc,KAAM,CACnD,MAAOslL,EAAY,GAAG,OAAO/+L,GAAS,GAAG,EAAE,OAAOgiM,EAAQ,EAAI,KAC9D,UAAW,GAAG,OAAOnjJ,EAAW,eAAe,CACrD,EAAOmlJ,GAAavC,GAAgChoL,EAAM,cAAc,QAAS,CAC3E,KAAM,OACN,aAAckyB,EAAO,QACrB,MAAO81J,GACP,SAAUn0K,EACV,UAAWw+H,GACX,QAAS8xB,GACT,SAAUA,GACV,OAAQF,GACR,KAAM,CACZ,CAAK,EAAgBjkK,EAAM,cAAc,OAAQ,CAC3C,UAAW,GAAG,OAAOolC,EAAW,QAAQ,CAC9C,EAAO,GAAG,EAAGmjJ,EAAQ,GAInB,IAAIkC,GAAiB5D,EAAgB,EAAI,EACzC,GAAI0B,IAAY,EAAIkC,GAAiB,EAAG,CACjClC,IACH8B,GAAU,KAAmBrqL,EAAM,cAAcqlL,GAAOx/K,GAAS,CAAA,EAAIykL,GAAY,CAC/E,IAAK,UACL,KAAM,EACN,UAAW,GAAG,OAAOllJ,EAAW,gBAAgB,CACxD,CAAO,CAAC,CAAC,EAEL,QAAS5+C,GAAI,EAAGA,IAAK+hM,GAAU/hM,IAAK,EAClC6jM,GAAU,KAAmBrqL,EAAM,cAAcqlL,GAAOx/K,GAAS,CAAA,EAAIykL,GAAY,CAC/E,IAAK9jM,GACL,KAAMA,GACN,OAAQD,KAAYC,EAC5B,CAAO,CAAC,CAAC,CAEP,KAAO,CACL,IAAIkkM,GAAgB7D,EAAgB30J,EAAO,OAASA,EAAO,OACvDy4J,GAAgB9D,EAAgB30J,EAAO,OAASA,EAAO,OACvD04J,GAAkBpF,EAAW4C,GAAc,YAAaE,EAAYb,EAAc,WAAW,CAAC,EAC9FoD,GAAkBrF,EAAW6C,GAAc,YAAaC,EAAYZ,GAAc,WAAW,CAAC,EAC9Ff,IACFsD,GAAWW,GAA+B5qL,EAAM,cAAc,KAAM,CAClE,MAAOslL,EAAYoF,GAAgB,KACnC,IAAK,OACL,QAASxB,GACT,SAAU,EACV,UAAWM,GACX,UAAWhkL,GAAW,GAAG,OAAO4/B,EAAW,YAAY,EAAGh+B,EAAgB,CAAA,EAAI,GAAG,OAAOg+B,EAAW,wBAAwB,EAAG,CAAC,CAACqiJ,CAAY,CAAC,CACrJ,EAASmD,EAAe,EAAI,KACtBR,GAAWS,GAA+B7qL,EAAM,cAAc,KAAM,CAClE,MAAOslL,EAAYqF,GAAgB,KACnC,IAAK,OACL,QAASxB,GACT,SAAU,EACV,UAAWM,GACX,UAAWjkL,GAAW,GAAG,OAAO4/B,EAAW,YAAY,EAAGh+B,EAAgB,CAAA,EAAI,GAAG,OAAOg+B,EAAW,wBAAwB,EAAG,CAAC,CAACsiJ,EAAY,CAAC,CACrJ,EAASmD,EAAe,EAAI,MAExB,IAAI7uK,GAAO,KAAK,IAAI,EAAGz1B,GAAUkkM,EAAc,EAC3CxuK,GAAQ,KAAK,IAAI11B,GAAUkkM,GAAgBlC,EAAQ,EACnDhiM,GAAU,GAAKkkM,KACjBxuK,GAAQ,EAAIwuK,GAAiB,GAE3BlC,GAAWhiM,IAAWkkM,KACxBzuK,GAAOusK,GAAWkC,GAAiB,GAErC,QAASt8K,GAAK6N,GAAM7N,IAAM8N,GAAO9N,IAAM,EACrCk8K,GAAU,KAAmBrqL,EAAM,cAAcqlL,GAAOx/K,GAAS,CAAA,EAAIykL,GAAY,CAC/E,IAAKn8K,GACL,KAAMA,GACN,OAAQ5nB,KAAY4nB,EAC5B,CAAO,CAAC,CAAC,EAQL,GANI5nB,GAAU,GAAKkkM,GAAiB,GAAKlkM,KAAY,IACnD8jM,GAAU,CAAC,EAAiBrqL,EAAM,aAAaqqL,GAAU,CAAC,EAAG,CAC3D,UAAW7kL,GAAW,GAAG,OAAO4/B,EAAW,uBAAuB,EAAGilJ,GAAU,CAAC,EAAE,MAAM,SAAS,CACzG,CAAO,EACDA,GAAU,QAAQJ,EAAQ,GAExB1B,GAAWhiM,IAAWkkM,GAAiB,GAAKlkM,KAAYgiM,GAAW,EAAG,CACxE,IAAIuC,GAAUT,GAAUA,GAAU,OAAS,CAAC,EAC5CA,GAAUA,GAAU,OAAS,CAAC,EAAiBrqL,EAAM,aAAa8qL,GAAS,CACzE,UAAWtlL,GAAW,GAAG,OAAO4/B,EAAW,wBAAwB,EAAG0lJ,GAAQ,MAAM,SAAS,CACrG,CAAO,EACDT,GAAU,KAAKD,EAAQ,CACzB,CACIpuK,KAAS,GACXquK,GAAU,QAAsBrqL,EAAM,cAAcqlL,GAAOx/K,GAAS,CAAA,EAAIykL,GAAY,CAClF,IAAK,EACL,KAAM,CACd,CAAO,CAAC,CAAC,EAEDruK,KAAUssK,IACZ8B,GAAU,KAAmBrqL,EAAM,cAAcqlL,GAAOx/K,GAAS,CAAA,EAAIykL,GAAY,CAC/E,IAAK/B,GACL,KAAMA,EACd,CAAO,CAAC,CAAC,CAEP,CACA,IAAIxxL,GAAO2yL,GAAWC,EAAQ,EAC9B,GAAI5yL,GAAM,CACR,IAAIg0L,GAAe,CAACjC,IAAW,CAACP,GAChCxxL,GAAoBiJ,EAAM,cAAc,KAAM,CAC5C,MAAOslL,EAAYpzJ,EAAO,UAAY,KACtC,QAAS82J,GACT,SAAU+B,GAAe,KAAO,EAChC,UAAWzB,GACX,UAAW9jL,GAAW,GAAG,OAAO4/B,EAAW,OAAO,EAAGh+B,EAAgB,CAAA,EAAI,GAAG,OAAOg+B,EAAW,WAAW,EAAG2lJ,EAAY,CAAC,EACzH,gBAAiBA,EACvB,EAAOh0L,EAAI,CACT,CACA,IAAItQ,GAAOojM,GAAWC,EAAQ,EAC9B,GAAIrjM,GAAM,CACR,IAAIukM,GAAcC,GACd5D,GACF2D,GAAe,CAACjC,GAChBkC,GAAenC,GAAU,EAAI,OAE7BkC,GAAe,CAACjC,IAAW,CAACR,GAC5B0C,GAAeD,GAAe,KAAO,GAEvCvkM,GAAoBuZ,EAAM,cAAc,KAAM,CAC5C,MAAOslL,EAAYpzJ,EAAO,UAAY,KACtC,QAAS+2J,GACT,SAAUgC,GACV,UAAW1B,GACX,UAAW/jL,GAAW,GAAG,OAAO4/B,EAAW,OAAO,EAAGh+B,EAAgB,CAAA,EAAI,GAAG,OAAOg+B,EAAW,WAAW,EAAG4lJ,EAAY,CAAC,EACzH,gBAAiBA,EACvB,EAAOvkM,EAAI,CACT,CACA,IAAI+kG,GAAMhmF,GAAW4/B,EAAWga,EAAWh4C,EAAgBA,EAAgBA,EAAgBA,EAAgBA,EAAgB,CAAA,EAAI,GAAG,OAAOg+B,EAAW,QAAQ,EAAGm/D,IAAU,OAAO,EAAG,GAAG,OAAOn/D,EAAW,SAAS,EAAGm/D,IAAU,QAAQ,EAAG,GAAG,OAAOn/D,EAAW,MAAM,EAAGm/D,IAAU,KAAK,EAAG,GAAG,OAAOn/D,EAAW,SAAS,EAAGiiJ,CAAM,EAAG,GAAG,OAAOjiJ,EAAW,WAAW,EAAGvxB,CAAQ,CAAC,EAC/W,OAAoB7T,EAAM,cAAc,KAAM6F,GAAS,CACrD,UAAW2lF,GACX,MAAO9vE,EACP,IAAKmsK,EACT,EAAKqC,EAAwB,EAAGC,GAAWpzL,GAAMswL,EAASmD,GAAcH,GAAW5jM,GAAmBuZ,EAAM,cAAc+jL,GAAS,CAC/H,OAAQ7xJ,EACR,cAAekT,EACf,SAAUvxB,EACV,gBAAiBmyK,EACjB,WAAY0C,GACZ,SAAUvE,EACV,gBAAiBF,EACjB,QAASwE,GAA2BzxH,GAAe,KACnD,SAAUouH,GACV,gBAAiBb,EACjB,kBAAmBC,CACvB,CAAG,CAAC,CACJ,EACI,QAAQ,IAAI,WAAa,eAC3BhyJ,GAAW,YAAc,cCzb3B,MAAM04J,GAA6B5tK,GAAS,CAC1C,KAAM,CACJ,aAAA0pB,CACJ,EAAM1pB,EACJ,MAAO,CACL,CAAC,GAAG0pB,CAAY,WAAW,EAAG,CAC5B,aAAc,CACZ,OAAQ,cACR,CAAC,GAAGA,CAAY,YAAY,EAAG,CAC7B,MAAO1pB,EAAM,kBACb,OAAQ,aAClB,CACA,EACM,kBAAmB,CACjB,OAAQ,cACR,CAAC,GAAG0pB,CAAY,YAAY,EAAG,CAC7B,MAAO1pB,EAAM,kBACb,OAAQ,aAClB,CACA,CACA,EACI,CAAC,IAAI0pB,CAAY,WAAW,EAAG,CAC7B,OAAQ,cACR,CAAC,GAAGA,CAAY,OAAO,EAAG,CACxB,OAAQ,cACR,gBAAiB,cACjB,oBAAqB,CACnB,gBAAiB,aAC3B,EACQ,EAAG,CACD,MAAO1pB,EAAM,kBACb,gBAAiB,cACjB,OAAQ,OACR,OAAQ,aAClB,EACQ,WAAY,CACV,YAAaA,EAAM,YACnB,gBAAiBA,EAAM,qBACvB,oBAAqB,CACnB,gBAAiBA,EAAM,oBACnC,EACU,EAAG,CACD,MAAOA,EAAM,uBACzB,CACA,CACA,EACM,CAAC,GAAG0pB,CAAY,YAAY,EAAG,CAC7B,MAAO1pB,EAAM,kBACb,OAAQ,cACR,oBAAqB,CACnB,gBAAiB,aAC3B,EACQ,CAAC,GAAG0pB,CAAY,UAAU,EAAG,CAC3B,gBAAiB,cACjB,oBAAqB,CACnB,gBAAiB,aAC7B,CACA,CACA,EACM,CAAC,GAAGA,CAAY,eAAe,EAAG,CAChC,MAAO1pB,EAAM,iBACrB,EACM,CAAC,GAAG0pB,CAAY,eAAeA,CAAY,YAAY,EAAG,CACxD,CAAC,GAAGA,CAAY,iBAAiB,EAAG,CAClC,QAAS,CACnB,EACQ,CAAC,GAAGA,CAAY,gBAAgB,EAAG,CACjC,QAAS,CACnB,CACA,CACA,EACI,CAAC,IAAIA,CAAY,SAAS,EAAG,CAC3B,CAAC,GAAGA,CAAY,UAAUA,CAAY,OAAO,EAAG,CAC9C,CAAC,IAAIA,CAAY,aAAaA,CAAY,YAAY,EAAG,CACvD,oBAAqB,CACnB,gBAAiB,aAC7B,CACA,CACA,CACA,CACA,CACA,EACMmkJ,GAAyB7tK,GAAS,CACtC,KAAM,CACJ,aAAA0pB,CACJ,EAAM1pB,EACJ,MAAO,CACL,CAAC,IAAI0pB,CAAY,SAASA,CAAY,iBAAiBA,CAAY,SAASA,CAAY,eAAe,EAAG,CACxG,OAAQ1pB,EAAM,WACd,WAAYc,GAAKd,EAAM,UAAU,CACvC,EACI,CAAC,IAAI0pB,CAAY,SAASA,CAAY,OAAO,EAAG,CAC9C,SAAU1pB,EAAM,WAChB,OAAQA,EAAM,WACd,OAAQ,EACR,WAAYc,GAAKd,EAAM,KAAKA,EAAM,UAAU,EAAE,IAAI,CAAC,EAAE,MAAK,CAAE,CAClE,EACI,CAAC,IAAI0pB,CAAY,SAASA,CAAY,WAAWA,CAAY,SAASA,CAAY,OAAO,EAAG,CAC1F,SAAU1pB,EAAM,WAChB,OAAQA,EAAM,WACd,OAAQ,EACR,WAAYc,GAAKd,EAAM,UAAU,CACvC,EACI,CAAC,IAAI0pB,CAAY,aAAaA,CAAY,YAAY,EAAG,CACvD,CAAC,GAAGA,CAAY,UAAUA,CAAY,OAAO,EAAG,CAC9C,CAAC,WAAWA,CAAY,YAAY,EAAG,CACrC,gBAAiB1pB,EAAM,gBACjC,EACQ,CAAC,YAAY0pB,CAAY,YAAY,EAAG,CACtC,gBAAiB1pB,EAAM,iBACjC,EACQ,CAAC,IAAI0pB,CAAY,mBAAmBA,CAAY,YAAY,EAAG,CAC7D,gBAAiB,aAC3B,CACA,CACA,EACI,CAAC;AAAA,OACEA,CAAY,SAASA,CAAY,SAASA,CAAY;AAAA,OACtDA,CAAY,SAASA,CAAY,SAASA,CAAY;AAAA,KACxD,EAAG,CACF,gBAAiB,cACjB,YAAa,cACb,WAAY,CACV,OAAQ1pB,EAAM,WACd,WAAYc,GAAKd,EAAM,UAAU,CACzC,CACA,EACI,CAAC,IAAI0pB,CAAY,SAASA,CAAY,gBAAgBA,CAAY,SAASA,CAAY,YAAY,EAAG,CACpG,OAAQ1pB,EAAM,WACd,gBAAiB,EACjB,WAAYc,GAAKd,EAAM,UAAU,CACvC,EACI,CAAC,IAAI0pB,CAAY,SAASA,CAAY,UAAU,EAAG,CACjD,kBAAmB1pB,EAAM,uCACzB,iBAAkB,CAChB,IAAKA,EAAM,yBACnB,EACM,iBAAkB,CAChB,OAAQA,EAAM,WACd,WAAYc,GAAKd,EAAM,UAAU,EACjC,MAAO,OAAO,OAAO,OAAO,OAAO,GAAIqtI,GAAmBrtI,CAAK,CAAC,EAAG,CACjE,MAAOA,EAAM,oCACb,OAAQA,EAAM,eACxB,CAAS,CACT,CACA,CACA,CACA,EACM8tK,GAA2B9tK,GAAS,CACxC,KAAM,CACJ,aAAA0pB,CACJ,EAAM1pB,EACJ,MAAO,CACL,CAAC;AAAA,OACE0pB,CAAY,WAAWA,CAAY;AAAA,OACnCA,CAAY,WAAWA,CAAY;AAAA,KACrC,EAAG,CACF,OAAQ1pB,EAAM,WACd,WAAYc,GAAKd,EAAM,UAAU,EACjC,cAAe,MACf,CAAC,GAAG0pB,CAAY,YAAY,EAAG,CAC7B,OAAQ1pB,EAAM,WACd,gBAAiB,cACjB,OAAQ,EACR,UAAW,CACT,gBAAiBA,EAAM,gBACjC,EACQ,WAAY,CACV,gBAAiBA,EAAM,iBACjC,EACQ,WAAY,CACV,OAAQA,EAAM,WACd,WAAYc,GAAKd,EAAM,UAAU,CAC3C,CACA,CACA,EACI,CAAC,IAAI0pB,CAAY,WAAWA,CAAY,eAAe,EAAG,CACxD,QAAS,eACT,OAAQ1pB,EAAM,WACd,gBAAiBA,EAAM,SACvB,MAAO,CACL,UAAW,aACX,OAAQ,OACR,QAAS,KAAKc,GAAKd,EAAM,2BAA2B,CAAC,GACrD,UAAW,SACX,gBAAiBA,EAAM,YACvB,OAAQ,GAAGc,GAAKd,EAAM,SAAS,CAAC,IAAIA,EAAM,QAAQ,IAAIA,EAAM,WAAW,GACvE,aAAcA,EAAM,aACpB,QAAS,OACT,WAAY,gBAAgBA,EAAM,iBAAiB,GACnD,MAAO,UACP,UAAW,CACT,YAAaA,EAAM,YAC7B,EACQ,UAAW,CACT,YAAaA,EAAM,kBACnB,UAAW,GAAGc,GAAKd,EAAM,kBAAkB,CAAC,MAAMc,GAAKd,EAAM,mBAAmB,CAAC,IAAIA,EAAM,cAAc,EACnH,EACQ,cAAe,CACb,MAAOA,EAAM,kBACb,gBAAiBA,EAAM,yBACvB,YAAaA,EAAM,YACnB,OAAQ,aAClB,CACA,CACA,CACA,CACA,EACM+tK,GAAyB/tK,GAAS,CACtC,KAAM,CACJ,aAAA0pB,CACJ,EAAM1pB,EACJ,MAAO,CACL,CAAC,GAAG0pB,CAAY,eAAeA,CAAY,YAAY,EAAG,CACxD,QAAS,EACT,CAAC,GAAGA,CAAY,iBAAiB,EAAG,CAClC,SAAU,WACV,CAAC,GAAGA,CAAY,iBAAiB,EAAG,CAClC,MAAO1pB,EAAM,aACb,SAAUA,EAAM,WAChB,QAAS,EACT,WAAY,OAAOA,EAAM,iBAAiB,GAC1C,QAAS,CACP,IAAK,EACL,eAAgB,EAChB,OAAQ,EACR,iBAAkB,EAClB,OAAQ,MACpB,CACA,EACQ,CAAC,GAAG0pB,CAAY,gBAAgB,EAAG,CACjC,SAAU,WACV,IAAK,EACL,eAAgB,EAChB,OAAQ,EACR,iBAAkB,EAClB,QAAS,QACT,OAAQ,OACR,MAAO1pB,EAAM,kBACb,cAAeA,EAAM,gCACrB,UAAW,SACX,WAAYA,EAAM,6BAClB,QAAS,EACT,WAAY,OAAOA,EAAM,iBAAiB,EACpD,CACA,EACM,UAAW,CACT,CAAC,GAAG0pB,CAAY,iBAAiB,EAAG,CAClC,QAAS,CACnB,EACQ,CAAC,GAAGA,CAAY,gBAAgB,EAAG,CACjC,QAAS,CACnB,CACA,CACA,EACI,CAAC;AAAA,MACCA,CAAY;AAAA,MACZA,CAAY;AAAA,MACZA,CAAY;AAAA,KACb,EAAG,CACF,gBAAiB1pB,EAAM,QAC7B,EACI,CAAC;AAAA,MACC0pB,CAAY;AAAA,MACZA,CAAY;AAAA,MACZA,CAAY;AAAA,MACZA,CAAY;AAAA,KACb,EAAG,CACF,QAAS,eACT,SAAU1pB,EAAM,SAChB,OAAQA,EAAM,SACd,MAAOA,EAAM,UACb,WAAYA,EAAM,WAClB,WAAYc,GAAKd,EAAM,QAAQ,EAC/B,UAAW,SACX,cAAe,SACf,UAAW,OACX,aAAcA,EAAM,aACpB,OAAQ,UACR,WAAY,OAAOA,EAAM,iBAAiB,EAChD,EACI,CAAC,GAAG0pB,CAAY,UAAUA,CAAY,OAAO,EAAG,CAC9C,QAAS,EACT,OAAQ,CACN,MAAO1pB,EAAM,UACb,OAAQ,UACR,WAAY,MACpB,EACM,CAAC,GAAG0pB,CAAY,YAAY,EAAG,CAC7B,QAAS,QACT,MAAO,OACP,OAAQ,OACR,QAAS,EACT,SAAU1pB,EAAM,WAChB,UAAW,SACX,gBAAiB,cACjB,OAAQ,GAAGc,GAAKd,EAAM,SAAS,CAAC,IAAIA,EAAM,QAAQ,eAClD,aAAcA,EAAM,aACpB,QAAS,OACT,WAAY,OAAOA,EAAM,iBAAiB,EAClD,EACM,CAAC,WAAW0pB,CAAY,YAAY,EAAG,CACrC,gBAAiB1pB,EAAM,gBAC/B,EACM,CAAC,YAAY0pB,CAAY,YAAY,EAAG,CACtC,gBAAiB1pB,EAAM,iBAC/B,EACM,CAAC,IAAI0pB,CAAY,iBAAiB,EAAG,CACnC,CAAC,GAAGA,CAAY,YAAY,EAAG,CAC7B,gBAAiB,aAC3B,CACA,CACA,EACI,CAAC,GAAGA,CAAY,QAAQ,EAAG,CACzB,gBAAiB1pB,EAAM,+BACvB,kBAAmBA,EAAM,gCAC/B,EACI,CAAC,GAAG0pB,CAAY,UAAU,EAAG,CAC3B,QAAS,eACT,kBAAmB1pB,EAAM,OACzB,cAAe,SACf,iBAAkB,CAChB,QAAS,eACT,MAAO,MACf,EACM,iBAAkB,CAChB,QAAS,eACT,OAAQA,EAAM,cACd,kBAAmBA,EAAM,SACzB,WAAYc,GAAKd,EAAM,aAAa,EACpC,cAAe,MACf,MAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIstI,GAAmBttI,CAAK,CAAC,EAAG0nH,GAAqB1nH,EAAO,CAC3G,YAAaA,EAAM,YACnB,iBAAkBA,EAAM,kBACxB,kBAAmBA,EAAM,aACzB,aAAcA,EAAM,YAC9B,CAAS,CAAC,EAAG,CACH,cAAe,OAAO,OAAO,CAAA,EAAIm/C,GAAiBn/C,CAAK,CAAC,EACxD,MAAOA,EAAM,KAAKA,EAAM,eAAe,EAAE,IAAI,IAAI,EAAE,MAAK,EACxD,OAAQA,EAAM,cACd,UAAW,aACX,OAAQ,EACR,kBAAmBA,EAAM,SACzB,gBAAiBA,EAAM,QACjC,CAAS,CACT,CACA,CACA,CACA,EACMguK,GAAyBhuK,GAAS,CACtC,KAAM,CACJ,aAAA0pB,CACJ,EAAM1pB,EACJ,MAAO,CACL,CAAC,GAAG0pB,CAAY,OAAO,EAAG,CACxB,QAAS,eACT,SAAU1pB,EAAM,SAChB,OAAQA,EAAM,SACd,gBAAiBA,EAAM,SACvB,WAAYA,EAAM,WAClB,WAAYc,GAAKd,EAAM,KAAKA,EAAM,QAAQ,EAAE,IAAI,CAAC,EAAE,OAAO,EAC1D,UAAW,SACX,cAAe,SACf,UAAW,OACX,gBAAiBA,EAAM,OACvB,OAAQ,GAAGc,GAAKd,EAAM,SAAS,CAAC,IAAIA,EAAM,QAAQ,eAClD,aAAcA,EAAM,aACpB,QAAS,EACT,OAAQ,UACR,WAAY,OACZ,EAAG,CACD,QAAS,QACT,QAAS,KAAKc,GAAKd,EAAM,2BAA2B,CAAC,GACrD,MAAOA,EAAM,UACb,UAAW,CACT,eAAgB,MAC1B,CACA,EACM,CAAC,SAAS0pB,CAAY,eAAe,EAAG,CACtC,UAAW,CACT,WAAY,OAAO1pB,EAAM,iBAAiB,GAC1C,gBAAiBA,EAAM,gBACjC,EACQ,WAAY,CACV,gBAAiBA,EAAM,iBACjC,CACA,EACM,WAAY,CACV,WAAYA,EAAM,iBAClB,gBAAiBA,EAAM,aACvB,YAAaA,EAAM,aACnB,EAAG,CACD,MAAOA,EAAM,YACvB,EACQ,UAAW,CACT,YAAaA,EAAM,iBAC7B,EACQ,YAAa,CACX,MAAOA,EAAM,iBACvB,CACA,CACA,CACA,CACA,EACMiuK,GAAqBjuK,GAAS,CAClC,KAAM,CACJ,aAAA0pB,CACJ,EAAM1pB,EACJ,MAAO,CACL,CAAC0pB,CAAY,EAAG,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,GAAIsC,GAAehsB,CAAK,CAAC,EAAG,CAC1J,QAAS,OACT,UAAW,CACT,eAAgB,OACxB,EACM,WAAY,CACV,eAAgB,QACxB,EACM,QAAS,CACP,eAAgB,KACxB,EACM,SAAU,CACR,OAAQ,EACR,QAAS,EACT,UAAW,MACnB,EACM,WAAY,CACV,QAAS,QACT,MAAO,OACP,OAAQ,EACR,SAAU,SACV,WAAY,SACZ,QAAS,IACjB,EACM,CAAC,GAAG0pB,CAAY,aAAa,EAAG,CAC9B,QAAS,eACT,OAAQ1pB,EAAM,SACd,gBAAiBA,EAAM,SACvB,WAAYc,GAAKd,EAAM,KAAKA,EAAM,QAAQ,EAAE,IAAI,CAAC,EAAE,OAAO,EAC1D,cAAe,QACvB,CACA,CAAK,EAAGguK,GAAuBhuK,CAAK,CAAC,EAAG+tK,GAAuB/tK,CAAK,CAAC,EAAG8tK,GAAyB9tK,CAAK,CAAC,EAAG6tK,GAAuB7tK,CAAK,CAAC,EAAG4tK,GAA2B5tK,CAAK,CAAC,EAAG,CAExK,CAAC,sCAAsCA,EAAM,QAAQ,KAAK,EAAG,CAC3D,CAAC,GAAG0pB,CAAY,OAAO,EAAG,CACxB,wCAAyC,CACvC,QAAS,MACrB,CACA,CACA,EACM,CAAC,sCAAsC1pB,EAAM,QAAQ,KAAK,EAAG,CAC3D,CAAC,GAAG0pB,CAAY,UAAU,EAAG,CAC3B,QAAS,MACnB,CACA,CACA,CAAK,EAED,CAAC,IAAI1pB,EAAM,YAAY,MAAM,EAAG,CAC9B,UAAW,KACjB,CACA,CACA,EACMkuK,GAA0BluK,GAAS,CACvC,KAAM,CACJ,aAAA0pB,CACJ,EAAM1pB,EACJ,MAAO,CACL,CAAC,GAAG0pB,CAAY,QAAQA,CAAY,YAAY,EAAG,CACjD,CAAC,GAAGA,CAAY,OAAO,EAAG,OAAO,OAAO,CAAA,EAAImD,GAAc7sB,CAAK,CAAC,EAChE,CAAC,GAAG0pB,CAAY,eAAeA,CAAY,YAAY,EAAG,CACxD,kBAAmB,OAAO,OAAO,CAC/B,CAAC,GAAGA,CAAY,iBAAiB,EAAG,CAClC,QAAS,CACrB,EACU,CAAC,GAAGA,CAAY,gBAAgB,EAAG,CACjC,QAAS,CACrB,CACA,EAAWkD,GAAgB5sB,CAAK,CAAC,CACjC,EACM,CAAC,GAAG0pB,CAAY,UAAUA,CAAY,OAAO,EAAG,CAC9C,CAAC,mBAAmBA,CAAY,YAAY,EAAG,OAAO,OAAO,CAAA,EAAIkD,GAAgB5sB,CAAK,CAAC,CAC/F,CACA,CACA,CACA,EACa69C,GAAwB79C,GAAS,OAAO,OAAO,CAC1D,OAAQA,EAAM,iBACd,SAAUA,EAAM,cAChB,WAAYA,EAAM,gBAClB,aAAcA,EAAM,iBACpB,WAAYA,EAAM,iBAClB,wBAAyBA,EAAM,kBAC/B,qBAAsBA,EAAM,4BAC5B,YAAaA,EAAM,iBACnB,0BAA2B,CAC7B,EAAG8rI,GAAmB9rI,CAAK,CAAC,EACf09C,GAAe19C,GAASimB,GAAWjmB,EAAO,CACrD,mBAAoB,EACpB,uCAAwCA,EAAM,KAAKA,EAAM,SAAS,EAAE,IAAI,CAAC,EAAE,MAAK,EAChF,oCAAqCA,EAAM,KAAKA,EAAM,eAAe,EAAE,IAAI,GAAG,EAAE,MAAK,EACrF,4BAA6BA,EAAM,KAAKA,EAAM,SAAS,EAAE,IAAI,GAAG,EAAE,MAAK,EACvE,gCAAiCA,EAAM,KAAKA,EAAM,SAAS,EAAE,IAAI,CAAC,EAAE,MAAK,EACzE,iCAAkCA,EAAM,SACxC,+BAAgCA,EAAM,SACtC,6BAA8B,QAChC,EAAG6rI,GAAe7rI,CAAK,CAAC,EAExBmuK,GAAe9mJ,GAAc,aAAcrnB,GAAS,CAClD,MAAMouK,EAAkB1wH,GAAa19C,CAAK,EAC1C,MAAO,CAACiuK,GAAmBG,CAAe,EAAGF,GAAwBE,CAAe,CAAC,CACvF,EAAGvwH,EAAqB,EC/flBwwH,GAAmBruK,GAAS,CAChC,KAAM,CACJ,aAAA0pB,CACJ,EAAM1pB,EACJ,MAAO,CACL,CAAC,GAAG0pB,CAAY,GAAGA,CAAY,YAAYA,CAAY,iBAAiBA,CAAY,QAAQ,EAAG,CAC7F,aAAc,CACZ,CAAC,GAAGA,CAAY,YAAY,EAAG,CAC7B,YAAa1pB,EAAM,WAC7B,CACA,EACM,kBAAmB,CACjB,CAAC,GAAG0pB,CAAY,YAAY,EAAG,CAC7B,YAAa1pB,EAAM,WAC7B,CACA,EACM,CAAC,GAAG0pB,CAAY,UAAUA,CAAY,YAAY,EAAG,CACnD,gBAAiB1pB,EAAM,yBACvB,YAAaA,EAAM,YACnB,CAAC,eAAe0pB,CAAY,eAAe,EAAG,CAC5C,gBAAiB1pB,EAAM,yBACvB,YAAaA,EAAM,YACnB,EAAG,CACD,MAAOA,EAAM,iBACzB,CACA,EACQ,CAAC,IAAI0pB,CAAY,cAAc,EAAG,CAChC,gBAAiB1pB,EAAM,oBACjC,CACA,EACM,CAAC,GAAG0pB,CAAY,UAAUA,CAAY,OAAO,EAAG,CAC9C,iBAAkB,CAChB,gBAAiB1pB,EAAM,yBACvB,YAAaA,EAAM,YACnB,MAAOA,EAAM,iBACvB,EACQ,CAAC,GAAG0pB,CAAY,YAAY,EAAG,CAC7B,gBAAiB1pB,EAAM,yBACvB,YAAaA,EAAM,WAC7B,CACA,CACA,EACI,CAAC,GAAG0pB,CAAY,GAAGA,CAAY,iBAAiBA,CAAY,QAAQ,EAAG,CACrE,CAAC,GAAGA,CAAY,UAAUA,CAAY,OAAO,EAAG,CAC9C,iBAAkB,CAChB,YAAa1pB,EAAM,kBACnB,gBAAiBA,EAAM,MACjC,EACQ,CAAC,GAAG0pB,CAAY,YAAY,EAAG,CAC7B,gBAAiB1pB,EAAM,WACvB,YAAaA,EAAM,WAC7B,EACQ,CAAC,WAAW0pB,CAAY,YAAY,EAAG,CACrC,YAAa1pB,EAAM,aACnB,gBAAiBA,EAAM,OACvB,MAAOA,EAAM,YACvB,EACQ,CAAC,IAAI0pB,CAAY,WAAW,EAAG,CAC7B,CAAC,GAAGA,CAAY,YAAY,EAAG,CAC7B,YAAa1pB,EAAM,YACnB,MAAOA,EAAM,iBACzB,CACA,CACA,EACM,CAAC,GAAG0pB,CAAY,OAAO,EAAG,CACxB,gBAAiB1pB,EAAM,OACvB,OAAQ,GAAGc,GAAKd,EAAM,SAAS,CAAC,IAAIA,EAAM,QAAQ,IAAIA,EAAM,WAAW,GACvE,CAAC,eAAe0pB,CAAY,eAAe,EAAG,CAC5C,YAAa1pB,EAAM,aACnB,gBAAiBA,EAAM,OACvB,EAAG,CACD,MAAOA,EAAM,YACzB,CACA,EACQ,WAAY,CACV,YAAaA,EAAM,YAC7B,CACA,CACA,CACA,CACA,EACAsuK,GAAezkJ,GAAqB,CAAC,aAAc,UAAU,EAAG7pB,GAAS,CACvE,MAAMouK,EAAkB1wH,GAAa19C,CAAK,EAC1C,MAAO,CAACquK,GAAiBD,CAAe,CAAC,CAC3C,EAAGvwH,EAAqB,ECtFT,SAAS0wH,GAAmBtH,EAAiB,CAC1D,OAAO74K,EAAAA,QAAQ,IACT,OAAO64K,GAAoB,UACtB,CAACA,EAAiB,EAAE,EAEzBA,GAAmB,OAAOA,GAAoB,SACzC,CAAC,GAAMA,CAAe,EAExB,CAAC,OAAW,MAAS,EAC3B,CAACA,CAAe,CAAC,CACtB,CCTA,IAAIp8I,GAAgC,SAAU/kD,EAAGe,EAAG,CAClD,IAAId,EAAI,CAAA,EACR,QAASe,KAAKhB,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGgB,CAAC,GAAKD,EAAE,QAAQC,CAAC,EAAI,IAAGf,EAAEe,CAAC,EAAIhB,EAAEgB,CAAC,GAC/F,GAAIhB,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WAAY,QAAS,EAAI,EAAGgB,EAAI,OAAO,sBAAsBhB,CAAC,EAAG,EAAIgB,EAAE,OAAQ,IAClID,EAAE,QAAQC,EAAE,CAAC,CAAC,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKhB,EAAGgB,EAAE,CAAC,CAAC,IAAGf,EAAEe,EAAE,CAAC,CAAC,EAAIhB,EAAEgB,EAAE,CAAC,CAAC,GAElG,OAAOf,CACT,EAmBA,MAAMmvC,GAAan5B,GAAS,CAC1B,KAAM,CACF,MAAAkrG,EACA,UAAW3mE,EACX,gBAAiBkuJ,EACjB,UAAA1sI,EACA,cAAAY,EACA,MAAAtkC,EACA,KAAMykD,EACN,OAAQ4rH,EACR,WAAA1zF,EACA,gBAAAksF,EACA,qBAAAyH,EACA,gBAAA/H,CACN,EAAQ5qL,EACJu9C,EAAYzO,GAAO9uC,EAAO,CAAC,QAAS,YAAa,kBAAmB,YAAa,gBAAiB,QAAS,OAAQ,SAAU,aAAc,kBAAmB,uBAAwB,iBAAiB,CAAC,EACpM,CACJ,GAAA4yL,CACJ,EAAM9hD,GAAc9xC,CAAU,EACtB,CAAA,CAAG/6E,CAAK,EAAIgnB,GAAQ,EACpB,CACJ,aAAAnG,EACA,UAAAC,EACA,gBAAiB8tJ,EACjB,UAAW9mI,EACX,MAAOC,CACX,EAAMrnB,GAAmB,YAAY,EAC7BoH,EAAYjH,EAAa,aAAcP,CAAkB,EAEzD,CAAC8H,EAAY1mB,EAAQ2mB,CAAS,EAAIX,GAASI,CAAS,EAEpDiqB,EAAatB,GAAQoS,CAAa,EAClCgsH,EAAU98H,IAAe,SAAW,CAAC,EAAE48H,GAAM,CAAC58H,GAAcgpC,GAE5D,CAAC/P,CAAa,EAAIh1D,GAAU,aAAc84J,EAAI,EAC9Cl6J,EAAS,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIo2D,CAAa,EAAGyjG,CAAY,EAGrE,CAACM,EAAqBC,CAA0B,EAAIT,GAAmBtH,CAAe,EACtF,CAACgI,EAAwBC,CAA6B,EAAIX,GAAmBK,CAA4B,EACzGO,EAAwBJ,GAAuFE,EAC/GG,EAAmCJ,GAA4GE,EAC/IG,EAAcX,GAAwBpxD,GAEtCgyD,EAAwB5sL,EAAM,QAAQ,IACnCikL,EAAkBA,EAAgB,IAAI32L,IAAU,OAAOA,EAAM,CAAC,EAAI,OACxE,CAAC22L,CAAe,CAAC,EAEdO,EAAoB37J,IAAQ,CAChC,IAAI3hC,GACJ,KAAM,CACJ,SAAA2sB,GACA,KAAMswK,GACN,aAAA0I,GACA,aAAcC,EACd,UAAWC,EACX,QAAA1lM,EACN,EAAQwhC,GACE,CACJ,UAAWmkK,EACX,SAAUC,EAChB,EAAQP,GAAoC,CAAA,EAIlCQ,IAAiBhmM,GAAKG,GAAQ,KAAKiG,IAAU,OAAOA,GAAO,KAAK,IAAM,OAAO62L,EAAQ,CAAC,KAAO,MAAQj9L,KAAO,OAAS,OAASA,GAAG,MACvI,OAAoB8Y,EAAM,cAAc2sL,EAAa,OAAO,OAAO,CACjE,SAAU94K,GACV,WAAY,GACZ,sBAAuB,GACvB,kBAAmBknG,IAAeA,GAAY,WAC9C,aAAc+xE,EACd,QAASzlM,EACf,EAAOqlM,EAAkC,CACnC,MAAOQ,GACP,SAAU,CAACC,GAAU7/L,KAAW,CAC9Bu/L,IAAiB,MAA2CA,GAAaM,EAAQ,EACjFF,IAA4B,MAAsDA,GAAwBE,GAAU7/L,EAAM,CAC5H,EACA,KAAM6+L,EAAU,QAAU,SAC1B,UAAW3mL,GAAWunL,EAAsBC,CAAwB,CAC1E,CAAK,CAAC,CACJ,EACA,GAAI,QAAQ,IAAI,WAAa,aAAc,CACzC,MAAMvmL,GAAUirB,GAAc,YAAY,EAC1C,QAAQ,IAAI,WAAa,cAAejrB,GAAQ,CAACulL,EAAsB,QAAS,mEAAmE,CACrJ,CAEA,MAAMoB,EAAaptL,EAAM,QAAQ,IAAM,CACrC,MAAMqtL,GAAwBrtL,EAAM,cAAc,OAAQ,CACxD,UAAW,GAAGolC,CAAS,gBAC7B,EAAO,KAAoB,EACjBuiJ,GAAwB3nL,EAAM,cAAc,SAAU,CAC1D,UAAW,GAAGolC,CAAS,aACvB,KAAM,SACN,SAAU,EAChB,EAAOhH,IAAc,MAAqBp+B,EAAM,cAAc+3D,GAAe,IAAI,EAAiB/3D,EAAM,cAAc0xI,GAAc,IAAI,CAAC,EAC/Hk2C,GAAwB5nL,EAAM,cAAc,SAAU,CAC1D,UAAW,GAAGolC,CAAS,aACvB,KAAM,SACN,SAAU,EAChB,EAAOhH,IAAc,MAAqBp+B,EAAM,cAAc0xI,GAAc,IAAI,EAAiB1xI,EAAM,cAAc+3D,GAAe,IAAI,CAAC,EAC/H0vH,GAGNznL,EAAM,cAAc,IAAK,CACvB,UAAW,GAAGolC,CAAS,YAC7B,EAAoBplC,EAAM,cAAc,MAAO,CACzC,UAAW,GAAGolC,CAAS,iBAC7B,EAAOhH,IAAc,MAAsBp+B,EAAM,cAAc4jL,GAAqB,CAC9E,UAAW,GAAGx+I,CAAS,iBAC7B,CAAK,EAAmBplC,EAAM,cAAc0jL,GAAoB,CAC1D,UAAW,GAAGt+I,CAAS,iBAC7B,CAAK,EAAIioJ,EAAQ,CAAC,EACR3F,GAGN1nL,EAAM,cAAc,IAAK,CACvB,UAAW,GAAGolC,CAAS,YAC7B,EAAoBplC,EAAM,cAAc,MAAO,CACzC,UAAW,GAAGolC,CAAS,iBAC7B,EAAOhH,IAAc,MAAsBp+B,EAAM,cAAc0jL,GAAoB,CAC7E,UAAW,GAAGt+I,CAAS,iBAC7B,CAAK,EAAmBplC,EAAM,cAAc4jL,GAAqB,CAC3D,UAAW,GAAGx+I,CAAS,iBAC7B,CAAK,EAAIioJ,EAAQ,CAAC,EACd,MAAO,CACL,SAAA1F,GACA,SAAAC,GACA,aAAAH,GACA,aAAAC,EACN,CACE,EAAG,CAACtpJ,EAAWgH,CAAS,CAAC,EACnB4gJ,EAAkB7nJ,EAAa,SAAU2tJ,CAAwB,EACjEwB,EAAoB9nL,GAAW,CACnC,CAAC,GAAG4/B,CAAS,IAAIm/D,CAAK,EAAE,EAAG,CAAC,CAACA,EAC7B,CAAC,GAAGn/D,CAAS,OAAO,EAAG+mJ,EACvB,CAAC,GAAG/mJ,CAAS,MAAM,EAAGhH,IAAc,MACpC,CAAC,GAAGgH,CAAS,WAAW,EAAG9nB,EAAM,SACrC,EAAK8nC,EAAkBhG,EAAWY,EAAehhC,EAAQ2mB,CAAS,EAC1D1Z,EAAc,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIo5B,CAAY,EAAG3pC,CAAK,EACxE,OAAOgqB,EAAwB1lC,EAAM,cAAcA,EAAM,SAAU,KAAMsd,EAAM,WAA0Btd,EAAM,cAAc4rL,GAAe,CAC1I,UAAWxmJ,CACf,CAAG,EAAgBplC,EAAM,cAAcutL,GAAc,OAAO,OAAO,CAAA,EAAIH,EAAYx2I,EAAW,CAC1F,MAAO3qB,EACP,UAAWmZ,EACX,gBAAiB4gJ,EACjB,UAAWsH,EACX,OAAQp7J,EACR,gBAAiB06J,EACjB,gBAAiBH,EACjB,kBAAmBjI,CACvB,CAAG,CAAC,CAAC,CAAC,CACN,EACI,QAAQ,IAAI,WAAa,eAC3BhyJ,GAAW,YAAc,cClL3B,MAAMg7J,GAAW,IACXC,GAAcD,GAAW,EACzB9gI,GAAS8gI,GAAW,EAAIC,GAAc,EACtCC,GAAgBhhI,GAAS,EAAI,KAAK,GAClChqD,GAAW,GACXirL,GAAet0L,GAAS,CAC5B,KAAM,CACJ,aAAAozK,EACA,MAAA/wJ,EACA,aAAAkyK,CACJ,EAAMv0L,EACJ,OAAoB2G,EAAM,cAAc,SAAU,CAChD,UAAWwF,GAAW,GAAGinK,CAAY,UAAW,CAC9C,CAAC,GAAGA,CAAY,YAAY,EAAGmhB,CACrC,CAAK,EACD,EAAGlhI,GACH,GAAIhqD,GACJ,GAAIA,GACJ,YAAa+qL,GACb,MAAO/xK,CACX,CAAG,CACH,EACMmyK,GAAW,CAAC,CAChB,QAAAh2H,EACA,UAAAzyB,CACF,IAAM,CACJ,MAAMqnI,EAAe,GAAGrnI,CAAS,OAC3B0oJ,EAAkB,GAAGrhB,CAAY,UACjCshB,EAAgB,GAAGD,CAAe,UAClC,CAAClkI,EAAQokI,CAAS,EAAIhuL,EAAM,SAAS,EAAK,EAEhD0f,GAAgB,IAAM,CAChBm4C,IAAY,GACdm2H,EAAU,EAAI,CAElB,EAAG,CAACn2H,IAAY,CAAC,CAAC,EAElB,MAAMo2H,EAAU,KAAK,IAAI,KAAK,IAAIp2H,EAAS,GAAG,EAAG,CAAC,EAElD,GAAI,CAACjO,EACH,OAAO,KAET,MAAMskI,EAAc,CAClB,iBAAkB,GAAGR,GAAgB,CAAC,GACtC,gBAAiB,GAAGA,GAAgBO,EAAU,GAAG,IAAIP,IAAiB,IAAMO,GAAW,GAAG,EAC9F,EACE,OAAoBjuL,EAAM,cAAc,OAAQ,CAC9C,UAAWwF,GAAWsoL,EAAiB,GAAGrhB,CAAY,YAAawhB,GAAW,GAAKF,CAAa,CACpG,EAAkB/tL,EAAM,cAAc,MAAO,CACzC,QAAS,OAAOwtL,EAAQ,IAAIA,EAAQ,GACpC,KAAM,cACN,gBAAiB,EACjB,gBAAiB,IACjB,gBAAiBS,CACrB,EAAkBjuL,EAAM,cAAc2tL,GAAc,CAChD,aAAclhB,EACd,aAAc,EAClB,CAAG,EAAgBzsK,EAAM,cAAc2tL,GAAc,CACjD,aAAclhB,EACd,MAAOyhB,CACX,CAAG,CAAC,CAAC,CACL,EC7De,SAASC,GAAO90L,EAAO,CACpC,KAAM,CACJ,UAAA+rC,EACA,QAAAyyB,EAAU,CACd,EAAMx+D,EACEozK,EAAe,GAAGrnI,CAAS,OAC3B0oJ,EAAkB,GAAGrhB,CAAY,UACjCshB,EAAgB,GAAGD,CAAe,UAExC,OAAoB9tL,EAAM,cAAcA,EAAM,SAAU,KAAmBA,EAAM,cAAc,OAAQ,CACrG,UAAWwF,GAAWsoL,EAAiBj2H,EAAU,GAAKk2H,CAAa,CACvE,EAAkB/tL,EAAM,cAAc,OAAQ,CAC1C,UAAWwF,GAAWinK,EAAc,GAAGrnI,CAAS,WAAW,CAC/D,EAAK,CAAC,EAAG,EAAG,EAAG,CAAC,EAAE,IAAI5+C,GAAmBwZ,EAAM,cAAc,IAAK,CAC9D,UAAW,GAAGolC,CAAS,YACvB,IAAK5+C,CACT,CAAG,CAAE,CAAC,CAAC,EAAgBwZ,EAAM,cAAc6tL,GAAU,CACjD,UAAWzoJ,EACX,QAASyyB,CACb,CAAG,CAAC,CACJ,CCnBe,SAASu2H,GAAU/0L,EAAO,CACvC,IAAInS,EACJ,KAAM,CACJ,UAAAk+C,EACA,UAAA8mH,EACA,QAAAr0F,CACJ,EAAMx+D,EACEozK,EAAe,GAAGrnI,CAAS,OACjC,OAAI8mH,GAA0BlsJ,EAAM,eAAeksJ,CAAS,EACnD1qG,GAAa0qG,EAAW,CAC7B,UAAW1mJ,IAAYte,EAAKglK,EAAU,SAAW,MAAQhlK,IAAO,OAAS,OAASA,EAAG,UAAWulL,CAAY,EAC5G,QAAA50G,CACN,CAAK,EAEiB73D,EAAM,cAAcmuL,GAAQ,CAC9C,UAAW/oJ,EACX,QAASyyB,CACb,CAAG,CACH,CCrBA,MAAMw2H,GAAc,IAAI51H,GAAU,cAAe,CAC/C,GAAI,CACF,QAAS,CACb,CACA,CAAC,EACK61H,GAAY,IAAI71H,GAAU,YAAa,CAC3C,GAAI,CACF,UAAW,gBACf,CACA,CAAC,EACK81H,GAAejxK,GAAS,CAC5B,KAAM,CACJ,aAAA0pB,EACA,KAAAtR,CACJ,EAAMpY,EACJ,MAAO,CACL,CAAC0pB,CAAY,EAAG,OAAO,OAAO,OAAO,OAAO,GAAIsC,GAAehsB,CAAK,CAAC,EAAG,CACtE,SAAU,WACV,QAAS,OACT,MAAOA,EAAM,aACb,SAAU,EACV,UAAW,SACX,cAAe,SACf,QAAS,EACT,WAAY,aAAaA,EAAM,kBAAkB,IAAIA,EAAM,mBAAmB,GAC9E,aAAc,CACZ,SAAU,WACV,QAAS,eACT,QAAS,CACjB,EACM,CAAC,GAAG0pB,CAAY,OAAO,EAAG,CACxB,SAAU1pB,EAAM,SAChB,WAAYoY,EAAKA,EAAKpY,EAAM,OAAO,EAAE,IAAIA,EAAM,QAAQ,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,MAAK,CACrF,EACM,eAAgB,CACd,SAAU,QACV,MAAO,QACP,OAAQ,QACR,gBAAiBA,EAAM,YACvB,OAAQA,EAAM,gBACd,MAAO,EACP,QAAS,OACT,WAAY,SACZ,cAAe,SACf,eAAgB,SAChB,QAAS,EACT,WAAY,SACZ,WAAY,OAAOA,EAAM,iBAAiB,GAC1C,SAAU,CACR,QAAS,EACT,WAAY,SACtB,EACQ,CAAC0pB,CAAY,EAAG,CACd,CAAC,GAAGA,CAAY,aAAa,EAAG,CAC9B,MAAO1pB,EAAM,UACzB,EACU,CAAC,GAAG0pB,CAAY,OAAO,EAAG,CACxB,MAAO1pB,EAAM,mBACzB,CACA,CACA,EACM,mBAAoB,CAClB,SAAU,WACV,CAAC,WAAW0pB,CAAY,EAAE,EAAG,CAC3B,SAAU,WACV,IAAK,EACL,iBAAkB,EAClB,OAAQ,EACR,QAAS,QACT,MAAO,OACP,OAAQ,OACR,UAAW1pB,EAAM,cACjB,CAAC,GAAG0pB,CAAY,MAAM,EAAG,CACvB,SAAU,WACV,IAAK,MACL,iBAAkB,MAClB,OAAQtR,EAAKpY,EAAM,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,MAAK,CAC5D,EACU,CAAC,GAAG0pB,CAAY,OAAO,EAAG,CACxB,SAAU,WACV,IAAK,MACL,MAAO,OACP,WAAY,aAAa1pB,EAAM,gBAAgB,EAC3D,EACU,CAAC,IAAI0pB,CAAY,cAAcA,CAAY,MAAM,EAAG,CAClD,UAAWtR,EAAKpY,EAAM,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,MAAK,CACvE,EACU,OAAQ,CACN,CAAC,GAAG0pB,CAAY,MAAM,EAAG,CACvB,OAAQtR,EAAKpY,EAAM,SAAS,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,MAAK,CAChE,EACY,CAAC,GAAG0pB,CAAY,OAAO,EAAG,CACxB,WAAYtR,EAAKA,EAAKpY,EAAM,SAAS,EAAE,IAAIA,EAAM,QAAQ,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,MAAK,CAC7F,EACY,CAAC,IAAI0pB,CAAY,cAAcA,CAAY,MAAM,EAAG,CAClD,UAAWtR,EAAKpY,EAAM,SAAS,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,MAAK,CAC3E,CACA,EACU,OAAQ,CACN,CAAC,GAAG0pB,CAAY,MAAM,EAAG,CACvB,OAAQtR,EAAKpY,EAAM,SAAS,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,MAAK,CAChE,EACY,CAAC,GAAG0pB,CAAY,OAAO,EAAG,CACxB,WAAYtR,EAAKA,EAAKpY,EAAM,SAAS,EAAE,IAAIA,EAAM,QAAQ,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,MAAK,CAC7F,EACY,CAAC,IAAI0pB,CAAY,cAAcA,CAAY,MAAM,EAAG,CAClD,UAAWtR,EAAKpY,EAAM,SAAS,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,MAAK,CAC3E,CACA,CACA,EACQ,CAAC,GAAG0pB,CAAY,YAAY,EAAG,CAC7B,SAAU,WACV,WAAY,WAAW1pB,EAAM,kBAAkB,GAC/C,WAAY,CACV,SAAU,WACV,IAAK,EACL,eAAgB,EAChB,OAAQ,EACR,iBAAkB,EAClB,OAAQ,GACR,MAAO,OACP,OAAQ,OACR,WAAYA,EAAM,iBAClB,QAAS,EACT,WAAY,OAAOA,EAAM,kBAAkB,GAC3C,QAAS,KACT,cAAe,MAC3B,CACA,EACQ,CAAC,GAAG0pB,CAAY,OAAO,EAAG,CACxB,MAAO,OACP,QAAS,GACT,WAAY,OACZ,cAAe,OACf,WAAY,CACV,QAAS,GACT,cAAe,MAC3B,CACA,CACA,EAGM,QAAS,CACP,MAAO1pB,EAAM,cACrB,EAGM,CAAC,GAAG0pB,CAAY,aAAa,EAAG,CAC9B,MAAO,MACP,OAAQ,MACR,SAAU1pB,EAAM,QAChB,QAAS,eACT,WAAY,aAAaA,EAAM,kBAAkB,kBAAkBA,EAAM,kBAAkB,QAC3F,gBAAiB,UACjB,WAAY,EACZ,MAAOA,EAAM,aACb,WAAY,CACV,UAAW,aACX,QAAS,CACnB,CACA,EAGM,CAAC,GAAG0pB,CAAY,eAAe,EAAG,CAChC,SAAU,WACV,MAAO,CACf,EAGM,CAAC,GAAGA,CAAY,MAAM,EAAG,CACvB,SAAU,WACV,QAAS,eACT,SAAU1pB,EAAM,QAChB,MAAO,MACP,OAAQ,MACR,SAAU,CACR,SAAU,WACV,QAAS,QACT,MAAOoY,EAAKpY,EAAM,OAAO,EAAE,IAAIoY,EAAKpY,EAAM,SAAS,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,MAAK,EACzE,OAAQoY,EAAKpY,EAAM,OAAO,EAAE,IAAIoY,EAAKpY,EAAM,SAAS,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,MAAK,EAC1E,WAAY,eACZ,aAAc,OACd,UAAW,cACX,gBAAiB,UACjB,QAAS,GACT,cAAe+wK,GACf,kBAAmB,KACnB,wBAAyB,WACzB,wBAAyB,SACzB,mBAAoB,YACpB,iBAAkB,CAChB,IAAK,EACL,iBAAkB,EAClB,eAAgB,IAC5B,EACU,iBAAkB,CAChB,IAAK,EACL,eAAgB,EAChB,eAAgB,MAC5B,EACU,iBAAkB,CAChB,eAAgB,EAChB,OAAQ,EACR,eAAgB,MAC5B,EACU,iBAAkB,CAChB,OAAQ,EACR,iBAAkB,EAClB,eAAgB,MAC5B,CACA,EACQ,SAAU,CACR,UAAW,gBACX,cAAeC,GACf,kBAAmB,OACnB,wBAAyB,WACzB,wBAAyB,QACnC,EACQ,WAAY,CACV,cAAe,QACf,WAAY,CAAC,oBAAqB,mBAAoB,SAAU,eAAgB,SAAS,EAAE,IAAInxK,GAAQ,GAAGA,CAAI,IAAIG,EAAM,kBAAkB,OAAO,EAAE,KAAK,GAAG,EAC3J,YAAa,EACb,OAAQ,cAClB,EACQ,cAAe,CACb,OAAQA,EAAM,kBACxB,CACA,EAEM,CAAC,QAAQ0pB,CAAY,MAAM,EAAG,CAC5B,cAAe,CACb,SAAU1pB,EAAM,SAC1B,CACA,EACM,CAAC,QAAQ0pB,CAAY,aAAa,EAAG,CACnC,EAAG,CACD,MAAOtR,EAAKA,EAAKpY,EAAM,SAAS,EAAE,IAAIoY,EAAKpY,EAAM,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,MAAK,EACjF,OAAQoY,EAAKA,EAAKpY,EAAM,SAAS,EAAE,IAAIoY,EAAKpY,EAAM,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,MAAK,CAC5F,CACA,EAEM,CAAC,QAAQ0pB,CAAY,MAAM,EAAG,CAC5B,cAAe,CACb,SAAU1pB,EAAM,SAC1B,CACA,EACM,CAAC,QAAQ0pB,CAAY,aAAa,EAAG,CACnC,EAAG,CACD,MAAOtR,EAAKA,EAAKpY,EAAM,SAAS,EAAE,IAAIA,EAAM,SAAS,CAAC,EAAE,IAAI,CAAC,EAAE,MAAK,EACpE,OAAQoY,EAAKA,EAAKpY,EAAM,SAAS,EAAE,IAAIA,EAAM,SAAS,CAAC,EAAE,IAAI,CAAC,EAAE,MAAK,CAC/E,CACA,EACM,CAAC,IAAI0pB,CAAY,cAAcA,CAAY,OAAO,EAAG,CACnD,QAAS,OACjB,CACA,CAAK,CACL,CACA,EAcAwnJ,GAAe7pJ,GAAc,OAAQrnB,GAAS,CAC5C,MAAMmxK,EAAYlrJ,GAAWjmB,EAAO,CAClC,eAAgBA,EAAM,oBAC1B,CAAG,EACD,MAAO,CAACixK,GAAaE,CAAS,CAAC,CACjC,EAlBqCnxK,GAAS,CAC5C,KAAM,CACJ,gBAAAssE,EACA,cAAA1uD,CACJ,EAAM5d,EACJ,MAAO,CACL,cAAe,IACf,QAASssE,EAAkB,EAC3B,UAAWA,EAAkB,IAC7B,UAAW1uD,CACf,CACA,CAOwB,ECtRlBwzJ,GAAgB,IAChBC,GAAe,CAAC,CAAC,GAAI,GAAI,EAAG,CAAC,GAAI,GAAI,EAAG,CAAC,GAAI,GAAI,CAAC,EACzC,SAASC,GAAWC,EAAUh3H,EAAS,CACpD,KAAM,CAACi3H,EAAaC,CAAc,EAAI/uL,EAAM,SAAS,CAAC,EAChDgvL,EAAkBhvL,EAAM,OAAO,IAAI,EACnCivL,EAASp3H,IAAY,OAC3B73D,OAAAA,EAAM,UAAU,KACVivL,GAAUJ,IACZE,EAAe,CAAC,EAChBC,EAAgB,QAAU,YAAY,IAAM,CAC1CD,EAAeh4L,GAAQ,CACrB,MAAMm4L,EAAU,IAAMn4L,EACtB,QAASvQ,EAAI,EAAGA,EAAImoM,GAAa,OAAQnoM,GAAK,EAAG,CAC/C,KAAM,CAAC2oM,EAAOC,CAAO,EAAIT,GAAanoM,CAAC,EACvC,GAAIuQ,GAAQo4L,EACV,OAAOp4L,EAAOm4L,EAAUE,CAE5B,CACA,OAAOr4L,CACT,CAAC,CACH,EAAG23L,EAAa,GAEX,IAAM,CACX,cAAcM,EAAgB,OAAO,CACvC,GACC,CAACC,EAAQJ,CAAQ,CAAC,EACdI,EAASH,EAAcj3H,CAChC,CC1BA,IAAI1vB,GAAgC,SAAU/kD,EAAGe,EAAG,CAClD,IAAId,EAAI,CAAA,EACR,QAASe,KAAKhB,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGgB,CAAC,GAAKD,EAAE,QAAQC,CAAC,EAAI,IAAGf,EAAEe,CAAC,EAAIhB,EAAEgB,CAAC,GAC/F,GAAIhB,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WAAY,QAAS,EAAI,EAAGgB,EAAI,OAAO,sBAAsBhB,CAAC,EAAG,EAAIgB,EAAE,OAAQ,IAClID,EAAE,QAAQC,EAAE,CAAC,CAAC,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKhB,EAAGgB,EAAE,CAAC,CAAC,IAAGf,EAAEe,EAAE,CAAC,CAAC,EAAIhB,EAAEgB,EAAE,CAAC,CAAC,GAElG,OAAOf,CACT,EAWA,IAAIgsM,GACJ,SAASC,GAAYT,EAAUpgL,EAAO,CACpC,MAAO,CAAC,CAACogL,GAAY,CAAC,CAACpgL,GAAS,CAAC,OAAO,MAAM,OAAOA,CAAK,CAAC,CAC7D,CACA,MAAM8gL,GAAOl2L,GAAS,CACpB,IAAInS,EACJ,KAAM,CACF,UAAW02C,EACX,SAAU4xJ,EAAiB,GAC3B,MAAA/gL,EAAQ,EACR,UAAA2wC,EACA,cAAAY,EACA,KAAAvyC,EAAO,UACP,IAAAgiL,EACA,iBAAAC,EACA,MAAAh0K,EACA,SAAAtV,EACA,WAAAupL,EAAa,GACb,UAAAzjC,EACA,QAAAr0F,CACN,EAAQx+D,EACJu9C,EAAYzO,GAAO9uC,EAAO,CAAC,YAAa,WAAY,QAAS,YAAa,gBAAiB,OAAQ,MAAO,mBAAoB,QAAS,WAAY,aAAc,YAAa,SAAS,CAAC,EACpL,CACJ,aAAA8kC,EACA,UAAAC,EACA,UAAWgnB,EACX,MAAOC,EACP,UAAWuqI,CACf,EAAM5xJ,GAAmB,MAAM,EACvBoH,EAAYjH,EAAa,OAAQP,CAAkB,EACnD,CAAC8H,EAAY1mB,EAAQ2mB,CAAS,EAAIX,GAASI,CAAS,EACpD,CAACypJ,EAAUgB,CAAW,EAAI7vL,EAAM,SAAS,IAAMwvL,GAAkB,CAACF,GAAYE,EAAgB/gL,CAAK,CAAC,EACpGqhL,EAAgBlB,GAAWC,EAAUh3H,CAAO,EAClD73D,EAAM,UAAU,IAAM,CACpB,GAAIwvL,EAAgB,CAClB,MAAMO,EAAerxB,GAASjwJ,EAAO,IAAM,CACzCohL,EAAY,EAAI,CAClB,CAAC,EACD,OAAAE,EAAY,EACL,IAAM,CACX,IAAI7oM,GACHA,EAAK6oM,GAAiB,KAAkC,OAASA,EAAa,UAAY,MAAQ7oM,IAAO,QAAkBA,EAAG,KAAK6oM,CAAY,CAClJ,CACF,CACAF,EAAY,EAAK,CACnB,EAAG,CAACphL,EAAO+gL,CAAc,CAAC,EAC1B,MAAMQ,EAAkBhwL,EAAM,QAAQ,IAAM,OAAOoG,EAAa,KAAe,CAACupL,EAAY,CAACvpL,EAAUupL,CAAU,CAAC,EAClH,GAAI,QAAQ,IAAI,WAAa,aAAc,CACzC,MAAMlpL,EAAUirB,GAAc,MAAM,EACpC,QAAQ,IAAI,WAAa,cAAejrB,EAAQ,CAACgpL,GAAOO,GAAmBL,EAAY,QAAS,gDAAgD,CAClJ,CACA,MAAMM,EAAgBzqL,GAAW4/B,EAAWggB,EAAkB,CAC5D,CAAC,GAAGhgB,CAAS,KAAK,EAAG33B,IAAS,QAC9B,CAAC,GAAG23B,CAAS,KAAK,EAAG33B,IAAS,QAC9B,CAAC,GAAG23B,CAAS,WAAW,EAAGypJ,EAC3B,CAAC,GAAGzpJ,CAAS,YAAY,EAAG,CAAC,CAACqqJ,EAC9B,CAAC,GAAGrqJ,CAAS,MAAM,EAAGhH,IAAc,KACxC,EAAKghB,EAAW,CAACuwI,GAAc3vI,EAAehhC,EAAQ2mB,CAAS,EACvDuqJ,EAAqB1qL,GAAW,GAAG4/B,CAAS,aAAc,CAC9D,CAAC,GAAGA,CAAS,OAAO,EAAGypJ,CAC3B,CAAG,EACKxxB,GAAmBn2K,EAAKglK,GAAyD0jC,KAAsB,MAAQ1oM,IAAO,OAASA,EAAKmoM,GACpIpjK,EAAc,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIo5B,CAAY,EAAG3pC,CAAK,EAClEy0K,EAA2BnwL,EAAM,cAAc,MAAO,OAAO,OAAO,CAAA,EAAI42C,EAAW,CACvF,MAAO3qB,EACP,UAAWgkK,EACX,YAAa,SACb,YAAapB,CACjB,CAAG,EAAgB7uL,EAAM,cAAcouL,GAAW,CAC9C,UAAWhpJ,EACX,UAAWi4H,EACX,QAASyyB,CACb,CAAG,EAAGL,IAAQO,GAAmBL,GAA4B3vL,EAAM,cAAc,MAAO,CACpF,UAAW,GAAGolC,CAAS,OAC3B,EAAKqqJ,CAAG,EAAK,IAAI,EACf,OACS/pJ,EADLsqJ,EAC6BhwL,EAAM,cAAc,MAAO,OAAO,OAAO,CAAA,EAAI42C,EAAW,CACrF,UAAWpxC,GAAW,GAAG4/B,CAAS,kBAAmBsqJ,EAAkB1wK,EAAQ2mB,CAAS,CAC9F,CAAK,EAAGkpJ,GAAyB7uL,EAAM,cAAc,MAAO,CACtD,IAAK,SACX,EAAOmwL,CAAW,EAAgBnwL,EAAM,cAAc,MAAO,CACvD,UAAWkwL,EACX,IAAK,WACX,EAAO9pL,CAAQ,CAAC,EAEVupL,EAC6B3vL,EAAM,cAAc,MAAO,CACxD,UAAWwF,GAAW,GAAG4/B,CAAS,cAAe,CAC/C,CAAC,GAAGA,CAAS,kBAAkB,EAAGypJ,CAC1C,EAAS7uI,EAAehhC,EAAQ2mB,CAAS,CACzC,EAAOwqJ,CAAW,EAEEA,CATH,CAUjB,EACAZ,GAAK,oBAAsBrjC,GAAa,CACtCmjC,GAAmBnjC,CACrB,EACI,QAAQ,IAAI,WAAa,eAC3BqjC,GAAK,YAAc,QCtHrB,MAAMa,GAAS,CAACC,EAAWC,EAAY,KACjCA,GAAyCD,GAAc,KAClD,CAAA,EAEF,MAAM,QAAQA,CAAS,EAAIA,EAAY,CAACA,CAAS,ECF1D,IAAIloJ,GAAgC,SAAU/kD,EAAGe,EAAG,CAClD,IAAId,EAAI,CAAA,EACR,QAASe,KAAKhB,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGgB,CAAC,GAAKD,EAAE,QAAQC,CAAC,EAAI,IAAGf,EAAEe,CAAC,EAAIhB,EAAEgB,CAAC,GAC/F,GAAIhB,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WAAY,QAAS,EAAI,EAAGgB,EAAI,OAAO,sBAAsBhB,CAAC,EAAG,EAAIgB,EAAE,OAAQ,IAClID,EAAE,QAAQC,EAAE,CAAC,CAAC,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKhB,EAAGgB,EAAE,CAAC,CAAC,IAAGf,EAAEe,EAAE,CAAC,CAAC,EAAIhB,EAAEgB,EAAE,CAAC,CAAC,GAElG,OAAOf,CACT,EA4DA,MAAAktM,GAAen7F,GAlDG/7F,GAAS,CACzB,KAAM,CACF,UAAWukC,EACX,UAAAwhB,EACA,UAAA6E,EACA,SAAAW,EACA,KAAA59D,EACA,MAAAuiF,EACA,SAAAnjE,EACA,OAAAqjE,CACN,EAAQpwE,EACJu9C,EAAYzO,GAAO9uC,EAAO,CAAC,YAAa,YAAa,YAAa,WAAY,OAAQ,QAAS,WAAY,QAAQ,CAAC,EAChH,CACJ,aAAA8kC,CACJ,EAAMn+B,EAAM,WAAW69B,EAAa,EAC5B0I,EAAgBpI,EAAY,EAC5BiH,EAAYxH,GAAsBO,EAAa,OAAO,EACtDkH,EAAU4gB,GAAa1f,CAAa,EACpC,CAACb,EAAY1mB,EAAQ2mB,CAAS,EAAIX,GAASI,EAAWC,CAAO,EAC7DysD,EAAmB,GAAG1sD,CAAS,WAErC,IAAIorJ,EAAkB,CAAA,EACtB,OAAIxpM,EACFwpM,EAAkB,CAChB,SAAU5rI,GAAsD,GAChE,MAAO,GACP,OAAQ,GACR,SAAwB5kD,EAAM,cAAc6xF,GAAgB,OAAO,OAAO,CAAA,EAAIx4F,EAAO,CACnF,UAAW+rC,EACX,iBAAkB0sD,EAClB,cAAevrD,EACf,QAASngC,CACjB,CAAO,CAAC,CACR,EAEIoqL,EAAkB,CAChB,SAAU5rI,GAAsD,GAChE,MAAA2kB,EACA,OAAQE,IAAW,MAAqBzpE,EAAM,cAAc8tF,GAAQ,OAAO,OAAO,GAAIz0F,CAAK,CAAC,EAC5F,SAAA+M,CACN,EAESs/B,EAAwB1lC,EAAM,cAAcspE,GAAO,OAAO,OAAO,CACtE,UAAWlkC,EACX,UAAW5/B,GAAWwZ,EAAQ,GAAGomB,CAAS,cAAep+C,GAAQ8qG,EAAkB9qG,GAAQ,GAAG8qG,CAAgB,IAAI9qG,CAAI,GAAIo4D,EAAWzZ,EAAWN,CAAO,CAC3J,EAAKuR,EAAW,CACZ,UAAWi3C,GAAgBzoD,EAAW6e,CAAS,EAC/C,SAAUW,CACd,EAAK4rI,CAAe,CAAC,CAAC,CACtB,CAC4C,EC9D5C,SAASC,GAAUp3L,EAAO,CACxB,OAAO05F,GAAQQ,GAASl6F,CAAK,CAAC,CAChC,CACA,MAAM02F,GAAQ2gG,GACd3gG,GAAM,SAAWyE,GACjBzE,GAAM,KAAO,SAAgB12F,EAAO,CAClC,OAAO05F,GAAQS,GAASn6F,CAAK,CAAC,CAChC,EACA02F,GAAM,QAAU,SAAmB12F,EAAO,CACxC,OAAO05F,GAAQU,GAAYp6F,CAAK,CAAC,CACnC,EACA02F,GAAM,MAAQ,SAAiB12F,EAAO,CACpC,OAAO05F,GAAQW,GAAUr6F,CAAK,CAAC,CACjC,EACA02F,GAAM,QAAU0gG,GAChB1gG,GAAM,KAAO0gG,GACb1gG,GAAM,QAAU,SAAmB12F,EAAO,CACxC,OAAO05F,GAAQY,GAAYt6F,CAAK,CAAC,CACnC,EACA02F,GAAM,WAAa,UAAwB,CACzC,KAAO4C,GAAW,QAAQ,CACxB,MAAMvvB,EAAQuvB,GAAW,IAAG,EACxBvvB,GACFA,EAAK,CAET,CACF,EACA2sB,GAAM,OAAS6D,GACf7D,GAAM,uCAAyC24C,GAC3C,QAAQ,IAAI,WAAa,eAC3B34C,GAAM,YAAc,SCpCtB,IAAI4gG,GAAqB,CAAE,KAAQ,SAAgB7xJ,EAAckgB,EAAgB,CAAE,MAAO,CAAE,IAAO,MAAO,MAAS,CAAE,QAAW,gBAAiB,UAAa,OAAO,EAAI,SAAY,CAAC,CAAE,IAAO,OAAQ,MAAS,CAAE,EAAK,gLAAiL,KAAQlgB,CAAY,GAAM,CAAE,IAAO,OAAQ,MAAS,CAAE,EAAK,sXAAuX,KAAQkgB,CAAc,CAAE,EAAI,CAAE,IAAO,OAAQ,MAAS,CAAE,EAAK,2RAA4R,KAAQlgB,CAAY,CAAE,CAAE,CAAC,CAAI,EAAG,KAAQ,eAAgB,MAAS,SAAS,ECMztC6xJ,GAAqB,SAA4Bt3L,EAAOP,EAAK,CAC/D,OAAoBkH,EAAM,cAAcogD,GAAUv6C,GAAS,CAAA,EAAIxM,EAAO,CACpE,IAAKP,EACL,KAAM83L,EACV,CAAG,CAAC,CACJ,EAGItwI,GAAuBtgD,EAAM,WAAW2wL,EAAkB,EAC1D,QAAQ,IAAI,WAAa,eAC3BrwI,GAAQ,YAAc,sBChBxB,IAAIuwI,GAAe,CAAE,KAAQ,CAAE,IAAO,MAAO,MAAS,CAAE,QAAW,gBAAiB,UAAa,OAAO,EAAI,SAAY,CAAC,CAAE,IAAO,OAAQ,MAAS,CAAE,EAAK,yXAAyX,EAAI,CAAC,EAAI,KAAQ,OAAQ,MAAS,UAAU,ECM3jBA,GAAe,SAAsBx3L,EAAOP,EAAK,CACnD,OAAoBkH,EAAM,cAAcogD,GAAUv6C,GAAS,CAAA,EAAIxM,EAAO,CACpE,IAAKP,EACL,KAAMg4L,EACV,CAAG,CAAC,CACJ,EAGIxwI,GAAuBtgD,EAAM,WAAW6wL,EAAY,EACpD,QAAQ,IAAI,WAAa,eAC3BvwI,GAAQ,YAAc,gBChBxB,IAAIywI,GAAmB,CAAE,KAAQ,CAAE,IAAO,MAAO,MAAS,CAAE,QAAW,gBAAiB,UAAa,OAAO,EAAI,SAAY,CAAC,CAAE,IAAO,OAAQ,MAAS,CAAE,EAAK,+SAA+S,EAAI,CAAC,EAAI,KAAQ,WAAY,MAAS,UAAU,ECMzfA,GAAmB,SAA0B13L,EAAOP,EAAK,CAC3D,OAAoBkH,EAAM,cAAcogD,GAAUv6C,GAAS,CAAA,EAAIxM,EAAO,CACpE,IAAKP,EACL,KAAMk4L,EACV,CAAG,CAAC,CACJ,EAGI1wI,GAAuBtgD,EAAM,WAAW+wL,EAAgB,EACxD,QAAQ,IAAI,WAAa,eAC3BzwI,GAAQ,YAAc,oBChBxB,IAAI2wI,GAAe,CAAE,KAAQ,CAAE,IAAO,MAAO,MAAS,CAAE,QAAW,gBAAiB,UAAa,OAAO,EAAI,SAAY,CAAC,CAAE,IAAO,OAAQ,MAAS,CAAE,EAAK,kZAAkZ,EAAI,CAAC,EAAI,KAAQ,OAAQ,MAAS,UAAU,ECMplBA,GAAe,SAAsB53L,EAAOP,EAAK,CACnD,OAAoBkH,EAAM,cAAcogD,GAAUv6C,GAAS,CAAA,EAAIxM,EAAO,CACpE,IAAKP,EACL,KAAMo4L,EACV,CAAG,CAAC,CACJ,EAGI5wI,GAAuBtgD,EAAM,WAAWixL,EAAY,EACpD,QAAQ,IAAI,WAAa,eAC3B3wI,GAAQ,YAAc,gBChBxB,IAAI6wI,GAAgB,CAAE,KAAQ,CAAE,IAAO,MAAO,MAAS,CAAE,QAAW,gBAAiB,UAAa,OAAO,EAAI,SAAY,CAAC,CAAE,IAAO,OAAQ,MAAS,CAAE,EAAK,4KAA4K,EAAI,CAAC,EAAI,KAAQ,QAAS,MAAS,UAAU,ECMhXA,GAAgB,SAAuB93L,EAAOP,EAAK,CACrD,OAAoBkH,EAAM,cAAcogD,GAAUv6C,GAAS,CAAA,EAAIxM,EAAO,CACpE,IAAKP,EACL,KAAMs4L,EACV,CAAG,CAAC,CACJ,EAGI9wI,GAAuBtgD,EAAM,WAAWmxL,EAAa,EACrD,QAAQ,IAAI,WAAa,eAC3B7wI,GAAQ,YAAc,iBChBxB,IAAI+wI,GAAoB,CAAE,KAAQ,CAAE,IAAO,MAAO,MAAS,CAAE,QAAW,gBAAiB,UAAa,OAAO,EAAI,SAAY,CAAC,CAAE,IAAO,OAAQ,MAAS,CAAE,EAAK,maAAma,EAAI,CAAC,EAAI,KAAQ,aAAc,MAAS,UAAU,ECMhnBA,GAAoB,SAA2Bh4L,EAAOP,EAAK,CAC7D,OAAoBkH,EAAM,cAAcogD,GAAUv6C,GAAS,CAAA,EAAIxM,EAAO,CACpE,IAAKP,EACL,KAAMw4L,EACV,CAAG,CAAC,CACJ,EAGIhxI,GAAuBtgD,EAAM,WAAWqxL,EAAiB,EACzD,QAAQ,IAAI,WAAa,eAC3B/wI,GAAQ,YAAc,qBChBxB,IAAIixI,GAAyB,CAAE,KAAQ,CAAE,IAAO,MAAO,MAAS,CAAE,QAAW,gBAAiB,UAAa,OAAO,EAAI,SAAY,CAAC,CAAE,IAAO,OAAQ,MAAS,CAAE,EAAK,0xBAA0xB,EAAI,CAAC,EAAI,KAAQ,kBAAmB,MAAS,UAAU,ECMj/BA,GAAyB,SAAgCl4L,EAAOP,EAAK,CACvE,OAAoBkH,EAAM,cAAcogD,GAAUv6C,GAAS,CAAA,EAAIxM,EAAO,CACpE,IAAKP,EACL,KAAM04L,EACV,CAAG,CAAC,CACJ,EAGIlxI,GAAuBtgD,EAAM,WAAWuxL,EAAsB,EAC9D,QAAQ,IAAI,WAAa,eAC3BjxI,GAAQ,YAAc,0BChBxB,IAAImxI,GAAqB,CAAE,KAAQ,CAAE,IAAO,MAAO,MAAS,CAAE,QAAW,gBAAiB,UAAa,OAAO,EAAI,SAAY,CAAC,CAAE,IAAO,OAAQ,MAAS,CAAE,EAAK,6xBAA6xB,EAAI,CAAC,EAAI,KAAQ,aAAc,MAAS,UAAU,ECM3+BA,GAAqB,SAA4Bp4L,EAAOP,EAAK,CAC/D,OAAoBkH,EAAM,cAAcogD,GAAUv6C,GAAS,CAAA,EAAIxM,EAAO,CACpE,IAAKP,EACL,KAAM44L,EACV,CAAG,CAAC,CACJ,EAGIpxI,GAAuBtgD,EAAM,WAAWyxL,EAAkB,EAC1D,QAAQ,IAAI,WAAa,eAC3BnxI,GAAQ,YAAc,sBChBxB,IAAIqxI,GAAqB,CAAE,KAAQ,SAAgB7yJ,EAAckgB,EAAgB,CAAE,MAAO,CAAE,IAAO,MAAO,MAAS,CAAE,QAAW,gBAAiB,UAAa,OAAO,EAAI,SAAY,CAAC,CAAE,IAAO,OAAQ,MAAS,CAAE,EAAK,gLAAiL,KAAQlgB,CAAY,GAAM,CAAE,IAAO,OAAQ,MAAS,CAAE,EAAK,6QAA8Q,KAAQkgB,CAAc,CAAE,EAAI,CAAE,IAAO,OAAQ,MAAS,CAAE,EAAK,mLAAoL,KAAQlgB,CAAY,CAAE,CAAE,CAAC,CAAI,EAAG,KAAQ,eAAgB,MAAS,SAAS,ECMxgC6yJ,GAAqB,SAA4Bt4L,EAAOP,EAAK,CAC/D,OAAoBkH,EAAM,cAAcogD,GAAUv6C,GAAS,CAAA,EAAIxM,EAAO,CACpE,IAAKP,EACL,KAAM84L,EACV,CAAG,CAAC,CACJ,EAGItxI,GAAuBtgD,EAAM,WAAW2xL,EAAkB,EAC1D,QAAQ,IAAI,WAAa,eAC3BrxI,GAAQ,YAAc,sBChBxB,IAAIuxI,GAAoB,CAAE,KAAQ,SAAgB/yJ,EAAckgB,EAAgB,CAAE,MAAO,CAAE,IAAO,MAAO,MAAS,CAAE,QAAW,gBAAiB,UAAa,OAAO,EAAI,SAAY,CAAC,CAAE,IAAO,OAAQ,MAAS,CAAE,EAAK,gLAAiL,KAAQlgB,CAAY,GAAM,CAAE,IAAO,OAAQ,MAAS,CAAE,EAAK,kMAAmM,KAAQkgB,CAAc,CAAE,EAAI,CAAE,IAAO,OAAQ,MAAS,CAAE,EAAK,wGAAyG,KAAQlgB,CAAY,CAAE,CAAE,CAAC,CAAI,EAAG,KAAQ,cAAe,MAAS,SAAS,ECMh3B+yJ,GAAoB,SAA2Bx4L,EAAOP,EAAK,CAC7D,OAAoBkH,EAAM,cAAcogD,GAAUv6C,GAAS,CAAA,EAAIxM,EAAO,CACpE,IAAKP,EACL,KAAMg5L,EACV,CAAG,CAAC,CACJ,EAGIxxI,GAAuBtgD,EAAM,WAAW6xL,EAAiB,EACzD,QAAQ,IAAI,WAAa,eAC3BvxI,GAAQ,YAAc,qBChBxB,IAAIyxI,GAAkB,CAAE,KAAQ,CAAE,IAAO,MAAO,MAAS,CAAE,QAAW,gBAAiB,UAAa,OAAO,EAAI,SAAY,CAAC,CAAE,IAAO,OAAQ,MAAS,CAAE,EAAK,ixDAAixD,EAAI,CAAC,EAAI,KAAQ,UAAW,MAAS,UAAU,ECMz9DA,GAAkB,SAAyB14L,EAAOP,EAAK,CACzD,OAAoBkH,EAAM,cAAcogD,GAAUv6C,GAAS,CAAA,EAAIxM,EAAO,CACpE,IAAKP,EACL,KAAMk5L,EACV,CAAG,CAAC,CACJ,EAGI1xI,GAAuBtgD,EAAM,WAAW+xL,EAAe,EACvD,QAAQ,IAAI,WAAa,eAC3BzxI,GAAQ,YAAc,mBCbxB,IAAI3U,GAAY,CAAC,YAAa,YAAa,UAAW,OAAQ,SAAU,WAAY,UAAW,UAAU,EAOrGiU,GAAoB5/C,EAAM,WAAW,SAAU3G,EAAOP,EAAK,CAC7D,IAAIsmD,EAAY/lD,EAAM,UACpBw9C,EAAYx9C,EAAM,UAClB44L,EAAU54L,EAAM,QAChBigD,EAAOjgD,EAAM,KACbwmD,EAASxmD,EAAM,OACfymD,EAAWzmD,EAAM,SACjBgmD,EAAUhmD,EAAM,QAChB+M,EAAW/M,EAAM,SACjBu9C,EAAY38B,GAAyB5gB,EAAOsyC,EAAS,EACnDumJ,EAAUlyL,EAAM,OAAM,EACtBqU,EAAY9H,GAAc2lL,EAASp5L,CAAG,EAC1C2N,GAAQ,GAAQowC,GAAazwC,GAAW,6CAA6C,EACrFs4C,GAAgBwzI,CAAO,EACvB,IAAI7wK,EAAoBrhB,EAAM,WAAWsF,EAAO,EAC9Cy6C,EAAwB1+B,EAAkB,UAC1C+jB,EAAY2a,IAA0B,OAAS,UAAYA,EAC3DC,EAAgB3+B,EAAkB,cAChC4+B,EAAcz6C,GAAWw6C,EAAe5a,EAAWh+B,EAAgB,CAAA,EAAI,GAAG,OAAOg+B,EAAW,OAAO,EAAG,CAAC,CAACkU,GAAQ,CAAC,CAACzC,CAAS,EAAGuI,CAAS,EACvI+yI,EAAiB3sL,GAAW4B,EAAgB,CAAA,EAAI,GAAG,OAAOg+B,EAAW,OAAO,EAAG,CAAC,CAACkU,CAAI,CAAC,EACtF6G,EAAWN,EAAS,CACtB,YAAa,UAAU,OAAOA,EAAQ,MAAM,EAC5C,UAAW,UAAU,OAAOA,EAAQ,MAAM,CAC9C,EAAM,OACAuyI,EAAgBj9K,EAAcA,EAAc,CAAA,EAAIqpC,EAAY,EAAG,GAAI,CACrE,UAAW2zI,EACX,MAAOhyI,EACP,QAAS8xI,CACb,CAAG,EACIA,GACH,OAAOG,EAAc,QAIvB,IAAIC,EAAkB,UAA2B,CAC/C,OAAIx7I,EACkB72C,EAAM,cAAc62C,EAAWu7I,EAAehsL,CAAQ,EAExEA,GACFK,GAAQ,EAAQwrL,GAAYjyL,EAAM,SAAS,MAAMoG,CAAQ,IAAM,GAAkBpG,EAAM,eAAeoG,CAAQ,GAAKpG,EAAM,SAAS,KAAKoG,CAAQ,EAAE,OAAS,MAAO,0FAA+F,EAC5OpG,EAAM,cAAc,MAAO6F,GAAS,CAAA,EAAIusL,EAAe,CACzE,QAASH,CACjB,CAAO,EAAG7rL,CAAQ,GAEP,IACT,EACI85C,EAAeJ,EACnB,OAAII,IAAiB,QAAab,IAChCa,EAAe,IAEGlgD,EAAM,cAAc,OAAQ6F,GAAS,CACvD,KAAM,KACV,EAAK+wC,EAAW,CACZ,IAAKviC,EACL,SAAU6rC,EACV,QAASb,EACT,UAAWY,CACf,CAAG,EAAGoyI,EAAe,CAAE,CACvB,CAAC,EACDzyI,GAAK,YAAc,WClEnB,IAAIjU,GAAY,CAAC,YAAa,YAAa,UAAW,iBAAkB,WAAY,cAAe,kBAAmB,oBAAqB,UAAW,WAAY,WAAW,EAKzK2mJ,GAAsBtyL,EAAM,WAAW,SAAUtE,EAAM5C,EAAK,CAC9D,IAAIy5L,EACAnyC,EAAiB1kJ,EAAK,UACxB0pC,EAAYg7G,IAAmB,OAAS,YAAcA,EACtDhhG,EAAY1jD,EAAK,UACjBupJ,EAAUvpJ,EAAK,QACfypJ,EAAiBzpJ,EAAK,eACtBmY,EAAWnY,EAAK,SAChB82L,EAAc92L,EAAK,YACnB+2L,EAAkB/2L,EAAK,gBACvBg3L,EAAoBh3L,EAAK,kBACzB2jD,EAAU3jD,EAAK,QACf6lC,EAAW7lC,EAAK,SAChBojH,EAAYpjH,EAAK,UACjBk7C,EAAY38B,GAAyBve,EAAMiwC,EAAS,EAClD4pB,EAAkBl0B,GAAe,GAAO,CACxC,MAAO4jH,EACP,aAAcE,CACpB,CAAK,EACD3vF,EAAmBr+C,GAAeo+C,EAAiB,CAAC,EACpDo9H,EAAen9H,EAAiB,CAAC,EACjCo9H,EAAkBp9H,EAAiB,CAAC,EACtC,SAASrzB,EAAc0wJ,EAAY/qM,EAAO,CACxC,IAAIgrM,EAAgBH,EACpB,OAAK9+K,IACHi/K,EAAgBD,EAChBD,EAAgBE,CAAa,EAC7BvxJ,GAAa,MAAuCA,EAASuxJ,EAAehrM,CAAK,GAE5EgrM,CACT,CACA,SAASxxE,EAAkBn9H,EAAG,CACxBA,EAAE,QAAU+hE,GAAQ,KACtB/jB,EAAc,GAAOh+C,CAAC,EACbA,EAAE,QAAU+hE,GAAQ,OAC7B/jB,EAAc,GAAMh+C,CAAC,EAEvB26H,GAAc,MAAwCA,EAAU36H,CAAC,CACnE,CACA,SAASq3J,EAAgBr3J,EAAG,CAC1B,IAAIuQ,EAAMytC,EAAc,CAACwwJ,EAAcxuM,CAAC,EAExCk7D,GAAY,MAAsCA,EAAQ3qD,EAAKvQ,CAAC,CAClE,CACA,IAAI4uM,EAAkBvtL,GAAW4/B,EAAWga,GAAYmzI,EAAc,CAAA,EAAInrL,EAAgBmrL,EAAa,GAAG,OAAOntJ,EAAW,UAAU,EAAGutJ,CAAY,EAAGvrL,EAAgBmrL,EAAa,GAAG,OAAOntJ,EAAW,WAAW,EAAGvxB,CAAQ,EAAG0+K,EAAW,EAC9O,OAAoBvyL,EAAM,cAAc,SAAU6F,GAAS,CAAA,EAAI+wC,EAAW,CACxE,KAAM,SACN,KAAM,SACN,eAAgB+7I,EAChB,SAAU9+K,EACV,UAAWk/K,EACX,IAAKj6L,EACL,UAAWwoH,EACX,QAASk6B,CACb,CAAG,EAAGg3C,EAA0BxyL,EAAM,cAAc,OAAQ,CACxD,UAAW,GAAG,OAAOolC,EAAW,QAAQ,CAC5C,EAAkBplC,EAAM,cAAc,OAAQ,CAC1C,UAAW,GAAG,OAAOolC,EAAW,gBAAgB,CACpD,EAAKqtJ,CAAe,EAAgBzyL,EAAM,cAAc,OAAQ,CAC5D,UAAW,GAAG,OAAOolC,EAAW,kBAAkB,CACtD,EAAKstJ,CAAiB,CAAC,CAAC,CACxB,CAAC,EACDJ,GAAO,YAAc,SCnErB,MAAMU,GAAsB11K,GAAS,CACnC,KAAM,CACJ,aAAA0pB,EACA,cAAAisJ,EACA,aAAAC,EACA,gBAAAC,EACA,iBAAAC,EACA,iBAAAC,EACA,aAAAC,EACA,KAAA59J,CACJ,EAAMpY,EACEi2K,EAAiB,GAAGvsJ,CAAY,SAChCwsJ,EAAmBp1K,GAAKsX,EAAK49J,CAAY,EAAE,IAAI59J,EAAKw9J,CAAY,EAAE,IAAI,CAAC,CAAC,EAAE,MAAK,CAAE,EACjFO,EAAqBr1K,GAAKsX,EAAK29J,CAAgB,EAAE,IAAI,CAAC,EAAE,OAAO,EACrE,MAAO,CACL,CAACrsJ,CAAY,EAAG,CACd,CAAC,IAAIA,CAAY,QAAQ,EAAG,CAC1B,SAAUmsJ,EACV,OAAQF,EACR,WAAY70K,GAAK60K,CAAa,EAC9B,CAAC,GAAGjsJ,CAAY,QAAQ,EAAG,CACzB,mBAAoBqsJ,EACpB,iBAAkBD,EAClB,CAAC,GAAGG,CAAc,aAAaA,CAAc,YAAY,EAAG,CAC1D,UAAWN,CACvB,EACU,CAAC,GAAGM,CAAc,UAAU,EAAG,CAC7B,kBAAmB,gBAAgBC,CAAgB,MAAMC,CAAkB,IAC3E,gBAAiB,eAAeD,CAAgB,MAAMC,CAAkB,GACpF,EACU,CAAC,GAAGF,CAAc,YAAY,EAAG,CAC/B,UAAW79J,EAAKu9J,CAAa,EAAE,IAAI,EAAE,EAAE,MAAK,EAC5C,kBAAmB,EACnB,gBAAiB,CAC7B,CACA,EACQ,CAAC,GAAGjsJ,CAAY,SAAS,EAAG,CAC1B,MAAOssJ,EACP,OAAQA,CAClB,EACQ,CAAC,GAAGtsJ,CAAY,eAAe,EAAG,CAChC,IAAKtR,EAAKA,EAAK49J,CAAY,EAAE,IAAIh2K,EAAM,qBAAqB,CAAC,EAAE,IAAI,CAAC,EAAE,MAAK,EAC3E,SAAUA,EAAM,qBAC1B,EACQ,CAAC,IAAI0pB,CAAY,UAAU,EAAG,CAC5B,CAAC,GAAGA,CAAY,QAAQ,EAAG,CACzB,mBAAoBosJ,EACpB,iBAAkBC,EAClB,CAAC,GAAGE,CAAc,UAAU,EAAG,CAC7B,kBAAmB,EACnB,gBAAiB,CAC/B,EACY,CAAC,GAAGA,CAAc,YAAY,EAAG,CAC/B,kBAAmB,eAAeC,CAAgB,MAAMC,CAAkB,IAC1E,gBAAiB,gBAAgBD,CAAgB,MAAMC,CAAkB,GACvF,CACA,EACU,CAAC,GAAGzsJ,CAAY,SAAS,EAAG,CAC1B,iBAAkB,eAAe5oB,GAAKsX,EAAK49J,CAAY,EAAE,IAAIJ,CAAY,EAAE,MAAK,CAAE,CAAC,GAC/F,CACA,EACQ,CAAC,SAASlsJ,CAAY,mBAAmB,EAAG,CAC1C,CAAC,SAASA,CAAY,aAAausJ,CAAc,EAAE,EAAG,CACpD,CAAC,GAAGA,CAAc,YAAY,EAAG,CAC/B,kBAAmB79J,EAAKpY,EAAM,SAAS,EAAE,IAAI,CAAC,EAAE,MAAK,EACrD,gBAAiBoY,EAAKpY,EAAM,SAAS,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,MAAK,CACzE,CACA,EACU,CAAC,IAAI0pB,CAAY,YAAYusJ,CAAc,EAAE,EAAG,CAC9C,CAAC,GAAGA,CAAc,UAAU,EAAG,CAC7B,kBAAmB79J,EAAKpY,EAAM,SAAS,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,MAAK,EAC7D,gBAAiBoY,EAAKpY,EAAM,SAAS,EAAE,IAAI,CAAC,EAAE,MAAK,CACjE,CACA,CACA,CACA,CACA,CACA,CACA,EACMo2K,GAAwBp2K,GAAS,CACrC,KAAM,CACJ,aAAA0pB,EACA,WAAAovI,EACA,KAAA1gJ,CACJ,EAAMpY,EACJ,MAAO,CACL,CAAC0pB,CAAY,EAAG,CACd,CAAC,GAAGA,CAAY,gBAAgB1pB,EAAM,OAAO,EAAE,EAAG,CAChD,SAAU,WACV,IAAKoY,EAAKA,EAAK0gJ,CAAU,EAAE,IAAI94J,EAAM,QAAQ,CAAC,EAAE,IAAI,CAAC,EAAE,MAAK,EAC5D,MAAOA,EAAM,uBACb,cAAe,KACvB,EACM,CAAC,IAAI0pB,CAAY,YAAYA,CAAY,eAAe,EAAG,CACzD,MAAO1pB,EAAM,WACrB,CACA,CACA,CACA,EACMq2K,GAAuBr2K,GAAS,CACpC,KAAM,CACJ,aAAA0pB,EACA,aAAAksJ,EACA,SAAAU,EACA,aAAAC,EACA,WAAAzd,EACA,KAAA1gJ,CACJ,EAAMpY,EACEw2K,EAAkB,GAAG9sJ,CAAY,UACvC,MAAO,CACL,CAACA,CAAY,EAAG,CACd,CAAC8sJ,CAAe,EAAG,CACjB,SAAU,WACV,IAAKZ,EACL,iBAAkBA,EAClB,MAAO9c,EACP,OAAQA,EACR,WAAY,OAAO94J,EAAM,cAAc,eACvC,YAAa,CACX,SAAU,WACV,IAAK,EACL,eAAgB,EAChB,OAAQ,EACR,iBAAkB,EAClB,gBAAiBs2K,EACjB,aAAcl+J,EAAK0gJ,CAAU,EAAE,IAAI,CAAC,EAAE,MAAK,EAC3C,UAAWyd,EACX,WAAY,OAAOv2K,EAAM,cAAc,eACvC,QAAS,IACnB,CACA,EACM,CAAC,IAAI0pB,CAAY,YAAY8sJ,CAAe,EAAE,EAAG,CAC/C,iBAAkB,eAAe11K,GAAKsX,EAAK0gJ,CAAU,EAAE,IAAI8c,CAAY,EAAE,MAAK,CAAE,CAAC,GACzF,EACM,CAAC,SAASlsJ,CAAY,mBAAmB,EAAG,CAC1C,CAAC,GAAG8sJ,CAAe,UAAU,EAAG,CAC9B,eAAgBx2K,EAAM,wBACtB,iBAAkB,CAC5B,EACQ,CAAC,IAAI0pB,CAAY,YAAY8sJ,CAAe,UAAU,EAAG,CACvD,eAAgB,EAChB,iBAAkBx2K,EAAM,uBAClC,CACA,CACA,CACA,CACA,EACMy2K,GAAsBz2K,GAAS,CACnC,KAAM,CACJ,aAAA0pB,EACA,YAAAgtJ,EACA,aAAAd,EACA,eAAAe,EACA,eAAAC,EACA,WAAA9d,EACA,KAAA1gJ,CACJ,EAAMpY,EACEi2K,EAAiB,GAAGvsJ,CAAY,SAChCwsJ,EAAmBp1K,GAAKsX,EAAK0gJ,CAAU,EAAE,IAAI1gJ,EAAKw9J,CAAY,EAAE,IAAI,CAAC,CAAC,EAAE,MAAK,CAAE,EAC/EO,EAAqBr1K,GAAKsX,EAAKw+J,CAAc,EAAE,IAAI,CAAC,EAAE,OAAO,EACnE,MAAO,CACL,CAACltJ,CAAY,EAAG,CACd,CAACusJ,CAAc,EAAG,CAChB,QAAS,QACT,SAAU,SACV,aAAc,IACd,OAAQ,OACR,mBAAoBW,EACpB,iBAAkBD,EAClB,WAAY,wBAAwB32K,EAAM,cAAc,oCAAoCA,EAAM,cAAc,eAChH,CAAC,GAAGi2K,CAAc,aAAaA,CAAc,YAAY,EAAG,CAC1D,QAAS,QACT,MAAOj2K,EAAM,oBACb,SAAUA,EAAM,WAChB,WAAY,uBAAuBA,EAAM,cAAc,mCAAmCA,EAAM,cAAc,eAC9G,cAAe,OACf,UAAW02K,CACrB,EACQ,CAAC,GAAGT,CAAc,UAAU,EAAG,CAC7B,kBAAmB,gBAAgBC,CAAgB,MAAMC,CAAkB,IAC3E,gBAAiB,eAAeD,CAAgB,MAAMC,CAAkB,GAClF,EACQ,CAAC,GAAGF,CAAc,YAAY,EAAG,CAC/B,UAAW79J,EAAKs+J,CAAW,EAAE,IAAI,EAAE,EAAE,MAAK,EAC1C,kBAAmB,EACnB,gBAAiB,CAC3B,CACA,EACM,CAAC,IAAIhtJ,CAAY,YAAYusJ,CAAc,EAAE,EAAG,CAC9C,mBAAoBU,EACpB,iBAAkBC,EAClB,CAAC,GAAGX,CAAc,UAAU,EAAG,CAC7B,kBAAmB,EACnB,gBAAiB,CAC3B,EACQ,CAAC,GAAGA,CAAc,YAAY,EAAG,CAC/B,kBAAmB,eAAeC,CAAgB,MAAMC,CAAkB,IAC1E,gBAAiB,gBAAgBD,CAAgB,MAAMC,CAAkB,GACnF,CACA,EACM,CAAC,SAASzsJ,CAAY,mBAAmB,EAAG,CAC1C,CAAC,SAASA,CAAY,aAAausJ,CAAc,EAAE,EAAG,CACpD,CAAC,GAAGA,CAAc,YAAY,EAAG,CAC/B,kBAAmB79J,EAAKw9J,CAAY,EAAE,IAAI,CAAC,EAAE,MAAK,EAClD,gBAAiBx9J,EAAKw9J,CAAY,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,MAAK,CACpE,CACA,EACQ,CAAC,IAAIlsJ,CAAY,YAAYusJ,CAAc,EAAE,EAAG,CAC9C,CAAC,GAAGA,CAAc,UAAU,EAAG,CAC7B,kBAAmB79J,EAAKw9J,CAAY,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,MAAK,EAC1D,gBAAiBx9J,EAAKw9J,CAAY,EAAE,IAAI,CAAC,EAAE,MAAK,CAC5D,CACA,CACA,CACA,CACA,CACA,EACMiB,GAAiB72K,GAAS,CAC9B,KAAM,CACJ,aAAA0pB,EACA,YAAAgtJ,EACA,cAAAI,CACJ,EAAM92K,EACJ,MAAO,CACL,CAAC0pB,CAAY,EAAG,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIsC,GAAehsB,CAAK,CAAC,EAAG,CAClG,SAAU,WACV,QAAS,eACT,UAAW,aACX,SAAU82K,EACV,OAAQJ,EACR,WAAY51K,GAAK41K,CAAW,EAC5B,cAAe,SACf,WAAY12K,EAAM,oBAClB,OAAQ,IACR,aAAc,IACd,OAAQ,UACR,WAAY,OAAOA,EAAM,iBAAiB,GAC1C,WAAY,OACZ,CAAC,eAAe0pB,CAAY,YAAY,EAAG,CACzC,WAAY1pB,EAAM,iBAC1B,CACA,CAAK,EAAG6sB,GAAc7sB,CAAK,CAAC,EAAG,CACzB,CAAC,IAAI0pB,CAAY,UAAU,EAAG,CAC5B,WAAY1pB,EAAM,YAClB,CAAC,eAAe0pB,CAAY,YAAY,EAAG,CACzC,WAAY1pB,EAAM,iBAC5B,CACA,EACM,CAAC,IAAI0pB,CAAY,cAAcA,CAAY,WAAW,EAAG,CACvD,OAAQ,cACR,QAAS1pB,EAAM,sBACf,IAAK,CACH,UAAW,OACX,OAAQ,aAClB,CACA,EAEM,CAAC,IAAI0pB,CAAY,MAAM,EAAG,CACxB,UAAW,KACnB,CACA,CAAK,CACL,CACA,EA+BAqtJ,GAAe1vJ,GAAc,SAAUrnB,GAAS,CAC9C,MAAMg3K,EAAc/wJ,GAAWjmB,EAAO,CACpC,eAAgBA,EAAM,kBACtB,YAAaA,EAAM,aACnB,sBAAuBA,EAAM,eAC7B,sBAAuBA,EAAM,KAAKA,EAAM,YAAY,EAAE,IAAI,GAAI,EAAE,MAAK,EACrE,uBAAwB,iBAAiBA,EAAM,cAAc,IAC7D,wBAAyB,MAC7B,CAAG,EACD,MAAO,CAAC62K,GAAeG,CAAW,EAElCP,GAAoBO,CAAW,EAE/BX,GAAqBW,CAAW,EAEhCZ,GAAsBY,CAAW,EAEjCtB,GAAoBsB,CAAW,CAAC,CAClC,EA/CqCh3K,GAAS,CAC5C,KAAM,CACJ,SAAA8d,EACA,WAAAc,EACA,cAAAhB,EACA,WAAAwsH,CACJ,EAAMpqI,EACEzM,EAASuqB,EAAWc,EACpBq4J,EAAWr5J,EAAgB,EAC3B0vD,EAAU,EACVwrF,EAAavlK,EAAS+5E,EAAU,EAChC0oG,EAAeiB,EAAW3pG,EAAU,EAC1C,MAAO,CACL,YAAa/5E,EACb,cAAe0jL,EACf,cAAene,EAAa,EAAIxrF,EAAU,EAC1C,gBAAiB0oG,EAAe,EAAI1oG,EAAU,EAC9C,aAAcA,EAEd,SAAU88D,EACV,WAAA0uB,EACA,aAAAkd,EACA,aAAc,eAAe,IAAIz+J,GAAU,SAAS,EAAE,KAAK,EAAG,EAAE,YAAW,CAAE,GAC7E,eAAgBuhJ,EAAa,EAC7B,eAAgBA,EAAaxrF,EAAUA,EAAU,EACjD,iBAAkB0oG,EAAe,EACjC,iBAAkBA,EAAe1oG,EAAUA,EAAU,CACzD,CACA,CAmBwB,ECzTxB,IAAIziD,GAAgC,SAAU/kD,EAAGe,EAAG,CAClD,IAAId,EAAI,CAAA,EACR,QAASe,KAAKhB,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGgB,CAAC,GAAKD,EAAE,QAAQC,CAAC,EAAI,IAAGf,EAAEe,CAAC,EAAIhB,EAAEgB,CAAC,GAC/F,GAAIhB,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WAAY,QAAS,EAAI,EAAGgB,EAAI,OAAO,sBAAsBhB,CAAC,EAAG,EAAIgB,EAAE,OAAQ,IAClID,EAAE,QAAQC,EAAE,CAAC,CAAC,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKhB,EAAGgB,EAAE,CAAC,CAAC,IAAGf,EAAEe,EAAE,CAAC,CAAC,EAAIhB,EAAEgB,EAAE,CAAC,CAAC,GAElG,OAAOf,CACT,EAuEA,MAAMivM,GA5D8BtyL,EAAM,WAAW,CAAC3G,EAAOP,IAAQ,CACnE,KAAM,CACF,UAAW8kC,EACX,KAAMuiC,EACN,SAAUC,EACV,QAAApP,EACA,UAAA5R,EACA,cAAAY,EACA,MAAAtkC,EACA,QAAS84K,EACT,MAAA5vM,EACA,eAAgB6vM,EAChB,aAAA9pM,EACA,SAAA42C,CACN,EAAQloC,EACJu9C,EAAYzO,GAAO9uC,EAAO,CAAC,YAAa,OAAQ,WAAY,UAAW,YAAa,gBAAiB,QAAS,UAAW,QAAS,iBAAkB,eAAgB,UAAU,CAAC,EAC3K,CAAC4rJ,EAASyvC,CAAU,EAAIrzJ,GAAe,GAAO,CAClD,MAAOmzJ,GAA+D5vM,EACtE,aAAc6vM,GAAoF9pM,CACtG,CAAG,EACK,CACJ,aAAAwzC,EACA,UAAAC,EACA,OAAQ4c,CACZ,EAAMh7C,EAAM,WAAW69B,EAAa,EAE5BhqB,EAAW7T,EAAM,WAAWi/B,EAAe,EAC3CqiC,GAAkBlB,GAAwEvsD,IAAam9C,EACvG5rB,EAAYjH,EAAa,SAAUP,CAAkB,EACrD40J,EAA2BxyL,EAAM,cAAc,MAAO,CAC1D,UAAW,GAAGolC,CAAS,SAC3B,EAAK4rB,GAAwBhxD,EAAM,cAAcmmD,GAAiB,CAC9D,UAAW,GAAG/gB,CAAS,eAC3B,CAAG,CAAC,EAEI,CAACM,EAAY1mB,EAAQ2mB,CAAS,EAAIX,GAASI,CAAS,EACpDiqB,EAAatB,GAAQoS,CAAa,EAClC16D,EAAUD,GAAWw1C,GAAW,KAA4B,OAASA,EAAO,UAAW,CAC3F,CAAC,GAAG5V,CAAS,QAAQ,EAAGiqB,IAAe,QACvC,CAAC,GAAGjqB,CAAS,UAAU,EAAG4rB,EAC1B,CAAC,GAAG5rB,CAAS,MAAM,EAAGhH,IAAc,KACxC,EAAKghB,EAAWY,EAAehhC,EAAQ2mB,CAAS,EACxC1Z,EAAc,OAAO,OAAO,OAAO,OAAO,CAAA,EAAI+uB,GAAW,KAA4B,OAASA,EAAO,KAAK,EAAGt/B,CAAK,EAClHi5K,EAAgB,IAAI5tM,IAAS,CACjC2tM,EAAW3tM,EAAK,CAAC,CAAC,EAClBw6C,GAAa,MAAuCA,EAAS,MAAM,OAAQx6C,CAAI,CACjF,EACA,OAAO2+C,EAAwB1lC,EAAM,cAAc6tD,GAAM,CACvD,UAAW,QACf,EAAkB7tD,EAAM,cAAc40L,GAAU,OAAO,OAAO,CAAA,EAAIh+I,EAAW,CACzE,QAASquG,EACT,SAAU0vC,EACV,UAAWvvJ,EACX,UAAW3/B,EACX,MAAOwmB,EACP,SAAUq1C,EACV,IAAKxoE,EACL,YAAa05L,CACjB,CAAG,CAAC,CAAC,CAAC,CACN,CAAC,EAEDF,GAAO,aAAe,GAClB,QAAQ,IAAI,WAAa,eAC3BA,GAAO,YAAc,UChEvB,MAAAnvK,GAAe,CAEb,YAAaia,GAAc,MAC7B,iBACEy3J,EAcF,ECzBMC,GAAgB,CAAC15J,EAAUc,EAAYzG,EAAOnY,IAAU,CAC5D,KAAM,CACJ,kBAAAy3K,EACA,iBAAA3wD,CACJ,EAAM9mH,EACJ,MAAO,CACL,aAAcy3K,EACd,MAAAt/J,EACA,WAAY2uG,EACZ,SAAAhpG,EACA,WAAAc,CACJ,CACA,EACa84J,GAAiB13K,GAAS,CACrC,MAAM23K,EAAW,CAAC,EAAG,EAAG,EAAG,EAAG,CAAC,EACzBjlL,EAAS,CAAA,EACf,OAAAilL,EAAS,QAAQC,GAAgB,CAC/BllL,EAAO;AAAA,SACFklL,CAAY;AAAA,cACPA,CAAY;AAAA,cACZA,CAAY;AAAA,SACjBA,CAAY;AAAA,KAChB,EAAIJ,GAAcx3K,EAAM,kBAAkB43K,CAAY,EAAE,EAAG53K,EAAM,oBAAoB43K,CAAY,EAAE,EAAG53K,EAAM,iBAAkBA,CAAK,CACtI,CAAC,EACMtN,CACT,EACamlL,GAAgB73K,GAAS,CACpC,KAAM,CACJ,aAAA0pB,CACJ,EAAM1pB,EACJ,MAAO,CACL,QAAS,OAAO,OAAO,OAAO,OAAO,GAAI+sB,GAAc/sB,CAAK,CAAC,EAAG,CAC9D,WAAY,OACZ,CAAC,iBAAiB0pB,CAAY,WAAW,EAAG,CAC1C,MAAO1pB,EAAM,kBACb,OAAQ,cACR,oBAAqB,CACnB,MAAOA,EAAM,iBACvB,EACQ,WAAY,CACV,cAAe,MACzB,CACA,CACA,CAAK,CACL,CACA,EACaknB,GAAiBlnB,IAAU,CACtC,KAAM,CACJ,OAAQ,UACR,cAAe,QACf,aAAc,cACd,SAAU,MACV,WAAYA,EAAM,eAClB,WAAY,2BACZ,OAAQ,qCACR,aAAc,CAClB,EACE,IAAK,CACH,OAAQ,UACR,cAAe,QACf,aAAc,eACd,SAAU,MACV,WAAYA,EAAM,eAClB,WAAY,4BACZ,OAAQ,qCACR,kBAAmB,EACnB,aAAc,CAClB,EACE,KAAM,CACJ,QAAS,EAET,gBAAiBib,GAAK,CAAC,CAC3B,EACE,SAAU,CACR,eAAgB,YAChB,sBAAuB,MAC3B,EACE,SAAU,CACR,eAAgB,cACpB,EACE,OAAQ,CACN,WAAYjb,EAAM,gBACtB,EAEE,SAAU,CACR,aAAc,EACd,YAAa,QACb,QAAS,EACT,GAAI,CACF,aAAc,SACd,YAAa,EACb,cAAe,QACf,aAAc,CACpB,CACA,EACE,GAAI,CACF,cAAe,SACf,GAAI,CACF,cAAe,MACrB,CACA,EACE,GAAI,CACF,cAAe,SACnB,EAEE,kBAAmB,CACjB,OAAQ,OACZ,EACE,IAAK,CACH,QAAS,cACT,WAAY,WACZ,SAAU,aACV,WAAY,2BACZ,OAAQ,qCACR,aAAc,EACd,WAAYA,EAAM,eAElB,KAAM,CACJ,QAAS,SACT,OAAQ,EACR,QAAS,EACT,SAAU,UACV,WAAY,UACZ,WAAY,cACZ,OAAQ,CACd,CACA,EACE,WAAY,CACV,cAAe,UACf,aAAc,EACd,kBAAmB,qCACnB,QAAS,GACb,CACA,GACa83K,GAAoB93K,GAAS,CACxC,KAAM,CACJ,aAAA0pB,EACA,UAAA2oG,CACJ,EAAMryH,EACE+3K,EAAa1lD,EACnB,MAAO,CACL,iBAAkB,CAChB,SAAU,WACV,OAAQ,CACN,iBAAkBryH,EAAM,KAAKA,EAAM,SAAS,EAAE,IAAI,EAAE,EAAE,MAAK,EAC3D,UAAWA,EAAM,KAAK+3K,CAAU,EAAE,IAAI,EAAE,EAAE,MAAK,EAC/C,aAAc,cAAcj3K,GAAKi3K,CAAU,CAAC,GACpD,EACM,CAAC,GAAGruJ,CAAY,uBAAuB,EAAG,CACxC,SAAU,WACV,eAAgB1pB,EAAM,KAAKA,EAAM,QAAQ,EAAE,IAAI,CAAC,EAAE,MAAK,EACvD,cAAeA,EAAM,SACrB,MAAOA,EAAM,UAEb,WAAY,SACZ,SAAUA,EAAM,SAChB,UAAW,SACX,cAAe,MACvB,EACM,SAAU,CACR,OAAQ,cAER,cAAe,OACf,OAAQ,KAChB,CACA,CACA,CACA,EACag4K,GAAoBh4K,IAAU,CACzC,CAAC,GAAGA,EAAM,YAAY,eAAe,EAAG,CACrC,sCAGU,CACT,MAAOA,EAAM,YACnB,CACA,EACE,CAAC,GAAGA,EAAM,YAAY,iBAAiB,EAAG,CACxC,kBAAmB,CACvB,CACA,GACai4K,GAAoB,KAAO,CACrC,yCAGG,CACF,QAAS,eACT,SAAU,MACd,EACE,yBAA0B,CACxB,WAAY,SACZ,SAAU,SACV,aAAc,WAEd,YAAa,CACX,cAAe,QACrB,EACI,SAAU,CACR,aAAc,EACd,SAAU,qBACV,QAAS,eACT,SAAU,SACV,aAAc,WACd,cAAe,SAEf,UAAW,aACjB,CACA,EACE,2BAA4B,CAC1B,QAAS,cACT,SAAU,SACV,gBAAiB,EACjB,gBAAiB,UACrB,CACA,GC/NMC,GAAqBl4K,GAAS,CAClC,KAAM,CACJ,aAAA0pB,EACA,eAAAyuJ,CACJ,EAAMn4K,EACJ,MAAO,CACL,CAAC0pB,CAAY,EAAG,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAC5I,MAAO1pB,EAAM,UACb,UAAW,aACX,WAAYA,EAAM,WAClB,CAAC,IAAI0pB,CAAY,YAAY,EAAG,CAC9B,MAAO1pB,EAAM,oBACrB,EACM,CAAC,IAAI0pB,CAAY,UAAU,EAAG,CAC5B,MAAO1pB,EAAM,gBACrB,EACM,CAAC,IAAI0pB,CAAY,UAAU,EAAG,CAC5B,MAAO1pB,EAAM,gBACrB,EACM,CAAC,IAAI0pB,CAAY,SAAS,EAAG,CAC3B,MAAO1pB,EAAM,eACb,sBAAuB,CACrB,MAAOA,EAAM,oBACvB,EACQ,WAAY,CACV,MAAOA,EAAM,mBACvB,CACA,EACM,CAAC,IAAI0pB,CAAY,WAAW,EAAG,CAC7B,MAAO1pB,EAAM,kBACb,OAAQ,cACR,WAAY,MACpB,EACO,qCAGG,CACF,aAAc,KACtB,CACA,EAAO03K,GAAe13K,CAAK,CAAC,EAAG,CACzB,CAAC;AAAA,cACO0pB,CAAY;AAAA,cACZA,CAAY;AAAA,cACZA,CAAY;AAAA,cACZA,CAAY;AAAA,cACZA,CAAY;AAAA,OACnB,EAAG,CACF,UAAWyuJ,CACnB,EACO,qGASK,CACH,uFAMG,CACF,UAAWA,CACrB,CACA,CACA,CAAK,EAAGjxJ,GAAelnB,CAAK,CAAC,EAAG63K,GAAc73K,CAAK,CAAC,EAAG,CAEjD,CAAC;AAAA,UACG0pB,CAAY;AAAA,UACZA,CAAY;AAAA,UACZA,CAAY;AAAA,UACZA,CAAY;AAAA,OACf,EAAG,OAAO,OAAO,OAAO,OAAO,GAAIqD,GAAc/sB,CAAK,CAAC,EAAG,CACzD,kBAAmBA,EAAM,SACjC,CAAO,CACP,CAAK,EAAG83K,GAAkB93K,CAAK,CAAC,EAAGg4K,GAAkBh4K,CAAK,CAAC,EAAGi4K,GAAiB,CAAE,EAAG,CAC9E,QAAS,CACP,UAAW,KACnB,CACA,CAAK,CACL,CACA,EAMAG,GAAe/wJ,GAAc,aAAcrnB,GAAS,CAACk4K,GAAmBl4K,CAAK,CAAC,EALzC,KAAO,CAC1C,eAAgB,QAChB,kBAAmB,OACrB,EAEsG,ECrFhGq4K,GAAWt8L,GAAS,CACxB,KAAM,CACJ,UAAA+rC,EACA,aAAc0nJ,EACd,UAAA1tI,EACA,MAAA1jC,EACA,UAAA0iB,EACA,UAAAmkE,EACA,SAAA4+E,EAAW,GACX,MAAAv8L,EACA,OAAAgxM,EACA,SAAAvxH,EACA,MAAAwxH,EACA,UAAAtkK,EACA,UAAAukK,EAAyB91L,EAAM,cAAcmxL,GAAe,IAAI,CACpE,EAAM93L,EACEP,EAAMkH,EAAM,OAAO,IAAI,EACvB+1L,EAAgB/1L,EAAM,OAAO,EAAK,EAClCg2L,EAAch2L,EAAM,OAAO,IAAI,EAC/B,CAACzZ,EAASwhM,CAAU,EAAI/nL,EAAM,SAASpb,CAAK,EAClDob,EAAM,UAAU,IAAM,CACpB+nL,EAAWnjM,CAAK,CAClB,EAAG,CAACA,CAAK,CAAC,EACVob,EAAM,UAAU,IAAM,CACpB,IAAI9Y,EACJ,GAAK,GAAAA,EAAK4R,EAAI,WAAa,MAAQ5R,IAAO,SAAkBA,EAAG,kBAAmB,CAChF,KAAM,CACJ,SAAAyzD,CACR,EAAU7hD,EAAI,QAAQ,kBAChB6hD,EAAS,MAAK,EACd,KAAM,CACJ,OAAAt0B,CACR,EAAUs0B,EAAS,MACbA,EAAS,kBAAkBt0B,EAAQA,CAAM,CAC3C,CACF,EAAG,CAAA,CAAE,EACL,MAAMkb,EAAW,CAAC,CAChB,OAAAz8C,CACJ,IAAQ,CACJijM,EAAWjjM,EAAO,MAAM,QAAQ,UAAW,EAAE,CAAC,CAChD,EACMy9L,EAAqB,IAAM,CAC/BwT,EAAc,QAAU,EAC1B,EACM5tB,EAAmB,IAAM,CAC7B4tB,EAAc,QAAU,EAC1B,EACMj3E,EAAY,CAAC,CACjB,QAAA47D,CACJ,IAAQ,CAEAqb,EAAc,UAClBC,EAAY,QAAUtb,EACxB,EACMub,EAAgB,IAAM,CAC1BL,EAAOrvM,EAAQ,MAAM,CACvB,EACMs4H,EAAU,CAAC,CACf,QAAA67D,EACA,QAAAtkD,EACA,OAAA8/D,EACA,QAAAC,EACA,SAAAnvE,CACJ,IAAQ,CAEAgvE,EAAY,UAAYtb,GAAWqb,EAAc,SAAW3/D,GAAW8/D,GAAUC,GAAWnvE,IAG5F0zD,IAAYx0H,GAAQ,OACtB+vI,EAAa,EACbJ,GAAU,MAAoCA,EAAK,GAC1Cnb,IAAYx0H,GAAQ,KAC7Bme,EAAQ,EAEZ,EACMu6C,EAAS,IAAM,CACnBq3E,EAAa,CACf,EACM,CAACvwJ,EAAY1mB,EAAQ2mB,CAAS,EAAIX,GAASI,CAAS,EACpDgxJ,EAAoB5wL,GAAW4/B,EAAW,GAAGA,CAAS,gBAAiB,CAC3E,CAAC,GAAGA,CAAS,MAAM,EAAGhH,IAAc,MACpC,CAAC,GAAGgH,CAAS,IAAI7T,CAAS,EAAE,EAAG,CAAC,CAACA,CACrC,EAAK6tB,EAAWpgC,EAAQ2mB,CAAS,EAC/B,OAAOD,EAAwB1lC,EAAM,cAAc,MAAO,CACxD,UAAWo2L,EACX,MAAO16K,CACX,EAAkB1b,EAAM,cAAcoiL,GAAU,CAC5C,IAAKtpL,EACL,UAAWypG,EACX,MAAOh8G,EACP,SAAUg7C,EACV,UAAWu9E,EACX,QAASD,EACT,mBAAoB0jE,EACpB,iBAAkBpa,EAClB,OAAQvpD,EACR,aAAckuE,EACd,KAAM,EACN,SAAU3L,CACd,CAAG,EAAG2U,IAAc,KAAOt0I,GAAas0I,EAAW,CAC/C,UAAW,GAAG1wJ,CAAS,uBAC3B,CAAG,EAAI,IAAI,CAAC,CACZ,EC9GA,IAAAixJ,GAAiB,UAAY,CAC3B,IAAIhuB,EAAY,SAAS,aAAY,EACrC,GAAI,CAACA,EAAU,WACb,OAAO,UAAY,CAAA,EAKrB,QAHIt1H,EAAS,SAAS,cAElBujJ,EAAS,CAAA,EACJ9vM,EAAI,EAAGA,EAAI6hL,EAAU,WAAY7hL,IACxC8vM,EAAO,KAAKjuB,EAAU,WAAW7hL,CAAC,CAAC,EAGrC,OAAQusD,EAAO,QAAQ,YAAW,EAAE,CAClC,IAAK,QACL,IAAK,WACHA,EAAO,KAAI,EACX,MAEF,QACEA,EAAS,KACT,KACN,CAEE,OAAAs1H,EAAU,gBAAe,EAClB,UAAY,CACjBA,EAAU,OAAS,SACnBA,EAAU,gBAAe,EAEpBA,EAAU,YACbiuB,EAAO,QAAQ,SAAS3lH,EAAO,CAC7B03F,EAAU,SAAS13F,CAAK,CAChC,CAAO,EAGH59B,GACAA,EAAO,MAAK,CAChB,CACA,ECpCIwjJ,GAAkB/qL,GAElBgrL,GAA4B,CAC9B,aAAc,OACd,YAAa,MACb,QAAW,MACb,EAEIC,GAAiB,mCAErB,SAASlkM,GAAOqO,EAAS,CACvB,IAAI81L,GAAW,YAAY,KAAK,UAAU,SAAS,EAAI,IAAM,QAAU,KACvE,OAAO91L,EAAQ,QAAQ,gBAAiB81L,CAAO,CACjD,CAEA,SAASxzM,GAAKiV,EAAM9Q,EAAS,CAC3B,IAAI09E,EACFnkE,EACA+1L,EACAhmH,EACA03F,EACApwJ,EACA2+K,EAAU,GACPvvM,IACHA,EAAU,CAAA,GAEZ09E,EAAQ19E,EAAQ,OAAS,GACzB,GAAI,CACFsvM,EAAmBJ,GAAe,EAElC5lH,EAAQ,SAAS,YAAW,EAC5B03F,EAAY,SAAS,aAAY,EAEjCpwJ,EAAO,SAAS,cAAc,MAAM,EACpCA,EAAK,YAAc9f,EAEnB8f,EAAK,WAAa,OAElBA,EAAK,MAAM,IAAM,QAEjBA,EAAK,MAAM,SAAW,QACtBA,EAAK,MAAM,IAAM,EACjBA,EAAK,MAAM,KAAO,mBAElBA,EAAK,MAAM,WAAa,MAExBA,EAAK,MAAM,iBAAmB,OAC9BA,EAAK,MAAM,cAAgB,OAC3BA,EAAK,MAAM,aAAe,OAC1BA,EAAK,MAAM,WAAa,OACxBA,EAAK,iBAAiB,OAAQ,SAAS9zB,EAAG,CAExC,GADAA,EAAE,gBAAe,EACbkD,EAAQ,OAEV,GADAlD,EAAE,eAAc,EACZ,OAAOA,EAAE,cAAkB,IAAa,CAC1C4gF,GAAS,QAAQ,KAAK,+BAA+B,EACrDA,GAAS,QAAQ,KAAK,0BAA0B,EAChD,OAAO,cAAc,UAAS,EAC9B,IAAIxyE,EAASikM,GAA0BnvM,EAAQ,MAAM,GAAKmvM,GAA0B,QACpF,OAAO,cAAc,QAAQjkM,EAAQ4F,CAAI,CACnD,MACUhU,EAAE,cAAc,UAAS,EACzBA,EAAE,cAAc,QAAQkD,EAAQ,OAAQ8Q,CAAI,EAG5C9Q,EAAQ,SACVlD,EAAE,eAAc,EAChBkD,EAAQ,OAAOlD,EAAE,aAAa,EAEtC,CAAK,EAED,SAAS,KAAK,YAAY8zB,CAAI,EAE9B04D,EAAM,mBAAmB14D,CAAI,EAC7BowJ,EAAU,SAAS13F,CAAK,EAExB,IAAIkmH,EAAa,SAAS,YAAY,MAAM,EAC5C,GAAI,CAACA,EACH,MAAM,IAAI,MAAM,+BAA+B,EAEjDD,EAAU,EACd,OAAWljM,EAAK,CACZqxE,GAAS,QAAQ,MAAM,qCAAsCrxE,CAAG,EAChEqxE,GAAS,QAAQ,KAAK,0BAA0B,EAChD,GAAI,CACF,OAAO,cAAc,QAAQ19E,EAAQ,QAAU,OAAQ8Q,CAAI,EAC3D9Q,EAAQ,QAAUA,EAAQ,OAAO,OAAO,aAAa,EACrDuvM,EAAU,EAChB,OAAaljM,EAAK,CACZqxE,GAAS,QAAQ,MAAM,uCAAwCrxE,CAAG,EAClEqxE,GAAS,QAAQ,MAAM,wBAAwB,EAC/CnkE,EAAUrO,GAAO,YAAalL,EAAUA,EAAQ,QAAUovM,EAAc,EACxE,OAAO,OAAO71L,EAASzI,CAAI,CACjC,CACA,QAAG,CACKkwK,IACE,OAAOA,EAAU,aAAe,WAClCA,EAAU,YAAY13F,CAAK,EAE3B03F,EAAU,gBAAe,GAIzBpwJ,GACF,SAAS,KAAK,YAAYA,CAAI,EAEhC0+K,EAAgB,CACpB,CAEE,OAAOC,CACT,CAEA,IAAAE,GAAiB5zM,mBClHjB,IAAI6zM,GAAsC,SAAUC,EAASC,EAAYC,EAAGC,EAAW,CACrF,SAASC,EAAMxyM,EAAO,CACpB,OAAOA,aAAiBsyM,EAAItyM,EAAQ,IAAIsyM,EAAE,SAAUp0M,EAAS,CAC3DA,EAAQ8B,CAAK,CACf,CAAC,CACH,CACA,OAAO,IAAKsyM,IAAMA,EAAI,UAAU,SAAUp0M,EAASC,EAAQ,CACzD,SAASs0M,EAAUzyM,EAAO,CACxB,GAAI,CACFqqD,EAAKkoJ,EAAU,KAAKvyM,CAAK,CAAC,CAC5B,OAAST,EAAG,CACVpB,EAAOoB,CAAC,CACV,CACF,CACA,SAASmzM,EAAS1yM,EAAO,CACvB,GAAI,CACFqqD,EAAKkoJ,EAAU,MAASvyM,CAAK,CAAC,CAChC,OAAST,EAAG,CACVpB,EAAOoB,CAAC,CACV,CACF,CACA,SAAS8qD,EAAK1mD,EAAQ,CACpBA,EAAO,KAAOzF,EAAQyF,EAAO,KAAK,EAAI6uM,EAAM7uM,EAAO,KAAK,EAAE,KAAK8uM,EAAWC,CAAQ,CACpF,CACAroJ,GAAMkoJ,EAAYA,EAAU,MAAMH,EAASC,GAAc,CAAA,CAAE,GAAG,MAAM,CACtE,CAAC,CACH,EAKA,MAAMM,GAAe,CAAC,CACpB,WAAAC,EACA,SAAApxL,CACF,IAAM,CACJ,KAAM,CAACqxL,EAAQC,CAAS,EAAI13L,EAAM,SAAS,EAAK,EAC1C,CAAC23L,EAAaC,CAAc,EAAI53L,EAAM,SAAS,EAAK,EACpD63L,EAAY73L,EAAM,OAAO,IAAI,EAC7B83L,EAAc,IAAM,CACpBD,EAAU,SACZ,aAAaA,EAAU,OAAO,CAElC,EACME,EAAc,CAAA,EAChBP,EAAW,SACbO,EAAY,OAASP,EAAW,QAElCx3L,EAAM,UAAU,IAAM83L,EAAa,EAAE,EAErC,MAAMz4I,EAAU5e,GAASt8C,GAAK4yM,GAAU,OAAQ,OAAQ,OAAQ,WAAa,CAC3E,IAAI7vM,EACJ/C,GAAM,MAAgCA,EAAE,eAAc,EACtDA,GAAM,MAAgCA,EAAE,gBAAe,EACvDyzM,EAAe,EAAI,EACnB,GAAI,CACF,MAAMz/L,EAAO,OAAOq/L,EAAW,MAAS,WAAa,MAAMA,EAAW,OAASA,EAAW,KAC1Ft0M,GAAKiV,GAAQi4L,GAAOhqL,EAAU,EAAI,EAAE,KAAK,EAAE,GAAK,GAAI2xL,CAAW,EAC/DH,EAAe,EAAK,EACpBF,EAAU,EAAI,EAEdI,EAAW,EACXD,EAAU,QAAU,WAAW,IAAM,CACnCH,EAAU,EAAK,CACjB,EAAG,GAAI,GACNxwM,EAAKswM,EAAW,UAAY,MAAQtwM,IAAO,QAAkBA,EAAG,KAAKswM,EAAYrzM,CAAC,CACrF,OAAS0O,EAAO,CACd,MAAA+kM,EAAe,EAAK,EACd/kM,CACR,CACF,CAAC,CAAC,EACF,MAAO,CACL,OAAA4kM,EACA,YAAAE,EACA,QAAAt4I,CACJ,CACA,EC1Ee,SAAS24I,GAAgBC,EAAYC,EAAgB,CAClE,OAAOl4L,EAAM,QAAQ,IAAM,CACzB,MAAMm4L,EAAU,CAAC,CAACF,EAClB,MAAO,CAACE,EAAS,OAAO,OAAO,OAAO,OAAO,CAAA,EAAID,CAAc,EAAGC,GAAW,OAAOF,GAAe,SAAWA,EAAa,IAAI,CAAC,CAClI,EAAG,CAACA,CAAU,CAAC,CACjB,CCLA,MAAMr/L,GAAchU,GAAS,CAC3B,MAAMkU,EAAMC,EAAAA,OAAO,MAAS,EAC5BC,OAAAA,EAAAA,UAAU,IAAM,CACdF,EAAI,QAAUlU,CAChB,CAAC,EACMkU,EAAI,OACb,ECNMs/L,GAAkB,CAACh8I,EAASi8I,EAAgBjyL,IAAasF,EAAAA,QAAQ,IACjE0wC,IAAY,GACP,CACL,MAAOi8I,GAAwEjyL,CACrF,EAEmB2G,EAAAA,eAAeqvC,CAAO,EAC9B,CACL,MAAOA,CACb,EAEM,OAAOA,GAAY,SACd,OAAO,OAAO,CACnB,MAAOi8I,GAAwEjyL,CACrF,EAAOg2C,CAAO,EAEL,CACL,MAAOA,CACX,EACG,CAACA,EAASi8I,EAAgBjyL,CAAQ,CAAC,EClBtC,IAAI+hC,GAAgC,SAAU/kD,EAAGe,EAAG,CAClD,IAAId,EAAI,CAAA,EACR,QAASe,KAAKhB,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGgB,CAAC,GAAKD,EAAE,QAAQC,CAAC,EAAI,IAAGf,EAAEe,CAAC,EAAIhB,EAAEgB,CAAC,GAC/F,GAAIhB,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WAAY,QAAS,EAAI,EAAGgB,EAAI,OAAO,sBAAsBhB,CAAC,EAAG,EAAIgB,EAAE,OAAQ,IAClID,EAAE,QAAQC,EAAE,CAAC,CAAC,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKhB,EAAGgB,EAAE,CAAC,CAAC,IAAGf,EAAEe,EAAE,CAAC,CAAC,EAAIhB,EAAEgB,EAAE,CAAC,CAAC,GAElG,OAAOf,CACT,EAOA,MAAMi1M,GAA0Bt4L,EAAM,WAAW,CAAC3G,EAAOP,IAAQ,CAC/D,KAAM,CACF,UAAW8kC,EACX,UAAWiZ,EAAY,UACvB,UAAAuI,EACA,cAAAY,EACA,cAAAu4I,EACA,SAAAnyL,EACA,UAAWoyL,EACX,MAAA98K,CACN,EAAQriB,EACJu9C,EAAYzO,GAAO9uC,EAAO,CAAC,YAAa,YAAa,YAAa,gBAAiB,gBAAiB,WAAY,YAAa,OAAO,CAAC,EACjI,CACJ,aAAA8kC,EACA,UAAWwpG,EACX,UAAWviF,EACX,MAAOC,CACX,EAAMrnB,GAAmB,YAAY,EAC7BI,EAAYo6J,GAAuF7wD,EACnGtzH,EAAYkkL,EAAgBrsL,GAAWpT,EAAKy/L,CAAa,EAAIz/L,EAC7DssC,EAAYjH,EAAa,aAAcP,CAAkB,EAC3D,QAAQ,IAAI,WAAa,cACXlM,GAAc,YAAY,EAClC,WAAW,CAAC6mK,EAAe,gBAAiB,KAAK,EAG3D,KAAM,CAAC7yJ,EAAY1mB,EAAQ2mB,CAAS,EAAIX,GAASI,CAAS,EACpDqzJ,EAAqBjzL,GAAW4/B,EAAWggB,EAAkB,CACjE,CAAC,GAAGhgB,CAAS,MAAM,EAAGhH,IAAc,KACxC,EAAKghB,EAAWY,EAAehhC,EAAQ2mB,CAAS,EACxC1Z,EAAc,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIo5B,CAAY,EAAG3pC,CAAK,EACxE,OAAOgqB,EAGP1lC,EAAM,cAAc62C,EAAW,OAAO,OAAO,CAC3C,UAAW4hJ,EACX,MAAOxsK,EACP,IAAK5X,CACT,EAAKuiC,CAAS,EAAGxwC,CAAQ,CAAC,CAC1B,CAAC,EACG,QAAQ,IAAI,WAAa,eAC3BkyL,GAAW,YAAc,cCzDpB,SAASlI,GAAOphM,EAAK,CAC1B,OAAIA,IAAQ,GACH,CAAC,GAAO,EAAK,EAEf,MAAM,QAAQA,CAAG,EAAIA,EAAM,CAACA,CAAG,CACxC,CACO,SAAS0pM,GAAQtlG,EAAKulG,EAAaC,EAAS,CACjD,OAAIxlG,IAAQ,IAAQA,IAAQ,OACnBulG,EAEFvlG,GAAOwlG,GAAWD,CAC3B,CAOO,SAASE,GAAc5rL,EAAK,CAEjC,MAAM6rL,EAAW,SAAS,cAAc,IAAI,EAC5C7rL,EAAI,YAAY6rL,CAAQ,EAEpB,QAAQ,IAAI,WAAa,eAC3BA,EAAS,UAAY,+CAEvB,MAAMvnL,EAAOtE,EAAI,sBAAqB,EAChC8rL,EAAYD,EAAS,sBAAqB,EAEhD,OAAA7rL,EAAI,YAAY6rL,CAAQ,EAItBvnL,EAAK,KAAOwnL,EAAU,MAAQA,EAAU,MAAQxnL,EAAK,OAErDA,EAAK,IAAMwnL,EAAU,KAAOA,EAAU,OAASxnL,EAAK,MAExD,CACO,MAAMynL,GAAchqM,GAAO,CAAC,SAAU,QAAQ,EAAE,SAAS,OAAOA,CAAG,EC7BpEiqM,GAAU,CAAC,CACf,UAAA7zJ,EACA,OAAAqyJ,EACA,OAAAvlK,EACA,SAAAgnK,EACA,SAAAC,EACA,KAAAh6I,EACA,SAAAW,EACA,OAAAs5I,EACA,QAASC,CACX,IAAM,CACJ,MAAMC,EAAelJ,GAAO+I,CAAQ,EAC9BI,EAAYnJ,GAAOjxI,CAAI,EACvB,CACJ,OAAQq6I,EACR,KAAMC,CACV,EAAMvnK,GAAgD,CAAA,EAC9CwnK,EAAYjC,EAAS+B,EAAaC,EAClCE,EAAYjB,GAAQY,EAAa7B,EAAS,EAAI,CAAC,EAAGiC,CAAS,EAC3D5M,EAAY,OAAO6M,GAAc,SAAWA,EAAYD,EAC9D,OAAoB15L,EAAM,cAAc4qI,GAAS,CAC/C,MAAO+uD,CACX,EAAkB35L,EAAM,cAAc,SAAU,CAC5C,KAAM,SACN,UAAWwF,GAAW,GAAG4/B,CAAS,QAAS,CACzC,CAAC,GAAGA,CAAS,eAAe,EAAGqyJ,EAC/B,CAAC,GAAGryJ,CAAS,iBAAiB,EAAG8zJ,CACvC,CAAK,EACD,QAASE,EACT,aAActM,EACd,SAAUhtI,CACd,EAAK23I,EAASiB,GAAQa,EAAU,CAAC,EAAgBv5L,EAAM,cAAcmmI,GAAe,IAAI,EAAG,EAAI,EAAIuyD,GAAQa,EAAU,CAAC,EAAGF,EAA0Br5L,EAAM,cAAcmmD,GAAiB,IAAI,EAAiBnmD,EAAM,cAAc6wL,GAAc,IAAI,EAAG,EAAI,CAAC,CAAC,CAC5P,EClCM+I,GAA2B55L,EAAM,WAAW,CAAC,CACjD,MAAA0b,EACA,SAAAtV,CACF,EAAGtN,IAAQ,CACT,MAAM+gM,EAAU75L,EAAM,OAAO,IAAI,EACjCA,OAAAA,EAAM,oBAAoBlH,EAAK,KAAO,CACpC,SAAU,IAAM,CACd,MAAMqmK,EAAO06B,EAAQ,QACrB,OAAO16B,EAAK,aAAeA,EAAK,YAClC,EACA,UAAW,IAAM06B,EAAQ,QAAQ,YACrC,EAAI,EACkB75L,EAAM,cAAc,OAAQ,CAC9C,cAAe,GACf,IAAK65L,EACL,MAAO,OAAO,OAAO,CACnB,SAAU,QACV,QAAS,QACT,KAAM,EACN,IAAK,EACL,cAAe,OACf,gBAAiB,uBACvB,EAAOn+K,CAAK,CACZ,EAAKtV,CAAQ,CACb,CAAC,EACK0zL,GAAcC,GAAYA,EAAS,OAAO,CAACC,EAAUvyL,IAASuyL,GAAYhB,GAAYvxL,CAAI,EAAI,OAAOA,CAAI,EAAE,OAAS,GAAI,CAAC,EAC/H,SAASwyL,GAAWF,EAAUviL,EAAK,CACjC,IAAI0iL,EAAU,EACd,MAAMC,EAAkB,CAAA,EACxB,QAAS,EAAI,EAAG,EAAIJ,EAAS,OAAQ,GAAK,EAAG,CAE3C,GAAIG,IAAY1iL,EACd,OAAO2iL,EAET,MAAM1yL,EAAOsyL,EAAS,CAAC,EAEjBK,EADSpB,GAAYvxL,CAAI,EACN,OAAOA,CAAI,EAAE,OAAS,EACzC4yL,EAAUH,EAAUE,EAG1B,GAAIC,EAAU7iL,EAAK,CACjB,MAAM8iL,EAAU9iL,EAAM0iL,EACtB,OAAAC,EAAgB,KAAK,OAAO1yL,CAAI,EAAE,MAAM,EAAG6yL,CAAO,CAAC,EAC5CH,CACT,CACAA,EAAgB,KAAK1yL,CAAI,EACzByyL,EAAUG,CACZ,CACA,OAAON,CACT,CAEA,MAAMQ,GAAsB,EACtBC,GAAyB,EACzBC,GAAuB,EACvBC,GAA+B,EAC/BC,GAAkC,EAClCC,GAAgB,CACpB,QAAS,cACT,SAAU,SACV,gBAAiB,UACnB,EACe,SAASC,GAAgBxhM,EAAO,CAC7C,KAAM,CACJ,cAAAyhM,EACA,MAAAlqL,EACA,KAAAzY,EACA,SAAAiO,EACA,KAAA0lF,EACA,SAAAivG,EACA,SAAAC,EACA,WAAAC,CACJ,EAAM5hM,EACE0gM,EAAW/5L,EAAM,QAAQ,IAAMmG,GAAQhO,CAAI,EAAG,CAACA,CAAI,CAAC,EACpDiiM,EAAUp6L,EAAM,QAAQ,IAAM85L,GAAYC,CAAQ,EAAG,CAAC5hM,CAAI,CAAC,EAG3D+iM,EAAcl7L,EAAM,QAAQ,IAAMoG,EAAS2zL,EAAU,EAAK,EAAG,CAAC5hM,CAAI,CAAC,EAEnE,CAACgjM,EAAkBC,CAAmB,EAAIp7L,EAAM,SAAS,IAAI,EAC7Dq7L,EAAYr7L,EAAM,OAAO,IAAI,EAE7Bs7L,EAAuBt7L,EAAM,OAAO,IAAI,EACxCu7L,EAAkBv7L,EAAM,OAAO,IAAI,EAEnCw7L,EAAsBx7L,EAAM,OAAO,IAAI,EACvCy7L,EAAuBz7L,EAAM,OAAO,IAAI,EACxC,CAAC07L,EAAaC,CAAc,EAAI37L,EAAM,SAAS,EAAK,EACpD,CAAC47L,EAAcC,CAAe,EAAI77L,EAAM,SAASu6L,EAAmB,EACpE,CAACuB,EAAgBC,CAAiB,EAAI/7L,EAAM,SAAS,CAAC,EACtD,CAACg8L,EAAkBC,CAAmB,EAAIj8L,EAAM,SAAS,IAAI,EAEnE0f,GAAgB,IAAM,CAElBm8K,EADEf,GAAiBlqL,GAASwpL,EACZI,GAEAD,EAFsB,CAI1C,EAAG,CAAC3pL,EAAOzY,EAAM2zF,EAAMgvG,EAAef,CAAQ,CAAC,EAE/Cr6K,GAAgB,IAAM,CACpB,IAAIx4B,EAAID,EAAIqN,EAAID,EAChB,GAAIunM,IAAiBpB,GAAwB,CAC3CqB,EAAgBpB,EAAoB,EAEpC,MAAMyB,EAAiBZ,EAAqB,SAAW,iBAAiBA,EAAqB,OAAO,EAAE,WACtGW,EAAoBC,CAAc,CACpC,SAAWN,IAAiBnB,GAAsB,CAChD,MAAM1zH,EAAa,CAAC,EAAG,GAAA7/E,EAAKq0M,EAAgB,WAAa,MAAQr0M,IAAO,SAAkBA,EAAG,SAAQ,GACrG20M,EAAgB90H,EAAa2zH,GAA+BC,EAA+B,EAC3FS,EAAoBr0H,EAAa,CAAC,EAAGqzH,CAAO,EAAI,IAAI,EACpDuB,EAAe50H,CAAU,EAEzB,MAAMo1H,IAA2Bl1M,EAAKs0M,EAAgB,WAAa,MAAQt0M,IAAO,OAAS,OAASA,EAAG,UAAS,IAAO,EAEjHm1M,EAAyBtwG,IAAS,EAAI,IAAMx3F,EAAKknM,EAAoB,WAAa,MAAQlnM,IAAO,OAAS,OAASA,EAAG,UAAS,IAAO,EACtI+nM,IAA4BhoM,EAAKonM,EAAqB,WAAa,MAAQpnM,IAAO,OAAS,OAASA,EAAG,UAAS,IAAO,EACvHioM,EAAgB,KAAK,IAAIH,EAE/BC,EAAyBC,CAAuB,EAChDN,EAAkBO,EAAgB,CAAC,EACnCrB,EAAWl0H,CAAU,CACvB,CACF,EAAG,CAAC60H,CAAY,CAAC,EAEjB,MAAMW,EAAcpB,EAAmB,KAAK,MAAMA,EAAiB,CAAC,EAAIA,EAAiB,CAAC,GAAK,CAAC,EAAI,EACpGz7K,GAAgB,IAAM,CACpB,IAAIx4B,EACJ,KAAM,CAACs1M,EAAUC,CAAQ,EAAItB,GAAoB,CAAC,EAAG,CAAC,EACtD,GAAIqB,IAAaC,EAAU,CAEzB,MAAM11H,KADc7/E,EAAKm0M,EAAU,WAAa,MAAQn0M,IAAO,OAAS,OAASA,EAAG,UAAS,IAAO,GACrE40M,EAC/B,IAAIY,EAAiBH,EACjBE,EAAWD,IAAa,IAC1BE,EAAiB31H,EAAay1H,EAAWC,GAE3CrB,EAAoBr0H,EAAa,CAACy1H,EAAUE,CAAc,EAAI,CAACA,EAAgBD,CAAQ,CAAC,CAC1F,CACF,EAAG,CAACtB,EAAkBoB,CAAW,CAAC,EAElC,MAAMI,EAAe38L,EAAM,QAAQ,IAAM,CAEvC,GAAI,CAAC86L,EACH,OAAO10L,EAAS2zL,EAAU,EAAK,EAEjC,GAAI6B,IAAiBlB,IAAgC,CAACS,GAAoBA,EAAiB,CAAC,IAAMA,EAAiB,CAAC,EAAG,CACrH,MAAM1xK,EAAUrjB,EAAS2zL,EAAU,EAAK,EAGxC,MAAI,CAACY,GAAiCJ,EAAmB,EAAE,SAASqB,CAAY,EACvEnyK,EAEWzpB,EAAM,cAAc,OAAQ,CAC9C,MAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAI46L,EAAa,EAAG,CACrD,gBAAiB9uG,CAC3B,CAAS,CACT,EAASriE,CAAO,CACZ,CACA,OAAOrjB,EAAS20L,EAAWhB,EAAWE,GAAWF,EAAUoB,EAAiB,CAAC,CAAC,EAAGO,CAAW,CAC9F,EAAG,CAACX,EAAUa,EAAcT,EAAkBpB,CAAQ,EAAE,OAAOhkL,GAAmBilL,CAAQ,CAAC,CAAC,EAEtFj1H,EAAe,CACnB,MAAAn1D,EACA,OAAQ,EACR,QAAS,EACT,WAAYorL,IAAqB,SAAW,SAAW,SAC3D,EACE,OAAoBh8L,EAAM,cAAcA,EAAM,SAAU,KAAM28L,EAAcf,IAAiBnB,IAAsCz6L,EAAM,cAAcA,EAAM,SAAU,KAAmBA,EAAM,cAAc45L,GAAa,CACzN,MAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAI7zH,CAAY,EAAG60H,EAAa,EAAG,CAClF,gBAAiB9uG,CACvB,CAAK,EACD,IAAKyvG,CACT,EAAKL,CAAW,EAAgBl7L,EAAM,cAAc45L,GAAa,CAC7D,MAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAI7zH,CAAY,EAAG60H,EAAa,EAAG,CAClF,gBAAiB9uG,EAAO,CAC9B,CAAK,EACD,IAAK0vG,CACT,EAAKN,CAAW,EAAgBl7L,EAAM,cAAc45L,GAAa,CAC7D,MAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAI7zH,CAAY,EAAG60H,EAAa,EAAG,CAClF,gBAAiB,CACvB,CAAK,EACD,IAAKa,CACT,EAAKr1L,EAAS,CAAA,EAAI,EAAI,CAAC,CAAC,EAAIw1L,IAAiBlB,IAAgCS,GAAoBA,EAAiB,CAAC,IAAMA,EAAiB,CAAC,GAAmBn7L,EAAM,cAAc45L,GAAa,CAC3L,MAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAI7zH,CAAY,EAAG,CACpD,IAAK,GACX,CAAK,EACD,IAAKs1H,CACT,EAAKj1L,EAAS6zL,GAAWF,EAAUwC,CAAW,EAAG,EAAI,CAAC,EAAIX,IAAiBpB,IAAwCx6L,EAAM,cAAc,OAAQ,CAC3I,MAAO,CACL,WAAY,SAClB,EACI,IAAKs7L,CACT,CAAG,CAAE,CACL,CCnMA,MAAMsB,GAAkB,CAAC,CACvB,eAAAC,EACA,WAAAC,EACA,SAAA12L,EACA,aAAAsyK,CACF,IACM,EAAEA,GAAiB,MAA2CA,EAAa,QAAU,CAACmkB,EACjFz2L,EAEWpG,EAAM,cAAc4qI,GAAS,OAAO,OAAO,CAC7D,KAAMkyD,EAAa,OAAY,EACnC,EAAKpkB,CAAY,EAAGtyK,CAAQ,EAExB,QAAQ,IAAI,WAAa,eAC3Bw2L,GAAgB,YAAc,mBCfhC,IAAIz0J,GAAgC,SAAU/kD,EAAGe,EAAG,CAClD,IAAId,EAAI,CAAA,EACR,QAASe,KAAKhB,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGgB,CAAC,GAAKD,EAAE,QAAQC,CAAC,EAAI,IAAGf,EAAEe,CAAC,EAAIhB,EAAEgB,CAAC,GAC/F,GAAIhB,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WAAY,QAAS,EAAI,EAAGgB,EAAI,OAAO,sBAAsBhB,CAAC,EAAG,EAAIgB,EAAE,OAAQ,IAClID,EAAE,QAAQC,EAAE,CAAC,CAAC,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKhB,EAAGgB,EAAE,CAAC,CAAC,IAAGf,EAAEe,EAAE,CAAC,CAAC,EAAIhB,EAAEgB,EAAE,CAAC,CAAC,GAElG,OAAOf,CACT,EAwBA,SAAS05M,GAAmB,CAC1B,KAAA9kL,EACA,KAAApxB,EACA,UAAAm2M,EACA,OAAQC,EACR,OAAAC,EACA,SAAAvxH,EACA,OAAAwxH,CACF,EAAG1zK,EAAS,CACV,IAAI2zK,EAAiB3zK,EACrB,SAASy1I,EAAK/jH,EAAKkiJ,EAAQ,CACpBA,IAGLD,EAA8Bp9L,EAAM,cAAcm7C,EAAK,CAAA,EAAIiiJ,CAAc,EAC3E,CACA,OAAAl+B,EAAK,SAAUg+B,CAAM,EACrBh+B,EAAK,IAAK89B,CAAS,EACnB99B,EAAK,MAAO+9B,CAAG,EACf/9B,EAAK,OAAQr4K,CAAI,EACjBq4K,EAAK,OAAQjnJ,CAAI,EACjBinJ,EAAK,MAAOvzF,CAAQ,EACpBuzF,EAAK,IAAKi+B,CAAM,EACTC,CACT,CACA,MAAME,GAAe,MACfC,GAAmB,CAAC,SAAU,OAAQ,OAAQ,YAAa,SAAU,WAAY,QAAQ,EACzFC,GAAoBx9L,EAAM,WAAW,CAAC3G,EAAOP,IAAQ,CACzD,IAAI5R,EACJ,KAAM,CACF,UAAW02C,EACX,UAAAwhB,EACA,MAAA1jC,EACA,KAAA10B,EACA,SAAA6sB,EACA,SAAAzN,EACA,SAAAinL,EACA,SAAAnuF,EACA,SAAAu+F,EACA,UAAAlsK,EACA,MAAAg4C,CACN,EAAQlwE,EACJu9C,EAAYzO,GAAO9uC,EAAO,CAAC,YAAa,YAAa,QAAS,OAAQ,WAAY,WAAY,WAAY,WAAY,WAAY,YAAa,OAAO,CAAC,EACnJ,CACJ,aAAA8kC,EACA,UAAAC,CACJ,EAAMp+B,EAAM,WAAW69B,EAAa,EAC5B,CAAC6/J,CAAU,EAAIpqK,GAAU,MAAM,EAC/BqqK,EAAgB39L,EAAM,OAAO,IAAI,EACjC49L,EAAc59L,EAAM,OAAO,IAAI,EAE/BolC,EAAYjH,EAAa,aAAcP,CAAkB,EACzDigK,EAAYhzI,GAAKjU,EAAW2mJ,EAAgB,EAE5C,CAACO,EAAYC,CAAU,EAAI/F,GAAgB94F,CAAQ,EACnD,CAAC8+F,EAASC,CAAU,EAAI58J,GAAe,GAAO,CAClD,MAAO08J,EAAW,OACtB,CAAG,EACK,CACJ,YAAAG,EAAc,CAAC,MAAM,CACzB,EAAMH,EACEI,EAAcC,IAAQ,CAC1B,IAAIl3M,GACAk3M,MACDl3M,GAAK62M,EAAW,WAAa,MAAQ72M,KAAO,QAAkBA,GAAG,KAAK62M,CAAU,GAEnFE,EAAWG,EAAI,CACjB,EAEMC,EAAczlM,GAAYolM,CAAO,EACvCt+K,GAAgB,IAAM,CACpB,IAAIx4B,GACA,CAAC82M,GAAWK,KACbn3M,GAAK02M,EAAY,WAAa,MAAQ12M,KAAO,QAAkBA,GAAG,MAAK,EAE5E,EAAG,CAAC82M,CAAO,CAAC,EACZ,MAAMM,EAAcn6M,IAAK,CACvBA,IAAM,MAAgCA,GAAE,eAAc,EACtDg6M,EAAY,EAAI,CAClB,EACMI,EAAe35M,IAAS,CAC5B,IAAIsC,IACHA,GAAK62M,EAAW,YAAc,MAAQ72M,KAAO,QAAkBA,GAAG,KAAK62M,EAAYn5M,EAAK,EACzFu5M,EAAY,EAAK,CACnB,EACMK,EAAe,IAAM,CACzB,IAAIt3M,IACHA,GAAK62M,EAAW,YAAc,MAAQ72M,KAAO,QAAkBA,GAAG,KAAK62M,CAAU,EAClFI,EAAY,EAAK,CACnB,EAEM,CAACM,EAAYjH,CAAU,EAAIQ,GAAgByF,CAAQ,EACnD,CACJ,OAAAhG,EACA,YAAAE,EACA,QAAS+G,CACb,EAAMnH,GAAa,CACf,WAAAC,EACA,SAAApxL,CACJ,CAAG,EAEK,CAACu4L,EAAoBC,CAAqB,EAAI5+L,EAAM,SAAS,EAAK,EAClE,CAAC6+L,EAAuBC,CAAwB,EAAI9+L,EAAM,SAAS,EAAK,EACxE,CAAC++L,EAAcC,EAAe,EAAIh/L,EAAM,SAAS,EAAK,EACtD,CAACi/L,GAAkBC,EAAmB,EAAIl/L,EAAM,SAAS,EAAK,EAC9D,CAACm/L,GAAiBC,EAAkB,EAAIp/L,EAAM,SAAS,EAAI,EAC3D,CAAC68L,EAAgBwC,CAAc,EAAIrH,GAAgB3K,EAAU,CACjE,WAAY,GACZ,OAAQiS,IAAcA,GAAa5B,GAAe,KAAgC,OAASA,EAAW,SAAWA,GAAe,KAAgC,OAASA,EAAW,MACxL,CAAG,EACK,CAAC3C,GAAUwE,CAAW,EAAIl+J,GAAeg+J,EAAe,iBAAmB,GAAO,CACtF,MAAOA,EAAe,QAC1B,CAAG,EACKG,GAAuB3C,IAAmB,CAAC9B,IAAYsE,EAAe,aAAe,eAErF,CACJ,KAAAvzG,GAAO,CACX,EAAMuzG,EACEI,GAAsBz/L,EAAM,QAAQ,IAE1Cw/L,KAEAH,EAAe,SAAW,QAAaA,EAAe,YAEtDA,EAAe,YAAcvB,GAAcW,GAAa,CAACe,GAAsBH,EAAgBvB,EAAYW,CAAU,CAAC,EACtH/+K,GAAgB,IAAM,CAChBm9K,GAAkB,CAAC4C,KACrBb,EAAsB71G,GAAe,iBAAiB,CAAC,EACvD+1G,EAAyB/1G,GAAe,cAAc,CAAC,EAE3D,EAAG,CAAC02G,GAAqB5C,CAAc,CAAC,EACxC,KAAM,CAAC6C,GAAaC,EAAc,EAAI3/L,EAAM,SAASw/L,EAAoB,EACnEI,GAAoB5/L,EAAM,QAAQ,IAClCy/L,GACK,GAEL3zG,KAAS,EACJ+yG,EAEFF,EACN,CAACc,GAAqBZ,EAAuBF,CAAkB,CAAC,EAGnEj/K,GAAgB,IAAM,CACpBigL,GAAeC,IAAqBJ,EAAoB,CAC1D,EAAG,CAACI,GAAmBJ,EAAoB,CAAC,EAC5C,MAAMK,GAAmBL,KAAyBE,GAAcT,GAAmBF,GAC7Ee,GAAkBN,IAAwB1zG,KAAS,GAAK4zG,GACxDK,GAAeP,IAAwB1zG,GAAO,GAAK4zG,GAEnDM,GAAgB,CAAC77M,GAAG0kC,KAAS,CACjC,IAAI3hC,GACJq4M,EAAY12K,GAAK,QAAQ,GACxB3hC,GAAKm4M,EAAe,YAAc,MAAQn4M,KAAO,QAAkBA,GAAG,KAAKm4M,EAAgBl7M,GAAG0kC,EAAI,CACrG,EACM,CAACo3K,GAAeC,CAAgB,EAAIlgM,EAAM,SAAS,CAAC,EACpDwN,GAAW,CAAC,CAChB,YAAAoH,EACJ,IAAQ,CACJsrL,EAAiBtrL,EAAW,CAC9B,EAEMurL,GAAeC,IAAc,CACjC,IAAIl5M,GACJ83M,GAAgBoB,EAAU,EAEtBrB,IAAiBqB,MAClBl5M,GAAKm4M,EAAe,cAAgB,MAAQn4M,KAAO,QAAkBA,GAAG,KAAKm4M,EAAgBe,EAAU,EAE5G,EAEApgM,EAAM,UAAU,IAAM,CACpB,MAAMqgM,GAAU1C,EAAc,QAC9B,GAAId,GAAkB6C,IAAeW,GAAS,CAC5C,MAAMC,GAAkBzH,GAAcwH,EAAO,EACzCpB,KAAqBqB,IACvBpB,GAAoBoB,EAAe,CAEvC,CACF,EAAG,CAACzD,EAAgB6C,GAAat5L,EAAU25L,GAAcZ,GAAiBc,EAAa,CAAC,EAGxFjgM,EAAM,UAAU,IAAM,CACpB,MAAMqgM,GAAU1C,EAAc,QAC9B,GAAI,OAAO,qBAAyB,KAAe,CAAC0C,IAAW,CAACX,IAAe,CAACF,GAC9E,OAGF,MAAMx3M,GAAW,IAAI,qBAAqB,IAAM,CAC9Co3M,GAAmB,CAAC,CAACiB,GAAQ,YAAY,CAC3C,CAAC,EACD,OAAAr4M,GAAS,QAAQq4M,EAAO,EACjB,IAAM,CACXr4M,GAAS,WAAU,CACrB,CACF,EAAG,CAAC03M,GAAaF,EAAoB,CAAC,EAEtC,MAAM9mB,GAAe0f,GAAgBiH,EAAe,QAAStB,EAAW,KAAM33L,CAAQ,EAChFm6L,GAAevgM,EAAM,QAAQ,IAAM,CACvC,GAAI,GAAC68L,GAAkB6C,IAGvB,MAAO,CAAC3B,EAAW,KAAM33L,EAAUmjE,EAAOmvG,GAAa,KAAK,EAAE,KAAKsgB,EAAW,CAChF,EAAG,CAAC6D,EAAgB6C,GAAan2H,EAAOmvG,GAAa,MAAOmnB,EAAgB,CAAC,EAG7E,GAAI7B,EACF,OAAoBh+L,EAAM,cAAc21L,GAAU,CAChD,OAAQzuM,EAAK62M,EAAW,QAAU,MAAQ72M,IAAO,OAASA,EAAK,OAAOkf,GAAa,SAAWA,EAAW,GACzG,OAAQm4L,EACR,SAAUC,EACV,MAAOT,EAAW,MAClB,UAAW34J,EACX,UAAWga,EACX,MAAO1jC,EACP,UAAW0iB,EACX,UAAW7M,EACX,UAAWwsK,EAAW,UACtB,SAAUA,EAAW,SACrB,UAAWA,EAAW,SAC5B,CAAK,EAIH,MAAMyC,GAAe,IAAM,CACzB,KAAM,CACJ,WAAAC,GACA,OAAAC,EACN,EAAQrB,EACJ,OAAOoB,GAA2BzgM,EAAM,cAAc,SAAU,CAC9D,KAAM,SACN,IAAK,SACL,UAAW,GAAGolC,CAAS,IAAI21J,GAAW,WAAa,QAAQ,GAC3D,QAAS52M,IAAK67M,GAAc77M,GAAG,CAC7B,SAAU,CAAC42M,EACnB,CAAO,EACD,aAAcA,GAAW2C,EAAW,SAAWA,GAAe,KAAgC,OAASA,EAAW,MACxH,EAAO,OAAOgD,IAAW,WAAaA,GAAO3F,EAAQ,EAAI2F,EAAM,EAAK,IAClE,EAEMC,GAAa,IAAM,CACvB,GAAI,CAAC7C,EACH,OAEF,KAAM,CACJ,KAAA3+I,GACA,QAAA/C,GACA,SAAA0D,EACN,EAAQi+I,EACE6C,GAAYz6L,GAAQi2C,EAAO,EAAE,CAAC,IAAMshJ,GAAe,KAAgC,OAASA,EAAW,MACvG5Q,GAAY,OAAO8T,IAAc,SAAWA,GAAY,GAC9D,OAAO1C,EAAY,SAAS,MAAM,EAAkBl+L,EAAM,cAAc4qI,GAAS,CAC/E,IAAK,OACL,MAAOxuF,KAAY,GAAQ,GAAKwkJ,EACtC,EAAoB5gM,EAAM,cAAc,SAAU,CAC5C,KAAM,SACN,IAAK49L,EACL,UAAW,GAAGx4J,CAAS,QACvB,QAASk5J,EACT,aAAcxR,GACd,SAAUhtI,EAChB,EAAOX,IAAqBn/C,EAAM,cAAcixL,GAAc,CACxD,KAAM,QACZ,CAAK,CAAC,CAAC,EAAK,IACV,EAEM4P,GAAa,IACZpC,EAGez+L,EAAM,cAAci5L,GAAS,OAAO,OAAO,CAC7D,IAAK,MACX,EAAOzB,EAAY,CACb,UAAWpyJ,EACX,OAAQqyJ,EACR,OAAQiG,EACR,OAAQgB,EACR,QAAS/G,EACT,SAAUvxL,GAAa,IAC7B,CAAK,CAAC,EAXO,KAaL06L,GAAmBpF,IAAe,CAACA,IAAe8E,GAAY,EAAIG,GAAU,EAAIE,IAAY,EAC5FE,GAAiBrF,IAAe,CAACA,IAAe,CAACX,IAA0B/6L,EAAM,cAAc,OAAQ,CAC3G,cAAe,GACf,IAAK,UACT,EAAKs9L,EAAY,EAAI+B,EAAe,OAAQyB,GAAiBpF,EAAW,CAAC,EACvE,OAAoB17L,EAAM,cAAckS,GAAgB,CACtD,SAAU1E,GACV,SAAU,CAACgyL,EACf,EAAKwB,IAA2BhhM,EAAM,cAAc48L,GAAiB,CACjE,aAAclkB,GACd,eAAgB8mB,GAChB,WAAYK,EAChB,EAAkB7/L,EAAM,cAAcs4L,GAAY,OAAO,OAAO,CAC5D,UAAW9yL,GAAW,CACpB,CAAC,GAAG4/B,CAAS,IAAIp+C,CAAI,EAAE,EAAGA,EAC1B,CAAC,GAAGo+C,CAAS,WAAW,EAAGvxB,EAC3B,CAAC,GAAGuxB,CAAS,WAAW,EAAGy3J,EAC3B,CAAC,GAAGz3J,CAAS,uBAAuB,EAAG06J,GACvC,CAAC,GAAG16J,CAAS,yBAAyB,EAAG26J,EAC/C,EAAO3gJ,CAAS,EACZ,UAAWxhB,EACX,MAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIliB,CAAK,EAAG,CAC7C,gBAAiBqkL,GAAej0G,GAAO,MAC7C,CAAK,EACD,UAAWv6D,EACX,IAAKrlB,GAAW80L,GAAWrD,EAAe7kM,CAAG,EAC7C,UAAWslC,EACX,QAAS8/J,EAAY,SAAS,MAAM,EAAII,EAAc,OACtD,aAAciC,IAAiB,KAAkC,OAASA,GAAa,SAAQ,EAC/F,MAAOh3H,CACX,EAAKs0H,CAAS,EAAgB79L,EAAM,cAAcihM,GAAU,CACxD,cAAezB,IAAwB,CAACE,GACxC,KAAMt5L,EACN,KAAM0lF,GACN,MAAOm0G,GACP,WAAYE,GACZ,SAAUpF,GACV,SAAU,CAACtD,EAAQsD,GAAUpD,EAAamG,EAAYW,EAAYf,CAAU,EAAE,OAAO3nL,GAAmBwnL,GAAiB,IAAI95M,IAAO4V,EAAM5V,EAAG,CAAC,CAAC,CAAC,CACpJ,EAAK,CAACgkB,GAAMi0L,KAAgBqB,GAAmB1jM,EAAoB2G,EAAM,cAAcA,EAAM,SAAU,KAAMyH,GAAK,OAAS,GAAKi0L,IAAe,CAACX,IAAYwF,GAA6BvgM,EAAM,cAAc,OAAQ,CACjN,IAAK,eACL,cAAe,EACnB,EAAKyH,EAAI,EAAKA,GAAMs5L,GAAerF,EAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CACrD,CAAC,ECnWD,IAAIvzJ,GAAgC,SAAU/kD,EAAGe,EAAG,CAClD,IAAId,EAAI,CAAA,EACR,QAASe,KAAKhB,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGgB,CAAC,GAAKD,EAAE,QAAQC,CAAC,EAAI,IAAGf,EAAEe,CAAC,EAAIhB,EAAEgB,CAAC,GAC/F,GAAIhB,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WAAY,QAAS,EAAI,EAAGgB,EAAI,OAAO,sBAAsBhB,CAAC,EAAG,EAAIgB,EAAE,OAAQ,IAClID,EAAE,QAAQC,EAAE,CAAC,CAAC,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKhB,EAAGgB,EAAE,CAAC,CAAC,IAAGf,EAAEe,EAAE,CAAC,CAAC,EAAIhB,EAAEgB,EAAE,CAAC,CAAC,GAElG,OAAOf,CACT,EAIA,MAAM69M,GAAoBlhM,EAAM,WAAW,CAAC9Y,EAAI4R,IAAQ,CACtD,GAAI,CACA,SAAAu0L,EACA,IAAA8T,CACN,EAAQj6M,EACJ0vD,EAAYzO,GAAOjhD,EAAI,CAAC,WAAY,KAAK,CAAC,EAC5C,GAAI,QAAQ,IAAI,WAAa,aAAc,CACzC,MAAMuf,EAAUirB,GAAc,iBAAiB,EAC/C,QAAQ,IAAI,WAAa,cAAejrB,EAAQ,OAAO4mL,GAAa,SAAU,QAAS,yCAAyC,CAClI,CACA,MAAM34I,EAAc,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIkC,CAAS,EAAG,CAC9D,IAAKuqJ,IAAQ,QAAavqJ,EAAU,SAAW,SAAW,sBAAwBuqJ,CACtF,CAAG,EAED,cAAOzsJ,EAAY,SACC10C,EAAM,cAAcw9L,GAAM,OAAO,OAAO,CAAA,EAAI9oJ,EAAa,CAC3E,IAAK57C,EACL,SAAU,CAAC,CAACu0L,EACZ,UAAW,GACf,CAAG,CAAC,CACJ,CAAC,EC7BKthG,GAAyB/rF,EAAM,WAAW,CAAC3G,EAAOP,IAAsBkH,EAAM,cAAcw9L,GAAM,OAAO,OAAO,CACpH,IAAK1kM,CACP,EAAGO,EAAO,CACR,UAAW,KACb,CAAC,CAAC,CAAE,ECNJ,IAAI8uC,GAAgC,SAAU/kD,EAAGe,EAAG,CAClD,IAAId,EAAI,CAAA,EACR,QAASe,KAAKhB,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGgB,CAAC,GAAKD,EAAE,QAAQC,CAAC,EAAI,IAAGf,EAAEe,CAAC,EAAIhB,EAAEgB,CAAC,GAC/F,GAAIhB,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WAAY,QAAS,EAAI,EAAGgB,EAAI,OAAO,sBAAsBhB,CAAC,EAAG,EAAIgB,EAAE,OAAQ,IAClID,EAAE,QAAQC,EAAE,CAAC,CAAC,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKhB,EAAGgB,EAAE,CAAC,CAAC,IAAGf,EAAEe,EAAE,CAAC,CAAC,EAAIhB,EAAEgB,EAAE,CAAC,CAAC,GAElG,OAAOf,CACT,EAKA,MAAM+9M,GAAO,CAACl6M,EAAI4R,IAAQ,CACxB,GAAI,CACA,SAAAu0L,CACN,EAAQnmM,EACJ0vD,EAAYzO,GAAOjhD,EAAI,CAAC,UAAU,CAAC,EACrC,MAAMm6M,EAAiBrhM,EAAM,QAAQ,IAC/BqtL,GAAY,OAAOA,GAAa,SAC3BxiI,GAAKwiI,EAAU,CAAC,aAAc,MAAM,CAAC,EAEvCA,EACN,CAACA,CAAQ,CAAC,EACb,GAAI,QAAQ,IAAI,WAAa,aAAc,CACzC,MAAM5mL,EAAUirB,GAAc,iBAAiB,EAC/C,QAAQ,IAAI,WAAa,cAAejrB,EAAQ,OAAO4mL,GAAa,UAAY,CAACA,GAAY,EAAE,eAAgBA,IAAa,EAAE,SAAUA,GAAW,QAAS,yDAAyD,CACvN,CACA,OAAoBrtL,EAAM,cAAcw9L,GAAM,OAAO,OAAO,CAC1D,IAAK1kM,CACT,EAAK89C,EAAW,CACZ,SAAUyqJ,EACV,UAAW,MACf,CAAG,CAAC,CACJ,EACAC,GAA4BthM,EAAM,WAAWohM,EAAI,EClCjD,IAAIj5J,GAAgC,SAAU/kD,EAAGe,EAAG,CAClD,IAAId,EAAI,CAAA,EACR,QAASe,KAAKhB,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGgB,CAAC,GAAKD,EAAE,QAAQC,CAAC,EAAI,IAAGf,EAAEe,CAAC,EAAIhB,EAAEgB,CAAC,GAC/F,GAAIhB,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WAAY,QAAS,EAAI,EAAGgB,EAAI,OAAO,sBAAsBhB,CAAC,EAAG,EAAIgB,EAAE,OAAQ,IAClID,EAAE,QAAQC,EAAE,CAAC,CAAC,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKhB,EAAGgB,EAAE,CAAC,CAAC,IAAGf,EAAEe,EAAE,CAAC,CAAC,EAAIhB,EAAEgB,EAAE,CAAC,CAAC,GAElG,OAAOf,CACT,EAIA,MAAMk+M,GAAiB,CAAC,EAAG,EAAG,EAAG,EAAG,CAAC,EAC/Bt1G,GAAqBjsF,EAAM,WAAW,CAAC3G,EAAOP,IAAQ,CAC1D,KAAM,CACF,MAAA2hB,EAAQ,CACd,EAAQphB,EACJu9C,EAAYzO,GAAO9uC,EAAO,CAAC,OAAO,CAAC,EACrC,GAAI,QAAQ,IAAI,WAAa,aAAc,CACzC,MAAMoN,EAAUirB,GAAc,kBAAkB,EAChD,QAAQ,IAAI,WAAa,cAAejrB,EAAQ86L,GAAe,SAAS9mL,CAAK,EAAG,QAAS,sFAAsF,CACjL,CACA,MAAM8W,EAAYgwK,GAAe,SAAS9mL,CAAK,EAAI,IAAIA,CAAK,GAAK,KACjE,OAAoBza,EAAM,cAAcw9L,GAAM,OAAO,OAAO,CAC1D,IAAK1kM,CACT,EAAK89C,EAAW,CACZ,UAAWrlB,CACf,CAAG,CAAC,CACJ,CAAC,ECtBK+mK,GAAakJ,GACnBlJ,GAAW,KAAO8I,GAClB9I,GAAW,KAAO4I,GAClB5I,GAAW,MAAQrsG,GACnBqsG,GAAW,UAAYvsG,GCPhB,MAAM01G,GAA6BjxI,EAAAA,WAAW,CAACn3D,EAAOP,IAAQ,CACnE,KAAM,CACJ,UAAAssC,EACA,UAAAga,EACA,SAAAh5C,EACA,KAAAqH,EACA,MAAAiO,EAAQ,CAAA,CACZ,EAAMriB,EACEqoM,EAAiBl8L,GAAW,GAAG4/B,CAAS,SAAU,CACtD,CAAC,GAAGA,CAAS,eAAe,EAAG33B,IAAS,CAC5C,EAAK2xC,CAAS,EACNuiJ,EAAUl0L,IAAS,OACzB,OAAoBzN,EAAM,cAAc,MAAO,CAC7C,IAAKlH,EACL,UAAW4oM,EACX,MAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIhmL,CAAK,EAAG,CAE7C,UAAWimL,EAAUl0L,EAAO,OAC5B,SAAUk0L,EAAU,EAAI,CAC9B,CAAK,CACL,EAAKv7L,CAAQ,CACb,CAAC,EACG,QAAQ,IAAI,WAAa,eAC3Bq7L,GAAc,YAAc,SAE9B,MAAMn4H,GAAQ,IAAM,KC7BpB,IAAInhC,GAAgC,SAAU/kD,EAAGe,EAAG,CAClD,IAAId,EAAI,CAAA,EACR,QAASe,KAAKhB,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGgB,CAAC,GAAKD,EAAE,QAAQC,CAAC,EAAI,IAAGf,EAAEe,CAAC,EAAIhB,EAAEgB,CAAC,GAC/F,GAAIhB,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WAAY,QAAS,EAAI,EAAGgB,EAAI,OAAO,sBAAsBhB,CAAC,EAAG,EAAIgB,EAAE,OAAQ,IAClID,EAAE,QAAQC,EAAE,CAAC,CAAC,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKhB,EAAGgB,EAAE,CAAC,CAAC,IAAGf,EAAEe,EAAE,CAAC,CAAC,EAAIhB,EAAEgB,EAAE,CAAC,CAAC,GAElG,OAAOf,CACT,EAGA,SAASu+M,GAAeC,EAAa,CACnC,GAAIA,GAAe,OAAOA,GAAgB,SACxC,OAAOA,EAET,MAAMC,EAAoB,CAAC,CAACD,EAC5B,MAAO,CACL,MAAOC,EACP,IAAKA,CACT,CACA,CAIA,SAASC,GAAS37L,EAAU,CAa1B,OAZcpG,EAAM,QAAQ,IAAMmG,GAAQC,CAAQ,EAAE,OAAO+W,GAAqBnd,EAAM,eAAemd,CAAI,CAAC,EAAE,IAAI1V,GAAQ,CACtH,KAAM,CACJ,MAAApO,CACN,EAAQoO,EACE,CACF,YAAAo6L,CACR,EAAUxoM,EACJu9C,EAAYzO,GAAO9uC,EAAO,CAAC,aAAa,CAAC,EAC3C,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIu9C,CAAS,EAAG,CACjD,YAAagrJ,GAAeC,CAAW,CAC7C,CAAK,CACH,CAAC,EAAG,CAACz7L,CAAQ,CAAC,CAEhB,CCpCe,SAAS47L,GAAat6G,EAAOu6G,EAAS3xE,EAAO,CAC1D,OAAOtwH,EAAM,QAAQ,IAAM,CACzB,MAAMkiM,EAAc,CAAA,EACpB,QAAS,EAAI,EAAG,EAAIx6G,EAAM,OAAS,EAAG,GAAK,EAAG,CAC5C,MAAMy6G,EAAWz6G,EAAM,CAAC,EAClB06G,EAAW16G,EAAM,EAAI,CAAC,EACtB26G,EAAWJ,EAAQ,CAAC,EACpB9U,EAAW8U,EAAQ,EAAI,CAAC,EACxB,CACJ,UAAWK,EAAgB,GAC3B,IAAKC,EACL,YAAaC,CACrB,EAAUL,EACE,CACJ,UAAWM,EAAgB,GAC3B,IAAKC,EACL,YAAaC,CACrB,EAAUP,EACEQ,EAENN,GAAiBG,IAEjBJ,IAAa,GAAK,CAACE,KAEnBpV,IAAa,GAAK,CAACuV,GACbG,EAENL,EAAgB,KAAOH,EAAW,GAElCM,EAAgB,OAASxV,IAAa,GAAKkV,EAAW,EAChDS,EAENH,EAAgB,OAASxV,EAAW,GAEpCqV,EAAgB,KAAOH,IAAa,GAAKlV,EAAW,EACpD+U,EAAY,CAAC,EAAI,CACf,UAAWU,EACX,iBAAkB,CAAC,EAAEtyE,EAAQwyE,EAAiBD,GAC9C,eAAgB,CAAC,EAAEvyE,EAAQuyE,EAAmBC,EACtD,CACI,CACA,OAAOZ,CACT,EAAG,CAACD,EAASv6G,CAAK,CAAC,CACrB,CC3CO,SAASq7G,GAAO59M,EAAK,CAC1B,OAAO,OAAOA,EAAI,MAAM,EAAG,EAAE,CAAC,EAAI,GACpC,CACA,SAAS69M,GAAMC,EAAU,CACvB,OAAO,OAAOA,GAAa,UAAYA,EAAS,SAAS,GAAG,CAC9D,CAKe,SAASC,GAASx7G,EAAOslC,EAAe,CACrD,MAAMm2E,EAAYz7G,EAAM,IAAIvqE,GAAQA,EAAK,IAAI,EACvCimL,EAAa17G,EAAM,OACnB27G,EAAsBr2E,GAAiB,EACvCs2E,EAASr1E,GAAOA,EAAMo1E,EAGtB,CAACE,EAAYC,CAAa,EAAIxjM,EAAM,SAAS,IAAM0nF,EAAM,IAAIvqE,GAAQA,EAAK,WAAW,CAAC,EACtF4hJ,EAAQ/+J,EAAM,QAAQ,IAAM,CAChC,IAAI9Y,EACJ,MAAMu8M,EAAc,CAAA,EACpB,QAASj9M,EAAI,EAAGA,EAAI48M,EAAY58M,GAAK,EACnCi9M,EAAYj9M,CAAC,GAAKU,EAAKi8M,EAAU38M,CAAC,KAAO,MAAQU,IAAO,OAASA,EAAKq8M,EAAW/8M,CAAC,EAEpF,OAAOi9M,CACT,EAAG,CAACL,EAAYG,EAAYJ,CAAS,CAAC,EAKhCO,EAAmB1jM,EAAM,QAAQ,IAAM,CAC3C,IAAI2jM,EAAU,CAAA,EACVC,EAAa,EAEjB,QAASp9M,EAAI,EAAGA,EAAI48M,EAAY58M,GAAK,EAAG,CACtC,MAAMy8M,EAAWlkC,EAAMv4K,CAAC,EACxB,GAAIw8M,GAAMC,CAAQ,EAChBU,EAAQn9M,CAAC,EAAIu8M,GAAOE,CAAQ,UACnBA,GAAYA,IAAa,EAAG,CACrC,MAAM3sL,EAAM,OAAO2sL,CAAQ,EACtB,OAAO,MAAM3sL,CAAG,IACnBqtL,EAAQn9M,CAAC,EAAI8vB,EAAM+sL,EAEvB,MACEO,GAAc,EACdD,EAAQn9M,CAAC,EAAI,MAEjB,CACA,MAAMq9M,EAAWF,EAAQ,OAAO,CAAC3sM,EAAKi3H,IAAQj3H,GAAOi3H,GAAO,GAAI,CAAC,EACjE,GAAI41E,EAAW,GAAK,CAACD,EAAY,CAE/B,MAAMzhM,EAAQ,EAAI0hM,EAClBF,EAAUA,EAAQ,IAAI11E,GAAOA,IAAQ,OAAY,EAAIA,EAAM9rH,CAAK,CAClE,KAAO,CAEL,MAAM2hM,GAAW,EAAID,GAAYD,EACjCD,EAAUA,EAAQ,IAAI11E,GAAOA,IAAQ,OAAY61E,EAAU71E,CAAG,CAChE,CACA,OAAO01E,CACT,EAAG,CAAC5kC,EAAOskC,CAAmB,CAAC,EACzBU,EAAc/jM,EAAM,QAAQ,IAAM0jM,EAAiB,IAAIJ,CAAM,EAAG,CAACI,EAAkBL,CAAmB,CAAC,EACvGW,EAAsBhkM,EAAM,QAAQ,IAAM0nF,EAAM,IAAIvqE,GACpD6lL,GAAM7lL,EAAK,GAAG,EACT4lL,GAAO5lL,EAAK,GAAG,GAEhBA,EAAK,KAAO,GAAKkmL,CAC1B,EAAG,CAAC37G,EAAO27G,CAAmB,CAAC,EAC1BY,EAAsBjkM,EAAM,QAAQ,IAAM0nF,EAAM,IAAIvqE,GACpD6lL,GAAM7lL,EAAK,GAAG,EACT4lL,GAAO5lL,EAAK,GAAG,GAEhBA,EAAK,KAAOkmL,GAAuBA,CAC5C,EAAG,CAAC37G,EAAO27G,CAAmB,CAAC,EAGhC,MAAO,CADYrjM,EAAM,QAAQ,IAAMgtH,EAAgB+2E,EAAchlC,EAAO,CAACglC,EAAa/2E,CAAa,CAAC,EACpF+2E,EAAaL,EAAkBM,EAAqBC,EAAqBT,CAAa,CAC5G,CCvEe,SAASU,GAAUx8G,EAAOy8G,EAAgBC,EAAcp3E,EAAeq3E,EAAa/zE,EAAO,CACxG,MAAMg0E,EAAa58G,EAAM,IAAIvqE,GAAQ,CAACA,EAAK,IAAKA,EAAK,GAAG,CAAC,EACnDkmL,EAAsBr2E,GAAiB,EACvCs2E,EAASr1E,GAAOA,EAAMo1E,EAE5B,SAASkB,EAAap/M,EAAKq/M,EAAc,CACvC,OAAI,OAAOr/M,GAAQ,SACVm+M,EAAOP,GAAO59M,CAAG,CAAC,EAEpBA,GAAuCq/M,CAChD,CAEA,KAAM,CAACC,EAAYC,CAAa,EAAI1kM,EAAM,SAAS,CAAA,CAAE,EAC/C2kM,EAAqB3kM,EAAM,OAAO,EAAE,EAKpC,CAAC4kM,EAAaC,CAAc,EAAI7kM,EAAM,SAAS,IAAI,EACnD8kM,EAAa,IAAMV,EAAa,IAAId,CAAM,EAqGhD,MAAO,CApGel7M,GAAS,CAC7Bs8M,EAAcI,EAAU,CAAE,EAC1BD,EAAe,CACb,MAAAz8M,EACA,UAAW,EACjB,CAAK,CACH,EACuB,CAACA,EAAOw/B,IAAW,CACxC,IAAI1gC,EAEJ,IAAI69M,EAAiB,KAErB,IAAK,CAACH,GAAe,CAACA,EAAY,YAAch9K,IAAW,GAEzD,GAAIA,EAAS,EACXm9K,EAAiB38M,EACjBy8M,EAAe,CACb,MAAAz8M,EACA,UAAW,EACrB,CAAS,MAED,SAAS5B,EAAI4B,EAAO5B,GAAK,EAAGA,GAAK,EAC/B,GAAIi+M,EAAWj+M,CAAC,EAAI,GAAK29M,EAAe39M,CAAC,EAAE,UAAW,CACpDu+M,EAAiBv+M,EACjBq+M,EAAe,CACb,MAAOr+M,EACP,UAAW,EACzB,CAAa,EACD,KACF,EAIN,MAAMw+M,GAAe99M,EAAK69M,IAAwEH,GAAgB,KAAiC,OAASA,EAAY,UAAW,MAAQ19M,IAAO,OAASA,EAAKkB,EAC1M68M,EAAWlvL,GAAmB0uL,CAAU,EACxChuC,EAAYuuC,EAAc,EAE1BE,EAAeX,EAAaD,EAAWU,CAAW,EAAE,CAAC,EAAG,CAAC,EACzDG,EAAaZ,EAAaD,EAAW7tC,CAAS,EAAE,CAAC,EAAG,CAAC,EACrD2uC,EAAeb,EAAaD,EAAWU,CAAW,EAAE,CAAC,EAAG3B,CAAmB,EAC3EgC,EAAad,EAAaD,EAAW7tC,CAAS,EAAE,CAAC,EAAG4sC,CAAmB,EAC7E,IAAIiC,EAAe19K,EAEnB,OAAIq9K,EAASD,CAAW,EAAIM,EAAeJ,IACzCI,EAAeJ,EAAeD,EAASD,CAAW,GAEhDC,EAASxuC,CAAS,EAAI6uC,EAAeH,IACvCG,EAAeL,EAASxuC,CAAS,EAAI0uC,GAEnCF,EAASD,CAAW,EAAIM,EAAeF,IACzCE,EAAeF,EAAeH,EAASD,CAAW,GAEhDC,EAASxuC,CAAS,EAAI6uC,EAAeD,IACvCC,EAAeL,EAASxuC,CAAS,EAAI4uC,GAGvCJ,EAASD,CAAW,GAAKM,EACzBL,EAASxuC,CAAS,GAAK6uC,EACvBjB,EAAYY,CAAQ,EACbA,CACT,EACoB,IAAM,CACxBJ,EAAe,IAAI,CACrB,EAEmB,CAACz8M,EAAOpB,IAAS,CAClC,MAAMu+M,EAAeT,EAAU,EACzBU,EAAel1E,EAAQtpI,IAAS,QAAU,MAAQ,QAAUA,EAC5DwuD,EAAegwJ,IAAiB,QAAUp9M,EAAQA,EAAQ,EAC1Dq9M,EAAcD,IAAiB,QAAUp9M,EAAQ,EAAIA,EACrDs9M,EAAcH,EAAa/vJ,CAAY,EACvCmwJ,EAAaJ,EAAaE,CAAW,EAC3C,GAAIC,IAAgB,GAAKC,IAAe,EAEtCJ,EAAa/vJ,CAAY,EAAI,EAC7B+vJ,EAAaE,CAAW,GAAKC,EAC7Bf,EAAmB,QAAQv8M,CAAK,EAAIs9M,MAC/B,CACL,MAAME,EAAYF,EAAcC,EAC1BE,EAAiBtB,EAAaD,EAAW9uJ,CAAY,EAAE,CAAC,EAAG,CAAC,EAC5DswJ,EAAiBvB,EAAaD,EAAW9uJ,CAAY,EAAE,CAAC,EAAG6tJ,CAAmB,EAC9E0C,EAAgBxB,EAAaD,EAAWmB,CAAW,EAAE,CAAC,EAAG,CAAC,EAC1DO,EAAgBzB,EAAaD,EAAWmB,CAAW,EAAE,CAAC,EAAGpC,CAAmB,EAC5E4C,EAAa,KAAK,IAAIJ,EAAgBD,EAAYI,CAAa,EAC/DE,EAAW,KAAK,IAAIJ,EAAgBF,EAAYG,CAAa,EAC7DI,EAAaJ,IAAkBG,EAAWD,GAAc,EACxDG,EAA2BzB,EAAmB,QAAQv8M,CAAK,EAC3Di+M,EAA4BT,EAAYQ,EACvBA,GAA4BA,GAA4BJ,GAAiBI,GAA4BL,GAAiBM,GAA6BP,GAAkBO,GAA6BR,GAEvNN,EAAaE,CAAW,EAAIW,EAC5Bb,EAAa/vJ,CAAY,EAAI6wJ,IAE7Bd,EAAa/vJ,CAAY,GAAK2wJ,EAC9BZ,EAAaE,CAAW,GAAKU,EAEjC,CACA,OAAA9B,EAAYkB,CAAY,EACjBA,CACT,EACgEX,GAAgB,KAAiC,OAASA,EAAY,KAAK,CAC7I,CCtHA,SAAS0B,GAAehwL,EAAK,CAC3B,OAAO,OAAOA,GAAQ,UAAY,CAAC,OAAO,MAAMA,CAAG,EAAI,KAAK,MAAMA,CAAG,EAAI,CAC3E,CACA,MAAMiwL,GAAWltM,GAAS,CACxB,KAAM,CACJ,UAAA+rC,EACA,SAAAy6B,EACA,MAAAz3E,EACA,OAAA2qD,EACA,QAAAyzJ,EACA,QAAAC,EACA,QAAAC,EACA,UAAAC,EACA,iBAAA9D,EACA,eAAAC,EACA,cAAA8D,EACA,eAAAC,EACA,YAAAC,EACA,WAAAC,EACA,KAAAC,EACA,cAAAh6E,CACJ,EAAM3zH,EACE4tM,EAAoB,GAAG7hK,CAAS,OAEhC,CAAC8hK,EAAUC,CAAW,EAAI/sM,EAAAA,SAAS,IAAI,EACvC,CAACgtM,EAAmBC,CAAoB,EAAIjtM,EAAAA,SAAS,CAAC,EACtDktM,EAAqBznI,EAAW,EAAIunI,EACpCG,EAAqB1nI,EAAWunI,EAAoB,EACpDt9H,EAAc3lF,GAAK,CACnBwiN,GAAaxiN,EAAE,gBACjBgjN,EAAY,CAAChjN,EAAE,MAAOA,EAAE,KAAK,CAAC,EAC9ByiN,EAAcx+M,CAAK,EAEvB,EACMkiI,EAAenmI,GAAK,CACxB,GAAIwiN,GAAaxiN,EAAE,QAAQ,SAAW,EAAG,CACvC,MAAMqjN,EAAQrjN,EAAE,QAAQ,CAAC,EACzBgjN,EAAY,CAACK,EAAM,MAAOA,EAAM,KAAK,CAAC,EACtCZ,EAAcx+M,CAAK,CACrB,CACF,EAEMq/M,EAAuBC,GAAa,CACxC,MAAMC,EAAa36E,EAAgBw5E,EAAU,IACvCoB,EAASD,EAAaD,EAEtBG,EAAa,KAAK,IAAI,EAAG76E,EAAgBy5E,EAAU,GAAG,EACtDqB,EAAa,KAAK,IAAI96E,EAAeA,EAAgB05E,EAAU,GAAG,EAGxE,OADmB,KAAK,IAAImB,EAAY,KAAK,IAAIC,EAAYF,CAAM,CAAC,EAChDD,CACtB,EACMI,EAAiBtnK,GAAS,CAAC2zB,EAASC,IAAY,CACpD,MAAM2zI,EAAyBP,EAAqB5nI,EAAWxL,EAAUD,CAAO,EAChFizI,EAAqBW,CAAsB,CAC7C,CAAC,EACKC,EAAgBxnK,GAAS,IAAM,CACnComK,EAAez+M,EAAOk/M,EAAoBC,EAAoB,EAAI,EAClEF,EAAqB,CAAC,EACtBP,EAAY,EAAI,CAClB,CAAC,EACD9mM,EAAM,UAAU,IAAM,CACpB,GAAIknM,EAAU,CACZ,MAAMj8E,EAAc9mI,GAAK,CACvB,KAAM,CACJ,MAAA6vE,EACA,MAAAC,CACV,EAAY9vE,EACEiwE,EAAUJ,EAAQkzI,EAAS,CAAC,EAC5B7yI,EAAUJ,EAAQizI,EAAS,CAAC,EAC9BF,EACFe,EAAe3zI,EAASC,CAAO,EAE/BwyI,EAAez+M,EAAOgsE,EAASC,CAAO,CAE1C,EACM0V,EAAY,IAAM,CAClBi9H,EACFiB,EAAa,EAEbnB,EAAW,EAEbK,EAAY,IAAI,CAClB,EACMe,EAAkB/jN,GAAK,CAC3B,GAAIA,EAAE,QAAQ,SAAW,EAAG,CAC1B,MAAMqjN,EAAQrjN,EAAE,QAAQ,CAAC,EACnBiwE,EAAUozI,EAAM,MAAQN,EAAS,CAAC,EAClC7yI,EAAUmzI,EAAM,MAAQN,EAAS,CAAC,EACpCF,EACFe,EAAe3zI,EAASC,CAAO,EAE/BwyI,EAAez+M,EAAOgsE,EAASC,CAAO,CAE1C,CACF,EACM8zI,EAAiB,IAAM,CACvBnB,EACFiB,EAAa,EAEbnB,EAAW,EAEbK,EAAY,IAAI,CAClB,EACA,cAAO,iBAAiB,YAAae,CAAe,EACpD,OAAO,iBAAiB,WAAYC,CAAc,EAClD,OAAO,iBAAiB,YAAal9E,CAAW,EAChD,OAAO,iBAAiB,UAAWlhD,CAAS,EACrC,IAAM,CACX,OAAO,oBAAoB,YAAakhD,CAAW,EACnD,OAAO,oBAAoB,UAAWlhD,CAAS,EAC/C,OAAO,oBAAoB,YAAam+H,CAAe,EACvD,OAAO,oBAAoB,WAAYC,CAAc,CACvD,CACF,CACF,EAAG,CAACjB,EAAUF,EAAMnnI,EAAUz3E,EAAO4kI,EAAew5E,EAASC,EAASC,CAAO,CAAC,EAC9E,MAAM0B,EAAiB,CACrB,CAAC,KAAKnB,CAAiB,iBAAiB,EAAG,GAAGG,CAAiB,IACnE,EAEQiB,EAAYxoI,EAAW4lG,GAAa/zB,GACpC42D,EAAUzoI,EAAWwmE,GAAetuE,GAC1C,OAAoB/3D,EAAM,cAAc,MAAO,CAC7C,UAAWinM,EACX,KAAM,YACN,gBAAiBX,GAAeE,CAAO,EACvC,gBAAiBF,GAAeG,CAAO,EACvC,gBAAiBH,GAAeI,CAAO,CAC3C,EAAKM,GAAsBhnM,EAAM,cAAc,MAAO,CAClD,UAAWwF,GAAW,GAAGyhM,CAAiB,WAAY,CACpD,CAAC,GAAGA,CAAiB,iBAAiB,EAAG,CAAC,CAACG,CACjD,CAAK,EACD,MAAOgB,CACX,CAAG,EAAiBpoM,EAAM,cAAc,MAAO,CAC3C,UAAWwF,GAAW,GAAGyhM,CAAiB,WAAY,CACpD,CAAC,GAAGA,CAAiB,mBAAmB,EAAG,CAACN,EAC5C,CAAC,GAAGM,CAAiB,iBAAiB,EAAGl0J,CAC/C,CAAK,EACD,YAAa+2B,EACb,aAAcwgD,CAClB,CAAG,EAAGu4E,GAAkC7iM,EAAM,cAAc,MAAO,CAC/D,UAAWwF,GAAW,GAAGyhM,CAAiB,gBAAiB,GAAGA,CAAiB,qBAAqB,EACpG,QAAS,IAAMF,EAAW3+M,EAAO,OAAO,CAC5C,EAAkB4X,EAAM,cAAcqoM,EAAW,CAC7C,UAAW7iM,GAAW,GAAGyhM,CAAiB,iBAAkB,GAAGA,CAAiB,iBAAiB,CACrG,CAAG,CAAC,EAAInE,GAAgC9iM,EAAM,cAAc,MAAO,CAC/D,UAAWwF,GAAW,GAAGyhM,CAAiB,gBAAiB,GAAGA,CAAiB,mBAAmB,EAClG,QAAS,IAAMF,EAAW3+M,EAAO,KAAK,CAC1C,EAAkB4X,EAAM,cAAcsoM,EAAS,CAC3C,UAAW9iM,GAAW,GAAGyhM,CAAiB,iBAAkB,GAAGA,CAAiB,eAAe,CACnG,CAAG,CAAC,CAAE,CACN,EC9JMhrC,GAAc3+I,GAAS,CAC3B,KAAM,CACJ,aAAA0pB,CACJ,EAAM1pB,EACJ,MAAO,CACL,CAAC,QAAQ0pB,CAAY,aAAa,EAAG,CACnC,CAAC,KAAKA,CAAY,MAAM,EAAG,CACzB,CAAC,GAAGA,CAAY,wBAAwB,EAAG,CACzC,eAAgB,EAChB,iBAAkB,OAC5B,EACQ,CAAC,GAAGA,CAAY,oBAAoB,EAAG,CACrC,eAAgB,QAChB,iBAAkB,CAC5B,CACA,CACA,EACI,CAAC,QAAQA,CAAY,WAAW,EAAG,CACjC,CAAC,KAAKA,CAAY,MAAM,EAAG,CACzB,CAAC,GAAGA,CAAY,wBAAwB,EAAG,CACzC,eAAgB,MAChB,iBAAkB,OAC5B,EACQ,CAAC,GAAGA,CAAY,oBAAoB,EAAG,CACrC,eAAgB,MAChB,iBAAkB,OAC5B,CACA,CACA,CACA,CACA,EACMuhK,GAAc,CAClB,SAAU,WACV,IAAK,MACL,KAAM,CACJ,aAAc,GACd,MAAO,KACX,EACE,UAAW,uBACb,EACMC,GAAmBlrL,GAAS,CAChC,KAAM,CACJ,aAAA0pB,EACA,UAAAqkD,EACA,sBAAAo9G,EACA,aAAAC,EACA,iBAAAC,EACA,mBAAArkE,EACA,oBAAAD,EACA,yBAAAukE,EACA,UAAAxjK,CACJ,EAAM9nB,EACEurL,EAAc,GAAG7hK,CAAY,OAC7B8hK,EAAe,GAAG9hK,CAAY,QAC9B+hK,EAAgB,GAAG/hK,CAAY,SAC/BgiK,EAAkB1rL,EAAM,KAAKqrL,CAAgB,EAAE,IAAI,CAAC,EAAE,MAAK,EAC3DM,EAA8B,GAAG7jK,CAAS,sBAC1C8jK,EAA0B,CAC9B,SAAU,WACV,WAAY5rL,EAAM,aAClB,QAAS,GACT,cAAe,OACf,WAAY,OACZ,OAAQ,EACR,QAAS,MACb,EACE,MAAO,CACL,CAAC0pB,CAAY,EAAG,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIsC,GAAehsB,CAAK,CAAC,EAAG,CACpF,QAAS,OACT,MAAO,OACP,OAAQ,OACR,WAAY,UAGZ,CAAC,KAAKurL,CAAW,EAAE,EAAG,CACpB,KAAM,OACN,SAAU,WACV,WAAY,OAEZ,CAAC,GAAGA,CAAW,UAAU,EAAG,OAAO,OAAO,OAAO,OAAO,GAAIN,EAAW,EAAG,CACxE,OAAQ,EAER,YAAa,OAAO,OAAO,CACzB,QAAS,KACT,WAAYjkE,CACxB,EAAaikE,EAAW,EAEd,WAAY,OAAO,OAAO,CACxB,QAAS,KACT,WAAYl9G,CACxB,EAAak9G,EAAW,EAEd,CAAC,eAAeM,CAAW,kBAAkB,EAAG,CAC9C,YAAa,CACX,WAAYxkE,CAC1B,CACA,EAEU,WAAY,CACV,OAAQ,EACR,YAAa,CACX,WAAYukE,CAC1B,CACA,EAEU,CAAC,aAAaC,CAAW,UAAU,EAAG,CACpC,OAAQ,EACR,uBAAwB,CACtB,OAAQ,UACR,YAAa,CACX,WAAYvkE,CAC5B,CACA,EACY,WAAY,CACV,QAAS,MACvB,CACA,CACA,CAAS,EAED,CAAC,GAAGukE,CAAW,eAAe,EAAG,OAAO,OAAO,OAAO,OAAO,GAAIN,EAAW,EAAG,CAC7E,OAAQjrL,EAAM,gBACd,WAAYgnH,EACZ,SAAUhnH,EAAM,WAChB,aAAcA,EAAM,eACpB,MAAOA,EAAM,UACb,OAAQ,UACR,QAAS,EACT,QAAS,OACT,WAAY,SACZ,eAAgB,SAChB,qBAAsB,CACpB,QAAS,CACrB,EAEU,UAAW,CACT,WAAY+mH,CACxB,EAEU,WAAY,CACV,WAAYukE,CACxB,CACA,CAAS,EAGD,oBAAqB,CACnB,CAAC,GAAGC,CAAW,eAAe,EAAG,CAC/B,QAAS,CACrB,CACA,CACA,EAGM,CAACC,CAAY,EAAG,CACd,SAAU,QACV,OAAQxrL,EAAM,gBACd,MAAO,EACP,eAAgB,CACd,OAAQ,YAClB,EACQ,aAAc,CACZ,OAAQ,YAClB,CACA,EAIM,eAAgB,CACd,cAAe,MACf,CAAC,KAAKurL,CAAW,EAAE,EAAG,CACpB,MAAO,EAEP,CAAC,GAAGA,CAAW,UAAU,EAAG,OAAO,OAAO,OAAO,OAAO,CACtD,OAAQ,OACR,MAAOH,CACnB,EAAaQ,CAAuB,EAAG,CAC3B,CAAC,IAAIL,CAAW,iBAAiB,EAAG,CAClC,QAAS,QACT,UAAW,oBAAoBI,CAA2B,IACxE,CACA,CAAW,EAED,CAAC,GAAGJ,CAAW,UAAU,EAAG,CAC1B,OAAQ,aACR,OAAQ,OACR,MAAOF,EACP,YAAa,CACX,OAAQ,OACR,MAAOD,CACrB,EACY,WAAY,CACV,OAAQD,EACR,MAAOC,CACrB,CACA,EAEU,CAAC,GAAGG,CAAW,eAAe,EAAG,CAC/B,MAAOvrL,EAAM,WACb,OAAQA,EAAM,gBACd,UAAW,CACT,KAAM,CACJ,aAAc,GACd,MAAO,MACvB,EACc,MAAO,CACL,aAAc,GACd,MAAO0rL,CACvB,EACc,UAAW,kBACzB,EACY,QAAS,CACP,KAAM,CACJ,aAAc,GACd,MAAOA,CACvB,EACc,MAAO,CACL,aAAc,GACd,MAAO,MACvB,EACc,UAAW,kBACzB,CACA,CACA,CACA,EACM,aAAc,CACZ,cAAe,SACf,CAAC,KAAKH,CAAW,EAAE,EAAG,CACpB,OAAQ,EAER,CAAC,GAAGA,CAAW,UAAU,EAAG,OAAO,OAAO,OAAO,OAAO,CACtD,OAAQH,EACR,MAAO,MACnB,EAAaQ,CAAuB,EAAG,CAC3B,CAAC,IAAIL,CAAW,iBAAiB,EAAG,CAClC,QAAS,QACT,UAAW,oBAAoBI,CAA2B,IACxE,CACA,CAAW,EAED,CAAC,GAAGJ,CAAW,UAAU,EAAG,CAC1B,OAAQ,aACR,MAAO,OACP,OAAQF,EACR,YAAa,CACX,MAAO,OACP,OAAQD,CACtB,EACY,WAAY,CACV,MAAOD,EACP,OAAQC,CACtB,CACA,EAEU,CAAC,GAAGG,CAAW,eAAe,EAAG,CAC/B,OAAQvrL,EAAM,WACd,MAAOA,EAAM,gBACb,UAAW,CACT,IAAK,OACL,OAAQ0rL,EACR,UAAW,kBACzB,EACY,QAAS,CACP,IAAKA,EACL,OAAQ,OACR,UAAW,kBACzB,CACA,CACA,CACA,EAEM,CAACD,CAAa,EAAG,CACf,SAAU,OACV,QAAS,QACT,eAAgB,OAChB,UAAW,aACX,WAAY,CACV,QAAS,EACT,SAAU,QACpB,EACQ,CAAC,SAAS/hK,CAAY,cAAc,EAAG,CACrC,SAAU,QACpB,CACA,CACA,CAAK,EAAGi1H,GAAY3+I,CAAK,CAAC,CAC1B,CACA,EAgBA0nB,GAAeL,GAAc,WAAYrnB,GAAS,CAACkrL,GAAiBlrL,CAAK,CAAC,EAfrCA,GAAS,CAC5C,IAAIp2B,EACJ,MAAMwhN,EAAeprL,EAAM,cAAgB,EACrCqrL,EAAmBrrL,EAAM,kBAAoB,EAE7C6rL,EAAoB7rL,EAAM,mBAAqB,GAC/CmrL,GAAyBvhN,EAAKo2B,EAAM,yBAA2B,MAAQp2B,IAAO,OAASA,EAAKiiN,EAClG,MAAO,CACL,aAAAT,EACA,iBAAAC,EACA,sBAAAF,EACA,kBAAAU,CACJ,CACA,CAEkG,EC7R5FC,GAAW/vM,GAAS,CACxB,KAAM,CACJ,UAAWukC,EACX,UAAAwhB,EACA,MAAA1jC,EACA,OAAAy+B,EAAS,aACT,SAAA/zC,EACA,cAAA45C,EACA,cAAAqpJ,EACA,SAAA77L,EACA,YAAA87L,EACA,KAAAtC,CACJ,EAAM3tM,EACE,CACJ,aAAA8kC,EACA,UAAAC,EACA,UAAWgnB,EACX,MAAOC,CACX,EAAMrnB,GAAmB,UAAU,EAC3BoH,EAAYjH,EAAa,WAAYP,CAAkB,EACvDyH,EAAU4gB,GAAa7gB,CAAS,EAChC,CAACM,EAAY1mB,EAAQ2mB,CAAS,EAAIX,GAASI,EAAWC,CAAO,EAE7DkkK,EAAapvJ,IAAW,WACxBm2E,EAAQlyF,IAAc,MACtBw0I,EAAU,CAAC22B,GAAcj5E,EAEzB5oC,EAAQq6G,GAAS37L,CAAQ,EAE/B,GAAI,QAAQ,IAAI,WAAa,aAAc,CACzC,MAAMK,EAAUirB,GAAc,UAAU,EACxC,IAAI83K,EAAY,GACZC,GAAqB,GACzB/hH,EAAM,QAAQvqE,GAAQ,CAChBA,EAAK,OAAS,OAChBqsL,EAAY,GAEZC,GAAqB,EAEzB,CAAC,EACGD,GAAaC,IAAsB,CAACj8L,GACtC,QAAQ,IAAI,WAAa,cAAe/G,EAAQ,GAAO,QAAS,qGAAqG,CAEzK,CAEA,KAAM,CAACumH,EAAe08E,CAAgB,EAAItvM,WAAQ,EAC5CuvM,EAAoBl8L,GAAQ,CAChC,KAAM,CACJ,YAAAmH,EACA,aAAAC,EACN,EAAQpH,EACEu/G,EAAgBu8E,EAAa10L,GAAeD,EAG9Co4G,IAAkB,GAGtB08E,EAAiB18E,CAAa,CAChC,EAEM,CAAC48E,EAAYC,EAAaC,EAAcC,EAAiBC,EAAiB3F,CAAW,EAAInB,GAASx7G,EAAOslC,CAAa,EAEtHm3E,EAAiBnC,GAAat6G,EAAOmiH,EAAav5E,CAAK,EACvD,CAACs2E,EAAeC,EAAgBC,EAAaC,EAAYnC,CAAW,EAAIV,GAAUx8G,EAAOy8G,EAAgB2F,EAAc98E,EAAeq3E,EAAa/zE,CAAK,EAExJ25E,EAAwBxpK,GAASr4C,GAAS,CAC9Cw+M,EAAcx+M,CAAK,EACnBihN,GAAkB,MAA4CA,EAAcQ,CAAW,CACzF,CAAC,EACKK,EAAyBzpK,GAAS,CAACr4C,EAAOw/B,EAAQuiL,KAAY,CAClE,MAAMC,EAAYvD,EAAez+M,EAAOw/B,CAAM,EAC1CuiL,GACFb,GAAgB,MAA0CA,EAAYc,CAAS,EAE/E58L,GAAa,MAAuCA,EAAS48L,CAAS,CAE1E,CAAC,EACKC,EAAsB5pK,GAAS0pK,GAAW,CAC9CrD,EAAW,EACNqD,GACHb,GAAgB,MAA0CA,EAAYO,CAAW,CAErF,CAAC,EACKS,GAAqB7pK,GAAS,CAACr4C,EAAOpB,IAAS,CACnD,MAAMojN,GAAYrD,EAAW3+M,EAAOpB,CAAI,EACxCwmB,GAAa,MAAuCA,EAAS48L,EAAS,EACtEd,GAAgB,MAA0CA,EAAYc,EAAS,CACjF,CAAC,EAEKla,GAAqB1qL,GAAW4/B,EAAWga,EAAW,GAAGha,CAAS,IAAI+U,CAAM,GAAI,CACpF,CAAC,GAAG/U,CAAS,MAAM,EAAGkrF,CAC1B,EAAKtwE,EAAeoF,EAAkBzf,EAAWN,EAASrmB,CAAM,EAExDurL,GAAU,GAAGnlK,CAAS,QACtBolK,GAAaxqM,EAAM,QAAQ,IAAM,CACrC,MAAMyjM,EAAc,CAAA,EACpB,IAAI3/M,EAAQ,EACZ,QAAS0C,GAAI,EAAGA,GAAIkhG,EAAM,OAAQlhG,IAAK,EACrC1C,GAASgmN,EAAatjN,EAAC,EACvBi9M,EAAY,KAAK3/M,CAAK,EAExB,OAAO2/M,CACT,EAAG,CAACqG,CAAY,CAAC,EACX79K,GAAc,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIo5B,CAAY,EAAG3pC,CAAK,EACxE,OAAOgqB,EAAwB1lC,EAAM,cAAckS,GAAgB,CACjE,SAAUy3L,CACd,EAAkB3pM,EAAM,cAAc,MAAO,CACzC,MAAOisB,GACP,UAAWikK,EACf,EAAKxoG,EAAM,IAAI,CAACvqE,EAAMy4C,IAAQ,CAE1B,MAAM60I,GAAqBzqM,EAAM,cAAcyhM,GAAe,OAAO,OAAO,CAAA,EAAItkL,EAAM,CACpF,UAAWioB,EACX,KAAMwkK,EAAWh0I,CAAG,CAC1B,CAAK,CAAC,EAEF,IAAI80I,EAAW,KACf,MAAMC,GAAgBxG,EAAevuI,CAAG,EACxC,GAAI+0I,GAAe,CACjB,MAAMC,IAAgBJ,GAAW50I,EAAM,CAAC,GAAK,GAAKm0I,EAAgBn0I,CAAG,EAC/Di1I,IAAcL,GAAW50I,EAAM,CAAC,GAAK,KAAOo0I,EAAgBp0I,EAAM,CAAC,EACnEk1I,IAAgBN,GAAW50I,EAAM,CAAC,GAAK,GAAKo0I,EAAgBp0I,CAAG,EAC/Dm1I,IAAcP,GAAW50I,EAAM,CAAC,GAAK,KAAOm0I,EAAgBn0I,EAAM,CAAC,EACzE80I,EAAwB1qM,EAAM,cAAcumM,GAAU,CACpD,KAAMS,EACN,MAAOpxI,EACP,OAAQgvI,IAAgBhvI,EACxB,UAAWxwB,EACX,SAAUmkK,EACV,UAAWoB,GAAc,UACzB,QAASH,GAAW50I,CAAG,EAAI,IAC3B,QAAS,KAAK,IAAIg1I,GAAcC,EAAU,EAAI,IAC9C,QAAS,KAAK,IAAIC,GAAcC,EAAU,EAAI,IAC9C,iBAAkBJ,GAAc,iBAChC,eAAgBA,GAAc,eAC9B,cAAeV,EACf,eAAgB,CAAC7hN,GAAOgsE,GAASC,GAAS81I,KAAY,CACpD,IAAIviL,GAAS2hL,EAAal1I,GAAUD,GAChCw+G,IACFhrJ,GAAS,CAACA,IAEZsiL,EAAuB9hN,GAAOw/B,GAAQuiL,EAAO,CAC/C,EACA,YAAaE,EACb,WAAYC,GACZ,cAAet9E,GAAiB,CACxC,CAAO,CACH,CACA,OAAoBhtH,EAAM,cAAcA,EAAM,SAAU,CACtD,IAAK,eAAe41D,CAAG,EAC7B,EAAO60I,GAAOC,CAAQ,CACpB,CAAC,EAAG,OAAO9F,GAAgB,UAA0B5kM,EAAM,cAAc,MAAO,CAC9E,cAAe,GACf,UAAWwF,GAAW+kM,GAAS,GAAGA,EAAO,IAAIpwJ,CAAM,EAAE,CACzD,CAAG,CAAE,CAAC,CAAC,CACP,EACI,QAAQ,IAAI,WAAa,eAC3BivJ,GAAS,YAAc,YC1KzB,MAAMA,GAAW4B,GACjB5B,GAAS,MAAQ9/H,6CCFhB,SAAS2hI,EAAOC,EAAU,CAAc,IAAIC,EAAW,SAASC,EAAM,GAAGC,EAAQ,IAAIC,EAAU,WAAWC,EAAW,YAAYC,EAAS,SAASC,EAAS,SAASC,EAAM,QAAQC,EAAM,QAAQC,EAAK,OAAOC,EAAK,OAAOC,EAAO,SAASC,EAAQ,UAAUC,EAAa,eAAeC,EAAQ,UAAUC,EAAO,SAASC,EAAO,SAASC,EAAQ,UAAUC,EAAS,WAAWC,EAAS,WAAWC,EAAc,IAAQC,EAAO,SAASC,EAAM,QAAQC,EAAK,OAAOC,EAAW,aAAaC,EAAQ,UAAUC,EAAO,SAASC,EAAK,OAAOC,EAAQ,UAAUC,EAAO,SAASC,EAAO,SAASC,EAAG,KAAKC,EAAU,YAAYC,EAAS,WAAWC,EAAM,QAAQC,EAAQ,UAAUC,EAAM,QAAQC,EAAK,OAAOC,GAAO,SAASC,GAAM,QAAQC,GAAS,WAAWC,GAAY,cAAcC,GAAO,SAASC,EAAe,WAAeC,EAAO,SAASC,EAAQC,GAAW,CAAC,IAAIC,GAAc,CAAA,EAAG,QAAQ1nN,MAAKwnN,EAAYC,GAAWznN,EAAC,GAAGynN,GAAWznN,EAAC,EAAE,OAAO,IAAI,EAAG0nN,GAAc1nN,EAAC,EAAEynN,GAAWznN,EAAC,EAAE,OAAOwnN,EAAQxnN,EAAC,CAAC,EAAO0nN,GAAc1nN,EAAC,EAAEwnN,EAAQxnN,EAAC,EAAG,OAAO0nN,EAAa,EAAEC,GAAU,SAASrgM,EAAI,CAAc,QAATsgM,GAAM,CAAA,EAAW5nN,GAAE,EAAEA,GAAEsnB,EAAI,OAAOtnB,KAAK4nN,GAAMtgM,EAAItnB,EAAC,EAAE,YAAW,CAAE,EAAEsnB,EAAItnB,EAAC,EAAE,OAAO4nN,EAAK,EAAEC,EAAI,SAASC,EAAKC,GAAK,CAAC,OAAO,OAAOD,IAAO7C,EAAS+C,GAASD,EAAI,EAAE,QAAQC,GAASF,CAAI,CAAC,IAAI,GAAG,EAAK,EAAEE,GAAS,SAASrpN,EAAI,CAAC,OAAOA,EAAI,YAAW,CAAE,EAAEspN,GAAS,SAASziM,EAAQ,CAAC,OAAO,OAAOA,IAAUy/L,EAASz/L,EAAQ,QAAQ,WAAWo/L,CAAK,EAAE,MAAM,GAAG,EAAE,CAAC,EAAEF,CAAS,EAAEzlL,GAAK,SAAStgC,EAAIqyB,GAAI,CAAC,GAAG,OAAOryB,IAAMsmN,EAAU,OAAAtmN,EAAIA,EAAI,QAAQ,SAASimN,CAAK,EAAS,OAAO5zL,KAAM+zL,EAAWpmN,EAAIA,EAAI,UAAU,EAAEonN,CAAa,CAAE,EAAMmC,GAAU,SAASC,EAAGC,GAAO,CAA+B,QAA1BpoN,GAAE,EAAEG,GAAEzC,GAAEE,GAAE2O,GAAEk3I,GAAQ95I,GAAY3J,GAAEooN,GAAO,QAAQ,CAAC3kE,IAAQ,CAAC,IAAIh4D,GAAM28H,GAAOpoN,EAAC,EAAE6S,GAAMu1M,GAAOpoN,GAAE,CAAC,EAAQ,IAANG,GAAEzC,GAAE,EAAQyC,GAAEsrF,GAAM,QAAQ,CAACg4D,IAAah4D,GAAMtrF,EAAC,GAAqC,GAA5BsjJ,GAAQh4D,GAAMtrF,IAAG,EAAE,KAAKgoN,CAAE,EAAO1kE,GAAS,IAAI7lJ,GAAE,EAAEA,GAAEiV,GAAM,OAAOjV,KAAK+L,GAAM85I,GAAQ,EAAE/lJ,EAAC,EAAE6O,GAAEsG,GAAMjV,EAAC,EAAK,OAAO2O,KAAIy4M,GAAUz4M,GAAE,OAAO,EAAMA,GAAE,SAAS,EAAM,OAAOA,GAAE,CAAC,GAAGu4M,EAAW,KAAKv4M,GAAE,CAAC,CAAC,EAAEA,GAAE,CAAC,EAAE,KAAK,KAAK5C,EAAK,EAAO,KAAK4C,GAAE,CAAC,CAAC,EAAEA,GAAE,CAAC,EAAWA,GAAE,SAAS,EAAM,OAAOA,GAAE,CAAC,IAAIu4M,GAAW,EAAEv4M,GAAE,CAAC,EAAE,MAAMA,GAAE,CAAC,EAAE,MAAO,KAAKA,GAAE,CAAC,CAAC,EAAE5C,GAAM4C,GAAE,CAAC,EAAE,KAAK,KAAK5C,GAAM4C,GAAE,CAAC,CAAC,EAAEm4M,EAAe,KAAKn4M,GAAE,CAAC,CAAC,EAAE5C,GAAMA,GAAM,QAAQ4C,GAAE,CAAC,EAAEA,GAAE,CAAC,CAAC,EAAEm4M,EAAmBn4M,GAAE,SAAS,IAAG,KAAKA,GAAE,CAAC,CAAC,EAAE5C,GAAM4C,GAAE,CAAC,EAAE,KAAK,KAAK5C,GAAM,QAAQ4C,GAAE,CAAC,EAAEA,GAAE,CAAC,CAAC,CAAC,EAAEm4M,GAAgB,KAAKn4M,EAAC,EAAE5C,IAAY+6M,EAAa1kN,IAAG,CAAC,CAAC,EAAEqoN,GAAU,SAAS1pN,EAAI87F,GAAI,CAAC,QAAQz6F,MAAKy6F,GAAK,GAAG,OAAOA,GAAIz6F,EAAC,IAAIglN,GAAUvqH,GAAIz6F,EAAC,EAAE,OAAO,GAAG,QAAQG,GAAE,EAAEA,GAAEs6F,GAAIz6F,EAAC,EAAE,OAAOG,KAAK,GAAG0nN,EAAIptH,GAAIz6F,EAAC,EAAEG,EAAC,EAAExB,CAAG,EAAG,OAAOqB,KAAI6kN,EAAQH,EAAU1kN,WAAY6nN,EAAIptH,GAAIz6F,EAAC,EAAErB,CAAG,EAAG,OAAOqB,KAAI6kN,EAAQH,EAAU1kN,GAAG,OAAOy6F,GAAI,eAAe,GAAG,EAAEA,GAAI,GAAG,EAAE97F,CAAG,EAAM2pN,GAAa,CAAC,MAAM,KAAK,IAAI,KAAK,IAAI,KAAK,MAAM,OAAO,QAAQ,OAAO,QAAQ,OAAO,QAAQ,OAAO,IAAI,GAAG,EAAEC,GAAkB,CAAC,GAAG,OAAO,UAAU,SAAS,SAAS,QAAQ,IAAI,SAAS,GAAG,CAAC,SAAS,QAAQ,EAAE,MAAM,SAAS,EAAE,SAAS,EAAE,SAAS,IAAI,SAAS,GAAG,CAAC,SAAS,SAAS,EAAE,GAAG,KAAK,EAAMf,GAAQ,CAAC,QAAQ,CAAC,CAAC,8BAA8B,EAAE,CAACjC,EAAQ,CAACH,EAAK,QAAQ,CAAC,EAAE,CAAC,6BAA6B,EAAE,CAACG,EAAQ,CAACH,EAAK,MAAM,CAAC,EAAE,CAAC,4BAA4B,mDAAmD,yCAAyC,EAAE,CAACA,EAAKG,CAAO,EAAE,CAAC,uBAAuB,EAAE,CAACA,EAAQ,CAACH,EAAKyB,EAAM,OAAO,CAAC,EAAE,CAAC,0BAA0B,EAAE,CAACtB,EAAQ,CAACH,EAAKyB,EAAM,KAAK,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAACtB,EAAQ,CAACH,EAAKyB,CAAK,CAAC,EAAE,CAAC,wDAAwD,EAAE,CAACtB,EAAQ,CAACH,EAAK,OAAO,CAAC,EAAE,CAAC,6CAA6C,EAAE,CAACG,EAAQ,CAACH,EAAK,SAAS,CAAC,EAAE,CAAC,uBAAuB,uEAAuE,4DAA4D,2BAA2B,+NAA+N,sCAAsC,qBAAqB,EAAE,CAACA,EAAKG,CAAO,EAAE,CAAC,2BAA2B,EAAE,CAACA,EAAQ,CAACH,EAAK,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAACG,EAAQ,CAACH,EAAK,YAAY,CAAC,EAAE,CAAC,mDAAmD,EAAE,CAACG,EAAQ,CAACH,EAAK,KAAKgB,CAAO,CAAC,EAAE,CAAC,+BAA+B,+BAA+B,4BAA4B,EAAE,CAACb,EAAQ,CAACH,EAAK,QAAQ,CAAC,EAAE,CAAC,uBAAuB,EAAE,CAACG,EAAQ,CAACH,EAAK,WAAW,CAAC,EAAE,CAAC,6CAA6C,EAAE,CAACG,EAAQ,CAACH,EAAK,IAAI,CAAC,EAAE,CAAC,kCAAkC,EAAE,CAACG,EAAQ,CAACH,EAAK,QAAQ,CAAC,EAAE,CAAC,uBAAuB,EAAE,CAACG,EAAQ,CAACH,EAAK,gBAAgBgB,CAAO,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAAC,CAAChB,EAAK,OAAO,aAAagB,CAAO,EAAEb,CAAO,EAAE,CAAC,qBAAqB,EAAE,CAACA,EAAQ,CAACH,EAAKmB,EAAQ,QAAQ,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAChB,EAAQ,CAACH,EAAKyB,EAAM,QAAQ,CAAC,EAAE,CAAC,wBAAwB,EAAE,CAACtB,EAAQ,CAACH,EAAK,SAAS,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAACG,EAAQ,CAACH,EAAK,SAAS,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAACG,EAAQ,CAACH,EAAKyB,EAAM,QAAQ,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAACtB,EAAQ,CAACH,EAAK,OAAOkC,CAAc,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC/B,EAAQ,CAACH,EAAKmB,CAAO,CAAC,EAAE,CAAC,6BAA6B,EAAE,CAAChB,EAAQ,CAACH,EAAK,KAAK,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,CAACA,EAAK,OAAO,WAAW,EAAEG,CAAO,EAAE,CAAC,uDAAuD,EAAE,CAAC,CAACH,EAAK,OAAO,KAAKkC,CAAc,EAAE/B,CAAO,EAAE,CAAC,4BAA4B,EAAE,CAACA,EAAQ,CAACH,EAAK0B,EAAQ,WAAW,CAAC,EAAE,CAAC,wBAAwB,EAAE,CAACvB,EAAQ,CAACH,EAAK,gBAAgB,CAAC,EAAE,CAAC,0BAA0B,EAAE,CAAC,CAACA,EAAK,cAAc,EAAEG,CAAO,EAAE,CAAC,gCAAgC,iDAAiD,oEAAoE,EAAE,CAACH,EAAKG,CAAO,EAAE,CAAC,sBAAsB,oBAAoB,EAAE,CAACH,CAAI,EAAE,CAAC,kCAAkC,kCAAkC,EAAE,CAACG,EAAQH,CAAI,EAAE,CAAC,6DAA6D,EAAE,CAAC,CAACA,EAAK+B,EAAQ,EAAE5B,CAAO,EAAE,CAAC,uBAAuB,uCAAuC,kCAAkC,4BAA4B,4BAA4B,6BAA6B,qCAAqC,+CAA+C,EAAE,CAACH,EAAKG,CAAO,EAAE,CAAC,8BAA8B,EAAE,CAACA,EAAQ,CAACH,EAAK,KAAK,CAAC,EAAE,CAAC,4CAA4C,EAAE,CAACG,EAAQ,CAACH,EAAK,QAAQ,CAAC,EAAE,CAAC,kCAAkC,EAAE,CAACG,EAAQ,CAACH,EAAKiB,EAAO,WAAW,CAAC,EAAE,CAAC,6BAA6B,EAAE,CAAC,CAACjB,EAAKiB,EAAO,UAAU,EAAEd,CAAO,EAAE,CAAC,yDAAyD,EAAE,CAACA,EAAQ,CAACH,EAAK,WAAWgB,CAAO,CAAC,EAAE,CAAC,6DAA6D,EAAE,CAAChB,EAAKG,CAAO,EAAE,CAAC,8CAA8C,EAAE,CAACA,EAAQ,CAACH,EAAK,eAAe,CAAC,EAAE,CAAC,oDAAoD,EAAE,CAACG,EAAQH,CAAI,EAAE,CAAC,8CAA8C,EAAE,CAACA,EAAK,CAACG,EAAQ8C,GAAUC,EAAY,CAAC,EAAE,CAAC,4BAA4B,EAAE,CAAClD,EAAKG,CAAO,EAAE,CAAC,sCAAsC,EAAE,CAAC,CAACH,EAAK,UAAU,EAAEG,CAAO,EAAE,CAAC,gCAAgC,EAAE,CAACH,EAAKG,CAAO,EAAE,CAAC,qCAAqC,EAAE,CAACA,EAAQ,CAACH,EAAKmB,EAAQ,UAAU,CAAC,EAAE,CAAC,6BAA6B,cAAc,8FAA8F,+FAA+F,wBAAwB,2CAA2C,+GAA+G,sBAAsB,EAAE,CAACnB,EAAK,CAACG,EAAQ,KAAK,GAAG,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAACH,EAAK,CAACG,EAAQ,eAAe,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,+CAA+C,EAAE,CAAC,CAACC,EAAa,OAAO,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,CAACA,EAAawC,EAAQ,CAAC,EAAE,CAAC,wBAAwB,EAAE,CAAC,CAACxC,EAAa,MAAM,CAAC,EAAE,CAAC,kCAAkC,EAAE,CAAC,CAACA,EAAa,OAAO,CAAC,EAAE,CAAC,iCAAiC,EAAE,CAAC,CAACA,EAAa,OAAO,CAAC,EAAE,CAAC,4BAA4B,EAAE,CAAC,CAACA,EAAa,KAAK,CAAC,EAAE,CAAC,wCAAwC,EAAE,CAAC,CAACA,EAAa,OAAOZ,EAAMoD,EAAQ,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,CAACxC,EAAa,OAAO,CAAC,EAAE,CAAC,yHAAyH,EAAE,CAAC,CAACA,EAAawC,EAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,iFAAiF,EAAE,CAAC7C,EAAM,CAACG,EAAOwB,CAAO,EAAE,CAACzB,EAAKM,CAAM,CAAC,EAAE,CAAC,iEAAiE,kCAAkC,eAAe,EAAE,CAACR,EAAM,CAACG,EAAOwB,CAAO,EAAE,CAACzB,EAAKK,CAAM,CAAC,EAAE,CAAC,0CAA0C,EAAE,CAACP,EAAM,CAACG,EAAOW,CAAK,EAAE,CAACZ,EAAKK,CAAM,CAAC,EAAE,CAAC,6BAA6B,oCAAoC,gCAAgC,EAAE,CAACP,EAAM,CAACG,EAAOW,CAAK,EAAE,CAACZ,EAAKM,CAAM,CAAC,EAAE,CAAC,eAAe,EAAE,CAACR,EAAM,CAACG,EAAOW,CAAK,CAAC,EAAE,CAAC,+BAA+B,EAAE,CAACd,EAAM,CAACG,EAAOyB,CAAK,EAAE,CAAC1B,EAAKK,CAAM,CAAC,EAAE,CAAC,0BAA0B,EAAE,CAACP,EAAM,CAACG,EAAO,OAAO,EAAE,CAACD,EAAKK,CAAM,CAAC,EAAE,CAAC,6DAA6D,EAAE,CAACP,EAAM,CAACG,EAAOmB,CAAM,EAAE,CAACpB,EAAKM,CAAM,CAAC,EAAE,CAAC,4BAA4B,oEAAoE,EAAE,CAACR,EAAM,CAACG,EAAOmB,CAAM,EAAE,CAACpB,EAAKK,CAAM,CAAC,EAAE,CAAC,kDAAkD,yBAAyB,uCAAuC,iDAAiD,4DAA4D,2GAA2G,EAAE,CAAC,CAACP,EAAM,KAAK,GAAG,EAAE,CAACG,EAAO2B,EAAM,EAAE,CAAC5B,EAAKK,CAAM,CAAC,EAAE,CAAC,+CAA+C,4CAA4C,EAAE,CAAC,CAACP,EAAM,KAAK,GAAG,EAAE,CAACG,EAAO2B,EAAM,EAAE,CAAC5B,EAAKM,CAAM,CAAC,EAAE,CAAC,sBAAsB,iEAAiE,EAAE,CAACR,EAAM,CAACG,EAAO,MAAM,EAAE,CAACD,EAAKK,CAAM,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAACP,EAAM,CAACG,EAAO,MAAM,EAAE,CAACD,EAAKM,CAAM,CAAC,EAAE,CAAC,yBAAyB,kCAAkC,EAAE,CAACR,EAAM,CAACG,EAAO,MAAM,EAAE,CAACD,EAAKK,CAAM,CAAC,EAAE,CAAC,iCAAiC,EAAE,CAACP,EAAM,CAACG,EAAO,QAAQ,EAAE,CAACD,EAAKK,CAAM,CAAC,EAAE,CAAC,iFAAiF,4BAA4B,oDAAoD,EAAE,CAACP,EAAM,CAACG,EAAOsB,CAAQ,EAAE,CAACvB,EAAKK,CAAM,CAAC,EAAE,CAAC,mCAAmC,EAAE,CAACP,EAAM,CAACG,EAAOsB,CAAQ,EAAE,CAACvB,EAAKM,CAAM,CAAC,EAAE,CAAC,+DAA+D,EAAE,CAACR,EAAM,CAACG,EAAOoB,CAAE,EAAE,CAACrB,EAAKM,CAAM,CAAC,EAAE,CAAC,sDAAsD,oDAAoD,sBAAsB,EAAE,CAACR,EAAM,CAACG,EAAOoB,CAAE,EAAE,CAACrB,EAAKK,CAAM,CAAC,EAAE,CAAC,oBAAoB,mEAAmE,EAAE,CAACP,EAAM,CAACG,EAAO,QAAQ,EAAE,CAACD,EAAKM,CAAM,CAAC,EAAE,CAAC,qCAAqC,wBAAwB,EAAE,CAAC,CAACR,EAAM,KAAK,GAAG,EAAE,CAACG,EAAO,OAAO,EAAE,CAACD,EAAKK,CAAM,CAAC,EAAE,CAAC,cAAc,EAAE,CAACP,EAAM,CAACG,EAAOkB,CAAM,EAAE,CAACnB,EAAKM,CAAM,CAAC,EAAE,CAAC,2CAA2C,EAAE,CAACR,EAAM,CAACG,EAAOkB,CAAM,EAAE,CAACnB,EAAKK,CAAM,CAAC,EAAE,CAAC,yGAAyG,EAAE,CAACP,EAAM,CAACG,EAAO0B,CAAI,EAAE,CAAC3B,EAAKK,CAAM,CAAC,EAAE,CAAC,oBAAoB,+BAA+B,EAAE,CAAC,CAACP,EAAM,eAAe,EAAE,CAACG,EAAO0B,CAAI,EAAE,CAAC3B,EAAKM,CAAM,CAAC,EAAE,CAAC,sCAAsC,wCAAwC,EAAE,CAACR,EAAM,CAACG,EAAO,SAAS,EAAE,CAACD,EAAKK,CAAM,CAAC,EAAE,CAAC,eAAe,yCAAyC,8BAA8B,EAAE,CAACP,EAAM,CAACG,EAAOU,CAAM,EAAE,CAACX,EAAKM,CAAM,CAAC,EAAE,CAAC,+CAA+C,EAAE,CAAC,CAACR,EAAM,QAAQ,eAAe,EAAE,CAACG,EAAOU,CAAM,EAAE,CAACX,EAAKK,CAAM,CAAC,EAAE,CAAC,8BAA8B,EAAE,CAACP,EAAMG,EAAO,CAACD,EAAKM,CAAM,CAAC,EAAE,CAAC,gCAAgC,gBAAgB,EAAE,CAACR,EAAM,CAACG,EAAOa,CAAU,EAAE,CAACd,EAAKK,CAAM,CAAC,EAAE,CAAC,mFAAmF,EAAE,CAACP,EAAM,CAACG,EAAOY,CAAI,EAAE,CAACb,EAAKM,CAAM,CAAC,EAAE,CAAC,+CAA+C,EAAE,CAACR,EAAM,CAACG,EAAOY,CAAI,EAAE,CAACb,EAAKK,CAAM,CAAC,EAAE,CAAC,YAAY,EAAE,CAACP,EAAM,CAACG,EAAO,KAAK,EAAE,CAACD,EAAKM,CAAM,CAAC,EAAE,CAAC,2CAA2C,oCAAoC,+EAA+E,EAAE,CAACL,EAAO,CAACH,EAAM,KAAK,GAAG,EAAE,CAACE,EAAKK,CAAM,CAAC,EAAE,CAAC,8GAA8G,EAAE,CAACP,EAAM,CAACG,EAAO,KAAK,EAAE,CAACD,EAAKM,CAAM,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAACL,EAAO0C,EAAQ,EAAE7C,EAAM,CAACE,EAAKgD,GAAU,CAAC,OAAO,CAAC,UAAU,OAAO,EAAE,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,qCAAqC,EAAE,CAAClD,EAAM,CAACG,EAAO,MAAM,EAAE,CAACD,EAAKM,CAAM,CAAC,EAAE,CAAC,8BAA8B,mBAAmB,EAAE,CAACR,EAAM,CAACG,EAAO,OAAO,EAAE,CAACD,EAAKK,CAAM,CAAC,EAAE,CAAC,gDAAgD,EAAE,CAACP,EAAM,CAACG,EAAO,SAAS,EAAE,CAACD,EAAKK,CAAM,CAAC,EAAE,CAAC,8BAA8B,kCAAkC,EAAE,CAACP,EAAM,CAACG,EAAO,WAAW,EAAE,CAACD,EAAKK,CAAM,CAAC,EAAE,CAAC,gBAAgB,6CAA6C,EAAE,CAACP,EAAM,CAACG,EAAO,KAAK,EAAE,CAACD,EAAKK,CAAM,CAAC,EAAE,CAAC,wCAAwC,EAAE,CAACP,EAAM,CAACG,EAAO,WAAW,EAAE,CAACD,EAAKK,CAAM,CAAC,EAAE,CAAC,mCAAmC,EAAE,CAACP,EAAM,CAACG,EAAO,SAAS,EAAE,CAACD,EAAKK,CAAM,CAAC,EAAE,CAAC,+HAA+H,uCAAuC,mBAAmB,iBAAiB,8BAA8B,0BAA0B,WAAW,uBAAuB,EAAE,CAACJ,EAAOH,EAAM,CAACE,EAAKK,CAAM,CAAC,EAAE,CAAC,mBAAmB,2BAA2B,wBAAwB,uCAAuC,uBAAuB,4BAA4B,iCAAiC,kCAAkC,8BAA8B,gCAAgC,iCAAiC,EAAE,CAACJ,EAAOH,EAAM,CAACE,EAAKM,CAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAACR,EAAM,CAACG,EAAOqB,CAAS,EAAE,CAACtB,EAAKM,CAAM,CAAC,EAAE,CAAC,mCAAmC,EAAE,CAACR,EAAM,CAACG,EAAO,WAAW,EAAE,CAACD,EAAKK,CAAM,CAAC,EAAE,CAAC,WAAW,EAAE,CAACP,EAAM,CAACG,EAAO,MAAM,EAAE,CAACD,EAAKK,CAAM,CAAC,EAAE,CAAC,cAAc,EAAE,CAACP,EAAM,CAACG,EAAO,SAAS,EAAE,CAACD,EAAKK,CAAM,CAAC,EAAE,CAAC,eAAe,EAAE,CAACP,EAAM,CAACG,EAAO,KAAK,EAAE,CAACD,EAAKM,CAAM,CAAC,EAAE,CAAC,wBAAwB,EAAE,CAACR,EAAM,CAACG,EAAO,MAAM,EAAE,CAACD,EAAKM,CAAM,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAACR,EAAM,CAACG,EAAO,SAAS,EAAE,CAACD,EAAKM,CAAM,CAAC,EAAE,CAAC,6CAA6C,EAAE,CAACR,EAAM,CAACG,EAAO,gBAAgB,EAAE,CAACD,EAAKM,CAAM,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAACR,EAAM,CAACG,EAAO,UAAU,EAAE,CAACD,EAAKM,CAAM,CAAC,EAAE,CAAC,YAAY,EAAE,CAACR,EAAM,CAACG,EAAO,KAAK,EAAE,CAACD,EAAKM,CAAM,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAACR,EAAM,CAACG,EAAO,KAAK,EAAE,CAACD,EAAKK,CAAM,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAACP,EAAM,CAACG,EAAO,OAAO,EAAE,CAACD,EAAKK,CAAM,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAACP,EAAM,CAACG,EAAO,OAAO,EAAE,CAACD,EAAKM,CAAM,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAACR,EAAM,CAACG,EAAO,MAAM,EAAE,CAACD,EAAKM,CAAM,CAAC,EAAE,CAAC,mBAAmB,oCAAoC,EAAE,CAAC,CAACL,EAAO,cAAc,EAAEH,EAAM,CAACE,EAAKM,CAAM,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAACR,EAAM,CAACG,EAAO,UAAU,EAAE,CAACD,EAAKM,CAAM,CAAC,EAAE,CAAC,4BAA4B,EAAE,CAACR,EAAM,CAACG,EAAO,UAAU,EAAE,CAACD,EAAKM,CAAM,CAAC,EAAE,CAAC,kDAAkD,EAAE,CAAC,CAACL,EAAO,OAAO,EAAEH,EAAM,CAACE,EAAKK,CAAM,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAAC,CAACJ,EAAO,OAAO,EAAEH,EAAM,CAACE,EAAKK,CAAM,CAAC,EAAE,CAAC,YAAY,EAAE,CAACP,EAAM,CAACG,EAAO,WAAW,EAAE,CAACD,EAAKK,CAAM,CAAC,EAAE,CAAC,qCAAqC,EAAE,CAACP,EAAM,CAACG,EAAO,SAAS,EAAE,CAACD,EAAKM,CAAM,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAACR,EAAM,CAACG,EAAO,WAAW,EAAE,CAACD,EAAKM,CAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAACR,EAAM,CAACG,EAAO,OAAO,EAAE,CAACD,EAAKM,CAAM,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAACR,EAAM,CAACG,EAAO,QAAQ,EAAE,CAACD,EAAKM,CAAM,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAACL,EAAOH,EAAM,CAACE,EAAKK,CAAM,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,CAACP,EAAM,MAAM,GAAG,EAAE,CAACG,EAAOqB,CAAS,EAAE,CAACtB,EAAKK,CAAM,CAAC,EAAE,CAAC,uDAAuD,EAAE,CAACP,EAAM,CAACG,EAAO4B,EAAK,EAAE,CAAC7B,EAAKM,CAAM,CAAC,EAAE,CAAC,uCAAuC,EAAE,CAACR,EAAM,CAACG,EAAO4B,EAAK,EAAE,CAAC7B,EAAKK,CAAM,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAACJ,EAAO,CAACD,EAAKO,CAAO,CAAC,EAAE,CAAC,qBAAqB,EAAE,CAAC,CAACT,EAAM,IAAI,SAAS,EAAE,CAACG,EAAOwB,CAAO,EAAE,CAACzB,EAAKO,CAAO,CAAC,EAAE,CAAC,4DAA4D,EAAE,CAAC,CAACN,EAAOoB,CAAE,EAAE,CAACrB,EAAKO,CAAO,CAAC,EAAE,CAAC,cAAc,EAAE,CAACN,EAAO,CAACH,EAAMc,EAAM,KAAK,EAAE,CAACZ,EAAKO,CAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAACT,EAAMkB,EAAO,MAAM,EAAE,CAACf,EAAOkB,CAAM,EAAE,CAACnB,EAAKO,CAAO,CAAC,EAAE,CAAC,2BAA2B,EAAE,CAACT,EAAM,CAACG,EAAOU,CAAM,EAAE,CAACX,EAAKO,CAAO,CAAC,EAAE,CAAC,uBAAuB,qBAAqB,EAAE,CAACT,EAAM,CAACG,EAAOyB,CAAK,EAAE,CAAC1B,EAAKO,CAAO,CAAC,EAAE,CAAC,0BAA0B,EAAE,CAACT,EAAM,CAACG,EAAO0B,CAAI,EAAE,CAAC3B,EAAKO,CAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAACT,EAAM,CAACG,EAAO2B,EAAM,EAAE,CAAC5B,EAAKO,CAAO,CAAC,EAAE,CAAC,2BAA2B,EAAE,CAACN,EAAOH,EAAM,CAACE,EAAKO,CAAO,CAAC,EAAE,CAAC,0CAA0C,2DAA2D,EAAE,CAAC,CAACN,EAAOrmL,EAAI,EAAE,CAACkmL,EAAMlmL,EAAI,EAAE,CAAComL,EAAKO,CAAO,CAAC,EAAE,CAAC,iDAAiD,EAAE,CAAC,CAACP,EAAKO,CAAO,CAAC,EAAE,CAAC,UAAU,4BAA4B,EAAE,CAACN,EAAOH,EAAM,CAACE,EAAKI,CAAO,CAAC,EAAE,CAAC,wBAAwB,EAAE,CAACN,EAAM,CAACG,EAAO,QAAQ,EAAE,CAACD,EAAKI,CAAO,CAAC,EAAE,CAAC,iCAAiC,EAAE,CAACN,EAAM,CAACG,EAAO0B,CAAI,EAAE,CAAC3B,EAAKI,CAAO,CAAC,EAAE,CAAC,oCAAoC,EAAE,CAACN,EAAM,CAACG,EAAOqB,CAAS,EAAE,CAACtB,EAAKI,CAAO,CAAC,EAAE,CAAC,iCAAiC,EAAE,CAACN,EAAM,CAACG,EAAOwB,CAAO,EAAE,CAACzB,EAAKQ,CAAQ,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAACP,EAAOH,EAAM,CAACE,EAAKQ,CAAQ,CAAC,EAAE,CAAC,sCAAsC,EAAE,CAACV,EAAM,CAACG,EAAOW,CAAK,EAAE,CAACZ,EAAKQ,CAAQ,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAACV,EAAM,CAACG,EAAOkB,CAAM,EAAE,CAACnB,EAAKQ,CAAQ,CAAC,EAAE,CAAC,2BAA2B,EAAE,CAACV,EAAM,CAACG,EAAO4B,EAAK,EAAE,CAAC7B,EAAKQ,CAAQ,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAACV,EAAM,CAACG,EAAOkB,CAAM,EAAE,CAACnB,EAAKQ,CAAQ,CAAC,EAAE,CAAC,gCAAgC,EAAE,CAACP,EAAOH,EAAM,CAACE,EAAKQ,CAAQ,CAAC,EAAE,CAAC,uBAAuB,EAAE,CAACV,EAAM,CAACG,EAAO6B,EAAQ,EAAE,CAAC9B,EAAKQ,CAAQ,CAAC,EAAE,CAAC,sCAAsC,EAAE,CAACP,EAAO,CAACD,EAAKS,CAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,CAACX,EAAM,CAACG,EAAOU,CAAM,EAAE,CAACX,EAAKS,CAAQ,CAAC,EAAE,CAAC,gEAAgE,EAAE,CAACX,EAAM,CAACE,EAAKK,CAAM,CAAC,EAAE,CAAC,6DAA6D,EAAE,CAACP,EAAM,CAACE,EAAKM,CAAM,CAAC,EAAE,CAAC,8CAA8C,EAAE,CAAC,CAACN,EAAKM,CAAM,CAAC,EAAE,CAAC,gEAAgE,EAAE,CAAC,CAACN,EAAKK,CAAM,CAAC,EAAE,CAAC,gCAAgC,EAAE,CAACP,EAAM,CAACG,EAAO,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,4BAA4B,EAAE,CAACC,EAAQ,CAACH,EAAKkB,EAAK,MAAM,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAAClB,EAAKG,CAAO,EAAE,CAAC,2CAA2C,EAAE,CAACA,EAAQ,CAACH,EAAK,OAAO,CAAC,EAAE,CAAC,uBAAuB,4EAA4E,0BAA0B,yCAAyC,8BAA8B,aAAa,EAAE,CAACA,EAAKG,CAAO,EAAE,CAAC,+BAA+B,EAAE,CAACA,EAAQH,CAAI,CAAC,EAAE,GAAG,CAAC,CAAC,iCAAiC,EAAE,CAACA,EAAKG,CAAO,EAAE,CAAC,uDAAuD,EAAE,CAACH,EAAK,CAACG,EAAQ8C,GAAUE,EAAiB,CAAC,EAAE,CAAC,0BAA0B,2CAA2C,sCAAsC,EAAE,CAAC,CAAChD,EAAQ8C,GAAUE,EAAiB,EAAE,CAACnD,EAAK,SAAS,CAAC,EAAE,CAAC,sDAAsD,4CAA4C,sBAAsB,EAAE,CAAC,CAACG,EAAQ,KAAK,GAAG,EAAE,CAACH,EAAK,KAAK,CAAC,EAAE,CAAC,0BAA0B,uCAAuC,EAAE,CAAC,CAACA,EAAKiC,EAAM,EAAE,CAAC9B,EAAQ,KAAK,GAAG,CAAC,EAAE,CAAC,gDAAgD,EAAE,CAACA,EAAQH,CAAI,EAAE,CAAC,2FAA2F,8BAA8B,+BAA+B,gBAAgB,EAAE,CAACA,EAAKG,CAAO,EAAE,CAAC,YAAY,EAAE,CAACA,EAAQ,CAACH,EAAKe,CAAU,CAAC,EAAE,CAAC,2DAA2D,EAAE,CAACZ,EAAQ,CAACH,EAAK,SAAS,CAAC,EAAE,CAAC,iFAAiF,EAAE,CAACG,EAAQ,CAACH,EAAKmB,EAAQ,KAAK,CAAC,EAAE,CAAC,kBAAkB,sCAAsC,EAAE,CAAChB,EAAQ,CAACH,EAAK,OAAO,CAAC,EAAE,CAAC,sCAAsC,EAAE,CAACG,EAAQ,CAACH,EAAK,SAAS,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAACG,EAAQ,CAACH,EAAKiB,EAAO,MAAM,CAAC,EAAE,CAAC,kCAAkC,EAAE,CAAC,CAACjB,EAAKgC,EAAW,EAAE7B,CAAO,EAAE,CAAC,qBAAqB,iBAAiB,2BAA2B,mDAAmD,2BAA2B,wCAAwC,yBAAyB,4BAA4B,8SAA8S,2BAA2B,oBAAoB,6EAA6E,gBAAgB,EAAE,CAACH,EAAKG,CAAO,EAAE,CAAC,uBAAuB,EAAE,CAAC,CAACH,EAAK,SAAS,EAAEG,CAAO,EAAE,CAAC,sCAAsC,kCAAkC,mEAAmE,oBAAoB,EAAE,CAACH,EAAKG,CAAO,CAAC,CAAC,EAAMiD,GAAS,SAASL,EAAGV,GAAW,CAAqD,GAAjD,OAAOU,IAAKnD,IAAUyC,GAAWU,EAAGA,EAAGzD,GAAa,EAAE,gBAAgB8D,IAAW,OAAO,IAAIA,GAASL,EAAGV,EAAU,EAAE,UAAS,EAAG,IAAIgB,GAAW,OAAOhE,IAASM,GAAYN,EAAO,UAAUA,EAAO,UAAUC,EAAcgE,GAAIP,IAAKM,IAAYA,GAAW,UAAUA,GAAW,UAAU7D,GAAW+D,GAAMF,IAAYA,GAAW,cAAcA,GAAW,cAAc/D,EAAckE,GAAQnB,GAAWF,EAAOC,GAAQC,EAAU,EAAED,GAAYqB,GAAWJ,IAAYA,GAAW,WAAWC,GAAI,YAAK,WAAW,UAAU,CAAC,IAAII,GAAS,CAAA,EAAG,OAAAA,GAAS1D,CAAI,EAAEV,EAAUoE,GAASvD,CAAO,EAAEb,EAAUwD,GAAU,KAAKY,GAASJ,GAAIE,GAAQ,OAAO,EAAEE,GAAS5D,CAAK,EAAE+C,GAASa,GAASvD,CAAO,CAAC,EAAKsD,IAAYJ,IAAYA,GAAW,OAAO,OAAOA,GAAW,MAAM,SAAS3D,IAAWgE,GAAS1D,CAAI,EAAE,SAAe0D,EAAQ,EAAE,KAAK,OAAO,UAAU,CAAC,IAAIC,GAAK,CAAA,EAAG,OAAAA,GAAKvD,CAAY,EAAEd,EAAUwD,GAAU,KAAKa,GAAKL,GAAIE,GAAQ,GAAG,EAASG,EAAI,EAAE,KAAK,UAAU,UAAU,CAAC,IAAIC,GAAQ,GAAG,OAAAA,GAAQ1D,CAAM,EAAEZ,EAAUsE,GAAQ7D,CAAK,EAAET,EAAUsE,GAAQ3D,CAAI,EAAEX,EAAUwD,GAAU,KAAKc,GAAQN,GAAIE,GAAQ,MAAM,EAAKC,IAAY,CAACG,GAAQ3D,CAAI,GAAGsD,IAAOA,GAAM,SAAQK,GAAQ3D,CAAI,EAAEK,GAAUmD,IAAYG,GAAQ7D,CAAK,GAAG,aAAasD,IAAY,OAAOA,GAAW,aAAa1D,GAAY0D,GAAW,gBAAgBA,GAAW,eAAe,IAAGO,GAAQ7D,CAAK,EAAE,OAAO6D,GAAQ3D,CAAI,EAAEM,GAAcqD,EAAO,EAAE,KAAK,UAAU,UAAU,CAAC,IAAIC,GAAQ,CAAA,EAAG,OAAAA,GAAQ7D,CAAI,EAAEV,EAAUuE,GAAQ1D,CAAO,EAAEb,EAAUwD,GAAU,KAAKe,GAAQP,GAAIE,GAAQ,MAAM,EAASK,EAAO,EAAE,KAAK,MAAM,UAAU,CAAC,IAAIC,GAAI,GAAG,OAAAA,GAAI9D,CAAI,EAAEV,EAAUwE,GAAI3D,CAAO,EAAEb,EAAUwD,GAAU,KAAKgB,GAAIR,GAAIE,GAAQ,EAAE,EAAKC,IAAY,CAACK,GAAI9D,CAAI,GAAGuD,IAAOA,GAAM,UAAUA,GAAM,UAAU,YAAWO,GAAI9D,CAAI,EAAEuD,GAAM,SAAS,QAAQ,aAAavB,EAAW,EAAE,QAAQ,SAASC,EAAM,GAAS6B,EAAG,EAAE,KAAK,UAAU,UAAU,CAAC,MAAM,CAAC,GAAG,KAAK,MAAK,EAAG,QAAQ,KAAK,WAAU,EAAG,OAAO,KAAK,UAAS,EAAG,GAAG,KAAK,QAAQ,OAAO,KAAK,UAAS,EAAG,IAAI,KAAK,OAAM,CAAE,CAAC,EAAE,KAAK,MAAM,UAAU,CAAC,OAAOR,EAAG,EAAE,KAAK,MAAM,SAASP,GAAG,CAAC,OAAAO,GAAI,OAAOP,KAAKlD,GAAUkD,GAAG,OAAOpC,EAAc9mL,GAAKkpL,GAAGpC,CAAa,EAAEoC,GAAU,IAAI,EAAE,KAAK,MAAMO,EAAG,EAAS,IAAI,EAAEF,GAAS,QAAQ7D,EAAW6D,GAAS,QAAQb,GAAU,CAACvC,EAAKG,EAAQL,CAAK,CAAC,EAAEsD,GAAS,IAAIb,GAAU,CAACnC,CAAY,CAAC,EAAEgD,GAAS,OAAOb,GAAU,CAACxC,EAAMG,EAAOD,EAAKI,EAAQC,EAAOE,EAAQD,EAAOE,EAASC,CAAQ,CAAC,EAAE0C,GAAS,OAAOA,GAAS,GAAGb,GAAU,CAACvC,EAAKG,CAAO,CAAC,EAAiEljN,EAAO,UAAS8mN,EAAQ9mN,EAAA,QAAemmN,IAASW,EAAA,SAAiBX,GAA0J,IAAIY,GAAE,OAAO3E,IAASM,IAAaN,EAAO,QAAQA,EAAO,OAAO,GAAG2E,IAAG,CAACA,GAAE,GAAG,CAAC,IAAIC,GAAO,IAAIb,GAASY,GAAE,GAAGC,GAAO,UAAS,EAAGD,GAAE,GAAG,IAAI,UAAU,CAAC,OAAOC,GAAO,MAAK,CAAE,EAAED,GAAE,GAAG,IAAI,SAASjB,EAAG,CAACkB,GAAO,MAAMlB,CAAE,EAAE,IAAIpmN,GAAOsnN,GAAO,UAAS,EAAG,QAAQ5qN,MAAQsD,GAAQqnN,GAAE,GAAG3qN,EAAI,EAAEsD,GAAOtD,EAAI,CAAE,CAAC,CAAC,GAAG,OAAO,QAAS,SAAS,OAAO6qN,EAAI,qCCDrmuB,OAAO,eAAeC,GAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAE5D,SAASC,GAAiBhjE,EAAI,CAAE,OAAQA,GAAO,OAAOA,GAAO,UAAa,YAAaA,EAAMA,EAAG,QAAaA,CAAG,CAEhH,IAAIhtI,GAAQwL,EACRykM,GAAiBD,GAAgBhwM,EAAK,EAEtCgvM,GAAWvjM,GAEXykM,GAAmB,IAAIlB,GACvBmB,GAAUD,GAAiB,WAAU,EACrCE,GAAMF,GAAiB,OAAM,EAC7BG,GAASH,GAAiB,UAAS,EACnCI,GAASJ,GAAiB,UAAS,EACnCK,GAAKL,GAAiB,MAAK,EAC3BvB,GAAKuB,GAAiB,MAAK,EAC3BM,GAAQ,SAAeC,EAAiB,CAC1C,OAAOP,GAAiB,MAAMO,CAAe,CAC/C,EACIC,GAAiB,SAAwBC,EAAW,CACtD,GAAI,CAACA,EAAW,CACd,QAAQ,MAAM,kCAAkC,EAChD,MACJ,CAEE,IAAIC,EAAoB,IAAI5B,GAAS2B,CAAS,EAC9C,MAAO,CACL,GAAIC,EACJ,QAASA,EAAkB,WAAU,EACrC,IAAKA,EAAkB,OAAM,EAC7B,OAAQA,EAAkB,UAAS,EACnC,OAAQA,EAAkB,UAAS,EACnC,GAAIA,EAAkB,MAAK,EAC3B,GAAIA,EAAkB,MAAK,EAC3B,aAAc,SAAsBH,EAAiB,CACnD,OAAOG,EAAkB,MAAMH,CAAe,CACpD,CACA,CACA,EAEII,GAAwB,OAAO,OAAO,CACxC,iBAAkBX,GAClB,QAASC,GACT,IAAKC,GACL,OAAQC,GACR,OAAQC,GACR,GAAIC,GACJ,GAAI5B,GACJ,MAAO6B,GACP,eAAgBE,EAClB,CAAC,EAED,SAASrpM,GAAQpkB,EAAQ6tN,EAAgB,CACvC,IAAIlnN,EAAO,OAAO,KAAK3G,CAAM,EAE7B,GAAI,OAAO,sBAAuB,CAChC,IAAI8tN,EAAU,OAAO,sBAAsB9tN,CAAM,EAE7C6tN,IACFC,EAAUA,EAAQ,OAAO,SAAUC,EAAK,CACtC,OAAO,OAAO,yBAAyB/tN,EAAQ+tN,CAAG,EAAE,UAC5D,CAAO,GAGHpnN,EAAK,KAAK,MAAMA,EAAMmnN,CAAO,CACjC,CAEE,OAAOnnN,CACT,CAEA,SAAS0d,GAAexiB,EAAQ,CAC9B,QAAS0B,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CACzC,IAAIzB,EAAS,UAAUyB,CAAC,GAAK,KAAO,UAAUA,CAAC,EAAI,CAAA,EAE/CA,EAAI,EACN6gB,GAAQ,OAAOtiB,CAAM,EAAG,EAAI,EAAE,QAAQ,SAAUtB,EAAK,CACnD2jB,GAAgBtiB,EAAQrB,EAAKsB,EAAOtB,CAAG,CAAC,CAChD,CAAO,EACQ,OAAO,0BAChB,OAAO,iBAAiBqB,EAAQ,OAAO,0BAA0BC,CAAM,CAAC,EAExEsiB,GAAQ,OAAOtiB,CAAM,CAAC,EAAE,QAAQ,SAAUtB,EAAK,CAC7C,OAAO,eAAeqB,EAAQrB,EAAK,OAAO,yBAAyBsB,EAAQtB,CAAG,CAAC,CACvF,CAAO,CAEP,CAEE,OAAOqB,CACT,CAEA,SAASghB,GAAQrjB,EAAK,CACpB,0BAEA,OAAI,OAAO,QAAW,YAAc,OAAO,OAAO,UAAa,SAC7DqjB,GAAU,SAAUrjB,EAAK,CACvB,OAAO,OAAOA,CACpB,EAEIqjB,GAAU,SAAUrjB,EAAK,CACvB,OAAOA,GAAO,OAAO,QAAW,YAAcA,EAAI,cAAgB,QAAUA,IAAQ,OAAO,UAAY,SAAW,OAAOA,CAC/H,EAGSqjB,GAAQrjB,CAAG,CACpB,CAEA,SAASiwB,GAAgBzb,EAAUg6M,EAAa,CAC9C,GAAI,EAAEh6M,aAAoBg6M,GACxB,MAAM,IAAI,UAAU,mCAAmC,CAE3D,CAEA,SAASt+L,GAAkB7tB,EAAQuU,EAAO,CACxC,QAAS7S,EAAI,EAAGA,EAAI6S,EAAM,OAAQ7S,IAAK,CACrC,IAAI2sF,EAAa95E,EAAM7S,CAAC,EACxB2sF,EAAW,WAAaA,EAAW,YAAc,GACjDA,EAAW,aAAe,GACtB,UAAWA,IAAYA,EAAW,SAAW,IACjD,OAAO,eAAeruF,EAAQquF,EAAW,IAAKA,CAAU,CAC5D,CACA,CAEA,SAASvgE,GAAaq+L,EAAaC,EAAYC,EAAa,CAC1D,OAAID,GAAYv+L,GAAkBs+L,EAAY,UAAWC,CAAU,EAE5DD,CACT,CAEA,SAAS7pM,GAAgB3kB,EAAKgB,EAAKmB,EAAO,CACxC,OAAInB,KAAOhB,EACT,OAAO,eAAeA,EAAKgB,EAAK,CAC9B,MAAOmB,EACP,WAAY,GACZ,aAAc,GACd,SAAU,EAChB,CAAK,EAEDnC,EAAIgB,CAAG,EAAImB,EAGNnC,CACT,CAEA,SAASojB,IAAW,CAClB,OAAAA,GAAW,OAAO,QAAU,SAAU/gB,EAAQ,CAC5C,QAAS0B,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CACzC,IAAIzB,EAAS,UAAUyB,CAAC,EAExB,QAAS/C,KAAOsB,EACV,OAAO,UAAU,eAAe,KAAKA,EAAQtB,CAAG,IAClDqB,EAAOrB,CAAG,EAAIsB,EAAOtB,CAAG,EAGlC,CAEI,OAAOqB,CACX,EAES+gB,GAAS,MAAM,KAAM,SAAS,CACvC,CAEA,SAASiN,GAAUs+L,EAAUC,EAAY,CACvC,GAAI,OAAOA,GAAe,YAAcA,IAAe,KACrD,MAAM,IAAI,UAAU,oDAAoD,EAG1ED,EAAS,UAAY,OAAO,OAAOC,GAAcA,EAAW,UAAW,CACrE,YAAa,CACX,MAAOD,EACP,SAAU,GACV,aAAc,EACpB,CACA,CAAG,EACGC,GAAYx+L,GAAgBu+L,EAAUC,CAAU,CACtD,CAEA,SAASr+L,GAAgB3pB,EAAG,CAC1B,OAAA2pB,GAAkB,OAAO,eAAiB,OAAO,eAAiB,SAAyB3pB,EAAG,CAC5F,OAAOA,EAAE,WAAa,OAAO,eAAeA,CAAC,CACjD,EACS2pB,GAAgB3pB,CAAC,CAC1B,CAEA,SAASwpB,GAAgBxpB,EAAGjF,EAAG,CAC7B,OAAAyuB,GAAkB,OAAO,gBAAkB,SAAyBxpB,EAAGjF,EAAG,CACxE,OAAAiF,EAAE,UAAYjF,EACPiF,CACX,EAESwpB,GAAgBxpB,EAAGjF,CAAC,CAC7B,CAEA,SAAS41B,GAA8Bj1B,EAAQusN,EAAU,CACvD,GAAIvsN,GAAU,KAAM,MAAO,CAAA,EAC3B,IAAID,EAAS,CAAA,EACTwzF,EAAa,OAAO,KAAKvzF,CAAM,EAC/BtB,EAAK+C,EAET,IAAKA,EAAI,EAAGA,EAAI8xF,EAAW,OAAQ9xF,IACjC/C,EAAM60F,EAAW9xF,CAAC,EACd,EAAA8qN,EAAS,QAAQ7tN,CAAG,GAAK,KAC7BqB,EAAOrB,CAAG,EAAIsB,EAAOtB,CAAG,GAG1B,OAAOqB,CACT,CAEA,SAASm1B,GAAyBl1B,EAAQusN,EAAU,CAClD,GAAIvsN,GAAU,KAAM,MAAO,CAAA,EAE3B,IAAID,EAASk1B,GAA8Bj1B,EAAQusN,CAAQ,EAEvD7tN,EAAK,EAET,GAAI,OAAO,sBAAuB,CAChC,IAAI8tN,EAAmB,OAAO,sBAAsBxsN,CAAM,EAE1D,IAAK,EAAI,EAAG,EAAIwsN,EAAiB,OAAQ,IACvC9tN,EAAM8tN,EAAiB,CAAC,EACpB,EAAAD,EAAS,QAAQ7tN,CAAG,GAAK,IACxB,OAAO,UAAU,qBAAqB,KAAKsB,EAAQtB,CAAG,IAC3DqB,EAAOrB,CAAG,EAAIsB,EAAOtB,CAAG,EAE9B,CAEE,OAAOqB,CACT,CAEA,SAASouB,GAAuBorJ,EAAM,CACpC,GAAIA,IAAS,OACX,MAAM,IAAI,eAAe,2DAA2D,EAGtF,OAAOA,CACT,CAEA,SAASnrJ,GAA2BmrJ,EAAMv3J,EAAM,CAC9C,GAAIA,IAAS,OAAOA,GAAS,UAAY,OAAOA,GAAS,YACvD,OAAOA,EACF,GAAIA,IAAS,OAClB,MAAM,IAAI,UAAU,0DAA0D,EAGhF,OAAOmM,GAAuBorJ,CAAI,CACpC,CAEA,SAASnnJ,GAAerJ,EAAKtnB,EAAG,CAC9B,OAAOwwB,GAAgBlJ,CAAG,GAAKmJ,GAAsBnJ,EAAKtnB,CAAC,GAAKqvB,GAA4B/H,EAAKtnB,CAAC,GAAK0wB,GAAgB,CACzH,CAEA,SAASF,GAAgBlJ,EAAK,CAC5B,GAAI,MAAM,QAAQA,CAAG,EAAG,OAAOA,CACjC,CAEA,SAASmJ,GAAsBnJ,EAAKtnB,EAAG,CACrC,IAAI2nB,EAAKL,GAAO,KAAO,KAAO,OAAO,OAAW,KAAeA,EAAI,OAAO,QAAQ,GAAKA,EAAI,YAAY,EAEvG,GAAIK,GAAM,KACV,KAAIqjM,EAAO,CAAA,EACPC,EAAK,GACLp9M,EAAK,GAELq9M,EAAIn9M,EAER,GAAI,CACF,IAAK4Z,EAAKA,EAAG,KAAKL,CAAG,EAAG,EAAE2jM,GAAMC,EAAKvjM,EAAG,KAAI,GAAI,QAC9CqjM,EAAK,KAAKE,EAAG,KAAK,EAEd,EAAAlrN,GAAKgrN,EAAK,SAAWhrN,IAH4BirN,EAAK,GAG1D,CAEN,OAAW/9M,EAAK,CACZW,EAAK,GACLE,EAAKb,CACT,QAAG,CACC,GAAI,CACE,CAAC+9M,GAAMtjM,EAAG,QAAa,MAAMA,EAAG,OAAS,CACnD,QAAK,CACC,GAAI9Z,EAAI,MAAME,CACpB,CACA,CAEE,OAAOi9M,EACT,CAEA,SAAS37L,GAA4BxsB,EAAGsoN,EAAQ,CAC9C,GAAKtoN,EACL,IAAI,OAAOA,GAAM,SAAU,OAAOosB,GAAkBpsB,EAAGsoN,CAAM,EAC7D,IAAI,EAAI,OAAO,UAAU,SAAS,KAAKtoN,CAAC,EAAE,MAAM,EAAG,EAAE,EAErD,GADI,IAAM,UAAYA,EAAE,cAAa,EAAIA,EAAE,YAAY,MACnD,IAAM,OAAS,IAAM,MAAO,OAAO,MAAM,KAAKA,CAAC,EACnD,GAAI,IAAM,aAAe,2CAA2C,KAAK,CAAC,EAAG,OAAOosB,GAAkBpsB,EAAGsoN,CAAM,EACjH,CAEA,SAASl8L,GAAkB3H,EAAK0J,EAAK,EAC/BA,GAAO,MAAQA,EAAM1J,EAAI,UAAQ0J,EAAM1J,EAAI,QAE/C,QAAStnB,EAAI,EAAGorN,EAAO,IAAI,MAAMp6L,CAAG,EAAGhxB,EAAIgxB,EAAKhxB,IAAKorN,EAAKprN,CAAC,EAAIsnB,EAAItnB,CAAC,EAEpE,OAAOorN,CACT,CAEA,SAAS16L,IAAmB,CAC1B,MAAM,IAAI,UAAU;AAAA,mFAA2I,CACjK,CAEA,IAAI26L,GAAc,CAChB,OAAQ,SACR,OAAQ,SACR,QAAS,UACT,QAAS,UACT,SAAU,WACV,SAAU,WACV,QAAS,MACX,EACIC,GAAe,CACjB,OAAQ,SACR,QAAS,UACT,MAAO,QACP,OAAQ,SACR,OAAQ,SACR,iBAAkB,oBAClB,KAAM,OACN,SAAU,WACV,GAAI,KACJ,aAAc,gBACd,aAAc,gBACd,KAAM,eACN,eAAgB,iBAClB,EACIC,GAAU,CACZ,IAAK,MACL,QAAS,UACT,aAAc,gBACd,QAAS,UACT,OAAQ,QACV,EACIC,GAAqB,CACvB,SAAU,GACV,SAAU,GACV,UAAW,GACX,UAAW,GACX,UAAW,GACX,WAAY,EACd,EAEIC,GAAkB,SAAyBjrN,EAAM,CACnD,OAAQA,EAAI,CACV,KAAK6qN,GAAY,OACf,MAAO,CACL,SAAU,EAClB,EAEI,KAAKA,GAAY,OACf,MAAO,CACL,SAAU,EAClB,EAEI,KAAKA,GAAY,QACf,MAAO,CACL,UAAW,EACnB,EAEI,KAAKA,GAAY,QACf,MAAO,CACL,UAAW,EACnB,EAEI,KAAKA,GAAY,SACf,MAAO,CACL,WAAY,EACpB,EAEI,KAAKA,GAAY,QACf,MAAO,CACL,UAAW,EACnB,EAEI,KAAKA,GAAY,SACf,MAAO,CACL,WAAY,EACpB,EAEI,QACE,OAAOG,EACb,CACA,EACIE,GAAe,SAAsBvB,EAAW,CAClD,OAAOH,GAAMG,CAAS,CACxB,EACIv4M,GAAc,SAAqBhU,EAAG,CACxC,IAAI6Z,EAAI,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,OAC5E,OAAO7Z,GAAQ6Z,CACjB,EACIk0M,GAAuB,UAAgC,CACzD,OAAI,OAAO,OAAW,MAChB,OAAO,WAAa,WACf,OAAO,WAAa,UAIxB,EACT,EACIC,GAAe,SAAsBprN,EAAM,CAC7C,IAAIqrN,EAAMF,GAAoB,EAC9B,OAAOE,GAAOA,EAAI,WAAaA,EAAI,SAAS,QAAQrrN,CAAI,IAAM,IAAMqrN,EAAI,WAAa,YAAcA,EAAI,eAAiB,GAAK,CAAC,OAAO,SACvI,EAEIC,GAAiB,SAAwBlkM,EAAW+hM,EAASG,EAAQC,EAAI5B,EAAI,CAC/E,MAAO,CACL,UAAWvgM,EACX,oBAAqBhW,GAAY+3M,EAAQ,KAAK,EAC9C,mBAAoB/3M,GAAY+3M,EAAQ,OAAO,EAC/C,YAAa/3M,GAAY+3M,EAAQ,IAAI,EACrC,WAAY/3M,GAAYk4M,EAAO,IAAI,EACnC,cAAel4M,GAAYk4M,EAAO,OAAO,EACzC,OAAQl4M,GAAYm4M,EAAG,IAAI,EAC3B,UAAWn4M,GAAYm4M,EAAG,OAAO,EACjC,UAAWn4M,GAAYu2M,CAAE,CAC7B,CACA,EACI4D,GAAgB,SAAuBvrN,EAAMqpN,EAAQE,EAAI5B,EAAI,CAC/D,OAAOrnM,GAAe,CAAA,EAAItgB,EAAM,CAC9B,OAAQoR,GAAYi4M,EAAO,MAAM,EACjC,MAAOj4M,GAAYi4M,EAAO,KAAK,EAC/B,GAAIj4M,GAAYm4M,EAAG,IAAI,EACvB,UAAWn4M,GAAYm4M,EAAG,OAAO,EACjC,GAAIn4M,GAAYu2M,CAAE,CACtB,CAAG,CACH,EACI6D,GAAiB,SAAwBC,EAAWnC,EAAQC,EAAI5B,EAAI,CACtE,MAAO,CACL,UAAW8D,EACX,WAAYr6M,GAAYk4M,EAAO,IAAI,EACnC,cAAel4M,GAAYk4M,EAAO,OAAO,EACzC,OAAQl4M,GAAYm4M,EAAG,IAAI,EAC3B,UAAWn4M,GAAYm4M,EAAG,OAAO,EACjC,UAAWn4M,GAAYu2M,CAAE,CAC7B,CACA,EACI+D,GAAiB,SAAwBC,EAAWrC,EAAQC,EAAI5B,EAAI,CACtE,MAAO,CACL,UAAWgE,EACX,WAAYv6M,GAAYk4M,EAAO,IAAI,EACnC,cAAel4M,GAAYk4M,EAAO,OAAO,EACzC,OAAQl4M,GAAYm4M,EAAG,IAAI,EAC3B,UAAWn4M,GAAYm4M,EAAG,OAAO,EACjC,UAAWn4M,GAAYu2M,CAAE,CAC7B,CACA,EACIiE,GAAkB,SAAyBC,EAAYvC,EAAQC,EAAI5B,EAAI,CACzE,MAAO,CACL,WAAYkE,EACZ,WAAYz6M,GAAYk4M,EAAO,IAAI,EACnC,cAAel4M,GAAYk4M,EAAO,OAAO,EACzC,OAAQl4M,GAAYm4M,EAAG,IAAI,EAC3B,UAAWn4M,GAAYm4M,EAAG,OAAO,EACjC,UAAWn4M,GAAYu2M,CAAE,CAC7B,CACA,EACImE,GAAkB,SAAyBC,EAAY1C,EAAQC,EAAQC,EAAI5B,EAAI,CACjF,MAAO,CACL,WAAYoE,EACZ,OAAQ36M,GAAYi4M,EAAO,MAAM,EACjC,MAAOj4M,GAAYi4M,EAAO,KAAK,EAC/B,WAAYj4M,GAAYk4M,EAAO,IAAI,EACnC,cAAel4M,GAAYk4M,EAAO,OAAO,EACzC,OAAQl4M,GAAYm4M,EAAG,IAAI,EAC3B,UAAWn4M,GAAYm4M,EAAG,OAAO,EACjC,UAAWn4M,GAAYu2M,CAAE,CAC7B,CACA,EAEA,SAASqE,GAAarC,EAAW,CAC/B,IAAIj1M,EAAOi1M,EAAYD,GAAeC,CAAS,EAAIE,GAC/CR,EAAS30M,EAAK,OACdy0M,EAAUz0M,EAAK,QACf40M,EAAS50M,EAAK,OACd60M,EAAK70M,EAAK,GACVizM,EAAKjzM,EAAK,GAEV1U,EAAOirN,GAAgB5B,EAAO,IAAI,EAClCjiM,EAAYpnB,EAAK,UACjB+uH,EAAW/uH,EAAK,SAChBisN,EAAWjsN,EAAK,SAChByrN,EAAYzrN,EAAK,UACjB2rN,EAAY3rN,EAAK,UACjB6rN,EAAa7rN,EAAK,WAClB+rN,EAAa/rN,EAAK,WAEtB,GAAIonB,EACF,OAAOkkM,GAAelkM,EAAW+hM,EAASG,EAAQC,EAAI5B,CAAE,EAG1D,GAAI8D,EACF,OAAOD,GAAeC,EAAWnC,EAAQC,EAAI5B,CAAE,EAGjD,GAAIgE,EACF,OAAOD,GAAeC,EAAWrC,EAAQC,EAAI5B,CAAE,EAOjD,GAJI54F,GAIAk9F,EACF,OAAOV,GAAcvrN,EAAMqpN,EAAQE,EAAI5B,CAAE,EAG3C,GAAIkE,EACF,OAAOD,GAAgBC,EAAYvC,EAAQC,EAAI5B,CAAE,EAGnD,GAAIoE,EACF,OAAOD,GAAgBC,EAAY1C,EAAQC,EAAQC,EAAI5B,CAAE,CAE7D,CAEA,IAAIuE,GAAe,SAAsBx3M,EAAM,CAC7C,IAAI1U,EAAO0U,EAAK,KAChB,OAAO1U,IAAS6qN,GAAY,MAC9B,EACIsB,GAAe,SAAsBv3M,EAAO,CAC9C,IAAI5U,EAAO4U,EAAM,KACjB,OAAO5U,IAAS6qN,GAAY,MAC9B,EACIuB,GAAwB,SAA+Bj0L,EAAO,CAChE,IAAIn4B,EAAOm4B,EAAM,KACjB,OAAOn4B,IAAS6qN,GAAY,QAAU7qN,IAAS6qN,GAAY,MAC7D,EACIwB,GAAgB,SAAuB/zL,EAAO,CAChD,IAAIt4B,EAAOs4B,EAAM,KACjB,OAAOt4B,IAAS6qN,GAAY,OAC9B,EACIyB,GAAgB,SAAuBnxL,EAAO,CAChD,IAAIn7B,EAAOm7B,EAAM,KACjB,OAAOn7B,IAAS6qN,GAAY,OAC9B,EACI0B,GAAiB,SAAwBnxL,EAAO,CAClD,IAAIp7B,EAAOo7B,EAAM,KACjB,OAAOp7B,IAAS6qN,GAAY,QAC9B,EACI2B,GAAgB,SAAuBnkL,EAAO,CAChD,IAAIroC,EAAOqoC,EAAM,KACjB,OAAOroC,IAAS6qN,GAAY,OAC9B,EACI4B,GAAiB,SAAwBvwH,EAAO,CAClD,IAAIl8F,EAAOk8F,EAAM,KACjB,OAAOl8F,IAAS6qN,GAAY,QAC9B,EACI6B,GAAkB,SAAyBnwH,EAAO,CACpD,IAAIowH,EAASpwH,EAAM,OACnB,OAAOnrF,GAAYu7M,CAAM,CAC3B,EACIC,GAAiB,SAAwBnwH,EAAQ,CACnD,IAAIowH,EAAQpwH,EAAO,MACnB,OAAOrrF,GAAYy7M,CAAK,CAC1B,EACIC,GAAgB,SAAuBC,EAAQ,CACjD,IAAI/sN,EAAO+sN,EAAO,KAClB,OAAO37M,GAAYpR,EAAM,SAAS,CACpC,EAEIgtN,GAAgB,SAAuBC,EAAQ,CACjD,IAAI3hN,EAAO2hN,EAAO,KAClB,OAAO3hN,IAASy/M,GAAQ,OAC1B,EACImC,GAAgB,SAAuBC,EAAQ,CACjD,IAAI7hN,EAAO6hN,EAAO,KAClB,OAAO7hN,IAASy/M,GAAQ,OAC1B,EACIqC,GAAc,SAAqBC,EAAQ,CAC7C,IAAI/hN,EAAO+hN,EAAO,KAClB,OAAO/hN,IAASy/M,GAAQ,MAC1B,EACIuC,GAAiB,SAAwBC,EAAQ,CACnD,IAAIjiN,EAAOiiN,EAAO,KAClB,OAAOjiN,IAASy/M,GAAQ,YAC1B,EACIyC,GAAY,SAAmBC,EAAQ,CACzC,IAAIniN,EAAOmiN,EAAO,KAClB,OAAOniN,IAASy/M,GAAQ,GAC1B,EACI2C,GAAe,SAAsBC,EAAQ,CAC/C,IAAI3oM,EAAU2oM,EAAO,QACrB,OAAOv8M,GAAY4T,CAAO,CAC5B,EACI4oM,GAAY,SAAmBC,EAAQ,CACzC,IAAIviN,EAAOuiN,EAAO,KAClB,OAAOz8M,GAAY9F,CAAI,CACzB,EAEIwiN,GAAe,SAAsBC,EAAQ,CAC/C,IAAIziN,EAAOyiN,EAAO,KAClB,OAAOziN,IAASw/M,GAAa,MAC/B,EACIkD,GAAgB,SAAuBC,EAAQ,CACjD,IAAI3iN,EAAO2iN,EAAO,KAClB,OAAO3iN,IAASw/M,GAAa,OAC/B,EACIoD,GAAiB,SAAwBC,EAAQ,CACnD,IAAI7iN,EAAO6iN,EAAO,KAClB,OAAO7iN,IAASw/M,GAAa,QAC/B,EACIsD,GAAa,SAAoBC,EAAQ,CAC3C,IAAI/iN,EAAO+iN,EAAO,KAClB,OAAO/iN,IAASw/M,GAAa,IAC/B,EACIwD,GAAe,SAAsBC,EAAQ,CAC/C,IAAIjjN,EAAOijN,EAAO,KAClB,OAAOjjN,IAASw/M,GAAa,MAC/B,EACI0D,GAAe,SAAsBC,EAAQ,CAC/C,IAAInjN,EAAOmjN,EAAO,KAClB,OAAOnjN,IAASw/M,GAAa,QAAUx/M,IAASw/M,GAAa,YAC/D,EACI4D,GAAqB,SAA4BC,EAAQ,CAC3D,IAAIrjN,EAAOqjN,EAAO,KAClB,OAAOrjN,IAASw/M,GAAa,YAC/B,EACI8D,GAAc,SAAqBC,EAAQ,CAC7C,IAAIvjN,EAAOujN,EAAO,KAClB,OAAOvjN,IAASw/M,GAAa,KAC/B,EACIgE,GAAW,SAAkBC,EAAQ,CACvC,IAAIzjN,EAAOyjN,EAAO,KAClB,OAAOzjN,IAASw/M,GAAa,kBAAoBx/M,IAASw/M,GAAa,EACzE,EACIkE,GAAa,SAAoBC,EAAQ,CAC3C,IAAI3jN,EAAO2jN,EAAO,KAClB,OAAO3jN,IAASw/M,GAAa,IAC/B,EACIoE,GAAuB,SAA8BC,EAAQ,CAC/D,IAAI7jN,EAAO6jN,EAAO,KAClB,OAAO7jN,IAASw/M,GAAa,cAC/B,EACIsE,GAAwB,SAA+BC,EAAQ,CACjE,IAAIrqM,EAAUqqM,EAAO,QACrB,OAAOj+M,GAAY4T,CAAO,CAC5B,EACIsqM,GAAoB,SAA2BC,EAAQ,CACzD,IAAIC,EAAQD,EAAO,MACnB,OAAOn+M,GAAYo+M,CAAK,CAC1B,EACIC,GAAiB,SAAwBC,EAAQ,CACnD,IAAIpkN,EAAOokN,EAAO,KAClB,OAAOt+M,GAAY9F,CAAI,CACzB,EAEIqkN,GAAgB,SAAuBC,EAAQ,CACjD,IAAItkN,EAAOskN,EAAO,KAClB,OAAOx+M,GAAY9F,CAAI,CACzB,EACIukN,GAAmB,SAA0BC,EAAQ,CACvD,IAAI9qM,EAAU8qM,EAAO,QACrB,OAAO1+M,GAAY4T,CAAO,CAC5B,EACI+qM,GAAiB,UAA0B,CAC7C,IAAI1E,EAAMF,GAAoB,EAC1BxD,EAAK0D,GAAOA,EAAI,WAAaA,EAAI,UAAU,YAAW,EAC1D,OAAO,OAAO1D,GAAO,SAAW,WAAW,KAAKA,CAAE,EAAI,EACxD,EACIqI,GAAqB,SAA4BrI,EAAI,CACvD,OAAO,OAAOA,GAAO,UAAYA,EAAG,QAAQ,MAAM,IAAM,EAC1D,EACIsI,GAAW,UAAoB,CACjC,IAAI5E,EAAMF,GAAoB,EAC9B,OAAOE,IAAQ,mBAAmB,KAAKA,EAAI,QAAQ,GAAKA,EAAI,WAAa,YAAcA,EAAI,eAAiB,IAAM,CAAC,OAAO,QAC5H,EACI6E,GAAY,UAAqB,CACnC,OAAO9E,GAAa,MAAM,CAC5B,EACI+E,GAAc,UAAuB,CACvC,OAAO/E,GAAa,QAAQ,CAC9B,EACIgF,GAAY,UAAqB,CACnC,OAAOhF,GAAa,MAAM,CAC5B,EACIiF,GAAe,SAAsBC,EAAQ,CAC/C,OAAOl/M,GAAYk/M,CAAM,CAC3B,EAEA,SAASC,GAAqBlwN,EAAS,CACrC,IAAIqU,EAAOrU,GAAoBwpN,GAC3BR,EAAS30M,EAAK,OACdy0M,EAAUz0M,EAAK,QACf60M,EAAK70M,EAAK,GACV40M,EAAS50M,EAAK,OACdizM,EAAKjzM,EAAK,GAEd,MAAO,CACL,UAAW23M,GAAchD,CAAM,EAC/B,UAAWmD,GAAcnD,CAAM,EAC/B,WAAYkD,GAAelD,CAAM,EACjC,WAAYoD,GAAepD,CAAM,EACjC,eAAgBqF,GAAmBvF,CAAO,GAAK+G,GAAS,EACxD,WAAYhC,GAAe/E,CAAO,EAClC,SAAUiD,GAAsB/C,CAAM,GAAK6G,GAAS,EACpD,aAAchE,GAAa7C,CAAM,EACjC,SAAU8C,GAAa9C,CAAM,GAAK6G,GAAS,EAC3C,UAAW5D,GAAcjD,CAAM,EAC/B,UAAWiD,GAAcjD,CAAM,EAC/B,UAAW2D,GAAczD,CAAE,EAC3B,WAAY+D,GAAe/D,CAAE,EAC7B,MAAOiE,GAAUjE,CAAE,GAAK2G,GAAS,EACjC,SAAUpC,GAAa3E,CAAO,EAC9B,UAAW6E,GAAc7E,CAAO,EAChC,SAAUqF,GAAarF,CAAO,EAC9B,QAASyF,GAAYzF,CAAO,EAC5B,KAAM2F,GAAS3F,CAAO,EACtB,UAAWuE,GAAanE,CAAE,EAC1B,OAAQqE,GAAUrE,CAAE,EACpB,mBAAoB6F,GAAsBjG,CAAO,EACjD,eAAgBmG,GAAkBnG,CAAO,EACzC,YAAasG,GAAetG,CAAO,EACnC,aAAcuD,GAAgBrD,CAAM,EACpC,YAAauD,GAAevD,CAAM,EAClC,WAAYsG,GAAcrG,CAAM,EAChC,cAAeuG,GAAiBvG,CAAM,EACtC,MAAO+G,GAAa1I,CAAE,EACtB,OAAQyG,GAAWjF,CAAO,GAAK6G,GAAmBrI,CAAE,EACpD,SAAU2G,GAAanF,CAAO,EAC9B,WAAY2D,GAAczD,CAAM,EAChC,QAAS4G,GAAQ,EACjB,SAAUC,GAAS,EACnB,WAAYC,GAAW,EACvB,SAAUC,GAAS,EACnB,WAAYL,GAAc,EAC1B,eAAgBC,GAAmBrI,CAAE,EACrC,aAAcyG,GAAWjF,CAAO,GAAK,CAAC6G,GAAmBrI,CAAE,EAC3D,UAAWuF,GAAc3D,CAAE,EAC3B,QAAS6D,GAAY7D,CAAE,EACvB,OAAQyF,GAAW7F,CAAO,EAC1B,iBAAkB+F,GAAqB/F,CAAO,CAClD,CACA,CAEA,IAAIsC,GAAYY,GAAchD,EAAM,EAChCsC,GAAYa,GAAcnD,EAAM,EAChCwC,GAAaU,GAAelD,EAAM,EAClC0C,GAAaU,GAAepD,EAAM,EAClCmH,GAAiB9B,GAAmBvF,EAAO,GAAK+G,GAAS,EACzDO,GAAavC,GAAe/E,EAAO,EACnCp6F,GAAWq9F,GAAsB/C,EAAM,GAAK6G,GAAS,EACrDQ,GAAexE,GAAa7C,EAAM,EAClC4C,GAAWE,GAAa9C,EAAM,GAAK6G,GAAS,EAC5C9oM,GAAYklM,GAAcjD,EAAM,EAChCsH,GAAYrE,GAAcjD,EAAM,EAChCuH,GAAY5D,GAAczD,EAAE,EAC5BsH,GAAavD,GAAe/D,EAAE,EAC9BuH,GAAQtD,GAAUjE,EAAE,GAAK2G,GAAS,EAClCa,GAAWjD,GAAa3E,EAAO,EAC/B6H,GAAYhD,GAAc7E,EAAO,EACjC8H,GAAWzC,GAAarF,EAAO,EAC/B+H,GAAUtC,GAAYzF,EAAO,EAC7BnsG,GAAO8xG,GAAS3F,EAAO,EACvBgI,GAAYzD,GAAanE,EAAE,EAC3B6H,GAASxD,GAAUrE,EAAE,EACrB8H,GAAqBjC,GAAsBjG,EAAO,EAClDmI,GAAiBhC,GAAkBnG,EAAO,EAC1CoI,GAAc9B,GAAetG,EAAO,EACpCqI,GAAe9E,GAAgBrD,EAAM,EACrCoI,GAAc7E,GAAevD,EAAM,EACnCqI,GAAa/B,GAAcrG,EAAM,EACjCqI,GAAgB9B,GAAiBvG,EAAM,EACvCsI,GAAQvB,GAAa1I,EAAE,EACvBkK,GAASzD,GAAWjF,EAAO,GAAK6G,GAAmBrI,EAAE,EACrDmK,GAAWxD,GAAanF,EAAO,EAC/B4I,GAAajF,GAAczD,EAAM,EACjC2I,GAAU/B,GAAQ,EAClBgC,GAAW/B,GAAS,EACpBgC,GAAa/B,GAAW,EACxBgC,GAAW/B,GAAS,EACpBgC,GAAarC,GAAc,EAC3BsC,GAAiBrC,GAAmBrI,EAAE,EACtC2K,GAAelE,GAAWjF,EAAO,GAAK,CAAC6G,GAAmBrI,EAAE,EAC5D4K,GAAYrF,GAAc3D,EAAE,EAC5BiJ,GAAUpF,GAAY7D,EAAE,EACxBkJ,GAASzD,GAAW7F,EAAO,EAC3BuJ,GAAmBxD,GAAqB/F,EAAO,EAC/CwJ,GAA0B,SAAiChJ,EAAW,CACxE,GAAI,CAACA,GAAa,OAAOA,GAAc,SAAU,CAC/C,QAAQ,MAAM,yCAAyC,EACvD,MACJ,CAEE,IAAIiJ,EAAwBlJ,GAAeC,CAAS,EAChDN,EAASuJ,EAAsB,OAC/BzJ,EAAUyJ,EAAsB,QAChCrJ,EAAKqJ,EAAsB,GAC3BtJ,EAASsJ,EAAsB,OAC/BjL,EAAKiL,EAAsB,GAE/B,OAAOrC,GAAqB,CAC1B,OAAQlH,EACR,QAASF,EACT,GAAII,EACJ,OAAQD,EACR,GAAI3B,CACR,CAAG,CACH,EAEIkL,GAAc,SAAqBn+M,EAAM,CAC3C,IAAIo+M,EAAqBp+M,EAAK,mBAC1B0K,EAAW1K,EAAK,SAChBrC,EAAQ4gB,GAAyBve,EAAM,CAAC,qBAAsB,UAAU,CAAC,EAE7E,OAAOk8M,GAAYkC,EAAqB7J,GAAe,cAAcjwM,GAAM,SAAU,KAAMoG,CAAQ,EAAI6pM,GAAe,cAAc,MAAO52M,EAAO+M,CAAQ,EAAI,IAChK,EACI2zM,GAAc,SAAqBn+M,EAAO,CAC5C,IAAIk+M,EAAqBl+M,EAAM,mBAC3BwK,EAAWxK,EAAM,SACjBvC,EAAQ4gB,GAAyBre,EAAO,CAAC,qBAAsB,UAAU,CAAC,EAE9E,OAAOwS,GAAY0rM,EAAqB7J,GAAe,cAAcjwM,GAAM,SAAU,KAAMoG,CAAQ,EAAI6pM,GAAe,cAAc,MAAO52M,EAAO+M,CAAQ,EAAI,IAChK,EACI4zM,GAAS,SAAgB76L,EAAO,CAClC,IAAI26L,EAAqB36L,EAAM,mBAC3B/Y,EAAW+Y,EAAM,SACjB9lB,EAAQ4gB,GAAyBkF,EAAO,CAAC,qBAAsB,UAAU,CAAC,EAE9E,OAAO6kF,GAAO81G,EAAqB7J,GAAe,cAAcjwM,GAAM,SAAU,KAAMoG,CAAQ,EAAI6pM,GAAe,cAAc,MAAO52M,EAAO+M,CAAQ,EAAI,IAC3J,EACI6zM,GAAU,SAAiB36L,EAAO,CACpC,IAAIw6L,EAAqBx6L,EAAM,mBAC3BlZ,EAAWkZ,EAAM,SACjBjmB,EAAQ4gB,GAAyBqF,EAAO,CAAC,qBAAsB,UAAU,CAAC,EAE9E,OAAOw4L,GAAQgC,EAAqB7J,GAAe,cAAcjwM,GAAM,SAAU,KAAMoG,CAAQ,EAAI6pM,GAAe,cAAc,MAAO52M,EAAO+M,CAAQ,EAAI,IAC5J,EACI8zM,GAAa,SAAoB/3L,EAAO,CAC1C,IAAI23L,EAAqB33L,EAAM,mBAC3B/b,EAAW+b,EAAM,SACjB9oB,EAAQ4gB,GAAyBkI,EAAO,CAAC,qBAAsB,UAAU,CAAC,EAE9E,OAAO4zF,GAAW+jG,EAAqB7J,GAAe,cAAcjwM,GAAM,SAAU,KAAMoG,CAAQ,EAAI6pM,GAAe,cAAc,MAAO52M,EAAO+M,CAAQ,EAAI,IAC/J,EACI+zM,GAAa,SAAoB/3L,EAAO,CAC1C,IAAI03L,EAAqB13L,EAAM,mBAC3Bhc,EAAWgc,EAAM,SACjB/oB,EAAQ4gB,GAAyBmI,EAAO,CAAC,qBAAsB,UAAU,CAAC,EAE9E,OAAO6wL,GAAW6G,EAAqB7J,GAAe,cAAcjwM,GAAM,SAAU,KAAMoG,CAAQ,EAAI6pM,GAAe,cAAc,MAAO52M,EAAO+M,CAAQ,EAAI,IAC/J,EACIg0M,GAAe,SAAsB/qL,EAAO,CAC9C,IAAIyqL,EAAqBzqL,EAAM,mBAC3BjpB,EAAWipB,EAAM,SACjBh2B,EAAQ4gB,GAAyBoV,EAAO,CAAC,qBAAsB,UAAU,CAAC,EAE9E,OAAOwoL,GAAaiC,EAAqB7J,GAAe,cAAcjwM,GAAM,SAAU,KAAMoG,CAAQ,EAAI6pM,GAAe,cAAc,MAAO52M,EAAO+M,CAAQ,EAAI,IACjK,EACIi0M,GAAiB,SAAwBn3H,EAAO,CAClD,IAAI42H,EAAqB52H,EAAM,mBAC3B98E,EAAW88E,EAAM,SACDA,EAAM,cACdA,EAAM,MACpB,IAAM7pF,EAAQ4gB,GAAyBipE,EAAO,CAAC,qBAAsB,WAAY,gBAAiB,OAAO,CAAC,EAExG,OAAOw0H,GAAeoC,EAAqB7J,GAAe,cAAcjwM,GAAM,SAAU,KAAMoG,CAAQ,EAAI6pM,GAAe,cAAc,MAAO52M,EAAO+M,CAAQ,EAAI,IACnK,EACIk0M,GAAc,SAAqB/2H,EAAO,CAC5C,IAAIu2H,EAAqBv2H,EAAM,mBAC3Bn9E,EAAWm9E,EAAM,SACjBlqF,EAAQ4gB,GAAyBspE,EAAO,CAAC,qBAAsB,UAAU,CAAC,EAE9E,OAAOkvH,GAAYqH,EAAqB7J,GAAe,cAAcjwM,GAAM,SAAU,KAAMoG,CAAQ,EAAI6pM,GAAe,cAAc,MAAO52M,EAAO+M,CAAQ,EAAI,IAChK,EACIm0M,GAAc,SAAqB92H,EAAQ,CAC7C,IAAIq2H,EAAqBr2H,EAAO,mBAC5Br9E,EAAWq9E,EAAO,SAClBpqF,EAAQ4gB,GAAyBwpE,EAAQ,CAAC,qBAAsB,UAAU,CAAC,EAE/E,OAAOkvH,GAAYmH,EAAqB7J,GAAe,cAAcjwM,GAAM,SAAU,KAAMoG,CAAQ,EAAI6pM,GAAe,cAAc,MAAO52M,EAAO+M,CAAQ,EAAI,IAChK,EACIo0M,GAAe,SAAsBzG,EAAQ,CAC/C,IAAI+F,EAAqB/F,EAAO,mBAC5B3tM,EAAW2tM,EAAO,SAClB16M,EAAQ4gB,GAAyB85L,EAAQ,CAAC,qBAAsB,UAAU,CAAC,EAE/E,OAAOlB,GAAaiH,EAAqB7J,GAAe,cAAcjwM,GAAM,SAAU,KAAMoG,CAAQ,EAAI6pM,GAAe,cAAc,MAAO52M,EAAO+M,CAAQ,EAAI,IACjK,EACIq0M,GAAa,SAAoBxG,EAAQ,CAC3C,IAAI6F,EAAqB7F,EAAO,mBAC5B7tM,EAAW6tM,EAAO,SACFA,EAAO,cACfA,EAAO,MACrB,IAAMroM,EAAYqoM,EAAO,UACnB56M,EAAQ4gB,GAAyBg6L,EAAQ,CAAC,qBAAsB,WAAY,gBAAiB,QAAS,WAAW,CAAC,EAEtH,OAAOroM,EAAYkuM,EAAqB7J,GAAe,cAAcjwM,GAAM,SAAU,KAAMoG,CAAQ,EAAI6pM,GAAe,cAAc,MAAO52M,EAAO+M,CAAQ,EAAI,IAChK,EAEA,SAASs0M,GAAsBC,EAAkB,CAC/C,OAAoB,SAAUjnM,EAAkB,CAC9CZ,GAAU8nM,EAAQlnM,CAAgB,EAElC,SAASknM,EAAOvhN,EAAO,CACrB,IAAI2Y,EAEJ,OAAAU,GAAgB,KAAMkoM,CAAM,EAE5B5oM,EAAQmB,GAA2B,KAAMH,GAAgB4nM,CAAM,EAAE,KAAK,KAAMvhN,CAAK,CAAC,EAClF2Y,EAAM,qBAAuB,GAC7BA,EAAM,wBAA0BA,EAAM,wBAAwB,KAAKkB,GAAuBlB,CAAK,CAAC,EAChGA,EAAM,oBAAsBA,EAAM,oBAAoB,KAAKkB,GAAuBlB,CAAK,CAAC,EACxFA,EAAM,WAAaA,EAAM,WAAW,KAAKkB,GAAuBlB,CAAK,CAAC,EACtEA,EAAM,MAAQ,CACZ,YAAa,GACb,WAAY,EACpB,EACaA,CACb,CAEI,OAAAY,GAAagoM,EAAQ,CAAC,CACpB,IAAK,0BACL,MAAO,UAAmC,CACnC,KAAK,uBACR,KAAK,qBAAuB,IAG9B,IAAIt4M,EAAc,OAAO,WAAa,OAAO,YAAc,GAAK,EAChE,KAAK,SAAS,CACZ,WAAYA,IAAgB,EAC5B,YAAaA,IAAgB,EACvC,CAAS,CACT,CACA,EAAO,CACD,IAAK,sBACL,MAAO,UAA+B,CACpC,KAAK,wBAAuB,CACpC,CACA,EAAO,CACD,IAAK,aACL,MAAO,UAAsB,CAC3B,KAAK,wBAAuB,CACpC,CACA,EAAO,CACD,IAAK,oBACL,MAAO,UAA6B,EAC7B,OAAO,OAAW,IAAc,YAAcwD,GAAQ,MAAM,KAAO,QAAaiwG,KAC9E,KAAK,qBAIR,OAAO,oBAAoB,OAAQ,KAAK,WAAY,EAAK,GAHzD,KAAK,wBAAuB,EAC5B,OAAO,iBAAiB,OAAQ,KAAK,WAAY,EAAK,GAKxD,OAAO,iBAAiB,SAAU,KAAK,oBAAqB,EAAK,EAE3E,CACA,EAAO,CACD,IAAK,uBACL,MAAO,UAAgC,CACrC,OAAO,oBAAoB,SAAU,KAAK,oBAAqB,EAAK,CAC5E,CACA,EAAO,CACD,IAAK,SACL,MAAO,UAAkB,CACvB,OAAOk6F,GAAe,cAAc0K,EAAkB90M,GAAS,CAAA,EAAI,KAAK,MAAO,CAC7E,YAAa,KAAK,MAAM,YACxB,WAAY,KAAK,MAAM,UACjC,CAAS,CAAC,CACV,CACA,CAAK,CAAC,EAEK+0M,CACX,EAAI3K,GAAe,SAAS,CAC5B,CAEA,SAAS4K,IAAuB,CAC9B,IAAIp5K,EAAYzhC,GAAM,SAAS,UAAY,CACzC,IAAIsC,EAAc,OAAO,WAAa,OAAO,YAAc,GAAK,EAChE,MAAO,CACL,WAAYA,IAAgB,EAC5B,YAAaA,IAAgB,GAC7B,YAAaA,IAAgB,EAAI,WAAa,WACpD,CACA,CAAG,EACGo/B,EAAavqB,GAAesqB,EAAW,CAAC,EACxCxiC,EAAQyiC,EAAW,CAAC,EACpBviC,EAAWuiC,EAAW,CAAC,EAEvBo5K,EAA0B96M,GAAM,YAAY,UAAY,CAC1D,IAAIsC,EAAc,OAAO,WAAa,OAAO,YAAc,GAAK,EAC5D7b,EAAO,CACT,WAAY6b,IAAgB,EAC5B,YAAaA,IAAgB,GAC7B,YAAaA,IAAgB,EAAI,WAAa,WACpD,EACIrD,EAAM,cAAgBxY,EAAK,aAAe0Y,EAAS1Y,CAAI,CAC3D,EAAK,CAACwY,EAAM,WAAW,CAAC,EACtBe,OAAAA,GAAM,UAAU,UAAY,CAC1B,OAAK,OAAO,OAAW,IAAc,YAAc8F,GAAQ,MAAM,KAAO,QAAaiwG,KACnF+kG,EAAuB,EACvB,OAAO,iBAAiB,OAAQA,EAAyB,EAAK,EAC9D,OAAO,iBAAiB,SAAUA,EAAyB,EAAK,GAG3D,UAAY,CACjB,OAAO,oBAAoB,SAAUA,EAAyB,EAAK,EACnE,OAAO,oBAAoB,OAAQA,EAAyB,EAAK,CACvE,CACA,EAAK,CAACA,CAAuB,CAAC,EACrB77M,CACT,CAEA,SAAS87M,GAAcpK,EAAW,CAChC,IAAIqK,EAAgBrK,GAAwB,OAAO,UAAU,UAC7D,OAAOD,GAAesK,CAAa,CACrC,CAEA,SAASC,GAAmBtK,EAAW,CACrC,IAAIqK,EAAgBrK,GAAwB,OAAO,UAAU,UACzDuK,EAAaH,GAAcC,CAAa,EACxCG,EAAY5D,GAAqB2D,CAAU,EAC/C,MAAO,CAACC,EAAWD,CAAU,CAC/B,CAEAnL,GAAA,YAAsB8J,GACtB9J,GAAA,aAAuB+B,GACvB/B,GAAA,YAAsBgK,GACtBhK,GAAA,YAAsBwK,GACtBxK,GAAA,WAAqB0K,GACrB1K,GAAA,OAAiBiK,GACjBjK,GAAA,QAAkBkK,GAClBlK,GAAA,eAAyBsK,GACzBtK,GAAA,WAAqBmK,GACrBnK,GAAA,QAAkBgC,GAClBhC,GAAA,YAAsBuK,GACtBvK,GAAA,WAAqBoK,GACrBpK,GAAA,aAAuByK,GACvBzK,GAAA,aAAuBqK,GACvBrK,GAAA,YAAsBwI,GACtBxI,GAAA,eAAyBuI,GACzBvI,GAAA,aAAuBiD,GACvBjD,GAAA,WAAqBgJ,GACrBhJ,GAAA,WAAqB2I,GACrB3I,GAAA,cAAwB4I,GACxB5I,GAAA,mBAA6BsI,GAC7BtI,GAAA,wBAAkC4J,GAClC5J,GAAA,MAAgB6I,GAChB7I,GAAA,UAAoB6H,GACpB7H,GAAA,UAAoB3hM,GACpB2hM,GAAA,SAAmBgI,GACnBhI,GAAA,WAAqB0H,GACrB1H,GAAA,UAAoB4C,GACpB5C,GAAA,UAAoB4H,GACpB5H,GAAA,OAAiB8I,GACjB9I,GAAA,eAAyBsJ,GACzBtJ,GAAA,WAAqBqJ,GACrBrJ,GAAA,WAAqBgD,GACrBhD,GAAA,UAAoBiI,GACpBjI,GAAA,KAAe/rG,GACf+rG,GAAA,MAAgB+H,GAChB/H,GAAA,QAAkBiJ,GAClBjJ,GAAA,SAAmBkJ,GACnBlJ,GAAA,WAAqBmJ,GACrBnJ,GAAA,SAAmBoJ,GACnBpJ,GAAA,aAAuBuJ,GACvBvJ,GAAA,OAAiB0J,GACjB1J,GAAA,QAAkByJ,GAClB,IAAA4B,GAAArL,GAAA,SAAmBh6F,GACnBg6F,GAAA,aAAuB2H,GACvB3H,GAAA,eAAyByH,GACzBzH,GAAA,QAAkBmI,GAClBnI,GAAA,SAAmBkI,GACnBlI,GAAA,iBAA2B2J,GAC3B3J,GAAA,UAAoB0C,GACpB1C,GAAA,SAAmBkD,GACnBlD,GAAA,WAAqB8C,GACrB9C,GAAA,WAAqB8H,GACrB9H,GAAA,UAAoBwJ,GACpBxJ,GAAA,SAAmB+I,GACnB/I,GAAA,YAAsB0I,GACtB1I,GAAA,aAAuByI,GACvBzI,GAAA,OAAiBqI,GACjBrI,GAAA,UAAoBoI,GACpBpI,GAAA,eAAyBW,GACzBX,GAAA,aAAuBmC,GACvBnC,GAAA,cAAwBgL,GACxBhL,GAAA,mBAA6BkL,GAC7B,IAAAI,GAAAtL,GAAA,qBAA+B8K,GAC/B9K,GAAA,sBAAgC2K,GC/iChC,MAAM90J,WAAsB/O,EAAAA,SAAkD,CAC5E,YAAYx9C,EAA2B,CACrC,MAAMA,CAAK,EACX,KAAK,MAAQ,CAAE,SAAU,EAAA,CAC3B,CAEA,OAAO,yBAAyBxG,EAAkC,CAEhE,MAAO,CAAE,SAAU,GAAM,MAAAA,CAAA,CAC3B,CAEA,kBAAkBA,EAAcyoN,EAA4B,CAE1D,QAAQ,MAAM,4BAA6BzoN,CAAK,EAChD,QAAQ,MAAM,mBAAoByoN,EAAU,cAAc,CAC5D,CAEA,QAA0B,OACxB,OAAI,KAAK,MAAM,SAEN,KAAK,MAAM,UAChBC,EAAAA,KAAC,OAAI,MAAO,CACV,QAAS,OACT,OAAQ,oBACR,aAAc,MACd,gBAAiB,UACjB,MAAO,UACP,OAAQ,QAAA,EAER,SAAA,CAAAC,EAAAA,IAAC,KAAA,CAAI,SAAAC,GAAQ,EAAE,wBAAwB,EAAE,EACzCD,EAAAA,IAAC,IAAA,CAAG,UAAAt0N,EAAA,KAAK,MAAM,QAAX,YAAAA,EAAkB,QAAQ,EAC9Bs0N,EAAAA,IAAC,SAAA,CACC,QAAS,IAAM,KAAK,SAAS,CAAE,SAAU,GAAO,EAChD,MAAO,CACL,gBAAiB,UACjB,MAAO,QACP,OAAQ,OACR,QAAS,WACT,aAAc,MACd,OAAQ,SAAA,EAGT,SAAAC,GAAQ,EAAE,gBAAgB,CAAA,CAAA,CAC7B,EACF,EAIG,KAAK,MAAM,QACpB,CACF,CC7DA,MAAMxmE,GAAO,OACPC,GAAQ,QACRC,GAAK,KACLC,GAAO,OAGPsmE,GAAe,CACjB,MAAO,GACP,qBAAsB,GACtB,cAAe,EACf,WAAY,GACZ,WAAY,GACZ,cAAe,IACf,kBAAmB,CAAE,QAAS,EAAI,CACtC,EACMh8M,GAAe,CACjB,MAAO,GACP,QAAS,CAAC,EAAG,CAAC,EACd,MAAO,EACP,QAAS,GACT,GAAI,CAAC,EAAG,CAAC,CACb,EACMi8M,GAAY,YACZC,GAAU,UACVC,GAAW,WACXC,GAAY,YACZC,GAAa,aACnB,SAASC,GAAa70F,EAAMC,EAAMR,EAAQH,EAAQ,CAC9C,OAAIU,EAAOC,EACHR,EAAS,EACFsuB,GAEJD,GAEFxuB,EAAS,EACP2uB,GAEJD,EACX,CACA,SAAS8mE,GAAgB9/M,EAAK+/M,EAAO,CACjC,GAAIA,IAAU,EACV,OAAO//M,EACX,MAAMggN,EAAkB,KAAK,GAAK,IAAOD,EACnC9qM,EAAIjV,EAAI,CAAC,EAAI,KAAK,IAAIggN,CAAc,EAAIhgN,EAAI,CAAC,EAAI,KAAK,IAAIggN,CAAc,EACxE9qM,EAAIlV,EAAI,CAAC,EAAI,KAAK,IAAIggN,CAAc,EAAIhgN,EAAI,CAAC,EAAI,KAAK,IAAIggN,CAAc,EAC9E,MAAO,CAAC/qM,EAAGC,CAAC,CAChB,CACA,SAAS+qM,GAAYp7M,EAAKq7M,EAAc,CACpC,MAAMC,EAAWx0N,GAAU,CACvB,MAAMy0N,EAAU,YAAaz0N,EAEzBy0N,GAAWz0N,EAAM,QAAQ,OAAS,GAEtCkZ,EAAI,CAAC/B,EAAO5F,IAAU,CAEdA,EAAM,YAAc,CAACkjN,IACrB,SAAS,iBAAiBZ,GAAWa,CAAM,EAC3C,SAAS,iBAAiBZ,GAASa,CAAI,GAE3C,KAAM,CAAE,QAAAvnC,EAAS,QAAAC,GAAYonC,EAAUz0N,EAAM,QAAQ,CAAC,EAAIA,EACpD40N,EAAKT,GAAgB,CAAC/mC,EAASC,CAAO,EAAG97K,EAAM,aAAa,EAClE,OAAAA,EAAM,2BACFA,EAAM,0BAA0B,CAAE,MAAAvR,EAAO,EACtC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,GAAImX,CAAK,EAAGS,EAAY,EAAG,CAAE,QAASg9M,EAAG,QAAS,GAAAA,EAAI,MAAO50N,EAAM,WAAa,EAAG,CACxI,CAAC,CACL,EACM00N,EAAU10N,GAAU,CACtBkZ,EAAI,CAAC/B,EAAO5F,IAAU,CAClB,MAAMkjN,EAAU,YAAaz0N,EAG7B,GAAIy0N,GAAWz0N,EAAM,QAAQ,OAAS,EAClC,OAAOmX,EAGX,GAAInX,EAAM,UAAYmX,EAAM,MAAQ5F,EAAM,cACtC,OAAO4F,EAAM,QAAU,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIA,CAAK,EAAG,CAAE,QAAS,EAAK,CAAE,EAAIA,EAEzF,KAAM,CAAE,QAAAi2K,EAAS,QAAAC,GAAYonC,EAAUz0N,EAAM,QAAQ,CAAC,EAAIA,EACpD,CAACspB,EAAGC,CAAC,EAAI4qM,GAAgB,CAAC/mC,EAASC,CAAO,EAAG97K,EAAM,aAAa,EAChEutH,EAASx1G,EAAInS,EAAM,GAAG,CAAC,EACvBwnH,EAASp1G,EAAIpS,EAAM,GAAG,CAAC,EACvBkoH,EAAO,KAAK,IAAIP,CAAM,EACtBQ,EAAO,KAAK,IAAIX,CAAM,EACtBxhH,GAAQnd,EAAM,WAAa,GAAKmX,EAAM,MACtC09M,EAAW,KAAK,KAAKx1F,EAAOA,EAAOC,EAAOA,CAAI,GAAKniH,GAAQ,GAC3D23M,EAAO,CAACh2F,GAAU3hH,GAAQ,GAAIwhH,GAAUxhH,GAAQ,EAAE,EAClD43M,EAAMb,GAAa70F,EAAMC,EAAMR,EAAQH,CAAM,EAE7ClxF,EAAQ,OAAOl8B,EAAM,OAAU,SAC/BA,EAAM,MACNA,EAAM,MAAMwjN,EAAI,aAAa,GAC3BnB,GAAa,MACrB,GAAIv0F,EAAO5xF,GAAS6xF,EAAO7xF,GAAS,CAACt2B,EAAM,QACvC,OAAOA,EACX,MAAM69M,EAAY,CACd,KAAA31F,EACA,KAAAC,EACA,OAAAR,EACA,OAAAH,EACA,IAAAo2F,EACA,MAAA/0N,EACA,MAAOmX,EAAM,MACb,QAASA,EAAM,QACf,SAAA09M,EACA,KAAAC,CAChB,EAEYE,EAAU,OAASzjN,EAAM,cAAgBA,EAAM,aAAayjN,CAAS,EAErEzjN,EAAM,WAAaA,EAAM,UAAUyjN,CAAS,EAG5C,IAAIC,EAAsB,GAC1B,OAAI1jN,EAAM,WACNA,EAAM,UACNA,EAAM,WAAWwjN,CAAG,EAAE,KACtBE,EAAsB,IAEtBA,GACA1jN,EAAM,sBACNA,EAAM,YACNvR,EAAM,YACNA,EAAM,eAAc,EAEjB,OAAO,OAAO,OAAO,OAAO,CAAA,EAAImX,CAAK,EAAG,CAE3C,MAAO,GAAO,UAAA69M,EAAW,QAAS,EAAI,CAAE,CAChD,CAAC,CACL,EACMjnB,EAAS/tM,GAAU,CACrBkZ,EAAI,CAAC/B,EAAO5F,IAAU,CAClB,IAAIyjN,EACJ,GAAI79M,EAAM,SAAWA,EAAM,WAEvB,GAAInX,EAAM,UAAYmX,EAAM,MAAQ5F,EAAM,cAAe,CACrDyjN,EAAY,OAAO,OAAO,OAAO,OAAO,GAAI79M,EAAM,SAAS,EAAG,CAAE,MAAAnX,EAAO,EACvEuR,EAAM,UAAYA,EAAM,SAASyjN,CAAS,EAC1C,MAAME,EAAc3jN,EAAM,WAAWyjN,EAAU,GAAG,EAAE,EACpDE,GAAeA,EAAYF,CAAS,CACxC,OAGAzjN,EAAM,OAASA,EAAM,MAAM,CAAE,MAAAvR,CAAK,CAAE,EAExC,OAAAuR,EAAM,uBAAyBA,EAAM,sBAAsB,CAAE,MAAAvR,CAAK,CAAE,EAC7D,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAImX,CAAK,EAAGS,EAAY,EAAG,CAAE,UAAAo9M,CAAS,CAAE,CAC7F,CAAC,CACL,EACMG,EAAe,IAAM,CAEvB,SAAS,oBAAoBtB,GAAWa,CAAM,EAC9C,SAAS,oBAAoBZ,GAASa,CAAI,CAC9C,EACMA,EAAQt4N,GAAM,CAChB84N,EAAY,EACZpnB,EAAM1xM,CAAC,CACX,EAaM+4N,EAAc,CAACj0I,EAAI5vE,IAAU,CAC/B,IAAIqd,EAAU,IAAM,CAAE,EACtB,GAAIuyD,GAAMA,EAAG,iBAAkB,CAC3B,MAAMk0I,EAAc,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIzB,GAAa,iBAAiB,EAAGriN,EAAM,iBAAiB,EAEtG+jN,EAAM,CACR,CAACrB,GAAYO,EAASa,CAAW,EAEjC,CACIrB,GACAU,EACA,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIW,CAAW,EAAI9jN,EAAM,qBAAuB,CAAE,QAAS,EAAK,EAAK,CAAA,CAAE,CACvH,EACgB,CAACwiN,GAAUhmB,EAAOsnB,CAAW,CAC7C,EACYC,EAAI,QAAQ,CAAC,CAACj5N,EAAG8jB,EAAG5e,CAAC,IAAM4/E,EAAG,iBAAiB9kF,EAAG8jB,EAAG5e,CAAC,CAAC,EAEvDqtB,EAAU,IAAM0mM,EAAI,QAAQ,CAAC,CAACj5N,EAAG8jB,CAAC,IAAMghE,EAAG,oBAAoB9kF,EAAG8jB,CAAC,CAAC,CACxE,CACA,OAAOyO,CACX,EAyBMgS,EAAS,CACX,IAzBWugD,GAAO,CAGdA,IAAO,MAEXjoE,EAAI,CAAC/B,EAAO5F,IAAU,CAElB,GAAI4F,EAAM,KAAOgqE,EACb,OAAOhqE,EACX,MAAMo+M,EAAW,CAAA,EAEjB,OAAIp+M,EAAM,IAAMA,EAAM,KAAOgqE,GAAMhqE,EAAM,eACrCA,EAAM,aAAY,EAClBo+M,EAAS,aAAe,QAGxBhkN,EAAM,YAAc4vE,IACpBo0I,EAAS,aAAeH,EAAYj0I,EAAI5vE,CAAK,GAG1C,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,EAAI4F,CAAK,EAAG,CAAE,GAAAgqE,CAAE,CAAE,EAAGo0I,CAAQ,CAClF,CAAC,CACL,CAIJ,EAEI,OAAIhB,EAAa,aACb3zL,EAAO,YAAc4zL,GAElB,CAAC5zL,EAAQw0L,CAAW,CAC/B,CACA,SAASI,GAAqBr+M,EAAO5F,EAAOkkN,EAAeL,EAAa,CAEpE,MAAI,CAAC7jN,EAAM,YAAc,CAAC4F,EAAM,IACxBA,EAAM,cACNA,EAAM,aAAY,EAEf,OAAO,OAAO,OAAO,OAAO,GAAIA,CAAK,EAAG,CAAE,aAAc,OAAW,GAGzEA,EAAM,aAMP5F,EAAM,uBAAyBkkN,EAAc,sBAC7ClkN,EAAM,kBAAkB,UAAYkkN,EAAc,kBAAkB,SACpEt+M,EAAM,aAAY,EACX,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIA,CAAK,EAAG,CAAE,aAAci+M,EAAYj+M,EAAM,GAAI5F,CAAK,CAAC,CAAE,GAE1F4F,EAVI,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIA,CAAK,EAAG,CAAE,aAAci+M,EAAYj+M,EAAM,GAAI5F,CAAK,CAAC,CAAE,CAWrG,CACA,SAASmkN,GAAan2N,EAAS,CAC3B,KAAM,CAAE,WAAAo2N,CAAU,EAAKp2N,EACjBq2N,EAAiB19M,EAAM,OAAO,OAAO,OAAO,CAAA,EAAIN,EAAY,CAAC,EAC7Di+M,EAAiB39M,EAAM,OAAO,OAAO,OAAO,CAAA,EAAI07M,EAAY,CAAC,EAE7D6B,EAAgBv9M,EAAM,OAAO,OAAO,OAAO,CAAA,EAAI29M,EAAe,OAAO,CAAC,EAC5EJ,EAAc,QAAU,OAAO,OAAO,CAAA,EAAII,EAAe,OAAO,EAEhEA,EAAe,QAAU,OAAO,OAAO,OAAO,OAAO,CAAA,EAAIjC,EAAY,EAAGr0N,CAAO,EAE/E,IAAIu2N,EACJ,IAAKA,KAAclC,GACXiC,EAAe,QAAQC,CAAU,IAAM,SACvCD,EAAe,QAAQC,CAAU,EAAIlC,GAAakC,CAAU,GAGpE,KAAM,CAACC,EAAUX,CAAW,EAAIl9M,EAAM,QAAQ,IAAMo8M,GAAa0B,GAAiBJ,EAAe,QAAUI,EAAYJ,EAAe,QAASC,EAAe,OAAO,EAAI,CAAE,WAAAF,CAAU,CAAE,EAAG,CAACA,CAAU,CAAC,EACtM,OAAAC,EAAe,QAAUJ,GAAqBI,EAAe,QAASC,EAAe,QAASJ,EAAc,QAASL,CAAW,EACzHW,CACX,CCpPO,MAAME,GAAY,CAACl5M,EAAY4wB,EAAeuoL,IACjDzC,EAAAA,KAAC,UAAO,GAAI,gBAAgB12M,CAAE,GAAI,EAAE,QAAQ,EAAE,QAAQ,MAAM,OAAO,OAAO,OACtE,SAAA,CAAA22M,EAAAA,IAAC,eAAA,CAAa,GAAI,UAAU32M,CAAE,GAAI,GAAG,cAAc,SAAS,SAAS,OAAQm5M,EAAe,OAAO,WAAW,QAE7G,UAAA,CAAQ,WAAYvoL,EAAO,aAAa,MAAM,OAAO,QAAQ,EAC9D+lL,EAAAA,IAAC,eAAY,GAAG,QAAQ,IAAI,WAAW,SAAS,KAAK,OAAO,oBAAA,CAAqB,QAChF,cAAA,CAAY,GAAG,gBAAgB,IAAI,qBAAqB,SAAS,MAAA,CAAO,CAAA,EAE7E,EAaG,SAASyC,IAA6B,CAEzC,MAAMC,EAAe,SAAS,cAAc,gBAAgB,EACtDC,EAAa,SAAS,cAAc,oBAAoB,EAC1D,CAACA,GAAc,CAACD,GAIpB,CAAC,MAAO,SAAU,OAAQ,MAAO,UAAW,WAAY,KAAK,EAAE,QAAS7sN,GAAS,CACvD8sN,EAAW,iBAAiB,MAAM9sN,CAAI,eAAe,EAC7D,QAAQ89F,GAAO,WACzB,GAAKA,EAAoB,mBAAqB,GACtCA,EAAI,YAAa,CACjB,IAAI7+E,GAAQppB,EAAAioG,EAAI,qBAAJ,YAAAjoG,EAAwC,UACpD,GAAIopB,EAAM,CACFA,EAAK,OAAS,GAAKA,EAAK,QAAU,GAAKjf,GAAQ,SAASpK,EAAAkoG,EAAI,qBAAJ,MAAAloG,EAAwB,sBAChF,QAAQ,IAAI,+CAA+C,EAC3DqpB,GAAQhc,EAAA66F,EAAI,mBAAmB,qBAAvB,YAAA76F,EAA2D,WAEvE,MAAMid,EAAO,SAAS,gBAAgB,6BAA8B,MAAM,EAC1EA,EAAK,aAAa,IAAKjB,EAAK,EAAE,UAAU,EACxCiB,EAAK,aAAa,IAAKjB,EAAK,EAAE,UAAU,EACxCiB,EAAK,aAAa,QAASjB,EAAK,MAAM,UAAU,EAChDiB,EAAK,aAAa,SAAUjB,EAAK,OAAO,UAAU,EAClDiB,EAAK,aAAa,OAAQ,SAAS,EACnCA,EAAK,aAAa,eAAgB,GAAG,EACrC49E,EAAI,YAAY59E,CAAI,CACxB,CACJ,CAER,CAAC,CACL,CAAC,CACL,CAEO,SAAS6sM,GAAiBC,EAAkB,CAE/C,MAAMH,EAAe,SAAS,cAAc,gBAAgB,EACtDC,EAAa,SAAS,cAAc,oBAAoB,EAC1D,CAACA,GAAc,CAACD,GAIpBG,EAAO,QAAQp8G,GAAS,CACpB,MAAMq8G,EAAe,IAAI,OAAOr8G,CAAK,EACtBk8G,EAAW,iBAAiB,8CAA8CG,CAAY,KAAK,EACnG,QAAQC,GAAS,CACpB,MAAMjuM,EAAQiuM,EAAsB,QAAA,EAC9Bv2M,EAAIu2M,EAAM,cAAc,kCAAkCD,CAAY,GAAG,EAC/E,GAAI,CAAChuM,GAAQ,CAACtI,EACV,OAEJ,MAAMuJ,EAAO,SAAS,gBAAgB,6BAA8B,MAAM,EAC1EA,EAAK,aAAa,IAAKjB,EAAK,EAAE,UAAU,EACxCiB,EAAK,aAAa,IAAKjB,EAAK,EAAE,UAAU,EACxCiB,EAAK,aAAa,QAASjB,EAAK,MAAM,UAAU,EAChDiB,EAAK,aAAa,SAAUjB,EAAK,OAAO,UAAU,EAClDiB,EAAK,UAAU,IAAI,6BAA6B,EAChDvJ,EAAE,YAAYuJ,CAAI,CACtB,CAAC,CACL,CAAC,CACL,CClGA,MAAMitM,GAAuB,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,EAG9GC,GAAqB;AAAA;AAAA;AAAA;AAAA,QAQrBC,GACFnD,EAAAA,KAAC,MAAA,CAAI,MAAM,6BAA6B,MAAO,CAAE,OAAQ,MAAO,MAAO,KAAA,EACnE,SAAA,CAAAA,OAAC,OAAA,CACI,SAAA,CAAAwC,GAAU,IAAKS,GAAqB,CAAC,EAAG,GAAG,EAC3CT,GAAU,IAAKS,GAAqB,CAAC,EAAG,GAAG,EAC3CT,GAAU,IAAKS,GAAqB,CAAC,EAAG,GAAG,EAC3CT,GAAU,IAAKS,GAAqB,CAAC,EAAG,GAAG,EAC3CT,GAAU,IAAKS,GAAqB,CAAC,EAAG,GAAG,EAC3CT,GAAU,IAAKS,GAAqB,CAAC,EAAG,GAAG,EAC3CT,GAAU,IAAKS,GAAqB,CAAC,EAAG,GAAG,EAC3CT,GAAU,IAAKS,GAAqB,CAAC,EAAG,GAAG,EAC3CT,GAAU,QAAS,UAAW,CAAC,CAAA,EACpC,EAEAvC,EAAAA,IAAC,WAAQ,GAAG,qBAAqB,UAAU,YAAY,cAAc,SAAS,KAAK,KAAK,GAAG,MAAM,IAAI,KAAK,MAAM,KAAK,KAAK,SAAS,YAAY,aAAa,QAAQ,QAAA,CAAS,EAC7KA,EAAAA,IAAC,WAAQ,GAAG,qBAAqB,UAAU,YAAY,cAAc,SAAS,KAAK,KAAK,GAAG,MAAM,IAAI,KAAK,MAAM,KAAK,KAAK,SAAS,YAAY,aAAa,QAAQ,QAAA,CAAS,EAC7KA,EAAAA,IAAC,WAAQ,GAAG,qBAAqB,UAAU,YAAY,cAAc,SAAS,KAAK,KAAK,GAAG,MAAM,IAAI,KAAK,MAAM,KAAK,KAAK,SAAS,YAAY,aAAa,QAAQ,QAAA,CAAS,EAC7KA,EAAAA,IAAC,WAAQ,GAAG,qBAAqB,UAAU,YAAY,cAAc,SAAS,KAAK,KAAK,GAAG,MAAM,IAAI,KAAK,MAAM,KAAK,KAAK,SAAS,YAAY,aAAa,QAAQ,QAAA,CAAS,EAC7KA,EAAAA,IAAC,WAAQ,GAAG,qBAAqB,UAAU,YAAY,cAAc,SAAS,KAAK,KAAK,GAAG,MAAM,IAAI,KAAK,MAAM,KAAK,KAAK,SAAS,YAAY,aAAa,QAAQ,QAAA,CAAS,EAC7KA,EAAAA,IAAC,WAAQ,GAAG,qBAAqB,UAAU,YAAY,cAAc,SAAS,KAAK,KAAK,GAAG,MAAM,IAAI,KAAK,MAAM,KAAK,KAAK,SAAS,YAAY,aAAa,QAAQ,QAAA,CAAS,EAC7KA,EAAAA,IAAC,WAAQ,GAAG,qBAAqB,UAAU,YAAY,cAAc,SAAS,KAAK,KAAK,GAAG,MAAM,IAAI,KAAK,MAAM,KAAK,KAAK,SAAS,YAAY,aAAa,QAAQ,QAAA,CAAS,EAC7KA,EAAAA,IAAC,WAAQ,GAAG,qBAAqB,UAAU,YAAY,cAAc,SAAS,KAAK,KAAK,GAAG,MAAM,IAAI,KAAK,MAAM,KAAK,KAAK,SAAS,YAAY,aAAa,QAAQ,QAAA,CAAS,CAAA,EACjL,EAGEmD,GAAoBC,GACtB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAClB,OAAOp4N,GAAK,CAACo4N,EAAa,IAAI,GAAGp4N,CAAC,EAAE,CAAC,EACrC,IAAIA,GAAK,kBAAkBA,CAAC,0CACDA,CAAC,0DAEhBg4N,GAAqBh4N,EAAI,CAAC,CAAC,IAAI,EAAE,KAAK;AAAA,CAAI,EAG/D,SAASq4N,GAAkB,CAAE,QAAAC,GAAwC,CAEjE,MAAM78M,EAAYnC,GAAS,IAAI,UAAA,EAEzB2C,EAAe3C,GAAS,IAAI,aAAA,EAC5Bi/M,EAAkBj/M,GAAS,IAAI,gBAAA,EAC/Bk/M,EAAel/M,GAAS,IAAI,aAAA,EAC5Bm/M,EAAsBn/M,GAAS,IAAI,oBAAA,EACnCqB,EAAQrB,GAAS,IAAI,MAAA,EAGrBo/M,EAAkBp/M,GAAS,IAAI,gBAAA,EAE/Bq/M,EAAcpmN,EAAAA,OAAuB,EAAE,EACvCqmN,EAAgBrmN,EAAAA,OAAO,EAAE,EAEzBsmN,EAAkBtmN,EAAAA,OAAO,IAAmD,EAE5EumN,EAA4B,IAAM,CACpC,MAAMC,EAAa,CAAA,EACnB,OAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAAE,QAAQ1rN,GAAK,CAClC,MAAMpQ,EAAM,WAAWoQ,CAAC,aAClBjP,EAAQ,SAAS,cAAcnB,CAAG,EACpCmB,IACA26N,EAAW97N,CAAG,EAAImB,EAE1B,CAAC,EACM26N,CACX,EAEAvmN,EAAAA,UAAU,IAAM,CACZ,GAAIqmN,EAAgB,SAAW,KAAM,CACjC,MAAMttN,EAAQutN,EAAA,EACVvtN,GAAS,OACTstN,EAAgB,QAAUttN,EAElC,CACJ,EAAG,CAAA,CAAE,EAGL,MAAMytN,EAAmB,IAAM,CAC3BH,EAAgB,SAAW,OAAO,OAAOA,EAAgB,OAAO,EAAE,QAASl8N,GAAyB,CAChGA,GAAA,MAAAA,EAAG,YACP,CAAC,CACL,EAEMs8N,EAAqB71N,GAAmB,OAC1C,GAAIy1N,EAAgB,SAAW,KAG/B,QAAS57N,KAAOmG,GACZ1C,EAAAm4N,EAAgB,QAAQ57N,CAAG,IAA3B,MAAAyD,EAA8B,cAEtC,EAEA8R,EAAAA,UAAU,IAAM,CACZ,GAAI8lN,EAAQ,QAAU,GAAK78M,EAAW,CAClCk9M,EAAY,QAAU,CAAA,EACtB,MACJ,CACAA,EAAY,QAAU,CAAC,GAAGL,CAAO,EACjCM,EAAc,QAAU,EAC5B,EAAG,CAACN,CAAO,CAAC,EAEZ9lN,EAAAA,UAAU,IAAM,CACR8lN,EAAQ,QAAU,GAAK78M,GAIvBQ,GAAgB3B,GAAa,UAC7B0+M,EAAA,EACIT,GAAmB,GACnBW,EAAA,EAGZ,EAAG,CAACj9M,CAAY,CAAC,EAEjB,MAAMk9M,EAA2Bj9M,GAAqB,UAClDzb,GAAAC,EAAA43N,EAAQ,MAAA,EAAQ,QAAA,EAAU,KAAK36N,GAAKA,EAAE,IAAMA,EAAE,QAAUue,CAAQ,IAAhE,YAAAxb,EAAmE,KAAnE,MAAAD,EAAuE,QAAQ4d,GAAM,QACjF3d,EAAA,+BAAU,iBAAiB,IAAI2d,CAAE,UAAjC,MAAA3d,EAA0C,QAAQ04N,GAAe,CAC7DA,EAAY,UAAU,IAAI,gBAAgB,CAC9C,EACJ,EACJ,EAEA5mN,EAAAA,UAAU,IAAM,CACRyJ,GAAgB3B,GAAa,QAC7B6+M,EAAwBZ,CAAe,CAE/C,EAAG,CAACG,CAAe,CAAC,EAEpB,MAAMQ,EAAiB,IAAM,CACzBP,EAAY,QAAU,CAAC,GAAGL,CAAO,EACjCM,EAAc,QAAU,GACxB,MAAMS,EAAsB,+BAAU,iBAAiB,mBACvDA,GAAA,MAAAA,EAAqB,QAAQD,GAAe,CACxCA,EAAY,UAAU,OAAO,gBAAgB,CACjD,EACJ,EAEMhB,EAAelzM,EAAAA,QAAQ,IAAM,CAC/B,MAAMo0M,MAAyB,IACzBC,EAAkB5+M,GAAA,YAAAA,EAAO,mBAAmB,IAAI9d,GAAKA,EAAE,OAC7D,OAAS,CAACk7N,EAAOt8G,CAAK,IAAK,OAAO,QAAQg9G,CAAmB,EACpDc,GAAA,MAAAA,EAAiB,SAAS99G,IAC3B69G,EAAmB,IAAIvB,CAAK,EAGpC,OAAOuB,CACX,EAAG,CAAC3+M,EAAO89M,CAAmB,CAAC,EAEzBe,EAAgBt0M,EAAAA,QAAQ,IACnBizM,GAAiBC,CAAY,EACrC,CAACA,CAAY,CAAC,EAGjB5lN,OAAAA,EAAAA,UAAU,IAAM,CACZ,GAAI8lN,EAAQ,QAAU,GAAK78M,EACvB,OAGJ,GAAIQ,GAAgB3B,GAAa,QAAS,CACtC4+M,EAAA,EACA,MACJ,CAEA,MAAMO,EAAyB,KAAK,MAAMlB,CAAe,EACnDn3N,EAAS,CAAA,EAEf,QADIE,EAAQq3N,EAAY,QAAQ,MAAA,EACzBr3N,GAAS,MAAQA,EAAM,QAAUs3N,EAAc,SAClDt3N,EAAQq3N,EAAY,QAAQ,MAAA,EAGhC,KAAOr3N,GAAS,MAAQA,EAAM,QAAUm4N,GACpCr4N,EAAO,KAAKE,CAAK,EACjBA,EAAQq3N,EAAY,QAAQ,MAAA,EAShC,GAPIr3N,GAAS,MACTq3N,EAAY,QAAQ,QAAQr3N,CAAK,EAIrCs3N,EAAc,QAAUa,EAEpBr4N,EAAO,QAAU,EACjB,OAGJ,MAAMs4N,EAAM,IAAI,IAAIt4N,EAAO,QAAQzD,GAAKA,EAAE,GAAG,CAAC,EACxCg8N,EAAK,IAAI,IAAIv4N,EAAO,WAAazD,EAAE,EAAE,EAAE,UAAY,CAAC+7N,EAAI,IAAI/7N,CAAC,CAAC,CAAC,EAWrE,GAVA+7N,EAAI,QAAQr7M,GAAM,CACd,GAAIA,EAAI,CACJ,MAAMu7M,EAAY,IAAI,OAAOv7M,CAAE,EACzBw7M,EAAe,CAAC,GAAG,+BAAU,iBAAiB,IAAID,CAAS,mBAAmB,EACpFC,GAAA,MAAAA,EAAc,QAAQT,GAAe,CACjCA,EAAY,UAAU,OAAO,gBAAgB,CACjD,EACJ,CACJ,CAAC,EAEGn9M,GAAgB3B,GAAa,QAAS,CACtC,MAAMlX,EAAO,IAAI,IAAIhC,EAAO,QAAQzD,GAAKA,EAAE,QAAQ,EAAE,OAAOA,GAAKA,GAAK,IAAI,CAAC,EAC3Es7N,EAAkB,CAAC,GAAG71N,CAAI,CAAC,CAC/B,CACAu2N,EAAG,QAAQt7M,GAAM,OACb,GAAIA,EAAI,CACJ,MAAMu7M,EAAY,IAAI,OAAOv7M,CAAE,GAC/B3d,EAAA,+BAAU,iBAAiB,IAAIk5N,CAAS,UAAxC,MAAAl5N,EAAiD,QAAQ04N,GAAe,CACpEA,EAAY,UAAU,IAAI,gBAAgB,CAC9C,EACJ,CACJ,CAAC,CAEL,EAAG,CAACb,CAAe,CAAC,EAEpB/lN,EAAAA,UAAU,IAAM,CACRgmN,GAAgB,KAGpBQ,EAAA,EACAE,EAAA,EACIV,EAAe,GAAKv8M,GAAgB3B,GAAa,QACjD6+M,EAAwBX,CAAY,EAG5C,EAAG,CAACA,CAAY,CAAC,EAGbzD,OAAC,MAAA,CAAI,UAAU,qBAAqB,MAAO,CAAE,MAAO,MAAO,OAAQ,KAAA,EAE9D,SAAA,CAAAmD,SAEA,QAAA,CACI,SAAA;AAAA,sBACKsB,CAAa;AAAA,sBACbvB,EAAkB;AAAA,iBAAA,CAE5B,CAAA,EACJ,CAGR,CCvPA,IAAI6B,GAA0C,KAC9C,MAAMC,GAAyB,IAE/B,SAAwBC,GAAkBC,EAAyBC,EAAkCC,EAAiC,CAGlI,MAAMl+M,EAAe3C,GAAS,IAAI,aAAA,EAC5Bk/M,EAAel/M,GAAS,IAAI,aAAA,EAC5B8gN,EAAkB9gN,GAAS,IAAI,gBAAA,EAC/B+gN,EAAkB/gN,GAAS,IAAI,gBAAA,EAC/BghN,EAAqBhhN,GAAS,IAAI,mBAAA,EAClC+B,EAAc/B,GAAS,IAAI,YAAA,EAC3BihN,EAAWjhN,GAAS,IAAI,SAAA,EACxB6C,EAAa7C,GAAS,IAAI,WAAA,EAC1BkhN,EAAgBlhN,GAAS,IAAI,cAAA,EAE7Bo/M,EAAkBp/M,GAAS,IAAI,gBAAA,EAE/BmhN,EAAU/7M,GAAA,EAEVg8M,EAAkBnoN,EAAAA,OAA4B,IAAI,EAClDooN,EAAepoN,EAAAA,OAAe,CAAC,EAC/BqoN,EAAoBroN,EAAAA,OAAe,CAAC,EACpCsoN,EAAoBtoN,EAAAA,OAAsB,IAAI,EAE9CuoN,EAAiBvoN,EAAAA,OAA2C,IAAI,GAAK,EACrEwoN,EAAkBxoN,EAAAA,OAAiC,IAAI,GAAK,EAE5D,CAACyoN,EAASC,CAAU,EAAIrnN,EAAAA,SAAS,EAAK,EACtC,CAACsnN,EAAcC,CAAe,EAAIvnN,EAAAA,SAAmB,CAAA,CAAE,EACvDwnN,EAA0B7oN,EAAAA,OAAO,EAAI,EAGrC8oN,EAAkB1oN,EAAAA,YAAY,IAAM,CACtC,GAAI+nN,EAAgB,SAAWA,EAAgB,QAAQ,QAAU,SAC7D,OAAOA,EAAgB,QAG3B,GAAIZ,IAAsBA,GAAmB,QAAU,SACnD,OAAAY,EAAgB,QAAUZ,GACnBA,GAGX,GAAI,CACA,MAAMwB,EAAe,OAAO,cAAiB,OAAe,mBAC5D,OAAAZ,EAAgB,QAAU,IAAIY,EAC9BxB,GAAqBY,EAAgB,QACjCA,EAAgB,QAAQ,QAAU,cAClCU,EAAwB,QAAU,IAE/BV,EAAgB,OAC3B,OAASruN,EAAO,CACZ,eAAQ,MAAM,iCAAkCA,CAAK,EAC9C,IACX,CACJ,EAAG,CAAA,CAAE,EAECkvN,EAAqB5oN,EAAAA,YAAY,SAAY,CAC/C,MAAM+kC,EAAU2jL,EAAA,EAChB,GAAI,CAAC3jL,EAAS,MAAO,GAErB,GAAIA,EAAQ,QAAU,YAClB,GAAI,CACA,aAAMA,EAAQ,OAAA,EACd0jL,EAAwB,QAAU,GAC3B,EACX,OAAS/uN,EAAO,CACZ,eAAQ,MAAM,iCAAkCA,CAAK,EAC9C,EACX,CAGJ,OAAIqrC,EAAQ,QAAU,WAClB0jL,EAAwB,QAAU,GAC3B,IAGJ,EACX,EAAG,CAACC,CAAe,CAAC,EAEpB7oN,EAAAA,UAAU,IAAM,CAEZ,GADgB6oN,EAAA,EAGhB,MAAO,IAAM,CACLR,EAAkB,UAClB,qBAAqBA,EAAkB,OAAO,EAC9CA,EAAkB,QAAU,KAEpC,CACJ,EAAG,CAACQ,CAAe,CAAC,EAEpB7oN,EAAAA,UAAU,IAAM,CACZ,MAAMgpN,EAAY,MAAOvB,GAAqB,CAC1C,QAAQ,IAAI,2BAA2BA,CAAQ,EAAE,EACjD,MAAMviL,GAAU2jL,EAAA,EAChB,GAAK3jL,GAGL,CAAAqjL,EAAgB,QAAQ,MAAA,EACxBI,EAAgB,CAAA,CAAE,EAClB,GAAI,CACA,MAAMM,GAAS,MAAMC,EAAiBzB,EAAUviL,EAAO,EACvDqjL,EAAgB,QAAQ,IAAI,OAAQU,EAAM,EAC1CN,EAAgB,CAAC,MAAM,CAAC,EACxBF,EAAW,EAAI,CACnB,OAAS5uN,GAAO,CACZ,QAAQ,MAAM,6BAA8BA,EAAK,CACrD,EACJ,EAEI4P,IAAiB3B,GAAa,UAC9BqhN,EAAA,EACAtB,EAAgB//M,GAAa,OAAO,GAExC2gN,EAAW,EAAK,EAEZhB,GACAuB,EAAUvB,CAAQ,CAE1B,EAAG,CAACA,EAAUE,CAAW,CAAC,EAG1B3nN,EAAAA,UAAU,IAAM,CACZ,MAAMopN,EAAmB,MAAO1B,GAAqC,CACjE,MAAMxiL,GAAU2jL,EAAA,EACX3jL,IAGL,MAAM,QAAQ,IAAIwiL,EAAmB,IAAI,MAAOvtC,IAAsB,CAClE,GAAKA,GAAM,IACX,GAAI,CACA,QAAQ,IAAI,mCAAmCA,GAAM,GAAG,EAAE,EAC1D,MAAM8uC,GAAS,MAAMC,EAAiB/uC,GAAM,IAAKj1I,EAAO,EACxDqjL,EAAgB,QAAQ,IAAIpuC,GAAM,GAAI8uC,EAAM,EAC5CN,MAAwB,CAAC,GAAG5qN,GAAMo8K,GAAM,EAAE,CAAC,CAC/C,OAAStgL,GAAO,CACZ,QAAQ,MAAM,wBAAwBsgL,GAAM,EAAE,SAASA,GAAM,GAAG,GAAItgL,EAAK,CAC7E,CACJ,CAAC,CAAC,CACN,EAEI6tN,EAAmB,OAAS,GAC5B0B,EAAiB1B,CAAkB,CAE3C,EAAG,CAACA,CAAkB,CAAC,EAIvB1nN,EAAAA,UAAU,IACC,IAAM,OACTmpN,EAAA,IACIj7N,EAAAg6N,EAAgB,UAAhB,YAAAh6N,EAAyB,SAAU,WACnCg6N,EAAgB,QAAQ,QAAA,EAAU,KAAK,IAAM,CACzC,QAAQ,IAAI,yBAAyB,EACrCA,EAAgB,QAAU,IAC9B,CAAC,CAET,EACD,CAAA,CAAE,EAEL,MAAMgB,EAAmB/oN,EAAAA,YAAY,MAAOkpN,EAAankL,IAAgD,CACrG,MAAMx5B,GAAW,MAAM,MAAM29M,CAAG,EAChC,GAAI,CAAC39M,GAAS,GACV,MAAM,IAAI,MAAM,uBAAuBA,GAAS,MAAM,EAAE,EAE5D,MAAM49M,GAAc,MAAM59M,GAAS,YAAA,EACnC,OAAO,MAAMw5B,EAAQ,gBAAgBokL,EAAW,CACpD,EAAG,CAAA,CAAE,EAECC,EAAuB,MAAO7/M,GAAqB,CACrD,GAAI,CAACC,GAAcF,IAAiB3B,GAAa,QAAS,CACtD,MAAM0hN,EAAoB,MAAMvB,GAAA,YAAAA,EAAS,kBAAkBv+M,IACrD+/M,GAAcD,GAAA,YAAAA,EAAmB,KACnCC,IAAeA,KAAgB5gN,GAC/Bk/M,EAAS0B,EAAW,CAE5B,CACJ,EAGAzpN,EAAAA,UAAU,IAAM,CACRgmN,GAAgB,IAGpB,QAAQ,IAAI,wBAAwBA,CAAY,uBAAuBv8M,CAAY,EAAE,EACjFA,IAAiB3B,GAAa,SAC9BqhN,EAAA,EACAI,EAAqBvD,CAAY,EACjC0D,EAAc1D,CAAY,EAC1B4B,EAAgB,EAAE,IAElBQ,EAAkB,QAAUpC,EAC5BuD,EAAqBvD,CAAY,EACjC4B,EAAgB,EAAE,GAE1B,EAAG,CAAC5B,CAAY,CAAC,EAGjBhmN,EAAAA,UAAU,IAAM,CACZ,OAAQyJ,EAAA,CACJ,KAAK3B,GAAa,QACV8gN,EAAwB,QACxBG,EAAA,EAAqB,KAAKnrB,GAAW,CAC7BA,GACA8rB,EAActB,EAAkB,OAAO,CAE/C,CAAC,EAEDsB,EAActB,EAAkB,OAAO,EAE3C,MACJ,KAAKtgN,GAAa,OACd6hN,EAAA,EACA,MACJ,KAAK7hN,GAAa,QACdqhN,EAAA,EACAf,EAAkB,QAAU,EAC5B,KAAA,CAEZ,EAAG,CAAC3+M,EAAcs/M,CAAkB,CAAC,EAErC,MAAMa,EAAkBzpN,EAAAA,YAAY,IAAM,CAClCsJ,IAAiB3B,GAAa,QAC9B+/M,EAAgB//M,GAAa,MAAM,EAC5B2B,IAAiB3B,GAAa,QACrC+/M,EAAgB//M,GAAa,OAAO,CAE5C,EAAG,CAAC2B,EAAco+M,CAAe,CAAC,EAE5BgC,EAAa1pN,EAAAA,YAAY,IAAM,CACjC0nN,EAAgB//M,GAAa,OAAO,CACxC,EAAG,CAAC+/M,CAAe,CAAC,EAEdiC,EAAe3pN,EAAAA,YAAY,IAAM,CACnC0nN,EAAgB//M,GAAa,OAAO,EACpC8/M,EAAgB,CAAC,CACrB,EAAG,CAACC,EAAiBD,CAAe,CAAC,EAE/BmC,EAAqB5pN,EAAAA,YAAY,IAAM,CACzC,MAAM+kC,EAAU2jL,EAAA,EAChB,GAAI,CAAC3jL,GAAWijL,EAAa,UAAY,SAAUC,EAAkB,QAErE,MAAM4B,EAAkB9kL,EAAQ,YAAcijL,EAAa,QAC3D,OAAO,KAAK,IAAI,EAAG6B,EAAkB,GAAI,CAC7C,EAAG,CAACnB,CAAe,CAAC,EAGdc,EAAgBxpN,EAAAA,YAAY,IAAM,CAChCkoN,EAAkB,UAClB,qBAAqBA,EAAkB,OAAO,EAC9CA,EAAkB,QAAU,MAGhBQ,EAAA,IAGhBT,EAAkB,QAAU2B,EAAA,EAC5BzB,EAAe,QAAQ,QAAQv8N,GAAU,CACrC,GAAI,CACAA,EAAO,KAAA,CACX,MAAY,CAEZ,CACJ,CAAC,EACDu8N,EAAe,QAAQ,MAAA,EAC3B,EAAG,CAACO,EAAiBkB,CAAkB,CAAC,EAElCZ,EAAehpN,EAAAA,YAAY,IAAM,CACnCwpN,EAAA,EACAvB,EAAkB,QAAU,EAC5BN,EAAmB,CAAC,CACxB,EAAG,CAAC6B,CAAa,CAAC,EAEZD,EAAgBvpN,cAAa8pN,GAA0B,CACzDd,EAAA,EAEA,MAAMjkL,EAAU2jL,EAAA,EACZ,CAAC3jL,GAAWqjL,EAAgB,QAAQ,OAAS,GAEjDQ,EAAA,EAAqB,KAAKnrB,IAAW,CACjC,GAAI,CAACA,GAAS,OAEdwqB,EAAkB,QAAU6B,EAC5B,MAAMC,GAAeD,EAAgB,IACrC9B,EAAa,QAAUjjL,EAAQ,YAAcglL,GAE7C3B,EAAgB,QAAQ,QAAQ,CAACU,GAAQkB,KAAY,CACjD,MAAMp+N,GAASm5C,EAAQ,mBAAA,EACvBn5C,GAAO,OAASk9N,GAChBl9N,GAAO,QAAQm5C,EAAQ,WAAW,EAElCn5C,GAAO,MAAM,EAAGm+N,EAAY,EAC5B5B,EAAe,QAAQ,IAAI6B,GAASp+N,EAAM,CAC9C,CAAC,EACDq+N,EAAA,CACJ,CAAC,CACL,EAAG,CAACjB,EAAcN,EAAiBE,EAAoBt/M,CAAY,CAAC,EAG9Dq8M,EAAUpzM,EAAAA,QAAQ,IAChBwzM,GAAA,MAAAA,EAAiB,QACVA,EAAgB,QAEpB,CAAA,EACR,CAACA,CAAe,CAAC,EAEdkE,EAAyBjqN,EAAAA,YAAY,IAAM,CAC7C,GAAIsJ,IAAiB3B,GAAa,QAAS,OAE3C,MAAM4B,EAAWqgN,EAAA,EAGjB,GAFAjC,EAAmBp+M,CAAQ,EAEvBo8M,GAAWA,EAAQ,OAAS,GAAKp8M,EAAWo8M,EAAQA,EAAQ,OAAS,CAAC,EAAE,OAASyB,GAAwB,CACzG4B,EAAA,EACAW,EAAA,EACA,MACJ,CAEAP,EAAqB7/M,CAAQ,EAE7B2+M,EAAkB,QAAU,sBAAsB+B,CAAsB,CAC5E,EAAG,CAACL,EAAoBjC,EAAoBhC,EAASqD,EAAcW,EAAcP,EAAsB9/M,CAAY,CAAC,EAG9G4gN,EAAmBlqN,EAAAA,YAAY,IAC1BsJ,IAAiB3B,GAAa,QAAU,QAAU,OAC1D,CAAC2B,CAAY,CAAC,EAGX6gN,EAAanqN,EAAAA,YAAY,IAAM,CACjCgpN,EAAA,EACAW,EAAA,CACJ,EAAG,CAACrgN,EAAco+M,EAAiBl+M,EAAYq+M,EAAemB,CAAY,CAAC,EAG3E,MAAO,CACH,QAAAX,EACA,aAAAE,EACA,iBAAA2B,EACA,WAAAR,EACA,gBAAAD,EACA,WAAAU,CAAA,CAER,CCtUA,SAASC,IAAc,CACnB,MAAMpiN,EAAQrB,GAAS,IAAI,MAAA,EACrB2C,EAAe3C,GAAS,IAAI,aAAA,EAC5Bo/M,EAAkBp/M,GAAS,IAAI,gBAAA,EAC/Bm/M,EAAsBn/M,GAAS,IAAI,oBAAA,EACnC4gN,EAAqBh1M,EAAAA,QAAQ,KACxBvK,GAAA,YAAAA,EAAO,mBAAmB,OAAOgyK,GAAS,OAAO,OAAO8rC,CAAmB,EAAE,SAAS9rC,EAAM,KAAK,KAAM,CAAA,EAC/G,CAAChyK,EAAO89M,CAAmB,CAAC,EAEzB,CACF,QAAAuC,EACA,iBAAA6B,EACA,WAAAR,EACA,gBAAAD,EACA,WAAAU,CAAA,EACA9C,IAAkBr/M,GAAA,YAAAA,EAAO,WAAY,KAAMu/M,EAAoBv/M,GAAA,YAAAA,EAAO,WAAW,EAI/EqiN,EAAa93M,EAAAA,QAAQ,UACtBk/H,GAAA,CAAQ,MAAM,OAAO,SAAA4wE,EAAAA,IAACx7I,GAAA,CAAO,KAAOw7I,MAAC3pB,GAAA,CAAkB,MAAO,CAAE,SAAU,QAAU,EAAK,QAASgxB,EAAY,SAAU,CAACrB,CAAA,CAAQ,CAAA,CAAE,EACtI,CAACA,EAASqB,CAAU,CAAA,EAEhBY,EAAa/3M,EAAAA,QAAQ,IACvB8vM,EAAAA,IAAC5wE,GAAA,CAAQ,MAAM,OAAO,SAAA4wE,EAAAA,IAACx7I,IAAO,KAAOw7I,EAAAA,IAAC7qB,GAAA,CAAmB,MAAO,CAAE,SAAU,MAAA,EAAU,EAAK,QAAS2yB,EAAW,EAAE,EACnH,CAACA,CAAU,CAAA,EAEPI,EAAch4M,EAAAA,QAAQ,IACxB8vM,EAAAA,IAAC5wE,GAAA,CAAQ,MAAOy4E,EAAA,EAAoB,eAACrjJ,GAAA,CAAO,WAAQ2xH,GAAA,CAAmB,MAAO,CAAE,SAAU,QAAU,EAAK,QAASixB,EAAiB,EAAE,EACvI,CAACS,EAAkBT,CAAe,CAAA,EAG9Be,EAAej4M,EAAAA,QAAQ,IACzBvK,GAAA,MAAAA,EAAO,SACPq6M,EAAAA,IAAC,OAAI,MAAO,CAAE,SAAU,WAAY,OAAQ,EAAG,MAAO,EAAG,QAAS,KAAA,EAC9D,gBAAC58B,GAAA,CAAM,UAAU,aAAa,KAAK,QAC9B,SAAA,CAAAn8K,IAAiB3B,GAAa,QAAU2iN,EAAa,KACrDhhN,IAAiB3B,GAAa,QAAU4iN,EAAcF,CAAA,CAAA,CAC3D,EACJ,EAAS,KACb,CAACriN,EAAOsB,EAAc+gN,EAAYC,EAAYC,CAAW,CAAA,EAGzD,OACInI,EAAAA,KAAC,OAAI,MAAO,CAAE,MAAO,MAAO,OAAQ,OAC/B,SAAA,EAAA2D,GAAA,YAAAA,EAAiB,UACd1D,MAACqD,GAAA,CAAkB,QAASK,EAAgB,QAAS,EAExDyE,CAAA,EACL,CAER,CCpEA,MAAMC,GAAU,CAAC,OAAQ,OAAQ,OAAQ,QAAS,MAAO,SAAU,OAAQ,MAAO,UAAW,WAAY,MAAO,SAAS,EAGlH,SAASC,IAAsB,OAEpC,KAAM,CAAE,EAAAxgO,CAAA,EAAM+V,GAAe,QAAQ,EAE/B0J,EAAgBhD,GAAS,IAAI,cAAA,EAC7BgkN,EAAsBhkN,GAAS,IAAI,oBAAA,EACnCikN,GAAa78N,EAAA4Y,GAAS,IAAI,MAAA,IAAb,YAAA5Y,EAAsB,eAGnC88N,EAAuB7qN,cAAa9H,GAAiD,CACzF,MAAM4yN,EAAoB5yN,EAAK,aAAa,cAAc,EACpD6yN,EAAeD,GAAA,YAAAA,EAAmB,QAAQ,IAAK,IAErD,OAAOF,GAAA,YAAAA,EAAY,KAAM5mM,GAAA,OACvB,OAAA9rB,EAAK,KAAO8rB,EAAK,IAChB+mM,GAAgB,QAAQh9N,EAAAi2B,EAAK,aAAL,YAAAj2B,EAAiB,SAASg9N,KAEvD,EAAG,CAACH,CAAU,CAAC,EAETI,EAAahrN,cAAarU,GAA8C,CAC5E,QAASX,KAAKy/N,GAAS,CACrB,MAAMQ,EAAUt/N,EAAO,QAAQ,IAAIX,CAAC,EAAE,EAChCkgO,EAAqBD,EAAUJ,EAAqBI,CAAO,EAAI,KAErE,GAAIC,EACF,OAAOA,CAEX,CACA,OAAO,IACX,EAAG,CAACL,EAAqBF,CAAmB,CAAC,EAErCQ,EAAqBnrN,cAAarR,GAAyC,CAC/E,GAAI,CAACgb,EAAe,OAGpB,MAAM4K,EAAU5lB,EAAM,OAChBhD,EAASq/N,EAAWz2M,CAAO,EACjC,GAAI5oB,EACFg/N,EAAoBh/N,EAAO,EAAE,MACxB,CACL,MAAMy/N,EAAK72M,EAAQ,QAAQ,eAAe,EACpC82M,EAAeD,GAAA,YAAAA,EAAI,cACzB,GAAIC,GAAgB,CAAC,GAAGA,EAAa,UAAU,OAAA,CAAQ,EAAE,KAAKv+N,GAAK29N,GAAQ,SAAS39N,CAAC,CAAC,EAAG,CACvF,MAAMo+N,EAAqBL,EAAqBQ,CAAY,EACxDH,GACFP,EAAoBO,EAAmB,EAAE,CAE7C,CACF,CACF,EAAG,CAACvhN,EAAekhN,EAAsBF,CAAmB,CAAC,EAGvDW,EAAatrN,cAAanS,GAAyB,CACvD,OAAQA,EAAA,CACN,IAAK,OAAQ,OAAO3D,EAAE,2BAA2B,EACjD,IAAK,UAAW,OAAOA,EAAE,8BAA8B,EACvD,IAAK,SAAU,OAAOA,EAAE,6BAA6B,EACrD,IAAK,MAAO,OAAOA,EAAE,0BAA0B,EAC/C,IAAK,MAAO,OAAOA,EAAE,0BAA0B,EAC/C,IAAK,MAAO,OAAOA,EAAE,0BAA0B,EAC/C,IAAK,MAAO,OAAOA,EAAE,0BAA0B,EAC/C,IAAK,WAAY,OAAOA,EAAE,+BAA+B,EACzD,IAAK,MAAO,OAAOA,EAAE,0BAA0B,EAC/C,IAAK,qBAAsB,OAAOA,EAAE,iCAAiC,EACrE,QAAS,OAAOA,EAAE,+BAAgC,CAAE,KAAA2D,EAAM,CAAA,CAE9D,EAAG,CAAC3D,CAAC,CAAC,EAEN,MAAO,CACL,cAAAyf,EACA,WAAAihN,EACA,mBAAAO,EACA,WAAAG,EACA,qBAAAT,CAAA,CAEJ,CC3EA,SAAwBU,GAAoBC,EAAelvL,EAAgB,UAAWi3B,EAAiB,EAAG,CAsBxG,MAAO,CACL,mBApBA6uJ,EAAAA,KAAC,MAAA,CAAI,MAAM,6BAA6B,MAAO,CAAE,OAAQ,MAAO,MAAO,KAAA,EACrE,SAAA,CAAAC,MAAC,OAAA,CACE,SAAAuC,GAAU,QAAStoL,EAAOi3B,CAAM,EACnC,EACA8uJ,EAAAA,IAAC,UAAA,CACC,GAAG,yBACH,UAAU,gBACV,cAAc,SACd,MAAO,GAAGmJ,CAAK,aACf,KAAK,IACL,GAAG,KACH,IAAI,OACJ,KAAK,SACL,YAAY,IACZ,QAAQ,eAAA,CAAA,CACV,EACF,CAIA,CAEJ,CC3BA,SAASC,GAAiB,CAAE,MAAAD,GAA4B,CACtD,KAAM,CAAE,mBAAAE,CAAA,EAAuBH,GAAoBC,CAAK,EAExD,OACEnJ,MAAC,OAAI,MAAO,CAAE,OAAQ,MAAO,MAAO,KAAA,EACjC,SAAAqJ,CAAA,CACH,CAEJ,CCPA,MAAMn+K,GAAM,KAAK,IACX/R,GAAM,KAAK,IACXP,GAAQ,KAAK,MACb0wL,GAAQ,KAAK,MACbC,GAAep8N,IAAM,CACzB,EAAGA,EACH,EAAGA,CACL,GACMq8N,GAAkB,CACtB,KAAM,QACN,MAAO,OACP,OAAQ,MACR,IAAK,QACP,EACMC,GAAuB,CAC3B,MAAO,MACP,IAAK,OACP,EACA,SAASC,GAAMxzF,EAAO9sI,EAAOmhC,EAAK,CAChC,OAAO4O,GAAI+8F,EAAOhrF,GAAI9hD,EAAOmhC,CAAG,CAAC,CACnC,CACA,SAASo/L,GAASvgO,EAAOsuG,EAAO,CAC9B,OAAO,OAAOtuG,GAAU,WAAaA,EAAMsuG,CAAK,EAAItuG,CACtD,CACA,SAASwgO,GAAQn9G,EAAW,CAC1B,OAAOA,EAAU,MAAM,GAAG,EAAE,CAAC,CAC/B,CACA,SAASo9G,GAAap9G,EAAW,CAC/B,OAAOA,EAAU,MAAM,GAAG,EAAE,CAAC,CAC/B,CACA,SAASq9G,GAAgBC,EAAM,CAC7B,OAAOA,IAAS,IAAM,IAAM,GAC9B,CACA,SAASC,GAAcD,EAAM,CAC3B,OAAOA,IAAS,IAAM,SAAW,OACnC,CACA,MAAME,GAA0B,IAAI,IAAI,CAAC,MAAO,QAAQ,CAAC,EACzD,SAASC,GAAYz9G,EAAW,CAC9B,OAAOw9G,GAAW,IAAIL,GAAQn9G,CAAS,CAAC,EAAI,IAAM,GACpD,CACA,SAAS09G,GAAiB19G,EAAW,CACnC,OAAOq9G,GAAgBI,GAAYz9G,CAAS,CAAC,CAC/C,CACA,SAAS29G,GAAkB39G,EAAW49G,EAAOpiG,EAAK,CAC5CA,IAAQ,SACVA,EAAM,IAER,MAAMqiG,EAAYT,GAAap9G,CAAS,EAClC89G,EAAgBJ,GAAiB19G,CAAS,EAC1C5hF,EAASm/L,GAAcO,CAAa,EAC1C,IAAIC,EAAoBD,IAAkB,IAAMD,KAAeriG,EAAM,MAAQ,SAAW,QAAU,OAASqiG,IAAc,QAAU,SAAW,MAC9I,OAAID,EAAM,UAAUx/L,CAAM,EAAIw/L,EAAM,SAASx/L,CAAM,IACjD2/L,EAAoBC,GAAqBD,CAAiB,GAErD,CAACA,EAAmBC,GAAqBD,CAAiB,CAAC,CACpE,CACA,SAASE,GAAsBj+G,EAAW,CACxC,MAAMk+G,EAAoBF,GAAqBh+G,CAAS,EACxD,MAAO,CAACm+G,GAA8Bn+G,CAAS,EAAGk+G,EAAmBC,GAA8BD,CAAiB,CAAC,CACvH,CACA,SAASC,GAA8Bn+G,EAAW,CAChD,OAAOA,EAAU,QAAQ,aAAc69G,GAAab,GAAqBa,CAAS,CAAC,CACrF,CACA,MAAMO,GAAc,CAAC,OAAQ,OAAO,EAC9BC,GAAc,CAAC,QAAS,MAAM,EAC9BC,GAAc,CAAC,MAAO,QAAQ,EAC9BC,GAAc,CAAC,SAAU,KAAK,EACpC,SAASC,GAAYC,EAAMC,EAASljG,EAAK,CACvC,OAAQijG,EAAI,CACV,IAAK,MACL,IAAK,SACH,OAAIjjG,EAAYkjG,EAAUL,GAAcD,GACjCM,EAAUN,GAAcC,GACjC,IAAK,OACL,IAAK,QACH,OAAOK,EAAUJ,GAAcC,GACjC,QACE,MAAO,CAAA,CACb,CACA,CACA,SAASI,GAA0B3+G,EAAW4+G,EAAezoL,EAAWqlF,EAAK,CAC3E,MAAMqiG,EAAYT,GAAap9G,CAAS,EACxC,IAAIp8E,EAAO46L,GAAYrB,GAAQn9G,CAAS,EAAG7pE,IAAc,QAASqlF,CAAG,EACrE,OAAIqiG,IACFj6L,EAAOA,EAAK,IAAI66L,GAAQA,EAAO,IAAMZ,CAAS,EAC1Ce,IACFh7L,EAAOA,EAAK,OAAOA,EAAK,IAAIu6L,EAA6B,CAAC,IAGvDv6L,CACT,CACA,SAASo6L,GAAqBh+G,EAAW,CACvC,OAAOA,EAAU,QAAQ,yBAA0By+G,GAAQ1B,GAAgB0B,CAAI,CAAC,CAClF,CACA,SAASI,GAAoBl8H,EAAS,CACpC,MAAO,CACL,IAAK,EACL,MAAO,EACP,OAAQ,EACR,KAAM,EACN,GAAGA,CACP,CACA,CACA,SAASm8H,GAAiBn8H,EAAS,CACjC,OAAO,OAAOA,GAAY,SAAWk8H,GAAoBl8H,CAAO,EAAI,CAClE,IAAKA,EACL,MAAOA,EACP,OAAQA,EACR,KAAMA,CACV,CACA,CACA,SAASo8H,GAAiBz1M,EAAM,CAC9B,KAAM,CACJ,EAAAH,EACA,EAAAC,EACA,MAAAT,EACA,OAAAC,CACJ,EAAMU,EACJ,MAAO,CACL,MAAAX,EACA,OAAAC,EACA,IAAKQ,EACL,KAAMD,EACN,MAAOA,EAAIR,EACX,OAAQS,EAAIR,EACZ,EAAAO,EACA,EAAAC,CACJ,CACA,CCrIA,SAAS41M,GAA2BvrN,EAAMusG,EAAWwb,EAAK,CACxD,GAAI,CACF,UAAAt7F,EACA,SAAA++L,CACJ,EAAMxrN,EACJ,MAAMyrN,EAAWzB,GAAYz9G,CAAS,EAChC89G,EAAgBJ,GAAiB19G,CAAS,EAC1Cm/G,EAAc5B,GAAcO,CAAa,EACzCW,EAAOtB,GAAQn9G,CAAS,EACxBshG,EAAa4d,IAAa,IAC1BE,EAAUl/L,EAAU,EAAIA,EAAU,MAAQ,EAAI++L,EAAS,MAAQ,EAC/DI,EAAUn/L,EAAU,EAAIA,EAAU,OAAS,EAAI++L,EAAS,OAAS,EACjEK,EAAcp/L,EAAUi/L,CAAW,EAAI,EAAIF,EAASE,CAAW,EAAI,EACzE,IAAII,EACJ,OAAQd,EAAI,CACV,IAAK,MACHc,EAAS,CACP,EAAGH,EACH,EAAGl/L,EAAU,EAAI++L,EAAS,MAClC,EACM,MACF,IAAK,SACHM,EAAS,CACP,EAAGH,EACH,EAAGl/L,EAAU,EAAIA,EAAU,MACnC,EACM,MACF,IAAK,QACHq/L,EAAS,CACP,EAAGr/L,EAAU,EAAIA,EAAU,MAC3B,EAAGm/L,CACX,EACM,MACF,IAAK,OACHE,EAAS,CACP,EAAGr/L,EAAU,EAAI++L,EAAS,MAC1B,EAAGI,CACX,EACM,MACF,QACEE,EAAS,CACP,EAAGr/L,EAAU,EACb,EAAGA,EAAU,CACrB,CACA,CACE,OAAQk9L,GAAap9G,CAAS,EAAC,CAC7B,IAAK,QACHu/G,EAAOzB,CAAa,GAAKwB,GAAe9jG,GAAO8lF,EAAa,GAAK,GACjE,MACF,IAAK,MACHie,EAAOzB,CAAa,GAAKwB,GAAe9jG,GAAO8lF,EAAa,GAAK,GACjE,KACN,CACE,OAAOie,CACT,CASA,MAAMC,GAAkB,MAAOt/L,EAAW++L,EAAU3mN,IAAW,CAC7D,KAAM,CACJ,UAAA0nG,EAAY,SACZ,SAAAy/G,EAAW,WACX,WAAAC,EAAa,CAAA,EACb,SAAAC,CACJ,EAAMrnN,EACEsnN,EAAkBF,EAAW,OAAO,OAAO,EAC3ClkG,EAAM,MAAOmkG,EAAS,OAAS,KAAO,OAASA,EAAS,MAAMV,CAAQ,GAC5E,IAAIrB,EAAQ,MAAM+B,EAAS,gBAAgB,CACzC,UAAAz/L,EACA,SAAA++L,EACA,SAAAQ,CACJ,CAAG,EACG,CACF,EAAAt2M,EACA,EAAAC,CACJ,EAAM41M,GAA2BpB,EAAO59G,EAAWwb,CAAG,EAChDqkG,EAAoB7/G,EACpB8/G,EAAiB,CAAA,EACjBruI,EAAa,EACjB,QAASlzF,EAAI,EAAGA,EAAIqhO,EAAgB,OAAQrhO,IAAK,CAC/C,KAAM,CACJ,KAAA8L,EACA,GAAAR,CACN,EAAQ+1N,EAAgBrhO,CAAC,EACf,CACJ,EAAGwhO,EACH,EAAGC,EACH,KAAAvjO,EACA,MAAAwjO,CACN,EAAQ,MAAMp2N,EAAG,CACX,EAAAsf,EACA,EAAAC,EACA,iBAAkB42F,EAClB,UAAW6/G,EACX,SAAAJ,EACA,eAAAK,EACA,MAAAlC,EACA,SAAA+B,EACA,SAAU,CACR,UAAAz/L,EACA,SAAA++L,CACR,CACA,CAAK,EACD91M,EAAI42M,GAAwB52M,EAC5BC,EAAI42M,GAAwB52M,EAC5B02M,EAAiB,CACf,GAAGA,EACH,CAACz1N,CAAI,EAAG,CACN,GAAGy1N,EAAez1N,CAAI,EACtB,GAAG5N,CACX,CACA,EACQwjO,GAASxuI,GAAc,KACzBA,IACI,OAAOwuI,GAAU,WACfA,EAAM,YACRJ,EAAoBI,EAAM,WAExBA,EAAM,QACRrC,EAAQqC,EAAM,QAAU,GAAO,MAAMN,EAAS,gBAAgB,CAC5D,UAAAz/L,EACA,SAAA++L,EACA,SAAAQ,CACZ,CAAW,EAAIQ,EAAM,OAEZ,CACC,EAAA92M,EACA,EAAAC,CACV,EAAY41M,GAA2BpB,EAAOiC,EAAmBrkG,CAAG,GAE9Dj9H,EAAI,GAER,CACA,MAAO,CACL,EAAA4qB,EACA,EAAAC,EACA,UAAWy2M,EACX,SAAAJ,EACA,eAAAK,CACJ,CACA,EAUA,eAAeI,GAAelpN,EAAO5X,EAAS,CAC5C,IAAI+gO,EACA/gO,IAAY,SACdA,EAAU,CAAA,GAEZ,KAAM,CACJ,EAAA+pB,EACA,EAAAC,EACA,SAAAu2M,EACA,MAAA/B,EACA,SAAAx+J,EACA,SAAAqgK,CACJ,EAAMzoN,EACE,CACJ,SAAAopN,EAAW,oBACX,aAAAC,EAAe,WACf,eAAAC,EAAiB,WACjB,YAAAC,EAAc,GACd,QAAA59H,EAAU,CACd,EAAMu6H,GAAS99N,EAAS4X,CAAK,EACrBwpN,EAAgB1B,GAAiBn8H,CAAO,EAExCl9E,EAAU25C,EAASmhK,EADND,IAAmB,WAAa,YAAc,WACbA,CAAc,EAC5DG,EAAqB1B,GAAiB,MAAMY,EAAS,gBAAgB,CACzE,SAAWQ,EAAwB,MAAOR,EAAS,WAAa,KAAO,OAASA,EAAS,UAAUl6M,CAAO,KAAO,MAAO06M,EAAgC16M,EAAUA,EAAQ,gBAAmB,MAAOk6M,EAAS,oBAAsB,KAAO,OAASA,EAAS,mBAAmBvgK,EAAS,QAAQ,GAChS,SAAAghK,EACA,aAAAC,EACA,SAAAZ,CACJ,CAAG,CAAC,EACIn2M,EAAOg3M,IAAmB,WAAa,CAC3C,EAAAn3M,EACA,EAAAC,EACA,MAAOw0M,EAAM,SAAS,MACtB,OAAQA,EAAM,SAAS,MAC3B,EAAMA,EAAM,UACJ8C,EAAe,MAAOf,EAAS,iBAAmB,KAAO,OAASA,EAAS,gBAAgBvgK,EAAS,QAAQ,GAC5GuhK,EAAe,MAAOhB,EAAS,WAAa,KAAO,OAASA,EAAS,UAAUe,CAAY,GAAO,MAAOf,EAAS,UAAY,KAAO,OAASA,EAAS,SAASe,CAAY,IAAO,CACvL,EAAG,EACH,EAAG,CACP,EAAM,CACF,EAAG,EACH,EAAG,CACP,EACQE,EAAoB7B,GAAiBY,EAAS,sDAAwD,MAAMA,EAAS,sDAAsD,CAC/K,SAAAvgK,EACA,KAAA91C,EACA,aAAAo3M,EACA,SAAAjB,CACJ,CAAG,EAAIn2M,CAAI,EACT,MAAO,CACL,KAAMm3M,EAAmB,IAAMG,EAAkB,IAAMJ,EAAc,KAAOG,EAAY,EACxF,QAASC,EAAkB,OAASH,EAAmB,OAASD,EAAc,QAAUG,EAAY,EACpG,MAAOF,EAAmB,KAAOG,EAAkB,KAAOJ,EAAc,MAAQG,EAAY,EAC5F,OAAQC,EAAkB,MAAQH,EAAmB,MAAQD,EAAc,OAASG,EAAY,CACpG,CACA,CAOA,MAAMpkH,GAAQn9G,IAAY,CACxB,KAAM,QACN,QAAAA,EACA,MAAM,GAAG4X,EAAO,CACd,KAAM,CACJ,EAAAmS,EACA,EAAAC,EACA,UAAA42F,EACA,MAAA49G,EACA,SAAA+B,EACA,SAAAvgK,EACA,eAAA0gK,CACN,EAAQ9oN,EAEE,CACJ,QAAAyO,EACA,QAAAk9E,EAAU,CAChB,EAAQu6H,GAAS99N,EAAS4X,CAAK,GAAK,CAAA,EAChC,GAAIyO,GAAW,KACb,MAAO,CAAA,EAET,MAAM+6M,EAAgB1B,GAAiBn8H,CAAO,EACxC48H,EAAS,CACb,EAAAp2M,EACA,EAAAC,CACN,EACUk0M,EAAOI,GAAiB19G,CAAS,EACjC5hF,EAASm/L,GAAcD,CAAI,EAC3BuD,EAAkB,MAAMlB,EAAS,cAAcl6M,CAAO,EACtDq7M,EAAUxD,IAAS,IACnByD,EAAUD,EAAU,MAAQ,OAC5BE,EAAUF,EAAU,SAAW,QAC/BG,EAAaH,EAAU,eAAiB,cACxCI,EAAUtD,EAAM,UAAUx/L,CAAM,EAAIw/L,EAAM,UAAUN,CAAI,EAAIiC,EAAOjC,CAAI,EAAIM,EAAM,SAASx/L,CAAM,EAChG+iM,EAAY5B,EAAOjC,CAAI,EAAIM,EAAM,UAAUN,CAAI,EAC/C8D,EAAoB,MAAOzB,EAAS,iBAAmB,KAAO,OAASA,EAAS,gBAAgBl6M,CAAO,GAC7G,IAAI47M,EAAaD,EAAoBA,EAAkBH,CAAU,EAAI,GAGjE,CAACI,GAAc,CAAE,MAAO1B,EAAS,WAAa,KAAO,OAASA,EAAS,UAAUyB,CAAiB,MACpGC,EAAajiK,EAAS,SAAS6hK,CAAU,GAAKrD,EAAM,SAASx/L,CAAM,GAErE,MAAMkjM,EAAoBJ,EAAU,EAAIC,EAAY,EAI9CI,EAAyBF,EAAa,EAAIR,EAAgBziM,CAAM,EAAI,EAAI,EACxEojM,EAAa/iL,GAAI+hL,EAAcO,CAAO,EAAGQ,CAAsB,EAC/DE,EAAahjL,GAAI+hL,EAAcQ,CAAO,EAAGO,CAAsB,EAI/DG,EAAQF,EACR90L,EAAM20L,EAAaR,EAAgBziM,CAAM,EAAIqjM,EAC7CE,EAASN,EAAa,EAAIR,EAAgBziM,CAAM,EAAI,EAAIkjM,EACxD3hM,EAASs9L,GAAMyE,EAAOC,EAAQj1L,CAAG,EAMjCk1L,EAAkB,CAAC9B,EAAe,OAAS1C,GAAap9G,CAAS,GAAK,MAAQ2hH,IAAWhiM,GAAUi+L,EAAM,UAAUx/L,CAAM,EAAI,GAAKujM,EAASD,EAAQF,EAAaC,GAAcZ,EAAgBziM,CAAM,EAAI,EAAI,EAC5MyjM,EAAkBD,EAAkBD,EAASD,EAAQC,EAASD,EAAQC,EAASj1L,EAAM,EAC3F,MAAO,CACL,CAAC4wL,CAAI,EAAGiC,EAAOjC,CAAI,EAAIuE,EACvB,KAAM,CACJ,CAACvE,CAAI,EAAG39L,EACR,aAAcgiM,EAAShiM,EAASkiM,EAChC,GAAID,GAAmB,CACrB,gBAAAC,CACV,CACA,EACM,MAAOD,CACb,CACE,CACF,GA+GME,GAAO,SAAU1iO,EAAS,CAC9B,OAAIA,IAAY,SACdA,EAAU,CAAA,GAEL,CACL,KAAM,OACN,QAAAA,EACA,MAAM,GAAG4X,EAAO,CACd,IAAI+qN,EAAuBC,EAC3B,KAAM,CACJ,UAAAhiH,EACA,eAAA8/G,EACA,MAAAlC,EACA,iBAAAqE,EACA,SAAAtC,EACA,SAAAvgK,CACR,EAAUpoD,EACE,CACJ,SAAUkrN,EAAgB,GAC1B,UAAWC,EAAiB,GAC5B,mBAAoBC,EACpB,iBAAAC,EAAmB,UACnB,0BAAAC,EAA4B,OAC5B,cAAA1D,EAAgB,GAChB,GAAG2D,CACX,EAAUrF,GAAS99N,EAAS4X,CAAK,EAM3B,IAAK+qN,EAAwBjC,EAAe,QAAU,MAAQiC,EAAsB,gBAClF,MAAO,CAAA,EAET,MAAMtD,EAAOtB,GAAQn9G,CAAS,EACxBwiH,EAAkB/E,GAAYwE,CAAgB,EAC9CQ,EAAkBtF,GAAQ8E,CAAgB,IAAMA,EAChDzmG,EAAM,MAAOmkG,EAAS,OAAS,KAAO,OAASA,EAAS,MAAMvgK,EAAS,QAAQ,GAC/EsjK,EAAqBN,IAAgCK,GAAmB,CAAC7D,EAAgB,CAACZ,GAAqBiE,CAAgB,CAAC,EAAIhE,GAAsBgE,CAAgB,GAC1KU,EAA+BL,IAA8B,OAC/D,CAACF,GAA+BO,GAClCD,EAAmB,KAAK,GAAG/D,GAA0BsD,EAAkBrD,EAAe0D,EAA2B9mG,CAAG,CAAC,EAEvH,MAAM1b,EAAa,CAACmiH,EAAkB,GAAGS,CAAkB,EACrDjiH,EAAW,MAAMy/G,GAAelpN,EAAOurN,CAAqB,EAC5DK,EAAY,CAAA,EAClB,IAAIC,IAAkBb,EAAuBlC,EAAe,OAAS,KAAO,OAASkC,EAAqB,YAAc,CAAA,EAIxH,GAHIE,GACFU,EAAU,KAAKniH,EAASg+G,CAAI,CAAC,EAE3B0D,EAAgB,CAClB,MAAMW,EAAQnF,GAAkB39G,EAAW49G,EAAOpiG,CAAG,EACrDonG,EAAU,KAAKniH,EAASqiH,EAAM,CAAC,CAAC,EAAGriH,EAASqiH,EAAM,CAAC,CAAC,CAAC,CACvD,CAOA,GANAD,EAAgB,CAAC,GAAGA,EAAe,CACjC,UAAA7iH,EACA,UAAA4iH,CACR,CAAO,EAGG,CAACA,EAAU,MAAMnE,GAAQA,GAAQ,CAAC,EAAG,CACvC,IAAIsE,EAAuBC,EAC3B,MAAMx0D,KAAeu0D,EAAwBjD,EAAe,OAAS,KAAO,OAASiD,EAAsB,QAAU,GAAK,EACpHE,EAAgBnjH,EAAW0uD,CAAS,EAC1C,GAAIy0D,IAEE,EAD4Bd,IAAmB,YAAcK,IAAoB/E,GAAYwF,CAAa,EAAI,KAIlHJ,EAAc,MAAM7sN,GAAKA,EAAE,UAAU,CAAC,EAAI,GAAKynN,GAAYznN,EAAE,SAAS,IAAMwsN,CAAe,GAEzF,MAAO,CACL,KAAM,CACJ,MAAOh0D,EACP,UAAWq0D,CAC3B,EACc,MAAO,CACL,UAAWI,CAC3B,CACA,EAMQ,IAAIC,GAAkBF,EAAwBH,EAAc,OAAO7sN,GAAKA,EAAE,UAAU,CAAC,GAAK,CAAC,EAAE,KAAK,CAAC9a,EAAG4kB,IAAM5kB,EAAE,UAAU,CAAC,EAAI4kB,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,IAAM,KAAO,OAASkjN,EAAsB,UAG1L,GAAI,CAACE,EACH,OAAQb,EAAgB,CACtB,IAAK,UACH,CACE,IAAIc,EACJ,MAAMnjH,GAAamjH,EAAyBN,EAAc,OAAO7sN,GAAK,CACpE,GAAI2sN,EAA8B,CAChC,MAAMS,EAAkB3F,GAAYznN,EAAE,SAAS,EAC/C,OAAOotN,IAAoBZ,GAG3BY,IAAoB,GACtB,CACA,MAAO,EACT,CAAC,EAAE,IAAIptN,GAAK,CAACA,EAAE,UAAWA,EAAE,UAAU,OAAOyqG,GAAYA,EAAW,CAAC,EAAE,OAAO,CAAC1xG,EAAK0xG,IAAa1xG,EAAM0xG,EAAU,CAAC,CAAC,CAAC,EAAE,KAAK,CAACvlH,EAAG4kB,IAAM5kB,EAAE,CAAC,EAAI4kB,EAAE,CAAC,CAAC,EAAE,CAAC,IAAM,KAAO,OAASqjN,EAAuB,CAAC,EAC7LnjH,IACFkjH,EAAiBljH,GAEnB,KACF,CACF,IAAK,mBACHkjH,EAAiBjB,EACjB,KACd,CAEQ,GAAIjiH,IAAckjH,EAChB,MAAO,CACL,MAAO,CACL,UAAWA,CACzB,CACA,CAEM,CACA,MAAO,CAAA,CACT,CACJ,CACA,EA0MMG,GAA2B,IAAI,IAAI,CAAC,OAAQ,KAAK,CAAC,EAKxD,eAAeC,GAAqBtsN,EAAO5X,EAAS,CAClD,KAAM,CACJ,UAAA4gH,EACA,SAAA2/G,EACA,SAAAvgK,CACJ,EAAMpoD,EACEwkH,EAAM,MAAOmkG,EAAS,OAAS,KAAO,OAASA,EAAS,MAAMvgK,EAAS,QAAQ,GAC/Eq/J,EAAOtB,GAAQn9G,CAAS,EACxB69G,EAAYT,GAAap9G,CAAS,EAClCshG,EAAamc,GAAYz9G,CAAS,IAAM,IACxCujH,EAAgBF,GAAY,IAAI5E,CAAI,EAAI,GAAK,EAC7C+E,EAAiBhoG,GAAO8lF,EAAa,GAAK,EAC1C3tE,EAAWupF,GAAS99N,EAAS4X,CAAK,EAGxC,GAAI,CACF,SAAAysN,EACA,UAAAC,EACA,cAAA5F,CACJ,EAAM,OAAOnqF,GAAa,SAAW,CACjC,SAAUA,EACV,UAAW,EACX,cAAe,IACnB,EAAM,CACF,SAAUA,EAAS,UAAY,EAC/B,UAAWA,EAAS,WAAa,EACjC,cAAeA,EAAS,aAC5B,EACE,OAAIkqF,GAAa,OAAOC,GAAkB,WACxC4F,EAAY7F,IAAc,MAAQC,EAAgB,GAAKA,GAElDxc,EAAa,CAClB,EAAGoiB,EAAYF,EACf,EAAGC,EAAWF,CAClB,EAAM,CACF,EAAGE,EAAWF,EACd,EAAGG,EAAYF,CACnB,CACA,CASA,MAAM7jM,GAAS,SAAUvgC,EAAS,CAChC,OAAIA,IAAY,SACdA,EAAU,GAEL,CACL,KAAM,SACN,QAAAA,EACA,MAAM,GAAG4X,EAAO,CACd,IAAI2sN,EAAuB5B,EAC3B,KAAM,CACJ,EAAA54M,EACA,EAAAC,EACA,UAAA42F,EACA,eAAA8/G,CACR,EAAU9oN,EACE4sN,EAAa,MAAMN,GAAqBtsN,EAAO5X,CAAO,EAI5D,OAAI4gH,MAAgB2jH,EAAwB7D,EAAe,SAAW,KAAO,OAAS6D,EAAsB,aAAe5B,EAAwBjC,EAAe,QAAU,MAAQiC,EAAsB,gBACjM,CAAA,EAEF,CACL,EAAG54M,EAAIy6M,EAAW,EAClB,EAAGx6M,EAAIw6M,EAAW,EAClB,KAAM,CACJ,GAAGA,EACH,UAAA5jH,CACV,CACA,CACI,CACJ,CACA,EAOM6jH,GAAQ,SAAUzkO,EAAS,CAC/B,OAAIA,IAAY,SACdA,EAAU,CAAA,GAEL,CACL,KAAM,QACN,QAAAA,EACA,MAAM,GAAG4X,EAAO,CACd,KAAM,CACJ,EAAAmS,EACA,EAAAC,EACA,UAAA42F,CACR,EAAUhpG,EACE,CACJ,SAAUkrN,EAAgB,GAC1B,UAAWC,EAAiB,GAC5B,QAAA2B,EAAU,CACR,GAAIrwN,GAAQ,CACV,GAAI,CACF,EAAA0V,EACA,CACd,EAAgB1V,EACJ,MAAO,CACL,EAAA0V,EACA,CACd,CACU,CACV,EACQ,GAAGo5M,CACX,EAAUrF,GAAS99N,EAAS4X,CAAK,EACrBuoN,EAAS,CACb,EAAAp2M,EACA,EAAAC,CACR,EACYq3F,EAAW,MAAMy/G,GAAelpN,EAAOurN,CAAqB,EAC5DmB,EAAYjG,GAAYN,GAAQn9G,CAAS,CAAC,EAC1CyjH,EAAWpG,GAAgBqG,CAAS,EAC1C,IAAIK,EAAgBxE,EAAOkE,CAAQ,EAC/BO,EAAiBzE,EAAOmE,CAAS,EACrC,GAAIxB,EAAe,CACjB,MAAM+B,EAAUR,IAAa,IAAM,MAAQ,OACrCS,EAAUT,IAAa,IAAM,SAAW,QACxChlL,EAAMslL,EAAgBtjH,EAASwjH,CAAO,EACtCv3L,EAAMq3L,EAAgBtjH,EAASyjH,CAAO,EAC5CH,EAAgB9G,GAAMx+K,EAAKslL,EAAer3L,CAAG,CAC/C,CACA,GAAIy1L,EAAgB,CAClB,MAAM8B,EAAUP,IAAc,IAAM,MAAQ,OACtCQ,EAAUR,IAAc,IAAM,SAAW,QACzCjlL,EAAMulL,EAAiBvjH,EAASwjH,CAAO,EACvCv3L,EAAMs3L,EAAiBvjH,EAASyjH,CAAO,EAC7CF,EAAiB/G,GAAMx+K,EAAKulL,EAAgBt3L,CAAG,CACjD,CACA,MAAMy3L,EAAgBL,EAAQ,GAAG,CAC/B,GAAG9sN,EACH,CAACysN,CAAQ,EAAGM,EACZ,CAACL,CAAS,EAAGM,CACrB,CAAO,EACD,MAAO,CACL,GAAGG,EACH,KAAM,CACJ,EAAGA,EAAc,EAAIh7M,EACrB,EAAGg7M,EAAc,EAAI/6M,EACrB,QAAS,CACP,CAACq6M,CAAQ,EAAGvB,EACZ,CAACwB,CAAS,EAAGvB,CACzB,CACA,CACA,CACI,CACJ,CACA,EC93BA,SAASiC,IAAY,CACnB,OAAO,OAAO,OAAW,GAC3B,CACA,SAASC,GAAY7kN,EAAM,CACzB,OAAI8kN,GAAO9kN,CAAI,GACLA,EAAK,UAAY,IAAI,YAAW,EAKnC,WACT,CACA,SAAS+kN,GAAU/kN,EAAM,CACvB,IAAIglN,EACJ,OAAQhlN,GAAQ,OAASglN,EAAsBhlN,EAAK,gBAAkB,KAAO,OAASglN,EAAoB,cAAgB,MAC5H,CACA,SAASC,GAAmBjlN,EAAM,CAChC,IAAI/L,EACJ,OAAQA,GAAQ6wN,GAAO9kN,CAAI,EAAIA,EAAK,cAAgBA,EAAK,WAAa,OAAO,WAAa,KAAO,OAAS/L,EAAK,eACjH,CACA,SAAS6wN,GAAO3nO,EAAO,CACrB,OAAKynO,GAAS,EAGPznO,aAAiB,MAAQA,aAAiB4nO,GAAU5nO,CAAK,EAAE,KAFzD,EAGX,CACA,SAASimB,GAAUjmB,EAAO,CACxB,OAAKynO,GAAS,EAGPznO,aAAiB,SAAWA,aAAiB4nO,GAAU5nO,CAAK,EAAE,QAF5D,EAGX,CACA,SAAS+nO,GAAc/nO,EAAO,CAC5B,OAAKynO,GAAS,EAGPznO,aAAiB,aAAeA,aAAiB4nO,GAAU5nO,CAAK,EAAE,YAFhE,EAGX,CACA,SAASgoO,GAAahoO,EAAO,CAC3B,MAAI,CAACynO,GAAS,GAAM,OAAO,WAAe,IACjC,GAEFznO,aAAiB,YAAcA,aAAiB4nO,GAAU5nO,CAAK,EAAE,UAC1E,CACA,MAAMioO,GAA4C,IAAI,IAAI,CAAC,SAAU,UAAU,CAAC,EAChF,SAASC,GAAkBp/M,EAAS,CAClC,KAAM,CACJ,SAAAg7F,EACA,UAAAF,EACA,UAAAC,EACA,QAAAhQ,CACJ,EAAMs0H,GAAiBr/M,CAAO,EAC5B,MAAO,kCAAkC,KAAKg7F,EAAWD,EAAYD,CAAS,GAAK,CAACqkH,GAA6B,IAAIp0H,CAAO,CAC9H,CACA,MAAMu0H,GAA6B,IAAI,IAAI,CAAC,QAAS,KAAM,IAAI,CAAC,EAChE,SAASC,GAAev/M,EAAS,CAC/B,OAAOs/M,GAAc,IAAIV,GAAY5+M,CAAO,CAAC,CAC/C,CACA,MAAMw/M,GAAoB,CAAC,gBAAiB,QAAQ,EACpD,SAASC,GAAWz/M,EAAS,CAC3B,OAAOw/M,GAAkB,KAAKntN,GAAY,CACxC,GAAI,CACF,OAAO2N,EAAQ,QAAQ3N,CAAQ,CACjC,MAAa,CACX,MAAO,EACT,CACF,CAAC,CACH,CACA,MAAMqtN,GAAsB,CAAC,YAAa,YAAa,QAAS,SAAU,aAAa,EACjFC,GAAmB,CAAC,YAAa,YAAa,QAAS,SAAU,cAAe,QAAQ,EACxFC,GAAgB,CAAC,QAAS,SAAU,SAAU,SAAS,EAC7D,SAASC,GAAkBC,EAAc,CACvC,MAAMC,EAASC,GAAQ,EACjBj1M,EAAM5N,GAAU2iN,CAAY,EAAIT,GAAiBS,CAAY,EAAIA,EAIvE,OAAOJ,GAAoB,KAAKxoO,GAAS6zB,EAAI7zB,CAAK,EAAI6zB,EAAI7zB,CAAK,IAAM,OAAS,EAAK,IAAM6zB,EAAI,cAAgBA,EAAI,gBAAkB,SAAW,KAAU,CAACg1M,IAAWh1M,EAAI,eAAiBA,EAAI,iBAAmB,OAAS,KAAU,CAACg1M,IAAWh1M,EAAI,OAASA,EAAI,SAAW,OAAS,KAAU40M,GAAiB,KAAKzoO,IAAU6zB,EAAI,YAAc,IAAI,SAAS7zB,CAAK,CAAC,GAAK0oO,GAAc,KAAK1oO,IAAU6zB,EAAI,SAAW,IAAI,SAAS7zB,CAAK,CAAC,CACza,CACA,SAAS+oO,GAAmBjgN,EAAS,CACnC,IAAIkgN,EAAcC,GAAcngN,CAAO,EACvC,KAAOi/M,GAAciB,CAAW,GAAK,CAACE,GAAsBF,CAAW,GAAG,CACxE,GAAIL,GAAkBK,CAAW,EAC/B,OAAOA,EACF,GAAIT,GAAWS,CAAW,EAC/B,OAAO,KAETA,EAAcC,GAAcD,CAAW,CACzC,CACA,OAAO,IACT,CACA,SAASF,IAAW,CAClB,OAAI,OAAO,IAAQ,KAAe,CAAC,IAAI,SAAiB,GACjD,IAAI,SAAS,0BAA2B,MAAM,CACvD,CACA,MAAMK,GAAwC,IAAI,IAAI,CAAC,OAAQ,OAAQ,WAAW,CAAC,EACnF,SAASD,GAAsBrmN,EAAM,CACnC,OAAOsmN,GAAyB,IAAIzB,GAAY7kN,CAAI,CAAC,CACvD,CACA,SAASslN,GAAiBr/M,EAAS,CACjC,OAAO8+M,GAAU9+M,CAAO,EAAE,iBAAiBA,CAAO,CACpD,CACA,SAASsgN,GAActgN,EAAS,CAC9B,OAAI7C,GAAU6C,CAAO,EACZ,CACL,WAAYA,EAAQ,WACpB,UAAWA,EAAQ,SACzB,EAES,CACL,WAAYA,EAAQ,QACpB,UAAWA,EAAQ,OACvB,CACA,CACA,SAASmgN,GAAcpmN,EAAM,CAC3B,GAAI6kN,GAAY7kN,CAAI,IAAM,OACxB,OAAOA,EAET,MAAMlf,EAENkf,EAAK,cAELA,EAAK,YAELmlN,GAAanlN,CAAI,GAAKA,EAAK,MAE3BilN,GAAmBjlN,CAAI,EACvB,OAAOmlN,GAAarkO,CAAM,EAAIA,EAAO,KAAOA,CAC9C,CACA,SAAS0lO,GAA2BxmN,EAAM,CACxC,MAAMgS,EAAao0M,GAAcpmN,CAAI,EACrC,OAAIqmN,GAAsBr0M,CAAU,EAC3BhS,EAAK,cAAgBA,EAAK,cAAc,KAAOA,EAAK,KAEzDklN,GAAclzM,CAAU,GAAKqzM,GAAkBrzM,CAAU,EACpDA,EAEFw0M,GAA2Bx0M,CAAU,CAC9C,CACA,SAASy0M,GAAqBzmN,EAAMokB,EAAMsiM,EAAiB,CACzD,IAAIC,EACAviM,IAAS,SACXA,EAAO,CAAA,GAELsiM,IAAoB,SACtBA,EAAkB,IAEpB,MAAME,EAAqBJ,GAA2BxmN,CAAI,EACpD6mN,EAASD,MAAyBD,EAAuB3mN,EAAK,gBAAkB,KAAO,OAAS2mN,EAAqB,MACrHttM,EAAM0rM,GAAU6B,CAAkB,EACxC,GAAIC,EAAQ,CACV,MAAMC,EAAeC,GAAgB1tM,CAAG,EACxC,OAAO+K,EAAK,OAAO/K,EAAKA,EAAI,gBAAkB,CAAA,EAAIgsM,GAAkBuB,CAAkB,EAAIA,EAAqB,CAAA,EAAIE,GAAgBJ,EAAkBD,GAAqBK,CAAY,EAAI,EAAE,CAC9L,CACA,OAAO1iM,EAAK,OAAOwiM,EAAoBH,GAAqBG,EAAoB,CAAA,EAAIF,CAAe,CAAC,CACtG,CACA,SAASK,GAAgB1tM,EAAK,CAC5B,OAAOA,EAAI,QAAU,OAAO,eAAeA,EAAI,MAAM,EAAIA,EAAI,aAAe,IAC9E,CCzJA,SAAS2tM,GAAiB/gN,EAAS,CACjC,MAAM+K,EAAMs0M,GAAiBr/M,CAAO,EAGpC,IAAIkD,EAAQ,WAAW6H,EAAI,KAAK,GAAK,EACjC5H,EAAS,WAAW4H,EAAI,MAAM,GAAK,EACvC,MAAMi2M,EAAY/B,GAAcj/M,CAAO,EACjCkH,EAAc85M,EAAYhhN,EAAQ,YAAckD,EAChDiE,EAAe65M,EAAYhhN,EAAQ,aAAemD,EAClD89M,EAAiBv6L,GAAMxjB,CAAK,IAAMgE,GAAewf,GAAMvjB,CAAM,IAAMgE,EACzE,OAAI85M,IACF/9M,EAAQgE,EACR/D,EAASgE,GAEJ,CACL,MAAAjE,EACA,OAAAC,EACA,EAAG89M,CACP,CACA,CAEA,SAASC,GAAclhN,EAAS,CAC9B,OAAQ7C,GAAU6C,CAAO,EAA6BA,EAAzBA,EAAQ,cACvC,CAEA,SAASmhN,GAASnhN,EAAS,CACzB,MAAMohN,EAAaF,GAAclhN,CAAO,EACxC,GAAI,CAACi/M,GAAcmC,CAAU,EAC3B,OAAO/J,GAAa,CAAC,EAEvB,MAAMxzM,EAAOu9M,EAAW,sBAAqB,EACvC,CACJ,MAAAl+M,EACA,OAAAC,EACA,EAAA++L,CACJ,EAAM6e,GAAiBK,CAAU,EAC/B,IAAI19M,GAAKw+L,EAAIx7K,GAAM7iB,EAAK,KAAK,EAAIA,EAAK,OAASX,EAC3CS,GAAKu+L,EAAIx7K,GAAM7iB,EAAK,MAAM,EAAIA,EAAK,QAAUV,EAIjD,OAAI,CAACO,GAAK,CAAC,OAAO,SAASA,CAAC,KAC1BA,EAAI,IAEF,CAACC,GAAK,CAAC,OAAO,SAASA,CAAC,KAC1BA,EAAI,GAEC,CACL,EAAAD,EACA,EAAAC,CACJ,CACA,CAEA,MAAM09M,GAAyBhK,GAAa,CAAC,EAC7C,SAASiK,GAAiBthN,EAAS,CACjC,MAAMoT,EAAM0rM,GAAU9+M,CAAO,EAC7B,MAAI,CAACggN,GAAQ,GAAM,CAAC5sM,EAAI,eACfiuM,GAEF,CACL,EAAGjuM,EAAI,eAAe,WACtB,EAAGA,EAAI,eAAe,SAC1B,CACA,CACA,SAASmuM,GAAuBvhN,EAASwhN,EAASC,EAAsB,CAItE,OAHID,IAAY,SACdA,EAAU,IAER,CAACC,GAAwBD,GAAWC,IAAyB3C,GAAU9+M,CAAO,EACzE,GAEFwhN,CACT,CAEA,SAASE,GAAsB1hN,EAAS2hN,EAAcC,EAAiB3G,EAAc,CAC/E0G,IAAiB,SACnBA,EAAe,IAEbC,IAAoB,SACtBA,EAAkB,IAEpB,MAAMC,EAAa7hN,EAAQ,sBAAqB,EAC1CohN,EAAaF,GAAclhN,CAAO,EACxC,IAAIvL,EAAQ4iN,GAAa,CAAC,EACtBsK,IACE1G,EACE99M,GAAU89M,CAAY,IACxBxmN,EAAQ0sN,GAASlG,CAAY,GAG/BxmN,EAAQ0sN,GAASnhN,CAAO,GAG5B,MAAM8hN,EAAgBP,GAAuBH,EAAYQ,EAAiB3G,CAAY,EAAIqG,GAAiBF,CAAU,EAAI/J,GAAa,CAAC,EACvI,IAAI3zM,GAAKm+M,EAAW,KAAOC,EAAc,GAAKrtN,EAAM,EAChDkP,GAAKk+M,EAAW,IAAMC,EAAc,GAAKrtN,EAAM,EAC/CyO,EAAQ2+M,EAAW,MAAQptN,EAAM,EACjC0O,EAAS0+M,EAAW,OAASptN,EAAM,EACvC,GAAI2sN,EAAY,CACd,MAAMhuM,EAAM0rM,GAAUsC,CAAU,EAC1BW,EAAY9G,GAAgB99M,GAAU89M,CAAY,EAAI6D,GAAU7D,CAAY,EAAIA,EACtF,IAAI+G,EAAa5uM,EACb6uM,EAAgBnB,GAAgBkB,CAAU,EAC9C,KAAOC,GAAiBhH,GAAgB8G,IAAcC,GAAY,CAChE,MAAME,EAAcf,GAASc,CAAa,EACpCE,EAAaF,EAAc,sBAAqB,EAChDl3M,EAAMs0M,GAAiB4C,CAAa,EACpC3zM,EAAO6zM,EAAW,MAAQF,EAAc,WAAa,WAAWl3M,EAAI,WAAW,GAAKm3M,EAAY,EAChGzjK,EAAM0jK,EAAW,KAAOF,EAAc,UAAY,WAAWl3M,EAAI,UAAU,GAAKm3M,EAAY,EAClGx+M,GAAKw+M,EAAY,EACjBv+M,GAAKu+M,EAAY,EACjBh/M,GAASg/M,EAAY,EACrB/+M,GAAU++M,EAAY,EACtBx+M,GAAK4K,EACL3K,GAAK86C,EACLujK,EAAalD,GAAUmD,CAAa,EACpCA,EAAgBnB,GAAgBkB,CAAU,CAC5C,CACF,CACA,OAAO1I,GAAiB,CACtB,MAAAp2M,EACA,OAAAC,EACA,EAAAO,EACA,EAAAC,CACJ,CAAG,CACH,CAIA,SAASy+M,GAAoBpiN,EAAS6D,EAAM,CAC1C,MAAMw+M,EAAa/B,GAActgN,CAAO,EAAE,WAC1C,OAAK6D,EAGEA,EAAK,KAAOw+M,EAFVX,GAAsB1C,GAAmBh/M,CAAO,CAAC,EAAE,KAAOqiN,CAGrE,CAEA,SAASC,GAAclnI,EAAiBmnI,EAAQC,EAAkB,CAC5DA,IAAqB,SACvBA,EAAmB,IAErB,MAAMC,EAAWrnI,EAAgB,sBAAqB,EAChD13E,EAAI++M,EAAS,KAAOF,EAAO,YAAcC,EAAmB,EAElEJ,GAAoBhnI,EAAiBqnI,CAAQ,GACvC9+M,EAAI8+M,EAAS,IAAMF,EAAO,UAChC,MAAO,CACL,EAAA7+M,EACA,EAAAC,CACJ,CACA,CAEA,SAAS++M,GAAsD10N,EAAM,CACnE,GAAI,CACF,SAAA2rD,EACA,KAAA91C,EACA,aAAAo3M,EACA,SAAAjB,CACJ,EAAMhsN,EACJ,MAAMwzN,EAAUxH,IAAa,QACvB5+H,EAAkB4jI,GAAmB/D,CAAY,EACjD0H,EAAWhpK,EAAW8lK,GAAW9lK,EAAS,QAAQ,EAAI,GAC5D,GAAIshK,IAAiB7/H,GAAmBunI,GAAYnB,EAClD,OAAO39M,EAET,IAAI0+M,EAAS,CACX,WAAY,EACZ,UAAW,CACf,EACM9tN,EAAQ4iN,GAAa,CAAC,EAC1B,MAAMlvE,EAAUkvE,GAAa,CAAC,EACxBuL,EAA0B3D,GAAchE,CAAY,EAC1D,IAAI2H,GAA2B,CAACA,GAA2B,CAACpB,MACtD5C,GAAY3D,CAAY,IAAM,QAAUmE,GAAkBhkI,CAAe,KAC3EmnI,EAASjC,GAAcrF,CAAY,GAEjCgE,GAAchE,CAAY,GAAG,CAC/B,MAAM4H,EAAanB,GAAsBzG,CAAY,EACrDxmN,EAAQ0sN,GAASlG,CAAY,EAC7B9yE,EAAQ,EAAI06E,EAAW,EAAI5H,EAAa,WACxC9yE,EAAQ,EAAI06E,EAAW,EAAI5H,EAAa,SAC1C,CAEF,MAAM6H,EAAa1nI,GAAmB,CAACwnI,GAA2B,CAACpB,EAAUc,GAAclnI,EAAiBmnI,EAAQ,EAAI,EAAIlL,GAAa,CAAC,EAC1I,MAAO,CACL,MAAOxzM,EAAK,MAAQpP,EAAM,EAC1B,OAAQoP,EAAK,OAASpP,EAAM,EAC5B,EAAGoP,EAAK,EAAIpP,EAAM,EAAI8tN,EAAO,WAAa9tN,EAAM,EAAI0zI,EAAQ,EAAI26E,EAAW,EAC3E,EAAGj/M,EAAK,EAAIpP,EAAM,EAAI8tN,EAAO,UAAY9tN,EAAM,EAAI0zI,EAAQ,EAAI26E,EAAW,CAC9E,CACA,CAEA,SAASC,GAAe/iN,EAAS,CAC/B,OAAO,MAAM,KAAKA,EAAQ,eAAc,CAAE,CAC5C,CAIA,SAASgjN,GAAgBhjN,EAAS,CAChC,MAAMijN,EAAOjE,GAAmBh/M,CAAO,EACjCuiN,EAASjC,GAActgN,CAAO,EAC9BkjN,EAAOljN,EAAQ,cAAc,KAC7BkD,EAAQ+jB,GAAIg8L,EAAK,YAAaA,EAAK,YAAaC,EAAK,YAAaA,EAAK,WAAW,EAClF//M,EAAS8jB,GAAIg8L,EAAK,aAAcA,EAAK,aAAcC,EAAK,aAAcA,EAAK,YAAY,EAC7F,IAAIx/M,EAAI,CAAC6+M,EAAO,WAAaH,GAAoBpiN,CAAO,EACxD,MAAM2D,EAAI,CAAC4+M,EAAO,UAClB,OAAIlD,GAAiB6D,CAAI,EAAE,YAAc,QACvCx/M,GAAKujB,GAAIg8L,EAAK,YAAaC,EAAK,WAAW,EAAIhgN,GAE1C,CACL,MAAAA,EACA,OAAAC,EACA,EAAAO,EACA,EAAAC,CACJ,CACA,CAEA,SAASw/M,GAAgBnjN,EAASg6M,EAAU,CAC1C,MAAM5mM,EAAM0rM,GAAU9+M,CAAO,EACvBijN,EAAOjE,GAAmBh/M,CAAO,EACjCojN,EAAiBhwM,EAAI,eAC3B,IAAIlQ,EAAQ+/M,EAAK,YACb9/M,EAAS8/M,EAAK,aACdv/M,EAAI,EACJC,EAAI,EACR,GAAIy/M,EAAgB,CAClBlgN,EAAQkgN,EAAe,MACvBjgN,EAASigN,EAAe,OACxB,MAAMC,EAAsBrD,GAAQ,GAChC,CAACqD,GAAuBA,GAAuBrJ,IAAa,WAC9Dt2M,EAAI0/M,EAAe,WACnBz/M,EAAIy/M,EAAe,UAEvB,CACA,MAAO,CACL,MAAAlgN,EACA,OAAAC,EACA,EAAAO,EACA,EAAAC,CACJ,CACA,CAEA,MAAM2/M,GAA+B,IAAI,IAAI,CAAC,WAAY,OAAO,CAAC,EAElE,SAASC,GAA2BvjN,EAASg6M,EAAU,CACrD,MAAM6H,EAAaH,GAAsB1hN,EAAS,GAAMg6M,IAAa,OAAO,EACtEv7J,EAAMojK,EAAW,IAAM7hN,EAAQ,UAC/BsO,EAAOuzM,EAAW,KAAO7hN,EAAQ,WACjCvL,EAAQwqN,GAAcj/M,CAAO,EAAImhN,GAASnhN,CAAO,EAAIq3M,GAAa,CAAC,EACnEn0M,EAAQlD,EAAQ,YAAcvL,EAAM,EACpC0O,EAASnD,EAAQ,aAAevL,EAAM,EACtCiP,EAAI4K,EAAO7Z,EAAM,EACjBkP,EAAI86C,EAAMhqD,EAAM,EACtB,MAAO,CACL,MAAAyO,EACA,OAAAC,EACA,EAAAO,EACA,EAAAC,CACJ,CACA,CACA,SAAS6/M,GAAkCxjN,EAASyjN,EAAkBzJ,EAAU,CAC9E,IAAIn2M,EACJ,GAAI4/M,IAAqB,WACvB5/M,EAAOs/M,GAAgBnjN,EAASg6M,CAAQ,UAC/ByJ,IAAqB,WAC9B5/M,EAAOm/M,GAAgBhE,GAAmBh/M,CAAO,CAAC,UACzC7C,GAAUsmN,CAAgB,EACnC5/M,EAAO0/M,GAA2BE,EAAkBzJ,CAAQ,MACvD,CACL,MAAM8H,EAAgBR,GAAiBthN,CAAO,EAC9C6D,EAAO,CACL,EAAG4/M,EAAiB,EAAI3B,EAAc,EACtC,EAAG2B,EAAiB,EAAI3B,EAAc,EACtC,MAAO2B,EAAiB,MACxB,OAAQA,EAAiB,MAC/B,CACE,CACA,OAAOnK,GAAiBz1M,CAAI,CAC9B,CACA,SAAS6/M,GAAyB1jN,EAAS2jN,EAAU,CACnD,MAAM53M,EAAao0M,GAAcngN,CAAO,EACxC,OAAI+L,IAAe43M,GAAY,CAACxmN,GAAU4O,CAAU,GAAKq0M,GAAsBr0M,CAAU,EAChF,GAEFszM,GAAiBtzM,CAAU,EAAE,WAAa,SAAW23M,GAAyB33M,EAAY43M,CAAQ,CAC3G,CAKA,SAASC,GAA4B5jN,EAAS3b,EAAO,CACnD,MAAMw/N,EAAex/N,EAAM,IAAI2b,CAAO,EACtC,GAAI6jN,EACF,OAAOA,EAET,IAAIhpO,EAAS2lO,GAAqBxgN,EAAS,CAAA,EAAI,EAAK,EAAE,OAAOu7D,GAAMp+D,GAAUo+D,CAAE,GAAKqjJ,GAAYrjJ,CAAE,IAAM,MAAM,EAC1GuoJ,EAAsC,KAC1C,MAAMC,EAAiB1E,GAAiBr/M,CAAO,EAAE,WAAa,QAC9D,IAAIkgN,EAAc6D,EAAiB5D,GAAcngN,CAAO,EAAIA,EAG5D,KAAO7C,GAAU+iN,CAAW,GAAK,CAACE,GAAsBF,CAAW,GAAG,CACpE,MAAM8D,EAAgB3E,GAAiBa,CAAW,EAC5C+D,EAA0BpE,GAAkBK,CAAW,EACzD,CAAC+D,GAA2BD,EAAc,WAAa,UACzDF,EAAsC,OAEVC,EAAiB,CAACE,GAA2B,CAACH,EAAsC,CAACG,GAA2BD,EAAc,WAAa,UAAY,CAAC,CAACF,GAAuCR,GAAgB,IAAIQ,EAAoC,QAAQ,GAAK1E,GAAkBc,CAAW,GAAK,CAAC+D,GAA2BP,GAAyB1jN,EAASkgN,CAAW,GAG5YrlO,EAASA,EAAO,OAAOqpO,GAAYA,IAAahE,CAAW,EAG3D4D,EAAsCE,EAExC9D,EAAcC,GAAcD,CAAW,CACzC,CACA,OAAA77N,EAAM,IAAI2b,EAASnlB,CAAM,EAClBA,CACT,CAIA,SAASspO,GAAgBn2N,EAAM,CAC7B,GAAI,CACF,QAAAgS,EACA,SAAA26M,EACA,aAAAC,EACA,SAAAZ,CACJ,EAAMhsN,EAEJ,MAAMo2N,EAAoB,CAAC,GADMzJ,IAAa,oBAAsB8E,GAAWz/M,CAAO,EAAI,CAAA,EAAK4jN,GAA4B5jN,EAAS,KAAK,EAAE,EAAI,CAAA,EAAG,OAAO26M,CAAQ,EACzGC,CAAY,EAC9DyJ,EAAwBD,EAAkB,CAAC,EAC3CE,EAAeF,EAAkB,OAAO,CAACG,EAASd,IAAqB,CAC3E,MAAM5/M,EAAO2/M,GAAkCxjN,EAASyjN,EAAkBzJ,CAAQ,EAClF,OAAAuK,EAAQ,IAAMt9L,GAAIpjB,EAAK,IAAK0gN,EAAQ,GAAG,EACvCA,EAAQ,MAAQvrL,GAAIn1B,EAAK,MAAO0gN,EAAQ,KAAK,EAC7CA,EAAQ,OAASvrL,GAAIn1B,EAAK,OAAQ0gN,EAAQ,MAAM,EAChDA,EAAQ,KAAOt9L,GAAIpjB,EAAK,KAAM0gN,EAAQ,IAAI,EACnCA,CACT,EAAGf,GAAkCxjN,EAASqkN,EAAuBrK,CAAQ,CAAC,EAC9E,MAAO,CACL,MAAOsK,EAAa,MAAQA,EAAa,KACzC,OAAQA,EAAa,OAASA,EAAa,IAC3C,EAAGA,EAAa,KAChB,EAAGA,EAAa,GACpB,CACA,CAEA,SAASE,GAAcxkN,EAAS,CAC9B,KAAM,CACJ,MAAAkD,EACA,OAAAC,CACJ,EAAM49M,GAAiB/gN,CAAO,EAC5B,MAAO,CACL,MAAAkD,EACA,OAAAC,CACJ,CACA,CAEA,SAASshN,GAA8BzkN,EAASi7M,EAAcjB,EAAU,CACtE,MAAM4I,EAA0B3D,GAAchE,CAAY,EACpD7/H,EAAkB4jI,GAAmB/D,CAAY,EACjDuG,EAAUxH,IAAa,QACvBn2M,EAAO69M,GAAsB1hN,EAAS,GAAMwhN,EAASvG,CAAY,EACvE,IAAIsH,EAAS,CACX,WAAY,EACZ,UAAW,CACf,EACE,MAAMp6E,EAAUkvE,GAAa,CAAC,EAI9B,SAASqN,GAA4B,CACnCv8E,EAAQ,EAAIi6E,GAAoBhnI,CAAe,CACjD,CACA,GAAIwnI,GAA2B,CAACA,GAA2B,CAACpB,EAI1D,IAHI5C,GAAY3D,CAAY,IAAM,QAAUmE,GAAkBhkI,CAAe,KAC3EmnI,EAASjC,GAAcrF,CAAY,GAEjC2H,EAAyB,CAC3B,MAAMC,EAAanB,GAAsBzG,EAAc,GAAMuG,EAASvG,CAAY,EAClF9yE,EAAQ,EAAI06E,EAAW,EAAI5H,EAAa,WACxC9yE,EAAQ,EAAI06E,EAAW,EAAI5H,EAAa,SAC1C,MAAW7/H,GACTspI,EAAyB,EAGzBlD,GAAW,CAACoB,GAA2BxnI,GACzCspI,EAAyB,EAE3B,MAAM5B,EAAa1nI,GAAmB,CAACwnI,GAA2B,CAACpB,EAAUc,GAAclnI,EAAiBmnI,CAAM,EAAIlL,GAAa,CAAC,EAC9H3zM,EAAIG,EAAK,KAAO0+M,EAAO,WAAap6E,EAAQ,EAAI26E,EAAW,EAC3Dn/M,EAAIE,EAAK,IAAM0+M,EAAO,UAAYp6E,EAAQ,EAAI26E,EAAW,EAC/D,MAAO,CACL,EAAAp/M,EACA,EAAAC,EACA,MAAOE,EAAK,MACZ,OAAQA,EAAK,MACjB,CACA,CAEA,SAAS8gN,GAAmB3kN,EAAS,CACnC,OAAOq/M,GAAiBr/M,CAAO,EAAE,WAAa,QAChD,CAEA,SAAS4kN,GAAoB5kN,EAASwU,EAAU,CAC9C,GAAI,CAACyqM,GAAcj/M,CAAO,GAAKq/M,GAAiBr/M,CAAO,EAAE,WAAa,QACpE,OAAO,KAET,GAAIwU,EACF,OAAOA,EAASxU,CAAO,EAEzB,IAAI6kN,EAAkB7kN,EAAQ,aAM9B,OAAIg/M,GAAmBh/M,CAAO,IAAM6kN,IAClCA,EAAkBA,EAAgB,cAAc,MAE3CA,CACT,CAIA,SAASC,GAAgB9kN,EAASwU,EAAU,CAC1C,MAAMpB,EAAM0rM,GAAU9+M,CAAO,EAC7B,GAAIy/M,GAAWz/M,CAAO,EACpB,OAAOoT,EAET,GAAI,CAAC6rM,GAAcj/M,CAAO,EAAG,CAC3B,IAAI+kN,EAAkB5E,GAAcngN,CAAO,EAC3C,KAAO+kN,GAAmB,CAAC3E,GAAsB2E,CAAe,GAAG,CACjE,GAAI5nN,GAAU4nN,CAAe,GAAK,CAACJ,GAAmBI,CAAe,EACnE,OAAOA,EAETA,EAAkB5E,GAAc4E,CAAe,CACjD,CACA,OAAO3xM,CACT,CACA,IAAI6nM,EAAe2J,GAAoB5kN,EAASwU,CAAQ,EACxD,KAAOymM,GAAgBsE,GAAetE,CAAY,GAAK0J,GAAmB1J,CAAY,GACpFA,EAAe2J,GAAoB3J,EAAczmM,CAAQ,EAE3D,OAAIymM,GAAgBmF,GAAsBnF,CAAY,GAAK0J,GAAmB1J,CAAY,GAAK,CAAC4E,GAAkB5E,CAAY,EACrH7nM,EAEF6nM,GAAgBgF,GAAmBjgN,CAAO,GAAKoT,CACxD,CAEA,MAAM4xM,GAAkB,eAAgBhuO,EAAM,CAC5C,MAAMiuO,EAAoB,KAAK,iBAAmBH,GAC5CI,EAAkB,KAAK,cACvBC,EAAqB,MAAMD,EAAgBluO,EAAK,QAAQ,EAC9D,MAAO,CACL,UAAWytO,GAA8BztO,EAAK,UAAW,MAAMiuO,EAAkBjuO,EAAK,QAAQ,EAAGA,EAAK,QAAQ,EAC9G,SAAU,CACR,EAAG,EACH,EAAG,EACH,MAAOmuO,EAAmB,MAC1B,OAAQA,EAAmB,MACjC,CACA,CACA,EAEA,SAASviG,GAAM5iH,EAAS,CACtB,OAAOq/M,GAAiBr/M,CAAO,EAAE,YAAc,KACjD,CAEA,MAAMk6M,GAAW,CACf,sDAAAwI,GACA,mBAAA1D,GACA,gBAAAmF,GACA,gBAAAW,GACA,gBAAAE,GACA,eAAAjC,GACA,cAAAyB,GACA,SAAArD,GACA,UAAAhkN,GACA,MAAAylH,EACF,EAEA,SAASwiG,GAAc3vO,EAAG4kB,EAAG,CAC3B,OAAO5kB,EAAE,IAAM4kB,EAAE,GAAK5kB,EAAE,IAAM4kB,EAAE,GAAK5kB,EAAE,QAAU4kB,EAAE,OAAS5kB,EAAE,SAAW4kB,EAAE,MAC7E,CAGA,SAASgrN,GAAYrlN,EAAS8uM,EAAQ,CACpC,IAAIwW,EAAK,KACLrvJ,EACJ,MAAMhsD,EAAO+0M,GAAmBh/M,CAAO,EACvC,SAASgJ,GAAU,CACjB,IAAIu8M,EACJ,aAAatvJ,CAAS,GACrBsvJ,EAAMD,IAAO,MAAQC,EAAI,WAAU,EACpCD,EAAK,IACP,CACA,SAASE,EAAQ3pK,EAAM4pK,EAAW,CAC5B5pK,IAAS,SACXA,EAAO,IAEL4pK,IAAc,SAChBA,EAAY,GAEdz8M,EAAO,EACP,MAAM08M,EAA2B1lN,EAAQ,sBAAqB,EACxD,CACJ,KAAAsO,EACA,IAAAmwC,EACA,MAAAv7C,EACA,OAAAC,CACN,EAAQuiN,EAIJ,GAHK7pK,GACHizJ,EAAM,EAEJ,CAAC5rM,GAAS,CAACC,EACb,OAEF,MAAMwiN,EAAWvO,GAAM34J,CAAG,EACpBmnK,EAAaxO,GAAMntM,EAAK,aAAeqE,EAAOpL,EAAM,EACpD2iN,EAAczO,GAAMntM,EAAK,cAAgBw0C,EAAMt7C,EAAO,EACtD2iN,EAAY1O,GAAM9oM,CAAI,EAEtB30B,EAAU,CACd,WAFiB,CAACgsO,EAAW,MAAQ,CAACC,EAAa,MAAQ,CAACC,EAAc,MAAQ,CAACC,EAAY,KAG/F,UAAW7+L,GAAI,EAAG+R,GAAI,EAAGysL,CAAS,CAAC,GAAK,CAC9C,EACI,IAAIM,EAAgB,GACpB,SAASC,EAAczlN,EAAS,CAC9B,MAAM0lN,EAAQ1lN,EAAQ,CAAC,EAAE,kBACzB,GAAI0lN,IAAUR,EAAW,CACvB,GAAI,CAACM,EACH,OAAOP,EAAO,EAEXS,EAOHT,EAAQ,GAAOS,CAAK,EAJpBhwJ,EAAY,WAAW,IAAM,CAC3BuvJ,EAAQ,GAAO,IAAI,CACrB,EAAG,GAAI,CAIX,CACIS,IAAU,GAAK,CAACb,GAAcM,EAA0B1lN,EAAQ,sBAAqB,CAAE,GAQzFwlN,EAAO,EAETO,EAAgB,EAClB,CAIA,GAAI,CACFT,EAAK,IAAI,qBAAqBU,EAAe,CAC3C,GAAGrsO,EAEH,KAAMswB,EAAK,aACnB,CAAO,CACH,MAAa,CACXq7M,EAAK,IAAI,qBAAqBU,EAAersO,CAAO,CACtD,CACA2rO,EAAG,QAAQtlN,CAAO,CACpB,CACA,OAAAwlN,EAAQ,EAAI,EACLx8M,CACT,CAUA,SAASk9M,GAAWzrM,EAAW++L,EAAU7zH,EAAQhsG,EAAS,CACpDA,IAAY,SACdA,EAAU,CAAA,GAEZ,KAAM,CACJ,eAAAwsO,EAAiB,GACjB,eAAAC,EAAiB,GACjB,cAAAC,EAAgB,OAAO,gBAAmB,WAC1C,YAAAC,EAAc,OAAO,sBAAyB,WAC9C,eAAAC,EAAiB,EACrB,EAAM5sO,EACE6sO,EAActF,GAAczmM,CAAS,EACrCgsM,EAAYN,GAAkBC,EAAiB,CAAC,GAAII,EAAchG,GAAqBgG,CAAW,EAAI,CAAA,EAAK,GAAGhG,GAAqBhH,CAAQ,CAAC,EAAI,CAAA,EACtJiN,EAAU,QAAQvC,GAAY,CAC5BiC,GAAkBjC,EAAS,iBAAiB,SAAUv+H,EAAQ,CAC5D,QAAS,EACf,CAAK,EACDygI,GAAkBlC,EAAS,iBAAiB,SAAUv+H,CAAM,CAC9D,CAAC,EACD,MAAM+gI,EAAYF,GAAeF,EAAcjB,GAAYmB,EAAa7gI,CAAM,EAAI,KAClF,IAAIghI,EAAiB,GACjB9hN,EAAiB,KACjBwhN,IACFxhN,EAAiB,IAAI,eAAe7W,GAAQ,CAC1C,GAAI,CAAC44N,CAAU,EAAI54N,EACf44N,GAAcA,EAAW,SAAWJ,GAAe3hN,IAGrDA,EAAe,UAAU20M,CAAQ,EACjC,qBAAqBmN,CAAc,EACnCA,EAAiB,sBAAsB,IAAM,CAC3C,IAAIE,GACHA,EAAkBhiN,IAAmB,MAAQgiN,EAAgB,QAAQrN,CAAQ,CAChF,CAAC,GAEH7zH,EAAM,CACR,CAAC,EACG6gI,GAAe,CAACD,GAClB1hN,EAAe,QAAQ2hN,CAAW,EAEpC3hN,EAAe,QAAQ20M,CAAQ,GAEjC,IAAIsN,EACAC,EAAcR,EAAiB7E,GAAsBjnM,CAAS,EAAI,KAClE8rM,GACFS,EAAS,EAEX,SAASA,GAAY,CACnB,MAAMC,EAAcvF,GAAsBjnM,CAAS,EAC/CssM,GAAe,CAAC3B,GAAc2B,EAAaE,CAAW,GACxDthI,EAAM,EAERohI,EAAcE,EACdH,EAAU,sBAAsBE,CAAS,CAC3C,CACA,OAAArhI,EAAM,EACC,IAAM,CACX,IAAIuhI,EACJT,EAAU,QAAQvC,GAAY,CAC5BiC,GAAkBjC,EAAS,oBAAoB,SAAUv+H,CAAM,EAC/DygI,GAAkBlC,EAAS,oBAAoB,SAAUv+H,CAAM,CACjE,CAAC,EACD+gI,GAAa,MAAQA,EAAS,GAC7BQ,EAAmBriN,IAAmB,MAAQqiN,EAAiB,WAAU,EAC1EriN,EAAiB,KACb0hN,GACF,qBAAqBO,CAAO,CAEhC,CACF,CAmBA,MAAM5sM,GAASitM,GAeT/I,GAAQgJ,GAQR/K,GAAOgL,GAsBPvwH,GAAQwwH,GAkBRvN,GAAkB,CAACt/L,EAAW++L,EAAU7/N,IAAY,CAIxD,MAAM0K,EAAQ,IAAI,IACZ6E,EAAgB,CACpB,SAAAgxN,GACA,GAAGvgO,CACP,EACQ4tO,EAAoB,CACxB,GAAGr+N,EAAc,SACjB,GAAI7E,CACR,EACE,OAAOmjO,GAAkB/sM,EAAW++L,EAAU,CAC5C,GAAGtwN,EACH,SAAUq+N,CACd,CAAG,CACH,ECrvBA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMuT,MAAMhtN,GAAE,4BAA4B+gE,GAAE,4BAA4BjhE,GAAE,CAAC,KAAK,GAAG,KAAK,EAAE,EAAE,SAASotN,GAAE,CAAC,IAAI,EAAE,GAAG,EAAEnsJ,GAAE,KAAK3/E,EAAE,OAAO,IAAIqC,CAAC,EAAE,CAAC,IAAIxF,EAAE2N,EAA8N,GAAzN,CAAC,GAAgB,OAAO,SAApB,KAA8BkU,GAAE1e,CAAC,GAAqBA,IAAT,QAAyB,OAAO,QAApB,MAA8B,GAAQnD,EAAS,SAAP,KAAiC,OAAO,QAAQ,OAA1D,MAAyEA,IAAT,SAAkBA,EAAE,oCAAsDmD,IAAT,QAAyB,OAAO,QAApB,MAA8B,GAAQwK,EAAS,SAAP,KAAiC,OAAO,QAAQ,OAA1D,MAAyEA,IAAT,SAAkBA,EAAE,mCAAmC,OAAgBxK,IAAT,SAAa,EAAE4e,IAAGvc,IAAIA,EAAE,CAAA,GAAI,KAAK,CAAC,SAASlF,CAAC,EAAEkF,EAAE,GAAG,SAAS,eAAe,CAAC,EAAE,OAAO,MAAMzF,EAAE,SAAS,MAAM,SAAS,qBAAqB,MAAM,EAAE,CAAC,EAAE7C,EAAE,SAAS,cAAc,OAAO,EAAEA,EAAE,GAAG,EAAEA,EAAE,KAAK,WAAmBoD,IAAR,OAAWP,EAAE,WAAWA,EAAE,aAAa7C,EAAE6C,EAAE,UAAU,EAAEA,EAAE,YAAY7C,CAAC,EAAEA,EAAE,WAAWA,EAAE,WAAW,QAAQ,EAAEA,EAAE,YAAY,SAAS,eAAe,CAAC,CAAC,EAAE2kB,GAAE1e,CAAC,EAAE,EAAE,CAAgS,MAAC+rO,GAAE,MAAM,CAAC,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,KAAK,sBAAsB/rO,EAAE,KAAK,MAAMqC,EAAE,MAAM,OAAOxF,EAAE,GAAG,SAAS2N,EAAE,WAAW,YAAYrN,EAAE,CAACpC,GAAE,OAAO8B,CAAC,CAAC,EAAEyC,GAAE,CAAC,0BAA0B,OAAO,CAAC,EAAErF,GAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO2C,EAAE,UAAU7C,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,cAAc,CAAA,EAAG,mBAAmB,CAAA,EAAG,MAAMsI,CAAC,EAAE,GAAU,IAAP,KAAS,MAAM,CAAC,cAAc,CAAA,EAAG,mBAAmB,CAAA,EAAG,MAAMA,CAAC,EAAE,MAAMvI,EAAEqD,EAAE,OAAO6C,GAAGlG,EAAE,KAAK+kB,GAAE,CAAC,QAAQ7e,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE4U,GAAE,EAAE,EAAE,CAAC,UAAUvS,EAAE,SAASmI,EAAE,WAAW1Q,CAAC,CAAC,EAAE,KAAM,CAAC,CAAC,EAAEgB,EAAE,EAAEd,EAAE,UAAUgG,EAAE,eAAeqC,CAAC,IAAI,CAAC,IAAIxF,EAAE2N,EAAE,MAAMrN,EAAE,CAAC,KAAK,GAAGrC,CAAC,KAAK,IAAI,GAAGd,CAAC,KAAK,OAAO4C,CAAC,EAAE,CAAC,EAAE9C,EAAE+kB,CAAG,GAAUhiB,EAAEwF,EAAE,SAAZ,MAA6BxF,IAAT,OAAWA,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE+X,GAAUpK,EAAE,CAAC,IAAI,SAAS,MAAM,OAAO,OAAO,MAAM,KAAK,OAAO,EAAExK,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC,KAA/E,MAA4FwK,IAAT,OAAWA,EAAE,SAASzP,EAAE6B,GAAG,CAAC,aAAaA,EAAE,YAAYA,CAAC,EAAE,IAAI0C,EAAE,EAAE,GAAG1C,EAAE,CAAC,MAAM9B,EAAE,GAAG8B,CAAC,GAAG,MAAM,SAAS,EAAE0C,EAASxE,GAAN,MAAeA,EAAE,CAAC,EAAG,OAAOA,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,cAAcqC,EAAE,mBAAmB,CAAC,KAAWrD,GAAN,KAAQ,GAAGA,CAAC,KAAK,GAAG,IAAU+kB,GAAN,KAAQ,GAAGA,CAAC,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,GAAG9jB,EAAE,CAAC6Z,CAAC,EAAE,IAAI7a,EAAE,EAAEuF,CAAC,IAAI,EAAE,MAAMU,CAAC,CAAC,IAAK4U,GAAE,EAAE,EAAE,CAAC,UAAU,SAAS,SAASpK,EAAE,WAAW1Q,CAAC,CAAC,EAAE,KAAM,CAAC,CAAC,EAAEgB,EAAE,EAAEd,EAAE,UAAUgG,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,GAAGlF,CAAC,KAAK,IAAI,GAAGd,CAAC,IAAI,EAAE,mBAAmB,CAAA,EAAG,MAAMgG,CAAC,EAAE,CAAE,EAAEgsO,GAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,QAAQ,aAAa,OAAO,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC,EAAE5gM,GAAE,CAAC,EAAE,EAAEprC,IAAI,CAAC,IAAIqC,EAAE,KAAK,MAAMxF,EAAE,YAAYA,EAAE,CAAC,MAAM2N,EAAE,IAAI,CAACnI,EAAE,IAAuB,EAAK,CAACA,IAAI,EAAE,MAAM,KAAKxF,CAAC,EAAEwF,EAAE,WAAWmI,EAAE,CAAC,EAA4C,EAAE,OAAO3N,EAAE,OAAO,IAAI,CAACwF,IAAI,aAAaA,CAAC,EAAEA,EAAE,KAAK,EAAExF,CAAC,EAAEovO,GAAE,GAAU,IAAP,MAAU,CAAC,MAAM,QAAQ,CAAC,GAAa,OAAO,GAAjB,SAAmBpxO,GAAE,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,GAAG,MAAM,QAAQ,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAO,CAACC,EAAE,IAAID,GAAEC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,MAAM,QAAQ,CAAC,EAAE,MAAM,GAAG,GAAG,CAACmxO,GAAE,CAAC,GAAG,CAACA,GAAE,CAAC,EAAE,OAAO,IAAI,EAAE,MAAMjsO,EAAE,OAAO,KAAK,CAAC,EAAEqC,EAAE,OAAO,KAAK,CAAC,EAAE,OAAOrC,EAAE,SAASqC,EAAE,QAAQrC,EAAE,MAAOA,GAAGnF,GAAE,EAAEmF,CAAC,EAAE,EAAEA,CAAC,CAAC,CAAC,CAAE,EAAEksO,GAAE,GAAG,CAAC,GAAG,EAAE,aAAa,aAAa,aAAa,YAAY,MAAM,GAAG,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC,WAAW,aAAa,YAAY,EAAE,KAAMpxO,GAAG,CAAC,MAAMkF,EAAE,EAAE,iBAAiBlF,CAAC,EAAE,OAAekF,IAAT,QAAuBA,IAAX,QAAY,CAAC,CAAE,EAAEmsO,GAAE,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,KAAK,IAAI,EAAE,EAAE,cAAc,KAAK,GAAG,CAAC,GAAGD,GAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,CAAC,OAAO,SAAS,kBAAkB,SAAS,eAAe,EAAEE,GAAe,OAAO,OAApB,IAA2BpyO,EAAAA,gBAAEgG,EAAAA,UAAE+rC,GAAE,GAAG,CAAC,EAAE,UAAU,aAAa,EAAE,OAAO,EAAE,EAAE,QAAQ,KAAK,EAAEhkB,GAAE,qBAAqBskN,GAAE,CAAC,WAAW,IAAI,IAAI,aAAa,CAAC,QAAQ,IAAI,EAAE,OAAO,IAAI,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,gBAAgB,IAAI,CAAC,CAAC,EAAE9lB,GAAElkN,EAAAA,cAAE,CAAC,eAAe,IAAIgqO,EAAC,CAAC,EAAosB,SAASltM,GAAE,EAAEpX,GAAE,CAAC,OAAOnrB,EAAAA,WAAE2pN,EAAC,EAAE,eAAe,CAAC,CAAC,CAAsjB,IAAIt6K,GAAE,CAAC,QAAQ,oCAAoC,MAAM,kCAAkC,MAAM,kCAAkC,QAAQ,oCAAoC,UAAU,sCAAsC,KAAK,iCAAiC,QAAQ,mCAAmC,EAAEqgM,GAAE,CAAC,QAAQ,+BAA+B,MAAM,6BAA6B,KAAK,4BAA4B,MAAM,6BAA6B,QAAQ,+BAA+B,QAAQ,+BAA+B,MAAM,6BAA6B,KAAK,2BAA2B,EAAE,MAAM5iO,GAAE,CAAC,CAAC,WAAW1P,EAAE,GAAGqI,EAAE,UAAUlF,EAAE,eAAeP,EAAE,QAAQiiB,EAAE,OAAO,SAASjK,EAAE,aAAa7Z,EAAE,MAAMuE,EAAE,MAAM,OAAOrF,EAAE,GAAG,OAAO2kB,EAAE,CAAC,OAAO,EAAE,YAAY+gE,EAAE,GAAG,iBAAiBjhE,EAAE,WAAW,YAAYotN,EAAE,QAAQntN,EAAE,UAAUqtN,EAAE,EAAE,UAAUC,EAAE,EAAE,MAAMC,EAAE,GAAG,OAAOnkN,EAAE,GAAG,QAAQskN,EAAE,GAAG,UAAU9lB,EAAE,GAAG,WAAWgmB,EAAE,GAAG,cAAcjvO,EAAE,GAAG,cAAcoM,EAAE,GAAG,WAAW8iO,EAAE,YAAYC,EAAE,kBAAkBC,EAAE,mBAAmB7+B,EAAE,MAAM8+B,EAAE,SAASC,EAAE,UAAUC,EAAE,UAAUC,EAAE,eAAeC,EAAE,QAAQC,EAAE,kBAAkBhhM,EAAE,OAAOihM,EAAE,cAAcC,EAAE,GAAG,UAAUC,EAAE,aAAaC,EAAG,gBAAgBC,EAAG,OAAOrmJ,EAAG,QAAQsmJ,EAAG,WAAWC,EAAG,UAAUC,GAAG,EAAE,KAAKC,GAAG,SAAS,IAAI,CAAC,IAAI,GAAG,MAAMC,GAAG3zO,EAAAA,OAAE,IAAI,EAAE4zO,GAAG5zO,EAAAA,OAAE,IAAI,EAAE6zO,EAAG7zO,EAAAA,OAAE,IAAI,EAAE8zO,EAAG9zO,SAAE,IAAI,EAAE+zO,GAAG/zO,EAAAA,OAAE,IAAI,EAAE,CAACg0O,EAAGC,EAAE,EAAEnxO,EAAAA,SAAE,CAAC,cAAc,CAAA,EAAG,mBAAmB,GAAG,MAAMyC,CAAC,CAAC,EAAE,CAAC2uO,GAAGC,EAAE,EAAErxO,EAAAA,SAAE,EAAE,EAAE,CAACsxO,GAAGC,EAAE,EAAEvxO,EAAAA,SAAE,EAAE,EAAE,CAACwxO,GAAGC,EAAE,EAAEzxO,EAAAA,SAAE,IAAI,EAAE0xO,GAAGx0O,EAAAA,OAAE,EAAE,EAAEy0O,GAAGz0O,EAAAA,OAAE,IAAI,EAAE,CAAC,WAAW00O,GAAG,gBAAgBvjO,EAAE,EAAEi0B,GAAE98B,CAAC,EAAEqsO,EAAG30O,EAAAA,OAAE,EAAE,EAAE,CAAC40O,GAAGC,EAAE,EAAE/xO,EAAAA,SAAE,EAAE,EAAEgyO,GAAG90O,EAAAA,OAAE,EAAE,EAAE+0O,GAAGnvJ,GAAG/gE,EAAE,SAAS,OAAO,EAAEmwN,GAAGD,KAAWtC,GAAN,KAAQ,OAAOA,EAAE,SAAeA,GAAN,KAAQ,OAAOA,EAAE,YAAkBA,GAAN,KAAQ,OAAOA,EAAE,WAAWwC,GAAGxC,EAAE,CAAC,GAAGA,CAAC,EAAE,CAAC,UAAU,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,EAAE,EAAE,CAACA,GAAGsC,IAAI,OAAO,OAAOE,GAAG,CAAC,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,EAAE,CAAC,EAAE,MAAMC,GAAGxC,EAAE,CAAC,GAAGA,CAAC,EAAE,CAAC,SAAS,GAAG,KAAK,GAAG,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,EAAE,EAAE,CAACA,GAAGqC,IAAI,OAAO,OAAOG,GAAG,CAAC,WAAW,GAAG,KAAK,GAAG,SAAS,EAAE,CAAC,EAAE,MAAMC,GAAGxC,EAAE,CAAC,GAAGA,CAAC,EAAE,CAAC,OAAOH,GAAG,GAAG,OAAOjvO,GAAG,GAAG,OAAOoM,GAAG,GAAG,mBAAmBqlO,IAAI,EAAE,EAAElhC,IAAI,OAAO,OAAOmhC,GAAG,CAAC,UAAU,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,EAAE,CAAC,EAAE,OAAO,OAAOC,GAAG,CAAC,SAAS,GAAG,KAAK,GAAG,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,EAAE,CAAC,EAAE,OAAO,OAAOC,GAAG,CAAC,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,mBAAmB,EAAE,CAAC,GAAG9C,GAAG,KAAKyC,GAAG,QAAQ,GAAG,IAAI,CAACA,GAAG,QAAQ,EAAE,GAAI,CAAA,CAAE,EAAE,MAAMM,GAAGr0O,IAAG,CAAC+zO,GAAG,UAAU/zO,IAAGszO,GAAG,EAAE,EAAE,WAAY,IAAI,CAACS,GAAG,UAAgB1B,GAAN,MAASA,EAAEryO,EAAC,EAAWmyO,IAAT,QAAYiB,GAAGpzO,EAAC,EAAE,EAAG,EAAE,EAAE,EAAEkF,EAAAA,UAAG,IAAI,CAAC,GAAYitO,IAAT,OAAW,MAAM,IAAI,KAAKA,GAAGmB,GAAG,EAAE,EAAE,MAAMtzO,GAAE,WAAY,IAAI,CAACozO,GAAGjB,CAAC,CAAC,EAAG,EAAE,EAAE,MAAM,IAAI,CAAC,aAAanyO,EAAC,CAAC,CAAC,EAAG,CAACmyO,CAAC,CAAC,EAAEjtO,EAAAA,UAAG,IAAI,CAAC,GAAGiuO,KAAKM,GAAG,QAAQ,GAAGxiM,GAAE+hM,EAAE,EAAES,GAAG,QAAQN,GAAGA,GAASpB,GAAN,MAASA,EAAC,MAAO,CAAC,MAAM/xO,IAAGA,IAAG,CAAC,MAAMd,GAAEc,GAAE,MAAM,kBAAkB,EAAE,GAAG,CAACd,GAAE,MAAO,GAAE,KAAK,CAAA,CAAEgG,GAAEqC,EAAC,EAAErI,GAAE,OAAO,OAAOgG,EAAC,GAAUqC,KAAP,KAAS,EAAE,IAAI,GAAG,iBAAiB,SAAS,IAAI,EAAE,iBAAiB,4BAA4B,CAAC,EAAEyrO,GAAG,QAAQ,WAAY,IAAI,CAACM,GAAG,EAAE,EAAEE,GAAG,IAAI,EAAQxB,GAAN,MAASA,EAAC,CAAE,EAAGhyO,GAAE,EAAE,CAAC,CAAC,EAAG,CAACmzO,EAAE,CAAC,EAAE,MAAMmB,GAAGt0O,IAAG,CAACkzO,GAAIh0O,IAAGa,GAAEb,GAAEc,EAAC,EAAEd,GAAEc,EAAC,CAAE,EAAEu0O,GAAG,CAACv0O,GAAEkxO,IAAI,CAACjgM,GAAE6hM,CAAE,EAAEO,GAAGgB,GAAG,EAAE,EAAEvB,EAAG,QAAQ,WAAY,IAAI,CAACuB,GAAG,EAAE,CAAC,EAAGr0O,EAAC,CAAC,EAAEw0O,GAAG,CAACx0O,GAAEmxO,IAAI,CAAClgM,GAAE8hM,CAAE,EAAEA,EAAG,QAAQ,WAAY,IAAI,CAACa,EAAG,SAASS,GAAG,EAAE,CAAC,EAAGr0O,EAAC,CAAC,EAAEy0O,GAAGz0O,IAAG,CAAC,IAAId,GAAE,GAAG,CAACc,GAAE,OAAO,MAAMkF,IAAUhG,GAAEc,GAAE,iBAAZ,MAAqCd,KAAT,OAAWA,GAAEc,GAAE,OAAO,GAAG,EAAQkF,IAAN,MAAeA,GAAE,aAAa,OAAOqtO,EAAG,IAAI,EAAE,KAAKniO,GAAG,CAAC,QAAQ,IAAI,CAAC,EAAE8gO,EAAEqD,GAAE,EAAGF,GAAG,EAAE,EAAE9B,EAAGrtO,EAAC,EAAEkL,GAAG,CAAC,QAAQlL,EAAC,CAAC,EAAE+rC,GAAE8hM,CAAE,CAAC,EAAE2B,GAAG,IAAI,CAACjpB,EAAE+oB,GAAGrD,GAAG,GAAG,EAAEA,EAAEqD,GAAE,EAAGH,GAAG,EAAE,EAAEpjM,GAAE6hM,CAAE,CAAC,EAAE6B,GAAG,CAAC,CAAC,EAAE30O,GAAE,EAAEd,EAAC,IAAI,CAAC,IAAIgG,GAAE,MAAMqC,GAAE,CAAC,sBAAsB,KAAK,CAAC,EAAEvH,GAAE,EAAEd,GAAE,MAAM,EAAE,OAAO,EAAE,IAAIA,GAAE,KAAKc,GAAE,MAAMA,GAAE,OAAOd,EAAC,EAAE,EAAE+xO,GAAE,CAAC,OAAc/rO,GAAQquO,IAAN,KAAS,OAAOA,GAAG,SAA7B,MAA8CruO,KAAT,OAAWA,GAAEV,EAAE,OAAOrF,EAAE,iBAAiBoI,GAAE,iBAAiBqrO,GAAG,QAAQ,sBAAsBC,GAAG,QAAQ,SAASjvN,EAAE,YAAYotN,EAAE,OAAO9kJ,EAAG,UAAUwmJ,EAAE,CAAC,EAAE,KAAM1yO,IAAG,CAACs0O,GAAGt0O,EAAC,CAAC,CAAC,CAAE,EAAE40O,GAAG50O,IAAG,CAAC,GAAG,CAACA,GAAE,OAAO,MAAMd,GAAEc,GAAEkF,GAAE,CAAC,EAAEhG,GAAE,QAAQ,EAAEA,GAAE,OAAO,EAAEy1O,GAAGzvO,EAAC,EAAEwuO,GAAG,QAAQxuO,EAAC,EAAE2vO,GAAG70O,IAAG,CAAC,IAAId,GAAE,GAAG,CAACi0O,GAAG,OAAO,MAAMjuO,GAAElF,GAAE,OAAWkF,GAAE,cAAsB,GAAQhG,GAAE0zO,GAAG,WAAb,MAAgC1zO,KAAT,SAAkBA,GAAE,SAASgG,EAAC,GAAS,CAAC,SAAS,cAAc,QAAQ4U,CAAC,IAAI,EAAE,GAAG+5N,EAAE,EAAE,KAAM7zO,IAASA,IAAN,KAAQ,OAAOA,GAAE,SAASkF,EAAC,CAAC,IAAKmvO,GAAG,EAAE,EAAEpjM,GAAE6hM,CAAE,GAAE,EAAEgC,GAAGxkM,GAAEmkM,GAAG,EAAK,EAAEM,GAAGzkM,GAAEokM,GAAG,EAAK,EAAEM,GAAGh1O,IAAG,CAAC+0O,GAAG,OAAM,EAAGD,GAAG90O,EAAC,CAAC,EAAEi1O,GAAG,IAAI,CAACH,GAAG,OAAM,EAAGC,GAAE,CAAE,EAAEG,GAAGxlO,EAAAA,YAAG,IAAI,CAAC,IAAI1P,GAAEd,GAAE,MAAMgG,IAAUlF,GAAQuzO,IAAN,KAAS,OAAOA,GAAG,YAA7B,MAAiDvzO,KAAT,OAAWA,GAAE8xO,EAAE5sO,GAAEyvO,GAAGzvO,EAAC,EAAEksO,EAAEsC,GAAG,SAASiB,GAAGjB,GAAG,OAAO,EAASpB,GAAN,MAAgBA,EAAG,aAAcrB,GAAE,CAAC,OAAc/xO,GAAQq0O,IAAN,KAAS,OAAOA,GAAG,SAA7B,MAA8Cr0O,KAAT,OAAWA,GAAEsF,EAAE,OAAOrF,EAAE,iBAAiBmzO,EAAG,iBAAiBM,GAAG,QAAQ,sBAAsBC,GAAG,QAAQ,SAASjvN,EAAE,YAAYotN,EAAE,OAAO9kJ,EAAG,UAAUwmJ,EAAE,CAAC,EAAE,KAAM1yO,IAAG,CAAC+zO,GAAG,SAASO,GAAGt0O,EAAC,CAAC,EAAG,EAAG,CAACmzO,GAAGb,EAAGJ,EAAEL,EAAErtO,EAAQ+uO,IAAN,KAAS,OAAOA,GAAG,MAAMp0O,EAAEykB,EAAEkuN,EAAQyB,IAAN,KAAS,OAAOA,GAAG,SAASnC,EAAEsB,EAAE,CAAC,EAAExtO,EAAAA,UAAG,IAAI,CAAC,IAAIlF,GAAEd,GAAE,MAAMgG,GAAE,IAAI,IAAIyuO,EAAE,EAAEE,GAAG,QAAS7zO,IAAG,CAAQiyO,GAAN,MAAeA,EAAEjyO,EAAC,GAAIkF,GAAE,IAAI,CAAC,QAAQlF,EAAC,CAAC,CAAC,CAAC,EAAG,MAAMuH,GAAE,SAAS,cAAc,QAAQuS,CAAC,IAAI,EAAEvS,IAAG,EAAQ0qO,GAAN,MAAeA,EAAE1qO,EAAC,IAAIrC,GAAE,IAAI,CAAC,QAAQqC,EAAC,CAAC,EAAE,MAAMxF,GAAE,IAAI,CAACsyO,GAAG,EAAE,CAAC,EAAE3kO,GAAE2hO,GAAEiB,CAAE,EAAEjwO,GAAEgvO,GAAEuB,GAAG,OAAO,EAAEwB,GAAG,SAAS,OAAO,iBAAiB,SAASryO,EAAC,EAAQ2N,IAAN,MAASA,GAAE,iBAAiB,SAAS3N,EAAC,EAAQM,IAAN,MAASA,GAAE,iBAAiB,SAASN,EAAC,GAAG,IAAID,GAAE,KAAKsyO,GAAG,OAAO,OAAO,iBAAiB,SAASryO,EAAC,EAAEuwO,GAAIM,GAAG,UAAU9wO,GAAEqK,GAAEmmO,EAAGM,GAAG,QAAQsC,GAAG,CAAC,eAAe,GAAG,cAAc,GAAG,YAAY,EAAE,CAAC,GAAG,MAAMj2O,GAAEe,IAAG,CAAYA,GAAE,MAAb,UAAkBq0O,GAAG,EAAE,CAAC,EAAED,GAAG,QAAQ,OAAO,iBAAiB,UAAUn1O,EAAC,EAAEm1O,GAAG,oBAAoB,OAAO,iBAAiB,QAAQS,EAAE,EAAE,MAAM71O,GAAE,CAAA,EAAG+kB,GAAE/jB,IAAG,GAAeA,IAAN,MAAeA,GAAE,SAAgBsyO,GAAN,MAAgBA,EAAG,SAAStyO,GAAE,MAAM,IAAIC,GAAED,IAAG,CAACmzO,IAAIpvN,GAAE/jB,EAAC,GAAGy0O,GAAGz0O,EAAC,CAAC,EAAEwE,GAAExE,IAAG,CAACmzO,IAAIpvN,GAAE/jB,EAAC,GAAG00O,GAAE,CAAE,EAAEv1O,GAAE,CAAC,YAAY,WAAW,aAAa,aAAa,QAAQ,MAAM,EAAE+tB,GAAE,CAAC,QAAQ,WAAW,YAAY,SAAS,EAAE,OAAO,QAAQgnN,EAAE,EAAE,QAAS,CAAC,CAACl0O,GAAEd,EAAC,IAAI,CAACA,KAAIC,GAAE,SAASa,EAAC,EAAEhB,GAAE,KAAK,CAAC,MAAMgB,GAAE,SAASg1O,EAAE,CAAC,EAAE9nN,GAAE,SAASltB,EAAC,GAAGhB,GAAE,KAAK,CAAC,MAAMgB,GAAE,SAASC,EAAC,CAAC,EAAE,CAAC,EAAG,OAAO,QAAQk0O,EAAE,EAAE,QAAS,CAAC,CAACn0O,GAAEd,EAAC,IAAI,CAACA,KAAIC,GAAE,SAASa,EAAC,EAAEhB,GAAE,KAAK,CAAC,MAAMgB,GAAE,SAASi1O,EAAE,CAAC,EAAE/nN,GAAE,SAASltB,EAAC,GAAGhB,GAAE,KAAK,CAAC,MAAMgB,GAAE,SAASwE,EAAC,CAAC,EAAE,GAAI4sO,GAAGpyO,GAAE,KAAK,CAAC,MAAM,cAAc,SAAS41O,EAAE,CAAC,EAAE,MAAM9wN,GAAE,IAAI,CAAC8vN,EAAG,QAAQ,EAAE,EAAE/uJ,GAAE,IAAI,CAAC+uJ,EAAG,QAAQ,GAAGc,GAAE,CAAE,EAAE9wN,GAAE6nM,IAAI0oB,GAAG,UAAUA,GAAG,YAAY,OAAOvwN,MAAY5jB,GAAE4yO,GAAG,WAAb,MAAgC5yO,KAAT,QAAYA,GAAE,iBAAiB,YAAY8jB,EAAC,GAAU5kB,GAAE0zO,GAAG,WAAb,MAAgC1zO,KAAT,QAAYA,GAAE,iBAAiB,WAAW2lF,EAAC,GAAG7lF,GAAE,QAAS,CAAC,CAAC,MAAMgB,GAAE,SAASd,EAAC,IAAI,CAACgG,GAAE,QAASA,IAAG,CAAC,IAAIqC,IAAUA,GAAErC,GAAE,WAAZ,MAA+BqC,KAAT,QAAYA,GAAE,iBAAiBvH,GAAEd,EAAC,CAAC,CAAC,CAAE,CAAC,EAAG,IAAI,CAAC,IAAIc,GAAEd,GAAEk1O,GAAG,SAAS,OAAO,oBAAoB,SAASryO,EAAC,EAAQ2N,IAAN,MAASA,GAAE,oBAAoB,SAAS3N,EAAC,EAAQM,IAAN,MAASA,GAAE,oBAAoB,SAASN,EAAC,GAAGqyO,GAAG,OAAO,OAAO,oBAAoB,SAASryO,EAAC,EAAQD,IAAN,MAASA,KAAIsyO,GAAG,oBAAoB,OAAO,oBAAoB,QAAQS,EAAE,EAAET,GAAG,QAAQ,OAAO,oBAAoB,UAAUn1O,EAAC,EAAE2kB,MAAY5jB,GAAE4yO,GAAG,WAAb,MAAgC5yO,KAAT,QAAYA,GAAE,oBAAoB,YAAY8jB,EAAC,GAAU5kB,GAAE0zO,GAAG,WAAb,MAAgC1zO,KAAT,QAAYA,GAAE,oBAAoB,WAAW2lF,EAAC,GAAG7lF,GAAE,QAAS,CAAC,CAAC,MAAMgB,GAAE,SAASd,EAAC,IAAI,CAACgG,GAAE,QAASA,IAAG,CAAC,IAAIqC,IAAUA,GAAErC,GAAE,WAAZ,MAA+BqC,KAAT,QAAYA,GAAE,oBAAoBvH,GAAEd,EAAC,CAAC,CAAC,CAAE,CAAC,CAAE,CAAC,EAAG,CAACozO,EAAG4C,GAAG7B,GAAGM,GAAGE,GAAGnC,EAAEC,EAAEC,EAAEoC,GAAG9C,EAAEC,CAAC,CAAC,EAAEjsO,EAAAA,UAAG,IAAI,CAAC,IAAIlF,GAAEd,GAAE,IAAIgG,IAAUhG,IAAUc,GAAQuzO,IAAN,KAAS,OAAOA,GAAG,gBAA7B,MAAqDvzO,KAAT,OAAWA,GAAEC,KAAnE,MAAgFf,KAAT,OAAWA,GAAE,GAAG,CAACgG,IAAGqC,IAAIrC,GAAE,qBAAqBqC,EAAE,QAAQ,KAAK,KAAK,CAAC,MAAM,MAAMxF,GAAE,IAAI,iBAAkB/B,IAAG,CAAC,MAAMd,GAAE,CAAA,EAAG6C,GAAE,CAAA,EAAG/B,GAAE,QAASA,IAAG,CAA+J,GAA5IA,GAAE,OAAjB,cAA2CA,GAAE,gBAAtB,oBAAqCA,GAAE,OAAO,aAAa,iBAAiB,IAAIuH,EAAErI,GAAE,KAAKc,GAAE,MAAM,EAAEA,GAAE,WAAWuH,GAAGxF,GAAE,KAAK/B,GAAE,MAAM,GAAmBA,GAAE,OAAhB,YAAqB,CAAC,GAAGsyO,EAAG,CAAC,MAAMpzO,GAAE,CAAC,GAAGc,GAAE,YAAY,EAAE,OAAQA,IAAOA,GAAE,WAAN,GAAiB,GAAGkF,GAAE,GAAG,CAACnD,GAAE,KAAK,GAAG7C,GAAE,OAAQc,IAAGA,GAAE,QAAQkF,EAAC,EAAG,EAAEnD,GAAE,KAAK,GAAG7C,GAAE,QAASc,IAAG,CAAC,GAAGA,GAAE,iBAAiBkF,EAAC,CAAC,CAAC,CAAE,CAAC,MAAS,CAAC,CAAChG,GAAE,KAAMc,IAAG,CAAC,IAAId,GAAE,MAAM,CAAC,EAAE,GAAQA,GAAQc,IAAN,KAAQ,OAAOA,GAAE,YAA3B,MAA+Cd,KAAT,SAAkBA,GAAE,KAAKc,GAAEsyO,CAAE,KAAKgB,GAAG,EAAE,EAAEe,GAAG,EAAE,EAAE9B,EAAG,IAAI,EAAEthM,GAAE6hM,CAAE,EAAE7hM,GAAE8hM,CAAE,EAAE,GAAG,CAAC,CAAE,CAAC,GAAG7tO,GAAE,GAAG,CAAC,MAAMqC,GAAE,CAAC,GAAGvH,GAAE,UAAU,EAAE,OAAQA,IAAOA,GAAE,WAAN,CAAc,EAAGd,GAAE,KAAK,GAAGqI,GAAE,OAAQvH,IAAGA,GAAE,QAAQkF,EAAC,CAAC,CAAE,EAAEhG,GAAE,KAAK,GAAGqI,GAAE,QAASvH,IAAG,CAAC,GAAGA,GAAE,iBAAiBkF,EAAC,CAAC,CAAC,CAAE,CAAC,MAAS,CAAC,CAAC,CAAC,CAAC,GAAIhG,GAAE,QAAQ6C,GAAE,SAAS+xO,GAAI9zO,IAAG,CAAC,GAAGA,GAAE,OAAQA,IAAG,CAAC+B,GAAE,SAAS/B,EAAC,CAAC,EAAG,GAAGd,EAAC,CAAC,CAAE,CAAC,EAAG,OAAO6C,GAAE,QAAQ,SAAS,KAAK,CAAC,UAAU,GAAG,QAAQ,GAAG,WAAW,GAAG,gBAAgB,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,CAAC,EAAE,IAAI,CAACA,GAAE,WAAU,CAAE,CAAC,EAAG,CAACwF,EAAEtH,EAAQszO,IAAN,KAAS,OAAOA,GAAG,aAAajB,CAAE,CAAC,EAAEptO,EAAAA,UAAG,IAAI,CAACgwO,GAAE,CAAE,EAAG,CAACA,EAAE,CAAC,EAAEhwO,YAAG,IAAI,CAAC,GAAG,EAAQgsC,GAAN,MAAeA,EAAE,SAAS,MAAM,IAAI,KAAK,MAAMlxC,GAAE,IAAI,eAAgB,IAAI,CAAC,WAAY,IAAIk1O,IAAI,CAAE,CAAC,EAAG,OAAOl1O,GAAE,QAAQkxC,EAAE,OAAO,EAAE,IAAI,CAAClxC,GAAE,WAAU,CAAE,CAAC,EAAG,CAACkyO,EAAQhhM,GAAN,KAAQ,OAAOA,EAAE,OAAO,CAAC,EAAEhsC,EAAAA,UAAG,IAAI,CAAC,IAAIlF,GAAE,MAAMd,GAAE,SAAS,cAAc,QAAQ4a,CAAC,IAAI,EAAE5U,GAAE,CAAC,GAAG2uO,GAAG30O,EAAC,EAAEozO,GAAIptO,GAAE,SAASotO,CAAE,GAAGC,GAAWvyO,GAAE6zO,GAAG,CAAC,KAAd,MAA2B7zO,KAAT,OAAWA,GAAEd,EAAC,CAAC,EAAG,CAAC4a,EAAE+5N,GAAGvB,CAAE,CAAC,EAAEptO,EAAAA,UAAG,KAAKktO,GAAGiC,GAAG,EAAE,EAAE,IAAI,CAACpjM,GAAE6hM,CAAE,EAAE7hM,GAAE8hM,CAAE,CAAC,GAAI,EAAE,EAAE7tO,EAAAA,UAAG,IAAI,CAAC,IAAIlF,GAAE,IAAId,IAAUc,GAAQuzO,IAAN,KAAS,OAAOA,GAAG,gBAA7B,MAAqDvzO,KAAT,OAAWA,GAAEC,EAAE,GAAG,CAACf,IAAGqI,IAAIrI,GAAE,qBAAqBqI,EAAE,QAAQ,KAAK,KAAK,CAAC,MAAMrI,GAAE,GAAG,CAAC,MAAMc,GAAE,MAAM,KAAK,SAAS,iBAAiBd,EAAC,CAAC,EAAE40O,GAAG9zO,EAAC,CAAC,MAAS,CAAC8zO,GAAG,CAAA,CAAE,CAAC,CAAC,EAAG,CAACvsO,EAAEtH,EAAQszO,IAAN,KAAS,OAAOA,GAAG,YAAY,CAAC,EAAEruO,EAAAA,UAAG,IAAI,CAAC4tO,EAAG,UAAU7hM,GAAE6hM,CAAE,EAAEyB,GAAGrD,CAAC,EAAE,EAAG,CAACA,CAAC,CAAC,EAAE,MAAMiE,IAAW,GAAS5B,IAAN,KAAS,OAAOA,GAAG,WAA9B,MAAiD,KAAT,OAAY,GAAGrB,EAAEkD,GAAGjC,IAAI,OAAO,KAAKF,EAAG,aAAa,EAAE,OAAO,EAAE,OAAOj0O,EAAAA,oBAAEE,EAAG,KAAK,CAAC,KAAKc,IAAG,CAAC,GAASA,IAAN,MAAeA,GAAE,aAAa,GAAG,CAAC,SAAS,cAAcA,GAAE,YAAY,CAAC,MAAS,CAAC,OAAO,KAAK,QAAQ,KAAK,oBAAoBA,GAAE,YAAY,+BAA+B,CAAC,CAACwzO,GAASxzO,IAAI,IAAI,EAASA,IAAN,MAAeA,GAAE,MAAOu0O,GAAGv0O,GAAE,KAAK,EAAEq0O,GAAG,EAAE,CAAC,EAAE,MAAMr0O,IAAG,CAAQA,IAAN,MAAeA,GAAE,MAAOw0O,GAAGx0O,GAAE,KAAK,EAAEq0O,GAAG,EAAE,CAAC,EAAE,aAAa/B,EAAG,MAAMW,EAAG,MAAM,OAAO,GAAQI,IAAI,CAACpmN,GAAGkoN,IAAIC,GAAG,EAAE,EAAG/B,IAAI,CAACpmN,GAAGkoN,GAAGn1O,EAAE,cAAc6jB,EAAE,CAAC,GAAGtc,EAAE,KAAKorO,GAAG,UAAUzlN,GAAE,gBAAgBikB,GAAE,QAAQqgM,GAAE,QAAQA,GAAEztN,CAAC,EAAE1hB,EAAE,wBAAwB4wO,EAAG,KAAK,GAAG9hM,GAAEikM,GAAG,OAAO,SAAS,EAAEA,GAAG,sBAAsB,yBAAmCxxN,IAAV,SAAautB,GAAE,MAAMs6K,GAAGt6K,GAAE,SAAS,EAAE,gBAAgBnxC,IAAG,CAACixC,GAAE+hM,EAAE,EAAEG,IAAgBnzO,GAAE,eAAd,YAA6BszO,GAAG,EAAE,EAAEE,GAAG,IAAI,EAAQxB,GAAN,MAASA,EAAC,EAAG,EAAE,MAAM,CAAC,GAAGH,EAAE,GAAGoB,EAAG,cAAc,QAAiBT,IAAT,QAAa4C,GAAG5C,EAAG,MAAM,EAAE,IAAII,EAAE,EAAEuC,GAAGn1O,EAAE,cAAc6jB,EAAE,CAAC,UAAUqJ,GAAE,sBAAsBikB,GAAE,MAAMqgM,GAAE,MAAM1vO,EAAEyvO,GAAGpgM,GAAE,OAAO,EAAE,MAAM,CAAC,GAAG8hM,EAAG,mBAAmB,WAAWR,EAAG,qDAAqDA,CAAE,QAAQ,OAAO,kBAAkB,GAAGC,EAAE,IAAI,EAAE,IAAIG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAEnB,GAAE,CAAC,CAAC,QAAQxyO,CAAC,IAAIc,EAAE,cAAc,OAAO,CAAC,wBAAwB,CAAC,OAAOd,CAAC,CAAC,CAAC,EAAEyyO,GAAE3xO,EAAE,WAAY,CAAC,CAAC,GAAGd,EAAE,SAASqI,EAAE,aAAa,EAAE,QAAQlF,EAAE,KAAKP,EAAE,OAAO9C,EAAE,UAAU+kB,EAAE,eAAejK,EAAE,QAAQ7Z,EAAE,OAAO,MAAMuE,EAAE,MAAM,OAAOrF,EAAE,GAAG,QAAQgN,EAAE,MAAM,SAAS2X,EAAE,KAAK,OAAO+gE,EAAE,CAAC,OAAO,EAAE,YAAYjhE,EAAE,GAAG,iBAAiBotN,EAAE,WAAW,YAAYntN,EAAE,UAAUotN,EAAE,EAAE,UAAU3gM,EAAE,EAAE,MAAM6gM,EAAE,GAAG,OAAOpxO,EAAE,GAAG,QAAQqxO,EAAE,GAAG,UAAUC,EAAE,GAAG,WAAWC,EAAE,GAAG,cAAcrgM,EAAE,GAAG,cAAchkB,EAAE,GAAG,WAAWskN,EAAE,YAAY9lB,EAAE,kBAAkBgmB,EAAE,mBAAmBjvO,EAAE,GAAG,MAAM2uC,EAAE,SAASqgM,EAAE,OAAOG,EAAE,cAAcC,EAAE,GAAG,sBAAsB7+B,EAAE,GAAG,OAAO8+B,EAAE,QAAQC,EAAE,WAAWC,EAAE,UAAUC,EAAE,UAAUC,EAAE,UAAUC,EAAE,UAAUhhM,EAAE,eAAeihM,GAAE,KAAKC,GAAE,SAAS,EAAEC,KAAI,CAAC,KAAK,CAACC,GAAGC,EAAE,EAAExwO,EAAAA,SAAEM,CAAC,EAAE,CAAC6pF,EAAGsmJ,CAAE,EAAEzwO,EAAAA,SAAED,CAAC,EAAE,CAAC2wO,GAAGC,CAAE,EAAE3wO,EAAAA,SAAEyC,CAAC,EAAE,CAACmuO,GAAG0C,EAAE,EAAEtzO,WAAE9B,CAAC,EAAE,CAAC2yO,GAAGC,EAAE,EAAE9wO,EAAAA,SAAE5C,CAAC,EAAE,CAAC2zO,GAAGC,EAAE,EAAEhxO,EAAAA,SAAEkvO,CAAC,EAAE,CAAC+B,GAAGC,EAAE,EAAElxO,EAAAA,SAAEuuC,CAAC,EAAE,CAAC4iM,GAAGC,EAAE,EAAEpxO,WAAEovO,CAAC,EAAE,CAACiC,GAAGC,CAAE,EAAEtxO,EAAAA,SAAEhC,CAAC,EAAE,CAACuzO,GAAGC,EAAE,EAAExxO,EAAAA,SAAEoK,CAAC,EAAE,CAACqnO,GAAGC,EAAE,EAAE1xO,EAAAA,SAAE8iF,CAAC,EAAE,CAAC6uJ,GAAGC,EAAE,EAAE5xO,WAAEivO,CAAC,EAAE,CAAC5gO,GAAGwjO,EAAE,EAAE7xO,EAAAA,SAAE,IAAI,EAAE,CAAC8xO,GAAG,EAAE,EAAE9xO,EAAAA,SAAE,IAAI,EAAEgyO,GAAG90O,EAAAA,OAAE8zM,CAAC,EAAE,CAAC,WAAWihC,GAAG,aAAaC,EAAE,EAAE5vM,GAAEnlC,CAAC,EAAEg1O,GAAGl0O,IAASA,IAAN,KAAQ,OAAOA,GAAE,kBAAiB,EAAG,OAAQ,CAACd,GAAEgG,KAAI,CAAC,IAAIqC,GAAE,OAAGrC,GAAE,WAAW,eAAe,IAAGhG,GAAEgG,GAAE,QAAQ,iBAAiB,EAAE,CAAC,GAAUqC,GAAQvH,IAAN,KAAQ,OAAOA,GAAE,aAAakF,EAAC,KAAzC,MAAsDqC,KAAT,OAAWA,GAAE,MAAYrI,EAAC,EAAG,CAAA,CAAE,EAAEi1O,GAAGn0O,IAAG,CAAC,MAAMd,GAAE,CAAC,MAAMc,IAAG,CAAC,IAAId,GAAEwzO,GAAWxzO,GAAEc,MAAV,MAAuBd,KAAT,OAAWA,GAAEsF,CAAC,CAAC,EAAE,QAAQxE,IAAG,CAACuyO,GAASvyO,IAAIqC,CAAC,CAAC,EAAE,KAAKrC,IAAG,CAACwyO,EAASxyO,IAAI8B,CAAC,CAAC,EAAE,QAAQ9B,IAAG,CAAC,IAAId,GAAEm2O,IAAWn2O,GAAEc,MAAV,MAAuBd,KAAT,OAAWA,GAAEe,CAAC,CAAC,EAAE,OAAOD,IAAG,CAAC6yO,GAAU7yO,KAAP,KAASb,EAAE,OAAOa,EAAC,CAAC,CAAC,EAAE,QAAQA,IAAG,CAAC,IAAId,GAAEq0O,IAAWr0O,GAAEc,MAAV,MAAuBd,KAAT,OAAWA,GAAEiN,CAAC,CAAC,EAAE,OAAOnM,IAAG,CAAC,MAAMd,GAAQc,IAAN,KAAQ,OAAOA,GAAE,MAAM,GAAG,EAAEyzO,GAASv0O,IAAI2lF,CAAC,CAAC,EAAE,oBAAoB7kF,IAAG,CAAC,IAAId,GAAEy0O,IAAWz0O,GAAEc,MAAV,MAAuBd,KAAT,OAAWA,GAAE8xO,CAAC,CAAC,EAAE,aAAahxO,IAAG,CAAC+yO,GAAU/yO,KAAP,KAASixO,EAAE,OAAOjxO,EAAC,CAAC,CAAC,EAAE,aAAaA,IAAG,CAACizO,GAAUjzO,KAAP,KAASswC,EAAE,OAAOtwC,EAAC,CAAC,CAAC,EAAE,MAAMA,IAAG,CAACmzO,GAAUnzO,KAAP,KAASmxO,EAAWnxO,KAAT,MAAU,CAAC,EAAE,OAAOA,IAAG,CAACqzO,EAAUrzO,KAAP,KAASD,EAAWC,KAAT,MAAU,CAAC,EAAE,aAAaA,IAAG,CAAC4zO,GAAG5zO,EAAC,CAAC,CAAC,EAAE,OAAO,OAAOd,EAAC,EAAE,QAASc,IAAGA,GAAE,IAAI,CAAC,EAAG,OAAO,QAAQA,EAAC,EAAE,QAAS,CAAC,CAACA,GAAEkF,EAAC,IAAI,CAAC,IAAIqC,IAAUA,GAAErI,GAAEc,EAAC,KAAb,MAA0BuH,KAAT,QAAYA,GAAE,KAAKrI,GAAEgG,EAAC,CAAC,CAAC,CAAE,EAAEA,YAAG,IAAI,CAACqtO,GAAGlwO,CAAC,CAAC,EAAG,CAACA,CAAC,CAAC,EAAE6C,EAAAA,UAAG,IAAI,CAACstO,EAAG1wO,CAAC,CAAC,EAAG,CAACA,CAAC,CAAC,EAAEoD,EAAAA,UAAG,IAAI,CAACwtO,EAAGluO,CAAC,CAAC,EAAG,CAACA,CAAC,CAAC,EAAEU,EAAAA,UAAG,IAAI,CAACmwO,GAAGp1O,CAAC,CAAC,EAAG,CAACA,CAAC,CAAC,EAAEiF,EAAAA,UAAG,IAAI,CAAC2tO,GAAG1zO,CAAC,CAAC,EAAG,CAACA,CAAC,CAAC,EAAE+F,YAAG,IAAI,CAAC6tO,GAAG9B,CAAC,CAAC,EAAG,CAACA,CAAC,CAAC,EAAE/rO,EAAAA,UAAG,IAAI,CAAC+tO,GAAG3iM,CAAC,CAAC,EAAG,CAACA,CAAC,CAAC,EAAEprC,EAAAA,UAAG,IAAI,CAACiuO,GAAGhC,CAAC,CAAC,EAAG,CAACA,CAAC,CAAC,EAAEjsO,EAAAA,UAAG,IAAI,CAACmuO,EAAGtzO,CAAC,CAAC,EAAG,CAACA,CAAC,CAAC,EAAEmF,EAAAA,UAAG,IAAI,CAACyuO,GAAG3C,CAAC,CAAC,EAAG,CAACA,CAAC,CAAC,EAAE9rO,EAAAA,UAAG,IAAI,CAAC6uO,GAAG,UAAUhhC,GAAG,QAAQ,KAAK,oEAAoE,CAAC,EAAG,CAACA,CAAC,CAAC,EAAE7tM,YAAG,IAAI,CAAc,OAAO,OAApB,KAA4B,OAAO,cAAc,IAAI,YAAY,8BAA8B,CAAC,OAAO,CAAC,YAAqB6tM,IAAT,OAAW,YAAYA,CAAC,CAAC,CAAC,CAAC,CAAC,EAAG,EAAE,EAAE7tM,EAAAA,UAAG,IAAI,CAAC,IAAIlF,GAAE,MAAMkF,GAAE,IAAI,IAAI8uO,EAAE,EAAE,IAAIjyO,GAAE,EAAE,GAAG,CAACA,IAAG7C,IAAI6C,GAAE,qBAAqB7C,EAAE,QAAQ,KAAK,KAAK,CAAC,MAAM6C,GAAE,GAAG,CAAC,SAAS,iBAAiBA,EAAC,EAAE,QAAS/B,IAAG,CAACkF,GAAE,IAAI,CAAC,QAAQlF,EAAC,CAAC,CAAC,CAAC,CAAE,MAAS,CAAC,QAAQ,KAAK,oBAAoB+B,EAAC,+BAA+B,CAAC,CAAC,MAAMM,GAAE,SAAS,cAAc,QAAQkF,CAAC,IAAI,EAAE,GAAGlF,IAAG6C,GAAE,IAAI,CAAC,QAAQ7C,EAAC,CAAC,EAAE,CAAC6C,GAAE,KAAK,MAAM,IAAI,KAAK,MAAMpD,IAAU9B,GAAQ6zO,IAAMxxO,MAAtB,MAAmCrC,KAAT,OAAWA,GAAEi0O,GAAG,QAAQh1O,GAAE,IAAI,iBAAkBe,IAAG,CAACA,GAAE,QAASA,IAAG,CAAC,IAAId,GAAE,GAAG,CAAC4C,IAAkB9B,GAAE,OAAjB,cAAuB,EAAE,GAAQd,GAAEc,GAAE,iBAAZ,MAAqCd,KAAT,SAAkBA,GAAE,WAAW,eAAe,GAAG,OAAO,MAAMgG,GAAEgvO,GAAGpyO,EAAC,EAAEqyO,GAAGjvO,EAAC,CAAC,CAAC,CAAE,CAAC,EAAGlG,GAAE,CAAC,WAAW,GAAG,UAAU,GAAG,QAAQ,EAAE,EAAE,GAAG8C,GAAE,CAAC,MAAM9B,GAAEk0O,GAAGpyO,EAAC,EAAEqyO,GAAGn0O,EAAC,EAAEf,GAAE,QAAQ6C,GAAE9C,EAAC,CAAC,CAAC,MAAM,IAAI,CAACC,GAAE,YAAY,CAAC,EAAG,CAAC+0O,GAAGC,GAAGJ,GAAGtsO,EAAE,CAAC,CAAC,EAAErC,EAAAA,UAAG,IAAI,CAAQisC,GAAN,MAAeA,EAAE,QAAS,QAAQ,KAAK,uEAAuE,EAAE0gM,GAAG,CAACX,GAAE,SAAS,GAAGW,CAAC,EAAE,GAAG,QAAQ,KAAK,oBAAoBA,CAAC,8BAA8B,EAAS1gM,GAAN,MAAeA,EAAE,SAAU,QAAQ,KAAK,yEAAyE,EAAE2gM,GAAG,CAACZ,GAAE,UAAU,GAAGY,CAAC,EAAE,GAAG,QAAQ,KAAK,oBAAoBA,CAAC,+BAA+B,CAAC,EAAG,CAAA,CAAE,EAAE,IAAIsC,GAAGtwN,EAAE,MAAMuwN,GAAGp1O,EAAAA,OAAE,IAAI,EAAE,GAAGD,EAAE,CAAC,MAAME,GAAEF,EAAE,CAAC,SAAe60O,IAAN,KAAS,OAAOA,GAAG,aAAa,sBAAsB,IAAIvB,IAAI,KAAK,aAAauB,EAAE,CAAC,EAAEO,GAAGl1O,GAAEc,EAAE,cAAc,MAAM,CAAC,IAAIq0O,GAAG,UAAU,+BAA+B,EAAEn1O,EAAC,EAAE,IAAI,MAAMozO,KAAK8B,GAAG9B,IAAIpmJ,IAAKkoJ,GAAGp0O,EAAE,cAAc0xO,GAAE,CAAC,QAAQxlJ,CAAE,CAAC,GAAG,MAAMooJ,GAAG,CAAC,WAAWjC,GAAE,GAAGnzO,EAAE,SAASqI,EAAE,aAAa,EAAE,UAAU2lB,GAAEnJ,EAAE3T,EAAE,EAAE,eAAe0J,EAAE,QAAQs6N,GAAG,kBAAkBC,GAAG,MAAM5B,GAAG,QAAQE,GAAG,OAAOC,GAAG,QAAQU,GAAG,OAAOE,GAAG,YAAY5vN,EAAE,iBAAiB8vN,GAAG,YAAY7vN,EAAE,UAAUivN,GAAG,UAAUE,GAAG,MAAME,GAAG,OAAOE,GAAG,QAAQhC,EAAE,UAAUC,EAAE,WAAWC,EAAE,cAAcrgM,EAAE,cAAchkB,EAAE,WAAWskN,EAAE,YAAY9lB,EAAE,kBAAkBgmB,EAAE,mBAAmBjvO,EAAE,MAAM2uC,EAAE,SAASqgM,EAAE,OAAOG,EAAE,cAAcC,EAAE,OAAOC,EAAE,QAAQC,EAAE,WAAWC,EAAE,UAAUC,EAAE,UAAUC,EAAE,UAAUC,EAAE,UAAUhhM,EAAE,eAAeihM,GAAE,aAAa0B,GAAG,gBAAgB7zO,IAAG,GAAGA,EAAC,EAAE,KAAKoyO,EAAC,EAAE,OAAOpyO,EAAE,cAAc4O,GAAE,CAAC,GAAG0lO,EAAE,CAAC,CAAC,GAAiB,OAAO,OAApB,KAA4B,OAAO,iBAAiB,8BAA+B,GAAG,CAAC,EAAE,OAAO,aAAatD,GAAE,CAAC,IAAI,k0BAAk0B,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,aAAaA,GAAE,CAAC,IAAI;AAAA,slCAC91lB,KAAK,MAAM,CAAC,CAAC,CAAC,ECGpmC,SAASsE,IAAa,CAClB,KAAM,CAAE,EAAAp2O,CAAA,EAAM+V,GAAe,QAAQ,EAC/B+H,EAAQrB,GAAS,IAAI,MAAA,EACrB45N,EAAmB55N,GAAS,IAAI,iBAAA,EAChCgkN,EAAsBhkN,GAAS,IAAI,oBAAA,EACnC65N,EAAa75N,GAAS,IAAI,WAAA,EAC1B85N,EAAgB95N,GAAS,IAAI,cAAA,EAC7B+5N,EAAgB/5N,GAAS,IAAI,cAAA,EAC7Bg6N,EAAmBh6N,GAAS,IAAI,iBAAA,EAChCo/M,EAAkBp/M,GAAS,IAAI,gBAAA,EAE/BikN,EAAa5iN,GAAA,YAAAA,EAAO,eAEpB,CAAE,WAAAsjN,CAAA,EAAeZ,GAAA,EAEjBkW,EAAmBruN,EAAAA,QAAQ,IAC7B,CAAC,OAAQ,UAAW,MAAO,MAAO,SAAU,MAAO,MAAO,OAAQ,UAAU,EACvE,IAAIvnB,GAAK,QAAQA,CAAC,qBAAqB,EAAE,KAAK,IAAI,EACrD,CAAA,CAAC,EAED61O,EAAuBN,EAAmB3V,GAAA,YAAAA,EAAY,QAAU5/N,EAAE,IAAMu1O,GAAoB,KAE5FO,EAAqB98M,GAAwB,CAC/C,GAAIA,EAAK,YAAY,MAAQ,EACzB,OAAO,KAEX,MAAM+8M,EAAQ/8M,EAAK,YAAY,OAAA,EAAS,OAAO,MAE/C,OAAO+8M,GAAS,KAAO1e,EAAAA,IAAC,IAAA,CAAG,SAAA0e,EAAM,KAAK,EAAO,IACjD,EAEMC,EAAwB,CAACC,EAAwCC,IAC5D,GAAGD,GAA4B,EAAE,GAAGC,EAAqB,KAAOA,EAAqB,EAAE,GAG5FC,EAAmB,CAACC,EAAiBlzO,EAAmBiG,IAAmB,OAC7E,MAAMktO,EAAeltO,EAAO,OACtB8sO,EAAcI,KAAgBtzO,EAAAia,GAAA,YAAAA,EAAO,WAAW,QAAQq5N,KAA1B,YAAAtzO,EAAyC,OACvEmzO,EAAqB/sO,EAAO,mBAC5BmtO,EAAYN,EAAsBC,EAAaC,CAAkB,EACvE,GAAIE,GAAW,MACX,MAAO,GAAGl3O,EAAE,4BAA4B,CAAC,IAAIo3O,CAAS,GAE1D,MAAMC,EAAOrzO,EAAQ,OAAOgC,GAAKA,EAAE,MAAQ,KAAK,EAChD,OAAIqxO,EAAK,QAAU,EACR,GAAGr3O,EAAE,8BAA8B,CAAC,IAAIo3O,CAAS,GAErD,GAAGp3O,EAAE,oCAAoC,CAAC,GAAG,EAAIq3O,EAAK,UAAUx0O,GAAKA,GAAKoH,CAAM,CAAC,IAAImtO,CAAS,EACzG,EAGME,EAAgB,CAAC3zO,EAAcuzO,EAAiBlzO,EAAmBe,IACjEpB,GAAQ,MACKszO,EAAiBC,EAASlzO,EAASA,EAAQe,CAAK,CAAC,EAEvDpB,GAAQ,SACXuzO,GAAW,MACJl3O,EAAE,sBAAsB,EACxBk3O,GAAW,OACXl3O,EAAE,uBAAuB,EAEzBA,EAAE,yBAA0B,CAAE,OAAU,EAAI+E,EAAO,EAGvD,GAITwyO,EAAmB,CAAC5zO,EAAc6zO,EAAgBC,IAAgC,CACpF,MAAMC,EAAgBF,EAAO,QAAQ,OAAO,CAAC,EAAGzyO,IAAUA,GAAS0yO,CAAmB,EAAE,IAAIzxO,GAAKA,EAAE,QAAQ,EAC3G,GAAIrC,GAAQ,MAAO,CACf,MAAMg0O,EAAarB,EAAW,OAAQtwO,GAAW,CAAC0xO,EAAc,SAAS1xO,CAAC,CAAC,EAC3E2xO,EAAW,KAAKH,EAAO,QAAQC,CAAmB,EAAE,QAAQ,EAC5DlB,EAAcoB,EAAY,EAAI,CAClC,SAAWh0O,GAAQ,SAAU,CACzB,MAAMg0O,EAAanB,EAAc,OAAQxwO,GAAW,CAAC0xO,EAAc,SAAS1xO,CAAC,CAAC,EAC9E2xO,EAAW,KAAKH,EAAO,QAAQC,CAAmB,EAAE,QAAQ,EAC5DhB,EAAiBkB,EAAY,EAAI,CACrC,CACJ,EAEMC,EAAiB,CAAC99M,EAAqB29M,IAAgC,CACzE,MAAM9zO,EAAOm2B,EAAK,KACZ09M,EAAS19M,EAAK,OACd91B,EAAUwzO,EAAO,QAAQ,IAAI,CAACxxO,EAAGjB,KAAmB,CAAE,OAAQiB,EAAG,MAAAjB,CAAA,EAAiB,EAExF,OACIozN,EAAAA,IAAChzD,GAAM,MAAN,CACG,MAAO,CAAE,QAAS,OAAQ,cAAe,SAAU,IAAK,CAAA,EACxD,SAAWrkK,GAAMy2O,EAAiB5zO,EAAM6zO,EAAQ12O,EAAE,OAAO,KAAK,EAC9D,MAAO22O,EACP,QAASzzO,EAAQ,IAAKgC,IAAe,CAAE,MAAOA,EAAE,MAAO,MAAOsxO,EAAc3zO,EAAMqC,EAAE,OAAO,KAAMwxO,EAAO,QAASxxO,EAAE,KAAK,CAAA,EAAM,CAAA,CAAA,CAE1I,EAEM6xO,EAAoB,CAACl0O,EAAc6zO,IAAmB,CACxD,GAAI7zO,GAAQ,MAAO,CACf,MAAMm0O,EAAQN,EAAO,QAAQ,UAAWvtO,GAAW,OAAO,OAAOqsO,CAAU,EAAE,SAASrsO,EAAO,QAAQ,CAAC,EACtG,GAAI6tO,GAAS,GACT,OAAOA,EACJ,CAEH,MAAMC,EAASP,EAAO,QAAQ,UAAWvtO,GAAWA,EAAO,MAAQ,KAAK,EACxE,OAAI8tO,GAAU,GACHA,EAEJ,CACX,CACJ,SAAWp0O,GAAQ,SAAU,CACzB,MAAMq0O,EAAYR,EAAO,QAAQ,UAAWvtO,GAAW,OAAO,OAAOusO,CAAa,EAAE,SAASvsO,EAAO,QAAQ,CAAC,EAC7G,OAAI+tO,GAAa,GACNA,EAEA,CAEf,CAEA,MAAO,EACX,EAGMC,EAAcn+M,GAAwB,CACxC,MAAMn2B,EAAOm2B,EAAK,KACZ09M,EAAS19M,EAAK,OACpB,GAAI09M,IAAW,OACX,OAAO,KAGX,MAAMU,EAAoBL,EAAkBl0O,EAAM6zO,CAAM,EAClDN,EAAUp9M,EAAK,OAAQ,QAAQo+M,CAAiB,EAAE,KAElDl0O,EAAU4zO,EAAe99M,EAAMo+M,CAAiB,EAEtD,cACK,MAAA,CACG,SAAA,CAAA/f,EAAAA,IAAC,KAAA,EAAG,SACH,IAAA,CAAG,SAAA,CAAAn4N,EAAE,6BAA8B,CAAE,KAAQs3O,EAAc3zO,EAAMuzO,EAASM,EAAO,QAASU,CAAiB,EAAG,EAAE,GAAA,EAAC,SACjH,IAAA,CAAG,SAAA,CAAAl4O,EAAE,4BAA4B,EAAE,GAAA,EAAC,EACpCgE,CAAA,EACL,CAER,EAGMm0O,EAAqB5xK,GAAyE,SAChG,MAAM4hC,GAAOvkG,GAAAC,EAAA0iE,EAAO,eAAP,YAAA1iE,EAAqB,YAArB,YAAAD,EAAkE,QAC/E,OAAOukG,EAAMgwH,EAAAA,IAAC,OAAA,CAAM,SAAAiJ,EAAWj5H,CAAG,EAAE,EAAU,IAClD,EAEA,cACK,MAAA,CAGG,SAAA,CAAAgwH,EAAAA,IAAC5wE,GAAA,CAAQ,GAAG,kBACR,QAAQ,OACR,MAAO,CAAE,OAAQ,CAAA,EACjB,OAAQ,GACR,UAAW,IACX,aAAcmvF,EACd,OAAQyB,CAAA,CAAA,GAEXtc,GAAA,YAAAA,EAAiB,KAAM1D,MAACoJ,GAAA,CAAiB,MAAO1F,EAAgB,GAAI,EAEpE8a,EACGze,EAAAA,KAACxrH,GAAA,CACG,MAAO00H,EAAWuV,EAAsB,IAAI,EAC5C,KAAMA,GAAwB,MAAQA,GAAwB,KAC9D,SAAU,IAAMlW,EAAoB,IAAI,EACxC,OACItI,EAAAA,IAACx7I,GAAA,CAAO,KAAK,UAAU,QAAS,IAAM8jJ,EAAoB,IAAI,EAAI,SAAAzgO,EAAE,IAAI,CAAA,CAAE,EAG7E,SAAA,CAAA22O,EAAsB,QAAU,GAAKxe,EAAAA,IAAC,IAAA,CAAG,SAAA,GAAGn4N,EAAE,kBAAkB,CAAC,KAAK22O,EAAsB,MAAM,EAAA,CAAG,EAAO,GAC5GA,EAAsB,MAAQ,GAAKxe,EAAAA,IAAC,IAAA,CAAG,SAAA,GAAGn4N,EAAE,gBAAgB,CAAC,KAAK22O,EAAsB,IAAI,GAAG,EAAO,GACtGC,EAAkBD,CAAqB,EACvCsB,EAAWtB,CAAqB,CAAA,CAAA,CAAA,EAErC,IAAA,EACR,CAER,CC7LA,MAAMyB,GAAmBpiO,GAA0B2G,EAAM,cAAc,MAAO,CAAE,MAAO,GAAI,OAAQ,GAAI,QAAS,YAAa,MAAO,6BAA8B,YAAa,6BAA8B,GAAG3G,CAAK,EAAoB2G,EAAM,cAAc,IAAK,CAAE,UAAW,wDAAyD,GAAI,IAAI,EAAoBA,EAAM,cAAc,UAAW,CAAE,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,IAAK,KAAM,UAAW,UAAW,mBAAoB,GAAI,WAAY,EAAmBA,EAAM,cAAc,OAAQ,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,OAAQ,UAAW,YAAa,EAAG,GAAI,OAAO,CAAE,CAAC,EAAmBA,EAAM,cAAc,IAAK,CAAE,UAAW,wDAAyD,GAAI,MAAwBA,EAAM,cAAc,UAAW,CAAE,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,IAAK,KAAM,UAAW,UAAW,mBAAoB,GAAI,aAAc,EAAmBA,EAAM,cAAc,OAAQ,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,OAAQ,UAAW,YAAa,EAAG,GAAI,UAAW,CAAC,EAAmBA,EAAM,cAAc,IAAK,CAAE,UAAW,uDAAwD,GAAI,QAA0BA,EAAM,cAAc,UAAW,CAAE,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,IAAK,KAAM,UAAW,UAAW,mBAAoB,GAAI,aAAc,EAAmBA,EAAM,cAAc,OAAQ,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,OAAQ,UAAW,YAAa,EAAG,GAAI,UAAW,CAAC,EAAmBA,EAAM,cAAc,IAAK,CAAE,UAAW,wDAAyD,GAAI,SAA2BA,EAAM,cAAc,UAAW,CAAE,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,IAAK,KAAM,UAAW,UAAW,mBAAoB,GAAI,aAAa,CAAE,EAAmBA,EAAM,cAAc,OAAQ,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,OAAQ,UAAW,YAAa,EAAG,GAAI,UAAW,CAAC,EAAmBA,EAAM,cAAc,IAAK,CAAE,UAAW,uDAAwD,GAAI,QAA0BA,EAAM,cAAc,UAAW,CAAE,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,IAAK,KAAM,UAAW,UAAW,mBAAoB,GAAI,YAAY,CAAE,EAAmBA,EAAM,cAAc,OAAQ,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,OAAQ,UAAW,YAAa,EAAG,GAAI,UAAW,CAAC,EAAmBA,EAAM,cAAc,IAAK,CAAE,UAAW,sDAAuD,GAAI,MAAM,EAAoBA,EAAM,cAAc,UAAW,CAAE,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,IAAK,KAAM,UAAW,UAAW,mBAAoB,GAAI,YAAY,CAAE,EAAmBA,EAAM,cAAc,OAAQ,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,OAAQ,UAAW,YAAa,EAAG,GAAI,SAAS,CAAE,CAAC,CAAC,ECArkF07N,GAAsBriO,GAA0B2G,EAAM,cAAc,MAAO,CAAE,MAAO,GAAI,OAAQ,GAAI,QAAS,YAAa,MAAO,6BAA8B,GAAG3G,CAAK,EAAoB2G,EAAM,cAAc,OAAQ,CAAE,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,OAAQ,UAAW,YAAa,GAAG,CAAE,EAAmBA,EAAM,cAAc,IAAK,CAAE,UAAW,kBAAkB,EAAoBA,EAAM,cAAc,UAAW,CAAE,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,IAAK,KAAM,UAAW,UAAW,oBAAoB,CAAE,EAAmBA,EAAM,cAAc,OAAQ,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,OAAQ,UAAW,YAAa,CAAC,CAAE,EAAmBA,EAAM,cAAc,OAAQ,CAAE,EAAG,yBAA0B,KAAM,SAAS,CAAE,CAAC,EAAmBA,EAAM,cAAc,IAAK,CAAE,UAAW,mBAAmB,EAAoBA,EAAM,cAAc,UAAW,CAAE,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,IAAK,KAAM,UAAW,UAAW,oBAAoB,CAAE,EAAmBA,EAAM,cAAc,OAAQ,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,OAAQ,UAAW,YAAa,CAAC,CAAE,EAAmBA,EAAM,cAAc,OAAQ,CAAE,EAAG,sBAAuB,KAAM,SAAS,CAAE,CAAC,CAAC,ECOpmC27N,GAAc9nO,GAAe,KAAK,MAAMA,CAAC,EAAG,WAAW,SAAS,EAAG,GAAG,EAEtE+nO,GAAcC,GAAmB,CACnC,MAAMC,EAAOH,GAAWE,EAAS,IAAO,EAAE,EACpCE,EAAOJ,GAAYE,EAAS,IAAQ,EAAE,EAC5C,MAAO,GAAGC,CAAI,IAAIC,CAAI,EAC1B,EAEMC,GAAwBvnM,GAAe,KAQ7C,SAASwnM,GAAe,CAAE,cAAAC,EAAgB,GAAyB,CAC/D,KAAM,CAAE,CAAA,EAAM9iO,GAAe,QAAQ,EAE/B2lN,EAAkBj/M,GAAS,IAAI,gBAAA,EAC/B8gN,EAAkB9gN,GAAS,IAAI,gBAAA,EAC/BkhN,EAAgBlhN,GAAS,IAAI,cAAA,EAE7B,CAACq8N,EAAgBC,CAAiB,EAAIhiO,EAAAA,SAAS,OAAO,EACtD,CAACiiO,EAAgBC,CAAiB,EAAIliO,EAAAA,SAAS,OAAO,EACtD,CAACmiO,EAAYC,CAAa,EAAIpiO,EAAAA,SAAS,QAAQ,EAC/C,CAACqiO,EAAiBC,CAAkB,EAAItiO,EAAAA,SAAS8hO,GAAiB,CAAC,EAEnES,EAAY5jO,EAAAA,OAAO,CAAC,EACpB6jO,EAAa7jO,EAAAA,OAAO,EAAK,EAE/BC,EAAAA,UAAU,IAAM,CACZ,GAAIkjO,EAAgB,EAAG,CACnBQ,EAAmBR,CAAa,EAChC,MAAMW,EAAcjB,GAAWM,CAAa,EAC5CI,EAAkBO,CAAW,CACjC,CACJ,EAAG,CAACX,CAAa,CAAC,EAElB,MAAMY,EAAcp6N,GAAqB,CACrCi6N,EAAU,QAAUj6N,EACpB,MAAMq6N,EAAiBnB,GAAWl5N,CAAQ,EACtCq6N,GAAkBZ,GAClBC,EAAkBW,CAAc,CAExC,EAEMC,EAAqB7jO,cAAaxQ,GAAc,CAClDi0O,EAAW,QAAU,GACrBD,EAAU,QAAU,KAAK,MAAMh0O,CAAC,CACpC,EAAG,CAAA,CAAE,EAECs0O,EAA6B9jO,cAAas7B,GAAc,CAC1DmoM,EAAW,QAAU,GACrBhc,EAAgB+b,EAAU,OAAO,EACjCG,EAAW,KAAK,MAAMH,EAAU,OAAO,CAAC,CAC5C,EAAG,CAAC/b,CAAe,CAAC,EAGpB5nN,EAAAA,UAAU,IAAM,CACZ,GAAI4jO,EAAW,QACX,OAGJ,MAAMM,EAAiB,KAAK,MAAMne,CAAe,EAC7Cme,GAAkBP,EAAU,SAGhCG,EAAWI,CAAc,CAC7B,EAAG,CAACne,CAAe,CAAC,EAEpB,MAAMoe,EAAsBv4O,GAAkB,CAC1C43O,EAAc53O,CAAK,EACfA,GAAS,YACTo8N,EAAc,EAAI,EACXp8N,GAAS,UAChBo8N,EAAc,EAAK,CAE3B,EAGMoc,EACF5hB,EAAAA,IAACt4C,GAAA,CACG,KAAK,QACL,MAAM,UACN,SAAUi6D,EACV,MAAOZ,EACP,QAAS,CACL,CAAE,MAAO,YAAa,MAAO,EAAE,uBAAuB,EAAG,KAAM/gB,EAAAA,IAAC57J,GAAA,CAAK,UAAWy9K,EAAA,CAAoB,CAAA,EACpG,CAAE,MAAO,SAAU,MAAO,EAAE,mBAAmB,EAAG,KAAM7hB,EAAAA,IAAC57J,GAAA,CAAK,UAAW09K,EAAA,CAAiB,CAAA,CAAG,CACjG,CAAA,EA4BR,OAzBuB5xN,EAAAA,QAAQ,IAC3B6vM,EAAAA,KAACr7C,GAAA,CAAI,MAAM,MAAM,MAAO,CAAE,eAAgB,OAAQ,gBAAiB,SAAW,OAAQ,CAAE,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAA,EAC/G,SAAA,CAAAs7C,EAAAA,IAACx8C,GAAA,CAAI,KAAM,EAAG,MAAO,CAAE,UAAW,OAAA,EAC7B,SAAAm9D,CAAA,CACL,EACA3gB,EAAAA,IAACx8C,GAAA,CAAI,KAAM,GAAI,MAAO,CAAE,MAAO,QAAS,OAAQ,MAAA,EAC5C,SAAAw8C,EAAAA,IAAC3lJ,GAAA,CACG,MAAO,CAAE,MAAO,OAAQ,OAAQ,KAAA,EAChC,IAAK,EACL,IAAK4mK,EACL,KAAM,EACN,QAAU,CAAE,UAAWT,GAAqB,KAAM,EAAA,EAClD,MAAOW,EAAU,QACjB,SAAUK,EACV,iBAAkBC,CAAA,CAAA,EAC1B,EACAzhB,EAAAA,IAACx8C,IAAI,KAAM,EAAG,MAAO,CAAE,UAAW,MAAA,EAC7B,SAAAq9D,CAAA,CACL,EACA7gB,EAAAA,IAACx8C,IAAI,KAAM,EAAG,MAAO,CAAE,UAAW,OAAA,EAC7B,SAAAo+D,CAAA,CACL,CAAA,CAAA,CACJ,EACD,CAACf,EAAgBF,EAAgBI,EAAYE,EAAiBE,EAAU,QAASK,EAAoBC,CAA0B,CAAC,CAKvI,CCxHA,SAAwBM,GACtBC,EACA,CAEA,MAAMr8N,EAAQrB,GAAS,IAAI,MAAA,EACrB2C,EAAe3C,GAAS,IAAI,aAAA,EAC5B29N,EAAsB39N,GAAS,IAAI,oBAAA,EACnCqC,EAAQrC,GAAS,IAAI,MAAA,EACrB49N,EAAgB59N,GAAS,IAAI,cAAA,EAC7B69N,EAAgB79N,GAAS,IAAI,cAAA,EAC7B89N,EAA2B99N,GAAS,IAAI,yBAAA,EACxC+9N,EAA8B/9N,GAAS,IAAI,4BAAA,EAC3C6B,EAAY7B,GAAS,IAAI,UAAA,EACzBg+N,EAAoBh+N,GAAS,IAAI,YAAA,EACjCihN,EAAWjhN,GAAS,IAAI,SAAA,EAIxBi+N,EAAe,IACnBP,GAAqB,MACpBA,EAAkB,cAAc,mBAAqBA,EAUlDQ,EAAyB,IAAM,CAC/BR,GAAqB,CAACO,IACxBP,EAAkB,kBAAA,EAElB,SAAS,eAAA,CAEb,EAIMxjK,EAAS,IAAM,CACnB0jK,EAAA,CACF,EAEMzjK,EAAU,IAAM,CACpB0jK,EAAA,EACAE,EAA4B,EAAK,CACnC,EAGMI,EAAmBn8N,GAAiB,CACxC27N,EAAA,EACA1c,EAASj/M,CAAI,CACf,EAQMo8N,EAAYz7N,IAAiB3B,GAAa,QAC1Cq9N,EAAa,CAACD,GAAa/7N,EAAQ9D,GACnC+/N,EAAY,CAACF,GAAa/7N,EAAQ7D,IAAa,CAACs/N,EAChDS,EAAuB18N,EAAY,EAIzC,MAAO,CAEL,SALeR,GAAA,YAAAA,EAAO,IAMtB,kBAAA28N,EACA,UAAAn8N,EACA,MAAAQ,EACA,aAAAM,EAGA,UAAAy7N,EACA,UAAAE,EACA,WAAAD,EACA,qBAAAE,EACA,aAAcN,EAAA,EAGd,gBAAAE,EACA,OAAAjkK,EACA,QAAAC,EACA,uBAAA+jK,CAAA,CAEJ,CCzEA,MAAMM,GAAgB,CAAC,CAAE,MAAA5iN,EAAO,kBAAA8hN,EAAmB,mBAAAe,EAAoB,cAAArC,KAAuC,CAC1G,KAAM,CAAE,EAAA74O,CAAA,EAAM+V,GAAe,QAAQ,EACjCgJ,EAAYtC,GAAS,IAAI,YAAA,EAGvB,CAEF,kBAAAg+N,EACA,SAAAU,EACA,UAAA78N,EACA,aAAAc,EACA,qBAAA47N,EACA,aAAAN,EACA,UAAAK,EACA,WAAAD,EAGA,gBAAAF,EACA,OAAAjkK,EACA,QAAAC,EACA,uBAAA+jK,CAAA,EACAT,GAAiBC,CAAiB,EAGhCiB,EAAe/yN,EAAAA,QAAQ,IACzB6vM,EAAAA,KAAC38B,GAAA,CAAM,UAAU,aACb,SAAA,CAAA48B,EAAAA,IAACx7I,GAAA,CAAO,MAAM,SAAS,KAAMw7I,EAAAA,IAAC77B,GAAA,CAAA,CAAgB,EAAI,QAAS1lH,EAAS,SAAU,CAACkkK,CAAA,CAAY,EAC3F3iB,EAAAA,IAACx7I,GAAA,CAAO,MAAM,SAAS,KAAMw7I,EAAAA,IAAC/7B,GAAA,CAAA,CAAe,EAAI,QAASzlH,EAAQ,SAAU,CAACokK,CAAA,CAAW,EACxF5iB,EAAAA,IAACx7I,GAAA,CACG,KAAM+9J,EAAeviB,EAAAA,IAACjqB,GAAA,CAAA,CAAuB,QAAME,GAAA,EAAmB,EACtE,QAASusC,EACT,SAAUv7N,IAAiB3B,GAAa,OAAA,CAAA,EAG3Cy9N,EACG/iB,EAAAA,IAACx7I,GAAA,CAAO,KAAK,UAAU,KAAMw7I,EAAAA,IAACzqB,GAAA,CAAA,CAAiB,EAAI,SAAQ,GAAC,KAAMytC,GAAY,GAAI,eAAG,EAAY,IAAA,EAEzG,EACD,CAACJ,EAAWD,EAAY17N,EAAcs7N,EAAcS,EAAUn7O,CAAC,CAAC,EAE7Dq3D,EAAahvC,EAAAA,QAAQ,IACvB2yN,EACI7iB,EAAAA,IAAChpL,GAAA,CACG,SAAU/vB,IAAiB3B,GAAa,QACxC,MAAM,SACN,QAASg9N,EACT,gBAAiB,EACjB,MAAOn8N,EACP,OAAQ,GACR,SAAUs8N,CAAA,CAAA,EACZ,KACP,CAACI,EAAsB57N,EAAcq7N,EAAmBn8N,CAAS,CAAC,EAE/D+8N,EAAkBhzN,EAAAA,QAAQ,WACpBw0J,GAAA,CAAI,MAAO,CAAE,eAAgB,OAAQ,gBAAiB,SAAW,OAAQ,CAAE,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IAC1G,SAAA,CAAAs7C,EAAAA,IAACx8C,GAAA,CAAI,IAAK,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAC3C,SAAAy/D,EACL,EACAjjB,EAAAA,IAACx8C,GAAA,CAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC7C,SAAAtkH,CAAA,CACL,CAAA,EACJ,EACD,CAAC+jL,EAAc/jL,EAAYt4C,CAAS,CAAC,EAExC,OACIo5M,EAAAA,IAAC,MAAA,CAAI,UAAU,iBAAiB,MAAA9/L,EAE3B,SAAAjZ,IAAiB3B,GAAa,QAC3B49N,EAAkBljB,EAAAA,IAACygB,GAAA,CAAe,cAAAC,CAAA,CAA8B,EACxE,CAER,wBC/FIyC,GAAmB7uB,IAAQA,GAAK,kBAAqB,OAAO,OAAU,SAASzmN,EAAG/F,EAAGY,EAAG06O,EAAI,CACxFA,IAAO,SAAWA,EAAK16O,GAC3B,IAAI26O,EAAO,OAAO,yBAAyBv7O,EAAGY,CAAC,GAC3C,CAAC26O,IAAS,QAASA,EAAO,CAACv7O,EAAE,WAAau7O,EAAK,UAAYA,EAAK,iBAClEA,EAAO,CAAE,WAAY,GAAM,IAAK,UAAW,CAAE,OAAOv7O,EAAEY,CAAC,CAAE,CAAE,GAE7D,OAAO,eAAemF,EAAGu1O,EAAIC,CAAI,CACrC,EAAM,SAASx1O,EAAG/F,EAAGY,EAAG06O,EAAI,CACpBA,IAAO,SAAWA,EAAK16O,GAC3BmF,EAAEu1O,CAAE,EAAIt7O,EAAEY,CAAC,CACf,GACI46O,GAAsBhvB,IAAQA,GAAK,qBAAwB,OAAO,OAAU,SAASzmN,EAAGV,EAAG,CAC3F,OAAO,eAAeU,EAAG,UAAW,CAAE,WAAY,GAAM,MAAOV,EAAG,CACtE,EAAK,SAASU,EAAGV,EAAG,CAChBU,EAAE,QAAaV,CACnB,GACIo2O,GAAgBjvB,IAAQA,GAAK,cAAkB,UAAY,CAC3D,IAAIzoM,EAAU,SAAShe,EAAG,CACtB,OAAAge,EAAU,OAAO,qBAAuB,SAAUhe,EAAG,CACjD,IAAI21O,EAAK,CAAA,EACT,QAAS96O,KAAKmF,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGnF,CAAC,IAAG86O,EAAGA,EAAG,MAAM,EAAI96O,GACjF,OAAO86O,CACnB,EACe33N,EAAQhe,CAAC,CACxB,EACI,OAAO,SAAU41O,EAAK,CAClB,GAAIA,GAAOA,EAAI,WAAY,OAAOA,EAClC,IAAI12O,EAAS,CAAA,EACb,GAAI02O,GAAO,KAAM,QAAS/6O,EAAImjB,EAAQ43N,CAAG,EAAG,EAAI,EAAG,EAAI/6O,EAAE,OAAQ,IAASA,EAAE,CAAC,IAAM,WAAWy6O,GAAgBp2O,EAAQ02O,EAAK/6O,EAAE,CAAC,CAAC,EAC/H46O,OAAAA,GAAmBv2O,EAAQ02O,CAAG,EACvB12O,CACf,CACA,EAAC,EACD,OAAO,eAAe22O,GAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5DA,GAAA,cAAwBC,GACxB,IAAIn/N,GAAQ++N,GAAavzN,CAAgB,EACzC,SAASowI,IAAU,CACf,MAAO,CACH,OAAQ,OAAO,YACf,MAAO,OAAO,UACtB,CACA,CACA,SAASujF,IAAgB,CACrB,IAAIj4O,EAAK8Y,GAAM,SAAS47I,GAAO,CAAE,EAAGnuI,EAAOvmB,EAAG,CAAC,EAAGirI,EAAUjrI,EAAG,CAAC,EAChE8Y,OAAAA,GAAM,gBAAgB,UAAY,CAC9B,SAASwN,GAAW,CAChB2kH,EAAQypB,GAAO,CAAE,CAC7B,CACQ,cAAO,iBAAiB,SAAUpuI,CAAQ,EACnC,UAAY,CAAE,OAAO,OAAO,oBAAoB,SAAUA,CAAQ,EACjF,EAAO,CAAA,CAAE,EACEC,CACX,CCpDA,OAAO,eAAe2xN,GAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5DA,GAAA,cAAwBj1F,GACxBi1F,GAAA,eAAyBC,GACzB,IAAIH,GAAkB1zN,GACtB,SAAS2+H,GAAcj5C,EAAY,CAC/B,IAAItgF,KAAYsuN,GAAgB,eAAa,EAAI,MACjD,OAAOtuN,EAAQsgF,CACnB,CACA,SAASmuI,GAAeC,EAAa,CACjC,IAAI1uN,KAAYsuN,GAAgB,eAAa,EAAI,MACjD,OAAOI,EAAY,IAAI,SAAUpuI,EAAY,CAAE,OAAOtgF,EAAQsgF,CAAW,CAAE,CAC/E,WCXIquI,GAAYzvB,IAAQA,GAAK,UAAa,UAAY,CAClDyvB,OAAAA,GAAW,OAAO,QAAU,SAASl8O,EAAG,CACpC,QAASD,EAAGoD,EAAI,EAAGqN,EAAI,UAAU,OAAQrN,EAAIqN,EAAGrN,IAAK,CACjDpD,EAAI,UAAUoD,CAAC,EACf,QAASpC,KAAKhB,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGgB,CAAC,IAC1Df,EAAEe,CAAC,EAAIhB,EAAEgB,CAAC,EAC1B,CACQ,OAAOf,CACf,EACWk8O,GAAS,MAAM,KAAM,SAAS,CACzC,EACIZ,GAAmB7uB,IAAQA,GAAK,kBAAqB,OAAO,OAAU,SAASzmN,EAAG/F,EAAGY,EAAG06O,EAAI,CACxFA,IAAO,SAAWA,EAAK16O,GAC3B,IAAI26O,EAAO,OAAO,yBAAyBv7O,EAAGY,CAAC,GAC3C,CAAC26O,IAAS,QAASA,EAAO,CAACv7O,EAAE,WAAau7O,EAAK,UAAYA,EAAK,iBAClEA,EAAO,CAAE,WAAY,GAAM,IAAK,UAAW,CAAE,OAAOv7O,EAAEY,CAAC,CAAE,CAAE,GAE7D,OAAO,eAAemF,EAAGu1O,EAAIC,CAAI,CACrC,EAAM,SAASx1O,EAAG/F,EAAGY,EAAG06O,EAAI,CACpBA,IAAO,SAAWA,EAAK16O,GAC3BmF,EAAEu1O,CAAE,EAAIt7O,EAAEY,CAAC,CACf,GACI46O,GAAsBhvB,IAAQA,GAAK,qBAAwB,OAAO,OAAU,SAASzmN,EAAGV,EAAG,CAC3F,OAAO,eAAeU,EAAG,UAAW,CAAE,WAAY,GAAM,MAAOV,EAAG,CACtE,EAAK,SAASU,EAAGV,EAAG,CAChBU,EAAE,QAAaV,CACnB,GACIo2O,GAAgBjvB,IAAQA,GAAK,cAAkB,UAAY,CAC3D,IAAIzoM,EAAU,SAAShe,EAAG,CACtB,OAAAge,EAAU,OAAO,qBAAuB,SAAUhe,EAAG,CACjD,IAAI21O,EAAK,CAAA,EACT,QAAS96O,KAAKmF,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGnF,CAAC,IAAG86O,EAAGA,EAAG,MAAM,EAAI96O,GACjF,OAAO86O,CACnB,EACe33N,EAAQhe,CAAC,CACxB,EACI,OAAO,SAAU41O,EAAK,CAClB,GAAIA,GAAOA,EAAI,WAAY,OAAOA,EAClC,IAAI12O,EAAS,CAAA,EACb,GAAI02O,GAAO,KAAM,QAAS/6O,EAAImjB,EAAQ43N,CAAG,EAAG,EAAI,EAAG,EAAI/6O,EAAE,OAAQ,IAASA,EAAE,CAAC,IAAM,WAAWy6O,GAAgBp2O,EAAQ02O,EAAK/6O,EAAE,CAAC,CAAC,EAC/H,OAAA46O,GAAmBv2O,EAAQ02O,CAAG,EACvB12O,CACf,CACA,EAAC,EACD,OAAO,eAAei3O,GAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5DA,GAAA,iBAA2BC,GAC3B,IAAIz/N,GAAQ++N,GAAavzN,CAAgB,EACzC,SAASi0N,IAAmB,CACxB,IAAIv4O,EAAK8Y,GAAM,SAAS,CACpB,OAAQ,EACR,MAAO,CACf,CAAK,EAAGyN,EAAOvmB,EAAG,CAAC,EAAGirI,EAAUjrI,EAAG,CAAC,EAC5B4R,EAAMkH,GAAM,OAAO,MAAS,EAC5BwN,EAAWxN,GAAM,YAAY,UAAY,CACzC,GAAKlH,EAAI,QAGT,KAAI4mO,EAAY5mO,EAAI,QAAQ,aACxB6mO,EAAW7mO,EAAI,QAAQ,aACvB4mO,IAAcjyN,EAAK,QAAUkyN,IAAalyN,EAAK,QAC/C0kH,EAAQ,CACJ,OAAQutG,EACR,MAAOC,CACvB,CAAa,EAEb,EAAO,CAAClyN,EAAK,OAAQA,EAAK,KAAK,CAAC,EAC5B,OAAAzN,GAAM,gBAAgB,UAAY,CAC9B,GAAI,GAAClH,GAAO,CAACA,EAAI,SAGjB,KAAIyZ,EAAiB,IAAI,eAAe/E,CAAQ,EAChD,OAAA+E,EAAe,QAAQzZ,EAAI,OAAO,EAC3B,UAAY,CAAE,OAAOyZ,EAAe,WAAU,CAAG,EAChE,EAAO,CAACzZ,EAAK0U,CAAQ,CAAC,EACX+xN,GAAS,CAAE,IAAKzmO,CAAG,EAAI2U,CAAI,CACtC,cC3EA,IAAIkxN,EAAmB7uB,IAAQA,GAAK,kBAAqB,OAAO,OAAU,SAASzmN,EAAG/F,EAAGY,EAAG06O,EAAI,CACxFA,IAAO,SAAWA,EAAK16O,GAC3B,IAAI26O,EAAO,OAAO,yBAAyBv7O,EAAGY,CAAC,GAC3C,CAAC26O,IAAS,QAASA,EAAO,CAACv7O,EAAE,WAAau7O,EAAK,UAAYA,EAAK,iBAClEA,EAAO,CAAE,WAAY,GAAM,IAAK,UAAW,CAAE,OAAOv7O,EAAEY,CAAC,CAAE,CAAE,GAE7D,OAAO,eAAemF,EAAGu1O,EAAIC,CAAI,CACrC,EAAM,SAASx1O,EAAG/F,EAAGY,EAAG06O,EAAI,CACpBA,IAAO,SAAWA,EAAK16O,GAC3BmF,EAAEu1O,CAAE,EAAIt7O,EAAEY,CAAC,CACf,GACI07O,EAAgB9vB,IAAQA,GAAK,cAAiB,SAASxsN,EAAGqsN,EAAS,CACnE,QAASvrN,KAAKd,EAAOc,IAAM,WAAa,CAAC,OAAO,UAAU,eAAe,KAAKurN,EAASvrN,CAAC,GAAGu6O,EAAgBhvB,EAASrsN,EAAGc,CAAC,CAC5H,EACA,OAAO,eAAcurN,EAAU,aAAc,CAAE,MAAO,GAAM,EAC5DiwB,EAAap0N,GAA4BmkM,CAAO,EAChDiwB,EAAan0N,GAA+BkkM,CAAO,EACnDiwB,EAAaC,GAA4BlwB,CAAO,QCZhD,MAAMmwB,GAAkC,2EAClCC,GAAsB,mBACtBC,GAAqB,4BAErBC,GAAc14O,IAAmC,CAAE,IAAK,uCAAwC,IAAK,yCAAyCA,GAAU,EAAE,GAAK,KAG/J24O,GAAqC,CAACh3J,EAAez0C,IAAU,CACjE,IAAIw1G,EAAU/gE,GAAA,YAAAA,EAAK,SAAS,+BAAgCA,EAAK+2J,GAAY,YAAY,SAAU,MAC/Fx4N,EACJ,MAAM42M,EAAS,CAAA,EACf,KAAQ52M,EAAOwiI,GAAA,YAAAA,EAAS,eAChBxiI,EAAK,WAAa,MAAQA,EAAK,UAAU,QAAQ,UAAU,EAAI,GAC/D42M,EAAO,KAAK52M,EAAK,SAAS,EAK9B42M,EAAO,QAAU,GAGrBA,EAAO,QAAQp8G,GAAS,OACpB,IAAI25C,GAAU10J,EAAAgiF,GAAA,YAAAA,EAAK,SAAS,yBAAyB+4B,CAAK,oBAAqB/4B,EAAK+2J,GAAY,YAAY,SAAU,QAAxG,YAAA/4O,EAA+G,cAC7H,GAAI00J,GAAW,KACX,OAEJ,MAAMryE,GAAS04B,EAAM,OAAO,CAAC,EAAE,YAAA,EAAgBA,EAAM,MAAM,CAAC,GAAG,QAAQ,KAAM,GAAG,EAC1E46G,EAAM3zI,EAAI,cAAc,KAAK,EACnC2zI,EAAI,aAAa,QAAS,OAAO,EACjCA,EAAI,aAAa,QAAS,GAAG,EAC7BA,EAAI,aAAa,SAAU,GAAG,EAC9BjhE,GAAA,MAAAA,EAAS,aAAaihE,EAAKjhE,EAAQ,YACnC,MAAMukF,EAAOj3J,EAAI,cAAc,MAAM,EACrCi3J,EAAK,aAAa,YAAa,QAAQ,EACvCA,EAAK,aAAa,aAAc,MAAM,EACtCtjB,EAAI,YAAYsjB,CAAI,EACpB,MAAMhoO,EAAO+wE,EAAI,eAAeK,CAAK,EACrC42J,EAAK,YAAYhoO,CAAI,CACzB,CAAC,CACL,EAEMioO,GAA2C,CAACl3J,EAAez0C,IAAU,OACvE,IAAImnH,GAAU10J,EAAAgiF,GAAA,YAAAA,EAAK,SAAS62J,GAAqB72J,EAAK+2J,GAAY,YAAY,SAAU,QAA1E,YAAA/4O,EAAiF,cAC/F,GAAI00J,GAAW,KACX,OAGJ,IAAI3R,EAAU/gE,GAAA,YAAAA,EAAK,SAAS42J,GAAiC52J,EAAK+2J,GAAY,YAAY,SAAU,MACpG,MAAM5hB,EAAS,CAAA,EACf,IAAI52M,EACJ,KAAQA,EAAOwiI,GAAA,YAAAA,EAAS,eAChBxiI,EAAK,WAAa,MAClB42M,EAAO,KAAK52M,EAAK,SAAS,EAIlC,MAAM44N,EAAMn3J,EAAI,cAAc,KAAK,EACnCm3J,EAAI,aAAa,OAAQ,sBAAsB,EAC/CzkF,GAAA,MAAAA,EAAS,aAAaykF,EAAKzkF,EAAQ,YAEnC,MAAM0kF,EAAMp3J,EAAI,cAAc,KAAK,EACnCo3J,EAAI,aAAa,QAAS,MAAM,EAChCD,EAAI,YAAYC,CAAG,EAEnBjiB,EAAO,QAAQp8G,GAAS,CACpB,MAAMt4G,EAAQs4G,EAAM,MAAM,GAAG,EAC7B,GAAIt4G,EAAM,OAAS,GAAKA,EAAM,CAAC,GAAK,iBAChC,OAEJ,MAAM40N,EAAQt8G,EAAM,MAAM,GAAG,EAAE,CAAC,EAC1Bj7G,EAAOi7G,EAAM,MAAM,GAAG,EAAE,CAAC,EACzB3vG,EAAO2vG,EAAM,MAAM,GAAG,EAAE,CAAC,EACzB48H,EAAO73O,GAAQ,KACjBy0N,GAAQ,EAAE,oCAAqC,CAAE,KAAQnpN,CAAA,CAAM,EAC/DmpN,GAAQ,EAAE,uCAAwC,CAAE,KAAQnpN,EAAM,EAGhEiuO,EAAMr3J,EAAI,cAAc,KAAK,EACnCq3J,EAAI,aAAa,QAASt+H,CAAK,EAC/Bo+H,EAAI,YAAYE,CAAG,EAGnB,MAAM1jB,EAAM3zI,EAAI,cAAc,KAAK,EACnC2zI,EAAI,aAAa,QAAS,OAAO,EACjCA,EAAI,aAAa,QAAS0B,CAAK,EAC/B1B,EAAI,aAAa,SAAU,GAAG,EAC9BA,EAAI,aAAa,OAAQ,qBAAqB,EAC9C0jB,EAAI,YAAY1jB,CAAG,EAEnB,MAAMsjB,EAAOj3J,EAAI,cAAc,MAAM,EACrCi3J,EAAK,aAAa,YAAa,QAAQ,EACvCA,EAAK,aAAa,aAAc,MAAM,EACtCtjB,EAAI,YAAYsjB,CAAI,EAEpB,MAAMhoO,EAAO+wE,EAAI,eAAe21J,CAAI,EACpCsB,EAAK,YAAYhoO,CAAI,CACzB,CAAC,CAEL,EAEMqoO,GAA8B,CAACt3J,EAAehtE,IAAwB,CACxE,MAAMukO,EAAYvkO,EAAO,EACzB,IAAI+tI,EAAU/gE,GAAA,YAAAA,EAAK,SAAS,qBAAqBu3J,CAAS,KAAMv3J,EAAK+2J,GAAY,YAAY,SAAU,MACvG,GAAIh2F,GAAW,KACX,OAEJ,MAAM16E,EAAQ,CAAA,EAEd,QADI9nD,EAAOwiI,EAAQ,YAAA,EACZxiI,GAAQ,MACX8nD,EAAM,KAAK9nD,CAAI,EACfA,EAAOwiI,EAAQ,YAAA,EAEnB16E,EAAM,QAAQ17D,GAAA,OAAK,OAAA3M,EAAA2M,EAAE,gBAAF,YAAA3M,EAAiB,YAAY2M,GAAE,CACtD,EAGM6sO,GAAmC,CAACx3J,EAAez0C,IAAU,CAC/D,MAAMksM,EAAkBz3J,GAAA,YAAAA,EAAK,SAAS82J,GAAoB92J,EAAK+2J,GAAY,YAAY,SAAU,MACjG,GAAIU,GAAmB,KACnB,OAGJ,MAAMpxK,EAAQ,CAAA,EAEd,QADI9nD,EAAOk5N,EAAgB,YAAA,EACpBl5N,GAAQ,MACX8nD,EAAM,KAAK9nD,CAAe,EAC1BA,EAAOk5N,EAAgB,YAAA,EAG3BpxK,EAAM,QAAQ17D,GAAK,CACfA,EAAE,gBAAgB,MAAM,EACxBA,EAAE,gBAAgB,SAAS,CAC/B,CAAC,CAEL,EAEM+sO,GAAwB,CAAC13J,EAAex7D,EAAiBnmB,IAAmB,CAE9E,IAAI0iJ,EAAU/gE,GAAA,YAAAA,EAAK,SAAS,SAASx7D,CAAO,iBAAkBw7D,EAAK+2J,GAAY,YAAY,SAAU,MACrG,GAAIh2F,GAAW,KACX,OAEJ,MAAM16E,EAAQ,CAAA,EACd,IAAI9nD,EACJ,MAAQA,EAAOwiI,GAAA,YAAAA,EAAS,gBAA6B,MACjD16E,EAAM,KAAK9nD,CAAI,EAEnB8nD,EAAM,QAAQ17D,GAAK,CACfA,EAAE,aAAa,SAAU,GAAGtM,CAAM,IAAI,KAAK,OAAA,EAAS,SAAS,EAAE,EAAE,UAAU,EAAG,EAAE,CAAC,EAAE,CACvF,CAAC,CACL,EAGMs5O,GAAqC,CAAC33J,EAAez0C,IAAU,CACjEmsM,GAAsB13J,EAAK,UAAW,GAAG,CAC7C,EAEM43J,GAAqC,CAAC53J,EAAez0C,IAAU,CACjEmsM,GAAsB13J,EAAK,UAAW,GAAG,CAC7C,EAEA,MAAM63J,EAAe,CAIjB,YAAY5/N,EAAe,CAH3BN,GAAA,cACAA,GAAA,gBAGI,KAAK,MAAQM,EACb,KAAK,QAAU,CAAA,CACnB,CAEA,iBAAkB,CACd,KAAK,QAAQ,KAAK,CAAC++N,GAAwB,CAAA,CAAE,CAAC,CAClD,CACA,6BAA8B,CAC1B,KAAK,QAAQ,KAAK,CAACE,GAA8B,CAAA,CAAE,CAAC,CACxD,CACA,iBAAiBK,EAAmB,CAChC,KAAK,QAAQ,KAAK,CAACD,GAAiB,CAAE,EAAGC,CAAA,CAAU,CAAC,CACxD,CACA,yBAA0B,CACtB,KAAK,QAAQ,KAAK,CAACC,GAAsB,CAAA,CAAE,CAAC,CAChD,CACA,2BAA4B,CACxB,KAAK,QAAQ,KAAK,CAACG,GAAwB,CAAA,CAAE,CAAC,CAClD,CACA,2BAA4B,CACxB,KAAK,QAAQ,KAAK,CAACC,GAAwB,CAAA,CAAE,CAAC,CAClD,CAEA,aAAsB,CAElB,MAAM53J,EADS,IAAI,UAAA,EACA,gBAAgB,KAAK,MAAO,iBAAiB,EAEhE,YAAK,QAAQ,QAAQ,CAAC,CAACiG,EAAMjzE,CAAM,IAAM,CACrCizE,EAAKjG,EAAKhtE,CAAM,CACpB,CAAC,EAES,IAAI,cAAA,EACL,kBAAkBgtE,CAAG,CAClC,CAEJ,CC1MA,MAAM+2J,GAAc14O,IAAmC,CAAE,IAAK,uCAAwC,IAAK,yCAAyCA,GAAU,EAAE,GAAK,KAE/Jy5O,GAAmB,CAAC,YAAa,sBAAsB,EAGvDC,GAAiE,CACnE,EAAG,CAAE,IAAK,gBAAiB,SAAU,GAAA,EACrC,EAAG,CAAE,IAAK,gBAAiB,SAAU,GAAA,EACrC,EAAG,CAAE,IAAK,gBAAiB,SAAU,GAAA,EACrC,EAAG,CAAE,IAAK,gBAAiB,SAAU,GAAA,EACrC,EAAG,CAAE,IAAK,gBAAiB,SAAU,GAAA,EACrC,EAAG,CAAE,IAAK,gBAAiB,SAAU,GAAA,EACrC,EAAG,CAAE,IAAK,gBAAiB,SAAU,GAAA,CACzC,EAEMC,GAAiF,CACnF,EAAG,CAAE,IAAK,wBAAyB,SAAU,OAAQ,OAAQ,GAAA,EAC7D,EAAG,CAAE,IAAK,yBAA0B,SAAU,QAAS,OAAQ,GAAA,EAC/D,EAAG,CAAE,IAAK,2BAA4B,SAAU,UAAW,OAAQ,GAAA,EACnE,GAAI,CAAE,IAAK,8BAA+B,SAAU,cAAe,OAAQ,IAAA,EAC3E,GAAI,CAAE,IAAK,+BAAgC,SAAU,eAAgB,OAAQ,IAAA,CACjF,EAEMC,GAAwE,CAC1E,EAAK,CAAE,IAAK,4BAA6B,SAAU,YAAA,EACnD,EAAK,CAAE,IAAK,wBAAyB,SAAU,QAAA,EAC/C,EAAK,CAAE,IAAK,4BAA6B,SAAU,YAAA,EACnD,EAAK,CAAE,IAAK,yBAA0B,SAAU,SAAA,CACpD,EAMA,MAAMC,EAAc,CAKhB,YAAY,EAAQC,EAAoBlgO,EAAe,CAJvDN,GAAA,iBACAA,GAAA,mBACAA,GAAA,UAqPAA,GAAA,+BAA2B7Z,GAAiB,SACxC,MAAM0gG,EAAyB,CAAA,EAC/B,IAAIuiD,EAAU,KAAK,SAAS,SAAS,SAASjjJ,CAAI,GAAI,KAAK,SAAUi5O,GAAY,YAAY,SAAU,IAAI,EACvGx4N,EAAOwiI,EAAQ,YAAA,EACnB,KAAOxiI,GAAQ,MAAM,CACjB,KAAIvgB,EAAAugB,EAAK,gBAAL,YAAAvgB,EAAoB,UAAW,YAAYD,EAAAwgB,EAAK,gBAAL,YAAAxgB,EAAoB,UAAW,MAAO,CACjF,MAAMymB,EAAUjG,EACV5C,EAAK6I,EAAQ,aAAa,QAAQ,EAClC4zN,EAAS5zN,EAAQ,aAAa,QAAQ,EACtC6zN,EAAO7zN,EAAQ,aAAa,MAAM,EACxCg6E,EAAM,KAAK,CACP,GAAA7iF,EACA,OAAQy8N,GAAU,GAClB,KAAMC,GAAQ,GACd,KAAAv6O,EACA,gBAAiB,GAAI,CACxB,CACL,CACAygB,EAAOwiI,EAAQ,YAAA,CACnB,CACA,OAAOviD,CACX,GAvQI,MAAMmoH,EAAS,IAAI,UACnB,KAAK,SAAWA,EAAO,gBAAgB1uM,EAAO,iBAAiB,EAC/D,KAAK,WAAakgO,EAClB,KAAK,EAAI,CACb,CAGA,yBAAyBG,EAAqB,CAC1C,GAAI,CAACA,EACD,OAAO,KAAK,EAAE,yBAA0B,CAAE,SAAU,GAAI,aAAc,mBAAoB,EAE9F,MAAMzzN,EAAQozN,GAAmBK,CAAG,EACpC,OAAKzzN,EAGE,KAAK,EAAEA,EAAM,IAAK,CAAE,aAAcA,EAAM,SAAU,EAF9C,KAAK,EAAE,yBAA0B,CAAE,SAAUyzN,EAAK,aAAc,qBAAqBA,CAAG,GAAA,CAAK,CAG5G,CAEA,oBAAoB9zN,EAA0B,OAC1C,MAAM+zN,IAAQv6O,EAAAwmB,EAAQ,aAAa,OAAO,IAA5B,YAAAxmB,EAA+B,gBAAiB,GACxDw6O,EAAaT,GAAYQ,CAAK,EAC9BE,EAAYD,EACZ,KAAK,EAAEA,EAAW,IAAK,CAAE,aAAcA,EAAW,QAAA,CAAU,EAC5D,KAAK,EAAE,sBAAuB,CAAE,MAAOD,EAAO,aAAcA,EAAM,eAAiB,gBAAiB,EAEpGG,EAAYl0N,EAAQ,aAAa,OAAO,GAAK,GAC7Cm0N,EAAkBD,EAAYV,GAAYU,CAAS,EAAI,OACvDE,EAAiBD,EACjB,KAAK,EAAEA,EAAgB,IAAK,CAAE,aAAcA,EAAgB,QAAA,CAAU,EACtE,GAEAE,EAAsBF,EACtB,KAAK,EAAE,6BAA8B,CACnC,MAAOF,EACP,WAAYG,EACZ,OAAQD,EAAgB,OACxB,aAAc,GAAGF,CAAS,IAAIG,CAAc,EAAA,CAC/C,EACCH,EAEAK,EAAe,KAAK,yBAAyBt0N,EAAQ,aAAa,KAAK,CAAC,EAE9E,OAAO,KAAK,EAAE,yBAA0B,CACpC,MAAOq0N,EACP,SAAUC,EACV,aAAc,GAAGD,CAAmB,KAAKC,CAAY,EAAA,CACxD,CACL,CAEA,oBAAoBt0N,EAA0B,CAC1C,MAAMs0N,EAAe,KAAK,yBAAyBt0N,EAAQ,aAAa,KAAK,CAAC,EAE9E,OAAO,KAAK,EAAE,yBAA0B,CACpC,SAAUs0N,EACV,aAAc,GAAGA,CAAY,OAAA,CAChC,CACL,CAEA,aAAc,CACV,IAAI/3F,EAAU,KAAK,SAAS,SAAS,iBAAkB,KAAK,SAAUg2F,GAAY,YAAY,SAAU,IAAI,EAC5G,IAAItrM,EAAM,EACV,IAAIltB,EACJ,KAAQA,EAAOwiI,GAAA,YAAAA,EAAS,eAAgB,CACpC,IAAIrlJ,EAAQ,SAAS6iB,EAAK,WAAa,GAAG,EACtC7iB,EAAQ+vC,IACRA,EAAM/vC,EAEd,CACA,OAAO+vC,CACX,CAEA,kBAAmB,CAEf,OADW,KAAK,SAAS,SAAS,4BAA6B,KAAK,SAAUsrM,GAAY,YAAY,SAAU,IAAI,EAC1G,eAAiB,IAC/B,CAEA,kBAAmB,CAEf,OADY,KAAK,SAAS,SAAS,gCAAiC,KAAK,SAAUA,GAAY,YAAY,SAAU,IAAI,EAAE,YAAA,GAC7G,IAClB,CAEA,sBAAuB,SACnB,MAAMgC,GAAS/6O,EAAA,KAAK,SAAS,SAAS,qBAAsB,KAAK,SAAU+4O,GAAY,YAAY,SAAU,IAAI,IAAlG,YAAA/4O,EAAqG,YAC9Gg7O,GAAWj7O,EAAA,KAAK,SAAS,SAAS,oCAAqC,KAAK,SAAUg5O,GAAY,YAAY,SAAU,IAAI,IAAjH,YAAAh5O,EAAoH,YACrI,OAAQg7O,GAAU,MAAQA,EAAS,GAAOC,GAAY,MAAQA,EAAW,CAC7E,CAEA,gBAAiB,SACb,IAAIC,GAAel7O,GAAAC,EAAA,KAAK,SAAS,SAAS,6BAA8B,KAAK,SAAU+4O,GAAY,YAAY,SAAU,IAAI,IAA1G,YAAA/4O,EAA6G,gBAA7G,YAAAD,EAA4H,UAC/I,OAAOk7O,EAAe,SAASA,CAAY,EAAI,CACnD,CAEA,WAAY,SACR,IAAI7vO,GAAOrL,GAAAC,EAAA,KAAK,SAAS,SAAS,sDAAyD,KAAK,SAAU+4O,GAAY,YAAY,SAAU,IAAI,IAArI,YAAA/4O,EAAwI,gBAAxI,YAAAD,EAAuJ,YAClK,OAAOqL,GAAc,WACzB,CAEA,aAAc,SAEV,QADWrL,GAAAC,EAAA,KAAK,SAAS,SAAS,mDAAsD,KAAK,SAAU+4O,GAAY,YAAY,SAAU,IAAI,IAAlI,YAAA/4O,EAAqI,gBAArI,YAAAD,EAAoJ,cAChJw0N,GAAQ,EAAE,WAAW,CACxC,CAEA,aAAc,SAEV,QADWx0N,GAAAC,EAAA,KAAK,SAAS,SAAS,mDAAsD,KAAK,SAAU+4O,GAAY,YAAY,SAAU,IAAI,IAAlI,YAAA/4O,EAAqI,gBAArI,YAAAD,EAAoJ,cAChJw0N,GAAQ,EAAE,WAAW,CACxC,CAEA,qBAAsB,SAClB,IAAInpN,GAAOrL,GAAAC,EAAA,KAAK,SAAS,SAAS,yDAA4D,KAAK,SAAU+4O,GAAY,YAAY,SAAU,IAAI,IAAxI,YAAA/4O,EAA2I,gBAA3I,YAAAD,EAA0J,YACrK,OAAOqL,GAAc,IACzB,CAEA,aAAc,CACV,IAAI23I,EAAU,KAAK,SAAS,SAAS,gDAAiD,KAAK,SAAUg2F,GAAY,YAAY,SAAU,IAAI,EAC3I,MAAMmC,EAAQ,CAAA,EACd,IAAI36N,EACJ,KAAQA,EAAOwiI,GAAA,YAAAA,EAAS,eAChBxiI,EAAK,aAAe,MACpB26N,EAAM,KAAK36N,EAAK,WAAW,EAGnC,OAAO26N,CACX,CAEA,aAAc,CACV,MAAMC,EAAW,CAAA,EACjB,IAAIp4F,EAAU,KAAK,SAAS,SAAS,wBAAyB,KAAK,SAAUg2F,GAAY,YAAY,SAAU,IAAI,EAEnH,QADIx4N,EAAOwiI,EAAQ,YAAA,EACZxiI,GAAQ,MAAM,CACjB,MAAM66N,EAAU76N,EAChB46N,EAAS,KAAK,CAAE,MAAOC,EAAQ,aAAa,OAAO,GAAK,GAAI,GAAIA,EAAQ,aAAa,QAAQ,GAAK,GAAI,EACtG76N,EAAOwiI,EAAQ,YAAA,CACnB,CACA,OAAOo4F,CACX,CAEA,YAAa,CACT,MAAMxxM,EAAmB,CAAA,EACzB,IAAIo5G,EAAU,KAAK,SAAS,SAAS,8BAA+B,KAAK,SAAUg2F,GAAY,YAAY,SAAU,IAAI,EAEzH,QADIx4N,EAAOwiI,EAAQ,YAAA,EACZxiI,GAAQ,MAAM,CACjB,MAAM1iB,EAAS0iB,EACT5C,EAAK9f,EAAO,aAAa,QAAQ,EACvC,GAAI8f,EAAI,CACJ,IAAI0kE,EAAuB,KAC3B,UAAWljE,KAASthB,EAAO,WACvB,GAAIshB,aAAiB,SAAWA,EAAM,UAAY,OAC9C,UAAWk8N,KAAYl8N,EAAM,WACrBk8N,aAAoB,SAAWA,EAAS,UAAY,UACpDh5J,EAAQg5J,EAAS,aAAe,IAKhD1xM,EAAQhsB,CAAE,EAAI,CAAE,MAAO0kE,GAAS,EAAA,CACpC,CACA9hE,EAAOwiI,EAAQ,YAAA,CACnB,CACA,OAAOp5G,CACX,CAEA,aAAa0tL,EAAe,SACxB,IAAIikB,GAAYv7O,GAAAC,EAAA,KAAK,SAAS,SAAS,sBAAsBq3N,CAAK,eAAgB,KAAK,SAAU0hB,GAAY,YAAY,SAAU,IAAI,IAAvH,YAAA/4O,EAA0H,gBAA1H,YAAAD,EAAyI,YACzJ,OAAOu7O,GAAwB,IACnC,CAGA,oBAAqB,WACjB,MAAM3/N,EAAyG,CAAA,EAC/G,IAAIonI,EAAU,KAAK,SAAS,SAAS,kDAAmD,KAAK,SAAUg2F,GAAY,YAAY,SAAU,IAAI,EAE7I,QADIx4N,EAAOwiI,EAAQ,YAAA,EACZxiI,GAAQ,MAAM,CACjB,MAAMg7N,EAAiBh7N,EACjBw6F,EAAQwgI,EAAe,aAAa,OAAO,EAC3ClkB,IAAQt3N,GAAAC,EAAAu7O,EAAe,gBAAf,YAAAv7O,EAA8B,gBAA9B,YAAAD,EAA6C,UAAW,QAAUw7O,EAAe,cAAc,cAAc,aAAa,GAAG,EAAI,KAC/I,GAAI,CAACxgI,GAAS,CAACs8G,EAAO,CAClB92M,EAAOwiI,EAAQ,YAAA,EACf,QACJ,CACA,MAAMu4F,EAAY,KAAK,aAAajkB,CAAK,EACzC,GAAI,CAACikB,EAAW,CACZ/6N,EAAOwiI,EAAQ,YAAA,EACf,QACJ,CAEA,IAAIy4F,GAA0BpuO,EAAAuO,EAAgB,QAAU3c,EAAE,WAAas8O,CAAS,IAAlD,YAAAluO,EAAqD,wBAMnF,GALKouO,IACDA,EAA0B,CAAA,EAC1B7/N,EAAgB,KAAK,CAAE,MAAA07M,EAAc,UAAAikB,EAAsB,wBAAAE,EAAkD,GAG7GA,EAAwB,KAAKx8O,GAAKA,EAAE,OAAS+7G,CAAK,EAAG,CACrDx6F,EAAOwiI,EAAQ,YAAA,EACf,QACJ,CAEA,MAAM04F,EAAyC,CAAE,MAAA1gI,EAAc,MAAOugI,EAAW,iBAAkB,EAAA,EACnGE,EAAwB,KAAKC,CAAkB,EAC/Cl7N,EAAOwiI,EAAQ,YAAA,CACnB,CAEA,OAAOpnI,EAAgB,OAAS,EAAIA,EAAgB,IAAI3c,IAC7C,CACH,MAAOA,EAAE,MACT,UAAWA,EAAE,UACb,wBACI,CAAC,GAAGA,EAAE,wBACN,CAAE,MAAO,OAAQ,MAAOA,EAAE,UAAW,iBAAkB,EAAA,CAAG,CAAC,EAGtE,EAAI,CAAA,CACT,CAGA,oBAAsC,CAClC,MAAO,CACH,SAAU,KAAK,iBAAA,EACf,UAAW,KAAK,YAAA,EAChB,YAAa,KAAK,eAAA,EAClB,SAAU,KAAK,YAAA,EACf,SAAU,KAAK,YAAA,EACf,OAAQ,KAAK,UAAA,EACb,iBAAkB,KAAK,oBAAA,EACvB,gBAAiB,KAAK,mBAAA,EACtB,MAAO,KAAK,YAAA,EACZ,SAAU,KAAK,YAAA,EACf,QAAS,KAAK,WAAA,EACd,aAAc,KAAK,qBAAA,EACnB,iBAAkB,KAAK,iBAAA,EACvB,UAAW,KAAK,aAAA,CAAa,CAErC,CAEA,iBAAiB2N,EAAW,SACxB,MAAMlR,GAAMuE,EAAA,KAAK,WAAL,YAAAA,EAAe,SAAS,qBAAqB2M,CAAC,aAAc,KAAK,SAAUosO,GAAY,YAAY,SAAU,MACzH,OAAOh5O,EAAAtE,GAAA,YAAAA,EAAK,gBAAL,YAAAsE,EAAoB,SAC/B,CAEA,mBAAoB,SAChB,QAAOA,GAAAC,EAAA,KAAK,SAAS,SAAS,6BAA8B,KAAK,SAAU+4O,GAAY,YAAY,SAAU,IAAI,IAA1G,YAAA/4O,EAA6G,gBAA7G,YAAAD,EAA4H,YAAa,IACpJ,CAyBA,0BAA0BwgB,EAAezgB,EAA6B,OAClE,MAAM47O,EAAWn7N,EAAK,aAAa,QAAQ,EAErCozN,EAAS,CAAE,GAAI+H,EAAY,QADP,CAAA,CACO,EAEjC,QAASv8N,IAAS,CAAC,IAAGnf,EAAAugB,EAAK,aAAL,YAAAvgB,EAAiB,QAAQ,EAAE,OAAO2M,GAAKA,EAAE,UAAY,KAAK,YAAY,EAAG,CAC3F,MAAMgvO,EAAgBx8N,EAChB81H,EAAc0mG,EAAc,aAAa,OAAO,EAChDrI,EAAeqI,EAAc,aAAa,QAAQ,EAClDC,EAAWD,EAAc,QAC/B,IAAIxI,EAAqB,GACzB,UAAWh0N,KAASw8N,EAAc,WAC1Bx8N,aAAiB,SAAWA,EAAM,UAAY,OAC9Cg0N,GAAsB,IAAM,KAAK,oBAAoBh0N,CAAK,EACnDA,aAAiB,SAAWA,EAAM,UAAY,SACrDg0N,GAAsB,IAAM,KAAK,oBAAoBh0N,CAAK,GAIlEw0N,EAAO,QAAQ,KACX,CACI,KAAMiI,EACN,SAAU,KAAKA,CAAQ,YAAY3mG,CAAW,KAC9C,OAAQq+F,EAAeA,EAAa,MAAM,CAAC,EAAI,KAC/C,mBAAoBH,IAAuB,GAAKA,EAAqB,MAAA,CACzE,CACR,CACA,MAAO,CAAE,GAAIuI,EAAY,KAAA57O,EAAY,KAAM,GAAI,OAAQ,GAAI,OAAA6zO,EAAgB,YAAa,IAAI,GAAI,CACpG,CAGA,gBAAiB,CACb,MAAMnzI,EAAyB,CAAA,EAC/B,IAAIuiD,EAAU,KAAK,SAAS,SAAS,eAAgB,KAAK,SAAUg2F,GAAY,YAAY,SAAU,IAAI,EACtGx4N,EAAOwiI,EAAQ,YAAA,EACnB,KAAOxiI,GAAQ,MAAM,CACjB,MAAMiG,EAAUjG,EACV0V,EAAO,KAAK,0BAA0BzP,EAAS,QAAQ,EAC7Dg6E,EAAM,KAAKvqE,CAAI,EACf1V,EAAOwiI,EAAQ,YAAA,CACnB,CACA,OAAOviD,CACX,CAEA,mBAAoB,CAChB,MAAMA,EAAyB,CAAA,EAC/B,IAAIuiD,EAAU,KAAK,SAAS,SAAS,YAAa,KAAK,SAAUg2F,GAAY,YAAY,SAAU,IAAI,EACnGx4N,EAAOwiI,EAAQ,YAAA,EACnB,KAAOxiI,GAAQ,MAAM,CACjB,MAAMiG,EAAUjG,EAIVzgB,EAAO0mB,EAAQ,aAAa,MAAM,EACxC,GAAI1mB,GAAQ,MAAQ,CAACg6O,GAAiB,SAASh6O,CAAI,EAAG,CAClD,MAAMm2B,EAAO,KAAK,0BAA0BzP,EAAS,KAAK,EAC1Dg6E,EAAM,KAAKvqE,CAAI,CACnB,CACA1V,EAAOwiI,EAAQ,YAAA,CACnB,CACA,OAAOviD,CACX,CAEA,gBAAiB,SACb,MAAMq7I,EAA4B,CAAA,EAClC,IAAI94F,EAAU,KAAK,SAAS,SAAS,cAAe,KAAK,SAAUg2F,GAAY,YAAY,SAAU,IAAI,EACrGx4N,EAAOwiI,EAAQ,YAAA,EACnB,KAAOxiI,GAAQ,MAAM,CACjB,MAAMiG,EAAUjG,EACVu7N,EAAUt1N,EAAQ,aAAa,QAAQ,EACvCvV,EAAO,CAAC,IAAGjR,EAAAwmB,EAAQ,aAAR,YAAAxmB,EAAoB,QAAQ,EAAE,OAAO2M,GAAKA,EAAE,UAAY,KAAK,SAAS,EAAE,IAAKA,GAAMA,EAAE,WAAW,EAAE,KAAK;AAAA,CAAI,EACtHovO,GAAYh8O,EAAAymB,EAAQ,aAAa,OAAO,IAA5B,YAAAzmB,EAA+B,MAAM,KAAK,IAAI6R,GAAOA,EAAI,QAAQ,IAAK,EAAE,GAC1FiqO,EAAY,KAAK,CAAE,GAAIC,EAAU,KAAA7qO,EAAY,UAAA8qO,EAAuB,EACpEx7N,EAAOwiI,EAAQ,YAAA,CACnB,CACA,OAAO84F,CACX,CAEA,cAAe,CACX,MAAMG,EAAiD,CAAA,EACvD,IAAIj5F,EAAU,KAAK,SAAS,SAAS,YAAa,KAAK,SAAUg2F,GAAY,YAAY,SAAU,IAAI,EACnGx4N,EAAOwiI,EAAQ,YAAA,EACnB,KAAOxiI,GAAQ,MAAM,CACjB,MAAMiG,EAAUjG,EACV07N,EAAUz1N,EAAQ,aAAa,SAAS,EACxC01N,EAAQ11N,EAAQ,aAAa,OAAO,EACpC21N,EAAQF,GAAA,MAAAA,EAAS,WAAW,KAAOA,GAAA,YAAAA,EAAS,MAAM,GAAK,KACvDG,EAASF,GAAA,MAAAA,EAAO,WAAW,KAAOA,GAAA,YAAAA,EAAO,MAAM,GAAK,KACtDC,GAASC,GACTJ,EAAU,KAAK,CAAE,MAAAG,EAAO,OAAAC,CAAA,CAAQ,EAEpC77N,EAAOwiI,EAAQ,YAAA,CACnB,CACA,OAAOi5F,CACX,CAIA,cAAgC,CAC5B,MAAMK,EACF,KAAK,wBAAwB,SAAS,EACjC,OAAO,KAAK,wBAAwB,KAAK,CAAC,EAC1C,OAAO,KAAK,wBAAwB,MAAM,CAAC,EAC3C,OAAO,KAAK,wBAAwB,UAAU,CAAC,EAC/C,OAAO,KAAK,wBAAwB,KAAK,CAAC,EAC1C,OAAO,KAAK,eAAA,CAAgB,EAC5B,OAAO,KAAK,mBAAmB,EAElCR,EAAc,KAAK,eAAA,EACnBS,MAAiC,IAEvC,OAAAD,EAAkB,QAAQp/O,GAAK,CAC3B,MAAM+1O,EAAQ6I,EAAY,KAAK,GAAK,EAAE,UAAU,SAAS5+O,EAAE,EAAE,CAAC,EAC1D+1O,IACA/1O,EAAE,YAAY,IAAI+1O,CAAK,EACvBsJ,EAA2B,IAAIr/O,EAAE,EAAE,EAE3C,CAAC,EAID4+O,EAAY,QAAQ7I,GAAS,OACzB,MAAMuJ,GAAYv8O,EAAAgzO,EAAM,YAAN,YAAAhzO,EAAiB,UAAa,CAACs8O,EAA2B,IAAI3+N,CAAE,GAElF,GAAI4+N,GAAaA,EAAU,OAAS,EAAG,CACnC,MAAMC,EAAwBH,EAAkB,OAAOp/O,GAAKA,EAAE,YAAY,IAAI+1O,CAAK,CAAC,EAChFwJ,EAAsB,QAAU,EAEhCA,EAAsB,CAAC,EAAE,WAAa,CAAC,GAAGD,CAAS,EAEnD,QAAQ,IAAI,4BAA4BA,CAAS,EAAE,CAE3D,CACJ,CAAC,EAEMF,CACX,CAEJ,CC7aA,MAAMI,GAAuB,CAAC,YAAa,UAAW,eAAgB,UAAW,WAAY,WAAW,EAClGC,GAAoC,IAEpCC,GAAqC,CACzC,OAAQ,OACR,OAAQ,OACR,OAAQ,OACR,iBAAkB,EAClB,cAAe,EACf,eAAgB,GAChB,gBAAiB,GACjB,iBAAkB,EAClB,gBAAiB,GACjB,YAAa,GACb,cAAe,IACf,iBAAkB,GAClB,QAAS,GACT,SAAU,GACV,WAAY,GACZ,eAAgB,GAChB,iBAAkB,GAClB,aAAc,UACd,kBAAmB,EACnB,mBAAoB,GACpB,cAAe,UACjB,EAGMC,GAA6B5nK,GAA2B,CAC5D,OAAQA,EAAA,CACN,KAAKz9D,GAAW,SACd,MAAO,eACT,KAAKA,GAAW,QACd,MAAO,cAAA,CAEb,EAiCMslO,GAA4BjlB,GAChCA,EAAQ,IAAI36N,GAAK,SACf,MAAO,CACL,GAAGA,EACH,UAAU+C,EAAA/C,EAAE,KAAF,YAAA+C,EAAM,IAAK2d,GAAO,OAC1B,MAAMu7M,EAAY,IAAI,OAAOv7M,CAAE,EAE/B,MAAO,YADO3d,EAAA,SAAS,cAAc,eAAek5N,CAAS,GAAG,IAAlD,YAAAl5N,EAAqD,aAAa,SACzD,YACzB,GACA,WAAWD,EAAA9C,EAAE,MAAF,YAAA8C,EAAO,IAAK4d,GAAO,OAC5B,MAAMu7M,EAAY,IAAI,OAAOv7M,CAAE,EAE/B,MAAO,YADO3d,EAAA,SAAS,cAAc,eAAek5N,CAAS,GAAG,IAAlD,YAAAl5N,EAAqD,aAAa,SACzD,YACzB,EAAC,CAEL,CAAC,EAEG88O,GAAkB,CAACrK,EAAsB1a,EAAkDl8M,EAA4BI,IAA+B,CAC1J,MAAM8gO,EAA+B,OAAO,OAAOhlB,CAAmB,EAAE,IAAIh9G,GAC1E,yBAAyBA,CAAK,KAAA,EAGhC,MAAO,CACL,GAAG03H,EACH,GAAGsK,EACH,GAAGlhO,EAAoB,CAAC,sCAAsC,EAAI,CAAA,EAClE,GAAGI,EAAoB,CAAC,8CAA8C,EAAI,CAAA,CAAC,CAE/E,EAKA,SAAwB+gO,GAAgB,CACtC,EAAA7gP,EACA,QAAA49N,EACA,kBAAAkjB,EACA,mBAAAC,EACA,WAAAzK,EACA,cAAAE,EACA,cAAA32N,EACA,oBAAA+7M,EACA,kBAAAl8M,EACA,kBAAAI,EACA,2BAAAkhO,EACA,sBAAAC,EACA,eAAAC,CACF,EAAuB,CAGrB,MAAMC,EAAgB,MAAOC,GAAqB,CAEhD,MAAMpC,EADW,IAAIjB,GAAc/9O,EAAG,EAAGohP,CAAQ,EACvB,YAAA,EACpBC,EAAsC,CAAA,EAC5C,UAAWpC,KAAWD,EAAU,CAC9B,MAAMtgO,EAAYugO,EAAQ,GACpBqC,EAAc,MAAM1jB,EAAQ,mBAAmBl/M,CAAS,EAC1DA,GAAa4iO,IACfD,EAAY3iO,CAAS,EAAI4iO,EAE7B,CACA,OAAOD,CAET,EAKME,EAAoBzrO,cAAY,MAAOoH,GAAuB,CAClE,GAAI,CAAC0gN,EAAS,OAAO,KAErB,KAAM,CAAE,mBAAA4jB,EAAoB,OAAAC,EAAQ,KAAAhjO,EAAM,MAAAK,EAAO,wBAAA4iO,EAAyB,SAAAvG,GAAaj+N,EACjFykO,EAAeZ,EACfa,EAAcd,EAEpB,QAAQ,IAAI,mCAAmCriO,CAAI,cAAcmjO,CAAW,gBAAgBD,CAAY,WAAW7iO,CAAK,4BAA4B4iO,CAAuB,uBAAuB5hO,CAAiB,EAAE,EAErN,MAAM9b,EAA0B,CAC9B,GAAGw8O,GACH,gBAAiB,GACjB,iBAAkB,GAClB,UAAW,GACX,uBAAwBF,GACxB,cAAeK,GAAgBrK,EAAY1a,EAAqBl8M,GAAqB,GAAOI,GAAqBkhO,CAA0B,EAC3I,iBAAkBxK,EAClB,WAAYmL,EACZ,UAAWC,EACX,MAAA9iO,EACA,UAAWe,GAAwC,GACnD,aAAcohO,GAAyB,CAAA,EAGzC,GAAI,CACF,MAAMY,EAAY,YAAY,IAAA,EAC9B,QAAQ,IAAI,6CAA6C,EAEzD,MAAMC,EAAe,YAAY,IAAA,EACjC,MAAMlkB,EAAQ,WAAW55N,CAAO,EAChC,QAAQ,IAAI,sCAAsC,YAAY,MAAQ89O,GAAc,QAAQ,CAAC,CAAC,IAAI,EAElG,MAAMC,EAAY,YAAY,IAAA,EAC9B,MAAMnkB,EAAQ,SAAS6jB,CAAM,EAC7B,QAAQ,IAAI,oCAAoC,YAAY,MAAQM,GAAW,QAAQ,CAAC,CAAC,IAAI,EAE7F,MAAMC,EAAa,YAAY,IAAA,EACzBC,EAAmB,MAAMrkB,EAAQ,aAAA,EACvC,QAAQ,IAAI,wCAAwC,YAAY,MAAQokB,GAAY,QAAQ,CAAC,CAAC,IAAI,EAElG,MAAME,EAAa,MAAMf,EAAcM,CAAM,EAC7C,QAAQ,IAAI,oBAAoB,YAAY,IAAA,EAAQI,GAAW,QAAQ,CAAC,CAAC,mBAAmBI,CAAgB,EAAE,EAC9G,QAAQ,IAAI,qDAAqD,YAAY,MAAQJ,GAAW,QAAQ,CAAC,CAAC,IAAI,EAE9G,IAAIM,EACJ,GAAIT,EAAyB,CAC3B,IAAIU,EAAuB,MAAMxkB,GAAA,YAAAA,EAAS,mBAAmB8jB,IACzDU,GAAwB,MAAQA,EAAuB,IACzDD,EAAaC,EAEjB,CACA,MAAI,CAACD,GAAc1jO,IACjB0jO,EAAc1jO,GAAQwjO,EAAoBxjO,EAAOwjO,GAGnDf,EAAe,CAAE,YAAaiB,EAAY,UAAWF,EAAkB,eAAgBC,EAAY,EAE5F9kO,GAAa,CAClB,SAAA+9N,EACA,WAAYqG,EACZ,aAAAG,EACA,YAAAC,EACA,WAAAO,EACA,MAAArjO,EACA,iBAAAmjO,CAAA,CACD,CACH,OAASzyO,EAAO,CACd,eAAQ,MAAM,gCAAiCA,CAAK,EAC7C,IACT,CACF,EAAG,CACDouN,EACAkjB,EACAC,EACAzK,EACAE,EACA32N,EACA+7M,EACAl8M,EACAI,EACAmhO,EACAC,CAAA,CACD,EAKKmB,EAA8BvsO,cAAY,MAAOoH,GAAiC,CACtF,GAAI,CAAC0gN,EAAS,OAAO,KAErB,KAAM,CAAE,OAAApwM,EAAQ,OAAAi0N,CAAA,EAAWvkO,EAE3B,QAAQ,IAAI,yCAAyCsQ,CAAM,EAAE,EAG7D,MAAMxpB,EAA0B,CAC9B,GAAGw8O,GACH,gBAAiB,GACjB,iBAAkB,GAClB,WAAY,GACZ,uBAAwBF,GACxB,cAAeK,GAAgBrK,EAAY1a,EAAqBl8M,GAAqB,GAAO,EAAK,EACjG,iBAAkB82N,EAClB,WAAYhpN,EACZ,UAAW+yN,GACX,MAAO,IACP,UAAW1gO,GAAwC,EAAA,EAGrD,GAAI,CACF,aAAM+9M,EAAQ,WAAW55N,CAAO,EAChC,MAAM45N,EAAQ,SAAS6jB,CAAM,EACtBpkO,GAAuB,CAAE,OAAAmQ,EAAQ,CAC1C,OAAShe,EAAO,CACd,eAAQ,MAAM,4CAA6CA,CAAK,EACzD,IACT,CACF,EAAG,CAACouN,EAAS0Y,EAAYE,EAAe32N,EAAe+7M,EAAqBl8M,CAAiB,CAAC,EAExF4iO,EAAmB,CAAC7mB,EAAyBokB,IAAoD,CACrG,MAAM0C,EAAa9mB,EAAQ,IAAI36N,IAAc,CAAE,GAAGA,CAAA,EAAqB,EACvE,SAAW,CAAE,MAAAk/O,EAAO,OAAAC,CAAA,IAAYJ,EAAW,CACzC,MAAM2C,EAAeD,EAAW,UAAUzhP,GAAKA,EAAE,IAAM,MAAQA,EAAE,GAAG,SAASk/O,CAAK,CAAC,EAC7EyC,EAAgBF,EAAW,UAAUzhP,GAAKA,EAAE,KAAO,MAAQA,EAAE,IAAI,SAASk/O,CAAK,CAAC,EAChF0C,EAAgBH,EAAW,UAAUzhP,GAAKA,EAAE,IAAM,MAAQA,EAAE,GAAG,SAASm/O,CAAM,CAAC,EAC/E0C,EAAiBJ,EAAW,UAAUzhP,GAAKA,EAAE,KAAO,MAAQA,EAAE,IAAI,SAASm/O,CAAM,CAAC,EACpFuC,GAAgB,IAAMC,GAAiB,IAAMC,GAAiB,IAAMC,GAAkB,KAK1FJ,EAAWC,CAAY,EAAE,GAAI,KAAKvC,CAAM,EACxCsC,EAAWE,CAAa,EAAE,IAAMF,EAAWE,CAAa,EAAE,IAAK,OAAOjhO,GAAMA,GAAMw+N,CAAK,EACvFuC,EAAWG,CAAa,EAAE,GAAKH,EAAWG,CAAa,EAAE,GAAI,OAAOlhO,GAAMA,GAAMy+N,CAAM,EACtFsC,EAAWI,CAAc,EAAE,IAAK,KAAK3C,CAAK,EAC5C,CACA,OAAOuC,CACT,EAEMK,EAAiB,MAAOnnB,GAAqD,CACjF,MAAM19M,EAAM,MAAM6/M,EAAQ,OAAA,EACpBilB,EAAW,IAAI9E,GAAc/9O,EAAG,EAAG+d,CAAG,EACtC+kO,EAAwBR,EAAiB7mB,EAASonB,EAAS,cAAc,EAC/E,OAAOnC,GAAyBoC,CAAqB,CACvD,EAOMC,EAAsBjtO,EAAAA,YAAY,MAAOoH,EAAsBmN,IAAgE,CACnI,GAAI,CAACuzM,GAAW,CAACvzM,EAAS,OAAO,KAEjC,KAAM,CAAE,WAAAwuD,EAAY,aAAA8oK,EAAc,YAAAC,EAAa,WAAAO,EAAY,MAAArjO,EAAO,iBAAAmjO,EAAkB,SAAA9G,GAAaj+N,EACjG,QAAQ,IAAI,qCAAqCilO,CAAU,UAAUrjO,CAAK,eAAe+5D,CAAU,EAAE,EACrG,MAAMgpK,EAAY,YAAY,IAAA,EAC9B,QAAQ,IAAI,+CAA+C,EAE3D,GAAI,CACF,MAAMmB,EAAe,YAAY,IAAA,EAC3BvnB,EAAU,MAAMmC,EAAQ,gBAAgB,CAAE,gBAAiB,GAAM,EACvE,QAAQ,IAAI,2CAA2C,YAAY,MAAQolB,GAAc,QAAQ,CAAC,CAAC,IAAI,EAEvG,MAAMC,EAAW,YAAY,IAAA,EACvBC,GAAW,MAAMtlB,EAAQ,YAAYukB,CAAU,GAClD,QAAQ,UAAUP,CAAW,MAAO,cAAc,EAClD,QAAQ,WAAWD,CAAY,MAAO,eAAe,EACxD,QAAQ,IAAI,uCAAuC,YAAY,MAAQsB,GAAU,QAAQ,CAAC,CAAC,IAAI,EAG/F,MAAME,EAAW,YAAY,IAAA,EAC7B94N,EAAQ,UAAY64N,EACpB,MAAMpoB,EAAazwM,EAAQ,cAAc,KAAK,EAC9C,GAAI,CAACywM,EACH,eAAQ,IAAI,4CAA4C,EACjD,KAITA,EAAW,MAAM,QAAU,IAEvBA,EAAW,UAAU,SAAS,qBAAqB,GACrDA,EAAW,UAAU,OAAO,qBAAqB,EAE/CjiJ,GAAc,OAChBiiJ,EAAW,UAAU,IAAI,kBAAmB2lB,GAA0B5nK,CAAU,CAAC,EACjF,WAAW,IAAM,CACfiiJ,EAAW,UAAU,IAAI,gBAAgB,CAC3C,EAAG,CAAC,GAEN,QAAQ,IAAI,4CAA4C,YAAY,MAAQqoB,GAAU,QAAQ,CAAC,CAAC,IAAI,EAEpG,MAAMC,EAAW,YAAY,IAAA,EACvBrlO,EAAM,MAAM6/M,EAAQ,OAAO,CAAE,OAAQukB,EAAY,EAEjDkB,EADW,IAAItF,GAAc/9O,EAAG,EAAG+d,CAAG,EACZ,kBAAA,EAChC,QAAQ,IAAI,6CAA6C,YAAY,MAAQqlO,GAAU,QAAQ,CAAC,CAAC,IAAI,EAErG,MAAME,GAAuB,CAC3B,GAAIxoB,EAAW,GACf,SAAAqgB,EACA,MAAAr8N,EACA,QAAS,MAAM8jO,EAAennB,CAAO,EACrC,cAAe4nB,EACf,KAAMlB,EACN,OAAQR,EACR,MAAOC,CAAA,EAGHljL,GAAW,YAAY,IAAA,EAAQmjL,EACrC,eAAQ,IAAI,sDAAsDnjL,GAAS,QAAQ,CAAC,CAAC,IAAI,EACzF,QAAQ,IAAI,sDAAsDA,GAAS,QAAQ,CAAC,CAAC,IAAI,EAElF,CAAE,OAAA4kL,GAAQ,iBAAArB,EAAkB,MAAAnjO,EAAO,WAAAqjO,CAAA,CAC5C,OAAS3yO,EAAO,CACd,eAAQ,IAAI,yBAAyBA,CAAK,EAAE,EACrC,IACT,CACF,EAAG,CAACouN,EAAS59N,EAAG4iP,CAAc,CAAC,EAKzBW,EAAgCztO,EAAAA,YAAY,MAAOoH,EAAgCmN,IAAoE,CAC3J,GAAI,CAACuzM,GAAW,CAACvzM,EAAS,OAAO,KAEjC,KAAM,CAAE,OAAAmD,GAAWtQ,EACnB,QAAQ,IAAI,2CAA2CsQ,CAAM,EAAE,EAG/D,GAAI,CACF,MAAMiuM,EAAU,MAAMmC,EAAQ,gBAAgB,CAAE,gBAAiB,GAAM,EACjEslB,EAAU,MAAMtlB,EAAQ,YAAY,CAAC,EAErC9wN,EAAQo2O,EAAQ,MAAM,6BAA6B,EACnDM,EAAgB12O,EAAQ,KAAK,MAAM,SAASA,EAAM,CAAC,CAAC,CAAC,EAAIyzO,GACzDkD,EAAiB,KAAK,MAAMj2N,CAAM,EAExC,OAAAnD,EAAQ,UAAY64N,EAAQ,QAAQ,OAAQ,mHAAmHM,CAAa,eAAeC,CAAc,OAAO,EAIhNp5N,EAAQ,MAAM,OAAS,GAAGo5N,CAAc,KAajC,CAAE,OAXoB,CAC3B,GAAI,qBACJ,MAAO,IACP,SAAU,GACV,QAAS,MAAMb,EAAennB,CAAO,EACrC,MAAO+nB,EACP,OAAQC,EACR,cAAe,KACf,KAAM,CAAA,CAGC,CACX,OAASj0O,EAAO,CACd,eAAQ,IAAI,qCAAqCA,CAAK,EAAE,EACjD,IACT,CACF,EAAG,CAACouN,CAAO,CAAC,EAKN8lB,EAAqB9lO,GAA4B,CACrD,MAAMV,EAASU,EAAO,OAItB,MAHmB,EAAAV,EAAO,YAAcA,EAAO,mBAUjD,EAiEA,MAAO,CACL,cA7DoBpH,EAAAA,YAAY,MAAO8H,EAAgB+lO,IAAwC,CAC/F,GAAI,CAAC/lB,GAAW,CAAC+lB,EACf,eAAQ,IAAI,wDAAwD,EAC7D,CAAE,QAAS,GAAO,WAAY,KAAM,OAAQ,KAAM,YAAa,EAAA,EAGxE,MAAMC,EAAcF,EAAkB9lO,CAAM,EAE5C,GAAI,CACF,GAAIA,EAAO,OAAS,OAAQ,CAC1B,MAAMimO,EAAa,MAAMtC,EAAkB3jO,EAAO,MAAoB,EACtE,MAAO,CACL,QAASimO,IAAe,KACxB,WAAAA,EACA,OAAQ,KACR,YAAAD,CAAA,CAEJ,SACShmO,EAAO,OAAS,iBAAkB,CACzC,MAAMimO,EAAa,MAAMxB,EAA4BzkO,EAAO,MAA8B,EAC1F,MAAO,CACL,QAASimO,IAAe,KACxB,WAAAA,EACA,OAAQ,KACR,YAAAD,CAAA,CAEJ,SACShmO,EAAO,OAAS,SAAU,CACjC,MAAM1Y,EAAS,MAAM69O,EAAoBnlO,EAAO,OAAwB+lO,CAAmB,EAC3F,MAAO,CACL,QAASz+O,IAAW,KACpB,WAAY,KACZ,OAAAA,EACA,YAAA0+O,CAAA,CAEJ,SACShmO,EAAO,OAAS,mBAAoB,CAC3C,MAAM1Y,EAAS,MAAMq+O,EAA8B3lO,EAAO,OAAkC+lO,CAAmB,EAC/G,MAAO,CACL,QAASz+O,IAAW,KACpB,WAAY,KACZ,OAAAA,EACA,YAAA0+O,CAAA,CAEJ,CAEA,eAAQ,KAAK,wBAAwBhmO,EAAO,IAAI,EAAE,EAC3C,CAAE,QAAS,GAAO,WAAY,KAAM,OAAQ,KAAM,YAAa,EAAA,CACxE,OAASpO,EAAO,CACd,eAAQ,MAAM,0BAA0BoO,EAAO,IAAI,IAAKpO,CAAK,EACtD,CAAE,QAAS,GAAO,WAAY,KAAM,OAAQ,KAAM,YAAa,EAAA,CACxE,CACF,EAAG,CACDouN,EACA2jB,EACAc,EACAU,EACAQ,CAAA,CACD,CAGC,CAEJ,CC3dA,SAAwBO,GAAiB,CACvC,WAAAxkO,EACA,cAAAG,EACA,aAAAL,EACA,gBAAA2kO,EACA,mBAAAhD,CACF,EAAsB,CAQpB,MAAMiD,EAAgBluO,EAAAA,YAAY,IAAM,CACtC,GAAI,CAACiuO,EAAgB,QAAS,MAAO,GAErC,MAAME,EAAcF,EAAgB,QAAQ,cAAc,kBAAkB,EAC5E,GAAI,CAACE,EAAa,MAAO,GACzB,MAAMC,EAAcD,EAAY,sBAAA,EAEhC,OAAO,KAAK,MAAMC,EAAY,OAASA,EAAY,GAAG,CACxD,EAAG,CAACH,CAAe,CAAC,EAKdI,EAAkBruO,EAAAA,YAAY,IAAM,OACxC,OAAKiuO,EAAgB,UACdlgP,EAAAkgP,EAAgB,QAAQ,iBAAiB,0BAA0B,IAAnE,YAAAlgP,EAAsE,UAAW,EADnD,EAEvC,EAAG,CAACkgP,CAAe,CAAC,EAMdK,EAA6BtuO,cAAauuO,GAAsC,CACpF,MAAMC,EAAuBN,EAAA,EAEvBO,EADeJ,EAAA,GAElBG,EAAwBvD,EAAqB,GAEhD,OAAOwD,IAAgCF,EACnCE,EACAF,CACN,EAAG,CAACL,EAAeG,EAAiBpD,CAAkB,CAAC,EAKjDyD,EAAsBn8N,EAAAA,QAAQ,IAAM,CACxC,gBACA,GAAI5I,EAAgB,CAAC,kBAAkB,EAAI,CAAA,CAAC,EAC3C,CAACA,CAAa,CAAC,EAMZglO,EAAgB3uO,cAAa6L,GAAsC,CACvE,GAAI,CAACoiO,EAAgB,QAAS,OAAO,KACrC,MAAMhnB,EAAY,IAAI,OAAOp7M,CAAS,EACtC,OAAOoiO,EAAgB,QAAQ,cAAc,IAAIhnB,CAAS,EAAE,CAC9D,EAAG,CAACgnB,CAAe,CAAC,EAMdW,EAAqBr8N,EAAAA,QAAQ,IACjC/I,GAAcF,IAAiB3B,GAAa,QAC5C,CAAC6B,EAAYF,CAAY,CAAA,EAG3B,MAAO,CACL,cAAA4kO,EACA,gBAAAG,EACA,2BAAAC,EACA,oBAAAI,EACA,cAAAC,EACA,mBAAAC,CAAA,CAEJ,CCpGA,MAAMC,GAAiB,CAAC,CAAE,QAAAl4L,KACjBA,EAGD0rK,EAAAA,IAAC,OAAI,UAAU,0BACX,eAAC,MAAA,CAAI,UAAU,0BACX,SAAAA,EAAAA,IAACjsB,GAAA,CAAK,gBAAYppI,GAAA,CAAgB,MAAO,CAAE,SAAU,EAAA,EAAM,KAAI,EAAA,CAAC,CAAA,CAAI,CAAA,CACxE,CAAA,CACJ,EAPiB,KCHzB,SAAwB8hL,GAAgB70O,EAAsByqB,EAAa,CACvE7kB,EAAAA,UAAU,IAAM,CAEZ,GAAI,OAAO,oBAAwB,IAAa,CAE5C,MAAM2qE,EAAY,WAAWvwE,EAAU,GAAI,EAC3C,MAAO,IAAM,aAAauwE,CAAS,CACvC,CAGA,MAAMukK,EAAiB,oBACnB,IAAM,CACF90O,EAAA,CACJ,EACA,CAAE,QAAS,GAAA,CAAK,EAGpB,MAAO,IAAM,mBAAmB80O,CAAc,CAClD,EAAGrqN,CAAI,CACX,CCLA,SAASsqN,GAAUC,EAAgC,CAE/C,KAAM,CAAE,gBAAA1gM,EAAiB,2BAAA28L,CAAA,EAA+B+D,EAClD,CAAE,QAAAnnB,CAAA,EAAYxnN,EAAAA,WAAW6L,EAAO,EAChC,CAAE,EAAAjiB,CAAA,EAAM+V,GAAe,QAAQ,EAG/BivO,EAAevoO,GAAS,IAAI,aAAA,EAC5BwoO,EAAgBxoO,GAAS,IAAI,cAAA,EAC7ByoO,EAAmBzoO,GAAS,IAAI,iBAAA,EAEhCqB,EAAQrB,GAAS,IAAI,MAAA,EAErBykO,EAAiBzkO,GAAS,IAAI,eAAA,EAE9B0oO,EAAa1oO,GAAS,IAAI,WAAA,EAC1B2oO,EAAgB3oO,GAAS,IAAI,cAAA,EAC7B2C,EAAe3C,GAAS,IAAI,aAAA,EAC5BqC,EAAQrC,GAAS,IAAI,MAAA,EACrB4oO,EAAW5oO,GAAS,IAAI,SAAA,EACxB89N,EAA2B99N,GAAS,IAAI,yBAAA,EACxC+9N,EAA8B/9N,GAAS,IAAI,4BAAA,EAC3C+B,EAAc/B,GAAS,IAAI,YAAA,EAC3B6B,EAAY7B,GAAS,IAAI,UAAA,EACzB6oO,EAAc7oO,GAAS,IAAI,YAAA,EAE3BkD,EAAiBlD,GAAS,IAAI,eAAA,EAC9BgD,EAAgBhD,GAAS,IAAI,cAAA,EAC7B65N,EAAa75N,GAAS,IAAI,WAAA,EAC1B+5N,EAAgB/5N,GAAS,IAAI,cAAA,EAC7BoD,EAAgBpD,GAAS,IAAI,cAAA,EAC7Bo/M,EAAkBp/M,GAAS,IAAI,gBAAA,EAC/B8oO,EAAqB9oO,GAAS,IAAI,mBAAA,EAClCm/M,EAAsBn/M,GAAS,IAAI,oBAAA,EACnCiD,EAAoBjD,GAAS,IAAI,kBAAA,EACjC+oO,EAAgB/oO,GAAS,IAAI,cAAA,EAC7BgpO,EAAgBhpO,GAAS,IAAI,cAAA,EAC7BipO,EAAiBjpO,GAAS,IAAI,eAAA,EAE9BqD,EAAoBrD,GAAS,IAAI,kBAAA,EACjCwkO,EAAwBxkO,GAAS,IAAI,sBAAA,EAErC,CAAE,mBAAAwkN,CAAA,EAAuBT,GAAA,EACzB,CAAE,IAAKujB,EAAiB,MAAOjD,EAAmB,OAAQC,CAAA,EAAuB3E,oBAAA,EAEjF,CAACwH,EAAa+B,CAAc,EAAI5uO,EAAAA,SAAS,EAAK,EAC9C6uO,EAAkBlwO,EAAAA,OAAkC,IAAI,EAExD,CACF,oBAAA8uO,EACA,2BAAAJ,EAAA,EACAN,GAAiB,CACjB,WAAY,GACZ,cAAArkO,EACA,aAAAL,EACA,gBAAA2kO,EACA,mBAAAhD,CAAA,CACH,EAEK,CAAE,cAAA8E,EAAA,EAAkBhF,GAAgB,CACtC,EAAA7gP,EACA,QAAA49N,EACA,kBAAAkjB,EACA,mBAAAC,EACA,WAAAzK,EACA,cAAAE,EACA,cAAA32N,EACA,oBAAA+7M,EACA,kBAAAl8M,EACA,kBAAAI,EACA,2BAAAkhO,EACA,sBAAAC,EACA,eAAAC,CAAA,CACH,EAEK4E,GAAU,IAAOhoO,GAAS8/M,GAAWkjB,EAAoB,GAAKC,EAAqB,GAAK,CAACkE,EAI/FtvO,EAAAA,UAAU,IAAM,CACR,CAACsvO,GAAiB,CAACrnB,GAAW,CAACunB,GAAc,CAACpB,EAAgB,SAAWhD,GAAsB,IAIlG,SAAY,WACT,KAAM,CAAE,QAAAxtC,EAAS,WAAAswC,GAAY,OAAA3+O,GAAQ,YAAaw+O,EAAA,EAAsB,MAAMmC,GAAcZ,EAAelB,EAAgB,OAAQ,EAOnI,GAJIL,IACAiC,EAAe,EAAI,EAGnBpyC,GASA,GARIswC,GACAqB,EAAiBrB,EAAU,GAE3BqB,EAAiB,IAAI,EAErBS,EAAe,EAAK,GAGpBV,EAAc,OAAS,UAAY//O,GAAQ,CAG3C,MAAM6gP,GAAe7gP,GACf,CAAE,OAAAo+O,GAAQ,MAAO0C,EAAA,EAAaD,GAG9BE,KAAUpiP,GAAAkgP,EAAgB,UAAhB,YAAAlgP,GAAyB,YAAa,GAChDqiP,GAAkB,CAAE,GAAG5C,GAAQ,QAAA2C,EAAA,EAErCV,EAAmBW,EAAe,EAGlCT,EAAcS,GAAgB,KAAMA,EAAe,EAGnD,MAAMprB,IAAal3N,GAAAmgP,EAAgB,UAAhB,YAAAngP,GAAyB,cAAc,OACtDk3N,KACAA,GAAW,MAAM,QAAU,IAC3BA,GAAW,MAAM,WAAa,wBAC9B,WAAW,IAAM,CACbA,GAAW,MAAM,QAAU,GAC/B,EAAG,EAAE,GAITF,GAAA,EAEA,MAAMurB,EAAiC,OAAO,OAAOvqB,CAAmB,EAAE,OAAOh9G,IAASA,IAAS,MAAM,EACrGunI,EAA+B,OAAS,GACxCprB,GAAiBorB,CAA8B,EAGnDnB,EAAa,EAAK,EAElBK,EAASW,EAAQ,EAGjB,WAAW,IAAM,CACb,MAAMI,GAAchC,GAA2B7J,CAAwB,EACnE6L,KAAgB7L,GAChBC,EAA4B4L,EAAW,CAE/C,EAAG,GAAG,CACV,OAEA,QAAQ,MAAM,yBAAyB,EACvCT,EAAe,EAAK,CAE5B,GAAA,CACJ,EAAG,CAACV,CAAa,CAAC,EAGlB,MAAMoB,GAAuBvwO,EAAAA,YAAY,IAAM,QAC3C,GAAI,CAACgI,EAAO,OAAO,KAEnB,MAAMwoO,EAAiB,IAAI5I,GAAe5/N,EAAM,WAAW,EAC3D,OAAI6B,GACA2mO,EAAe,wBAAA,EAEfhB,GAAe,MAAQA,KAAezhP,GAAAia,EAAM,aAAN,YAAAja,GAAkB,YACxDyiP,EAAe,iBAAiBhB,CAAW,EAExCgB,EAAe,YAAA,CAC1B,EAAG,CAACxoO,EAAO6B,EAAgB2lO,CAAW,CAAC,EAEjCiB,GAAoBzwO,EAAAA,YAAY,CAAC0wO,EAAwBrxK,KAAoB,CAC/E,MAAM0sK,GAAY,YAAY,IAAA,EAC9B,QAAQ,IAAI,2CAA2C,KAAK,IAAA,CAAK,EAAE,EAGnE8D,EAAe,EAAI,EAEnB,MAAMc,GAAgBJ,GAAA,EAChBK,GAAiB,YAAY,IAAA,EAAQ7E,GAG3C,GAFA,QAAQ,IAAI,yCAAyC6E,GAAe,QAAQ,CAAC,CAAC,IAAI,EAE9E,CAACD,GAAe,CAChBd,EAAe,EAAK,EACpB,MACJ,CAEA,MAAM/nO,GAASX,GAAW,CACtB,UAAUa,GAAA,YAAAA,EAAO,MAAO,GACxB,mBAAoBq3D,GAAS/5D,GAAW,QAAU,OAClD,OAAQqrO,GACR,KAAM,EACN,MAAA3nO,EACA,wBAAyB0nO,IAAiB3qB,GAAA,MAAAA,EAAiB,eAAgBA,EAAgB,cAAgB,MAAA,CAC9G,EACDqpB,EAAiBtnO,EAAM,EACvBwnO,EAAcqB,EAAa,CAC/B,EAAG,CAAC3oO,EAAO+9M,GAAA,YAAAA,EAAiB,cAAe/8M,EAAOomO,EAAkBE,EAAeiB,EAAoB,CAAC,EAElGM,EAAoB7wO,EAAAA,YAAY,IAAM,QACxC,MAAM8wO,GAAa/iP,GAAAkgP,EAAgB,UAAhB,YAAAlgP,GAAyB,cAAc,OACtD+iP,GACA,QAAQ,IAAI,0CAA0C,EACtDA,EAAW,MAAM,WAAa,yBAC9BA,EAAW,MAAM,QAAU,IAG3B,WAAW,IAAM,CACRpB,EAAchnO,CAAW,IAC1B,QAAQ,IAAI,6EAA6E,EACzFmnO,EAAe,EAAI,EAE3B,EAAG,GAAG,GACEH,EAAchnO,CAAW,GAEjCmnO,EAAe,EAAI,CAE3B,EAAG,CAACA,EAAgBnnO,EAAagnO,CAAa,CAAC,EAG/C7vO,EAAAA,UAAU,KACFmI,GACA,WAAW,IAAM,CACbyoO,GAAkB,GAAOX,EAAgB,SAAW9nO,EAAM,GAAG,CACjE,CAAC,EAEE,IAAM,CACT8nO,EAAgB,QAAU9nO,GAAA,YAAAA,EAAO,GACrC,GACD,CAACA,GAAA,YAAAA,EAAO,GAAG,CAAC,EAEfnI,EAAAA,UAAU,IAAM,CACR2vO,GAAe,MACfiB,GAAkB,GAAM,EAAK,CAErC,EAAG,CAACjB,CAAW,CAAC,EAEhB3vO,EAAAA,UAAU,IAAM,CACRgK,GAAkB,MAClB4mO,GAAkB,GAAM,EAAK,CAErC,EAAG,CAAC5mO,CAAc,CAAC,EAGnBhK,EAAAA,UAAU,IAAM,CACRmI,IACA,QAAQ,IAAI,4DAA4D,EACxE4nO,EAAA,EAER,EAAG,CAAC5mO,EAAOe,EAAeylO,EAAa3lO,EAAgBi8M,EACnDl8M,EAAmBI,EAAmBmhO,EAAuByE,EAAgB5nO,CAAA,CAAM,EAQvFnI,EAAAA,UAAU,IAAM,CACZ,GAAI,CAACmwO,MAAa,CAACX,EACf,OAGJ,IAAIqB,EACJ,GAAI3qB,IAAmBA,GAAA,YAAAA,EAAiB,YAAY/9M,GAAA,YAAAA,EAAO,KAAK,CAC5D,GAAI+9M,GAAA,MAAAA,EAAiB,SAAUA,GAAA,MAAAA,EAAiB,QAC5C,KAAK,IAAIA,EAAgB,OAASklB,CAAkB,EAAI,KACxD,KAAK,IAAIllB,EAAgB,MAAQilB,CAAiB,EAAI,MACtDjlB,GAAA,YAAAA,EAAiB,OAAQr9M,IACzBq9M,GAAA,YAAAA,EAAiB,QAAS/8M,EAC1B,OAEA+8M,EAAgB,gBAChB2qB,EAAgB3qB,EAAgB,eAEpC6pB,EAAA,EAEAiB,EAAA,CACJ,CAEA,MAAM/oO,GAASX,GAAW,CACtB,UAAUa,GAAA,YAAAA,EAAO,MAAO,GACxB,mBAAoB1C,GAAW,QAC/B,OAAQ+pO,EACR,KAAM,EACN,MAAArmO,EACA,wBAAyB0nO,CAAA,CAC5B,EACDtB,EAAiBtnO,EAAM,CAG3B,EAAG,CAACggN,EAASmmB,EAAgB,QAAShD,EAAoBD,CAAiB,CAAC,EAI5EnrO,EAAAA,UAAU,IAAM,CACZ,GAAI,CAACmwO,MAAa,CAACX,EAAY,OAG/BwB,EAAA,EAEA,MAAME,GAAgBhrB,GAAA,YAAAA,EAAiB,gBAAiB,OAElDj+M,GAASX,GAAW,CACtB,UAAUa,GAAA,YAAAA,EAAO,MAAO,GACxB,mBAAoB,OACpB,OAAQqnO,EACR,KAAM3mO,EACN,MAAAM,EACA,wBAAyB+nO,CAAA,CAC5B,EACD3B,EAAiBtnO,EAAM,CAC3B,EAAG,CAACkB,CAAK,CAAC,EAEV,MAAMgoO,EAAc,IAAM,CACtB,GAAI,CAAChB,MAAa,CAACX,EAAY,OAE/B,MAAM1mO,EAAOD,EAAc,EAAIA,EAAc,EACvC82C,IAASumK,GAAA,YAAAA,EAAiB,gBAAiB,OAC3Cj+M,GAASX,GAAW,CAAE,UAAUa,GAAA,YAAAA,EAAO,MAAO,GAAI,OAAQqnO,EAAY,KAAA1mO,EAAY,MAAAK,EAAO,wBAAyBw2C,GAAQ,EAChI4vL,EAAiBtnO,EAAM,CAC3B,EAGAjI,EAAAA,UAAU,IAAM,CACZmxO,EAAA,CACJ,EAAG,CAACxQ,EAAYE,EAAe32N,EAAeC,EAAmBmhO,CAAqB,CAAC,EAEvFtrO,EAAAA,UAAU,IAAM,CACR+J,GAAqB,MAGzBonO,EAAA,CACJ,EAAG,CAACpnO,CAAiB,CAAC,EAEtB/J,EAAAA,UAAU,IAAM,CACR,OAAO,KAAKimN,CAAmB,EAAE,QAAU,GAG/CkrB,EAAA,CACJ,EAAG,CAAClrB,CAAmB,CAAC,EAExBjmN,EAAAA,UAAU,IAAM,QAGZ,GAFI,CAACmwO,GAAA,GAAa,CAACX,GAAc,CAACtpB,GAE9Br9M,EAAc,GAAKA,GAAeq9M,EAAgB,KAClD,OAIJ,MAAMkrB,EAAavB,EAAchnO,CAAW,EAC5C,GAAIuoO,GAAcA,EAAW,QAAS,CAClC,QAAQ,IAAI,iCAAiCvoO,CAAW,EAAE,EAG1DmoO,EAAA,EAGA,MAAMK,GAAU,SAAS,cAAc,KAAK,EAC5CA,GAAQ,UAAYD,EAAW,QAC/B,MAAMzD,GAAS0D,GAAQ,cAAc,KAAK,EAE1C,GAAI1D,IAAUS,EAAgB,QAE1BT,GAAO,MAAM,QAAU,IAGvBA,GAAO,MAAM,SAAW,WACxBA,GAAO,MAAM,IAAM,IACnBA,GAAO,MAAM,KAAO,IAGpBS,EAAgB,QAAQ,YAAYT,EAAM,EAG1CA,GAAO,MAAM,QAAU,IACvBA,GAAO,MAAM,WAAa,wBAG1B,WAAW,IAAM,CACbA,GAAO,MAAM,QAAU,GAC3B,EAAG,EAAE,EAGL,WAAW,IAAM,CACb,GAAIS,EAAgB,QAAS,CACzBA,EAAgB,QAAQ,UAAYgD,EAAW,QAE/C,MAAME,GAAWlD,EAAgB,QAAQ,cAAc,KAAK,EACxDkD,KACAA,GAAS,MAAM,QAAU,IACzBA,GAAS,MAAM,WAAa,GAEpC,CACA1B,EAAmBwB,CAAU,EAC7B/B,EAAa,EAAK,CACtB,EAAG,GAAG,MACH,CAEH,GAAIjB,EAAgB,QAAS,CACzBA,EAAgB,QAAQ,UAAYgD,EAAW,QAC/C,MAAME,GAAWlD,EAAgB,QAAQ,cAAc,KAAK,EACxDkD,KACAA,GAAS,MAAM,QAAU,IAEjC,CACA1B,EAAmBwB,CAAU,EAC7B/B,EAAa,EAAK,CACtB,CAEA,MACJ,GAGmBnhP,GAAAkgP,EAAgB,UAAhB,YAAAlgP,GAAyB,cAAc,SAItD8iP,EAAA,EAGJ,MAAM/oO,GAASR,GAAa,CACxB,SAAUy+M,EAAgB,SAC1B,WAAY,OACZ,WAAYr9M,EACZ,YAAaq9M,EAAgB,OAASilB,EACtC,aAAcjlB,EAAgB,QAAUklB,EACxC,MAAAjiO,EACA,iBAAkBR,CAAA,CACrB,EACD4mO,EAAiBtnO,EAAM,CAC3B,EAAG,CAACY,EAAagnO,EAAeD,EAAoBP,CAAY,CAAC,EAGjEJ,GAAgB,IAAM,CAClB,GAAI,CAAChnB,GAAW,CAACmmB,EAAgB,SAAW,CAACloB,GAAmB,CAACiqB,KAAW,OAE5E,MAAMoB,EAAsBrrB,EAAgB,KACtCp1B,GAAWygD,EAAsB,EACjC5gD,GAAW4gD,EAAsB,EAGnCzgD,IAAYnoL,GAAa,CAACknO,EAAc/+C,EAAQ,IAChD,QAAQ,IAAI,kCAAkCA,EAAQ,EAAE,EACxD0gD,GAAc1gD,EAAQ,GAItBH,IAAY,GAAK,CAACk/C,EAAcl/C,EAAQ,IACxC,QAAQ,IAAI,kCAAkCA,EAAQ,EAAE,EACxD6gD,GAAc7gD,EAAQ,EAE9B,EAAG,CAACu1B,EAAiBv9M,EAAWs/M,EAAS4nB,CAAa,CAAC,EAEvD,MAAM2B,GAAgB,MAAO1oO,GAAiB,CAC1C,GAAI,GAACm/M,GAAW,CAAC/B,GAEjB,GAAI,CACA,MAAMgmB,GAAY,YAAY,IAAA,EAGxBuF,GAAgB,SAAS,cAAc,KAAK,EAClDA,GAAc,MAAM,QAAU,OAC9BA,GAAc,MAAM,SAAW,WAC/BA,GAAc,MAAM,IAAM,UAC1B,SAAS,KAAK,YAAYA,EAAa,EAEvC,MAAMxpO,GAASR,GAAa,CACxB,SAAUy+M,EAAgB,SAC1B,WAAY,OACZ,WAAYp9M,EACZ,YAAao9M,EAAgB,OAASilB,EACtC,aAAcjlB,EAAgB,QAAUklB,EACxC,MAAOllB,EAAgB,MACvB,iBAAkBv9M,CAAA,CACrB,EAEKpZ,GAAS,MAAM2gP,GAAcjoO,GAAQwpO,EAAa,EAExD,GAAIliP,GAAO,SAAWA,GAAO,OAAQ,CACjC,MAAM6gP,GAAe7gP,GAAO,OAGtB+gP,GAAUmB,GAAc,UACxBlB,GAAkB,CAAE,GAAGH,GAAa,OAAQ,QAAAE,EAAA,EAElDR,EAAchnO,EAAMynO,EAAe,EACnC,QAAQ,IAAI,iCAAiCznO,CAAI,QAAQ,YAAY,IAAA,EAAQojO,IAAW,QAAQ,CAAC,CAAC,IAAI,CAC1G,CAGA,SAAS,KAAK,YAAYuF,EAAa,CAC3C,OAAS53O,GAAO,CACZ,QAAQ,MAAM,4BAA4BiP,CAAI,IAAKjP,EAAK,CAC5D,CACJ,EAIA,OACI0oN,OAAC,MAAA,CAAI,MAAO,CAAE,MAAO,OAAQ,OAAQ,OAAQ,SAAU,UAAA,EACnD,SAAA,CAAAC,EAAAA,IAAC,MAAA,CAAI,IAAK4rB,EACN,UAAW,gBAAkBS,EAAoB,KAAK,GAAG,EACzD,MAAO,CACH,MAAO,OACP,OAAQ,OACR,WAAYngM,GAAmB,QAC/B,mBAAoBA,CAAA,EAExB,QAAS48K,CAAA,CAAA,EACb9I,EAAAA,IAACwsB,GAAA,CAAe,QAASf,CAAA,CAAa,CAAA,EAC1C,CAGR,CCvgBA,SAAwByD,GAAkB,CACxC,aAAAjoO,EACA,aAAAu8M,EACA,gBAAAooB,CACF,EAAyB,CAEvB,MAAMuD,EAAe5xO,EAAAA,OAAyB,IAAI,EAG5C6xO,EAA0B9rB,GAA4B,OAC1D,QAAO53N,EAAA43N,EAAQA,EAAQ,OAAS,CAAC,IAA1B,YAAA53N,EAA6B,SAAU,CAChD,EAGM2jP,EAAqB3rB,GAAkC,CAC3D,GAAI,CAACkoB,EAAgB,QACnB,MAAO,CAAA,EAGT,MAAM0D,EAAa1D,EAAgB,QAAQ,sBAAA,EACrClL,EAAgB0O,EAAuB1rB,EAAgB,OAAO,EAC9D6rB,EAAW,KAAK,MACpBD,EAAW,KACX,EAAI1D,EAAgB,QAAQ,YAAc,GACzC0D,EAAW,MAAQA,EAAW,MAAA,EAG3BE,EAAa9rB,EAAgB,QAChC,OAAQ/6N,GAAMA,EAAE,YAAc,MAAS,EACvC,IAAKA,IAAe,CAAE,GAAIA,EAAE,UAAW,GAAIA,EAAE,MAAA,EAAW,EAErDonC,EAAwB,CAAA,EAE9B,OAAAy/M,EAAW,QAASpvF,GAAY,OAC9B,GAAIA,EAAQ,GAAI,CACd,MAAMwkE,EAAY,IAAI,OAAOxkE,EAAQ,EAAE,EACjCqvF,GAAiB/jP,EAAAkgP,EAAgB,UAAhB,YAAAlgP,EAAyB,cAAc,IAAIk5N,CAAS,IAC3E,GAAI6qB,EAAgB,CAClB,MAAM1mB,EAAK0mB,EAAe,sBAAA,EACpBC,EAAYH,EAAW,KAAK,MAAMxmB,EAAG,IAAI,EACzC38L,EAASg0H,EAAQ,GAAKsgF,EAE5B3wM,EAAU,KAAK,CACb,UAAW,cAAc2/M,CAAS,MAClC,OAAAtjN,CAAA,CACD,CACH,CACF,CACF,CAAC,EAEG2D,EAAU,OAAS,IACrBA,EAAUA,EAAU,OAAS,CAAC,EAAG,OAAS,GAGrCA,CACT,EAKM4/M,EAAiB,CAACjsB,EAA+BksB,EAAyBC,IAAyB,CACvG,GACE,CAACjE,EAAgB,SACjB,CAACloB,GACDA,EAAgB,QAAQ,SAAW,EAEnC,OAGF,MAAMf,EAAaipB,EAAgB,QAAQ,cAAc,KAAK,EAC9D,GAAI,CAACjpB,EACH,OAGF,MAAM5yL,EAAYs/M,EAAkB3rB,CAAe,EAG7CosB,EAAmC,CACvC,SAHoBV,EAAuB1rB,EAAgB,OAAO,EAIlE,KAAM,WACN,SAAU,GAAA,EAKZyrB,EAAa,QAAUxsB,EAAW,QAAQ5yL,EAAW+/M,CAAM,EACvDF,EAAkB,IACpBT,EAAa,QAAQ,YAAcS,GAEjCC,GACFV,EAAa,QAAQ,MAAA,CAIzB,EAKMY,EAAwB,IAAM,OAClC,GAAI,CAACnE,EAAgB,QAAS,OAE9B,MAAMoE,EAAiB,SAAS,cAAc,kBAAkB,EAChE,GAAIA,EAAgB,CAClB,MAAMC,GAAuBvkP,EAAAkgP,EAAgB,UAAhB,YAAAlgP,EAAyB,wBAChDwkP,EAAaD,EAAuB,GAAGA,EAAqB,IAAI,KAAO,MACvEE,EAAYF,EAAuB,GAAGA,EAAqB,KAAOA,EAAqB,KAAK,KAAO,OACzGD,EAAe,MAAM,YAAY,gBAAiBE,CAAU,EAC5DF,EAAe,MAAM,YAAY,eAAgBG,CAAS,CAC5D,CACF,EAKA3yO,OAAAA,EAAAA,UAAU,IAAM,CACd,GAAI,CAAC2xO,EAAa,QAChB,OAGF,MAAMz+J,EAAYy+J,EAAa,QAE3BloO,IAAiB3B,GAAa,QAAUorE,EAAU,YAAc,UAClEA,EAAU,MAAA,EACDzpE,IAAiB3B,GAAa,SAAWorE,EAAU,YAAc,UAC1EA,EAAU,KAAA,EACDzpE,IAAiB3B,GAAa,UACvCorE,EAAU,OAAA,EACVA,EAAU,YAAc,EAE5B,EAAG,CAACzpE,CAAY,CAAC,EAGjBzJ,EAAAA,UAAU,IAAM,CACV,CAAC2xO,EAAa,SAAW3rB,GAAgB,KAE7C2rB,EAAa,QAAQ,YAAc3rB,EACrC,EAAG,CAACA,CAAY,CAAC,EAGjBhmN,EAAAA,UAAU,IACD,IAAM,CACP2xO,EAAa,SACfA,EAAa,QAAQ,OAAA,CAEzB,EACC,CAAA,CAAE,EAEE,CACL,aAAAA,EACA,eAAAQ,EACA,sBAAAI,EACA,uBAAAX,CAAA,CAEJ,CCvJA,SAASgB,GAAoBxD,EAAgC,CACzD,KAAM,CAAE,gBAAA1gM,GAAoB0gM,EACtB,CAAE,QAAAnnB,CAAA,EAAYxnN,EAAAA,WAAW6L,EAAO,EAChC,CAAE,EAAAjiB,CAAA,EAAM+V,GAAe,QAAQ,EAE/BmrO,EAAiBzkO,GAAS,IAAI,eAAA,EAE9BuoO,EAAevoO,GAAS,IAAI,aAAA,EAC5BwoO,EAAgBxoO,GAAS,IAAI,cAAA,EAC7ByoO,EAAmBzoO,GAAS,IAAI,iBAAA,EAChCqB,EAAQrB,GAAS,IAAI,MAAA,EACrB0oO,EAAa1oO,GAAS,IAAI,WAAA,EAC1Bk/M,EAAel/M,GAAS,IAAI,aAAA,EAC5Bi/M,EAAkBj/M,GAAS,IAAI,gBAAA,EAC/B2C,EAAe3C,GAAS,IAAI,aAAA,EAC5B+gN,EAAkB/gN,GAAS,IAAI,gBAAA,EAC/BgD,EAAgBhD,GAAS,IAAI,cAAA,EAC7B+rO,EAAmB/rO,GAAS,IAAI,iBAAA,EAChC65N,EAAa75N,GAAS,IAAI,WAAA,EAC1B+5N,EAAgB/5N,GAAS,IAAI,cAAA,EAE7BoD,EAAgBpD,GAAS,IAAI,cAAA,EAE7Bm/M,EAAsBn/M,GAAS,IAAI,oBAAA,EAEnCiD,EAAoBjD,GAAS,IAAI,kBAAA,EACjCwkO,EAAwBxkO,GAAS,IAAI,sBAAA,EAErCo/M,EAAkBp/M,GAAS,IAAI,gBAAA,EAC/B8oO,EAAqB9oO,GAAS,IAAI,mBAAA,EAElC,CAACmnO,EAAa+B,CAAc,EAAI5uO,EAAAA,SAAS,EAAK,EAE9C,CAAE,IAAKgtO,EAAiB,MAAOjD,EAAmB,OAAQC,CAAA,EAAuB3E,oBAAA,EAGjF,CACF,oBAAAoI,EACA,mBAAAE,CAAA,EACAZ,GAAiB,CACjB,WAAY,GACZ,cAAArkO,EACA,aAAAL,EACA,gBAAA2kO,EACA,mBAAAhD,CAAA,CACH,EAEK,CACF,eAAA+G,EACA,sBAAAI,CAAA,EACAb,GAAkB,CAClB,aAAAjoO,EACA,aAAAu8M,EACA,gBAAAooB,CAAA,CACH,EAEK,CAAE,cAAA8B,CAAA,EAAkBhF,GAAgB,CACtC,EAAA7gP,EACA,QAAA49N,EACA,kBAAAkjB,EACA,mBAAAC,EACA,WAAAzK,EACA,cAAAE,EACA,cAAA32N,EACA,oBAAA+7M,EACA,kBAAAl8M,EACA,eAAAwhO,EACA,kBAAmB,GACnB,sBAAAD,EACA,2BAA4B,EAAA,CAC/B,EAEKwH,EAAiB3qO,GAAiB,CAChC2B,GACA+oO,EAAiB,EAAK,EAE1B,MAAM5qO,EAAST,GAAqB,CAAE,OAAQ4jO,EAAoB,OAAQjjO,EAAM,eAAgB,EAChGonO,EAAiBtnO,CAAM,CAC3B,EAEAjI,OAAAA,EAAAA,UAAU,IAAM,CACR,CAACmI,GAAS,CAAC8/M,GAAWmjB,GAAsB,GAGhD0H,EAAc3qO,CAAK,CACvB,EAAG,CAACimO,EAAgB,OAAO,CAAC,EAE5BpuO,EAAAA,UAAU,IAAM,CACR,CAACmI,GAAS,CAAC8/M,GAAWmjB,GAAsB,IAG5C,CAACllB,GAAmBA,EAAgB,IAAM,uBAC1C4sB,EAAc3qO,CAAK,CAE3B,EAAG,CAACijO,CAAkB,CAAC,EAIvBprO,EAAAA,UAAU,IAAM,CACR,CAACsvO,GAAiB,CAACrnB,GAAW,CAACunB,GAAc,CAACpB,EAAgB,UAIjE,SAAY,CACT,KAAM,CAAE,QAAAxwC,EAAS,WAAAswC,EAAY,OAAA3+O,EAAQ,YAAaw+O,CAAA,EAAsB,MAAMmC,EAAcZ,EAAelB,EAAgB,OAAQ,EAOnI,GAJIL,GACAiC,EAAe,EAAI,EAGnBpyC,GACA,GAAIswC,EACAqB,EAAiBrB,CAAU,UAE3BqB,EAAiB,IAAI,EAErBS,EAAe,EAAK,EAGhBzgP,GACI+/O,EAAc,OAAS,mBAAoB,CAC3C,MAAMyD,EAAmBxjP,EACnB,CAAE,OAAAo+O,GAAWoF,EACnBnD,EAAmBjC,CAAM,EACzB0B,EAAa,EAAK,EAClBkD,EAAA,EACI9oO,GAAgB3B,GAAa,QAC7BqqO,EAAexE,EAAQ5nB,EAAiB,EAAK,EACtCt8M,GAAgB3B,GAAa,OACpCqqO,EAAexE,EAAQ5nB,EAAiB,EAAI,GAE5CosB,EAAexE,EAAQ,EAAG,EAAK,EAC/B9lB,EAAgB//M,GAAa,OAAO,EAE5C,OAIR,QAAQ,MAAM,yBAAyB,EACvCkoO,EAAe,EAAK,CAE5B,GAAA,CACJ,EAAG,CAACV,EAAernB,EAASunB,CAAU,CAAC,EAInCjtB,OAAC,MAAA,CAAI,MAAO,CAAE,MAAO,OAAQ,OAAQ,OAAQ,SAAU,UAAA,EACnD,SAAA,CAAAC,EAAAA,IAAC,MAAA,CAAI,IAAK4rB,EACN,UAAW,mBAAqBS,EAAoB,KAAK,GAAG,EAC5D,MAAO,CACH,MAAO,OACP,OAAQ,OACR,WAAYngM,GAAmB,QAC/B,UAAW,qBACX,mBAAoB,SACpB,YAAa,SACb,mBAAoBA,CAAA,CACxB,CAAA,EAEJ8zK,EAAAA,IAACwsB,GAAA,CAAe,QAASf,CAAA,CAAa,QACrC,MAAA,CAAI,UAAW,2BAA2Bc,EAAqB,UAAY,EAAE,EAAA,CAAI,CAAA,EACtF,CAGR,CChLO,SAASiE,GAAalzO,EAAwC,CACnE,KAAM,CAACmzO,EAAgBC,CAAe,EAAI9xO,EAAAA,SAAS,EAAK,EAExDpB,OAAAA,EAAAA,UAAU,IAAM,CACd,GAAIF,EAAI,UAAY,KAChB,OAEJ,MAAM9Q,EAAW,IAAI,qBAAqB,CAAC,CAAC+lB,CAAK,IAC/Cm+N,EAAgBn+N,EAAM,cAAc,CAAA,EAGtC,OAAA/lB,EAAS,QAAQ8Q,EAAI,OAAO,EACrB,IAAM,CACX9Q,EAAS,WAAA,CACX,CACF,EAAG,CAAC8Q,CAAG,CAAC,EAEDmzO,CACT,CClBA,MAAME,GAAe,IAOfC,GAAe,CAAC,CAAE,MAAAj5D,EAAO,WAAAk5D,KAAoC,CAC/D,MAAM3+N,EAAU3U,EAAAA,OAA4B,IAAI,EAC1C4qE,EAAY5qE,EAAAA,OAAO,EAAE,EACrB,CAAC0wB,EAAS6iN,CAAU,EAAIlyO,EAAAA,SAA6B,MAAS,EAEpEpB,OAAAA,EAAAA,UAAU,IAAM,CACZ,SAAS6vI,EAAQ1kJ,EAAe,CAC5B,GAAKupB,EAAQ,UAGbA,EAAQ,QAAQ,MAAM,WAAa,SAC/Bi2D,EAAU,SAAW,KACrB,OAAO,aAAaA,EAAU,OAAO,EACrCA,EAAU,QAAU,IAGpBj2D,EAAQ,UAAW,eAAK,cAAa,CACrC,MAAM0D,EAAIjtB,EAAE,QAAUupB,EAAQ,QAAQ,YAAc,EAC9C2D,EAAIltB,EAAE,QAAU,IAAI,YAAcupB,EAAQ,QAAQ,aAAe,EAAI,EAC3EA,EAAQ,QAAQ,MAAM,UAAY,aAAa0D,CAAC,OAAOC,CAAC,MAExD,MAAMk7N,EAAaF,EAAWloP,CAAC,GAC3B,CAACooP,GAAcA,GAAc9iN,IAC7B6iN,EAAWC,CAAU,EAErBA,IACA5oK,EAAU,QAAU,OAAO,WAAW,IAAM,CACpCj2D,EAAQ,UACRA,EAAQ,QAAQ,MAAM,WAAa,UAE3C,EAAGy+N,EAAY,EAEvB,CAEJ,CACA,OAAAh5D,EAAM,iBAAiB,YAAatqC,CAAO,EACpC,IAAMsqC,EAAM,oBAAoB,YAAatqC,CAAO,CAC/D,EAAG,CAACsqC,EAAOk5D,EAAY5iN,CAAO,CAAC,EAExB4+C,GAAAA,mBACE,MAAA,CAAI,UAAU,gBAAgB,IAAK36D,EAC/B,SAAA+b,EACL,EACJ,SAAS,IAAA,CACjB,ECxCMmhN,GAA0B9rB,GAA4B,OACxD,QAAO53N,EAAA43N,EAAQA,EAAQ,OAAS,CAAC,IAA1B,YAAA53N,EAA6B,SAAU,CAClD,EAcA,SAASslP,GAAmBC,EAAkD3zO,EAAiC,CAC3G,KAAM,CAAE,EAAAzV,CAAA,EAAM+V,GAAe,QAAQ,EAE/B,CAAE,gBAAAsuC,EAAiB,OAAA72B,EAAQ,2BAAAwzN,CAAA,EAA+BoI,EAE1DtrO,EAAQrB,GAAS,IAAI,MAAA,EACrB6C,EAAa7C,GAAS,IAAI,WAAA,EAC1BkhN,EAAgBlhN,GAAS,IAAI,cAAA,EAC7B2C,EAAe3C,GAAS,IAAI,aAAA,EAC5B+gN,EAAkB/gN,GAAS,IAAI,gBAAA,EAC/B+B,EAAc/B,GAAS,IAAI,YAAA,EAC3B4sO,EAAe5sO,GAAS,IAAI,aAAA,EAC5B6sO,EAAmB7sO,GAAS,IAAI,iBAAA,EAChC6B,EAAY7B,GAAS,IAAI,UAAA,EACzB29N,EAAsB39N,GAAS,IAAI,oBAAA,EACnCgD,EAAgBhD,GAAS,IAAI,cAAA,EAC7Bo/M,EAAkBp/M,GAAS,IAAI,gBAAA,EAE/B,CAAC8sO,EAAWC,CAAY,EAAIzyO,EAAAA,SAAS,EAAK,EAG1C0yO,EAAiB/zO,EAAAA,OAAuB,IAAI,EAE5Cg0O,EAAiBf,GAAac,CAAc,EAElDjhG,EAAAA,oBAAoB/yI,EAAK,KAAO,CAC5B,eAAgB,IAAM,QAClB5R,EAAA4lP,EAAe,UAAf,MAAA5lP,EAAwB,eAAe,GAC3C,CAAA,EACA,EAIJ,MAAM8lP,EAAgBxvB,GAAa,CAC/B,aAAe/oL,GAAM,CACbhyB,GAAgB3B,GAAa,SAAWe,EAAcF,IACtD87N,EAAA,EACAiP,EAAA,EAER,EACA,cAAgBj4M,GAAM,CACdhyB,GAAgB3B,GAAa,SAAWe,EAAc,IACtD47N,EAAA,EACAkP,EAAA,EAER,EACA,MAAO,GACP,cAAe,IACf,qBAAsB,EAAA,CACzB,EAGKzQ,EAAgBxwN,EAAAA,QAAQ,IACnBwzM,GAAA,MAAAA,EAAiB,SAAWA,EAAgB,QAAQ,OAAS,EAChE0rB,GAAuB1rB,EAAgB,OAAO,EAAI,EACvD,CAACA,CAAe,CAAC,EAGpBlmN,OAAAA,EAAAA,UAAU,IAAM,CACR,CAAC+zO,GAAkBtqO,GAAgB3B,GAAa,SAChD+/M,EAAgB//M,GAAa,MAAM,CAE3C,EAAG,CAACisO,CAAc,CAAC,EAEnB/zO,EAAAA,UAAU,IAAM,CACRyJ,GAAgB3B,GAAa,SAC7B+/M,EAAgB//M,GAAa,OAAO,CAE5C,EAAG,CAACK,CAAK,CAAC,EAEVnI,EAAAA,UAAU,IAAM,CACRyJ,GAAgB3B,GAAa,SACzB6B,GACAq+M,EAAc,EAAK,CAG/B,EAAG,CAACv+M,CAAY,CAAC,EAKb84M,EAAAA,KAAC,MAAA,CAAI,IAAKuxB,EACN,UAAU,eACV,aAAc,IAAMD,EAAa,EAAI,EAAG,aAAc,IAAMA,EAAa,EAAK,EAC9E,MAAO,CACH,SAAU,WACV,MAAO,OACP,OAAAh8N,CAAA,EAEJ,SAAA,CAAA0qM,EAAAA,KAAC,MAAA,CAAI,MAAO,CAAE,QAAS,OAAQ,cAAe,SAAU,OAAQ,OAAQ,MAAO,MAAA,EACzE,SAAA,CAAAuxB,EAAe,QAAUtxB,EAAAA,IAAC8iB,GAAA,CACxB,MAAO,CAAE,KAAM,GAAA,EACf,kBAAmBwO,EAAe,QAClC,mBAAoBL,EAAwB,oBAAsB,GAClE,cAAAvQ,CAAA,CAAA,EAAkC,KAEtC1gB,EAAAA,IAAC,MAAA,CAAI,UAAU,sCACV,GAAGwxB,EACJ,MAAO,CACH,KAAM,IACN,gBAAAtlM,EACA,MAAO,OACP,SAAU,QAAA,EAGb,SAAA/kC,QAAcipO,GAAA,CAAoB,gBAAAlkM,EAAkC,2BAAA28L,EAAwD,EAC3H7oB,EAAAA,IAAC2sB,GAAA,CAAU,gBAAAzgM,EAAkC,2BAAA28L,CAAA,CAAwD,CAAA,CAAA,CAE3G,EACJ,QAEC9gB,GAAA,EAAY,EAEZzgN,IAAiBo8M,GAAA,MAAAA,EAAiB,IAAK1D,EAAAA,IAACie,KAAW,EAAK,KAExDqT,EAAe,SAAWF,GAAapxB,EAAAA,IAAC4wB,GAAA,CACrC,MAAOU,EAAe,QACtB,WAAa3oP,GAAM,SACf,MAAM8oP,GAAW/lP,EAAA/C,EAAE,SAAF,YAAA+C,EAAsB,QAAQ,wBACzC00J,GAAW30J,EAAA9C,EAAE,SAAF,YAAA8C,EAAsB,QAAQ,aACzC4M,EAAI+nJ,GAAA,YAAAA,EAAS,aAAa,UAChC,OAAOqxF,GAAWp5O,EAAIxQ,EAAE,sBAAuB,CAAE,OAAUwQ,CAAA,CAAG,EAAI,MACtE,CAAA,CAAA,CACJ,CAAA,CAAA,CAGZ,CAEA,MAAAq5O,GAAe18K,EAAAA,WAA2Dg8K,EAAkB,ECxJrF,SAASW,KAAK,CAAC,CAEf,SAASC,KAAc,CAAC,CCcxB,SAAS9lN,GAAM1iC,EAAO,CAE3B,MAAM0B,EAAS,CAAA,EACTyU,EAAQ,OAAOnW,GAAS,EAAE,EAChC,IAAIwD,EAAQ2S,EAAM,QAAQ,GAAG,EACzB22H,EAAQ,EAER3rG,EAAM,GAEV,KAAO,CAACA,GAAK,CACP39B,IAAU,KACZA,EAAQ2S,EAAM,OACdgrB,EAAM,IAGR,MAAMzI,EAAQviB,EAAM,MAAM22H,EAAOtpI,CAAK,EAAE,KAAI,GAExCk1B,GAAS,CAACyI,IACZz/B,EAAO,KAAKg3B,CAAK,EAGnBo0G,EAAQtpI,EAAQ,EAChBA,EAAQ2S,EAAM,QAAQ,IAAK22H,CAAK,CAClC,CAEA,OAAOprI,CACT,CAYO,SAASqiC,GAAU01D,EAAQh3F,EAAS,CACzC,MAAMgmP,EAAsB,CAAA,EAK5B,OAFchvJ,EAAOA,EAAO,OAAS,CAAC,IAAM,GAAK,CAAC,GAAGA,EAAQ,EAAE,EAAIA,GAGhE,MACEgvJ,EAAS,SAAW,IAAM,IACzB,KACCA,EAAS,UAAY,GAAQ,GAAK,IAC3C,EACK,KAAI,CACT,CC/DA,MAAMC,GAAS,0DACTC,GAAY,2DAGZ1vH,GAAe,CAAA,EA0Cd,SAASvrH,GAAKA,EAAMjL,EAAS,CAGlC,OAF4Bw2H,GACR,IAAM0vH,GAAYD,IAC5B,KAAKh7O,CAAI,CACrB,CCtDA,MAAMskO,GAAK,eAaJ,SAAS3vM,GAAWg8C,EAAO,CAChC,OAAO,OAAOA,GAAU,SACpBA,EAAM,OAAS,OACbroB,GAAMqoB,EAAM,KAAK,EACjB,GACFroB,GAAMqoB,CAAK,CACjB,CAMA,SAASroB,GAAMh2D,EAAO,CACpB,OAAOA,EAAM,QAAQgyO,GAAI,EAAE,IAAM,EACnC,CC5BO,IAAA4W,GAAA,KAAa,CAWlB,YAAY1lN,EAAU2lN,EAAQ50L,EAAO,CACnC,KAAK,OAAS40L,EACd,KAAK,SAAW3lN,EAEZ+wB,IACF,KAAK,MAAQA,EAEjB,CACF,EAEAq6B,GAAO,UAAU,OAAS,CAAA,EAC1BA,GAAO,UAAU,SAAW,CAAA,EAC5BA,GAAO,UAAU,MAAQ,OCdlB,SAAStiD,GAAM88M,EAAa70L,EAAO,CAExC,MAAM/wB,EAAW,CAAA,EAEX2lN,EAAS,CAAA,EAEf,UAAWE,KAAcD,EACvB,OAAO,OAAO5lN,EAAU6lN,EAAW,QAAQ,EAC3C,OAAO,OAAOF,EAAQE,EAAW,MAAM,EAGzC,OAAO,IAAIz6J,GAAOprD,EAAU2lN,EAAQ50L,CAAK,CAC3C,CCjBO,SAASqjC,GAAUt3F,EAAO,CAC/B,OAAOA,EAAM,YAAW,CAC1B,CCNO,IAAAgpP,GAAA,KAAW,CAShB,YAAY9lN,EAAUsyH,EAAW,CAC/B,KAAK,UAAYA,EACjB,KAAK,SAAWtyH,CAClB,CACF,EAEA+lN,GAAK,UAAU,UAAY,GAC3BA,GAAK,UAAU,WAAa,GAC5BA,GAAK,UAAU,QAAU,GACzBA,GAAK,UAAU,sBAAwB,GACvCA,GAAK,UAAU,eAAiB,GAChCA,GAAK,UAAU,QAAU,GACzBA,GAAK,UAAU,gBAAkB,GACjCA,GAAK,UAAU,OAAS,GACxBA,GAAK,UAAU,kBAAoB,GACnCA,GAAK,UAAU,SAAW,GAC1BA,GAAK,UAAU,eAAiB,GAChCA,GAAK,UAAU,MAAQ,OC/BvB,IAAIC,GAAS,EAEN,MAAMt7J,GAAUu7J,GAAS,EACnBC,GAAaD,GAAS,EACtBE,GAAoBF,GAAS,EAC7Bl7J,GAASk7J,GAAS,EAClBG,GAAiBH,GAAS,EAC1BI,GAAiBJ,GAAS,EAC1BK,GAAwBL,GAAS,EAE9C,SAASA,IAAY,CACnB,MAAO,IAAK,EAAED,EAChB,0NCLMO,GACJ,OAAO,KAAKn8J,EAAK,SAGZ,cAA0B27J,EAAK,CAcpC,YAAY/lN,EAAUsyH,EAAW/tE,EAAMxzB,EAAO,CAC5C,IAAIzwD,EAAQ,GAMZ,GAJA,MAAM0/B,EAAUsyH,CAAS,EAEzBniI,GAAK,KAAM,QAAS4gC,CAAK,EAErB,OAAOwzB,GAAS,SAClB,KAAO,EAAEjkF,EAAQimP,GAAO,QAAQ,CAC9B,MAAMC,EAAQD,GAAOjmP,CAAK,EAC1B6vB,GAAK,KAAMo2N,GAAOjmP,CAAK,GAAIikF,EAAO6F,GAAMo8J,CAAK,KAAOp8J,GAAMo8J,CAAK,CAAC,CAClE,CAEJ,CACF,EAEAC,GAAY,UAAU,QAAU,GAchC,SAASt2N,GAAKomE,EAAQ56F,EAAKmB,EAAO,CAC5BA,IACFy5F,EAAO56F,CAAG,EAAImB,EAElB,CCnBO,SAASub,GAAOwtO,EAAY,CAEjC,MAAMa,EAAa,CAAA,EAEbC,EAAU,CAAA,EAEhB,SAAW,CAAC3mN,EAAUljC,CAAK,IAAK,OAAO,QAAQ+oP,EAAW,UAAU,EAAG,CACrE,MAAM9kN,EAAO,IAAI0lN,GACfzmN,EACA6lN,EAAW,UAAUA,EAAW,YAAc,CAAA,EAAI7lN,CAAQ,EAC1DljC,EACA+oP,EAAW,KACjB,EAGMA,EAAW,iBACXA,EAAW,gBAAgB,SAAS7lN,CAAQ,IAE5Ce,EAAK,gBAAkB,IAGzB2lN,EAAW1mN,CAAQ,EAAIe,EAEvB4lN,EAAQvyJ,GAAUp0D,CAAQ,CAAC,EAAIA,EAC/B2mN,EAAQvyJ,GAAUrzD,EAAK,SAAS,CAAC,EAAIf,CACvC,CAEA,OAAO,IAAIorD,GAAOs7J,EAAYC,EAASd,EAAW,KAAK,CACzD,CCjEO,MAAMe,GAAOvuO,GAAO,CACzB,WAAY,CACV,qBAAsB,KACtB,WAAY6tO,GACZ,iBAAkB,KAClB,SAAUA,GACV,YAAaA,GACb,aAAcn7J,GACd,aAAcA,GACd,YAAaA,GACb,aAAcq7J,GACd,YAAa,KACb,gBAAiBA,GACjB,YAAa,KACb,aAAcF,GACd,eAAgBE,GAChB,iBAAkB,KAClB,aAAcF,GACd,WAAYE,GACZ,YAAaF,GACb,aAAc,KACd,WAAYA,GACZ,YAAa,KACb,iBAAkB,KAClB,UAAW,KACX,eAAgBE,GAChB,UAAWr7J,GACX,SAAU,KACV,UAAWm7J,GACX,cAAeA,GACf,oBAAqBA,GACrB,gBAAiB,KACjB,SAAUE,GACV,gBAAiB,KACjB,aAAcr7J,GACd,YAAam7J,GACb,aAAcA,GACd,aAAc,KACd,aAAcA,GACd,oBAAqBE,GACrB,aAAcr7J,GACd,aAAcA,GACd,YAAaA,GACb,aAAcm7J,GACd,YAAan7J,GACb,SAAU,KACV,aAAcA,GACd,aAAcA,GACd,aAAcA,GACd,cAAe,KACf,KAAM,IACV,EACE,UAAUp+C,EAAG3M,EAAU,CACrB,OAAOA,IAAa,OAChBA,EACA,QAAUA,EAAS,MAAM,CAAC,EAAE,YAAW,CAC7C,CACF,CAAC,ECpDM,SAAS6mN,GAAuB5tL,EAAYq5F,EAAW,CAC5D,OAAOA,KAAar5F,EAAaA,EAAWq5F,CAAS,EAAIA,CAC3D,CCAO,SAASw0F,GAAyB7tL,EAAYj5B,EAAU,CAC7D,OAAO6mN,GAAuB5tL,EAAYj5B,EAAS,YAAW,CAAE,CAClE,CCDO,MAAM6oM,GAAOxwN,GAAO,CACzB,WAAY,CACV,cAAe,iBACf,UAAW,QACX,QAAS,MACT,UAAW,YACf,EACE,gBAAiB,CAAC,UAAW,WAAY,QAAS,UAAU,EAC5D,WAAY,CAEV,KAAM,KACN,OAAQguO,GACR,cAAeD,GACf,UAAWA,GACX,OAAQ,KACR,MAAO,KACP,gBAAiB17J,GACjB,oBAAqBA,GACrB,eAAgBA,GAChB,IAAK,KACL,GAAI,KACJ,MAAOA,GACP,eAAgB,KAChB,aAAc07J,GACd,UAAW17J,GACX,SAAUA,GACV,SAAU07J,GACV,QAAS,KACT,QAAS,KACT,QAAS17J,GACT,KAAM,KACN,UAAW07J,GACX,KAAMr7J,GACN,QAAS,KACT,QAAS,KACT,gBAAiBm7J,GACjB,SAAUx7J,GACV,aAAc07J,GACd,OAAQr7J,GAASs7J,GACjB,YAAa,KACb,KAAM,KACN,SAAU,KACV,SAAU,KACV,QAAS37J,GACT,MAAOA,GACP,IAAK,KACL,QAAS,KACT,SAAUA,GACV,SAAUy7J,GACV,UAAWD,GACX,QAAS,KACT,aAAc,KACd,cAAe,KACf,KAAM,KACN,WAAY,KACZ,YAAa,KACb,WAAY,KACZ,eAAgBx7J,GAChB,WAAY,KACZ,QAAS07J,GACT,OAAQr7J,GACR,OAAQo7J,GACR,KAAMp7J,GACN,KAAM,KACN,SAAU,KACV,QAASq7J,GACT,UAAWA,GACX,GAAI,KACJ,WAAY,KACZ,YAAa,KACb,MAAO17J,GACP,UAAW,KACX,UAAW,KACX,GAAI,KACJ,MAAOA,GACP,OAAQ,KACR,SAAU07J,GACV,QAASA,GACT,UAAW17J,GACX,SAAU07J,GACV,KAAM,KACN,MAAO,KACP,KAAM,KACN,SAAU,KACV,KAAM,KACN,QAAS,KACT,KAAM17J,GACN,IAAKK,GACL,SAAU,KACV,IAAK,KACL,UAAWA,GACX,MAAO,KACP,OAAQ,KACR,IAAK,KACL,UAAWA,GACX,SAAUL,GACV,MAAOA,GACP,KAAM,KACN,MAAO,KACP,SAAUA,GACV,WAAYA,GACZ,QAAS,KACT,aAAc,KACd,WAAY,KACZ,cAAe,KACf,cAAe,KACf,eAAgB,KAChB,eAAgB,KAChB,OAAQ,KACR,SAAU,KACV,UAAW,KACX,iBAAkB,KAClB,SAAU,KACV,QAAS,KACT,QAAS,KACT,cAAe,KACf,cAAe,KACf,kBAAmB,KACnB,OAAQ,KACR,YAAa,KACb,MAAO,KACP,WAAY,KACZ,OAAQ,KACR,UAAW,KACX,YAAa,KACb,WAAY,KACZ,YAAa,KACb,WAAY,KACZ,YAAa,KACb,OAAQ,KACR,iBAAkB,KAClB,UAAW,KACX,QAAS,KACT,QAAS,KACT,QAAS,KACT,WAAY,KACZ,aAAc,KACd,QAAS,KACT,UAAW,KACX,UAAW,KACX,WAAY,KACZ,QAAS,KACT,iBAAkB,KAClB,OAAQ,KACR,aAAc,KACd,iBAAkB,KAClB,UAAW,KACX,YAAa,KACb,UAAW,KACX,eAAgB,KAChB,YAAa,KACb,aAAc,KACd,aAAc,KACd,YAAa,KACb,WAAY,KACZ,YAAa,KACb,UAAW,KACX,UAAW,KACX,SAAU,KACV,WAAY,KACZ,WAAY,KACZ,QAAS,KACT,QAAS,KACT,OAAQ,KACR,UAAW,KACX,WAAY,KACZ,WAAY,KACZ,aAAc,KACd,mBAAoB,KACpB,QAAS,KACT,SAAU,KACV,SAAU,KACV,YAAa,KACb,0BAA2B,KAC3B,SAAU,KACV,UAAW,KACX,SAAU,KACV,aAAc,KACd,UAAW,KACX,UAAW,KACX,SAAU,KACV,UAAW,KACX,aAAc,KACd,SAAU,KACV,qBAAsB,KACtB,SAAU,KACV,eAAgB,KAChB,UAAW,KACX,QAAS,KACT,KAAMA,GACN,QAASK,GACT,QAAS,KACT,KAAMq7J,GACN,YAAa,KACb,YAAa17J,GACb,QAAS,KACT,cAAe,KACf,oBAAqB,KACrB,OAAQ,KACR,QAAS,KACT,SAAUA,GACV,eAAgB,KAChB,IAAK07J,GACL,SAAU17J,GACV,SAAUA,GACV,KAAMK,GACN,QAASA,GACT,QAASq7J,GACT,MAAO,KACP,OAAQ17J,GACR,SAAUA,GACV,SAAUA,GACV,mBAAoBA,GACpB,yBAA0BA,GAC1B,eAAgB,KAChB,MAAO,KACP,KAAMK,GACN,MAAO,KACP,KAAM,KACN,KAAMA,GACN,WAAYm7J,GACZ,IAAK,KACL,OAAQ,KACR,QAAS,KACT,OAAQ,KACR,MAAOn7J,GACP,KAAM,KACN,MAAO,KACP,SAAUA,GACV,OAAQ,KACR,MAAO,KACP,UAAW,KACX,KAAM,KACN,cAAeL,GACf,OAAQ,KACR,MAAOw7J,GACP,MAAOn7J,GACP,KAAM,KACN,mBAAoB,KAIpB,MAAO,KACP,MAAO,KACP,QAASq7J,GACT,KAAM,KACN,WAAY,KACZ,QAAS,KACT,OAAQr7J,GACR,YAAa,KACb,aAAcA,GACd,YAAa,KACb,YAAa,KACb,KAAM,KACN,QAAS,KACT,QAAS,KACT,MAAO,KACP,KAAM,KACN,SAAU,KACV,SAAU,KACV,MAAO,KACP,QAASL,GACT,QAASA,GACT,MAAO,KACP,KAAM,KACN,MAAO,KACP,YAAa,KACb,OAAQK,GACR,WAAYA,GACZ,KAAM,KACN,SAAU,KACV,OAAQ,KACR,aAAcA,GACd,YAAaA,GACb,SAAUL,GACV,OAAQA,GACR,QAASA,GACT,OAAQA,GACR,OAAQ,KACR,QAAS,KACT,OAAQ,KACR,IAAK,KACL,YAAaK,GACb,MAAO,KACP,OAAQ,KACR,UAAWm7J,GACX,QAAS,KACT,QAAS,KACT,KAAM,KACN,UAAWn7J,GACX,UAAW,KACX,QAAS,KACT,OAAQ,KACR,MAAO,KACP,OAAQA,GAGR,kBAAmB,KACnB,YAAa,KACb,SAAU,KACV,wBAAyBL,GACzB,sBAAuBA,GACvB,OAAQ,KACR,SAAU,KACV,QAASK,GACT,SAAU,KACV,aAAc,IAClB,EACE,MAAO,OACP,UAAW+7J,EACb,CAAC,ECvTY1sO,GAAM/B,GAAO,CACxB,WAAY,CACV,aAAc,gBACd,kBAAmB,qBACnB,WAAY,cACZ,cAAe,iBACf,UAAW,aACX,UAAW,QACX,SAAU,YACV,SAAU,YACV,mBAAoB,sBACpB,0BAA2B,8BAC3B,aAAc,gBACd,eAAgB,kBAChB,YAAa,cACb,SAAU,WACV,iBAAkB,oBAClB,iBAAkB,oBAClB,YAAa,eACb,SAAU,YACV,WAAY,cACZ,aAAc,gBACd,WAAY,cACZ,SAAU,YACV,eAAgB,mBAChB,YAAa,eACb,UAAW,aACX,YAAa,eACb,WAAY,cACZ,UAAW,aACX,2BAA4B,+BAC5B,yBAA0B,6BAC1B,SAAU,WACV,UAAW,cACX,aAAc,iBACd,aAAc,iBACd,eAAgB,kBAChB,cAAe,iBACf,cAAe,iBACf,UAAW,aACX,UAAW,aACX,YAAa,eACb,QAAS,WACT,YAAa,gBACb,aAAc,iBACd,QAAS,WACT,QAAS,WACT,QAAS,WACT,SAAU,YACV,MAAO,SACP,UAAW,cACX,WAAY,eACZ,QAAS,UACT,WAAY,aACZ,aAAc,eACd,cAAe,gBACf,QAAS,UACT,SAAU,WACV,UAAW,YACX,iBAAkB,mBAClB,SAAU,WACV,QAAS,UACT,QAAS,UACT,OAAQ,SACR,YAAa,cACb,MAAO,QACP,WAAY,aACZ,OAAQ,SACR,UAAW,YACX,YAAa,cACb,WAAY,aACZ,YAAa,cACb,WAAY,aACZ,YAAa,cACb,OAAQ,SACR,iBAAkB,mBAClB,UAAW,YACX,MAAO,QACP,QAAS,UACT,QAAS,UACT,QAAS,UACT,UAAW,YACX,WAAY,aACZ,aAAc,eACd,QAAS,UACT,UAAW,YACX,UAAW,YACX,WAAY,aACZ,QAAS,UACT,OAAQ,SACR,aAAc,eACd,iBAAkB,mBAClB,YAAa,cACb,UAAW,YACX,YAAa,cACb,aAAc,eACd,aAAc,eACd,YAAa,cACb,WAAY,aACZ,YAAa,cACb,UAAW,YACX,aAAc,eACd,UAAW,YACX,SAAU,WACV,WAAY,aACZ,WAAY,aACZ,QAAS,UACT,QAAS,UACT,OAAQ,SACR,UAAW,YACX,WAAY,aACZ,WAAY,aACZ,aAAc,eACd,SAAU,WACV,QAAS,UACT,SAAU,WACV,SAAU,WACV,SAAU,WACV,UAAW,YACX,SAAU,WACV,OAAQ,SACR,UAAW,YACX,UAAW,YACX,SAAU,WACV,UAAW,YACX,aAAc,eACd,SAAU,WACV,SAAU,WACV,eAAgB,iBAChB,UAAW,YACX,OAAQ,SACR,iBAAkB,oBAClB,kBAAmB,qBACnB,WAAY,cACZ,QAAS,WACT,cAAe,iBACf,eAAgB,iBAChB,gBAAiB,mBACjB,eAAgB,kBAChB,UAAW,aACX,YAAa,eACb,sBAAuB,yBACvB,uBAAwB,0BACxB,gBAAiB,mBACjB,iBAAkB,oBAClB,cAAe,iBACf,eAAgB,kBAChB,iBAAkB,oBAClB,cAAe,iBACf,YAAa,eACb,SAAU,WACV,WAAY,cACZ,eAAgB,kBAChB,cAAe,iBACf,gBAAiB,mBACjB,OAAQ,SACR,kBAAmB,qBACnB,mBAAoB,sBACpB,YAAa,eACb,aAAc,gBACd,WAAY,eACZ,YAAa,eACb,SAAU,YACV,aAAc,gBACd,cAAe,iBACf,aAAc,gBACd,SAAU,aACV,YAAa,gBACb,YAAa,gBACb,YAAa,eACb,YAAa,eACb,QAAS,WAET,cAAe,gBACf,cAAe,eACnB,EACE,WAAY,CACV,MAAOiuO,GACP,aAAcv7J,GACd,WAAY,KACZ,SAAU,KACV,kBAAmB,KACnB,WAAYA,GACZ,UAAWA,GACX,WAAY,KACZ,OAAQA,GACR,cAAe,KACf,cAAe,KACf,QAASA,GACT,UAAW,KACX,cAAe,KACf,cAAe,KACf,YAAa,KACb,KAAM,KACN,MAAO,KACP,KAAMA,GACN,GAAI,KACJ,SAAU,KACV,UAAWA,GACX,UAAWq7J,GACX,KAAM,KACN,SAAU,KACV,cAAe,KACf,SAAU,KACV,MAAO,KACP,mBAAoB,KACpB,0BAA2B,KAC3B,aAAc,KACd,eAAgB,KAChB,QAAS,KACT,kBAAmB,KACnB,iBAAkB,KAClB,YAAa,KACb,OAAQ,KACR,GAAI,KACJ,GAAI,KACJ,EAAG,KACH,SAAU,KACV,cAAe,KACf,QAASr7J,GACT,gBAAiBA,GACjB,UAAW,KACX,QAAS,KACT,IAAK,KACL,QAASA,GACT,iBAAkB,KAClB,SAAUL,GACV,GAAI,KACJ,GAAI,KACJ,SAAU,KACV,SAAU,KACV,UAAWK,GACX,iBAAkB,KAClB,IAAK,KACL,MAAO,KACP,SAAUA,GACV,0BAA2B,KAC3B,KAAM,KACN,YAAaA,GACb,SAAU,KACV,OAAQ,KACR,UAAW,KACX,YAAa,KACb,WAAY,KACZ,aAAc,KACd,UAAW,KACX,eAAgB,KAChB,WAAY,KACZ,SAAU,KACV,eAAgB,KAChB,YAAa,KACb,UAAW,KACX,YAAa,KACb,WAAY,KACZ,OAAQ,KACR,GAAI,KACJ,KAAM,KACN,GAAI,KACJ,GAAI,KACJ,GAAIs7J,GACJ,GAAIA,GACJ,UAAWA,GACX,2BAA4B,KAC5B,yBAA0B,KAC1B,SAAU,KACV,kBAAmB,KACnB,cAAe,KACf,QAAS,KACT,QAASt7J,GACT,kBAAmB,KACnB,WAAY,KACZ,OAAQ,KACR,KAAM,KACN,SAAU,KACV,UAAWA,GACX,aAAcA,GACd,aAAcA,GACd,GAAI,KACJ,YAAaA,GACb,eAAgB,KAChB,kBAAmB,KACnB,GAAI,KACJ,IAAK,KACL,UAAWA,GACX,EAAGA,GACH,GAAIA,GACJ,GAAIA,GACJ,GAAIA,GACJ,GAAIA,GACJ,aAAcu7J,GACd,iBAAkB,KAClB,UAAW,KACX,WAAY,KACZ,SAAU,KACV,QAAS,KACT,KAAM,KACN,aAAc,KACd,cAAe,KACf,cAAe,KACf,kBAAmBv7J,GACnB,MAAO,KACP,UAAW,KACX,UAAW,KACX,YAAa,KACb,aAAc,KACd,YAAa,KACb,YAAa,KACb,KAAM,KACN,iBAAkB,KAClB,UAAW,KACX,aAAc,KACd,IAAK,KACL,MAAO,KACP,uBAAwB,KACxB,sBAAuB,KACvB,UAAWA,GACX,UAAW,KACX,OAAQ,KACR,IAAK,KACL,KAAM,KACN,KAAM,KACN,QAAS,KACT,YAAa,KACb,aAAc,KACd,QAAS,KACT,QAAS,KACT,QAAS,KACT,SAAU,KACV,MAAO,KACP,UAAW,KACX,WAAY,KACZ,WAAY,KACZ,SAAU,KACV,OAAQ,KACR,QAAS,KACT,WAAY,KACZ,aAAc,KACd,cAAe,KACf,QAAS,KACT,SAAU,KACV,UAAW,KACX,iBAAkB,KAClB,SAAU,KACV,QAAS,KACT,QAAS,KACT,OAAQ,KACR,YAAa,KACb,MAAO,KACP,WAAY,KACZ,OAAQ,KACR,UAAW,KACX,YAAa,KACb,WAAY,KACZ,YAAa,KACb,WAAY,KACZ,YAAa,KACb,OAAQ,KACR,iBAAkB,KAClB,UAAW,KACX,MAAO,KACP,QAAS,KACT,QAAS,KACT,QAAS,KACT,UAAW,KACX,WAAY,KACZ,aAAc,KACd,QAAS,KACT,UAAW,KACX,UAAW,KACX,WAAY,KACZ,QAAS,KACT,OAAQ,KACR,aAAc,KACd,iBAAkB,KAClB,YAAa,KACb,UAAW,KACX,YAAa,KACb,aAAc,KACd,aAAc,KACd,YAAa,KACb,WAAY,KACZ,YAAa,KACb,UAAW,KACX,aAAc,KACd,UAAW,KACX,SAAU,KACV,WAAY,KACZ,WAAY,KACZ,QAAS,KACT,QAAS,KACT,OAAQ,KACR,UAAW,KACX,WAAY,KACZ,WAAY,KACZ,aAAc,KACd,SAAU,KACV,QAAS,KACT,SAAU,KACV,SAAU,KACV,SAAU,KACV,UAAW,KACX,SAAU,KACV,OAAQ,KACR,UAAW,KACX,UAAW,KACX,SAAU,KACV,UAAW,KACX,aAAc,KACd,SAAU,KACV,SAAU,KACV,eAAgB,KAChB,UAAW,KACX,OAAQ,KACR,QAAS,KACT,SAAU,KACV,MAAO,KACP,OAAQ,KACR,YAAa,KACb,OAAQ,KACR,SAAU,KACV,QAAS,KACT,iBAAkBA,GAClB,kBAAmBA,GACnB,WAAY,KACZ,QAAS,KACT,KAAM,KACN,WAAYA,GACZ,oBAAqB,KACrB,iBAAkB,KAClB,aAAc,KACd,MAAO,KACP,KAAMq7J,GACN,MAAO,KACP,cAAe,KACf,cAAe,KACf,OAAQ,KACR,UAAWr7J,GACX,UAAWA,GACX,UAAWA,GACX,cAAe,KACf,oBAAqB,KACrB,eAAgB,KAChB,UAAW,KACX,SAAUu7J,GACV,EAAG,KACH,OAAQ,KACR,eAAgB,KAChB,KAAM,KACN,KAAM,KACN,IAAKA,GACL,IAAKA,GACL,gBAAiB,KACjB,YAAa,KACb,UAAW,KACX,mBAAoBA,GACpB,iBAAkBA,GAClB,cAAeA,GACf,gBAAiBA,GACjB,SAAU,KACV,QAAS,KACT,OAAQ,KACR,OAAQ,KACR,GAAI,KACJ,GAAI,KACJ,MAAO,KACP,KAAM,KACN,eAAgB,KAChB,KAAM,KACN,MAAO,KACP,aAAc,KACd,iBAAkBv7J,GAClB,iBAAkBA,GAClB,aAAc,KACd,QAAS,KACT,YAAa,KACb,aAAc,KACd,MAAO,KACP,MAAO,KACP,YAAa,KACb,UAAW,KACX,YAAa,KACb,sBAAuBA,GACvB,uBAAwBA,GACxB,OAAQ,KACR,OAAQ,KACR,gBAAiBu7J,GACjB,iBAAkB,KAClB,cAAe,KACf,eAAgB,KAChB,iBAAkBv7J,GAClB,cAAeA,GACf,YAAa,KACb,MAAO,KACP,aAAcA,GACd,aAAc,KACd,oBAAqB,KACrB,WAAY,KACZ,cAAe,KACf,qBAAsB,KACtB,eAAgBu7J,GAChB,SAAUv7J,GACV,YAAa,KACb,OAAQ,KACR,QAASA,GACT,QAASA,GACT,WAAY,KACZ,eAAgB,KAChB,cAAe,KACf,WAAY,KACZ,cAAe,KACf,MAAO,KACP,kBAAmB,KACnB,KAAM,KACN,OAAQu7J,GACR,GAAI,KACJ,UAAW,KACX,gBAAiB,KACjB,GAAI,KACJ,GAAI,KACJ,kBAAmBv7J,GACnB,mBAAoBA,GACpB,QAAS,KACT,YAAa,KACb,aAAc,KACd,WAAYA,GACZ,OAAQ,KACR,YAAaA,GACb,cAAeA,GACf,aAAc,KACd,SAAUA,GACV,aAAcA,GACd,QAAS,KACT,SAAUA,GACV,YAAaA,GACb,YAAaA,GACb,QAAS,KACT,WAAY,KACZ,WAAY,KACZ,MAAO,KACP,OAAQ,KACR,YAAa,KACb,YAAa,KACb,EAAG,KACH,GAAI,KACJ,GAAI,KACJ,iBAAkB,KAClB,QAASA,GACT,EAAG,KACH,GAAI,KACJ,GAAI,KACJ,iBAAkB,KAClB,EAAG,KACH,WAAY,IAChB,EACE,MAAO,MACP,UAAW87J,EACb,CAAC,ECpjBYE,GAAQ1uO,GAAO,CAC1B,WAAY,CACV,aAAc,KACd,aAAc,KACd,UAAW,KACX,UAAW,KACX,UAAW,KACX,WAAY,KACZ,UAAW,IACf,EACE,MAAO,QACP,UAAUs0B,EAAG3M,EAAU,CACrB,MAAO,SAAWA,EAAS,MAAM,CAAC,EAAE,YAAW,CACjD,CACF,CAAC,ECbYgnN,GAAQ3uO,GAAO,CAC1B,WAAY,CAAC,WAAY,aAAa,EACtC,WAAY,CAAC,WAAY,KAAM,MAAO,IAAI,EAC1C,MAAO,QACP,UAAWyuO,EACb,CAAC,ECNYG,GAAM5uO,GAAO,CACxB,WAAY,CAAC,QAAS,KAAM,QAAS,KAAM,SAAU,IAAI,EACzD,MAAO,MACP,UAAUs0B,EAAG3M,EAAU,CACrB,MAAO,OAASA,EAAS,MAAM,CAAC,EAAE,YAAW,CAC/C,CACF,CAAC,ECGYknN,GAAc,CACzB,QAAS,UACT,SAAU,WACV,OAAQ,SACR,gBAAiB,kBACjB,iBAAkB,mBAClB,cAAe,gBACf,eAAgB,iBAChB,iBAAkB,mBAClB,OAAQ,SACR,aAAc,eACd,aAAc,eACd,UAAW,YACX,UAAW,YACX,UAAW,YACX,WAAY,aACZ,UAAW,YACX,WAAY,YACd,ECrBMC,GAAM,SACNC,GAAO,UACPxoO,GAAQ,kBAgCP,SAASyoO,GAAKp7J,EAAQnvF,EAAO,CAClC,MAAM6oP,EAASvxJ,GAAUt3F,CAAK,EAC9B,IAAIkjC,EAAWljC,EACXwqP,EAAOvB,GAEX,GAAIJ,KAAU15J,EAAO,OACnB,OAAOA,EAAO,SAASA,EAAO,OAAO05J,CAAM,CAAC,EAG9C,GAAIA,EAAO,OAAS,GAAKA,EAAO,MAAM,EAAG,CAAC,IAAM,QAAU/mO,GAAM,KAAK9hB,CAAK,EAAG,CAE3E,GAAIA,EAAM,OAAO,CAAC,IAAM,IAAK,CAE3B,MAAM+M,EAAO/M,EAAM,MAAM,CAAC,EAAE,QAAQsqP,GAAMG,EAAS,EACnDvnN,EAAW,OAASn2B,EAAK,OAAO,CAAC,EAAE,YAAW,EAAKA,EAAK,MAAM,CAAC,CACjE,KAAO,CAEL,MAAMA,EAAO/M,EAAM,MAAM,CAAC,EAE1B,GAAI,CAACsqP,GAAK,KAAKv9O,CAAI,EAAG,CACpB,IAAI29O,EAAS39O,EAAK,QAAQs9O,GAAKM,EAAK,EAEhCD,EAAO,OAAO,CAAC,IAAM,MACvBA,EAAS,IAAMA,GAGjB1qP,EAAQ,OAAS0qP,CACnB,CACF,CAEAF,EAAOb,EACT,CAEA,OAAO,IAAIa,EAAKtnN,EAAUljC,CAAK,CACjC,CAQA,SAAS2qP,GAAMC,EAAI,CACjB,MAAO,IAAMA,EAAG,YAAW,CAC7B,CAQA,SAASH,GAAUG,EAAI,CACrB,OAAOA,EAAG,OAAO,CAAC,EAAE,YAAW,CACjC,CCrFO,MAAM7e,GAAO//L,GAAM,CAAC89M,GAAMe,GAAUZ,GAAOC,GAAOC,EAAG,EAAG,MAAM,EAKxD7sO,GAAM0uB,GAAM,CAAC89M,GAAMgB,GAASb,GAAOC,GAAOC,EAAG,EAAG,KAAK,ECR3D,SAASznN,GAAM1iC,EAAO,CAC3B,MAAMmW,EAAQ,OAAOnW,GAAS,EAAE,EAAE,KAAI,EACtC,OAAOmW,EAAQA,EAAM,MAAM,eAAe,EAAI,CAAA,CAChD,CAUO,SAAS4tB,GAAU01D,EAAQ,CAChC,OAAOA,EAAO,KAAK,GAAG,EAAE,KAAI,CAC9B,WCrBIsxJ,GAAgB,kCAEhBC,GAAgB,MAChBC,GAAmB,OAGnBC,GAAiB,yCACjBC,GAAc,QACdC,GAAc,uDACdC,GAAkB,UAGlBC,GAAa,aAGbC,GAAU;AAAA,EACVC,GAAgB,IAChBC,GAAW,IACXC,GAAe,GAGfC,GAAe,UACfC,GAAmB,cASvBC,GAAiB,SAAU/0N,EAAOr0B,EAAS,CACzC,GAAI,OAAOq0B,GAAU,SACnB,MAAM,IAAI,UAAU,iCAAiC,EAGvD,GAAI,CAACA,EAAO,MAAO,CAAA,EAEnBr0B,EAAUA,GAAW,CAAA,EAKrB,IAAIqpP,EAAS,EACTtqN,EAAS,EAOb,SAASuqN,EAAexrP,EAAK,CAC3B,IAAIyrP,EAAQzrP,EAAI,MAAMyqP,EAAa,EAC/BgB,IAAOF,GAAUE,EAAM,QAC3B,IAAIpqP,EAAIrB,EAAI,YAAYgrP,EAAO,EAC/B/pN,EAAS,CAAC5/B,EAAIrB,EAAI,OAASqB,EAAI4/B,EAASjhC,EAAI,MAChD,CAOE,SAASud,GAAW,CAClB,IAAIgvH,EAAQ,CAAE,KAAMg/G,EAAQ,OAAQtqN,CAAM,EAC1C,OAAO,SAAU3e,EAAM,CACrB,OAAAA,EAAK,SAAW,IAAIopO,EAASn/G,CAAK,EAClCzqG,EAAU,EACHxf,CACb,CACA,CAUE,SAASopO,EAASn/G,EAAO,CACvB,KAAK,MAAQA,EACb,KAAK,IAAM,CAAE,KAAMg/G,EAAQ,OAAQtqN,CAAM,EACzC,KAAK,OAAS/+B,EAAQ,MAC1B,CAKEwpP,EAAS,UAAU,QAAUn1N,EAU7B,SAAS7oB,EAAMuE,EAAK,CAClB,IAAI1D,EAAM,IAAI,MACZrM,EAAQ,OAAS,IAAMqpP,EAAS,IAAMtqN,EAAS,KAAOhvB,CAC5D,EAOI,GANA1D,EAAI,OAAS0D,EACb1D,EAAI,SAAWrM,EAAQ,OACvBqM,EAAI,KAAOg9O,EACXh9O,EAAI,OAAS0yB,EACb1yB,EAAI,OAASgoB,EAET,CAAAr0B,EAAQ,OAGV,MAAMqM,CAEZ,CAQE,SAASvD,EAAMymO,EAAI,CACjB,IAAItzO,EAAIszO,EAAG,KAAKl7M,CAAK,EACrB,GAAKp4B,EACL,KAAI6B,EAAM7B,EAAE,CAAC,EACb,OAAAqtP,EAAexrP,CAAG,EAClBu2B,EAAQA,EAAM,MAAMv2B,EAAI,MAAM,EACvB7B,EACX,CAKE,SAAS2jC,GAAa,CACpB92B,EAAM0/O,EAAgB,CAC1B,CAQE,SAASiB,EAASvpN,EAAO,CACvB,IAAIthC,EAEJ,IADAshC,EAAQA,GAAS,CAAA,EACTthC,EAAImiC,KACNniC,IAAM,IACRshC,EAAM,KAAKthC,CAAC,EAGhB,OAAOshC,CACX,CAQE,SAASa,GAAU,CACjB,IAAIjsB,EAAMuG,EAAQ,EAClB,GAAI,EAAA0tO,IAAiB10N,EAAM,OAAO,CAAC,GAAK20N,IAAY30N,EAAM,OAAO,CAAC,GAGlE,SADIl1B,EAAI,EAEN8pP,IAAgB50N,EAAM,OAAOl1B,CAAC,IAC7B6pP,IAAY30N,EAAM,OAAOl1B,CAAC,GAAK4pP,IAAiB10N,EAAM,OAAOl1B,EAAI,CAAC,IAEnE,EAAEA,EAIJ,GAFAA,GAAK,EAED8pP,KAAiB50N,EAAM,OAAOl1B,EAAI,CAAC,EACrC,OAAOqM,EAAM,wBAAwB,EAGvC,IAAI1N,EAAMu2B,EAAM,MAAM,EAAGl1B,EAAI,CAAC,EAC9B,OAAA4/B,GAAU,EACVuqN,EAAexrP,CAAG,EAClBu2B,EAAQA,EAAM,MAAMl1B,CAAC,EACrB4/B,GAAU,EAEHjqB,EAAI,CACT,KAAMo0O,GACN,QAASprP,CACf,CAAK,EACL,CAQE,SAASkjC,GAAc,CACrB,IAAIlsB,EAAMuG,EAAQ,EAGdzd,EAAOkL,EAAM2/O,EAAc,EAC/B,GAAK7qP,EAIL,IAHAmjC,EAAO,EAGH,CAACj4B,EAAM4/O,EAAW,EAAG,OAAOl9O,EAAM,sBAAsB,EAG5D,IAAI7D,EAAMmB,EAAM6/O,EAAW,EAEvBt7O,EAAMyH,EAAI,CACZ,KAAMq0O,GACN,SAAU/qN,GAAKxgC,EAAK,CAAC,EAAE,QAAQ0qP,GAAeW,EAAY,CAAC,EAC3D,MAAOthP,EACHy2B,GAAKz2B,EAAI,CAAC,EAAE,QAAQ2gP,GAAeW,EAAY,CAAC,EAChDA,EACV,CAAK,EAGD,OAAAngP,EAAM8/O,EAAe,EAEdv7O,EACX,CAOE,SAASizB,GAAe,CACtB,IAAIopN,EAAQ,CAAA,EAEZD,EAASC,CAAK,EAId,QADIC,EACIA,EAAO3oN,KACT2oN,IAAS,KACXD,EAAM,KAAKC,CAAI,EACfF,EAASC,CAAK,GAIlB,OAAOA,CACX,CAEE,OAAA9pN,EAAU,EACHU,EAAY,CACrB,EAQA,SAASlC,GAAKtgC,EAAK,CACjB,OAAOA,EAAMA,EAAI,QAAQ+qP,GAAYI,EAAY,EAAIA,EACvD,CCnQA,IAAIW,GAAmBnhC,IAAQA,GAAK,iBAAoB,SAAUmvB,EAAK,CACnE,OAAQA,GAAOA,EAAI,WAAcA,EAAM,CAAE,QAAWA,CAAG,CAC3D,EACA,OAAO,eAAeiS,GAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5DA,GAAA,QAAkBC,GAClB,IAAIC,GAAwBH,GAAgBzlO,EAA8B,EAe1E,SAAS2lO,GAAcz1N,EAAO21N,EAAU,CACpC,IAAIC,EAAc,KAClB,GAAI,CAAC51N,GAAS,OAAOA,GAAU,SAC3B,OAAO41N,EAEX,IAAI3pN,KAAmBypN,GAAsB,SAAS11N,CAAK,EACvD61N,EAAc,OAAOF,GAAa,WACtC,OAAA1pN,EAAa,QAAQ,SAAUU,EAAa,CACxC,GAAIA,EAAY,OAAS,cAGzB,KAAIP,EAAWO,EAAY,SAAUzjC,EAAQyjC,EAAY,MACrDkpN,EACAF,EAASvpN,EAAUljC,EAAOyjC,CAAW,EAEhCzjC,IACL0sP,EAAcA,GAAe,CAAA,EAC7BA,EAAYxpN,CAAQ,EAAIljC,GAEpC,CAAK,EACM0sP,CACX,WCzCA,OAAO,eAAeE,GAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5DA,GAAA,UAAoB,OACpB,IAAIC,GAAwB,qBACxBC,GAAe,YACfC,GAAkB,UAClBC,GAAsB,6BACtBC,GAAyB,UAIzBC,GAAgB,SAAUhqN,EAAU,CACpC,MAAO,CAACA,GACJ6pN,GAAgB,KAAK7pN,CAAQ,GAC7B2pN,GAAsB,KAAK3pN,CAAQ,CAC3C,EAIIiqN,GAAa,SAAU5hP,EAAOm2B,EAAW,CACzC,OAAOA,EAAU,YAAW,CAChC,EAII0rN,GAAa,SAAU7hP,EAAO5I,EAAQ,CAAE,MAAO,GAAG,OAAOA,EAAQ,GAAG,GAIpEy2D,GAAY,SAAUl2B,EAAUzgC,EAAS,CAEzC,OADIA,IAAY,SAAUA,EAAU,CAAA,GAChCyqP,GAAchqN,CAAQ,EACfA,GAEXA,EAAWA,EAAS,YAAW,EAC3BzgC,EAAQ,YAERygC,EAAWA,EAAS,QAAQ+pN,GAAwBG,EAAU,EAI9DlqN,EAAWA,EAAS,QAAQ8pN,GAAqBI,EAAU,EAExDlqN,EAAS,QAAQ4pN,GAAcK,EAAU,EACpD,EACAP,GAAA,UAAoBxzL,GC5CpB,IAAIizL,GAAmBnhC,IAAQA,GAAK,iBAAoB,SAAUmvB,EAAK,CACnE,OAAQA,GAAOA,EAAI,WAAcA,EAAM,CAAE,QAAWA,CAAG,CAC3D,EACIgT,GAAoBhB,GAAgBzlO,EAA0B,EAC9D0mO,GAAczmO,GAIlB,SAAS0mO,GAAUz2N,EAAOr0B,EAAS,CAC/B,IAAIqhC,EAAS,CAAA,EACb,MAAI,CAAChN,GAAS,OAAOA,GAAU,aAG3Bu2N,GAAkB,SAASv2N,EAAO,SAAUoM,EAAUljC,EAAO,CAEzDkjC,GAAYljC,IACZ8jC,KAAWwpN,GAAY,WAAWpqN,EAAUzgC,CAAO,CAAC,EAAIzC,EAEpE,CAAK,EACM8jC,CACX,CACAypN,GAAU,QAAUA,OACpBjB,GAAiBiB,mBCMJC,GAAW/mI,GAAM,KAAK,EAUtBgnI,GAAahnI,GAAM,OAAO,EAUvC,SAASA,GAAMrkH,EAAM,CACnB,OAAOqkH,EAQP,SAASA,EAAM5jG,EAAM,CACnB,MAAM4jG,EAAS5jG,GAAQA,EAAK,UAAYA,EAAK,SAASzgB,CAAI,GAAM,CAAA,EAEhE,GACE,OAAOqkH,EAAM,MAAS,UACtBA,EAAM,KAAO,GACb,OAAOA,EAAM,QAAW,UACxBA,EAAM,OAAS,EAEf,MAAO,CACL,KAAMA,EAAM,KACZ,OAAQA,EAAM,OACd,OACE,OAAOA,EAAM,QAAW,UAAYA,EAAM,OAAS,GAC/CA,EAAM,OACN,MACd,CAEE,CACF,CAUO,SAAS3oG,GAAS+E,EAAM,CAC7B,MAAMiqH,EAAQ2gH,GAAW5qO,CAAI,EACvBse,EAAMqsN,GAAS3qO,CAAI,EAEzB,GAAIiqH,GAAS3rG,EACX,MAAO,CAAC,MAAA2rG,EAAO,IAAA3rG,CAAG,CAEtB,CC1DO,SAASusN,GAAkB1tP,EAAO,CAEvC,MAAI,CAACA,GAAS,OAAOA,GAAU,SACtB,GAIL,aAAcA,GAAS,SAAUA,EAC5B8d,GAAS9d,EAAM,QAAQ,EAI5B,UAAWA,GAAS,QAASA,EACxB8d,GAAS9d,CAAK,EAInB,SAAUA,GAAS,WAAYA,EAC1BymH,GAAMzmH,CAAK,EAIb,EACT,CAMA,SAASymH,GAAMA,EAAO,CACpB,OAAOjjH,GAAMijH,GAASA,EAAM,IAAI,EAAI,IAAMjjH,GAAMijH,GAASA,EAAM,MAAM,CACvE,CAMA,SAAS3oG,GAASvG,EAAK,CACrB,OAAOkvG,GAAMlvG,GAAOA,EAAI,KAAK,EAAI,IAAMkvG,GAAMlvG,GAAOA,EAAI,GAAG,CAC7D,CAMA,SAAS/T,GAAMxD,EAAO,CACpB,OAAOA,GAAS,OAAOA,GAAU,SAAWA,EAAQ,CACtD,CCvDO,MAAM2tP,WAAqB,KAAM,CAwDtC,YAAYC,EAAeC,EAAwBhtK,EAAQ,CACzD,MAAK,EAED,OAAOgtK,GAA2B,WACpChtK,EAASgtK,EACTA,EAAyB,QAI3B,IAAInR,EAAS,GAETj6O,EAAU,CAAA,EACVqrP,EAAc,GAwClB,GAtCID,IAGA,SAAUA,GACV,WAAYA,EAEZprP,EAAU,CAAC,MAAOorP,CAAsB,EAIxC,UAAWA,GACX,QAASA,EAETprP,EAAU,CAAC,MAAOorP,CAAsB,EAGjC,SAAUA,EACjBprP,EAAU,CACR,UAAW,CAACorP,CAAsB,EAClC,MAAOA,EAAuB,QACxC,EAIQprP,EAAU,CAAC,GAAGorP,CAAsB,GAIpC,OAAOD,GAAkB,SAC3BlR,EAASkR,EAGF,CAACnrP,EAAQ,OAASmrP,IACzBE,EAAc,GACdpR,EAASkR,EAAc,QACvBnrP,EAAQ,MAAQmrP,GAGd,CAACnrP,EAAQ,QAAU,CAACA,EAAQ,QAAU,OAAOo+E,GAAW,SAAU,CACpE,MAAMr9E,EAAQq9E,EAAO,QAAQ,GAAG,EAE5Br9E,IAAU,GACZf,EAAQ,OAASo+E,GAEjBp+E,EAAQ,OAASo+E,EAAO,MAAM,EAAGr9E,CAAK,EACtCf,EAAQ,OAASo+E,EAAO,MAAMr9E,EAAQ,CAAC,EAE3C,CAEA,GAAI,CAACf,EAAQ,OAASA,EAAQ,WAAaA,EAAQ,UAAW,CAC5D,MAAMm/B,EAASn/B,EAAQ,UAAUA,EAAQ,UAAU,OAAS,CAAC,EAEzDm/B,IACFn/B,EAAQ,MAAQm/B,EAAO,SAE3B,CAEA,MAAMkrG,EACJrqI,EAAQ,OAAS,UAAWA,EAAQ,MAChCA,EAAQ,MAAM,MACdA,EAAQ,MAQd,KAAK,UAAYA,EAAQ,WAAa,OAOtC,KAAK,MAAQA,EAAQ,OAAS,OAO9B,KAAK,OAASqqI,EAAQA,EAAM,OAAS,OAWrC,KAAK,MAAQ,OAOb,KAAK,KAQL,KAAK,QAAU4vG,EAOf,KAAK,KAAO5vG,EAAQA,EAAM,KAAO,OASjC,KAAK,KAAO4gH,GAAkBjrP,EAAQ,KAAK,GAAK,MAOhD,KAAK,MAAQA,EAAQ,OAAS,OAO9B,KAAK,OAAS,KAAK,QAOnB,KAAK,OAASA,EAAQ,QAAU,OAOhC,KAAK,OAASA,EAAQ,QAAU,OAWhC,KAAK,MACHqrP,GAAerrP,EAAQ,OAAS,OAAOA,EAAQ,MAAM,OAAU,SAC3DA,EAAQ,MAAM,MACd,GAYN,KAAK,OAOL,KAAK,SAOL,KAAK,KAUL,KAAK,GAEP,CACF,CAEAkrP,GAAa,UAAU,KAAO,GAC9BA,GAAa,UAAU,KAAO,GAC9BA,GAAa,UAAU,OAAS,GAChCA,GAAa,UAAU,QAAU,GACjCA,GAAa,UAAU,MAAQ,GAC/BA,GAAa,UAAU,OAAS,OAChCA,GAAa,UAAU,KAAO,OAC9BA,GAAa,UAAU,UAAY,OACnCA,GAAa,UAAU,MAAQ,OAC/BA,GAAa,UAAU,MAAQ,OAC/BA,GAAa,UAAU,MAAQ,OAC/BA,GAAa,UAAU,OAAS,OAChCA,GAAa,UAAU,OAAS,OCvShC,MAAMI,GAAM,CAAA,EAAG,eAGTC,GAAW,IAAI,IAEf3D,GAAM,SAaNjiB,GAAgB,IAAI,IAAI,CAAC,QAAS,QAAS,QAAS,QAAS,IAAI,CAAC,EAElE6lB,GAAmB,IAAI,IAAI,CAAC,KAAM,IAAI,CAAC,EAEvCC,GAAO,0DAcN,SAASC,GAAap3L,EAAMt0D,EAAS,CAC1C,GAAI,CAACA,GAAWA,EAAQ,WAAa,OACnC,MAAM,IAAI,UAAU,gCAAgC,EAGtD,MAAM2rP,EAAW3rP,EAAQ,UAAY,OAErC,IAAI8Y,EAEJ,GAAI9Y,EAAQ,YAAa,CACvB,GAAI,OAAOA,EAAQ,QAAW,WAC5B,MAAM,IAAI,UACR,uDACR,EAGI8Y,EAAS8yO,GAAkBD,EAAU3rP,EAAQ,MAAM,CACrD,KAAO,CACL,GAAI,OAAOA,EAAQ,KAAQ,WACzB,MAAM,IAAI,UAAU,sCAAsC,EAG5D,GAAI,OAAOA,EAAQ,MAAS,WAC1B,MAAM,IAAI,UAAU,uCAAuC,EAG7D8Y,EAAS+yO,GAAiBF,EAAU3rP,EAAQ,IAAKA,EAAQ,IAAI,CAC/D,CAGA,MAAM4X,EAAQ,CACZ,SAAU5X,EAAQ,SAClB,UAAW,CAAA,EACX,WAAYA,EAAQ,YAAc,CAAA,EAClC,OAAA8Y,EACA,yBAA0B9Y,EAAQ,0BAA4B,QAC9D,UAAWA,EAAQ,gBAAkBA,EAAQ,gBAAe,EAAK,OACjE,SAAA2rP,EACA,mBAAoB3rP,EAAQ,oBAAsB,GAClD,SAAUA,EAAQ,WAAa,GAC/B,SAAUA,EAAQ,UAAY,GAC9B,OAAQA,EAAQ,QAAU,MAAQ6a,GAAMyuN,GACxC,sBAAuBtpO,EAAQ,uBAAyB,MACxD,sBAAuBA,EAAQ,wBAA0B,EAC7D,EAEQkB,EAAS4qP,GAAIl0O,EAAO08C,EAAM,MAAS,EAGzC,OAAIpzD,GAAU,OAAOA,GAAW,SACvBA,EAIF0W,EAAM,OACX08C,EACA18C,EAAM,SACN,CAAC,SAAU1W,GAAU,MAAS,EAC9B,MACJ,CACA,CAcA,SAAS4qP,GAAIl0O,EAAOwI,EAAMhkB,EAAK,CAC7B,GAAIgkB,EAAK,OAAS,UAChB,OAAOiG,GAAQzO,EAAOwI,EAAMhkB,CAAG,EAGjC,GAAIgkB,EAAK,OAAS,qBAAuBA,EAAK,OAAS,oBACrD,OAAO2rO,GAAcn0O,EAAOwI,CAAI,EAGlC,GAAIA,EAAK,OAAS,qBAAuBA,EAAK,OAAS,oBACrD,OAAO4rO,GAAcp0O,EAAOwI,EAAMhkB,CAAG,EAGvC,GAAIgkB,EAAK,OAAS,WAChB,OAAO6rO,GAAOr0O,EAAOwI,CAAI,EAG3B,GAAIA,EAAK,OAAS,OAChB,OAAOkQ,GAAK1Y,EAAOwI,EAAMhkB,CAAG,EAG9B,GAAIgkB,EAAK,OAAS,OAChB,OAAOtP,GAAK8G,EAAOwI,CAAI,CAE3B,CAcA,SAASiG,GAAQzO,EAAOwI,EAAMhkB,EAAK,CACjC,MAAM8vP,EAAet0O,EAAM,OAC3B,IAAI80E,EAASw/J,EAET9rO,EAAK,QAAQ,YAAW,IAAO,OAAS8rO,EAAa,QAAU,SACjEx/J,EAAS7xE,GACTjD,EAAM,OAAS80E,GAGjB90E,EAAM,UAAU,KAAKwI,CAAI,EAEzB,MAAMzgB,EAAOwsP,GAAsBv0O,EAAOwI,EAAK,QAAS,EAAK,EACvDpO,EAAQo6O,GAAmBx0O,EAAOwI,CAAI,EAC5C,IAAIrB,EAAWstO,GAAez0O,EAAOwI,CAAI,EAEzC,OAAIulN,GAAc,IAAIvlN,EAAK,OAAO,IAChCrB,EAAWA,EAAS,OAAO,SAAUC,EAAO,CAC1C,OAAO,OAAOA,GAAU,SAAW,CAAC4gB,GAAW5gB,CAAK,EAAI,EAC1D,CAAC,GAGHstO,GAAQ10O,EAAO5F,EAAOrS,EAAMygB,CAAI,EAChCmsO,GAAYv6O,EAAO+M,CAAQ,EAG3BnH,EAAM,UAAU,IAAG,EACnBA,EAAM,OAASs0O,EAERt0O,EAAM,OAAOwI,EAAMzgB,EAAMqS,EAAO5V,CAAG,CAC5C,CAYA,SAAS2vP,GAAcn0O,EAAOwI,EAAM,CAClC,GAAIA,EAAK,MAAQA,EAAK,KAAK,QAAUxI,EAAM,UAAW,CAEpD,MAAM40O,EADUpsO,EAAK,KAAK,OACC,KAAK,CAAC,EACjCqsO,OAAOD,EAAW,KAIhB50O,EAAM,UAAU,mBAAmB40O,EAAW,UAAU,CAE5D,CAEAE,GAAY90O,EAAOwI,EAAK,QAAQ,CAClC,CAYA,SAAS6rO,GAAOr0O,EAAOwI,EAAM,CAC3B,GAAIA,EAAK,MAAQA,EAAK,KAAK,QAAUxI,EAAM,UAEzC,OACEA,EAAM,UAAU,gBAAgBwI,EAAK,KAAK,MAAM,EAIpDssO,GAAY90O,EAAOwI,EAAK,QAAQ,CAClC,CAcA,SAAS4rO,GAAcp0O,EAAOwI,EAAMhkB,EAAK,CACvC,MAAM8vP,EAAet0O,EAAM,OAC3B,IAAI80E,EAASw/J,EAET9rO,EAAK,OAAS,OAAS8rO,EAAa,QAAU,SAChDx/J,EAAS7xE,GACTjD,EAAM,OAAS80E,GAGjB90E,EAAM,UAAU,KAAKwI,CAAI,EAEzB,MAAMzgB,EACJygB,EAAK,OAAS,KACVxI,EAAM,SACNu0O,GAAsBv0O,EAAOwI,EAAK,KAAM,EAAI,EAC5CpO,EAAQ26O,GAAsB/0O,EAAOwI,CAAI,EACzCrB,EAAWstO,GAAez0O,EAAOwI,CAAI,EAE3C,OAAAksO,GAAQ10O,EAAO5F,EAAOrS,EAAMygB,CAAI,EAChCmsO,GAAYv6O,EAAO+M,CAAQ,EAG3BnH,EAAM,UAAU,IAAG,EACnBA,EAAM,OAASs0O,EAERt0O,EAAM,OAAOwI,EAAMzgB,EAAMqS,EAAO5V,CAAG,CAC5C,CAcA,SAASk0B,GAAK1Y,EAAOwI,EAAMhkB,EAAK,CAE9B,MAAM4V,EAAQ,CAAA,EAEd,OAAAu6O,GAAYv6O,EAAOq6O,GAAez0O,EAAOwI,CAAI,CAAC,EAEvCxI,EAAM,OAAOwI,EAAMxI,EAAM,SAAU5F,EAAO5V,CAAG,CACtD,CAYA,SAAS0U,GAAKs8B,EAAGhtB,EAAM,CACrB,OAAOA,EAAK,KACd,CAgBA,SAASksO,GAAQ10O,EAAO5F,EAAOrS,EAAMygB,EAAM,CAErC,OAAOzgB,GAAS,UAAYA,IAASiY,EAAM,UAAYA,EAAM,WAC/D5F,EAAM,KAAOoO,EAEjB,CAYA,SAASmsO,GAAYv6O,EAAO+M,EAAU,CACpC,GAAIA,EAAS,OAAS,EAAG,CACvB,MAAMxhB,EAAQwhB,EAAS,OAAS,EAAIA,EAAWA,EAAS,CAAC,EAErDxhB,IACFyU,EAAM,SAAWzU,EAErB,CACF,CAYA,SAASsuP,GAAiBz+M,EAAG+mL,EAAKD,EAAM,CACtC,OAAOp7M,EAEP,SAASA,EAAOs0B,EAAGztC,EAAMqS,EAAO5V,EAAK,CAGnC,MAAMqO,EADmB,MAAM,QAAQuH,EAAM,QAAQ,EACvBkiN,EAAOC,EACrC,OAAO/3N,EAAMqO,EAAG9K,EAAMqS,EAAO5V,CAAG,EAAIqO,EAAG9K,EAAMqS,CAAK,CACpD,CACF,CAUA,SAAS45O,GAAkBD,EAAUiB,EAAQ,CAC3C,OAAO9zO,EAEP,SAASA,EAAOsH,EAAMzgB,EAAMqS,EAAO5V,EAAK,CAEtC,MAAMywP,EAAmB,MAAM,QAAQ76O,EAAM,QAAQ,EAC/CgyG,EAAQgnI,GAAW5qO,CAAI,EAC7B,OAAOwsO,EACLjtP,EACAqS,EACA5V,EACAywP,EACA,CACE,aAAc7oI,EAAQA,EAAM,OAAS,EAAI,OACzC,SAAU2nI,EACV,WAAY3nI,EAAQA,EAAM,KAAO,MACzC,EACM,MACN,CACE,CACF,CAYA,SAASooI,GAAmBx0O,EAAOwI,EAAM,CAEvC,MAAMpO,EAAQ,CAAA,EAEd,IAAI03K,EAEA9rL,EAEJ,IAAKA,KAAQwiB,EAAK,WAChB,GAAIxiB,IAAS,YAAc0tP,GAAI,KAAKlrO,EAAK,WAAYxiB,CAAI,EAAG,CAC1D,MAAMsD,EAAS4rP,GAAel1O,EAAOha,EAAMwiB,EAAK,WAAWxiB,CAAI,CAAC,EAEhE,GAAIsD,EAAQ,CACV,KAAM,CAAC9E,EAAKmB,CAAK,EAAI2D,EAGnB0W,EAAM,uBACNxb,IAAQ,SACR,OAAOmB,GAAU,UACjBiuP,GAAiB,IAAIprO,EAAK,OAAO,EAEjCspK,EAAansL,EAEbyU,EAAM5V,CAAG,EAAImB,CAEjB,CACF,CAGF,GAAImsL,EAAY,CAEd,MAAMr1J,EAA8BriB,EAAM,QAAUA,EAAM,MAAQ,CAAA,GAClEqiB,EAAMzc,EAAM,wBAA0B,MAAQ,aAAe,WAAW,EACtE8xK,CACJ,CAEA,OAAO13K,CACT,CAYA,SAAS26O,GAAsB/0O,EAAOwI,EAAM,CAE1C,MAAMpO,EAAQ,CAAA,EAEd,UAAW+gJ,KAAa3yI,EAAK,WAC3B,GAAI2yI,EAAU,OAAS,4BACrB,GAAIA,EAAU,MAAQA,EAAU,KAAK,QAAUn7I,EAAM,UAAW,CAE9D,MAAM40O,EADUz5F,EAAU,KAAK,OACJ,KAAK,CAAC,EAC1By5F,EAAW,KAClB,MAAMO,EAAmBP,EAAW,WAC7BO,EAAiB,KACxB,MAAMtsN,EAAWssN,EAAiB,WAAW,CAAC,EACvCtsN,EAAS,KAEhB,OAAO,OACLzuB,EACA4F,EAAM,UAAU,mBAAmB6oB,EAAS,QAAQ,CAC9D,CACM,MACEisN,GAAY90O,EAAOwI,EAAK,QAAQ,MAE7B,CAEL,MAAMnV,EAAO8nJ,EAAU,KAEvB,IAAIx1J,EAEJ,GAAIw1J,EAAU,OAAS,OAAOA,EAAU,OAAU,SAChD,GACEA,EAAU,MAAM,MAChBA,EAAU,MAAM,KAAK,QACrBn7I,EAAM,UACN,CAEA,MAAM40O,EADUz5F,EAAU,MAAM,KAAK,OACV,KAAK,CAAC,EAC1By5F,EAAW,KAClBjvP,EAAQqa,EAAM,UAAU,mBAAmB40O,EAAW,UAAU,CAClE,MACEE,GAAY90O,EAAOwI,EAAK,QAAQ,OAGlC7iB,EAAQw1J,EAAU,QAAU,KAAO,GAAOA,EAAU,MAItD/gJ,EAAM/G,CAAI,EAAuC1N,CACnD,CAGF,OAAOyU,CACT,CAYA,SAASq6O,GAAez0O,EAAOwI,EAAM,CAEnC,MAAMrB,EAAW,CAAA,EACjB,IAAIhe,EAAQ,GAIZ,MAAMisP,EAAep1O,EAAM,SAAW,IAAI,IAAQ2zO,GAElD,KAAO,EAAExqP,EAAQqf,EAAK,SAAS,QAAQ,CACrC,MAAMpB,EAAQoB,EAAK,SAASrf,CAAK,EAEjC,IAAI3E,EAEJ,GAAIwb,EAAM,SAAU,CAClB,MAAM3M,EACJ+T,EAAM,OAAS,UACXA,EAAM,QACNA,EAAM,OAAS,qBACbA,EAAM,OAAS,oBACfA,EAAM,KACN,OAER,GAAI/T,EAAM,CACR,MAAMlE,EAAQimP,EAAa,IAAI/hP,CAAI,GAAK,EACxC7O,EAAM6O,EAAO,IAAMlE,EACnBimP,EAAa,IAAI/hP,EAAMlE,EAAQ,CAAC,CAClC,CACF,CAEA,MAAM7F,EAAS4qP,GAAIl0O,EAAOoH,EAAO5iB,CAAG,EAChC8E,IAAW,QAAW6d,EAAS,KAAK7d,CAAM,CAChD,CAEA,OAAO6d,CACT,CAcA,SAAS+tO,GAAel1O,EAAOha,EAAML,EAAO,CAC1C,MAAMikC,EAAOsmN,GAAKlwO,EAAM,OAAQha,CAAI,EAGpC,GACE,EAAAL,GAAU,MAET,OAAOA,GAAU,UAAY,OAAO,MAAMA,CAAK,GAYlD,IAPI,MAAM,QAAQA,CAAK,IAGrBA,EAAQikC,EAAK,eAAiByrN,GAAO1vP,CAAK,EAAI2vP,GAAO3vP,CAAK,GAIxDikC,EAAK,WAAa,QAAS,CAC7B,IAAIyoN,EACF,OAAO1sP,GAAU,SAAWA,EAAQimC,GAAW5rB,EAAO,OAAOra,CAAK,CAAC,EAErE,OAAIqa,EAAM,wBAA0B,QAClCqyO,EAAckD,GAA2BlD,CAAW,GAG/C,CAAC,QAASA,CAAW,CAC9B,CAEA,MAAO,CACLryO,EAAM,2BAA6B,SAAW4pB,EAAK,MAC/CmmN,GAAYnmN,EAAK,QAAQ,GAAKA,EAAK,SACnCA,EAAK,UACTjkC,CACJ,EACA,CAcA,SAASimC,GAAW5rB,EAAOra,EAAO,CAChC,GAAI,CACF,OAAO6vP,GAAU7vP,EAAO,CAAC,YAAa,EAAI,CAAC,CAC7C,OAASiO,EAAO,CACd,GAAIoM,EAAM,mBACR,MAAO,CAAA,EAGT,MAAMy1O,EAA8B7hP,EAC9B+N,EAAU,IAAI2xO,GAAa,iCAAkC,CACjE,UAAWtzO,EAAM,UACjB,MAAAy1O,EACA,OAAQ,QACR,OAAQ,0BACd,CAAK,EACD,MAAA9zO,EAAQ,KAAO3B,EAAM,UAAY,OACjC2B,EAAQ,IAAMkyO,GAAO,gCAEflyO,CACR,CACF,CAcA,SAAS4yO,GAAsBv0O,EAAO3M,EAAMqiP,EAAiB,CAE3D,IAAIpsP,EAEJ,GAAI,CAACosP,EACHpsP,EAAS,CAAC,KAAM,UAAW,MAAO+J,CAAI,UAC7BA,EAAK,SAAS,GAAG,EAAG,CAC7B,MAAMsiP,EAActiP,EAAK,MAAM,GAAG,EAClC,IAAIlK,EAAQ,GAERqf,EAEJ,KAAO,EAAErf,EAAQwsP,EAAY,QAAQ,CAEnC,MAAM3vP,EAAO4vP,GAAiBD,EAAYxsP,CAAK,CAAC,EAC5C,CAAC,KAAM,aAAc,KAAMwsP,EAAYxsP,CAAK,CAAC,EAC7C,CAAC,KAAM,UAAW,MAAOwsP,EAAYxsP,CAAK,CAAC,EAC/Cqf,EAAOA,EACH,CACE,KAAM,mBACN,OAAQA,EACR,SAAUxiB,EACV,SAAU,GAAQmD,GAASnD,EAAK,OAAS,WACzC,SAAU,EACtB,EACUA,CACN,CAGAsD,EAASkf,CACX,MACElf,EACEssP,GAAiBviP,CAAI,GAAK,CAAC,SAAS,KAAKA,CAAI,EACzC,CAAC,KAAM,kBAAcA,CAAI,EACzB,CAAC,KAAM,UAAW,MAAOA,CAAI,EAKrC,GAAI/J,EAAO,OAAS,UAAW,CAC7B,MAAM+J,EAAuC/J,EAAO,MACpD,OAAOoqP,GAAI,KAAK1zO,EAAM,WAAY3M,CAAI,EAAI2M,EAAM,WAAW3M,CAAI,EAAIA,CACrE,CAGA,GAAI2M,EAAM,UACR,OAAOA,EAAM,UAAU,mBAAmB1W,CAAM,EAGlDwrP,GAAY90O,CAAK,CACnB,CAOA,SAAS80O,GAAY90O,EAAO61O,EAAO,CACjC,MAAMl0O,EAAU,IAAI2xO,GAClB,sDACA,CACE,UAAWtzO,EAAM,UACjB,MAAA61O,EACA,OAAQ,aACR,OAAQ,0BACd,CACA,EACE,MAAAl0O,EAAQ,KAAO3B,EAAM,UAAY,OACjC2B,EAAQ,IAAMkyO,GAAO,qDAEflyO,CACR,CAQA,SAAS4zO,GAA2BO,EAAW,CAE7C,MAAMC,EAAY,CAAA,EAElB,IAAIxvN,EAEJ,IAAKA,KAAQuvN,EACPpC,GAAI,KAAKoC,EAAWvvN,CAAI,IAC1BwvN,EAAUC,GAA0BzvN,CAAI,CAAC,EAAIuvN,EAAUvvN,CAAI,GAI/D,OAAOwvN,CACT,CAQA,SAASC,GAA0BzvN,EAAM,CACvC,IAAIk5D,EAAKl5D,EAAK,QAAQypN,GAAKiG,EAAM,EAEjC,OAAIx2J,EAAG,MAAM,EAAG,CAAC,IAAM,QAAOA,EAAK,IAAMA,GAClCA,CACT,CAUA,SAASw2J,GAAO1F,EAAI,CAClB,MAAO,IAAMA,EAAG,YAAW,CAC7B,CC1wBO,MAAM2F,GAAgB,CAC3B,OAAQ,CAAC,MAAM,EACf,KAAM,CAAC,aAAc,MAAO,MAAO,GAAG,EACtC,KAAM,CAAC,QAAQ,EACf,WAAY,CAAC,SAAU,OAAO,EAC9B,KAAM,CAAC,IAAK,OAAQ,OAAQ,MAAM,EAClC,KAAM,CAAC,UAAU,EACjB,OAAQ,KACR,SAAU,CAAC,MAAM,EACjB,KAAM,CAAC,IAAK,MAAM,EAClB,OAAQ,CAAC,OAAO,EAChB,IAAK,CACH,QACA,QACA,SACA,MACA,QACA,SACA,SACA,QACA,OACJ,CACA,EClBMt3H,GAAe,CAAA,EAed,SAASu3H,GAASxwP,EAAOyC,EAAS,CACvC,MAAMgmP,EAAsBxvH,GACtBw3H,EACJ,OAAOhI,EAAS,iBAAoB,UAChCA,EAAS,gBACT,GACAiI,EACJ,OAAOjI,EAAS,aAAgB,UAAYA,EAAS,YAAc,GAErE,OAAO8F,GAAIvuP,EAAOywP,EAAiBC,CAAW,CAChD,CAcA,SAASnC,GAAIvuP,EAAOywP,EAAiBC,EAAa,CAChD,GAAI7tO,GAAK7iB,CAAK,EAAG,CACf,GAAI,UAAWA,EACb,OAAOA,EAAM,OAAS,QAAU,CAAC0wP,EAAc,GAAK1wP,EAAM,MAG5D,GAAIywP,GAAmB,QAASzwP,GAASA,EAAM,IAC7C,OAAOA,EAAM,IAGf,GAAI,aAAcA,EAChB,OAAO2wP,GAAI3wP,EAAM,SAAUywP,EAAiBC,CAAW,CAE3D,CAEA,OAAI,MAAM,QAAQ1wP,CAAK,EACd2wP,GAAI3wP,EAAOywP,EAAiBC,CAAW,EAGzC,EACT,CAcA,SAASC,GAAIl3J,EAAQg3J,EAAiBC,EAAa,CAEjD,MAAM/sP,EAAS,CAAA,EACf,IAAIH,EAAQ,GAEZ,KAAO,EAAEA,EAAQi2F,EAAO,QACtB91F,EAAOH,CAAK,EAAI+qP,GAAI90J,EAAOj2F,CAAK,EAAGitP,EAAiBC,CAAW,EAGjE,OAAO/sP,EAAO,KAAK,EAAE,CACvB,CAUA,SAASkf,GAAK7iB,EAAO,CACnB,MAAO,GAAQA,GAAS,OAAOA,GAAU,SAC3C,CCvGA,MAAM8oB,GAAU,SAAS,cAAc,GAAG,EAMnC,SAAS8nO,GAA8B5wP,EAAO,CACnD,MAAM6wP,EAAqB,IAAM7wP,EAAQ,IACzC8oB,GAAQ,UAAY+nO,EACpB,MAAMnvN,EAAY5Y,GAAQ,YAQ1B,OAGE4Y,EAAU,WAAWA,EAAU,OAAS,CAAC,IAAM,IAC/C1hC,IAAU,QASL0hC,IAAcmvN,EAPZ,GAOyCnvN,CACpD,CCbO,SAASovN,GAAO7pN,EAAM6lG,EAAOikH,EAAQjuJ,EAAO,CACjD,MAAM3hE,EAAM8F,EAAK,OACjB,IAAI+pN,EAAa,EAEbC,EAWJ,GARInkH,EAAQ,EACVA,EAAQ,CAACA,EAAQ3rG,EAAM,EAAIA,EAAM2rG,EAEjCA,EAAQA,EAAQ3rG,EAAMA,EAAM2rG,EAE9BikH,EAASA,EAAS,EAAIA,EAAS,EAG3BjuJ,EAAM,OAAS,IACjBmuJ,EAAa,MAAM,KAAKnuJ,CAAK,EAC7BmuJ,EAAW,QAAQnkH,EAAOikH,CAAM,EAEhC9pN,EAAK,OAAO,GAAGgqN,CAAU,MAMzB,KAHIF,GAAQ9pN,EAAK,OAAO6lG,EAAOikH,CAAM,EAG9BC,EAAaluJ,EAAM,QACxBmuJ,EAAanuJ,EAAM,MAAMkuJ,EAAYA,EAAa,GAAK,EACvDC,EAAW,QAAQnkH,EAAO,CAAC,EAE3B7lG,EAAK,OAAO,GAAGgqN,CAAU,EACzBD,GAAc,IACdlkH,GAAS,GAGf,CAkBO,SAAS0tC,GAAKvzI,EAAM67D,EAAO,CAChC,OAAI77D,EAAK,OAAS,GAChB6pN,GAAO7pN,EAAMA,EAAK,OAAQ,EAAG67D,CAAK,EAC3B77D,GAEF67D,CACT,CCrEA,MAAMouJ,GAAiB,CAAA,EAAG,eAUnB,SAASC,GAAkB9nC,EAAY,CAE5C,MAAMsnC,EAAM,CAAA,EACZ,IAAIntP,EAAQ,GAEZ,KAAO,EAAEA,EAAQ6lN,EAAW,QAC1B+nC,GAAgBT,EAAKtnC,EAAW7lN,CAAK,CAAC,EAGxC,OAAOmtP,CACT,CAYA,SAASS,GAAgBT,EAAKU,EAAW,CAEvC,IAAIC,EAEJ,IAAKA,KAAQD,EAAW,CAGtB,MAAMj6N,GAFQ85N,GAAe,KAAKP,EAAKW,CAAI,EAAIX,EAAIW,CAAI,EAAI,UAEpCX,EAAIW,CAAI,EAAI,CAAA,GAE7Bj6N,EAAQg6N,EAAUC,CAAI,EAE5B,IAAIrvP,EAEJ,GAAIo1B,EACF,IAAKp1B,KAAQo1B,EAAO,CACb65N,GAAe,KAAK95N,EAAMn1B,CAAI,IAAGm1B,EAAKn1B,CAAI,EAAI,CAAA,GACnD,MAAMjC,EAAQq3B,EAAMp1B,CAAI,EACxBsvP,GAEEn6N,EAAKn1B,CAAI,EACT,MAAM,QAAQjC,CAAK,EAAIA,EAAQA,EAAQ,CAACA,CAAK,EAAI,CAAA,CAC3D,CACM,CAEJ,CACF,CAaA,SAASuxP,GAAWC,EAAUvqN,EAAM,CAClC,IAAIzjC,EAAQ,GAEZ,MAAMiuP,EAAS,CAAA,EAEf,KAAO,EAAEjuP,EAAQyjC,EAAK,SAElBA,EAAKzjC,CAAK,EAAE,MAAQ,QAAUguP,EAAWC,GAAQ,KAAKxqN,EAAKzjC,CAAK,CAAC,EAGrEstP,GAAOU,EAAU,EAAG,EAAGC,CAAM,CAC/B,CC9EO,SAASC,GAAgC1xP,EAAO02C,EAAM,CAC3D,MAAMz0C,EAAO,OAAO,SAASjC,EAAO02C,CAAI,EACxC,OAEAz0C,EAAO,GAAKA,IAAS,IAAMA,EAAO,IAAMA,EAAO,IAE/CA,EAAO,KAAOA,EAAO,KAErBA,EAAO,OAAUA,EAAO,OAExBA,EAAO,OAAUA,EAAO,QACvBA,EAAO,SAAY,QAAWA,EAAO,SAAY,OAElDA,EAAO,QACE,IAEF,OAAO,cAAcA,CAAI,CAClC,CCZO,SAAS0vP,GAAoB3xP,EAAO,CACzC,OAAOA,EAEN,QAAQ,cAAe,GAAG,EAE1B,QAAQ,SAAU,EAAE,EAOpB,YAAW,EAAG,YAAW,CAC5B,CCXO,MAAM4xP,GAAaC,GAAW,UAAU,EAclCC,GAAoBD,GAAW,YAAY,EAuB3CE,GAAaF,GAAW,qBAAqB,EAanD,SAASG,GAAa/vP,EAAM,CACjC,OAGEA,IAAS,OAASA,EAAO,IAAMA,IAAS,IAE5C,CAaO,MAAMgwP,GAAaJ,GAAW,IAAI,EAoB5BK,GAAgBL,GAAW,YAAY,EAevCM,GAAmBN,GAAW,gBAAgB,EAiBpD,SAASO,GAAmBnwP,EAAM,CACvC,OAAOA,IAAS,MAAQA,EAAO,EACjC,CAWO,SAASowP,GAA0BpwP,EAAM,CAC9C,OAAOA,IAAS,OAASA,EAAO,GAAKA,IAAS,GAChD,CAiBO,SAASqwP,GAAcrwP,EAAM,CAClC,OAAOA,IAAS,IAAMA,IAAS,IAAMA,IAAS,EAChD,CAuBO,MAAMswP,GAAqBV,GAAW,8BAAc,GAsB9CW,GAAoBX,GAAW,IAAI,EAUhD,SAASA,GAAWxkK,EAAO,CACzB,OAAOq8J,EAUP,SAASA,EAAMznP,EAAM,CACnB,OAAOA,IAAS,MAAQA,EAAO,IAAMorF,EAAM,KAAK,OAAO,aAAaprF,CAAI,CAAC,CAC3E,CACF,CC7LO,SAASwwP,GAAazyP,EAAO,CAElC,MAAM2D,EAAS,CAAA,EACf,IAAIH,EAAQ,GACRspI,EAAQ,EACRnoE,EAAO,EACX,KAAO,EAAEnhE,EAAQxD,EAAM,QAAQ,CAC7B,MAAMiC,EAAOjC,EAAM,WAAWwD,CAAK,EAEnC,IAAIiX,EAAU,GAGd,GAAIxY,IAAS,IAAM6vP,GAAkB9xP,EAAM,WAAWwD,EAAQ,CAAC,CAAC,GAAKsuP,GAAkB9xP,EAAM,WAAWwD,EAAQ,CAAC,CAAC,EAChHmhE,EAAO,UAGA1iE,EAAO,IACT,oBAAoB,KAAK,OAAO,aAAaA,CAAI,CAAC,IACrDwY,EAAU,OAAO,aAAaxY,CAAI,WAI7BA,EAAO,OAAUA,EAAO,MAAQ,CACvC,MAAMJ,EAAO7B,EAAM,WAAWwD,EAAQ,CAAC,EAGnCvB,EAAO,OAAUJ,EAAO,OAAUA,EAAO,OAC3C4Y,EAAU,OAAO,aAAaxY,EAAMJ,CAAI,EACxC8iE,EAAO,GAIPlqD,EAAU,GAEd,MAGEA,EAAU,OAAO,aAAaxY,CAAI,EAEhCwY,IACF9W,EAAO,KAAK3D,EAAM,MAAM8sI,EAAOtpI,CAAK,EAAG,mBAAmBiX,CAAO,CAAC,EAClEqyH,EAAQtpI,EAAQmhE,EAAO,EACvBlqD,EAAU,IAERkqD,IACFnhE,GAASmhE,EACTA,EAAO,EAEX,CACA,OAAOhhE,EAAO,KAAK,EAAE,EAAI3D,EAAM,MAAM8sI,CAAK,CAC5C,CClEO,SAAS4lH,GAAaC,EAASpK,EAAInmP,EAAM2tC,EAAK,CACnD,MAAMw6J,EAAQx6J,EAAMA,EAAM,EAAI,OAAO,kBACrC,IAAIlnB,EAAO,EACX,OAAOikH,EAGP,SAASA,EAAM7qI,EAAM,CACnB,OAAIqwP,GAAcrwP,CAAI,GACpB0wP,EAAQ,MAAMvwP,CAAI,EACXO,EAAOV,CAAI,GAEbsmP,EAAGtmP,CAAI,CAChB,CAGA,SAASU,EAAOV,EAAM,CACpB,OAAIqwP,GAAcrwP,CAAI,GAAK4mB,IAAS0hL,GAClCooD,EAAQ,QAAQ1wP,CAAI,EACbU,IAETgwP,EAAQ,KAAKvwP,CAAI,EACVmmP,EAAGtmP,CAAI,EAChB,CACF,CClDO,MAAM4iC,GAAU,CACrB,SAAU+tN,EACZ,EAQA,SAASA,GAAkBD,EAAS,CAClC,MAAME,EAAeF,EAAQ,QAAQ,KAAK,OAAO,WAAW,eAAgBG,EAA4BC,CAAgB,EAExH,IAAI5vN,EACJ,OAAO0vN,EAGP,SAASC,EAA2B7wP,EAAM,CACxC,GAAIA,IAAS,KAAM,CACjB0wP,EAAQ,QAAQ1wP,CAAI,EACpB,MACF,CACA,OAAA0wP,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,YAAY,EAClBD,GAAaC,EAASE,EAAc,YAAY,CACzD,CAGA,SAASE,EAAiB9wP,EAAM,CAC9B,OAAA0wP,EAAQ,MAAM,WAAW,EAClBK,EAAU/wP,CAAI,CACvB,CAGA,SAAS+wP,EAAU/wP,EAAM,CACvB,MAAMy2B,EAAQi6N,EAAQ,MAAM,YAAa,CACvC,YAAa,OACb,SAAAxvN,CACN,CAAK,EACD,OAAIA,IACFA,EAAS,KAAOzK,GAElByK,EAAWzK,EACJ54B,EAAKmC,CAAI,CAClB,CAGA,SAASnC,EAAKmC,EAAM,CAClB,GAAIA,IAAS,KAAM,CACjB0wP,EAAQ,KAAK,WAAW,EACxBA,EAAQ,KAAK,WAAW,EACxBA,EAAQ,QAAQ1wP,CAAI,EACpB,MACF,CACA,OAAImwP,GAAmBnwP,CAAI,GACzB0wP,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,WAAW,EACjBK,IAITL,EAAQ,QAAQ1wP,CAAI,EACbnC,EACT,CACF,CCvDO,MAAMmzP,GAAW,CACtB,SAAUC,EACZ,EAGMC,GAAqB,CACzB,SAAUC,EACZ,EAQA,SAASF,GAAmBP,EAAS,CACnC,MAAMj5E,EAAO,KAEPx6K,EAAQ,CAAA,EACd,IAAIm0P,EAAY,EAEZC,EAEAC,EAEAC,EACJ,OAAO1mH,EAGP,SAASA,EAAM7qI,EAAM,CAWnB,GAAIoxP,EAAYn0P,EAAM,OAAQ,CAC5B,MAAMq5B,EAAOr5B,EAAMm0P,CAAS,EAC5B,OAAA35E,EAAK,eAAiBnhJ,EAAK,CAAC,EACrBo6N,EAAQ,QAAQp6N,EAAK,CAAC,EAAE,aAAck7N,EAAkBC,CAAkB,EAAEzxP,CAAI,CACzF,CAGA,OAAOyxP,EAAmBzxP,CAAI,CAChC,CAGA,SAASwxP,EAAiBxxP,EAAM,CAM9B,GALAoxP,IAKI35E,EAAK,eAAe,WAAY,CAClCA,EAAK,eAAe,WAAa,OAC7B45E,GACFK,EAAS,EAKX,MAAMC,EAAmBl6E,EAAK,OAAO,OACrC,IAAIm6E,EAAkBD,EAElBntI,EAGJ,KAAOotI,KACL,GAAIn6E,EAAK,OAAOm6E,CAAe,EAAE,CAAC,IAAM,QAAUn6E,EAAK,OAAOm6E,CAAe,EAAE,CAAC,EAAE,OAAS,YAAa,CACtGptI,EAAQizD,EAAK,OAAOm6E,CAAe,EAAE,CAAC,EAAE,IACxC,KACF,CAEFC,EAAeT,CAAS,EAGxB,IAAI7vP,EAAQowP,EACZ,KAAOpwP,EAAQk2K,EAAK,OAAO,QACzBA,EAAK,OAAOl2K,CAAK,EAAE,CAAC,EAAE,IAAM,CAC1B,GAAGijH,CACb,EACQjjH,IAIF,OAAAstP,GAAOp3E,EAAK,OAAQm6E,EAAkB,EAAG,EAAGn6E,EAAK,OAAO,MAAMk6E,CAAgB,CAAC,EAG/El6E,EAAK,OAAO,OAASl2K,EACdkwP,EAAmBzxP,CAAI,CAChC,CACA,OAAO6qI,EAAM7qI,CAAI,CACnB,CAGA,SAASyxP,EAAmBzxP,EAAM,CAMhC,GAAIoxP,IAAcn0P,EAAM,OAAQ,CAI9B,GAAI,CAACo0P,EACH,OAAOS,EAAkB9xP,CAAI,EAM/B,GAAIqxP,EAAU,kBAAoBA,EAAU,iBAAiB,SAC3D,OAAOU,EAAU/xP,CAAI,EAQvBy3K,EAAK,UAAY,GAAQ45E,EAAU,kBAAoB,CAACA,EAAU,8BACpE,CAGA,OAAA55E,EAAK,eAAiB,CAAA,EACfi5E,EAAQ,MAAMQ,GAAoBc,EAAsBC,CAAqB,EAAEjyP,CAAI,CAC5F,CAGA,SAASgyP,EAAqBhyP,EAAM,CAClC,OAAIqxP,GAAWK,EAAS,EACxBG,EAAeT,CAAS,EACjBU,EAAkB9xP,CAAI,CAC/B,CAGA,SAASiyP,EAAsBjyP,EAAM,CACnC,OAAAy3K,EAAK,OAAO,KAAKA,EAAK,IAAG,EAAG,IAAI,EAAI25E,IAAcn0P,EAAM,OACxDs0P,EAAkB95E,EAAK,IAAG,EAAG,OACtBs6E,EAAU/xP,CAAI,CACvB,CAGA,SAAS8xP,EAAkB9xP,EAAM,CAE/B,OAAAy3K,EAAK,eAAiB,CAAA,EACfi5E,EAAQ,QAAQQ,GAAoBgB,EAAmBH,CAAS,EAAE/xP,CAAI,CAC/E,CAGA,SAASkyP,EAAkBlyP,EAAM,CAC/B,OAAAoxP,IACAn0P,EAAM,KAAK,CAACw6K,EAAK,iBAAkBA,EAAK,cAAc,CAAC,EAEhDq6E,EAAkB9xP,CAAI,CAC/B,CAGA,SAAS+xP,EAAU/xP,EAAM,CACvB,GAAIA,IAAS,KAAM,CACbqxP,GAAWK,EAAS,EACxBG,EAAe,CAAC,EAChBnB,EAAQ,QAAQ1wP,CAAI,EACpB,MACF,CACA,OAAAqxP,EAAYA,GAAa55E,EAAK,OAAO,KAAKA,EAAK,KAAK,EACpDi5E,EAAQ,MAAM,YAAa,CACzB,WAAYW,EACZ,YAAa,OACb,SAAUC,CAChB,CAAK,EACMa,EAAanyP,CAAI,CAC1B,CAGA,SAASmyP,EAAanyP,EAAM,CAC1B,GAAIA,IAAS,KAAM,CACjBoyP,EAAa1B,EAAQ,KAAK,WAAW,EAAG,EAAI,EAC5CmB,EAAe,CAAC,EAChBnB,EAAQ,QAAQ1wP,CAAI,EACpB,MACF,CACA,OAAImwP,GAAmBnwP,CAAI,GACzB0wP,EAAQ,QAAQ1wP,CAAI,EACpBoyP,EAAa1B,EAAQ,KAAK,WAAW,CAAC,EAEtCU,EAAY,EACZ35E,EAAK,UAAY,OACV5sC,IAET6lH,EAAQ,QAAQ1wP,CAAI,EACbmyP,EACT,CAUA,SAASC,EAAa37N,EAAO47N,EAAW,CACtC,MAAMC,EAAS76E,EAAK,YAAYhhJ,CAAK,EAyCrC,GAxCI47N,GAAWC,EAAO,KAAK,IAAI,EAC/B77N,EAAM,SAAW66N,EACbA,IAAYA,EAAW,KAAO76N,GAClC66N,EAAa76N,EACb46N,EAAU,WAAW56N,EAAM,KAAK,EAChC46N,EAAU,MAAMiB,CAAM,EAmClB76E,EAAK,OAAO,KAAKhhJ,EAAM,MAAM,IAAI,EAAG,CACtC,IAAIl1B,EAAQ8vP,EAAU,OAAO,OAC7B,KAAO9vP,KACL,GAEA8vP,EAAU,OAAO9vP,CAAK,EAAE,CAAC,EAAE,MAAM,OAASgwP,IAE1C,CAACF,EAAU,OAAO9vP,CAAK,EAAE,CAAC,EAAE,KAE5B8vP,EAAU,OAAO9vP,CAAK,EAAE,CAAC,EAAE,IAAI,OAASgwP,GAGtC,OAMJ,MAAMI,EAAmBl6E,EAAK,OAAO,OACrC,IAAIm6E,EAAkBD,EAElBY,EAEA/tI,EAGJ,KAAOotI,KACL,GAAIn6E,EAAK,OAAOm6E,CAAe,EAAE,CAAC,IAAM,QAAUn6E,EAAK,OAAOm6E,CAAe,EAAE,CAAC,EAAE,OAAS,YAAa,CACtG,GAAIW,EAAM,CACR/tI,EAAQizD,EAAK,OAAOm6E,CAAe,EAAE,CAAC,EAAE,IACxC,KACF,CACAW,EAAO,EACT,CAMF,IAJAV,EAAeT,CAAS,EAGxB7vP,EAAQowP,EACDpwP,EAAQk2K,EAAK,OAAO,QACzBA,EAAK,OAAOl2K,CAAK,EAAE,CAAC,EAAE,IAAM,CAC1B,GAAGijH,CACb,EACQjjH,IAIFstP,GAAOp3E,EAAK,OAAQm6E,EAAkB,EAAG,EAAGn6E,EAAK,OAAO,MAAMk6E,CAAgB,CAAC,EAG/El6E,EAAK,OAAO,OAASl2K,CACvB,CACF,CAQA,SAASswP,EAAejrO,EAAM,CAC5B,IAAIrlB,EAAQtE,EAAM,OAGlB,KAAOsE,KAAUqlB,GAAM,CACrB,MAAMM,EAAQjqB,EAAMsE,CAAK,EACzBk2K,EAAK,eAAiBvwJ,EAAM,CAAC,EAC7BA,EAAM,CAAC,EAAE,KAAK,KAAKuwJ,EAAMi5E,CAAO,CAClC,CACAzzP,EAAM,OAAS2pB,CACjB,CACA,SAAS8qO,GAAY,CACnBL,EAAU,MAAM,CAAC,IAAI,CAAC,EACtBC,EAAa,OACbD,EAAY,OACZ55E,EAAK,eAAe,WAAa,MACnC,CACF,CAQA,SAAS05E,GAAkBT,EAASpK,EAAIkM,EAAK,CAG3C,OAAO/B,GAAaC,EAASA,EAAQ,QAAQ,KAAK,OAAO,WAAW,SAAUpK,EAAIkM,CAAG,EAAG,aAAc,KAAK,OAAO,WAAW,QAAQ,KAAK,SAAS,cAAc,EAAI,OAAY,CAAC,CACpL,CCtVO,SAASC,GAAkBzyP,EAAM,CACtC,GAAIA,IAAS,MAAQowP,GAA0BpwP,CAAI,GAAKuwP,GAAkBvwP,CAAI,EAC5E,MAAO,GAET,GAAIswP,GAAmBtwP,CAAI,EACzB,MAAO,EAEX,CCVO,SAAS0yP,GAAWpD,EAAYvuP,EAAQs2C,EAAS,CAEtD,MAAMs7M,EAAS,CAAA,EACf,IAAIpxP,EAAQ,GAEZ,KAAO,EAAEA,EAAQ+tP,EAAW,QAAQ,CAClC,MAAMrzP,EAAUqzP,EAAW/tP,CAAK,EAAE,WAE9BtF,GAAW,CAAC02P,EAAO,SAAS12P,CAAO,IACrC8E,EAAS9E,EAAQ8E,EAAQs2C,CAAO,EAChCs7M,EAAO,KAAK12P,CAAO,EAEvB,CAEA,OAAO8E,CACT,CCbO,MAAM6xP,GAAY,CACvB,KAAM,YACN,WAAYC,GACZ,SAAUC,EACZ,EAQA,SAASD,GAAoB9xP,EAAQs2C,EAAS,CAC5C,IAAI91C,EAAQ,GAERg/E,EAEAwuD,EAEAz9H,EAEAyhP,EAEAC,EAEAC,EAEAC,EAEAnyN,EAMJ,KAAO,EAAEx/B,EAAQR,EAAO,QAEtB,GAAIA,EAAOQ,CAAK,EAAE,CAAC,IAAM,SAAWR,EAAOQ,CAAK,EAAE,CAAC,EAAE,OAAS,qBAAuBR,EAAOQ,CAAK,EAAE,CAAC,EAAE,QAIpG,IAHAg/E,EAAOh/E,EAGAg/E,KAEL,GAAIx/E,EAAOw/E,CAAI,EAAE,CAAC,IAAM,QAAUx/E,EAAOw/E,CAAI,EAAE,CAAC,EAAE,OAAS,qBAAuBx/E,EAAOw/E,CAAI,EAAE,CAAC,EAAE,OAElGlpC,EAAQ,eAAet2C,EAAOw/E,CAAI,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,IAAMlpC,EAAQ,eAAet2C,EAAOQ,CAAK,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,EAAG,CAKhH,IAAKR,EAAOw/E,CAAI,EAAE,CAAC,EAAE,QAAUx/E,EAAOQ,CAAK,EAAE,CAAC,EAAE,SAAWR,EAAOQ,CAAK,EAAE,CAAC,EAAE,IAAI,OAASR,EAAOQ,CAAK,EAAE,CAAC,EAAE,MAAM,QAAU,GAAK,GAAGR,EAAOw/E,CAAI,EAAE,CAAC,EAAE,IAAI,OAASx/E,EAAOw/E,CAAI,EAAE,CAAC,EAAE,MAAM,OAASx/E,EAAOQ,CAAK,EAAE,CAAC,EAAE,IAAI,OAASR,EAAOQ,CAAK,EAAE,CAAC,EAAE,MAAM,QAAU,GAC3P,SAIF0xP,EAAMlyP,EAAOw/E,CAAI,EAAE,CAAC,EAAE,IAAI,OAASx/E,EAAOw/E,CAAI,EAAE,CAAC,EAAE,MAAM,OAAS,GAAKx/E,EAAOQ,CAAK,EAAE,CAAC,EAAE,IAAI,OAASR,EAAOQ,CAAK,EAAE,CAAC,EAAE,MAAM,OAAS,EAAI,EAAI,EAC7I,MAAMspI,EAAQ,CACZ,GAAG9pI,EAAOw/E,CAAI,EAAE,CAAC,EAAE,GAC/B,EACgBrhD,EAAM,CACV,GAAGn+B,EAAOQ,CAAK,EAAE,CAAC,EAAE,KAChC,EACU4xP,GAAUtoH,EAAO,CAACooH,CAAG,EACrBE,GAAUj0N,EAAK+zN,CAAG,EAClBF,EAAkB,CAChB,KAAME,EAAM,EAAI,iBAAmB,mBACnC,MAAApoH,EACA,IAAK,CACH,GAAG9pI,EAAOw/E,CAAI,EAAE,CAAC,EAAE,GACjC,CACA,EACUyyK,EAAkB,CAChB,KAAMC,EAAM,EAAI,iBAAmB,mBACnC,MAAO,CACL,GAAGlyP,EAAOQ,CAAK,EAAE,CAAC,EAAE,KAClC,EACY,IAAA29B,CACZ,EACU5tB,EAAO,CACL,KAAM2hP,EAAM,EAAI,aAAe,eAC/B,MAAO,CACL,GAAGlyP,EAAOw/E,CAAI,EAAE,CAAC,EAAE,GACjC,EACY,IAAK,CACH,GAAGx/E,EAAOQ,CAAK,EAAE,CAAC,EAAE,KAClC,CACA,EACUwtI,EAAQ,CACN,KAAMkkH,EAAM,EAAI,SAAW,WAC3B,MAAO,CACL,GAAGF,EAAgB,KACjC,EACY,IAAK,CACH,GAAGC,EAAgB,GACjC,CACA,EACUjyP,EAAOw/E,CAAI,EAAE,CAAC,EAAE,IAAM,CACpB,GAAGwyK,EAAgB,KAC/B,EACUhyP,EAAOQ,CAAK,EAAE,CAAC,EAAE,MAAQ,CACvB,GAAGyxP,EAAgB,GAC/B,EACUE,EAAa,CAAA,EAGTnyP,EAAOw/E,CAAI,EAAE,CAAC,EAAE,IAAI,OAASx/E,EAAOw/E,CAAI,EAAE,CAAC,EAAE,MAAM,SACrD2yK,EAAa36E,GAAK26E,EAAY,CAAC,CAAC,QAASnyP,EAAOw/E,CAAI,EAAE,CAAC,EAAGlpC,CAAO,EAAG,CAAC,OAAQt2C,EAAOw/E,CAAI,EAAE,CAAC,EAAGlpC,CAAO,CAAC,CAAC,GAIzG67M,EAAa36E,GAAK26E,EAAY,CAAC,CAAC,QAASnkH,EAAO13F,CAAO,EAAG,CAAC,QAAS07M,EAAiB17M,CAAO,EAAG,CAAC,OAAQ07M,EAAiB17M,CAAO,EAAG,CAAC,QAAS/lC,EAAM+lC,CAAO,CAAC,CAAC,EAK5J67M,EAAa36E,GAAK26E,EAAYR,GAAWr7M,EAAQ,OAAO,WAAW,WAAW,KAAMt2C,EAAO,MAAMw/E,EAAO,EAAGh/E,CAAK,EAAG81C,CAAO,CAAC,EAG3H67M,EAAa36E,GAAK26E,EAAY,CAAC,CAAC,OAAQ5hP,EAAM+lC,CAAO,EAAG,CAAC,QAAS27M,EAAiB37M,CAAO,EAAG,CAAC,OAAQ27M,EAAiB37M,CAAO,EAAG,CAAC,OAAQ03F,EAAO13F,CAAO,CAAC,CAAC,EAGtJt2C,EAAOQ,CAAK,EAAE,CAAC,EAAE,IAAI,OAASR,EAAOQ,CAAK,EAAE,CAAC,EAAE,MAAM,QACvDw/B,EAAS,EACTmyN,EAAa36E,GAAK26E,EAAY,CAAC,CAAC,QAASnyP,EAAOQ,CAAK,EAAE,CAAC,EAAG81C,CAAO,EAAG,CAAC,OAAQt2C,EAAOQ,CAAK,EAAE,CAAC,EAAG81C,CAAO,CAAC,CAAC,GAEzGtW,EAAS,EAEX8tN,GAAO9tP,EAAQw/E,EAAO,EAAGh/E,EAAQg/E,EAAO,EAAG2yK,CAAU,EACrD3xP,EAAQg/E,EAAO2yK,EAAW,OAASnyN,EAAS,EAC5C,KACF,EAON,IADAx/B,EAAQ,GACD,EAAEA,EAAQR,EAAO,QAClBA,EAAOQ,CAAK,EAAE,CAAC,EAAE,OAAS,sBAC5BR,EAAOQ,CAAK,EAAE,CAAC,EAAE,KAAO,QAG5B,OAAOR,CACT,CAOA,SAAS+xP,GAAkBpC,EAASpK,EAAI,CACtC,MAAM8M,EAAmB,KAAK,OAAO,WAAW,iBAAiB,KAC3DlyN,EAAW,KAAK,SAChBsuN,EAASiD,GAAkBvxN,CAAQ,EAGzC,IAAImyN,EACJ,OAAOxoH,EAYP,SAASA,EAAM7qI,EAAM,CACnB,OAAAqzP,EAASrzP,EACT0wP,EAAQ,MAAM,mBAAmB,EAC1B4C,EAAOtzP,CAAI,CACpB,CAYA,SAASszP,EAAOtzP,EAAM,CACpB,GAAIA,IAASqzP,EACX,OAAA3C,EAAQ,QAAQ1wP,CAAI,EACbszP,EAET,MAAM78N,EAAQi6N,EAAQ,KAAK,mBAAmB,EAGxC6C,EAAQd,GAAkBzyP,CAAI,EAI9BugF,EAAO,CAACgzK,GAASA,IAAU,GAAK/D,GAAU4D,EAAiB,SAASpzP,CAAI,EACxEu8E,EAAQ,CAACizK,GAAUA,IAAW,GAAK+D,GAASH,EAAiB,SAASlyN,CAAQ,EACpF,OAAAzK,EAAM,MAAQ,GAAQ48N,IAAW,GAAK9yK,EAAOA,IAASivK,GAAU,CAACjzK,IACjE9lD,EAAM,OAAS,GAAQ48N,IAAW,GAAK92K,EAAQA,IAAUg3K,GAAS,CAAChzK,IAC5D+lK,EAAGtmP,CAAI,CAChB,CACF,CAeA,SAASmzP,GAAU3uI,EAAOzjF,EAAQ,CAChCyjF,EAAM,QAAUzjF,EAChByjF,EAAM,QAAUzjF,EAChByjF,EAAM,cAAgBzjF,CACxB,CCrOO,MAAMyyN,GAAW,CACtB,KAAM,WACN,SAAUC,EACZ,EAOA,SAASA,GAAiB/C,EAASpK,EAAIkM,EAAK,CAC1C,IAAI5rO,EAAO,EACX,OAAOikH,EAcP,SAASA,EAAM7qI,EAAM,CACnB,OAAA0wP,EAAQ,MAAM,UAAU,EACxBA,EAAQ,MAAM,gBAAgB,EAC9BA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,gBAAgB,EAC7BA,EAAQ,MAAM,kBAAkB,EACzBnwK,CACT,CAcA,SAASA,EAAKvgF,EAAM,CAClB,OAAI2vP,GAAW3vP,CAAI,GACjB0wP,EAAQ,QAAQ1wP,CAAI,EACb0zP,GAEL1zP,IAAS,GACJwyP,EAAIxyP,CAAI,EAEV2zP,EAAW3zP,CAAI,CACxB,CAcA,SAAS0zP,EAAmB1zP,EAAM,CAEhC,OAAIA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAM6vP,GAAkB7vP,CAAI,GAErE4mB,EAAO,EACAgtO,EAAyB5zP,CAAI,GAE/B2zP,EAAW3zP,CAAI,CACxB,CAcA,SAAS4zP,EAAyB5zP,EAAM,CACtC,OAAIA,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EACpB4mB,EAAO,EACAitO,IAIJ7zP,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAM6vP,GAAkB7vP,CAAI,IAAM4mB,IAAS,IACrF8pO,EAAQ,QAAQ1wP,CAAI,EACb4zP,IAEThtO,EAAO,EACA+sO,EAAW3zP,CAAI,EACxB,CAYA,SAAS6zP,EAAU7zP,EAAM,CACvB,OAAIA,IAAS,IACX0wP,EAAQ,KAAK,kBAAkB,EAC/BA,EAAQ,MAAM,gBAAgB,EAC9BA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,gBAAgB,EAC7BA,EAAQ,KAAK,UAAU,EAChBpK,GAILtmP,IAAS,MAAQA,IAAS,IAAMA,IAAS,IAAM+vP,GAAa/vP,CAAI,EAC3DwyP,EAAIxyP,CAAI,GAEjB0wP,EAAQ,QAAQ1wP,CAAI,EACb6zP,EACT,CAYA,SAASF,EAAW3zP,EAAM,CACxB,OAAIA,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EACb8zP,GAELhE,GAAW9vP,CAAI,GACjB0wP,EAAQ,QAAQ1wP,CAAI,EACb2zP,GAEFnB,EAAIxyP,CAAI,CACjB,CAYA,SAAS8zP,EAAiB9zP,EAAM,CAC9B,OAAO6vP,GAAkB7vP,CAAI,EAAI+zP,EAAW/zP,CAAI,EAAIwyP,EAAIxyP,CAAI,CAC9D,CAYA,SAAS+zP,EAAW/zP,EAAM,CACxB,OAAIA,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EACpB4mB,EAAO,EACAktO,GAEL9zP,IAAS,IAEX0wP,EAAQ,KAAK,kBAAkB,EAAE,KAAO,gBACxCA,EAAQ,MAAM,gBAAgB,EAC9BA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,gBAAgB,EAC7BA,EAAQ,KAAK,UAAU,EAChBpK,GAEF0N,EAAWh0P,CAAI,CACxB,CAcA,SAASg0P,EAAWh0P,EAAM,CAExB,IAAKA,IAAS,IAAM6vP,GAAkB7vP,CAAI,IAAM4mB,IAAS,GAAI,CAC3D,MAAMhnB,EAAOI,IAAS,GAAKg0P,EAAaD,EACxC,OAAArD,EAAQ,QAAQ1wP,CAAI,EACbJ,CACT,CACA,OAAO4yP,EAAIxyP,CAAI,CACjB,CACF,CC5NO,MAAMi0P,GAAY,CACvB,QAAS,GACT,SAAUC,EACZ,EAOA,SAASA,GAAkBxD,EAASpK,EAAIkM,EAAK,CAC3C,OAAO3nH,EAgBP,SAASA,EAAM7qI,EAAM,CACnB,OAAOqwP,GAAcrwP,CAAI,EAAIywP,GAAaC,EAAS6C,EAAO,YAAY,EAAEvzP,CAAI,EAAIuzP,EAAMvzP,CAAI,CAC5F,CAgBA,SAASuzP,EAAMvzP,EAAM,CACnB,OAAOA,IAAS,MAAQmwP,GAAmBnwP,CAAI,EAAIsmP,EAAGtmP,CAAI,EAAIwyP,EAAIxyP,CAAI,CACxE,CACF,CC/CO,MAAMm0P,GAAa,CACxB,aAAc,CACZ,SAAUC,EACd,EACA,KAAEC,GACA,KAAM,aACN,SAAUC,EACZ,EAOA,SAASA,GAAwB5D,EAASpK,EAAIkM,EAAK,CACjD,MAAM/6E,EAAO,KACb,OAAO5sC,EAYP,SAASA,EAAM7qI,EAAM,CACnB,GAAIA,IAAS,GAAI,CACf,MAAMoY,EAAQq/J,EAAK,eACnB,OAAKr/J,EAAM,OACTs4O,EAAQ,MAAM,aAAc,CAC1B,WAAY,EACtB,CAAS,EACDt4O,EAAM,KAAO,IAEfs4O,EAAQ,MAAM,kBAAkB,EAChCA,EAAQ,MAAM,kBAAkB,EAChCA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,kBAAkB,EACxB6C,CACT,CACA,OAAOf,EAAIxyP,CAAI,CACjB,CAYA,SAASuzP,EAAMvzP,EAAM,CACnB,OAAIqwP,GAAcrwP,CAAI,GACpB0wP,EAAQ,MAAM,4BAA4B,EAC1CA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,4BAA4B,EACzCA,EAAQ,KAAK,kBAAkB,EACxBpK,IAEToK,EAAQ,KAAK,kBAAkB,EACxBpK,EAAGtmP,CAAI,EAChB,CACF,CAeA,SAASo0P,GAA+B1D,EAASpK,EAAIkM,EAAK,CACxD,MAAM/6E,EAAO,KACb,OAAO88E,EAeP,SAASA,EAAUv0P,EAAM,CACvB,OAAIqwP,GAAcrwP,CAAI,EAGbywP,GAAaC,EAAS8D,EAAY,aAAc/8E,EAAK,OAAO,WAAW,QAAQ,KAAK,SAAS,cAAc,EAAI,OAAY,CAAC,EAAEz3K,CAAI,EAEpIw0P,EAAWx0P,CAAI,CACxB,CAeA,SAASw0P,EAAWx0P,EAAM,CACxB,OAAO0wP,EAAQ,QAAQyD,GAAY7N,EAAIkM,CAAG,EAAExyP,CAAI,CAClD,CACF,CAGA,SAASq0P,GAAK3D,EAAS,CACrBA,EAAQ,KAAK,YAAY,CAC3B,CCnIO,MAAM+D,GAAkB,CAC7B,KAAM,kBACN,SAAUC,EACZ,EAOA,SAASA,GAAwBhE,EAASpK,EAAIkM,EAAK,CACjD,OAAO3nH,EAYP,SAASA,EAAM7qI,EAAM,CACnB,OAAA0wP,EAAQ,MAAM,iBAAiB,EAC/BA,EAAQ,MAAM,cAAc,EAC5BA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,cAAc,EACpB4C,CACT,CAYA,SAASA,EAAOtzP,EAAM,CAEpB,OAAIkwP,GAAiBlwP,CAAI,GACvB0wP,EAAQ,MAAM,sBAAsB,EACpCA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,sBAAsB,EACnCA,EAAQ,KAAK,iBAAiB,EACvBpK,GAEFkM,EAAIxyP,CAAI,CACjB,CACF,CClDO,MAAM4uP,GAAqB,CAChC,KAAM,qBACN,SAAU+F,EACZ,EAOA,SAASA,GAA2BjE,EAASpK,EAAIkM,EAAK,CACpD,MAAM/6E,EAAO,KACb,IAAI7wJ,EAAO,EAEPknB,EAEAwjG,EACJ,OAAOzG,EAgBP,SAASA,EAAM7qI,EAAM,CACnB,OAAA0wP,EAAQ,MAAM,oBAAoB,EAClCA,EAAQ,MAAM,0BAA0B,EACxCA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,0BAA0B,EAChCnwK,CACT,CAiBA,SAASA,EAAKvgF,EAAM,CAClB,OAAIA,IAAS,IACX0wP,EAAQ,MAAM,iCAAiC,EAC/CA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,iCAAiC,EACvCkE,IAETlE,EAAQ,MAAM,yBAAyB,EACvC5iN,EAAM,GACNwjG,EAAOu+G,GACA9xP,EAAMiC,CAAI,EACnB,CAcA,SAAS40P,EAAQ50P,EAAM,CACrB,OAAIA,IAAS,IAAMA,IAAS,KAC1B0wP,EAAQ,MAAM,qCAAqC,EACnDA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,qCAAqC,EAClDA,EAAQ,MAAM,yBAAyB,EACvC5iN,EAAM,EACNwjG,EAAO2+G,GACAlyP,IAET2yP,EAAQ,MAAM,yBAAyB,EACvC5iN,EAAM,EACNwjG,EAAO0+G,GACAjyP,EAAMiC,CAAI,EACnB,CAmBA,SAASjC,EAAMiC,EAAM,CACnB,GAAIA,IAAS,IAAM4mB,EAAM,CACvB,MAAM6P,EAAQi6N,EAAQ,KAAK,yBAAyB,EACpD,OAAIp/G,IAASu+G,IAAqB,CAAClB,GAA8Bl3E,EAAK,eAAehhJ,CAAK,CAAC,EAClF+7N,EAAIxyP,CAAI,GAKjB0wP,EAAQ,MAAM,0BAA0B,EACxCA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,0BAA0B,EACvCA,EAAQ,KAAK,oBAAoB,EAC1BpK,EACT,CACA,OAAIh1G,EAAKtxI,CAAI,GAAK4mB,IAASknB,GACzB4iN,EAAQ,QAAQ1wP,CAAI,EACbjC,GAEFy0P,EAAIxyP,CAAI,CACjB,CACF,CCvIA,MAAM60P,GAAsB,CAC1B,QAAS,GACT,SAAUC,EACZ,EAGaC,GAAa,CACxB,SAAU,GACV,KAAM,aACN,SAAUC,EACZ,EAOA,SAASA,GAAmBtE,EAASpK,EAAIkM,EAAK,CAC5C,MAAM/6E,EAAO,KAEPw9E,EAAa,CACjB,QAAS,GACT,SAAUC,CACd,EACE,IAAIC,EAAgB,EAChBC,EAAW,EAEX/B,EACJ,OAAOxoH,EAcP,SAASA,EAAM7qI,EAAM,CAEnB,OAAOq1P,EAAmBr1P,CAAI,CAChC,CAcA,SAASq1P,EAAmBr1P,EAAM,CAChC,MAAMs1P,EAAO79E,EAAK,OAAOA,EAAK,OAAO,OAAS,CAAC,EAC/C,OAAA09E,EAAgBG,GAAQA,EAAK,CAAC,EAAE,OAAS,aAAeA,EAAK,CAAC,EAAE,eAAeA,EAAK,CAAC,EAAG,EAAI,EAAE,OAAS,EACvGjC,EAASrzP,EACT0wP,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,MAAM,iBAAiB,EAC/BA,EAAQ,MAAM,yBAAyB,EAChC6E,EAAav1P,CAAI,CAC1B,CAcA,SAASu1P,EAAav1P,EAAM,CAC1B,OAAIA,IAASqzP,GACX+B,IACA1E,EAAQ,QAAQ1wP,CAAI,EACbu1P,GAELH,EAAW,EACN5C,EAAIxyP,CAAI,GAEjB0wP,EAAQ,KAAK,yBAAyB,EAC/BL,GAAcrwP,CAAI,EAAIywP,GAAaC,EAAS8E,EAAY,YAAY,EAAEx1P,CAAI,EAAIw1P,EAAWx1P,CAAI,EACtG,CAcA,SAASw1P,EAAWx1P,EAAM,CACxB,OAAIA,IAAS,MAAQmwP,GAAmBnwP,CAAI,GAC1C0wP,EAAQ,KAAK,iBAAiB,EACvBj5E,EAAK,UAAY6uE,EAAGtmP,CAAI,EAAI0wP,EAAQ,MAAMmE,GAAqBY,EAAgBlC,CAAK,EAAEvzP,CAAI,IAEnG0wP,EAAQ,MAAM,qBAAqB,EACnCA,EAAQ,MAAM,cAAe,CAC3B,YAAa,QACnB,CAAK,EACM1uN,EAAKhiC,CAAI,EAClB,CAcA,SAASgiC,EAAKhiC,EAAM,CAClB,OAAIA,IAAS,MAAQmwP,GAAmBnwP,CAAI,GAC1C0wP,EAAQ,KAAK,aAAa,EAC1BA,EAAQ,KAAK,qBAAqB,EAC3B8E,EAAWx1P,CAAI,GAEpBqwP,GAAcrwP,CAAI,GACpB0wP,EAAQ,KAAK,aAAa,EAC1BA,EAAQ,KAAK,qBAAqB,EAC3BD,GAAaC,EAASgF,EAAY,YAAY,EAAE11P,CAAI,GAEzDA,IAAS,IAAMA,IAASqzP,EACnBb,EAAIxyP,CAAI,GAEjB0wP,EAAQ,QAAQ1wP,CAAI,EACbgiC,EACT,CAcA,SAAS0zN,EAAW11P,EAAM,CACxB,OAAIA,IAAS,MAAQmwP,GAAmBnwP,CAAI,EACnCw1P,EAAWx1P,CAAI,GAExB0wP,EAAQ,MAAM,qBAAqB,EACnCA,EAAQ,MAAM,cAAe,CAC3B,YAAa,QACnB,CAAK,EACM77J,EAAK70F,CAAI,EAClB,CAcA,SAAS60F,EAAK70F,EAAM,CAClB,OAAIA,IAAS,MAAQmwP,GAAmBnwP,CAAI,GAC1C0wP,EAAQ,KAAK,aAAa,EAC1BA,EAAQ,KAAK,qBAAqB,EAC3B8E,EAAWx1P,CAAI,GAEpBA,IAAS,IAAMA,IAASqzP,EACnBb,EAAIxyP,CAAI,GAEjB0wP,EAAQ,QAAQ1wP,CAAI,EACb60F,EACT,CAeA,SAAS4gK,EAAez1P,EAAM,CAC5B,OAAO0wP,EAAQ,QAAQuE,EAAY1B,EAAOoC,CAAa,EAAE31P,CAAI,CAC/D,CAcA,SAAS21P,EAAc31P,EAAM,CAC3B,OAAA0wP,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,YAAY,EAClBE,CACT,CAcA,SAASA,EAAa5wP,EAAM,CAC1B,OAAOm1P,EAAgB,GAAK9E,GAAcrwP,CAAI,EAAIywP,GAAaC,EAASkF,EAAoB,aAAcT,EAAgB,CAAC,EAAEn1P,CAAI,EAAI41P,EAAmB51P,CAAI,CAC9J,CAcA,SAAS41P,EAAmB51P,EAAM,CAChC,OAAIA,IAAS,MAAQmwP,GAAmBnwP,CAAI,EACnC0wP,EAAQ,MAAMmE,GAAqBY,EAAgBlC,CAAK,EAAEvzP,CAAI,GAEvE0wP,EAAQ,MAAM,eAAe,EACtBmF,EAAa71P,CAAI,EAC1B,CAcA,SAAS61P,EAAa71P,EAAM,CAC1B,OAAIA,IAAS,MAAQmwP,GAAmBnwP,CAAI,GAC1C0wP,EAAQ,KAAK,eAAe,EACrBkF,EAAmB51P,CAAI,IAEhC0wP,EAAQ,QAAQ1wP,CAAI,EACb61P,EACT,CAcA,SAAStC,EAAMvzP,EAAM,CACnB,OAAA0wP,EAAQ,KAAK,YAAY,EAClBpK,EAAGtmP,CAAI,CAChB,CAOA,SAASk1P,EAAmBxE,EAASpK,EAAIkM,EAAK,CAC5C,IAAI5rO,EAAO,EACX,OAAOkvO,EAOP,SAASA,EAAY91P,EAAM,CACzB,OAAA0wP,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,YAAY,EAClB7lH,CACT,CAcA,SAASA,EAAM7qI,EAAM,CAInB,OAAA0wP,EAAQ,MAAM,iBAAiB,EACxBL,GAAcrwP,CAAI,EAAIywP,GAAaC,EAASqF,EAAqB,aAAct+E,EAAK,OAAO,WAAW,QAAQ,KAAK,SAAS,cAAc,EAAI,OAAY,CAAC,EAAEz3K,CAAI,EAAI+1P,EAAoB/1P,CAAI,CACtM,CAcA,SAAS+1P,EAAoB/1P,EAAM,CACjC,OAAIA,IAASqzP,GACX3C,EAAQ,MAAM,yBAAyB,EAChCsF,EAAch2P,CAAI,GAEpBwyP,EAAIxyP,CAAI,CACjB,CAcA,SAASg2P,EAAch2P,EAAM,CAC3B,OAAIA,IAASqzP,GACXzsO,IACA8pO,EAAQ,QAAQ1wP,CAAI,EACbg2P,GAELpvO,GAAQwuO,GACV1E,EAAQ,KAAK,yBAAyB,EAC/BL,GAAcrwP,CAAI,EAAIywP,GAAaC,EAASuF,EAAoB,YAAY,EAAEj2P,CAAI,EAAIi2P,EAAmBj2P,CAAI,GAE/GwyP,EAAIxyP,CAAI,CACjB,CAcA,SAASi2P,EAAmBj2P,EAAM,CAChC,OAAIA,IAAS,MAAQmwP,GAAmBnwP,CAAI,GAC1C0wP,EAAQ,KAAK,iBAAiB,EACvBpK,EAAGtmP,CAAI,GAETwyP,EAAIxyP,CAAI,CACjB,CACF,CACF,CAOA,SAAS80P,GAA4BpE,EAASpK,EAAIkM,EAAK,CACrD,MAAM/6E,EAAO,KACb,OAAO5sC,EAOP,SAASA,EAAM7qI,EAAM,CACnB,OAAIA,IAAS,KACJwyP,EAAIxyP,CAAI,GAEjB0wP,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,YAAY,EAClBK,EACT,CAOA,SAASA,EAAU/wP,EAAM,CACvB,OAAOy3K,EAAK,OAAO,KAAKA,EAAK,IAAG,EAAG,IAAI,EAAI+6E,EAAIxyP,CAAI,EAAIsmP,EAAGtmP,CAAI,CAChE,CACF,CC/bO,MAAMk2P,GAAe,CAC1B,KAAM,eACN,SAAUC,EACZ,EAGMC,GAAe,CACnB,QAAS,GACT,SAAUC,EACZ,EAOA,SAASF,GAAqBzF,EAASpK,EAAIkM,EAAK,CAC9C,MAAM/6E,EAAO,KACb,OAAO5sC,EAgBP,SAASA,EAAM7qI,EAAM,CAGnB,OAAA0wP,EAAQ,MAAM,cAAc,EAGrBD,GAAaC,EAAS4F,EAAa,aAAc,CAAK,EAAEt2P,CAAI,CACrE,CAYA,SAASs2P,EAAYt2P,EAAM,CACzB,MAAMs1P,EAAO79E,EAAK,OAAOA,EAAK,OAAO,OAAS,CAAC,EAC/C,OAAO69E,GAAQA,EAAK,CAAC,EAAE,OAAS,cAAgBA,EAAK,CAAC,EAAE,eAAeA,EAAK,CAAC,EAAG,EAAI,EAAE,QAAU,EAAIiB,EAAQv2P,CAAI,EAAIwyP,EAAIxyP,CAAI,CAC9H,CAYA,SAASu2P,EAAQv2P,EAAM,CACrB,OAAIA,IAAS,KACJuzP,EAAMvzP,CAAI,EAEfmwP,GAAmBnwP,CAAI,EAClB0wP,EAAQ,QAAQ0F,GAAcG,EAAShD,CAAK,EAAEvzP,CAAI,GAE3D0wP,EAAQ,MAAM,eAAe,EACtB4C,EAAOtzP,CAAI,EACpB,CAYA,SAASszP,EAAOtzP,EAAM,CACpB,OAAIA,IAAS,MAAQmwP,GAAmBnwP,CAAI,GAC1C0wP,EAAQ,KAAK,eAAe,EACrB6F,EAAQv2P,CAAI,IAErB0wP,EAAQ,QAAQ1wP,CAAI,EACbszP,EACT,CAGA,SAASC,EAAMvzP,EAAM,CACnB,OAAA0wP,EAAQ,KAAK,cAAc,EAIpBpK,EAAGtmP,CAAI,CAChB,CACF,CAOA,SAASq2P,GAAqB3F,EAASpK,EAAIkM,EAAK,CAC9C,MAAM/6E,EAAO,KACb,OAAO2+E,EAaP,SAASA,EAAap2P,EAAM,CAG1B,OAAIy3K,EAAK,OAAO,KAAKA,EAAK,IAAG,EAAG,IAAI,EAC3B+6E,EAAIxyP,CAAI,EAEbmwP,GAAmBnwP,CAAI,GACzB0wP,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,YAAY,EAClB0F,GASF3F,GAAaC,EAAS4F,EAAa,aAAc,CAAK,EAAEt2P,CAAI,CACrE,CAYA,SAASs2P,EAAYt2P,EAAM,CACzB,MAAMs1P,EAAO79E,EAAK,OAAOA,EAAK,OAAO,OAAS,CAAC,EAC/C,OAAO69E,GAAQA,EAAK,CAAC,EAAE,OAAS,cAAgBA,EAAK,CAAC,EAAE,eAAeA,EAAK,CAAC,EAAG,EAAI,EAAE,QAAU,EAAIhP,EAAGtmP,CAAI,EAAImwP,GAAmBnwP,CAAI,EAAIo2P,EAAap2P,CAAI,EAAIwyP,EAAIxyP,CAAI,CACzK,CACF,CClKO,MAAMw2P,GAAW,CACtB,KAAM,WACR,SAAEt1N,GACA,QAASu1N,GACT,SAAUC,EACZ,EAIA,SAASD,GAAgB11P,EAAQ,CAC/B,IAAI41P,EAAgB51P,EAAO,OAAS,EAChC61P,EAAiB,EAEjBr1P,EAEAs1P,EAGJ,IAAK91P,EAAO61P,CAAc,EAAE,CAAC,EAAE,OAAS,cAAgB71P,EAAO61P,CAAc,EAAE,CAAC,EAAE,OAAS,WAAa71P,EAAO41P,CAAa,EAAE,CAAC,EAAE,OAAS,cAAgB51P,EAAO41P,CAAa,EAAE,CAAC,EAAE,OAAS,UAI1L,IAHAp1P,EAAQq1P,EAGD,EAAEr1P,EAAQo1P,GACf,GAAI51P,EAAOQ,CAAK,EAAE,CAAC,EAAE,OAAS,eAAgB,CAE5CR,EAAO61P,CAAc,EAAE,CAAC,EAAE,KAAO,kBACjC71P,EAAO41P,CAAa,EAAE,CAAC,EAAE,KAAO,kBAChCC,GAAkB,EAClBD,GAAiB,EACjB,KACF,EAOJ,IAFAp1P,EAAQq1P,EAAiB,EACzBD,IACO,EAAEp1P,GAASo1P,GACZE,IAAU,OACRt1P,IAAUo1P,GAAiB51P,EAAOQ,CAAK,EAAE,CAAC,EAAE,OAAS,eACvDs1P,EAAQt1P,IAEDA,IAAUo1P,GAAiB51P,EAAOQ,CAAK,EAAE,CAAC,EAAE,OAAS,gBAC9DR,EAAO81P,CAAK,EAAE,CAAC,EAAE,KAAO,eACpBt1P,IAAUs1P,EAAQ,IACpB91P,EAAO81P,CAAK,EAAE,CAAC,EAAE,IAAM91P,EAAOQ,EAAQ,CAAC,EAAE,CAAC,EAAE,IAC5CR,EAAO,OAAO81P,EAAQ,EAAGt1P,EAAQs1P,EAAQ,CAAC,EAC1CF,GAAiBp1P,EAAQs1P,EAAQ,EACjCt1P,EAAQs1P,EAAQ,GAElBA,EAAQ,QAGZ,OAAO91P,CACT,CAOA,SAASmgC,GAASlhC,EAAM,CAEtB,OAAOA,IAAS,IAAM,KAAK,OAAO,KAAK,OAAO,OAAS,CAAC,EAAE,CAAC,EAAE,OAAS,iBACxE,CAOA,SAAS02P,GAAiBhG,EAASpK,EAAIkM,EAAK,CAE1C,IAAI4C,EAAW,EAEXxuO,EAEA6P,EACJ,OAAOo0G,EAcP,SAASA,EAAM7qI,EAAM,CACnB,OAAA0wP,EAAQ,MAAM,UAAU,EACxBA,EAAQ,MAAM,kBAAkB,EACzB6E,EAAav1P,CAAI,CAC1B,CAYA,SAASu1P,EAAav1P,EAAM,CAC1B,OAAIA,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EACpBo1P,IACOG,IAET7E,EAAQ,KAAK,kBAAkB,EACxBoG,EAAQ92P,CAAI,EACrB,CAYA,SAAS82P,EAAQ92P,EAAM,CAErB,OAAIA,IAAS,KACJwyP,EAAIxyP,CAAI,EAMbA,IAAS,IACX0wP,EAAQ,MAAM,OAAO,EACrBA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,OAAO,EACboG,GAIL92P,IAAS,IACXy2B,EAAQi6N,EAAQ,MAAM,kBAAkB,EACxC9pO,EAAO,EACAovO,EAAch2P,CAAI,GAEvBmwP,GAAmBnwP,CAAI,GACzB0wP,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,YAAY,EAClBoG,IAITpG,EAAQ,MAAM,cAAc,EACrB7yP,EAAKmC,CAAI,EAClB,CAYA,SAASnC,EAAKmC,EAAM,CAClB,OAAIA,IAAS,MAAQA,IAAS,IAAMA,IAAS,IAAMmwP,GAAmBnwP,CAAI,GACxE0wP,EAAQ,KAAK,cAAc,EACpBoG,EAAQ92P,CAAI,IAErB0wP,EAAQ,QAAQ1wP,CAAI,EACbnC,EACT,CAYA,SAASm4P,EAAch2P,EAAM,CAE3B,OAAIA,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EACpB4mB,IACOovO,GAILpvO,IAASwuO,GACX1E,EAAQ,KAAK,kBAAkB,EAC/BA,EAAQ,KAAK,UAAU,EAChBpK,EAAGtmP,CAAI,IAIhBy2B,EAAM,KAAO,eACN54B,EAAKmC,CAAI,EAClB,CACF,CCnMO,MAAM+2P,EAAa,CAOxB,YAAYC,EAAS,CAEnB,KAAK,KAAOA,EAAU,CAAC,GAAGA,CAAO,EAAI,CAAA,EAErC,KAAK,MAAQ,CAAA,CACf,CAWA,IAAIz1P,EAAO,CACT,GAAIA,EAAQ,GAAKA,GAAS,KAAK,KAAK,OAAS,KAAK,MAAM,OACtD,MAAM,IAAI,WAAW,wBAA0BA,EAAQ,kCAAoC,KAAK,KAAK,OAAS,KAAK,MAAM,QAAU,GAAG,EAExI,OAAIA,EAAQ,KAAK,KAAK,OAAe,KAAK,KAAKA,CAAK,EAC7C,KAAK,MAAM,KAAK,MAAM,OAASA,EAAQ,KAAK,KAAK,OAAS,CAAC,CACpE,CAMA,IAAI,QAAS,CACX,OAAO,KAAK,KAAK,OAAS,KAAK,MAAM,MACvC,CASA,OAAQ,CACN,YAAK,UAAU,CAAC,EACT,KAAK,MAAM,IAAG,CACvB,CAaA,MAAMspI,EAAO3rG,EAAK,CAEhB,MAAM+3N,EAAO/3N,GAAoC,OAAO,kBACxD,OAAI+3N,EAAO,KAAK,KAAK,OACZ,KAAK,KAAK,MAAMpsH,EAAOosH,CAAI,EAEhCpsH,EAAQ,KAAK,KAAK,OACb,KAAK,MAAM,MAAM,KAAK,MAAM,OAASosH,EAAO,KAAK,KAAK,OAAQ,KAAK,MAAM,OAASpsH,EAAQ,KAAK,KAAK,MAAM,EAAE,QAAO,EAErH,KAAK,KAAK,MAAMA,CAAK,EAAE,OAAO,KAAK,MAAM,MAAM,KAAK,MAAM,OAASosH,EAAO,KAAK,KAAK,MAAM,EAAE,SAAS,CAC9G,CAsBA,OAAOpsH,EAAOqsH,EAAar2J,EAAO,CAEhC,MAAMt5F,EAAQ2vP,GAAe,EAC7B,KAAK,UAAU,KAAK,MAAMrsH,CAAK,CAAC,EAChC,MAAMssH,EAAU,KAAK,MAAM,OAAO,KAAK,MAAM,OAAS5vP,EAAO,OAAO,iBAAiB,EACrF,OAAIs5F,GAAOu2J,GAAY,KAAK,KAAMv2J,CAAK,EAChCs2J,EAAQ,QAAO,CACxB,CAUA,KAAM,CACJ,YAAK,UAAU,OAAO,iBAAiB,EAChC,KAAK,KAAK,IAAG,CACtB,CAWA,KAAK7gO,EAAM,CACT,KAAK,UAAU,OAAO,iBAAiB,EACvC,KAAK,KAAK,KAAKA,CAAI,CACrB,CAWA,SAASuqE,EAAO,CACd,KAAK,UAAU,OAAO,iBAAiB,EACvCu2J,GAAY,KAAK,KAAMv2J,CAAK,CAC9B,CAWA,QAAQvqE,EAAM,CACZ,KAAK,UAAU,CAAC,EAChB,KAAK,MAAM,KAAKA,CAAI,CACtB,CAWA,YAAYuqE,EAAO,CACjB,KAAK,UAAU,CAAC,EAChBu2J,GAAY,KAAK,MAAOv2J,EAAM,QAAO,CAAE,CACzC,CAcA,UAAU7zF,EAAG,CACX,GAAI,EAAAA,IAAM,KAAK,KAAK,QAAUA,EAAI,KAAK,KAAK,QAAU,KAAK,MAAM,SAAW,GAAKA,EAAI,GAAK,KAAK,KAAK,SAAW,GAC/G,GAAIA,EAAI,KAAK,KAAK,OAAQ,CAExB,MAAMmqP,EAAU,KAAK,KAAK,OAAOnqP,EAAG,OAAO,iBAAiB,EAC5DoqP,GAAY,KAAK,MAAOD,EAAQ,QAAO,CAAE,CAC3C,KAAO,CAEL,MAAMA,EAAU,KAAK,MAAM,OAAO,KAAK,KAAK,OAAS,KAAK,MAAM,OAASnqP,EAAG,OAAO,iBAAiB,EACpGoqP,GAAY,KAAK,KAAMD,EAAQ,QAAO,CAAE,CAC1C,CACF,CACF,CAcA,SAASC,GAAYpyN,EAAM5P,EAAO,CAEhC,IAAI25N,EAAa,EACjB,GAAI35N,EAAM,OAAS,IACjB4P,EAAK,KAAK,GAAG5P,CAAK,MAElB,MAAO25N,EAAa35N,EAAM,QACxB4P,EAAK,KAAK,GAAG5P,EAAM,MAAM25N,EAAYA,EAAa,GAAK,CAAC,EACxDA,GAAc,GAGpB,CCvOO,SAASsI,GAAYC,EAAa,CAEvC,MAAMC,EAAQ,CAAA,EACd,IAAIh2P,EAAQ,GAERN,EAEAu2P,EAEAC,EAEAC,EAEA1I,EAEA2I,EAEA1kF,EACJ,MAAMlyK,EAAS,IAAIg2P,GAAaO,CAAW,EAC3C,KAAO,EAAE/1P,EAAQR,EAAO,QAAQ,CAC9B,KAAOQ,KAASg2P,GACdh2P,EAAQg2P,EAAMh2P,CAAK,EAMrB,GAJAN,EAAQF,EAAO,IAAIQ,CAAK,EAIpBA,GAASN,EAAM,CAAC,EAAE,OAAS,aAAeF,EAAO,IAAIQ,EAAQ,CAAC,EAAE,CAAC,EAAE,OAAS,mBAC9Eo2P,EAAY12P,EAAM,CAAC,EAAE,WAAW,OAChCw2P,EAAa,EACTA,EAAaE,EAAU,QAAUA,EAAUF,CAAU,EAAE,CAAC,EAAE,OAAS,oBACrEA,GAAc,GAEZA,EAAaE,EAAU,QAAUA,EAAUF,CAAU,EAAE,CAAC,EAAE,OAAS,WACrE,KAAO,EAAEA,EAAaE,EAAU,QAC1BA,EAAUF,CAAU,EAAE,CAAC,EAAE,OAAS,WAGlCE,EAAUF,CAAU,EAAE,CAAC,EAAE,OAAS,cACpCE,EAAUF,CAAU,EAAE,CAAC,EAAE,4BAA8B,GACvDA,KAOR,GAAIx2P,EAAM,CAAC,IAAM,QACXA,EAAM,CAAC,EAAE,cACX,OAAO,OAAOs2P,EAAOK,GAAW72P,EAAQQ,CAAK,CAAC,EAC9CA,EAAQg2P,EAAMh2P,CAAK,EACnB0xK,EAAO,YAIFhyK,EAAM,CAAC,EAAE,WAAY,CAG5B,IAFAw2P,EAAal2P,EACbi2P,EAAY,OACLC,KAEL,GADAC,EAAa32P,EAAO,IAAI02P,CAAU,EAC9BC,EAAW,CAAC,EAAE,OAAS,cAAgBA,EAAW,CAAC,EAAE,OAAS,kBAC5DA,EAAW,CAAC,IAAM,UAChBF,IACFz2P,EAAO,IAAIy2P,CAAS,EAAE,CAAC,EAAE,KAAO,mBAElCE,EAAW,CAAC,EAAE,KAAO,aACrBF,EAAYC,WAEL,EAAAC,EAAW,CAAC,EAAE,OAAS,cAAgBA,EAAW,CAAC,EAAE,OAAS,kBAGvE,MAGAF,IAEFv2P,EAAM,CAAC,EAAE,IAAM,CACb,GAAGF,EAAO,IAAIy2P,CAAS,EAAE,CAAC,EAAE,KACtC,EAGQxI,EAAajuP,EAAO,MAAMy2P,EAAWj2P,CAAK,EAC1CytP,EAAW,QAAQ/tP,CAAK,EACxBF,EAAO,OAAOy2P,EAAWj2P,EAAQi2P,EAAY,EAAGxI,CAAU,EAE9D,CACF,CAGA,OAAAH,GAAOyI,EAAa,EAAG,OAAO,kBAAmBv2P,EAAO,MAAM,CAAC,CAAC,EACzD,CAACkyK,CACV,CAYA,SAAS2kF,GAAW72P,EAAQ82P,EAAY,CACtC,MAAMphO,EAAQ11B,EAAO,IAAI82P,CAAU,EAAE,CAAC,EAChCxgN,EAAUt2C,EAAO,IAAI82P,CAAU,EAAE,CAAC,EACxC,IAAIz7B,EAAgBy7B,EAAa,EAEjC,MAAMC,EAAiB,CAAA,EACvB,IAAIC,EAAYthO,EAAM,WACjBshO,IACHA,EAAY1gN,EAAQ,OAAO5gB,EAAM,WAAW,EAAEA,EAAM,KAAK,EACrDA,EAAM,2BACRshO,EAAU,yBAA2B,KAGzC,MAAMC,EAAcD,EAAU,OAExBR,EAAQ,CAAA,EAERU,EAAO,CAAA,EAEb,IAAI3F,EAEApxN,EACA3/B,EAAQ,GAER7B,EAAU+2B,EACVyhO,EAAS,EACTrtH,EAAQ,EACZ,MAAMstH,EAAS,CAACttH,CAAK,EAIrB,KAAOnrI,GAAS,CAEd,KAAOqB,EAAO,IAAI,EAAEq7N,CAAa,EAAE,CAAC,IAAM18N,GAAS,CAGnDo4P,EAAe,KAAK17B,CAAa,EAC5B18N,EAAQ,aACX4yP,EAASj7M,EAAQ,YAAY33C,CAAO,EAC/BA,EAAQ,MACX4yP,EAAO,KAAK,IAAI,EAEdpxN,GACF62N,EAAU,WAAWr4P,EAAQ,KAAK,EAEhCA,EAAQ,8BACVq4P,EAAU,mCAAqC,IAEjDA,EAAU,MAAMzF,CAAM,EAClB5yP,EAAQ,8BACVq4P,EAAU,mCAAqC,SAKnD72N,EAAWxhC,EACXA,EAAUA,EAAQ,IACpB,CAKA,IADAA,EAAU+2B,EACH,EAAEl1B,EAAQy2P,EAAY,QAG3BA,EAAYz2P,CAAK,EAAE,CAAC,IAAM,QAAUy2P,EAAYz2P,EAAQ,CAAC,EAAE,CAAC,IAAM,SAAWy2P,EAAYz2P,CAAK,EAAE,CAAC,EAAE,OAASy2P,EAAYz2P,EAAQ,CAAC,EAAE,CAAC,EAAE,MAAQy2P,EAAYz2P,CAAK,EAAE,CAAC,EAAE,MAAM,OAASy2P,EAAYz2P,CAAK,EAAE,CAAC,EAAE,IAAI,OAC3MspI,EAAQtpI,EAAQ,EAChB42P,EAAO,KAAKttH,CAAK,EAEjBnrI,EAAQ,WAAa,OACrBA,EAAQ,SAAW,OACnBA,EAAUA,EAAQ,MAqBtB,IAhBAq4P,EAAU,OAAS,CAAA,EAKfr4P,GAEFA,EAAQ,WAAa,OACrBA,EAAQ,SAAW,QAEnBy4P,EAAO,IAAG,EAKZ52P,EAAQ42P,EAAO,OACR52P,KAAS,CACd,MAAMuS,EAAQkkP,EAAY,MAAMG,EAAO52P,CAAK,EAAG42P,EAAO52P,EAAQ,CAAC,CAAC,EAC1DspI,EAAQitH,EAAe,IAAG,EAChCP,EAAM,KAAK,CAAC1sH,EAAOA,EAAQ/2H,EAAM,OAAS,CAAC,CAAC,EAC5C/S,EAAO,OAAO8pI,EAAO,EAAG/2H,CAAK,CAC/B,CAGA,IAFAyjP,EAAM,QAAO,EACbh2P,EAAQ,GACD,EAAEA,EAAQg2P,EAAM,QACrBU,EAAKC,EAASX,EAAMh2P,CAAK,EAAE,CAAC,CAAC,EAAI22P,EAASX,EAAMh2P,CAAK,EAAE,CAAC,EACxD22P,GAAUX,EAAMh2P,CAAK,EAAE,CAAC,EAAIg2P,EAAMh2P,CAAK,EAAE,CAAC,EAAI,EAEhD,OAAO02P,CACT,CCjNO,MAAMr1N,GAAU,CACrB,QAASw1N,GACT,SAAUC,EACZ,EAGMC,GAAwB,CAC5B,QAAS,GACT,SAAUC,EACZ,EAQA,SAASH,GAAer3P,EAAQ,CAC9B,OAAAs2P,GAAYt2P,CAAM,EACXA,CACT,CAOA,SAASs3P,GAAgB3H,EAASpK,EAAI,CAEpC,IAAIplN,EACJ,OAAO6tN,EAYP,SAASA,EAAW/uP,EAAM,CACxB,OAAA0wP,EAAQ,MAAM,SAAS,EACvBxvN,EAAWwvN,EAAQ,MAAM,eAAgB,CACvC,YAAa,SACnB,CAAK,EACM8H,EAAYx4P,CAAI,CACzB,CAYA,SAASw4P,EAAYx4P,EAAM,CACzB,OAAIA,IAAS,KACJy4P,EAAWz4P,CAAI,EAKpBmwP,GAAmBnwP,CAAI,EAClB0wP,EAAQ,MAAM4H,GAAuBI,EAAiBD,CAAU,EAAEz4P,CAAI,GAI/E0wP,EAAQ,QAAQ1wP,CAAI,EACbw4P,EACT,CAOA,SAASC,EAAWz4P,EAAM,CACxB,OAAA0wP,EAAQ,KAAK,cAAc,EAC3BA,EAAQ,KAAK,SAAS,EACfpK,EAAGtmP,CAAI,CAChB,CAOA,SAAS04P,EAAgB14P,EAAM,CAC7B,OAAA0wP,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,cAAc,EAC3BxvN,EAAS,KAAOwvN,EAAQ,MAAM,eAAgB,CAC5C,YAAa,UACb,SAAAxvN,CACN,CAAK,EACDA,EAAWA,EAAS,KACbs3N,CACT,CACF,CAOA,SAASD,GAAqB7H,EAASpK,EAAIkM,EAAK,CAC9C,MAAM/6E,EAAO,KACb,OAAOkhF,EAOP,SAASA,EAAe34P,EAAM,CAC5B,OAAA0wP,EAAQ,KAAK,cAAc,EAC3BA,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,YAAY,EAClBD,GAAaC,EAASkI,EAAU,YAAY,CACrD,CAOA,SAASA,EAAS54P,EAAM,CACtB,GAAIA,IAAS,MAAQmwP,GAAmBnwP,CAAI,EAC1C,OAAOwyP,EAAIxyP,CAAI,EAKjB,MAAMs1P,EAAO79E,EAAK,OAAOA,EAAK,OAAO,OAAS,CAAC,EAC/C,MAAI,CAACA,EAAK,OAAO,WAAW,QAAQ,KAAK,SAAS,cAAc,GAAK69E,GAAQA,EAAK,CAAC,EAAE,OAAS,cAAgBA,EAAK,CAAC,EAAE,eAAeA,EAAK,CAAC,EAAG,EAAI,EAAE,QAAU,EACrJhP,EAAGtmP,CAAI,EAET0wP,EAAQ,UAAUj5E,EAAK,OAAO,WAAW,KAAM+6E,EAAKlM,CAAE,EAAEtmP,CAAI,CACrE,CACF,CCxHO,SAAS64P,GAAmBnI,EAASpK,EAAIkM,EAAKryP,EAAM24P,EAAaC,EAAmBC,EAASC,EAAYnrN,EAAK,CACnH,MAAMw6J,EAAQx6J,GAAO,OAAO,kBAC5B,IAAIorN,EAAU,EACd,OAAOruH,EAcP,SAASA,EAAM7qI,EAAM,CACnB,OAAIA,IAAS,IACX0wP,EAAQ,MAAMvwP,CAAI,EAClBuwP,EAAQ,MAAMoI,CAAW,EACzBpI,EAAQ,MAAMqI,CAAiB,EAC/BrI,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAKqI,CAAiB,EACvBI,GAILn5P,IAAS,MAAQA,IAAS,IAAMA,IAAS,IAAM+vP,GAAa/vP,CAAI,EAC3DwyP,EAAIxyP,CAAI,GAEjB0wP,EAAQ,MAAMvwP,CAAI,EAClBuwP,EAAQ,MAAMsI,CAAO,EACrBtI,EAAQ,MAAMuI,CAAU,EACxBvI,EAAQ,MAAM,cAAe,CAC3B,YAAa,QACnB,CAAK,EACMpiN,EAAItuC,CAAI,EACjB,CAYA,SAASm5P,EAAen5P,EAAM,CAC5B,OAAIA,IAAS,IACX0wP,EAAQ,MAAMqI,CAAiB,EAC/BrI,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAKqI,CAAiB,EAC9BrI,EAAQ,KAAKoI,CAAW,EACxBpI,EAAQ,KAAKvwP,CAAI,EACVmmP,IAEToK,EAAQ,MAAMuI,CAAU,EACxBvI,EAAQ,MAAM,cAAe,CAC3B,YAAa,QACnB,CAAK,EACM0I,EAASp5P,CAAI,EACtB,CAYA,SAASo5P,EAASp5P,EAAM,CACtB,OAAIA,IAAS,IACX0wP,EAAQ,KAAK,aAAa,EAC1BA,EAAQ,KAAKuI,CAAU,EAChBE,EAAen5P,CAAI,GAExBA,IAAS,MAAQA,IAAS,IAAMmwP,GAAmBnwP,CAAI,EAClDwyP,EAAIxyP,CAAI,GAEjB0wP,EAAQ,QAAQ1wP,CAAI,EACbA,IAAS,GAAKq5P,EAAiBD,EACxC,CAYA,SAASC,EAAer5P,EAAM,CAC5B,OAAIA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IACzC0wP,EAAQ,QAAQ1wP,CAAI,EACbo5P,GAEFA,EAASp5P,CAAI,CACtB,CAYA,SAASsuC,EAAItuC,EAAM,CACjB,MAAI,CAACk5P,IAAYl5P,IAAS,MAAQA,IAAS,IAAMowP,GAA0BpwP,CAAI,IAC7E0wP,EAAQ,KAAK,aAAa,EAC1BA,EAAQ,KAAKuI,CAAU,EACvBvI,EAAQ,KAAKsI,CAAO,EACpBtI,EAAQ,KAAKvwP,CAAI,EACVmmP,EAAGtmP,CAAI,GAEZk5P,EAAU5wD,GAAStoM,IAAS,IAC9B0wP,EAAQ,QAAQ1wP,CAAI,EACpBk5P,IACO5qN,GAELtuC,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EACpBk5P,IACO5qN,GAMLtuC,IAAS,MAAQA,IAAS,IAAMA,IAAS,IAAM+vP,GAAa/vP,CAAI,EAC3DwyP,EAAIxyP,CAAI,GAEjB0wP,EAAQ,QAAQ1wP,CAAI,EACbA,IAAS,GAAKs5P,EAAYhrN,EACnC,CAYA,SAASgrN,EAAUt5P,EAAM,CACvB,OAAIA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IACzC0wP,EAAQ,QAAQ1wP,CAAI,EACbsuC,GAEFA,EAAItuC,CAAI,CACjB,CACF,CCpKO,SAASu5P,GAAa7I,EAASpK,EAAIkM,EAAKryP,EAAMq5P,EAAYP,EAAY,CAC3E,MAAMxhF,EAAO,KACb,IAAI7wJ,EAAO,EAEP2rO,EACJ,OAAO1nH,EAYP,SAASA,EAAM7qI,EAAM,CACnB,OAAA0wP,EAAQ,MAAMvwP,CAAI,EAClBuwP,EAAQ,MAAM8I,CAAU,EACxB9I,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK8I,CAAU,EACvB9I,EAAQ,MAAMuI,CAAU,EACjB1C,CACT,CAYA,SAASA,EAAQv2P,EAAM,CACrB,OAAI4mB,EAAO,KAAO5mB,IAAS,MAAQA,IAAS,IAAMA,IAAS,IAAM,CAACuyP,GAMlEvyP,IAAS,IAAM,CAAC4mB,GAAQ,2BAA4B6wJ,EAAK,OAAO,WACvD+6E,EAAIxyP,CAAI,EAEbA,IAAS,IACX0wP,EAAQ,KAAKuI,CAAU,EACvBvI,EAAQ,MAAM8I,CAAU,EACxB9I,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK8I,CAAU,EACvB9I,EAAQ,KAAKvwP,CAAI,EACVmmP,GAIL6J,GAAmBnwP,CAAI,GACzB0wP,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,YAAY,EAClB6F,IAET7F,EAAQ,MAAM,cAAe,CAC3B,YAAa,QACnB,CAAK,EACM+I,EAAYz5P,CAAI,EACzB,CAYA,SAASy5P,EAAYz5P,EAAM,CACzB,OAAIA,IAAS,MAAQA,IAAS,IAAMA,IAAS,IAAMmwP,GAAmBnwP,CAAI,GAAK4mB,IAAS,KACtF8pO,EAAQ,KAAK,aAAa,EACnB6F,EAAQv2P,CAAI,IAErB0wP,EAAQ,QAAQ1wP,CAAI,EACfuyP,IAAMA,EAAO,CAAClC,GAAcrwP,CAAI,GAC9BA,IAAS,GAAK05P,EAAcD,EACrC,CAYA,SAASC,EAAY15P,EAAM,CACzB,OAAIA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IACzC0wP,EAAQ,QAAQ1wP,CAAI,EACpB4mB,IACO6yO,GAEFA,EAAYz5P,CAAI,CACzB,CACF,CCzGO,SAAS25P,GAAajJ,EAASpK,EAAIkM,EAAKryP,EAAMq5P,EAAYP,EAAY,CAE3E,IAAI5F,EACJ,OAAOxoH,EAYP,SAASA,EAAM7qI,EAAM,CACnB,OAAIA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IACzC0wP,EAAQ,MAAMvwP,CAAI,EAClBuwP,EAAQ,MAAM8I,CAAU,EACxB9I,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK8I,CAAU,EACvBnG,EAASrzP,IAAS,GAAK,GAAKA,EACrBi/B,GAEFuzN,EAAIxyP,CAAI,CACjB,CAcA,SAASi/B,EAAMj/B,EAAM,CACnB,OAAIA,IAASqzP,GACX3C,EAAQ,MAAM8I,CAAU,EACxB9I,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK8I,CAAU,EACvB9I,EAAQ,KAAKvwP,CAAI,EACVmmP,IAEToK,EAAQ,MAAMuI,CAAU,EACjB1C,EAAQv2P,CAAI,EACrB,CAYA,SAASu2P,EAAQv2P,EAAM,CACrB,OAAIA,IAASqzP,GACX3C,EAAQ,KAAKuI,CAAU,EAChBh6N,EAAMo0N,CAAM,GAEjBrzP,IAAS,KACJwyP,EAAIxyP,CAAI,EAIbmwP,GAAmBnwP,CAAI,GAEzB0wP,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,YAAY,EAClBD,GAAaC,EAAS6F,EAAS,YAAY,IAEpD7F,EAAQ,MAAM,cAAe,CAC3B,YAAa,QACnB,CAAK,EACM4C,EAAOtzP,CAAI,EACpB,CAOA,SAASszP,EAAOtzP,EAAM,CACpB,OAAIA,IAASqzP,GAAUrzP,IAAS,MAAQmwP,GAAmBnwP,CAAI,GAC7D0wP,EAAQ,KAAK,aAAa,EACnB6F,EAAQv2P,CAAI,IAErB0wP,EAAQ,QAAQ1wP,CAAI,EACbA,IAAS,GAAKxB,EAAS80P,EAChC,CAYA,SAAS90P,EAAOwB,EAAM,CACpB,OAAIA,IAASqzP,GAAUrzP,IAAS,IAC9B0wP,EAAQ,QAAQ1wP,CAAI,EACbszP,GAEFA,EAAOtzP,CAAI,CACpB,CACF,CCrIO,SAAS45P,GAAkBlJ,EAASpK,EAAI,CAE7C,IAAIiM,EACJ,OAAO1nH,EAGP,SAASA,EAAM7qI,EAAM,CACnB,OAAImwP,GAAmBnwP,CAAI,GACzB0wP,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,YAAY,EACzB6B,EAAO,GACA1nH,GAELwlH,GAAcrwP,CAAI,EACbywP,GAAaC,EAAS7lH,EAAO0nH,EAAO,aAAe,YAAY,EAAEvyP,CAAI,EAEvEsmP,EAAGtmP,CAAI,CAChB,CACF,CC1BO,MAAM8mP,GAAa,CACxB,KAAM,aACN,SAAU+S,EACZ,EAGMC,GAAc,CAClB,QAAS,GACT,SAAUC,EACZ,EAOA,SAASF,GAAmBnJ,EAASpK,EAAIkM,EAAK,CAC5C,MAAM/6E,EAAO,KAEb,IAAIl3I,EACJ,OAAOsqG,EAYP,SAASA,EAAM7qI,EAAM,CAInB,OAAA0wP,EAAQ,MAAM,YAAY,EACnBlB,EAAOxvP,CAAI,CACpB,CAYA,SAASwvP,EAAOxvP,EAAM,CAGpB,OAAOu5P,GAAa,KAAK9hF,EAAMi5E,EAASsJ,EAExCxH,EAAK,kBAAmB,wBAAyB,uBAAuB,EAAExyP,CAAI,CAChF,CAYA,SAASg6P,EAAWh6P,EAAM,CAExB,OADAugC,EAAamvN,GAAoBj4E,EAAK,eAAeA,EAAK,OAAOA,EAAK,OAAO,OAAS,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAG,EAAE,CAAC,EACrGz3K,IAAS,IACX0wP,EAAQ,MAAM,kBAAkB,EAChCA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,kBAAkB,EACxBuJ,GAEFzH,EAAIxyP,CAAI,CACjB,CAYA,SAASi6P,EAAYj6P,EAAM,CAEzB,OAAOowP,GAA0BpwP,CAAI,EAAI45P,GAAkBlJ,EAASwJ,CAAiB,EAAEl6P,CAAI,EAAIk6P,EAAkBl6P,CAAI,CACvH,CAYA,SAASk6P,EAAkBl6P,EAAM,CAC/B,OAAO64P,GAAmBnI,EAASyJ,EAEnC3H,EAAK,wBAAyB,+BAAgC,qCAAsC,2BAA4B,6BAA6B,EAAExyP,CAAI,CACrK,CAYA,SAASm6P,EAAiBn6P,EAAM,CAC9B,OAAO0wP,EAAQ,QAAQoJ,GAAavG,EAAOA,CAAK,EAAEvzP,CAAI,CACxD,CAcA,SAASuzP,EAAMvzP,EAAM,CACnB,OAAOqwP,GAAcrwP,CAAI,EAAIywP,GAAaC,EAAS0J,EAAiB,YAAY,EAAEp6P,CAAI,EAAIo6P,EAAgBp6P,CAAI,CAChH,CAcA,SAASo6P,EAAgBp6P,EAAM,CAC7B,OAAIA,IAAS,MAAQmwP,GAAmBnwP,CAAI,GAC1C0wP,EAAQ,KAAK,YAAY,EAKzBj5E,EAAK,OAAO,QAAQ,KAAKl3I,CAAU,EAK5B+lN,EAAGtmP,CAAI,GAETwyP,EAAIxyP,CAAI,CACjB,CACF,CAOA,SAAS+5P,GAAoBrJ,EAASpK,EAAIkM,EAAK,CAC7C,OAAOsH,EAcP,SAASA,EAAY95P,EAAM,CACzB,OAAOowP,GAA0BpwP,CAAI,EAAI45P,GAAkBlJ,EAAS2J,CAAY,EAAEr6P,CAAI,EAAIwyP,EAAIxyP,CAAI,CACpG,CAaA,SAASq6P,EAAar6P,EAAM,CAC1B,OAAO25P,GAAajJ,EAAS4J,EAAY9H,EAAK,kBAAmB,wBAAyB,uBAAuB,EAAExyP,CAAI,CACzH,CAYA,SAASs6P,EAAWt6P,EAAM,CACxB,OAAOqwP,GAAcrwP,CAAI,EAAIywP,GAAaC,EAAS6J,EAA8B,YAAY,EAAEv6P,CAAI,EAAIu6P,EAA6Bv6P,CAAI,CAC1I,CAYA,SAASu6P,EAA6Bv6P,EAAM,CAC1C,OAAOA,IAAS,MAAQmwP,GAAmBnwP,CAAI,EAAIsmP,EAAGtmP,CAAI,EAAIwyP,EAAIxyP,CAAI,CACxE,CACF,CClPO,MAAMw6P,GAAkB,CAC7B,KAAM,kBACN,SAAUC,EACZ,EAOA,SAASA,GAAwB/J,EAASpK,EAAIkM,EAAK,CACjD,OAAO3nH,EAaP,SAASA,EAAM7qI,EAAM,CACnB,OAAA0wP,EAAQ,MAAM,iBAAiB,EAC/BA,EAAQ,QAAQ1wP,CAAI,EACbuzP,CACT,CAaA,SAASA,EAAMvzP,EAAM,CACnB,OAAImwP,GAAmBnwP,CAAI,GACzB0wP,EAAQ,KAAK,iBAAiB,EACvBpK,EAAGtmP,CAAI,GAETwyP,EAAIxyP,CAAI,CACjB,CACF,CC5CO,MAAM06P,GAAa,CACxB,KAAM,aACN,QAASC,GACT,SAAUC,EACZ,EAGA,SAASD,GAAkB55P,EAAQs2C,EAAS,CAC1C,IAAIohN,EAAa13P,EAAO,OAAS,EAC7B6vP,EAAe,EAEfhuN,EAEAtxB,EAGJ,OAAIvQ,EAAO6vP,CAAY,EAAE,CAAC,EAAE,OAAS,eACnCA,GAAgB,GAId6H,EAAa,EAAI7H,GAAgB7vP,EAAO03P,CAAU,EAAE,CAAC,EAAE,OAAS,eAClEA,GAAc,GAEZ13P,EAAO03P,CAAU,EAAE,CAAC,EAAE,OAAS,uBAAyB7H,IAAiB6H,EAAa,GAAKA,EAAa,EAAI7H,GAAgB7vP,EAAO03P,EAAa,CAAC,EAAE,CAAC,EAAE,OAAS,gBACjKA,GAAc7H,EAAe,IAAM6H,EAAa,EAAI,GAElDA,EAAa7H,IACfhuN,EAAU,CACR,KAAM,iBACN,MAAO7hC,EAAO6vP,CAAY,EAAE,CAAC,EAAE,MAC/B,IAAK7vP,EAAO03P,CAAU,EAAE,CAAC,EAAE,GACjC,EACInnP,EAAO,CACL,KAAM,YACN,MAAOvQ,EAAO6vP,CAAY,EAAE,CAAC,EAAE,MAC/B,IAAK7vP,EAAO03P,CAAU,EAAE,CAAC,EAAE,IAC3B,YAAa,MACnB,EACI5J,GAAO9tP,EAAQ6vP,EAAc6H,EAAa7H,EAAe,EAAG,CAAC,CAAC,QAAShuN,EAASyU,CAAO,EAAG,CAAC,QAAS/lC,EAAM+lC,CAAO,EAAG,CAAC,OAAQ/lC,EAAM+lC,CAAO,EAAG,CAAC,OAAQzU,EAASyU,CAAO,CAAC,CAAC,GAEnKt2C,CACT,CAOA,SAAS65P,GAAmBlK,EAASpK,EAAIkM,EAAK,CAC5C,IAAI5rO,EAAO,EACX,OAAOikH,EAYP,SAASA,EAAM7qI,EAAM,CAEnB,OAAA0wP,EAAQ,MAAM,YAAY,EACnBlB,EAAOxvP,CAAI,CACpB,CAYA,SAASwvP,EAAOxvP,EAAM,CACpB,OAAA0wP,EAAQ,MAAM,oBAAoB,EAC3B6E,EAAav1P,CAAI,CAC1B,CAYA,SAASu1P,EAAav1P,EAAM,CAC1B,OAAIA,IAAS,IAAM4mB,IAAS,GAC1B8pO,EAAQ,QAAQ1wP,CAAI,EACbu1P,GAILv1P,IAAS,MAAQowP,GAA0BpwP,CAAI,GACjD0wP,EAAQ,KAAK,oBAAoB,EAC1B6F,EAAQv2P,CAAI,GAEdwyP,EAAIxyP,CAAI,CACjB,CAYA,SAASu2P,EAAQv2P,EAAM,CACrB,OAAIA,IAAS,IACX0wP,EAAQ,MAAM,oBAAoB,EAC3BmK,EAAgB76P,CAAI,GAEzBA,IAAS,MAAQmwP,GAAmBnwP,CAAI,GAC1C0wP,EAAQ,KAAK,YAAY,EAIlBpK,EAAGtmP,CAAI,GAEZqwP,GAAcrwP,CAAI,EACbywP,GAAaC,EAAS6F,EAAS,YAAY,EAAEv2P,CAAI,GAK1D0wP,EAAQ,MAAM,gBAAgB,EACvB7yP,EAAKmC,CAAI,EAClB,CAcA,SAAS66P,EAAgB76P,EAAM,CAC7B,OAAIA,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EACb66P,IAETnK,EAAQ,KAAK,oBAAoB,EAC1B6F,EAAQv2P,CAAI,EACrB,CAYA,SAASnC,EAAKmC,EAAM,CAClB,OAAIA,IAAS,MAAQA,IAAS,IAAMowP,GAA0BpwP,CAAI,GAChE0wP,EAAQ,KAAK,gBAAgB,EACtB6F,EAAQv2P,CAAI,IAErB0wP,EAAQ,QAAQ1wP,CAAI,EACbnC,EACT,CACF,CCnLO,MAAMi9P,GAAiB,CAC5B,UACA,UACA,QACA,OACA,WACA,aACA,OACA,UACA,SACA,MACA,WACA,KACA,UACA,SACA,MACA,MACA,KACA,KACA,WACA,aACA,SACA,SACA,OACA,QACA,WACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,KACA,OACA,SACA,SACA,KACA,OACA,OACA,OACA,WACA,MACA,WACA,KACA,WACA,SACA,IACA,QACA,SACA,UACA,UACA,QACA,QACA,KACA,QACA,KACA,QACA,QACA,KACA,QACA,IACF,EAcaC,GAAe,CAAC,MAAO,SAAU,QAAS,UAAU,EC5EpDC,GAAW,CACtB,SAAU,GACV,KAAM,WACN,UAAWC,GACX,SAAUC,EACZ,EAGMC,GAAkB,CACtB,QAAS,GACT,SAAUC,EACZ,EACMC,GAA2B,CAC/B,QAAS,GACT,SAAUC,EACZ,EAGA,SAASL,GAAkBl6P,EAAQ,CACjC,IAAIQ,EAAQR,EAAO,OACnB,KAAOQ,KACD,EAAAR,EAAOQ,CAAK,EAAE,CAAC,IAAM,SAAWR,EAAOQ,CAAK,EAAE,CAAC,EAAE,OAAS,aAA9D,CAIF,OAAIA,EAAQ,GAAKR,EAAOQ,EAAQ,CAAC,EAAE,CAAC,EAAE,OAAS,eAE7CR,EAAOQ,CAAK,EAAE,CAAC,EAAE,MAAQR,EAAOQ,EAAQ,CAAC,EAAE,CAAC,EAAE,MAE9CR,EAAOQ,EAAQ,CAAC,EAAE,CAAC,EAAE,MAAQR,EAAOQ,EAAQ,CAAC,EAAE,CAAC,EAAE,MAElDR,EAAO,OAAOQ,EAAQ,EAAG,CAAC,GAErBR,CACT,CAOA,SAASm6P,GAAiBxK,EAASpK,EAAIkM,EAAK,CAC1C,MAAM/6E,EAAO,KAEb,IAAI47E,EAEAkI,EAEAngC,EAEA75N,EAEAi6P,EACJ,OAAO3wH,EAYP,SAASA,EAAM7qI,EAAM,CAEnB,OAAOwvP,EAAOxvP,CAAI,CACpB,CAYA,SAASwvP,EAAOxvP,EAAM,CACpB,OAAA0wP,EAAQ,MAAM,UAAU,EACxBA,EAAQ,MAAM,cAAc,EAC5BA,EAAQ,QAAQ1wP,CAAI,EACbugF,CACT,CAgBA,SAASA,EAAKvgF,EAAM,CAClB,OAAIA,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EACby7P,GAELz7P,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EACpBu7P,EAAa,GACNG,GAEL17P,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EACpBqzP,EAAS,EAMF57E,EAAK,UAAY6uE,EAAKqV,GAI3BhM,GAAW3vP,CAAI,GAEjB0wP,EAAQ,QAAQ1wP,CAAI,EACpBo7N,EAAS,OAAO,aAAap7N,CAAI,EAC1B47P,GAEFpJ,EAAIxyP,CAAI,CACjB,CAgBA,SAASy7P,EAAgBz7P,EAAM,CAC7B,OAAIA,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EACpBqzP,EAAS,EACFwI,GAEL77P,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EACpBqzP,EAAS,EACT9xP,EAAQ,EACDu6P,GAILnM,GAAW3vP,CAAI,GACjB0wP,EAAQ,QAAQ1wP,CAAI,EACpBqzP,EAAS,EAGF57E,EAAK,UAAY6uE,EAAKqV,GAExBnJ,EAAIxyP,CAAI,CACjB,CAYA,SAAS67P,EAAkB77P,EAAM,CAC/B,OAAIA,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EAGby3K,EAAK,UAAY6uE,EAAKqV,GAExBnJ,EAAIxyP,CAAI,CACjB,CAYA,SAAS87P,EAAgB97P,EAAM,CAC7B,MAAMjC,EAAQ,SACd,OAAIiC,IAASjC,EAAM,WAAWwD,GAAO,GACnCmvP,EAAQ,QAAQ1wP,CAAI,EAChBuB,IAAUxD,EAAM,OAGX05K,EAAK,UAAY6uE,EAAKyV,EAExBD,GAEFtJ,EAAIxyP,CAAI,CACjB,CAYA,SAAS07P,EAAc17P,EAAM,CAC3B,OAAI2vP,GAAW3vP,CAAI,GAEjB0wP,EAAQ,QAAQ1wP,CAAI,EACpBo7N,EAAS,OAAO,aAAap7N,CAAI,EAC1B47P,GAEFpJ,EAAIxyP,CAAI,CACjB,CAcA,SAAS47P,EAAQ57P,EAAM,CACrB,GAAIA,IAAS,MAAQA,IAAS,IAAMA,IAAS,IAAMowP,GAA0BpwP,CAAI,EAAG,CAClF,MAAMg8P,EAAQh8P,IAAS,GACjByL,EAAO2vN,EAAO,YAAW,EAC/B,MAAI,CAAC4gC,GAAS,CAACT,GAAcR,GAAa,SAAStvP,CAAI,GACrD4nP,EAAS,EAGF57E,EAAK,UAAY6uE,EAAGtmP,CAAI,EAAI+7P,EAAa/7P,CAAI,GAElD86P,GAAe,SAAS1/B,EAAO,YAAW,CAAE,GAC9Ci4B,EAAS,EACL2I,GACFtL,EAAQ,QAAQ1wP,CAAI,EACbi8P,GAKFxkF,EAAK,UAAY6uE,EAAGtmP,CAAI,EAAI+7P,EAAa/7P,CAAI,IAEtDqzP,EAAS,EAEF57E,EAAK,WAAa,CAACA,EAAK,OAAO,KAAKA,EAAK,IAAG,EAAG,IAAI,EAAI+6E,EAAIxyP,CAAI,EAAIu7P,EAAaW,EAAwBl8P,CAAI,EAAIm8P,EAA4Bn8P,CAAI,EACzJ,CAGA,OAAIA,IAAS,IAAM6vP,GAAkB7vP,CAAI,GACvC0wP,EAAQ,QAAQ1wP,CAAI,EACpBo7N,GAAU,OAAO,aAAap7N,CAAI,EAC3B47P,GAEFpJ,EAAIxyP,CAAI,CACjB,CAYA,SAASi8P,EAAiBj8P,EAAM,CAC9B,OAAIA,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EAGby3K,EAAK,UAAY6uE,EAAKyV,GAExBvJ,EAAIxyP,CAAI,CACjB,CAYA,SAASk8P,EAAwBl8P,EAAM,CACrC,OAAIqwP,GAAcrwP,CAAI,GACpB0wP,EAAQ,QAAQ1wP,CAAI,EACbk8P,GAEFE,EAAYp8P,CAAI,CACzB,CAyBA,SAASm8P,EAA4Bn8P,EAAM,CACzC,OAAIA,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EACbo8P,GAILp8P,IAAS,IAAMA,IAAS,IAAM2vP,GAAW3vP,CAAI,GAC/C0wP,EAAQ,QAAQ1wP,CAAI,EACbq8P,GAELhM,GAAcrwP,CAAI,GACpB0wP,EAAQ,QAAQ1wP,CAAI,EACbm8P,GAEFC,EAAYp8P,CAAI,CACzB,CAgBA,SAASq8P,EAAsBr8P,EAAM,CAEnC,OAAIA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAM6vP,GAAkB7vP,CAAI,GACpF0wP,EAAQ,QAAQ1wP,CAAI,EACbq8P,GAEFC,EAA2Bt8P,CAAI,CACxC,CAeA,SAASs8P,EAA2Bt8P,EAAM,CACxC,OAAIA,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EACbu8P,GAELlM,GAAcrwP,CAAI,GACpB0wP,EAAQ,QAAQ1wP,CAAI,EACbs8P,GAEFH,EAA4Bn8P,CAAI,CACzC,CAeA,SAASu8P,EAA6Bv8P,EAAM,CAC1C,OAAIA,IAAS,MAAQA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,GAClEwyP,EAAIxyP,CAAI,EAEbA,IAAS,IAAMA,IAAS,IAC1B0wP,EAAQ,QAAQ1wP,CAAI,EACpBw7P,EAAUx7P,EACHw8P,GAELnM,GAAcrwP,CAAI,GACpB0wP,EAAQ,QAAQ1wP,CAAI,EACbu8P,GAEFE,EAA+Bz8P,CAAI,CAC5C,CAcA,SAASw8P,EAA6Bx8P,EAAM,CAC1C,OAAIA,IAASw7P,GACX9K,EAAQ,QAAQ1wP,CAAI,EACpBw7P,EAAU,KACHkB,GAEL18P,IAAS,MAAQmwP,GAAmBnwP,CAAI,EACnCwyP,EAAIxyP,CAAI,GAEjB0wP,EAAQ,QAAQ1wP,CAAI,EACbw8P,EACT,CAYA,SAASC,EAA+Bz8P,EAAM,CAC5C,OAAIA,IAAS,MAAQA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMowP,GAA0BpwP,CAAI,EACnJs8P,EAA2Bt8P,CAAI,GAExC0wP,EAAQ,QAAQ1wP,CAAI,EACby8P,EACT,CAaA,SAASC,EAAkC18P,EAAM,CAC/C,OAAIA,IAAS,IAAMA,IAAS,IAAMqwP,GAAcrwP,CAAI,EAC3Cm8P,EAA4Bn8P,CAAI,EAElCwyP,EAAIxyP,CAAI,CACjB,CAYA,SAASo8P,EAAYp8P,EAAM,CACzB,OAAIA,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EACb28P,GAEFnK,EAAIxyP,CAAI,CACjB,CAYA,SAAS28P,EAAc38P,EAAM,CAC3B,OAAIA,IAAS,MAAQmwP,GAAmBnwP,CAAI,EAGnC+7P,EAAa/7P,CAAI,EAEtBqwP,GAAcrwP,CAAI,GACpB0wP,EAAQ,QAAQ1wP,CAAI,EACb28P,GAEFnK,EAAIxyP,CAAI,CACjB,CAYA,SAAS+7P,EAAa/7P,EAAM,CAC1B,OAAIA,IAAS,IAAMqzP,IAAW,GAC5B3C,EAAQ,QAAQ1wP,CAAI,EACb48P,GAEL58P,IAAS,IAAMqzP,IAAW,GAC5B3C,EAAQ,QAAQ1wP,CAAI,EACb68P,GAEL78P,IAAS,IAAMqzP,IAAW,GAC5B3C,EAAQ,QAAQ1wP,CAAI,EACb88P,GAEL98P,IAAS,IAAMqzP,IAAW,GAC5B3C,EAAQ,QAAQ1wP,CAAI,EACb27P,GAEL37P,IAAS,IAAMqzP,IAAW,GAC5B3C,EAAQ,QAAQ1wP,CAAI,EACb+8P,GAEL5M,GAAmBnwP,CAAI,IAAMqzP,IAAW,GAAKA,IAAW,IAC1D3C,EAAQ,KAAK,cAAc,EACpBA,EAAQ,MAAMyK,GAAiB6B,EAAmBC,CAAiB,EAAEj9P,CAAI,GAE9EA,IAAS,MAAQmwP,GAAmBnwP,CAAI,GAC1C0wP,EAAQ,KAAK,cAAc,EACpBuM,EAAkBj9P,CAAI,IAE/B0wP,EAAQ,QAAQ1wP,CAAI,EACb+7P,EACT,CAaA,SAASkB,EAAkBj9P,EAAM,CAC/B,OAAO0wP,EAAQ,MAAM2K,GAA0B6B,EAA0BF,CAAiB,EAAEh9P,CAAI,CAClG,CAaA,SAASk9P,EAAyBl9P,EAAM,CACtC,OAAA0wP,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,YAAY,EAClByM,CACT,CAaA,SAASA,EAAmBn9P,EAAM,CAChC,OAAIA,IAAS,MAAQmwP,GAAmBnwP,CAAI,EACnCi9P,EAAkBj9P,CAAI,GAE/B0wP,EAAQ,MAAM,cAAc,EACrBqL,EAAa/7P,CAAI,EAC1B,CAYA,SAAS48P,EAA0B58P,EAAM,CACvC,OAAIA,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EACb27P,GAEFI,EAAa/7P,CAAI,CAC1B,CAYA,SAAS68P,EAAuB78P,EAAM,CACpC,OAAIA,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EACpBo7N,EAAS,GACFgiC,GAEFrB,EAAa/7P,CAAI,CAC1B,CAYA,SAASo9P,EAAsBp9P,EAAM,CACnC,GAAIA,IAAS,GAAI,CACf,MAAMyL,EAAO2vN,EAAO,YAAW,EAC/B,OAAI2/B,GAAa,SAAStvP,CAAI,GAC5BilP,EAAQ,QAAQ1wP,CAAI,EACb88P,GAEFf,EAAa/7P,CAAI,CAC1B,CACA,OAAI2vP,GAAW3vP,CAAI,GAAKo7N,EAAO,OAAS,GAEtCs1B,EAAQ,QAAQ1wP,CAAI,EACpBo7N,GAAU,OAAO,aAAap7N,CAAI,EAC3Bo9P,GAEFrB,EAAa/7P,CAAI,CAC1B,CAYA,SAAS+8P,EAAwB/8P,EAAM,CACrC,OAAIA,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EACb27P,GAEFI,EAAa/7P,CAAI,CAC1B,CAoBA,SAAS27P,EAA8B37P,EAAM,CAC3C,OAAIA,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EACb88P,GAIL98P,IAAS,IAAMqzP,IAAW,GAC5B3C,EAAQ,QAAQ1wP,CAAI,EACb27P,GAEFI,EAAa/7P,CAAI,CAC1B,CAYA,SAAS88P,EAAkB98P,EAAM,CAC/B,OAAIA,IAAS,MAAQmwP,GAAmBnwP,CAAI,GAC1C0wP,EAAQ,KAAK,cAAc,EACpBsM,EAAkBh9P,CAAI,IAE/B0wP,EAAQ,QAAQ1wP,CAAI,EACb88P,EACT,CAYA,SAASE,EAAkBh9P,EAAM,CAC/B,OAAA0wP,EAAQ,KAAK,UAAU,EAKhBpK,EAAGtmP,CAAI,CAChB,CACF,CAOA,SAASs7P,GAAiC5K,EAASpK,EAAIkM,EAAK,CAC1D,MAAM/6E,EAAO,KACb,OAAO5sC,EAaP,SAASA,EAAM7qI,EAAM,CACnB,OAAImwP,GAAmBnwP,CAAI,GACzB0wP,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,YAAY,EAClB6C,GAEFf,EAAIxyP,CAAI,CACjB,CAaA,SAASuzP,EAAMvzP,EAAM,CACnB,OAAOy3K,EAAK,OAAO,KAAKA,EAAK,IAAG,EAAG,IAAI,EAAI+6E,EAAIxyP,CAAI,EAAIsmP,EAAGtmP,CAAI,CAChE,CACF,CAOA,SAASo7P,GAAwB1K,EAASpK,EAAIkM,EAAK,CACjD,OAAO3nH,EAaP,SAASA,EAAM7qI,EAAM,CACnB,OAAA0wP,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,YAAY,EAClBA,EAAQ,QAAQuD,GAAW3N,EAAIkM,CAAG,CAC3C,CACF,CC91BO,MAAM6K,GAAW,CACtB,KAAM,WACN,SAAUC,EACZ,EAOA,SAASA,GAAiB5M,EAASpK,EAAIkM,EAAK,CAC1C,MAAM/6E,EAAO,KAEb,IAAI47E,EAEA9xP,EAEAg8P,EACJ,OAAO1yH,EAYP,SAASA,EAAM7qI,EAAM,CACnB,OAAA0wP,EAAQ,MAAM,UAAU,EACxBA,EAAQ,MAAM,cAAc,EAC5BA,EAAQ,QAAQ1wP,CAAI,EACbugF,CACT,CAgBA,SAASA,EAAKvgF,EAAM,CAClB,OAAIA,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EACby7P,GAELz7P,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EACb07P,GAEL17P,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EACbw9P,GAIL7N,GAAW3vP,CAAI,GACjB0wP,EAAQ,QAAQ1wP,CAAI,EACby9P,GAEFjL,EAAIxyP,CAAI,CACjB,CAgBA,SAASy7P,EAAgBz7P,EAAM,CAC7B,OAAIA,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EACb67P,GAEL77P,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EACpBuB,EAAQ,EACDu6P,GAELnM,GAAW3vP,CAAI,GACjB0wP,EAAQ,QAAQ1wP,CAAI,EACbwhC,GAEFgxN,EAAIxyP,CAAI,CACjB,CAYA,SAAS67P,EAAkB77P,EAAM,CAC/B,OAAIA,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EACb09P,GAEFlL,EAAIxyP,CAAI,CACjB,CAYA,SAASuhC,EAAQvhC,EAAM,CACrB,OAAIA,IAAS,KACJwyP,EAAIxyP,CAAI,EAEbA,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EACb29P,GAELxN,GAAmBnwP,CAAI,GACzBu9P,EAAch8N,EACPq8N,EAAiB59P,CAAI,IAE9B0wP,EAAQ,QAAQ1wP,CAAI,EACbuhC,EACT,CAYA,SAASo8N,EAAa39P,EAAM,CAC1B,OAAIA,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EACb09P,GAEFn8N,EAAQvhC,CAAI,CACrB,CAYA,SAAS09P,EAAW19P,EAAM,CACxB,OAAOA,IAAS,GAAKk/B,EAAIl/B,CAAI,EAAIA,IAAS,GAAK29P,EAAa39P,CAAI,EAAIuhC,EAAQvhC,CAAI,CAClF,CAYA,SAAS87P,EAAgB97P,EAAM,CAC7B,MAAMjC,EAAQ,SACd,OAAIiC,IAASjC,EAAM,WAAWwD,GAAO,GACnCmvP,EAAQ,QAAQ1wP,CAAI,EACbuB,IAAUxD,EAAM,OAAS8/P,EAAQ/B,GAEnCtJ,EAAIxyP,CAAI,CACjB,CAYA,SAAS69P,EAAM79P,EAAM,CACnB,OAAIA,IAAS,KACJwyP,EAAIxyP,CAAI,EAEbA,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EACb89P,GAEL3N,GAAmBnwP,CAAI,GACzBu9P,EAAcM,EACPD,EAAiB59P,CAAI,IAE9B0wP,EAAQ,QAAQ1wP,CAAI,EACb69P,EACT,CAYA,SAASC,EAAW99P,EAAM,CACxB,OAAIA,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EACb+9P,GAEFF,EAAM79P,CAAI,CACnB,CAYA,SAAS+9P,EAAS/9P,EAAM,CACtB,OAAIA,IAAS,GACJk/B,EAAIl/B,CAAI,EAEbA,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EACb+9P,GAEFF,EAAM79P,CAAI,CACnB,CAYA,SAASwhC,EAAYxhC,EAAM,CACzB,OAAIA,IAAS,MAAQA,IAAS,GACrBk/B,EAAIl/B,CAAI,EAEbmwP,GAAmBnwP,CAAI,GACzBu9P,EAAc/7N,EACPo8N,EAAiB59P,CAAI,IAE9B0wP,EAAQ,QAAQ1wP,CAAI,EACbwhC,EACT,CAYA,SAASg8N,EAAYx9P,EAAM,CACzB,OAAIA,IAAS,KACJwyP,EAAIxyP,CAAI,EAEbA,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EACbg+P,GAEL7N,GAAmBnwP,CAAI,GACzBu9P,EAAcC,EACPI,EAAiB59P,CAAI,IAE9B0wP,EAAQ,QAAQ1wP,CAAI,EACbw9P,EACT,CAYA,SAASQ,EAAiBh+P,EAAM,CAC9B,OAAOA,IAAS,GAAKk/B,EAAIl/B,CAAI,EAAIw9P,EAAYx9P,CAAI,CACnD,CAYA,SAAS07P,EAAc17P,EAAM,CAE3B,OAAI2vP,GAAW3vP,CAAI,GACjB0wP,EAAQ,QAAQ1wP,CAAI,EACbi+P,GAEFzL,EAAIxyP,CAAI,CACjB,CAYA,SAASi+P,EAASj+P,EAAM,CAEtB,OAAIA,IAAS,IAAM6vP,GAAkB7vP,CAAI,GACvC0wP,EAAQ,QAAQ1wP,CAAI,EACbi+P,GAEFC,EAAgBl+P,CAAI,CAC7B,CAYA,SAASk+P,EAAgBl+P,EAAM,CAC7B,OAAImwP,GAAmBnwP,CAAI,GACzBu9P,EAAcW,EACPN,EAAiB59P,CAAI,GAE1BqwP,GAAcrwP,CAAI,GACpB0wP,EAAQ,QAAQ1wP,CAAI,EACbk+P,GAEFh/N,EAAIl/B,CAAI,CACjB,CAYA,SAASy9P,EAAQz9P,EAAM,CAErB,OAAIA,IAAS,IAAM6vP,GAAkB7vP,CAAI,GACvC0wP,EAAQ,QAAQ1wP,CAAI,EACby9P,GAELz9P,IAAS,IAAMA,IAAS,IAAMowP,GAA0BpwP,CAAI,EACvDm+P,EAAen+P,CAAI,EAErBwyP,EAAIxyP,CAAI,CACjB,CAYA,SAASm+P,EAAen+P,EAAM,CAC5B,OAAIA,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EACbk/B,GAILl/B,IAAS,IAAMA,IAAS,IAAM2vP,GAAW3vP,CAAI,GAC/C0wP,EAAQ,QAAQ1wP,CAAI,EACbo+P,GAELjO,GAAmBnwP,CAAI,GACzBu9P,EAAcY,EACPP,EAAiB59P,CAAI,GAE1BqwP,GAAcrwP,CAAI,GACpB0wP,EAAQ,QAAQ1wP,CAAI,EACbm+P,GAEFj/N,EAAIl/B,CAAI,CACjB,CAYA,SAASo+P,EAAqBp+P,EAAM,CAElC,OAAIA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAM6vP,GAAkB7vP,CAAI,GACpF0wP,EAAQ,QAAQ1wP,CAAI,EACbo+P,GAEFC,EAA0Br+P,CAAI,CACvC,CAaA,SAASq+P,EAA0Br+P,EAAM,CACvC,OAAIA,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EACbs+P,GAELnO,GAAmBnwP,CAAI,GACzBu9P,EAAcc,EACPT,EAAiB59P,CAAI,GAE1BqwP,GAAcrwP,CAAI,GACpB0wP,EAAQ,QAAQ1wP,CAAI,EACbq+P,GAEFF,EAAen+P,CAAI,CAC5B,CAaA,SAASs+P,EAA4Bt+P,EAAM,CACzC,OAAIA,IAAS,MAAQA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,GAClEwyP,EAAIxyP,CAAI,EAEbA,IAAS,IAAMA,IAAS,IAC1B0wP,EAAQ,QAAQ1wP,CAAI,EACpBqzP,EAASrzP,EACFu+P,GAELpO,GAAmBnwP,CAAI,GACzBu9P,EAAce,EACPV,EAAiB59P,CAAI,GAE1BqwP,GAAcrwP,CAAI,GACpB0wP,EAAQ,QAAQ1wP,CAAI,EACbs+P,IAET5N,EAAQ,QAAQ1wP,CAAI,EACbw+P,EACT,CAYA,SAASD,EAA4Bv+P,EAAM,CACzC,OAAIA,IAASqzP,GACX3C,EAAQ,QAAQ1wP,CAAI,EACpBqzP,EAAS,OACFoL,GAELz+P,IAAS,KACJwyP,EAAIxyP,CAAI,EAEbmwP,GAAmBnwP,CAAI,GACzBu9P,EAAcgB,EACPX,EAAiB59P,CAAI,IAE9B0wP,EAAQ,QAAQ1wP,CAAI,EACbu+P,EACT,CAYA,SAASC,EAA8Bx+P,EAAM,CAC3C,OAAIA,IAAS,MAAQA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,GACjFwyP,EAAIxyP,CAAI,EAEbA,IAAS,IAAMA,IAAS,IAAMowP,GAA0BpwP,CAAI,EACvDm+P,EAAen+P,CAAI,GAE5B0wP,EAAQ,QAAQ1wP,CAAI,EACbw+P,EACT,CAaA,SAASC,EAAiCz+P,EAAM,CAC9C,OAAIA,IAAS,IAAMA,IAAS,IAAMowP,GAA0BpwP,CAAI,EACvDm+P,EAAen+P,CAAI,EAErBwyP,EAAIxyP,CAAI,CACjB,CAYA,SAASk/B,EAAIl/B,EAAM,CACjB,OAAIA,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,cAAc,EAC3BA,EAAQ,KAAK,UAAU,EAChBpK,GAEFkM,EAAIxyP,CAAI,CACjB,CAgBA,SAAS49P,EAAiB59P,EAAM,CAC9B,OAAA0wP,EAAQ,KAAK,cAAc,EAC3BA,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,YAAY,EAClBgO,CACT,CAgBA,SAASA,EAAgB1+P,EAAM,CAG7B,OAAOqwP,GAAcrwP,CAAI,EAAIywP,GAAaC,EAASiO,EAAuB,aAAclnF,EAAK,OAAO,WAAW,QAAQ,KAAK,SAAS,cAAc,EAAI,OAAY,CAAC,EAAEz3K,CAAI,EAAI2+P,EAAsB3+P,CAAI,CAC1M,CAgBA,SAAS2+P,EAAsB3+P,EAAM,CACnC,OAAA0wP,EAAQ,MAAM,cAAc,EACrB6M,EAAYv9P,CAAI,CACzB,CACF,CChpBO,MAAM4+P,GAAW,CACtB,KAAM,WACN,WAAYC,GACZ,UAAWC,GACX,SAAUC,EACZ,EAGMC,GAAoB,CACxB,SAAUC,EACZ,EAEMC,GAAyB,CAC7B,SAAUC,EACZ,EAEMC,GAA8B,CAClC,SAAUC,EACZ,EAGA,SAASR,GAAmB99P,EAAQ,CAClC,IAAIQ,EAAQ,GAEZ,MAAM+9P,EAAY,CAAA,EAClB,KAAO,EAAE/9P,EAAQR,EAAO,QAAQ,CAC9B,MAAM01B,EAAQ11B,EAAOQ,CAAK,EAAE,CAAC,EAE7B,GADA+9P,EAAU,KAAKv+P,EAAOQ,CAAK,CAAC,EACxBk1B,EAAM,OAAS,cAAgBA,EAAM,OAAS,aAAeA,EAAM,OAAS,WAAY,CAE1F,MAAMsK,EAAStK,EAAM,OAAS,aAAe,EAAI,EACjDA,EAAM,KAAO,OACbl1B,GAASw/B,CACX,CACF,CAGA,OAAIhgC,EAAO,SAAWu+P,EAAU,QAC9BzQ,GAAO9tP,EAAQ,EAAGA,EAAO,OAAQu+P,CAAS,EAErCv+P,CACT,CAGA,SAAS+9P,GAAkB/9P,EAAQs2C,EAAS,CAC1C,IAAI91C,EAAQR,EAAO,OACfggC,EAAS,EAETtK,EAEA8pD,EAEAhE,EAEAgjL,EAGJ,KAAOh+P,KAEL,GADAk1B,EAAQ11B,EAAOQ,CAAK,EAAE,CAAC,EACnBg/E,EAAM,CAER,GAAI9pD,EAAM,OAAS,QAAUA,EAAM,OAAS,aAAeA,EAAM,UAC/D,MAKE11B,EAAOQ,CAAK,EAAE,CAAC,IAAM,SAAWk1B,EAAM,OAAS,cACjDA,EAAM,UAAY,GAEtB,SAAW8lD,GACT,GAAIx7E,EAAOQ,CAAK,EAAE,CAAC,IAAM,UAAYk1B,EAAM,OAAS,cAAgBA,EAAM,OAAS,cAAgB,CAACA,EAAM,YACxG8pD,EAAOh/E,EACHk1B,EAAM,OAAS,aAAa,CAC9BsK,EAAS,EACT,KACF,OAEOtK,EAAM,OAAS,aACxB8lD,EAAQh7E,GAGZ,MAAMwtI,EAAQ,CACZ,KAAMhuI,EAAOw/E,CAAI,EAAE,CAAC,EAAE,OAAS,YAAc,OAAS,QACtD,MAAO,CACL,GAAGx/E,EAAOw/E,CAAI,EAAE,CAAC,EAAE,KACzB,EACI,IAAK,CACH,GAAGx/E,EAAOA,EAAO,OAAS,CAAC,EAAE,CAAC,EAAE,GACtC,CACA,EACQq6G,EAAQ,CACZ,KAAM,QACN,MAAO,CACL,GAAGr6G,EAAOw/E,CAAI,EAAE,CAAC,EAAE,KACzB,EACI,IAAK,CACH,GAAGx/E,EAAOw7E,CAAK,EAAE,CAAC,EAAE,GAC1B,CACA,EACQjrE,EAAO,CACX,KAAM,YACN,MAAO,CACL,GAAGvQ,EAAOw/E,EAAOx/C,EAAS,CAAC,EAAE,CAAC,EAAE,GACtC,EACI,IAAK,CACH,GAAGhgC,EAAOw7E,EAAQ,CAAC,EAAE,CAAC,EAAE,KAC9B,CACA,EACE,OAAAgjL,EAAQ,CAAC,CAAC,QAASxwH,EAAO13F,CAAO,EAAG,CAAC,QAAS+jE,EAAO/jE,CAAO,CAAC,EAG7DkoN,EAAQhnF,GAAKgnF,EAAOx+P,EAAO,MAAMw/E,EAAO,EAAGA,EAAOx/C,EAAS,CAAC,CAAC,EAG7Dw+N,EAAQhnF,GAAKgnF,EAAO,CAAC,CAAC,QAASjuP,EAAM+lC,CAAO,CAAC,CAAC,EAK9CkoN,EAAQhnF,GAAKgnF,EAAO7M,GAAWr7M,EAAQ,OAAO,WAAW,WAAW,KAAMt2C,EAAO,MAAMw/E,EAAOx/C,EAAS,EAAGw7C,EAAQ,CAAC,EAAGllC,CAAO,CAAC,EAG9HkoN,EAAQhnF,GAAKgnF,EAAO,CAAC,CAAC,OAAQjuP,EAAM+lC,CAAO,EAAGt2C,EAAOw7E,EAAQ,CAAC,EAAGx7E,EAAOw7E,EAAQ,CAAC,EAAG,CAAC,OAAQ6+B,EAAO/jE,CAAO,CAAC,CAAC,EAG7GkoN,EAAQhnF,GAAKgnF,EAAOx+P,EAAO,MAAMw7E,EAAQ,CAAC,CAAC,EAG3CgjL,EAAQhnF,GAAKgnF,EAAO,CAAC,CAAC,OAAQxwH,EAAO13F,CAAO,CAAC,CAAC,EAC9Cw3M,GAAO9tP,EAAQw/E,EAAMx/E,EAAO,OAAQw+P,CAAK,EAClCx+P,CACT,CAOA,SAASg+P,GAAiBrO,EAASpK,EAAIkM,EAAK,CAC1C,MAAM/6E,EAAO,KACb,IAAIl2K,EAAQk2K,EAAK,OAAO,OAEpB+nF,EAEAC,EAGJ,KAAOl+P,KACL,IAAKk2K,EAAK,OAAOl2K,CAAK,EAAE,CAAC,EAAE,OAAS,cAAgBk2K,EAAK,OAAOl2K,CAAK,EAAE,CAAC,EAAE,OAAS,cAAgB,CAACk2K,EAAK,OAAOl2K,CAAK,EAAE,CAAC,EAAE,UAAW,CACnIi+P,EAAa/nF,EAAK,OAAOl2K,CAAK,EAAE,CAAC,EACjC,KACF,CAEF,OAAOspI,EAiBP,SAASA,EAAM7qI,EAAM,CAEnB,OAAKw/P,EAaDA,EAAW,UACNE,EAAY1/P,CAAI,GAEzBy/P,EAAUhoF,EAAK,OAAO,QAAQ,SAASi4E,GAAoBj4E,EAAK,eAAe,CAC7E,MAAO+nF,EAAW,IAClB,IAAK/nF,EAAK,IAAG,CACnB,CAAK,CAAC,CAAC,EACHi5E,EAAQ,MAAM,UAAU,EACxBA,EAAQ,MAAM,aAAa,EAC3BA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,aAAa,EAC1BA,EAAQ,KAAK,UAAU,EAChB6C,GAxBEf,EAAIxyP,CAAI,CAyBnB,CAkBA,SAASuzP,EAAMvzP,EAAM,CAKnB,OAAIA,IAAS,GACJ0wP,EAAQ,QAAQsO,GAAmBW,EAAYF,EAAUE,EAAaD,CAAW,EAAE1/P,CAAI,EAI5FA,IAAS,GACJ0wP,EAAQ,QAAQwO,GAAwBS,EAAYF,EAAUG,EAAmBF,CAAW,EAAE1/P,CAAI,EAIpGy/P,EAAUE,EAAW3/P,CAAI,EAAI0/P,EAAY1/P,CAAI,CACtD,CAgBA,SAAS4/P,EAAiB5/P,EAAM,CAC9B,OAAO0wP,EAAQ,QAAQ0O,GAA6BO,EAAYD,CAAW,EAAE1/P,CAAI,CACnF,CAkBA,SAAS2/P,EAAW3/P,EAAM,CAExB,OAAOsmP,EAAGtmP,CAAI,CAChB,CAkBA,SAAS0/P,EAAY1/P,EAAM,CACzB,OAAAw/P,EAAW,UAAY,GAChBhN,EAAIxyP,CAAI,CACjB,CACF,CAOA,SAASi/P,GAAiBvO,EAASpK,EAAIkM,EAAK,CAC1C,OAAOqN,EAYP,SAASA,EAAc7/P,EAAM,CAC3B,OAAA0wP,EAAQ,MAAM,UAAU,EACxBA,EAAQ,MAAM,gBAAgB,EAC9BA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,gBAAgB,EACtBoP,CACT,CAYA,SAASA,EAAe9/P,EAAM,CAC5B,OAAOowP,GAA0BpwP,CAAI,EAAI45P,GAAkBlJ,EAASqP,CAAY,EAAE//P,CAAI,EAAI+/P,EAAa//P,CAAI,CAC7G,CAYA,SAAS+/P,EAAa//P,EAAM,CAC1B,OAAIA,IAAS,GACJggQ,EAAYhgQ,CAAI,EAElB64P,GAAmBnI,EAASuP,EAA0BC,EAA4B,sBAAuB,6BAA8B,mCAAoC,yBAA0B,4BAA6B,EAAE,EAAElgQ,CAAI,CACnP,CAYA,SAASigQ,EAAyBjgQ,EAAM,CACtC,OAAOowP,GAA0BpwP,CAAI,EAAI45P,GAAkBlJ,EAASyP,CAAe,EAAEngQ,CAAI,EAAIggQ,EAAYhgQ,CAAI,CAC/G,CAYA,SAASkgQ,EAA2BlgQ,EAAM,CACxC,OAAOwyP,EAAIxyP,CAAI,CACjB,CAYA,SAASmgQ,EAAgBngQ,EAAM,CAC7B,OAAIA,IAAS,IAAMA,IAAS,IAAMA,IAAS,GAClC25P,GAAajJ,EAAS0P,EAAoB5N,EAAK,gBAAiB,sBAAuB,qBAAqB,EAAExyP,CAAI,EAEpHggQ,EAAYhgQ,CAAI,CACzB,CAYA,SAASogQ,EAAmBpgQ,EAAM,CAChC,OAAOowP,GAA0BpwP,CAAI,EAAI45P,GAAkBlJ,EAASsP,CAAW,EAAEhgQ,CAAI,EAAIggQ,EAAYhgQ,CAAI,CAC3G,CAYA,SAASggQ,EAAYhgQ,EAAM,CACzB,OAAIA,IAAS,IACX0wP,EAAQ,MAAM,gBAAgB,EAC9BA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,gBAAgB,EAC7BA,EAAQ,KAAK,UAAU,EAChBpK,GAEFkM,EAAIxyP,CAAI,CACjB,CACF,CAOA,SAASm/P,GAAsBzO,EAASpK,EAAIkM,EAAK,CAC/C,MAAM/6E,EAAO,KACb,OAAO4oF,EAYP,SAASA,EAAcrgQ,EAAM,CAC3B,OAAOu5P,GAAa,KAAK9hF,EAAMi5E,EAAS4P,EAAoBC,EAAsB,YAAa,kBAAmB,iBAAiB,EAAEvgQ,CAAI,CAC3I,CAYA,SAASsgQ,EAAmBtgQ,EAAM,CAChC,OAAOy3K,EAAK,OAAO,QAAQ,SAASi4E,GAAoBj4E,EAAK,eAAeA,EAAK,OAAOA,EAAK,OAAO,OAAS,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAG,EAAE,CAAC,CAAC,EAAI6uE,EAAGtmP,CAAI,EAAIwyP,EAAIxyP,CAAI,CAC1J,CAYA,SAASugQ,EAAqBvgQ,EAAM,CAClC,OAAOwyP,EAAIxyP,CAAI,CACjB,CACF,CAOA,SAASq/P,GAA2B3O,EAASpK,EAAIkM,EAAK,CACpD,OAAOgO,EAcP,SAASA,EAAwBxgQ,EAAM,CAGrC,OAAA0wP,EAAQ,MAAM,WAAW,EACzBA,EAAQ,MAAM,iBAAiB,EAC/BA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,iBAAiB,EACvB+P,CACT,CAcA,SAASA,EAAuBzgQ,EAAM,CACpC,OAAIA,IAAS,IACX0wP,EAAQ,MAAM,iBAAiB,EAC/BA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,iBAAiB,EAC9BA,EAAQ,KAAK,WAAW,EACjBpK,GAEFkM,EAAIxyP,CAAI,CACjB,CACF,CCniBO,MAAM0gQ,GAAkB,CAC7B,KAAM,kBACN,WAAY9B,GAAS,WACrB,SAAU+B,EACZ,EAOA,SAASA,GAAwBjQ,EAASpK,EAAIkM,EAAK,CACjD,MAAM/6E,EAAO,KACb,OAAO5sC,EAYP,SAASA,EAAM7qI,EAAM,CACnB,OAAA0wP,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,MAAM,kBAAkB,EAChCA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,kBAAkB,EACxBnwK,CACT,CAYA,SAASA,EAAKvgF,EAAM,CAClB,OAAIA,IAAS,IACX0wP,EAAQ,MAAM,aAAa,EAC3BA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,aAAa,EAC1BA,EAAQ,KAAK,YAAY,EAClB6C,GAEFf,EAAIxyP,CAAI,CACjB,CA6BA,SAASuzP,EAAMvzP,EAAM,CAMnB,OAAOA,IAAS,IAAM,2BAA4By3K,EAAK,OAAO,WAAa+6E,EAAIxyP,CAAI,EAAIsmP,EAAGtmP,CAAI,CAChG,CACF,CCzFO,MAAM4gQ,GAAiB,CAC5B,KAAM,iBACN,WAAYhC,GAAS,WACrB,SAAUiC,EACZ,EAOA,SAASA,GAAuBnQ,EAASpK,EAAIkM,EAAK,CAChD,MAAM/6E,EAAO,KACb,OAAO5sC,EAYP,SAASA,EAAM7qI,EAAM,CACnB,OAAA0wP,EAAQ,MAAM,WAAW,EACzBA,EAAQ,MAAM,aAAa,EAC3BA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,aAAa,EAC1BA,EAAQ,KAAK,WAAW,EACjB6C,CACT,CAGA,SAASA,EAAMvzP,EAAM,CAKnB,OAAOA,IAAS,IAAM,2BAA4By3K,EAAK,OAAO,WAAa+6E,EAAIxyP,CAAI,EAAIsmP,EAAGtmP,CAAI,CAChG,CACF,CC1CO,MAAM8gQ,GAAa,CACxB,KAAM,aACN,SAAUC,EACZ,EAOA,SAASA,GAAmBrQ,EAASpK,EAAI,CACvC,OAAOz7G,EAGP,SAASA,EAAM7qI,EAAM,CACnB,OAAA0wP,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,YAAY,EAClBD,GAAaC,EAASpK,EAAI,YAAY,CAC/C,CACF,CCnBO,MAAM0a,GAAgB,CAC3B,KAAM,gBACN,SAAUC,EACZ,EAOA,SAASA,GAAsBvQ,EAASpK,EAAIkM,EAAK,CAC/C,IAAI5rO,EAAO,EAEPysO,EACJ,OAAOxoH,EAYP,SAASA,EAAM7qI,EAAM,CACnB,OAAA0wP,EAAQ,MAAM,eAAe,EAEtBlB,EAAOxvP,CAAI,CACpB,CAYA,SAASwvP,EAAOxvP,EAAM,CACpB,OAAAqzP,EAASrzP,EACFu2P,EAAQv2P,CAAI,CACrB,CAYA,SAASu2P,EAAQv2P,EAAM,CACrB,OAAIA,IAASqzP,GACX3C,EAAQ,MAAM,uBAAuB,EAC9BwQ,EAASlhQ,CAAI,GAElB4mB,GAAQ,IAAM5mB,IAAS,MAAQmwP,GAAmBnwP,CAAI,IACxD0wP,EAAQ,KAAK,eAAe,EACrBpK,EAAGtmP,CAAI,GAETwyP,EAAIxyP,CAAI,CACjB,CAYA,SAASkhQ,EAASlhQ,EAAM,CACtB,OAAIA,IAASqzP,GACX3C,EAAQ,QAAQ1wP,CAAI,EACpB4mB,IACOs6O,IAETxQ,EAAQ,KAAK,uBAAuB,EAC7BL,GAAcrwP,CAAI,EAAIywP,GAAaC,EAAS6F,EAAS,YAAY,EAAEv2P,CAAI,EAAIu2P,EAAQv2P,CAAI,EAChG,CACF,CCpFO,MAAMglC,GAAO,CAClB,aAAc,CACZ,SAAUm8N,EACd,EACE,KAAMC,GACN,KAAM,OACN,SAAUC,EACZ,EAGMC,GAAoC,CACxC,QAAS,GACT,SAAUC,EACZ,EAGMC,GAAkB,CACtB,QAAS,GACT,SAAUC,EACZ,EAUA,SAASJ,GAAkB3Q,EAASpK,EAAIkM,EAAK,CAC3C,MAAM/6E,EAAO,KACP69E,EAAO79E,EAAK,OAAOA,EAAK,OAAO,OAAS,CAAC,EAC/C,IAAIiqF,EAAcpM,GAAQA,EAAK,CAAC,EAAE,OAAS,aAAeA,EAAK,CAAC,EAAE,eAAeA,EAAK,CAAC,EAAG,EAAI,EAAE,OAAS,EACrG1uO,EAAO,EACX,OAAOikH,EAGP,SAASA,EAAM7qI,EAAM,CACnB,MAAM2hQ,EAAOlqF,EAAK,eAAe,OAASz3K,IAAS,IAAMA,IAAS,IAAMA,IAAS,GAAK,gBAAkB,eACxG,GAAI2hQ,IAAS,gBAAkB,CAAClqF,EAAK,eAAe,QAAUz3K,IAASy3K,EAAK,eAAe,OAASu4E,GAAWhwP,CAAI,EAAG,CAOpH,GANKy3K,EAAK,eAAe,OACvBA,EAAK,eAAe,KAAOkqF,EAC3BjR,EAAQ,MAAMiR,EAAM,CAClB,WAAY,EACtB,CAAS,GAECA,IAAS,gBACX,OAAAjR,EAAQ,MAAM,gBAAgB,EACvB1wP,IAAS,IAAMA,IAAS,GAAK0wP,EAAQ,MAAMsQ,GAAexO,EAAKoP,CAAQ,EAAE5hQ,CAAI,EAAI4hQ,EAAS5hQ,CAAI,EAEvG,GAAI,CAACy3K,EAAK,WAAaz3K,IAAS,GAC9B,OAAA0wP,EAAQ,MAAM,gBAAgB,EAC9BA,EAAQ,MAAM,eAAe,EACtB4C,EAAOtzP,CAAI,CAEtB,CACA,OAAOwyP,EAAIxyP,CAAI,CACjB,CAGA,SAASszP,EAAOtzP,EAAM,CACpB,OAAIgwP,GAAWhwP,CAAI,GAAK,EAAE4mB,EAAO,IAC/B8pO,EAAQ,QAAQ1wP,CAAI,EACbszP,IAEJ,CAAC77E,EAAK,WAAa7wJ,EAAO,KAAO6wJ,EAAK,eAAe,OAASz3K,IAASy3K,EAAK,eAAe,OAASz3K,IAAS,IAAMA,IAAS,KAC/H0wP,EAAQ,KAAK,eAAe,EACrBkR,EAAS5hQ,CAAI,GAEfwyP,EAAIxyP,CAAI,CACjB,CAKA,SAAS4hQ,EAAS5hQ,EAAM,CACtB,OAAA0wP,EAAQ,MAAM,gBAAgB,EAC9BA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,gBAAgB,EAC7Bj5E,EAAK,eAAe,OAASA,EAAK,eAAe,QAAUz3K,EACpD0wP,EAAQ,MAAMuD,GAErBx8E,EAAK,UAAY+6E,EAAMqP,EAASnR,EAAQ,QAAQ4Q,GAAmCQ,EAAaC,CAAW,CAAC,CAC9G,CAGA,SAASF,EAAQ7hQ,EAAM,CACrB,OAAAy3K,EAAK,eAAe,iBAAmB,GACvCiqF,IACOI,EAAY9hQ,CAAI,CACzB,CAGA,SAAS+hQ,EAAY/hQ,EAAM,CACzB,OAAIqwP,GAAcrwP,CAAI,GACpB0wP,EAAQ,MAAM,0BAA0B,EACxCA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,0BAA0B,EAChCoR,GAEFtP,EAAIxyP,CAAI,CACjB,CAGA,SAAS8hQ,EAAY9hQ,EAAM,CACzB,OAAAy3K,EAAK,eAAe,KAAOiqF,EAAcjqF,EAAK,eAAei5E,EAAQ,KAAK,gBAAgB,EAAG,EAAI,EAAE,OAC5FpK,EAAGtmP,CAAI,CAChB,CACF,CAOA,SAASmhQ,GAAyBzQ,EAASpK,EAAIkM,EAAK,CAClD,MAAM/6E,EAAO,KACb,OAAAA,EAAK,eAAe,WAAa,OAC1Bi5E,EAAQ,MAAMuD,GAAW4N,EAASG,CAAQ,EAGjD,SAASH,EAAQ7hQ,EAAM,CACrB,OAAAy3K,EAAK,eAAe,kBAAoBA,EAAK,eAAe,mBAAqBA,EAAK,eAAe,iBAI9Fg5E,GAAaC,EAASpK,EAAI,iBAAkB7uE,EAAK,eAAe,KAAO,CAAC,EAAEz3K,CAAI,CACvF,CAGA,SAASgiQ,EAAShiQ,EAAM,CACtB,OAAIy3K,EAAK,eAAe,mBAAqB,CAAC44E,GAAcrwP,CAAI,GAC9Dy3K,EAAK,eAAe,kBAAoB,OACxCA,EAAK,eAAe,iBAAmB,OAChCwqF,EAAiBjiQ,CAAI,IAE9By3K,EAAK,eAAe,kBAAoB,OACxCA,EAAK,eAAe,iBAAmB,OAChCi5E,EAAQ,QAAQ8Q,GAAiBlb,EAAI2b,CAAgB,EAAEjiQ,CAAI,EACpE,CAGA,SAASiiQ,EAAiBjiQ,EAAM,CAE9B,OAAAy3K,EAAK,eAAe,WAAa,GAEjCA,EAAK,UAAY,OAGVg5E,GAAaC,EAASA,EAAQ,QAAQ1rN,GAAMshN,EAAIkM,CAAG,EAAG,aAAc/6E,EAAK,OAAO,WAAW,QAAQ,KAAK,SAAS,cAAc,EAAI,OAAY,CAAC,EAAEz3K,CAAI,CAC/J,CACF,CAOA,SAASyhQ,GAAe/Q,EAASpK,EAAIkM,EAAK,CACxC,MAAM/6E,EAAO,KACb,OAAOg5E,GAAaC,EAAS4F,EAAa,iBAAkB7+E,EAAK,eAAe,KAAO,CAAC,EAGxF,SAAS6+E,EAAYt2P,EAAM,CACzB,MAAMs1P,EAAO79E,EAAK,OAAOA,EAAK,OAAO,OAAS,CAAC,EAC/C,OAAO69E,GAAQA,EAAK,CAAC,EAAE,OAAS,kBAAoBA,EAAK,CAAC,EAAE,eAAeA,EAAK,CAAC,EAAG,EAAI,EAAE,SAAW79E,EAAK,eAAe,KAAO6uE,EAAGtmP,CAAI,EAAIwyP,EAAIxyP,CAAI,CACrJ,CACF,CAOA,SAASohQ,GAAgB1Q,EAAS,CAChCA,EAAQ,KAAK,KAAK,eAAe,IAAI,CACvC,CAOA,SAAS6Q,GAAiC7Q,EAASpK,EAAIkM,EAAK,CAC1D,MAAM/6E,EAAO,KAIb,OAAOg5E,GAAaC,EAAS4F,EAAa,2BAA4B7+E,EAAK,OAAO,WAAW,QAAQ,KAAK,SAAS,cAAc,EAAI,OAAY,CAAK,EAGtJ,SAAS6+E,EAAYt2P,EAAM,CACzB,MAAMs1P,EAAO79E,EAAK,OAAOA,EAAK,OAAO,OAAS,CAAC,EAC/C,MAAO,CAAC44E,GAAcrwP,CAAI,GAAKs1P,GAAQA,EAAK,CAAC,EAAE,OAAS,2BAA6BhP,EAAGtmP,CAAI,EAAIwyP,EAAIxyP,CAAI,CAC1G,CACF,CCtMO,MAAMkiQ,GAAkB,CAC7B,KAAM,kBACN,UAAWC,GACX,SAAUC,EACZ,EAGA,SAASD,GAAyBphQ,EAAQs2C,EAAS,CAEjD,IAAI91C,EAAQR,EAAO,OAEf6hC,EAEAtxB,EAEAw1O,EAIJ,KAAOvlP,KACL,GAAIR,EAAOQ,CAAK,EAAE,CAAC,IAAM,QAAS,CAChC,GAAIR,EAAOQ,CAAK,EAAE,CAAC,EAAE,OAAS,UAAW,CACvCqhC,EAAUrhC,EACV,KACF,CACIR,EAAOQ,CAAK,EAAE,CAAC,EAAE,OAAS,cAC5B+P,EAAO/P,EAEX,MAGMR,EAAOQ,CAAK,EAAE,CAAC,EAAE,OAAS,WAE5BR,EAAO,OAAOQ,EAAO,CAAC,EAEpB,CAACulP,GAAc/lP,EAAOQ,CAAK,EAAE,CAAC,EAAE,OAAS,eAC3CulP,EAAavlP,GAInB,MAAM8gQ,EAAU,CACd,KAAM,gBACN,MAAO,CACL,GAAGthQ,EAAO6hC,CAAO,EAAE,CAAC,EAAE,KAC5B,EACI,IAAK,CACH,GAAG7hC,EAAOA,EAAO,OAAS,CAAC,EAAE,CAAC,EAAE,GACtC,CACA,EAGE,OAAAA,EAAOuQ,CAAI,EAAE,CAAC,EAAE,KAAO,oBAInBw1O,GACF/lP,EAAO,OAAOuQ,EAAM,EAAG,CAAC,QAAS+wP,EAAShrN,CAAO,CAAC,EAClDt2C,EAAO,OAAO+lP,EAAa,EAAG,EAAG,CAAC,OAAQ/lP,EAAO6hC,CAAO,EAAE,CAAC,EAAGyU,CAAO,CAAC,EACtEt2C,EAAO6hC,CAAO,EAAE,CAAC,EAAE,IAAM,CACvB,GAAG7hC,EAAO+lP,CAAU,EAAE,CAAC,EAAE,GAC/B,GAEI/lP,EAAO6hC,CAAO,EAAE,CAAC,EAAIy/N,EAIvBthQ,EAAO,KAAK,CAAC,OAAQshQ,EAAShrN,CAAO,CAAC,EAC/Bt2C,CACT,CAOA,SAASqhQ,GAAwB1R,EAASpK,EAAIkM,EAAK,CACjD,MAAM/6E,EAAO,KAEb,IAAI47E,EACJ,OAAOxoH,EAaP,SAASA,EAAM7qI,EAAM,CACnB,IAAIuB,EAAQk2K,EAAK,OAAO,OAEpB3xE,EAEJ,KAAOvkG,KAGL,GAAIk2K,EAAK,OAAOl2K,CAAK,EAAE,CAAC,EAAE,OAAS,cAAgBk2K,EAAK,OAAOl2K,CAAK,EAAE,CAAC,EAAE,OAAS,cAAgBk2K,EAAK,OAAOl2K,CAAK,EAAE,CAAC,EAAE,OAAS,UAAW,CAC1IukG,EAAY2xE,EAAK,OAAOl2K,CAAK,EAAE,CAAC,EAAE,OAAS,YAC3C,KACF,CAKF,MAAI,CAACk2K,EAAK,OAAO,KAAKA,EAAK,MAAM,IAAI,IAAMA,EAAK,WAAa3xE,IAC3D4qJ,EAAQ,MAAM,mBAAmB,EACjC2C,EAASrzP,EACFwvP,EAAOxvP,CAAI,GAEbwyP,EAAIxyP,CAAI,CACjB,CAaA,SAASwvP,EAAOxvP,EAAM,CACpB,OAAA0wP,EAAQ,MAAM,2BAA2B,EAClC4C,EAAOtzP,CAAI,CACpB,CAaA,SAASszP,EAAOtzP,EAAM,CACpB,OAAIA,IAASqzP,GACX3C,EAAQ,QAAQ1wP,CAAI,EACbszP,IAET5C,EAAQ,KAAK,2BAA2B,EACjCL,GAAcrwP,CAAI,EAAIywP,GAAaC,EAAS6C,EAAO,YAAY,EAAEvzP,CAAI,EAAIuzP,EAAMvzP,CAAI,EAC5F,CAaA,SAASuzP,EAAMvzP,EAAM,CACnB,OAAIA,IAAS,MAAQmwP,GAAmBnwP,CAAI,GAC1C0wP,EAAQ,KAAK,mBAAmB,EACzBpK,EAAGtmP,CAAI,GAETwyP,EAAIxyP,CAAI,CACjB,CACF,CC3KO,MAAMsiQ,GAAO,CAClB,SAAUC,EACZ,EAQA,SAASA,GAAe7R,EAAS,CAC/B,MAAMj5E,EAAO,KACPu/E,EAAUtG,EAAQ,QAExBuD,GAAWuO,EAEX9R,EAAQ,QAAQ,KAAK,OAAO,WAAW,YAAa+R,EAAgBhS,GAAaC,EAASA,EAAQ,QAAQ,KAAK,OAAO,WAAW,KAAM+R,EAAgB/R,EAAQ,QAAQ9tN,GAAS6/N,CAAc,CAAC,EAAG,YAAY,CAAC,CAAC,EAChN,OAAOzL,EAGP,SAASwL,EAAcxiQ,EAAM,CAC3B,GAAIA,IAAS,KAAM,CACjB0wP,EAAQ,QAAQ1wP,CAAI,EACpB,MACF,CACA,OAAA0wP,EAAQ,MAAM,iBAAiB,EAC/BA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,iBAAiB,EAC9Bj5E,EAAK,iBAAmB,OACjBu/E,CACT,CAGA,SAASyL,EAAeziQ,EAAM,CAC5B,GAAIA,IAAS,KAAM,CACjB0wP,EAAQ,QAAQ1wP,CAAI,EACpB,MACF,CACA,OAAA0wP,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,YAAY,EACzBj5E,EAAK,iBAAmB,OACjBu/E,CACT,CACF,CC9CO,MAAM5pP,GAAW,CACtB,WAAYs1P,GAAc,CAC5B,EACaz2K,GAAS02K,GAAkB,QAAQ,EACnCrxP,GAAOqxP,GAAkB,MAAM,EAQ5C,SAASA,GAAkB16K,EAAO,CAChC,MAAO,CACL,WAAYy6K,GAAez6K,IAAU,OAAS26K,GAAyB,MAAS,EAChF,SAAUC,CACd,EAOE,SAASA,EAAenS,EAAS,CAC/B,MAAMj5E,EAAO,KACP63E,EAAa,KAAK,OAAO,WAAWrnK,CAAK,EACzC32E,EAAOo/O,EAAQ,QAAQpB,EAAYzkH,EAAOi4H,CAAO,EACvD,OAAOj4H,EAGP,SAASA,EAAM7qI,EAAM,CACnB,OAAOu2P,EAAQv2P,CAAI,EAAIsR,EAAKtR,CAAI,EAAI8iQ,EAAQ9iQ,CAAI,CAClD,CAGA,SAAS8iQ,EAAQ9iQ,EAAM,CACrB,GAAIA,IAAS,KAAM,CACjB0wP,EAAQ,QAAQ1wP,CAAI,EACpB,MACF,CACA,OAAA0wP,EAAQ,MAAM,MAAM,EACpBA,EAAQ,QAAQ1wP,CAAI,EACbnC,CACT,CAGA,SAASA,EAAKmC,EAAM,CAClB,OAAIu2P,EAAQv2P,CAAI,GACd0wP,EAAQ,KAAK,MAAM,EACZp/O,EAAKtR,CAAI,IAIlB0wP,EAAQ,QAAQ1wP,CAAI,EACbnC,EACT,CAQA,SAAS04P,EAAQv2P,EAAM,CACrB,GAAIA,IAAS,KACX,MAAO,GAET,MAAMglC,EAAOsqN,EAAWtvP,CAAI,EAC5B,IAAIuB,EAAQ,GACZ,GAAIyjC,EAGF,KAAO,EAAEzjC,EAAQyjC,EAAK,QAAQ,CAC5B,MAAM1O,EAAO0O,EAAKzjC,CAAK,EACvB,GAAI,CAAC+0B,EAAK,UAAYA,EAAK,SAAS,KAAKmhJ,EAAMA,EAAK,QAAQ,EAC1D,MAAO,EAEX,CAEF,MAAO,EACT,CACF,CACF,CAQA,SAASirF,GAAeK,EAAe,CACrC,OAAOC,EAGP,SAASA,EAAejiQ,EAAQs2C,EAAS,CACvC,IAAI91C,EAAQ,GAERs1P,EAIJ,KAAO,EAAEt1P,GAASR,EAAO,QACnB81P,IAAU,OACR91P,EAAOQ,CAAK,GAAKR,EAAOQ,CAAK,EAAE,CAAC,EAAE,OAAS,SAC7Cs1P,EAAQt1P,EACRA,MAEO,CAACR,EAAOQ,CAAK,GAAKR,EAAOQ,CAAK,EAAE,CAAC,EAAE,OAAS,UAEjDA,IAAUs1P,EAAQ,IACpB91P,EAAO81P,CAAK,EAAE,CAAC,EAAE,IAAM91P,EAAOQ,EAAQ,CAAC,EAAE,CAAC,EAAE,IAC5CR,EAAO,OAAO81P,EAAQ,EAAGt1P,EAAQs1P,EAAQ,CAAC,EAC1Ct1P,EAAQs1P,EAAQ,GAElBA,EAAQ,QAGZ,OAAOkM,EAAgBA,EAAchiQ,EAAQs2C,CAAO,EAAIt2C,CAC1D,CACF,CAaA,SAAS6hQ,GAAuB7hQ,EAAQs2C,EAAS,CAC/C,IAAIwgN,EAAa,EAEjB,KAAO,EAAEA,GAAc92P,EAAO,QAC5B,IAAK82P,IAAe92P,EAAO,QAAUA,EAAO82P,CAAU,EAAE,CAAC,EAAE,OAAS,eAAiB92P,EAAO82P,EAAa,CAAC,EAAE,CAAC,EAAE,OAAS,OAAQ,CAC9H,MAAMh6P,EAAOkD,EAAO82P,EAAa,CAAC,EAAE,CAAC,EAC/BoL,EAAS5rN,EAAQ,YAAYx5C,CAAI,EACvC,IAAI0D,EAAQ0hQ,EAAO,OACfC,EAAc,GACdt8O,EAAO,EAEP6tC,EACJ,KAAOlzD,KAAS,CACd,MAAM4hQ,EAAQF,EAAO1hQ,CAAK,EAC1B,GAAI,OAAO4hQ,GAAU,SAAU,CAE7B,IADAD,EAAcC,EAAM,OACbA,EAAM,WAAWD,EAAc,CAAC,IAAM,IAC3Ct8O,IACAs8O,IAEF,GAAIA,EAAa,MACjBA,EAAc,EAChB,SAESC,IAAU,GACjB1uM,EAAO,GACP7tC,YACSu8O,IAAU,GAEd,CAEL5hQ,IACA,KACF,CACF,CAMA,GAHI81C,EAAQ,0BAA4BwgN,IAAe92P,EAAO,SAC5D6lB,EAAO,GAELA,EAAM,CACR,MAAM6P,EAAQ,CACZ,KAAMohO,IAAe92P,EAAO,QAAU0zD,GAAQ7tC,EAAO,EAAI,aAAe,oBACxE,MAAO,CACL,aAAcrlB,EAAQ2hQ,EAAcrlQ,EAAK,MAAM,aAAeqlQ,EAC9D,OAAQrlQ,EAAK,MAAM,OAAS0D,EAC5B,KAAM1D,EAAK,IAAI,KACf,OAAQA,EAAK,IAAI,OAAS+oB,EAC1B,OAAQ/oB,EAAK,IAAI,OAAS+oB,CACtC,EACU,IAAK,CACH,GAAG/oB,EAAK,GACpB,CACA,EACQA,EAAK,IAAM,CACT,GAAG44B,EAAM,KACnB,EACY54B,EAAK,MAAM,SAAWA,EAAK,IAAI,OACjC,OAAO,OAAOA,EAAM44B,CAAK,GAEzB11B,EAAO,OAAO82P,EAAY,EAAG,CAAC,QAASphO,EAAO4gB,CAAO,EAAG,CAAC,OAAQ5gB,EAAO4gB,CAAO,CAAC,EAChFwgN,GAAc,EAElB,CACAA,GACF,CAEF,OAAO92P,CACT,+ECtIgC,CAC9B,KAAM,CAAC,GAAI,EAAE,CACf,iBArD8B,CAC3B,GAAK+lP,EACR,UAsDuB,CACrB,KAAM,CAAA,CACR,WA5EwB,CACrB,GAAK9hN,GACL,GAAKA,GACL,GAAKA,GACL,GAAKA,GACL,GAAKA,GACL,GAAKA,GACL,GAAKA,GACL,GAAKA,GACL,GAAKA,GACL,GAAKA,GACL,GAAKA,GACL,GAAKA,GACL,GAAKA,GACL,GAAKmvN,EACR,OAeoB,CACjB,GAAKuG,GACL,GAAKsG,GACL,GAAK,CAACkB,GAAiBlB,EAAa,EACpC,GAAKhG,GACL,GAAKkH,GACL,GAAKlB,GACL,GAAKjM,GACL,IAAMA,EACT,cAhB2B,CACzB,CAAC,EAAE,EAAGmB,GACN,CAAC,EAAE,EAAGA,GACL,GAAKA,EACR,aAqC0B,CACxB,KAAM,CAACtD,GAAWwQ,EAAW,CAC/B,SAxBsB,CACnB,GAAKxU,GACL,GAAK6F,EACR,OAGoB,CAClB,CAAC,EAAE,EAAGqM,GACN,CAAC,EAAE,EAAGA,GACN,CAAC,EAAE,EAAGA,GACL,GAAKJ,GACL,GAAK9R,GACL,GAAKgE,GACL,GAAK,CAACY,GAAU6J,EAAQ,EACxB,GAAKuD,GACL,GAAK,CAACpG,GAAiB/F,EAAe,EACtC,GAAKmK,GACL,GAAKhM,GACL,GAAK4D,EACR,yCCTO,SAAS6M,GAAgBr6C,EAAQs6C,EAAY3kO,EAAM,CAExD,IAAI6lF,EAAQ,CACV,aAAc,GACd,OAAQ,EACR,KAAM7lF,GAAQA,EAAK,MAAQ,EAC3B,OAAQA,GAAQA,EAAK,QAAU,EAC/B,OAAQA,GAAQA,EAAK,QAAU,CACnC,EAEE,MAAM4kO,EAAc,CAAA,EAEdC,EAAuB,CAAA,EAE7B,IAAIP,EAAS,CAAA,EAEThmQ,EAAQ,CAAA,EASZ,MAAMyzP,EAAU,CACd,QAAS+S,EAAiBC,CAAqB,EAC/C,MAAOD,EAAiBE,CAAiB,EACzC,QAAAC,EACA,MAAA/M,EACA,KAAAxC,EACA,UAAWoP,EAAiBE,EAAmB,CAC7C,UAAW,EACjB,CAAK,CACL,EAOQtsN,EAAU,CACd,KAAM,KACN,eAAgB,CAAA,EAChB,WAAAwsN,EACA,OAAQ,CAAA,EACR,IAAA7mN,EACA,OAAAgsK,EACA,SAAU,KACV,eAAA86C,EACA,YAAAC,EACA,MAAAC,CACJ,EAOE,IAAI5rP,EAAQkrP,EAAW,SAAS,KAAKjsN,EAASq5M,CAAO,EAQrD,OAAI4S,EAAW,YACbE,EAAqB,KAAKF,CAAU,EAE/BjsN,EAGP,SAAS2sN,EAAMlwP,EAAO,CAKpB,OAJAmvP,EAAS1qF,GAAK0qF,EAAQnvP,CAAK,EAC3BmwP,EAAI,EAGAhB,EAAOA,EAAO,OAAS,CAAC,IAAM,KACzB,CAAA,GAETiB,EAAUZ,EAAY,CAAC,EAGvBjsN,EAAQ,OAASq7M,GAAW8Q,EAAsBnsN,EAAQ,OAAQA,CAAO,EAClEA,EAAQ,OACjB,CAOA,SAASysN,EAAertO,EAAO0tO,EAAY,CACzC,OAAOC,GAAgBL,EAAYttO,CAAK,EAAG0tO,CAAU,CACvD,CAGA,SAASJ,EAAYttO,EAAO,CAC1B,OAAO4tO,GAAYpB,EAAQxsO,CAAK,CAClC,CAGA,SAASumB,GAAM,CAEb,KAAM,CACJ,aAAAsnN,EACA,OAAAC,EACA,KAAAjlO,EACA,OAAAC,EACA,OAAAwB,CACN,EAAQyjF,EACJ,MAAO,CACL,aAAA8/I,EACA,OAAAC,EACA,KAAAjlO,EACA,OAAAC,EACA,OAAAwB,CACN,CACE,CAGA,SAAS8iO,EAAW9lQ,EAAO,CACzBwlQ,EAAYxlQ,EAAM,IAAI,EAAIA,EAAM,OAChCymQ,EAAuB,CACzB,CAiBA,SAASP,GAAO,CAEd,IAAIQ,EACJ,KAAOjgJ,EAAM,OAASy+I,EAAO,QAAQ,CACnC,MAAME,EAAQF,EAAOz+I,EAAM,MAAM,EAGjC,GAAI,OAAO2+I,GAAU,SAKnB,IAJAsB,EAAajgJ,EAAM,OACfA,EAAM,aAAe,IACvBA,EAAM,aAAe,GAEhBA,EAAM,SAAWigJ,GAAcjgJ,EAAM,aAAe2+I,EAAM,QAC/DnlE,EAAGmlE,EAAM,WAAW3+I,EAAM,YAAY,CAAC,OAGzCw5E,EAAGmlE,CAAK,CAEZ,CACF,CAUA,SAASnlE,EAAGh+L,EAAM,CAGhBoY,EAAQA,EAAMpY,CAAI,CACpB,CAGA,SAAS4jQ,EAAQ5jQ,EAAM,CACjBmwP,GAAmBnwP,CAAI,GACzBwkH,EAAM,OACNA,EAAM,OAAS,EACfA,EAAM,QAAUxkH,IAAS,GAAK,EAAI,EAClCwkQ,EAAuB,GACdxkQ,IAAS,KAClBwkH,EAAM,SACNA,EAAM,UAIJA,EAAM,aAAe,EACvBA,EAAM,UAENA,EAAM,eAGFA,EAAM,eAIVy+I,EAAOz+I,EAAM,MAAM,EAAE,SACnBA,EAAM,aAAe,GACrBA,EAAM,WAKVntE,EAAQ,SAAWr3C,CAIrB,CAGA,SAAS62P,EAAM12P,EAAM8jE,EAAQ,CAG3B,MAAMxtC,EAAQwtC,GAAU,CAAA,EACxB,OAAAxtC,EAAM,KAAOt2B,EACbs2B,EAAM,MAAQumB,EAAG,EACjB3F,EAAQ,OAAO,KAAK,CAAC,QAAS5gB,EAAO4gB,CAAO,CAAC,EAC7Cp6C,EAAM,KAAKw5B,CAAK,EACTA,CACT,CAGA,SAAS49N,EAAKl0P,EAAM,CAClB,MAAMs2B,EAAQx5B,EAAM,IAAG,EACvB,OAAAw5B,EAAM,IAAMumB,EAAG,EACf3F,EAAQ,OAAO,KAAK,CAAC,OAAQ5gB,EAAO4gB,CAAO,CAAC,EACrC5gB,CACT,CAOA,SAASitO,EAAsB77K,EAAW7lD,EAAM,CAC9CkiO,EAAUr8K,EAAW7lD,EAAK,IAAI,CAChC,CAOA,SAAS2hO,EAAkB/1N,EAAG5L,EAAM,CAClCA,EAAK,QAAO,CACd,CAUA,SAASyhO,EAAiBiB,EAAUzgM,EAAQ,CAC1C,OAAOorL,EAeP,SAASA,EAAKC,EAAYiO,EAAaoH,EAAY,CAEjD,IAAIC,EAEAC,EAEAC,EAEA9iO,EACJ,OAAO,MAAM,QAAQstN,CAAU,EAC/ByV,EAAuBzV,CAAU,EAAI,aAAcA,EAEnDyV,EAAuB,CAA0BzV,CAAU,CAAE,EAAI0V,EAAsB1V,CAAU,EAUjG,SAAS0V,EAAsB5qK,GAAK,CAClC,OAAOywC,GAGP,SAASA,GAAM7qI,GAAM,CACnB,MAAMm1B,GAAOn1B,KAAS,MAAQo6F,GAAIp6F,EAAI,EAChC0uP,GAAM1uP,KAAS,MAAQo6F,GAAI,KAC3Bp1D,EAAO,CAGb,GAAI,MAAM,QAAQ7P,EAAI,EAAIA,GAAOA,GAAO,CAACA,EAAI,EAAI,CAAA,EAAK,GAAI,MAAM,QAAQu5N,EAAG,EAAIA,GAAMA,GAAM,CAACA,EAAG,EAAI,CAAA,CAAG,EACtG,OAAOqW,EAAuB//N,CAAI,EAAEhlC,EAAI,CAC1C,CACF,CAUA,SAAS+kQ,EAAuB//N,GAAM,CAGpC,OAFA4/N,EAAmB5/N,GACnB6/N,EAAiB,EACb7/N,GAAK,SAAW,EACX2/N,EAEFM,EAAgBjgO,GAAK6/N,CAAc,CAAC,CAC7C,CAUA,SAASI,EAAgBp9K,GAAW,CAClC,OAAOgjD,GAGP,SAASA,GAAM7qI,GAAM,CAanB,OARAgiC,EAAO31B,EAAK,EACZy4P,EAAmBj9K,GACdA,GAAU,UACbxwC,EAAQ,iBAAmBwwC,IAKzBA,GAAU,MAAQxwC,EAAQ,OAAO,WAAW,QAAQ,KAAK,SAASwwC,GAAU,IAAI,EAC3E2qK,EAAQ,EAEV3qK,GAAU,SAAS,KAI1B5jB,EAAS,OAAO,OAAO,OAAO,OAAO5sB,CAAO,EAAG4sB,CAAM,EAAI5sB,EAASq5M,EAASpK,EAAIkM,CAAG,EAAExyP,EAAI,CAC1F,CACF,CAGA,SAASsmP,EAAGtmP,GAAM,CAEhB,OAAA0kQ,EAASI,EAAkB9iO,CAAI,EACxBu7N,CACT,CAGA,SAAS/K,EAAIxyP,GAAM,CAGjB,OADAgiC,EAAK,QAAO,EACR,EAAE6iO,EAAiBD,EAAiB,OAC/BK,EAAgBL,EAAiBC,CAAc,CAAC,EAElDF,CACT,CACF,CACF,CAUA,SAAST,EAAUr8K,EAAWlpD,EAAM,CAC9BkpD,EAAU,YAAc,CAAC27K,EAAqB,SAAS37K,CAAS,GAClE27K,EAAqB,KAAK37K,CAAS,EAEjCA,EAAU,SACZgnK,GAAOx3M,EAAQ,OAAQ1Y,EAAM0Y,EAAQ,OAAO,OAAS1Y,EAAMkpD,EAAU,QAAQxwC,EAAQ,OAAO,MAAM1Y,CAAI,EAAG0Y,CAAO,CAAC,EAE/GwwC,EAAU,YACZxwC,EAAQ,OAASwwC,EAAU,UAAUxwC,EAAQ,OAAQA,CAAO,EAEhE,CAQA,SAAShrC,GAAQ,CACf,MAAMm6K,EAAaxpI,EAAG,EAChBkoN,EAAgB7tN,EAAQ,SACxB8tN,EAAwB9tN,EAAQ,iBAChC+tN,EAAmB/tN,EAAQ,OAAO,OAClCguN,EAAa,MAAM,KAAKpoQ,CAAK,EACnC,MAAO,CACL,KAAMmoQ,EACN,QAAAE,CACN,EAQI,SAASA,GAAU,CACjB9gJ,EAAQgiE,EACRnvI,EAAQ,SAAW6tN,EACnB7tN,EAAQ,iBAAmB8tN,EAC3B9tN,EAAQ,OAAO,OAAS+tN,EACxBnoQ,EAAQooQ,EACRb,EAAuB,CACzB,CACF,CASA,SAASA,GAA0B,CAC7BhgJ,EAAM,QAAQ++I,GAAe/+I,EAAM,OAAS,IAC9CA,EAAM,OAAS++I,EAAY/+I,EAAM,IAAI,EACrCA,EAAM,QAAU++I,EAAY/+I,EAAM,IAAI,EAAI,EAE9C,CACF,CAYA,SAAS6/I,GAAYpB,EAAQxsO,EAAO,CAClC,MAAMymG,EAAazmG,EAAM,MAAM,OACzB8uO,EAAmB9uO,EAAM,MAAM,aAC/B0mG,EAAW1mG,EAAM,IAAI,OACrB+uO,EAAiB/uO,EAAM,IAAI,aAEjC,IAAIjb,EACJ,GAAI0hH,IAAeC,EAEjB3hH,EAAO,CAACynP,EAAO/lI,CAAU,EAAE,MAAMqoI,EAAkBC,CAAc,CAAC,MAC7D,CAEL,GADAhqP,EAAOynP,EAAO,MAAM/lI,EAAYC,CAAQ,EACpCooI,EAAmB,GAAI,CACzB,MAAMj0O,EAAO9V,EAAK,CAAC,EACf,OAAO8V,GAAS,SAClB9V,EAAK,CAAC,EAAI8V,EAAK,MAAMi0O,CAAgB,EAGrC/pP,EAAK,MAAK,CAEd,CACIgqP,EAAiB,GAEnBhqP,EAAK,KAAKynP,EAAO9lI,CAAQ,EAAE,MAAM,EAAGqoI,CAAc,CAAC,CAEvD,CACA,OAAOhqP,CACT,CAYA,SAAS4oP,GAAgBnB,EAAQkB,EAAY,CAC3C,IAAI5iQ,EAAQ,GAEZ,MAAMG,EAAS,CAAA,EAEf,IAAI+jQ,EACJ,KAAO,EAAElkQ,EAAQ0hQ,EAAO,QAAQ,CAC9B,MAAME,EAAQF,EAAO1hQ,CAAK,EAE1B,IAAIxD,EACJ,GAAI,OAAOolQ,GAAU,SACnBplQ,EAAQolQ,MACH,QAAQA,EAAK,CAClB,IAAK,GACH,CACEplQ,EAAQ,KACR,KACF,CACF,IAAK,GACH,CACEA,EAAQ;AAAA,EACR,KACF,CACF,IAAK,GACH,CACEA,EAAQ;AAAA,EACR,KACF,CACF,IAAK,GACH,CACEA,EAAQomQ,EAAa,IAAM,IAC3B,KACF,CACF,IAAK,GACH,CACE,GAAI,CAACA,GAAcsB,EAAO,SAC1B1nQ,EAAQ,IACR,KACF,CACF,QAGIA,EAAQ,OAAO,aAAaolQ,CAAK,CAE3C,CACIsC,EAAQtC,IAAU,GAClBzhQ,EAAO,KAAK3D,CAAK,CACnB,CACA,OAAO2D,EAAO,KAAK,EAAE,CACvB,CC1kBO,SAAS++B,GAAMjgC,EAAS,CAM7B,MAAMwoN,EAAS,CACb,WAJFkmC,GAAkB,CAACwW,GAAmB,IAFrBllQ,GAAW,CAAA,GAEuB,YAAc,CAAA,CAAG,CAAC,EAKnE,QAAS8Y,EAAOspB,EAAO,EACvB,QAAS,CAAA,EACT,SAAUtpB,EAAO03O,EAAQ,EACzB,KAAM13O,EAAOgpP,EAAI,EACjB,KAAM,CAAA,EACN,OAAQhpP,EAAO2yE,EAAM,EACrB,KAAM3yE,EAAOhI,EAAI,CACrB,EACE,OAAO03M,EAQP,SAAS1vM,EAAO09O,EAAS,CACvB,OAAO2O,EAEP,SAASA,EAAQhnO,EAAM,CACrB,OAAO0kO,GAAgBr6C,EAAQguC,EAASr4N,CAAI,CAC9C,CACF,CACF,CC3CO,SAASinO,GAAY7kQ,EAAQ,CAClC,KAAO,CAACs2P,GAAYt2P,CAAM,GAAG,CAG7B,OAAOA,CACT,CCAA,MAAMqU,GAAS,cAMR,SAASywP,IAAa,CAC3B,IAAItmO,EAAS,EACT67L,EAAS,GAETvwF,EAAQ,GAERi7H,EACJ,OAAOC,EAIP,SAASA,EAAahoQ,EAAOioQ,EAAU9mO,EAAK,CAE1C,MAAM+jO,EAAS,CAAA,EAEf,IAAI35P,EAEA1J,EAEAw8N,EAEA6pC,EAEAjmQ,EAWJ,IAVAjC,EAAQq9N,GAAU,OAAOr9N,GAAU,SAAWA,EAAM,SAAQ,EAAK,IAAI,YAAYioQ,GAAY,MAAS,EAAE,OAAOjoQ,CAAK,GACpHq+N,EAAgB,EAChBhB,EAAS,GACLvwF,IAEE9sI,EAAM,WAAW,CAAC,IAAM,OAC1Bq+N,IAEFvxF,EAAQ,QAEHuxF,EAAgBr+N,EAAM,QAAQ,CAKnC,GAJAqX,GAAO,UAAYgnN,EACnB9yN,EAAQ8L,GAAO,KAAKrX,CAAK,EACzBkoQ,EAAc38P,GAASA,EAAM,QAAU,OAAYA,EAAM,MAAQvL,EAAM,OACvEiC,EAAOjC,EAAM,WAAWkoQ,CAAW,EAC/B,CAAC38P,EAAO,CACV8xN,EAASr9N,EAAM,MAAMq+N,CAAa,EAClC,KACF,CACA,GAAIp8N,IAAS,IAAMo8N,IAAkB6pC,GAAeH,EAClD7C,EAAO,KAAK,EAAE,EACd6C,EAAmB,WAUnB,QARIA,IACF7C,EAAO,KAAK,EAAE,EACd6C,EAAmB,QAEjB1pC,EAAgB6pC,IAClBhD,EAAO,KAAKllQ,EAAM,MAAMq+N,EAAe6pC,CAAW,CAAC,EACnD1mO,GAAU0mO,EAAc7pC,GAElBp8N,EAAI,CACV,IAAK,GACH,CACEijQ,EAAO,KAAK,KAAK,EACjB1jO,IACA,KACF,CACF,IAAK,GACH,CAGE,IAFA3/B,EAAO,KAAK,KAAK2/B,EAAS,CAAC,EAAI,EAC/B0jO,EAAO,KAAK,EAAE,EACP1jO,IAAW3/B,GAAMqjQ,EAAO,KAAK,EAAE,EACtC,KACF,CACF,IAAK,IACH,CACEA,EAAO,KAAK,EAAE,EACd1jO,EAAS,EACT,KACF,CACF,QAEIumO,EAAmB,GACnBvmO,EAAS,CAEvB,CAEM68L,EAAgB6pC,EAAc,CAChC,CACA,OAAI/mO,IACE4mO,GAAkB7C,EAAO,KAAK,EAAE,EAChC7nC,GAAQ6nC,EAAO,KAAK7nC,CAAM,EAC9B6nC,EAAO,KAAK,IAAI,GAEXA,CACT,CACF,CChHA,MAAMiD,GAA6B,oEAc5B,SAASC,GAAapoQ,EAAO,CAClC,OAAOA,EAAM,QAAQmoQ,GAA4BE,EAAM,CACzD,CAYA,SAASA,GAAOzd,EAAI0d,EAAIC,EAAI,CAC1B,GAAID,EAEF,OAAOA,EAKT,GADaC,EAAG,WAAW,CAAC,IACf,GAAI,CACf,MAAMh1O,EAAOg1O,EAAG,WAAW,CAAC,EACtBn3N,EAAM7d,IAAS,KAAOA,IAAS,GACrC,OAAOm+N,GAAgC6W,EAAG,MAAMn3N,EAAM,EAAI,CAAC,EAAGA,EAAM,GAAK,EAAE,CAC7E,CACA,OAAOw/M,GAA8B2X,CAAE,GAAK3d,CAC9C,CCIA,MAAMmD,GAAM,CAAA,EAAG,eAyBR,SAASya,GAAaxoQ,EAAOioQ,EAAUxlQ,EAAS,CACrD,OAAI,OAAOwlQ,GAAa,WACtBxlQ,EAAUwlQ,EACVA,EAAW,QAENQ,GAAShmQ,CAAO,EAAEolQ,GAAYnlO,GAAMjgC,CAAO,EAAE,SAAQ,EAAG,MAAMqlQ,GAAU,EAAG9nQ,EAAOioQ,EAAU,EAAI,CAAC,CAAC,CAAC,CAC5G,CAOA,SAASQ,GAAShmQ,EAAS,CAEzB,MAAMkZ,EAAS,CACb,WAAY,CAAA,EACZ,eAAgB,CAAC,WAAY,WAAY,UAAW,YAAa,QAAQ,EACzE,MAAO,CACL,SAAU+sP,EAAO91G,EAAI,EACrB,iBAAkB+1G,EAClB,cAAeA,EACf,WAAYD,EAAOpE,EAAO,EAC1B,WAAYoE,EAAOtS,EAAU,EAC7B,gBAAiBuS,EACjB,mBAAoBA,EACpB,WAAYD,EAAOE,CAAQ,EAC3B,oBAAqBvrC,EACrB,oBAAqBA,EACrB,aAAcqrC,EAAOE,EAAUvrC,CAAM,EACrC,SAAUqrC,EAAOjQ,EAAUp7B,CAAM,EACjC,aAAcsrC,EACd,KAAMA,EACN,cAAeA,EACf,WAAYD,EAAO3f,EAAU,EAC7B,4BAA6B1rB,EAC7B,sBAAuBA,EACvB,sBAAuBA,EACvB,SAAUqrC,EAAOG,CAAQ,EACzB,gBAAiBH,EAAOI,EAAS,EACjC,kBAAmBJ,EAAOI,EAAS,EACnC,SAAUJ,EAAO38B,GAAM1O,CAAM,EAC7B,aAAcsrC,EACd,SAAUD,EAAO38B,GAAM1O,CAAM,EAC7B,aAAcsrC,EACd,MAAOD,EAAOpzM,EAAK,EACnB,MAAO+nK,EACP,KAAMqrC,EAAO91G,EAAI,EACjB,SAAU81G,EAAOK,EAAQ,EACzB,cAAeC,EACf,YAAaN,EAAOzhO,GAAMgiO,CAAkB,EAC5C,cAAeP,EAAOzhO,EAAI,EAC1B,UAAWyhO,EAAO3gK,EAAS,EAC3B,UAAWmhK,EACX,gBAAiB7rC,EACjB,0BAA2BA,EAC3B,oBAAqBA,EACrB,cAAeqrC,EAAOpE,EAAO,EAC7B,OAAQoE,EAAOpwD,EAAM,EACrB,cAAeowD,EAAOzF,EAAa,CACzC,EACI,KAAM,CACJ,WAAYkG,EAAM,EAClB,mBAAoBC,EACpB,SAAUD,EAAM,EAChB,cAAeE,GACf,iBAAkBC,GAClB,WAAYH,EAAM,EAClB,qBAAsBI,EACtB,oCAAqCC,EACrC,gCAAiCA,EACjC,wBAAyBC,GACzB,mBAAoBC,GACpB,WAAYP,EAAOQ,CAAgB,EACnC,gBAAiBC,EACjB,oBAAqBC,EACrB,oBAAqBC,EACrB,cAAeP,EACf,aAAcJ,EAAOY,CAAkB,EACvC,SAAUZ,EAAOa,CAAc,EAC/B,aAAcT,EACd,KAAMA,EACN,WAAYJ,EAAM,EAClB,4BAA6Bc,EAC7B,sBAAuBC,EACvB,sBAAuBC,EACvB,SAAUhB,EAAM,EAChB,gBAAiBA,EAAOiB,CAAe,EACvC,kBAAmBjB,EAAOiB,CAAe,EACzC,SAAUjB,EAAOkB,CAAc,EAC/B,aAAcd,EACd,SAAUJ,EAAOmB,CAAc,EAC/B,aAAcf,EACd,MAAOJ,EAAOoB,CAAW,EACzB,MAAOC,EACP,UAAWC,EACX,WAAYC,EACZ,KAAMvB,EAAOwB,CAAU,EACvB,SAAUxB,EAAM,EAChB,YAAaA,EAAM,EACnB,cAAeA,EAAM,EACrB,UAAWA,EAAM,EACjB,gBAAiByB,EACjB,0BAA2BC,EAC3B,oBAAqBC,EACrB,SAAUC,EACV,cAAe5B,EAAO6B,CAAmB,EACzC,0BAA2BC,EAC3B,kBAAmBC,EACnB,OAAQ/B,EAAM,EACd,cAAeA,EAAM,CAC3B,CACA,EACEgC,GAAUxvP,GAASlZ,GAAW,CAAA,GAAI,iBAAmB,CAAA,CAAE,EAGvD,MAAM3C,EAAO,CAAA,EACb,OAAO2iC,EAUP,SAASA,EAAQz/B,EAAQ,CAEvB,IAAI+zD,GAAO,CACT,KAAM,OACN,SAAU,CAAA,CAChB,EAEI,MAAMzd,GAAU,CACd,MAAO,CAACyd,EAAI,EACZ,WAAY,CAAA,EACZ,OAAAp7C,EACA,MAAAm9O,EACA,KAAAxC,EACA,OAAAj5B,EACA,OAAA+tC,EACA,KAAAtrQ,CACN,EAEUurQ,GAAY,CAAA,EAClB,IAAI7nQ,GAAQ,GACZ,KAAO,EAAEA,GAAQR,EAAO,QAGtB,GAAIA,EAAOQ,EAAK,EAAE,CAAC,EAAE,OAAS,eAAiBR,EAAOQ,EAAK,EAAE,CAAC,EAAE,OAAS,gBACvE,GAAIR,EAAOQ,EAAK,EAAE,CAAC,IAAM,QACvB6nQ,GAAU,KAAK7nQ,EAAK,MACf,CACL,MAAM+zP,GAAO8T,GAAU,IAAG,EAC1B7nQ,GAAQ8nQ,EAAYtoQ,EAAQu0P,GAAM/zP,EAAK,CACzC,CAIJ,IADAA,GAAQ,GACD,EAAEA,GAAQR,EAAO,QAAQ,CAC9B,MAAMihJ,GAAUtoI,EAAO3Y,EAAOQ,EAAK,EAAE,CAAC,CAAC,EACnCuqP,GAAI,KAAK9pG,GAASjhJ,EAAOQ,EAAK,EAAE,CAAC,EAAE,IAAI,GACzCygJ,GAAQjhJ,EAAOQ,EAAK,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,OAAO,OAAO,CAChD,eAAgBR,EAAOQ,EAAK,EAAE,CAAC,EAAE,cAC3C,EAAW81C,EAAO,EAAGt2C,EAAOQ,EAAK,EAAE,CAAC,CAAC,CAEjC,CAGA,GAAI81C,GAAQ,WAAW,OAAS,EAAG,CACjC,MAAMi+M,GAAOj+M,GAAQ,WAAWA,GAAQ,WAAW,OAAS,CAAC,GAC7Ci+M,GAAK,CAAC,GAAKgU,IACnB,KAAKjyN,GAAS,OAAWi+M,GAAK,CAAC,CAAC,CAC1C,CAkBA,IAfAxgM,GAAK,SAAW,CACd,MAAO0vD,GAAMzjH,EAAO,OAAS,EAAIA,EAAO,CAAC,EAAE,CAAC,EAAE,MAAQ,CACpD,KAAM,EACN,OAAQ,EACR,OAAQ,CAChB,CAAO,EACD,IAAKyjH,GAAMzjH,EAAO,OAAS,EAAIA,EAAOA,EAAO,OAAS,CAAC,EAAE,CAAC,EAAE,IAAM,CAChE,KAAM,EACN,OAAQ,EACR,OAAQ,CAChB,CAAO,CACP,EAGIQ,GAAQ,GACD,EAAEA,GAAQmY,EAAO,WAAW,QACjCo7C,GAAOp7C,EAAO,WAAWnY,EAAK,EAAEuzD,EAAI,GAAKA,GAE3C,OAAOA,EACT,CAQA,SAASu0M,EAAYtoQ,EAAQ8pI,GAAOrrG,GAAQ,CAC1C,IAAIj+B,GAAQspI,GAAQ,EAChB0+H,GAAmB,GACnBC,GAAa,GAEb1C,GAEAtP,GAEAiS,GAEA7H,GACJ,KAAO,EAAErgQ,IAASi+B,IAAQ,CACxB,MAAMv+B,GAAQF,EAAOQ,EAAK,EAC1B,OAAQN,GAAM,CAAC,EAAE,KAAI,CACnB,IAAK,gBACL,IAAK,cACL,IAAK,aACH,CACMA,GAAM,CAAC,IAAM,QACfsoQ,KAEAA,KAEF3H,GAAW,OACX,KACF,CACF,IAAK,kBACH,CACM3gQ,GAAM,CAAC,IAAM,UACX6lQ,IAAY,CAAClF,IAAY,CAAC2H,IAAoB,CAACE,KACjDA,GAAsBloQ,IAExBqgQ,GAAW,QAEb,KACF,CACF,IAAK,aACL,IAAK,gBACL,IAAK,iBACL,IAAK,iBACL,IAAK,2BAID,MAEJ,QAEIA,GAAW,MAEvB,CACM,GAAI,CAAC2H,IAAoBtoQ,GAAM,CAAC,IAAM,SAAWA,GAAM,CAAC,EAAE,OAAS,kBAAoBsoQ,KAAqB,IAAMtoQ,GAAM,CAAC,IAAM,SAAWA,GAAM,CAAC,EAAE,OAAS,iBAAmBA,GAAM,CAAC,EAAE,OAAS,eAAgB,CAC/M,GAAI6lQ,GAAU,CACZ,IAAI4C,GAAYnoQ,GAEhB,IADAi2P,GAAY,OACLkS,MAAa,CAClB,MAAMC,GAAY5oQ,EAAO2oQ,EAAS,EAClC,GAAIC,GAAU,CAAC,EAAE,OAAS,cAAgBA,GAAU,CAAC,EAAE,OAAS,kBAAmB,CACjF,GAAIA,GAAU,CAAC,IAAM,OAAQ,SACzBnS,KACFz2P,EAAOy2P,EAAS,EAAE,CAAC,EAAE,KAAO,kBAC5BgS,GAAa,IAEfG,GAAU,CAAC,EAAE,KAAO,aACpBnS,GAAYkS,EACd,SAAW,EAAAC,GAAU,CAAC,EAAE,OAAS,cAAgBA,GAAU,CAAC,EAAE,OAAS,oBAAsBA,GAAU,CAAC,EAAE,OAAS,8BAAgCA,GAAU,CAAC,EAAE,OAAS,oBAAsBA,GAAU,CAAC,EAAE,OAAS,kBAGnN,KAEJ,CACIF,KAAwB,CAACjS,IAAaiS,GAAsBjS,MAC9DsP,GAAS,QAAU,IAIrBA,GAAS,IAAM,OAAO,OAAO,CAAA,EAAItP,GAAYz2P,EAAOy2P,EAAS,EAAE,CAAC,EAAE,MAAQv2P,GAAM,CAAC,EAAE,GAAG,EACtFF,EAAO,OAAOy2P,IAAaj2P,GAAO,EAAG,CAAC,OAAQulQ,GAAU7lQ,GAAM,CAAC,CAAC,CAAC,EACjEM,KACAi+B,IACF,CAGA,GAAIv+B,GAAM,CAAC,EAAE,OAAS,iBAAkB,CAEtC,MAAMq1B,GAAO,CACX,KAAM,WACN,QAAS,GACT,MAAO,OAAO,OAAO,CAAA,EAAIr1B,GAAM,CAAC,EAAE,KAAK,EAEvC,IAAK,MACjB,EACU6lQ,GAAWxwO,GACXv1B,EAAO,OAAOQ,GAAO,EAAG,CAAC,QAAS+0B,GAAMr1B,GAAM,CAAC,CAAC,CAAC,EACjDM,KACAi+B,KACAiqO,GAAsB,OACtB7H,GAAW,EACb,CACF,CACF,CACA,OAAA7gQ,EAAO8pI,EAAK,EAAE,CAAC,EAAE,QAAU2+H,GACpBhqO,EACT,CAYA,SAASinO,EAAOntP,EAAQswP,GAAK,CAC3B,OAAOrpL,GAOP,SAASA,GAAK9pD,GAAO,CACnBogO,EAAM,KAAK,KAAMv9O,EAAOmd,EAAK,EAAGA,EAAK,EACjCmzO,IAAKA,GAAI,KAAK,KAAMnzO,EAAK,CAC/B,CACF,CAKA,SAAS2kM,GAAS,CAChB,KAAK,MAAM,KAAK,CACd,KAAM,WACN,SAAU,CAAA,CAChB,CAAK,CACH,CAKA,SAASy7B,EAAMj2O,EAAM6V,GAAOozO,GAAc,CACzB,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAEvB,SACf,KAAKjpP,CAAI,EAClB,KAAK,MAAM,KAAKA,CAAI,EACpB,KAAK,WAAW,KAAK,CAAC6V,GAAOozO,IAAgB,MAAS,CAAC,EACvDjpP,EAAK,SAAW,CACd,MAAO4jG,GAAM/tF,GAAM,KAAK,EAExB,IAAK,MACX,CACE,CAUA,SAASywO,EAAO0C,EAAK,CACnB,OAAOrtL,GAOP,SAASA,GAAM9lD,GAAO,CAChBmzO,GAAKA,EAAI,KAAK,KAAMnzO,EAAK,EAC7B49N,EAAK,KAAK,KAAM59N,EAAK,CACvB,CACF,CAKA,SAAS49N,EAAK59N,EAAOqzO,GAAa,CAChC,MAAMlpP,GAAO,KAAK,MAAM,IAAG,EACrB2/D,GAAO,KAAK,WAAW,IAAG,EAChC,GAAKA,GAKMA,GAAK,CAAC,EAAE,OAAS9pD,EAAM,OAC5BqzO,GACFA,GAAY,KAAK,KAAMrzO,EAAO8pD,GAAK,CAAC,CAAC,GAErBA,GAAK,CAAC,GAAK+oL,IACnB,KAAK,KAAM7yO,EAAO8pD,GAAK,CAAC,CAAC,OATnC,OAAM,IAAI,MAAM,iBAAmB9pD,EAAM,KAAO,MAAQg1N,GAAkB,CACxE,MAAOh1N,EAAM,MACb,IAAKA,EAAM,GACnB,CAAO,EAAI,kBAAkB,EASzB7V,GAAK,SAAS,IAAM4jG,GAAM/tF,EAAM,GAAG,CACrC,CAKA,SAAS0yO,GAAS,CAChB,OAAO5a,GAAS,KAAK,MAAM,IAAG,CAAE,CAClC,CAUA,SAASyY,GAAqB,CAC5B,KAAK,KAAK,4BAA8B,EAC1C,CAMA,SAASD,EAAqBtwO,EAAO,CACnC,GAAI,KAAK,KAAK,4BAA6B,CACzC,MAAMs0M,GAAW,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EACjDA,GAAS,MAAQ,OAAO,SAAS,KAAK,eAAet0M,CAAK,EAAG,EAAE,EAC/D,KAAK,KAAK,4BAA8B,MAC1C,CACF,CAMA,SAASmxO,GAA4B,CACnC,MAAM/pQ,EAAO,KAAK,OAAM,EAClB+iB,GAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,GAAK,KAAO/iB,CACd,CAMA,SAASgqQ,GAA4B,CACnC,MAAMhqQ,EAAO,KAAK,OAAM,EAClB+iB,GAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,GAAK,KAAO/iB,CACd,CAMA,SAAS8pQ,GAAwB,CAE3B,KAAK,KAAK,iBACd,KAAK,OAAM,EACX,KAAK,KAAK,eAAiB,GAC7B,CAMA,SAASD,GAAmB,CAC1B,MAAM7pQ,EAAO,KAAK,OAAM,EAClB+iB,GAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,GAAK,MAAQ/iB,EAAK,QAAQ,2BAA4B,EAAE,EACxD,KAAK,KAAK,eAAiB,MAC7B,CAMA,SAASiqQ,GAAqB,CAC5B,MAAMjqQ,EAAO,KAAK,OAAM,EAClB+iB,GAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,GAAK,MAAQ/iB,EAAK,QAAQ,eAAgB,EAAE,CAC9C,CAMA,SAASoqQ,EAA4BxxO,EAAO,CAC1C,MAAM2kF,GAAQ,KAAK,OAAM,EACnBx6F,GAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,GAAK,MAAQw6F,GACbx6F,GAAK,WAAa8uO,GAAoB,KAAK,eAAej5N,CAAK,CAAC,EAAE,YAAW,CAC/E,CAMA,SAASyxO,GAA8B,CACrC,MAAMrqQ,EAAO,KAAK,OAAM,EAClB+iB,GAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,GAAK,MAAQ/iB,CACf,CAMA,SAASmqQ,GAAoC,CAC3C,MAAMnqQ,EAAO,KAAK,OAAM,EAClB+iB,GAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,GAAK,IAAM/iB,CACb,CAMA,SAASspQ,EAAyB1wO,EAAO,CACvC,MAAM7V,GAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7C,GAAI,CAACA,GAAK,MAAO,CACf,MAAMmpP,GAAQ,KAAK,eAAetzO,CAAK,EAAE,OACzC7V,GAAK,MAAQmpP,EACf,CACF,CAMA,SAASd,GAA0B,CACjC,KAAK,KAAK,6BAA+B,EAC3C,CAMA,SAASD,EAAgCvyO,EAAO,CAC9C,MAAM7V,GAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,GAAK,MAAQ,KAAK,eAAe6V,CAAK,EAAE,YAAY,CAAC,IAAM,GAAK,EAAI,CACtE,CAMA,SAASsyO,GAAsB,CAC7B,KAAK,KAAK,6BAA+B,MAC3C,CAOA,SAASrC,EAAYjwO,EAAO,CAG1B,MAAMmJ,GAFO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAEvB,SACtB,IAAI01N,GAAO11N,GAASA,GAAS,OAAS,CAAC,GACnC,CAAC01N,IAAQA,GAAK,OAAS,UAEzBA,GAAOhkP,GAAI,EACXgkP,GAAK,SAAW,CACd,MAAO9wI,GAAM/tF,EAAM,KAAK,EAExB,IAAK,MACb,EACMmJ,GAAS,KAAK01N,EAAI,GAEpB,KAAK,MAAM,KAAKA,EAAI,CACtB,CAOA,SAASgS,EAAW7wO,EAAO,CACzB,MAAM6+N,GAAO,KAAK,MAAM,IAAG,EAC3BA,GAAK,OAAS,KAAK,eAAe7+N,CAAK,EACvC6+N,GAAK,SAAS,IAAM9wI,GAAM/tF,EAAM,GAAG,CACrC,CAOA,SAASgyO,EAAiBhyO,EAAO,CAC/B,MAAM4gB,GAAU,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAEhD,GAAI,KAAK,KAAK,YAAa,CACzB,MAAMi+M,GAAOj+M,GAAQ,SAASA,GAAQ,SAAS,OAAS,CAAC,EACzDi+M,GAAK,SAAS,IAAM9wI,GAAM/tF,EAAM,GAAG,EACnC,KAAK,KAAK,YAAc,OACxB,MACF,CACI,CAAC,KAAK,KAAK,8BAAgC/c,EAAO,eAAe,SAAS29B,GAAQ,IAAI,IACxFqvN,EAAY,KAAK,KAAMjwO,CAAK,EAC5B6wO,EAAW,KAAK,KAAM7wO,CAAK,EAE/B,CAOA,SAAS0xO,GAAkB,CACzB,KAAK,KAAK,YAAc,EAC1B,CAOA,SAASC,GAAiB,CACxB,MAAMvqQ,EAAO,KAAK,OAAM,EAClB+iB,GAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,GAAK,MAAQ/iB,CACf,CAOA,SAASwqQ,GAAiB,CACxB,MAAMxqQ,EAAO,KAAK,OAAM,EAClB+iB,GAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,GAAK,MAAQ/iB,CACf,CAOA,SAASkqQ,GAAiB,CACxB,MAAMlqQ,EAAO,KAAK,OAAM,EAClB+iB,GAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,GAAK,MAAQ/iB,CACf,CAOA,SAAS6qQ,GAAa,CACpB,MAAM9nP,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAK7C,GAAI,KAAK,KAAK,YAAa,CAEzB,MAAMopP,GAAgB,KAAK,KAAK,eAAiB,WACjDppP,EAAK,MAAQ,YAEbA,EAAK,cAAgBopP,GAErB,OAAOppP,EAAK,IACZ,OAAOA,EAAK,KACd,MAEE,OAAOA,EAAK,WAEZ,OAAOA,EAAK,MAEd,KAAK,KAAK,cAAgB,MAC5B,CAOA,SAAS0nP,GAAc,CACrB,MAAM1nP,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAK7C,GAAI,KAAK,KAAK,YAAa,CAEzB,MAAMopP,GAAgB,KAAK,KAAK,eAAiB,WACjDppP,EAAK,MAAQ,YAEbA,EAAK,cAAgBopP,GAErB,OAAOppP,EAAK,IACZ,OAAOA,EAAK,KACd,MAEE,OAAOA,EAAK,WAEZ,OAAOA,EAAK,MAEd,KAAK,KAAK,cAAgB,MAC5B,CAOA,SAAS4nP,EAAgB/xO,EAAO,CAC9B,MAAMw1D,GAAS,KAAK,eAAex1D,CAAK,EAClCs0M,GAAW,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAGjDA,GAAS,MAAQo7B,GAAal6K,EAAM,EAEpC8+I,GAAS,WAAa2kB,GAAoBzjK,EAAM,EAAE,YAAW,CAC/D,CAOA,SAASs8K,GAAc,CACrB,MAAM0B,EAAW,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC3ClsQ,GAAQ,KAAK,OAAM,EACnB6iB,GAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAG7C,GADA,KAAK,KAAK,YAAc,GACpBA,GAAK,OAAS,OAAQ,CAExB,MAAMrB,GAAW0qP,EAAS,SAC1BrpP,GAAK,SAAWrB,EAClB,MACEqB,GAAK,IAAM7iB,EAEf,CAOA,SAAS6qQ,GAAkC,CACzC,MAAM/qQ,EAAO,KAAK,OAAM,EAClB+iB,GAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,GAAK,IAAM/iB,CACb,CAOA,SAASgrQ,GAA4B,CACnC,MAAMhrQ,EAAO,KAAK,OAAM,EAClB+iB,GAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,GAAK,MAAQ/iB,CACf,CAOA,SAASirQ,GAAiB,CACxB,KAAK,KAAK,YAAc,MAC1B,CAOA,SAAS7B,GAAmB,CAC1B,KAAK,KAAK,cAAgB,WAC5B,CAOA,SAAS0B,EAAsBlyO,EAAO,CACpC,MAAM2kF,GAAQ,KAAK,OAAM,EACnBx6F,GAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAG7CA,GAAK,MAAQw6F,GAEbx6F,GAAK,WAAa8uO,GAAoB,KAAK,eAAej5N,CAAK,CAAC,EAAE,YAAW,EAC7E,KAAK,KAAK,cAAgB,MAC5B,CAOA,SAAS8wO,EAA+B9wO,EAAO,CAC7C,KAAK,KAAK,uBAAyBA,EAAM,IAC3C,CAMA,SAAS+wO,GAA8B/wO,EAAO,CAC5C,MAAM54B,GAAO,KAAK,eAAe44B,CAAK,EAChCt2B,GAAO,KAAK,KAAK,uBAEvB,IAAIpC,GACAoC,IACFpC,GAAQ0xP,GAAgC5xP,GAAMsC,KAAS,kCAAoC,GAAK,EAAE,EAClG,KAAK,KAAK,uBAAyB,QAGnCpC,GADe4wP,GAA8B9wP,EAAI,EAGnD,MAAMy3P,GAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,GAAK,OAASv3P,EAChB,CAMA,SAAS0pQ,GAAyBhxO,EAAO,CACvC,MAAM6+N,GAAO,KAAK,MAAM,IAAG,EAC3BA,GAAK,SAAS,IAAM9wI,GAAM/tF,EAAM,GAAG,CACrC,CAMA,SAAS4wO,GAAuB5wO,EAAO,CACrC6wO,EAAW,KAAK,KAAM7wO,CAAK,EAC3B,MAAM7V,GAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,GAAK,IAAM,KAAK,eAAe6V,CAAK,CACtC,CAMA,SAAS2wO,GAAoB3wO,EAAO,CAClC6wO,EAAW,KAAK,KAAM7wO,CAAK,EAC3B,MAAM7V,GAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,GAAK,IAAM,UAAY,KAAK,eAAe6V,CAAK,CAClD,CAOA,SAAS09N,IAAa,CACpB,MAAO,CACL,KAAM,aACN,SAAU,CAAA,CAChB,CACE,CAGA,SAASwS,GAAW,CAClB,MAAO,CACL,KAAM,OACN,KAAM,KACN,KAAM,KACN,MAAO,EACb,CACE,CAGA,SAASnQ,GAAW,CAClB,MAAO,CACL,KAAM,aACN,MAAO,EACb,CACE,CAGA,SAAS1P,IAAa,CACpB,MAAO,CACL,KAAM,aACN,WAAY,GACZ,MAAO,KACP,MAAO,KACP,IAAK,EACX,CACE,CAGA,SAAS8f,GAAW,CAClB,MAAO,CACL,KAAM,WACN,SAAU,CAAA,CAChB,CACE,CAGA,SAASvE,IAAU,CACjB,MAAO,CACL,KAAM,UAEN,MAAO,EACP,SAAU,CAAA,CAChB,CACE,CAGA,SAASwE,IAAY,CACnB,MAAO,CACL,KAAM,OACZ,CACE,CAGA,SAAS/8B,IAAO,CACd,MAAO,CACL,KAAM,OACN,MAAO,EACb,CACE,CAGA,SAASz2K,IAAQ,CACf,MAAO,CACL,KAAM,QACN,MAAO,KACP,IAAK,GACL,IAAK,IACX,CACE,CAGA,SAASs9F,IAAO,CACd,MAAO,CACL,KAAM,OACN,MAAO,KACP,IAAK,GACL,SAAU,CAAA,CAChB,CACE,CAMA,SAAS3rH,GAAKvO,EAAO,CACnB,MAAO,CACL,KAAM,OACN,QAASA,EAAM,OAAS,cACxB,MAAO,KACP,OAAQA,EAAM,QACd,SAAU,CAAA,CAChB,CACE,CAMA,SAASqwO,GAASrwO,EAAO,CACvB,MAAO,CACL,KAAM,WACN,OAAQA,EAAM,QACd,QAAS,KACT,SAAU,CAAA,CAChB,CACE,CAGA,SAASqvE,IAAY,CACnB,MAAO,CACL,KAAM,YACN,SAAU,CAAA,CAChB,CACE,CAGA,SAASuwG,IAAS,CAChB,MAAO,CACL,KAAM,SACN,SAAU,CAAA,CAChB,CACE,CAGA,SAAS/kM,IAAO,CACd,MAAO,CACL,KAAM,OACN,MAAO,EACb,CACE,CAGA,SAAS0vP,IAAgB,CACvB,MAAO,CACL,KAAM,eACZ,CACE,CACF,CAUA,SAASx8I,GAAMptG,EAAG,CAChB,MAAO,CACL,KAAMA,EAAE,KACR,OAAQA,EAAE,OACV,OAAQA,EAAE,MACd,CACA,CAOA,SAAS8xP,GAAUgB,EAAU9iD,EAAY,CACvC,IAAI7lN,EAAQ,GACZ,KAAO,EAAEA,EAAQ6lN,EAAW,QAAQ,CAClC,MAAMrpN,EAAQqpN,EAAW7lN,CAAK,EAC1B,MAAM,QAAQxD,CAAK,EACrBmrQ,GAAUgB,EAAUnsQ,CAAK,EAEzBqxP,GAAU8a,EAAUnsQ,CAAK,CAE7B,CACF,CAOA,SAASqxP,GAAU8a,EAAU9a,EAAW,CAEtC,IAAIxyP,EACJ,IAAKA,KAAOwyP,EACV,GAAItD,GAAI,KAAKsD,EAAWxyP,CAAG,EACzB,OAAQA,EAAG,CACT,IAAK,iBACH,CACE,MAAMw4B,EAAQg6N,EAAUxyP,CAAG,EACvBw4B,GACF80O,EAASttQ,CAAG,EAAE,KAAK,GAAGw4B,CAAK,EAE7B,KACF,CACF,IAAK,aACH,CACE,MAAMA,EAAQg6N,EAAUxyP,CAAG,EACvBw4B,GACF80O,EAASttQ,CAAG,EAAE,KAAK,GAAGw4B,CAAK,EAE7B,KACF,CACF,IAAK,QACL,IAAK,OACH,CACE,MAAMA,EAAQg6N,EAAUxyP,CAAG,EACvBw4B,GACF,OAAO,OAAO80O,EAASttQ,CAAG,EAAGw4B,CAAK,EAEpC,KACF,CAEV,CAGA,CAGA,SAASk0O,GAAen0O,EAAMC,EAAO,CACnC,MAAID,EACI,IAAI,MAAM,iBAAmBA,EAAK,KAAO,MAAQs2N,GAAkB,CACvE,MAAOt2N,EAAK,MACZ,IAAKA,EAAK,GAChB,CAAK,EAAI,0BAA4BC,EAAM,KAAO,MAAQq2N,GAAkB,CACtE,MAAOr2N,EAAM,MACb,IAAKA,EAAM,GACjB,CAAK,EAAI,WAAW,EAEV,IAAI,MAAM,oCAAsCA,EAAM,KAAO,MAAQq2N,GAAkB,CAC3F,MAAOr2N,EAAM,MACb,IAAKA,EAAM,GACjB,CAAK,EAAI,iBAAiB,CAE1B,CCnoCe,SAAS+0O,GAAY3pQ,EAAS,CAG3C,MAAMi3K,EAAO,KAEbA,EAAK,OAASuxC,EAKd,SAASA,EAAO3mI,EAAK,CACnB,OAAOkkL,GAAalkL,EAAK,CACvB,GAAGo1F,EAAK,KAAK,UAAU,EACvB,GAAGj3K,EAIH,WAAYi3K,EAAK,KAAK,qBAAqB,GAAK,CAAA,EAChD,gBAAiBA,EAAK,KAAK,wBAAwB,GAAK,CAAA,CAC9D,CAAK,CACH,CACF,CCvBO,SAAS2yF,GAAWhyP,EAAOwI,EAAM,CAEtC,MAAMlf,EAAS,CACb,KAAM,UACN,QAAS,aACT,WAAY,CAAA,EACZ,SAAU0W,EAAM,KAAKA,EAAM,IAAIwI,CAAI,EAAG,EAAI,CAC9C,EACE,OAAAxI,EAAM,MAAMwI,EAAMlf,CAAM,EACjB0W,EAAM,UAAUwI,EAAMlf,CAAM,CACrC,CCTO,SAASmlQ,GAAUzuP,EAAOwI,EAAM,CAErC,MAAMlf,EAAS,CAAC,KAAM,UAAW,QAAS,KAAM,WAAY,GAAI,SAAU,CAAA,CAAE,EAC5E,OAAA0W,EAAM,MAAMwI,EAAMlf,CAAM,EACjB,CAAC0W,EAAM,UAAUwI,EAAMlf,CAAM,EAAG,CAAC,KAAM,OAAQ,MAAO;AAAA,CAAI,CAAC,CACpE,CCLO,SAAS1B,GAAKoY,EAAOwI,EAAM,CAChC,MAAM7iB,EAAQ6iB,EAAK,MAAQA,EAAK,MAAQ;AAAA,EAAO,GAEzC+mO,EAAa,CAAA,EAEf/mO,EAAK,OACP+mO,EAAW,UAAY,CAAC,YAAc/mO,EAAK,IAAI,GAKjD,IAAIlf,EAAS,CACX,KAAM,UACN,QAAS,OACT,WAAAimP,EACA,SAAU,CAAC,CAAC,KAAM,OAAQ,MAAA5pP,CAAK,CAAC,CACpC,EAEE,OAAI6iB,EAAK,OACPlf,EAAO,KAAO,CAAC,KAAMkf,EAAK,IAAI,GAGhCxI,EAAM,MAAMwI,EAAMlf,CAAM,EACxBA,EAAS0W,EAAM,UAAUwI,EAAMlf,CAAM,EAGrCA,EAAS,CAAC,KAAM,UAAW,QAAS,MAAO,WAAY,CAAA,EAAI,SAAU,CAACA,CAAM,CAAC,EAC7E0W,EAAM,MAAMwI,EAAMlf,CAAM,EACjBA,CACT,CC9BO,SAAS2oQ,GAAcjyP,EAAOwI,EAAM,CAEzC,MAAMlf,EAAS,CACb,KAAM,UACN,QAAS,MACT,WAAY,CAAA,EACZ,SAAU0W,EAAM,IAAIwI,CAAI,CAC5B,EACE,OAAAxI,EAAM,MAAMwI,EAAMlf,CAAM,EACjB0W,EAAM,UAAUwI,EAAMlf,CAAM,CACrC,CCVO,SAASklQ,GAASxuP,EAAOwI,EAAM,CAEpC,MAAMlf,EAAS,CACb,KAAM,UACN,QAAS,KACT,WAAY,CAAA,EACZ,SAAU0W,EAAM,IAAIwI,CAAI,CAC5B,EACE,OAAAxI,EAAM,MAAMwI,EAAMlf,CAAM,EACjB0W,EAAM,UAAUwI,EAAMlf,CAAM,CACrC,CCXO,SAAS4oQ,GAAkBlyP,EAAOwI,EAAM,CAC7C,MAAM2pP,EACJ,OAAOnyP,EAAM,QAAQ,eAAkB,SACnCA,EAAM,QAAQ,cACd,gBACA4F,EAAK,OAAO4C,EAAK,UAAU,EAAE,YAAW,EACxC4pP,EAASha,GAAaxyO,EAAG,YAAW,CAAE,EACtCzc,EAAQ6W,EAAM,cAAc,QAAQ4F,CAAE,EAE5C,IAAIysP,EAEAC,EAAetyP,EAAM,eAAe,IAAI4F,CAAE,EAE1C0sP,IAAiB,QACnBA,EAAe,EACftyP,EAAM,cAAc,KAAK4F,CAAE,EAC3BysP,EAAUryP,EAAM,cAAc,QAE9BqyP,EAAUlpQ,EAAQ,EAGpBmpQ,GAAgB,EAChBtyP,EAAM,eAAe,IAAI4F,EAAI0sP,CAAY,EAGzC,MAAM/5G,EAAO,CACX,KAAM,UACN,QAAS,IACT,WAAY,CACV,KAAM,IAAM45G,EAAgB,MAAQC,EACpC,GACED,EACA,SACAC,GACCE,EAAe,EAAI,IAAMA,EAAe,IAC3C,gBAAiB,GACjB,gBAAiB,CAAC,gBAAgB,CACxC,EACI,SAAU,CAAC,CAAC,KAAM,OAAQ,MAAO,OAAOD,CAAO,CAAC,CAAC,CACrD,EACEryP,EAAM,MAAMwI,EAAM+vI,CAAI,EAGtB,MAAMg6G,EAAM,CACV,KAAM,UACN,QAAS,MACT,WAAY,CAAA,EACZ,SAAU,CAACh6G,CAAI,CACnB,EACE,OAAAv4I,EAAM,MAAMwI,EAAM+pP,CAAG,EACdvyP,EAAM,UAAUwI,EAAM+pP,CAAG,CAClC,CClDO,SAAStI,GAAQjqP,EAAOwI,EAAM,CAEnC,MAAMlf,EAAS,CACb,KAAM,UACN,QAAS,IAAMkf,EAAK,MACpB,WAAY,CAAA,EACZ,SAAUxI,EAAM,IAAIwI,CAAI,CAC5B,EACE,OAAAxI,EAAM,MAAMwI,EAAMlf,CAAM,EACjB0W,EAAM,UAAUwI,EAAMlf,CAAM,CACrC,CCRO,SAASooO,GAAK1xN,EAAOwI,EAAM,CAChC,GAAIxI,EAAM,QAAQ,mBAAoB,CAEpC,MAAM1W,EAAS,CAAC,KAAM,MAAO,MAAOkf,EAAK,KAAK,EAC9C,OAAAxI,EAAM,MAAMwI,EAAMlf,CAAM,EACjB0W,EAAM,UAAUwI,EAAMlf,CAAM,CACrC,CAGF,CCRO,SAASkpQ,GAAOxyP,EAAOwI,EAAM,CAClC,MAAM8yN,EAAU9yN,EAAK,cACrB,IAAI1b,EAAS,IAQb,GANIwuO,IAAY,YACdxuO,GAAU,KACDwuO,IAAY,SACrBxuO,GAAU,KAAO0b,EAAK,OAASA,EAAK,YAAc,KAGhDA,EAAK,OAAS,iBAChB,MAAO,CAAC,CAAC,KAAM,OAAQ,MAAO,KAAOA,EAAK,IAAM1b,CAAM,CAAC,EAGzD,MAAM2lQ,EAAWzyP,EAAM,IAAIwI,CAAI,EACzB0Q,EAAOu5O,EAAS,CAAC,EAEnBv5O,GAAQA,EAAK,OAAS,OACxBA,EAAK,MAAQ,IAAMA,EAAK,MAExBu5O,EAAS,QAAQ,CAAC,KAAM,OAAQ,MAAO,GAAG,CAAC,EAG7C,MAAMvV,EAAOuV,EAASA,EAAS,OAAS,CAAC,EAEzC,OAAIvV,GAAQA,EAAK,OAAS,OACxBA,EAAK,OAASpwP,EAEd2lQ,EAAS,KAAK,CAAC,KAAM,OAAQ,MAAO3lQ,CAAM,CAAC,EAGtC2lQ,CACT,CCjCO,SAASC,GAAe1yP,EAAOwI,EAAM,CAC1C,MAAM5C,EAAK,OAAO4C,EAAK,UAAU,EAAE,YAAW,EACxCkmO,EAAa1uO,EAAM,eAAe,IAAI4F,CAAE,EAE9C,GAAI,CAAC8oO,EACH,OAAO8jB,GAAOxyP,EAAOwI,CAAI,EAI3B,MAAM+mO,EAAa,CAAC,IAAK6I,GAAa1J,EAAW,KAAO,EAAE,EAAG,IAAKlmO,EAAK,GAAG,EAEtEkmO,EAAW,QAAU,MAAQA,EAAW,QAAU,SACpDa,EAAW,MAAQb,EAAW,OAIhC,MAAMplP,EAAS,CAAC,KAAM,UAAW,QAAS,MAAO,WAAAimP,EAAY,SAAU,CAAA,CAAE,EACzE,OAAAvvO,EAAM,MAAMwI,EAAMlf,CAAM,EACjB0W,EAAM,UAAUwI,EAAMlf,CAAM,CACrC,CCrBO,SAAS2xD,GAAMj7C,EAAOwI,EAAM,CAEjC,MAAM+mO,EAAa,CAAC,IAAK6I,GAAa5vO,EAAK,GAAG,CAAC,EAE3CA,EAAK,MAAQ,MAAQA,EAAK,MAAQ,SACpC+mO,EAAW,IAAM/mO,EAAK,KAGpBA,EAAK,QAAU,MAAQA,EAAK,QAAU,SACxC+mO,EAAW,MAAQ/mO,EAAK,OAI1B,MAAMlf,EAAS,CAAC,KAAM,UAAW,QAAS,MAAO,WAAAimP,EAAY,SAAU,CAAA,CAAE,EACzE,OAAAvvO,EAAM,MAAMwI,EAAMlf,CAAM,EACjB0W,EAAM,UAAUwI,EAAMlf,CAAM,CACrC,CCfO,SAASqpQ,GAAW3yP,EAAOwI,EAAM,CAEtC,MAAMtP,EAAO,CAAC,KAAM,OAAQ,MAAOsP,EAAK,MAAM,QAAQ,YAAa,GAAG,CAAC,EACvExI,EAAM,MAAMwI,EAAMtP,CAAI,EAGtB,MAAM5P,EAAS,CACb,KAAM,UACN,QAAS,OACT,WAAY,CAAA,EACZ,SAAU,CAAC4P,CAAI,CACnB,EACE,OAAA8G,EAAM,MAAMwI,EAAMlf,CAAM,EACjB0W,EAAM,UAAUwI,EAAMlf,CAAM,CACrC,CCbO,SAASspQ,GAAc5yP,EAAOwI,EAAM,CACzC,MAAM5C,EAAK,OAAO4C,EAAK,UAAU,EAAE,YAAW,EACxCkmO,EAAa1uO,EAAM,eAAe,IAAI4F,CAAE,EAE9C,GAAI,CAAC8oO,EACH,OAAO8jB,GAAOxyP,EAAOwI,CAAI,EAI3B,MAAM+mO,EAAa,CAAC,KAAM6I,GAAa1J,EAAW,KAAO,EAAE,CAAC,EAExDA,EAAW,QAAU,MAAQA,EAAW,QAAU,SACpDa,EAAW,MAAQb,EAAW,OAIhC,MAAMplP,EAAS,CACb,KAAM,UACN,QAAS,IACT,WAAAimP,EACA,SAAUvvO,EAAM,IAAIwI,CAAI,CAC5B,EACE,OAAAxI,EAAM,MAAMwI,EAAMlf,CAAM,EACjB0W,EAAM,UAAUwI,EAAMlf,CAAM,CACrC,CC1BO,SAASivJ,GAAKv4I,EAAOwI,EAAM,CAEhC,MAAM+mO,EAAa,CAAC,KAAM6I,GAAa5vO,EAAK,GAAG,CAAC,EAE5CA,EAAK,QAAU,MAAQA,EAAK,QAAU,SACxC+mO,EAAW,MAAQ/mO,EAAK,OAI1B,MAAMlf,EAAS,CACb,KAAM,UACN,QAAS,IACT,WAAAimP,EACA,SAAUvvO,EAAM,IAAIwI,CAAI,CAC5B,EACE,OAAAxI,EAAM,MAAMwI,EAAMlf,CAAM,EACjB0W,EAAM,UAAUwI,EAAMlf,CAAM,CACrC,CCZO,SAASolQ,GAAS1uP,EAAOwI,EAAM+e,EAAQ,CAC5C,MAAM4oD,EAAUnwE,EAAM,IAAIwI,CAAI,EACxBqqP,EAAQtrO,EAASurO,GAAUvrO,CAAM,EAAIwrO,GAAcvqP,CAAI,EAEvD+mO,EAAa,CAAA,EAEbpoO,EAAW,CAAA,EAEjB,GAAI,OAAOqB,EAAK,SAAY,UAAW,CACrC,MAAM0Q,EAAOi3D,EAAQ,CAAC,EAEtB,IAAIud,EAEAx0E,GAAQA,EAAK,OAAS,WAAaA,EAAK,UAAY,IACtDw0E,EAAYx0E,GAEZw0E,EAAY,CAAC,KAAM,UAAW,QAAS,IAAK,WAAY,GAAI,SAAU,CAAA,CAAE,EACxEvd,EAAQ,QAAQud,CAAS,GAGvBA,EAAU,SAAS,OAAS,GAC9BA,EAAU,SAAS,QAAQ,CAAC,KAAM,OAAQ,MAAO,GAAG,CAAC,EAGvDA,EAAU,SAAS,QAAQ,CACzB,KAAM,UACN,QAAS,QACT,WAAY,CAAC,KAAM,WAAY,QAASllF,EAAK,QAAS,SAAU,EAAI,EACpE,SAAU,CAAA,CAChB,CAAK,EAID+mO,EAAW,UAAY,CAAC,gBAAgB,CAC1C,CAEA,IAAIpmP,EAAQ,GAEZ,KAAO,EAAEA,EAAQgnF,EAAQ,QAAQ,CAC/B,MAAM/oE,EAAQ+oE,EAAQhnF,CAAK,GAIzB0pQ,GACA1pQ,IAAU,GACVie,EAAM,OAAS,WACfA,EAAM,UAAY,MAElBD,EAAS,KAAK,CAAC,KAAM,OAAQ,MAAO;AAAA,CAAI,CAAC,EAGvCC,EAAM,OAAS,WAAaA,EAAM,UAAY,KAAO,CAACyrP,EACxD1rP,EAAS,KAAK,GAAGC,EAAM,QAAQ,EAE/BD,EAAS,KAAKC,CAAK,CAEvB,CAEA,MAAM81O,EAAO/sK,EAAQA,EAAQ,OAAS,CAAC,EAGnC+sK,IAAS2V,GAAS3V,EAAK,OAAS,WAAaA,EAAK,UAAY,MAChE/1O,EAAS,KAAK,CAAC,KAAM,OAAQ,MAAO;AAAA,CAAI,CAAC,EAI3C,MAAM7d,EAAS,CAAC,KAAM,UAAW,QAAS,KAAM,WAAAimP,EAAY,SAAApoO,CAAQ,EACpE,OAAAnH,EAAM,MAAMwI,EAAMlf,CAAM,EACjB0W,EAAM,UAAUwI,EAAMlf,CAAM,CACrC,CAMA,SAASwpQ,GAAUtqP,EAAM,CACvB,IAAIqqP,EAAQ,GACZ,GAAIrqP,EAAK,OAAS,OAAQ,CACxBqqP,EAAQrqP,EAAK,QAAU,GACvB,MAAMrB,EAAWqB,EAAK,SACtB,IAAIrf,EAAQ,GAEZ,KAAO,CAAC0pQ,GAAS,EAAE1pQ,EAAQge,EAAS,QAClC0rP,EAAQE,GAAc5rP,EAAShe,CAAK,CAAC,CAEzC,CAEA,OAAO0pQ,CACT,CAMA,SAASE,GAAcvqP,EAAM,CAC3B,MAAMwqP,EAASxqP,EAAK,OAEpB,OAAOwqP,GACHxqP,EAAK,SAAS,OAAS,CAE7B,CCxGO,SAASokB,GAAK5sB,EAAOwI,EAAM,CAEhC,MAAM+mO,EAAa,CAAA,EACbp/J,EAAUnwE,EAAM,IAAIwI,CAAI,EAC9B,IAAIrf,EAAQ,GAOZ,IALI,OAAOqf,EAAK,OAAU,UAAYA,EAAK,QAAU,IACnD+mO,EAAW,MAAQ/mO,EAAK,OAInB,EAAErf,EAAQgnF,EAAQ,QAAQ,CAC/B,MAAM/oE,EAAQ+oE,EAAQhnF,CAAK,EAE3B,GACEie,EAAM,OAAS,WACfA,EAAM,UAAY,MAClBA,EAAM,YACN,MAAM,QAAQA,EAAM,WAAW,SAAS,GACxCA,EAAM,WAAW,UAAU,SAAS,gBAAgB,EACpD,CACAmoO,EAAW,UAAY,CAAC,oBAAoB,EAC5C,KACF,CACF,CAGA,MAAMjmP,EAAS,CACb,KAAM,UACN,QAASkf,EAAK,QAAU,KAAO,KAC/B,WAAA+mO,EACA,SAAUvvO,EAAM,KAAKmwE,EAAS,EAAI,CACtC,EACE,OAAAnwE,EAAM,MAAMwI,EAAMlf,CAAM,EACjB0W,EAAM,UAAUwI,EAAMlf,CAAM,CACrC,CCpCO,SAASokG,GAAU1tF,EAAOwI,EAAM,CAErC,MAAMlf,EAAS,CACb,KAAM,UACN,QAAS,IACT,WAAY,CAAA,EACZ,SAAU0W,EAAM,IAAIwI,CAAI,CAC5B,EACE,OAAAxI,EAAM,MAAMwI,EAAMlf,CAAM,EACjB0W,EAAM,UAAUwI,EAAMlf,CAAM,CACrC,CCTO,SAASovB,GAAK1Y,EAAOwI,EAAM,CAEhC,MAAMlf,EAAS,CAAC,KAAM,OAAQ,SAAU0W,EAAM,KAAKA,EAAM,IAAIwI,CAAI,CAAC,CAAC,EACnE,OAAAxI,EAAM,MAAMwI,EAAMlf,CAAM,EACjB0W,EAAM,UAAUwI,EAAMlf,CAAM,CACrC,CCNO,SAAS20M,GAAOj+L,EAAOwI,EAAM,CAElC,MAAMlf,EAAS,CACb,KAAM,UACN,QAAS,SACT,WAAY,CAAA,EACZ,SAAU0W,EAAM,IAAIwI,CAAI,CAC5B,EACE,OAAAxI,EAAM,MAAMwI,EAAMlf,CAAM,EACjB0W,EAAM,UAAUwI,EAAMlf,CAAM,CACrC,CCXO,SAAS6yD,GAAMn8C,EAAOwI,EAAM,CACjC,MAAMqkF,EAAO7sF,EAAM,IAAIwI,CAAI,EACrByqP,EAAWpmK,EAAK,MAAK,EAErBqmK,EAAe,CAAA,EAErB,GAAID,EAAU,CAEZ,MAAM/5O,EAAO,CACX,KAAM,UACN,QAAS,QACT,WAAY,CAAA,EACZ,SAAUlZ,EAAM,KAAK,CAACizP,CAAQ,EAAG,EAAI,CAC3C,EACIjzP,EAAM,MAAMwI,EAAK,SAAS,CAAC,EAAG0Q,CAAI,EAClCg6O,EAAa,KAAKh6O,CAAI,CACxB,CAEA,GAAI2zE,EAAK,OAAS,EAAG,CAEnB,MAAM8kI,EAAO,CACX,KAAM,UACN,QAAS,QACT,WAAY,CAAA,EACZ,SAAU3xN,EAAM,KAAK6sF,EAAM,EAAI,CACrC,EAEU4lC,EAAQ2gH,GAAW5qO,EAAK,SAAS,CAAC,CAAC,EACnCse,EAAMqsN,GAAS3qO,EAAK,SAASA,EAAK,SAAS,OAAS,CAAC,CAAC,EACxDiqH,GAAS3rG,IAAK6qM,EAAK,SAAW,CAAC,MAAAl/F,EAAO,IAAA3rG,CAAG,GAC7CosO,EAAa,KAAKvhC,CAAI,CACxB,CAGA,MAAMroO,EAAS,CACb,KAAM,UACN,QAAS,QACT,WAAY,CAAA,EACZ,SAAU0W,EAAM,KAAKkzP,EAAc,EAAI,CAC3C,EACE,OAAAlzP,EAAM,MAAMwI,EAAMlf,CAAM,EACjB0W,EAAM,UAAUwI,EAAMlf,CAAM,CACrC,CCpCO,SAAS6pQ,GAASnzP,EAAOwI,EAAM+e,EAAQ,CAC5C,MAAMC,EAAWD,EAASA,EAAO,SAAW,OAGtCi8N,GADWh8N,EAAWA,EAAS,QAAQhf,CAAI,EAAI,KACxB,EAAI,KAAO,KAElC88F,EAAQ/9E,GAAUA,EAAO,OAAS,QAAUA,EAAO,MAAQ,OAC3DH,EAASk+E,EAAQA,EAAM,OAAS98F,EAAK,SAAS,OACpD,IAAI4qP,EAAY,GAEhB,MAAMp7N,EAAQ,CAAA,EAEd,KAAO,EAAEo7N,EAAYhsO,GAAQ,CAE3B,MAAM44D,EAAOx3E,EAAK,SAAS4qP,CAAS,EAE9B7jB,EAAa,CAAA,EACbz9D,EAAaxsE,EAAQA,EAAM8tJ,CAAS,EAAI,OAE1CthF,IACFy9D,EAAW,MAAQz9D,GAIrB,IAAIxoL,EAAS,CAAC,KAAM,UAAW,QAAAk6P,EAAS,WAAAjU,EAAY,SAAU,CAAA,CAAE,EAE5DvvJ,IACF12F,EAAO,SAAW0W,EAAM,IAAIggF,CAAI,EAChChgF,EAAM,MAAMggF,EAAM12F,CAAM,EACxBA,EAAS0W,EAAM,UAAUggF,EAAM12F,CAAM,GAGvC0uC,EAAM,KAAK1uC,CAAM,CACnB,CAGA,MAAMA,EAAS,CACb,KAAM,UACN,QAAS,KACT,WAAY,CAAA,EACZ,SAAU0W,EAAM,KAAKg4B,EAAO,EAAI,CACpC,EACE,OAAAh4B,EAAM,MAAMwI,EAAMlf,CAAM,EACjB0W,EAAM,UAAUwI,EAAMlf,CAAM,CACrC,CCjDO,SAAS+pQ,GAAUrzP,EAAOwI,EAAM,CAIrC,MAAMlf,EAAS,CACb,KAAM,UACN,QAAS,KACT,WAAY,CAAA,EACZ,SAAU0W,EAAM,IAAIwI,CAAI,CAC5B,EACE,OAAAxI,EAAM,MAAMwI,EAAMlf,CAAM,EACjB0W,EAAM,UAAUwI,EAAMlf,CAAM,CACrC,CC/BA,MAAMga,GAAM,EACNs2C,GAAQ,GAWP,SAAS05M,GAAU3tQ,EAAO,CAC/B,MAAMG,EAAS,OAAOH,CAAK,EACrBqX,EAAS,YACf,IAAI9L,EAAQ8L,EAAO,KAAKlX,CAAM,EAC1BV,EAAO,EAEX,MAAMusP,EAAQ,CAAA,EAEd,KAAOzgP,GACLygP,EAAM,KACJ4hB,GAASztQ,EAAO,MAAMV,EAAM8L,EAAM,KAAK,EAAG9L,EAAO,EAAG,EAAI,EACxD8L,EAAM,CAAC,CACb,EAEI9L,EAAO8L,EAAM,MAAQA,EAAM,CAAC,EAAE,OAC9BA,EAAQ8L,EAAO,KAAKlX,CAAM,EAG5B,OAAA6rP,EAAM,KAAK4hB,GAASztQ,EAAO,MAAMV,CAAI,EAAGA,EAAO,EAAG,EAAK,CAAC,EAEjDusP,EAAM,KAAK,EAAE,CACtB,CAYA,SAAS4hB,GAAS5tQ,EAAO8sI,EAAO3rG,EAAK,CACnC,IAAIg+F,EAAa,EACbC,EAAWp/H,EAAM,OAErB,GAAI8sI,EAAO,CACT,IAAI7qI,EAAOjC,EAAM,YAAYm/H,CAAU,EAEvC,KAAOl9H,IAAS0b,IAAO1b,IAASgyD,IAC9BkrE,IACAl9H,EAAOjC,EAAM,YAAYm/H,CAAU,CAEvC,CAEA,GAAIh+F,EAAK,CACP,IAAIl/B,EAAOjC,EAAM,YAAYo/H,EAAW,CAAC,EAEzC,KAAOn9H,IAAS0b,IAAO1b,IAASgyD,IAC9BmrE,IACAn9H,EAAOjC,EAAM,YAAYo/H,EAAW,CAAC,CAEzC,CAEA,OAAOA,EAAWD,EAAan/H,EAAM,MAAMm/H,EAAYC,CAAQ,EAAI,EACrE,CCjDO,SAAS7rH,GAAK8G,EAAOwI,EAAM,CAEhC,MAAMlf,EAAS,CAAC,KAAM,OAAQ,MAAOgqQ,GAAU,OAAO9qP,EAAK,KAAK,CAAC,CAAC,EAClE,OAAAxI,EAAM,MAAMwI,EAAMlf,CAAM,EACjB0W,EAAM,UAAUwI,EAAMlf,CAAM,CACrC,CCLO,SAASs/P,GAAc5oP,EAAOwI,EAAM,CAEzC,MAAMlf,EAAS,CACb,KAAM,UACN,QAAS,KACT,WAAY,CAAA,EACZ,SAAU,CAAA,CACd,EACE,OAAA0W,EAAM,MAAMwI,EAAMlf,CAAM,EACjB0W,EAAM,UAAUwI,EAAMlf,CAAM,CACrC,CCAO,MAAMs1N,GAAW,CACxB,WAAEozC,GACA,MAAOvD,GACT,KAAE7mQ,GACA,OAAQqqQ,GACV,SAAEzD,GACF,kBAAE0D,GACF,QAAEjI,GACF,KAAEv4B,GACF,eAAEghC,GACF,MAAEz3M,GACF,WAAE03M,GACF,cAAEC,GACF,KAAEr6G,GACF,SAAEm2G,GACF,KAAE9hO,GACF,UAAE8gE,GAEF,KAAEh1E,GACF,OAAEulL,GACA,MAAA9hJ,GACA,UAAAk3M,GACA,SAAAF,GACF,KAAEj6P,GACF,cAAE0vP,GACA,KAAMhvP,GACN,KAAMA,GACN,WAAYA,GACZ,mBAAoBA,EACtB,EAGA,SAASA,IAAS,CAElB,CC/DO,MAAM45P,GAAa,GACbC,GAAa,EACbC,GAAa,EACbC,GAAa,EACbC,GAAa,EACbC,GAAa,EACbC,GAAa,EACbC,GAAa,EACbC,GAAa,EACbC,GAAa,ECFpBC,GAAM,OAAO,MAAS,SAAW,KAAO,WAExCC,GAAe,CAACxjD,EAAGn7K,IAAM,CAC7B,MAAM4+N,EAAK,CAACC,EAAKlrQ,KACfwnN,EAAE,IAAIxnN,EAAOkrQ,CAAG,EACTA,GAGHC,EAASnrQ,GAAS,CACtB,GAAIwnN,EAAE,IAAIxnN,CAAK,EACb,OAAOwnN,EAAE,IAAIxnN,CAAK,EAEpB,KAAM,CAACpB,EAAMpC,CAAK,EAAI6vC,EAAErsC,CAAK,EAC7B,OAAQpB,EAAI,CACV,KAAK0rQ,GACL,KAAKD,GACH,OAAOY,EAAGzuQ,EAAOwD,CAAK,EACxB,KAAKuqQ,GAAO,CACV,MAAM7kP,EAAMulP,EAAG,CAAA,EAAIjrQ,CAAK,EACxB,UAAWA,KAASxD,EAClBkpB,EAAI,KAAKylP,EAAOnrQ,CAAK,CAAC,EACxB,OAAO0lB,CACT,CACA,KAAK8kP,GAAQ,CACX,MAAM3vQ,EAASowQ,EAAG,CAAA,EAAIjrQ,CAAK,EAC3B,SAAW,CAAC3E,EAAK2E,CAAK,IAAKxD,EACzB3B,EAAOswQ,EAAO9vQ,CAAG,CAAC,EAAI8vQ,EAAOnrQ,CAAK,EACpC,OAAOnF,CACT,CACA,KAAK4vQ,GACH,OAAOQ,EAAG,IAAI,KAAKzuQ,CAAK,EAAGwD,CAAK,EAClC,KAAK0qQ,GAAQ,CACX,KAAM,CAAC,OAAA/tQ,EAAQ,MAAAyuQ,CAAK,EAAI5uQ,EACxB,OAAOyuQ,EAAG,IAAI,OAAOtuQ,EAAQyuQ,CAAK,EAAGprQ,CAAK,CAC5C,CACA,KAAK2qQ,GAAK,CACR,MAAM9xK,EAAMoyK,EAAG,IAAI,IAAKjrQ,CAAK,EAC7B,SAAW,CAAC3E,EAAK2E,CAAK,IAAKxD,EACzBq8F,EAAI,IAAIsyK,EAAO9vQ,CAAG,EAAG8vQ,EAAOnrQ,CAAK,CAAC,EACpC,OAAO64F,CACT,CACA,KAAK+xK,GAAK,CACR,MAAMhyP,EAAMqyP,EAAG,IAAI,IAAKjrQ,CAAK,EAC7B,UAAWA,KAASxD,EAClBoc,EAAI,IAAIuyP,EAAOnrQ,CAAK,CAAC,EACvB,OAAO4Y,CACT,CACA,KAAKiyP,GAAO,CACV,KAAM,CAAC,KAAA3gQ,EAAM,QAAAsO,CAAO,EAAIhc,EACxB,OAAOyuQ,EAAG,IAAIF,GAAI7gQ,CAAI,EAAEsO,CAAO,EAAGxY,CAAK,CACzC,CACA,KAAK8qQ,GACH,OAAOG,EAAG,OAAOzuQ,CAAK,EAAGwD,CAAK,EAChC,IAAK,SACH,OAAOirQ,EAAG,OAAO,OAAOzuQ,CAAK,CAAC,EAAGwD,CAAK,EACxC,IAAK,cACH,OAAOirQ,EAAG,IAAI,WAAWzuQ,CAAK,EAAE,OAAQA,CAAK,EAC/C,IAAK,WAAY,CACf,KAAM,CAAE,OAAAq9N,CAAM,EAAK,IAAI,WAAWr9N,CAAK,EACvC,OAAOyuQ,EAAG,IAAI,SAASpxC,CAAM,EAAGr9N,CAAK,CACvC,CACN,CACI,OAAOyuQ,EAAG,IAAIF,GAAInsQ,CAAI,EAAEpC,CAAK,EAAGwD,CAAK,CACvC,EAEA,OAAOmrQ,CACT,EAWaE,GAAcrpO,GAAcgpO,GAAa,IAAI,IAAKhpO,CAAU,EAAE,CAAC,EC7EtEghL,GAAQ,GAER,CAAC,SAAAgqC,EAAQ,EAAI,CAAA,EACb,CAAC,KAAAxrP,EAAI,EAAI,OAET4f,GAAS5kB,GAAS,CACtB,MAAMoC,EAAO,OAAOpC,EACpB,GAAIoC,IAAS,UAAY,CAACpC,EACxB,MAAO,CAAC8tQ,GAAW1rQ,CAAI,EAEzB,MAAM0sQ,EAAWte,GAAS,KAAKxwP,CAAK,EAAE,MAAM,EAAG,EAAE,EACjD,OAAQ8uQ,EAAQ,CACd,IAAK,QACH,MAAO,CAACf,GAAOvnD,EAAK,EACtB,IAAK,SACH,MAAO,CAACwnD,GAAQxnD,EAAK,EACvB,IAAK,OACH,MAAO,CAACynD,GAAMznD,EAAK,EACrB,IAAK,SACH,MAAO,CAAC0nD,GAAQ1nD,EAAK,EACvB,IAAK,MACH,MAAO,CAAC2nD,GAAK3nD,EAAK,EACpB,IAAK,MACH,MAAO,CAAC4nD,GAAK5nD,EAAK,EACpB,IAAK,WACH,MAAO,CAACunD,GAAOe,CAAQ,CAC7B,CAEE,OAAIA,EAAS,SAAS,OAAO,EACpB,CAACf,GAAOe,CAAQ,EAErBA,EAAS,SAAS,OAAO,EACpB,CAACT,GAAOS,CAAQ,EAElB,CAACd,GAAQc,CAAQ,CAC1B,EAEMC,GAAa,CAAC,CAAC9nD,EAAM7kN,CAAI,IAC7B6kN,IAAS6mD,KACR1rQ,IAAS,YAAcA,IAAS,UAG7B4sQ,GAAa,CAACjiO,EAAQ0tD,EAAMuwH,EAAGn7K,IAAM,CAEzC,MAAM4+N,EAAK,CAACC,EAAK1uQ,IAAU,CACzB,MAAMwD,EAAQqsC,EAAE,KAAK6+N,CAAG,EAAI,EAC5B,OAAA1jD,EAAE,IAAIhrN,EAAOwD,CAAK,EACXA,CACT,EAEMyzC,EAAOj3C,GAAS,CACpB,GAAIgrN,EAAE,IAAIhrN,CAAK,EACb,OAAOgrN,EAAE,IAAIhrN,CAAK,EAEpB,GAAI,CAACinN,EAAM7kN,CAAI,EAAIwiB,GAAO5kB,CAAK,EAC/B,OAAQinN,EAAI,CACV,KAAK6mD,GAAW,CACd,IAAI3kP,EAAQnpB,EACZ,OAAQoC,EAAI,CACV,IAAK,SACH6kN,EAAOqnD,GACPnlP,EAAQnpB,EAAM,SAAQ,EACtB,MACF,IAAK,WACL,IAAK,SACH,GAAI+sC,EACF,MAAM,IAAI,UAAU,uBAAyB3qC,CAAI,EACnD+mB,EAAQ,KACR,MACF,IAAK,YACH,OAAOslP,EAAG,CAACZ,EAAI,EAAG7tQ,CAAK,CACnC,CACQ,OAAOyuQ,EAAG,CAACxnD,EAAM99L,CAAK,EAAGnpB,CAAK,CAChC,CACA,KAAK+tQ,GAAO,CACV,GAAI3rQ,EAAM,CACR,IAAIirQ,EAASrtQ,EACb,OAAIoC,IAAS,WACXirQ,EAAS,IAAI,WAAWrtQ,EAAM,MAAM,EAE7BoC,IAAS,gBAChBirQ,EAAS,IAAI,WAAWrtQ,CAAK,GAExByuQ,EAAG,CAACrsQ,EAAM,CAAC,GAAGirQ,CAAM,CAAC,EAAGrtQ,CAAK,CACtC,CAEA,MAAMkpB,EAAM,CAAA,EACN1lB,EAAQirQ,EAAG,CAACxnD,EAAM/9L,CAAG,EAAGlpB,CAAK,EACnC,UAAWmpB,KAASnpB,EAClBkpB,EAAI,KAAK+tB,EAAK9tB,CAAK,CAAC,EACtB,OAAO3lB,CACT,CACA,KAAKwqQ,GAAQ,CACX,GAAI5rQ,EACF,OAAQA,EAAI,CACV,IAAK,SACH,OAAOqsQ,EAAG,CAACrsQ,EAAMpC,EAAM,SAAQ,CAAE,EAAGA,CAAK,EAC3C,IAAK,UACL,IAAK,SACL,IAAK,SACH,OAAOyuQ,EAAG,CAACrsQ,EAAMpC,EAAM,QAAO,CAAE,EAAGA,CAAK,CACtD,CAGQ,GAAIy6F,GAAS,WAAYz6F,EACvB,OAAOi3C,EAAKj3C,EAAM,QAAQ,EAE5B,MAAMqpB,EAAU,CAAA,EACV7lB,EAAQirQ,EAAG,CAACxnD,EAAM59L,CAAO,EAAGrpB,CAAK,EACvC,UAAWnB,KAAOmG,GAAKhF,CAAK,GACtB+sC,GAAU,CAACgiO,GAAWnqP,GAAO5kB,EAAMnB,CAAG,CAAC,CAAC,IAC1CwqB,EAAQ,KAAK,CAAC4tB,EAAKp4C,CAAG,EAAGo4C,EAAKj3C,EAAMnB,CAAG,CAAC,CAAC,CAAC,EAE9C,OAAO2E,CACT,CACA,KAAKyqQ,GACH,OAAOQ,EAAG,CAACxnD,EAAMjnN,EAAM,YAAW,CAAE,EAAGA,CAAK,EAC9C,KAAKkuQ,GAAQ,CACX,KAAM,CAAC,OAAA/tQ,EAAQ,MAAAyuQ,CAAK,EAAI5uQ,EACxB,OAAOyuQ,EAAG,CAACxnD,EAAM,CAAC,OAAA9mN,EAAQ,MAAAyuQ,CAAK,CAAC,EAAG5uQ,CAAK,CAC1C,CACA,KAAKmuQ,GAAK,CACR,MAAM9kP,EAAU,CAAA,EACV7lB,EAAQirQ,EAAG,CAACxnD,EAAM59L,CAAO,EAAGrpB,CAAK,EACvC,SAAW,CAACnB,EAAKsqB,CAAK,IAAKnpB,GACrB+sC,GAAU,EAAEgiO,GAAWnqP,GAAO/lB,CAAG,CAAC,GAAKkwQ,GAAWnqP,GAAOuE,CAAK,CAAC,KACjEE,EAAQ,KAAK,CAAC4tB,EAAKp4C,CAAG,EAAGo4C,EAAK9tB,CAAK,CAAC,CAAC,EAEzC,OAAO3lB,CACT,CACA,KAAK4qQ,GAAK,CACR,MAAM/kP,EAAU,CAAA,EACV7lB,EAAQirQ,EAAG,CAACxnD,EAAM59L,CAAO,EAAGrpB,CAAK,EACvC,UAAWmpB,KAASnpB,GACd+sC,GAAU,CAACgiO,GAAWnqP,GAAOuE,CAAK,CAAC,IACrCE,EAAQ,KAAK4tB,EAAK9tB,CAAK,CAAC,EAE5B,OAAO3lB,CACT,CACN,CAEI,KAAM,CAAC,QAAAwY,CAAO,EAAIhc,EAClB,OAAOyuQ,EAAG,CAACxnD,EAAM,CAAC,KAAM7kN,EAAM,QAAA4Z,CAAO,CAAC,EAAGhc,CAAK,CAChD,EAEA,OAAOi3C,CACT,EAccpT,GAAY,CAAC7jC,EAAO,CAAC,KAAAy6F,EAAM,MAAAw0K,CAAK,EAAI,KAAO,CACvD,MAAMp/N,EAAI,CAAA,EACV,OAAOm/N,GAAW,EAAEv0K,GAAQw0K,GAAQ,CAAC,CAACx0K,EAAM,IAAI,IAAK5qD,CAAC,EAAE7vC,CAAK,EAAG6vC,CAClE,EC3JAq/N,GAAe,OAAO,iBAAoB,WAExC,CAACxhL,EAAKjrF,IACJA,IAAY,SAAUA,GAAW,UAAWA,GAC1CosQ,GAAYhrO,GAAU6pD,EAAKjrF,CAAO,CAAC,EAAI,gBAAgBirF,CAAG,EAE9D,CAACA,EAAKjrF,IAAYosQ,GAAYhrO,GAAU6pD,EAAKjrF,CAAO,CAAC,EC2DhD,SAAS0sQ,GAA2Bt/N,EAAGu/N,EAAkB,CAE9D,MAAMzrQ,EAAS,CAAC,CAAC,KAAM,OAAQ,MAAO,GAAG,CAAC,EAE1C,OAAIyrQ,EAAmB,GACrBzrQ,EAAO,KAAK,CACV,KAAM,UACN,QAAS,MACT,WAAY,CAAA,EACZ,SAAU,CAAC,CAAC,KAAM,OAAQ,MAAO,OAAOyrQ,CAAgB,CAAC,CAAC,CAChE,CAAK,EAGIzrQ,CACT,CAaO,SAAS0rQ,GAAyBC,EAAgBF,EAAkB,CACzE,MACE,sBACCE,EAAiB,IACjBF,EAAmB,EAAI,IAAMA,EAAmB,GAErD,CAWO,SAASvqL,GAAOxqE,EAAO,CAC5B,MAAMmyP,EACJ,OAAOnyP,EAAM,QAAQ,eAAkB,SACnCA,EAAM,QAAQ,cACd,gBACAk1P,EACJl1P,EAAM,QAAQ,qBAAuB80P,GACjCK,EACJn1P,EAAM,QAAQ,mBAAqBg1P,GAC/BI,EAAgBp1P,EAAM,QAAQ,eAAiB,YAC/Cq1P,EAAuBr1P,EAAM,QAAQ,sBAAwB,KAC7Ds1P,EAA0Bt1P,EAAM,QAAQ,yBAA2B,CACvE,UAAW,CAAC,SAAS,CACzB,EAEQu1P,EAAY,CAAA,EAClB,IAAIN,EAAiB,GAErB,KAAO,EAAEA,EAAiBj1P,EAAM,cAAc,QAAQ,CACpD,MAAM0uO,EAAa1uO,EAAM,aAAa,IACpCA,EAAM,cAAci1P,CAAc,CACxC,EAEI,GAAI,CAACvmB,EACH,SAGF,MAAMlkN,EAAUxqB,EAAM,IAAI0uO,CAAU,EAC9B9oO,EAAK,OAAO8oO,EAAW,UAAU,EAAE,YAAW,EAC9C0jB,EAASha,GAAaxyO,EAAG,YAAW,CAAE,EAC5C,IAAImvP,EAAmB,EAEvB,MAAMS,EAAiB,CAAA,EACjB3kF,EAAS7wK,EAAM,eAAe,IAAI4F,CAAE,EAG1C,KAAOirK,IAAW,QAAa,EAAEkkF,GAAoBlkF,GAAQ,CACvD2kF,EAAe,OAAS,GAC1BA,EAAe,KAAK,CAAC,KAAM,OAAQ,MAAO,GAAG,CAAC,EAGhD,IAAIruP,EACF,OAAO+tP,GAAwB,SAC3BA,EACAA,EAAoBD,EAAgBF,CAAgB,EAEtD,OAAO5tP,GAAa,WACtBA,EAAW,CAAC,KAAM,OAAQ,MAAOA,CAAQ,GAG3CquP,EAAe,KAAK,CAClB,KAAM,UACN,QAAS,IACT,WAAY,CACV,KACE,IACArD,EACA,SACAC,GACC2C,EAAmB,EAAI,IAAMA,EAAmB,IACnD,oBAAqB,GACrB,UACE,OAAOI,GAAsB,SACzBA,EACAA,EAAkBF,EAAgBF,CAAgB,EACxD,UAAW,CAAC,uBAAuB,CAC7C,EACQ,SAAU,MAAM,QAAQ5tP,CAAQ,EAAIA,EAAW,CAACA,CAAQ,CAChE,CAAO,CACH,CAEA,MAAM+1O,EAAO1yN,EAAQA,EAAQ,OAAS,CAAC,EAEvC,GAAI0yN,GAAQA,EAAK,OAAS,WAAaA,EAAK,UAAY,IAAK,CAC3D,MAAMuY,EAAWvY,EAAK,SAASA,EAAK,SAAS,OAAS,CAAC,EACnDuY,GAAYA,EAAS,OAAS,OAChCA,EAAS,OAAS,IAElBvY,EAAK,SAAS,KAAK,CAAC,KAAM,OAAQ,MAAO,GAAG,CAAC,EAG/CA,EAAK,SAAS,KAAK,GAAGsY,CAAc,CACtC,MACEhrO,EAAQ,KAAK,GAAGgrO,CAAc,EAIhC,MAAM9G,EAAW,CACf,KAAM,UACN,QAAS,KACT,WAAY,CAAC,GAAIyD,EAAgB,MAAQC,CAAM,EAC/C,SAAUpyP,EAAM,KAAKwqB,EAAS,EAAI,CACxC,EAEIxqB,EAAM,MAAM0uO,EAAYggB,CAAQ,EAEhC6G,EAAU,KAAK7G,CAAQ,CACzB,CAEA,GAAI6G,EAAU,SAAW,EAIzB,MAAO,CACL,KAAM,UACN,QAAS,UACT,WAAY,CAAC,cAAe,GAAM,UAAW,CAAC,WAAW,CAAC,EAC1D,SAAU,CACR,CACE,KAAM,UACN,QAASF,EACT,WAAY,CACV,GAAGK,GAAgBJ,CAAuB,EAC1C,GAAI,gBACd,EACQ,SAAU,CAAC,CAAC,KAAM,OAAQ,MAAOF,CAAa,CAAC,CACvD,EACM,CAAC,KAAM,OAAQ,MAAO;AAAA,CAAI,EAC1B,CACE,KAAM,UACN,QAAS,KACT,WAAY,CAAA,EACZ,SAAUp1P,EAAM,KAAKu1P,EAAW,EAAI,CAC5C,EACM,CAAC,KAAM,OAAQ,MAAO;AAAA,CAAI,CAChC,CACA,CACA,CChHO,MAAMI,GAgBT,SAAUz8H,EAAM,CACd,GAAIA,GAAS,KACX,OAAOg1G,GAGT,GAAI,OAAOh1G,GAAS,WAClB,OAAO08H,GAAY18H,CAAI,EAGzB,GAAI,OAAOA,GAAS,SAClB,OAAO,MAAM,QAAQA,CAAI,EAAI28H,GAAW38H,CAAI,EAAI48H,GAAa58H,CAAI,EAGnE,GAAI,OAAOA,GAAS,SAClB,OAAO68H,GAAY78H,CAAI,EAGzB,MAAM,IAAI,MAAM,8CAA8C,CAChE,EAOJ,SAAS28H,GAAWG,EAAO,CAEzB,MAAM5mB,EAAS,CAAA,EACf,IAAIjmP,EAAQ,GAEZ,KAAO,EAAEA,EAAQ6sQ,EAAM,QACrB5mB,EAAOjmP,CAAK,EAAIwsQ,GAAQK,EAAM7sQ,CAAK,CAAC,EAGtC,OAAOysQ,GAAYviL,CAAG,EAMtB,SAASA,KAAOujK,EAAY,CAC1B,IAAIztP,EAAQ,GAEZ,KAAO,EAAEA,EAAQimP,EAAO,QACtB,GAAIA,EAAOjmP,CAAK,EAAE,MAAM,KAAMytP,CAAU,EAAG,MAAO,GAGpD,MAAO,EACT,CACF,CAQA,SAASkf,GAAazmB,EAAO,CAC3B,MAAM4mB,EAAwD5mB,EAE9D,OAAOumB,GAAYtf,CAAG,EAMtB,SAASA,EAAI9tO,EAAM,CACjB,MAAM0tP,EACoB1tP,EAI1B,IAAIhkB,EAEJ,IAAKA,KAAO6qP,EACV,GAAI6mB,EAAa1xQ,CAAG,IAAMyxQ,EAAczxQ,CAAG,EAAG,MAAO,GAGvD,MAAO,EACT,CACF,CAQA,SAASuxQ,GAAY1mB,EAAO,CAC1B,OAAOumB,GAAY7tQ,CAAI,EAKvB,SAASA,EAAKygB,EAAM,CAClB,OAAOA,GAAQA,EAAK,OAAS6mO,CAC/B,CACF,CAQA,SAASumB,GAAYO,EAAc,CACjC,OAAO9mB,EAMP,SAASA,EAAM1pP,EAAOwD,EAAOo+B,EAAQ,CACnC,MAAO,GACL6uO,GAAezwQ,CAAK,GAClBwwQ,EAAa,KACX,KACAxwQ,EACA,OAAOwD,GAAU,SAAWA,EAAQ,OACpCo+B,GAAU,MACpB,EAEE,CACF,CAEA,SAAS2mN,IAAK,CACZ,MAAO,EACT,CAMA,SAASkoB,GAAezwQ,EAAO,CAC7B,OAAOA,IAAU,MAAQ,OAAOA,GAAU,UAAY,SAAUA,CAClE,CC9RO,SAAS6wC,IAAMx3B,EAAG,CACvB,OAAOA,CACT,CCyNA,MAAM28C,GAAQ,CAAA,EAKD06M,GAAW,GAKXC,GAAO,GAKPC,GAAO,OAiDb,SAASC,GAAa95M,EAAMw8E,EAAMu9H,EAAS9iF,EAAS,CAEzD,IAAI07D,EAEA,OAAOn2G,GAAS,YAAc,OAAOu9H,GAAY,YACnD9iF,EAAU8iF,EAEVA,EAAUv9H,GAGVm2G,EAAQn2G,EAGV,MAAMw9H,EAAKf,GAAQtmB,CAAK,EAClBr/L,EAAO2jI,EAAU,GAAK,EAE5BgjF,EAAQj6M,EAAM,OAAW,EAAE,EAAC,EAO5B,SAASi6M,EAAQnuP,EAAMrf,EAAOytQ,EAAS,CACrC,MAAMjxQ,EACJ6iB,GAAQ,OAAOA,GAAS,SAAWA,EAAO,CAAA,EAG5C,GAAI,OAAO7iB,EAAM,MAAS,SAAU,CAClC,MAAM0N,EAEJ,OAAO1N,EAAM,SAAY,SACrBA,EAAM,QAER,OAAOA,EAAM,MAAS,SACpBA,EAAM,KACN,OAEN,OAAO,eAAekxQ,EAAO,OAAQ,CACnC,MACE,UAAiBruP,EAAK,MAAQnV,EAAO,IAAMA,EAAO,IAAM,KAAO,GACzE,CAAO,CACH,CAEA,OAAOwjQ,EAEP,SAASA,GAAQ,CAEf,IAAIvtQ,EAASqyD,GAETm7M,EAEAnuO,EAEAouO,EAEJ,IAAI,CAAC79H,GAAQw9H,EAAGluP,EAAMrf,EAAOytQ,EAAQA,EAAQ,OAAS,CAAC,GAAK,MAAS,KAEnEttQ,EAAS0tQ,GAASP,EAAQjuP,EAAMouP,CAAO,CAAC,EAEpCttQ,EAAO,CAAC,IAAMgtQ,IAChB,OAAOhtQ,EAIX,GAAI,aAAckf,GAAQA,EAAK,SAAU,CACvC,MAAMyuP,EAA2CzuP,EAEjD,GAAIyuP,EAAa,UAAY3tQ,EAAO,CAAC,IAAMitQ,GAIzC,IAHA5tO,GAAUgrJ,EAAUsjF,EAAa,SAAS,OAAS,IAAMjnN,EACzD+mN,EAAeH,EAAQ,OAAOK,CAAY,EAEnCtuO,EAAS,IAAMA,EAASsuO,EAAa,SAAS,QAAQ,CAC3D,MAAM7vP,EAAQ6vP,EAAa,SAAStuO,CAAM,EAI1C,GAFAmuO,EAAYH,EAAQvvP,EAAOuhB,EAAQouO,CAAY,EAAC,EAE5CD,EAAU,CAAC,IAAMR,GACnB,OAAOQ,EAGTnuO,EACE,OAAOmuO,EAAU,CAAC,GAAM,SAAWA,EAAU,CAAC,EAAInuO,EAASqnB,CAC/D,CAEJ,CAEA,OAAO1mD,CACT,CACF,CACF,CAUA,SAAS0tQ,GAASrxQ,EAAO,CACvB,OAAI,MAAM,QAAQA,CAAK,EACdA,EAGL,OAAOA,GAAU,SACZ,CAAC0wQ,GAAU1wQ,CAAK,EAGlBA,GAAU,KAA8Bg2D,GAAQ,CAACh2D,CAAK,CAC/D,CCvHO,SAASkxQ,GAAMn6M,EAAMw6M,EAAeC,EAAkBC,EAAc,CAEzE,IAAIzjF,EAEAz6C,EAEAu9H,EAGF,OAAOS,GAAkB,YACzB,OAAOC,GAAqB,YAE5Bj+H,EAAO,OACPu9H,EAAUS,EACVvjF,EAAUwjF,IAGVj+H,EAAOg+H,EAEPT,EAAUU,EACVxjF,EAAUyjF,GAGZZ,GAAa95M,EAAMw8E,EAAMm+H,EAAU1jF,CAAO,EAM1C,SAAS0jF,EAAS7uP,EAAMouP,EAAS,CAC/B,MAAMrvO,EAASqvO,EAAQA,EAAQ,OAAS,CAAC,EACnCztQ,EAAQo+B,EAASA,EAAO,SAAS,QAAQ/e,CAAI,EAAI,OACvD,OAAOiuP,EAAQjuP,EAAMrf,EAAOo+B,CAAM,CACpC,CACF,CCrIA,MAAMmsN,GAAM,CAAA,EAAG,eAGT90H,GAAe,CAAA,EAYd,SAAS7+G,GAAY28C,EAAMt0D,EAAS,CACzC,MAAMgmP,EAAWhmP,GAAWw2H,GAEtB04I,EAAiB,IAAI,IAErBC,EAAe,IAAI,IAEnBC,EAAiB,IAAI,IAIrB54C,EAAW,CAAC,GAAG64C,GAAiB,GAAGrpB,EAAS,QAAQ,EAGpDpuO,EAAQ,CACZ,IAAAs2O,EACA,UAAAohB,GACA,eAAAJ,EACA,aAAAC,EACA,eAAAC,EACA,cAAe,CAAA,EACnB,SAAI54C,EACA,IAAAs1B,EACA,QAAS9F,EACb,MAAIupB,GACJ,KAAI13F,EACJ,EAEE42F,OAAAA,GAAMn6M,EAAM,SAAUl0C,EAAM,CAC1B,GAAIA,EAAK,OAAS,cAAgBA,EAAK,OAAS,qBAAsB,CACpE,MAAMw5E,EAAMx5E,EAAK,OAAS,aAAe8uP,EAAiBC,EACpD3xP,EAAK,OAAO4C,EAAK,UAAU,EAAE,YAAW,EAIzCw5E,EAAI,IAAIp8E,CAAE,GAEbo8E,EAAI,IAAIp8E,EAAI4C,CAAI,CAEpB,CACF,CAAC,EAEMxI,EAYP,SAASk0O,EAAI1rO,EAAM+e,EAAQ,CACzB,MAAMx/B,EAAOygB,EAAK,KACZ8O,EAAStX,EAAM,SAASjY,CAAI,EAElC,GAAI2rP,GAAI,KAAK1zO,EAAM,SAAUjY,CAAI,GAAKuvB,EACpC,OAAOA,EAAOtX,EAAOwI,EAAM+e,CAAM,EAGnC,GAAIvnB,EAAM,QAAQ,aAAeA,EAAM,QAAQ,YAAY,SAASjY,CAAI,EAAG,CACzE,GAAI,aAAcygB,EAAM,CACtB,KAAM,CAAC,SAAArB,EAAU,GAAGkU,CAAO,EAAI7S,EACzBlf,EAASosQ,GAAgBr6O,CAAO,EAEtC,OAAA/xB,EAAO,SAAW0W,EAAM,IAAIwI,CAAI,EAEzBlf,CACT,CAGA,OAAOosQ,GAAgBltP,CAAI,CAC7B,CAIA,OAFgBxI,EAAM,QAAQ,gBAAkB43P,IAEjC53P,EAAOwI,EAAM+e,CAAM,CACpC,CAUA,SAAS+uN,EAAI/uN,EAAQ,CAEnB,MAAM63D,EAAS,CAAA,EAEf,GAAI,aAAc73D,EAAQ,CACxB,MAAM+oC,EAAQ/oC,EAAO,SACrB,IAAIp+B,EAAQ,GACZ,KAAO,EAAEA,EAAQmnE,EAAM,QAAQ,CAC7B,MAAMhnE,EAAS0W,EAAM,IAAIswD,EAAMnnE,CAAK,EAAGo+B,CAAM,EAG7C,GAAIj+B,EAAQ,CACV,GAAIH,GAASmnE,EAAMnnE,EAAQ,CAAC,EAAE,OAAS,UACjC,CAAC,MAAM,QAAQG,CAAM,GAAKA,EAAO,OAAS,SAC5CA,EAAO,MAAQuuQ,GAAuBvuQ,EAAO,KAAK,GAGhD,CAAC,MAAM,QAAQA,CAAM,GAAKA,EAAO,OAAS,WAAW,CACvD,MAAM4vB,EAAO5vB,EAAO,SAAS,CAAC,EAE1B4vB,GAAQA,EAAK,OAAS,SACxBA,EAAK,MAAQ2+O,GAAuB3+O,EAAK,KAAK,EAElD,CAGE,MAAM,QAAQ5vB,CAAM,EACtB81F,EAAO,KAAK,GAAG91F,CAAM,EAErB81F,EAAO,KAAK91F,CAAM,CAEtB,CACF,CACF,CAEA,OAAO81F,CACT,CACF,CAYA,SAASu4K,GAAMpxO,EAAMk5D,EAAI,CACnBl5D,EAAK,WAAUk5D,EAAG,SAAWh8E,GAAS8iB,CAAI,EAChD,CAcA,SAASmxO,GAAUnxO,EAAMk5D,EAAI,CAE3B,IAAIn2F,EAASm2F,EAGb,GAAIl5D,GAAQA,EAAK,KAAM,CACrB,MAAMuxO,EAAQvxO,EAAK,KAAK,MAClBwxO,EAAYxxO,EAAK,KAAK,UACtByxO,EAAczxO,EAAK,KAAK,YAE9B,GAAI,OAAOuxO,GAAU,SAGnB,GAAIxuQ,EAAO,OAAS,UAClBA,EAAO,QAAUwuQ,MAMd,CAGH,MAAM3wP,EAAW,aAAc7d,EAASA,EAAO,SAAW,CAACA,CAAM,EACjEA,EAAS,CAAC,KAAM,UAAW,QAASwuQ,EAAO,WAAY,CAAA,EAAI,SAAA3wP,CAAQ,CACrE,CAGE7d,EAAO,OAAS,WAAa0uQ,GAC/B,OAAO,OAAO1uQ,EAAO,WAAYosQ,GAAgBsC,CAAW,CAAC,EAI7D,aAAc1uQ,GACdA,EAAO,UACPyuQ,IAAc,MACdA,IAAc,SAEdzuQ,EAAO,SAAWyuQ,EAEtB,CAEA,OAAOzuQ,CACT,CAYA,SAASsuQ,GAAsB53P,EAAOwI,EAAM,CAC1C,MAAM/iB,EAAO+iB,EAAK,MAAQ,CAAA,EAEpBlf,EACJ,UAAWkf,GACX,EAAEkrO,GAAI,KAAKjuP,EAAM,aAAa,GAAKiuP,GAAI,KAAKjuP,EAAM,WAAW,GACzD,CAAC,KAAM,OAAQ,MAAO+iB,EAAK,KAAK,EAChC,CACE,KAAM,UACN,QAAS,MACT,WAAY,CAAA,EACZ,SAAUxI,EAAM,IAAIwI,CAAI,CAClC,EAEE,OAAAxI,EAAM,MAAMwI,EAAMlf,CAAM,EACjB0W,EAAM,UAAUwI,EAAMlf,CAAM,CACrC,CAcO,SAAS22K,GAAK3vG,EAAOuiM,EAAO,CAEjC,MAAMvpQ,EAAS,CAAA,EACf,IAAIH,EAAQ,GAMZ,IAJI0pQ,GACFvpQ,EAAO,KAAK,CAAC,KAAM,OAAQ,MAAO;AAAA,CAAI,CAAC,EAGlC,EAAEH,EAAQmnE,EAAM,QACjBnnE,GAAOG,EAAO,KAAK,CAAC,KAAM,OAAQ,MAAO;AAAA,CAAI,CAAC,EAClDA,EAAO,KAAKgnE,EAAMnnE,CAAK,CAAC,EAG1B,OAAI0pQ,GAASviM,EAAM,OAAS,GAC1BhnE,EAAO,KAAK,CAAC,KAAM,OAAQ,MAAO;AAAA,CAAI,CAAC,EAGlCA,CACT,CAUA,SAASuuQ,GAAuBlyQ,EAAO,CACrC,IAAIwD,EAAQ,EACRvB,EAAOjC,EAAM,WAAWwD,CAAK,EAEjC,KAAOvB,IAAS,GAAKA,IAAS,IAC5BuB,IACAvB,EAAOjC,EAAM,WAAWwD,CAAK,EAG/B,OAAOxD,EAAM,MAAMwD,CAAK,CAC1B,CCjYO,SAAS8uQ,GAAOv7M,EAAMt0D,EAAS,CACpC,MAAM4X,EAAQD,GAAY28C,EAAMt0D,CAAO,EACjCogB,EAAOxI,EAAM,IAAI08C,EAAM,MAAS,EAChCw7M,EAAO1tL,GAAOxqE,CAAK,EAEnB1W,EAAS,MAAM,QAAQkf,CAAI,EAC7B,CAAC,KAAM,OAAQ,SAAUA,CAAI,EAC7BA,GAAQ,CAAC,KAAM,OAAQ,SAAU,CAAA,CAAE,EAEvC,OAAI0vP,GAKF5uQ,EAAO,SAAS,KAAK,CAAC,KAAM,OAAQ,MAAO;AAAA,CAAI,EAAG4uQ,CAAI,EAGjD5uQ,CACT,CC0Ce,SAAS6uQ,GAAaC,EAAahwQ,EAAS,CACzD,OAAIgwQ,GAAe,QAASA,EAInB,eAAgB17M,EAAM27M,EAAM,CAEjC,MAAMC,EACJL,GAAOv7M,EAAM,CAAC,KAAA27M,EAAM,GAAGjwQ,CAAO,CAAC,EAEjC,MAAMgwQ,EAAY,IAAIE,EAAUD,CAAI,CACtC,EAMK,SAAU37M,EAAM27M,EAAM,CAM3B,OACEJ,GAAOv7M,EAAM,CAAC,KAAA27M,EAAM,GAAID,GAAehwQ,CAAQ,CAAC,CAEpD,CACF,CCvKO,SAASmwQ,GAAK3kQ,EAAO,CAC1B,GAAIA,EACF,MAAMA,CAEV,CCTA,IAAI0S,GAAS,OAAO,UAAU,eAC1BkyP,GAAQ,OAAO,UAAU,SACzBlwP,GAAiB,OAAO,eACxBmwP,GAAO,OAAO,yBAEd9/L,GAAU,SAAiB9pD,EAAK,CACnC,OAAI,OAAO,MAAM,SAAY,WACrB,MAAM,QAAQA,CAAG,EAGlB2pP,GAAM,KAAK3pP,CAAG,IAAM,gBAC5B,EAEI6pP,GAAgB,SAAuBl1Q,EAAK,CAC/C,GAAI,CAACA,GAAOg1Q,GAAM,KAAKh1Q,CAAG,IAAM,kBAC/B,MAAO,GAGR,IAAIm1Q,EAAoBryP,GAAO,KAAK9iB,EAAK,aAAa,EAClDo1Q,EAAmBp1Q,EAAI,aAAeA,EAAI,YAAY,WAAa8iB,GAAO,KAAK9iB,EAAI,YAAY,UAAW,eAAe,EAE7H,GAAIA,EAAI,aAAe,CAACm1Q,GAAqB,CAACC,EAC7C,MAAO,GAKR,IAAIp0Q,EACJ,IAAKA,KAAOhB,EAAK,CAEjB,OAAO,OAAOgB,EAAQ,KAAe8hB,GAAO,KAAK9iB,EAAKgB,CAAG,CAC1D,EAGIq0Q,GAAc,SAAqBhzQ,EAAQuC,EAAS,CACnDkgB,IAAkBlgB,EAAQ,OAAS,YACtCkgB,GAAeziB,EAAQuC,EAAQ,KAAM,CACpC,WAAY,GACZ,aAAc,GACd,MAAOA,EAAQ,SACf,SAAU,EACb,CAAG,EAEDvC,EAAOuC,EAAQ,IAAI,EAAIA,EAAQ,QAEjC,EAGI0wQ,GAAc,SAAqBt1Q,EAAK6P,EAAM,CACjD,GAAIA,IAAS,YACZ,GAAKiT,GAAO,KAAK9iB,EAAK6P,CAAI,GAEnB,GAAIolQ,GAGV,OAAOA,GAAKj1Q,EAAK6P,CAAI,EAAE,UAJvB,QAQF,OAAO7P,EAAI6P,CAAI,CAChB,EAEAy7M,GAAiB,SAASA,GAAS,CAClC,IAAI1mN,EAASiL,EAAMw+B,EAAK5tC,EAAM80Q,EAAanhQ,EACvC/R,EAAS,UAAU,CAAC,EACpB0B,EAAI,EACJ6/B,EAAS,UAAU,OACnB59B,EAAO,GAaX,IAVI,OAAO3D,GAAW,YACrB2D,EAAO3D,EACPA,EAAS,UAAU,CAAC,GAAK,CAAA,EAEzB0B,EAAI,IAED1B,GAAU,MAAS,OAAOA,GAAW,UAAY,OAAOA,GAAW,cACtEA,EAAS,CAAA,GAGH0B,EAAI6/B,EAAQ,EAAE7/B,EAGpB,GAFAa,EAAU,UAAUb,CAAC,EAEjBa,GAAW,KAEd,IAAKiL,KAAQjL,EACZypC,EAAMinO,GAAYjzQ,EAAQwN,CAAI,EAC9BpP,EAAO60Q,GAAY1wQ,EAASiL,CAAI,EAG5BxN,IAAW5B,IAEVuF,GAAQvF,IAASy0Q,GAAcz0Q,CAAI,IAAM80Q,EAAcpgM,GAAQ10E,CAAI,KAClE80Q,GACHA,EAAc,GACdnhQ,EAAQi6B,GAAO8mC,GAAQ9mC,CAAG,EAAIA,EAAM,CAAA,GAEpCj6B,EAAQi6B,GAAO6mO,GAAc7mO,CAAG,EAAIA,EAAM,CAAA,EAI3CgnO,GAAYhzQ,EAAQ,CAAE,KAAMwN,EAAM,SAAUy7M,EAAOtlN,EAAMoO,EAAO3T,CAAI,EAAG,GAG7D,OAAOA,EAAS,KAC1B40Q,GAAYhzQ,EAAQ,CAAE,KAAMwN,EAAM,SAAUpP,EAAM,GAQvD,OAAO4B,CACR,kBCpHe,SAAS6yQ,GAAc/yQ,EAAO,CAC5C,GAAI,OAAOA,GAAU,UAAYA,IAAU,KAC1C,MAAO,GAGR,MAAMqzQ,EAAY,OAAO,eAAerzQ,CAAK,EAC7C,OAAQqzQ,IAAc,MAAQA,IAAc,OAAO,WAAa,OAAO,eAAeA,CAAS,IAAM,OAAS,EAAE,OAAO,eAAerzQ,IAAU,EAAE,OAAO,YAAYA,EACtK,CC+BO,SAASszQ,IAAS,CAEvB,MAAMC,EAAM,CAAA,EAENC,EAAW,CAAC,IAAAC,EAAK,IAAAve,CAAG,EAE1B,OAAOse,EAGP,SAASC,KAAOh6K,EAAQ,CACtB,IAAIi6K,EAAkB,GAEtB,MAAMllQ,EAAWirF,EAAO,IAAG,EAE3B,GAAI,OAAOjrF,GAAa,WACtB,MAAM,IAAI,UAAU,2CAA6CA,CAAQ,EAG3E3M,EAAK,KAAM,GAAG43F,CAAM,EAQpB,SAAS53F,EAAKoM,KAAU61B,EAAQ,CAC9B,MAAM52B,EAAKqmQ,EAAI,EAAEG,CAAe,EAChC,IAAIlwQ,EAAQ,GAEZ,GAAIyK,EAAO,CACTO,EAASP,CAAK,EACd,MACF,CAGA,KAAO,EAAEzK,EAAQi2F,EAAO,SAClB31D,EAAOtgC,CAAK,IAAM,MAAQsgC,EAAOtgC,CAAK,IAAM,UAC9CsgC,EAAOtgC,CAAK,EAAIi2F,EAAOj2F,CAAK,GAKhCi2F,EAAS31D,EAGL52B,EACFotK,GAAKptK,EAAIrL,CAAI,EAAE,GAAGiiC,CAAM,EAExBt1B,EAAS,KAAM,GAAGs1B,CAAM,CAE5B,CACF,CAGA,SAASoxN,EAAIye,EAAY,CACvB,GAAI,OAAOA,GAAe,WACxB,MAAM,IAAI,UACR,+CAAiDA,CACzD,EAGI,OAAAJ,EAAI,KAAKI,CAAU,EACZH,CACT,CACF,CAkCO,SAASl5F,GAAKyoD,EAAYv0N,EAAU,CAEzC,IAAIomP,EAEJ,OAAOgf,EAQP,SAASA,KAAW3iB,EAAY,CAC9B,MAAM4iB,EAAoB9wC,EAAW,OAASkuB,EAAW,OAEzD,IAAIttP,EAEAkwQ,GACF5iB,EAAW,KAAKjgP,CAAI,EAGtB,GAAI,CACFrN,EAASo/N,EAAW,MAAM,KAAMkuB,CAAU,CAC5C,OAAShjP,EAAO,CACd,MAAM6lQ,EAAkC7lQ,EAMxC,GAAI4lQ,GAAqBjf,EACvB,MAAMkf,EAGR,OAAO9iQ,EAAK8iQ,CAAS,CACvB,CAEKD,IACClwQ,GAAUA,EAAO,MAAQ,OAAOA,EAAO,MAAS,WAClDA,EAAO,KAAKowQ,EAAM/iQ,CAAI,EACbrN,aAAkB,MAC3BqN,EAAKrN,CAAM,EAEXowQ,EAAKpwQ,CAAM,EAGjB,CAOA,SAASqN,EAAK/C,KAAU61B,EAAQ,CACzB8wN,IACHA,EAAS,GACTpmP,EAASP,EAAO,GAAG61B,CAAM,EAE7B,CAOA,SAASiwO,EAAK/zQ,EAAO,CACnBgR,EAAK,KAAMhR,CAAK,CAClB,CACF,CC1JO,MAAMg0Q,GAAU,CAAC,SAAAC,GAAU,QAAAC,GAAS,QAAAC,GAAS,KAAAC,GAAM,IAAK,GAAG,EAclE,SAASH,GAASj1Q,EAAMm1Q,EAAS,CAC/B,GAAIA,IAAY,QAAa,OAAOA,GAAY,SAC9C,MAAM,IAAI,UAAU,iCAAiC,EAGvDE,GAAWr1Q,CAAI,EACf,IAAI8tI,EAAQ,EACR3rG,EAAM,GACN39B,EAAQxE,EAAK,OAEbs1Q,EAEJ,GACEH,IAAY,QACZA,EAAQ,SAAW,GACnBA,EAAQ,OAASn1Q,EAAK,OACtB,CACA,KAAOwE,KACL,GAAIxE,EAAK,YAAYwE,CAAK,IAAM,IAG9B,GAAI8wQ,EAAc,CAChBxnI,EAAQtpI,EAAQ,EAChB,KACF,OACS29B,EAAM,IAGfmzO,EAAe,GACfnzO,EAAM39B,EAAQ,GAIlB,OAAO29B,EAAM,EAAI,GAAKniC,EAAK,MAAM8tI,EAAO3rG,CAAG,CAC7C,CAEA,GAAIgzO,IAAYn1Q,EACd,MAAO,GAGT,IAAIu1Q,EAAmB,GACnBC,EAAeL,EAAQ,OAAS,EAEpC,KAAO3wQ,KACL,GAAIxE,EAAK,YAAYwE,CAAK,IAAM,IAG9B,GAAI8wQ,EAAc,CAChBxnI,EAAQtpI,EAAQ,EAChB,KACF,OAEI+wQ,EAAmB,IAGrBD,EAAe,GACfC,EAAmB/wQ,EAAQ,GAGzBgxQ,EAAe,KAEbx1Q,EAAK,YAAYwE,CAAK,IAAM2wQ,EAAQ,YAAYK,GAAc,EAC5DA,EAAe,IAGjBrzO,EAAM39B,IAKRgxQ,EAAe,GACfrzO,EAAMozO,IAMd,OAAIznI,IAAU3rG,EACZA,EAAMozO,EACGpzO,EAAM,IACfA,EAAMniC,EAAK,QAGNA,EAAK,MAAM8tI,EAAO3rG,CAAG,CAC9B,CAUA,SAAS+yO,GAAQl1Q,EAAM,CAGrB,GAFAq1Q,GAAWr1Q,CAAI,EAEXA,EAAK,SAAW,EAClB,MAAO,IAGT,IAAImiC,EAAM,GACN39B,EAAQxE,EAAK,OAEby1Q,EAGJ,KAAO,EAAEjxQ,GACP,GAAIxE,EAAK,YAAYwE,CAAK,IAAM,IAC9B,GAAIixQ,EAAgB,CAClBtzO,EAAM39B,EACN,KACF,OACUixQ,IAEVA,EAAiB,IAIrB,OAAOtzO,EAAM,EACTniC,EAAK,YAAY,CAAC,IAAM,GACtB,IACA,IACFmiC,IAAQ,GAAKniC,EAAK,YAAY,CAAC,IAAM,GACnC,KACAA,EAAK,MAAM,EAAGmiC,CAAG,CACzB,CAUA,SAASgzO,GAAQn1Q,EAAM,CACrBq1Q,GAAWr1Q,CAAI,EAEf,IAAIwE,EAAQxE,EAAK,OAEbmiC,EAAM,GACNuzO,EAAY,EACZC,EAAW,GAGXC,EAAc,EAEdH,EAEJ,KAAOjxQ,KAAS,CACd,MAAMvB,EAAOjD,EAAK,YAAYwE,CAAK,EAEnC,GAAIvB,IAAS,GAAc,CAGzB,GAAIwyQ,EAAgB,CAClBC,EAAYlxQ,EAAQ,EACpB,KACF,CAEA,QACF,CAEI29B,EAAM,IAGRszO,EAAiB,GACjBtzO,EAAM39B,EAAQ,GAGZvB,IAAS,GAEP0yQ,EAAW,EACbA,EAAWnxQ,EACFoxQ,IAAgB,IACzBA,EAAc,GAEPD,EAAW,KAGpBC,EAAc,GAElB,CAEA,OACED,EAAW,GACXxzO,EAAM,GAENyzO,IAAgB,GAEfA,IAAgB,GAAKD,IAAaxzO,EAAM,GAAKwzO,IAAaD,EAAY,EAEhE,GAGF11Q,EAAK,MAAM21Q,EAAUxzO,CAAG,CACjC,CAUA,SAASizO,MAAQS,EAAU,CACzB,IAAIrxQ,EAAQ,GAERsxQ,EAEJ,KAAO,EAAEtxQ,EAAQqxQ,EAAS,QACxBR,GAAWQ,EAASrxQ,CAAK,CAAC,EAEtBqxQ,EAASrxQ,CAAK,IAChBsxQ,EACEA,IAAW,OAAYD,EAASrxQ,CAAK,EAAIsxQ,EAAS,IAAMD,EAASrxQ,CAAK,GAI5E,OAAOsxQ,IAAW,OAAY,IAAMx9K,GAAUw9K,CAAM,CACtD,CAYA,SAASx9K,GAAUt4F,EAAM,CACvBq1Q,GAAWr1Q,CAAI,EAEf,MAAM+1Q,EAAW/1Q,EAAK,YAAY,CAAC,IAAM,GAGzC,IAAIgB,EAAQg1Q,GAAgBh2Q,EAAM,CAAC+1Q,CAAQ,EAE3C,OAAI/0Q,EAAM,SAAW,GAAK,CAAC+0Q,IACzB/0Q,EAAQ,KAGNA,EAAM,OAAS,GAAKhB,EAAK,YAAYA,EAAK,OAAS,CAAC,IAAM,KAC5DgB,GAAS,KAGJ+0Q,EAAW,IAAM/0Q,EAAQA,CAClC,CAYA,SAASg1Q,GAAgBh2Q,EAAMi2Q,EAAgB,CAC7C,IAAItxQ,EAAS,GACTuxQ,EAAoB,EACpBC,EAAY,GACZptF,EAAO,EACPvkL,EAAQ,GAERvB,EAEAmzQ,EAEJ,KAAO,EAAE5xQ,GAASxE,EAAK,QAAQ,CAC7B,GAAIwE,EAAQxE,EAAK,OACfiD,EAAOjD,EAAK,YAAYwE,CAAK,MACxB,IAAIvB,IAAS,GAClB,MAEAA,EAAO,GAGT,GAAIA,IAAS,GAAc,CACzB,GAAI,EAAAkzQ,IAAc3xQ,EAAQ,GAAKukL,IAAS,GAEjC,GAAIotF,IAAc3xQ,EAAQ,GAAKukL,IAAS,EAAG,CAChD,GACEpkL,EAAO,OAAS,GAChBuxQ,IAAsB,GACtBvxQ,EAAO,YAAYA,EAAO,OAAS,CAAC,IAAM,IAC1CA,EAAO,YAAYA,EAAO,OAAS,CAAC,IAAM,IAE1C,GAAIA,EAAO,OAAS,GAGlB,GAFAyxQ,EAAiBzxQ,EAAO,YAAY,GAAG,EAEnCyxQ,IAAmBzxQ,EAAO,OAAS,EAAG,CACpCyxQ,EAAiB,GACnBzxQ,EAAS,GACTuxQ,EAAoB,IAEpBvxQ,EAASA,EAAO,MAAM,EAAGyxQ,CAAc,EACvCF,EAAoBvxQ,EAAO,OAAS,EAAIA,EAAO,YAAY,GAAG,GAGhEwxQ,EAAY3xQ,EACZukL,EAAO,EACP,QACF,UACSpkL,EAAO,OAAS,EAAG,CAC5BA,EAAS,GACTuxQ,EAAoB,EACpBC,EAAY3xQ,EACZukL,EAAO,EACP,QACF,EAGEktF,IACFtxQ,EAASA,EAAO,OAAS,EAAIA,EAAS,MAAQ,KAC9CuxQ,EAAoB,EAExB,MACMvxQ,EAAO,OAAS,EAClBA,GAAU,IAAM3E,EAAK,MAAMm2Q,EAAY,EAAG3xQ,CAAK,EAE/CG,EAAS3E,EAAK,MAAMm2Q,EAAY,EAAG3xQ,CAAK,EAG1C0xQ,EAAoB1xQ,EAAQ2xQ,EAAY,EAG1CA,EAAY3xQ,EACZukL,EAAO,CACT,MAAW9lL,IAAS,IAAgB8lL,EAAO,GACzCA,IAEAA,EAAO,EAEX,CAEA,OAAOpkL,CACT,CAUA,SAAS0wQ,GAAWr1Q,EAAM,CACxB,GAAI,OAAOA,GAAS,SAClB,MAAM,IAAI,UACR,mCAAqC,KAAK,UAAUA,CAAI,CAC9D,CAEA,CCpaO,MAAMq2Q,GAAU,CAAC,IAAAC,EAAG,EAE3B,SAASA,IAAM,CACb,MAAO,GACT,CCYO,SAASC,GAAMC,EAAe,CACnC,MAAO,GACLA,IAAkB,MAChB,OAAOA,GAAkB,UACzB,SAAUA,GACVA,EAAc,MACd,aAAcA,GACdA,EAAc,UAEdA,EAAc,OAAS,OAE7B,CClBO,SAASC,GAAUz2Q,EAAM,CAC9B,GAAI,OAAOA,GAAS,SAClBA,EAAO,IAAI,IAAIA,CAAI,UACV,CAACu2Q,GAAMv2Q,CAAI,EAAG,CAEvB,MAAMiP,EAAQ,IAAI,UAChB,+EACEjP,EACA,GACR,EACI,MAAAiP,EAAM,KAAO,uBACPA,CACR,CAEA,GAAIjP,EAAK,WAAa,QAAS,CAE7B,MAAMiP,EAAQ,IAAI,UAAU,gCAAgC,EAC5D,MAAAA,EAAM,KAAO,yBACPA,CACR,CAEA,OAAOynQ,GAAoB12Q,CAAI,CACjC,CAUA,SAAS02Q,GAAoBj4C,EAAK,CAChC,GAAIA,EAAI,WAAa,GAAI,CAEvB,MAAMxvN,EAAQ,IAAI,UAChB,sDACN,EACI,MAAAA,EAAM,KAAO,4BACPA,CACR,CAEA,MAAM0nQ,EAAWl4C,EAAI,SACrB,IAAIj6N,EAAQ,GAEZ,KAAO,EAAEA,EAAQmyQ,EAAS,QACxB,GACEA,EAAS,YAAYnyQ,CAAK,IAAM,IAChCmyQ,EAAS,YAAYnyQ,EAAQ,CAAC,IAAM,GACpC,CACA,MAAMoyQ,EAAQD,EAAS,YAAYnyQ,EAAQ,CAAC,EAC5C,GAAIoyQ,IAAU,IAAgBA,IAAU,IAAe,CAErD,MAAM3nQ,EAAQ,IAAI,UAChB,qDACV,EACQ,MAAAA,EAAM,KAAO,4BACPA,CACR,CACF,CAGF,OAAO,mBAAmB0nQ,CAAQ,CACpC,CCvDA,MAAM78P,GAA8B,CAClC,UACA,OACA,WACA,OACA,UACA,SACF,EAEO,MAAM+8P,EAAM,CAuBjB,YAAY71Q,EAAO,CAEjB,IAAIyC,EAECzC,EAEMu1Q,GAAMv1Q,CAAK,EACpByC,EAAU,CAAC,KAAMzC,CAAK,EACb,OAAOA,GAAU,UAAY81Q,GAAa91Q,CAAK,EACxDyC,EAAU,CAAC,MAAAzC,CAAK,EAEhByC,EAAUzC,EANVyC,EAAU,CAAA,EAkBZ,KAAK,IAAM,QAASA,EAAU,GAAK4yQ,GAAQ,IAAG,EAU9C,KAAK,KAAO,CAAA,EASZ,KAAK,QAAU,CAAA,EAOf,KAAK,SAAW,CAAA,EAOhB,KAAK,MAYL,KAAK,IAUL,KAAK,OASL,KAAK,OAIL,IAAI7xQ,EAAQ,GAEZ,KAAO,EAAEA,EAAQsV,GAAM,QAAQ,CAC7B,MAAMoxE,EAAQpxE,GAAMtV,CAAK,EAKvB0mF,KAASznF,GACTA,EAAQynF,CAAK,IAAM,QACnBznF,EAAQynF,CAAK,IAAM,OAGnB,KAAKA,CAAK,EAAIA,IAAU,UAAY,CAAC,GAAGznF,EAAQynF,CAAK,CAAC,EAAIznF,EAAQynF,CAAK,EAE3E,CAGA,IAAIA,EAGJ,IAAKA,KAASznF,EAEPqW,GAAM,SAASoxE,CAAK,IAEvB,KAAKA,CAAK,EAAIznF,EAAQynF,CAAK,EAGjC,CAQA,IAAI,UAAW,CACb,OAAO,OAAO,KAAK,MAAS,SACxB8pL,GAAQ,SAAS,KAAK,IAAI,EAC1B,MACN,CAcA,IAAI,SAASC,EAAU,CACrB8B,GAAe9B,EAAU,UAAU,EACnC+B,GAAW/B,EAAU,UAAU,EAC/B,KAAK,KAAOD,GAAQ,KAAK,KAAK,SAAW,GAAIC,CAAQ,CACvD,CAQA,IAAI,SAAU,CACZ,OAAO,OAAO,KAAK,MAAS,SACxBD,GAAQ,QAAQ,KAAK,IAAI,EACzB,MACN,CAYA,IAAI,QAAQE,EAAS,CACnBG,GAAW,KAAK,SAAU,SAAS,EACnC,KAAK,KAAOL,GAAQ,KAAKE,GAAW,GAAI,KAAK,QAAQ,CACvD,CAQA,IAAI,SAAU,CACZ,OAAO,OAAO,KAAK,MAAS,SACxBF,GAAQ,QAAQ,KAAK,IAAI,EACzB,MACN,CAcA,IAAI,QAAQG,EAAS,CAInB,GAHA6B,GAAW7B,EAAS,SAAS,EAC7BE,GAAW,KAAK,QAAS,SAAS,EAE9BF,EAAS,CACX,GAAIA,EAAQ,YAAY,CAAC,IAAM,GAC7B,MAAM,IAAI,MAAM,+BAA+B,EAGjD,GAAIA,EAAQ,SAAS,IAAK,CAAC,EACzB,MAAM,IAAI,MAAM,wCAAwC,CAE5D,CAEA,KAAK,KAAOH,GAAQ,KAAK,KAAK,QAAS,KAAK,MAAQG,GAAW,GAAG,CACpE,CAQA,IAAI,MAAO,CACT,OAAO,KAAK,QAAQ,KAAK,QAAQ,OAAS,CAAC,CAC7C,CAcA,IAAI,KAAKn1Q,EAAM,CACTu2Q,GAAMv2Q,CAAI,IACZA,EAAOy2Q,GAAUz2Q,CAAI,GAGvB+2Q,GAAe/2Q,EAAM,MAAM,EAEvB,KAAK,OAASA,GAChB,KAAK,QAAQ,KAAKA,CAAI,CAE1B,CAQA,IAAI,MAAO,CACT,OAAO,OAAO,KAAK,MAAS,SACxBg1Q,GAAQ,SAAS,KAAK,KAAM,KAAK,OAAO,EACxC,MACN,CAcA,IAAI,KAAKiC,EAAM,CACbF,GAAeE,EAAM,MAAM,EAC3BD,GAAWC,EAAM,MAAM,EACvB,KAAK,KAAOjC,GAAQ,KAAK,KAAK,SAAW,GAAIiC,GAAQ,KAAK,SAAW,GAAG,CAC1E,CA+DA,KAAKroB,EAAeC,EAAwBhtK,EAAQ,CAElD,MAAM7kE,EAAU,KAAK,QAAQ4xO,EAAeC,EAAwBhtK,CAAM,EAE1E,MAAA7kE,EAAQ,MAAQ,GAEVA,CACR,CA4DA,KAAK4xO,EAAeC,EAAwBhtK,EAAQ,CAElD,MAAM7kE,EAAU,KAAK,QAAQ4xO,EAAeC,EAAwBhtK,CAAM,EAE1E,OAAA7kE,EAAQ,MAAQ,OAETA,CACT,CA4DA,QAAQ4xO,EAAeC,EAAwBhtK,EAAQ,CACrD,MAAM7kE,EAAU,IAAI2xO,GAElBC,EACAC,EACAhtK,CACN,EAEI,OAAI,KAAK,OACP7kE,EAAQ,KAAO,KAAK,KAAO,IAAMA,EAAQ,KACzCA,EAAQ,KAAO,KAAK,MAGtBA,EAAQ,MAAQ,GAEhB,KAAK,SAAS,KAAKA,CAAO,EAEnBA,CACT,CAeA,SAASisP,EAAU,CACjB,OAAI,KAAK,QAAU,OACV,GAGL,OAAO,KAAK,OAAU,SACjB,KAAK,MAGE,IAAI,YAAYA,GAAY,MAAS,EACtC,OAAO,KAAK,KAAK,CAClC,CACF,CAYA,SAAS+N,GAAW9jF,EAAMxkL,EAAM,CAC9B,GAAIwkL,GAAQA,EAAK,SAAS8hF,GAAQ,GAAG,EACnC,MAAM,IAAI,MACR,IAAMtmQ,EAAO,uCAAyCsmQ,GAAQ,IAAM,GAC1E,CAEA,CAYA,SAAS+B,GAAe7jF,EAAMxkL,EAAM,CAClC,GAAI,CAACwkL,EACH,MAAM,IAAI,MAAM,IAAMxkL,EAAO,mBAAmB,CAEpD,CAYA,SAAS2mQ,GAAWr1Q,EAAM0O,EAAM,CAC9B,GAAI,CAAC1O,EACH,MAAM,IAAI,MAAM,YAAc0O,EAAO,iCAAiC,CAE1E,CAUA,SAASooQ,GAAa91Q,EAAO,CAC3B,MAAO,GACLA,GACE,OAAOA,GAAU,UACjB,eAAgBA,GAChB,eAAgBA,EAEtB,CCloBO,MAAMk2Q,GAYP,SAAUhzO,EAAU,CAGlB,MAAMizO,EAFO,KACO,YAIX,UAEHn2Q,EAAQm2Q,EAAMjzO,CAAQ,EAEtBkzO,EAAQ,UAAY,CACxB,OAAOp2Q,EAAM,MAAMo2Q,EAAO,SAAS,CACrC,EAEA,cAAO,eAAeA,EAAOD,CAAK,EAc3BC,CACT,ECiUAroB,GAAM,CAAA,EAAG,eAeR,MAAMsoB,WAAkBH,EAAiB,CAI9C,aAAc,CAEZ,MAAM,MAAM,EAeZ,KAAK,SAAW,OAYhB,KAAK,OAAS,OAad,KAAK,UAAY,CAAA,EAajB,KAAK,SAAW,OAShB,KAAK,YAAc,GASnB,KAAK,OAAS,OASd,KAAK,UAAY,CAAA,EAUjB,KAAK,OAAS,OASd,KAAK,aAAe5C,GAAM,CAC5B,CAaA,MAAO,CAEL,MAAMb,EAEF,IAAI4D,GAER,IAAI7yQ,EAAQ,GAEZ,KAAO,EAAEA,EAAQ,KAAK,UAAU,QAAQ,CACtC,MAAM8yQ,EAAW,KAAK,UAAU9yQ,CAAK,EACrCivQ,EAAY,IAAI,GAAG6D,CAAQ,CAC7B,CAEA,OAAA7D,EAAY,KAAKtpD,GAAO,GAAM,CAAA,EAAI,KAAK,SAAS,CAAC,EAE1CspD,CACT,CA6DA,KAAK5zQ,EAAKmB,EAAO,CACf,OAAI,OAAOnB,GAAQ,SAEb,UAAU,SAAW,GACvB03Q,GAAe,OAAQ,KAAK,MAAM,EAClC,KAAK,UAAU13Q,CAAG,EAAImB,EACf,MAID+tP,GAAI,KAAK,KAAK,UAAWlvP,CAAG,GAAK,KAAK,UAAUA,CAAG,GAAM,OAI/DA,GACF03Q,GAAe,OAAQ,KAAK,MAAM,EAClC,KAAK,UAAY13Q,EACV,MAIF,KAAK,SACd,CAmBA,QAAS,CACP,GAAI,KAAK,OACP,OAAO,KAMT,MAAM66K,EAAyD,KAE/D,KAAO,EAAE,KAAK,YAAc,KAAK,UAAU,QAAQ,CACjD,KAAM,CAAC48F,EAAU,GAAG7zQ,CAAO,EAAI,KAAK,UAAU,KAAK,WAAW,EAE9D,GAAIA,EAAQ,CAAC,IAAM,GACjB,SAGEA,EAAQ,CAAC,IAAM,KACjBA,EAAQ,CAAC,EAAI,QAGf,MAAM+zQ,EAAcF,EAAS,KAAK58F,EAAM,GAAGj3K,CAAO,EAE9C,OAAO+zQ,GAAgB,YACzB,KAAK,aAAa,IAAIA,CAAW,CAErC,CAEA,YAAK,OAAS,GACd,KAAK,YAAc,OAAO,kBAEnB,IACT,CAgBA,MAAM9D,EAAM,CACV,KAAK,OAAM,EACX,MAAM+D,EAAWC,GAAMhE,CAAI,EACrBznD,EAAS,KAAK,QAAU,KAAK,OACnC,OAAA0rD,GAAa,QAAS1rD,CAAM,EACrBA,EAAO,OAAOwrD,CAAQ,EAAGA,CAAQ,CAC1C,CA4CA,QAAQ/D,EAAM1hQ,EAAM,CAClB,MAAM0oK,EAAO,KAEb,YAAK,OAAM,EACXi9F,GAAa,UAAW,KAAK,QAAU,KAAK,MAAM,EAClDC,GAAe,UAAW,KAAK,UAAY,KAAK,QAAQ,EAEjD5lQ,EAAO6lQ,EAAS,OAAW7lQ,CAAI,EAAI,IAAI,QAAQ6lQ,CAAQ,EAQ9D,SAASA,EAAS34Q,EAASC,EAAQ,CACjC,MAAMs4Q,EAAWC,GAAMhE,CAAI,EAGrBoE,EAEsBp9F,EAAK,MAAM+8F,CAAQ,EAG/C/8F,EAAK,IAAIo9F,EAAWL,EAAU,SAAUxoQ,EAAO8oD,EAAM27M,EAAM,CACzD,GAAIzkQ,GAAS,CAAC8oD,GAAQ,CAAC27M,EACrB,OAAOqE,EAAS9oQ,CAAK,EAKvB,MAAM+oQ,EAEsBjgN,EAGtBkgN,EAAgBv9F,EAAK,UAAUs9F,EAAatE,CAAI,EAElDwE,GAAgBD,CAAa,EAC/BvE,EAAK,MAAQuE,EAEbvE,EAAK,OAASuE,EAGhBF,EAAS9oQ,EAAsDykQ,CAAI,CACrE,CAAC,EAOD,SAASqE,EAAS9oQ,EAAOykQ,EAAM,CACzBzkQ,GAAS,CAACykQ,EACZv0Q,EAAO8P,CAAK,EACH/P,EACTA,EAAQw0Q,CAAI,EAGZ1hQ,EAAK,OAAW0hQ,CAAI,CAExB,CACF,CACF,CAiCA,YAAYA,EAAM,CAEhB,IAAI9jL,EAAW,GAEXjrF,EAEJ,YAAK,OAAM,EACXgzQ,GAAa,cAAe,KAAK,QAAU,KAAK,MAAM,EACtDC,GAAe,cAAe,KAAK,UAAY,KAAK,QAAQ,EAE5D,KAAK,QAAQlE,EAAMqE,CAAQ,EAC3BI,GAAW,cAAe,UAAWvoL,CAAQ,EAGtCjrF,EAKP,SAASozQ,EAAS9oQ,EAAOykQ,EAAM,CAC7B9jL,EAAW,GACXgkL,GAAK3kQ,CAAK,EACVtK,EAAS+uQ,CACX,CACF,CAwCA,IAAI37M,EAAM27M,EAAM1hQ,EAAM,CACpBomQ,GAAWrgN,CAAI,EACf,KAAK,OAAM,EAEX,MAAMzwB,EAAe,KAAK,aAE1B,MAAI,CAACt1B,GAAQ,OAAO0hQ,GAAS,aAC3B1hQ,EAAO0hQ,EACPA,EAAO,QAGF1hQ,EAAO6lQ,EAAS,OAAW7lQ,CAAI,EAAI,IAAI,QAAQ6lQ,CAAQ,EAW9D,SAASA,EAAS34Q,EAASC,EAAQ,CAKjC,MAAMs4Q,EAAWC,GAAMhE,CAAI,EAC3BpsO,EAAa,IAAIywB,EAAM0/M,EAAUM,CAAQ,EAQzC,SAASA,EAAS9oQ,EAAOopQ,EAAY3E,EAAM,CACzC,MAAM4E,EAEFD,GAActgN,EAGd9oD,EACF9P,EAAO8P,CAAK,EACH/P,EACTA,EAAQo5Q,CAAa,EAGrBtmQ,EAAK,OAAWsmQ,EAAe5E,CAAI,CAEvC,CACF,CACF,CAmBA,QAAQ37M,EAAM27M,EAAM,CAElB,IAAI9jL,EAAW,GAEXjrF,EAEJ,YAAK,IAAIozD,EAAM27M,EAAMqE,CAAQ,EAE7BI,GAAW,UAAW,MAAOvoL,CAAQ,EAE9BjrF,EAKP,SAASozQ,EAAS9oQ,EAAO8oD,EAAM,CAC7B67M,GAAK3kQ,CAAK,EACVtK,EAASozD,EACT63B,EAAW,EACb,CACF,CA+BA,UAAU73B,EAAM27M,EAAM,CACpB,KAAK,OAAM,EACX,MAAM+D,EAAWC,GAAMhE,CAAI,EACrBjK,EAAW,KAAK,UAAY,KAAK,SACvC,OAAAmO,GAAe,YAAanO,CAAQ,EACpC2O,GAAWrgN,CAAI,EAER0xM,EAAS1xM,EAAM0/M,CAAQ,CAChC,CA2DA,IAAIz2Q,KAAUixP,EAAY,CACxB,MAAMsmB,EAAY,KAAK,UACjBpyQ,EAAY,KAAK,UAIvB,GAFAoxQ,GAAe,MAAO,KAAK,MAAM,EAE7Bv2Q,GAAU,KAEP,GAAI,OAAOA,GAAU,WAC1Bw3Q,EAAUx3Q,EAAOixP,CAAU,UAClB,OAAOjxP,GAAU,SACtB,MAAM,QAAQA,CAAK,EACrBy3Q,EAAQz3Q,CAAK,EAEb03Q,EAAU13Q,CAAK,MAGjB,OAAM,IAAI,UAAU,+BAAiCA,EAAQ,GAAG,EAGlE,OAAO,KAMP,SAAS6uF,EAAI7uF,EAAO,CAClB,GAAI,OAAOA,GAAU,WACnBw3Q,EAAUx3Q,EAAO,CAAA,CAAE,UACV,OAAOA,GAAU,SAC1B,GAAI,MAAM,QAAQA,CAAK,EAAG,CACxB,KAAM,CAAC23Q,EAAQ,GAAG1mB,CAAU,EACkBjxP,EAC9Cw3Q,EAAUG,EAAQ1mB,CAAU,CAC9B,MACEymB,EAAU13Q,CAAK,MAGjB,OAAM,IAAI,UAAU,+BAAiCA,EAAQ,GAAG,CAEpE,CAMA,SAAS03Q,EAAU/zQ,EAAQ,CACzB,GAAI,EAAE,YAAaA,IAAW,EAAE,aAAcA,GAC5C,MAAM,IAAI,MACR,4KACV,EAGM8zQ,EAAQ9zQ,EAAO,OAAO,EAElBA,EAAO,WACTwB,EAAU,SAAWgkN,GAAO,GAAMhkN,EAAU,SAAUxB,EAAO,QAAQ,EAEzE,CAMA,SAAS8zQ,EAAQG,EAAS,CACxB,IAAIp0Q,EAAQ,GAEZ,GAAIo0Q,GAAY,KAET,GAAI,MAAM,QAAQA,CAAO,EAC9B,KAAO,EAAEp0Q,EAAQo0Q,EAAQ,QAAQ,CAC/B,MAAMv5L,EAAQu5L,EAAQp0Q,CAAK,EAC3BqrF,EAAIxQ,CAAK,CACX,KAEA,OAAM,IAAI,UAAU,oCAAsCu5L,EAAU,GAAG,CAE3E,CAOA,SAASJ,EAAUG,EAAQ1mB,EAAY,CACrC,IAAIztP,EAAQ,GACRq0Q,EAAa,GAEjB,KAAO,EAAEr0Q,EAAQ+zQ,EAAU,QACzB,GAAIA,EAAU/zQ,CAAK,EAAE,CAAC,IAAMm0Q,EAAQ,CAClCE,EAAar0Q,EACb,KACF,CAGF,GAAIq0Q,IAAe,GACjBN,EAAU,KAAK,CAACI,EAAQ,GAAG1mB,CAAU,CAAC,UAI/BA,EAAW,OAAS,EAAG,CAC9B,GAAI,CAAC6mB,EAAS,GAAG/qQ,CAAI,EAAIkkP,EACzB,MAAM8mB,EAAiBR,EAAUM,CAAU,EAAE,CAAC,EAC1CG,GAAWD,CAAc,GAAKC,GAAWF,CAAO,IAClDA,EAAU3uD,GAAO,GAAM4uD,EAAgBD,CAAO,GAGhDP,EAAUM,CAAU,EAAI,CAACF,EAAQG,EAAS,GAAG/qQ,CAAI,CACnD,CACF,CACF,CACF,CA8BO,MAAMkrQ,GAAU,IAAI5B,GAAS,EAAG,OAAM,EAS7C,SAASM,GAAajpQ,EAAM1N,EAAO,CACjC,GAAI,OAAOA,GAAU,WACnB,MAAM,IAAI,UAAU,WAAa0N,EAAO,oBAAoB,CAEhE,CASA,SAASkpQ,GAAelpQ,EAAM1N,EAAO,CACnC,GAAI,OAAOA,GAAU,WACnB,MAAM,IAAI,UAAU,WAAa0N,EAAO,sBAAsB,CAElE,CASA,SAAS6oQ,GAAe7oQ,EAAMwqQ,EAAQ,CACpC,GAAIA,EACF,MAAM,IAAI,MACR,gBACExqQ,EACA,kHACR,CAEA,CAQA,SAAS0pQ,GAAWv0P,EAAM,CAGxB,GAAI,CAACm1P,GAAWn1P,CAAI,GAAK,OAAOA,EAAK,MAAS,SAC5C,MAAM,IAAI,UAAU,uBAAyBA,EAAO,GAAG,CAG3D,CAUA,SAASs0P,GAAWzpQ,EAAMyqQ,EAAWvpL,EAAU,CAC7C,GAAI,CAACA,EACH,MAAM,IAAI,MACR,IAAMlhF,EAAO,0BAA4ByqQ,EAAY,WAC3D,CAEA,CAMA,SAASzB,GAAM12Q,EAAO,CACpB,OAAOo4Q,GAAgBp4Q,CAAK,EAAIA,EAAQ,IAAI61Q,GAAM71Q,CAAK,CACzD,CAMA,SAASo4Q,GAAgBp4Q,EAAO,CAC9B,MAAO,GACLA,GACE,OAAOA,GAAU,UACjB,YAAaA,GACb,aAAcA,EAEpB,CAMA,SAASk3Q,GAAgBl3Q,EAAO,CAC9B,OAAO,OAAOA,GAAU,UAAY81Q,GAAa91Q,CAAK,CACxD,CAUA,SAAS81Q,GAAa91Q,EAAO,CAC3B,MAAO,GACLA,GACE,OAAOA,GAAU,UACjB,eAAgBA,GAChB,eAAgBA,EAEtB,CCtrCA,MAAMq4Q,GACJ,oEAGIC,GAAe,CAAA,EAEfC,GAA2B,CAAC,mBAAoB,EAAI,EACpDC,GAAe,gCAIfC,GAAe,CACnB,CAAC,KAAM,aAAc,GAAI,sCAAsC,EAC/D,CAAC,KAAM,qBAAsB,GAAI,sCAAsC,EACvE,CACE,KAAM,YACN,GAAI,qDACJ,GAAI,cACR,EACE,CACE,KAAM,eACN,GAAI,qDACJ,GAAI,iBACR,EACE,CAAC,KAAM,YAAa,GAAI,kBAAkB,EAC1C,CACE,KAAM,kBACN,GAAI,qDACJ,GAAI,oBACR,EACE,CAAC,KAAM,aAAc,GAAI,sCAAsC,EAC/D,CAAC,KAAM,sBAAuB,GAAI,6BAA6B,EAC/D,CACE,KAAM,mBACN,GAAI,gDACR,EACE,CAAC,KAAM,aAAc,GAAI,mBAAmB,EAC5C,CAAC,KAAM,UAAW,GAAI,kCAAmC,GAAI,eAAe,EAC5E,CAAC,KAAM,eAAgB,GAAI,sBAAsB,EACjD,CAAC,KAAM,YAAa,GAAI,iCAAkC,GAAI,YAAY,EAC1E,CAAC,KAAM,SAAU,GAAI,4BAA6B,GAAI,UAAU,EAChE,CAAC,KAAM,YAAa,GAAI,mBAAmB,EAC3C,CAAC,KAAM,oBAAqB,GAAI,oBAAqB,GAAI,cAAc,EACvE,CAAC,KAAM,mBAAoB,GAAI,oBAAqB,GAAI,cAAc,CACxE,EAcO,SAASC,GAASj2Q,EAAS,CAChC,MAAM2B,EAAYu0Q,GAAgBl2Q,CAAO,EACnCiwQ,EAAOkG,GAAWn2Q,CAAO,EAC/B,OAAOkhC,GAAKv/B,EAAU,QAAQA,EAAU,MAAMsuQ,CAAI,EAAGA,CAAI,EAAGjwQ,CAAO,CACrE,CAmFA,SAASk2Q,GAAgBl2Q,EAAS,CAChC,MAAMo2Q,EAAgBp2Q,EAAQ,eAAiB61Q,GACzCQ,EAAgBr2Q,EAAQ,eAAiB61Q,GACzCS,EAAsBt2Q,EAAQ,oBAChC,CAAC,GAAGA,EAAQ,oBAAqB,GAAG81Q,EAAwB,EAC5DA,GAQJ,OANkBN,GAAO,EACtB,IAAI7L,EAAW,EACf,IAAI0M,CAAa,EACjB,IAAItG,GAAcuG,CAAmB,EACrC,IAAIF,CAAa,CAGtB,CAUA,SAASD,GAAWn2Q,EAAS,CAC3B,MAAM+e,EAAW/e,EAAQ,UAAY,GAC/BiwQ,EAAO,IAAImD,GAEjB,OAAI,OAAOr0P,GAAa,WACtBkxP,EAAK,MAAQlxP,GASRkxP,CACT,CAYA,SAAS/uO,GAAKozB,EAAMt0D,EAAS,CAC3B,MAAMu2Q,EAAkBv2Q,EAAQ,gBAC1Bw2Q,EAAex2Q,EAAQ,aACvByhD,EAAazhD,EAAQ,WACrBy2Q,EAAqBz2Q,EAAQ,mBAC7B02Q,EAAW12Q,EAAQ,SACnB22Q,EAAmB32Q,EAAQ,iBAC3B42Q,EAAe52Q,EAAQ,cAAgB62Q,GAE7C,UAAWC,KAAed,GACpB,OAAO,OAAOh2Q,EAAS82Q,EAAY,IAAI,IAEvC,GACEA,EAAY,MAEXA,EAAY,GACT,QAAUA,EAAY,GAAK,YAC3B,aAEJlB,GAEAkB,EAAY,GAVhB,QAsBJrI,OAAAA,GAAMn6M,EAAMg0G,CAAS,EAEdojF,GAAap3L,EAAM,CAC5B,SAAI5xC,EAAAA,SACA,WAAA++B,EACA,mBAAoB,GACxB,IAAI0yK,EAAAA,IACJ,KAAID,EAAAA,KACA,SAAU,GACV,SAAU,EACd,CAAG,EAGD,SAAS5rD,EAAUloJ,EAAMrf,EAAOo+B,EAAQ,CACtC,GAAI/e,EAAK,OAAS,OAAS+e,GAAU,OAAOp+B,GAAU,SACpD,OAAI21Q,EACFv3O,EAAO,SAAS,OAAOp+B,EAAO,CAAC,EAE/Bo+B,EAAO,SAASp+B,CAAK,EAAI,CAAC,KAAM,OAAQ,MAAOqf,EAAK,KAAK,EAGpDrf,EAGT,GAAIqf,EAAK,OAAS,UAAW,CAE3B,IAAIhkB,EAEJ,IAAKA,KAAO0xP,GACV,GACE,OAAO,OAAOA,GAAe1xP,CAAG,GAChC,OAAO,OAAOgkB,EAAK,WAAYhkB,CAAG,EAClC,CACA,MAAMmB,EAAQ6iB,EAAK,WAAWhkB,CAAG,EAC3B00I,EAAOg9G,GAAc1xP,CAAG,GAC1B00I,IAAS,MAAQA,EAAK,SAAS1wH,EAAK,OAAO,KAC7CA,EAAK,WAAWhkB,CAAG,EAAIw6Q,EAAa,OAAOr5Q,GAAS,EAAE,EAAGnB,EAAKgkB,CAAI,EAEtE,CAEJ,CAEA,GAAIA,EAAK,OAAS,UAAW,CAC3B,IAAIkuO,EAASioB,EACT,CAACA,EAAgB,SAASn2P,EAAK,OAAO,EACtCq2P,EACEA,EAAmB,SAASr2P,EAAK,OAAO,EACxC,GAMN,GAJI,CAACkuO,GAAUkoB,GAAgB,OAAOz1Q,GAAU,WAC9CutP,EAAS,CAACkoB,EAAap2P,EAAMrf,EAAOo+B,CAAM,GAGxCmvN,GAAUnvN,GAAU,OAAOp+B,GAAU,SACvC,OAAI41Q,GAAoBv2P,EAAK,SAC3B+e,EAAO,SAAS,OAAOp+B,EAAO,EAAG,GAAGqf,EAAK,QAAQ,EAEjD+e,EAAO,SAAS,OAAOp+B,EAAO,CAAC,EAG1BA,CAEX,CACF,CACF,CAWO,SAAS81Q,GAAoBt5Q,EAAO,CAIzC,MAAMw5Q,EAAQx5Q,EAAM,QAAQ,GAAG,EACzBy5Q,EAAez5Q,EAAM,QAAQ,GAAG,EAChC05Q,EAAa15Q,EAAM,QAAQ,GAAG,EAC9Bi+P,EAAQj+P,EAAM,QAAQ,GAAG,EAE/B,OAEEw5Q,IAAU,IAETvb,IAAU,IAAMub,EAAQvb,GACxBwb,IAAiB,IAAMD,EAAQC,GAC/BC,IAAe,IAAMF,EAAQE,GAE9BlB,GAAa,KAAKx4Q,EAAM,MAAM,EAAGw5Q,CAAK,CAAC,EAEhCx5Q,EAGF,EACT,CCjbO,SAAS25Q,GAAO35Q,EAAO0hC,EAAW,CACvC,MAAMvhC,EAAS,OAAOH,CAAK,EAE3B,GAAI,OAAO0hC,GAAc,SACvB,MAAM,IAAI,UAAU,oBAAoB,EAG1C,IAAIl4B,EAAQ,EACRhG,EAAQrD,EAAO,QAAQuhC,CAAS,EAEpC,KAAOl+B,IAAU,IACfgG,IACAhG,EAAQrD,EAAO,QAAQuhC,EAAWl+B,EAAQk+B,EAAU,MAAM,EAG5D,OAAOl4B,CACT,CC1Be,SAASowQ,GAAmB1rL,EAAQ,CAClD,GAAI,OAAOA,GAAW,SACrB,MAAM,IAAI,UAAU,mBAAmB,EAKxC,OAAOA,EACL,QAAQ,sBAAuB,MAAM,EACrC,QAAQ,KAAM,OAAO,CACxB,CCmEO,SAAS2rL,GAAe9iN,EAAM9vB,EAAMxkC,EAAS,CAElD,MAAMq3Q,EAAU9J,IADCvtQ,GAAW,CAAA,GACK,QAAU,CAAA,CAAE,EACvCs3Q,EAAQC,GAAQ/yO,CAAI,EAC1B,IAAIgzO,EAAY,GAEhB,KAAO,EAAEA,EAAYF,EAAM,QACzBlJ,GAAa95M,EAAM,OAAQ+5M,CAAO,EAIpC,SAASA,EAAQjuP,EAAMouP,EAAS,CAC9B,IAAIztQ,EAAQ,GAER02Q,EAEJ,KAAO,EAAE12Q,EAAQytQ,EAAQ,QAAQ,CAC/B,MAAMrvO,EAASqvO,EAAQztQ,CAAK,EAEtBq+B,EAAWq4O,EAAcA,EAAY,SAAW,OAEtD,GACEJ,EACEl4O,EACAC,EAAWA,EAAS,QAAQD,CAAM,EAAI,OACtCs4O,CACV,EAEQ,OAGFA,EAAct4O,CAChB,CAEA,GAAIs4O,EACF,OAAOj2H,EAAQphI,EAAMouP,CAAO,CAEhC,CAYA,SAAShtH,EAAQphI,EAAMouP,EAAS,CAC9B,MAAMrvO,EAASqvO,EAAQA,EAAQ,OAAS,CAAC,EACnC1mB,EAAOwvB,EAAME,CAAS,EAAE,CAAC,EACzBx/P,EAAUs/P,EAAME,CAAS,EAAE,CAAC,EAClC,IAAIntI,EAAQ,EAGZ,MAAMtpI,EADWo+B,EAAO,SACD,QAAQ/e,CAAI,EACnC,IAAIs3P,EAAS,GAETxvM,EAAQ,CAAA,EAEZ4/K,EAAK,UAAY,EAEjB,IAAIh/O,EAAQg/O,EAAK,KAAK1nO,EAAK,KAAK,EAEhC,KAAOtX,GAAO,CACZ,MAAMuS,EAAWvS,EAAM,MAEjB6uQ,EAAc,CAClB,MAAO7uQ,EAAM,MACb,MAAOA,EAAM,MACb,MAAO,CAAC,GAAG0lQ,EAASpuP,CAAI,CAChC,EACM,IAAI7iB,EAAQya,EAAQ,GAAGlP,EAAO6uQ,CAAW,EA8BzC,GA5BI,OAAOp6Q,GAAU,WACnBA,EAAQA,EAAM,OAAS,EAAI,CAAC,KAAM,OAAQ,MAAAA,CAAK,EAAI,QAIjDA,IAAU,GAIZuqP,EAAK,UAAYzsO,EAAW,GAExBgvH,IAAUhvH,GACZ6sD,EAAM,KAAK,CACT,KAAM,OACN,MAAO9nD,EAAK,MAAM,MAAMiqH,EAAOhvH,CAAQ,CACnD,CAAW,EAGC,MAAM,QAAQ9d,CAAK,EACrB2qE,EAAM,KAAK,GAAG3qE,CAAK,EACVA,GACT2qE,EAAM,KAAK3qE,CAAK,EAGlB8sI,EAAQhvH,EAAWvS,EAAM,CAAC,EAAE,OAC5B4uQ,EAAS,IAGP,CAAC5vB,EAAK,OACR,MAGFh/O,EAAQg/O,EAAK,KAAK1nO,EAAK,KAAK,CAC9B,CAEA,OAAIs3P,GACErtI,EAAQjqH,EAAK,MAAM,QACrB8nD,EAAM,KAAK,CAAC,KAAM,OAAQ,MAAO9nD,EAAK,MAAM,MAAMiqH,CAAK,CAAC,CAAC,EAG3DlrG,EAAO,SAAS,OAAOp+B,EAAO,EAAG,GAAGmnE,CAAK,GAEzCA,EAAQ,CAAC9nD,CAAI,EAGRrf,EAAQmnE,EAAM,MACvB,CACF,CAUA,SAASqvM,GAAQK,EAAa,CAE5B,MAAM12Q,EAAS,CAAA,EAEf,GAAI,CAAC,MAAM,QAAQ02Q,CAAW,EAC5B,MAAM,IAAI,UAAU,mDAAmD,EAKzE,MAAMpzO,EACJ,CAACozO,EAAY,CAAC,GAAK,MAAM,QAAQA,EAAY,CAAC,CAAC,EAC3CA,EACA,CAACA,CAAW,EAElB,IAAI72Q,EAAQ,GAEZ,KAAO,EAAEA,EAAQyjC,EAAK,QAAQ,CAC5B,MAAMqzO,EAAQrzO,EAAKzjC,CAAK,EACxBG,EAAO,KAAK,CAAC42Q,GAAaD,EAAM,CAAC,CAAC,EAAGE,GAAWF,EAAM,CAAC,CAAC,CAAC,CAAC,CAC5D,CAEA,OAAO32Q,CACT,CAUA,SAAS42Q,GAAahwB,EAAM,CAC1B,OAAO,OAAOA,GAAS,SAAW,IAAI,OAAO9pP,GAAO8pP,CAAI,EAAG,GAAG,EAAIA,CACpE,CAUA,SAASiwB,GAAW//P,EAAS,CAC3B,OAAO,OAAOA,GAAY,WACtBA,EACA,UAAY,CACV,OAAOA,CACT,CACN,CCvPA,MAAMggQ,GAAc,WAEdC,GAAiB,CAAC,WAAY,OAAQ,QAAS,OAAO,EASrD,SAASC,IAAiC,CAC/C,MAAO,CACL,WAAY,CAACC,EAA4B,EACzC,MAAO,CACL,gBAAiBC,GACjB,qBAAsBC,GACtB,oBAAqBA,GACrB,mBAAoBA,EAC1B,EACI,KAAM,CACJ,gBAAiBC,GACjB,qBAAsBC,GACtB,oBAAqBC,GACrB,mBAAoBC,EAC1B,CACA,CACA,CASO,SAASC,IAA+B,CAC7C,MAAO,CACL,OAAQ,CACN,CACE,UAAW,IACX,OAAQ,aACR,MAAO,YACP,YAAAV,GACA,eAAAC,EACR,EACM,CACE,UAAW,IACX,OAAQ,OACR,MAAO,YACP,YAAAD,GACA,eAAAC,EACR,EACM,CACE,UAAW,IACX,OAAQ,OACR,MAAO,MACP,YAAAD,GACA,eAAAC,EACR,CACA,CACA,CACA,CAMA,SAASG,GAAqBniP,EAAO,CACnC,KAAK,MAAM,CAAC,KAAM,OAAQ,MAAO,KAAM,IAAK,GAAI,SAAU,CAAA,CAAE,EAAGA,CAAK,CACtE,CAMA,SAASoiP,GAA0BpiP,EAAO,CACxC,KAAK,OAAO,MAAM,iBAAiB,KAAK,KAAMA,CAAK,CACrD,CAMA,SAASuiP,GAAwBviP,EAAO,CACtC,KAAK,OAAO,KAAK,iBAAiB,KAAK,KAAMA,CAAK,CACpD,CAMA,SAASwiP,GAAuBxiP,EAAO,CACrC,KAAK,OAAO,KAAK,KAAK,KAAK,KAAMA,CAAK,EACtC,MAAM7V,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EACtCA,EAAK,KACZA,EAAK,IAAM,UAAY,KAAK,eAAe6V,CAAK,CAClD,CAMA,SAASsiP,GAAyBtiP,EAAO,CACvC,KAAK,OAAO,KAAK,cAAc,KAAK,KAAMA,CAAK,CACjD,CAMA,SAASqiP,GAAoBriP,EAAO,CAClC,KAAK,KAAKA,CAAK,CACjB,CAGA,SAASkiP,GAA6B7jN,EAAM,CAC1C8iN,GACE9iN,EACA,CACE,CAAC,kDAAmDqkN,EAAO,EAC3D,CAAC,WAAA,+DAAA,IAAyD,EAAEC,EAAS,CAC3E,EACI,CAAC,OAAQ,CAAC,OAAQ,eAAe,CAAC,CACtC,CACA,CAYA,SAASD,GAAQvrO,EAAGi9C,EAAUr2E,EAAQzX,EAAMuM,EAAO,CACjD,IAAI5I,EAAS,GAcb,GAXI,CAACwgC,GAAS53B,CAAK,IAKf,MAAM,KAAKuhF,CAAQ,IACrBr2E,EAASq2E,EAAWr2E,EACpBq2E,EAAW,GACXnqF,EAAS,WAGP,CAAC24Q,GAAgB7kQ,CAAM,GACzB,MAAO,GAGT,MAAM1R,EAAQw2Q,GAAS9kQ,EAASzX,CAAI,EAEpC,GAAI,CAAC+F,EAAM,CAAC,EAAG,MAAO,GAGtB,MAAMpB,EAAS,CACb,KAAM,OACN,MAAO,KACP,IAAKhB,EAASmqF,EAAW/nF,EAAM,CAAC,EAChC,SAAU,CAAC,CAAC,KAAM,OAAQ,MAAO+nF,EAAW/nF,EAAM,CAAC,CAAC,CAAC,CACzD,EAEE,OAAIA,EAAM,CAAC,EACF,CAACpB,EAAQ,CAAC,KAAM,OAAQ,MAAOoB,EAAM,CAAC,CAAC,CAAC,EAG1CpB,CACT,CAUA,SAAS03Q,GAAUxrO,EAAG2rO,EAAOn+J,EAAO9xG,EAAO,CACzC,MAEE,CAAC43B,GAAS53B,EAAO,EAAI,GAErB,UAAU,KAAK8xG,CAAK,EAEb,GAGF,CACL,KAAM,OACN,MAAO,KACP,IAAK,UAAYm+J,EAAQ,IAAMn+J,EAC/B,SAAU,CAAC,CAAC,KAAM,OAAQ,MAAOm+J,EAAQ,IAAMn+J,CAAK,CAAC,CACzD,CACA,CAMA,SAASi+J,GAAgB7kQ,EAAQ,CAC/B,MAAM1R,EAAQ0R,EAAO,MAAM,GAAG,EAE9B,MACE,EAAA1R,EAAM,OAAS,GACdA,EAAMA,EAAM,OAAS,CAAC,IACpB,IAAI,KAAKA,EAAMA,EAAM,OAAS,CAAC,CAAC,GAC/B,CAAC,aAAa,KAAKA,EAAMA,EAAM,OAAS,CAAC,CAAC,IAC7CA,EAAMA,EAAM,OAAS,CAAC,IACpB,IAAI,KAAKA,EAAMA,EAAM,OAAS,CAAC,CAAC,GAC/B,CAAC,aAAa,KAAKA,EAAMA,EAAM,OAAS,CAAC,CAAC,GAMlD,CAMA,SAASw2Q,GAAS99C,EAAK,CACrB,MAAMg+C,EAAY,sBAAsB,KAAKh+C,CAAG,EAEhD,GAAI,CAACg+C,EACH,MAAO,CAACh+C,EAAK,MAAS,EAGxBA,EAAMA,EAAI,MAAM,EAAGg+C,EAAU,KAAK,EAElC,IAAIC,EAAQD,EAAU,CAAC,EACnBE,EAAoBD,EAAM,QAAQ,GAAG,EACzC,MAAME,EAAgBjC,GAAOl8C,EAAK,GAAG,EACrC,IAAIo+C,EAAgBlC,GAAOl8C,EAAK,GAAG,EAEnC,KAAOk+C,IAAsB,IAAMC,EAAgBC,GACjDp+C,GAAOi+C,EAAM,MAAM,EAAGC,EAAoB,CAAC,EAC3CD,EAAQA,EAAM,MAAMC,EAAoB,CAAC,EACzCA,EAAoBD,EAAM,QAAQ,GAAG,EACrCG,IAGF,MAAO,CAACp+C,EAAKi+C,CAAK,CACpB,CAOA,SAASv4O,GAAS53B,EAAOuwQ,EAAO,CAC9B,MAAM75Q,EAAOsJ,EAAM,MAAM,WAAWA,EAAM,MAAQ,CAAC,EAEnD,OACGA,EAAM,QAAU,GACfinP,GAAkBvwP,CAAI,GACtBswP,GAAmBtwP,CAAI,KAExB,CAAC65Q,GAAS75Q,IAAS,GAExB,CCrQAsqQ,GAAkB,KAAOwP,GAMzB,SAASC,IAA0B,CACjC,KAAK,OAAM,CACb,CAMA,SAASC,GAAkBvjP,EAAO,CAChC,KAAK,MAAM,CAAC,KAAM,oBAAqB,WAAY,GAAI,MAAO,EAAE,EAAGA,CAAK,CAC1E,CAMA,SAASwjP,IAAqC,CAC5C,KAAK,OAAM,CACb,CAMA,SAASC,GAAwBzjP,EAAO,CACtC,KAAK,MACH,CAAC,KAAM,qBAAsB,WAAY,GAAI,MAAO,GAAI,SAAU,EAAE,EACpEA,CACJ,CACA,CAMA,SAAS0jP,GAAuB1jP,EAAO,CACrC,MAAM2kF,EAAQ,KAAK,OAAM,EACnBx6F,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EACtCA,EAAK,KACZA,EAAK,WAAa8uO,GAChB,KAAK,eAAej5N,CAAK,CAC7B,EAAI,YAAW,EACb7V,EAAK,MAAQw6F,CACf,CAMA,SAASg/J,GAAiB3jP,EAAO,CAC/B,KAAK,KAAKA,CAAK,CACjB,CAMA,SAAS4jP,GAAkC5jP,EAAO,CAChD,MAAM2kF,EAAQ,KAAK,OAAM,EACnBx6F,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EACtCA,EAAK,KACZA,EAAK,WAAa8uO,GAChB,KAAK,eAAej5N,CAAK,CAC7B,EAAI,YAAW,EACb7V,EAAK,MAAQw6F,CACf,CAMA,SAASk/J,GAAuB7jP,EAAO,CACrC,KAAK,KAAKA,CAAK,CACjB,CAGA,SAASqjP,IAAwB,CAC/B,MAAO,GACT,CAMA,SAASxP,GAAkB1pP,EAAMgtB,EAAGx1B,EAAO4pB,EAAM,CAC/C,MAAMu4O,EAAUniQ,EAAM,cAAc4pB,CAAI,EACxC,IAAIjkC,EAAQw8Q,EAAQ,KAAK,IAAI,EAC7B,MAAMlmB,EAAOj8O,EAAM,MAAM,mBAAmB,EACtCoiQ,EAAUpiQ,EAAM,MAAM,WAAW,EACvC,OAAAra,GAASw8Q,EAAQ,KACfniQ,EAAM,KAAKA,EAAM,cAAcwI,CAAI,EAAG,CAAC,MAAO,IAAK,OAAQ7iB,CAAK,CAAC,CACrE,EACEy8Q,EAAO,EACPnmB,EAAI,EACJt2P,GAASw8Q,EAAQ,KAAK,GAAG,EAClBx8Q,CACT,CASO,SAAS08Q,IAA0B,CACxC,MAAO,CACL,MAAO,CACL,sBAAuBV,GACvB,gBAAiBC,GACjB,iCAAkCC,GAClC,sBAAuBC,EAC7B,EACI,KAAM,CACJ,sBAAuBC,GACvB,gBAAiBC,GACjB,iCAAkCC,GAClC,sBAAuBC,EAC7B,CACA,CACA,CAWO,SAASI,GAAsBl6Q,EAAS,CAE7C,IAAIm6Q,EAAiB,GAErB,OAAIn6Q,GAAWA,EAAQ,iBACrBm6Q,EAAiB,IAGZ,CACL,SAAU,CAAC,mBAAAC,EAAoB,kBAAAtQ,EAAiB,EAEhD,OAAQ,CAAC,CAAC,UAAW,IAAK,YAAa,CAAC,QAAS,WAAY,WAAW,CAAC,CAAC,CAC9E,EAME,SAASsQ,EAAmBh6P,EAAMgtB,EAAGx1B,EAAO4pB,EAAM,CAChD,MAAMu4O,EAAUniQ,EAAM,cAAc4pB,CAAI,EACxC,IAAIjkC,EAAQw8Q,EAAQ,KAAK,IAAI,EAC7B,MAAMlmB,EAAOj8O,EAAM,MAAM,oBAAoB,EACvCoiQ,EAAUpiQ,EAAM,MAAM,OAAO,EACnC,OAAAra,GAASw8Q,EAAQ,KACfniQ,EAAM,KAAKA,EAAM,cAAcwI,CAAI,EAAG,CAAC,OAAQ7iB,EAAO,MAAO,GAAG,CAAC,CACvE,EACIy8Q,EAAO,EAEPz8Q,GAASw8Q,EAAQ,KAAK,IAAI,EAEtB35P,EAAK,UAAYA,EAAK,SAAS,OAAS,IAC1C25P,EAAQ,MAAM,CAAC,EAEfx8Q,GAASw8Q,EAAQ,MACdI,EAAiB;AAAA,EAAO,KACvBviQ,EAAM,YACJA,EAAM,cAAcwI,EAAM25P,EAAQ,QAAO,CAAE,EAC3CI,EAAiBE,GAASC,EACtC,CACA,GAGIzmB,EAAI,EAEGt2P,CACT,CACF,CAGA,SAAS+8Q,GAAex7O,EAAM/9B,EAAOw5Q,EAAO,CAC1C,OAAOx5Q,IAAU,EAAI+9B,EAAOu7O,GAAOv7O,EAAM/9B,EAAOw5Q,CAAK,CACvD,CAGA,SAASF,GAAOv7O,EAAM/9B,EAAOw5Q,EAAO,CAClC,OAAQA,EAAQ,GAAK,QAAUz7O,CACjC,CC7LA,MAAM07O,GAAiC,CACrC,WACA,qBACA,iBACA,YACA,aACA,iBACF,EAEAC,GAAa,KAAOC,GASb,SAASC,IAA+B,CAC7C,MAAO,CACL,eAAgB,CAAC,QAAQ,EACzB,MAAO,CAAC,cAAeC,EAAkB,EACzC,KAAM,CAAC,cAAeC,EAAiB,CAC3C,CACA,CASO,SAASC,IAA6B,CAC3C,MAAO,CACL,OAAQ,CACN,CACE,UAAW,IACX,YAAa,WACb,eAAgBN,EACxB,CACA,EACI,SAAU,CAAC,OAAQC,EAAY,CACnC,CACA,CAMA,SAASG,GAAmB3kP,EAAO,CACjC,KAAK,MAAM,CAAC,KAAM,SAAU,SAAU,CAAA,CAAE,EAAGA,CAAK,CAClD,CAMA,SAAS4kP,GAAkB5kP,EAAO,CAChC,KAAK,KAAKA,CAAK,CACjB,CAMA,SAASwkP,GAAar6P,EAAMgtB,EAAGx1B,EAAO4pB,EAAM,CAC1C,MAAMu4O,EAAUniQ,EAAM,cAAc4pB,CAAI,EAClCqyN,EAAOj8O,EAAM,MAAM,eAAe,EACxC,IAAIra,EAAQw8Q,EAAQ,KAAK,IAAI,EAC7B,OAAAx8Q,GAASqa,EAAM,kBAAkBwI,EAAM,CACrC,GAAG25P,EAAQ,QAAO,EAClB,OAAQx8Q,EACR,MAAO,GACX,CAAG,EACDA,GAASw8Q,EAAQ,KAAK,IAAI,EAC1BlmB,EAAI,EACGt2P,CACT,CAGA,SAASm9Q,IAAa,CACpB,MAAO,GACT,CCgDA,SAASK,GAAoBx9Q,EAAO,CAClC,OAAOA,EAAM,MACf,CAcO,SAASy9Q,GAAcjnN,EAAO/zD,EAAS,CAC5C,MAAMgmP,EAAWhmP,GAAW,CAAA,EAEtBk9G,GAAS8oI,EAAS,OAAS,CAAA,GAAI,OAAM,EACrCi1B,EAAej1B,EAAS,cAAgB+0B,GAExCG,EAAa,CAAA,EAEbC,EAAa,CAAA,EAEbC,EAAa,CAAA,EAEbC,EAAsB,CAAA,EAC5B,IAAIC,EAAkB,EAClBC,EAAW,GAIf,KAAO,EAAEA,EAAWxnN,EAAM,QAAQ,CAEhC,MAAMynN,EAAM,CAAA,EAEN9jG,EAAQ,CAAA,EACd,IAAI+jG,EAAc,GAMlB,IAJI1nN,EAAMwnN,CAAQ,EAAE,OAASD,IAC3BA,EAAkBvnN,EAAMwnN,CAAQ,EAAE,QAG7B,EAAEE,EAAc1nN,EAAMwnN,CAAQ,EAAE,QAAQ,CAC7C,MAAM3jL,EAAOx2D,GAAU2yB,EAAMwnN,CAAQ,EAAEE,CAAW,CAAC,EAEnD,GAAIz1B,EAAS,kBAAoB,GAAO,CACtC,MAAM5/N,EAAO60P,EAAarjL,CAAI,EAC9B8/E,EAAM+jG,CAAW,EAAIr1P,GAGnBi1P,EAAoBI,CAAW,IAAM,QACrCr1P,EAAOi1P,EAAoBI,CAAW,KAEtCJ,EAAoBI,CAAW,EAAIr1P,EAEvC,CAEAo1P,EAAI,KAAK5jL,CAAI,CACf,CAEAujL,EAAWI,CAAQ,EAAIC,EACvBJ,EAAWG,CAAQ,EAAI7jG,CACzB,CAGA,IAAI+jG,EAAc,GAElB,GAAI,OAAOv+J,GAAU,UAAY,WAAYA,EAC3C,KAAO,EAAEu+J,EAAcH,GACrBJ,EAAWO,CAAW,EAAIC,GAAYx+J,EAAMu+J,CAAW,CAAC,MAErD,CACL,MAAMj8Q,EAAOk8Q,GAAYx+J,CAAK,EAE9B,KAAO,EAAEu+J,EAAcH,GACrBJ,EAAWO,CAAW,EAAIj8Q,CAE9B,CAGAi8Q,EAAc,GAEd,MAAMD,EAAM,CAAA,EAEN9jG,EAAQ,CAAA,EAEd,KAAO,EAAE+jG,EAAcH,GAAiB,CACtC,MAAM97Q,EAAO07Q,EAAWO,CAAW,EACnC,IAAIzsB,EAAS,GACT+D,EAAQ,GAERvzP,IAAS,IACXwvP,EAAS,IACT+D,EAAQ,KACCvzP,IAAS,IAClBwvP,EAAS,IACAxvP,IAAS,MAClBuzP,EAAQ,KAIV,IAAI3sO,EACF4/N,EAAS,kBAAoB,GACzB,EACA,KAAK,IACH,EACAq1B,EAAoBI,CAAW,EAAIzsB,EAAO,OAAS+D,EAAM,MACrE,EAEI,MAAMn7J,EAAOo3J,EAAS,IAAI,OAAO5oO,CAAI,EAAI2sO,EAErC/M,EAAS,kBAAoB,KAC/B5/N,EAAO4oO,EAAO,OAAS5oO,EAAO2sO,EAAM,OAEhC3sO,EAAOi1P,EAAoBI,CAAW,IACxCJ,EAAoBI,CAAW,EAAIr1P,GAGrCsxJ,EAAM+jG,CAAW,EAAIr1P,GAGvBo1P,EAAIC,CAAW,EAAI7jL,CACrB,CAGAujL,EAAW,OAAO,EAAG,EAAGK,CAAG,EAC3BJ,EAAW,OAAO,EAAG,EAAG1jG,CAAK,EAE7B6jG,EAAW,GAEX,MAAMhyB,EAAQ,CAAA,EAEd,KAAO,EAAEgyB,EAAWJ,EAAW,QAAQ,CACrC,MAAMK,EAAML,EAAWI,CAAQ,EACzB7jG,EAAQ0jG,EAAWG,CAAQ,EACjCE,EAAc,GAEd,MAAM38O,EAAO,CAAA,EAEb,KAAO,EAAE28O,EAAcH,GAAiB,CACtC,MAAM1jL,EAAO4jL,EAAIC,CAAW,GAAK,GACjC,IAAIzsB,EAAS,GACT+D,EAAQ,GAEZ,GAAI/M,EAAS,kBAAoB,GAAO,CACtC,MAAM5/N,EACJi1P,EAAoBI,CAAW,GAAK/jG,EAAM+jG,CAAW,GAAK,GACtDj8Q,EAAO07Q,EAAWO,CAAW,EAE/Bj8Q,IAAS,IACXwvP,EAAS,IAAI,OAAO5oO,CAAI,EACf5mB,IAAS,GACd4mB,EAAO,GACT4oO,EAAS,IAAI,OAAO5oO,EAAO,EAAI,EAAG,EAClC2sO,EAAQ,IAAI,OAAO3sO,EAAO,EAAI,EAAG,IAEjC4oO,EAAS,IAAI,OAAO5oO,EAAO,CAAC,EAC5B2sO,EAAQ/D,GAGV+D,EAAQ,IAAI,OAAO3sO,CAAI,CAE3B,CAEI4/N,EAAS,iBAAmB,IAAS,CAACy1B,GACxC38O,EAAK,KAAK,GAAG,EAIbknN,EAAS,UAAY,IAGrB,EAAEA,EAAS,kBAAoB,IAASpuJ,IAAS,MAChDouJ,EAAS,iBAAmB,IAASy1B,IAEtC38O,EAAK,KAAK,GAAG,EAGXknN,EAAS,kBAAoB,IAC/BlnN,EAAK,KAAKkwN,CAAM,EAGlBlwN,EAAK,KAAK84D,CAAI,EAEVouJ,EAAS,kBAAoB,IAC/BlnN,EAAK,KAAKi0N,CAAK,EAGb/M,EAAS,UAAY,IACvBlnN,EAAK,KAAK,GAAG,GAIbknN,EAAS,eAAiB,IAC1By1B,IAAgBH,EAAkB,IAElCx8O,EAAK,KAAK,GAAG,CAEjB,CAEAyqN,EAAM,KACJvD,EAAS,eAAiB,GACtBlnN,EAAK,KAAK,EAAE,EAAE,QAAQ,MAAO,EAAE,EAC/BA,EAAK,KAAK,EAAE,CACtB,CACE,CAEA,OAAOyqN,EAAM,KAAK;AAAA,CAAI,CACxB,CAQA,SAASnoN,GAAU7jC,EAAO,CACxB,OAAOA,GAAU,KAA8B,GAAK,OAAOA,CAAK,CAClE,CAQA,SAASm+Q,GAAYn+Q,EAAO,CAC1B,MAAMiC,EAAO,OAAOjC,GAAU,SAAWA,EAAM,YAAY,CAAC,EAAI,EAEhE,OAAOiC,IAAS,IAAgBA,IAAS,GACrC,GACAA,IAAS,IAAgBA,IAAS,IAChC,IACAA,IAAS,IAAgBA,IAAS,IAChC,IACA,CACV,CCvVA,MAAM8rP,GAAM,CAAA,EAAG,eAcR,SAASqwB,GAAOv/Q,EAAK4D,EAAS,CACnC,MAAMgmP,EAAWhmP,GAAW,CAAA,EA8B5B,SAAS8rP,EAAIvuP,KAAUixP,EAAY,CAEjC,IAAI/jP,EAAKqhP,EAAI,QACb,MAAMt1B,EAAWs1B,EAAI,SAErB,GAAIvuP,GAAS+tP,GAAI,KAAK/tP,EAAOnB,CAAG,EAAG,CAEjC,MAAMohB,EAAK,OAAOjgB,EAAMnB,CAAG,CAAC,EAE5BqO,EAAK6gP,GAAI,KAAK90B,EAAUh5M,CAAE,EAAIg5M,EAASh5M,CAAE,EAAIsuO,EAAI,OACnD,CAEA,GAAIrhP,EACF,OAAOA,EAAG,KAAK,KAAMlN,EAAO,GAAGixP,CAAU,CAE7C,CAEA,OAAA1C,EAAI,SAAW9F,EAAS,UAAY,CAAA,EACpC8F,EAAI,QAAU9F,EAAS,QACvB8F,EAAI,QAAU9F,EAAS,QAGhB8F,CACT,CCzGO,SAAS8d,GAAWxpP,EAAMgtB,EAAGx1B,EAAO4pB,EAAM,CAC/C,MAAMqyN,EAAOj8O,EAAM,MAAM,YAAY,EAC/BmiQ,EAAUniQ,EAAM,cAAc4pB,CAAI,EACxCu4O,EAAQ,KAAK,IAAI,EACjBA,EAAQ,MAAM,CAAC,EACf,MAAMx8Q,EAAQqa,EAAM,YAClBA,EAAM,cAAcwI,EAAM25P,EAAQ,QAAO,CAAE,EAC3CngL,EACJ,EACE,OAAAi6J,EAAI,EACGt2P,CACT,CAGA,SAASq8F,GAAI96D,EAAMsO,EAAGmtO,EAAO,CAC3B,MAAO,KAAOA,EAAQ,GAAK,KAAOz7O,CACpC,CCnBO,SAAS88O,GAAen/Q,EAAO0B,EAAS,CAC7C,OACE09Q,GAAYp/Q,EAAO0B,EAAQ,YAAa,EAAI,GAC5C,CAAC09Q,GAAYp/Q,EAAO0B,EAAQ,eAAgB,EAAK,CAErD,CAQA,SAAS09Q,GAAYp/Q,EAAO+nC,EAAMs3O,EAAM,CAKtC,GAJI,OAAOt3O,GAAS,WAClBA,EAAO,CAACA,CAAI,GAGV,CAACA,GAAQA,EAAK,SAAW,EAC3B,OAAOs3O,EAGT,IAAI/6Q,EAAQ,GAEZ,KAAO,EAAEA,EAAQyjC,EAAK,QACpB,GAAI/nC,EAAM,SAAS+nC,EAAKzjC,CAAK,CAAC,EAC5B,MAAO,GAIX,MAAO,EACT,CC1BO,SAASslQ,GAAUj5N,EAAG2uO,EAAInkQ,EAAO4pB,EAAM,CAC5C,IAAIzgC,EAAQ,GAEZ,KAAO,EAAEA,EAAQ6W,EAAM,OAAO,QAG5B,GACEA,EAAM,OAAO7W,CAAK,EAAE,YAAc;AAAA,GAClC66Q,GAAehkQ,EAAM,MAAOA,EAAM,OAAO7W,CAAK,CAAC,EAE/C,MAAO,QAAQ,KAAKygC,EAAK,MAAM,EAAI,GAAK,IAI5C,MAAO;AAAA,CACT,CCnBO,SAASw6O,GAAcz+Q,EAAO0+Q,EAAW,CAC9C,MAAMv+Q,EAAS,OAAOH,CAAK,EAC3B,IAAIwD,EAAQrD,EAAO,QAAQu+Q,CAAS,EAChCC,EAAWn7Q,EACXgG,EAAQ,EACRumC,EAAM,EAEV,GAAI,OAAO2uO,GAAc,SACvB,MAAM,IAAI,UAAU,oBAAoB,EAG1C,KAAOl7Q,IAAU,IACXA,IAAUm7Q,EACR,EAAEn1Q,EAAQumC,IACZA,EAAMvmC,GAGRA,EAAQ,EAGVm1Q,EAAWn7Q,EAAQk7Q,EAAU,OAC7Bl7Q,EAAQrD,EAAO,QAAQu+Q,EAAWC,CAAQ,EAG5C,OAAO5uO,CACT,CCzBO,SAAS6uO,GAAqB/7P,EAAMxI,EAAO,CAChD,MAAO,GACLA,EAAM,QAAQ,SAAW,IACvBwI,EAAK,OAEL,CAACA,EAAK,MAEN,WAAW,KAAKA,EAAK,KAAK,GAE1B,CAAC,0CAA0C,KAAKA,EAAK,KAAK,EAEhE,CCbO,SAASg8P,GAAWxkQ,EAAO,CAChC,MAAMi7O,EAASj7O,EAAM,QAAQ,OAAS,IAEtC,GAAIi7O,IAAW,KAAOA,IAAW,IAC/B,MAAM,IAAI,MACR,+BACEA,EACA,gDACR,EAGE,OAAOA,CACT,CCJO,SAASrzP,GAAK4gB,EAAMgtB,EAAGx1B,EAAO4pB,EAAM,CACzC,MAAMqxN,EAASupB,GAAWxkQ,CAAK,EACzBk2B,EAAM1tB,EAAK,OAAS,GACpB1b,EAASmuP,IAAW,IAAM,cAAgB,QAEhD,GAAIspB,GAAqB/7P,EAAMxI,CAAK,EAAG,CACrC,MAAMi8O,EAAOj8O,EAAM,MAAM,cAAc,EACjCra,EAAQqa,EAAM,YAAYk2B,EAAK8rD,EAAG,EACxC,OAAAi6J,EAAI,EACGt2P,CACT,CAEA,MAAMw8Q,EAAUniQ,EAAM,cAAc4pB,CAAI,EAClCk/N,EAAW7N,EAAO,OAAO,KAAK,IAAImpB,GAAcluO,EAAK+kN,CAAM,EAAI,EAAG,CAAC,CAAC,EACpEgB,EAAOj8O,EAAM,MAAM,YAAY,EACrC,IAAIra,EAAQw8Q,EAAQ,KAAKrZ,CAAQ,EAEjC,GAAItgP,EAAK,KAAM,CACb,MAAM45P,EAAUpiQ,EAAM,MAAM,iBAAiBlT,CAAM,EAAE,EACrDnH,GAASw8Q,EAAQ,KACfniQ,EAAM,KAAKwI,EAAK,KAAM,CACpB,OAAQ7iB,EACR,MAAO,IACP,OAAQ,CAAC,GAAG,EACZ,GAAGw8Q,EAAQ,QAAO,CAC1B,CAAO,CACP,EACIC,EAAO,CACT,CAEA,GAAI55P,EAAK,MAAQA,EAAK,KAAM,CAC1B,MAAM45P,EAAUpiQ,EAAM,MAAM,iBAAiBlT,CAAM,EAAE,EACrDnH,GAASw8Q,EAAQ,KAAK,GAAG,EACzBx8Q,GAASw8Q,EAAQ,KACfniQ,EAAM,KAAKwI,EAAK,KAAM,CACpB,OAAQ7iB,EACR,MAAO;AAAA,EACP,OAAQ,CAAC,GAAG,EACZ,GAAGw8Q,EAAQ,QAAO,CAC1B,CAAO,CACP,EACIC,EAAO,CACT,CAEA,OAAAz8Q,GAASw8Q,EAAQ,KAAK;AAAA,CAAI,EAEtBjsO,IACFvwC,GAASw8Q,EAAQ,KAAKjsO,EAAM;AAAA,CAAI,GAGlCvwC,GAASw8Q,EAAQ,KAAKrZ,CAAQ,EAC9B7M,EAAI,EACGt2P,CACT,CAGA,SAASq8F,GAAI96D,EAAMsO,EAAGmtO,EAAO,CAC3B,OAAQA,EAAQ,GAAK,QAAUz7O,CACjC,CClEO,SAASu9O,GAAWzkQ,EAAO,CAChC,MAAMi7O,EAASj7O,EAAM,QAAQ,OAAS,IAEtC,GAAIi7O,IAAW,KAAOA,IAAW,IAC/B,MAAM,IAAI,MACR,gCACEA,EACA,8CACR,EAGE,OAAOA,CACT,CCNO,SAASvM,GAAWlmO,EAAMgtB,EAAGx1B,EAAO4pB,EAAM,CAC/C,MAAM86O,EAAQD,GAAWzkQ,CAAK,EACxBlT,EAAS43Q,IAAU,IAAM,QAAU,aACnCzoB,EAAOj8O,EAAM,MAAM,YAAY,EACrC,IAAIoiQ,EAAUpiQ,EAAM,MAAM,OAAO,EACjC,MAAMmiQ,EAAUniQ,EAAM,cAAc4pB,CAAI,EACxC,IAAIjkC,EAAQw8Q,EAAQ,KAAK,GAAG,EAC5B,OAAAx8Q,GAASw8Q,EAAQ,KACfniQ,EAAM,KAAKA,EAAM,cAAcwI,CAAI,EAAG,CACpC,OAAQ7iB,EACR,MAAO,IACP,GAAGw8Q,EAAQ,QAAO,CACxB,CAAK,CACL,EACEx8Q,GAASw8Q,EAAQ,KAAK,KAAK,EAE3BC,EAAO,EAIL,CAAC55P,EAAK,KAEN,eAAe,KAAKA,EAAK,GAAG,GAE5B45P,EAAUpiQ,EAAM,MAAM,oBAAoB,EAC1Cra,GAASw8Q,EAAQ,KAAK,GAAG,EACzBx8Q,GAASw8Q,EAAQ,KACfniQ,EAAM,KAAKwI,EAAK,IAAK,CAAC,OAAQ7iB,EAAO,MAAO,IAAK,GAAGw8Q,EAAQ,QAAO,CAAE,CAAC,CAC5E,EACIx8Q,GAASw8Q,EAAQ,KAAK,GAAG,IAGzBC,EAAUpiQ,EAAM,MAAM,gBAAgB,EACtCra,GAASw8Q,EAAQ,KACfniQ,EAAM,KAAKwI,EAAK,IAAK,CACnB,OAAQ7iB,EACR,MAAO6iB,EAAK,MAAQ,IAAM;AAAA,EAC1B,GAAG25P,EAAQ,QAAO,CAC1B,CAAO,CACP,GAGEC,EAAO,EAEH55P,EAAK,QACP45P,EAAUpiQ,EAAM,MAAM,QAAQlT,CAAM,EAAE,EACtCnH,GAASw8Q,EAAQ,KAAK,IAAMuC,CAAK,EACjC/+Q,GAASw8Q,EAAQ,KACfniQ,EAAM,KAAKwI,EAAK,MAAO,CACrB,OAAQ7iB,EACR,MAAO++Q,EACP,GAAGvC,EAAQ,QAAO,CAC1B,CAAO,CACP,EACIx8Q,GAASw8Q,EAAQ,KAAKuC,CAAK,EAC3BtC,EAAO,GAGTnmB,EAAI,EAEGt2P,CACT,CCnEO,SAASg/Q,GAAc3kQ,EAAO,CACnC,MAAMi7O,EAASj7O,EAAM,QAAQ,UAAY,IAEzC,GAAIi7O,IAAW,KAAOA,IAAW,IAC/B,MAAM,IAAI,MACR,mCACEA,EACA,gDACR,EAGE,OAAOA,CACT,CCZO,SAAS2pB,GAAyBh9Q,EAAM,CAC7C,MAAO,MAAQA,EAAK,SAAS,EAAE,EAAE,YAAW,EAAK,GACnD,CC8BO,SAASi9Q,GAAWC,EAAS5pB,EAAQD,EAAQ,CAClD,MAAM8pB,EAAc1qB,GAAkByqB,CAAO,EACvCE,EAAa3qB,GAAkBa,CAAM,EAG3C,OAAI6pB,IAAgB,OACXC,IAAe,OAIlB/pB,IAAW,IACT,CAAC,OAAQ,GAAM,QAAS,EAAI,EAC5B,CAAC,OAAQ,GAAO,QAAS,EAAK,EAChC+pB,IAAe,EAEb,CAAC,OAAQ,GAAM,QAAS,EAAI,EAE5B,CAAC,OAAQ,GAAO,QAAS,EAAI,EAIjCD,IAAgB,EACXC,IAAe,OAElB,CAAC,OAAQ,GAAO,QAAS,EAAK,EAC9BA,IAAe,EAEb,CAAC,OAAQ,GAAM,QAAS,EAAI,EAE5B,CAAC,OAAQ,GAAO,QAAS,EAAK,EAI/BA,IAAe,OAElB,CAAC,OAAQ,GAAO,QAAS,EAAK,EAC9BA,IAAe,EAEb,CAAC,OAAQ,GAAM,QAAS,EAAK,EAE7B,CAAC,OAAQ,GAAO,QAAS,EAAK,CACtC,CCxEAxW,GAAS,KAAOyW,GAST,SAASzW,GAAShmP,EAAMgtB,EAAGx1B,EAAO4pB,EAAM,CAC7C,MAAMqxN,EAAS0pB,GAAc3kQ,CAAK,EAC5Bi8O,EAAOj8O,EAAM,MAAM,UAAU,EAC7BmiQ,EAAUniQ,EAAM,cAAc4pB,CAAI,EAClCwtN,EAAS+qB,EAAQ,KAAKlnB,CAAM,EAElC,IAAIyD,EAAUyjB,EAAQ,KACpBniQ,EAAM,kBAAkBwI,EAAM,CAC5B,MAAOyyO,EACP,OAAA7D,EACA,GAAG+qB,EAAQ,QAAO,CACxB,CAAK,CACL,EACE,MAAM+C,EAAcxmB,EAAQ,WAAW,CAAC,EAClCv2K,EAAO08L,GACXj7O,EAAK,OAAO,WAAWA,EAAK,OAAO,OAAS,CAAC,EAC7Cs7O,EACAjqB,CACJ,EAEM9yK,EAAK,SACPu2K,EAAUkmB,GAAyBM,CAAW,EAAIxmB,EAAQ,MAAM,CAAC,GAGnE,MAAMymB,EAAczmB,EAAQ,WAAWA,EAAQ,OAAS,CAAC,EACnDv6K,EAAQ0gM,GAAWj7O,EAAK,MAAM,WAAW,CAAC,EAAGu7O,EAAalqB,CAAM,EAElE92K,EAAM,SACRu6K,EAAUA,EAAQ,MAAM,EAAG,EAAE,EAAIkmB,GAAyBO,CAAW,GAGvE,MAAMhqB,EAAQgnB,EAAQ,KAAKlnB,CAAM,EAEjC,OAAAgB,EAAI,EAEJj8O,EAAM,+BAAiC,CACrC,MAAOmkE,EAAM,QACb,OAAQgE,EAAK,OACjB,EACSivK,EAASsH,EAAUvD,CAC5B,CAQA,SAAS8pB,GAAazvO,EAAG2uO,EAAInkQ,EAAO,CAClC,OAAOA,EAAM,QAAQ,UAAY,GACnC,CCvDO,SAASolQ,GAAsB58P,EAAMxI,EAAO,CACjD,IAAIqlQ,EAAmB,GAIvBxO,OAAAA,GAAMruP,EAAM,SAAUA,EAAM,CAC1B,GACG,UAAWA,GAAQ,WAAW,KAAKA,EAAK,KAAK,GAC9CA,EAAK,OAAS,QAEd,OAAA68P,EAAmB,GACZ/O,EAEX,CAAC,EAEM,IACJ,CAAC9tP,EAAK,OAASA,EAAK,MAAQ,IAC3B2tO,GAAS3tO,CAAI,IACZxI,EAAM,QAAQ,QAAUqlQ,GAE/B,CClBO,SAASpb,GAAQzhP,EAAMgtB,EAAGx1B,EAAO4pB,EAAM,CAC5C,MAAM07O,EAAO,KAAK,IAAI,KAAK,IAAI,EAAG98P,EAAK,OAAS,CAAC,EAAG,CAAC,EAC/C25P,EAAUniQ,EAAM,cAAc4pB,CAAI,EAExC,GAAIw7O,GAAsB58P,EAAMxI,CAAK,EAAG,CACtC,MAAMi8O,EAAOj8O,EAAM,MAAM,eAAe,EAClCoiQ,EAAUpiQ,EAAM,MAAM,UAAU,EAChCra,EAAQqa,EAAM,kBAAkBwI,EAAM,CAC1C,GAAG25P,EAAQ,QAAO,EAClB,OAAQ;AAAA,EACR,MAAO;AAAA,CACb,CAAK,EACD,OAAAC,EAAO,EACPnmB,EAAI,EAGFt2P,EACA;AAAA,GACC2/Q,IAAS,EAAI,IAAM,KAAK,OAEvB3/Q,EAAM,QAGH,KAAK,IAAIA,EAAM,YAAY,IAAI,EAAGA,EAAM,YAAY;AAAA,CAAI,CAAC,EAAI,EACxE,CAEE,CAEA,MAAMmjQ,EAAW,IAAI,OAAOwc,CAAI,EAC1BrpB,EAAOj8O,EAAM,MAAM,YAAY,EAC/BoiQ,EAAUpiQ,EAAM,MAAM,UAAU,EAMtCmiQ,EAAQ,KAAKrZ,EAAW,GAAG,EAE3B,IAAInjQ,EAAQqa,EAAM,kBAAkBwI,EAAM,CACxC,OAAQ,KACR,MAAO;AAAA,EACP,GAAG25P,EAAQ,QAAO,CACtB,CAAG,EAED,MAAI,SAAS,KAAKx8Q,CAAK,IAErBA,EAAQi/Q,GAAyBj/Q,EAAM,WAAW,CAAC,CAAC,EAAIA,EAAM,MAAM,CAAC,GAGvEA,EAAQA,EAAQmjQ,EAAW,IAAMnjQ,EAAQmjQ,EAErC9oP,EAAM,QAAQ,WAChBra,GAAS,IAAMmjQ,GAGjBsZ,EAAO,EACPnmB,EAAI,EAEGt2P,CACT,CCtEA+rO,GAAK,KAAO6zC,GAML,SAAS7zC,GAAKlpN,EAAM,CACzB,OAAOA,EAAK,OAAS,EACvB,CAKA,SAAS+8P,IAAW,CAClB,MAAO,GACT,CCZAtqN,GAAM,KAAOuqN,GASN,SAASvqN,GAAMzyC,EAAMgtB,EAAGx1B,EAAO4pB,EAAM,CAC1C,MAAM86O,EAAQD,GAAWzkQ,CAAK,EACxBlT,EAAS43Q,IAAU,IAAM,QAAU,aACnCzoB,EAAOj8O,EAAM,MAAM,OAAO,EAChC,IAAIoiQ,EAAUpiQ,EAAM,MAAM,OAAO,EACjC,MAAMmiQ,EAAUniQ,EAAM,cAAc4pB,CAAI,EACxC,IAAIjkC,EAAQw8Q,EAAQ,KAAK,IAAI,EAC7B,OAAAx8Q,GAASw8Q,EAAQ,KACfniQ,EAAM,KAAKwI,EAAK,IAAK,CAAC,OAAQ7iB,EAAO,MAAO,IAAK,GAAGw8Q,EAAQ,QAAO,CAAE,CAAC,CAC1E,EACEx8Q,GAASw8Q,EAAQ,KAAK,IAAI,EAE1BC,EAAO,EAIJ,CAAC55P,EAAK,KAAOA,EAAK,OAEnB,eAAe,KAAKA,EAAK,GAAG,GAE5B45P,EAAUpiQ,EAAM,MAAM,oBAAoB,EAC1Cra,GAASw8Q,EAAQ,KAAK,GAAG,EACzBx8Q,GAASw8Q,EAAQ,KACfniQ,EAAM,KAAKwI,EAAK,IAAK,CAAC,OAAQ7iB,EAAO,MAAO,IAAK,GAAGw8Q,EAAQ,QAAO,CAAE,CAAC,CAC5E,EACIx8Q,GAASw8Q,EAAQ,KAAK,GAAG,IAGzBC,EAAUpiQ,EAAM,MAAM,gBAAgB,EACtCra,GAASw8Q,EAAQ,KACfniQ,EAAM,KAAKwI,EAAK,IAAK,CACnB,OAAQ7iB,EACR,MAAO6iB,EAAK,MAAQ,IAAM,IAC1B,GAAG25P,EAAQ,QAAO,CAC1B,CAAO,CACP,GAGEC,EAAO,EAEH55P,EAAK,QACP45P,EAAUpiQ,EAAM,MAAM,QAAQlT,CAAM,EAAE,EACtCnH,GAASw8Q,EAAQ,KAAK,IAAMuC,CAAK,EACjC/+Q,GAASw8Q,EAAQ,KACfniQ,EAAM,KAAKwI,EAAK,MAAO,CACrB,OAAQ7iB,EACR,MAAO++Q,EACP,GAAGvC,EAAQ,QAAO,CAC1B,CAAO,CACP,EACIx8Q,GAASw8Q,EAAQ,KAAKuC,CAAK,EAC3BtC,EAAO,GAGTz8Q,GAASw8Q,EAAQ,KAAK,GAAG,EACzBlmB,EAAI,EAEGt2P,CACT,CAKA,SAAS6/Q,IAAY,CACnB,MAAO,GACT,CC5EA9S,GAAe,KAAO+S,GASf,SAAS/S,GAAelqP,EAAMgtB,EAAGx1B,EAAO4pB,EAAM,CACnD,MAAM7hC,EAAOygB,EAAK,cACZyzO,EAAOj8O,EAAM,MAAM,gBAAgB,EACzC,IAAIoiQ,EAAUpiQ,EAAM,MAAM,OAAO,EACjC,MAAMmiQ,EAAUniQ,EAAM,cAAc4pB,CAAI,EACxC,IAAIjkC,EAAQw8Q,EAAQ,KAAK,IAAI,EAC7B,MAAMhgI,EAAMniI,EAAM,KAAKwI,EAAK,IAAK,CAC/B,OAAQ7iB,EACR,MAAO,IACP,GAAGw8Q,EAAQ,QAAO,CACtB,CAAG,EACDx8Q,GAASw8Q,EAAQ,KAAKhgI,EAAM,IAAI,EAEhCigI,EAAO,EAEP,MAAMv9Q,EAAQmb,EAAM,MACpBA,EAAM,MAAQ,CAAA,EACdoiQ,EAAUpiQ,EAAM,MAAM,WAAW,EAKjC,MAAMkpB,EAAYlpB,EAAM,KAAKA,EAAM,cAAcwI,CAAI,EAAG,CACtD,OAAQ7iB,EACR,MAAO,IACP,GAAGw8Q,EAAQ,QAAO,CACtB,CAAG,EACD,OAAAC,EAAO,EACPpiQ,EAAM,MAAQnb,EACdo3P,EAAI,EAEAl0P,IAAS,QAAU,CAACo6I,GAAOA,IAAQj5G,EACrCvjC,GAASw8Q,EAAQ,KAAKj5O,EAAY,GAAG,EAC5BnhC,IAAS,WAElBpC,EAAQA,EAAM,MAAM,EAAG,EAAE,EAEzBA,GAASw8Q,EAAQ,KAAK,GAAG,EAGpBx8Q,CACT,CAKA,SAAS8/Q,IAAqB,CAC5B,MAAO,GACT,CCzDA9S,GAAW,KAAO+S,GAQX,SAAS/S,GAAWnqP,EAAMgtB,EAAGx1B,EAAO,CACzC,IAAIra,EAAQ6iB,EAAK,OAAS,GACtBsgP,EAAW,IACX3/P,EAAQ,GAKZ,KAAO,IAAI,OAAO,WAAa2/P,EAAW,UAAU,EAAE,KAAKnjQ,CAAK,GAC9DmjQ,GAAY,IAmBd,IAbE,WAAW,KAAKnjQ,CAAK,IACnB,WAAW,KAAKA,CAAK,GAAK,WAAW,KAAKA,CAAK,GAAM,QAAQ,KAAKA,CAAK,KAEzEA,EAAQ,IAAMA,EAAQ,KAUjB,EAAEwD,EAAQ6W,EAAM,OAAO,QAAQ,CACpC,MAAMzZ,EAAUyZ,EAAM,OAAO7W,CAAK,EAC5ByrP,EAAa50O,EAAM,eAAezZ,CAAO,EAE/C,IAAI2K,EAKJ,GAAK3K,EAAQ,QAEb,KAAQ2K,EAAQ0jP,EAAW,KAAKjvP,CAAK,GAAI,CACvC,IAAI8d,EAAWvS,EAAM,MAInBvL,EAAM,WAAW8d,CAAQ,IAAM,IAC/B9d,EAAM,WAAW8d,EAAW,CAAC,IAAM,IAEnCA,IAGF9d,EAAQA,EAAM,MAAM,EAAG8d,CAAQ,EAAI,IAAM9d,EAAM,MAAMuL,EAAM,MAAQ,CAAC,CACtE,CACF,CAEA,OAAO43P,EAAWnjQ,EAAQmjQ,CAC5B,CAKA,SAAS4c,IAAiB,CACxB,MAAO,GACT,CC/DO,SAASC,GAAqBn9P,EAAMxI,EAAO,CAChD,MAAMk2B,EAAMigN,GAAS3tO,CAAI,EAEzB,MAAO,GACL,CAACxI,EAAM,QAAQ,cAEbwI,EAAK,KAEL,CAACA,EAAK,OAENA,EAAK,UACLA,EAAK,SAAS,SAAW,GACzBA,EAAK,SAAS,CAAC,EAAE,OAAS,SAEzB0tB,IAAQ1tB,EAAK,KAAO,UAAY0tB,IAAQ1tB,EAAK,MAE9C,oBAAoB,KAAKA,EAAK,GAAG,GAGjC,CAAC,iBAAiB,KAAKA,EAAK,GAAG,EAErC,CCxBA+vI,GAAK,KAAOqtH,GASL,SAASrtH,GAAK/vI,EAAMgtB,EAAGx1B,EAAO4pB,EAAM,CACzC,MAAM86O,EAAQD,GAAWzkQ,CAAK,EACxBlT,EAAS43Q,IAAU,IAAM,QAAU,aACnCvC,EAAUniQ,EAAM,cAAc4pB,CAAI,EAExC,IAAIqyN,EAEAmmB,EAEJ,GAAIuD,GAAqBn9P,EAAMxI,CAAK,EAAG,CAErC,MAAMnb,EAAQmb,EAAM,MACpBA,EAAM,MAAQ,CAAA,EACdi8O,EAAOj8O,EAAM,MAAM,UAAU,EAC7B,IAAIra,EAAQw8Q,EAAQ,KAAK,GAAG,EAC5B,OAAAx8Q,GAASw8Q,EAAQ,KACfniQ,EAAM,kBAAkBwI,EAAM,CAC5B,OAAQ7iB,EACR,MAAO,IACP,GAAGw8Q,EAAQ,QAAO,CAC1B,CAAO,CACP,EACIx8Q,GAASw8Q,EAAQ,KAAK,GAAG,EACzBlmB,EAAI,EACJj8O,EAAM,MAAQnb,EACPc,CACT,CAEAs2P,EAAOj8O,EAAM,MAAM,MAAM,EACzBoiQ,EAAUpiQ,EAAM,MAAM,OAAO,EAC7B,IAAIra,EAAQw8Q,EAAQ,KAAK,GAAG,EAC5B,OAAAx8Q,GAASw8Q,EAAQ,KACfniQ,EAAM,kBAAkBwI,EAAM,CAC5B,OAAQ7iB,EACR,MAAO,KACP,GAAGw8Q,EAAQ,QAAO,CACxB,CAAK,CACL,EACEx8Q,GAASw8Q,EAAQ,KAAK,IAAI,EAC1BC,EAAO,EAIJ,CAAC55P,EAAK,KAAOA,EAAK,OAEnB,eAAe,KAAKA,EAAK,GAAG,GAE5B45P,EAAUpiQ,EAAM,MAAM,oBAAoB,EAC1Cra,GAASw8Q,EAAQ,KAAK,GAAG,EACzBx8Q,GAASw8Q,EAAQ,KACfniQ,EAAM,KAAKwI,EAAK,IAAK,CAAC,OAAQ7iB,EAAO,MAAO,IAAK,GAAGw8Q,EAAQ,QAAO,CAAE,CAAC,CAC5E,EACIx8Q,GAASw8Q,EAAQ,KAAK,GAAG,IAGzBC,EAAUpiQ,EAAM,MAAM,gBAAgB,EACtCra,GAASw8Q,EAAQ,KACfniQ,EAAM,KAAKwI,EAAK,IAAK,CACnB,OAAQ7iB,EACR,MAAO6iB,EAAK,MAAQ,IAAM,IAC1B,GAAG25P,EAAQ,QAAO,CAC1B,CAAO,CACP,GAGEC,EAAO,EAEH55P,EAAK,QACP45P,EAAUpiQ,EAAM,MAAM,QAAQlT,CAAM,EAAE,EACtCnH,GAASw8Q,EAAQ,KAAK,IAAMuC,CAAK,EACjC/+Q,GAASw8Q,EAAQ,KACfniQ,EAAM,KAAKwI,EAAK,MAAO,CACrB,OAAQ7iB,EACR,MAAO++Q,EACP,GAAGvC,EAAQ,QAAO,CAC1B,CAAO,CACP,EACIx8Q,GAASw8Q,EAAQ,KAAKuC,CAAK,EAC3BtC,EAAO,GAGTz8Q,GAASw8Q,EAAQ,KAAK,GAAG,EAEzBlmB,EAAI,EACGt2P,CACT,CAQA,SAASigR,GAASp9P,EAAMgtB,EAAGx1B,EAAO,CAChC,OAAO2lQ,GAAqBn9P,EAAMxI,CAAK,EAAI,IAAM,GACnD,CC5GA4yP,GAAc,KAAOiT,GASd,SAASjT,GAAcpqP,EAAMgtB,EAAGx1B,EAAO4pB,EAAM,CAClD,MAAM7hC,EAAOygB,EAAK,cACZyzO,EAAOj8O,EAAM,MAAM,eAAe,EACxC,IAAIoiQ,EAAUpiQ,EAAM,MAAM,OAAO,EACjC,MAAMmiQ,EAAUniQ,EAAM,cAAc4pB,CAAI,EACxC,IAAIjkC,EAAQw8Q,EAAQ,KAAK,GAAG,EAC5B,MAAMjpQ,EAAO8G,EAAM,kBAAkBwI,EAAM,CACzC,OAAQ7iB,EACR,MAAO,IACP,GAAGw8Q,EAAQ,QAAO,CACtB,CAAG,EACDx8Q,GAASw8Q,EAAQ,KAAKjpQ,EAAO,IAAI,EAEjCkpQ,EAAO,EAEP,MAAMv9Q,EAAQmb,EAAM,MACpBA,EAAM,MAAQ,CAAA,EACdoiQ,EAAUpiQ,EAAM,MAAM,WAAW,EAKjC,MAAMkpB,EAAYlpB,EAAM,KAAKA,EAAM,cAAcwI,CAAI,EAAG,CACtD,OAAQ7iB,EACR,MAAO,IACP,GAAGw8Q,EAAQ,QAAO,CACtB,CAAG,EACD,OAAAC,EAAO,EACPpiQ,EAAM,MAAQnb,EACdo3P,EAAI,EAEAl0P,IAAS,QAAU,CAACmR,GAAQA,IAASgwB,EACvCvjC,GAASw8Q,EAAQ,KAAKj5O,EAAY,GAAG,EAC5BnhC,IAAS,WAElBpC,EAAQA,EAAM,MAAM,EAAG,EAAE,EAEzBA,GAASw8Q,EAAQ,KAAK,GAAG,EAGpBx8Q,CACT,CAKA,SAASkgR,IAAoB,CAC3B,MAAO,GACT,CCtDO,SAASC,GAAY9lQ,EAAO,CACjC,MAAMi7O,EAASj7O,EAAM,QAAQ,QAAU,IAEvC,GAAIi7O,IAAW,KAAOA,IAAW,KAAOA,IAAW,IACjD,MAAM,IAAI,MACR,gCACEA,EACA,mDACR,EAGE,OAAOA,CACT,CCVO,SAAS8qB,GAAiB/lQ,EAAO,CACtC,MAAMgmQ,EAASF,GAAY9lQ,CAAK,EAC1BimQ,EAAcjmQ,EAAM,QAAQ,YAElC,GAAI,CAACimQ,EACH,OAAOD,IAAW,IAAM,IAAM,IAGhC,GAAIC,IAAgB,KAAOA,IAAgB,KAAOA,IAAgB,IAChE,MAAM,IAAI,MACR,gCACEA,EACA,wDACR,EAGE,GAAIA,IAAgBD,EAClB,MAAM,IAAI,MACR,uBACEA,EACA,0BACAC,EACA,oBACR,EAGE,OAAOA,CACT,CC7BO,SAASC,GAAmBlmQ,EAAO,CACxC,MAAMi7O,EAASj7O,EAAM,QAAQ,eAAiB,IAE9C,GAAIi7O,IAAW,KAAOA,IAAW,IAC/B,MAAM,IAAI,MACR,gCACEA,EACA,oDACR,EAGE,OAAOA,CACT,CCZO,SAASkrB,GAAUnmQ,EAAO,CAC/B,MAAMi7O,EAASj7O,EAAM,QAAQ,MAAQ,IAErC,GAAIi7O,IAAW,KAAOA,IAAW,KAAOA,IAAW,IACjD,MAAM,IAAI,MACR,gCACEA,EACA,iDACR,EAGE,OAAOA,CACT,CCHO,SAASruN,GAAKpkB,EAAM+e,EAAQvnB,EAAO4pB,EAAM,CAC9C,MAAMqyN,EAAOj8O,EAAM,MAAM,MAAM,EACzBomQ,EAAgBpmQ,EAAM,cAE5B,IAAIgmQ,EAASx9P,EAAK,QAAU09P,GAAmBlmQ,CAAK,EAAI8lQ,GAAY9lQ,CAAK,EAEzE,MAAMimQ,EAAcz9P,EAAK,QACrBw9P,IAAW,IACT,IACA,IACFD,GAAiB/lQ,CAAK,EAC1B,IAAIqmQ,EACF9+O,GAAUvnB,EAAM,eAAiBgmQ,IAAWhmQ,EAAM,eAAiB,GAErE,GAAI,CAACwI,EAAK,QAAS,CACjB,MAAM89P,EAAgB99P,EAAK,SAAWA,EAAK,SAAS,CAAC,EAAI,OAqCzD,IAzBGw9P,IAAW,KAAOA,IAAW,MAE9BM,IACC,CAACA,EAAc,UAAY,CAACA,EAAc,SAAS,CAAC,IAErDtmQ,EAAM,MAAMA,EAAM,MAAM,OAAS,CAAC,IAAM,QACxCA,EAAM,MAAMA,EAAM,MAAM,OAAS,CAAC,IAAM,YACxCA,EAAM,MAAMA,EAAM,MAAM,OAAS,CAAC,IAAM,QACxCA,EAAM,MAAMA,EAAM,MAAM,OAAS,CAAC,IAAM,YAExCA,EAAM,WAAWA,EAAM,WAAW,OAAS,CAAC,IAAM,GAClDA,EAAM,WAAWA,EAAM,WAAW,OAAS,CAAC,IAAM,GAClDA,EAAM,WAAWA,EAAM,WAAW,OAAS,CAAC,IAAM,IAElDqmQ,EAAqB,IAWnBF,GAAUnmQ,CAAK,IAAMgmQ,GAAUM,EAAe,CAChD,IAAIn9Q,EAAQ,GAEZ,KAAO,EAAEA,EAAQqf,EAAK,SAAS,QAAQ,CACrC,MAAM0V,EAAO1V,EAAK,SAASrf,CAAK,EAEhC,GACE+0B,GACAA,EAAK,OAAS,YACdA,EAAK,UACLA,EAAK,SAAS,CAAC,GACfA,EAAK,SAAS,CAAC,EAAE,OAAS,gBAC1B,CACAmoP,EAAqB,GACrB,KACF,CACF,CACF,CACF,CAEIA,IACFL,EAASC,GAGXjmQ,EAAM,cAAgBgmQ,EACtB,MAAMrgR,EAAQqa,EAAM,cAAcwI,EAAMohB,CAAI,EAC5C,OAAA5pB,EAAM,eAAiBgmQ,EACvBhmQ,EAAM,cAAgBomQ,EACtBnqB,EAAI,EACGt2P,CACT,CC3FO,SAAS4gR,GAAoBvmQ,EAAO,CACzC,MAAMyc,EAAQzc,EAAM,QAAQ,gBAAkB,MAE9C,GAAIyc,IAAU,OAASA,IAAU,OAASA,IAAU,QAClD,MAAM,IAAI,MACR,gCACEA,EACA,mEACR,EAGE,OAAOA,CACT,CCLO,SAASiyO,GAASlmP,EAAM+e,EAAQvnB,EAAO4pB,EAAM,CAClD,MAAM48O,EAAiBD,GAAoBvmQ,CAAK,EAChD,IAAIgmQ,EAAShmQ,EAAM,eAAiB8lQ,GAAY9lQ,CAAK,EAGjDunB,GAAUA,EAAO,OAAS,QAAUA,EAAO,UAC7Cy+O,GACG,OAAOz+O,EAAO,OAAU,UAAYA,EAAO,MAAQ,GAChDA,EAAO,MACP,IACHvnB,EAAM,QAAQ,sBAAwB,GACnC,EACAunB,EAAO,SAAS,QAAQ/e,CAAI,GAChCw9P,GAGJ,IAAIx3P,EAAOw3P,EAAO,OAAS,GAGzBQ,IAAmB,OAClBA,IAAmB,UAChBj/O,GAAUA,EAAO,OAAS,QAAUA,EAAO,QAAW/e,EAAK,WAE/DgG,EAAO,KAAK,KAAKA,EAAO,CAAC,EAAI,GAG/B,MAAM2zP,EAAUniQ,EAAM,cAAc4pB,CAAI,EACxCu4O,EAAQ,KAAK6D,EAAS,IAAI,OAAOx3P,EAAOw3P,EAAO,MAAM,CAAC,EACtD7D,EAAQ,MAAM3zP,CAAI,EAClB,MAAMytO,EAAOj8O,EAAM,MAAM,UAAU,EAC7Bra,EAAQqa,EAAM,YAClBA,EAAM,cAAcwI,EAAM25P,EAAQ,QAAO,CAAE,EAC3CngL,CACJ,EACE,OAAAi6J,EAAI,EAEGt2P,EAGP,SAASq8F,EAAI96D,EAAM/9B,EAAOw5Q,EAAO,CAC/B,OAAIx5Q,GACMw5Q,EAAQ,GAAK,IAAI,OAAOn0P,CAAI,GAAK0Y,GAGnCy7O,EAAQqD,EAASA,EAAS,IAAI,OAAOx3P,EAAOw3P,EAAO,MAAM,GAAK9+O,CACxE,CACF,CCjDO,SAASwmE,GAAUllF,EAAMgtB,EAAGx1B,EAAO4pB,EAAM,CAC9C,MAAMqyN,EAAOj8O,EAAM,MAAM,WAAW,EAC9BoiQ,EAAUpiQ,EAAM,MAAM,UAAU,EAChCra,EAAQqa,EAAM,kBAAkBwI,EAAMohB,CAAI,EAChD,OAAAw4O,EAAO,EACPnmB,EAAI,EACGt2P,CACT,CCDO,MAAM8gR,GAGT9Q,GAAQ,CACN,QACA,SACA,WAEA,WACA,oBACA,QACA,iBACA,aAEA,aACA,OACA,gBAEA,oBAEA,oBACA,SACA,OAEA,eACN,CAAK,EC7BE,SAASj9O,GAAKlQ,EAAMgtB,EAAGx1B,EAAO4pB,EAAM,CAOzC,OALoBphB,EAAK,SAAS,KAAK,SAAUxJ,EAAG,CAClD,OAAOynQ,GAASznQ,CAAC,CACnB,CAAC,EAE+BgB,EAAM,kBAAoBA,EAAM,eAC/C,KAAKA,EAAOwI,EAAMohB,CAAI,CACzC,CCdO,SAAS88O,GAAY1mQ,EAAO,CACjC,MAAMi7O,EAASj7O,EAAM,QAAQ,QAAU,IAEvC,GAAIi7O,IAAW,KAAOA,IAAW,IAC/B,MAAM,IAAI,MACR,iCACEA,EACA,8CACR,EAGE,OAAOA,CACT,CCXAh9C,GAAO,KAAO0oE,GASP,SAAS1oE,GAAOz1L,EAAMgtB,EAAGx1B,EAAO4pB,EAAM,CAC3C,MAAMqxN,EAASyrB,GAAY1mQ,CAAK,EAC1Bi8O,EAAOj8O,EAAM,MAAM,QAAQ,EAC3BmiQ,EAAUniQ,EAAM,cAAc4pB,CAAI,EAClCwtN,EAAS+qB,EAAQ,KAAKlnB,EAASA,CAAM,EAE3C,IAAIyD,EAAUyjB,EAAQ,KACpBniQ,EAAM,kBAAkBwI,EAAM,CAC5B,MAAOyyO,EACP,OAAA7D,EACA,GAAG+qB,EAAQ,QAAO,CACxB,CAAK,CACL,EACE,MAAM+C,EAAcxmB,EAAQ,WAAW,CAAC,EAClCv2K,EAAO08L,GACXj7O,EAAK,OAAO,WAAWA,EAAK,OAAO,OAAS,CAAC,EAC7Cs7O,EACAjqB,CACJ,EAEM9yK,EAAK,SACPu2K,EAAUkmB,GAAyBM,CAAW,EAAIxmB,EAAQ,MAAM,CAAC,GAGnE,MAAMymB,EAAczmB,EAAQ,WAAWA,EAAQ,OAAS,CAAC,EACnDv6K,EAAQ0gM,GAAWj7O,EAAK,MAAM,WAAW,CAAC,EAAGu7O,EAAalqB,CAAM,EAElE92K,EAAM,SACRu6K,EAAUA,EAAQ,MAAM,EAAG,EAAE,EAAIkmB,GAAyBO,CAAW,GAGvE,MAAMhqB,EAAQgnB,EAAQ,KAAKlnB,EAASA,CAAM,EAE1C,OAAAgB,EAAI,EAEJj8O,EAAM,+BAAiC,CACrC,MAAOmkE,EAAM,QACb,OAAQgE,EAAK,OACjB,EACSivK,EAASsH,EAAUvD,CAC5B,CAQA,SAASwrB,GAAWnxO,EAAG2uO,EAAInkQ,EAAO,CAChC,OAAOA,EAAM,QAAQ,QAAU,GACjC,CCxDO,SAAS9G,GAAKsP,EAAMgtB,EAAGx1B,EAAO4pB,EAAM,CACzC,OAAO5pB,EAAM,KAAKwI,EAAK,MAAOohB,CAAI,CACpC,CCNO,SAASg9O,GAAoB5mQ,EAAO,CACzC,MAAM6mQ,EAAa7mQ,EAAM,QAAQ,gBAAkB,EAEnD,GAAI6mQ,EAAa,EACf,MAAM,IAAI,MACR,2CACEA,EACA,sDACR,EAGE,OAAOA,CACT,CCNO,SAASje,GAAcpzN,EAAG2uO,EAAInkQ,EAAO,CAC1C,MAAMra,GACJwgR,GAAUnmQ,CAAK,GAAKA,EAAM,QAAQ,WAAa,IAAM,KACrD,OAAO4mQ,GAAoB5mQ,CAAK,CAAC,EAEnC,OAAOA,EAAM,QAAQ,WAAara,EAAM,MAAM,EAAG,EAAE,EAAIA,CACzD,CCGO,MAAM2xB,GAAS,CACpB,WAAA06O,GACA,MAAOvD,GACT,KAAE7mQ,GACA,WAAA8mP,GACA,SAAA8f,GACA,UAAAC,GACA,QAAAxE,GACF,KAAEv4B,GACA,MAAAz2K,GACA,eAAAy3M,GACA,WAAAC,GACA,KAAAp6G,GACA,cAAAq6G,GACA,KAAAhmO,GACA,SAAA8hO,GACA,UAAAhhK,GACF,KAAEh1E,GACA,OAAAulL,GACF,KAAE/kM,GACA,cAAA0vP,EACF,ECFO,SAASke,IAAuB,CACrC,MAAO,CACL,MAAO,CACL,MAAOC,GACP,UAAWC,GACX,YAAaA,GACb,SAAUC,EAChB,EACI,KAAM,CACJ,SAAUC,GACV,MAAOC,GACP,UAAWlrB,GACX,YAAaA,GACb,SAAUA,EAChB,CACA,CACA,CAMA,SAAS8qB,GAAW1oP,EAAO,CACzB,MAAMinF,EAAQjnF,EAAM,OAEpB,KAAK,MACH,CACE,KAAM,QACN,MAAOinF,EAAM,IAAI,SAAUtmG,EAAG,CAC5B,OAAOA,IAAM,OAAS,KAAOA,CAC/B,CAAC,EACD,SAAU,CAAA,CAChB,EACIqf,CACJ,EACE,KAAK,KAAK,QAAU,EACtB,CAMA,SAAS8oP,GAAU9oP,EAAO,CACxB,KAAK,KAAKA,CAAK,EACf,KAAK,KAAK,QAAU,MACtB,CAMA,SAAS4oP,GAAS5oP,EAAO,CACvB,KAAK,MAAM,CAAC,KAAM,WAAY,SAAU,CAAA,CAAE,EAAGA,CAAK,CACpD,CAMA,SAAS49N,GAAK59N,EAAO,CACnB,KAAK,KAAKA,CAAK,CACjB,CAMA,SAAS2oP,GAAU3oP,EAAO,CACxB,KAAK,MAAM,CAAC,KAAM,YAAa,SAAU,CAAA,CAAE,EAAGA,CAAK,CACrD,CAQA,SAAS6oP,GAAa7oP,EAAO,CAC3B,IAAI14B,EAAQ,KAAK,OAAM,EAEnB,KAAK,KAAK,UACZA,EAAQA,EAAM,QAAQ,aAAcya,EAAO,GAG7C,MAAMoI,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EACtCA,EAAK,KACZA,EAAK,MAAQ7iB,EACb,KAAK,KAAK04B,CAAK,CACjB,CAOA,SAASje,GAAQmwO,EAAI0d,EAAI,CAEvB,OAAOA,IAAO,IAAMA,EAAK1d,CAC3B,CAWO,SAAS62B,GAAmBh/Q,EAAS,CAC1C,MAAMgmP,EAAWhmP,GAAW,CAAA,EACtBujG,EAAUyiJ,EAAS,iBACnBi5B,EAAkBj5B,EAAS,eAC3Bi1B,EAAej1B,EAAS,aACxBk5B,EAAS37K,EAAU,IAAM,IAE/B,MAAO,CACL,OAAQ,CACN,CAAC,UAAW,KAAM,YAAa,WAAW,EAC1C,CAAC,UAAW;AAAA,EAAM,YAAa,WAAW,EAG1C,CAAC,QAAS,GAAM,UAAW,IAAK,MAAO,QAAS,EAEhD,CAAC,UAAW,IAAK,YAAa,WAAW,EAGzC,CAAC,QAAS,GAAM,UAAW,IAAK,MAAO,GAAG,EAM1C,CAAC,QAAS,GAAM,UAAW,IAAK,MAAO,OAAO,CACpD,EACI,SAAU,CACR,WAAY47K,EACZ,MAAOC,EACP,UAAWC,EACX,SAAUC,CAChB,CACA,EAME,SAASF,EAAYh/P,EAAMgtB,EAAGx1B,EAAO4pB,EAAM,CACzC,OAAO+9O,EAAcC,EAAkBp/P,EAAMxI,EAAO4pB,CAAI,EAAGphB,EAAK,KAAK,CACvE,CAUA,SAASk/P,EAAel/P,EAAMgtB,EAAGx1B,EAAO4pB,EAAM,CAC5C,MAAMg6O,EAAMiE,EAAqBr/P,EAAMxI,EAAO4pB,CAAI,EAC5CjkC,EAAQgiR,EAAc,CAAC/D,CAAG,CAAC,EAEjC,OAAOj+Q,EAAM,MAAM,EAAGA,EAAM,QAAQ;AAAA,CAAI,CAAC,CAC3C,CAMA,SAAS8hR,EAAgBj/P,EAAMgtB,EAAGx1B,EAAO4pB,EAAM,CAC7C,MAAMqyN,EAAOj8O,EAAM,MAAM,WAAW,EAC9BoiQ,EAAUpiQ,EAAM,MAAM,UAAU,EAChCra,EAAQqa,EAAM,kBAAkBwI,EAAM,CAC1C,GAAGohB,EACH,OAAQ09O,EACR,MAAOA,CACb,CAAK,EACD,OAAAlF,EAAO,EACPnmB,EAAI,EACGt2P,CACT,CAMA,SAASgiR,EAAcG,EAAQxiK,EAAO,CACpC,OAAO89J,GAAc0E,EAAQ,CAC3B,MAAAxiK,EAEA,gBAAA+hK,EAEA,QAAA17K,EAEA,aAAA03K,CACN,CAAK,CACH,CAOA,SAASuE,EAAkBp/P,EAAMxI,EAAO4pB,EAAM,CAC5C,MAAMziB,EAAWqB,EAAK,SACtB,IAAIrf,EAAQ,GAEZ,MAAMG,EAAS,CAAA,EACT84Q,EAAUpiQ,EAAM,MAAM,OAAO,EAEnC,KAAO,EAAE7W,EAAQge,EAAS,QACxB7d,EAAOH,CAAK,EAAI0+Q,EAAqB1gQ,EAAShe,CAAK,EAAG6W,EAAO4pB,CAAI,EAGnE,OAAAw4O,EAAO,EAEA94Q,CACT,CAOA,SAASu+Q,EAAqBr/P,EAAMxI,EAAO4pB,EAAM,CAC/C,MAAMziB,EAAWqB,EAAK,SACtB,IAAIrf,EAAQ,GAEZ,MAAMG,EAAS,CAAA,EACT84Q,EAAUpiQ,EAAM,MAAM,UAAU,EAEtC,KAAO,EAAE7W,EAAQge,EAAS,QAIxB7d,EAAOH,CAAK,EAAIs+Q,EAAgBtgQ,EAAShe,CAAK,EAAGqf,EAAMxI,EAAO4pB,CAAI,EAGpE,OAAAw4O,EAAO,EAEA94Q,CACT,CAMA,SAASi+Q,EAAoB/+P,EAAM+e,EAAQvnB,EAAO,CAChD,IAAIra,EAAQ8xQ,GAAgB,WAAWjvP,EAAM+e,EAAQvnB,CAAK,EAE1D,OAAIA,EAAM,MAAM,SAAS,WAAW,IAClCra,EAAQA,EAAM,QAAQ,MAAO,MAAM,GAG9BA,CACT,CACF,CCvRO,SAASoiR,IAA8B,CAC5C,MAAO,CACL,KAAM,CACJ,0BAA2BC,GAC3B,4BAA6BA,GAC7B,UAAWC,EACjB,CACA,CACA,CASO,SAASC,IAA4B,CAC1C,MAAO,CACL,OAAQ,CAAC,CAAC,QAAS,GAAM,UAAW,IAAK,MAAO,OAAO,CAAC,EACxD,SAAU,CAAC,SAAUC,EAAwB,CACjD,CACA,CAMA,SAASH,GAAU3pP,EAAO,CAExB,MAAM7V,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EACtCA,EAAK,KACZA,EAAK,QAAU6V,EAAM,OAAS,2BAChC,CAMA,SAAS4pP,GAA8B5pP,EAAO,CAC5C,MAAMkJ,EAAS,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAE/C,GACEA,GACAA,EAAO,OAAS,YAChB,OAAOA,EAAO,SAAY,UAC1B,CACA,MAAM/e,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EACtCA,EAAK,KACZ,MAAM0Q,EAAO1Q,EAAK,SAAS,CAAC,EAE5B,GAAI0Q,GAAQA,EAAK,OAAS,OAAQ,CAChC,MAAMsO,EAAWD,EAAO,SACxB,IAAIp+B,EAAQ,GAERi/Q,EAEJ,KAAO,EAAEj/Q,EAAQq+B,EAAS,QAAQ,CAChC,MAAM6gP,EAAU7gP,EAASr+B,CAAK,EAC9B,GAAIk/Q,EAAQ,OAAS,YAAa,CAChCD,EAAkBC,EAClB,KACF,CACF,CAEID,IAAoB5/P,IAEtB0Q,EAAK,MAAQA,EAAK,MAAM,MAAM,CAAC,EAE3BA,EAAK,MAAM,SAAW,EACxB1Q,EAAK,SAAS,MAAK,EAEnBA,EAAK,UACL0Q,EAAK,UACL,OAAOA,EAAK,SAAS,MAAM,QAAW,WAEtCA,EAAK,SAAS,MAAM,SACpBA,EAAK,SAAS,MAAM,SACpB1Q,EAAK,SAAS,MAAQ,OAAO,OAAO,GAAI0Q,EAAK,SAAS,KAAK,GAGjE,CACF,CAEA,KAAK,KAAKmF,CAAK,CACjB,CAMA,SAAS8pP,GAAyB3/P,EAAM+e,EAAQvnB,EAAO4pB,EAAM,CAC3D,MAAM1Q,EAAO1Q,EAAK,SAAS,CAAC,EACtB8/P,EACJ,OAAO9/P,EAAK,SAAY,WAAa0Q,GAAQA,EAAK,OAAS,YACvDyhC,EAAW,KAAOnyC,EAAK,QAAU,IAAM,KAAO,KAC9C25P,EAAUniQ,EAAM,cAAc4pB,CAAI,EAEpC0+O,GACFnG,EAAQ,KAAKxnN,CAAQ,EAGvB,IAAIh1D,EAAQ8xQ,GAAgB,SAASjvP,EAAM+e,EAAQvnB,EAAO,CACxD,GAAG4pB,EACH,GAAGu4O,EAAQ,QAAO,CACtB,CAAG,EAED,OAAImG,IACF3iR,EAAQA,EAAM,QAAQ,kCAAmC0pP,CAAK,GAGzD1pP,EAMP,SAAS0pP,EAAMkB,EAAI,CACjB,OAAOA,EAAK51L,CACd,CACF,CC5GO,SAAS4tN,IAAkB,CAChC,MAAO,CACLjI,GAA8B,EAC9B+B,GAAuB,EACvBU,GAA4B,EAC5B+D,GAAoB,EACpBiB,GAA2B,CAC/B,CACA,CAYO,SAASS,GAAcpgR,EAAS,CACrC,MAAO,CACL,WAAY,CACV04Q,GAA4B,EAC5BwB,GAAsBl6Q,CAAO,EAC7B86Q,GAA0B,EAC1BkE,GAAmBh/Q,CAAO,EAC1B8/Q,GAAyB,CAC/B,CACA,CACA,CCzDA,MAAMO,GAAY,CAChB,SAAUC,GACV,QAAS,EACX,EACMtsQ,GAAS,CACb,SAAUusQ,GACV,QAAS,EACX,EACMhkR,GAAO,CACX,SAAUikR,GACV,QAAS,EACX,EACMvH,GAAQ,CACZ,SAAUwH,GACV,QAAS,EACX,EACMC,GAAsB,CAC1B,SAAUC,GACV,QAAS,EACX,EACMC,GAAc,CAClB,KAAM,cACN,SAAUC,GACV,SAAUC,EACZ,EACMC,GAAmB,CACvB,KAAM,mBACN,SAAUC,GACV,SAAUC,EACZ,EACMC,GAAgB,CACpB,KAAM,gBACN,SAAUC,GACV,SAAUC,EACZ,EAGMtwQ,GAAO,CAAA,EAUN,SAASuwQ,IAAqB,CACnC,MAAO,CACT,KAAIvwQ,EACJ,CACA,CAGA,IAAItR,GAAO,GAGX,KAAOA,GAAO,KACZsR,GAAKtR,EAAI,EAAI0hR,GACb1hR,KACIA,KAAS,GAAIA,GAAO,GAAYA,KAAS,KAAIA,GAAO,IAE1DsR,GAAK,EAAE,EAAIowQ,GACXpwQ,GAAK,EAAE,EAAIowQ,GACXpwQ,GAAK,EAAE,EAAIowQ,GACXpwQ,GAAK,EAAE,EAAIowQ,GACXpwQ,GAAK,EAAE,EAAI,CAACowQ,GAAeH,EAAgB,EAC3CjwQ,GAAK,GAAG,EAAI,CAACowQ,GAAeH,EAAgB,EAC5CjwQ,GAAK,EAAE,EAAI,CAACowQ,GAAeN,EAAW,EACtC9vQ,GAAK,GAAG,EAAI,CAACowQ,GAAeN,EAAW,EAmBvC,SAASO,GAAsBjxB,EAASpK,EAAIkM,EAAK,CAC/C,MAAM/6E,EAAO,KAEb,IAAIqqG,EAEAjkR,EACJ,OAAOgtI,EAYP,SAASA,EAAM7qI,EAAM,CACnB,MAAI,CAAC+hR,GAAS/hR,CAAI,GAAK,CAAC4hR,GAAc,KAAKnqG,EAAMA,EAAK,QAAQ,GAAKuqG,GAAmBvqG,EAAK,MAAM,EACxF+6E,EAAIxyP,CAAI,GAEjB0wP,EAAQ,MAAM,iBAAiB,EAC/BA,EAAQ,MAAM,sBAAsB,EAC7B6oB,EAAMv5Q,CAAI,EACnB,CAYA,SAASu5Q,EAAMv5Q,EAAM,CACnB,OAAI+hR,GAAS/hR,CAAI,GACf0wP,EAAQ,QAAQ1wP,CAAI,EACbu5Q,GAELv5Q,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EACbiiR,GAEFzvB,EAAIxyP,CAAI,CACjB,CAgBA,SAASiiR,EAAYjiR,EAAM,CAEzB,OAAIA,IAAS,GACJ0wP,EAAQ,MAAMwwB,GAAqBgB,EAAkBC,CAAc,EAAEniR,CAAI,EAI9EA,IAAS,IAAMA,IAAS,IAAM6vP,GAAkB7vP,CAAI,GACtDnC,EAAO,GACP6yP,EAAQ,QAAQ1wP,CAAI,EACbiiR,GASFC,EAAiBliR,CAAI,CAC9B,CAYA,SAASmiR,EAAeniR,EAAM,CAC5B,OAAA0wP,EAAQ,QAAQ1wP,CAAI,EACpB8hR,EAAM,GACCG,CACT,CAYA,SAASC,EAAiBliR,EAAM,CAG9B,OAAInC,GAAQikR,GAAOnyB,GAAWl4E,EAAK,QAAQ,GACzCi5E,EAAQ,KAAK,sBAAsB,EACnCA,EAAQ,KAAK,iBAAiB,EACvBpK,EAAGtmP,CAAI,GAETwyP,EAAIxyP,CAAI,CACjB,CACF,CAaA,SAASqhR,GAAoB3wB,EAASpK,EAAIkM,EAAK,CAC7C,MAAM/6E,EAAO,KACb,OAAO2qG,EAYP,SAASA,EAASpiR,EAAM,CACtB,OAAIA,IAAS,IAAMA,IAAS,KAAO,CAACshR,GAAY,KAAK7pG,EAAMA,EAAK,QAAQ,GAAKuqG,GAAmBvqG,EAAK,MAAM,EAClG+6E,EAAIxyP,CAAI,GAEjB0wP,EAAQ,MAAM,iBAAiB,EAC/BA,EAAQ,MAAM,oBAAoB,EAG3BA,EAAQ,MAAMmwB,GAAWnwB,EAAQ,QAAQl8O,GAAQk8O,EAAQ,QAAQ3zP,GAAMslR,CAAQ,EAAG7vB,CAAG,EAAGA,CAAG,EAAExyP,CAAI,EAC1G,CAYA,SAASqiR,EAASriR,EAAM,CACtB,OAAA0wP,EAAQ,KAAK,oBAAoB,EACjCA,EAAQ,KAAK,iBAAiB,EACvBpK,EAAGtmP,CAAI,CAChB,CACF,CAaA,SAASwhR,GAAyB9wB,EAASpK,EAAIkM,EAAK,CAClD,MAAM/6E,EAAO,KACb,IAAI2jD,EAAS,GACTm3B,EAAO,GACX,OAAO+vB,EAYP,SAASA,EAActiR,EAAM,CAC3B,OAAKA,IAAS,IAAMA,IAAS,MAAQyhR,GAAiB,KAAKhqG,EAAMA,EAAK,QAAQ,GAAK,CAACuqG,GAAmBvqG,EAAK,MAAM,GAChHi5E,EAAQ,MAAM,iBAAiB,EAC/BA,EAAQ,MAAM,qBAAqB,EACnCt1B,GAAU,OAAO,cAAcp7N,CAAI,EACnC0wP,EAAQ,QAAQ1wP,CAAI,EACbuiR,GAEF/vB,EAAIxyP,CAAI,CACjB,CAYA,SAASuiR,EAAqBviR,EAAM,CAElC,GAAI2vP,GAAW3vP,CAAI,GAAKo7N,EAAO,OAAS,EAEtC,OAAAA,GAAU,OAAO,cAAcp7N,CAAI,EACnC0wP,EAAQ,QAAQ1wP,CAAI,EACbuiR,EAET,GAAIviR,IAAS,GAAI,CACf,MAAM6qF,EAAWuwI,EAAO,YAAW,EACnC,GAAIvwI,IAAa,QAAUA,IAAa,QACtC,OAAA6lK,EAAQ,QAAQ1wP,CAAI,EACbwiR,CAEX,CACA,OAAOhwB,EAAIxyP,CAAI,CACjB,CAYA,SAASwiR,EAAsBxiR,EAAM,CACnC,OAAIA,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EAChBuyP,EACKkwB,GAETlwB,EAAO,GACAiwB,IAEFhwB,EAAIxyP,CAAI,CACjB,CAYA,SAASyiR,EAAcziR,EAAM,CAG3B,OAAOA,IAAS,MAAQ+vP,GAAa/vP,CAAI,GAAKowP,GAA0BpwP,CAAI,GAAKuwP,GAAkBvwP,CAAI,GAAKswP,GAAmBtwP,CAAI,EAAIwyP,EAAIxyP,CAAI,EAAI0wP,EAAQ,QAAQl8O,GAAQk8O,EAAQ,QAAQ3zP,GAAM2lR,CAAa,EAAGlwB,CAAG,EAAExyP,CAAI,CAC5N,CAYA,SAAS0iR,EAAc1iR,EAAM,CAC3B,OAAA0wP,EAAQ,KAAK,qBAAqB,EAClCA,EAAQ,KAAK,iBAAiB,EACvBpK,EAAGtmP,CAAI,CAChB,CACF,CAaA,SAAS8gR,GAAkBpwB,EAASpK,EAAIkM,EAAK,CAC3C,IAAI5rO,EAAO,EACX,OAAO+7P,EAYP,SAASA,EAAgB3iR,EAAM,CAC7B,OAAKA,IAAS,IAAMA,IAAS,MAAQ4mB,EAAO,GAC1CA,IACA8pO,EAAQ,QAAQ1wP,CAAI,EACb2iR,GAEL3iR,IAAS,IAAM4mB,IAAS,GAC1B8pO,EAAQ,QAAQ1wP,CAAI,EACb4iR,GAEFpwB,EAAIxyP,CAAI,CACjB,CAYA,SAAS4iR,EAAe5iR,EAAM,CAE5B,OAAOA,IAAS,KAAOwyP,EAAIxyP,CAAI,EAAIsmP,EAAGtmP,CAAI,CAC5C,CACF,CAaA,SAAS+gR,GAAerwB,EAASpK,EAAIkM,EAAK,CAExC,IAAIqwB,EAEAC,EAEAvwB,EACJ,OAAOwwB,EAYP,SAASA,EAAa/iR,EAAM,CAI1B,OAAIA,IAAS,IAAMA,IAAS,GACnB0wP,EAAQ,MAAM+oB,GAAOuJ,EAAaC,CAAmB,EAAEjjR,CAAI,EAShEA,IAAS,MAAQowP,GAA0BpwP,CAAI,GAAKuwP,GAAkBvwP,CAAI,GAAKA,IAAS,IAAMswP,GAAmBtwP,CAAI,EAChHgjR,EAAYhjR,CAAI,GAEzBuyP,EAAO,GACP7B,EAAQ,QAAQ1wP,CAAI,EACb+iR,EACT,CAYA,SAASE,EAAoBjjR,EAAM,CAEjC,OAAIA,IAAS,GACX6iR,EAA0B,IAK1BC,EAA8BD,EAC9BA,EAA0B,QAE5BnyB,EAAQ,QAAQ1wP,CAAI,EACb+iR,CACT,CAWA,SAASC,EAAYhjR,EAAM,CAGzB,OAAI8iR,GAA+BD,GAA2B,CAACtwB,EACtDC,EAAIxyP,CAAI,EAEVsmP,EAAGtmP,CAAI,CAChB,CACF,CAaA,SAASghR,GAAatwB,EAASpK,EAAI,CACjC,IAAI8O,EAAW,EACX8tB,EAAY,EAChB,OAAOC,EAYP,SAASA,EAAWnjR,EAAM,CACxB,OAAIA,IAAS,IACXo1P,IACA1E,EAAQ,QAAQ1wP,CAAI,EACbmjR,GAMLnjR,IAAS,IAAMkjR,EAAY9tB,EACtBguB,EAAkBpjR,CAAI,EAM3BA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IACtN0wP,EAAQ,MAAM+oB,GAAOnzB,EAAI88B,CAAiB,EAAEpjR,CAAI,EAErDA,IAAS,MAAQowP,GAA0BpwP,CAAI,GAAKuwP,GAAkBvwP,CAAI,EACrEsmP,EAAGtmP,CAAI,GAEhB0wP,EAAQ,QAAQ1wP,CAAI,EACbmjR,EACT,CAYA,SAASC,EAAkBpjR,EAAM,CAE/B,OAAIA,IAAS,IACXkjR,IAEFxyB,EAAQ,QAAQ1wP,CAAI,EACbmjR,CACT,CACF,CAiBA,SAASlC,GAAcvwB,EAASpK,EAAIkM,EAAK,CACvC,OAAOinB,EAYP,SAASA,EAAMz5Q,EAAM,CAEnB,OAAIA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,KAChL0wP,EAAQ,QAAQ1wP,CAAI,EACby5Q,GAMLz5Q,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EACbqjR,GAMLrjR,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EACbsjR,GAITtjR,IAAS,IAETA,IAAS,MAAQowP,GAA0BpwP,CAAI,GAAKuwP,GAAkBvwP,CAAI,EACjEsmP,EAAGtmP,CAAI,EAETwyP,EAAIxyP,CAAI,CACjB,CAeA,SAASsjR,EAAkBtjR,EAAM,CAG/B,OAAIA,IAAS,MAAQA,IAAS,IAAMA,IAAS,IAAMowP,GAA0BpwP,CAAI,GAAKuwP,GAAkBvwP,CAAI,EACnGsmP,EAAGtmP,CAAI,EAETy5Q,EAAMz5Q,CAAI,CACnB,CAYA,SAASqjR,EAA6BrjR,EAAM,CAE1C,OAAO2vP,GAAW3vP,CAAI,EAAIujR,EAA8BvjR,CAAI,EAAIwyP,EAAIxyP,CAAI,CAC1E,CAYA,SAASujR,EAA8BvjR,EAAM,CAE3C,OAAIA,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EACby5Q,GAEL9pB,GAAW3vP,CAAI,GACjB0wP,EAAQ,QAAQ1wP,CAAI,EACbujR,GAIF/wB,EAAIxyP,CAAI,CACjB,CACF,CAiBA,SAASmhR,GAA4BzwB,EAASpK,EAAIkM,EAAK,CACrD,OAAO3nH,EAYP,SAASA,EAAM7qI,EAAM,CAEnB,OAAA0wP,EAAQ,QAAQ1wP,CAAI,EACbuzP,CACT,CAYA,SAASA,EAAMvzP,EAAM,CAEnB,OAAO6vP,GAAkB7vP,CAAI,EAAIwyP,EAAIxyP,CAAI,EAAIsmP,EAAGtmP,CAAI,CACtD,CACF,CAQA,SAASshR,GAAYthR,EAAM,CACzB,OAAOA,IAAS,MAAQA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,KAAOowP,GAA0BpwP,CAAI,CACnJ,CAQA,SAASyhR,GAAiBzhR,EAAM,CAC9B,MAAO,CAAC2vP,GAAW3vP,CAAI,CACzB,CAMA,SAAS4hR,GAAc5hR,EAAM,CAK3B,MAAO,EAAEA,IAAS,IAAM+hR,GAAS/hR,CAAI,EACvC,CAMA,SAAS+hR,GAAS/hR,EAAM,CACtB,OAAOA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAM6vP,GAAkB7vP,CAAI,CAC3F,CAMA,SAASgiR,GAAmBjhR,EAAQ,CAClC,IAAIQ,EAAQR,EAAO,OACfW,EAAS,GACb,KAAOH,KAAS,CACd,MAAMk1B,EAAQ11B,EAAOQ,CAAK,EAAE,CAAC,EAC7B,IAAKk1B,EAAM,OAAS,aAAeA,EAAM,OAAS,eAAiB,CAACA,EAAM,UAAW,CACnF/0B,EAAS,GACT,KACF,CAIA,GAAI+0B,EAAM,8BAA+B,CACvC/0B,EAAS,GACT,KACF,CACF,CACA,OAAIX,EAAO,OAAS,GAAK,CAACW,IAGxBX,EAAOA,EAAO,OAAS,CAAC,EAAE,CAAC,EAAE,8BAAgC,IAExDW,CACT,CC70BA,MAAM8hR,GAAS,CACb,SAAU/hB,GACV,QAAS,EACX,EAeO,SAASgiB,IAAc,CAE5B,MAAO,CACL,SAAU,CACP,GAAK,CACJ,KAAM,wBACN,SAAUC,GACV,aAAc,CACZ,SAAUC,EACpB,EACQ,KAAMC,EACd,CACA,EACI,KAAM,CACH,GAAK,CACJ,KAAM,kBACN,SAAUC,EAClB,EACO,GAAK,CACJ,KAAM,2BACN,IAAK,QACL,SAAUC,GACV,UAAWC,EACnB,CACA,CACA,CACA,CAOA,SAASD,GAAiCpzB,EAASpK,EAAIkM,EAAK,CAC1D,MAAM/6E,EAAO,KACb,IAAIl2K,EAAQk2K,EAAK,OAAO,OACxB,MAAMgoF,EAAUhoF,EAAK,OAAO,eAAiBA,EAAK,OAAO,aAAe,IAExE,IAAI+nF,EAGJ,KAAOj+P,KAAS,CACd,MAAMk1B,EAAQghJ,EAAK,OAAOl2K,CAAK,EAAE,CAAC,EAClC,GAAIk1B,EAAM,OAAS,aAAc,CAC/B+oO,EAAa/oO,EACb,KACF,CAGA,GAAIA,EAAM,OAAS,mBAAqBA,EAAM,OAAS,aAAeA,EAAM,OAAS,SAAWA,EAAM,OAAS,SAAWA,EAAM,OAAS,OACvI,KAEJ,CACA,OAAOo0G,EAKP,SAASA,EAAM7qI,EAAM,CACnB,GAAI,CAACw/P,GAAc,CAACA,EAAW,UAC7B,OAAOhN,EAAIxyP,CAAI,EAEjB,MAAMge,EAAK0xO,GAAoBj4E,EAAK,eAAe,CACjD,MAAO+nF,EAAW,IAClB,IAAK/nF,EAAK,IAAG,CACnB,CAAK,CAAC,EACF,OAAIz5J,EAAG,YAAY,CAAC,IAAM,IAAM,CAACyhP,EAAQ,SAASzhP,EAAG,MAAM,CAAC,CAAC,EACpDw0O,EAAIxyP,CAAI,GAEjB0wP,EAAQ,MAAM,4BAA4B,EAC1CA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,4BAA4B,EAClCpK,EAAGtmP,CAAI,EAChB,CACF,CAIA,SAAS+jR,GAAkChjR,EAAQs2C,EAAS,CAC1D,IAAI91C,EAAQR,EAAO,OAKnB,KAAOQ,KACL,GAAIR,EAAOQ,CAAK,EAAE,CAAC,EAAE,OAAS,cAAgBR,EAAOQ,CAAK,EAAE,CAAC,IAAM,QAAS,CAC7DR,EAAOQ,CAAK,EAAE,CAAC,EAC5B,KACF,CAGFR,EAAOQ,EAAQ,CAAC,EAAE,CAAC,EAAE,KAAO,OAC5BR,EAAOQ,EAAQ,CAAC,EAAE,CAAC,EAAE,KAAO,6BAI5B,MAAM2e,EAAO,CACX,KAAM,kBACN,MAAO,OAAO,OAAO,GAAInf,EAAOQ,EAAQ,CAAC,EAAE,CAAC,EAAE,KAAK,EACnD,IAAK,OAAO,OAAO,CAAA,EAAIR,EAAOA,EAAO,OAAS,CAAC,EAAE,CAAC,EAAE,GAAG,CAC3D,EAGQsyP,EAAS,CACb,KAAM,wBACN,MAAO,OAAO,OAAO,GAAItyP,EAAOQ,EAAQ,CAAC,EAAE,CAAC,EAAE,GAAG,EACjD,IAAK,OAAO,OAAO,GAAIR,EAAOQ,EAAQ,CAAC,EAAE,CAAC,EAAE,GAAG,CACnD,EAEE8xP,EAAO,IAAI,SACXA,EAAO,IAAI,SACXA,EAAO,IAAI,eAEX,MAAMpnK,EAAS,CACb,KAAM,wBACN,MAAO,OAAO,OAAO,CAAA,EAAIonK,EAAO,GAAG,EACnC,IAAK,OAAO,OAAO,CAAA,EAAItyP,EAAOA,EAAO,OAAS,CAAC,EAAE,CAAC,EAAE,KAAK,CAC7D,EAEQoiQ,EAAQ,CACZ,KAAM,cACN,YAAa,SACb,MAAO,OAAO,OAAO,CAAA,EAAIl3K,EAAO,KAAK,EACrC,IAAK,OAAO,OAAO,CAAA,EAAIA,EAAO,GAAG,CACrC,EAGQptD,EAAc,CAEpB99B,EAAOQ,EAAQ,CAAC,EAAGR,EAAOQ,EAAQ,CAAC,EAAG,CAAC,QAAS2e,EAAMm3B,CAAO,EAE7Dt2C,EAAOQ,EAAQ,CAAC,EAAGR,EAAOQ,EAAQ,CAAC,EAEnC,CAAC,QAAS8xP,EAAQh8M,CAAO,EAAG,CAAC,OAAQg8M,EAAQh8M,CAAO,EAEpD,CAAC,QAAS40C,EAAQ50C,CAAO,EAAG,CAAC,QAAS8rN,EAAO9rN,CAAO,EAAG,CAAC,OAAQ8rN,EAAO9rN,CAAO,EAAG,CAAC,OAAQ40C,EAAQ50C,CAAO,EAEzGt2C,EAAOA,EAAO,OAAS,CAAC,EAAGA,EAAOA,EAAO,OAAS,CAAC,EAAG,CAAC,OAAQmf,EAAMm3B,CAAO,CAAC,EAC7E,OAAAt2C,EAAO,OAAOQ,EAAOR,EAAO,OAASQ,EAAQ,EAAG,GAAGs9B,CAAW,EACvD99B,CACT,CAMA,SAAS8iR,GAAwBnzB,EAASpK,EAAIkM,EAAK,CACjD,MAAM/6E,EAAO,KACPgoF,EAAUhoF,EAAK,OAAO,eAAiBA,EAAK,OAAO,aAAe,IACxE,IAAI7wJ,EAAO,EAEP/oB,EAOJ,OAAOgtI,EAYP,SAASA,EAAM7qI,EAAM,CACnB,OAAA0wP,EAAQ,MAAM,iBAAiB,EAC/BA,EAAQ,MAAM,4BAA4B,EAC1CA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,4BAA4B,EAClCszB,CACT,CAYA,SAASA,EAAUhkR,EAAM,CACvB,OAAIA,IAAS,GAAWwyP,EAAIxyP,CAAI,GAChC0wP,EAAQ,MAAM,uBAAuB,EACrCA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,uBAAuB,EACpCA,EAAQ,MAAM,uBAAuB,EACrCA,EAAQ,MAAM,aAAa,EAAE,YAAc,SACpCuzB,EACT,CAYA,SAASA,EAASjkR,EAAM,CACtB,GAEA4mB,EAAO,KAEP5mB,IAAS,IAAM,CAACnC,GAGhBmC,IAAS,MAAQA,IAAS,IAAMowP,GAA0BpwP,CAAI,EAC5D,OAAOwyP,EAAIxyP,CAAI,EAEjB,GAAIA,IAAS,GAAI,CACf0wP,EAAQ,KAAK,aAAa,EAC1B,MAAMj6N,EAAQi6N,EAAQ,KAAK,uBAAuB,EAClD,OAAK+O,EAAQ,SAAS/P,GAAoBj4E,EAAK,eAAehhJ,CAAK,CAAC,CAAC,GAGrEi6N,EAAQ,MAAM,4BAA4B,EAC1CA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,4BAA4B,EACzCA,EAAQ,KAAK,iBAAiB,EACvBpK,GANEkM,EAAIxyP,CAAI,CAOnB,CACA,OAAKowP,GAA0BpwP,CAAI,IACjCnC,EAAO,IAET+oB,IACA8pO,EAAQ,QAAQ1wP,CAAI,EACbA,IAAS,GAAKkkR,EAAaD,CACpC,CAYA,SAASC,EAAWlkR,EAAM,CACxB,OAAIA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IACzC0wP,EAAQ,QAAQ1wP,CAAI,EACpB4mB,IACOq9P,GAEFA,EAASjkR,CAAI,CACtB,CACF,CAMA,SAAS0jR,GAAwBhzB,EAASpK,EAAIkM,EAAK,CACjD,MAAM/6E,EAAO,KACPgoF,EAAUhoF,EAAK,OAAO,eAAiBA,EAAK,OAAO,aAAe,IAExE,IAAIl3I,EACA3Z,EAAO,EAEP/oB,EACJ,OAAOgtI,EAYP,SAASA,EAAM7qI,EAAM,CACnB,OAAA0wP,EAAQ,MAAM,uBAAuB,EAAE,WAAa,GACpDA,EAAQ,MAAM,4BAA4B,EAC1CA,EAAQ,MAAM,kCAAkC,EAChDA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,kCAAkC,EACxCyzB,CACT,CAYA,SAASA,EAAcnkR,EAAM,CAC3B,OAAIA,IAAS,IACX0wP,EAAQ,MAAM,6BAA6B,EAC3CA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,6BAA6B,EAC1CA,EAAQ,MAAM,kCAAkC,EAChDA,EAAQ,MAAM,aAAa,EAAE,YAAc,SACpC+I,GAEFjH,EAAIxyP,CAAI,CACjB,CAeA,SAASy5P,EAAYz5P,EAAM,CACzB,GAEA4mB,EAAO,KAEP5mB,IAAS,IAAM,CAACnC,GAGhBmC,IAAS,MAAQA,IAAS,IAAMowP,GAA0BpwP,CAAI,EAC5D,OAAOwyP,EAAIxyP,CAAI,EAEjB,GAAIA,IAAS,GAAI,CACf0wP,EAAQ,KAAK,aAAa,EAC1B,MAAMj6N,EAAQi6N,EAAQ,KAAK,kCAAkC,EAC7D,OAAAnwN,EAAamvN,GAAoBj4E,EAAK,eAAehhJ,CAAK,CAAC,EAC3Di6N,EAAQ,MAAM,kCAAkC,EAChDA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,kCAAkC,EAC/CA,EAAQ,KAAK,4BAA4B,EAClCsJ,CACT,CACA,OAAK5J,GAA0BpwP,CAAI,IACjCnC,EAAO,IAET+oB,IACA8pO,EAAQ,QAAQ1wP,CAAI,EACbA,IAAS,GAAK05P,EAAcD,CACrC,CAeA,SAASC,EAAY15P,EAAM,CACzB,OAAIA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IACzC0wP,EAAQ,QAAQ1wP,CAAI,EACpB4mB,IACO6yO,GAEFA,EAAYz5P,CAAI,CACzB,CAYA,SAASg6P,EAAWh6P,EAAM,CACxB,OAAIA,IAAS,IACX0wP,EAAQ,MAAM,kBAAkB,EAChCA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,kBAAkB,EAC1B+O,EAAQ,SAASl/N,CAAU,GAC9Bk/N,EAAQ,KAAKl/N,CAAU,EAMlBkwN,GAAaC,EAAS0zB,EAAiB,iCAAiC,GAE1E5xB,EAAIxyP,CAAI,CACjB,CAYA,SAASokR,EAAgBpkR,EAAM,CAE7B,OAAOsmP,EAAGtmP,CAAI,CAChB,CACF,CAMA,SAAS2jR,GAA+BjzB,EAASpK,EAAIkM,EAAK,CAUxD,OAAO9B,EAAQ,MAAMuD,GAAW3N,EAAIoK,EAAQ,QAAQ8yB,GAAQl9B,EAAIkM,CAAG,CAAC,CACtE,CAGA,SAASoxB,GAAyBlzB,EAAS,CACzCA,EAAQ,KAAK,uBAAuB,CACtC,CAMA,SAAS+Q,GAAe/Q,EAASpK,EAAIkM,EAAK,CACxC,MAAM/6E,EAAO,KACb,OAAOg5E,GAAaC,EAAS4F,EAAa,8BAA+B,CAAK,EAK9E,SAASA,EAAYt2P,EAAM,CACzB,MAAMs1P,EAAO79E,EAAK,OAAOA,EAAK,OAAO,OAAS,CAAC,EAC/C,OAAO69E,GAAQA,EAAK,CAAC,EAAE,OAAS,+BAAiCA,EAAK,CAAC,EAAE,eAAeA,EAAK,CAAC,EAAG,EAAI,EAAE,SAAW,EAAIhP,EAAGtmP,CAAI,EAAIwyP,EAAIxyP,CAAI,CAC3I,CACF,CCndO,SAASqkR,GAAiB7jR,EAAS,CAExC,IAAI8jR,GADa9jR,GAAW,CAAA,GACN,YACtB,MAAMu3P,EAAY,CAChB,KAAM,gBACN,SAAUwsB,EACV,WAAYC,CAChB,EACE,OAAIF,GAAW,OACbA,EAAS,IAEJ,CACL,KAAM,CACH,IAAMvsB,CACb,EACI,WAAY,CACV,KAAM,CAACA,CAAS,CACtB,EACI,iBAAkB,CAChB,KAAM,CAAC,GAAG,CAChB,CACA,EAOE,SAASysB,EAAwBzjR,EAAQs2C,EAAS,CAChD,IAAI91C,EAAQ,GAGZ,KAAO,EAAEA,EAAQR,EAAO,QAEtB,GAAIA,EAAOQ,CAAK,EAAE,CAAC,IAAM,SAAWR,EAAOQ,CAAK,EAAE,CAAC,EAAE,OAAS,kCAAoCR,EAAOQ,CAAK,EAAE,CAAC,EAAE,OAAQ,CACzH,IAAIg/E,EAAOh/E,EAGX,KAAOg/E,KAEL,GAAIx/E,EAAOw/E,CAAI,EAAE,CAAC,IAAM,QAAUx/E,EAAOw/E,CAAI,EAAE,CAAC,EAAE,OAAS,kCAAoCx/E,EAAOw/E,CAAI,EAAE,CAAC,EAAE,OAE/Gx/E,EAAOQ,CAAK,EAAE,CAAC,EAAE,IAAI,OAASR,EAAOQ,CAAK,EAAE,CAAC,EAAE,MAAM,SAAWR,EAAOw/E,CAAI,EAAE,CAAC,EAAE,IAAI,OAASx/E,EAAOw/E,CAAI,EAAE,CAAC,EAAE,MAAM,OAAQ,CACzHx/E,EAAOQ,CAAK,EAAE,CAAC,EAAE,KAAO,wBACxBR,EAAOw/E,CAAI,EAAE,CAAC,EAAE,KAAO,wBAGvB,MAAM8pL,EAAgB,CACpB,KAAM,gBACN,MAAO,OAAO,OAAO,CAAA,EAAItpQ,EAAOw/E,CAAI,EAAE,CAAC,EAAE,KAAK,EAC9C,IAAK,OAAO,OAAO,CAAA,EAAIx/E,EAAOQ,CAAK,EAAE,CAAC,EAAE,GAAG,CACzD,EAGkB+P,EAAO,CACX,KAAM,oBACN,MAAO,OAAO,OAAO,CAAA,EAAIvQ,EAAOw/E,CAAI,EAAE,CAAC,EAAE,GAAG,EAC5C,IAAK,OAAO,OAAO,CAAA,EAAIx/E,EAAOQ,CAAK,EAAE,CAAC,EAAE,KAAK,CAC3D,EAIkB2xP,EAAa,CAAC,CAAC,QAASmX,EAAehzN,CAAO,EAAG,CAAC,QAASt2C,EAAOw/E,CAAI,EAAE,CAAC,EAAGlpC,CAAO,EAAG,CAAC,OAAQt2C,EAAOw/E,CAAI,EAAE,CAAC,EAAGlpC,CAAO,EAAG,CAAC,QAAS/lC,EAAM+lC,CAAO,CAAC,EAClJotO,EAAaptO,EAAQ,OAAO,WAAW,WAAW,KACpDotO,GAEF51B,GAAOqE,EAAYA,EAAW,OAAQ,EAAGR,GAAW+xB,EAAY1jR,EAAO,MAAMw/E,EAAO,EAAGh/E,CAAK,EAAG81C,CAAO,CAAC,EAIzGw3M,GAAOqE,EAAYA,EAAW,OAAQ,EAAG,CAAC,CAAC,OAAQ5hP,EAAM+lC,CAAO,EAAG,CAAC,QAASt2C,EAAOQ,CAAK,EAAE,CAAC,EAAG81C,CAAO,EAAG,CAAC,OAAQt2C,EAAOQ,CAAK,EAAE,CAAC,EAAG81C,CAAO,EAAG,CAAC,OAAQgzN,EAAehzN,CAAO,CAAC,CAAC,EAC/Kw3M,GAAO9tP,EAAQw/E,EAAO,EAAGh/E,EAAQg/E,EAAO,EAAG2yK,CAAU,EACrD3xP,EAAQg/E,EAAO2yK,EAAW,OAAS,EACnC,KACF,CAEJ,CAGF,IADA3xP,EAAQ,GACD,EAAEA,EAAQR,EAAO,QAClBA,EAAOQ,CAAK,EAAE,CAAC,EAAE,OAAS,mCAC5BR,EAAOQ,CAAK,EAAE,CAAC,EAAE,KAAO,QAG5B,OAAOR,CACT,CAMA,SAASwjR,EAAsB7zB,EAASpK,EAAIkM,EAAK,CAC/C,MAAMtxN,EAAW,KAAK,SAChBngC,EAAS,KAAK,OACpB,IAAI6lB,EAAO,EACX,OAAOikH,EAGP,SAASA,EAAM7qI,EAAM,CACnB,OAAIkhC,IAAa,KAAOngC,EAAOA,EAAO,OAAS,CAAC,EAAE,CAAC,EAAE,OAAS,kBACrDyxP,EAAIxyP,CAAI,GAEjB0wP,EAAQ,MAAM,gCAAgC,EACvCz9E,EAAKjzK,CAAI,EAClB,CAGA,SAASizK,EAAKjzK,EAAM,CAClB,MAAMwvP,EAASiD,GAAkBvxN,CAAQ,EACzC,GAAIlhC,IAAS,IAEX,OAAI4mB,EAAO,EAAU4rO,EAAIxyP,CAAI,GAC7B0wP,EAAQ,QAAQ1wP,CAAI,EACpB4mB,IACOqsJ,GAET,GAAIrsJ,EAAO,GAAK,CAAC09P,EAAQ,OAAO9xB,EAAIxyP,CAAI,EACxC,MAAMy2B,EAAQi6N,EAAQ,KAAK,gCAAgC,EACrD6C,EAAQd,GAAkBzyP,CAAI,EACpC,OAAAy2B,EAAM,MAAQ,CAAC88N,GAASA,IAAU,GAAK,EAAQ/D,EAC/C/4N,EAAM,OAAS,CAAC+4N,GAAUA,IAAW,GAAK,EAAQ+D,EAC3CjN,EAAGtmP,CAAI,CAChB,CACF,CACF,CCpHO,MAAM0kR,EAAQ,CAInB,aAAc,CAMZ,KAAK,IAAM,CAAA,CACb,CAUA,IAAInjR,EAAOutP,EAAQliK,EAAK,CACtB+3L,GAAkB,KAAMpjR,EAAOutP,EAAQliK,CAAG,CAC5C,CAqBA,QAAQ7rF,EAAQ,CAMd,GALA,KAAK,IAAI,KAAK,SAAUzE,EAAG4kB,EAAG,CAC5B,OAAO5kB,EAAE,CAAC,EAAI4kB,EAAE,CAAC,CACnB,CAAC,EAGG,KAAK,IAAI,SAAW,EACtB,OAqBF,IAAI3f,EAAQ,KAAK,IAAI,OAErB,MAAMqjR,EAAO,CAAA,EACb,KAAOrjR,EAAQ,GACbA,GAAS,EACTqjR,EAAK,KAAK7jR,EAAO,MAAM,KAAK,IAAIQ,CAAK,EAAE,CAAC,EAAI,KAAK,IAAIA,CAAK,EAAE,CAAC,CAAC,EAAG,KAAK,IAAIA,CAAK,EAAE,CAAC,CAAC,EAGnFR,EAAO,OAAS,KAAK,IAAIQ,CAAK,EAAE,CAAC,EAEnCqjR,EAAK,KAAK7jR,EAAO,OAAO,EACxBA,EAAO,OAAS,EAChB,IAAI+S,EAAQ8wQ,EAAK,IAAG,EACpB,KAAO9wQ,GAAO,CACZ,UAAW+S,KAAW/S,EACpB/S,EAAO,KAAK8lB,CAAO,EAErB/S,EAAQ8wQ,EAAK,IAAG,CAClB,CAGA,KAAK,IAAI,OAAS,CACpB,CACF,CAWA,SAASD,GAAkBE,EAASC,EAAIh2B,EAAQliK,EAAK,CACnD,IAAIrrF,EAAQ,EAGZ,GAAI,EAAAutP,IAAW,GAAKliK,EAAI,SAAW,GAGnC,MAAOrrF,EAAQsjR,EAAQ,IAAI,QAAQ,CACjC,GAAIA,EAAQ,IAAItjR,CAAK,EAAE,CAAC,IAAMujR,EAAI,CAChCD,EAAQ,IAAItjR,CAAK,EAAE,CAAC,GAAKutP,EAOzB+1B,EAAQ,IAAItjR,CAAK,EAAE,CAAC,EAAE,KAAK,GAAGqrF,CAAG,EAGjC,MACF,CACArrF,GAAS,CACX,CACAsjR,EAAQ,IAAI,KAAK,CAACC,EAAIh2B,EAAQliK,CAAG,CAAC,EACpC,CCzIO,SAASm4L,GAAchkR,EAAQQ,EAAO,CAC3C,IAAIyjR,EAAiB,GAErB,MAAMtnK,EAAQ,CAAA,EACd,KAAOn8G,EAAQR,EAAO,QAAQ,CAC5B,MAAME,EAAQF,EAAOQ,CAAK,EAC1B,GAAIyjR,GACF,GAAI/jR,EAAM,CAAC,IAAM,QAGXA,EAAM,CAAC,EAAE,OAAS,gBACpBy8G,EAAM,KAAK38G,EAAOQ,EAAQ,CAAC,EAAE,CAAC,EAAE,OAAS,uBAAyB,OAAS,MAAM,UAM5EN,EAAM,CAAC,EAAE,OAAS,gBACzB,GAAIF,EAAOQ,EAAQ,CAAC,EAAE,CAAC,EAAE,OAAS,uBAAwB,CACxD,MAAM0jR,EAAavnK,EAAM,OAAS,EAClCA,EAAMunK,CAAU,EAAIvnK,EAAMunK,CAAU,IAAM,OAAS,SAAW,OAChE,UAGOhkR,EAAM,CAAC,EAAE,OAAS,oBACzB,WAEOA,EAAM,CAAC,IAAM,SAAWA,EAAM,CAAC,EAAE,OAAS,sBACnD+jR,EAAiB,IAEnBzjR,GAAS,CACX,CACA,OAAOm8G,CACT,CC3BO,SAASwnK,IAAW,CACzB,MAAO,CACL,KAAM,CACJ,KAAM,CACJ,KAAM,QACN,SAAUC,GACV,WAAYC,EACpB,CACA,CACA,CACA,CAMA,SAASD,GAAcz0B,EAASpK,EAAIkM,EAAK,CACvC,MAAM/6E,EAAO,KACb,IAAI7wJ,EAAO,EACPy+P,EAAQ,EAER9yB,EACJ,OAAO1nH,EAkBP,SAASA,EAAM7qI,EAAM,CACnB,IAAIuB,EAAQk2K,EAAK,OAAO,OAAS,EACjC,KAAOl2K,EAAQ,IAAI,CACjB,MAAMpB,EAAOs3K,EAAK,OAAOl2K,CAAK,EAAE,CAAC,EAAE,KACnC,GAAIpB,IAAS,cAEbA,IAAS,aAAcoB,QAAa,MACtC,CACA,MAAM+zP,EAAO/zP,EAAQ,GAAKk2K,EAAK,OAAOl2K,CAAK,EAAE,CAAC,EAAE,KAAO,KACjD3B,EAAO01P,IAAS,aAAeA,IAAS,WAAagwB,EAAeC,EAG1E,OAAI3lR,IAAS0lR,GAAgB7tG,EAAK,OAAO,KAAKA,EAAK,MAAM,IAAI,EACpD+6E,EAAIxyP,CAAI,EAEVJ,EAAKI,CAAI,CAClB,CAcA,SAASulR,EAAcvlR,EAAM,CAC3B,OAAA0wP,EAAQ,MAAM,WAAW,EACzBA,EAAQ,MAAM,UAAU,EACjB80B,EAAaxlR,CAAI,CAC1B,CAcA,SAASwlR,EAAaxlR,EAAM,CAC1B,OAAIA,IAAS,MAcbuyP,EAAO,GAEP8yB,GAAS,GACFI,EAAazlR,CAAI,CAC1B,CAgBA,SAASylR,EAAazlR,EAAM,CAC1B,OAAIA,IAAS,KAEJwyP,EAAIxyP,CAAI,EAEbmwP,GAAmBnwP,CAAI,EAErBqlR,EAAQ,GACVA,EAAQ,EAGR5tG,EAAK,UAAY,GACjBi5E,EAAQ,KAAK,UAAU,EACvBA,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,YAAY,EAClBg1B,GAIFlzB,EAAIxyP,CAAI,EAEbqwP,GAAcrwP,CAAI,EAIbywP,GAAaC,EAAS+0B,EAAc,YAAY,EAAEzlR,CAAI,GAE/DqlR,GAAS,EACL9yB,IACFA,EAAO,GAEP3rO,GAAQ,GAEN5mB,IAAS,KACX0wP,EAAQ,MAAM,kBAAkB,EAChCA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,kBAAkB,EAE/B6B,EAAO,GACAkzB,IAIT/0B,EAAQ,MAAM,MAAM,EACbi1B,EAAY3lR,CAAI,GACzB,CAcA,SAAS2lR,EAAY3lR,EAAM,CACzB,OAAIA,IAAS,MAAQA,IAAS,KAAOowP,GAA0BpwP,CAAI,GACjE0wP,EAAQ,KAAK,MAAM,EACZ+0B,EAAazlR,CAAI,IAE1B0wP,EAAQ,QAAQ1wP,CAAI,EACbA,IAAS,GAAK4lR,EAAgBD,EACvC,CAcA,SAASC,EAAc5lR,EAAM,CAC3B,OAAIA,IAAS,IAAMA,IAAS,KAC1B0wP,EAAQ,QAAQ1wP,CAAI,EACb2lR,GAEFA,EAAY3lR,CAAI,CACzB,CAcA,SAAS0lR,EAAmB1lR,EAAM,CAKhC,OAHAy3K,EAAK,UAAY,GAGbA,EAAK,OAAO,KAAKA,EAAK,IAAG,EAAG,IAAI,EAC3B+6E,EAAIxyP,CAAI,GAEjB0wP,EAAQ,MAAM,mBAAmB,EAEjC6B,EAAO,GACHlC,GAAcrwP,CAAI,EACbywP,GAAaC,EAASm1B,EAAqB,aAAcpuG,EAAK,OAAO,WAAW,QAAQ,KAAK,SAAS,cAAc,EAAI,OAAY,CAAC,EAAEz3K,CAAI,EAE7I6lR,EAAoB7lR,CAAI,EACjC,CAgBA,SAAS6lR,EAAoB7lR,EAAM,CACjC,OAAIA,IAAS,IAAMA,IAAS,GACnB8lR,EAAyB9lR,CAAI,EAElCA,IAAS,KACXuyP,EAAO,GAEP7B,EAAQ,MAAM,kBAAkB,EAChCA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,kBAAkB,EACxBq1B,GAIFC,EAAiBhmR,CAAI,CAC9B,CAaA,SAAS+lR,EAAwB/lR,EAAM,CACrC,OAAIqwP,GAAcrwP,CAAI,EACbywP,GAAaC,EAASo1B,EAA0B,YAAY,EAAE9lR,CAAI,EAEpE8lR,EAAyB9lR,CAAI,CACtC,CAaA,SAAS8lR,EAAyB9lR,EAAM,CAEtC,OAAIA,IAAS,IACXqlR,GAAS,EACT9yB,EAAO,GACP7B,EAAQ,MAAM,sBAAsB,EACpCA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,sBAAsB,EAC5Bu1B,GAILjmR,IAAS,IACXqlR,GAAS,EAEFY,EAAgCjmR,CAAI,GAEzCA,IAAS,MAAQmwP,GAAmBnwP,CAAI,EACnCkmR,EAAuBlmR,CAAI,EAE7BgmR,EAAiBhmR,CAAI,CAC9B,CAaA,SAASimR,EAAgCjmR,EAAM,CAC7C,OAAIA,IAAS,IACX0wP,EAAQ,MAAM,sBAAsB,EAC7By1B,EAAoBnmR,CAAI,GAI1BgmR,EAAiBhmR,CAAI,CAC9B,CAaA,SAASmmR,EAAoBnmR,EAAM,CACjC,OAAIA,IAAS,IACX0wP,EAAQ,QAAQ1wP,CAAI,EACbmmR,GAILnmR,IAAS,IACXuyP,EAAO,GACP7B,EAAQ,KAAK,sBAAsB,EACnCA,EAAQ,MAAM,sBAAsB,EACpCA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,sBAAsB,EAC5B01B,IAET11B,EAAQ,KAAK,sBAAsB,EAC5B01B,EAAiCpmR,CAAI,EAC9C,CAaA,SAASomR,EAAiCpmR,EAAM,CAC9C,OAAIqwP,GAAcrwP,CAAI,EACbywP,GAAaC,EAASw1B,EAAwB,YAAY,EAAElmR,CAAI,EAElEkmR,EAAuBlmR,CAAI,CACpC,CAaA,SAASkmR,EAAuBlmR,EAAM,CACpC,OAAIA,IAAS,IACJ6lR,EAAoB7lR,CAAI,EAE7BA,IAAS,MAAQmwP,GAAmBnwP,CAAI,EAKtC,CAACuyP,GAAQ3rO,IAASy+P,EACbW,EAAiBhmR,CAAI,GAI9B0wP,EAAQ,KAAK,mBAAmB,EAChCA,EAAQ,KAAK,WAAW,EAGjBpK,EAAGtmP,CAAI,GAETgmR,EAAiBhmR,CAAI,CAC9B,CAaA,SAASgmR,EAAiBhmR,EAAM,CAE9B,OAAOwyP,EAAIxyP,CAAI,CACjB,CAcA,SAASslR,EAAatlR,EAAM,CAI1B,OAAA0wP,EAAQ,MAAM,UAAU,EACjB21B,EAAarmR,CAAI,CAC1B,CAgBA,SAASqmR,EAAarmR,EAAM,CAC1B,OAAIA,IAAS,KACX0wP,EAAQ,MAAM,kBAAkB,EAChCA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,kBAAkB,EACxB21B,GAELrmR,IAAS,MAAQmwP,GAAmBnwP,CAAI,GAC1C0wP,EAAQ,KAAK,UAAU,EAChBpK,EAAGtmP,CAAI,GAEZqwP,GAAcrwP,CAAI,EACbywP,GAAaC,EAAS21B,EAAc,YAAY,EAAErmR,CAAI,GAI/D0wP,EAAQ,MAAM,MAAM,EACb41B,EAAYtmR,CAAI,EACzB,CAcA,SAASsmR,EAAYtmR,EAAM,CACzB,OAAIA,IAAS,MAAQA,IAAS,KAAOowP,GAA0BpwP,CAAI,GACjE0wP,EAAQ,KAAK,MAAM,EACZ21B,EAAarmR,CAAI,IAE1B0wP,EAAQ,QAAQ1wP,CAAI,EACbA,IAAS,GAAKumR,EAAgBD,EACvC,CAcA,SAASC,EAAcvmR,EAAM,CAC3B,OAAIA,IAAS,IAAMA,IAAS,KAC1B0wP,EAAQ,QAAQ1wP,CAAI,EACbsmR,GAEFA,EAAYtmR,CAAI,CACzB,CACF,CAIA,SAASolR,GAAarkR,EAAQs2C,EAAS,CACrC,IAAI91C,EAAQ,GACRilR,EAA0B,GAE1BC,EAAU,EAEVC,EAAW,CAAC,EAAG,EAAG,EAAG,CAAC,EAEtBtuL,EAAO,CAAC,EAAG,EAAG,EAAG,CAAC,EAClBuuL,EAAgC,GAChCC,EAAe,EAEfC,EAEAC,EAEAC,EACJ,MAAM3sL,EAAM,IAAIsqL,GAChB,KAAO,EAAEnjR,EAAQR,EAAO,QAAQ,CAC9B,MAAME,EAAQF,EAAOQ,CAAK,EACpBk1B,EAAQx1B,EAAM,CAAC,EACjBA,EAAM,CAAC,IAAM,QAEXw1B,EAAM,OAAS,aACjBkwP,EAAgC,GAG5BC,IAAiB,IACnBI,GAAc5sL,EAAK/iD,EAASuvO,EAAcC,EAAcC,CAAW,EACnEA,EAAc,OACdF,EAAe,GAIjBC,EAAe,CACb,KAAM,QACN,MAAO,OAAO,OAAO,CAAA,EAAIpwP,EAAM,KAAK,EAEpC,IAAK,OAAO,OAAO,CAAA,EAAIA,EAAM,GAAG,CAC1C,EACQ2jE,EAAI,IAAI74F,EAAO,EAAG,CAAC,CAAC,QAASslR,EAAcxvO,CAAO,CAAC,CAAC,GAC3C5gB,EAAM,OAAS,YAAcA,EAAM,OAAS,qBACrD+vP,EAA0B,GAC1BO,EAAc,OACdL,EAAW,CAAC,EAAG,EAAG,EAAG,CAAC,EACtBtuL,EAAO,CAAC,EAAG72F,EAAQ,EAAG,EAAG,CAAC,EAGtBolR,IACFA,EAAgC,GAChCG,EAAc,CACZ,KAAM,YACN,MAAO,OAAO,OAAO,CAAA,EAAIrwP,EAAM,KAAK,EAEpC,IAAK,OAAO,OAAO,CAAA,EAAIA,EAAM,GAAG,CAC5C,EACU2jE,EAAI,IAAI74F,EAAO,EAAG,CAAC,CAAC,QAASulR,EAAazvO,CAAO,CAAC,CAAC,GAErDovO,EAAUhwP,EAAM,OAAS,oBAAsB,EAAIqwP,EAAc,EAAI,GAG9DL,IAAYhwP,EAAM,OAAS,QAAUA,EAAM,OAAS,wBAA0BA,EAAM,OAAS,yBACpG+vP,EAA0B,GAGtBpuL,EAAK,CAAC,IAAM,IACVsuL,EAAS,CAAC,IAAM,IAClBtuL,EAAK,CAAC,EAAIA,EAAK,CAAC,EAChB2uL,EAAcE,GAAU7sL,EAAK/iD,EAASqvO,EAAUD,EAAS,OAAWM,CAAW,EAC/EL,EAAW,CAAC,EAAG,EAAG,EAAG,CAAC,GAExBtuL,EAAK,CAAC,EAAI72F,IAEHk1B,EAAM,OAAS,qBACpB+vP,EACFA,EAA0B,IAEtBE,EAAS,CAAC,IAAM,IAClBtuL,EAAK,CAAC,EAAIA,EAAK,CAAC,EAChB2uL,EAAcE,GAAU7sL,EAAK/iD,EAASqvO,EAAUD,EAAS,OAAWM,CAAW,GAEjFL,EAAWtuL,EACXA,EAAO,CAACsuL,EAAS,CAAC,EAAGnlR,EAAO,EAAG,CAAC,IAK7Bk1B,EAAM,OAAS,aACtBkwP,EAAgC,GAChCC,EAAerlR,GACNk1B,EAAM,OAAS,YAAcA,EAAM,OAAS,qBACrDmwP,EAAerlR,EACXmlR,EAAS,CAAC,IAAM,GAClBtuL,EAAK,CAAC,EAAIA,EAAK,CAAC,EAChB2uL,EAAcE,GAAU7sL,EAAK/iD,EAASqvO,EAAUD,EAASllR,EAAOwlR,CAAW,GAClE3uL,EAAK,CAAC,IAAM,IACrB2uL,EAAcE,GAAU7sL,EAAK/iD,EAAS+gD,EAAMquL,EAASllR,EAAOwlR,CAAW,GAEzEN,EAAU,GACDA,IAAYhwP,EAAM,OAAS,QAAUA,EAAM,OAAS,wBAA0BA,EAAM,OAAS,0BACtG2hE,EAAK,CAAC,EAAI72F,EAEd,CAUA,IATIqlR,IAAiB,GACnBI,GAAc5sL,EAAK/iD,EAASuvO,EAAcC,EAAcC,CAAW,EAErE1sL,EAAI,QAAQ/iD,EAAQ,MAAM,EAK1B91C,EAAQ,GACD,EAAEA,EAAQ81C,EAAQ,OAAO,QAAQ,CACtC,MAAMp2C,EAAQo2C,EAAQ,OAAO91C,CAAK,EAC9BN,EAAM,CAAC,IAAM,SAAWA,EAAM,CAAC,EAAE,OAAS,UAC5CA,EAAM,CAAC,EAAE,OAAS8jR,GAAc1tO,EAAQ,OAAQ91C,CAAK,EAEzD,CACA,OAAOR,CACT,CAcA,SAASkmR,GAAU7sL,EAAK/iD,EAASyyC,EAAO28L,EAASS,EAAQC,EAAc,CAGrE,MAAMC,EAAYX,IAAY,EAAI,cAAgBA,IAAY,EAAI,iBAAmB,YAG/EY,EAAY,eASdv9L,EAAM,CAAC,IAAM,IACfq9L,EAAa,IAAM,OAAO,OAAO,CAAA,EAAIG,GAASjwO,EAAQ,OAAQyyC,EAAM,CAAC,CAAC,CAAC,EACvEsQ,EAAI,IAAItQ,EAAM,CAAC,EAAG,EAAG,CAAC,CAAC,OAAQq9L,EAAc9vO,CAAO,CAAC,CAAC,GAUxD,MAAM2F,EAAMsqO,GAASjwO,EAAQ,OAAQyyC,EAAM,CAAC,CAAC,EAkB7C,GAjBAq9L,EAAe,CACb,KAAMC,EACN,MAAO,OAAO,OAAO,CAAA,EAAIpqO,CAAG,EAE5B,IAAK,OAAO,OAAO,CAAA,EAAIA,CAAG,CAC9B,EACEo9C,EAAI,IAAItQ,EAAM,CAAC,EAAG,EAAG,CAAC,CAAC,QAASq9L,EAAc9vO,CAAO,CAAC,CAAC,EAWnDyyC,EAAM,CAAC,IAAM,EAAG,CAClB,MAAMy9L,EAAeD,GAASjwO,EAAQ,OAAQyyC,EAAM,CAAC,CAAC,EAChD09L,EAAaF,GAASjwO,EAAQ,OAAQyyC,EAAM,CAAC,CAAC,EAE9C29L,EAAa,CACjB,KAAMJ,EACN,MAAO,OAAO,OAAO,CAAA,EAAIE,CAAY,EACrC,IAAK,OAAO,OAAO,CAAA,EAAIC,CAAU,CACvC,EAEI,GADAptL,EAAI,IAAItQ,EAAM,CAAC,EAAG,EAAG,CAAC,CAAC,QAAS29L,EAAYpwO,CAAO,CAAC,CAAC,EACjDovO,IAAY,EAAG,CAEjB,MAAM57I,EAAQxzF,EAAQ,OAAOyyC,EAAM,CAAC,CAAC,EAC/B5qD,EAAMmY,EAAQ,OAAOyyC,EAAM,CAAC,CAAC,EAMnC,GALA+gD,EAAM,CAAC,EAAE,IAAM,OAAO,OAAO,CAAA,EAAI3rG,EAAI,CAAC,EAAE,GAAG,EAC3C2rG,EAAM,CAAC,EAAE,KAAO,YAChBA,EAAM,CAAC,EAAE,YAAc,OAGnB/gD,EAAM,CAAC,EAAIA,EAAM,CAAC,EAAI,EAAG,CAC3B,MAAMxtF,EAAIwtF,EAAM,CAAC,EAAI,EACf5oE,EAAI4oE,EAAM,CAAC,EAAIA,EAAM,CAAC,EAAI,EAChCsQ,EAAI,IAAI99F,EAAG4kB,EAAG,CAAA,CAAE,CAClB,CACF,CACAk5E,EAAI,IAAItQ,EAAM,CAAC,EAAI,EAAG,EAAG,CAAC,CAAC,OAAQ29L,EAAYpwO,CAAO,CAAC,CAAC,CAC1D,CASA,OAAI6vO,IAAW,SACbC,EAAa,IAAM,OAAO,OAAO,CAAA,EAAIG,GAASjwO,EAAQ,OAAQ6vO,CAAM,CAAC,EACrE9sL,EAAI,IAAI8sL,EAAQ,EAAG,CAAC,CAAC,OAAQC,EAAc9vO,CAAO,CAAC,CAAC,EACpD8vO,EAAe,QAEVA,CACT,CAYA,SAASH,GAAc5sL,EAAK/iD,EAAS91C,EAAOgzD,EAAOmzN,EAAW,CAE5D,MAAMC,EAAQ,CAAA,EACRC,EAAUN,GAASjwO,EAAQ,OAAQ91C,CAAK,EAC1CmmR,IACFA,EAAU,IAAM,OAAO,OAAO,CAAA,EAAIE,CAAO,EACzCD,EAAM,KAAK,CAAC,OAAQD,EAAWrwO,CAAO,CAAC,GAEzCkd,EAAM,IAAM,OAAO,OAAO,CAAA,EAAIqzN,CAAO,EACrCD,EAAM,KAAK,CAAC,OAAQpzN,EAAOld,CAAO,CAAC,EACnC+iD,EAAI,IAAI74F,EAAQ,EAAG,EAAGomR,CAAK,CAC7B,CAOA,SAASL,GAASvmR,EAAQQ,EAAO,CAC/B,MAAMN,EAAQF,EAAOQ,CAAK,EACpBs+N,EAAO5+N,EAAM,CAAC,IAAM,QAAU,QAAU,MAC9C,OAAOA,EAAM,CAAC,EAAE4+N,CAAI,CACtB,CC5yBA,MAAMgoD,GAAgB,CACpB,KAAM,gBACN,SAAUC,EACZ,EAUO,SAASC,IAAkB,CAChC,MAAO,CACL,KAAM,CACH,GAAKF,EACZ,CACA,CACA,CAMA,SAASC,GAAsBp3B,EAASpK,EAAIkM,EAAK,CAC/C,MAAM/6E,EAAO,KACb,OAAOl3F,EAYP,SAASA,EAAKvgF,EAAM,CAClB,OAEAy3K,EAAK,WAAa,MAGlB,CAACA,EAAK,mCACG+6E,EAAIxyP,CAAI,GAEjB0wP,EAAQ,MAAM,eAAe,EAC7BA,EAAQ,MAAM,qBAAqB,EACnCA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,qBAAqB,EAC3B4C,EACT,CAYA,SAASA,EAAOtzP,EAAM,CAIpB,OAAIowP,GAA0BpwP,CAAI,GAChC0wP,EAAQ,MAAM,6BAA6B,EAC3CA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,6BAA6B,EACnCn0K,GAELv8E,IAAS,IAAMA,IAAS,KAC1B0wP,EAAQ,MAAM,2BAA2B,EACzCA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,2BAA2B,EACjCn0K,GAEFi2K,EAAIxyP,CAAI,CACjB,CAYA,SAASu8E,EAAMv8E,EAAM,CACnB,OAAIA,IAAS,IACX0wP,EAAQ,MAAM,qBAAqB,EACnCA,EAAQ,QAAQ1wP,CAAI,EACpB0wP,EAAQ,KAAK,qBAAqB,EAClCA,EAAQ,KAAK,eAAe,EACrB6C,GAEFf,EAAIxyP,CAAI,CACjB,CAKA,SAASuzP,EAAMvzP,EAAM,CAEnB,OAAImwP,GAAmBnwP,CAAI,EAClBsmP,EAAGtmP,CAAI,EAKZqwP,GAAcrwP,CAAI,EACb0wP,EAAQ,MAAM,CACnB,SAAUs3B,EAClB,EAAS1hC,EAAIkM,CAAG,EAAExyP,CAAI,EAIXwyP,EAAIxyP,CAAI,CACjB,CACF,CAMA,SAASgoR,GAAkBt3B,EAASpK,EAAIkM,EAAK,CAC3C,OAAO/B,GAAaC,EAAS6C,EAAO,YAAY,EAYhD,SAASA,EAAMvzP,EAAM,CAKnB,OAAOA,IAAS,KAAOwyP,EAAIxyP,CAAI,EAAIsmP,EAAGtmP,CAAI,CAC5C,CACF,CCvHO,SAASioR,GAAIznR,EAAS,CAC3B,OAAO0uP,GAAkB,CACvB2yB,GAAkB,EAClB4B,GAAW,EACXY,GAAiB7jR,CAAO,EACxB0kR,GAAQ,EACR6C,GAAe,CACnB,CAAG,CACH,CClCA,MAAM/wJ,GAAe,CAAA,EAWN,SAASkxJ,GAAU1nR,EAAS,CAGzC,MAAMi3K,EAAuC,KACvC+uE,EAAWhmP,GAAWw2H,GACtBn5H,EAAO45K,EAAK,KAAI,EAEhB0wG,EACJtqR,EAAK,sBAAwBA,EAAK,oBAAsB,CAAA,GACpDuqR,EACJvqR,EAAK,yBAA2BA,EAAK,uBAAyB,CAAA,GAC1DwqR,EACJxqR,EAAK,uBAAyBA,EAAK,qBAAuB,CAAA,GAE5DsqR,EAAoB,KAAKF,GAAIzhC,CAAQ,CAAC,EACtC4hC,EAAuB,KAAKzH,GAAe,CAAE,EAC7C0H,EAAqB,KAAKzH,GAAcp6B,CAAQ,CAAC,CACnD,CChBA,MAAMpxO,GAAS,QAoBR,SAASkzQ,GAAcpvQ,EAAUqvQ,EAAgB,CACtD,MAAMxqR,EAAQmb,GAAY,GAEpB1G,EAAQ,CAAA,EACd,IAAIq4H,EAAQ,EAER3pG,EAEA06N,EAEJ,KAAO/wH,EAAQ9sI,EAAM,QAAQ,CAC3BqX,GAAO,UAAYy1H,EACnB,MAAMvhI,EAAQ8L,GAAO,KAAKrX,CAAK,EACzByqR,EAAWzqR,EAAM,MAAM8sI,EAAOvhI,EAAQA,EAAM,MAAQvL,EAAM,MAAM,EAElEyqR,IACGtnP,EAEMA,IAAa,IACtB1uB,EAAM,GAAKg2Q,EACF,MAAM,QAAQh2Q,EAAM,SAAS,EACtCA,EAAM,UAAU,KAAKg2Q,CAAQ,EAE7Bh2Q,EAAM,UAAY,CAACg2Q,CAAQ,EAN3B5sB,EAAU4sB,EASZ39I,GAAS29I,EAAS,QAGhBl/Q,IACF43B,EAAW53B,EAAM,CAAC,EAClBuhI,IAEJ,CAEA,MAAO,CACL,KAAM,UAEN,QAAS+wH,GAAW2sB,GAAkB,MACtC,WAAY/1Q,EACZ,SAAU,CAAA,CACd,CACA,CCXO,SAASi2Q,GAAQv7L,EAAQq7L,EAAgBG,EAAe,CAC7D,MAAMxwB,EAASwwB,EAAgBC,GAAgBD,CAAa,EAAI,OA8BhE,SAAStnQ,EAAElI,EAAUyuO,KAAepoO,EAAU,CAE5C,IAAIqB,EAEJ,GAAI1H,GAAa,KAAgC,CAC/C0H,EAAO,CAAC,KAAM,OAAQ,SAAU,CAAA,CAAE,EAElC,MAAMpB,EAA8BmoO,EACpCpoO,EAAS,QAAQC,CAAK,CACxB,KAAO,CACLoB,EAAO0nQ,GAAcpvQ,EAAUqvQ,CAAc,EAE7C,MAAMK,EAAQhoQ,EAAK,QAAQ,YAAW,EAChCioQ,EAAW3wB,EAASA,EAAO,IAAI0wB,CAAK,EAAI,OAI9C,GAHAhoQ,EAAK,QAAUioQ,GAAYD,EAGvBE,GAAQnhC,CAAU,EACpBpoO,EAAS,QAAQooO,CAAU,MAE3B,UAAW,CAAC/qP,EAAKmB,CAAK,IAAK,OAAO,QAAQ4pP,CAAU,EAClDohC,GAAY77L,EAAQtsE,EAAK,WAAYhkB,EAAKmB,CAAK,CAGrD,CAGA,UAAWyhB,KAASD,EAClBypQ,GAASpoQ,EAAK,SAAUpB,CAAK,EAG/B,OAAIoB,EAAK,OAAS,WAAaA,EAAK,UAAY,aAC9CA,EAAK,QAAU,CAAC,KAAM,OAAQ,SAAUA,EAAK,QAAQ,EACrDA,EAAK,SAAW,CAAA,GAGXA,CACT,CAEA,OAAOQ,CACT,CAUA,SAAS0nQ,GAAQ/qR,EAAO,CAEtB,GAAIA,IAAU,MAAQ,OAAOA,GAAU,UAAY,MAAM,QAAQA,CAAK,EACpE,MAAO,GAIT,GAAI,OAAOA,EAAM,MAAS,SAAU,MAAO,GAI3C,MAAMkrR,EAAiDlrR,EACjDgF,EAAO,OAAO,KAAKhF,CAAK,EAE9B,UAAWnB,KAAOmG,EAAM,CACtB,MAAMhF,EAAQkrR,EAAOrsR,CAAG,EAExB,GAAImB,GAAS,OAAOA,GAAU,SAAU,CACtC,GAAI,CAAC,MAAM,QAAQA,CAAK,EAAG,MAAO,GAElC,MAAMinC,EAA8CjnC,EAEpD,UAAWu4B,KAAQ0O,EACjB,GAAI,OAAO1O,GAAS,UAAY,OAAOA,GAAS,SAC9C,MAAO,EAGb,CACF,CAGA,MAAI,gBAAcv4B,GAAS,MAAM,QAAQA,EAAM,QAAQ,EAQzD,CAcA,SAASgrR,GAAY77L,EAAQy6J,EAAY/qP,EAAKmB,EAAO,CACnD,MAAMikC,EAAOsmN,GAAKp7J,EAAQtwF,CAAG,EAE7B,IAAI8E,EAGJ,GAAI3D,GAAU,KAEd,IAAI,OAAOA,GAAU,SAAU,CAE7B,GAAI,OAAO,MAAMA,CAAK,EAAG,OAEzB2D,EAAS3D,CACX,MAES,OAAOA,GAAU,UACxB2D,EAAS3D,EAGF,OAAOA,GAAU,SACpBikC,EAAK,eACPtgC,EAASwnR,GAAYnrR,CAAK,EACjBikC,EAAK,eACdtgC,EAASynR,GAAYprR,CAAK,EACjBikC,EAAK,sBACdtgC,EAASwnR,GAAYC,GAAYprR,CAAK,EAAE,KAAK,GAAG,CAAC,EAEjD2D,EAAS0nR,GAAepnP,EAAMA,EAAK,SAAUjkC,CAAK,EAE3C,MAAM,QAAQA,CAAK,EAC5B2D,EAAS,CAAC,GAAG3D,CAAK,EAElB2D,EAASsgC,EAAK,WAAa,QAAUnN,GAAM92B,CAAK,EAAI,OAAOA,CAAK,EAGlE,GAAI,MAAM,QAAQ2D,CAAM,EAAG,CAEzB,MAAM2nR,EAAc,CAAA,EAEpB,UAAW/yP,KAAQ50B,EAEjB2nR,EAAY,KAERD,GAAepnP,EAAMA,EAAK,SAAU1L,CAAI,CAElD,EAGI50B,EAAS2nR,CACX,CAGIrnP,EAAK,WAAa,aAAe,MAAM,QAAQ2lN,EAAW,SAAS,IAErEjmP,EAASimP,EAAW,UAAU,OAC6BjmP,CAC/D,GAGEimP,EAAW3lN,EAAK,QAAQ,EAAItgC,EAC9B,CAUA,SAASsnR,GAAStgN,EAAO3qE,EAAO,CAC9B,GAAIA,GAAU,KAEP,GAAI,OAAOA,GAAU,UAAY,OAAOA,GAAU,SACvD2qE,EAAM,KAAK,CAAC,KAAM,OAAQ,MAAO,OAAO3qE,CAAK,CAAC,CAAC,UACtC,MAAM,QAAQA,CAAK,EAC5B,UAAWyhB,KAASzhB,EAClBirR,GAAStgN,EAAOlpD,CAAK,UAEd,OAAOzhB,GAAU,UAAY,SAAUA,EAC5CA,EAAM,OAAS,OACjBirR,GAAStgN,EAAO3qE,EAAM,QAAQ,EAE9B2qE,EAAM,KAAK3qE,CAAK,MAGlB,OAAM,IAAI,MAAM,yCAA2CA,EAAQ,GAAG,CAE1E,CAcA,SAASqrR,GAAepnP,EAAMv2B,EAAM1N,EAAO,CACzC,GAAI,OAAOA,GAAU,SAAU,CAC7B,GAAIikC,EAAK,QAAUjkC,GAAS,CAAC,OAAO,MAAM,OAAOA,CAAK,CAAC,EACrD,OAAO,OAAOA,CAAK,EAGrB,IACGikC,EAAK,SAAWA,EAAK,qBACrBjkC,IAAU,IAAMs3F,GAAUt3F,CAAK,IAAMs3F,GAAU5pF,CAAI,GAEpD,MAAO,EAEX,CAEA,OAAO1N,CACT,CAUA,SAAS82B,GAAM1L,EAAQ,CAErB,MAAMznB,EAAS,CAAA,EAEf,SAAW,CAAC9E,EAAKmB,CAAK,IAAK,OAAO,QAAQorB,CAAM,EAC9CznB,EAAO,KAAK,CAAC9E,EAAKmB,CAAK,EAAE,KAAK,IAAI,CAAC,EAGrC,OAAO2D,EAAO,KAAK,IAAI,CACzB,CAUA,SAASinR,GAAgBnxL,EAAQ,CAE/B,MAAM91F,EAAS,IAAI,IAEnB,UAAW3D,KAASy5F,EAClB91F,EAAO,IAAI3D,EAAM,YAAW,EAAIA,CAAK,EAGvC,OAAO2D,CACT,CCvWO,MAAM4nR,GAA2B,CACtC,WACA,cACA,eACA,eACA,gBACA,mBACA,WACA,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,eACA,gBACA,WACA,iBACA,iBACA,aACA,WACA,UACF,ECvBaloQ,GAAIqnQ,GAAQ3+C,GAAM,KAAK,EAIvBvtO,GAAIksR,GAAQptQ,GAAK,IAAKiuQ,EAAwB,ECRpD,SAASC,GAAS9Y,EAAM,CAC7B,MAAM1yQ,EAAQ,OAAO0yQ,CAAI,EAOnB+Y,EAAU,CAAA,EAEhB,MAAO,CAAC,SAAAC,EAAU,QAAAC,CAAO,EAGzB,SAASA,EAAQ3oP,EAAQ,CACvB,GAAI,OAAOA,GAAW,UAAYA,EAAS,IAAMA,GAAUhjC,EAAM,OAAQ,CACvE,IAAIwD,EAAQ,EAEZ,OAAa,CACX,IAAI29B,EAAMsqP,EAAQjoR,CAAK,EAEvB,GAAI29B,IAAQ,OAAW,CACrB,MAAMyqP,EAAM/pR,GAAK7B,EAAOyrR,EAAQjoR,EAAQ,CAAC,CAAC,EAC1C29B,EAAMyqP,IAAQ,GAAK5rR,EAAM,OAAS,EAAI4rR,EAAM,EAC5CH,EAAQjoR,CAAK,EAAI29B,CACnB,CAEA,GAAIA,EAAM6B,EACR,MAAO,CACL,KAAMx/B,EAAQ,EACd,OAAQw/B,GAAUx/B,EAAQ,EAAIioR,EAAQjoR,EAAQ,CAAC,EAAI,GAAK,EACxD,OAAAw/B,CACZ,EAGQx/B,GACF,CACF,CACF,CAGA,SAASkoR,EAASjlK,EAAO,CACvB,GACEA,GACA,OAAOA,EAAM,MAAS,UACtB,OAAOA,EAAM,QAAW,UACxB,CAAC,OAAO,MAAMA,EAAM,IAAI,GACxB,CAAC,OAAO,MAAMA,EAAM,MAAM,EAC1B,CACA,KAAOglK,EAAQ,OAAShlK,EAAM,MAAM,CAClC,MAAM7lF,EAAO6qP,EAAQA,EAAQ,OAAS,CAAC,EACjCG,EAAM/pR,GAAK7B,EAAO4gC,CAAI,EACtBO,EAAMyqP,IAAQ,GAAK5rR,EAAM,OAAS,EAAI4rR,EAAM,EAClD,GAAIhrP,IAASO,EAAK,MAClBsqP,EAAQ,KAAKtqP,CAAG,CAClB,CAEA,MAAM6B,GACHyjF,EAAM,KAAO,EAAIglK,EAAQhlK,EAAM,KAAO,CAAC,EAAI,GAAKA,EAAM,OAAS,EAElE,GAAIzjF,EAASyoP,EAAQhlK,EAAM,KAAO,CAAC,EAAG,OAAOzjF,CAC/C,CACF,CACF,CAMA,SAASnhC,GAAK7B,EAAO4gC,EAAM,CACzB,MAAMirP,EAAK7rR,EAAM,QAAQ,KAAM4gC,CAAI,EAC7BkrP,EAAK9rR,EAAM,QAAQ;AAAA,EAAM4gC,CAAI,EACnC,OAAIkrP,IAAO,GAAWD,EAClBA,IAAO,IAAMA,EAAK,IAAMC,EAAWA,EAChCD,EAAKC,EAAKD,EAAKC,CACxB,CCvFO,MAAMC,GAAgB,CAC3B,KAAM,+BACN,OAAQ,qCACR,IAAK,6BACL,MAAO,+BACP,IAAK,uCACL,MAAO,+BACT,ECgBMh+B,GAAM,CAAA,EAAG,eAGTooB,GAAQ,OAAO,UAYd,SAAS6V,GAAWj1N,EAAMt0D,EAAS,CACxC,MAAMgmP,EAAWhmP,GAAW,CAAA,EAE5B,OAAO8rP,GACL,CACE,KAAM9F,EAAS,MAAQ,OACvB,SAAU,GACV,OAAQA,EAAS,QAAU,MAAQnrO,GAAMyuN,GACzC,QAAS0c,EAAS,SAAW,EACnC,EACI1xL,CACJ,CACA,CAYA,SAASw3L,GAAIl0O,EAAOwI,EAAM,CAExB,IAAIlf,EAEJ,OAAQkf,EAAK,SAAQ,CACnB,IAAK,WAAY,CACf,MAAM0gB,EACJ1gB,EAEF,OAAAlf,EAAS,CAAC,KAAM,UAAW,MAAO4/B,EAAU,IAAI,EAChDyuO,GAAM33P,EAAOkpB,EAAW5/B,CAAM,EACvBA,CACT,CAEA,IAAK,YACL,IAAK,qBAAsB,CACzB,MAAM4/B,EAEF1gB,EAEEopQ,EACJ,SAAU1oP,EACNA,EAAU,OAAS,UAAYA,EAAU,OAAS,iBAClD,GAQN,GANA5/B,EAAS,CACP,KAAM,OACN,SAAUgtP,GAAIt2O,EAAOwI,EAAK,UAAU,EACpC,KAAM,CAAC,WAAAopQ,CAAU,CACzB,EAEU5xQ,EAAM,MAAQA,EAAM,SAAU,CAChC,MAAM44O,EAAW,OAAO54O,EAAM,IAAI,EAC5B6xQ,EAAMV,GAASv4B,CAAQ,EACvBnmH,EAAQo/I,EAAI,QAAQ,CAAC,EACrB/qP,EAAM+qP,EAAI,QAAQj5B,EAAS,MAAM,EAIvCtvP,EAAO,SAAW,CAAC,MAAAmpI,EAAO,IAAA3rG,CAAG,CAC/B,CAEA,OAAOx9B,CACT,CAEA,IAAK,gBAAiB,CACpB,MAAM4/B,EACJ1gB,EAEF,OAAAlf,EAAS,CAAC,KAAM,SAAS,EACzBquQ,GAAM33P,EAAOkpB,EAAW5/B,CAAM,EACvBA,CACT,CAEA,IAAK,QAAS,CACZ,MAAM4/B,EAA8D1gB,EACpE,OAAAlf,EAAS,CAAC,KAAM,OAAQ,MAAO4/B,EAAU,KAAK,EAC9CyuO,GAAM33P,EAAOkpB,EAAW5/B,CAAM,EACvBA,CACT,CAGA,QAEE,OAAAA,EAASmlB,GAAQzO,EADkDwI,CAClC,EAC1Blf,CAEb,CACA,CAYA,SAASgtP,GAAIt2O,EAAOswD,EAAO,CACzB,IAAInnE,EAAQ,GAEZ,MAAMgnF,EAAU,CAAA,EAEhB,KAAO,EAAEhnF,EAAQmnE,EAAM,QAAQ,CAE7B,MAAMhnE,EAAqC4qP,GAAIl0O,EAAOswD,EAAMnnE,CAAK,CAAC,EAClEgnF,EAAQ,KAAK7mF,CAAM,CACrB,CAEA,OAAO6mF,CACT,CAYA,SAAS1hE,GAAQzO,EAAOwI,EAAM,CAC5B,MAAMssE,EAAS90E,EAAM,OAErBA,EAAM,OAASwI,EAAK,eAAiBkpQ,GAAc,IAAMzuQ,GAAMyuN,GAG/D,IAAIvoO,EAAQ,GAEZ,MAAMomP,EAAa,CAAA,EAEnB,KAAO,EAAEpmP,EAAQqf,EAAK,MAAM,QAAQ,CAClC,MAAM2yI,EAAY3yI,EAAK,MAAMrf,CAAK,EAC5BkK,GACH8nJ,EAAU,OAASA,EAAU,OAAS,IAAM,IAAMA,EAAU,KAC1Du4F,GAAI,KAAKooB,GAAOzoQ,CAAI,IACvBk8O,EAAWl8O,CAAI,EAAI8nJ,EAAU,MAEjC,CAIA,MAAM7xJ,GADI0W,EAAM,OAAO,QAAU,MAAQ7b,GAAI6kB,IAC5BR,EAAK,QAAS+mO,EAAY+G,GAAIt2O,EAAOwI,EAAK,UAAU,CAAC,EAItE,GAHAmvP,GAAM33P,EAAOwI,EAAMlf,CAAM,EAGrBA,EAAO,UAAY,WAAY,CACjC,MAAM4/B,EAA8D1gB,EAC9DtL,EAAMgsB,EAAU,mBAChB4oP,EAAW50Q,GAAOA,EAAI,UAAYuG,GAASvG,EAAI,QAAQ,EACvD60Q,EAAS70Q,GAAOA,EAAI,QAAUuG,GAASvG,EAAI,MAAM,EAGjDstB,EAA+B0pN,GAAIl0O,EAAOkpB,EAAU,OAAO,EAE7D4oP,GAAYC,GAAU/xQ,EAAM,OAC9BwqB,EAAQ,SAAW,CAAC,MAAOsnP,EAAS,IAAK,IAAKC,EAAO,KAAK,GAG5DzoR,EAAO,QAAUkhC,CACnB,CAEA,OAAAxqB,EAAM,OAAS80E,EAERxrF,CACT,CAcA,SAASquQ,GAAM33P,EAAOumB,EAAMk5D,EAAI,CAC9B,GAAI,uBAAwBl5D,GAAQA,EAAK,oBAAsBvmB,EAAM,KAAM,CACzE,MAAMyD,EAAWuuQ,GAAehyQ,EAAOy/E,EAAIl5D,EAAK,kBAAkB,EAE9D9iB,IACFzD,EAAM,SAAW,GACjBy/E,EAAG,SAAWh8E,EAElB,CACF,CAcA,SAASuuQ,GAAehyQ,EAAOwI,EAAM2oQ,EAAU,CAC7C,MAAM7nR,EAASma,GAAS0tQ,CAAQ,EAEhC,GAAI3oQ,EAAK,OAAS,UAAW,CAC3B,MAAM00O,EAAO10O,EAAK,SAASA,EAAK,SAAS,OAAS,CAAC,EAcnD,GATElf,GACA,CAAC6nR,EAAS,QACVj0B,GACAA,EAAK,UACLA,EAAK,SAAS,MAEd5zP,EAAO,IAAM,OAAO,OAAO,CAAA,EAAI4zP,EAAK,SAAS,GAAG,GAG9Cl9O,EAAM,QAAS,CAEjB,MAAMuvO,EAAa,CAAA,EAEnB,IAAI/qP,EAEJ,GAAI2sR,EAAS,MACX,IAAK3sR,KAAO2sR,EAAS,MACfz9B,GAAI,KAAKy9B,EAAS,MAAO3sR,CAAG,IAC9B+qP,EAAWW,GAAKlwO,EAAM,OAAQxb,CAAG,EAAE,QAAQ,EAAIif,GAC7C0tQ,EAAS,MAAM3sR,CAAG,CAChC,GAKa2sR,EAAS,SAChB,MAAMc,EAAUxuQ,GAAS0tQ,EAAS,QAAQ,EACpCe,EAAUf,EAAS,OAAS1tQ,GAAS0tQ,EAAS,MAAM,EAAI,OAExD1rR,EAAO,CAAC,QAAAwsR,CAAO,EACjBC,IAASzsR,EAAK,QAAUysR,GAC5BzsR,EAAK,WAAa8pP,EAElB/mO,EAAK,KAAO,CAAC,SAAU/iB,CAAI,CAC7B,CACF,CAEA,OAAO6D,CACT,CAUA,SAASma,GAASouQ,EAAK,CACrB,MAAMp/I,EAAQrmB,GAAM,CAClB,KAAMylK,EAAI,UACV,OAAQA,EAAI,SACZ,OAAQA,EAAI,WAChB,CAAG,EACK/qP,EAAMslF,GAAM,CAChB,KAAMylK,EAAI,QACV,OAAQA,EAAI,OACZ,OAAQA,EAAI,SAChB,CAAG,EAID,OAAOp/I,GAAS3rG,EAAM,CAAC,MAAA2rG,EAAO,IAAA3rG,CAAG,EAAI,MACvC,CAUA,SAASslF,GAAMA,EAAO,CACpB,OAAOA,EAAM,MAAQA,EAAM,OAASA,EAAQ,MAC9C,CC1UO,MAAMn4B,EAAO,CAOlB,YAAYprD,EAAU2lN,EAAQ50L,EAAO,CACnC,KAAK,SAAW/wB,EAChB,KAAK,OAAS2lN,EACV50L,IACF,KAAK,MAAQA,EAEjB,CACF,CAGAq6B,GAAO,UAAU,SAAW,CAAA,EAE5BA,GAAO,UAAU,OAAS,CAAA,EAE1BA,GAAO,UAAU,MAAQ,KCflB,SAAStiD,GAAM88M,EAAa70L,EAAO,CAExC,MAAM/wB,EAAW,CAAA,EAEX2lN,EAAS,CAAA,EACf,IAAIrlP,EAAQ,GAEZ,KAAO,EAAEA,EAAQslP,EAAY,QAC3B,OAAO,OAAO5lN,EAAU4lN,EAAYtlP,CAAK,EAAE,QAAQ,EACnD,OAAO,OAAOqlP,EAAQC,EAAYtlP,CAAK,EAAE,MAAM,EAGjD,OAAO,IAAI8qF,GAAOprD,EAAU2lN,EAAQ50L,CAAK,CAC3C,CCrBO,SAASqjC,GAAUt3F,EAAO,CAC/B,OAAOA,EAAM,YAAW,CAC1B,CCNO,MAAMipP,EAAK,CAMhB,YAAY/lN,EAAUsyH,EAAW,CAE/B,KAAK,SAAWtyH,EAEhB,KAAK,UAAYsyH,CACnB,CACF,CAGAyzF,GAAK,UAAU,MAAQ,KACvBA,GAAK,UAAU,QAAU,GACzBA,GAAK,UAAU,WAAa,GAC5BA,GAAK,UAAU,kBAAoB,GACnCA,GAAK,UAAU,OAAS,GACxBA,GAAK,UAAU,eAAiB,GAChCA,GAAK,UAAU,eAAiB,GAChCA,GAAK,UAAU,sBAAwB,GACvCA,GAAK,UAAU,gBAAkB,GACjCA,GAAK,UAAU,QAAU,GCxBzB,IAAIC,GAAS,EAEN,MAAMt7J,GAAUu7J,GAAS,EACnBC,GAAaD,GAAS,EACtBE,GAAoBF,GAAS,EAC7Bl7J,GAASk7J,GAAS,EAClBG,GAAiBH,GAAS,EAC1BI,GAAiBJ,GAAS,EAC1BK,GAAwBL,GAAS,EAE9C,SAASA,IAAY,CACnB,MAAO,IAAK,EAAED,EAChB,0NCPMO,GAAS,OAAO,KAAKn8J,EAAK,EAEzB,MAAMq8J,WAAoBV,EAAK,CAQpC,YAAY/lN,EAAUsyH,EAAW/tE,EAAMxzB,EAAO,CAC5C,IAAIzwD,EAAQ,GAMZ,GAJA,MAAM0/B,EAAUsyH,CAAS,EAEzBniI,GAAK,KAAM,QAAS4gC,CAAK,EAErB,OAAOwzB,GAAS,SAClB,KAAO,EAAEjkF,EAAQimP,GAAO,QAAQ,CAC9B,MAAMC,EAAQD,GAAOjmP,CAAK,EAC1B6vB,GAAK,KAAMo2N,GAAOjmP,CAAK,GAAIikF,EAAO6F,GAAMo8J,CAAK,KAAOp8J,GAAMo8J,CAAK,CAAC,CAClE,CAEJ,CACF,CAEAC,GAAY,UAAU,QAAU,GAOhC,SAASt2N,GAAKomE,EAAQ56F,EAAKmB,EAAO,CAC5BA,IAEFy5F,EAAO56F,CAAG,EAAImB,EAElB,CCzBA,MAAM+tP,GAAM,CAAA,EAAG,eAMR,SAASxyO,GAAOwtO,EAAY,CAEjC,MAAM7lN,EAAW,CAAA,EAEX2lN,EAAS,CAAA,EAEf,IAAIxoP,EAEJ,IAAKA,KAAQ0oP,EAAW,WACtB,GAAIgF,GAAI,KAAKhF,EAAW,WAAY1oP,CAAI,EAAG,CACzC,MAAML,EAAQ+oP,EAAW,WAAW1oP,CAAI,EAClC4jC,EAAO,IAAI0lN,GACftpP,EACA0oP,EAAW,UAAUA,EAAW,YAAc,CAAA,EAAI1oP,CAAI,EACtDL,EACA+oP,EAAW,KACnB,EAGQA,EAAW,iBACXA,EAAW,gBAAgB,SAAS1oP,CAAI,IAExC4jC,EAAK,gBAAkB,IAGzBf,EAAS7iC,CAAI,EAAI4jC,EAEjB4kN,EAAOvxJ,GAAUj3F,CAAI,CAAC,EAAIA,EAC1BwoP,EAAOvxJ,GAAUrzD,EAAK,SAAS,CAAC,EAAI5jC,CACtC,CAGF,OAAO,IAAIiuF,GAAOprD,EAAU2lN,EAAQE,EAAW,KAAK,CACtD,CCvDO,MAAMkB,GAAQ1uO,GAAO,CAC1B,MAAO,QACP,UAAUs0B,EAAGxvC,EAAM,CACjB,MAAO,SAAWA,EAAK,MAAM,CAAC,EAAE,YAAW,CAC7C,EACA,WAAY,CACV,aAAc,KACd,aAAc,KACd,UAAW,KACX,UAAW,KACX,UAAW,KACX,WAAY,KACZ,UAAW,IACf,CACA,CAAC,ECdY8pP,GAAM5uO,GAAO,CACxB,MAAO,MACP,UAAUs0B,EAAGxvC,EAAM,CACjB,MAAO,OAASA,EAAK,MAAM,CAAC,EAAE,YAAW,CAC3C,EACA,WAAY,CAAC,QAAS,KAAM,QAAS,KAAM,SAAU,IAAI,CAC3D,CAAC,ECHM,SAAS0pP,GAAuB5tL,EAAYq5F,EAAW,CAC5D,OAAOA,KAAar5F,EAAaA,EAAWq5F,CAAS,EAAIA,CAC3D,CCAO,SAASw0F,GAAyB7tL,EAAYj5B,EAAU,CAC7D,OAAO6mN,GAAuB5tL,EAAYj5B,EAAS,YAAW,CAAE,CAClE,CCNO,MAAMgnN,GAAQ3uO,GAAO,CAC1B,MAAO,QACP,WAAY,CAAC,WAAY,aAAa,EACtC,UAAWyuO,GACX,WAAY,CAAC,MAAO,KAAM,WAAY,IAAI,CAC5C,CAAC,ECLYF,GAAOvuO,GAAO,CACzB,UAAUs0B,EAAGxvC,EAAM,CACjB,OAAOA,IAAS,OAASA,EAAO,QAAUA,EAAK,MAAM,CAAC,EAAE,YAAW,CACrE,EACA,WAAY,CACV,qBAAsB,KACtB,WAAY+oP,GACZ,iBAAkB,KAClB,SAAUA,GACV,YAAaA,GACb,aAAcn7J,GACd,aAAcA,GACd,YAAaA,GACb,aAAcq7J,GACd,YAAa,KACb,gBAAiBA,GACjB,YAAa,KACb,aAAcF,GACd,eAAgBE,GAChB,iBAAkB,KAClB,aAAcF,GACd,WAAYE,GACZ,YAAaF,GACb,aAAc,KACd,WAAYA,GACZ,YAAa,KACb,iBAAkB,KAClB,UAAW,KACX,eAAgBE,GAChB,UAAWr7J,GACX,SAAU,KACV,UAAWm7J,GACX,cAAeA,GACf,oBAAqBA,GACrB,gBAAiB,KACjB,SAAUE,GACV,gBAAiB,KACjB,aAAcr7J,GACd,YAAam7J,GACb,aAAcA,GACd,aAAc,KACd,aAAcA,GACd,oBAAqBE,GACrB,aAAcr7J,GACd,aAAcA,GACd,YAAaA,GACb,aAAcm7J,GACd,YAAan7J,GACb,SAAU,KACV,aAAcA,GACd,aAAcA,GACd,aAAcA,GACd,cAAe,KACf,KAAM,IACV,CACA,CAAC,EC/CY89I,GAAOxwN,GAAO,CACzB,MAAO,OACP,WAAY,CACV,cAAe,iBACf,UAAW,QACX,QAAS,MACT,UAAW,YACf,EACE,UAAWyuO,GACX,gBAAiB,CAAC,UAAW,WAAY,QAAS,UAAU,EAC5D,WAAY,CAEV,KAAM,KACN,OAAQT,GACR,cAAeD,GACf,UAAWA,GACX,OAAQ,KACR,MAAO,KACP,gBAAiB17J,GACjB,oBAAqBA,GACrB,eAAgBA,GAChB,IAAK,KACL,GAAI,KACJ,MAAOA,GACP,eAAgB,KAChB,aAAc07J,GACd,UAAW17J,GACX,SAAUA,GACV,SAAU07J,GACV,QAAS,KACT,QAAS,KACT,QAAS17J,GACT,KAAM,KACN,UAAW07J,GACX,KAAMr7J,GACN,QAAS,KACT,QAAS,KACT,gBAAiBm7J,GACjB,SAAUx7J,GACV,aAAc07J,GACd,OAAQr7J,GAASs7J,GACjB,YAAa,KACb,KAAM,KACN,SAAU,KACV,SAAU,KACV,QAAS37J,GACT,MAAOA,GACP,IAAK,KACL,QAAS,KACT,SAAUA,GACV,SAAUy7J,GACV,UAAWD,GACX,QAAS,KACT,aAAc,KACd,cAAe,KACf,KAAM,KACN,WAAY,KACZ,YAAa,KACb,WAAY,KACZ,eAAgBx7J,GAChB,WAAY,KACZ,QAAS07J,GACT,OAAQr7J,GACR,OAAQL,GACR,KAAMK,GACN,KAAM,KACN,SAAU,KACV,QAASq7J,GACT,UAAWA,GACX,GAAI,KACJ,WAAY,KACZ,YAAa,KACb,MAAO17J,GACP,UAAW,KACX,UAAW,KACX,GAAI,KACJ,MAAOA,GACP,OAAQ,KACR,SAAU07J,GACV,QAASA,GACT,UAAW17J,GACX,SAAU07J,GACV,KAAM,KACN,MAAO,KACP,KAAM,KACN,SAAU,KACV,KAAM,KACN,QAAS,KACT,KAAM17J,GACN,IAAKK,GACL,SAAU,KACV,IAAK,KACL,UAAWA,GACX,MAAO,KACP,OAAQ,KACR,IAAK,KACL,UAAWA,GACX,SAAUL,GACV,MAAOA,GACP,KAAM,KACN,MAAO,KACP,SAAUA,GACV,WAAYA,GACZ,QAAS,KACT,aAAc,KACd,WAAY,KACZ,cAAe,KACf,cAAe,KACf,eAAgB,KAChB,eAAgB,KAChB,OAAQ,KACR,SAAU,KACV,UAAW,KACX,iBAAkB,KAClB,SAAU,KACV,QAAS,KACT,QAAS,KACT,cAAe,KACf,cAAe,KACf,kBAAmB,KACnB,OAAQ,KACR,YAAa,KACb,MAAO,KACP,WAAY,KACZ,OAAQ,KACR,UAAW,KACX,YAAa,KACb,WAAY,KACZ,YAAa,KACb,WAAY,KACZ,YAAa,KACb,OAAQ,KACR,iBAAkB,KAClB,UAAW,KACX,QAAS,KACT,QAAS,KACT,QAAS,KACT,WAAY,KACZ,aAAc,KACd,QAAS,KACT,UAAW,KACX,UAAW,KACX,WAAY,KACZ,QAAS,KACT,iBAAkB,KAClB,OAAQ,KACR,aAAc,KACd,iBAAkB,KAClB,UAAW,KACX,YAAa,KACb,UAAW,KACX,eAAgB,KAChB,YAAa,KACb,aAAc,KACd,aAAc,KACd,YAAa,KACb,WAAY,KACZ,YAAa,KACb,UAAW,KACX,UAAW,KACX,SAAU,KACV,WAAY,KACZ,WAAY,KACZ,QAAS,KACT,QAAS,KACT,OAAQ,KACR,UAAW,KACX,WAAY,KACZ,WAAY,KACZ,aAAc,KACd,mBAAoB,KACpB,QAAS,KACT,SAAU,KACV,SAAU,KACV,YAAa,KACb,0BAA2B,KAC3B,SAAU,KACV,UAAW,KACX,SAAU,KACV,aAAc,KACd,UAAW,KACX,UAAW,KACX,SAAU,KACV,UAAW,KACX,aAAc,KACd,SAAU,KACV,qBAAsB,KACtB,SAAU,KACV,eAAgB,KAChB,UAAW,KACX,QAAS,KACT,KAAMA,GACN,QAASK,GACT,QAAS,KACT,KAAMq7J,GACN,YAAa,KACb,YAAa17J,GACb,QAAS,KACT,cAAe,KACf,oBAAqB,KACrB,OAAQ,KACR,QAAS,KACT,SAAUA,GACV,eAAgB,KAChB,IAAK07J,GACL,SAAU17J,GACV,SAAUA,GACV,KAAMK,GACN,QAASA,GACT,QAASq7J,GACT,MAAO,KACP,OAAQ17J,GACR,SAAUA,GACV,SAAUA,GACV,mBAAoBA,GACpB,yBAA0BA,GAC1B,eAAgB,KAChB,MAAO,KACP,KAAMK,GACN,MAAO,KACP,KAAM,KACN,KAAMA,GACN,WAAYm7J,GACZ,IAAK,KACL,OAAQ,KACR,QAAS,KACT,OAAQ,KACR,MAAOn7J,GACP,KAAM,KACN,MAAO,KACP,SAAUA,GACV,OAAQ,KACR,MAAO,KACP,UAAW,KACX,KAAM,KACN,cAAeL,GACf,OAAQ,KACR,MAAOw7J,GACP,MAAOn7J,GACP,KAAM,KACN,mBAAoB,KAIpB,MAAO,KACP,MAAO,KACP,QAASq7J,GACT,KAAM,KACN,WAAY,KACZ,QAAS,KACT,OAAQr7J,GACR,YAAa,KACb,aAAcA,GACd,YAAa,KACb,YAAa,KACb,KAAM,KACN,QAAS,KACT,QAAS,KACT,MAAO,KACP,KAAM,KACN,SAAU,KACV,SAAU,KACV,MAAO,KACP,QAASL,GACT,QAASA,GACT,MAAO,KACP,KAAM,KACN,MAAO,KACP,YAAa,KACb,OAAQK,GACR,WAAYA,GACZ,KAAM,KACN,SAAU,KACV,OAAQ,KACR,aAAcA,GACd,YAAaA,GACb,SAAUL,GACV,OAAQA,GACR,QAASA,GACT,OAAQA,GACR,OAAQ,KACR,QAAS,KACT,OAAQ,KACR,IAAK,KACL,YAAaK,GACb,MAAO,KACP,OAAQ,KACR,UAAWm7J,GACX,QAAS,KACT,QAAS,KACT,KAAM,KACN,UAAWn7J,GACX,UAAW,KACX,QAAS,KACT,OAAQ,KACR,MAAO,KACP,OAAQA,GAGR,kBAAmB,KACnB,YAAa,KACb,SAAU,KACV,wBAAyBL,GACzB,sBAAuBA,GACvB,OAAQ,KACR,SAAU,KACV,QAASK,GACT,SAAU,KACV,aAAc,IAClB,CACA,CAAC,ECvTY3wE,GAAM/B,GAAO,CACxB,MAAO,MACP,WAAY,CACV,aAAc,gBACd,kBAAmB,qBACnB,WAAY,cACZ,cAAe,iBACf,UAAW,aACX,UAAW,QACX,SAAU,YACV,SAAU,YACV,mBAAoB,sBACpB,0BAA2B,8BAC3B,aAAc,gBACd,eAAgB,kBAChB,YAAa,cACb,SAAU,WACV,iBAAkB,oBAClB,iBAAkB,oBAClB,YAAa,eACb,SAAU,YACV,WAAY,cACZ,aAAc,gBACd,WAAY,cACZ,SAAU,YACV,eAAgB,mBAChB,YAAa,eACb,UAAW,aACX,YAAa,eACb,WAAY,cACZ,UAAW,aACX,2BAA4B,+BAC5B,yBAA0B,6BAC1B,SAAU,WACV,UAAW,cACX,aAAc,iBACd,aAAc,iBACd,eAAgB,kBAChB,cAAe,iBACf,cAAe,iBACf,UAAW,aACX,UAAW,aACX,YAAa,eACb,QAAS,WACT,YAAa,gBACb,aAAc,iBACd,QAAS,WACT,QAAS,WACT,QAAS,WACT,SAAU,YACV,MAAO,SACP,UAAW,cACX,WAAY,eACZ,QAAS,UACT,WAAY,aACZ,aAAc,eACd,cAAe,gBACf,QAAS,UACT,SAAU,WACV,UAAW,YACX,iBAAkB,mBAClB,SAAU,WACV,QAAS,UACT,QAAS,UACT,OAAQ,SACR,YAAa,cACb,MAAO,QACP,WAAY,aACZ,OAAQ,SACR,UAAW,YACX,YAAa,cACb,WAAY,aACZ,YAAa,cACb,WAAY,aACZ,YAAa,cACb,OAAQ,SACR,iBAAkB,mBAClB,UAAW,YACX,MAAO,QACP,QAAS,UACT,QAAS,UACT,QAAS,UACT,UAAW,YACX,WAAY,aACZ,aAAc,eACd,QAAS,UACT,UAAW,YACX,UAAW,YACX,WAAY,aACZ,QAAS,UACT,OAAQ,SACR,aAAc,eACd,iBAAkB,mBAClB,YAAa,cACb,UAAW,YACX,YAAa,cACb,aAAc,eACd,aAAc,eACd,YAAa,cACb,WAAY,aACZ,YAAa,cACb,UAAW,YACX,aAAc,eACd,UAAW,YACX,SAAU,WACV,WAAY,aACZ,WAAY,aACZ,QAAS,UACT,QAAS,UACT,OAAQ,SACR,UAAW,YACX,WAAY,aACZ,WAAY,aACZ,aAAc,eACd,SAAU,WACV,QAAS,UACT,SAAU,WACV,SAAU,WACV,SAAU,WACV,UAAW,YACX,SAAU,WACV,OAAQ,SACR,UAAW,YACX,UAAW,YACX,SAAU,WACV,UAAW,YACX,aAAc,eACd,SAAU,WACV,SAAU,WACV,eAAgB,iBAChB,UAAW,YACX,OAAQ,SACR,iBAAkB,oBAClB,kBAAmB,qBACnB,WAAY,cACZ,QAAS,WACT,cAAe,iBACf,eAAgB,iBAChB,gBAAiB,mBACjB,eAAgB,kBAChB,UAAW,aACX,YAAa,eACb,sBAAuB,yBACvB,uBAAwB,0BACxB,gBAAiB,mBACjB,iBAAkB,oBAClB,cAAe,iBACf,eAAgB,kBAChB,iBAAkB,oBAClB,cAAe,iBACf,YAAa,eACb,SAAU,WACV,WAAY,cACZ,eAAgB,kBAChB,cAAe,iBACf,gBAAiB,mBACjB,OAAQ,SACR,kBAAmB,qBACnB,mBAAoB,sBACpB,YAAa,eACb,aAAc,gBACd,WAAY,eACZ,YAAa,eACb,SAAU,YACV,aAAc,gBACd,cAAe,iBACf,aAAc,gBACd,SAAU,aACV,YAAa,gBACb,YAAa,gBACb,YAAa,eACb,YAAa,eACb,QAAS,WAET,cAAe,gBACf,cAAe,eACnB,EACE,UAAWwuO,GACX,WAAY,CACV,MAAOP,GACP,aAAcv7J,GACd,WAAY,KACZ,SAAU,KACV,kBAAmB,KACnB,WAAYA,GACZ,UAAWA,GACX,WAAY,KACZ,OAAQA,GACR,cAAe,KACf,cAAe,KACf,QAASA,GACT,UAAW,KACX,cAAe,KACf,cAAe,KACf,YAAa,KACb,KAAM,KACN,MAAO,KACP,KAAMA,GACN,GAAI,KACJ,SAAU,KACV,UAAWA,GACX,UAAWq7J,GACX,KAAM,KACN,SAAU,KACV,cAAe,KACf,SAAU,KACV,MAAO,KACP,mBAAoB,KACpB,0BAA2B,KAC3B,aAAc,KACd,eAAgB,KAChB,QAAS,KACT,kBAAmB,KACnB,iBAAkB,KAClB,YAAa,KACb,OAAQ,KACR,GAAI,KACJ,GAAI,KACJ,EAAG,KACH,SAAU,KACV,cAAe,KACf,QAASr7J,GACT,gBAAiBA,GACjB,UAAW,KACX,QAAS,KACT,IAAK,KACL,QAASA,GACT,iBAAkB,KAClB,SAAUL,GACV,GAAI,KACJ,GAAI,KACJ,SAAU,KACV,SAAU,KACV,UAAWK,GACX,iBAAkB,KAClB,IAAK,KACL,MAAO,KACP,SAAUA,GACV,0BAA2B,KAC3B,KAAM,KACN,YAAaA,GACb,SAAU,KACV,OAAQ,KACR,UAAW,KACX,YAAa,KACb,WAAY,KACZ,aAAc,KACd,UAAW,KACX,eAAgB,KAChB,WAAY,KACZ,SAAU,KACV,eAAgB,KAChB,YAAa,KACb,UAAW,KACX,YAAa,KACb,WAAY,KACZ,OAAQ,KACR,GAAI,KACJ,KAAM,KACN,GAAI,KACJ,GAAI,KACJ,GAAIs7J,GACJ,GAAIA,GACJ,UAAWA,GACX,2BAA4B,KAC5B,yBAA0B,KAC1B,SAAU,KACV,kBAAmB,KACnB,cAAe,KACf,QAAS,KACT,QAASt7J,GACT,kBAAmB,KACnB,WAAY,KACZ,OAAQ,KACR,KAAM,KACN,SAAU,KACV,UAAWA,GACX,aAAcA,GACd,aAAcA,GACd,GAAI,KACJ,YAAaA,GACb,eAAgB,KAChB,kBAAmB,KACnB,GAAI,KACJ,IAAK,KACL,UAAWA,GACX,EAAGA,GACH,GAAIA,GACJ,GAAIA,GACJ,GAAIA,GACJ,GAAIA,GACJ,aAAcu7J,GACd,iBAAkB,KAClB,UAAW,KACX,WAAY,KACZ,SAAU,KACV,QAAS,KACT,KAAM,KACN,aAAc,KACd,cAAe,KACf,cAAe,KACf,kBAAmBv7J,GACnB,MAAO,KACP,UAAW,KACX,UAAW,KACX,YAAa,KACb,aAAc,KACd,YAAa,KACb,YAAa,KACb,KAAM,KACN,iBAAkB,KAClB,UAAW,KACX,aAAc,KACd,IAAK,KACL,MAAO,KACP,uBAAwB,KACxB,sBAAuB,KACvB,UAAWA,GACX,UAAW,KACX,OAAQ,KACR,IAAK,KACL,KAAM,KACN,KAAM,KACN,QAAS,KACT,YAAa,KACb,aAAc,KACd,QAAS,KACT,QAAS,KACT,QAAS,KACT,SAAU,KACV,MAAO,KACP,UAAW,KACX,WAAY,KACZ,WAAY,KACZ,SAAU,KACV,OAAQ,KACR,QAAS,KACT,WAAY,KACZ,aAAc,KACd,cAAe,KACf,QAAS,KACT,SAAU,KACV,UAAW,KACX,iBAAkB,KAClB,SAAU,KACV,QAAS,KACT,QAAS,KACT,OAAQ,KACR,YAAa,KACb,MAAO,KACP,WAAY,KACZ,OAAQ,KACR,UAAW,KACX,YAAa,KACb,WAAY,KACZ,YAAa,KACb,WAAY,KACZ,YAAa,KACb,OAAQ,KACR,iBAAkB,KAClB,UAAW,KACX,MAAO,KACP,QAAS,KACT,QAAS,KACT,QAAS,KACT,UAAW,KACX,WAAY,KACZ,aAAc,KACd,QAAS,KACT,UAAW,KACX,UAAW,KACX,WAAY,KACZ,QAAS,KACT,OAAQ,KACR,aAAc,KACd,iBAAkB,KAClB,YAAa,KACb,UAAW,KACX,YAAa,KACb,aAAc,KACd,aAAc,KACd,YAAa,KACb,WAAY,KACZ,YAAa,KACb,UAAW,KACX,aAAc,KACd,UAAW,KACX,SAAU,KACV,WAAY,KACZ,WAAY,KACZ,QAAS,KACT,QAAS,KACT,OAAQ,KACR,UAAW,KACX,WAAY,KACZ,WAAY,KACZ,aAAc,KACd,SAAU,KACV,QAAS,KACT,SAAU,KACV,SAAU,KACV,SAAU,KACV,UAAW,KACX,SAAU,KACV,OAAQ,KACR,UAAW,KACX,UAAW,KACX,SAAU,KACV,UAAW,KACX,aAAc,KACd,SAAU,KACV,SAAU,KACV,eAAgB,KAChB,UAAW,KACX,OAAQ,KACR,QAAS,KACT,SAAU,KACV,MAAO,KACP,OAAQ,KACR,YAAa,KACb,OAAQ,KACR,SAAU,KACV,QAAS,KACT,iBAAkBA,GAClB,kBAAmBA,GACnB,WAAY,KACZ,QAAS,KACT,KAAM,KACN,WAAYA,GACZ,oBAAqB,KACrB,iBAAkB,KAClB,aAAc,KACd,MAAO,KACP,KAAMq7J,GACN,MAAO,KACP,cAAe,KACf,cAAe,KACf,OAAQ,KACR,UAAWr7J,GACX,UAAWA,GACX,UAAWA,GACX,cAAe,KACf,oBAAqB,KACrB,eAAgB,KAChB,UAAW,KACX,SAAUu7J,GACV,EAAG,KACH,OAAQ,KACR,eAAgB,KAChB,KAAM,KACN,KAAM,KACN,IAAKA,GACL,IAAKA,GACL,gBAAiB,KACjB,YAAa,KACb,UAAW,KACX,mBAAoBA,GACpB,iBAAkBA,GAClB,cAAeA,GACf,gBAAiBA,GACjB,SAAU,KACV,QAAS,KACT,OAAQ,KACR,OAAQ,KACR,GAAI,KACJ,GAAI,KACJ,MAAO,KACP,KAAM,KACN,eAAgB,KAChB,KAAM,KACN,MAAO,KACP,aAAc,KACd,iBAAkBv7J,GAClB,iBAAkBA,GAClB,aAAc,KACd,QAAS,KACT,YAAa,KACb,aAAc,KACd,MAAO,KACP,MAAO,KACP,YAAa,KACb,UAAW,KACX,YAAa,KACb,sBAAuBA,GACvB,uBAAwBA,GACxB,OAAQ,KACR,OAAQ,KACR,gBAAiBu7J,GACjB,iBAAkB,KAClB,cAAe,KACf,eAAgB,KAChB,iBAAkBv7J,GAClB,cAAeA,GACf,YAAa,KACb,MAAO,KACP,aAAcA,GACd,aAAc,KACd,oBAAqB,KACrB,WAAY,KACZ,cAAe,KACf,qBAAsB,KACtB,eAAgBu7J,GAChB,SAAUv7J,GACV,YAAa,KACb,OAAQ,KACR,QAASA,GACT,QAASA,GACT,WAAY,KACZ,eAAgB,KAChB,cAAe,KACf,WAAY,KACZ,cAAe,KACf,MAAO,KACP,kBAAmB,KACnB,KAAM,KACN,OAAQu7J,GACR,GAAI,KACJ,UAAW,KACX,gBAAiB,KACjB,GAAI,KACJ,GAAI,KACJ,kBAAmBv7J,GACnB,mBAAoBA,GACpB,QAAS,KACT,YAAa,KACb,aAAc,KACd,WAAYA,GACZ,OAAQ,KACR,YAAaA,GACb,cAAeA,GACf,aAAc,KACd,SAAUA,GACV,aAAcA,GACd,QAAS,KACT,SAAUA,GACV,YAAaA,GACb,YAAaA,GACb,QAAS,KACT,WAAY,KACZ,WAAY,KACZ,MAAO,KACP,OAAQ,KACR,YAAa,KACb,YAAa,KACb,EAAG,KACH,GAAI,KACJ,GAAI,KACJ,iBAAkB,KAClB,QAASA,GACT,EAAG,KACH,GAAI,KACJ,GAAI,KACJ,iBAAkB,KAClB,EAAG,KACH,WAAY,IAChB,CACA,CAAC,EC9iBKnsE,GAAQ,kBACRwoO,GAAO,UACPD,GAAM,SAOL,SAASE,GAAKp7J,EAAQnvF,EAAO,CAClC,MAAM6oP,EAASvxJ,GAAUt3F,CAAK,EAC9B,IAAIK,EAAOL,EACPwqP,EAAOvB,GAEX,GAAIJ,KAAU15J,EAAO,OACnB,OAAOA,EAAO,SAASA,EAAO,OAAO05J,CAAM,CAAC,EAG9C,GAAIA,EAAO,OAAS,GAAKA,EAAO,MAAM,EAAG,CAAC,IAAM,QAAU/mO,GAAM,KAAK9hB,CAAK,EAAG,CAE3E,GAAIA,EAAM,OAAO,CAAC,IAAM,IAAK,CAE3B,MAAM+M,EAAO/M,EAAM,MAAM,CAAC,EAAE,QAAQsqP,GAAMG,EAAS,EACnDpqP,EAAO,OAAS0M,EAAK,OAAO,CAAC,EAAE,YAAW,EAAKA,EAAK,MAAM,CAAC,CAC7D,KAAO,CAEL,MAAMA,EAAO/M,EAAM,MAAM,CAAC,EAE1B,GAAI,CAACsqP,GAAK,KAAKv9O,CAAI,EAAG,CACpB,IAAI29O,EAAS39O,EAAK,QAAQs9O,GAAKM,EAAK,EAEhCD,EAAO,OAAO,CAAC,IAAM,MACvBA,EAAS,IAAMA,GAGjB1qP,EAAQ,OAAS0qP,CACnB,CACF,CAEAF,EAAOb,EACT,CAEA,OAAO,IAAIa,EAAKnqP,EAAML,CAAK,CAC7B,CAMA,SAAS2qP,GAAMC,EAAI,CACjB,MAAO,IAAMA,EAAG,YAAW,CAC7B,CAMA,SAASH,GAAUG,EAAI,CACrB,OAAOA,EAAG,OAAO,CAAC,EAAE,YAAW,CACjC,CCnDO,MAAM7e,GAAO//L,GAAM,CAACm+M,GAAKF,GAAOC,GAAOJ,GAAMe,EAAQ,EAAG,MAAM,EACxDvtO,GAAM0uB,GAAM,CAACm+M,GAAKF,GAAOC,GAAOJ,GAAMgB,EAAO,EAAG,KAAK,EC4B5D7xH,GAAe,CAAA,EAEf80H,GAAM,CAAA,EAAG,eAETQ,GAAM6vB,GAAO,OAAQ,CAAC,SAAU,CAAA,KAACrrP,GAAI,QAAEjK,QAASvV,GAAI,QAAEiwB,GAAO,QAAEgpP,EAAO,CAAC,CAAC,EAYvE,SAASC,GAAS11N,EAAMt0D,EAAS,CAEtC,MAAMwxD,GADWxxD,GAAWw2H,IACL,MACvB,OAAOs1H,GAAIx3L,EAAM9C,IAAU,MAAQ32C,GAAMyuN,EAAI,CAC/C,CAUA,SAASh5M,GAAKlQ,EAAMssE,EAAQ,CAE1B,MAAMxrF,EAAS,CACb,SAAU,YAEV,MAAOkf,EAAK,MAAQ,CAAA,GAAI,WAAa,SAAW,YAChD,WAAY,CAAA,CAChB,EACE,OAAAlf,EAAO,WAAagtP,GAAI9tO,EAAK,SAAUlf,EAAQwrF,CAAM,EACrD6iL,GAAMnvP,EAAMlf,CAAM,EACXA,CACT,CAUA,SAASuoQ,GAASrpP,EAAMssE,EAAQ,CAE9B,MAAMxrF,EAAS,CAAC,SAAU,qBAAsB,WAAY,CAAA,CAAE,EAC9D,OAAAA,EAAO,WAAagtP,GAAI9tO,EAAK,SAAUlf,EAAQwrF,CAAM,EACrD6iL,GAAMnvP,EAAMlf,CAAM,EACXA,CACT,CAQA,SAAS6oR,GAAQ3pQ,EAAM,CAErB,MAAMlf,EAAS,CACb,SAAU,gBACV,KAAM,OACN,SAAU,GACV,SAAU,GACV,WAAY,IAChB,EAEE,OAAAquQ,GAAMnvP,EAAMlf,CAAM,EACXA,CACT,CAQA,SAAS4P,GAAKsP,EAAM,CAElB,MAAMlf,EAAS,CACb,SAAU,QACV,MAAOkf,EAAK,MACZ,WAAY,IAChB,EACE,OAAAmvP,GAAMnvP,EAAMlf,CAAM,EACXA,CACT,CAQA,SAAS6/B,GAAQ3gB,EAAM,CAErB,MAAMlf,EAAS,CACb,SAAU,WACV,KAAMkf,EAAK,MACX,WAAY,IAChB,EAEE,OAAAmvP,GAAMnvP,EAAMlf,CAAM,EAEXA,CACT,CAUA,SAASmlB,GAAQjG,EAAMssE,EAAQ,CAC7B,MAAMw/J,EAAex/J,EACrB,IAAIu9L,EAAgB/9B,EAGlB9rO,EAAK,OAAS,WACdA,EAAK,QAAQ,YAAW,IAAO,OAC/B8rO,EAAa,QAAU,SAEvB+9B,EAAgBpvQ,IAIlB,MAAMwc,EAAQ,CAAA,EAEd,IAAIz5B,EAEJ,GAAIwiB,EAAK,YACP,IAAKxiB,KAAQwiB,EAAK,WAChB,GAAIxiB,IAAS,YAAc0tP,GAAI,KAAKlrO,EAAK,WAAYxiB,CAAI,EAAG,CAC1D,MAAMsD,EAAS4rP,GACbm9B,EACArsR,EACAwiB,EAAK,WAAWxiB,CAAI,CAC9B,EAEYsD,GACFm2B,EAAM,KAAKn2B,CAAM,CAErB,EAIJ,MAAMswD,EAAQy4N,EAAc,MAKtB/oR,EAAS,CACb,SAAUkf,EAAK,QACf,QAASA,EAAK,QACd,MAAAiX,EAEA,aAAciyP,GAAc93N,CAAK,EACjC,WAAY,CAAA,EACZ,WAAY,IAChB,EACE,OAAAtwD,EAAO,WAAagtP,GAAI9tO,EAAK,SAAUlf,EAAQ+oR,CAAa,EAC5D1a,GAAMnvP,EAAMlf,CAAM,EAEdkf,EAAK,UAAY,YAAcA,EAAK,UAEtClf,EAAO,QAAUuoQ,GAASrpP,EAAK,QAAS6pQ,CAAa,GAGhD/oR,CACT,CAcA,SAAS4rP,GAAepgK,EAAQ9uF,EAAML,EAAO,CAC3C,MAAMikC,EAAOsmN,GAAKp7J,EAAQ9uF,CAAI,EAG9B,GACEL,IAAU,IACVA,IAAU,MACVA,IAAU,QACT,OAAOA,GAAU,UAAY,OAAO,MAAMA,CAAK,GAC/C,CAACA,GAASikC,EAAK,QAEhB,OAGE,MAAM,QAAQjkC,CAAK,IAGrBA,EAAQikC,EAAK,eAAiByrN,GAAO1vP,CAAK,EAAI2vP,GAAO3vP,CAAK,GAI5D,MAAMw1J,EAAY,CAChB,KAAMvxH,EAAK,UACX,MAAOjkC,IAAU,GAAO,GAAK,OAAOA,CAAK,CAC7C,EAEE,GAAIikC,EAAK,OAASA,EAAK,QAAU,QAAUA,EAAK,QAAU,MAAO,CAC/D,MAAMzgC,EAAQgyJ,EAAU,KAAK,QAAQ,GAAG,EAEpChyJ,EAAQ,EACVgyJ,EAAU,OAAS,IAEnBA,EAAU,KAAOA,EAAU,KAAK,MAAMhyJ,EAAQ,CAAC,EAC/CgyJ,EAAU,OAASvxH,EAAK,UAAU,MAAM,EAAGzgC,CAAK,GAGlDgyJ,EAAU,UAAYu2H,GAAc9nP,EAAK,KAAK,CAChD,CAEA,OAAOuxH,CACT,CAcA,SAASm7F,GAAInvO,EAAUqT,EAAYs6D,EAAQ,CACzC,IAAI3rF,EAAQ,GAEZ,MAAMgnF,EAAU,CAAA,EAEhB,GAAIhpE,EACF,KAAO,EAAEhe,EAAQge,EAAS,QAAQ,CAEhC,MAAMC,EAAQ8sO,GAAI/sO,EAAShe,CAAK,EAAG2rF,CAAM,EAEzC1tE,EAAM,WAAaoT,EAEnB21D,EAAQ,KAAK/oE,CAAK,CACpB,CAGF,OAAO+oE,CACT,CAYA,SAASwnL,GAAMpxO,EAAMk5D,EAAI,CACvB,MAAMh8E,EAAW8iB,EAAK,SAElB9iB,GAAYA,EAAS,OAASA,EAAS,MAC3BA,EAAS,MAAM,OACfA,EAAS,IAAI,OAE3Bg8E,EAAG,mBAAqB,CACtB,UAAWh8E,EAAS,MAAM,KAC1B,SAAUA,EAAS,MAAM,OACzB,YAAaA,EAAS,MAAM,OAC5B,QAASA,EAAS,IAAI,KACtB,OAAQA,EAAS,IAAI,OACrB,UAAWA,EAAS,IAAI,MAC9B,EAEA,CC5UO,MAAM6uQ,GAAmB,CAC9B,OACA,OACA,WACA,UACA,KACA,MACA,UACA,QACA,QACA,KACA,QACA,MACA,QACA,SACA,OACA,OACA,QACA,SACA,QACA,KACF,EC1BMC,GAAwB,IAAI,IAAI,CAClC,MAAO,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAC9E,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OACxE,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QACxE,QAAS,QAAS,OACtB,CAAC,EACYC,GAAwB,IAC9B,IAAIC,GACV,SAAUA,EAAa,CACpBA,EAAYA,EAAY,IAAS,EAAE,EAAI,MACvCA,EAAYA,EAAY,KAAU,CAAC,EAAI,OACvCA,EAAYA,EAAY,WAAgB,CAAC,EAAI,aAC7CA,EAAYA,EAAY,gBAAqB,EAAE,EAAI,kBACnDA,EAAYA,EAAY,UAAe,EAAE,EAAI,YAC7CA,EAAYA,EAAY,UAAe,EAAE,EAAI,YAC7CA,EAAYA,EAAY,MAAW,EAAE,EAAI,QACzCA,EAAYA,EAAY,iBAAsB,EAAE,EAAI,mBACpDA,EAAYA,EAAY,eAAoB,EAAE,EAAI,iBAClDA,EAAYA,EAAY,UAAe,EAAE,EAAI,YAC7CA,EAAYA,EAAY,WAAgB,EAAE,EAAI,aAC9CA,EAAYA,EAAY,aAAkB,EAAE,EAAI,eAChDA,EAAYA,EAAY,QAAa,EAAE,EAAI,UAC3CA,EAAYA,EAAY,QAAa,EAAE,EAAI,UAC3CA,EAAYA,EAAY,QAAa,EAAE,EAAI,UAC3CA,EAAYA,EAAY,UAAe,EAAE,EAAI,YAC7CA,EAAYA,EAAY,eAAoB,EAAE,EAAI,iBAClDA,EAAYA,EAAY,YAAiB,EAAE,EAAI,cAC/CA,EAAYA,EAAY,kBAAuB,EAAE,EAAI,oBACrDA,EAAYA,EAAY,cAAmB,EAAE,EAAI,gBACjDA,EAAYA,EAAY,gBAAqB,EAAE,EAAI,kBACnDA,EAAYA,EAAY,gBAAqB,EAAE,EAAI,kBACnDA,EAAYA,EAAY,qBAA0B,EAAE,EAAI,uBACxDA,EAAYA,EAAY,aAAkB,EAAE,EAAI,eAChDA,EAAYA,EAAY,cAAmB,EAAE,EAAI,gBACjDA,EAAYA,EAAY,cAAmB,GAAG,EAAI,eACtD,GAAGA,IAAgBA,EAAc,CAAA,EAAG,EAC7B,MAAMC,GAAY,CACrB,UAAW,KACX,YAAa,UACb,QAAS,UACT,OAAQ,SACR,OAAQ,SACR,OAAQ,QACZ,EAEO,SAASC,GAAYC,EAAI,CAC5B,OAAOA,GAAM,OAASA,GAAM,KAChC,CACO,SAASC,GAAgBD,EAAI,CAChC,OAAOA,GAAM,OAASA,GAAM,KAChC,CACO,SAASE,GAA0BC,EAAKC,EAAK,CAChD,OAAQD,EAAM,OAAS,KAAO,KAAOC,CACzC,CAEO,SAASC,GAAmBL,EAAI,CACnC,OAASA,IAAO,IAAQA,IAAO,IAAQA,IAAO,IAAQA,IAAO,GAAQA,IAAO,IAAQA,GAAM,GAAQA,GAAM,IACnGA,GAAM,KAAQA,GAAM,GAC7B,CACO,SAASM,GAAqBN,EAAI,CACrC,OAAQA,GAAM,OAASA,GAAM,OAAUL,GAAsB,IAAIK,CAAE,CACvE,CC7DO,IAAIO,IACV,SAAUA,EAAK,CACZA,EAAI,8BAAmC,oCACvCA,EAAI,0BAA+B,+BACnCA,EAAI,uBAA4B,4BAChCA,EAAI,8CAAmD,wDACvDA,EAAI,qBAA0B,0BAC9BA,EAAI,0BAA+B,gCACnCA,EAAI,uBAA4B,4BAChCA,EAAI,wBAA6B,4BACjCA,EAAI,uCAA4C,+CAChDA,EAAI,+BAAoC,sCACxCA,EAAI,wCAA6C,+CACjDA,EAAI,kBAAuB,uBAC3BA,EAAI,mCAAwC,yCAC5CA,EAAI,+BAAoC,oCACxCA,EAAI,wCAA6C,8CACjDA,EAAI,gDAAqD,uDACzDA,EAAI,4CAAiD,mDACrDA,EAAI,iBAAsB,sBAC1BA,EAAI,SAAc,aAClBA,EAAI,sBAA2B,0BAC/BA,EAAI,mCAAwC,wCAC5CA,EAAI,2CAAgD,kDACpDA,EAAI,0DAA+D,mEACnEA,EAAI,2CAAgD,kDACpDA,EAAI,0CAA+C,iDACnDA,EAAI,0CAA+C,iDACnDA,EAAI,+BAAoC,oCACxCA,EAAI,+BAAoC,oCACxCA,EAAI,8BAAmC,mCACvCA,EAAI,8BAAmC,mCACvCA,EAAI,mBAAwB,wBAC5BA,EAAI,yBAA8B,6BAClCA,EAAI,+BAAoC,uCACxCA,EAAI,aAAkB,iBACtBA,EAAI,cAAmB,iBACvBA,EAAI,4BAAiC,kCACrCA,EAAI,aAAkB,iBACtBA,EAAI,yBAA8B,6BAClCA,EAAI,WAAgB,eACpBA,EAAI,2CAAgD,mDACpDA,EAAI,uBAA4B,2BAChCA,EAAI,4BAAiC,gCACrCA,EAAI,sCAA2C,4CAC/CA,EAAI,0BAA+B,8BACnCA,EAAI,+BAAoC,mCACxCA,EAAI,mCAAwC,yCAC5CA,EAAI,mBAAwB,uBAC5BA,EAAI,yCAA8C,gDAClDA,EAAI,mBAAwB,sBAC5BA,EAAI,qBAA0B,yBAC9BA,EAAI,eAAoB,kBACxBA,EAAI,iBAAsB,oBAC1BA,EAAI,iCAAsC,wCAC1CA,EAAI,sCAA2C,8CAC/CA,EAAI,kCAAuC,yCAC3CA,EAAI,yBAA8B,+BAClCA,EAAI,0BAA+B,+BACnCA,EAAI,gCAAqC,uCACzCA,EAAI,qBAA0B,0BAC9BA,EAAI,mCAAwC,2CAChD,GAAGA,KAAQA,GAAM,CAAA,EAAG,EC3DpB,MAAMC,GAA2B,MAI1B,MAAMC,EAAa,CACtB,YAAYzpI,EAAS,CACjB,KAAK,QAAUA,EACf,KAAK,KAAO,GACZ,KAAK,IAAM,GAEX,KAAK,WAAa,GAClB,KAAK,SAAW,CAAA,EAChB,KAAK,gBAAkB,GACvB,KAAK,iBAAmB,GACxB,KAAK,cAAgB,GACrB,KAAK,gBAAkBwpI,GACvB,KAAK,MAAQ,GACb,KAAK,aAAe,EACpB,KAAK,kBAAoB,EACzB,KAAK,KAAO,EAEZ,KAAK,cAAgB,EACzB,CAEA,IAAI,KAAM,CACN,OAAO,KAAK,IAAM,KAAK,cAAe,EAAO,KAAK,aAAe,KAAK,IAC1E,CACA,IAAI,QAAS,CACT,OAAO,KAAK,kBAAoB,KAAK,GACzC,CACA,SAASxrR,EAAM0rR,EAAU,CACrB,KAAM,CAAE,KAAApsP,EAAM,IAAAqsP,EAAK,OAAA5qP,CAAM,EAAK,KACxB6qP,EAAWD,EAAMD,EACjBhhJ,EAAc3pG,EAAS2qP,EAC7B,MAAO,CACH,KAAA1rR,EACA,UAAWs/B,EACX,QAASA,EACT,SAAAssP,EACA,OAAQA,EACR,YAAAlhJ,EACA,UAAWA,CACvB,CACI,CACA,KAAK1qI,EAAM,CACH,KAAK,QAAQ,cAAgB,KAAK,gBAAkB,KAAK,SACzD,KAAK,cAAgB,KAAK,OAC1B,KAAK,QAAQ,aAAa,KAAK,SAASA,EAAM,CAAC,CAAC,EAExD,CACA,SAAU,CACN,KAAK,SAAS,KAAK,KAAK,UAAU,EAClC,KAAK,WAAa,KAAK,GAC3B,CACA,kBAAkBgrR,EAAI,CAElB,GAAI,KAAK,MAAQ,KAAK,KAAK,OAAS,EAAG,CACnC,MAAMa,EAAS,KAAK,KAAK,WAAW,KAAK,IAAM,CAAC,EAChD,GAAIZ,GAAgBY,CAAM,EAEtB,YAAK,MAEL,KAAK,QAAO,EACLX,GAA0BF,EAAIa,CAAM,CAEnD,SAES,CAAC,KAAK,iBACX,YAAK,cAAgB,GACd9iE,EAAE,IAGb,YAAK,KAAKwiE,GAAI,sBAAsB,EAC7BP,CACX,CACA,qBAAsB,CAClB,OAAO,KAAK,IAAM,KAAK,eAC3B,CACA,iBAAkB,CACV,KAAK,wBACL,KAAK,KAAO,KAAK,KAAK,UAAU,KAAK,GAAG,EACxC,KAAK,cAAgB,KAAK,IAC1B,KAAK,mBAAqB,KAAK,IAC/B,KAAK,IAAM,EACX,KAAK,WAAa,GAClB,KAAK,SAAS,OAAS,EAE/B,CACA,MAAM7nB,EAAO2oB,EAAa,CAClB,KAAK,KAAK,OAAS,EACnB,KAAK,MAAQ3oB,EAGb,KAAK,KAAOA,EAEhB,KAAK,cAAgB,GACrB,KAAK,iBAAmB2oB,CAC5B,CACA,uBAAuB3oB,EAAO,CAC1B,KAAK,KAAO,KAAK,KAAK,UAAU,EAAG,KAAK,IAAM,CAAC,EAAIA,EAAQ,KAAK,KAAK,UAAU,KAAK,IAAM,CAAC,EAC3F,KAAK,cAAgB,EACzB,CACA,WAAWxkQ,EAAS+pR,EAAe,CAE/B,GAAI,KAAK,IAAM/pR,EAAQ,OAAS,KAAK,KAAK,OACtC,YAAK,cAAgB,CAAC,KAAK,iBACpB,GAEX,GAAI+pR,EACA,OAAO,KAAK,KAAK,WAAW/pR,EAAS,KAAK,GAAG,EAEjD,QAASgB,EAAI,EAAGA,EAAIhB,EAAQ,OAAQgB,IAEhC,IADW,KAAK,KAAK,WAAW,KAAK,IAAMA,CAAC,EAAI,MACrChB,EAAQ,WAAWgB,CAAC,EAC3B,MAAO,GAGf,MAAO,EACX,CACA,KAAKohC,EAAQ,CACT,MAAMzrB,EAAM,KAAK,IAAMyrB,EACvB,GAAIzrB,GAAO,KAAK,KAAK,OACjB,YAAK,cAAgB,CAAC,KAAK,iBACpByzM,EAAE,IAEb,MAAM/oN,EAAO,KAAK,KAAK,WAAWsV,CAAG,EACrC,OAAOtV,IAAS+oN,EAAE,gBAAkBA,EAAE,UAAY/oN,CACtD,CACA,SAAU,CAQN,GAPA,KAAK,MAED,KAAK,QACL,KAAK,MAAQ,GACb,KAAK,OACL,KAAK,aAAe,KAAK,KAEzB,KAAK,KAAO,KAAK,KAAK,OACtB,YAAK,cAAgB,CAAC,KAAK,iBACpB+oN,EAAE,IAEb,IAAIiiE,EAAK,KAAK,KAAK,WAAW,KAAK,GAAG,EAEtC,OAAIA,IAAOjiE,EAAE,iBACT,KAAK,MAAQ,GACb,KAAK,gBAAkB,GAChBA,EAAE,WAITiiE,IAAOjiE,EAAE,YACT,KAAK,MAAQ,GACT,KAAK,kBAEL,KAAK,OACL,KAAK,gBAAkB,GACvB,KAAK,QAAO,EACL,KAAK,QAAO,IAG3B,KAAK,gBAAkB,GACnBgiE,GAAYC,CAAE,IACdA,EAAK,KAAK,kBAAkBA,CAAE,GAKP,KAAK,QAAQ,eAAiB,MACpDA,EAAK,IAAQA,EAAK,KACnBA,IAAOjiE,EAAE,WACTiiE,IAAOjiE,EAAE,iBACRiiE,EAAK,KAAQA,EAAK,OAEnB,KAAK,+BAA+BA,CAAE,EAEnCA,EACX,CACA,+BAA+BA,EAAI,CAC3BK,GAAmBL,CAAE,EACrB,KAAK,KAAKO,GAAI,6BAA6B,EAEtCD,GAAqBN,CAAE,GAC5B,KAAK,KAAKO,GAAI,yBAAyB,CAE/C,CACA,QAAQhkR,EAAO,CAEX,IADA,KAAK,KAAOA,EACL,KAAK,IAAM,KAAK,YACnB,KAAK,WAAa,KAAK,SAAS,IAAG,EACnC,KAAK,MAET,KAAK,MAAQ,EACjB,CACJ,CCnMO,IAAIwkR,IACV,SAAUA,EAAW,CAClBA,EAAUA,EAAU,UAAe,CAAC,EAAI,YACxCA,EAAUA,EAAU,eAAoB,CAAC,EAAI,iBAC7CA,EAAUA,EAAU,qBAA0B,CAAC,EAAI,uBACnDA,EAAUA,EAAU,UAAe,CAAC,EAAI,YACxCA,EAAUA,EAAU,QAAa,CAAC,EAAI,UACtCA,EAAUA,EAAU,QAAa,CAAC,EAAI,UACtCA,EAAUA,EAAU,QAAa,CAAC,EAAI,UACtCA,EAAUA,EAAU,IAAS,CAAC,EAAI,MAClCA,EAAUA,EAAU,YAAiB,CAAC,EAAI,aAC9C,GAAGA,KAAcA,GAAY,CAAA,EAAG,EACzB,SAASC,GAAav1P,EAAOw1P,EAAU,CAC1C,QAAStsR,EAAI82B,EAAM,MAAM,OAAS,EAAG92B,GAAK,EAAGA,IACzC,GAAI82B,EAAM,MAAM92B,CAAC,EAAE,OAASssR,EACxB,OAAOx1P,EAAM,MAAM92B,CAAC,EAAE,MAG9B,OAAO,IACX,CClBO,MAAMusR,GAAiC,IAAI,YAElC,2keACX,MAAM,EAAE,EACR,IAAK9sR,GAAMA,EAAE,WAAW,CAAC,CAAC,CAAC,ECH1B+sR,GAAY,IAAI,IAAI,CACtB,CAAC,EAAG,KAAK,EAET,CAAC,IAAK,IAAI,EACV,CAAC,IAAK,IAAI,EACV,CAAC,IAAK,GAAG,EACT,CAAC,IAAK,IAAI,EACV,CAAC,IAAK,IAAI,EACV,CAAC,IAAK,IAAI,EACV,CAAC,IAAK,IAAI,EACV,CAAC,IAAK,GAAG,EACT,CAAC,IAAK,IAAI,EACV,CAAC,IAAK,GAAG,EACT,CAAC,IAAK,IAAI,EACV,CAAC,IAAK,GAAG,EACT,CAAC,IAAK,GAAG,EACT,CAAC,IAAK,IAAI,EACV,CAAC,IAAK,IAAI,EACV,CAAC,IAAK,IAAI,EACV,CAAC,IAAK,IAAI,EACV,CAAC,IAAK,IAAI,EACV,CAAC,IAAK,IAAI,EACV,CAAC,IAAK,IAAI,EACV,CAAC,IAAK,GAAG,EACT,CAAC,IAAK,IAAI,EACV,CAAC,IAAK,GAAG,EACT,CAAC,IAAK,IAAI,EACV,CAAC,IAAK,GAAG,EACT,CAAC,IAAK,GAAG,EACT,CAAC,IAAK,GAAG,CACb,CAAC,EAqBM,SAASC,GAAiBC,EAAW,CACxC,IAAIhsR,EACJ,OAAKgsR,GAAa,OAASA,GAAa,OACpCA,EAAY,QACL,OAEHhsR,EAAK8rR,GAAU,IAAIE,CAAS,KAAO,MAAQhsR,IAAO,OAASA,EAAKgsR,CAC5E,CCzDA,IAAIC,IACH,SAAUA,EAAW,CAClBA,EAAUA,EAAU,IAAS,EAAE,EAAI,MACnCA,EAAUA,EAAU,KAAU,EAAE,EAAI,OACpCA,EAAUA,EAAU,OAAY,EAAE,EAAI,SACtCA,EAAUA,EAAU,KAAU,EAAE,EAAI,OACpCA,EAAUA,EAAU,KAAU,EAAE,EAAI,OACpCA,EAAUA,EAAU,QAAa,EAAE,EAAI,UACvCA,EAAUA,EAAU,QAAa,GAAG,EAAI,UACxCA,EAAUA,EAAU,QAAa,GAAG,EAAI,UACxCA,EAAUA,EAAU,QAAa,GAAG,EAAI,UACxCA,EAAUA,EAAU,QAAa,EAAE,EAAI,UACvCA,EAAUA,EAAU,QAAa,EAAE,EAAI,UACvCA,EAAUA,EAAU,QAAa,EAAE,EAAI,SAC3C,GAAGA,KAAcA,GAAY,CAAA,EAAG,EAEhC,MAAMC,GAAe,GACd,IAAIC,IACV,SAAUA,EAAc,CACrBA,EAAaA,EAAa,aAAkB,KAAK,EAAI,eACrDA,EAAaA,EAAa,cAAmB,KAAK,EAAI,gBACtDA,EAAaA,EAAa,WAAgB,GAAG,EAAI,YACrD,GAAGA,KAAiBA,GAAe,CAAA,EAAG,EACtC,SAASC,GAASzsR,EAAM,CACpB,OAAOA,GAAQssR,GAAU,MAAQtsR,GAAQssR,GAAU,IACvD,CACA,SAASI,GAAuB1sR,EAAM,CAClC,OAASA,GAAQssR,GAAU,SAAWtsR,GAAQssR,GAAU,SACnDtsR,GAAQssR,GAAU,SAAWtsR,GAAQssR,GAAU,OACxD,CACA,SAASK,GAAoB3sR,EAAM,CAC/B,OAASA,GAAQssR,GAAU,SAAWtsR,GAAQssR,GAAU,SACnDtsR,GAAQssR,GAAU,SAAWtsR,GAAQssR,GAAU,SAChDG,GAASzsR,CAAI,CACrB,CAOA,SAAS4sR,GAA8B5sR,EAAM,CACzC,OAAOA,IAASssR,GAAU,QAAUK,GAAoB3sR,CAAI,CAChE,CACA,IAAI6sR,IACH,SAAUA,EAAoB,CAC3BA,EAAmBA,EAAmB,YAAiB,CAAC,EAAI,cAC5DA,EAAmBA,EAAmB,aAAkB,CAAC,EAAI,eAC7DA,EAAmBA,EAAmB,eAAoB,CAAC,EAAI,iBAC/DA,EAAmBA,EAAmB,WAAgB,CAAC,EAAI,aAC3DA,EAAmBA,EAAmB,YAAiB,CAAC,EAAI,aAChE,GAAGA,KAAuBA,GAAqB,CAAA,EAAG,EAC3C,IAAIC,IACV,SAAUA,EAAc,CAErBA,EAAaA,EAAa,OAAY,CAAC,EAAI,SAE3CA,EAAaA,EAAa,OAAY,CAAC,EAAI,SAE3CA,EAAaA,EAAa,UAAe,CAAC,EAAI,WAClD,GAAGA,KAAiBA,GAAe,CAAA,EAAG,EAI/B,MAAMC,EAAc,CACvB,YAEAC,EAUAC,EAEAllM,EAAQ,CACJ,KAAK,WAAailM,EAClB,KAAK,cAAgBC,EACrB,KAAK,OAASllM,EAEd,KAAK,MAAQ8kM,GAAmB,YAEhC,KAAK,SAAW,EAOhB,KAAK,OAAS,EAEd,KAAK,UAAY,EAEjB,KAAK,OAAS,EAEd,KAAK,WAAaC,GAAa,MACnC,CAEA,YAAYI,EAAY,CACpB,KAAK,WAAaA,EAClB,KAAK,MAAQL,GAAmB,YAChC,KAAK,OAAS,EACd,KAAK,UAAY,EACjB,KAAK,OAAS,EACd,KAAK,SAAW,CACpB,CAYA,MAAM34Q,EAAO6sB,EAAQ,CACjB,OAAQ,KAAK,MAAK,CACd,KAAK8rP,GAAmB,YACpB,OAAI34Q,EAAM,WAAW6sB,CAAM,IAAMurP,GAAU,KACvC,KAAK,MAAQO,GAAmB,aAChC,KAAK,UAAY,EACV,KAAK,kBAAkB34Q,EAAO6sB,EAAS,CAAC,IAEnD,KAAK,MAAQ8rP,GAAmB,YACzB,KAAK,iBAAiB34Q,EAAO6sB,CAAM,GAE9C,KAAK8rP,GAAmB,aACpB,OAAO,KAAK,kBAAkB34Q,EAAO6sB,CAAM,EAE/C,KAAK8rP,GAAmB,eACpB,OAAO,KAAK,oBAAoB34Q,EAAO6sB,CAAM,EAEjD,KAAK8rP,GAAmB,WACpB,OAAO,KAAK,gBAAgB34Q,EAAO6sB,CAAM,EAE7C,KAAK8rP,GAAmB,YACpB,OAAO,KAAK,iBAAiB34Q,EAAO6sB,CAAM,CAE1D,CACI,CAUA,kBAAkB7sB,EAAO6sB,EAAQ,CAC7B,OAAIA,GAAU7sB,EAAM,OACT,IAENA,EAAM,WAAW6sB,CAAM,EAAIwrP,MAAkBD,GAAU,SACxD,KAAK,MAAQO,GAAmB,WAChC,KAAK,UAAY,EACV,KAAK,gBAAgB34Q,EAAO6sB,EAAS,CAAC,IAEjD,KAAK,MAAQ8rP,GAAmB,eACzB,KAAK,oBAAoB34Q,EAAO6sB,CAAM,EACjD,CACA,mBAAmB7sB,EAAO22H,EAAO3rG,EAAKuV,EAAM,CACxC,GAAIo2F,IAAU3rG,EAAK,CACf,MAAMiuP,EAAajuP,EAAM2rG,EACzB,KAAK,OACD,KAAK,OAAS,KAAK,IAAIp2F,EAAM04O,CAAU,EACnC,OAAO,SAASj5Q,EAAM,OAAO22H,EAAOsiJ,CAAU,EAAG14O,CAAI,EAC7D,KAAK,UAAY04O,CACrB,CACJ,CAUA,gBAAgBj5Q,EAAO6sB,EAAQ,CAC3B,MAAMm8F,EAAan8F,EACnB,KAAOA,EAAS7sB,EAAM,QAAQ,CAC1B,MAAM2rB,EAAO3rB,EAAM,WAAW6sB,CAAM,EACpC,GAAI0rP,GAAS5sP,CAAI,GAAK6sP,GAAuB7sP,CAAI,EAC7CkB,GAAU,MAGV,aAAK,mBAAmB7sB,EAAOgpH,EAAYn8F,EAAQ,EAAE,EAC9C,KAAK,kBAAkBlB,EAAM,CAAC,CAE7C,CACA,YAAK,mBAAmB3rB,EAAOgpH,EAAYn8F,EAAQ,EAAE,EAC9C,EACX,CAUA,oBAAoB7sB,EAAO6sB,EAAQ,CAC/B,MAAMm8F,EAAan8F,EACnB,KAAOA,EAAS7sB,EAAM,QAAQ,CAC1B,MAAM2rB,EAAO3rB,EAAM,WAAW6sB,CAAM,EACpC,GAAI0rP,GAAS5sP,CAAI,EACbkB,GAAU,MAGV,aAAK,mBAAmB7sB,EAAOgpH,EAAYn8F,EAAQ,EAAE,EAC9C,KAAK,kBAAkBlB,EAAM,CAAC,CAE7C,CACA,YAAK,mBAAmB3rB,EAAOgpH,EAAYn8F,EAAQ,EAAE,EAC9C,EACX,CAcA,kBAAkBqsP,EAAQC,EAAgB,CACtC,IAAIhtR,EAEJ,GAAI,KAAK,UAAYgtR,EACjB,OAAChtR,EAAK,KAAK,UAAY,MAAQA,IAAO,QAAkBA,EAAG,2CAA2C,KAAK,QAAQ,EAC5G,EAGX,GAAI+sR,IAAWd,GAAU,KACrB,KAAK,UAAY,UAEZ,KAAK,aAAeQ,GAAa,OACtC,MAAO,GAEX,YAAK,cAAcV,GAAiB,KAAK,MAAM,EAAG,KAAK,QAAQ,EAC3D,KAAK,SACDgB,IAAWd,GAAU,MACrB,KAAK,OAAO,wCAAuC,EAEvD,KAAK,OAAO,kCAAkC,KAAK,MAAM,GAEtD,KAAK,QAChB,CAUA,iBAAiBp4Q,EAAO6sB,EAAQ,CAC5B,KAAM,CAAE,WAAAisP,CAAU,EAAK,KACvB,IAAIttR,EAAUstR,EAAW,KAAK,SAAS,EAEnCrrG,GAAejiL,EAAU8sR,GAAa,eAAiB,GAC3D,KAAOzrP,EAAS7sB,EAAM,OAAQ6sB,IAAU,KAAK,SAAU,CACnD,MAAMlB,EAAO3rB,EAAM,WAAW6sB,CAAM,EAEpC,GADA,KAAK,UAAYusP,GAAgBN,EAAYttR,EAAS,KAAK,UAAY,KAAK,IAAI,EAAGiiL,CAAW,EAAG9hJ,CAAI,EACjG,KAAK,UAAY,EACjB,OAAO,KAAK,SAAW,GAElB,KAAK,aAAeitP,GAAa,YAE7BnrG,IAAgB,GAEbirG,GAA8B/sP,CAAI,GACxC,EACA,KAAK,6BAA4B,EAK3C,GAHAngC,EAAUstR,EAAW,KAAK,SAAS,EACnCrrG,GAAejiL,EAAU8sR,GAAa,eAAiB,GAEnD7qG,IAAgB,EAAG,CAEnB,GAAI9hJ,IAASysP,GAAU,KACnB,OAAO,KAAK,oBAAoB,KAAK,UAAW3qG,EAAa,KAAK,SAAW,KAAK,MAAM,EAGxF,KAAK,aAAemrG,GAAa,SACjC,KAAK,OAAS,KAAK,UACnB,KAAK,UAAY,KAAK,OACtB,KAAK,OAAS,EAEtB,CACJ,CACA,MAAO,EACX,CAMA,8BAA+B,CAC3B,IAAIzsR,EACJ,KAAM,CAAE,OAAAqB,EAAQ,WAAAsrR,CAAU,EAAK,KACzBrrG,GAAeqrG,EAAWtrR,CAAM,EAAI8qR,GAAa,eAAiB,GACxE,YAAK,oBAAoB9qR,EAAQigL,EAAa,KAAK,QAAQ,GAC1DthL,EAAK,KAAK,UAAY,MAAQA,IAAO,QAAkBA,EAAG,wCAAuC,EAC3F,KAAK,QAChB,CAUA,oBAAoBqB,EAAQigL,EAAa4rG,EAAU,CAC/C,KAAM,CAAE,WAAAP,CAAU,EAAK,KACvB,YAAK,cAAcrrG,IAAgB,EAC7BqrG,EAAWtrR,CAAM,EAAI,CAAC8qR,GAAa,aACnCQ,EAAWtrR,EAAS,CAAC,EAAG6rR,CAAQ,EAClC5rG,IAAgB,GAEhB,KAAK,cAAcqrG,EAAWtrR,EAAS,CAAC,EAAG6rR,CAAQ,EAEhDA,CACX,CAQA,KAAM,CACF,IAAIltR,EACJ,OAAQ,KAAK,MAAK,CACd,KAAKwsR,GAAmB,YAEpB,OAAO,KAAK,SAAW,IAClB,KAAK,aAAeC,GAAa,WAC9B,KAAK,SAAW,KAAK,WACvB,KAAK,6BAA4B,EACjC,EAGV,KAAKD,GAAmB,eACpB,OAAO,KAAK,kBAAkB,EAAG,CAAC,EAEtC,KAAKA,GAAmB,WACpB,OAAO,KAAK,kBAAkB,EAAG,CAAC,EAEtC,KAAKA,GAAmB,aACpB,OAACxsR,EAAK,KAAK,UAAY,MAAQA,IAAO,QAAkBA,EAAG,2CAA2C,KAAK,QAAQ,EAC5G,EAEX,KAAKwsR,GAAmB,YAEpB,MAAO,EAEvB,CACI,CACJ,CA2CO,SAASS,GAAgBN,EAAYttR,EAAS8tR,EAAW3tP,EAAM,CAClE,MAAM4tP,GAAe/tR,EAAU8sR,GAAa,gBAAkB,EACxDkB,EAAahuR,EAAU8sR,GAAa,WAE1C,GAAIiB,IAAgB,EAChB,OAAOC,IAAe,GAAK7tP,IAAS6tP,EAAaF,EAAY,GAGjE,GAAIE,EAAY,CACZ,MAAM3vR,EAAQ8hC,EAAO6tP,EACrB,OAAO3vR,EAAQ,GAAKA,GAAS0vR,EACvB,GACAT,EAAWQ,EAAYzvR,CAAK,EAAI,CAC1C,CAGA,IAAI4vR,EAAKH,EACLI,EAAKD,EAAKF,EAAc,EAC5B,KAAOE,GAAMC,GAAI,CACb,MAAMC,EAAOF,EAAKC,IAAQ,EACpBE,EAAWd,EAAWa,CAAG,EAC/B,GAAIC,EAAWjuP,EACX8tP,EAAKE,EAAM,UAENC,EAAWjuP,EAChB+tP,EAAKC,EAAM,MAGX,QAAOb,EAAWa,EAAMJ,CAAW,CAE3C,CACA,MAAO,EACX,CCncO,IAAIM,IACV,SAAUA,EAAI,CACXA,EAAG,KAAU,+BACbA,EAAG,OAAY,qCACfA,EAAG,IAAS,6BACZA,EAAG,MAAW,+BACdA,EAAG,IAAS,uCACZA,EAAG,MAAW,+BAClB,GAAGA,KAAOA,GAAK,CAAA,EAAG,EACX,IAAIC,IACV,SAAUA,EAAO,CACdA,EAAM,KAAU,OAChBA,EAAM,OAAY,SAClBA,EAAM,SAAc,WACpBA,EAAM,OAAY,SAClBA,EAAM,KAAU,OAChBA,EAAM,MAAW,QACjBA,EAAM,KAAU,OAChBA,EAAM,KAAU,MACpB,GAAGA,KAAUA,GAAQ,CAAA,EAAG,EAMjB,IAAIC,IACV,SAAUA,EAAe,CACtBA,EAAc,UAAe,YAC7BA,EAAc,OAAY,SAC1BA,EAAc,eAAoB,gBACtC,GAAGA,KAAkBA,GAAgB,CAAA,EAAG,EACjC,IAAIC,IACV,SAAUA,EAAW,CAClBA,EAAU,EAAO,IACjBA,EAAU,QAAa,UACvBA,EAAU,eAAoB,iBAC9BA,EAAU,OAAY,SACtBA,EAAU,KAAU,OACpBA,EAAU,QAAa,UACvBA,EAAU,MAAW,QACrBA,EAAU,EAAO,IACjBA,EAAU,KAAU,OACpBA,EAAU,SAAc,WACxBA,EAAU,QAAa,UACvBA,EAAU,IAAS,MACnBA,EAAU,WAAgB,aAC1BA,EAAU,KAAU,OACpBA,EAAU,GAAQ,KAClBA,EAAU,OAAY,SACtBA,EAAU,QAAa,UACvBA,EAAU,OAAY,SACtBA,EAAU,KAAU,OACpBA,EAAU,IAAS,MACnBA,EAAU,SAAc,WACxBA,EAAU,GAAQ,KAClBA,EAAU,KAAU,OACpBA,EAAU,QAAa,UACvBA,EAAU,OAAY,SACtBA,EAAU,IAAS,MACnBA,EAAU,IAAS,MACnBA,EAAU,GAAQ,KAClBA,EAAU,GAAQ,KAClBA,EAAU,GAAQ,KAClBA,EAAU,MAAW,QACrBA,EAAU,SAAc,WACxBA,EAAU,WAAgB,aAC1BA,EAAU,OAAY,SACtBA,EAAU,KAAU,OACpBA,EAAU,OAAY,SACtBA,EAAU,eAAoB,gBAC9BA,EAAU,KAAU,OACpBA,EAAU,MAAW,QACrBA,EAAU,SAAc,WACxBA,EAAU,GAAQ,KAClBA,EAAU,GAAQ,KAClBA,EAAU,GAAQ,KAClBA,EAAU,GAAQ,KAClBA,EAAU,GAAQ,KAClBA,EAAU,GAAQ,KAClBA,EAAU,KAAU,OACpBA,EAAU,OAAY,SACtBA,EAAU,OAAY,SACtBA,EAAU,GAAQ,KAClBA,EAAU,KAAU,OACpBA,EAAU,EAAO,IACjBA,EAAU,IAAS,MACnBA,EAAU,MAAW,QACrBA,EAAU,MAAW,QACrBA,EAAU,OAAY,SACtBA,EAAU,OAAY,SACtBA,EAAU,MAAW,QACrBA,EAAU,GAAQ,KAClBA,EAAU,KAAU,OACpBA,EAAU,QAAa,UACvBA,EAAU,KAAU,OACpBA,EAAU,WAAgB,aAC1BA,EAAU,QAAa,UACvBA,EAAU,KAAU,OACpBA,EAAU,KAAU,OACpBA,EAAU,KAAU,OACpBA,EAAU,OAAY,SACtBA,EAAU,GAAQ,KAClBA,EAAU,GAAQ,KAClBA,EAAU,GAAQ,KAClBA,EAAU,GAAQ,KAClBA,EAAU,MAAW,QACrBA,EAAU,IAAS,MACnBA,EAAU,KAAU,OACpBA,EAAU,SAAc,WACxBA,EAAU,QAAa,UACvBA,EAAU,SAAc,WACxBA,EAAU,OAAY,SACtBA,EAAU,GAAQ,KAClBA,EAAU,SAAc,WACxBA,EAAU,OAAY,SACtBA,EAAU,EAAO,IACjBA,EAAU,MAAW,QACrBA,EAAU,UAAe,YACzBA,EAAU,IAAS,MACnBA,EAAU,GAAQ,KAClBA,EAAU,GAAQ,KAClBA,EAAU,GAAQ,KAClBA,EAAU,IAAS,MACnBA,EAAU,KAAU,OACpBA,EAAU,EAAO,IACjBA,EAAU,OAAY,SACtBA,EAAU,OAAY,SACtBA,EAAU,QAAa,UACvBA,EAAU,OAAY,SACtBA,EAAU,OAAY,SACtBA,EAAU,MAAW,QACrBA,EAAU,KAAU,OACpBA,EAAU,OAAY,SACtBA,EAAU,OAAY,SACtBA,EAAU,MAAW,QACrBA,EAAU,IAAS,MACnBA,EAAU,QAAa,UACvBA,EAAU,IAAS,MACnBA,EAAU,MAAW,QACrBA,EAAU,MAAW,QACrBA,EAAU,SAAc,WACxBA,EAAU,SAAc,WACxBA,EAAU,MAAW,QACrBA,EAAU,GAAQ,KAClBA,EAAU,GAAQ,KAClBA,EAAU,MAAW,QACrBA,EAAU,MAAW,QACrBA,EAAU,GAAQ,KAClBA,EAAU,MAAW,QACrBA,EAAU,GAAQ,KAClBA,EAAU,EAAO,IACjBA,EAAU,GAAQ,KAClBA,EAAU,IAAS,MACnBA,EAAU,IAAS,MACnBA,EAAU,IAAS,MACnBA,EAAU,IAAS,KACvB,GAAGA,KAAcA,GAAY,CAAA,EAAG,EAMzB,IAAIC,GACV,SAAUA,EAAQ,CACfA,EAAOA,EAAO,QAAa,CAAC,EAAI,UAChCA,EAAOA,EAAO,EAAO,CAAC,EAAI,IAC1BA,EAAOA,EAAO,QAAa,CAAC,EAAI,UAChCA,EAAOA,EAAO,eAAoB,CAAC,EAAI,iBACvCA,EAAOA,EAAO,OAAY,CAAC,EAAI,SAC/BA,EAAOA,EAAO,KAAU,CAAC,EAAI,OAC7BA,EAAOA,EAAO,QAAa,CAAC,EAAI,UAChCA,EAAOA,EAAO,MAAW,CAAC,EAAI,QAC9BA,EAAOA,EAAO,EAAO,CAAC,EAAI,IAC1BA,EAAOA,EAAO,KAAU,CAAC,EAAI,OAC7BA,EAAOA,EAAO,SAAc,EAAE,EAAI,WAClCA,EAAOA,EAAO,QAAa,EAAE,EAAI,UACjCA,EAAOA,EAAO,IAAS,EAAE,EAAI,MAC7BA,EAAOA,EAAO,WAAgB,EAAE,EAAI,aACpCA,EAAOA,EAAO,KAAU,EAAE,EAAI,OAC9BA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,OAAY,EAAE,EAAI,SAChCA,EAAOA,EAAO,QAAa,EAAE,EAAI,UACjCA,EAAOA,EAAO,OAAY,EAAE,EAAI,SAChCA,EAAOA,EAAO,KAAU,EAAE,EAAI,OAC9BA,EAAOA,EAAO,IAAS,EAAE,EAAI,MAC7BA,EAAOA,EAAO,SAAc,EAAE,EAAI,WAClCA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,KAAU,EAAE,EAAI,OAC9BA,EAAOA,EAAO,QAAa,EAAE,EAAI,UACjCA,EAAOA,EAAO,OAAY,EAAE,EAAI,SAChCA,EAAOA,EAAO,IAAS,EAAE,EAAI,MAC7BA,EAAOA,EAAO,IAAS,EAAE,EAAI,MAC7BA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,MAAW,EAAE,EAAI,QAC/BA,EAAOA,EAAO,SAAc,EAAE,EAAI,WAClCA,EAAOA,EAAO,WAAgB,EAAE,EAAI,aACpCA,EAAOA,EAAO,OAAY,EAAE,EAAI,SAChCA,EAAOA,EAAO,KAAU,EAAE,EAAI,OAC9BA,EAAOA,EAAO,OAAY,EAAE,EAAI,SAChCA,EAAOA,EAAO,eAAoB,EAAE,EAAI,iBACxCA,EAAOA,EAAO,KAAU,EAAE,EAAI,OAC9BA,EAAOA,EAAO,MAAW,EAAE,EAAI,QAC/BA,EAAOA,EAAO,SAAc,EAAE,EAAI,WAClCA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,KAAU,EAAE,EAAI,OAC9BA,EAAOA,EAAO,OAAY,EAAE,EAAI,SAChCA,EAAOA,EAAO,OAAY,EAAE,EAAI,SAChCA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,KAAU,EAAE,EAAI,OAC9BA,EAAOA,EAAO,EAAO,EAAE,EAAI,IAC3BA,EAAOA,EAAO,IAAS,EAAE,EAAI,MAC7BA,EAAOA,EAAO,MAAW,EAAE,EAAI,QAC/BA,EAAOA,EAAO,MAAW,EAAE,EAAI,QAC/BA,EAAOA,EAAO,OAAY,EAAE,EAAI,SAChCA,EAAOA,EAAO,OAAY,EAAE,EAAI,SAChCA,EAAOA,EAAO,MAAW,EAAE,EAAI,QAC/BA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,KAAU,EAAE,EAAI,OAC9BA,EAAOA,EAAO,QAAa,EAAE,EAAI,UACjCA,EAAOA,EAAO,KAAU,EAAE,EAAI,OAC9BA,EAAOA,EAAO,WAAgB,EAAE,EAAI,aACpCA,EAAOA,EAAO,QAAa,EAAE,EAAI,UACjCA,EAAOA,EAAO,KAAU,EAAE,EAAI,OAC9BA,EAAOA,EAAO,KAAU,EAAE,EAAI,OAC9BA,EAAOA,EAAO,KAAU,EAAE,EAAI,OAC9BA,EAAOA,EAAO,OAAY,EAAE,EAAI,SAChCA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,MAAW,EAAE,EAAI,QAC/BA,EAAOA,EAAO,IAAS,EAAE,EAAI,MAC7BA,EAAOA,EAAO,KAAU,EAAE,EAAI,OAC9BA,EAAOA,EAAO,SAAc,EAAE,EAAI,WAClCA,EAAOA,EAAO,QAAa,EAAE,EAAI,UACjCA,EAAOA,EAAO,SAAc,EAAE,EAAI,WAClCA,EAAOA,EAAO,OAAY,EAAE,EAAI,SAChCA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,SAAc,EAAE,EAAI,WAClCA,EAAOA,EAAO,OAAY,EAAE,EAAI,SAChCA,EAAOA,EAAO,EAAO,EAAE,EAAI,IAC3BA,EAAOA,EAAO,MAAW,EAAE,EAAI,QAC/BA,EAAOA,EAAO,UAAe,EAAE,EAAI,YACnCA,EAAOA,EAAO,IAAS,EAAE,EAAI,MAC7BA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,IAAS,EAAE,EAAI,MAC7BA,EAAOA,EAAO,KAAU,EAAE,EAAI,OAC9BA,EAAOA,EAAO,EAAO,EAAE,EAAI,IAC3BA,EAAOA,EAAO,OAAY,EAAE,EAAI,SAChCA,EAAOA,EAAO,OAAY,EAAE,EAAI,SAChCA,EAAOA,EAAO,QAAa,EAAE,EAAI,UACjCA,EAAOA,EAAO,OAAY,EAAE,EAAI,SAChCA,EAAOA,EAAO,OAAY,EAAE,EAAI,SAChCA,EAAOA,EAAO,MAAW,EAAE,EAAI,QAC/BA,EAAOA,EAAO,KAAU,EAAE,EAAI,OAC9BA,EAAOA,EAAO,OAAY,GAAG,EAAI,SACjCA,EAAOA,EAAO,OAAY,GAAG,EAAI,SACjCA,EAAOA,EAAO,MAAW,GAAG,EAAI,QAChCA,EAAOA,EAAO,IAAS,GAAG,EAAI,MAC9BA,EAAOA,EAAO,QAAa,GAAG,EAAI,UAClCA,EAAOA,EAAO,IAAS,GAAG,EAAI,MAC9BA,EAAOA,EAAO,MAAW,GAAG,EAAI,QAChCA,EAAOA,EAAO,MAAW,GAAG,EAAI,QAChCA,EAAOA,EAAO,SAAc,GAAG,EAAI,WACnCA,EAAOA,EAAO,SAAc,GAAG,EAAI,WACnCA,EAAOA,EAAO,MAAW,GAAG,EAAI,QAChCA,EAAOA,EAAO,GAAQ,GAAG,EAAI,KAC7BA,EAAOA,EAAO,GAAQ,GAAG,EAAI,KAC7BA,EAAOA,EAAO,MAAW,GAAG,EAAI,QAChCA,EAAOA,EAAO,MAAW,GAAG,EAAI,QAChCA,EAAOA,EAAO,GAAQ,GAAG,EAAI,KAC7BA,EAAOA,EAAO,MAAW,GAAG,EAAI,QAChCA,EAAOA,EAAO,GAAQ,GAAG,EAAI,KAC7BA,EAAOA,EAAO,EAAO,GAAG,EAAI,IAC5BA,EAAOA,EAAO,GAAQ,GAAG,EAAI,KAC7BA,EAAOA,EAAO,IAAS,GAAG,EAAI,MAC9BA,EAAOA,EAAO,IAAS,GAAG,EAAI,MAC9BA,EAAOA,EAAO,IAAS,GAAG,EAAI,MAC9BA,EAAOA,EAAO,IAAS,GAAG,EAAI,KAClC,GAAGA,IAAWA,EAAS,CAAA,EAAG,EAC1B,MAAMC,GAAiB,IAAI,IAAI,CAC3B,CAACF,GAAU,EAAGC,EAAO,CAAC,EACtB,CAACD,GAAU,QAASC,EAAO,OAAO,EAClC,CAACD,GAAU,eAAgBC,EAAO,cAAc,EAChD,CAACD,GAAU,OAAQC,EAAO,MAAM,EAChC,CAACD,GAAU,KAAMC,EAAO,IAAI,EAC5B,CAACD,GAAU,QAASC,EAAO,OAAO,EAClC,CAACD,GAAU,MAAOC,EAAO,KAAK,EAC9B,CAACD,GAAU,EAAGC,EAAO,CAAC,EACtB,CAACD,GAAU,KAAMC,EAAO,IAAI,EAC5B,CAACD,GAAU,SAAUC,EAAO,QAAQ,EACpC,CAACD,GAAU,QAASC,EAAO,OAAO,EAClC,CAACD,GAAU,IAAKC,EAAO,GAAG,EAC1B,CAACD,GAAU,WAAYC,EAAO,UAAU,EACxC,CAACD,GAAU,KAAMC,EAAO,IAAI,EAC5B,CAACD,GAAU,GAAIC,EAAO,EAAE,EACxB,CAACD,GAAU,OAAQC,EAAO,MAAM,EAChC,CAACD,GAAU,QAASC,EAAO,OAAO,EAClC,CAACD,GAAU,OAAQC,EAAO,MAAM,EAChC,CAACD,GAAU,KAAMC,EAAO,IAAI,EAC5B,CAACD,GAAU,IAAKC,EAAO,GAAG,EAC1B,CAACD,GAAU,SAAUC,EAAO,QAAQ,EACpC,CAACD,GAAU,GAAIC,EAAO,EAAE,EACxB,CAACD,GAAU,KAAMC,EAAO,IAAI,EAC5B,CAACD,GAAU,QAASC,EAAO,OAAO,EAClC,CAACD,GAAU,OAAQC,EAAO,MAAM,EAChC,CAACD,GAAU,IAAKC,EAAO,GAAG,EAC1B,CAACD,GAAU,IAAKC,EAAO,GAAG,EAC1B,CAACD,GAAU,GAAIC,EAAO,EAAE,EACxB,CAACD,GAAU,GAAIC,EAAO,EAAE,EACxB,CAACD,GAAU,GAAIC,EAAO,EAAE,EACxB,CAACD,GAAU,MAAOC,EAAO,KAAK,EAC9B,CAACD,GAAU,SAAUC,EAAO,QAAQ,EACpC,CAACD,GAAU,WAAYC,EAAO,UAAU,EACxC,CAACD,GAAU,OAAQC,EAAO,MAAM,EAChC,CAACD,GAAU,KAAMC,EAAO,IAAI,EAC5B,CAACD,GAAU,OAAQC,EAAO,MAAM,EAChC,CAACD,GAAU,eAAgBC,EAAO,cAAc,EAChD,CAACD,GAAU,KAAMC,EAAO,IAAI,EAC5B,CAACD,GAAU,MAAOC,EAAO,KAAK,EAC9B,CAACD,GAAU,SAAUC,EAAO,QAAQ,EACpC,CAACD,GAAU,GAAIC,EAAO,EAAE,EACxB,CAACD,GAAU,GAAIC,EAAO,EAAE,EACxB,CAACD,GAAU,GAAIC,EAAO,EAAE,EACxB,CAACD,GAAU,GAAIC,EAAO,EAAE,EACxB,CAACD,GAAU,GAAIC,EAAO,EAAE,EACxB,CAACD,GAAU,GAAIC,EAAO,EAAE,EACxB,CAACD,GAAU,KAAMC,EAAO,IAAI,EAC5B,CAACD,GAAU,OAAQC,EAAO,MAAM,EAChC,CAACD,GAAU,OAAQC,EAAO,MAAM,EAChC,CAACD,GAAU,GAAIC,EAAO,EAAE,EACxB,CAACD,GAAU,KAAMC,EAAO,IAAI,EAC5B,CAACD,GAAU,EAAGC,EAAO,CAAC,EACtB,CAACD,GAAU,IAAKC,EAAO,GAAG,EAC1B,CAACD,GAAU,MAAOC,EAAO,KAAK,EAC9B,CAACD,GAAU,MAAOC,EAAO,KAAK,EAC9B,CAACD,GAAU,OAAQC,EAAO,MAAM,EAChC,CAACD,GAAU,OAAQC,EAAO,MAAM,EAChC,CAACD,GAAU,MAAOC,EAAO,KAAK,EAC9B,CAACD,GAAU,GAAIC,EAAO,EAAE,EACxB,CAACD,GAAU,KAAMC,EAAO,IAAI,EAC5B,CAACD,GAAU,QAASC,EAAO,OAAO,EAClC,CAACD,GAAU,KAAMC,EAAO,IAAI,EAC5B,CAACD,GAAU,WAAYC,EAAO,UAAU,EACxC,CAACD,GAAU,QAASC,EAAO,OAAO,EAClC,CAACD,GAAU,KAAMC,EAAO,IAAI,EAC5B,CAACD,GAAU,KAAMC,EAAO,IAAI,EAC5B,CAACD,GAAU,KAAMC,EAAO,IAAI,EAC5B,CAACD,GAAU,OAAQC,EAAO,MAAM,EAChC,CAACD,GAAU,GAAIC,EAAO,EAAE,EACxB,CAACD,GAAU,GAAIC,EAAO,EAAE,EACxB,CAACD,GAAU,GAAIC,EAAO,EAAE,EACxB,CAACD,GAAU,GAAIC,EAAO,EAAE,EACxB,CAACD,GAAU,MAAOC,EAAO,KAAK,EAC9B,CAACD,GAAU,IAAKC,EAAO,GAAG,EAC1B,CAACD,GAAU,KAAMC,EAAO,IAAI,EAC5B,CAACD,GAAU,SAAUC,EAAO,QAAQ,EACpC,CAACD,GAAU,QAASC,EAAO,OAAO,EAClC,CAACD,GAAU,SAAUC,EAAO,QAAQ,EACpC,CAACD,GAAU,OAAQC,EAAO,MAAM,EAChC,CAACD,GAAU,GAAIC,EAAO,EAAE,EACxB,CAACD,GAAU,SAAUC,EAAO,QAAQ,EACpC,CAACD,GAAU,OAAQC,EAAO,MAAM,EAChC,CAACD,GAAU,EAAGC,EAAO,CAAC,EACtB,CAACD,GAAU,MAAOC,EAAO,KAAK,EAC9B,CAACD,GAAU,UAAWC,EAAO,SAAS,EACtC,CAACD,GAAU,IAAKC,EAAO,GAAG,EAC1B,CAACD,GAAU,GAAIC,EAAO,EAAE,EACxB,CAACD,GAAU,GAAIC,EAAO,EAAE,EACxB,CAACD,GAAU,GAAIC,EAAO,EAAE,EACxB,CAACD,GAAU,IAAKC,EAAO,GAAG,EAC1B,CAACD,GAAU,KAAMC,EAAO,IAAI,EAC5B,CAACD,GAAU,EAAGC,EAAO,CAAC,EACtB,CAACD,GAAU,OAAQC,EAAO,MAAM,EAChC,CAACD,GAAU,OAAQC,EAAO,MAAM,EAChC,CAACD,GAAU,QAASC,EAAO,OAAO,EAClC,CAACD,GAAU,OAAQC,EAAO,MAAM,EAChC,CAACD,GAAU,OAAQC,EAAO,MAAM,EAChC,CAACD,GAAU,MAAOC,EAAO,KAAK,EAC9B,CAACD,GAAU,KAAMC,EAAO,IAAI,EAC5B,CAACD,GAAU,OAAQC,EAAO,MAAM,EAChC,CAACD,GAAU,OAAQC,EAAO,MAAM,EAChC,CAACD,GAAU,MAAOC,EAAO,KAAK,EAC9B,CAACD,GAAU,IAAKC,EAAO,GAAG,EAC1B,CAACD,GAAU,QAASC,EAAO,OAAO,EAClC,CAACD,GAAU,IAAKC,EAAO,GAAG,EAC1B,CAACD,GAAU,MAAOC,EAAO,KAAK,EAC9B,CAACD,GAAU,MAAOC,EAAO,KAAK,EAC9B,CAACD,GAAU,SAAUC,EAAO,QAAQ,EACpC,CAACD,GAAU,SAAUC,EAAO,QAAQ,EACpC,CAACD,GAAU,MAAOC,EAAO,KAAK,EAC9B,CAACD,GAAU,GAAIC,EAAO,EAAE,EACxB,CAACD,GAAU,GAAIC,EAAO,EAAE,EACxB,CAACD,GAAU,MAAOC,EAAO,KAAK,EAC9B,CAACD,GAAU,MAAOC,EAAO,KAAK,EAC9B,CAACD,GAAU,GAAIC,EAAO,EAAE,EACxB,CAACD,GAAU,MAAOC,EAAO,KAAK,EAC9B,CAACD,GAAU,GAAIC,EAAO,EAAE,EACxB,CAACD,GAAU,EAAGC,EAAO,CAAC,EACtB,CAACD,GAAU,GAAIC,EAAO,EAAE,EACxB,CAACD,GAAU,IAAKC,EAAO,GAAG,EAC1B,CAACD,GAAU,IAAKC,EAAO,GAAG,EAC1B,CAACD,GAAU,IAAKC,EAAO,GAAG,EAC1B,CAACD,GAAU,IAAKC,EAAO,GAAG,CAC9B,CAAC,EACM,SAASE,GAASzyB,EAAS,CAC9B,IAAIv7P,EACJ,OAAQA,EAAK+tR,GAAe,IAAIxyB,CAAO,KAAO,MAAQv7P,IAAO,OAASA,EAAK8tR,EAAO,OACtF,CACA,MAAMplE,GAAIolE,EACGG,GAAmB,CAC5B,CAACP,GAAG,IAAI,EAAG,IAAI,IAAI,CACfhlE,GAAE,QACFA,GAAE,OACFA,GAAE,KACFA,GAAE,QACFA,GAAE,MACFA,GAAE,KACFA,GAAE,SACFA,GAAE,QACFA,GAAE,WACFA,GAAE,KACFA,GAAE,GACFA,GAAE,OACFA,GAAE,QACFA,GAAE,OACFA,GAAE,IACFA,GAAE,SACFA,GAAE,GACFA,GAAE,QACFA,GAAE,IACFA,GAAE,IACFA,GAAE,GACFA,GAAE,GACFA,GAAE,MACFA,GAAE,SACFA,GAAE,WACFA,GAAE,OACFA,GAAE,OACFA,GAAE,KACFA,GAAE,MACFA,GAAE,SACFA,GAAE,GACFA,GAAE,GACFA,GAAE,GACFA,GAAE,GACFA,GAAE,GACFA,GAAE,GACFA,GAAE,KACFA,GAAE,OACFA,GAAE,OACFA,GAAE,GACFA,GAAE,KACFA,GAAE,OACFA,GAAE,IACFA,GAAE,MACFA,GAAE,GACFA,GAAE,KACFA,GAAE,QACFA,GAAE,KACFA,GAAE,QACFA,GAAE,KACFA,GAAE,KACFA,GAAE,IACFA,GAAE,QACFA,GAAE,SACFA,GAAE,SACFA,GAAE,OACFA,GAAE,GACFA,GAAE,EACFA,GAAE,MACFA,GAAE,UACFA,GAAE,IACFA,GAAE,OACFA,GAAE,QACFA,GAAE,OACFA,GAAE,OACFA,GAAE,MACFA,GAAE,QACFA,GAAE,MACFA,GAAE,MACFA,GAAE,GACFA,GAAE,SACFA,GAAE,SACFA,GAAE,MACFA,GAAE,GACFA,GAAE,MACFA,GAAE,MACFA,GAAE,GACFA,GAAE,MACFA,GAAE,GACFA,GAAE,IACFA,GAAE,GACV,CAAK,EACD,CAACglE,GAAG,MAAM,EAAG,IAAI,IAAI,CAAChlE,GAAE,GAAIA,GAAE,GAAIA,GAAE,GAAIA,GAAE,GAAIA,GAAE,MAAOA,GAAE,cAAc,CAAC,EACxE,CAACglE,GAAG,GAAG,EAAG,IAAI,IAAI,CAAChlE,GAAE,MAAOA,GAAE,eAAgBA,GAAE,IAAI,CAAC,EACrD,CAACglE,GAAG,KAAK,EAAG,IAAI,IAChB,CAACA,GAAG,GAAG,EAAG,IAAI,IACd,CAACA,GAAG,KAAK,EAAG,IAAI,GACpB,EACaQ,GAAmB,IAAI,IAAI,CAACxlE,GAAE,GAAIA,GAAE,GAAIA,GAAE,GAAIA,GAAE,GAAIA,GAAE,GAAIA,GAAE,EAAE,CAAC,EAExEmlE,GAAU,MACVA,GAAU,OACVA,GAAU,IACVA,GAAU,OACVA,GAAU,QACVA,GAAU,SACVA,GAAU,UC/fd,IAAIM,GACH,SAAUA,EAAO,CACdA,EAAMA,EAAM,KAAU,CAAC,EAAI,OAC3BA,EAAMA,EAAM,OAAY,CAAC,EAAI,SAC7BA,EAAMA,EAAM,QAAa,CAAC,EAAI,UAC9BA,EAAMA,EAAM,YAAiB,CAAC,EAAI,cAClCA,EAAMA,EAAM,UAAe,CAAC,EAAI,YAChCA,EAAMA,EAAM,SAAc,CAAC,EAAI,WAC/BA,EAAMA,EAAM,aAAkB,CAAC,EAAI,eACnCA,EAAMA,EAAM,SAAc,CAAC,EAAI,WAC/BA,EAAMA,EAAM,sBAA2B,CAAC,EAAI,wBAC5CA,EAAMA,EAAM,oBAAyB,CAAC,EAAI,sBAC1CA,EAAMA,EAAM,oBAAyB,EAAE,EAAI,sBAC3CA,EAAMA,EAAM,uBAA4B,EAAE,EAAI,yBAC9CA,EAAMA,EAAM,qBAA0B,EAAE,EAAI,uBAC5CA,EAAMA,EAAM,qBAA0B,EAAE,EAAI,uBAC5CA,EAAMA,EAAM,2BAAgC,EAAE,EAAI,6BAClDA,EAAMA,EAAM,yBAA8B,EAAE,EAAI,2BAChDA,EAAMA,EAAM,yBAA8B,EAAE,EAAI,2BAChDA,EAAMA,EAAM,yBAA8B,EAAE,EAAI,2BAChDA,EAAMA,EAAM,8BAAmC,EAAE,EAAI,gCACrDA,EAAMA,EAAM,oBAAyB,EAAE,EAAI,sBAC3CA,EAAMA,EAAM,yBAA8B,EAAE,EAAI,2BAChDA,EAAMA,EAAM,8BAAmC,EAAE,EAAI,gCACrDA,EAAMA,EAAM,mCAAwC,EAAE,EAAI,qCAC1DA,EAAMA,EAAM,iCAAsC,EAAE,EAAI,mCACxDA,EAAMA,EAAM,iCAAsC,EAAE,EAAI,mCACxDA,EAAMA,EAAM,gCAAqC,EAAE,EAAI,kCACvDA,EAAMA,EAAM,2BAAgC,EAAE,EAAI,6BAClDA,EAAMA,EAAM,gCAAqC,EAAE,EAAI,kCACvDA,EAAMA,EAAM,qCAA0C,EAAE,EAAI,uCAC5DA,EAAMA,EAAM,0CAA+C,EAAE,EAAI,4CACjEA,EAAMA,EAAM,8BAAmC,EAAE,EAAI,gCACrDA,EAAMA,EAAM,sBAA2B,EAAE,EAAI,wBAC7CA,EAAMA,EAAM,eAAoB,EAAE,EAAI,iBACtCA,EAAMA,EAAM,qBAA0B,EAAE,EAAI,uBAC5CA,EAAMA,EAAM,uBAA4B,EAAE,EAAI,yBAC9CA,EAAMA,EAAM,8BAAmC,EAAE,EAAI,gCACrDA,EAAMA,EAAM,8BAAmC,EAAE,EAAI,gCACrDA,EAAMA,EAAM,yBAA8B,EAAE,EAAI,2BAChDA,EAAMA,EAAM,6BAAkC,EAAE,EAAI,+BACpDA,EAAMA,EAAM,uBAA4B,EAAE,EAAI,yBAC9CA,EAAMA,EAAM,cAAmB,EAAE,EAAI,gBACrCA,EAAMA,EAAM,wBAA6B,EAAE,EAAI,0BAC/CA,EAAMA,EAAM,cAAmB,EAAE,EAAI,gBACrCA,EAAMA,EAAM,mBAAwB,EAAE,EAAI,qBAC1CA,EAAMA,EAAM,QAAa,EAAE,EAAI,UAC/BA,EAAMA,EAAM,uBAA4B,EAAE,EAAI,yBAC9CA,EAAMA,EAAM,4BAAiC,EAAE,EAAI,8BACnDA,EAAMA,EAAM,iCAAsC,EAAE,EAAI,mCACxDA,EAAMA,EAAM,sCAA2C,EAAE,EAAI,wCAC7DA,EAAMA,EAAM,iBAAsB,EAAE,EAAI,mBACxCA,EAAMA,EAAM,YAAiB,EAAE,EAAI,cACnCA,EAAMA,EAAM,iBAAsB,EAAE,EAAI,mBACxCA,EAAMA,EAAM,QAAa,EAAE,EAAI,UAC/BA,EAAMA,EAAM,oBAAyB,EAAE,EAAI,sBAC3CA,EAAMA,EAAM,aAAkB,EAAE,EAAI,eACpCA,EAAMA,EAAM,mBAAwB,EAAE,EAAI,qBAC1CA,EAAMA,EAAM,6BAAkC,EAAE,EAAI,+BACpDA,EAAMA,EAAM,iCAAsC,EAAE,EAAI,mCACxDA,EAAMA,EAAM,wCAA6C,EAAE,EAAI,0CAC/DA,EAAMA,EAAM,wCAA6C,EAAE,EAAI,0CAC/DA,EAAMA,EAAM,gCAAqC,EAAE,EAAI,kCACvDA,EAAMA,EAAM,8CAAmD,EAAE,EAAI,gDACrEA,EAAMA,EAAM,6BAAkC,EAAE,EAAI,+BACpDA,EAAMA,EAAM,iCAAsC,EAAE,EAAI,mCACxDA,EAAMA,EAAM,wCAA6C,EAAE,EAAI,0CAC/DA,EAAMA,EAAM,wCAA6C,EAAE,EAAI,0CAC/DA,EAAMA,EAAM,gCAAqC,EAAE,EAAI,kCACvDA,EAAMA,EAAM,cAAmB,EAAE,EAAI,gBACrCA,EAAMA,EAAM,cAAmB,EAAE,EAAI,gBACrCA,EAAMA,EAAM,sBAA2B,EAAE,EAAI,wBAC7CA,EAAMA,EAAM,kBAAuB,EAAE,EAAI,oBACzCA,EAAMA,EAAM,oBAAyB,EAAE,EAAI,sBAC3CA,EAAMA,EAAM,oBAAyB,EAAE,EAAI,qBAC/C,GAAGA,IAAUA,EAAQ,CAAA,EAAG,EAEjB,MAAMC,GAAgB,CACzB,KAAMD,EAAM,KACZ,OAAQA,EAAM,OACd,QAASA,EAAM,QACf,YAAaA,EAAM,YACnB,UAAWA,EAAM,UACjB,cAAeA,EAAM,aACzB,EAKA,SAASE,GAAa1D,EAAI,CACtB,OAAOA,GAAMjiE,EAAE,SAAWiiE,GAAMjiE,EAAE,OACtC,CACA,SAAS4lE,GAAa3D,EAAI,CACtB,OAAOA,GAAMjiE,EAAE,iBAAmBiiE,GAAMjiE,EAAE,eAC9C,CACA,SAAS6lE,GAAa5D,EAAI,CACtB,OAAOA,GAAMjiE,EAAE,eAAiBiiE,GAAMjiE,EAAE,aAC5C,CACA,SAAS8lE,GAAc7D,EAAI,CACvB,OAAO4D,GAAa5D,CAAE,GAAK2D,GAAa3D,CAAE,CAC9C,CACA,SAAS2B,GAAoB3B,EAAI,CAC7B,OAAO6D,GAAc7D,CAAE,GAAK0D,GAAa1D,CAAE,CAC/C,CACA,SAAS8D,GAAa9D,EAAI,CACtB,OAAOA,EAAK,EAChB,CACA,SAAS+D,GAAa/D,EAAI,CACtB,OAAOA,IAAOjiE,EAAE,OAASiiE,IAAOjiE,EAAE,WAAaiiE,IAAOjiE,EAAE,YAAciiE,IAAOjiE,EAAE,SACnF,CACA,SAASimE,GAAoChE,EAAI,CAC7C,OAAO+D,GAAa/D,CAAE,GAAKA,IAAOjiE,EAAE,SAAWiiE,IAAOjiE,EAAE,iBAC5D,CACA,SAASkmE,GAAqCjvR,EAAM,CAChD,OAAIA,IAAS+oN,EAAE,KACJwiE,GAAI,uBAENvrR,EAAO,QACLurR,GAAI,sCAENR,GAAY/qR,CAAI,EACdurR,GAAI,4BAEND,GAAqBtrR,CAAI,EACvBurR,GAAI,+BAENF,GAAmBrrR,CAAI,GAAKA,IAAS+oN,EAAE,gBACrCwiE,GAAI,0BAER,IACX,CAEO,MAAM2D,EAAU,CACnB,YAAY1uR,EAASwhJ,EAAS,CAC1B,KAAK,QAAUxhJ,EACf,KAAK,QAAUwhJ,EACf,KAAK,OAAS,GAEd,KAAK,OAAS,GAOd,KAAK,cAAgB,GACrB,KAAK,iBAAmB,GACxB,KAAK,OAAS,GACd,KAAK,MAAQwsI,EAAM,KACnB,KAAK,YAAcA,EAAM,KACzB,KAAK,eAAiB,EACtB,KAAK,sBAAwB,GAC7B,KAAK,sBAAwB,KAC7B,KAAK,aAAe,KACpB,KAAK,YAAc,CAAE,KAAM,GAAI,MAAO,EAAE,EACxC,KAAK,aAAe,IAAI/C,GAAazpI,CAAO,EAC5C,KAAK,gBAAkB,KAAK,mBAAmB,EAAE,EACjD,KAAK,cAAgB,IAAI+qI,GAAcb,GAAgB,CAAClB,EAAIuC,IAAa,CAGrE,KAAK,aAAa,IAAM,KAAK,eAAiBA,EAAW,EACzD,KAAK,4CAA4CvC,CAAE,CACvD,EAAGhpI,EAAQ,aACL,CACE,wCAAyC,IAAM,CAC3C,KAAK,KAAKupI,GAAI,wCAAyC,CAAC,CAC5D,EACA,2CAA6CgC,GAAa,CACtD,KAAK,KAAKhC,GAAI,2CAA4C,KAAK,eAAiB,KAAK,aAAa,IAAMgC,CAAQ,CACpH,EACA,kCAAoCvtR,GAAS,CACzC,MAAMgM,EAAQijR,GAAqCjvR,CAAI,EACnDgM,GACA,KAAK,KAAKA,EAAO,CAAC,CAC1B,CAChB,EACc,MAAS,CACnB,CAEA,KAAKhM,EAAM0rR,EAAW,EAAG,CACrB,IAAIrrR,EAAID,GACPA,GAAMC,EAAK,KAAK,SAAS,gBAAkB,MAAQD,IAAO,QAAkBA,EAAG,KAAKC,EAAI,KAAK,aAAa,SAASL,EAAM0rR,CAAQ,CAAC,CACvI,CAEA,mBAAmB3qP,EAAQ,CACvB,OAAK,KAAK,QAAQ,uBAGX,CACH,UAAW,KAAK,aAAa,KAC7B,SAAU,KAAK,aAAa,IAAMA,EAClC,YAAa,KAAK,aAAa,OAASA,EACxC,QAAS,GACT,OAAQ,GACR,UAAW,EACvB,EATmB,IAUf,CACA,iBAAkB,CACd,GAAI,MAAK,OAGT,KADA,KAAK,OAAS,GACP,KAAK,QAAU,CAAC,KAAK,QAAQ,CAChC,KAAK,sBAAwB,EAC7B,MAAMiqP,EAAK,KAAK,SAAQ,EACnB,KAAK,sBACN,KAAK,WAAWA,CAAE,CAE1B,CACA,KAAK,OAAS,GAClB,CAEA,OAAQ,CACJ,KAAK,OAAS,EAClB,CACA,OAAOmE,EAAe,CAClB,GAAI,CAAC,KAAK,OACN,MAAM,IAAI,MAAM,4BAA4B,EAEhD,KAAK,OAAS,GAEV,MAAK,SAET,KAAK,gBAAe,EACf,KAAK,QACNA,GAAkB,MAA4CA,EAAa,EAEnF,CACA,MAAMhsB,EAAO2oB,EAAaqD,EAAe,CACrC,KAAK,OAAS,GACd,KAAK,aAAa,MAAMhsB,EAAO2oB,CAAW,EAC1C,KAAK,gBAAe,EACf,KAAK,QACNqD,GAAkB,MAA4CA,EAAa,CAEnF,CACA,uBAAuBhsB,EAAO,CAC1B,KAAK,OAAS,GACd,KAAK,aAAa,uBAAuBA,CAAK,EAC9C,KAAK,gBAAe,CACxB,CAEA,oBAAqB,CACjB,OAAI,KAAK,aAAa,eAClB,KAAK,aAAa,QAAQ,KAAK,qBAAqB,EACpD,KAAK,sBAAwB,EAC7B,KAAK,OAAS,GACP,IAEJ,EACX,CAEA,UAAW,CACP,YAAK,wBACE,KAAK,aAAa,QAAO,CACpC,CACA,WAAW57P,EAAO,CACd,KAAK,uBAAyBA,EAC9B,QAAS5H,EAAI,EAAGA,EAAI4H,EAAO5H,IACvB,KAAK,aAAa,QAAO,CAEjC,CACA,wBAAwBhB,EAAS+pR,EAAe,CAC5C,OAAI,KAAK,aAAa,WAAW/pR,EAAS+pR,CAAa,GAEnD,KAAK,WAAW/pR,EAAQ,OAAS,CAAC,EAC3B,IAEJ,EACX,CAEA,sBAAuB,CACnB,KAAK,aAAe,CAChB,KAAMotR,GAAU,UAChB,QAAS,GACT,MAAOoC,EAAO,QACd,YAAa,GACb,eAAgB,GAChB,MAAO,CAAA,EACP,SAAU,KAAK,mBAAmB,CAAC,CAC/C,CACI,CACA,oBAAqB,CACjB,KAAK,aAAe,CAChB,KAAMpC,GAAU,QAChB,QAAS,GACT,MAAOoC,EAAO,QACd,YAAa,GACb,eAAgB,GAChB,MAAO,CAAA,EACP,SAAU,KAAK,mBAAmB,CAAC,CAC/C,CACI,CACA,oBAAoBptP,EAAQ,CACxB,KAAK,aAAe,CAChB,KAAMgrP,GAAU,QAChB,KAAM,GACN,SAAU,KAAK,mBAAmBhrP,CAAM,CACpD,CACI,CACA,oBAAoBquP,EAAa,CAC7B,KAAK,aAAe,CAChB,KAAMrD,GAAU,QAChB,KAAMqD,EACN,YAAa,GACb,SAAU,KACV,SAAU,KACV,SAAU,KAAK,eAC3B,CACI,CACA,sBAAsBjvR,EAAMrB,EAAO,CAC/B,KAAK,sBAAwB,CACzB,KAAAqB,EACA,MAAArB,EACA,SAAU,KAAK,eAC3B,CACI,CAEA,YAAYuwR,EAAiB,CACzB,KAAK,YAAc,CACf,KAAMA,EACN,MAAO,EACnB,EACQ,KAAK,gBAAkB,KAAK,mBAAmB,CAAC,CACpD,CACA,gBAAiB,CACb,IAAIhvR,EACAD,EACJ,MAAMq2B,EAAQ,KAAK,aACnB,GAAIu1P,GAAav1P,EAAO,KAAK,YAAY,IAAI,IAAM,MAE/C,GADAA,EAAM,MAAM,KAAK,KAAK,WAAW,EAC7BA,EAAM,UAAY,KAAK,gBAAiB,CACxC,MAAM64P,GAAkBjvR,GAAMD,EAAKq2B,EAAM,UAAU,SAAW,MAAQp2B,IAAO,OAASA,EAAMD,EAAG,MAAQ,OAAO,OAAO,IAAI,EACzHkvR,EAAc,KAAK,YAAY,IAAI,EAAI,KAAK,gBAE5C,KAAK,gBAAe,CACxB,OAGA,KAAK,KAAK/D,GAAI,kBAAkB,CAExC,CACA,iBAAkB,CACV,KAAK,kBACL,KAAK,gBAAgB,QAAU,KAAK,aAAa,KACjD,KAAK,gBAAgB,OAAS,KAAK,aAAa,IAChD,KAAK,gBAAgB,UAAY,KAAK,aAAa,OAE3D,CAEA,aAAagE,EAAI,CACb,KAAK,2BAA2BA,EAAG,QAAQ,EAC3C,KAAK,aAAe,KAChBA,EAAG,WACHA,EAAG,SAAS,QAAU,KAAK,aAAa,KACxCA,EAAG,SAAS,OAAS,KAAK,aAAa,IAAM,EAC7CA,EAAG,SAAS,UAAY,KAAK,aAAa,OAAS,GAEvD,KAAK,gBAAkB,KAAK,mBAAmB,EAAE,CACrD,CACA,qBAAsB,CAClB,MAAMA,EAAK,KAAK,aAChB,KAAK,aAAaA,CAAE,EACpBA,EAAG,MAAQlB,GAASkB,EAAG,OAAO,EAC1BA,EAAG,OAASxD,GAAU,WACtB,KAAK,iBAAmBwD,EAAG,QAC3B,KAAK,QAAQ,WAAWA,CAAE,IAGtBA,EAAG,MAAM,OAAS,GAClB,KAAK,KAAKhE,GAAI,oBAAoB,EAElCgE,EAAG,aACH,KAAK,KAAKhE,GAAI,yBAAyB,EAE3C,KAAK,QAAQ,SAASgE,CAAE,GAE5B,KAAK,aAAa,gBAAe,CACrC,CACA,mBAAmBA,EAAI,CACnB,KAAK,aAAaA,CAAE,EACpB,KAAK,QAAQ,UAAUA,CAAE,EACzB,KAAK,aAAa,gBAAe,CACrC,CACA,mBAAmBA,EAAI,CACnB,KAAK,aAAaA,CAAE,EACpB,KAAK,QAAQ,UAAUA,CAAE,EACzB,KAAK,aAAa,gBAAe,CACrC,CACA,2BAA2BC,EAAc,CACrC,GAAI,KAAK,sBAAuB,CAQ5B,OALIA,GAAgB,KAAK,sBAAsB,WAC3C,KAAK,sBAAsB,SAAS,QAAUA,EAAa,UAC3D,KAAK,sBAAsB,SAAS,OAASA,EAAa,SAC1D,KAAK,sBAAsB,SAAS,UAAYA,EAAa,aAEzD,KAAK,sBAAsB,KAAI,CACnC,KAAKzD,GAAU,UAAW,CACtB,KAAK,QAAQ,YAAY,KAAK,qBAAqB,EACnD,KACJ,CACA,KAAKA,GAAU,eAAgB,CAC3B,KAAK,QAAQ,gBAAgB,KAAK,qBAAqB,EACvD,KACJ,CACA,KAAKA,GAAU,qBAAsB,CACjC,KAAK,QAAQ,sBAAsB,KAAK,qBAAqB,EAC7D,KACJ,CAChB,CACY,KAAK,sBAAwB,IACjC,CACJ,CACA,eAAgB,CACZ,MAAMxC,EAAW,KAAK,mBAAmB,CAAC,EACtCA,IACAA,EAAS,QAAUA,EAAS,UAC5BA,EAAS,OAASA,EAAS,SAC3BA,EAAS,UAAYA,EAAS,aAElC,KAAK,2BAA2BA,CAAQ,EACxC,KAAK,QAAQ,MAAM,CAAE,KAAMwC,GAAU,IAAK,SAAAxC,EAAU,EACpD,KAAK,OAAS,EAClB,CAUA,mCAAmCppR,EAAMsvR,EAAI,CACzC,GAAI,KAAK,sBACL,GAAI,KAAK,sBAAsB,OAAStvR,EAAM,CAC1C,KAAK,sBAAsB,OAASsvR,EACpC,MACJ,MAEI,KAAK,gBAAkB,KAAK,mBAAmB,CAAC,EAChD,KAAK,2BAA2B,KAAK,eAAe,EACpD,KAAK,aAAa,gBAAe,EAGzC,KAAK,sBAAsBtvR,EAAMsvR,CAAE,CACvC,CACA,eAAezE,EAAI,CACf,MAAM7qR,EAAO4uR,GAAa/D,CAAE,EACtBe,GAAU,qBACVf,IAAOjiE,EAAE,KACLgjE,GAAU,eACVA,GAAU,UACpB,KAAK,mCAAmC5rR,EAAM,OAAO,cAAc6qR,CAAE,CAAC,CAC1E,CAGA,WAAWyE,EAAI,CACX,KAAK,mCAAmC1D,GAAU,UAAW0D,CAAE,CACnE,CAEA,0BAA2B,CACvB,KAAK,YAAc,KAAK,MACxB,KAAK,MAAQjB,EAAM,oBACnB,KAAK,eAAiB,KAAK,aAAa,IACxC,KAAK,cAAc,YAAY,KAAK,iCAAgC,EAAK1B,GAAa,UAAYA,GAAa,MAAM,CACzH,CACA,kCAAmC,CAC/B,OAAQ,KAAK,cAAgB0B,EAAM,+BAC/B,KAAK,cAAgBA,EAAM,+BAC3B,KAAK,cAAgBA,EAAM,wBACnC,CACA,4CAA4CxD,EAAI,CACxC,KAAK,mCACL,KAAK,YAAY,OAAS,OAAO,cAAcA,CAAE,EAGjD,KAAK,eAAeA,CAAE,CAE9B,CAEA,WAAWA,EAAI,CACX,OAAQ,KAAK,MAAK,CACd,KAAKwD,EAAM,KAAM,CACb,KAAK,WAAWxD,CAAE,EAClB,KACJ,CACA,KAAKwD,EAAM,OAAQ,CACf,KAAK,aAAaxD,CAAE,EACpB,KACJ,CACA,KAAKwD,EAAM,QAAS,CAChB,KAAK,cAAcxD,CAAE,EACrB,KACJ,CACA,KAAKwD,EAAM,YAAa,CACpB,KAAK,iBAAiBxD,CAAE,EACxB,KACJ,CACA,KAAKwD,EAAM,UAAW,CAClB,KAAK,gBAAgBxD,CAAE,EACvB,KACJ,CACA,KAAKwD,EAAM,SAAU,CACjB,KAAK,cAAcxD,CAAE,EACrB,KACJ,CACA,KAAKwD,EAAM,aAAc,CACrB,KAAK,iBAAiBxD,CAAE,EACxB,KACJ,CACA,KAAKwD,EAAM,SAAU,CACjB,KAAK,cAAcxD,CAAE,EACrB,KACJ,CACA,KAAKwD,EAAM,sBAAuB,CAC9B,KAAK,yBAAyBxD,CAAE,EAChC,KACJ,CACA,KAAKwD,EAAM,oBAAqB,CAC5B,KAAK,uBAAuBxD,CAAE,EAC9B,KACJ,CACA,KAAKwD,EAAM,oBAAqB,CAC5B,KAAK,uBAAuBxD,CAAE,EAC9B,KACJ,CACA,KAAKwD,EAAM,uBAAwB,CAC/B,KAAK,0BAA0BxD,CAAE,EACjC,KACJ,CACA,KAAKwD,EAAM,qBAAsB,CAC7B,KAAK,wBAAwBxD,CAAE,EAC/B,KACJ,CACA,KAAKwD,EAAM,qBAAsB,CAC7B,KAAK,wBAAwBxD,CAAE,EAC/B,KACJ,CACA,KAAKwD,EAAM,2BAA4B,CACnC,KAAK,6BAA6BxD,CAAE,EACpC,KACJ,CACA,KAAKwD,EAAM,yBAA0B,CACjC,KAAK,2BAA2BxD,CAAE,EAClC,KACJ,CACA,KAAKwD,EAAM,yBAA0B,CACjC,KAAK,2BAA2BxD,CAAE,EAClC,KACJ,CACA,KAAKwD,EAAM,yBAA0B,CACjC,KAAK,4BAA4BxD,CAAE,EACnC,KACJ,CACA,KAAKwD,EAAM,8BAA+B,CACtC,KAAK,gCAAgCxD,CAAE,EACvC,KACJ,CACA,KAAKwD,EAAM,oBAAqB,CAC5B,KAAK,wBAAwBxD,CAAE,EAC/B,KACJ,CACA,KAAKwD,EAAM,yBAA0B,CACjC,KAAK,4BAA4BxD,CAAE,EACnC,KACJ,CACA,KAAKwD,EAAM,8BAA+B,CACtC,KAAK,gCAAgCxD,CAAE,EACvC,KACJ,CACA,KAAKwD,EAAM,mCAAoC,CAC3C,KAAK,oCAAoCxD,CAAE,EAC3C,KACJ,CACA,KAAKwD,EAAM,iCAAkC,CACzC,KAAK,kCAAkCxD,CAAE,EACzC,KACJ,CACA,KAAKwD,EAAM,iCAAkC,CACzC,KAAK,kCAAkCxD,CAAE,EACzC,KACJ,CACA,KAAKwD,EAAM,gCAAiC,CACxC,KAAK,kCAAkCxD,CAAE,EACzC,KACJ,CACA,KAAKwD,EAAM,2BAA4B,CACnC,KAAK,8BAA8BxD,CAAE,EACrC,KACJ,CACA,KAAKwD,EAAM,gCAAiC,CACxC,KAAK,kCAAkCxD,CAAE,EACzC,KACJ,CACA,KAAKwD,EAAM,qCAAsC,CAC7C,KAAK,sCAAsCxD,CAAE,EAC7C,KACJ,CACA,KAAKwD,EAAM,0CAA2C,CAClD,KAAK,0CAA0CxD,CAAE,EACjD,KACJ,CACA,KAAKwD,EAAM,8BAA+B,CACtC,KAAK,gCAAgCxD,CAAE,EACvC,KACJ,CACA,KAAKwD,EAAM,sBAAuB,CAC9B,KAAK,0BAA0BxD,CAAE,EACjC,KACJ,CACA,KAAKwD,EAAM,eAAgB,CACvB,KAAK,oBAAoBxD,CAAE,EAC3B,KACJ,CACA,KAAKwD,EAAM,qBAAsB,CAC7B,KAAK,yBAAyBxD,CAAE,EAChC,KACJ,CACA,KAAKwD,EAAM,uBAAwB,CAC/B,KAAK,2BAA2BxD,CAAE,EAClC,KACJ,CACA,KAAKwD,EAAM,8BAA+B,CACtC,KAAK,iCAAiCxD,CAAE,EACxC,KACJ,CACA,KAAKwD,EAAM,8BAA+B,CACtC,KAAK,iCAAiCxD,CAAE,EACxC,KACJ,CACA,KAAKwD,EAAM,yBAA0B,CACjC,KAAK,6BAA6BxD,CAAE,EACpC,KACJ,CACA,KAAKwD,EAAM,6BAA8B,CACrC,KAAK,gCAAgCxD,CAAE,EACvC,KACJ,CACA,KAAKwD,EAAM,uBAAwB,CAC/B,KAAK,0BAA0BxD,CAAE,EACjC,KACJ,CACA,KAAKwD,EAAM,cAAe,CACtB,KAAK,mBAAmBxD,CAAE,EAC1B,KACJ,CACA,KAAKwD,EAAM,wBAAyB,CAChC,KAAK,4BAA4BxD,CAAE,EACnC,KACJ,CACA,KAAKwD,EAAM,cAAe,CACtB,KAAK,mBAAmBxD,CAAE,EAC1B,KACJ,CACA,KAAKwD,EAAM,mBAAoB,CAC3B,KAAK,uBAAuBxD,CAAE,EAC9B,KACJ,CACA,KAAKwD,EAAM,QAAS,CAChB,KAAK,cAAcxD,CAAE,EACrB,KACJ,CACA,KAAKwD,EAAM,uBAAwB,CAC/B,KAAK,0BAA0BxD,CAAE,EACjC,KACJ,CACA,KAAKwD,EAAM,4BAA6B,CACpC,KAAK,8BAA8BxD,CAAE,EACrC,KACJ,CACA,KAAKwD,EAAM,iCAAkC,CACzC,KAAK,kCAAkCxD,CAAE,EACzC,KACJ,CACA,KAAKwD,EAAM,sCAAuC,CAC9C,KAAK,sCAAsCxD,CAAE,EAC7C,KACJ,CACA,KAAKwD,EAAM,iBAAkB,CACzB,KAAK,qBAAqBxD,CAAE,EAC5B,KACJ,CACA,KAAKwD,EAAM,YAAa,CACpB,KAAK,iBAAiBxD,CAAE,EACxB,KACJ,CACA,KAAKwD,EAAM,iBAAkB,CACzB,KAAK,qBAAqBxD,CAAE,EAC5B,KACJ,CACA,KAAKwD,EAAM,QAAS,CAChB,KAAK,cAAcxD,CAAE,EACrB,KACJ,CACA,KAAKwD,EAAM,oBAAqB,CAC5B,KAAK,wBAAwBxD,CAAE,EAC/B,KACJ,CACA,KAAKwD,EAAM,aAAc,CACrB,KAAK,kBAAkBxD,CAAE,EACzB,KACJ,CACA,KAAKwD,EAAM,mBAAoB,CAC3B,KAAK,uBAAuBxD,CAAE,EAC9B,KACJ,CACA,KAAKwD,EAAM,6BAA8B,CACrC,KAAK,gCAAgCxD,CAAE,EACvC,KACJ,CACA,KAAKwD,EAAM,iCAAkC,CACzC,KAAK,oCAAoCxD,CAAE,EAC3C,KACJ,CACA,KAAKwD,EAAM,wCAAyC,CAChD,KAAK,0CAA0CxD,CAAE,EACjD,KACJ,CACA,KAAKwD,EAAM,wCAAyC,CAChD,KAAK,0CAA0CxD,CAAE,EACjD,KACJ,CACA,KAAKwD,EAAM,gCAAiC,CACxC,KAAK,mCAAmCxD,CAAE,EAC1C,KACJ,CACA,KAAKwD,EAAM,8CAA+C,CACtD,KAAK,+CAA+CxD,CAAE,EACtD,KACJ,CACA,KAAKwD,EAAM,6BAA8B,CACrC,KAAK,gCAAgCxD,CAAE,EACvC,KACJ,CACA,KAAKwD,EAAM,iCAAkC,CACzC,KAAK,oCAAoCxD,CAAE,EAC3C,KACJ,CACA,KAAKwD,EAAM,wCAAyC,CAChD,KAAK,0CAA0CxD,CAAE,EACjD,KACJ,CACA,KAAKwD,EAAM,wCAAyC,CAChD,KAAK,0CAA0CxD,CAAE,EACjD,KACJ,CACA,KAAKwD,EAAM,gCAAiC,CACxC,KAAK,mCAAmCxD,CAAE,EAC1C,KACJ,CACA,KAAKwD,EAAM,cAAe,CACtB,KAAK,mBAAmBxD,CAAE,EAC1B,KACJ,CACA,KAAKwD,EAAM,cAAe,CACtB,KAAK,mBAAmBxD,CAAE,EAC1B,KACJ,CACA,KAAKwD,EAAM,sBAAuB,CAC9B,KAAK,0BAA0BxD,CAAE,EACjC,KACJ,CACA,KAAKwD,EAAM,kBAAmB,CAC1B,KAAK,sBAAsBxD,CAAE,EAC7B,KACJ,CACA,KAAKwD,EAAM,oBAAqB,CAC5B,KAAK,yBAAwB,EAC7B,KACJ,CACA,KAAKA,EAAM,oBAAqB,CAC5B,KAAK,yBAAyBxD,CAAE,EAChC,KACJ,CACA,QACI,MAAM,IAAI,MAAM,eAAe,CAE/C,CACI,CAIA,WAAWA,EAAI,CACX,OAAQA,EAAE,CACN,KAAKjiE,EAAE,eAAgB,CACnB,KAAK,MAAQylE,EAAM,SACnB,KACJ,CACA,KAAKzlE,EAAE,UAAW,CACd,KAAK,yBAAwB,EAC7B,KACJ,CACA,KAAKA,EAAE,KAAM,CACT,KAAK,KAAKwiE,GAAI,uBAAuB,EACrC,KAAK,eAAeP,CAAE,EACtB,KACJ,CACA,KAAKjiE,EAAE,IAAK,CACR,KAAK,cAAa,EAClB,KACJ,CACA,QACI,KAAK,eAAeiiE,CAAE,CAEtC,CACI,CAGA,aAAaA,EAAI,CACb,OAAQA,EAAE,CACN,KAAKjiE,EAAE,UAAW,CACd,KAAK,yBAAwB,EAC7B,KACJ,CACA,KAAKA,EAAE,eAAgB,CACnB,KAAK,MAAQylE,EAAM,sBACnB,KACJ,CACA,KAAKzlE,EAAE,KAAM,CACT,KAAK,KAAKwiE,GAAI,uBAAuB,EACrC,KAAK,WAAWX,EAAqB,EACrC,KACJ,CACA,KAAK7hE,EAAE,IAAK,CACR,KAAK,cAAa,EAClB,KACJ,CACA,QACI,KAAK,eAAeiiE,CAAE,CAEtC,CACI,CAGA,cAAcA,EAAI,CACd,OAAQA,EAAE,CACN,KAAKjiE,EAAE,eAAgB,CACnB,KAAK,MAAQylE,EAAM,uBACnB,KACJ,CACA,KAAKzlE,EAAE,KAAM,CACT,KAAK,KAAKwiE,GAAI,uBAAuB,EACrC,KAAK,WAAWX,EAAqB,EACrC,KACJ,CACA,KAAK7hE,EAAE,IAAK,CACR,KAAK,cAAa,EAClB,KACJ,CACA,QACI,KAAK,eAAeiiE,CAAE,CAEtC,CACI,CAGA,iBAAiBA,EAAI,CACjB,OAAQA,EAAE,CACN,KAAKjiE,EAAE,eAAgB,CACnB,KAAK,MAAQylE,EAAM,2BACnB,KACJ,CACA,KAAKzlE,EAAE,KAAM,CACT,KAAK,KAAKwiE,GAAI,uBAAuB,EACrC,KAAK,WAAWX,EAAqB,EACrC,KACJ,CACA,KAAK7hE,EAAE,IAAK,CACR,KAAK,cAAa,EAClB,KACJ,CACA,QACI,KAAK,eAAeiiE,CAAE,CAEtC,CACI,CAGA,gBAAgBA,EAAI,CAChB,OAAQA,EAAE,CACN,KAAKjiE,EAAE,KAAM,CACT,KAAK,KAAKwiE,GAAI,uBAAuB,EACrC,KAAK,WAAWX,EAAqB,EACrC,KACJ,CACA,KAAK7hE,EAAE,IAAK,CACR,KAAK,cAAa,EAClB,KACJ,CACA,QACI,KAAK,eAAeiiE,CAAE,CAEtC,CACI,CAGA,cAAcA,EAAI,CACd,GAAI6D,GAAc7D,CAAE,EAChB,KAAK,qBAAoB,EACzB,KAAK,MAAQwD,EAAM,SACnB,KAAK,cAAcxD,CAAE,MAGrB,QAAQA,EAAE,CACN,KAAKjiE,EAAE,iBAAkB,CACrB,KAAK,MAAQylE,EAAM,wBACnB,KACJ,CACA,KAAKzlE,EAAE,QAAS,CACZ,KAAK,MAAQylE,EAAM,aACnB,KACJ,CACA,KAAKzlE,EAAE,cAAe,CAClB,KAAK,KAAKwiE,GAAI,sCAAsC,EACpD,KAAK,oBAAoB,CAAC,EAC1B,KAAK,MAAQiD,EAAM,cACnB,KAAK,mBAAmBxD,CAAE,EAC1B,KACJ,CACA,KAAKjiE,EAAE,IAAK,CACR,KAAK,KAAKwiE,GAAI,gBAAgB,EAC9B,KAAK,WAAW,GAAG,EACnB,KAAK,cAAa,EAClB,KACJ,CACA,QACI,KAAK,KAAKA,GAAI,8BAA8B,EAC5C,KAAK,WAAW,GAAG,EACnB,KAAK,MAAQiD,EAAM,KACnB,KAAK,WAAWxD,CAAE,CAEtC,CACI,CAGA,iBAAiBA,EAAI,CACjB,GAAI6D,GAAc7D,CAAE,EAChB,KAAK,mBAAkB,EACvB,KAAK,MAAQwD,EAAM,SACnB,KAAK,cAAcxD,CAAE,MAGrB,QAAQA,EAAE,CACN,KAAKjiE,EAAE,kBAAmB,CACtB,KAAK,KAAKwiE,GAAI,iBAAiB,EAC/B,KAAK,MAAQiD,EAAM,KACnB,KACJ,CACA,KAAKzlE,EAAE,IAAK,CACR,KAAK,KAAKwiE,GAAI,gBAAgB,EAC9B,KAAK,WAAW,IAAI,EACpB,KAAK,cAAa,EAClB,KACJ,CACA,QACI,KAAK,KAAKA,GAAI,8BAA8B,EAC5C,KAAK,oBAAoB,CAAC,EAC1B,KAAK,MAAQiD,EAAM,cACnB,KAAK,mBAAmBxD,CAAE,CAE9C,CACI,CAGA,cAAcA,EAAI,CACd,MAAMv0P,EAAQ,KAAK,aACnB,OAAQu0P,EAAE,CACN,KAAKjiE,EAAE,MACP,KAAKA,EAAE,UACP,KAAKA,EAAE,WACP,KAAKA,EAAE,UAAW,CACd,KAAK,MAAQylE,EAAM,sBACnB,KACJ,CACA,KAAKzlE,EAAE,QAAS,CACZ,KAAK,MAAQylE,EAAM,uBACnB,KACJ,CACA,KAAKzlE,EAAE,kBAAmB,CACtB,KAAK,MAAQylE,EAAM,KACnB,KAAK,oBAAmB,EACxB,KACJ,CACA,KAAKzlE,EAAE,KAAM,CACT,KAAK,KAAKwiE,GAAI,uBAAuB,EACrC90P,EAAM,SAAWm0P,GACjB,KACJ,CACA,KAAK7hE,EAAE,IAAK,CACR,KAAK,KAAKwiE,GAAI,QAAQ,EACtB,KAAK,cAAa,EAClB,KACJ,CACA,QACI90P,EAAM,SAAW,OAAO,cAAck4P,GAAa3D,CAAE,EAAI8D,GAAa9D,CAAE,EAAIA,CAAE,CAE9F,CACI,CAGA,yBAAyBA,EAAI,CACrBA,IAAOjiE,EAAE,QACT,KAAK,MAAQylE,EAAM,qBAGnB,KAAK,WAAW,GAAG,EACnB,KAAK,MAAQA,EAAM,OACnB,KAAK,aAAaxD,CAAE,EAE5B,CAGA,uBAAuBA,EAAI,CACnB6D,GAAc7D,CAAE,GAChB,KAAK,MAAQwD,EAAM,oBACnB,KAAK,uBAAuBxD,CAAE,IAG9B,KAAK,WAAW,IAAI,EACpB,KAAK,MAAQwD,EAAM,OACnB,KAAK,aAAaxD,CAAE,EAE5B,CACA,oBAAoB0E,EAAK,CACrB,GAAI,CAAC,KAAK,aAAa,WAAW,KAAK,iBAAkB,EAAK,EAC1D,MAAO,CAAC,KAAK,mBAAkB,EAEnC,KAAK,mBAAkB,EACvB,MAAMj5P,EAAQ,KAAK,aAGnB,OAFAA,EAAM,QAAU,KAAK,iBACV,KAAK,aAAa,KAAK,KAAK,iBAAiB,MAAM,EACpD,CACN,KAAKsyL,EAAE,MACP,KAAKA,EAAE,UACP,KAAKA,EAAE,WACP,KAAKA,EAAE,UACH,YAAK,WAAW,KAAK,iBAAiB,MAAM,EAC5C,KAAK,MAAQylE,EAAM,sBACZ,GAEX,KAAKzlE,EAAE,QACH,YAAK,WAAW,KAAK,iBAAiB,MAAM,EAC5C,KAAK,MAAQylE,EAAM,uBACZ,GAEX,KAAKzlE,EAAE,kBACH,YAAK,WAAW,KAAK,iBAAiB,MAAM,EAC5C,KAAK,oBAAmB,EACxB,KAAK,MAAQylE,EAAM,KACZ,GAEX,QACI,MAAO,CAAC,KAAK,mBAAkB,CAE/C,CACI,CAGA,uBAAuBxD,EAAI,CACnB,KAAK,oBAAoBA,CAAE,IAC3B,KAAK,WAAW,IAAI,EACpB,KAAK,MAAQwD,EAAM,OACnB,KAAK,aAAaxD,CAAE,EAE5B,CAGA,0BAA0BA,EAAI,CACtBA,IAAOjiE,EAAE,QACT,KAAK,MAAQylE,EAAM,sBAGnB,KAAK,WAAW,GAAG,EACnB,KAAK,MAAQA,EAAM,QACnB,KAAK,cAAcxD,CAAE,EAE7B,CAGA,wBAAwBA,EAAI,CACpB6D,GAAc7D,CAAE,GAChB,KAAK,MAAQwD,EAAM,qBACnB,KAAK,wBAAwBxD,CAAE,IAG/B,KAAK,WAAW,IAAI,EACpB,KAAK,MAAQwD,EAAM,QACnB,KAAK,cAAcxD,CAAE,EAE7B,CAGA,wBAAwBA,EAAI,CACpB,KAAK,oBAAoBA,CAAE,IAC3B,KAAK,WAAW,IAAI,EACpB,KAAK,MAAQwD,EAAM,QACnB,KAAK,cAAcxD,CAAE,EAE7B,CAGA,6BAA6BA,EAAI,CAC7B,OAAQA,EAAE,CACN,KAAKjiE,EAAE,QAAS,CACZ,KAAK,MAAQylE,EAAM,yBACnB,KACJ,CACA,KAAKzlE,EAAE,iBAAkB,CACrB,KAAK,MAAQylE,EAAM,yBACnB,KAAK,WAAW,IAAI,EACpB,KACJ,CACA,QACI,KAAK,WAAW,GAAG,EACnB,KAAK,MAAQA,EAAM,YACnB,KAAK,iBAAiBxD,CAAE,CAExC,CACI,CAGA,2BAA2BA,EAAI,CACvB6D,GAAc7D,CAAE,GAChB,KAAK,MAAQwD,EAAM,yBACnB,KAAK,2BAA2BxD,CAAE,IAGlC,KAAK,WAAW,IAAI,EACpB,KAAK,MAAQwD,EAAM,YACnB,KAAK,iBAAiBxD,CAAE,EAEhC,CAGA,2BAA2BA,EAAI,CACvB,KAAK,oBAAoBA,CAAE,IAC3B,KAAK,WAAW,IAAI,EACpB,KAAK,MAAQwD,EAAM,YACnB,KAAK,iBAAiBxD,CAAE,EAEhC,CAGA,4BAA4BA,EAAI,CACxBA,IAAOjiE,EAAE,cACT,KAAK,MAAQylE,EAAM,8BACnB,KAAK,WAAW,GAAG,IAGnB,KAAK,MAAQA,EAAM,YACnB,KAAK,iBAAiBxD,CAAE,EAEhC,CAGA,gCAAgCA,EAAI,CAC5BA,IAAOjiE,EAAE,cACT,KAAK,MAAQylE,EAAM,8BACnB,KAAK,WAAW,GAAG,IAGnB,KAAK,MAAQA,EAAM,YACnB,KAAK,iBAAiBxD,CAAE,EAEhC,CAGA,wBAAwBA,EAAI,CACxB,OAAQA,EAAE,CACN,KAAKjiE,EAAE,aAAc,CACjB,KAAK,MAAQylE,EAAM,yBACnB,KAAK,WAAW,GAAG,EACnB,KACJ,CACA,KAAKzlE,EAAE,eAAgB,CACnB,KAAK,MAAQylE,EAAM,mCACnB,KACJ,CACA,KAAKzlE,EAAE,KAAM,CACT,KAAK,KAAKwiE,GAAI,uBAAuB,EACrC,KAAK,WAAWX,EAAqB,EACrC,KACJ,CACA,KAAK7hE,EAAE,IAAK,CACR,KAAK,KAAKwiE,GAAI,8BAA8B,EAC5C,KAAK,cAAa,EAClB,KACJ,CACA,QACI,KAAK,eAAeP,CAAE,CAEtC,CACI,CAGA,4BAA4BA,EAAI,CAC5B,OAAQA,EAAE,CACN,KAAKjiE,EAAE,aAAc,CACjB,KAAK,MAAQylE,EAAM,8BACnB,KAAK,WAAW,GAAG,EACnB,KACJ,CACA,KAAKzlE,EAAE,eAAgB,CACnB,KAAK,MAAQylE,EAAM,mCACnB,KACJ,CACA,KAAKzlE,EAAE,KAAM,CACT,KAAK,KAAKwiE,GAAI,uBAAuB,EACrC,KAAK,MAAQiD,EAAM,oBACnB,KAAK,WAAW5D,EAAqB,EACrC,KACJ,CACA,KAAK7hE,EAAE,IAAK,CACR,KAAK,KAAKwiE,GAAI,8BAA8B,EAC5C,KAAK,cAAa,EAClB,KACJ,CACA,QACI,KAAK,MAAQiD,EAAM,oBACnB,KAAK,eAAexD,CAAE,CAEtC,CACI,CAGA,gCAAgCA,EAAI,CAChC,OAAQA,EAAE,CACN,KAAKjiE,EAAE,aAAc,CACjB,KAAK,WAAW,GAAG,EACnB,KACJ,CACA,KAAKA,EAAE,eAAgB,CACnB,KAAK,MAAQylE,EAAM,mCACnB,KACJ,CACA,KAAKzlE,EAAE,kBAAmB,CACtB,KAAK,MAAQylE,EAAM,YACnB,KAAK,WAAW,GAAG,EACnB,KACJ,CACA,KAAKzlE,EAAE,KAAM,CACT,KAAK,KAAKwiE,GAAI,uBAAuB,EACrC,KAAK,MAAQiD,EAAM,oBACnB,KAAK,WAAW5D,EAAqB,EACrC,KACJ,CACA,KAAK7hE,EAAE,IAAK,CACR,KAAK,KAAKwiE,GAAI,8BAA8B,EAC5C,KAAK,cAAa,EAClB,KACJ,CACA,QACI,KAAK,MAAQiD,EAAM,oBACnB,KAAK,eAAexD,CAAE,CAEtC,CACI,CAGA,oCAAoCA,EAAI,CAChCA,IAAOjiE,EAAE,QACT,KAAK,MAAQylE,EAAM,iCAEdK,GAAc7D,CAAE,GACrB,KAAK,WAAW,GAAG,EACnB,KAAK,MAAQwD,EAAM,gCACnB,KAAK,kCAAkCxD,CAAE,IAGzC,KAAK,WAAW,GAAG,EACnB,KAAK,MAAQwD,EAAM,oBACnB,KAAK,wBAAwBxD,CAAE,EAEvC,CAGA,kCAAkCA,EAAI,CAC9B6D,GAAc7D,CAAE,GAChB,KAAK,MAAQwD,EAAM,iCACnB,KAAK,kCAAkCxD,CAAE,IAGzC,KAAK,WAAW,IAAI,EACpB,KAAK,MAAQwD,EAAM,oBACnB,KAAK,wBAAwBxD,CAAE,EAEvC,CAGA,kCAAkCA,EAAI,CAC9B,KAAK,oBAAoBA,CAAE,IAC3B,KAAK,WAAW,IAAI,EACpB,KAAK,MAAQwD,EAAM,oBACnB,KAAK,wBAAwBxD,CAAE,EAEvC,CAGA,kCAAkCA,EAAI,CAClC,GAAI,KAAK,aAAa,WAAW2E,GAAG,OAAQ,EAAK,GAC7CX,GAAoC,KAAK,aAAa,KAAKW,GAAG,OAAO,MAAM,CAAC,EAAG,CAC/E,KAAK,eAAe3E,CAAE,EACtB,QAASrrR,EAAI,EAAGA,EAAIgwR,GAAG,OAAO,OAAQhwR,IAClC,KAAK,eAAe,KAAK,UAAU,EAEvC,KAAK,MAAQ6uR,EAAM,0BACvB,MACU,KAAK,uBACX,KAAK,MAAQA,EAAM,oBACnB,KAAK,wBAAwBxD,CAAE,EAEvC,CAGA,8BAA8BA,EAAI,CAC9B,OAAQA,EAAE,CACN,KAAKjiE,EAAE,aAAc,CACjB,KAAK,MAAQylE,EAAM,gCACnB,KAAK,WAAW,GAAG,EACnB,KACJ,CACA,KAAKzlE,EAAE,eAAgB,CACnB,KAAK,MAAQylE,EAAM,0CACnB,KAAK,WAAW,GAAG,EACnB,KACJ,CACA,KAAKzlE,EAAE,KAAM,CACT,KAAK,KAAKwiE,GAAI,uBAAuB,EACrC,KAAK,WAAWX,EAAqB,EACrC,KACJ,CACA,KAAK7hE,EAAE,IAAK,CACR,KAAK,KAAKwiE,GAAI,8BAA8B,EAC5C,KAAK,cAAa,EAClB,KACJ,CACA,QACI,KAAK,eAAeP,CAAE,CAEtC,CACI,CAGA,kCAAkCA,EAAI,CAClC,OAAQA,EAAE,CACN,KAAKjiE,EAAE,aAAc,CACjB,KAAK,MAAQylE,EAAM,qCACnB,KAAK,WAAW,GAAG,EACnB,KACJ,CACA,KAAKzlE,EAAE,eAAgB,CACnB,KAAK,MAAQylE,EAAM,0CACnB,KAAK,WAAW,GAAG,EACnB,KACJ,CACA,KAAKzlE,EAAE,KAAM,CACT,KAAK,KAAKwiE,GAAI,uBAAuB,EACrC,KAAK,MAAQiD,EAAM,2BACnB,KAAK,WAAW5D,EAAqB,EACrC,KACJ,CACA,KAAK7hE,EAAE,IAAK,CACR,KAAK,KAAKwiE,GAAI,8BAA8B,EAC5C,KAAK,cAAa,EAClB,KACJ,CACA,QACI,KAAK,MAAQiD,EAAM,2BACnB,KAAK,eAAexD,CAAE,CAEtC,CACI,CAGA,sCAAsCA,EAAI,CACtC,OAAQA,EAAE,CACN,KAAKjiE,EAAE,aAAc,CACjB,KAAK,WAAW,GAAG,EACnB,KACJ,CACA,KAAKA,EAAE,eAAgB,CACnB,KAAK,MAAQylE,EAAM,0CACnB,KAAK,WAAW,GAAG,EACnB,KACJ,CACA,KAAKzlE,EAAE,kBAAmB,CACtB,KAAK,MAAQylE,EAAM,YACnB,KAAK,WAAW,GAAG,EACnB,KACJ,CACA,KAAKzlE,EAAE,KAAM,CACT,KAAK,KAAKwiE,GAAI,uBAAuB,EACrC,KAAK,MAAQiD,EAAM,2BACnB,KAAK,WAAW5D,EAAqB,EACrC,KACJ,CACA,KAAK7hE,EAAE,IAAK,CACR,KAAK,KAAKwiE,GAAI,8BAA8B,EAC5C,KAAK,cAAa,EAClB,KACJ,CACA,QACI,KAAK,MAAQiD,EAAM,2BACnB,KAAK,eAAexD,CAAE,CAEtC,CACI,CAGA,0CAA0CA,EAAI,CACtCA,IAAOjiE,EAAE,SACT,KAAK,MAAQylE,EAAM,8BACnB,KAAK,WAAW,GAAG,IAGnB,KAAK,MAAQA,EAAM,2BACnB,KAAK,8BAA8BxD,CAAE,EAE7C,CAGA,gCAAgCA,EAAI,CAChC,GAAI,KAAK,aAAa,WAAW2E,GAAG,OAAQ,EAAK,GAC7CX,GAAoC,KAAK,aAAa,KAAKW,GAAG,OAAO,MAAM,CAAC,EAAG,CAC/E,KAAK,eAAe3E,CAAE,EACtB,QAASrrR,EAAI,EAAGA,EAAIgwR,GAAG,OAAO,OAAQhwR,IAClC,KAAK,eAAe,KAAK,UAAU,EAEvC,KAAK,MAAQ6uR,EAAM,mBACvB,MACU,KAAK,uBACX,KAAK,MAAQA,EAAM,2BACnB,KAAK,8BAA8BxD,CAAE,EAE7C,CAGA,0BAA0BA,EAAI,CAC1B,OAAQA,EAAE,CACN,KAAKjiE,EAAE,MACP,KAAKA,EAAE,UACP,KAAKA,EAAE,WACP,KAAKA,EAAE,UAEH,MAEJ,KAAKA,EAAE,QACP,KAAKA,EAAE,kBACP,KAAKA,EAAE,IAAK,CACR,KAAK,MAAQylE,EAAM,qBACnB,KAAK,yBAAyBxD,CAAE,EAChC,KACJ,CACA,KAAKjiE,EAAE,YAAa,CAChB,KAAK,KAAKwiE,GAAI,uCAAuC,EACrD,KAAK,YAAY,GAAG,EACpB,KAAK,MAAQiD,EAAM,eACnB,KACJ,CACA,QACI,KAAK,YAAY,EAAE,EACnB,KAAK,MAAQA,EAAM,eACnB,KAAK,oBAAoBxD,CAAE,CAE3C,CACI,CAGA,oBAAoBA,EAAI,CACpB,OAAQA,EAAE,CACN,KAAKjiE,EAAE,MACP,KAAKA,EAAE,UACP,KAAKA,EAAE,WACP,KAAKA,EAAE,UACP,KAAKA,EAAE,QACP,KAAKA,EAAE,kBACP,KAAKA,EAAE,IAAK,CACR,KAAK,eAAc,EACnB,KAAK,MAAQylE,EAAM,qBACnB,KAAK,yBAAyBxD,CAAE,EAChC,KACJ,CACA,KAAKjiE,EAAE,YAAa,CAChB,KAAK,eAAc,EACnB,KAAK,MAAQylE,EAAM,uBACnB,KACJ,CACA,KAAKzlE,EAAE,eACP,KAAKA,EAAE,WACP,KAAKA,EAAE,eAAgB,CACnB,KAAK,KAAKwiE,GAAI,kCAAkC,EAChD,KAAK,YAAY,MAAQ,OAAO,cAAcP,CAAE,EAChD,KACJ,CACA,KAAKjiE,EAAE,KAAM,CACT,KAAK,KAAKwiE,GAAI,uBAAuB,EACrC,KAAK,YAAY,MAAQX,GACzB,KACJ,CACA,QACI,KAAK,YAAY,MAAQ,OAAO,cAAc+D,GAAa3D,CAAE,EAAI8D,GAAa9D,CAAE,EAAIA,CAAE,CAEtG,CACI,CAGA,yBAAyBA,EAAI,CACzB,OAAQA,EAAE,CACN,KAAKjiE,EAAE,MACP,KAAKA,EAAE,UACP,KAAKA,EAAE,WACP,KAAKA,EAAE,UAEH,MAEJ,KAAKA,EAAE,QAAS,CACZ,KAAK,MAAQylE,EAAM,uBACnB,KACJ,CACA,KAAKzlE,EAAE,YAAa,CAChB,KAAK,MAAQylE,EAAM,uBACnB,KACJ,CACA,KAAKzlE,EAAE,kBAAmB,CACtB,KAAK,MAAQylE,EAAM,KACnB,KAAK,oBAAmB,EACxB,KACJ,CACA,KAAKzlE,EAAE,IAAK,CACR,KAAK,KAAKwiE,GAAI,QAAQ,EACtB,KAAK,cAAa,EAClB,KACJ,CACA,QACI,KAAK,YAAY,EAAE,EACnB,KAAK,MAAQiD,EAAM,eACnB,KAAK,oBAAoBxD,CAAE,CAE3C,CACI,CAGA,2BAA2BA,EAAI,CAC3B,OAAQA,EAAE,CACN,KAAKjiE,EAAE,MACP,KAAKA,EAAE,UACP,KAAKA,EAAE,WACP,KAAKA,EAAE,UAEH,MAEJ,KAAKA,EAAE,eAAgB,CACnB,KAAK,MAAQylE,EAAM,8BACnB,KACJ,CACA,KAAKzlE,EAAE,WAAY,CACf,KAAK,MAAQylE,EAAM,8BACnB,KACJ,CACA,KAAKzlE,EAAE,kBAAmB,CACtB,KAAK,KAAKwiE,GAAI,qBAAqB,EACnC,KAAK,MAAQiD,EAAM,KACnB,KAAK,oBAAmB,EACxB,KACJ,CACA,QACI,KAAK,MAAQA,EAAM,yBACnB,KAAK,6BAA6BxD,CAAE,CAEpD,CACI,CAGA,iCAAiCA,EAAI,CACjC,OAAQA,EAAE,CACN,KAAKjiE,EAAE,eAAgB,CACnB,KAAK,MAAQylE,EAAM,6BACnB,KACJ,CACA,KAAKzlE,EAAE,UAAW,CACd,KAAK,yBAAwB,EAC7B,KACJ,CACA,KAAKA,EAAE,KAAM,CACT,KAAK,KAAKwiE,GAAI,uBAAuB,EACrC,KAAK,YAAY,OAASX,GAC1B,KACJ,CACA,KAAK7hE,EAAE,IAAK,CACR,KAAK,KAAKwiE,GAAI,QAAQ,EACtB,KAAK,cAAa,EAClB,KACJ,CACA,QACI,KAAK,YAAY,OAAS,OAAO,cAAcP,CAAE,CAEjE,CACI,CAGA,iCAAiCA,EAAI,CACjC,OAAQA,EAAE,CACN,KAAKjiE,EAAE,WAAY,CACf,KAAK,MAAQylE,EAAM,6BACnB,KACJ,CACA,KAAKzlE,EAAE,UAAW,CACd,KAAK,yBAAwB,EAC7B,KACJ,CACA,KAAKA,EAAE,KAAM,CACT,KAAK,KAAKwiE,GAAI,uBAAuB,EACrC,KAAK,YAAY,OAASX,GAC1B,KACJ,CACA,KAAK7hE,EAAE,IAAK,CACR,KAAK,KAAKwiE,GAAI,QAAQ,EACtB,KAAK,cAAa,EAClB,KACJ,CACA,QACI,KAAK,YAAY,OAAS,OAAO,cAAcP,CAAE,CAEjE,CACI,CAGA,6BAA6BA,EAAI,CAC7B,OAAQA,EAAE,CACN,KAAKjiE,EAAE,MACP,KAAKA,EAAE,UACP,KAAKA,EAAE,WACP,KAAKA,EAAE,UAAW,CACd,KAAK,gBAAe,EACpB,KAAK,MAAQylE,EAAM,sBACnB,KACJ,CACA,KAAKzlE,EAAE,UAAW,CACd,KAAK,yBAAwB,EAC7B,KACJ,CACA,KAAKA,EAAE,kBAAmB,CACtB,KAAK,gBAAe,EACpB,KAAK,MAAQylE,EAAM,KACnB,KAAK,oBAAmB,EACxB,KACJ,CACA,KAAKzlE,EAAE,KAAM,CACT,KAAK,KAAKwiE,GAAI,uBAAuB,EACrC,KAAK,YAAY,OAASX,GAC1B,KACJ,CACA,KAAK7hE,EAAE,eACP,KAAKA,EAAE,WACP,KAAKA,EAAE,eACP,KAAKA,EAAE,YACP,KAAKA,EAAE,aAAc,CACjB,KAAK,KAAKwiE,GAAI,2CAA2C,EACzD,KAAK,YAAY,OAAS,OAAO,cAAcP,CAAE,EACjD,KACJ,CACA,KAAKjiE,EAAE,IAAK,CACR,KAAK,KAAKwiE,GAAI,QAAQ,EACtB,KAAK,cAAa,EAClB,KACJ,CACA,QACI,KAAK,YAAY,OAAS,OAAO,cAAcP,CAAE,CAEjE,CACI,CAGA,gCAAgCA,EAAI,CAChC,OAAQA,EAAE,CACN,KAAKjiE,EAAE,MACP,KAAKA,EAAE,UACP,KAAKA,EAAE,WACP,KAAKA,EAAE,UAAW,CACd,KAAK,gBAAe,EACpB,KAAK,MAAQylE,EAAM,sBACnB,KACJ,CACA,KAAKzlE,EAAE,QAAS,CACZ,KAAK,gBAAe,EACpB,KAAK,MAAQylE,EAAM,uBACnB,KACJ,CACA,KAAKzlE,EAAE,kBAAmB,CACtB,KAAK,gBAAe,EACpB,KAAK,MAAQylE,EAAM,KACnB,KAAK,oBAAmB,EACxB,KACJ,CACA,KAAKzlE,EAAE,IAAK,CACR,KAAK,KAAKwiE,GAAI,QAAQ,EACtB,KAAK,cAAa,EAClB,KACJ,CACA,QACI,KAAK,KAAKA,GAAI,kCAAkC,EAChD,KAAK,MAAQiD,EAAM,sBACnB,KAAK,0BAA0BxD,CAAE,CAEjD,CACI,CAGA,0BAA0BA,EAAI,CAC1B,OAAQA,EAAE,CACN,KAAKjiE,EAAE,kBAAmB,CACtB,MAAMtyL,EAAQ,KAAK,aACnBA,EAAM,YAAc,GACpB,KAAK,MAAQ+3P,EAAM,KACnB,KAAK,oBAAmB,EACxB,KACJ,CACA,KAAKzlE,EAAE,IAAK,CACR,KAAK,KAAKwiE,GAAI,QAAQ,EACtB,KAAK,cAAa,EAClB,KACJ,CACA,QACI,KAAK,KAAKA,GAAI,sBAAsB,EACpC,KAAK,MAAQiD,EAAM,sBACnB,KAAK,0BAA0BxD,CAAE,CAEjD,CACI,CAGA,mBAAmBA,EAAI,CACnB,MAAMv0P,EAAQ,KAAK,aACnB,OAAQu0P,EAAE,CACN,KAAKjiE,EAAE,kBAAmB,CACtB,KAAK,MAAQylE,EAAM,KACnB,KAAK,mBAAmB/3P,CAAK,EAC7B,KACJ,CACA,KAAKsyL,EAAE,IAAK,CACR,KAAK,mBAAmBtyL,CAAK,EAC7B,KAAK,cAAa,EAClB,KACJ,CACA,KAAKsyL,EAAE,KAAM,CACT,KAAK,KAAKwiE,GAAI,uBAAuB,EACrC90P,EAAM,MAAQm0P,GACd,KACJ,CACA,QACIn0P,EAAM,MAAQ,OAAO,cAAcu0P,CAAE,CAErD,CACI,CAGA,4BAA4BA,EAAI,CACxB,KAAK,wBAAwB2E,GAAG,UAAW,EAAI,GAC/C,KAAK,oBAAoBA,GAAG,UAAU,OAAS,CAAC,EAChD,KAAK,MAAQnB,EAAM,eAEd,KAAK,wBAAwBmB,GAAG,QAAS,EAAK,GAEnD,KAAK,gBAAkB,KAAK,mBAAmBA,GAAG,QAAQ,OAAS,CAAC,EACpE,KAAK,MAAQnB,EAAM,SAEd,KAAK,wBAAwBmB,GAAG,YAAa,EAAI,EAClD,KAAK,cACL,KAAK,MAAQnB,EAAM,eAGnB,KAAK,KAAKjD,GAAI,kBAAkB,EAChC,KAAK,oBAAoBoE,GAAG,YAAY,OAAS,CAAC,EAClD,KAAK,aAAa,KAAO,UACzB,KAAK,MAAQnB,EAAM,eAKjB,KAAK,uBACX,KAAK,KAAKjD,GAAI,wBAAwB,EACtC,KAAK,oBAAoB,CAAC,EAC1B,KAAK,MAAQiD,EAAM,cACnB,KAAK,mBAAmBxD,CAAE,EAElC,CAGA,mBAAmBA,EAAI,CACnB,OAAQA,EAAE,CACN,KAAKjiE,EAAE,aAAc,CACjB,KAAK,MAAQylE,EAAM,mBACnB,KACJ,CACA,KAAKzlE,EAAE,kBAAmB,CACtB,KAAK,KAAKwiE,GAAI,2BAA2B,EACzC,KAAK,MAAQiD,EAAM,KACnB,MAAM/3P,EAAQ,KAAK,aACnB,KAAK,mBAAmBA,CAAK,EAC7B,KACJ,CACA,QACI,KAAK,MAAQ+3P,EAAM,QACnB,KAAK,cAAcxD,CAAE,CAErC,CACI,CAGA,uBAAuBA,EAAI,CACvB,MAAMv0P,EAAQ,KAAK,aACnB,OAAQu0P,EAAE,CACN,KAAKjiE,EAAE,aAAc,CACjB,KAAK,MAAQylE,EAAM,YACnB,KACJ,CACA,KAAKzlE,EAAE,kBAAmB,CACtB,KAAK,KAAKwiE,GAAI,2BAA2B,EACzC,KAAK,MAAQiD,EAAM,KACnB,KAAK,mBAAmB/3P,CAAK,EAC7B,KACJ,CACA,KAAKsyL,EAAE,IAAK,CACR,KAAK,KAAKwiE,GAAI,YAAY,EAC1B,KAAK,mBAAmB90P,CAAK,EAC7B,KAAK,cAAa,EAClB,KACJ,CACA,QACIA,EAAM,MAAQ,IACd,KAAK,MAAQ+3P,EAAM,QACnB,KAAK,cAAcxD,CAAE,CAErC,CACI,CAGA,cAAcA,EAAI,CACd,MAAMv0P,EAAQ,KAAK,aACnB,OAAQu0P,EAAE,CACN,KAAKjiE,EAAE,aAAc,CACjB,KAAK,MAAQylE,EAAM,iBACnB,KACJ,CACA,KAAKzlE,EAAE,eAAgB,CACnBtyL,EAAM,MAAQ,IACd,KAAK,MAAQ+3P,EAAM,uBACnB,KACJ,CACA,KAAKzlE,EAAE,KAAM,CACT,KAAK,KAAKwiE,GAAI,uBAAuB,EACrC90P,EAAM,MAAQm0P,GACd,KACJ,CACA,KAAK7hE,EAAE,IAAK,CACR,KAAK,KAAKwiE,GAAI,YAAY,EAC1B,KAAK,mBAAmB90P,CAAK,EAC7B,KAAK,cAAa,EAClB,KACJ,CACA,QACIA,EAAM,MAAQ,OAAO,cAAcu0P,CAAE,CAErD,CACI,CAGA,0BAA0BA,EAAI,CAC1B,MAAMv0P,EAAQ,KAAK,aACnB,OAAQu0P,EAAE,CACN,KAAKjiE,EAAE,iBAAkB,CACrBtyL,EAAM,MAAQ,IACd,KAAK,MAAQ+3P,EAAM,4BACnB,KACJ,CACA,KAAKzlE,EAAE,eAAgB,CACnBtyL,EAAM,MAAQ,IACd,KACJ,CACA,QACI,KAAK,MAAQ+3P,EAAM,QACnB,KAAK,cAAcxD,CAAE,CAErC,CACI,CAGA,8BAA8BA,EAAI,CAC1BA,IAAOjiE,EAAE,aACT,KAAK,MAAQylE,EAAM,kCAGnB,KAAK,MAAQA,EAAM,QACnB,KAAK,cAAcxD,CAAE,EAE7B,CAGA,kCAAkCA,EAAI,CAC9BA,IAAOjiE,EAAE,aACT,KAAK,MAAQylE,EAAM,uCAGnB,KAAK,MAAQA,EAAM,iBACnB,KAAK,qBAAqBxD,CAAE,EAEpC,CAGA,sCAAsCA,EAAI,CAClCA,IAAOjiE,EAAE,mBAAqBiiE,IAAOjiE,EAAE,KACvC,KAAK,KAAKwiE,GAAI,aAAa,EAE/B,KAAK,MAAQiD,EAAM,YACnB,KAAK,iBAAiBxD,CAAE,CAC5B,CAGA,qBAAqBA,EAAI,CACrB,MAAMv0P,EAAQ,KAAK,aACnB,OAAQu0P,EAAE,CACN,KAAKjiE,EAAE,aAAc,CACjB,KAAK,MAAQylE,EAAM,YACnB,KACJ,CACA,KAAKzlE,EAAE,IAAK,CACR,KAAK,KAAKwiE,GAAI,YAAY,EAC1B,KAAK,mBAAmB90P,CAAK,EAC7B,KAAK,cAAa,EAClB,KACJ,CACA,QACIA,EAAM,MAAQ,IACd,KAAK,MAAQ+3P,EAAM,QACnB,KAAK,cAAcxD,CAAE,CAErC,CACI,CAGA,iBAAiBA,EAAI,CACjB,MAAMv0P,EAAQ,KAAK,aACnB,OAAQu0P,EAAE,CACN,KAAKjiE,EAAE,kBAAmB,CACtB,KAAK,MAAQylE,EAAM,KACnB,KAAK,mBAAmB/3P,CAAK,EAC7B,KACJ,CACA,KAAKsyL,EAAE,iBAAkB,CACrB,KAAK,MAAQylE,EAAM,iBACnB,KACJ,CACA,KAAKzlE,EAAE,aAAc,CACjBtyL,EAAM,MAAQ,IACd,KACJ,CACA,KAAKsyL,EAAE,IAAK,CACR,KAAK,KAAKwiE,GAAI,YAAY,EAC1B,KAAK,mBAAmB90P,CAAK,EAC7B,KAAK,cAAa,EAClB,KACJ,CACA,QACIA,EAAM,MAAQ,KACd,KAAK,MAAQ+3P,EAAM,QACnB,KAAK,cAAcxD,CAAE,CAErC,CACI,CAGA,qBAAqBA,EAAI,CACrB,MAAMv0P,EAAQ,KAAK,aACnB,OAAQu0P,EAAE,CACN,KAAKjiE,EAAE,aAAc,CACjBtyL,EAAM,MAAQ,MACd,KAAK,MAAQ+3P,EAAM,iBACnB,KACJ,CACA,KAAKzlE,EAAE,kBAAmB,CACtB,KAAK,KAAKwiE,GAAI,wBAAwB,EACtC,KAAK,MAAQiD,EAAM,KACnB,KAAK,mBAAmB/3P,CAAK,EAC7B,KACJ,CACA,KAAKsyL,EAAE,IAAK,CACR,KAAK,KAAKwiE,GAAI,YAAY,EAC1B,KAAK,mBAAmB90P,CAAK,EAC7B,KAAK,cAAa,EAClB,KACJ,CACA,QACIA,EAAM,MAAQ,MACd,KAAK,MAAQ+3P,EAAM,QACnB,KAAK,cAAcxD,CAAE,CAErC,CACI,CAGA,cAAcA,EAAI,CACd,OAAQA,EAAE,CACN,KAAKjiE,EAAE,MACP,KAAKA,EAAE,UACP,KAAKA,EAAE,WACP,KAAKA,EAAE,UAAW,CACd,KAAK,MAAQylE,EAAM,oBACnB,KACJ,CACA,KAAKzlE,EAAE,kBAAmB,CACtB,KAAK,MAAQylE,EAAM,oBACnB,KAAK,wBAAwBxD,CAAE,EAC/B,KACJ,CACA,KAAKjiE,EAAE,IAAK,CACR,KAAK,KAAKwiE,GAAI,YAAY,EAC1B,KAAK,oBAAoB,IAAI,EAC7B,MAAM90P,EAAQ,KAAK,aACnBA,EAAM,YAAc,GACpB,KAAK,mBAAmBA,CAAK,EAC7B,KAAK,cAAa,EAClB,KACJ,CACA,QACI,KAAK,KAAK80P,GAAI,kCAAkC,EAChD,KAAK,MAAQiD,EAAM,oBACnB,KAAK,wBAAwBxD,CAAE,CAE/C,CACI,CAGA,wBAAwBA,EAAI,CACxB,GAAI2D,GAAa3D,CAAE,EACf,KAAK,oBAAoB,OAAO,aAAa8D,GAAa9D,CAAE,CAAC,CAAC,EAC9D,KAAK,MAAQwD,EAAM,iBAGnB,QAAQxD,EAAE,CACN,KAAKjiE,EAAE,MACP,KAAKA,EAAE,UACP,KAAKA,EAAE,WACP,KAAKA,EAAE,UAEH,MAEJ,KAAKA,EAAE,KAAM,CACT,KAAK,KAAKwiE,GAAI,uBAAuB,EACrC,KAAK,oBAAoBX,EAAqB,EAC9C,KAAK,MAAQ4D,EAAM,aACnB,KACJ,CACA,KAAKzlE,EAAE,kBAAmB,CACtB,KAAK,KAAKwiE,GAAI,kBAAkB,EAChC,KAAK,oBAAoB,IAAI,EAC7B,MAAM90P,EAAQ,KAAK,aACnBA,EAAM,YAAc,GACpB,KAAK,mBAAmBA,CAAK,EAC7B,KAAK,MAAQ+3P,EAAM,KACnB,KACJ,CACA,KAAKzlE,EAAE,IAAK,CACR,KAAK,KAAKwiE,GAAI,YAAY,EAC1B,KAAK,oBAAoB,IAAI,EAC7B,MAAM90P,EAAQ,KAAK,aACnBA,EAAM,YAAc,GACpB,KAAK,mBAAmBA,CAAK,EAC7B,KAAK,cAAa,EAClB,KACJ,CACA,QACI,KAAK,oBAAoB,OAAO,cAAcu0P,CAAE,CAAC,EACjD,KAAK,MAAQwD,EAAM,YAEvC,CACI,CAGA,kBAAkBxD,EAAI,CAClB,MAAMv0P,EAAQ,KAAK,aACnB,OAAQu0P,EAAE,CACN,KAAKjiE,EAAE,MACP,KAAKA,EAAE,UACP,KAAKA,EAAE,WACP,KAAKA,EAAE,UAAW,CACd,KAAK,MAAQylE,EAAM,mBACnB,KACJ,CACA,KAAKzlE,EAAE,kBAAmB,CACtB,KAAK,MAAQylE,EAAM,KACnB,KAAK,mBAAmB/3P,CAAK,EAC7B,KACJ,CACA,KAAKsyL,EAAE,KAAM,CACT,KAAK,KAAKwiE,GAAI,uBAAuB,EACrC90P,EAAM,MAAQm0P,GACd,KACJ,CACA,KAAK7hE,EAAE,IAAK,CACR,KAAK,KAAKwiE,GAAI,YAAY,EAC1B90P,EAAM,YAAc,GACpB,KAAK,mBAAmBA,CAAK,EAC7B,KAAK,cAAa,EAClB,KACJ,CACA,QACIA,EAAM,MAAQ,OAAO,cAAck4P,GAAa3D,CAAE,EAAI8D,GAAa9D,CAAE,EAAIA,CAAE,CAE3F,CACI,CAGA,uBAAuBA,EAAI,CACvB,MAAMv0P,EAAQ,KAAK,aACnB,OAAQu0P,EAAE,CACN,KAAKjiE,EAAE,MACP,KAAKA,EAAE,UACP,KAAKA,EAAE,WACP,KAAKA,EAAE,UAEH,MAEJ,KAAKA,EAAE,kBAAmB,CACtB,KAAK,MAAQylE,EAAM,KACnB,KAAK,mBAAmB/3P,CAAK,EAC7B,KACJ,CACA,KAAKsyL,EAAE,IAAK,CACR,KAAK,KAAKwiE,GAAI,YAAY,EAC1B90P,EAAM,YAAc,GACpB,KAAK,mBAAmBA,CAAK,EAC7B,KAAK,cAAa,EAClB,KACJ,CACA,QACQ,KAAK,wBAAwBk5P,GAAG,OAAQ,EAAK,EAC7C,KAAK,MAAQnB,EAAM,6BAEd,KAAK,wBAAwBmB,GAAG,OAAQ,EAAK,EAClD,KAAK,MAAQnB,EAAM,6BAIb,KAAK,uBACX,KAAK,KAAKjD,GAAI,wCAAwC,EACtD90P,EAAM,YAAc,GACpB,KAAK,MAAQ+3P,EAAM,cACnB,KAAK,mBAAmBxD,CAAE,EAG9C,CACI,CAGA,gCAAgCA,EAAI,CAChC,MAAMv0P,EAAQ,KAAK,aACnB,OAAQu0P,EAAE,CACN,KAAKjiE,EAAE,MACP,KAAKA,EAAE,UACP,KAAKA,EAAE,WACP,KAAKA,EAAE,UAAW,CACd,KAAK,MAAQylE,EAAM,iCACnB,KACJ,CACA,KAAKzlE,EAAE,eAAgB,CACnB,KAAK,KAAKwiE,GAAI,0CAA0C,EACxD90P,EAAM,SAAW,GACjB,KAAK,MAAQ+3P,EAAM,wCACnB,KACJ,CACA,KAAKzlE,EAAE,WAAY,CACf,KAAK,KAAKwiE,GAAI,0CAA0C,EACxD90P,EAAM,SAAW,GACjB,KAAK,MAAQ+3P,EAAM,wCACnB,KACJ,CACA,KAAKzlE,EAAE,kBAAmB,CACtB,KAAK,KAAKwiE,GAAI,8BAA8B,EAC5C90P,EAAM,YAAc,GACpB,KAAK,MAAQ+3P,EAAM,KACnB,KAAK,mBAAmB/3P,CAAK,EAC7B,KACJ,CACA,KAAKsyL,EAAE,IAAK,CACR,KAAK,KAAKwiE,GAAI,YAAY,EAC1B90P,EAAM,YAAc,GACpB,KAAK,mBAAmBA,CAAK,EAC7B,KAAK,cAAa,EAClB,KACJ,CACA,QACI,KAAK,KAAK80P,GAAI,yCAAyC,EACvD90P,EAAM,YAAc,GACpB,KAAK,MAAQ+3P,EAAM,cACnB,KAAK,mBAAmBxD,CAAE,CAE1C,CACI,CAGA,oCAAoCA,EAAI,CACpC,MAAMv0P,EAAQ,KAAK,aACnB,OAAQu0P,EAAE,CACN,KAAKjiE,EAAE,MACP,KAAKA,EAAE,UACP,KAAKA,EAAE,WACP,KAAKA,EAAE,UAEH,MAEJ,KAAKA,EAAE,eAAgB,CACnBtyL,EAAM,SAAW,GACjB,KAAK,MAAQ+3P,EAAM,wCACnB,KACJ,CACA,KAAKzlE,EAAE,WAAY,CACftyL,EAAM,SAAW,GACjB,KAAK,MAAQ+3P,EAAM,wCACnB,KACJ,CACA,KAAKzlE,EAAE,kBAAmB,CACtB,KAAK,KAAKwiE,GAAI,8BAA8B,EAC5C90P,EAAM,YAAc,GACpB,KAAK,MAAQ+3P,EAAM,KACnB,KAAK,mBAAmB/3P,CAAK,EAC7B,KACJ,CACA,KAAKsyL,EAAE,IAAK,CACR,KAAK,KAAKwiE,GAAI,YAAY,EAC1B90P,EAAM,YAAc,GACpB,KAAK,mBAAmBA,CAAK,EAC7B,KAAK,cAAa,EAClB,KACJ,CACA,QACI,KAAK,KAAK80P,GAAI,yCAAyC,EACvD90P,EAAM,YAAc,GACpB,KAAK,MAAQ+3P,EAAM,cACnB,KAAK,mBAAmBxD,CAAE,CAE1C,CACI,CAGA,0CAA0CA,EAAI,CAC1C,MAAMv0P,EAAQ,KAAK,aACnB,OAAQu0P,EAAE,CACN,KAAKjiE,EAAE,eAAgB,CACnB,KAAK,MAAQylE,EAAM,gCACnB,KACJ,CACA,KAAKzlE,EAAE,KAAM,CACT,KAAK,KAAKwiE,GAAI,uBAAuB,EACrC90P,EAAM,UAAYm0P,GAClB,KACJ,CACA,KAAK7hE,EAAE,kBAAmB,CACtB,KAAK,KAAKwiE,GAAI,6BAA6B,EAC3C90P,EAAM,YAAc,GACpB,KAAK,mBAAmBA,CAAK,EAC7B,KAAK,MAAQ+3P,EAAM,KACnB,KACJ,CACA,KAAKzlE,EAAE,IAAK,CACR,KAAK,KAAKwiE,GAAI,YAAY,EAC1B90P,EAAM,YAAc,GACpB,KAAK,mBAAmBA,CAAK,EAC7B,KAAK,cAAa,EAClB,KACJ,CACA,QACIA,EAAM,UAAY,OAAO,cAAcu0P,CAAE,CAEzD,CACI,CAGA,0CAA0CA,EAAI,CAC1C,MAAMv0P,EAAQ,KAAK,aACnB,OAAQu0P,EAAE,CACN,KAAKjiE,EAAE,WAAY,CACf,KAAK,MAAQylE,EAAM,gCACnB,KACJ,CACA,KAAKzlE,EAAE,KAAM,CACT,KAAK,KAAKwiE,GAAI,uBAAuB,EACrC90P,EAAM,UAAYm0P,GAClB,KACJ,CACA,KAAK7hE,EAAE,kBAAmB,CACtB,KAAK,KAAKwiE,GAAI,6BAA6B,EAC3C90P,EAAM,YAAc,GACpB,KAAK,mBAAmBA,CAAK,EAC7B,KAAK,MAAQ+3P,EAAM,KACnB,KACJ,CACA,KAAKzlE,EAAE,IAAK,CACR,KAAK,KAAKwiE,GAAI,YAAY,EAC1B90P,EAAM,YAAc,GACpB,KAAK,mBAAmBA,CAAK,EAC7B,KAAK,cAAa,EAClB,KACJ,CACA,QACIA,EAAM,UAAY,OAAO,cAAcu0P,CAAE,CAEzD,CACI,CAGA,mCAAmCA,EAAI,CACnC,MAAMv0P,EAAQ,KAAK,aACnB,OAAQu0P,EAAE,CACN,KAAKjiE,EAAE,MACP,KAAKA,EAAE,UACP,KAAKA,EAAE,WACP,KAAKA,EAAE,UAAW,CACd,KAAK,MAAQylE,EAAM,8CACnB,KACJ,CACA,KAAKzlE,EAAE,kBAAmB,CACtB,KAAK,MAAQylE,EAAM,KACnB,KAAK,mBAAmB/3P,CAAK,EAC7B,KACJ,CACA,KAAKsyL,EAAE,eAAgB,CACnB,KAAK,KAAKwiE,GAAI,yDAAyD,EACvE90P,EAAM,SAAW,GACjB,KAAK,MAAQ+3P,EAAM,wCACnB,KACJ,CACA,KAAKzlE,EAAE,WAAY,CACf,KAAK,KAAKwiE,GAAI,yDAAyD,EACvE90P,EAAM,SAAW,GACjB,KAAK,MAAQ+3P,EAAM,wCACnB,KACJ,CACA,KAAKzlE,EAAE,IAAK,CACR,KAAK,KAAKwiE,GAAI,YAAY,EAC1B90P,EAAM,YAAc,GACpB,KAAK,mBAAmBA,CAAK,EAC7B,KAAK,cAAa,EAClB,KACJ,CACA,QACI,KAAK,KAAK80P,GAAI,yCAAyC,EACvD90P,EAAM,YAAc,GACpB,KAAK,MAAQ+3P,EAAM,cACnB,KAAK,mBAAmBxD,CAAE,CAE1C,CACI,CAGA,+CAA+CA,EAAI,CAC/C,MAAMv0P,EAAQ,KAAK,aACnB,OAAQu0P,EAAE,CACN,KAAKjiE,EAAE,MACP,KAAKA,EAAE,UACP,KAAKA,EAAE,WACP,KAAKA,EAAE,UAEH,MAEJ,KAAKA,EAAE,kBAAmB,CACtB,KAAK,mBAAmBtyL,CAAK,EAC7B,KAAK,MAAQ+3P,EAAM,KACnB,KACJ,CACA,KAAKzlE,EAAE,eAAgB,CACnBtyL,EAAM,SAAW,GACjB,KAAK,MAAQ+3P,EAAM,wCACnB,KACJ,CACA,KAAKzlE,EAAE,WAAY,CACftyL,EAAM,SAAW,GACjB,KAAK,MAAQ+3P,EAAM,wCACnB,KACJ,CACA,KAAKzlE,EAAE,IAAK,CACR,KAAK,KAAKwiE,GAAI,YAAY,EAC1B90P,EAAM,YAAc,GACpB,KAAK,mBAAmBA,CAAK,EAC7B,KAAK,cAAa,EAClB,KACJ,CACA,QACI,KAAK,KAAK80P,GAAI,yCAAyC,EACvD90P,EAAM,YAAc,GACpB,KAAK,MAAQ+3P,EAAM,cACnB,KAAK,mBAAmBxD,CAAE,CAE1C,CACI,CAGA,gCAAgCA,EAAI,CAChC,MAAMv0P,EAAQ,KAAK,aACnB,OAAQu0P,EAAE,CACN,KAAKjiE,EAAE,MACP,KAAKA,EAAE,UACP,KAAKA,EAAE,WACP,KAAKA,EAAE,UAAW,CACd,KAAK,MAAQylE,EAAM,iCACnB,KACJ,CACA,KAAKzlE,EAAE,eAAgB,CACnB,KAAK,KAAKwiE,GAAI,0CAA0C,EACxD90P,EAAM,SAAW,GACjB,KAAK,MAAQ+3P,EAAM,wCACnB,KACJ,CACA,KAAKzlE,EAAE,WAAY,CACf,KAAK,KAAKwiE,GAAI,0CAA0C,EACxD90P,EAAM,SAAW,GACjB,KAAK,MAAQ+3P,EAAM,wCACnB,KACJ,CACA,KAAKzlE,EAAE,kBAAmB,CACtB,KAAK,KAAKwiE,GAAI,8BAA8B,EAC5C90P,EAAM,YAAc,GACpB,KAAK,MAAQ+3P,EAAM,KACnB,KAAK,mBAAmB/3P,CAAK,EAC7B,KACJ,CACA,KAAKsyL,EAAE,IAAK,CACR,KAAK,KAAKwiE,GAAI,YAAY,EAC1B90P,EAAM,YAAc,GACpB,KAAK,mBAAmBA,CAAK,EAC7B,KAAK,cAAa,EAClB,KACJ,CACA,QACI,KAAK,KAAK80P,GAAI,yCAAyC,EACvD90P,EAAM,YAAc,GACpB,KAAK,MAAQ+3P,EAAM,cACnB,KAAK,mBAAmBxD,CAAE,CAE1C,CACI,CAGA,oCAAoCA,EAAI,CACpC,MAAMv0P,EAAQ,KAAK,aACnB,OAAQu0P,EAAE,CACN,KAAKjiE,EAAE,MACP,KAAKA,EAAE,UACP,KAAKA,EAAE,WACP,KAAKA,EAAE,UAEH,MAEJ,KAAKA,EAAE,eAAgB,CACnBtyL,EAAM,SAAW,GACjB,KAAK,MAAQ+3P,EAAM,wCACnB,KACJ,CACA,KAAKzlE,EAAE,WAAY,CACftyL,EAAM,SAAW,GACjB,KAAK,MAAQ+3P,EAAM,wCACnB,KACJ,CACA,KAAKzlE,EAAE,kBAAmB,CACtB,KAAK,KAAKwiE,GAAI,8BAA8B,EAC5C90P,EAAM,YAAc,GACpB,KAAK,MAAQ+3P,EAAM,KACnB,KAAK,mBAAmB/3P,CAAK,EAC7B,KACJ,CACA,KAAKsyL,EAAE,IAAK,CACR,KAAK,KAAKwiE,GAAI,YAAY,EAC1B90P,EAAM,YAAc,GACpB,KAAK,mBAAmBA,CAAK,EAC7B,KAAK,cAAa,EAClB,KACJ,CACA,QACI,KAAK,KAAK80P,GAAI,yCAAyC,EACvD90P,EAAM,YAAc,GACpB,KAAK,MAAQ+3P,EAAM,cACnB,KAAK,mBAAmBxD,CAAE,CAE1C,CACI,CAGA,0CAA0CA,EAAI,CAC1C,MAAMv0P,EAAQ,KAAK,aACnB,OAAQu0P,EAAE,CACN,KAAKjiE,EAAE,eAAgB,CACnB,KAAK,MAAQylE,EAAM,gCACnB,KACJ,CACA,KAAKzlE,EAAE,KAAM,CACT,KAAK,KAAKwiE,GAAI,uBAAuB,EACrC90P,EAAM,UAAYm0P,GAClB,KACJ,CACA,KAAK7hE,EAAE,kBAAmB,CACtB,KAAK,KAAKwiE,GAAI,6BAA6B,EAC3C90P,EAAM,YAAc,GACpB,KAAK,mBAAmBA,CAAK,EAC7B,KAAK,MAAQ+3P,EAAM,KACnB,KACJ,CACA,KAAKzlE,EAAE,IAAK,CACR,KAAK,KAAKwiE,GAAI,YAAY,EAC1B90P,EAAM,YAAc,GACpB,KAAK,mBAAmBA,CAAK,EAC7B,KAAK,cAAa,EAClB,KACJ,CACA,QACIA,EAAM,UAAY,OAAO,cAAcu0P,CAAE,CAEzD,CACI,CAGA,0CAA0CA,EAAI,CAC1C,MAAMv0P,EAAQ,KAAK,aACnB,OAAQu0P,EAAE,CACN,KAAKjiE,EAAE,WAAY,CACf,KAAK,MAAQylE,EAAM,gCACnB,KACJ,CACA,KAAKzlE,EAAE,KAAM,CACT,KAAK,KAAKwiE,GAAI,uBAAuB,EACrC90P,EAAM,UAAYm0P,GAClB,KACJ,CACA,KAAK7hE,EAAE,kBAAmB,CACtB,KAAK,KAAKwiE,GAAI,6BAA6B,EAC3C90P,EAAM,YAAc,GACpB,KAAK,mBAAmBA,CAAK,EAC7B,KAAK,MAAQ+3P,EAAM,KACnB,KACJ,CACA,KAAKzlE,EAAE,IAAK,CACR,KAAK,KAAKwiE,GAAI,YAAY,EAC1B90P,EAAM,YAAc,GACpB,KAAK,mBAAmBA,CAAK,EAC7B,KAAK,cAAa,EAClB,KACJ,CACA,QACIA,EAAM,UAAY,OAAO,cAAcu0P,CAAE,CAEzD,CACI,CAGA,mCAAmCA,EAAI,CACnC,MAAMv0P,EAAQ,KAAK,aACnB,OAAQu0P,EAAE,CACN,KAAKjiE,EAAE,MACP,KAAKA,EAAE,UACP,KAAKA,EAAE,WACP,KAAKA,EAAE,UAEH,MAEJ,KAAKA,EAAE,kBAAmB,CACtB,KAAK,mBAAmBtyL,CAAK,EAC7B,KAAK,MAAQ+3P,EAAM,KACnB,KACJ,CACA,KAAKzlE,EAAE,IAAK,CACR,KAAK,KAAKwiE,GAAI,YAAY,EAC1B90P,EAAM,YAAc,GACpB,KAAK,mBAAmBA,CAAK,EAC7B,KAAK,cAAa,EAClB,KACJ,CACA,QACI,KAAK,KAAK80P,GAAI,+CAA+C,EAC7D,KAAK,MAAQiD,EAAM,cACnB,KAAK,mBAAmBxD,CAAE,CAE1C,CACI,CAGA,mBAAmBA,EAAI,CACnB,MAAMv0P,EAAQ,KAAK,aACnB,OAAQu0P,EAAE,CACN,KAAKjiE,EAAE,kBAAmB,CACtB,KAAK,mBAAmBtyL,CAAK,EAC7B,KAAK,MAAQ+3P,EAAM,KACnB,KACJ,CACA,KAAKzlE,EAAE,KAAM,CACT,KAAK,KAAKwiE,GAAI,uBAAuB,EACrC,KACJ,CACA,KAAKxiE,EAAE,IAAK,CACR,KAAK,mBAAmBtyL,CAAK,EAC7B,KAAK,cAAa,EAClB,KACJ,CAGZ,CACI,CAGA,mBAAmBu0P,EAAI,CACnB,OAAQA,EAAE,CACN,KAAKjiE,EAAE,qBAAsB,CACzB,KAAK,MAAQylE,EAAM,sBACnB,KACJ,CACA,KAAKzlE,EAAE,IAAK,CACR,KAAK,KAAKwiE,GAAI,UAAU,EACxB,KAAK,cAAa,EAClB,KACJ,CACA,QACI,KAAK,eAAeP,CAAE,CAEtC,CACI,CAGA,0BAA0BA,EAAI,CACtBA,IAAOjiE,EAAE,qBACT,KAAK,MAAQylE,EAAM,mBAGnB,KAAK,WAAW,GAAG,EACnB,KAAK,MAAQA,EAAM,cACnB,KAAK,mBAAmBxD,CAAE,EAElC,CAGA,sBAAsBA,EAAI,CACtB,OAAQA,EAAE,CACN,KAAKjiE,EAAE,kBAAmB,CACtB,KAAK,MAAQylE,EAAM,KACnB,KACJ,CACA,KAAKzlE,EAAE,qBAAsB,CACzB,KAAK,WAAW,GAAG,EACnB,KACJ,CACA,QACI,KAAK,WAAW,IAAI,EACpB,KAAK,MAAQylE,EAAM,cACnB,KAAK,mBAAmBxD,CAAE,CAE1C,CACI,CAGA,0BAA2B,CACvB,IAAIxrP,EAAS,KAAK,cAAc,MAAM,KAAK,aAAa,KAAM,KAAK,aAAa,GAAG,EACnF,GAAIA,EAAS,EACT,GAAI,KAAK,aAAa,iBAClBA,EAAS,KAAK,cAAc,IAAG,MAE9B,CAED,KAAK,OAAS,GAEd,KAAK,aAAa,IAAM,KAAK,aAAa,KAAK,OAAS,EACxD,KAAK,sBAAwB,EAC7B,KAAK,aAAa,cAAgB,GAClC,MACJ,CAEAA,IAAW,GAGX,KAAK,aAAa,IAAM,KAAK,eAC7B,KAAK,4CAA4CupL,EAAE,SAAS,EAC5D,KAAK,MACD,CAAC,KAAK,oCAAsC4jE,GAAoB,KAAK,aAAa,KAAK,CAAC,CAAC,EACnF6B,EAAM,oBACN,KAAK,aAIf,KAAK,MAAQ,KAAK,WAE1B,CAGA,yBAAyBxD,EAAI,CACrB2B,GAAoB3B,CAAE,EACtB,KAAK,4CAA4CA,CAAE,GAG/CA,IAAOjiE,EAAE,WACT,KAAK,KAAKwiE,GAAI,8BAA8B,EAEhD,KAAK,MAAQ,KAAK,YAClB,KAAK,WAAWP,CAAE,EAE1B,CACJ,CCnpFA,MAAM4E,GAA4B,IAAI,IAAI,CAAC7mE,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,SAAUA,EAAE,OAAQA,EAAE,EAAGA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAG,CAAC,EAC1G8mE,GAAuC,IAAI,IAAI,CACjD,GAAGD,GACH7mE,EAAE,QACFA,EAAE,SACFA,EAAE,MACFA,EAAE,GACFA,EAAE,MACFA,EAAE,GACFA,EAAE,MACFA,EAAE,EACN,CAAC,EACK+mE,GAAwB,IAAI,IAAI,CAClC/mE,EAAE,OACFA,EAAE,QACFA,EAAE,KACFA,EAAE,QACFA,EAAE,OACFA,EAAE,MACFA,EAAE,GACFA,EAAE,SACFA,EAAE,EACN,CAAC,EACKgnE,GAA6B,IAAI,IAAI,CAAC,GAAGD,GAAuB/mE,EAAE,GAAIA,EAAE,EAAE,CAAC,EAC3EinE,GAA+B,IAAI,IAAI,CAAC,GAAGF,GAAuB/mE,EAAE,MAAM,CAAC,EAC3EknE,GAA0B,IAAI,IAAI,CAAClnE,EAAE,eAAgBA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,KAAK,CAAC,EACrFmnE,GAAuB,IAAI,IAAI,CAACnnE,EAAE,KAAMA,EAAE,eAAgBA,EAAE,KAAK,CAAC,EAClEonE,GAAoB,IAAI,IAAI,CAACpnE,EAAE,GAAIA,EAAE,SAAUA,EAAE,IAAI,CAAC,EACtDqnE,GAAqB,IAAI,IAAI,CAACrnE,EAAE,MAAOA,EAAE,MAAOA,EAAE,MAAOA,EAAE,SAAUA,EAAE,IAAI,CAAC,EAC5EsnE,GAAgB,IAAI,IAAI,CAACtnE,EAAE,MAAOA,EAAE,SAAUA,EAAE,IAAI,CAAC,EACrDunE,GAAc,IAAI,IAAI,CAACvnE,EAAE,GAAIA,EAAE,EAAE,CAAC,EAEjC,MAAMwnE,EAAiB,CAC1B,IAAI,0BAA2B,CAC3B,OAAO,KAAK,cAAa,EAAK,KAAK,YAAY,mBAAmB,KAAK,OAAO,EAAI,KAAK,OAC3F,CACA,YAAYv/B,EAAUw/B,EAAaxuI,EAAS,CACxC,KAAK,YAAcwuI,EACnB,KAAK,QAAUxuI,EACf,KAAK,MAAQ,CAAA,EACb,KAAK,OAAS,CAAA,EACd,KAAK,SAAW,GAChB,KAAK,UAAY,EACjB,KAAK,aAAe+mE,EAAE,QACtB,KAAK,QAAUioC,CACnB,CAEA,SAASnqO,EAAS,CACd,OAAO,KAAK,MAAM,YAAYA,EAAS,KAAK,QAAQ,CACxD,CAEA,eAAgB,CACZ,OAAO,KAAK,eAAiBkiM,EAAE,UAAY,KAAK,YAAY,gBAAgB,KAAK,OAAO,IAAMglE,GAAG,IACrG,CACA,uBAAwB,CACpB,KAAK,QAAU,KAAK,MAAM,KAAK,QAAQ,EACvC,KAAK,aAAe,KAAK,OAAO,KAAK,QAAQ,CACjD,CAEA,KAAKlnQ,EAAS4pQ,EAAO,CACjB,KAAK,WACL,KAAK,MAAM,KAAK,QAAQ,EAAI5pQ,EAC5B,KAAK,QAAUA,EACf,KAAK,OAAO,KAAK,QAAQ,EAAI4pQ,EAC7B,KAAK,aAAeA,EAChB,KAAK,iBACL,KAAK,YAET,KAAK,QAAQ,WAAW5pQ,EAAS4pQ,EAAO,EAAI,CAChD,CACA,KAAM,CACF,MAAMC,EAAS,KAAK,QAChB,KAAK,UAAY,GAAK,KAAK,cAAa,GACxC,KAAK,YAET,KAAK,WACL,KAAK,sBAAqB,EAC1B,KAAK,QAAQ,UAAUA,EAAQ,EAAI,CACvC,CACA,QAAQC,EAAYC,EAAY,CAC5B,MAAM7hN,EAAM,KAAK,SAAS4hN,CAAU,EACpC,KAAK,MAAM5hN,CAAG,EAAI6hN,EACd7hN,IAAQ,KAAK,WACb,KAAK,QAAU6hN,EAEvB,CACA,YAAYC,EAAkBD,EAAYE,EAAc,CACpD,MAAMC,EAAe,KAAK,SAASF,CAAgB,EAAI,EACvD,KAAK,MAAM,OAAOE,EAAc,EAAGH,CAAU,EAC7C,KAAK,OAAO,OAAOG,EAAc,EAAGD,CAAY,EAChD,KAAK,WACDC,IAAiB,KAAK,UACtB,KAAK,sBAAqB,EAE1B,KAAK,SAAW,KAAK,eAAiB,QACtC,KAAK,QAAQ,WAAW,KAAK,QAAS,KAAK,aAAcA,IAAiB,KAAK,QAAQ,CAE/F,CACA,sBAAsBn1B,EAAS,CAC3B,IAAIo1B,EAAY,KAAK,SAAW,EAChC,GACIA,EAAY,KAAK,OAAO,YAAYp1B,EAASo1B,EAAY,CAAC,QACrDA,EAAY,GAAK,KAAK,YAAY,gBAAgB,KAAK,MAAMA,CAAS,CAAC,IAAMjD,GAAG,MACzF,KAAK,gBAAgB,KAAK,IAAIiD,EAAW,CAAC,CAAC,CAC/C,CACA,gBAAgBjiN,EAAK,CACjB,KAAO,KAAK,UAAYA,GAAK,CACzB,MAAM2hN,EAAS,KAAK,QAChB,KAAK,UAAY,GAAK,KAAK,cAAa,IACxC,KAAK,WAAa,GAEtB,KAAK,WACL,KAAK,sBAAqB,EAC1B,KAAK,QAAQ,UAAUA,EAAQ,KAAK,SAAW3hN,CAAG,CACtD,CACJ,CACA,sBAAsBloD,EAAS,CAC3B,MAAMkoD,EAAM,KAAK,SAASloD,CAAO,EACjC,KAAK,gBAAgB,KAAK,IAAIkoD,EAAK,CAAC,CAAC,CACzC,CACA,eAAekiN,EAAUC,EAAU,CAC/B,MAAMniN,EAAM,KAAK,iBAAiBkiN,EAAUC,CAAQ,EACpD,KAAK,gBAAgB,KAAK,IAAIniN,EAAK,CAAC,CAAC,CACzC,CACA,8BAA+B,CAC3B,KAAK,eAAew/M,GAAkBR,GAAG,IAAI,CACjD,CACA,yBAA0B,CACtB,KAAK,eAAeuC,GAAavC,GAAG,IAAI,CAC5C,CACA,uBAAwB,CAGpB,KAAK,UAAY,EACjB,KAAK,gBAAgB,CAAC,CAC1B,CACA,iBAAiBkD,EAAU/tR,EAAW,CAClC,QAASvD,EAAI,KAAK,SAAUA,GAAK,EAAGA,IAChC,GAAIsxR,EAAS,IAAI,KAAK,OAAOtxR,CAAC,CAAC,GAAK,KAAK,YAAY,gBAAgB,KAAK,MAAMA,CAAC,CAAC,IAAMuD,EACpF,OAAOvD,EAGf,MAAO,EACX,CACA,YAAYsxR,EAAUC,EAAU,CAC5B,MAAMniN,EAAM,KAAK,iBAAiBkiN,EAAUC,CAAQ,EACpD,KAAK,gBAAgBniN,EAAM,CAAC,CAChC,CACA,yBAA0B,CACtB,KAAK,YAAYshN,GAAetC,GAAG,IAAI,CAC3C,CACA,6BAA8B,CAC1B,KAAK,YAAYqC,GAAoBrC,GAAG,IAAI,CAChD,CACA,4BAA6B,CACzB,KAAK,YAAYoC,GAAmBpC,GAAG,IAAI,CAC/C,CACA,OAAOlnQ,EAAS,CACZ,MAAMkoD,EAAM,KAAK,SAASloD,CAAO,EAC7BkoD,GAAO,IACHA,IAAQ,KAAK,SACb,KAAK,IAAG,GAGR,KAAK,MAAM,OAAOA,EAAK,CAAC,EACxB,KAAK,OAAO,OAAOA,EAAK,CAAC,EACzB,KAAK,WACL,KAAK,sBAAqB,EAC1B,KAAK,QAAQ,UAAUloD,EAAS,EAAK,GAGjD,CAEA,kCAAmC,CAE/B,OAAO,KAAK,UAAY,GAAK,KAAK,OAAO,CAAC,IAAMkiM,EAAE,KAAO,KAAK,MAAM,CAAC,EAAI,IAC7E,CACA,SAASliM,EAAS,CACd,OAAO,KAAK,SAASA,CAAO,EAAI,EACpC,CACA,kBAAkBA,EAAS,CACvB,MAAMsqQ,EAAa,KAAK,SAAStqQ,CAAO,EAAI,EAC5C,OAAOsqQ,GAAc,EAAI,KAAK,MAAMA,CAAU,EAAI,IACtD,CACA,0BAA2B,CACvB,OAAO,KAAK,WAAa,GAAK,KAAK,OAAO,CAAC,IAAMpoE,EAAE,IACvD,CAEA,kBAAkB6yC,EAASw1B,EAAW,CAClC,QAASzxR,EAAI,KAAK,SAAUA,GAAK,EAAGA,IAAK,CACrC,MAAM0xR,EAAK,KAAK,OAAO1xR,CAAC,EACxB,OAAQ,KAAK,YAAY,gBAAgB,KAAK,MAAMA,CAAC,CAAC,EAAC,CACnD,KAAKouR,GAAG,KAAM,CACV,GAAIsD,IAAOz1B,EACP,MAAO,GACX,GAAIw1B,EAAU,IAAIC,CAAE,EAChB,MAAO,GACX,KACJ,CACA,KAAKtD,GAAG,IAAK,CACT,GAAImC,GAAqB,IAAImB,CAAE,EAC3B,MAAO,GACX,KACJ,CACA,KAAKtD,GAAG,OAAQ,CACZ,GAAIkC,GAAwB,IAAIoB,CAAE,EAC9B,MAAO,GACX,KACJ,CAChB,CACQ,CACA,MAAO,EACX,CACA,WAAWz1B,EAAS,CAChB,OAAO,KAAK,kBAAkBA,EAASk0B,EAAqB,CAChE,CACA,mBAAmBl0B,EAAS,CACxB,OAAO,KAAK,kBAAkBA,EAASm0B,EAA0B,CACrE,CACA,iBAAiBn0B,EAAS,CACtB,OAAO,KAAK,kBAAkBA,EAASo0B,EAA4B,CACvE,CACA,0BAA2B,CACvB,QAASrwR,EAAI,KAAK,SAAUA,GAAK,EAAGA,IAAK,CACrC,MAAM0xR,EAAK,KAAK,OAAO1xR,CAAC,EACxB,OAAQ,KAAK,YAAY,gBAAgB,KAAK,MAAMA,CAAC,CAAC,EAAC,CACnD,KAAKouR,GAAG,KAAM,CACV,GAAIQ,GAAiB,IAAI8C,CAAE,EACvB,MAAO,GACX,GAAIvB,GAAsB,IAAIuB,CAAE,EAC5B,MAAO,GACX,KACJ,CACA,KAAKtD,GAAG,IAAK,CACT,GAAImC,GAAqB,IAAImB,CAAE,EAC3B,MAAO,GACX,KACJ,CACA,KAAKtD,GAAG,OAAQ,CACZ,GAAIkC,GAAwB,IAAIoB,CAAE,EAC9B,MAAO,GACX,KACJ,CAChB,CACQ,CACA,MAAO,EACX,CACA,gBAAgBz1B,EAAS,CACrB,QAASj8P,EAAI,KAAK,SAAUA,GAAK,EAAGA,IAChC,GAAI,KAAK,YAAY,gBAAgB,KAAK,MAAMA,CAAC,CAAC,IAAMouR,GAAG,KAG3D,OAAQ,KAAK,OAAOpuR,CAAC,EAAC,CAClB,KAAKi8P,EACD,MAAO,GAEX,KAAK7yC,EAAE,MACP,KAAKA,EAAE,KACH,MAAO,EAE3B,CAEQ,MAAO,EACX,CACA,iCAAkC,CAC9B,QAASppN,EAAI,KAAK,SAAUA,GAAK,EAAGA,IAChC,GAAI,KAAK,YAAY,gBAAgB,KAAK,MAAMA,CAAC,CAAC,IAAMouR,GAAG,KAG3D,OAAQ,KAAK,OAAOpuR,CAAC,EAAC,CAClB,KAAKopN,EAAE,MACP,KAAKA,EAAE,MACP,KAAKA,EAAE,MACH,MAAO,GAEX,KAAKA,EAAE,MACP,KAAKA,EAAE,KACH,MAAO,EAE3B,CAEQ,MAAO,EACX,CACA,iBAAiB6yC,EAAS,CACtB,QAASj8P,EAAI,KAAK,SAAUA,GAAK,EAAGA,IAChC,GAAI,KAAK,YAAY,gBAAgB,KAAK,MAAMA,CAAC,CAAC,IAAMouR,GAAG,KAG3D,OAAQ,KAAK,OAAOpuR,CAAC,EAAC,CAClB,KAAKi8P,EACD,MAAO,GAEX,KAAK7yC,EAAE,OACP,KAAKA,EAAE,SACH,MAEJ,QACI,MAAO,EAE3B,CAEQ,MAAO,EACX,CAEA,wBAAyB,CACrB,KAAO,KAAK,eAAiB,QAAa6mE,GAA0B,IAAI,KAAK,YAAY,GACrF,KAAK,IAAG,CAEhB,CACA,kCAAmC,CAC/B,KAAO,KAAK,eAAiB,QAAaC,GAAqC,IAAI,KAAK,YAAY,GAChG,KAAK,IAAG,CAEhB,CACA,oCAAoCyB,EAAa,CAC7C,KAAO,KAAK,eAAiB,QACzB,KAAK,eAAiBA,GACtBzB,GAAqC,IAAI,KAAK,YAAY,GAC1D,KAAK,IAAG,CAEhB,CACJ,CClUA,MAAM0B,GAAoB,EACnB,IAAIC,IACV,SAAUA,EAAW,CAClBA,EAAUA,EAAU,OAAY,CAAC,EAAI,SACrCA,EAAUA,EAAU,QAAa,CAAC,EAAI,SAC1C,GAAGA,KAAcA,GAAY,CAAA,EAAG,EAChC,MAAMC,GAAS,CAAE,KAAMD,GAAU,MAAM,EAEhC,MAAME,EAAsB,CAC/B,YAAYlB,EAAa,CACrB,KAAK,YAAcA,EACnB,KAAK,QAAU,CAAA,EACf,KAAK,SAAW,IACpB,CAIA,+BAA+BI,EAAYe,EAAS,CAChD,MAAMC,EAAa,CAAA,EACbC,EAAgBF,EAAQ,OACxBG,EAAY,KAAK,YAAY,WAAWlB,CAAU,EAClDmB,EAAiB,KAAK,YAAY,gBAAgBnB,CAAU,EAClE,QAASjxR,EAAI,EAAGA,EAAI,KAAK,QAAQ,OAAQA,IAAK,CAC1C,MAAMunB,EAAQ,KAAK,QAAQvnB,CAAC,EAC5B,GAAIunB,EAAM,OAASsqQ,GAAU,OACzB,MAEJ,KAAM,CAAE,QAAA3qQ,CAAO,EAAKK,EACpB,GAAI,KAAK,YAAY,WAAWL,CAAO,IAAMirQ,GACzC,KAAK,YAAY,gBAAgBjrQ,CAAO,IAAMkrQ,EAAgB,CAC9D,MAAMC,EAAe,KAAK,YAAY,YAAYnrQ,CAAO,EACrDmrQ,EAAa,SAAWH,GACxBD,EAAW,KAAK,CAAE,IAAKjyR,EAAG,MAAOqyR,EAAc,CAEvD,CACJ,CACA,OAAOJ,CACX,CACA,wBAAwBhB,EAAY,CAChC,GAAI,KAAK,QAAQ,OAASW,GACtB,OACJ,MAAMI,EAAU,KAAK,YAAY,YAAYf,CAAU,EACjDgB,EAAa,KAAK,+BAA+BhB,EAAYe,CAAO,EAC1E,GAAIC,EAAW,OAASL,GACpB,OAEJ,MAAMU,EAAa,IAAI,IAAIN,EAAQ,IAAKO,GAAW,CAACA,EAAO,KAAMA,EAAO,KAAK,CAAC,CAAC,EAC/E,IAAIC,EAAkB,EAEtB,QAASxyR,EAAI,EAAGA,EAAIiyR,EAAW,OAAQjyR,IAAK,CACxC,MAAM6pM,EAAYooF,EAAWjyR,CAAC,EAE1B6pM,EAAU,MAAM,MAAO4oF,GAAUH,EAAW,IAAIG,EAAM,IAAI,IAAMA,EAAM,KAAK,IAC3ED,GAAmB,EACfA,GAAmBZ,IACnB,KAAK,QAAQ,OAAO/nF,EAAU,IAAK,CAAC,EAGhD,CACJ,CAEA,cAAe,CACX,KAAK,QAAQ,QAAQioF,EAAM,CAC/B,CACA,YAAY5qQ,EAAS4P,EAAO,CACxB,KAAK,wBAAwB5P,CAAO,EACpC,KAAK,QAAQ,QAAQ,CACjB,KAAM2qQ,GAAU,QAChB,QAAA3qQ,EACA,MAAA4P,CACZ,CAAS,CACL,CACA,2BAA2B5P,EAAS4P,EAAO,CACvC,MAAM47P,EAAc,KAAK,QAAQ,QAAQ,KAAK,QAAQ,EACtD,KAAK,QAAQ,OAAOA,EAAa,EAAG,CAChC,KAAMb,GAAU,QAChB,QAAA3qQ,EACA,MAAA4P,CACZ,CAAS,CACL,CACA,YAAYvP,EAAO,CACf,MAAM0uP,EAAa,KAAK,QAAQ,QAAQ1uP,CAAK,EACzC0uP,IAAe,IACf,KAAK,QAAQ,OAAOA,EAAY,CAAC,CAEzC,CAMA,mBAAoB,CAChB,MAAM0c,EAAY,KAAK,QAAQ,QAAQb,EAAM,EACzCa,IAAc,GACd,KAAK,QAAQ,OAAS,EAGtB,KAAK,QAAQ,OAAO,EAAGA,EAAY,CAAC,CAE5C,CAEA,kCAAkC12B,EAAS,CACvC,MAAM10O,EAAQ,KAAK,QAAQ,KAAMA,GAAUA,EAAM,OAASsqQ,GAAU,QAAU,KAAK,YAAY,WAAWtqQ,EAAM,OAAO,IAAM00O,CAAO,EACpI,OAAO10O,GAASA,EAAM,OAASsqQ,GAAU,QAAUtqQ,EAAQ,IAC/D,CACA,gBAAgBL,EAAS,CACrB,OAAO,KAAK,QAAQ,KAAMK,GAAUA,EAAM,OAASsqQ,GAAU,SAAWtqQ,EAAM,UAAYL,CAAO,CACrG,CACJ,CC5GO,MAAM0rQ,GAAqB,CAE9B,gBAAiB,CACb,MAAO,CACH,SAAU,YACV,KAAMtE,GAAc,UACpB,WAAY,CAAA,CACxB,CACI,EACA,wBAAyB,CACrB,MAAO,CACH,SAAU,qBACV,WAAY,CAAA,CACxB,CACI,EACA,cAAcryB,EAAS42B,EAAc36P,EAAO,CACxC,MAAO,CACH,SAAU+jO,EACV,QAAAA,EACA,MAAA/jO,EACA,aAAA26P,EACA,WAAY,CAAA,EACZ,WAAY,IACxB,CACI,EACA,kBAAkB30R,EAAM,CACpB,MAAO,CACH,SAAU,WACV,KAAAA,EACA,WAAY,IACxB,CACI,EACA,eAAeE,EAAO,CAClB,MAAO,CACH,SAAU,QACV,MAAAA,EACA,WAAY,IACxB,CACI,EAEA,YAAY60B,EAAYM,EAAS,CAC7BN,EAAW,WAAW,KAAKM,CAAO,EAClCA,EAAQ,WAAaN,CACzB,EACA,aAAaA,EAAYM,EAASu/P,EAAe,CAC7C,MAAM1B,EAAen+P,EAAW,WAAW,QAAQ6/P,CAAa,EAChE7/P,EAAW,WAAW,OAAOm+P,EAAc,EAAG79P,CAAO,EACrDA,EAAQ,WAAaN,CACzB,EACA,mBAAmB8/P,EAAiBC,EAAgB,CAChDD,EAAgB,QAAUC,CAC9B,EACA,mBAAmBD,EAAiB,CAChC,OAAOA,EAAgB,OAC3B,EACA,gBAAgB1hC,EAAUvlP,EAAMmnR,EAAUC,EAAU,CAChD,MAAMC,EAAc9hC,EAAS,WAAW,KAAMpwO,GAASA,EAAK,WAAa,eAAe,EACxF,GAAIkyQ,EACAA,EAAY,KAAOrnR,EACnBqnR,EAAY,SAAWF,EACvBE,EAAY,SAAWD,MAEtB,CACD,MAAMjyQ,EAAO,CACT,SAAU,gBACV,KAAAnV,EACA,SAAAmnR,EACA,SAAAC,EACA,WAAY,IAC5B,EACYN,GAAmB,YAAYvhC,EAAUpwO,CAAI,CACjD,CACJ,EACA,gBAAgBowO,EAAUlhJ,EAAM,CAC5BkhJ,EAAS,KAAOlhJ,CACpB,EACA,gBAAgBkhJ,EAAU,CACtB,OAAOA,EAAS,IACpB,EACA,WAAWpwO,EAAM,CACb,GAAIA,EAAK,WAAY,CACjB,MAAMmuD,EAAMnuD,EAAK,WAAW,WAAW,QAAQA,CAAI,EACnDA,EAAK,WAAW,WAAW,OAAOmuD,EAAK,CAAC,EACxCnuD,EAAK,WAAa,IACtB,CACJ,EACA,WAAWgS,EAAYthB,EAAM,CACzB,GAAIshB,EAAW,WAAW,OAAS,EAAG,CAClC,MAAMmgQ,EAAWngQ,EAAW,WAAWA,EAAW,WAAW,OAAS,CAAC,EACvE,GAAI2/P,GAAmB,WAAWQ,CAAQ,EAAG,CACzCA,EAAS,OAASzhR,EAClB,MACJ,CACJ,CACAihR,GAAmB,YAAY3/P,EAAY2/P,GAAmB,eAAejhR,CAAI,CAAC,CACtF,EACA,iBAAiBshB,EAAYthB,EAAMmhR,EAAe,CAC9C,MAAMM,EAAWngQ,EAAW,WAAWA,EAAW,WAAW,QAAQ6/P,CAAa,EAAI,CAAC,EACnFM,GAAYR,GAAmB,WAAWQ,CAAQ,EAClDA,EAAS,OAASzhR,EAGlBihR,GAAmB,aAAa3/P,EAAY2/P,GAAmB,eAAejhR,CAAI,EAAGmhR,CAAa,CAE1G,EACA,gBAAgBO,EAAWn7P,EAAO,CAC9B,MAAMo7P,EAAoB,IAAI,IAAID,EAAU,MAAM,IAAKj7P,GAASA,EAAK,IAAI,CAAC,EAC1E,QAASj4B,EAAI,EAAGA,EAAI+3B,EAAM,OAAQ/3B,IACzBmzR,EAAkB,IAAIp7P,EAAM/3B,CAAC,EAAE,IAAI,GACpCkzR,EAAU,MAAM,KAAKn7P,EAAM/3B,CAAC,CAAC,CAGzC,EAEA,cAAc8gB,EAAM,CAChB,OAAOA,EAAK,WAAW,CAAC,CAC5B,EACA,cAAcA,EAAM,CAChB,OAAOA,EAAK,UAChB,EACA,cAAcA,EAAM,CAChB,OAAOA,EAAK,UAChB,EACA,YAAYiG,EAAS,CACjB,OAAOA,EAAQ,KACnB,EAEA,WAAWA,EAAS,CAChB,OAAOA,EAAQ,OACnB,EACA,gBAAgBA,EAAS,CACrB,OAAOA,EAAQ,YACnB,EACA,mBAAmBqsQ,EAAU,CACzB,OAAOA,EAAS,KACpB,EACA,sBAAsBC,EAAa,CAC/B,OAAOA,EAAY,IACvB,EACA,wBAAwBL,EAAa,CACjC,OAAOA,EAAY,IACvB,EACA,4BAA4BA,EAAa,CACrC,OAAOA,EAAY,QACvB,EACA,4BAA4BA,EAAa,CACrC,OAAOA,EAAY,QACvB,EAEA,WAAWlyQ,EAAM,CACb,OAAOA,EAAK,WAAa,OAC7B,EACA,cAAcA,EAAM,CAChB,OAAOA,EAAK,WAAa,UAC7B,EACA,mBAAmBA,EAAM,CACrB,OAAOA,EAAK,WAAa,eAC7B,EACA,cAAcA,EAAM,CAChB,OAAO,OAAO,UAAU,eAAe,KAAKA,EAAM,SAAS,CAC/D,EAEA,0BAA0BA,EAAM2oQ,EAAU,CACtC3oQ,EAAK,mBAAqB2oQ,CAC9B,EACA,0BAA0B3oQ,EAAM,CAC5B,OAAOA,EAAK,kBAChB,EACA,6BAA6BA,EAAMwyQ,EAAa,CAC5CxyQ,EAAK,mBAAqB,CAAE,GAAGA,EAAK,mBAAoB,GAAGwyQ,CAAW,CAC1E,CACJ,EC1KMC,GAAqB,OACrBC,GAAkB,sBAClBC,GAAwB,6DACxBC,GAAiC,CACnC,6CACA,6CACA,uDACA,kCACA,kCACA,yCACA,yCACA,iCACA,0BACA,2BACA,0BACA,gCACA,0BACA,wBACA,8BACA,8BACA,8BACA,8BACA,qCACA,qCACA,qCACA,qCACA,6BACA,sBACA,2CACA,wDACA,iDACA,mDACA,wDACA,iDACA,mDACA,sCACA,6CACA,6CACA,sDACA,8DACA,8CACA,iFACA,wEACA,uCACA,gDACA,uDACA,kCACA,+BACA,+BACA,yBACA,gCACA,kCACA,sCACA,2CACA,yCACA,wBACA,4BACA,sCACA,iCACJ,EACMC,GAA8C,CAChD,GAAGD,GACH,mCACA,sCACJ,EACME,GAAyB,IAAI,IAAI,CACnC,uCACA,qCACA,MACJ,CAAC,EACKC,GAAoC,CAAC,mCAAoC,sCAAsC,EAC/GC,GAAmD,CACrD,GAAGD,GACH,mCACA,sCACJ,EAEA,SAASE,GAAUjB,EAAU1sO,EAAU,CACnC,OAAOA,EAAS,KAAMxlD,GAAWkyR,EAAS,WAAWlyR,CAAM,CAAC,CAChE,CAEO,SAASozR,GAAar9P,EAAO,CAChC,OAAQA,EAAM,OAAS48P,IACnB58P,EAAM,WAAa,OAClBA,EAAM,WAAa,MAAQA,EAAM,WAAa68P,GACvD,CACO,SAASS,GAAgBt9P,EAAO,CACnC,GAAIA,EAAM,OAAS48P,GACf,OAAOpF,GAAc,OAEzB,KAAM,CAAE,SAAA4E,CAAQ,EAAKp8P,EACrB,GAAIo8P,GAAYA,EAAS,YAAW,IAAOU,GACvC,OAAOtF,GAAc,OAEzB,GAAI,CAAE,SAAA2E,CAAQ,EAAKn8P,EACnB,GAAIm8P,IAAa,KAAM,CAEnB,GADAA,EAAWA,EAAS,YAAW,EAC3Bc,GAAuB,IAAId,CAAQ,EACnC,OAAO3E,GAAc,OAEzB,IAAI/nO,EAAW2sO,IAAa,KAAOY,GAA8CD,GACjF,GAAIK,GAAUjB,EAAU1sO,CAAQ,EAC5B,OAAO+nO,GAAc,OAIzB,GAFA/nO,EACI2sO,IAAa,KAAOc,GAAoCC,GACxDC,GAAUjB,EAAU1sO,CAAQ,EAC5B,OAAO+nO,GAAc,cAE7B,CACA,OAAOA,GAAc,SACzB,CC/GA,MAAM+F,GAAa,CACf,UAAW,YACX,gBAAiB,uBACrB,EAEMC,GAAsB,gBACtBC,GAA+B,gBAC/BC,GAA2B,IAAI,IAAI,CACrC,gBACA,gBACA,gBACA,cACA,WACA,gBACA,kBACA,WACA,cACA,WACA,oBACA,gBACA,eACA,mBACA,YACA,aACA,WACA,eACA,oBACA,eACA,cACA,cACA,mBACA,YACA,aACA,aACA,sBACA,mBACA,eACA,YACA,YACA,YACA,gBACA,sBACA,iBACA,OACA,OACA,cACA,YACA,qBACA,mBACA,mBACA,mBACA,eACA,cACA,eACA,cACA,eACA,iBACA,cACA,UACA,UACA,aACA,UACA,aACA,mBACA,mBACA,YACJ,EAAE,IAAKp8P,GAAS,CAACA,EAAK,YAAW,EAAIA,CAAI,CAAC,CAAC,EACrCq8P,GAA2B,IAAI,IAAI,CACrC,CAAC,gBAAiB,CAAE,OAAQ,QAAS,KAAM,UAAW,UAAWrG,GAAG,MAAO,EAC3E,CAAC,gBAAiB,CAAE,OAAQ,QAAS,KAAM,UAAW,UAAWA,GAAG,MAAO,EAC3E,CAAC,aAAc,CAAE,OAAQ,QAAS,KAAM,OAAQ,UAAWA,GAAG,MAAO,EACrE,CAAC,aAAc,CAAE,OAAQ,QAAS,KAAM,OAAQ,UAAWA,GAAG,MAAO,EACrE,CAAC,aAAc,CAAE,OAAQ,QAAS,KAAM,OAAQ,UAAWA,GAAG,MAAO,EACrE,CAAC,cAAe,CAAE,OAAQ,QAAS,KAAM,QAAS,UAAWA,GAAG,MAAO,EACvE,CAAC,aAAc,CAAE,OAAQ,QAAS,KAAM,OAAQ,UAAWA,GAAG,MAAO,EACrE,CAAC,WAAY,CAAE,OAAQ,MAAO,KAAM,OAAQ,UAAWA,GAAG,IAAK,EAC/D,CAAC,YAAa,CAAE,OAAQ,MAAO,KAAM,QAAS,UAAWA,GAAG,IAAK,EACjE,CAAC,QAAS,CAAE,OAAQ,GAAI,KAAM,QAAS,UAAWA,GAAG,MAAO,EAC5D,CAAC,cAAe,CAAE,OAAQ,QAAS,KAAM,QAAS,UAAWA,GAAG,MAAO,CAC3E,CAAC,EAEYsG,GAA+B,IAAI,IAAI,CAChD,WACA,cACA,eACA,eACA,gBACA,mBACA,WACA,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,eACA,gBACA,WACA,iBACA,iBACA,UACJ,EAAE,IAAKhD,GAAO,CAACA,EAAG,YAAW,EAAIA,CAAE,CAAC,CAAC,EAE/BiD,GAAwB,IAAI,IAAI,CAClCvrE,EAAE,EACFA,EAAE,IACFA,EAAE,WACFA,EAAE,KACFA,EAAE,GACFA,EAAE,OACFA,EAAE,KACFA,EAAE,GACFA,EAAE,IACFA,EAAE,GACFA,EAAE,GACFA,EAAE,GACFA,EAAE,MACFA,EAAE,GACFA,EAAE,GACFA,EAAE,GACFA,EAAE,GACFA,EAAE,GACFA,EAAE,GACFA,EAAE,KACFA,EAAE,GACFA,EAAE,EACFA,EAAE,IACFA,EAAE,GACFA,EAAE,QACFA,EAAE,KACFA,EAAE,KACFA,EAAE,KACFA,EAAE,GACFA,EAAE,EACFA,EAAE,IACFA,EAAE,KACFA,EAAE,EACFA,EAAE,MACFA,EAAE,KACFA,EAAE,OACFA,EAAE,OACFA,EAAE,IACFA,EAAE,IACFA,EAAE,MACFA,EAAE,GACFA,EAAE,EACFA,EAAE,GACFA,EAAE,GACN,CAAC,EAEM,SAASwrE,GAAWC,EAAe,CACtC,MAAMnD,EAAKmD,EAAc,MAGzB,OAFwBnD,IAAOtoE,EAAE,MAC7ByrE,EAAc,MAAM,KAAK,CAAC,CAAE,KAAA/oR,CAAI,IAAOA,IAASuiR,GAAM,OAASviR,IAASuiR,GAAM,MAAQviR,IAASuiR,GAAM,IAAI,GACnFsG,GAAsB,IAAIjD,CAAE,CAC1D,CAEO,SAASoD,GAAuBh+P,EAAO,CAC1C,QAAS92B,EAAI,EAAGA,EAAI82B,EAAM,MAAM,OAAQ92B,IACpC,GAAI82B,EAAM,MAAM92B,CAAC,EAAE,OAASs0R,GAAqB,CAC7Cx9P,EAAM,MAAM92B,CAAC,EAAE,KAAOu0R,GACtB,KACJ,CAER,CACO,SAASQ,GAAoBj+P,EAAO,CACvC,QAAS92B,EAAI,EAAGA,EAAI82B,EAAM,MAAM,OAAQ92B,IAAK,CACzC,MAAMg1R,EAAmBR,GAAyB,IAAI19P,EAAM,MAAM92B,CAAC,EAAE,IAAI,EACrEg1R,GAAoB,OACpBl+P,EAAM,MAAM92B,CAAC,EAAE,KAAOg1R,EAE9B,CACJ,CACO,SAASC,GAAoBn+P,EAAO,CACvC,QAAS92B,EAAI,EAAGA,EAAI82B,EAAM,MAAM,OAAQ92B,IAAK,CACzC,MAAMk1R,EAAoBT,GAAyB,IAAI39P,EAAM,MAAM92B,CAAC,EAAE,IAAI,EACtEk1R,IACAp+P,EAAM,MAAM92B,CAAC,EAAE,OAASk1R,EAAkB,OAC1Cp+P,EAAM,MAAM92B,CAAC,EAAE,KAAOk1R,EAAkB,KACxCp+P,EAAM,MAAM92B,CAAC,EAAE,UAAYk1R,EAAkB,UAErD,CACJ,CACO,SAASC,GAAsBr+P,EAAO,CACzC,MAAMs+P,EAAkBV,GAA6B,IAAI59P,EAAM,OAAO,EAClEs+P,GAAmB,OACnBt+P,EAAM,QAAUs+P,EAChBt+P,EAAM,MAAQ43P,GAAS53P,EAAM,OAAO,EAE5C,CAEA,SAASu+P,GAA6B3D,EAAI/vR,EAAI,CAC1C,OAAOA,IAAOysR,GAAG,SAAWsD,IAAOtoE,EAAE,IAAMsoE,IAAOtoE,EAAE,IAAMsoE,IAAOtoE,EAAE,IAAMsoE,IAAOtoE,EAAE,IAAMsoE,IAAOtoE,EAAE,MACrG,CACA,SAASksE,GAAuB5D,EAAI/vR,EAAIu2B,EAAO,CAC3C,GAAIv2B,IAAOysR,GAAG,QAAUsD,IAAOtoE,EAAE,gBAC7B,QAASppN,EAAI,EAAGA,EAAIk4B,EAAM,OAAQl4B,IAC9B,GAAIk4B,EAAMl4B,CAAC,EAAE,OAASquR,GAAM,SAAU,CAClC,MAAMjwR,EAAQ85B,EAAMl4B,CAAC,EAAE,MAAM,YAAW,EACxC,OAAO5B,IAAUi2R,GAAW,WAAaj2R,IAAUi2R,GAAW,eAClE,EAGR,OAAO1yR,IAAOysR,GAAG,MAAQsD,IAAOtoE,EAAE,gBAAkBsoE,IAAOtoE,EAAE,MAAQsoE,IAAOtoE,EAAE,MAClF,CACO,SAASmsE,GAAmB7D,EAAI/vR,EAAIu2B,EAAOs9P,EAAW,CACzD,OAAU,CAACA,GAAaA,IAAcpH,GAAG,OAASkH,GAAuB5D,EAAI/vR,EAAIu2B,CAAK,IAChF,CAACs9P,GAAaA,IAAcpH,GAAG,SAAWiH,GAA6B3D,EAAI/vR,CAAE,CACvF,CCxNA,MAAM8zR,GAAoB,SAEpBC,GAAqB,EACrBC,GAAqB,EAE3B,IAAIC,IACH,SAAUA,EAAe,CACtBA,EAAcA,EAAc,QAAa,CAAC,EAAI,UAC9CA,EAAcA,EAAc,YAAiB,CAAC,EAAI,cAClDA,EAAcA,EAAc,YAAiB,CAAC,EAAI,cAClDA,EAAcA,EAAc,QAAa,CAAC,EAAI,UAC9CA,EAAcA,EAAc,kBAAuB,CAAC,EAAI,oBACxDA,EAAcA,EAAc,WAAgB,CAAC,EAAI,aACjDA,EAAcA,EAAc,QAAa,CAAC,EAAI,UAC9CA,EAAcA,EAAc,KAAU,CAAC,EAAI,OAC3CA,EAAcA,EAAc,SAAc,CAAC,EAAI,WAC/CA,EAAcA,EAAc,cAAmB,CAAC,EAAI,gBACpDA,EAAcA,EAAc,WAAgB,EAAE,EAAI,aAClDA,EAAcA,EAAc,gBAAqB,EAAE,EAAI,kBACvDA,EAAcA,EAAc,cAAmB,EAAE,EAAI,gBACrDA,EAAcA,EAAc,OAAY,EAAE,EAAI,SAC9CA,EAAcA,EAAc,QAAa,EAAE,EAAI,UAC/CA,EAAcA,EAAc,UAAe,EAAE,EAAI,YACjDA,EAAcA,EAAc,mBAAwB,EAAE,EAAI,qBAC1DA,EAAcA,EAAc,YAAiB,EAAE,EAAI,cACnDA,EAAcA,EAAc,WAAgB,EAAE,EAAI,aAClDA,EAAcA,EAAc,YAAiB,EAAE,EAAI,cACnDA,EAAcA,EAAc,eAAoB,EAAE,EAAI,iBACtDA,EAAcA,EAAc,iBAAsB,EAAE,EAAI,mBACxDA,EAAcA,EAAc,qBAA0B,EAAE,EAAI,sBAChE,GAAGA,KAAkBA,GAAgB,CAAA,EAAG,EACxC,MAAMC,GAAW,CACb,UAAW,GACX,SAAU,GACV,YAAa,GACb,QAAS,GACT,OAAQ,GACR,UAAW,EACf,EACMC,GAAuB,IAAI,IAAI,CAAC1sE,EAAE,MAAOA,EAAE,MAAOA,EAAE,MAAOA,EAAE,MAAOA,EAAE,EAAE,CAAC,EACzE2sE,GAAuB,CACzB,iBAAkB,GAClB,uBAAwB,GACxB,YAAanD,GACb,aAAc,IAClB,EAEO,MAAMoD,EAAO,CAChB,YAAYn1R,EAASwwP,EAErB4kC,EAAkB,KAElBC,EAAgB,KAAM,CAClB,KAAK,gBAAkBD,EACvB,KAAK,cAAgBC,EACrB,KAAK,aAAe,KACpB,KAAK,QAAU,GAEf,KAAK,cAAgBN,GAAc,QAEnC,KAAK,sBAAwBA,GAAc,QAE3C,KAAK,YAAc,KAEnB,KAAK,YAAc,KAEnB,KAAK,iBAAmB,GAOxB,KAAK,uBAAyB,CAAA,EAE9B,KAAK,uBAAyB,CAAA,EAE9B,KAAK,sCAAwC,GAE7C,KAAK,WAAa,GAElB,KAAK,gBAAkB,GAEvB,KAAK,uBAAyB,GAC9B,KAAK,QAAU,CACX,GAAGG,GACH,GAAGl1R,CACf,EACQ,KAAK,YAAc,KAAK,QAAQ,YAChC,KAAK,aAAe,KAAK,QAAQ,aAE7B,KAAK,eACL,KAAK,QAAQ,uBAAyB,IAE1C,KAAK,SAAWwwP,GAAsD,KAAK,YAAY,eAAc,EACrG,KAAK,UAAY,IAAIk+B,GAAU,KAAK,QAAS,IAAI,EACjD,KAAK,yBAA2B,IAAIwC,GAAsB,KAAK,WAAW,EAC1E,KAAK,kBAAoBkE,EAAkBvH,GAAS,KAAK,YAAY,WAAWuH,CAAe,CAAC,EAAI7sE,EAAE,QACtG,KAAK,iBAAiB6sE,GAA2E,KAAK,SAAU,KAAK,iBAAiB,EACtI,KAAK,aAAe,IAAIrF,GAAiB,KAAK,SAAU,KAAK,YAAa,IAAI,CAClF,CAEA,OAAO,MAAMzmD,EAAMtpO,EAAS,CACxB,MAAMwoN,EAAS,IAAI,KAAKxoN,CAAO,EAC/B,OAAAwoN,EAAO,UAAU,MAAM8gB,EAAM,EAAI,EAC1B9gB,EAAO,QAClB,CACA,OAAO,kBAAkB4sE,EAAiBp1R,EAAS,CAC/C,MAAMmN,EAAO,CACT,GAAG+nR,GACH,GAAGl1R,CACf,EAGQo1R,IAA4EA,EAAkBjoR,EAAK,YAAY,cAAcmoR,GAAG,SAAU/H,GAAG,KAAM,CAAA,CAAE,GAIrJ,MAAMgI,EAAepoR,EAAK,YAAY,cAAc,eAAgBogR,GAAG,KAAM,EAAE,EACzE/kE,EAAS,IAAI,KAAKr7M,EAAMooR,EAAcH,CAAe,EAC3D,OAAI5sE,EAAO,oBAAsBD,EAAE,UAC/BC,EAAO,uBAAuB,QAAQusE,GAAc,WAAW,EAEnEvsE,EAAO,iCAAgC,EACvCA,EAAO,uBAAsB,EAC7BA,EAAO,oBAAmB,EAC1BA,EAAO,2BAA0B,EAC1BA,CACX,CACA,aAAc,CACV,MAAMgtE,EAAc,KAAK,YAAY,cAAc,KAAK,QAAQ,EAC1D/rB,EAAW,KAAK,YAAY,uBAAsB,EACxD,YAAK,YAAY+rB,EAAa/rB,CAAQ,EAC/BA,CACX,CAGA,KAAKxzO,EAAOz2B,EAAMi2R,EAAa,CAC3B,IAAI51R,EACJ,GAAI,CAAC,KAAK,aACN,OACJ,MAAM4pR,GAAO5pR,EAAKo2B,EAAM,YAAc,MAAQp2B,IAAO,OAASA,EAAKm1R,GAC7D3oR,EAAM,CACR,KAAA7M,EACA,UAAWiqR,EAAI,UACf,SAAUA,EAAI,SACd,YAAaA,EAAI,YACjB,QAASgM,EAAchM,EAAI,UAAYA,EAAI,QAC3C,OAAQgM,EAAchM,EAAI,SAAWA,EAAI,OACzC,UAAWgM,EAAchM,EAAI,YAAcA,EAAI,SAC3D,EACQ,KAAK,aAAap9Q,CAAG,CACzB,CAGA,WAAW+T,EAAMs1Q,EAAKC,EAAO,CACzB,IAAI91R,EAAID,GACPA,GAAMC,EAAK,KAAK,aAAa,cAAgB,MAAQD,IAAO,QAAkBA,EAAG,KAAKC,EAAIugB,CAAI,EAC3Fu1Q,GAAS,KAAK,aAAa,SAAW,GACtC,KAAK,iBAAiBv1Q,EAAMs1Q,CAAG,CACvC,CAEA,UAAUt1Q,EAAMu1Q,EAAO,CACnB,IAAI91R,EAAID,EAKR,GAJI,KAAK,QAAQ,wBACb,KAAK,gBAAgBwgB,EAAM,KAAK,YAAY,GAE/CxgB,GAAMC,EAAK,KAAK,aAAa,aAAe,MAAQD,IAAO,QAAkBA,EAAG,KAAKC,EAAIugB,EAAM,KAAK,aAAa,OAAO,EACrHu1Q,EAAO,CACP,IAAIz2R,EACA02R,EACA,KAAK,aAAa,WAAa,GAAK,KAAK,iBACzC12R,EAAU,KAAK,gBACf02R,EAAe,KAAK,mBAGnB,CAAE,QAAA12R,EAAS,aAAA02R,CAAY,EAAK,KAAK,aAEtC,KAAK,iBAAiB12R,EAAS02R,CAAY,CAC/C,CACJ,CACA,iBAAiB12R,EAASw2R,EAAK,CAC3B,MAAMG,EAAS32R,IAAY,KAAK,UAAaA,GAAW,KAAK,YAAY,gBAAgBA,CAAO,IAAMquR,GAAG,KACzG,KAAK,iBAAmB,CAACsI,EACzB,KAAK,UAAU,cACX,CAACA,GAAU32R,IAAY,QAAaw2R,IAAQ,QAAa,CAAC,KAAK,oBAAoBA,EAAKx2R,CAAO,CACvG,CAEA,qBAAqB42R,EAAcC,EAAoB,CACnD,KAAK,eAAeD,EAAcvI,GAAG,IAAI,EACzC,KAAK,UAAU,MAAQwI,EACvB,KAAK,sBAAwB,KAAK,cAClC,KAAK,cAAgBhB,GAAc,IACvC,CACA,0BAA2B,CACvB,KAAK,cAAgBA,GAAc,KACnC,KAAK,sBAAwBA,GAAc,QAC3C,KAAK,UAAU,MAAQ9G,GAAc,SACzC,CAGA,4BAA6B,CACzB,OAAO,KAAK,aAAa,WAAa,GAAK,KAAK,gBAC1C,KAAK,gBACL,KAAK,aAAa,OAC5B,CAEA,4BAA6B,CACzB,IAAI7tQ,EAAO,KAAK,gBAChB,KAAOA,GAAM,CACT,GAAI,KAAK,YAAY,WAAWA,CAAI,IAAMk1Q,GAAG,KAAM,CAC/C,KAAK,YAAcl1Q,EACnB,KACJ,CACAA,EAAO,KAAK,YAAY,cAAcA,CAAI,CAC9C,CACJ,CACA,kCAAmC,CAC/B,GAAI,GAAC,KAAK,iBAAmB,KAAK,YAAY,gBAAgB,KAAK,eAAe,IAAMmtQ,GAAG,MAG3F,OAAQ,KAAK,kBAAiB,CAC1B,KAAKhlE,EAAE,MACP,KAAKA,EAAE,SAAU,CACb,KAAK,UAAU,MAAQ0lE,GAAc,OACrC,KACJ,CACA,KAAK1lE,EAAE,MACP,KAAKA,EAAE,IACP,KAAKA,EAAE,OACP,KAAKA,EAAE,QACP,KAAKA,EAAE,SACP,KAAKA,EAAE,SAAU,CACb,KAAK,UAAU,MAAQ0lE,GAAc,QACrC,KACJ,CACA,KAAK1lE,EAAE,OAAQ,CACX,KAAK,UAAU,MAAQ0lE,GAAc,YACrC,KACJ,CACA,KAAK1lE,EAAE,UAAW,CACd,KAAK,UAAU,MAAQ0lE,GAAc,UACrC,KACJ,CAGZ,CACI,CAGA,iBAAiBh4P,EAAO,CACpB,MAAMhrB,EAAOgrB,EAAM,MAAQ,GACrBm8P,EAAWn8P,EAAM,UAAY,GAC7Bo8P,EAAWp8P,EAAM,UAAY,GAEnC,GADA,KAAK,YAAY,gBAAgB,KAAK,SAAUhrB,EAAMmnR,EAAUC,CAAQ,EACpEp8P,EAAM,SAAU,CAEhB,MAAM+/P,EADmB,KAAK,YAAY,cAAc,KAAK,QAAQ,EAChC,KAAM51Q,GAAS,KAAK,YAAY,mBAAmBA,CAAI,CAAC,EACzF41Q,GACA,KAAK,YAAY,0BAA0BA,EAAa//P,EAAM,QAAQ,CAE9E,CACJ,CAEA,qBAAqB5P,EAAS0iQ,EAAU,CACpC,GAAI,KAAK,QAAQ,uBAAwB,CACrC,MAAMU,EAAMV,GAAY,CACpB,GAAGA,EACH,SAAUA,CAC1B,EACY,KAAK,YAAY,0BAA0B1iQ,EAASojQ,CAAG,CAC3D,CACA,GAAI,KAAK,iCACL,KAAK,qBAAqBpjQ,CAAO,MAEhC,CACD,MAAM8Y,EAAS,KAAK,aAAa,yBACjC,KAAK,YAAY,YAAYA,GAAgD,KAAK,SAAU9Y,CAAO,CACvG,CACJ,CAMA,eAAe4P,EAAO+7P,EAAc,CAChC,MAAM3rQ,EAAU,KAAK,YAAY,cAAc4P,EAAM,QAAS+7P,EAAc/7P,EAAM,KAAK,EACvF,KAAK,qBAAqB5P,EAAS4P,EAAM,QAAQ,CACrD,CAEA,eAAeA,EAAO+7P,EAAc,CAChC,MAAM3rQ,EAAU,KAAK,YAAY,cAAc4P,EAAM,QAAS+7P,EAAc/7P,EAAM,KAAK,EACvF,KAAK,qBAAqB5P,EAAS4P,EAAM,QAAQ,EACjD,KAAK,aAAa,KAAK5P,EAAS4P,EAAM,KAAK,CAC/C,CAEA,mBAAmBmlO,EAAS60B,EAAO,CAC/B,MAAM5pQ,EAAU,KAAK,YAAY,cAAc+0O,EAASmyB,GAAG,KAAM,EAAE,EACnE,KAAK,qBAAqBlnQ,EAAS,IAAI,EACvC,KAAK,aAAa,KAAKA,EAAS4pQ,CAAK,CACzC,CAEA,gBAAgBh6P,EAAO,CACnB,MAAMggQ,EAAO,KAAK,YAAY,cAAchgQ,EAAM,QAASs3P,GAAG,KAAMt3P,EAAM,KAAK,EACzEmM,EAAU,KAAK,YAAY,uBAAsB,EACvD,KAAK,YAAY,mBAAmB6zP,EAAM7zP,CAAO,EACjD,KAAK,qBAAqB6zP,EAAMhgQ,EAAM,QAAQ,EAC9C,KAAK,aAAa,KAAKggQ,EAAMhgQ,EAAM,KAAK,EACpC,KAAK,QAAQ,wBACb,KAAK,YAAY,0BAA0BmM,EAAS,IAAI,CAChE,CAEA,wBAAyB,CACrB,MAAM/b,EAAU,KAAK,YAAY,cAAcivQ,GAAG,KAAM/H,GAAG,KAAM,EAAE,EAC/D,KAAK,QAAQ,wBACb,KAAK,YAAY,0BAA0BlnQ,EAAS,IAAI,EAC5D,KAAK,YAAY,YAAY,KAAK,aAAa,QAASA,CAAO,EAC/D,KAAK,aAAa,KAAKA,EAASkiM,EAAE,IAAI,CAC1C,CAEA,mBAAmBtyL,EAAOkJ,EAAQ,CAC9B,MAAMwzP,EAAc,KAAK,YAAY,kBAAkB18P,EAAM,IAAI,EACjE,KAAK,YAAY,YAAYkJ,EAAQwzP,CAAW,EAC5C,KAAK,QAAQ,wBACb,KAAK,YAAY,0BAA0BA,EAAa18P,EAAM,QAAQ,CAE9E,CAEA,kBAAkBA,EAAO,CACrB,IAAIkJ,EACA+2P,EAcJ,GAbI,KAAK,kCACJ,CAAE,OAAA/2P,EAAQ,cAAA+2P,GAAkB,KAAK,6BAA4B,EAC1DA,EACA,KAAK,YAAY,iBAAiB/2P,EAAQlJ,EAAM,MAAOigQ,CAAa,EAGpE,KAAK,YAAY,WAAW/2P,EAAQlJ,EAAM,KAAK,IAInDkJ,EAAS,KAAK,aAAa,yBAC3B,KAAK,YAAY,WAAWA,EAAQlJ,EAAM,KAAK,GAE/C,CAACA,EAAM,SACP,OACJ,MAAMmJ,EAAW,KAAK,YAAY,cAAcD,CAAM,EAChDg3P,EAAcD,EAAgB92P,EAAS,YAAY82P,CAAa,EAAI92P,EAAS,OAC7EszP,EAAWtzP,EAAS+2P,EAAc,CAAC,EAGzC,GADc,KAAK,YAAY,0BAA0BzD,CAAQ,EACtD,CACP,KAAM,CAAE,QAAA0D,EAAS,OAAAC,EAAQ,UAAAC,CAAS,EAAKrgQ,EAAM,SAC7C,KAAK,YAAY,6BAA6By8P,EAAU,CAAE,QAAA0D,EAAS,OAAAC,EAAQ,UAAAC,EAAW,CAC1F,MACS,KAAK,QAAQ,wBAClB,KAAK,YAAY,0BAA0B5D,EAAUz8P,EAAM,QAAQ,CAE3E,CAEA,YAAYsgQ,EAAO/D,EAAW,CAC1B,QAASxzQ,EAAQ,KAAK,YAAY,cAAcu3Q,CAAK,EAAGv3Q,EAAOA,EAAQ,KAAK,YAAY,cAAcu3Q,CAAK,EACvG,KAAK,YAAY,WAAWv3Q,CAAK,EACjC,KAAK,YAAY,YAAYwzQ,EAAWxzQ,CAAK,CAErD,CAEA,gBAAgBqH,EAASmwQ,EAAc,CACnC,GAAI,KAAK,YAAY,0BAA0BnwQ,CAAO,GAAKmwQ,EAAa,SAAU,CAC9E,MAAMC,EAAQD,EAAa,SACrB3F,EAAK,KAAK,YAAY,WAAWxqQ,CAAO,EACxCqwQ,EAGNF,EAAa,OAASjL,GAAU,SAAWsF,IAAO2F,EAAa,QACzD,CACE,OAAQ,CAAE,GAAGC,CAAK,EAClB,QAASA,EAAM,QACf,OAAQA,EAAM,OACd,UAAWA,EAAM,SACrC,EACkB,CACE,QAASA,EAAM,UACf,OAAQA,EAAM,SACd,UAAWA,EAAM,WACrC,EACY,KAAK,YAAY,6BAA6BpwQ,EAASqwQ,CAAM,CACjE,CACJ,CAEA,2CAA2CzgQ,EAAO,CAE9C,GAAI,CAAC,KAAK,iBACN,MAAO,GACX,IAAI/2B,EACA02R,EAQJ,OAPI,KAAK,aAAa,WAAa,GAAK,KAAK,iBACzC12R,EAAU,KAAK,gBACf02R,EAAe,KAAK,mBAGnB,CAAE,QAAA12R,EAAS,aAAA02R,CAAY,EAAK,KAAK,aAElC3/P,EAAM,QAAUsyL,EAAE,KAClB,KAAK,YAAY,WAAWrpN,CAAO,IAAMo2R,GAAG,gBAC5C,KAAK,YAAY,gBAAgBp2R,CAAO,IAAMquR,GAAG,OAC1C,GAIX,KAAK,UAAU,gBAGTt3P,EAAM,QAAUsyL,EAAE,QAAUtyL,EAAM,QAAUsyL,EAAE,aAC5CqtE,IAAiB,QACjB,CAAC,KAAK,oBAAoBA,EAAc12R,EAASquR,GAAG,IAAI,CACpE,CAEA,cAAct3P,EAAO,CACjB,OAAQA,EAAM,KAAI,CACd,KAAKs1P,GAAU,UAAW,CACtB,KAAK,YAAYt1P,CAAK,EACtB,KACJ,CACA,KAAKs1P,GAAU,eAAgB,CAC3B,KAAK,gBAAgBt1P,CAAK,EAC1B,KACJ,CACA,KAAKs1P,GAAU,QAAS,CACpB,KAAK,UAAUt1P,CAAK,EACpB,KACJ,CACA,KAAKs1P,GAAU,QAAS,CACpB,KAAK,UAAUt1P,CAAK,EACpB,KACJ,CACA,KAAKs1P,GAAU,UAAW,CACtB,KAAK,iBAAiBt1P,CAAK,EAC3B,KACJ,CACA,KAAKs1P,GAAU,QAAS,CACpB,KAAK,SAASt1P,CAAK,EACnB,KACJ,CACA,KAAKs1P,GAAU,IAAK,CAChB,KAAK,MAAMt1P,CAAK,EAChB,KACJ,CACA,KAAKs1P,GAAU,qBAAsB,CACjC,KAAK,sBAAsBt1P,CAAK,EAChC,KACJ,CACZ,CACI,CAGA,oBAAoBy/P,EAAKrvQ,EAASsuQ,EAAW,CACzC,MAAM7zR,EAAK,KAAK,YAAY,gBAAgBulB,CAAO,EAC7CgR,EAAQ,KAAK,YAAY,YAAYhR,CAAO,EAClD,OAAOswQ,GAAkCjB,EAAK50R,EAAIu2B,EAAOs9P,CAAS,CACtE,CAGA,sCAAuC,CACnC,MAAMiC,EAAa,KAAK,yBAAyB,QAAQ,OACzD,GAAIA,EAAY,CACZ,MAAMj6J,EAAW,KAAK,yBAAyB,QAAQ,UAAWj2G,GAAUA,EAAM,OAASsqQ,GAAU,QAAU,KAAK,aAAa,SAAStqQ,EAAM,OAAO,CAAC,EAClJmwQ,EAAYl6J,IAAa,GAAKi6J,EAAa,EAAIj6J,EAAW,EAChE,QAAS,EAAIk6J,EAAW,GAAK,EAAG,IAAK,CACjC,MAAMnwQ,EAAQ,KAAK,yBAAyB,QAAQ,CAAC,EACrD,KAAK,eAAeA,EAAM,MAAO,KAAK,YAAY,gBAAgBA,EAAM,OAAO,CAAC,EAChFA,EAAM,QAAU,KAAK,aAAa,OACtC,CACJ,CACJ,CAGA,iBAAkB,CACd,KAAK,aAAa,uBAAsB,EACxC,KAAK,aAAa,wBAAuB,EACzC,KAAK,yBAAyB,kBAAiB,EAC/C,KAAK,cAAgBquQ,GAAc,MACvC,CAEA,gBAAiB,CACb,KAAK,aAAa,oCAAoCxsE,EAAE,CAAC,EACzD,KAAK,aAAa,sBAAsBA,EAAE,CAAC,CAC/C,CAGA,qBAAsB,CAClB,QAASppN,EAAI,KAAK,aAAa,SAAUA,GAAK,EAAGA,IAE7C,OAAQA,IAAM,GAAK,KAAK,gBAAkB,KAAK,kBAAoB,KAAK,aAAa,OAAOA,CAAC,EAAC,CAC1F,KAAKopN,EAAE,GAAI,CACP,KAAK,cAAgBwsE,GAAc,OACnC,MACJ,CACA,KAAKxsE,EAAE,MACP,KAAKA,EAAE,MACP,KAAKA,EAAE,MAAO,CACV,KAAK,cAAgBwsE,GAAc,cACnC,MACJ,CACA,KAAKxsE,EAAE,QAAS,CACZ,KAAK,cAAgBwsE,GAAc,WACnC,MACJ,CACA,KAAKxsE,EAAE,SAAU,CACb,KAAK,cAAgBwsE,GAAc,gBACnC,MACJ,CACA,KAAKxsE,EAAE,MAAO,CACV,KAAK,cAAgBwsE,GAAc,SACnC,MACJ,CACA,KAAKxsE,EAAE,KAAM,CACT,KAAK,cAAgBwsE,GAAc,QACnC,MACJ,CACA,KAAKxsE,EAAE,SAAU,CACb,KAAK,cAAgBwsE,GAAc,YACnC,MACJ,CACA,KAAKxsE,EAAE,OAAQ,CACX,KAAK,6BAA6BppN,CAAC,EACnC,MACJ,CACA,KAAKopN,EAAE,SAAU,CACb,KAAK,cAAgB,KAAK,uBAAuB,CAAC,EAClD,MACJ,CACA,KAAKA,EAAE,KAAM,CACT,KAAK,cAAgB,KAAK,YAAcwsE,GAAc,WAAaA,GAAc,YACjF,MACJ,CACA,KAAKxsE,EAAE,GACP,KAAKA,EAAE,GAAI,CACP,GAAIppN,EAAI,EAAG,CACP,KAAK,cAAgB41R,GAAc,QACnC,MACJ,CACA,KACJ,CACA,KAAKxsE,EAAE,KAAM,CACT,GAAIppN,EAAI,EAAG,CACP,KAAK,cAAgB41R,GAAc,QACnC,MACJ,CACA,KACJ,CAChB,CAEQ,KAAK,cAAgBA,GAAc,OACvC,CAEA,6BAA6B+B,EAAW,CACpC,GAAIA,EAAY,EACZ,QAAS33R,EAAI23R,EAAY,EAAG33R,EAAI,EAAGA,IAAK,CACpC,MAAM0xR,EAAK,KAAK,aAAa,OAAO1xR,CAAC,EACrC,GAAI0xR,IAAOtoE,EAAE,SACT,MAEC,GAAIsoE,IAAOtoE,EAAE,MAAO,CACrB,KAAK,cAAgBwsE,GAAc,mBACnC,MACJ,CACJ,CAEJ,KAAK,cAAgBA,GAAc,SACvC,CAGA,gCAAgClE,EAAI,CAChC,OAAOoE,GAAqB,IAAIpE,CAAE,CACtC,CAEA,gCAAiC,CAC7B,OAAQ,KAAK,wBACT,KAAK,aAAa,eAAiB,QACnC,KAAK,gCAAgC,KAAK,aAAa,YAAY,CAC3E,CAEA,8BAA+B,CAC3B,QAAS1xR,EAAI,KAAK,aAAa,SAAUA,GAAK,EAAGA,IAAK,CAClD,MAAM43R,EAAc,KAAK,aAAa,MAAM53R,CAAC,EAC7C,OAAQ,KAAK,aAAa,OAAOA,CAAC,EAAC,CAC/B,KAAKopN,EAAE,SAAU,CACb,GAAI,KAAK,YAAY,gBAAgBwuE,CAAW,IAAMxJ,GAAG,KACrD,MAAO,CAAE,OAAQ,KAAK,YAAY,mBAAmBwJ,CAAW,EAAG,cAAe,IAAI,EAE1F,KACJ,CACA,KAAKxuE,EAAE,MAAO,CACV,MAAMppL,EAAS,KAAK,YAAY,cAAc43P,CAAW,EACzD,OAAI53P,EACO,CAAE,OAAAA,EAAQ,cAAe43P,CAAW,EAExC,CAAE,OAAQ,KAAK,aAAa,MAAM53R,EAAI,CAAC,EAAG,cAAe,IAAI,CACxE,CAGhB,CACQ,CACA,MAAO,CAAE,OAAQ,KAAK,aAAa,MAAM,CAAC,EAAG,cAAe,IAAI,CACpE,CAEA,qBAAqBknB,EAAS,CAC1B,MAAM0iQ,EAAW,KAAK,6BAA4B,EAC9CA,EAAS,cACT,KAAK,YAAY,aAAaA,EAAS,OAAQ1iQ,EAAS0iQ,EAAS,aAAa,EAG9E,KAAK,YAAY,YAAYA,EAAS,OAAQ1iQ,CAAO,CAE7D,CAGA,kBAAkBA,EAAS7I,EAAI,CAC3B,MAAM1c,EAAK,KAAK,YAAY,gBAAgBulB,CAAO,EACnD,OAAOynQ,GAAiBhtR,CAAE,EAAE,IAAI0c,CAAE,CACtC,CAEA,YAAYyY,EAAO,CAEf,GADA,KAAK,gBAAkB,GACnB,KAAK,UAAU,cAAe,CAC9B+gQ,GAA0B,KAAM/gQ,CAAK,EACrC,MACJ,CACA,OAAQ,KAAK,cAAa,CACtB,KAAK8+P,GAAc,QAAS,CACxBkC,GAAmB,KAAMhhQ,CAAK,EAC9B,KACJ,CACA,KAAK8+P,GAAc,YAAa,CAC5BmC,GAAgB,KAAMjhQ,CAAK,EAC3B,KACJ,CACA,KAAK8+P,GAAc,YAAa,CAC5BoC,GAAgB,KAAMlhQ,CAAK,EAC3B,KACJ,CACA,KAAK8+P,GAAc,QAAS,CACxBqC,GAAY,KAAMnhQ,CAAK,EACvB,KACJ,CACA,KAAK8+P,GAAc,kBAAmB,CAClCsC,GAAoB,KAAMphQ,CAAK,EAC/B,KACJ,CACA,KAAK8+P,GAAc,WAAY,CAC3BuC,GAAe,KAAMrhQ,CAAK,EAC1B,KACJ,CACA,KAAK8+P,GAAc,QACnB,KAAKA,GAAc,WACnB,KAAKA,GAAc,QACnB,KAAKA,GAAc,YAAa,CAC5BwC,GAAgB,KAAMthQ,CAAK,EAC3B,KACJ,CACA,KAAK8+P,GAAc,KACnB,KAAKA,GAAc,UACnB,KAAKA,GAAc,mBAAoB,CACnC,KAAK,kBAAkB9+P,CAAK,EAC5B,KACJ,CACA,KAAK8+P,GAAc,SACnB,KAAKA,GAAc,cACnB,KAAKA,GAAc,OAAQ,CACvByC,GAAiB,KAAMvhQ,CAAK,EAC5B,KACJ,CACA,KAAK8+P,GAAc,cAAe,CAC9B0C,GAAqB,KAAMxhQ,CAAK,EAChC,KACJ,CACA,KAAK8+P,GAAc,gBAAiB,CAChC2C,GAAmB,KAAMzhQ,CAAK,EAC9B,KACJ,CACA,KAAK8+P,GAAc,WAAY,CAC3B4C,GAAe,KAAM1hQ,CAAK,EAC1B,KACJ,CACA,KAAK8+P,GAAc,iBAAkB,CACjC6C,GAAoB,KAAM3hQ,CAAK,EAC/B,KACJ,CAGZ,CACI,CAEA,gBAAgBA,EAAO,CAEnB,GADA,KAAK,gBAAkB,GACnB,KAAK,UAAU,cAAe,CAC9B4hQ,GAA8B,KAAM5hQ,CAAK,EACzC,MACJ,CACA,OAAQ,KAAK,cAAa,CACtB,KAAK8+P,GAAc,QAAS,CACxBkC,GAAmB,KAAMhhQ,CAAK,EAC9B,KACJ,CACA,KAAK8+P,GAAc,YAAa,CAC5BmC,GAAgB,KAAMjhQ,CAAK,EAC3B,KACJ,CACA,KAAK8+P,GAAc,YAAa,CAC5BoC,GAAgB,KAAMlhQ,CAAK,EAC3B,KACJ,CACA,KAAK8+P,GAAc,QAAS,CACxBqC,GAAY,KAAMnhQ,CAAK,EACvB,KACJ,CACA,KAAK8+P,GAAc,kBAAmB,CAClCsC,GAAoB,KAAMphQ,CAAK,EAC/B,KACJ,CACA,KAAK8+P,GAAc,WAAY,CAC3BuC,GAAe,KAAMrhQ,CAAK,EAC1B,KACJ,CACA,KAAK8+P,GAAc,KAAM,CACrB,KAAK,kBAAkB9+P,CAAK,EAC5B,KACJ,CACA,KAAK8+P,GAAc,SACnB,KAAKA,GAAc,cACnB,KAAKA,GAAc,OAAQ,CACvByC,GAAiB,KAAMvhQ,CAAK,EAC5B,KACJ,CACA,KAAK8+P,GAAc,gBAAiB,CAChC2C,GAAmB,KAAMzhQ,CAAK,EAC9B,KACJ,CACA,KAAK8+P,GAAc,WAAY,CAC3B4C,GAAe,KAAM1hQ,CAAK,EAC1B,KACJ,CACA,KAAK8+P,GAAc,iBAAkB,CACjC6C,GAAoB,KAAM3hQ,CAAK,EAC/B,KACJ,CAGZ,CACI,CAEA,UAAUA,EAAO,CAEb,GADA,KAAK,gBAAkB,GACnB,KAAK,iBAAkB,CACvB6hQ,GAAc,KAAM7hQ,CAAK,EACzB,MACJ,CACA,OAAQ,KAAK,cAAa,CACtB,KAAK8+P,GAAc,QACnB,KAAKA,GAAc,YACnB,KAAKA,GAAc,YACnB,KAAKA,GAAc,QACnB,KAAKA,GAAc,kBACnB,KAAKA,GAAc,WACnB,KAAKA,GAAc,QACnB,KAAKA,GAAc,SACnB,KAAKA,GAAc,WACnB,KAAKA,GAAc,gBACnB,KAAKA,GAAc,cACnB,KAAKA,GAAc,OACnB,KAAKA,GAAc,QACnB,KAAKA,GAAc,UACnB,KAAKA,GAAc,mBACnB,KAAKA,GAAc,YACnB,KAAKA,GAAc,YACnB,KAAKA,GAAc,eAAgB,CAC/B+C,GAAc,KAAM7hQ,CAAK,EACzB,KACJ,CACA,KAAK8+P,GAAc,cAAe,CAC9BgD,GAAiB,KAAM9hQ,CAAK,EAC5B,KACJ,CACA,KAAK8+P,GAAc,WAAY,CAC3BiD,GAA+B,KAAM/hQ,CAAK,EAC1C,KACJ,CACA,KAAK8+P,GAAc,iBACnB,KAAKA,GAAc,qBAAsB,CACrCkD,GAAwB,KAAMhiQ,CAAK,EACnC,KACJ,CAGZ,CACI,CAEA,UAAUA,EAAO,CAEb,OADA,KAAK,gBAAkB,GACf,KAAK,cAAa,CACtB,KAAK8+P,GAAc,QAAS,CACxBmD,GAAqB,KAAMjiQ,CAAK,EAChC,KACJ,CACA,KAAK8+P,GAAc,YACnB,KAAKA,GAAc,QACnB,KAAKA,GAAc,kBACnB,KAAKA,GAAc,WAAY,CAC3B,KAAK,KAAK9+P,EAAO80P,GAAI,gBAAgB,EACrC,KACJ,CACA,KAAKgK,GAAc,cAAe,CAC9BgD,GAAiB,KAAM9hQ,CAAK,EAC5B,KACJ,CAGZ,CACI,CAEA,WAAWA,EAAO,CACd,KAAK,gBAAkB,GACvB,KAAK,aAAeA,EACpB,KAAK,iBAAiBA,CAAK,EACvBA,EAAM,aAAe,CAACA,EAAM,gBAC5B,KAAK,KAAKA,EAAO80P,GAAI,6CAA6C,CAE1E,CAYA,iBAAiB90P,EAAO,CAChB,KAAK,2CAA2CA,CAAK,EACrDkiQ,GAAyB,KAAMliQ,CAAK,EAGpC,KAAK,+BAA+BA,CAAK,CAEjD,CAEA,+BAA+BA,EAAO,CAClC,OAAQ,KAAK,cAAa,CACtB,KAAK8+P,GAAc,QAAS,CACxBkC,GAAmB,KAAMhhQ,CAAK,EAC9B,KACJ,CACA,KAAK8+P,GAAc,YAAa,CAC5BqD,GAAmB,KAAMniQ,CAAK,EAC9B,KACJ,CACA,KAAK8+P,GAAc,YAAa,CAC5BsD,GAAmB,KAAMpiQ,CAAK,EAC9B,KACJ,CACA,KAAK8+P,GAAc,QAAS,CACxBuD,GAAe,KAAMriQ,CAAK,EAC1B,KACJ,CACA,KAAK8+P,GAAc,kBAAmB,CAClCwD,GAAuB,KAAMtiQ,CAAK,EAClC,KACJ,CACA,KAAK8+P,GAAc,WAAY,CAC3ByD,GAAkB,KAAMviQ,CAAK,EAC7B,KACJ,CACA,KAAK8+P,GAAc,QAAS,CACxB0D,GAAe,KAAMxiQ,CAAK,EAC1B,KACJ,CACA,KAAK8+P,GAAc,SAAU,CACzB2D,GAAgB,KAAMziQ,CAAK,EAC3B,KACJ,CACA,KAAK8+P,GAAc,cAAe,CAC9BgD,GAAiB,KAAM9hQ,CAAK,EAC5B,KACJ,CACA,KAAK8+P,GAAc,WAAY,CAC3B4D,GAAkB,KAAM1iQ,CAAK,EAC7B,KACJ,CACA,KAAK8+P,GAAc,gBAAiB,CAChC6D,GAAsB,KAAM3iQ,CAAK,EACjC,KACJ,CACA,KAAK8+P,GAAc,cAAe,CAC9B8D,GAAoB,KAAM5iQ,CAAK,EAC/B,KACJ,CACA,KAAK8+P,GAAc,OAAQ,CACvB+D,GAAc,KAAM7iQ,CAAK,EACzB,KACJ,CACA,KAAK8+P,GAAc,QAAS,CACxBgE,GAAe,KAAM9iQ,CAAK,EAC1B,KACJ,CACA,KAAK8+P,GAAc,UAAW,CAC1BiE,GAAiB,KAAM/iQ,CAAK,EAC5B,KACJ,CACA,KAAK8+P,GAAc,mBAAoB,CACnCkE,GAAwB,KAAMhjQ,CAAK,EACnC,KACJ,CACA,KAAK8+P,GAAc,YAAa,CAC5BmE,GAAmB,KAAMjjQ,CAAK,EAC9B,KACJ,CACA,KAAK8+P,GAAc,WAAY,CAC3BoE,GAAkB,KAAMljQ,CAAK,EAC7B,KACJ,CACA,KAAK8+P,GAAc,YAAa,CAC5BqE,GAAmB,KAAMnjQ,CAAK,EAC9B,KACJ,CACA,KAAK8+P,GAAc,eAAgB,CAC/BsE,GAAsB,KAAMpjQ,CAAK,EACjC,KACJ,CACA,KAAK8+P,GAAc,iBAAkB,CACjCuE,GAAuB,KAAMrjQ,CAAK,EAClC,KACJ,CACA,KAAK8+P,GAAc,qBAAsB,CACrCwE,GAA2B,KAAMtjQ,CAAK,EACtC,KACJ,CAGZ,CACI,CAEA,SAASA,EAAO,CACZ,KAAK,gBAAkB,GACvB,KAAK,aAAeA,EAChB,KAAK,iBACLujQ,GAAuB,KAAMvjQ,CAAK,EAGlC,KAAK,6BAA6BA,CAAK,CAE/C,CAEA,6BAA6BA,EAAO,CAChC,OAAQ,KAAK,cAAa,CACtB,KAAK8+P,GAAc,QAAS,CACxBkC,GAAmB,KAAMhhQ,CAAK,EAC9B,KACJ,CACA,KAAK8+P,GAAc,YAAa,CAC5B0E,GAAiB,KAAMxjQ,CAAK,EAC5B,KACJ,CACA,KAAK8+P,GAAc,YAAa,CAC5B2E,GAAiB,KAAMzjQ,CAAK,EAC5B,KACJ,CACA,KAAK8+P,GAAc,QAAS,CACxB4E,GAAa,KAAM1jQ,CAAK,EACxB,KACJ,CACA,KAAK8+P,GAAc,kBAAmB,CAClC6E,GAAqB,KAAM3jQ,CAAK,EAChC,KACJ,CACA,KAAK8+P,GAAc,WAAY,CAC3B8E,GAAgB,KAAM5jQ,CAAK,EAC3B,KACJ,CACA,KAAK8+P,GAAc,QAAS,CACxB+E,GAAa,KAAM7jQ,CAAK,EACxB,KACJ,CACA,KAAK8+P,GAAc,KAAM,CACrBgF,GAAa,KAAM9jQ,CAAK,EACxB,KACJ,CACA,KAAK8+P,GAAc,SAAU,CACzBiF,GAAc,KAAM/jQ,CAAK,EACzB,KACJ,CACA,KAAK8+P,GAAc,cAAe,CAC9BgD,GAAiB,KAAM9hQ,CAAK,EAC5B,KACJ,CACA,KAAK8+P,GAAc,WAAY,CAC3BkF,GAAgB,KAAMhkQ,CAAK,EAC3B,KACJ,CACA,KAAK8+P,GAAc,gBAAiB,CAChCmF,GAAoB,KAAMjkQ,CAAK,EAC/B,KACJ,CACA,KAAK8+P,GAAc,cAAe,CAC9BoF,GAAkB,KAAMlkQ,CAAK,EAC7B,KACJ,CACA,KAAK8+P,GAAc,OAAQ,CACvBqF,GAAY,KAAMnkQ,CAAK,EACvB,KACJ,CACA,KAAK8+P,GAAc,QAAS,CACxBsF,GAAa,KAAMpkQ,CAAK,EACxB,KACJ,CACA,KAAK8+P,GAAc,UAAW,CAC1BuF,GAAe,KAAMrkQ,CAAK,EAC1B,KACJ,CACA,KAAK8+P,GAAc,mBAAoB,CACnCwF,GAAsB,KAAMtkQ,CAAK,EACjC,KACJ,CACA,KAAK8+P,GAAc,YAAa,CAC5ByF,GAAiB,KAAMvkQ,CAAK,EAC5B,KACJ,CACA,KAAK8+P,GAAc,WAAY,CAC3B0F,GAAgB,KAAMxkQ,CAAK,EAC3B,KACJ,CACA,KAAK8+P,GAAc,YAAa,CAC5B2F,GAAiB,KAAMzkQ,CAAK,EAC5B,KACJ,CACA,KAAK8+P,GAAc,eAAgB,CAC/B4F,GAAoB,KAAM1kQ,CAAK,EAC/B,KACJ,CACA,KAAK8+P,GAAc,iBAAkB,CACjC6C,GAAoB,KAAM3hQ,CAAK,EAC/B,KACJ,CAGZ,CACI,CAEA,MAAMA,EAAO,CACT,OAAQ,KAAK,cAAa,CACtB,KAAK8+P,GAAc,QAAS,CACxBkC,GAAmB,KAAMhhQ,CAAK,EAC9B,KACJ,CACA,KAAK8+P,GAAc,YAAa,CAC5BmC,GAAgB,KAAMjhQ,CAAK,EAC3B,KACJ,CACA,KAAK8+P,GAAc,YAAa,CAC5BoC,GAAgB,KAAMlhQ,CAAK,EAC3B,KACJ,CACA,KAAK8+P,GAAc,QAAS,CACxBqC,GAAY,KAAMnhQ,CAAK,EACvB,KACJ,CACA,KAAK8+P,GAAc,kBAAmB,CAClCsC,GAAoB,KAAMphQ,CAAK,EAC/B,KACJ,CACA,KAAK8+P,GAAc,WAAY,CAC3BuC,GAAe,KAAMrhQ,CAAK,EAC1B,KACJ,CACA,KAAK8+P,GAAc,QACnB,KAAKA,GAAc,SACnB,KAAKA,GAAc,WACnB,KAAKA,GAAc,gBACnB,KAAKA,GAAc,cACnB,KAAKA,GAAc,OACnB,KAAKA,GAAc,QACnB,KAAKA,GAAc,UACnB,KAAKA,GAAc,mBAAoB,CACnC6F,GAAU,KAAM3kQ,CAAK,EACrB,KACJ,CACA,KAAK8+P,GAAc,KAAM,CACrB8F,GAAU,KAAM5kQ,CAAK,EACrB,KACJ,CACA,KAAK8+P,GAAc,cAAe,CAC9BgD,GAAiB,KAAM9hQ,CAAK,EAC5B,KACJ,CACA,KAAK8+P,GAAc,YAAa,CAC5B+F,GAAc,KAAM7kQ,CAAK,EACzB,KACJ,CACA,KAAK8+P,GAAc,WACnB,KAAKA,GAAc,YACnB,KAAKA,GAAc,eACnB,KAAKA,GAAc,iBACnB,KAAKA,GAAc,qBAAsB,CACrCgG,GAAY,KAAM9kQ,CAAK,EACvB,KACJ,CAGZ,CACI,CAEA,sBAAsBA,EAAO,CACzB,GAAI,KAAK,kBACL,KAAK,gBAAkB,GACnBA,EAAM,MAAM,WAAW,CAAC,IAAM+kQ,EAAoB,WAAW,CAC7D,GAAI/kQ,EAAM,MAAM,SAAW,EACvB,OAEJA,EAAM,MAAQA,EAAM,MAAM,OAAO,CAAC,CACtC,CAEJ,GAAI,KAAK,UAAU,cAAe,CAC9B,KAAK,kBAAkBA,CAAK,EAC5B,MACJ,CACA,OAAQ,KAAK,cAAa,CACtB,KAAK8+P,GAAc,QACnB,KAAKA,GAAc,kBACnB,KAAKA,GAAc,WACnB,KAAKA,GAAc,KACnB,KAAKA,GAAc,gBACnB,KAAKA,GAAc,UACnB,KAAKA,GAAc,mBACnB,KAAKA,GAAc,YACnB,KAAKA,GAAc,eAAgB,CAC/B,KAAK,kBAAkB9+P,CAAK,EAC5B,KACJ,CACA,KAAK8+P,GAAc,QACnB,KAAKA,GAAc,WACnB,KAAKA,GAAc,QACnB,KAAKA,GAAc,YACnB,KAAKA,GAAc,WACnB,KAAKA,GAAc,iBACnB,KAAKA,GAAc,qBAAsB,CACrCkG,GAA0B,KAAMhlQ,CAAK,EACrC,KACJ,CACA,KAAK8+P,GAAc,SACnB,KAAKA,GAAc,cACnB,KAAKA,GAAc,OAAQ,CACvByC,GAAiB,KAAMvhQ,CAAK,EAC5B,KACJ,CACA,KAAK8+P,GAAc,cAAe,CAC9BmG,GAA+B,KAAMjlQ,CAAK,EAC1C,KACJ,CAGZ,CACI,CACJ,CAKA,SAASklQ,GAA+Bp+R,EAAGk5B,EAAO,CAC9C,IAAImlQ,EAAyBr+R,EAAE,yBAAyB,kCAAkCk5B,EAAM,OAAO,EACvG,OAAImlQ,EACKr+R,EAAE,aAAa,SAASq+R,EAAuB,OAAO,EAIjDr+R,EAAE,aAAa,WAAWk5B,EAAM,KAAK,IAC3CmlQ,EAAyB,OAJzBr+R,EAAE,yBAAyB,YAAYq+R,CAAsB,EAC7DA,EAAyB,MAO7BC,GAAoBt+R,EAAGk5B,CAAK,EAEzBmlQ,CACX,CAEA,SAASE,GAAsBv+R,EAAGq+R,EAAwB,CACtD,IAAIG,EAAgB,KAChBhtN,EAAMxxE,EAAE,aAAa,SACzB,KAAOwxE,GAAO,EAAGA,IAAO,CACpB,MAAMloD,EAAUtpB,EAAE,aAAa,MAAMwxE,CAAG,EACxC,GAAIloD,IAAY+0Q,EAAuB,QACnC,MAEAr+R,EAAE,kBAAkBspB,EAAStpB,EAAE,aAAa,OAAOwxE,CAAG,CAAC,IACvDgtN,EAAgBl1Q,EAExB,CACA,OAAKk1Q,IACDx+R,EAAE,aAAa,gBAAgB,KAAK,IAAIwxE,EAAK,CAAC,CAAC,EAC/CxxE,EAAE,yBAAyB,YAAYq+R,CAAsB,GAE1DG,CACX,CAEA,SAASC,GAAYz+R,EAAGw+R,EAAeE,EAAmB,CACtD,IAAIC,EAAcH,EACdI,EAAc5+R,EAAE,aAAa,kBAAkBw+R,CAAa,EAChE,QAASp8R,EAAI,EAAGknB,EAAUs1Q,EAAat1Q,IAAYo1Q,EAAmBt8R,IAAKknB,EAAUs1Q,EAAa,CAE9FA,EAAc5+R,EAAE,aAAa,kBAAkBspB,CAAO,EACtD,MAAMu1Q,EAAe7+R,EAAE,yBAAyB,gBAAgBspB,CAAO,EACjEw1Q,EAAkBD,GAAgBz8R,GAAK21R,GACR,CAAC8G,GAAgBC,GAE9CA,GACA9+R,EAAE,yBAAyB,YAAY6+R,CAAY,EAEvD7+R,EAAE,aAAa,OAAOspB,CAAO,IAG7BA,EAAUy1Q,GAA2B/+R,EAAG6+R,CAAY,EAChDF,IAAgBH,IAChBx+R,EAAE,yBAAyB,SAAW6+R,GAE1C7+R,EAAE,YAAY,WAAW2+R,CAAW,EACpC3+R,EAAE,YAAY,YAAYspB,EAASq1Q,CAAW,EAC9CA,EAAcr1Q,EAEtB,CACA,OAAOq1Q,CACX,CAEA,SAASI,GAA2B/+R,EAAG6+R,EAAc,CACjD,MAAM96R,EAAK/D,EAAE,YAAY,gBAAgB6+R,EAAa,OAAO,EACvDxL,EAAarzR,EAAE,YAAY,cAAc6+R,EAAa,MAAM,QAAS96R,EAAI86R,EAAa,MAAM,KAAK,EACvG,OAAA7+R,EAAE,aAAa,QAAQ6+R,EAAa,QAASxL,CAAU,EACvDwL,EAAa,QAAUxL,EAChBA,CACX,CAEA,SAAS2L,GAAiCh/R,EAAGi/R,EAAgBN,EAAa,CACtE,MAAM7K,EAAK9zR,EAAE,YAAY,WAAWi/R,CAAc,EAC5CtG,EAAM7H,GAASgD,CAAE,EACvB,GAAI9zR,EAAE,gCAAgC24R,CAAG,EACrC34R,EAAE,qBAAqB2+R,CAAW,MAEjC,CACD,MAAM56R,EAAK/D,EAAE,YAAY,gBAAgBi/R,CAAc,EACnDtG,IAAQntE,EAAE,UAAYznN,IAAOysR,GAAG,OAChCyO,EAAiBj/R,EAAE,YAAY,mBAAmBi/R,CAAc,GAEpEj/R,EAAE,YAAY,YAAYi/R,EAAgBN,CAAW,CACzD,CACJ,CAEA,SAASO,GAA2Bl/R,EAAGw+R,EAAeH,EAAwB,CAC1E,MAAMt6R,EAAK/D,EAAE,YAAY,gBAAgBq+R,EAAuB,OAAO,EACjE,CAAE,MAAAnlQ,CAAK,EAAKmlQ,EACZhL,EAAarzR,EAAE,YAAY,cAAck5B,EAAM,QAASn1B,EAAIm1B,EAAM,KAAK,EAC7El5B,EAAE,YAAYw+R,EAAenL,CAAU,EACvCrzR,EAAE,YAAY,YAAYw+R,EAAenL,CAAU,EACnDrzR,EAAE,yBAAyB,2BAA2BqzR,EAAYn6P,CAAK,EACvEl5B,EAAE,yBAAyB,YAAYq+R,CAAsB,EAC7Dr+R,EAAE,aAAa,OAAOq+R,EAAuB,OAAO,EACpDr+R,EAAE,aAAa,YAAYw+R,EAAenL,EAAYn6P,EAAM,KAAK,CACrE,CAEA,SAASimQ,GAAmBn/R,EAAGk5B,EAAO,CAClC,QAAS92B,EAAI,EAAGA,EAAI01R,GAAoB11R,IAAK,CACzC,MAAMi8R,EAAyBD,GAA+Bp+R,EAAGk5B,CAAK,EACtE,GAAI,CAACmlQ,EACD,MAEJ,MAAMG,EAAgBD,GAAsBv+R,EAAGq+R,CAAsB,EACrE,GAAI,CAACG,EACD,MAEJx+R,EAAE,yBAAyB,SAAWq+R,EACtC,MAAMM,EAAcF,GAAYz+R,EAAGw+R,EAAeH,EAAuB,OAAO,EAC1EY,EAAiBj/R,EAAE,aAAa,kBAAkBq+R,EAAuB,OAAO,EACtFr+R,EAAE,YAAY,WAAW2+R,CAAW,EAChCM,GACAD,GAAiCh/R,EAAGi/R,EAAgBN,CAAW,EACnEO,GAA2Bl/R,EAAGw+R,EAAeH,CAAsB,CACvE,CACJ,CAGA,SAAStD,GAAc/6R,EAAGk5B,EAAO,CAC7Bl5B,EAAE,mBAAmBk5B,EAAOl5B,EAAE,aAAa,wBAAwB,CACvE,CACA,SAASi7R,GAA+Bj7R,EAAGk5B,EAAO,CAC9Cl5B,EAAE,mBAAmBk5B,EAAOl5B,EAAE,aAAa,MAAM,CAAC,CAAC,CACvD,CACA,SAASk7R,GAAwBl7R,EAAGk5B,EAAO,CACvCl5B,EAAE,mBAAmBk5B,EAAOl5B,EAAE,QAAQ,CAC1C,CACA,SAASg+R,GAAYh+R,EAAGk5B,EAAO,CAG3B,GAFAl5B,EAAE,QAAU,GAERk5B,EAAM,SAAU,CAGhB,MAAMx4B,EAASV,EAAE,gBAAkB,EAAI,EACvC,QAASoC,EAAIpC,EAAE,aAAa,SAAUoC,GAAK1B,EAAQ0B,IAC/CpC,EAAE,gBAAgBA,EAAE,aAAa,MAAMoC,CAAC,EAAG82B,CAAK,EAGpD,GAAI,CAACl5B,EAAE,iBAAmBA,EAAE,aAAa,UAAY,EAAG,CACpD,MAAMwmC,EAAcxmC,EAAE,aAAa,MAAM,CAAC,EACpCo/R,EAAep/R,EAAE,YAAY,0BAA0BwmC,CAAW,EACxE,GAAI44P,GAAgB,CAACA,EAAa,SAC9Bp/R,EAAE,gBAAgBwmC,EAAatN,CAAK,EAChCl5B,EAAE,aAAa,UAAY,GAAG,CAC9B,MAAMq/R,EAAcr/R,EAAE,aAAa,MAAM,CAAC,EACpCs/R,EAAet/R,EAAE,YAAY,0BAA0Bq/R,CAAW,EACpEC,GAAgB,CAACA,EAAa,QAC9Bt/R,EAAE,gBAAgBq/R,EAAanmQ,CAAK,CAE5C,CAER,CACJ,CACJ,CAGA,SAASiiQ,GAAqBn7R,EAAGk5B,EAAO,CACpCl5B,EAAE,iBAAiBk5B,CAAK,EACxB,MAAMq5E,EAAOr5E,EAAM,YAAcw3P,GAAc,OAAS6O,GAAwBrmQ,CAAK,EAChFsmQ,GAAqBtmQ,CAAK,GAC3Bl5B,EAAE,KAAKk5B,EAAO80P,GAAI,oBAAoB,EAE1ChuR,EAAE,YAAY,gBAAgBA,EAAE,SAAUuyG,CAAI,EAC9CvyG,EAAE,cAAgBg4R,GAAc,WACpC,CACA,SAASkC,GAAmBl6R,EAAGk5B,EAAO,CAClCl5B,EAAE,KAAKk5B,EAAO80P,GAAI,eAAgB,EAAI,EACtChuR,EAAE,YAAY,gBAAgBA,EAAE,SAAU0wR,GAAc,MAAM,EAC9D1wR,EAAE,cAAgBg4R,GAAc,YAChCh4R,EAAE,cAAck5B,CAAK,CACzB,CAGA,SAASmiQ,GAAmBr7R,EAAGk5B,EAAO,CAC9BA,EAAM,QAAUsyL,EAAE,MAClBxrN,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,EAC/BxwR,EAAE,cAAgBg4R,GAAc,aAGhCmC,GAAgBn6R,EAAGk5B,CAAK,CAEhC,CACA,SAASwjQ,GAAiB18R,EAAGk5B,EAAO,CAChC,MAAM46P,EAAK56P,EAAM,OACb46P,IAAOtoE,EAAE,MAAQsoE,IAAOtoE,EAAE,MAAQsoE,IAAOtoE,EAAE,MAAQsoE,IAAOtoE,EAAE,KAC5D2uE,GAAgBn6R,EAAGk5B,CAAK,CAEhC,CACA,SAASihQ,GAAgBn6R,EAAGk5B,EAAO,CAC/Bl5B,EAAE,uBAAsB,EACxBA,EAAE,cAAgBg4R,GAAc,YAChCh4R,EAAE,cAAck5B,CAAK,CACzB,CAGA,SAASoiQ,GAAmBt7R,EAAGk5B,EAAO,CAClC,OAAQA,EAAM,MAAK,CACf,KAAKsyL,EAAE,KAAM,CACTkwE,GAAe17R,EAAGk5B,CAAK,EACvB,KACJ,CACA,KAAKsyL,EAAE,KAAM,CACTxrN,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,EAC/BxwR,EAAE,YAAcA,EAAE,aAAa,QAC/BA,EAAE,cAAgBg4R,GAAc,QAChC,KACJ,CACA,QACIoC,GAAgBp6R,EAAGk5B,CAAK,CAEpC,CACA,CACA,SAASyjQ,GAAiB38R,EAAGk5B,EAAO,CAChC,MAAM46P,EAAK56P,EAAM,MACb46P,IAAOtoE,EAAE,MAAQsoE,IAAOtoE,EAAE,MAAQsoE,IAAOtoE,EAAE,MAAQsoE,IAAOtoE,EAAE,GAC5D4uE,GAAgBp6R,EAAGk5B,CAAK,EAGxBl5B,EAAE,KAAKk5B,EAAO80P,GAAI,gCAAgC,CAE1D,CACA,SAASoM,GAAgBp6R,EAAGk5B,EAAO,CAC/Bl5B,EAAE,mBAAmBu4R,GAAG,KAAM/sE,EAAE,IAAI,EACpCxrN,EAAE,YAAcA,EAAE,aAAa,QAC/BA,EAAE,cAAgBg4R,GAAc,QAChCh4R,EAAE,cAAck5B,CAAK,CACzB,CAGA,SAASqiQ,GAAev7R,EAAGk5B,EAAO,CAC9B,OAAQA,EAAM,MAAK,CACf,KAAKsyL,EAAE,KAAM,CACTkwE,GAAe17R,EAAGk5B,CAAK,EACvB,KACJ,CACA,KAAKsyL,EAAE,KACP,KAAKA,EAAE,SACP,KAAKA,EAAE,QACP,KAAKA,EAAE,KACP,KAAKA,EAAE,KAAM,CACTxrN,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,EAC/Bt3P,EAAM,eAAiB,GACvB,KACJ,CACA,KAAKsyL,EAAE,MAAO,CACVxrN,EAAE,qBAAqBk5B,EAAOg4P,GAAc,MAAM,EAClD,KACJ,CACA,KAAK1lE,EAAE,SAAU,CACTxrN,EAAE,QAAQ,iBACVA,EAAE,qBAAqBk5B,EAAOg4P,GAAc,OAAO,GAGnDlxR,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,EAC/BxwR,EAAE,cAAgBg4R,GAAc,mBAEpC,KACJ,CACA,KAAKxsE,EAAE,SACP,KAAKA,EAAE,MAAO,CACVxrN,EAAE,qBAAqBk5B,EAAOg4P,GAAc,OAAO,EACnD,KACJ,CACA,KAAK1lE,EAAE,OAAQ,CACXxrN,EAAE,qBAAqBk5B,EAAOg4P,GAAc,WAAW,EACvD,KACJ,CACA,KAAK1lE,EAAE,SAAU,CACbxrN,EAAE,gBAAgBk5B,CAAK,EACvBl5B,EAAE,yBAAyB,aAAY,EACvCA,EAAE,WAAa,GACfA,EAAE,cAAgBg4R,GAAc,YAChCh4R,EAAE,uBAAuB,QAAQg4R,GAAc,WAAW,EAC1D,KACJ,CACA,KAAKxsE,EAAE,KAAM,CACTxrN,EAAE,KAAKk5B,EAAO80P,GAAI,+BAA+B,EACjD,KACJ,CACA,QACIqM,GAAYr6R,EAAGk5B,CAAK,CAEhC,CACA,CACA,SAAS0jQ,GAAa58R,EAAGk5B,EAAO,CAC5B,OAAQA,EAAM,MAAK,CACf,KAAKsyL,EAAE,KAAM,CACTxrN,EAAE,aAAa,IAAG,EAClBA,EAAE,cAAgBg4R,GAAc,WAChC,KACJ,CACA,KAAKxsE,EAAE,KACP,KAAKA,EAAE,GACP,KAAKA,EAAE,KAAM,CACT6uE,GAAYr6R,EAAGk5B,CAAK,EACpB,KACJ,CACA,KAAKsyL,EAAE,SAAU,CACbi0E,GAAqBz/R,EAAGk5B,CAAK,EAC7B,KACJ,CACA,QACIl5B,EAAE,KAAKk5B,EAAO80P,GAAI,gCAAgC,CAE9D,CACA,CACA,SAASyR,GAAqBz/R,EAAGk5B,EAAO,CAChCl5B,EAAE,aAAa,UAAY,GAC3BA,EAAE,aAAa,iCAAgC,EAC3CA,EAAE,aAAa,eAAiBwrN,EAAE,UAClCxrN,EAAE,KAAKk5B,EAAO80P,GAAI,qCAAqC,EAE3DhuR,EAAE,aAAa,sBAAsBwrN,EAAE,QAAQ,EAC/CxrN,EAAE,yBAAyB,kBAAiB,EAC5CA,EAAE,uBAAuB,MAAK,EAC9BA,EAAE,oBAAmB,GAGrBA,EAAE,KAAKk5B,EAAO80P,GAAI,gCAAgC,CAE1D,CACA,SAASqM,GAAYr6R,EAAGk5B,EAAO,CAC3Bl5B,EAAE,aAAa,IAAG,EAClBA,EAAE,cAAgBg4R,GAAc,WAChCh4R,EAAE,cAAck5B,CAAK,CACzB,CAGA,SAASsiQ,GAAuBx7R,EAAGk5B,EAAO,CACtC,OAAQA,EAAM,MAAK,CACf,KAAKsyL,EAAE,KAAM,CACTkwE,GAAe17R,EAAGk5B,CAAK,EACvB,KACJ,CACA,KAAKsyL,EAAE,SACP,KAAKA,EAAE,QACP,KAAKA,EAAE,KACP,KAAKA,EAAE,KACP,KAAKA,EAAE,KACP,KAAKA,EAAE,SACP,KAAKA,EAAE,MAAO,CACV+vE,GAAev7R,EAAGk5B,CAAK,EACvB,KACJ,CACA,KAAKsyL,EAAE,SAAU,CACbxrN,EAAE,KAAKk5B,EAAO80P,GAAI,oBAAoB,EACtC,KACJ,CACA,QACIsM,GAAoBt6R,EAAGk5B,CAAK,CAExC,CACA,CACA,SAAS2jQ,GAAqB78R,EAAGk5B,EAAO,CACpC,OAAQA,EAAM,MAAK,CACf,KAAKsyL,EAAE,SAAU,CACbxrN,EAAE,aAAa,IAAG,EAClBA,EAAE,cAAgBg4R,GAAc,QAChC,KACJ,CACA,KAAKxsE,EAAE,GAAI,CACP8uE,GAAoBt6R,EAAGk5B,CAAK,EAC5B,KACJ,CACA,QACIl5B,EAAE,KAAKk5B,EAAO80P,GAAI,gCAAgC,CAE9D,CACA,CACA,SAASsM,GAAoBt6R,EAAGk5B,EAAO,CACnC,MAAMwmQ,EAAUxmQ,EAAM,OAASs1P,GAAU,IAAMR,GAAI,yBAA2BA,GAAI,kCAClFhuR,EAAE,KAAKk5B,EAAOwmQ,CAAO,EACrB1/R,EAAE,aAAa,IAAG,EAClBA,EAAE,cAAgBg4R,GAAc,QAChCh4R,EAAE,cAAck5B,CAAK,CACzB,CAGA,SAASuiQ,GAAkBz7R,EAAGk5B,EAAO,CACjC,OAAQA,EAAM,MAAK,CACf,KAAKsyL,EAAE,KAAM,CACTkwE,GAAe17R,EAAGk5B,CAAK,EACvB,KACJ,CACA,KAAKsyL,EAAE,KAAM,CACTxrN,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,EAC/BxwR,EAAE,WAAa,GACfA,EAAE,cAAgBg4R,GAAc,QAChC,KACJ,CACA,KAAKxsE,EAAE,SAAU,CACbxrN,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,EAC/BxwR,EAAE,cAAgBg4R,GAAc,YAChC,KACJ,CACA,KAAKxsE,EAAE,KACP,KAAKA,EAAE,SACP,KAAKA,EAAE,QACP,KAAKA,EAAE,KACP,KAAKA,EAAE,KACP,KAAKA,EAAE,SACP,KAAKA,EAAE,OACP,KAAKA,EAAE,MACP,KAAKA,EAAE,SACP,KAAKA,EAAE,MAAO,CACVxrN,EAAE,KAAKk5B,EAAO80P,GAAI,yBAAyB,EAC3ChuR,EAAE,aAAa,KAAKA,EAAE,YAAawrN,EAAE,IAAI,EACzC+vE,GAAev7R,EAAGk5B,CAAK,EACvBl5B,EAAE,aAAa,OAAOA,EAAE,WAAW,EACnC,KACJ,CACA,KAAKwrN,EAAE,KAAM,CACTxrN,EAAE,KAAKk5B,EAAO80P,GAAI,+BAA+B,EACjD,KACJ,CACA,QACIuM,GAAev6R,EAAGk5B,CAAK,CAEnC,CACA,CACA,SAAS4jQ,GAAgB98R,EAAGk5B,EAAO,CAC/B,OAAQA,EAAM,MAAK,CACf,KAAKsyL,EAAE,KACP,KAAKA,EAAE,KACP,KAAKA,EAAE,GAAI,CACP+uE,GAAev6R,EAAGk5B,CAAK,EACvB,KACJ,CACA,KAAKsyL,EAAE,SAAU,CACbi0E,GAAqBz/R,EAAGk5B,CAAK,EAC7B,KACJ,CACA,QACIl5B,EAAE,KAAKk5B,EAAO80P,GAAI,gCAAgC,CAE9D,CACA,CACA,SAASuM,GAAev6R,EAAGk5B,EAAO,CAC9Bl5B,EAAE,mBAAmBu4R,GAAG,KAAM/sE,EAAE,IAAI,EACpCxrN,EAAE,cAAgBg4R,GAAc,QAChC2H,GAAW3/R,EAAGk5B,CAAK,CACvB,CAGA,SAASymQ,GAAW3/R,EAAGk5B,EAAO,CAC1B,OAAQA,EAAM,KAAI,CACd,KAAKs1P,GAAU,UAAW,CACtBgM,GAAgBx6R,EAAGk5B,CAAK,EACxB,KACJ,CACA,KAAKs1P,GAAU,qBAAsB,CACjC0P,GAA0Bl+R,EAAGk5B,CAAK,EAClC,KACJ,CACA,KAAKs1P,GAAU,QAAS,CACpBuM,GAAc/6R,EAAGk5B,CAAK,EACtB,KACJ,CACA,KAAKs1P,GAAU,UAAW,CACtBkN,GAAe17R,EAAGk5B,CAAK,EACvB,KACJ,CACA,KAAKs1P,GAAU,QAAS,CACpBuO,GAAa/8R,EAAGk5B,CAAK,EACrB,KACJ,CACA,KAAKs1P,GAAU,IAAK,CAChBqP,GAAU79R,EAAGk5B,CAAK,EAClB,KACJ,CAGR,CACA,CACA,SAASglQ,GAA0Bl+R,EAAGk5B,EAAO,CACzCl5B,EAAE,qCAAoC,EACtCA,EAAE,kBAAkBk5B,CAAK,CAC7B,CACA,SAASshQ,GAAgBx6R,EAAGk5B,EAAO,CAC/Bl5B,EAAE,qCAAoC,EACtCA,EAAE,kBAAkBk5B,CAAK,EACzBl5B,EAAE,WAAa,EACnB,CACA,SAAS4/R,GAAmB5/R,EAAGk5B,EAAO,CAC9Bl5B,EAAE,aAAa,YAAc,GAC7BA,EAAE,YAAY,gBAAgBA,EAAE,aAAa,MAAM,CAAC,EAAGk5B,EAAM,KAAK,CAE1E,CACA,SAAS2mQ,GAAmB7/R,EAAGk5B,EAAO,CAClC,MAAMmmQ,EAAcr/R,EAAE,aAAa,iCAAgC,EAC/Dq/R,GAAer/R,EAAE,aAAa,YAAc,IAC5CA,EAAE,WAAa,GACfA,EAAE,YAAY,gBAAgBq/R,EAAanmQ,EAAM,KAAK,EAE9D,CACA,SAAS4mQ,GAAuB9/R,EAAGk5B,EAAO,CACtC,MAAMmmQ,EAAcr/R,EAAE,aAAa,iCAAgC,EAC/DA,EAAE,YAAcq/R,IAChBr/R,EAAE,YAAY,WAAWq/R,CAAW,EACpCr/R,EAAE,aAAa,sBAAqB,EACpCA,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,EAC/BxwR,EAAE,cAAgBg4R,GAAc,YAExC,CACA,SAAS+H,GAAsB//R,EAAGk5B,EAAO,CACjCl5B,EAAE,aAAa,iBAAiBwrN,EAAE,CAAC,GACnCxrN,EAAE,eAAc,EAEpBA,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,CACnC,CACA,SAASwP,GAA6BhgS,EAAGk5B,EAAO,CACxCl5B,EAAE,aAAa,iBAAiBwrN,EAAE,CAAC,GACnCxrN,EAAE,eAAc,EAEhBA,EAAE,aAAa,eAAiB,QAAagxR,GAAiB,IAAIhxR,EAAE,aAAa,YAAY,GAC7FA,EAAE,aAAa,IAAG,EAEtBA,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,CACnC,CACA,SAASyP,GAAkBjgS,EAAGk5B,EAAO,CAC7Bl5B,EAAE,aAAa,iBAAiBwrN,EAAE,CAAC,GACnCxrN,EAAE,eAAc,EAEpBA,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,EAG/BxwR,EAAE,gBAAkB,GACpBA,EAAE,WAAa,EACnB,CACA,SAASkgS,GAAmBlgS,EAAGk5B,EAAO,CAClC,MAAMinQ,EAAangS,EAAE,aAAa,UAAY,GAC1C,CAACA,EAAE,aAAemgS,KACdngS,EAAE,aAAa,iBAAiBwrN,EAAE,CAAC,GACnCxrN,EAAE,eAAc,EAEpBA,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,EAC1B2P,IACDngS,EAAE,YAAcA,EAAE,aAAa,SAG3C,CACA,SAASogS,GAAuBpgS,EAAGk5B,EAAO,CACtCl5B,EAAE,WAAa,GACf,MAAM8zR,EAAK56P,EAAM,MACjB,QAAS92B,EAAIpC,EAAE,aAAa,SAAUoC,GAAK,EAAGA,IAAK,CAC/C,MAAMwe,EAAY5gB,EAAE,aAAa,OAAOoC,CAAC,EACzC,GAAK0xR,IAAOtoE,EAAE,IAAM5qM,IAAc4qM,EAAE,KAC9BsoE,IAAOtoE,EAAE,IAAMsoE,IAAOtoE,EAAE,MAAQ5qM,IAAc4qM,EAAE,IAAM5qM,IAAc4qM,EAAE,IAAM,CAC9ExrN,EAAE,aAAa,oCAAoC4gB,CAAS,EAC5D5gB,EAAE,aAAa,sBAAsB4gB,CAAS,EAC9C,KACJ,CACA,GAAIA,IAAc4qM,EAAE,SAChB5qM,IAAc4qM,EAAE,KAChB5qM,IAAc4qM,EAAE,GAChBxrN,EAAE,kBAAkBA,EAAE,aAAa,MAAMoC,CAAC,EAAGwe,CAAS,EACtD,KAER,CACI5gB,EAAE,aAAa,iBAAiBwrN,EAAE,CAAC,GACnCxrN,EAAE,eAAc,EAEpBA,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,CACnC,CACA,SAAS6P,GAAwBrgS,EAAGk5B,EAAO,CACnCl5B,EAAE,aAAa,iBAAiBwrN,EAAE,CAAC,GACnCxrN,EAAE,eAAc,EAEpBA,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,EAC/BxwR,EAAE,UAAU,MAAQkxR,GAAc,SACtC,CACA,SAASoP,GAAqBtgS,EAAGk5B,EAAO,CAChCl5B,EAAE,aAAa,WAAWwrN,EAAE,MAAM,IAClCxrN,EAAE,aAAa,uBAAsB,EACrCA,EAAE,aAAa,sBAAsBwrN,EAAE,MAAM,GAEjDxrN,EAAE,qCAAoC,EACtCA,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,EAC/BxwR,EAAE,WAAa,EACnB,CACA,SAASugS,GAAgBvgS,EAAGk5B,EAAO,CAC/B,MAAMsnQ,EAAqBxgS,EAAE,yBAAyB,kCAAkCu4R,GAAG,CAAC,EACxFiI,IACArB,GAAmBn/R,EAAGk5B,CAAK,EAC3Bl5B,EAAE,aAAa,OAAOwgS,EAAmB,OAAO,EAChDxgS,EAAE,yBAAyB,YAAYwgS,CAAkB,GAE7DxgS,EAAE,qCAAoC,EACtCA,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,EAC/BxwR,EAAE,yBAAyB,YAAYA,EAAE,aAAa,QAASk5B,CAAK,CACxE,CACA,SAASunQ,GAAgBzgS,EAAGk5B,EAAO,CAC/Bl5B,EAAE,qCAAoC,EACtCA,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,EAC/BxwR,EAAE,yBAAyB,YAAYA,EAAE,aAAa,QAASk5B,CAAK,CACxE,CACA,SAASwnQ,GAAmB1gS,EAAGk5B,EAAO,CAClCl5B,EAAE,qCAAoC,EAClCA,EAAE,aAAa,WAAWwrN,EAAE,IAAI,IAChC2zE,GAAmBn/R,EAAGk5B,CAAK,EAC3Bl5B,EAAE,qCAAoC,GAE1CA,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,EAC/BxwR,EAAE,yBAAyB,YAAYA,EAAE,aAAa,QAASk5B,CAAK,CACxE,CACA,SAASynQ,GAAqB3gS,EAAGk5B,EAAO,CACpCl5B,EAAE,qCAAoC,EACtCA,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,EAC/BxwR,EAAE,yBAAyB,aAAY,EACvCA,EAAE,WAAa,EACnB,CACA,SAAS4gS,GAAoB5gS,EAAGk5B,EAAO,CAC/Bl5B,EAAE,YAAY,gBAAgBA,EAAE,QAAQ,IAAM0wR,GAAc,QAAU1wR,EAAE,aAAa,iBAAiBwrN,EAAE,CAAC,GACzGxrN,EAAE,eAAc,EAEpBA,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,EAC/BxwR,EAAE,WAAa,GACfA,EAAE,cAAgBg4R,GAAc,QACpC,CACA,SAAS6I,GAAmB7gS,EAAGk5B,EAAO,CAClCl5B,EAAE,qCAAoC,EACtCA,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,EAC/BxwR,EAAE,WAAa,GACfk5B,EAAM,eAAiB,EAC3B,CACA,SAAS4nQ,GAAc5nQ,EAAO,CAC1B,MAAM6nQ,EAAYtS,GAAav1P,EAAOu3P,GAAM,IAAI,EAChD,OAAOsQ,GAAa,MAAQA,EAAU,YAAW,IAAOlJ,EAC5D,CACA,SAASmJ,GAAoBhhS,EAAGk5B,EAAO,CACnCl5B,EAAE,qCAAoC,EACtCA,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,EAC1BsQ,GAAc5nQ,CAAK,IACpBl5B,EAAE,WAAa,IAEnBk5B,EAAM,eAAiB,EAC3B,CACA,SAAS+nQ,GAAoBjhS,EAAGk5B,EAAO,CACnCl5B,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,EAC/Bt3P,EAAM,eAAiB,EAC3B,CACA,SAASgoQ,GAAiBlhS,EAAGk5B,EAAO,CAC5Bl5B,EAAE,aAAa,iBAAiBwrN,EAAE,CAAC,GACnCxrN,EAAE,eAAc,EAEpBA,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,EAC/BxwR,EAAE,WAAa,GACfk5B,EAAM,eAAiB,EAC3B,CACA,SAASioQ,GAAoBnhS,EAAGk5B,EAAO,CACnCA,EAAM,QAAUq/P,GAAG,IACnBr/P,EAAM,MAAQsyL,EAAE,IAChBq1E,GAAmB7gS,EAAGk5B,CAAK,CAC/B,CACA,SAASkoQ,GAAuBphS,EAAGk5B,EAAO,CACtCl5B,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,EAG/BxwR,EAAE,gBAAkB,GACpBA,EAAE,UAAU,MAAQkxR,GAAc,OAClClxR,EAAE,sBAAwBA,EAAE,cAC5BA,EAAE,WAAa,GACfA,EAAE,cAAgBg4R,GAAc,IACpC,CACA,SAASqJ,GAAkBrhS,EAAGk5B,EAAO,CAC7Bl5B,EAAE,aAAa,iBAAiBwrN,EAAE,CAAC,GACnCxrN,EAAE,eAAc,EAEpBA,EAAE,qCAAoC,EACtCA,EAAE,WAAa,GACfA,EAAE,qBAAqBk5B,EAAOg4P,GAAc,OAAO,CACvD,CACA,SAASoQ,GAAqBthS,EAAGk5B,EAAO,CACpCl5B,EAAE,WAAa,GACfA,EAAE,qBAAqBk5B,EAAOg4P,GAAc,OAAO,CACvD,CAGA,SAASqQ,GAAsBvhS,EAAGk5B,EAAO,CACrCl5B,EAAE,qBAAqBk5B,EAAOg4P,GAAc,OAAO,CACvD,CACA,SAASsQ,GAAqBxhS,EAAGk5B,EAAO,CACpCl5B,EAAE,qCAAoC,EACtCA,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,EAC/BxwR,EAAE,WAAa,GACfA,EAAE,cACEA,EAAE,gBAAkBg4R,GAAc,UAC9Bh4R,EAAE,gBAAkBg4R,GAAc,YAClCh4R,EAAE,gBAAkBg4R,GAAc,eAClCh4R,EAAE,gBAAkBg4R,GAAc,QAClCh4R,EAAE,gBAAkBg4R,GAAc,QAChCA,GAAc,mBACdA,GAAc,SAC5B,CACA,SAASyJ,GAAuBzhS,EAAGk5B,EAAO,CAClCl5B,EAAE,aAAa,eAAiBwrN,EAAE,QAClCxrN,EAAE,aAAa,IAAG,EAEtBA,EAAE,qCAAoC,EACtCA,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,CACnC,CACA,SAASkR,GAAiB1hS,EAAGk5B,EAAO,CAC5Bl5B,EAAE,aAAa,WAAWwrN,EAAE,IAAI,GAChCxrN,EAAE,aAAa,uBAAsB,EAEzCA,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,CACnC,CACA,SAASmR,GAAiB3hS,EAAGk5B,EAAO,CAC5Bl5B,EAAE,aAAa,WAAWwrN,EAAE,IAAI,GAChCxrN,EAAE,aAAa,oCAAoCwrN,EAAE,GAAG,EAE5DxrN,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,CACnC,CACA,SAASoR,GAAmB5hS,EAAGk5B,EAAO,CAClCl5B,EAAE,qCAAoC,EACtC6hS,GAAsC3oQ,CAAK,EAC3C4oQ,GAAmC5oQ,CAAK,EACpCA,EAAM,YACNl5B,EAAE,eAAek5B,EAAOs3P,GAAG,MAAM,EAGjCxwR,EAAE,eAAek5B,EAAOs3P,GAAG,MAAM,EAErCt3P,EAAM,eAAiB,EAC3B,CACA,SAAS6oQ,GAAkB/hS,EAAGk5B,EAAO,CACjCl5B,EAAE,qCAAoC,EACtCgiS,GAAmC9oQ,CAAK,EACxC4oQ,GAAmC5oQ,CAAK,EACpCA,EAAM,YACNl5B,EAAE,eAAek5B,EAAOs3P,GAAG,GAAG,EAG9BxwR,EAAE,eAAek5B,EAAOs3P,GAAG,GAAG,EAElCt3P,EAAM,eAAiB,EAC3B,CACA,SAAS+oQ,GAAsBjiS,EAAGk5B,EAAO,CACrCl5B,EAAE,qCAAoC,EACtCA,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,CACnC,CACA,SAASkL,GAAe17R,EAAGk5B,EAAO,CAC9B,OAAQA,EAAM,MAAK,CACf,KAAKsyL,EAAE,EACP,KAAKA,EAAE,EACP,KAAKA,EAAE,EACP,KAAKA,EAAE,EACP,KAAKA,EAAE,GACP,KAAKA,EAAE,GACP,KAAKA,EAAE,IACP,KAAKA,EAAE,KACP,KAAKA,EAAE,KACP,KAAKA,EAAE,MACP,KAAKA,EAAE,OACP,KAAKA,EAAE,OAAQ,CACXi1E,GAAgBzgS,EAAGk5B,CAAK,EACxB,KACJ,CACA,KAAKsyL,EAAE,EAAG,CACN+0E,GAAgBvgS,EAAGk5B,CAAK,EACxB,KACJ,CACA,KAAKsyL,EAAE,GACP,KAAKA,EAAE,GACP,KAAKA,EAAE,GACP,KAAKA,EAAE,GACP,KAAKA,EAAE,GACP,KAAKA,EAAE,GAAI,CACPw0E,GAA6BhgS,EAAGk5B,CAAK,EACrC,KACJ,CACA,KAAKsyL,EAAE,EACP,KAAKA,EAAE,GACP,KAAKA,EAAE,GACP,KAAKA,EAAE,GACP,KAAKA,EAAE,IACP,KAAKA,EAAE,IACP,KAAKA,EAAE,IACP,KAAKA,EAAE,KACP,KAAKA,EAAE,KACP,KAAKA,EAAE,MACP,KAAKA,EAAE,OACP,KAAKA,EAAE,OACP,KAAKA,EAAE,OACP,KAAKA,EAAE,OACP,KAAKA,EAAE,OACP,KAAKA,EAAE,OACP,KAAKA,EAAE,QACP,KAAKA,EAAE,QACP,KAAKA,EAAE,QACP,KAAKA,EAAE,OACP,KAAKA,EAAE,QACP,KAAKA,EAAE,QACP,KAAKA,EAAE,SACP,KAAKA,EAAE,WACP,KAAKA,EAAE,WAAY,CACfu0E,GAAsB//R,EAAGk5B,CAAK,EAC9B,KACJ,CACA,KAAKsyL,EAAE,GACP,KAAKA,EAAE,GACP,KAAKA,EAAE,GAAI,CACP40E,GAAuBpgS,EAAGk5B,CAAK,EAC/B,KACJ,CACA,KAAKsyL,EAAE,GACP,KAAKA,EAAE,IACP,KAAKA,EAAE,IACP,KAAKA,EAAE,KACP,KAAKA,EAAE,MACP,KAAKA,EAAE,OAAQ,CACXq1E,GAAmB7gS,EAAGk5B,CAAK,EAC3B,KACJ,CACA,KAAKsyL,EAAE,GAAI,CACP01E,GAAiBlhS,EAAGk5B,CAAK,EACzB,KACJ,CACA,KAAKsyL,EAAE,GACP,KAAKA,EAAE,IAAK,CACRk2E,GAAiB1hS,EAAGk5B,CAAK,EACzB,KACJ,CACA,KAAKsyL,EAAE,GACP,KAAKA,EAAE,GAAI,CACPm2E,GAAiB3hS,EAAGk5B,CAAK,EACzB,KACJ,CACA,KAAKsyL,EAAE,IACP,KAAKA,EAAE,QAAS,CACZy0E,GAAkBjgS,EAAGk5B,CAAK,EAC1B,KACJ,CACA,KAAKsyL,EAAE,IAAK,CACR61E,GAAkBrhS,EAAGk5B,CAAK,EAC1B,KACJ,CACA,KAAKsyL,EAAE,IAAK,CACRu2E,GAAkB/hS,EAAGk5B,CAAK,EAC1B,KACJ,CACA,KAAKsyL,EAAE,KAAM,CACTo0E,GAAmB5/R,EAAGk5B,CAAK,EAC3B,KACJ,CACA,KAAKsyL,EAAE,KACP,KAAKA,EAAE,KACP,KAAKA,EAAE,KACP,KAAKA,EAAE,MACP,KAAKA,EAAE,MACP,KAAKA,EAAE,OACP,KAAKA,EAAE,QACP,KAAKA,EAAE,SACP,KAAKA,EAAE,SAAU,CACb+vE,GAAev7R,EAAGk5B,CAAK,EACvB,KACJ,CACA,KAAKsyL,EAAE,KAAM,CACTq0E,GAAmB7/R,EAAGk5B,CAAK,EAC3B,KACJ,CACA,KAAKsyL,EAAE,KAAM,CACT00E,GAAmBlgS,EAAGk5B,CAAK,EAC3B,KACJ,CACA,KAAKsyL,EAAE,KAAM,CACTk1E,GAAmB1gS,EAAGk5B,CAAK,EAC3B,KACJ,CACA,KAAKsyL,EAAE,KAAM,CACTo2E,GAAmB5hS,EAAGk5B,CAAK,EAC3B,KACJ,CACA,KAAKsyL,EAAE,MAAO,CACVo1E,GAAoB5gS,EAAGk5B,CAAK,EAC5B,KACJ,CACA,KAAKsyL,EAAE,MAAO,CACVw1E,GAAoBhhS,EAAGk5B,CAAK,EAC5B,KACJ,CACA,KAAKsyL,EAAE,MACP,KAAKA,EAAE,MACP,KAAKA,EAAE,OAAQ,CACXy1E,GAAoBjhS,EAAGk5B,CAAK,EAC5B,KACJ,CACA,KAAKsyL,EAAE,MAAO,CACV21E,GAAoBnhS,EAAGk5B,CAAK,EAC5B,KACJ,CACA,KAAKsyL,EAAE,OAAQ,CACX80E,GAAqBtgS,EAAGk5B,CAAK,EAC7B,KACJ,CACA,KAAKsyL,EAAE,OACP,KAAKA,EAAE,OACP,KAAKA,EAAE,QAAS,CACZm1E,GAAqB3gS,EAAGk5B,CAAK,EAC7B,KACJ,CACA,KAAKsyL,EAAE,OAAQ,CACX81E,GAAqBthS,EAAGk5B,CAAK,EAC7B,KACJ,CACA,KAAKsyL,EAAE,OAAQ,CACXg2E,GAAqBxhS,EAAGk5B,CAAK,EAC7B,KACJ,CACA,KAAKsyL,EAAE,OACP,KAAKA,EAAE,SAAU,CACbi2E,GAAuBzhS,EAAGk5B,CAAK,EAC/B,KACJ,CACA,KAAKsyL,EAAE,QACP,KAAKA,EAAE,SAAU,CACb+1E,GAAsBvhS,EAAGk5B,CAAK,EAC9B,KACJ,CACA,KAAKsyL,EAAE,SAAU,CACbs0E,GAAuB9/R,EAAGk5B,CAAK,EAC/B,KACJ,CACA,KAAKsyL,EAAE,SAAU,CACb41E,GAAuBphS,EAAGk5B,CAAK,EAC/B,KACJ,CACA,KAAKsyL,EAAE,SAAU,CACTxrN,EAAE,QAAQ,iBACVuhS,GAAsBvhS,EAAGk5B,CAAK,EAG9B+oQ,GAAsBjiS,EAAGk5B,CAAK,EAElC,KACJ,CACA,KAAKsyL,EAAE,UAAW,CACd60E,GAAwBrgS,EAAGk5B,CAAK,EAChC,KACJ,CACA,KAAKsyL,EAAE,IACP,KAAKA,EAAE,GACP,KAAKA,EAAE,GACP,KAAKA,EAAE,GACP,KAAKA,EAAE,KACP,KAAKA,EAAE,MACP,KAAKA,EAAE,MACP,KAAKA,EAAE,MACP,KAAKA,EAAE,MACP,KAAKA,EAAE,QACP,KAAKA,EAAE,SAEH,MAEJ,QACIy2E,GAAsBjiS,EAAGk5B,CAAK,CAE1C,CACA,CACA,SAASgpQ,GAAiBliS,EAAGk5B,EAAO,CAChC,GAAIl5B,EAAE,aAAa,WAAWwrN,EAAE,IAAI,IAChCxrN,EAAE,cAAgBg4R,GAAc,WAG5Bh4R,EAAE,QAAQ,wBAAwB,CAClC,MAAMq/R,EAAcr/R,EAAE,aAAa,iCAAgC,EAC/Dq/R,GACAr/R,EAAE,gBAAgBq/R,EAAanmQ,CAAK,CAE5C,CAER,CACA,SAASipQ,GAAiBniS,EAAGk5B,EAAO,CAC5Bl5B,EAAE,aAAa,WAAWwrN,EAAE,IAAI,IAChCxrN,EAAE,cAAgBg4R,GAAc,WAChC0F,GAAgB19R,EAAGk5B,CAAK,EAEhC,CACA,SAASkpQ,GAAoBpiS,EAAGk5B,EAAO,CACnC,MAAM46P,EAAK56P,EAAM,MACbl5B,EAAE,aAAa,WAAW8zR,CAAE,IAC5B9zR,EAAE,aAAa,uBAAsB,EACrCA,EAAE,aAAa,sBAAsB8zR,CAAE,EAE/C,CACA,SAASuO,GAAiBriS,EAAG,CACzB,MAAMmgS,EAAangS,EAAE,aAAa,UAAY,EACxC,CAAE,YAAAsiS,CAAW,EAAKtiS,EACnBmgS,IACDngS,EAAE,YAAc,OAEfsiS,GAAenC,IAAengS,EAAE,aAAa,WAAWwrN,EAAE,IAAI,IAC/DxrN,EAAE,aAAa,uBAAsB,EACjCmgS,EACAngS,EAAE,aAAa,sBAAsBwrN,EAAE,IAAI,EAEtC82E,GACLtiS,EAAE,aAAa,OAAOsiS,CAAW,EAG7C,CACA,SAASC,GAAcviS,EAAG,CACjBA,EAAE,aAAa,iBAAiBwrN,EAAE,CAAC,GACpCxrN,EAAE,mBAAmBu4R,GAAG,EAAG/sE,EAAE,CAAC,EAElCxrN,EAAE,eAAc,CACpB,CACA,SAASwiS,GAAexiS,EAAG,CACnBA,EAAE,aAAa,mBAAmBwrN,EAAE,EAAE,IACtCxrN,EAAE,aAAa,oCAAoCwrN,EAAE,EAAE,EACvDxrN,EAAE,aAAa,sBAAsBwrN,EAAE,EAAE,EAEjD,CACA,SAASi3E,GAAeziS,EAAGk5B,EAAO,CAC9B,MAAM46P,EAAK56P,EAAM,MACbl5B,EAAE,aAAa,WAAW8zR,CAAE,IAC5B9zR,EAAE,aAAa,oCAAoC8zR,CAAE,EACrD9zR,EAAE,aAAa,sBAAsB8zR,CAAE,EAE/C,CACA,SAAS4O,GAA2B1iS,EAAG,CAC/BA,EAAE,aAAa,6BACfA,EAAE,aAAa,uBAAsB,EACrCA,EAAE,aAAa,6BAA4B,EAEnD,CACA,SAAS2iS,GAAmB3iS,EAAGk5B,EAAO,CAClC,MAAM46P,EAAK56P,EAAM,MACbl5B,EAAE,aAAa,WAAW8zR,CAAE,IAC5B9zR,EAAE,aAAa,uBAAsB,EACrCA,EAAE,aAAa,sBAAsB8zR,CAAE,EACvC9zR,EAAE,yBAAyB,kBAAiB,EAEpD,CACA,SAAS4iS,GAAe5iS,EAAG,CACvBA,EAAE,qCAAoC,EACtCA,EAAE,mBAAmBu4R,GAAG,GAAI/sE,EAAE,EAAE,EAChCxrN,EAAE,aAAa,IAAG,EAClBA,EAAE,WAAa,EACnB,CACA,SAASs+R,GAAoBt+R,EAAGk5B,EAAO,CACnC,MAAM46P,EAAK56P,EAAM,QACXy/P,EAAMz/P,EAAM,MAClB,QAAS,EAAIl5B,EAAE,aAAa,SAAU,EAAI,EAAG,IAAK,CAC9C,MAAMspB,EAAUtpB,EAAE,aAAa,MAAM,CAAC,EAChC4gB,EAAY5gB,EAAE,aAAa,OAAO,CAAC,EAEzC,GAAI24R,IAAQ/3Q,IAAc+3Q,IAAQntE,EAAE,SAAWxrN,EAAE,YAAY,WAAWspB,CAAO,IAAMwqQ,GAAK,CACtF9zR,EAAE,aAAa,oCAAoC24R,CAAG,EAClD34R,EAAE,aAAa,UAAY,GAC3BA,EAAE,aAAa,gBAAgB,CAAC,EACpC,KACJ,CACA,GAAIA,EAAE,kBAAkBspB,EAAS1I,CAAS,EACtC,KAER,CACJ,CACA,SAASm8Q,GAAa/8R,EAAGk5B,EAAO,CAC5B,OAAQA,EAAM,MAAK,CACf,KAAKsyL,EAAE,EACP,KAAKA,EAAE,EACP,KAAKA,EAAE,EACP,KAAKA,EAAE,EACP,KAAKA,EAAE,EACP,KAAKA,EAAE,GACP,KAAKA,EAAE,GACP,KAAKA,EAAE,IACP,KAAKA,EAAE,KACP,KAAKA,EAAE,KACP,KAAKA,EAAE,KACP,KAAKA,EAAE,MACP,KAAKA,EAAE,OACP,KAAKA,EAAE,OAAQ,CACX2zE,GAAmBn/R,EAAGk5B,CAAK,EAC3B,KACJ,CACA,KAAKsyL,EAAE,EAAG,CACN+2E,GAAcviS,CAAC,EACf,KACJ,CACA,KAAKwrN,EAAE,GACP,KAAKA,EAAE,GACP,KAAKA,EAAE,GACP,KAAKA,EAAE,IACP,KAAKA,EAAE,IACP,KAAKA,EAAE,IACP,KAAKA,EAAE,IACP,KAAKA,EAAE,KACP,KAAKA,EAAE,KACP,KAAKA,EAAE,MACP,KAAKA,EAAE,OACP,KAAKA,EAAE,OACP,KAAKA,EAAE,OACP,KAAKA,EAAE,OACP,KAAKA,EAAE,OACP,KAAKA,EAAE,OACP,KAAKA,EAAE,OACP,KAAKA,EAAE,QACP,KAAKA,EAAE,QACP,KAAKA,EAAE,QACP,KAAKA,EAAE,OACP,KAAKA,EAAE,QACP,KAAKA,EAAE,QACP,KAAKA,EAAE,QACP,KAAKA,EAAE,SACP,KAAKA,EAAE,WACP,KAAKA,EAAE,WAAY,CACf42E,GAAoBpiS,EAAGk5B,CAAK,EAC5B,KACJ,CACA,KAAKsyL,EAAE,GAAI,CACPg3E,GAAexiS,CAAC,EAChB,KACJ,CACA,KAAKwrN,EAAE,GACP,KAAKA,EAAE,GAAI,CACPi3E,GAAeziS,EAAGk5B,CAAK,EACvB,KACJ,CACA,KAAKsyL,EAAE,GACP,KAAKA,EAAE,GACP,KAAKA,EAAE,GACP,KAAKA,EAAE,GACP,KAAKA,EAAE,GACP,KAAKA,EAAE,GAAI,CACPk3E,GAA2B1iS,CAAC,EAC5B,KACJ,CACA,KAAKwrN,EAAE,GAAI,CACPo3E,GAAe5iS,CAAC,EAChB,KACJ,CACA,KAAKwrN,EAAE,KAAM,CACT02E,GAAiBliS,EAAGk5B,CAAK,EACzB,KACJ,CACA,KAAKsyL,EAAE,KAAM,CACT22E,GAAiBniS,EAAGk5B,CAAK,EACzB,KACJ,CACA,KAAKsyL,EAAE,KAAM,CACT62E,GAAiBriS,CAAC,EAClB,KACJ,CACA,KAAKwrN,EAAE,OACP,KAAKA,EAAE,OACP,KAAKA,EAAE,QAAS,CACZm3E,GAAmB3iS,EAAGk5B,CAAK,EAC3B,KACJ,CACA,KAAKsyL,EAAE,SAAU,CACbi0E,GAAqBz/R,EAAGk5B,CAAK,EAC7B,KACJ,CACA,QACIolQ,GAAoBt+R,EAAGk5B,CAAK,CAExC,CACA,CACA,SAAS2kQ,GAAU79R,EAAGk5B,EAAO,CACrBl5B,EAAE,uBAAuB,OAAS,EAClC+9R,GAAc/9R,EAAGk5B,CAAK,EAGtB8kQ,GAAYh+R,EAAGk5B,CAAK,CAE5B,CAGA,SAAS8jQ,GAAah9R,EAAGk5B,EAAO,CAC5B,IAAIp2B,EACAo2B,EAAM,QAAUsyL,EAAE,UACjB1oN,EAAK9C,EAAE,iBAAmB,MAAQ8C,IAAO,QAAkBA,EAAG,KAAK9C,EAAGA,EAAE,aAAa,OAAO,GAEjGA,EAAE,aAAa,IAAG,EAClBA,EAAE,cAAgBA,EAAE,qBACxB,CACA,SAAS89R,GAAU99R,EAAGk5B,EAAO,CACzBl5B,EAAE,KAAKk5B,EAAO80P,GAAI,kCAAkC,EACpDhuR,EAAE,aAAa,IAAG,EAClBA,EAAE,cAAgBA,EAAE,sBACpBA,EAAE,MAAMk5B,CAAK,CACjB,CAGA,SAASuhQ,GAAiBz6R,EAAGk5B,EAAO,CAChC,GAAIl5B,EAAE,aAAa,eAAiB,QAAak4R,GAAqB,IAAIl4R,EAAE,aAAa,YAAY,EAKjG,OAJAA,EAAE,uBAAuB,OAAS,EAClCA,EAAE,sCAAwC,GAC1CA,EAAE,sBAAwBA,EAAE,cAC5BA,EAAE,cAAgBg4R,GAAc,cACxB9+P,EAAM,KAAI,CACd,KAAKs1P,GAAU,UAAW,CACtBkM,GAAqB16R,EAAGk5B,CAAK,EAC7B,KACJ,CACA,KAAKs1P,GAAU,qBAAsB,CACjC2P,GAA+Bn+R,EAAGk5B,CAAK,EACvC,KACJ,CAEZ,MAGQ2pQ,GAAa7iS,EAAGk5B,CAAK,CAE7B,CACA,SAAS4pQ,GAAuB9iS,EAAGk5B,EAAO,CACtCl5B,EAAE,aAAa,wBAAuB,EACtCA,EAAE,yBAAyB,aAAY,EACvCA,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,EAC/BxwR,EAAE,cAAgBg4R,GAAc,UACpC,CACA,SAAS+K,GAAwB/iS,EAAGk5B,EAAO,CACvCl5B,EAAE,aAAa,wBAAuB,EACtCA,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,EAC/BxwR,EAAE,cAAgBg4R,GAAc,eACpC,CACA,SAASgL,GAAmBhjS,EAAGk5B,EAAO,CAClCl5B,EAAE,aAAa,wBAAuB,EACtCA,EAAE,mBAAmBu4R,GAAG,SAAU/sE,EAAE,QAAQ,EAC5CxrN,EAAE,cAAgBg4R,GAAc,gBAChC6D,GAAsB77R,EAAGk5B,CAAK,CAClC,CACA,SAAS+pQ,GAAqBjjS,EAAGk5B,EAAO,CACpCl5B,EAAE,aAAa,wBAAuB,EACtCA,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,EAC/BxwR,EAAE,cAAgBg4R,GAAc,aACpC,CACA,SAASkL,GAAkBljS,EAAGk5B,EAAO,CACjCl5B,EAAE,aAAa,wBAAuB,EACtCA,EAAE,mBAAmBu4R,GAAG,MAAO/sE,EAAE,KAAK,EACtCxrN,EAAE,cAAgBg4R,GAAc,cAChC8D,GAAoB97R,EAAGk5B,CAAK,CAChC,CACA,SAASiqQ,GAAqBnjS,EAAGk5B,EAAO,CAChCl5B,EAAE,aAAa,gBAAgBwrN,EAAE,KAAK,IACtCxrN,EAAE,aAAa,sBAAsBwrN,EAAE,KAAK,EAC5CxrN,EAAE,oBAAmB,EACrBA,EAAE,iBAAiBk5B,CAAK,EAEhC,CACA,SAASkqQ,GAAqBpjS,EAAGk5B,EAAO,CAChC4nQ,GAAc5nQ,CAAK,EACnBl5B,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,EAG/BqS,GAAa7iS,EAAGk5B,CAAK,EAEzBA,EAAM,eAAiB,EAC3B,CACA,SAASmqQ,GAAoBrjS,EAAGk5B,EAAO,CAC/B,CAACl5B,EAAE,aAAeA,EAAE,aAAa,YAAc,IAC/CA,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,EAC/BxwR,EAAE,YAAcA,EAAE,aAAa,QAC/BA,EAAE,aAAa,IAAG,EAE1B,CACA,SAAS27R,GAAgB37R,EAAGk5B,EAAO,CAC/B,OAAQA,EAAM,MAAK,CACf,KAAKsyL,EAAE,GACP,KAAKA,EAAE,GACP,KAAKA,EAAE,GAAI,CACP03E,GAAkBljS,EAAGk5B,CAAK,EAC1B,KACJ,CACA,KAAKsyL,EAAE,MACP,KAAKA,EAAE,OACP,KAAKA,EAAE,SAAU,CACb+vE,GAAev7R,EAAGk5B,CAAK,EACvB,KACJ,CACA,KAAKsyL,EAAE,IAAK,CACRw3E,GAAmBhjS,EAAGk5B,CAAK,EAC3B,KACJ,CACA,KAAKsyL,EAAE,KAAM,CACT63E,GAAoBrjS,EAAGk5B,CAAK,EAC5B,KACJ,CACA,KAAKsyL,EAAE,MAAO,CACV23E,GAAqBnjS,EAAGk5B,CAAK,EAC7B,KACJ,CACA,KAAKsyL,EAAE,MACP,KAAKA,EAAE,MACP,KAAKA,EAAE,MAAO,CACVy3E,GAAqBjjS,EAAGk5B,CAAK,EAC7B,KACJ,CACA,KAAKsyL,EAAE,MAAO,CACV43E,GAAqBpjS,EAAGk5B,CAAK,EAC7B,KACJ,CACA,KAAKsyL,EAAE,QAAS,CACZs3E,GAAuB9iS,EAAGk5B,CAAK,EAC/B,KACJ,CACA,KAAKsyL,EAAE,SAAU,CACbu3E,GAAwB/iS,EAAGk5B,CAAK,EAChC,KACJ,CACA,QACI2pQ,GAAa7iS,EAAGk5B,CAAK,CAEjC,CACA,CACA,SAAS+jQ,GAAcj9R,EAAGk5B,EAAO,CAC7B,OAAQA,EAAM,MAAK,CACf,KAAKsyL,EAAE,MAAO,CACNxrN,EAAE,aAAa,gBAAgBwrN,EAAE,KAAK,IACtCxrN,EAAE,aAAa,sBAAsBwrN,EAAE,KAAK,EAC5CxrN,EAAE,oBAAmB,GAEzB,KACJ,CACA,KAAKwrN,EAAE,SAAU,CACbi0E,GAAqBz/R,EAAGk5B,CAAK,EAC7B,KACJ,CACA,KAAKsyL,EAAE,KACP,KAAKA,EAAE,QACP,KAAKA,EAAE,IACP,KAAKA,EAAE,SACP,KAAKA,EAAE,KACP,KAAKA,EAAE,MACP,KAAKA,EAAE,GACP,KAAKA,EAAE,MACP,KAAKA,EAAE,GACP,KAAKA,EAAE,MACP,KAAKA,EAAE,GAEH,MAEJ,QACIq3E,GAAa7iS,EAAGk5B,CAAK,CAEjC,CACA,CACA,SAAS2pQ,GAAa7iS,EAAGk5B,EAAO,CAC5B,MAAMoqQ,EAA4BtjS,EAAE,uBACpCA,EAAE,uBAAyB,GAE3B2/R,GAAW3/R,EAAGk5B,CAAK,EACnBl5B,EAAE,uBAAyBsjS,CAC/B,CAGA,SAASnF,GAA+Bn+R,EAAGk5B,EAAO,CAC9Cl5B,EAAE,uBAAuB,KAAKk5B,CAAK,CACvC,CACA,SAASwhQ,GAAqB16R,EAAGk5B,EAAO,CACpCl5B,EAAE,uBAAuB,KAAKk5B,CAAK,EACnCl5B,EAAE,sCAAwC,EAC9C,CACA,SAASg7R,GAAiBh7R,EAAGk5B,EAAO,CAChC,IAAI92B,EAAI,EACR,GAAIpC,EAAE,sCACF,KAAOoC,EAAIpC,EAAE,uBAAuB,OAAQoC,IACxCygS,GAAa7iS,EAAGA,EAAE,uBAAuBoC,CAAC,CAAC,MAI/C,MAAOA,EAAIpC,EAAE,uBAAuB,OAAQoC,IACxCpC,EAAE,kBAAkBA,EAAE,uBAAuBoC,CAAC,CAAC,EAGvDpC,EAAE,cAAgBA,EAAE,sBACpBA,EAAE,cAAck5B,CAAK,CACzB,CAGA,MAAMqqQ,GAAsB,IAAI,IAAI,CAAC/3E,EAAE,QAASA,EAAE,IAAKA,EAAE,SAAUA,EAAE,MAAOA,EAAE,GAAIA,EAAE,MAAOA,EAAE,GAAIA,EAAE,MAAOA,EAAE,EAAE,CAAC,EAC/G,SAASowE,GAAkB57R,EAAGk5B,EAAO,CACjC,MAAM46P,EAAK56P,EAAM,MACbqqQ,GAAoB,IAAIzP,CAAE,EACtB9zR,EAAE,aAAa,gBAAgBwrN,EAAE,OAAO,IACxCxrN,EAAE,aAAa,uBAAsB,EACrCA,EAAE,aAAa,sBAAsBwrN,EAAE,OAAO,EAC9CxrN,EAAE,yBAAyB,kBAAiB,EAC5CA,EAAE,cAAgBg4R,GAAc,SAChC2D,GAAgB37R,EAAGk5B,CAAK,GAI5BwiQ,GAAe17R,EAAGk5B,CAAK,CAE/B,CACA,SAASgkQ,GAAgBl9R,EAAGk5B,EAAO,CAC/B,MAAM46P,EAAK56P,EAAM,MACjB,OAAQ46P,EAAE,CACN,KAAKtoE,EAAE,QACP,KAAKA,EAAE,MAAO,CACNxrN,EAAE,aAAa,gBAAgBwrN,EAAE,OAAO,IACxCxrN,EAAE,aAAa,uBAAsB,EACrCA,EAAE,aAAa,sBAAsBwrN,EAAE,OAAO,EAC9CxrN,EAAE,yBAAyB,kBAAiB,EAC5CA,EAAE,cAAgBg4R,GAAc,SAC5BlE,IAAOtoE,EAAE,OACTyxE,GAAcj9R,EAAGk5B,CAAK,GAG9B,KACJ,CACA,KAAKsyL,EAAE,KACP,KAAKA,EAAE,IACP,KAAKA,EAAE,SACP,KAAKA,EAAE,KACP,KAAKA,EAAE,MACP,KAAKA,EAAE,GACP,KAAKA,EAAE,MACP,KAAKA,EAAE,GACP,KAAKA,EAAE,MACP,KAAKA,EAAE,GAEH,MAEJ,QACIuxE,GAAa/8R,EAAGk5B,CAAK,CAEjC,CACA,CAGA,SAAS2iQ,GAAsB77R,EAAGk5B,EAAO,CACrC,OAAQA,EAAM,MAAK,CACf,KAAKsyL,EAAE,KAAM,CACTkwE,GAAe17R,EAAGk5B,CAAK,EACvB,KACJ,CACA,KAAKsyL,EAAE,IAAK,CACRxrN,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,EAC/Bt3P,EAAM,eAAiB,GACvB,KACJ,CACA,KAAKsyL,EAAE,SAAU,CACb+vE,GAAev7R,EAAGk5B,CAAK,EACvB,KACJ,CACA,QACIyhQ,GAAmB36R,EAAGk5B,CAAK,CAEvC,CACA,CACA,SAASikQ,GAAoBn9R,EAAGk5B,EAAO,CACnC,OAAQA,EAAM,MAAK,CACf,KAAKsyL,EAAE,SAAU,CACTxrN,EAAE,aAAa,eAAiBwrN,EAAE,WAClCxrN,EAAE,aAAa,IAAG,EAClBA,EAAE,cAAgBg4R,GAAc,UAEpC,KACJ,CACA,KAAKxsE,EAAE,SAAU,CACbi0E,GAAqBz/R,EAAGk5B,CAAK,EAC7B,KACJ,CACA,KAAKsyL,EAAE,IAEH,MAEJ,QACImvE,GAAmB36R,EAAGk5B,CAAK,CAEvC,CACA,CACA,SAASyhQ,GAAmB36R,EAAGk5B,EAAO,CAC9Bl5B,EAAE,aAAa,eAAiBwrN,EAAE,WAClCxrN,EAAE,aAAa,IAAG,EAClBA,EAAE,cAAgBg4R,GAAc,SAChCh4R,EAAE,cAAck5B,CAAK,EAE7B,CAGA,SAAS4iQ,GAAoB97R,EAAGk5B,EAAO,CACnC,OAAQA,EAAM,MAAK,CACf,KAAKsyL,EAAE,GAAI,CACPxrN,EAAE,aAAa,4BAA2B,EAC1CA,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,EAC/BxwR,EAAE,cAAgBg4R,GAAc,OAChC,KACJ,CACA,KAAKxsE,EAAE,GACP,KAAKA,EAAE,GAAI,CACPxrN,EAAE,aAAa,4BAA2B,EAC1CA,EAAE,mBAAmBu4R,GAAG,GAAI/sE,EAAE,EAAE,EAChCxrN,EAAE,cAAgBg4R,GAAc,OAChC+D,GAAc/7R,EAAGk5B,CAAK,EACtB,KACJ,CACA,KAAKsyL,EAAE,QACP,KAAKA,EAAE,IACP,KAAKA,EAAE,SACP,KAAKA,EAAE,MACP,KAAKA,EAAE,MACP,KAAKA,EAAE,MAAO,CACNxrN,EAAE,aAAa,oCACfA,EAAE,aAAa,4BAA2B,EAC1CA,EAAE,aAAa,IAAG,EAClBA,EAAE,cAAgBg4R,GAAc,SAChC2D,GAAgB37R,EAAGk5B,CAAK,GAE5B,KACJ,CACA,QACIyiQ,GAAgB37R,EAAGk5B,CAAK,CAEpC,CACA,CACA,SAASkkQ,GAAkBp9R,EAAGk5B,EAAO,CACjC,MAAM46P,EAAK56P,EAAM,MACjB,OAAQA,EAAM,MAAK,CACf,KAAKsyL,EAAE,MACP,KAAKA,EAAE,MACP,KAAKA,EAAE,MAAO,CACNxrN,EAAE,aAAa,gBAAgB8zR,CAAE,IACjC9zR,EAAE,aAAa,4BAA2B,EAC1CA,EAAE,aAAa,IAAG,EAClBA,EAAE,cAAgBg4R,GAAc,UAEpC,KACJ,CACA,KAAKxsE,EAAE,MAAO,CACNxrN,EAAE,aAAa,oCACfA,EAAE,aAAa,4BAA2B,EAC1CA,EAAE,aAAa,IAAG,EAClBA,EAAE,cAAgBg4R,GAAc,SAChCiF,GAAcj9R,EAAGk5B,CAAK,GAE1B,KACJ,CACA,KAAKsyL,EAAE,KACP,KAAKA,EAAE,QACP,KAAKA,EAAE,IACP,KAAKA,EAAE,SACP,KAAKA,EAAE,KACP,KAAKA,EAAE,GACP,KAAKA,EAAE,GACP,KAAKA,EAAE,GAEH,MAEJ,QACIyxE,GAAcj9R,EAAGk5B,CAAK,CAElC,CACA,CAGA,SAAS6iQ,GAAc/7R,EAAGk5B,EAAO,CAC7B,OAAQA,EAAM,MAAK,CACf,KAAKsyL,EAAE,GACP,KAAKA,EAAE,GAAI,CACPxrN,EAAE,aAAa,2BAA0B,EACzCA,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,EAC/BxwR,EAAE,cAAgBg4R,GAAc,QAChCh4R,EAAE,yBAAyB,aAAY,EACvC,KACJ,CACA,KAAKwrN,EAAE,QACP,KAAKA,EAAE,IACP,KAAKA,EAAE,SACP,KAAKA,EAAE,MACP,KAAKA,EAAE,MACP,KAAKA,EAAE,MACP,KAAKA,EAAE,GAAI,CACHxrN,EAAE,aAAa,gBAAgBwrN,EAAE,EAAE,IACnCxrN,EAAE,aAAa,2BAA0B,EACzCA,EAAE,aAAa,IAAG,EAClBA,EAAE,cAAgBg4R,GAAc,cAChC8D,GAAoB97R,EAAGk5B,CAAK,GAEhC,KACJ,CACA,QACIyiQ,GAAgB37R,EAAGk5B,CAAK,CAEpC,CACA,CACA,SAASmkQ,GAAYr9R,EAAGk5B,EAAO,CAC3B,OAAQA,EAAM,MAAK,CACf,KAAKsyL,EAAE,GAAI,CACHxrN,EAAE,aAAa,gBAAgBwrN,EAAE,EAAE,IACnCxrN,EAAE,aAAa,2BAA0B,EACzCA,EAAE,aAAa,IAAG,EAClBA,EAAE,cAAgBg4R,GAAc,eAEpC,KACJ,CACA,KAAKxsE,EAAE,MAAO,CACNxrN,EAAE,aAAa,gBAAgBwrN,EAAE,EAAE,IACnCxrN,EAAE,aAAa,2BAA0B,EACzCA,EAAE,aAAa,IAAG,EAClBA,EAAE,cAAgBg4R,GAAc,cAChCoF,GAAkBp9R,EAAGk5B,CAAK,GAE9B,KACJ,CACA,KAAKsyL,EAAE,MACP,KAAKA,EAAE,MACP,KAAKA,EAAE,MAAO,EACNxrN,EAAE,aAAa,gBAAgBk5B,EAAM,KAAK,GAAKl5B,EAAE,aAAa,gBAAgBwrN,EAAE,EAAE,KAClFxrN,EAAE,aAAa,2BAA0B,EACzCA,EAAE,aAAa,IAAG,EAClBA,EAAE,cAAgBg4R,GAAc,cAChCoF,GAAkBp9R,EAAGk5B,CAAK,GAE9B,KACJ,CACA,KAAKsyL,EAAE,KACP,KAAKA,EAAE,QACP,KAAKA,EAAE,IACP,KAAKA,EAAE,SACP,KAAKA,EAAE,KACP,KAAKA,EAAE,GACP,KAAKA,EAAE,GAEH,MAEJ,QACIyxE,GAAcj9R,EAAGk5B,CAAK,CAElC,CACA,CAGA,SAAS8iQ,GAAeh8R,EAAGk5B,EAAO,CAC9B,MAAM46P,EAAK56P,EAAM,MACbqqQ,GAAoB,IAAIzP,CAAE,GACtB9zR,EAAE,aAAa,gBAAgBwrN,EAAE,EAAE,GAAKxrN,EAAE,aAAa,gBAAgBwrN,EAAE,EAAE,KAC3ExrN,EAAE,gBAAe,EACjB+7R,GAAc/7R,EAAGk5B,CAAK,GAI1BwiQ,GAAe17R,EAAGk5B,CAAK,CAE/B,CACA,SAASokQ,GAAat9R,EAAGk5B,EAAO,CAC5B,MAAM46P,EAAK56P,EAAM,MACjB,OAAQ46P,EAAE,CACN,KAAKtoE,EAAE,GACP,KAAKA,EAAE,GAAI,CACHxrN,EAAE,aAAa,gBAAgB8zR,CAAE,IACjC9zR,EAAE,aAAa,uBAAsB,EACrCA,EAAE,aAAa,sBAAsB8zR,CAAE,EACvC9zR,EAAE,yBAAyB,kBAAiB,EAC5CA,EAAE,cAAgBg4R,GAAc,QAEpC,KACJ,CACA,KAAKxsE,EAAE,MACP,KAAKA,EAAE,MACP,KAAKA,EAAE,MACP,KAAKA,EAAE,MACP,KAAKA,EAAE,GAAI,CACHxrN,EAAE,aAAa,gBAAgB8zR,CAAE,IACjC9zR,EAAE,gBAAe,EACjBq9R,GAAYr9R,EAAGk5B,CAAK,GAExB,KACJ,CACA,KAAKsyL,EAAE,KACP,KAAKA,EAAE,QACP,KAAKA,EAAE,IACP,KAAKA,EAAE,SACP,KAAKA,EAAE,KAEH,MAEJ,QACIuxE,GAAa/8R,EAAGk5B,CAAK,CAEjC,CACA,CAGA,SAAS+iQ,GAAiBj8R,EAAGk5B,EAAO,CAChC,OAAQA,EAAM,MAAK,CACf,KAAKsyL,EAAE,KAAM,CACTkwE,GAAe17R,EAAGk5B,CAAK,EACvB,KACJ,CACA,KAAKsyL,EAAE,OAAQ,CACPxrN,EAAE,aAAa,eAAiBwrN,EAAE,QAClCxrN,EAAE,aAAa,IAAG,EAEtBA,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,EAC/B,KACJ,CACA,KAAKhlE,EAAE,SAAU,CACTxrN,EAAE,aAAa,eAAiBwrN,EAAE,QAClCxrN,EAAE,aAAa,IAAG,EAElBA,EAAE,aAAa,eAAiBwrN,EAAE,UAClCxrN,EAAE,aAAa,IAAG,EAEtBA,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,EAC/B,KACJ,CACA,KAAKhlE,EAAE,GAAI,CACHxrN,EAAE,aAAa,eAAiBwrN,EAAE,QAClCxrN,EAAE,aAAa,IAAG,EAElBA,EAAE,aAAa,eAAiBwrN,EAAE,UAClCxrN,EAAE,aAAa,IAAG,EAEtBA,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,EAC/Bt3P,EAAM,eAAiB,GACvB,KACJ,CACA,KAAKsyL,EAAE,MACP,KAAKA,EAAE,OACP,KAAKA,EAAE,SACP,KAAKA,EAAE,OAAQ,CACPxrN,EAAE,aAAa,iBAAiBwrN,EAAE,MAAM,IACxCxrN,EAAE,aAAa,sBAAsBwrN,EAAE,MAAM,EAC7CxrN,EAAE,oBAAmB,EACjBk5B,EAAM,QAAUsyL,EAAE,QAClBxrN,EAAE,iBAAiBk5B,CAAK,GAGhC,KACJ,CACA,KAAKsyL,EAAE,OACP,KAAKA,EAAE,SAAU,CACb+vE,GAAev7R,EAAGk5B,CAAK,EACvB,KACJ,CAGR,CACA,CACA,SAASqkQ,GAAev9R,EAAGk5B,EAAO,CAC9B,OAAQA,EAAM,MAAK,CACf,KAAKsyL,EAAE,SAAU,CACTxrN,EAAE,aAAa,SAAW,GAC1BA,EAAE,aAAa,eAAiBwrN,EAAE,QAClCxrN,EAAE,aAAa,OAAOA,EAAE,aAAa,SAAW,CAAC,IAAMwrN,EAAE,UACzDxrN,EAAE,aAAa,IAAG,EAElBA,EAAE,aAAa,eAAiBwrN,EAAE,UAClCxrN,EAAE,aAAa,IAAG,EAEtB,KACJ,CACA,KAAKwrN,EAAE,OAAQ,CACPxrN,EAAE,aAAa,eAAiBwrN,EAAE,QAClCxrN,EAAE,aAAa,IAAG,EAEtB,KACJ,CACA,KAAKwrN,EAAE,OAAQ,CACPxrN,EAAE,aAAa,iBAAiBwrN,EAAE,MAAM,IACxCxrN,EAAE,aAAa,sBAAsBwrN,EAAE,MAAM,EAC7CxrN,EAAE,oBAAmB,GAEzB,KACJ,CACA,KAAKwrN,EAAE,SAAU,CACbi0E,GAAqBz/R,EAAGk5B,CAAK,EAC7B,KACJ,CAGR,CACA,CAGA,SAASgjQ,GAAwBl8R,EAAGk5B,EAAO,CACvC,MAAM46P,EAAK56P,EAAM,MACb46P,IAAOtoE,EAAE,SACTsoE,IAAOtoE,EAAE,OACTsoE,IAAOtoE,EAAE,OACTsoE,IAAOtoE,EAAE,OACTsoE,IAAOtoE,EAAE,OACTsoE,IAAOtoE,EAAE,IACTsoE,IAAOtoE,EAAE,IACTsoE,IAAOtoE,EAAE,IACTxrN,EAAE,aAAa,sBAAsBwrN,EAAE,MAAM,EAC7CxrN,EAAE,oBAAmB,EACrBA,EAAE,iBAAiBk5B,CAAK,GAGxB+iQ,GAAiBj8R,EAAGk5B,CAAK,CAEjC,CACA,SAASskQ,GAAsBx9R,EAAGk5B,EAAO,CACrC,MAAM46P,EAAK56P,EAAM,MACb46P,IAAOtoE,EAAE,SACTsoE,IAAOtoE,EAAE,OACTsoE,IAAOtoE,EAAE,OACTsoE,IAAOtoE,EAAE,OACTsoE,IAAOtoE,EAAE,OACTsoE,IAAOtoE,EAAE,IACTsoE,IAAOtoE,EAAE,IACTsoE,IAAOtoE,EAAE,GACLxrN,EAAE,aAAa,gBAAgB8zR,CAAE,IACjC9zR,EAAE,aAAa,sBAAsBwrN,EAAE,MAAM,EAC7CxrN,EAAE,oBAAmB,EACrBA,EAAE,SAASk5B,CAAK,GAIpBqkQ,GAAev9R,EAAGk5B,CAAK,CAE/B,CAGA,SAASijQ,GAAmBn8R,EAAGk5B,EAAO,CAClC,OAAQA,EAAM,MAAK,CAEf,KAAKsyL,EAAE,KACP,KAAKA,EAAE,SACP,KAAKA,EAAE,QACP,KAAKA,EAAE,KACP,KAAKA,EAAE,KACP,KAAKA,EAAE,SACP,KAAKA,EAAE,OACP,KAAKA,EAAE,MACP,KAAKA,EAAE,SACP,KAAKA,EAAE,MAAO,CACV+vE,GAAev7R,EAAGk5B,CAAK,EACvB,KACJ,CAEA,KAAKsyL,EAAE,QACP,KAAKA,EAAE,SACP,KAAKA,EAAE,MACP,KAAKA,EAAE,MACP,KAAKA,EAAE,MAAO,CACVxrN,EAAE,uBAAuB,CAAC,EAAIg4R,GAAc,SAC5Ch4R,EAAE,cAAgBg4R,GAAc,SAChC2D,GAAgB37R,EAAGk5B,CAAK,EACxB,KACJ,CACA,KAAKsyL,EAAE,IAAK,CACRxrN,EAAE,uBAAuB,CAAC,EAAIg4R,GAAc,gBAC5Ch4R,EAAE,cAAgBg4R,GAAc,gBAChC6D,GAAsB77R,EAAGk5B,CAAK,EAC9B,KACJ,CACA,KAAKsyL,EAAE,GAAI,CACPxrN,EAAE,uBAAuB,CAAC,EAAIg4R,GAAc,cAC5Ch4R,EAAE,cAAgBg4R,GAAc,cAChC8D,GAAoB97R,EAAGk5B,CAAK,EAC5B,KACJ,CACA,KAAKsyL,EAAE,GACP,KAAKA,EAAE,GAAI,CACPxrN,EAAE,uBAAuB,CAAC,EAAIg4R,GAAc,OAC5Ch4R,EAAE,cAAgBg4R,GAAc,OAChC+D,GAAc/7R,EAAGk5B,CAAK,EACtB,KACJ,CACA,QACIl5B,EAAE,uBAAuB,CAAC,EAAIg4R,GAAc,QAC5Ch4R,EAAE,cAAgBg4R,GAAc,QAChC0D,GAAe17R,EAAGk5B,CAAK,CAEnC,CACA,CACA,SAASukQ,GAAiBz9R,EAAGk5B,EAAO,CAC5BA,EAAM,QAAUsyL,EAAE,UAClBi0E,GAAqBz/R,EAAGk5B,CAAK,CAErC,CACA,SAAS6kQ,GAAc/9R,EAAGk5B,EAAO,CACzBl5B,EAAE,aAAa,UAAY,GAC3BA,EAAE,aAAa,sBAAsBwrN,EAAE,QAAQ,EAC/CxrN,EAAE,yBAAyB,kBAAiB,EAC5CA,EAAE,uBAAuB,MAAK,EAC9BA,EAAE,oBAAmB,EACrBA,EAAE,MAAMk5B,CAAK,GAGb8kQ,GAAYh+R,EAAGk5B,CAAK,CAE5B,CAGA,SAASkjQ,GAAkBp8R,EAAGk5B,EAAO,CAC7BA,EAAM,QAAUsyL,EAAE,KAClBkwE,GAAe17R,EAAGk5B,CAAK,EAGvB0hQ,GAAe56R,EAAGk5B,CAAK,CAE/B,CACA,SAASwkQ,GAAgB19R,EAAGk5B,EAAO,CAC/B,IAAIp2B,EACJ,GAAIo2B,EAAM,QAAUsyL,EAAE,MAMlB,GALKxrN,EAAE,kBACHA,EAAE,cAAgBg4R,GAAc,kBAIhCh4R,EAAE,QAAQ,wBAA0BA,EAAE,aAAa,OAAO,CAAC,IAAMwrN,EAAE,KAAM,CACzExrN,EAAE,gBAAgBA,EAAE,aAAa,MAAM,CAAC,EAAGk5B,CAAK,EAEhD,MAAMmmQ,EAAcr/R,EAAE,aAAa,MAAM,CAAC,EACtCq/R,GAAe,EAAG,GAAAv8R,EAAK9C,EAAE,YAAY,0BAA0Bq/R,CAAW,KAAO,MAAQv8R,IAAO,SAAkBA,EAAG,SACrH9C,EAAE,gBAAgBq/R,EAAanmQ,CAAK,CAE5C,OAGA0hQ,GAAe56R,EAAGk5B,CAAK,CAE/B,CACA,SAAS0hQ,GAAe56R,EAAGk5B,EAAO,CAC9Bl5B,EAAE,cAAgBg4R,GAAc,QAChC2H,GAAW3/R,EAAGk5B,CAAK,CACvB,CAGA,SAASmjQ,GAAmBr8R,EAAGk5B,EAAO,CAClC,OAAQA,EAAM,MAAK,CACf,KAAKsyL,EAAE,KAAM,CACTkwE,GAAe17R,EAAGk5B,CAAK,EACvB,KACJ,CACA,KAAKsyL,EAAE,SAAU,CACbxrN,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,EAC/B,KACJ,CACA,KAAKhlE,EAAE,MAAO,CACVxrN,EAAE,eAAek5B,EAAOs3P,GAAG,IAAI,EAC/Bt3P,EAAM,eAAiB,GACvB,KACJ,CACA,KAAKsyL,EAAE,SAAU,CACb+vE,GAAev7R,EAAGk5B,CAAK,EACvB,KACJ,CAGR,CACA,CACA,SAASykQ,GAAiB39R,EAAGk5B,EAAO,CAC5BA,EAAM,QAAUsyL,EAAE,UAAY,CAACxrN,EAAE,aAAa,6BAC9CA,EAAE,aAAa,IAAG,EACd,CAACA,EAAE,iBAAmBA,EAAE,aAAa,eAAiBwrN,EAAE,WACxDxrN,EAAE,cAAgBg4R,GAAc,gBAG5C,CAGA,SAASsE,GAAsBt8R,EAAGk5B,EAAO,CACrC,OAAQA,EAAM,MAAK,CACf,KAAKsyL,EAAE,KAAM,CACTkwE,GAAe17R,EAAGk5B,CAAK,EACvB,KACJ,CACA,KAAKsyL,EAAE,SAAU,CACb+vE,GAAev7R,EAAGk5B,CAAK,EACvB,KACJ,CAGR,CACA,CACA,SAAS0kQ,GAAoB59R,EAAGk5B,EAAO,CAC/BA,EAAM,QAAUsyL,EAAE,OAClBxrN,EAAE,cAAgBg4R,GAAc,qBAExC,CAGA,SAASuE,GAAuBv8R,EAAGk5B,EAAO,CAClCA,EAAM,QAAUsyL,EAAE,KAClBkwE,GAAe17R,EAAGk5B,CAAK,EAGvB2hQ,GAAoB76R,EAAGk5B,CAAK,CAEpC,CACA,SAAS2hQ,GAAoB76R,EAAGk5B,EAAO,CACnCl5B,EAAE,cAAgBg4R,GAAc,QAChC2H,GAAW3/R,EAAGk5B,CAAK,CACvB,CAGA,SAASsjQ,GAA2Bx8R,EAAGk5B,EAAO,CAC1C,OAAQA,EAAM,MAAK,CACf,KAAKsyL,EAAE,KAAM,CACTkwE,GAAe17R,EAAGk5B,CAAK,EACvB,KACJ,CACA,KAAKsyL,EAAE,SAAU,CACb+vE,GAAev7R,EAAGk5B,CAAK,EACvB,KACJ,CAGR,CACA,CAGA,SAAS4hQ,GAA8B96R,EAAGk5B,EAAO,CAC7CA,EAAM,MAAQsqQ,GACdxjS,EAAE,kBAAkBk5B,CAAK,CAC7B,CACA,SAAS+gQ,GAA0Bj6R,EAAGk5B,EAAO,CACzCl5B,EAAE,kBAAkBk5B,CAAK,EACzBl5B,EAAE,WAAa,EACnB,CACA,SAASyjS,GAA+BzjS,EAAG,CACvC,KAAOA,EAAE,YAAY,gBAAgBA,EAAE,aAAa,OAAO,IAAMwwR,GAAG,MAChExwR,EAAE,aAAa,eAAiB,QAChC,CAACA,EAAE,oBAAoBA,EAAE,aAAa,aAAcA,EAAE,aAAa,OAAO,GAC1EA,EAAE,aAAa,IAAG,CAE1B,CACA,SAASo7R,GAAyBp7R,EAAGk5B,EAAO,CACxC,GAAIwqQ,GAA0BxqQ,CAAK,EAC/BuqQ,GAA+BzjS,CAAC,EAChCA,EAAE,+BAA+Bk5B,CAAK,MAErC,CACD,MAAM/2B,EAAUnC,EAAE,2BAA0B,EACtC2jS,EAAY3jS,EAAE,YAAY,gBAAgBmC,CAAO,EACnDwhS,IAAcnT,GAAG,OACjBqR,GAAsC3oQ,CAAK,EAEtCyqQ,IAAcnT,GAAG,MACtBoT,GAAqC1qQ,CAAK,EAC1C8oQ,GAAmC9oQ,CAAK,GAE5C4oQ,GAAmC5oQ,CAAK,EACpCA,EAAM,YACNl5B,EAAE,eAAek5B,EAAOyqQ,CAAS,EAGjC3jS,EAAE,eAAek5B,EAAOyqQ,CAAS,EAErCzqQ,EAAM,eAAiB,EAC3B,CACJ,CACA,SAASujQ,GAAuBz8R,EAAGk5B,EAAO,CACtC,GAAIA,EAAM,QAAUsyL,EAAE,GAAKtyL,EAAM,QAAUsyL,EAAE,GAAI,CAC7Ci4E,GAA+BzjS,CAAC,EAChCA,EAAE,6BAA6Bk5B,CAAK,EACpC,MACJ,CACA,QAAS92B,EAAIpC,EAAE,aAAa,SAAUoC,EAAI,EAAGA,IAAK,CAC9C,MAAMknB,EAAUtpB,EAAE,aAAa,MAAMoC,CAAC,EACtC,GAAIpC,EAAE,YAAY,gBAAgBspB,CAAO,IAAMknQ,GAAG,KAAM,CACpDxwR,EAAE,6BAA6Bk5B,CAAK,EACpC,KACJ,CACA,MAAMmlO,EAAUr+P,EAAE,YAAY,WAAWspB,CAAO,EAChD,GAAI+0O,EAAQ,gBAAkBnlO,EAAM,QAAS,CAEzCA,EAAM,QAAUmlO,EAChBr+P,EAAE,aAAa,gBAAgBoC,CAAC,EAChC,KACJ,CACJ,CACJ,CCvqGIopN,GAAE,KACFA,GAAE,KACFA,GAAE,SACFA,GAAE,QACFA,GAAE,GACFA,GAAE,IACFA,GAAE,MACFA,GAAE,MACFA,GAAE,GACFA,GAAE,IACFA,GAAE,MACFA,GAAE,OACFA,GAAE,KACFA,GAAE,KACFA,GAAE,MACFA,GAAE,OACFA,GAAE,MACFA,GAAE,ICmBN,MAAMq4E,GACJ,+FAIIC,GAAgB,IAAI,IAAI,CAC5B,oBACA,oBACA,oBACA,oBACA,UACF,CAAC,EAGKC,GAAe,CAAC,uBAAwB,GAAM,iBAAkB,EAAK,EAapE,SAAShzP,GAAIwmB,EAAMt0D,EAAS,CACjC,MAAMwwP,EAAWuwC,GAAazsO,CAAI,EAE5Bw3L,EAAM6vB,GAAO,OAAQ,CACzB,SAAU,CAAC,KAAArrP,GAAI,QAAEjK,GAAS,KAAAvV,GAAM,QAAAiwB,GAAS,QAAAgpP,GAAS,IAAKiX,EAAS,EAChE,QAAAC,EACJ,CAAG,EAGKrpR,EAAQ,CACZ,OAAQ44O,EACJ,IAAI2kC,GAAO2L,EAAY,EACvB3L,GAAO,kBAAkB,OAAW2L,EAAY,EACpD,OAAO1gR,EAAM,CACX0rO,EAAI1rO,EAAMxI,CAAK,CACjB,EACA,SAAU,GACV,QAAS5X,GAAW,CAAA,CACxB,EAEE8rP,EAAIx3L,EAAM18C,CAAK,EACfspR,GAAetpR,EAAOozO,GAAU,CAAE,EAElC,MAAMm2C,EAAK3wC,EAAW54O,EAAM,OAAO,SAAWA,EAAM,OAAO,YAAW,EAChE1W,EAASqoR,GAAW4X,EAAI,CAE5B,KAAMvpR,EAAM,QAAQ,IACxB,CAAG,EAgBD,OAdIA,EAAM,UACR62P,GAAMvtQ,EAAQ,UAAW,SAAUkf,EAAMrf,EAAOo+B,EAAQ,CACtD,MAAMiiQ,EAAwDhhR,EAC9D,GAAIghR,EAAO,MAAM,QAAUjiQ,GAAUp+B,IAAU,OAAW,CAExD,MAAMq+B,EAAWD,EAAO,SAExB,OAAAC,EAASr+B,CAAK,EAAIqgS,EAAO,MAAM,OACxBrgS,CACT,CACF,CAAC,EAKDG,EAAO,OAAS,QAChBA,EAAO,SAAS,SAAW,GAC3BA,EAAO,SAAS,CAAC,EAAE,OAASozD,EAAK,KAE1BpzD,EAAO,SAAS,CAAC,EAGnBA,CACT,CAYA,SAASgtP,GAAIhmL,EAAOtwD,EAAO,CACzB,IAAI7W,EAAQ,GAGZ,GAAImnE,EACF,KAAO,EAAEnnE,EAAQmnE,EAAM,QACrBtwD,EAAM,OAAOswD,EAAMnnE,CAAK,CAAC,CAG/B,CAYA,SAASuvB,GAAKlQ,EAAMxI,EAAO,CACzBs2O,GAAI9tO,EAAK,SAAUxI,CAAK,CAC1B,CAYA,SAASyO,GAAQjG,EAAMxI,EAAO,CAC5B8xQ,GAAStpQ,EAAMxI,CAAK,EAEpBs2O,GAAI9tO,EAAK,SAAUxI,CAAK,EAExB+xQ,GAAOvpQ,EAAMxI,CAAK,CACpB,CAYA,SAAS9G,GAAKsP,EAAMxI,EAAO,CAMrBA,EAAM,OAAO,UAAU,MAAQ,IACjCA,EAAM,OAAO,UAAU,MAAQ,GAIjC,MAAMqe,EAAQ,CACZ,KAAMorQ,GAAgB,UACtB,MAAOjhR,EAAK,MACZ,SAAUkhR,GAAqBlhR,CAAI,CACvC,EAEE8gR,GAAetpR,EAAOozO,GAAW5qO,CAAI,CAAC,EAEtCxI,EAAM,OAAO,aAAeqe,EAE5Bre,EAAM,OAAO,cAAcA,EAAM,OAAO,YAAY,CACtD,CAYA,SAASmyQ,GAAQ3pQ,EAAMxI,EAAO,CAE5B,MAAMqe,EAAQ,CACZ,KAAMorQ,GAAgB,QACtB,KAAM,OACN,YAAa,GACb,SAAU,GACV,SAAU,GACV,SAAUC,GAAqBlhR,CAAI,CACvC,EAEE8gR,GAAetpR,EAAOozO,GAAW5qO,CAAI,CAAC,EAEtCxI,EAAM,OAAO,aAAeqe,EAE5Bre,EAAM,OAAO,cAAcA,EAAM,OAAO,YAAY,CACtD,CAYA,SAASwpR,GAAOhhR,EAAMxI,EAAO,CAE3BA,EAAM,SAAW,GAGjB,MAAMpI,EAAQ+xR,GAAqBnhR,CAAI,EAIvC,GAAI,aAAcA,GAAQ,aAAc5Q,EAAO,CAE7C,MAAMgyR,EACJ1zP,GAAI,CAAC,KAAM,OAAQ,SAAU1tB,EAAK,QAAQ,EAAGxI,EAAM,OAAO,EAE5DpI,EAAM,SAAWgyR,EAAS,QAC5B,CAKAzgQ,GAAQ,CAAC,KAAM,UAAW,MAAO,CAAC,OAAQvxB,CAAK,CAAC,EAAGoI,CAAK,CAC1D,CAYA,SAASmpB,GAAQ3gB,EAAMxI,EAAO,CAG5B,MAAMva,EAAO+iB,EAAK,MAGZ6V,EAAQ,CACZ,KAAMorQ,GAAgB,QACtB,KAAAhkS,EACA,SAAUikS,GAAqBlhR,CAAI,CACvC,EACE8gR,GAAetpR,EAAOozO,GAAW5qO,CAAI,CAAC,EAEtCxI,EAAM,OAAO,aAAeqe,EAE5Bre,EAAM,OAAO,cAAcA,EAAM,OAAO,YAAY,CACtD,CAYA,SAASopR,GAAU5gR,EAAMxI,EAAO,CA4C9B,GAzCAA,EAAM,OAAO,UAAU,aAAa,KAAO,GAC3CA,EAAM,OAAO,UAAU,aAAa,IAAM,GAG1CA,EAAM,OAAO,UAAU,aAAa,WAAa,GAGjDA,EAAM,OAAO,UAAU,aAAa,SAAW,CAAA,EAG/CA,EAAM,OAAO,UAAU,aAAa,gBAAkB,GACtDA,EAAM,OAAO,UAAU,aAAa,iBAAmB,GACvDA,EAAM,OAAO,UAAU,aAAa,cAAgB,GAGpDA,EAAM,OAAO,UAAU,aAAa,MAAQ,GAG5C6pR,GAAS7pR,EAAOozO,GAAW5qO,CAAI,CAAC,EAEhCxI,EAAM,OAAO,UAAU,MACrBA,EAAM,QAAQ,UACVwI,EAAK,MAAM,QAAQwgR,GAAwB,UAAU,EACrDxgR,EAAK,MACT,EACJ,EAEExI,EAAM,OAAO,UAAU,gBAAe,EAepCA,EAAM,OAAO,UAAU,QAAU,IAEjCA,EAAM,OAAO,UAAU,QAAU,GACjC,CACAA,EAAM,OAAO,UAAU,aAAa,iBAAmB,GAGvD,MAAM4yQ,EAAK5yQ,EAAM,OAAO,UAAU,SAAQ,EAE1CA,EAAM,OAAO,UAAU,WAAW4yQ,CAAE,CACtC,CACF,CAYA,SAASyW,GAAQS,EAAO9pR,EAAO,CAC7B,MAAMwI,EAA6BshR,EAEnC,GACE9pR,EAAM,QAAQ,aACdA,EAAM,QAAQ,YAAY,SAASwI,EAAK,IAAI,EAE5CghR,GAAOhhR,EAAMxI,CAAK,MACb,CACL,IAAIykH,EAAQ,GAEZ,MAAIwkK,GAAc,IAAIzgR,EAAK,IAAI,IAC7Bi8G,EACE,0cAGE,IAAI,MAAM,mBAAqBj8G,EAAK,KAAO,SAAWi8G,CAAK,CACnE,CACF,CAYA,SAAS6kK,GAAetpR,EAAOosG,EAAO,CACpCy9K,GAAS7pR,EAAOosG,CAAK,EAKrB,MAAM/tF,EAAQre,EAAM,OAAO,UAAU,sBAEjCqe,GAASA,EAAM,WACjBA,EAAM,SAAS,QAAUre,EAAM,OAAO,UAAU,aAAa,KAC7Dqe,EAAM,SAAS,OAASre,EAAM,OAAO,UAAU,aAAa,IAAM,EAClEqe,EAAM,SAAS,UAAYre,EAAM,OAAO,UAAU,aAAa,OAAS,EAExEA,EAAM,OAAO,aAAeqe,EAE5Bre,EAAM,OAAO,cAAcA,EAAM,OAAO,YAAY,GAWtDA,EAAM,OAAO,UAAU,OAAS,GAEhCA,EAAM,OAAO,UAAU,OAAS,GAIhCA,EAAM,OAAO,UAAU,OAAS,GAEhCA,EAAM,OAAO,UAAU,YAAcq2Q,GAAc,KAEnDr2Q,EAAM,OAAO,UAAU,YAAc,GAErCA,EAAM,OAAO,UAAU,sBAAwB,GAE/CA,EAAM,OAAO,UAAU,gBAAkB,KAEzCA,EAAM,OAAO,UAAU,sBAAwB,KAE/CA,EAAM,OAAO,UAAU,aAAe,KAEtCA,EAAM,OAAO,UAAU,YAAc,CAAC,KAAM,GAAI,MAAO,EAAE,CAC3D,CAYA,SAAS6pR,GAAS7pR,EAAOosG,EAAO,CAC9B,GAAIA,GAASA,EAAM,SAAW,OAAW,CAEvC,MAAM+kK,EAAW,CACf,UAAW/kK,EAAM,KACjB,SAAUA,EAAM,OAChB,YAAaA,EAAM,OACnB,QAAS,GACT,OAAQ,GACR,UAAW,EACjB,EAIIpsG,EAAM,OAAO,UAAU,aAAa,aAAe,CAACosG,EAAM,OAAS,EACnEpsG,EAAM,OAAO,UAAU,aAAa,kBAAoBosG,EAAM,OAC9DpsG,EAAM,OAAO,UAAU,aAAa,KAAOosG,EAAM,KAEjDpsG,EAAM,OAAO,UAAU,gBAAkBmxQ,CAC3C,CACF,CAYA,SAASW,GAAStpQ,EAAMxI,EAAO,CAC7B,MAAMwjP,EAAUh7O,EAAK,QAAQ,YAAW,EAGxC,GAAIxI,EAAM,OAAO,UAAU,QAAUq2Q,GAAc,UAAW,OAE9DiT,GAAetpR,EAAOozO,GAAW5qO,CAAI,CAAC,EAEtC,MAAMlhB,EAAU0Y,EAAM,OAAO,aAAa,QAC1C,IAAI9W,EAAK,iBAAkB5B,EAAUA,EAAQ,aAAeoqR,GAAc,KAEtExoR,IAAOwoR,GAAc,MAAQluB,IAAY,QAC3Ct6P,EAAKwoR,GAAc,KAGrB,MAAMpoR,EAAS8oR,GAEb,CAAC,GAAG5pQ,EAAM,SAAU,EAAE,EACtB,CAAC,MAAOtf,IAAOwoR,GAAc,IAAM,MAAQ,MAAM,CACrD,EAGQx1N,EAAM,CACV,KAAMutO,GAAgB,UACtB,QAAAjmC,EACA,MAAOumC,GAAcvmC,CAAO,EAE5B,YAAa,GACb,eAAgB,GAGhB,MAAO,UAAWl6P,EAASA,EAAO,MAAQ,CAAA,EAC1C,SAAUogS,GAAqBlhR,CAAI,CACvC,EAQExI,EAAM,OAAO,aAAek8C,EAE5Bl8C,EAAM,OAAO,cAAcA,EAAM,OAAO,YAAY,EAMpDA,EAAM,OAAO,UAAU,iBAAmBwjP,CAG5C,CAYA,SAASuuB,GAAOvpQ,EAAMxI,EAAO,CAC3B,MAAMwjP,EAAUh7O,EAAK,QAAQ,YAAW,EAUxC,GAPE,CAACxI,EAAM,OAAO,UAAU,eACxBsyQ,GAAiB,SAAS9uB,CAAO,GAM/BxjP,EAAM,OAAO,UAAU,QAAUq2Q,GAAc,UAAW,OAE9DiT,GAAetpR,EAAOmzO,GAAS3qO,CAAI,CAAC,EAGpC,MAAM0zC,EAAM,CACV,KAAMutO,GAAgB,QACtB,QAAAjmC,EACA,MAAOumC,GAAcvmC,CAAO,EAC5B,YAAa,GACb,eAAgB,GAChB,MAAO,CAAA,EACP,SAAUkmC,GAAqBlhR,CAAI,CACvC,EAQExI,EAAM,OAAO,aAAek8C,EAE5Bl8C,EAAM,OAAO,cAAcA,EAAM,OAAO,YAAY,EASlDwjP,IAAYxjP,EAAM,OAAO,UAAU,mBAElCA,EAAM,OAAO,UAAU,QAAUq2Q,GAAc,QAE9Cr2Q,EAAM,OAAO,UAAU,QAAUq2Q,GAAc,SAE/Cr2Q,EAAM,OAAO,UAAU,QAAUq2Q,GAAc,eAGjDr2Q,EAAM,OAAO,UAAU,MAAQq2Q,GAAc,KAEjD,CAUA,SAAS8S,GAAa3gR,EAAM,CAC1B,MAAM0Q,EAAO1Q,EAAK,OAAS,OAASA,EAAK,SAAS,CAAC,EAAIA,EACvD,MAAO,GACL0Q,IACGA,EAAK,OAAS,WACZA,EAAK,OAAS,WAAaA,EAAK,QAAQ,YAAW,IAAO,QAEnE,CAUA,SAASwwQ,GAAqBlhR,EAAM,CAClC,MAAMiqH,EAAQ2gH,GAAW5qO,CAAI,GAAK,CAChC,KAAM,OACN,OAAQ,OACR,OAAQ,MACZ,EACQse,EAAMqsN,GAAS3qO,CAAI,GAAK,CAC5B,KAAM,OACN,OAAQ,OACR,OAAQ,MACZ,EAcE,MAXiB,CACf,UAAWiqH,EAAM,KACjB,SAAUA,EAAM,OAChB,YAAaA,EAAM,OACnB,QAAS3rG,EAAI,KACb,OAAQA,EAAI,OACZ,UAAWA,EAAI,MACnB,CAKA,CAUA,SAAS6iQ,GAAqBnhR,EAAM,CAClC,MAAO,aAAcA,EACjBktP,GAAgB,CAAC,GAAGltP,EAAM,SAAU,CAAA,CAAE,CAAC,EACvCktP,GAAgBltP,CAAI,CAC1B,CCppBe,SAASwhR,GAAU5hS,EAAS,CASzC,OAAO,SAAUs0D,EAAM27M,EAAM,CAG3B,OADoCniO,GAAIwmB,EAAM,CAAC,GAAGt0D,EAAS,KAAAiwQ,CAAI,CAAC,CAElE,CACF,CCqGO,MAAM4xB,GAeT,SAAU/wJ,EAAM,CACd,GAAIA,GAAS,KACX,OAAOzqH,GAGT,GAAI,OAAOyqH,GAAS,SAClB,OAAOgxJ,GAAehxJ,CAAI,EAI5B,GAAI,OAAOA,GAAS,SAClB,OAAO28H,GAAW38H,CAAI,EAGxB,GAAI,OAAOA,GAAS,WAClB,OAAO08H,GAAY18H,CAAI,EAGzB,MAAM,IAAI,MAAM,+CAA+C,CACjE,EASJ,SAAS28H,GAAWG,EAAO,CAEzB,MAAM5mB,EAAS,CAAA,EACf,IAAIjmP,EAAQ,GAEZ,KAAO,EAAEA,EAAQ6sQ,EAAM,QACrB5mB,EAAOjmP,CAAK,EAAI8gS,GAAej0B,EAAM7sQ,CAAK,CAAC,EAG7C,OAAOysQ,GAAYviL,CAAG,EAMtB,SAASA,KAAOujK,EAAY,CAC1B,IAAIztP,EAAQ,GAEZ,KAAO,EAAEA,EAAQimP,EAAO,QACtB,GAAIA,EAAOjmP,CAAK,EAAE,MAAM,KAAMytP,CAAU,EAAG,MAAO,GAGpD,MAAO,EACT,CACF,CAQA,SAASszC,GAAe76C,EAAO,CAC7B,OAAOumB,GAAYpS,CAAO,EAM1B,SAASA,EAAQ/0O,EAAS,CACxB,OAAOA,EAAQ,UAAY4gO,CAC7B,CACF,CAQA,SAASumB,GAAYO,EAAc,CACjC,OAAO9mB,EAMP,SAASA,EAAM1pP,EAAOwD,EAAOo+B,EAAQ,CACnC,MAAO,GACL4iQ,GAAmBxkS,CAAK,GACtBwwQ,EAAa,KACX,KACAxwQ,EACA,OAAOwD,GAAU,SAAWA,EAAQ,OACpCo+B,GAAU,MACpB,EAEE,CACF,CAQA,SAAS9Y,GAAQA,EAAS,CACxB,MAAO,GACLA,GACE,OAAOA,GAAY,UACnB,SAAUA,GACVA,EAAQ,OAAS,WACjB,YAAaA,GACb,OAAOA,EAAQ,SAAY,SAEjC,CAMA,SAAS07Q,GAAmBxkS,EAAO,CACjC,OACEA,IAAU,MACV,OAAOA,GAAU,UACjB,SAAUA,GACV,YAAaA,CAEjB,CCnRA,MAAMykS,GAAqB,6BAGrBC,GAAqB,eAEZ,SAASC,GAAclnE,EAAK,CAC1C,GAAI,OAAOA,GAAQ,SAClB,MAAM,IAAI,UAAU,gCAAgC,OAAOA,CAAG,IAAI,EAGnE,OAAIinE,GAAmB,KAAKjnE,CAAG,EACvB,GAGDgnE,GAAmB,KAAKhnE,CAAG,CACnC,CCuDA,MAAMmnE,GAAmB,CAAC,OAAQ,OAAO,EACnCC,GAAa,CAAC,UAAU,EAGxB5rK,GAAe,CAAA,EAuBN,SAAS6rK,GAAoBriS,EAAS,CACnD,MAAMgmP,EAAWhmP,GAAWw2H,GACtB8rK,EAAYt8C,EAAS,WAAam8C,GAClC7zB,EAAKuzB,GAAe77C,EAAS,IAAI,EAUvC,OAAO,SAAU1xL,EAAM,CACrBm6M,GAAMn6M,EAAM,UAAW,SAAUl0C,EAAMrf,EAAOo+B,EAAQ,CACpD,GACE/e,EAAK,UAAY,KACjB,OAAOA,EAAK,WAAW,MAAS,UAChCkuP,EAAGluP,EAAMrf,EAAOo+B,CAAM,EACtB,CACA,MAAM67L,EAAM56M,EAAK,WAAW,KAE5B,GACE8hR,GAAclnE,CAAG,EACbsnE,EAAU,SAAStnE,EAAI,MAAM,EAAGA,EAAI,QAAQ,GAAG,CAAC,CAAC,EACjDA,EAAI,WAAW,IAAI,EACvB,CACA,MAAMunE,EAAaC,GAAex8C,EAAS,QAAS5lO,CAAI,EAClDgiB,EACJmgQ,GAAc,CAAC,MAAM,QAAQA,CAAU,EAAI,CAACA,CAAU,EAAIA,EACtDE,EAASD,GAAex8C,EAAS,IAAK5lO,CAAI,GAAKgiR,GAC/CtoF,EAAM,OAAO2oF,GAAW,SAAWxiQ,GAAMwiQ,CAAM,EAAIA,EACnDhlS,EAAS+kS,GAAex8C,EAAS,OAAQ5lO,CAAI,EAE7C+mO,EAAaq7C,GAAex8C,EAAS,WAAY5lO,CAAI,EAc3D,GAZI+mO,GACF,OAAO,OAAO/mO,EAAK,WAAYktP,GAAgBnmB,CAAU,CAAC,EAGxDrtC,EAAI,OAAS,IACf15L,EAAK,WAAW,IAAM,CAAC,GAAG05L,CAAG,GAG3Br8M,IACF2iB,EAAK,WAAW,OAAS3iB,GAGvB2kC,EAAS,CACX,MAAM+kN,EACJq7C,GAAex8C,EAAS,kBAAmB5lO,CAAI,GAAK,CAAA,EAEtDA,EAAK,SAAS,KAAK,CACjB,KAAM,UACN,QAAS,OACT,WAAYktP,GAAgBnmB,CAAU,EACtC,SAAUmmB,GAAgBlrO,CAAO,CAC/C,CAAa,CACH,CACF,CACF,CACF,CAAC,CACH,CACF,CAcA,SAASogQ,GAAejlS,EAAO8oB,EAAS,CACtC,OAAO,OAAO9oB,GAAU,WAAaA,EAAM8oB,CAAO,EAAI9oB,CACxD,CCbO,MAAMgwQ,GAYT,SAAUz8H,EAAM,CACd,GAA0BA,GAAS,KACjC,OAAOg1G,GAGT,GAAI,OAAOh1G,GAAS,SAClB,OAAO68H,GAAY78H,CAAI,EAGzB,GAAI,OAAOA,GAAS,SAClB,OAAO,MAAM,QAAQA,CAAI,EAAI28H,GAAW38H,CAAI,EAAI48H,GAAa58H,CAAI,EAGnE,GAAI,OAAOA,GAAS,WAClB,OAAO08H,GAAY18H,CAAI,EAGzB,MAAM,IAAI,MAAM,8CAA8C,CAChE,EAOJ,SAAS28H,GAAWG,EAAO,CAEzB,MAAM5mB,EAAS,CAAA,EACf,IAAIjmP,EAAQ,GAEZ,KAAO,EAAEA,EAAQ6sQ,EAAM,QACrB5mB,EAAOjmP,CAAK,EAAIwsQ,GAAQK,EAAM7sQ,CAAK,CAAC,EAGtC,OAAOysQ,GAAYviL,CAAG,EAOtB,SAASA,KAAOujK,EAAY,CAC1B,IAAIztP,EAAQ,GAEZ,KAAO,EAAEA,EAAQimP,EAAO,QACtB,GAAIA,EAAOjmP,CAAK,EAAE,KAAK,KAAM,GAAGytP,CAAU,EAAG,MAAO,GAGtD,MAAO,EACT,CACF,CAQA,SAASkf,GAAazmB,EAAO,CAC3B,OAAOumB,GAAYtf,CAAG,EAMtB,SAASA,EAAI9tO,EAAM,CAEjB,IAAIhkB,EAEJ,IAAKA,KAAO6qP,EAEV,GAAI7mO,EAAKhkB,CAAG,IAAM6qP,EAAM7qP,CAAG,EAAG,MAAO,GAGvC,MAAO,EACT,CACF,CAQA,SAASuxQ,GAAY1mB,EAAO,CAC1B,OAAOumB,GAAY7tQ,CAAI,EAKvB,SAASA,EAAKygB,EAAM,CAClB,OAAOA,GAAQA,EAAK,OAAS6mO,CAC/B,CACF,CAQA,SAASumB,GAAYvmB,EAAO,CAC1B,OAAOy7C,EAQP,SAASA,EAAUtiR,KAASouO,EAAY,CACtC,MAAO,GACLpuO,GACE,OAAOA,GAAS,UAChB,SAAUA,GAEF6mO,EAAM,KAAK,KAAM7mO,EAAM,GAAGouO,CAAU,EAElD,CACF,CAEA,SAAS1I,IAAK,CACZ,MAAO,EACT,CCvRO,MAAM68C,GAcT,SAAUxjQ,EAAQp+B,EAAO+vI,EAAM,CAC7B,MAAMw9H,EAAKf,GAAQz8H,CAAI,EAEvB,GAAI,CAAC3xG,GAAU,CAACA,EAAO,MAAQ,CAACA,EAAO,SACrC,MAAM,IAAI,MAAM,sBAAsB,EAGxC,GAAI,OAAOp+B,GAAU,UACnB,GAAIA,EAAQ,GAAKA,IAAU,OAAO,kBAChC,MAAM,IAAI,MAAM,0CAA0C,UAG5DA,EAAQo+B,EAAO,SAAS,QAAQp+B,CAAK,EAEjCA,EAAQ,EACV,MAAM,IAAI,MAAM,8BAA8B,EAIlD,KAAO,EAAEA,EAAQo+B,EAAO,SAAS,QAC/B,GAAImvO,EAAGnvO,EAAO,SAASp+B,CAAK,EAAGA,EAAOo+B,CAAM,EAC1C,OAAOA,EAAO,SAASp+B,CAAK,EAIhC,OAAO,IACT,ECwGSwsQ,GAYT,SAAUz8H,EAAM,CACd,GAA0BA,GAAS,KACjC,OAAOg1G,GAGT,GAAI,OAAOh1G,GAAS,SAClB,OAAO68H,GAAY78H,CAAI,EAGzB,GAAI,OAAOA,GAAS,SAClB,OAAO,MAAM,QAAQA,CAAI,EAAI28H,GAAW38H,CAAI,EAAI48H,GAAa58H,CAAI,EAGnE,GAAI,OAAOA,GAAS,WAClB,OAAO08H,GAAY18H,CAAI,EAGzB,MAAM,IAAI,MAAM,8CAA8C,CAChE,EAOJ,SAAS28H,GAAWG,EAAO,CAEzB,MAAM5mB,EAAS,CAAA,EACf,IAAIjmP,EAAQ,GAEZ,KAAO,EAAEA,EAAQ6sQ,EAAM,QACrB5mB,EAAOjmP,CAAK,EAAIwsQ,GAAQK,EAAM7sQ,CAAK,CAAC,EAGtC,OAAOysQ,GAAYviL,CAAG,EAOtB,SAASA,KAAOujK,EAAY,CAC1B,IAAIztP,EAAQ,GAEZ,KAAO,EAAEA,EAAQimP,EAAO,QACtB,GAAIA,EAAOjmP,CAAK,EAAE,KAAK,KAAM,GAAGytP,CAAU,EAAG,MAAO,GAGtD,MAAO,EACT,CACF,CAQA,SAASkf,GAAazmB,EAAO,CAC3B,OAAOumB,GAAYtf,CAAG,EAMtB,SAASA,EAAI9tO,EAAM,CAEjB,IAAIhkB,EAEJ,IAAKA,KAAO6qP,EAEV,GAAI7mO,EAAKhkB,CAAG,IAAM6qP,EAAM7qP,CAAG,EAAG,MAAO,GAGvC,MAAO,EACT,CACF,CAQA,SAASuxQ,GAAY1mB,EAAO,CAC1B,OAAOumB,GAAY7tQ,CAAI,EAKvB,SAASA,EAAKygB,EAAM,CAClB,OAAOA,GAAQA,EAAK,OAAS6mO,CAC/B,CACF,CAQA,SAASumB,GAAYvmB,EAAO,CAC1B,OAAOy7C,EAQP,SAASA,EAAUtiR,KAASouO,EAAY,CACtC,MAAO,GACLpuO,GACE,OAAOA,GAAS,UAChB,SAAUA,GAEF6mO,EAAM,KAAK,KAAM7mO,EAAM,GAAGouO,CAAU,EAElD,CACF,CAEA,SAAS1I,IAAK,CACZ,MAAO,EACT,CCxSO,SAAS13M,IAAMx3B,EAAG,CACvB,OAAOA,CACT,CC0EO,MAAMq3P,GAAW,GAKXC,GAAO,GAKPC,GAAO,OA+BPC,GAeT,SAAU95M,EAAMw8E,EAAMu9H,EAAS9iF,EAAS,CAClC,OAAOz6C,GAAS,YAAc,OAAOu9H,GAAY,aACnD9iF,EAAU8iF,EAEVA,EAAUv9H,EACVA,EAAO,MAGT,MAAMw9H,EAAKf,GAAQz8H,CAAI,EACjBlpF,EAAO2jI,EAAU,GAAK,EAE5BgjF,EAAQj6M,EAAM,OAAW,EAAE,EAAC,EAO5B,SAASi6M,EAAQnuP,EAAMrf,EAAOytQ,EAAS,CAGrC,MAAMjxQ,EAAQ6iB,GAAQ,OAAOA,GAAS,SAAWA,EAAO,CAAA,EAExD,GAAI,OAAO7iB,EAAM,MAAS,SAAU,CAClC,MAAM0N,EAEJ,OAAO1N,EAAM,SAAY,SACrBA,EAAM,QAER,OAAOA,EAAM,MAAS,SACpBA,EAAM,KACN,OAEN,OAAO,eAAekxQ,EAAO,OAAQ,CACnC,MACE,UAAiBruP,EAAK,MAAQnV,EAAO,IAAMA,EAAO,IAAM,KAAO,GAC7E,CAAW,CACH,CAEA,OAAOwjQ,EAEP,SAASA,GAAQ,CAEf,IAAIvtQ,EAAS,CAAA,EAETwtQ,EAEAnuO,EAEAouO,EAEJ,IAAI,CAAC79H,GAAQw9H,EAAGluP,EAAMrf,EAAOytQ,EAAQA,EAAQ,OAAS,CAAC,GAAK,IAAI,KAC9DttQ,EAAS0tQ,GAASP,EAAQjuP,EAAMouP,CAAO,CAAC,EAEpCttQ,EAAO,CAAC,IAAMgtQ,IAChB,OAAOhtQ,EAKX,GAAIkf,EAAK,UAAYlf,EAAO,CAAC,IAAMitQ,GAOjC,IALA5tO,GAAUgrJ,EAAUnrK,EAAK,SAAS,OAAS,IAAMwnC,EAEjD+mN,EAAeH,EAAQ,OAAOpuP,CAAI,EAG3BmgB,EAAS,IAAMA,EAASngB,EAAK,SAAS,QAAQ,CAInD,GAFAsuP,EAAYH,EAAQnuP,EAAK,SAASmgB,CAAM,EAAGA,EAAQouO,CAAY,EAAC,EAE5DD,EAAU,CAAC,IAAMR,GACnB,OAAOQ,EAGTnuO,EACE,OAAOmuO,EAAU,CAAC,GAAM,SAAWA,EAAU,CAAC,EAAInuO,EAASqnB,CAC/D,CAGF,OAAO1mD,CACT,CACF,CACF,EAWJ,SAAS0tQ,GAASrxQ,EAAO,CACvB,OAAI,MAAM,QAAQA,CAAK,EACdA,EAGL,OAAOA,GAAU,SACZ,CAAC0wQ,GAAU1wQ,CAAK,EAGlB,CAACA,CAAK,CACf,CClGO,MAAMkxQ,GAeT,SAAUn6M,EAAMw8E,EAAMu9H,EAAS9iF,EAAS,CAClC,OAAOz6C,GAAS,YAAc,OAAOu9H,GAAY,aACnD9iF,EAAU8iF,EACVA,EAAUv9H,EACVA,EAAO,MAGTs9H,GAAa95M,EAAMw8E,EAAMm+H,EAAU1jF,CAAO,EAM1C,SAAS0jF,EAAS7uP,EAAMouP,EAAS,CAC/B,MAAMrvO,EAASqvO,EAAQA,EAAQ,OAAS,CAAC,EACzC,OAAOH,EACLjuP,EACA+e,EAASA,EAAO,SAAS,QAAQ/e,CAAI,EAAI,KACzC+e,CACV,CACM,CACF,EC/KEyjQ,GAAoB,EAE1B,SAAS1tB,IAAU,CACjB,OAAO5sG,EACT,CAEA,SAASA,GAAWh0G,EAAM,CACxB,QAASi1M,EAAQq5B,GAAmBr5B,EAAQ,EAAGA,IAC7CkF,GACEn6M,EACAl0C,GAAQA,EAAK,OAAS,WAAaA,EAAK,QAAUmpP,EAClDs5B,EACN,CAEA,CAEA,SAASA,GAAYziR,EAAMrf,EAAOo+B,EAAQ,CACxC,MAAMkrG,EAAQjqH,EACRs8G,EAAa37H,EACbwoQ,EAAQl/H,EAAM,MAGd3rG,EAAMikQ,GAAUxjQ,EAAQkrG,EADhBjqH,GAAQA,EAAK,OAAS,WAAaA,EAAK,OAASmpP,GAASnpP,EAAK,OAAS,QAC5C,EACpCu8G,EAAWx9F,EAAO,SAAS,QAAQT,CAAG,EAEtC43N,EAAUn3N,EAAO,SAAS,MAC9Bu9F,EACAC,EAAW,EAAIA,EAAW,MAC9B,EAEQs+G,EAAU,CACd,KAAM,UACN,MAAOsuB,EACP,SAAUjT,EACV,KAAM,CACJ,MAAO,SACb,CACA,EAEEn3N,EAAO,SAAS,OAAOu9F,EAAYu+G,EAAQ,SAAS,OAAQA,CAAO,CACrE,CCzCA,SAAS6nD,GAAU,CAAE,QAAAvpR,EAAS,YAAA0jD,GAAkE,CAC5F,OACIk3J,EAAAA,IAACn3J,GAAA,CACG,QAAAzjD,EACA,YAAA0jD,EACA,KAAK,QACL,SAAQ,GACR,MAAO,CAAE,OAAQ,QAAA,CAAS,CAAA,CAGtC,CCEA,MAAM8lO,GAAiB7gN,GAAkB,KAAKA,CAAK;AAAA;AAAA,EAC7C8gN,GAAoBC,GAAqB,MAAMA,CAAQ;AAAA;AAAA,EAEvDC,GAAiB,CAACpyR,EAAcqyR,IAA8B,CAChE,IAAIC,EAAgB,GAChBC,EAAiBF,EAErB,QAASrkQ,KAAQhuB,EAAK,MAAM;AAAA,CAAI,EAExBguB,GAAQ,GACRskQ,EAAgBA,EAAc,MAAM,EAAG,EAAE,EAAI;AAAA;AAAA,EACtCtkQ,EAAK,WAAW,GAAG,GAAKA,EAAK,SAAS,GAAG,EAChDskQ,GAAiB,OAAOtkQ,EAAK,MAAM,EAAG,EAAE,CAAC;AAAA,GAEzCukQ,GAAkB,EACdA,EAAiB,GAAK,EACtBD,GAAiB,IAAItkQ,CAAI,2EAA2EukQ,CAAc;AAAA,EAElHD,GAAiB,IAAItkQ,CAAI;AAAA,GAIrC,MAAO,CAAE,cAAAskQ,EAAe,eAAAC,CAAA,CAE5B,EAUA,SAASC,GAAStxR,EAAsB,CACpC,KAAM,CAAE,CAAA,EAAMD,GAAe,QAAQ,EAC/BgJ,EAAYtC,GAAS,IAAI,YAAA,EACzB8qR,EAAe9qR,GAAS,IAAI,eAAA,EAC5B,CAAE,MAAAypE,EAAO,MAAAshN,EAAO,MAAAnjM,EAAO,SAAAopJ,GAAaz3O,EACpC,CAACyxR,EAAcC,CAAe,EAAI3wR,EAAAA,SAAiB,EAAE,EAErD4wR,EAAeH,GAA+B,CAChD,IAAII,EAAYZ,GAAiB,EAAE,gBAAgB,CAAC,EACpD,OAAIQ,aAAiBlqR,GACjBsqR,GAAa,KAAK,EAAE,8BAA8B,CAAC;AAAA;AAAA,EAEnDA,GAAaJ,EAEjBI,GAAa;AAAA;AAAA,EAENA,CACX,EAEMC,EAAa,CAACxjM,EAAoBopJ,IAA0C,CAC9E,IAAIq6C,EAAWd,GAAiB,EAAE,qBAAqB,CAAC,EAEpDe,EAAa,EACjB,QAASjuQ,KAAQuqE,EAIb,GAHIA,EAAM,OAAS,IACfyjM,GAAY,OAAOhuQ,EAAK,KAAK;AAAA,GAE7BA,EAAK,gBAAgBxc,GACrBwqR,GAAY,KAAK,EAAE,8BAA8B,CAAC;AAAA;AAAA,MAC/C,CACH,KAAM,CAAE,cAAAV,EAAe,eAAAC,CAAA,EAAmBH,GAAeptQ,EAAK,KAAMiuQ,CAAU,EAC9ED,GAAYV,EACZW,EAAaV,CACjB,CAGJ,OAAI55C,IACAq6C,GAAY;AAAA;AAAA,EACZA,GAAYd,GAAiB,EAAE,gBAAgB,CAAC,EAC5Cv5C,aAAoBnwO,GACpBwqR,GAAY,KAAK,EAAE,8BAA8B,CAAC;AAAA;AAAA,EAElDA,GAAYr6C,EAAW;AAAA;AAAA,GAGxBq6C,CACX,EAEM/nN,EAAQjqE,EAAAA,YAAY,IAAM,CAC5ByxR,EAAa,EAAK,CACtB,EAAG,CAACxoR,EAAWwoR,CAAY,CAAC,EAE5B5xR,EAAAA,UAAU,IAAM,CACZ,IAAIb,EAAOoxE,EAAQ6gN,GAAc7gN,CAAK,EAAI,GACtCshN,EACA1yR,GAAQ6yR,EAAYH,CAAK,EAClBnjM,GAASA,EAAM,OAAS,IAC/BvvF,GAAQ+yR,EAAWxjM,EAAOopJ,CAAQ,GAGtCi6C,EAAgB5yR,CAAI,CACxB,EAAG,CAAC0yR,EAAOthN,EAAOme,EAAOopJ,CAAQ,CAAC,EAElC,MAAMu6C,EAAaR,aAAiBlqR,GAAakqR,EAAQ,KACnDS,EAAc5jM,EAAQA,EAAM,UAAevqE,EAAK,gBAAgBxc,EAAU,EAAI,CAAA,EAC9E4qR,EAAgBz6C,aAAoBnwO,GAAamwO,EAAW,KAI5D06C,EAFc,CAACX,EAAO,GAAGnjM,EAAQA,EAAM,IAAIvqE,GAAQA,EAAK,IAAI,EAAI,CAAA,EAAI2zN,CAAQ,EAC7E,OAAO3sP,GAAKA,aAAawc,EAAU,EACV,OAAS,QAClCwpR,GAAA,CAAU,QAAS,EAAE,6BAA6B,EAAG,YAClD3uE,EAAAA,IAAC,MAAA,CACG,gBAAC,KAAA,CACI,SAAA,CAAA6vE,SAAa,KAAA,CACV,SAAA,CAAA9vE,OAAC,SAAA,CAAQ,SAAA,CAAA,EAAE,uBAAuB,EAAE,GAAA,EAAC,EAAS,IAAE8vE,EAAW,OAAA,CAAA,EAD1C,OAErB,EAAQ,KACPC,EAAY,IAAI,CAACnuQ,EAAM/0B,WACnB,KAAA,CACG,SAAA,CAAAmzN,OAAC,SAAA,CAAQ,SAAA,CAAA,EAAE,wCAAyC,CAAE,QAASp+L,EAAK,MAAO,EAAE,GAAA,EAAC,EAC5EA,EAAK,KAAoB,OAAA,CAAA,EAFtB/0B,CAGT,CACH,EACAmjS,SAAgB,KAAA,CACb,SAAA,CAAAhwE,OAAC,SAAA,CAAQ,SAAA,CAAA,EAAE,8BAA8B,EAAE,GAAA,EAAC,EAAS,IAAEgwE,EAAc,OAAA,CAAA,EADjD,UAExB,EAAQ,IAAA,EACZ,CAAA,CACJ,EACF,EAAK,KAGX,cACK,MAAA,CACK,SAAA,CAAAnpR,EACEo5M,EAAAA,IAAC,OAAI,MAAO,CAAE,QAAS,OAAQ,eAAgB,YAC3C,SAAAA,EAAAA,IAACx7I,IAAO,KAAMw7I,MAAC/6J,KAAc,EAAI,QAAS,IAAM2iB,EAAA,EAAQ,EAChE,EACE,KAEDooN,GAAwB,WACxB,MAAA,CAAI,MAAO,CAAE,QAAS,OAAQ,cAAe,KAAA,EAE1C,SAAAhwE,EAAAA,IAAC,OAAI,UAAU,YAAY,MAAO,CAAE,UAAW,QAC3C,SAAAA,EAAAA,IAAC8hD,GAAA,CACG,cAAe,CAACyR,GAAWmb,EAAU,EACrC,cAAe,CACXjB,GACA,CAACS,GAAqB,CAAE,OAAQ,SAAU,IAAK,sBAAuB,CAAA,EACtE,SAAAoB,CAAA,CAAA,EACZ,CAAA,CACJ,CAAA,EACJ,CAER,CC1JA,IAAIW,GAAc,SAAUn1Q,EAAKo1Q,EAAS,CACtC,OAAO,OAAOp1Q,EAAI,QAAQo1Q,CAAO,CAAC,CACtC,EAMIC,GAAgB,SAAUr1Q,EAAK3rB,EAAc,CAC7C,OAAuCA,CAC3C,EAEIihS,GAAiB,SAAU1tP,EAASp2C,EAAOsL,EAAU,CACjDA,GAAY,OAAOA,GAAa,YAChCA,EAAS8qC,EAASp2C,CAAK,CAE/B,EAQI+jS,GAAU,SAAUxoS,EAAG,CACvB,MAAO,CAAC,KAAK,IAAIA,EAAI,KAAK,EAAE,EAAI,EAAI,EACxC,EAEIyoS,GAAS,SAAUzoS,EAAG,CACtB,OAAOA,CACX,EAEI0oS,GAAa,SAAU1oS,EAAG,CAC1B,OAAOA,EAAIA,CACf,EAEI2oS,GAAc,SAAU3oS,EAAG,CAC3B,OAAOA,GAAK,EAAIA,EACpB,EAEI4oS,GAAgB,SAAU5oS,EAAG,CAC7B,OAAOA,EAAI,GAAM,EAAIA,EAAIA,EAAI,IAAM,EAAI,EAAIA,GAAKA,CACpD,EAEI6oS,GAAc,SAAU7oS,EAAG,CAC3B,OAAOA,EAAIA,EAAIA,CACnB,EAEI8oS,GAAe,SAAU9oS,EAAG,CAC5B,MAAO,EAAEA,EAAIA,EAAIA,EAAI,CACzB,EAEI+oS,GAAiB,SAAU/oS,EAAG,CAC9B,OAAOA,EAAI,GAAM,EAAIA,EAAIA,EAAIA,GAAKA,EAAI,IAAM,EAAIA,EAAI,IAAM,EAAIA,EAAI,GAAK,CAC3E,EAEIgpS,GAAc,SAAUhpS,EAAG,CAC3B,OAAOA,EAAIA,EAAIA,EAAIA,CACvB,EAEIipS,GAAe,SAAUjpS,EAAG,CAC5B,MAAO,IAAI,EAAEA,EAAIA,EAAIA,EAAIA,CAC7B,EAEIkpS,GAAiB,SAAUlpS,EAAG,CAC9B,OAAOA,EAAI,GAAM,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,EAAI,EAAI,EAAEA,EAAIA,EAAIA,EAAIA,CAC/D,EAEImpS,GAAc,SAAUnpS,EAAG,CAC3B,OAAOA,EAAIA,EAAIA,EAAIA,EAAIA,CAC3B,EAEIopS,GAAe,SAAUppS,EAAG,CAC5B,MAAO,GAAI,EAAEA,EAAIA,EAAIA,EAAIA,EAAIA,CACjC,EAEIqpS,GAAiB,SAAUrpS,EAAG,CAC9B,OAAOA,EAAI,GAAM,GAAKA,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,EAAI,GAAK,EAAEA,EAAIA,EAAIA,EAAIA,EAAIA,CACzE,EACIspS,GAAa,CACb,QAASd,GACT,OAAQC,GACR,WAAYC,GACZ,YAAaC,GACb,cAAeC,GACf,YAAaC,GACb,aAAcC,GACd,eAAgBC,GAChB,YAAaC,GACb,aAAcC,GACd,eAAgBC,GAChB,YAAaC,GACb,aAAcC,GACd,eAAgBC,EACpB,EAGIE,GAA6B,SAAU1gN,EAAW,CAC9C,OAAOA,GAAc,UACrB,qBAAqBA,CAAS,CAEtC,EACI2gN,GAAwB,SAAUC,EAAiB,CAC9CA,EAAgB,UAErBF,GAA2BE,EAAgB,SAAS,EAEpDA,EAAgB,QAAU,GAC1BA,EAAgB,UAAY,KAC5BA,EAAgB,SAAW,KAC/B,EACA,SAASC,GAAqBD,EAAiBthQ,EAAewhQ,EAAe55R,EAAU,CACnF,GAAK05R,EAAgB,QAErB,KAAI5nD,EAAY,IAAI,KAAI,EAAG,QAAO,EAC9B+nD,EAAW,EAEfJ,GAAsBC,CAAe,EAErCA,EAAgB,UAAY,UAAY,CACpC,GAAI,CAACA,EAAgB,QACjB,OAAOF,GAA2BE,EAAgB,SAAS,EAE/D,IAAII,EAAY,IAAI,OAAO,QAAO,EAAKhoD,EACnCioD,EAAoBD,EAAYF,EAChCI,EAAgBT,GAAWnhQ,CAAa,EACxCyjB,EAAOm+O,EAAcD,CAAiB,EACtCD,GAAaF,GACb55R,EAAS65R,CAAQ,EACjBH,EAAgB,UAAY,MAEvBA,EAAgB,YACrB15R,EAAS67C,CAAI,EACb,sBAAsB69O,EAAgB,SAAS,EAEvD,EACA,sBAAsBA,EAAgB,SAAS,EACnD,CACA,SAASO,GAAmBC,EAAa,CACrC,IAAInrR,EAAQmrR,EAAY,MAAOC,EAAYD,EAAY,UAAWE,EAAYF,EAAY,UAC1F,MAAI,SAAO,MAAMnrR,CAAK,GAClB,OAAO,MAAMorR,CAAS,GACtB,OAAO,MAAMC,CAAS,EAI9B,CACA,SAASC,GAAQX,EAAiBQ,EAAaN,EAAexhQ,EAAe,CACzE,IAAIg9J,EAAU6kG,GAAmBC,CAAW,EAC5C,GAAI,GAACR,EAAgB,SAAW,CAACtkG,GAEjC,KAAIklG,EAAoBZ,EAAgB,kBACpC5lS,EAAK4lS,EAAgB,eAAgB3qR,EAAQjb,EAAG,MAAOqmS,EAAYrmS,EAAG,UAAWsmS,EAAYtmS,EAAG,UAChGymS,EAAYL,EAAY,MAAQnrR,EAChCyrR,EAAgBN,EAAY,UAAYC,EACxCM,EAAgBP,EAAY,UAAYE,EACxCR,IAAkB,EAClBU,EAAkBJ,EAAY,MAAOA,EAAY,UAAWA,EAAY,SAAS,EAIjFP,GAAqBD,EAAiBthQ,EAAewhQ,EAAe,SAAU/9O,EAAM,CAChF,IAAIo6L,EAAWlnO,EAAQwrR,EAAY1+O,EAC/B6+O,EAAeP,EAAYK,EAAgB3+O,EAC3C8+O,EAAeP,EAAYK,EAAgB5+O,EAC/Cy+O,EAAkBrkD,EAAUykD,EAAcC,CAAY,CAC1D,CAAC,EAET,CAGA,SAASC,GAAmBC,EAAkBC,EAAkB7kD,EAAU,CACtE,IAAI8kD,EAAeF,EAAiB,YAChCG,EAAgBH,EAAiB,aACjCI,EAAeH,EAAiB,YAChCI,EAAgBJ,EAAiB,aACjCK,EAAkBF,EAAehlD,EACjCmlD,EAAmBF,EAAgBjlD,EACnColD,EAAeN,EAAeI,EAC9BG,EAAgBN,EAAgBI,EACpC,MAAO,CACH,aAAcL,EACd,cAAeC,EACf,gBAAiBG,EACjB,aAAcE,EACd,iBAAkBD,EAClB,cAAeE,CACvB,CACA,CACA,IAAIC,GAAY,SAAUR,EAAcI,EAAiBK,EAAWR,EAAeI,EAAkBt8J,EAAY28J,EAAiB,CAC9H,IAAIC,EAAmBX,EAAeI,EAChCK,GAAaC,EAAkB,EAAI,IACnC,EACFE,EAAoBX,EAAgBI,EAClCt8J,GAAc28J,EAAkB,EAAI,IACpC,EACFG,EAAeb,EAAeI,EAAkBO,EAChDG,EAAeH,EACfI,EAAed,EAAgBI,EAAmBO,EAClDI,EAAeJ,EACnB,MAAO,CAAE,aAAcC,EAAc,aAAcC,EAAc,aAAcC,EAAc,aAAcC,CAAY,CAC3H,EACIC,GAAkB,SAAUtC,EAAiBzjD,EAAU,CACvD,IAAI4kD,EAAmBnB,EAAgB,iBAAkBoB,EAAmBpB,EAAgB,iBACxF+B,EAAkB/B,EAAgB,MAAM,gBAC5C,GAAI,CAACmB,GAAoB,CAACC,EACtB,MAAM,IAAI,MAAM,4BAA4B,EAEhD,IAAIhnS,EAAK8mS,GAAmBC,EAAkBC,EAAkB7kD,CAAQ,EAAG8kD,EAAejnS,EAAG,aAAcknS,EAAgBlnS,EAAG,cAAeqnS,EAAkBrnS,EAAG,gBAAiBunS,EAAevnS,EAAG,aAAcsnS,EAAmBtnS,EAAG,iBAAkBwnS,EAAgBxnS,EAAG,cAC1QmoS,EAASV,GAAUR,EAAcI,EAAiBE,EAAcL,EAAeI,EAAkBE,EAAe,EAAQG,CAAgB,EAC5I,OAAOQ,CACX,EAQIC,GAAe,SAAU1qS,EAAO2qS,EAAUC,EAAUxgP,EAAU,CAC9D,OAAKA,EAEDpqD,EAAQ2qS,EACD9D,GAAY8D,EAAU,CAAC,EAC9B3qS,EAAQ4qS,EACD/D,GAAY+D,EAAU,CAAC,EAC3B/D,GAAY7mS,EAAO,CAAC,EALhB6mS,GAAY7mS,EAAO,CAAC,CAMnC,EACI6qS,GAAwB,SAAU3C,EAAiBzjD,EAAU,CAC7D,IAAIgmD,EAASD,GAAgBtC,EAAiBzjD,CAAQ,EAEtD,OAAAyjD,EAAgB,OAASuC,EAClBA,CACX,EACA,SAASK,GAAwBnC,EAAWC,EAAW6B,EAAQM,EAAeC,EAAeC,EAAe5B,EAAkB,CAC1H,IAAIe,EAAeK,EAAO,aAAcH,EAAeG,EAAO,aAAcJ,EAAeI,EAAO,aAAcF,EAAeE,EAAO,aAClIS,EAAW,EACXC,EAAW,EACX9B,IACA6B,EAAWF,EACXG,EAAWF,GAEf,IAAIz+Q,EAAIk+Q,GAAa/B,EAAWyB,EAAec,EAAUb,EAAea,EAAUH,CAAa,EAC3Ft+Q,EAAIi+Q,GAAa9B,EAAW0B,EAAea,EAAUZ,EAAeY,EAAUJ,CAAa,EAC/F,MAAO,CAAE,EAAGv+Q,EAAG,EAAGC,CAAC,CACvB,CAEA,SAAS2+Q,GAA6BlD,EAAiBmD,EAAQ/kK,EAAQm+G,EAAUgmD,EAAQM,EAAe,CACpG,IAAIzoS,EAAK4lS,EAAgB,eAAgB3qR,EAAQjb,EAAG,MAAOqmS,EAAYrmS,EAAG,UAAWsmS,EAAYtmS,EAAG,UAChGgpS,EAAkB7mD,EAAWlnO,EACjC,GAAI,OAAO8tR,GAAW,UAAY,OAAO/kK,GAAW,SAChD,eAAQ,MAAM,2CAA2C,EAClD,CAAE,EAAGqiK,EAAW,EAAGC,CAAS,EAEvC,IAAI2C,EAAsB5C,EAAY0C,EAASC,EAC3CE,EAAsB5C,EAAYtiK,EAASglK,EAG3CG,EAAeX,GAAwBS,EAAqBC,EAAqBf,EAAQM,EAAe,EAAG,EAAG,IAAI,EACtH,OAAOU,CACX,CACA,SAASC,GAAgBC,EAAMC,EAAUC,EAAUC,EAAaC,EAAe,CAC3E,IAAIC,EAAeD,EAAgBD,EAAc,EAC7CG,EAAsBL,EAAWI,EACrC,MAAI,CAAC,OAAO,MAAMH,CAAQ,GAAKF,GAAQE,EAC5BA,EACP,CAAC,OAAO,MAAMD,CAAQ,GAAKD,GAAQM,EAC5BA,EACJN,CACX,CAEA,IAAIO,GAAwB,SAAUhE,EAAiBhlS,EAAO,CAC1D,IAAIwpN,EAAWw7E,EAAgB,MAAM,QAAQ,SACzCiE,EAAgBjE,EAAgB,cAAemB,EAAmBnB,EAAgB,iBAClFhoS,EAASgD,EAAM,OACfkpS,EAAoB,eAAgBlsS,GAAU,iBAAkBgD,EAChEmpS,EAAiBD,EACflpS,EAAM,aAAY,EAAG,KAAK,SAAUmhF,EAAI,CACtC,OAAMA,aAAc,QAGbglN,GAAqB,KAAsC,OAASA,EAAiB,SAAShlN,CAAE,EAF5F,EAGf,CAAC,EACCglN,GAAqB,KAAsC,OAASA,EAAiB,SAASnpS,CAAM,EACtGosS,EAAYH,GAAiBjsS,GAAUmsS,EAC3C,GAAI,CAACC,EACD,MAAO,GACX,IAAIC,EAAaC,GAAetsS,EAAQwsN,CAAQ,EAChD,MAAI,CAAA6/E,CAGR,EACIE,GAAmB,SAAUvE,EAAiB,CAC9C,IAAIiE,EAAgBjE,EAAgB,cAAewE,EAAYxE,EAAgB,UAAWyE,EAAQzE,EAAgB,MAC9Gj5Q,EAAW09Q,EAAM,QAAQ,SACzBL,EAAYH,GAAiBO,GAAa,CAACz9Q,EAC/C,MAAK,EAAAq9Q,CAGT,EACIM,GAAqB,SAAU1E,EAAiBhlS,EAAO,CACvD,IAAIZ,EAAK4lS,EAAgB,eAAgBS,EAAYrmS,EAAG,UAAWsmS,EAAYtmS,EAAG,UAClF4lS,EAAgB,UAAY,GAE5B,IAAI17Q,EAAItpB,EAAM,QACVupB,EAAIvpB,EAAM,QACdglS,EAAgB,YAAc,CAAE,EAAG17Q,EAAIm8Q,EAAW,EAAGl8Q,EAAIm8Q,CAAS,CACtE,EACIiE,GAA0B,SAAU3E,EAAiBhlS,EAAO,CAC5D,IAAI4pS,EAAU5pS,EAAM,QAChBZ,EAAK4lS,EAAgB,eAAgBS,EAAYrmS,EAAG,UAAWsmS,EAAYtmS,EAAG,UAClF4lS,EAAgB,UAAY,GAE5B,IAAI6E,EAAiBD,EAAQ,SAAW,EACxC,GAAIC,EAAgB,CAChB,IAAIvgR,EAAIsgR,EAAQ,CAAC,EAAE,QACfrgR,EAAIqgR,EAAQ,CAAC,EAAE,QACnB5E,EAAgB,YAAc,CAAE,EAAG17Q,EAAIm8Q,EAAW,EAAGl8Q,EAAIm8Q,CAAS,CACtE,CACJ,EACA,SAASoE,GAAkB9E,EAAiB,CACxC,IAAI5lS,EAAK4lS,EAAgB,eAAgBS,EAAYrmS,EAAG,UAAWsmS,EAAYtmS,EAAG,UAAWib,EAAQjb,EAAG,MACpGD,EAAK6lS,EAAgB,MAAOj5Q,EAAW5sB,EAAG,SAAU0oS,EAAgB1oS,EAAG,cAAe4nS,EAAkB5nS,EAAG,gBAC3GgnS,EAAmBnB,EAAgB,iBACvC,GAAI,EAAAj5Q,GAAY,CAACo6Q,GAAoB,CAACnB,EAAgB,QAEtD,KAAIx4R,EAAKw4R,EAAgB,OAAQmC,EAAe36R,EAAG,aAAc06R,EAAe16R,EAAG,aAAc66R,EAAe76R,EAAG,aAAc46R,EAAe56R,EAAG,aAC/Iu9R,EAAWtE,EAAY0B,GAAgB1B,EAAYyB,EACnD8C,EAAWtE,EAAY2B,GAAgB3B,EAAY0B,EACnD6C,EAAYxE,EAAY0B,EACtBhB,EAAiB,YACjBnB,EAAgB,MAAM,cAAgB,EACxCkF,EAAYxE,EAAY2B,EACtBlB,EAAiB,aACjBnB,EAAgB,MAAM,cAAgB,EACxCz4R,EAAK27R,GAA6BlD,EAAiBiF,EAAWC,EAAW7vR,EAAO2qR,EAAgB,OAAQ6C,GAAiBd,CAAe,EAAG,EAAIx6R,EAAG,EAAGgd,EAAIhd,EAAG,EAChK,MAAO,CACH,MAAO8N,EACP,UAAW0vR,EAAW,EAAItE,EAC1B,UAAWuE,EAAWzgR,EAAIm8Q,CAClC,EACA,CACA,SAASyE,GAAkBnF,EAAiBgB,EAAcC,EAAc6B,EAAeC,EAAe,CAClG,IAAIF,EAAgB7C,EAAgB,MAAM,cACtCmB,EAAmBnB,EAAgB,iBAAkBuC,EAASvC,EAAgB,OAC9E5lS,EAAK4lS,EAAgB,eAAgB3qR,EAAQjb,EAAG,MAAOqmS,EAAYrmS,EAAG,UAAWsmS,EAAYtmS,EAAG,UACpG,GAAI,EAAA+mS,IAAqB,MACrBoB,IAAW,MACVvB,IAAiBP,GAAaQ,IAAiBP,GAGpD,KAAIvmS,EAAKyoS,GAAwB5B,EAAcC,EAAcsB,EAAQM,EAAeC,EAAeC,EAAe5B,CAAgB,EAAG78Q,EAAInqB,EAAG,EAAGoqB,EAAIpqB,EAAG,EACtJ6lS,EAAgB,kBAAkB3qR,EAAOiP,EAAGC,CAAC,EACjD,CACA,IAAI6gR,GAA2B,SAAUpF,EAAiB53G,EAASC,EAAS,CACxE,IAAIg9G,EAAcrF,EAAgB,YAAasF,EAAiBtF,EAAgB,eAC5EuF,EAAUvF,EAAgB,MAAM,QAChCwF,EAAYD,EAAQ,UAAWE,EAAYF,EAAQ,UACnD9E,EAAY6E,EAAe,UAAW5E,EAAY4E,EAAe,UACrE,GAAI,CAACD,EACD,MAAO,CAAE,EAAG5E,EAAW,EAAGC,CAAS,EAEvC,IAAIyC,EAAS/6G,EAAUi9G,EAAY,EAC/BjnK,EAASiqD,EAAUg9G,EAAY,EAC/BrE,EAAewE,EAAY/E,EAAY0C,EACvClC,EAAewE,EAAY/E,EAAYtiK,EAC3C,MAAO,CAAE,EAAG4iK,EAAc,EAAGC,CAAY,CAC7C,EACIyE,GAAkB,SAAU1F,EAAiBr/Q,EAAM,CACnD,IAAI8jR,EAAQzE,EAAgB,MAAOsF,EAAiBtF,EAAgB,eAChE3qR,EAAQiwR,EAAe,MACvB5B,EAAWe,EAAM,SAAUkB,EAAiBlB,EAAM,eACtD,OAAI9jR,EAAO,GAAKtL,GAASquR,GAAY,CAACiC,EAC3BhlR,EAEJ,CACX,EAEIilR,GAA+B,SAAU5F,EAAiB,CAC1D,IAAIprI,EAAUorI,EAAgB,QAC1B5lS,EAAK4lS,EAAgB,MAAOj5Q,EAAW3sB,EAAG,SAAUyrS,EAAoBzrS,EAAG,kBAC3Eib,EAAQ2qR,EAAgB,eAAe,MACvC8F,EAAmBD,EAAkB,SACrCzB,EAAY,CAAC0B,GAAoBzwR,EAAQ,GAAK,CAAC0R,GAAY6tI,EAC/D,MAAK,EAAAwvI,CAGT,EACI2B,GAAoB,SAAU/F,EAAiB,CAC/C,IAAIprI,EAAUorI,EAAgB,QAASnwE,EAAWmwE,EAAgB,SAAUuC,EAASvC,EAAgB,OACjG5lS,EAAK4lS,EAAgB,MAAOj5Q,EAAW3sB,EAAG,SAAUyrS,EAAoBzrS,EAAG,kBAC3Eib,EAAQ2qR,EAAgB,eAAe,MACvC8F,EAAmBD,EAAkB,SACrCzB,EAAY,CAAC0B,GAAoBzwR,EAAQ,GAAK,CAAC0R,GAAY6tI,EAG/D,MAFI,GAACwvI,GAED,CAACv0E,GAAY,CAAC0yE,EAGtB,EACA,SAASyD,GAAoBhG,EAAiBnwE,EAAU,CACpD,IAAIg2E,EAAoB7F,EAAgB,MAAM,kBAC1CiG,EAAcJ,EAAkB,YAAa3F,EAAgB2F,EAAkB,cAAeK,EAAcL,EAAkB,YAClI,OAAII,EACO/F,EAAgBrwE,EAAWq2E,EAE/BhG,CACX,CACA,SAASiG,GAAoBC,EAAajwE,EAAe/wD,EAAiBihI,EAAUxD,EAAeyD,EAAaC,EAAaC,EAAWC,EAAWtkP,EAAM,CACrJ,GAAI0gP,EAAe,CACf,GAAI1sE,EAAgBowE,GAAenhI,EAAkBmhI,EAAa,CAC9D,IAAIG,EAAqBH,GAAeH,EAAcG,GAAepkP,EACrE,OAAIukP,EAAqBD,EACdA,EACPC,EAAqBH,EACdA,EACJG,CACX,CACA,GAAIvwE,EAAgBmwE,GAAelhI,EAAkBkhI,EAAa,CAC9D,IAAII,EAAqBJ,GAAeF,EAAcE,GAAenkP,EACrE,OAAIukP,EAAqBF,EACdA,EACPE,EAAqBJ,EACdA,EACJI,CACX,CACJ,CACA,OAAIL,EACOlwE,EACJqsE,GAAa4D,EAAaE,EAAaC,EAAa1D,CAAa,CAC5E,CAEA,SAAS8D,GAAkBxF,EAAkB8E,EAAa,CACtD,IAAIW,EAAoB,EACxB,OAAIX,EACO,KAAK,IAAIW,EAAmBzF,EAAiB,YAAc,OAAO,UAAU,EAEhFyF,CACX,CACA,SAASC,GAAwB7G,EAAiBpqR,EAAU,CACxD,IAAIwuR,EAAYwB,GAA6B5F,CAAe,EAC5D,GAAKoE,EAGL,KAAI0C,EAAoB9G,EAAgB,kBAAmB+G,EAAe/G,EAAgB,aAAcyE,EAAQzE,EAAgB,MAC5HmB,EAAmBnB,EAAgB,iBACnCiG,EAAcxB,EAAM,kBAAkB,YACtC1tP,EAAM,KAAK,IAAG,EAClB,GAAI+vP,GAAqBC,GAAgB5F,EAAkB,CACvD,IAAI6F,EAAiBL,GAAkBxF,EAAkB8E,CAAW,EAChExkI,EAAY7rJ,EAAS,EAAIkxR,EAAkB,EAC3CplI,EAAY9rJ,EAAS,EAAIkxR,EAAkB,EAC3CG,EAAYxlI,EAAYulI,EACxBE,EAAYxlI,EAAYslI,EACxB1wR,EAAWygC,EAAMgwP,EACjBI,EAAQ1lI,EAAYA,EAAYC,EAAYA,EAC5CmuD,EAAW,KAAK,KAAKs3E,CAAK,EAAI7wR,EAClC0pR,EAAgB,SAAW,CAAE,UAAWiH,EAAW,UAAWC,EAAW,MAAOr3E,CAAQ,CAC5F,CACAmwE,EAAgB,kBAAoBpqR,EACpCoqR,EAAgB,aAAejpP,EACnC,CACA,SAASqwP,GAAsBpH,EAAiB,CAC5C,IAAInwE,EAAWmwE,EAAgB,SAAUuC,EAASvC,EAAgB,OAAQyE,EAAQzE,EAAgB,MAAOmB,EAAmBnB,EAAgB,iBACxIoE,EAAY2B,GAAkB/F,CAAe,EACjD,GAAI,GAACoE,GAAa,CAACv0E,GAAY,CAAC0yE,GAAU,CAACpB,GAG3C,KAAI8F,EAAYp3E,EAAS,UAAWq3E,EAAYr3E,EAAS,UAAWttI,EAAQstI,EAAS,MACjFsyE,EAAeI,EAAO,aAAcL,EAAeK,EAAO,aAAcF,EAAeE,EAAO,aAAcH,EAAeG,EAAO,aAClIM,EAAgB4B,EAAM,cAAe4C,EAAqB5C,EAAM,mBAChE6C,EAAgB7C,EAAM,cAAec,EAAUd,EAAM,QACrDgB,EAAYF,EAAQ,UAAWC,EAAYD,EAAQ,UACnDjF,EAAgBgH,EAAc,cAC9BC,EAAQF,EAAmB,MAAOG,EAAQH,EAAmB,MAAOI,EAAwBJ,EAAmB,sBAC/GK,EAAqBD,EACrBE,EAAoB3B,GAAoBhG,EAAiBz9M,CAAK,EAC9DqlN,EAAqB,KAAK,IAAID,EAAmBD,CAAkB,EACnE5E,EAAgB4C,GAAgB1F,EAAiBuH,CAAK,EACtDxE,EAAgB2C,GAAgB1F,EAAiBwH,CAAK,EACtDxE,EAAYF,EAAgB3B,EAAiB,YAAe,IAC5D8B,EAAYF,EAAgB5B,EAAiB,aAAgB,IAC7D0G,EAAa1F,EAAea,EAC5B8E,EAAa5F,EAAec,EAC5B+E,EAAa1F,EAAeY,EAC5B+E,EAAa5F,EAAea,EAC5BgF,EAAajI,EAAgB,eAC7B5nD,EAAY,IAAI,KAAI,EAAG,QAAO,EAClC6nD,GAAqBD,EAAiBM,EAAesH,EAAoB,SAAUzlP,EAAM,CACrF,IAAI/nD,EAAK4lS,EAAgB,eAAgB3qR,EAAQjb,EAAG,MAAOqmS,EAAYrmS,EAAG,UAAWsmS,EAAYtmS,EAAG,UAChGgmS,EAAY,IAAI,OAAO,QAAO,EAAKhoD,EACnCioD,GAAoBD,EAAYsH,EAChCQ,GAAiBrI,GAAWwH,EAAmB,aAAa,EAC5Dc,GAAY,EAAID,GAAe,KAAK,IAAI,EAAG7H,EAAiB,CAAC,EAC7D+H,GAAa,EAAIjmP,EACjB6+O,GAAeP,EAAYwG,EAAYmB,GACvCnH,EAAeP,EAAYwG,EAAYkB,GACvCC,EAAmBlC,GAAoBnF,GAAciH,EAAW,UAAWxH,EAAW+E,EAAW3C,EAAeX,EAAcC,EAAc2F,EAAYD,EAAYM,EAAS,EAC7KG,GAAmBnC,GAAoBlF,EAAcgH,EAAW,UAAWvH,EAAW+E,EAAW5C,EAAeT,EAAcC,EAAc2F,EAAYD,EAAYI,EAAS,GAC7K1H,IAAcO,IAAgBN,IAAcO,IAC5CjB,EAAgB,kBAAkB3qR,EAAOgzR,EAAkBC,EAAgB,CAEnF,CAAC,EACL,CAEA,SAASC,GAAmBvI,EAAiBhlS,EAAO,CAChD,IAAIqa,EAAQ2qR,EAAgB,eAAe,MAC3CD,GAAsBC,CAAe,EACrC2C,GAAsB3C,EAAiB3qR,CAAK,EACxC,OAAO,aAAe,QAAara,aAAiB,WACpD2pS,GAAwB3E,EAAiBhlS,CAAK,EAG9C0pS,GAAmB1E,EAAiBhlS,CAAK,CAEjD,CACA,SAASwtS,GAAoBxI,EAAiByI,EAAqB,CAC/D,IAAIpzR,EAAQ2qR,EAAgB,eAAe,MACvC5lS,EAAK4lS,EAAgB,MAAO0D,EAAWtpS,EAAG,SAAUitS,EAAqBjtS,EAAG,mBAC5E2sB,EAAWsgR,EAAmB,SAAUE,EAAQF,EAAmB,MAAOG,EAAQH,EAAmB,MAAOnH,EAAgBmH,EAAmB,cAAe/G,EAAgB+G,EAAmB,cACjMqB,EAAa3hR,GAAY1R,EAAQquR,GAAa,CAAC6D,GAAS,CAACC,EAC7D,GAAI,CAAAkB,EAEJ,KAAIlI,EAAcsE,GAAkB9E,CAAe,EAC/CQ,GACAG,GAAQX,EAAiBQ,EAAaiI,GAAuFvI,EAAeI,CAAa,EAEjK,CACA,SAASqI,GAAc3I,EAAiB53G,EAASC,EAAS,CACtD,IAAIg9G,EAAcrF,EAAgB,YAAayE,EAAQzE,EAAgB,MACnE5lS,EAAKqqS,EAAM,mBAAoB8C,EAAQntS,EAAG,MAAOotS,EAAQptS,EAAG,MAChE,GAAKirS,EAEL,KAAIlrS,EAAKirS,GAAyBpF,EAAiB53G,EAASC,CAAO,EAAG/jK,EAAInqB,EAAG,EAAGoqB,EAAIpqB,EAAG,EACnF2oS,EAAgB4C,GAAgB1F,EAAiBuH,CAAK,EACtDxE,EAAgB2C,GAAgB1F,EAAiBwH,CAAK,EAC1DX,GAAwB7G,EAAiB,CAAE,EAAG17Q,EAAG,EAAGC,EAAG,EACvD4gR,GAAkBnF,EAAiB17Q,EAAGC,EAAGu+Q,EAAeC,CAAa,EACzE,CACA,SAAS6F,GAAiB5I,EAAiB,CACvC,GAAIA,EAAgB,UAAW,CAC3B,IAAI6I,EAAmB7I,EAAgB,MAAM,QAAQ,iBACjDnwE,EAAWmwE,EAAgB,SAAUmB,EAAmBnB,EAAgB,iBAAkBoB,EAAmBpB,EAAgB,iBACjIA,EAAgB,UAAY,GAC5BA,EAAgB,QAAU,GAC1BA,EAAgB,UAAY,KAC5B,IAAI8I,EAAc3H,GAAqB,KAAsC,OAASA,EAAiB,sBAAqB,EACxHt8Q,EAAcu8Q,GAAqB,KAAsC,OAASA,EAAiB,sBAAqB,EACxHC,GAAgByH,GAAgB,KAAiC,OAASA,EAAY,QAAU,EAChGxH,GAAiBwH,GAAgB,KAAiC,OAASA,EAAY,SAAW,EAClGvH,GAAgB18Q,GAAgB,KAAiC,OAASA,EAAY,QAAU,EAChG28Q,GAAiB38Q,GAAgB,KAAiC,OAASA,EAAY,SAAW,EAClGkkR,EAAW1H,EAAeE,GAAgBD,EAAgBE,EAC1DwH,EAAgB,CAACH,GAAoBh5E,IAAaA,GAAa,KAA8B,OAASA,EAAS,OAAS,IAAOk5E,EAC/HC,EACA5B,GAAsBpH,CAAe,EAGrCwI,GAAoBxI,CAAe,CAE3C,CACJ,CAEA,SAASiJ,GAAkBjJ,EAAiB3qR,EAAO8tR,EAAQ/kK,EAAQ,CAC/D,IAAIhkI,EAAK4lS,EAAgB,MAAO0D,EAAWtpS,EAAG,SAAUupS,EAAWvpS,EAAG,SAAUyoS,EAAgBzoS,EAAG,cAC/FmiP,EAAWinD,GAAgB7E,GAAYtpR,EAAO,CAAC,EAAGquR,EAAUC,EAAU,EAAG,EAAK,EAC9EpB,EAASI,GAAsB3C,EAAiBzjD,CAAQ,EACxDpiP,EAAK+oS,GAA6BlD,EAAiBmD,EAAQ/kK,EAAQm+G,EAAUgmD,EAAQM,CAAa,EAAGv+Q,EAAInqB,EAAG,EAAGoqB,EAAIpqB,EAAG,EAC1H,MAAO,CAAE,MAAOoiP,EAAU,UAAWj4N,EAAG,UAAWC,CAAC,CACxD,CACA,SAAS2kR,GAAyBlJ,EAAiBmJ,EAAgBC,EAAgB,CAC/E,IAAI/zR,EAAQ2qR,EAAgB,eAAe,MACvCmB,EAAmBnB,EAAgB,iBACnC5lS,EAAK4lS,EAAgB,MAAO0D,EAAWtpS,EAAG,SAAUyoS,EAAgBzoS,EAAG,cAAektS,EAAgBltS,EAAG,cACzG2sB,EAAWugR,EAAc,SAAUpH,EAAgBoH,EAAc,cAAehH,EAAgBgH,EAAc,cAC9GoB,EAAa3hR,GAAY1R,GAASquR,EAKtC,IAJIruR,GAAS,GAAKwtR,IAEd2F,GAAoBxI,CAAe,EAEnC,EAAA0I,GAAc,CAACvH,GAAoB,CAACnB,EAAgB,SAExD,KAAImD,EAASgG,GAAkBhI,EAAiB,YAAc,EAC1D/iK,EAASgrK,GAAkBjI,EAAiB,aAAe,EAC3DX,EAAcyI,GAAkBjJ,EAAiB0D,EAAUP,EAAQ/kK,CAAM,EACzEoiK,GACAG,GAAQX,EAAiBQ,EAAaN,EAAeI,CAAa,EAE1E,CAiBA,IAAI7tD,GAAW,UAAW,CACtB,OAAAA,GAAW,OAAO,QAAU,SAAkB,EAAG,CAC7C,QAASn8O,EAAGoD,EAAI,EAAGqN,EAAI,UAAU,OAAQrN,EAAIqN,EAAGrN,IAAK,CACjDpD,EAAI,UAAUoD,CAAC,EACf,QAASpC,KAAKhB,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGgB,CAAC,IAAG,EAAEA,CAAC,EAAIhB,EAAEgB,CAAC,EAC/E,CACA,OAAO,CACX,EACOm7O,GAAS,MAAM,KAAM,SAAS,CACzC,EAcA,SAAS42D,GAAcz3M,EAAIl5D,EAAM98B,EAAM,CACC,QAASlC,EAAI,EAAGkF,EAAI85B,EAAK,OAAQw5M,EAAIx4O,EAAIkF,EAAGlF,KACxEw4O,GAAM,EAAEx4O,KAAKg/B,MACRw5M,IAAIA,EAAK,MAAM,UAAU,MAAM,KAAKx5M,EAAM,EAAGh/B,CAAC,GACnDw4O,EAAGx4O,CAAC,EAAIg/B,EAAKh/B,CAAC,GAGtB,OAAOk4F,EAAG,OAAOsgJ,GAAM,MAAM,UAAU,MAAM,KAAKx5M,CAAI,CAAC,CAC3D,CAEA,OAAO,iBAAoB,YAAa,gBAKxC,IAAI9lB,GAAe,CAEf,MAAO,EACP,UAAW,EACX,UAAW,CACf,EACI02R,GAAe,CACf,SAAU,GACV,aAAc,KACd,aAAc,KACd,aAAc,KACd,aAAc,KACd,SAAU,EACV,SAAU,EACV,cAAe,GACf,gBAAiB,GACjB,aAAc,GACd,eAAgB,GAChB,OAAQ,GACR,MAAO,CACH,KAAM,GACN,SAAU,GACV,WAAY,KACZ,cAAe,GACf,iBAAkB,GAClB,eAAgB,CAAA,EAChB,SAAU,CAAA,CAClB,EACI,QAAS,CACL,SAAU,GACV,iBAAkB,GAClB,UAAW,GACX,UAAW,GACX,kBAAmB,GACnB,oBAAqB,GACrB,mBAAoB,GACpB,aAAc,GACd,eAAgB,CAAA,EAChB,SAAU,CAAA,CAClB,EACI,MAAO,CACH,KAAM,EACN,SAAU,GACV,SAAU,CAAA,CAClB,EACI,YAAa,CACT,SAAU,GACV,KAAM,GACN,KAAM,SACN,cAAe,UACf,cAAe,IACf,SAAU,CAAA,CAClB,EACI,cAAe,CACX,SAAU,GACV,KAAM,GACN,cAAe,IACf,cAAe,SACvB,EACI,mBAAoB,CAChB,SAAU,GACV,MAAO,IACP,MAAO,IACP,cAAe,IACf,sBAAuB,IACvB,cAAe,SACvB,EACI,kBAAmB,CACf,SAAU,GACV,YAAa,EACb,cAAe,IACf,cAAe,UACf,YAAa,EACrB,CACA,EACIC,GAAc,CACd,aAAc,0BACd,aAAc,2BAClB,EAEIr3R,GAAc,SAAU3F,EAAO,CAC/B,IAAInS,EAAID,EAAIqN,EAAID,EAChB,MAAO,CACH,eAAgBnN,EAAKmS,EAAM,gBAAkB,MAAQnS,IAAO,OAASA,EAAKwY,GAAa,MACvF,OAAQzY,EAAKoS,EAAM,gBAAkB,MAAQpS,IAAO,OAASA,EAAKyY,GAAa,MAC/E,WAAYpL,EAAK+E,EAAM,oBAAsB,MAAQ/E,IAAO,OAASA,EAAKoL,GAAa,UACvF,WAAYrL,EAAKgF,EAAM,oBAAsB,MAAQhF,IAAO,OAASA,EAAKqL,GAAa,SAC/F,CACA,EACI42R,GAAc,SAAUj9R,EAAO,CAC/B,IAAIk9R,EAAWh3D,GAAS,CAAA,EAAI62D,EAAY,EACxC,cAAO,KAAK/8R,CAAK,EAAE,QAAQ,SAAU5V,EAAK,CACtC,IAAI+yS,EAAa,OAAOn9R,EAAM5V,CAAG,EAAM,IACnCgzS,EAAiB,OAAOL,GAAa3yS,CAAG,EAAM,IAClD,GAAIgzS,GAAkBD,EAAY,CAC9B,IAAIE,EAAW,OAAO,UAAU,SAAS,KAAKN,GAAa3yS,CAAG,CAAC,EAC3DqU,EAAW4+R,IAAa,kBACxB9+N,EAAU8+N,IAAa,iBACvB5+R,EACAy+R,EAAS9yS,CAAG,EAAI87O,GAASA,GAAS,CAAA,EAAI62D,GAAa3yS,CAAG,CAAC,EAAG4V,EAAM5V,CAAG,CAAC,EAE/Dm0E,EACL2+N,EAAS9yS,CAAG,EAAI0yS,GAAcA,GAAc,CAAA,EAAIC,GAAa3yS,CAAG,EAAG,EAAI,EAAG4V,EAAM5V,CAAG,CAAO,EAG1F8yS,EAAS9yS,CAAG,EAAI4V,EAAM5V,CAAG,CAEjC,CACJ,CAAC,EACM8yS,CACX,EAEII,GAA4B,SAAU7J,EAAiBv3P,EAAO0Z,EAAM,CACpE,IAAI9sC,EAAQ2qR,EAAgB,eAAe,MACvCmB,EAAmBnB,EAAgB,iBAAkByE,EAAQzE,EAAgB,MAC7E2D,EAAWc,EAAM,SAAUf,EAAWe,EAAM,SAAU6C,EAAgB7C,EAAM,cAAeqF,EAASrF,EAAM,OAC1G9jR,EAAO2mR,EAAc,KACzB,GAAI,CAACnG,EACD,MAAM,IAAI,MAAM,wBAAwB,EAE5C,IAAI4I,EAAcD,EACZz0R,EAAQ,KAAK,IAAIozB,EAAQ0Z,CAAI,EAC7B9sC,EAAQozB,EAAQ0Z,EAClBo6L,EAAWinD,GAAgB7E,GAAYoL,EAAa,CAAC,EAAGrG,EAAUC,EAAUhjR,EAAM,EAAK,EAC3F,OAAO47N,CACX,EACA,SAASytD,GAAuBhK,EAAiBv3P,EAAO0Z,EAAM+9O,EAAeI,EAAe,CACxF,IAAIa,EAAmBnB,EAAgB,iBACnC5lS,EAAK4lS,EAAgB,eAAgB3qR,EAAQjb,EAAG,MAAOqmS,EAAYrmS,EAAG,UAAWsmS,EAAYtmS,EAAG,UACpG,GAAI,CAAC+mS,EACD,OAAO,QAAQ,MAAM,2BAA2B,EACpD,IAAIE,EAAeF,EAAiB,YAChCG,EAAgBH,EAAiB,aACjCgC,GAAU9B,EAAe,EAAIZ,GAAaprR,EAC1C+oH,GAAUkjK,EAAgB,EAAIZ,GAAarrR,EAC3CknO,EAAWstD,GAA0B7J,EAAiBv3P,EAAO0Z,CAAI,EACjEq+O,EAAcyI,GAAkBjJ,EAAiBzjD,EAAU4mD,EAAQ/kK,CAAM,EAC7E,GAAI,CAACoiK,EACD,OAAO,QAAQ,MAAM,uEAAuE,EAEhGG,GAAQX,EAAiBQ,EAAaN,EAAeI,CAAa,CACtE,CACA,SAAS2J,GAAqBjK,EAAiBE,EAAeI,EAAe4J,EAAuB,CAChG,IAAIzF,EAAQzE,EAAgB,MAAOmB,EAAmBnB,EAAgB,iBAClE6C,EAAgB4B,EAAM,cACtB0F,EAAwBj4R,GAAY8tR,EAAgB,KAAK,EACzD5lS,EAAK4lS,EAAgB,eAAgB3qR,EAAQjb,EAAG,MAAOqmS,EAAYrmS,EAAG,UAAWsmS,EAAYtmS,EAAG,UACpG,GAAK+mS,EAEL,KAAIiJ,EAAY9H,GAAgBtC,EAAiBmK,EAAsB,KAAK,EACxEE,EAAmBzH,GAAwBuH,EAAsB,UAAWA,EAAsB,UAAWC,EAAWvH,EAAe,EAAG,EAAG1B,CAAgB,EAC7JmJ,EAAW,CACX,MAAOH,EAAsB,MAC7B,UAAWE,EAAiB,EAC5B,UAAWA,EAAiB,CACpC,EACQh1R,IAAU80R,EAAsB,OAChC1J,IAAc0J,EAAsB,WACpCzJ,IAAcyJ,EAAsB,YAGxCD,GAA0B,MAAoDA,EAAqB,EACnGvJ,GAAQX,EAAiBsK,EAAUpK,EAAeI,CAAa,GACnE,CACA,SAAS33I,GAAU/nI,EAAS0wJ,EAAS30I,EAASxqB,EAAO,CACjD,IAAI2oB,EAASla,EAAQ,sBAAqB,EACtC2pR,EAAgBj5H,EAAQ,sBAAqB,EAC7Ck5H,EAAgB7tQ,EAAQ,sBAAqB,EAC7C8tQ,EAAOF,EAAc,EAAIp4R,EAAM,MAC/Bu4R,EAAOH,EAAc,EAAIp4R,EAAM,MACnC,MAAO,CACH,GAAI2oB,EAAO,EAAI0vQ,EAAc,EAAIC,GAAQt4R,EAAM,MAC/C,GAAI2oB,EAAO,EAAI0vQ,EAAc,EAAIE,GAAQv4R,EAAM,KACvD,CACA,CACA,SAASw4R,GAAoB3K,EAAiBrlR,EAAMiwR,EAAY,CAC5D,IAAIzJ,EAAmBnB,EAAgB,iBAAkBoB,EAAmBpB,EAAgB,iBAAkBsF,EAAiBtF,EAAgB,eAC3I5lS,EAAK4lS,EAAgB,MAAO6C,EAAgBzoS,EAAG,cAAespS,EAAWtpS,EAAG,SAAUupS,EAAWvpS,EAAG,SACxG,GAAI,CAAC+mS,GAAoB,CAACC,EACtB,OAAOkE,EACX,IAAIwD,EAAc3H,EAAiB,sBAAqB,EACpD0J,EAAWlwR,EAAK,sBAAqB,EACrCmwR,EAAaniJ,GAAUhuI,EAAMwmR,EAAkBC,EAAkBkE,CAAc,EAC/EyF,EAAWD,EAAW,EACtBE,EAAUF,EAAW,EACrBG,EAAYJ,EAAS,MAAQvF,EAAe,MAC5C4F,EAAaL,EAAS,OAASvF,EAAe,MAC9CvoL,EAASokL,EAAiB,YAAc8J,EACxCjuL,EAASmkL,EAAiB,aAAe+J,EACzC3uD,EAAWinD,GAAgBoH,GAAc,KAAK,IAAI7tL,EAAQC,CAAM,EAAG0mL,EAAUC,EAAU,EAAG,EAAK,EAC/Fr8N,GAAWwhO,EAAY,MAAQmC,EAAY1uD,GAAY,EACvDh1K,GAAWuhO,EAAY,OAASoC,EAAa3uD,GAAY,EACzDykD,GAAgB8H,EAAY,KAAOiC,GAAYxuD,EAAWj1K,EAC1D25N,GAAgB6H,EAAY,IAAMkC,GAAWzuD,EAAWh1K,EACxDg7N,EAASD,GAAgBtC,EAAiBzjD,CAAQ,EAClDpiP,EAAKyoS,GAAwB5B,EAAcC,EAAcsB,EAAQM,EAAe,EAAG,EAAG1B,CAAgB,EAAG78Q,EAAInqB,EAAG,EAAGoqB,EAAIpqB,EAAG,EAC9H,MAAO,CAAE,UAAWmqB,EAAG,UAAWC,EAAG,MAAOg4N,CAAQ,CACxD,CAEA,IAAIrvK,GAAS,SAAU8yN,EAAiB,CACpC,OAAO,SAAU79O,EAAM+9O,EAAeI,EAAe,CAC7Cn+O,IAAS,SAAUA,EAAO,IAC1B+9O,IAAkB,SAAUA,EAAgB,KAC5CI,IAAkB,SAAUA,EAAgB,WAChD0J,GAAuBhK,EAAiB,EAAG79O,EAAM+9O,EAAeI,CAAa,CACjF,CACJ,EACInzN,GAAU,SAAU6yN,EAAiB,CACrC,OAAO,SAAU79O,EAAM+9O,EAAeI,EAAe,CAC7Cn+O,IAAS,SAAUA,EAAO,IAC1B+9O,IAAkB,SAAUA,EAAgB,KAC5CI,IAAkB,SAAUA,EAAgB,WAChD0J,GAAuBhK,EAAiB,GAAI79O,EAAM+9O,EAAeI,CAAa,CAClF,CACJ,EACI6K,GAAe,SAAUnL,EAAiB,CAC1C,OAAO,SAAUgB,EAAcC,EAAc1kD,EAAU2jD,EAAeI,EAAe,CAC7EJ,IAAkB,SAAUA,EAAgB,KAC5CI,IAAkB,SAAUA,EAAgB,WAChD,IAAIlmS,EAAK4lS,EAAgB,eAAgBS,EAAYrmS,EAAG,UAAWsmS,EAAYtmS,EAAG,UAAWib,EAAQjb,EAAG,MACpG+mS,EAAmBnB,EAAgB,iBAAkBoB,EAAmBpB,EAAgB,iBACxFj5Q,EAAWi5Q,EAAgB,MAAM,SACrC,GAAI,EAAAj5Q,GAAY,CAACo6Q,GAAoB,CAACC,GAEtC,KAAIZ,EAAc,CACd,UAAW,OAAO,MAAMQ,CAAY,EAAIP,EAAYO,EACpD,UAAW,OAAO,MAAMC,CAAY,EAAIP,EAAYO,EACpD,MAAO,OAAO,MAAM1kD,CAAQ,EAAIlnO,EAAQknO,CACpD,EACQokD,GAAQX,EAAiBQ,EAAaN,EAAeI,CAAa,EACtE,CACJ,EACI8K,GAAiB,SAAUpL,EAAiB,CAC5C,OAAO,SAAUE,EAAeI,EAAe,CACvCJ,IAAkB,SAAUA,EAAgB,KAC5CI,IAAkB,SAAUA,EAAgB,WAChD2J,GAAqBjK,EAAiBE,EAAeI,CAAa,CACtE,CACJ,EACI+K,GAAa,SAAUrL,EAAiB,CACxC,OAAO,SAAU3qR,EAAO6qR,EAAeI,EAAe,CAC9CJ,IAAkB,SAAUA,EAAgB,KAC5CI,IAAkB,SAAUA,EAAgB,WAChD,IAAIgF,EAAiBtF,EAAgB,eAAgBmB,EAAmBnB,EAAgB,iBAAkBoB,EAAmBpB,EAAgB,iBAC7I,GAAImB,GAAoBC,EAAkB,CACtC,IAAIZ,EAAc8K,GAAkBj2R,GAASiwR,EAAe,MAAOnE,EAAkBC,CAAgB,EACrGT,GAAQX,EAAiBQ,EAAaN,EAAeI,CAAa,CACtE,CACJ,CACJ,EACIiL,GAAgB,SAAUvL,EAAiB,CAC3C,OAAO,SAAUrlR,EAAMtF,EAAO6qR,EAAeI,EAAe,CACpDJ,IAAkB,SAAUA,EAAgB,KAC5CI,IAAkB,SAAUA,EAAgB,WAChDP,GAAsBC,CAAe,EACrC,IAAImB,EAAmBnB,EAAgB,iBACnChoS,EAAS,OAAO2iB,GAAS,SAAW,SAAS,eAAeA,CAAI,EAAIA,EACxE,GAAIwmR,GAAoBnpS,GAAUmpS,EAAiB,SAASnpS,CAAM,EAAG,CACjE,IAAIwoS,EAAcmK,GAAoB3K,EAAiBhoS,EAAQqd,CAAK,EACpEsrR,GAAQX,EAAiBQ,EAAaN,EAAeI,CAAa,CACtE,CACJ,CACJ,EAEIkL,GAAc,SAAUxL,EAAiB,CACzC,MAAO,CACH,SAAUA,EACV,OAAQ9yN,GAAO8yN,CAAe,EAC9B,QAAS7yN,GAAQ6yN,CAAe,EAChC,aAAcmL,GAAanL,CAAe,EAC1C,eAAgBoL,GAAepL,CAAe,EAC9C,WAAYqL,GAAWrL,CAAe,EACtC,cAAeuL,GAAcvL,CAAe,CACpD,CACA,EACIttR,GAAW,SAAUstR,EAAiB,CACtC,MAAO,CACH,SAAUA,EACV,MAAOA,EAAgB,cAC/B,CACA,EACIyL,GAAa,SAAUzL,EAAiB,CACxC,IAAIh0R,EAAM,CAAA,EACV,cAAO,OAAOA,EAAK0G,GAASstR,CAAe,CAAC,EAC5C,OAAO,OAAOh0R,EAAKw/R,GAAYxL,CAAe,CAAC,EACxCh0R,CACX,EAKI0/R,GAAmB,GACvB,SAASC,IAAyB,CAC9B,GAAI,CACA,IAAIpxS,EAAU,CACV,IAAI,SAAU,CAGV,OAAAmxS,GAAmB,GACZ,EACX,CACZ,EACQ,OAAOnxS,CACX,MACY,CACR,OAAAmxS,GAAmB,GACZA,EACX,CACJ,CAEA,IAAIzjQ,GAAc,IAAI,OAAOshQ,GAAY,YAAY,EACjDjF,GAAiB,SAAU3pR,EAAM6pM,EAAU,CAC3C,OAAOA,EAAS,KAAK,SAAUonF,EAAS,CACpC,OAAOjxR,EAAK,QAAQ,GAAG,OAAOstB,GAAa,GAAG,EAAE,OAAO2jQ,EAAS,IAAI,EAAE,OAAO3jQ,GAAa,IAAI,EAAE,OAAO2jQ,EAAS,IAAI,EAAE,OAAO3jQ,GAAa,GAAG,EAAE,OAAO2jQ,EAAS,MAAM,EAAE,OAAO3jQ,GAAa,IAAI,EAAE,OAAO2jQ,EAAS,IAAI,CAAC,CAC1N,CAAC,CACL,EACIC,GAAgB,SAAUp0R,EAAS,CAC/BA,GACA,aAAaA,CAAO,CAE5B,EAEIq0R,GAAqB,SAAUxnR,EAAGC,EAAGlP,EAAO,CAE5C,MAAO,aAAa,OAAOiP,EAAG,MAAM,EAAE,OAAOC,EAAG,YAAY,EAAE,OAAOlP,EAAO,GAAG,CACnF,EAYIi2R,GAAoB,SAAUj2R,EAAO8rR,EAAkBC,EAAkB,CACzE,IAAIG,EAAeH,EAAiB,YAAc/rR,EAC9CmsR,EAAgBJ,EAAiB,aAAe/rR,EAChD02R,GAAmB5K,EAAiB,YAAcI,GAAgB,EAClEyK,GAAmB7K,EAAiB,aAAeK,GAAiB,EACxE,MAAO,CACH,MAAOnsR,EACP,UAAW02R,EACX,UAAWC,CACnB,CACA,EAEA,SAASC,GAAU3sR,EAAM,CACrB,OAAO,SAAUxnB,EAAO,CACpBwnB,EAAK,QAAQ,SAAUtT,EAAK,CACpB,OAAOA,GAAQ,WACfA,EAAIlU,CAAK,EAEJkU,GAAO,OACZA,EAAI,QAAUlU,EAEtB,CAAC,CACL,CACJ,CAEA,IAAIo0S,GAAiB,SAAUlM,EAAiBhlS,EAAO,CACnD,IAAIZ,EAAK4lS,EAAgB,MAAM,MAAOj5Q,EAAW3sB,EAAG,SAAU+xS,EAAgB/xS,EAAG,cAAegyS,EAAmBhyS,EAAG,iBAAkBoqN,EAAWpqN,EAAG,SAClJ6pS,EAAgBjE,EAAgB,cAAewE,EAAYxE,EAAgB,UAC3EhoS,EAASgD,EAAM,OACfopS,EAAYH,GAAiB,CAACO,GAAa,CAACz9Q,GAAY/uB,EAM5D,GALI,CAACosS,GAGD+H,GAAiB,CAACnxS,EAAM,SAExBoxS,GAAoBpxS,EAAM,QAC1B,MAAO,GACX,IAAIqpS,EAAaC,GAAetsS,EAAQwsN,CAAQ,EAChD,MAAI,CAAA6/E,CAGR,EACIgI,GAAY,SAAUrxS,EAAO,CAC7B,OAAIA,EACOA,EAAM,OAAS,EAAI,EAAI,GAE3B,CACX,EACA,SAASsxS,GAAStxS,EAAOuxS,EAAa,CAClC,IAAI5yK,EAAS0yK,GAAUrxS,CAAK,EACxBytC,EAAQo2P,GAAc0N,EAAa5yK,CAAM,EAC7C,OAAOlxF,CACX,CACA,SAAS+jQ,GAAiBxxS,EAAOomS,EAAkB/rR,EAAO,CACtD,IAAIwP,EAAcu8Q,EAAiB,sBAAqB,EACpD+B,EAAS,EACT/kK,EAAS,EACb,GAAI,YAAapjI,EAEbmoS,GAAUnoS,EAAM,QAAU6pB,EAAY,MAAQxP,EAC9C+oH,GAAUpjI,EAAM,QAAU6pB,EAAY,KAAOxP,MAE5C,CACD,IAAIqlM,EAAQ1/M,EAAM,QAAQ,CAAC,EAC3BmoS,GAAUzoF,EAAM,QAAU71L,EAAY,MAAQxP,EAC9C+oH,GAAUs8E,EAAM,QAAU71L,EAAY,KAAOxP,CACjD,CACA,OAAI,OAAO,MAAM8tR,CAAM,GAAK,OAAO,MAAM/kK,CAAM,IAC3C,QAAQ,MAAM,gCAAgC,EAC3C,CACH,EAAG+kK,EACH,EAAG/kK,CACX,CACA,CACA,IAAIquK,GAA2B,SAAUzM,EAAiBv3P,EAAO0Z,EAAMuqP,EAASC,EAAW,CACvF,IAAIt3R,EAAQ2qR,EAAgB,eAAe,MACvCmB,EAAmBnB,EAAgB,iBAAkByE,EAAQzE,EAAgB,MAC7E2D,EAAWc,EAAM,SAAUf,EAAWe,EAAM,SAAU6C,EAAgB7C,EAAM,cAAekB,EAAiBlB,EAAM,eAClH9jR,EAAO2mR,EAAc,KAAMvgR,EAAWugR,EAAc,SACxD,GAAI,CAACnG,EACD,MAAM,IAAI,MAAM,wBAAwB,EAE5C,IAAI4I,EAAc10R,EAAQozB,EAAQ0Z,EAG9ByqP,EAAiBF,EAAU,GAAQ,CAAC3lR,EACpCw1N,EAAWinD,GAAgB7E,GAAYoL,EAAa,CAAC,EAAGrG,EAAUC,EAAUhjR,EAAMisR,GAAkB,CAACjH,CAAc,EACvH,OAAOppD,CACX,EACIswD,GAAsB,SAAU7M,EAAiBhlS,EAAO,CACxD,IAAI8xS,EAAqB9M,EAAgB,mBACrC3qR,EAAQ2qR,EAAgB,eAAe,MACvC5lS,EAAK4lS,EAAgB,MAAO2D,EAAWvpS,EAAG,SAAUspS,EAAWtpS,EAAG,SACtE,OAAK0yS,EAEDz3R,EAAQsuR,GAAYtuR,EAAQquR,GAE5B,KAAK,KAAKoJ,EAAmB,MAAM,IAAM,KAAK,KAAK9xS,EAAM,MAAM,GAE/D8xS,EAAmB,OAAS,GAAKA,EAAmB,OAAS9xS,EAAM,QAEnE8xS,EAAmB,OAAS,GAAKA,EAAmB,OAAS9xS,EAAM,QAEnE,KAAK,KAAK8xS,EAAmB,MAAM,IAAM,KAAK,KAAK9xS,EAAM,MAAM,EATxD,EAYf,EAEI+xS,GAAsB,SAAU/M,EAAiBhlS,EAAO,CACxD,IAAIZ,EAAK4lS,EAAgB,MAAM,MAAOj5Q,EAAW3sB,EAAG,SAAUoqN,EAAWpqN,EAAG,SACxE6pS,EAAgBjE,EAAgB,cAChChoS,EAASgD,EAAM,OACfopS,EAAYH,GAAiB,CAACl9Q,GAAY/uB,EAC9C,GAAI,CAACosS,EACD,MAAO,GACX,IAAIC,EAAaC,GAAetsS,EAAQwsN,CAAQ,EAChD,MAAI,CAAA6/E,CAGR,EACI2I,GAAiB,SAAUhN,EAAiB,CAC5C,IAAIj5Q,EAAWi5Q,EAAgB,MAAM,MAAM,SACvCiE,EAAgBjE,EAAgB,cAAeiN,EAAqBjN,EAAgB,mBACpFoE,EAAYH,GAAiB,CAACl9Q,GAAYkmR,EAC9C,MAAK,EAAA7I,CAGT,EACI8I,GAAyB,SAAUlyS,EAAOqa,EAAO+rR,EAAkB,CACnE,IAAIv8Q,EAAcu8Q,EAAiB,sBAAqB,EACpDwD,EAAU5pS,EAAM,QAChBmyS,EAAcxO,GAAYiG,EAAQ,CAAC,EAAE,QAAU//Q,EAAY,KAAM,CAAC,EAClEuoR,EAAczO,GAAYiG,EAAQ,CAAC,EAAE,QAAU//Q,EAAY,IAAK,CAAC,EACjEwoR,EAAe1O,GAAYiG,EAAQ,CAAC,EAAE,QAAU//Q,EAAY,KAAM,CAAC,EACnEyoR,EAAe3O,GAAYiG,EAAQ,CAAC,EAAE,QAAU//Q,EAAY,IAAK,CAAC,EACtE,MAAO,CACH,GAAIsoR,EAAcE,GAAgB,EAAIh4R,EACtC,GAAI+3R,EAAcE,GAAgB,EAAIj4R,CAC9C,CACA,EACIk4R,GAAmB,SAAUvyS,EAAO,CACpC,OAAO,KAAK,KAAK,KAAK,IAAKA,EAAM,QAAQ,CAAC,EAAE,MAAQA,EAAM,QAAQ,CAAC,EAAE,MAAQ,CAAC,EAC1E,KAAK,IAAKA,EAAM,QAAQ,CAAC,EAAE,MAAQA,EAAM,QAAQ,CAAC,EAAE,MAAQ,CAAC,CAAC,CACtE,EACIwyS,GAAqB,SAAUxN,EAAiByN,EAAiB,CACjE,IAAIC,EAAkB1N,EAAgB,gBAAiBiN,EAAqBjN,EAAgB,mBAAoByE,EAAQzE,EAAgB,MACpI2D,EAAWc,EAAM,SAAUf,EAAWe,EAAM,SAAU6C,EAAgB7C,EAAM,cAAekB,EAAiBlB,EAAM,eAClH9jR,EAAO2mR,EAAc,KAAMvgR,EAAWugR,EAAc,SACxD,GAAI,CAACoG,GAAmBT,IAAuB,MAAQ,CAACQ,EACpD,MAAM,IAAI,MAAM,yCAAyC,EAE7D,GAAIA,EAAkB,EAClB,OAAOzN,EAAgB,eAAe,MAE1C,IAAI2N,EAAkBF,EAAkBR,EACpC7J,EAAkBuK,EAAkBD,EACxC,OAAOlK,GAAgB7E,GAAYyE,EAAiB,CAAC,EAAGM,EAAUC,EAAUhjR,EAAM,CAACoG,GAAY,CAAC4+Q,CAAc,CAClH,EAEIiI,GAAqB,IACrBC,GAAqB,IACrBC,GAAmB,SAAU9N,EAAiBhlS,EAAO,CACrD,IAAIZ,EAAK4lS,EAAgB,MAAO+N,EAAe3zS,EAAG,aAAc4zS,EAAc5zS,EAAG,YAC5E4lS,EAAgB,sBACjBD,GAAsBC,CAAe,EACrClB,GAAe2M,GAAWzL,CAAe,EAAGhlS,EAAO+yS,CAAY,EAC/DjP,GAAe2M,GAAWzL,CAAe,EAAGhlS,EAAOgzS,CAAW,EAEtE,EACIC,GAAkB,SAAUjO,EAAiBhlS,EAAO,CACpD,IAAIZ,EAAK4lS,EAAgB,MAAO/lK,EAAU7/H,EAAG,QAAS8zS,EAAS9zS,EAAG,OAC9DgnS,EAAmBpB,EAAgB,iBAAkByE,EAAQzE,EAAgB,MAAOsF,EAAiBtF,EAAgB,eACrH3qR,EAAQiwR,EAAe,MACvBzC,EAAgB4B,EAAM,cAAe1C,EAAkB0C,EAAM,gBAAiB6C,EAAgB7C,EAAM,cAAe0J,EAAQ1J,EAAM,MAAOkB,EAAiBlB,EAAM,eAAgBqF,EAASrF,EAAM,OAC9L9jR,EAAO2mR,EAAc,KAAMvgR,EAAWugR,EAAc,SACpDnlP,EAAOgsP,EAAM,KAAMC,EAAaD,EAAM,WAC1C,GAAI,CAAC/M,EACD,MAAM,IAAI,MAAM,uBAAuB,EAE3CpmS,EAAM,eAAc,EACpBA,EAAM,gBAAe,EACrB,IAAIytC,EAAQ6jQ,GAAStxS,EAAO,IAAI,EAC5BqzS,EAAWvE,EAASsE,EAAa,KAAK,IAAIpzS,EAAM,MAAM,EAAImnD,EAC1Do6L,EAAWkwD,GAAyBzM,EAAiBv3P,EAAO4lQ,EAAU,CAACrzS,EAAM,OAAO,EAExF,GAAIqa,IAAUknO,EAEd,KAAIgmD,EAASI,GAAsB3C,EAAiBzjD,CAAQ,EACxDp+J,EAAgBquN,GAAiBxxS,EAAOomS,EAAkB/rR,CAAK,EAC/Di5R,EAAoBvnR,GAAYpG,IAAS,GAAKohR,GAAmB4D,EACjE4I,EAAoB1L,GAAiByL,EACrCn0S,EAAK+oS,GAA6BlD,EAAiB7hN,EAAc,EAAGA,EAAc,EAAGo+J,EAAUgmD,EAAQgM,CAAiB,EAAGjqR,EAAInqB,EAAG,EAAGoqB,EAAIpqB,EAAG,EAChJ6lS,EAAgB,mBAAqBhlS,EACrCglS,EAAgB,kBAAkBzjD,EAAUj4N,EAAGC,CAAC,EAChDu6Q,GAAe2M,GAAWzL,CAAe,EAAGhlS,EAAOi/H,CAAO,EAC1D6kK,GAAe2M,GAAWzL,CAAe,EAAGhlS,EAAOkzS,CAAM,EAC7D,EACIM,GAAkB,SAAUxO,EAAiBhlS,EAAO,CACpD,IAAIZ,EAAK4lS,EAAgB,MAAOyO,EAAcr0S,EAAG,YAAas0S,EAAat0S,EAAG,WAE9EyxS,GAAc7L,EAAgB,mBAAmB,EACjDA,EAAgB,oBAAsB,WAAW,UAAY,CACpDA,EAAgB,UAErBkJ,GAAyBlJ,EAAiBhlS,EAAM,EAAGA,EAAM,CAAC,EAC1DglS,EAAgB,oBAAsB,KAC1C,EAAG6N,EAAkB,EAErB,IAAIc,EAAoB9B,GAAoB7M,EAAiBhlS,CAAK,EAC9D2zS,IACA9C,GAAc7L,EAAgB,mBAAmB,EACjDA,EAAgB,oBAAsB,WAAW,UAAY,CACpDA,EAAgB,UAErBA,EAAgB,oBAAsB,KACtClB,GAAe2M,GAAWzL,CAAe,EAAGhlS,EAAOyzS,CAAW,EAC9D3P,GAAe2M,GAAWzL,CAAe,EAAGhlS,EAAO0zS,CAAU,EACjE,EAAGd,EAAkB,EAE7B,EAEIgB,GAAiB,SAAU5zS,EAAO,CAIlC,QAHI6zS,EAAS,EACTC,EAAS,EAEJp1S,EAAI,EAAGA,EAAI,EAAGA,GAAK,EACxBm1S,GAAU7zS,EAAM,QAAQtB,CAAC,EAAE,QAC3Bo1S,GAAU9zS,EAAM,QAAQtB,CAAC,EAAE,QAG/B,IAAI4qB,EAAIuqR,EAAS,EACbtqR,EAAIuqR,EAAS,EACjB,MAAO,CAAE,EAAGxqR,EAAG,EAAGC,CAAC,CACvB,EACIwqR,GAAmB,SAAU/O,EAAiBhlS,EAAO,CACrD,IAAIg0S,EAAWzB,GAAiBvyS,CAAK,EACrCglS,EAAgB,mBAAqBgP,EACrChP,EAAgB,aAAegP,EAC/BhP,EAAgB,gBAAkBA,EAAgB,eAAe,MACjEA,EAAgB,UAAY,GAC5B,IAAIljE,EAAS8xE,GAAe5zS,CAAK,EACjCglS,EAAgB,iBAAmBljE,EAAO,EAC1CkjE,EAAgB,iBAAmBljE,EAAO,EAC1CijE,GAAsBC,CAAe,CACzC,EACIiP,GAAkB,SAAUjP,EAAiBhlS,EAAO,CACpD,IAAIomS,EAAmBpB,EAAgB,iBAAkBiN,EAAqBjN,EAAgB,mBAAoBmB,EAAmBnB,EAAgB,iBACjJ3qR,EAAQ2qR,EAAgB,eAAe,MACvC5lS,EAAK4lS,EAAgB,MAAO6C,EAAgBzoS,EAAG,cAAe2nS,EAAkB3nS,EAAG,gBAAiBktS,EAAgBltS,EAAG,cAAeitS,EAAqBjtS,EAAG,mBAC9J2sB,EAAWugR,EAAc,SAAU3mR,EAAO2mR,EAAc,KAE5D,GAAI,EAAA2F,IAAuB,MAAQ,CAAC7L,GAEpC,KAAI8N,EAAWhC,GAAuBlyS,EAAOqa,EAAO+rR,CAAgB,EAEpE,GAAI,GAAC,OAAO,SAAS8N,EAAS,CAAC,GAAK,CAAC,OAAO,SAASA,EAAS,CAAC,GAE/D,KAAIzB,EAAkBF,GAAiBvyS,CAAK,EACxCuhP,EAAWixD,GAAmBxN,EAAiByN,CAAe,EAC9D3wE,EAAS8xE,GAAe5zS,CAAK,EAE7Bm0S,EAAOryE,EAAO,GAAKkjE,EAAgB,kBAAoB,GACvDoP,EAAOtyE,EAAO,GAAKkjE,EAAgB,kBAAoB,GAC3D,GAAI,EAAAzjD,IAAalnO,GAAS85R,IAAS,GAAKC,IAAS,GAEjD,CAAApP,EAAgB,iBAAmBljE,EAAO,EAC1CkjE,EAAgB,iBAAmBljE,EAAO,EAC1C,IAAIylE,EAASI,GAAsB3C,EAAiBzjD,CAAQ,EACxD+xD,EAAoBvnR,GAAYpG,IAAS,GAAKohR,EAC9CwM,EAAoB1L,GAAiByL,EACrCn0S,EAAK+oS,GAA6BlD,EAAiBkP,EAAS,EAAGA,EAAS,EAAG3yD,EAAUgmD,EAAQgM,CAAiB,EAAGjqR,EAAInqB,EAAG,EAAGoqB,EAAIpqB,EAAG,EACtI6lS,EAAgB,cAAgBkP,EAChClP,EAAgB,aAAeyN,EAC/B,IAAIlG,EAAQF,EAAmB,MAAOG,EAAQH,EAAmB,MAC7DvE,EAAgB4C,GAAgB1F,EAAiBuH,CAAK,EACtDxE,EAAgB2C,GAAgB1F,EAAiBwH,CAAK,EACtDxG,EAAe18Q,EAAI6qR,EACnBlO,EAAe18Q,EAAI6qR,EACnB5nS,EAAKo7R,GAAwB5B,EAAcC,EAAcsB,EAAQM,EAAeC,EAAeC,EAAe5B,CAAgB,EAAGkO,EAAS7nS,EAAG,EAAG8nS,EAAS9nS,EAAG,EAChKw4R,EAAgB,kBAAkBzjD,EAAU8yD,EAAQC,CAAM,IAC9D,EACIC,GAAkB,SAAUvP,EAAiB,CAC7C,IAAIwP,EAAgBxP,EAAgB,cACpCA,EAAgB,SAAW,KAC3BA,EAAgB,aAAe,KAC/BA,EAAgB,cAAgB,KAChCA,EAAgB,gBAAkB,KAClCA,EAAgB,mBAAqB,KACrCkJ,GAAyBlJ,EAAiBwP,GAAkB,KAAmC,OAASA,EAAc,EAAGA,GAAkB,KAAmC,OAASA,EAAc,CAAC,CAC1M,EAEIC,GAAwB,SAAUzP,EAAiBhlS,EAAO,CAC1D,IAAI0zS,EAAa1O,EAAgB,MAAM,WACnCE,EAAgBF,EAAgB,MAAM,YAAY,cACtD6L,GAAc7L,EAAgB,yBAAyB,EACvDA,EAAgB,0BAA4B,WAAW,UAAY,CAC/DA,EAAgB,0BAA4B,KAC5ClB,GAAe2M,GAAWzL,CAAe,EAAGhlS,EAAO0zS,CAAU,CACjE,EAAGxO,CAAa,CACpB,EACIwP,GAA6B,SAAU1P,EAAiBhlS,EAAO,CAC/D,IAAIZ,EAAK4lS,EAAgB,MAAOgO,EAAc5zS,EAAG,YAAa8zS,EAAS9zS,EAAG,OACtED,EAAK6lS,EAAgB,MAAM,YAAaE,EAAgB/lS,EAAG,cAAemmS,EAAgBnmS,EAAG,cACjG2kS,GAAe2M,GAAWzL,CAAe,EAAGhlS,EAAOgzS,CAAW,EAC9D/D,GAAqBjK,EAAiBE,EAAeI,EAAe,UAAY,CAC5E,OAAOxB,GAAe2M,GAAWzL,CAAe,EAAGhlS,EAAOkzS,CAAM,CACpE,CAAC,EACDuB,GAAsBzP,EAAiBhlS,CAAK,CAChD,EACA,SAAS20S,GAAoB9lM,EAAMx0F,EAAO,CACtC,OAAIw0F,IAAS,SACFx0F,IAAU,EAAI,EAAI,GAEtBw0F,IAAS,UAAY,GAAK,CACrC,CACA,SAAS+lM,GAAkB5P,EAAiBhlS,EAAO,CAC/C,IAAIypS,EAAQzE,EAAgB,MAAO6P,EAA4B7P,EAAgB,0BAA2BsF,EAAiBtF,EAAgB,eAAgBoB,EAAmBpB,EAAgB,iBAC1L3qR,EAAQiwR,EAAe,MACvBlrS,EAAK4lS,EAAgB,MAAOgO,EAAc5zS,EAAG,YAAa8zS,EAAS9zS,EAAG,OACtED,EAAKsqS,EAAM,YAAa19Q,EAAW5sB,EAAG,SAAU0vG,EAAO1vG,EAAG,KAAMgoD,EAAOhoD,EAAG,KAAM+lS,EAAgB/lS,EAAG,cAAemmS,EAAgBnmS,EAAG,cACzI,GAAI,CAAA4sB,GAEA,CAAA8oR,EAEJ,IAAIhmM,IAAS,QACT,OAAO6lM,GAA2B1P,EAAiBhlS,CAAK,EAE5D,GAAI,CAAComS,EACD,OAAO,QAAQ,MAAM,2BAA2B,EACpD,IAAI34P,EAAQknQ,GAAoB9lM,EAAMm2L,EAAgB,eAAe,KAAK,EACtEzjD,EAAWstD,GAA0B7J,EAAiBv3P,EAAO0Z,CAAI,EAErE,GAAI9sC,IAAUknO,EAEd,CAAAuiD,GAAe2M,GAAWzL,CAAe,EAAGhlS,EAAOgzS,CAAW,EAC9D,IAAI7vN,EAAgBquN,GAAiBxxS,EAAOomS,EAAkB/rR,CAAK,EAC/DmrR,EAAcyI,GAAkBjJ,EAAiBzjD,EAAUp+J,EAAc,EAAGA,EAAc,CAAC,EAC/F,GAAI,CAACqiN,EACD,OAAO,QAAQ,MAAM,uEAAuE,EAEhG1B,GAAe2M,GAAWzL,CAAe,EAAGhlS,EAAOkzS,CAAM,EACzDvN,GAAQX,EAAiBQ,EAAaN,EAAeI,CAAa,EAClEmP,GAAsBzP,EAAiBhlS,CAAK,GAChD,CACA,IAAI80S,GAAuB,SAAU9P,EAAiBhlS,EAAO,CACzD,IAAIipS,EAAgBjE,EAAgB,cAAeyE,EAAQzE,EAAgB,MAAOmB,EAAmBnB,EAAgB,iBACjH5lS,EAAKqqS,EAAM,YAAa19Q,EAAW3sB,EAAG,SAAUoqN,EAAWpqN,EAAG,SAC9DpC,EAASgD,EAAM,OACfmpS,EAAiBhD,GAAqB,KAAsC,OAASA,EAAiB,SAASnpS,CAAM,EACrHosS,EAAYH,GAAiBjsS,GAAUmsS,GAAkB,CAACp9Q,EAC9D,GAAI,CAACq9Q,EACD,MAAO,GACX,IAAIC,EAAaC,GAAetsS,EAAQwsN,CAAQ,EAChD,MAAI,CAAA6/E,CAGR,EAEI0L,GAA8B,UAAY,CAC1C,SAASA,EAAaxjS,EAAO,CACzB,IAAI2Y,EAAQ,KACZ,KAAK,QAAU,GACf,KAAK,iBAAmB,KACxB,KAAK,iBAAmB,KACxB,KAAK,kBAAoB,IAAI,IAC7B,KAAK,gBAAkB,IAAI,IAE3B,KAAK,iBAAmB,KACxB,KAAK,iBAAmB,KAExB,KAAK,cAAgB,GACrB,KAAK,OAAS,KAEd,KAAK,mBAAqB,KAC1B,KAAK,oBAAsB,KAC3B,KAAK,oBAAsB,KAE3B,KAAK,UAAY,GACjB,KAAK,eAAiB,GACtB,KAAK,YAAc,KACnB,KAAK,UAAY,KAEjB,KAAK,SAAW,KAChB,KAAK,aAAe,KACpB,KAAK,mBAAqB,KAC1B,KAAK,gBAAkB,KACvB,KAAK,cAAgB,KAErB,KAAK,0BAA4B,KAEjC,KAAK,SAAW,KAChB,KAAK,aAAe,KACpB,KAAK,kBAAoB,KAEzB,KAAK,QAAU,GACf,KAAK,UAAY,KACjB,KAAK,UAAY,KAEjB,KAAK,YAAc,CAAA,EACnB,KAAK,MAAQ,UAAY,CACrBA,EAAM,uBAAsB,CAChC,EACA,KAAK,QAAU,UAAY,CACvBA,EAAM,oBAAmB,CAC7B,EACA,KAAK,OAAS,SAAU8qR,EAAU,CAC9B9qR,EAAM,MAAQ8qR,EACdrN,GAAsBz9Q,EAAOA,EAAM,eAAe,KAAK,EACvDA,EAAM,MAAQskR,GAAYwG,CAAQ,CACtC,EACA,KAAK,uBAAyB,UAAY,CACtC,IAAI51S,EAAID,EACJ81S,EAAUtE,GAAsB,EAChCuE,GAAmB91S,EAAK8qB,EAAM,oBAAsB,MAAQ9qB,IAAO,OAAS,OAASA,EAAG,cACxF+1S,EAAgBD,GAAoB,KAAqC,OAASA,EAAgB,aACrG/1S,EAAK+qB,EAAM,oBAAsB,MAAQ/qB,IAAO,QAAkBA,EAAG,iBAAiB,QAAS+qB,EAAM,eAAgB+qR,CAAO,EAE7HE,GAAkB,MAA4CA,EAAc,iBAAiB,YAAajrR,EAAM,eAAgB+qR,CAAO,EACvIE,GAAkB,MAA4CA,EAAc,iBAAiB,YAAajrR,EAAM,UAAW+qR,CAAO,EAClIE,GAAkB,MAA4CA,EAAc,iBAAiB,UAAWjrR,EAAM,cAAe+qR,CAAO,EACpIC,GAAoB,MAA8CA,EAAgB,iBAAiB,aAAchrR,EAAM,aAAc+qR,CAAO,EAC5IE,GAAkB,MAA4CA,EAAc,iBAAiB,QAASjrR,EAAM,gBAAiB+qR,CAAO,EACpIE,GAAkB,MAA4CA,EAAc,iBAAiB,UAAWjrR,EAAM,cAAe+qR,CAAO,CACxI,EACA,KAAK,oBAAsB,UAAY,CACnC,IAAI71S,EAAID,EACJ81S,EAAUtE,GAAsB,EAChCuE,GAAmB91S,EAAK8qB,EAAM,oBAAsB,MAAQ9qB,IAAO,OAAS,OAASA,EAAG,cACxF+1S,EAAgBD,GAAoB,KAAqC,OAASA,EAAgB,YACtGC,GAAkB,MAA4CA,EAAc,oBAAoB,YAAajrR,EAAM,eAAgB+qR,CAAO,EAC1IE,GAAkB,MAA4CA,EAAc,oBAAoB,YAAajrR,EAAM,UAAW+qR,CAAO,EACrIE,GAAkB,MAA4CA,EAAc,oBAAoB,UAAWjrR,EAAM,cAAe+qR,CAAO,EACvIC,GAAoB,MAA8CA,EAAgB,oBAAoB,aAAchrR,EAAM,aAAc+qR,CAAO,EAC/IE,GAAkB,MAA4CA,EAAc,oBAAoB,QAASjrR,EAAM,gBAAiB+qR,CAAO,EACvIE,GAAkB,MAA4CA,EAAc,oBAAoB,UAAWjrR,EAAM,cAAe+qR,CAAO,EACvI,SAAS,oBAAoB,aAAc/qR,EAAM,aAAc+qR,CAAO,EACtElQ,GAAsB76Q,CAAK,GAC1B/qB,EAAK+qB,EAAM,YAAc,MAAQ/qB,IAAO,QAAkBA,EAAG,WAAU,CAC5E,EACA,KAAK,8BAAgC,SAAUm3K,EAAS,CAEpD,IAAI2+H,EAAUtE,GAAsB,EACpCr6H,EAAQ,iBAAiB,QAASpsJ,EAAM,YAAa+qR,CAAO,EAC5D3+H,EAAQ,iBAAiB,WAAYpsJ,EAAM,cAAe+qR,CAAO,EACjE3+H,EAAQ,iBAAiB,aAAcpsJ,EAAM,oBAAqB+qR,CAAO,EACzE3+H,EAAQ,iBAAiB,YAAapsJ,EAAM,eAAgB+qR,CAAO,EACnE3+H,EAAQ,iBAAiB,WAAYpsJ,EAAM,mBAAoB+qR,CAAO,CAC1E,EACA,KAAK,iBAAmB,SAAU3+H,EAAS8vH,EAAkB,CACzD,IAAIgP,EAAa,GACbC,EAAenrR,EAAM,MAAM,aAC3BorR,EAAY,SAAUnvR,EAASnpB,EAAQ,CAEvC,QAASqpB,EAAK,EAAGkvR,EAAYpvR,EAASE,EAAKkvR,EAAU,OAAQlvR,IAAM,CAC/D,IAAIJ,EAAQsvR,EAAUlvR,CAAE,EACxB,GAAIJ,EAAM,SAAWjpB,EACjB,MAAO,EAEf,CACA,MAAO,EACX,EACAktB,EAAM,oBAAmB,EACzBA,EAAM,gBAAgB,QAAQ,SAAU5e,EAAU,CAC9CA,EAASmlS,GAAWvmR,CAAK,CAAC,CAC9B,CAAC,EACDA,EAAM,SAAW,IAAI,eAAe,SAAU/D,EAAS,CACnD,GAAImvR,EAAUnvR,EAASmwJ,CAAO,GAAKg/H,EAAUnvR,EAASigR,CAAgB,EAClE,GAAIiP,GAAgB,CAACD,EAAY,CAC7B,IAAII,EAAepP,EAAiB,YAChCqP,EAAgBrP,EAAiB,cACjCoP,EAAe,GAAKC,EAAgB,KACpCL,EAAa,GACblrR,EAAM,UAAS,EAEvB,MAEI66Q,GAAsB76Q,CAAK,EAC3By9Q,GAAsBz9Q,EAAOA,EAAM,eAAe,KAAK,EACvDsjR,GAAoBtjR,EAAO,CAAC,CAGxC,CAAC,EAEDA,EAAM,SAAS,QAAQosJ,CAAO,EAC9BpsJ,EAAM,SAAS,QAAQk8Q,CAAgB,CAC3C,EAIA,KAAK,YAAc,SAAUpmS,EAAO,CAChC,IAAI+rB,EAAW7B,EAAM,MAAM,SAC3B,GAAI,CAAA6B,EAEJ,KAAIq9Q,EAAY8H,GAAehnR,EAAOlqB,CAAK,EAC3C,GAAKopS,EAEL,KAAIsM,EAAcxrR,EAAM,eAAeA,EAAM,MAAM,MAAM,cAAc,EAClEwrR,IAEL5C,GAAiB5oR,EAAOlqB,CAAK,EAC7BizS,GAAgB/oR,EAAOlqB,CAAK,EAC5BwzS,GAAgBtpR,EAAOlqB,CAAK,IAChC,EAIA,KAAK,eAAiB,SAAUA,EAAO,CACnC,IAAIZ,EAAK8qB,EAAM,MAAO6B,EAAW3sB,EAAG,SAAU+zS,EAAQ/zS,EAAG,MAAOmrS,EAAUnrS,EAAG,QAC7E,GAAI,GAAC8qB,EAAM,kBACP,CAACA,EAAM,kBACP6B,GACA,CAAConR,EAAM,eACP5I,EAAQ,UACR,CAACA,EAAQ,cACTvqS,EAAM,SAGV,CAAAA,EAAM,eAAc,EACpBA,EAAM,gBAAe,EACrB,IAAIb,EAAK+qB,EAAM,eAAgBu7Q,EAAYtmS,EAAG,UAAWumS,EAAYvmS,EAAG,UACpEgpS,EAAS1C,EAAYzlS,EAAM,OAC3BojI,EAASsiK,EAAY1lS,EAAM,OAC3BgmS,EAAeuE,EAAQ,UAAY9E,EAAY0C,EAC/ClC,EAAesE,EAAQ,UAAY7E,EAAYtiK,EAC/C52H,EAAK0d,EAAM,MAAM,mBAAoBqiR,EAAQ//R,EAAG,MAAOggS,EAAQhgS,EAAG,MAClEs7R,EAAgB4C,GAAgBxgR,EAAOqiR,CAAK,EAC5CxE,EAAgB2C,GAAgBxgR,EAAOsiR,CAAK,EAC5CxG,IAAiBP,GAAaQ,IAAiBP,GAEnDyE,GAAkBjgR,EAAO87Q,EAAcC,EAAc6B,EAAeC,CAAa,EACrF,EACA,KAAK,eAAiB,SAAU/nS,EAAO,CACnC,IAAI+rB,EAAW7B,EAAM,MAAM,SACvByrR,EAAiBzrR,EAAM,MAAM,eACjC,GAAI,CAAA6B,EAEJ,KAAIq9Q,EAAYJ,GAAsB9+Q,EAAOlqB,CAAK,EAClD,GAAKopS,EAEL,KAAIsM,EAAcxrR,EAAM,eAAeA,EAAM,MAAM,QAAQ,cAAc,EACpEwrR,IAED11S,EAAM,SAAW,GAAK,CAACkqB,EAAM,MAAM,QAAQ,mBAE3ClqB,EAAM,SAAW,GAAK,CAACkqB,EAAM,MAAM,QAAQ,qBAE3ClqB,EAAM,SAAW,GAAK,CAACkqB,EAAM,MAAM,QAAQ,qBAE/ClqB,EAAM,eAAc,EACpBA,EAAM,gBAAe,EACrB+kS,GAAsB76Q,CAAK,EAC3BqjR,GAAmBrjR,EAAOlqB,CAAK,EAC/B8jS,GAAe2M,GAAWvmR,CAAK,EAAGlqB,EAAO21S,CAAc,KAC3D,EACA,KAAK,UAAY,SAAU31S,EAAO,CAC9B,IAAI+rB,EAAW7B,EAAM,MAAM,SACvB0rR,EAAY1rR,EAAM,MAAM,UAC5B,GAAI,CAAA6B,EAEJ,KAAIq9Q,EAAYG,GAAiBr/Q,CAAK,EACtC,GAAKk/Q,EAEL,KAAIsM,EAAcxrR,EAAM,eAAeA,EAAM,MAAM,QAAQ,cAAc,EACpEwrR,IAEL11S,EAAM,eAAc,EACpBA,EAAM,gBAAe,EACrB2tS,GAAczjR,EAAOlqB,EAAM,QAASA,EAAM,OAAO,EACjD8jS,GAAe2M,GAAWvmR,CAAK,EAAGlqB,EAAO41S,CAAS,IACtD,EACA,KAAK,cAAgB,SAAU51S,EAAO,CAClC,IAAI61S,EAAgB3rR,EAAM,MAAM,cAC5BA,EAAM,YACN0jR,GAAiB1jR,CAAK,EACtB45Q,GAAe2M,GAAWvmR,CAAK,EAAGlqB,EAAO61S,CAAa,EAE9D,EAIA,KAAK,aAAe,SAAU71S,EAAO,CACjC,IAAI+rB,EAAW7B,EAAM,MAAM,SACvB9qB,EAAK8qB,EAAM,MAAO4rR,EAAkB12S,EAAG,gBAAiB4zS,EAAc5zS,EAAG,YAC7E,GAAI,CAAA2sB,EAEJ,KAAIq9Q,EAAY2I,GAAoB7nR,EAAOlqB,CAAK,EAC3CopS,IAEL2K,GAAiB7pR,EAAOlqB,CAAK,EAC7B+kS,GAAsB76Q,CAAK,EAC3B45Q,GAAe2M,GAAWvmR,CAAK,EAAGlqB,EAAO81S,CAAe,EACxDhS,GAAe2M,GAAWvmR,CAAK,EAAGlqB,EAAOgzS,CAAW,GACxD,EACA,KAAK,QAAU,SAAUhzS,EAAO,CAC5B,IAAI+rB,EAAW7B,EAAM,MAAM,SACvB9qB,EAAK8qB,EAAM,MAAO6rR,EAAa32S,EAAG,WAAY8zS,EAAS9zS,EAAG,OAC9D,GAAI,CAAA2sB,EAEJ,KAAIq9Q,EAAY4I,GAAe9nR,CAAK,EAC/Bk/Q,IAELppS,EAAM,eAAc,EACpBA,EAAM,gBAAe,EACrBi0S,GAAgB/pR,EAAOlqB,CAAK,EAC5B8jS,GAAe2M,GAAWvmR,CAAK,EAAGlqB,EAAO+1S,CAAU,EACnDjS,GAAe2M,GAAWvmR,CAAK,EAAGlqB,EAAOkzS,CAAM,GACnD,EACA,KAAK,YAAc,SAAUlzS,EAAO,CAChC,IAAIZ,EAAK8qB,EAAM,MAAO8rR,EAAiB52S,EAAG,eAAgBs0S,EAAat0S,EAAG,WACtE8qB,EAAM,kBACNqqR,GAAgBrqR,CAAK,EACrB45Q,GAAe2M,GAAWvmR,CAAK,EAAGlqB,EAAOg2S,CAAc,EACvDlS,GAAe2M,GAAWvmR,CAAK,EAAGlqB,EAAO0zS,CAAU,EAE3D,EAIA,KAAK,oBAAsB,SAAU1zS,EAAO,CACxC,IAAI+rB,EAAW7B,EAAM,MAAM,SACvByrR,EAAiBzrR,EAAM,MAAM,eACjC,GAAI,CAAA6B,EAEJ,KAAIq9Q,EAAYJ,GAAsB9+Q,EAAOlqB,CAAK,EAClD,GAAKopS,EAEL,KAAI6M,EAAc/rR,EAAM,WACpB,CAAC,IAAI,KAASA,EAAM,UAAY,KAChClqB,EAAM,QAAQ,SAAW,EAC7B,GAAI,CAACi2S,EAAa,CACd/rR,EAAM,UAAY,CAAC,IAAI,KACvB66Q,GAAsB76Q,CAAK,EAC3B,IAAI0/Q,EAAU5pS,EAAM,QAChBk2S,EAAkBtM,EAAQ,SAAW,EACrCuM,EAAgBvM,EAAQ,SAAW,EACnCsM,IACAnR,GAAsB76Q,CAAK,EAC3BqjR,GAAmBrjR,EAAOlqB,CAAK,EAC/B8jS,GAAe2M,GAAWvmR,CAAK,EAAGlqB,EAAO21S,CAAc,GAEvDQ,GACAjsR,EAAM,aAAalqB,CAAK,CAEhC,GACJ,EACA,KAAK,eAAiB,SAAUA,EAAO,CACnC,IAAI+rB,EAAW7B,EAAM,MAAM,SACvB0rR,EAAY1rR,EAAM,MAAM,UAC5B,GAAIA,EAAM,WAAalqB,EAAM,QAAQ,SAAW,EAAG,CAC/C,GAAI+rB,EACA,OACJ,IAAIq9Q,EAAYG,GAAiBr/Q,CAAK,EACtC,GAAI,CAACk/Q,EACD,OACJppS,EAAM,eAAc,EACpBA,EAAM,gBAAe,EACrB,IAAI0/M,EAAQ1/M,EAAM,QAAQ,CAAC,EAC3B2tS,GAAczjR,EAAOw1L,EAAM,QAASA,EAAM,OAAO,EACjDokF,GAAe2M,GAAWvmR,CAAK,EAAGlqB,EAAO41S,CAAS,CACtD,MACS51S,EAAM,QAAQ,OAAS,GAC5BkqB,EAAM,QAAQlqB,CAAK,CAE3B,EACA,KAAK,mBAAqB,SAAUA,EAAO,CACvCkqB,EAAM,cAAclqB,CAAK,EACzBkqB,EAAM,YAAYlqB,CAAK,CAC3B,EAIA,KAAK,cAAgB,SAAUA,EAAO,CAClC,IAAI+rB,EAAW7B,EAAM,MAAM,SAC3B,GAAI,CAAA6B,EAEJ,KAAIq9Q,EAAY0L,GAAqB5qR,EAAOlqB,CAAK,EAC5CopS,GAELwL,GAAkB1qR,EAAOlqB,CAAK,EAClC,EAIA,KAAK,aAAe,SAAUA,EAAO,CAC7BkqB,EAAM,WACNA,EAAM,cAAclqB,CAAK,CAEjC,EACA,KAAK,cAAgB,SAAU3D,EAAG,CAC9B6tB,EAAM,YAAY7tB,EAAE,GAAG,EAAI,EAC/B,EACA,KAAK,gBAAkB,SAAUA,EAAG,CAChC6tB,EAAM,YAAY7tB,EAAE,GAAG,EAAI,EAC/B,EACA,KAAK,eAAiB,SAAUyF,EAAM,CAClC,OAAKA,EAAK,OAGH,EAAQA,EAAK,KAAK,SAAUnG,EAAK,CAAE,OAAOuuB,EAAM,YAAYvuB,CAAG,CAAG,CAAC,EAF/D,EAGf,EACA,KAAK,kBAAoB,SAAU0e,EAAOorR,EAAWC,EAAW,CAC5D,IAAI0Q,EAAgBlsR,EAAM,MAAM,cAChC,GAAI,CAAC,OAAO,MAAM7P,CAAK,GACnB,CAAC,OAAO,MAAMorR,CAAS,GACvB,CAAC,OAAO,MAAMC,CAAS,EAAG,CACtBrrR,IAAU6P,EAAM,eAAe,QAC/BA,EAAM,eAAe,cAAgBA,EAAM,eAAe,MAC1DA,EAAM,eAAe,MAAQ7P,GAEjC6P,EAAM,eAAe,UAAYu7Q,EACjCv7Q,EAAM,eAAe,UAAYw7Q,EACjCx7Q,EAAM,oBAAmB,EACzB,IAAImsR,EAAQ5F,GAAWvmR,CAAK,EAC5BA,EAAM,kBAAkB,QAAQ,SAAU5e,EAAU,CAAE,OAAOA,EAAS+qS,CAAK,CAAG,CAAC,EAC/EvS,GAAeuS,EAAO,CAAE,MAAOh8R,EAAO,UAAWorR,EAAW,UAAWC,CAAS,EAAI0Q,CAAa,CACrG,MAEI,QAAQ,MAAM,+BAA+B,CAErD,EACA,KAAK,UAAY,UAAY,CACzB,GAAIlsR,EAAM,kBAAoBA,EAAM,iBAAkB,CAClD,IAAIs7Q,EAAc8K,GAAkBpmR,EAAM,eAAe,MAAOA,EAAM,iBAAkBA,EAAM,gBAAgB,EAC9GA,EAAM,kBAAkBs7Q,EAAY,MAAOA,EAAY,UAAWA,EAAY,SAAS,CAC3F,CACJ,EACA,KAAK,sBAAwB,SAAUl8Q,EAAGC,EAAGlP,EAAO,CAChD,OAAI6P,EAAM,MAAM,gBACLA,EAAM,MAAM,gBAAgBZ,EAAGC,EAAGlP,CAAK,EAE3Cy2R,GAAmBxnR,EAAGC,EAAGlP,CAAK,CACzC,EACA,KAAK,oBAAsB,UAAY,CACnC,GAAI,GAAC6P,EAAM,SAAW,CAACA,EAAM,kBAE7B,KAAI9qB,EAAK8qB,EAAM,eAAgB7P,EAAQjb,EAAG,MAAOqmS,EAAYrmS,EAAG,UAAWsmS,EAAYtmS,EAAG,UACtFyoK,EAAY39I,EAAM,sBAAsBu7Q,EAAWC,EAAWrrR,CAAK,EACvE6P,EAAM,iBAAiB,MAAM,UAAY29I,EAC7C,EACA,KAAK,WAAa,UAAY,CAC1B,OAAO4oI,GAAWvmR,CAAK,CAC3B,EAIA,KAAK,SAAW,SAAU5e,EAAU,CAChC,OAAK4e,EAAM,kBAAkB,IAAI5e,CAAQ,GACrC4e,EAAM,kBAAkB,IAAI5e,CAAQ,EAEjC,UAAY,CACf4e,EAAM,kBAAkB,OAAO5e,CAAQ,CAC3C,CACJ,EACA,KAAK,OAAS,SAAUA,EAAU,CAC9B,OAAK4e,EAAM,gBAAgB,IAAI5e,CAAQ,GACnC4e,EAAM,gBAAgB,IAAI5e,CAAQ,EAE/B,UAAY,CACf4e,EAAM,gBAAgB,OAAO5e,CAAQ,CACzC,CACJ,EAIA,KAAK,KAAO,SAAU66R,EAAkBC,EAAkB,CACtDl8Q,EAAM,oBAAmB,EACzBA,EAAM,iBAAmBi8Q,EACzBj8Q,EAAM,iBAAmBk8Q,EACzBuB,GAAsBz9Q,EAAOA,EAAM,eAAe,KAAK,EACvDA,EAAM,8BAA8Bi8Q,CAAgB,EACpDj8Q,EAAM,iBAAiBi8Q,EAAkBC,CAAgB,EACzDl8Q,EAAM,uBAAsB,EAC5BA,EAAM,cAAgB,GACtB,IAAI9D,EAAMqqR,GAAWvmR,CAAK,EAC1B45Q,GAAe19Q,EAAK,OAAW8D,EAAM,MAAM,MAAM,CACrD,EACA,KAAK,MAAQ3Y,EACb,KAAK,MAAQi9R,GAAY,KAAK,KAAK,EACnC,KAAK,eAAiBt3R,GAAY,KAAK,KAAK,CAChD,CACA,OAAO69R,CACX,IAEIv3R,GAAUtF,EAAM,cAAc,IAAI,EAClCqsO,GAAa,SAAUjmO,EAAU8H,EAAK,CACtC,OAAI,OAAO9H,GAAa,WACbA,EAAS8H,CAAG,EAEhB9H,CACX,EACIg4R,GAAmBp+R,EAAM,WAAW,SAAU3G,EAAOP,EAAK,CAC1D,IAAI7B,EAAW8B,EAAAA,OAAO,IAAI8jS,GAAaxjS,CAAK,CAAC,EAAE,QAC3CowB,EAAU4iN,GAAWhzO,EAAM,SAAUi/R,GAAYrhS,CAAQ,CAAC,EAC9D40I,OAAAA,sBAAoB/yI,EAAK,UAAY,CAAE,OAAOw/R,GAAYrhS,CAAQ,CAAG,EAAG,CAACA,CAAQ,CAAC,EAClF+B,EAAAA,UAAU,UAAY,CAClB/B,EAAS,OAAOoC,CAAK,CACzB,EAAG,CAACpC,EAAUoC,CAAK,CAAC,EACb2G,EAAM,cAAcsF,GAAQ,SAAU,CAAE,MAAOrO,CAAQ,EAAIwyB,CAAO,CAC7E,CAAC,EAEezpB,EAAM,WAAW,SAAU3G,EAAOP,EAAK,CACnD,IAAIulS,EAAWtlS,EAAAA,OAAO,IAAI,EACtB9B,EAAWwC,EAAAA,WAAW6L,EAAO,EACjCtM,OAAAA,EAAAA,UAAU,UAAY,CAClB,OAAO/B,EAAS,SAAS,SAAUiX,EAAK,CACpC,GAAImwR,EAAS,QAAS,CAClB,IAAI9Q,EAAY,EACZC,EAAY,EAChB6Q,EAAS,QAAQ,MAAM,UAAYpnS,EAAS,sBAAsBs2R,EAAWC,EAAW,EAAIt/Q,EAAI,SAAS,eAAe,KAAK,CACjI,CACJ,CAAC,CACL,EAAG,CAACjX,CAAQ,CAAC,EACN+I,EAAM,cAAc,MAAOu/N,GAAS,CAAA,EAAIlmO,EAAO,CAAE,IAAK0/R,GAAU,CAACsF,EAAUvlS,CAAG,CAAC,CAAC,CAAE,CAAC,CAC9F,CAAC,EAqLD,SAASwlS,GAAY7lR,EAAK3f,EAAK,CACxBA,IAAQ,SAASA,EAAM,CAAA,GAC5B,IAAIylS,EAAWzlS,EAAI,SAEnB,GAAY,SAAO,SAAa,KAEhC,KAAIqf,EAAO,SAAS,MAAQ,SAAS,qBAAqB,MAAM,EAAE,CAAC,EAC/DuD,EAAQ,SAAS,cAAc,OAAO,EAC1CA,EAAM,KAAO,WAET6iR,IAAa,OACXpmR,EAAK,WACPA,EAAK,aAAauD,EAAOvD,EAAK,UAAU,EAK1CA,EAAK,YAAYuD,CAAK,EAGpBA,EAAM,WACRA,EAAM,WAAW,QAAUjD,EAE3BiD,EAAM,YAAY,SAAS,eAAejD,CAAG,CAAC,EAElD,CAEA,IAAI+lR,GAAW;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,EACXxuR,GAAS,CAAC,QAAU,4CAA4C,QAAU,2CAA2C,EACzHsuR,GAAYE,EAAQ,EAEpB,IAAIC,GAAqB,SAAUv3S,EAAI,CACnC,IAAIkf,EAAWlf,EAAG,SAAUD,EAAKC,EAAG,aAAcw3S,EAAez3S,IAAO,OAAS,GAAKA,EAAIqN,EAAKpN,EAAG,aAAcy3S,EAAerqS,IAAO,OAAS,GAAKA,EAAImnL,EAAev0L,EAAG,aAAcujF,EAAevjF,EAAG,aAAcmN,EAAKnN,EAAG,aAAc03S,EAAevqS,IAAO,OAAS,GAAKA,EAAIE,EAAKrN,EAAG,aAAc23S,EAAetqS,IAAO,OAAS,CAAA,EAAKA,EAC5U6mE,EAAK3hE,aAAW6L,EAAO,EAAGo6E,EAAOtkB,EAAG,KAAM0jO,EAAsB1jO,EAAG,oBACnErnD,EAAahb,EAAAA,OAAO,IAAI,EACxB6zE,EAAa7zE,EAAAA,OAAO,IAAI,EAC5BC,OAAAA,EAAAA,UAAU,UAAY,CAClB,IAAIolK,EAAUrqJ,EAAW,QACrB0V,EAAUmjD,EAAW,QACzB,OAAIwxF,IAAY,MAAQ30I,IAAY,MAAQi2D,IACxCA,GAAS,MAAmCA,EAAK0+E,EAAS30I,CAAO,GAG9D,UAAY,CACfq1Q,GAAwB,MAAkDA,EAAmB,CACjG,CACJ,EAAG,CAAA,CAAE,EACG9+R,EAAM,cAAc,MAAOu/N,GAAS,CAAA,EAAIq/D,EAAc,CAAE,IAAK7qR,EAAY,UAAW,GAAG,OAAOsiR,GAAY,aAAc,GAAG,EAAE,OAAOrmR,GAAO,QAAS,GAAG,EAAE,OAAO0uR,CAAY,EAAG,MAAOjjH,CAAY,CAAE,EACxMz7K,EAAM,cAAc,MAAOu/N,GAAS,CAAA,EAAIs/D,EAAc,CAAE,IAAKjyN,EAAY,UAAW,GAAG,OAAOypN,GAAY,aAAc,GAAG,EAAE,OAAOrmR,GAAO,QAAS,GAAG,EAAE,OAAO2uR,CAAY,EAAG,MAAOl0N,EAAc,EAAGrkE,CAAQ,CAAC,CACxN,EAEI24R,GAAsB,UAAY,CAClC,IAAIC,EAAiBvlS,EAAAA,WAAW6L,EAAO,EACvC,GAAI,CAAC05R,EACD,MAAM,IAAI,MAAM,0DAA0D,EAE9E,OAAOA,CACX,EAEIC,GAAc,UAAY,CAC1B,IAAID,EAAiBD,GAAmB,EACxC,OAAOzG,GAAY0G,CAAc,CACrC,ECj/DA,SAASE,GAAc,CAAE,KAAAt7S,EAAM,MAAA8jG,GAAmD,CAChF,KAAM,CAAE,EAAArkG,CAAA,EAAM+V,GAAe,QAAQ,EAC/BgJ,EAAYtC,GAAS,IAAI,YAAA,EACzBq/R,EAAuBr/R,GAAS,IAAI,qBAAA,EACpC8qR,EAAe9qR,GAAS,IAAI,eAAA,EAE5B,CAACs/R,EAAaC,CAAc,EAAIjlS,EAAAA,SAAS,CAAC,EAC1C,CAACme,EAAW+mR,CAAY,EAAIllS,EAAAA,SAAgC,IAAI,EAChE,CAACg2H,EAAiBmvK,CAAkB,EAAInlS,EAAAA,SAAiB,CAAC,EAE1DolS,EAAWrmS,EAAAA,YAAY,IAAO,CAChC,KAAM,CAAE,OAAA6gE,EAAQ,QAAAC,EAAS,eAAAi+N,CAAA,EAAmB+G,GAAA,EAEtChhE,EAAmBn8N,GAAiB,CACxCu9R,EAAev9R,EAAO,CAAC,EACvBo2R,EAAA,CACF,EAEM90N,EAAQjqE,EAAAA,YAAY,IAAM,CAC9ByxR,EAAa,EAAK,CACpB,EAAG,CAACA,CAAY,CAAC,EAEjB5xR,OAAAA,EAAAA,UAAU,IAAM,CACdk/R,EAAA,CACF,EAAG,CAAC91R,EAAW+8R,EAAsBjH,CAAc,CAAC,EAE7C38E,EAAAA,KAAC,OAAI,MAAO,CAAE,QAAS,OAAQ,eAAgB,iBACpD,SAAA,CAAAA,EAAAA,KAAC38B,GAAA,CAAM,UAAU,aAAa,KAAM,GAAI,MAAO,CAAE,KAAM,IAAK,WAAY,MAAA,EACtE,SAAA,CAAA48B,EAAAA,IAACx7I,GAAA,CAAO,KAAMw7I,MAAC/7B,GAAA,CAAA,CAAe,EAAI,QAAS,IAAMzlH,IAAS,EAC1DwhJ,EAAAA,IAACx7I,IAAO,KAAMw7I,MAAC77B,KAAgB,EAAI,QAAS,IAAM1lH,EAAA,EAAU,EAC5DuhJ,MAACx7I,IAAO,QAAS,IAAMk4N,IAAmB,SAAA70S,EAAE,OAAO,CAAA,CAAE,CAAA,EACvD,EACGqkG,EAAM,OAAS,EAAK8zH,EAAAA,IAAChpL,GAAA,CACd,MAAO,CAAE,KAAM,IAAK,UAAW,QAAA,EAC/B,MAAM,SACN,QAAS4sQ,EAAc,EACvB,gBAAiB,EACjB,MAAO13M,EAAM,OACb,OAAQ,GACR,SAAUu2I,CAAA,CAAA,EAAsB,KACtC77N,EAAYo5M,EAAAA,IAACx7I,GAAA,CAAO,KAAMw7I,EAAAA,IAAC/6J,GAAA,CAAA,CAAc,EAAI,QAAS,IAAM2iB,EAAAA,CAAM,CAAE,EAAK,IAAA,EAE/E,CACJ,EAAG,CAACskB,EAAO03M,EAAah9R,EAAW+8R,EAAsB,MAAO97S,EAAGunS,CAAY,CAAC,EAGhF5xR,EAAAA,UAAU,IAAM,CACd,GAAIuf,EAAW,CACb,KAAM,CAAE,IAAA4zC,CAAA,EAAQ5zC,EAAU,sBAAA,EACpB1H,EAAS,OAAO,YAAcs7C,EAAM,GAC1CozO,EAAmB1uR,CAAM,CAC3B,CACF,EAAG,CAAC0H,CAAS,CAAC,EAEdvf,EAAAA,UAAU,IAAM,CACdqmS,EAAe,CAAC,CAClB,EAAG,CAAC33M,CAAK,CAAC,EAEV1uF,EAAAA,UAAU,IAAM,CAChB,EAAG,CAACmmS,CAAoB,CAAC,EAEzB,MAAMM,EAAe/zR,EAAAA,QAAQ,IAC3B,aAAatJ,EAAY,QAAU,KAAK,IAAI+8R,CAAoB,GAChE,CAAC/8R,EAAW+8R,CAAoB,CAAA,EAG5BO,EAAYh0R,EAAAA,QAAQ,IAAM9nB,EAAO8jG,EAAM03M,CAAW,EAAE,KACxD,CAACA,EAAa13M,CAAK,CAAA,EAEfi4M,EAAaj0R,EAAAA,QAAQ,IAAMg8E,EAAM03M,CAAW,EAAE,KAClD,CAACA,EAAa13M,CAAK,CAAA,EAEfu5C,EAAav1H,EAAAA,QAAQ,IAAM,CAC/B,MAAMk0R,EAAkBx9R,GAAa+8R,IAAyB,WACxDU,EAAoBz9R,GAAa+8R,IAAyB,aAEhE,OAAIS,EAEK,CAAE,MAAO,OAAQ,OAAQ,MAAA,EACvBC,EAEF,CAAE,SAAU,OAAQ,UAAW,GAAGzvK,CAAe,KAAM,MAAO,OAAQ,OAAQ,MAAA,EAG9E,CAAE,OAAQ,GAAGA,CAAe,KAAM,MAAO,MAAA,CAEpD,EAAG,CAAChuH,EAAW+8R,EAAsB/uK,CAAe,CAAC,EAE/C0vK,EAAep0R,EAAAA,QAAQ,IACHtJ,GAAa+8R,IAAyB,WACrC,GAAM,EAC9B,CAAC/8R,EAAW+8R,CAAoB,CAAC,EAE9BY,EAAqBr0R,EAAAA,QAAQ,IAI1B,EAHiBtJ,GAAa+8R,IAAyB,aAGnC,EAFD/8R,GAAa+8R,IAAyB,cAG/D,CAAC/8R,EAAW+8R,CAAoB,CAAC,EAE9B/vK,EAAiB1jH,EAAAA,QAAQ,IAAM,CACnC,MAAMm0R,EAAoBz9R,GAAa+8R,IAAyB,aAE1Da,EAAY,CAChB,MAAO,OACP,OAAQ,OACR,QAAS,MAAA,EAGX,OAAIH,EACK,CACL,GAAGG,EACH,QAAS,OACT,WAAY,aACZ,eAAgB,aAChB,cAAe,QAAA,EAGVA,CAEX,EAAG,CAAC59R,EAAW+8R,CAAoB,CAAC,EAAI,OACpC3jF,EAAAA,IAAC4iF,GAAA,CAEC,aAAA0B,EACA,SAAU,GACV,SAAU,EACV,aAAcC,EACd,cAAe,GACf,YAAa,CACX,SAAU,GACV,KAAM,SACN,KAAM,EAAA,EAER,MAAO,CACL,KAAM,EAAA,EAGN,SAAAxkF,EAAAA,KAAAxxM,WAAA,CACE,SAAA,CAAAyxM,EAAAA,IAACgkF,EAAA,EAAS,EACVhkF,EAAAA,IAACijF,GAAA,CACG,aAAc,CAAE,MAAO,OAAQ,OAAQ,MAAA,EACvC,eAAC,MAAA,CAAI,MAAOrvK,EAAgB,IAAMnmD,GAA8Bq2N,EAAar2N,CAAE,EAC7E,SAAAuyI,EAAAA,IAAC,OAAI,IAAKkkF,EAAW,IAAKC,EAAY,MAAO1+J,EAAW,CAAA,CAC1D,CAAA,CAAA,CACJ,CAAA,CACF,CAAA,EAvBGw+J,CAAA,CA0Bb,CC9IO,SAASQ,GAAgB,CAC9B,EAAA58S,EACA,OAAAkd,EACA,eAAAyC,EACA,gBAAAk9R,EACA,kBAAAC,CACF,EAAyB,CACvB,MAAM9+R,EAAavB,GAAS,IAAI,WAAA,EAC1BsgS,EAAgBtgS,GAAS,IAAI,cAAA,EAC7BqB,EAAQrB,GAAS,IAAI,MAAA,EACrBugS,EAAWvgS,GAAS,IAAI,SAAA,EACxBwgS,EAAiBxgS,GAAS,IAAI,eAAA,EAC9BygS,EAAoBzgS,GAAS,IAAI,kBAAA,EACjC0gS,EAAyB1gS,GAAS,IAAI,uBAAA,EACtC2gS,EAAuB3gS,GAAS,IAAI,qBAAA,EACpC4gS,EAAmB5gS,GAAS,IAAI,iBAAA,EAEhC6gS,EAAW,MAAOC,GAAoC,CAC1D,MAAMj+S,EAAM,MAAM,MAAMi+S,CAAM,EAE9B,GAAI,CAACj+S,EAAI,GACP,MAAM,IAAI,MAAM,6BAA6BA,EAAI,MAAM,IAAIA,EAAI,UAAU,EAAE,EAG7E,MAAMk+S,EAAa,MAAMl+S,EAAI,KAAA,EAIvBm+S,EADS,IAAI,UAAA,EACG,gBAAgBD,EAAY,UAAU,EAGtDE,EAAaD,EAAO,cAAc,aAAa,EACrD,GAAIC,EACF,MAAM,IAAI,MAAM,wBAAwBA,EAAW,WAAW,EAAE,EAIlE,GAAI,CAACD,EAAO,gBACV,MAAM,IAAI,MAAM,oCAAoC,EAItD,OAAOD,CACT,EAEMG,EAAuB5/R,GAAgB,CAC3C,MAAMuoO,EAAiB,IAAI5I,GAAe3/N,CAAG,EAC7C,OAAI4B,GACF2mO,EAAe,wBAAA,EAEjBA,EAAe,iBAAiB,CAAC,EAC1BA,EAAe,YAAA,CACxB,EAEMjxK,EAAU,IAAM,CACpB,MAAMylJ,EAAa,SAAS,cAAc,oBAAoB,EAC1DA,GACFA,EAAW,UAAU,IAAI,qBAAqB,CAElD,EAEM8iF,EAAc,CAACC,EAAoBC,IAAoB,CAC3D,GAAIhgS,EAAO,CACT,GAAIggS,GAAYhgS,EACd,OAEAu3D,EAAA,CAEJ,CAIA4nO,EAAe,IAAI,EACnBC,EAAkB,IAAI,EACtBC,EAAuB,CAAA,EAAI,EAAI,EAC/BC,EAAqB,IAAI,EACzBC,EAAiB,IAAI,EAErBL,EAASc,CAAQ,EAEbjB,GACFA,EAAgBgB,EAAYC,EAAS,UAAU,CAEnD,EAIMC,EAAajoS,cAAa+nS,GAAuB,CACrD,MAAMG,EAAY,YAAY,IAAA,GAC7B,SAAY,CACX,GAAIH,IAAe,KAAM,OAEzB,MAAMI,EAAW/gS,EAAO,OAAO2gS,CAAU,EACzC,GAAI,CAACI,EAAU,CACb,QAAQ,MAAM,uCAAuCJ,CAAU,EAAE,EACjE,MACF,CACA,MAAMt9S,EAAO2c,EAAO,SAAS,SAAW+gS,EAAS,KAAO,IAClDV,EAASh9S,EAAO09S,EAAS,QACzBC,EAAqBD,EAAS,mBACpC,GAAIjgS,EAAWu/R,CAAM,EAAG,CACtB,MAAMY,EAAcngS,EAAWu/R,CAAM,EACrCK,EAAYC,EAAYM,CAAW,CACrC,KACE,IAAI,CACF,MAAMC,EAAY,MAAMd,EAASC,CAAM,EAEjCj3D,EAAiB,IAAI5I,GAAe0gE,CAAS,EAC/ClhS,EAAO,SAAS,sBAClBopO,EAAe,gBAAA,EACfA,EAAe,4BAAA,GAEjBA,EAAe,0BAAA,EACfA,EAAe,0BAAA,EACf,MAAMhpB,EAAcgpB,EAAe,YAAA,EAC7BzD,EAAW,IAAI9E,GAAc/9O,EAAG,EAAGs9N,CAAW,EAC9C6tB,EAAa,CACjB,GAAGtI,EAAS,mBAAA,EACZ,qBAAsBq7D,EAAmB,sBAAyC,MAAA,EAE9E9gF,EAAW6gF,EAAS,eAAiBA,EAAS,eAAiB,GAAK19S,EAAO09S,EAAS,cAAgB,KACpG5gF,EAAqB,CAAA,EAC3B,GAAI4gF,EAAS,cACX,UAAW71J,KAAW61J,EAAS,cAC7B5gF,EAAmB,KAAK,CACtB,GAAI,iBAAiBj1E,EAAQ,KAAK,GAClC,MAAOA,EAAQ,SACf,IAAK7nJ,EAAO6nJ,EAAQ,KACpB,OAAQ,CAAA,CACT,EAKL,MAAMi2J,EAAiBx7D,EAAS,aAAA,EAC1Bi7D,EAAkB,CACtB,IAAKP,EACL,MAAOU,EAAS,MAChB,YAAA3gF,EACA,eAAgBqgF,EAAoBrgF,CAAW,EAC/C,WAAA6tB,EACA,eAAAkzD,EACA,SAAAjhF,EACA,mBAAAC,CAAA,EAGF0/E,EACE,CAAE,CAACQ,CAAM,EAAGO,CAAA,CAAS,EAEvBF,EAAYC,EAAYC,CAAQ,EAChC,QAAQ,IAAI,+BAA+BP,CAAM,SAAS,YAAY,IAAA,EAAQS,CAAS,IAAI,CAC7F,OAASxuS,EAAoB,CACvBstS,GACFA,EAAkBS,EAAQ/tS,CAAK,CAEnC,CAEJ,GAAA,CACF,EAAG,CAAC0N,EAAO,OAAQA,EAAO,SAAS,SAAUA,EAAO,SAAS,oBAAqBc,EAAYF,EAAOk/R,EAAUD,EAAeF,EAAiBl9R,CAAc,CAAC,EAExJ2+R,EAAc,IAAM,CACxBtB,EAAS,IAAI,CACf,EAEMuB,EAAWzoS,cAAa+nS,GAAuB,CACnD,MAAMI,EAAW/gS,EAAO,OAAO2gS,CAAU,EACzC,MAAQ,GAAAI,GAAYA,EAAS,iBAC/B,EAAG,CAAC/gS,EAAO,MAAM,CAAC,EAEZshS,EAAU1oS,cAAa+nS,GAAuB,CAClD,MAAMI,EAAW/gS,EAAO,OAAO2gS,CAAU,EACzC,MAAQ,GAAAI,GAAYA,EAAS,MAAQA,EAAS,KAAK,OAAS,EAC9D,EAAG,CAAC/gS,EAAO,MAAM,CAAC,EAGlB,MAAO,CAAE,WAAA6gS,EAAY,YAAAO,EAAa,SAAAC,EAAU,QAAAC,CAAA,CAC9C,CCzLA,MAAMC,GAAsB,WAEtBC,GAAU,MAAO1/E,GACd,MAAMA,CAAG,EAAE,KAAM1/N,GAAQ,CAC9B,MAAMq/S,EAAcr/S,EAAI,QAAQ,IAAI,cAAc,EAClD,GAAIA,EAAI,IAAMq/S,IAAgBA,EAAY,SAAS,eAAe,GAAKA,EAAY,SAAS,YAAY,GACtG,OAAOr/S,EAAI,KAAA,EACN,CACL,MAAMkQ,EAAQ,IAAI8N,GAAW,gBAAiB,qCAAqC0hN,CAAG,KAAK2/E,CAAW,GAAG,EACzG,OAAO,QAAQ,OAAOnvS,CAAK,CAC7B,CACF,EAAIA,IACF,QAAQ,MAAM,4BAA4BwvN,CAAG,IAAKxvN,CAAK,EAChD,QAAQ,OAAO,IAAI8N,GAAW,gBAAgB,iCAAiC0hN,CAAG,KAAKxvN,EAAM,OAAO,GAAG,CAAC,EAChH,EAGGovS,GAAoBC,GACpBA,EAAS,MAAQA,EAAS,KAAK,OAAS,EACnCA,EAAS,KACPA,EAAS,MAAQA,EAAS,KAAK,OAAS,EAC1CA,EAAS,KAAK,CAAC,EAAE,cAAgBA,EAAS,KAAK,UAAU,CAAC,EAE5D,GAQF,SAASC,GAAa,CAC3B,OAAA5hS,CACF,EAAsB,CACpB,MAAMe,EAAYxB,GAAS,IAAI,UAAA,EACzBsiS,EAAetiS,GAAS,IAAI,aAAA,EAC5ByB,EAAezB,GAAS,IAAI,aAAA,EAC5BuiS,EAAkBviS,GAAS,IAAI,gBAAA,EAC/B0B,EAAmB1B,GAAS,IAAI,iBAAA,EAChCwiS,EAAsBxiS,GAAS,IAAI,oBAAA,EACnC2B,EAAa3B,GAAS,IAAI,WAAA,EAC1ByiS,EAAgBziS,GAAS,IAAI,cAAA,EAI7Btb,EAAU2U,EAAAA,YAAY,CAACmoS,EAAkC19S,IACtD2c,EAAO,SAAS,SAAW+gS,EAAS,KAAO,IAAM19S,EACvD,CAAC2c,EAAO,SAAS,QAAQ,CAAC,EAEvBiiS,EAAclgE,GAA+DA,GAAW,MAAaA,EAAQ,OAAS,EAEtHmgE,EAAkBtpS,cAAamoS,GAAqC,CACxE,MAAM19S,EAAOY,EAAQ88S,EAAU,EAAE,EAE3BoB,EAAaF,EAAWlB,GAAA,YAAAA,EAAU,IAAI,EAAIA,EAAS,KAAM,IAAKY,GAAat+S,EAAOs+S,EAAS,IAAI,EAAI,KACnGS,EAAcH,EAAWlB,GAAA,YAAAA,EAAU,gBAAgB,EAAI19S,EAAO09S,EAAS,iBAAmB,KAC1FsB,EAAkBJ,EAAWlB,GAAA,YAAAA,EAAU,gBAAgB,EAAI19S,EAAO09S,EAAS,iBAAmB,KACpG,MAAO,CAAE,WAAAoB,EAAY,YAAAC,EAAa,gBAAAC,CAAA,CACpC,EAAG,CAACp+S,CAAO,CAAC,EAENq+S,EAAyB1pS,cAAamoS,GAAqC,OAC/E,MAAMwB,EAA0B,CAAA,EAChC,OAAA57S,EAAAo6S,GAAA,YAAAA,EAAU,OAAV,MAAAp6S,EAAgB,QAASg7S,GAAa,CACpC,MAAMt+S,EAAOY,EAAQ88S,EAAUY,EAAS,IAAI,EACtC/pS,EAAOmJ,EAAU1d,CAAI,EACvBuU,GAAQA,GAAQ2pS,IAClBgB,EAAW,KAAK,CAAE,MAAOb,GAAiBC,CAAQ,EAAG,KAAA/pS,EAAY,CAErE,GACO2qS,CACT,EAAG,CAACxhS,EAAW9c,CAAO,CAAC,EAmFvB,MAAO,CAAE,eA/Ec2U,cAAa+nS,GAAuB,CAEzD,MAAMI,EAAW/gS,EAAO,OAAO2gS,CAAU,EAEzC,GAAI,CAACI,EAAU,OAEf,KAAM,CAAE,WAAAoB,EAAY,YAAAC,EAAa,gBAAAC,CAAA,EAAoBH,EAAgBnB,CAAQ,EAEvEyB,EACJ,CAAC,GAAGL,GAA0B,CAAA,EAC9B,GAAGC,EAAc,CAACA,CAAW,EAAI,CAAA,EACjC,GAAGC,EAAkB,CAACA,CAAe,EAAI,CAAA,CAAC,EAE5C,GAAIG,EAAK,QAAU,EAAG,OAEtB,MAAMC,EAAa,OAAO,KAAK1hS,CAAS,EAAE,OAAO+gN,GAAO/gN,EAAU+gN,CAAG,GAAKy/E,EAAmB,EAE7F,QAAQ,IAAI,iCAAiCZ,CAAU,sBAAsB0B,CAAe,EAAE,EAK5FP,EADEM,EACcK,EAAW,SAASL,CAAW,EAAIrhS,EAAUqhS,CAAW,EAAI,OAE5D,IAFqE,EAKrFL,EADEM,EACkBI,EAAW,SAASJ,CAAe,EAAIthS,EAAUshS,CAAe,EAAI,OAEpE,IAF6E,EAKjGL,EADEG,EACYA,EAAW,MAAMx6R,GAAK86R,EAAW,SAAS96R,CAAC,CAAC,EAAI26R,EAAuBvB,CAAQ,EAAI,OAEnF,KAF8F,EAAI,EAKlH,MAAM2B,EAAeF,EAAK,OAAO1gF,GAAO,CAAC,OAAO,KAAK/gN,CAAS,EAAE,SAAS+gN,CAAG,CAAC,EAC7E,GAAI4gF,EAAa,QAAU,EAAG,OAE9B,MAAMC,EAAgC,CAAA,EACtCD,EAAa,QAAS5gF,GAAQ,CAC5B6gF,EAAc7gF,CAAG,EAAIy/E,EACvB,CAAC,EACDM,EAAac,EAAe,EAAK,EAEjCD,EAAa,QAAS5gF,GAAQ,CAC5B0/E,GAAQ1/E,CAAG,EAAE,KAAM1/N,GAAgB,CAEjC22G,GAAAA,wBAAwB,IAAM,OAE5B,GADA8oM,EAAa,CAAE,CAAC//E,CAAG,EAAG1/N,CAAA,EAAO,EAAK,EAC9BggT,GAAetgF,GAAOsgF,EACxBN,EAAgB1/S,CAAG,UACVigT,GAAmBvgF,GAAOugF,EACnCN,EAAoB3/S,CAAG,UACd+/S,GAAcA,EAAW,SAASrgF,CAAG,EAAG,CACjD,MAAM6/E,GAAWh7S,EAAAo6S,EAAS,OAAT,YAAAp6S,EAAe,KAAMg7S,GAAa7/E,GAAO79N,EAAQ88S,EAAUY,EAAS,IAAI,GACrFA,GACFK,EAAc,CAAC,CAAE,MAAON,GAAiBC,CAAQ,EAAG,KAAMv/S,EAAK,EAAG,EAAK,CAC3E,CACF,CAAC,CACH,EAAIkQ,GAAsB,CACxB,QAAQ,IAAI,GAAGA,EAAM,IAAI,KAAKA,EAAM,OAAO,EAAE,EAC5CymG,GAAAA,wBAAwB,IAAM,OAE7B,GADA8oM,EAAa,CAAE,CAAC//E,CAAG,EAAGxvN,CAAA,EAAS,EAAK,EAChC8vS,GAAetgF,GAAOsgF,EACxBN,EAAgBxvS,CAAK,UACZ+vS,GAAmBvgF,GAAOugF,EACnCN,EAAoBzvS,CAAK,UAChB6vS,GAAcA,EAAW,SAASrgF,CAAG,EAAG,CACjD,MAAM6/E,GAAWh7S,EAAAo6S,EAAS,OAAT,YAAAp6S,EAAe,KAAMg7S,GAAa7/E,GAAO79N,EAAQ88S,EAAUY,EAAS,IAAI,GACrFA,GACFK,EAAc,CAAC,CAAE,MAAON,GAAiBC,CAAQ,EAAG,KAAMrvS,EAAO,EAAG,EAAK,CAC7E,CACF,CAAC,CACH,CAAC,CACH,CAAC,CACH,EAAG,CAACrO,EAAS+b,EAAO,OAAQe,EAAWuhS,EAAwBT,EAAcC,EAAiBC,EAAqBC,CAAa,CAAC,EAExG,iBAAA/gS,EAAkB,WAAAC,EAAY,aAAAF,CAAA,CACzD,CCvJO,MAAM4hS,GAAuB5iS,GAA8B,CAChE,KAAM,CAAE,CAAA,EAAMnH,GAAe,QAAQ,EAE/BgqS,EAAiB13R,EAAAA,QAAQ,IAAOnL,GAAuD,CAC3F,MAAMquE,EAAkC,CAAA,EAGxC,GAAI,CAACruE,EACH,OAAAquE,EAAO,KAAK,CACV,MAAO,SACP,QAAS,EAAE,iCAAiC,CAAA,CAC7C,EACMA,EAIT,GAAI,CAACruE,EAAO,SACVquE,EAAO,KAAK,CACV,MAAO,WACP,QAAS,EAAE,mCAAmC,CAAA,CAC/C,MACI,CACL,MAAMy+J,EAAW9sO,EAAO,SAGpB,OAAO8sO,EAAS,mBAAsB,WACxCz+J,EAAO,KAAK,CACV,MAAO,6BACP,QAAS,EAAE,2CAA2C,CAAA,CACvD,EAEC,OAAOy+J,EAAS,WAAc,WAChCz+J,EAAO,KAAK,CACV,MAAO,qBACP,QAAS,EAAE,mCAAmC,CAAA,CAC/C,EAEC,OAAOy+J,EAAS,oBAAuB,WACzCz+J,EAAO,KAAK,CACV,MAAO,8BACP,QAAS,EAAE,4CAA4C,CAAA,CACxD,EAEC,OAAOy+J,EAAS,yBAA4B,WAC9Cz+J,EAAO,KAAK,CACV,MAAO,mCACP,QAAS,EAAE,iDAAiD,CAAA,CAC7D,EAEC,OAAOy+J,EAAS,iBAAoB,WACtCz+J,EAAO,KAAK,CACV,MAAO,2BACP,QAAS,EAAE,yCAAyC,CAAA,CACrD,EAEC,OAAOy+J,EAAS,sBAAyB,WAC3Cz+J,EAAO,KAAK,CACV,MAAO,gCACP,QAAS,EAAE,8CAA8C,CAAA,CAC1D,EAEC,OAAOy+J,EAAS,qBAAwB,WAC1Cz+J,EAAO,KAAK,CACV,MAAO,+BACP,QAAS,EAAE,6CAA6C,CAAA,CACzD,EAEC,OAAOy+J,EAAS,yBAA4B,WAC9Cz+J,EAAO,KAAK,CACV,MAAO,mCACP,QAAS,EAAE,iDAAiD,CAAA,CAC7D,GAIC,CAACy+J,EAAS,UAAY,OAAOA,EAAS,UAAa,WACrDz+J,EAAO,KAAK,CACV,MAAO,oBACP,QAAS,EAAE,mCAAmC,CAAA,CAC/C,GAGC,CAACy+J,EAAS,qBAAuB,OAAOA,EAAS,qBAAwB,WAC3Ez+J,EAAO,KAAK,CACV,MAAO,+BACP,QAAS,EAAE,8CAA8C,CAAA,CAC1D,EAICy+J,EAAS,iBAAmB,OAAOA,EAAS,iBAAoB,UAClEz+J,EAAO,KAAK,CACV,MAAO,2BACP,QAAS,EAAE,wCAAwC,CAAA,CACpD,EAGCy+J,EAAS,UAAY,OAAOA,EAAS,UAAa,UACpDz+J,EAAO,KAAK,CACV,MAAO,oBACP,QAAS,EAAE,iCAAiC,CAAA,CAC7C,CAEL,CAGA,OAAK,MAAM,QAAQruE,EAAO,MAAM,EAKrBA,EAAO,OAAO,SAAW,EAClCquE,EAAO,KAAK,CACV,MAAO,SACP,QAAS,EAAE,iCAAiC,CAAA,CAC7C,EAEDruE,EAAO,OAAO,QAAQ,CAACY,EAAO/Y,IAAU,EAClC,CAAC+Y,EAAM,OAAS,OAAOA,EAAM,OAAU,WACzCytE,EAAO,KAAK,CACV,MAAO,UAAUxmF,CAAK,UACtB,QAAS,EAAE,qCAAqC,CAAA,CACjD,GAGC,CAAC+Y,EAAM,MAAQ,OAAOA,EAAM,MAAS,WACvCytE,EAAO,KAAK,CACV,MAAO,UAAUxmF,CAAK,SACtB,QAAS,EAAE,oCAAoC,CAAA,CAChD,GAGC,CAAC+Y,EAAM,SAAW,OAAOA,EAAM,SAAY,WAC7CytE,EAAO,KAAK,CACV,MAAO,UAAUxmF,CAAK,YACtB,QAAS,EAAE,uCAAuC,CAAA,CACnD,EAGE+Y,EAAM,oBACTytE,EAAO,KAAK,CACV,MAAO,UAAUxmF,CAAK,uBACtB,QAAS,EAAE,kDAAkD,CAAA,CAC9D,EAIC+Y,EAAM,eAAiB,CAAC,MAAM,QAAQA,EAAM,aAAa,GAC3DytE,EAAO,KAAK,CACV,MAAO,UAAUxmF,CAAK,kBACtB,QAAS,EAAE,0CAA0C,CAAA,CACtD,EAGC+Y,EAAM,MAAQ,CAAC,MAAM,QAAQA,EAAM,IAAI,GACzCytE,EAAO,KAAK,CACV,MAAO,UAAUxmF,CAAK,SACtB,QAAS,EAAE,iCAAiC,CAAA,CAC7C,EAGC+Y,EAAM,gBAAkB,CAAC,MAAM,QAAQA,EAAM,cAAc,GAC7DytE,EAAO,KAAK,CACV,MAAO,UAAUxmF,CAAK,mBACtB,QAAS,EAAE,2CAA2C,CAAA,CACvD,CAEL,CAAC,EA5DDwmF,EAAO,KAAK,CACV,MAAO,SACP,QAAS,EAAE,8BAA8B,CAAA,CAC1C,EA4DIA,CACT,EAAG,CAAC,CAAC,CAAC,EAEAy0N,EAAe33R,EAAAA,QAAQ,IAAM03R,EAAe7iS,CAAM,EAAG,CAACA,EAAQ6iS,CAAc,CAAC,EAEnF,MAAO,CACL,aAAAC,EACA,gBAAiBA,EAAa,OAAS,CAAA,CAE3C,ECnLMC,GAA2BpgS,GACzBA,GAAA,MAAAA,EAAe,WAAW,KACnB,IAAMA,EAAc,UAAU,CAAC,EAC/BA,GAAA,MAAAA,EAAe,WAAW,MAASA,GAAiBA,EAAc,OAAS,EAC3E,IAAMA,EAAc,UAAU,CAAC,EAEnC,GAIX,SAASqgS,GAAkB,CAAE,wBAAAC,EAAyB,2BAAAn/D,EAA4B,QAAA36J,EAAS,KAAAtC,GAAuH,oBAC9M,KAAM,CAAE,EAAA/jF,EAAG,KAAA8T,GAASiC,GAAe,QAAQ,EAErC+H,EAAQrB,GAAS,IAAI,MAAA,EACrB6oO,EAAc7oO,GAAS,IAAI,YAAA,EAC3BwgS,EAAiBxgS,GAAS,IAAI,eAAA,EAC9BiD,EAAoBjD,GAAS,IAAI,kBAAA,EACjC2gS,EAAuB3gS,GAAS,IAAI,qBAAA,EACpCm/M,EAAsBn/M,GAAS,IAAI,oBAAA,EACnC0gS,EAAyB1gS,GAAS,IAAI,uBAAA,EACtCgD,EAAgBhD,GAAS,IAAI,cAAA,EAC7B+rO,EAAmB/rO,GAAS,IAAI,iBAAA,EAChCkD,EAAiBlD,GAAS,IAAI,eAAA,EAC9BygS,EAAoBzgS,GAAS,IAAI,kBAAA,EACjCoD,EAAgBpD,GAAS,IAAI,cAAA,EAC7B4gS,EAAmB5gS,GAAS,IAAI,iBAAA,EAChCqD,EAAoBrD,GAAS,IAAI,kBAAA,EACjC2jS,EAAuB3jS,GAAS,IAAI,qBAAA,EACpC4jS,EAAc5jS,GAAS,IAAI,YAAA,EAC3B6jS,EAAiB7jS,GAAS,IAAI,eAAA,EAC9Bq/R,EAAuBr/R,GAAS,IAAI,qBAAA,EACpC8jS,EAA0B9jS,GAAS,IAAI,wBAAA,EACvCwkO,EAAwBxkO,GAAS,IAAI,sBAAA,EACrC+jS,EAA2B/jS,GAAS,IAAI,yBAAA,EAExCgkS,EAAmB3qS,cAAavU,IAAkB,CACpD07S,EAAe17S,EAAK,CACxB,EAAG,CAAC07S,CAAc,CAAC,EAEbyD,EAA2B5qS,EAAAA,YAAY,CAAColN,GAAekkB,KAA2B,CACpF,QAAQ,IAAI,qCAAqClkB,EAAK,MAAMkkB,EAAc,EAAE,EAC5E+9D,EAAuB,CAAE,CAACjiF,EAAK,EAAGkkB,EAAA,EAAkB,EAAK,CAC7D,EAAG,CAAC+9D,CAAsB,CAAC,EAErBwD,EAAwB7qS,cAAavU,IAAmB,CAC1DinP,EAAiBjnP,EAAK,CAC1B,EAAG,CAACinP,CAAgB,CAAC,EAEfo4D,EAAyB9qS,cAAavU,IAAmB,CAC3D27S,EAAkB37S,EAAK,CAC3B,EAAG,CAAC27S,CAAiB,CAAC,EAEhB2D,EAA4B/qS,EAAAA,YAAY,IAAM,CAChD,QAAQ,IAAI,wBAAwB,CAAC4J,CAAiB,EAAE,EACxD09R,EAAqB,CAAC19R,CAAiB,CAC3C,EAAG,CAACA,EAAmB09R,CAAoB,CAAC,EAEtC0D,EAAwBhrS,EAAAA,YAAY,IAAM,QAC5C,GAAI+J,GAAiB,KACjBw9R,EAAiB,IAAI,MAClB,CACH,MAAM0D,GAAuBd,IAAwBp8S,GAAAia,GAAA,YAAAA,EAAO,aAAP,YAAAja,GAAmB,oBAAoB,EAC5Fw5S,EAAiB0D,EAAoB,CACzC,CACJ,EAAG,CAAClhS,GAAehc,GAAAia,GAAA,YAAAA,EAAO,aAAP,YAAAja,GAAmB,qBAAsBw5S,CAAgB,CAAC,EAEvE2D,EAA4BlrS,cAAavU,IAAmB,CAC9D6+S,EAAqB7+S,EAAK,CAC9B,EAAG,CAAC6+S,CAAoB,CAAC,EAEnBa,EAAgCnrS,cAAavU,IAAyB,CACxEi/S,EAAyBj/S,EAAK,CAClC,EAAG,CAACi/S,CAAwB,CAAC,EAEvBU,EAAqB74R,EAAAA,QAAQ,YAC/B,QAAAxkB,GAAAia,GAAA,YAAAA,EAAO,aAAP,YAAAja,GAAmB,YAAa,GAC9B,EAACD,GAAAka,GAAA,YAAAA,EAAO,aAAP,YAAAla,GAAmB,SAAS,CAAA,EAE7Bu9S,EAA8B94R,EAAAA,QAAQ,IACxCvK,GAAA,MAAAA,EAAO,WAAa,OAAO,QAAQA,EAAM,WAAW,eAAe,EAAE,OAAS,EAC5E,CAACA,GAAA,YAAAA,EAAO,UAAU,CAAA,EAElBsjS,EAAyB/4R,EAAAA,QAAQ,YACnC,QAAAxkB,GAAAia,GAAA,YAAAA,EAAO,aAAP,YAAAja,GAAmB,mBAAoB,IACrC,EAACoN,GAAA6M,GAAA,YAAAA,EAAO,aAAP,YAAA7M,GAAmB,gBAAgB,CAAA,EAEpCowS,EAAuCh5R,EAAAA,QAAQ,IACjD,MAAM,KAAK,CAAE,OAAQ64R,CAAA,EAAsB,CAAC9vQ,GAAGhxC,KAAQ,EAAIA,EAAG,EAAE,IAAI+C,KAAM,CACtE,MAAOA,GACP,MAAOnD,EAAE,4BAA6B,CAAE,MAASmD,GAAG,CAAA,EACtD,EACF,CAAC+9S,EAAoBlhT,CAAC,CAAA,EAIpBshT,EAAqGj5R,EAAAA,QAAQ,IAAM,WACrH,KAAIxkB,GAAAia,GAAA,YAAAA,EAAO,aAAP,YAAAja,GAAmB,mBAAoB,OACvC,MAAO,CAAA,EAEX,MAAM2b,GAAiG,CAAA,EACvG,UAAW+hS,MAAqB39S,GAAAka,GAAA,YAAAA,EAAO,aAAP,YAAAla,GAAmB,gBAAiB,CAChE,GAAI29S,GAAkB,wBAAwB,SAAW,EACrD,SAEJ,MAAMliE,GAAkD,CAAA,EACxD,UAAWD,KAAkBmiE,GAAkB,wBAAyB,CAEpE,MAAMtyS,GAAOmwO,EAAe,OAAS,OAASA,EAAe,MAAM,MAAM,GAAG,EAAE,CAAC,EAAIp/O,EAAE,iCAAiC,EACtHq/O,GAAwB,KAAK,CAAE,MAAOD,EAAe,MAAO,MAAOnwO,GAAM,CAC7E,CACAuQ,GAAgB,KAAK,CAAE,MAAO+hS,GAAkB,MAAO,UAAWA,GAAkB,UAAW,cAAeliE,EAAA,CAAyB,CAC3I,CACA,OAAO7/N,EACX,EAAG,CAAC2hS,EAA6BnhT,CAAC,CAAC,EAG7BwhT,EAAoBn5R,EAAAA,QAAQ,IAC9BvK,GAAA,MAAAA,EAAO,WAAa,CAACA,EAAM,WAAW,aAAe,GACnD,CAACA,GAAA,YAAAA,EAAO,UAAU,CAAA,EAElB2jS,EAAuBp5R,EAAAA,QAAQ,IACjCvK,GAAA,MAAAA,EAAO,WAAa,CAACA,EAAM,WAAW,SAAW,GAC/C,CAACA,GAAA,YAAAA,EAAO,UAAU,CAAA,EAElB4jS,GAA0Br5R,EAAAA,QAAQ,IAAA,WACpC,QAAAxkB,GAAAia,GAAA,YAAAA,EAAO,aAAP,YAAAja,GAAmB,wBAAyB,UAAaD,GAAAka,GAAA,YAAAA,EAAO,aAAP,YAAAla,GAAmB,wBAAyB,IACnG,CAACka,GAAA,YAAAA,EAAO,UAAU,CAAA,EAElB6jS,GAAmBt5R,EAAAA,QAAQ,IAC7Bg5R,EAAa,OAAS,EACpB,CAACvjS,GAAA,YAAAA,EAAO,UAAU,CAAA,EAOlB8jS,GAL4Bv5R,EAAAA,QAAQ,IACtC84R,EAA8B,EAC5B,CAACrjS,GAAA,YAAAA,EAAO,UAAU,CAAA,EAG+BwjS,GAAA,YAAAA,EAAqB,IAAIO,IAC5E3pF,EAAAA,KAACr7C,GAAA,CAAI,MAAO,SACR,SAAA,CAAAs7C,EAAAA,IAACx8C,GAAA,CAAI,KAAM,GACP,SAAAw8C,EAAAA,IAAC58B,IAAM,UAAU,WACb,SAAA48B,EAAAA,IAACljB,GAAW,KAAX,CAAgB,OAAQ,GACpB,SAAAj1M,EAAE,8BAA+B,CAAE,UAAW6hT,GAAoB,SAAA,CAAW,EAClF,CAAA,CACJ,CAAA,CACJ,EACA1pF,EAAAA,IAACx8C,GAAA,CAAI,KAAM,GACP,SAAAw8C,EAAAA,IAAC5gF,GAAA,CACG,KAAK,SACL,QAASsqK,GAAoB,eAAiB,CAAA,EAC9C,cAAcjmF,GAAA,YAAAA,EAAsBimF,GAAoB,SAAU,OAClE,SAAUA,GAAoB,cAAgBA,GAAoB,cAAc,QAAU,EAAI,GAC9F,SAAWtgT,IAAUm/S,EAAyBmB,GAAoB,MAAOtgT,EAAK,CAAA,CAAA,CAClF,CACJ,CAAA,CAAA,CACJ,GACA,KAEEugT,GAAqBhsS,cAAavU,IAAkB,CACtD,eAAe,QAAQ4Z,GAA8B5Z,EAAK,EAC1DuS,EAAK,eAAevS,EAAK,CAC7B,EAAG,CAACuS,CAAI,CAAC,EAEHiuS,EAAgB,CAClB,CAAE,MAAO,OAAQ,MAAO,MAAA,EACxB,CAAE,MAAO,mBAAoB,MAAO,kBAAA,EACpC,CAAE,MAAO,iBAAkB,MAAO,gBAAA,CAAiB,EAIjDC,EAAmBlsS,cAAavU,IAAkB,CAChDA,KAAU,OACV++S,EAAe,EAAK,GAEpBA,EAAe,EAAI,EACf/+S,KAAU,mBACVg/S,EAAwB,YAAY,EAC7Bh/S,KAAU,kBACjBg/S,EAAwB,UAAU,EAG9C,EAAG,CAACD,EAAgBC,CAAuB,CAAC,EAEtC0B,GAAkB9B,EAA0BjlS,GAAoB,SAAa,CAAE,MAAOO,GAAK,MAAO,MAAOA,GAAK,GAAA,EAAM,EAAI,CAAA,EAExHymS,EAAc/B,EAChBjoF,EAAAA,KAACr7C,GAAA,CAAI,MAAO,SACR,SAAA,CAAAs7C,EAAAA,IAACx8C,IAAI,KAAM,GACP,SAAAu8C,EAAAA,KAAC38B,GAAA,CAAM,UAAU,WACb,SAAA,CAAA48B,MAACljB,GAAW,KAAX,CAAgB,OAAQ,GACpB,SAAAj1M,EAAE,6BAA6B,EACpC,EACAm4N,EAAAA,IAACljB,GAAW,KAAX,CAAgB,MAAO,CAAE,WAAY,UAAW,SAAU,OAAA,EACtD,SAAAj1M,EAAE,mCAAmC,CAAA,CAC1C,CAAA,CAAA,CACJ,CAAA,CACJ,EACAm4N,EAAAA,IAACx8C,GAAA,CAAI,KAAM,EACP,SAAAw8C,EAAAA,IAAC5gF,GAAA,CAAO,MAAOzjI,EAAK,SAAU,QAASmuS,GAAiB,SAAUH,GAAoB,CAAA,CAC1F,CAAA,CAAA,CACJ,EAAS,KAEPK,GAAezvL,GAmBR,KAlBTwlG,EAAAA,KAACr7C,GAAA,CAAI,MAAO,SACR,SAAA,CAAAs7C,EAAAA,IAACx8C,IAAI,KAAM,GACP,SAAAu8C,EAAAA,KAAC38B,GAAA,CAAM,UAAU,WACb,SAAA,CAAA48B,MAACljB,GAAW,KAAX,CAAgB,OAAQ,GACpB,SAAAj1M,EAAE,6BAA6B,EACpC,EACAm4N,EAAAA,IAACljB,GAAW,KAAX,CAAgB,MAAO,CAAE,WAAY,UAAW,SAAU,OAAA,EACtD,SAAAj1M,EAAE,mCAAmC,CAAA,CAC1C,CAAA,CAAA,CACJ,CAAA,CACJ,EACAm4N,EAAAA,IAACx8C,GAAA,CAAI,KAAM,EACP,SAAAw8C,EAAAA,IAAC5gF,GAAA,CACG,aAAc8oK,EAAc,GAAGvE,CAAoB,SAAW,OAC9D,QAASiG,EACT,SAAUC,CAAA,CAAA,CACd,CACJ,CAAA,CAAA,CACJ,EAIJ,OACI7pF,EAAAA,IAAC5/B,GAAA,CAAO,MAAOv4L,EAAE,oBAAoB,EAAG,KAAA+jF,EAAY,QAAAsC,EAChD,SAAA6xI,EAAAA,KAAC38B,GAAA,CAAM,UAAU,WAAW,KAAK,QAG3B,SAAA,EAAA2mH,GAAeC,KACbjqF,EAAAA,KAAAxxM,EAAAA,SAAA,CACI,SAAA,CAAAyxM,EAAAA,IAACljB,GAAW,MAAX,CAAiB,MAAO,EAAG,MAAO,CAAE,OAAQ,CAAA,EACxC,SAAAj1M,EAAE,+BAA+B,CAAA,CACtC,EACAk4N,EAAAA,KAAC38B,GAAA,CAAM,UAAU,WAAW,KAAK,SAC5B,SAAA,CAAA2mH,EACAC,EAAA,EACL,QACChmJ,GAAA,CAAA,CAAQ,CAAA,EACb,EAEJg8D,EAAAA,IAACljB,GAAW,MAAX,CAAiB,MAAO,EAAG,MAAO,CAAE,OAAQ,CAAA,EACxC,SAAAj1M,EAAE,wCAAwC,CAAA,CAC/C,EACAm4N,EAAAA,IAAC58B,IAAM,UAAU,WAAW,KAAK,SAC7B,SAAA28B,EAAAA,KAACr7C,GAAA,CAAI,MAAO,SACR,SAAA,CAAAs7C,EAAAA,IAACx8C,IAAI,KAAM,GACP,SAAAu8C,EAAAA,KAAC38B,GAAA,CAAM,UAAU,WACb,SAAA,CAAA48B,EAAAA,IAACljB,GAAW,KAAX,CAAgB,OAAQ,GAAQ,GAAKx1L,EAAwC,CAAA,EAAxB,CAAE,KAAM,aACzD,SAAAzf,EAAE,mCAAmC,EAC1C,EACAm4N,MAACljB,GAAW,KAAX,CAAgB,MAAO,CAAE,WAAY,UAAW,SAAU,OAAA,EAAa,GAAKx1L,EAAwC,CAAA,EAAxB,CAAE,KAAM,WAAA,EAChG,SAAAzf,EAAE,yCAAyC,CAAA,CAChD,CAAA,CAAA,CACJ,CAAA,CACJ,EACAm4N,EAAAA,IAACx8C,GAAA,CAAI,KAAM,EACP,eAACszB,GAAA,CAAO,MAAOxvL,GAAiB,GAAO,aAAc,GAAO,SAAU+hS,EAAmB,SAAUb,EAAuB,CAAA,CAC9H,CAAA,CAAA,CACJ,CAAA,CACJ,QACCxkJ,GAAA,EAAQ,EAETg8D,EAAAA,IAACljB,GAAW,MAAX,CAAiB,MAAO,EAAG,MAAO,CAAE,OAAQ,CAAA,EACxC,SAAAj1M,EAAE,kCAAkC,CAAA,CACzC,EACAk4N,EAAAA,KAAC38B,GAAA,CAAM,UAAU,WAAW,KAAK,SAC5B,SAAA,CAAAqmH,GAED1pF,EAAAA,KAACr7C,GAAA,CAAI,MAAO,SACR,SAAA,CAAAs7C,EAAAA,IAACx8C,IAAI,KAAM,GACP,SAAAu8C,EAAAA,KAAC38B,GAAA,CAAM,UAAU,WACb,SAAA,CAAA48B,EAAAA,IAACljB,GAAW,KAAX,CAAgB,OAAQ,GAAQ,GAAKt1L,EAAyC,CAAA,EAAxB,CAAE,KAAM,aAC1D,SAAA3f,EAAE,mCAAmC,EAC1C,EACAm4N,MAACljB,GAAW,KAAX,CAAgB,MAAO,CAAE,WAAY,UAAW,SAAU,OAAA,EAAY,GAAKt1L,EAAyC,CAAA,EAAxB,CAAE,KAAM,WAAA,EAChG,SAAA3f,EAAE,yCAAyC,CAAA,CAChD,CAAA,CAAA,CACJ,CAAA,CACJ,EACAm4N,EAAAA,IAACx8C,GAAA,CAAI,KAAM,EACP,SAAAw8C,EAAAA,IAAClpB,GAAA,CAAO,aAActvL,GAAkB,GAAO,SAAU8hS,EAAsB,SAAUb,EAAwB,CAAA,CACrH,CAAA,EACJ,EAECQ,GACGlpF,EAAAA,KAACr7C,GAAA,CAAI,MAAO,SACR,SAAA,CAAAs7C,EAAAA,IAACx8C,IAAI,KAAM,GACP,SAAAu8C,EAAAA,KAAC38B,GAAA,CAAM,UAAU,WACb,SAAA,CAAA48B,EAAAA,IAACljB,GAAW,KAAX,CAAgB,OAAQ,GAAO,GAAKv1L,EAA4C,CAAA,EAAxB,CAAE,KAAM,aAC5D,SAAA1f,EAAE,kCAAkC,EACzC,EACAm4N,MAACljB,GAAW,KAAX,CAAgB,MAAO,CAAE,WAAY,UAAW,SAAU,OAAA,EAAY,GAAKv1L,EAA4C,CAAA,EAAxB,CAAE,KAAM,WAAA,EACnG,SAAA1f,EAAE,wCAAwC,CAAA,CAC/C,CAAA,CAAA,CACJ,CAAA,CACJ,EACAm4N,EAAAA,IAACx8C,GAAA,CAAI,KAAM,EACP,SAAAw8C,EAAAA,IAAClpB,GAAA,CACG,aAAcvvL,GAAqB,GACnC,SAAU,CAAC0hS,EACX,SAAUP,CAAA,CAAA,CACd,CACJ,CAAA,EACJ,EAEHa,IACGxpF,EAAAA,KAACr7C,GAAA,CAAI,MAAO,SACR,SAAA,CAAAs7C,EAAAA,IAACx8C,IAAI,KAAM,GACP,SAAAu8C,EAAAA,KAAC38B,GAAA,CAAM,UAAU,WACb,SAAA,CAAA48B,EAAAA,IAACljB,GAAW,KAAX,CAAgB,OAAQ,GAAO,GAAKp1L,EAAwC,CAAA,EAAxB,CAAE,KAAM,aACxD,SAAA7f,EAAE,oCAAoC,EAC3C,EACAm4N,EAAAA,IAACljB,GAAW,KAAX,CAAgB,MAAO,CAAE,WAAY,UAAW,SAAU,OAAA,EAAY,GAAKp1L,EAAwC,GAAxB,CAAE,KAAM,WAAA,EAC/F,SAAA7f,EAAE,2CAA4C,CAAE,sBAAsBgR,GAAA8M,GAAA,YAAAA,EAAO,aAAP,YAAA9M,GAAmB,oBAAA,CAAsB,CAAA,CACpH,CAAA,CAAA,CACJ,CAAA,CACJ,EACAmnN,EAAAA,IAACx8C,GAAA,CAAI,KAAM,EACP,SAAAw8C,EAAAA,IAAClpB,GAAA,CACG,aAAcpvL,GAAiB,KAC/B,SAAU,GAAC3O,GAAA4M,GAAA,YAAAA,EAAO,aAAP,MAAA5M,GAAmB,sBAC9B,SAAU4vS,CAAA,CAAA,CACd,CACJ,CAAA,EACJ,EAGJ5oF,EAAAA,KAACr7C,GAAA,CAAI,MAAO,SACR,SAAA,CAAAs7C,EAAAA,IAACx8C,IAAI,KAAM,GACP,SAAAu8C,EAAAA,KAAC38B,GAAA,CAAM,UAAU,WACb,SAAA,CAAA48B,EAAAA,IAACljB,GAAW,KAAX,CAAgB,OAAQ,GAAO,GAAKn1L,EAA4C,CAAA,EAAxB,CAAE,KAAM,aAC5D,SAAA9f,EAAE,qCAAqC,EAC5C,EACAm4N,MAACljB,GAAW,KAAX,CAAgB,MAAO,CAAE,WAAY,UAAW,SAAU,OAAA,EAAY,GAAKn1L,EAA4C,CAAA,EAAxB,CAAE,KAAM,WAAA,EACnG,SAAA9f,EAAE,2CAA2C,CAAA,CAClD,CAAA,CAAA,CACJ,CAAA,CACJ,EACAm4N,EAAAA,IAACx8C,GAAA,CAAI,KAAM,EACP,SAAAw8C,EAAAA,IAAClpB,GAAA,CACG,aAAcnvL,GAAqBkhO,EACnC,SAAUggE,CAAA,CAAA,CACd,CACJ,CAAA,EACJ,EAGCW,IACGzpF,EAAAA,KAACr7C,GAAA,CAAI,MAAO,SACR,SAAA,CAAAs7C,EAAAA,IAACx8C,IAAI,KAAM,GACP,SAAAu8C,EAAAA,KAAC38B,GAAA,CAAM,UAAU,WACb,SAAA,CAAA48B,EAAAA,IAACljB,GAAW,KAAX,CAAgB,OAAQ,GAAO,GAAKqwC,EAAsC,CAAA,EAAxB,CAAE,KAAM,aACtD,SAAAtlP,EAAE,gCAAgC,EACvC,EACAm4N,MAACljB,GAAW,KAAX,CAAgB,MAAO,CAAE,WAAY,UAAW,SAAU,OAAA,EAAY,GAAKqwC,EAAsC,CAAA,EAAxB,CAAE,KAAM,WAAA,EAC7F,SAAAtlP,EAAE,sCAAsC,CAAA,CAC7C,CAAA,CAAA,CACJ,CAAA,CACJ,EACAm4N,EAAAA,IAACx8C,GAAA,CAAI,KAAM,EACP,SAAAw8C,EAAAA,IAAC5gF,GAAA,CACG,KAAK,QACL,QAAS8pK,EACT,MAAO,CAAE,MAAO,GAAA,EAChB,aAAc/7D,GAA4B47D,EAC1C,SAAUA,GAAsB,EAChC,SAAUT,CAAA,CAAA,CACd,CACJ,CAAA,EACJ,EAEJvoF,EAAAA,KAACr7C,GAAA,CAAI,MAAO,SACR,SAAA,CAAAs7C,EAAAA,IAACx8C,IAAI,KAAM,GACP,SAAAu8C,EAAAA,KAAC38B,GAAA,CAAM,UAAU,WACb,SAAA,CAAA48B,MAACljB,GAAW,KAAX,CAAgB,OAAQ,GACpB,SAAAj1M,EAAE,0CAA0C,EACjD,EACAm4N,EAAAA,IAACljB,GAAW,KAAX,CAAgB,MAAO,CAAE,WAAY,UAAW,SAAU,OAAA,EACtD,SAAAj1M,EAAE,gDAAgD,CAAA,CACvD,CAAA,CAAA,CACJ,CAAA,CACJ,EACAm4N,EAAAA,IAACx8C,GAAA,CAAI,KAAM,GACP,SAAAw8C,EAAAA,IAAC5gF,GAAA,CACG,QAAS,CACL,CAAE,MAAOv3I,EAAE,kCAAkC,EAAG,MAAO,CAAA,EACvD,CAAE,MAAOA,EAAE,gCAAgC,EAAG,MAAO,EAAA,EACrD,CAAE,MAAOA,EAAE,+BAA+B,EAAG,MAAO,CAAA,EACpD,CAAE,MAAOA,EAAE,+BAA+B,EAAG,MAAO,CAAA,CAAE,EAC1D,aAAcihP,GAAwD,GACtE,SAAUggE,CAAA,CAAA,CACd,CACJ,CAAA,CAAA,CACJ,CAAA,CAAA,CAEJ,CAAA,CAAA,CACJ,CAAA,CACJ,CAER,CCzZA,MAAMmB,GAAYpsS,GAA0B2G,EAAM,cAAc,MAAO,CAAE,KAAM,UAAW,OAAQ,QAAS,MAAO,QAAS,GAAI,UAAW,MAAO,6BAA8B,WAAY,+BAAgC,QAAS,cAAe,SAAU,WAAY,GAAG3G,GAAyB2G,EAAM,cAAc,IAAK,KAAsBA,EAAM,cAAc,IAAK,KAAsBA,EAAM,cAAc,OAAQ,CAAE,EAAG,qbAAsb,CAAC,CAAC,CAAC,ECiB71B,SAAwB0lS,GAAU,CAChC,UAAAC,EACA,SAAAC,EACA,UAAAC,EACA,cAAAC,EACA,wBAAAC,EACA,gBAAAC,EACA,qBAAAC,CACF,EAAmB,CACjB,KAAM,CAAE,EAAA5iT,CAAA,EAAM+V,GAAe,QAAQ,EAC/B8sS,EAAYpmS,GAAS,IAAI,UAAA,EACzBqmS,EAAermS,GAAS,IAAI,aAAA,EAE5BsmS,EAAgC16R,EAAAA,QAAQ,IAC5Cq6R,GAA2BC,GAAmBC,EAAuB,CACnEJ,EAAY,CACV,IAAK,QACL,MAAOrqF,EAAAA,IAAC58B,GAAA,CAAM,UAAU,aAAc,SAAAv7L,EAAE,kBAAkB,EAAE,EAC5D,SAAUwiT,CAAA,EACR,KACJ,CACE,IAAK,QACL,MAAOtqF,EAAAA,KAAC38B,GAAA,CAAM,UAAU,aAAa,SAAA,CAAA48B,EAAAA,IAAC57J,GAAA,CAAK,UAAWymP,EAAA,CAAU,EAAGhjT,EAAE,WAAW,CAAA,EAAE,EAClF,SAAUsiT,CAAA,EAEZC,EAAW,CACT,IAAK,OACL,MAAOrqF,EAAAA,KAAC38B,GAAA,CAAM,UAAU,aAAa,SAAA,CAAA48B,EAAAA,IAACj8B,GAAA,EAAiB,EAAGl8L,EAAE,UAAU,CAAA,EAAE,EACxE,SAAUuiT,CAAA,EACR,KACJE,EAAgB,CACd,IAAK,YACL,MAAOvqF,EAAAA,KAAC38B,GAAA,CAAM,UAAU,aAAa,SAAA,CAAA,UAAEyS,GAAA,EAAkB,EAAGhuM,EAAE,eAAe,CAAA,EAAE,EAC/E,SAAUyiT,CAAA,EACR,IAAA,EACJ,OAAOvjS,GAAOA,GAAO,IAAI,EAAI,CAAA,EAC/B,CAACojS,EAAWC,EAAUC,EAAWC,EAAeC,EAAyBC,EAAiBC,EAAsB5iT,CAAC,CAAA,EAG7GijT,EAAcntS,cAAa1V,GAAgB,CAC/C0iT,EAAa1iT,CAAG,CAClB,EAAG,CAAC0iT,CAAY,CAAC,EAIjB,OAFuBC,EAAU,OAAS,EAOxC5qF,EAAAA,IAAC/hD,GAAA,CACC,MAAO2sI,EACP,iBAAiB,QACjB,SAAUE,EACV,MAAO,CACL,MAAO,OACP,KAAM,IACN,GAAIJ,IAAc,QAAUA,IAAc,QAAU,CAAE,OAAQ,QAAW,CAAA,CAAC,CAC5E,CAAA,oBAZQ,SAAAP,CAAA,CAAU,CAexB,CCnEA,SAAwBY,GAAgB,CACtC,UAAAZ,EACA,SAAAC,EACA,UAAAC,EACA,cAAAC,EACA,MAAA/mI,EACA,SAAAynI,CACF,EAAyB,CAEvB,MAAMC,EAAkB3mS,GAAS,IAAI,gBAAA,EAC/BwC,EAAcxC,GAAS,IAAI,qBAAA,EAE3B4mS,EAAmB,IACnBD,IAAoB,YACfX,EACEW,IAAoB,OACtBb,EACEa,IAAoB,QACtBZ,EAEF,KAGT,OACErqF,MAAAzxM,EAAAA,SAAA,CACE,SAAAwxM,EAAAA,KAACnS,GAAA,CACC,OAAQ9mM,EACR,SAAUkkS,EACV,MAAO,CAAE,OAAQ,OAAQ,UAAW,6BAAA,EAEpC,SAAA,CAAAhrF,EAAAA,IAACpS,GAAS,MAAT,CAAe,KAAMrqC,EAAM,CAAC,EAAG,UAAW,GACxC,SAAA4mI,CAAA,CACH,EACAnqF,MAACpS,GAAS,MAAT,CAAe,KAAMrqC,EAAM,CAAC,EAC1B,SAAA2nI,GAAiB,CACpB,CAAA,CAAA,CAAA,EAEJ,CAEJ,CClCA,SAAwBC,GAAc,CACpC,UAAAhB,EACA,SAAAC,EACA,UAAAC,EACA,cAAAC,EAEA,wBAAAC,EACA,gBAAAC,EACA,qBAAAC,CACF,EAAuB,CAErB,MAAMvC,EAAc5jS,GAAS,IAAI,YAAA,EAC3Bq/R,EAAuBr/R,GAAS,IAAI,qBAAA,EACpC2mS,EAAkB3mS,GAAS,IAAI,gBAAA,EAC/B8mS,EAAqB9mS,GAAS,IAAI,mBAAA,EAClComS,EAAYpmS,GAAS,IAAI,UAAA,EACzBqmS,EAAermS,GAAS,IAAI,aAAA,EAG5B,CAACi/J,EAAOynI,CAAQ,EAAIpsS,EAAAA,SAA8B,CAAC,MAAO,KAAK,CAAC,EAEtEpB,EAAAA,UAAU,IAAM,CACdwtS,EAAS,CAAC,MAAO,KAAK,CAAC,CACzB,EAAG,CAAC9C,EAAavE,CAAoB,CAAC,EAGtC,MAAM0H,EAAwB1tS,cAAa1V,GACrCA,IAAQ,MAEDA,IAAQ,aAAeqiT,IAAkB,MAEzCriT,IAAQ,QAAUmiT,IAAa,KAHjC,GAKE,EAAAniT,IAAQ,SAAWoiT,IAAc,MAI3C,CAACC,EAAeF,EAAUC,CAAS,CAAC,EAEjCiB,EAAyB3tS,EAAAA,YAAY,IAClC,CAAC0tS,EAAsBX,CAAS,EACtC,CAACW,EAAuBX,CAAS,CAAC,EAE/Ba,EAA+B5tS,EAAAA,YAAY,IACxC,CAAC0tS,EAAsBJ,CAAe,EAC5C,CAACI,EAAuBJ,CAAe,CAAC,EAErCO,EAAoB7tS,EAAAA,YAAY,IAAM,CAC1C,MAAM9R,EAAU,CAAA,EAChB,OAAIy+S,GAAez+S,EAAQ,KAAK,WAAW,EACvCw+S,GAAWx+S,EAAQ,KAAK,OAAO,EAC/Bu+S,GAAUv+S,EAAQ,KAAK,MAAM,EAC1BA,CACT,EAAG,CAACy+S,EAAeD,EAAWD,CAAQ,CAAC,EAGvC5sS,EAAAA,UAAU,IAAM,CACd,GAAI0qS,GAAeqD,IAAgC,CACjD,MAAME,EAAiBD,EAAA,EACnBC,EAAe,OAAS,GAC1BL,EAAmBK,EAAe,CAAC,CAAC,CAExC,KAAW,CAACvD,GAAeoD,KACzBX,EAAa,OAAO,CAExB,EAAG,CAACzC,EAAaoC,EAAeD,EAAWD,EAAUmB,EAA8BD,EAAwBE,EAAmBJ,EAAoBT,CAAY,CAAC,EAG/J,MAAMe,EAAiB,CAACxD,IAAgBqC,GAA2BC,GAAmBC,GAChFkB,EAAkB,CAACtB,EAAWD,EAAUE,CAAa,EAAE,OAAO,OAAO,EAAE,OAAS,EAEtF,OAAIpC,EAEAloF,EAAAA,IAAC+qF,GAAA,CACC,UAAAZ,EACA,SAAAC,EACA,UAAAC,EACA,cAAAC,EACA,MAAA/mI,EACA,SAAAynI,CAAA,CAAA,EAGKU,GAAkBC,EAEzB3rF,EAAAA,IAACkqF,GAAA,CACC,UAAAC,EACA,SAAAC,EACA,UAAAC,EACA,cAAAC,EACA,wBAAAC,EACA,gBAAAC,EACA,qBAAAC,CAAA,CAAA,EAKFN,CAGN,CCzGA,SAAwByB,GAAkB,CACxC,cAAAtB,EACA,UAAAD,EACA,SAAAD,CACF,EAA2B,CACzB,KAAM,CAAE,EAAAviT,CAAA,EAAM+V,GAAe,QAAQ,EAC/BqtS,EAAkB3mS,GAAS,IAAI,gBAAA,EAC/B8mS,EAAqB9mS,GAAS,IAAI,mBAAA,EAElCunS,EAAgB37R,EAAAA,QAAQ,IAAM,CAClCo6R,EAAgB,CAAE,MAAOziT,EAAE,eAAe,EAAG,MAAO,aAAgB,KACpEwiT,EAAY,CAAE,MAAOxiT,EAAE,kBAAkB,EAAG,MAAO,SAAY,KAC/DuiT,EAAW,CAAE,MAAOviT,EAAE,UAAU,EAAG,MAAO,QAAW,IAAA,EACrD,OAAO85B,GAAQA,GAAQ,IAAI,EAC5B,CAAC2oR,EAAeD,EAAWD,EAAUviT,CAAC,CAAA,EAEjCikT,EAA0BnuS,cAAavU,GAAkB,CAC7DgiT,EAAmBhiT,CAAK,CAC1B,EAAG,CAACgiT,CAAkB,CAAC,EAEvB,OAAIS,EAAc,SAAW,EACpB,KAIP9rF,EAAAA,KAAC38B,GAAA,CAAM,UAAU,aAAa,MAAO,CAAE,aAAc,OAAQ,UAAW,QAAS,KAAM,GAAA,EACrF,SAAA,CAAA28B,OAACjjB,GAAW,KAAX,CAAgB,MAAO,CAAE,WAAY,QAAW,SAAA,CAAAj1M,EAAE,2BAA2B,EAAE,GAAA,EAAC,EACjFm4N,EAAAA,IAAC5gF,GAAA,CACC,MAAO,CAAE,SAAU,QAAS,YAAa,MAAA,EACzC,QAASysK,EACT,MAAOZ,EACP,SAAUa,CAAA,CAAA,CACZ,EACF,CAEJ,CCvBA,SAAwBC,GAAkB,CACxC,kBAAAC,EACA,YAAAC,EACA,cAAAC,EACA,WAAAC,EACA,uBAAwBC,EACxB,cAAA9B,EACA,UAAAD,EACA,SAAAD,EACA,aAAAiC,CACF,EAA2B,CACzB,KAAM,CAAE,EAAAxkT,CAAA,EAAM+V,GAAe,QAAQ,EAC/BsqS,EAAc5jS,GAAS,IAAI,YAAA,EAC3B2C,EAAe3C,GAAS,IAAI,aAAA,EAC5BmiG,EAAmC5+G,EAA3BqkT,IAAkB,OAAW,eAAoB,iBAAN,EAGnDI,EAAgBp8R,EAAAA,QAAQ,IAC5B87R,EACEjsF,EAAAA,KAAC38B,GAAA,CAAM,UAAU,aAAa,MAAO,CAAE,aAAc,OAAQ,UAAW,QAAS,KAAM,KACrF,SAAA,CAAA28B,OAACjjB,GAAW,KAAX,CAAgB,MAAO,CAAE,WAAY,QAAW,SAAA,CAAAr2F,EAAM,GAAA,EAAC,EACxDu5G,EAAAA,IAAC5gF,GAAA,CACC,MAAO,CAAE,SAAU,QAAS,YAAa,MAAA,EACzC,aAAc,EACd,QAAS+sK,EACT,SAAUC,CAAA,CAAA,CAAgB,CAAA,CAC9B,EACE,KACF,CAACJ,EAAmBG,EAAYC,EAAgBvkT,CAAC,CAAA,EAE/C0kT,EAAoBr8R,EAAAA,QAAQ,IAAMg4R,EACtCloF,EAAAA,IAAC4rF,GAAA,CACC,cAAAtB,EACA,UAAAD,EACA,SAAAD,CAAA,CAAA,EACG,KACH,CAAClC,EAAaoC,EAAeD,EAAWD,CAAQ,CAAA,EAEpD,OACErqF,EAAAA,KAAC38B,GAAA,CAAM,UAAU,aAAa,MAAO,CACnC,MAAO,OACP,eAAgBkpH,GAAiBC,EAAoB,gBAAkB,WACvE,WAAY,QAAA,EAEX,SAAA,CAAAD,EACAC,EACAN,EAAcjsF,EAAAA,IAACx7I,GAAA,CACd,KAAMw7I,EAAAA,IAAC57J,GAAA,CAAK,UAAWmyI,EAAA,CAAiB,EACxC,QAAS81G,EACT,SAAUplS,IAAiB3B,GAAa,QACvC,WAAE,wBAAwB,CAAA,CAAA,EACjB,IAAA,EACd,CAEJ,CCvDO,SAASknS,GAAsB,CACpC,eAAAC,EACA,aAAAC,EACA,wBAAAC,EACA,aAAA1lS,EACA,gBAAAo+M,EACA,UAAAqlF,EACA,sBAAAkC,EACA,kBAAArlS,EACA,oBAAAk8M,EACA,8BAAAopF,EACA,KAAAlxS,EACA,QAAAmxS,CACF,EAA+B,CAC7B,MAAMC,EAAoB1tF,GAAA,EACpB2tF,EAAqBzvS,EAAAA,OAAO,EAAK,EAEvCC,EAAAA,UAAU,IAAM,CACVivS,GAAkBA,IAAmB,cAAgB,eAAe,QAAQzpS,EAA4B,GAAK,MAC/GrH,EAAK,eAAe8wS,CAAc,CAEtC,EAAG,CAACA,EAAgB9wS,CAAI,CAAC,EAGzB6B,EAAAA,UAAU,IAAM,CACVkvS,EAAa,OAAS,GAAKC,GAA2B,CAACK,EAAmB,UAC5EA,EAAmB,QAAU,GAC7BF,EAAQ,CAAC,EAEb,EAAG,CAAA,CAAE,EAELtvS,EAAAA,UAAU,IAAM,CACVqvS,GAAiCtlS,GAAqB,MACxDslS,EAA8B,CAAE,kBAAAtlS,EAAmB,CAEvD,EAAG,CAACA,CAAiB,CAAC,EAEtB/J,EAAAA,UAAU,IAAM,CACVqvS,GAAiC,OAAO,KAAKppF,CAAmB,EAAE,OAAS,GAC7EopF,EAA8B,CAAE,oBAAAppF,EAAqB,CAEzD,EAAG,CAACA,CAAmB,CAAC,EAExBjmN,EAAAA,UAAU,IAAM,CACVyJ,GAAgB3B,GAAa,SAC/B+/M,EAAgB//M,GAAa,OAAO,CAExC,EAAG,CAACm+M,CAAmB,CAAC,EAExBjmN,EAAAA,UAAU,IAAM,CACV+8G,IAAYwyL,EAAkB,aAAerC,GAAa,SAC5D,WAAW,IAAM,QACfh/S,EAAAkhT,EAAsB,UAAtB,MAAAlhT,EAA+B,gBACjC,EAAG,GAAG,CAEV,EAAG,CAACqhT,EAAkB,YAAarC,EAAWkC,CAAqB,CAAC,CACtE,CChCA,MAAMK,GAAc,CAAC,CAAE,OAAAloS,EAAQ,MAAAqQ,EAAO,OAAAC,EAAQ,gBAAAqvR,EAAiB,8BAAAmI,CAAA,EAAmDvvS,IAA6B,CAC7I,KAAM,CAAE,EAAAzV,EAAG,KAAA8T,GAASiC,GAAe,QAAQ,EAErC,CAAE,aAAAiqS,EAAc,gBAAAqF,GAAoBvF,GAAoB5iS,CAAM,EAE9DY,EAAQrB,GAAS,IAAI,MAAA,EAErBm/M,EAAsBn/M,GAAS,IAAI,oBAAA,EACnCkD,EAAiBlD,GAAS,IAAI,eAAA,EAC9BiD,EAAoBjD,GAAS,IAAI,kBAAA,EACjComS,EAAYpmS,GAAS,IAAI,UAAA,EAEzB2C,EAAe3C,GAAS,IAAI,aAAA,EAC5B+gN,EAAkB/gN,GAAS,IAAI,gBAAA,EAE/B6oS,EAAc7oS,GAAS,IAAI,YAAA,EAE3BmhN,EAAU/7M,GAAA,EACVqjS,EAAoB1tF,GAAA,EAEpB,CAAC+tF,EAAiBC,CAAkB,EAAIzuS,EAAAA,SAA4B,IAAI,EAIxE,CAAC0uS,EAAgBC,CAAiB,EAAI3uS,EAAAA,SAAkB,EAAK,EAC7D,CAAC4uS,EAAeC,CAAgB,EAAI7uS,EAAAA,SAAkB,EAAK,EAC3D,CAAC8uS,EAAgBC,CAAiB,EAAI/uS,EAAAA,SAA0B,CAAA,CAAE,EAElEguS,EAAwBrvS,EAAAA,OAA8B,IAAI,EAC1D,CAACqwS,EAAYC,CAAa,EAAIjvS,EAAAA,SAAS,EAAK,EAG5C+lS,EAAoB,CAAC99E,GAAaxvN,KAAiB,CACvDg2S,EAAmB,CAAE,IAAAxmF,GAAK,MAAAxvN,GAAO,EACjC8uS,EAAA,CACF,EAEM,CAAE,WAAAP,EAAY,YAAAO,EAAa,SAAAC,EAAU,QAAAC,CAAA,EAAY5B,GAAgB,CAAE,EAAA58S,EAAG,OAAAkd,EAAQ,eAAAyC,EAAgB,gBAAAk9R,EAAiB,kBAAAC,EAAmB,EAElI,CAAE,eAAAmJ,EAAgB,iBAAA9nS,EAAkB,WAAAC,EAAY,aAAAF,GAAiB4gS,GAAa,CAAE,OAAA5hS,EAAQ,EAExFmoG,EAAWh9F,EAAAA,QAAQ,IACvBqqG,IAAYwyL,EAAkB,YAAc,SAAW,SACrD,CAACxyL,GAAUwyL,EAAmB13R,CAAM,CAAA,EAElC04R,EAAqB9/Q,IACzB+xL,EAAAA,IAAC/9J,GAAA,CACC,MAAO,CACL,UAAWt6B,GAAM,iBACjB,MAAO,CACL,SAAU4yF,GAAW,GAAK,EAAA,CAC5B,EAEF,SAAAylG,EAAAA,IAACl2M,GAAQ,SAAR,CAAiB,MAAO,CAAE,QAAA27M,CAAA,EACzB,SAAAzF,EAAAA,IAAC51J,GAAA,CACC,SAAA41J,EAAAA,IAAC,OAAI,UAAU,2BAA2B,MAAO,CAAE,MAAA5qM,EAAc,OAAAC,EAAgB,SAAA63F,CAAA,EAC/E,SAAA8yG,EAAAA,IAAC,MAAA,CAAI,MAAO,CACV,MAAO,oBACP,OAAQ,oBACR,QAAS,MACT,QAAS,OACT,cAAe,QAAA,EAEd,SAAA/xL,EAAAA,CACH,CAAA,CACF,EACF,CAAA,CACF,CAAA,CAAA,EAIJ,GAAIi/Q,EACF,OAAOa,EACL/tF,EAAAA,IAAC2uE,IAAU,QAAS9mS,EAAE,wBAAwB,EAAG,mBAC9C,MAAA,CACC,SAAA,CAAAm4N,EAAAA,IAAC,IAAA,CAAG,SAAAn4N,EAAE,gDAAgD,CAAA,CAAE,EACxDm4N,EAAAA,IAAC,MACE,SAAA6nF,EAAa,IAAI,CAACxwS,GAAOzK,YACvB,KAAA,CACC,SAAA,CAAAmzN,OAAC,SAAA,CAAQ,SAAA,CAAA1oN,GAAM,MAAM,GAAA,EAAC,EAAS,IAAEA,GAAM,OAAA,CAAA,EADhCzK,EAET,CACD,CAAA,CACH,CAAA,CAAA,CACF,CAAA,CACA,CAAA,EAMN,MAAMkgT,GAAUnvS,cAAa+nS,IAAuB,CAClD2H,EAAmB,IAAI,EACvBE,EAAkBnH,EAASV,EAAU,CAAC,EACtC+H,EAAiBpH,EAAQX,EAAU,CAAC,EACpCiI,EAAkB5oS,EAAO,OAAO2gS,EAAU,EAAE,gBAAkB,CAAA,CAAE,EAChEE,EAAWF,EAAU,EACrBoI,EAAepI,EAAU,CAC3B,EAAG,CAAC3gS,EAAO,OAAQ6gS,EAAYkI,CAAc,CAAC,EAE9Cz9J,EAAAA,oBAAoB/yI,EAAK,KAAO,CAC9B,YAAcwpO,IAAoB,CAChCqmE,EAAYrmE,EAAO,CACrB,EACA,YAAc4+D,IAA8B,CACtCA,KAAe,KACjBS,EAAA,EACST,IAAc,GAAKA,GAAa3gS,EAAO,OAAO,QACvD+nS,GAAQpH,EAAU,CAEtB,CAAA,EACA,EAGF8G,GAAsB,CACpB,eAAgBznS,EAAO,SAAS,SAChC,aAAcA,EAAO,OACrB,wBAAyBA,EAAO,SAAS,kBACzC,aAAAkC,EACA,gBAAAo+M,EACA,UAAAqlF,EACA,sBAAAkC,EACA,kBAAArlS,EACA,oBAAAk8M,EACA,8BAAAopF,EACA,KAAAlxS,EACA,QAAAmxS,EAAA,CACD,EAED,MAAMkB,GAA0B5kT,IAAkB,CAChD0jT,GAAQ1jT,EAAK,CACf,EAEM+iT,GAAkCj8R,EAAAA,QAAQ,IAAMnL,EAAO,OAAO,IAAI,CAACY,GAAO/Y,MAAW,CACzF,MAAO+Y,GAAM,MACb,MAAO/Y,EAAA,EACP,EAAG,CAACmY,EAAO,MAAM,CAAC,EAQd6vH,GAAkB1kH,EAAAA,QAAQ,IAAMqqG,IAAYwyL,EAAkB,YAAc13R,EAAS,OACvF,CAACklG,GAAUwyL,EAAmB13R,CAAM,CAAA,EAIlCg1R,GAAYn6R,EAAAA,QAAQ,IACxBnL,EAAO,SAAS,yBAA2BuoS,EACzCttF,EAAAA,IAACmvE,GAAA,CAAS,MAAOnpR,CAAA,CAAkB,EAAK,KACxC,CAACjB,EAAO,SAAS,wBAAyBuoS,EAAgBtnS,CAAgB,CAAA,EAExEmkS,EAAYj6R,EAAAA,QAAQ,IACpBk9R,GAAmB,KACdptF,MAAC2uE,IAAU,QAAS9mS,EAAE,2BAA2B,EAAG,mBACxD,MAAA,CACC,SAAA,CAAAm4N,EAAAA,IAAC,IAAA,CAAG,WAAE,8BAA+B,CAAE,IAAKotF,EAAgB,GAAA,CAAK,EAAE,EAClEA,EAAgB,MAAM,QAAQ,MAAM;AAAA,CAAI,EAAE,IAAI,CAAC3iT,GAAGO,YAAiB,IAAA,CAAU,SAAA,CAAA,IAAEP,GAAE,GAAA,CAAA,EAAPO,EAAQ,CAAO,CAAA,CAAA,CAC5F,CAAA,CACA,EAEKg1N,EAAAA,IAACgxB,GAAA,CACN,IAAK47D,EACL,gBAAiB7nS,EAAO,SAAS,gBACjC,mBAAoBA,EAAO,SAAS,mBACpC,2BAA4BA,EAAO,SAAS,2BAC5C,OAAQ6vH,EAAA,CAAA,EAEX,CAAC7vH,EAAO,SAAS,gBAAiBA,EAAO,SAAS,mBAAoB6vH,GAAiBw4K,EAAiBvlT,CAAC,CAAC,EAEvGuiT,EAAWl6R,EAAAA,QAAQ,IACvBnL,EAAO,SAAS,iBAAmByoS,EACjCxtF,EAAAA,IAACmvE,GAAA,CAAS,MAAOlpR,EAAY,SAAUF,CAAA,CAAc,EAAK,KAC1D,CAAChB,EAAO,SAAS,gBAAiByoS,EAAevnS,EAAYF,CAAY,CAAA,EAEvEgoE,GAAQ79D,EAAAA,QAAQ,IAAMnL,EAAO,SAAS,YAAaY,GAAA,MAAAA,EAAO,aAC7Dm3L,GAAW,MAAX,CAAiB,MAAO,CAAE,KAAM,GAAA,EAAO,MAAO,EAAI,SAAAn3L,EAAM,MAAM,EAAsB,KACnF,CAACZ,EAAO,SAAS,UAAWY,CAAK,CAAA,EAE/B2kS,EAAgBp6R,EAAAA,QAAQ,IAC5BnL,EAAO,SAAS,uBAAwB2oS,GAAA,MAAAA,EAAgB,QACtD1tF,EAAAA,IAAC0jF,GAAA,CAAc,KAAM3+R,EAAO,SAAS,oBAAqB,MAAO2oS,EAAgB,EAAK,KACtF,CAAC3oS,EAAO,SAAS,qBAAsBA,EAAO,SAAS,oBAAqB2oS,CAAc,CAAA,EAIxFz/Q,GAAU/d,EAAAA,QAAQ,IACtB8vM,EAAAA,IAACmrF,GAAA,CACC,UAAAhB,EACA,SAAAC,EACA,UAAAC,GACA,cAAAC,EACA,wBAAyBvlS,EAAO,SAAS,wBACzC,gBAAiBA,EAAO,SAAS,gBACjC,qBAAsBA,EAAO,SAAS,oBAAA,CAAA,EAEvC,CACDolS,EAAWC,EAAUC,GAAWC,EAChCvlS,EAAO,SAAS,wBAAyBA,EAAO,SAAS,gBAAiBA,EAAO,SAAS,oBAAA,CAC3F,EAEKkpS,GAAatwS,EAAAA,YAAY,IAAM,CACnCkwS,EAAc,EAAI,CACpB,EAAG,CAAA,CAAE,EAECK,GAAgBvwS,EAAAA,YAAY,IAAM,CACtCkwS,EAAc,EAAK,CACrB,EAAG,CAAA,CAAE,EAECtvP,GAASruC,EAAAA,QAAQ,IACrB09R,EAAa5tF,EAAAA,IAAC+nF,GAAA,CACZ,wBAAyBhjS,EAAO,SAAS,wBACzC,2BAA4BA,EAAO,SAAS,2BAC5C,QAASmpS,GACT,KAAMN,CAAA,CAAA,EAAiB,KACvB,CAACA,EAAY7oS,EAAO,SAAS,wBAAyBmpS,EAAa,CAAA,EAGjEC,GAASj+R,EAAAA,QAAQ,IACrB8vM,EAAAA,IAAC+rF,GAAA,CACC,kBAAmBhnS,EAAO,OAAO,OAAS,GAAKA,EAAO,SAAS,kBAC/D,YAAaA,EAAO,SAAS,YAC7B,cAAeA,EAAO,SAAS,eAAiB,OAChD,WAAAonS,GACA,uBAAA6B,GACA,cAAA1D,EACA,UAAAD,GACA,SAAAD,EACA,aAAc6D,EAAA,CAAA,EAEf,CACDlpS,EAAO,OAAO,OAAQA,EAAO,SAAS,kBAAmBonS,GAAY6B,GACrE1D,EAAeD,GAAWD,EAAU6D,EAAA,CACrC,EAED,OAAOF,EAAkBhuF,EAAAA,KAAAxxM,EAAAA,SAAA,CACtB,SAAA,CAAA4/R,GACApgO,GACAxvB,GACAtwB,EAAA,CAAA,CACH,CAAG,CAGL,EAEAmgR,GAAep5O,EAAAA,WAA6Ci4O,EAAW","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,11,12,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,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,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,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,679,687,688,689,690,691,698,699,700,701,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,962]}