{"version":3,"file":"RangePicker.cjs","sources":["../../../../../../packages/vue-components/vc-picker/src/RangePicker.tsx"],"sourcesContent":["import type { ChangeEvent, FocusEventHandler, MouseEventHandler, VueNode } from '@antdv/types';\nimport type { GenerateConfig } from './generate';\nimport type {\n  DisabledTimes,\n  EventValue,\n  PanelMode,\n  PickerMode,\n  PresetDate,\n  RangeValue,\n} from './interface';\nimport type { ContextOperationRefProps } from './PanelContext';\nimport type { DateRender } from './panels/DatePanel/DateBody';\nimport type { SharedTimeProps } from './panels/TimePanel';\nimport type { PickerBaseProps, PickerDateProps, PickerTimeProps } from './Picker';\nimport type { PickerPanelProps } from './PickerPanel';\nimport { useElementSize, useMergedState, useState } from '@antdv/hooks';\nimport { classNames, warning } from '@antdv/utils';\nimport {\n  computed,\n  defineComponent,\n  ref,\n  toRef,\n  watch,\n  watchEffect,\n} from 'vue';\nimport useHoverValue from './hooks/useHoverValue';\nimport usePickerInput from './hooks/usePickerInput';\nimport usePresets from './hooks/usePresets';\nimport useRangeDisabled from './hooks/useRangeDisabled';\nimport useRangeViewDates from './hooks/useRangeViewDates';\nimport useTextValueMapping from './hooks/useTextValueMapping';\nimport useValueTexts from './hooks/useValueTexts';\nimport { useProvidePanel } from './PanelContext';\nimport PickerPanel from './PickerPanel';\nimport PickerTrigger from './PickerTrigger';\nimport PresetPanel from './PresetPanel';\nimport { RangeContextProvider } from './RangeContext';\nimport {\n  formatValue,\n  getClosingViewDate,\n  isEqual,\n  isSameDate,\n  isSameQuarter,\n  isSameWeek,\n  parseValue,\n} from './utils/dateUtil';\nimport getExtraFooter from './utils/getExtraFooter';\nimport getRanges from './utils/getRanges';\nimport getDataOrAriaProps, { getValue, toArray, updateValues } from './utils/miscUtil';\nimport { elementsContains, getDefaultFormat, getInputSize } from './utils/uiUtil';\nimport { legacyPropsWarning } from './utils/warnUtil';\n\nfunction reorderValues<DateType>(\n  values: RangeValue<DateType>,\n  generateConfig: GenerateConfig<DateType>,\n): RangeValue<DateType> {\n  if (values && values[0] && values[1] && generateConfig.isAfter(values[0], values[1]))\n    return [values[1], values[0]];\n\n  return values;\n}\n\nfunction canValueTrigger<DateType>(\n  value: EventValue<DateType>,\n  index: number,\n  disabled: [boolean, boolean],\n  allowEmpty?: [boolean, boolean] | null,\n): boolean {\n  if (value)\n    return true;\n\n  if (allowEmpty && allowEmpty[index])\n    return true;\n\n  if (disabled[(index + 1) % 2])\n    return true;\n\n  return false;\n}\n\nexport type RangeType = 'start' | 'end';\n\nexport interface RangeInfo {\n  range: RangeType;\n}\n\nexport type RangeDateRender<DateType> = (props: {\n  current: DateType;\n  today: DateType;\n  info: RangeInfo;\n}) => VueNode;\n\nexport interface RangePickerSharedProps<DateType> {\n  id?: string;\n  value?: RangeValue<DateType>;\n  defaultValue?: RangeValue<DateType>;\n  defaultPickerValue?: [DateType, DateType];\n  placeholder?: [string, string];\n  disabled?: boolean | [boolean, boolean];\n  disabledTime?: (date: EventValue<DateType>, type: RangeType) => DisabledTimes;\n  presets?: Array<PresetDate<RangeValue<DateType>>>;\n  /** @deprecated Please use `presets` instead */\n  ranges?: Record<\n    string,\n    Exclude<RangeValue<DateType>, null> | (() => Exclude<RangeValue<DateType>, null>)\n  >;\n  separator?: VueNode;\n  allowEmpty?: [boolean, boolean];\n  mode?: [PanelMode, PanelMode];\n  onChange?: (values: RangeValue<DateType>, formatString: [string, string]) => void;\n  onCalendarChange?: (\n    values: RangeValue<DateType>,\n    formatString: [string, string],\n    info: RangeInfo,\n  ) => void;\n  onPanelChange?: (values: RangeValue<DateType>, modes: [PanelMode, PanelMode]) => void;\n  onFocus?: FocusEventHandler;\n  onBlur?: FocusEventHandler;\n  onMousedown?: MouseEventHandler;\n  onMouseup?: MouseEventHandler;\n  onMouseenter?: MouseEventHandler;\n  onMouseleave?: MouseEventHandler;\n  onClick?: MouseEventHandler;\n  onOk?: (dates: RangeValue<DateType>) => void;\n  direction?: 'ltr' | 'rtl';\n  autocomplete?: string;\n  /** @private Internal control of active picker. Do not use since it's private usage */\n  activePickerIndex?: 0 | 1;\n  dateRender?: RangeDateRender<DateType>;\n  panelRender?: (originPanel: VueNode) => VueNode;\n  prevIcon?: VueNode;\n  nextIcon?: VueNode;\n  superPrevIcon?: VueNode;\n  superNextIcon?: VueNode;\n}\n\ntype OmitPickerProps<Props> = Omit<\n  Props,\n  | 'value'\n  | 'defaultValue'\n  | 'defaultPickerValue'\n  | 'placeholder'\n  | 'disabled'\n  | 'disabledTime'\n  | 'showToday'\n  | 'showTime'\n  | 'mode'\n  | 'onChange'\n  | 'onSelect'\n  | 'onPanelChange'\n  | 'pickerValue'\n  | 'onPickerValueChange'\n  | 'onOk'\n  | 'dateRender'\n  | 'presets'\n>;\n\ntype RangeShowTimeObject<DateType> = Omit<SharedTimeProps<DateType>, 'defaultValue'> & {\n  defaultValue?: DateType[];\n};\n\nexport type RangePickerBaseProps<DateType> = {} & RangePickerSharedProps<DateType> &\n  OmitPickerProps<PickerBaseProps<DateType>>;\n\nexport type RangePickerDateProps<DateType> = {\n  showTime?: boolean | RangeShowTimeObject<DateType>;\n} & RangePickerSharedProps<DateType> &\n  OmitPickerProps<PickerDateProps<DateType>>;\n\nexport type RangePickerTimeProps<DateType> = {\n  order?: boolean;\n} & RangePickerSharedProps<DateType> &\n  OmitPickerProps<PickerTimeProps<DateType>>;\n\nexport type RangePickerProps<DateType> =\n  | RangePickerBaseProps<DateType>\n  | RangePickerDateProps<DateType>\n  | RangePickerTimeProps<DateType>;\n\n// TMP type to fit for ts 3.9.2\ntype OmitType<DateType> = Omit<RangePickerBaseProps<DateType>, 'picker'> &\n  Omit<RangePickerDateProps<DateType>, 'picker'> &\n  Omit<RangePickerTimeProps<DateType>, 'picker'>;\n\ntype MergedRangePickerProps<DateType> = {\n  picker?: PickerMode;\n} & OmitType<DateType>;\nfunction RangerPicker<DateType>() {\n  return defineComponent<MergedRangePickerProps<DateType>>({\n    name: 'RangerPicker',\n    inheritAttrs: false,\n    props: [\n      'prefixCls',\n      'id',\n      'popupStyle',\n      'dropdownClassName',\n      'transitionName',\n      'dropdownAlign',\n      'getPopupContainer',\n      'generateConfig',\n      'locale',\n      'placeholder',\n      'autofocus',\n      'disabled',\n      'format',\n      'picker',\n      'showTime',\n      'showNow',\n      'showHour',\n      'showMinute',\n      'showSecond',\n      'use12Hours',\n      'separator',\n      'value',\n      'defaultValue',\n      'defaultPickerValue',\n      'open',\n      'defaultOpen',\n      'disabledDate',\n      'disabledTime',\n      'dateRender',\n      'panelRender',\n      'ranges',\n      'allowEmpty',\n      'allowClear',\n      'suffixIcon',\n      'clearIcon',\n      'pickerRef',\n      'inputReadOnly',\n      'mode',\n      'renderExtraFooter',\n      'onChange',\n      'onOpenChange',\n      'onPanelChange',\n      'onCalendarChange',\n      'onFocus',\n      'onBlur',\n      'onMousedown',\n      'onMouseup',\n      'onMouseenter',\n      'onMouseleave',\n      'onClick',\n      'onOk',\n      'onKeydown',\n      'components',\n      'order',\n      'direction',\n      'activePickerIndex',\n      'autocomplete',\n      'minuteStep',\n      'hourStep',\n      'secondStep',\n      'hideDisabledOptions',\n      'disabledMinutes',\n      'presets',\n      'prevIcon',\n      'nextIcon',\n      'superPrevIcon',\n      'superNextIcon',\n    ] as any,\n    setup(props, { attrs, expose }) {\n      const needConfirmButton = computed(\n        () => (props.picker === 'date' && !!props.showTime) || props.picker === 'time',\n      );\n      const presets = computed(() => props.presets);\n      const ranges = computed(() => props.ranges);\n      const presetList = usePresets(presets, ranges);\n      // We record oqqpened status here in case repeat open with picker\n      const openRecordsRef = ref<Record<number, boolean>>({});\n\n      const containerRef = ref<HTMLDivElement>(null);\n      const panelDivRef = ref<HTMLDivElement>(null);\n      const startInputDivRef = ref<HTMLDivElement>(null);\n      const endInputDivRef = ref<HTMLDivElement>(null);\n      const separatorRef = ref<HTMLDivElement>(null);\n      const startInputRef = ref<HTMLInputElement>(null);\n      const endInputRef = ref<HTMLInputElement>(null);\n      const arrowRef = ref<HTMLDivElement>(null);\n\n      // ============================ Warning ============================\n      if (process.env.NODE_ENV !== 'production')\n        legacyPropsWarning(props);\n\n      // ============================= Misc ==============================\n      const formatList = computed(() =>\n        toArray(\n          getDefaultFormat<DateType>(props.format, props.picker, props.showTime, props.use12Hours),\n        ),\n      );\n\n      // Active picker\n      const [mergedActivePickerIndex, setMergedActivePickerIndex] = useMergedState<0 | 1>(0, {\n        value: toRef(props, 'activePickerIndex'),\n      });\n\n      // Operation ref\n      const operationRef = ref<ContextOperationRefProps>(null);\n\n      const mergedDisabled = computed<[boolean, boolean]>(() => {\n        const { disabled } = props;\n        if (Array.isArray(disabled))\n          return disabled;\n\n        return [disabled || false, disabled || false];\n      });\n\n      // ============================= Value =============================\n      const [mergedValue, setInnerValue] = useMergedState<RangeValue<DateType>>(null, {\n        value: toRef(props, 'value'),\n        defaultValue: props.defaultValue,\n        postState: values =>\n          props.picker === 'time' && !props.order\n            ? values\n            : reorderValues(values, props.generateConfig),\n      });\n\n      // =========================== View Date ===========================\n      // Config view panel\n      const [startViewDate, endViewDate, setViewDate] = useRangeViewDates({\n        values: mergedValue,\n        picker: toRef(props, 'picker'),\n        defaultDates: props.defaultPickerValue,\n        generateConfig: toRef(props, 'generateConfig'),\n      });\n\n      // ========================= Select Values =========================\n      const [selectedValue, setSelectedValue] = useMergedState(mergedValue.value, {\n        postState: (values) => {\n          let postValues = values;\n\n          if (mergedDisabled.value[0] && mergedDisabled.value[1])\n            return postValues;\n\n          // Fill disabled unit\n          for (let i = 0; i < 2; i += 1) {\n            if (\n              mergedDisabled.value[i]\n              && !getValue(postValues, i)\n              && !getValue(props.allowEmpty, i)\n            ) {\n              postValues = updateValues(postValues, props.generateConfig.getNow(), i);\n            }\n          }\n          return postValues;\n        },\n      });\n\n      // ============================= Modes =============================\n      const [mergedModes, setInnerModes] = useMergedState<[PanelMode, PanelMode]>(\n        [props.picker, props.picker],\n        {\n          value: toRef(props, 'mode'),\n        },\n      );\n\n      watch(\n        () => props.picker,\n        () => {\n          setInnerModes([props.picker, props.picker]);\n        },\n      );\n\n      const triggerModesChange = (modes: [PanelMode, PanelMode], values: RangeValue<DateType>) => {\n        setInnerModes(modes);\n        props.onPanelChange?.(values, modes);\n      };\n\n      // ========================= Disable Date ==========================\n      const [disabledStartDate, disabledEndDate] = useRangeDisabled(\n        {\n          picker: toRef(props, 'picker'),\n          selectedValue,\n          locale: toRef(props, 'locale'),\n          disabled: mergedDisabled,\n          disabledDate: toRef(props, 'disabledDate'),\n          generateConfig: toRef(props, 'generateConfig'),\n        },\n        openRecordsRef,\n      );\n\n      // ============================= Open ==============================\n      const [mergedOpen, triggerInnerOpen] = useMergedState(false, {\n        value: toRef(props, 'open'),\n        defaultValue: props.defaultOpen,\n        postState: postOpen =>\n          mergedDisabled.value[mergedActivePickerIndex.value] ? false : postOpen,\n        onChange: (newOpen) => {\n          props.onOpenChange?.(newOpen);\n\n          if (!newOpen && operationRef.value && operationRef.value.onClose)\n            operationRef.value.onClose();\n        },\n      });\n\n      const startOpen = computed(() => mergedOpen.value && mergedActivePickerIndex.value === 0);\n      const endOpen = computed(() => mergedOpen.value && mergedActivePickerIndex.value === 1);\n      const panelLeft = ref(0);\n      const arrowLeft = ref(0);\n      // ============================= Popup =============================\n      // Popup min width\n      const popupMinWidth = ref(0);\n      const { width: containerWidth } = useElementSize(containerRef);\n      watch([mergedOpen, containerWidth], () => {\n        if (!mergedOpen.value && containerRef.value)\n          popupMinWidth.value = containerWidth.value;\n      });\n      const { width: panelDivWidth } = useElementSize(panelDivRef);\n      const { width: arrowWidth } = useElementSize(arrowRef);\n      const { width: startInputDivWidth } = useElementSize(startInputDivRef);\n      const { width: separatorWidth } = useElementSize(separatorRef);\n      watch(\n        [\n          mergedActivePickerIndex,\n          mergedOpen,\n          panelDivWidth,\n          arrowWidth,\n          startInputDivWidth,\n          separatorWidth,\n          () => props.direction,\n        ],\n        () => {\n          arrowLeft.value = 0;\n          if (mergedActivePickerIndex.value) {\n            if (startInputDivRef.value && separatorRef.value) {\n              arrowLeft.value = startInputDivWidth.value + separatorWidth.value;\n              if (\n                panelDivWidth.value\n                && arrowWidth.value\n                && arrowLeft.value\n                  > panelDivWidth.value\n                    - arrowWidth.value\n                    - (props.direction === 'rtl' || arrowRef.value.offsetLeft > arrowLeft.value\n                      ? 0\n                      : arrowRef.value.offsetLeft)\n              ) {\n                panelLeft.value = arrowLeft.value;\n              }\n            }\n          } else if (mergedActivePickerIndex.value === 0) {\n            panelLeft.value = 0;\n          }\n        },\n        { immediate: true },\n      );\n\n      // ============================ Trigger ============================\n      const triggerRef = ref<any>();\n\n      function triggerOpen(newOpen: boolean, index: 0 | 1) {\n        if (newOpen) {\n          clearTimeout(triggerRef.value);\n          openRecordsRef.value[index] = true;\n\n          setMergedActivePickerIndex(index);\n          triggerInnerOpen(newOpen);\n\n          // Open to reset view date\n          if (!mergedOpen.value)\n            setViewDate(null, index);\n        } else if (mergedActivePickerIndex.value === index) {\n          triggerInnerOpen(newOpen);\n\n          // Clean up async\n          // This makes ref not quick refresh in case user open another input with blur trigger\n          const openRecords = openRecordsRef.value;\n          triggerRef.value = setTimeout(() => {\n            if (openRecords === openRecordsRef.value)\n              openRecordsRef.value = {};\n          });\n        }\n      }\n\n      function triggerOpenAndFocus(index: 0 | 1) {\n        triggerOpen(true, index);\n        // Use setTimeout to make sure panel DOM exists\n        setTimeout(() => {\n          const inputRef = [startInputRef, endInputRef][index];\n          if (inputRef.value)\n            inputRef.value.focus();\n        }, 0);\n      }\n\n      function triggerChange(newValue: RangeValue<DateType> | (() => RangeValue<DateType>), sourceIndex: 0 | 1) {\n        const isfunction = typeof newValue === 'function';\n        let values = isfunction ? newValue() : newValue;\n        let startValue = getValue(values, 0);\n        let endValue = getValue(values, 1);\n        const {\n          generateConfig,\n          locale,\n          picker,\n          order,\n          onCalendarChange,\n          allowEmpty,\n          onChange,\n          showTime,\n        } = props;\n\n        // >>>>> Format start & end values\n        if (startValue && endValue && generateConfig.isAfter(startValue, endValue)) {\n          if (\n            // WeekPicker only compare week\n            (picker === 'week'\n              && !isSameWeek(generateConfig, locale.locale, startValue, endValue))\n            // QuotaPicker only compare week\n            || (picker === 'quarter' && !isSameQuarter(generateConfig, startValue, endValue))\n            // Other non-TimePicker compare date\n            || (picker !== 'week'\n              && picker !== 'quarter'\n              && picker !== 'time'\n              && !(showTime\n                ? isEqual(generateConfig, startValue, endValue)\n                : isSameDate(generateConfig, startValue, endValue)))\n          ) {\n            // Clean up end date when start date is after end date\n            if (sourceIndex === 0) {\n              values = [startValue, null];\n              endValue = null;\n            } else {\n              startValue = null;\n              values = [null, endValue];\n            }\n\n            // Clean up cache since invalidate\n            openRecordsRef.value = {\n              [sourceIndex]: true,\n            };\n          } else if (picker !== 'time' || order !== false) {\n            // Reorder when in same date\n            values = reorderValues(values, generateConfig);\n          }\n        }\n\n        setSelectedValue(values);\n\n        const startStr\n          = values && values[0]\n            ? formatValue(values[0], { generateConfig, locale, format: formatList.value[0] })\n            : '';\n        const endStr\n          = values && values[1]\n            ? formatValue(values[1], { generateConfig, locale, format: formatList.value[0] })\n            : '';\n        if (onCalendarChange) {\n          const info: RangeInfo = { range: sourceIndex === 0 ? 'start' : 'end' };\n\n          onCalendarChange(values, [startStr, endStr], info);\n        }\n\n        // >>>>> Trigger `onChange` event\n        const canStartValueTrigger = canValueTrigger(\n          startValue,\n          0,\n          mergedDisabled.value,\n          allowEmpty,\n        );\n        const canEndValueTrigger = canValueTrigger(endValue, 1, mergedDisabled.value, allowEmpty);\n\n        const canTrigger = values === null || (canStartValueTrigger && canEndValueTrigger);\n\n        if (canTrigger) {\n          // Trigger onChange only when value is validate\n          setInnerValue(values);\n\n          if (\n            onChange\n            && (!isEqual(generateConfig, getValue(mergedValue.value, 0), startValue)\n              || !isEqual(generateConfig, getValue(mergedValue.value, 1), endValue))\n          ) {\n            onChange(values, [startStr, endStr]);\n          }\n        }\n\n        // >>>>> Open picker when\n\n        // Always open another picker if possible\n        let nextOpenIndex: 0 | 1 = null;\n        if (sourceIndex === 0 && !mergedDisabled.value[1])\n          nextOpenIndex = 1;\n        else if (sourceIndex === 1 && !mergedDisabled.value[0])\n          nextOpenIndex = 0;\n\n        if (\n          nextOpenIndex !== null\n          && nextOpenIndex !== mergedActivePickerIndex.value\n          && (!openRecordsRef.value[nextOpenIndex] || !getValue(values, nextOpenIndex))\n          && getValue(values, sourceIndex)\n        ) {\n          // Delay to focus to avoid input blur trigger expired selectedValues\n          triggerOpenAndFocus(nextOpenIndex);\n        } else {\n          triggerOpen(false, sourceIndex);\n        }\n      }\n\n      const forwardKeydown = (e: KeyboardEvent) => {\n        if (mergedOpen && operationRef.value && operationRef.value.onKeydown) {\n          // Let popup panel handle keyboard\n          return operationRef.value.onKeydown(e);\n        }\n\n        /* istanbul ignore next */\n        /* eslint-disable no-lone-blocks */\n        {\n          warning(\n            false,\n            'Picker not correct forward Keydown operation. Please help to fire issue about this.',\n          );\n          return false;\n        }\n      };\n\n      // ============================= Text ==============================\n      const sharedTextHooksProps = {\n        formatList,\n        generateConfig: toRef(props, 'generateConfig'),\n        locale: toRef(props, 'locale'),\n      };\n\n      const [startValueTexts, firstStartValueText] = useValueTexts<DateType>(\n        computed(() => getValue(selectedValue.value, 0)),\n        sharedTextHooksProps,\n      );\n\n      const [endValueTexts, firstEndValueText] = useValueTexts<DateType>(\n        computed(() => getValue(selectedValue.value, 1)),\n        sharedTextHooksProps,\n      );\n\n      const onTextChange = (newText: string, index: 0 | 1) => {\n        const inputDate = parseValue(newText, {\n          locale: props.locale,\n          formatList: formatList.value,\n          generateConfig: props.generateConfig,\n        });\n\n        const disabledFunc = index === 0 ? disabledStartDate : disabledEndDate;\n\n        if (inputDate && !disabledFunc(inputDate)) {\n          setSelectedValue(updateValues(selectedValue.value, inputDate, index));\n          setViewDate(inputDate, index);\n        }\n      };\n\n      const [startText, triggerStartTextChange, resetStartText] = useTextValueMapping({\n        valueTexts: startValueTexts,\n        onTextChange: newText => onTextChange(newText, 0),\n      });\n\n      const [endText, triggerEndTextChange, resetEndText] = useTextValueMapping({\n        valueTexts: endValueTexts,\n        onTextChange: newText => onTextChange(newText, 1),\n      });\n\n      const [rangeHoverValue, setRangeHoverValue] = useState<RangeValue<DateType>>(null);\n\n      // ========================== Hover Range ==========================\n      const [hoverRangedValue, setHoverRangedValue] = useState<RangeValue<DateType>>(null);\n\n      const [startHoverValue, onStartEnter, onStartLeave] = useHoverValue(\n        startText,\n        sharedTextHooksProps,\n      );\n\n      const [endHoverValue, onEndEnter, onEndLeave] = useHoverValue(endText, sharedTextHooksProps);\n\n      const onDateMouseenter = (date: DateType) => {\n        setHoverRangedValue(updateValues(selectedValue.value, date, mergedActivePickerIndex.value));\n        if (mergedActivePickerIndex.value === 0)\n          onStartEnter(date);\n        else\n          onEndEnter(date);\n      };\n\n      const onDateMouseleave = () => {\n        setHoverRangedValue(updateValues(selectedValue.value, null, mergedActivePickerIndex.value));\n        if (mergedActivePickerIndex.value === 0)\n          onStartLeave();\n        else\n          onEndLeave();\n      };\n\n      // ============================= Input =============================\n      const getSharedInputHookProps = (index: 0 | 1, resetText: () => void) => ({\n        forwardKeydown,\n        onBlur: (e: FocusEvent) => {\n          props.onBlur?.(e);\n        },\n        isClickOutside: (target: EventTarget | null) =>\n          !elementsContains(\n            [panelDivRef.value, startInputDivRef.value, endInputDivRef.value, containerRef.value],\n            target as HTMLElement,\n          ),\n        onFocus: (e: FocusEvent) => {\n          setMergedActivePickerIndex(index);\n          props.onFocus?.(e);\n        },\n        triggerOpen: (newOpen: boolean) => {\n          triggerOpen(newOpen, index);\n        },\n        onSubmit: () => {\n          if (\n            // When user typing disabledDate with keyboard and enter, this value will be empty\n            !selectedValue.value\n            // Normal disabled check\n            || (props.disabledDate && props.disabledDate(selectedValue.value[index]))\n          ) {\n            return false;\n          }\n\n          triggerChange(selectedValue.value, index);\n          resetText();\n        },\n        onCancel: () => {\n          triggerOpen(false, index);\n          setSelectedValue(mergedValue.value);\n          resetText();\n        },\n      });\n\n      const [startInputProps, { focused: startFocused, typing: startTyping }] = usePickerInput({\n        ...getSharedInputHookProps(0, resetStartText),\n        blurToCancel: needConfirmButton,\n        open: startOpen,\n        value: startText,\n        onKeydown: (e, preventDefault) => {\n          props.onKeydown?.(e, preventDefault);\n        },\n      });\n\n      const [endInputProps, { focused: endFocused, typing: endTyping }] = usePickerInput({\n        ...getSharedInputHookProps(1, resetEndText),\n        blurToCancel: needConfirmButton,\n        open: endOpen,\n        value: endText,\n        onKeydown: (e, preventDefault) => {\n          props.onKeydown?.(e, preventDefault);\n        },\n      });\n\n      // ========================== Click Picker ==========================\n      const onPickerClick = (e: MouseEvent) => {\n        // When click inside the picker & outside the picker's input elements\n        // the panel should still be opened\n        props.onClick?.(e);\n        if (\n          !mergedOpen.value\n          && !startInputRef.value.contains(e.target as Node)\n          && !endInputRef.value.contains(e.target as Node)\n        ) {\n          if (!mergedDisabled.value[0])\n            triggerOpenAndFocus(0);\n          else if (!mergedDisabled.value[1])\n            triggerOpenAndFocus(1);\n        }\n      };\n\n      const onPickerMousedown = (e: MouseEvent) => {\n        // shouldn't affect input elements if picker is active\n        props.onMousedown?.(e);\n        if (\n          mergedOpen.value\n          && (startFocused.value || endFocused.value)\n          && !startInputRef.value.contains(e.target as Node)\n          && !endInputRef.value.contains(e.target as Node)\n        ) {\n          e.preventDefault();\n        }\n      };\n\n      // ============================= Sync ==============================\n      // Close should sync back with text value\n      const startStr = computed(() =>\n        mergedValue.value?.[0]\n          ? formatValue(mergedValue.value[0], {\n              locale: props.locale,\n              format: 'YYYYMMDDHHmmss',\n              generateConfig: props.generateConfig,\n            })\n          : '',\n      );\n      const endStr = computed(() =>\n        mergedValue.value?.[1]\n          ? formatValue(mergedValue.value[1], {\n              locale: props.locale,\n              format: 'YYYYMMDDHHmmss',\n              generateConfig: props.generateConfig,\n            })\n          : '',\n      );\n\n      watch([mergedOpen, startValueTexts, endValueTexts], () => {\n        if (!mergedOpen.value) {\n          setSelectedValue(mergedValue.value);\n\n          if (!startValueTexts.value.length || startValueTexts.value[0] === '')\n            triggerStartTextChange('');\n          else if (firstStartValueText.value !== startText.value)\n            resetStartText();\n\n          if (!endValueTexts.value.length || endValueTexts.value[0] === '')\n            triggerEndTextChange('');\n          else if (firstEndValueText.value !== endText.value)\n            resetEndText();\n        }\n      });\n\n      // Sync innerValue with control mode\n      watch([startStr, endStr], () => {\n        setSelectedValue(mergedValue.value);\n      });\n\n      // ============================ Warning ============================\n      if (process.env.NODE_ENV !== 'production') {\n        watchEffect(() => {\n          const { value, disabled } = props;\n          if (\n            value\n            && Array.isArray(disabled)\n            && ((getValue(disabled, 0) && !getValue(value, 0))\n              || (getValue(disabled, 1) && !getValue(value, 1)))\n          ) {\n            warning(\n              false,\n              '`disabled` should not set with empty `value`. You should set `allowEmpty` or `value` instead.',\n            );\n          }\n        });\n      }\n\n      expose({\n        focus: () => {\n          if (startInputRef.value)\n            startInputRef.value.focus();\n        },\n        blur: () => {\n          if (startInputRef.value)\n            startInputRef.value.blur();\n\n          if (endInputRef.value)\n            endInputRef.value.blur();\n        },\n      });\n\n      // ============================= Panel =============================\n      const panelHoverRangedValue = computed(() => {\n        if (\n          mergedOpen.value\n          && hoverRangedValue.value\n          && hoverRangedValue.value[0]\n          && hoverRangedValue.value[1]\n          && props.generateConfig.isAfter(hoverRangedValue.value[1], hoverRangedValue.value[0])\n        ) {\n          return hoverRangedValue.value;\n        }\n        else {\n          return null;\n        }\n      });\n      function renderPanel(\n        panelPosition: 'left' | 'right' | false = false,\n        panelProps: Partial<PickerPanelProps<DateType>> = {},\n      ) {\n        const { generateConfig, showTime, dateRender, direction, disabledTime, prefixCls, locale }\n          = props;\n\n        let panelShowTime: boolean | SharedTimeProps<DateType> | undefined\n          = showTime as SharedTimeProps<DateType>;\n        if (showTime && typeof showTime === 'object' && showTime.defaultValue) {\n          const timeDefaultValues: DateType[] = showTime.defaultValue!;\n          panelShowTime = {\n            ...showTime,\n            defaultValue: getValue(timeDefaultValues, mergedActivePickerIndex.value) || undefined,\n          };\n        }\n\n        let panelDateRender: DateRender<DateType> | null = null;\n        if (dateRender) {\n          panelDateRender = ({ current: date, today }) =>\n            dateRender({\n              current: date,\n              today,\n              info: {\n                range: mergedActivePickerIndex.value ? 'end' : 'start',\n              },\n            });\n        }\n\n        return (\n          <RangeContextProvider\n            value={{\n              inRange: true,\n              panelPosition,\n              rangedValue: rangeHoverValue.value || selectedValue.value,\n              hoverRangedValue: panelHoverRangedValue.value,\n            }}\n          >\n            <PickerPanel<DateType>\n              {...(props as any)}\n              {...panelProps}\n              dateRender={panelDateRender}\n              showTime={panelShowTime}\n              mode={mergedModes.value[mergedActivePickerIndex.value]}\n              generateConfig={generateConfig}\n              style={undefined}\n              direction={direction}\n              disabledDate={\n                mergedActivePickerIndex.value === 0 ? disabledStartDate : disabledEndDate\n              }\n              disabledTime={(date) => {\n                if (disabledTime)\n                  return disabledTime(date, mergedActivePickerIndex.value === 0 ? 'start' : 'end');\n\n                return false;\n              }}\n              class={classNames({\n                [`${prefixCls}-panel-focused`]:\n                  mergedActivePickerIndex.value === 0 ? !startTyping.value : !endTyping.value,\n              })}\n              value={getValue(selectedValue.value, mergedActivePickerIndex.value)}\n              locale={locale}\n              tabIndex={-1}\n              onPanelChange={(date, newMode) => {\n                // clear hover value when panel change\n                if (mergedActivePickerIndex.value === 0)\n                  onStartLeave(true);\n\n                if (mergedActivePickerIndex.value === 1)\n                  onEndLeave(true);\n\n                triggerModesChange(\n                  updateValues(mergedModes.value, newMode, mergedActivePickerIndex.value),\n                  updateValues(selectedValue.value, date, mergedActivePickerIndex.value),\n                );\n\n                let viewDate = date;\n                if (\n                  panelPosition === 'right'\n                  && mergedModes.value[mergedActivePickerIndex.value] === newMode\n                ) {\n                  viewDate = getClosingViewDate(viewDate, newMode as any, generateConfig, -1);\n                }\n\n                setViewDate(viewDate, mergedActivePickerIndex.value);\n              }}\n              onOk={null}\n              onSelect={undefined}\n              onChange={undefined}\n              defaultValue={\n                mergedActivePickerIndex.value === 0\n                  ? getValue(selectedValue.value, 1)\n                  : getValue(selectedValue.value, 0)\n              }\n            />\n          </RangeContextProvider>\n        );\n      }\n\n      const onContextSelect = (date: DateType, type: 'key' | 'mouse' | 'submit') => {\n        const values = updateValues(selectedValue.value, date, mergedActivePickerIndex.value);\n\n        if (type === 'submit' || (type !== 'key' && !needConfirmButton.value)) {\n          // triggerChange will also update selected values\n          triggerChange(values, mergedActivePickerIndex.value);\n          // clear hover value style\n          if (mergedActivePickerIndex.value === 0)\n            onStartLeave();\n          else\n            onEndLeave();\n        } else {\n          setSelectedValue(values);\n        }\n      };\n\n      useProvidePanel({\n        operationRef,\n        hideHeader: computed(() => props.picker === 'time'),\n        onDateMouseenter,\n        onDateMouseleave,\n        hideRanges: computed(() => true),\n        onSelect: onContextSelect,\n        open: mergedOpen,\n      });\n\n      return () => {\n        const {\n          prefixCls = 'rc-picker',\n          id,\n          popupStyle,\n          dropdownClassName,\n          transitionName,\n          dropdownAlign,\n          getPopupContainer,\n          generateConfig,\n          locale,\n          placeholder,\n          autofocus,\n          picker = 'date',\n          showTime,\n          separator = '~',\n          disabledDate,\n          panelRender,\n          allowClear,\n          suffixIcon,\n          clearIcon,\n          inputReadOnly,\n          renderExtraFooter,\n          onMouseenter,\n          onMouseleave,\n          onMouseup,\n          onOk,\n          components,\n          direction,\n          autocomplete = 'off',\n        } = props;\n\n        const arrowPositionStyle\n          = direction === 'rtl'\n            ? { right: `${arrowLeft.value}px` }\n            : { left: `${arrowLeft.value}px` };\n\n        function renderPanels() {\n          let panels: VueNode;\n          const extraNode = getExtraFooter(\n            prefixCls,\n            mergedModes.value[mergedActivePickerIndex.value],\n            renderExtraFooter,\n          );\n\n          const rangesNode = getRanges({\n            prefixCls,\n            components,\n            needConfirmButton: needConfirmButton.value,\n            okDisabled:\n              !getValue(selectedValue.value, mergedActivePickerIndex.value)\n              || (disabledDate && disabledDate(selectedValue.value[mergedActivePickerIndex.value])),\n            locale,\n            onOk: () => {\n              if (getValue(selectedValue.value, mergedActivePickerIndex.value)) {\n                // triggerChangeOld(selectedValue.value);\n                triggerChange(selectedValue.value, mergedActivePickerIndex.value);\n                if (onOk)\n                  onOk(selectedValue.value);\n              }\n            },\n          });\n\n          if (picker !== 'time' && !showTime) {\n            const viewDate\n              = mergedActivePickerIndex.value === 0 ? startViewDate.value : endViewDate.value;\n            const nextViewDate = getClosingViewDate(viewDate, picker, generateConfig);\n            const currentMode = mergedModes.value[mergedActivePickerIndex.value];\n\n            const showDoublePanel = currentMode === picker;\n            const leftPanel = renderPanel(showDoublePanel ? 'left' : false, {\n              pickerValue: viewDate,\n              onPickerValueChange: (newViewDate) => {\n                setViewDate(newViewDate, mergedActivePickerIndex.value);\n              },\n            });\n            const rightPanel = renderPanel('right', {\n              pickerValue: nextViewDate,\n              onPickerValueChange: (newViewDate) => {\n                setViewDate(\n                  getClosingViewDate(newViewDate, picker, generateConfig, -1),\n                  mergedActivePickerIndex.value,\n                );\n              },\n            });\n\n            if (direction === 'rtl') {\n              panels = (\n                <>\n                  {rightPanel}\n                  {showDoublePanel && leftPanel}\n                </>\n              );\n            } else {\n              panels = (\n                <>\n                  {leftPanel}\n                  {showDoublePanel && rightPanel}\n                </>\n              );\n            }\n          } else {\n            panels = renderPanel();\n          }\n\n          let mergedNodes: VueNode = (\n            <div class={`${prefixCls}-panel-layout`}>\n              <PresetPanel\n                prefixCls={prefixCls}\n                presets={presetList.value}\n                onClick={(nextValue) => {\n                  triggerChange(nextValue, null);\n                  triggerOpen(false, mergedActivePickerIndex.value);\n                }}\n                onHover={(hoverValue) => {\n                  setRangeHoverValue(hoverValue);\n                }}\n              />\n              <div>\n                <div class={`${prefixCls}-panels`}>{panels}</div>\n                {(extraNode || rangesNode) && (\n                  <div class={`${prefixCls}-footer`}>\n                    {extraNode}\n                    {rangesNode}\n                  </div>\n                )}\n              </div>\n            </div>\n          );\n\n          if (panelRender)\n            mergedNodes = panelRender(mergedNodes);\n\n          return (\n            <div\n              class={`${prefixCls}-panel-container`}\n              style={{ marginLeft: `${panelLeft.value}px` }}\n              ref={panelDivRef}\n              onMousedown={(e) => {\n                e.preventDefault();\n              }}\n            >\n              {mergedNodes}\n            </div>\n          );\n        }\n\n        const rangePanel = (\n          <div\n            class={classNames(`${prefixCls}-range-wrapper`, `${prefixCls}-${picker}-range-wrapper`)}\n            style={{ minWidth: `${popupMinWidth.value}px` }}\n          >\n            <div ref={arrowRef} class={`${prefixCls}-range-arrow`} style={arrowPositionStyle} />\n            {renderPanels()}\n          </div>\n        );\n\n        // ============================= Icons =============================\n        let suffixNode: VueNode;\n        if (suffixIcon)\n          suffixNode = <span class={`${prefixCls}-suffix`}>{suffixIcon}</span>;\n\n        let clearNode: VueNode;\n        if (\n          allowClear\n          && ((getValue(mergedValue.value, 0) && !mergedDisabled.value[0])\n            || (getValue(mergedValue.value, 1) && !mergedDisabled.value[1]))\n        ) {\n          clearNode = (\n            <span\n              onMousedown={(e) => {\n                e.preventDefault();\n                e.stopPropagation();\n              }}\n              onMouseup={(e) => {\n                e.preventDefault();\n                e.stopPropagation();\n                let values = mergedValue.value;\n\n                if (!mergedDisabled.value[0])\n                  values = updateValues(values, null, 0);\n\n                if (!mergedDisabled.value[1])\n                  values = updateValues(values, null, 1);\n\n                triggerChange(values, null);\n                triggerOpen(false, mergedActivePickerIndex.value);\n              }}\n              class={`${prefixCls}-clear`}\n            >\n              {clearIcon || <span class={`${prefixCls}-clear-btn`} />}\n            </span>\n          );\n        }\n\n        const inputSharedProps = {\n          size: getInputSize(picker, formatList.value[0], generateConfig),\n        };\n\n        let activeBarLeft = 0;\n        let activeBarWidth = 0;\n        if (startInputDivRef.value && endInputDivRef.value && separatorRef.value) {\n          if (mergedActivePickerIndex.value === 0) {\n            activeBarWidth = startInputDivRef.value.offsetWidth;\n          } else {\n            activeBarLeft = arrowLeft.value;\n            activeBarWidth = endInputDivRef.value.offsetWidth;\n          }\n        }\n        const activeBarPositionStyle\n          = direction === 'rtl' ? { right: `${activeBarLeft}px` } : { left: `${activeBarLeft}px` };\n        // ============================ Return =============================\n\n        return (\n          <div\n            ref={containerRef}\n            class={classNames(prefixCls, `${prefixCls}-range`, attrs.class, {\n              [`${prefixCls}-disabled`]: mergedDisabled.value[0] && mergedDisabled.value[1],\n              [`${prefixCls}-focused`]:\n                mergedActivePickerIndex.value === 0 ? startFocused.value : endFocused.value,\n              [`${prefixCls}-rtl`]: direction === 'rtl',\n            })}\n            style={attrs.style}\n            onClick={onPickerClick}\n            onMouseenter={onMouseenter}\n            onMouseleave={onMouseleave}\n            onMousedown={onPickerMousedown}\n            onMouseup={onMouseup}\n            {...getDataOrAriaProps(props)}\n          >\n            <div\n              class={classNames(`${prefixCls}-input`, {\n                [`${prefixCls}-input-active`]: mergedActivePickerIndex.value === 0,\n                [`${prefixCls}-input-placeholder`]: !!startHoverValue.value,\n              })}\n              ref={startInputDivRef}\n            >\n              <input\n                id={id}\n                disabled={mergedDisabled.value[0]}\n                readonly={\n                  inputReadOnly || typeof formatList.value[0] === 'function' || !startTyping.value\n                }\n                value={startHoverValue.value || startText.value}\n                onInput={(e: ChangeEvent) => {\n                  triggerStartTextChange(e.target.value);\n                }}\n                autofocus={autofocus}\n                placeholder={getValue(placeholder, 0) || ''}\n                ref={startInputRef}\n                {...startInputProps.value}\n                {...inputSharedProps}\n                autocomplete={autocomplete}\n              />\n            </div>\n            <div class={`${prefixCls}-range-separator`} ref={separatorRef}>\n              {separator}\n            </div>\n            <div\n              class={classNames(`${prefixCls}-input`, {\n                [`${prefixCls}-input-active`]: mergedActivePickerIndex.value === 1,\n                [`${prefixCls}-input-placeholder`]: !!endHoverValue.value,\n              })}\n              ref={endInputDivRef}\n            >\n              <input\n                disabled={mergedDisabled.value[1]}\n                readonly={\n                  inputReadOnly || typeof formatList.value[0] === 'function' || !endTyping.value\n                }\n                value={endHoverValue.value || endText.value}\n                onInput={(e: ChangeEvent) => {\n                  triggerEndTextChange(e.target.value);\n                }}\n                placeholder={getValue(placeholder, 1) || ''}\n                ref={endInputRef}\n                {...endInputProps.value}\n                {...inputSharedProps}\n                autocomplete={autocomplete}\n              />\n            </div>\n            <div\n              class={`${prefixCls}-active-bar`}\n              style={{\n                ...activeBarPositionStyle,\n                width: `${activeBarWidth}px`,\n                position: 'absolute',\n              }}\n            />\n            {suffixNode}\n            {clearNode}\n            <PickerTrigger\n              visible={mergedOpen.value}\n              popupStyle={popupStyle}\n              prefixCls={prefixCls}\n              dropdownClassName={dropdownClassName}\n              dropdownAlign={dropdownAlign}\n              getPopupContainer={getPopupContainer}\n              transitionName={transitionName}\n              range\n              direction={direction}\n              v-slots={{\n                popupElement: () => rangePanel,\n              }}\n            >\n              <div\n                style={{\n                  pointerEvents: 'none',\n                  position: 'absolute',\n                  top: 0,\n                  bottom: 0,\n                  left: 0,\n                  right: 0,\n                }}\n              >\n              </div>\n            </PickerTrigger>\n          </div>\n        );\n      };\n    },\n  });\n}\n\nconst InterRangerPicker = RangerPicker<any>();\nexport default InterRangerPicker;\n"],"names":["reorderValues","values","generateConfig","isAfter","canValueTrigger","value","index","disabled","allowEmpty","RangerPicker","defineComponent","name","inheritAttrs","props","setup","attrs","expose","needConfirmButton","computed","picker","showTime","presets","ranges","presetList","usePresets","openRecordsRef","ref","containerRef","panelDivRef","startInputDivRef","endInputDivRef","separatorRef","startInputRef","endInputRef","arrowRef","process","env","NODE_ENV","legacyPropsWarning","formatList","toArray","getDefaultFormat","format","use12Hours","mergedActivePickerIndex","setMergedActivePickerIndex","useMergedState","toRef","operationRef","mergedDisabled","Array","isArray","mergedValue","setInnerValue","defaultValue","postState","order","startViewDate","endViewDate","setViewDate","useRangeViewDates","defaultDates","defaultPickerValue","selectedValue","setSelectedValue","postValues","i","getValue","updateValues","getNow","mergedModes","setInnerModes","watch","triggerModesChange","modes","onPanelChange","disabledStartDate","disabledEndDate","useRangeDisabled","locale","disabledDate","mergedOpen","triggerInnerOpen","defaultOpen","postOpen","onChange","newOpen","onOpenChange","onClose","startOpen","endOpen","panelLeft","arrowLeft","popupMinWidth","width","containerWidth","useElementSize","panelDivWidth","arrowWidth","startInputDivWidth","separatorWidth","direction","offsetLeft","immediate","triggerRef","triggerOpen","clearTimeout","openRecords","setTimeout","triggerOpenAndFocus","inputRef","focus","triggerChange","newValue","sourceIndex","isfunction","startValue","endValue","onCalendarChange","isSameWeek","isSameQuarter","isEqual","isSameDate","startStr","formatValue","endStr","info","range","canStartValueTrigger","canEndValueTrigger","canTrigger","nextOpenIndex","forwardKeydown","e","onKeydown","warning","sharedTextHooksProps","startValueTexts","firstStartValueText","useValueTexts","endValueTexts","firstEndValueText","onTextChange","newText","inputDate","parseValue","disabledFunc","startText","triggerStartTextChange","resetStartText","useTextValueMapping","valueTexts","endText","triggerEndTextChange","resetEndText","rangeHoverValue","setRangeHoverValue","useState","hoverRangedValue","setHoverRangedValue","startHoverValue","onStartEnter","onStartLeave","useHoverValue","endHoverValue","onEndEnter","onEndLeave","onDateMouseenter","date","onDateMouseleave","getSharedInputHookProps","resetText","onBlur","isClickOutside","target","elementsContains","onFocus","onSubmit","onCancel","startInputProps","focused","startFocused","typing","startTyping","usePickerInput","blurToCancel","open","preventDefault","endInputProps","endFocused","endTyping","onPickerClick","onClick","contains","onPickerMousedown","onMousedown","length","watchEffect","blur","panelHoverRangedValue","renderPanel","panelPosition","panelProps","dateRender","disabledTime","prefixCls","panelShowTime","timeDefaultValues","undefined","panelDateRender","current","today","_createVNode","RangeContextProvider","inRange","rangedValue","default","PickerPanel","classNames","newMode","viewDate","getClosingViewDate","onContextSelect","type","useProvidePanel","hideHeader","hideRanges","onSelect","id","popupStyle","dropdownClassName","transitionName","dropdownAlign","getPopupContainer","placeholder","autofocus","separator","panelRender","allowClear","suffixIcon","clearIcon","inputReadOnly","renderExtraFooter","onMouseenter","onMouseleave","onMouseup","onOk","components","autocomplete","arrowPositionStyle","right","left","renderPanels","panels","extraNode","getExtraFooter","rangesNode","getRanges","okDisabled","nextViewDate","currentMode","showDoublePanel","leftPanel","pickerValue","onPickerValueChange","newViewDate","rightPanel","_Fragment","mergedNodes","PresetPanel","nextValue","hoverValue","marginLeft","rangePanel","minWidth","suffixNode","clearNode","stopPropagation","inputSharedProps","size","getInputSize","activeBarLeft","activeBarWidth","offsetWidth","activeBarPositionStyle","class","style","getDataOrAriaProps","position","PickerTrigger","pointerEvents","top","bottom","popupElement","InterRangerPicker"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoDA,SAASA,aAAAA,CACPC,QACAC,cACsB,EAAA;AACtB,EAAA,IAAID,MAAUA,IAAAA,MAAAA,CAAO,CAAC,CAAA,IAAKA,OAAO,CAAC,CAAA,IAAKC,cAAeC,CAAAA,OAAAA,CAAQF,MAAO,CAAA,CAAC,CAAGA,EAAAA,MAAAA,CAAO,CAAC,CAAC,CAAA;AACjF,IAAA,OAAO,CAACA,MAAO,CAAA,CAAC,CAAGA,EAAAA,MAAAA,CAAO,CAAC,CAAC,CAAA,CAAA;AAE9B,EAAOA,OAAAA,MAAAA,CAAAA;AACT,CAAA;AAEA,SAASG,eACPC,CAAAA,KAAAA,EACAC,KACAC,EAAAA,QAAAA,EACAC,UACS,EAAA;AACT,EAAIH,IAAAA,KAAAA;AACF,IAAO,OAAA,IAAA,CAAA;AAET,EAAIG,IAAAA,UAAAA,IAAcA,WAAWF,KAAK,CAAA;AAChC,IAAO,OAAA,IAAA,CAAA;AAET,EAAIC,IAAAA,QAAAA,CAAAA,CAAUD,KAAQ,GAAA,CAAA,IAAK,CAAC,CAAA;AAC1B,IAAO,OAAA,IAAA,CAAA;AAET,EAAO,OAAA,KAAA,CAAA;AACT,CAAA;AA6GA,SAASG,YAAyB,GAAA;AAChC,EAAA,uBAAyDC,mBAAA,CAAA;AAAA,IACvDC,IAAM,EAAA,cAAA;AAAA,IACNC,YAAc,EAAA,KAAA;AAAA,IACdC,KAAO,EAAA,CACL,WACA,EAAA,IAAA,EACA,cACA,mBACA,EAAA,gBAAA,EACA,eACA,EAAA,mBAAA,EACA,gBACA,EAAA,QAAA,EACA,aACA,EAAA,WAAA,EACA,YACA,QACA,EAAA,QAAA,EACA,UACA,EAAA,SAAA,EACA,UACA,EAAA,YAAA,EACA,YACA,EAAA,YAAA,EACA,aACA,OACA,EAAA,cAAA,EACA,oBACA,EAAA,MAAA,EACA,aACA,EAAA,cAAA,EACA,cACA,EAAA,YAAA,EACA,eACA,QACA,EAAA,YAAA,EACA,YACA,EAAA,YAAA,EACA,WACA,EAAA,WAAA,EACA,eACA,EAAA,MAAA,EACA,qBACA,UACA,EAAA,cAAA,EACA,eACA,EAAA,kBAAA,EACA,SACA,EAAA,QAAA,EACA,aACA,EAAA,WAAA,EACA,gBACA,cACA,EAAA,SAAA,EACA,MACA,EAAA,WAAA,EACA,YACA,EAAA,OAAA,EACA,WACA,EAAA,mBAAA,EACA,gBACA,YACA,EAAA,UAAA,EACA,YACA,EAAA,qBAAA,EACA,iBACA,EAAA,SAAA,EACA,UACA,EAAA,UAAA,EACA,iBACA,eAAe,CAAA;AAAA,IAEjBC,MAAMD,KAAO,EAAA;AAAA,MAAEE,KAAAA;AAAAA,MAAOC,MAAAA;AAAAA,KAAU,EAAA;AAC9B,MAAA,MAAMC,iBAAoBC,GAAAA,YAAAA,CACxB,MAAOL,KAAAA,CAAMM,MAAW,KAAA,MAAA,IAAU,CAAC,CAACN,KAAMO,CAAAA,QAAAA,IAAaP,KAAMM,CAAAA,MAAAA,KAAW,MAC1E,CAAA,CAAA;AACA,MAAA,MAAME,OAAUH,GAAAA,YAAAA,CAAS,MAAML,KAAAA,CAAMQ,OAAO,CAAA,CAAA;AAC5C,MAAA,MAAMC,MAASJ,GAAAA,YAAAA,CAAS,MAAML,KAAAA,CAAMS,MAAM,CAAA,CAAA;AAC1C,MAAMC,MAAAA,UAAAA,GAAaC,kBAAWH,CAAAA,OAAAA,EAASC,MAAM,CAAA,CAAA;AAE7C,MAAMG,MAAAA,cAAAA,GAAiBC,OAA6B,CAAA,EAAE,CAAA,CAAA;AAEtD,MAAMC,MAAAA,YAAAA,GAAeD,QAAoB,IAAI,CAAA,CAAA;AAC7C,MAAME,MAAAA,WAAAA,GAAcF,QAAoB,IAAI,CAAA,CAAA;AAC5C,MAAMG,MAAAA,gBAAAA,GAAmBH,QAAoB,IAAI,CAAA,CAAA;AACjD,MAAMI,MAAAA,cAAAA,GAAiBJ,QAAoB,IAAI,CAAA,CAAA;AAC/C,MAAMK,MAAAA,YAAAA,GAAeL,QAAoB,IAAI,CAAA,CAAA;AAC7C,MAAMM,MAAAA,aAAAA,GAAgBN,QAAsB,IAAI,CAAA,CAAA;AAChD,MAAMO,MAAAA,WAAAA,GAAcP,QAAsB,IAAI,CAAA,CAAA;AAC9C,MAAMQ,MAAAA,QAAAA,GAAWR,QAAoB,IAAI,CAAA,CAAA;AAGzC,MAAIS,IAAAA,OAAAA,CAAQC,IAAIC,QAAa,KAAA,YAAA;AAC3BC,QAAAA,2BAAAA,CAAmBzB,KAAK,CAAA,CAAA;AAG1B,MAAA,MAAM0B,UAAarB,GAAAA,YAAAA,CAAS,MAC1BsB,gBAAAA,CACEC,wBAA2B5B,KAAM6B,CAAAA,MAAAA,EAAQ7B,KAAMM,CAAAA,MAAAA,EAAQN,KAAMO,CAAAA,QAAAA,EAAUP,KAAM8B,CAAAA,UAAU,CACzF,CACF,CAAA,CAAA;AAGA,MAAA,MAAM,CAACC,uBAAAA,EAAyBC,0BAA0B,CAAA,GAAIC,qBAAsB,CAAG,EAAA;AAAA,QACrFzC,KAAAA,EAAO0C,SAAMlC,CAAAA,KAAAA,EAAO,mBAAmB,CAAA;AAAA,OACxC,CAAA,CAAA;AAGD,MAAMmC,MAAAA,YAAAA,GAAetB,QAA8B,IAAI,CAAA,CAAA;AAEvD,MAAMuB,MAAAA,cAAAA,GAAiB/B,aAA6B,MAAM;AACxD,QAAM,MAAA;AAAA,UAAEX,QAAAA;AAAAA,SAAaM,GAAAA,KAAAA,CAAAA;AACrB,QAAIqC,IAAAA,KAAAA,CAAMC,QAAQ5C,QAAQ,CAAA;AACxB,UAAOA,OAAAA,QAAAA,CAAAA;AAET,QAAA,OAAO,CAACA,QAAAA,IAAY,KAAOA,EAAAA,QAAAA,IAAY,KAAK,CAAA,CAAA;AAAA,OAC7C,CAAA,CAAA;AAGD,MAAA,MAAM,CAAC6C,WAAAA,EAAaC,aAAa,CAAA,GAAIP,qBAAqC,IAAM,EAAA;AAAA,QAC9EzC,KAAAA,EAAO0C,SAAMlC,CAAAA,KAAAA,EAAO,OAAO,CAAA;AAAA,QAC3ByC,cAAczC,KAAMyC,CAAAA,YAAAA;AAAAA,QACpBC,SAAWtD,EAAAA,CAAAA,MAAAA,KACTY,KAAMM,CAAAA,MAAAA,KAAW,MAAU,IAAA,CAACN,KAAM2C,CAAAA,KAAAA,GAC9BvD,MACAD,GAAAA,aAAAA,CAAcC,MAAQY,EAAAA,KAAAA,CAAMX,cAAc,CAAA;AAAA,OACjD,CAAA,CAAA;AAID,MAAA,MAAM,CAACuD,aAAAA,EAAeC,WAAaC,EAAAA,WAAW,IAAIC,yBAAkB,CAAA;AAAA,QAClE3D,MAAQmD,EAAAA,WAAAA;AAAAA,QACRjC,MAAAA,EAAQ4B,SAAMlC,CAAAA,KAAAA,EAAO,QAAQ,CAAA;AAAA,QAC7BgD,cAAchD,KAAMiD,CAAAA,kBAAAA;AAAAA,QACpB5D,cAAAA,EAAgB6C,SAAMlC,CAAAA,KAAAA,EAAO,gBAAgB,CAAA;AAAA,OAC9C,CAAA,CAAA;AAGD,MAAA,MAAM,CAACkD,aAAeC,EAAAA,gBAAgB,CAAIlB,GAAAA,oBAAAA,CAAeM,YAAY/C,KAAO,EAAA;AAAA,QAC1EkD,WAAYtD,CAAW,MAAA,KAAA;AACrB,UAAA,IAAIgE,UAAahE,GAAAA,MAAAA,CAAAA;AAEjB,UAAA,IAAIgD,eAAe5C,KAAM,CAAA,CAAC,CAAK4C,IAAAA,cAAAA,CAAe5C,MAAM,CAAC,CAAA;AACnD,YAAO4D,OAAAA,UAAAA,CAAAA;AAGT,UAAA,KAAA,IAASC,CAAI,GAAA,CAAA,EAAGA,CAAI,GAAA,CAAA,EAAGA,KAAK,CAAG,EAAA;AAC7B,YAAA,IACEjB,cAAe5C,CAAAA,KAAAA,CAAM6D,CAAC,CAAA,IACnB,CAACC,iBAASF,CAAAA,UAAAA,EAAYC,CAAC,CAAA,IACvB,CAACC,iBAAAA,CAAStD,KAAML,CAAAA,UAAAA,EAAY0D,CAAC,CAChC,EAAA;AACAD,cAAAA,UAAAA,GAAaG,sBAAaH,UAAYpD,EAAAA,KAAAA,CAAMX,cAAemE,CAAAA,MAAAA,IAAUH,CAAC,CAAA,CAAA;AAAA,aACxE;AAAA,WACF;AACA,UAAOD,OAAAA,UAAAA,CAAAA;AAAAA,SACT;AAAA,OACD,CAAA,CAAA;AAGD,MAAM,MAAA,CAACK,WAAaC,EAAAA,aAAa,CAAIzB,GAAAA,oBAAAA,CACnC,CAACjC,KAAMM,CAAAA,MAAAA,EAAQN,KAAMM,CAAAA,MAAM,CAC3B,EAAA;AAAA,QACEd,KAAAA,EAAO0C,SAAMlC,CAAAA,KAAAA,EAAO,MAAM,CAAA;AAAA,OAE9B,CAAA,CAAA;AAEA2D,MACEA,SAAA,CAAA,MAAM3D,KAAMM,CAAAA,MAAAA,EACZ,MAAM;AACJoD,QAAAA,aAAAA,CAAc,CAAC1D,KAAAA,CAAMM,MAAQN,EAAAA,KAAAA,CAAMM,MAAM,CAAC,CAAA,CAAA;AAAA,OAE9C,CAAA,CAAA;AAEA,MAAMsD,MAAAA,kBAAAA,GAAqBA,CAACC,KAAAA,EAA+BzE,MAAiC,KAAA;;AAC1FsE,QAAAA,aAAAA,CAAcG,KAAK,CAAA,CAAA;AACnB7D,QAAM8D,CAAAA,EAAAA,GAAAA,KAAAA,CAAAA,aAAAA,KAAN9D,+BAAsBZ,MAAQyE,EAAAA,KAAAA,CAAAA,CAAAA;AAAAA,OAChC,CAAA;AAGA,MAAA,MAAM,CAACE,iBAAAA,EAAmBC,eAAe,CAAA,GAAIC,wBAC3C,CAAA;AAAA,QACE3D,MAAAA,EAAQ4B,SAAMlC,CAAAA,KAAAA,EAAO,QAAQ,CAAA;AAAA,QAC7BkD,aAAAA;AAAAA,QACAgB,MAAAA,EAAQhC,SAAMlC,CAAAA,KAAAA,EAAO,QAAQ,CAAA;AAAA,QAC7BN,QAAU0C,EAAAA,cAAAA;AAAAA,QACV+B,YAAAA,EAAcjC,SAAMlC,CAAAA,KAAAA,EAAO,cAAc,CAAA;AAAA,QACzCX,cAAAA,EAAgB6C,SAAMlC,CAAAA,KAAAA,EAAO,gBAAgB,CAAA;AAAA,SAE/CY,cACF,CAAA,CAAA;AAGA,MAAA,MAAM,CAACwD,UAAAA,EAAYC,gBAAgB,CAAA,GAAIpC,qBAAe,KAAO,EAAA;AAAA,QAC3DzC,KAAAA,EAAO0C,SAAMlC,CAAAA,KAAAA,EAAO,MAAM,CAAA;AAAA,QAC1ByC,cAAczC,KAAMsE,CAAAA,WAAAA;AAAAA,QACpB5B,WAAW6B,CACTnC,QAAAA,KAAAA,cAAAA,CAAe5C,MAAMuC,uBAAwBvC,CAAAA,KAAK,IAAI,KAAQ+E,GAAAA,QAAAA;AAAAA,QAChEC,UAAWC,CAAY,OAAA,KAAA;;AACrBzE,UAAAA,CAAAA,EAAAA,GAAAA,KAAAA,CAAM0E,iBAAN1E,IAAqByE,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,KAAAA,EAAAA,OAAAA,CAAAA,CAAAA;AAErB,UAAA,IAAI,CAACA,OAAAA,IAAWtC,YAAa3C,CAAAA,KAAAA,IAAS2C,aAAa3C,KAAMmF,CAAAA,OAAAA;AACvDxC,YAAAA,YAAAA,CAAa3C,MAAMmF,OAAQ,EAAA,CAAA;AAAA,SAC/B;AAAA,OACD,CAAA,CAAA;AAED,MAAA,MAAMC,YAAYvE,YAAS,CAAA,MAAM+D,WAAW5E,KAASuC,IAAAA,uBAAAA,CAAwBvC,UAAU,CAAC,CAAA,CAAA;AACxF,MAAA,MAAMqF,UAAUxE,YAAS,CAAA,MAAM+D,WAAW5E,KAASuC,IAAAA,uBAAAA,CAAwBvC,UAAU,CAAC,CAAA,CAAA;AACtF,MAAMsF,MAAAA,SAAAA,GAAYjE,QAAI,CAAC,CAAA,CAAA;AACvB,MAAMkE,MAAAA,SAAAA,GAAYlE,QAAI,CAAC,CAAA,CAAA;AAGvB,MAAMmE,MAAAA,aAAAA,GAAgBnE,QAAI,CAAC,CAAA,CAAA;AAC3B,MAAM,MAAA;AAAA,QAAEoE,KAAOC,EAAAA,cAAAA;AAAAA,OAAe,GAAIC,uBAAerE,YAAY,CAAA,CAAA;AAC7D6C,MAAAA,SAAAA,CAAM,CAACS,UAAAA,EAAYc,cAAc,CAAA,EAAG,MAAM;AACxC,QAAI,IAAA,CAACd,UAAW5E,CAAAA,KAAAA,IAASsB,YAAatB,CAAAA,KAAAA;AACpCwF,UAAAA,aAAAA,CAAcxF,QAAQ0F,cAAe1F,CAAAA,KAAAA,CAAAA;AAAAA,OACxC,CAAA,CAAA;AACD,MAAM,MAAA;AAAA,QAAEyF,KAAOG,EAAAA,aAAAA;AAAAA,OAAc,GAAID,uBAAepE,WAAW,CAAA,CAAA;AAC3D,MAAM,MAAA;AAAA,QAAEkE,KAAOI,EAAAA,UAAAA;AAAAA,OAAW,GAAIF,uBAAe9D,QAAQ,CAAA,CAAA;AACrD,MAAM,MAAA;AAAA,QAAE4D,KAAOK,EAAAA,kBAAAA;AAAAA,OAAmB,GAAIH,uBAAenE,gBAAgB,CAAA,CAAA;AACrE,MAAM,MAAA;AAAA,QAAEiE,KAAOM,EAAAA,cAAAA;AAAAA,OAAe,GAAIJ,uBAAejE,YAAY,CAAA,CAAA;AAC7DyC,MACEA,SAAA,CAAA,CACE5B,uBACAqC,EAAAA,UAAAA,EACAgB,aACAC,EAAAA,UAAAA,EACAC,kBACAC,EAAAA,cAAAA,EACA,MAAMvF,KAAAA,CAAMwF,SAAS,CAAA,EAEvB,MAAM;AACJT,QAAAA,SAAAA,CAAUvF,KAAQ,GAAA,CAAA,CAAA;AAClB,QAAA,IAAIuC,wBAAwBvC,KAAO,EAAA;AACjC,UAAIwB,IAAAA,gBAAAA,CAAiBxB,KAAS0B,IAAAA,YAAAA,CAAa1B,KAAO,EAAA;AAChDuF,YAAUvF,SAAAA,CAAAA,KAAAA,GAAQ8F,kBAAmB9F,CAAAA,KAAAA,GAAQ+F,cAAe/F,CAAAA,KAAAA,CAAAA;AAC5D,YACE4F,IAAAA,aAAAA,CAAc5F,SACX6F,UAAW7F,CAAAA,KAAAA,IACXuF,UAAUvF,KACT4F,GAAAA,aAAAA,CAAc5F,QACZ6F,UAAW7F,CAAAA,KAAAA,IACVQ,MAAMwF,SAAc,KAAA,KAAA,IAASnE,SAAS7B,KAAMiG,CAAAA,UAAAA,GAAaV,UAAUvF,KAClE,GAAA,CAAA,GACA6B,QAAS7B,CAAAA,KAAAA,CAAMiG,UACvB,CAAA,EAAA;AACAX,cAAAA,SAAAA,CAAUtF,QAAQuF,SAAUvF,CAAAA,KAAAA,CAAAA;AAAAA,aAC9B;AAAA,WACF;AAAA,SACF,MAAA,IAAWuC,uBAAwBvC,CAAAA,KAAAA,KAAU,CAAG,EAAA;AAC9CsF,UAAAA,SAAAA,CAAUtF,KAAQ,GAAA,CAAA,CAAA;AAAA,SACpB;AAAA,OAEF,EAAA;AAAA,QAAEkG,SAAW,EAAA,IAAA;AAAA,OACf,CAAA,CAAA;AAGA,MAAA,MAAMC,aAAa9E,OAAS,EAAA,CAAA;AAE5B,MAAS+E,SAAAA,WAAAA,CAAYnB,SAAkBhF,KAAc,EAAA;AACnD,QAAA,IAAIgF,OAAS,EAAA;AACXoB,UAAAA,YAAAA,CAAaF,WAAWnG,KAAK,CAAA,CAAA;AAC7BoB,UAAepB,cAAAA,CAAAA,KAAAA,CAAMC,KAAK,CAAI,GAAA,IAAA,CAAA;AAE9BuC,UAAAA,0BAAAA,CAA2BvC,KAAK,CAAA,CAAA;AAChC4E,UAAAA,gBAAAA,CAAiBI,OAAO,CAAA,CAAA;AAGxB,UAAA,IAAI,CAACL,UAAW5E,CAAAA,KAAAA;AACdsD,YAAAA,WAAAA,CAAY,MAAMrD,KAAK,CAAA,CAAA;AAAA,SAC3B,MAAA,IAAWsC,uBAAwBvC,CAAAA,KAAAA,KAAUC,KAAO,EAAA;AAClD4E,UAAAA,gBAAAA,CAAiBI,OAAO,CAAA,CAAA;AAIxB,UAAA,MAAMqB,cAAclF,cAAepB,CAAAA,KAAAA,CAAAA;AACnCmG,UAAWnG,UAAAA,CAAAA,KAAAA,GAAQuG,WAAW,MAAM;AAClC,YAAA,IAAID,gBAAgBlF,cAAepB,CAAAA,KAAAA;AACjCoB,cAAAA,cAAAA,CAAepB,QAAQ,EAAC,CAAA;AAAA,WAC3B,CAAA,CAAA;AAAA,SACH;AAAA,OACF;AAEA,MAAA,SAASwG,oBAAoBvG,KAAc,EAAA;AACzCmG,QAAAA,WAAAA,CAAY,MAAMnG,KAAK,CAAA,CAAA;AAEvBsG,QAAAA,UAAAA,CAAW,MAAM;AACf,UAAA,MAAME,QAAW,GAAA,CAAC9E,aAAeC,EAAAA,WAAW,EAAE3B,KAAK,CAAA,CAAA;AACnD,UAAA,IAAIwG,QAASzG,CAAAA,KAAAA;AACXyG,YAAAA,QAAAA,CAASzG,MAAM0G,KAAM,EAAA,CAAA;AAAA,WACtB,CAAC,CAAA,CAAA;AAAA,OACN;AAEA,MAASC,SAAAA,aAAAA,CAAcC,UAA+DC,WAAoB,EAAA;AACxG,QAAMC,MAAAA,UAAAA,GAAa,OAAOF,QAAa,KAAA,UAAA,CAAA;AACvC,QAAIhH,IAAAA,MAAAA,GAASkH,UAAaF,GAAAA,QAAAA,EAAaA,GAAAA,QAAAA,CAAAA;AACvC,QAAIG,IAAAA,UAAAA,GAAajD,iBAASlE,CAAAA,MAAAA,EAAQ,CAAC,CAAA,CAAA;AACnC,QAAIoH,IAAAA,QAAAA,GAAWlD,iBAASlE,CAAAA,MAAAA,EAAQ,CAAC,CAAA,CAAA;AACjC,QAAM,MAAA;AAAA,UACJC,cAAAA;AAAAA,UACA6E,MAAAA;AAAAA,UACA5D,MAAAA;AAAAA,UACAqC,KAAAA;AAAAA,UACA8D,gBAAAA;AAAAA,UACA9G,UAAAA;AAAAA,UACA6E,QAAAA;AAAAA,UACAjE,QAAAA;AAAAA,SACEP,GAAAA,KAAAA,CAAAA;AAGJ,QAAA,IAAIuG,cAAcC,QAAYnH,IAAAA,cAAAA,CAAeC,OAAQiH,CAAAA,UAAAA,EAAYC,QAAQ,CAAG,EAAA;AAC1E,UAAA;AAAA;AAAA,YAEGlG,MAAW,KAAA,MAAA,IACP,CAACoG,mBAAAA,CAAWrH,gBAAgB6E,MAAOA,CAAAA,MAAAA,EAAQqC,UAAYC,EAAAA,QAAQ,KAEhElG,MAAW,KAAA,SAAA,IAAa,CAACqG,sBAAAA,CAActH,gBAAgBkH,UAAYC,EAAAA,QAAQ,CAE3ElG,IAAAA,MAAAA,KAAW,MACVA,IAAAA,MAAAA,KAAW,SACXA,IAAAA,MAAAA,KAAW,UACX,EAAEC,QAAAA,GACDqG,gBAAQvH,CAAAA,cAAAA,EAAgBkH,YAAYC,QAAQ,CAAA,GAC5CK,mBAAWxH,CAAAA,cAAAA,EAAgBkH,YAAYC,QAAQ,CAAA,CAAA;AAAA,YACrD;AAEA,YAAA,IAAIH,gBAAgB,CAAG,EAAA;AACrBjH,cAAS,MAAA,GAAA,CAACmH,YAAY,IAAI,CAAA,CAAA;AAC1BC,cAAW,QAAA,GAAA,IAAA,CAAA;AAAA,aACN,MAAA;AACLD,cAAa,UAAA,GAAA,IAAA,CAAA;AACbnH,cAAS,MAAA,GAAA,CAAC,MAAMoH,QAAQ,CAAA,CAAA;AAAA,aAC1B;AAGA5F,YAAAA,cAAAA,CAAepB,KAAQ,GAAA;AAAA,cACrB,CAAC6G,WAAW,GAAG,IAAA;AAAA,aACjB,CAAA;AAAA,WACS/F,MAAAA,IAAAA,MAAAA,KAAW,MAAUqC,IAAAA,KAAAA,KAAU,KAAO,EAAA;AAE/CvD,YAASD,MAAAA,GAAAA,aAAAA,CAAcC,QAAQC,cAAc,CAAA,CAAA;AAAA,WAC/C;AAAA,SACF;AAEA8D,QAAAA,gBAAAA,CAAiB/D,MAAM,CAAA,CAAA;AAEvB,QAAM0H,MAAAA,SAAAA,GACF1H,UAAUA,MAAO,CAAA,CAAC,IAChB2H,oBAAY3H,CAAAA,MAAAA,CAAO,CAAC,CAAG,EAAA;AAAA,UAAEC,cAAAA;AAAAA,UAAgB6E,MAAAA;AAAAA,UAAQrC,MAAAA,EAAQH,UAAWlC,CAAAA,KAAAA,CAAM,CAAC,CAAA;AAAA,SAAG,CAC9E,GAAA,EAAA,CAAA;AACN,QAAMwH,MAAAA,OAAAA,GACF5H,UAAUA,MAAO,CAAA,CAAC,IAChB2H,oBAAY3H,CAAAA,MAAAA,CAAO,CAAC,CAAG,EAAA;AAAA,UAAEC,cAAAA;AAAAA,UAAgB6E,MAAAA;AAAAA,UAAQrC,MAAAA,EAAQH,UAAWlC,CAAAA,KAAAA,CAAM,CAAC,CAAA;AAAA,SAAG,CAC9E,GAAA,EAAA,CAAA;AACN,QAAA,IAAIiH,gBAAkB,EAAA;AACpB,UAAA,MAAMQ,IAAkB,GAAA;AAAA,YAAEC,KAAAA,EAAOb,WAAgB,KAAA,CAAA,GAAI,OAAU,GAAA,KAAA;AAAA,WAAM,CAAA;AAErEI,UAAAA,gBAAAA,CAAiBrH,MAAQ,EAAA,CAAC0H,SAAUE,EAAAA,OAAM,GAAGC,IAAI,CAAA,CAAA;AAAA,SACnD;AAGA,QAAA,MAAME,uBAAuB5H,eAC3BgH,CAAAA,UAAAA,EACA,CACAnE,EAAAA,cAAAA,CAAe5C,OACfG,UACF,CAAA,CAAA;AACA,QAAA,MAAMyH,qBAAqB7H,eAAgBiH,CAAAA,QAAAA,EAAU,CAAGpE,EAAAA,cAAAA,CAAe5C,OAAOG,UAAU,CAAA,CAAA;AAExF,QAAM0H,MAAAA,UAAAA,GAAajI,MAAW,KAAA,IAAA,IAAS+H,oBAAwBC,IAAAA,kBAAAA,CAAAA;AAE/D,QAAA,IAAIC,UAAY,EAAA;AAEd7E,UAAAA,aAAAA,CAAcpD,MAAM,CAAA,CAAA;AAEpB,UACEoF,IAAAA,QAAAA,KACI,CAACoC,gBAAQvH,CAAAA,cAAAA,EAAgBiE,kBAASf,WAAY/C,CAAAA,KAAAA,EAAO,CAAC,CAAG+G,EAAAA,UAAU,KAClE,CAACK,gBAAAA,CAAQvH,gBAAgBiE,iBAASf,CAAAA,WAAAA,CAAY/C,OAAO,CAAC,CAAA,EAAGgH,QAAQ,CACtE,CAAA,EAAA;AACAhC,YAAAA,QAAAA,CAASpF,MAAQ,EAAA,CAAC0H,SAAUE,EAAAA,OAAM,CAAC,CAAA,CAAA;AAAA,WACrC;AAAA,SACF;AAKA,QAAA,IAAIM,aAAuB,GAAA,IAAA,CAAA;AAC3B,QAAA,IAAIjB,WAAgB,KAAA,CAAA,IAAK,CAACjE,cAAAA,CAAe5C,MAAM,CAAC,CAAA;AAC9C8H,UAAgB,aAAA,GAAA,CAAA,CAAA;AAAA,aAAA,IACTjB,WAAgB,KAAA,CAAA,IAAK,CAACjE,cAAAA,CAAe5C,MAAM,CAAC,CAAA;AACnD8H,UAAgB,aAAA,GAAA,CAAA,CAAA;AAElB,QAAA,IACEA,kBAAkB,IACfA,IAAAA,aAAAA,KAAkBvF,wBAAwBvC,KACzC,KAAA,CAACoB,eAAepB,KAAM8H,CAAAA,aAAa,CAAK,IAAA,CAAChE,kBAASlE,MAAQkI,EAAAA,aAAa,MACxEhE,iBAASlE,CAAAA,MAAAA,EAAQiH,WAAW,CAC/B,EAAA;AAEAL,UAAAA,mBAAAA,CAAoBsB,aAAa,CAAA,CAAA;AAAA,SAC5B,MAAA;AACL1B,UAAAA,WAAAA,CAAY,OAAOS,WAAW,CAAA,CAAA;AAAA,SAChC;AAAA,OACF;AAEA,MAAA,MAAMkB,iBAAkBC,CAAqB,CAAA,KAAA;AAC3C,QAAA,IAAIpD,UAAcjC,IAAAA,YAAAA,CAAa3C,KAAS2C,IAAAA,YAAAA,CAAa3C,MAAMiI,SAAW,EAAA;AAEpE,UAAOtF,OAAAA,YAAAA,CAAa3C,KAAMiI,CAAAA,SAAAA,CAAUD,CAAC,CAAA,CAAA;AAAA,SACvC;AAIA,QAAA;AACEE,UAAAA,WAAAA,CACE,OACA,qFACF,CAAA,CAAA;AACA,UAAO,OAAA,KAAA,CAAA;AAAA,SACT;AAAA,OACF,CAAA;AAGA,MAAA,MAAMC,oBAAuB,GAAA;AAAA,QAC3BjG,UAAAA;AAAAA,QACArC,cAAAA,EAAgB6C,SAAMlC,CAAAA,KAAAA,EAAO,gBAAgB,CAAA;AAAA,QAC7CkE,MAAAA,EAAQhC,SAAMlC,CAAAA,KAAAA,EAAO,QAAQ,CAAA;AAAA,OAC/B,CAAA;AAEA,MAAA,MAAM,CAAC4H,eAAAA,EAAiBC,mBAAmB,CAAA,GAAIC,qBAC7CzH,CAAAA,YAAAA,CAAS,MAAMiD,iBAAAA,CAASJ,aAAc1D,CAAAA,KAAAA,EAAO,CAAC,CAAC,GAC/CmI,oBACF,CAAA,CAAA;AAEA,MAAA,MAAM,CAACI,aAAAA,EAAeC,iBAAiB,CAAA,GAAIF,qBACzCzH,CAAAA,YAAAA,CAAS,MAAMiD,iBAAAA,CAASJ,aAAc1D,CAAAA,KAAAA,EAAO,CAAC,CAAC,GAC/CmI,oBACF,CAAA,CAAA;AAEA,MAAMM,MAAAA,YAAAA,GAAeA,CAACC,OAAAA,EAAiBzI,KAAiB,KAAA;AACtD,QAAM0I,MAAAA,SAAAA,GAAYC,oBAAWF,OAAS,EAAA;AAAA,UACpChE,QAAQlE,KAAMkE,CAAAA,MAAAA;AAAAA,UACdxC,YAAYA,UAAWlC,CAAAA,KAAAA;AAAAA,UACvBH,gBAAgBW,KAAMX,CAAAA,cAAAA;AAAAA,SACvB,CAAA,CAAA;AAED,QAAMgJ,MAAAA,YAAAA,GAAe5I,KAAU,KAAA,CAAA,GAAIsE,iBAAoBC,GAAAA,eAAAA,CAAAA;AAEvD,QAAA,IAAImE,SAAa,IAAA,CAACE,YAAaF,CAAAA,SAAS,CAAG,EAAA;AACzChF,UAAAA,gBAAAA,CAAiBI,qBAAaL,CAAAA,aAAAA,CAAc1D,KAAO2I,EAAAA,SAAAA,EAAW1I,KAAK,CAAC,CAAA,CAAA;AACpEqD,UAAAA,WAAAA,CAAYqF,WAAW1I,KAAK,CAAA,CAAA;AAAA,SAC9B;AAAA,OACF,CAAA;AAEA,MAAA,MAAM,CAAC6I,SAAAA,EAAWC,sBAAwBC,EAAAA,cAAc,IAAIC,2BAAoB,CAAA;AAAA,QAC9EC,UAAYd,EAAAA,eAAAA;AAAAA,QACZK,YAAcC,EAAAA,CAAAA,OAAAA,KAAWD,YAAaC,CAAAA,OAAAA,EAAS,CAAC,CAAA;AAAA,OACjD,CAAA,CAAA;AAED,MAAA,MAAM,CAACS,OAAAA,EAASC,oBAAsBC,EAAAA,YAAY,IAAIJ,2BAAoB,CAAA;AAAA,QACxEC,UAAYX,EAAAA,aAAAA;AAAAA,QACZE,YAAcC,EAAAA,CAAAA,OAAAA,KAAWD,YAAaC,CAAAA,OAAAA,EAAS,CAAC,CAAA;AAAA,OACjD,CAAA,CAAA;AAED,MAAA,MAAM,CAACY,eAAAA,EAAiBC,kBAAkB,CAAA,GAAIC,iBAA+B,IAAI,CAAA,CAAA;AAGjF,MAAA,MAAM,CAACC,gBAAAA,EAAkBC,mBAAmB,CAAA,GAAIF,iBAA+B,IAAI,CAAA,CAAA;AAEnF,MAAA,MAAM,CAACG,eAAiBC,EAAAA,YAAAA,EAAcC,YAAY,CAAIC,GAAAA,qBAAAA,CACpDhB,WACAX,oBACF,CAAA,CAAA;AAEA,MAAA,MAAM,CAAC4B,aAAeC,EAAAA,UAAAA,EAAYC,UAAU,CAAIH,GAAAA,qBAAAA,CAAcX,SAAShB,oBAAoB,CAAA,CAAA;AAE3F,MAAA,MAAM+B,mBAAoBC,CAAmB,IAAA,KAAA;AAC3CT,QAAAA,mBAAAA,CAAoB3F,sBAAaL,aAAc1D,CAAAA,KAAAA,EAAOmK,IAAM5H,EAAAA,uBAAAA,CAAwBvC,KAAK,CAAC,CAAA,CAAA;AAC1F,QAAA,IAAIuC,wBAAwBvC,KAAU,KAAA,CAAA;AACpC4J,UAAAA,YAAAA,CAAaO,IAAI,CAAA,CAAA;AAAA;AAEjBH,UAAAA,UAAAA,CAAWG,IAAI,CAAA,CAAA;AAAA,OACnB,CAAA;AAEA,MAAA,MAAMC,mBAAmBA,MAAM;AAC7BV,QAAAA,mBAAAA,CAAoB3F,sBAAaL,aAAc1D,CAAAA,KAAAA,EAAO,IAAMuC,EAAAA,uBAAAA,CAAwBvC,KAAK,CAAC,CAAA,CAAA;AAC1F,QAAA,IAAIuC,wBAAwBvC,KAAU,KAAA,CAAA;AACpC6J,UAAa,YAAA,EAAA,CAAA;AAAA;AAEbI,UAAW,UAAA,EAAA,CAAA;AAAA,OACf,CAAA;AAGA,MAAMI,MAAAA,uBAAAA,GAA0BA,CAACpK,KAAAA,EAAcqK,SAA2B,MAAA;AAAA,QACxEvC,cAAAA;AAAAA,QACAwC,QAASvC,CAAkB,CAAA,KAAA;;AACzBxH,UAAAA,CAAAA,EAAAA,GAAAA,KAAAA,CAAM+J,WAAN/J,IAAewH,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,KAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAAAA,SACjB;AAAA,QACAwC,cAAiBC,EAAAA,CAAAA,MAAAA,KACf,CAACC,uBAAAA,CACC,CAACnJ,WAAYvB,CAAAA,KAAAA,EAAOwB,gBAAiBxB,CAAAA,KAAAA,EAAOyB,cAAezB,CAAAA,KAAAA,EAAOsB,YAAatB,CAAAA,KAAK,GACpFyK,MACF,CAAA;AAAA,QACFE,SAAU3C,CAAkB,CAAA,KAAA;;AAC1BxF,UAAAA,0BAAAA,CAA2BvC,KAAK,CAAA,CAAA;AAChCO,UAAAA,CAAAA,EAAAA,GAAAA,KAAAA,CAAMmK,YAANnK,IAAgBwH,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,KAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAAAA,SAClB;AAAA,QACA5B,aAAcnB,CAAqB,OAAA,KAAA;AACjCmB,UAAAA,WAAAA,CAAYnB,SAAShF,KAAK,CAAA,CAAA;AAAA,SAC5B;AAAA,QACA2K,UAAUA,MAAM;AACd,UAAA;AAAA;AAAA,YAEE,CAAClH,aAAc1D,CAAAA,KAAAA,IAEXQ,KAAMmE,CAAAA,YAAAA,IAAgBnE,MAAMmE,YAAajB,CAAAA,aAAAA,CAAc1D,KAAMC,CAAAA,KAAK,CAAC,CAAA;AAAA,YACvE;AACA,YAAO,OAAA,KAAA,CAAA;AAAA,WACT;AAEA0G,UAAcjD,aAAAA,CAAAA,aAAAA,CAAc1D,OAAOC,KAAK,CAAA,CAAA;AACxCqK,UAAU,SAAA,EAAA,CAAA;AAAA,SACZ;AAAA,QACAO,UAAUA,MAAM;AACdzE,UAAAA,WAAAA,CAAY,OAAOnG,KAAK,CAAA,CAAA;AACxB0D,UAAAA,gBAAAA,CAAiBZ,YAAY/C,KAAK,CAAA,CAAA;AAClCsK,UAAU,SAAA,EAAA,CAAA;AAAA,SACZ;AAAA,OACF,CAAA,CAAA;AAEA,MAAA,MAAM,CAACQ,eAAiB,EAAA;AAAA,QAAEC,OAASC,EAAAA,YAAAA;AAAAA,QAAcC,MAAQC,EAAAA,WAAAA;AAAAA,OAAa,IAAIC,sBAAe,CAAA;AAAA,QACvF,GAAGd,uBAAwB,CAAA,CAAA,EAAGrB,cAAc,CAAA;AAAA,QAC5CoC,YAAcxK,EAAAA,iBAAAA;AAAAA,QACdyK,IAAMjG,EAAAA,SAAAA;AAAAA,QACNpF,KAAO8I,EAAAA,SAAAA;AAAAA,QACPb,SAAAA,EAAWA,CAACD,CAAAA,EAAGsD,cAAmB,KAAA;;AAChC9K,UAAMyH,CAAAA,EAAAA,GAAAA,KAAAA,CAAAA,SAAAA,KAANzH,+BAAkBwH,CAAGsD,EAAAA,cAAAA,CAAAA,CAAAA;AAAAA,SACvB;AAAA,OACD,CAAA,CAAA;AAED,MAAA,MAAM,CAACC,aAAe,EAAA;AAAA,QAAER,OAASS,EAAAA,UAAAA;AAAAA,QAAYP,MAAQQ,EAAAA,SAAAA;AAAAA,OAAW,IAAIN,sBAAe,CAAA;AAAA,QACjF,GAAGd,uBAAwB,CAAA,CAAA,EAAGhB,YAAY,CAAA;AAAA,QAC1C+B,YAAcxK,EAAAA,iBAAAA;AAAAA,QACdyK,IAAMhG,EAAAA,OAAAA;AAAAA,QACNrF,KAAOmJ,EAAAA,OAAAA;AAAAA,QACPlB,SAAAA,EAAWA,CAACD,CAAAA,EAAGsD,cAAmB,KAAA;;AAChC9K,UAAMyH,CAAAA,EAAAA,GAAAA,KAAAA,CAAAA,SAAAA,KAANzH,+BAAkBwH,CAAGsD,EAAAA,cAAAA,CAAAA,CAAAA;AAAAA,SACvB;AAAA,OACD,CAAA,CAAA;AAGD,MAAA,MAAMI,gBAAiB1D,CAAkB,CAAA,KAAA;;AAGvCxH,QAAAA,CAAAA,EAAAA,GAAAA,KAAAA,CAAMmL,YAANnL,IAAgBwH,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,KAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAChB,QAAA,IACE,CAACpD,UAAW5E,CAAAA,KAAAA,IACT,CAAC2B,aAAAA,CAAc3B,MAAM4L,QAAS5D,CAAAA,CAAAA,CAAEyC,MAAc,CAAA,IAC9C,CAAC7I,WAAY5B,CAAAA,KAAAA,CAAM4L,QAAS5D,CAAAA,CAAAA,CAAEyC,MAAc,CAC/C,EAAA;AACA,UAAI,IAAA,CAAC7H,cAAe5C,CAAAA,KAAAA,CAAM,CAAC,CAAA;AACzBwG,YAAAA,mBAAAA,CAAoB,CAAC,CAAA,CAAA;AAAA,eACd,IAAA,CAAC5D,cAAe5C,CAAAA,KAAAA,CAAM,CAAC,CAAA;AAC9BwG,YAAAA,mBAAAA,CAAoB,CAAC,CAAA,CAAA;AAAA,SACzB;AAAA,OACF,CAAA;AAEA,MAAA,MAAMqF,oBAAqB7D,CAAkB,CAAA,KAAA;;AAE3CxH,QAAAA,CAAAA,EAAAA,GAAAA,KAAAA,CAAMsL,gBAANtL,IAAoBwH,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,KAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AACpB,QAAA,IACEpD,WAAW5E,KACPgL,KAAAA,YAAAA,CAAahL,SAASwL,UAAWxL,CAAAA,KAAAA,CAAAA,IAClC,CAAC2B,aAAc3B,CAAAA,KAAAA,CAAM4L,SAAS5D,CAAEyC,CAAAA,MAAc,KAC9C,CAAC7I,WAAAA,CAAY5B,MAAM4L,QAAS5D,CAAAA,CAAAA,CAAEyC,MAAc,CAC/C,EAAA;AACAzC,UAAAA,CAAAA,CAAEsD,cAAe,EAAA,CAAA;AAAA,SACnB;AAAA,OACF,CAAA;AAIA,MAAMhE,MAAAA,QAAAA,GAAWzG,aAAS;;AACxBkC,QAAAA,OAAAA,CAAAA,CAAAA,EAAAA,GAAAA,WAAAA,CAAY/C,UAAZ+C,IAAoB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,CAAA,CAAA,IAChBwE,qBAAYxE,WAAY/C,CAAAA,KAAAA,CAAM,CAAC,CAAG,EAAA;AAAA,UAChC0E,QAAQlE,KAAMkE,CAAAA,MAAAA;AAAAA,UACdrC,MAAQ,EAAA,gBAAA;AAAA,UACRxC,gBAAgBW,KAAMX,CAAAA,cAAAA;AAAAA,SACvB,CACD,GAAA,EAAA,CAAA;AAAA,OACN,CAAA,CAAA;AACA,MAAM2H,MAAAA,MAAAA,GAAS3G,aAAS;;AACtBkC,QAAAA,OAAAA,CAAAA,CAAAA,EAAAA,GAAAA,WAAAA,CAAY/C,UAAZ+C,IAAoB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,CAAA,CAAA,IAChBwE,qBAAYxE,WAAY/C,CAAAA,KAAAA,CAAM,CAAC,CAAG,EAAA;AAAA,UAChC0E,QAAQlE,KAAMkE,CAAAA,MAAAA;AAAAA,UACdrC,MAAQ,EAAA,gBAAA;AAAA,UACRxC,gBAAgBW,KAAMX,CAAAA,cAAAA;AAAAA,SACvB,CACD,GAAA,EAAA,CAAA;AAAA,OACN,CAAA,CAAA;AAEAsE,MAAAA,SAAAA,CAAM,CAACS,UAAAA,EAAYwD,eAAiBG,EAAAA,aAAa,GAAG,MAAM;AACxD,QAAI,IAAA,CAAC3D,WAAW5E,KAAO,EAAA;AACrB2D,UAAAA,gBAAAA,CAAiBZ,YAAY/C,KAAK,CAAA,CAAA;AAElC,UAAA,IAAI,CAACoI,eAAgBpI,CAAAA,KAAAA,CAAM+L,UAAU3D,eAAgBpI,CAAAA,KAAAA,CAAM,CAAC,CAAM,KAAA,EAAA;AAChE+I,YAAAA,sBAAAA,CAAuB,EAAE,CAAA,CAAA;AAAA,eAClBV,IAAAA,mBAAAA,CAAoBrI,UAAU8I,SAAU9I,CAAAA,KAAAA;AAC/CgJ,YAAe,cAAA,EAAA,CAAA;AAEjB,UAAA,IAAI,CAACT,aAAcvI,CAAAA,KAAAA,CAAM+L,UAAUxD,aAAcvI,CAAAA,KAAAA,CAAM,CAAC,CAAM,KAAA,EAAA;AAC5DoJ,YAAAA,oBAAAA,CAAqB,EAAE,CAAA,CAAA;AAAA,eAChBZ,IAAAA,iBAAAA,CAAkBxI,UAAUmJ,OAAQnJ,CAAAA,KAAAA;AAC3CqJ,YAAa,YAAA,EAAA,CAAA;AAAA,SACjB;AAAA,OACD,CAAA,CAAA;AAGDlF,MAAAA,SAAAA,CAAM,CAACmD,QAAAA,EAAUE,MAAM,CAAA,EAAG,MAAM;AAC9B7D,QAAAA,gBAAAA,CAAiBZ,YAAY/C,KAAK,CAAA,CAAA;AAAA,OACnC,CAAA,CAAA;AAGD,MAAI8B,IAAAA,OAAAA,CAAQC,GAAIC,CAAAA,QAAAA,KAAa,YAAc,EAAA;AACzCgK,QAAAA,eAAAA,CAAY,MAAM;AAChB,UAAM,MAAA;AAAA,YAAEhM,KAAAA;AAAAA,YAAOE,QAAAA;AAAAA,WAAaM,GAAAA,KAAAA,CAAAA;AAC5B,UACER,IAAAA,KAAAA,IACG6C,MAAMC,OAAQ5C,CAAAA,QAAQ,MACpB4D,iBAAS5D,CAAAA,QAAAA,EAAU,CAAC,CAAA,IAAK,CAAC4D,iBAAAA,CAAS9D,OAAO,CAAC,CAAA,IAC1C8D,kBAAS5D,QAAU,EAAA,CAAC,KAAK,CAAC4D,iBAAAA,CAAS9D,KAAO,EAAA,CAAC,CACjD,CAAA,EAAA;AACAkI,YAAAA,WAAAA,CACE,OACA,+FACF,CAAA,CAAA;AAAA,WACF;AAAA,SACD,CAAA,CAAA;AAAA,OACH;AAEAvH,MAAO,MAAA,CAAA;AAAA,QACL+F,OAAOA,MAAM;AACX,UAAA,IAAI/E,aAAc3B,CAAAA,KAAAA;AAChB2B,YAAAA,aAAAA,CAAc3B,MAAM0G,KAAM,EAAA,CAAA;AAAA,SAC9B;AAAA,QACAuF,MAAMA,MAAM;AACV,UAAA,IAAItK,aAAc3B,CAAAA,KAAAA;AAChB2B,YAAAA,aAAAA,CAAc3B,MAAMiM,IAAK,EAAA,CAAA;AAE3B,UAAA,IAAIrK,WAAY5B,CAAAA,KAAAA;AACd4B,YAAAA,WAAAA,CAAY5B,MAAMiM,IAAK,EAAA,CAAA;AAAA,SAC3B;AAAA,OACD,CAAA,CAAA;AAGD,MAAMC,MAAAA,qBAAAA,GAAwBrL,aAAS,MAAM;AAC3C,QACE+D,IAAAA,UAAAA,CAAW5E,SACRyJ,gBAAiBzJ,CAAAA,KAAAA,IACjByJ,iBAAiBzJ,KAAM,CAAA,CAAC,CACxByJ,IAAAA,gBAAAA,CAAiBzJ,KAAM,CAAA,CAAC,KACxBQ,KAAMX,CAAAA,cAAAA,CAAeC,OAAQ2J,CAAAA,gBAAAA,CAAiBzJ,KAAM,CAAA,CAAC,GAAGyJ,gBAAiBzJ,CAAAA,KAAAA,CAAM,CAAC,CAAC,CACpF,EAAA;AACA,UAAA,OAAOyJ,gBAAiBzJ,CAAAA,KAAAA,CAAAA;AAAAA,SAErB,MAAA;AACH,UAAO,OAAA,IAAA,CAAA;AAAA,SACT;AAAA,OACD,CAAA,CAAA;AACD,MAAA,SAASmM,WACPC,CAAAA,aAAAA,GAA0C,KAC1CC,EAAAA,UAAAA,GAAkD,EAClD,EAAA;AACA,QAAM,MAAA;AAAA,UAAExM,cAAAA;AAAAA,UAAgBkB,QAAAA;AAAAA,UAAUuL,UAAAA;AAAAA,UAAYtG,SAAAA;AAAAA,UAAWuG,YAAAA;AAAAA,UAAcC,SAAAA;AAAAA,UAAW9H,MAAAA;AAAAA,SAC9ElE,GAAAA,KAAAA,CAAAA;AAEJ,QAAA,IAAIiM,aACA1L,GAAAA,QAAAA,CAAAA;AACJ,QAAA,IAAIA,QAAY,IAAA,OAAOA,QAAa,KAAA,QAAA,IAAYA,SAASkC,YAAc,EAAA;AACrE,UAAA,MAAMyJ,oBAAgC3L,QAASkC,CAAAA,YAAAA,CAAAA;AAC/CwJ,UAAgB,aAAA,GAAA;AAAA,YACd,GAAG1L,QAAAA;AAAAA,YACHkC,YAAca,EAAAA,iBAAAA,CAAS4I,iBAAmBnK,EAAAA,uBAAAA,CAAwBvC,KAAK,CAAK2M,IAAAA,KAAAA,CAAAA;AAAAA,WAC9E,CAAA;AAAA,SACF;AAEA,QAAA,IAAIC,eAA+C,GAAA,IAAA,CAAA;AACnD,QAAA,IAAIN,UAAY,EAAA;AACdM,UAAAA,eAAAA,GAAkBA,CAAC;AAAA,YAAEC,OAAS1C,EAAAA,IAAAA;AAAAA,YAAM2C,KAAAA;AAAAA,gBAClCR,UAAW,CAAA;AAAA,YACTO,OAAS1C,EAAAA,IAAAA;AAAAA,YACT2C,KAAAA;AAAAA,YACArF,IAAM,EAAA;AAAA,cACJC,KAAAA,EAAOnF,uBAAwBvC,CAAAA,KAAAA,GAAQ,KAAQ,GAAA,OAAA;AAAA,aACjD;AAAA,WACD,CAAA,CAAA;AAAA,SACL;AAEA,QAAA,OAAA+M,gBAAAC,iCAAA,EAAA;AAAA,UAAA,OAEW,EAAA;AAAA,YACLC,OAAS,EAAA,IAAA;AAAA,YACTb,aAAAA;AAAAA,YACAc,WAAAA,EAAa5D,eAAgBtJ,CAAAA,KAAAA,IAAS0D,aAAc1D,CAAAA,KAAAA;AAAAA,YACpDyJ,kBAAkByC,qBAAsBlM,CAAAA,KAAAA;AAAAA,WAC1C;AAAA,SAAC,EAAA;AAAA,UAAAmN,OAAAA,EAAAA,MAAAJ,CAAAA,eAAAA,CAAAK,mBAAA,EAAA;AAAA,YAAA,GAGM5M,KAAAA;AAAAA,YAAK,GACN6L,UAAAA;AAAAA,YAAU,YACFO,EAAAA,eAAAA;AAAAA,YAAe,UACjBH,EAAAA,aAAAA;AAAAA,YAAa,MACjBxI,EAAAA,WAAAA,CAAYjE,KAAMuC,CAAAA,uBAAAA,CAAwBvC,KAAK,CAAA;AAAA,YAAC,gBACtCH,EAAAA,cAAAA;AAAAA,YAAc,OACvB8M,EAAAA,KAAAA,CAAAA;AAAAA,YAAS,WACL3G,EAAAA,SAAAA;AAAAA,YAAS,cAElBzD,EAAAA,uBAAAA,CAAwBvC,KAAU,KAAA,CAAA,GAAIuE,iBAAoBC,GAAAA,eAAAA;AAAAA,YAAe,gBAE5D2F,CAAS,IAAA,KAAA;AACtB,cAAIoC,IAAAA,YAAAA;AACF,gBAAA,OAAOA,aAAapC,IAAM5H,EAAAA,uBAAAA,CAAwBvC,KAAU,KAAA,CAAA,GAAI,UAAU,KAAK,CAAA,CAAA;AAEjF,cAAO,OAAA,KAAA,CAAA;AAAA,aACT;AAAA,YAAC,SACMqN,iBAAW,CAAA;AAAA,cAChB,CAAE,CAAA,EAAEb,SAAU,CAAA,cAAA,CAAe,GAC3BjK,uBAAAA,CAAwBvC,KAAU,KAAA,CAAA,GAAI,CAACkL,WAAAA,CAAYlL,KAAQ,GAAA,CAACyL,SAAUzL,CAAAA,KAAAA;AAAAA,aACzE,CAAA;AAAA,YAAC,OACK8D,EAAAA,iBAAAA,CAASJ,aAAc1D,CAAAA,KAAAA,EAAOuC,wBAAwBvC,KAAK,CAAA;AAAA,YAAC,QAC3D0E,EAAAA,MAAAA;AAAAA,YAAM,UACJ,EAAA,CAAA,CAAA;AAAA,YAAE,eAAA,EACGJ,CAAC6F,IAAAA,EAAMmD,OAAY,KAAA;AAEhC,cAAA,IAAI/K,wBAAwBvC,KAAU,KAAA,CAAA;AACpC6J,gBAAAA,YAAAA,CAAa,IAAI,CAAA,CAAA;AAEnB,cAAA,IAAItH,wBAAwBvC,KAAU,KAAA,CAAA;AACpCiK,gBAAAA,UAAAA,CAAW,IAAI,CAAA,CAAA;AAEjB7F,cAAAA,kBAAAA,CACEL,qBAAaE,CAAAA,WAAAA,CAAYjE,KAAOsN,EAAAA,OAAAA,EAAS/K,uBAAwBvC,CAAAA,KAAK,CACtE+D,EAAAA,qBAAAA,CAAaL,aAAc1D,CAAAA,KAAAA,EAAOmK,IAAM5H,EAAAA,uBAAAA,CAAwBvC,KAAK,CACvE,CAAA,CAAA;AAEA,cAAA,IAAIuN,QAAWpD,GAAAA,IAAAA,CAAAA;AACf,cAAA,IACEiC,kBAAkB,OACfnI,IAAAA,WAAAA,CAAYjE,MAAMuC,uBAAwBvC,CAAAA,KAAK,MAAMsN,OACxD,EAAA;AACAC,gBAAAA,QAAAA,GAAWC,2BAAmBD,CAAAA,QAAAA,EAAUD,OAAgBzN,EAAAA,cAAAA,EAAgB,CAAE,CAAA,CAAA,CAAA;AAAA,eAC5E;AAEAyD,cAAYiK,WAAAA,CAAAA,QAAAA,EAAUhL,wBAAwBvC,KAAK,CAAA,CAAA;AAAA,aACrD;AAAA,YAAC,MACK,EAAA,IAAA;AAAA,YAAI,UACA2M,EAAAA,KAAAA,CAAAA;AAAAA,YAAS,UACTA,EAAAA,KAAAA,CAAAA;AAAAA,YAAS,cAEjBpK,EAAAA,uBAAAA,CAAwBvC,KAAU,KAAA,CAAA,GAC9B8D,iBAASJ,CAAAA,aAAAA,CAAc1D,KAAO,EAAA,CAAC,CAC/B8D,GAAAA,iBAAAA,CAASJ,aAAc1D,CAAAA,KAAAA,EAAO,CAAC,CAAA;AAAA,WAAC,EAAA,IAAA,CAAA,CAAA;AAAA,SAAA,CAAA,CAAA;AAAA,OAK9C;AAEA,MAAMyN,MAAAA,eAAAA,GAAkBA,CAACtD,IAAAA,EAAgBuD,IAAqC,KAAA;AAC5E,QAAA,MAAM9N,SAASmE,qBAAaL,CAAAA,aAAAA,CAAc1D,KAAOmK,EAAAA,IAAAA,EAAM5H,wBAAwBvC,KAAK,CAAA,CAAA;AAEpF,QAAA,IAAI0N,SAAS,QAAaA,IAAAA,IAAAA,KAAS,KAAS,IAAA,CAAC9M,kBAAkBZ,KAAQ,EAAA;AAErE2G,UAAc/G,aAAAA,CAAAA,MAAAA,EAAQ2C,wBAAwBvC,KAAK,CAAA,CAAA;AAEnD,UAAA,IAAIuC,wBAAwBvC,KAAU,KAAA,CAAA;AACpC6J,YAAa,YAAA,EAAA,CAAA;AAAA;AAEbI,YAAW,UAAA,EAAA,CAAA;AAAA,SACR,MAAA;AACLtG,UAAAA,gBAAAA,CAAiB/D,MAAM,CAAA,CAAA;AAAA,SACzB;AAAA,OACF,CAAA;AAEA+N,MAAgBA,4BAAA,CAAA;AAAA,QACdhL,YAAAA;AAAAA,QACAiL,UAAY/M,EAAAA,YAAAA,CAAS,MAAML,KAAAA,CAAMM,WAAW,MAAM,CAAA;AAAA,QAClDoJ,gBAAAA;AAAAA,QACAE,gBAAAA;AAAAA,QACAyD,UAAAA,EAAYhN,YAAS,CAAA,MAAM,IAAI,CAAA;AAAA,QAC/BiN,QAAUL,EAAAA,eAAAA;AAAAA,QACVpC,IAAMzG,EAAAA,UAAAA;AAAAA,OACP,CAAA,CAAA;AAED,MAAA,OAAO,MAAM;AACX,QAAM,MAAA;AAAA,UACJ4H,SAAY,GAAA,WAAA;AAAA,UACZuB,EAAAA;AAAAA,UACAC,UAAAA;AAAAA,UACAC,iBAAAA;AAAAA,UACAC,cAAAA;AAAAA,UACAC,aAAAA;AAAAA,UACAC,iBAAAA;AAAAA,UACAvO,cAAAA;AAAAA,UACA6E,MAAAA;AAAAA,UACA2J,WAAAA;AAAAA,UACAC,SAAAA;AAAAA,UACAxN,MAAS,GAAA,MAAA;AAAA,UACTC,QAAAA;AAAAA,UACAwN,SAAY,GAAA,GAAA;AAAA,UACZ5J,YAAAA;AAAAA,UACA6J,WAAAA;AAAAA,UACAC,UAAAA;AAAAA,UACAC,UAAAA;AAAAA,UACAC,SAAAA;AAAAA,UACAC,aAAAA;AAAAA,UACAC,iBAAAA;AAAAA,UACAC,YAAAA;AAAAA,UACAC,YAAAA;AAAAA,UACAC,SAAAA;AAAAA,UACAC,IAAAA;AAAAA,UACAC,UAAAA;AAAAA,UACAlJ,SAAAA;AAAAA,UACAmJ,YAAe,GAAA,KAAA;AAAA,SACb3O,GAAAA,KAAAA,CAAAA;AAEJ,QAAM4O,MAAAA,kBAAAA,GACFpJ,cAAc,KACZ,GAAA;AAAA,UAAEqJ,KAAAA,EAAQ,CAAE9J,EAAAA,SAAAA,CAAUvF,KAAM,CAAA,EAAA,CAAA;AAAA,SAC5B,GAAA;AAAA,UAAEsP,IAAAA,EAAO,CAAE/J,EAAAA,SAAAA,CAAUvF,KAAM,CAAA,EAAA,CAAA;AAAA,SAAI,CAAA;AAErC,QAAA,SAASuP,YAAe,GAAA;AACtB,UAAIC,IAAAA,MAAAA,CAAAA;AACJ,UAAMC,MAAAA,SAAAA,GAAYC,uBAChBlD,SACAvI,EAAAA,WAAAA,CAAYjE,MAAMuC,uBAAwBvC,CAAAA,KAAK,GAC/C6O,iBACF,CAAA,CAAA;AAEA,UAAA,MAAMc,aAAaC,iBAAU,CAAA;AAAA,YAC3BpD,SAAAA;AAAAA,YACA0C,UAAAA;AAAAA,YACAtO,mBAAmBA,iBAAkBZ,CAAAA,KAAAA;AAAAA,YACrC6P,UACE,EAAA,CAAC/L,iBAASJ,CAAAA,aAAAA,CAAc1D,OAAOuC,uBAAwBvC,CAAAA,KAAK,CACxD2E,IAAAA,YAAAA,IAAgBA,YAAajB,CAAAA,aAAAA,CAAc1D,KAAMuC,CAAAA,uBAAAA,CAAwBvC,KAAK,CAAC,CAAA;AAAA,YACrF0E,MAAAA;AAAAA,YACAuK,MAAMA,MAAM;AACV,cAAA,IAAInL,iBAASJ,CAAAA,aAAAA,CAAc1D,KAAOuC,EAAAA,uBAAAA,CAAwBvC,KAAK,CAAG,EAAA;AAEhE2G,gBAAcjD,aAAAA,CAAAA,aAAAA,CAAc1D,KAAOuC,EAAAA,uBAAAA,CAAwBvC,KAAK,CAAA,CAAA;AAChE,gBAAIiP,IAAAA,IAAAA;AACFA,kBAAAA,IAAAA,CAAKvL,cAAc1D,KAAK,CAAA,CAAA;AAAA,eAC5B;AAAA,aACF;AAAA,WACD,CAAA,CAAA;AAED,UAAIc,IAAAA,MAAAA,KAAW,MAAU,IAAA,CAACC,QAAU,EAAA;AAClC,YAAA,MAAMwM,WACFhL,uBAAwBvC,CAAAA,KAAAA,KAAU,CAAIoD,GAAAA,aAAAA,CAAcpD,QAAQqD,WAAYrD,CAAAA,KAAAA,CAAAA;AAC5E,YAAA,MAAM8P,YAAetC,GAAAA,2BAAAA,CAAmBD,QAAUzM,EAAAA,MAAAA,EAAQjB,cAAc,CAAA,CAAA;AACxE,YAAA,MAAMkQ,WAAc9L,GAAAA,WAAAA,CAAYjE,KAAMuC,CAAAA,uBAAAA,CAAwBvC,KAAK,CAAA,CAAA;AAEnE,YAAA,MAAMgQ,kBAAkBD,WAAgBjP,KAAAA,MAAAA,CAAAA;AACxC,YAAA,MAAMmP,SAAY9D,GAAAA,WAAAA,CAAY6D,eAAkB,GAAA,MAAA,GAAS,KAAO,EAAA;AAAA,cAC9DE,WAAa3C,EAAAA,QAAAA;AAAAA,cACb4C,qBAAsBC,CAAgB,WAAA,KAAA;AACpC9M,gBAAY8M,WAAAA,CAAAA,WAAAA,EAAa7N,wBAAwBvC,KAAK,CAAA,CAAA;AAAA,eACxD;AAAA,aACD,CAAA,CAAA;AACD,YAAMqQ,MAAAA,UAAAA,GAAalE,YAAY,OAAS,EAAA;AAAA,cACtC+D,WAAaJ,EAAAA,YAAAA;AAAAA,cACbK,qBAAsBC,CAAgB,WAAA,KAAA;AACpC9M,gBAAAA,WAAAA,CACEkK,4BAAmB4C,WAAatP,EAAAA,MAAAA,EAAQjB,gBAAgB,CAAE,CAAA,CAAA,EAC1D0C,wBAAwBvC,KAC1B,CAAA,CAAA;AAAA,eACF;AAAA,aACD,CAAA,CAAA;AAED,YAAA,IAAIgG,cAAc,KAAO,EAAA;AACvBwJ,cAAAA,MAAAA,GAAMzC,gBAAAuD,YAAA,EAAA,IAAA,EAAA,CAEDD,UACAL,EAAAA,eAAAA,IAAmBC,SAAS,CAEhC,CAAA,CAAA;AAAA,aACI,MAAA;AACLT,cAAAA,MAAAA,GAAMzC,gBAAAuD,YAAA,EAAA,IAAA,EAAA,CAEDL,SACAD,EAAAA,eAAAA,IAAmBK,UAAU,CAEjC,CAAA,CAAA;AAAA,aACH;AAAA,WACK,MAAA;AACLb,YAAAA,MAAAA,GAASrD,WAAY,EAAA,CAAA;AAAA,WACvB;AAEA,UAAIoE,IAAAA,WAAAA,GAAoBxD,gBAAA,KAAA,EAAA;AAAA,YAAA,OAAA,EACT,GAAEP,SAAU,CAAA,aAAA,CAAA;AAAA,WAAc,EAAAO,CAAAA,eAAAA,CAAAyD,mBAAA,EAAA;AAAA,YAAA,WAExBhE,EAAAA,SAAAA;AAAAA,YAAS,WACXtL,UAAWlB,CAAAA,KAAAA;AAAAA,YAAK,WACfyQ,CAAc,SAAA,KAAA;AACtB9J,cAAAA,aAAAA,CAAc8J,WAAW,IAAI,CAAA,CAAA;AAC7BrK,cAAY,WAAA,CAAA,KAAA,EAAO7D,wBAAwBvC,KAAK,CAAA,CAAA;AAAA,aAClD;AAAA,YAAC,WACS0Q,CAAe,UAAA,KAAA;AACvBnH,cAAAA,kBAAAA,CAAmBmH,UAAU,CAAA,CAAA;AAAA,aAC/B;AAAA,WAAC,EAAA3D,IAAAA,CAAAA,EAAAA,eAAAA,eAAAA,gBAAA,KAAA,EAAA;AAAA,YAAA,OAAA,EAGY,GAAEP,SAAU,CAAA,OAAA,CAAA;AAAA,WAAQ,EAAA,CAAGgD,MAAM,CACzC,IAACC,SAAaE,IAAAA,UAAAA,KAAU5C,gBAAA,KAAA,EAAA;AAAA,YAAA,OAAA,EACV,GAAEP,SAAU,CAAA,OAAA,CAAA;AAAA,WAAQ,EAAA,CAC9BiD,SACAE,EAAAA,UAAU,CAAA,CAEd,CAGN,CAAA,CAAA,CAAA,CAAA;AAED,UAAInB,IAAAA,WAAAA;AACF+B,YAAAA,WAAAA,GAAc/B,YAAY+B,WAAW,CAAA,CAAA;AAEvC,UAAA,OAAAxD,gBAAA,KAAA,EAAA;AAAA,YAAA,OAAA,EAEY,GAAEP,SAAU,CAAA,gBAAA,CAAA;AAAA,YAAiB,OAC9B,EAAA;AAAA,cAAEmE,UAAAA,EAAa,CAAErL,EAAAA,SAAAA,CAAUtF,KAAM,CAAA,EAAA,CAAA;AAAA,aAAI;AAAA,YAAC,KACxCuB,EAAAA,WAAAA;AAAAA,YAAW,eACFyG,CAAM,CAAA,KAAA;AAClBA,cAAAA,CAAAA,CAAEsD,cAAe,EAAA,CAAA;AAAA,aACnB;AAAA,WAAC,EAAA,CAEAiF,WAAW,CAAA,CAAA,CAAA;AAAA,SAGlB;AAEA,QAAMK,MAAAA,UAAAA,GAAU7D,gBAAA,KAAA,EAAA;AAAA,UAAA,OAAA,EAELM,kBAAY,CAAEb,EAAAA,SAAU,kBAAkB,CAAEA,EAAAA,SAAU,CAAG1L,CAAAA,EAAAA,MAAO,CAAe,cAAA,CAAA,CAAA;AAAA,UAAC,OAChF,EAAA;AAAA,YAAE+P,QAAAA,EAAW,CAAErL,EAAAA,aAAAA,CAAcxF,KAAM,CAAA,EAAA,CAAA;AAAA,WAAI;AAAA,SAAC,EAAA,CAAA+M,eAAAA,CAAA,KAAA,EAAA;AAAA,UAAA,KAErClL,EAAAA,QAAAA;AAAAA,UAAQ,OAAA,EAAU,GAAE2K,SAAU,CAAA,YAAA,CAAA;AAAA,UAAa,OAAS4C,EAAAA,kBAAAA;AAAAA,SAC7DG,EAAAA,IAAAA,CAAAA,EAAAA,YAAAA,EAAc,CAElB,CAAA,CAAA;AAGD,QAAIuB,IAAAA,UAAAA,CAAAA;AACJ,QAAIpC,IAAAA,UAAAA;AACFoC,UAAAA,UAAAA,GAAU/D,gBAAA,MAAA,EAAA;AAAA,YAAA,OAAA,EAAiB,GAAEP,SAAU,CAAA,OAAA,CAAA;AAAA,WAAQ,EAAA,CAAGkC,UAAU,CAAQ,CAAA,CAAA;AAEtE,QAAIqC,IAAAA,SAAAA,CAAAA;AACJ,QACEtC,IAAAA,UAAAA,KACK3K,kBAASf,WAAY/C,CAAAA,KAAAA,EAAO,CAAC,CAAK,IAAA,CAAC4C,eAAe5C,KAAM,CAAA,CAAC,KACxD8D,iBAASf,CAAAA,WAAAA,CAAY/C,OAAO,CAAC,CAAA,IAAK,CAAC4C,cAAe5C,CAAAA,KAAAA,CAAM,CAAC,CAC/D,CAAA,EAAA;AACA+Q,UAAAA,SAAAA,GAAShE,gBAAA,MAAA,EAAA;AAAA,YAAA,eAES/E,CAAM,CAAA,KAAA;AAClBA,cAAAA,CAAAA,CAAEsD,cAAe,EAAA,CAAA;AACjBtD,cAAAA,CAAAA,CAAEgJ,eAAgB,EAAA,CAAA;AAAA,aACpB;AAAA,YAAC,aACWhJ,CAAM,CAAA,KAAA;AAChBA,cAAAA,CAAAA,CAAEsD,cAAe,EAAA,CAAA;AACjBtD,cAAAA,CAAAA,CAAEgJ,eAAgB,EAAA,CAAA;AAClB,cAAA,IAAIpR,SAASmD,WAAY/C,CAAAA,KAAAA,CAAAA;AAEzB,cAAI,IAAA,CAAC4C,cAAe5C,CAAAA,KAAAA,CAAM,CAAC,CAAA;AACzBJ,gBAASmE,MAAAA,GAAAA,qBAAAA,CAAanE,MAAQ,EAAA,IAAA,EAAM,CAAC,CAAA,CAAA;AAEvC,cAAI,IAAA,CAACgD,cAAe5C,CAAAA,KAAAA,CAAM,CAAC,CAAA;AACzBJ,gBAASmE,MAAAA,GAAAA,qBAAAA,CAAanE,MAAQ,EAAA,IAAA,EAAM,CAAC,CAAA,CAAA;AAEvC+G,cAAAA,aAAAA,CAAc/G,QAAQ,IAAI,CAAA,CAAA;AAC1BwG,cAAY,WAAA,CAAA,KAAA,EAAO7D,wBAAwBvC,KAAK,CAAA,CAAA;AAAA,aAClD;AAAA,YAAC,OAAA,EACO,GAAEwM,SAAU,CAAA,MAAA,CAAA;AAAA,WAEnBmC,EAAAA,CAAAA,SAAS5B,IAAAA,eAAAA,CAAA,MAAA,EAAA;AAAA,YAAA,OAAA,EAAkB,GAAEP,SAAU,CAAA,UAAA,CAAA;AAAA,WAAW,EAAA,IAAA,CAAI,CAE1D,CAAA,CAAA;AAAA,SACH;AAEA,QAAA,MAAMyE,gBAAmB,GAAA;AAAA,UACvBC,MAAMC,mBAAarQ,CAAAA,MAAAA,EAAQoB,WAAWlC,KAAM,CAAA,CAAC,GAAGH,cAAc,CAAA;AAAA,SAChE,CAAA;AAEA,QAAA,IAAIuR,aAAgB,GAAA,CAAA,CAAA;AACpB,QAAA,IAAIC,cAAiB,GAAA,CAAA,CAAA;AACrB,QAAA,IAAI7P,gBAAiBxB,CAAAA,KAAAA,IAASyB,cAAezB,CAAAA,KAAAA,IAAS0B,aAAa1B,KAAO,EAAA;AACxE,UAAIuC,IAAAA,uBAAAA,CAAwBvC,UAAU,CAAG,EAAA;AACvCqR,YAAAA,cAAAA,GAAiB7P,iBAAiBxB,KAAMsR,CAAAA,WAAAA,CAAAA;AAAAA,WACnC,MAAA;AACLF,YAAAA,aAAAA,GAAgB7L,SAAUvF,CAAAA,KAAAA,CAAAA;AAC1BqR,YAAAA,cAAAA,GAAiB5P,eAAezB,KAAMsR,CAAAA,WAAAA,CAAAA;AAAAA,WACxC;AAAA,SACF;AACA,QAAMC,MAAAA,sBAAAA,GACFvL,cAAc,KAAQ,GAAA;AAAA,UAAEqJ,KAAAA,EAAQ,GAAE+B,aAAc,CAAA,EAAA,CAAA;AAAA,SAAQ,GAAA;AAAA,UAAE9B,IAAAA,EAAO,GAAE8B,aAAc,CAAA,EAAA,CAAA;AAAA,SAAI,CAAA;AAGzF,QAAA,OAAArE,gBAAA,KAAA,EAAA;AAAA,UAAA,KAESzL,EAAAA,YAAAA;AAAAA,UAAY,SACV+L,iBAAWb,CAAAA,SAAAA,EAAY,GAAEA,SAAU,CAAA,MAAA,CAAA,EAAS9L,MAAM8Q,KAAO,EAAA;AAAA,YAC9D,CAAE,CAAEhF,EAAAA,SAAU,CAAU,SAAA,CAAA,GAAG5J,cAAe5C,CAAAA,KAAAA,CAAM,CAAC,CAAA,IAAK4C,cAAe5C,CAAAA,KAAAA,CAAM,CAAC,CAAA;AAAA,YAC5E,CAAE,CAAEwM,EAAAA,SAAU,CAAS,QAAA,CAAA,GACrBjK,wBAAwBvC,KAAU,KAAA,CAAA,GAAIgL,YAAahL,CAAAA,KAAAA,GAAQwL,UAAWxL,CAAAA,KAAAA;AAAAA,YACxE,CAAE,CAAA,EAAEwM,SAAU,CAAA,IAAA,CAAK,GAAGxG,SAAc,KAAA,KAAA;AAAA,WACrC,CAAA;AAAA,UAAC,SACKtF,KAAM+Q,CAAAA,KAAAA;AAAAA,UAAK,SACT/F,EAAAA,aAAAA;AAAAA,UAAa,cACRoD,EAAAA,YAAAA;AAAAA,UAAY,cACZC,EAAAA,YAAAA;AAAAA,UAAY,aACblD,EAAAA,iBAAAA;AAAAA,UAAiB,WACnBmD,EAAAA,SAAAA;AAAAA,UAAS,GAChB0C,iBAAmBlR,KAAK,CAAA;AAAA,SAAC,EAAA,CAAAuM,eAAAA,CAAA,KAAA,EAAA;AAAA,UAAA,OAGpBM,EAAAA,iBAAAA,CAAY,CAAEb,EAAAA,SAAU,CAAS,MAAA,CAAA,EAAA;AAAA,YACtC,CAAE,CAAEA,EAAAA,SAAU,CAAc,aAAA,CAAA,GAAGjK,wBAAwBvC,KAAU,KAAA,CAAA;AAAA,YACjE,CAAE,CAAEwM,EAAAA,SAAU,oBAAmB,GAAG,CAAC,CAAC7C,eAAgB3J,CAAAA,KAAAA;AAAAA,WACvD,CAAA;AAAA,UAAC,KACGwB,EAAAA,gBAAAA;AAAAA,SAAgB,EAAA,CAAAuL,eAAAA,CAAA,OAAA,EAAA;AAAA,UAAA,IAGfgB,EAAAA,EAAAA;AAAAA,UAAE,UAAA,EACInL,cAAe5C,CAAAA,KAAAA,CAAM,CAAC,CAAA;AAAA,UAAC,UAAA,EAE/B4O,iBAAiB,OAAO1M,UAAAA,CAAWlC,MAAM,CAAC,CAAA,KAAM,UAAc,IAAA,CAACkL,WAAYlL,CAAAA,KAAAA;AAAAA,UAAK,OAAA,EAE3E2J,eAAgB3J,CAAAA,KAAAA,IAAS8I,SAAU9I,CAAAA,KAAAA;AAAAA,UAAK,WACrCgI,CAAmB,CAAA,KAAA;AAC3Be,YAAuBf,sBAAAA,CAAAA,CAAAA,CAAEyC,OAAOzK,KAAK,CAAA,CAAA;AAAA,WACvC;AAAA,UAAC,WACUsO,EAAAA,SAAAA;AAAAA,UAAS,aACPxK,EAAAA,iBAAAA,CAASuK,WAAa,EAAA,CAAC,CAAK,IAAA,EAAA;AAAA,UAAE,KACtC1M,EAAAA,aAAAA;AAAAA,UAAa,GACdmJ,eAAgB9K,CAAAA,KAAAA;AAAAA,UAAK,GACrBiR,gBAAAA;AAAAA,UAAgB,cACN9B,EAAAA,YAAAA;AAAAA,WAAY,IAAA,CAAA,CAAA,CAAA,EAAApC,gBAAA,KAAA,EAAA;AAAA,UAAA,OAAA,EAGjB,GAAEP,SAAU,CAAA,gBAAA,CAAA;AAAA,UAAiB,KAAO9K,EAAAA,YAAAA;AAAAA,WAC9C6M,CAAAA,SAAS,IAAAxB,gBAAA,KAAA,EAAA;AAAA,UAAA,OAGHM,EAAAA,iBAAAA,CAAY,CAAEb,EAAAA,SAAU,CAAS,MAAA,CAAA,EAAA;AAAA,YACtC,CAAE,CAAEA,EAAAA,SAAU,CAAc,aAAA,CAAA,GAAGjK,wBAAwBvC,KAAU,KAAA,CAAA;AAAA,YACjE,CAAE,CAAEwM,EAAAA,SAAU,oBAAmB,GAAG,CAAC,CAACzC,aAAc/J,CAAAA,KAAAA;AAAAA,WACrD,CAAA;AAAA,UAAC,KACGyB,EAAAA,cAAAA;AAAAA,SAAc,EAAA,CAAAsL,eAAAA,CAAA,OAAA,EAAA;AAAA,UAAA,UAAA,EAGPnK,cAAe5C,CAAAA,KAAAA,CAAM,CAAC,CAAA;AAAA,UAAC,UAAA,EAE/B4O,iBAAiB,OAAO1M,UAAAA,CAAWlC,MAAM,CAAC,CAAA,KAAM,UAAc,IAAA,CAACyL,SAAUzL,CAAAA,KAAAA;AAAAA,UAAK,OAAA,EAEzE+J,aAAc/J,CAAAA,KAAAA,IAASmJ,OAAQnJ,CAAAA,KAAAA;AAAAA,UAAK,WACjCgI,CAAmB,CAAA,KAAA;AAC3BoB,YAAqBpB,oBAAAA,CAAAA,CAAAA,CAAEyC,OAAOzK,KAAK,CAAA,CAAA;AAAA,WACrC;AAAA,UAAC,aACY8D,EAAAA,iBAAAA,CAASuK,WAAa,EAAA,CAAC,CAAK,IAAA,EAAA;AAAA,UAAE,KACtCzM,EAAAA,WAAAA;AAAAA,UAAW,GACZ2J,aAAcvL,CAAAA,KAAAA;AAAAA,UAAK,GACnBiR,gBAAAA;AAAAA,UAAgB,cACN9B,EAAAA,YAAAA;AAAAA,WAAY,IAAA,CAAA,CAAA,CAAA,EAAApC,gBAAA,KAAA,EAAA;AAAA,UAAA,OAAA,EAIpB,GAAEP,SAAU,CAAA,WAAA,CAAA;AAAA,UAAY,OACzB,EAAA;AAAA,YACL,GAAG+E,sBAAAA;AAAAA,YACH9L,KAAAA,EAAQ,GAAE4L,cAAe,CAAA,EAAA,CAAA;AAAA,YACzBM,QAAU,EAAA,UAAA;AAAA,WACZ;AAAA,WAAC,IAAA,CAAA,EAEFb,UACAC,EAAAA,SAAAA,EAAShE,gBAAA6E,qBAAA,EAAA;AAAA,UAAA,WAEChN,UAAW5E,CAAAA,KAAAA;AAAAA,UAAK,YACbgO,EAAAA,UAAAA;AAAAA,UAAU,WACXxB,EAAAA,SAAAA;AAAAA,UAAS,mBACDyB,EAAAA,iBAAAA;AAAAA,UAAiB,eACrBE,EAAAA,aAAAA;AAAAA,UAAa,mBACTC,EAAAA,iBAAAA;AAAAA,UAAiB,gBACpBF,EAAAA,cAAAA;AAAAA,UAAc,OAAA,EAAA,IAAA;AAAA,UAAA,WAEnBlI,EAAAA,SAAAA;AAAAA,SAAS,EAAA;AAAA,UAAAmH,OAAAA,EAAAA,MAAA,CAAAJ,eAAAA,CAAA,KAAA,EAAA;AAAA,YAAA,OAMX,EAAA;AAAA,cACL8E,aAAe,EAAA,MAAA;AAAA,cACfF,QAAU,EAAA,UAAA;AAAA,cACVG,GAAK,EAAA,CAAA;AAAA,cACLC,MAAQ,EAAA,CAAA;AAAA,cACRzC,IAAM,EAAA,CAAA;AAAA,cACND,KAAO,EAAA,CAAA;AAAA,aACT;AAAA,WAAC,EAAA,IAAA,CAAA,CAAA;AAAA,UAXD2C,cAAcA,MAAMpB,UAAAA;AAAAA,SAAU,CAAA,CAAA,CAAA,CAAA;AAAA,OAiBxC,CAAA;AAAA,KACF;AAAA,GACD,CAAA,CAAA;AACH,CAAA;AAEA,MAAMqB,oBAAoB7R,YAAkB;;;;"}