{"version":3,"file":"index.cjs","sources":["../../../../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["import { KeyboardEvent, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { isSameDate, UseCalendarOptions } from '@h6s/calendar';\nimport * as Popover from '@radix-ui/react-popover';\nimport { Body, CalendarRenderer, DatePickerInput, DateTableCell } from './Common';\nimport {\n  isDateNotInAllowList,\n  shiftFromTimezone,\n  shiftToTimezone,\n  Timezone,\n} from './utils';\nimport { useResolvedPortalContainer } from '@/providers/PortalContext';\nimport styles from './DatePicker.module.css';\n\nconst DAYS_IN_WEEK = 7;\n\ninterface CalendarProps {\n  allowOnlyDatesList?: Array<Date>;\n  calendarBody: Body;\n  closeDatepicker: () => void;\n  futureDatesDisabled: boolean;\n  selectedDate?: Date;\n  setSelectedDate: (selectedDate: Date) => void;\n  focusOnOpen?: boolean;\n  timezone: Timezone;\n}\n\nconst Calendar = ({\n  allowOnlyDatesList,\n  calendarBody,\n  closeDatepicker,\n  futureDatesDisabled,\n  selectedDate,\n  setSelectedDate,\n  focusOnOpen = false,\n  timezone,\n}: CalendarProps) => {\n  const allDays = calendarBody.value.flatMap(week => week.value);\n  const totalDays = allDays.length;\n\n  const today = shiftToTimezone(new Date(), timezone);\n\n  const shiftedSelected = selectedDate\n    ? shiftToTimezone(selectedDate, timezone)\n    : undefined;\n\n  const shiftedAllowList = useMemo(() => {\n    return allowOnlyDatesList?.map(date => {\n      return shiftToTimezone(date, timezone);\n    });\n  }, [allowOnlyDatesList, timezone]);\n\n  const initialFocusIndex = allDays.findIndex(day =>\n    shiftedSelected\n      ? isSameDate(shiftedSelected, day.value)\n      : isSameDate(today, day.value)\n  );\n\n  const [focusedDayIndex, setFocusedDayIndex] = useState<number>(\n    initialFocusIndex >= 0 ? initialFocusIndex : 0\n  );\n  const dayRefs = useRef<Array<HTMLTableCellElement | null>>([]);\n\n  useEffect(() => {\n    dayRefs.current[focusedDayIndex]?.focus();\n  }, [focusedDayIndex]);\n\n  useEffect(() => {\n    if (focusOnOpen && initialFocusIndex >= 0) {\n      const timeoutId = setTimeout(() => {\n        dayRefs.current[initialFocusIndex]?.focus();\n      }, 0);\n      return () => clearTimeout(timeoutId);\n    }\n  }, [focusOnOpen, initialFocusIndex]);\n\n  const onDayKeyDown = useCallback(\n    (\n      event: KeyboardEvent<HTMLTableCellElement>,\n      index: number,\n      fullDate: Date,\n      isDisabled: boolean\n    ) => {\n      let newIndex = index;\n\n      switch (event.key) {\n        case 'ArrowRight':\n          event.preventDefault();\n          newIndex = (index + 1) % totalDays;\n          break;\n        case 'ArrowLeft':\n          event.preventDefault();\n          newIndex = (index - 1 + totalDays) % totalDays;\n          break;\n        case 'ArrowDown':\n          event.preventDefault();\n          newIndex = (index + DAYS_IN_WEEK) % totalDays;\n          break;\n        case 'ArrowUp':\n          event.preventDefault();\n          newIndex = (index - DAYS_IN_WEEK + totalDays) % totalDays;\n          break;\n        case 'Enter':\n        case ' ':\n          event.preventDefault();\n          if (!isDisabled) {\n            setSelectedDate(shiftFromTimezone(fullDate, timezone));\n            closeDatepicker();\n          }\n          return;\n        default:\n          return;\n      }\n\n      setFocusedDayIndex(newIndex);\n      dayRefs.current[newIndex]?.focus();\n    },\n    [totalDays, setSelectedDate, closeDatepicker, timezone]\n  );\n\n  let dayIndex = 0;\n\n  return calendarBody.value.map(({ key: weekKey, value: week }) => {\n    return (\n      <tr key={weekKey}>\n        {week.map(({ date, isCurrentMonth, key: dayKey, value: fullDate }) => {\n          const isSelected = shiftedSelected && isSameDate(shiftedSelected, fullDate);\n          const isPresent = isSameDate(today, fullDate);\n\n          const isNotAllowed = isDateNotInAllowList(shiftedAllowList, fullDate);\n\n          const isFutureDisabled = futureDatesDisabled && fullDate > today;\n          const isDisabled = isNotAllowed || isFutureDisabled;\n          const currentIndex = dayIndex;\n          dayIndex++;\n\n          const handleClick = () => {\n            if (isDisabled) {\n              return false;\n            }\n            setSelectedDate(shiftFromTimezone(fullDate, timezone));\n            closeDatepicker();\n          };\n\n          return (\n            <DateTableCell\n              ref={el => {\n                dayRefs.current[currentIndex] = el;\n              }}\n              isCurrentMonth={isCurrentMonth}\n              isDisabled={isDisabled}\n              isSelected={Boolean(isSelected)}\n              isPresent={isPresent}\n              key={dayKey}\n              onClick={handleClick}\n              onKeyDown={e => onDayKeyDown(e, currentIndex, fullDate, isDisabled)}\n              tabIndex={currentIndex === focusedDayIndex ? 0 : -1}\n              role=\"gridcell\"\n              aria-label={fullDate.toDateString()}\n            >\n              {date}\n            </DateTableCell>\n          );\n        })}\n      </tr>\n    );\n  });\n};\n\nexport interface DatePickerProps {\n  allowOnlyDatesList?: Array<Date>;\n  container?: HTMLElement | null;\n  date?: Date;\n  disabled?: boolean;\n  futureDatesDisabled?: boolean;\n  onSelectDate: (selectedDate: Date) => void;\n  placeholder?: string;\n  responsivePositioning?: boolean;\n  timezone?: Timezone;\n}\n\nexport const DatePicker = ({\n  allowOnlyDatesList,\n  container,\n  date,\n  disabled = false,\n  futureDatesDisabled = false,\n  onSelectDate,\n  placeholder,\n  responsivePositioning = true,\n  timezone = 'system',\n}: DatePickerProps) => {\n  const [isOpen, setIsOpen] = useState<boolean>(false);\n  const [selectedDate, setSelectedDate] = useState<Date>();\n  const [partialYear, setPartialYear] = useState<number>();\n  const [partialMonth, setPartialMonth] = useState<number>();\n  const [autoFocusCalendar, setAutoFocusCalendar] = useState<boolean>(false);\n\n  const calendarOptions: UseCalendarOptions = {};\n  const portalContainer = useResolvedPortalContainer(container);\n\n  if (selectedDate) {\n    calendarOptions.defaultDate = selectedDate;\n  }\n\n  useEffect(() => {\n    if (date) {\n      setSelectedDate(date);\n    }\n  }, [date]);\n\n  const resetPartialState = useCallback(() => {\n    setPartialYear(undefined);\n    setPartialMonth(undefined);\n  }, []);\n\n  const onOpenChange = useCallback(\n    (open: boolean) => {\n      setIsOpen(open);\n      if (!open) {\n        resetPartialState();\n        setAutoFocusCalendar(false);\n      }\n    },\n    [resetPartialState]\n  );\n\n  const onCloseDatePicker = useCallback(() => {\n    setIsOpen(false);\n    resetPartialState();\n  }, [resetPartialState]);\n\n  const onDateSelect = useCallback(\n    (date: Date): void => {\n      setSelectedDate(date);\n      onSelectDate(date);\n      resetPartialState();\n    },\n    [onSelectDate, resetPartialState]\n  );\n\n  const onYearSelect = useCallback((year: number) => {\n    setPartialYear(year);\n    setPartialMonth(undefined);\n  }, []);\n\n  const onMonthSelect = useCallback((year: number, month: number) => {\n    setPartialYear(year);\n    setPartialMonth(month);\n  }, []);\n\n  const onTriggerKeyDown = useCallback((e: KeyboardEvent<HTMLButtonElement>) => {\n    if (e.key === 'Enter' || e.key === ' ') {\n      e.preventDefault();\n      setIsOpen(true);\n      setAutoFocusCalendar(true);\n    }\n  }, []);\n\n  return (\n    <Popover.Root\n      onOpenChange={onOpenChange}\n      open={isOpen}\n    >\n      <Popover.Trigger\n        className={styles['popover-trigger']}\n        disabled={disabled}\n        onKeyDown={onTriggerKeyDown}\n      >\n        <DatePickerInput\n          data-testid=\"datepicker-input-container\"\n          disabled={disabled}\n          isActive={isOpen}\n          partialMonth={partialMonth}\n          partialYear={partialYear}\n          placeholder={placeholder}\n          selectedDate={selectedDate}\n          timezone={timezone}\n        />\n      </Popover.Trigger>\n      <Popover.Portal container={portalContainer}>\n        <Popover.Content\n          className={styles['popover-content']}\n          align=\"start\"\n          avoidCollisions={responsivePositioning}\n          sideOffset={4}\n        >\n          <CalendarRenderer\n            calendarOptions={calendarOptions}\n            onYearSelect={onYearSelect}\n            onMonthSelect={onMonthSelect}\n            selectedDate={selectedDate}\n            timezone={timezone}\n          >\n            {body => (\n              <Calendar\n                allowOnlyDatesList={allowOnlyDatesList}\n                calendarBody={body}\n                closeDatepicker={onCloseDatePicker}\n                focusOnOpen={autoFocusCalendar}\n                futureDatesDisabled={futureDatesDisabled}\n                selectedDate={selectedDate}\n                setSelectedDate={onDateSelect}\n                timezone={timezone}\n              />\n            )}\n          </CalendarRenderer>\n        </Popover.Content>\n      </Popover.Portal>\n    </Popover.Root>\n  );\n};\n"],"names":["shiftToTimezone","useMemo","isSameDate","useState","useRef","useEffect","useCallback","shiftFromTimezone","jsx","isDateNotInAllowList","DateTableCell","useResolvedPortalContainer","date","jsxs","Popover","styles","DatePickerInput","CalendarRenderer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,MAAM,YAAA,GAAe,CAAA;AAarB,MAAM,WAAW,CAAC;AAAA,EAChB,kBAAA;AAAA,EACA,YAAA;AAAA,EACA,eAAA;AAAA,EACA,mBAAA;AAAA,EACA,YAAA;AAAA,EACA,eAAA;AAAA,EACA,WAAA,GAAc,KAAA;AAAA,EACd;AACF,CAAA,KAAqB;AACnB,EAAA,MAAM,UAAU,YAAA,CAAa,KAAA,CAAM,OAAA,CAAQ,CAAA,IAAA,KAAQ,KAAK,KAAK,CAAA;AAC7D,EAAA,MAAM,YAAY,OAAA,CAAQ,MAAA;AAE1B,EAAA,MAAM,KAAA,GAAQA,qBAAA,iBAAgB,IAAI,IAAA,IAAQ,QAAQ,CAAA;AAElD,EAAA,MAAM,eAAA,GAAkB,YAAA,GACpBA,qBAAA,CAAgB,YAAA,EAAc,QAAQ,CAAA,GACtC,MAAA;AAEJ,EAAA,MAAM,gBAAA,GAAmBC,cAAQ,MAAM;AACrC,IAAA,OAAO,kBAAA,EAAoB,IAAI,CAAA,IAAA,KAAQ;AACrC,MAAA,OAAOD,qBAAA,CAAgB,MAAM,QAAQ,CAAA;AAAA,IACvC,CAAC,CAAA;AAAA,EACH,CAAA,EAAG,CAAC,kBAAA,EAAoB,QAAQ,CAAC,CAAA;AAEjC,EAAA,MAAM,oBAAoB,OAAA,CAAQ,SAAA;AAAA,IAAU,CAAA,GAAA,KAC1C,eAAA,GACIE,mBAAA,CAAW,eAAA,EAAiB,GAAA,CAAI,KAAK,CAAA,GACrCA,mBAAA,CAAW,KAAA,EAAO,GAAA,CAAI,KAAK;AAAA,GACjC;AAEA,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAIC,cAAA;AAAA,IAC5C,iBAAA,IAAqB,IAAI,iBAAA,GAAoB;AAAA,GAC/C;AACA,EAAA,MAAM,OAAA,GAAUC,YAAA,CAA2C,EAAE,CAAA;AAE7D,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,OAAA,CAAQ,OAAA,CAAQ,eAAe,CAAA,EAAG,KAAA,EAAM;AAAA,EAC1C,CAAA,EAAG,CAAC,eAAe,CAAC,CAAA;AAEpB,EAAAA,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,WAAA,IAAe,qBAAqB,CAAA,EAAG;AACzC,MAAA,MAAM,SAAA,GAAY,WAAW,MAAM;AACjC,QAAA,OAAA,CAAQ,OAAA,CAAQ,iBAAiB,CAAA,EAAG,KAAA,EAAM;AAAA,MAC5C,GAAG,CAAC,CAAA;AACJ,MAAA,OAAO,MAAM,aAAa,SAAS,CAAA;AAAA,IACrC;AAAA,EACF,CAAA,EAAG,CAAC,WAAA,EAAa,iBAAiB,CAAC,CAAA;AAEnC,EAAA,MAAM,YAAA,GAAeC,iBAAA;AAAA,IACnB,CACE,KAAA,EACA,KAAA,EACA,QAAA,EACA,UAAA,KACG;AACH,MAAA,IAAI,QAAA,GAAW,KAAA;AAEf,MAAA,QAAQ,MAAM,GAAA;AAAK,QACjB,KAAK,YAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,QAAA,GAAA,CAAY,QAAQ,CAAA,IAAK,SAAA;AACzB,UAAA;AAAA,QACF,KAAK,WAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,QAAA,GAAA,CAAY,KAAA,GAAQ,IAAI,SAAA,IAAa,SAAA;AACrC,UAAA;AAAA,QACF,KAAK,WAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,QAAA,GAAA,CAAY,QAAQ,YAAA,IAAgB,SAAA;AACpC,UAAA;AAAA,QACF,KAAK,SAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,QAAA,GAAA,CAAY,KAAA,GAAQ,eAAe,SAAA,IAAa,SAAA;AAChD,UAAA;AAAA,QACF,KAAK,OAAA;AAAA,QACL,KAAK,GAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,IAAI,CAAC,UAAA,EAAY;AACf,YAAA,eAAA,CAAgBC,uBAAA,CAAkB,QAAA,EAAU,QAAQ,CAAC,CAAA;AACrD,YAAA,eAAA,EAAgB;AAAA,UAClB;AACA,UAAA;AAAA,QACF;AACE,UAAA;AAAA;AAGJ,MAAA,kBAAA,CAAmB,QAAQ,CAAA;AAC3B,MAAA,OAAA,CAAQ,OAAA,CAAQ,QAAQ,CAAA,EAAG,KAAA,EAAM;AAAA,IACnC,CAAA;AAAA,IACA,CAAC,SAAA,EAAW,eAAA,EAAiB,eAAA,EAAiB,QAAQ;AAAA,GACxD;AAEA,EAAA,IAAI,QAAA,GAAW,CAAA;AAEf,EAAA,OAAO,YAAA,CAAa,MAAM,GAAA,CAAI,CAAC,EAAE,GAAA,EAAK,OAAA,EAAS,KAAA,EAAO,IAAA,EAAK,KAAM;AAC/D,IAAA,uBACEC,cAAA,CAAC,IAAA,EAAA,EACE,QAAA,EAAA,IAAA,CAAK,GAAA,CAAI,CAAC,EAAE,IAAA,EAAM,cAAA,EAAgB,GAAA,EAAK,MAAA,EAAQ,KAAA,EAAO,QAAA,EAAS,KAAM;AACpE,MAAA,MAAM,UAAA,GAAa,eAAA,IAAmBN,mBAAA,CAAW,eAAA,EAAiB,QAAQ,CAAA;AAC1E,MAAA,MAAM,SAAA,GAAYA,mBAAA,CAAW,KAAA,EAAO,QAAQ,CAAA;AAE5C,MAAA,MAAM,YAAA,GAAeO,0BAAA,CAAqB,gBAAA,EAAkB,QAAQ,CAAA;AAEpE,MAAA,MAAM,gBAAA,GAAmB,uBAAuB,QAAA,GAAW,KAAA;AAC3D,MAAA,MAAM,aAAa,YAAA,IAAgB,gBAAA;AACnC,MAAA,MAAM,YAAA,GAAe,QAAA;AACrB,MAAA,QAAA,EAAA;AAEA,MAAA,MAAM,cAAc,MAAM;AACxB,QAAA,IAAI,UAAA,EAAY;AACd,UAAA,OAAO,KAAA;AAAA,QACT;AACA,QAAA,eAAA,CAAgBF,uBAAA,CAAkB,QAAA,EAAU,QAAQ,CAAC,CAAA;AACrD,QAAA,eAAA,EAAgB;AAAA,MAClB,CAAA;AAEA,MAAA,uBACEC,cAAA;AAAA,QAACE,oBAAA;AAAA,QAAA;AAAA,UACC,KAAK,CAAA,EAAA,KAAM;AACT,YAAA,OAAA,CAAQ,OAAA,CAAQ,YAAY,CAAA,GAAI,EAAA;AAAA,UAClC,CAAA;AAAA,UACA,cAAA;AAAA,UACA,UAAA;AAAA,UACA,UAAA,EAAY,QAAQ,UAAU,CAAA;AAAA,UAC9B,SAAA;AAAA,UAEA,OAAA,EAAS,WAAA;AAAA,UACT,WAAW,CAAA,CAAA,KAAK,YAAA,CAAa,CAAA,EAAG,YAAA,EAAc,UAAU,UAAU,CAAA;AAAA,UAClE,QAAA,EAAU,YAAA,KAAiB,eAAA,GAAkB,CAAA,GAAI,EAAA;AAAA,UACjD,IAAA,EAAK,UAAA;AAAA,UACL,YAAA,EAAY,SAAS,YAAA,EAAa;AAAA,UAEjC,QAAA,EAAA;AAAA,SAAA;AAAA,QAPI;AAAA,OAQP;AAAA,IAEJ,CAAC,KAvCM,OAwCT,CAAA;AAAA,EAEJ,CAAC,CAAA;AACH,CAAA;AAcO,MAAM,aAAa,CAAC;AAAA,EACzB,kBAAA;AAAA,EACA,SAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,mBAAA,GAAsB,KAAA;AAAA,EACtB,YAAA;AAAA,EACA,WAAA;AAAA,EACA,qBAAA,GAAwB,IAAA;AAAA,EACxB,QAAA,GAAW;AACb,CAAA,KAAuB;AACrB,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIP,eAAkB,KAAK,CAAA;AACnD,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,cAAA,EAAe;AACvD,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,cAAA,EAAiB;AACvD,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,cAAA,EAAiB;AACzD,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAIA,eAAkB,KAAK,CAAA;AAEzE,EAAA,MAAM,kBAAsC,EAAC;AAC7C,EAAA,MAAM,eAAA,GAAkBQ,yCAA2B,SAAS,CAAA;AAE5D,EAAA,IAAI,YAAA,EAAc;AAChB,IAAA,eAAA,CAAgB,WAAA,GAAc,YAAA;AAAA,EAChC;AAEA,EAAAN,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,eAAA,CAAgB,IAAI,CAAA;AAAA,IACtB;AAAA,EACF,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAA,MAAM,iBAAA,GAAoBC,kBAAY,MAAM;AAC1C,IAAA,cAAA,CAAe,MAAS,CAAA;AACxB,IAAA,eAAA,CAAgB,MAAS,CAAA;AAAA,EAC3B,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,YAAA,GAAeA,iBAAA;AAAA,IACnB,CAAC,IAAA,KAAkB;AACjB,MAAA,SAAA,CAAU,IAAI,CAAA;AACd,MAAA,IAAI,CAAC,IAAA,EAAM;AACT,QAAA,iBAAA,EAAkB;AAClB,QAAA,oBAAA,CAAqB,KAAK,CAAA;AAAA,MAC5B;AAAA,IACF,CAAA;AAAA,IACA,CAAC,iBAAiB;AAAA,GACpB;AAEA,EAAA,MAAM,iBAAA,GAAoBA,kBAAY,MAAM;AAC1C,IAAA,SAAA,CAAU,KAAK,CAAA;AACf,IAAA,iBAAA,EAAkB;AAAA,EACpB,CAAA,EAAG,CAAC,iBAAiB,CAAC,CAAA;AAEtB,EAAA,MAAM,YAAA,GAAeA,iBAAA;AAAA,IACnB,CAACM,KAAAA,KAAqB;AACpB,MAAA,eAAA,CAAgBA,KAAI,CAAA;AACpB,MAAA,YAAA,CAAaA,KAAI,CAAA;AACjB,MAAA,iBAAA,EAAkB;AAAA,IACpB,CAAA;AAAA,IACA,CAAC,cAAc,iBAAiB;AAAA,GAClC;AAEA,EAAA,MAAM,YAAA,GAAeN,iBAAA,CAAY,CAAC,IAAA,KAAiB;AACjD,IAAA,cAAA,CAAe,IAAI,CAAA;AACnB,IAAA,eAAA,CAAgB,MAAS,CAAA;AAAA,EAC3B,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,aAAA,GAAgBA,iBAAA,CAAY,CAAC,IAAA,EAAc,KAAA,KAAkB;AACjE,IAAA,cAAA,CAAe,IAAI,CAAA;AACnB,IAAA,eAAA,CAAgB,KAAK,CAAA;AAAA,EACvB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,gBAAA,GAAmBA,iBAAA,CAAY,CAAC,CAAA,KAAwC;AAC5E,IAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,OAAA,IAAW,CAAA,CAAE,QAAQ,GAAA,EAAK;AACtC,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,SAAA,CAAU,IAAI,CAAA;AACd,MAAA,oBAAA,CAAqB,IAAI,CAAA;AAAA,IAC3B;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,uBACEO,eAAA;AAAA,IAACC,uBAAA,CAAQ,IAAA;AAAA,IAAR;AAAA,MACC,YAAA;AAAA,MACA,IAAA,EAAM,MAAA;AAAA,MAEN,QAAA,EAAA;AAAA,wBAAAN,cAAA;AAAA,UAACM,uBAAA,CAAQ,OAAA;AAAA,UAAR;AAAA,YACC,SAAA,EAAWC,0BAAO,iBAAiB,CAAA;AAAA,YACnC,QAAA;AAAA,YACA,SAAA,EAAW,gBAAA;AAAA,YAEX,QAAA,kBAAAP,cAAA;AAAA,cAACQ,sBAAA;AAAA,cAAA;AAAA,gBACC,aAAA,EAAY,4BAAA;AAAA,gBACZ,QAAA;AAAA,gBACA,QAAA,EAAU,MAAA;AAAA,gBACV,YAAA;AAAA,gBACA,WAAA;AAAA,gBACA,WAAA;AAAA,gBACA,YAAA;AAAA,gBACA;AAAA;AAAA;AACF;AAAA,SACF;AAAA,wBACAR,cAAA,CAACM,uBAAA,CAAQ,MAAA,EAAR,EAAe,WAAW,eAAA,EACzB,QAAA,kBAAAN,cAAA;AAAA,UAACM,uBAAA,CAAQ,OAAA;AAAA,UAAR;AAAA,YACC,SAAA,EAAWC,0BAAO,iBAAiB,CAAA;AAAA,YACnC,KAAA,EAAM,OAAA;AAAA,YACN,eAAA,EAAiB,qBAAA;AAAA,YACjB,UAAA,EAAY,CAAA;AAAA,YAEZ,QAAA,kBAAAP,cAAA;AAAA,cAACS,uBAAA;AAAA,cAAA;AAAA,gBACC,eAAA;AAAA,gBACA,YAAA;AAAA,gBACA,aAAA;AAAA,gBACA,YAAA;AAAA,gBACA,QAAA;AAAA,gBAEC,QAAA,EAAA,CAAA,IAAA,qBACCT,cAAA;AAAA,kBAAC,QAAA;AAAA,kBAAA;AAAA,oBACC,kBAAA;AAAA,oBACA,YAAA,EAAc,IAAA;AAAA,oBACd,eAAA,EAAiB,iBAAA;AAAA,oBACjB,WAAA,EAAa,iBAAA;AAAA,oBACb,mBAAA;AAAA,oBACA,YAAA;AAAA,oBACA,eAAA,EAAiB,YAAA;AAAA,oBACjB;AAAA;AAAA;AACF;AAAA;AAEJ;AAAA,SACF,EACF;AAAA;AAAA;AAAA,GACF;AAEJ;;"}