@ecohouse/ui 0.1.30 → 0.1.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -0
- package/dist/index.cjs +1131 -339
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +147 -5
- package/dist/index.d.ts +147 -5
- package/dist/index.js +1058 -286
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/components/AccountHeader/AccountHeader.stories.tsx +70 -0
- package/src/components/AccountHeader/AccountHeader.tsx +224 -0
- package/src/components/AccountHeader/index.ts +2 -0
- package/src/components/AvatarSimple/AvatarSimple.tsx +2 -2
- package/src/components/Button/Button.tsx +4 -1
- package/src/components/DatePicker/DatePicker.tsx +14 -9
- package/src/components/FloatingActionButton/FloatingActionButton.stories.tsx +42 -0
- package/src/components/FloatingActionButton/FloatingActionButton.tsx +77 -0
- package/src/components/FloatingActionButton/index.ts +2 -0
- package/src/components/InfoTile/InfoTile.stories.tsx +80 -0
- package/src/components/InfoTile/InfoTile.tsx +118 -0
- package/src/components/InfoTile/index.ts +2 -0
- package/src/components/PaginationDots/PaginationDots.stories.tsx +48 -0
- package/src/components/PaginationDots/PaginationDots.tsx +111 -0
- package/src/components/PaginationDots/index.ts +2 -0
- package/src/components/Sidebar/Sidebar.tsx +9 -1
- package/src/components/StatusBadge/StatusBadge.stories.tsx +54 -0
- package/src/components/StatusBadge/StatusBadge.tsx +108 -0
- package/src/components/StatusBadge/index.ts +2 -0
- package/src/components/StepList/StepList.stories.tsx +37 -0
- package/src/components/StepList/StepList.tsx +152 -0
- package/src/components/StepList/index.ts +2 -0
- package/src/components/index.ts +18 -0
- package/src/icons/AlertTriangle/AlertTriangleIcon.tsx +19 -0
- package/src/icons/AlertTriangle/AlertTriangleIcon.web.tsx +18 -0
- package/src/icons/AlertTriangle/alertTrianglePath.ts +3 -0
- package/src/icons/AlertTriangle/index.ts +1 -0
- package/src/icons/Bell/BellIcon.tsx +2 -2
- package/src/icons/Bell/BellIcon.web.tsx +2 -2
- package/src/icons/Bell/bellPath.ts +1 -1
- package/src/icons/CottageDetail/CottageDetailIcons.tsx +15 -0
- package/src/icons/CottageDetail/CottageDetailIcons.web.tsx +15 -0
- package/src/icons/CottageDetail/cottageDetailPaths.ts +3 -0
- package/src/icons/CottageDetail/index.ts +1 -0
- package/src/icons/Edit/EditIcon.tsx +20 -0
- package/src/icons/Edit/EditIcon.web.tsx +19 -0
- package/src/icons/Edit/editPath.ts +3 -0
- package/src/icons/Edit/index.ts +1 -0
- package/src/icons/HouseRules/HouseRulesIcons.tsx +62 -0
- package/src/icons/HouseRules/HouseRulesIcons.web.tsx +61 -0
- package/src/icons/HouseRules/houseRulesPaths.ts +24 -0
- package/src/icons/HouseRules/index.ts +2 -0
- package/src/icons/LocationUser/LocationUserIcon.tsx +15 -0
- package/src/icons/LocationUser/LocationUserIcon.web.tsx +14 -0
- package/src/icons/LocationUser/index.ts +1 -0
- package/src/icons/LocationUser/locationUserPath.ts +2 -0
- package/src/icons/Lock/LockIcon.tsx +21 -0
- package/src/icons/Lock/LockIcon.web.tsx +26 -0
- package/src/icons/Lock/index.ts +1 -0
- package/src/icons/Lock/lockPath.ts +3 -0
- package/src/icons/Refresh/RefreshIcon.tsx +20 -0
- package/src/icons/Refresh/RefreshIcon.web.tsx +19 -0
- package/src/icons/Refresh/index.ts +1 -0
- package/src/icons/Refresh/refreshPath.ts +3 -0
- package/src/icons/RefundStatus/RefundStatusIcon.tsx +24 -0
- package/src/icons/RefundStatus/RefundStatusIcon.web.tsx +23 -0
- package/src/icons/RefundStatus/index.ts +1 -0
- package/src/icons/RefundStatus/refundStatusPath.ts +3 -0
- package/src/icons/index.ts +8 -0
- package/src/icons/registry.ts +30 -0
- package/src/index.ts +26 -0
- package/src/theme/colors.ts +4 -0
- package/src/theme/typography.ts +1 -1
- package/src/utils/dateUtils.ts +25 -0
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/icons/ArrowRight/arrowRightPath.ts","../src/theme/colors.ts","../src/theme/typography.ts","../src/icons/ArrowRight/ArrowRightIcon.tsx","../src/icons/Store/storeMarkPaths.ts","../src/icons/Store/StoreIcons.tsx","../src/icons/Bag/bagPath.ts","../src/icons/Bag/BagIcon.tsx","../src/icons/Bell/bellPath.ts","../src/icons/Bell/BellIcon.tsx","../src/icons/Building/buildingPath.ts","../src/icons/Building/BuildingIcon.tsx","../src/icons/Calendar/calendarPath.ts","../src/icons/Calendar/CalendarIcon.tsx","../src/icons/CalendarOutline/calendarOutlinePath.ts","../src/icons/CalendarOutline/CalendarOutlineIcon.tsx","../src/icons/Camera/cameraPath.ts","../src/icons/Camera/CameraIcon.tsx","../src/icons/Check/checkPath.ts","../src/icons/Check/CheckIcon.tsx","../src/icons/CheckBadge/checkBadgePath.ts","../src/icons/CheckBadge/CheckBadgeIcon.tsx","../src/icons/ChevronDown/chevronDownPath.ts","../src/icons/ChevronDown/ChevronDownIcon.tsx","../src/icons/ChevronLeft/chevronLeftPath.ts","../src/icons/ChevronLeft/ChevronLeftIcon.tsx","../src/icons/Clock/clockPath.ts","../src/icons/Clock/ClockIcon.tsx","../src/icons/Close/closePath.ts","../src/icons/Close/CloseIcon.tsx","../src/icons/CottageCard/cottageCardPaths.ts","../src/icons/CottageCard/CottageCardIcons.tsx","../src/icons/CottageDetail/cottageDetailPaths.ts","../src/icons/CottageDetail/CottageDetailIcons.tsx","../src/icons/Facebook/facebookPath.ts","../src/icons/Facebook/FacebookIcon.tsx","../src/icons/Filters/filtersPath.ts","../src/icons/Filters/FiltersIcon.tsx","../src/icons/Heart/heartPath.ts","../src/icons/Heart/HeartIcon.tsx","../src/icons/Globe/globePath.ts","../src/icons/Globe/GlobeIcon.tsx","../src/icons/HelpCircle/helpCirclePath.ts","../src/icons/HelpCircle/HelpCircleIcon.tsx","../src/icons/Home/homePath.ts","../src/icons/Home/HomeIcon.tsx","../src/icons/Instagram/instagramPath.ts","../src/icons/Instagram/InstagramIcon.tsx","../src/icons/Key/keyPath.ts","../src/icons/Key/KeyIcon.tsx","../src/icons/LayoutGrid/layoutGridPath.ts","../src/icons/LayoutGrid/LayoutGridIcon.tsx","../src/icons/LinkedIn/linkedinPath.ts","../src/icons/LinkedIn/LinkedInIcon.tsx","../src/icons/ListView/listViewPath.ts","../src/icons/ListView/ListViewIcon.tsx","../src/icons/LocationPin/locationPinPath.ts","../src/icons/LocationPin/LocationPinIcon.tsx","../src/icons/LogOut/logOutPath.ts","../src/icons/LogOut/LogOutIcon.tsx","../src/icons/Mail/mailPath.ts","../src/icons/Mail/MailIcon.tsx","../src/icons/MapView/mapViewPath.ts","../src/icons/MapView/MapViewIcon.tsx","../src/icons/MapControls/mapControlPaths.ts","../src/icons/MapControls/MapControlIcons.tsx","../src/icons/Menu/menuPath.ts","../src/icons/Menu/MenuIcon.tsx","../src/icons/Minus/minusPath.ts","../src/icons/Minus/MinusIcon.tsx","../src/icons/Navigate/navigatePath.ts","../src/icons/Navigate/NavigateIcon.tsx","../src/icons/Phone/phonePath.ts","../src/icons/Phone/PhoneIcon.tsx","../src/icons/Plus/plusPath.ts","../src/icons/Plus/PlusIcon.tsx","../src/icons/Search/searchPath.ts","../src/icons/Search/SearchIcon.tsx","../src/icons/Settings/settingsPath.ts","../src/icons/Settings/SettingsIcon.tsx","../src/icons/Show/showPath.ts","../src/icons/Show/ShowIcon.tsx","../src/icons/Sidebar/sidebarPath.ts","../src/icons/Sidebar/SidebarIcon.tsx","../src/icons/Sort/sortPath.ts","../src/icons/Sort/SortIcon.tsx","../src/icons/Star/starPath.ts","../src/icons/Star/StarIcon.tsx","../src/icons/StarFilled/StarFilledIcon.tsx","../src/icons/User/userPath.ts","../src/icons/User/UserIcon.tsx","../src/icons/UsersAlt/usersAltPath.ts","../src/icons/UsersAlt/UsersAltIcon.tsx","../src/icons/Video/videoPath.ts","../src/icons/Video/VideoIcon.tsx","../src/icons/registry.ts","../src/icons/Icon.tsx","../src/icons/Amenity/amenityPaths.ts","../src/icons/Amenity/AmenityIcon.tsx","../src/utils/mergeRefs.ts","../src/utils/useApplyWebClassName.ts","../src/primitives/Amenity/Amenity.tsx","../src/primitives/MenuItem/MenuItem.tsx","../src/primitives/FavoritesButton/FavoritesButton.tsx","../src/primitives/BrandLogo/brandLogoPaths.ts","../src/primitives/BrandLogo/BrandLogo.types.ts","../src/primitives/BrandLogo/BrandLogo.tsx","../src/components/Avatar/Avatar.tsx","../src/components/AvatarSimple/AvatarSimple.tsx","../src/components/Badge/Badge.tsx","../src/components/Counter/Counter.tsx","../src/components/SegmentedToggle/SegmentedToggle.tsx","../src/components/Sidebar/Sidebar.tsx","../src/components/LanguageSwitcher/LanguageSwitcher.tsx","../src/components/StatCard/StatCard.tsx","../src/components/Button/Button.tsx","../src/components/Checkbox/Checkbox.tsx","../src/utils/dateUtils.ts","../src/components/DatePicker/DatePicker.tsx","../src/utils/renderStatefulIcon.tsx","../src/components/Input/Input.tsx","../src/components/VerificationCodeInput/VerificationCodeInput.utils.ts","../src/components/VerificationCodeInput/VerificationCodeInput.tsx","../src/components/Select/Select.tsx","../src/components/Textarea/Textarea.tsx","../src/components/Toggle/Toggle.tsx","../src/components/RatingInput/RatingInput.tsx","../src/components/CommentCard/CommentCard.tsx","../src/components/Range/Range.utils.ts","../src/components/Range/Range.tsx"],"names":["jsx","Svg","Path","jsxs","useLayoutEffect","Platform","forwardRef","Amenity","useRef","useMemo","useState","Fragment","View","Text","Pressable","StyleSheet","MenuItem","styles","ICON_SIZE","FavoritesButton","Avatar","useCallback","useEffect","Image","IMAGE_SIZE","AvatarSimple","webBlurStyle","Badge","Icon","Counter","SegmentedToggle","Animated","Easing","Sidebar","LanguageSwitcher","StatCard","variantConfig","Button","TouchableOpacity","Checkbox","MENU_RADIUS","DatePicker","isValidElement","cloneElement","DEFAULT_WIDTH","sizeConfig","Input","TextInput","VerificationCodeInput","useWindowDimensions","useImperativeHandle","TRIGGER_HEIGHT","TRIGGER_RADIUS","ITEM_RADIUS","Select","ScrollView","resolveVisualState","chromeFor","Textarea","TRACK_PADDING","ANIMATION_DURATION","Toggle","clamp","RatingInput","CARD_WIDTH","CommentCard","TRACK_HEIGHT","THUMB_SIZE","Range","PanResponder"],"mappings":"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","file":"index.cjs","sourcesContent":["/** Arrow_Right_MD path — 20×20 viewBox. */\nexport const ARROW_RIGHT_PATH = \"M4.16667 10H15.8333M15.8333 10L10 4.16667M15.8333 10L10 15.8333\";\n","export const grey = {\n \"0\": \"#767676\",\n \"0.5\": \"#6E6E6E\",\n \"1\": \"#666666\",\n \"1.5\": \"#5E5E5E\",\n \"2\": \"#565656\",\n \"3\": \"#474747\",\n \"4\": \"#373737\",\n \"5\": \"#272727\",\n \"6\": \"#1F1F1F\",\n \"7\": \"#171717\",\n \"7.5\": \"#161616\",\n \"8\": \"#101010\",\n \"8.5\": \"#0C0C0C\",\n \"9\": \"#080808\",\n \"9.5\": \"#040404\",\n} as const;\n\nexport type GreyStep = keyof typeof grey;\n\nexport const colors = {\n primary: \"#B46436\",\n black: \"#000000\",\n white: \"#ffffff\",\n whiteAlpha86: \"#FFFFFFDB\",\n whiteAlpha60: \"#FFFFFF99\",\n whiteAlpha40: \"#FFFFFF66\",\n whiteAlpha20: \"#FFFFFF33\",\n whiteAlpha6: \"#FFFFFF0F\",\n whiteAlpha10: \"#FFFFFF1A\",\n whiteAlpha5: \"#FFFFFF0D\",\n dark: \"#090909\",\n red: \"#A63E3E\",\n lightGrey: \"#B7B7B7\",\n green: \"#34A853\",\n primaryMuted: \"#B464360F\",\n primaryHover: \"#B4643633\",\n redMuted: \"#A63E3E0F\",\n redHover: \"#A63E3E33\",\n\n grey0: grey[\"0\"],\n grey50: grey[\"0.5\"],\n grey100: grey[\"1\"],\n grey150: grey[\"1.5\"],\n grey200: grey[\"2\"],\n grey300: grey[\"3\"],\n grey400: grey[\"4\"],\n grey500: grey[\"5\"],\n grey600: grey[\"6\"],\n grey700: grey[\"7\"],\n grey750: grey[\"7.5\"],\n grey800: grey[\"8\"],\n grey850: grey[\"8.5\"],\n grey900: grey[\"9\"],\n grey950: grey[\"9.5\"],\n} as const;\n","export const fonts = {\n sans: \"Noto Sans Armenian\",\n} as const;\n\n/** Button label — SemiBold, line-height 100%, letter-spacing 3%. */\nexport const buttonTypography = {\n lg: {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"600\" as const,\n lineHeight: 14,\n letterSpacing: 0.42,\n },\n sm: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"600\" as const,\n lineHeight: 12,\n letterSpacing: 0.36,\n },\n} as const;\n\n/** Badge label — Regular 14, line-height 112%, letter-spacing 0. */\nexport const badgeTypography = {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"400\" as const,\n lineHeight: 16,\n letterSpacing: 0,\n} as const;\n\n/** Stat card label — Medium 16, line-height 100%, letter-spacing 0. */\nexport const statCardTypography = {\n fontFamily: fonts.sans,\n fontSize: 16,\n fontWeight: \"500\" as const,\n lineHeight: 16,\n letterSpacing: 0,\n} as const;\n\n/** Segmented toggle label — Medium 12, 14px line-height, letter-spacing 0. */\nexport const segmentedToggleTypography = {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"500\" as const,\n lineHeight: 14,\n letterSpacing: 0,\n} as const;\n\n/** Language switcher trigger and option labels — SemiBold 14. */\nexport const languageSwitcherTypography = {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"600\" as const,\n lineHeight: 19,\n letterSpacing: 0,\n} as const;\n\n/** Counter value — Bold 14, line-height 100%, letter-spacing 0. */\nexport const counterTypography = {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"700\" as const,\n lineHeight: 14,\n letterSpacing: 0,\n} as const;\n\n/** Rating score — Bold 32, line-height 112%, letter-spacing 0. */\nexport const ratingTypography = {\n fontFamily: fonts.sans,\n fontSize: 32,\n fontWeight: \"700\" as const,\n lineHeight: 35.84,\n letterSpacing: 0,\n} as const;\n\n/** Comment card identity, body, and action typography. */\nexport const commentCardTypography = {\n name: {\n fontFamily: fonts.sans,\n fontSize: 16,\n fontWeight: \"600\" as const,\n lineHeight: 18,\n letterSpacing: 0,\n },\n date: {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"400\" as const,\n lineHeight: 16,\n letterSpacing: 0,\n },\n comment: {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"400\" as const,\n lineHeight: 19,\n letterSpacing: 0,\n },\n action: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"700\" as const,\n lineHeight: 12,\n letterSpacing: 0,\n },\n} as const;\n\n/** Input label / field / hint typography. */\nexport const inputTypography = {\n label: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"500\" as const,\n lineHeight: 12,\n letterSpacing: 0.36,\n },\n field: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"400\" as const,\n lineHeight: 12,\n letterSpacing: 0.36,\n },\n hint: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"400\" as const,\n lineHeight: 12,\n letterSpacing: 0.36,\n },\n} as const;\n\n/** Select label / field / hint typography — Medium/Regular 12, letter-spacing 3%. */\nexport const selectTypography = {\n label: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"500\" as const,\n lineHeight: 12,\n letterSpacing: 0.36,\n },\n field: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"400\" as const,\n lineHeight: 12,\n letterSpacing: 0.36,\n },\n hint: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"400\" as const,\n lineHeight: 12,\n letterSpacing: 0.36,\n },\n} as const;\n\n/** Avatar name / email / menu-item typography — 100% line-height, 0 letter-spacing. */\nexport const avatarTypography = {\n name: {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"600\" as const,\n lineHeight: 14,\n letterSpacing: 0,\n },\n email: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"400\" as const,\n lineHeight: 12,\n letterSpacing: 0,\n },\n menuItem: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"600\" as const,\n lineHeight: 12,\n letterSpacing: 0,\n },\n} as const;\n\n/**\n * DatePicker typography — trigger field text plus the calendar-panel type\n * (month heading, weekday header, day-cell numbers). No label/hint chrome —\n * the Figma trigger is a standalone field. Figma didn't spec the month\n * heading / day-cell number sizes, so those reuse the existing type scale\n * for visual consistency with the rest of the kit.\n */\nexport const datePickerTypography = {\n field: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"400\" as const,\n lineHeight: 12,\n letterSpacing: 0.36,\n },\n rangeLabel: {\n fontFamily: fonts.sans,\n fontSize: 13,\n fontWeight: \"500\" as const,\n lineHeight: 13,\n letterSpacing: 0,\n },\n rangeDate: {\n fontFamily: fonts.sans,\n fontSize: 16,\n fontWeight: \"500\" as const,\n lineHeight: 16,\n letterSpacing: 0,\n },\n rangeTime: {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"400\" as const,\n lineHeight: 14,\n letterSpacing: 0,\n },\n /** Calendar month/year heading — Bold, centered, White. */\n monthHeading: {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"700\" as const,\n lineHeight: 14,\n letterSpacing: 0,\n },\n /** Weekday header (ԵՐ, ԵՔ, ...) — Regular, uppercase, centered, Grey/300. */\n weekday: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"400\" as const,\n lineHeight: 12,\n letterSpacing: 0,\n },\n day: {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"400\" as const,\n lineHeight: 14,\n letterSpacing: 0,\n },\n} as const;\n\n/** Textarea label / field / hint typography — Medium/Regular 12, letter-spacing 3%. */\nexport const textareaTypography = {\n label: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"500\" as const,\n lineHeight: 12,\n letterSpacing: 0.36,\n },\n field: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"400\" as const,\n lineHeight: 12,\n letterSpacing: 0.36,\n },\n hint: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"400\" as const,\n lineHeight: 12,\n letterSpacing: 0.36,\n },\n} as const;\n","import Svg, { Path } from \"react-native-svg\";\nimport { ARROW_RIGHT_PATH } from \"./arrowRightPath\";\nimport { colors } from \"../../theme\";\n\nexport { ARROW_RIGHT_PATH } from \"./arrowRightPath\";\n\ninterface ArrowRightIconProps {\n size?: number;\n color?: string;\n strokeWidth?: number;\n}\n\n/** Native — react-native-svg (peer dependency). */\nexport function ArrowRightIcon({\n size = 20,\n color = colors.primary,\n strokeWidth = 2,\n}: ArrowRightIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={ARROW_RIGHT_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const APPLE_PATHS = [\n \"M20.8806 15.9539C20.8958 14.804 21.2087 13.6766 21.7901 12.6765C22.3715 11.6763 23.2026 10.8361 24.206 10.2338C23.5685 9.34496 22.7276 8.6135 21.7499 8.0975C20.7723 7.58149 19.6849 7.29515 18.574 7.26122C16.2044 7.01838 13.9072 8.64554 12.6997 8.64554C11.4688 8.64554 9.6097 7.28533 7.6077 7.32554C6.31276 7.36638 5.05074 7.73402 3.9446 8.39262C2.83847 9.05123 1.92593 9.97834 1.29592 11.0836C-1.4331 15.6966 0.602506 22.4762 3.21673 26.205C4.52469 28.0309 6.0533 30.0704 8.05349 29.9981C10.0108 29.9189 10.7418 28.7796 13.1044 28.7796C15.4451 28.7796 16.1309 29.9981 18.1717 29.9521C20.272 29.9189 21.5953 28.1181 22.8573 26.275C23.7971 24.9739 24.5203 23.536 25 22.0145C23.7798 21.5107 22.7385 20.6673 22.006 19.5895C21.2734 18.5118 20.882 17.2474 20.8806 15.9539Z\",\n \"M17.0261 4.80891C18.1712 3.46678 18.7354 1.74169 18.5988 0C16.8492 0.179399 15.2332 0.995745 14.0725 2.28638C13.5051 2.91689 13.0705 3.65041 12.7935 4.44501C12.5166 5.2396 12.4028 6.07969 12.4586 6.91725C13.3337 6.92605 14.1994 6.74087 14.9906 6.37567C15.7817 6.01047 16.4777 5.47477 17.0261 4.80891Z\",\n] as const;\n\nexport const GOOGLE_PLAY_PATHS = [\n {\n color: \"#A63E3E\",\n d: \"M12.2558 14.3271L0.111816 27.5074C0.112957 27.5097 0.112957 27.5132 0.114097 27.5156C0.487075 28.9467 1.76455 30 3.28156 30C3.88836 30 4.45752 29.832 4.9457 29.5381L4.98448 29.5148L18.6535 21.4491L12.2558 14.3271Z\",\n },\n {\n color: \"#FBBC04\",\n d: \"M24.5415 12.0827L24.5301 12.0746L18.6286 8.57654L11.98 14.6267L18.6525 21.4478L24.5221 17.9847C25.5509 17.4155 26.2501 16.3063 26.2501 15.0279C26.2501 13.7565 25.5612 12.6531 24.5415 12.0827Z\",\n },\n {\n color: \"#4285F4\",\n d: \"M0.111779 2.49162C0.0387806 2.76689 0 3.05616 0 3.35476V26.6454C0 26.944 0.0387806 27.2333 0.11292 27.5074L12.6733 14.6642L0.111779 2.49162Z\",\n },\n {\n color: \"#34A853\",\n d: \"M12.3459 14.9999L18.6307 8.57419L4.97764 0.479377C4.48147 0.174946 3.90205 -1.23978e-05 3.2827 -1.23978e-05C1.76569 -1.23978e-05 0.485934 1.05558 0.112956 2.48792C0.112956 2.48908 0.111816 2.49025 0.111816 2.49142L12.3459 14.9999Z\",\n },\n] as const;\n","import Svg, { Path } from \"react-native-svg\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\nimport { APPLE_PATHS, GOOGLE_PLAY_PATHS } from \"./storeMarkPaths\";\n\nexport function AppleIcon({ size = 30, color = colors.white }: IconProps) {\n return (\n <Svg width={(size * 25) / 30} height={size} viewBox=\"0 0 25 30\" fill=\"none\">\n {APPLE_PATHS.map((path) => (\n <Path key={path} d={path} fill={color} />\n ))}\n </Svg>\n );\n}\n\nexport function GooglePlayIcon({ size = 30 }: IconProps) {\n return (\n <Svg width={(size * 27) / 30} height={size} viewBox=\"0 0 27 30\" fill=\"none\">\n {GOOGLE_PLAY_PATHS.map((path) => (\n <Path key={path.d} d={path.d} fill={path.color} />\n ))}\n </Svg>\n );\n}\n","export const BAG_PATH =\n \"M9.23047 9H7.2002C6.08009 9 5.51962 9 5.0918 9.21799C4.71547 9.40973 4.40973 9.71547 4.21799 10.0918C4 10.5196 4 11.0801 4 12.2002V17.8002C4 18.9203 4 19.4801 4.21799 19.9079C4.40973 20.2842 4.71547 20.5905 5.0918 20.7822C5.5192 21 6.07902 21 7.19694 21H16.8031C17.921 21 18.48 21 18.9074 20.7822C19.2837 20.5905 19.5905 20.2842 19.7822 19.9079C20 19.4805 20 18.9215 20 17.8036V12.1969C20 11.079 20 10.5192 19.7822 10.0918C19.5905 9.71547 19.2837 9.40973 18.9074 9.21799C18.4796 9 17.9203 9 16.8002 9H14.7689M9.23047 9H14.7689M9.23047 9C9.10302 9 9 8.89668 9 8.76923V6C9 4.34315 10.3431 3 12 3C13.6569 3 15 4.34315 15 6V8.76923C15 8.89668 14.8964 9 14.7689 9\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { BAG_PATH } from \"./bagPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { BAG_PATH } from \"./bagPath\";\n\nexport function BagIcon({ size = 24, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d={BAG_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const BELL_PATH =\n \"M7.5 17.5H12.5M10 2.5C7.23858 2.5 5 4.73858 5 7.5C5 8.51208 5.3007 9.45393 5.81764 10.2411C6.61256 11.4515 7.00967 12.0564 7.06127 12.1467C7.52024 12.9508 7.43573 12.6672 7.49349 13.5913C7.49998 13.6952 7.5 13.8524 7.5 14.1667C7.5 14.6269 7.8731 15 8.33333 15L11.6667 15C12.1269 15 12.5 14.6269 12.5 14.1667C12.5 13.8524 12.5 13.6952 12.5065 13.5913C12.5643 12.6672 12.4793 12.9509 12.9382 12.1467C12.9898 12.0564 13.3876 11.4515 14.1825 10.2411C14.6995 9.45393 15.0002 8.51208 15.0002 7.5C15.0002 4.73858 12.7614 2.5 10 2.5Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { BELL_PATH } from \"./bellPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { BELL_PATH } from \"./bellPath\";\n\nexport function BellIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={BELL_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const BUILDING_PATH =\n \"M7.5 9.16659V16.6666M7.5 9.16659H3.83301C3.3663 9.16659 3.13318 9.16659 2.95492 9.25741C2.79811 9.33731 2.67072 9.4647 2.59083 9.6215C2.5 9.79976 2.5 10.0333 2.5 10.5V16.6666H7.5M7.5 9.16659V4.66667C7.5 4.19996 7.5 3.96643 7.59083 3.78817C7.67072 3.63137 7.79811 3.50397 7.95492 3.42408C8.13317 3.33325 8.3663 3.33325 8.83301 3.33325H11.1663C11.6331 3.33325 11.8669 3.33325 12.0452 3.42408C12.202 3.50397 12.329 3.63137 12.4089 3.78817C12.4997 3.96643 12.5 4.19996 12.5 4.66667V6.66659M7.5 16.6666H12.5M12.5 16.6666L17.5 16.6667V8C17.5 7.53329 17.4997 7.29976 17.4089 7.1215C17.329 6.9647 17.2024 6.83731 17.0456 6.75741C16.8674 6.66659 16.6334 6.66659 16.1667 6.66659H12.5M12.5 16.6666V6.66659\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { BUILDING_PATH } from \"./buildingPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { BUILDING_PATH } from \"./buildingPath\";\n\nexport function BuildingIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={BUILDING_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Calendar icon path — 16×16 viewBox. */\nexport const CALENDAR_PATH =\n \"M14 6.66668H2M14 8.33334V5.86668C14 4.74657 14 4.18652 13.782 3.7587C13.5903 3.38237 13.2843 3.07641 12.908 2.88466C12.4802 2.66668 11.9201 2.66668 10.8 2.66668H5.2C4.0799 2.66668 3.51984 2.66668 3.09202 2.88466C2.71569 3.07641 2.40973 3.38237 2.21799 3.7587C2 4.18652 2 4.74657 2 5.86668V11.4667C2 12.5868 2 13.1468 2.21799 13.5747C2.40973 13.951 2.71569 14.2569 3.09202 14.4487C3.51984 14.6667 4.0799 14.6667 5.2 14.6667H8M10.6667 1.33334V4.00001M5.33333 1.33334V4.00001M9.66667 12.6667L11 14L14 11\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { CALENDAR_PATH } from \"./calendarPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { CALENDAR_PATH } from \"./calendarPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function CalendarIcon({ size = 20, color = colors.primary, strokeWidth = 1.5 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={CALENDAR_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Plain calendar icon path (no checkmark badge) — 16×16 viewBox. */\nexport const CALENDAR_OUTLINE_PATH =\n \"M10.6667 1.33334V4.00001M5.33333 1.33334V4.00001M2 6.66668H14M5.2 2.66668H10.8C11.9201 2.66668 12.4802 2.66668 12.908 2.88466C13.2843 3.07641 13.5903 3.38237 13.782 3.7587C14 4.18652 14 4.74657 14 5.86668V11.4667C14 12.5868 14 13.1468 13.782 13.5747C13.5903 13.951 13.2843 14.2569 12.908 14.4487C12.4802 14.6667 11.9201 14.6667 10.8 14.6667H5.2C4.0799 14.6667 3.51984 14.6667 3.09202 14.4487C2.71569 14.2569 2.40973 13.951 2.21799 13.5747C2 13.1468 2 12.5868 2 11.4667V5.86668C2 4.74657 2 4.18652 2.21799 3.7587C2.40973 3.38237 2.71569 3.07641 3.09202 2.88466C3.51984 2.66668 4.0799 2.66668 5.2 2.66668Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { CALENDAR_OUTLINE_PATH } from \"./calendarOutlinePath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { CALENDAR_OUTLINE_PATH } from \"./calendarOutlinePath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function CalendarOutlineIcon({\n size = 20,\n color = colors.primary,\n strokeWidth = 1.5,\n}: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={CALENDAR_OUTLINE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const CAMERA_PATH =\n \"M9.48898 7H6.2002C5.08009 7 4.51962 7 4.0918 7.21799C3.71547 7.40973 3.40973 7.71547 3.21799 8.0918C3 8.51962 3 9.08009 3 10.2002V15.8002C3 16.9203 3 17.4796 3.21799 17.9074C3.40973 18.2837 3.71547 18.5905 4.0918 18.7822C4.5192 19 5.07899 19 6.19691 19H17.8031C18.921 19 19.48 19 19.9074 18.7822C20.2837 18.5905 20.5905 18.2837 20.7822 17.9074C21 17.48 21 16.921 21 15.8031V10.1969C21 9.07899 21 8.5192 20.7822 8.0918C20.5905 7.71547 20.2837 7.40973 19.9074 7.21799C19.4796 7 18.9203 7 17.8002 7H14.5108M9.48898 7H9.55078M9.48898 7C9.50151 7.00001 9.51468 7 9.52857 7L9.55078 7M9.48898 7C9.38286 6.99995 9.32339 6.99941 9.27637 6.99414C8.68878 6.92835 8.28578 6.36908 8.40918 5.79084C8.42066 5.73703 8.44336 5.66894 8.4883 5.53412L8.49023 5.52841C8.54156 5.37443 8.56723 5.29743 8.59558 5.22949C8.88586 4.53389 9.54322 4.06083 10.2949 4.00541C10.3683 4 10.449 4 10.6113 4H13.3886C13.5509 4 13.6322 4 13.7057 4.00541C14.4574 4.06083 15.114 4.53389 15.4043 5.22949C15.4326 5.29743 15.4584 5.37434 15.5098 5.52832C15.556 5.66699 15.5791 5.73636 15.5908 5.79093C15.7142 6.36917 15.3118 6.92835 14.7242 6.99414C14.6772 6.99941 14.6171 6.99995 14.5108 7M9.55078 7H14.449M14.449 7H14.5108M14.449 7L14.4712 7C14.4851 7 14.4983 7.00001 14.5108 7M12 16C10.3431 16 9 14.6569 9 13C9 11.3431 10.3431 10 12 10C13.6569 10 15 11.3431 15 13C15 14.6569 13.6569 16 12 16Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { CAMERA_PATH } from \"./cameraPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { CAMERA_PATH } from \"./cameraPath\";\n\nexport function CameraIcon({ size = 24, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d={CAMERA_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Check mark path — 20×20 viewBox. */\nexport const CHECK_PATH = \"M4.16669 10.8333L7.50002 14.1667L15.8334 5.83334\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { CHECK_PATH } from \"./checkPath\";\nimport { colors } from \"../../theme\";\n\nexport { CHECK_PATH } from \"./checkPath\";\n\ninterface CheckIconProps {\n size?: number;\n color?: string;\n strokeWidth?: number;\n}\n\n/** Native — react-native-svg (peer dependency). */\nexport function CheckIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: CheckIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={CHECK_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const CHECK_BADGE_PATH =\n \"M12.5 8.33317L9.16663 11.6665L7.49996 9.99984M11.0384 2.88233L12.0558 3.74941C12.3122 3.96786 12.6305 4.09992 12.9662 4.12671L14.2987 4.23291C15.0822 4.29543 15.7045 4.91733 15.767 5.70077L15.8729 7.03353C15.8997 7.36925 16.0322 7.68799 16.2507 7.94433L17.1174 8.96152C17.6272 9.5597 17.6272 10.4396 17.1175 11.0378L16.2508 12.0551C16.0323 12.3115 15.9 12.6303 15.8732 12.9661L15.7666 14.2986C15.704 15.082 15.0827 15.7043 14.2993 15.7668L12.9663 15.8732C12.6305 15.9 12.312 16.0317 12.0556 16.2502L11.0384 17.1173C10.4402 17.627 9.55973 17.6271 8.96155 17.1174L7.9443 16.2502C7.68796 16.0318 7.36938 15.8998 7.03365 15.8731L5.70064 15.7668C4.9172 15.7043 4.29588 15.0822 4.23336 14.2987L4.12675 12.9661C4.09996 12.6304 3.96759 12.3118 3.74915 12.0555L2.88245 11.0378C2.37268 10.4397 2.37244 9.56002 2.88221 8.96184L3.74969 7.94418C3.96814 7.68784 4.09923 7.36926 4.12602 7.03353L4.23263 5.70093C4.29515 4.91749 4.91826 4.29535 5.70171 4.23283L7.03324 4.12663C7.36897 4.09984 7.68771 3.96788 7.94404 3.74943L8.96164 2.88233C9.55982 2.37256 10.4402 2.37256 11.0384 2.88233Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { CHECK_BADGE_PATH } from \"./checkBadgePath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { CHECK_BADGE_PATH } from \"./checkBadgePath\";\n\nexport function CheckBadgeIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={CHECK_BADGE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Chevron down path — 20×20 viewBox. */\nexport const CHEVRON_DOWN_PATH = \"M5 7.5L10 12.5L15 7.5\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { CHEVRON_DOWN_PATH } from \"./chevronDownPath\";\nimport { colors } from \"../../theme\";\n\nexport { CHEVRON_DOWN_PATH } from \"./chevronDownPath\";\n\ninterface ChevronDownIconProps {\n size?: number;\n color?: string;\n strokeWidth?: number;\n}\n\n/** Native — react-native-svg (peer dependency). */\nexport function ChevronDownIcon({\n size = 20,\n color = colors.primary,\n strokeWidth = 2,\n}: ChevronDownIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={CHEVRON_DOWN_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Chevron left path — 20×20 viewBox. */\nexport const CHEVRON_LEFT_PATH = \"M12.5 15L7.5 10L12.5 5\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { CHEVRON_LEFT_PATH } from \"./chevronLeftPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { CHEVRON_LEFT_PATH } from \"./chevronLeftPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function ChevronLeftIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={CHEVRON_LEFT_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const CLOCK_PATH =\n \"M12 7V12H17M12 21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12C21 16.9706 16.9706 21 12 21Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { CLOCK_PATH } from \"./clockPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { CLOCK_PATH } from \"./clockPath\";\n\nexport function ClockIcon({ size = 24, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d={CLOCK_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Close (x) path — 20×20 viewBox. */\nexport const CLOSE_PATH = \"M15 5L5 15M5 5L15 15\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\nimport { CLOSE_PATH } from \"./closePath\";\n\nexport function CloseIcon({ size = 20, color = colors.white, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={CLOSE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const SAVE_HEART_PATH =\n \"M8 5.12971C6.66667 2.00008 2 2.33341 2 6.33343C2 10.3335 8 13.6669 8 13.6669C8 13.6669 14 10.3335 14 6.33343C14 2.33341 9.33333 2.00008 8 5.12971Z\";\n\nexport const RATING_STAR_PATH =\n \"M1.16748 5.16814C1.01086 5.0233 1.09593 4.76145 1.30778 4.73633L4.30957 4.38029C4.39591 4.37005 4.47091 4.31583 4.50732 4.23688L5.77344 1.49199C5.86279 1.29827 6.13819 1.29823 6.22754 1.49195L7.49365 4.23682C7.53007 4.31577 7.60458 4.37014 7.69092 4.38038L10.6929 4.73633C10.9047 4.76145 10.9896 5.02338 10.8329 5.16822L8.61388 7.22071C8.55005 7.27974 8.52163 7.36761 8.53857 7.45289L9.1275 10.4177C9.16908 10.627 8.94639 10.7891 8.76024 10.6849L6.12257 9.20806C6.0467 9.16559 5.95453 9.16579 5.87866 9.20826L3.24072 10.6845C3.05457 10.7887 2.83147 10.627 2.87305 10.4177L3.46207 7.45307C3.47902 7.36779 3.45067 7.27972 3.38683 7.22069L1.16748 5.16814Z\";\n\nexport const CARD_LOCATION_BASE_PATH =\n \"M2.66951 8.87207C1.68929 9.16614 1.08301 9.57239 1.08301 10.0211C1.08301 10.9186 3.50813 11.6461 6.49967 11.6461C9.49122 11.6461 11.9163 10.9186 11.9163 10.0211C11.9163 9.57239 11.3101 9.16614 10.3298 8.87207\";\n\nexport const CARD_LOCATION_PIN_PATH =\n \"M6.50032 9.47933C6.50032 9.47933 10.0212 7.17833 10.0212 4.51815C10.0212 2.62125 8.44483 1.0835 6.50032 1.0835C4.55582 1.0835 2.97949 2.62125 2.97949 4.51815C2.97949 7.17833 6.50032 9.47933 6.50032 9.47933Z\";\n\nexport const CARD_LOCATION_DOT_PATH =\n \"M6.49967 5.95833C7.24755 5.95833 7.85384 5.35205 7.85384 4.60417C7.85384 3.85629 7.24755 3.25 6.49967 3.25C5.7518 3.25 5.14551 3.85629 5.14551 4.60417C5.14551 5.35205 5.7518 5.95833 6.49967 5.95833Z\";\n\nexport const GUESTS_PATH =\n \"M8.20008 8.14683C8.5558 7.83892 8.84111 7.45809 9.03666 7.03018C9.23221 6.60227 9.33342 6.1373 9.33342 5.66683C9.33342 4.78277 8.98223 3.93493 8.3571 3.30981C7.73198 2.68469 6.88414 2.3335 6.00008 2.3335C5.11603 2.3335 4.26818 2.68469 3.64306 3.30981C3.01794 3.93493 2.66675 4.78277 2.66675 5.66683C2.66674 6.1373 2.76795 6.60227 2.9635 7.03018C3.15905 7.45809 3.44436 7.83892 3.80008 8.14683C2.86684 8.56942 2.07506 9.25185 1.5194 10.1125C0.963745 10.9732 0.667729 11.9757 0.666748 13.0002C0.666748 13.177 0.736986 13.3465 0.86201 13.4716C0.987034 13.5966 1.1566 13.6668 1.33341 13.6668C1.51023 13.6668 1.6798 13.5966 1.80482 13.4716C1.92984 13.3465 2.00008 13.177 2.00008 13.0002C2.00008 11.9393 2.42151 10.9219 3.17165 10.1717C3.9218 9.42159 4.93922 9.00016 6.00008 9.00016C7.06095 9.00016 8.07836 9.42159 8.82851 10.1717C9.57865 10.9219 10.0001 11.9393 10.0001 13.0002C10.0001 13.177 10.0703 13.3465 10.1953 13.4716C10.3204 13.5966 10.4899 13.6668 10.6667 13.6668C10.8436 13.6668 11.0131 13.5966 11.1382 13.4716C11.2632 13.3465 11.3334 13.177 11.3334 13.0002C11.3324 11.9757 11.0364 10.9732 10.4808 10.1125C9.92511 9.25185 9.13332 8.56942 8.20008 8.14683ZM6.00008 7.66683C5.60452 7.66683 5.21784 7.54953 4.88894 7.32977C4.56004 7.11001 4.3037 6.79765 4.15232 6.4322C4.00095 6.06674 3.96134 5.66461 4.03851 5.27665C4.11568 4.88869 4.30616 4.53232 4.58587 4.25262C4.86557 3.97291 5.22194 3.78243 5.6099 3.70526C5.99786 3.62809 6.4 3.6677 6.76545 3.81907C7.1309 3.97045 7.44326 4.22679 7.66302 4.55569C7.88278 4.88459 8.00008 5.27127 8.00008 5.66683C8.00008 6.19726 7.78937 6.70597 7.4143 7.08104C7.03922 7.45612 6.53051 7.66683 6.00008 7.66683ZM12.4934 7.88016C12.9201 7.39972 13.1988 6.8062 13.2959 6.17106C13.3931 5.53591 13.3047 4.88621 13.0413 4.30016C12.7778 3.71411 12.3506 3.21669 11.8111 2.86778C11.2715 2.51886 10.6426 2.33332 10.0001 2.3335C9.82327 2.3335 9.6537 2.40373 9.52868 2.52876C9.40365 2.65378 9.33342 2.82335 9.33342 3.00016C9.33342 3.17697 9.40365 3.34654 9.52868 3.47157C9.6537 3.59659 9.82327 3.66683 10.0001 3.66683C10.5305 3.66683 11.0392 3.87754 11.4143 4.25262C11.7894 4.62769 12.0001 5.1364 12.0001 5.66683C11.9991 6.01699 11.9063 6.36076 11.7308 6.66378C11.5553 6.96679 11.3033 7.21842 11.0001 7.3935C10.9012 7.45051 10.8187 7.53194 10.7603 7.62999C10.702 7.72804 10.6697 7.83943 10.6667 7.9535C10.664 8.06667 10.69 8.17869 10.7425 8.279C10.795 8.37931 10.8722 8.4646 10.9667 8.52683L11.2267 8.70016L11.3134 8.74683C12.117 9.12797 12.795 9.73082 13.2674 10.4844C13.7398 11.2379 13.9871 12.1108 13.9801 13.0002C13.9801 13.177 14.0503 13.3465 14.1753 13.4716C14.3004 13.5966 14.4699 13.6668 14.6467 13.6668C14.8236 13.6668 14.9931 13.5966 15.1182 13.4716C15.2432 13.3465 15.3134 13.177 15.3134 13.0002C15.3189 11.9771 15.0626 10.9697 14.5691 10.0735C14.0755 9.17741 13.361 8.42237 12.4934 7.88016Z\";\n\nexport const BEDROOMS_PATH =\n \"M4.66675 8.33333C5.06231 8.33333 5.44899 8.21604 5.77789 7.99627C6.10679 7.77651 6.36313 7.46415 6.51451 7.0987C6.66588 6.73325 6.70549 6.33111 6.62832 5.94315C6.55115 5.55519 6.36067 5.19882 6.08096 4.91912C5.80126 4.63941 5.44489 4.44893 5.05693 4.37176C4.66897 4.29459 4.26683 4.3342 3.90138 4.48557C3.53593 4.63695 3.22357 4.89329 3.00381 5.22219C2.78405 5.55109 2.66675 5.93777 2.66675 6.33333C2.66675 6.86377 2.87746 7.37247 3.25253 7.74755C3.62761 8.12262 4.13632 8.33333 4.66675 8.33333ZM4.66675 5.66667C4.7986 5.66667 4.9275 5.70577 5.03713 5.77902C5.14676 5.85227 5.23221 5.95639 5.28267 6.07821C5.33313 6.20003 5.34633 6.33407 5.32061 6.46339C5.29488 6.59271 5.23139 6.7115 5.13815 6.80474C5.04492 6.89797 4.92613 6.96147 4.79681 6.98719C4.66749 7.01291 4.53344 6.99971 4.41163 6.94925C4.28981 6.89879 4.18569 6.81335 4.11244 6.70371C4.03918 6.59408 4.00008 6.46519 4.00008 6.33333C4.00008 6.15652 4.07032 5.98695 4.19534 5.86193C4.32037 5.7369 4.48994 5.66667 4.66675 5.66667ZM13.3334 4.33333H8.00008C7.82327 4.33333 7.6537 4.40357 7.52868 4.5286C7.40365 4.65362 7.33342 4.82319 7.33342 5V9H2.00008V3.66667C2.00008 3.48986 1.92984 3.32029 1.80482 3.19526C1.6798 3.07024 1.51023 3 1.33341 3C1.1566 3 0.987034 3.07024 0.86201 3.19526C0.736986 3.32029 0.666748 3.48986 0.666748 3.66667V12.3333C0.666748 12.5101 0.736986 12.6797 0.86201 12.8047C0.987034 12.9298 1.1566 13 1.33341 13C1.51023 13 1.6798 12.9298 1.80482 12.8047C1.92984 12.6797 2.00008 12.5101 2.00008 12.3333V10.3333H14.0001V12.3333C14.0001 12.5101 14.0703 12.6797 14.1953 12.8047C14.3204 12.9298 14.4899 13 14.6667 13C14.8436 13 15.0131 12.9298 15.1382 12.8047C15.2632 12.6797 15.3334 12.5101 15.3334 12.3333V6.33333C15.3334 5.8029 15.1227 5.29419 14.7476 4.91912C14.3726 4.54405 13.8638 4.33333 13.3334 4.33333ZM14.0001 9H8.66675V5.66667H13.3334C13.5102 5.66667 13.6798 5.7369 13.8048 5.86193C13.9298 5.98695 14.0001 6.15652 14.0001 6.33333V9Z\";\n\nexport const BATHROOMS_PATH =\n \"M14.6667 7.99999H3.33341V4.27343C3.33108 4.03335 3.39444 3.7972 3.51664 3.59053C3.63885 3.38386 3.81525 3.21454 4.02675 3.10091C4.26062 2.97416 4.52713 2.92047 4.79184 2.94677C4.65711 3.35481 4.63797 3.79218 4.73654 4.21043C4.83511 4.62868 5.04755 5.01147 5.35031 5.3164L6.05737 6.02343C6.11926 6.08535 6.19274 6.13447 6.27362 6.16798C6.3545 6.20149 6.44118 6.21874 6.52873 6.21874C6.61627 6.21874 6.70296 6.20149 6.78384 6.16798C6.86471 6.13447 6.93819 6.08535 7.00008 6.02343L9.35686 3.66666C9.41877 3.60477 9.46789 3.53129 9.5014 3.45041C9.53492 3.36954 9.55217 3.28285 9.55217 3.19531C9.55217 3.10776 9.53492 3.02108 9.5014 2.9402C9.46789 2.85932 9.41877 2.78584 9.35686 2.72395L8.64982 2.01692C8.2563 1.62517 7.73578 1.38688 7.18209 1.34501C6.6284 1.30314 6.07796 1.46045 5.63001 1.78857C5.22612 1.63083 4.78981 1.57415 4.35902 1.62346C3.92824 1.67277 3.51602 1.82658 3.15823 2.07151C2.80043 2.31644 2.50789 2.64507 2.30605 3.02883C2.1042 3.41258 1.99917 3.83984 2.00008 4.27343V7.99999H1.33341C1.1566 7.99999 0.987034 8.07023 0.86201 8.19526C0.736986 8.32028 0.666748 8.48985 0.666748 8.66666C0.666748 8.84347 0.736986 9.01304 0.86201 9.13806C0.987034 9.26309 1.1566 9.33333 1.33341 9.33333H2.00008V11.3333C2.00135 11.7456 2.1302 12.1473 2.36893 12.4834C2.60766 12.8195 2.94458 13.0735 3.33341 13.2104V14C3.33341 14.1768 3.40365 14.3464 3.52868 14.4714C3.6537 14.5964 3.82327 14.6667 4.00008 14.6667C4.17689 14.6667 4.34646 14.5964 4.47149 14.4714C4.59651 14.3464 4.66675 14.1768 4.66675 14V13.3333H11.3334V14C11.3334 14.1768 11.4037 14.3464 11.5287 14.4714C11.6537 14.5964 11.8233 14.6667 12.0001 14.6667C12.1769 14.6667 12.3465 14.5964 12.4715 14.4714C12.5965 14.3464 12.6667 14.1768 12.6667 14V13.2105C13.0556 13.0735 13.3925 12.8195 13.6312 12.4834C13.87 12.1473 13.9988 11.7456 14.0001 11.3333V9.33333H14.6667C14.8436 9.33333 15.0131 9.26309 15.1382 9.13806C15.2632 9.01304 15.3334 8.84347 15.3334 8.66666C15.3334 8.48985 15.2632 8.32028 15.1382 8.19526C15.0131 8.07023 14.8436 7.99999 14.6667 7.99999ZM6.29305 2.95963C6.48074 2.77244 6.735 2.66731 7.00008 2.66731C7.26516 2.66731 7.51943 2.77244 7.70711 2.95963L7.94279 3.19531L6.52875 4.60937L6.29307 4.37369C6.10577 4.18606 6.00058 3.93178 6.00058 3.66666C6.00057 3.40155 6.10576 3.14727 6.29305 2.95963ZM12.6667 11.3333C12.6666 11.5101 12.5964 11.6796 12.4714 11.8046C12.3464 11.9296 12.1769 11.9999 12.0001 12H4.00008C3.82331 11.9999 3.65381 11.9296 3.52881 11.8046C3.40381 11.6796 3.33353 11.5101 3.33341 11.3333V9.33333H12.6667V11.3333Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\nimport {\n BATHROOMS_PATH,\n BEDROOMS_PATH,\n CARD_LOCATION_BASE_PATH,\n CARD_LOCATION_DOT_PATH,\n CARD_LOCATION_PIN_PATH,\n GUESTS_PATH,\n RATING_STAR_PATH,\n SAVE_HEART_PATH,\n} from \"./cottageCardPaths\";\n\nexport function SaveHeartIcon({\n size = 16,\n color = colors.white,\n strokeWidth = 2,\n fillOpacity = 0,\n}: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={SAVE_HEART_PATH}\n fill={color}\n fillOpacity={fillOpacity}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\nexport function RatingStarIcon({ size = 12, color = \"#E38E5E\", strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 12 12\" fill=\"none\">\n <Path\n d={RATING_STAR_PATH}\n fill={color}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\nexport function CardLocationIcon({\n size = 13,\n color = colors.grey0,\n strokeWidth = 1.5,\n secondaryColor = colors.grey700,\n}: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 13 13\" fill=\"none\">\n <Path\n d={CARD_LOCATION_BASE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <Path\n d={CARD_LOCATION_PIN_PATH}\n fill={color}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinejoin=\"round\"\n />\n <Path\n d={CARD_LOCATION_DOT_PATH}\n fill={secondaryColor}\n stroke={secondaryColor}\n strokeWidth={2}\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\nfunction FilledCardIcon({\n path,\n size,\n color,\n fillOpacity,\n}: Required<Pick<IconProps, \"size\" | \"color\" | \"fillOpacity\">> & { path: string }) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path d={path} fill={color} fillOpacity={fillOpacity} />\n </Svg>\n );\n}\n\nexport function GuestsIcon({ size = 16, color = colors.white, fillOpacity = 0.4 }: IconProps) {\n return <FilledCardIcon path={GUESTS_PATH} size={size} color={color} fillOpacity={fillOpacity} />;\n}\n\nexport function BedroomsIcon({ size = 16, color = colors.white, fillOpacity = 0.4 }: IconProps) {\n return (\n <FilledCardIcon path={BEDROOMS_PATH} size={size} color={color} fillOpacity={fillOpacity} />\n );\n}\n\nexport function BathroomsIcon({ size = 16, color = colors.white, fillOpacity = 0.4 }: IconProps) {\n return (\n <FilledCardIcon path={BATHROOMS_PATH} size={size} color={color} fillOpacity={fillOpacity} />\n );\n}\n\nexport * from \"./cottageCardPaths\";\n","export const SHARE_PATH =\n \"M7.5 11.25L12.5 13.75M12.5 6.25L7.5 8.75M15 17.5C13.6193 17.5 12.5 16.3807 12.5 15C12.5 13.6193 13.6193 12.5 15 12.5C16.3807 12.5 17.5 13.6193 17.5 15C17.5 16.3807 16.3807 17.5 15 17.5ZM5 12.5C3.61929 12.5 2.5 11.3807 2.5 10C2.5 8.61929 3.61929 7.5 5 7.5C6.38071 7.5 7.5 8.61929 7.5 10C7.5 11.3807 6.38071 12.5 5 12.5ZM15 7.5C13.6193 7.5 12.5 6.38071 12.5 5C12.5 3.61929 13.6193 2.5 15 2.5C16.3807 2.5 17.5 3.61929 17.5 5C17.5 6.38071 16.3807 7.5 15 7.5Z\";\n\nexport const AREA_EXPAND_PATHS = [\n \"M15 3H21V9\",\n \"M9 21H3V15\",\n \"M21 3L14 10\",\n \"M3 21L10 14\",\n] as const;\n\nexport const CLOCK_FILLED_PATH =\n \"M8.00017 3.99967C7.91261 3.99965 7.82591 4.01688 7.74502 4.05037C7.66412 4.08387 7.59062 4.13298 7.52871 4.19489C7.4668 4.2568 7.4177 4.3303 7.3842 4.41119C7.3507 4.49209 7.33348 4.57879 7.3335 4.66634V6.84473L6.60173 6.4222C6.44858 6.3339 6.26663 6.31004 6.09589 6.35585C5.92515 6.40166 5.77959 6.51341 5.69121 6.66651C5.60284 6.81962 5.57888 7.00155 5.62461 7.17231C5.67033 7.34308 5.782 7.48869 5.93506 7.57715L7.66683 8.57715C7.76819 8.63566 7.88316 8.66647 8.0002 8.66646C8.11723 8.66646 8.2322 8.63564 8.33355 8.57712C8.4349 8.51859 8.51906 8.43441 8.57756 8.33305C8.63607 8.23169 8.66685 8.11671 8.66683 7.99967V4.66634C8.66686 4.57879 8.64963 4.49209 8.61613 4.41119C8.58264 4.3303 8.53353 4.2568 8.47162 4.19489C8.40971 4.13298 8.33621 4.08387 8.25532 4.05037C8.17442 4.01688 8.08772 3.99965 8.00017 3.99967ZM8.00017 1.33301C6.68162 1.33301 5.39269 1.724 4.29636 2.45654C3.20004 3.18909 2.34555 4.23028 1.84097 5.44845C1.33638 6.66663 1.20436 8.00707 1.4616 9.30028C1.71883 10.5935 2.35377 11.7814 3.28612 12.7137C4.21847 13.6461 5.40636 14.281 6.69956 14.5382C7.99277 14.7955 9.33322 14.6635 10.5514 14.1589C11.7696 13.6543 12.8108 12.7998 13.5433 11.7035C14.2758 10.6071 14.6668 9.31822 14.6668 7.99967C14.6648 6.23218 13.9618 4.53767 12.712 3.28786C11.4622 2.03806 9.76766 1.33503 8.00017 1.33301ZM8.00017 13.333C6.94533 13.333 5.91419 13.0202 5.03712 12.4342C4.16006 11.8481 3.47648 11.0152 3.07281 10.0407C2.66914 9.06611 2.56352 7.99376 2.76931 6.95919C2.9751 5.92463 3.48305 4.97432 4.22893 4.22844C4.97481 3.48256 5.92512 2.97461 6.95968 2.76882C7.99425 2.56303 9.06661 2.66865 10.0411 3.07232C11.0157 3.47598 11.8486 4.15957 12.4347 5.03663C13.0207 5.91369 13.3335 6.94484 13.3335 7.99967C13.3319 9.41366 12.7695 10.7693 11.7696 11.7691C10.7698 12.769 9.41416 13.3314 8.00017 13.333Z\";\n\nexport const QR_CODE_PATH =\n \"M8 21H4C3.73478 21 3.48043 20.8946 3.29289 20.7071C3.10536 20.5196 3 20.2652 3 20V16C3 15.7348 2.89464 15.4804 2.70711 15.2929C2.51957 15.1054 2.26522 15 2 15C1.73478 15 1.48043 15.1054 1.29289 15.2929C1.10536 15.4804 1 15.7348 1 16V20C1 20.7956 1.31607 21.5587 1.87868 22.1213C2.44129 22.6839 3.20435 23 4 23H8C8.26522 23 8.51957 22.8946 8.70711 22.7071C8.89464 22.5196 9 22.2652 9 22C9 21.7348 8.89464 21.4804 8.70711 21.2929C8.51957 21.1054 8.26522 21 8 21ZM22 15C21.7348 15 21.4804 15.1054 21.2929 15.2929C21.1054 15.4804 21 15.7348 21 16V20C21 20.2652 20.8946 20.5196 20.7071 20.7071C20.5196 20.8946 20.2652 21 20 21H16C15.7348 21 15.4804 21.1054 15.2929 21.2929C15.1054 21.4804 15 21.7348 15 22C15 22.2652 15.1054 22.5196 15.2929 22.7071C15.4804 22.8946 15.7348 23 16 23H20C20.7956 23 21.5587 22.6839 22.1213 22.1213C22.6839 21.5587 23 20.7956 23 20V16C23 15.7348 22.8946 15.4804 22.7071 15.2929C22.5196 15.1054 22.2652 15 22 15ZM20 1H16C15.7348 1 15.4804 1.10536 15.2929 1.29289C15.1054 1.48043 15 1.73478 15 2C15 2.26522 15.1054 2.51957 15.2929 2.70711C15.4804 2.89464 15.7348 3 16 3H20C20.2652 3 20.5196 3.10536 20.7071 3.29289C20.8946 3.48043 21 3.73478 21 4V8C21 8.26522 21.1054 8.51957 21.2929 8.70711C21.4804 8.89464 21.7348 9 22 9C22.2652 9 22.5196 8.89464 22.7071 8.70711C22.8946 8.51957 23 8.26522 23 8V4C23 3.20435 22.6839 2.44129 22.1213 1.87868C21.5587 1.31607 20.7956 1 20 1ZM2 9C2.26522 9 2.51957 8.89464 2.70711 8.70711C2.89464 8.51957 3 8.26522 3 8V4C3 3.73478 3.10536 3.48043 3.29289 3.29289C3.48043 3.10536 3.73478 3 4 3H8C8.26522 3 8.51957 2.89464 8.70711 2.70711C8.89464 2.51957 9 2.26522 9 2C9 1.73478 8.89464 1.48043 8.70711 1.29289C8.51957 1.10536 8.26522 1 8 1H4C3.20435 1 2.44129 1.31607 1.87868 1.87868C1.31607 2.44129 1 3.20435 1 4V8C1 8.26522 1.10536 8.51957 1.29289 8.70711C1.48043 8.89464 1.73478 9 2 9ZM10 5H6C5.73478 5 5.48043 5.10536 5.29289 5.29289C5.10536 5.48043 5 5.73478 5 6V10C5 10.2652 5.10536 10.5196 5.29289 10.7071C5.48043 10.8946 5.73478 11 6 11H10C10.2652 11 10.5196 10.8946 10.7071 10.7071C10.8946 10.5196 11 10.2652 11 10V6C11 5.73478 10.8946 5.48043 10.7071 5.29289C10.5196 5.10536 10.2652 5 10 5ZM9 9H7V7H9V9ZM14 11H18C18.2652 11 18.5196 10.8946 18.7071 10.7071C18.8946 10.5196 19 10.2652 19 10V6C19 5.73478 18.8946 5.48043 18.7071 5.29289C18.5196 5.10536 18.2652 5 18 5H14C13.7348 5 13.4804 5.10536 13.2929 5.29289C13.1054 5.48043 13 5.73478 13 6V10C13 10.2652 13.1054 10.5196 13.2929 10.7071C13.4804 10.8946 13.7348 11 14 11ZM15 7H17V9H15V7ZM10 13H6C5.73478 13 5.48043 13.1054 5.29289 13.2929C5.10536 13.4804 5 13.7348 5 14V18C5 18.2652 5.10536 18.5196 5.29289 18.7071C5.48043 18.8946 5.73478 19 6 19H10C10.2652 19 10.5196 18.8946 10.7071 18.7071C10.8946 18.5196 11 18.2652 11 18V14C11 13.7348 10.8946 13.4804 10.7071 13.2929C10.5196 13.1054 10.2652 13 10 13ZM9 17H7V15H9V17ZM14 16C14.2652 16 14.5196 15.8946 14.7071 15.7071C14.8946 15.5196 15 15.2652 15 15C15.2652 15 15.5196 14.8946 15.7071 14.7071C15.8946 14.5196 16 14.2652 16 14C16 13.7348 15.8946 13.4804 15.7071 13.2929C15.5196 13.1054 15.2652 13 15 13H14C13.7348 13 13.4804 13.1054 13.2929 13.2929C13.1054 13.4804 13 13.7348 13 14V15C13 15.2652 13.1054 15.5196 13.2929 15.7071C13.4804 15.8946 13.7348 16 14 16ZM18 13C17.7348 13 17.4804 13.1054 17.2929 13.2929C17.1054 13.4804 17 13.7348 17 14V17C16.7348 17 16.4804 17.1054 16.2929 17.2929C16.1054 17.4804 16 17.7348 16 18C16 18.2652 16.1054 18.5196 16.2929 18.7071C16.4804 18.8946 16.7348 19 17 19H18C18.2652 19 18.5196 18.8946 18.7071 18.7071C18.8946 18.5196 19 18.2652 19 18V14C19 13.7348 18.8946 13.4804 18.7071 13.2929C18.5196 13.1054 18.2652 13 18 13ZM14 17C13.8022 17 13.6089 17.0586 13.4444 17.1685C13.28 17.2784 13.1518 17.4346 13.0761 17.6173C13.0004 17.8 12.9806 18.0011 13.0192 18.1951C13.0578 18.3891 13.153 18.5673 13.2929 18.7071C13.4327 18.847 13.6109 18.9422 13.8049 18.9808C13.9989 19.0194 14.2 18.9996 14.3827 18.9239C14.5654 18.8482 14.7216 18.72 14.8315 18.5556C14.9414 18.3911 15 18.1978 15 18C15 17.7348 14.8946 17.4804 14.7071 17.2929C14.5196 17.1054 14.2652 17 14 17Z\";\n\nexport const WHATSAPP_PATH =\n \"M16.6 13.9996C16.4 13.8996 15.1 13.2996 14.9 13.1996C14.7 13.0996 14.5 13.0996 14.3 13.2996C14.1 13.4996 13.7 14.0996 13.5 14.2996C13.4 14.4996 13.2 14.4996 13 14.3996C12.3 14.0996 11.6 13.6996 11 13.1996C10.5 12.6996 10 12.0996 9.6 11.4996C9.5 11.2996 9.6 11.0996 9.7 10.9996C9.8 10.8996 9.9 10.6996 10.1 10.5996C10.2 10.4996 10.3 10.2996 10.3 10.1996C10.4 10.0996 10.4 9.89961 10.3 9.79961C10.2 9.69961 9.7 8.49961 9.5 7.99961C9.4 7.29961 9.2 7.29961 9 7.29961C8.9 7.29961 8.7 7.29961 8.5 7.29961C8.3 7.29961 8 7.49961 7.9 7.59961C7.3 8.19961 7 8.89961 7 9.69961C7.1 10.5996 7.4 11.4996 8 12.2996C9.1 13.8996 10.5 15.1996 12.2 15.9996C12.7 16.1996 13.1 16.3996 13.6 16.4996C14.1 16.6996 14.6 16.6996 15.2 16.5996C15.9 16.4996 16.5 15.9996 16.9 15.3996C17.1 14.9996 17.1 14.5996 17 14.1996C17 14.1996 16.8 14.0996 16.6 13.9996ZM19.1 4.89961C15.2 0.999609 8.9 0.999609 5 4.89961C1.8 8.09961 1.2 12.9996 3.4 16.8996L2 21.9996L7.3 20.5996C8.8 21.3996 10.4 21.7996 12 21.7996C17.5 21.7996 21.9 17.3996 21.9 11.8996C22 9.29961 20.9 6.79961 19.1 4.89961ZM16.4 18.8996C15.1 19.6996 13.6 20.1996 12 20.1996C10.5 20.1996 9.1 19.7996 7.8 19.0996L7.5 18.8996L4.4 19.6996L5.2 16.6996L5 16.3996C2.6 12.3996 3.8 7.39961 7.7 4.89961C11.6 2.39961 16.6 3.69961 19 7.49961C21.4 11.3996 20.3 16.4996 16.4 18.8996Z\";\n\nexport const COPY_PATH =\n \"M6.66699 13.3337V15.667C6.66699 16.6004 6.66699 17.0671 6.84865 17.4236C7.00844 17.7372 7.2634 17.9922 7.57701 18.152C7.93353 18.3337 8.40024 18.3337 9.33366 18.3337H15.667C16.6004 18.3337 17.0671 18.3337 17.4236 18.152C17.7372 17.9922 17.9922 17.7372 18.152 17.4236C18.3337 17.0671 18.3337 16.6004 18.3337 15.667V9.33366C18.3337 8.40024 18.3337 7.93353 18.152 7.57701C17.9922 7.2634 17.7372 7.00844 17.4236 6.84865C17.0671 6.66699 16.6004 6.66699 15.667 6.66699H13.3337M4.33366 13.3337H10.667C11.6004 13.3337 12.0671 13.3337 12.4236 13.152C12.7372 12.9922 12.9922 12.7372 13.152 12.4236C13.3337 12.0671 13.3337 11.6004 13.3337 10.667V4.33366C13.3337 3.40024 13.3337 2.93353 13.152 2.57701C12.9922 2.2634 12.7372 2.00844 12.4236 1.84865C12.0671 1.66699 11.6004 1.66699 10.667 1.66699H4.33366C3.40024 1.66699 2.93353 1.66699 2.57701 1.84865C2.2634 2.00844 2.00844 2.2634 1.84865 2.57701C1.66699 2.93353 1.66699 3.40024 1.66699 4.33366V10.667C1.66699 11.6004 1.66699 12.0671 1.84865 12.4236C2.00844 12.7372 2.2634 12.9922 2.57701 13.152C2.93353 13.3337 3.40024 13.3337 4.33366 13.3337Z\";\n\nexport const CHECK_SUCCESS_PATH = \"M16.6663 5L7.49967 14.1667L3.33301 10\";\n\nexport const TOOLTIP_ARROW_PATH =\n \"M3.21121 6.42229C3.94826 7.89639 6.05187 7.89639 6.78892 6.42229L10.0001 0H6.2595e-05L3.21121 6.42229Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\nimport {\n AREA_EXPAND_PATHS,\n CHECK_SUCCESS_PATH,\n CLOCK_FILLED_PATH,\n COPY_PATH,\n QR_CODE_PATH,\n SHARE_PATH,\n TOOLTIP_ARROW_PATH,\n WHATSAPP_PATH,\n} from \"./cottageDetailPaths\";\n\nexport function ShareIcon({ size = 20, color = colors.white, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={SHARE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\nexport function AreaExpandIcon({ size = 24, color = colors.white, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n {AREA_EXPAND_PATHS.map((path) => (\n <Path\n key={path}\n d={path}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n ))}\n </Svg>\n );\n}\n\nexport function ClockFilledIcon({ size = 16, color = colors.white }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path d={CLOCK_FILLED_PATH} fill={color} />\n </Svg>\n );\n}\n\nexport function QrCodeIcon({ size = 24, color = colors.primary }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path d={QR_CODE_PATH} fill={color} />\n </Svg>\n );\n}\n\nexport function WhatsAppIcon({ size = 24, color = colors.white }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path d={WHATSAPP_PATH} fill={color} />\n </Svg>\n );\n}\n\nexport function CopyIcon({ size = 20, color = colors.grey200, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={COPY_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\nexport function CheckSuccessIcon({ size = 20, color = colors.green, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={CHECK_SUCCESS_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\nexport function TooltipArrowIcon({ size = 10, color = colors.grey600 }: IconProps) {\n return (\n <Svg width={size} height={(size * 8) / 10} viewBox=\"0 0 10 8\" fill=\"none\">\n <Path d={TOOLTIP_ARROW_PATH} fill={color} />\n </Svg>\n );\n}\n\nexport * from \"./cottageDetailPaths\";\n","export const FACEBOOK_PATH =\n \"M10.0003 1.69922C5.41699 1.69922 1.66699 5.44089 1.66699 10.0492C1.66699 14.2159 4.71699 17.6742 8.70033 18.2992V12.4659H6.58366V10.0492H8.70033V8.20755C8.70033 6.11589 9.94199 4.96589 11.8503 4.96589C12.7587 4.96589 13.7087 5.12422 13.7087 5.12422V7.18255H12.6587C11.6253 7.18255 11.3003 7.82422 11.3003 8.48255V10.0492H13.617L13.242 12.4659H11.3003V18.2992C13.264 17.9891 15.0522 16.9871 16.3419 15.4743C17.6317 13.9614 18.3381 12.0373 18.3337 10.0492C18.3337 5.44089 14.5837 1.69922 10.0003 1.69922Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { FACEBOOK_PATH } from \"./facebookPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { FACEBOOK_PATH } from \"./facebookPath\";\n\nexport function FacebookIcon({ size = 20, color = colors.white }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path d={FACEBOOK_PATH} fill={color} />\n </Svg>\n );\n}\n","/** Filters icon path — 20×20 viewBox. */\nexport const FILTERS_PATH = \"M5 10H15M2.5 5H17.5M7.5 15H12.5\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { FILTERS_PATH } from \"./filtersPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { FILTERS_PATH } from \"./filtersPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function FiltersIcon({ size = 20, color = colors.grey200, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={FILTERS_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Heart icon path — 16×16 viewBox. */\nexport const HEART_PATH =\n \"M7.99547 3.42388C6.66257 1.8656 4.43987 1.44643 2.76984 2.87334C1.0998 4.30026 0.864686 6.68598 2.17617 8.3736C3.26659 9.77674 6.56656 12.7361 7.64811 13.6939C7.76911 13.801 7.82961 13.8546 7.90018 13.8757C7.96178 13.8941 8.02917 13.8941 8.09077 13.8757C8.16134 13.8546 8.22184 13.801 8.34284 13.6939C9.42439 12.7361 12.7244 9.77674 13.8148 8.3736C15.1263 6.68598 14.9199 4.28525 13.2211 2.87334C11.5224 1.46144 9.32838 1.8656 7.99547 3.42388Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { HEART_PATH } from \"./heartPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { HEART_PATH } from \"./heartPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function HeartIcon({ size = 20, color = colors.primary, strokeWidth = 1.5 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={HEART_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </Svg>\n );\n}\n","/** Globe paths — 20×20 viewBox. */\nexport const GLOBE_PATH =\n \"M18.3333 10C18.3333 14.6024 14.6024 18.3333 10 18.3333M18.3333 10C18.3333 5.39763 14.6024 1.66667 10 1.66667M18.3333 10H1.66667M10 18.3333C5.39763 18.3333 1.66667 14.6024 1.66667 10M10 18.3333C12.0833 16.0511 13.2675 13.0836 13.3333 10C13.2675 6.91643 12.0833 3.94892 10 1.66667M10 18.3333C7.91667 16.0511 6.73248 13.0836 6.66667 10C6.73248 6.91643 7.91667 3.94892 10 1.66667M1.66667 10C1.66667 5.39763 5.39763 1.66667 10 1.66667\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\nimport { GLOBE_PATH } from \"./globePath\";\n\nexport function GlobeIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={GLOBE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\nexport { GLOBE_PATH } from \"./globePath\";\n","/** HelpCircle icon path — 16×16 viewBox. */\nexport const HELP_CIRCLE_PATH =\n \"M6.99971 6.00149C7.11717 5.66757 7.34902 5.386 7.6542 5.20665C7.95937 5.0273 8.31817 4.96174 8.66705 5.02158C9.01593 5.08142 9.33238 5.2628 9.56034 5.5336C9.7883 5.8044 9.91306 6.14714 9.91254 6.50112C9.91254 7.50037 8.41365 8 8.41365 8M8.43298 10H8.43964M8.33304 13.3333C11.4627 13.3333 13.9997 10.7963 13.9997 7.66667C13.9997 4.53705 11.4627 2 8.33304 2C5.20343 2 2.66638 4.53705 2.66638 7.66667C2.66638 8.3 2.77027 8.90906 2.96196 9.47774C3.03409 9.69175 3.07016 9.79875 3.07666 9.88095C3.08309 9.96213 3.07823 10.019 3.05814 10.098C3.03781 10.1779 2.99291 10.261 2.9031 10.4272L1.81267 12.4456C1.65713 12.7335 1.57936 12.8774 1.59676 12.9885C1.61192 13.0853 1.66887 13.1705 1.75249 13.2215C1.84849 13.2801 2.01124 13.2632 2.33674 13.2296L5.75075 12.8767C5.85414 12.866 5.90583 12.8606 5.95295 12.8624C5.99929 12.8642 6.03201 12.8686 6.0772 12.879C6.12315 12.8896 6.18092 12.9118 6.29648 12.9564C6.92851 13.1999 7.61519 13.3333 8.33304 13.3333Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { HELP_CIRCLE_PATH } from \"./helpCirclePath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { HELP_CIRCLE_PATH } from \"./helpCirclePath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function HelpCircleIcon({\n size = 20,\n color = colors.primary,\n strokeWidth = 1.5,\n}: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={HELP_CIRCLE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const HOME_PATH =\n \"M1.66675 16.6667H3.33341M3.33341 16.6667H8.33341M3.33341 16.6667V9.54352C3.33341 9.09823 3.33341 8.87548 3.38756 8.66828C3.43554 8.48466 3.51491 8.31089 3.6215 8.15387C3.74178 7.97668 3.90895 7.82974 4.24406 7.53652L8.24538 4.03537C8.86662 3.49178 9.17726 3.21997 9.5271 3.11652C9.83559 3.02529 10.1644 3.02529 10.4729 3.11652C10.823 3.22005 11.1341 3.49212 11.7563 4.03652L15.7563 7.53652C16.0914 7.82974 16.2586 7.97668 16.3789 8.15387C16.4855 8.31089 16.5642 8.48466 16.6122 8.66828C16.6664 8.87548 16.6667 9.09824 16.6667 9.54352V16.6667M8.33341 16.6667H11.6667M8.33341 16.6667V13.3334C8.33341 12.4129 9.07961 11.6667 10.0001 11.6667C10.9206 11.6667 11.6667 12.4129 11.6667 13.3334V16.6667M11.6667 16.6667H16.6667M16.6667 16.6667H18.3334\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { HOME_PATH } from \"./homePath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { HOME_PATH } from \"./homePath\";\n\nexport function HomeIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={HOME_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const INSTAGRAM_PATH =\n \"M6.49984 1.66748H13.4998C16.1665 1.66748 18.3332 3.83415 18.3332 6.50081V13.5008C18.3332 14.7827 17.8239 16.0121 16.9175 16.9185C16.0111 17.8249 14.7817 18.3341 13.4998 18.3341H6.49984C3.83317 18.3341 1.6665 16.1675 1.6665 13.5008V6.50081C1.6665 5.21893 2.17573 3.98956 3.08215 3.08313C3.98858 2.17671 5.21796 1.66748 6.49984 1.66748ZM6.33317 3.33415C5.53752 3.33415 4.77446 3.65022 4.21185 4.21283C3.64924 4.77544 3.33317 5.5385 3.33317 6.33415V13.6675C3.33317 15.3258 4.67484 16.6675 6.33317 16.6675H13.6665C14.4622 16.6675 15.2252 16.3514 15.7878 15.7888C16.3504 15.2262 16.6665 14.4631 16.6665 13.6675V6.33415C16.6665 4.67581 15.3248 3.33415 13.6665 3.33415H6.33317ZM14.3748 4.58415C14.6511 4.58415 14.9161 4.69389 15.1114 4.88924C15.3068 5.08459 15.4165 5.34955 15.4165 5.62581C15.4165 5.90208 15.3068 6.16703 15.1114 6.36238C14.9161 6.55773 14.6511 6.66748 14.3748 6.66748C14.0986 6.66748 13.8336 6.55773 13.6383 6.36238C13.4429 6.16703 13.3332 5.90208 13.3332 5.62581C13.3332 5.34955 13.4429 5.08459 13.6383 4.88924C13.8336 4.69389 14.0986 4.58415 14.3748 4.58415ZM9.99984 5.83415C11.1049 5.83415 12.1647 6.27313 12.9461 7.05454C13.7275 7.83594 14.1665 8.89574 14.1665 10.0008C14.1665 11.1059 13.7275 12.1657 12.9461 12.9471C12.1647 13.7285 11.1049 14.1675 9.99984 14.1675C8.89477 14.1675 7.83496 13.7285 7.05356 12.9471C6.27216 12.1657 5.83317 11.1059 5.83317 10.0008C5.83317 8.89574 6.27216 7.83594 7.05356 7.05454C7.83496 6.27313 8.89477 5.83415 9.99984 5.83415ZM9.99984 7.50081C9.3368 7.50081 8.70091 7.76421 8.23207 8.23305C7.76323 8.70189 7.49984 9.33777 7.49984 10.0008C7.49984 10.6639 7.76323 11.2997 8.23207 11.7686C8.70091 12.2374 9.3368 12.5008 9.99984 12.5008C10.6629 12.5008 11.2988 12.2374 11.7676 11.7686C12.2364 11.2997 12.4998 10.6639 12.4998 10.0008C12.4998 9.33777 12.2364 8.70189 11.7676 8.23305C11.2988 7.76421 10.6629 7.50081 9.99984 7.50081Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { INSTAGRAM_PATH } from \"./instagramPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { INSTAGRAM_PATH } from \"./instagramPath\";\n\nexport function InstagramIcon({ size = 20, color = colors.white }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path d={INSTAGRAM_PATH} fill={color} />\n </Svg>\n );\n}\n","export const KEY_PATH =\n \"M5.28673 10.0002L7.0545 11.768M7.6435 7.64301L9.41127 9.41078M10.0003 5.28624L11.768 7.05401M4.22553 11.0604L11.0609 4.22505C11.7209 3.56502 12.0513 3.235 12.4318 3.11136C12.7666 3.00259 13.127 3.00259 13.4618 3.11136C13.8421 3.23494 14.1718 3.56464 14.8311 4.22393L15.775 5.16785C16.4351 5.82788 16.7654 6.15867 16.8891 6.53922C16.9979 6.87396 16.9976 7.23381 16.8889 7.56855C16.7652 7.9491 16.4353 8.27937 15.7753 8.9394L8.93989 15.7748C8.27986 16.4348 7.94959 16.7647 7.56904 16.8884C7.2343 16.9971 6.87445 16.9974 6.53971 16.8886C6.15916 16.765 5.82837 16.4346 5.16834 15.7745L4.22441 14.8306C3.56513 14.1713 3.23542 13.8416 3.11185 13.4613C3.00308 13.1266 3.00308 12.7661 3.11185 12.4313C3.23549 12.0508 3.56551 11.7204 4.22553 11.0604Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { KEY_PATH } from \"./keyPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { KEY_PATH } from \"./keyPath\";\n\nexport function KeyIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={KEY_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** LayoutGrid icon path — 16×16 viewBox. */\nexport const LAYOUT_GRID_PATH =\n \"M4.33333 4.33333H4.34M11.6667 4.33333H11.6733M4.33333 11.6667H4.34M8.66667 8.66667H8.67333M11.6667 11.6667H11.6733M11.3333 14H14V11.3333M9.33333 11V14M14 9.33333H11M10.4 6.66667H12.9333C13.3067 6.66667 13.4934 6.66667 13.636 6.594C13.7614 6.53009 13.8634 6.4281 13.9273 6.30266C14 6.16005 14 5.97337 14 5.6V3.06667C14 2.6933 14 2.50661 13.9273 2.36401C13.8634 2.23856 13.7614 2.13658 13.636 2.07266C13.4934 2 13.3067 2 12.9333 2H10.4C10.0266 2 9.83995 2 9.69734 2.07266C9.5719 2.13658 9.46991 2.23856 9.406 2.36401C9.33333 2.50661 9.33333 2.6933 9.33333 3.06667V5.6C9.33333 5.97337 9.33333 6.16005 9.406 6.30266C9.46991 6.4281 9.5719 6.53009 9.69734 6.594C9.83995 6.66667 10.0266 6.66667 10.4 6.66667ZM3.06667 6.66667H5.6C5.97337 6.66667 6.16005 6.66667 6.30266 6.594C6.4281 6.53009 6.53009 6.4281 6.594 6.30266C6.66667 6.16005 6.66667 5.97337 6.66667 5.6V3.06667C6.66667 2.6933 6.66667 2.50661 6.594 2.36401C6.53009 2.23856 6.4281 2.13658 6.30266 2.07266C6.16005 2 5.97337 2 5.6 2H3.06667C2.6933 2 2.50661 2 2.36401 2.07266C2.23856 2.13658 2.13658 2.23856 2.07266 2.36401C2 2.50661 2 2.6933 2 3.06667V5.6C2 5.97337 2 6.16005 2.07266 6.30266C2.13658 6.4281 2.23856 6.53009 2.36401 6.594C2.50661 6.66667 2.6933 6.66667 3.06667 6.66667ZM3.06667 14H5.6C5.97337 14 6.16005 14 6.30266 13.9273C6.4281 13.8634 6.53009 13.7614 6.594 13.636C6.66667 13.4934 6.66667 13.3067 6.66667 12.9333V10.4C6.66667 10.0266 6.66667 9.83995 6.594 9.69734C6.53009 9.5719 6.4281 9.46991 6.30266 9.406C6.16005 9.33333 5.97337 9.33333 5.6 9.33333H3.06667C2.6933 9.33333 2.50661 9.33333 2.36401 9.406C2.23856 9.46991 2.13658 9.5719 2.07266 9.69734C2 9.83995 2 10.0266 2 10.4V12.9333C2 13.3067 2 13.4934 2.07266 13.636C2.13658 13.7614 2.23856 13.8634 2.36401 13.9273C2.50661 14 2.6933 14 3.06667 14Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { LAYOUT_GRID_PATH } from \"./layoutGridPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { LAYOUT_GRID_PATH } from \"./layoutGridPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function LayoutGridIcon({\n size = 20,\n color = colors.primary,\n strokeWidth = 1.5,\n}: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={LAYOUT_GRID_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const LINKEDIN_PATH =\n \"M15.8333 2.50098C16.2754 2.50098 16.6993 2.67657 17.0118 2.98913C17.3244 3.30169 17.5 3.72562 17.5 4.16764V15.8343C17.5 16.2763 17.3244 16.7003 17.0118 17.0128C16.6993 17.3254 16.2754 17.501 15.8333 17.501H4.16667C3.72464 17.501 3.30072 17.3254 2.98816 17.0128C2.67559 16.7003 2.5 16.2763 2.5 15.8343V4.16764C2.5 3.72562 2.67559 3.30169 2.98816 2.98913C3.30072 2.67657 3.72464 2.50098 4.16667 2.50098H15.8333ZM15.4167 15.4176V11.001C15.4167 10.2805 15.1304 9.58948 14.621 9.08C14.1115 8.57053 13.4205 8.28431 12.7 8.28431C11.9917 8.28431 11.1667 8.71764 10.7667 9.36764V8.44264H8.44167V15.4176H10.7667V11.3093C10.7667 10.6676 11.2833 10.1426 11.925 10.1426C12.2344 10.1426 12.5312 10.2656 12.75 10.4844C12.9687 10.7031 13.0917 10.9999 13.0917 11.3093V15.4176H15.4167ZM5.73333 7.13431C6.10464 7.13431 6.46073 6.98681 6.72328 6.72426C6.98583 6.46171 7.13333 6.10561 7.13333 5.73431C7.13333 4.95931 6.50833 4.32598 5.73333 4.32598C5.35982 4.32598 5.0016 4.47435 4.73749 4.73847C4.47338 5.00258 4.325 5.3608 4.325 5.73431C4.325 6.50931 4.95833 7.13431 5.73333 7.13431ZM6.89167 15.4176V8.44264H4.58333V15.4176H6.89167Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { LINKEDIN_PATH } from \"./linkedinPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { LINKEDIN_PATH } from \"./linkedinPath\";\n\nexport function LinkedInIcon({ size = 20, color = colors.white }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path d={LINKEDIN_PATH} fill={color} />\n </Svg>\n );\n}\n","/** Four-tile list view icon path — 20×20 viewBox. */\nexport const LIST_VIEW_PATH =\n \"M7 2.5H3.83333C3.36662 2.5 3.13327 2.5 2.95501 2.59083C2.79821 2.67072 2.67072 2.79821 2.59083 2.95501C2.5 3.13327 2.5 3.36662 2.5 3.83333V7C2.5 7.46671 2.5 7.70007 2.59083 7.87833C2.67072 8.03513 2.79821 8.16261 2.95501 8.24251C3.13327 8.33333 3.36662 8.33333 3.83333 8.33333H7C7.46671 8.33333 7.70007 8.33333 7.87833 8.24251C8.03513 8.16261 8.16261 8.03513 8.24251 7.87833C8.33333 7.70007 8.33333 7.46671 8.33333 7V3.83333C8.33333 3.36662 8.33333 3.13327 8.24251 2.95501C8.16261 2.79821 8.03513 2.67072 7.87833 2.59083C7.70007 2.5 7.46671 2.5 7 2.5ZM16.1667 2.5H13C12.5333 2.5 12.2999 2.5 12.1217 2.59083C11.9649 2.67072 11.8374 2.79821 11.7575 2.95501C11.6667 3.13327 11.6667 3.36662 11.6667 3.83333V7C11.6667 7.46671 11.6667 7.70007 11.7575 7.87833C11.8374 8.03513 11.9649 8.16261 12.1217 8.24251C12.2999 8.33333 12.5333 8.33333 13 8.33333H16.1667C16.6334 8.33333 16.8667 8.33333 17.045 8.24251C17.2018 8.16261 17.3293 8.03513 17.4092 7.87833C17.5 7.70007 17.5 7.46671 17.5 7V3.83333C17.5 3.36662 17.5 3.13327 17.4092 2.95501C17.3293 2.79821 17.2018 2.67072 17.045 2.59083C16.8667 2.5 16.6334 2.5 16.1667 2.5ZM16.1667 11.6667H13C12.5333 11.6667 12.2999 11.6667 12.1217 11.7575C11.9649 11.8374 11.8374 11.9649 11.7575 12.1217C11.6667 12.2999 11.6667 12.5333 11.6667 13V16.1667C11.6667 16.6334 11.6667 16.8667 11.7575 17.045C11.8374 17.2018 11.9649 17.3293 12.1217 17.4092C12.2999 17.5 12.5333 17.5 13 17.5H16.1667C16.6334 17.5 16.8667 17.5 17.045 17.4092C17.2018 17.3293 17.3293 17.2018 17.4092 17.045C17.5 16.8667 17.5 16.6334 17.5 16.1667V13C17.5 12.5333 17.5 12.2999 17.4092 12.1217C17.3293 11.9649 17.2018 11.8374 17.045 11.7575C16.8667 11.6667 16.6334 11.6667 16.1667 11.6667ZM7 11.6667H3.83333C3.36662 11.6667 3.13327 11.6667 2.95501 11.7575C2.79821 11.8374 2.67072 11.9649 2.59083 12.1217C2.5 12.2999 2.5 12.5333 2.5 13V16.1667C2.5 16.6334 2.5 16.8667 2.59083 17.045C2.67072 17.2018 2.79821 17.3293 2.95501 17.4092C3.13327 17.5 3.36662 17.5 3.83333 17.5H7C7.46671 17.5 7.70007 17.5 7.87833 17.4092C8.03513 17.3293 8.16261 17.2018 8.24251 17.045C8.33333 16.8667 8.33333 16.6334 8.33333 16.1667V13C8.33333 12.5333 8.33333 12.2999 8.24251 12.1217C8.16261 11.9649 8.03513 11.8374 7.87833 11.7575C7.70007 11.6667 7.46671 11.6667 7 11.6667Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { LIST_VIEW_PATH } from \"./listViewPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { LIST_VIEW_PATH } from \"./listViewPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function ListViewIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={LIST_VIEW_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Location pin icon path — 20×20 viewBox. */\nexport const LOCATION_PIN_PATH =\n \"M4.16675 8.26904C4.16675 12.3122 7.70381 15.6558 9.26941 16.9377C9.49347 17.1211 9.60684 17.214 9.774 17.261C9.90417 17.2977 10.0957 17.2977 10.2259 17.261C10.3934 17.2139 10.506 17.122 10.7309 16.9378C12.2965 15.6559 15.8333 12.3126 15.8333 8.26941C15.8333 6.73932 15.2188 5.27171 14.1248 4.18977C13.0309 3.10783 11.5472 2.5 10.0001 2.5C8.45305 2.5 6.96925 3.10792 5.87529 4.18986C4.78133 5.2718 4.16675 6.73895 4.16675 8.26904ZM8.33341 7.5C8.33341 8.42047 9.07961 9.16667 10.0001 9.16667C10.9206 9.16667 11.6667 8.42047 11.6667 7.5C11.6667 6.57953 10.9206 5.83333 10.0001 5.83333C9.07961 5.83333 8.33341 6.57953 8.33341 7.5Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { LOCATION_PIN_PATH } from \"./locationPinPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { LOCATION_PIN_PATH } from \"./locationPinPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function LocationPinIcon({ size = 20, color = colors.grey200, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={LOCATION_PIN_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** LogOut icon path — 16×16 viewBox. */\nexport const LOG_OUT_PATH =\n \"M10.6667 4.66667L14 8L10.6667 11.3333M14 8H6M6 2H5.2C4.0799 2 3.51984 2 3.09202 2.21799C2.7157 2.40973 2.40973 2.71569 2.21799 3.09202C2 3.51984 2 4.07989 2 5.2V10.8C2 11.9201 2 12.4802 2.21799 12.908C2.40973 13.2843 2.71569 13.5903 3.09202 13.782C3.51984 14 4.0799 14 5.2 14H6\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { LOG_OUT_PATH } from \"./logOutPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { LOG_OUT_PATH } from \"./logOutPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function LogOutIcon({ size = 20, color = colors.red, strokeWidth = 1.5 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={LOG_OUT_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const MAIL_PATH =\n \"M3.33333 4.99984L8.42303 8.84339L8.42473 8.8448C8.98987 9.25924 9.27261 9.46658 9.5823 9.54668C9.85602 9.61748 10.1438 9.61748 10.4175 9.54668C10.7274 9.46651 11.011 9.25856 11.5771 8.84339C11.5771 8.84339 14.8417 6.33812 16.6667 4.99984M2.5 13.1667V6.83333C2.5 5.89991 2.5 5.43285 2.68166 5.07633C2.84144 4.76273 3.09623 4.50795 3.40983 4.34816C3.76635 4.1665 4.23341 4.1665 5.16683 4.1665H14.8335C15.7669 4.1665 16.233 4.1665 16.5895 4.34816C16.9031 4.50795 17.1587 4.76273 17.3185 5.07633C17.5 5.43251 17.5 5.899 17.5 6.8306V13.1695C17.5 14.1011 17.5 14.5669 17.3185 14.9231C17.1587 15.2367 16.9031 15.4919 16.5895 15.6517C16.2333 15.8332 15.7675 15.8332 14.8359 15.8332H5.16409C4.23249 15.8332 3.766 15.8332 3.40983 15.6517C3.09623 15.4919 2.84144 15.2367 2.68166 14.9231C2.5 14.5666 2.5 14.1001 2.5 13.1667Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { MAIL_PATH } from \"./mailPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { MAIL_PATH } from \"./mailPath\";\n\nexport function MailIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={MAIL_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Folded map icon path — 20×20 viewBox. */\nexport const MAP_VIEW_PATH =\n \"M13.3332 4.99984L7.49984 1.6665L1.6665 4.99984V18.3332L7.49984 14.9998M13.3332 4.99984L18.3332 1.6665V14.9998L13.3332 18.3332L7.49984 14.9998M7.49984 14.9998V1.6665M13.3332 18.3332V4.99984\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { MAP_VIEW_PATH } from \"./mapViewPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { MAP_VIEW_PATH } from \"./mapViewPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function MapViewIcon({ size = 20, color = colors.grey400, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={MAP_VIEW_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Map control paths — 20×20 viewBox. */\nexport const MAP_EXPAND_PATH = \"M8.33366 15.8332H4.16699V11.6665M11.667 4.1665H15.8337V8.33317\";\n\nexport const MAP_COLLAPSE_PATH = \"M4.16699 11.6665H8.33366V15.8332M15.8337 8.33317H11.667V4.1665\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\nimport { MAP_COLLAPSE_PATH, MAP_EXPAND_PATH } from \"./mapControlPaths\";\n\nfunction MapControlIcon({\n path,\n size = 20,\n color = colors.white,\n strokeWidth = 2,\n}: IconProps & { path: string }) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={path}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\nexport function MapExpandIcon(props: IconProps) {\n return <MapControlIcon {...props} path={MAP_EXPAND_PATH} />;\n}\n\nexport function MapCollapseIcon(props: IconProps) {\n return <MapControlIcon {...props} path={MAP_COLLAPSE_PATH} />;\n}\n","export const MENU_PATH = \"M8 12.6667H17.3333M1 6.83332H17.3333M8 0.999985H17.3333\";\n\nexport const MENU_CLOSE_PATH = \"M15 1L1 15M1 1L15 15\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\nimport { MENU_CLOSE_PATH, MENU_PATH } from \"./menuPath\";\n\nexport { MENU_CLOSE_PATH, MENU_PATH } from \"./menuPath\";\n\nexport interface MenuIconProps extends IconProps {\n open?: boolean;\n}\n\nexport function MenuIcon({\n size = 19,\n color = colors.white,\n strokeWidth = 2,\n open = false,\n}: MenuIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 19 19\" fill=\"none\">\n <Path\n d={open ? MENU_CLOSE_PATH : MENU_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n transform={open ? \"translate(1.5 1.5)\" : \"translate(0 2.5)\"}\n />\n </Svg>\n );\n}\n","export const MINUS_PATH = \"M3.33337 8H12.6667\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\nimport { MINUS_PATH } from \"./minusPath\";\n\nexport { MINUS_PATH } from \"./minusPath\";\n\nexport function MinusIcon({ size = 16, color = colors.white, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={MINUS_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const NAVIGATE_PATH =\n \"M5.691 14.2339C11.5836 17.7694 16.2976 13.0554 15.7084 4.21658C6.86968 3.62732 2.15584 8.34151 5.691 14.2339ZM5.691 14.2339C5.69093 14.2338 5.69107 14.234 5.691 14.2339ZM5.691 14.2339L4.16675 15.7576M5.691 14.2339L8.88079 11.0436\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { NAVIGATE_PATH } from \"./navigatePath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { NAVIGATE_PATH } from \"./navigatePath\";\n\nexport function NavigateIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={NAVIGATE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const PHONE_PATH =\n \"M7.91872 3.54768C7.66561 2.91492 7.05276 2.5 6.37126 2.5H4.07895C3.20692 2.5 2.5 3.20675 2.5 4.07878C2.5 11.491 8.50898 17.5 15.9212 17.5C16.7933 17.5 17.5 16.793 17.5 15.921L17.5004 13.6283C17.5004 12.9468 17.0856 12.334 16.4528 12.0809L14.2558 11.2024C13.6874 10.9751 13.0402 11.0774 12.57 11.4693L12.0029 11.9422C11.3407 12.4941 10.3664 12.4502 9.75683 11.8407L8.16018 10.2425C7.55066 9.63302 7.50561 8.65945 8.05745 7.99724L8.53027 7.43025C8.92218 6.95996 9.02541 6.31263 8.79805 5.74424L7.91872 3.54768Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { PHONE_PATH } from \"./phonePath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { PHONE_PATH } from \"./phonePath\";\n\nexport function PhoneIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={PHONE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const PLUS_PATH = \"M8.00004 3.33325V12.6666M3.33337 7.99992H12.6667\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\nimport { PLUS_PATH } from \"./plusPath\";\n\nexport { PLUS_PATH } from \"./plusPath\";\n\nexport function PlusIcon({ size = 16, color = colors.white, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={PLUS_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Search (magnifying glass) paths — 20×20 viewBox. */\nexport const SEARCH_CIRCLE_PATH =\n \"M9.16667 15.8333C12.8486 15.8333 15.8333 12.8486 15.8333 9.16667C15.8333 5.48477 12.8486 2.5 9.16667 2.5C5.48477 2.5 2.5 5.48477 2.5 9.16667C2.5 12.8486 5.48477 15.8333 9.16667 15.8333Z\";\n\nexport const SEARCH_HANDLE_PATH = \"M17.5 17.5L13.875 13.875\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { SEARCH_CIRCLE_PATH, SEARCH_HANDLE_PATH } from \"./searchPath\";\nimport { colors } from \"../../theme\";\n\nexport { SEARCH_CIRCLE_PATH, SEARCH_HANDLE_PATH } from \"./searchPath\";\n\ninterface SearchIconProps {\n size?: number;\n color?: string;\n strokeWidth?: number;\n}\n\n/** Native — react-native-svg (peer dependency). */\nexport function SearchIcon({\n size = 20,\n color = colors.primary,\n strokeWidth = 2,\n}: SearchIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={SEARCH_CIRCLE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <Path\n d={SEARCH_HANDLE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Settings icon path — 16×16 viewBox. */\nexport const SETTINGS_PATH =\n \"M8.00004 10C9.10461 10 10 9.10457 10 8C10 6.89543 9.10461 6 8.00004 6C6.89547 6 6.00004 6.89543 6.00004 8C6.00004 9.10457 6.89547 10 8.00004 10Z M12.4849 9.81818C12.4042 10.001 12.3801 10.2038 12.4158 10.4004C12.4514 10.597 12.5452 10.7784 12.6849 10.9212L12.7213 10.9576C12.834 11.0702 12.9234 11.2038 12.9844 11.351C13.0454 11.4981 13.0768 11.6559 13.0768 11.8152C13.0768 11.9744 13.0454 12.1322 12.9844 12.2793C12.9234 12.4265 12.834 12.5602 12.7213 12.6727C12.6087 12.7854 12.475 12.8748 12.3278 12.9358C12.1807 12.9968 12.023 13.0282 11.8637 13.0282C11.7044 13.0282 11.5467 12.9968 11.3995 12.9358C11.2524 12.8748 11.1187 12.7854 11.0061 12.6727L10.9697 12.6364C10.8269 12.4966 10.6455 12.4029 10.4489 12.3673C10.2523 12.3316 10.0495 12.3557 9.86671 12.4364C9.68745 12.5132 9.53458 12.6408 9.42689 12.8034C9.31921 12.966 9.26142 13.1565 9.26065 13.3515V13.4545C9.26065 13.776 9.13294 14.0843 8.90562 14.3116C8.67831 14.539 8.37 14.6667 8.04853 14.6667C7.72705 14.6667 7.41874 14.539 7.19143 14.3116C6.96411 14.0843 6.8364 13.776 6.8364 13.4545V13.4C6.83171 13.1994 6.76678 13.0048 6.65005 12.8416C6.53331 12.6784 6.37018 12.5541 6.18186 12.4848C5.99906 12.4042 5.79629 12.3801 5.59968 12.4158C5.40308 12.4514 5.22166 12.5451 5.07883 12.6849L5.04246 12.7212C4.92989 12.8339 4.79621 12.9233 4.64906 12.9843C4.50191 13.0453 4.34418 13.0767 4.18489 13.0767C4.0256 13.0767 3.86787 13.0453 3.72072 12.9843C3.57357 12.9233 3.43989 12.8339 3.32731 12.7212C3.21461 12.6086 3.12521 12.475 3.06421 12.3278C3.00321 12.1807 2.97181 12.0229 2.97181 11.8636C2.97181 11.7043 3.00321 11.5466 3.06421 11.3995C3.12521 11.2523 3.21461 11.1186 3.32731 11.0061L3.36368 10.9697C3.5034 10.8269 3.59712 10.6454 3.63277 10.4488C3.66842 10.2522 3.64435 10.0495 3.56368 9.86667C3.48685 9.68741 3.35929 9.53454 3.19669 9.42686C3.03409 9.31917 2.84355 9.26139 2.64853 9.26061H2.5455C2.22402 9.26061 1.91571 9.1329 1.6884 8.90559C1.46108 8.67827 1.33337 8.36996 1.33337 8.04849C1.33337 7.72701 1.46108 7.4187 1.6884 7.19139C1.91571 6.96407 2.22402 6.83637 2.5455 6.83637H2.60004C2.80064 6.83167 2.9952 6.76674 3.1584 6.65001C3.32161 6.53328 3.44593 6.37014 3.51519 6.18182C3.59587 5.99902 3.61993 5.79625 3.58429 5.59965C3.54864 5.40304 3.45491 5.22163 3.31519 5.07879L3.27883 5.04243C3.16613 4.92985 3.07672 4.79617 3.01573 4.64902C2.95473 4.50187 2.92333 4.34414 2.92333 4.18485C2.92333 4.02556 2.95473 3.86783 3.01573 3.72068C3.07672 3.57353 3.16613 3.43985 3.27883 3.32728C3.3914 3.21458 3.52509 3.12517 3.67223 3.06417C3.81938 3.00317 3.97711 2.97178 4.1364 2.97178C4.2957 2.97178 4.45343 3.00317 4.60057 3.06417C4.74772 3.12517 4.88141 3.21458 4.99398 3.32728L5.03034 3.36364C5.17318 3.50336 5.3546 3.59708 5.5512 3.63273C5.7478 3.66838 5.95058 3.64431 6.13337 3.56364H6.18186C6.36111 3.48681 6.51399 3.35925 6.62167 3.19665C6.72935 3.03405 6.78714 2.84351 6.78792 2.64849V2.54546C6.78792 2.22398 6.91562 1.91567 7.14294 1.68836C7.37026 1.46104 7.67857 1.33334 8.00004 1.33334C8.32151 1.33334 8.62982 1.46104 8.85714 1.68836C9.08446 1.91567 9.21216 2.22398 9.21216 2.54546V2.6C9.21294 2.79502 9.27073 2.98556 9.37841 3.14816C9.48609 3.31076 9.63897 3.43833 9.81822 3.51515C10.001 3.59583 10.2038 3.6199 10.4004 3.58425C10.597 3.5486 10.7784 3.45487 10.9213 3.31515L10.9576 3.27879C11.0702 3.16609 11.2039 3.07669 11.351 3.01569C11.4982 2.95469 11.6559 2.92329 11.8152 2.92329C11.9745 2.92329 12.1322 2.95469 12.2794 3.01569C12.4265 3.07669 12.5602 3.16609 12.6728 3.27879C12.7855 3.39136 12.8749 3.52505 12.9359 3.6722C12.9969 3.81935 13.0283 3.97707 13.0283 4.13637C13.0283 4.29566 12.9969 4.45339 12.9359 4.60054C12.8749 4.74769 12.7855 4.88137 12.6728 4.99394L12.6364 5.03031C12.4967 5.17314 12.403 5.35456 12.3673 5.55116C12.3317 5.74776 12.3557 5.95054 12.4364 6.13334V6.18182C12.5132 6.36107 12.6408 6.51395 12.8034 6.62163C12.966 6.72932 13.1565 6.7871 13.3516 6.78788H13.4546C13.7761 6.78788 14.0844 6.91559 14.3117 7.1429C14.539 7.37022 14.6667 7.67853 14.6667 8C14.6667 8.32148 14.539 8.62978 14.3117 8.8571C14.0844 9.08442 13.7761 9.21212 13.4546 9.21212H13.4C13.205 9.2129 13.0145 9.27069 12.8519 9.37837C12.6893 9.48605 12.5617 9.63893 12.4849 9.81818Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { SETTINGS_PATH } from \"./settingsPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { SETTINGS_PATH } from \"./settingsPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function SettingsIcon({ size = 20, color = colors.primary, strokeWidth = 1.5 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={SETTINGS_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Show (eye) icon path — 20×20 viewBox. */\nexport const SHOW_PATH =\n \"M1.66669 10C1.66669 10 4.16669 4.16667 10 4.16667C15.8334 4.16667 18.3334 10 18.3334 10C18.3334 10 15.8334 15.8333 10 15.8333C4.16669 15.8333 1.66669 10 1.66669 10Z\";\n\nexport const SHOW_PUPIL_PATH =\n \"M10 12.5C11.3807 12.5 12.5 11.3807 12.5 10C12.5 8.61929 11.3807 7.5 10 7.5C8.61929 7.5 7.5 8.61929 7.5 10C7.5 11.3807 8.61929 12.5 10 12.5Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { SHOW_PATH, SHOW_PUPIL_PATH } from \"./showPath\";\nimport { colors } from \"../../theme\";\n\nexport { SHOW_PATH, SHOW_PUPIL_PATH } from \"./showPath\";\n\ninterface ShowIconProps {\n size?: number;\n color?: string;\n strokeWidth?: number;\n}\n\n/** Native — react-native-svg (peer dependency). */\nexport function ShowIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: ShowIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={SHOW_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <Path\n d={SHOW_PUPIL_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Sidebar icon path — 20×20 viewBox. */\nexport const SIDEBAR_PATH =\n \"M12.5 2.5V17.5M6.5 2.5H13.5C14.9001 2.5 15.6002 2.5 16.135 2.77248C16.6054 3.01217 16.9878 3.39462 17.2275 3.86502C17.5 4.3998 17.5 5.09987 17.5 6.5V13.5C17.5 14.9001 17.5 15.6002 17.2275 16.135C16.9878 16.6054 16.6054 16.9878 16.135 17.2275C15.6002 17.5 14.9001 17.5 13.5 17.5H6.5C5.09987 17.5 4.3998 17.5 3.86502 17.2275C3.39462 16.9878 3.01217 16.6054 2.77248 16.135C2.5 15.6002 2.5 14.9001 2.5 13.5V6.5C2.5 5.09987 2.5 4.3998 2.77248 3.86502C3.01217 3.39462 3.39462 3.01217 3.86502 2.77248C4.3998 2.5 5.09987 2.5 6.5 2.5Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { SIDEBAR_PATH } from \"./sidebarPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { SIDEBAR_PATH } from \"./sidebarPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function SidebarIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={SIDEBAR_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Bidirectional sort icon path — 12×12 viewBox. */\nexport const SORT_PATH = \"M3.5 2V10M5.5 8L3.5 10L1.5 8M8.5 10V2M10.5 4L8.5 2L6.5 4\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { SORT_PATH } from \"./sortPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { SORT_PATH } from \"./sortPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function SortIcon({ size = 12, color = colors.grey150, strokeWidth = 1.5 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 12 12\" fill=\"none\">\n <Path\n d={SORT_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Star icon path — 28×26 viewBox. */\nexport const STAR_PATH =\n \"M12.6112 2.09824C12.9186 1.47565 13.0722 1.16436 13.2808 1.0649C13.4623 0.978367 13.6732 0.978367 13.8546 1.0649C14.0632 1.16436 14.2169 1.47565 14.5242 2.09824L17.4398 8.00486C17.5305 8.18866 17.5759 8.28056 17.6422 8.35192C17.7009 8.41509 17.7713 8.46628 17.8495 8.50264C17.9378 8.54371 18.0392 8.55854 18.242 8.58818L24.7637 9.54142C25.4505 9.6418 25.7938 9.69199 25.9528 9.85973C26.091 10.0057 26.156 10.2062 26.1297 10.4055C26.0995 10.6346 25.8509 10.8767 25.3537 11.361L20.6363 15.9557C20.4893 16.0989 20.4157 16.1706 20.3683 16.2558C20.3263 16.3312 20.2993 16.4141 20.2889 16.4998C20.2772 16.5966 20.2945 16.6978 20.3292 16.9001L21.4423 23.39C21.5597 24.0745 21.6184 24.4167 21.5081 24.6198C21.4121 24.7965 21.2415 24.9205 21.0438 24.9571C20.8165 24.9992 20.5092 24.8376 19.8945 24.5144L14.0642 21.4483C13.8826 21.3527 13.7917 21.305 13.696 21.2862C13.6113 21.2696 13.5242 21.2696 13.4394 21.2862C13.3437 21.305 13.2529 21.3527 13.0713 21.4483L7.24094 24.5144C6.62626 24.8376 6.31892 24.9992 6.09167 24.9571C5.89395 24.9205 5.72334 24.7965 5.62736 24.6198C5.51704 24.4167 5.57574 24.0745 5.69314 23.39L6.80622 16.9001C6.84092 16.6978 6.85828 16.5966 6.84653 16.4998C6.83614 16.4141 6.80919 16.3312 6.76718 16.2558C6.71974 16.1706 6.64621 16.0989 6.49916 15.9557L1.78179 11.361C1.28459 10.8767 1.03599 10.6346 1.00574 10.4055C0.979423 10.2062 1.04445 10.0057 1.18271 9.85973C1.34162 9.69199 1.685 9.6418 2.37177 9.54142L8.89346 8.58818C9.09627 8.55854 9.19768 8.54371 9.286 8.50264C9.36419 8.46628 9.43459 8.41509 9.49329 8.35192C9.55958 8.28056 9.60495 8.18866 9.69567 8.00486L12.6112 2.09824Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { colors } from \"../../theme\";\nimport { STAR_PATH } from \"./starPath\";\nimport type { IconProps } from \"../types\";\n\nexport interface StarIconProps extends IconProps {\n active?: boolean;\n height?: number;\n}\n\n/** Native — active is solid orange; inactive is a grey outline. */\nexport function StarIcon({\n active = false,\n size = 28,\n height,\n color,\n strokeWidth = 2,\n}: StarIconProps) {\n const resolvedColor = color ?? (active ? \"#E38E5E\" : colors.grey150);\n\n return (\n <Svg width={size} height={height ?? (size * 26) / 28} viewBox=\"0 0 28 26\" fill=\"none\">\n <Path\n d={STAR_PATH}\n fill={active ? resolvedColor : \"none\"}\n stroke={resolvedColor}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\nexport { STAR_PATH } from \"./starPath\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { STAR_PATH } from \"../Star/starPath\";\nimport type { IconProps } from \"../types\";\n\ninterface StarFilledIconProps extends IconProps {\n height?: number;\n}\n\n/** Native — supplied solid orange 28×26 star icon. */\nexport function StarFilledIcon({\n size = 28,\n height,\n color = \"#E38E5E\",\n strokeWidth = 2,\n}: StarFilledIconProps) {\n return (\n <Svg width={size} height={height ?? (size * 26) / 28} viewBox=\"0 0 28 26\" fill={color}>\n <Path\n d={STAR_PATH}\n fill={color}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** User icon path — 20×20 viewBox. */\nexport const USER_PATH =\n \"M15.8334 17.5C15.8334 14.2783 13.2217 11.6667 10 11.6667C6.77836 11.6667 4.16669 14.2783 4.16669 17.5M10 9.16667C8.15907 9.16667 6.66669 7.67428 6.66669 5.83333C6.66669 3.99238 8.15907 2.5 10 2.5C11.841 2.5 13.3334 3.99238 13.3334 5.83333C13.3334 7.67428 11.841 9.16667 10 9.16667Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { USER_PATH } from \"./userPath\";\nimport { colors } from \"../../theme\";\n\nexport { USER_PATH } from \"./userPath\";\n\ninterface UserIconProps {\n size?: number;\n color?: string;\n strokeWidth?: number;\n}\n\n/** Native — react-native-svg (peer dependency). */\nexport function UserIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: UserIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={USER_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const USERS_ALT_PATH =\n \"M14.35 14.2566C14.9725 13.7177 15.4718 13.0513 15.814 12.3024C16.1562 11.5536 16.3333 10.7399 16.3333 9.91659C16.3333 8.36949 15.7187 6.88576 14.6248 5.7918C13.5308 4.69783 12.0471 4.08325 10.5 4.08325C8.95289 4.08325 7.46916 4.69783 6.3752 5.7918C5.28124 6.88576 4.66666 8.36949 4.66666 9.91659C4.66665 10.7399 4.84376 11.5536 5.18597 12.3024C5.52818 13.0513 6.02748 13.7177 6.64999 14.2566C5.01682 14.9961 3.6312 16.1904 2.6588 17.6966C1.6864 19.2027 1.16837 20.9571 1.16666 22.7499C1.16666 23.0593 1.28957 23.3561 1.50837 23.5749C1.72716 23.7937 2.0239 23.9166 2.33332 23.9166C2.64274 23.9166 2.93949 23.7937 3.15828 23.5749C3.37707 23.3561 3.49999 23.0593 3.49999 22.7499C3.49999 20.8934 4.23749 19.1129 5.55024 17.8002C6.863 16.4874 8.64347 15.7499 10.5 15.7499C12.3565 15.7499 14.137 16.4874 15.4497 17.8002C16.7625 19.1129 17.5 20.8934 17.5 22.7499C17.5 23.0593 17.6229 23.3561 17.8417 23.5749C18.0605 23.7937 18.3572 23.9166 18.6667 23.9166C18.9761 23.9166 19.2728 23.7937 19.4916 23.5749C19.7104 23.3561 19.8333 23.0593 19.8333 22.7499C19.8316 20.9571 19.3136 19.2027 18.3412 17.6966C17.3688 16.1904 15.9832 14.9961 14.35 14.2566ZM10.5 13.4166C9.80775 13.4166 9.13107 13.2113 8.55549 12.8267C7.97992 12.4421 7.53132 11.8955 7.26641 11.256C7.0015 10.6164 6.93219 9.9127 7.06724 9.23377C7.20229 8.55484 7.53563 7.9312 8.02512 7.44171C8.5146 6.95223 9.13824 6.61889 9.81717 6.48384C10.4961 6.34879 11.1998 6.4181 11.8394 6.68301C12.4789 6.94791 13.0255 7.39652 13.4101 7.97209C13.7947 8.54766 14 9.22435 14 9.91659C14 10.8448 13.6312 11.7351 12.9749 12.3915C12.3185 13.0478 11.4282 13.4166 10.5 13.4166ZM21.8633 13.7899C22.61 12.9491 23.0977 11.9105 23.2678 10.799C23.4378 9.68748 23.2831 8.55051 22.822 7.52492C22.361 6.49933 21.6134 5.62885 20.6692 5.01825C19.725 4.40764 18.6244 4.08295 17.5 4.08325C17.1906 4.08325 16.8938 4.20617 16.675 4.42496C16.4562 4.64375 16.3333 4.9405 16.3333 5.24992C16.3333 5.55934 16.4562 5.85608 16.675 6.07488C16.8938 6.29367 17.1906 6.41659 17.5 6.41659C18.4282 6.41659 19.3185 6.78533 19.9749 7.44171C20.6312 8.09809 21 8.98833 21 9.91659C20.9983 10.5294 20.8358 11.131 20.5287 11.6612C20.2216 12.1915 19.7807 12.6319 19.25 12.9383C19.077 13.038 18.9325 13.1805 18.8304 13.3521C18.7283 13.5237 18.6719 13.7186 18.6667 13.9183C18.6618 14.1163 18.7074 14.3123 18.7993 14.4879C18.8911 14.6634 19.0262 14.8127 19.1917 14.9216L19.6467 15.2249L19.7983 15.3066C21.2046 15.9736 22.391 17.0286 23.2178 18.3473C24.0446 19.666 24.4773 21.1935 24.465 22.7499C24.465 23.0593 24.5879 23.3561 24.8067 23.5749C25.0255 23.7937 25.3222 23.9166 25.6317 23.9166C25.9411 23.9166 26.2378 23.7937 26.4566 23.5749C26.6754 23.3561 26.7983 23.0593 26.7983 22.7499C26.8079 20.9596 26.3594 19.1965 25.4957 17.6283C24.632 16.0601 23.3816 14.7388 21.8633 13.7899Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\nimport { USERS_ALT_PATH } from \"./usersAltPath\";\n\nexport { USERS_ALT_PATH } from \"./usersAltPath\";\n\nexport function UsersAltIcon({ size = 28, color = colors.white }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 28 28\" fill=\"none\">\n <Path d={USERS_ALT_PATH} fill={color} />\n </Svg>\n );\n}\n","/** Video icon paths — 16×16 viewBox. */\nexport const VIDEO_PATHS = [\n \"M14.6667 5.95424C14.6667 5.55036 14.6667 5.34843 14.5868 5.25492C14.5175 5.17378 14.4136 5.13072 14.3072 5.13909C14.1846 5.14874 14.0418 5.29153 13.7563 5.57712L11.3334 7.99999L13.7563 10.4229C14.0418 10.7085 14.1846 10.8512 14.3072 10.8609C14.4136 10.8693 14.5175 10.8262 14.5868 10.7451C14.6667 10.6516 14.6667 10.4496 14.6667 10.0457V5.95424Z\",\n \"M1.33337 6.53333C1.33337 5.41322 1.33337 4.85317 1.55136 4.42535C1.74311 4.04902 2.04907 3.74306 2.42539 3.55132C2.85322 3.33333 3.41327 3.33333 4.53337 3.33333H8.13337C9.25348 3.33333 9.81353 3.33333 10.2414 3.55132C10.6177 3.74306 10.9236 4.04902 11.1154 4.42535C11.3334 4.85317 11.3334 5.41322 11.3334 6.53333V9.46666C11.3334 10.5868 11.3334 11.1468 11.1154 11.5746C10.9236 11.951 10.6177 12.2569 10.2414 12.4487C9.81353 12.6667 9.25348 12.6667 8.13337 12.6667H4.53337C3.41327 12.6667 2.85322 12.6667 2.42539 12.4487C2.04907 12.2569 1.74311 11.951 1.55136 11.5746C1.33337 11.1468 1.33337 10.5868 1.33337 9.46666V6.53333Z\",\n] as const;\n","import Svg, { Path } from \"react-native-svg\";\nimport { VIDEO_PATHS } from \"./videoPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { VIDEO_PATHS } from \"./videoPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function VideoIcon({ size = 20, color = colors.primary, strokeWidth = 1.5 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n {VIDEO_PATHS.map((path) => (\n <Path\n key={path}\n d={path}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n ))}\n </Svg>\n );\n}\n","import { ArrowRightIcon } from \"./ArrowRight\";\nimport { AppleIcon, GooglePlayIcon } from \"./Store\";\nimport { BagIcon } from \"./Bag\";\nimport { BellIcon } from \"./Bell\";\nimport { BuildingIcon } from \"./Building\";\nimport { CalendarIcon } from \"./Calendar\";\nimport { CalendarOutlineIcon } from \"./CalendarOutline\";\nimport { CameraIcon } from \"./Camera\";\nimport { CheckIcon } from \"./Check\";\nimport { CheckBadgeIcon } from \"./CheckBadge\";\nimport { ChevronDownIcon } from \"./ChevronDown\";\nimport { ChevronLeftIcon } from \"./ChevronLeft\";\nimport { ClockIcon } from \"./Clock\";\nimport { CloseIcon } from \"./Close\";\nimport {\n BathroomsIcon,\n BedroomsIcon,\n CardLocationIcon,\n GuestsIcon,\n RatingStarIcon,\n SaveHeartIcon,\n} from \"./CottageCard\";\nimport {\n AreaExpandIcon,\n CheckSuccessIcon,\n ClockFilledIcon,\n CopyIcon,\n QrCodeIcon,\n ShareIcon,\n TooltipArrowIcon,\n WhatsAppIcon,\n} from \"./CottageDetail\";\nimport { FacebookIcon } from \"./Facebook\";\nimport { FiltersIcon } from \"./Filters\";\nimport { HeartIcon } from \"./Heart\";\nimport { GlobeIcon } from \"./Globe\";\nimport { HelpCircleIcon } from \"./HelpCircle\";\nimport { HomeIcon } from \"./Home\";\nimport { InstagramIcon } from \"./Instagram\";\nimport { KeyIcon } from \"./Key\";\nimport { LayoutGridIcon } from \"./LayoutGrid\";\nimport { LinkedInIcon } from \"./LinkedIn\";\nimport { ListViewIcon } from \"./ListView\";\nimport { LocationPinIcon } from \"./LocationPin\";\nimport { LogOutIcon } from \"./LogOut\";\nimport { MailIcon } from \"./Mail\";\nimport { MapViewIcon } from \"./MapView\";\nimport { MapCollapseIcon, MapExpandIcon } from \"./MapControls\";\nimport { MenuIcon } from \"./Menu\";\nimport { MinusIcon } from \"./Minus\";\nimport { NavigateIcon } from \"./Navigate\";\nimport { PhoneIcon } from \"./Phone\";\nimport { PlusIcon } from \"./Plus\";\nimport { SearchIcon } from \"./Search\";\nimport { SettingsIcon } from \"./Settings\";\nimport { ShowIcon } from \"./Show\";\nimport { SidebarIcon } from \"./Sidebar\";\nimport { SortIcon } from \"./Sort\";\nimport { StarIcon } from \"./Star\";\nimport { StarFilledIcon } from \"./StarFilled\";\nimport { UserIcon } from \"./User\";\nimport { UsersAltIcon } from \"./UsersAlt\";\nimport { VideoIcon } from \"./Video\";\nimport type { IconComponent } from \"./types\";\n\nexport const icons = {\n areaExpand: AreaExpandIcon,\n apple: AppleIcon,\n arrowRight: ArrowRightIcon,\n bag: BagIcon,\n bell: BellIcon,\n building: BuildingIcon,\n calendar: CalendarIcon,\n calendarOutline: CalendarOutlineIcon,\n camera: CameraIcon,\n check: CheckIcon,\n checkBadge: CheckBadgeIcon,\n checkSuccess: CheckSuccessIcon,\n chevronDown: ChevronDownIcon,\n chevronLeft: ChevronLeftIcon,\n clock: ClockIcon,\n close: CloseIcon,\n clockFilled: ClockFilledIcon,\n copy: CopyIcon,\n bathrooms: BathroomsIcon,\n bedrooms: BedroomsIcon,\n cardLocation: CardLocationIcon,\n facebook: FacebookIcon,\n filters: FiltersIcon,\n guests: GuestsIcon,\n heart: HeartIcon,\n globe: GlobeIcon,\n googlePlay: GooglePlayIcon,\n helpCircle: HelpCircleIcon,\n home: HomeIcon,\n instagram: InstagramIcon,\n key: KeyIcon,\n layoutGrid: LayoutGridIcon,\n linkedin: LinkedInIcon,\n listView: ListViewIcon,\n locationPin: LocationPinIcon,\n logOut: LogOutIcon,\n mail: MailIcon,\n mapView: MapViewIcon,\n mapCollapse: MapCollapseIcon,\n mapExpand: MapExpandIcon,\n menu: MenuIcon,\n minus: MinusIcon,\n navigate: NavigateIcon,\n phone: PhoneIcon,\n qrCode: QrCodeIcon,\n ratingStar: RatingStarIcon,\n plus: PlusIcon,\n search: SearchIcon,\n saveHeart: SaveHeartIcon,\n share: ShareIcon,\n settings: SettingsIcon,\n show: ShowIcon,\n sidebar: SidebarIcon,\n sort: SortIcon,\n star: StarIcon,\n starFilled: StarFilledIcon,\n tooltipArrow: TooltipArrowIcon,\n user: UserIcon,\n usersAlt: UsersAltIcon,\n video: VideoIcon,\n whatsApp: WhatsAppIcon,\n} as const satisfies Record<string, IconComponent>;\n\nexport type IconName = keyof typeof icons;\n\nexport const iconNames = Object.keys(icons) as IconName[];\n\nexport const iconGroups = {\n navigation: [\n \"arrowRight\",\n \"chevronDown\",\n \"chevronLeft\",\n \"home\",\n \"listView\",\n \"locationPin\",\n \"mapCollapse\",\n \"mapExpand\",\n \"mapView\",\n \"menu\",\n \"navigate\",\n ],\n actions: [\n \"show\",\n \"bell\",\n \"camera\",\n \"key\",\n \"check\",\n \"checkBadge\",\n \"checkSuccess\",\n \"copy\",\n \"search\",\n \"calendar\",\n \"calendarOutline\",\n \"close\",\n \"ratingStar\",\n \"saveHeart\",\n \"share\",\n \"filters\",\n \"heart\",\n \"star\",\n \"starFilled\",\n \"minus\",\n \"plus\",\n \"sort\",\n ],\n objects: [\n \"bag\",\n \"bathrooms\",\n \"bedrooms\",\n \"building\",\n \"cardLocation\",\n \"clock\",\n \"clockFilled\",\n \"guests\",\n \"qrCode\",\n \"user\",\n \"usersAlt\",\n \"video\",\n \"whatsApp\",\n ],\n communication: [\"mail\", \"phone\"],\n social: [\"apple\", \"facebook\", \"googlePlay\", \"instagram\", \"linkedin\"],\n interface: [\n \"areaExpand\",\n \"globe\",\n \"layoutGrid\",\n \"sidebar\",\n \"settings\",\n \"helpCircle\",\n \"logOut\",\n \"tooltipArrow\",\n ],\n} as const satisfies Record<string, readonly IconName[]>;\n\nexport type IconGroup = keyof typeof iconGroups;\n\nexport const iconGroupNames = Object.keys(iconGroups) as IconGroup[];\n\nexport function getIconsByGroup(group: IconGroup): IconName[] {\n return [...iconGroups[group]];\n}\n","import { icons, type IconName } from \"./registry\";\nimport type { IconProps } from \"./types\";\n\nexport interface IconByNameProps extends IconProps {\n name: IconName;\n}\n\nexport function Icon({ name, ...props }: IconByNameProps) {\n const Component = icons[name];\n return <Component {...props} />;\n}\n","export const amenityNames = [\n \"kitchen\",\n \"wifi\",\n \"tv\",\n \"washer\",\n \"ac\",\n \"bbq\",\n \"forestView\",\n \"pets\",\n] as const;\n\nexport type AmenityName = (typeof amenityNames)[number];\n\nexport interface AmenityPathDefinition {\n d: string;\n fill?: boolean;\n rounded?: boolean;\n strokeWidth?: number;\n}\n\nexport const AMENITY_PATHS: Record<AmenityName, readonly AmenityPathDefinition[]> = {\n kitchen: [\n {\n d: \"M7.5 2.1665C7.58829 2.16659 7.67292 2.20172 7.73535 2.26416C7.79779 2.3266 7.83292 2.41122 7.83301 2.49951V17.4995C7.83301 17.5879 7.79786 17.6733 7.73535 17.7358C7.67293 17.7982 7.58821 17.8334 7.5 17.8335C7.41159 17.8335 7.32618 17.7984 7.26367 17.7358C7.20116 17.6733 7.16602 17.5879 7.16602 17.4995V11.1665H4.16602C4.07773 11.1664 3.9931 11.1313 3.93066 11.0688C3.86823 11.0064 3.83309 10.9218 3.83301 10.8335V5.8335C3.83301 4.86104 4.21959 3.92836 4.90723 3.24072C5.59486 2.55309 6.52754 2.1665 7.5 2.1665ZM6.5 3.00342C5.91495 3.21027 5.40799 3.59338 5.0498 4.1001C4.6916 4.60695 4.49967 5.21284 4.5 5.8335V10.4995H7.16602V2.76807L6.5 3.00342ZM13 9.3501L12.7783 9.20166L10.6533 7.77588L10.6494 7.77393L10.5879 7.72119C10.5694 7.70112 10.5532 7.67894 10.54 7.65479C10.527 7.63071 10.5165 7.60493 10.5098 7.57861L10.5 7.49756V2.49951C10.5001 2.41122 10.5352 2.3266 10.5977 2.26416C10.6602 2.20175 10.7447 2.1665 10.833 2.1665C10.9213 2.1665 11.0059 2.20175 11.0684 2.26416C11.1308 2.3266 11.1659 2.41122 11.166 2.49951V7.31689L11.3877 7.46533L12.2217 8.02393L13 8.54541V2.49951C13.0001 2.41122 13.0352 2.3266 13.0977 2.26416C13.1602 2.20175 13.2447 2.1665 13.333 2.1665C13.4213 2.1665 13.5059 2.20175 13.5684 2.26416C13.6308 2.32659 13.6659 2.41122 13.666 2.49951V8.54541L14.4443 8.02393L15.2783 7.46533L15.5 7.31689V2.49951C15.5001 2.41122 15.5352 2.32659 15.5977 2.26416C15.6602 2.20175 15.7447 2.1665 15.833 2.1665C15.9213 2.1665 16.0059 2.20175 16.0684 2.26416C16.1308 2.32659 16.1659 2.41122 16.166 2.49951V7.49951C16.1654 7.55363 16.1518 7.60718 16.126 7.65479C16.0998 7.70285 16.0623 7.74381 16.0166 7.77393L16.0127 7.77588L13.8877 9.20166L13.666 9.3501V17.4995C13.666 17.5879 13.6309 17.6733 13.5684 17.7358C13.5059 17.7981 13.4213 17.8335 13.333 17.8335C13.2448 17.8335 13.1601 17.7981 13.0977 17.7358C13.0351 17.6733 13 17.5879 13 17.4995V9.3501Z\",\n },\n ],\n wifi: [\n {\n d: \"M9.99967 16.25H10.008M19.005 7.25063C16.6326 5.07666 13.471 3.75 9.99958 3.75C6.52813 3.75 3.36653 5.07666 0.994141 7.25063M3.94295 10.2025C5.55806 8.77971 7.67807 7.91667 9.99966 7.91667C12.3212 7.91667 14.4413 8.77971 16.0564 10.2025M13.0816 13.1459C12.2324 12.4802 11.1623 12.0833 9.99958 12.0833C8.81925 12.0833 7.73445 12.4923 6.87915 13.1763\",\n rounded: true,\n strokeWidth: 2,\n },\n ],\n tv: [\n {\n d: \"M15.0003 14.1667V16.1667C15.0003 16.6334 15.0003 16.8667 14.9095 17.045C14.8296 17.2018 14.7021 17.3293 14.5453 17.4092C14.3671 17.5 14.1337 17.5 13.667 17.5H6.33366C5.86695 17.5 5.63359 17.5 5.45533 17.4092C5.29853 17.3293 5.17105 17.2018 5.09115 17.045C5.00033 16.8667 5.00033 16.6334 5.00033 16.1667V14.1667M5.66699 14.1667H14.3337C15.7338 14.1667 16.4339 14.1667 16.9686 13.8942C17.439 13.6545 17.8215 13.272 18.0612 12.8016C18.3337 12.2669 18.3337 11.5668 18.3337 10.1667V6.5C18.3337 5.09987 18.3337 4.3998 18.0612 3.86502C17.8215 3.39462 17.439 3.01217 16.9686 2.77248C16.4339 2.5 15.7338 2.5 14.3337 2.5H5.66699C4.26686 2.5 3.5668 2.5 3.03202 2.77248C2.56161 3.01217 2.17916 3.39462 1.93948 3.86502C1.66699 4.3998 1.66699 5.09987 1.66699 6.5V10.1667C1.66699 11.5668 1.66699 12.2669 1.93948 12.8016C2.17916 13.272 2.56161 13.6545 3.03202 13.8942C3.5668 14.1667 4.26686 14.1667 5.66699 14.1667Z\",\n rounded: true,\n strokeWidth: 2,\n },\n ],\n washer: [\n {\n d: \"M15.833 1.66699H4.16634C3.7061 1.66699 3.33301 2.04009 3.33301 2.50033V17.5003C3.33301 17.9606 3.7061 18.3337 4.16634 18.3337H15.833C16.2932 18.3337 16.6663 17.9606 16.6663 17.5003V2.50033C16.6663 2.04009 16.2932 1.66699 15.833 1.66699ZM3.33301 5.00033C3.33301 5.46058 3.7061 5.83366 4.16634 5.83366H15.833C16.2933 5.83366 16.6663 5.46058 16.6663 5.00033V2.50033C16.6663 2.04009 16.2933 1.66699 15.833 1.66699H4.16634C3.7061 1.66699 3.33301 2.04009 3.33301 2.50033V5.00033ZM9.99967 15.0003C11.6105 15.0003 12.9163 13.6945 12.9163 12.0837C12.9163 10.4728 11.6105 9.16699 9.99967 9.16699C8.38884 9.16699 7.08301 10.4728 7.08301 12.0837C7.08301 13.6945 8.38884 15.0003 9.99967 15.0003Z\",\n strokeWidth: 1.5,\n },\n {\n d: \"M5.83333 4.58317C6.29357 4.58317 6.66667 4.21007 6.66667 3.74984C6.66667 3.2896 6.29357 2.9165 5.83333 2.9165C5.3731 2.9165 5 3.2896 5 3.74984C5 4.21007 5.3731 4.58317 5.83333 4.58317ZM8.33333 4.58317C8.79357 4.58317 9.16667 4.21007 9.16667 3.74984C9.16667 3.2896 8.79357 2.9165 8.33333 2.9165C7.8731 2.9165 7.5 3.2896 7.5 3.74984C7.5 4.21007 7.8731 4.58317 8.33333 4.58317Z\",\n fill: true,\n },\n ],\n ac: [\n {\n d: \"M17.5003 3.33301H2.50033C2.04009 3.33301 1.66699 3.7061 1.66699 4.16634V10.833C1.66699 11.2932 2.04009 11.6663 2.50033 11.6663H17.5003C17.9606 11.6663 18.3337 11.2932 18.3337 10.833V4.16634C18.3337 3.7061 17.9606 3.33301 17.5003 3.33301ZM15 8.3335H5V11.6668H15V8.3335ZM13.333 5.83301H14.9997M10 14.1665V16.6665M6.66699 15V15.8333M13.333 15V15.8333\",\n rounded: true,\n strokeWidth: 1.5,\n },\n ],\n bbq: [\n {\n d: \"M15.8337 6.6665H4.16699C4.16699 7.99259 4.69378 9.26436 5.63146 10.202C6.56914 11.1397 7.84091 11.6665 9.16699 11.6665H10.8337C12.1279 11.6674 13.372 11.1664 14.3045 10.2689C15.237 9.37143 15.7851 8.14732 15.8337 6.854V6.6665ZM14.1667 16.6668C13.7246 16.6668 13.3007 16.4912 12.9882 16.1787C12.6756 15.8661 12.5 15.4422 12.5 15.0002C12.5 14.5581 12.6756 14.1342 12.9882 13.8217C13.3007 13.5091 13.7246 13.3335 14.1667 13.3335C14.6087 13.3335 15.0326 13.5091 15.3452 13.8217C15.6577 14.1342 15.8333 14.5581 15.8333 15.0002C15.8333 15.4422 15.6577 15.8661 15.3452 16.1787C15.0326 16.4912 14.6087 16.6668 14.1667 16.6668ZM12.5 11.6665L13.3333 13.3332M7.5 11.6665L5 16.6665M12.4997 15H5.83301M12.5 4.16683V3.3335M10 4.16683V3.3335M7.5 4.16683V3.3335\",\n rounded: true,\n strokeWidth: 1.5,\n },\n ],\n forestView: [\n {\n d: \"M13.75 5.3335C12.9544 5.3335 12.1905 5.64979 11.6279 6.2124C11.0656 6.77497 10.75 7.53803 10.75 8.3335V11.6685C10.7518 12.2873 10.9448 12.8903 11.3027 13.395C11.6608 13.8999 12.1665 14.2815 12.75 14.4878L13.416 14.7241V10.8335C13.416 10.7453 13.4514 10.6606 13.5137 10.5981C13.5762 10.5356 13.6616 10.5005 13.75 10.5005C13.8383 10.5006 13.9229 10.5357 13.9854 10.5981C14.0477 10.6606 14.083 10.7452 14.083 10.8335V14.7241L14.75 14.4878C15.3333 14.2815 15.8383 13.8997 16.1963 13.395C16.5543 12.8902 16.7482 12.2873 16.75 11.6685V8.3335C16.75 7.53795 16.4336 6.77499 15.8711 6.2124C15.3086 5.64987 14.5455 5.33358 13.75 5.3335ZM7.8291 2.896C7.08436 2.7482 6.31242 2.82426 5.61133 3.11572C4.91011 3.4073 4.31107 3.90128 3.89062 4.53369C3.52286 5.08695 3.30559 5.72481 3.25879 6.38428L3.25 6.6665V10.0015C3.25275 10.8492 3.53644 11.672 4.05664 12.3413C4.57684 13.0106 5.30421 13.4888 6.125 13.7007L6.75 13.8618V10.8335C6.75 10.7451 6.78518 10.6607 6.84766 10.5981C6.91017 10.5356 6.9946 10.5005 7.08301 10.5005C7.17141 10.5005 7.25585 10.5356 7.31836 10.5981C7.38083 10.6607 7.41602 10.7451 7.41602 10.8335V13.8716L8.04199 13.7095C8.81342 13.5095 9.50314 13.0736 10.0156 12.4634L10.1631 12.2876L10.127 12.062C10.1052 11.9268 10.0903 11.7906 10.083 11.6538V8.33447C10.0841 7.59016 10.3115 6.86331 10.7354 6.25146L10.8564 6.07764L10.8154 5.86963C10.6713 5.14369 10.3167 4.47555 9.79688 3.94873L9.79492 3.94678L9.58691 3.75342C9.08624 3.32147 8.48085 3.02537 7.8291 2.896ZM6.75 14.5024L6.33301 14.4321C5.2853 14.255 4.3338 13.713 3.64746 12.9019C3.00409 12.1414 2.63281 11.1901 2.58789 10.1987L2.58301 9.99951V6.67432C2.59783 5.64591 2.96462 4.65276 3.62207 3.86182C4.2795 3.07106 5.18807 2.52918 6.19629 2.32666C7.20464 2.12413 8.2522 2.27381 9.16406 2.74951C10.0758 3.22524 10.7973 3.9991 11.208 4.94189L11.4355 5.4624L11.9229 5.17041C12.4746 4.84014 13.106 4.66604 13.749 4.6665H13.75C14.7223 4.66659 15.6552 5.05317 16.3428 5.74072C17.0303 6.42833 17.416 7.36114 17.416 8.3335V11.6665C17.4162 12.5117 17.1243 13.3311 16.5898 13.9858C16.0554 14.6406 15.3115 15.0911 14.4834 15.2603L14.083 15.3413V17.5005C14.0829 17.5887 14.0478 17.6734 13.9854 17.7358C13.9229 17.7982 13.8383 17.8334 13.75 17.8335C13.6616 17.8335 13.5762 17.7984 13.5137 17.7358C13.4513 17.6734 13.4161 17.5887 13.416 17.5005V15.3442L13.0186 15.2603C12.534 15.1589 12.0747 14.9608 11.6689 14.6772C11.2632 14.3937 10.919 14.0309 10.6572 13.6108L10.3584 13.1313L9.91895 13.4858C9.31479 13.9737 8.59613 14.2993 7.83105 14.4321L7.41602 14.5044V17.5005C7.4159 17.5887 7.38077 17.6734 7.31836 17.7358C7.25587 17.7982 7.17131 17.8335 7.08301 17.8335C6.99471 17.8335 6.91015 17.7982 6.84766 17.7358C6.78525 17.6734 6.75012 17.5887 6.75 17.5005V14.5024Z\",\n },\n ],\n pets: [\n {\n d: \"M12.2491 11.2498C11.3324 9.58317 11.0482 9.1665 9.99907 9.1665C8.94991 9.1665 8.55241 9.79567 7.63574 11.4557C6.85074 12.8748 5.26407 12.9932 4.86824 14.1982C4.78741 14.419 4.74741 14.7623 4.74907 14.9998C4.74907 15.9798 5.40491 16.6665 6.24907 16.6665C7.29824 16.6665 8.74907 15.8332 9.99907 15.8332C11.2491 15.8332 12.6999 16.6665 13.7491 16.6665C14.5932 16.6665 15.2491 15.9807 15.2491 14.9998C15.2491 14.7623 15.2082 14.419 15.1274 14.1982C14.7316 12.989 13.0341 12.669 12.2491 11.2498ZM16.8232 6.73484C16.7161 6.68958 16.601 6.66634 16.4848 6.6665H16.4723C15.8598 6.6765 15.1723 7.2915 14.8115 8.2215C14.379 9.334 14.5782 10.4715 15.2598 10.7648C15.3673 10.8107 15.4823 10.8332 15.5982 10.8332C16.214 10.8332 16.9107 10.2148 17.274 9.27817C17.704 8.16567 17.5007 7.02817 16.8232 6.73484ZM7.89628 7.50016C7.94211 7.50016 7.98711 7.50016 8.03211 7.491C8.81878 7.38433 9.30961 6.36933 9.13211 5.22266C8.96295 4.14183 8.25961 3.3335 7.52211 3.3335C7.47628 3.3335 7.43128 3.3335 7.38628 3.34266C6.59961 3.44933 6.10878 4.46433 6.28628 5.611C6.45628 6.6885 7.15961 7.50016 7.89711 7.50016H7.89628ZM13.7129 5.611C13.8913 4.46433 13.4004 3.44933 12.6129 3.34266C12.5682 3.33647 12.5231 3.33341 12.4779 3.3335C11.7404 3.3335 11.0379 4.14183 10.8696 5.22267C10.6913 6.36933 11.1821 7.38433 11.9696 7.491C12.0146 7.49683 12.0596 7.50016 12.1046 7.50016C12.8421 7.50016 13.5463 6.6885 13.7129 5.611ZM4.74152 10.7648C5.42152 10.4715 5.61985 9.33234 5.18819 8.2215C4.82485 7.28484 4.12902 6.6665 3.51402 6.6665C3.39735 6.6665 3.28319 6.689 3.17485 6.73484C2.49485 7.02817 2.29652 8.16734 2.72819 9.27817C3.09152 10.2148 3.78735 10.8332 4.40235 10.8332C4.51902 10.8332 4.63319 10.8107 4.74152 10.7648Z\",\n rounded: true,\n strokeWidth: 1.5,\n },\n ],\n};\n","import Svg, { Path } from \"react-native-svg\";\nimport { colors } from \"../../theme\";\nimport { AMENITY_PATHS, type AmenityName } from \"./amenityPaths\";\n\nexport interface AmenityIconProps {\n name: AmenityName;\n size?: number;\n color?: string;\n}\n\nexport function AmenityIcon({ name, size = 20, color = colors.primary }: AmenityIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n {AMENITY_PATHS[name].map((path, index) => (\n <Path\n key={`${name}-${index}`}\n d={path.d}\n fill={path.fill ? color : \"none\"}\n stroke={path.fill ? undefined : color}\n strokeWidth={path.strokeWidth}\n strokeLinecap={path.rounded ? \"round\" : undefined}\n strokeLinejoin={path.rounded ? \"round\" : undefined}\n />\n ))}\n </Svg>\n );\n}\n","import type { ForwardedRef, MutableRefObject, RefCallback } from \"react\";\n\n/**\n * Combines a component's internal ref (used e.g. by `useApplyWebClassName`)\n * with an optional externally-forwarded ref, so consumers can still call\n * `.focus()`/`.measure()` on the underlying native node via `ref`.\n */\nexport function mergeRefs<T>(\n internalRef: MutableRefObject<T | null>,\n forwardedRef: ForwardedRef<T>,\n): RefCallback<T> {\n return (node) => {\n internalRef.current = node;\n if (typeof forwardedRef === \"function\") {\n forwardedRef(node);\n } else if (forwardedRef) {\n forwardedRef.current = node;\n }\n };\n}\n","import { useLayoutEffect } from \"react\";\nimport { Platform } from \"react-native\";\n\ninterface ClassListElement {\n classList: {\n add: (...classes: string[]) => void;\n remove: (...classes: string[]) => void;\n };\n}\n\nfunction hasClassList(node: unknown): node is ClassListElement {\n return (\n typeof node === \"object\" &&\n node !== null &&\n \"classList\" in node &&\n typeof (node as ClassListElement).classList?.add === \"function\"\n );\n}\n\nfunction resolveWebElement(ref: React.RefObject<unknown>): ClassListElement | null {\n const node = ref.current;\n if (!node) return null;\n\n if (hasClassList(node)) return node;\n\n const host = node as {\n _touchableNode?: unknown;\n getScrollableNode?: () => unknown;\n };\n\n if (hasClassList(host._touchableNode)) return host._touchableNode;\n\n if (typeof host.getScrollableNode === \"function\") {\n const scrollNode = host.getScrollableNode();\n if (hasClassList(scrollNode)) return scrollNode;\n }\n\n return null;\n}\n\n/**\n * Applies CSS class names to the underlying DOM node on web.\n * Keeps TouchableOpacity/Text as the render path so default RN styles stay intact.\n *\n * Retries via rAF when the host node is not ready yet — otherwise classes like\n * `h-13` / `w-full` would only land after a later re-render (e.g. typing in a form),\n * which visibly changes button size.\n */\nexport function useApplyWebClassName(\n ref: React.RefObject<unknown>,\n className?: string,\n enabled = true,\n): void {\n useLayoutEffect(() => {\n if (!enabled || Platform.OS !== \"web\" || !className?.trim()) return;\n\n let cancelled = false;\n let rafId = 0;\n let appliedElement: ClassListElement | null = null;\n const classes = className.trim().split(/\\s+/);\n\n const apply = () => {\n if (cancelled) return;\n\n const element = resolveWebElement(ref);\n if (!element) {\n rafId = requestAnimationFrame(apply);\n return;\n }\n\n appliedElement = element;\n element.classList.add(...classes);\n };\n\n apply();\n\n return () => {\n cancelled = true;\n if (rafId) cancelAnimationFrame(rafId);\n appliedElement?.classList.remove(...classes);\n };\n }, [ref, className, enabled]);\n}\n","import { forwardRef, useMemo, useRef, useState, type ComponentRef } from \"react\";\nimport {\n Platform,\n Pressable,\n StyleSheet,\n Text,\n View,\n type PressableProps,\n type StyleProp,\n type TextStyle,\n type ViewStyle,\n} from \"react-native\";\nimport { AmenityIcon, type AmenityName } from \"../../icons/Amenity\";\nimport { colors, fonts } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport type AmenityVariant = \"display\" | \"selectable\";\n\nexport interface AmenityProps extends Omit<\n PressableProps,\n \"children\" | \"disabled\" | \"onPress\" | \"style\"\n> {\n icon: AmenityName;\n label: string;\n variant?: AmenityVariant;\n selected?: boolean;\n defaultSelected?: boolean;\n onSelectedChange?: (selected: boolean) => void;\n disabled?: boolean;\n style?: StyleProp<ViewStyle>;\n labelStyle?: StyleProp<TextStyle>;\n className?: string;\n}\n\nexport const Amenity = forwardRef<ComponentRef<typeof View>, AmenityProps>(function Amenity(\n {\n icon,\n label,\n variant = \"display\",\n selected,\n defaultSelected = false,\n onSelectedChange,\n disabled = false,\n style,\n labelStyle,\n className,\n accessibilityLabel,\n ...rest\n },\n forwardedRef,\n) {\n const rootRef = useRef<ComponentRef<typeof View>>(null);\n const setRootRef = useMemo(() => mergeRefs(rootRef, forwardedRef), [forwardedRef]);\n const isControlled = typeof selected === \"boolean\";\n const [uncontrolledSelected, setUncontrolledSelected] = useState(defaultSelected);\n const isSelected = isControlled ? selected : uncontrolledSelected;\n const isSelectable = variant === \"selectable\";\n const iconColor = isSelectable && isSelected ? colors.primary : colors.white;\n\n useApplyWebClassName(rootRef, className?.trim() || undefined);\n\n const content = (\n <>\n <View style={styles.iconSlot}>\n <AmenityIcon color={iconColor} name={icon} />\n </View>\n <Text\n style={[\n styles.label,\n isSelectable ? styles.selectableLabel : styles.displayLabel,\n Platform.OS === \"android\" ? styles.labelAndroid : null,\n labelStyle,\n ]}\n >\n {label}\n </Text>\n </>\n );\n\n if (!isSelectable) {\n return (\n <View\n {...rest}\n ref={setRootRef}\n accessibilityLabel={accessibilityLabel ?? label}\n accessibilityRole=\"text\"\n style={[styles.base, styles.display, style]}\n >\n {content}\n </View>\n );\n }\n\n const handlePress = () => {\n if (disabled) return;\n const nextSelected = !isSelected;\n if (!isControlled) setUncontrolledSelected(nextSelected);\n onSelectedChange?.(nextSelected);\n };\n\n return (\n <Pressable\n {...rest}\n ref={setRootRef}\n accessibilityLabel={accessibilityLabel ?? label}\n accessibilityRole=\"checkbox\"\n accessibilityState={{ checked: isSelected, disabled }}\n disabled={disabled}\n onPress={handlePress}\n style={[\n styles.base,\n styles.selectable,\n isSelected && styles.selected,\n disabled && styles.disabled,\n style,\n ]}\n >\n {content}\n </Pressable>\n );\n});\n\nconst styles = StyleSheet.create({\n base: {\n height: 44,\n paddingVertical: 12,\n paddingHorizontal: 16,\n flexDirection: \"row\",\n alignItems: \"center\",\n alignSelf: \"flex-start\",\n backgroundColor: colors.grey700,\n },\n display: {\n gap: 8,\n borderRadius: 39,\n backgroundColor: colors.grey750,\n },\n selectable: {\n gap: 12,\n borderWidth: 1,\n borderColor: \"transparent\",\n borderStyle: \"solid\",\n borderRadius: 79,\n },\n selected: {\n borderColor: colors.primary,\n },\n disabled: {\n opacity: 0.6,\n },\n iconSlot: {\n width: 20,\n height: 20,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n label: {\n fontFamily: fonts.sans,\n color: colors.white,\n },\n displayLabel: {\n fontSize: 14,\n fontWeight: \"500\",\n lineHeight: 14,\n letterSpacing: 0,\n },\n selectableLabel: {\n fontSize: 12,\n fontWeight: \"700\",\n lineHeight: 13.44,\n letterSpacing: 0,\n },\n labelAndroid: {\n includeFontPadding: false,\n },\n});\n","import { forwardRef, useMemo, useRef, useState, type ComponentRef, type ReactNode } from \"react\";\nimport {\n Pressable,\n StyleSheet,\n Text,\n View,\n type GestureResponderEvent,\n type PressableProps,\n type StyleProp,\n type TextStyle,\n type ViewStyle,\n} from \"react-native\";\nimport { avatarTypography, colors } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport interface MenuItemProps extends Omit<\n PressableProps,\n \"onPress\" | \"disabled\" | \"style\" | \"children\" | \"hitSlop\"\n> {\n /** Leading icon, e.g. `<CalendarIcon size={16} />` — pass it pre-colored. */\n icon?: ReactNode;\n label: string;\n onPress?: (event: GestureResponderEvent) => void;\n disabled?: boolean;\n /** Row background at rest. Defaults to transparent. */\n backgroundColor?: string;\n /** Row background on hover/press. Defaults to `colors.grey600`. */\n hoverColor?: string;\n style?: StyleProp<ViewStyle>;\n labelStyle?: StyleProp<TextStyle>;\n className?: string;\n hitSlop?: PressableProps[\"hitSlop\"];\n}\n\nconst ITEM_RADIUS = 12;\nconst ICON_SIZE = 16;\n\nexport const MenuItem = forwardRef<ComponentRef<typeof Pressable>, MenuItemProps>(function MenuItem(\n {\n icon,\n label,\n onPress,\n disabled = false,\n backgroundColor,\n hoverColor,\n style,\n labelStyle,\n className,\n accessibilityLabel,\n hitSlop = 4,\n onHoverIn,\n onHoverOut,\n onPressIn,\n onPressOut,\n ...rest\n },\n forwardedRef,\n) {\n const containerRef = useRef<ComponentRef<typeof Pressable>>(null);\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n const [hovered, setHovered] = useState(false);\n\n useApplyWebClassName(containerRef, className);\n\n const resolvedBackground = hovered\n ? (hoverColor ?? colors.grey600)\n : (backgroundColor ?? \"transparent\");\n const resolvedAccessibilityLabel = accessibilityLabel ?? label;\n\n return (\n <Pressable\n {...rest}\n ref={setContainerRef}\n onPress={onPress}\n disabled={disabled}\n hitSlop={hitSlop}\n onHoverIn={(event) => {\n setHovered(true);\n onHoverIn?.(event);\n }}\n onHoverOut={(event) => {\n setHovered(false);\n onHoverOut?.(event);\n }}\n onPressIn={(event) => {\n setHovered(true);\n onPressIn?.(event);\n }}\n onPressOut={(event) => {\n setHovered(false);\n onPressOut?.(event);\n }}\n accessibilityRole=\"menuitem\"\n accessibilityLabel={resolvedAccessibilityLabel}\n accessibilityState={{ disabled }}\n style={[\n styles.root,\n { backgroundColor: resolvedBackground },\n disabled && styles.disabled,\n style,\n ]}\n >\n {icon ? <View style={styles.iconSlot}>{icon}</View> : null}\n <Text style={[styles.label, labelStyle]} numberOfLines={1}>\n {label}\n </Text>\n </Pressable>\n );\n});\n\nconst styles = StyleSheet.create({\n root: {\n minHeight: 40,\n borderRadius: ITEM_RADIUS,\n paddingVertical: 12,\n paddingHorizontal: 12,\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 8,\n alignSelf: \"stretch\",\n },\n disabled: {\n opacity: 0.5,\n },\n iconSlot: {\n width: ICON_SIZE,\n height: ICON_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n label: {\n ...avatarTypography.menuItem,\n color: colors.white,\n flex: 1,\n },\n});\n","import { forwardRef, useMemo, useRef, useState, type ComponentRef } from \"react\";\nimport {\n Platform,\n Pressable,\n StyleSheet,\n type PressableProps,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport { SaveHeartIcon } from \"../../icons\";\nimport { colors } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport interface FavoritesButtonProps extends Omit<\n PressableProps,\n \"onPress\" | \"disabled\" | \"style\" | \"children\" | \"hitSlop\"\n> {\n /** Controlled favorite state. */\n value?: boolean;\n /** Initial state when the button is uncontrolled. */\n defaultValue?: boolean;\n /** Called with the next favorite state when pressed. */\n onValueChange?: (value: boolean) => void;\n disabled?: boolean;\n style?: StyleProp<ViewStyle>;\n className?: string;\n hitSlop?: PressableProps[\"hitSlop\"];\n}\n\nconst ICON_SIZE = 16;\nconst BACKGROUND_COLOR = \"#09090966\";\n\nconst webBlurStyle: ViewStyle =\n Platform.OS === \"web\"\n ? ({\n backdropFilter: \"blur(10px)\",\n WebkitBackdropFilter: \"blur(10px)\",\n } as ViewStyle)\n : {};\n\nexport const FavoritesButton = forwardRef<ComponentRef<typeof Pressable>, FavoritesButtonProps>(\n function FavoritesButton(\n {\n value,\n defaultValue = false,\n onValueChange,\n disabled = false,\n style,\n className,\n accessibilityLabel,\n hitSlop = 8,\n ...rest\n },\n forwardedRef,\n ) {\n const buttonRef = useRef<ComponentRef<typeof Pressable>>(null);\n const isControlled = typeof value === \"boolean\";\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const isActive = isControlled ? value : uncontrolledValue;\n const setButtonRef = useMemo(() => mergeRefs(buttonRef, forwardedRef), [forwardedRef]);\n\n useApplyWebClassName(buttonRef, className?.trim() || undefined);\n\n const handlePress = () => {\n const nextValue = !isActive;\n if (!isControlled) setUncontrolledValue(nextValue);\n onValueChange?.(nextValue);\n };\n\n return (\n <Pressable\n {...rest}\n ref={setButtonRef}\n accessibilityLabel={\n accessibilityLabel ?? (isActive ? \"Remove from favorites\" : \"Add to favorites\")\n }\n accessibilityRole=\"togglebutton\"\n accessibilityState={{ checked: isActive, disabled }}\n disabled={disabled}\n hitSlop={hitSlop}\n onPress={handlePress}\n style={({ pressed }) => [\n styles.button,\n webBlurStyle,\n pressed && styles.pressed,\n disabled && styles.disabled,\n style,\n ]}\n >\n <SaveHeartIcon\n color={isActive ? colors.red : colors.white}\n fillOpacity={isActive ? 1 : 0}\n size={ICON_SIZE}\n strokeWidth={2}\n />\n </Pressable>\n );\n },\n);\n\nconst styles = StyleSheet.create({\n button: {\n padding: 12,\n gap: 10,\n alignItems: \"center\",\n justifyContent: \"center\",\n alignSelf: \"flex-start\",\n borderRadius: 39,\n borderWidth: 1,\n borderColor: colors.whiteAlpha10,\n backgroundColor: BACKGROUND_COLOR,\n },\n pressed: {\n opacity: 0.8,\n },\n disabled: {\n opacity: 0.5,\n },\n});\n","/** Shared Cortel Booking logo geometry. Keep variants color-only. */\nexport const BRAND_LOGO_PATHS = [\n \"M56.7394 7.09708H5.0271V9.56473H56.7394V7.09708Z\",\n \"M56.7394 13.9948V11.5271H5.0271V13.9948H35.0397L31.3321 15.9571H5.0271V18.4248H26.6682L23.663 20.0143L22.9654 20.3871H5.0271V22.8548H21.7653V24.8171H5.0271V27.2799H21.7653V29.2422H5.0271V31.7099H21.7653V33.6723H5.0271V36.1399H21.7653V38.1023H5.0271V40.5699H15.0768V42.5323H5.0271V44.9999H15.0768V46.9623H5.0271V49.4299H15.0768V51.3923H5.0271V53.8599H15.0768V55.8223H5.0271V58.285H56.7394V55.8223H49.9924V53.8599H56.7394V51.3923H49.9924V49.4299H56.7394V46.9623H49.9924V44.9999H56.7394V42.5323H49.9924V40.5699H56.7394V38.1023H48.3678L42.7332 36.7679V36.1399H56.7394V33.6723H42.7332V31.7099H56.7394V29.2422H38.401L37.601 28.8449V27.2799H56.7394V24.8171H37.601V22.8548H56.7394V20.3871H37.601V18.4248H56.7394V15.9571H37.601V13.9948H56.7394ZM25.4486 55.8223H16.9746V40.5699H25.4486V55.8223ZM28.7367 24.4247V55.8223H27.3414V38.1023H23.663V22.1729L27.0292 20.3871L30.7369 18.4248L35.3959 15.9571L35.7081 15.7903V27.9029L34.4641 27.2799L30.6344 25.3715L29.5221 24.8171L28.7367 24.4247ZM44.1235 55.8223H33.864V44.9999H44.1235V55.8223ZM48.0995 39.9959V55.8223H46.0213V42.5323H36.7667V37.3173L40.089 38.1023L40.8354 38.2789L42.7332 38.7253L48.0995 39.9959ZM39.0791 31.7099L40.8354 32.5832V36.3165L40.0792 36.1399L36.7667 35.355L34.869 34.9036V42.5323H31.9711V55.8223H30.6344V27.5007L34.1274 29.2422L35.7081 30.0321L37.601 30.974L39.0791 31.7099Z\",\n \"M9.88812 60.2797C10.3252 60.2797 10.7828 60.2978 11.2609 60.3341C11.739 60.3709 12.224 60.4445 12.7157 60.5539C12.7791 60.9297 12.8294 61.2427 12.866 61.4949C12.9021 61.747 12.9362 61.9756 12.9684 62.1817C13.0001 62.3877 13.0162 62.5089 13.0162 62.5452C13.0255 62.582 12.9977 62.6188 12.9343 62.6556C12.8704 62.6919 12.8021 62.71 12.7294 62.71C12.6655 62.71 12.6108 62.6968 12.5654 62.6688C12.5469 62.5683 12.504 62.4132 12.4357 62.2023C12.3674 61.9913 12.2444 61.7715 12.0669 61.5424C11.8893 61.3138 11.6317 61.1191 11.2951 60.9591C10.958 60.7992 10.5121 60.7187 9.95642 60.7187C9.46466 60.7187 9.01828 60.8311 8.61775 61.0553C8.21674 61.28 7.87329 61.5822 7.58644 61.9624C7.29958 62.3426 7.08102 62.764 6.93076 63.2261C6.78051 63.6883 6.70538 64.1533 6.70538 64.6204C6.70538 65.1419 6.77563 65.655 6.9171 66.1589C7.05858 66.6627 7.27226 67.1185 7.55912 67.5256C7.84597 67.9333 8.20552 68.2581 8.63824 68.5009C9.07048 68.7433 9.57833 68.8649 10.1613 68.8649C10.5711 68.8649 10.9194 68.8007 11.2063 68.6721C11.4932 68.5441 11.7322 68.393 11.9234 68.2188C12.1874 67.9809 12.3786 67.7155 12.4971 67.4221C12.6157 67.1288 12.6977 66.8727 12.743 66.6529C12.8977 66.6347 13.0387 66.6715 13.1665 66.7633C13.1665 66.8275 13.1504 66.9556 13.1187 67.1479C13.0865 67.3402 13.0479 67.5482 13.0026 67.7724C12.9567 67.9971 12.9069 68.1958 12.8523 68.3699C12.7977 68.5441 12.7474 68.654 12.702 68.6996C12.3376 68.9012 11.9234 69.0528 11.459 69.1534C10.9946 69.254 10.4531 69.3045 9.83348 69.3045C9.17781 69.3045 8.57677 69.1878 8.03038 68.9542C7.48399 68.7202 7.01272 68.4004 6.61659 67.9927C6.22045 67.5855 5.91506 67.1185 5.70138 66.5916C5.48721 66.0652 5.38037 65.5044 5.38037 64.9088C5.38037 64.277 5.49209 63.6843 5.71504 63.13C5.93799 62.5761 6.24972 62.0836 6.65074 61.6533C7.05126 61.2226 7.52692 60.8865 8.07819 60.6432C8.62897 60.4008 9.23245 60.2797 9.88812 60.2797Z\",\n \"M18.972 60.2797C19.5638 60.2797 20.1214 60.3896 20.6454 60.6093C21.1688 60.8286 21.6313 61.1426 22.0318 61.5503C22.4324 61.9575 22.749 62.4387 22.9812 62.9921C23.2134 63.5465 23.3295 64.1578 23.3295 64.8259C23.3295 65.4578 23.2134 66.046 22.9812 66.5911C22.749 67.1361 22.4324 67.6169 22.0318 68.0334C21.6313 68.4499 21.1688 68.7752 20.6454 69.0087C20.1214 69.2422 19.5638 69.359 18.972 69.359C18.389 69.359 17.8358 69.2486 17.3124 69.0293C16.7884 68.8095 16.3288 68.4955 15.9327 68.0883C15.5366 67.6807 15.2244 67.1999 14.997 66.646C14.7692 66.0921 14.6555 65.4853 14.6555 64.8259C14.6555 64.1941 14.7692 63.6034 14.997 63.0539C15.2244 62.5045 15.5366 62.0217 15.9327 61.6047C16.3288 61.1882 16.7884 60.863 17.3124 60.6299C17.8358 60.3959 18.389 60.2797 18.972 60.2797ZM18.7808 60.733C18.2798 60.733 17.8519 60.8453 17.4968 61.0695C17.1416 61.2942 16.8523 61.5895 16.6294 61.956C16.4059 62.322 16.242 62.7297 16.1376 63.1781C16.0327 63.6269 15.9805 64.0758 15.9805 64.5242C15.9805 65.0462 16.0513 65.5662 16.1923 66.0833C16.3332 66.6014 16.5406 67.0728 16.8138 67.4987C17.087 67.924 17.4216 68.2654 17.8178 68.522C18.2139 68.7786 18.6715 68.9066 19.1906 68.9066C19.6911 68.9066 20.1195 68.7943 20.4746 68.5696C20.8298 68.3454 21.121 68.0457 21.3488 67.6699C21.5762 67.2946 21.7425 66.88 21.8474 66.4267C21.9518 65.9734 22.0045 65.5226 22.0045 65.0737C22.0045 64.5522 21.9338 64.0346 21.7928 63.5215C21.6513 63.0088 21.442 62.5418 21.1644 62.1208C20.8864 61.6999 20.5497 61.3629 20.1536 61.1107C19.7575 60.859 19.2999 60.733 18.7808 60.733Z\",\n \"M28.3153 60.3758C28.6158 60.3758 28.9251 60.4269 29.2441 60.5274C29.5627 60.628 29.8564 60.7747 30.1252 60.967C30.3935 61.1598 30.6101 61.3997 30.774 61.6882C30.9379 61.9771 31.0199 62.3132 31.0199 62.6983C31.0199 63.0186 30.9311 63.3301 30.7535 63.6319C30.576 63.9341 30.3481 64.2 30.0705 64.4286C29.793 64.6577 29.5037 64.823 29.2031 64.9236C29.4397 65.3175 29.6676 65.6791 29.8861 66.0088C30.1047 66.3384 30.3325 66.6661 30.5691 66.9909C30.8057 67.3162 31.0697 67.6758 31.3614 68.0692C31.5526 68.3253 31.76 68.5176 31.9829 68.6462C32.2059 68.7747 32.4996 68.8522 32.8645 68.8797C32.9006 68.9165 32.9093 68.9852 32.8913 69.0857C32.8732 69.1868 32.8601 69.2457 32.8503 69.2643C32.4044 69.2643 32.0332 69.2481 31.7375 69.2162C31.4414 69.1843 31.2253 69.1451 31.0882 69.0995C30.997 69.0632 30.8696 69.0058 30.7057 68.9277C30.5418 68.8497 30.3823 68.7104 30.2276 68.5088C30.173 68.4357 30.0725 68.2939 29.9271 68.083C29.7812 67.8725 29.6081 67.6159 29.408 67.3142C29.2075 67.012 28.9934 66.6892 28.766 66.3453C28.5382 66.0019 28.3196 65.6653 28.1104 65.3357C28.0377 65.2253 27.9006 65.1708 27.7006 65.1708H27.0039V67.8357C27.0039 68.0094 27.0059 68.1678 27.0107 68.3096C27.0151 68.4519 27.0312 68.5686 27.0585 68.6599C27.0766 68.706 27.1498 68.7472 27.2771 68.7835C27.4044 68.8203 27.5415 68.8458 27.6869 68.8591C27.8323 68.8728 27.9328 68.8797 27.9874 68.8797C28.0147 68.9165 28.0303 68.9807 28.0352 69.0725C28.0396 69.1642 28.024 69.2275 27.9874 69.2648C27.7142 69.2461 27.4522 69.2304 27.202 69.2167C26.9512 69.203 26.6941 69.1961 26.4302 69.1961C26.175 69.1961 25.9155 69.203 25.6516 69.2167C25.3872 69.23 25.1188 69.2461 24.8456 69.2648C24.8091 69.228 24.7935 69.1642 24.7978 69.0725C24.8022 68.9807 24.8183 68.917 24.8456 68.8797C24.9003 68.8797 25.0003 68.8728 25.1462 68.8591C25.2915 68.8458 25.4306 68.8203 25.5628 68.7835C25.6945 68.7472 25.7652 68.706 25.7745 68.6599C25.8106 68.55 25.8311 68.4082 25.836 68.2346C25.8404 68.0609 25.8428 67.873 25.8428 67.6714L25.8292 61.9433C25.8292 61.7421 25.8267 61.5518 25.8223 61.3732C25.8179 61.1946 25.7974 61.0504 25.7609 60.9405C25.7516 60.8855 25.6809 60.8443 25.5491 60.8169C25.4169 60.7889 25.2803 60.7683 25.1393 60.7551C24.9979 60.7413 24.9003 60.7344 24.8456 60.7344C24.8183 60.6981 24.8022 60.6339 24.7978 60.5416C24.7935 60.4499 24.8091 60.3861 24.8456 60.3493C25.1188 60.3587 25.3852 60.3699 25.6448 60.3837C25.9043 60.3969 26.1614 60.4043 26.4165 60.4043C26.6805 60.4043 26.9649 60.3994 27.2703 60.3905C27.5752 60.3812 27.9235 60.3768 28.3153 60.3768V60.3758ZM29.7764 62.8209C29.7764 62.2352 29.6193 61.7539 29.3051 61.3786C28.9909 61.0033 28.465 60.8159 27.7274 60.8159C27.6454 60.8159 27.5201 60.8208 27.3517 60.8291C27.1829 60.8389 27.0854 60.8752 27.0581 60.9395C27.0215 61.0219 27.001 61.1613 26.9966 61.3585C26.9917 61.5557 26.9898 61.7549 26.9898 61.9565L27.0034 64.7587H27.7137C28.0596 64.7587 28.3899 64.6783 28.7041 64.5183C29.0182 64.3584 29.2753 64.1337 29.4758 63.8453C29.6759 63.5568 29.7764 63.2158 29.7764 62.8219V62.8209Z\",\n \"M39.5706 60.3484C39.6804 60.3484 39.8213 60.3253 39.994 60.2797C40.1667 60.2336 40.2946 60.1924 40.3765 60.1556C40.4492 60.1193 40.4995 60.1011 40.5268 60.1011C40.5546 60.1011 40.5858 60.1105 40.6224 60.1286C40.6678 60.5407 40.72 60.9391 40.7795 61.3242C40.8385 61.7083 40.9044 62.0797 40.9776 62.4368C40.959 62.4555 40.9268 62.478 40.8819 62.5055C40.8361 62.5335 40.7814 62.5423 40.718 62.5335C40.6175 62.5335 40.5541 62.5104 40.5263 62.4643C40.4351 61.9977 40.2853 61.6082 40.0755 61.2967C39.8657 60.9857 39.593 60.8297 39.2559 60.8297H37.5621V67.6704C37.5621 67.872 37.5641 68.0599 37.5689 68.2336C37.5733 68.4073 37.5938 68.5495 37.6304 68.6589C37.6485 68.7051 37.7216 68.7463 37.849 68.7826C37.9763 68.8194 38.1105 68.8449 38.2514 68.8581C38.3929 68.8719 38.4905 68.8787 38.5456 68.8787C38.5729 68.9155 38.5885 68.9798 38.5934 69.0715C38.5983 69.1633 38.5822 69.2266 38.5456 69.2638C38.2719 69.2452 38.0104 69.2295 37.7602 69.2158C37.5094 69.202 37.2523 69.1952 36.9884 69.1952C36.7337 69.1952 36.4737 69.202 36.2098 69.2158C35.9454 69.229 35.677 69.2452 35.4039 69.2638C35.3678 69.227 35.3517 69.1633 35.356 69.0715C35.3604 68.9798 35.3765 68.916 35.4039 68.8787C35.4585 68.8787 35.5585 68.8719 35.7044 68.8581C35.8502 68.8449 35.9888 68.8194 36.121 68.7826C36.2527 68.7463 36.3235 68.7051 36.3327 68.6589C36.3688 68.5491 36.3893 68.4073 36.3942 68.2336C36.3986 68.0599 36.401 67.872 36.401 67.6704V60.8297H34.6804C34.3433 60.8297 34.0701 60.9857 33.8603 61.2967C33.6505 61.6082 33.4964 61.9977 33.3963 62.4643C33.3685 62.5104 33.3046 62.5335 33.2046 62.5335C33.1407 62.5428 33.0885 62.5335 33.0475 62.5055C33.0065 62.478 32.9768 62.4555 32.9587 62.4368C33.0314 62.0797 33.0953 61.7088 33.15 61.3242C33.2046 60.9396 33.2549 60.5407 33.3007 60.1286C33.3461 60.1105 33.4007 60.108 33.4646 60.1217C33.5281 60.135 33.5783 60.1517 33.6149 60.1698C33.6969 60.2066 33.813 60.2454 33.9632 60.2866C34.114 60.3278 34.2433 60.3484 34.353 60.3484H39.5706Z\",\n \"M43.6005 60.4034C44.2284 60.4034 44.9206 60.3896 45.6768 60.3622C46.4325 60.3342 47.1701 60.321 47.8897 60.321C47.935 60.6595 47.9941 60.971 48.0668 61.2545C48.1395 61.5386 48.2078 61.8315 48.2717 62.1337C48.2258 62.1798 48.1487 62.2028 48.0394 62.2028C47.9209 62.2028 47.857 62.171 47.8482 62.1067C47.7023 61.5661 47.497 61.2227 47.233 61.0765C46.9691 60.9298 46.6593 60.8567 46.3046 60.8567H45.1567C45.1021 60.8567 45.0021 60.8591 44.8562 60.8635C44.7103 60.8685 44.5742 60.8797 44.4464 60.8979C44.3186 60.916 44.2464 60.9484 44.2279 60.9935C44.2005 61.0858 44.1844 61.2045 44.1801 61.3512C44.1752 61.4979 44.1732 61.6485 44.1732 61.8045V64.4556C44.1732 64.4919 44.2323 64.515 44.3503 64.5243C44.4689 64.5336 44.6011 64.538 44.7465 64.538H45.4431C45.7617 64.538 46.01 64.5287 46.1876 64.5106C46.3651 64.4919 46.4949 64.4507 46.5769 64.3865C46.6588 64.3227 46.7227 64.2265 46.7681 64.098C46.814 63.9699 46.8637 63.7963 46.9189 63.5765C46.9281 63.5122 46.9915 63.4803 47.1101 63.4803C47.2199 63.4803 47.2969 63.5034 47.3428 63.549V66.0765C47.3062 66.1133 47.233 66.1315 47.1242 66.1315C47.0154 66.1315 46.9467 66.0996 46.9193 66.0353C46.8554 65.7792 46.8032 65.5938 46.7623 65.479C46.7213 65.3642 46.6847 65.2862 46.653 65.245C46.6213 65.2038 46.5817 65.1699 46.5369 65.142C46.491 65.1057 46.3866 65.0801 46.2227 65.0669C46.0583 65.0532 45.8788 65.0438 45.6831 65.0389C45.4875 65.0345 45.3031 65.0321 45.1299 65.0321C45.0114 65.0321 44.8767 65.0345 44.7269 65.0389C44.5767 65.0438 44.4469 65.0527 44.3376 65.0669C44.2279 65.0801 44.1737 65.1106 44.1737 65.1562V67.7936C44.1737 67.9221 44.1757 68.087 44.1805 68.2881C44.1849 68.4897 44.2054 68.6045 44.242 68.6315C44.3332 68.6958 44.4445 68.7345 44.5772 68.7483C44.7089 68.7615 44.9157 68.7689 45.1982 68.7689H45.8402C46.1588 68.7689 46.473 68.737 46.7827 68.6727C47.0925 68.6089 47.3384 68.5172 47.5204 68.398C47.7301 68.2695 47.8941 68.084 48.0126 67.8412C48.1307 67.5988 48.2448 67.3359 48.3536 67.0518C48.3717 66.9969 48.4356 66.9694 48.5453 66.9694C48.7093 66.9694 48.8185 66.9969 48.8732 67.0518C48.7454 67.4183 48.6068 67.8073 48.4566 68.2194C48.3063 68.6315 48.2082 68.9842 48.1629 69.2771C47.4433 69.2771 46.7286 69.2673 46.0183 69.2492C45.3085 69.231 44.5064 69.2217 43.6141 69.2217C43.3044 69.2217 43.0268 69.2286 42.7809 69.2423C42.535 69.256 42.2804 69.2629 42.0164 69.2629C41.9798 69.2261 41.9637 69.1623 41.9681 69.0706C41.9725 68.9788 41.9886 68.9151 42.0164 68.8778C42.0706 68.8778 42.1706 68.8709 42.3165 68.8572C42.4623 68.8439 42.6014 68.8184 42.7331 68.7816C42.8653 68.7453 42.9355 68.7041 42.9448 68.658C42.9809 68.5481 43.0014 68.4063 43.0063 68.2327C43.0112 68.059 43.0136 67.8711 43.0136 67.6695V61.9414C43.0136 61.7402 43.0112 61.5499 43.0063 61.3713C43.0014 61.1927 42.9809 61.0485 42.9448 60.9386C42.9355 60.8837 42.8653 60.8424 42.7331 60.815C42.6009 60.787 42.4618 60.7664 42.3165 60.7532C42.1706 60.7394 42.0706 60.7326 42.0164 60.7326C41.9886 60.6963 41.973 60.632 41.9681 60.5398C41.9633 60.448 41.9794 60.3842 42.0164 60.3474C42.2896 60.3568 42.5579 60.3681 42.8219 60.3818C43.0858 60.395 43.3453 60.4024 43.601 60.4024L43.6005 60.4034Z\",\n \"M52.2741 67.6699V68.0751C52.2741 68.2081 52.2784 68.3292 52.2872 68.4391C52.2965 68.549 52.315 68.6128 52.3419 68.6314C52.4331 68.6957 52.5443 68.7345 52.677 68.7482C52.8087 68.7614 53.0156 68.7688 53.2981 68.7688H54.0493C54.304 68.7688 54.5845 68.7389 54.8894 68.679C55.1948 68.6197 55.4383 68.526 55.6202 68.3979C55.7841 68.2787 55.9364 68.1139 56.0778 67.9029C56.2188 67.6925 56.3442 67.4084 56.4535 67.0518C56.4715 66.9968 56.5354 66.9693 56.6452 66.9693C56.8091 66.9693 56.9184 66.9968 56.973 67.0518C56.8452 67.4182 56.7067 67.8073 56.5564 68.2193C56.4062 68.6314 56.3081 68.9842 56.2627 69.2771C55.5431 69.2771 54.8284 69.2672 54.1181 69.2491C53.4083 69.2309 52.6063 69.2216 51.714 69.2216C51.4042 69.2216 51.1266 69.2285 50.8808 69.2422C50.6349 69.256 50.3802 69.2628 50.1163 69.2628C50.0797 69.226 50.0636 69.1623 50.068 69.0705C50.0724 68.9788 50.0885 68.915 50.1163 68.8777C50.1704 68.8777 50.2704 68.8709 50.4163 68.8571C50.5622 68.8439 50.7012 68.8184 50.8329 68.7816C50.9651 68.7453 51.0354 68.7041 51.0447 68.6579C51.0808 68.548 51.1013 68.4063 51.1061 68.2326C51.111 68.0589 51.1135 67.871 51.1135 67.6694V61.9413C51.1135 61.7402 51.111 61.5498 51.1061 61.3712C51.1013 61.1927 51.0808 61.0484 51.0447 60.9385C51.0354 60.8836 50.9651 60.8424 50.8329 60.8149C50.7007 60.7869 50.5617 60.7663 50.4163 60.7531C50.2704 60.7394 50.1704 60.7325 50.1163 60.7325C50.0885 60.6962 50.0729 60.6319 50.068 60.5397C50.0631 60.448 50.0792 60.3842 50.1163 60.3474C50.3895 60.3567 50.6578 60.368 50.9217 60.3817C51.1857 60.395 51.4452 60.4023 51.7008 60.4023C51.9648 60.4023 52.2219 60.395 52.4721 60.3817C52.7229 60.368 52.9849 60.3562 53.2576 60.3474C53.2937 60.3837 53.3098 60.448 53.3054 60.5397C53.301 60.6319 53.2849 60.6957 53.2576 60.7325C53.2029 60.7325 53.1029 60.7394 52.957 60.7531C52.8112 60.7663 52.6751 60.7869 52.5473 60.8149C52.4194 60.8424 52.3472 60.8836 52.3287 60.9385C52.3014 61.0303 52.2853 61.1495 52.2809 61.2957C52.276 61.4424 52.2741 61.6028 52.2741 61.7765V67.6699Z\",\n \"M11.3828 72.8068C11.5867 72.8068 11.7965 72.8303 12.0131 72.8769C12.2292 72.924 12.4268 72.9981 12.6063 73.1006C12.7854 73.2032 12.9307 73.3415 13.042 73.5157C13.1532 73.6898 13.2088 73.9072 13.2088 74.1682C13.2088 74.3982 13.1547 74.6063 13.0464 74.7922C12.9381 74.9791 12.8117 75.1312 12.6663 75.2494C12.521 75.3672 12.3961 75.4481 12.2907 75.4918C12.2721 75.504 12.2721 75.5168 12.2907 75.5286C12.4019 75.5354 12.5317 75.5722 12.68 75.6409C12.8283 75.7096 12.9751 75.8072 13.1205 75.9348C13.2654 76.0623 13.3849 76.2159 13.4771 76.3959C13.5693 76.576 13.6162 76.7781 13.6162 77.0018C13.6162 77.2623 13.5713 77.5046 13.4815 77.7284C13.3918 77.9521 13.2361 78.1571 13.0137 78.3436C12.7976 78.5241 12.5131 78.6497 12.1609 78.7213C11.8087 78.7929 11.4594 78.8317 11.1135 78.8376H9.02793C9.00305 78.8125 8.99232 78.7694 8.99574 78.7071C8.99915 78.6448 9.0094 78.6016 9.02793 78.5766C9.06501 78.5766 9.13282 78.5717 9.23186 78.5624C9.33089 78.553 9.42504 78.5359 9.51481 78.5113C9.60457 78.4868 9.65238 78.4588 9.65824 78.4274C9.68312 78.3534 9.69678 78.2567 9.69971 78.1385C9.70263 78.0207 9.70458 77.8932 9.70458 77.7563V73.8694C9.70458 73.733 9.70312 73.604 9.69971 73.4828C9.69629 73.3616 9.68263 73.264 9.65824 73.1889C9.6519 73.1517 9.60409 73.1237 9.51481 73.1051C9.42553 73.0864 9.33089 73.0727 9.23186 73.0629C9.13282 73.0535 9.06501 73.0491 9.02793 73.0491C9.0094 73.0246 8.99866 72.9809 8.99574 72.9186C8.99281 72.8563 9.00354 72.8127 9.02793 72.7876C9.21332 72.794 9.39529 72.8019 9.57481 72.8112C9.75386 72.821 9.92997 72.8249 10.1032 72.8249C10.2822 72.8249 10.4739 72.822 10.6778 72.8156C10.8818 72.8092 11.1164 72.8058 11.3823 72.8058L11.3828 72.8068ZM10.493 75.4447H11.2438C11.5155 75.4447 11.735 75.3922 11.9019 75.2867C12.0687 75.1807 12.1907 75.0458 12.2678 74.881C12.3448 74.7166 12.3834 74.5469 12.3834 74.3732C12.3834 73.9695 12.2551 73.657 11.9985 73.4367C11.7423 73.2159 11.4038 73.1055 10.9837 73.1055C10.9281 73.1055 10.8427 73.109 10.7286 73.1149C10.6144 73.1212 10.5481 73.1458 10.5295 73.1894C10.511 73.2395 10.4998 73.317 10.4973 73.4225C10.4939 73.5284 10.4925 73.6403 10.4925 73.7585V75.4452L10.493 75.4447ZM10.493 75.7896V77.7656C10.493 77.8093 10.4944 77.876 10.4978 77.9658C10.5008 78.0561 10.5086 78.1414 10.5208 78.2219C10.533 78.3028 10.5486 78.3553 10.5671 78.3803C10.6349 78.4549 10.7291 78.5015 10.8496 78.5202C10.9701 78.5388 11.114 78.5481 11.2808 78.5481C11.5091 78.5481 11.7336 78.5143 11.9526 78.4456C12.1716 78.3774 12.3561 78.2454 12.5039 78.0492C12.6522 77.8539 12.7263 77.5723 12.7263 77.2059C12.7263 76.9758 12.6829 76.7536 12.5966 76.5392C12.5102 76.3248 12.3448 76.1462 12.1004 76.0034C11.856 75.8607 11.5028 75.7886 11.0393 75.7886H10.4925L10.493 75.7896Z\",\n \"M17.9083 72.7416C18.3098 72.7416 18.6884 72.8162 19.044 72.9653C19.3992 73.1145 19.7129 73.3274 19.9846 73.6041C20.2563 73.8803 20.4715 74.207 20.6291 74.5828C20.7866 74.9591 20.8652 75.3731 20.8652 75.8269C20.8652 76.2557 20.7861 76.6551 20.6291 77.0245C20.4715 77.3944 20.2563 77.7206 19.9846 78.0032C19.7124 78.2858 19.3992 78.5065 19.044 78.665C18.6884 78.8235 18.3103 78.9029 17.9083 78.9029C17.5127 78.9029 17.1375 78.8284 16.7819 78.6792C16.4262 78.5296 16.1145 78.3172 15.8457 78.0405C15.5769 77.7638 15.3651 77.4375 15.211 77.0618C15.0563 76.6855 14.9792 76.2744 14.9792 75.8264C14.9792 75.3977 15.0563 74.9969 15.211 74.624C15.3651 74.2512 15.5769 73.9235 15.8457 73.6409C16.1145 73.3583 16.4262 73.1375 16.7819 72.9786C17.1375 72.8206 17.5127 72.7416 17.9083 72.7416ZM17.7781 73.0492C17.438 73.0492 17.1477 73.1253 16.9067 73.2778C16.6658 73.4304 16.4696 73.6306 16.3184 73.8793C16.1667 74.128 16.0554 74.4042 15.9847 74.7084C15.9135 75.0131 15.8779 75.3177 15.8779 75.6219C15.8779 75.9761 15.9257 76.3288 16.0213 76.6796C16.1169 77.0308 16.2579 77.3507 16.4433 77.6397C16.6287 77.9286 16.8555 78.1607 17.1243 78.3343C17.3931 78.508 17.7039 78.5953 18.0561 78.5953C18.3957 78.5953 18.6864 78.5193 18.9274 78.3667C19.1684 78.2141 19.366 78.0106 19.5207 77.7559C19.6748 77.5013 19.7875 77.2202 19.8587 76.9126C19.93 76.605 19.9651 76.2989 19.9651 75.9942C19.9651 75.64 19.9173 75.2888 19.8217 74.9414C19.726 74.5941 19.5836 74.2767 19.3953 73.9907C19.207 73.7052 18.9782 73.4765 18.7094 73.3058C18.4406 73.1351 18.1298 73.0497 17.7776 73.0497L17.7781 73.0492Z\",\n \"M25.194 72.7416C25.5955 72.7416 25.974 72.8162 26.3297 72.9653C26.6848 73.1145 26.9985 73.3274 27.2703 73.6041C27.542 73.8803 27.7571 74.207 27.9147 74.5828C28.0723 74.9591 28.1508 75.3731 28.1508 75.8269C28.1508 76.2557 28.0718 76.6551 27.9147 77.0245C27.7571 77.3944 27.542 77.7206 27.2703 78.0032C26.998 78.2858 26.6848 78.5065 26.3297 78.665C25.974 78.8235 25.5959 78.9029 25.194 78.9029C24.7983 78.9029 24.4231 78.8284 24.0675 78.6792C23.7119 78.5296 23.4001 78.3172 23.1313 78.0405C22.8625 77.7638 22.6508 77.4375 22.4966 77.0618C22.342 76.6855 22.2649 76.2744 22.2649 75.8264C22.2649 75.3977 22.342 74.9969 22.4966 74.624C22.6508 74.2512 22.8625 73.9235 23.1313 73.6409C23.4001 73.3583 23.7119 73.1375 24.0675 72.9786C24.4231 72.8206 24.7983 72.7416 25.194 72.7416ZM25.0642 73.0492C24.7242 73.0492 24.4339 73.1253 24.1929 73.2778C23.9519 73.4304 23.7558 73.6306 23.6045 73.8793C23.4528 74.128 23.3416 74.4042 23.2708 74.7084C23.1996 75.0131 23.164 75.3177 23.164 75.6219C23.164 75.9761 23.2118 76.3288 23.3074 76.6796C23.4031 77.0308 23.544 77.3507 23.7294 77.6397C23.9148 77.9286 24.1417 78.1607 24.4105 78.3343C24.6793 78.508 24.99 78.5953 25.3423 78.5953C25.6818 78.5953 25.9726 78.5193 26.2136 78.3667C26.4546 78.2141 26.6521 78.0106 26.8068 77.7559C26.961 77.5013 27.0736 77.2202 27.1449 76.9126C27.2161 76.605 27.2512 76.2989 27.2512 75.9942C27.2512 75.64 27.2034 75.2888 27.1078 74.9414C27.0122 74.5941 26.8697 74.2767 26.6814 73.9907C26.4931 73.7052 26.2643 73.4765 25.9955 73.3058C25.7267 73.1351 25.4159 73.0497 25.0637 73.0497L25.0642 73.0492Z\",\n \"M30.5885 72.8255C30.7676 72.8255 30.9422 72.8211 31.112 72.8118C31.2822 72.8024 31.4598 72.7946 31.6447 72.7882C31.6696 72.8132 31.6803 72.8613 31.6769 72.9329C31.674 73.0046 31.6632 73.0526 31.6447 73.0777C31.6076 73.0777 31.5398 73.0821 31.4413 73.0914C31.3422 73.1007 31.2495 73.1145 31.1632 73.1331C31.0768 73.1517 31.0276 73.1802 31.0149 73.217C30.9964 73.2793 30.9851 73.3602 30.9827 73.4593C30.9793 73.5589 30.9778 73.6678 30.9778 73.7856V75.7057C31.0456 75.6626 31.1354 75.5909 31.2466 75.4914C31.3579 75.3918 31.4798 75.2784 31.6125 75.1514C31.7452 75.0238 31.8735 74.9012 31.9974 74.7829C32.2316 74.547 32.4155 74.362 32.5487 74.2281C32.6814 74.0951 32.7912 73.9779 32.878 73.8788C32.9643 73.7792 33.0541 73.6703 33.1468 73.5526C33.1775 73.5153 33.2073 73.4687 33.2351 73.4127C33.2629 73.3568 33.2766 73.3073 33.2766 73.2636C33.2766 73.1949 33.2444 73.1468 33.1795 73.1189C33.1146 73.0909 33.0439 73.0757 32.9663 73.0723C32.8887 73.0688 32.8321 73.0674 32.7946 73.0674H32.7663C32.7541 73.0365 32.7477 72.9928 32.7477 72.9369C32.7477 72.8809 32.7541 72.8309 32.7663 72.7872C32.9336 72.7936 33.1063 72.8029 33.2854 72.8157C33.4644 72.8284 33.6376 72.8343 33.8039 72.8343C34.0015 72.8343 34.1703 72.828 34.3094 72.8157C34.4484 72.8034 34.6069 72.7936 34.787 72.7872C34.7992 72.8123 34.8055 72.8652 34.8055 72.9457C34.8055 73.0266 34.7933 73.0669 34.7684 73.0669C34.7435 73.0669 34.6767 73.0718 34.5694 73.0806C34.4606 73.0904 34.3435 73.1179 34.2167 73.1645C34.0898 73.2116 33.9742 73.2906 33.8693 73.4024C33.6098 73.688 33.3702 73.9416 33.1507 74.1619C32.9312 74.3821 32.7136 74.597 32.497 74.8055C32.2809 75.0135 32.0394 75.2451 31.7745 75.4997C31.7618 75.5183 31.7618 75.5404 31.7745 75.5649C32.2126 76.0747 32.6224 76.552 33.0024 76.996C33.3824 77.44 33.7454 77.827 34.0918 78.1562C34.203 78.2558 34.3337 78.3461 34.4855 78.4265C34.6372 78.5075 34.8362 78.5575 35.0836 78.5762C35.1085 78.6012 35.1143 78.6478 35.1021 78.7155C35.0899 78.7842 35.0806 78.8244 35.0743 78.8367C34.7713 78.8367 34.504 78.8274 34.2723 78.8087C34.0405 78.7901 33.8781 78.765 33.7859 78.7341C33.7239 78.7096 33.6371 78.6689 33.5264 78.613C33.4146 78.5575 33.2975 78.4673 33.1736 78.3427C33.1122 78.2745 32.9839 78.1327 32.7892 77.9188C32.5946 77.7039 32.355 77.436 32.0706 77.1123C31.7862 76.7894 31.4744 76.4318 31.1349 76.0403C31.1222 76.0217 31.0944 76.0119 31.0515 76.0119C31.0266 76.0119 31.0017 76.0182 30.9773 76.0305V77.8393C30.9773 77.957 30.9788 78.0645 30.9822 78.1606C30.9851 78.2568 30.9959 78.3358 31.0144 78.3981C31.0266 78.429 31.0759 78.457 31.1627 78.482C31.2495 78.507 31.3422 78.5242 31.4408 78.533C31.5393 78.5428 31.6076 78.5467 31.6442 78.5467C31.6628 78.5718 31.674 78.6198 31.6764 78.6915C31.6798 78.7631 31.6686 78.8107 31.6442 78.8357C31.4593 78.8234 31.2813 78.8126 31.1115 78.8033C30.9417 78.794 30.7671 78.7896 30.588 78.7896C30.4148 78.7896 30.2387 78.7945 30.0597 78.8033C29.8801 78.8131 29.6982 78.8234 29.5128 78.8357C29.4879 78.8107 29.4772 78.7631 29.4806 78.6915C29.484 78.6198 29.4943 78.5718 29.5128 78.5467C29.5499 78.5467 29.6177 78.5423 29.7167 78.533C29.8158 78.5237 29.9099 78.5065 29.9997 78.482C30.0894 78.4574 30.1372 78.4295 30.1431 78.3981C30.168 78.3235 30.1816 78.2269 30.1846 78.1091C30.1875 77.9914 30.1894 77.8638 30.1894 77.727V73.896C30.1894 73.7596 30.188 73.6301 30.1846 73.5089C30.1812 73.3877 30.1675 73.2901 30.1431 73.215C30.1368 73.1782 30.0889 73.1498 29.9997 73.1311C29.9104 73.1125 29.8158 73.0988 29.7167 73.0894C29.6177 73.0796 29.5499 73.0757 29.5128 73.0757C29.4943 73.0507 29.4835 73.0026 29.4806 72.931C29.4777 72.8594 29.4884 72.8113 29.5128 72.7863C29.6982 72.7926 29.8801 72.8005 30.0597 72.8098C30.2387 72.8196 30.4148 72.8235 30.588 72.8235L30.5885 72.8255Z\",\n \"M37.0486 72.8254C37.2276 72.8254 37.4023 72.821 37.5716 72.8117C37.7423 72.8024 37.9194 72.7945 38.1053 72.7881C38.1302 72.8132 38.1404 72.8568 38.1375 72.9191C38.1336 72.9814 38.1233 73.0251 38.1053 73.0496C38.0682 73.0496 37.9994 73.0545 37.9013 73.0634C37.8023 73.0732 37.7096 73.0869 37.6233 73.1055C37.5369 73.1242 37.4872 73.1522 37.4745 73.1894C37.4564 73.2517 37.4447 73.3327 37.4423 73.4318C37.4394 73.5314 37.4374 73.6403 37.4374 73.758V77.8687C37.4374 77.9864 37.4394 78.0938 37.4423 78.19C37.4452 78.2862 37.4564 78.3656 37.4745 78.4274C37.4867 78.4583 37.5364 78.4868 37.6233 78.5113C37.7101 78.5364 37.8023 78.5535 37.9013 78.5624C37.9994 78.5722 38.0682 78.5766 38.1053 78.5766C38.1233 78.6016 38.1341 78.6448 38.1375 78.7071C38.1404 78.7694 38.1297 78.8125 38.1053 78.8376C37.9194 78.8253 37.7423 78.8145 37.5716 78.8052C37.4018 78.7959 37.2276 78.7915 37.0486 78.7915C36.8754 78.7915 36.6988 78.7964 36.5198 78.8052C36.3407 78.815 36.1587 78.8253 35.9729 78.8376C35.948 78.8125 35.9377 78.7694 35.9407 78.7071C35.9441 78.6448 35.9548 78.6016 35.9729 78.5766C36.0099 78.5766 36.0778 78.5717 36.1768 78.5624C36.2758 78.553 36.37 78.5359 36.4597 78.5113C36.5495 78.4868 36.5968 78.4588 36.6037 78.4274C36.6285 78.3534 36.6417 78.2567 36.6456 78.1385C36.6485 78.0207 36.6495 77.8932 36.6495 77.7563V73.8694C36.6495 73.733 36.6485 73.604 36.6456 73.4828C36.6417 73.3616 36.6285 73.264 36.6037 73.1889C36.5968 73.1517 36.5495 73.1237 36.4597 73.1051C36.37 73.0864 36.2758 73.0727 36.1768 73.0629C36.0778 73.0535 36.0099 73.0491 35.9729 73.0491C35.9548 73.0246 35.9436 72.9809 35.9407 72.9186C35.9377 72.8563 35.9485 72.8127 35.9729 72.7876C36.1587 72.794 36.3407 72.8019 36.5198 72.8112C36.6988 72.821 36.8754 72.8249 37.0486 72.8249V72.8254Z\",\n \"M40.3114 72.7974H40.7095C40.8397 72.7974 40.9354 72.794 40.9973 72.7876C41.0895 72.9308 41.2378 73.1325 41.4417 73.3935C41.6462 73.6545 41.8837 73.9513 42.156 74.2834C42.4277 74.616 42.7087 74.9594 42.9995 75.3136C43.2902 75.6678 43.5712 76.0176 43.8429 76.3625C44.1147 76.7074 44.3493 77.0194 44.5469 77.299V73.8502C44.5469 73.6888 44.544 73.5612 44.5377 73.4685C44.5313 73.3753 44.5035 73.2914 44.4542 73.2164C44.4357 73.186 44.3801 73.156 44.2869 73.1281C44.1947 73.0996 44.0971 73.078 43.9952 73.0623C43.8932 73.0471 43.8176 73.0393 43.7678 73.0393C43.7429 73.0084 43.7322 72.9632 43.7356 72.9044C43.7385 72.8455 43.7434 72.8033 43.7493 72.7783C43.9283 72.7847 44.0971 72.792 44.2542 72.8018C44.4118 72.8111 44.5899 72.8156 44.7874 72.8156C44.9294 72.8156 45.0455 72.8141 45.1353 72.8107C45.225 72.8077 45.3172 72.8028 45.4129 72.7969C45.5085 72.791 45.6251 72.7847 45.7607 72.7783C45.7729 72.8033 45.7822 72.8406 45.7885 72.8901C45.7948 72.9402 45.7856 72.9897 45.7607 73.0398C45.7236 73.0398 45.6509 73.0461 45.5431 73.0584C45.4353 73.0707 45.3309 73.0908 45.2324 73.1187C45.1333 73.1467 45.0718 73.1796 45.047 73.2164C45.0035 73.2851 44.9787 73.3626 44.9728 73.4499C44.967 73.5372 44.9635 73.6672 44.9635 73.8414V77.9986C44.9635 78.1296 44.965 78.2547 44.9679 78.3764C44.9713 78.4975 44.9762 78.6388 44.9821 78.8007C44.9757 78.8253 44.9572 78.841 44.9265 78.8473C44.8957 78.8537 44.8743 78.8567 44.8616 78.8567C44.8367 78.8567 44.7947 78.8414 44.7362 78.81C44.6777 78.7786 44.6142 78.7232 44.5459 78.6423L40.5973 73.627V77.7661C40.5973 77.9275 40.6022 78.0536 40.6109 78.1438C40.6207 78.2341 40.6465 78.3165 40.69 78.3906C40.708 78.422 40.7622 78.4514 40.8519 78.4794C40.9417 78.5078 41.0373 78.5304 41.1393 78.5495C41.2412 78.5687 41.3169 78.578 41.3666 78.578C41.3915 78.6089 41.4037 78.6521 41.4037 78.7085C41.4037 78.7649 41.3974 78.8081 41.3852 78.839C41.2056 78.8267 41.0388 78.8159 40.8846 78.8066C40.7305 78.7973 40.5539 78.7929 40.3563 78.7929C40.2207 78.7929 40.1041 78.7963 40.0089 78.8027C39.9128 78.8091 39.8201 78.8145 39.7308 78.8208C39.6416 78.8272 39.525 78.8331 39.383 78.8395C39.3708 78.8145 39.3615 78.7777 39.3552 78.7276C39.3489 78.6776 39.3581 78.6285 39.383 78.5785C39.4201 78.5785 39.4913 78.5702 39.5967 78.5549C39.7016 78.5397 39.805 78.5177 39.9074 78.4897C40.0094 78.4612 40.0694 78.4289 40.088 78.3916C40.1309 78.3234 40.1577 78.2473 40.1665 78.1635C40.1763 78.0796 40.1802 77.9505 40.1802 77.7764V73.8242C40.1802 73.6505 40.1758 73.52 40.1665 73.4327C40.1572 73.3454 40.1309 73.2679 40.088 73.1992C40.0694 73.1624 40.0094 73.1295 39.9074 73.1016C39.805 73.0736 39.7016 73.0535 39.5967 73.0412C39.4913 73.029 39.4206 73.0226 39.383 73.0226C39.3581 72.9725 39.3493 72.923 39.3552 72.8734C39.3615 72.8234 39.3703 72.7861 39.383 72.7611C39.5933 72.7675 39.763 72.7748 39.8928 72.7847C40.0231 72.794 40.1621 72.7984 40.3099 72.7984L40.3114 72.7974Z\",\n \"M51.2954 77.2158V77.104C51.2954 76.9857 51.294 76.8788 51.2906 76.7821C51.2876 76.686 51.2769 76.607 51.2584 76.5447C51.252 76.5074 51.2047 76.478 51.1149 76.4559C51.0247 76.4343 50.9325 76.4191 50.8369 76.4093C50.7412 76.4 50.6744 76.3956 50.6378 76.3956C50.6193 76.3705 50.6081 76.3269 50.6056 76.2651C50.6022 76.2028 50.6134 76.1591 50.6378 76.1341C50.8232 76.1405 51.0022 76.1498 51.1754 76.162C51.3481 76.1748 51.5213 76.1807 51.6945 76.1807C51.8735 76.1807 52.0419 76.1748 52.1994 76.162C52.357 76.1503 52.5287 76.1405 52.7141 76.1341C52.7385 76.1591 52.7492 76.2028 52.7463 76.2651C52.7429 76.3269 52.7327 76.3705 52.7141 76.3956C52.677 76.3956 52.6122 76.4005 52.5195 76.4093C52.4273 76.4191 52.3404 76.4343 52.2599 76.4559C52.1799 76.478 52.1331 76.5069 52.1214 76.5447C52.0965 76.6193 52.0823 76.7159 52.0794 76.8337C52.076 76.9519 52.0745 77.0794 52.0745 77.2158V77.859C52.0745 77.9586 52.0902 78.0331 52.1214 78.0827C52.1516 78.1327 52.1677 78.1823 52.1677 78.2323C52.1677 78.2573 52.158 78.2789 52.1399 78.2976C52.1214 78.3162 52.0716 78.3476 51.9911 78.3903C51.8613 78.459 51.7116 78.5301 51.5418 78.6052C51.3715 78.6797 51.1584 78.7416 50.9017 78.7916C50.6451 78.8416 50.3163 78.8662 49.9148 78.8662C49.4699 78.8662 49.0621 78.7867 48.6913 78.6287C48.3205 78.4703 48.0005 78.2524 47.7317 77.9762C47.4629 77.7 47.2555 77.3826 47.1111 77.0255C46.9658 76.6678 46.8931 76.2876 46.8931 75.8839C46.8931 75.4551 46.9687 75.0528 47.1204 74.6765C47.2721 74.3008 47.4834 73.9672 47.7556 73.6748C48.0273 73.3824 48.3503 73.1542 48.724 72.9899C49.0977 72.8256 49.507 72.7426 49.9524 72.7426C50.249 72.7426 50.5593 72.7549 50.8837 72.7799C51.2081 72.805 51.5374 72.8545 51.8706 72.9291C51.914 73.1842 51.9477 73.3966 51.9726 73.5678C51.9975 73.739 52.0209 73.8941 52.0423 74.0339C52.0643 74.1737 52.0745 74.2561 52.0745 74.2806C52.0809 74.3057 52.0623 74.3307 52.0194 74.3552C51.976 74.3802 51.9292 74.3925 51.8804 74.3925C51.837 74.3925 51.7999 74.3827 51.7687 74.364C51.7565 74.2958 51.7272 74.1904 51.6804 74.0471C51.634 73.9044 51.5506 73.7547 51.4301 73.5997C51.3096 73.4447 51.1354 73.3122 50.9066 73.2033C50.6778 73.0944 50.3749 73.0404 49.9982 73.0404C49.6646 73.0404 49.3616 73.1165 49.0904 73.2686C48.8181 73.4211 48.5849 73.6262 48.3903 73.8842C48.1956 74.1418 48.0473 74.4278 47.9454 74.7413C47.8434 75.0558 47.7927 75.3707 47.7927 75.6876C47.7927 76.0423 47.8405 76.3902 47.9361 76.7316C48.0317 77.0736 48.1771 77.3826 48.3722 77.6593C48.5664 77.9355 48.8103 78.1568 49.1045 78.3216C49.3982 78.486 49.7426 78.5684 50.1378 78.5684C50.3724 78.5684 50.5812 78.536 50.7632 78.4707C50.9457 78.4055 51.1047 78.3383 51.2408 78.2706C51.2715 78.2583 51.2891 78.2407 51.2915 78.2196C51.295 78.1975 51.2964 78.171 51.2964 78.1401V77.2173L51.2954 77.2158Z\",\n] as const;\n\nexport const BRAND_LOGO_VIEW_BOX = \"5.0271 7.09708 51.9459 71.80582\";\n","export type BrandLogoVariant = \"white\" | \"brand\";\n\nexport interface BrandLogoProps {\n /** White for dark surfaces, or the Cortel brand color for light surfaces. */\n variant?: BrandLogoVariant;\n /** Rendered width. Defaults to 62; setting only width preserves the original ratio. */\n width?: number;\n /** Rendered height. Defaults to 86; setting only height preserves the original ratio. */\n height?: number;\n /** Accessible name announced for the logo. */\n accessibilityLabel?: string;\n}\n\nexport const BRAND_LOGO_DEFAULT_WIDTH = 62;\nexport const BRAND_LOGO_DEFAULT_HEIGHT = 86;\n\nexport const BRAND_LOGO_COLORS = {\n white: \"#FFFFFF\",\n brand: \"#B76533\",\n} as const satisfies Record<BrandLogoVariant, string>;\n\nexport function resolveBrandLogoSize(\n width?: number,\n height?: number,\n): { width: number; height: number } {\n if (width != null && height != null) {\n return { width, height };\n }\n\n if (width != null) {\n return {\n width,\n height: width * (BRAND_LOGO_DEFAULT_HEIGHT / BRAND_LOGO_DEFAULT_WIDTH),\n };\n }\n\n if (height != null) {\n return {\n width: height * (BRAND_LOGO_DEFAULT_WIDTH / BRAND_LOGO_DEFAULT_HEIGHT),\n height,\n };\n }\n\n return { width: BRAND_LOGO_DEFAULT_WIDTH, height: BRAND_LOGO_DEFAULT_HEIGHT };\n}\n","import Svg, { Path } from \"react-native-svg\";\nimport { BRAND_LOGO_PATHS, BRAND_LOGO_VIEW_BOX } from \"./brandLogoPaths\";\nimport { BRAND_LOGO_COLORS, resolveBrandLogoSize, type BrandLogoProps } from \"./BrandLogo.types\";\n\n/** Native Cortel Booking brand mark. */\nexport function BrandLogo({\n variant = \"white\",\n width,\n height,\n accessibilityLabel = \"Cortel Booking\",\n}: BrandLogoProps) {\n const size = resolveBrandLogoSize(width, height);\n const fill = BRAND_LOGO_COLORS[variant];\n\n return (\n <Svg\n width={size.width}\n height={size.height}\n viewBox={BRAND_LOGO_VIEW_BOX}\n preserveAspectRatio=\"none\"\n fill=\"none\"\n accessible\n accessibilityRole=\"image\"\n accessibilityLabel={accessibilityLabel}\n >\n {BRAND_LOGO_PATHS.map((path, index) => (\n <Path key={index} d={path} fill={fill} />\n ))}\n </Svg>\n );\n}\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ComponentRef,\n} from \"react\";\nimport {\n Image,\n Platform,\n Pressable,\n StyleSheet,\n Text,\n View,\n type GestureResponderEvent,\n type PressableProps,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport { ChevronDownIcon, UserIcon } from \"../../icons\";\nimport { avatarTypography, colors } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\nimport { MenuItem, type MenuItemProps } from \"../../primitives\";\n\n/** Data shape for an Avatar dropdown option — same fields as `MenuItem`. */\nexport type AvatarMenuItem = Pick<\n MenuItemProps,\n \"icon\" | \"label\" | \"disabled\" | \"backgroundColor\" | \"hoverColor\"\n> & {\n /** Stable identity for React keys; falls back to `label`. */\n key?: string;\n onPress: () => void;\n};\n\nexport interface AvatarProps extends Omit<\n PressableProps,\n \"onPress\" | \"disabled\" | \"style\" | \"children\" | \"hitSlop\"\n> {\n /** Logged-in user's display name. */\n name: string;\n /** Shown under the name, e.g. the user's email. */\n email?: string;\n /** Photo URL; falls back to a placeholder icon when missing or when it fails to load. */\n imageUrl?: string | null;\n /** Called on every press, in addition to any menu toggling driven by `menuItems`. */\n onPress?: (event: GestureResponderEvent) => void;\n /** External — non-interactive. */\n disabled?: boolean;\n /** Trailing chevron, typically used to hint a dropdown/menu. */\n showChevron?: boolean;\n /**\n * Account-menu options, supplied entirely by the consumer (icon, label,\n * action, and per-item colors). When set, pressing the chip opens a\n * dropdown listing them via `MenuItem`.\n */\n menuItems?: AvatarMenuItem[];\n /** Controlled open state for the menu. */\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** Fixed menu width; defaults to matching the chip's width. */\n menuWidth?: number;\n style?: StyleProp<ViewStyle>;\n className?: string;\n hitSlop?: PressableProps[\"hitSlop\"];\n}\n\nconst IMAGE_SIZE = 48;\nconst CONTAINER_RADIUS = 71;\nconst CHEVRON_SIZE = 20;\nconst FALLBACK_ICON_SIZE = 20;\nconst MENU_RADIUS = 16;\n\nexport const Avatar = forwardRef<ComponentRef<typeof View>, AvatarProps>(function Avatar(\n {\n name,\n email,\n imageUrl,\n onPress,\n disabled = false,\n showChevron = true,\n menuItems,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n menuWidth,\n style,\n className,\n accessibilityLabel,\n hitSlop = 8,\n ...rest\n },\n forwardedRef,\n) {\n const wrapperRef = useRef<ComponentRef<typeof View>>(null);\n const containerRef = useRef<ComponentRef<typeof View>>(null);\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n const [imageFailed, setImageFailed] = useState(false);\n\n const resolvedMenuItems = menuItems ?? [];\n const hasMenu = resolvedMenuItems.length > 0;\n const isInteractive = onPress != null || hasMenu;\n const isOpenControlled = typeof openProp === \"boolean\";\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const isOpen = hasMenu && (isOpenControlled ? openProp : uncontrolledOpen);\n\n useApplyWebClassName(containerRef, className);\n\n const setOpen = useCallback(\n (next: boolean) => {\n if (!isOpenControlled) setUncontrolledOpen(next);\n onOpenChange?.(next);\n },\n [isOpenControlled, onOpenChange],\n );\n\n const focusTrigger = useCallback(() => {\n const node = containerRef.current as unknown as { focus?: () => void } | null;\n node?.focus?.();\n }, []);\n\n const closeAndFocusTrigger = useCallback(() => {\n setOpen(false);\n focusTrigger();\n }, [focusTrigger, setOpen]);\n\n const handlePress = (event: GestureResponderEvent) => {\n onPress?.(event);\n if (hasMenu) setOpen(!isOpen);\n };\n\n const handleItemPress = useCallback(\n (item: AvatarMenuItem) => {\n if (item.disabled) return;\n item.onPress();\n closeAndFocusTrigger();\n },\n [closeAndFocusTrigger],\n );\n\n // Close on outside click (web only; native has no document-level events).\n useEffect(() => {\n if (Platform.OS !== \"web\" || !isOpen) return;\n\n const handlePointerDown = (event: MouseEvent | TouchEvent) => {\n const wrapper = wrapperRef.current as unknown as {\n contains?: (node: Node) => boolean;\n } | null;\n const target = event.target;\n if (wrapper?.contains && target instanceof Node && !wrapper.contains(target)) {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handlePointerDown);\n document.addEventListener(\"touchstart\", handlePointerDown);\n return () => {\n document.removeEventListener(\"mousedown\", handlePointerDown);\n document.removeEventListener(\"touchstart\", handlePointerDown);\n };\n }, [isOpen, setOpen]);\n\n // Escape closes the menu and returns focus to the trigger (web only).\n useEffect(() => {\n if (Platform.OS !== \"web\" || !isOpen) return;\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n closeAndFocusTrigger();\n }\n };\n\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [isOpen, closeAndFocusTrigger]);\n\n const hasImage = Boolean(imageUrl) && !imageFailed;\n const resolvedAccessibilityLabel = accessibilityLabel ?? [name, email].filter(Boolean).join(\", \");\n\n return (\n <View ref={wrapperRef} style={[styles.wrapper, isOpen && styles.wrapperOpen]}>\n <Pressable\n {...rest}\n ref={setContainerRef}\n onPress={handlePress}\n disabled={disabled || !isInteractive}\n hitSlop={isInteractive ? hitSlop : undefined}\n accessibilityRole={isInteractive ? \"button\" : undefined}\n accessibilityLabel={resolvedAccessibilityLabel}\n accessibilityState={\n isInteractive ? { disabled, expanded: hasMenu ? isOpen : undefined } : undefined\n }\n style={[styles.root, disabled && styles.disabled, style]}\n >\n <View style={styles.imageWrap}>\n {hasImage ? (\n <Image\n source={{ uri: imageUrl ?? undefined }}\n style={styles.image}\n onError={() => setImageFailed(true)}\n />\n ) : (\n <View style={styles.imageFallback}>\n <UserIcon size={FALLBACK_ICON_SIZE} color={colors.primary} />\n </View>\n )}\n </View>\n\n <View style={styles.textColumn}>\n <Text style={styles.name} numberOfLines={1}>\n {name}\n </Text>\n {email ? (\n <Text style={styles.email} numberOfLines={1}>\n {email}\n </Text>\n ) : null}\n </View>\n\n {showChevron ? (\n <View style={[styles.chevronSlot, isOpen && styles.chevronOpen]}>\n <ChevronDownIcon size={CHEVRON_SIZE} color={isOpen ? colors.primary : colors.grey100} />\n </View>\n ) : null}\n </Pressable>\n\n {hasMenu && isOpen ? (\n <View style={[styles.menu, menuWidth != null && { right: undefined, width: menuWidth }]}>\n {resolvedMenuItems.map((item) => {\n const itemKey = item.key ?? item.label;\n return (\n <MenuItem\n key={itemKey}\n icon={item.icon}\n label={item.label}\n disabled={item.disabled}\n backgroundColor={item.backgroundColor}\n hoverColor={item.hoverColor}\n onPress={() => handleItemPress(item)}\n />\n );\n })}\n </View>\n ) : null}\n </View>\n );\n});\n\nconst styles = StyleSheet.create({\n wrapper: {\n position: \"relative\",\n alignSelf: \"flex-start\",\n },\n wrapperOpen: {\n zIndex: 20,\n },\n root: {\n flexDirection: \"row\",\n alignItems: \"center\",\n alignSelf: \"flex-start\",\n gap: 12,\n paddingTop: 4,\n paddingBottom: 4,\n paddingLeft: 4,\n paddingRight: 12,\n borderRadius: CONTAINER_RADIUS,\n backgroundColor: colors.grey700,\n },\n disabled: {\n opacity: 0.6,\n },\n imageWrap: {\n width: IMAGE_SIZE,\n height: IMAGE_SIZE,\n borderRadius: IMAGE_SIZE / 2,\n overflow: \"hidden\",\n flexShrink: 0,\n },\n image: {\n width: IMAGE_SIZE,\n height: IMAGE_SIZE,\n },\n imageFallback: {\n width: IMAGE_SIZE,\n height: IMAGE_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: colors.grey600,\n },\n textColumn: {\n minWidth: 0,\n flexShrink: 1,\n gap: 3,\n },\n name: {\n ...avatarTypography.name,\n color: colors.white,\n },\n email: {\n ...avatarTypography.email,\n color: colors.grey0,\n },\n chevronSlot: {\n width: CHEVRON_SIZE,\n height: CHEVRON_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n chevronOpen: {\n transform: [{ rotate: \"180deg\" }],\n },\n menu: {\n position: \"absolute\",\n top: \"100%\",\n left: 0,\n right: 0,\n marginTop: 8,\n zIndex: 10,\n borderRadius: MENU_RADIUS,\n padding: 8,\n gap: 8,\n backgroundColor: colors.grey700,\n ...Platform.select({\n web: {\n boxShadow: `0 8px 24px ${colors.black}73`,\n },\n default: {\n elevation: 8,\n },\n }),\n },\n});\n","import { forwardRef, useMemo, useRef, useState, type ComponentRef } from \"react\";\nimport {\n Image,\n Pressable,\n StyleSheet,\n Text,\n View,\n type StyleProp,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport { LogOutIcon } from \"../../icons\";\nimport { colors, fonts } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport interface AvatarSimpleProps extends Omit<ViewProps, \"style\" | \"children\"> {\n /** Logged-in user's display name. */\n name: string;\n /** Shown under the name, e.g. the user's email. */\n email: string;\n /** Photo URL; falls back to a solid placeholder when missing or when it fails to load. */\n imageUrl?: string | null;\n /** Called when the trailing logout control is pressed. */\n onLogOut?: () => void;\n /** Accessible label for the logout control. Defaults to `\"Log out\"`. */\n logOutAccessibilityLabel?: string;\n /**\n * Compact mode — avatar image only (no card chrome, name, email, or logout).\n * Used by collapsed account sidebars.\n */\n compact?: boolean;\n style?: StyleProp<ViewStyle>;\n className?: string;\n}\n\nconst IMAGE_SIZE = 32;\nconst CARD_WIDTH = 268;\nconst CARD_HEIGHT = 56;\nconst LOG_OUT_SIZE = 16;\n\nexport const AvatarSimple = forwardRef<ComponentRef<typeof View>, AvatarSimpleProps>(\n function AvatarSimple(\n {\n name,\n email,\n imageUrl,\n onLogOut,\n logOutAccessibilityLabel = \"Log out\",\n compact = false,\n style,\n className,\n ...rest\n },\n forwardedRef,\n ) {\n const containerRef = useRef<ComponentRef<typeof View>>(null);\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n const [imageFailed, setImageFailed] = useState(false);\n const showImage = Boolean(imageUrl) && !imageFailed;\n\n useApplyWebClassName(containerRef, className);\n\n return (\n <View\n {...rest}\n ref={setContainerRef}\n style={[styles.root, compact ? styles.rootCompact : styles.rootCard, style]}\n accessibilityRole=\"summary\"\n accessibilityLabel={`${name}, ${email}`}\n >\n <View style={styles.avatar}>\n {showImage ? (\n <Image\n source={{ uri: imageUrl ?? undefined }}\n style={styles.avatarImage}\n onError={() => setImageFailed(true)}\n accessibilityIgnoresInvertColors\n />\n ) : null}\n </View>\n\n {!compact ? (\n <View style={styles.details}>\n <View style={styles.textBlock}>\n <Text style={styles.name} numberOfLines={1}>\n {name}\n </Text>\n <Text style={styles.email} numberOfLines={1}>\n {email}\n </Text>\n </View>\n\n <Pressable\n onPress={onLogOut}\n accessibilityRole=\"button\"\n accessibilityLabel={logOutAccessibilityLabel}\n hitSlop={8}\n style={styles.logOutButton}\n >\n <LogOutIcon color={colors.primary} size={LOG_OUT_SIZE} strokeWidth={2} />\n </Pressable>\n </View>\n ) : null}\n </View>\n );\n },\n);\n\nconst styles = StyleSheet.create({\n root: {\n flexDirection: \"row\",\n alignItems: \"center\",\n overflow: \"hidden\",\n },\n rootCard: {\n width: CARD_WIDTH,\n height: CARD_HEIGHT,\n gap: 12,\n borderRadius: 12,\n paddingVertical: 4,\n paddingHorizontal: 12,\n backgroundColor: colors.grey700,\n },\n rootCompact: {\n width: IMAGE_SIZE,\n height: IMAGE_SIZE,\n borderRadius: IMAGE_SIZE,\n backgroundColor: \"transparent\",\n },\n avatar: {\n width: IMAGE_SIZE,\n height: IMAGE_SIZE,\n borderRadius: 56,\n backgroundColor: colors.grey500,\n overflow: \"hidden\",\n flexShrink: 0,\n },\n avatarImage: {\n width: IMAGE_SIZE,\n height: IMAGE_SIZE,\n },\n details: {\n flex: 1,\n minWidth: 0,\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 12,\n },\n textBlock: {\n flex: 1,\n minWidth: 0,\n },\n name: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"600\",\n lineHeight: 16,\n letterSpacing: 0,\n color: colors.white,\n },\n email: {\n marginTop: 2,\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"400\",\n lineHeight: 16,\n letterSpacing: 0,\n color: colors.grey0,\n },\n logOutButton: {\n width: LOG_OUT_SIZE,\n height: LOG_OUT_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n});\n","import { forwardRef, useMemo, useRef, type ComponentRef } from \"react\";\nimport {\n Platform,\n StyleSheet,\n Text,\n View,\n type StyleProp,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport type { IconComponent } from \"../../icons\";\nimport { badgeTypography, colors } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport type BadgeVariant = \"default\" | \"transparent\";\n\nexport interface BadgeProps extends Omit<ViewProps, \"style\" | \"children\"> {\n label: string;\n variant?: BadgeVariant;\n icon?: IconComponent;\n style?: StyleProp<ViewStyle>;\n className?: string;\n}\n\nconst ICON_SIZE = 20;\n\nconst webBlurStyle: ViewStyle =\n Platform.OS === \"web\"\n ? ({\n backdropFilter: \"blur(10.3px)\",\n WebkitBackdropFilter: \"blur(10.3px)\",\n } as ViewStyle)\n : {};\n\n/**\n * Variant chrome — icon color is part of the variant, not a separate prop.\n * - default: grey fill, no border, white icon\n * - transparent: muted white fill + 1px border, primary icon, blur on web\n */\nconst variantConfig = {\n default: {\n backgroundColor: colors.grey750,\n iconColor: colors.white,\n border: false,\n blur: false,\n },\n transparent: {\n backgroundColor: colors.whiteAlpha5,\n iconColor: colors.primary,\n border: true,\n blur: true,\n },\n} as const satisfies Record<\n BadgeVariant,\n { backgroundColor: string; iconColor: string; border: boolean; blur: boolean }\n>;\n\nexport const Badge = forwardRef<ComponentRef<typeof View>, BadgeProps>(function Badge(\n { label, variant = \"default\", icon: Icon, style, className, accessibilityLabel, ...rest },\n forwardedRef,\n) {\n const containerRef = useRef<ComponentRef<typeof View>>(null);\n const preset = variantConfig[variant];\n const resolvedClassName = className?.trim() || undefined;\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n\n useApplyWebClassName(containerRef, resolvedClassName);\n\n return (\n <View\n {...rest}\n ref={setContainerRef}\n style={[\n styles.base,\n { backgroundColor: preset.backgroundColor },\n preset.border ? styles.transparentBorder : null,\n preset.blur ? webBlurStyle : null,\n style,\n ]}\n accessibilityRole=\"text\"\n accessibilityLabel={accessibilityLabel ?? label}\n >\n {Icon ? (\n <View style={styles.iconSlot}>\n <Icon size={ICON_SIZE} color={preset.iconColor} />\n </View>\n ) : null}\n\n <Text style={[styles.label, Platform.OS === \"android\" ? styles.labelAndroid : null]}>\n {label}\n </Text>\n </View>\n );\n});\n\nconst styles = StyleSheet.create({\n base: {\n flexDirection: \"row\",\n alignItems: \"center\",\n alignSelf: \"flex-start\",\n minHeight: 44,\n paddingVertical: 12,\n paddingHorizontal: 16,\n gap: 12,\n borderRadius: 79,\n overflow: \"hidden\",\n borderWidth: 0,\n borderColor: \"transparent\",\n borderStyle: \"solid\",\n },\n transparentBorder: {\n borderWidth: 1,\n borderColor: colors.whiteAlpha5,\n borderStyle: \"solid\",\n },\n iconSlot: {\n width: ICON_SIZE,\n height: ICON_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n label: {\n ...badgeTypography,\n color: colors.white,\n },\n labelAndroid: {\n includeFontPadding: false,\n },\n});\n","import { forwardRef, useMemo, useRef, useState, type ComponentRef } from \"react\";\nimport {\n Platform,\n Pressable,\n StyleSheet,\n Text,\n View,\n type PressableProps,\n type StyleProp,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport { MinusIcon, PlusIcon } from \"../../icons\";\nimport { colors, counterTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport interface CounterProps extends Omit<ViewProps, \"style\" | \"children\"> {\n value?: number;\n defaultValue?: number;\n onValueChange?: (value: number) => void;\n min?: number;\n max?: number;\n step?: number;\n disabled?: boolean;\n style?: StyleProp<ViewStyle>;\n className?: string;\n hitSlop?: PressableProps[\"hitSlop\"];\n}\n\nconst BUTTON_SIZE = 32;\n\nconst webBlurStyle: ViewStyle =\n Platform.OS === \"web\"\n ? ({\n backdropFilter: \"blur(20px)\",\n WebkitBackdropFilter: \"blur(20px)\",\n } as ViewStyle)\n : {};\n\nfunction clamp(value: number, min: number, max?: number) {\n return Math.max(min, max === undefined ? value : Math.min(value, max));\n}\n\nexport const Counter = forwardRef<ComponentRef<typeof View>, CounterProps>(function Counter(\n {\n value,\n defaultValue,\n onValueChange,\n min = 1,\n max,\n step = 1,\n disabled = false,\n style,\n className,\n hitSlop,\n ...rest\n },\n forwardedRef,\n) {\n const containerRef = useRef<ComponentRef<typeof View>>(null);\n const isControlled = value !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = useState(() =>\n clamp(defaultValue ?? min, min, max),\n );\n const resolvedValue = clamp(isControlled ? value : uncontrolledValue, min, max);\n const resolvedClassName = className?.trim() || undefined;\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n const decrementDisabled = disabled || resolvedValue <= min;\n const incrementDisabled = disabled || (max !== undefined && resolvedValue >= max);\n\n useApplyWebClassName(containerRef, resolvedClassName);\n\n const updateValue = (nextValue: number) => {\n const next = clamp(nextValue, min, max);\n if (next === resolvedValue) return;\n if (!isControlled) setUncontrolledValue(next);\n onValueChange?.(next);\n };\n\n return (\n <View {...rest} ref={setContainerRef} style={[styles.base, style]}>\n <Pressable\n disabled={decrementDisabled}\n hitSlop={hitSlop}\n onPress={() => updateValue(resolvedValue - step)}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Decrease value\"\n accessibilityState={{ disabled: decrementDisabled }}\n style={[styles.button, webBlurStyle, decrementDisabled && styles.buttonDisabled]}\n >\n <MinusIcon />\n </Pressable>\n\n <Text style={styles.value}>{resolvedValue}</Text>\n\n <Pressable\n disabled={incrementDisabled}\n hitSlop={hitSlop}\n onPress={() => updateValue(resolvedValue + step)}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Increase value\"\n accessibilityState={{ disabled: incrementDisabled }}\n style={[styles.button, webBlurStyle, incrementDisabled && styles.buttonDisabled]}\n >\n <PlusIcon />\n </Pressable>\n </View>\n );\n});\n\nconst styles = StyleSheet.create({\n base: {\n flexDirection: \"row\",\n alignItems: \"center\",\n alignSelf: \"flex-start\",\n gap: 17,\n },\n button: {\n width: BUTTON_SIZE,\n height: BUTTON_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n borderWidth: 1,\n borderColor: colors.whiteAlpha10,\n borderRadius: 39,\n },\n buttonDisabled: {\n opacity: 0.25,\n },\n value: {\n ...counterTypography,\n color: colors.white,\n },\n});\n","import { forwardRef, useEffect, useMemo, useRef, useState, type ComponentRef } from \"react\";\nimport {\n Animated,\n Easing,\n Pressable,\n StyleSheet,\n Text,\n View,\n type PressableProps,\n type StyleProp,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport type { IconComponent } from \"../../icons\";\nimport { colors, segmentedToggleTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport interface SegmentedToggleOption {\n value: string;\n label: string;\n icon?: IconComponent;\n}\n\nexport interface SegmentedToggleProps extends Omit<ViewProps, \"style\" | \"children\"> {\n /**\n * Segment options. Supports 2 or 3 options (e.g. Active / Completed / Cancelled).\n * Passing fewer than 2 options is unsupported.\n */\n options:\n | readonly [SegmentedToggleOption, SegmentedToggleOption]\n | readonly [SegmentedToggleOption, SegmentedToggleOption, SegmentedToggleOption];\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n fullWidth?: boolean;\n disabled?: boolean;\n style?: StyleProp<ViewStyle>;\n className?: string;\n hitSlop?: PressableProps[\"hitSlop\"];\n}\n\nconst ICON_SIZE = 20;\nconst ANIMATION_DURATION = 200;\nconst OPTION_HORIZONTAL_PADDING = 16;\nconst OPTION_CONTENT_GAP = 12;\nconst OPTION_MIN_WIDTH = 97;\nconst OPTION_MEASUREMENT_TOLERANCE = 0.5;\nconst TRACK_PADDING = 4;\nconst OPTION_GAP = 4;\n\nfunction buildIndicatorOutputRange(optionWidths: number[]): number[] {\n const outputRange: number[] = [];\n let offset = 0;\n for (let index = 0; index < optionWidths.length; index += 1) {\n outputRange.push(offset);\n offset += optionWidths[index] + OPTION_GAP;\n }\n return outputRange;\n}\n\nexport const SegmentedToggle = forwardRef<ComponentRef<typeof View>, SegmentedToggleProps>(\n function SegmentedToggle(\n {\n options,\n value,\n defaultValue = options[0].value,\n onValueChange,\n fullWidth = true,\n disabled = false,\n style,\n className,\n hitSlop,\n onLayout,\n ...rest\n },\n forwardedRef,\n ) {\n const optionCount = options.length;\n const containerRef = useRef<ComponentRef<typeof View>>(null);\n const isControlled = value !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const selectedValue = isControlled ? value : uncontrolledValue;\n const selectedIndex = Math.max(\n 0,\n options.findIndex(({ value: optionValue }) => optionValue === selectedValue),\n );\n const resolvedClassName = className?.trim() || undefined;\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n const progress = useRef(new Animated.Value(selectedIndex)).current;\n const [contentWidths, setContentWidths] = useState<number[]>(() =>\n Array.from({ length: optionCount }, () => 0),\n );\n const [containerWidth, setContainerWidth] = useState(0);\n\n // Track chrome: left+right padding + gaps between options.\n const trackChrome = TRACK_PADDING * 2 + OPTION_GAP * (optionCount - 1);\n const availableOptionWidth = Math.max(0, (containerWidth - trackChrome) / optionCount);\n const resolveContentOptionWidth = (contentWidth: number) =>\n contentWidth > 0\n ? Math.max(\n OPTION_MIN_WIDTH,\n contentWidth + OPTION_HORIZONTAL_PADDING * 2 + OPTION_MEASUREMENT_TOLERANCE,\n )\n : 0;\n\n const optionWidths = fullWidth\n ? Array.from({ length: optionCount }, () => availableOptionWidth)\n : contentWidths.map((width) => resolveContentOptionWidth(width));\n\n const selectedOptionWidth = optionWidths[selectedIndex] ?? 0;\n const indicatorInputRange = options.map((_, index) => index);\n const indicatorOutputRange = buildIndicatorOutputRange(optionWidths);\n const indicatorTranslateX = progress.interpolate({\n inputRange: indicatorInputRange,\n outputRange: indicatorOutputRange,\n });\n\n useApplyWebClassName(containerRef, resolvedClassName);\n\n useEffect(() => {\n setContentWidths((current) => {\n if (current.length === optionCount) return current;\n return Array.from({ length: optionCount }, (_, index) => current[index] ?? 0);\n });\n }, [optionCount]);\n\n useEffect(() => {\n const animation = Animated.timing(progress, {\n toValue: selectedIndex,\n duration: ANIMATION_DURATION,\n easing: Easing.out(Easing.cubic),\n useNativeDriver: true,\n });\n\n animation.start();\n return () => animation.stop();\n }, [progress, selectedIndex]);\n\n const selectOption = (nextValue: string) => {\n if (disabled || nextValue === selectedValue) return;\n if (!isControlled) setUncontrolledValue(nextValue);\n onValueChange?.(nextValue);\n };\n\n return (\n <View\n {...rest}\n ref={setContainerRef}\n onLayout={(event) => {\n const nextWidth = event.nativeEvent.layout.width;\n setContainerWidth((currentWidth) =>\n currentWidth === nextWidth ? currentWidth : nextWidth,\n );\n onLayout?.(event);\n }}\n style={[\n styles.base,\n fullWidth ? styles.fullWidth : styles.contentWidth,\n disabled && styles.disabled,\n style,\n ]}\n accessibilityRole=\"radiogroup\"\n >\n {!fullWidth\n ? options.map(({ value: optionValue, label, icon: Icon }, index) => (\n <View\n key={`${optionValue}-measurement`}\n pointerEvents=\"none\"\n aria-hidden\n accessibilityElementsHidden\n importantForAccessibility=\"no-hide-descendants\"\n onLayout={(event) => {\n const nextWidth = event.nativeEvent.layout.width;\n setContentWidths((currentWidths) => {\n if (currentWidths[index] === nextWidth) return currentWidths;\n const nextWidths = [...currentWidths];\n nextWidths[index] = nextWidth;\n return nextWidths;\n });\n }}\n style={styles.optionMeasurement}\n >\n {Icon ? <Icon size={ICON_SIZE} /> : null}\n <Text style={[styles.label, styles.contentWidthLabel]}>{label}</Text>\n </View>\n ))\n : null}\n {selectedOptionWidth > 0 ? (\n <Animated.View\n pointerEvents=\"none\"\n style={[\n styles.activeIndicator,\n { width: selectedOptionWidth, transform: [{ translateX: indicatorTranslateX }] },\n ]}\n />\n ) : null}\n {options.map(({ value: optionValue, label, icon: Icon }, index) => {\n const selected = optionValue === selectedValue;\n const iconColor = selected ? colors.primary : colors.whiteAlpha20;\n const labelColor = selected ? colors.whiteAlpha86 : colors.whiteAlpha40;\n const optionWidth = optionWidths[index] ?? 0;\n\n return (\n <Pressable\n key={optionValue}\n onPress={() => selectOption(optionValue)}\n disabled={disabled}\n hitSlop={hitSlop}\n accessibilityRole=\"radio\"\n accessibilityLabel={label}\n accessibilityState={{ selected, disabled }}\n style={[\n styles.option,\n fullWidth\n ? styles.optionFullWidth\n : [styles.optionContentWidth, optionWidth > 0 && { width: optionWidth }],\n ]}\n >\n <View style={styles.optionContent}>\n {Icon ? <Icon size={ICON_SIZE} color={iconColor} /> : null}\n <Text\n numberOfLines={fullWidth ? 1 : undefined}\n style={[\n styles.label,\n !fullWidth && styles.contentWidthLabel,\n { color: labelColor },\n ]}\n >\n {label}\n </Text>\n </View>\n </Pressable>\n );\n })}\n </View>\n );\n },\n);\n\nconst styles = StyleSheet.create({\n base: {\n height: 44,\n flexDirection: \"row\",\n padding: TRACK_PADDING,\n gap: OPTION_GAP,\n borderRadius: 60,\n backgroundColor: colors.grey700,\n overflow: \"hidden\",\n },\n fullWidth: {\n width: \"100%\",\n alignSelf: \"stretch\",\n },\n contentWidth: {\n alignSelf: \"flex-start\",\n },\n disabled: {\n opacity: 0.6,\n },\n option: {\n zIndex: 1,\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"center\",\n paddingHorizontal: OPTION_HORIZONTAL_PADDING,\n borderRadius: 60,\n },\n optionContent: {\n maxWidth: \"100%\",\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: OPTION_CONTENT_GAP,\n },\n optionMeasurement: {\n position: \"absolute\",\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: OPTION_CONTENT_GAP,\n opacity: 0,\n },\n optionFullWidth: {\n flex: 1,\n minWidth: 0,\n },\n optionContentWidth: {\n minWidth: OPTION_MIN_WIDTH,\n },\n activeIndicator: {\n position: \"absolute\",\n top: TRACK_PADDING,\n left: TRACK_PADDING,\n height: 36,\n backgroundColor: colors.grey600,\n borderRadius: 60,\n },\n label: {\n ...segmentedToggleTypography,\n flexShrink: 1,\n },\n contentWidthLabel: {\n flexShrink: 0,\n },\n});\n","import {\n forwardRef,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ComponentRef,\n type ReactNode,\n} from \"react\";\nimport {\n Animated,\n Easing,\n Pressable,\n StyleSheet,\n View,\n type StyleProp,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport type { IconComponent } from \"../../icons\";\nimport { SidebarIcon } from \"../../icons\";\nimport { BrandLogo, MenuItem } from \"../../primitives\";\nimport { colors, fonts } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\nimport { AvatarSimple } from \"../AvatarSimple\";\n\nexport interface SidebarItem {\n /** Stable identity for React keys. */\n key: string;\n label: string;\n /** Icon component — colored by the sidebar based on active state. */\n icon: IconComponent;\n /** Marks the current route / selection. */\n active?: boolean;\n onPress?: () => void;\n}\n\nexport interface SidebarUser {\n name: string;\n email: string;\n imageUrl?: string | null;\n}\n\nexport interface SidebarProps extends Omit<ViewProps, \"style\" | \"children\"> {\n items: readonly SidebarItem[];\n user: SidebarUser;\n onLogOut?: () => void;\n /** Accessible name for the brand mark. Defaults to `\"Cortel Booking\"`. */\n logoAccessibilityLabel?: string;\n /** Accessible name for the nav landmark. Defaults to `\"Account navigation\"`. */\n navigationAccessibilityLabel?: string;\n /** Accessible label when the sidebar is expanded. Defaults to `\"Collapse sidebar\"`. */\n collapseAccessibilityLabel?: string;\n /** Accessible label when the sidebar is collapsed. Defaults to `\"Expand sidebar\"`. */\n expandAccessibilityLabel?: string;\n /** Accessible label for the logout control. Defaults to `\"Log out\"`. */\n logOutAccessibilityLabel?: string;\n collapsed?: boolean;\n defaultCollapsed?: boolean;\n onCollapsedChange?: (collapsed: boolean) => void;\n style?: StyleProp<ViewStyle>;\n className?: string;\n}\n\nconst SIDEBAR_WIDTH = 300;\nconst SIDEBAR_COLLAPSED_WIDTH = 72;\nconst HEADER_HEIGHT = 64;\nconst LOGO_WIDTH = 31;\nconst LOGO_HEIGHT = 44;\nconst TOGGLE_SIZE = 20;\nconst MENU_ICON_SIZE = 16;\nconst PROFILE_SECTION_HEIGHT = 80;\nconst SIDEBAR_TRANSITION_MS = 300;\n\nexport const Sidebar = forwardRef<ComponentRef<typeof View>, SidebarProps>(function Sidebar(\n {\n items,\n user,\n onLogOut,\n logoAccessibilityLabel = \"Cortel Booking\",\n navigationAccessibilityLabel = \"Account navigation\",\n collapseAccessibilityLabel = \"Collapse sidebar\",\n expandAccessibilityLabel = \"Expand sidebar\",\n logOutAccessibilityLabel = \"Log out\",\n collapsed: collapsedProp,\n defaultCollapsed = false,\n onCollapsedChange,\n style,\n className,\n ...rest\n },\n forwardedRef,\n) {\n const containerRef = useRef<ComponentRef<typeof View>>(null);\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n const [uncontrolledCollapsed, setUncontrolledCollapsed] = useState(defaultCollapsed);\n const collapsed = collapsedProp ?? uncontrolledCollapsed;\n const widthAnim = useRef(\n new Animated.Value(collapsed ? SIDEBAR_COLLAPSED_WIDTH : SIDEBAR_WIDTH),\n ).current;\n const labelOpacity = useRef(new Animated.Value(collapsed ? 0 : 1)).current;\n\n useApplyWebClassName(containerRef, className);\n\n useEffect(() => {\n const nextWidth = collapsed ? SIDEBAR_COLLAPSED_WIDTH : SIDEBAR_WIDTH;\n const nextOpacity = collapsed ? 0 : 1;\n const timing = {\n duration: SIDEBAR_TRANSITION_MS,\n easing: Easing.inOut(Easing.ease),\n useNativeDriver: false,\n };\n\n const widthAnimation = Animated.timing(widthAnim, { ...timing, toValue: nextWidth });\n const opacityAnimation = Animated.timing(labelOpacity, { ...timing, toValue: nextOpacity });\n\n Animated.parallel([widthAnimation, opacityAnimation]).start();\n return () => {\n widthAnimation.stop();\n opacityAnimation.stop();\n };\n }, [collapsed, labelOpacity, widthAnim]);\n\n const setCollapsed = (next: boolean) => {\n onCollapsedChange?.(next);\n if (collapsedProp === undefined) {\n setUncontrolledCollapsed(next);\n }\n };\n\n return (\n <Animated.View\n {...rest}\n ref={setContainerRef}\n style={[styles.root, { width: widthAnim }, style]}\n accessibilityRole=\"menu\"\n >\n <View style={[styles.header, collapsed ? styles.headerCollapsed : styles.headerExpanded]}>\n <Animated.View\n pointerEvents={collapsed ? \"none\" : \"auto\"}\n style={[\n styles.logoSlot,\n {\n opacity: labelOpacity,\n maxWidth: collapsed ? 0 : LOGO_WIDTH,\n },\n ]}\n accessibilityElementsHidden={collapsed}\n importantForAccessibility={collapsed ? \"no-hide-descendants\" : \"auto\"}\n >\n <BrandLogo\n accessibilityLabel={logoAccessibilityLabel}\n height={LOGO_HEIGHT}\n variant=\"brand\"\n width={LOGO_WIDTH}\n />\n </Animated.View>\n\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={collapsed ? expandAccessibilityLabel : collapseAccessibilityLabel}\n accessibilityState={{ expanded: !collapsed }}\n hitSlop={8}\n onPress={() => setCollapsed(!collapsed)}\n style={styles.toggleButton}\n >\n <SidebarIcon color={colors.grey100} size={TOGGLE_SIZE} strokeWidth={2} />\n </Pressable>\n </View>\n\n <View\n accessibilityLabel={navigationAccessibilityLabel}\n accessibilityRole=\"menu\"\n style={styles.nav}\n >\n {items.map((item) => {\n const isActive = Boolean(item.active);\n const iconColor = isActive ? colors.primary : colors.grey300;\n const Icon = item.icon;\n const iconNode: ReactNode = (\n <Icon color={iconColor} size={MENU_ICON_SIZE} strokeWidth={1.5} />\n );\n\n return (\n <MenuItem\n key={item.key}\n icon={iconNode}\n label={item.label}\n accessibilityLabel={item.label}\n backgroundColor={isActive ? colors.grey700 : \"transparent\"}\n hoverColor={colors.grey700}\n onPress={item.onPress}\n labelStyle={[\n styles.menuLabel,\n { color: isActive ? colors.white : colors.grey200 },\n collapsed ? styles.menuLabelCollapsed : styles.menuLabelExpanded,\n ]}\n style={[styles.menuItem, collapsed ? styles.menuItemCollapsed : null]}\n />\n );\n })}\n </View>\n\n <View style={[styles.footer, collapsed ? styles.footerCollapsed : styles.footerExpanded]}>\n <AvatarSimple\n name={user.name}\n email={user.email}\n imageUrl={user.imageUrl}\n onLogOut={onLogOut}\n logOutAccessibilityLabel={logOutAccessibilityLabel}\n compact={collapsed}\n />\n </View>\n </Animated.View>\n );\n});\n\nconst styles = StyleSheet.create({\n root: {\n height: \"100%\",\n flexShrink: 0,\n backgroundColor: colors.dark,\n borderRightWidth: 1,\n borderRightColor: colors.grey700,\n overflow: \"hidden\",\n },\n header: {\n zIndex: 1,\n height: HEADER_HEIGHT,\n width: \"100%\",\n flexDirection: \"row\",\n alignItems: \"center\",\n borderBottomWidth: 1,\n borderBottomColor: colors.grey700,\n backgroundColor: colors.dark,\n },\n headerExpanded: {\n justifyContent: \"space-between\",\n paddingHorizontal: 24,\n },\n headerCollapsed: {\n justifyContent: \"center\",\n paddingHorizontal: 0,\n },\n logoSlot: {\n minWidth: 0,\n height: LOGO_HEIGHT,\n flexShrink: 0,\n overflow: \"hidden\",\n },\n toggleButton: {\n width: TOGGLE_SIZE,\n height: TOGGLE_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n nav: {\n flex: 1,\n width: \"100%\",\n padding: 16,\n gap: 10,\n },\n menuItem: {\n gap: 8,\n },\n menuItemCollapsed: {\n gap: 0,\n },\n menuLabel: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"600\",\n lineHeight: 16,\n letterSpacing: 0,\n },\n menuLabelExpanded: {\n flexGrow: 1,\n flexShrink: 1,\n opacity: 1,\n },\n menuLabelCollapsed: {\n flexGrow: 0,\n flexShrink: 0,\n width: 0,\n maxWidth: 0,\n opacity: 0,\n overflow: \"hidden\",\n },\n footer: {\n height: PROFILE_SECTION_HEIGHT,\n width: \"100%\",\n flexShrink: 0,\n alignItems: \"center\",\n justifyContent: \"center\",\n paddingVertical: 12,\n },\n footerExpanded: {\n paddingHorizontal: 16,\n },\n footerCollapsed: {\n paddingHorizontal: 0,\n },\n});\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ComponentRef,\n} from \"react\";\nimport {\n Platform,\n Pressable,\n StyleSheet,\n Text,\n View,\n type PressableProps,\n type StyleProp,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport { ChevronDownIcon, GlobeIcon } from \"../../icons\";\nimport { colors, fonts, languageSwitcherTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport interface LanguageOption {\n /** Stable locale identifier, such as `hy`, `en`, or `ru`. */\n value: string;\n /** Short label shown in the trigger and menu. */\n label: string;\n}\n\nexport interface LanguageSwitcherProps extends Omit<ViewProps, \"style\" | \"children\"> {\n options?: readonly LanguageOption[];\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n disabled?: boolean;\n accessibilityLabel?: string;\n style?: StyleProp<ViewStyle>;\n className?: string;\n hitSlop?: PressableProps[\"hitSlop\"];\n}\n\nexport const defaultLanguageOptions = [\n { value: \"hy\", label: \"Հայ\" },\n { value: \"en\", label: \"Eng\" },\n { value: \"ru\", label: \"Рус\" },\n] as const satisfies readonly LanguageOption[];\n\nconst CONTROL_WIDTH = 90;\nconst CONTROL_HEIGHT = 35;\nconst ICON_SIZE = 16;\n\nexport const LanguageSwitcher = forwardRef<ComponentRef<typeof View>, LanguageSwitcherProps>(\n function LanguageSwitcher(\n {\n options = defaultLanguageOptions,\n value,\n defaultValue,\n onValueChange,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n disabled = false,\n accessibilityLabel = \"Language\",\n style,\n className,\n hitSlop = 8,\n ...rest\n },\n forwardedRef,\n ) {\n const wrapperRef = useRef<ComponentRef<typeof View>>(null);\n const triggerRef = useRef<ComponentRef<typeof Pressable>>(null);\n const setWrapperRef = useMemo(() => mergeRefs(wrapperRef, forwardedRef), [forwardedRef]);\n const firstValue = options[0]?.value ?? \"\";\n const isValueControlled = value !== undefined;\n const isOpenControlled = openProp !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue ?? firstValue);\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const [triggerHovered, setTriggerHovered] = useState(false);\n const [hoveredValue, setHoveredValue] = useState<string | null>(null);\n const selectedValue = isValueControlled ? value : uncontrolledValue;\n const isOpen = isOpenControlled ? openProp : uncontrolledOpen;\n const selectedOption =\n options.find((option) => option.value === selectedValue) ?? options[0] ?? null;\n\n useApplyWebClassName(wrapperRef, className?.trim() || undefined);\n\n const setOpen = useCallback(\n (next: boolean) => {\n if (disabled || next === isOpen) return;\n if (!isOpenControlled) setUncontrolledOpen(next);\n onOpenChange?.(next);\n },\n [disabled, isOpen, isOpenControlled, onOpenChange],\n );\n\n const closeAndFocusTrigger = useCallback(() => {\n setOpen(false);\n const node = triggerRef.current as unknown as { focus?: () => void } | null;\n node?.focus?.();\n }, [setOpen]);\n\n useEffect(() => {\n if (Platform.OS !== \"web\" || !isOpen) return;\n\n const handlePointerDown = (event: MouseEvent | TouchEvent) => {\n const wrapper = wrapperRef.current as unknown as {\n contains?: (node: Node) => boolean;\n } | null;\n const target = event.target;\n if (wrapper?.contains && target instanceof Node && !wrapper.contains(target)) {\n setOpen(false);\n }\n };\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n closeAndFocusTrigger();\n }\n };\n\n document.addEventListener(\"mousedown\", handlePointerDown);\n document.addEventListener(\"touchstart\", handlePointerDown);\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => {\n document.removeEventListener(\"mousedown\", handlePointerDown);\n document.removeEventListener(\"touchstart\", handlePointerDown);\n document.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [closeAndFocusTrigger, isOpen, setOpen]);\n\n const selectLanguage = (nextValue: string) => {\n if (nextValue !== selectedValue) {\n if (!isValueControlled) setUncontrolledValue(nextValue);\n onValueChange?.(nextValue);\n }\n closeAndFocusTrigger();\n };\n\n return (\n <View\n {...rest}\n ref={setWrapperRef}\n style={[styles.wrapper, isOpen && styles.wrapperOpen, disabled && styles.disabled, style]}\n >\n <Pressable\n ref={triggerRef}\n onPress={() => setOpen(!isOpen)}\n disabled={disabled || options.length === 0}\n hitSlop={hitSlop}\n accessibilityRole=\"button\"\n accessibilityLabel={accessibilityLabel}\n accessibilityState={{ disabled, expanded: isOpen }}\n onHoverIn={() => setTriggerHovered(true)}\n onHoverOut={() => setTriggerHovered(false)}\n style={({ pressed }) => [\n styles.trigger,\n (triggerHovered || pressed || isOpen) && styles.triggerActive,\n ]}\n >\n <GlobeIcon size={ICON_SIZE} color={colors.white} strokeWidth={2} />\n <Text style={styles.triggerLabel} numberOfLines={1}>\n {selectedOption?.label ?? \"\"}\n </Text>\n <View style={[styles.chevron, isOpen && styles.chevronOpen]}>\n <ChevronDownIcon size={ICON_SIZE} color={colors.white} strokeWidth={2} />\n </View>\n </Pressable>\n\n {isOpen && options.length > 0 ? (\n <View style={styles.menu} accessibilityRole=\"menu\">\n {options.map((option) => {\n const selected = option.value === selectedValue;\n return (\n <Pressable\n key={option.value}\n onPress={() => selectLanguage(option.value)}\n accessibilityRole=\"menuitem\"\n accessibilityLabel={option.label}\n accessibilityState={{ selected }}\n onHoverIn={() => setHoveredValue(option.value)}\n onHoverOut={() => setHoveredValue(null)}\n style={({ pressed }) => [\n styles.item,\n selected\n ? styles.itemSelected\n : (hoveredValue === option.value || pressed) && styles.itemHovered,\n ]}\n >\n <Text style={[styles.itemLabel, selected && styles.itemLabelSelected]}>\n {option.label}\n </Text>\n </Pressable>\n );\n })}\n </View>\n ) : null}\n </View>\n );\n },\n);\n\nconst styles = StyleSheet.create({\n wrapper: {\n position: \"relative\",\n width: CONTROL_WIDTH,\n alignSelf: \"flex-start\",\n },\n wrapperOpen: {\n zIndex: 20,\n },\n disabled: {\n opacity: 0.6,\n },\n trigger: {\n width: CONTROL_WIDTH,\n height: CONTROL_HEIGHT,\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 8,\n padding: 8,\n borderRadius: 12,\n backgroundColor: \"transparent\",\n },\n triggerActive: {\n backgroundColor: colors.whiteAlpha6,\n },\n triggerLabel: {\n ...languageSwitcherTypography,\n ...Platform.select({ web: { fontFamily: `${fonts.sans}, sans-serif` } }),\n minWidth: 0,\n flex: 1,\n color: colors.white,\n },\n chevron: {\n width: ICON_SIZE,\n height: ICON_SIZE,\n flexShrink: 0,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n chevronOpen: {\n transform: [{ rotate: \"180deg\" }],\n },\n menu: {\n position: \"absolute\",\n top: CONTROL_HEIGHT + 8,\n left: 0,\n width: CONTROL_WIDTH,\n padding: 8,\n gap: 8,\n borderRadius: 12,\n backgroundColor: colors.whiteAlpha6,\n overflow: \"hidden\",\n },\n item: {\n height: CONTROL_HEIGHT,\n alignItems: \"center\",\n justifyContent: \"center\",\n paddingVertical: 8,\n paddingHorizontal: 12,\n borderRadius: 8,\n },\n itemHovered: {\n backgroundColor: colors.whiteAlpha6,\n },\n itemSelected: {\n backgroundColor: colors.whiteAlpha6,\n },\n itemLabel: {\n ...languageSwitcherTypography,\n ...Platform.select({ web: { fontFamily: `${fonts.sans}, sans-serif` } }),\n color: colors.white,\n },\n itemLabelSelected: {\n color: colors.primary,\n },\n});\n","import { forwardRef, useMemo, useRef, type ComponentRef } from \"react\";\nimport {\n StyleSheet,\n Text,\n View,\n type StyleProp,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport type { IconComponent, IconProps } from \"../../icons\";\nimport { colors, statCardTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport interface StatCardProps extends Omit<ViewProps, \"style\" | \"children\"> {\n label: string;\n icon: IconComponent;\n iconProps?: Omit<IconProps, \"size\">;\n iconSize?: number;\n style?: StyleProp<ViewStyle>;\n className?: string;\n}\n\n/** Default matches Figma users-alt vector width (W 25.63181). */\nconst ICON_SIZE = 25.63181;\n\nexport const StatCard = forwardRef<ComponentRef<typeof View>, StatCardProps>(function StatCard(\n {\n label,\n icon: Icon,\n iconProps,\n iconSize = ICON_SIZE,\n style,\n className,\n accessibilityLabel,\n ...rest\n },\n forwardedRef,\n) {\n const containerRef = useRef<ComponentRef<typeof View>>(null);\n const resolvedClassName = className?.trim() || undefined;\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n\n useApplyWebClassName(containerRef, resolvedClassName);\n\n return (\n <View\n {...rest}\n ref={setContainerRef}\n style={[styles.base, style]}\n accessibilityRole=\"text\"\n accessibilityLabel={accessibilityLabel ?? label}\n >\n <Icon {...iconProps} size={iconSize} color={iconProps?.color ?? colors.white} />\n <Text style={styles.label}>{label}</Text>\n </View>\n );\n});\n\nconst styles = StyleSheet.create({\n base: {\n width: 204.5,\n minHeight: 114,\n padding: 24,\n gap: 16,\n borderRadius: 20,\n backgroundColor: colors.grey750,\n },\n label: {\n ...statCardTypography,\n color: colors.whiteAlpha86,\n },\n});\n","import { forwardRef, useMemo, useRef, type ComponentRef, type ReactNode } from \"react\";\nimport {\n Platform,\n StyleSheet,\n Text,\n TouchableOpacity,\n View,\n type GestureResponderEvent,\n type StyleProp,\n type TextStyle,\n type TouchableOpacityProps,\n type ViewStyle,\n} from \"react-native\";\nimport { ArrowRightIcon } from \"../../icons\";\nimport { buttonTypography, colors } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport type ButtonVariant = \"primary\" | \"secondary\";\nexport type ButtonSize = \"lg\" | \"sm\";\n\nexport interface ButtonProps extends Omit<\n TouchableOpacityProps,\n \"onPress\" | \"disabled\" | \"style\" | \"children\"\n> {\n title?: string;\n children?: ReactNode;\n onPress: (event: GestureResponderEvent) => void;\n disabled?: boolean;\n variant?: ButtonVariant;\n size?: ButtonSize;\n showIcon?: boolean;\n icon?: ReactNode;\n style?: StyleProp<ViewStyle>;\n textStyle?: StyleProp<TextStyle>;\n className?: string;\n textClassName?: string;\n}\n\ntype VariantStyleSet = {\n backgroundColor: string;\n textColor: string;\n iconBadgeBackgroundColor: string;\n iconColor: string;\n};\n\nconst variantConfig: Record<ButtonVariant, VariantStyleSet> = {\n primary: {\n backgroundColor: colors.primary,\n textColor: colors.white,\n iconBadgeBackgroundColor: colors.white,\n iconColor: colors.primary,\n },\n secondary: {\n backgroundColor: colors.grey500,\n textColor: colors.white,\n iconBadgeBackgroundColor: colors.grey600,\n iconColor: colors.white,\n },\n};\n\nconst sizeConfig = {\n lg: {\n minHeight: 44,\n borderRadius: 40,\n paddingVertical: 4,\n paddingLeft: 20,\n paddingRightWithIcon: 4,\n paddingRight: 20,\n gap: 20,\n text: buttonTypography.lg,\n iconContainerSize: 36,\n iconSize: 20,\n },\n sm: {\n minHeight: 32,\n borderRadius: 40,\n paddingVertical: 6,\n paddingLeft: 12,\n paddingRightWithIcon: 4,\n paddingRight: 12,\n gap: 12,\n text: buttonTypography.sm,\n iconContainerSize: 20,\n iconSize: 12,\n },\n} as const satisfies Record<ButtonSize, Record<string, unknown>>;\n\nexport const Button = forwardRef<ComponentRef<typeof TouchableOpacity>, ButtonProps>(\n function Button(\n {\n title,\n children,\n onPress,\n disabled = false,\n variant = \"primary\",\n size = \"lg\",\n showIcon = false,\n icon,\n style,\n textStyle,\n className,\n textClassName,\n accessibilityLabel,\n ...rest\n },\n forwardedRef,\n ) {\n const containerRef = useRef<ComponentRef<typeof TouchableOpacity>>(null);\n const textRef = useRef<ComponentRef<typeof Text>>(null);\n const preset = variantConfig[variant];\n const metrics = sizeConfig[size];\n\n const label = typeof children !== \"undefined\" ? children : title;\n const hasCustomChildren = typeof children !== \"undefined\";\n const customIcon = icon != null && typeof icon !== \"boolean\" ? icon : undefined;\n const hasIcon = showIcon || icon === true || customIcon != null;\n const resolvedContainerClassName = className?.trim() || undefined;\n const resolvedAccessibilityLabel =\n accessibilityLabel ?? (typeof label === \"string\" ? label : undefined);\n\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n\n useApplyWebClassName(containerRef, resolvedContainerClassName);\n useApplyWebClassName(textRef, textClassName);\n\n const iconNode = customIcon ?? (\n <ArrowRightIcon size={metrics.iconSize} color={preset.iconColor} />\n );\n\n const containerStyle = [\n styles.base,\n {\n minHeight: metrics.minHeight,\n borderRadius: metrics.borderRadius,\n backgroundColor: preset.backgroundColor,\n paddingTop: metrics.paddingVertical,\n paddingBottom: metrics.paddingVertical,\n paddingLeft: metrics.paddingLeft,\n paddingRight: hasIcon ? metrics.paddingRightWithIcon : metrics.paddingRight,\n gap: hasIcon ? metrics.gap : 0,\n },\n hasIcon ? styles.contentWithIcon : styles.contentWithoutIcon,\n disabled && styles.disabled,\n style,\n ];\n\n const labelStyle = [\n styles.label,\n metrics.text,\n { color: preset.textColor },\n Platform.OS === \"android\" ? styles.labelAndroid : null,\n !hasIcon && styles.labelCentered,\n textStyle,\n ];\n\n return (\n <TouchableOpacity\n {...rest}\n ref={setContainerRef}\n style={containerStyle}\n onPress={onPress}\n disabled={disabled}\n activeOpacity={0.7}\n accessibilityRole=\"button\"\n accessibilityLabel={resolvedAccessibilityLabel}\n accessibilityState={{ disabled }}\n >\n {hasCustomChildren ? (\n children\n ) : (\n <Text ref={textRef} style={labelStyle}>\n {label}\n </Text>\n )}\n\n {hasIcon ? (\n <View\n style={[\n styles.iconContainer,\n {\n width: metrics.iconContainerSize,\n height: metrics.iconContainerSize,\n borderRadius: metrics.iconContainerSize / 2,\n backgroundColor: preset.iconBadgeBackgroundColor,\n },\n ]}\n >\n {iconNode}\n </View>\n ) : null}\n </TouchableOpacity>\n );\n },\n);\n\nconst styles = StyleSheet.create({\n base: {\n flexDirection: \"row\",\n alignItems: \"center\",\n alignSelf: \"flex-start\",\n borderWidth: 0,\n },\n disabled: {\n opacity: 0.6,\n },\n contentWithIcon: {\n justifyContent: \"space-between\",\n },\n contentWithoutIcon: {\n justifyContent: \"center\",\n },\n label: {},\n labelAndroid: {\n includeFontPadding: false,\n },\n labelCentered: {\n textAlign: \"center\",\n },\n iconContainer: {\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n});\n","import { forwardRef, useMemo, useRef, useState, type ComponentRef, type ReactNode } from \"react\";\nimport {\n Pressable,\n StyleSheet,\n Text,\n View,\n type PressableProps,\n type StyleProp,\n type TextStyle,\n type ViewStyle,\n} from \"react-native\";\nimport { CheckIcon } from \"../../icons\";\nimport { colors, inputTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport type CheckboxVariant = \"default\" | \"light\";\n\nexport interface CheckboxProps extends Omit<\n PressableProps,\n \"onPress\" | \"disabled\" | \"style\" | \"children\" | \"hitSlop\"\n> {\n value?: boolean;\n defaultValue?: boolean;\n onValueChange?: (value: boolean) => void;\n disabled?: boolean;\n variant?: CheckboxVariant;\n label?: string;\n children?: ReactNode;\n style?: StyleProp<ViewStyle>;\n labelStyle?: StyleProp<TextStyle>;\n className?: string;\n hitSlop?: PressableProps[\"hitSlop\"];\n}\n\nconst BOX_SIZE = 20;\nconst BOX_RADIUS = 6;\nconst CHECK_SIZE = 12;\nconst CHECK_STROKE = 2.5;\n\nconst variantChrome: Record<CheckboxVariant, { backgroundColor: string; borderColor: string }> = {\n default: {\n backgroundColor: colors.dark,\n borderColor: colors.grey700,\n },\n light: {\n backgroundColor: colors.grey700,\n borderColor: colors.grey500,\n },\n};\n\nexport const Checkbox = forwardRef<ComponentRef<typeof Pressable>, CheckboxProps>(function Checkbox(\n {\n value,\n defaultValue = false,\n onValueChange,\n disabled = false,\n variant = \"default\",\n label,\n children,\n style,\n labelStyle,\n className,\n hitSlop = 8,\n accessibilityLabel,\n ...rest\n },\n forwardedRef,\n) {\n const containerRef = useRef<ComponentRef<typeof Pressable>>(null);\n const isControlled = typeof value === \"boolean\";\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const isActive = isControlled ? value : uncontrolledValue;\n\n const chrome = variantChrome[variant];\n const labelContent = children ?? label;\n const resolvedAccessibilityLabel =\n accessibilityLabel ?? (typeof labelContent === \"string\" ? labelContent : undefined);\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n\n useApplyWebClassName(containerRef, className);\n\n const handlePress = () => {\n if (disabled) return;\n const next = !isActive;\n if (!isControlled) setUncontrolledValue(next);\n onValueChange?.(next);\n };\n\n return (\n <Pressable\n {...rest}\n ref={setContainerRef}\n onPress={handlePress}\n disabled={disabled}\n hitSlop={hitSlop}\n accessibilityRole=\"checkbox\"\n accessibilityLabel={resolvedAccessibilityLabel}\n accessibilityState={{ checked: isActive, disabled }}\n style={[styles.root, disabled && styles.disabled, style]}\n >\n <View\n style={[\n styles.box,\n {\n backgroundColor: chrome.backgroundColor,\n borderColor: chrome.borderColor,\n },\n ]}\n >\n {isActive ? (\n <CheckIcon size={CHECK_SIZE} color={colors.primary} strokeWidth={CHECK_STROKE} />\n ) : null}\n </View>\n\n {labelContent != null && labelContent !== false ? (\n typeof labelContent === \"string\" || typeof labelContent === \"number\" ? (\n <Text style={[styles.label, labelStyle]}>{labelContent}</Text>\n ) : (\n labelContent\n )\n ) : null}\n </Pressable>\n );\n});\n\nconst styles = StyleSheet.create({\n root: {\n flexDirection: \"row\",\n alignItems: \"center\",\n alignSelf: \"flex-start\",\n gap: 10,\n },\n disabled: {\n opacity: 0.5,\n },\n box: {\n width: BOX_SIZE,\n height: BOX_SIZE,\n borderRadius: BOX_RADIUS,\n borderWidth: 1,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n label: {\n ...inputTypography.field,\n color: colors.white,\n },\n});\n","/**\n * Small, dependency-free date helpers for the DatePicker component. These only\n * ever operate on local calendar days (time-of-day is ignored/zeroed) so\n * comparisons stay simple and predictable across the whole component.\n */\n\nexport function startOfDay(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n}\n\nexport function isSameDay(a: Date | null | undefined, b: Date | null | undefined): boolean {\n if (a == null || b == null) return false;\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nexport function isSameMonth(a: Date, b: Date): boolean {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();\n}\n\nexport function addMonths(date: Date, amount: number): Date {\n return new Date(date.getFullYear(), date.getMonth() + amount, 1);\n}\n\nexport function isBefore(a: Date, b: Date): boolean {\n return startOfDay(a).getTime() < startOfDay(b).getTime();\n}\n\nexport function isAfter(a: Date, b: Date): boolean {\n return startOfDay(a).getTime() > startOfDay(b).getTime();\n}\n\nexport function isWithinRange(date: Date, start: Date, end: Date): boolean {\n const time = startOfDay(date).getTime();\n return time >= startOfDay(start).getTime() && time <= startOfDay(end).getTime();\n}\n\nexport function clampDate(date: Date, min?: Date | null, max?: Date | null): Date {\n if (min && isBefore(date, min)) return startOfDay(min);\n if (max && isAfter(date, max)) return startOfDay(max);\n return startOfDay(date);\n}\n\nexport function isDateDisabled(date: Date, min?: Date | null, max?: Date | null): boolean {\n if (min && isBefore(date, min)) return true;\n if (max && isAfter(date, max)) return true;\n return false;\n}\n\n/** Zero-padded \"DD.MM.YYYY\" — matches the Figma reference formatting. */\nexport function formatDate(date: Date): string {\n const day = String(date.getDate()).padStart(2, \"0\");\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\n return `${day}.${month}.${date.getFullYear()}`;\n}\n\n/**\n * Builds a 6×7 grid of calendar days for the month containing `monthDate`,\n * including the leading/trailing days from adjacent months needed to fill\n * whole weeks. `weekStartsOn` follows the JS `Date#getDay()` convention\n * (0 = Sunday, 1 = Monday, ...).\n */\nexport function getMonthMatrix(monthDate: Date, weekStartsOn: 0 | 1 = 1): Date[][] {\n const year = monthDate.getFullYear();\n const month = monthDate.getMonth();\n const firstOfMonth = new Date(year, month, 1);\n\n const firstWeekday = firstOfMonth.getDay();\n const leadingDays = (firstWeekday - weekStartsOn + 7) % 7;\n const gridStart = new Date(year, month, 1 - leadingDays);\n\n const weeks: Date[][] = [];\n let cursor = gridStart;\n for (let week = 0; week < 6; week += 1) {\n const days: Date[] = [];\n for (let day = 0; day < 7; day += 1) {\n days.push(cursor);\n cursor = new Date(cursor.getFullYear(), cursor.getMonth(), cursor.getDate() + 1);\n }\n weeks.push(days);\n }\n return weeks;\n}\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ComponentRef,\n} from \"react\";\nimport {\n Platform,\n Pressable,\n StyleSheet,\n Text,\n View,\n type StyleProp,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport { CalendarOutlineIcon, ChevronLeftIcon, ClockFilledIcon } from \"../../icons\";\nimport { colors, datePickerTypography } from \"../../theme\";\nimport {\n addMonths,\n formatDate,\n getMonthMatrix,\n isBefore,\n isDateDisabled,\n isSameDay,\n isSameMonth,\n isWithinRange,\n startOfDay,\n} from \"../../utils/dateUtils\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\n/** Monday-first — override via `monthNames` for other locales. */\nconst DEFAULT_MONTH_NAMES = [\n \"Հունվար\",\n \"Փետրվար\",\n \"Մարտ\",\n \"Ապրիլ\",\n \"Մայիս\",\n \"Հունիս\",\n \"Հուլիս\",\n \"Օգոստոս\",\n \"Սեպտեմբեր\",\n \"Հոկտեմբեր\",\n \"Նոյեմբեր\",\n \"Դեկտեմբեր\",\n];\n/** Monday-first — override via `weekdayLabels` for other locales. */\nconst DEFAULT_WEEKDAY_LABELS = [\"ԵՐ\", \"ԵՔ\", \"ՉՐ\", \"ՀՆ\", \"ՈՒՐ\", \"ՇԲ\", \"ԿՐ\"];\n\nexport type DateRange = { start: Date | null; end: Date | null };\nexport type DatePickerVariant = \"default\" | \"range-horizontal\" | \"range-vertical\";\n\nconst EMPTY_RANGE: DateRange = { start: null, end: null };\n\ntype DatePickerBaseProps = Omit<ViewProps, \"style\" | \"children\"> & {\n placeholder?: string;\n /** Trigger presentation. Range variants display separate start/end fields. */\n variant?: DatePickerVariant;\n /** Labels shown above the start/end values in range trigger variants. */\n startLabel?: string;\n endLabel?: string;\n /** Optional supplementary times shown beside the start/end dates. */\n startTime?: string;\n endTime?: string;\n /** Per-field placeholders used by range trigger variants. */\n startPlaceholder?: string;\n endPlaceholder?: string;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n disabled?: boolean;\n /**\n * When true (default), the calendar closes after a complete selection —\n * a single date, or both ends of a range. Set false to keep it open.\n */\n closeOnSelect?: boolean;\n minDate?: Date;\n maxDate?: Date;\n /** First visible month when the calendar opens; defaults to the selected value's month, else today. */\n defaultVisibleMonth?: Date;\n /** Monday-first full month names. Defaults to Armenian. */\n monthNames?: string[];\n /** Weekday abbreviations, ordered starting from `weekStartsOn`. Defaults to Armenian, Monday-first. */\n weekdayLabels?: string[];\n /** Formats a selected date for the trigger and day accessibility labels. Defaults to \"DD.MM.YYYY\". */\n formatValue?: (date: Date) => string;\n /** First day of the week column (0 = Sunday, 1 = Monday). Defaults to Monday. */\n weekStartsOn?: 0 | 1;\n /** Styles the calendar popup independently from the trigger width. */\n calendarStyle?: StyleProp<ViewStyle>;\n style?: StyleProp<ViewStyle>;\n className?: string;\n};\n\nexport type DatePickerSingleProps = DatePickerBaseProps & {\n range?: false;\n value?: Date | null;\n defaultValue?: Date | null;\n onValueChange?: (value: Date | null) => void;\n};\n\nexport type DatePickerRangeProps = DatePickerBaseProps & {\n range: true;\n value?: DateRange;\n defaultValue?: DateRange;\n onValueChange?: (value: DateRange) => void;\n};\n\nexport type DatePickerProps = DatePickerSingleProps | DatePickerRangeProps;\n\nconst DEFAULT_WIDTH = 380;\nconst RANGE_TRIGGER_WIDTH = 382;\nconst TRIGGER_HEIGHT = 44;\nconst TRIGGER_RADIUS = 60;\nconst MENU_RADIUS = 20;\nconst ICON_SIZE = 20;\nconst NAV_ICON_SIZE = 20;\nconst DAY_CELL_HEIGHT = 44;\nconst DAY_CIRCLE_SIZE = 44;\n\nfunction RangeTriggerField({\n label,\n value,\n time,\n}: {\n label: string;\n value: string;\n time?: string;\n}) {\n return (\n <View style={styles.rangeField}>\n <Text numberOfLines={1} style={styles.rangeLabel}>\n {label}\n </Text>\n <View style={styles.rangeValueRow}>\n <Text numberOfLines={1} style={styles.rangeDate}>\n {value}\n </Text>\n {time ? (\n <View style={styles.rangeTimeWrap}>\n <ClockFilledIcon color={colors.lightGrey} size={16} />\n <Text style={styles.rangeTime}>{time}</Text>\n </View>\n ) : null}\n </View>\n </View>\n );\n}\n\nexport const DatePicker = forwardRef<ComponentRef<typeof View>, DatePickerProps>(\n function DatePicker(props, forwardedRef) {\n const {\n placeholder = \"Select date\",\n variant = \"default\",\n startLabel = \"Start\",\n endLabel = \"End\",\n startTime,\n endTime,\n startPlaceholder = placeholder,\n endPlaceholder = placeholder,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n disabled = false,\n closeOnSelect = true,\n minDate,\n maxDate,\n defaultVisibleMonth,\n monthNames = DEFAULT_MONTH_NAMES,\n weekdayLabels = DEFAULT_WEEKDAY_LABELS,\n formatValue = formatDate,\n weekStartsOn = 1,\n calendarStyle,\n style,\n className,\n accessibilityLabel,\n // Pulled out only to keep them off `rest` (which is spread onto the root View);\n // the real values are read from `props` directly below to preserve discriminated typing.\n range: _range,\n value: _value,\n defaultValue: _defaultValue,\n onValueChange: _onValueChange,\n ...rest\n } = props;\n\n const isRange = props.range === true;\n const valueProp = props.value;\n const rootRef = useRef<ComponentRef<typeof View>>(null);\n const triggerRef = useRef<ComponentRef<typeof Pressable>>(null);\n const setRootRef = useMemo(() => mergeRefs(rootRef, forwardedRef), [forwardedRef]);\n\n const isOpenControlled = typeof openProp === \"boolean\";\n const isValueControlled = valueProp !== undefined;\n\n const [uncontrolledSingle, setUncontrolledSingle] = useState<Date | null>(\n !isRange ? ((props as DatePickerSingleProps).defaultValue ?? null) : null,\n );\n const [uncontrolledRange, setUncontrolledRange] = useState<DateRange>(\n isRange ? ((props as DatePickerRangeProps).defaultValue ?? EMPTY_RANGE) : EMPTY_RANGE,\n );\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const [hoveredDayKey, setHoveredDayKey] = useState<number | null>(null);\n\n const rangeValue: DateRange = isRange\n ? isValueControlled\n ? ((valueProp as DateRange) ?? EMPTY_RANGE)\n : uncontrolledRange\n : EMPTY_RANGE;\n const singleValue: Date | null = !isRange\n ? isValueControlled\n ? ((valueProp as Date | null) ?? null)\n : uncontrolledSingle\n : null;\n\n const isOpen = isOpenControlled ? openProp : uncontrolledOpen;\n\n const [visibleMonth, setVisibleMonth] = useState(() => {\n const anchor =\n defaultVisibleMonth ?? (isRange ? rangeValue.start : singleValue) ?? new Date();\n return new Date(anchor.getFullYear(), anchor.getMonth(), 1);\n });\n\n useApplyWebClassName(rootRef, className);\n\n const setOpen = useCallback(\n (next: boolean) => {\n if (!isOpenControlled) setUncontrolledOpen(next);\n onOpenChange?.(next);\n if (next) {\n const anchor = (isRange ? rangeValue.start : singleValue) ?? new Date();\n setVisibleMonth(new Date(anchor.getFullYear(), anchor.getMonth(), 1));\n } else {\n setHoveredDayKey(null);\n }\n },\n [isOpenControlled, isRange, onOpenChange, rangeValue.start, singleValue],\n );\n\n // Close on outside click (web only; native has no document-level events).\n useEffect(() => {\n if (Platform.OS !== \"web\" || !isOpen) return;\n\n const handlePointerDown = (event: MouseEvent | TouchEvent) => {\n const root = rootRef.current as unknown as { contains?: (node: Node) => boolean } | null;\n const target = event.target;\n if (root?.contains && target instanceof Node && !root.contains(target)) {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handlePointerDown);\n document.addEventListener(\"touchstart\", handlePointerDown);\n return () => {\n document.removeEventListener(\"mousedown\", handlePointerDown);\n document.removeEventListener(\"touchstart\", handlePointerDown);\n };\n }, [isOpen, setOpen]);\n\n const focusTrigger = useCallback(() => {\n const node = triggerRef.current as unknown as { focus?: () => void } | null;\n node?.focus?.();\n }, []);\n\n const closeAndFocusTrigger = useCallback(() => {\n setOpen(false);\n focusTrigger();\n }, [focusTrigger, setOpen]);\n\n // Escape closes the calendar and returns focus to the trigger (web only).\n useEffect(() => {\n if (Platform.OS !== \"web\" || !isOpen) return;\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n closeAndFocusTrigger();\n }\n };\n\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [isOpen, closeAndFocusTrigger]);\n\n const handleTriggerPress = () => {\n if (disabled) return;\n setOpen(!isOpen);\n };\n\n const handleDayPress = useCallback(\n (day: Date) => {\n if (disabled || isDateDisabled(day, minDate, maxDate)) return;\n const picked = startOfDay(day);\n\n if (!isRange) {\n if (!isValueControlled) setUncontrolledSingle(picked);\n (props as DatePickerSingleProps).onValueChange?.(picked);\n if (closeOnSelect) setOpen(false);\n return;\n }\n\n const { start, end } = rangeValue;\n const startingNewRange = !start || (start && end);\n const nextRange: DateRange = startingNewRange\n ? { start: picked, end: null }\n : isBefore(picked, start)\n ? { start: picked, end: null }\n : { start, end: picked };\n\n if (!isValueControlled) setUncontrolledRange(nextRange);\n (props as DatePickerRangeProps).onValueChange?.(nextRange);\n if (closeOnSelect && nextRange.start && nextRange.end) setOpen(false);\n },\n [\n closeOnSelect,\n disabled,\n isRange,\n isValueControlled,\n maxDate,\n minDate,\n props,\n rangeValue,\n setOpen,\n ],\n );\n\n const handlePrevMonth = () => setVisibleMonth((current) => addMonths(current, -1));\n const handleNextMonth = () => setVisibleMonth((current) => addMonths(current, 1));\n\n const weeks = useMemo(\n () => getMonthMatrix(visibleMonth, weekStartsOn),\n [visibleMonth, weekStartsOn],\n );\n const today = useMemo(() => startOfDay(new Date()), []);\n\n const hasValue = isRange ? rangeValue.start != null : singleValue != null;\n const triggerLabel = isRange\n ? rangeValue.start && rangeValue.end\n ? `${formatValue(rangeValue.start)} - ${formatValue(rangeValue.end)}`\n : rangeValue.start\n ? `${formatValue(rangeValue.start)} - ...`\n : placeholder\n : singleValue\n ? formatValue(singleValue)\n : placeholder;\n\n const usesRangeTrigger = isRange && variant !== \"default\";\n const usesVerticalRangeTrigger = usesRangeTrigger && variant === \"range-vertical\";\n const triggerBorderColor = usesRangeTrigger\n ? isOpen\n ? colors.primary\n : colors.grey500\n : isOpen\n ? colors.primaryMuted\n : colors.grey700;\n const triggerTextColor = hasValue ? colors.white : colors.grey100;\n const startValue = rangeValue.start ? formatValue(rangeValue.start) : startPlaceholder;\n const endValue = rangeValue.end ? formatValue(rangeValue.end) : endPlaceholder;\n\n const resolvedAccessibilityLabel = accessibilityLabel ?? placeholder;\n\n return (\n <View\n {...rest}\n ref={setRootRef}\n style={[\n styles.root,\n usesRangeTrigger && styles.rangeRoot,\n isOpen && styles.rootOpen,\n disabled && styles.disabled,\n style,\n ]}\n accessibilityState={{ disabled, expanded: isOpen }}\n >\n <View style={[styles.triggerWrap, isOpen && styles.triggerWrapOpen]}>\n <Pressable\n ref={triggerRef}\n onPress={handleTriggerPress}\n disabled={disabled}\n accessibilityRole=\"button\"\n accessibilityLabel={resolvedAccessibilityLabel}\n accessibilityState={{ disabled, expanded: isOpen }}\n style={[\n styles.trigger,\n usesRangeTrigger && styles.rangeTrigger,\n usesRangeTrigger &&\n (usesVerticalRangeTrigger\n ? styles.rangeTriggerVertical\n : styles.rangeTriggerHorizontal),\n {\n borderColor: triggerBorderColor,\n backgroundColor: usesRangeTrigger ? \"transparent\" : colors.grey700,\n },\n ]}\n >\n {usesRangeTrigger ? (\n <>\n <RangeTriggerField label={startLabel} time={startTime} value={startValue} />\n <View\n style={\n usesVerticalRangeTrigger\n ? styles.rangeDividerVertical\n : styles.rangeDividerHorizontal\n }\n />\n <RangeTriggerField label={endLabel} time={endTime} value={endValue} />\n </>\n ) : (\n <>\n <Text style={[styles.triggerText, { color: triggerTextColor }]} numberOfLines={1}>\n {triggerLabel}\n </Text>\n <View style={styles.iconSlot}>\n <CalendarOutlineIcon size={ICON_SIZE} color={colors.grey100} />\n </View>\n </>\n )}\n </Pressable>\n\n {isOpen ? (\n <View style={[styles.menu, usesRangeTrigger && styles.rangeMenu, calendarStyle]}>\n <View style={styles.calendarHeader}>\n <Pressable\n onPress={handlePrevMonth}\n hitSlop={8}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Previous month\"\n style={styles.navButton}\n >\n <ChevronLeftIcon size={NAV_ICON_SIZE} color={colors.white} />\n </Pressable>\n\n <Text style={styles.monthHeading}>\n {monthNames[visibleMonth.getMonth()]} {visibleMonth.getFullYear()}\n </Text>\n\n <Pressable\n onPress={handleNextMonth}\n hitSlop={8}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Next month\"\n style={styles.navButton}\n >\n <View style={styles.navIconMirror}>\n <ChevronLeftIcon size={NAV_ICON_SIZE} color={colors.white} />\n </View>\n </Pressable>\n </View>\n\n <View>\n <View style={styles.weekdayRow}>\n {weekdayLabels.map((weekdayLabel, index) => (\n <View key={`${weekdayLabel}-${index}`} style={styles.dayCellWrap}>\n <Text style={styles.weekdayText}>{weekdayLabel}</Text>\n </View>\n ))}\n </View>\n\n {weeks.map((week, weekIndex) => {\n let rangeHighlightStyle: { left: `${number}%`; width: `${number}%` } | null =\n null;\n\n if (isRange && rangeValue.start && rangeValue.end) {\n const rangeIndices = week.reduce<number[]>((acc, day, index) => {\n if (isWithinRange(day, rangeValue.start as Date, rangeValue.end as Date)) {\n acc.push(index);\n }\n return acc;\n }, []);\n\n if (rangeIndices.length > 0) {\n const first = rangeIndices[0];\n const last = rangeIndices[rangeIndices.length - 1];\n const startsHere = isSameDay(week[first], rangeValue.start);\n const endsHere = isSameDay(week[last], rangeValue.end);\n // Half a cell so the bar meets the circle center, not past it.\n const cellPct = 100 / 7;\n const halfCellPct = cellPct / 2;\n let leftPct = first * cellPct;\n let widthPct = (last - first + 1) * cellPct;\n if (startsHere) {\n leftPct += halfCellPct;\n widthPct -= halfCellPct;\n }\n if (endsHere) {\n widthPct -= halfCellPct;\n }\n // Same-day range: only the circle, no connector bar.\n if (widthPct > 0) {\n rangeHighlightStyle = {\n left: `${leftPct}%`,\n width: `${widthPct}%`,\n };\n }\n }\n }\n\n return (\n <View\n key={weekIndex}\n style={[styles.weekRow, weekIndex > 0 && styles.weekRowSpaced]}\n >\n {rangeHighlightStyle ? (\n <View\n pointerEvents=\"none\"\n style={[styles.rangeHighlight, rangeHighlightStyle]}\n />\n ) : null}\n\n {week.map((day, dayIndex) => {\n const inCurrentMonth = isSameMonth(day, visibleMonth);\n const isToday = isSameDay(day, today);\n const isSelectedSingle = !isRange && isSameDay(day, singleValue);\n const isRangeStart = isRange && isSameDay(day, rangeValue.start);\n const isRangeEnd = isRange && isSameDay(day, rangeValue.end);\n const isSelectedEndpoint = isSelectedSingle || isRangeStart || isRangeEnd;\n const dayDisabled = disabled || isDateDisabled(day, minDate, maxDate);\n const dayKey = startOfDay(day).getTime();\n const isHovered =\n !dayDisabled && !isSelectedEndpoint && hoveredDayKey === dayKey;\n\n const dayTextColor = isSelectedEndpoint\n ? colors.white\n : dayDisabled\n ? colors.grey400\n : isToday\n ? colors.primary\n : !inCurrentMonth\n ? colors.grey300\n : colors.white;\n\n return (\n <Pressable\n key={dayIndex}\n onPress={() => handleDayPress(day)}\n disabled={dayDisabled}\n onHoverIn={() => setHoveredDayKey(dayKey)}\n onHoverOut={() =>\n setHoveredDayKey((current) => (current === dayKey ? null : current))\n }\n onPressIn={() => setHoveredDayKey(dayKey)}\n onPressOut={() =>\n setHoveredDayKey((current) => (current === dayKey ? null : current))\n }\n style={styles.dayCellWrap}\n accessibilityRole=\"button\"\n accessibilityLabel={formatValue(day)}\n accessibilityState={{\n disabled: dayDisabled,\n selected: isSelectedEndpoint,\n }}\n >\n <View\n style={[\n styles.dayCircle,\n isSelectedEndpoint && styles.dayCircleSelected,\n isHovered && styles.dayCircleHovered,\n ]}\n >\n <Text style={[styles.dayText, { color: dayTextColor }]}>\n {day.getDate()}\n </Text>\n </View>\n {isToday && !isSelectedEndpoint ? (\n <View style={styles.todayDot} />\n ) : null}\n </Pressable>\n );\n })}\n </View>\n );\n })}\n </View>\n </View>\n ) : null}\n </View>\n </View>\n );\n },\n);\n\nconst styles = StyleSheet.create({\n root: {\n width: DEFAULT_WIDTH,\n gap: 8,\n alignSelf: \"flex-start\",\n },\n rootOpen: {\n zIndex: 30,\n },\n rangeRoot: {\n width: RANGE_TRIGGER_WIDTH,\n },\n disabled: {\n opacity: 0.6,\n },\n triggerWrap: {\n position: \"relative\",\n zIndex: 1,\n },\n triggerWrapOpen: {\n zIndex: 20,\n },\n trigger: {\n height: TRIGGER_HEIGHT,\n borderRadius: TRIGGER_RADIUS,\n borderWidth: 1,\n paddingVertical: 10,\n paddingHorizontal: 16,\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 10,\n overflow: \"hidden\",\n },\n triggerText: {\n ...datePickerTypography.field,\n flex: 1,\n minWidth: 0,\n },\n rangeTrigger: {\n paddingVertical: 0,\n paddingHorizontal: 0,\n borderRadius: 15,\n gap: 0,\n },\n rangeTriggerHorizontal: {\n height: 78,\n flexDirection: \"row\",\n },\n rangeTriggerVertical: {\n height: 156,\n flexDirection: \"column\",\n },\n rangeField: {\n flex: 1,\n alignSelf: \"stretch\",\n minWidth: 0,\n justifyContent: \"center\",\n gap: 8,\n paddingVertical: 12,\n paddingHorizontal: 16,\n },\n rangeLabel: {\n ...datePickerTypography.rangeLabel,\n color: colors.whiteAlpha60,\n },\n rangeValueRow: {\n minWidth: 0,\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: 12,\n },\n rangeDate: {\n ...datePickerTypography.rangeDate,\n flexShrink: 1,\n color: colors.white,\n },\n rangeTimeWrap: {\n flexShrink: 0,\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 3,\n },\n rangeTime: {\n ...datePickerTypography.rangeTime,\n color: colors.lightGrey,\n },\n rangeDividerHorizontal: {\n width: 1,\n alignSelf: \"stretch\",\n backgroundColor: colors.grey500,\n },\n rangeDividerVertical: {\n height: 1,\n alignSelf: \"stretch\",\n backgroundColor: colors.grey500,\n },\n iconSlot: {\n width: ICON_SIZE,\n height: ICON_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n menu: {\n position: \"absolute\",\n top: \"100%\",\n left: 0,\n width: DEFAULT_WIDTH,\n marginTop: 8,\n zIndex: 10,\n borderRadius: MENU_RADIUS,\n padding: 12,\n gap: 0,\n backgroundColor: colors.grey700,\n ...Platform.select({\n web: {\n boxShadow: `0 8px 24px ${colors.black}73`,\n },\n default: {\n elevation: 8,\n },\n }),\n },\n rangeMenu: {\n width: RANGE_TRIGGER_WIDTH,\n },\n calendarHeader: {\n height: 36,\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n },\n navButton: {\n width: 36,\n height: 36,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n navIconMirror: {\n transform: [{ scaleX: -1 }],\n },\n monthHeading: {\n ...datePickerTypography.monthHeading,\n color: colors.white,\n textAlign: \"center\",\n },\n weekdayRow: {\n flexDirection: \"row\",\n },\n weekdayText: {\n ...datePickerTypography.weekday,\n color: colors.grey300,\n textAlign: \"center\",\n textTransform: \"uppercase\",\n },\n weekRow: {\n flexDirection: \"row\",\n position: \"relative\",\n },\n weekRowSpaced: {\n marginTop: 8,\n },\n rangeHighlight: {\n position: \"absolute\",\n top: (DAY_CELL_HEIGHT - DAY_CIRCLE_SIZE) / 2,\n bottom: (DAY_CELL_HEIGHT - DAY_CIRCLE_SIZE) / 2,\n borderRadius: DAY_CIRCLE_SIZE / 2,\n backgroundColor: colors.primaryHover,\n },\n dayCellWrap: {\n flex: 1,\n height: DAY_CELL_HEIGHT,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n dayCircle: {\n width: DAY_CIRCLE_SIZE,\n height: DAY_CIRCLE_SIZE,\n borderRadius: DAY_CIRCLE_SIZE / 2,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n dayCircleSelected: {\n backgroundColor: colors.primary,\n },\n dayCircleHovered: {\n backgroundColor: colors.grey600,\n },\n dayText: {\n ...datePickerTypography.day,\n },\n todayDot: {\n position: \"absolute\",\n bottom: 2,\n width: 4,\n height: 4,\n borderRadius: 2,\n backgroundColor: colors.primary,\n },\n});\n","import { cloneElement, isValidElement, type ReactNode } from \"react\";\nimport type { IconComponent, IconProps } from \"../icons\";\n\nexport type StatefulIcon = ReactNode | IconComponent;\n\nexport function renderStatefulIcon(\n icon: StatefulIcon | undefined,\n FallbackIcon: IconComponent,\n props: Pick<IconProps, \"color\" | \"size\">,\n) {\n if (icon == null) {\n return <FallbackIcon {...props} />;\n }\n\n if (typeof icon === \"function\") {\n const Icon = icon as IconComponent;\n return <Icon {...props} />;\n }\n\n if (isValidElement<IconProps>(icon)) {\n return cloneElement(icon, props);\n }\n\n return icon;\n}\n","import { forwardRef, useMemo, useRef, useState, type ComponentRef } from \"react\";\nimport {\n Platform,\n StyleSheet,\n Text,\n TextInput,\n TouchableOpacity,\n View,\n type StyleProp,\n type TextStyle,\n type ViewStyle,\n type TextInputProps,\n} from \"react-native\";\nimport { ShowIcon, UserIcon } from \"../../icons\";\nimport { colors, inputTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { renderStatefulIcon, type StatefulIcon } from \"../../utils/renderStatefulIcon\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport type InputSize = \"lg\" | \"sm\";\nexport type InputIcon = StatefulIcon;\n\nexport interface InputProps extends Omit<TextInputProps, \"style\" | \"editable\"> {\n label?: string;\n showLabel?: boolean;\n hint?: string;\n showHint?: boolean;\n size?: InputSize;\n /** External — validation / form error. */\n error?: boolean;\n /** External — non-interactive. */\n disabled?: boolean;\n leftIcon?: InputIcon;\n showLeftIcon?: boolean;\n rightIcon?: InputIcon;\n showRightIcon?: boolean;\n onRightIconPress?: () => void;\n /** Accessible name for the right icon button, when `onRightIconPress` is set. */\n rightIconAccessibilityLabel?: string;\n style?: StyleProp<ViewStyle>;\n fieldStyle?: StyleProp<ViewStyle>;\n inputStyle?: StyleProp<TextStyle>;\n className?: string;\n inputClassName?: string;\n}\n\ntype VisualState = \"default\" | \"filled\" | \"active\" | \"error\" | \"disabled\";\n\ntype FieldChrome = {\n borderColor: string;\n backgroundColor: string;\n textColor: string;\n placeholderColor: string;\n leftIconColor: string;\n rightIconColor: string;\n labelColor: string;\n hintColor: string;\n};\n\nconst DEFAULT_WIDTH = 308;\n\nconst sizeConfig = {\n lg: {\n height: 44,\n borderRadius: 60,\n paddingVertical: 12,\n paddingHorizontal: 16,\n gap: 10,\n iconSize: 20,\n text: inputTypography.field,\n },\n sm: {\n height: 32,\n borderRadius: 60,\n paddingVertical: 6,\n paddingHorizontal: 12,\n gap: 8,\n iconSize: 16,\n text: inputTypography.hint,\n },\n} as const satisfies Record<InputSize, Record<string, unknown>>;\n\n/** default / filled / active come from value + focus; error / disabled from props. */\nfunction resolveVisualState({\n disabled,\n error,\n focused,\n hasValue,\n}: {\n disabled: boolean;\n error: boolean;\n focused: boolean;\n hasValue: boolean;\n}): VisualState {\n if (disabled) return \"disabled\";\n if (error) return \"error\";\n if (focused) return \"active\";\n if (hasValue) return \"filled\";\n return \"default\";\n}\n\nfunction chromeFor(state: VisualState): FieldChrome {\n const base: FieldChrome = {\n borderColor: colors.grey700,\n backgroundColor: colors.grey700,\n textColor: colors.white,\n placeholderColor: colors.grey100,\n leftIconColor: colors.grey100,\n rightIconColor: colors.grey100,\n labelColor: colors.white,\n hintColor: colors.grey100,\n };\n\n switch (state) {\n case \"active\":\n return {\n ...base,\n borderColor: colors.primaryMuted,\n leftIconColor: colors.primary,\n };\n case \"error\":\n return {\n ...base,\n borderColor: colors.redMuted,\n textColor: colors.red,\n placeholderColor: colors.red,\n labelColor: colors.red,\n hintColor: colors.red,\n leftIconColor: colors.red,\n };\n case \"filled\":\n return base;\n case \"disabled\":\n return {\n ...base,\n borderColor: colors.grey700,\n backgroundColor: colors.grey700,\n textColor: colors.grey0,\n leftIconColor: colors.grey0,\n rightIconColor: colors.grey0,\n labelColor: colors.white,\n hintColor: colors.grey100,\n };\n default:\n return base;\n }\n}\n\nexport const Input = forwardRef<ComponentRef<typeof TextInput>, InputProps>(function Input(\n {\n label,\n showLabel = true,\n hint,\n showHint = true,\n placeholder,\n size = \"lg\",\n disabled = false,\n error = false,\n value,\n defaultValue,\n onChangeText,\n onFocus,\n onBlur,\n leftIcon,\n showLeftIcon = false,\n rightIcon,\n showRightIcon = false,\n onRightIconPress,\n rightIconAccessibilityLabel,\n style,\n fieldStyle,\n inputStyle,\n className,\n inputClassName,\n accessibilityLabel,\n ...textInputProps\n },\n forwardedRef,\n) {\n const rootRef = useRef<ComponentRef<typeof View>>(null);\n const inputRef = useRef<ComponentRef<typeof TextInput>>(null);\n const setInputRef = useMemo(() => mergeRefs(inputRef, forwardedRef), [forwardedRef]);\n const [focused, setFocused] = useState(false);\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue ?? \"\");\n const metrics = sizeConfig[size];\n\n const isControlled = typeof value === \"string\";\n const currentValue = isControlled ? value : uncontrolledValue;\n const hasValue = currentValue.length > 0;\n\n const visualState = resolveVisualState({ disabled, error, focused, hasValue });\n const chrome = chromeFor(visualState);\n const resolvedAccessibilityLabel = accessibilityLabel ?? (showLabel ? undefined : label);\n\n const hasLeftIcon = showLeftIcon || leftIcon != null;\n const hasRightIcon = showRightIcon || rightIcon != null;\n\n const leftIconNode = renderStatefulIcon(leftIcon, UserIcon, {\n size: metrics.iconSize,\n color: chrome.leftIconColor,\n });\n const rightIconNode = renderStatefulIcon(rightIcon, ShowIcon, {\n size: metrics.iconSize,\n color: chrome.rightIconColor,\n });\n\n useApplyWebClassName(rootRef, className);\n useApplyWebClassName(inputRef, inputClassName);\n\n return (\n <View ref={rootRef} style={[styles.root, disabled && styles.disabled, style]}>\n {showLabel && label ? (\n <Text style={[styles.label, { color: chrome.labelColor }]}>{label}</Text>\n ) : null}\n\n <View\n style={[\n styles.field,\n {\n height: metrics.height,\n borderRadius: metrics.borderRadius,\n paddingTop: metrics.paddingVertical,\n paddingBottom: metrics.paddingVertical,\n paddingLeft: metrics.paddingHorizontal,\n paddingRight: metrics.paddingHorizontal,\n gap: metrics.gap,\n borderColor: chrome.borderColor,\n backgroundColor: chrome.backgroundColor,\n },\n fieldStyle,\n ]}\n >\n {hasLeftIcon ? (\n <View style={[styles.iconSlot, { width: metrics.iconSize, height: metrics.iconSize }]}>\n {leftIconNode}\n </View>\n ) : null}\n\n <TextInput\n ref={setInputRef}\n {...textInputProps}\n value={isControlled ? value : undefined}\n defaultValue={isControlled ? undefined : defaultValue}\n editable={!disabled}\n placeholder={placeholder}\n placeholderTextColor={chrome.placeholderColor}\n onChangeText={(text) => {\n if (!isControlled) setUncontrolledValue(text);\n onChangeText?.(text);\n }}\n onFocus={(event) => {\n setFocused(true);\n onFocus?.(event);\n }}\n onBlur={(event) => {\n setFocused(false);\n onBlur?.(event);\n }}\n style={[\n styles.input,\n metrics.text,\n { color: chrome.textColor },\n Platform.OS === \"web\" ? styles.inputWeb : null,\n Platform.OS === \"android\" ? styles.inputAndroid : null,\n inputStyle,\n ]}\n accessibilityLabel={resolvedAccessibilityLabel}\n accessibilityState={{ disabled }}\n />\n\n {hasRightIcon ? (\n onRightIconPress ? (\n <TouchableOpacity\n onPress={onRightIconPress}\n disabled={disabled}\n style={[styles.iconSlot, { width: metrics.iconSize, height: metrics.iconSize }]}\n accessibilityRole=\"button\"\n accessibilityLabel={rightIconAccessibilityLabel}\n hitSlop={8}\n >\n {rightIconNode}\n </TouchableOpacity>\n ) : (\n <View style={[styles.iconSlot, { width: metrics.iconSize, height: metrics.iconSize }]}>\n {rightIconNode}\n </View>\n )\n ) : null}\n </View>\n\n {showHint && hint ? (\n <Text style={[styles.hint, { color: chrome.hintColor }]}>{hint}</Text>\n ) : null}\n </View>\n );\n});\n\nconst styles = StyleSheet.create({\n root: {\n width: DEFAULT_WIDTH,\n gap: 8,\n alignSelf: \"flex-start\",\n },\n disabled: {\n opacity: 0.6,\n },\n label: {\n ...inputTypography.label,\n },\n field: {\n borderWidth: 1,\n flexDirection: \"row\",\n alignItems: \"center\",\n },\n input: {\n flex: 1,\n paddingVertical: 0,\n margin: 0,\n },\n inputWeb: {\n outlineStyle: \"none\",\n } as TextStyle,\n inputAndroid: {\n includeFontPadding: false,\n },\n iconSlot: {\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n hint: {\n ...inputTypography.hint,\n },\n});\n","export function normalizeVerificationCode(value: string, length: number): string {\n return value.replace(/\\D/g, \"\").slice(0, Math.max(1, length));\n}\n\nexport interface VerificationCodeUpdate {\n code: string;\n nextFocus: number;\n}\n\nexport function updateVerificationCode(\n currentCode: string,\n index: number,\n input: string,\n length: number,\n): VerificationCodeUpdate {\n const safeLength = Math.max(1, length);\n const safeIndex = Math.min(Math.max(0, index), safeLength - 1);\n const current = normalizeVerificationCode(currentCode, safeLength);\n const insertedDigits = normalizeVerificationCode(input, safeLength - safeIndex);\n\n if (!insertedDigits) {\n return {\n code: `${current.slice(0, safeIndex)}${current.slice(safeIndex + 1)}`,\n nextFocus: safeIndex,\n };\n }\n\n return {\n code: `${current.slice(0, safeIndex)}${insertedDigits}${current.slice(\n safeIndex + insertedDigits.length,\n )}`.slice(0, safeLength),\n nextFocus: Math.min(safeIndex + insertedDigits.length, safeLength - 1),\n };\n}\n","import {\n forwardRef,\n useCallback,\n useImperativeHandle,\n useRef,\n useState,\n type ComponentRef,\n} from \"react\";\nimport {\n Platform,\n StyleSheet,\n TextInput,\n useWindowDimensions,\n View,\n type NativeSyntheticEvent,\n type StyleProp,\n type TextInputKeyPressEventData,\n type TextStyle,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport { colors, fonts } from \"../../theme\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\nimport { normalizeVerificationCode, updateVerificationCode } from \"./VerificationCodeInput.utils\";\n\nconst DEFAULT_LENGTH = 6;\nconst DESKTOP_CELL_WIDTH = 54;\nconst MOBILE_CELL_WIDTH = 50;\nconst CELL_HEIGHT = 68;\nconst DESKTOP_GAP = 12;\nconst MOBILE_GAP = 4;\nconst MOBILE_BREAKPOINT = 640;\n\nexport interface VerificationCodeInputHandle {\n clear: () => void;\n focus: (index?: number) => void;\n}\n\nexport interface VerificationCodeInputProps extends Omit<ViewProps, \"children\" | \"style\"> {\n /** Number of numeric cells. */\n length?: number;\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n /** Called whenever every cell contains a digit. */\n onComplete?: (value: string) => void;\n /** Called when Enter/submit is pressed from a cell. */\n onSubmit?: (value: string) => void;\n error?: boolean;\n disabled?: boolean;\n autoFocus?: boolean;\n /** Localized accessible name for each zero-based cell index. */\n getDigitAccessibilityLabel?: (index: number) => string;\n style?: StyleProp<ViewStyle>;\n inputStyle?: StyleProp<TextStyle>;\n className?: string;\n}\n\nexport const VerificationCodeInput = forwardRef<\n VerificationCodeInputHandle,\n VerificationCodeInputProps\n>(function VerificationCodeInput(\n {\n length = DEFAULT_LENGTH,\n value,\n defaultValue = \"\",\n onValueChange,\n onComplete,\n onSubmit,\n error = false,\n disabled = false,\n autoFocus = false,\n getDigitAccessibilityLabel,\n style,\n inputStyle,\n className,\n ...viewProps\n },\n forwardedRef,\n) {\n const safeLength = Math.max(1, Math.floor(length));\n const isControlled = typeof value === \"string\";\n const [uncontrolledValue, setUncontrolledValue] = useState(() =>\n normalizeVerificationCode(defaultValue, safeLength),\n );\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n const { width: viewportWidth } = useWindowDimensions();\n const rootRef = useRef<ComponentRef<typeof View>>(null);\n const inputRefs = useRef<Array<ComponentRef<typeof TextInput> | null>>([]);\n const currentCode = normalizeVerificationCode(\n isControlled ? value : uncontrolledValue,\n safeLength,\n );\n\n useApplyWebClassName(rootRef, className);\n\n const focus = useCallback(\n (index = 0) => {\n const safeIndex = Math.min(Math.max(0, index), safeLength - 1);\n inputRefs.current[safeIndex]?.focus();\n },\n [safeLength],\n );\n\n const commit = useCallback(\n (nextValue: string) => {\n const normalized = normalizeVerificationCode(nextValue, safeLength);\n\n if (!isControlled) {\n setUncontrolledValue(normalized);\n }\n\n onValueChange?.(normalized);\n\n if (normalized.length === safeLength) {\n onComplete?.(normalized);\n }\n },\n [isControlled, onComplete, onValueChange, safeLength],\n );\n\n useImperativeHandle(\n forwardedRef,\n () => ({\n clear: () => {\n commit(\"\");\n focus(0);\n },\n focus,\n }),\n [commit, focus],\n );\n\n const handleChange = (index: number, input: string) => {\n const update = updateVerificationCode(currentCode, index, input, safeLength);\n commit(update.code);\n focus(update.nextFocus);\n };\n\n const handleKeyPress = (\n index: number,\n event: NativeSyntheticEvent<TextInputKeyPressEventData>,\n ) => {\n const key = event.nativeEvent.key;\n\n if (key === \"Backspace\" && !currentCode[index] && index > 0) {\n const update = updateVerificationCode(currentCode, index - 1, \"\", safeLength);\n commit(update.code);\n focus(index - 1);\n return;\n }\n\n if (key === \"ArrowLeft\" && index > 0) {\n focus(index - 1);\n }\n\n if (key === \"ArrowRight\" && index < safeLength - 1) {\n focus(index + 1);\n }\n };\n\n const mobile = viewportWidth < MOBILE_BREAKPOINT;\n const cellWidth = mobile ? MOBILE_CELL_WIDTH : DESKTOP_CELL_WIDTH;\n const cellGap = mobile ? MOBILE_GAP : DESKTOP_GAP;\n const rootWidth = cellWidth * safeLength + cellGap * Math.max(0, safeLength - 1);\n\n return (\n <View\n {...viewProps}\n ref={rootRef}\n style={[\n styles.root,\n { width: rootWidth, maxWidth: \"100%\", gap: cellGap },\n disabled && styles.disabled,\n style,\n ]}\n >\n {Array.from({ length: safeLength }, (_, index) => {\n const active = focusedIndex === index;\n const borderColor = error ? colors.redHover : active ? colors.primary : colors.grey600;\n\n return (\n <TextInput\n ref={(element) => {\n inputRefs.current[index] = element;\n }}\n accessibilityLabel={\n getDigitAccessibilityLabel?.(index) ?? `Verification code digit ${index + 1}`\n }\n accessibilityState={{ disabled }}\n autoComplete={index === 0 ? \"one-time-code\" : \"off\"}\n autoFocus={autoFocus && index === 0}\n caretHidden={Platform.OS !== \"web\"}\n editable={!disabled}\n inputMode=\"numeric\"\n key={index}\n keyboardType=\"number-pad\"\n maxLength={safeLength}\n onBlur={() => setFocusedIndex((current) => (current === index ? null : current))}\n onChangeText={(text) => handleChange(index, text)}\n onFocus={() => setFocusedIndex(index)}\n onKeyPress={(event) => handleKeyPress(index, event)}\n onSubmitEditing={() => onSubmit?.(currentCode)}\n selectTextOnFocus\n style={[\n styles.cell,\n {\n width: cellWidth,\n height: CELL_HEIGHT,\n borderColor,\n color: error ? colors.red : colors.white,\n },\n Platform.OS === \"web\" ? styles.cellWeb : null,\n Platform.OS === \"android\" ? styles.cellAndroid : null,\n inputStyle,\n ]}\n value={currentCode[index] ?? \"\"}\n />\n );\n })}\n </View>\n );\n});\n\nconst styles = StyleSheet.create({\n root: {\n minWidth: 0,\n alignSelf: \"center\",\n flexDirection: \"row\",\n justifyContent: \"center\",\n },\n disabled: {\n opacity: 0.6,\n },\n cell: {\n minWidth: 0,\n flexGrow: 0,\n flexShrink: 0,\n borderWidth: 1,\n borderRadius: 16,\n padding: 0,\n margin: 0,\n textAlign: \"center\",\n fontFamily: fonts.sans,\n fontSize: 22,\n fontWeight: \"600\",\n lineHeight: 22,\n },\n cellWeb: {\n outlineStyle: \"none\",\n } as TextStyle,\n cellAndroid: {\n includeFontPadding: false,\n },\n});\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ComponentRef,\n} from \"react\";\nimport {\n Platform,\n Pressable,\n ScrollView,\n StyleSheet,\n Text,\n TextInput,\n View,\n type LayoutChangeEvent,\n type StyleProp,\n type TextStyle,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport { Checkbox } from \"../Checkbox\";\nimport { ChevronDownIcon, SearchIcon, UserIcon } from \"../../icons\";\nimport { colors, selectTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { renderStatefulIcon, type StatefulIcon } from \"../../utils/renderStatefulIcon\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport type SelectOption = {\n label: string;\n value: string;\n};\n\nexport type SelectIcon = StatefulIcon;\n\ntype SelectBaseProps = Omit<ViewProps, \"style\" | \"children\"> & {\n label?: string;\n showLabel?: boolean;\n hint?: string;\n showHint?: boolean;\n placeholder?: string;\n options: SelectOption[];\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n disabled?: boolean;\n error?: boolean;\n leftIcon?: SelectIcon;\n showLeftIcon?: boolean;\n showSearch?: boolean;\n searchPlaceholder?: string;\n /**\n * Called with the raw query on every keystroke. When provided, the parent owns\n * filtering (e.g. server search) and the options prop is rendered as-is;\n * when omitted, options are filtered locally by label.\n */\n onSearchChange?: (query: string) => void;\n /** Shows a loading row in the menu while the parent fetches options. */\n loading?: boolean;\n /** Text shown when no options match. */\n emptyText?: string;\n style?: StyleProp<ViewStyle>;\n className?: string;\n};\n\nexport type SelectSingleProps = SelectBaseProps & {\n multiple?: false;\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n};\n\nexport type SelectMultipleProps = SelectBaseProps & {\n multiple: true;\n value?: string[];\n defaultValue?: string[];\n onValueChange?: (value: string[]) => void;\n};\n\nexport type SelectProps = SelectSingleProps | SelectMultipleProps;\n\nconst DEFAULT_WIDTH = 308;\nconst TRIGGER_HEIGHT = 44;\nconst TRIGGER_RADIUS = 60;\nconst MENU_RADIUS = 24;\nconst MENU_MAX_LIST_HEIGHT = 248;\nconst ITEM_RADIUS = 12;\nconst ICON_SIZE = 20;\nconst CHIP_GAP = 6;\nconst FALLBACK_ELLIPSIS_WIDTH = 20;\n\ntype ItemVisualState = \"default\" | \"hover\" | \"selected\";\n\nfunction itemBackground(state: ItemVisualState): string {\n switch (state) {\n case \"hover\":\n return colors.grey600;\n case \"selected\":\n return colors.primaryMuted;\n default:\n return \"transparent\";\n }\n}\n\nfunction toArray(value: string | string[] | undefined): string[] {\n if (value == null || value === \"\") return [];\n return Array.isArray(value) ? value : [value];\n}\n\nfunction resolveVisibleOptions(\n options: SelectOption[],\n containerWidth: number,\n chipWidths: Record<string, number>,\n ellipsisWidth: number,\n): { visible: SelectOption[]; hasOverflow: boolean } {\n if (options.length === 0) return { visible: [], hasOverflow: false };\n if (containerWidth <= 0) return { visible: options.slice(0, 1), hasOverflow: options.length > 1 };\n\n const visible: SelectOption[] = [];\n let used = 0;\n\n for (let index = 0; index < options.length; index += 1) {\n const option = options[index];\n const chipWidth = chipWidths[option.value];\n if (chipWidth == null) {\n if (visible.length === 0) visible.push(option);\n break;\n }\n\n const remainingAfter = options.length - index - 1;\n const gap = visible.length > 0 ? CHIP_GAP : 0;\n const reserve = remainingAfter > 0 ? CHIP_GAP + ellipsisWidth : 0;\n const nextUsed = used + gap + chipWidth;\n\n if (visible.length > 0 && nextUsed + reserve > containerWidth) {\n return { visible, hasOverflow: true };\n }\n\n visible.push(option);\n used = nextUsed;\n }\n\n return { visible, hasOverflow: visible.length < options.length };\n}\n\ntype MultiValueChipsProps = {\n options: SelectOption[];\n disabled?: boolean;\n onRemove: (value: string) => void;\n};\n\nfunction MultiValueChips({ options, disabled, onRemove }: MultiValueChipsProps) {\n const [containerWidth, setContainerWidth] = useState(0);\n const [chipWidths, setChipWidths] = useState<Record<string, number>>({});\n const [ellipsisWidth, setEllipsisWidth] = useState(FALLBACK_ELLIPSIS_WIDTH);\n\n useEffect(() => {\n setChipWidths((current) => {\n const validValues = new Set(options.map((option) => option.value));\n const keys = Object.keys(current);\n if (keys.every((key) => validValues.has(key))) return current;\n\n const next: Record<string, number> = {};\n for (const key of keys) {\n if (validValues.has(key)) next[key] = current[key];\n }\n return next;\n });\n }, [options]);\n\n const { visible, hasOverflow } = useMemo(\n () => resolveVisibleOptions(options, containerWidth, chipWidths, ellipsisWidth),\n [chipWidths, containerWidth, ellipsisWidth, options],\n );\n\n const handleContainerLayout = (event: LayoutChangeEvent) => {\n const next = Math.floor(event.nativeEvent.layout.width);\n setContainerWidth((current) => (current === next ? current : next));\n };\n\n const handleChipLayout = (value: string, event: LayoutChangeEvent) => {\n const next = Math.ceil(event.nativeEvent.layout.width);\n setChipWidths((current) => (current[value] === next ? current : { ...current, [value]: next }));\n };\n\n const handleEllipsisLayout = (event: LayoutChangeEvent) => {\n const next = Math.ceil(event.nativeEvent.layout.width);\n setEllipsisWidth((current) => (current === next ? current : next));\n };\n\n return (\n <View style={styles.multiValueRoot}>\n {/* Hidden copy of every chip; RN has no synchronous text measurement. */}\n <View pointerEvents=\"none\" style={styles.measureRow}>\n {options.map((option) => (\n <View\n key={`measure-${option.value}`}\n style={styles.chip}\n onLayout={(event) => handleChipLayout(option.value, event)}\n >\n <Text style={styles.chipLabel} numberOfLines={1}>\n {option.label}\n </Text>\n <Text style={styles.chipRemove}>×</Text>\n </View>\n ))}\n <View style={styles.ellipsis} onLayout={handleEllipsisLayout}>\n <Text style={styles.ellipsisText}>...</Text>\n </View>\n </View>\n\n <View style={styles.chipsRow} onLayout={handleContainerLayout}>\n {visible.map((option) => (\n <View key={option.value} style={styles.chip}>\n <Text style={styles.chipLabel} numberOfLines={1}>\n {option.label}\n </Text>\n <Pressable\n onPress={(event) => {\n // Keep the surrounding trigger Pressable from toggling the menu.\n event?.stopPropagation?.();\n onRemove(option.value);\n }}\n disabled={disabled}\n hitSlop={6}\n accessibilityRole=\"button\"\n accessibilityLabel={`Remove ${option.label}`}\n >\n <Text style={styles.chipRemove}>×</Text>\n </Pressable>\n </View>\n ))}\n\n {hasOverflow ? (\n <View style={styles.ellipsis}>\n <Text style={styles.ellipsisText}>...</Text>\n </View>\n ) : null}\n </View>\n </View>\n );\n}\n\nexport const Select = forwardRef<ComponentRef<typeof View>, SelectProps>(\n function Select(props, forwardedRef) {\n const {\n label,\n showLabel = true,\n hint,\n showHint = true,\n placeholder,\n options,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n disabled = false,\n error = false,\n leftIcon,\n showLeftIcon = true,\n showSearch = true,\n searchPlaceholder = \"Search...\",\n onSearchChange,\n loading = false,\n emptyText = \"No results\",\n style,\n className,\n accessibilityLabel,\n // Pulled out only to keep them off `rest` (which is spread onto the root View);\n // the real values are read from `props` directly below to preserve discriminated typing.\n multiple: _multiple,\n value: _value,\n defaultValue: _defaultValue,\n onValueChange: _onValueChange,\n ...rest\n } = props;\n\n const multiple = props.multiple === true;\n const valueProp = props.value;\n const rootRef = useRef<ComponentRef<typeof View>>(null);\n const triggerRef = useRef<ComponentRef<typeof Pressable>>(null);\n const searchInputRef = useRef<ComponentRef<typeof TextInput>>(null);\n const setRootRef = useMemo(() => mergeRefs(rootRef, forwardedRef), [forwardedRef]);\n const isOpenControlled = typeof openProp === \"boolean\";\n const isValueControlled = valueProp !== undefined;\n\n const [uncontrolledSingle, setUncontrolledSingle] = useState(\n !multiple ? ((props as SelectSingleProps).defaultValue ?? \"\") : \"\",\n );\n const [uncontrolledMultiple, setUncontrolledMultiple] = useState<string[]>(\n multiple ? ((props as SelectMultipleProps).defaultValue ?? []) : [],\n );\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const [searchQuery, setSearchQuery] = useState(\"\");\n const [hoveredValue, setHoveredValue] = useState<string | null>(null);\n\n const selectedValues = useMemo(() => {\n const current = isValueControlled\n ? valueProp\n : multiple\n ? uncontrolledMultiple\n : uncontrolledSingle;\n return toArray(current);\n }, [isValueControlled, multiple, valueProp, uncontrolledMultiple, uncontrolledSingle]);\n\n const isOpen = isOpenControlled ? openProp : uncontrolledOpen;\n\n // Mapped from selectedValues (not filtered from options) to preserve selection order.\n const selectedOptions = useMemo(\n () =>\n selectedValues\n .map((value) => options.find((option) => option.value === value))\n .filter((option): option is SelectOption => option != null),\n [options, selectedValues],\n );\n const hasValue = selectedOptions.length > 0;\n\n const isExternalSearch = onSearchChange != null;\n\n const filteredOptions = useMemo(() => {\n if (isExternalSearch) return options;\n const query = searchQuery.trim().toLowerCase();\n if (!query) return options;\n return options.filter((option) => option.label.toLowerCase().includes(query));\n }, [isExternalSearch, options, searchQuery]);\n\n useApplyWebClassName(rootRef, className);\n\n const setOpen = useCallback(\n (next: boolean) => {\n if (!isOpenControlled) setUncontrolledOpen(next);\n onOpenChange?.(next);\n if (next) {\n // Seed keyboard highlight from the current selection so Arrow keys\n // start from a sensible position.\n setHoveredValue(selectedValues[0] ?? null);\n } else {\n setSearchQuery(\"\");\n setHoveredValue(null);\n // Let the parent reset its externally fetched options.\n onSearchChange?.(\"\");\n }\n },\n [isOpenControlled, onOpenChange, onSearchChange, selectedValues],\n );\n\n const handleSearchChange = (text: string) => {\n setSearchQuery(text);\n onSearchChange?.(text);\n };\n\n // Close on outside click (web only; native has no document-level events).\n useEffect(() => {\n if (Platform.OS !== \"web\" || !isOpen) return;\n\n const handlePointerDown = (event: MouseEvent | TouchEvent) => {\n const root = rootRef.current as unknown as { contains?: (node: Node) => boolean } | null;\n const target = event.target;\n if (root?.contains && target instanceof Node && !root.contains(target)) {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handlePointerDown);\n document.addEventListener(\"touchstart\", handlePointerDown);\n return () => {\n document.removeEventListener(\"mousedown\", handlePointerDown);\n document.removeEventListener(\"touchstart\", handlePointerDown);\n };\n }, [isOpen, setOpen]);\n\n const commitValues = useCallback(\n (nextValues: string[]) => {\n if (multiple) {\n if (!isValueControlled) setUncontrolledMultiple(nextValues);\n (props as SelectMultipleProps).onValueChange?.(nextValues);\n return;\n }\n\n const nextValue = nextValues[0] ?? \"\";\n if (!isValueControlled) setUncontrolledSingle(nextValue);\n (props as SelectSingleProps).onValueChange?.(nextValue);\n },\n [isValueControlled, multiple, props],\n );\n\n const handleTriggerPress = () => {\n if (disabled) return;\n setOpen(!isOpen);\n };\n\n const handleSelect = useCallback(\n (optionValue: string) => {\n if (disabled) return;\n if (multiple) {\n const exists = selectedValues.includes(optionValue);\n const nextValues = exists\n ? selectedValues.filter((value) => value !== optionValue)\n : [...selectedValues, optionValue];\n commitValues(nextValues);\n return;\n }\n\n commitValues([optionValue]);\n setOpen(false);\n },\n [commitValues, disabled, multiple, selectedValues, setOpen],\n );\n\n const handleRemoveChip = (optionValue: string) => {\n if (disabled || !multiple) return;\n commitValues(selectedValues.filter((value) => value !== optionValue));\n };\n\n const focusTrigger = useCallback(() => {\n const node = triggerRef.current as unknown as { focus?: () => void } | null;\n node?.focus?.();\n }, []);\n\n const closeAndFocusTrigger = useCallback(() => {\n setOpen(false);\n focusTrigger();\n }, [focusTrigger, setOpen]);\n\n // ARIA combobox keyboard pattern (web only): Arrow keys move the highlighted\n // option, Enter/Space selects it, Escape closes and returns focus to the trigger.\n useEffect(() => {\n if (Platform.OS !== \"web\") return;\n\n const isTriggerFocused = () => document.activeElement === triggerRef.current;\n const isSearchFocused = () => document.activeElement === searchInputRef.current;\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (!isOpen) {\n if (!isTriggerFocused() || disabled) return;\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\" || event.key === \"Enter\") {\n event.preventDefault();\n setOpen(true);\n }\n return;\n }\n\n if (event.key === \"Escape\") {\n event.preventDefault();\n closeAndFocusTrigger();\n return;\n }\n\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n setHoveredValue((current) => {\n if (filteredOptions.length === 0) return current;\n const currentIndex = filteredOptions.findIndex((option) => option.value === current);\n const delta = event.key === \"ArrowDown\" ? 1 : -1;\n const nextIndex =\n currentIndex === -1\n ? delta === 1\n ? 0\n : filteredOptions.length - 1\n : Math.min(Math.max(currentIndex + delta, 0), filteredOptions.length - 1);\n return filteredOptions[nextIndex]?.value ?? current;\n });\n return;\n }\n\n // Home/End and Space are left alone while typing in the search field\n // (text-cursor navigation and literal spaces must keep working).\n if (\n isSearchFocused() &&\n (event.key === \"Home\" || event.key === \"End\" || event.key === \" \")\n ) {\n return;\n }\n\n if (event.key === \"Home\" || event.key === \"End\") {\n if (filteredOptions.length === 0) return;\n event.preventDefault();\n setHoveredValue(\n event.key === \"Home\"\n ? filteredOptions[0].value\n : filteredOptions[filteredOptions.length - 1].value,\n );\n return;\n }\n\n if (event.key === \"Enter\" || event.key === \" \") {\n if (hoveredValue == null) return;\n event.preventDefault();\n handleSelect(hoveredValue);\n if (!multiple) focusTrigger();\n }\n };\n\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [\n isOpen,\n disabled,\n filteredOptions,\n hoveredValue,\n multiple,\n closeAndFocusTrigger,\n focusTrigger,\n handleSelect,\n setOpen,\n ]);\n\n const leftIconNode = renderStatefulIcon(leftIcon, UserIcon, {\n size: ICON_SIZE,\n color: error ? colors.red : isOpen ? colors.primary : colors.grey100,\n });\n const hasLeftIcon = showLeftIcon || leftIcon != null;\n\n const triggerBorderColor = error\n ? colors.redMuted\n : isOpen\n ? colors.primaryMuted\n : colors.grey700;\n const triggerTextColor = hasValue\n ? error\n ? colors.red\n : colors.white\n : error\n ? colors.red\n : colors.grey100;\n const labelColor = error ? colors.red : colors.white;\n const hintColor = error ? colors.red : colors.grey100;\n\n const singleLabel = selectedOptions[0]?.label ?? placeholder;\n const resolvedAccessibilityLabel =\n accessibilityLabel ?? (typeof label === \"string\" ? label : undefined);\n\n return (\n <View\n {...rest}\n ref={setRootRef}\n style={[styles.root, isOpen && styles.rootOpen, disabled && styles.disabled, style]}\n accessibilityState={{ disabled, expanded: isOpen }}\n >\n {showLabel && label ? (\n <Text style={[styles.label, { color: labelColor }]}>{label}</Text>\n ) : null}\n\n <View style={[styles.triggerWrap, isOpen && styles.triggerWrapOpen]}>\n <Pressable\n ref={triggerRef}\n onPress={handleTriggerPress}\n disabled={disabled}\n accessibilityRole=\"combobox\"\n accessibilityLabel={resolvedAccessibilityLabel}\n accessibilityState={{ disabled, expanded: isOpen }}\n style={[\n styles.trigger,\n {\n borderColor: triggerBorderColor,\n backgroundColor: colors.grey700,\n },\n ]}\n >\n {hasLeftIcon ? <View style={styles.iconSlot}>{leftIconNode}</View> : null}\n\n <View style={styles.triggerContent}>\n {multiple && hasValue ? (\n <MultiValueChips\n options={selectedOptions}\n disabled={disabled}\n onRemove={handleRemoveChip}\n />\n ) : (\n <Text style={[styles.triggerText, { color: triggerTextColor }]} numberOfLines={1}>\n {multiple ? placeholder : singleLabel}\n </Text>\n )}\n </View>\n\n <View style={[styles.iconSlot, isOpen && styles.chevronOpen]}>\n <ChevronDownIcon size={ICON_SIZE} color={isOpen ? colors.primary : colors.grey100} />\n </View>\n </Pressable>\n\n {isOpen ? (\n <View style={styles.menu}>\n {showSearch ? (\n <View style={styles.searchField}>\n <View style={styles.iconSlot}>\n <SearchIcon size={ICON_SIZE} color={colors.grey100} />\n </View>\n <TextInput\n ref={searchInputRef}\n value={searchQuery}\n onChangeText={handleSearchChange}\n editable={!disabled}\n placeholder={searchPlaceholder}\n placeholderTextColor={colors.grey100}\n style={[\n styles.searchInput,\n Platform.OS === \"web\" ? styles.searchInputWeb : null,\n Platform.OS === \"android\" ? styles.searchInputAndroid : null,\n ]}\n accessibilityLabel={searchPlaceholder}\n />\n </View>\n ) : null}\n\n <ScrollView\n style={styles.optionList}\n contentContainerStyle={styles.optionListContent}\n keyboardShouldPersistTaps=\"handled\"\n showsVerticalScrollIndicator={false}\n >\n {loading ? (\n <View style={styles.statusRow}>\n <Text style={styles.statusText}>Loading...</Text>\n </View>\n ) : filteredOptions.length === 0 ? (\n <View style={styles.statusRow}>\n <Text style={styles.statusText}>{emptyText}</Text>\n </View>\n ) : null}\n\n {!loading &&\n filteredOptions.map((option) => {\n const isSelected = selectedValues.includes(option.value);\n const isHovered = hoveredValue === option.value;\n const visualState: ItemVisualState = isSelected\n ? \"selected\"\n : isHovered\n ? \"hover\"\n : \"default\";\n\n return (\n <Pressable\n key={option.value}\n onPress={() => handleSelect(option.value)}\n disabled={disabled}\n onHoverIn={() => setHoveredValue(option.value)}\n onHoverOut={() =>\n setHoveredValue((current) => (current === option.value ? null : current))\n }\n onPressIn={() => setHoveredValue(option.value)}\n onPressOut={() =>\n setHoveredValue((current) => (current === option.value ? null : current))\n }\n accessibilityRole={multiple ? \"checkbox\" : \"button\"}\n accessibilityState={{ selected: isSelected, checked: isSelected, disabled }}\n style={[\n styles.item,\n {\n backgroundColor: itemBackground(visualState),\n },\n ]}\n >\n {multiple ? (\n <View pointerEvents=\"none\" style={styles.itemCheckbox}>\n <Checkbox value={isSelected} variant=\"light\" />\n </View>\n ) : null}\n <Text style={styles.itemLabel} numberOfLines={1}>\n {option.label}\n </Text>\n </Pressable>\n );\n })}\n </ScrollView>\n </View>\n ) : null}\n </View>\n\n {showHint && hint ? <Text style={[styles.hint, { color: hintColor }]}>{hint}</Text> : null}\n </View>\n );\n },\n);\n\nconst styles = StyleSheet.create({\n root: {\n width: DEFAULT_WIDTH,\n gap: 8,\n alignSelf: \"flex-start\",\n },\n rootOpen: {\n zIndex: 30,\n },\n disabled: {\n opacity: 0.6,\n },\n label: {\n ...selectTypography.label,\n },\n triggerWrap: {\n position: \"relative\",\n zIndex: 1,\n },\n triggerWrapOpen: {\n zIndex: 20,\n },\n trigger: {\n height: TRIGGER_HEIGHT,\n borderRadius: TRIGGER_RADIUS,\n borderWidth: 1,\n paddingVertical: 12,\n paddingHorizontal: 16,\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 10,\n overflow: \"hidden\",\n },\n triggerContent: {\n flex: 1,\n justifyContent: \"center\",\n minWidth: 0,\n overflow: \"hidden\",\n },\n triggerText: {\n ...selectTypography.field,\n },\n multiValueRoot: {\n width: \"100%\",\n position: \"relative\",\n },\n measureRow: {\n position: \"absolute\",\n left: 0,\n top: 0,\n flexDirection: \"row\",\n opacity: 0,\n zIndex: -1,\n },\n chipsRow: {\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: CHIP_GAP,\n overflow: \"hidden\",\n },\n chip: {\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 4,\n paddingVertical: 2,\n paddingHorizontal: 8,\n borderRadius: 999,\n backgroundColor: colors.grey600,\n flexShrink: 0,\n },\n chipLabel: {\n ...selectTypography.hint,\n color: colors.white,\n maxWidth: 120,\n },\n chipRemove: {\n color: colors.grey100,\n fontSize: 14,\n lineHeight: 14,\n },\n ellipsis: {\n flexShrink: 0,\n paddingHorizontal: 2,\n },\n ellipsisText: {\n ...selectTypography.field,\n color: colors.white,\n lineHeight: 16,\n },\n iconSlot: {\n width: ICON_SIZE,\n height: ICON_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n chevronOpen: {\n transform: [{ rotate: \"180deg\" }],\n },\n menu: {\n position: \"absolute\",\n top: \"100%\",\n left: 0,\n right: 0,\n marginTop: 8,\n zIndex: 10,\n borderRadius: MENU_RADIUS,\n padding: 12,\n gap: 8,\n backgroundColor: colors.grey700,\n ...Platform.select({\n web: {\n boxShadow: `0 8px 24px ${colors.black}73`,\n },\n default: {\n elevation: 8,\n },\n }),\n },\n optionList: {\n maxHeight: MENU_MAX_LIST_HEIGHT,\n },\n optionListContent: {\n gap: 8,\n },\n statusRow: {\n minHeight: 43,\n padding: 12,\n justifyContent: \"center\",\n },\n statusText: {\n ...selectTypography.field,\n color: colors.grey100,\n },\n searchField: {\n height: 40,\n borderRadius: ITEM_RADIUS,\n paddingHorizontal: 12,\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 8,\n backgroundColor: colors.grey800,\n },\n searchInput: {\n ...selectTypography.field,\n flex: 1,\n color: colors.white,\n paddingVertical: 0,\n margin: 0,\n },\n searchInputWeb: {\n outlineStyle: \"none\",\n } as TextStyle,\n searchInputAndroid: {\n includeFontPadding: false,\n },\n item: {\n minHeight: 43,\n borderRadius: ITEM_RADIUS,\n padding: 12,\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 8,\n },\n itemCheckbox: {\n flexShrink: 0,\n },\n itemLabel: {\n ...selectTypography.field,\n color: colors.white,\n flex: 1,\n },\n hint: {\n ...selectTypography.hint,\n },\n});\n","import { forwardRef, useMemo, useRef, useState, type ComponentRef } from \"react\";\nimport {\n Platform,\n StyleSheet,\n Text,\n TextInput,\n View,\n type StyleProp,\n type TextStyle,\n type ViewStyle,\n type TextInputProps,\n} from \"react-native\";\nimport { colors, textareaTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport interface TextareaProps extends Omit<TextInputProps, \"style\" | \"editable\" | \"multiline\"> {\n label?: string;\n showLabel?: boolean;\n hint?: string;\n showHint?: boolean;\n /** External — validation / form error. */\n error?: boolean;\n /** External — non-interactive. */\n disabled?: boolean;\n style?: StyleProp<ViewStyle>;\n fieldStyle?: StyleProp<ViewStyle>;\n inputStyle?: StyleProp<TextStyle>;\n className?: string;\n inputClassName?: string;\n}\n\ntype VisualState = \"default\" | \"filled\" | \"active\" | \"error\" | \"disabled\";\n\ntype FieldChrome = {\n borderColor: string;\n backgroundColor: string;\n textColor: string;\n placeholderColor: string;\n labelColor: string;\n hintColor: string;\n};\n\nconst DEFAULT_WIDTH = 308;\nconst FIELD_HEIGHT = 100;\nconst FIELD_RADIUS = 16;\nconst FIELD_PADDING_VERTICAL = 12;\nconst FIELD_PADDING_HORIZONTAL = 16;\n\n/** default / filled / active come from value + focus; error / disabled from props. */\nfunction resolveVisualState({\n disabled,\n error,\n focused,\n hasValue,\n}: {\n disabled: boolean;\n error: boolean;\n focused: boolean;\n hasValue: boolean;\n}): VisualState {\n if (disabled) return \"disabled\";\n if (error) return \"error\";\n if (focused) return \"active\";\n if (hasValue) return \"filled\";\n return \"default\";\n}\n\nfunction chromeFor(state: VisualState): FieldChrome {\n const base: FieldChrome = {\n borderColor: colors.grey700,\n backgroundColor: colors.grey700,\n textColor: colors.white,\n placeholderColor: colors.grey100,\n labelColor: colors.white,\n hintColor: colors.grey100,\n };\n\n switch (state) {\n case \"active\":\n return {\n ...base,\n borderColor: colors.primaryMuted,\n };\n case \"error\":\n return {\n ...base,\n borderColor: colors.redMuted,\n textColor: colors.red,\n placeholderColor: colors.red,\n labelColor: colors.red,\n hintColor: colors.red,\n };\n case \"filled\":\n return base;\n case \"disabled\":\n return {\n ...base,\n textColor: colors.grey0,\n };\n default:\n return base;\n }\n}\n\nexport const Textarea = forwardRef<ComponentRef<typeof TextInput>, TextareaProps>(function Textarea(\n {\n label = \"Label\",\n showLabel = true,\n hint = \"Hint\",\n showHint = true,\n placeholder = \"placeholder\",\n disabled = false,\n error = false,\n value,\n defaultValue,\n onChangeText,\n onFocus,\n onBlur,\n style,\n fieldStyle,\n inputStyle,\n className,\n inputClassName,\n accessibilityLabel,\n ...textInputProps\n },\n forwardedRef,\n) {\n const rootRef = useRef<ComponentRef<typeof View>>(null);\n const inputRef = useRef<ComponentRef<typeof TextInput>>(null);\n const setInputRef = useMemo(() => mergeRefs(inputRef, forwardedRef), [forwardedRef]);\n const [focused, setFocused] = useState(false);\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue ?? \"\");\n\n const isControlled = typeof value === \"string\";\n const currentValue = isControlled ? value : uncontrolledValue;\n const hasValue = currentValue.length > 0;\n\n const visualState = resolveVisualState({ disabled, error, focused, hasValue });\n const chrome = chromeFor(visualState);\n const resolvedAccessibilityLabel = accessibilityLabel ?? (showLabel ? undefined : label);\n\n useApplyWebClassName(rootRef, className);\n useApplyWebClassName(inputRef, inputClassName);\n\n return (\n <View ref={rootRef} style={[styles.root, disabled && styles.disabled, style]}>\n {showLabel && label ? (\n <Text style={[styles.label, { color: chrome.labelColor }]}>{label}</Text>\n ) : null}\n\n <View\n style={[\n styles.field,\n {\n borderColor: chrome.borderColor,\n backgroundColor: chrome.backgroundColor,\n },\n fieldStyle,\n ]}\n >\n <TextInput\n ref={setInputRef}\n {...textInputProps}\n multiline\n textAlignVertical=\"top\"\n value={isControlled ? value : undefined}\n defaultValue={isControlled ? undefined : defaultValue}\n editable={!disabled}\n placeholder={placeholder}\n placeholderTextColor={chrome.placeholderColor}\n onChangeText={(text) => {\n if (!isControlled) setUncontrolledValue(text);\n onChangeText?.(text);\n }}\n onFocus={(event) => {\n setFocused(true);\n onFocus?.(event);\n }}\n onBlur={(event) => {\n setFocused(false);\n onBlur?.(event);\n }}\n style={[\n styles.input,\n textareaTypography.field,\n { color: chrome.textColor },\n Platform.OS === \"web\" ? styles.inputWeb : null,\n Platform.OS === \"android\" ? styles.inputAndroid : null,\n inputStyle,\n ]}\n accessibilityLabel={resolvedAccessibilityLabel}\n accessibilityState={{ disabled }}\n />\n </View>\n\n {showHint && hint ? (\n <Text style={[styles.hint, { color: chrome.hintColor }]}>{hint}</Text>\n ) : null}\n </View>\n );\n});\n\nconst styles = StyleSheet.create({\n root: {\n width: DEFAULT_WIDTH,\n gap: 8,\n alignSelf: \"flex-start\",\n },\n disabled: {\n opacity: 0.6,\n },\n label: {\n ...textareaTypography.label,\n },\n field: {\n height: FIELD_HEIGHT,\n borderRadius: FIELD_RADIUS,\n borderWidth: 1,\n paddingTop: FIELD_PADDING_VERTICAL,\n paddingBottom: FIELD_PADDING_VERTICAL,\n paddingLeft: FIELD_PADDING_HORIZONTAL,\n paddingRight: FIELD_PADDING_HORIZONTAL,\n },\n input: {\n flex: 1,\n paddingVertical: 0,\n margin: 0,\n },\n inputWeb: {\n outlineStyle: \"none\",\n resize: \"none\",\n } as TextStyle,\n inputAndroid: {\n includeFontPadding: false,\n },\n hint: {\n ...textareaTypography.hint,\n },\n});\n","import {\n forwardRef,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ComponentRef,\n type ReactNode,\n} from \"react\";\nimport {\n Animated,\n Easing,\n Pressable,\n StyleSheet,\n Text,\n type PressableProps,\n type StyleProp,\n type TextStyle,\n type ViewStyle,\n} from \"react-native\";\nimport { colors, inputTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport interface ToggleProps extends Omit<\n PressableProps,\n \"onPress\" | \"disabled\" | \"style\" | \"children\" | \"hitSlop\"\n> {\n value?: boolean;\n defaultValue?: boolean;\n onValueChange?: (value: boolean) => void;\n disabled?: boolean;\n /** Visible label rendered next to the track. */\n label?: string;\n children?: ReactNode;\n /** Accessible name for screen readers; falls back to `label`/`children` when omitted. */\n accessibilityLabel?: string;\n style?: StyleProp<ViewStyle>;\n labelStyle?: StyleProp<TextStyle>;\n className?: string;\n hitSlop?: PressableProps[\"hitSlop\"];\n}\n\nconst TRACK_WIDTH = 44;\nconst TRACK_HEIGHT = 24;\nconst TRACK_RADIUS = 43;\nconst TRACK_PADDING = 4;\nconst THUMB_SIZE = TRACK_HEIGHT - TRACK_PADDING * 2;\nconst THUMB_TRAVEL = TRACK_WIDTH - TRACK_PADDING * 2 - THUMB_SIZE;\nconst ANIMATION_DURATION = 300;\n\nexport const Toggle = forwardRef<ComponentRef<typeof Pressable>, ToggleProps>(function Toggle(\n {\n value,\n defaultValue = false,\n onValueChange,\n disabled = false,\n label,\n children,\n accessibilityLabel,\n style,\n labelStyle,\n className,\n hitSlop = 10,\n ...rest\n },\n forwardedRef,\n) {\n const containerRef = useRef<ComponentRef<typeof Pressable>>(null);\n const isControlled = typeof value === \"boolean\";\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const isActive = isControlled ? value : uncontrolledValue;\n const labelContent = children ?? label;\n const resolvedAccessibilityLabel =\n accessibilityLabel ?? (typeof labelContent === \"string\" ? labelContent : undefined);\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n\n const progress = useRef(new Animated.Value(isActive ? 1 : 0)).current;\n\n useApplyWebClassName(containerRef, className);\n\n useEffect(() => {\n Animated.timing(progress, {\n toValue: isActive ? 1 : 0,\n duration: ANIMATION_DURATION,\n easing: Easing.out(Easing.ease),\n useNativeDriver: false,\n }).start();\n }, [isActive, progress]);\n\n const handlePress = () => {\n if (disabled) return;\n const next = !isActive;\n if (!isControlled) setUncontrolledValue(next);\n onValueChange?.(next);\n };\n\n const trackBackgroundColor = progress.interpolate({\n inputRange: [0, 1],\n outputRange: [colors.grey700, colors.primary],\n });\n\n const thumbTranslateX = progress.interpolate({\n inputRange: [0, 1],\n outputRange: [0, THUMB_TRAVEL],\n });\n\n return (\n <Pressable\n {...rest}\n ref={setContainerRef}\n onPress={handlePress}\n disabled={disabled}\n hitSlop={hitSlop}\n accessibilityRole=\"switch\"\n accessibilityLabel={resolvedAccessibilityLabel}\n accessibilityState={{ checked: isActive, disabled }}\n style={[styles.pressable, disabled && styles.disabled, style]}\n >\n <Animated.View\n style={[\n styles.track,\n {\n backgroundColor: trackBackgroundColor,\n },\n ]}\n >\n <Animated.View\n style={[\n styles.thumb,\n {\n transform: [{ translateX: thumbTranslateX }],\n },\n ]}\n />\n </Animated.View>\n\n {labelContent != null && labelContent !== false ? (\n typeof labelContent === \"string\" || typeof labelContent === \"number\" ? (\n <Text style={[styles.label, labelStyle]}>{labelContent}</Text>\n ) : (\n labelContent\n )\n ) : null}\n </Pressable>\n );\n});\n\nconst styles = StyleSheet.create({\n pressable: {\n flexDirection: \"row\",\n alignItems: \"center\",\n alignSelf: \"flex-start\",\n gap: 10,\n },\n disabled: {\n opacity: 0.6,\n },\n track: {\n width: TRACK_WIDTH,\n height: TRACK_HEIGHT,\n borderRadius: TRACK_RADIUS,\n padding: TRACK_PADDING,\n justifyContent: \"center\",\n },\n thumb: {\n width: THUMB_SIZE,\n height: THUMB_SIZE,\n borderRadius: THUMB_SIZE / 2,\n backgroundColor: colors.white,\n },\n label: {\n ...inputTypography.field,\n color: colors.white,\n },\n});\n","import { forwardRef, useMemo, useRef, useState, type ComponentRef } from \"react\";\nimport {\n Pressable,\n StyleSheet,\n Text,\n View,\n type PressableProps,\n type StyleProp,\n type TextStyle,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport { StarFilledIcon, StarIcon } from \"../../icons\";\nimport { colors, ratingTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nconst STAR_COUNT = 5;\nconst BASE_ITEM_SIZE = 16;\nconst ICON_WIDTH_RATIO = 12.57 / BASE_ITEM_SIZE;\nconst ICON_HEIGHT_RATIO = 11.98 / BASE_ITEM_SIZE;\nconst STAR_GAP_RATIO = 2 / BASE_ITEM_SIZE;\n\nexport interface RatingInputProps extends Omit<ViewProps, \"style\" | \"children\"> {\n value?: number;\n defaultValue?: number;\n onValueChange?: (value: number) => void;\n showValue?: boolean;\n precision?: number;\n /** Star item size. Glyph dimensions and default spacing scale with it. */\n size?: number;\n /** Overrides the proportional spacing between star items. */\n starGap?: number;\n readOnly?: boolean;\n disabled?: boolean;\n style?: StyleProp<ViewStyle>;\n valueStyle?: StyleProp<TextStyle>;\n className?: string;\n hitSlop?: PressableProps[\"hitSlop\"];\n accessibilityLabel?: string;\n}\n\nfunction clamp(value: number) {\n return Math.max(0, Math.min(value, STAR_COUNT));\n}\n\nexport const RatingInput = forwardRef<ComponentRef<typeof View>, RatingInputProps>(\n function RatingInput(\n {\n value,\n defaultValue = 0,\n onValueChange,\n showValue = true,\n precision = 1,\n size = 20,\n starGap,\n readOnly = false,\n disabled = false,\n style,\n valueStyle,\n className,\n hitSlop = 6,\n accessibilityLabel,\n ...rest\n },\n forwardedRef,\n ) {\n const containerRef = useRef<ComponentRef<typeof View>>(null);\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n const isControlled = value !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = useState(() => clamp(defaultValue));\n const selectedValue = clamp(isControlled ? value : uncontrolledValue);\n const selectedStarCount = Math.round(selectedValue);\n const iconWidth = size * ICON_WIDTH_RATIO;\n const iconHeight = size * ICON_HEIGHT_RATIO;\n const resolvedStarGap = starGap ?? size * STAR_GAP_RATIO;\n const resolvedAccessibilityLabel =\n accessibilityLabel ?? (readOnly ? `${selectedValue} out of ${STAR_COUNT} stars` : \"Rating\");\n\n useApplyWebClassName(containerRef, className);\n\n const selectValue = (nextValue: number) => {\n if (disabled || nextValue === selectedValue) return;\n if (!isControlled) setUncontrolledValue(nextValue);\n onValueChange?.(nextValue);\n };\n\n return (\n <View\n {...rest}\n ref={setContainerRef}\n style={[styles.root, disabled && styles.disabled, style]}\n >\n {showValue ? (\n <Text numberOfLines={1} style={[styles.value, valueStyle]}>\n {selectedValue.toFixed(precision)}\n </Text>\n ) : null}\n\n <View\n accessibilityRole={readOnly ? \"image\" : \"radiogroup\"}\n accessibilityLabel={resolvedAccessibilityLabel}\n accessibilityState={{ disabled }}\n style={[styles.stars, { gap: resolvedStarGap }]}\n >\n {Array.from({ length: STAR_COUNT }, (_, index) => {\n const starValue = index + 1;\n const isSelected = starValue <= selectedStarCount;\n const icon = isSelected ? (\n <StarFilledIcon size={iconWidth} height={iconHeight} />\n ) : (\n <StarIcon size={iconWidth} height={iconHeight} />\n );\n const itemStyle = [styles.starItem, { width: size, height: size }];\n\n if (readOnly) {\n return (\n <View key={starValue} style={itemStyle}>\n {icon}\n </View>\n );\n }\n\n return (\n <Pressable\n key={starValue}\n disabled={disabled}\n hitSlop={hitSlop}\n onPress={() => selectValue(starValue)}\n accessibilityRole=\"radio\"\n accessibilityLabel={`${starValue} star${starValue === 1 ? \"\" : \"s\"}`}\n accessibilityState={{ checked: isSelected, disabled }}\n style={itemStyle}\n >\n {icon}\n </Pressable>\n );\n })}\n </View>\n </View>\n );\n },\n);\n\nconst styles = StyleSheet.create({\n root: {\n flexDirection: \"row\",\n alignItems: \"center\",\n flexWrap: \"nowrap\",\n alignSelf: \"flex-start\",\n gap: 16,\n },\n stars: {\n flexDirection: \"row\",\n alignItems: \"center\",\n },\n starItem: {\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n value: {\n ...ratingTypography,\n color: colors.white,\n },\n disabled: {\n opacity: 0.5,\n },\n});\n","import { forwardRef, useEffect, useMemo, useRef, useState, type ComponentRef } from \"react\";\nimport {\n Image,\n Pressable,\n StyleSheet,\n Text,\n View,\n type StyleProp,\n type TextStyle,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport { UserIcon } from \"../../icons\";\nimport { colors, commentCardTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\nimport { RatingInput } from \"../RatingInput\";\n\nexport interface CommentCardProps extends Omit<ViewProps, \"style\" | \"children\"> {\n userName: string;\n date: string;\n commentText: string;\n rating: number;\n imageUrl?: string | null;\n maxCommentLines?: number;\n maxCommentLength?: number;\n readMoreLabel?: string;\n readLessLabel?: string;\n onExpandedChange?: (expanded: boolean) => void;\n style?: StyleProp<ViewStyle>;\n commentStyle?: StyleProp<TextStyle>;\n className?: string;\n}\n\nconst CARD_WIDTH = 370;\nconst CARD_MIN_HEIGHT = 173;\nconst AVATAR_SIZE = 44;\n\nexport const CommentCard = forwardRef<ComponentRef<typeof View>, CommentCardProps>(\n function CommentCard(\n {\n userName,\n date,\n commentText,\n rating,\n imageUrl,\n maxCommentLines = 3,\n maxCommentLength = 111,\n readMoreLabel = \"Դիտել ավելին\",\n readLessLabel = \"Փակել\",\n onExpandedChange,\n style,\n commentStyle,\n className,\n ...rest\n },\n forwardedRef,\n ) {\n const containerRef = useRef<ComponentRef<typeof View>>(null);\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n const [imageFailed, setImageFailed] = useState(false);\n const [expanded, setExpanded] = useState(false);\n const [actionHovered, setActionHovered] = useState(false);\n const hasImage = Boolean(imageUrl) && !imageFailed;\n const shouldShowAction = Array.from(commentText).length >= maxCommentLength;\n\n useApplyWebClassName(containerRef, className);\n\n useEffect(() => {\n setImageFailed(false);\n }, [imageUrl]);\n\n useEffect(() => {\n setExpanded(false);\n setActionHovered(false);\n }, [commentText, maxCommentLength, maxCommentLines]);\n\n const toggleExpanded = () => {\n const next = !expanded;\n setExpanded(next);\n onExpandedChange?.(next);\n };\n\n return (\n <View {...rest} ref={setContainerRef} style={[styles.root, style]}>\n <View style={styles.header}>\n <View style={styles.avatar}>\n {hasImage ? (\n <Image\n source={{ uri: imageUrl ?? undefined }}\n style={styles.avatarImage}\n onError={() => setImageFailed(true)}\n />\n ) : (\n <UserIcon size={20} color={colors.primary} />\n )}\n </View>\n\n <View style={styles.identity}>\n <Text numberOfLines={1} style={styles.name}>\n {userName}\n </Text>\n <Text numberOfLines={1} style={styles.date}>\n {date}\n </Text>\n </View>\n\n <RatingInput value={rating} readOnly showValue={false} size={16} />\n </View>\n\n <Text\n numberOfLines={expanded ? undefined : maxCommentLines}\n style={[styles.comment, commentStyle]}\n >\n {commentText}\n </Text>\n\n {shouldShowAction ? (\n <Pressable\n onPress={toggleExpanded}\n accessibilityRole=\"button\"\n accessibilityState={{ expanded }}\n hitSlop={6}\n onHoverIn={() => setActionHovered(true)}\n onHoverOut={() => setActionHovered(false)}\n style={styles.action}\n >\n <Text\n style={[\n styles.actionText,\n expanded && styles.closeActionText,\n actionHovered &&\n (expanded ? styles.closeActionTextHovered : styles.openActionTextHovered),\n ]}\n >\n {expanded ? readLessLabel : readMoreLabel}\n </Text>\n </Pressable>\n ) : null}\n </View>\n );\n },\n);\n\nconst styles = StyleSheet.create({\n root: {\n width: CARD_WIDTH,\n minHeight: CARD_MIN_HEIGHT,\n padding: 16,\n gap: 12,\n borderRadius: 12,\n backgroundColor: colors.grey750,\n },\n header: {\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 8,\n },\n avatar: {\n width: AVATAR_SIZE,\n height: AVATAR_SIZE,\n flexShrink: 0,\n alignItems: \"center\",\n justifyContent: \"center\",\n overflow: \"hidden\",\n borderRadius: AVATAR_SIZE / 2,\n backgroundColor: colors.grey600,\n },\n avatarImage: {\n width: AVATAR_SIZE,\n height: AVATAR_SIZE,\n },\n identity: {\n minWidth: 0,\n flex: 1,\n gap: 4,\n },\n name: {\n ...commentCardTypography.name,\n color: colors.white,\n },\n date: {\n ...commentCardTypography.date,\n color: colors.grey0,\n },\n comment: {\n ...commentCardTypography.comment,\n color: colors.white,\n },\n action: {\n alignSelf: \"flex-start\",\n marginTop: \"auto\",\n minHeight: 16,\n justifyContent: \"center\",\n },\n actionText: {\n ...commentCardTypography.action,\n color: colors.white,\n },\n closeActionText: {\n color: colors.primary,\n },\n openActionTextHovered: {\n color: colors.primary,\n },\n closeActionTextHovered: {\n color: colors.white,\n },\n});\n","import type { RangeValue } from \"./Range.types\";\n\nexport type ParsedRangeDraft =\n { kind: \"empty\" } | { kind: \"invalid\" } | { kind: \"value\"; value: number };\n\nfunction decimals(value: number) {\n const [coefficient, exponentText = \"0\"] = Math.abs(value).toString().toLowerCase().split(\"e\");\n const [, fraction = \"\"] = coefficient.split(\".\");\n return Math.max(0, fraction.length - Number(exponentText));\n}\n\nexport function clampAndSnap(value: number, min: number, max: number, step: number) {\n const clamped = Math.min(max, Math.max(min, value));\n const snapped = min + Math.round((clamped - min) / step) * step;\n const precision = Math.min(15, Math.max(decimals(min), decimals(step)));\n return Number(Math.min(max, Math.max(min, snapped)).toFixed(precision));\n}\n\nexport function clampRangeValue(value: number, min: number, max: number) {\n return Math.min(max, Math.max(min, value));\n}\n\nexport function snapRangeDelta(start: number, delta: number, step: number) {\n const steps = Math.round(Math.abs(delta) / step) * Math.sign(delta);\n const precision = Math.min(15, Math.max(decimals(start), decimals(step)));\n return Number((start + steps * step).toFixed(precision));\n}\n\nexport function parseRangeDraft(\n draft: string,\n parseValue: (value: string) => number | undefined,\n): ParsedRangeDraft {\n if (!draft.trim()) return { kind: \"empty\" };\n\n const parsed = parseValue(draft);\n if (parsed === undefined || !Number.isFinite(parsed)) return { kind: \"invalid\" };\n\n return { kind: \"value\", value: parsed };\n}\n\nexport function normalizeRangeValue(value: RangeValue, min: number, max: number): RangeValue {\n const from =\n typeof value.from === \"number\" && Number.isFinite(value.from)\n ? clampRangeValue(value.from, min, max)\n : undefined;\n const to =\n typeof value.to === \"number\" && Number.isFinite(value.to)\n ? clampRangeValue(value.to, min, max)\n : undefined;\n\n if (from !== undefined && to !== undefined && from > to) {\n return { from: to, to: from };\n }\n\n return { from, to };\n}\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ComponentRef,\n} from \"react\";\nimport {\n PanResponder,\n Platform,\n Pressable,\n StyleSheet,\n Text,\n TextInput,\n View,\n type AccessibilityActionEvent,\n type GestureResponderEvent,\n type LayoutChangeEvent,\n type PointerEvent,\n type TextStyle,\n} from \"react-native\";\nimport { colors, fonts } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\nimport type { RangeProps, RangeValue } from \"./Range.types\";\nimport {\n clampAndSnap,\n clampRangeValue,\n normalizeRangeValue,\n parseRangeDraft,\n snapRangeDelta,\n} from \"./Range.utils\";\n\nconst DEFAULT_WIDTH = 347;\nconst TRACK_HEIGHT = 4;\nconst TRACK_HORIZONTAL_INSET = 20;\nconst THUMB_SIZE = 20;\nconst INPUT_WIDTH = 120;\n\ntype WebKeyboardEvent = {\n key?: string;\n nativeEvent?: { key?: string };\n preventDefault: () => void;\n stopPropagation: () => void;\n};\n\nfunction defaultParseValue(value: string) {\n const normalized = value.replace(/[\\s,]/g, \"\");\n if (!normalized) return undefined;\n const parsed = Number(normalized);\n return Number.isFinite(parsed) ? parsed : undefined;\n}\n\nfunction valuesEqual(a: RangeValue, b: RangeValue) {\n return a.from === b.from && a.to === b.to;\n}\n\nexport const Range = forwardRef<ComponentRef<typeof View>, RangeProps>(function Range(\n {\n min = 0,\n max = 100,\n step = 1,\n value,\n defaultValue = {},\n onValueChange,\n fromPlaceholder = \"Սկսած\",\n toPlaceholder = \"Մինչև\",\n currency = \"֏\",\n fromAccessibilityLabel = fromPlaceholder,\n toAccessibilityLabel = toPlaceholder,\n disabled = false,\n formatValue = String,\n parseValue = defaultParseValue,\n style,\n className,\n onLayout,\n ...rest\n },\n forwardedRef,\n) {\n const rootRef = useRef<ComponentRef<typeof View>>(null);\n const fromThumbRef = useRef<ComponentRef<typeof View>>(null);\n const toThumbRef = useRef<ComponentRef<typeof View>>(null);\n const setRootRef = useMemo(() => mergeRefs(rootRef, forwardedRef), [forwardedRef]);\n const lowerBound = Math.min(min, max);\n const upperBound = Math.max(min, max);\n const safeStep = Number.isFinite(step) && step > 0 ? step : 1;\n const isControlled = value !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = useState(() =>\n normalizeRangeValue(defaultValue, lowerBound, upperBound),\n );\n const resolvedValue = normalizeRangeValue(\n isControlled ? value : uncontrolledValue,\n lowerBound,\n upperBound,\n );\n const latestValueRef = useRef(resolvedValue);\n const [trackWidth, setTrackWidth] = useState(DEFAULT_WIDTH);\n const [fromDraft, setFromDraft] = useState(\n resolvedValue.from === undefined ? \"\" : formatValue(resolvedValue.from),\n );\n const [toDraft, setToDraft] = useState(\n resolvedValue.to === undefined ? \"\" : formatValue(resolvedValue.to),\n );\n const [editingField, setEditingField] = useState<\"from\" | \"to\" | null>(null);\n const [focusedThumb, setFocusedThumb] = useState<\"from\" | \"to\" | null>(null);\n const dragStartRef = useRef({ from: lowerBound, to: upperBound });\n const nativeDragTargetRef = useRef<\"from\" | \"to\" | null>(null);\n const pointerDragRef = useRef<{\n target: \"from\" | \"to\";\n pointerId: number;\n startPageX: number;\n startValue: number;\n coincident: boolean;\n } | null>(null);\n\n useApplyWebClassName(rootRef, className?.trim() || undefined);\n\n useEffect(() => {\n if (editingField !== \"from\") {\n setFromDraft(resolvedValue.from === undefined ? \"\" : formatValue(resolvedValue.from));\n }\n }, [editingField, formatValue, resolvedValue.from]);\n\n useEffect(() => {\n if (editingField !== \"to\") {\n setToDraft(resolvedValue.to === undefined ? \"\" : formatValue(resolvedValue.to));\n }\n }, [editingField, formatValue, resolvedValue.to]);\n\n useEffect(() => {\n const nextValue = { from: resolvedValue.from, to: resolvedValue.to };\n const changedOutsideInteraction = !valuesEqual(nextValue, latestValueRef.current);\n latestValueRef.current = nextValue;\n\n if (!changedOutsideInteraction) return;\n if (editingField === \"from\") {\n setFromDraft(nextValue.from === undefined ? \"\" : formatValue(nextValue.from));\n }\n if (editingField === \"to\") {\n setToDraft(nextValue.to === undefined ? \"\" : formatValue(nextValue.to));\n }\n }, [editingField, formatValue, resolvedValue.from, resolvedValue.to]);\n\n useEffect(() => {\n if (isControlled) return;\n setUncontrolledValue((current) => {\n const normalized = normalizeRangeValue(current, lowerBound, upperBound);\n return valuesEqual(current, normalized) ? current : normalized;\n });\n }, [isControlled, lowerBound, upperBound]);\n\n const emitValue = useCallback(\n (nextValue: RangeValue) => {\n const normalized = normalizeRangeValue(nextValue, lowerBound, upperBound);\n if (valuesEqual(normalized, latestValueRef.current)) return;\n latestValueRef.current = normalized;\n if (!isControlled) setUncontrolledValue(normalized);\n onValueChange?.(normalized);\n },\n [isControlled, lowerBound, onValueChange, upperBound],\n );\n\n const updateFrom = useCallback(\n (next: number | undefined) => {\n const current = latestValueRef.current;\n const maximum = current.to ?? upperBound;\n const snapped =\n next === undefined ? undefined : clampAndSnap(next, lowerBound, upperBound, safeStep);\n emitValue({\n ...current,\n from: snapped === undefined ? undefined : clampRangeValue(snapped, lowerBound, maximum),\n });\n },\n [emitValue, lowerBound, safeStep, upperBound],\n );\n\n const updateTo = useCallback(\n (next: number | undefined) => {\n const current = latestValueRef.current;\n const minimum = current.from ?? lowerBound;\n const snapped =\n next === undefined ? undefined : clampAndSnap(next, lowerBound, upperBound, safeStep);\n emitValue({\n ...current,\n to: snapped === undefined ? undefined : clampRangeValue(snapped, minimum, upperBound),\n });\n },\n [emitValue, lowerBound, safeStep, upperBound],\n );\n\n const updateFromInput = useCallback(\n (next: number | undefined) => {\n const current = latestValueRef.current;\n const maximum = current.to ?? upperBound;\n emitValue({\n ...current,\n from: next === undefined ? undefined : clampRangeValue(next, lowerBound, maximum),\n });\n },\n [emitValue, lowerBound, upperBound],\n );\n\n const updateToInput = useCallback(\n (next: number | undefined) => {\n const current = latestValueRef.current;\n const minimum = current.from ?? lowerBound;\n emitValue({\n ...current,\n to: next === undefined ? undefined : clampRangeValue(next, minimum, upperBound),\n });\n },\n [emitValue, lowerBound, upperBound],\n );\n\n const span = upperBound - lowerBound;\n const thumbTravel = Math.max(0, trackWidth - TRACK_HORIZONTAL_INSET * 2 - THUMB_SIZE);\n const effectiveFrom = resolvedValue.from ?? lowerBound;\n const effectiveTo = resolvedValue.to ?? upperBound;\n const valueToOffset = useCallback(\n (next: number) => (span === 0 ? 0 : ((next - lowerBound) / span) * thumbTravel),\n [lowerBound, span, thumbTravel],\n );\n const deltaToValue = useCallback(\n (delta: number) => (thumbTravel === 0 || span === 0 ? 0 : (delta / thumbTravel) * span),\n [span, thumbTravel],\n );\n const fromOffset = valueToOffset(effectiveFrom);\n const toOffset = valueToOffset(effectiveTo);\n\n const fromPanResponder = useMemo(\n () =>\n PanResponder.create({\n onStartShouldSetPanResponder: () => !disabled,\n onMoveShouldSetPanResponder: () => !disabled,\n onPanResponderGrant: () => {\n dragStartRef.current = { from: effectiveFrom, to: effectiveTo };\n nativeDragTargetRef.current = effectiveFrom === effectiveTo ? null : \"from\";\n },\n onPanResponderMove: (_, gesture) => {\n if (!nativeDragTargetRef.current && gesture.dx !== 0) {\n nativeDragTargetRef.current = gesture.dx < 0 ? \"from\" : \"to\";\n }\n const delta = deltaToValue(gesture.dx);\n if (nativeDragTargetRef.current === \"to\") {\n updateToInput(snapRangeDelta(dragStartRef.current.to, delta, safeStep));\n } else if (nativeDragTargetRef.current === \"from\") {\n updateFromInput(snapRangeDelta(dragStartRef.current.from, delta, safeStep));\n }\n },\n onPanResponderRelease: () => {\n nativeDragTargetRef.current = null;\n },\n onPanResponderTerminate: () => {\n nativeDragTargetRef.current = null;\n },\n }),\n [deltaToValue, disabled, effectiveFrom, effectiveTo, safeStep, updateFromInput, updateToInput],\n );\n\n const toPanResponder = useMemo(\n () =>\n PanResponder.create({\n onStartShouldSetPanResponder: () => !disabled,\n onMoveShouldSetPanResponder: () => !disabled,\n onPanResponderGrant: () => {\n dragStartRef.current = { from: effectiveFrom, to: effectiveTo };\n nativeDragTargetRef.current = effectiveFrom === effectiveTo ? null : \"to\";\n },\n onPanResponderMove: (_, gesture) => {\n if (!nativeDragTargetRef.current && gesture.dx !== 0) {\n nativeDragTargetRef.current = gesture.dx < 0 ? \"from\" : \"to\";\n }\n const delta = deltaToValue(gesture.dx);\n if (nativeDragTargetRef.current === \"from\") {\n updateFromInput(snapRangeDelta(dragStartRef.current.from, delta, safeStep));\n } else if (nativeDragTargetRef.current === \"to\") {\n updateToInput(snapRangeDelta(dragStartRef.current.to, delta, safeStep));\n }\n },\n onPanResponderRelease: () => {\n nativeDragTargetRef.current = null;\n },\n onPanResponderTerminate: () => {\n nativeDragTargetRef.current = null;\n },\n }),\n [deltaToValue, disabled, effectiveFrom, effectiveTo, safeStep, updateFromInput, updateToInput],\n );\n\n const beginPointerDrag = (target: \"from\" | \"to\", currentValue: number, event: PointerEvent) => {\n if (disabled) return;\n event.stopPropagation();\n const pointerId = event.nativeEvent.pointerId;\n const node = event.currentTarget as unknown as {\n focus?: () => void;\n setPointerCapture?: (id: number) => void;\n };\n node.focus?.();\n node.setPointerCapture?.(pointerId);\n pointerDragRef.current = {\n target,\n pointerId,\n startPageX: event.nativeEvent.pageX,\n startValue: currentValue,\n coincident: effectiveFrom === effectiveTo,\n };\n };\n\n const movePointerDrag = (event: PointerEvent) => {\n const drag = pointerDragRef.current;\n if (!drag || drag.pointerId !== event.nativeEvent.pointerId) return;\n const deltaX = event.nativeEvent.pageX - drag.startPageX;\n const nextValue = snapRangeDelta(drag.startValue, deltaToValue(deltaX), safeStep);\n if (drag.coincident && deltaX !== 0) {\n drag.target = deltaX < 0 ? \"from\" : \"to\";\n drag.coincident = false;\n }\n const target = drag.target;\n if (target === \"from\") updateFromInput(nextValue);\n else updateToInput(nextValue);\n };\n\n const endPointerDrag = (event: PointerEvent) => {\n const drag = pointerDragRef.current;\n if (!drag || drag.pointerId !== event.nativeEvent.pointerId) return;\n const node = event.currentTarget as unknown as {\n hasPointerCapture?: (id: number) => boolean;\n releasePointerCapture?: (id: number) => void;\n };\n if (node.hasPointerCapture?.(drag.pointerId)) node.releasePointerCapture?.(drag.pointerId);\n pointerDragRef.current = null;\n };\n\n const handleAccessibilityAction = (\n event: AccessibilityActionEvent,\n current: number,\n update: (value: number) => void,\n ) => {\n if (disabled) return;\n if (event.nativeEvent.actionName === \"increment\") update(current + safeStep);\n if (event.nativeEvent.actionName === \"decrement\") update(current - safeStep);\n };\n\n const handleWebKeyDown = (\n event: WebKeyboardEvent,\n current: number,\n minimum: number,\n maximum: number,\n update: (value: number) => void,\n ) => {\n if (disabled) return;\n\n const key = event.nativeEvent?.key ?? event.key;\n let nextValue: number | undefined;\n\n if (key === \"ArrowRight\" || key === \"ArrowUp\") nextValue = current + safeStep;\n if (key === \"ArrowLeft\" || key === \"ArrowDown\") nextValue = current - safeStep;\n if (key === \"Home\") nextValue = minimum;\n if (key === \"End\") nextValue = maximum;\n\n if (nextValue === undefined) return;\n event.preventDefault();\n event.stopPropagation();\n update(nextValue);\n };\n\n const commitDraft = (draft: string, update: (value: number | undefined) => void) => {\n const result = parseRangeDraft(draft, parseValue);\n if (result.kind === \"empty\") update(undefined);\n if (result.kind === \"value\") update(result.value);\n };\n\n const changeFromDraft = (draft: string) => {\n setFromDraft(draft);\n const result = parseRangeDraft(draft, parseValue);\n if (result.kind === \"empty\") updateFromInput(undefined);\n if (result.kind === \"value\") updateFromInput(result.value);\n };\n\n const changeToDraft = (draft: string) => {\n setToDraft(draft);\n const result = parseRangeDraft(draft, parseValue);\n if (result.kind === \"empty\") updateToInput(undefined);\n if (result.kind === \"value\") updateToInput(result.value);\n };\n\n const focusWebThumb = (target: \"from\" | \"to\") => {\n if (Platform.OS !== \"web\") return;\n const node = (target === \"from\" ? fromThumbRef.current : toThumbRef.current) as unknown as {\n focus?: () => void;\n } | null;\n node?.focus?.();\n };\n\n const updateNearestFromTrack = (locationX: number) => {\n if (disabled || thumbTravel === 0 || span === 0) return;\n\n const offset = Math.min(\n thumbTravel,\n Math.max(0, locationX - TRACK_HORIZONTAL_INSET - THUMB_SIZE / 2),\n );\n const nextValue = clampAndSnap(\n lowerBound + (offset / thumbTravel) * span,\n lowerBound,\n upperBound,\n safeStep,\n );\n\n const fromDistance = Math.abs(nextValue - effectiveFrom);\n const toDistance = Math.abs(nextValue - effectiveTo);\n\n if (effectiveFrom === effectiveTo && fromDistance === toDistance) {\n if (nextValue < effectiveFrom) {\n focusWebThumb(\"from\");\n updateFrom(nextValue);\n }\n if (nextValue > effectiveTo) {\n focusWebThumb(\"to\");\n updateTo(nextValue);\n }\n } else if (fromDistance <= toDistance) {\n focusWebThumb(\"from\");\n updateFrom(nextValue);\n } else {\n focusWebThumb(\"to\");\n updateTo(nextValue);\n }\n };\n\n const handleTrackPress = (event: GestureResponderEvent) => {\n updateNearestFromTrack(event.nativeEvent.locationX);\n };\n\n const handleTrackLayout = (event: LayoutChangeEvent) => {\n setTrackWidth(event.nativeEvent.layout.width);\n };\n\n const fromValueText = `${formatValue(effectiveFrom)}${currency ? ` ${currency}` : \"\"}`;\n const toValueText = `${formatValue(effectiveTo)}${currency ? ` ${currency}` : \"\"}`;\n\n return (\n <View\n {...rest}\n ref={setRootRef}\n onLayout={onLayout}\n style={[styles.root, disabled && styles.disabled, style]}\n >\n {/* The 20px plane keeps native hit-testing on the thumbs while the rail stays at y=8. */}\n <Pressable\n accessible={false}\n disabled={disabled}\n focusable={false}\n onLayout={handleTrackLayout}\n onPointerDown={\n Platform.OS === \"web\"\n ? (event) => {\n event.preventDefault();\n updateNearestFromTrack(event.nativeEvent.offsetX);\n }\n : undefined\n }\n onPress={Platform.OS === \"web\" ? undefined : handleTrackPress}\n style={styles.sliderPlane}\n tabIndex={-1}\n >\n <View pointerEvents=\"none\" style={styles.track} />\n <View\n pointerEvents=\"none\"\n style={[\n styles.activeTrack,\n {\n left: TRACK_HORIZONTAL_INSET + fromOffset,\n width: toOffset - fromOffset + THUMB_SIZE,\n },\n ]}\n />\n {/* Native Pressable owns responder handlers, so the draggable hosts intentionally stay Views. */}\n <View\n ref={fromThumbRef}\n {...(Platform.OS === \"web\"\n ? {\n onPointerCancel: endPointerDrag,\n onPointerDown: (event: PointerEvent) =>\n beginPointerDrag(\"from\", effectiveFrom, event),\n onLostPointerCapture: endPointerDrag,\n onPointerMove: movePointerDrag,\n onPointerUp: endPointerDrag,\n onBlur: () => setFocusedThumb(null),\n onFocus: () => setFocusedThumb(\"from\"),\n onKeyDown: (event: WebKeyboardEvent) =>\n handleWebKeyDown(event, effectiveFrom, lowerBound, effectiveTo, updateFromInput),\n }\n : fromPanResponder.panHandlers)}\n aria-disabled={disabled}\n aria-valuemax={effectiveTo}\n aria-valuemin={lowerBound}\n aria-valuenow={effectiveFrom}\n aria-valuetext={fromValueText}\n accessible\n accessibilityActions={[{ name: \"increment\" }, { name: \"decrement\" }]}\n accessibilityLabel={fromAccessibilityLabel}\n accessibilityRole=\"adjustable\"\n accessibilityState={{ disabled }}\n accessibilityValue={{\n min: lowerBound,\n max: effectiveTo,\n now: effectiveFrom,\n text: fromValueText,\n }}\n focusable={!disabled}\n onAccessibilityAction={(event) =>\n handleAccessibilityAction(event, effectiveFrom, updateFromInput)\n }\n pointerEvents={disabled ? \"none\" : \"auto\"}\n style={[\n styles.thumb,\n Platform.OS === \"web\" && styles.thumbWeb,\n focusedThumb === \"from\" && Platform.OS === \"web\" && styles.thumbFocusedWeb,\n { left: TRACK_HORIZONTAL_INSET + fromOffset },\n ]}\n tabIndex={disabled ? -1 : 0}\n />\n <View\n ref={toThumbRef}\n {...(Platform.OS === \"web\"\n ? {\n onPointerCancel: endPointerDrag,\n onPointerDown: (event: PointerEvent) => beginPointerDrag(\"to\", effectiveTo, event),\n onLostPointerCapture: endPointerDrag,\n onPointerMove: movePointerDrag,\n onPointerUp: endPointerDrag,\n onBlur: () => setFocusedThumb(null),\n onFocus: () => setFocusedThumb(\"to\"),\n onKeyDown: (event: WebKeyboardEvent) =>\n handleWebKeyDown(event, effectiveTo, effectiveFrom, upperBound, updateToInput),\n }\n : toPanResponder.panHandlers)}\n aria-disabled={disabled}\n aria-valuemax={upperBound}\n aria-valuemin={effectiveFrom}\n aria-valuenow={effectiveTo}\n aria-valuetext={toValueText}\n accessible\n accessibilityActions={[{ name: \"increment\" }, { name: \"decrement\" }]}\n accessibilityLabel={toAccessibilityLabel}\n accessibilityRole=\"adjustable\"\n accessibilityState={{ disabled }}\n accessibilityValue={{\n min: effectiveFrom,\n max: upperBound,\n now: effectiveTo,\n text: toValueText,\n }}\n focusable={!disabled}\n onAccessibilityAction={(event) =>\n handleAccessibilityAction(event, effectiveTo, updateToInput)\n }\n pointerEvents={disabled ? \"none\" : \"auto\"}\n style={[\n styles.thumb,\n Platform.OS === \"web\" && styles.thumbWeb,\n focusedThumb === \"to\" && Platform.OS === \"web\" && styles.thumbFocusedWeb,\n { left: TRACK_HORIZONTAL_INSET + toOffset },\n ]}\n tabIndex={disabled ? -1 : 0}\n />\n </Pressable>\n\n <View style={styles.inputs}>\n <RangeInput\n accessibilityLabel={fromAccessibilityLabel}\n currency={currency}\n disabled={disabled}\n focused={editingField === \"from\"}\n onChangeText={changeFromDraft}\n onCommit={() => {\n setEditingField(null);\n commitDraft(fromDraft, updateFromInput);\n }}\n onFocus={() => setEditingField(\"from\")}\n placeholder={fromPlaceholder}\n value={fromDraft}\n />\n <RangeInput\n accessibilityLabel={toAccessibilityLabel}\n currency={currency}\n disabled={disabled}\n focused={editingField === \"to\"}\n onChangeText={changeToDraft}\n onCommit={() => {\n setEditingField(null);\n commitDraft(toDraft, updateToInput);\n }}\n onFocus={() => setEditingField(\"to\")}\n placeholder={toPlaceholder}\n value={toDraft}\n />\n </View>\n </View>\n );\n});\n\nfunction RangeInput({\n accessibilityLabel,\n currency,\n disabled,\n focused,\n onChangeText,\n onCommit,\n onFocus,\n placeholder,\n value,\n}: {\n accessibilityLabel: string;\n currency: string;\n disabled: boolean;\n focused: boolean;\n onChangeText: (value: string) => void;\n onCommit: () => void;\n onFocus: () => void;\n placeholder: string;\n value: string;\n}) {\n return (\n <View style={[styles.inputField, focused && styles.inputFieldFocused]}>\n <TextInput\n aria-disabled={disabled}\n accessibilityLabel={accessibilityLabel}\n accessibilityState={{ disabled }}\n editable={!disabled}\n inputMode=\"decimal\"\n onBlur={onCommit}\n onChangeText={onChangeText}\n onFocus={onFocus}\n onSubmitEditing={onCommit}\n placeholder={placeholder}\n placeholderTextColor={colors.grey150}\n returnKeyType=\"done\"\n style={[styles.input, Platform.OS === \"web\" && styles.inputWeb]}\n tabIndex={disabled ? -1 : undefined}\n value={value}\n />\n <View style={styles.currencySlot}>\n <Text style={styles.currency}>{currency}</Text>\n </View>\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n root: {\n width: DEFAULT_WIDTH,\n gap: 15,\n alignSelf: \"flex-start\",\n },\n disabled: {\n opacity: 0.6,\n },\n sliderPlane: {\n width: \"100%\",\n height: THUMB_SIZE,\n position: \"relative\",\n },\n track: {\n position: \"absolute\",\n top: 8,\n left: 0,\n width: \"100%\",\n height: TRACK_HEIGHT,\n borderRadius: 16,\n backgroundColor: colors.grey600,\n },\n activeTrack: {\n position: \"absolute\",\n top: 8,\n height: TRACK_HEIGHT,\n borderRadius: 16,\n backgroundColor: colors.primary,\n },\n thumb: {\n position: \"absolute\",\n top: 0,\n width: THUMB_SIZE,\n height: THUMB_SIZE,\n borderRadius: 32,\n borderWidth: 2,\n borderColor: colors.primary,\n backgroundColor: colors.white,\n },\n thumbWeb: {\n cursor: \"grab\",\n touchAction: \"none\",\n } as unknown as TextStyle,\n thumbFocusedWeb: {\n outlineColor: colors.white,\n outlineOffset: 2,\n outlineStyle: \"solid\",\n outlineWidth: 2,\n } as TextStyle,\n inputs: {\n width: \"100%\",\n height: 44,\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n },\n inputField: {\n width: INPUT_WIDTH,\n height: 44,\n paddingVertical: 12,\n paddingHorizontal: 16,\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 10,\n borderWidth: 1,\n borderColor: colors.grey700,\n borderRadius: 60,\n backgroundColor: colors.grey700,\n },\n inputFieldFocused: {\n borderColor: colors.primary,\n },\n input: {\n minWidth: 0,\n flex: 1,\n margin: 0,\n padding: 0,\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"400\",\n lineHeight: 16,\n letterSpacing: 0.36,\n color: colors.white,\n },\n inputWeb: {\n outlineStyle: \"none\",\n } as TextStyle,\n currencySlot: {\n width: 20,\n height: 20,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n currency: {\n fontFamily: fonts.sans,\n fontSize: 16,\n fontWeight: \"600\",\n lineHeight: 22,\n color: colors.white,\n },\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/icons/ArrowRight/arrowRightPath.ts","../src/theme/colors.ts","../src/theme/typography.ts","../src/icons/ArrowRight/ArrowRightIcon.tsx","../src/icons/AlertTriangle/alertTrianglePath.ts","../src/icons/AlertTriangle/AlertTriangleIcon.tsx","../src/icons/Store/storeMarkPaths.ts","../src/icons/Store/StoreIcons.tsx","../src/icons/Bag/bagPath.ts","../src/icons/Bag/BagIcon.tsx","../src/icons/Bell/bellPath.ts","../src/icons/Bell/BellIcon.tsx","../src/icons/Building/buildingPath.ts","../src/icons/Building/BuildingIcon.tsx","../src/icons/Calendar/calendarPath.ts","../src/icons/Calendar/CalendarIcon.tsx","../src/icons/CalendarOutline/calendarOutlinePath.ts","../src/icons/CalendarOutline/CalendarOutlineIcon.tsx","../src/icons/Camera/cameraPath.ts","../src/icons/Camera/CameraIcon.tsx","../src/icons/Check/checkPath.ts","../src/icons/Check/CheckIcon.tsx","../src/icons/CheckBadge/checkBadgePath.ts","../src/icons/CheckBadge/CheckBadgeIcon.tsx","../src/icons/ChevronDown/chevronDownPath.ts","../src/icons/ChevronDown/ChevronDownIcon.tsx","../src/icons/ChevronLeft/chevronLeftPath.ts","../src/icons/ChevronLeft/ChevronLeftIcon.tsx","../src/icons/Clock/clockPath.ts","../src/icons/Clock/ClockIcon.tsx","../src/icons/Close/closePath.ts","../src/icons/Close/CloseIcon.tsx","../src/icons/Edit/editPath.ts","../src/icons/Edit/EditIcon.tsx","../src/icons/CottageCard/cottageCardPaths.ts","../src/icons/CottageCard/CottageCardIcons.tsx","../src/icons/CottageDetail/cottageDetailPaths.ts","../src/icons/CottageDetail/CottageDetailIcons.tsx","../src/icons/HouseRules/houseRulesPaths.ts","../src/icons/HouseRules/HouseRulesIcons.tsx","../src/icons/Facebook/facebookPath.ts","../src/icons/Facebook/FacebookIcon.tsx","../src/icons/Filters/filtersPath.ts","../src/icons/Filters/FiltersIcon.tsx","../src/icons/Heart/heartPath.ts","../src/icons/Heart/HeartIcon.tsx","../src/icons/Globe/globePath.ts","../src/icons/Globe/GlobeIcon.tsx","../src/icons/HelpCircle/helpCirclePath.ts","../src/icons/HelpCircle/HelpCircleIcon.tsx","../src/icons/Home/homePath.ts","../src/icons/Home/HomeIcon.tsx","../src/icons/Instagram/instagramPath.ts","../src/icons/Instagram/InstagramIcon.tsx","../src/icons/Key/keyPath.ts","../src/icons/Key/KeyIcon.tsx","../src/icons/LayoutGrid/layoutGridPath.ts","../src/icons/LayoutGrid/LayoutGridIcon.tsx","../src/icons/LinkedIn/linkedinPath.ts","../src/icons/LinkedIn/LinkedInIcon.tsx","../src/icons/ListView/listViewPath.ts","../src/icons/ListView/ListViewIcon.tsx","../src/icons/LocationPin/locationPinPath.ts","../src/icons/LocationPin/LocationPinIcon.tsx","../src/icons/LocationUser/locationUserPath.ts","../src/icons/LocationUser/LocationUserIcon.tsx","../src/icons/Lock/lockPath.ts","../src/icons/Lock/LockIcon.tsx","../src/icons/LogOut/logOutPath.ts","../src/icons/LogOut/LogOutIcon.tsx","../src/icons/Mail/mailPath.ts","../src/icons/Mail/MailIcon.tsx","../src/icons/MapView/mapViewPath.ts","../src/icons/MapView/MapViewIcon.tsx","../src/icons/MapControls/mapControlPaths.ts","../src/icons/MapControls/MapControlIcons.tsx","../src/icons/Menu/menuPath.ts","../src/icons/Menu/MenuIcon.tsx","../src/icons/Minus/minusPath.ts","../src/icons/Minus/MinusIcon.tsx","../src/icons/Navigate/navigatePath.ts","../src/icons/Navigate/NavigateIcon.tsx","../src/icons/Phone/phonePath.ts","../src/icons/Phone/PhoneIcon.tsx","../src/icons/Plus/plusPath.ts","../src/icons/Plus/PlusIcon.tsx","../src/icons/Refresh/refreshPath.ts","../src/icons/Refresh/RefreshIcon.tsx","../src/icons/RefundStatus/refundStatusPath.ts","../src/icons/RefundStatus/RefundStatusIcon.tsx","../src/icons/Search/searchPath.ts","../src/icons/Search/SearchIcon.tsx","../src/icons/Settings/settingsPath.ts","../src/icons/Settings/SettingsIcon.tsx","../src/icons/Show/showPath.ts","../src/icons/Show/ShowIcon.tsx","../src/icons/Sidebar/sidebarPath.ts","../src/icons/Sidebar/SidebarIcon.tsx","../src/icons/Sort/sortPath.ts","../src/icons/Sort/SortIcon.tsx","../src/icons/Star/starPath.ts","../src/icons/Star/StarIcon.tsx","../src/icons/StarFilled/StarFilledIcon.tsx","../src/icons/User/userPath.ts","../src/icons/User/UserIcon.tsx","../src/icons/UsersAlt/usersAltPath.ts","../src/icons/UsersAlt/UsersAltIcon.tsx","../src/icons/Video/videoPath.ts","../src/icons/Video/VideoIcon.tsx","../src/icons/registry.ts","../src/icons/Icon.tsx","../src/icons/Amenity/amenityPaths.ts","../src/icons/Amenity/AmenityIcon.tsx","../src/utils/mergeRefs.ts","../src/utils/useApplyWebClassName.ts","../src/primitives/Amenity/Amenity.tsx","../src/primitives/MenuItem/MenuItem.tsx","../src/primitives/FavoritesButton/FavoritesButton.tsx","../src/primitives/BrandLogo/brandLogoPaths.ts","../src/primitives/BrandLogo/BrandLogo.types.ts","../src/primitives/BrandLogo/BrandLogo.tsx","../src/components/Avatar/Avatar.tsx","../src/components/AvatarSimple/AvatarSimple.tsx","../src/components/AccountHeader/AccountHeader.tsx","../src/components/Badge/Badge.tsx","../src/components/StatusBadge/StatusBadge.tsx","../src/components/PaginationDots/PaginationDots.tsx","../src/components/InfoTile/InfoTile.tsx","../src/components/StepList/StepList.tsx","../src/components/Counter/Counter.tsx","../src/components/SegmentedToggle/SegmentedToggle.tsx","../src/components/Sidebar/Sidebar.tsx","../src/components/LanguageSwitcher/LanguageSwitcher.tsx","../src/components/StatCard/StatCard.tsx","../src/components/Button/Button.tsx","../src/components/Checkbox/Checkbox.tsx","../src/utils/dateUtils.ts","../src/components/DatePicker/DatePicker.tsx","../src/components/FloatingActionButton/FloatingActionButton.tsx","../src/utils/renderStatefulIcon.tsx","../src/components/Input/Input.tsx","../src/components/VerificationCodeInput/VerificationCodeInput.utils.ts","../src/components/VerificationCodeInput/VerificationCodeInput.tsx","../src/components/Select/Select.tsx","../src/components/Textarea/Textarea.tsx","../src/components/Toggle/Toggle.tsx","../src/components/RatingInput/RatingInput.tsx","../src/components/CommentCard/CommentCard.tsx","../src/components/Range/Range.utils.ts","../src/components/Range/Range.tsx"],"names":["jsx","Svg","Path","jsxs","useLayoutEffect","Platform","forwardRef","Amenity","useRef","useMemo","useState","Fragment","View","Text","Pressable","StyleSheet","MenuItem","styles","ICON_SIZE","FavoritesButton","Avatar","useCallback","useEffect","Image","IMAGE_SIZE","AvatarSimple","AccountHeader","webBlurStyle","Badge","Icon","StatusBadge","PaginationDots","InfoTile","StepList","Counter","SegmentedToggle","Animated","Easing","HEADER_HEIGHT","MENU_ICON_SIZE","Sidebar","LanguageSwitcher","StatCard","variantConfig","Button","TouchableOpacity","Checkbox","MENU_RADIUS","DatePicker","FloatingActionButton","isValidElement","cloneElement","DEFAULT_WIDTH","sizeConfig","Input","TextInput","VerificationCodeInput","useWindowDimensions","useImperativeHandle","TRIGGER_HEIGHT","TRIGGER_RADIUS","ITEM_RADIUS","Select","ScrollView","resolveVisualState","chromeFor","Textarea","TRACK_WIDTH","TRACK_PADDING","ANIMATION_DURATION","Toggle","clamp","RatingInput","CARD_WIDTH","CommentCard","TRACK_HEIGHT","THUMB_SIZE","Range","PanResponder"],"mappings":";;;;;;;;;;;;;;AACO,IAAM,gBAAA,GAAmB,iEAAA;;;ACDzB,IAAM,IAAA,GAAO;AAAA,EAClB,GAAA,EAAK,SAAA;AAAA,EACL,KAAA,EAAO,SAAA;AAAA,EACP,GAAA,EAAK,SAAA;AAAA,EACL,KAAA,EAAO,SAAA;AAAA,EACP,GAAA,EAAK,SAAA;AAAA,EACL,GAAA,EAAK,SAAA;AAAA,EACL,GAAA,EAAK,SAAA;AAAA,EACL,GAAA,EAAK,SAAA;AAAA,EACL,GAAA,EAAK,SAAA;AAAA,EACL,GAAA,EAAK,SAAA;AAAA,EACL,KAAA,EAAO,SAAA;AAAA,EACP,GAAA,EAAK,SAAA;AAAA,EACL,KAAA,EAAO,SAAA;AAAA,EACP,GAAA,EAAK,SAAA;AAAA,EACL,KAAA,EAAO;AACT;AAIO,IAAM,MAAA,GAAS;AAAA,EACpB,OAAA,EAAS,SAAA;AAAA,EACT,KAAA,EAAO,SAAA;AAAA,EACP,KAAA,EAAO,SAAA;AAAA,EACP,YAAA,EAAc,WAAA;AAAA,EACd,YAAA,EAAc,WAAA;AAAA,EACd,YAAA,EAAc,WAAA;AAAA,EACd,YAAA,EAAc,WAAA;AAAA,EACd,WAAA,EAAa,WAAA;AAAA,EACb,YAAA,EAAc,WAAA;AAAA,EACd,WAAA,EAAa,WAAA;AAAA,EACb,IAAA,EAAM,SAAA;AAAA,EACN,GAAA,EAAK,SAAA;AAAA,EACL,SAAA,EAAW,SAAA;AAAA,EACX,KAAA,EAAO,SAAA;AAAA,EACP,UAAA,EAAY,WAAA;AAAA,EACZ,YAAA,EAAc,WAAA;AAAA,EACd,YAAA,EAAc,WAAA;AAAA,EACd,QAAA,EAAU,WAAA;AAAA,EACV,QAAA,EAAU,WAAA;AAAA,EACV,SAAA,EAAW,WAAA;AAAA,EACX,cAAA,EAAgB,WAAA;AAAA,EAEhB,KAAA,EAAO,KAAK,GAAG,CAAA;AAAA,EACf,MAAA,EAAQ,KAAK,KAAK,CAAA;AAAA,EAClB,OAAA,EAAS,KAAK,GAAG,CAAA;AAAA,EACjB,OAAA,EAAS,KAAK,KAAK,CAAA;AAAA,EACnB,OAAA,EAAS,KAAK,GAAG,CAAA;AAAA,EACjB,OAAA,EAAS,KAAK,GAAG,CAAA;AAAA,EACjB,OAAA,EAAS,KAAK,GAAG,CAAA;AAAA,EACjB,OAAA,EAAS,KAAK,GAAG,CAAA;AAAA,EACjB,OAAA,EAAS,KAAK,GAAG,CAAA;AAAA,EACjB,OAAA,EAAS,SAAA;AAAA,EACT,OAAA,EAAS,KAAK,GAAG,CAAA;AAAA,EACjB,OAAA,EAAS,KAAK,KAAK,CAAA;AAAA,EACnB,OAAA,EAAS,KAAK,GAAG,CAAA;AAAA,EACjB,OAAA,EAAS,KAAK,KAAK,CAAA;AAAA,EACnB,OAAA,EAAS,KAAK,GAAG,CAAA;AAAA,EACjB,OAAA,EAAS,KAAK,KAAK;AACrB;;;AC3DO,IAAM,KAAA,GAAQ;AAAA,EACnB,IAAA,EAAM;AACR;AAGO,IAAM,gBAAA,GAAmB;AAAA,EAC9B,EAAA,EAAI;AAAA,IACF,YAAY,KAAA,CAAM,IAAA;AAAA,IAClB,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,UAAA,EAAY,EAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,EAAA,EAAI;AAAA,IACF,YAAY,KAAA,CAAM,IAAA;AAAA,IAClB,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,UAAA,EAAY,EAAA;AAAA,IACZ,aAAA,EAAe;AAAA;AAEnB;AAGO,IAAM,eAAA,GAAkB;AAAA,EAC7B,YAAY,KAAA,CAAM,IAAA;AAAA,EAClB,QAAA,EAAU,EAAA;AAAA,EACV,UAAA,EAAY,KAAA;AAAA,EACZ,UAAA,EAAY,EAAA;AAAA,EACZ,aAAA,EAAe;AACjB;AAGO,IAAM,kBAAA,GAAqB;AAAA,EAChC,YAAY,KAAA,CAAM,IAAA;AAAA,EAClB,QAAA,EAAU,EAAA;AAAA,EACV,UAAA,EAAY,KAAA;AAAA,EACZ,UAAA,EAAY,EAAA;AAAA,EACZ,aAAA,EAAe;AACjB;AAGO,IAAM,yBAAA,GAA4B;AAAA,EACvC,YAAY,KAAA,CAAM,IAAA;AAAA,EAClB,QAAA,EAAU,EAAA;AAAA,EACV,UAAA,EAAY,KAAA;AAAA,EACZ,UAAA,EAAY,EAAA;AAAA,EACZ,aAAA,EAAe;AACjB;AAGO,IAAM,0BAAA,GAA6B;AAAA,EACxC,YAAY,KAAA,CAAM,IAAA;AAAA,EAClB,QAAA,EAAU,EAAA;AAAA,EACV,UAAA,EAAY,KAAA;AAAA,EACZ,UAAA,EAAY,EAAA;AAAA,EACZ,aAAA,EAAe;AACjB;AAGO,IAAM,iBAAA,GAAoB;AAAA,EAC/B,YAAY,KAAA,CAAM,IAAA;AAAA,EAClB,QAAA,EAAU,EAAA;AAAA,EACV,UAAA,EAAY,KAAA;AAAA,EACZ,UAAA,EAAY,EAAA;AAAA,EACZ,aAAA,EAAe;AACjB;AAGO,IAAM,gBAAA,GAAmB;AAAA,EAC9B,YAAY,KAAA,CAAM,IAAA;AAAA,EAClB,QAAA,EAAU,EAAA;AAAA,EACV,UAAA,EAAY,KAAA;AAAA,EACZ,UAAA,EAAY,KAAA;AAAA,EACZ,aAAA,EAAe;AACjB;AAGO,IAAM,qBAAA,GAAwB;AAAA,EACnC,IAAA,EAAM;AAAA,IACJ,YAAY,KAAA,CAAM,IAAA;AAAA,IAClB,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,UAAA,EAAY,EAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,YAAY,KAAA,CAAM,IAAA;AAAA,IAClB,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,UAAA,EAAY,EAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,OAAA,EAAS;AAAA,IACP,YAAY,KAAA,CAAM,IAAA;AAAA,IAClB,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,UAAA,EAAY,EAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,YAAY,KAAA,CAAM,IAAA;AAAA,IAClB,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,UAAA,EAAY,EAAA;AAAA,IACZ,aAAA,EAAe;AAAA;AAEnB;AAGO,IAAM,eAAA,GAAkB;AAAA,EAC7B,KAAA,EAAO;AAAA,IACL,YAAY,KAAA,CAAM,IAAA;AAAA,IAClB,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,UAAA,EAAY,EAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,KAAA,EAAO;AAAA,IACL,YAAY,KAAA,CAAM,IAAA;AAAA,IAClB,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,UAAA,EAAY,EAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,YAAY,KAAA,CAAM,IAAA;AAAA,IAClB,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,UAAA,EAAY,EAAA;AAAA,IACZ,aAAA,EAAe;AAAA;AAEnB;AAGO,IAAM,gBAAA,GAAmB;AAAA,EAC9B,KAAA,EAAO;AAAA,IACL,YAAY,KAAA,CAAM,IAAA;AAAA,IAClB,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,UAAA,EAAY,EAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,KAAA,EAAO;AAAA,IACL,YAAY,KAAA,CAAM,IAAA;AAAA,IAClB,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,UAAA,EAAY,EAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,YAAY,KAAA,CAAM,IAAA;AAAA,IAClB,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,UAAA,EAAY,EAAA;AAAA,IACZ,aAAA,EAAe;AAAA;AAEnB;AAGO,IAAM,gBAAA,GAAmB;AAAA,EAC9B,IAAA,EAAM;AAAA,IACJ,YAAY,KAAA,CAAM,IAAA;AAAA,IAClB,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,UAAA,EAAY,EAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,KAAA,EAAO;AAAA,IACL,YAAY,KAAA,CAAM,IAAA;AAAA,IAClB,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,UAAA,EAAY,EAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,QAAA,EAAU;AAAA,IACR,YAAY,KAAA,CAAM,IAAA;AAAA,IAClB,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,UAAA,EAAY,EAAA;AAAA,IACZ,aAAA,EAAe;AAAA;AAEnB;AASO,IAAM,oBAAA,GAAuB;AAAA,EAClC,KAAA,EAAO;AAAA,IACL,YAAY,KAAA,CAAM,IAAA;AAAA,IAClB,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,UAAA,EAAY,EAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,UAAA,EAAY;AAAA,IACV,YAAY,KAAA,CAAM,IAAA;AAAA,IAClB,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,UAAA,EAAY,EAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,SAAA,EAAW;AAAA,IACT,YAAY,KAAA,CAAM,IAAA;AAAA,IAClB,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,UAAA,EAAY,EAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,SAAA,EAAW;AAAA,IACT,YAAY,KAAA,CAAM,IAAA;AAAA,IAClB,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,UAAA,EAAY,EAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GACjB;AAAA;AAAA,EAEA,YAAA,EAAc;AAAA,IACZ,YAAY,KAAA,CAAM,IAAA;AAAA,IAClB,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,UAAA,EAAY,EAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GACjB;AAAA;AAAA,EAEA,OAAA,EAAS;AAAA,IACP,YAAY,KAAA,CAAM,IAAA;AAAA,IAClB,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,UAAA,EAAY,EAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,GAAA,EAAK;AAAA,IACH,YAAY,KAAA,CAAM,IAAA;AAAA,IAClB,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,UAAA,EAAY,EAAA;AAAA,IACZ,aAAA,EAAe;AAAA;AAEnB;AAGO,IAAM,kBAAA,GAAqB;AAAA,EAChC,KAAA,EAAO;AAAA,IACL,YAAY,KAAA,CAAM,IAAA;AAAA,IAClB,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,UAAA,EAAY,EAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,KAAA,EAAO;AAAA,IACL,YAAY,KAAA,CAAM,IAAA;AAAA,IAClB,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,UAAA,EAAY,EAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,YAAY,KAAA,CAAM,IAAA;AAAA,IAClB,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,UAAA,EAAY,EAAA;AAAA,IACZ,aAAA,EAAe;AAAA;AAEnB;AC9PO,SAAS,cAAA,CAAe;AAAA,EAC7B,IAAA,GAAO,EAAA;AAAA,EACP,QAAQ,MAAA,CAAO,OAAA;AAAA,EACf,WAAA,GAAc;AAChB,CAAA,EAAwB;AACtB,EAAA,uBACEA,cAAA,CAACC,0BAAI,KAAA,EAAO,IAAA,EAAM,QAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAA;AAAA,IAACE,UAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,gBAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;;;AC5BO,IAAM,mBAAA,GACX,ohBAAA;ACEK,SAAS,iBAAA,CAAkB,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,SAAA,EAAW,WAAA,GAAc,KAAI,EAAc;AAChG,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,mBAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;;;AChBO,IAAM,WAAA,GAAc;AAAA,EACzB,gwBAAA;AAAA,EACA;AACF,CAAA;AAEO,IAAM,iBAAA,GAAoB;AAAA,EAC/B;AAAA,IACE,KAAA,EAAO,SAAA;AAAA,IACP,CAAA,EAAG;AAAA,GACL;AAAA,EACA;AAAA,IACE,KAAA,EAAO,SAAA;AAAA,IACP,CAAA,EAAG;AAAA,GACL;AAAA,EACA;AAAA,IACE,KAAA,EAAO,SAAA;AAAA,IACP,CAAA,EAAG;AAAA,GACL;AAAA,EACA;AAAA,IACE,KAAA,EAAO,SAAA;AAAA,IACP,CAAA,EAAG;AAAA;AAEP,CAAA;ACjBO,SAAS,UAAU,EAAE,IAAA,GAAO,IAAI,KAAA,GAAQ,MAAA,CAAO,OAAM,EAAc;AACxE,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAQ,IAAA,GAAO,EAAA,GAAM,EAAA,EAAI,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EAClE,QAAA,EAAA,WAAA,CAAY,GAAA,CAAI,CAAC,IAAA,qBAChBD,cAAAA,CAACE,UAAAA,EAAA,EAAgB,CAAA,EAAG,IAAA,EAAM,IAAA,EAAM,KAAA,EAAA,EAArB,IAA4B,CACxC,CAAA,EACH,CAAA;AAEJ;AAEO,SAAS,cAAA,CAAe,EAAE,IAAA,GAAO,EAAA,EAAG,EAAc;AACvD,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAQ,IAAA,GAAO,EAAA,GAAM,EAAA,EAAI,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,MAAK,MAAA,EAClE,QAAA,EAAA,iBAAA,CAAkB,GAAA,CAAI,CAAC,IAAA,qBACtBD,cAAAA,CAACE,UAAAA,EAAA,EAAkB,CAAA,EAAG,IAAA,CAAK,CAAA,EAAG,IAAA,EAAM,IAAA,CAAK,KAAA,EAAA,EAA9B,IAAA,CAAK,CAAgC,CACjD,CAAA,EACH,CAAA;AAEJ;;;ACvBO,IAAM,QAAA,GACX,opBAAA;ACMK,SAAS,OAAA,CAAQ,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,OAAA,EAAS,WAAA,GAAc,CAAA,EAAE,EAAc;AACzF,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,QAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;;;ACnBO,IAAM,SAAA,GACX,yrBAAA;ACMK,SAAS,QAAA,CAAS,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,KAAA,EAAO,WAAA,GAAc,GAAA,EAAI,EAAc;AAC1F,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,SAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;;;ACnBO,IAAM,aAAA,GACX,wrBAAA;ACMK,SAAS,YAAA,CAAa,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,OAAA,EAAS,WAAA,GAAc,CAAA,EAAE,EAAc;AAC9F,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,aAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;;;AClBO,IAAM,aAAA,GACX,sfAAA;ACMK,SAAS,YAAA,CAAa,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,OAAA,EAAS,WAAA,GAAc,GAAA,EAAI,EAAc;AAChG,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,aAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;;;ACnBO,IAAM,qBAAA,GACX,6lBAAA;ACMK,SAAS,mBAAA,CAAoB;AAAA,EAClC,IAAA,GAAO,EAAA;AAAA,EACP,QAAQ,MAAA,CAAO,OAAA;AAAA,EACf,WAAA,GAAc;AAChB,CAAA,EAAc;AACZ,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,qBAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;;;ACxBO,IAAM,WAAA,GACX,00CAAA;ACMK,SAAS,UAAA,CAAW,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,OAAA,EAAS,WAAA,GAAc,CAAA,EAAE,EAAc;AAC5F,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,WAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;;;AClBO,IAAM,UAAA,GAAa,kDAAA;ACYnB,SAAS,SAAA,CAAU,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,OAAA,EAAS,WAAA,GAAc,CAAA,EAAE,EAAmB;AAChG,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,UAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;;;ACzBO,IAAM,gBAAA,GACX,kjCAAA;ACMK,SAAS,cAAA,CAAe,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,OAAA,EAAS,WAAA,GAAc,CAAA,EAAE,EAAc;AAChG,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,gBAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;;;AClBO,IAAM,iBAAA,GAAoB,uBAAA;ACY1B,SAAS,eAAA,CAAgB;AAAA,EAC9B,IAAA,GAAO,EAAA;AAAA,EACP,QAAQ,MAAA,CAAO,OAAA;AAAA,EACf,WAAA,GAAc;AAChB,CAAA,EAAyB;AACvB,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,iBAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;;;AC5BO,IAAM,iBAAA,GAAoB,wBAAA;ACO1B,SAAS,eAAA,CAAgB,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,OAAA,EAAS,WAAA,GAAc,CAAA,EAAE,EAAc;AACjG,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,iBAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;;;ACpBO,IAAM,UAAA,GACX,8HAAA;ACMK,SAAS,SAAA,CAAU,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,OAAA,EAAS,WAAA,GAAc,CAAA,EAAE,EAAc;AAC3F,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,UAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;;;AClBO,IAAM,UAAA,GAAa,sBAAA;ACInB,SAAS,SAAA,CAAU,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,KAAA,EAAO,WAAA,GAAc,CAAA,EAAE,EAAc;AACzF,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,UAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;;;AChBO,IAAM,SAAA,GACX,sLAAA;ACGK,SAAS,QAAA,CAAS,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,KAAA,EAAO,WAAA,GAAc,CAAA,EAAE,EAAc;AACxF,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,SAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;;;ACjBO,IAAM,eAAA,GACX,oJAAA;AAEK,IAAM,gBAAA,GACX,8oBAAA;AAEK,IAAM,uBAAA,GACX,kNAAA;AAEK,IAAM,sBAAA,GACX,gNAAA;AAEK,IAAM,sBAAA,GACX,wMAAA;AAEK,IAAM,WAAA,GACX,4wFAAA;AAEK,IAAM,aAAA,GACX,+3DAAA;AAEK,IAAM,cAAA,GACX,08EAAA;ACRK,SAAS,aAAA,CAAc;AAAA,EAC5B,IAAA,GAAO,EAAA;AAAA,EACP,QAAQ,MAAA,CAAO,KAAA;AAAA,EACf,WAAA,GAAc,CAAA;AAAA,EACd,WAAA,GAAc;AAChB,CAAA,EAAc;AACZ,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,eAAA;AAAA,MACH,IAAA,EAAM,KAAA;AAAA,MACN,WAAA;AAAA,MACA,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;AAEO,SAAS,cAAA,CAAe,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,SAAA,EAAW,WAAA,GAAc,GAAE,EAAc;AAC3F,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,gBAAA;AAAA,MACH,IAAA,EAAM,KAAA;AAAA,MACN,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;AAEO,SAAS,gBAAA,CAAiB;AAAA,EAC/B,IAAA,GAAO,EAAA;AAAA,EACP,QAAQ,MAAA,CAAO,KAAA;AAAA,EACf,WAAA,GAAc,GAAA;AAAA,EACd,iBAAiB,MAAA,CAAO;AAC1B,CAAA,EAAc;AACZ,EAAA,uBACEC,eAAA,CAACF,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,QAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,EAAA;AAAA,oBAAAD,cAAAA;AAAA,MAACE,UAAAA;AAAA,MAAA;AAAA,QACC,CAAA,EAAG,uBAAA;AAAA,QACH,MAAA,EAAQ,KAAA;AAAA,QACR,WAAA;AAAA,QACA,aAAA,EAAc,OAAA;AAAA,QACd,cAAA,EAAe;AAAA;AAAA,KACjB;AAAA,oBACAF,cAAAA;AAAA,MAACE,UAAAA;AAAA,MAAA;AAAA,QACC,CAAA,EAAG,sBAAA;AAAA,QACH,IAAA,EAAM,KAAA;AAAA,QACN,MAAA,EAAQ,KAAA;AAAA,QACR,WAAA;AAAA,QACA,cAAA,EAAe;AAAA;AAAA,KACjB;AAAA,oBACAF,cAAAA;AAAA,MAACE,UAAAA;AAAA,MAAA;AAAA,QACC,CAAA,EAAG,sBAAA;AAAA,QACH,IAAA,EAAM,cAAA;AAAA,QACN,MAAA,EAAQ,cAAA;AAAA,QACR,WAAA,EAAa,CAAA;AAAA,QACb,cAAA,EAAe;AAAA;AAAA;AACjB,GAAA,EACF,CAAA;AAEJ;AAEA,SAAS,cAAA,CAAe;AAAA,EACtB,IAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAAmF;AACjF,EAAA,uBACEF,eAACC,sBAAAA,EAAA,EAAI,OAAO,IAAA,EAAM,MAAA,EAAQ,MAAM,OAAA,EAAQ,WAAA,EAAY,MAAK,MAAA,EACvD,QAAA,kBAAAD,eAACE,UAAAA,EAAA,EAAK,GAAG,IAAA,EAAM,IAAA,EAAM,KAAA,EAAO,WAAA,EAA0B,CAAA,EACxD,CAAA;AAEJ;AAEO,SAAS,UAAA,CAAW,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,KAAA,EAAO,WAAA,GAAc,GAAA,EAAI,EAAc;AAC5F,EAAA,uBAAOF,cAAAA,CAAC,cAAA,EAAA,EAAe,MAAM,WAAA,EAAa,IAAA,EAAY,OAAc,WAAA,EAA0B,CAAA;AAChG;AAEO,SAAS,YAAA,CAAa,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,KAAA,EAAO,WAAA,GAAc,GAAA,EAAI,EAAc;AAC9F,EAAA,uBACEA,cAAAA,CAAC,cAAA,EAAA,EAAe,MAAM,aAAA,EAAe,IAAA,EAAY,OAAc,WAAA,EAA0B,CAAA;AAE7F;AAEO,SAAS,aAAA,CAAc,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,KAAA,EAAO,WAAA,GAAc,GAAA,EAAI,EAAc;AAC/F,EAAA,uBACEA,cAAAA,CAAC,cAAA,EAAA,EAAe,MAAM,cAAA,EAAgB,IAAA,EAAY,OAAc,WAAA,EAA0B,CAAA;AAE9F;;;AC9GO,IAAM,UAAA,GACX,wcAAA;AAGK,IAAM,aAAA,GAAgB,mCAAA;AAEtB,IAAM,iBAAA,GAAoB;AAAA,EAC/B,YAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA;AAEO,IAAM,iBAAA,GACX,2wDAAA;AAEK,IAAM,YAAA,GACX,29HAAA;AAEK,IAAM,aAAA,GACX,ixCAAA;AAEK,IAAM,SAAA,GACX,6jCAAA;AAEK,IAAM,kBAAA,GAAqB,uCAAA;AAE3B,IAAM,kBAAA,GACX,wGAAA;ACbK,SAAS,SAAA,CAAU,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,KAAA,EAAO,WAAA,GAAc,CAAA,EAAE,EAAc;AACzF,EAAA,uBACEA,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,UAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;AAEO,SAAS,YAAA,CAAa,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,KAAA,EAAO,WAAA,GAAc,CAAA,EAAE,EAAc;AAC5F,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,aAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;AAEO,SAAS,cAAA,CAAe,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,KAAA,EAAO,WAAA,GAAc,CAAA,EAAE,EAAc;AAC9F,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,MAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,MAAK,MAAA,EACtD,QAAA,EAAA,iBAAA,CAAkB,GAAA,CAAI,CAAC,yBACtBD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MAEC,CAAA,EAAG,IAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA,KAAA;AAAA,IALV;AAAA,GAOR,CAAA,EACH,CAAA;AAEJ;AAEO,SAAS,gBAAgB,EAAE,IAAA,GAAO,IAAI,KAAA,GAAQ,MAAA,CAAO,OAAM,EAAc;AAC9E,EAAA,uBACEF,eAACC,sBAAAA,EAAA,EAAI,OAAO,IAAA,EAAM,MAAA,EAAQ,MAAM,OAAA,EAAQ,WAAA,EAAY,MAAK,MAAA,EACvD,QAAA,kBAAAD,eAACE,UAAAA,EAAA,EAAK,GAAG,iBAAA,EAAmB,IAAA,EAAM,OAAO,CAAA,EAC3C,CAAA;AAEJ;AAEO,SAAS,WAAW,EAAE,IAAA,GAAO,IAAI,KAAA,GAAQ,MAAA,CAAO,SAAQ,EAAc;AAC3E,EAAA,uBACEF,eAACC,sBAAAA,EAAA,EAAI,OAAO,IAAA,EAAM,MAAA,EAAQ,MAAM,OAAA,EAAQ,WAAA,EAAY,MAAK,MAAA,EACvD,QAAA,kBAAAD,eAACE,UAAAA,EAAA,EAAK,GAAG,YAAA,EAAc,IAAA,EAAM,OAAO,CAAA,EACtC,CAAA;AAEJ;AAEO,SAAS,aAAa,EAAE,IAAA,GAAO,IAAI,KAAA,GAAQ,MAAA,CAAO,OAAM,EAAc;AAC3E,EAAA,uBACEF,eAACC,sBAAAA,EAAA,EAAI,OAAO,IAAA,EAAM,MAAA,EAAQ,MAAM,OAAA,EAAQ,WAAA,EAAY,MAAK,MAAA,EACvD,QAAA,kBAAAD,eAACE,UAAAA,EAAA,EAAK,GAAG,aAAA,EAAe,IAAA,EAAM,OAAO,CAAA,EACvC,CAAA;AAEJ;AAEO,SAAS,QAAA,CAAS,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,OAAA,EAAS,WAAA,GAAc,CAAA,EAAE,EAAc;AAC1F,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,SAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;AAEO,SAAS,gBAAA,CAAiB,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,KAAA,EAAO,WAAA,GAAc,CAAA,EAAE,EAAc;AAChG,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,kBAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;AAEO,SAAS,iBAAiB,EAAE,IAAA,GAAO,IAAI,KAAA,GAAQ,MAAA,CAAO,SAAQ,EAAc;AACjF,EAAA,uBACEF,eAACC,sBAAAA,EAAA,EAAI,OAAO,IAAA,EAAM,MAAA,EAAS,IAAA,GAAO,CAAA,GAAK,EAAA,EAAI,OAAA,EAAQ,YAAW,IAAA,EAAK,MAAA,EACjE,0BAAAD,cAAAA,CAACE,UAAAA,EAAA,EAAK,CAAA,EAAG,kBAAA,EAAoB,IAAA,EAAM,KAAA,EAAO,CAAA,EAC5C,CAAA;AAEJ;;;ACrHO,IAAM,gBAAA,GACX,myDAAA;AAGK,IAAM,gBAAA,GAAmB;AAAA,EAC9B,0BAAA;AAAA,EACA,8NAAA;AAAA,EACA,oBAAA;AAAA,EACA;AACF,CAAA;AAGO,IAAM,SAAA,GAAY;AAAA,EACvB,udAAA;AAAA,EACA,mTAAA;AAAA,EACA,2TAAA;AAAA,EACA,mTAAA;AAAA,EACA;AACF,CAAA;AAGO,IAAM,UAAA,GACX,+XAAA;AClBK,SAAS,eAAe,EAAE,IAAA,GAAO,IAAI,KAAA,GAAQ,MAAA,CAAO,OAAM,EAAc;AAC7E,EAAA,uBACEF,eAACC,sBAAAA,EAAA,EAAI,OAAO,IAAA,EAAM,MAAA,EAAQ,MAAM,OAAA,EAAQ,WAAA,EAAY,MAAK,MAAA,EACvD,QAAA,kBAAAD,eAACE,UAAAA,EAAA,EAAK,GAAG,gBAAA,EAAkB,IAAA,EAAM,OAAO,CAAA,EAC1C,CAAA;AAEJ;AAEO,SAAS,aAAA,CAAc,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,KAAA,EAAO,WAAA,GAAc,GAAA,EAAI,EAAc;AAC/F,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,MAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,MAAK,MAAA,EACtD,QAAA,EAAA,gBAAA,CAAiB,GAAA,CAAI,CAAC,sBACrBD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MAEC,CAAA;AAAA,MACA,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA,KAAA;AAAA,IALV;AAAA,GAOR,CAAA,EACH,CAAA;AAEJ;AAEO,SAAS,OAAA,CAAQ,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,KAAA,EAAO,WAAA,GAAc,GAAA,EAAI,EAAc;AACzF,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,MAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,MAAK,MAAA,EACtD,QAAA,EAAA,SAAA,CAAU,GAAA,CAAI,CAAC,sBACdD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MAEC,CAAA;AAAA,MACA,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA,KAAA;AAAA,IALV;AAAA,GAOR,CAAA,EACH,CAAA;AAEJ;AAEO,SAAS,SAAA,CAAU,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,KAAA,EAAO,WAAA,GAAc,CAAA,EAAE,EAAc;AACzF,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,UAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;;;AC3DO,IAAM,aAAA,GACX,wfAAA;ACMK,SAAS,aAAa,EAAE,IAAA,GAAO,IAAI,KAAA,GAAQ,MAAA,CAAO,OAAM,EAAc;AAC3E,EAAA,uBACEF,eAACC,sBAAAA,EAAA,EAAI,OAAO,IAAA,EAAM,MAAA,EAAQ,MAAM,OAAA,EAAQ,WAAA,EAAY,MAAK,MAAA,EACvD,QAAA,kBAAAD,eAACE,UAAAA,EAAA,EAAK,GAAG,aAAA,EAAe,IAAA,EAAM,OAAO,CAAA,EACvC,CAAA;AAEJ;;;ACZO,IAAM,YAAA,GAAe,iCAAA;ACOrB,SAAS,WAAA,CAAY,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,OAAA,EAAS,WAAA,GAAc,CAAA,EAAE,EAAc;AAC7F,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,YAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;;;ACnBO,IAAM,UAAA,GACX,6bAAA;ACMK,SAAS,SAAA,CAAU,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,OAAA,EAAS,WAAA,GAAc,GAAA,EAAI,EAAc;AAC7F,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,UAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe,OAAA;AAAA,MACf,QAAA,EAAS,SAAA;AAAA,MACT,QAAA,EAAS;AAAA;AAAA,GACX,EACF,CAAA;AAEJ;;;ACrBO,IAAM,UAAA,GACX,+aAAA;ACGK,SAAS,SAAA,CAAU,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,OAAA,EAAS,WAAA,GAAc,CAAA,EAAE,EAAc;AAC3F,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,UAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;;;AChBO,IAAM,gBAAA,GACX,q7BAAA;ACMK,SAAS,cAAA,CAAe;AAAA,EAC7B,IAAA,GAAO,EAAA;AAAA,EACP,QAAQ,MAAA,CAAO,OAAA;AAAA,EACf,WAAA,GAAc;AAChB,CAAA,EAAc;AACZ,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,gBAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;;;ACxBO,IAAM,SAAA,GACX,uuBAAA;ACMK,SAAS,QAAA,CAAS,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,OAAA,EAAS,WAAA,GAAc,CAAA,EAAE,EAAc;AAC1F,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,SAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;;;ACnBO,IAAM,cAAA,GACX,i1DAAA;ACMK,SAAS,cAAc,EAAE,IAAA,GAAO,IAAI,KAAA,GAAQ,MAAA,CAAO,OAAM,EAAc;AAC5E,EAAA,uBACEF,eAACC,sBAAAA,EAAA,EAAI,OAAO,IAAA,EAAM,MAAA,EAAQ,MAAM,OAAA,EAAQ,WAAA,EAAY,MAAK,MAAA,EACvD,QAAA,kBAAAD,eAACE,UAAAA,EAAA,EAAK,GAAG,cAAA,EAAgB,IAAA,EAAM,OAAO,CAAA,EACxC,CAAA;AAEJ;;;ACbO,IAAM,QAAA,GACX,uuBAAA;ACMK,SAAS,OAAA,CAAQ,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,OAAA,EAAS,WAAA,GAAc,CAAA,EAAE,EAAc;AACzF,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,QAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;;;AClBO,IAAM,gBAAA,GACX,2uDAAA;ACMK,SAAS,cAAA,CAAe;AAAA,EAC7B,IAAA,GAAO,EAAA;AAAA,EACP,QAAQ,MAAA,CAAO,OAAA;AAAA,EACf,WAAA,GAAc;AAChB,CAAA,EAAc;AACZ,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,gBAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;;;ACxBO,IAAM,aAAA,GACX,2lCAAA;ACMK,SAAS,aAAa,EAAE,IAAA,GAAO,IAAI,KAAA,GAAQ,MAAA,CAAO,OAAM,EAAc;AAC3E,EAAA,uBACEF,eAACC,sBAAAA,EAAA,EAAI,OAAO,IAAA,EAAM,MAAA,EAAQ,MAAM,OAAA,EAAQ,WAAA,EAAY,MAAK,MAAA,EACvD,QAAA,kBAAAD,eAACE,UAAAA,EAAA,EAAK,GAAG,aAAA,EAAe,IAAA,EAAM,OAAO,CAAA,EACvC,CAAA;AAEJ;;;ACZO,IAAM,cAAA,GACX,ssEAAA;ACMK,SAAS,YAAA,CAAa,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,OAAA,EAAS,WAAA,GAAc,CAAA,EAAE,EAAc;AAC9F,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,cAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;;;ACnBO,IAAM,iBAAA,GACX,onBAAA;ACMK,SAAS,eAAA,CAAgB,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,OAAA,EAAS,WAAA,GAAc,CAAA,EAAE,EAAc;AACjG,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,iBAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;;;ACpBO,IAAM,kBAAA,GACX,i/DAAA;ACOK,SAAS,iBAAiB,EAAE,IAAA,GAAO,IAAI,KAAA,GAAQ,MAAA,CAAO,OAAM,EAAc;AAC/E,EAAA,uBACEF,eAACC,sBAAAA,EAAA,EAAI,OAAO,IAAA,EAAM,MAAA,EAAQ,MAAM,OAAA,EAAQ,WAAA,EAAY,MAAK,MAAA,EACvD,QAAA,kBAAAD,eAACE,UAAAA,EAAA,EAAK,GAAG,kBAAA,EAAoB,IAAA,EAAM,OAAO,CAAA,EAC5C,CAAA;AAEJ;;;ACbO,IAAM,SAAA,GACX,usBAAA;ACMK,SAAS,QAAA,CAAS,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,OAAA,EAAS,WAAA,GAAc,CAAA,EAAE,EAAc;AAC1F,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,SAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;;;ACnBO,IAAM,YAAA,GACX,uRAAA;ACMK,SAAS,UAAA,CAAW,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,GAAA,EAAK,WAAA,GAAc,GAAA,EAAI,EAAc;AAC1F,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,YAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;;;ACpBO,IAAM,SAAA,GACX,8yBAAA;ACMK,SAAS,QAAA,CAAS,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,OAAA,EAAS,WAAA,GAAc,CAAA,EAAE,EAAc;AAC1F,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,SAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;;;AClBO,IAAM,aAAA,GACX,8LAAA;ACMK,SAAS,WAAA,CAAY,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,OAAA,EAAS,WAAA,GAAc,CAAA,EAAE,EAAc;AAC7F,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,aAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;;;ACnBO,IAAM,eAAA,GAAkB,gEAAA;AAExB,IAAM,iBAAA,GAAoB,gEAAA;ACEjC,SAAS,cAAA,CAAe;AAAA,EACtB,IAAA;AAAA,EACA,IAAA,GAAO,EAAA;AAAA,EACP,QAAQ,MAAA,CAAO,KAAA;AAAA,EACf,WAAA,GAAc;AAChB,CAAA,EAAiC;AAC/B,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,IAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;AAEO,SAAS,cAAc,KAAA,EAAkB;AAC9C,EAAA,uBAAOF,cAAAA,CAAC,cAAA,EAAA,EAAgB,GAAG,KAAA,EAAO,MAAM,eAAA,EAAiB,CAAA;AAC3D;AAEO,SAAS,gBAAgB,KAAA,EAAkB;AAChD,EAAA,uBAAOA,cAAAA,CAAC,cAAA,EAAA,EAAgB,GAAG,KAAA,EAAO,MAAM,iBAAA,EAAmB,CAAA;AAC7D;;;AC9BO,IAAM,SAAA,GAAY,yDAAA;AAElB,IAAM,eAAA,GAAkB,sBAAA;ACSxB,SAAS,QAAA,CAAS;AAAA,EACvB,IAAA,GAAO,EAAA;AAAA,EACP,QAAQ,MAAA,CAAO,KAAA;AAAA,EACf,WAAA,GAAc,CAAA;AAAA,EACd,IAAA,GAAO;AACT,CAAA,EAAkB;AAChB,EAAA,uBACEA,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,OAAO,eAAA,GAAkB,SAAA;AAAA,MAC5B,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe,OAAA;AAAA,MACf,SAAA,EAAW,OAAO,oBAAA,GAAuB;AAAA;AAAA,GAC3C,EACF,CAAA;AAEJ;;;AC7BO,IAAM,UAAA,GAAa,oBAAA;ACOnB,SAAS,SAAA,CAAU,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,KAAA,EAAO,WAAA,GAAc,CAAA,EAAE,EAAc;AACzF,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,UAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;;;ACnBO,IAAM,aAAA,GACX,uOAAA;ACMK,SAAS,YAAA,CAAa,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,OAAA,EAAS,WAAA,GAAc,CAAA,EAAE,EAAc;AAC9F,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,aAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;;;ACnBO,IAAM,UAAA,GACX,8fAAA;ACMK,SAAS,SAAA,CAAU,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,OAAA,EAAS,WAAA,GAAc,CAAA,EAAE,EAAc;AAC3F,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,UAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;;;ACnBO,IAAM,SAAA,GAAY,kDAAA;ACOlB,SAAS,QAAA,CAAS,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,KAAA,EAAO,WAAA,GAAc,CAAA,EAAE,EAAc;AACxF,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,SAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;;;AClBO,IAAM,YAAA,GACX,uQAAA;ACGK,SAAS,WAAA,CAAY,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,KAAA,EAAO,WAAA,GAAc,CAAA,EAAE,EAAc;AAC3F,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,YAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;;;AChBO,IAAM,kBAAA,GACX,yOAAA;ACGK,SAAS,gBAAA,CAAiB;AAAA,EAC/B,IAAA,GAAO,EAAA;AAAA,EACP,QAAQ,MAAA,CAAO,OAAA;AAAA,EACf,WAAA,GAAc;AAChB,CAAA,EAAc;AACZ,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,kBAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;;;ACpBO,IAAM,kBAAA,GACX,2LAAA;AAEK,IAAM,kBAAA,GAAqB,0BAAA;ACS3B,SAAS,UAAA,CAAW;AAAA,EACzB,IAAA,GAAO,EAAA;AAAA,EACP,QAAQ,MAAA,CAAO,OAAA;AAAA,EACf,WAAA,GAAc;AAChB,CAAA,EAAoB;AAClB,EAAA,uBACEC,eAAAA,CAACF,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,EAAA;AAAA,oBAAAD,cAAAA;AAAA,MAACE,UAAAA;AAAA,MAAA;AAAA,QACC,CAAA,EAAG,kBAAA;AAAA,QACH,MAAA,EAAQ,KAAA;AAAA,QACR,WAAA;AAAA,QACA,aAAA,EAAc,OAAA;AAAA,QACd,cAAA,EAAe;AAAA;AAAA,KACjB;AAAA,oBACAF,cAAAA;AAAA,MAACE,UAAAA;AAAA,MAAA;AAAA,QACC,CAAA,EAAG,kBAAA;AAAA,QACH,MAAA,EAAQ,KAAA;AAAA,QACR,WAAA;AAAA,QACA,aAAA,EAAc,OAAA;AAAA,QACd,cAAA,EAAe;AAAA;AAAA;AACjB,GAAA,EACF,CAAA;AAEJ;;;ACnCO,IAAM,aAAA,GACX,mjIAAA;ACMK,SAAS,YAAA,CAAa,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,OAAA,EAAS,WAAA,GAAc,GAAA,EAAI,EAAc;AAChG,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,aAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;;;ACnBO,IAAM,SAAA,GACX,sKAAA;AAEK,IAAM,eAAA,GACX,6IAAA;ACQK,SAAS,QAAA,CAAS,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,OAAA,EAAS,WAAA,GAAc,CAAA,EAAE,EAAkB;AAC9F,EAAA,uBACEC,eAAAA,CAACF,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,EAAA;AAAA,oBAAAD,cAAAA;AAAA,MAACE,UAAAA;AAAA,MAAA;AAAA,QACC,CAAA,EAAG,SAAA;AAAA,QACH,MAAA,EAAQ,KAAA;AAAA,QACR,WAAA;AAAA,QACA,aAAA,EAAc,OAAA;AAAA,QACd,cAAA,EAAe;AAAA;AAAA,KACjB;AAAA,oBACAF,cAAAA;AAAA,MAACE,UAAAA;AAAA,MAAA;AAAA,QACC,CAAA,EAAG,eAAA;AAAA,QACH,MAAA,EAAQ,KAAA;AAAA,QACR,WAAA;AAAA,QACA,aAAA,EAAc,OAAA;AAAA,QACd,cAAA,EAAe;AAAA;AAAA;AACjB,GAAA,EACF,CAAA;AAEJ;;;AC/BO,IAAM,YAAA,GACX,+gBAAA;ACMK,SAAS,WAAA,CAAY,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,OAAA,EAAS,WAAA,GAAc,CAAA,EAAE,EAAc;AAC7F,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,YAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;;;ACnBO,IAAM,SAAA,GAAY,0DAAA;ACOlB,SAAS,QAAA,CAAS,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,OAAA,EAAS,WAAA,GAAc,GAAA,EAAI,EAAc;AAC5F,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,SAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;;;ACnBO,IAAM,SAAA,GACX,kkDAAA;ACSK,SAAS,QAAA,CAAS;AAAA,EACvB,MAAA,GAAS,KAAA;AAAA,EACT,IAAA,GAAO,EAAA;AAAA,EACP,MAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA,GAAc;AAChB,CAAA,EAAkB;AAChB,EAAA,MAAM,aAAA,GAAgB,KAAA,KAAU,MAAA,GAAS,SAAA,GAAY,MAAA,CAAO,OAAA,CAAA;AAE5D,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,OAAO,IAAA,EAAM,MAAA,EAAQ,MAAA,IAAW,IAAA,GAAO,KAAM,EAAA,EAAI,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,QAC7E,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,SAAA;AAAA,MACH,IAAA,EAAM,SAAS,aAAA,GAAgB,MAAA;AAAA,MAC/B,MAAA,EAAQ,aAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;ACvBO,SAAS,cAAA,CAAe;AAAA,EAC7B,IAAA,GAAO,EAAA;AAAA,EACP,MAAA;AAAA,EACA,KAAA,GAAQ,SAAA;AAAA,EACR,WAAA,GAAc;AAChB,CAAA,EAAwB;AACtB,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,OAAO,IAAA,EAAM,MAAA,EAAQ,MAAA,IAAW,IAAA,GAAO,KAAM,EAAA,EAAI,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAM,OAC9E,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,SAAA;AAAA,MACH,IAAA,EAAM,KAAA;AAAA,MACN,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;;;AC1BO,IAAM,SAAA,GACX,2RAAA;ACWK,SAAS,QAAA,CAAS,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,OAAA,EAAS,WAAA,GAAc,CAAA,EAAE,EAAkB;AAC9F,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,kBAAAD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,SAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;;;ACzBO,IAAM,cAAA,GACX,ytFAAA;ACMK,SAAS,aAAa,EAAE,IAAA,GAAO,IAAI,KAAA,GAAQ,MAAA,CAAO,OAAM,EAAc;AAC3E,EAAA,uBACEF,eAACC,sBAAAA,EAAA,EAAI,OAAO,IAAA,EAAM,MAAA,EAAQ,MAAM,OAAA,EAAQ,WAAA,EAAY,MAAK,MAAA,EACvD,QAAA,kBAAAD,eAACE,UAAAA,EAAA,EAAK,GAAG,cAAA,EAAgB,IAAA,EAAM,OAAO,CAAA,EACxC,CAAA;AAEJ;;;ACZO,IAAM,WAAA,GAAc;AAAA,EACzB,2VAAA;AAAA,EACA;AACF,CAAA;ACIO,SAAS,SAAA,CAAU,EAAE,IAAA,GAAO,EAAA,EAAI,QAAQ,MAAA,CAAO,OAAA,EAAS,WAAA,GAAc,GAAA,EAAI,EAAc;AAC7F,EAAA,uBACEF,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,MAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,MAAK,MAAA,EACtD,QAAA,EAAA,WAAA,CAAY,GAAA,CAAI,CAAC,yBAChBD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MAEC,CAAA,EAAG,IAAA;AAAA,MACH,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA;AAAA,MACA,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA,KAAA;AAAA,IALV;AAAA,GAOR,CAAA,EACH,CAAA;AAEJ;;;ACkDO,IAAM,KAAA,GAAQ;AAAA,EACnB,aAAA,EAAe,iBAAA;AAAA,EACf,UAAA,EAAY,cAAA;AAAA,EACZ,KAAA,EAAO,SAAA;AAAA,EACP,UAAA,EAAY,cAAA;AAAA,EACZ,GAAA,EAAK,OAAA;AAAA,EACL,IAAA,EAAM,QAAA;AAAA,EACN,QAAA,EAAU,YAAA;AAAA,EACV,QAAA,EAAU,YAAA;AAAA,EACV,eAAA,EAAiB,mBAAA;AAAA,EACjB,MAAA,EAAQ,UAAA;AAAA,EACR,KAAA,EAAO,SAAA;AAAA,EACP,UAAA,EAAY,cAAA;AAAA,EACZ,YAAA,EAAc,gBAAA;AAAA,EACd,WAAA,EAAa,eAAA;AAAA,EACb,WAAA,EAAa,eAAA;AAAA,EACb,KAAA,EAAO,SAAA;AAAA,EACP,KAAA,EAAO,SAAA;AAAA,EACP,IAAA,EAAM,QAAA;AAAA,EACN,WAAA,EAAa,eAAA;AAAA,EACb,IAAA,EAAM,QAAA;AAAA,EACN,QAAA,EAAU,YAAA;AAAA,EACV,SAAA,EAAW,aAAA;AAAA,EACX,QAAA,EAAU,YAAA;AAAA,EACV,YAAA,EAAc,gBAAA;AAAA,EACd,QAAA,EAAU,YAAA;AAAA,EACV,OAAA,EAAS,WAAA;AAAA,EACT,MAAA,EAAQ,UAAA;AAAA,EACR,KAAA,EAAO,SAAA;AAAA,EACP,KAAA,EAAO,SAAA;AAAA,EACP,UAAA,EAAY,cAAA;AAAA,EACZ,UAAA,EAAY,cAAA;AAAA,EACZ,IAAA,EAAM,QAAA;AAAA,EACN,SAAA,EAAW,aAAA;AAAA,EACX,GAAA,EAAK,OAAA;AAAA,EACL,UAAA,EAAY,cAAA;AAAA,EACZ,QAAA,EAAU,YAAA;AAAA,EACV,QAAA,EAAU,YAAA;AAAA,EACV,WAAA,EAAa,eAAA;AAAA,EACb,YAAA,EAAc,gBAAA;AAAA,EACd,IAAA,EAAM,QAAA;AAAA,EACN,MAAA,EAAQ,UAAA;AAAA,EACR,IAAA,EAAM,QAAA;AAAA,EACN,OAAA,EAAS,WAAA;AAAA,EACT,WAAA,EAAa,eAAA;AAAA,EACb,SAAA,EAAW,aAAA;AAAA,EACX,IAAA,EAAM,QAAA;AAAA,EACN,KAAA,EAAO,SAAA;AAAA,EACP,QAAA,EAAU,YAAA;AAAA,EACV,SAAA,EAAW,aAAA;AAAA,EACX,GAAA,EAAK,OAAA;AAAA,EACL,KAAA,EAAO,SAAA;AAAA,EACP,MAAA,EAAQ,UAAA;AAAA,EACR,UAAA,EAAY,cAAA;AAAA,EACZ,UAAA,EAAY,cAAA;AAAA,EACZ,IAAA,EAAM,QAAA;AAAA,EACN,OAAA,EAAS,WAAA;AAAA,EACT,YAAA,EAAc,gBAAA;AAAA,EACd,MAAA,EAAQ,UAAA;AAAA,EACR,SAAA,EAAW,aAAA;AAAA,EACX,KAAA,EAAO,SAAA;AAAA,EACP,QAAA,EAAU,YAAA;AAAA,EACV,IAAA,EAAM,QAAA;AAAA,EACN,OAAA,EAAS,WAAA;AAAA,EACT,IAAA,EAAM,QAAA;AAAA,EACN,IAAA,EAAM,QAAA;AAAA,EACN,UAAA,EAAY,cAAA;AAAA,EACZ,YAAA,EAAc,gBAAA;AAAA,EACd,KAAA,EAAO,SAAA;AAAA,EACP,IAAA,EAAM,QAAA;AAAA,EACN,QAAA,EAAU,YAAA;AAAA,EACV,KAAA,EAAO,SAAA;AAAA,EACP,QAAA,EAAU;AACZ;AAIO,IAAM,SAAA,GAAY,MAAA,CAAO,IAAA,CAAK,KAAK;AAEnC,IAAM,UAAA,GAAa;AAAA,EACxB,UAAA,EAAY;AAAA,IACV,YAAA;AAAA,IACA,aAAA;AAAA,IACA,aAAA;AAAA,IACA,MAAA;AAAA,IACA,UAAA;AAAA,IACA,aAAA;AAAA,IACA,cAAA;AAAA,IACA,aAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,OAAA,EAAS;AAAA,IACP,MAAA;AAAA,IACA,eAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,YAAA;AAAA,IACA,cAAA;AAAA,IACA,MAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA;AAAA,IACA,UAAA;AAAA,IACA,iBAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,IACA,YAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,IACA,SAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,OAAA,EAAS;AAAA,IACP,KAAA;AAAA,IACA,WAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,cAAA;AAAA,IACA,OAAA;AAAA,IACA,aAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,WAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,YAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,IACA,UAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,aAAA,EAAe,CAAC,MAAA,EAAQ,OAAO,CAAA;AAAA,EAC/B,QAAQ,CAAC,OAAA,EAAS,UAAA,EAAY,YAAA,EAAc,aAAa,UAAU,CAAA;AAAA,EACnE,SAAA,EAAW;AAAA,IACT,YAAA;AAAA,IACA,OAAA;AAAA,IACA,YAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,YAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA;AAEJ;AAIO,IAAM,cAAA,GAAiB,MAAA,CAAO,IAAA,CAAK,UAAU;AAE7C,SAAS,gBAAgB,KAAA,EAA8B;AAC5D,EAAA,OAAO,CAAC,GAAG,UAAA,CAAW,KAAK,CAAC,CAAA;AAC9B;ACrOO,SAAS,IAAA,CAAK,EAAE,IAAA,EAAM,GAAG,OAAM,EAAoB;AACxD,EAAA,MAAM,SAAA,GAAY,MAAM,IAAI,CAAA;AAC5B,EAAA,uBAAOF,cAAAA,CAAC,SAAA,EAAA,EAAW,GAAG,KAAA,EAAO,CAAA;AAC/B;;;ACUO,IAAM,aAAA,GAAuE;AAAA,EAClF,OAAA,EAAS;AAAA,IACP;AAAA,MACE,CAAA,EAAG;AAAA;AACL,GACF;AAAA,EACA,IAAA,EAAM;AAAA,IACJ;AAAA,MACE,CAAA,EAAG,6VAAA;AAAA,MACH,OAAA,EAAS,IAAA;AAAA,MACT,WAAA,EAAa;AAAA;AACf,GACF;AAAA,EACA,EAAA,EAAI;AAAA,IACF;AAAA,MACE,CAAA,EAAG,q4BAAA;AAAA,MACH,OAAA,EAAS,IAAA;AAAA,MACT,WAAA,EAAa;AAAA;AACf,GACF;AAAA,EACA,MAAA,EAAQ;AAAA,IACN;AAAA,MACE,CAAA,EAAG,4qBAAA;AAAA,MACH,WAAA,EAAa;AAAA,KACf;AAAA,IACA;AAAA,MACE,CAAA,EAAG,wXAAA;AAAA,MACH,IAAA,EAAM;AAAA;AACR,GACF;AAAA,EACA,EAAA,EAAI;AAAA,IACF;AAAA,MACE,CAAA,EAAG,6VAAA;AAAA,MACH,OAAA,EAAS,IAAA;AAAA,MACT,WAAA,EAAa;AAAA;AACf,GACF;AAAA,EACA,GAAA,EAAK;AAAA,IACH;AAAA,MACE,CAAA,EAAG,2uBAAA;AAAA,MACH,OAAA,EAAS,IAAA;AAAA,MACT,WAAA,EAAa;AAAA;AACf,GACF;AAAA,EACA,UAAA,EAAY;AAAA,IACV;AAAA,MACE,CAAA,EAAG;AAAA;AACL,GACF;AAAA,EACA,IAAA,EAAM;AAAA,IACJ;AAAA,MACE,CAAA,EAAG,6pDAAA;AAAA,MACH,OAAA,EAAS,IAAA;AAAA,MACT,WAAA,EAAa;AAAA;AACf;AAEJ,CAAA;AClEO,SAAS,WAAA,CAAY,EAAE,IAAA,EAAM,IAAA,GAAO,IAAI,KAAA,GAAQ,MAAA,CAAO,SAAQ,EAAqB;AACzF,EAAA,uBACEA,cAAAA,CAACC,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,QAAQ,IAAA,EAAM,OAAA,EAAQ,aAAY,IAAA,EAAK,MAAA,EACtD,wBAAc,IAAI,CAAA,CAAE,IAAI,CAAC,IAAA,EAAM,0BAC9BD,cAAAA;AAAA,IAACE,UAAAA;AAAA,IAAA;AAAA,MAEC,GAAG,IAAA,CAAK,CAAA;AAAA,MACR,IAAA,EAAM,IAAA,CAAK,IAAA,GAAO,KAAA,GAAQ,MAAA;AAAA,MAC1B,MAAA,EAAQ,IAAA,CAAK,IAAA,GAAO,MAAA,GAAY,KAAA;AAAA,MAChC,aAAa,IAAA,CAAK,WAAA;AAAA,MAClB,aAAA,EAAe,IAAA,CAAK,OAAA,GAAU,OAAA,GAAU,MAAA;AAAA,MACxC,cAAA,EAAgB,IAAA,CAAK,OAAA,GAAU,OAAA,GAAU;AAAA,KAAA;AAAA,IANpC,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,KAAK,CAAA;AAAA,GAQxB,CAAA,EACH,CAAA;AAEJ;;;ACnBO,SAAS,SAAA,CACd,aACA,YAAA,EACgB;AAChB,EAAA,OAAO,CAAC,IAAA,KAAS;AACf,IAAA,WAAA,CAAY,OAAA,GAAU,IAAA;AACtB,IAAA,IAAI,OAAO,iBAAiB,UAAA,EAAY;AACtC,MAAA,YAAA,CAAa,IAAI,CAAA;AAAA,IACnB,WAAW,YAAA,EAAc;AACvB,MAAA,YAAA,CAAa,OAAA,GAAU,IAAA;AAAA,IACzB;AAAA,EACF,CAAA;AACF;ACTA,SAAS,aAAa,IAAA,EAAyC;AAC7D,EAAA,OACE,OAAO,IAAA,KAAS,QAAA,IAChB,IAAA,KAAS,IAAA,IACT,eAAe,IAAA,IACf,OAAQ,IAAA,CAA0B,SAAA,EAAW,GAAA,KAAQ,UAAA;AAEzD;AAEA,SAAS,kBAAkB,GAAA,EAAwD;AACjF,EAAA,MAAM,OAAO,GAAA,CAAI,OAAA;AACjB,EAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAElB,EAAA,IAAI,YAAA,CAAa,IAAI,CAAA,EAAG,OAAO,IAAA;AAE/B,EAAA,MAAM,IAAA,GAAO,IAAA;AAKb,EAAA,IAAI,YAAA,CAAa,IAAA,CAAK,cAAc,CAAA,SAAU,IAAA,CAAK,cAAA;AAEnD,EAAA,IAAI,OAAO,IAAA,CAAK,iBAAA,KAAsB,UAAA,EAAY;AAChD,IAAA,MAAM,UAAA,GAAa,KAAK,iBAAA,EAAkB;AAC1C,IAAA,IAAI,YAAA,CAAa,UAAU,CAAA,EAAG,OAAO,UAAA;AAAA,EACvC;AAEA,EAAA,OAAO,IAAA;AACT;AAUO,SAAS,oBAAA,CACd,GAAA,EACA,SAAA,EACA,OAAA,GAAU,IAAA,EACJ;AACN,EAAAE,qBAAA,CAAgB,MAAM;AACpB,IAAA,IAAI,CAAC,WAAWC,oBAAA,CAAS,EAAA,KAAO,SAAS,CAAC,SAAA,EAAW,MAAK,EAAG;AAE7D,IAAA,IAAI,SAAA,GAAY,KAAA;AAChB,IAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,IAAA,IAAI,cAAA,GAA0C,IAAA;AAC9C,IAAA,MAAM,OAAA,GAAU,SAAA,CAAU,IAAA,EAAK,CAAE,MAAM,KAAK,CAAA;AAE5C,IAAA,MAAM,QAAQ,MAAM;AAClB,MAAA,IAAI,SAAA,EAAW;AAEf,MAAA,MAAM,OAAA,GAAU,kBAAkB,GAAG,CAAA;AACrC,MAAA,IAAI,CAAC,OAAA,EAAS;AACZ,QAAA,KAAA,GAAQ,sBAAsB,KAAK,CAAA;AACnC,QAAA;AAAA,MACF;AAEA,MAAA,cAAA,GAAiB,OAAA;AACjB,MAAA,OAAA,CAAQ,SAAA,CAAU,GAAA,CAAI,GAAG,OAAO,CAAA;AAAA,IAClC,CAAA;AAEA,IAAA,KAAA,EAAM;AAEN,IAAA,OAAO,MAAM;AACX,MAAA,SAAA,GAAY,IAAA;AACZ,MAAA,IAAI,KAAA,uBAA4B,KAAK,CAAA;AACrC,MAAA,cAAA,EAAgB,SAAA,CAAU,MAAA,CAAO,GAAG,OAAO,CAAA;AAAA,IAC7C,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,GAAA,EAAK,SAAA,EAAW,OAAO,CAAC,CAAA;AAC9B;AC/CO,IAAM,OAAA,GAAUC,gBAAA,CAAoD,SAASC,QAAAA,CAClF;AAAA,EACE,IAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,QAAA;AAAA,EACA,eAAA,GAAkB,KAAA;AAAA,EAClB,gBAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,KAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,kBAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,YAAA,EACA;AACA,EAAA,MAAM,OAAA,GAAUC,aAAkC,IAAI,CAAA;AACtD,EAAA,MAAM,UAAA,GAAaC,cAAQ,MAAM,SAAA,CAAU,SAAS,YAAY,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AACjF,EAAA,MAAM,YAAA,GAAe,OAAO,QAAA,KAAa,SAAA;AACzC,EAAA,MAAM,CAAC,oBAAA,EAAsB,uBAAuB,CAAA,GAAIC,eAAS,eAAe,CAAA;AAChF,EAAA,MAAM,UAAA,GAAa,eAAe,QAAA,GAAW,oBAAA;AAC7C,EAAA,MAAM,eAAe,OAAA,KAAY,YAAA;AACjC,EAAA,MAAM,SAAA,GAAY,YAAA,IAAgB,UAAA,GAAa,MAAA,CAAO,UAAU,MAAA,CAAO,KAAA;AAEvE,EAAA,oBAAA,CAAqB,OAAA,EAAS,SAAA,EAAW,IAAA,EAAK,IAAK,MAAS,CAAA;AAE5D,EAAA,MAAM,OAAA,mBACJP,eAAAA,CAAAQ,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAX,cAAAA,CAACY,gBAAA,EAAA,EAAK,KAAA,EAAO,MAAA,CAAO,QAAA,EAClB,QAAA,kBAAAZ,cAAAA,CAAC,WAAA,EAAA,EAAY,KAAA,EAAO,SAAA,EAAW,IAAA,EAAM,IAAA,EAAM,CAAA,EAC7C,CAAA;AAAA,oBACAA,cAAAA;AAAA,MAACa,gBAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO;AAAA,UACL,MAAA,CAAO,KAAA;AAAA,UACP,YAAA,GAAe,MAAA,CAAO,eAAA,GAAkB,MAAA,CAAO,YAAA;AAAA,UAC/CR,oBAAAA,CAAS,EAAA,KAAO,SAAA,GAAY,MAAA,CAAO,YAAA,GAAe,IAAA;AAAA,UAClD;AAAA,SACF;AAAA,QAEC,QAAA,EAAA;AAAA;AAAA;AACH,GAAA,EACF,CAAA;AAGF,EAAA,IAAI,CAAC,YAAA,EAAc;AACjB,IAAA,uBACEL,cAAAA;AAAA,MAACY,gBAAA;AAAA,MAAA;AAAA,QACE,GAAG,IAAA;AAAA,QACJ,GAAA,EAAK,UAAA;AAAA,QACL,oBAAoB,kBAAA,IAAsB,KAAA;AAAA,QAC1C,iBAAA,EAAkB,MAAA;AAAA,QAClB,OAAO,CAAC,MAAA,CAAO,IAAA,EAAM,MAAA,CAAO,SAAS,KAAK,CAAA;AAAA,QAEzC,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AAEA,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,IAAI,QAAA,EAAU;AACd,IAAA,MAAM,eAAe,CAAC,UAAA;AACtB,IAAA,IAAI,CAAC,YAAA,EAAc,uBAAA,CAAwB,YAAY,CAAA;AACvD,IAAA,gBAAA,GAAmB,YAAY,CAAA;AAAA,EACjC,CAAA;AAEA,EAAA,uBACEZ,cAAAA;AAAA,IAACc,qBAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,GAAA,EAAK,UAAA;AAAA,MACL,oBAAoB,kBAAA,IAAsB,KAAA;AAAA,MAC1C,iBAAA,EAAkB,UAAA;AAAA,MAClB,kBAAA,EAAoB,EAAE,OAAA,EAAS,UAAA,EAAY,QAAA,EAAS;AAAA,MACpD,QAAA;AAAA,MACA,OAAA,EAAS,WAAA;AAAA,MACT,KAAA,EAAO;AAAA,QACL,MAAA,CAAO,IAAA;AAAA,QACP,MAAA,CAAO,UAAA;AAAA,QACP,cAAc,MAAA,CAAO,QAAA;AAAA,QACrB,YAAY,MAAA,CAAO,QAAA;AAAA,QACnB;AAAA,OACF;AAAA,MAEC,QAAA,EAAA;AAAA;AAAA,GACH;AAEJ,CAAC;AAED,IAAM,MAAA,GAASC,uBAAW,MAAA,CAAO;AAAA,EAC/B,IAAA,EAAM;AAAA,IACJ,MAAA,EAAQ,EAAA;AAAA,IACR,eAAA,EAAiB,EAAA;AAAA,IACjB,iBAAA,EAAmB,EAAA;AAAA,IACnB,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,SAAA,EAAW,YAAA;AAAA,IACX,iBAAiB,MAAA,CAAO;AAAA,GAC1B;AAAA,EACA,OAAA,EAAS;AAAA,IACP,GAAA,EAAK,CAAA;AAAA,IACL,YAAA,EAAc,EAAA;AAAA,IACd,iBAAiB,MAAA,CAAO;AAAA,GAC1B;AAAA,EACA,UAAA,EAAY;AAAA,IACV,GAAA,EAAK,EAAA;AAAA,IACL,WAAA,EAAa,CAAA;AAAA,IACb,WAAA,EAAa,aAAA;AAAA,IACb,WAAA,EAAa,OAAA;AAAA,IACb,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,QAAA,EAAU;AAAA,IACR,aAAa,MAAA,CAAO;AAAA,GACtB;AAAA,EACA,QAAA,EAAU;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,QAAA,EAAU;AAAA,IACR,KAAA,EAAO,EAAA;AAAA,IACP,MAAA,EAAQ,EAAA;AAAA,IACR,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,UAAA,EAAY;AAAA,GACd;AAAA,EACA,KAAA,EAAO;AAAA,IACL,YAAY,KAAA,CAAM,IAAA;AAAA,IAClB,OAAO,MAAA,CAAO;AAAA,GAChB;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,UAAA,EAAY,EAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,UAAA,EAAY,KAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,kBAAA,EAAoB;AAAA;AAExB,CAAC,CAAA;AC9ID,IAAM,WAAA,GAAc,EAAA;AACpB,IAAM,SAAA,GAAY,EAAA;AAEX,IAAM,QAAA,GAAWT,gBAAAA,CAA0D,SAASU,SAAAA,CACzF;AAAA,EACE,IAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,eAAA;AAAA,EACA,UAAA;AAAA,EACA,KAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,kBAAA;AAAA,EACA,OAAA,GAAU,CAAA;AAAA,EACV,SAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,YAAA,EACA;AACA,EAAA,MAAM,YAAA,GAAeR,aAAuC,IAAI,CAAA;AAChE,EAAA,MAAM,eAAA,GAAkBC,cAAQ,MAAM,SAAA,CAAU,cAAc,YAAY,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAC3F,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIC,eAAS,KAAK,CAAA;AAE5C,EAAA,oBAAA,CAAqB,cAAc,SAAS,CAAA;AAE5C,EAAA,MAAM,kBAAA,GAAqB,OAAA,GACtB,UAAA,IAAc,MAAA,CAAO,UACrB,eAAA,IAAmB,aAAA;AACxB,EAAA,MAAM,6BAA6B,kBAAA,IAAsB,KAAA;AAEzD,EAAA,uBACEP,eAAAA;AAAA,IAACW,qBAAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,GAAA,EAAK,eAAA;AAAA,MACL,OAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAA;AAAA,MACA,SAAA,EAAW,CAAC,KAAA,KAAU;AACpB,QAAA,UAAA,CAAW,IAAI,CAAA;AACf,QAAA,SAAA,GAAY,KAAK,CAAA;AAAA,MACnB,CAAA;AAAA,MACA,UAAA,EAAY,CAAC,KAAA,KAAU;AACrB,QAAA,UAAA,CAAW,KAAK,CAAA;AAChB,QAAA,UAAA,GAAa,KAAK,CAAA;AAAA,MACpB,CAAA;AAAA,MACA,SAAA,EAAW,CAAC,KAAA,KAAU;AACpB,QAAA,UAAA,CAAW,IAAI,CAAA;AACf,QAAA,SAAA,GAAY,KAAK,CAAA;AAAA,MACnB,CAAA;AAAA,MACA,UAAA,EAAY,CAAC,KAAA,KAAU;AACrB,QAAA,UAAA,CAAW,KAAK,CAAA;AAChB,QAAA,UAAA,GAAa,KAAK,CAAA;AAAA,MACpB,CAAA;AAAA,MACA,iBAAA,EAAkB,UAAA;AAAA,MAClB,kBAAA,EAAoB,0BAAA;AAAA,MACpB,kBAAA,EAAoB,EAAE,QAAA,EAAS;AAAA,MAC/B,KAAA,EAAO;AAAA,QACLG,OAAAA,CAAO,IAAA;AAAA,QACP,EAAE,iBAAiB,kBAAA,EAAmB;AAAA,QACtC,YAAYA,OAAAA,CAAO,QAAA;AAAA,QACnB;AAAA,OACF;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,IAAA,mBAAOjB,eAACY,gBAAAA,EAAA,EAAK,OAAOK,OAAAA,CAAO,QAAA,EAAW,gBAAK,CAAA,GAAU,IAAA;AAAA,wBACtDjB,cAAAA,CAACa,gBAAAA,EAAA,EAAK,KAAA,EAAO,CAACI,OAAAA,CAAO,KAAA,EAAO,UAAU,CAAA,EAAG,aAAA,EAAe,CAAA,EACrD,QAAA,EAAA,KAAA,EACH;AAAA;AAAA;AAAA,GACF;AAEJ,CAAC;AAED,IAAMA,OAAAA,GAASF,uBAAW,MAAA,CAAO;AAAA,EAC/B,IAAA,EAAM;AAAA,IACJ,SAAA,EAAW,EAAA;AAAA,IACX,YAAA,EAAc,WAAA;AAAA,IACd,eAAA,EAAiB,EAAA;AAAA,IACjB,iBAAA,EAAmB,EAAA;AAAA,IACnB,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,GAAA,EAAK,CAAA;AAAA,IACL,SAAA,EAAW;AAAA,GACb;AAAA,EACA,QAAA,EAAU;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,QAAA,EAAU;AAAA,IACR,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ,SAAA;AAAA,IACR,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,UAAA,EAAY;AAAA,GACd;AAAA,EACA,KAAA,EAAO;AAAA,IACL,GAAG,gBAAA,CAAiB,QAAA;AAAA,IACpB,OAAO,MAAA,CAAO,KAAA;AAAA,IACd,IAAA,EAAM;AAAA;AAEV,CAAC,CAAA;AC3GD,IAAMG,UAAAA,GAAY,EAAA;AAClB,IAAM,gBAAA,GAAmB,WAAA;AAEzB,IAAM,YAAA,GACJb,oBAAAA,CAAS,EAAA,KAAO,KAAA,GACX;AAAA,EACC,cAAA,EAAgB,YAAA;AAAA,EAChB,oBAAA,EAAsB;AACxB,CAAA,GACA,EAAC;AAEA,IAAM,eAAA,GAAkBC,gBAAAA;AAAA,EAC7B,SAASa,gBAAAA,CACP;AAAA,IACE,KAAA;AAAA,IACA,YAAA,GAAe,KAAA;AAAA,IACf,aAAA;AAAA,IACA,QAAA,GAAW,KAAA;AAAA,IACX,KAAA;AAAA,IACA,SAAA;AAAA,IACA,kBAAA;AAAA,IACA,OAAA,GAAU,CAAA;AAAA,IACV,GAAG;AAAA,KAEL,YAAA,EACA;AACA,IAAA,MAAM,SAAA,GAAYX,aAAuC,IAAI,CAAA;AAC7D,IAAA,MAAM,YAAA,GAAe,OAAO,KAAA,KAAU,SAAA;AACtC,IAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAIE,eAAS,YAAY,CAAA;AACvE,IAAA,MAAM,QAAA,GAAW,eAAe,KAAA,GAAQ,iBAAA;AACxC,IAAA,MAAM,YAAA,GAAeD,cAAQ,MAAM,SAAA,CAAU,WAAW,YAAY,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAErF,IAAA,oBAAA,CAAqB,SAAA,EAAW,SAAA,EAAW,IAAA,EAAK,IAAK,MAAS,CAAA;AAE9D,IAAA,MAAM,cAAc,MAAM;AACxB,MAAA,MAAM,YAAY,CAAC,QAAA;AACnB,MAAA,IAAI,CAAC,YAAA,EAAc,oBAAA,CAAqB,SAAS,CAAA;AACjD,MAAA,aAAA,GAAgB,SAAS,CAAA;AAAA,IAC3B,CAAA;AAEA,IAAA,uBACET,cAAAA;AAAA,MAACc,qBAAAA;AAAA,MAAA;AAAA,QACE,GAAG,IAAA;AAAA,QACJ,GAAA,EAAK,YAAA;AAAA,QACL,kBAAA,EACE,kBAAA,KAAuB,QAAA,GAAW,uBAAA,GAA0B,kBAAA,CAAA;AAAA,QAE9D,iBAAA,EAAkB,cAAA;AAAA,QAClB,kBAAA,EAAoB,EAAE,OAAA,EAAS,QAAA,EAAU,QAAA,EAAS;AAAA,QAClD,QAAA;AAAA,QACA,OAAA;AAAA,QACA,OAAA,EAAS,WAAA;AAAA,QACT,KAAA,EAAO,CAAC,EAAE,OAAA,EAAQ,KAAM;AAAA,UACtBG,OAAAA,CAAO,MAAA;AAAA,UACP,YAAA;AAAA,UACA,WAAWA,OAAAA,CAAO,OAAA;AAAA,UAClB,YAAYA,OAAAA,CAAO,QAAA;AAAA,UACnB;AAAA,SACF;AAAA,QAEA,QAAA,kBAAAjB,cAAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,QAAA,GAAW,MAAA,CAAO,GAAA,GAAM,MAAA,CAAO,KAAA;AAAA,YACtC,WAAA,EAAa,WAAW,CAAA,GAAI,CAAA;AAAA,YAC5B,IAAA,EAAMkB,UAAAA;AAAA,YACN,WAAA,EAAa;AAAA;AAAA;AACf;AAAA,KACF;AAAA,EAEJ;AACF;AAEA,IAAMD,OAAAA,GAASF,uBAAW,MAAA,CAAO;AAAA,EAC/B,MAAA,EAAQ;AAAA,IACN,OAAA,EAAS,EAAA;AAAA,IACT,GAAA,EAAK,EAAA;AAAA,IACL,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,SAAA,EAAW,YAAA;AAAA,IACX,YAAA,EAAc,EAAA;AAAA,IACd,WAAA,EAAa,CAAA;AAAA,IACb,aAAa,MAAA,CAAO,YAAA;AAAA,IACpB,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,OAAA,EAAS;AAAA,IACP,OAAA,EAAS;AAAA,GACX;AAAA,EACA,QAAA,EAAU;AAAA,IACR,OAAA,EAAS;AAAA;AAEb,CAAC,CAAA;;;ACtHM,IAAM,gBAAA,GAAmB;AAAA,EAC9B,kDAAA;AAAA,EACA,uzCAAA;AAAA,EACA,w0DAAA;AAAA,EACA,sgDAAA;AAAA,EACA,07FAAA;AAAA,EACA,+5DAAA;AAAA,EACA,ijGAAA;AAAA,EACA,y8DAAA;AAAA,EACA,qpFAAA;AAAA,EACA,kiDAAA;AAAA,EACA,2hDAAA;AAAA,EACA,0oHAAA;AAAA,EACA,2tDAAA;AAAA,EACA,m0FAAA;AAAA,EACA;AACF,CAAA;AAEO,IAAM,mBAAA,GAAsB,iCAAA;;;ACN5B,IAAM,wBAAA,GAA2B;AACjC,IAAM,yBAAA,GAA4B;AAElC,IAAM,iBAAA,GAAoB;AAAA,EAC/B,KAAA,EAAO,SAAA;AAAA,EACP,KAAA,EAAO;AACT;AAEO,SAAS,oBAAA,CACd,OACA,MAAA,EACmC;AACnC,EAAA,IAAI,KAAA,IAAS,IAAA,IAAQ,MAAA,IAAU,IAAA,EAAM;AACnC,IAAA,OAAO,EAAE,OAAO,MAAA,EAAO;AAAA,EACzB;AAEA,EAAA,IAAI,SAAS,IAAA,EAAM;AACjB,IAAA,OAAO;AAAA,MACL,KAAA;AAAA,MACA,MAAA,EAAQ,SAAS,yBAAA,GAA4B,wBAAA;AAAA,KAC/C;AAAA,EACF;AAEA,EAAA,IAAI,UAAU,IAAA,EAAM;AAClB,IAAA,OAAO;AAAA,MACL,KAAA,EAAO,UAAU,wBAAA,GAA2B,yBAAA,CAAA;AAAA,MAC5C;AAAA,KACF;AAAA,EACF;AAEA,EAAA,OAAO,EAAE,KAAA,EAAO,wBAAA,EAA0B,MAAA,EAAQ,yBAAA,EAA0B;AAC9E;ACvCO,SAAS,SAAA,CAAU;AAAA,EACxB,OAAA,GAAU,OAAA;AAAA,EACV,KAAA;AAAA,EACA,MAAA;AAAA,EACA,kBAAA,GAAqB;AACvB,CAAA,EAAmB;AACjB,EAAA,MAAM,IAAA,GAAO,oBAAA,CAAqB,KAAA,EAAO,MAAM,CAAA;AAC/C,EAAA,MAAM,IAAA,GAAO,kBAAkB,OAAO,CAAA;AAEtC,EAAA,uBACEf,cAAAA;AAAA,IAACC,sBAAAA;AAAA,IAAA;AAAA,MACC,OAAO,IAAA,CAAK,KAAA;AAAA,MACZ,QAAQ,IAAA,CAAK,MAAA;AAAA,MACb,OAAA,EAAS,mBAAA;AAAA,MACT,mBAAA,EAAoB,MAAA;AAAA,MACpB,IAAA,EAAK,MAAA;AAAA,MACL,UAAA,EAAU,IAAA;AAAA,MACV,iBAAA,EAAkB,OAAA;AAAA,MAClB,kBAAA;AAAA,MAEC,QAAA,EAAA,gBAAA,CAAiB,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,qBAC3BD,cAAAA,CAACE,UAAAA,EAAA,EAAiB,CAAA,EAAG,IAAA,EAAM,IAAA,EAAA,EAAhB,KAA4B,CACxC;AAAA;AAAA,GACH;AAEJ;ACwCA,IAAM,UAAA,GAAa,EAAA;AACnB,IAAM,gBAAA,GAAmB,EAAA;AACzB,IAAM,YAAA,GAAe,EAAA;AACrB,IAAM,kBAAA,GAAqB,EAAA;AAC3B,IAAM,WAAA,GAAc,EAAA;AAEb,IAAM,MAAA,GAASI,gBAAAA,CAAmD,SAASc,OAAAA,CAChF;AAAA,EACE,IAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,WAAA,GAAc,IAAA;AAAA,EACd,SAAA;AAAA,EACA,IAAA,EAAM,QAAA;AAAA,EACN,WAAA,GAAc,KAAA;AAAA,EACd,YAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,kBAAA;AAAA,EACA,OAAA,GAAU,CAAA;AAAA,EACV,GAAG;AACL,CAAA,EACA,YAAA,EACA;AACA,EAAA,MAAM,UAAA,GAAaZ,aAAkC,IAAI,CAAA;AACzD,EAAA,MAAM,YAAA,GAAeA,aAAkC,IAAI,CAAA;AAC3D,EAAA,MAAM,eAAA,GAAkBC,cAAQ,MAAM,SAAA,CAAU,cAAc,YAAY,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAC3F,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIC,eAAS,KAAK,CAAA;AAEpD,EAAA,MAAM,iBAAA,GAAoB,aAAa,EAAC;AACxC,EAAA,MAAM,OAAA,GAAU,kBAAkB,MAAA,GAAS,CAAA;AAC3C,EAAA,MAAM,aAAA,GAAgB,WAAW,IAAA,IAAQ,OAAA;AACzC,EAAA,MAAM,gBAAA,GAAmB,OAAO,QAAA,KAAa,SAAA;AAC7C,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAIA,eAAS,WAAW,CAAA;AACpE,EAAA,MAAM,MAAA,GAAS,OAAA,KAAY,gBAAA,GAAmB,QAAA,GAAW,gBAAA,CAAA;AAEzD,EAAA,oBAAA,CAAqB,cAAc,SAAS,CAAA;AAE5C,EAAA,MAAM,OAAA,GAAUW,iBAAA;AAAA,IACd,CAAC,IAAA,KAAkB;AACjB,MAAA,IAAI,CAAC,gBAAA,EAAkB,mBAAA,CAAoB,IAAI,CAAA;AAC/C,MAAA,YAAA,GAAe,IAAI,CAAA;AAAA,IACrB,CAAA;AAAA,IACA,CAAC,kBAAkB,YAAY;AAAA,GACjC;AAEA,EAAA,MAAM,YAAA,GAAeA,kBAAY,MAAM;AACrC,IAAA,MAAM,OAAO,YAAA,CAAa,OAAA;AAC1B,IAAA,IAAA,EAAM,KAAA,IAAQ;AAAA,EAChB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,oBAAA,GAAuBA,kBAAY,MAAM;AAC7C,IAAA,OAAA,CAAQ,KAAK,CAAA;AACb,IAAA,YAAA,EAAa;AAAA,EACf,CAAA,EAAG,CAAC,YAAA,EAAc,OAAO,CAAC,CAAA;AAE1B,EAAA,MAAM,WAAA,GAAc,CAAC,KAAA,KAAiC;AACpD,IAAA,OAAA,GAAU,KAAK,CAAA;AACf,IAAA,IAAI,OAAA,EAAS,OAAA,CAAQ,CAAC,MAAM,CAAA;AAAA,EAC9B,CAAA;AAEA,EAAA,MAAM,eAAA,GAAkBA,iBAAA;AAAA,IACtB,CAAC,IAAA,KAAyB;AACxB,MAAA,IAAI,KAAK,QAAA,EAAU;AACnB,MAAA,IAAA,CAAK,OAAA,EAAQ;AACb,MAAA,oBAAA,EAAqB;AAAA,IACvB,CAAA;AAAA,IACA,CAAC,oBAAoB;AAAA,GACvB;AAGA,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,IAAIjB,oBAAAA,CAAS,EAAA,KAAO,KAAA,IAAS,CAAC,MAAA,EAAQ;AAEtC,IAAA,MAAM,iBAAA,GAAoB,CAAC,KAAA,KAAmC;AAC5D,MAAA,MAAM,UAAU,UAAA,CAAW,OAAA;AAG3B,MAAA,MAAM,SAAS,KAAA,CAAM,MAAA;AACrB,MAAA,IAAI,OAAA,EAAS,YAAY,MAAA,YAAkB,IAAA,IAAQ,CAAC,OAAA,CAAQ,QAAA,CAAS,MAAM,CAAA,EAAG;AAC5E,QAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,MACf;AAAA,IACF,CAAA;AAEA,IAAA,QAAA,CAAS,gBAAA,CAAiB,aAAa,iBAAiB,CAAA;AACxD,IAAA,QAAA,CAAS,gBAAA,CAAiB,cAAc,iBAAiB,CAAA;AACzD,IAAA,OAAO,MAAM;AACX,MAAA,QAAA,CAAS,mBAAA,CAAoB,aAAa,iBAAiB,CAAA;AAC3D,MAAA,QAAA,CAAS,mBAAA,CAAoB,cAAc,iBAAiB,CAAA;AAAA,IAC9D,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,OAAO,CAAC,CAAA;AAGpB,EAAAiB,eAAA,CAAU,MAAM;AACd,IAAA,IAAIjB,oBAAAA,CAAS,EAAA,KAAO,KAAA,IAAS,CAAC,MAAA,EAAQ;AAEtC,IAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAyB;AAC9C,MAAA,IAAI,KAAA,CAAM,QAAQ,QAAA,EAAU;AAC1B,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,oBAAA,EAAqB;AAAA,MACvB;AAAA,IACF,CAAA;AAEA,IAAA,QAAA,CAAS,gBAAA,CAAiB,WAAW,aAAa,CAAA;AAClD,IAAA,OAAO,MAAM,QAAA,CAAS,mBAAA,CAAoB,SAAA,EAAW,aAAa,CAAA;AAAA,EACpE,CAAA,EAAG,CAAC,MAAA,EAAQ,oBAAoB,CAAC,CAAA;AAEjC,EAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,QAAQ,CAAA,IAAK,CAAC,WAAA;AACvC,EAAA,MAAM,0BAAA,GAA6B,kBAAA,IAAsB,CAAC,IAAA,EAAM,KAAK,EAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA;AAEhG,EAAA,uBACEF,eAAAA,CAACS,gBAAAA,EAAA,EAAK,GAAA,EAAK,UAAA,EAAY,KAAA,EAAO,CAACK,OAAAA,CAAO,OAAA,EAAS,MAAA,IAAUA,OAAAA,CAAO,WAAW,CAAA,EACzE,QAAA,EAAA;AAAA,oBAAAd,eAAAA;AAAA,MAACW,qBAAAA;AAAA,MAAA;AAAA,QACE,GAAG,IAAA;AAAA,QACJ,GAAA,EAAK,eAAA;AAAA,QACL,OAAA,EAAS,WAAA;AAAA,QACT,QAAA,EAAU,YAAY,CAAC,aAAA;AAAA,QACvB,OAAA,EAAS,gBAAgB,OAAA,GAAU,MAAA;AAAA,QACnC,iBAAA,EAAmB,gBAAgB,QAAA,GAAW,MAAA;AAAA,QAC9C,kBAAA,EAAoB,0BAAA;AAAA,QACpB,kBAAA,EACE,gBAAgB,EAAE,QAAA,EAAU,UAAU,OAAA,GAAU,MAAA,GAAS,QAAU,GAAI,MAAA;AAAA,QAEzE,OAAO,CAACG,OAAAA,CAAO,MAAM,QAAA,IAAYA,OAAAA,CAAO,UAAU,KAAK,CAAA;AAAA,QAEvD,QAAA,EAAA;AAAA,0BAAAjB,eAACY,gBAAAA,EAAA,EAAK,OAAOK,OAAAA,CAAO,SAAA,EACjB,qCACCjB,cAAAA;AAAA,YAACuB,iBAAA;AAAA,YAAA;AAAA,cACC,MAAA,EAAQ,EAAE,GAAA,EAAK,QAAA,IAAY,MAAA,EAAU;AAAA,cACrC,OAAON,OAAAA,CAAO,KAAA;AAAA,cACd,OAAA,EAAS,MAAM,cAAA,CAAe,IAAI;AAAA;AAAA,8BAGpCjB,cAAAA,CAACY,gBAAAA,EAAA,EAAK,OAAOK,OAAAA,CAAO,aAAA,EAClB,QAAA,kBAAAjB,cAAAA,CAAC,YAAS,IAAA,EAAM,kBAAA,EAAoB,OAAO,MAAA,CAAO,OAAA,EAAS,GAC7D,CAAA,EAEJ,CAAA;AAAA,0BAEAG,eAAAA,CAACS,gBAAAA,EAAA,EAAK,KAAA,EAAOK,QAAO,UAAA,EAClB,QAAA,EAAA;AAAA,4BAAAjB,cAAAA,CAACa,kBAAA,EAAK,KAAA,EAAOI,QAAO,IAAA,EAAM,aAAA,EAAe,GACtC,QAAA,EAAA,IAAA,EACH,CAAA;AAAA,YACC,KAAA,mBACCjB,cAAAA,CAACa,gBAAAA,EAAA,EAAK,KAAA,EAAOI,OAAAA,CAAO,KAAA,EAAO,aAAA,EAAe,CAAA,EACvC,QAAA,EAAA,KAAA,EACH,CAAA,GACE;AAAA,WAAA,EACN,CAAA;AAAA,UAEC,WAAA,mBACCjB,cAAAA,CAACY,gBAAAA,EAAA,EAAK,OAAO,CAACK,OAAAA,CAAO,WAAA,EAAa,MAAA,IAAUA,OAAAA,CAAO,WAAW,GAC5D,QAAA,kBAAAjB,cAAAA,CAAC,eAAA,EAAA,EAAgB,IAAA,EAAM,YAAA,EAAc,KAAA,EAAO,MAAA,GAAS,MAAA,CAAO,OAAA,GAAU,MAAA,CAAO,OAAA,EAAS,CAAA,EACxF,CAAA,GACE;AAAA;AAAA;AAAA,KACN;AAAA,IAEC,OAAA,IAAW,yBACVA,cAAAA,CAACY,kBAAA,EAAK,KAAA,EAAO,CAACK,OAAAA,CAAO,IAAA,EAAM,SAAA,IAAa,QAAQ,EAAE,KAAA,EAAO,QAAW,KAAA,EAAO,SAAA,EAAW,CAAA,EACnF,QAAA,EAAA,iBAAA,CAAkB,GAAA,CAAI,CAAC,IAAA,KAAS;AAC/B,MAAA,MAAM,OAAA,GAAU,IAAA,CAAK,GAAA,IAAO,IAAA,CAAK,KAAA;AACjC,MAAA,uBACEjB,cAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UAEC,MAAM,IAAA,CAAK,IAAA;AAAA,UACX,OAAO,IAAA,CAAK,KAAA;AAAA,UACZ,UAAU,IAAA,CAAK,QAAA;AAAA,UACf,iBAAiB,IAAA,CAAK,eAAA;AAAA,UACtB,YAAY,IAAA,CAAK,UAAA;AAAA,UACjB,OAAA,EAAS,MAAM,eAAA,CAAgB,IAAI;AAAA,SAAA;AAAA,QAN9B;AAAA,OAOP;AAAA,IAEJ,CAAC,GACH,CAAA,GACE;AAAA,GAAA,EACN,CAAA;AAEJ,CAAC;AAED,IAAMiB,OAAAA,GAASF,uBAAW,MAAA,CAAO;AAAA,EAC/B,OAAA,EAAS;AAAA,IACP,QAAA,EAAU,UAAA;AAAA,IACV,SAAA,EAAW;AAAA,GACb;AAAA,EACA,WAAA,EAAa;AAAA,IACX,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,SAAA,EAAW,YAAA;AAAA,IACX,GAAA,EAAK,EAAA;AAAA,IACL,UAAA,EAAY,CAAA;AAAA,IACZ,aAAA,EAAe,CAAA;AAAA,IACf,WAAA,EAAa,CAAA;AAAA,IACb,YAAA,EAAc,EAAA;AAAA,IACd,YAAA,EAAc,gBAAA;AAAA,IACd,iBAAiB,MAAA,CAAO;AAAA,GAC1B;AAAA,EACA,QAAA,EAAU;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,SAAA,EAAW;AAAA,IACT,KAAA,EAAO,UAAA;AAAA,IACP,MAAA,EAAQ,UAAA;AAAA,IACR,cAAc,UAAA,GAAa,CAAA;AAAA,IAC3B,QAAA,EAAU,QAAA;AAAA,IACV,UAAA,EAAY;AAAA,GACd;AAAA,EACA,KAAA,EAAO;AAAA,IACL,KAAA,EAAO,UAAA;AAAA,IACP,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,aAAA,EAAe;AAAA,IACb,KAAA,EAAO,UAAA;AAAA,IACP,MAAA,EAAQ,UAAA;AAAA,IACR,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,iBAAiB,MAAA,CAAO;AAAA,GAC1B;AAAA,EACA,UAAA,EAAY;AAAA,IACV,QAAA,EAAU,CAAA;AAAA,IACV,UAAA,EAAY,CAAA;AAAA,IACZ,GAAA,EAAK;AAAA,GACP;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,GAAG,gBAAA,CAAiB,IAAA;AAAA,IACpB,OAAO,MAAA,CAAO;AAAA,GAChB;AAAA,EACA,KAAA,EAAO;AAAA,IACL,GAAG,gBAAA,CAAiB,KAAA;AAAA,IACpB,OAAO,MAAA,CAAO;AAAA,GAChB;AAAA,EACA,WAAA,EAAa;AAAA,IACX,KAAA,EAAO,YAAA;AAAA,IACP,MAAA,EAAQ,YAAA;AAAA,IACR,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,UAAA,EAAY;AAAA,GACd;AAAA,EACA,WAAA,EAAa;AAAA,IACX,SAAA,EAAW,CAAC,EAAE,MAAA,EAAQ,UAAU;AAAA,GAClC;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,QAAA,EAAU,UAAA;AAAA,IACV,GAAA,EAAK,MAAA;AAAA,IACL,IAAA,EAAM,CAAA;AAAA,IACN,KAAA,EAAO,CAAA;AAAA,IACP,SAAA,EAAW,CAAA;AAAA,IACX,MAAA,EAAQ,EAAA;AAAA,IACR,YAAA,EAAc,WAAA;AAAA,IACd,OAAA,EAAS,CAAA;AAAA,IACT,GAAA,EAAK,CAAA;AAAA,IACL,iBAAiB,MAAA,CAAO,OAAA;AAAA,IACxB,GAAGV,qBAAS,MAAA,CAAO;AAAA,MACjB,GAAA,EAAK;AAAA,QACH,SAAA,EAAW,CAAA,WAAA,EAAc,MAAA,CAAO,KAAK,CAAA,EAAA;AAAA,OACvC;AAAA,MACA,OAAA,EAAS;AAAA,QACP,SAAA,EAAW;AAAA;AACb,KACD;AAAA;AAEL,CAAC,CAAA;AC5SD,IAAMmB,WAAAA,GAAa,EAAA;AACnB,IAAM,UAAA,GAAa,GAAA;AACnB,IAAM,WAAA,GAAc,EAAA;AACpB,IAAM,YAAA,GAAe,EAAA;AAEd,IAAM,YAAA,GAAelB,gBAAAA;AAAA,EAC1B,SAASmB,aAAAA,CACP;AAAA,IACE,IAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,wBAAA,GAA2B,SAAA;AAAA,IAC3B,OAAA,GAAU,KAAA;AAAA,IACV,KAAA;AAAA,IACA,SAAA;AAAA,IACA,GAAG;AAAA,KAEL,YAAA,EACA;AACA,IAAA,MAAM,YAAA,GAAejB,aAAkC,IAAI,CAAA;AAC3D,IAAA,MAAM,eAAA,GAAkBC,cAAQ,MAAM,SAAA,CAAU,cAAc,YAAY,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAC3F,IAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIC,eAAS,KAAK,CAAA;AACpD,IAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,QAAQ,CAAA,IAAK,CAAC,WAAA;AAExC,IAAA,oBAAA,CAAqB,cAAc,SAAS,CAAA;AAE5C,IAAA,uBACEP,eAAAA;AAAA,MAACS,gBAAAA;AAAA,MAAA;AAAA,QACE,GAAG,IAAA;AAAA,QACJ,GAAA,EAAK,eAAA;AAAA,QACL,KAAA,EAAO,CAACK,OAAAA,CAAO,IAAA,EAAM,UAAUA,OAAAA,CAAO,WAAA,GAAcA,OAAAA,CAAO,QAAA,EAAU,KAAK,CAAA;AAAA,QAC1E,iBAAA,EAAkB,SAAA;AAAA,QAClB,kBAAA,EAAoB,CAAA,EAAG,IAAI,CAAA,EAAA,EAAK,KAAK,CAAA,CAAA;AAAA,QAErC,QAAA,EAAA;AAAA,0BAAAjB,eAACY,gBAAAA,EAAA,EAAK,OAAOK,OAAAA,CAAO,MAAA,EACjB,sCACCjB,cAAAA;AAAA,YAACuB,iBAAAA;AAAA,YAAA;AAAA,cACC,MAAA,EAAQ,EAAE,GAAA,EAAK,QAAA,IAAY,MAAA,EAAU;AAAA,cACrC,OAAON,OAAAA,CAAO,WAAA;AAAA,cACd,OAAA,EAAS,MAAM,cAAA,CAAe,IAAI,CAAA;AAAA,cAClC,gCAAA,EAAgC;AAAA;AAAA,cAEhC,IAAA,EACN,CAAA;AAAA,UAEC,CAAC,0BACAd,eAAAA,CAACS,kBAAA,EAAK,KAAA,EAAOK,QAAO,OAAA,EAClB,QAAA,EAAA;AAAA,4BAAAd,eAAAA,CAACS,gBAAAA,EAAA,EAAK,KAAA,EAAOK,QAAO,SAAA,EAClB,QAAA,EAAA;AAAA,8BAAAjB,cAAAA,CAACa,gBAAAA,EAAA,EAAK,KAAA,EAAOI,OAAAA,CAAO,MAAM,aAAA,EAAe,CAAA,EAAG,aAAA,EAAc,MAAA,EACvD,QAAA,EAAA,IAAA,EACH,CAAA;AAAA,8BACAjB,cAAAA,CAACa,gBAAAA,EAAA,EAAK,KAAA,EAAOI,OAAAA,CAAO,KAAA,EAAO,aAAA,EAAe,CAAA,EAAG,aAAA,EAAc,MAAA,EACxD,QAAA,EAAA,KAAA,EACH;AAAA,aAAA,EACF,CAAA;AAAA,4BAEAjB,cAAAA;AAAA,cAACc,qBAAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAS,QAAA;AAAA,gBACT,iBAAA,EAAkB,QAAA;AAAA,gBAClB,kBAAA,EAAoB,wBAAA;AAAA,gBACpB,OAAA,EAAS,CAAA;AAAA,gBACT,OAAOG,OAAAA,CAAO,YAAA;AAAA,gBAEd,QAAA,kBAAAjB,eAAC,UAAA,EAAA,EAAW,KAAA,EAAO,OAAO,OAAA,EAAS,IAAA,EAAM,YAAA,EAAc,WAAA,EAAa,CAAA,EAAG;AAAA;AAAA;AACzE,WAAA,EACF,CAAA,GACE;AAAA;AAAA;AAAA,KACN;AAAA,EAEJ;AACF;AAEA,IAAMiB,OAAAA,GAASF,uBAAW,MAAA,CAAO;AAAA,EAC/B,IAAA,EAAM;AAAA,IACJ,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,QAAA,EAAU;AAAA,IACR,KAAA,EAAO,UAAA;AAAA,IACP,MAAA,EAAQ,WAAA;AAAA,IACR,GAAA,EAAK,EAAA;AAAA,IACL,YAAA,EAAc,EAAA;AAAA,IACd,eAAA,EAAiB,CAAA;AAAA,IACjB,iBAAA,EAAmB,EAAA;AAAA,IACnB,iBAAiB,MAAA,CAAO;AAAA,GAC1B;AAAA,EACA,WAAA,EAAa;AAAA,IACX,KAAA,EAAOS,WAAAA;AAAA,IACP,MAAA,EAAQA,WAAAA;AAAA,IACR,YAAA,EAAcA,WAAAA;AAAA,IACd,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,KAAA,EAAOA,WAAAA;AAAA,IACP,MAAA,EAAQA,WAAAA;AAAA,IACR,YAAA,EAAc,EAAA;AAAA,IACd,iBAAiB,MAAA,CAAO,OAAA;AAAA,IACxB,QAAA,EAAU,QAAA;AAAA,IACV,UAAA,EAAY;AAAA,GACd;AAAA,EACA,WAAA,EAAa;AAAA,IACX,KAAA,EAAOA,WAAAA;AAAA,IACP,MAAA,EAAQA;AAAA,GACV;AAAA,EACA,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,CAAA;AAAA,IACN,QAAA,EAAU,CAAA;AAAA,IACV,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,GAAA,EAAK;AAAA,GACP;AAAA,EACA,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,CAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,YAAY,KAAA,CAAM,IAAA;AAAA,IAClB,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,UAAA,EAAY,EAAA;AAAA,IACZ,aAAA,EAAe,CAAA;AAAA,IACf,OAAO,MAAA,CAAO;AAAA,GAChB;AAAA,EACA,KAAA,EAAO;AAAA,IACL,SAAA,EAAW,CAAA;AAAA,IACX,YAAY,KAAA,CAAM,IAAA;AAAA,IAClB,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,UAAA,EAAY,EAAA;AAAA,IACZ,aAAA,EAAe,CAAA;AAAA,IACf,OAAO,MAAA,CAAO;AAAA,GAChB;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,KAAA,EAAO,YAAA;AAAA,IACP,MAAA,EAAQ,YAAA;AAAA,IACR,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,UAAA,EAAY;AAAA;AAEhB,CAAC,CAAA;AC5ID,IAAM,aAAA,GAAgB,EAAA;AACtB,IAAM,cAAA,GAAiB,EAAA;AACvB,IAAM,gBAAA,GAAmB,EAAA;AACzB,IAAM,qBAAA,GAAwB,EAAA;AAC9B,IAAM,cAAA,GAAiB,EAAA;AACvB,IAAM,eAAA,GAAkB,EAAA;AACxB,IAAM,cAAA,GAAiB,EAAA;AACvB,IAAM,SAAA,GAAY,EAAA;AAEX,IAAM,aAAA,GAAgBlB,gBAAAA;AAAA,EAC3B,SAASoB,cAAAA,CACP;AAAA,IACE,KAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,KAAA;AAAA,IACA,sBAAA,GAAyB,MAAA;AAAA,IACzB,sBAAA,GAAyB,WAAA;AAAA,IACzB,+BAAA,GAAkC,eAAA;AAAA,IAClC,KAAA;AAAA,IACA,SAAA;AAAA,IACA,GAAG;AAAA,KAEL,YAAA,EACA;AACA,IAAA,MAAM,YAAA,GAAelB,aAAkC,IAAI,CAAA;AAC3D,IAAA,MAAM,eAAA,GAAkBC,cAAQ,MAAM,SAAA,CAAU,cAAc,YAAY,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAC3F,IAAA,MAAM,iBAAA,GAAoB,SAAA,EAAW,IAAA,EAAK,IAAK,MAAA;AAC/C,IAAA,MAAM,WAAW,WAAA,IAAe,IAAA;AAChC,IAAA,MAAM,QAAA,GAAW,CAAC,QAAA,IAAY,WAAA,IAAe,IAAA;AAC7C,IAAA,MAAM,SAAA,GAAY,QAAA;AAElB,IAAA,oBAAA,CAAqB,cAAc,iBAAiB,CAAA;AAEpD,IAAA,uBACEN,eAAAA;AAAA,MAACS,gBAAAA;AAAA,MAAA;AAAA,QACE,GAAG,IAAA;AAAA,QACJ,GAAA,EAAK,eAAA;AAAA,QACL,iBAAA,EAAkB,QAAA;AAAA,QAClB,KAAA,EAAO,CAACK,OAAAA,CAAO,IAAA,EAAM,YAAYA,OAAAA,CAAO,OAAA,GAAUA,OAAAA,CAAO,OAAA,EAAS,KAAK,CAAA;AAAA,QAEvE,QAAA,EAAA;AAAA,0BAAAd,eAAAA;AAAA,YAACS,gBAAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO;AAAA,gBACLK,OAAAA,CAAO,KAAA;AAAA,gBACP,QAAA,GAAWA,QAAO,aAAA,GAAgB,IAAA;AAAA,gBAClC,QAAA,GAAWA,QAAO,aAAA,GAAgB;AAAA,eACpC;AAAA,cAEC,QAAA,EAAA;AAAA,gBAAA,QAAA,mBACCjB,cAAAA;AAAA,kBAACc,qBAAAA;AAAA,kBAAA;AAAA,oBACC,iBAAA,EAAkB,QAAA;AAAA,oBAClB,kBAAA,EAAoB,sBAAA;AAAA,oBACpB,OAAA,EAAS,CAAA;AAAA,oBACT,OAAA,EAAS,WAAA;AAAA,oBACT,OAAOG,OAAAA,CAAO,UAAA;AAAA,oBAEd,QAAA,kBAAAjB,cAAAA;AAAA,sBAAC,eAAA;AAAA,sBAAA;AAAA,wBACC,OAAO,MAAA,CAAO,KAAA;AAAA,wBACd,IAAA,EAAM,qBAAA;AAAA,wBACN,WAAA,EAAa;AAAA;AAAA;AACf;AAAA,iBACF,GACE,IAAA;AAAA,gBAEH,2BACCA,cAAAA;AAAA,kBAACc,qBAAAA;AAAA,kBAAA;AAAA,oBACC,iBAAA,EAAkB,QAAA;AAAA,oBAClB,kBAAA,EAAoB,sBAAA;AAAA,oBACpB,OAAA,EAAS,CAAA;AAAA,oBACT,OAAA,EAAS,WAAA;AAAA,oBACT,OAAOG,OAAAA,CAAO,UAAA;AAAA,oBAEd,QAAA,kBAAAjB,eAAC,QAAA,EAAA,EAAS,KAAA,EAAO,OAAO,KAAA,EAAO,IAAA,EAAM,cAAA,EAAgB,WAAA,EAAa,GAAA,EAAK;AAAA;AAAA,iBACzE,GACE,IAAA;AAAA,gCAEJG,eAAAA,CAACS,gBAAAA,EAAA,EAAK,KAAA,EAAOK,QAAO,QAAA,EAClB,QAAA,EAAA;AAAA,kCAAAjB,cAAAA;AAAA,oBAACa,gBAAAA;AAAA,oBAAA;AAAA,sBACC,aAAA,EAAe,CAAA;AAAA,sBACf,KAAA,EAAO;AAAA,wBACLI,OAAAA,CAAO,KAAA;AAAA,wBACP,QAAA,IAAY,CAAC,SAAA,GAAYA,OAAAA,CAAO,eAAeA,OAAAA,CAAO;AAAA,uBACxD;AAAA,sBAEC,QAAA,EAAA;AAAA;AAAA,mBACH;AAAA,kBACC,KAAA,IAAS,IAAA,mBAAOjB,cAAAA,CAACY,gBAAAA,EAAA,EAAK,KAAA,EAAOK,OAAAA,CAAO,SAAA,EAAY,QAAA,EAAA,KAAA,EAAM,CAAA,GAAU;AAAA,iBAAA,EACnE;AAAA;AAAA;AAAA,WACF;AAAA,0BAEAjB,cAAAA,CAACY,gBAAAA,EAAA,EAAK,KAAA,EAAOK,OAAAA,CAAO,KAClB,QAAA,kBAAAjB,cAAAA;AAAA,YAACc,qBAAAA;AAAA,YAAA;AAAA,cACC,iBAAA,EAAkB,QAAA;AAAA,cAClB,kBAAA,EAAoB,+BAAA;AAAA,cACpB,OAAA,EAAS,oBAAA;AAAA,cACT,OAAOG,OAAAA,CAAO,UAAA;AAAA,cAEd,QAAA,kBAAAjB,eAAC,QAAA,EAAA,EAAS,KAAA,EAAO,OAAO,KAAA,EAAO,IAAA,EAAM,qBAAA,EAAuB,WAAA,EAAa,GAAA,EAAK;AAAA;AAAA,WAChF,EACF;AAAA;AAAA;AAAA,KACF;AAAA,EAEJ;AACF;AAEA,IAAMiB,OAAAA,GAASF,uBAAW,MAAA,CAAO;AAAA,EAC/B,IAAA,EAAM;AAAA,IACJ,MAAA,EAAQ,aAAA;AAAA,IACR,KAAA,EAAO,MAAA;AAAA,IACP,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,eAAA;AAAA,IAChB,iBAAiB,MAAA,CAAO,IAAA;AAAA,IACxB,iBAAA,EAAmB,CAAA;AAAA,IACnB,mBAAmB,MAAA,CAAO;AAAA,GAC5B;AAAA,EACA,OAAA,EAAS;AAAA,IACP,UAAA,EAAY,EAAA;AAAA,IACZ,aAAA,EAAe,EAAA;AAAA,IACf,WAAA,EAAa,EAAA;AAAA,IACb,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,OAAA,EAAS;AAAA,IACP,OAAA,EAAS;AAAA,GACX;AAAA,EACA,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,CAAA;AAAA,IACN,QAAA,EAAU,CAAA;AAAA,IACV,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY;AAAA,GACd;AAAA,EACA,aAAA,EAAe;AAAA,IACb,GAAA,EAAK;AAAA,GACP;AAAA,EACA,aAAA,EAAe;AAAA,IACb,GAAA,EAAK;AAAA,GACP;AAAA,EACA,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,CAAA;AAAA,IACN,QAAA,EAAU,CAAA;AAAA,IACV,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,GAAA,EAAK;AAAA,GACP;AAAA,EACA,GAAA,EAAK;AAAA,IACH,UAAA,EAAY,CAAA;AAAA,IACZ,UAAA,EAAY;AAAA,GACd;AAAA,EACA,UAAA,EAAY;AAAA,IACV,KAAA,EAAO,gBAAA;AAAA,IACP,MAAA,EAAQ,gBAAA;AAAA,IACR,OAAA,EAAS,CAAA;AAAA,IACT,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,YAAA,EAAc,CAAA;AAAA,IACd,iBAAiB,MAAA,CAAO,OAAA;AAAA,IACxB,WAAA,EAAa,CAAA;AAAA,IACb,aAAa,MAAA,CAAO,OAAA;AAAA,IACpB,UAAA,EAAY;AAAA,GACd;AAAA,EACA,UAAA,EAAY;AAAA,IACV,KAAA,EAAO,cAAA;AAAA,IACP,MAAA,EAAQ,cAAA;AAAA,IACR,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,UAAA,EAAY;AAAA,GACd;AAAA,EACA,KAAA,EAAO;AAAA,IACL,UAAA,EAAY,CAAA;AAAA,IACZ,YAAY,KAAA,CAAM,IAAA;AAAA,IAClB,UAAA,EAAY,KAAA;AAAA,IACZ,aAAA,EAAe,CAAA;AAAA,IACf,OAAO,MAAA,CAAO;AAAA,GAChB;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY;AAAA,GACd;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY;AAAA,GACd;AAAA,EACA,SAAA,EAAW;AAAA,IACT,UAAA,EAAY;AAAA;AAEhB,CAAC,CAAA;ACtMD,IAAMG,UAAAA,GAAY,EAAA;AAElB,IAAMS,aAAAA,GACJtB,oBAAAA,CAAS,EAAA,KAAO,KAAA,GACX;AAAA,EACC,cAAA,EAAgB,cAAA;AAAA,EAChB,oBAAA,EAAsB;AACxB,CAAA,GACA,EAAC;AAOP,IAAM,aAAA,GAAgB;AAAA,EACpB,OAAA,EAAS;AAAA,IACP,iBAAiB,MAAA,CAAO,OAAA;AAAA,IACxB,WAAW,MAAA,CAAO,KAAA;AAAA,IAClB,MAAA,EAAQ,KAAA;AAAA,IACR,IAAA,EAAM;AAAA,GACR;AAAA,EACA,WAAA,EAAa;AAAA,IACX,iBAAiB,MAAA,CAAO,WAAA;AAAA,IACxB,WAAW,MAAA,CAAO,OAAA;AAAA,IAClB,MAAA,EAAQ,IAAA;AAAA,IACR,IAAA,EAAM;AAAA;AAEV,CAAA;AAKO,IAAM,QAAQC,gBAAAA,CAAkD,SAASsB,MAAAA,CAC9E,EAAE,OAAO,OAAA,GAAU,SAAA,EAAW,IAAA,EAAMC,KAAAA,EAAM,OAAO,SAAA,EAAW,kBAAA,EAAoB,GAAG,IAAA,IACnF,YAAA,EACA;AACA,EAAA,MAAM,YAAA,GAAerB,aAAkC,IAAI,CAAA;AAC3D,EAAA,MAAM,MAAA,GAAS,cAAc,OAAO,CAAA;AACpC,EAAA,MAAM,iBAAA,GAAoB,SAAA,EAAW,IAAA,EAAK,IAAK,MAAA;AAC/C,EAAA,MAAM,eAAA,GAAkBC,cAAQ,MAAM,SAAA,CAAU,cAAc,YAAY,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAE3F,EAAA,oBAAA,CAAqB,cAAc,iBAAiB,CAAA;AAEpD,EAAA,uBACEN,eAAAA;AAAA,IAACS,gBAAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,GAAA,EAAK,eAAA;AAAA,MACL,KAAA,EAAO;AAAA,QACLK,OAAAA,CAAO,IAAA;AAAA,QACP,EAAE,eAAA,EAAiB,MAAA,CAAO,eAAA,EAAgB;AAAA,QAC1C,MAAA,CAAO,MAAA,GAASA,OAAAA,CAAO,iBAAA,GAAoB,IAAA;AAAA,QAC3C,MAAA,CAAO,OAAOU,aAAAA,GAAe,IAAA;AAAA,QAC7B;AAAA,OACF;AAAA,MACA,iBAAA,EAAkB,MAAA;AAAA,MAClB,oBAAoB,kBAAA,IAAsB,KAAA;AAAA,MAEzC,QAAA,EAAA;AAAA,QAAAE,wBACC7B,cAAAA,CAACY,kBAAA,EAAK,KAAA,EAAOK,QAAO,QAAA,EAClB,QAAA,kBAAAjB,cAAAA,CAAC6B,KAAAA,EAAA,EAAK,IAAA,EAAMX,UAAAA,EAAW,OAAO,MAAA,CAAO,SAAA,EAAW,GAClD,CAAA,GACE,IAAA;AAAA,wBAEJlB,cAAAA,CAACa,gBAAAA,EAAA,EAAK,OAAO,CAACI,OAAAA,CAAO,KAAA,EAAOZ,oBAAAA,CAAS,OAAO,SAAA,GAAYY,OAAAA,CAAO,YAAA,GAAe,IAAI,GAC/E,QAAA,EAAA,KAAA,EACH;AAAA;AAAA;AAAA,GACF;AAEJ,CAAC;AAED,IAAMA,OAAAA,GAASF,uBAAW,MAAA,CAAO;AAAA,EAC/B,IAAA,EAAM;AAAA,IACJ,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,SAAA,EAAW,YAAA;AAAA,IACX,SAAA,EAAW,EAAA;AAAA,IACX,eAAA,EAAiB,EAAA;AAAA,IACjB,iBAAA,EAAmB,EAAA;AAAA,IACnB,GAAA,EAAK,EAAA;AAAA,IACL,YAAA,EAAc,EAAA;AAAA,IACd,QAAA,EAAU,QAAA;AAAA,IACV,WAAA,EAAa,CAAA;AAAA,IACb,WAAA,EAAa,aAAA;AAAA,IACb,WAAA,EAAa;AAAA,GACf;AAAA,EACA,iBAAA,EAAmB;AAAA,IACjB,WAAA,EAAa,CAAA;AAAA,IACb,aAAa,MAAA,CAAO,WAAA;AAAA,IACpB,WAAA,EAAa;AAAA,GACf;AAAA,EACA,QAAA,EAAU;AAAA,IACR,KAAA,EAAOG,UAAAA;AAAA,IACP,MAAA,EAAQA,UAAAA;AAAA,IACR,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,UAAA,EAAY;AAAA,GACd;AAAA,EACA,KAAA,EAAO;AAAA,IACL,GAAG,eAAA;AAAA,IACH,OAAO,MAAA,CAAO;AAAA,GAChB;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,kBAAA,EAAoB;AAAA;AAExB,CAAC,CAAA;AC3GD,IAAM,UAAA,GAAa;AAAA,EACjB,MAAA,EAAQ;AAAA,IACN,iBAAiB,MAAA,CAAO,UAAA;AAAA,IACxB,OAAO,MAAA,CAAO;AAAA,GAChB;AAAA,EACA,SAAA,EAAW;AAAA,IACT,iBAAiB,MAAA,CAAO,SAAA;AAAA,IACxB,OAAO,MAAA,CAAO;AAAA,GAChB;AAAA,EACA,SAAA,EAAW;AAAA,IACT,iBAAiB,MAAA,CAAO,cAAA;AAAA,IACxB,OAAO,MAAA,CAAO;AAAA;AAElB,CAAA;AAEA,IAAMS,aAAAA,GACJtB,oBAAAA,CAAS,EAAA,KAAO,KAAA,GACX;AAAA,EACC,cAAA,EAAgB,cAAA;AAAA,EAChB,oBAAA,EAAsB;AACxB,CAAA,GACA,EAAC;AAMA,IAAM,WAAA,GAAcC,gBAAAA;AAAA,EACzB,SAASwB,YAAAA,CACP,EAAE,KAAA,EAAO,IAAA,GAAO,QAAA,EAAU,KAAA,EAAO,SAAA,EAAW,kBAAA,EAAoB,GAAG,IAAA,EAAK,EACxE,YAAA,EACA;AACA,IAAA,MAAM,YAAA,GAAetB,aAAkC,IAAI,CAAA;AAC3D,IAAA,MAAM,eAAA,GAAkBC,cAAQ,MAAM,SAAA,CAAU,cAAc,YAAY,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAC3F,IAAA,MAAM,MAAA,GAAS,WAAW,IAAI,CAAA;AAE9B,IAAA,oBAAA,CAAqB,cAAc,SAAS,CAAA;AAE5C,IAAA,uBACET,cAAAA;AAAA,MAACY,gBAAAA;AAAA,MAAA;AAAA,QACE,GAAG,IAAA;AAAA,QACJ,GAAA,EAAK,eAAA;AAAA,QACL,iBAAA,EAAkB,MAAA;AAAA,QAClB,oBAAoB,kBAAA,IAAsB,KAAA;AAAA,QAC1C,KAAA,EAAO,CAACK,OAAAA,CAAO,IAAA,EAAM,EAAE,iBAAiB,MAAA,CAAO,eAAA,EAAgB,EAAGU,aAAAA,EAAc,KAAK,CAAA;AAAA,QAErF,QAAA,kBAAA3B,cAAAA;AAAA,UAACa,gBAAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACLI,OAAAA,CAAO,KAAA;AAAA,cACP,EAAE,KAAA,EAAO,MAAA,CAAO,KAAA,EAAM;AAAA,cACtBZ,oBAAAA,CAAS,EAAA,KAAO,SAAA,GAAYY,OAAAA,CAAO,YAAA,GAAe;AAAA,aACpD;AAAA,YAEC,QAAA,EAAA;AAAA;AAAA;AACH;AAAA,KACF;AAAA,EAEJ;AACF;AAEA,IAAMA,OAAAA,GAASF,uBAAW,MAAA,CAAO;AAAA,EAC/B,IAAA,EAAM;AAAA,IACJ,MAAA,EAAQ,EAAA;AAAA,IACR,SAAA,EAAW,EAAA;AAAA,IACX,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,SAAA,EAAW,YAAA;AAAA,IACX,cAAA,EAAgB,QAAA;AAAA,IAChB,GAAA,EAAK,CAAA;AAAA,IACL,eAAA,EAAiB,CAAA;AAAA,IACjB,iBAAA,EAAmB,EAAA;AAAA,IACnB,YAAA,EAAc,EAAA;AAAA,IACd,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,KAAA,EAAO;AAAA,IACL,YAAY,KAAA,CAAM,IAAA;AAAA,IAClB,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,UAAA,EAAY,EAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,kBAAA,EAAoB;AAAA;AAExB,CAAC,CAAA;AChFD,IAAM,WAAA,GAAc,EAAA;AACpB,IAAM,UAAA,GAAa,CAAA;AACnB,IAAM,aAAA,GAAgB,CAAA;AACtB,IAAM,GAAA,GAAM,CAAA;AAEZ,SAAS,gBAAgB,KAAA,EAAe;AACtC,EAAA,IAAI,KAAA,IAAS,GAAG,OAAO,WAAA;AACvB,EAAA,MAAM,gBAAgB,KAAA,GAAQ,CAAA;AAC9B,EAAA,OAAO,WAAA,GAAc,aAAA,GAAgB,aAAA,GAAgB,aAAA,GAAgB,GAAA;AACvE;AAOO,IAAM,cAAA,GAAiBT,gBAAAA;AAAA,EAC5B,SAASyB,eAAAA,CACP,EAAE,KAAA,EAAO,WAAA,EAAa,UAAA,EAAY,kBAAA,EAAoB,KAAA,EAAO,SAAA,EAAW,GAAG,IAAA,EAAK,EAChF,YAAA,EACA;AACA,IAAA,MAAM,YAAA,GAAevB,aAAkC,IAAI,CAAA;AAC3D,IAAA,MAAM,eAAA,GAAkBC,cAAQ,MAAM,SAAA,CAAU,cAAc,YAAY,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAC3F,IAAA,MAAM,SAAA,GAAY,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,KAAK,CAAA;AACnC,IAAA,MAAM,UAAA,GAAa,SAAA,KAAc,CAAA,GAAI,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAA,CAAI,WAAA,EAAa,CAAC,CAAA,EAAG,SAAA,GAAY,CAAC,CAAA;AACzF,IAAA,MAAM,YAAY,IAAA,CAAK,GAAA,CAAI,aAAA,EAAe,eAAA,CAAgB,SAAS,CAAC,CAAA;AAEpE,IAAA,oBAAA,CAAqB,cAAc,SAAS,CAAA;AAE5C,IAAA,IAAI,aAAa,CAAA,EAAG;AAClB,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,uBACET,cAAAA;AAAA,MAACY,gBAAAA;AAAA,MAAA;AAAA,QACE,GAAG,IAAA;AAAA,QACJ,GAAA,EAAK,eAAA;AAAA,QACL,iBAAA,EAAkB,YAAA;AAAA,QAClB,oBAAoB,kBAAA,IAAsB,CAAA,MAAA,EAAS,UAAA,GAAa,CAAC,OAAO,SAAS,CAAA,CAAA;AAAA,QACjF,KAAA,EAAO,CAACK,OAAAA,CAAO,IAAA,EAAM,KAAK,CAAA;AAAA,QAEzB,QAAA,EAAA,KAAA,CAAM,KAAK,EAAE,MAAA,EAAQ,WAAU,EAAG,CAAC,GAAG,KAAA,KAAU;AAC/C,UAAA,MAAM,SAAS,KAAA,KAAU,UAAA;AACzB,UAAA,uBACEjB,cAAAA;AAAA,YAACc,qBAAAA;AAAA,YAAA;AAAA,cAEC,iBAAA,EAAkB,QAAA;AAAA,cAClB,kBAAA,EAAoB,CAAA,YAAA,EAAe,KAAA,GAAQ,CAAC,CAAA,CAAA;AAAA,cAC5C,kBAAA,EAAoB,EAAE,QAAA,EAAU,MAAA,EAAO;AAAA,cACvC,UAAU,UAAA,IAAc,IAAA;AAAA,cACxB,OAAA,EAAS,CAAA;AAAA,cACT,OAAA,EAAS,MAAM,UAAA,GAAa,KAAK,CAAA;AAAA,cACjC,KAAA,EAAO;AAAA,gBACLG,OAAAA,CAAO,GAAA;AAAA,gBACP,MAAA,GAAS,CAACA,OAAAA,CAAO,SAAA,EAAW,EAAE,KAAA,EAAO,SAAA,EAAW,CAAA,GAAIA,OAAAA,CAAO;AAAA;AAC7D,aAAA;AAAA,YAVK;AAAA,WAWP;AAAA,QAEJ,CAAC;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,IAAMA,OAAAA,GAASF,uBAAW,MAAA,CAAO;AAAA,EAC/B,IAAA,EAAM;AAAA,IACJ,KAAA,EAAO,WAAA;AAAA,IACP,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,GAAA,EAAK;AAAA,GACP;AAAA,EACA,GAAA,EAAK;AAAA,IACH,MAAA,EAAQ,UAAA;AAAA,IACR,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,SAAA,EAAW;AAAA,IACT,iBAAiB,MAAA,CAAO;AAAA,GAC1B;AAAA,EACA,WAAA,EAAa;AAAA,IACX,KAAA,EAAO,aAAA;AAAA,IACP,iBAAiB,MAAA,CAAO;AAAA;AAE5B,CAAC,CAAA;ACnFD,IAAM,SAAA,GAAY,EAAA;AAClB,IAAMG,UAAAA,GAAY,EAAA;AAMX,IAAM,QAAA,GAAWZ,gBAAAA,CAAqD,SAAS0B,SAAAA,CACpF;AAAA,EACE,KAAA;AAAA,EACA,WAAA;AAAA,EACA,IAAA,EAAMH,KAAAA;AAAA,EACN,SAAA;AAAA,EACA,QAAA,GAAWX,UAAAA;AAAA,EACX,0BAA0B,MAAA,CAAO,OAAA;AAAA,EACjC,KAAA;AAAA,EACA,SAAA;AAAA,EACA,kBAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,YAAA,EACA;AACA,EAAA,MAAM,YAAA,GAAeV,aAAkC,IAAI,CAAA;AAC3D,EAAA,MAAM,eAAA,GAAkBC,cAAQ,MAAM,SAAA,CAAU,cAAc,YAAY,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAC3F,EAAA,MAAM,cAAA,GAAiB,OAAA,CAAQ,WAAA,EAAa,IAAA,EAAM,CAAA;AAElD,EAAA,oBAAA,CAAqB,cAAc,SAAS,CAAA;AAE5C,EAAA,uBACEN,eAAAA;AAAA,IAACS,gBAAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,GAAA,EAAK,eAAA;AAAA,MACL,iBAAA,EAAkB,MAAA;AAAA,MAClB,oBACE,kBAAA,KAAuB,cAAA,GAAiB,GAAG,KAAK,CAAA,EAAA,EAAK,WAAW,CAAA,CAAA,GAAK,KAAA,CAAA;AAAA,MAEvE,KAAA,EAAO,CAACK,QAAAA,CAAO,IAAA,EAAM,KAAK,CAAA;AAAA,MAE1B,QAAA,EAAA;AAAA,wBAAAjB,cAAAA,CAACY,gBAAAA,EAAA,EAAK,KAAA,EAAO,CAACK,SAAO,QAAA,EAAU,EAAE,eAAA,EAAiB,uBAAA,EAAyB,CAAA,EACzE,0BAAAjB,cAAAA,CAAC6B,KAAAA,EAAA,EAAM,GAAG,SAAA,EAAW,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,SAAA,EAAW,KAAA,IAAS,MAAA,CAAO,KAAA,EAAO,CAAA,EAChF,CAAA;AAAA,wBACA1B,eAAAA,CAACS,gBAAAA,EAAA,EAAK,KAAA,EAAOK,SAAO,SAAA,EAClB,QAAA,EAAA;AAAA,0BAAAjB,eAACa,gBAAAA,EAAA,EAAK,KAAA,EAAOI,QAAAA,CAAO,OAAQ,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,UACjC,cAAA,mBAAiBjB,cAAAA,CAACa,gBAAAA,EAAA,EAAK,KAAA,EAAOI,QAAAA,CAAO,WAAA,EAAc,QAAA,EAAA,WAAA,EAAY,CAAA,GAAU;AAAA,SAAA,EAC5E;AAAA;AAAA;AAAA,GACF;AAEJ,CAAC;AAED,IAAMA,QAAAA,GAASF,uBAAW,MAAA,CAAO;AAAA,EAC/B,IAAA,EAAM;AAAA,IACJ,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,SAAA,EAAW,YAAA;AAAA,IACX,GAAA,EAAK,EAAA;AAAA,IACL,OAAA,EAAS,EAAA;AAAA,IACT,YAAA,EAAc,EAAA;AAAA,IACd,iBAAiB,MAAA,CAAO;AAAA,GAC1B;AAAA,EACA,QAAA,EAAU;AAAA,IACR,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ,SAAA;AAAA,IACR,OAAA,EAAS,CAAA;AAAA,IACT,YAAA,EAAc,CAAA;AAAA,IACd,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,UAAA,EAAY;AAAA,GACd;AAAA,EACA,SAAA,EAAW;AAAA,IACT,UAAA,EAAY,CAAA;AAAA,IACZ,QAAA,EAAU,CAAA;AAAA,IACV,aAAA,EAAe,QAAA;AAAA,IACf,GAAA,EAAK;AAAA,GACP;AAAA,EACA,KAAA,EAAO;AAAA,IACL,YAAY,KAAA,CAAM,IAAA;AAAA,IAClB,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,UAAA,EAAY,EAAA;AAAA,IACZ,aAAA,EAAe,CAAA;AAAA,IACf,OAAO,MAAA,CAAO;AAAA,GAChB;AAAA,EACA,WAAA,EAAa;AAAA,IACX,YAAY,KAAA,CAAM,IAAA;AAAA,IAClB,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,UAAA,EAAY,EAAA;AAAA,IACZ,aAAA,EAAe,CAAA;AAAA,IACf,OAAO,MAAA,CAAO;AAAA;AAElB,CAAC,CAAA;AChGD,IAAM,UAAA,GAAa,EAAA;AACnB,IAAM,OAAA,GAAU,EAAA;AAChB,IAAM,eAAA,GAAkB,CAAA;AACxB,IAAM,gBAAA,GAAmB,EAAA;AACzB,IAAM,aAAA,GAAgB,CAAA;AAEtB,IAAMY,aAAAA,GACJtB,oBAAAA,CAAS,EAAA,KAAO,KAAA,GACX;AAAA,EACC,cAAA,EAAgB,YAAA;AAAA,EAChB,oBAAA,EAAsB;AACxB,CAAA,GACA,EAAC;AAKA,IAAM,QAAA,GAAWC,gBAAAA,CAAqD,SAAS2B,SAAAA,CACpF,EAAE,KAAA,EAAO,KAAA,EAAO,SAAA,EAAW,kBAAA,EAAoB,GAAG,IAAA,EAAK,EACvD,YAAA,EACA;AACA,EAAA,MAAM,YAAA,GAAezB,aAAkC,IAAI,CAAA;AAC3D,EAAA,MAAM,eAAA,GAAkBC,cAAQ,MAAM,SAAA,CAAU,cAAc,YAAY,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAE3F,EAAA,oBAAA,CAAqB,cAAc,SAAS,CAAA;AAE5C,EAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AACtB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACET,cAAAA;AAAA,IAACY,gBAAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,GAAA,EAAK,eAAA;AAAA,MACL,iBAAA,EAAkB,SAAA;AAAA,MAClB,kBAAA;AAAA,MACA,KAAA,EAAO,CAACK,QAAAA,CAAO,IAAA,EAAM,KAAK,CAAA;AAAA,MAEzB,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,WAAA,EAAa,KAAA,KAAU;AACjC,QAAA,MAAM,MAAA,GAAS,KAAA,KAAU,KAAA,CAAM,MAAA,GAAS,CAAA;AACxC,QAAA,MAAM,SAAS,KAAA,GAAQ,CAAA;AAEvB,QAAA,uBACEd,eAAAA,CAACS,gBAAAA,EAAA,EAAsC,KAAA,EAAOK,SAAO,SAAA,EACnD,QAAA,EAAA;AAAA,0BAAAd,eAAAA,CAACS,gBAAAA,EAAA,EAAK,KAAA,EAAOK,SAAO,GAAA,EAClB,QAAA,EAAA;AAAA,4BAAAjB,cAAAA,CAACY,kBAAA,EAAK,KAAA,EAAO,CAACK,QAAAA,CAAO,KAAA,EAAOU,aAAY,CAAA,EACtC,QAAA,kBAAA3B,cAAAA;AAAA,cAACa,gBAAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO;AAAA,kBACLI,QAAAA,CAAO,UAAA;AAAA,kBACPZ,oBAAAA,CAAS,EAAA,KAAO,SAAA,GAAYY,QAAAA,CAAO,YAAA,GAAe;AAAA,iBACpD;AAAA,gBAEC,iBAAO,MAAM;AAAA;AAAA,aAChB,EACF,CAAA;AAAA,4BACAjB,cAAAA;AAAA,cAACa,gBAAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO,CAACI,QAAAA,CAAO,WAAA,EAAaZ,qBAAS,EAAA,KAAO,SAAA,GAAYY,QAAAA,CAAO,YAAA,GAAe,IAAI,CAAA;AAAA,gBAEjF,QAAA,EAAA;AAAA;AAAA;AACH,WAAA,EACF,CAAA;AAAA,UAEC,CAAC,MAAA,mBACAjB,cAAAA,CAACY,gBAAAA,EAAA,EAAK,KAAA,EAAOK,QAAAA,CAAO,aAAA,EAClB,QAAA,kBAAAjB,eAACY,gBAAAA,EAAA,EAAK,OAAOK,QAAAA,CAAO,SAAA,EAAW,GACjC,CAAA,GACE;AAAA,SAAA,EAAA,EAvBK,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,WAAW,CAAA,CAwBnC,CAAA;AAAA,MAEJ,CAAC;AAAA;AAAA,GACH;AAEJ,CAAC;AAED,IAAMA,QAAAA,GAASF,uBAAW,MAAA,CAAO;AAAA,EAC/B,IAAA,EAAM;AAAA,IACJ,KAAA,EAAO;AAAA,GACT;AAAA,EACA,SAAA,EAAW;AAAA,IACT,KAAA,EAAO;AAAA,GACT;AAAA,EACA,GAAA,EAAK;AAAA,IACH,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,GAAA,EAAK,OAAA;AAAA,IACL,KAAA,EAAO;AAAA,GACT;AAAA,EACA,KAAA,EAAO;AAAA,IACL,KAAA,EAAO,UAAA;AAAA,IACP,MAAA,EAAQ,UAAA;AAAA,IACR,YAAA,EAAc,EAAA;AAAA,IACd,iBAAiB,MAAA,CAAO,OAAA;AAAA,IACxB,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,UAAA,EAAY,CAAA;AAAA,IACZ,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,UAAA,EAAY;AAAA,IACV,YAAY,KAAA,CAAM,IAAA;AAAA,IAClB,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,UAAA,EAAY,EAAA;AAAA,IACZ,aAAA,EAAe,CAAA;AAAA,IACf,OAAO,MAAA,CAAO,KAAA;AAAA,IACd,SAAA,EAAW;AAAA,GACb;AAAA,EACA,WAAA,EAAa;AAAA,IACX,IAAA,EAAM,CAAA;AAAA,IACN,QAAA,EAAU,CAAA;AAAA,IACV,YAAY,KAAA,CAAM,IAAA;AAAA,IAClB,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,UAAA,EAAY,EAAA;AAAA,IACZ,aAAA,EAAe,CAAA;AAAA,IACf,OAAO,MAAA,CAAO;AAAA,GAChB;AAAA,EACA,aAAA,EAAe;AAAA,IACb,KAAA,EAAO,UAAA;AAAA,IACP,UAAA,EAAY,QAAA;AAAA,IACZ,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,SAAA,EAAW;AAAA,IACT,KAAA,EAAO,eAAA;AAAA,IACP,MAAA,EAAQ,gBAAA;AAAA,IACR,YAAA,EAAc,EAAA;AAAA,IACd,iBAAiB,MAAA,CAAO;AAAA,GAC1B;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,kBAAA,EAAoB;AAAA;AAExB,CAAC,CAAA;ACzHD,IAAM,WAAA,GAAc,EAAA;AAEpB,IAAMY,aAAAA,GACJtB,oBAAAA,CAAS,EAAA,KAAO,KAAA,GACX;AAAA,EACC,cAAA,EAAgB,YAAA;AAAA,EAChB,oBAAA,EAAsB;AACxB,CAAA,GACA,EAAC;AAEP,SAAS,KAAA,CAAM,KAAA,EAAe,GAAA,EAAa,GAAA,EAAc;AACvD,EAAA,OAAO,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,GAAA,KAAQ,MAAA,GAAY,QAAQ,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,GAAG,CAAC,CAAA;AACvE;AAEO,IAAM,OAAA,GAAUC,gBAAAA,CAAoD,SAAS4B,QAAAA,CAClF;AAAA,EACE,KAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,GAAA,GAAM,CAAA;AAAA,EACN,GAAA;AAAA,EACA,IAAA,GAAO,CAAA;AAAA,EACP,QAAA,GAAW,KAAA;AAAA,EACX,KAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,YAAA,EACA;AACA,EAAA,MAAM,YAAA,GAAe1B,aAAkC,IAAI,CAAA;AAC3D,EAAA,MAAM,eAAe,KAAA,KAAU,MAAA;AAC/B,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAIE,cAAAA;AAAA,IAAS,MACzD,KAAA,CAAM,YAAA,IAAgB,GAAA,EAAK,KAAK,GAAG;AAAA,GACrC;AACA,EAAA,MAAM,gBAAgB,KAAA,CAAM,YAAA,GAAe,KAAA,GAAQ,iBAAA,EAAmB,KAAK,GAAG,CAAA;AAC9E,EAAA,MAAM,iBAAA,GAAoB,SAAA,EAAW,IAAA,EAAK,IAAK,MAAA;AAC/C,EAAA,MAAM,eAAA,GAAkBD,cAAQ,MAAM,SAAA,CAAU,cAAc,YAAY,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAC3F,EAAA,MAAM,iBAAA,GAAoB,YAAY,aAAA,IAAiB,GAAA;AACvD,EAAA,MAAM,iBAAA,GAAoB,QAAA,IAAa,GAAA,KAAQ,MAAA,IAAa,aAAA,IAAiB,GAAA;AAE7E,EAAA,oBAAA,CAAqB,cAAc,iBAAiB,CAAA;AAEpD,EAAA,MAAM,WAAA,GAAc,CAAC,SAAA,KAAsB;AACzC,IAAA,MAAM,IAAA,GAAO,KAAA,CAAM,SAAA,EAAW,GAAA,EAAK,GAAG,CAAA;AACtC,IAAA,IAAI,SAAS,aAAA,EAAe;AAC5B,IAAA,IAAI,CAAC,YAAA,EAAc,oBAAA,CAAqB,IAAI,CAAA;AAC5C,IAAA,aAAA,GAAgB,IAAI,CAAA;AAAA,EACtB,CAAA;AAEA,EAAA,uBACEN,eAAAA,CAACS,gBAAAA,EAAA,EAAM,GAAG,IAAA,EAAM,GAAA,EAAK,eAAA,EAAiB,KAAA,EAAO,CAACK,QAAAA,CAAO,IAAA,EAAM,KAAK,CAAA,EAC9D,QAAA,EAAA;AAAA,oBAAAjB,cAAAA;AAAA,MAACc,qBAAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAU,iBAAA;AAAA,QACV,OAAA;AAAA,QACA,OAAA,EAAS,MAAM,WAAA,CAAY,aAAA,GAAgB,IAAI,CAAA;AAAA,QAC/C,iBAAA,EAAkB,QAAA;AAAA,QAClB,kBAAA,EAAmB,gBAAA;AAAA,QACnB,kBAAA,EAAoB,EAAE,QAAA,EAAU,iBAAA,EAAkB;AAAA,QAClD,OAAO,CAACG,QAAAA,CAAO,QAAQU,aAAAA,EAAc,iBAAA,IAAqBV,SAAO,cAAc,CAAA;AAAA,QAE/E,QAAA,kBAAAjB,eAAC,SAAA,EAAA,EAAU;AAAA;AAAA,KACb;AAAA,oBAEAA,cAAAA,CAACa,gBAAAA,EAAA,EAAK,KAAA,EAAOI,QAAAA,CAAO,OAAQ,QAAA,EAAA,aAAA,EAAc,CAAA;AAAA,oBAE1CjB,cAAAA;AAAA,MAACc,qBAAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAU,iBAAA;AAAA,QACV,OAAA;AAAA,QACA,OAAA,EAAS,MAAM,WAAA,CAAY,aAAA,GAAgB,IAAI,CAAA;AAAA,QAC/C,iBAAA,EAAkB,QAAA;AAAA,QAClB,kBAAA,EAAmB,gBAAA;AAAA,QACnB,kBAAA,EAAoB,EAAE,QAAA,EAAU,iBAAA,EAAkB;AAAA,QAClD,OAAO,CAACG,QAAAA,CAAO,QAAQU,aAAAA,EAAc,iBAAA,IAAqBV,SAAO,cAAc,CAAA;AAAA,QAE/E,QAAA,kBAAAjB,eAAC,QAAA,EAAA,EAAS;AAAA;AAAA;AACZ,GAAA,EACF,CAAA;AAEJ,CAAC;AAED,IAAMiB,QAAAA,GAASF,uBAAW,MAAA,CAAO;AAAA,EAC/B,IAAA,EAAM;AAAA,IACJ,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,SAAA,EAAW,YAAA;AAAA,IACX,GAAA,EAAK;AAAA,GACP;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,WAAA;AAAA,IACP,MAAA,EAAQ,WAAA;AAAA,IACR,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,WAAA,EAAa,CAAA;AAAA,IACb,aAAa,MAAA,CAAO,YAAA;AAAA,IACpB,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,OAAA,EAAS;AAAA,GACX;AAAA,EACA,KAAA,EAAO;AAAA,IACL,GAAG,iBAAA;AAAA,IACH,OAAO,MAAA,CAAO;AAAA;AAElB,CAAC,CAAA;AC5FD,IAAMG,UAAAA,GAAY,EAAA;AAClB,IAAM,kBAAA,GAAqB,GAAA;AAC3B,IAAM,yBAAA,GAA4B,EAAA;AAClC,IAAM,kBAAA,GAAqB,EAAA;AAC3B,IAAM,gBAAA,GAAmB,EAAA;AACzB,IAAM,4BAAA,GAA+B,GAAA;AACrC,IAAM,aAAA,GAAgB,CAAA;AACtB,IAAM,UAAA,GAAa,CAAA;AAEnB,SAAS,0BAA0B,YAAA,EAAkC;AACnE,EAAA,MAAM,cAAwB,EAAC;AAC/B,EAAA,IAAI,MAAA,GAAS,CAAA;AACb,EAAA,KAAA,IAAS,QAAQ,CAAA,EAAG,KAAA,GAAQ,YAAA,CAAa,MAAA,EAAQ,SAAS,CAAA,EAAG;AAC3D,IAAA,WAAA,CAAY,KAAK,MAAM,CAAA;AACvB,IAAA,MAAA,IAAU,YAAA,CAAa,KAAK,CAAA,GAAI,UAAA;AAAA,EAClC;AACA,EAAA,OAAO,WAAA;AACT;AAEO,IAAM,eAAA,GAAkBZ,gBAAAA;AAAA,EAC7B,SAAS6B,gBAAAA,CACP;AAAA,IACE,OAAA;AAAA,IACA,KAAA;AAAA,IACA,YAAA,GAAe,OAAA,CAAQ,CAAC,CAAA,CAAE,KAAA;AAAA,IAC1B,aAAA;AAAA,IACA,SAAA,GAAY,IAAA;AAAA,IACZ,QAAA,GAAW,KAAA;AAAA,IACX,KAAA;AAAA,IACA,SAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAG;AAAA,KAEL,YAAA,EACA;AACA,IAAA,MAAM,cAAc,OAAA,CAAQ,MAAA;AAC5B,IAAA,MAAM,YAAA,GAAe3B,aAAkC,IAAI,CAAA;AAC3D,IAAA,MAAM,eAAe,KAAA,KAAU,MAAA;AAC/B,IAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAIE,eAAS,YAAY,CAAA;AACvE,IAAA,MAAM,aAAA,GAAgB,eAAe,KAAA,GAAQ,iBAAA;AAC7C,IAAA,MAAM,gBAAgB,IAAA,CAAK,GAAA;AAAA,MACzB,CAAA;AAAA,MACA,OAAA,CAAQ,UAAU,CAAC,EAAE,OAAO,WAAA,EAAY,KAAM,gBAAgB,aAAa;AAAA,KAC7E;AACA,IAAA,MAAM,iBAAA,GAAoB,SAAA,EAAW,IAAA,EAAK,IAAK,MAAA;AAC/C,IAAA,MAAM,eAAA,GAAkBD,cAAQ,MAAM,SAAA,CAAU,cAAc,YAAY,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAC3F,IAAA,MAAM,WAAWD,YAAAA,CAAO,IAAI4B,qBAAS,KAAA,CAAM,aAAa,CAAC,CAAA,CAAE,OAAA;AAC3D,IAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI1B,cAAAA;AAAA,MAAmB,MAC3D,MAAM,IAAA,CAAK,EAAE,QAAQ,WAAA,EAAY,EAAG,MAAM,CAAC;AAAA,KAC7C;AACA,IAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAIA,eAAS,CAAC,CAAA;AAGtD,IAAA,MAAM,WAAA,GAAc,aAAA,GAAgB,CAAA,GAAI,UAAA,IAAc,WAAA,GAAc,CAAA,CAAA;AACpE,IAAA,MAAM,uBAAuB,IAAA,CAAK,GAAA,CAAI,CAAA,EAAA,CAAI,cAAA,GAAiB,eAAe,WAAW,CAAA;AACrF,IAAA,MAAM,yBAAA,GAA4B,CAAC,YAAA,KACjC,YAAA,GAAe,IACX,IAAA,CAAK,GAAA;AAAA,MACH,gBAAA;AAAA,MACA,YAAA,GAAe,4BAA4B,CAAA,GAAI;AAAA,KACjD,GACA,CAAA;AAEN,IAAA,MAAM,eAAe,SAAA,GACjB,KAAA,CAAM,IAAA,CAAK,EAAE,QAAQ,WAAA,EAAY,EAAG,MAAM,oBAAoB,IAC9D,aAAA,CAAc,GAAA,CAAI,CAAC,KAAA,KAAU,yBAAA,CAA0B,KAAK,CAAC,CAAA;AAEjE,IAAA,MAAM,mBAAA,GAAsB,YAAA,CAAa,aAAa,CAAA,IAAK,CAAA;AAC3D,IAAA,MAAM,sBAAsB,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,EAAG,UAAU,KAAK,CAAA;AAC3D,IAAA,MAAM,oBAAA,GAAuB,0BAA0B,YAAY,CAAA;AACnE,IAAA,MAAM,mBAAA,GAAsB,SAAS,WAAA,CAAY;AAAA,MAC/C,UAAA,EAAY,mBAAA;AAAA,MACZ,WAAA,EAAa;AAAA,KACd,CAAA;AAED,IAAA,oBAAA,CAAqB,cAAc,iBAAiB,CAAA;AAEpD,IAAAY,gBAAU,MAAM;AACd,MAAA,gBAAA,CAAiB,CAAC,OAAA,KAAY;AAC5B,QAAA,IAAI,OAAA,CAAQ,MAAA,KAAW,WAAA,EAAa,OAAO,OAAA;AAC3C,QAAA,OAAO,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,WAAA,EAAY,EAAG,CAAC,CAAA,EAAG,KAAA,KAAU,OAAA,CAAQ,KAAK,CAAA,IAAK,CAAC,CAAA;AAAA,MAC9E,CAAC,CAAA;AAAA,IACH,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,IAAAA,gBAAU,MAAM;AACd,MAAA,MAAM,SAAA,GAAYc,oBAAA,CAAS,MAAA,CAAO,QAAA,EAAU;AAAA,QAC1C,OAAA,EAAS,aAAA;AAAA,QACT,QAAA,EAAU,kBAAA;AAAA,QACV,MAAA,EAAQC,kBAAA,CAAO,GAAA,CAAIA,kBAAA,CAAO,KAAK,CAAA;AAAA,QAC/B,eAAA,EAAiB;AAAA,OAClB,CAAA;AAED,MAAA,SAAA,CAAU,KAAA,EAAM;AAChB,MAAA,OAAO,MAAM,UAAU,IAAA,EAAK;AAAA,IAC9B,CAAA,EAAG,CAAC,QAAA,EAAU,aAAa,CAAC,CAAA;AAE5B,IAAA,MAAM,YAAA,GAAe,CAAC,SAAA,KAAsB;AAC1C,MAAA,IAAI,QAAA,IAAY,cAAc,aAAA,EAAe;AAC7C,MAAA,IAAI,CAAC,YAAA,EAAc,oBAAA,CAAqB,SAAS,CAAA;AACjD,MAAA,aAAA,GAAgB,SAAS,CAAA;AAAA,IAC3B,CAAA;AAEA,IAAA,uBACElC,eAAAA;AAAA,MAACS,gBAAAA;AAAA,MAAA;AAAA,QACE,GAAG,IAAA;AAAA,QACJ,GAAA,EAAK,eAAA;AAAA,QACL,QAAA,EAAU,CAAC,KAAA,KAAU;AACnB,UAAA,MAAM,SAAA,GAAY,KAAA,CAAM,WAAA,CAAY,MAAA,CAAO,KAAA;AAC3C,UAAA,iBAAA;AAAA,YAAkB,CAAC,YAAA,KACjB,YAAA,KAAiB,SAAA,GAAY,YAAA,GAAe;AAAA,WAC9C;AACA,UAAA,QAAA,GAAW,KAAK,CAAA;AAAA,QAClB,CAAA;AAAA,QACA,KAAA,EAAO;AAAA,UACLK,QAAAA,CAAO,IAAA;AAAA,UACP,SAAA,GAAYA,QAAAA,CAAO,SAAA,GAAYA,QAAAA,CAAO,YAAA;AAAA,UACtC,YAAYA,QAAAA,CAAO,QAAA;AAAA,UACnB;AAAA,SACF;AAAA,QACA,iBAAA,EAAkB,YAAA;AAAA,QAEjB,QAAA,EAAA;AAAA,UAAA,CAAC,SAAA,GACE,OAAA,CAAQ,GAAA,CAAI,CAAC,EAAE,KAAA,EAAO,WAAA,EAAa,KAAA,EAAO,IAAA,EAAMY,KAAAA,EAAK,EAAG,KAAA,qBACtD1B,eAAAA;AAAA,YAACS,gBAAAA;AAAA,YAAA;AAAA,cAEC,aAAA,EAAc,MAAA;AAAA,cACd,aAAA,EAAW,IAAA;AAAA,cACX,2BAAA,EAA2B,IAAA;AAAA,cAC3B,yBAAA,EAA0B,qBAAA;AAAA,cAC1B,QAAA,EAAU,CAAC,KAAA,KAAU;AACnB,gBAAA,MAAM,SAAA,GAAY,KAAA,CAAM,WAAA,CAAY,MAAA,CAAO,KAAA;AAC3C,gBAAA,gBAAA,CAAiB,CAAC,aAAA,KAAkB;AAClC,kBAAA,IAAI,aAAA,CAAc,KAAK,CAAA,KAAM,SAAA,EAAW,OAAO,aAAA;AAC/C,kBAAA,MAAM,UAAA,GAAa,CAAC,GAAG,aAAa,CAAA;AACpC,kBAAA,UAAA,CAAW,KAAK,CAAA,GAAI,SAAA;AACpB,kBAAA,OAAO,UAAA;AAAA,gBACT,CAAC,CAAA;AAAA,cACH,CAAA;AAAA,cACA,OAAOK,QAAAA,CAAO,iBAAA;AAAA,cAEb,QAAA,EAAA;AAAA,gBAAAY,wBAAO7B,cAAAA,CAAC6B,OAAA,EAAK,IAAA,EAAMX,YAAW,CAAA,GAAK,IAAA;AAAA,gCACpClB,cAAAA,CAACa,gBAAAA,EAAA,EAAK,KAAA,EAAO,CAACI,QAAAA,CAAO,KAAA,EAAOA,QAAAA,CAAO,iBAAiB,CAAA,EAAI,QAAA,EAAA,KAAA,EAAM;AAAA;AAAA,aAAA;AAAA,YAjBzD,GAAG,WAAW,CAAA,YAAA;AAAA,WAmBtB,CAAA,GACD,IAAA;AAAA,UACH,mBAAA,GAAsB,oBACrBjB,cAAAA;AAAA,YAACoC,oBAAA,CAAS,IAAA;AAAA,YAAT;AAAA,cACC,aAAA,EAAc,MAAA;AAAA,cACd,KAAA,EAAO;AAAA,gBACLnB,QAAAA,CAAO,eAAA;AAAA,gBACP,EAAE,OAAO,mBAAA,EAAqB,SAAA,EAAW,CAAC,EAAE,UAAA,EAAY,mBAAA,EAAqB,CAAA;AAAE;AACjF;AAAA,WACF,GACE,IAAA;AAAA,UACH,OAAA,CAAQ,GAAA,CAAI,CAAC,EAAE,KAAA,EAAO,aAAa,KAAA,EAAO,IAAA,EAAMY,KAAAA,EAAK,EAAG,KAAA,KAAU;AACjE,YAAA,MAAM,WAAW,WAAA,KAAgB,aAAA;AACjC,YAAA,MAAM,SAAA,GAAY,QAAA,GAAW,MAAA,CAAO,OAAA,GAAU,MAAA,CAAO,YAAA;AACrD,YAAA,MAAM,UAAA,GAAa,QAAA,GAAW,MAAA,CAAO,YAAA,GAAe,MAAA,CAAO,YAAA;AAC3D,YAAA,MAAM,WAAA,GAAc,YAAA,CAAa,KAAK,CAAA,IAAK,CAAA;AAE3C,YAAA,uBACE7B,cAAAA;AAAA,cAACc,qBAAAA;AAAA,cAAA;AAAA,gBAEC,OAAA,EAAS,MAAM,YAAA,CAAa,WAAW,CAAA;AAAA,gBACvC,QAAA;AAAA,gBACA,OAAA;AAAA,gBACA,iBAAA,EAAkB,OAAA;AAAA,gBAClB,kBAAA,EAAoB,KAAA;AAAA,gBACpB,kBAAA,EAAoB,EAAE,QAAA,EAAU,QAAA,EAAS;AAAA,gBACzC,KAAA,EAAO;AAAA,kBACLG,QAAAA,CAAO,MAAA;AAAA,kBACP,SAAA,GACIA,QAAAA,CAAO,eAAA,GACP,CAACA,QAAAA,CAAO,kBAAA,EAAoB,WAAA,GAAc,CAAA,IAAK,EAAE,KAAA,EAAO,WAAA,EAAa;AAAA,iBAC3E;AAAA,gBAEA,0BAAAd,eAAAA,CAACS,gBAAAA,EAAA,EAAK,KAAA,EAAOK,SAAO,aAAA,EACjB,QAAA,EAAA;AAAA,kBAAAY,KAAAA,mBAAO7B,cAAAA,CAAC6B,KAAAA,EAAA,EAAK,IAAA,EAAMX,UAAAA,EAAW,KAAA,EAAO,SAAA,EAAW,CAAA,GAAK,IAAA;AAAA,kCACtDlB,cAAAA;AAAA,oBAACa,gBAAAA;AAAA,oBAAA;AAAA,sBACC,aAAA,EAAe,YAAY,CAAA,GAAI,MAAA;AAAA,sBAC/B,KAAA,EAAO;AAAA,wBACLI,QAAAA,CAAO,KAAA;AAAA,wBACP,CAAC,aAAaA,QAAAA,CAAO,iBAAA;AAAA,wBACrB,EAAE,OAAO,UAAA;AAAW,uBACtB;AAAA,sBAEC,QAAA,EAAA;AAAA;AAAA;AACH,iBAAA,EACF;AAAA,eAAA;AAAA,cA1BK;AAAA,aA2BP;AAAA,UAEJ,CAAC;AAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,IAAMA,QAAAA,GAASF,uBAAW,MAAA,CAAO;AAAA,EAC/B,IAAA,EAAM;AAAA,IACJ,MAAA,EAAQ,EAAA;AAAA,IACR,aAAA,EAAe,KAAA;AAAA,IACf,OAAA,EAAS,aAAA;AAAA,IACT,GAAA,EAAK,UAAA;AAAA,IACL,YAAA,EAAc,EAAA;AAAA,IACd,iBAAiB,MAAA,CAAO,OAAA;AAAA,IACxB,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,SAAA,EAAW;AAAA,IACT,KAAA,EAAO,MAAA;AAAA,IACP,SAAA,EAAW;AAAA,GACb;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,SAAA,EAAW;AAAA,GACb;AAAA,EACA,QAAA,EAAU;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,MAAA,EAAQ,CAAA;AAAA,IACR,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,iBAAA,EAAmB,yBAAA;AAAA,IACnB,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,aAAA,EAAe;AAAA,IACb,QAAA,EAAU,MAAA;AAAA,IACV,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,GAAA,EAAK;AAAA,GACP;AAAA,EACA,iBAAA,EAAmB;AAAA,IACjB,QAAA,EAAU,UAAA;AAAA,IACV,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,GAAA,EAAK,kBAAA;AAAA,IACL,OAAA,EAAS;AAAA,GACX;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM,CAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,kBAAA,EAAoB;AAAA,IAClB,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,QAAA,EAAU,UAAA;AAAA,IACV,GAAA,EAAK,aAAA;AAAA,IACL,IAAA,EAAM,aAAA;AAAA,IACN,MAAA,EAAQ,EAAA;AAAA,IACR,iBAAiB,MAAA,CAAO,OAAA;AAAA,IACxB,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,KAAA,EAAO;AAAA,IACL,GAAG,yBAAA;AAAA,IACH,UAAA,EAAY;AAAA,GACd;AAAA,EACA,iBAAA,EAAmB;AAAA,IACjB,UAAA,EAAY;AAAA;AAEhB,CAAC,CAAA;AC9OD,IAAM,aAAA,GAAgB,GAAA;AACtB,IAAM,uBAAA,GAA0B,EAAA;AAChC,IAAMuB,cAAAA,GAAgB,EAAA;AACtB,IAAM,UAAA,GAAa,EAAA;AACnB,IAAM,WAAA,GAAc,EAAA;AACpB,IAAM,WAAA,GAAc,EAAA;AACpB,IAAMC,eAAAA,GAAiB,EAAA;AACvB,IAAM,sBAAA,GAAyB,EAAA;AAC/B,IAAM,qBAAA,GAAwB,GAAA;AAEvB,IAAM,OAAA,GAAUjC,gBAAAA,CAAoD,SAASkC,QAAAA,CAClF;AAAA,EACE,KAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,sBAAA,GAAyB,gBAAA;AAAA,EACzB,4BAAA,GAA+B,oBAAA;AAAA,EAC/B,0BAAA,GAA6B,kBAAA;AAAA,EAC7B,wBAAA,GAA2B,gBAAA;AAAA,EAC3B,wBAAA,GAA2B,SAAA;AAAA,EAC3B,SAAA,EAAW,aAAA;AAAA,EACX,gBAAA,GAAmB,KAAA;AAAA,EACnB,iBAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,YAAA,EACA;AACA,EAAA,MAAM,YAAA,GAAehC,aAAkC,IAAI,CAAA;AAC3D,EAAA,MAAM,eAAA,GAAkBC,cAAQ,MAAM,SAAA,CAAU,cAAc,YAAY,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAC3F,EAAA,MAAM,CAAC,qBAAA,EAAuB,wBAAwB,CAAA,GAAIC,eAAS,gBAAgB,CAAA;AACnF,EAAA,MAAM,YAAY,aAAA,IAAiB,qBAAA;AACnC,EAAA,MAAM,SAAA,GAAYF,YAAAA;AAAA,IAChB,IAAI4B,oBAAAA,CAAS,KAAA,CAAM,SAAA,GAAY,0BAA0B,aAAa;AAAA,GACxE,CAAE,OAAA;AACF,EAAA,MAAM,YAAA,GAAe5B,aAAO,IAAI4B,oBAAAA,CAAS,MAAM,SAAA,GAAY,CAAA,GAAI,CAAC,CAAC,CAAA,CAAE,OAAA;AAEnE,EAAA,oBAAA,CAAqB,cAAc,SAAS,CAAA;AAE5C,EAAAd,gBAAU,MAAM;AACd,IAAA,MAAM,SAAA,GAAY,YAAY,uBAAA,GAA0B,aAAA;AACxD,IAAA,MAAM,WAAA,GAAc,YAAY,CAAA,GAAI,CAAA;AACpC,IAAA,MAAM,MAAA,GAAS;AAAA,MACb,QAAA,EAAU,qBAAA;AAAA,MACV,MAAA,EAAQe,kBAAAA,CAAO,KAAA,CAAMA,kBAAAA,CAAO,IAAI,CAAA;AAAA,MAChC,eAAA,EAAiB;AAAA,KACnB;AAEA,IAAA,MAAM,cAAA,GAAiBD,qBAAS,MAAA,CAAO,SAAA,EAAW,EAAE,GAAG,MAAA,EAAQ,OAAA,EAAS,SAAA,EAAW,CAAA;AACnF,IAAA,MAAM,gBAAA,GAAmBA,qBAAS,MAAA,CAAO,YAAA,EAAc,EAAE,GAAG,MAAA,EAAQ,OAAA,EAAS,WAAA,EAAa,CAAA;AAE1F,IAAAA,qBAAS,QAAA,CAAS,CAAC,gBAAgB,gBAAgB,CAAC,EAAE,KAAA,EAAM;AAC5D,IAAA,OAAO,MAAM;AACX,MAAA,cAAA,CAAe,IAAA,EAAK;AACpB,MAAA,gBAAA,CAAiB,IAAA,EAAK;AAAA,IACxB,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,SAAA,EAAW,YAAA,EAAc,SAAS,CAAC,CAAA;AAEvC,EAAA,MAAM,YAAA,GAAe,CAAC,IAAA,KAAkB;AACtC,IAAA,iBAAA,GAAoB,IAAI,CAAA;AACxB,IAAA,IAAI,kBAAkB,MAAA,EAAW;AAC/B,MAAA,wBAAA,CAAyB,IAAI,CAAA;AAAA,IAC/B;AAAA,EACF,CAAA;AAEA,EAAA,uBACEjC,eAAAA;AAAA,IAACiC,oBAAAA,CAAS,IAAA;AAAA,IAAT;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,GAAA,EAAK,eAAA;AAAA,MACL,KAAA,EAAO,CAACnB,QAAAA,CAAO,IAAA,EAAM,EAAE,KAAA,EAAO,SAAA,IAAa,KAAK,CAAA;AAAA,MAChD,iBAAA,EAAkB,MAAA;AAAA,MAElB,QAAA,EAAA;AAAA,wBAAAd,eAAAA,CAACS,gBAAAA,EAAA,EAAK,KAAA,EAAO,CAACK,QAAAA,CAAO,MAAA,EAAQ,SAAA,GAAYA,QAAAA,CAAO,eAAA,GAAkBA,QAAAA,CAAO,cAAc,CAAA,EACrF,QAAA,EAAA;AAAA,0BAAAjB,cAAAA;AAAA,YAACoC,oBAAAA,CAAS,IAAA;AAAA,YAAT;AAAA,cACC,aAAA,EAAe,YAAY,MAAA,GAAS,MAAA;AAAA,cACpC,KAAA,EAAO;AAAA,gBACLnB,QAAAA,CAAO,QAAA;AAAA,gBACP;AAAA,kBACE,OAAA,EAAS,YAAA;AAAA,kBACT,QAAA,EAAU,YAAY,CAAA,GAAI;AAAA;AAC5B,eACF;AAAA,cACA,2BAAA,EAA6B,SAAA;AAAA,cAC7B,yBAAA,EAA2B,YAAY,qBAAA,GAAwB,MAAA;AAAA,cAE/D,QAAA,kBAAAjB,cAAAA;AAAA,gBAAC,SAAA;AAAA,gBAAA;AAAA,kBACC,kBAAA,EAAoB,sBAAA;AAAA,kBACpB,MAAA,EAAQ,WAAA;AAAA,kBACR,OAAA,EAAQ,OAAA;AAAA,kBACR,KAAA,EAAO;AAAA;AAAA;AACT;AAAA,WACF;AAAA,0BAEAA,cAAAA;AAAA,YAACc,qBAAAA;AAAA,YAAA;AAAA,cACC,iBAAA,EAAkB,QAAA;AAAA,cAClB,kBAAA,EAAoB,YAAY,wBAAA,GAA2B,0BAAA;AAAA,cAC3D,kBAAA,EAAoB,EAAE,QAAA,EAAU,CAAC,SAAA,EAAU;AAAA,cAC3C,OAAA,EAAS,CAAA;AAAA,cACT,OAAA,EAAS,MAAM,YAAA,CAAa,CAAC,SAAS,CAAA;AAAA,cACtC,OAAOG,QAAAA,CAAO,YAAA;AAAA,cAEd,QAAA,kBAAAjB,eAAC,WAAA,EAAA,EAAY,KAAA,EAAO,OAAO,OAAA,EAAS,IAAA,EAAM,WAAA,EAAa,WAAA,EAAa,CAAA,EAAG;AAAA;AAAA;AACzE,SAAA,EACF,CAAA;AAAA,wBAEAA,cAAAA;AAAA,UAACY,gBAAAA;AAAA,UAAA;AAAA,YACC,kBAAA,EAAoB,4BAAA;AAAA,YACpB,iBAAA,EAAkB,MAAA;AAAA,YAClB,OAAOK,QAAAA,CAAO,GAAA;AAAA,YAEb,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS;AACnB,cAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAA;AACpC,cAAA,MAAM,SAAA,GAAY,QAAA,GAAW,MAAA,CAAO,OAAA,GAAU,MAAA,CAAO,OAAA;AACrD,cAAA,MAAMY,QAAO,IAAA,CAAK,IAAA;AAClB,cAAA,MAAM,QAAA,mBACJ7B,cAAAA,CAAC6B,KAAAA,EAAA,EAAK,OAAO,SAAA,EAAW,IAAA,EAAMU,eAAAA,EAAgB,WAAA,EAAa,GAAA,EAAK,CAAA;AAGlE,cAAA,uBACEvC,cAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBAEC,IAAA,EAAM,QAAA;AAAA,kBACN,OAAO,IAAA,CAAK,KAAA;AAAA,kBACZ,oBAAoB,IAAA,CAAK,KAAA;AAAA,kBACzB,eAAA,EAAiB,QAAA,GAAW,MAAA,CAAO,OAAA,GAAU,aAAA;AAAA,kBAC7C,YAAY,MAAA,CAAO,OAAA;AAAA,kBACnB,SAAS,IAAA,CAAK,OAAA;AAAA,kBACd,UAAA,EAAY;AAAA,oBACViB,QAAAA,CAAO,SAAA;AAAA,oBACP,EAAE,KAAA,EAAO,QAAA,GAAW,MAAA,CAAO,KAAA,GAAQ,OAAO,OAAA,EAAQ;AAAA,oBAClD,SAAA,GAAYA,QAAAA,CAAO,kBAAA,GAAqBA,QAAAA,CAAO;AAAA,mBACjD;AAAA,kBACA,OAAO,CAACA,QAAAA,CAAO,UAAU,SAAA,GAAYA,QAAAA,CAAO,oBAAoB,IAAI;AAAA,iBAAA;AAAA,gBAZ/D,IAAA,CAAK;AAAA,eAaZ;AAAA,YAEJ,CAAC;AAAA;AAAA,SACH;AAAA,wBAEAjB,cAAAA,CAACY,gBAAAA,EAAA,EAAK,OAAO,CAACK,QAAAA,CAAO,MAAA,EAAQ,SAAA,GAAYA,QAAAA,CAAO,eAAA,GAAkBA,QAAAA,CAAO,cAAc,GACrF,QAAA,kBAAAjB,cAAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACC,MAAM,IAAA,CAAK,IAAA;AAAA,YACX,OAAO,IAAA,CAAK,KAAA;AAAA,YACZ,UAAU,IAAA,CAAK,QAAA;AAAA,YACf,QAAA;AAAA,YACA,wBAAA;AAAA,YACA,OAAA,EAAS;AAAA;AAAA,SACX,EACF;AAAA;AAAA;AAAA,GACF;AAEJ,CAAC;AAED,IAAMiB,QAAAA,GAASF,uBAAW,MAAA,CAAO;AAAA,EAC/B,IAAA,EAAM;AAAA,IACJ,aAAA,EAAe,QAAA;AAAA,IACf,SAAA,EAAW,SAAA;AAAA,IACX,MAAA,EAAQ,MAAA;AAAA,IACR,SAAA,EAAW,MAAA;AAAA,IACX,UAAA,EAAY,CAAA;AAAA,IACZ,iBAAiB,MAAA,CAAO,IAAA;AAAA,IACxB,gBAAA,EAAkB,CAAA;AAAA,IAClB,kBAAkB,MAAA,CAAO,OAAA;AAAA,IACzB,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,MAAA,EAAQ,CAAA;AAAA,IACR,MAAA,EAAQuB,cAAAA;AAAA,IACR,KAAA,EAAO,MAAA;AAAA,IACP,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,iBAAA,EAAmB,CAAA;AAAA,IACnB,mBAAmB,MAAA,CAAO,OAAA;AAAA,IAC1B,iBAAiB,MAAA,CAAO;AAAA,GAC1B;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,cAAA,EAAgB,eAAA;AAAA,IAChB,iBAAA,EAAmB;AAAA,GACrB;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,cAAA,EAAgB,QAAA;AAAA,IAChB,iBAAA,EAAmB;AAAA,GACrB;AAAA,EACA,QAAA,EAAU;AAAA,IACR,QAAA,EAAU,CAAA;AAAA,IACV,MAAA,EAAQ,WAAA;AAAA,IACR,UAAA,EAAY,CAAA;AAAA,IACZ,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,KAAA,EAAO,WAAA;AAAA,IACP,MAAA,EAAQ,WAAA;AAAA,IACR,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,UAAA,EAAY;AAAA,GACd;AAAA,EACA,GAAA,EAAK;AAAA,IACH,QAAA,EAAU,CAAA;AAAA,IACV,UAAA,EAAY,CAAA;AAAA,IACZ,SAAA,EAAW,CAAA;AAAA,IACX,KAAA,EAAO,MAAA;AAAA,IACP,SAAA,EAAW,CAAA;AAAA,IACX,OAAA,EAAS,EAAA;AAAA,IACT,GAAA,EAAK;AAAA,GACP;AAAA,EACA,QAAA,EAAU;AAAA,IACR,GAAA,EAAK;AAAA,GACP;AAAA,EACA,iBAAA,EAAmB;AAAA,IACjB,GAAA,EAAK;AAAA,GACP;AAAA,EACA,SAAA,EAAW;AAAA,IACT,YAAY,KAAA,CAAM,IAAA;AAAA,IAClB,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,UAAA,EAAY,EAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,iBAAA,EAAmB;AAAA,IACjB,QAAA,EAAU,CAAA;AAAA,IACV,UAAA,EAAY,CAAA;AAAA,IACZ,OAAA,EAAS;AAAA,GACX;AAAA,EACA,kBAAA,EAAoB;AAAA,IAClB,QAAA,EAAU,CAAA;AAAA,IACV,UAAA,EAAY,CAAA;AAAA,IACZ,KAAA,EAAO,CAAA;AAAA,IACP,QAAA,EAAU,CAAA;AAAA,IACV,OAAA,EAAS,CAAA;AAAA,IACT,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,MAAA,EAAQ,sBAAA;AAAA,IACR,KAAA,EAAO,MAAA;AAAA,IACP,QAAA,EAAU,CAAA;AAAA,IACV,UAAA,EAAY,CAAA;AAAA,IACZ,SAAA,EAAW,MAAA;AAAA,IACX,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,iBAAA,EAAmB;AAAA,GACrB;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,iBAAA,EAAmB;AAAA;AAEvB,CAAC,CAAA;ACzQM,IAAM,sBAAA,GAAyB;AAAA,EACpC,EAAE,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO,oBAAA,EAAM;AAAA,EAC5B,EAAE,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO,KAAA,EAAM;AAAA,EAC5B,EAAE,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO,oBAAA;AACxB;AAEA,IAAM,aAAA,GAAgB,EAAA;AACtB,IAAM,cAAA,GAAiB,EAAA;AACvB,IAAMpB,UAAAA,GAAY,EAAA;AAEX,IAAM,gBAAA,GAAmBZ,gBAAAA;AAAA,EAC9B,SAASmC,iBAAAA,CACP;AAAA,IACE,OAAA,GAAU,sBAAA;AAAA,IACV,KAAA;AAAA,IACA,YAAA;AAAA,IACA,aAAA;AAAA,IACA,IAAA,EAAM,QAAA;AAAA,IACN,WAAA,GAAc,KAAA;AAAA,IACd,YAAA;AAAA,IACA,QAAA,GAAW,KAAA;AAAA,IACX,kBAAA,GAAqB,UAAA;AAAA,IACrB,KAAA;AAAA,IACA,SAAA;AAAA,IACA,OAAA,GAAU,CAAA;AAAA,IACV,GAAG;AAAA,KAEL,YAAA,EACA;AACA,IAAA,MAAM,UAAA,GAAajC,aAAkC,IAAI,CAAA;AACzD,IAAA,MAAM,UAAA,GAAaA,aAAuC,IAAI,CAAA;AAC9D,IAAA,MAAM,aAAA,GAAgBC,cAAQ,MAAM,SAAA,CAAU,YAAY,YAAY,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AACvF,IAAA,MAAM,UAAA,GAAa,OAAA,CAAQ,CAAC,CAAA,EAAG,KAAA,IAAS,EAAA;AACxC,IAAA,MAAM,oBAAoB,KAAA,KAAU,MAAA;AACpC,IAAA,MAAM,mBAAmB,QAAA,KAAa,MAAA;AACtC,IAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAIC,cAAAA,CAAS,gBAAgB,UAAU,CAAA;AACrF,IAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAIA,eAAS,WAAW,CAAA;AACpE,IAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAIA,eAAS,KAAK,CAAA;AAC1D,IAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,eAAwB,IAAI,CAAA;AACpE,IAAA,MAAM,aAAA,GAAgB,oBAAoB,KAAA,GAAQ,iBAAA;AAClD,IAAA,MAAM,MAAA,GAAS,mBAAmB,QAAA,GAAW,gBAAA;AAC7C,IAAA,MAAM,cAAA,GACJ,OAAA,CAAQ,IAAA,CAAK,CAAC,MAAA,KAAW,MAAA,CAAO,KAAA,KAAU,aAAa,CAAA,IAAK,OAAA,CAAQ,CAAC,CAAA,IAAK,IAAA;AAE5E,IAAA,oBAAA,CAAqB,UAAA,EAAY,SAAA,EAAW,IAAA,EAAK,IAAK,MAAS,CAAA;AAE/D,IAAA,MAAM,OAAA,GAAUW,iBAAAA;AAAA,MACd,CAAC,IAAA,KAAkB;AACjB,QAAA,IAAI,QAAA,IAAY,SAAS,MAAA,EAAQ;AACjC,QAAA,IAAI,CAAC,gBAAA,EAAkB,mBAAA,CAAoB,IAAI,CAAA;AAC/C,QAAA,YAAA,GAAe,IAAI,CAAA;AAAA,MACrB,CAAA;AAAA,MACA,CAAC,QAAA,EAAU,MAAA,EAAQ,gBAAA,EAAkB,YAAY;AAAA,KACnD;AAEA,IAAA,MAAM,oBAAA,GAAuBA,kBAAY,MAAM;AAC7C,MAAA,OAAA,CAAQ,KAAK,CAAA;AACb,MAAA,MAAM,OAAO,UAAA,CAAW,OAAA;AACxB,MAAA,IAAA,EAAM,KAAA,IAAQ;AAAA,IAChB,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,IAAAC,gBAAU,MAAM;AACd,MAAA,IAAIjB,oBAAAA,CAAS,EAAA,KAAO,KAAA,IAAS,CAAC,MAAA,EAAQ;AAEtC,MAAA,MAAM,iBAAA,GAAoB,CAAC,KAAA,KAAmC;AAC5D,QAAA,MAAM,UAAU,UAAA,CAAW,OAAA;AAG3B,QAAA,MAAM,SAAS,KAAA,CAAM,MAAA;AACrB,QAAA,IAAI,OAAA,EAAS,YAAY,MAAA,YAAkB,IAAA,IAAQ,CAAC,OAAA,CAAQ,QAAA,CAAS,MAAM,CAAA,EAAG;AAC5E,UAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,QACf;AAAA,MACF,CAAA;AACA,MAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAyB;AAC9C,QAAA,IAAI,KAAA,CAAM,QAAQ,QAAA,EAAU;AAC1B,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,oBAAA,EAAqB;AAAA,QACvB;AAAA,MACF,CAAA;AAEA,MAAA,QAAA,CAAS,gBAAA,CAAiB,aAAa,iBAAiB,CAAA;AACxD,MAAA,QAAA,CAAS,gBAAA,CAAiB,cAAc,iBAAiB,CAAA;AACzD,MAAA,QAAA,CAAS,gBAAA,CAAiB,WAAW,aAAa,CAAA;AAClD,MAAA,OAAO,MAAM;AACX,QAAA,QAAA,CAAS,mBAAA,CAAoB,aAAa,iBAAiB,CAAA;AAC3D,QAAA,QAAA,CAAS,mBAAA,CAAoB,cAAc,iBAAiB,CAAA;AAC5D,QAAA,QAAA,CAAS,mBAAA,CAAoB,WAAW,aAAa,CAAA;AAAA,MACvD,CAAA;AAAA,IACF,CAAA,EAAG,CAAC,oBAAA,EAAsB,MAAA,EAAQ,OAAO,CAAC,CAAA;AAE1C,IAAA,MAAM,cAAA,GAAiB,CAAC,SAAA,KAAsB;AAC5C,MAAA,IAAI,cAAc,aAAA,EAAe;AAC/B,QAAA,IAAI,CAAC,iBAAA,EAAmB,oBAAA,CAAqB,SAAS,CAAA;AACtD,QAAA,aAAA,GAAgB,SAAS,CAAA;AAAA,MAC3B;AACA,MAAA,oBAAA,EAAqB;AAAA,IACvB,CAAA;AAEA,IAAA,uBACEF,eAAAA;AAAA,MAACS,gBAAAA;AAAA,MAAA;AAAA,QACE,GAAG,IAAA;AAAA,QACJ,GAAA,EAAK,aAAA;AAAA,QACL,KAAA,EAAO,CAACK,QAAAA,CAAO,OAAA,EAAS,MAAA,IAAUA,SAAO,WAAA,EAAa,QAAA,IAAYA,QAAAA,CAAO,QAAA,EAAU,KAAK,CAAA;AAAA,QAExF,QAAA,EAAA;AAAA,0BAAAd,eAAAA;AAAA,YAACW,qBAAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,UAAA;AAAA,cACL,OAAA,EAAS,MAAM,OAAA,CAAQ,CAAC,MAAM,CAAA;AAAA,cAC9B,QAAA,EAAU,QAAA,IAAY,OAAA,CAAQ,MAAA,KAAW,CAAA;AAAA,cACzC,OAAA;AAAA,cACA,iBAAA,EAAkB,QAAA;AAAA,cAClB,kBAAA;AAAA,cACA,kBAAA,EAAoB,EAAE,QAAA,EAAU,QAAA,EAAU,MAAA,EAAO;AAAA,cACjD,SAAA,EAAW,MAAM,iBAAA,CAAkB,IAAI,CAAA;AAAA,cACvC,UAAA,EAAY,MAAM,iBAAA,CAAkB,KAAK,CAAA;AAAA,cACzC,KAAA,EAAO,CAAC,EAAE,OAAA,EAAQ,KAAM;AAAA,gBACtBG,QAAAA,CAAO,OAAA;AAAA,gBAAA,CACN,cAAA,IAAkB,OAAA,IAAW,MAAA,KAAWA,QAAAA,CAAO;AAAA,eAClD;AAAA,cAEA,QAAA,EAAA;AAAA,gCAAAjB,cAAAA,CAAC,aAAU,IAAA,EAAMkB,UAAAA,EAAW,OAAO,MAAA,CAAO,KAAA,EAAO,aAAa,CAAA,EAAG,CAAA;AAAA,gCACjElB,cAAAA,CAACa,gBAAAA,EAAA,EAAK,KAAA,EAAOI,QAAAA,CAAO,YAAA,EAAc,aAAA,EAAe,CAAA,EAC9C,QAAA,EAAA,cAAA,EAAgB,KAAA,IAAS,EAAA,EAC5B,CAAA;AAAA,gCACAjB,eAACY,gBAAAA,EAAA,EAAK,OAAO,CAACK,QAAAA,CAAO,OAAA,EAAS,MAAA,IAAUA,QAAAA,CAAO,WAAW,GACxD,QAAA,kBAAAjB,cAAAA,CAAC,mBAAgB,IAAA,EAAMkB,UAAAA,EAAW,OAAO,MAAA,CAAO,KAAA,EAAO,WAAA,EAAa,CAAA,EAAG,CAAA,EACzE;AAAA;AAAA;AAAA,WACF;AAAA,UAEC,UAAU,OAAA,CAAQ,MAAA,GAAS,CAAA,mBAC1BlB,eAACY,gBAAAA,EAAA,EAAK,KAAA,EAAOK,QAAAA,CAAO,MAAM,iBAAA,EAAkB,MAAA,EACzC,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,KAAW;AACvB,YAAA,MAAM,QAAA,GAAW,OAAO,KAAA,KAAU,aAAA;AAClC,YAAA,uBACEjB,cAAAA;AAAA,cAACc,qBAAAA;AAAA,cAAA;AAAA,gBAEC,OAAA,EAAS,MAAM,cAAA,CAAe,MAAA,CAAO,KAAK,CAAA;AAAA,gBAC1C,iBAAA,EAAkB,UAAA;AAAA,gBAClB,oBAAoB,MAAA,CAAO,KAAA;AAAA,gBAC3B,kBAAA,EAAoB,EAAE,QAAA,EAAS;AAAA,gBAC/B,SAAA,EAAW,MAAM,eAAA,CAAgB,MAAA,CAAO,KAAK,CAAA;AAAA,gBAC7C,UAAA,EAAY,MAAM,eAAA,CAAgB,IAAI,CAAA;AAAA,gBACtC,KAAA,EAAO,CAAC,EAAE,OAAA,EAAQ,KAAM;AAAA,kBACtBG,QAAAA,CAAO,IAAA;AAAA,kBACP,WACIA,QAAAA,CAAO,YAAA,GAAA,CACN,iBAAiB,MAAA,CAAO,KAAA,IAAS,YAAYA,QAAAA,CAAO;AAAA,iBAC3D;AAAA,gBAEA,QAAA,kBAAAjB,cAAAA,CAACa,gBAAAA,EAAA,EAAK,KAAA,EAAO,CAACI,QAAAA,CAAO,SAAA,EAAW,QAAA,IAAYA,QAAAA,CAAO,iBAAiB,CAAA,EACjE,iBAAO,KAAA,EACV;AAAA,eAAA;AAAA,cAhBK,MAAA,CAAO;AAAA,aAiBd;AAAA,UAEJ,CAAC,GACH,CAAA,GACE;AAAA;AAAA;AAAA,KACN;AAAA,EAEJ;AACF;AAEA,IAAMA,QAAAA,GAASF,uBAAW,MAAA,CAAO;AAAA,EAC/B,OAAA,EAAS;AAAA,IACP,QAAA,EAAU,UAAA;AAAA,IACV,KAAA,EAAO,aAAA;AAAA,IACP,SAAA,EAAW;AAAA,GACb;AAAA,EACA,WAAA,EAAa;AAAA,IACX,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,QAAA,EAAU;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,KAAA,EAAO,aAAA;AAAA,IACP,MAAA,EAAQ,cAAA;AAAA,IACR,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,GAAA,EAAK,CAAA;AAAA,IACL,OAAA,EAAS,CAAA;AAAA,IACT,YAAA,EAAc,EAAA;AAAA,IACd,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,aAAA,EAAe;AAAA,IACb,iBAAiB,MAAA,CAAO;AAAA,GAC1B;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,GAAG,0BAAA;AAAA,IACH,GAAGV,oBAAAA,CAAS,MAAA,CAAO,EAAE,GAAA,EAAK,EAAE,UAAA,EAAY,CAAA,EAAG,KAAA,CAAM,IAAI,CAAA,YAAA,CAAA,EAAe,EAAG,CAAA;AAAA,IACvE,QAAA,EAAU,CAAA;AAAA,IACV,IAAA,EAAM,CAAA;AAAA,IACN,OAAO,MAAA,CAAO;AAAA,GAChB;AAAA,EACA,OAAA,EAAS;AAAA,IACP,KAAA,EAAOa,UAAAA;AAAA,IACP,MAAA,EAAQA,UAAAA;AAAA,IACR,UAAA,EAAY,CAAA;AAAA,IACZ,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB;AAAA,GAClB;AAAA,EACA,WAAA,EAAa;AAAA,IACX,SAAA,EAAW,CAAC,EAAE,MAAA,EAAQ,UAAU;AAAA,GAClC;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,QAAA,EAAU,UAAA;AAAA,IACV,KAAK,cAAA,GAAiB,CAAA;AAAA,IACtB,IAAA,EAAM,CAAA;AAAA,IACN,KAAA,EAAO,aAAA;AAAA,IACP,OAAA,EAAS,CAAA;AAAA,IACT,GAAA,EAAK,CAAA;AAAA,IACL,YAAA,EAAc,EAAA;AAAA,IACd,iBAAiB,MAAA,CAAO,WAAA;AAAA,IACxB,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,MAAA,EAAQ,cAAA;AAAA,IACR,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,eAAA,EAAiB,CAAA;AAAA,IACjB,iBAAA,EAAmB,EAAA;AAAA,IACnB,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,WAAA,EAAa;AAAA,IACX,iBAAiB,MAAA,CAAO;AAAA,GAC1B;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,iBAAiB,MAAA,CAAO;AAAA,GAC1B;AAAA,EACA,SAAA,EAAW;AAAA,IACT,GAAG,0BAAA;AAAA,IACH,GAAGb,oBAAAA,CAAS,MAAA,CAAO,EAAE,GAAA,EAAK,EAAE,UAAA,EAAY,CAAA,EAAG,KAAA,CAAM,IAAI,CAAA,YAAA,CAAA,EAAe,EAAG,CAAA;AAAA,IACvE,OAAO,MAAA,CAAO;AAAA,GAChB;AAAA,EACA,iBAAA,EAAmB;AAAA,IACjB,OAAO,MAAA,CAAO;AAAA;AAElB,CAAC,CAAA;ACnQD,IAAMa,UAAAA,GAAY,QAAA;AAEX,IAAM,QAAA,GAAWZ,gBAAAA,CAAqD,SAASoC,SAAAA,CACpF;AAAA,EACE,KAAA;AAAA,EACA,IAAA,EAAMb,KAAAA;AAAA,EACN,SAAA;AAAA,EACA,QAAA,GAAWX,UAAAA;AAAA,EACX,KAAA;AAAA,EACA,SAAA;AAAA,EACA,kBAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,YAAA,EACA;AACA,EAAA,MAAM,YAAA,GAAeV,aAAkC,IAAI,CAAA;AAC3D,EAAA,MAAM,iBAAA,GAAoB,SAAA,EAAW,IAAA,EAAK,IAAK,MAAA;AAC/C,EAAA,MAAM,eAAA,GAAkBC,cAAQ,MAAM,SAAA,CAAU,cAAc,YAAY,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAE3F,EAAA,oBAAA,CAAqB,cAAc,iBAAiB,CAAA;AAEpD,EAAA,uBACEN,eAAAA;AAAA,IAACS,gBAAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,GAAA,EAAK,eAAA;AAAA,MACL,KAAA,EAAO,CAACK,QAAAA,CAAO,IAAA,EAAM,KAAK,CAAA;AAAA,MAC1B,iBAAA,EAAkB,MAAA;AAAA,MAClB,oBAAoB,kBAAA,IAAsB,KAAA;AAAA,MAE1C,QAAA,EAAA;AAAA,wBAAAjB,cAAAA,CAAC6B,KAAAA,EAAA,EAAM,GAAG,SAAA,EAAW,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,SAAA,EAAW,KAAA,IAAS,MAAA,CAAO,KAAA,EAAO,CAAA;AAAA,wBAC9E7B,cAAAA,CAACa,gBAAAA,EAAA,EAAK,KAAA,EAAOI,QAAAA,CAAO,OAAQ,QAAA,EAAA,KAAA,EAAM;AAAA;AAAA;AAAA,GACpC;AAEJ,CAAC;AAED,IAAMA,QAAAA,GAASF,uBAAW,MAAA,CAAO;AAAA,EAC/B,IAAA,EAAM;AAAA,IACJ,KAAA,EAAO,KAAA;AAAA,IACP,SAAA,EAAW,GAAA;AAAA,IACX,OAAA,EAAS,EAAA;AAAA,IACT,GAAA,EAAK,EAAA;AAAA,IACL,YAAA,EAAc,EAAA;AAAA,IACd,iBAAiB,MAAA,CAAO;AAAA,GAC1B;AAAA,EACA,KAAA,EAAO;AAAA,IACL,GAAG,kBAAA;AAAA,IACH,OAAO,MAAA,CAAO;AAAA;AAElB,CAAC,CAAA;ACxBD,IAAM4B,cAAAA,GAAwD;AAAA,EAC5D,OAAA,EAAS;AAAA,IACP,iBAAiB,MAAA,CAAO,OAAA;AAAA,IACxB,WAAW,MAAA,CAAO,KAAA;AAAA,IAClB,0BAA0B,MAAA,CAAO,KAAA;AAAA,IACjC,WAAW,MAAA,CAAO;AAAA,GACpB;AAAA,EACA,SAAA,EAAW;AAAA,IACT,iBAAiB,MAAA,CAAO,OAAA;AAAA,IACxB,WAAW,MAAA,CAAO,KAAA;AAAA,IAClB,0BAA0B,MAAA,CAAO,OAAA;AAAA,IACjC,WAAW,MAAA,CAAO;AAAA;AAEtB,CAAA;AAEA,IAAM,UAAA,GAAa;AAAA,EACjB,EAAA,EAAI;AAAA,IACF,SAAA,EAAW,EAAA;AAAA,IACX,YAAA,EAAc,EAAA;AAAA,IACd,eAAA,EAAiB,CAAA;AAAA,IACjB,WAAA,EAAa,EAAA;AAAA,IACb,oBAAA,EAAsB,CAAA;AAAA,IACtB,YAAA,EAAc,EAAA;AAAA,IACd,GAAA,EAAK,EAAA;AAAA,IACL,MAAM,gBAAA,CAAiB,EAAA;AAAA,IACvB,iBAAA,EAAmB,EAAA;AAAA,IACnB,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,EAAA,EAAI;AAAA,IACF,SAAA,EAAW,EAAA;AAAA,IACX,YAAA,EAAc,EAAA;AAAA,IACd,eAAA,EAAiB,CAAA;AAAA,IACjB,WAAA,EAAa,EAAA;AAAA,IACb,oBAAA,EAAsB,CAAA;AAAA,IACtB,YAAA,EAAc,EAAA;AAAA,IACd,GAAA,EAAK,EAAA;AAAA,IACL,MAAM,gBAAA,CAAiB,EAAA;AAAA,IACvB,iBAAA,EAAmB,EAAA;AAAA,IACnB,QAAA,EAAU;AAAA;AAEd,CAAA;AAEO,IAAM,MAAA,GAASrC,gBAAAA;AAAA,EACpB,SAASsC,OAAAA,CACP;AAAA,IACE,KAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA,GAAW,KAAA;AAAA,IACX,OAAA,GAAU,SAAA;AAAA,IACV,IAAA,GAAO,IAAA;AAAA,IACP,QAAA,GAAW,KAAA;AAAA,IACX,IAAA;AAAA,IACA,wBAAA;AAAA,IACA,KAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,aAAA;AAAA,IACA,kBAAA;AAAA,IACA,GAAG;AAAA,KAEL,YAAA,EACA;AACA,IAAA,MAAM,YAAA,GAAepC,aAA8C,IAAI,CAAA;AACvE,IAAA,MAAM,OAAA,GAAUA,aAAkC,IAAI,CAAA;AACtD,IAAA,MAAM,MAAA,GAASmC,eAAc,OAAO,CAAA;AACpC,IAAA,MAAM,OAAA,GAAU,WAAW,IAAI,CAAA;AAE/B,IAAA,MAAM,KAAA,GAAQ,OAAO,QAAA,KAAa,WAAA,GAAc,QAAA,GAAW,KAAA;AAC3D,IAAA,MAAM,iBAAA,GAAoB,OAAO,QAAA,KAAa,WAAA;AAC9C,IAAA,MAAM,aAAa,IAAA,IAAQ,IAAA,IAAQ,OAAO,IAAA,KAAS,YAAY,IAAA,GAAO,MAAA;AACtE,IAAA,MAAM,OAAA,GAAU,QAAA,IAAY,IAAA,KAAS,IAAA,IAAQ,UAAA,IAAc,IAAA;AAC3D,IAAA,MAAM,0BAAA,GAA6B,SAAA,EAAW,IAAA,EAAK,IAAK,MAAA;AACxD,IAAA,MAAM,0BAAA,GACJ,kBAAA,KAAuB,OAAO,KAAA,KAAU,WAAW,KAAA,GAAQ,MAAA,CAAA;AAE7D,IAAA,MAAM,eAAA,GAAkBlC,cAAQ,MAAM,SAAA,CAAU,cAAc,YAAY,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAE3F,IAAA,oBAAA,CAAqB,cAAc,0BAA0B,CAAA;AAC7D,IAAA,oBAAA,CAAqB,SAAS,aAAa,CAAA;AAE3C,IAAA,MAAM,QAAA,GAAW,UAAA,oBACfT,cAAAA,CAAC,cAAA,EAAA,EAAe,MAAM,OAAA,CAAQ,QAAA,EAAU,KAAA,EAAO,MAAA,CAAO,SAAA,EAAW,CAAA;AAGnE,IAAA,MAAM,cAAA,GAAiB;AAAA,MACrBiB,QAAAA,CAAO,IAAA;AAAA,MACP;AAAA,QACE,WAAW,OAAA,CAAQ,SAAA;AAAA,QACnB,cAAc,OAAA,CAAQ,YAAA;AAAA,QACtB,iBAAiB,MAAA,CAAO,eAAA;AAAA,QACxB,YAAY,OAAA,CAAQ,eAAA;AAAA,QACpB,eAAe,OAAA,CAAQ,eAAA;AAAA,QACvB,aAAa,OAAA,CAAQ,WAAA;AAAA,QACrB,YAAA,EAAc,OAAA,GAAU,OAAA,CAAQ,oBAAA,GAAuB,OAAA,CAAQ,YAAA;AAAA,QAC/D,GAAA,EAAK,OAAA,GAAU,OAAA,CAAQ,GAAA,GAAM;AAAA,OAC/B;AAAA,MACA,OAAA,GAAUA,QAAAA,CAAO,eAAA,GAAkBA,QAAAA,CAAO,kBAAA;AAAA,MAC1C,YAAYA,QAAAA,CAAO,QAAA;AAAA,MACnB;AAAA,KACF;AAEA,IAAA,MAAM,UAAA,GAAa;AAAA,MACjBA,QAAAA,CAAO,KAAA;AAAA,MACP,OAAA,CAAQ,IAAA;AAAA,MACR,EAAE,KAAA,EAAO,MAAA,CAAO,SAAA,EAAU;AAAA,MAC1BZ,oBAAAA,CAAS,EAAA,KAAO,SAAA,GAAYY,QAAAA,CAAO,YAAA,GAAe,IAAA;AAAA,MAClD,CAAC,WAAWA,QAAAA,CAAO,aAAA;AAAA,MACnB;AAAA,KACF;AAEA,IAAA,uBACEd,eAAAA;AAAA,MAAC0C,4BAAA;AAAA,MAAA;AAAA,QACE,GAAG,IAAA;AAAA,QACJ,GAAA,EAAK,eAAA;AAAA,QACL,KAAA,EAAO,cAAA;AAAA,QACP,OAAA;AAAA,QACA,QAAA;AAAA,QACA,aAAA,EAAe,GAAA;AAAA,QACf,iBAAA,EAAkB,QAAA;AAAA,QAClB,kBAAA,EAAoB,0BAAA;AAAA,QACpB,kBAAA,EAAoB,EAAE,QAAA,EAAS;AAAA,QAE9B,QAAA,EAAA;AAAA,UAAA,iBAAA,GACC,QAAA,mBAEA7C,cAAAA,CAACa,gBAAAA,EAAA,EAAK,GAAA,EAAK,OAAA,EAAS,KAAA,EAAO,UAAA,EACxB,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,UAGD,0BACCb,cAAAA;AAAA,YAACY,gBAAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO;AAAA,gBACLK,QAAAA,CAAO,aAAA;AAAA,gBACP;AAAA,kBACE,OAAO,OAAA,CAAQ,iBAAA;AAAA,kBACf,QAAQ,OAAA,CAAQ,iBAAA;AAAA,kBAChB,YAAA,EAAc,QAAQ,iBAAA,GAAoB,CAAA;AAAA,kBAC1C,eAAA,EAAiB,4BAA4B,MAAA,CAAO;AAAA;AACtD,eACF;AAAA,cAEC,QAAA,EAAA;AAAA;AAAA,WACH,GACE;AAAA;AAAA;AAAA,KACN;AAAA,EAEJ;AACF;AAEA,IAAMA,QAAAA,GAASF,uBAAW,MAAA,CAAO;AAAA,EAC/B,IAAA,EAAM;AAAA,IACJ,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,SAAA,EAAW,YAAA;AAAA,IACX,WAAA,EAAa;AAAA,GACf;AAAA,EACA,QAAA,EAAU;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,cAAA,EAAgB;AAAA,GAClB;AAAA,EACA,kBAAA,EAAoB;AAAA,IAClB,cAAA,EAAgB;AAAA,GAClB;AAAA,EACA,OAAO,EAAC;AAAA,EACR,YAAA,EAAc;AAAA,IACZ,kBAAA,EAAoB;AAAA,GACtB;AAAA,EACA,aAAA,EAAe;AAAA,IACb,SAAA,EAAW;AAAA,GACb;AAAA,EACA,aAAA,EAAe;AAAA,IACb,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,UAAA,EAAY;AAAA;AAEhB,CAAC,CAAA;AChMD,IAAM,QAAA,GAAW,EAAA;AACjB,IAAM,UAAA,GAAa,CAAA;AACnB,IAAM,UAAA,GAAa,EAAA;AACnB,IAAM,YAAA,GAAe,GAAA;AAErB,IAAM,aAAA,GAA2F;AAAA,EAC/F,OAAA,EAAS;AAAA,IACP,iBAAiB,MAAA,CAAO,IAAA;AAAA,IACxB,aAAa,MAAA,CAAO;AAAA,GACtB;AAAA,EACA,KAAA,EAAO;AAAA,IACL,iBAAiB,MAAA,CAAO,OAAA;AAAA,IACxB,aAAa,MAAA,CAAO;AAAA;AAExB,CAAA;AAEO,IAAM,QAAA,GAAWT,gBAAAA,CAA0D,SAASwC,SAAAA,CACzF;AAAA,EACE,KAAA;AAAA,EACA,YAAA,GAAe,KAAA;AAAA,EACf,aAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,OAAA,GAAU,SAAA;AAAA,EACV,KAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA,GAAU,CAAA;AAAA,EACV,kBAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,YAAA,EACA;AACA,EAAA,MAAM,YAAA,GAAetC,aAAuC,IAAI,CAAA;AAChE,EAAA,MAAM,YAAA,GAAe,OAAO,KAAA,KAAU,SAAA;AACtC,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAIE,eAAS,YAAY,CAAA;AACvE,EAAA,MAAM,QAAA,GAAW,eAAe,KAAA,GAAQ,iBAAA;AAExC,EAAA,MAAM,MAAA,GAAS,cAAc,OAAO,CAAA;AACpC,EAAA,MAAM,eAAe,QAAA,IAAY,KAAA;AACjC,EAAA,MAAM,0BAAA,GACJ,kBAAA,KAAuB,OAAO,YAAA,KAAiB,WAAW,YAAA,GAAe,MAAA,CAAA;AAC3E,EAAA,MAAM,eAAA,GAAkBD,cAAQ,MAAM,SAAA,CAAU,cAAc,YAAY,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAE3F,EAAA,oBAAA,CAAqB,cAAc,SAAS,CAAA;AAE5C,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,IAAI,QAAA,EAAU;AACd,IAAA,MAAM,OAAO,CAAC,QAAA;AACd,IAAA,IAAI,CAAC,YAAA,EAAc,oBAAA,CAAqB,IAAI,CAAA;AAC5C,IAAA,aAAA,GAAgB,IAAI,CAAA;AAAA,EACtB,CAAA;AAEA,EAAA,uBACEN,eAAAA;AAAA,IAACW,qBAAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,GAAA,EAAK,eAAA;AAAA,MACL,OAAA,EAAS,WAAA;AAAA,MACT,QAAA;AAAA,MACA,OAAA;AAAA,MACA,iBAAA,EAAkB,UAAA;AAAA,MAClB,kBAAA,EAAoB,0BAAA;AAAA,MACpB,kBAAA,EAAoB,EAAE,OAAA,EAAS,QAAA,EAAU,QAAA,EAAS;AAAA,MAClD,OAAO,CAACG,QAAAA,CAAO,MAAM,QAAA,IAAYA,QAAAA,CAAO,UAAU,KAAK,CAAA;AAAA,MAEvD,QAAA,EAAA;AAAA,wBAAAjB,cAAAA;AAAA,UAACY,gBAAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACLK,QAAAA,CAAO,GAAA;AAAA,cACP;AAAA,gBACE,iBAAiB,MAAA,CAAO,eAAA;AAAA,gBACxB,aAAa,MAAA,CAAO;AAAA;AACtB,aACF;AAAA,YAEC,QAAA,EAAA,QAAA,mBACCjB,cAAAA,CAAC,SAAA,EAAA,EAAU,IAAA,EAAM,UAAA,EAAY,KAAA,EAAO,MAAA,CAAO,OAAA,EAAS,WAAA,EAAa,YAAA,EAAc,CAAA,GAC7E;AAAA;AAAA,SACN;AAAA,QAEC,YAAA,IAAgB,QAAQ,YAAA,KAAiB,KAAA,GACxC,OAAO,YAAA,KAAiB,QAAA,IAAY,OAAO,YAAA,KAAiB,QAAA,mBAC1DA,eAACa,gBAAAA,EAAA,EAAK,OAAO,CAACI,QAAAA,CAAO,OAAO,UAAU,CAAA,EAAI,QAAA,EAAA,YAAA,EAAa,CAAA,GAEvD,YAAA,GAEA;AAAA;AAAA;AAAA,GACN;AAEJ,CAAC;AAED,IAAMA,QAAAA,GAASF,uBAAW,MAAA,CAAO;AAAA,EAC/B,IAAA,EAAM;AAAA,IACJ,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,SAAA,EAAW,YAAA;AAAA,IACX,GAAA,EAAK;AAAA,GACP;AAAA,EACA,QAAA,EAAU;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,GAAA,EAAK;AAAA,IACH,KAAA,EAAO,QAAA;AAAA,IACP,MAAA,EAAQ,QAAA;AAAA,IACR,YAAA,EAAc,UAAA;AAAA,IACd,WAAA,EAAa,CAAA;AAAA,IACb,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,UAAA,EAAY;AAAA,GACd;AAAA,EACA,KAAA,EAAO;AAAA,IACL,GAAG,eAAA,CAAgB,KAAA;AAAA,IACnB,OAAO,MAAA,CAAO;AAAA;AAElB,CAAC,CAAA;;;AC/IM,SAAS,WAAW,IAAA,EAAkB;AAC3C,EAAA,OAAO,IAAI,IAAA,CAAK,IAAA,CAAK,WAAA,EAAY,EAAG,KAAK,QAAA,EAAS,EAAG,IAAA,CAAK,OAAA,EAAS,CAAA;AACrE;AAEO,SAAS,SAAA,CAAU,GAA4B,CAAA,EAAqC;AACzF,EAAA,IAAI,CAAA,IAAK,IAAA,IAAQ,CAAA,IAAK,IAAA,EAAM,OAAO,KAAA;AACnC,EAAA,OACE,EAAE,WAAA,EAAY,KAAM,CAAA,CAAE,WAAA,MACtB,CAAA,CAAE,QAAA,EAAS,KAAM,CAAA,CAAE,UAAS,IAC5B,CAAA,CAAE,OAAA,EAAQ,KAAM,EAAE,OAAA,EAAQ;AAE9B;AAEO,SAAS,WAAA,CAAY,GAAS,CAAA,EAAkB;AACrD,EAAA,OAAO,CAAA,CAAE,WAAA,EAAY,KAAM,CAAA,CAAE,WAAA,MAAiB,CAAA,CAAE,QAAA,EAAS,KAAM,CAAA,CAAE,QAAA,EAAS;AAC5E;AAEO,SAAS,SAAA,CAAU,MAAY,MAAA,EAAsB;AAC1D,EAAA,OAAO,IAAI,KAAK,IAAA,CAAK,WAAA,IAAe,IAAA,CAAK,QAAA,EAAS,GAAI,MAAA,EAAQ,CAAC,CAAA;AACjE;AAEO,SAAS,QAAA,CAAS,GAAS,CAAA,EAAkB;AAClD,EAAA,OAAO,UAAA,CAAW,CAAC,CAAA,CAAE,OAAA,KAAY,UAAA,CAAW,CAAC,EAAE,OAAA,EAAQ;AACzD;AAEO,SAAS,OAAA,CAAQ,GAAS,CAAA,EAAkB;AACjD,EAAA,OAAO,UAAA,CAAW,CAAC,CAAA,CAAE,OAAA,KAAY,UAAA,CAAW,CAAC,EAAE,OAAA,EAAQ;AACzD;AAEO,SAAS,aAAA,CAAc,IAAA,EAAY,KAAA,EAAa,GAAA,EAAoB;AACzE,EAAA,MAAM,IAAA,GAAO,UAAA,CAAW,IAAI,CAAA,CAAE,OAAA,EAAQ;AACtC,EAAA,OAAO,IAAA,IAAQ,UAAA,CAAW,KAAK,CAAA,CAAE,OAAA,MAAa,IAAA,IAAQ,UAAA,CAAW,GAAG,CAAA,CAAE,OAAA,EAAQ;AAChF;AAQO,SAAS,cAAA,CAAe,IAAA,EAAY,GAAA,EAAmB,GAAA,EAA4B;AACxF,EAAA,IAAI,GAAA,IAAO,QAAA,CAAS,IAAA,EAAM,GAAG,GAAG,OAAO,IAAA;AACvC,EAAA,IAAI,GAAA,IAAO,OAAA,CAAQ,IAAA,EAAM,GAAG,GAAG,OAAO,IAAA;AACtC,EAAA,OAAO,KAAA;AACT;AAGO,SAAS,WAAW,IAAA,EAAoB;AAC7C,EAAA,MAAM,GAAA,GAAM,OAAO,IAAA,CAAK,OAAA,EAAS,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG,CAAA;AAClD,EAAA,MAAM,KAAA,GAAQ,OAAO,IAAA,CAAK,QAAA,KAAa,CAAC,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAA;AACzD,EAAA,OAAO,GAAG,GAAG,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,EAAI,IAAA,CAAK,aAAa,CAAA,CAAA;AAC9C;AAMO,SAAS,mBAAA,CAAoB,SAAA,EAAmB,WAAA,GAAc,CAAA,EAAW;AAC9E,EAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,IAAA,CAAK,SAAS,CAAA;AAClC,EAAA,IAAI,MAAA,GAAS,CAAA;AACb,EAAA,IAAI,GAAA,GAAM,CAAA;AACV,EAAA,OAAO,GAAA,GAAM,KAAA,CAAM,MAAA,IAAU,MAAA,GAAS,WAAA,EAAa;AACjD,IAAA,IAAI,KAAA,CAAM,GAAG,CAAA,KAAM,QAAA,IAAO,MAAM,GAAA,GAAM,CAAC,MAAM,QAAA,EAAK;AAChD,MAAA,GAAA,IAAO,CAAA;AAAA,IACT,CAAA,MAAO;AACL,MAAA,GAAA,IAAO,CAAA;AAAA,IACT;AACA,IAAA,MAAA,IAAU,CAAA;AAAA,EACZ;AACA,EAAA,OAAO,MAAM,KAAA,CAAM,CAAA,EAAG,GAAG,CAAA,CAAE,KAAK,EAAE,CAAA;AACpC;AAGO,SAAS,uBAAA,CAAwB,IAAA,EAAY,UAAA,EAAsB,WAAA,GAAc,CAAA,EAAW;AACjG,EAAA,MAAM,KAAA,GAAQ,oBAAoB,UAAA,CAAW,IAAA,CAAK,UAAU,CAAA,IAAK,IAAI,WAAW,CAAA;AAChF,EAAA,OAAO,CAAA,EAAG,KAAK,OAAA,EAAS,IAAI,KAAK,CAAA,CAAA,EAAI,IAAA,CAAK,WAAA,EAAa,CAAA,CAAA;AACzD;AAQO,SAAS,cAAA,CAAe,SAAA,EAAiB,YAAA,GAAsB,CAAA,EAAa;AACjF,EAAA,MAAM,IAAA,GAAO,UAAU,WAAA,EAAY;AACnC,EAAA,MAAM,KAAA,GAAQ,UAAU,QAAA,EAAS;AACjC,EAAA,MAAM,YAAA,GAAe,IAAI,IAAA,CAAK,IAAA,EAAM,OAAO,CAAC,CAAA;AAE5C,EAAA,MAAM,YAAA,GAAe,aAAa,MAAA,EAAO;AACzC,EAAA,MAAM,WAAA,GAAA,CAAe,YAAA,GAAe,YAAA,GAAe,CAAA,IAAK,CAAA;AACxD,EAAA,MAAM,YAAY,IAAI,IAAA,CAAK,IAAA,EAAM,KAAA,EAAO,IAAI,WAAW,CAAA;AAEvD,EAAA,MAAM,QAAkB,EAAC;AACzB,EAAA,IAAI,MAAA,GAAS,SAAA;AACb,EAAA,KAAA,IAAS,IAAA,GAAO,CAAA,EAAG,IAAA,GAAO,CAAA,EAAG,QAAQ,CAAA,EAAG;AACtC,IAAA,MAAM,OAAe,EAAC;AACtB,IAAA,KAAA,IAAS,GAAA,GAAM,CAAA,EAAG,GAAA,GAAM,CAAA,EAAG,OAAO,CAAA,EAAG;AACnC,MAAA,IAAA,CAAK,KAAK,MAAM,CAAA;AAChB,MAAA,MAAA,GAAS,IAAI,IAAA,CAAK,MAAA,CAAO,WAAA,EAAY,EAAG,MAAA,CAAO,QAAA,EAAS,EAAG,MAAA,CAAO,OAAA,EAAQ,GAAI,CAAC,CAAA;AAAA,IACjF;AACA,IAAA,KAAA,CAAM,KAAK,IAAI,CAAA;AAAA,EACjB;AACA,EAAA,OAAO,KAAA;AACT;ACzEA,IAAM,mBAAA,GAAsB;AAAA,EAC1B,4CAAA;AAAA,EACA,4CAAA;AAAA,EACA,0BAAA;AAAA,EACA,gCAAA;AAAA,EACA,gCAAA;AAAA,EACA,sCAAA;AAAA,EACA,sCAAA;AAAA,EACA,4CAAA;AAAA,EACA,wDAAA;AAAA,EACA,wDAAA;AAAA,EACA,kDAAA;AAAA,EACA;AACF,CAAA;AAEA,IAAM,sBAAA,GAAyB,CAAC,cAAA,EAAM,cAAA,EAAM,gBAAM,cAAA,EAAM,oBAAA,EAAO,gBAAM,cAAI,CAAA;AAKzE,IAAM,WAAA,GAAyB,EAAE,KAAA,EAAO,IAAA,EAAM,KAAK,IAAA,EAAK;AA0DxD,IAAM,aAAA,GAAgB,GAAA;AACtB,IAAM,mBAAA,GAAsB,GAAA;AAC5B,IAAM,cAAA,GAAiB,EAAA;AACvB,IAAM,cAAA,GAAiB,EAAA;AACvB,IAAMgC,YAAAA,GAAc,EAAA;AACpB,IAAM7B,UAAAA,GAAY,EAAA;AAClB,IAAM,aAAA,GAAgB,EAAA;AACtB,IAAM,eAAA,GAAkB,EAAA;AACxB,IAAM,eAAA,GAAkB,EAAA;AAExB,SAAS,iBAAA,CAAkB;AAAA,EACzB,KAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAIG;AACD,EAAA,uBACEf,eAAAA,CAACS,gBAAAA,EAAA,EAAK,KAAA,EAAOK,SAAO,UAAA,EAClB,QAAA,EAAA;AAAA,oBAAAjB,cAAAA,CAACa,kBAAA,EAAK,aAAA,EAAe,GAAG,KAAA,EAAOI,QAAAA,CAAO,YACnC,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,oBACAd,eAAAA,CAACS,gBAAAA,EAAA,EAAK,KAAA,EAAOK,SAAO,aAAA,EAClB,QAAA,EAAA;AAAA,sBAAAjB,eAACa,gBAAAA,EAAA,EAAK,KAAA,EAAOI,QAAAA,CAAO,WAAY,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,MACrC,uBACCd,eAAAA,CAACS,kBAAA,EAAK,KAAA,EAAOK,SAAO,aAAA,EAClB,QAAA,EAAA;AAAA,wBAAAjB,eAAC,eAAA,EAAA,EAAgB,KAAA,EAAO,MAAA,CAAO,SAAA,EAAW,MAAM,EAAA,EAAI,CAAA;AAAA,wBACpDA,cAAAA,CAACa,gBAAAA,EAAA,EAAK,KAAA,EAAOI,QAAAA,CAAO,WAAY,QAAA,EAAA,IAAA,EAAK;AAAA,OAAA,EACvC,CAAA,GACE;AAAA,KAAA,EACN;AAAA,GAAA,EACF,CAAA;AAEJ;AAEO,IAAM,UAAA,GAAaX,gBAAAA;AAAA,EACxB,SAAS0C,WAAAA,CAAW,KAAA,EAAO,YAAA,EAAc;AACvC,IAAA,MAAM;AAAA,MACJ,WAAA,GAAc,aAAA;AAAA,MACd,OAAA,GAAU,SAAA;AAAA,MACV,UAAA,GAAa,OAAA;AAAA,MACb,QAAA,GAAW,KAAA;AAAA,MACX,SAAA;AAAA,MACA,OAAA;AAAA,MACA,gBAAA,GAAmB,WAAA;AAAA,MACnB,cAAA,GAAiB,WAAA;AAAA,MACjB,IAAA,EAAM,QAAA;AAAA,MACN,WAAA,GAAc,KAAA;AAAA,MACd,YAAA;AAAA,MACA,QAAA,GAAW,KAAA;AAAA,MACX,aAAA,GAAgB,IAAA;AAAA,MAChB,OAAA;AAAA,MACA,OAAA;AAAA,MACA,mBAAA;AAAA,MACA,UAAA,GAAa,mBAAA;AAAA,MACb,aAAA,GAAgB,sBAAA;AAAA,MAChB,WAAA,EAAa,eAAA;AAAA,MACb,YAAA,GAAe,CAAA;AAAA,MACf,aAAA;AAAA,MACA,KAAA;AAAA,MACA,SAAA;AAAA,MACA,kBAAA;AAAA;AAAA;AAAA,MAGA,KAAA,EAAO,MAAA;AAAA,MACP,KAAA,EAAO,MAAA;AAAA,MACP,YAAA,EAAc,aAAA;AAAA,MACd,aAAA,EAAe,cAAA;AAAA,MACf,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,OAAA,GAAU,MAAM,KAAA,KAAU,IAAA;AAChC,IAAA,MAAM,gBAAA,GAAmB,WAAW,OAAA,KAAY,SAAA;AAChD,IAAA,MAAM,WAAA,GACJ,oBACC,gBAAA,GAAmB,CAAC,SAAe,uBAAA,CAAwB,IAAA,EAAM,UAAU,CAAA,GAAI,UAAA,CAAA;AAClF,IAAA,MAAM,YAAY,KAAA,CAAM,KAAA;AACxB,IAAA,MAAM,OAAA,GAAUxC,aAAkC,IAAI,CAAA;AACtD,IAAA,MAAM,UAAA,GAAaA,aAAuC,IAAI,CAAA;AAC9D,IAAA,MAAM,UAAA,GAAaC,cAAQ,MAAM,SAAA,CAAU,SAAS,YAAY,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAEjF,IAAA,MAAM,gBAAA,GAAmB,OAAO,QAAA,KAAa,SAAA;AAC7C,IAAA,MAAM,oBAAoB,SAAA,KAAc,MAAA;AAExC,IAAA,MAAM,CAAC,kBAAA,EAAoB,qBAAqB,CAAA,GAAIC,cAAAA;AAAA,MAClD,CAAC,OAAA,GAAY,KAAA,CAAgC,YAAA,IAAgB,IAAA,GAAQ;AAAA,KACvE;AACA,IAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAIA,cAAAA;AAAA,MAChD,OAAA,GAAY,KAAA,CAA+B,YAAA,IAAgB,WAAA,GAAe;AAAA,KAC5E;AACA,IAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAIA,eAAS,WAAW,CAAA;AACpE,IAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIA,eAAwB,IAAI,CAAA;AAEtE,IAAA,MAAM,UAAA,GAAwB,OAAA,GAC1B,iBAAA,GACI,SAAA,IAA2B,cAC7B,iBAAA,GACF,WAAA;AACJ,IAAA,MAAM,cAA2B,CAAC,OAAA,GAC9B,iBAAA,GACI,SAAA,IAA6B,OAC/B,kBAAA,GACF,IAAA;AAEJ,IAAA,MAAM,MAAA,GAAS,mBAAmB,QAAA,GAAW,gBAAA;AAE7C,IAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,eAAS,MAAM;AACrD,MAAA,MAAM,SACJ,mBAAA,KAAwB,OAAA,GAAU,WAAW,KAAA,GAAQ,WAAA,CAAA,wBAAoB,IAAA,EAAK;AAChF,MAAA,OAAO,IAAI,KAAK,MAAA,CAAO,WAAA,IAAe,MAAA,CAAO,QAAA,IAAY,CAAC,CAAA;AAAA,IAC5D,CAAC,CAAA;AAED,IAAA,oBAAA,CAAqB,SAAS,SAAS,CAAA;AAEvC,IAAA,MAAM,OAAA,GAAUW,iBAAAA;AAAA,MACd,CAAC,IAAA,KAAkB;AACjB,QAAA,IAAI,CAAC,gBAAA,EAAkB,mBAAA,CAAoB,IAAI,CAAA;AAC/C,QAAA,YAAA,GAAe,IAAI,CAAA;AACnB,QAAA,IAAI,IAAA,EAAM;AACR,UAAA,MAAM,UAAU,OAAA,GAAU,UAAA,CAAW,KAAA,GAAQ,WAAA,yBAAoB,IAAA,EAAK;AACtE,UAAA,eAAA,CAAgB,IAAI,KAAK,MAAA,CAAO,WAAA,IAAe,MAAA,CAAO,QAAA,EAAS,EAAG,CAAC,CAAC,CAAA;AAAA,QACtE,CAAA,MAAO;AACL,UAAA,gBAAA,CAAiB,IAAI,CAAA;AAAA,QACvB;AAAA,MACF,CAAA;AAAA,MACA,CAAC,gBAAA,EAAkB,OAAA,EAAS,YAAA,EAAc,UAAA,CAAW,OAAO,WAAW;AAAA,KACzE;AAGA,IAAAC,gBAAU,MAAM;AACd,MAAA,IAAIjB,oBAAAA,CAAS,EAAA,KAAO,KAAA,IAAS,CAAC,MAAA,EAAQ;AAEtC,MAAA,MAAM,iBAAA,GAAoB,CAAC,KAAA,KAAmC;AAC5D,QAAA,MAAM,OAAO,OAAA,CAAQ,OAAA;AACrB,QAAA,MAAM,SAAS,KAAA,CAAM,MAAA;AACrB,QAAA,IAAI,IAAA,EAAM,YAAY,MAAA,YAAkB,IAAA,IAAQ,CAAC,IAAA,CAAK,QAAA,CAAS,MAAM,CAAA,EAAG;AACtE,UAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,QACf;AAAA,MACF,CAAA;AAEA,MAAA,QAAA,CAAS,gBAAA,CAAiB,aAAa,iBAAiB,CAAA;AACxD,MAAA,QAAA,CAAS,gBAAA,CAAiB,cAAc,iBAAiB,CAAA;AACzD,MAAA,OAAO,MAAM;AACX,QAAA,QAAA,CAAS,mBAAA,CAAoB,aAAa,iBAAiB,CAAA;AAC3D,QAAA,QAAA,CAAS,mBAAA,CAAoB,cAAc,iBAAiB,CAAA;AAAA,MAC9D,CAAA;AAAA,IACF,CAAA,EAAG,CAAC,MAAA,EAAQ,OAAO,CAAC,CAAA;AAEpB,IAAA,MAAM,YAAA,GAAegB,kBAAY,MAAM;AACrC,MAAA,MAAM,OAAO,UAAA,CAAW,OAAA;AACxB,MAAA,IAAA,EAAM,KAAA,IAAQ;AAAA,IAChB,CAAA,EAAG,EAAE,CAAA;AAEL,IAAA,MAAM,oBAAA,GAAuBA,kBAAY,MAAM;AAC7C,MAAA,OAAA,CAAQ,KAAK,CAAA;AACb,MAAA,YAAA,EAAa;AAAA,IACf,CAAA,EAAG,CAAC,YAAA,EAAc,OAAO,CAAC,CAAA;AAG1B,IAAAC,gBAAU,MAAM;AACd,MAAA,IAAIjB,oBAAAA,CAAS,EAAA,KAAO,KAAA,IAAS,CAAC,MAAA,EAAQ;AAEtC,MAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAyB;AAC9C,QAAA,IAAI,KAAA,CAAM,QAAQ,QAAA,EAAU;AAC1B,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,oBAAA,EAAqB;AAAA,QACvB;AAAA,MACF,CAAA;AAEA,MAAA,QAAA,CAAS,gBAAA,CAAiB,WAAW,aAAa,CAAA;AAClD,MAAA,OAAO,MAAM,QAAA,CAAS,mBAAA,CAAoB,SAAA,EAAW,aAAa,CAAA;AAAA,IACpE,CAAA,EAAG,CAAC,MAAA,EAAQ,oBAAoB,CAAC,CAAA;AAEjC,IAAA,MAAM,qBAAqB,MAAM;AAC/B,MAAA,IAAI,QAAA,EAAU;AACd,MAAA,OAAA,CAAQ,CAAC,MAAM,CAAA;AAAA,IACjB,CAAA;AAEA,IAAA,MAAM,cAAA,GAAiBgB,iBAAAA;AAAA,MACrB,CAAC,GAAA,KAAc;AACb,QAAA,IAAI,QAAA,IAAY,cAAA,CAAe,GAAA,EAAK,OAAA,EAAS,OAAO,CAAA,EAAG;AACvD,QAAA,MAAM,MAAA,GAAS,WAAW,GAAG,CAAA;AAE7B,QAAA,IAAI,CAAC,OAAA,EAAS;AACZ,UAAA,IAAI,CAAC,iBAAA,EAAmB,qBAAA,CAAsB,MAAM,CAAA;AACpD,UAAC,KAAA,CAAgC,gBAAgB,MAAM,CAAA;AACvD,UAAA,IAAI,aAAA,UAAuB,KAAK,CAAA;AAChC,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,EAAE,KAAA,EAAO,GAAA,EAAI,GAAI,UAAA;AACvB,QAAA,MAAM,gBAAA,GAAmB,CAAC,KAAA,IAAU,KAAA,IAAS,GAAA;AAC7C,QAAA,MAAM,SAAA,GAAuB,mBACzB,EAAE,KAAA,EAAO,QAAQ,GAAA,EAAK,IAAA,KACtB,QAAA,CAAS,MAAA,EAAQ,KAAK,CAAA,GACpB,EAAE,OAAO,MAAA,EAAQ,GAAA,EAAK,MAAK,GAC3B,EAAE,KAAA,EAAO,GAAA,EAAK,MAAA,EAAO;AAE3B,QAAA,IAAI,CAAC,iBAAA,EAAmB,oBAAA,CAAqB,SAAS,CAAA;AACtD,QAAC,KAAA,CAA+B,gBAAgB,SAAS,CAAA;AACzD,QAAA,IAAI,iBAAiB,SAAA,CAAU,KAAA,IAAS,SAAA,CAAU,GAAA,UAAa,KAAK,CAAA;AAAA,MACtE,CAAA;AAAA,MACA;AAAA,QACE,aAAA;AAAA,QACA,QAAA;AAAA,QACA,OAAA;AAAA,QACA,iBAAA;AAAA,QACA,OAAA;AAAA,QACA,OAAA;AAAA,QACA,KAAA;AAAA,QACA,UAAA;AAAA,QACA;AAAA;AACF,KACF;AAEA,IAAA,MAAM,eAAA,GAAkB,MAAM,eAAA,CAAgB,CAAC,YAAY,SAAA,CAAU,OAAA,EAAS,EAAE,CAAC,CAAA;AACjF,IAAA,MAAM,eAAA,GAAkB,MAAM,eAAA,CAAgB,CAAC,YAAY,SAAA,CAAU,OAAA,EAAS,CAAC,CAAC,CAAA;AAEhF,IAAA,MAAM,KAAA,GAAQZ,aAAAA;AAAA,MACZ,MAAM,cAAA,CAAe,YAAA,EAAc,YAAY,CAAA;AAAA,MAC/C,CAAC,cAAc,YAAY;AAAA,KAC7B;AACA,IAAA,MAAM,KAAA,GAAQA,cAAQ,MAAM,UAAA,qBAAe,IAAA,EAAM,CAAA,EAAG,EAAE,CAAA;AAEtD,IAAA,MAAM,QAAA,GAAW,OAAA,GAAU,UAAA,CAAW,KAAA,IAAS,OAAO,WAAA,IAAe,IAAA;AACrE,IAAA,MAAM,YAAA,GAAe,OAAA,GACjB,UAAA,CAAW,KAAA,IAAS,UAAA,CAAW,GAAA,GAC7B,CAAA,EAAG,WAAA,CAAY,UAAA,CAAW,KAAK,CAAC,CAAA,GAAA,EAAM,WAAA,CAAY,UAAA,CAAW,GAAG,CAAC,CAAA,CAAA,GACjE,UAAA,CAAW,KAAA,GACT,CAAA,EAAG,WAAA,CAAY,UAAA,CAAW,KAAK,CAAC,CAAA,MAAA,CAAA,GAChC,WAAA,GACJ,WAAA,GACE,WAAA,CAAY,WAAW,CAAA,GACvB,WAAA;AAEN,IAAA,MAAM,wBAAA,GAA2B,oBAAoB,OAAA,KAAY,gBAAA;AACjE,IAAA,MAAM,kBAAA,GAAqB,gBAAA,GACvB,MAAA,GACE,MAAA,CAAO,OAAA,GACP,OAAO,OAAA,GACT,MAAA,GACE,MAAA,CAAO,YAAA,GACP,MAAA,CAAO,OAAA;AACb,IAAA,MAAM,gBAAA,GAAmB,QAAA,GAAW,MAAA,CAAO,KAAA,GAAQ,MAAA,CAAO,OAAA;AAC1D,IAAA,MAAM,aAAa,UAAA,CAAW,KAAA,GAAQ,WAAA,CAAY,UAAA,CAAW,KAAK,CAAA,GAAI,gBAAA;AACtE,IAAA,MAAM,WAAW,UAAA,CAAW,GAAA,GAAM,WAAA,CAAY,UAAA,CAAW,GAAG,CAAA,GAAI,cAAA;AAEhE,IAAA,MAAM,6BAA6B,kBAAA,IAAsB,WAAA;AAEzD,IAAA,uBACET,cAAAA;AAAA,MAACY,gBAAAA;AAAA,MAAA;AAAA,QACE,GAAG,IAAA;AAAA,QACJ,GAAA,EAAK,UAAA;AAAA,QACL,KAAA,EAAO;AAAA,UACLK,QAAAA,CAAO,IAAA;AAAA,UACP,oBAAoBA,QAAAA,CAAO,SAAA;AAAA,UAC3B,UAAUA,QAAAA,CAAO,QAAA;AAAA,UACjB,YAAYA,QAAAA,CAAO,QAAA;AAAA,UACnB;AAAA,SACF;AAAA,QACA,kBAAA,EAAoB,EAAE,QAAA,EAAU,QAAA,EAAU,MAAA,EAAO;AAAA,QAEjD,QAAA,kBAAAd,eAAAA,CAACS,gBAAAA,EAAA,EAAK,KAAA,EAAO,CAACK,QAAAA,CAAO,WAAA,EAAa,MAAA,IAAUA,QAAAA,CAAO,eAAe,CAAA,EAChE,QAAA,EAAA;AAAA,0BAAAjB,cAAAA;AAAA,YAACc,qBAAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,UAAA;AAAA,cACL,OAAA,EAAS,kBAAA;AAAA,cACT,QAAA;AAAA,cACA,iBAAA,EAAkB,QAAA;AAAA,cAClB,kBAAA,EAAoB,0BAAA;AAAA,cACpB,kBAAA,EAAoB,EAAE,QAAA,EAAU,QAAA,EAAU,MAAA,EAAO;AAAA,cACjD,KAAA,EAAO;AAAA,gBACLG,QAAAA,CAAO,OAAA;AAAA,gBACP,oBAAoBA,QAAAA,CAAO,YAAA;AAAA,gBAC3B,gBAAA,KACG,wBAAA,GACGA,QAAAA,CAAO,oBAAA,GACPA,QAAAA,CAAO,sBAAA,CAAA;AAAA,gBACb;AAAA,kBACE,WAAA,EAAa,kBAAA;AAAA,kBACb,eAAA,EAAiB,gBAAA,GAAmB,aAAA,GAAgB,MAAA,CAAO;AAAA;AAC7D,eACF;AAAA,cAEC,QAAA,EAAA,gBAAA,mBACCd,eAAAA,CAAAQ,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,gCAAAX,eAAC,iBAAA,EAAA,EAAkB,KAAA,EAAO,YAAY,IAAA,EAAM,SAAA,EAAW,OAAO,UAAA,EAAY,CAAA;AAAA,gCAC1EA,cAAAA;AAAA,kBAACY,gBAAAA;AAAA,kBAAA;AAAA,oBACC,KAAA,EACE,wBAAA,GACIK,QAAAA,CAAO,oBAAA,GACPA,QAAAA,CAAO;AAAA;AAAA,iBAEf;AAAA,gCACAjB,eAAC,iBAAA,EAAA,EAAkB,KAAA,EAAO,UAAU,IAAA,EAAM,OAAA,EAAS,OAAO,QAAA,EAAU;AAAA,eAAA,EACtE,CAAA,mBAEAG,eAAAA,CAAAQ,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,gCAAAX,cAAAA,CAACa,gBAAAA,EAAA,EAAK,KAAA,EAAO,CAACI,QAAAA,CAAO,WAAA,EAAa,EAAE,KAAA,EAAO,gBAAA,EAAkB,CAAA,EAAG,aAAA,EAAe,GAC5E,QAAA,EAAA,YAAA,EACH,CAAA;AAAA,gCACAjB,cAAAA,CAACY,gBAAAA,EAAA,EAAK,OAAOK,QAAAA,CAAO,QAAA,EAClB,QAAA,kBAAAjB,cAAAA,CAAC,uBAAoB,IAAA,EAAMkB,UAAAA,EAAW,KAAA,EAAO,MAAA,CAAO,SAAS,CAAA,EAC/D;AAAA,eAAA,EACF;AAAA;AAAA,WAEJ;AAAA,UAEC,MAAA,mBACCf,eAAAA,CAACS,gBAAAA,EAAA,EAAK,KAAA,EAAO,CAACK,QAAAA,CAAO,IAAA,EAAM,gBAAA,IAAoBA,QAAAA,CAAO,SAAA,EAAW,aAAa,CAAA,EAC5E,QAAA,EAAA;AAAA,4BAAAd,eAAAA,CAACS,gBAAAA,EAAA,EAAK,KAAA,EAAOK,SAAO,cAAA,EAClB,QAAA,EAAA;AAAA,8BAAAjB,cAAAA;AAAA,gBAACc,qBAAAA;AAAA,gBAAA;AAAA,kBACC,OAAA,EAAS,eAAA;AAAA,kBACT,OAAA,EAAS,CAAA;AAAA,kBACT,iBAAA,EAAkB,QAAA;AAAA,kBAClB,kBAAA,EAAmB,gBAAA;AAAA,kBACnB,OAAOG,QAAAA,CAAO,SAAA;AAAA,kBAEd,0BAAAjB,cAAAA,CAAC,eAAA,EAAA,EAAgB,MAAM,aAAA,EAAe,KAAA,EAAO,OAAO,KAAA,EAAO;AAAA;AAAA,eAC7D;AAAA,8BAEAG,eAAAA,CAACU,gBAAAA,EAAA,EAAK,KAAA,EAAOI,SAAO,YAAA,EACjB,QAAA,EAAA;AAAA,gBAAA,UAAA,CAAW,YAAA,CAAa,UAAU,CAAA;AAAA,gBAAE,GAAA;AAAA,gBAAE,aAAa,WAAA;AAAY,eAAA,EAClE,CAAA;AAAA,8BAEAjB,cAAAA;AAAA,gBAACc,qBAAAA;AAAA,gBAAA;AAAA,kBACC,OAAA,EAAS,eAAA;AAAA,kBACT,OAAA,EAAS,CAAA;AAAA,kBACT,iBAAA,EAAkB,QAAA;AAAA,kBAClB,kBAAA,EAAmB,YAAA;AAAA,kBACnB,OAAOG,QAAAA,CAAO,SAAA;AAAA,kBAEd,QAAA,kBAAAjB,cAAAA,CAACY,gBAAAA,EAAA,EAAK,OAAOK,QAAAA,CAAO,aAAA,EAClB,QAAA,kBAAAjB,cAAAA,CAAC,mBAAgB,IAAA,EAAM,aAAA,EAAe,KAAA,EAAO,MAAA,CAAO,OAAO,CAAA,EAC7D;AAAA;AAAA;AACF,aAAA,EACF,CAAA;AAAA,4BAEAG,eAAAA,CAACS,gBAAAA,EAAA,EACC,QAAA,EAAA;AAAA,8BAAAZ,cAAAA,CAACY,gBAAAA,EAAA,EAAK,KAAA,EAAOK,SAAO,UAAA,EACjB,QAAA,EAAA,aAAA,CAAc,GAAA,CAAI,CAAC,YAAA,EAAc,KAAA,qBAChCjB,cAAAA,CAACY,kBAAA,EAAsC,KAAA,EAAOK,QAAAA,CAAO,WAAA,EACnD,QAAA,kBAAAjB,cAAAA,CAACa,gBAAAA,EAAA,EAAK,OAAOI,QAAAA,CAAO,WAAA,EAAc,QAAA,EAAA,YAAA,EAAa,CAAA,EAAA,EADtC,GAAG,YAAY,CAAA,CAAA,EAAI,KAAK,CAAA,CAEnC,CACD,CAAA,EACH,CAAA;AAAA,cAEC,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,SAAA,KAAc;AAC9B,gBAAA,IAAI,mBAAA,GACF,IAAA;AAEF,gBAAA,IAAI,OAAA,IAAW,UAAA,CAAW,KAAA,IAAS,UAAA,CAAW,GAAA,EAAK;AACjD,kBAAA,MAAM,eAAe,IAAA,CAAK,MAAA,CAAiB,CAAC,GAAA,EAAK,KAAK,KAAA,KAAU;AAC9D,oBAAA,IAAI,cAAc,GAAA,EAAK,UAAA,CAAW,KAAA,EAAe,UAAA,CAAW,GAAW,CAAA,EAAG;AACxE,sBAAA,GAAA,CAAI,KAAK,KAAK,CAAA;AAAA,oBAChB;AACA,oBAAA,OAAO,GAAA;AAAA,kBACT,CAAA,EAAG,EAAE,CAAA;AAEL,kBAAA,IAAI,YAAA,CAAa,SAAS,CAAA,EAAG;AAC3B,oBAAA,MAAM,KAAA,GAAQ,aAAa,CAAC,CAAA;AAC5B,oBAAA,MAAM,IAAA,GAAO,YAAA,CAAa,YAAA,CAAa,MAAA,GAAS,CAAC,CAAA;AACjD,oBAAA,MAAM,aAAa,SAAA,CAAU,IAAA,CAAK,KAAK,CAAA,EAAG,WAAW,KAAK,CAAA;AAC1D,oBAAA,MAAM,WAAW,SAAA,CAAU,IAAA,CAAK,IAAI,CAAA,EAAG,WAAW,GAAG,CAAA;AAErD,oBAAA,MAAM,UAAU,GAAA,GAAM,CAAA;AACtB,oBAAA,MAAM,cAAc,OAAA,GAAU,CAAA;AAC9B,oBAAA,IAAI,UAAU,KAAA,GAAQ,OAAA;AACtB,oBAAA,IAAI,QAAA,GAAA,CAAY,IAAA,GAAO,KAAA,GAAQ,CAAA,IAAK,OAAA;AACpC,oBAAA,IAAI,UAAA,EAAY;AACd,sBAAA,OAAA,IAAW,WAAA;AACX,sBAAA,QAAA,IAAY,WAAA;AAAA,oBACd;AACA,oBAAA,IAAI,QAAA,EAAU;AACZ,sBAAA,QAAA,IAAY,WAAA;AAAA,oBACd;AAEA,oBAAA,IAAI,WAAW,CAAA,EAAG;AAChB,sBAAA,mBAAA,GAAsB;AAAA,wBACpB,IAAA,EAAM,GAAG,OAAO,CAAA,CAAA,CAAA;AAAA,wBAChB,KAAA,EAAO,GAAG,QAAQ,CAAA,CAAA;AAAA,uBACpB;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAEA,gBAAA,uBACEd,eAAAA;AAAA,kBAACS,gBAAAA;AAAA,kBAAA;AAAA,oBAEC,OAAO,CAACK,QAAAA,CAAO,SAAS,SAAA,GAAY,CAAA,IAAKA,SAAO,aAAa,CAAA;AAAA,oBAE5D,QAAA,EAAA;AAAA,sBAAA,mBAAA,mBACCjB,cAAAA;AAAA,wBAACY,gBAAAA;AAAA,wBAAA;AAAA,0BACC,aAAA,EAAc,MAAA;AAAA,0BACd,KAAA,EAAO,CAACK,QAAAA,CAAO,cAAA,EAAgB,mBAAmB;AAAA;AAAA,uBACpD,GACE,IAAA;AAAA,sBAEH,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,EAAK,QAAA,KAAa;AAC3B,wBAAA,MAAM,cAAA,GAAiB,WAAA,CAAY,GAAA,EAAK,YAAY,CAAA;AACpD,wBAAA,MAAM,OAAA,GAAU,SAAA,CAAU,GAAA,EAAK,KAAK,CAAA;AACpC,wBAAA,MAAM,gBAAA,GAAmB,CAAC,OAAA,IAAW,SAAA,CAAU,KAAK,WAAW,CAAA;AAC/D,wBAAA,MAAM,YAAA,GAAe,OAAA,IAAW,SAAA,CAAU,GAAA,EAAK,WAAW,KAAK,CAAA;AAC/D,wBAAA,MAAM,UAAA,GAAa,OAAA,IAAW,SAAA,CAAU,GAAA,EAAK,WAAW,GAAG,CAAA;AAC3D,wBAAA,MAAM,kBAAA,GAAqB,oBAAoB,YAAA,IAAgB,UAAA;AAC/D,wBAAA,MAAM,WAAA,GAAc,QAAA,IAAY,cAAA,CAAe,GAAA,EAAK,SAAS,OAAO,CAAA;AACpE,wBAAA,MAAM,MAAA,GAAS,UAAA,CAAW,GAAG,CAAA,CAAE,OAAA,EAAQ;AACvC,wBAAA,MAAM,SAAA,GACJ,CAAC,WAAA,IAAe,CAAC,sBAAsB,aAAA,KAAkB,MAAA;AAE3D,wBAAA,MAAM,YAAA,GAAe,kBAAA,GACjB,MAAA,CAAO,KAAA,GACP,cACE,MAAA,CAAO,OAAA,GACP,OAAA,GACE,MAAA,CAAO,OAAA,GACP,CAAC,cAAA,GACC,MAAA,CAAO,UACP,MAAA,CAAO,KAAA;AAEjB,wBAAA,uBACEd,eAAAA;AAAA,0BAACW,qBAAAA;AAAA,0BAAA;AAAA,4BAEC,OAAA,EAAS,MAAM,cAAA,CAAe,GAAG,CAAA;AAAA,4BACjC,QAAA,EAAU,WAAA;AAAA,4BACV,SAAA,EAAW,MAAM,gBAAA,CAAiB,MAAM,CAAA;AAAA,4BACxC,UAAA,EAAY,MACV,gBAAA,CAAiB,CAAC,YAAa,OAAA,KAAY,MAAA,GAAS,OAAO,OAAQ,CAAA;AAAA,4BAErE,SAAA,EAAW,MAAM,gBAAA,CAAiB,MAAM,CAAA;AAAA,4BACxC,UAAA,EAAY,MACV,gBAAA,CAAiB,CAAC,YAAa,OAAA,KAAY,MAAA,GAAS,OAAO,OAAQ,CAAA;AAAA,4BAErE,OAAOG,QAAAA,CAAO,WAAA;AAAA,4BACd,iBAAA,EAAkB,QAAA;AAAA,4BAClB,kBAAA,EAAoB,YAAY,GAAG,CAAA;AAAA,4BACnC,kBAAA,EAAoB;AAAA,8BAClB,QAAA,EAAU,WAAA;AAAA,8BACV,QAAA,EAAU;AAAA,6BACZ;AAAA,4BAEA,QAAA,EAAA;AAAA,8CAAAjB,cAAAA;AAAA,gCAACY,gBAAAA;AAAA,gCAAA;AAAA,kCACC,KAAA,EAAO;AAAA,oCACLK,QAAAA,CAAO,SAAA;AAAA,oCACP,sBAAsBA,QAAAA,CAAO,iBAAA;AAAA,oCAC7B,aAAaA,QAAAA,CAAO;AAAA,mCACtB;AAAA,kCAEA,QAAA,kBAAAjB,cAAAA,CAACa,gBAAAA,EAAA,EAAK,OAAO,CAACI,QAAAA,CAAO,OAAA,EAAS,EAAE,OAAO,YAAA,EAAc,CAAA,EAClD,QAAA,EAAA,GAAA,CAAI,SAAQ,EACf;AAAA;AAAA,+BACF;AAAA,8BACC,OAAA,IAAW,CAAC,kBAAA,mBACXjB,cAAAA,CAACY,kBAAA,EAAK,KAAA,EAAOK,QAAAA,CAAO,QAAA,EAAU,CAAA,GAC5B;AAAA;AAAA,2BAAA;AAAA,0BAhCC;AAAA,yBAiCP;AAAA,sBAEJ,CAAC;AAAA;AAAA,mBAAA;AAAA,kBArEI;AAAA,iBAsEP;AAAA,cAEJ,CAAC;AAAA,aAAA,EACH;AAAA,WAAA,EACF,CAAA,GACE;AAAA,SAAA,EACN;AAAA;AAAA,KACF;AAAA,EAEJ;AACF;AAEA,IAAMA,QAAAA,GAASF,uBAAW,MAAA,CAAO;AAAA,EAC/B,IAAA,EAAM;AAAA,IACJ,KAAA,EAAO,aAAA;AAAA,IACP,GAAA,EAAK,CAAA;AAAA,IACL,SAAA,EAAW;AAAA,GACb;AAAA,EACA,QAAA,EAAU;AAAA,IACR,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,SAAA,EAAW;AAAA,IACT,KAAA,EAAO;AAAA,GACT;AAAA,EACA,QAAA,EAAU;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,WAAA,EAAa;AAAA,IACX,QAAA,EAAU,UAAA;AAAA,IACV,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,OAAA,EAAS;AAAA,IACP,MAAA,EAAQ,cAAA;AAAA,IACR,YAAA,EAAc,cAAA;AAAA,IACd,WAAA,EAAa,CAAA;AAAA,IACb,eAAA,EAAiB,EAAA;AAAA,IACjB,iBAAA,EAAmB,EAAA;AAAA,IACnB,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,GAAA,EAAK,EAAA;AAAA,IACL,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,WAAA,EAAa;AAAA,IACX,GAAG,oBAAA,CAAqB,KAAA;AAAA,IACxB,IAAA,EAAM,CAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,eAAA,EAAiB,CAAA;AAAA,IACjB,iBAAA,EAAmB,CAAA;AAAA,IACnB,YAAA,EAAc,EAAA;AAAA,IACd,GAAA,EAAK;AAAA,GACP;AAAA,EACA,sBAAA,EAAwB;AAAA,IACtB,MAAA,EAAQ,EAAA;AAAA,IACR,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,oBAAA,EAAsB;AAAA,IACpB,MAAA,EAAQ,GAAA;AAAA,IACR,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,UAAA,EAAY;AAAA,IACV,IAAA,EAAM,CAAA;AAAA,IACN,SAAA,EAAW,SAAA;AAAA,IACX,QAAA,EAAU,CAAA;AAAA,IACV,cAAA,EAAgB,QAAA;AAAA,IAChB,GAAA,EAAK,CAAA;AAAA,IACL,eAAA,EAAiB,EAAA;AAAA,IACjB,iBAAA,EAAmB;AAAA,GACrB;AAAA,EACA,UAAA,EAAY;AAAA,IACV,GAAG,oBAAA,CAAqB,UAAA;AAAA,IACxB,OAAO,MAAA,CAAO;AAAA,GAChB;AAAA,EACA,aAAA,EAAe;AAAA,IACb,QAAA,EAAU,CAAA;AAAA,IACV,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,YAAA;AAAA,IAChB,QAAA,EAAU,QAAA;AAAA,IACV,GAAA,EAAK;AAAA,GACP;AAAA,EACA,SAAA,EAAW;AAAA,IACT,GAAG,oBAAA,CAAqB,SAAA;AAAA,IACxB,UAAA,EAAY,CAAA;AAAA,IACZ,OAAO,MAAA,CAAO,KAAA;AAAA;AAAA,IAEd,UAAA,EAAY;AAAA,GACd;AAAA,EACA,aAAA,EAAe;AAAA,IACb,UAAA,EAAY,CAAA;AAAA,IACZ,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,GAAA,EAAK;AAAA,GACP;AAAA,EACA,SAAA,EAAW;AAAA,IACT,GAAG,oBAAA,CAAqB,SAAA;AAAA,IACxB,OAAO,MAAA,CAAO;AAAA,GAChB;AAAA,EACA,sBAAA,EAAwB;AAAA,IACtB,KAAA,EAAO,CAAA;AAAA,IACP,SAAA,EAAW,SAAA;AAAA,IACX,iBAAiB,MAAA,CAAO;AAAA,GAC1B;AAAA,EACA,oBAAA,EAAsB;AAAA,IACpB,MAAA,EAAQ,CAAA;AAAA,IACR,SAAA,EAAW,SAAA;AAAA,IACX,iBAAiB,MAAA,CAAO;AAAA,GAC1B;AAAA,EACA,QAAA,EAAU;AAAA,IACR,KAAA,EAAOG,UAAAA;AAAA,IACP,MAAA,EAAQA,UAAAA;AAAA,IACR,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,UAAA,EAAY;AAAA,GACd;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,QAAA,EAAU,UAAA;AAAA,IACV,GAAA,EAAK,MAAA;AAAA,IACL,IAAA,EAAM,CAAA;AAAA,IACN,KAAA,EAAO,aAAA;AAAA,IACP,SAAA,EAAW,CAAA;AAAA,IACX,MAAA,EAAQ,EAAA;AAAA,IACR,YAAA,EAAc6B,YAAAA;AAAA,IACd,OAAA,EAAS,EAAA;AAAA,IACT,GAAA,EAAK,CAAA;AAAA,IACL,iBAAiB,MAAA,CAAO,OAAA;AAAA,IACxB,GAAG1C,qBAAS,MAAA,CAAO;AAAA,MACjB,GAAA,EAAK;AAAA,QACH,SAAA,EAAW,CAAA,WAAA,EAAc,MAAA,CAAO,KAAK,CAAA,EAAA;AAAA,OACvC;AAAA,MACA,OAAA,EAAS;AAAA,QACP,SAAA,EAAW;AAAA;AACb,KACD;AAAA,GACH;AAAA,EACA,SAAA,EAAW;AAAA,IACT,KAAA,EAAO;AAAA,GACT;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,MAAA,EAAQ,EAAA;AAAA,IACR,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB;AAAA,GAClB;AAAA,EACA,SAAA,EAAW;AAAA,IACT,KAAA,EAAO,EAAA;AAAA,IACP,MAAA,EAAQ,EAAA;AAAA,IACR,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB;AAAA,GAClB;AAAA,EACA,aAAA,EAAe;AAAA,IACb,SAAA,EAAW,CAAC,EAAE,MAAA,EAAQ,IAAI;AAAA,GAC5B;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,GAAG,oBAAA,CAAqB,YAAA;AAAA,IACxB,OAAO,MAAA,CAAO,KAAA;AAAA,IACd,SAAA,EAAW;AAAA,GACb;AAAA,EACA,UAAA,EAAY;AAAA,IACV,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,WAAA,EAAa;AAAA,IACX,GAAG,oBAAA,CAAqB,OAAA;AAAA,IACxB,OAAO,MAAA,CAAO,OAAA;AAAA,IACd,SAAA,EAAW,QAAA;AAAA,IACX,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,OAAA,EAAS;AAAA,IACP,aAAA,EAAe,KAAA;AAAA,IACf,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,aAAA,EAAe;AAAA,IACb,SAAA,EAAW;AAAA,GACb;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,QAAA,EAAU,UAAA;AAAA,IACV,GAAA,EAAA,CAAM,kBAAkB,eAAA,IAAmB,CAAA;AAAA,IAC3C,MAAA,EAAA,CAAS,kBAAkB,eAAA,IAAmB,CAAA;AAAA,IAC9C,cAAc,eAAA,GAAkB,CAAA;AAAA,IAChC,iBAAiB,MAAA,CAAO;AAAA,GAC1B;AAAA,EACA,WAAA,EAAa;AAAA,IACX,IAAA,EAAM,CAAA;AAAA,IACN,MAAA,EAAQ,eAAA;AAAA,IACR,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB;AAAA,GAClB;AAAA,EACA,SAAA,EAAW;AAAA,IACT,KAAA,EAAO,eAAA;AAAA,IACP,MAAA,EAAQ,eAAA;AAAA,IACR,cAAc,eAAA,GAAkB,CAAA;AAAA,IAChC,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB;AAAA,GAClB;AAAA,EACA,iBAAA,EAAmB;AAAA,IACjB,iBAAiB,MAAA,CAAO;AAAA,GAC1B;AAAA,EACA,gBAAA,EAAkB;AAAA,IAChB,iBAAiB,MAAA,CAAO;AAAA,GAC1B;AAAA,EACA,OAAA,EAAS;AAAA,IACP,GAAG,oBAAA,CAAqB;AAAA,GAC1B;AAAA,EACA,QAAA,EAAU;AAAA,IACR,QAAA,EAAU,UAAA;AAAA,IACV,MAAA,EAAQ,CAAA;AAAA,IACR,KAAA,EAAO,CAAA;AAAA,IACP,MAAA,EAAQ,CAAA;AAAA,IACR,YAAA,EAAc,CAAA;AAAA,IACd,iBAAiB,MAAA,CAAO;AAAA;AAE5B,CAAC,CAAA;AC1vBD,IAAM,IAAA,GAAO,EAAA;AACb,IAAM,OAAA,GAAU,EAAA;AAChB,IAAMa,UAAAA,GAAY,EAAA;AAClB,IAAM,MAAA,GAAS,EAAA;AAER,IAAM,uBAAuBZ,gBAAAA,CAGlC,SAAS2C,qBAAAA,CACT,EAAE,SAAS,QAAA,GAAW,KAAA,EAAO,IAAA,EAAM,kBAAA,GAAqB,OAAO,KAAA,EAAO,SAAA,EAAW,GAAG,IAAA,IACpF,YAAA,EACA;AACA,EAAA,MAAM,YAAA,GAAezC,aAA8C,IAAI,CAAA;AACvE,EAAA,MAAM,eAAA,GAAkBC,cAAQ,MAAM,SAAA,CAAU,cAAc,YAAY,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAC3F,EAAA,MAAM,iBAAA,GAAoB,SAAA,EAAW,IAAA,EAAK,IAAK,MAAA;AAE/C,EAAA,oBAAA,CAAqB,cAAc,iBAAiB,CAAA;AAEpD,EAAA,uBACET,cAAAA;AAAA,IAAC6C,4BAAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,GAAA,EAAK,eAAA;AAAA,MACL,OAAA;AAAA,MACA,QAAA;AAAA,MACA,aAAA,EAAe,GAAA;AAAA,MACf,iBAAA,EAAkB,QAAA;AAAA,MAClB,kBAAA;AAAA,MACA,kBAAA,EAAoB,EAAE,QAAA,EAAS;AAAA,MAC/B,OAAO,CAAC5B,QAAAA,CAAO,MAAM,QAAA,IAAYA,QAAAA,CAAO,UAAU,KAAK,CAAA;AAAA,MAEtD,QAAA,EAAA,IAAA,oBAAQjB,cAAAA,CAAC,QAAA,EAAA,EAAS,KAAA,EAAO,OAAO,KAAA,EAAO,IAAA,EAAMkB,UAAAA,EAAW,WAAA,EAAa,CAAA,EAAG;AAAA;AAAA,GAC3E;AAEJ,CAAC;AAED,IAAMD,QAAAA,GAASF,uBAAW,MAAA,CAAO;AAAA,EAC/B,IAAA,EAAM;AAAA,IACJ,KAAA,EAAO,IAAA;AAAA,IACP,MAAA,EAAQ,IAAA;AAAA,IACR,OAAA,EAAS,OAAA;AAAA,IACT,YAAA,EAAc,MAAA;AAAA,IACd,iBAAiB,MAAA,CAAO,OAAA;AAAA,IACxB,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,GAAA,EAAK;AAAA,GACP;AAAA,EACA,QAAA,EAAU;AAAA,IACR,OAAA,EAAS;AAAA;AAEb,CAAC,CAAA;ACvEM,SAAS,kBAAA,CACd,IAAA,EACA,YAAA,EACA,KAAA,EACA;AACA,EAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,IAAA,uBAAOf,cAAAA,CAAC,YAAA,EAAA,EAAc,GAAG,KAAA,EAAO,CAAA;AAAA,EAClC;AAEA,EAAA,IAAI,OAAO,SAAS,UAAA,EAAY;AAC9B,IAAA,MAAM6B,KAAAA,GAAO,IAAA;AACb,IAAA,uBAAO7B,cAAAA,CAAC6B,KAAAA,EAAA,EAAM,GAAG,KAAA,EAAO,CAAA;AAAA,EAC1B;AAEA,EAAA,IAAIqB,oBAAA,CAA0B,IAAI,CAAA,EAAG;AACnC,IAAA,OAAOC,kBAAA,CAAa,MAAM,KAAK,CAAA;AAAA,EACjC;AAEA,EAAA,OAAO,IAAA;AACT;ACmCA,IAAMC,cAAAA,GAAgB,GAAA;AAEtB,IAAMC,WAAAA,GAAa;AAAA,EACjB,EAAA,EAAI;AAAA,IACF,MAAA,EAAQ,EAAA;AAAA,IACR,YAAA,EAAc,EAAA;AAAA,IACd,eAAA,EAAiB,EAAA;AAAA,IACjB,iBAAA,EAAmB,EAAA;AAAA,IACnB,GAAA,EAAK,EAAA;AAAA,IACL,QAAA,EAAU,EAAA;AAAA,IACV,MAAM,eAAA,CAAgB;AAAA,GACxB;AAAA,EACA,EAAA,EAAI;AAAA,IACF,MAAA,EAAQ,EAAA;AAAA,IACR,YAAA,EAAc,EAAA;AAAA,IACd,eAAA,EAAiB,CAAA;AAAA,IACjB,iBAAA,EAAmB,EAAA;AAAA,IACnB,GAAA,EAAK,CAAA;AAAA,IACL,QAAA,EAAU,EAAA;AAAA,IACV,MAAM,eAAA,CAAgB;AAAA;AAE1B,CAAA;AAGA,SAAS,kBAAA,CAAmB;AAAA,EAC1B,QAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAKgB;AACd,EAAA,IAAI,UAAU,OAAO,UAAA;AACrB,EAAA,IAAI,OAAO,OAAO,OAAA;AAClB,EAAA,IAAI,SAAS,OAAO,QAAA;AACpB,EAAA,IAAI,UAAU,OAAO,QAAA;AACrB,EAAA,OAAO,SAAA;AACT;AAEA,SAAS,UAAU,KAAA,EAAiC;AAClD,EAAA,MAAM,IAAA,GAAoB;AAAA,IACxB,aAAa,MAAA,CAAO,OAAA;AAAA,IACpB,iBAAiB,MAAA,CAAO,OAAA;AAAA,IACxB,WAAW,MAAA,CAAO,KAAA;AAAA,IAClB,kBAAkB,MAAA,CAAO,OAAA;AAAA,IACzB,eAAe,MAAA,CAAO,OAAA;AAAA,IACtB,gBAAgB,MAAA,CAAO,OAAA;AAAA,IACvB,YAAY,MAAA,CAAO,KAAA;AAAA,IACnB,WAAW,MAAA,CAAO;AAAA,GACpB;AAEA,EAAA,QAAQ,KAAA;AAAO,IACb,KAAK,QAAA;AACH,MAAA,OAAO;AAAA,QACL,GAAG,IAAA;AAAA,QACH,aAAa,MAAA,CAAO,YAAA;AAAA,QACpB,eAAe,MAAA,CAAO;AAAA,OACxB;AAAA,IACF,KAAK,OAAA;AACH,MAAA,OAAO;AAAA,QACL,GAAG,IAAA;AAAA,QACH,aAAa,MAAA,CAAO,QAAA;AAAA,QACpB,WAAW,MAAA,CAAO,GAAA;AAAA,QAClB,kBAAkB,MAAA,CAAO,GAAA;AAAA,QACzB,YAAY,MAAA,CAAO,GAAA;AAAA,QACnB,WAAW,MAAA,CAAO,GAAA;AAAA,QAClB,eAAe,MAAA,CAAO;AAAA,OACxB;AAAA,IACF,KAAK,QAAA;AACH,MAAA,OAAO,IAAA;AAAA,IACT,KAAK,UAAA;AACH,MAAA,OAAO;AAAA,QACL,GAAG,IAAA;AAAA,QACH,aAAa,MAAA,CAAO,OAAA;AAAA,QACpB,iBAAiB,MAAA,CAAO,OAAA;AAAA,QACxB,WAAW,MAAA,CAAO,KAAA;AAAA,QAClB,eAAe,MAAA,CAAO,KAAA;AAAA,QACtB,gBAAgB,MAAA,CAAO,KAAA;AAAA,QACvB,YAAY,MAAA,CAAO,KAAA;AAAA,QACnB,WAAW,MAAA,CAAO;AAAA,OACpB;AAAA,IACF;AACE,MAAA,OAAO,IAAA;AAAA;AAEb;AAEO,IAAM,KAAA,GAAQ/C,gBAAAA,CAAuD,SAASgD,MAAAA,CACnF;AAAA,EACE,KAAA;AAAA,EACA,SAAA,GAAY,IAAA;AAAA,EACZ,IAAA;AAAA,EACA,QAAA,GAAW,IAAA;AAAA,EACX,WAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,QAAA,GAAW,KAAA;AAAA,EACX,KAAA,GAAQ,KAAA;AAAA,EACR,KAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA,GAAe,KAAA;AAAA,EACf,SAAA;AAAA,EACA,aAAA,GAAgB,KAAA;AAAA,EAChB,gBAAA;AAAA,EACA,2BAAA;AAAA,EACA,KAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,cAAA;AAAA,EACA,kBAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,YAAA,EACA;AACA,EAAA,MAAM,OAAA,GAAU9C,aAAkC,IAAI,CAAA;AACtD,EAAA,MAAM,QAAA,GAAWA,aAAuC,IAAI,CAAA;AAC5D,EAAA,MAAM,WAAA,GAAcC,cAAQ,MAAM,SAAA,CAAU,UAAU,YAAY,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AACnF,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIC,eAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAIA,cAAAA,CAAS,gBAAgB,EAAE,CAAA;AAC7E,EAAA,MAAM,OAAA,GAAU2C,YAAW,IAAI,CAAA;AAE/B,EAAA,MAAM,YAAA,GAAe,OAAO,KAAA,KAAU,QAAA;AACtC,EAAA,MAAM,YAAA,GAAe,eAAe,KAAA,GAAQ,iBAAA;AAC5C,EAAA,MAAM,QAAA,GAAW,aAAa,MAAA,GAAS,CAAA;AAEvC,EAAA,MAAM,cAAc,kBAAA,CAAmB,EAAE,UAAU,KAAA,EAAO,OAAA,EAAS,UAAU,CAAA;AAC7E,EAAA,MAAM,MAAA,GAAS,UAAU,WAAW,CAAA;AACpC,EAAA,MAAM,0BAAA,GAA6B,kBAAA,KAAuB,SAAA,GAAY,MAAA,GAAY,KAAA,CAAA;AAElF,EAAA,MAAM,WAAA,GAAc,gBAAgB,QAAA,IAAY,IAAA;AAChD,EAAA,MAAM,YAAA,GAAe,iBAAiB,SAAA,IAAa,IAAA;AAEnD,EAAA,MAAM,YAAA,GAAe,kBAAA,CAAmB,QAAA,EAAU,QAAA,EAAU;AAAA,IAC1D,MAAM,OAAA,CAAQ,QAAA;AAAA,IACd,OAAO,MAAA,CAAO;AAAA,GACf,CAAA;AACD,EAAA,MAAM,aAAA,GAAgB,kBAAA,CAAmB,SAAA,EAAW,QAAA,EAAU;AAAA,IAC5D,MAAM,OAAA,CAAQ,QAAA;AAAA,IACd,OAAO,MAAA,CAAO;AAAA,GACf,CAAA;AAED,EAAA,oBAAA,CAAqB,SAAS,SAAS,CAAA;AACvC,EAAA,oBAAA,CAAqB,UAAU,cAAc,CAAA;AAE7C,EAAA,uBACElD,eAAAA,CAACS,gBAAAA,EAAA,EAAK,KAAK,OAAA,EAAS,KAAA,EAAO,CAACK,QAAAA,CAAO,IAAA,EAAM,QAAA,IAAYA,QAAAA,CAAO,QAAA,EAAU,KAAK,CAAA,EACxE,QAAA,EAAA;AAAA,IAAA,SAAA,IAAa,wBACZjB,cAAAA,CAACa,gBAAAA,EAAA,EAAK,OAAO,CAACI,QAAAA,CAAO,KAAA,EAAO,EAAE,OAAO,MAAA,CAAO,UAAA,EAAY,CAAA,EAAI,iBAAM,CAAA,GAChE,IAAA;AAAA,oBAEJd,eAAAA;AAAA,MAACS,gBAAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO;AAAA,UACLK,QAAAA,CAAO,KAAA;AAAA,UACP;AAAA,YACE,QAAQ,OAAA,CAAQ,MAAA;AAAA,YAChB,cAAc,OAAA,CAAQ,YAAA;AAAA,YACtB,YAAY,OAAA,CAAQ,eAAA;AAAA,YACpB,eAAe,OAAA,CAAQ,eAAA;AAAA,YACvB,aAAa,OAAA,CAAQ,iBAAA;AAAA,YACrB,cAAc,OAAA,CAAQ,iBAAA;AAAA,YACtB,KAAK,OAAA,CAAQ,GAAA;AAAA,YACb,aAAa,MAAA,CAAO,WAAA;AAAA,YACpB,iBAAiB,MAAA,CAAO;AAAA,WAC1B;AAAA,UACA;AAAA,SACF;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,WAAA,mBACCjB,cAAAA,CAACY,gBAAAA,EAAA,EAAK,KAAA,EAAO,CAACK,SAAO,QAAA,EAAU,EAAE,KAAA,EAAO,OAAA,CAAQ,UAAU,MAAA,EAAQ,OAAA,CAAQ,UAAU,CAAA,EACjF,wBACH,CAAA,GACE,IAAA;AAAA,0BAEJjB,cAAAA;AAAA,YAACuD,qBAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,WAAA;AAAA,cACJ,GAAG,cAAA;AAAA,cACJ,KAAA,EAAO,eAAe,KAAA,GAAQ,MAAA;AAAA,cAC9B,YAAA,EAAc,eAAe,MAAA,GAAY,YAAA;AAAA,cACzC,UAAU,CAAC,QAAA;AAAA,cACX,WAAA;AAAA,cACA,sBAAsB,MAAA,CAAO,gBAAA;AAAA,cAC7B,YAAA,EAAc,CAAC,IAAA,KAAS;AACtB,gBAAA,IAAI,CAAC,YAAA,EAAc,oBAAA,CAAqB,IAAI,CAAA;AAC5C,gBAAA,YAAA,GAAe,IAAI,CAAA;AAAA,cACrB,CAAA;AAAA,cACA,OAAA,EAAS,CAAC,KAAA,KAAU;AAClB,gBAAA,UAAA,CAAW,IAAI,CAAA;AACf,gBAAA,OAAA,GAAU,KAAK,CAAA;AAAA,cACjB,CAAA;AAAA,cACA,MAAA,EAAQ,CAAC,KAAA,KAAU;AACjB,gBAAA,UAAA,CAAW,KAAK,CAAA;AAChB,gBAAA,MAAA,GAAS,KAAK,CAAA;AAAA,cAChB,CAAA;AAAA,cACA,KAAA,EAAO;AAAA,gBACLtC,QAAAA,CAAO,KAAA;AAAA,gBACP,OAAA,CAAQ,IAAA;AAAA,gBACR,EAAE,KAAA,EAAO,MAAA,CAAO,SAAA,EAAU;AAAA,gBAC1BZ,oBAAAA,CAAS,EAAA,KAAO,KAAA,GAAQY,QAAAA,CAAO,QAAA,GAAW,IAAA;AAAA,gBAC1CZ,oBAAAA,CAAS,EAAA,KAAO,SAAA,GAAYY,QAAAA,CAAO,YAAA,GAAe,IAAA;AAAA,gBAClD;AAAA,eACF;AAAA,cACA,kBAAA,EAAoB,0BAAA;AAAA,cACpB,kBAAA,EAAoB,EAAE,QAAA;AAAS;AAAA,WACjC;AAAA,UAEC,YAAA,GACC,mCACEjB,cAAAA;AAAA,YAAC6C,4BAAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAS,gBAAA;AAAA,cACT,QAAA;AAAA,cACA,KAAA,EAAO,CAAC5B,QAAAA,CAAO,QAAA,EAAU,EAAE,KAAA,EAAO,OAAA,CAAQ,QAAA,EAAU,MAAA,EAAQ,OAAA,CAAQ,QAAA,EAAU,CAAA;AAAA,cAC9E,iBAAA,EAAkB,QAAA;AAAA,cAClB,kBAAA,EAAoB,2BAAA;AAAA,cACpB,OAAA,EAAS,CAAA;AAAA,cAER,QAAA,EAAA;AAAA;AAAA,8BAGHjB,cAAAA,CAACY,kBAAA,EAAK,KAAA,EAAO,CAACK,QAAAA,CAAO,QAAA,EAAU,EAAE,KAAA,EAAO,OAAA,CAAQ,UAAU,MAAA,EAAQ,OAAA,CAAQ,UAAU,CAAA,EACjF,yBACH,CAAA,GAEA;AAAA;AAAA;AAAA,KACN;AAAA,IAEC,YAAY,IAAA,mBACXjB,cAAAA,CAACa,gBAAAA,EAAA,EAAK,KAAA,EAAO,CAACI,QAAAA,CAAO,IAAA,EAAM,EAAE,KAAA,EAAO,MAAA,CAAO,WAAW,CAAA,EAAI,gBAAK,CAAA,GAC7D;AAAA,GAAA,EACN,CAAA;AAEJ,CAAC;AAED,IAAMA,QAAAA,GAASF,uBAAW,MAAA,CAAO;AAAA,EAC/B,IAAA,EAAM;AAAA,IACJ,KAAA,EAAOqC,cAAAA;AAAA,IACP,GAAA,EAAK,CAAA;AAAA,IACL,SAAA,EAAW;AAAA,GACb;AAAA,EACA,QAAA,EAAU;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,KAAA,EAAO;AAAA,IACL,GAAG,eAAA,CAAgB;AAAA,GACrB;AAAA,EACA,KAAA,EAAO;AAAA,IACL,WAAA,EAAa,CAAA;AAAA,IACb,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY;AAAA,GACd;AAAA,EACA,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,CAAA;AAAA,IACN,eAAA,EAAiB,CAAA;AAAA,IACjB,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,QAAA,EAAU;AAAA,IACR,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,kBAAA,EAAoB;AAAA,GACtB;AAAA,EACA,QAAA,EAAU;AAAA,IACR,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,UAAA,EAAY;AAAA,GACd;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,GAAG,eAAA,CAAgB;AAAA;AAEvB,CAAC,CAAA;;;AC7UM,SAAS,yBAAA,CAA0B,OAAe,MAAA,EAAwB;AAC/E,EAAA,OAAO,KAAA,CAAM,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,MAAM,CAAC,CAAA;AAC9D;AAOO,SAAS,sBAAA,CACd,WAAA,EACA,KAAA,EACA,KAAA,EACA,MAAA,EACwB;AACxB,EAAA,MAAM,UAAA,GAAa,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,MAAM,CAAA;AACrC,EAAA,MAAM,SAAA,GAAY,KAAK,GAAA,CAAI,IAAA,CAAK,IAAI,CAAA,EAAG,KAAK,CAAA,EAAG,UAAA,GAAa,CAAC,CAAA;AAC7D,EAAA,MAAM,OAAA,GAAU,yBAAA,CAA0B,WAAA,EAAa,UAAU,CAAA;AACjE,EAAA,MAAM,cAAA,GAAiB,yBAAA,CAA0B,KAAA,EAAO,UAAA,GAAa,SAAS,CAAA;AAE9E,EAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,CAAA,EAAG,OAAA,CAAQ,KAAA,CAAM,CAAA,EAAG,SAAS,CAAC,CAAA,EAAG,OAAA,CAAQ,KAAA,CAAM,SAAA,GAAY,CAAC,CAAC,CAAA,CAAA;AAAA,MACnE,SAAA,EAAW;AAAA,KACb;AAAA,EACF;AAEA,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,CAAA,EAAG,OAAA,CAAQ,KAAA,CAAM,CAAA,EAAG,SAAS,CAAC,CAAA,EAAG,cAAc,CAAA,EAAG,OAAA,CAAQ,KAAA;AAAA,MAC9D,YAAY,cAAA,CAAe;AAAA,KAC5B,CAAA,CAAA,CAAG,KAAA,CAAM,CAAA,EAAG,UAAU,CAAA;AAAA,IACvB,WAAW,IAAA,CAAK,GAAA,CAAI,YAAY,cAAA,CAAe,MAAA,EAAQ,aAAa,CAAC;AAAA,GACvE;AACF;ACRA,IAAM,cAAA,GAAiB,CAAA;AACvB,IAAM,kBAAA,GAAqB,EAAA;AAC3B,IAAM,iBAAA,GAAoB,EAAA;AAC1B,IAAM,WAAA,GAAc,EAAA;AACpB,IAAM,WAAA,GAAc,EAAA;AACpB,IAAM,UAAA,GAAa,CAAA;AACnB,IAAM,iBAAA,GAAoB,GAAA;AA2BnB,IAAM,qBAAA,GAAwB9C,gBAAAA,CAGnC,SAASkD,sBAAAA,CACT;AAAA,EACE,MAAA,GAAS,cAAA;AAAA,EACT,KAAA;AAAA,EACA,YAAA,GAAe,EAAA;AAAA,EACf,aAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA,GAAQ,KAAA;AAAA,EACR,QAAA,GAAW,KAAA;AAAA,EACX,SAAA,GAAY,KAAA;AAAA,EACZ,0BAAA;AAAA,EACA,KAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,YAAA,EACA;AACA,EAAA,MAAM,aAAa,IAAA,CAAK,GAAA,CAAI,GAAG,IAAA,CAAK,KAAA,CAAM,MAAM,CAAC,CAAA;AACjD,EAAA,MAAM,YAAA,GAAe,OAAO,KAAA,KAAU,QAAA;AACtC,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAI9C,cAAAA;AAAA,IAAS,MACzD,yBAAA,CAA0B,YAAA,EAAc,UAAU;AAAA,GACpD;AACA,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,eAAwB,IAAI,CAAA;AACpE,EAAA,MAAM,EAAE,KAAA,EAAO,aAAA,EAAc,GAAI+C,+BAAA,EAAoB;AACrD,EAAA,MAAM,OAAA,GAAUjD,aAAkC,IAAI,CAAA;AACtD,EAAA,MAAM,SAAA,GAAYA,YAAAA,CAAqD,EAAE,CAAA;AACzE,EAAA,MAAM,WAAA,GAAc,yBAAA;AAAA,IAClB,eAAe,KAAA,GAAQ,iBAAA;AAAA,IACvB;AAAA,GACF;AAEA,EAAA,oBAAA,CAAqB,SAAS,SAAS,CAAA;AAEvC,EAAA,MAAM,KAAA,GAAQa,iBAAAA;AAAA,IACZ,CAAC,QAAQ,CAAA,KAAM;AACb,MAAA,MAAM,SAAA,GAAY,KAAK,GAAA,CAAI,IAAA,CAAK,IAAI,CAAA,EAAG,KAAK,CAAA,EAAG,UAAA,GAAa,CAAC,CAAA;AAC7D,MAAA,SAAA,CAAU,OAAA,CAAQ,SAAS,CAAA,EAAG,KAAA,EAAM;AAAA,IACtC,CAAA;AAAA,IACA,CAAC,UAAU;AAAA,GACb;AAEA,EAAA,MAAM,MAAA,GAASA,iBAAAA;AAAA,IACb,CAAC,SAAA,KAAsB;AACrB,MAAA,MAAM,UAAA,GAAa,yBAAA,CAA0B,SAAA,EAAW,UAAU,CAAA;AAElE,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,oBAAA,CAAqB,UAAU,CAAA;AAAA,MACjC;AAEA,MAAA,aAAA,GAAgB,UAAU,CAAA;AAE1B,MAAA,IAAI,UAAA,CAAW,WAAW,UAAA,EAAY;AACpC,QAAA,UAAA,GAAa,UAAU,CAAA;AAAA,MACzB;AAAA,IACF,CAAA;AAAA,IACA,CAAC,YAAA,EAAc,UAAA,EAAY,aAAA,EAAe,UAAU;AAAA,GACtD;AAEA,EAAAqC,yBAAA;AAAA,IACE,YAAA;AAAA,IACA,OAAO;AAAA,MACL,OAAO,MAAM;AACX,QAAA,MAAA,CAAO,EAAE,CAAA;AACT,QAAA,KAAA,CAAM,CAAC,CAAA;AAAA,MACT,CAAA;AAAA,MACA;AAAA,KACF,CAAA;AAAA,IACA,CAAC,QAAQ,KAAK;AAAA,GAChB;AAEA,EAAA,MAAM,YAAA,GAAe,CAAC,KAAA,EAAe,KAAA,KAAkB;AACrD,IAAA,MAAM,MAAA,GAAS,sBAAA,CAAuB,WAAA,EAAa,KAAA,EAAO,OAAO,UAAU,CAAA;AAC3E,IAAA,MAAA,CAAO,OAAO,IAAI,CAAA;AAClB,IAAA,KAAA,CAAM,OAAO,SAAS,CAAA;AAAA,EACxB,CAAA;AAEA,EAAA,MAAM,cAAA,GAAiB,CACrB,KAAA,EACA,KAAA,KACG;AACH,IAAA,MAAM,GAAA,GAAM,MAAM,WAAA,CAAY,GAAA;AAE9B,IAAA,IAAI,QAAQ,WAAA,IAAe,CAAC,YAAY,KAAK,CAAA,IAAK,QAAQ,CAAA,EAAG;AAC3D,MAAA,MAAM,SAAS,sBAAA,CAAuB,WAAA,EAAa,KAAA,GAAQ,CAAA,EAAG,IAAI,UAAU,CAAA;AAC5E,MAAA,MAAA,CAAO,OAAO,IAAI,CAAA;AAClB,MAAA,KAAA,CAAM,QAAQ,CAAC,CAAA;AACf,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,GAAA,KAAQ,WAAA,IAAe,KAAA,GAAQ,CAAA,EAAG;AACpC,MAAA,KAAA,CAAM,QAAQ,CAAC,CAAA;AAAA,IACjB;AAEA,IAAA,IAAI,GAAA,KAAQ,YAAA,IAAgB,KAAA,GAAQ,UAAA,GAAa,CAAA,EAAG;AAClD,MAAA,KAAA,CAAM,QAAQ,CAAC,CAAA;AAAA,IACjB;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,SAAS,aAAA,GAAgB,iBAAA;AAC/B,EAAA,MAAM,SAAA,GAAY,SAAS,iBAAA,GAAoB,kBAAA;AAC/C,EAAA,MAAM,OAAA,GAAU,SAAS,UAAA,GAAa,WAAA;AACtC,EAAA,MAAM,SAAA,GAAY,YAAY,UAAA,GAAa,OAAA,GAAU,KAAK,GAAA,CAAI,CAAA,EAAG,aAAa,CAAC,CAAA;AAE/E,EAAA,uBACE1D,cAAAA;AAAA,IAACY,gBAAAA;AAAA,IAAA;AAAA,MACE,GAAG,SAAA;AAAA,MACJ,GAAA,EAAK,OAAA;AAAA,MACL,KAAA,EAAO;AAAA,QACLK,QAAAA,CAAO,IAAA;AAAA,QACP,EAAE,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,MAAA,EAAQ,KAAK,OAAA,EAAQ;AAAA,QACnD,YAAYA,QAAAA,CAAO,QAAA;AAAA,QACnB;AAAA,OACF;AAAA,MAEC,QAAA,EAAA,KAAA,CAAM,KAAK,EAAE,MAAA,EAAQ,YAAW,EAAG,CAAC,GAAG,KAAA,KAAU;AAChD,QAAA,MAAM,SAAS,YAAA,KAAiB,KAAA;AAChC,QAAA,MAAM,cAAc,KAAA,GAAQ,MAAA,CAAO,WAAW,MAAA,GAAS,MAAA,CAAO,UAAU,MAAA,CAAO,OAAA;AAE/E,QAAA,uBACEjB,cAAAA;AAAA,UAACuD,qBAAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,CAAC,OAAA,KAAY;AAChB,cAAA,SAAA,CAAU,OAAA,CAAQ,KAAK,CAAA,GAAI,OAAA;AAAA,YAC7B,CAAA;AAAA,YACA,oBACE,0BAAA,GAA6B,KAAK,CAAA,IAAK,CAAA,wBAAA,EAA2B,QAAQ,CAAC,CAAA,CAAA;AAAA,YAE7E,kBAAA,EAAoB,EAAE,QAAA,EAAS;AAAA,YAC/B,YAAA,EAAc,KAAA,KAAU,CAAA,GAAI,eAAA,GAAkB,KAAA;AAAA,YAC9C,SAAA,EAAW,aAAa,KAAA,KAAU,CAAA;AAAA,YAClC,WAAA,EAAalD,qBAAS,EAAA,KAAO,KAAA;AAAA,YAC7B,UAAU,CAAC,QAAA;AAAA,YACX,SAAA,EAAU,SAAA;AAAA,YAEV,YAAA,EAAa,YAAA;AAAA,YACb,SAAA,EAAW,UAAA;AAAA,YACX,MAAA,EAAQ,MAAM,eAAA,CAAgB,CAAC,YAAa,OAAA,KAAY,KAAA,GAAQ,OAAO,OAAQ,CAAA;AAAA,YAC/E,YAAA,EAAc,CAAC,IAAA,KAAS,YAAA,CAAa,OAAO,IAAI,CAAA;AAAA,YAChD,OAAA,EAAS,MAAM,eAAA,CAAgB,KAAK,CAAA;AAAA,YACpC,UAAA,EAAY,CAAC,KAAA,KAAU,cAAA,CAAe,OAAO,KAAK,CAAA;AAAA,YAClD,eAAA,EAAiB,MAAM,QAAA,GAAW,WAAW,CAAA;AAAA,YAC7C,iBAAA,EAAiB,IAAA;AAAA,YACjB,KAAA,EAAO;AAAA,cACLY,QAAAA,CAAO,IAAA;AAAA,cACP;AAAA,gBACE,KAAA,EAAO,SAAA;AAAA,gBACP,MAAA,EAAQ,WAAA;AAAA,gBACR,WAAA;AAAA,gBACA,KAAA,EAAO,KAAA,GAAQ,MAAA,CAAO,GAAA,GAAM,MAAA,CAAO;AAAA,eACrC;AAAA,cACAZ,oBAAAA,CAAS,EAAA,KAAO,KAAA,GAAQY,QAAAA,CAAO,OAAA,GAAU,IAAA;AAAA,cACzCZ,oBAAAA,CAAS,EAAA,KAAO,SAAA,GAAYY,QAAAA,CAAO,WAAA,GAAc,IAAA;AAAA,cACjD;AAAA,aACF;AAAA,YACA,KAAA,EAAO,WAAA,CAAY,KAAK,CAAA,IAAK;AAAA,WAAA;AAAA,UArBxB;AAAA,SAsBP;AAAA,MAEJ,CAAC;AAAA;AAAA,GACH;AAEJ,CAAC;AAED,IAAMA,QAAAA,GAASF,uBAAW,MAAA,CAAO;AAAA,EAC/B,IAAA,EAAM;AAAA,IACJ,QAAA,EAAU,CAAA;AAAA,IACV,SAAA,EAAW,QAAA;AAAA,IACX,aAAA,EAAe,KAAA;AAAA,IACf,cAAA,EAAgB;AAAA,GAClB;AAAA,EACA,QAAA,EAAU;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,QAAA,EAAU,CAAA;AAAA,IACV,QAAA,EAAU,CAAA;AAAA,IACV,UAAA,EAAY,CAAA;AAAA,IACZ,WAAA,EAAa,CAAA;AAAA,IACb,YAAA,EAAc,EAAA;AAAA,IACd,OAAA,EAAS,CAAA;AAAA,IACT,MAAA,EAAQ,CAAA;AAAA,IACR,SAAA,EAAW,QAAA;AAAA,IACX,YAAY,KAAA,CAAM,IAAA;AAAA,IAClB,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,UAAA,EAAY;AAAA,GACd;AAAA,EACA,OAAA,EAAS;AAAA,IACP,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,WAAA,EAAa;AAAA,IACX,kBAAA,EAAoB;AAAA;AAExB,CAAC,CAAA;AC3KD,IAAMqC,cAAAA,GAAgB,GAAA;AACtB,IAAMO,eAAAA,GAAiB,EAAA;AACvB,IAAMC,eAAAA,GAAiB,EAAA;AACvB,IAAMb,YAAAA,GAAc,EAAA;AACpB,IAAM,oBAAA,GAAuB,GAAA;AAC7B,IAAMc,YAAAA,GAAc,EAAA;AACpB,IAAM3C,WAAAA,GAAY,EAAA;AAClB,IAAM,QAAA,GAAW,CAAA;AACjB,IAAM,uBAAA,GAA0B,EAAA;AAIhC,SAAS,eAAe,KAAA,EAAgC;AACtD,EAAA,QAAQ,KAAA;AAAO,IACb,KAAK,OAAA;AACH,MAAA,OAAO,MAAA,CAAO,OAAA;AAAA,IAChB,KAAK,UAAA;AACH,MAAA,OAAO,MAAA,CAAO,YAAA;AAAA,IAChB;AACE,MAAA,OAAO,aAAA;AAAA;AAEb;AAEA,SAAS,QAAQ,KAAA,EAAgD;AAC/D,EAAA,IAAI,KAAA,IAAS,IAAA,IAAQ,KAAA,KAAU,EAAA,SAAW,EAAC;AAC3C,EAAA,OAAO,MAAM,OAAA,CAAQ,KAAK,CAAA,GAAI,KAAA,GAAQ,CAAC,KAAK,CAAA;AAC9C;AAEA,SAAS,qBAAA,CACP,OAAA,EACA,cAAA,EACA,UAAA,EACA,aAAA,EACmD;AACnD,EAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG,OAAO,EAAE,OAAA,EAAS,EAAC,EAAG,WAAA,EAAa,KAAA,EAAM;AACnE,EAAA,IAAI,cAAA,IAAkB,CAAA,EAAG,OAAO,EAAE,OAAA,EAAS,OAAA,CAAQ,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA,EAAG,WAAA,EAAa,OAAA,CAAQ,SAAS,CAAA,EAAE;AAEhG,EAAA,MAAM,UAA0B,EAAC;AACjC,EAAA,IAAI,IAAA,GAAO,CAAA;AAEX,EAAA,KAAA,IAAS,QAAQ,CAAA,EAAG,KAAA,GAAQ,OAAA,CAAQ,MAAA,EAAQ,SAAS,CAAA,EAAG;AACtD,IAAA,MAAM,MAAA,GAAS,QAAQ,KAAK,CAAA;AAC5B,IAAA,MAAM,SAAA,GAAY,UAAA,CAAW,MAAA,CAAO,KAAK,CAAA;AACzC,IAAA,IAAI,aAAa,IAAA,EAAM;AACrB,MAAA,IAAI,OAAA,CAAQ,MAAA,KAAW,CAAA,EAAG,OAAA,CAAQ,KAAK,MAAM,CAAA;AAC7C,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,cAAA,GAAiB,OAAA,CAAQ,MAAA,GAAS,KAAA,GAAQ,CAAA;AAChD,IAAA,MAAM,GAAA,GAAM,OAAA,CAAQ,MAAA,GAAS,CAAA,GAAI,QAAA,GAAW,CAAA;AAC5C,IAAA,MAAM,OAAA,GAAU,cAAA,GAAiB,CAAA,GAAI,QAAA,GAAW,aAAA,GAAgB,CAAA;AAChE,IAAA,MAAM,QAAA,GAAW,OAAO,GAAA,GAAM,SAAA;AAE9B,IAAA,IAAI,OAAA,CAAQ,MAAA,GAAS,CAAA,IAAK,QAAA,GAAW,UAAU,cAAA,EAAgB;AAC7D,MAAA,OAAO,EAAE,OAAA,EAAS,WAAA,EAAa,IAAA,EAAK;AAAA,IACtC;AAEA,IAAA,OAAA,CAAQ,KAAK,MAAM,CAAA;AACnB,IAAA,IAAA,GAAO,QAAA;AAAA,EACT;AAEA,EAAA,OAAO,EAAE,OAAA,EAAS,WAAA,EAAa,OAAA,CAAQ,MAAA,GAAS,QAAQ,MAAA,EAAO;AACjE;AAQA,SAAS,eAAA,CAAgB,EAAE,OAAA,EAAS,QAAA,EAAU,UAAS,EAAyB;AAC9E,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAIR,eAAS,CAAC,CAAA;AACtD,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,cAAAA,CAAiC,EAAE,CAAA;AACvE,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIA,eAAS,uBAAuB,CAAA;AAE1E,EAAAY,gBAAU,MAAM;AACd,IAAA,aAAA,CAAc,CAAC,OAAA,KAAY;AACzB,MAAA,MAAM,WAAA,GAAc,IAAI,GAAA,CAAI,OAAA,CAAQ,IAAI,CAAC,MAAA,KAAW,MAAA,CAAO,KAAK,CAAC,CAAA;AACjE,MAAA,MAAM,IAAA,GAAO,MAAA,CAAO,IAAA,CAAK,OAAO,CAAA;AAChC,MAAA,IAAI,IAAA,CAAK,MAAM,CAAC,GAAA,KAAQ,YAAY,GAAA,CAAI,GAAG,CAAC,CAAA,EAAG,OAAO,OAAA;AAEtD,MAAA,MAAM,OAA+B,EAAC;AACtC,MAAA,KAAA,MAAW,OAAO,IAAA,EAAM;AACtB,QAAA,IAAI,WAAA,CAAY,IAAI,GAAG,CAAA,OAAQ,GAAG,CAAA,GAAI,QAAQ,GAAG,CAAA;AAAA,MACnD;AACA,MAAA,OAAO,IAAA;AAAA,IACT,CAAC,CAAA;AAAA,EACH,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAA,MAAM,EAAE,OAAA,EAAS,WAAA,EAAY,GAAIb,aAAAA;AAAA,IAC/B,MAAM,qBAAA,CAAsB,OAAA,EAAS,cAAA,EAAgB,YAAY,aAAa,CAAA;AAAA,IAC9E,CAAC,UAAA,EAAY,cAAA,EAAgB,aAAA,EAAe,OAAO;AAAA,GACrD;AAEA,EAAA,MAAM,qBAAA,GAAwB,CAAC,KAAA,KAA6B;AAC1D,IAAA,MAAM,OAAO,IAAA,CAAK,KAAA,CAAM,KAAA,CAAM,WAAA,CAAY,OAAO,KAAK,CAAA;AACtD,IAAA,iBAAA,CAAkB,CAAC,OAAA,KAAa,OAAA,KAAY,IAAA,GAAO,UAAU,IAAK,CAAA;AAAA,EACpE,CAAA;AAEA,EAAA,MAAM,gBAAA,GAAmB,CAAC,KAAA,EAAe,KAAA,KAA6B;AACpE,IAAA,MAAM,OAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,WAAA,CAAY,OAAO,KAAK,CAAA;AACrD,IAAA,aAAA,CAAc,CAAC,OAAA,KAAa,OAAA,CAAQ,KAAK,MAAM,IAAA,GAAO,OAAA,GAAU,EAAE,GAAG,OAAA,EAAS,CAAC,KAAK,GAAG,MAAO,CAAA;AAAA,EAChG,CAAA;AAEA,EAAA,MAAM,oBAAA,GAAuB,CAAC,KAAA,KAA6B;AACzD,IAAA,MAAM,OAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,WAAA,CAAY,OAAO,KAAK,CAAA;AACrD,IAAA,gBAAA,CAAiB,CAAC,OAAA,KAAa,OAAA,KAAY,IAAA,GAAO,UAAU,IAAK,CAAA;AAAA,EACnE,CAAA;AAEA,EAAA,uBACEN,eAAAA,CAACS,gBAAAA,EAAA,EAAK,KAAA,EAAOK,SAAO,cAAA,EAElB,QAAA,EAAA;AAAA,oBAAAd,gBAACS,gBAAAA,EAAA,EAAK,eAAc,MAAA,EAAO,KAAA,EAAOK,SAAO,UAAA,EACtC,QAAA,EAAA;AAAA,MAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,qBACZd,eAAAA;AAAA,QAACS,gBAAAA;AAAA,QAAA;AAAA,UAEC,OAAOK,QAAAA,CAAO,IAAA;AAAA,UACd,UAAU,CAAC,KAAA,KAAU,gBAAA,CAAiB,MAAA,CAAO,OAAO,KAAK,CAAA;AAAA,UAEzD,QAAA,EAAA;AAAA,4BAAAjB,cAAAA,CAACa,kBAAA,EAAK,KAAA,EAAOI,SAAO,SAAA,EAAW,aAAA,EAAe,CAAA,EAC3C,QAAA,EAAA,MAAA,CAAO,KAAA,EACV,CAAA;AAAA,4BACAjB,cAAAA,CAACa,gBAAAA,EAAA,EAAK,KAAA,EAAOI,QAAAA,CAAO,YAAY,QAAA,EAAA,MAAA,EAAC;AAAA;AAAA,SAAA;AAAA,QAP5B,CAAA,QAAA,EAAW,OAAO,KAAK,CAAA;AAAA,OAS/B,CAAA;AAAA,sBACDjB,cAAAA,CAACY,gBAAAA,EAAA,EAAK,KAAA,EAAOK,SAAO,QAAA,EAAU,QAAA,EAAU,oBAAA,EACtC,QAAA,kBAAAjB,eAACa,gBAAAA,EAAA,EAAK,OAAOI,QAAAA,CAAO,YAAA,EAAc,iBAAG,CAAA,EACvC;AAAA,KAAA,EACF,CAAA;AAAA,oBAEAd,gBAACS,gBAAAA,EAAA,EAAK,OAAOK,QAAAA,CAAO,QAAA,EAAU,UAAU,qBAAA,EACrC,QAAA,EAAA;AAAA,MAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,qBACZd,gBAACS,gBAAAA,EAAA,EAAwB,KAAA,EAAOK,QAAAA,CAAO,IAAA,EACrC,QAAA,EAAA;AAAA,wBAAAjB,cAAAA,CAACa,kBAAA,EAAK,KAAA,EAAOI,SAAO,SAAA,EAAW,aAAA,EAAe,CAAA,EAC3C,QAAA,EAAA,MAAA,CAAO,KAAA,EACV,CAAA;AAAA,wBACAjB,cAAAA;AAAA,UAACc,qBAAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,CAAC,KAAA,KAAU;AAElB,cAAA,KAAA,EAAO,eAAA,IAAkB;AACzB,cAAA,QAAA,CAAS,OAAO,KAAK,CAAA;AAAA,YACvB,CAAA;AAAA,YACA,QAAA;AAAA,YACA,OAAA,EAAS,CAAA;AAAA,YACT,iBAAA,EAAkB,QAAA;AAAA,YAClB,kBAAA,EAAoB,CAAA,OAAA,EAAU,MAAA,CAAO,KAAK,CAAA,CAAA;AAAA,YAE1C,0BAAAd,cAAAA,CAACa,gBAAAA,EAAA,EAAK,KAAA,EAAOI,QAAAA,CAAO,YAAY,QAAA,EAAA,MAAA,EAAC;AAAA;AAAA;AACnC,OAAA,EAAA,EAhBS,MAAA,CAAO,KAiBlB,CACD,CAAA;AAAA,MAEA,8BACCjB,cAAAA,CAACY,gBAAAA,EAAA,EAAK,OAAOK,QAAAA,CAAO,QAAA,EAClB,QAAA,kBAAAjB,cAAAA,CAACa,kBAAA,EAAK,KAAA,EAAOI,SAAO,YAAA,EAAc,QAAA,EAAA,KAAA,EAAG,GACvC,CAAA,GACE;AAAA,KAAA,EACN;AAAA,GAAA,EACF,CAAA;AAEJ;AAEO,IAAM,MAAA,GAASX,gBAAAA;AAAA,EACpB,SAASwD,OAAAA,CAAO,KAAA,EAAO,YAAA,EAAc;AACnC,IAAA,MAAM;AAAA,MACJ,KAAA;AAAA,MACA,SAAA,GAAY,IAAA;AAAA,MACZ,IAAA;AAAA,MACA,QAAA,GAAW,IAAA;AAAA,MACX,WAAA;AAAA,MACA,OAAA;AAAA,MACA,IAAA,EAAM,QAAA;AAAA,MACN,WAAA,GAAc,KAAA;AAAA,MACd,YAAA;AAAA,MACA,QAAA,GAAW,KAAA;AAAA,MACX,KAAA,GAAQ,KAAA;AAAA,MACR,QAAA;AAAA,MACA,YAAA,GAAe,IAAA;AAAA,MACf,UAAA,GAAa,IAAA;AAAA,MACb,iBAAA,GAAoB,WAAA;AAAA,MACpB,cAAA;AAAA,MACA,OAAA,GAAU,KAAA;AAAA,MACV,SAAA,GAAY,YAAA;AAAA,MACZ,KAAA;AAAA,MACA,SAAA;AAAA,MACA,kBAAA;AAAA;AAAA;AAAA,MAGA,QAAA,EAAU,SAAA;AAAA,MACV,KAAA,EAAO,MAAA;AAAA,MACP,YAAA,EAAc,aAAA;AAAA,MACd,aAAA,EAAe,cAAA;AAAA,MACf,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,QAAA,GAAW,MAAM,QAAA,KAAa,IAAA;AACpC,IAAA,MAAM,YAAY,KAAA,CAAM,KAAA;AACxB,IAAA,MAAM,OAAA,GAAUtD,aAAkC,IAAI,CAAA;AACtD,IAAA,MAAM,UAAA,GAAaA,aAAuC,IAAI,CAAA;AAC9D,IAAA,MAAM,cAAA,GAAiBA,aAAuC,IAAI,CAAA;AAClE,IAAA,MAAM,UAAA,GAAaC,cAAQ,MAAM,SAAA,CAAU,SAAS,YAAY,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AACjF,IAAA,MAAM,gBAAA,GAAmB,OAAO,QAAA,KAAa,SAAA;AAC7C,IAAA,MAAM,oBAAoB,SAAA,KAAc,MAAA;AAExC,IAAA,MAAM,CAAC,kBAAA,EAAoB,qBAAqB,CAAA,GAAIC,cAAAA;AAAA,MAClD,CAAC,QAAA,GAAa,KAAA,CAA4B,YAAA,IAAgB,EAAA,GAAM;AAAA,KAClE;AACA,IAAA,MAAM,CAAC,oBAAA,EAAsB,uBAAuB,CAAA,GAAIA,cAAAA;AAAA,MACtD,QAAA,GAAa,KAAA,CAA8B,YAAA,IAAgB,KAAM;AAAC,KACpE;AACA,IAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAIA,eAAS,WAAW,CAAA;AACpE,IAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,eAAS,EAAE,CAAA;AACjD,IAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,eAAwB,IAAI,CAAA;AAEpE,IAAA,MAAM,cAAA,GAAiBD,cAAQ,MAAM;AACnC,MAAA,MAAM,OAAA,GAAU,iBAAA,GACZ,SAAA,GACA,QAAA,GACE,oBAAA,GACA,kBAAA;AACN,MAAA,OAAO,QAAQ,OAAO,CAAA;AAAA,IACxB,GAAG,CAAC,iBAAA,EAAmB,UAAU,SAAA,EAAW,oBAAA,EAAsB,kBAAkB,CAAC,CAAA;AAErF,IAAA,MAAM,MAAA,GAAS,mBAAmB,QAAA,GAAW,gBAAA;AAG7C,IAAA,MAAM,eAAA,GAAkBA,aAAAA;AAAA,MACtB,MACE,cAAA,CACG,GAAA,CAAI,CAAC,KAAA,KAAU,OAAA,CAAQ,KAAK,CAAC,MAAA,KAAW,MAAA,CAAO,KAAA,KAAU,KAAK,CAAC,CAAA,CAC/D,OAAO,CAAC,MAAA,KAAmC,UAAU,IAAI,CAAA;AAAA,MAC9D,CAAC,SAAS,cAAc;AAAA,KAC1B;AACA,IAAA,MAAM,QAAA,GAAW,gBAAgB,MAAA,GAAS,CAAA;AAE1C,IAAA,MAAM,mBAAmB,cAAA,IAAkB,IAAA;AAE3C,IAAA,MAAM,eAAA,GAAkBA,cAAQ,MAAM;AACpC,MAAA,IAAI,kBAAkB,OAAO,OAAA;AAC7B,MAAA,MAAM,KAAA,GAAQ,WAAA,CAAY,IAAA,EAAK,CAAE,WAAA,EAAY;AAC7C,MAAA,IAAI,CAAC,OAAO,OAAO,OAAA;AACnB,MAAA,OAAO,OAAA,CAAQ,MAAA,CAAO,CAAC,MAAA,KAAW,MAAA,CAAO,MAAM,WAAA,EAAY,CAAE,QAAA,CAAS,KAAK,CAAC,CAAA;AAAA,IAC9E,CAAA,EAAG,CAAC,gBAAA,EAAkB,OAAA,EAAS,WAAW,CAAC,CAAA;AAE3C,IAAA,oBAAA,CAAqB,SAAS,SAAS,CAAA;AAEvC,IAAA,MAAM,OAAA,GAAUY,iBAAAA;AAAA,MACd,CAAC,IAAA,KAAkB;AACjB,QAAA,IAAI,CAAC,gBAAA,EAAkB,mBAAA,CAAoB,IAAI,CAAA;AAC/C,QAAA,YAAA,GAAe,IAAI,CAAA;AACnB,QAAA,IAAI,IAAA,EAAM;AAGR,UAAA,eAAA,CAAgB,cAAA,CAAe,CAAC,CAAA,IAAK,IAAI,CAAA;AAAA,QAC3C,CAAA,MAAO;AACL,UAAA,cAAA,CAAe,EAAE,CAAA;AACjB,UAAA,eAAA,CAAgB,IAAI,CAAA;AAEpB,UAAA,cAAA,GAAiB,EAAE,CAAA;AAAA,QACrB;AAAA,MACF,CAAA;AAAA,MACA,CAAC,gBAAA,EAAkB,YAAA,EAAc,cAAA,EAAgB,cAAc;AAAA,KACjE;AAEA,IAAA,MAAM,kBAAA,GAAqB,CAAC,IAAA,KAAiB;AAC3C,MAAA,cAAA,CAAe,IAAI,CAAA;AACnB,MAAA,cAAA,GAAiB,IAAI,CAAA;AAAA,IACvB,CAAA;AAGA,IAAAC,gBAAU,MAAM;AACd,MAAA,IAAIjB,oBAAAA,CAAS,EAAA,KAAO,KAAA,IAAS,CAAC,MAAA,EAAQ;AAEtC,MAAA,MAAM,iBAAA,GAAoB,CAAC,KAAA,KAAmC;AAC5D,QAAA,MAAM,OAAO,OAAA,CAAQ,OAAA;AACrB,QAAA,MAAM,SAAS,KAAA,CAAM,MAAA;AACrB,QAAA,IAAI,IAAA,EAAM,YAAY,MAAA,YAAkB,IAAA,IAAQ,CAAC,IAAA,CAAK,QAAA,CAAS,MAAM,CAAA,EAAG;AACtE,UAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,QACf;AAAA,MACF,CAAA;AAEA,MAAA,QAAA,CAAS,gBAAA,CAAiB,aAAa,iBAAiB,CAAA;AACxD,MAAA,QAAA,CAAS,gBAAA,CAAiB,cAAc,iBAAiB,CAAA;AACzD,MAAA,OAAO,MAAM;AACX,QAAA,QAAA,CAAS,mBAAA,CAAoB,aAAa,iBAAiB,CAAA;AAC3D,QAAA,QAAA,CAAS,mBAAA,CAAoB,cAAc,iBAAiB,CAAA;AAAA,MAC9D,CAAA;AAAA,IACF,CAAA,EAAG,CAAC,MAAA,EAAQ,OAAO,CAAC,CAAA;AAEpB,IAAA,MAAM,YAAA,GAAegB,iBAAAA;AAAA,MACnB,CAAC,UAAA,KAAyB;AACxB,QAAA,IAAI,QAAA,EAAU;AACZ,UAAA,IAAI,CAAC,iBAAA,EAAmB,uBAAA,CAAwB,UAAU,CAAA;AAC1D,UAAC,KAAA,CAA8B,gBAAgB,UAAU,CAAA;AACzD,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,SAAA,GAAY,UAAA,CAAW,CAAC,CAAA,IAAK,EAAA;AACnC,QAAA,IAAI,CAAC,iBAAA,EAAmB,qBAAA,CAAsB,SAAS,CAAA;AACvD,QAAC,KAAA,CAA4B,gBAAgB,SAAS,CAAA;AAAA,MACxD,CAAA;AAAA,MACA,CAAC,iBAAA,EAAmB,QAAA,EAAU,KAAK;AAAA,KACrC;AAEA,IAAA,MAAM,qBAAqB,MAAM;AAC/B,MAAA,IAAI,QAAA,EAAU;AACd,MAAA,OAAA,CAAQ,CAAC,MAAM,CAAA;AAAA,IACjB,CAAA;AAEA,IAAA,MAAM,YAAA,GAAeA,iBAAAA;AAAA,MACnB,CAAC,WAAA,KAAwB;AACvB,QAAA,IAAI,QAAA,EAAU;AACd,QAAA,IAAI,QAAA,EAAU;AACZ,UAAA,MAAM,MAAA,GAAS,cAAA,CAAe,QAAA,CAAS,WAAW,CAAA;AAClD,UAAA,MAAM,UAAA,GAAa,MAAA,GACf,cAAA,CAAe,MAAA,CAAO,CAAC,KAAA,KAAU,KAAA,KAAU,WAAW,CAAA,GACtD,CAAC,GAAG,cAAA,EAAgB,WAAW,CAAA;AACnC,UAAA,YAAA,CAAa,UAAU,CAAA;AACvB,UAAA;AAAA,QACF;AAEA,QAAA,YAAA,CAAa,CAAC,WAAW,CAAC,CAAA;AAC1B,QAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,MACf,CAAA;AAAA,MACA,CAAC,YAAA,EAAc,QAAA,EAAU,QAAA,EAAU,gBAAgB,OAAO;AAAA,KAC5D;AAEA,IAAA,MAAM,gBAAA,GAAmB,CAAC,WAAA,KAAwB;AAChD,MAAA,IAAI,QAAA,IAAY,CAAC,QAAA,EAAU;AAC3B,MAAA,YAAA,CAAa,eAAe,MAAA,CAAO,CAAC,KAAA,KAAU,KAAA,KAAU,WAAW,CAAC,CAAA;AAAA,IACtE,CAAA;AAEA,IAAA,MAAM,YAAA,GAAeA,kBAAY,MAAM;AACrC,MAAA,MAAM,OAAO,UAAA,CAAW,OAAA;AACxB,MAAA,IAAA,EAAM,KAAA,IAAQ;AAAA,IAChB,CAAA,EAAG,EAAE,CAAA;AAEL,IAAA,MAAM,oBAAA,GAAuBA,kBAAY,MAAM;AAC7C,MAAA,OAAA,CAAQ,KAAK,CAAA;AACb,MAAA,YAAA,EAAa;AAAA,IACf,CAAA,EAAG,CAAC,YAAA,EAAc,OAAO,CAAC,CAAA;AAI1B,IAAAC,gBAAU,MAAM;AACd,MAAA,IAAIjB,oBAAAA,CAAS,OAAO,KAAA,EAAO;AAE3B,MAAA,MAAM,gBAAA,GAAmB,MAAM,QAAA,CAAS,aAAA,KAAkB,UAAA,CAAW,OAAA;AACrE,MAAA,MAAM,eAAA,GAAkB,MAAM,QAAA,CAAS,aAAA,KAAkB,cAAA,CAAe,OAAA;AAExE,MAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAyB;AAC9C,QAAA,IAAI,CAAC,MAAA,EAAQ;AACX,UAAA,IAAI,CAAC,gBAAA,EAAiB,IAAK,QAAA,EAAU;AACrC,UAAA,IAAI,KAAA,CAAM,QAAQ,WAAA,IAAe,KAAA,CAAM,QAAQ,SAAA,IAAa,KAAA,CAAM,QAAQ,OAAA,EAAS;AACjF,YAAA,KAAA,CAAM,cAAA,EAAe;AACrB,YAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,UACd;AACA,UAAA;AAAA,QACF;AAEA,QAAA,IAAI,KAAA,CAAM,QAAQ,QAAA,EAAU;AAC1B,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,oBAAA,EAAqB;AACrB,UAAA;AAAA,QACF;AAEA,QAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,WAAA,IAAe,KAAA,CAAM,QAAQ,SAAA,EAAW;AACxD,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,eAAA,CAAgB,CAAC,OAAA,KAAY;AAC3B,YAAA,IAAI,eAAA,CAAgB,MAAA,KAAW,CAAA,EAAG,OAAO,OAAA;AACzC,YAAA,MAAM,eAAe,eAAA,CAAgB,SAAA,CAAU,CAAC,MAAA,KAAW,MAAA,CAAO,UAAU,OAAO,CAAA;AACnF,YAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,GAAA,KAAQ,WAAA,GAAc,CAAA,GAAI,EAAA;AAC9C,YAAA,MAAM,YACJ,YAAA,KAAiB,EAAA,GACb,UAAU,CAAA,GACR,CAAA,GACA,gBAAgB,MAAA,GAAS,CAAA,GAC3B,KAAK,GAAA,CAAI,IAAA,CAAK,IAAI,YAAA,GAAe,KAAA,EAAO,CAAC,CAAA,EAAG,eAAA,CAAgB,SAAS,CAAC,CAAA;AAC5E,YAAA,OAAO,eAAA,CAAgB,SAAS,CAAA,EAAG,KAAA,IAAS,OAAA;AAAA,UAC9C,CAAC,CAAA;AACD,UAAA;AAAA,QACF;AAIA,QAAA,IACE,eAAA,EAAgB,KACf,KAAA,CAAM,GAAA,KAAQ,MAAA,IAAU,MAAM,GAAA,KAAQ,KAAA,IAAS,KAAA,CAAM,GAAA,KAAQ,GAAA,CAAA,EAC9D;AACA,UAAA;AAAA,QACF;AAEA,QAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,MAAA,IAAU,KAAA,CAAM,QAAQ,KAAA,EAAO;AAC/C,UAAA,IAAI,eAAA,CAAgB,WAAW,CAAA,EAAG;AAClC,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,eAAA;AAAA,YACE,KAAA,CAAM,GAAA,KAAQ,MAAA,GACV,eAAA,CAAgB,CAAC,CAAA,CAAE,KAAA,GACnB,eAAA,CAAgB,eAAA,CAAgB,MAAA,GAAS,CAAC,CAAA,CAAE;AAAA,WAClD;AACA,UAAA;AAAA,QACF;AAEA,QAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,OAAA,IAAW,KAAA,CAAM,QAAQ,GAAA,EAAK;AAC9C,UAAA,IAAI,gBAAgB,IAAA,EAAM;AAC1B,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,YAAA,CAAa,YAAY,CAAA;AACzB,UAAA,IAAI,CAAC,UAAU,YAAA,EAAa;AAAA,QAC9B;AAAA,MACF,CAAA;AAEA,MAAA,QAAA,CAAS,gBAAA,CAAiB,WAAW,aAAa,CAAA;AAClD,MAAA,OAAO,MAAM,QAAA,CAAS,mBAAA,CAAoB,SAAA,EAAW,aAAa,CAAA;AAAA,IACpE,CAAA,EAAG;AAAA,MACD,MAAA;AAAA,MACA,QAAA;AAAA,MACA,eAAA;AAAA,MACA,YAAA;AAAA,MACA,QAAA;AAAA,MACA,oBAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,MAAM,YAAA,GAAe,kBAAA,CAAmB,QAAA,EAAU,QAAA,EAAU;AAAA,MAC1D,IAAA,EAAMa,WAAAA;AAAA,MACN,OAAO,KAAA,GAAQ,MAAA,CAAO,MAAM,MAAA,GAAS,MAAA,CAAO,UAAU,MAAA,CAAO;AAAA,KAC9D,CAAA;AACD,IAAA,MAAM,WAAA,GAAc,gBAAgB,QAAA,IAAY,IAAA;AAEhD,IAAA,MAAM,qBAAqB,KAAA,GACvB,MAAA,CAAO,WACP,MAAA,GACE,MAAA,CAAO,eACP,MAAA,CAAO,OAAA;AACb,IAAA,MAAM,gBAAA,GAAmB,QAAA,GACrB,KAAA,GACE,MAAA,CAAO,GAAA,GACP,OAAO,KAAA,GACT,KAAA,GACE,MAAA,CAAO,GAAA,GACP,MAAA,CAAO,OAAA;AACb,IAAA,MAAM,UAAA,GAAa,KAAA,GAAQ,MAAA,CAAO,GAAA,GAAM,MAAA,CAAO,KAAA;AAC/C,IAAA,MAAM,SAAA,GAAY,KAAA,GAAQ,MAAA,CAAO,GAAA,GAAM,MAAA,CAAO,OAAA;AAE9C,IAAA,MAAM,WAAA,GAAc,eAAA,CAAgB,CAAC,CAAA,EAAG,KAAA,IAAS,WAAA;AACjD,IAAA,MAAM,0BAAA,GACJ,kBAAA,KAAuB,OAAO,KAAA,KAAU,WAAW,KAAA,GAAQ,MAAA,CAAA;AAE7D,IAAA,uBACEf,eAAAA;AAAA,MAACS,gBAAAA;AAAA,MAAA;AAAA,QACE,GAAG,IAAA;AAAA,QACJ,GAAA,EAAK,UAAA;AAAA,QACL,KAAA,EAAO,CAACK,QAAAA,CAAO,IAAA,EAAM,MAAA,IAAUA,SAAO,QAAA,EAAU,QAAA,IAAYA,QAAAA,CAAO,QAAA,EAAU,KAAK,CAAA;AAAA,QAClF,kBAAA,EAAoB,EAAE,QAAA,EAAU,QAAA,EAAU,MAAA,EAAO;AAAA,QAEhD,QAAA,EAAA;AAAA,UAAA,SAAA,IAAa,KAAA,mBACZjB,cAAAA,CAACa,gBAAAA,EAAA,EAAK,KAAA,EAAO,CAACI,QAAAA,CAAO,KAAA,EAAO,EAAE,KAAA,EAAO,UAAA,EAAY,CAAA,EAAI,iBAAM,CAAA,GACzD,IAAA;AAAA,0BAEJd,eAAAA,CAACS,gBAAAA,EAAA,EAAK,KAAA,EAAO,CAACK,QAAAA,CAAO,WAAA,EAAa,MAAA,IAAUA,QAAAA,CAAO,eAAe,CAAA,EAChE,QAAA,EAAA;AAAA,4BAAAd,eAAAA;AAAA,cAACW,qBAAAA;AAAA,cAAA;AAAA,gBACC,GAAA,EAAK,UAAA;AAAA,gBACL,OAAA,EAAS,kBAAA;AAAA,gBACT,QAAA;AAAA,gBACA,iBAAA,EAAkB,UAAA;AAAA,gBAClB,kBAAA,EAAoB,0BAAA;AAAA,gBACpB,kBAAA,EAAoB,EAAE,QAAA,EAAU,QAAA,EAAU,MAAA,EAAO;AAAA,gBACjD,KAAA,EAAO;AAAA,kBACLG,QAAAA,CAAO,OAAA;AAAA,kBACP;AAAA,oBACE,WAAA,EAAa,kBAAA;AAAA,oBACb,iBAAiB,MAAA,CAAO;AAAA;AAC1B,iBACF;AAAA,gBAEC,QAAA,EAAA;AAAA,kBAAA,WAAA,mBAAcjB,eAACY,gBAAAA,EAAA,EAAK,OAAOK,QAAAA,CAAO,QAAA,EAAW,wBAAa,CAAA,GAAU,IAAA;AAAA,kCAErEjB,eAACY,gBAAAA,EAAA,EAAK,OAAOK,QAAAA,CAAO,cAAA,EACjB,QAAA,EAAA,QAAA,IAAY,QAAA,mBACXjB,cAAAA;AAAA,oBAAC,eAAA;AAAA,oBAAA;AAAA,sBACC,OAAA,EAAS,eAAA;AAAA,sBACT,QAAA;AAAA,sBACA,QAAA,EAAU;AAAA;AAAA,sCAGZA,cAAAA,CAACa,kBAAA,EAAK,KAAA,EAAO,CAACI,QAAAA,CAAO,WAAA,EAAa,EAAE,KAAA,EAAO,gBAAA,EAAkB,CAAA,EAAG,aAAA,EAAe,GAC5E,QAAA,EAAA,QAAA,GAAW,WAAA,GAAc,aAC5B,CAAA,EAEJ,CAAA;AAAA,kCAEAjB,eAACY,gBAAAA,EAAA,EAAK,OAAO,CAACK,QAAAA,CAAO,QAAA,EAAU,MAAA,IAAUA,QAAAA,CAAO,WAAW,GACzD,QAAA,kBAAAjB,cAAAA,CAAC,eAAA,EAAA,EAAgB,IAAA,EAAMkB,WAAAA,EAAW,KAAA,EAAO,SAAS,MAAA,CAAO,OAAA,GAAU,MAAA,CAAO,OAAA,EAAS,CAAA,EACrF;AAAA;AAAA;AAAA,aACF;AAAA,YAEC,yBACCf,eAAAA,CAACS,kBAAA,EAAK,KAAA,EAAOK,SAAO,IAAA,EACjB,QAAA,EAAA;AAAA,cAAA,UAAA,mBACCd,eAAAA,CAACS,gBAAAA,EAAA,EAAK,KAAA,EAAOK,SAAO,WAAA,EAClB,QAAA,EAAA;AAAA,gCAAAjB,cAAAA,CAACY,gBAAAA,EAAA,EAAK,KAAA,EAAOK,SAAO,QAAA,EAClB,QAAA,kBAAAjB,cAAAA,CAAC,UAAA,EAAA,EAAW,IAAA,EAAMkB,WAAAA,EAAW,KAAA,EAAO,MAAA,CAAO,SAAS,CAAA,EACtD,CAAA;AAAA,gCACAlB,cAAAA;AAAA,kBAACuD,qBAAAA;AAAA,kBAAA;AAAA,oBACC,GAAA,EAAK,cAAA;AAAA,oBACL,KAAA,EAAO,WAAA;AAAA,oBACP,YAAA,EAAc,kBAAA;AAAA,oBACd,UAAU,CAAC,QAAA;AAAA,oBACX,WAAA,EAAa,iBAAA;AAAA,oBACb,sBAAsB,MAAA,CAAO,OAAA;AAAA,oBAC7B,KAAA,EAAO;AAAA,sBACLtC,QAAAA,CAAO,WAAA;AAAA,sBACPZ,oBAAAA,CAAS,EAAA,KAAO,KAAA,GAAQY,QAAAA,CAAO,cAAA,GAAiB,IAAA;AAAA,sBAChDZ,oBAAAA,CAAS,EAAA,KAAO,SAAA,GAAYY,QAAAA,CAAO,kBAAA,GAAqB;AAAA,qBAC1D;AAAA,oBACA,kBAAA,EAAoB;AAAA;AAAA;AACtB,eAAA,EACF,CAAA,GACE,IAAA;AAAA,8BAEJd,eAAAA;AAAA,gBAAC4D,sBAAA;AAAA,gBAAA;AAAA,kBACC,OAAO9C,QAAAA,CAAO,UAAA;AAAA,kBACd,uBAAuBA,QAAAA,CAAO,iBAAA;AAAA,kBAC9B,yBAAA,EAA0B,SAAA;AAAA,kBAC1B,4BAAA,EAA8B,KAAA;AAAA,kBAE7B,QAAA,EAAA;AAAA,oBAAA,OAAA,mBACCjB,cAAAA,CAACY,gBAAAA,EAAA,EAAK,KAAA,EAAOK,SAAO,SAAA,EAClB,QAAA,kBAAAjB,cAAAA,CAACa,gBAAAA,EAAA,EAAK,KAAA,EAAOI,QAAAA,CAAO,UAAA,EAAY,QAAA,EAAA,YAAA,EAAU,GAC5C,CAAA,GACE,eAAA,CAAgB,MAAA,KAAW,CAAA,mBAC7BjB,cAAAA,CAACY,gBAAAA,EAAA,EAAK,KAAA,EAAOK,SAAO,SAAA,EAClB,QAAA,kBAAAjB,cAAAA,CAACa,gBAAAA,EAAA,EAAK,KAAA,EAAOI,QAAAA,CAAO,UAAA,EAAa,QAAA,EAAA,SAAA,EAAU,GAC7C,CAAA,GACE,IAAA;AAAA,oBAEH,CAAC,OAAA,IACA,eAAA,CAAgB,GAAA,CAAI,CAAC,MAAA,KAAW;AAC9B,sBAAA,MAAM,UAAA,GAAa,cAAA,CAAe,QAAA,CAAS,MAAA,CAAO,KAAK,CAAA;AACvD,sBAAA,MAAM,SAAA,GAAY,iBAAiB,MAAA,CAAO,KAAA;AAC1C,sBAAA,MAAM,WAAA,GAA+B,UAAA,GACjC,UAAA,GACA,SAAA,GACE,OAAA,GACA,SAAA;AAEN,sBAAA,uBACEd,eAAAA;AAAA,wBAACW,qBAAAA;AAAA,wBAAA;AAAA,0BAEC,OAAA,EAAS,MAAM,YAAA,CAAa,MAAA,CAAO,KAAK,CAAA;AAAA,0BACxC,QAAA;AAAA,0BACA,SAAA,EAAW,MAAM,eAAA,CAAgB,MAAA,CAAO,KAAK,CAAA;AAAA,0BAC7C,UAAA,EAAY,MACV,eAAA,CAAgB,CAAC,YAAa,OAAA,KAAY,MAAA,CAAO,KAAA,GAAQ,IAAA,GAAO,OAAQ,CAAA;AAAA,0BAE1E,SAAA,EAAW,MAAM,eAAA,CAAgB,MAAA,CAAO,KAAK,CAAA;AAAA,0BAC7C,UAAA,EAAY,MACV,eAAA,CAAgB,CAAC,YAAa,OAAA,KAAY,MAAA,CAAO,KAAA,GAAQ,IAAA,GAAO,OAAQ,CAAA;AAAA,0BAE1E,iBAAA,EAAmB,WAAW,UAAA,GAAa,QAAA;AAAA,0BAC3C,oBAAoB,EAAE,QAAA,EAAU,UAAA,EAAY,OAAA,EAAS,YAAY,QAAA,EAAS;AAAA,0BAC1E,KAAA,EAAO;AAAA,4BACLG,QAAAA,CAAO,IAAA;AAAA,4BACP;AAAA,8BACE,eAAA,EAAiB,eAAe,WAAW;AAAA;AAC7C,2BACF;AAAA,0BAEC,QAAA,EAAA;AAAA,4BAAA,QAAA,mBACCjB,cAAAA,CAACY,gBAAAA,EAAA,EAAK,aAAA,EAAc,QAAO,KAAA,EAAOK,QAAAA,CAAO,YAAA,EACvC,QAAA,kBAAAjB,eAAC,QAAA,EAAA,EAAS,KAAA,EAAO,YAAY,OAAA,EAAQ,OAAA,EAAQ,GAC/C,CAAA,GACE,IAAA;AAAA,4CACJA,cAAAA,CAACa,gBAAAA,EAAA,EAAK,KAAA,EAAOI,SAAO,SAAA,EAAW,aAAA,EAAe,CAAA,EAC3C,QAAA,EAAA,MAAA,CAAO,KAAA,EACV;AAAA;AAAA,yBAAA;AAAA,wBA3BK,MAAA,CAAO;AAAA,uBA4Bd;AAAA,oBAEJ,CAAC;AAAA;AAAA;AAAA;AACL,aAAA,EACF,CAAA,GACE;AAAA,WAAA,EACN,CAAA;AAAA,UAEC,YAAY,IAAA,mBAAOjB,cAAAA,CAACa,gBAAAA,EAAA,EAAK,KAAA,EAAO,CAACI,QAAAA,CAAO,IAAA,EAAM,EAAE,KAAA,EAAO,SAAA,EAAW,CAAA,EAAI,gBAAK,CAAA,GAAU;AAAA;AAAA;AAAA,KACxF;AAAA,EAEJ;AACF;AAEA,IAAMA,QAAAA,GAASF,uBAAW,MAAA,CAAO;AAAA,EAC/B,IAAA,EAAM;AAAA,IACJ,KAAA,EAAOqC,cAAAA;AAAA,IACP,GAAA,EAAK,CAAA;AAAA,IACL,SAAA,EAAW;AAAA,GACb;AAAA,EACA,QAAA,EAAU;AAAA,IACR,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,QAAA,EAAU;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,KAAA,EAAO;AAAA,IACL,GAAG,gBAAA,CAAiB;AAAA,GACtB;AAAA,EACA,WAAA,EAAa;AAAA,IACX,QAAA,EAAU,UAAA;AAAA,IACV,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,OAAA,EAAS;AAAA,IACP,MAAA,EAAQO,eAAAA;AAAA,IACR,YAAA,EAAcC,eAAAA;AAAA,IACd,WAAA,EAAa,CAAA;AAAA,IACb,eAAA,EAAiB,EAAA;AAAA,IACjB,iBAAA,EAAmB,EAAA;AAAA,IACnB,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,GAAA,EAAK,EAAA;AAAA,IACL,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,IAAA,EAAM,CAAA;AAAA,IACN,cAAA,EAAgB,QAAA;AAAA,IAChB,QAAA,EAAU,CAAA;AAAA,IACV,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,WAAA,EAAa;AAAA,IACX,GAAG,gBAAA,CAAiB;AAAA,GACtB;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,KAAA,EAAO,MAAA;AAAA,IACP,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,UAAA,EAAY;AAAA,IACV,QAAA,EAAU,UAAA;AAAA,IACV,IAAA,EAAM,CAAA;AAAA,IACN,GAAA,EAAK,CAAA;AAAA,IACL,aAAA,EAAe,KAAA;AAAA,IACf,OAAA,EAAS,CAAA;AAAA,IACT,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,QAAA,EAAU;AAAA,IACR,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,GAAA,EAAK,QAAA;AAAA,IACL,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,GAAA,EAAK,CAAA;AAAA,IACL,eAAA,EAAiB,CAAA;AAAA,IACjB,iBAAA,EAAmB,CAAA;AAAA,IACnB,YAAA,EAAc,GAAA;AAAA,IACd,iBAAiB,MAAA,CAAO,OAAA;AAAA,IACxB,UAAA,EAAY;AAAA,GACd;AAAA,EACA,SAAA,EAAW;AAAA,IACT,GAAG,gBAAA,CAAiB,IAAA;AAAA,IACpB,OAAO,MAAA,CAAO,KAAA;AAAA,IACd,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,UAAA,EAAY;AAAA,IACV,OAAO,MAAA,CAAO,OAAA;AAAA,IACd,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY;AAAA,GACd;AAAA,EACA,QAAA,EAAU;AAAA,IACR,UAAA,EAAY,CAAA;AAAA,IACZ,iBAAA,EAAmB;AAAA,GACrB;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,GAAG,gBAAA,CAAiB,KAAA;AAAA,IACpB,OAAO,MAAA,CAAO,KAAA;AAAA,IACd,UAAA,EAAY;AAAA,GACd;AAAA,EACA,QAAA,EAAU;AAAA,IACR,KAAA,EAAO1C,WAAAA;AAAA,IACP,MAAA,EAAQA,WAAAA;AAAA,IACR,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,UAAA,EAAY;AAAA,GACd;AAAA,EACA,WAAA,EAAa;AAAA,IACX,SAAA,EAAW,CAAC,EAAE,MAAA,EAAQ,UAAU;AAAA,GAClC;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,QAAA,EAAU,UAAA;AAAA,IACV,GAAA,EAAK,MAAA;AAAA,IACL,IAAA,EAAM,CAAA;AAAA,IACN,KAAA,EAAO,CAAA;AAAA,IACP,SAAA,EAAW,CAAA;AAAA,IACX,MAAA,EAAQ,EAAA;AAAA,IACR,YAAA,EAAc6B,YAAAA;AAAA,IACd,OAAA,EAAS,EAAA;AAAA,IACT,GAAA,EAAK,CAAA;AAAA,IACL,iBAAiB,MAAA,CAAO,OAAA;AAAA,IACxB,GAAG1C,qBAAS,MAAA,CAAO;AAAA,MACjB,GAAA,EAAK;AAAA,QACH,SAAA,EAAW,CAAA,WAAA,EAAc,MAAA,CAAO,KAAK,CAAA,EAAA;AAAA,OACvC;AAAA,MACA,OAAA,EAAS;AAAA,QACP,SAAA,EAAW;AAAA;AACb,KACD;AAAA,GACH;AAAA,EACA,UAAA,EAAY;AAAA,IACV,SAAA,EAAW;AAAA,GACb;AAAA,EACA,iBAAA,EAAmB;AAAA,IACjB,GAAA,EAAK;AAAA,GACP;AAAA,EACA,SAAA,EAAW;AAAA,IACT,SAAA,EAAW,EAAA;AAAA,IACX,OAAA,EAAS,EAAA;AAAA,IACT,cAAA,EAAgB;AAAA,GAClB;AAAA,EACA,UAAA,EAAY;AAAA,IACV,GAAG,gBAAA,CAAiB,KAAA;AAAA,IACpB,OAAO,MAAA,CAAO;AAAA,GAChB;AAAA,EACA,WAAA,EAAa;AAAA,IACX,MAAA,EAAQ,EAAA;AAAA,IACR,YAAA,EAAcwD,YAAAA;AAAA,IACd,iBAAA,EAAmB,EAAA;AAAA,IACnB,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,GAAA,EAAK,CAAA;AAAA,IACL,iBAAiB,MAAA,CAAO;AAAA,GAC1B;AAAA,EACA,WAAA,EAAa;AAAA,IACX,GAAG,gBAAA,CAAiB,KAAA;AAAA,IACpB,IAAA,EAAM,CAAA;AAAA,IACN,OAAO,MAAA,CAAO,KAAA;AAAA,IACd,eAAA,EAAiB,CAAA;AAAA,IACjB,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,kBAAA,EAAoB;AAAA,IAClB,kBAAA,EAAoB;AAAA,GACtB;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,SAAA,EAAW,EAAA;AAAA,IACX,YAAA,EAAcA,YAAAA;AAAA,IACd,OAAA,EAAS,EAAA;AAAA,IACT,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,GAAA,EAAK;AAAA,GACP;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,UAAA,EAAY;AAAA,GACd;AAAA,EACA,SAAA,EAAW;AAAA,IACT,GAAG,gBAAA,CAAiB,KAAA;AAAA,IACpB,OAAO,MAAA,CAAO,KAAA;AAAA,IACd,IAAA,EAAM;AAAA,GACR;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,GAAG,gBAAA,CAAiB;AAAA;AAExB,CAAC,CAAA;ACvyBD,IAAMT,cAAAA,GAAgB,GAAA;AACtB,IAAM,YAAA,GAAe,GAAA;AACrB,IAAM,YAAA,GAAe,EAAA;AACrB,IAAM,sBAAA,GAAyB,EAAA;AAC/B,IAAM,wBAAA,GAA2B,EAAA;AAGjC,SAASY,mBAAAA,CAAmB;AAAA,EAC1B,QAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAKgB;AACd,EAAA,IAAI,UAAU,OAAO,UAAA;AACrB,EAAA,IAAI,OAAO,OAAO,OAAA;AAClB,EAAA,IAAI,SAAS,OAAO,QAAA;AACpB,EAAA,IAAI,UAAU,OAAO,QAAA;AACrB,EAAA,OAAO,SAAA;AACT;AAEA,SAASC,WAAU,KAAA,EAAiC;AAClD,EAAA,MAAM,IAAA,GAAoB;AAAA,IACxB,aAAa,MAAA,CAAO,OAAA;AAAA,IACpB,iBAAiB,MAAA,CAAO,OAAA;AAAA,IACxB,WAAW,MAAA,CAAO,KAAA;AAAA,IAClB,kBAAkB,MAAA,CAAO,OAAA;AAAA,IACzB,YAAY,MAAA,CAAO,KAAA;AAAA,IACnB,WAAW,MAAA,CAAO;AAAA,GACpB;AAEA,EAAA,QAAQ,KAAA;AAAO,IACb,KAAK,QAAA;AACH,MAAA,OAAO;AAAA,QACL,GAAG,IAAA;AAAA,QACH,aAAa,MAAA,CAAO;AAAA,OACtB;AAAA,IACF,KAAK,OAAA;AACH,MAAA,OAAO;AAAA,QACL,GAAG,IAAA;AAAA,QACH,aAAa,MAAA,CAAO,QAAA;AAAA,QACpB,WAAW,MAAA,CAAO,GAAA;AAAA,QAClB,kBAAkB,MAAA,CAAO,GAAA;AAAA,QACzB,YAAY,MAAA,CAAO,GAAA;AAAA,QACnB,WAAW,MAAA,CAAO;AAAA,OACpB;AAAA,IACF,KAAK,QAAA;AACH,MAAA,OAAO,IAAA;AAAA,IACT,KAAK,UAAA;AACH,MAAA,OAAO;AAAA,QACL,GAAG,IAAA;AAAA,QACH,WAAW,MAAA,CAAO;AAAA,OACpB;AAAA,IACF;AACE,MAAA,OAAO,IAAA;AAAA;AAEb;AAEO,IAAM,QAAA,GAAW3D,gBAAAA,CAA0D,SAAS4D,SAAAA,CACzF;AAAA,EACE,KAAA,GAAQ,OAAA;AAAA,EACR,SAAA,GAAY,IAAA;AAAA,EACZ,IAAA,GAAO,MAAA;AAAA,EACP,QAAA,GAAW,IAAA;AAAA,EACX,WAAA,GAAc,aAAA;AAAA,EACd,QAAA,GAAW,KAAA;AAAA,EACX,KAAA,GAAQ,KAAA;AAAA,EACR,KAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,cAAA;AAAA,EACA,kBAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,YAAA,EACA;AACA,EAAA,MAAM,OAAA,GAAU1D,aAAkC,IAAI,CAAA;AACtD,EAAA,MAAM,QAAA,GAAWA,aAAuC,IAAI,CAAA;AAC5D,EAAA,MAAM,WAAA,GAAcC,cAAQ,MAAM,SAAA,CAAU,UAAU,YAAY,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AACnF,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIC,eAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAIA,cAAAA,CAAS,gBAAgB,EAAE,CAAA;AAE7E,EAAA,MAAM,YAAA,GAAe,OAAO,KAAA,KAAU,QAAA;AACtC,EAAA,MAAM,YAAA,GAAe,eAAe,KAAA,GAAQ,iBAAA;AAC5C,EAAA,MAAM,QAAA,GAAW,aAAa,MAAA,GAAS,CAAA;AAEvC,EAAA,MAAM,cAAcsD,mBAAAA,CAAmB,EAAE,UAAU,KAAA,EAAO,OAAA,EAAS,UAAU,CAAA;AAC7E,EAAA,MAAM,MAAA,GAASC,WAAU,WAAW,CAAA;AACpC,EAAA,MAAM,0BAAA,GAA6B,kBAAA,KAAuB,SAAA,GAAY,MAAA,GAAY,KAAA,CAAA;AAElF,EAAA,oBAAA,CAAqB,SAAS,SAAS,CAAA;AACvC,EAAA,oBAAA,CAAqB,UAAU,cAAc,CAAA;AAE7C,EAAA,uBACE9D,eAAAA,CAACS,gBAAAA,EAAA,EAAK,KAAK,OAAA,EAAS,KAAA,EAAO,CAACK,QAAAA,CAAO,IAAA,EAAM,QAAA,IAAYA,QAAAA,CAAO,QAAA,EAAU,KAAK,CAAA,EACxE,QAAA,EAAA;AAAA,IAAA,SAAA,IAAa,wBACZjB,cAAAA,CAACa,gBAAAA,EAAA,EAAK,OAAO,CAACI,QAAAA,CAAO,KAAA,EAAO,EAAE,OAAO,MAAA,CAAO,UAAA,EAAY,CAAA,EAAI,iBAAM,CAAA,GAChE,IAAA;AAAA,oBAEJjB,cAAAA;AAAA,MAACY,gBAAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO;AAAA,UACLK,QAAAA,CAAO,KAAA;AAAA,UACP;AAAA,YACE,aAAa,MAAA,CAAO,WAAA;AAAA,YACpB,iBAAiB,MAAA,CAAO;AAAA,WAC1B;AAAA,UACA;AAAA,SACF;AAAA,QAEA,QAAA,kBAAAjB,cAAAA;AAAA,UAACuD,qBAAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,WAAA;AAAA,YACJ,GAAG,cAAA;AAAA,YACJ,SAAA,EAAS,IAAA;AAAA,YACT,iBAAA,EAAkB,KAAA;AAAA,YAClB,KAAA,EAAO,eAAe,KAAA,GAAQ,MAAA;AAAA,YAC9B,YAAA,EAAc,eAAe,MAAA,GAAY,YAAA;AAAA,YACzC,UAAU,CAAC,QAAA;AAAA,YACX,WAAA;AAAA,YACA,sBAAsB,MAAA,CAAO,gBAAA;AAAA,YAC7B,YAAA,EAAc,CAAC,IAAA,KAAS;AACtB,cAAA,IAAI,CAAC,YAAA,EAAc,oBAAA,CAAqB,IAAI,CAAA;AAC5C,cAAA,YAAA,GAAe,IAAI,CAAA;AAAA,YACrB,CAAA;AAAA,YACA,OAAA,EAAS,CAAC,KAAA,KAAU;AAClB,cAAA,UAAA,CAAW,IAAI,CAAA;AACf,cAAA,OAAA,GAAU,KAAK,CAAA;AAAA,YACjB,CAAA;AAAA,YACA,MAAA,EAAQ,CAAC,KAAA,KAAU;AACjB,cAAA,UAAA,CAAW,KAAK,CAAA;AAChB,cAAA,MAAA,GAAS,KAAK,CAAA;AAAA,YAChB,CAAA;AAAA,YACA,KAAA,EAAO;AAAA,cACLtC,QAAAA,CAAO,KAAA;AAAA,cACP,kBAAA,CAAmB,KAAA;AAAA,cACnB,EAAE,KAAA,EAAO,MAAA,CAAO,SAAA,EAAU;AAAA,cAC1BZ,oBAAAA,CAAS,EAAA,KAAO,KAAA,GAAQY,QAAAA,CAAO,QAAA,GAAW,IAAA;AAAA,cAC1CZ,oBAAAA,CAAS,EAAA,KAAO,SAAA,GAAYY,QAAAA,CAAO,YAAA,GAAe,IAAA;AAAA,cAClD;AAAA,aACF;AAAA,YACA,kBAAA,EAAoB,0BAAA;AAAA,YACpB,kBAAA,EAAoB,EAAE,QAAA;AAAS;AAAA;AACjC;AAAA,KACF;AAAA,IAEC,YAAY,IAAA,mBACXjB,cAAAA,CAACa,gBAAAA,EAAA,EAAK,KAAA,EAAO,CAACI,QAAAA,CAAO,IAAA,EAAM,EAAE,KAAA,EAAO,MAAA,CAAO,WAAW,CAAA,EAAI,gBAAK,CAAA,GAC7D;AAAA,GAAA,EACN,CAAA;AAEJ,CAAC;AAED,IAAMA,QAAAA,GAASF,uBAAW,MAAA,CAAO;AAAA,EAC/B,IAAA,EAAM;AAAA,IACJ,KAAA,EAAOqC,cAAAA;AAAA,IACP,GAAA,EAAK,CAAA;AAAA,IACL,SAAA,EAAW;AAAA,GACb;AAAA,EACA,QAAA,EAAU;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,KAAA,EAAO;AAAA,IACL,GAAG,kBAAA,CAAmB;AAAA,GACxB;AAAA,EACA,KAAA,EAAO;AAAA,IACL,MAAA,EAAQ,YAAA;AAAA,IACR,YAAA,EAAc,YAAA;AAAA,IACd,WAAA,EAAa,CAAA;AAAA,IACb,UAAA,EAAY,sBAAA;AAAA,IACZ,aAAA,EAAe,sBAAA;AAAA,IACf,WAAA,EAAa,wBAAA;AAAA,IACb,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,CAAA;AAAA,IACN,eAAA,EAAiB,CAAA;AAAA,IACjB,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,QAAA,EAAU;AAAA,IACR,YAAA,EAAc,MAAA;AAAA,IACd,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,kBAAA,EAAoB;AAAA,GACtB;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,GAAG,kBAAA,CAAmB;AAAA;AAE1B,CAAC,CAAA;ACrMD,IAAMe,YAAAA,GAAc,EAAA;AACpB,IAAM,YAAA,GAAe,EAAA;AACrB,IAAM,YAAA,GAAe,EAAA;AACrB,IAAMC,cAAAA,GAAgB,CAAA;AACtB,IAAM,UAAA,GAAa,eAAeA,cAAAA,GAAgB,CAAA;AAClD,IAAM,YAAA,GAAeD,YAAAA,GAAcC,cAAAA,GAAgB,CAAA,GAAI,UAAA;AACvD,IAAMC,mBAAAA,GAAqB,GAAA;AAEpB,IAAM,MAAA,GAAS/D,gBAAAA,CAAwD,SAASgE,OAAAA,CACrF;AAAA,EACE,KAAA;AAAA,EACA,YAAA,GAAe,KAAA;AAAA,EACf,aAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,KAAA;AAAA,EACA,QAAA;AAAA,EACA,kBAAA;AAAA,EACA,KAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA,GAAU,EAAA;AAAA,EACV,GAAG;AACL,CAAA,EACA,YAAA,EACA;AACA,EAAA,MAAM,YAAA,GAAe9D,aAAuC,IAAI,CAAA;AAChE,EAAA,MAAM,YAAA,GAAe,OAAO,KAAA,KAAU,SAAA;AACtC,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAIE,eAAS,YAAY,CAAA;AACvE,EAAA,MAAM,QAAA,GAAW,eAAe,KAAA,GAAQ,iBAAA;AACxC,EAAA,MAAM,eAAe,QAAA,IAAY,KAAA;AACjC,EAAA,MAAM,0BAAA,GACJ,kBAAA,KAAuB,OAAO,YAAA,KAAiB,WAAW,YAAA,GAAe,MAAA,CAAA;AAC3E,EAAA,MAAM,eAAA,GAAkBD,cAAQ,MAAM,SAAA,CAAU,cAAc,YAAY,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAE3F,EAAA,MAAM,QAAA,GAAWD,aAAO,IAAI4B,oBAAAA,CAAS,MAAM,QAAA,GAAW,CAAA,GAAI,CAAC,CAAC,CAAA,CAAE,OAAA;AAE9D,EAAA,oBAAA,CAAqB,cAAc,SAAS,CAAA;AAE5C,EAAAd,gBAAU,MAAM;AACd,IAAAc,oBAAAA,CAAS,OAAO,QAAA,EAAU;AAAA,MACxB,OAAA,EAAS,WAAW,CAAA,GAAI,CAAA;AAAA,MACxB,QAAA,EAAUiC,mBAAAA;AAAA,MACV,MAAA,EAAQhC,kBAAAA,CAAO,GAAA,CAAIA,kBAAAA,CAAO,IAAI,CAAA;AAAA,MAC9B,eAAA,EAAiB;AAAA,KAClB,EAAE,KAAA,EAAM;AAAA,EACX,CAAA,EAAG,CAAC,QAAA,EAAU,QAAQ,CAAC,CAAA;AAEvB,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,IAAI,QAAA,EAAU;AACd,IAAA,MAAM,OAAO,CAAC,QAAA;AACd,IAAA,IAAI,CAAC,YAAA,EAAc,oBAAA,CAAqB,IAAI,CAAA;AAC5C,IAAA,aAAA,GAAgB,IAAI,CAAA;AAAA,EACtB,CAAA;AAEA,EAAA,MAAM,oBAAA,GAAuB,SAAS,WAAA,CAAY;AAAA,IAChD,UAAA,EAAY,CAAC,CAAA,EAAG,CAAC,CAAA;AAAA,IACjB,WAAA,EAAa,CAAC,MAAA,CAAO,OAAA,EAAS,OAAO,OAAO;AAAA,GAC7C,CAAA;AAED,EAAA,MAAM,eAAA,GAAkB,SAAS,WAAA,CAAY;AAAA,IAC3C,UAAA,EAAY,CAAC,CAAA,EAAG,CAAC,CAAA;AAAA,IACjB,WAAA,EAAa,CAAC,CAAA,EAAG,YAAY;AAAA,GAC9B,CAAA;AAED,EAAA,uBACElC,eAAAA;AAAA,IAACW,qBAAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,GAAA,EAAK,eAAA;AAAA,MACL,OAAA,EAAS,WAAA;AAAA,MACT,QAAA;AAAA,MACA,OAAA;AAAA,MACA,iBAAA,EAAkB,QAAA;AAAA,MAClB,kBAAA,EAAoB,0BAAA;AAAA,MACpB,kBAAA,EAAoB,EAAE,OAAA,EAAS,QAAA,EAAU,QAAA,EAAS;AAAA,MAClD,OAAO,CAACG,QAAAA,CAAO,WAAW,QAAA,IAAYA,QAAAA,CAAO,UAAU,KAAK,CAAA;AAAA,MAE5D,QAAA,EAAA;AAAA,wBAAAjB,cAAAA;AAAA,UAACoC,oBAAAA,CAAS,IAAA;AAAA,UAAT;AAAA,YACC,KAAA,EAAO;AAAA,cACLnB,QAAAA,CAAO,KAAA;AAAA,cACP;AAAA,gBACE,eAAA,EAAiB;AAAA;AACnB,aACF;AAAA,YAEA,QAAA,kBAAAjB,cAAAA;AAAA,cAACoC,oBAAAA,CAAS,IAAA;AAAA,cAAT;AAAA,gBACC,KAAA,EAAO;AAAA,kBACLnB,QAAAA,CAAO,KAAA;AAAA,kBACP;AAAA,oBACE,SAAA,EAAW,CAAC,EAAE,UAAA,EAAY,iBAAiB;AAAA;AAC7C;AACF;AAAA;AACF;AAAA,SACF;AAAA,QAEC,YAAA,IAAgB,QAAQ,YAAA,KAAiB,KAAA,GACxC,OAAO,YAAA,KAAiB,QAAA,IAAY,OAAO,YAAA,KAAiB,QAAA,mBAC1DjB,eAACa,gBAAAA,EAAA,EAAK,OAAO,CAACI,QAAAA,CAAO,OAAO,UAAU,CAAA,EAAI,QAAA,EAAA,YAAA,EAAa,CAAA,GAEvD,YAAA,GAEA;AAAA;AAAA;AAAA,GACN;AAEJ,CAAC;AAED,IAAMA,QAAAA,GAASF,uBAAW,MAAA,CAAO;AAAA,EAC/B,SAAA,EAAW;AAAA,IACT,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,SAAA,EAAW,YAAA;AAAA,IACX,GAAA,EAAK;AAAA,GACP;AAAA,EACA,QAAA,EAAU;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,KAAA,EAAO;AAAA,IACL,KAAA,EAAOoD,YAAAA;AAAA,IACP,MAAA,EAAQ,YAAA;AAAA,IACR,YAAA,EAAc,YAAA;AAAA,IACd,OAAA,EAASC,cAAAA;AAAA,IACT,cAAA,EAAgB;AAAA,GAClB;AAAA,EACA,KAAA,EAAO;AAAA,IACL,KAAA,EAAO,UAAA;AAAA,IACP,MAAA,EAAQ,UAAA;AAAA,IACR,cAAc,UAAA,GAAa,CAAA;AAAA,IAC3B,iBAAiB,MAAA,CAAO;AAAA,GAC1B;AAAA,EACA,KAAA,EAAO;AAAA,IACL,GAAG,eAAA,CAAgB,KAAA;AAAA,IACnB,OAAO,MAAA,CAAO;AAAA;AAElB,CAAC,CAAA;AC9JD,IAAM,UAAA,GAAa,CAAA;AACnB,IAAM,cAAA,GAAiB,EAAA;AACvB,IAAM,mBAAmB,KAAA,GAAQ,cAAA;AACjC,IAAM,oBAAoB,KAAA,GAAQ,cAAA;AAClC,IAAM,iBAAiB,CAAA,GAAI,cAAA;AAqB3B,SAASG,OAAM,KAAA,EAAe;AAC5B,EAAA,OAAO,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,GAAA,CAAI,KAAA,EAAO,UAAU,CAAC,CAAA;AAChD;AAEO,IAAM,WAAA,GAAcjE,gBAAAA;AAAA,EACzB,SAASkE,YAAAA,CACP;AAAA,IACE,KAAA;AAAA,IACA,YAAA,GAAe,CAAA;AAAA,IACf,aAAA;AAAA,IACA,SAAA,GAAY,IAAA;AAAA,IACZ,SAAA,GAAY,CAAA;AAAA,IACZ,IAAA,GAAO,EAAA;AAAA,IACP,OAAA;AAAA,IACA,QAAA,GAAW,KAAA;AAAA,IACX,QAAA,GAAW,KAAA;AAAA,IACX,KAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,OAAA,GAAU,CAAA;AAAA,IACV,kBAAA;AAAA,IACA,GAAG;AAAA,KAEL,YAAA,EACA;AACA,IAAA,MAAM,YAAA,GAAehE,aAAkC,IAAI,CAAA;AAC3D,IAAA,MAAM,eAAA,GAAkBC,cAAQ,MAAM,SAAA,CAAU,cAAc,YAAY,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAC3F,IAAA,MAAM,eAAe,KAAA,KAAU,MAAA;AAC/B,IAAA,MAAM,CAAC,mBAAmB,oBAAoB,CAAA,GAAIC,eAAS,MAAM6D,MAAAA,CAAM,YAAY,CAAC,CAAA;AACpF,IAAA,MAAM,aAAA,GAAgBA,MAAAA,CAAM,YAAA,GAAe,KAAA,GAAQ,iBAAiB,CAAA;AACpE,IAAA,MAAM,iBAAA,GAAoB,IAAA,CAAK,KAAA,CAAM,aAAa,CAAA;AAClD,IAAA,MAAM,YAAY,IAAA,GAAO,gBAAA;AACzB,IAAA,MAAM,aAAa,IAAA,GAAO,iBAAA;AAC1B,IAAA,MAAM,eAAA,GAAkB,WAAW,IAAA,GAAO,cAAA;AAC1C,IAAA,MAAM,6BACJ,kBAAA,KAAuB,QAAA,GAAW,GAAG,aAAa,CAAA,QAAA,EAAW,UAAU,CAAA,MAAA,CAAA,GAAW,QAAA,CAAA;AAEpF,IAAA,oBAAA,CAAqB,cAAc,SAAS,CAAA;AAE5C,IAAA,MAAM,WAAA,GAAc,CAAC,SAAA,KAAsB;AACzC,MAAA,IAAI,QAAA,IAAY,cAAc,aAAA,EAAe;AAC7C,MAAA,IAAI,CAAC,YAAA,EAAc,oBAAA,CAAqB,SAAS,CAAA;AACjD,MAAA,aAAA,GAAgB,SAAS,CAAA;AAAA,IAC3B,CAAA;AAEA,IAAA,uBACEpE,eAAAA;AAAA,MAACS,gBAAAA;AAAA,MAAA;AAAA,QACE,GAAG,IAAA;AAAA,QACJ,GAAA,EAAK,eAAA;AAAA,QACL,OAAO,CAACK,QAAAA,CAAO,MAAM,QAAA,IAAYA,QAAAA,CAAO,UAAU,KAAK,CAAA;AAAA,QAEtD,QAAA,EAAA;AAAA,UAAA,SAAA,mBACCjB,cAAAA,CAACa,gBAAAA,EAAA,EAAK,aAAA,EAAe,GAAG,KAAA,EAAO,CAACI,QAAAA,CAAO,KAAA,EAAO,UAAU,CAAA,EACrD,QAAA,EAAA,aAAA,CAAc,OAAA,CAAQ,SAAS,GAClC,CAAA,GACE,IAAA;AAAA,0BAEJjB,cAAAA;AAAA,YAACY,gBAAAA;AAAA,YAAA;AAAA,cACC,iBAAA,EAAmB,WAAW,OAAA,GAAU,YAAA;AAAA,cACxC,kBAAA,EAAoB,0BAAA;AAAA,cACpB,kBAAA,EAAoB,EAAE,QAAA,EAAS;AAAA,cAC/B,OAAO,CAACK,QAAAA,CAAO,OAAO,EAAE,GAAA,EAAK,iBAAiB,CAAA;AAAA,cAE7C,QAAA,EAAA,KAAA,CAAM,KAAK,EAAE,MAAA,EAAQ,YAAW,EAAG,CAAC,GAAG,KAAA,KAAU;AAChD,gBAAA,MAAM,YAAY,KAAA,GAAQ,CAAA;AAC1B,gBAAA,MAAM,aAAa,SAAA,IAAa,iBAAA;AAChC,gBAAA,MAAM,OAAO,UAAA,mBACXjB,cAAAA,CAAC,cAAA,EAAA,EAAe,MAAM,SAAA,EAAW,MAAA,EAAQ,UAAA,EAAY,CAAA,mBAErDA,cAAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAM,SAAA,EAAW,QAAQ,UAAA,EAAY,CAAA;AAEjD,gBAAA,MAAM,SAAA,GAAY,CAACiB,QAAAA,CAAO,QAAA,EAAU,EAAE,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,CAAA;AAEjE,gBAAA,IAAI,QAAA,EAAU;AACZ,kBAAA,uBACEjB,cAAAA,CAACY,gBAAAA,EAAA,EAAqB,KAAA,EAAO,SAAA,EAC1B,kBADQ,SAEX,CAAA;AAAA,gBAEJ;AAEA,gBAAA,uBACEZ,cAAAA;AAAA,kBAACc,qBAAAA;AAAA,kBAAA;AAAA,oBAEC,QAAA;AAAA,oBACA,OAAA;AAAA,oBACA,OAAA,EAAS,MAAM,WAAA,CAAY,SAAS,CAAA;AAAA,oBACpC,iBAAA,EAAkB,OAAA;AAAA,oBAClB,oBAAoB,CAAA,EAAG,SAAS,QAAQ,SAAA,KAAc,CAAA,GAAI,KAAK,GAAG,CAAA,CAAA;AAAA,oBAClE,kBAAA,EAAoB,EAAE,OAAA,EAAS,UAAA,EAAY,QAAA,EAAS;AAAA,oBACpD,KAAA,EAAO,SAAA;AAAA,oBAEN,QAAA,EAAA;AAAA,mBAAA;AAAA,kBATI;AAAA,iBAUP;AAAA,cAEJ,CAAC;AAAA;AAAA;AACH;AAAA;AAAA,KACF;AAAA,EAEJ;AACF;AAEA,IAAMG,QAAAA,GAASF,uBAAW,MAAA,CAAO;AAAA,EAC/B,IAAA,EAAM;AAAA,IACJ,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,QAAA,EAAU,QAAA;AAAA,IACV,SAAA,EAAW,YAAA;AAAA,IACX,GAAA,EAAK;AAAA,GACP;AAAA,EACA,KAAA,EAAO;AAAA,IACL,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY;AAAA,GACd;AAAA,EACA,QAAA,EAAU;AAAA,IACR,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB;AAAA,GAClB;AAAA,EACA,KAAA,EAAO;AAAA,IACL,GAAG,gBAAA;AAAA,IACH,OAAO,MAAA,CAAO;AAAA,GAChB;AAAA,EACA,QAAA,EAAU;AAAA,IACR,OAAA,EAAS;AAAA;AAEb,CAAC,CAAA;ACrID,IAAM0D,WAAAA,GAAa,GAAA;AACnB,IAAM,eAAA,GAAkB,GAAA;AACxB,IAAM,WAAA,GAAc,EAAA;AAEb,IAAM,WAAA,GAAcnE,gBAAAA;AAAA,EACzB,SAASoE,YAAAA,CACP;AAAA,IACE,QAAA;AAAA,IACA,IAAA;AAAA,IACA,WAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,eAAA,GAAkB,CAAA;AAAA,IAClB,gBAAA,GAAmB,GAAA;AAAA,IACnB,aAAA,GAAgB,qEAAA;AAAA,IAChB,aAAA,GAAgB,gCAAA;AAAA,IAChB,gBAAA;AAAA,IACA,KAAA;AAAA,IACA,YAAA;AAAA,IACA,SAAA;AAAA,IACA,GAAG;AAAA,KAEL,YAAA,EACA;AACA,IAAA,MAAM,YAAA,GAAelE,aAAkC,IAAI,CAAA;AAC3D,IAAA,MAAM,eAAA,GAAkBC,cAAQ,MAAM,SAAA,CAAU,cAAc,YAAY,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAC3F,IAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIC,eAAS,KAAK,CAAA;AACpD,IAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,eAAS,KAAK,CAAA;AAC9C,IAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIA,eAAS,KAAK,CAAA;AACxD,IAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,QAAQ,CAAA,IAAK,CAAC,WAAA;AACvC,IAAA,MAAM,gBAAA,GAAmB,KAAA,CAAM,IAAA,CAAK,WAAW,EAAE,MAAA,IAAU,gBAAA;AAE3D,IAAA,oBAAA,CAAqB,cAAc,SAAS,CAAA;AAE5C,IAAAY,gBAAU,MAAM;AACd,MAAA,cAAA,CAAe,KAAK,CAAA;AAAA,IACtB,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAEb,IAAAA,gBAAU,MAAM;AACd,MAAA,WAAA,CAAY,KAAK,CAAA;AACjB,MAAA,gBAAA,CAAiB,KAAK,CAAA;AAAA,IACxB,CAAA,EAAG,CAAC,WAAA,EAAa,gBAAA,EAAkB,eAAe,CAAC,CAAA;AAEnD,IAAA,MAAM,iBAAiB,MAAM;AAC3B,MAAA,MAAM,OAAO,CAAC,QAAA;AACd,MAAA,WAAA,CAAY,IAAI,CAAA;AAChB,MAAA,gBAAA,GAAmB,IAAI,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,uBACEnB,eAAAA,CAACS,gBAAAA,EAAA,EAAM,GAAG,IAAA,EAAM,GAAA,EAAK,eAAA,EAAiB,KAAA,EAAO,CAACK,QAAAA,CAAO,IAAA,EAAM,KAAK,CAAA,EAC9D,QAAA,EAAA;AAAA,sBAAAd,eAAAA,CAACS,gBAAAA,EAAA,EAAK,KAAA,EAAOK,SAAO,MAAA,EAClB,QAAA,EAAA;AAAA,wBAAAjB,eAACY,gBAAAA,EAAA,EAAK,OAAOK,QAAAA,CAAO,MAAA,EACjB,qCACCjB,cAAAA;AAAA,UAACuB,iBAAAA;AAAA,UAAA;AAAA,YACC,MAAA,EAAQ,EAAE,GAAA,EAAK,QAAA,IAAY,MAAA,EAAU;AAAA,YACrC,OAAON,QAAAA,CAAO,WAAA;AAAA,YACd,OAAA,EAAS,MAAM,cAAA,CAAe,IAAI;AAAA;AAAA,SACpC,mBAEAjB,cAAAA,CAAC,QAAA,EAAA,EAAS,MAAM,EAAA,EAAI,KAAA,EAAO,MAAA,CAAO,OAAA,EAAS,CAAA,EAE/C,CAAA;AAAA,wBAEAG,eAAAA,CAACS,gBAAAA,EAAA,EAAK,KAAA,EAAOK,SAAO,QAAA,EAClB,QAAA,EAAA;AAAA,0BAAAjB,cAAAA,CAACa,kBAAA,EAAK,aAAA,EAAe,GAAG,KAAA,EAAOI,QAAAA,CAAO,MACnC,QAAA,EAAA,QAAA,EACH,CAAA;AAAA,0BACAjB,eAACa,gBAAAA,EAAA,EAAK,eAAe,CAAA,EAAG,KAAA,EAAOI,QAAAA,CAAO,IAAA,EACnC,QAAA,EAAA,IAAA,EACH;AAAA,SAAA,EACF,CAAA;AAAA,wBAEAjB,cAAAA,CAAC,WAAA,EAAA,EAAY,KAAA,EAAO,MAAA,EAAQ,UAAQ,IAAA,EAAC,SAAA,EAAW,KAAA,EAAO,IAAA,EAAM,EAAA,EAAI;AAAA,OAAA,EACnE,CAAA;AAAA,sBAEAA,cAAAA;AAAA,QAACa,gBAAAA;AAAA,QAAA;AAAA,UACC,aAAA,EAAe,WAAW,MAAA,GAAY,eAAA;AAAA,UACtC,KAAA,EAAO,CAACI,QAAAA,CAAO,OAAA,EAAS,YAAY,CAAA;AAAA,UAEnC,QAAA,EAAA;AAAA;AAAA,OACH;AAAA,MAEC,mCACCjB,cAAAA;AAAA,QAACc,qBAAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAS,cAAA;AAAA,UACT,iBAAA,EAAkB,QAAA;AAAA,UAClB,kBAAA,EAAoB,EAAE,QAAA,EAAS;AAAA,UAC/B,OAAA,EAAS,CAAA;AAAA,UACT,SAAA,EAAW,MAAM,gBAAA,CAAiB,IAAI,CAAA;AAAA,UACtC,UAAA,EAAY,MAAM,gBAAA,CAAiB,KAAK,CAAA;AAAA,UACxC,OAAOG,QAAAA,CAAO,MAAA;AAAA,UAEd,QAAA,kBAAAjB,cAAAA;AAAA,YAACa,gBAAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO;AAAA,gBACLI,QAAAA,CAAO,UAAA;AAAA,gBACP,YAAYA,QAAAA,CAAO,eAAA;AAAA,gBACnB,aAAA,KACG,QAAA,GAAWA,QAAAA,CAAO,sBAAA,GAAyBA,QAAAA,CAAO,qBAAA;AAAA,eACvD;AAAA,cAEC,qBAAW,aAAA,GAAgB;AAAA;AAAA;AAC9B;AAAA,OACF,GACE;AAAA,KAAA,EACN,CAAA;AAAA,EAEJ;AACF;AAEA,IAAMA,QAAAA,GAASF,uBAAW,MAAA,CAAO;AAAA,EAC/B,IAAA,EAAM;AAAA,IACJ,KAAA,EAAO0D,WAAAA;AAAA,IACP,SAAA,EAAW,eAAA;AAAA,IACX,OAAA,EAAS,EAAA;AAAA,IACT,GAAA,EAAK,EAAA;AAAA,IACL,YAAA,EAAc,EAAA;AAAA,IACd,iBAAiB,MAAA,CAAO;AAAA,GAC1B;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,GAAA,EAAK;AAAA,GACP;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,WAAA;AAAA,IACP,MAAA,EAAQ,WAAA;AAAA,IACR,UAAA,EAAY,CAAA;AAAA,IACZ,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,QAAA,EAAU,QAAA;AAAA,IACV,cAAc,WAAA,GAAc,CAAA;AAAA,IAC5B,iBAAiB,MAAA,CAAO;AAAA,GAC1B;AAAA,EACA,WAAA,EAAa;AAAA,IACX,KAAA,EAAO,WAAA;AAAA,IACP,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,QAAA,EAAU;AAAA,IACR,QAAA,EAAU,CAAA;AAAA,IACV,IAAA,EAAM,CAAA;AAAA,IACN,GAAA,EAAK;AAAA,GACP;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,GAAG,qBAAA,CAAsB,IAAA;AAAA,IACzB,OAAO,MAAA,CAAO;AAAA,GAChB;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,GAAG,qBAAA,CAAsB,IAAA;AAAA,IACzB,OAAO,MAAA,CAAO;AAAA,GAChB;AAAA,EACA,OAAA,EAAS;AAAA,IACP,GAAG,qBAAA,CAAsB,OAAA;AAAA,IACzB,OAAO,MAAA,CAAO;AAAA,GAChB;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,SAAA,EAAW,YAAA;AAAA,IACX,SAAA,EAAW,MAAA;AAAA,IACX,SAAA,EAAW,EAAA;AAAA,IACX,cAAA,EAAgB;AAAA,GAClB;AAAA,EACA,UAAA,EAAY;AAAA,IACV,GAAG,qBAAA,CAAsB,MAAA;AAAA,IACzB,OAAO,MAAA,CAAO;AAAA,GAChB;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,OAAO,MAAA,CAAO;AAAA,GAChB;AAAA,EACA,qBAAA,EAAuB;AAAA,IACrB,OAAO,MAAA,CAAO;AAAA,GAChB;AAAA,EACA,sBAAA,EAAwB;AAAA,IACtB,OAAO,MAAA,CAAO;AAAA;AAElB,CAAC,CAAA;;;AC3MD,SAAS,SAAS,KAAA,EAAe;AAC/B,EAAA,MAAM,CAAC,WAAA,EAAa,YAAA,GAAe,GAAG,IAAI,IAAA,CAAK,GAAA,CAAI,KAAK,CAAA,CAAE,QAAA,EAAS,CAAE,WAAA,EAAY,CAAE,MAAM,GAAG,CAAA;AAC5F,EAAA,MAAM,GAAG,QAAA,GAAW,EAAE,CAAA,GAAI,WAAA,CAAY,MAAM,GAAG,CAAA;AAC/C,EAAA,OAAO,KAAK,GAAA,CAAI,CAAA,EAAG,SAAS,MAAA,GAAS,MAAA,CAAO,YAAY,CAAC,CAAA;AAC3D;AAEO,SAAS,YAAA,CAAa,KAAA,EAAe,GAAA,EAAa,GAAA,EAAa,IAAA,EAAc;AAClF,EAAA,MAAM,OAAA,GAAU,KAAK,GAAA,CAAI,GAAA,EAAK,KAAK,GAAA,CAAI,GAAA,EAAK,KAAK,CAAC,CAAA;AAClD,EAAA,MAAM,UAAU,GAAA,GAAM,IAAA,CAAK,OAAO,OAAA,GAAU,GAAA,IAAO,IAAI,CAAA,GAAI,IAAA;AAC3D,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,IAAA,CAAK,GAAA,CAAI,QAAA,CAAS,GAAG,CAAA,EAAG,QAAA,CAAS,IAAI,CAAC,CAAC,CAAA;AACtE,EAAA,OAAO,MAAA,CAAO,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,OAAO,CAAC,CAAA,CAAE,OAAA,CAAQ,SAAS,CAAC,CAAA;AACxE;AAEO,SAAS,eAAA,CAAgB,KAAA,EAAe,GAAA,EAAa,GAAA,EAAa;AACvE,EAAA,OAAO,KAAK,GAAA,CAAI,GAAA,EAAK,KAAK,GAAA,CAAI,GAAA,EAAK,KAAK,CAAC,CAAA;AAC3C;AAEO,SAAS,cAAA,CAAe,KAAA,EAAe,KAAA,EAAe,IAAA,EAAc;AACzE,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,KAAK,CAAA,GAAI,IAAI,CAAA,GAAI,IAAA,CAAK,IAAA,CAAK,KAAK,CAAA;AAClE,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,IAAA,CAAK,GAAA,CAAI,QAAA,CAAS,KAAK,CAAA,EAAG,QAAA,CAAS,IAAI,CAAC,CAAC,CAAA;AACxE,EAAA,OAAO,QAAQ,KAAA,GAAQ,KAAA,GAAQ,IAAA,EAAM,OAAA,CAAQ,SAAS,CAAC,CAAA;AACzD;AAEO,SAAS,eAAA,CACd,OACA,UAAA,EACkB;AAClB,EAAA,IAAI,CAAC,KAAA,CAAM,IAAA,IAAQ,OAAO,EAAE,MAAM,OAAA,EAAQ;AAE1C,EAAA,MAAM,MAAA,GAAS,WAAW,KAAK,CAAA;AAC/B,EAAA,IAAI,MAAA,KAAW,MAAA,IAAa,CAAC,MAAA,CAAO,QAAA,CAAS,MAAM,CAAA,EAAG,OAAO,EAAE,IAAA,EAAM,SAAA,EAAU;AAE/E,EAAA,OAAO,EAAE,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,MAAA,EAAO;AACxC;AAEO,SAAS,mBAAA,CAAoB,KAAA,EAAmB,GAAA,EAAa,GAAA,EAAyB;AAC3F,EAAA,MAAM,IAAA,GACJ,OAAO,KAAA,CAAM,IAAA,KAAS,YAAY,MAAA,CAAO,QAAA,CAAS,KAAA,CAAM,IAAI,IACxD,eAAA,CAAgB,KAAA,CAAM,IAAA,EAAM,GAAA,EAAK,GAAG,CAAA,GACpC,MAAA;AACN,EAAA,MAAM,EAAA,GACJ,OAAO,KAAA,CAAM,EAAA,KAAO,YAAY,MAAA,CAAO,QAAA,CAAS,KAAA,CAAM,EAAE,IACpD,eAAA,CAAgB,KAAA,CAAM,EAAA,EAAI,GAAA,EAAK,GAAG,CAAA,GAClC,MAAA;AAEN,EAAA,IAAI,IAAA,KAAS,MAAA,IAAa,EAAA,KAAO,MAAA,IAAa,OAAO,EAAA,EAAI;AACvD,IAAA,OAAO,EAAE,IAAA,EAAM,EAAA,EAAI,EAAA,EAAI,IAAA,EAAK;AAAA,EAC9B;AAEA,EAAA,OAAO,EAAE,MAAM,EAAA,EAAG;AACpB;ACpBA,IAAMrB,cAAAA,GAAgB,GAAA;AACtB,IAAMuB,aAAAA,GAAe,CAAA;AACrB,IAAM,sBAAA,GAAyB,EAAA;AAC/B,IAAMC,WAAAA,GAAa,EAAA;AACnB,IAAM,WAAA,GAAc,GAAA;AASpB,SAAS,kBAAkB,KAAA,EAAe;AACxC,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,OAAA,CAAQ,QAAA,EAAU,EAAE,CAAA;AAC7C,EAAA,IAAI,CAAC,YAAY,OAAO,MAAA;AACxB,EAAA,MAAM,MAAA,GAAS,OAAO,UAAU,CAAA;AAChC,EAAA,OAAO,MAAA,CAAO,QAAA,CAAS,MAAM,CAAA,GAAI,MAAA,GAAS,MAAA;AAC5C;AAEA,SAAS,WAAA,CAAY,GAAe,CAAA,EAAe;AACjD,EAAA,OAAO,EAAE,IAAA,KAAS,CAAA,CAAE,IAAA,IAAQ,CAAA,CAAE,OAAO,CAAA,CAAE,EAAA;AACzC;AAEO,IAAM,KAAA,GAAQtE,gBAAAA,CAAkD,SAASuE,MAAAA,CAC9E;AAAA,EACE,GAAA,GAAM,CAAA;AAAA,EACN,GAAA,GAAM,GAAA;AAAA,EACN,IAAA,GAAO,CAAA;AAAA,EACP,KAAA;AAAA,EACA,eAAe,EAAC;AAAA,EAChB,aAAA;AAAA,EACA,eAAA,GAAkB,gCAAA;AAAA,EAClB,aAAA,GAAgB,gCAAA;AAAA,EAChB,QAAA,GAAW,QAAA;AAAA,EACX,sBAAA,GAAyB,eAAA;AAAA,EACzB,oBAAA,GAAuB,aAAA;AAAA,EACvB,QAAA,GAAW,KAAA;AAAA,EACX,WAAA,GAAc,MAAA;AAAA,EACd,UAAA,GAAa,iBAAA;AAAA,EACb,KAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,YAAA,EACA;AACA,EAAA,MAAM,OAAA,GAAUrE,aAAkC,IAAI,CAAA;AACtD,EAAA,MAAM,YAAA,GAAeA,aAAkC,IAAI,CAAA;AAC3D,EAAA,MAAM,UAAA,GAAaA,aAAkC,IAAI,CAAA;AACzD,EAAA,MAAM,UAAA,GAAaC,cAAQ,MAAM,SAAA,CAAU,SAAS,YAAY,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AACjF,EAAA,MAAM,UAAA,GAAa,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,GAAG,CAAA;AACpC,EAAA,MAAM,UAAA,GAAa,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,GAAG,CAAA;AACpC,EAAA,MAAM,WAAW,MAAA,CAAO,QAAA,CAAS,IAAI,CAAA,IAAK,IAAA,GAAO,IAAI,IAAA,GAAO,CAAA;AAC5D,EAAA,MAAM,eAAe,KAAA,KAAU,MAAA;AAC/B,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAIC,cAAAA;AAAA,IAAS,MACzD,mBAAA,CAAoB,YAAA,EAAc,UAAA,EAAY,UAAU;AAAA,GAC1D;AACA,EAAA,MAAM,aAAA,GAAgB,mBAAA;AAAA,IACpB,eAAe,KAAA,GAAQ,iBAAA;AAAA,IACvB,UAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,MAAM,cAAA,GAAiBF,aAAO,aAAa,CAAA;AAC3C,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIE,eAAS0C,cAAa,CAAA;AAC1D,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI1C,cAAAA;AAAA,IAChC,cAAc,IAAA,KAAS,MAAA,GAAY,EAAA,GAAK,WAAA,CAAY,cAAc,IAAI;AAAA,GACxE;AACA,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,cAAAA;AAAA,IAC5B,cAAc,EAAA,KAAO,MAAA,GAAY,EAAA,GAAK,WAAA,CAAY,cAAc,EAAE;AAAA,GACpE;AACA,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,eAA+B,IAAI,CAAA;AAC3E,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,eAA+B,IAAI,CAAA;AAC3E,EAAA,MAAM,eAAeF,YAAAA,CAAO,EAAE,MAAM,UAAA,EAAY,EAAA,EAAI,YAAY,CAAA;AAChE,EAAA,MAAM,mBAAA,GAAsBA,aAA6B,IAAI,CAAA;AAC7D,EAAA,MAAM,cAAA,GAAiBA,aAMb,IAAI,CAAA;AAEd,EAAA,oBAAA,CAAqB,OAAA,EAAS,SAAA,EAAW,IAAA,EAAK,IAAK,MAAS,CAAA;AAE5D,EAAAc,gBAAU,MAAM;AACd,IAAA,IAAI,iBAAiB,MAAA,EAAQ;AAC3B,MAAA,YAAA,CAAa,cAAc,IAAA,KAAS,MAAA,GAAY,KAAK,WAAA,CAAY,aAAA,CAAc,IAAI,CAAC,CAAA;AAAA,IACtF;AAAA,EACF,GAAG,CAAC,YAAA,EAAc,WAAA,EAAa,aAAA,CAAc,IAAI,CAAC,CAAA;AAElD,EAAAA,gBAAU,MAAM;AACd,IAAA,IAAI,iBAAiB,IAAA,EAAM;AACzB,MAAA,UAAA,CAAW,cAAc,EAAA,KAAO,MAAA,GAAY,KAAK,WAAA,CAAY,aAAA,CAAc,EAAE,CAAC,CAAA;AAAA,IAChF;AAAA,EACF,GAAG,CAAC,YAAA,EAAc,WAAA,EAAa,aAAA,CAAc,EAAE,CAAC,CAAA;AAEhD,EAAAA,gBAAU,MAAM;AACd,IAAA,MAAM,YAAY,EAAE,IAAA,EAAM,cAAc,IAAA,EAAM,EAAA,EAAI,cAAc,EAAA,EAAG;AACnE,IAAA,MAAM,yBAAA,GAA4B,CAAC,WAAA,CAAY,SAAA,EAAW,eAAe,OAAO,CAAA;AAChF,IAAA,cAAA,CAAe,OAAA,GAAU,SAAA;AAEzB,IAAA,IAAI,CAAC,yBAAA,EAA2B;AAChC,IAAA,IAAI,iBAAiB,MAAA,EAAQ;AAC3B,MAAA,YAAA,CAAa,UAAU,IAAA,KAAS,MAAA,GAAY,KAAK,WAAA,CAAY,SAAA,CAAU,IAAI,CAAC,CAAA;AAAA,IAC9E;AACA,IAAA,IAAI,iBAAiB,IAAA,EAAM;AACzB,MAAA,UAAA,CAAW,UAAU,EAAA,KAAO,MAAA,GAAY,KAAK,WAAA,CAAY,SAAA,CAAU,EAAE,CAAC,CAAA;AAAA,IACxE;AAAA,EACF,CAAA,EAAG,CAAC,YAAA,EAAc,WAAA,EAAa,cAAc,IAAA,EAAM,aAAA,CAAc,EAAE,CAAC,CAAA;AAEpE,EAAAA,gBAAU,MAAM;AACd,IAAA,IAAI,YAAA,EAAc;AAClB,IAAA,oBAAA,CAAqB,CAAC,OAAA,KAAY;AAChC,MAAA,MAAM,UAAA,GAAa,mBAAA,CAAoB,OAAA,EAAS,UAAA,EAAY,UAAU,CAAA;AACtE,MAAA,OAAO,WAAA,CAAY,OAAA,EAAS,UAAU,CAAA,GAAI,OAAA,GAAU,UAAA;AAAA,IACtD,CAAC,CAAA;AAAA,EACH,CAAA,EAAG,CAAC,YAAA,EAAc,UAAA,EAAY,UAAU,CAAC,CAAA;AAEzC,EAAA,MAAM,SAAA,GAAYD,iBAAAA;AAAA,IAChB,CAAC,SAAA,KAA0B;AACzB,MAAA,MAAM,UAAA,GAAa,mBAAA,CAAoB,SAAA,EAAW,UAAA,EAAY,UAAU,CAAA;AACxE,MAAA,IAAI,WAAA,CAAY,UAAA,EAAY,cAAA,CAAe,OAAO,CAAA,EAAG;AACrD,MAAA,cAAA,CAAe,OAAA,GAAU,UAAA;AACzB,MAAA,IAAI,CAAC,YAAA,EAAc,oBAAA,CAAqB,UAAU,CAAA;AAClD,MAAA,aAAA,GAAgB,UAAU,CAAA;AAAA,IAC5B,CAAA;AAAA,IACA,CAAC,YAAA,EAAc,UAAA,EAAY,aAAA,EAAe,UAAU;AAAA,GACtD;AAEA,EAAA,MAAM,UAAA,GAAaA,iBAAAA;AAAA,IACjB,CAAC,IAAA,KAA6B;AAC5B,MAAA,MAAM,UAAU,cAAA,CAAe,OAAA;AAC/B,MAAA,MAAM,OAAA,GAAU,QAAQ,EAAA,IAAM,UAAA;AAC9B,MAAA,MAAM,OAAA,GACJ,SAAS,MAAA,GAAY,MAAA,GAAY,aAAa,IAAA,EAAM,UAAA,EAAY,YAAY,QAAQ,CAAA;AACtF,MAAA,SAAA,CAAU;AAAA,QACR,GAAG,OAAA;AAAA,QACH,MAAM,OAAA,KAAY,MAAA,GAAY,SAAY,eAAA,CAAgB,OAAA,EAAS,YAAY,OAAO;AAAA,OACvF,CAAA;AAAA,IACH,CAAA;AAAA,IACA,CAAC,SAAA,EAAW,UAAA,EAAY,QAAA,EAAU,UAAU;AAAA,GAC9C;AAEA,EAAA,MAAM,QAAA,GAAWA,iBAAAA;AAAA,IACf,CAAC,IAAA,KAA6B;AAC5B,MAAA,MAAM,UAAU,cAAA,CAAe,OAAA;AAC/B,MAAA,MAAM,OAAA,GAAU,QAAQ,IAAA,IAAQ,UAAA;AAChC,MAAA,MAAM,OAAA,GACJ,SAAS,MAAA,GAAY,MAAA,GAAY,aAAa,IAAA,EAAM,UAAA,EAAY,YAAY,QAAQ,CAAA;AACtF,MAAA,SAAA,CAAU;AAAA,QACR,GAAG,OAAA;AAAA,QACH,IAAI,OAAA,KAAY,MAAA,GAAY,SAAY,eAAA,CAAgB,OAAA,EAAS,SAAS,UAAU;AAAA,OACrF,CAAA;AAAA,IACH,CAAA;AAAA,IACA,CAAC,SAAA,EAAW,UAAA,EAAY,QAAA,EAAU,UAAU;AAAA,GAC9C;AAEA,EAAA,MAAM,eAAA,GAAkBA,iBAAAA;AAAA,IACtB,CAAC,IAAA,KAA6B;AAC5B,MAAA,MAAM,UAAU,cAAA,CAAe,OAAA;AAC/B,MAAA,MAAM,OAAA,GAAU,QAAQ,EAAA,IAAM,UAAA;AAC9B,MAAA,SAAA,CAAU;AAAA,QACR,GAAG,OAAA;AAAA,QACH,MAAM,IAAA,KAAS,MAAA,GAAY,SAAY,eAAA,CAAgB,IAAA,EAAM,YAAY,OAAO;AAAA,OACjF,CAAA;AAAA,IACH,CAAA;AAAA,IACA,CAAC,SAAA,EAAW,UAAA,EAAY,UAAU;AAAA,GACpC;AAEA,EAAA,MAAM,aAAA,GAAgBA,iBAAAA;AAAA,IACpB,CAAC,IAAA,KAA6B;AAC5B,MAAA,MAAM,UAAU,cAAA,CAAe,OAAA;AAC/B,MAAA,MAAM,OAAA,GAAU,QAAQ,IAAA,IAAQ,UAAA;AAChC,MAAA,SAAA,CAAU;AAAA,QACR,GAAG,OAAA;AAAA,QACH,IAAI,IAAA,KAAS,MAAA,GAAY,SAAY,eAAA,CAAgB,IAAA,EAAM,SAAS,UAAU;AAAA,OAC/E,CAAA;AAAA,IACH,CAAA;AAAA,IACA,CAAC,SAAA,EAAW,UAAA,EAAY,UAAU;AAAA,GACpC;AAEA,EAAA,MAAM,OAAO,UAAA,GAAa,UAAA;AAC1B,EAAA,MAAM,cAAc,IAAA,CAAK,GAAA,CAAI,GAAG,UAAA,GAAa,sBAAA,GAAyB,IAAIuD,WAAU,CAAA;AACpF,EAAA,MAAM,aAAA,GAAgB,cAAc,IAAA,IAAQ,UAAA;AAC5C,EAAA,MAAM,WAAA,GAAc,cAAc,EAAA,IAAM,UAAA;AACxC,EAAA,MAAM,aAAA,GAAgBvD,iBAAAA;AAAA,IACpB,CAAC,IAAA,KAAkB,IAAA,KAAS,IAAI,CAAA,GAAA,CAAM,IAAA,GAAO,cAAc,IAAA,GAAQ,WAAA;AAAA,IACnE,CAAC,UAAA,EAAY,IAAA,EAAM,WAAW;AAAA,GAChC;AACA,EAAA,MAAM,YAAA,GAAeA,iBAAAA;AAAA,IACnB,CAAC,UAAmB,WAAA,KAAgB,CAAA,IAAK,SAAS,CAAA,GAAI,CAAA,GAAK,QAAQ,WAAA,GAAe,IAAA;AAAA,IAClF,CAAC,MAAM,WAAW;AAAA,GACpB;AACA,EAAA,MAAM,UAAA,GAAa,cAAc,aAAa,CAAA;AAC9C,EAAA,MAAM,QAAA,GAAW,cAAc,WAAW,CAAA;AAE1C,EAAA,MAAM,gBAAA,GAAmBZ,aAAAA;AAAA,IACvB,MACEqE,yBAAa,MAAA,CAAO;AAAA,MAClB,4BAAA,EAA8B,MAAM,CAAC,QAAA;AAAA,MACrC,2BAAA,EAA6B,MAAM,CAAC,QAAA;AAAA,MACpC,qBAAqB,MAAM;AACzB,QAAA,YAAA,CAAa,OAAA,GAAU,EAAE,IAAA,EAAM,aAAA,EAAe,IAAI,WAAA,EAAY;AAC9D,QAAA,mBAAA,CAAoB,OAAA,GAAU,aAAA,KAAkB,WAAA,GAAc,IAAA,GAAO,MAAA;AAAA,MACvE,CAAA;AAAA,MACA,kBAAA,EAAoB,CAAC,CAAA,EAAG,OAAA,KAAY;AAClC,QAAA,IAAI,CAAC,mBAAA,CAAoB,OAAA,IAAW,OAAA,CAAQ,OAAO,CAAA,EAAG;AACpD,UAAA,mBAAA,CAAoB,OAAA,GAAU,OAAA,CAAQ,EAAA,GAAK,CAAA,GAAI,MAAA,GAAS,IAAA;AAAA,QAC1D;AACA,QAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,OAAA,CAAQ,EAAE,CAAA;AACrC,QAAA,IAAI,mBAAA,CAAoB,YAAY,IAAA,EAAM;AACxC,UAAA,aAAA,CAAc,eAAe,YAAA,CAAa,OAAA,CAAQ,EAAA,EAAI,KAAA,EAAO,QAAQ,CAAC,CAAA;AAAA,QACxE,CAAA,MAAA,IAAW,mBAAA,CAAoB,OAAA,KAAY,MAAA,EAAQ;AACjD,UAAA,eAAA,CAAgB,eAAe,YAAA,CAAa,OAAA,CAAQ,IAAA,EAAM,KAAA,EAAO,QAAQ,CAAC,CAAA;AAAA,QAC5E;AAAA,MACF,CAAA;AAAA,MACA,uBAAuB,MAAM;AAC3B,QAAA,mBAAA,CAAoB,OAAA,GAAU,IAAA;AAAA,MAChC,CAAA;AAAA,MACA,yBAAyB,MAAM;AAC7B,QAAA,mBAAA,CAAoB,OAAA,GAAU,IAAA;AAAA,MAChC;AAAA,KACD,CAAA;AAAA,IACH,CAAC,YAAA,EAAc,QAAA,EAAU,eAAe,WAAA,EAAa,QAAA,EAAU,iBAAiB,aAAa;AAAA,GAC/F;AAEA,EAAA,MAAM,cAAA,GAAiBrE,aAAAA;AAAA,IACrB,MACEqE,yBAAa,MAAA,CAAO;AAAA,MAClB,4BAAA,EAA8B,MAAM,CAAC,QAAA;AAAA,MACrC,2BAAA,EAA6B,MAAM,CAAC,QAAA;AAAA,MACpC,qBAAqB,MAAM;AACzB,QAAA,YAAA,CAAa,OAAA,GAAU,EAAE,IAAA,EAAM,aAAA,EAAe,IAAI,WAAA,EAAY;AAC9D,QAAA,mBAAA,CAAoB,OAAA,GAAU,aAAA,KAAkB,WAAA,GAAc,IAAA,GAAO,IAAA;AAAA,MACvE,CAAA;AAAA,MACA,kBAAA,EAAoB,CAAC,CAAA,EAAG,OAAA,KAAY;AAClC,QAAA,IAAI,CAAC,mBAAA,CAAoB,OAAA,IAAW,OAAA,CAAQ,OAAO,CAAA,EAAG;AACpD,UAAA,mBAAA,CAAoB,OAAA,GAAU,OAAA,CAAQ,EAAA,GAAK,CAAA,GAAI,MAAA,GAAS,IAAA;AAAA,QAC1D;AACA,QAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,OAAA,CAAQ,EAAE,CAAA;AACrC,QAAA,IAAI,mBAAA,CAAoB,YAAY,MAAA,EAAQ;AAC1C,UAAA,eAAA,CAAgB,eAAe,YAAA,CAAa,OAAA,CAAQ,IAAA,EAAM,KAAA,EAAO,QAAQ,CAAC,CAAA;AAAA,QAC5E,CAAA,MAAA,IAAW,mBAAA,CAAoB,OAAA,KAAY,IAAA,EAAM;AAC/C,UAAA,aAAA,CAAc,eAAe,YAAA,CAAa,OAAA,CAAQ,EAAA,EAAI,KAAA,EAAO,QAAQ,CAAC,CAAA;AAAA,QACxE;AAAA,MACF,CAAA;AAAA,MACA,uBAAuB,MAAM;AAC3B,QAAA,mBAAA,CAAoB,OAAA,GAAU,IAAA;AAAA,MAChC,CAAA;AAAA,MACA,yBAAyB,MAAM;AAC7B,QAAA,mBAAA,CAAoB,OAAA,GAAU,IAAA;AAAA,MAChC;AAAA,KACD,CAAA;AAAA,IACH,CAAC,YAAA,EAAc,QAAA,EAAU,eAAe,WAAA,EAAa,QAAA,EAAU,iBAAiB,aAAa;AAAA,GAC/F;AAEA,EAAA,MAAM,gBAAA,GAAmB,CAAC,MAAA,EAAuB,YAAA,EAAsB,KAAA,KAAwB;AAC7F,IAAA,IAAI,QAAA,EAAU;AACd,IAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,IAAA,MAAM,SAAA,GAAY,MAAM,WAAA,CAAY,SAAA;AACpC,IAAA,MAAM,OAAO,KAAA,CAAM,aAAA;AAInB,IAAA,IAAA,CAAK,KAAA,IAAQ;AACb,IAAA,IAAA,CAAK,oBAAoB,SAAS,CAAA;AAClC,IAAA,cAAA,CAAe,OAAA,GAAU;AAAA,MACvB,MAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA,EAAY,MAAM,WAAA,CAAY,KAAA;AAAA,MAC9B,UAAA,EAAY,YAAA;AAAA,MACZ,YAAY,aAAA,KAAkB;AAAA,KAChC;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,eAAA,GAAkB,CAAC,KAAA,KAAwB;AAC/C,IAAA,MAAM,OAAO,cAAA,CAAe,OAAA;AAC5B,IAAA,IAAI,CAAC,IAAA,IAAQ,IAAA,CAAK,SAAA,KAAc,KAAA,CAAM,YAAY,SAAA,EAAW;AAC7D,IAAA,MAAM,MAAA,GAAS,KAAA,CAAM,WAAA,CAAY,KAAA,GAAQ,IAAA,CAAK,UAAA;AAC9C,IAAA,MAAM,YAAY,cAAA,CAAe,IAAA,CAAK,YAAY,YAAA,CAAa,MAAM,GAAG,QAAQ,CAAA;AAChF,IAAA,IAAI,IAAA,CAAK,UAAA,IAAc,MAAA,KAAW,CAAA,EAAG;AACnC,MAAA,IAAA,CAAK,MAAA,GAAS,MAAA,GAAS,CAAA,GAAI,MAAA,GAAS,IAAA;AACpC,MAAA,IAAA,CAAK,UAAA,GAAa,KAAA;AAAA,IACpB;AACA,IAAA,MAAM,SAAS,IAAA,CAAK,MAAA;AACpB,IAAA,IAAI,MAAA,KAAW,MAAA,EAAQ,eAAA,CAAgB,SAAS,CAAA;AAAA,uBAC7B,SAAS,CAAA;AAAA,EAC9B,CAAA;AAEA,EAAA,MAAM,cAAA,GAAiB,CAAC,KAAA,KAAwB;AAC9C,IAAA,MAAM,OAAO,cAAA,CAAe,OAAA;AAC5B,IAAA,IAAI,CAAC,IAAA,IAAQ,IAAA,CAAK,SAAA,KAAc,KAAA,CAAM,YAAY,SAAA,EAAW;AAC7D,IAAA,MAAM,OAAO,KAAA,CAAM,aAAA;AAInB,IAAA,IAAI,IAAA,CAAK,oBAAoB,IAAA,CAAK,SAAS,GAAG,IAAA,CAAK,qBAAA,GAAwB,KAAK,SAAS,CAAA;AACzF,IAAA,cAAA,CAAe,OAAA,GAAU,IAAA;AAAA,EAC3B,CAAA;AAEA,EAAA,MAAM,yBAAA,GAA4B,CAChC,KAAA,EACA,OAAA,EACA,MAAA,KACG;AACH,IAAA,IAAI,QAAA,EAAU;AACd,IAAA,IAAI,MAAM,WAAA,CAAY,UAAA,KAAe,WAAA,EAAa,MAAA,CAAO,UAAU,QAAQ,CAAA;AAC3E,IAAA,IAAI,MAAM,WAAA,CAAY,UAAA,KAAe,WAAA,EAAa,MAAA,CAAO,UAAU,QAAQ,CAAA;AAAA,EAC7E,CAAA;AAEA,EAAA,MAAM,mBAAmB,CACvB,KAAA,EACA,OAAA,EACA,OAAA,EACA,SACA,MAAA,KACG;AACH,IAAA,IAAI,QAAA,EAAU;AAEd,IAAA,MAAM,GAAA,GAAM,KAAA,CAAM,WAAA,EAAa,GAAA,IAAO,KAAA,CAAM,GAAA;AAC5C,IAAA,IAAI,SAAA;AAEJ,IAAA,IAAI,GAAA,KAAQ,YAAA,IAAgB,GAAA,KAAQ,SAAA,cAAuB,OAAA,GAAU,QAAA;AACrE,IAAA,IAAI,GAAA,KAAQ,WAAA,IAAe,GAAA,KAAQ,WAAA,cAAyB,OAAA,GAAU,QAAA;AACtE,IAAA,IAAI,GAAA,KAAQ,QAAQ,SAAA,GAAY,OAAA;AAChC,IAAA,IAAI,GAAA,KAAQ,OAAO,SAAA,GAAY,OAAA;AAE/B,IAAA,IAAI,cAAc,MAAA,EAAW;AAC7B,IAAA,KAAA,CAAM,cAAA,EAAe;AACrB,IAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,IAAA,MAAA,CAAO,SAAS,CAAA;AAAA,EAClB,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,CAAC,KAAA,EAAe,MAAA,KAAgD;AAClF,IAAA,MAAM,MAAA,GAAS,eAAA,CAAgB,KAAA,EAAO,UAAU,CAAA;AAChD,IAAA,IAAI,MAAA,CAAO,IAAA,KAAS,OAAA,EAAS,MAAA,CAAO,MAAS,CAAA;AAC7C,IAAA,IAAI,MAAA,CAAO,IAAA,KAAS,OAAA,EAAS,MAAA,CAAO,OAAO,KAAK,CAAA;AAAA,EAClD,CAAA;AAEA,EAAA,MAAM,eAAA,GAAkB,CAAC,KAAA,KAAkB;AACzC,IAAA,YAAA,CAAa,KAAK,CAAA;AAClB,IAAA,MAAM,MAAA,GAAS,eAAA,CAAgB,KAAA,EAAO,UAAU,CAAA;AAChD,IAAA,IAAI,MAAA,CAAO,IAAA,KAAS,OAAA,EAAS,eAAA,CAAgB,MAAS,CAAA;AACtD,IAAA,IAAI,MAAA,CAAO,IAAA,KAAS,OAAA,EAAS,eAAA,CAAgB,OAAO,KAAK,CAAA;AAAA,EAC3D,CAAA;AAEA,EAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAkB;AACvC,IAAA,UAAA,CAAW,KAAK,CAAA;AAChB,IAAA,MAAM,MAAA,GAAS,eAAA,CAAgB,KAAA,EAAO,UAAU,CAAA;AAChD,IAAA,IAAI,MAAA,CAAO,IAAA,KAAS,OAAA,EAAS,aAAA,CAAc,MAAS,CAAA;AACpD,IAAA,IAAI,MAAA,CAAO,IAAA,KAAS,OAAA,EAAS,aAAA,CAAc,OAAO,KAAK,CAAA;AAAA,EACzD,CAAA;AAEA,EAAA,MAAM,aAAA,GAAgB,CAAC,MAAA,KAA0B;AAC/C,IAAA,IAAIzE,oBAAAA,CAAS,OAAO,KAAA,EAAO;AAC3B,IAAA,MAAM,IAAA,GAAQ,MAAA,KAAW,MAAA,GAAS,YAAA,CAAa,UAAU,UAAA,CAAW,OAAA;AAGpE,IAAA,IAAA,EAAM,KAAA,IAAQ;AAAA,EAChB,CAAA;AAEA,EAAA,MAAM,sBAAA,GAAyB,CAAC,SAAA,KAAsB;AACpD,IAAA,IAAI,QAAA,IAAY,WAAA,KAAgB,CAAA,IAAK,IAAA,KAAS,CAAA,EAAG;AAEjD,IAAA,MAAM,SAAS,IAAA,CAAK,GAAA;AAAA,MAClB,WAAA;AAAA,MACA,KAAK,GAAA,CAAI,CAAA,EAAG,SAAA,GAAY,sBAAA,GAAyBuE,cAAa,CAAC;AAAA,KACjE;AACA,IAAA,MAAM,SAAA,GAAY,YAAA;AAAA,MAChB,UAAA,GAAc,SAAS,WAAA,GAAe,IAAA;AAAA,MACtC,UAAA;AAAA,MACA,UAAA;AAAA,MACA;AAAA,KACF;AAEA,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,GAAA,CAAI,SAAA,GAAY,aAAa,CAAA;AACvD,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,GAAA,CAAI,SAAA,GAAY,WAAW,CAAA;AAEnD,IAAA,IAAI,aAAA,KAAkB,WAAA,IAAe,YAAA,KAAiB,UAAA,EAAY;AAChE,MAAA,IAAI,YAAY,aAAA,EAAe;AAC7B,QAAA,aAAA,CAAc,MAAM,CAAA;AACpB,QAAA,UAAA,CAAW,SAAS,CAAA;AAAA,MACtB;AACA,MAAA,IAAI,YAAY,WAAA,EAAa;AAC3B,QAAA,aAAA,CAAc,IAAI,CAAA;AAClB,QAAA,QAAA,CAAS,SAAS,CAAA;AAAA,MACpB;AAAA,IACF,CAAA,MAAA,IAAW,gBAAgB,UAAA,EAAY;AACrC,MAAA,aAAA,CAAc,MAAM,CAAA;AACpB,MAAA,UAAA,CAAW,SAAS,CAAA;AAAA,IACtB,CAAA,MAAO;AACL,MAAA,aAAA,CAAc,IAAI,CAAA;AAClB,MAAA,QAAA,CAAS,SAAS,CAAA;AAAA,IACpB;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,gBAAA,GAAmB,CAAC,KAAA,KAAiC;AACzD,IAAA,sBAAA,CAAuB,KAAA,CAAM,YAAY,SAAS,CAAA;AAAA,EACpD,CAAA;AAEA,EAAA,MAAM,iBAAA,GAAoB,CAAC,KAAA,KAA6B;AACtD,IAAA,aAAA,CAAc,KAAA,CAAM,WAAA,CAAY,MAAA,CAAO,KAAK,CAAA;AAAA,EAC9C,CAAA;AAEA,EAAA,MAAM,aAAA,GAAgB,CAAA,EAAG,WAAA,CAAY,aAAa,CAAC,GAAG,QAAA,GAAW,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAA,GAAK,EAAE,CAAA,CAAA;AACpF,EAAA,MAAM,WAAA,GAAc,CAAA,EAAG,WAAA,CAAY,WAAW,CAAC,GAAG,QAAA,GAAW,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAA,GAAK,EAAE,CAAA,CAAA;AAEhF,EAAA,uBACEzE,eAAAA;AAAA,IAACS,gBAAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,GAAA,EAAK,UAAA;AAAA,MACL,QAAA;AAAA,MACA,OAAO,CAACK,QAAAA,CAAO,MAAM,QAAA,IAAYA,QAAAA,CAAO,UAAU,KAAK,CAAA;AAAA,MAGvD,QAAA,EAAA;AAAA,wBAAAd,eAAAA;AAAA,UAACW,qBAAAA;AAAA,UAAA;AAAA,YACC,UAAA,EAAY,KAAA;AAAA,YACZ,QAAA;AAAA,YACA,SAAA,EAAW,KAAA;AAAA,YACX,QAAA,EAAU,iBAAA;AAAA,YACV,aAAA,EACET,oBAAAA,CAAS,EAAA,KAAO,KAAA,GACZ,CAAC,KAAA,KAAU;AACT,cAAA,KAAA,CAAM,cAAA,EAAe;AACrB,cAAA,sBAAA,CAAuB,KAAA,CAAM,YAAY,OAAO,CAAA;AAAA,YAClD,CAAA,GACA,MAAA;AAAA,YAEN,OAAA,EAASA,oBAAAA,CAAS,EAAA,KAAO,KAAA,GAAQ,MAAA,GAAY,gBAAA;AAAA,YAC7C,OAAOY,QAAAA,CAAO,WAAA;AAAA,YACd,QAAA,EAAU,EAAA;AAAA,YAEV,QAAA,EAAA;AAAA,8BAAAjB,eAACY,gBAAAA,EAAA,EAAK,eAAc,MAAA,EAAO,KAAA,EAAOK,SAAO,KAAA,EAAO,CAAA;AAAA,8BAChDjB,cAAAA;AAAA,gBAACY,gBAAAA;AAAA,gBAAA;AAAA,kBACC,aAAA,EAAc,MAAA;AAAA,kBACd,KAAA,EAAO;AAAA,oBACLK,QAAAA,CAAO,WAAA;AAAA,oBACP;AAAA,sBACE,MAAM,sBAAA,GAAyB,UAAA;AAAA,sBAC/B,KAAA,EAAO,WAAW,UAAA,GAAa2D;AAAA;AACjC;AACF;AAAA,eACF;AAAA,8BAEA5E,cAAAA;AAAA,gBAACY,gBAAAA;AAAA,gBAAA;AAAA,kBACC,GAAA,EAAK,YAAA;AAAA,kBACJ,GAAIP,oBAAAA,CAAS,EAAA,KAAO,KAAA,GACjB;AAAA,oBACE,eAAA,EAAiB,cAAA;AAAA,oBACjB,eAAe,CAAC,KAAA,KACd,gBAAA,CAAiB,MAAA,EAAQ,eAAe,KAAK,CAAA;AAAA,oBAC/C,oBAAA,EAAsB,cAAA;AAAA,oBACtB,aAAA,EAAe,eAAA;AAAA,oBACf,WAAA,EAAa,cAAA;AAAA,oBACb,MAAA,EAAQ,MAAM,eAAA,CAAgB,IAAI,CAAA;AAAA,oBAClC,OAAA,EAAS,MAAM,eAAA,CAAgB,MAAM,CAAA;AAAA,oBACrC,SAAA,EAAW,CAAC,KAAA,KACV,gBAAA,CAAiB,OAAO,aAAA,EAAe,UAAA,EAAY,aAAa,eAAe;AAAA,sBAEnF,gBAAA,CAAiB,WAAA;AAAA,kBACrB,eAAA,EAAe,QAAA;AAAA,kBACf,eAAA,EAAe,WAAA;AAAA,kBACf,eAAA,EAAe,UAAA;AAAA,kBACf,eAAA,EAAe,aAAA;AAAA,kBACf,gBAAA,EAAgB,aAAA;AAAA,kBAChB,UAAA,EAAU,IAAA;AAAA,kBACV,oBAAA,EAAsB,CAAC,EAAE,IAAA,EAAM,aAAY,EAAG,EAAE,IAAA,EAAM,WAAA,EAAa,CAAA;AAAA,kBACnE,kBAAA,EAAoB,sBAAA;AAAA,kBACpB,iBAAA,EAAkB,YAAA;AAAA,kBAClB,kBAAA,EAAoB,EAAE,QAAA,EAAS;AAAA,kBAC/B,kBAAA,EAAoB;AAAA,oBAClB,GAAA,EAAK,UAAA;AAAA,oBACL,GAAA,EAAK,WAAA;AAAA,oBACL,GAAA,EAAK,aAAA;AAAA,oBACL,IAAA,EAAM;AAAA,mBACR;AAAA,kBACA,WAAW,CAAC,QAAA;AAAA,kBACZ,uBAAuB,CAAC,KAAA,KACtB,yBAAA,CAA0B,KAAA,EAAO,eAAe,eAAe,CAAA;AAAA,kBAEjE,aAAA,EAAe,WAAW,MAAA,GAAS,MAAA;AAAA,kBACnC,KAAA,EAAO;AAAA,oBACLY,QAAAA,CAAO,KAAA;AAAA,oBACPZ,oBAAAA,CAAS,EAAA,KAAO,KAAA,IAASY,QAAAA,CAAO,QAAA;AAAA,oBAChC,YAAA,KAAiB,MAAA,IAAUZ,oBAAAA,CAAS,EAAA,KAAO,SAASY,QAAAA,CAAO,eAAA;AAAA,oBAC3D,EAAE,IAAA,EAAM,sBAAA,GAAyB,UAAA;AAAW,mBAC9C;AAAA,kBACA,QAAA,EAAU,WAAW,EAAA,GAAK;AAAA;AAAA,eAC5B;AAAA,8BACAjB,cAAAA;AAAA,gBAACY,gBAAAA;AAAA,gBAAA;AAAA,kBACC,GAAA,EAAK,UAAA;AAAA,kBACJ,GAAIP,oBAAAA,CAAS,EAAA,KAAO,KAAA,GACjB;AAAA,oBACE,eAAA,EAAiB,cAAA;AAAA,oBACjB,eAAe,CAAC,KAAA,KAAwB,gBAAA,CAAiB,IAAA,EAAM,aAAa,KAAK,CAAA;AAAA,oBACjF,oBAAA,EAAsB,cAAA;AAAA,oBACtB,aAAA,EAAe,eAAA;AAAA,oBACf,WAAA,EAAa,cAAA;AAAA,oBACb,MAAA,EAAQ,MAAM,eAAA,CAAgB,IAAI,CAAA;AAAA,oBAClC,OAAA,EAAS,MAAM,eAAA,CAAgB,IAAI,CAAA;AAAA,oBACnC,SAAA,EAAW,CAAC,KAAA,KACV,gBAAA,CAAiB,OAAO,WAAA,EAAa,aAAA,EAAe,YAAY,aAAa;AAAA,sBAEjF,cAAA,CAAe,WAAA;AAAA,kBACnB,eAAA,EAAe,QAAA;AAAA,kBACf,eAAA,EAAe,UAAA;AAAA,kBACf,eAAA,EAAe,aAAA;AAAA,kBACf,eAAA,EAAe,WAAA;AAAA,kBACf,gBAAA,EAAgB,WAAA;AAAA,kBAChB,UAAA,EAAU,IAAA;AAAA,kBACV,oBAAA,EAAsB,CAAC,EAAE,IAAA,EAAM,aAAY,EAAG,EAAE,IAAA,EAAM,WAAA,EAAa,CAAA;AAAA,kBACnE,kBAAA,EAAoB,oBAAA;AAAA,kBACpB,iBAAA,EAAkB,YAAA;AAAA,kBAClB,kBAAA,EAAoB,EAAE,QAAA,EAAS;AAAA,kBAC/B,kBAAA,EAAoB;AAAA,oBAClB,GAAA,EAAK,aAAA;AAAA,oBACL,GAAA,EAAK,UAAA;AAAA,oBACL,GAAA,EAAK,WAAA;AAAA,oBACL,IAAA,EAAM;AAAA,mBACR;AAAA,kBACA,WAAW,CAAC,QAAA;AAAA,kBACZ,uBAAuB,CAAC,KAAA,KACtB,yBAAA,CAA0B,KAAA,EAAO,aAAa,aAAa,CAAA;AAAA,kBAE7D,aAAA,EAAe,WAAW,MAAA,GAAS,MAAA;AAAA,kBACnC,KAAA,EAAO;AAAA,oBACLY,QAAAA,CAAO,KAAA;AAAA,oBACPZ,oBAAAA,CAAS,EAAA,KAAO,KAAA,IAASY,QAAAA,CAAO,QAAA;AAAA,oBAChC,YAAA,KAAiB,IAAA,IAAQZ,oBAAAA,CAAS,EAAA,KAAO,SAASY,QAAAA,CAAO,eAAA;AAAA,oBACzD,EAAE,IAAA,EAAM,sBAAA,GAAyB,QAAA;AAAS,mBAC5C;AAAA,kBACA,QAAA,EAAU,WAAW,EAAA,GAAK;AAAA;AAAA;AAC5B;AAAA;AAAA,SACF;AAAA,wBAEAd,eAAAA,CAACS,gBAAAA,EAAA,EAAK,KAAA,EAAOK,SAAO,MAAA,EAClB,QAAA,EAAA;AAAA,0BAAAjB,cAAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,kBAAA,EAAoB,sBAAA;AAAA,cACpB,QAAA;AAAA,cACA,QAAA;AAAA,cACA,SAAS,YAAA,KAAiB,MAAA;AAAA,cAC1B,YAAA,EAAc,eAAA;AAAA,cACd,UAAU,MAAM;AACd,gBAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,gBAAA,WAAA,CAAY,WAAW,eAAe,CAAA;AAAA,cACxC,CAAA;AAAA,cACA,OAAA,EAAS,MAAM,eAAA,CAAgB,MAAM,CAAA;AAAA,cACrC,WAAA,EAAa,eAAA;AAAA,cACb,KAAA,EAAO;AAAA;AAAA,WACT;AAAA,0BACAA,cAAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,kBAAA,EAAoB,oBAAA;AAAA,cACpB,QAAA;AAAA,cACA,QAAA;AAAA,cACA,SAAS,YAAA,KAAiB,IAAA;AAAA,cAC1B,YAAA,EAAc,aAAA;AAAA,cACd,UAAU,MAAM;AACd,gBAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,gBAAA,WAAA,CAAY,SAAS,aAAa,CAAA;AAAA,cACpC,CAAA;AAAA,cACA,OAAA,EAAS,MAAM,eAAA,CAAgB,IAAI,CAAA;AAAA,cACnC,WAAA,EAAa,aAAA;AAAA,cACb,KAAA,EAAO;AAAA;AAAA;AACT,SAAA,EACF;AAAA;AAAA;AAAA,GACF;AAEJ,CAAC;AAED,SAAS,UAAA,CAAW;AAAA,EAClB,kBAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA,EAUG;AACD,EAAA,uBACEG,eAAAA,CAACS,gBAAAA,EAAA,EAAK,KAAA,EAAO,CAACK,QAAAA,CAAO,UAAA,EAAY,OAAA,IAAWA,QAAAA,CAAO,iBAAiB,CAAA,EAClE,QAAA,EAAA;AAAA,oBAAAjB,cAAAA;AAAA,MAACuD,qBAAAA;AAAA,MAAA;AAAA,QACC,eAAA,EAAe,QAAA;AAAA,QACf,kBAAA;AAAA,QACA,kBAAA,EAAoB,EAAE,QAAA,EAAS;AAAA,QAC/B,UAAU,CAAC,QAAA;AAAA,QACX,SAAA,EAAU,SAAA;AAAA,QACV,MAAA,EAAQ,QAAA;AAAA,QACR,YAAA;AAAA,QACA,OAAA;AAAA,QACA,eAAA,EAAiB,QAAA;AAAA,QACjB,WAAA;AAAA,QACA,sBAAsB,MAAA,CAAO,OAAA;AAAA,QAC7B,aAAA,EAAc,MAAA;AAAA,QACd,KAAA,EAAO,CAACtC,QAAAA,CAAO,KAAA,EAAOZ,qBAAS,EAAA,KAAO,KAAA,IAASY,SAAO,QAAQ,CAAA;AAAA,QAC9D,QAAA,EAAU,WAAW,EAAA,GAAK,MAAA;AAAA,QAC1B;AAAA;AAAA,KACF;AAAA,oBACAjB,cAAAA,CAACY,gBAAAA,EAAA,EAAK,OAAOK,QAAAA,CAAO,YAAA,EAClB,QAAA,kBAAAjB,cAAAA,CAACa,kBAAA,EAAK,KAAA,EAAOI,QAAAA,CAAO,QAAA,EAAW,oBAAS,CAAA,EAC1C;AAAA,GAAA,EACF,CAAA;AAEJ;AAEA,IAAMA,QAAAA,GAASF,uBAAW,MAAA,CAAO;AAAA,EAC/B,IAAA,EAAM;AAAA,IACJ,KAAA,EAAOqC,cAAAA;AAAA,IACP,GAAA,EAAK,EAAA;AAAA,IACL,SAAA,EAAW;AAAA,GACb;AAAA,EACA,QAAA,EAAU;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,WAAA,EAAa;AAAA,IACX,KAAA,EAAO,MAAA;AAAA,IACP,MAAA,EAAQwB,WAAAA;AAAA,IACR,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,KAAA,EAAO;AAAA,IACL,QAAA,EAAU,UAAA;AAAA,IACV,GAAA,EAAK,CAAA;AAAA,IACL,IAAA,EAAM,CAAA;AAAA,IACN,KAAA,EAAO,MAAA;AAAA,IACP,MAAA,EAAQD,aAAAA;AAAA,IACR,YAAA,EAAc,EAAA;AAAA,IACd,iBAAiB,MAAA,CAAO;AAAA,GAC1B;AAAA,EACA,WAAA,EAAa;AAAA,IACX,QAAA,EAAU,UAAA;AAAA,IACV,GAAA,EAAK,CAAA;AAAA,IACL,MAAA,EAAQA,aAAAA;AAAA,IACR,YAAA,EAAc,EAAA;AAAA,IACd,iBAAiB,MAAA,CAAO;AAAA,GAC1B;AAAA,EACA,KAAA,EAAO;AAAA,IACL,QAAA,EAAU,UAAA;AAAA,IACV,GAAA,EAAK,CAAA;AAAA,IACL,KAAA,EAAOC,WAAAA;AAAA,IACP,MAAA,EAAQA,WAAAA;AAAA,IACR,YAAA,EAAc,EAAA;AAAA,IACd,WAAA,EAAa,CAAA;AAAA,IACb,aAAa,MAAA,CAAO,OAAA;AAAA,IACpB,iBAAiB,MAAA,CAAO;AAAA,GAC1B;AAAA,EACA,QAAA,EAAU;AAAA,IACR,MAAA,EAAQ,MAAA;AAAA,IACR,WAAA,EAAa;AAAA,GACf;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,cAAc,MAAA,CAAO,KAAA;AAAA,IACrB,aAAA,EAAe,CAAA;AAAA,IACf,YAAA,EAAc,OAAA;AAAA,IACd,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,MAAA;AAAA,IACP,MAAA,EAAQ,EAAA;AAAA,IACR,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB;AAAA,GAClB;AAAA,EACA,UAAA,EAAY;AAAA,IACV,KAAA,EAAO,WAAA;AAAA,IACP,MAAA,EAAQ,EAAA;AAAA,IACR,eAAA,EAAiB,EAAA;AAAA,IACjB,iBAAA,EAAmB,EAAA;AAAA,IACnB,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,GAAA,EAAK,EAAA;AAAA,IACL,WAAA,EAAa,CAAA;AAAA,IACb,aAAa,MAAA,CAAO,OAAA;AAAA,IACpB,YAAA,EAAc,EAAA;AAAA,IACd,iBAAiB,MAAA,CAAO;AAAA,GAC1B;AAAA,EACA,iBAAA,EAAmB;AAAA,IACjB,aAAa,MAAA,CAAO;AAAA,GACtB;AAAA,EACA,KAAA,EAAO;AAAA,IACL,QAAA,EAAU,CAAA;AAAA,IACV,IAAA,EAAM,CAAA;AAAA,IACN,MAAA,EAAQ,CAAA;AAAA,IACR,OAAA,EAAS,CAAA;AAAA,IACT,YAAY,KAAA,CAAM,IAAA;AAAA,IAClB,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,UAAA,EAAY,EAAA;AAAA,IACZ,aAAA,EAAe,IAAA;AAAA,IACf,OAAO,MAAA,CAAO;AAAA,GAChB;AAAA,EACA,QAAA,EAAU;AAAA,IACR,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,KAAA,EAAO,EAAA;AAAA,IACP,MAAA,EAAQ,EAAA;AAAA,IACR,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,UAAA,EAAY;AAAA,GACd;AAAA,EACA,QAAA,EAAU;AAAA,IACR,YAAY,KAAA,CAAM,IAAA;AAAA,IAClB,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,UAAA,EAAY,EAAA;AAAA,IACZ,OAAO,MAAA,CAAO;AAAA;AAElB,CAAC,CAAA","file":"index.cjs","sourcesContent":["/** Arrow_Right_MD path — 20×20 viewBox. */\nexport const ARROW_RIGHT_PATH = \"M4.16667 10H15.8333M15.8333 10L10 4.16667M15.8333 10L10 15.8333\";\n","export const grey = {\n \"0\": \"#767676\",\n \"0.5\": \"#6E6E6E\",\n \"1\": \"#666666\",\n \"1.5\": \"#5E5E5E\",\n \"2\": \"#565656\",\n \"3\": \"#474747\",\n \"4\": \"#373737\",\n \"5\": \"#272727\",\n \"6\": \"#1F1F1F\",\n \"7\": \"#171717\",\n \"7.5\": \"#161616\",\n \"8\": \"#101010\",\n \"8.5\": \"#0C0C0C\",\n \"9\": \"#080808\",\n \"9.5\": \"#040404\",\n} as const;\n\nexport type GreyStep = keyof typeof grey;\n\nexport const colors = {\n primary: \"#B46436\",\n black: \"#000000\",\n white: \"#ffffff\",\n whiteAlpha86: \"#FFFFFFDB\",\n whiteAlpha60: \"#FFFFFF99\",\n whiteAlpha40: \"#FFFFFF66\",\n whiteAlpha20: \"#FFFFFF33\",\n whiteAlpha6: \"#FFFFFF0F\",\n whiteAlpha10: \"#FFFFFF1A\",\n whiteAlpha5: \"#FFFFFF0D\",\n dark: \"#090909\",\n red: \"#A63E3E\",\n lightGrey: \"#B7B7B7\",\n green: \"#34A853\",\n greenMuted: \"#34A85329\",\n primaryMuted: \"#B464360F\",\n primaryHover: \"#B4643633\",\n redMuted: \"#A63E3E0F\",\n redHover: \"#A63E3E33\",\n greyMuted: \"#76767629\",\n cancelledMuted: \"#A63E3E29\",\n\n grey0: grey[\"0\"],\n grey50: grey[\"0.5\"],\n grey100: grey[\"1\"],\n grey150: grey[\"1.5\"],\n grey200: grey[\"2\"],\n grey300: grey[\"3\"],\n grey400: grey[\"4\"],\n grey500: grey[\"5\"],\n grey600: grey[\"6\"],\n grey650: \"#1B1B1B\",\n grey700: grey[\"7\"],\n grey750: grey[\"7.5\"],\n grey800: grey[\"8\"],\n grey850: grey[\"8.5\"],\n grey900: grey[\"9\"],\n grey950: grey[\"9.5\"],\n} as const;\n","export const fonts = {\n sans: \"Noto Sans Armenian\",\n} as const;\n\n/** Button label — SemiBold, line-height 100%, letter-spacing 3%. */\nexport const buttonTypography = {\n lg: {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"600\" as const,\n lineHeight: 14,\n letterSpacing: 0.42,\n },\n sm: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"600\" as const,\n lineHeight: 12,\n letterSpacing: 0.36,\n },\n} as const;\n\n/** Badge label — Regular 14, line-height 112%, letter-spacing 0. */\nexport const badgeTypography = {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"400\" as const,\n lineHeight: 16,\n letterSpacing: 0,\n} as const;\n\n/** Stat card label — Medium 16, line-height 100%, letter-spacing 0. */\nexport const statCardTypography = {\n fontFamily: fonts.sans,\n fontSize: 16,\n fontWeight: \"500\" as const,\n lineHeight: 16,\n letterSpacing: 0,\n} as const;\n\n/** Segmented toggle label — Medium 12, 14px line-height, letter-spacing 0. */\nexport const segmentedToggleTypography = {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"500\" as const,\n lineHeight: 14,\n letterSpacing: 0,\n} as const;\n\n/** Language switcher trigger and option labels — SemiBold 14. */\nexport const languageSwitcherTypography = {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"600\" as const,\n lineHeight: 19,\n letterSpacing: 0,\n} as const;\n\n/** Counter value — Bold 14, line-height 100%, letter-spacing 0. */\nexport const counterTypography = {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"700\" as const,\n lineHeight: 14,\n letterSpacing: 0,\n} as const;\n\n/** Rating score — Bold 32, line-height 112%, letter-spacing 0. */\nexport const ratingTypography = {\n fontFamily: fonts.sans,\n fontSize: 32,\n fontWeight: \"700\" as const,\n lineHeight: 35.84,\n letterSpacing: 0,\n} as const;\n\n/** Comment card identity, body, and action typography. */\nexport const commentCardTypography = {\n name: {\n fontFamily: fonts.sans,\n fontSize: 16,\n fontWeight: \"600\" as const,\n lineHeight: 18,\n letterSpacing: 0,\n },\n date: {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"400\" as const,\n lineHeight: 16,\n letterSpacing: 0,\n },\n comment: {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"400\" as const,\n lineHeight: 19,\n letterSpacing: 0,\n },\n action: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"700\" as const,\n lineHeight: 12,\n letterSpacing: 0,\n },\n} as const;\n\n/** Input label / field / hint typography. */\nexport const inputTypography = {\n label: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"500\" as const,\n lineHeight: 12,\n letterSpacing: 0.36,\n },\n field: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"400\" as const,\n lineHeight: 12,\n letterSpacing: 0.36,\n },\n hint: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"400\" as const,\n lineHeight: 12,\n letterSpacing: 0.36,\n },\n} as const;\n\n/** Select label / field / hint typography — Medium/Regular 12, letter-spacing 3%. */\nexport const selectTypography = {\n label: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"500\" as const,\n lineHeight: 12,\n letterSpacing: 0.36,\n },\n field: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"400\" as const,\n lineHeight: 12,\n letterSpacing: 0.36,\n },\n hint: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"400\" as const,\n lineHeight: 12,\n letterSpacing: 0.36,\n },\n} as const;\n\n/** Avatar name / email / menu-item typography — 100% line-height, 0 letter-spacing. */\nexport const avatarTypography = {\n name: {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"600\" as const,\n lineHeight: 14,\n letterSpacing: 0,\n },\n email: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"400\" as const,\n lineHeight: 12,\n letterSpacing: 0,\n },\n menuItem: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"600\" as const,\n lineHeight: 12,\n letterSpacing: 0,\n },\n} as const;\n\n/**\n * DatePicker typography — trigger field text plus the calendar-panel type\n * (month heading, weekday header, day-cell numbers). No label/hint chrome —\n * the Figma trigger is a standalone field. Figma didn't spec the month\n * heading / day-cell number sizes, so those reuse the existing type scale\n * for visual consistency with the rest of the kit.\n */\nexport const datePickerTypography = {\n field: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"400\" as const,\n lineHeight: 14,\n letterSpacing: 0.36,\n },\n rangeLabel: {\n fontFamily: fonts.sans,\n fontSize: 13,\n fontWeight: \"500\" as const,\n lineHeight: 13,\n letterSpacing: 0,\n },\n rangeDate: {\n fontFamily: fonts.sans,\n fontSize: 16,\n fontWeight: \"500\" as const,\n lineHeight: 16,\n letterSpacing: 0,\n },\n rangeTime: {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"400\" as const,\n lineHeight: 14,\n letterSpacing: 0,\n },\n /** Calendar month/year heading — Bold, centered, White. */\n monthHeading: {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"700\" as const,\n lineHeight: 14,\n letterSpacing: 0,\n },\n /** Weekday header (ԵՐ, ԵՔ, ...) — Regular, uppercase, centered, Grey/300. */\n weekday: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"400\" as const,\n lineHeight: 12,\n letterSpacing: 0,\n },\n day: {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"400\" as const,\n lineHeight: 14,\n letterSpacing: 0,\n },\n} as const;\n\n/** Textarea label / field / hint typography — Medium/Regular 12, letter-spacing 3%. */\nexport const textareaTypography = {\n label: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"500\" as const,\n lineHeight: 12,\n letterSpacing: 0.36,\n },\n field: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"400\" as const,\n lineHeight: 12,\n letterSpacing: 0.36,\n },\n hint: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"400\" as const,\n lineHeight: 12,\n letterSpacing: 0.36,\n },\n} as const;\n","import Svg, { Path } from \"react-native-svg\";\nimport { ARROW_RIGHT_PATH } from \"./arrowRightPath\";\nimport { colors } from \"../../theme\";\n\nexport { ARROW_RIGHT_PATH } from \"./arrowRightPath\";\n\ninterface ArrowRightIconProps {\n size?: number;\n color?: string;\n strokeWidth?: number;\n}\n\n/** Native — react-native-svg (peer dependency). */\nexport function ArrowRightIcon({\n size = 20,\n color = colors.primary,\n strokeWidth = 2,\n}: ArrowRightIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={ARROW_RIGHT_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Alert triangle — viewBox 0 0 16 16. */\nexport const ALERT_TRIANGLE_PATH =\n \"M8.00049 6.00015V8.66682M8.00049 11.3335H8.00715M7.07737 2.59464L1.59411 12.0657C1.28997 12.591 1.1379 12.8537 1.16038 13.0693C1.17998 13.2573 1.2785 13.4282 1.4314 13.5394C1.60671 13.6668 1.91022 13.6668 2.51723 13.6668H13.4837C14.0908 13.6668 14.3943 13.6668 14.5696 13.5394C14.7225 13.4282 14.821 13.2573 14.8406 13.0693C14.8631 12.8537 14.711 12.591 14.4069 12.0657L8.92361 2.59463C8.62056 2.07119 8.46904 1.80947 8.27135 1.72157C8.09892 1.64489 7.90206 1.64489 7.72962 1.72157C7.53194 1.80947 7.38041 2.07119 7.07737 2.59464Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport type { IconProps } from \"../types\";\nimport { ALERT_TRIANGLE_PATH } from \"./alertTrianglePath\";\n\nexport function AlertTriangleIcon({ size = 16, color = \"#E38E5E\", strokeWidth = 1.5 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={ALERT_TRIANGLE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\nexport { ALERT_TRIANGLE_PATH } from \"./alertTrianglePath\";\n","export const APPLE_PATHS = [\n \"M20.8806 15.9539C20.8958 14.804 21.2087 13.6766 21.7901 12.6765C22.3715 11.6763 23.2026 10.8361 24.206 10.2338C23.5685 9.34496 22.7276 8.6135 21.7499 8.0975C20.7723 7.58149 19.6849 7.29515 18.574 7.26122C16.2044 7.01838 13.9072 8.64554 12.6997 8.64554C11.4688 8.64554 9.6097 7.28533 7.6077 7.32554C6.31276 7.36638 5.05074 7.73402 3.9446 8.39262C2.83847 9.05123 1.92593 9.97834 1.29592 11.0836C-1.4331 15.6966 0.602506 22.4762 3.21673 26.205C4.52469 28.0309 6.0533 30.0704 8.05349 29.9981C10.0108 29.9189 10.7418 28.7796 13.1044 28.7796C15.4451 28.7796 16.1309 29.9981 18.1717 29.9521C20.272 29.9189 21.5953 28.1181 22.8573 26.275C23.7971 24.9739 24.5203 23.536 25 22.0145C23.7798 21.5107 22.7385 20.6673 22.006 19.5895C21.2734 18.5118 20.882 17.2474 20.8806 15.9539Z\",\n \"M17.0261 4.80891C18.1712 3.46678 18.7354 1.74169 18.5988 0C16.8492 0.179399 15.2332 0.995745 14.0725 2.28638C13.5051 2.91689 13.0705 3.65041 12.7935 4.44501C12.5166 5.2396 12.4028 6.07969 12.4586 6.91725C13.3337 6.92605 14.1994 6.74087 14.9906 6.37567C15.7817 6.01047 16.4777 5.47477 17.0261 4.80891Z\",\n] as const;\n\nexport const GOOGLE_PLAY_PATHS = [\n {\n color: \"#A63E3E\",\n d: \"M12.2558 14.3271L0.111816 27.5074C0.112957 27.5097 0.112957 27.5132 0.114097 27.5156C0.487075 28.9467 1.76455 30 3.28156 30C3.88836 30 4.45752 29.832 4.9457 29.5381L4.98448 29.5148L18.6535 21.4491L12.2558 14.3271Z\",\n },\n {\n color: \"#FBBC04\",\n d: \"M24.5415 12.0827L24.5301 12.0746L18.6286 8.57654L11.98 14.6267L18.6525 21.4478L24.5221 17.9847C25.5509 17.4155 26.2501 16.3063 26.2501 15.0279C26.2501 13.7565 25.5612 12.6531 24.5415 12.0827Z\",\n },\n {\n color: \"#4285F4\",\n d: \"M0.111779 2.49162C0.0387806 2.76689 0 3.05616 0 3.35476V26.6454C0 26.944 0.0387806 27.2333 0.11292 27.5074L12.6733 14.6642L0.111779 2.49162Z\",\n },\n {\n color: \"#34A853\",\n d: \"M12.3459 14.9999L18.6307 8.57419L4.97764 0.479377C4.48147 0.174946 3.90205 -1.23978e-05 3.2827 -1.23978e-05C1.76569 -1.23978e-05 0.485934 1.05558 0.112956 2.48792C0.112956 2.48908 0.111816 2.49025 0.111816 2.49142L12.3459 14.9999Z\",\n },\n] as const;\n","import Svg, { Path } from \"react-native-svg\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\nimport { APPLE_PATHS, GOOGLE_PLAY_PATHS } from \"./storeMarkPaths\";\n\nexport function AppleIcon({ size = 30, color = colors.white }: IconProps) {\n return (\n <Svg width={(size * 25) / 30} height={size} viewBox=\"0 0 25 30\" fill=\"none\">\n {APPLE_PATHS.map((path) => (\n <Path key={path} d={path} fill={color} />\n ))}\n </Svg>\n );\n}\n\nexport function GooglePlayIcon({ size = 30 }: IconProps) {\n return (\n <Svg width={(size * 27) / 30} height={size} viewBox=\"0 0 27 30\" fill=\"none\">\n {GOOGLE_PLAY_PATHS.map((path) => (\n <Path key={path.d} d={path.d} fill={path.color} />\n ))}\n </Svg>\n );\n}\n","export const BAG_PATH =\n \"M9.23047 9H7.2002C6.08009 9 5.51962 9 5.0918 9.21799C4.71547 9.40973 4.40973 9.71547 4.21799 10.0918C4 10.5196 4 11.0801 4 12.2002V17.8002C4 18.9203 4 19.4801 4.21799 19.9079C4.40973 20.2842 4.71547 20.5905 5.0918 20.7822C5.5192 21 6.07902 21 7.19694 21H16.8031C17.921 21 18.48 21 18.9074 20.7822C19.2837 20.5905 19.5905 20.2842 19.7822 19.9079C20 19.4805 20 18.9215 20 17.8036V12.1969C20 11.079 20 10.5192 19.7822 10.0918C19.5905 9.71547 19.2837 9.40973 18.9074 9.21799C18.4796 9 17.9203 9 16.8002 9H14.7689M9.23047 9H14.7689M9.23047 9C9.10302 9 9 8.89668 9 8.76923V6C9 4.34315 10.3431 3 12 3C13.6569 3 15 4.34315 15 6V8.76923C15 8.89668 14.8964 9 14.7689 9\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { BAG_PATH } from \"./bagPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { BAG_PATH } from \"./bagPath\";\n\nexport function BagIcon({ size = 24, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d={BAG_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const BELL_PATH =\n \"M6.23597 14C6.70606 14.4149 7.32355 14.6667 7.99985 14.6667C8.67615 14.6667 9.29364 14.4149 9.76373 14M11.9998 5.33337C11.9998 4.27251 11.5784 3.25509 10.8283 2.50495C10.0781 1.7548 9.06072 1.33337 7.99985 1.33337C6.93898 1.33337 5.92157 1.7548 5.17142 2.50495C4.42128 3.25509 3.99985 4.27251 3.99985 5.33337C3.99985 7.3935 3.48016 8.80401 2.89963 9.73698C2.40993 10.524 2.16509 10.9174 2.17407 11.0272C2.18401 11.1488 2.20976 11.1951 2.3077 11.2678C2.39616 11.3334 2.79491 11.3334 3.59242 11.3334H12.4073C13.2048 11.3334 13.6035 11.3334 13.692 11.2678C13.7899 11.1951 13.8157 11.1488 13.8256 11.0272C13.8346 10.9174 13.5898 10.524 13.1001 9.73698C12.5195 8.80401 11.9998 7.3935 11.9998 5.33337Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { BELL_PATH } from \"./bellPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { BELL_PATH } from \"./bellPath\";\n\nexport function BellIcon({ size = 16, color = colors.white, strokeWidth = 1.5 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={BELL_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const BUILDING_PATH =\n \"M7.5 9.16659V16.6666M7.5 9.16659H3.83301C3.3663 9.16659 3.13318 9.16659 2.95492 9.25741C2.79811 9.33731 2.67072 9.4647 2.59083 9.6215C2.5 9.79976 2.5 10.0333 2.5 10.5V16.6666H7.5M7.5 9.16659V4.66667C7.5 4.19996 7.5 3.96643 7.59083 3.78817C7.67072 3.63137 7.79811 3.50397 7.95492 3.42408C8.13317 3.33325 8.3663 3.33325 8.83301 3.33325H11.1663C11.6331 3.33325 11.8669 3.33325 12.0452 3.42408C12.202 3.50397 12.329 3.63137 12.4089 3.78817C12.4997 3.96643 12.5 4.19996 12.5 4.66667V6.66659M7.5 16.6666H12.5M12.5 16.6666L17.5 16.6667V8C17.5 7.53329 17.4997 7.29976 17.4089 7.1215C17.329 6.9647 17.2024 6.83731 17.0456 6.75741C16.8674 6.66659 16.6334 6.66659 16.1667 6.66659H12.5M12.5 16.6666V6.66659\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { BUILDING_PATH } from \"./buildingPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { BUILDING_PATH } from \"./buildingPath\";\n\nexport function BuildingIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={BUILDING_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Calendar icon path — 16×16 viewBox. */\nexport const CALENDAR_PATH =\n \"M14 6.66668H2M14 8.33334V5.86668C14 4.74657 14 4.18652 13.782 3.7587C13.5903 3.38237 13.2843 3.07641 12.908 2.88466C12.4802 2.66668 11.9201 2.66668 10.8 2.66668H5.2C4.0799 2.66668 3.51984 2.66668 3.09202 2.88466C2.71569 3.07641 2.40973 3.38237 2.21799 3.7587C2 4.18652 2 4.74657 2 5.86668V11.4667C2 12.5868 2 13.1468 2.21799 13.5747C2.40973 13.951 2.71569 14.2569 3.09202 14.4487C3.51984 14.6667 4.0799 14.6667 5.2 14.6667H8M10.6667 1.33334V4.00001M5.33333 1.33334V4.00001M9.66667 12.6667L11 14L14 11\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { CALENDAR_PATH } from \"./calendarPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { CALENDAR_PATH } from \"./calendarPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function CalendarIcon({ size = 20, color = colors.primary, strokeWidth = 1.5 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={CALENDAR_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Plain calendar icon path (no checkmark badge) — 16×16 viewBox. */\nexport const CALENDAR_OUTLINE_PATH =\n \"M10.6667 1.33334V4.00001M5.33333 1.33334V4.00001M2 6.66668H14M5.2 2.66668H10.8C11.9201 2.66668 12.4802 2.66668 12.908 2.88466C13.2843 3.07641 13.5903 3.38237 13.782 3.7587C14 4.18652 14 4.74657 14 5.86668V11.4667C14 12.5868 14 13.1468 13.782 13.5747C13.5903 13.951 13.2843 14.2569 12.908 14.4487C12.4802 14.6667 11.9201 14.6667 10.8 14.6667H5.2C4.0799 14.6667 3.51984 14.6667 3.09202 14.4487C2.71569 14.2569 2.40973 13.951 2.21799 13.5747C2 13.1468 2 12.5868 2 11.4667V5.86668C2 4.74657 2 4.18652 2.21799 3.7587C2.40973 3.38237 2.71569 3.07641 3.09202 2.88466C3.51984 2.66668 4.0799 2.66668 5.2 2.66668Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { CALENDAR_OUTLINE_PATH } from \"./calendarOutlinePath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { CALENDAR_OUTLINE_PATH } from \"./calendarOutlinePath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function CalendarOutlineIcon({\n size = 20,\n color = colors.primary,\n strokeWidth = 1.5,\n}: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={CALENDAR_OUTLINE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const CAMERA_PATH =\n \"M9.48898 7H6.2002C5.08009 7 4.51962 7 4.0918 7.21799C3.71547 7.40973 3.40973 7.71547 3.21799 8.0918C3 8.51962 3 9.08009 3 10.2002V15.8002C3 16.9203 3 17.4796 3.21799 17.9074C3.40973 18.2837 3.71547 18.5905 4.0918 18.7822C4.5192 19 5.07899 19 6.19691 19H17.8031C18.921 19 19.48 19 19.9074 18.7822C20.2837 18.5905 20.5905 18.2837 20.7822 17.9074C21 17.48 21 16.921 21 15.8031V10.1969C21 9.07899 21 8.5192 20.7822 8.0918C20.5905 7.71547 20.2837 7.40973 19.9074 7.21799C19.4796 7 18.9203 7 17.8002 7H14.5108M9.48898 7H9.55078M9.48898 7C9.50151 7.00001 9.51468 7 9.52857 7L9.55078 7M9.48898 7C9.38286 6.99995 9.32339 6.99941 9.27637 6.99414C8.68878 6.92835 8.28578 6.36908 8.40918 5.79084C8.42066 5.73703 8.44336 5.66894 8.4883 5.53412L8.49023 5.52841C8.54156 5.37443 8.56723 5.29743 8.59558 5.22949C8.88586 4.53389 9.54322 4.06083 10.2949 4.00541C10.3683 4 10.449 4 10.6113 4H13.3886C13.5509 4 13.6322 4 13.7057 4.00541C14.4574 4.06083 15.114 4.53389 15.4043 5.22949C15.4326 5.29743 15.4584 5.37434 15.5098 5.52832C15.556 5.66699 15.5791 5.73636 15.5908 5.79093C15.7142 6.36917 15.3118 6.92835 14.7242 6.99414C14.6772 6.99941 14.6171 6.99995 14.5108 7M9.55078 7H14.449M14.449 7H14.5108M14.449 7L14.4712 7C14.4851 7 14.4983 7.00001 14.5108 7M12 16C10.3431 16 9 14.6569 9 13C9 11.3431 10.3431 10 12 10C13.6569 10 15 11.3431 15 13C15 14.6569 13.6569 16 12 16Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { CAMERA_PATH } from \"./cameraPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { CAMERA_PATH } from \"./cameraPath\";\n\nexport function CameraIcon({ size = 24, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d={CAMERA_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Check mark path — 20×20 viewBox. */\nexport const CHECK_PATH = \"M4.16669 10.8333L7.50002 14.1667L15.8334 5.83334\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { CHECK_PATH } from \"./checkPath\";\nimport { colors } from \"../../theme\";\n\nexport { CHECK_PATH } from \"./checkPath\";\n\ninterface CheckIconProps {\n size?: number;\n color?: string;\n strokeWidth?: number;\n}\n\n/** Native — react-native-svg (peer dependency). */\nexport function CheckIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: CheckIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={CHECK_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const CHECK_BADGE_PATH =\n \"M12.5 8.33317L9.16663 11.6665L7.49996 9.99984M11.0384 2.88233L12.0558 3.74941C12.3122 3.96786 12.6305 4.09992 12.9662 4.12671L14.2987 4.23291C15.0822 4.29543 15.7045 4.91733 15.767 5.70077L15.8729 7.03353C15.8997 7.36925 16.0322 7.68799 16.2507 7.94433L17.1174 8.96152C17.6272 9.5597 17.6272 10.4396 17.1175 11.0378L16.2508 12.0551C16.0323 12.3115 15.9 12.6303 15.8732 12.9661L15.7666 14.2986C15.704 15.082 15.0827 15.7043 14.2993 15.7668L12.9663 15.8732C12.6305 15.9 12.312 16.0317 12.0556 16.2502L11.0384 17.1173C10.4402 17.627 9.55973 17.6271 8.96155 17.1174L7.9443 16.2502C7.68796 16.0318 7.36938 15.8998 7.03365 15.8731L5.70064 15.7668C4.9172 15.7043 4.29588 15.0822 4.23336 14.2987L4.12675 12.9661C4.09996 12.6304 3.96759 12.3118 3.74915 12.0555L2.88245 11.0378C2.37268 10.4397 2.37244 9.56002 2.88221 8.96184L3.74969 7.94418C3.96814 7.68784 4.09923 7.36926 4.12602 7.03353L4.23263 5.70093C4.29515 4.91749 4.91826 4.29535 5.70171 4.23283L7.03324 4.12663C7.36897 4.09984 7.68771 3.96788 7.94404 3.74943L8.96164 2.88233C9.55982 2.37256 10.4402 2.37256 11.0384 2.88233Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { CHECK_BADGE_PATH } from \"./checkBadgePath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { CHECK_BADGE_PATH } from \"./checkBadgePath\";\n\nexport function CheckBadgeIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={CHECK_BADGE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Chevron down path — 20×20 viewBox. */\nexport const CHEVRON_DOWN_PATH = \"M5 7.5L10 12.5L15 7.5\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { CHEVRON_DOWN_PATH } from \"./chevronDownPath\";\nimport { colors } from \"../../theme\";\n\nexport { CHEVRON_DOWN_PATH } from \"./chevronDownPath\";\n\ninterface ChevronDownIconProps {\n size?: number;\n color?: string;\n strokeWidth?: number;\n}\n\n/** Native — react-native-svg (peer dependency). */\nexport function ChevronDownIcon({\n size = 20,\n color = colors.primary,\n strokeWidth = 2,\n}: ChevronDownIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={CHEVRON_DOWN_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Chevron left path — 20×20 viewBox. */\nexport const CHEVRON_LEFT_PATH = \"M12.5 15L7.5 10L12.5 5\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { CHEVRON_LEFT_PATH } from \"./chevronLeftPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { CHEVRON_LEFT_PATH } from \"./chevronLeftPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function ChevronLeftIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={CHEVRON_LEFT_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const CLOCK_PATH =\n \"M12 7V12H17M12 21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12C21 16.9706 16.9706 21 12 21Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { CLOCK_PATH } from \"./clockPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { CLOCK_PATH } from \"./clockPath\";\n\nexport function ClockIcon({ size = 24, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d={CLOCK_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Close (x) path — 20×20 viewBox. */\nexport const CLOSE_PATH = \"M15 5L5 15M5 5L15 15\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\nimport { CLOSE_PATH } from \"./closePath\";\n\nexport function CloseIcon({ size = 20, color = colors.white, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={CLOSE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Lucide-style square-pen — viewBox 0 0 24 24. */\nexport const EDIT_PATH =\n \"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7M18.375 2.625a2.121 2.121 0 1 1 3 3L12.15 13.85a.75.75 0 0 1-.33.2l-3.07.8a.5.5 0 0 1-.61-.61l.8-3.07a.75.75 0 0 1 .2-.33z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\nimport { EDIT_PATH } from \"./editPath\";\n\nexport function EditIcon({ size = 12, color = colors.grey0, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d={EDIT_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\nexport { EDIT_PATH } from \"./editPath\";\n","export const SAVE_HEART_PATH =\n \"M8 5.12971C6.66667 2.00008 2 2.33341 2 6.33343C2 10.3335 8 13.6669 8 13.6669C8 13.6669 14 10.3335 14 6.33343C14 2.33341 9.33333 2.00008 8 5.12971Z\";\n\nexport const RATING_STAR_PATH =\n \"M1.16748 5.16814C1.01086 5.0233 1.09593 4.76145 1.30778 4.73633L4.30957 4.38029C4.39591 4.37005 4.47091 4.31583 4.50732 4.23688L5.77344 1.49199C5.86279 1.29827 6.13819 1.29823 6.22754 1.49195L7.49365 4.23682C7.53007 4.31577 7.60458 4.37014 7.69092 4.38038L10.6929 4.73633C10.9047 4.76145 10.9896 5.02338 10.8329 5.16822L8.61388 7.22071C8.55005 7.27974 8.52163 7.36761 8.53857 7.45289L9.1275 10.4177C9.16908 10.627 8.94639 10.7891 8.76024 10.6849L6.12257 9.20806C6.0467 9.16559 5.95453 9.16579 5.87866 9.20826L3.24072 10.6845C3.05457 10.7887 2.83147 10.627 2.87305 10.4177L3.46207 7.45307C3.47902 7.36779 3.45067 7.27972 3.38683 7.22069L1.16748 5.16814Z\";\n\nexport const CARD_LOCATION_BASE_PATH =\n \"M2.66951 8.87207C1.68929 9.16614 1.08301 9.57239 1.08301 10.0211C1.08301 10.9186 3.50813 11.6461 6.49967 11.6461C9.49122 11.6461 11.9163 10.9186 11.9163 10.0211C11.9163 9.57239 11.3101 9.16614 10.3298 8.87207\";\n\nexport const CARD_LOCATION_PIN_PATH =\n \"M6.50032 9.47933C6.50032 9.47933 10.0212 7.17833 10.0212 4.51815C10.0212 2.62125 8.44483 1.0835 6.50032 1.0835C4.55582 1.0835 2.97949 2.62125 2.97949 4.51815C2.97949 7.17833 6.50032 9.47933 6.50032 9.47933Z\";\n\nexport const CARD_LOCATION_DOT_PATH =\n \"M6.49967 5.95833C7.24755 5.95833 7.85384 5.35205 7.85384 4.60417C7.85384 3.85629 7.24755 3.25 6.49967 3.25C5.7518 3.25 5.14551 3.85629 5.14551 4.60417C5.14551 5.35205 5.7518 5.95833 6.49967 5.95833Z\";\n\nexport const GUESTS_PATH =\n \"M8.20008 8.14683C8.5558 7.83892 8.84111 7.45809 9.03666 7.03018C9.23221 6.60227 9.33342 6.1373 9.33342 5.66683C9.33342 4.78277 8.98223 3.93493 8.3571 3.30981C7.73198 2.68469 6.88414 2.3335 6.00008 2.3335C5.11603 2.3335 4.26818 2.68469 3.64306 3.30981C3.01794 3.93493 2.66675 4.78277 2.66675 5.66683C2.66674 6.1373 2.76795 6.60227 2.9635 7.03018C3.15905 7.45809 3.44436 7.83892 3.80008 8.14683C2.86684 8.56942 2.07506 9.25185 1.5194 10.1125C0.963745 10.9732 0.667729 11.9757 0.666748 13.0002C0.666748 13.177 0.736986 13.3465 0.86201 13.4716C0.987034 13.5966 1.1566 13.6668 1.33341 13.6668C1.51023 13.6668 1.6798 13.5966 1.80482 13.4716C1.92984 13.3465 2.00008 13.177 2.00008 13.0002C2.00008 11.9393 2.42151 10.9219 3.17165 10.1717C3.9218 9.42159 4.93922 9.00016 6.00008 9.00016C7.06095 9.00016 8.07836 9.42159 8.82851 10.1717C9.57865 10.9219 10.0001 11.9393 10.0001 13.0002C10.0001 13.177 10.0703 13.3465 10.1953 13.4716C10.3204 13.5966 10.4899 13.6668 10.6667 13.6668C10.8436 13.6668 11.0131 13.5966 11.1382 13.4716C11.2632 13.3465 11.3334 13.177 11.3334 13.0002C11.3324 11.9757 11.0364 10.9732 10.4808 10.1125C9.92511 9.25185 9.13332 8.56942 8.20008 8.14683ZM6.00008 7.66683C5.60452 7.66683 5.21784 7.54953 4.88894 7.32977C4.56004 7.11001 4.3037 6.79765 4.15232 6.4322C4.00095 6.06674 3.96134 5.66461 4.03851 5.27665C4.11568 4.88869 4.30616 4.53232 4.58587 4.25262C4.86557 3.97291 5.22194 3.78243 5.6099 3.70526C5.99786 3.62809 6.4 3.6677 6.76545 3.81907C7.1309 3.97045 7.44326 4.22679 7.66302 4.55569C7.88278 4.88459 8.00008 5.27127 8.00008 5.66683C8.00008 6.19726 7.78937 6.70597 7.4143 7.08104C7.03922 7.45612 6.53051 7.66683 6.00008 7.66683ZM12.4934 7.88016C12.9201 7.39972 13.1988 6.8062 13.2959 6.17106C13.3931 5.53591 13.3047 4.88621 13.0413 4.30016C12.7778 3.71411 12.3506 3.21669 11.8111 2.86778C11.2715 2.51886 10.6426 2.33332 10.0001 2.3335C9.82327 2.3335 9.6537 2.40373 9.52868 2.52876C9.40365 2.65378 9.33342 2.82335 9.33342 3.00016C9.33342 3.17697 9.40365 3.34654 9.52868 3.47157C9.6537 3.59659 9.82327 3.66683 10.0001 3.66683C10.5305 3.66683 11.0392 3.87754 11.4143 4.25262C11.7894 4.62769 12.0001 5.1364 12.0001 5.66683C11.9991 6.01699 11.9063 6.36076 11.7308 6.66378C11.5553 6.96679 11.3033 7.21842 11.0001 7.3935C10.9012 7.45051 10.8187 7.53194 10.7603 7.62999C10.702 7.72804 10.6697 7.83943 10.6667 7.9535C10.664 8.06667 10.69 8.17869 10.7425 8.279C10.795 8.37931 10.8722 8.4646 10.9667 8.52683L11.2267 8.70016L11.3134 8.74683C12.117 9.12797 12.795 9.73082 13.2674 10.4844C13.7398 11.2379 13.9871 12.1108 13.9801 13.0002C13.9801 13.177 14.0503 13.3465 14.1753 13.4716C14.3004 13.5966 14.4699 13.6668 14.6467 13.6668C14.8236 13.6668 14.9931 13.5966 15.1182 13.4716C15.2432 13.3465 15.3134 13.177 15.3134 13.0002C15.3189 11.9771 15.0626 10.9697 14.5691 10.0735C14.0755 9.17741 13.361 8.42237 12.4934 7.88016Z\";\n\nexport const BEDROOMS_PATH =\n \"M4.66675 8.33333C5.06231 8.33333 5.44899 8.21604 5.77789 7.99627C6.10679 7.77651 6.36313 7.46415 6.51451 7.0987C6.66588 6.73325 6.70549 6.33111 6.62832 5.94315C6.55115 5.55519 6.36067 5.19882 6.08096 4.91912C5.80126 4.63941 5.44489 4.44893 5.05693 4.37176C4.66897 4.29459 4.26683 4.3342 3.90138 4.48557C3.53593 4.63695 3.22357 4.89329 3.00381 5.22219C2.78405 5.55109 2.66675 5.93777 2.66675 6.33333C2.66675 6.86377 2.87746 7.37247 3.25253 7.74755C3.62761 8.12262 4.13632 8.33333 4.66675 8.33333ZM4.66675 5.66667C4.7986 5.66667 4.9275 5.70577 5.03713 5.77902C5.14676 5.85227 5.23221 5.95639 5.28267 6.07821C5.33313 6.20003 5.34633 6.33407 5.32061 6.46339C5.29488 6.59271 5.23139 6.7115 5.13815 6.80474C5.04492 6.89797 4.92613 6.96147 4.79681 6.98719C4.66749 7.01291 4.53344 6.99971 4.41163 6.94925C4.28981 6.89879 4.18569 6.81335 4.11244 6.70371C4.03918 6.59408 4.00008 6.46519 4.00008 6.33333C4.00008 6.15652 4.07032 5.98695 4.19534 5.86193C4.32037 5.7369 4.48994 5.66667 4.66675 5.66667ZM13.3334 4.33333H8.00008C7.82327 4.33333 7.6537 4.40357 7.52868 4.5286C7.40365 4.65362 7.33342 4.82319 7.33342 5V9H2.00008V3.66667C2.00008 3.48986 1.92984 3.32029 1.80482 3.19526C1.6798 3.07024 1.51023 3 1.33341 3C1.1566 3 0.987034 3.07024 0.86201 3.19526C0.736986 3.32029 0.666748 3.48986 0.666748 3.66667V12.3333C0.666748 12.5101 0.736986 12.6797 0.86201 12.8047C0.987034 12.9298 1.1566 13 1.33341 13C1.51023 13 1.6798 12.9298 1.80482 12.8047C1.92984 12.6797 2.00008 12.5101 2.00008 12.3333V10.3333H14.0001V12.3333C14.0001 12.5101 14.0703 12.6797 14.1953 12.8047C14.3204 12.9298 14.4899 13 14.6667 13C14.8436 13 15.0131 12.9298 15.1382 12.8047C15.2632 12.6797 15.3334 12.5101 15.3334 12.3333V6.33333C15.3334 5.8029 15.1227 5.29419 14.7476 4.91912C14.3726 4.54405 13.8638 4.33333 13.3334 4.33333ZM14.0001 9H8.66675V5.66667H13.3334C13.5102 5.66667 13.6798 5.7369 13.8048 5.86193C13.9298 5.98695 14.0001 6.15652 14.0001 6.33333V9Z\";\n\nexport const BATHROOMS_PATH =\n \"M14.6667 7.99999H3.33341V4.27343C3.33108 4.03335 3.39444 3.7972 3.51664 3.59053C3.63885 3.38386 3.81525 3.21454 4.02675 3.10091C4.26062 2.97416 4.52713 2.92047 4.79184 2.94677C4.65711 3.35481 4.63797 3.79218 4.73654 4.21043C4.83511 4.62868 5.04755 5.01147 5.35031 5.3164L6.05737 6.02343C6.11926 6.08535 6.19274 6.13447 6.27362 6.16798C6.3545 6.20149 6.44118 6.21874 6.52873 6.21874C6.61627 6.21874 6.70296 6.20149 6.78384 6.16798C6.86471 6.13447 6.93819 6.08535 7.00008 6.02343L9.35686 3.66666C9.41877 3.60477 9.46789 3.53129 9.5014 3.45041C9.53492 3.36954 9.55217 3.28285 9.55217 3.19531C9.55217 3.10776 9.53492 3.02108 9.5014 2.9402C9.46789 2.85932 9.41877 2.78584 9.35686 2.72395L8.64982 2.01692C8.2563 1.62517 7.73578 1.38688 7.18209 1.34501C6.6284 1.30314 6.07796 1.46045 5.63001 1.78857C5.22612 1.63083 4.78981 1.57415 4.35902 1.62346C3.92824 1.67277 3.51602 1.82658 3.15823 2.07151C2.80043 2.31644 2.50789 2.64507 2.30605 3.02883C2.1042 3.41258 1.99917 3.83984 2.00008 4.27343V7.99999H1.33341C1.1566 7.99999 0.987034 8.07023 0.86201 8.19526C0.736986 8.32028 0.666748 8.48985 0.666748 8.66666C0.666748 8.84347 0.736986 9.01304 0.86201 9.13806C0.987034 9.26309 1.1566 9.33333 1.33341 9.33333H2.00008V11.3333C2.00135 11.7456 2.1302 12.1473 2.36893 12.4834C2.60766 12.8195 2.94458 13.0735 3.33341 13.2104V14C3.33341 14.1768 3.40365 14.3464 3.52868 14.4714C3.6537 14.5964 3.82327 14.6667 4.00008 14.6667C4.17689 14.6667 4.34646 14.5964 4.47149 14.4714C4.59651 14.3464 4.66675 14.1768 4.66675 14V13.3333H11.3334V14C11.3334 14.1768 11.4037 14.3464 11.5287 14.4714C11.6537 14.5964 11.8233 14.6667 12.0001 14.6667C12.1769 14.6667 12.3465 14.5964 12.4715 14.4714C12.5965 14.3464 12.6667 14.1768 12.6667 14V13.2105C13.0556 13.0735 13.3925 12.8195 13.6312 12.4834C13.87 12.1473 13.9988 11.7456 14.0001 11.3333V9.33333H14.6667C14.8436 9.33333 15.0131 9.26309 15.1382 9.13806C15.2632 9.01304 15.3334 8.84347 15.3334 8.66666C15.3334 8.48985 15.2632 8.32028 15.1382 8.19526C15.0131 8.07023 14.8436 7.99999 14.6667 7.99999ZM6.29305 2.95963C6.48074 2.77244 6.735 2.66731 7.00008 2.66731C7.26516 2.66731 7.51943 2.77244 7.70711 2.95963L7.94279 3.19531L6.52875 4.60937L6.29307 4.37369C6.10577 4.18606 6.00058 3.93178 6.00058 3.66666C6.00057 3.40155 6.10576 3.14727 6.29305 2.95963ZM12.6667 11.3333C12.6666 11.5101 12.5964 11.6796 12.4714 11.8046C12.3464 11.9296 12.1769 11.9999 12.0001 12H4.00008C3.82331 11.9999 3.65381 11.9296 3.52881 11.8046C3.40381 11.6796 3.33353 11.5101 3.33341 11.3333V9.33333H12.6667V11.3333Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\nimport {\n BATHROOMS_PATH,\n BEDROOMS_PATH,\n CARD_LOCATION_BASE_PATH,\n CARD_LOCATION_DOT_PATH,\n CARD_LOCATION_PIN_PATH,\n GUESTS_PATH,\n RATING_STAR_PATH,\n SAVE_HEART_PATH,\n} from \"./cottageCardPaths\";\n\nexport function SaveHeartIcon({\n size = 16,\n color = colors.white,\n strokeWidth = 2,\n fillOpacity = 0,\n}: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={SAVE_HEART_PATH}\n fill={color}\n fillOpacity={fillOpacity}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\nexport function RatingStarIcon({ size = 12, color = \"#E38E5E\", strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 12 12\" fill=\"none\">\n <Path\n d={RATING_STAR_PATH}\n fill={color}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\nexport function CardLocationIcon({\n size = 13,\n color = colors.grey0,\n strokeWidth = 1.5,\n secondaryColor = colors.grey700,\n}: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 13 13\" fill=\"none\">\n <Path\n d={CARD_LOCATION_BASE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <Path\n d={CARD_LOCATION_PIN_PATH}\n fill={color}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinejoin=\"round\"\n />\n <Path\n d={CARD_LOCATION_DOT_PATH}\n fill={secondaryColor}\n stroke={secondaryColor}\n strokeWidth={2}\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\nfunction FilledCardIcon({\n path,\n size,\n color,\n fillOpacity,\n}: Required<Pick<IconProps, \"size\" | \"color\" | \"fillOpacity\">> & { path: string }) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path d={path} fill={color} fillOpacity={fillOpacity} />\n </Svg>\n );\n}\n\nexport function GuestsIcon({ size = 16, color = colors.white, fillOpacity = 0.4 }: IconProps) {\n return <FilledCardIcon path={GUESTS_PATH} size={size} color={color} fillOpacity={fillOpacity} />;\n}\n\nexport function BedroomsIcon({ size = 16, color = colors.white, fillOpacity = 0.4 }: IconProps) {\n return (\n <FilledCardIcon path={BEDROOMS_PATH} size={size} color={color} fillOpacity={fillOpacity} />\n );\n}\n\nexport function BathroomsIcon({ size = 16, color = colors.white, fillOpacity = 0.4 }: IconProps) {\n return (\n <FilledCardIcon path={BATHROOMS_PATH} size={size} color={color} fillOpacity={fillOpacity} />\n );\n}\n\nexport * from \"./cottageCardPaths\";\n","export const SHARE_PATH =\n \"M7.5 11.25L12.5 13.75M12.5 6.25L7.5 8.75M15 17.5C13.6193 17.5 12.5 16.3807 12.5 15C12.5 13.6193 13.6193 12.5 15 12.5C16.3807 12.5 17.5 13.6193 17.5 15C17.5 16.3807 16.3807 17.5 15 17.5ZM5 12.5C3.61929 12.5 2.5 11.3807 2.5 10C2.5 8.61929 3.61929 7.5 5 7.5C6.38071 7.5 7.5 8.61929 7.5 10C7.5 11.3807 6.38071 12.5 5 12.5ZM15 7.5C13.6193 7.5 12.5 6.38071 12.5 5C12.5 3.61929 13.6193 2.5 15 2.5C16.3807 2.5 17.5 3.61929 17.5 5C17.5 6.38071 16.3807 7.5 15 7.5Z\";\n\n/** Download — viewBox 0 0 24 24. */\nexport const DOWNLOAD_PATH = \"M21 21H3M6 11L12 17L18 11M12 17V3\";\n\nexport const AREA_EXPAND_PATHS = [\n \"M15 3H21V9\",\n \"M9 21H3V15\",\n \"M21 3L14 10\",\n \"M3 21L10 14\",\n] as const;\n\nexport const CLOCK_FILLED_PATH =\n \"M8.00017 3.99967C7.91261 3.99965 7.82591 4.01688 7.74502 4.05037C7.66412 4.08387 7.59062 4.13298 7.52871 4.19489C7.4668 4.2568 7.4177 4.3303 7.3842 4.41119C7.3507 4.49209 7.33348 4.57879 7.3335 4.66634V6.84473L6.60173 6.4222C6.44858 6.3339 6.26663 6.31004 6.09589 6.35585C5.92515 6.40166 5.77959 6.51341 5.69121 6.66651C5.60284 6.81962 5.57888 7.00155 5.62461 7.17231C5.67033 7.34308 5.782 7.48869 5.93506 7.57715L7.66683 8.57715C7.76819 8.63566 7.88316 8.66647 8.0002 8.66646C8.11723 8.66646 8.2322 8.63564 8.33355 8.57712C8.4349 8.51859 8.51906 8.43441 8.57756 8.33305C8.63607 8.23169 8.66685 8.11671 8.66683 7.99967V4.66634C8.66686 4.57879 8.64963 4.49209 8.61613 4.41119C8.58264 4.3303 8.53353 4.2568 8.47162 4.19489C8.40971 4.13298 8.33621 4.08387 8.25532 4.05037C8.17442 4.01688 8.08772 3.99965 8.00017 3.99967ZM8.00017 1.33301C6.68162 1.33301 5.39269 1.724 4.29636 2.45654C3.20004 3.18909 2.34555 4.23028 1.84097 5.44845C1.33638 6.66663 1.20436 8.00707 1.4616 9.30028C1.71883 10.5935 2.35377 11.7814 3.28612 12.7137C4.21847 13.6461 5.40636 14.281 6.69956 14.5382C7.99277 14.7955 9.33322 14.6635 10.5514 14.1589C11.7696 13.6543 12.8108 12.7998 13.5433 11.7035C14.2758 10.6071 14.6668 9.31822 14.6668 7.99967C14.6648 6.23218 13.9618 4.53767 12.712 3.28786C11.4622 2.03806 9.76766 1.33503 8.00017 1.33301ZM8.00017 13.333C6.94533 13.333 5.91419 13.0202 5.03712 12.4342C4.16006 11.8481 3.47648 11.0152 3.07281 10.0407C2.66914 9.06611 2.56352 7.99376 2.76931 6.95919C2.9751 5.92463 3.48305 4.97432 4.22893 4.22844C4.97481 3.48256 5.92512 2.97461 6.95968 2.76882C7.99425 2.56303 9.06661 2.66865 10.0411 3.07232C11.0157 3.47598 11.8486 4.15957 12.4347 5.03663C13.0207 5.91369 13.3335 6.94484 13.3335 7.99967C13.3319 9.41366 12.7695 10.7693 11.7696 11.7691C10.7698 12.769 9.41416 13.3314 8.00017 13.333Z\";\n\nexport const QR_CODE_PATH =\n \"M8 21H4C3.73478 21 3.48043 20.8946 3.29289 20.7071C3.10536 20.5196 3 20.2652 3 20V16C3 15.7348 2.89464 15.4804 2.70711 15.2929C2.51957 15.1054 2.26522 15 2 15C1.73478 15 1.48043 15.1054 1.29289 15.2929C1.10536 15.4804 1 15.7348 1 16V20C1 20.7956 1.31607 21.5587 1.87868 22.1213C2.44129 22.6839 3.20435 23 4 23H8C8.26522 23 8.51957 22.8946 8.70711 22.7071C8.89464 22.5196 9 22.2652 9 22C9 21.7348 8.89464 21.4804 8.70711 21.2929C8.51957 21.1054 8.26522 21 8 21ZM22 15C21.7348 15 21.4804 15.1054 21.2929 15.2929C21.1054 15.4804 21 15.7348 21 16V20C21 20.2652 20.8946 20.5196 20.7071 20.7071C20.5196 20.8946 20.2652 21 20 21H16C15.7348 21 15.4804 21.1054 15.2929 21.2929C15.1054 21.4804 15 21.7348 15 22C15 22.2652 15.1054 22.5196 15.2929 22.7071C15.4804 22.8946 15.7348 23 16 23H20C20.7956 23 21.5587 22.6839 22.1213 22.1213C22.6839 21.5587 23 20.7956 23 20V16C23 15.7348 22.8946 15.4804 22.7071 15.2929C22.5196 15.1054 22.2652 15 22 15ZM20 1H16C15.7348 1 15.4804 1.10536 15.2929 1.29289C15.1054 1.48043 15 1.73478 15 2C15 2.26522 15.1054 2.51957 15.2929 2.70711C15.4804 2.89464 15.7348 3 16 3H20C20.2652 3 20.5196 3.10536 20.7071 3.29289C20.8946 3.48043 21 3.73478 21 4V8C21 8.26522 21.1054 8.51957 21.2929 8.70711C21.4804 8.89464 21.7348 9 22 9C22.2652 9 22.5196 8.89464 22.7071 8.70711C22.8946 8.51957 23 8.26522 23 8V4C23 3.20435 22.6839 2.44129 22.1213 1.87868C21.5587 1.31607 20.7956 1 20 1ZM2 9C2.26522 9 2.51957 8.89464 2.70711 8.70711C2.89464 8.51957 3 8.26522 3 8V4C3 3.73478 3.10536 3.48043 3.29289 3.29289C3.48043 3.10536 3.73478 3 4 3H8C8.26522 3 8.51957 2.89464 8.70711 2.70711C8.89464 2.51957 9 2.26522 9 2C9 1.73478 8.89464 1.48043 8.70711 1.29289C8.51957 1.10536 8.26522 1 8 1H4C3.20435 1 2.44129 1.31607 1.87868 1.87868C1.31607 2.44129 1 3.20435 1 4V8C1 8.26522 1.10536 8.51957 1.29289 8.70711C1.48043 8.89464 1.73478 9 2 9ZM10 5H6C5.73478 5 5.48043 5.10536 5.29289 5.29289C5.10536 5.48043 5 5.73478 5 6V10C5 10.2652 5.10536 10.5196 5.29289 10.7071C5.48043 10.8946 5.73478 11 6 11H10C10.2652 11 10.5196 10.8946 10.7071 10.7071C10.8946 10.5196 11 10.2652 11 10V6C11 5.73478 10.8946 5.48043 10.7071 5.29289C10.5196 5.10536 10.2652 5 10 5ZM9 9H7V7H9V9ZM14 11H18C18.2652 11 18.5196 10.8946 18.7071 10.7071C18.8946 10.5196 19 10.2652 19 10V6C19 5.73478 18.8946 5.48043 18.7071 5.29289C18.5196 5.10536 18.2652 5 18 5H14C13.7348 5 13.4804 5.10536 13.2929 5.29289C13.1054 5.48043 13 5.73478 13 6V10C13 10.2652 13.1054 10.5196 13.2929 10.7071C13.4804 10.8946 13.7348 11 14 11ZM15 7H17V9H15V7ZM10 13H6C5.73478 13 5.48043 13.1054 5.29289 13.2929C5.10536 13.4804 5 13.7348 5 14V18C5 18.2652 5.10536 18.5196 5.29289 18.7071C5.48043 18.8946 5.73478 19 6 19H10C10.2652 19 10.5196 18.8946 10.7071 18.7071C10.8946 18.5196 11 18.2652 11 18V14C11 13.7348 10.8946 13.4804 10.7071 13.2929C10.5196 13.1054 10.2652 13 10 13ZM9 17H7V15H9V17ZM14 16C14.2652 16 14.5196 15.8946 14.7071 15.7071C14.8946 15.5196 15 15.2652 15 15C15.2652 15 15.5196 14.8946 15.7071 14.7071C15.8946 14.5196 16 14.2652 16 14C16 13.7348 15.8946 13.4804 15.7071 13.2929C15.5196 13.1054 15.2652 13 15 13H14C13.7348 13 13.4804 13.1054 13.2929 13.2929C13.1054 13.4804 13 13.7348 13 14V15C13 15.2652 13.1054 15.5196 13.2929 15.7071C13.4804 15.8946 13.7348 16 14 16ZM18 13C17.7348 13 17.4804 13.1054 17.2929 13.2929C17.1054 13.4804 17 13.7348 17 14V17C16.7348 17 16.4804 17.1054 16.2929 17.2929C16.1054 17.4804 16 17.7348 16 18C16 18.2652 16.1054 18.5196 16.2929 18.7071C16.4804 18.8946 16.7348 19 17 19H18C18.2652 19 18.5196 18.8946 18.7071 18.7071C18.8946 18.5196 19 18.2652 19 18V14C19 13.7348 18.8946 13.4804 18.7071 13.2929C18.5196 13.1054 18.2652 13 18 13ZM14 17C13.8022 17 13.6089 17.0586 13.4444 17.1685C13.28 17.2784 13.1518 17.4346 13.0761 17.6173C13.0004 17.8 12.9806 18.0011 13.0192 18.1951C13.0578 18.3891 13.153 18.5673 13.2929 18.7071C13.4327 18.847 13.6109 18.9422 13.8049 18.9808C13.9989 19.0194 14.2 18.9996 14.3827 18.9239C14.5654 18.8482 14.7216 18.72 14.8315 18.5556C14.9414 18.3911 15 18.1978 15 18C15 17.7348 14.8946 17.4804 14.7071 17.2929C14.5196 17.1054 14.2652 17 14 17Z\";\n\nexport const WHATSAPP_PATH =\n \"M16.6 13.9996C16.4 13.8996 15.1 13.2996 14.9 13.1996C14.7 13.0996 14.5 13.0996 14.3 13.2996C14.1 13.4996 13.7 14.0996 13.5 14.2996C13.4 14.4996 13.2 14.4996 13 14.3996C12.3 14.0996 11.6 13.6996 11 13.1996C10.5 12.6996 10 12.0996 9.6 11.4996C9.5 11.2996 9.6 11.0996 9.7 10.9996C9.8 10.8996 9.9 10.6996 10.1 10.5996C10.2 10.4996 10.3 10.2996 10.3 10.1996C10.4 10.0996 10.4 9.89961 10.3 9.79961C10.2 9.69961 9.7 8.49961 9.5 7.99961C9.4 7.29961 9.2 7.29961 9 7.29961C8.9 7.29961 8.7 7.29961 8.5 7.29961C8.3 7.29961 8 7.49961 7.9 7.59961C7.3 8.19961 7 8.89961 7 9.69961C7.1 10.5996 7.4 11.4996 8 12.2996C9.1 13.8996 10.5 15.1996 12.2 15.9996C12.7 16.1996 13.1 16.3996 13.6 16.4996C14.1 16.6996 14.6 16.6996 15.2 16.5996C15.9 16.4996 16.5 15.9996 16.9 15.3996C17.1 14.9996 17.1 14.5996 17 14.1996C17 14.1996 16.8 14.0996 16.6 13.9996ZM19.1 4.89961C15.2 0.999609 8.9 0.999609 5 4.89961C1.8 8.09961 1.2 12.9996 3.4 16.8996L2 21.9996L7.3 20.5996C8.8 21.3996 10.4 21.7996 12 21.7996C17.5 21.7996 21.9 17.3996 21.9 11.8996C22 9.29961 20.9 6.79961 19.1 4.89961ZM16.4 18.8996C15.1 19.6996 13.6 20.1996 12 20.1996C10.5 20.1996 9.1 19.7996 7.8 19.0996L7.5 18.8996L4.4 19.6996L5.2 16.6996L5 16.3996C2.6 12.3996 3.8 7.39961 7.7 4.89961C11.6 2.39961 16.6 3.69961 19 7.49961C21.4 11.3996 20.3 16.4996 16.4 18.8996Z\";\n\nexport const COPY_PATH =\n \"M6.66699 13.3337V15.667C6.66699 16.6004 6.66699 17.0671 6.84865 17.4236C7.00844 17.7372 7.2634 17.9922 7.57701 18.152C7.93353 18.3337 8.40024 18.3337 9.33366 18.3337H15.667C16.6004 18.3337 17.0671 18.3337 17.4236 18.152C17.7372 17.9922 17.9922 17.7372 18.152 17.4236C18.3337 17.0671 18.3337 16.6004 18.3337 15.667V9.33366C18.3337 8.40024 18.3337 7.93353 18.152 7.57701C17.9922 7.2634 17.7372 7.00844 17.4236 6.84865C17.0671 6.66699 16.6004 6.66699 15.667 6.66699H13.3337M4.33366 13.3337H10.667C11.6004 13.3337 12.0671 13.3337 12.4236 13.152C12.7372 12.9922 12.9922 12.7372 13.152 12.4236C13.3337 12.0671 13.3337 11.6004 13.3337 10.667V4.33366C13.3337 3.40024 13.3337 2.93353 13.152 2.57701C12.9922 2.2634 12.7372 2.00844 12.4236 1.84865C12.0671 1.66699 11.6004 1.66699 10.667 1.66699H4.33366C3.40024 1.66699 2.93353 1.66699 2.57701 1.84865C2.2634 2.00844 2.00844 2.2634 1.84865 2.57701C1.66699 2.93353 1.66699 3.40024 1.66699 4.33366V10.667C1.66699 11.6004 1.66699 12.0671 1.84865 12.4236C2.00844 12.7372 2.2634 12.9922 2.57701 13.152C2.93353 13.3337 3.40024 13.3337 4.33366 13.3337Z\";\n\nexport const CHECK_SUCCESS_PATH = \"M16.6663 5L7.49967 14.1667L3.33301 10\";\n\nexport const TOOLTIP_ARROW_PATH =\n \"M3.21121 6.42229C3.94826 7.89639 6.05187 7.89639 6.78892 6.42229L10.0001 0H6.2595e-05L3.21121 6.42229Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\nimport {\n AREA_EXPAND_PATHS,\n CHECK_SUCCESS_PATH,\n CLOCK_FILLED_PATH,\n COPY_PATH,\n DOWNLOAD_PATH,\n QR_CODE_PATH,\n SHARE_PATH,\n TOOLTIP_ARROW_PATH,\n WHATSAPP_PATH,\n} from \"./cottageDetailPaths\";\n\nexport function ShareIcon({ size = 20, color = colors.white, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={SHARE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\nexport function DownloadIcon({ size = 24, color = colors.white, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d={DOWNLOAD_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\nexport function AreaExpandIcon({ size = 24, color = colors.white, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n {AREA_EXPAND_PATHS.map((path) => (\n <Path\n key={path}\n d={path}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n ))}\n </Svg>\n );\n}\n\nexport function ClockFilledIcon({ size = 16, color = colors.white }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path d={CLOCK_FILLED_PATH} fill={color} />\n </Svg>\n );\n}\n\nexport function QrCodeIcon({ size = 24, color = colors.primary }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path d={QR_CODE_PATH} fill={color} />\n </Svg>\n );\n}\n\nexport function WhatsAppIcon({ size = 24, color = colors.white }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path d={WHATSAPP_PATH} fill={color} />\n </Svg>\n );\n}\n\nexport function CopyIcon({ size = 20, color = colors.grey200, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={COPY_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\nexport function CheckSuccessIcon({ size = 20, color = colors.green, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={CHECK_SUCCESS_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\nexport function TooltipArrowIcon({ size = 10, color = colors.grey600 }: IconProps) {\n return (\n <Svg width={size} height={(size * 8) / 10} viewBox=\"0 0 10 8\" fill=\"none\">\n <Path d={TOOLTIP_ARROW_PATH} fill={color} />\n </Svg>\n );\n}\n\nexport * from \"./cottageDetailPaths\";\n","/** Quiet-hours clock — filled, 20×20 viewBox. */\nexport const QUIET_HOURS_PATH =\n \"M9.99935 4.99996C9.88991 4.99993 9.78153 5.02147 9.68042 5.06334C9.5793 5.1052 9.48742 5.16659 9.41003 5.24397C9.33265 5.32136 9.27126 5.41324 9.2294 5.51436C9.18753 5.61547 9.16599 5.72385 9.16602 5.83329V8.55628L8.2513 8.02812C8.05987 7.91775 7.83243 7.88791 7.61901 7.94518C7.40558 8.00245 7.22363 8.14213 7.11316 8.33351C7.00269 8.52489 6.97274 8.7523 7.0299 8.96576C7.08706 9.17921 7.22665 9.36123 7.41797 9.4718L9.58269 10.7218C9.70938 10.7949 9.8531 10.8335 9.99939 10.8334C10.1457 10.8334 10.2894 10.7949 10.4161 10.7218C10.5428 10.6486 10.648 10.5434 10.7211 10.4167C10.7942 10.29 10.8327 10.1463 10.8327 9.99996V5.83329C10.8327 5.72385 10.8112 5.61547 10.7693 5.51436C10.7274 5.41324 10.6661 5.32136 10.5887 5.24397C10.5113 5.16659 10.4194 5.1052 10.3183 5.06334C10.2172 5.02147 10.1088 4.99993 9.99935 4.99996V4.99996ZM9.99935 1.66663C8.35118 1.66663 6.74001 2.15537 5.3696 3.07105C3.99919 3.98672 2.93109 5.28821 2.30036 6.81093C1.66963 8.33365 1.5046 10.0092 1.82614 11.6257C2.14769 13.2422 2.94136 14.7271 4.1068 15.8925C5.27223 17.058 6.75709 17.8516 8.3736 18.1732C9.99011 18.4947 11.6657 18.3297 13.1884 17.699C14.7111 17.0682 16.0126 16.0001 16.9283 14.6297C17.8439 13.2593 18.3327 11.6481 18.3327 9.99996C18.3302 7.7906 17.4514 5.67245 15.8891 4.11019C14.3269 2.54794 12.2087 1.66915 9.99935 1.66663V1.66663ZM9.99935 16.6666C8.68081 16.6666 7.39188 16.2756 6.29555 15.5431C5.19922 14.8105 4.34474 13.7694 3.84016 12.5512C3.33557 11.333 3.20355 9.99256 3.46078 8.69936C3.71802 7.40615 4.35296 6.21826 5.28531 5.28591C6.21766 4.35356 7.40554 3.71863 8.69875 3.46139C9.99196 3.20416 11.3324 3.33618 12.5506 3.84076C13.7687 4.34535 14.8099 5.19983 15.5425 6.29616C16.275 7.39249 16.666 8.68142 16.666 9.99996C16.664 11.7674 15.961 13.462 14.7112 14.7118C13.4614 15.9616 11.7668 16.6646 9.99935 16.6666V16.6666Z\";\n\n/** No-smoking — stroke paths, 20×20 viewBox. */\nexport const NO_SMOKING_PATHS = [\n \"M6.66602 10.8334V14.1667\",\n \"M13.334 4.16663V4.58329C13.334 5.02532 13.5096 5.44924 13.8221 5.7618C14.1347 6.07436 14.5586 6.24996 15.0007 6.24996C15.4427 6.24996 15.8666 6.42555 16.1792 6.73811C16.4917 7.05068 16.6673 7.4746 16.6673 7.91663V8.33329\",\n \"M2.5 2.5L17.5 17.5\",\n \"M14.1667 10.8334H16.6667C16.8877 10.8334 17.0996 10.9212 17.2559 11.0775C17.4122 11.2337 17.5 11.4457 17.5 11.6667V13.3334C17.5 13.5667 17.4042 13.7775 17.25 13.9284M14.1667 14.1667H3.33333C3.11232 14.1667 2.90036 14.0789 2.74408 13.9226C2.5878 13.7663 2.5 13.5544 2.5 13.3334V11.6667C2.5 11.4457 2.5878 11.2337 2.74408 11.0775C2.90036 10.9212 3.11232 10.8334 3.33333 10.8334H10.8333\",\n] as const;\n\n/** Paw / pets — stroke paths, 20×20 viewBox. */\nexport const PAW_PATHS = [\n \"M12.25 11.25C11.3334 9.58329 11.0492 9.16663 10.0001 9.16663C8.95088 9.16663 8.55338 9.79579 7.63672 11.4558C6.85172 12.875 5.26505 12.9933 4.86922 14.1983C4.78838 14.4191 4.74838 14.7625 4.75005 15C4.75005 15.98 5.40588 16.6666 6.25005 16.6666C7.29922 16.6666 8.75005 15.8333 10.0001 15.8333C11.2501 15.8333 12.7009 16.6666 13.7501 16.6666C14.5942 16.6666 15.25 15.9808 15.25 15C15.25 14.7625 15.2092 14.4191 15.1284 14.1983C14.7325 12.9891 13.035 12.6691 12.25 11.25Z\",\n \"M16.8241 6.73496C16.7171 6.68971 16.602 6.66647 16.4858 6.66663H16.4733C15.8608 6.67663 15.1733 7.29163 14.8125 8.22163C14.38 9.33413 14.5791 10.4716 15.2608 10.765C15.3683 10.8108 15.4833 10.8333 15.5991 10.8333C16.215 10.8333 16.9116 10.215 17.275 9.27829C17.705 8.16579 17.5016 7.02829 16.8241 6.73496Z\",\n \"M7.89628 7.50004C7.94211 7.50004 7.98711 7.50004 8.03211 7.49087C8.81878 7.38421 9.30961 6.36921 9.13211 5.22254C8.96295 4.14171 8.25961 3.33337 7.52211 3.33337C7.47628 3.33337 7.43128 3.33337 7.38628 3.34254C6.59961 3.44921 6.10878 4.46421 6.28628 5.61087C6.45628 6.68837 7.15961 7.50004 7.89711 7.50004H7.89628Z\",\n \"M13.7139 5.61088C13.8922 4.46421 13.4014 3.44921 12.6139 3.34254C12.5692 3.33635 12.5241 3.33329 12.4789 3.33338C11.7414 3.33338 11.0389 4.14171 10.8706 5.22254C10.6922 6.36921 11.1831 7.38421 11.9706 7.49088C12.0156 7.49671 12.0606 7.50004 12.1056 7.50004C12.8431 7.50004 13.5472 6.68838 13.7139 5.61088Z\",\n \"M4.74152 10.765C5.42152 10.4716 5.61985 9.33246 5.18819 8.22163C4.82485 7.28496 4.12902 6.66663 3.51402 6.66663C3.39735 6.66663 3.28319 6.68913 3.17485 6.73496C2.49485 7.02829 2.29652 8.16746 2.72819 9.27829C3.09152 10.215 3.78735 10.8333 4.40235 10.8333C4.51902 10.8333 4.63319 10.8108 4.74152 10.765Z\",\n] as const;\n\n/** Trash / waste — stroke path, 20×20 viewBox. */\nexport const TRASH_PATH =\n \"M7.5 2.5H12.5M2.5 5H17.5M15.8333 5L15.2489 13.7661C15.1612 15.0813 15.1174 15.7389 14.8333 16.2375C14.5833 16.6765 14.206 17.0294 13.7514 17.2497C13.235 17.5 12.5759 17.5 11.2578 17.5H8.74221C7.42409 17.5 6.76503 17.5 6.24861 17.2497C5.79396 17.0294 5.41674 16.6765 5.16665 16.2375C4.88259 15.7389 4.83875 15.0813 4.75107 13.7661L4.16667 5M8.33333 8.75V12.9167M11.6667 8.75V12.9167\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\nimport { NO_SMOKING_PATHS, PAW_PATHS, QUIET_HOURS_PATH, TRASH_PATH } from \"./houseRulesPaths\";\n\nexport function QuietHoursIcon({ size = 20, color = colors.white }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path d={QUIET_HOURS_PATH} fill={color} />\n </Svg>\n );\n}\n\nexport function NoSmokingIcon({ size = 20, color = colors.white, strokeWidth = 1.5 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n {NO_SMOKING_PATHS.map((d) => (\n <Path\n key={d}\n d={d}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n ))}\n </Svg>\n );\n}\n\nexport function PawIcon({ size = 20, color = colors.white, strokeWidth = 1.5 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n {PAW_PATHS.map((d) => (\n <Path\n key={d}\n d={d}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n ))}\n </Svg>\n );\n}\n\nexport function TrashIcon({ size = 20, color = colors.white, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={TRASH_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\nexport * from \"./houseRulesPaths\";\n","export const FACEBOOK_PATH =\n \"M10.0003 1.69922C5.41699 1.69922 1.66699 5.44089 1.66699 10.0492C1.66699 14.2159 4.71699 17.6742 8.70033 18.2992V12.4659H6.58366V10.0492H8.70033V8.20755C8.70033 6.11589 9.94199 4.96589 11.8503 4.96589C12.7587 4.96589 13.7087 5.12422 13.7087 5.12422V7.18255H12.6587C11.6253 7.18255 11.3003 7.82422 11.3003 8.48255V10.0492H13.617L13.242 12.4659H11.3003V18.2992C13.264 17.9891 15.0522 16.9871 16.3419 15.4743C17.6317 13.9614 18.3381 12.0373 18.3337 10.0492C18.3337 5.44089 14.5837 1.69922 10.0003 1.69922Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { FACEBOOK_PATH } from \"./facebookPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { FACEBOOK_PATH } from \"./facebookPath\";\n\nexport function FacebookIcon({ size = 20, color = colors.white }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path d={FACEBOOK_PATH} fill={color} />\n </Svg>\n );\n}\n","/** Filters icon path — 20×20 viewBox. */\nexport const FILTERS_PATH = \"M5 10H15M2.5 5H17.5M7.5 15H12.5\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { FILTERS_PATH } from \"./filtersPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { FILTERS_PATH } from \"./filtersPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function FiltersIcon({ size = 20, color = colors.grey200, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={FILTERS_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Heart icon path — 16×16 viewBox. */\nexport const HEART_PATH =\n \"M7.99547 3.42388C6.66257 1.8656 4.43987 1.44643 2.76984 2.87334C1.0998 4.30026 0.864686 6.68598 2.17617 8.3736C3.26659 9.77674 6.56656 12.7361 7.64811 13.6939C7.76911 13.801 7.82961 13.8546 7.90018 13.8757C7.96178 13.8941 8.02917 13.8941 8.09077 13.8757C8.16134 13.8546 8.22184 13.801 8.34284 13.6939C9.42439 12.7361 12.7244 9.77674 13.8148 8.3736C15.1263 6.68598 14.9199 4.28525 13.2211 2.87334C11.5224 1.46144 9.32838 1.8656 7.99547 3.42388Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { HEART_PATH } from \"./heartPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { HEART_PATH } from \"./heartPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function HeartIcon({ size = 20, color = colors.primary, strokeWidth = 1.5 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={HEART_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </Svg>\n );\n}\n","/** Globe paths — 20×20 viewBox. */\nexport const GLOBE_PATH =\n \"M18.3333 10C18.3333 14.6024 14.6024 18.3333 10 18.3333M18.3333 10C18.3333 5.39763 14.6024 1.66667 10 1.66667M18.3333 10H1.66667M10 18.3333C5.39763 18.3333 1.66667 14.6024 1.66667 10M10 18.3333C12.0833 16.0511 13.2675 13.0836 13.3333 10C13.2675 6.91643 12.0833 3.94892 10 1.66667M10 18.3333C7.91667 16.0511 6.73248 13.0836 6.66667 10C6.73248 6.91643 7.91667 3.94892 10 1.66667M1.66667 10C1.66667 5.39763 5.39763 1.66667 10 1.66667\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\nimport { GLOBE_PATH } from \"./globePath\";\n\nexport function GlobeIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={GLOBE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\nexport { GLOBE_PATH } from \"./globePath\";\n","/** HelpCircle icon path — 16×16 viewBox. */\nexport const HELP_CIRCLE_PATH =\n \"M6.99971 6.00149C7.11717 5.66757 7.34902 5.386 7.6542 5.20665C7.95937 5.0273 8.31817 4.96174 8.66705 5.02158C9.01593 5.08142 9.33238 5.2628 9.56034 5.5336C9.7883 5.8044 9.91306 6.14714 9.91254 6.50112C9.91254 7.50037 8.41365 8 8.41365 8M8.43298 10H8.43964M8.33304 13.3333C11.4627 13.3333 13.9997 10.7963 13.9997 7.66667C13.9997 4.53705 11.4627 2 8.33304 2C5.20343 2 2.66638 4.53705 2.66638 7.66667C2.66638 8.3 2.77027 8.90906 2.96196 9.47774C3.03409 9.69175 3.07016 9.79875 3.07666 9.88095C3.08309 9.96213 3.07823 10.019 3.05814 10.098C3.03781 10.1779 2.99291 10.261 2.9031 10.4272L1.81267 12.4456C1.65713 12.7335 1.57936 12.8774 1.59676 12.9885C1.61192 13.0853 1.66887 13.1705 1.75249 13.2215C1.84849 13.2801 2.01124 13.2632 2.33674 13.2296L5.75075 12.8767C5.85414 12.866 5.90583 12.8606 5.95295 12.8624C5.99929 12.8642 6.03201 12.8686 6.0772 12.879C6.12315 12.8896 6.18092 12.9118 6.29648 12.9564C6.92851 13.1999 7.61519 13.3333 8.33304 13.3333Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { HELP_CIRCLE_PATH } from \"./helpCirclePath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { HELP_CIRCLE_PATH } from \"./helpCirclePath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function HelpCircleIcon({\n size = 20,\n color = colors.primary,\n strokeWidth = 1.5,\n}: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={HELP_CIRCLE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const HOME_PATH =\n \"M1.66675 16.6667H3.33341M3.33341 16.6667H8.33341M3.33341 16.6667V9.54352C3.33341 9.09823 3.33341 8.87548 3.38756 8.66828C3.43554 8.48466 3.51491 8.31089 3.6215 8.15387C3.74178 7.97668 3.90895 7.82974 4.24406 7.53652L8.24538 4.03537C8.86662 3.49178 9.17726 3.21997 9.5271 3.11652C9.83559 3.02529 10.1644 3.02529 10.4729 3.11652C10.823 3.22005 11.1341 3.49212 11.7563 4.03652L15.7563 7.53652C16.0914 7.82974 16.2586 7.97668 16.3789 8.15387C16.4855 8.31089 16.5642 8.48466 16.6122 8.66828C16.6664 8.87548 16.6667 9.09824 16.6667 9.54352V16.6667M8.33341 16.6667H11.6667M8.33341 16.6667V13.3334C8.33341 12.4129 9.07961 11.6667 10.0001 11.6667C10.9206 11.6667 11.6667 12.4129 11.6667 13.3334V16.6667M11.6667 16.6667H16.6667M16.6667 16.6667H18.3334\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { HOME_PATH } from \"./homePath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { HOME_PATH } from \"./homePath\";\n\nexport function HomeIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={HOME_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const INSTAGRAM_PATH =\n \"M6.49984 1.66748H13.4998C16.1665 1.66748 18.3332 3.83415 18.3332 6.50081V13.5008C18.3332 14.7827 17.8239 16.0121 16.9175 16.9185C16.0111 17.8249 14.7817 18.3341 13.4998 18.3341H6.49984C3.83317 18.3341 1.6665 16.1675 1.6665 13.5008V6.50081C1.6665 5.21893 2.17573 3.98956 3.08215 3.08313C3.98858 2.17671 5.21796 1.66748 6.49984 1.66748ZM6.33317 3.33415C5.53752 3.33415 4.77446 3.65022 4.21185 4.21283C3.64924 4.77544 3.33317 5.5385 3.33317 6.33415V13.6675C3.33317 15.3258 4.67484 16.6675 6.33317 16.6675H13.6665C14.4622 16.6675 15.2252 16.3514 15.7878 15.7888C16.3504 15.2262 16.6665 14.4631 16.6665 13.6675V6.33415C16.6665 4.67581 15.3248 3.33415 13.6665 3.33415H6.33317ZM14.3748 4.58415C14.6511 4.58415 14.9161 4.69389 15.1114 4.88924C15.3068 5.08459 15.4165 5.34955 15.4165 5.62581C15.4165 5.90208 15.3068 6.16703 15.1114 6.36238C14.9161 6.55773 14.6511 6.66748 14.3748 6.66748C14.0986 6.66748 13.8336 6.55773 13.6383 6.36238C13.4429 6.16703 13.3332 5.90208 13.3332 5.62581C13.3332 5.34955 13.4429 5.08459 13.6383 4.88924C13.8336 4.69389 14.0986 4.58415 14.3748 4.58415ZM9.99984 5.83415C11.1049 5.83415 12.1647 6.27313 12.9461 7.05454C13.7275 7.83594 14.1665 8.89574 14.1665 10.0008C14.1665 11.1059 13.7275 12.1657 12.9461 12.9471C12.1647 13.7285 11.1049 14.1675 9.99984 14.1675C8.89477 14.1675 7.83496 13.7285 7.05356 12.9471C6.27216 12.1657 5.83317 11.1059 5.83317 10.0008C5.83317 8.89574 6.27216 7.83594 7.05356 7.05454C7.83496 6.27313 8.89477 5.83415 9.99984 5.83415ZM9.99984 7.50081C9.3368 7.50081 8.70091 7.76421 8.23207 8.23305C7.76323 8.70189 7.49984 9.33777 7.49984 10.0008C7.49984 10.6639 7.76323 11.2997 8.23207 11.7686C8.70091 12.2374 9.3368 12.5008 9.99984 12.5008C10.6629 12.5008 11.2988 12.2374 11.7676 11.7686C12.2364 11.2997 12.4998 10.6639 12.4998 10.0008C12.4998 9.33777 12.2364 8.70189 11.7676 8.23305C11.2988 7.76421 10.6629 7.50081 9.99984 7.50081Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { INSTAGRAM_PATH } from \"./instagramPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { INSTAGRAM_PATH } from \"./instagramPath\";\n\nexport function InstagramIcon({ size = 20, color = colors.white }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path d={INSTAGRAM_PATH} fill={color} />\n </Svg>\n );\n}\n","export const KEY_PATH =\n \"M5.28673 10.0002L7.0545 11.768M7.6435 7.64301L9.41127 9.41078M10.0003 5.28624L11.768 7.05401M4.22553 11.0604L11.0609 4.22505C11.7209 3.56502 12.0513 3.235 12.4318 3.11136C12.7666 3.00259 13.127 3.00259 13.4618 3.11136C13.8421 3.23494 14.1718 3.56464 14.8311 4.22393L15.775 5.16785C16.4351 5.82788 16.7654 6.15867 16.8891 6.53922C16.9979 6.87396 16.9976 7.23381 16.8889 7.56855C16.7652 7.9491 16.4353 8.27937 15.7753 8.9394L8.93989 15.7748C8.27986 16.4348 7.94959 16.7647 7.56904 16.8884C7.2343 16.9971 6.87445 16.9974 6.53971 16.8886C6.15916 16.765 5.82837 16.4346 5.16834 15.7745L4.22441 14.8306C3.56513 14.1713 3.23542 13.8416 3.11185 13.4613C3.00308 13.1266 3.00308 12.7661 3.11185 12.4313C3.23549 12.0508 3.56551 11.7204 4.22553 11.0604Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { KEY_PATH } from \"./keyPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { KEY_PATH } from \"./keyPath\";\n\nexport function KeyIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={KEY_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** LayoutGrid icon path — 16×16 viewBox. */\nexport const LAYOUT_GRID_PATH =\n \"M4.33333 4.33333H4.34M11.6667 4.33333H11.6733M4.33333 11.6667H4.34M8.66667 8.66667H8.67333M11.6667 11.6667H11.6733M11.3333 14H14V11.3333M9.33333 11V14M14 9.33333H11M10.4 6.66667H12.9333C13.3067 6.66667 13.4934 6.66667 13.636 6.594C13.7614 6.53009 13.8634 6.4281 13.9273 6.30266C14 6.16005 14 5.97337 14 5.6V3.06667C14 2.6933 14 2.50661 13.9273 2.36401C13.8634 2.23856 13.7614 2.13658 13.636 2.07266C13.4934 2 13.3067 2 12.9333 2H10.4C10.0266 2 9.83995 2 9.69734 2.07266C9.5719 2.13658 9.46991 2.23856 9.406 2.36401C9.33333 2.50661 9.33333 2.6933 9.33333 3.06667V5.6C9.33333 5.97337 9.33333 6.16005 9.406 6.30266C9.46991 6.4281 9.5719 6.53009 9.69734 6.594C9.83995 6.66667 10.0266 6.66667 10.4 6.66667ZM3.06667 6.66667H5.6C5.97337 6.66667 6.16005 6.66667 6.30266 6.594C6.4281 6.53009 6.53009 6.4281 6.594 6.30266C6.66667 6.16005 6.66667 5.97337 6.66667 5.6V3.06667C6.66667 2.6933 6.66667 2.50661 6.594 2.36401C6.53009 2.23856 6.4281 2.13658 6.30266 2.07266C6.16005 2 5.97337 2 5.6 2H3.06667C2.6933 2 2.50661 2 2.36401 2.07266C2.23856 2.13658 2.13658 2.23856 2.07266 2.36401C2 2.50661 2 2.6933 2 3.06667V5.6C2 5.97337 2 6.16005 2.07266 6.30266C2.13658 6.4281 2.23856 6.53009 2.36401 6.594C2.50661 6.66667 2.6933 6.66667 3.06667 6.66667ZM3.06667 14H5.6C5.97337 14 6.16005 14 6.30266 13.9273C6.4281 13.8634 6.53009 13.7614 6.594 13.636C6.66667 13.4934 6.66667 13.3067 6.66667 12.9333V10.4C6.66667 10.0266 6.66667 9.83995 6.594 9.69734C6.53009 9.5719 6.4281 9.46991 6.30266 9.406C6.16005 9.33333 5.97337 9.33333 5.6 9.33333H3.06667C2.6933 9.33333 2.50661 9.33333 2.36401 9.406C2.23856 9.46991 2.13658 9.5719 2.07266 9.69734C2 9.83995 2 10.0266 2 10.4V12.9333C2 13.3067 2 13.4934 2.07266 13.636C2.13658 13.7614 2.23856 13.8634 2.36401 13.9273C2.50661 14 2.6933 14 3.06667 14Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { LAYOUT_GRID_PATH } from \"./layoutGridPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { LAYOUT_GRID_PATH } from \"./layoutGridPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function LayoutGridIcon({\n size = 20,\n color = colors.primary,\n strokeWidth = 1.5,\n}: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={LAYOUT_GRID_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const LINKEDIN_PATH =\n \"M15.8333 2.50098C16.2754 2.50098 16.6993 2.67657 17.0118 2.98913C17.3244 3.30169 17.5 3.72562 17.5 4.16764V15.8343C17.5 16.2763 17.3244 16.7003 17.0118 17.0128C16.6993 17.3254 16.2754 17.501 15.8333 17.501H4.16667C3.72464 17.501 3.30072 17.3254 2.98816 17.0128C2.67559 16.7003 2.5 16.2763 2.5 15.8343V4.16764C2.5 3.72562 2.67559 3.30169 2.98816 2.98913C3.30072 2.67657 3.72464 2.50098 4.16667 2.50098H15.8333ZM15.4167 15.4176V11.001C15.4167 10.2805 15.1304 9.58948 14.621 9.08C14.1115 8.57053 13.4205 8.28431 12.7 8.28431C11.9917 8.28431 11.1667 8.71764 10.7667 9.36764V8.44264H8.44167V15.4176H10.7667V11.3093C10.7667 10.6676 11.2833 10.1426 11.925 10.1426C12.2344 10.1426 12.5312 10.2656 12.75 10.4844C12.9687 10.7031 13.0917 10.9999 13.0917 11.3093V15.4176H15.4167ZM5.73333 7.13431C6.10464 7.13431 6.46073 6.98681 6.72328 6.72426C6.98583 6.46171 7.13333 6.10561 7.13333 5.73431C7.13333 4.95931 6.50833 4.32598 5.73333 4.32598C5.35982 4.32598 5.0016 4.47435 4.73749 4.73847C4.47338 5.00258 4.325 5.3608 4.325 5.73431C4.325 6.50931 4.95833 7.13431 5.73333 7.13431ZM6.89167 15.4176V8.44264H4.58333V15.4176H6.89167Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { LINKEDIN_PATH } from \"./linkedinPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { LINKEDIN_PATH } from \"./linkedinPath\";\n\nexport function LinkedInIcon({ size = 20, color = colors.white }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path d={LINKEDIN_PATH} fill={color} />\n </Svg>\n );\n}\n","/** Four-tile list view icon path — 20×20 viewBox. */\nexport const LIST_VIEW_PATH =\n \"M7 2.5H3.83333C3.36662 2.5 3.13327 2.5 2.95501 2.59083C2.79821 2.67072 2.67072 2.79821 2.59083 2.95501C2.5 3.13327 2.5 3.36662 2.5 3.83333V7C2.5 7.46671 2.5 7.70007 2.59083 7.87833C2.67072 8.03513 2.79821 8.16261 2.95501 8.24251C3.13327 8.33333 3.36662 8.33333 3.83333 8.33333H7C7.46671 8.33333 7.70007 8.33333 7.87833 8.24251C8.03513 8.16261 8.16261 8.03513 8.24251 7.87833C8.33333 7.70007 8.33333 7.46671 8.33333 7V3.83333C8.33333 3.36662 8.33333 3.13327 8.24251 2.95501C8.16261 2.79821 8.03513 2.67072 7.87833 2.59083C7.70007 2.5 7.46671 2.5 7 2.5ZM16.1667 2.5H13C12.5333 2.5 12.2999 2.5 12.1217 2.59083C11.9649 2.67072 11.8374 2.79821 11.7575 2.95501C11.6667 3.13327 11.6667 3.36662 11.6667 3.83333V7C11.6667 7.46671 11.6667 7.70007 11.7575 7.87833C11.8374 8.03513 11.9649 8.16261 12.1217 8.24251C12.2999 8.33333 12.5333 8.33333 13 8.33333H16.1667C16.6334 8.33333 16.8667 8.33333 17.045 8.24251C17.2018 8.16261 17.3293 8.03513 17.4092 7.87833C17.5 7.70007 17.5 7.46671 17.5 7V3.83333C17.5 3.36662 17.5 3.13327 17.4092 2.95501C17.3293 2.79821 17.2018 2.67072 17.045 2.59083C16.8667 2.5 16.6334 2.5 16.1667 2.5ZM16.1667 11.6667H13C12.5333 11.6667 12.2999 11.6667 12.1217 11.7575C11.9649 11.8374 11.8374 11.9649 11.7575 12.1217C11.6667 12.2999 11.6667 12.5333 11.6667 13V16.1667C11.6667 16.6334 11.6667 16.8667 11.7575 17.045C11.8374 17.2018 11.9649 17.3293 12.1217 17.4092C12.2999 17.5 12.5333 17.5 13 17.5H16.1667C16.6334 17.5 16.8667 17.5 17.045 17.4092C17.2018 17.3293 17.3293 17.2018 17.4092 17.045C17.5 16.8667 17.5 16.6334 17.5 16.1667V13C17.5 12.5333 17.5 12.2999 17.4092 12.1217C17.3293 11.9649 17.2018 11.8374 17.045 11.7575C16.8667 11.6667 16.6334 11.6667 16.1667 11.6667ZM7 11.6667H3.83333C3.36662 11.6667 3.13327 11.6667 2.95501 11.7575C2.79821 11.8374 2.67072 11.9649 2.59083 12.1217C2.5 12.2999 2.5 12.5333 2.5 13V16.1667C2.5 16.6334 2.5 16.8667 2.59083 17.045C2.67072 17.2018 2.79821 17.3293 2.95501 17.4092C3.13327 17.5 3.36662 17.5 3.83333 17.5H7C7.46671 17.5 7.70007 17.5 7.87833 17.4092C8.03513 17.3293 8.16261 17.2018 8.24251 17.045C8.33333 16.8667 8.33333 16.6334 8.33333 16.1667V13C8.33333 12.5333 8.33333 12.2999 8.24251 12.1217C8.16261 11.9649 8.03513 11.8374 7.87833 11.7575C7.70007 11.6667 7.46671 11.6667 7 11.6667Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { LIST_VIEW_PATH } from \"./listViewPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { LIST_VIEW_PATH } from \"./listViewPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function ListViewIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={LIST_VIEW_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Location pin icon path — 20×20 viewBox. */\nexport const LOCATION_PIN_PATH =\n \"M4.16675 8.26904C4.16675 12.3122 7.70381 15.6558 9.26941 16.9377C9.49347 17.1211 9.60684 17.214 9.774 17.261C9.90417 17.2977 10.0957 17.2977 10.2259 17.261C10.3934 17.2139 10.506 17.122 10.7309 16.9378C12.2965 15.6559 15.8333 12.3126 15.8333 8.26941C15.8333 6.73932 15.2188 5.27171 14.1248 4.18977C13.0309 3.10783 11.5472 2.5 10.0001 2.5C8.45305 2.5 6.96925 3.10792 5.87529 4.18986C4.78133 5.2718 4.16675 6.73895 4.16675 8.26904ZM8.33341 7.5C8.33341 8.42047 9.07961 9.16667 10.0001 9.16667C10.9206 9.16667 11.6667 8.42047 11.6667 7.5C11.6667 6.57953 10.9206 5.83333 10.0001 5.83333C9.07961 5.83333 8.33341 6.57953 8.33341 7.5Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { LOCATION_PIN_PATH } from \"./locationPinPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { LOCATION_PIN_PATH } from \"./locationPinPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function LocationPinIcon({ size = 20, color = colors.grey200, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={LOCATION_PIN_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const LOCATION_USER_PATH =\n \"M10.9127 8.5267C10.8313 8.4943 10.7443 8.47826 10.6566 8.47949C10.569 8.48073 10.4825 8.4992 10.402 8.53387C10.3216 8.56854 10.2487 8.61872 10.1876 8.68154C10.1265 8.74437 10.0784 8.81861 10.046 8.90003C10.0136 8.98145 9.99758 9.06845 9.99882 9.15607C10 9.24369 10.0185 9.3302 10.0532 9.41068C10.0879 9.49116 10.138 9.56402 10.2009 9.62511C10.2637 9.68619 10.3379 9.7343 10.4193 9.7667C11.3927 10.1534 11.9993 10.7534 11.9993 11.3334C11.9993 12.28 10.3593 13.3334 7.99935 13.3334C5.63935 13.3334 3.99935 12.28 3.99935 11.3334C3.99935 10.7534 4.60602 10.1534 5.57935 9.7667C5.74378 9.70128 5.87549 9.57321 5.94551 9.41068C6.01552 9.24815 6.0181 9.06446 5.95268 8.90003C5.88726 8.73559 5.7592 8.60388 5.59667 8.53387C5.43414 8.46386 5.25045 8.46128 5.08602 8.5267C3.57268 9.1267 2.66602 10.1734 2.66602 11.3334C2.66602 13.2 5.00602 14.6667 7.99935 14.6667C10.9927 14.6667 13.3327 13.2 13.3327 11.3334C13.3327 10.1734 12.426 9.1267 10.9127 8.5267ZM7.33268 6.57336V11.3334C7.33268 11.5102 7.40292 11.6797 7.52794 11.8048C7.65297 11.9298 7.82254 12 7.99935 12C8.17616 12 8.34573 11.9298 8.47075 11.8048C8.59578 11.6797 8.66602 11.5102 8.66602 11.3334V6.57336C9.29445 6.4111 9.84214 6.02521 10.2064 5.48802C10.5707 4.95084 10.7265 4.29924 10.6448 3.65536C10.563 3.01149 10.2492 2.41954 9.76217 1.99048C9.27517 1.56142 8.6484 1.32471 7.99935 1.32471C7.3503 1.32471 6.72353 1.56142 6.23653 1.99048C5.74952 2.41954 5.43572 3.01149 5.35394 3.65536C5.27215 4.29924 5.42801 4.95084 5.79228 5.48802C6.15656 6.02521 6.70424 6.4111 7.33268 6.57336V6.57336ZM7.99935 2.6667C8.26306 2.6667 8.52084 2.74489 8.74011 2.8914C8.95937 3.03791 9.13027 3.24615 9.23119 3.48978C9.33211 3.73342 9.35851 4.00151 9.30706 4.26015C9.25562 4.51879 9.12863 4.75637 8.94216 4.94284C8.75569 5.12931 8.51811 5.2563 8.25947 5.30774C8.00083 5.35919 7.73274 5.33279 7.4891 5.23187C7.24547 5.13095 7.03723 4.96005 6.89072 4.74079C6.74421 4.52152 6.66602 4.26374 6.66602 4.00003C6.66602 3.64641 6.80649 3.30727 7.05654 3.05722C7.30659 2.80717 7.64573 2.6667 7.99935 2.6667Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\nimport { LOCATION_USER_PATH } from \"./locationUserPath\";\n\nexport { LOCATION_USER_PATH } from \"./locationUserPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function LocationUserIcon({ size = 16, color = colors.grey0 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path d={LOCATION_USER_PATH} fill={color} />\n </Svg>\n );\n}\n","/** Padlock — stroke path, 32×32 viewBox. */\nexport const LOCK_PATH =\n \"M22.6673 13.3333V10.6667C22.6673 6.98477 19.6825 4 16.0007 4C12.3188 4 9.33398 6.98477 9.33398 10.6667V13.3333M16.0007 19.3333V22M11.734 28H20.2673C22.5075 28 23.6276 28 24.4833 27.564C25.2359 27.1805 25.8479 26.5686 26.2313 25.816C26.6673 24.9603 26.6673 23.8402 26.6673 21.6V19.7333C26.6673 17.4931 26.6673 16.373 26.2313 15.5174C25.8479 14.7647 25.2359 14.1528 24.4833 13.7693C23.6276 13.3333 22.5075 13.3333 20.2673 13.3333H11.734C9.49377 13.3333 8.37367 13.3333 7.51802 13.7693C6.76537 14.1528 6.15345 14.7647 5.76996 15.5174C5.33398 16.373 5.33398 17.4931 5.33398 19.7333V21.6C5.33398 23.8402 5.33398 24.9603 5.76996 25.816C6.15345 26.5686 6.76537 27.1805 7.51802 27.564C8.37367 28 9.49377 28 11.734 28Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\nimport { LOCK_PATH } from \"./lockPath\";\n\nexport { LOCK_PATH } from \"./lockPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function LockIcon({ size = 32, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 32 32\" fill=\"none\">\n <Path\n d={LOCK_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** LogOut icon path — 16×16 viewBox. */\nexport const LOG_OUT_PATH =\n \"M10.6667 4.66667L14 8L10.6667 11.3333M14 8H6M6 2H5.2C4.0799 2 3.51984 2 3.09202 2.21799C2.7157 2.40973 2.40973 2.71569 2.21799 3.09202C2 3.51984 2 4.07989 2 5.2V10.8C2 11.9201 2 12.4802 2.21799 12.908C2.40973 13.2843 2.71569 13.5903 3.09202 13.782C3.51984 14 4.0799 14 5.2 14H6\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { LOG_OUT_PATH } from \"./logOutPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { LOG_OUT_PATH } from \"./logOutPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function LogOutIcon({ size = 20, color = colors.red, strokeWidth = 1.5 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={LOG_OUT_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const MAIL_PATH =\n \"M3.33333 4.99984L8.42303 8.84339L8.42473 8.8448C8.98987 9.25924 9.27261 9.46658 9.5823 9.54668C9.85602 9.61748 10.1438 9.61748 10.4175 9.54668C10.7274 9.46651 11.011 9.25856 11.5771 8.84339C11.5771 8.84339 14.8417 6.33812 16.6667 4.99984M2.5 13.1667V6.83333C2.5 5.89991 2.5 5.43285 2.68166 5.07633C2.84144 4.76273 3.09623 4.50795 3.40983 4.34816C3.76635 4.1665 4.23341 4.1665 5.16683 4.1665H14.8335C15.7669 4.1665 16.233 4.1665 16.5895 4.34816C16.9031 4.50795 17.1587 4.76273 17.3185 5.07633C17.5 5.43251 17.5 5.899 17.5 6.8306V13.1695C17.5 14.1011 17.5 14.5669 17.3185 14.9231C17.1587 15.2367 16.9031 15.4919 16.5895 15.6517C16.2333 15.8332 15.7675 15.8332 14.8359 15.8332H5.16409C4.23249 15.8332 3.766 15.8332 3.40983 15.6517C3.09623 15.4919 2.84144 15.2367 2.68166 14.9231C2.5 14.5666 2.5 14.1001 2.5 13.1667Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { MAIL_PATH } from \"./mailPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { MAIL_PATH } from \"./mailPath\";\n\nexport function MailIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={MAIL_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Folded map icon path — 20×20 viewBox. */\nexport const MAP_VIEW_PATH =\n \"M13.3332 4.99984L7.49984 1.6665L1.6665 4.99984V18.3332L7.49984 14.9998M13.3332 4.99984L18.3332 1.6665V14.9998L13.3332 18.3332L7.49984 14.9998M7.49984 14.9998V1.6665M13.3332 18.3332V4.99984\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { MAP_VIEW_PATH } from \"./mapViewPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { MAP_VIEW_PATH } from \"./mapViewPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function MapViewIcon({ size = 20, color = colors.grey400, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={MAP_VIEW_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Map control paths — 20×20 viewBox. */\nexport const MAP_EXPAND_PATH = \"M8.33366 15.8332H4.16699V11.6665M11.667 4.1665H15.8337V8.33317\";\n\nexport const MAP_COLLAPSE_PATH = \"M4.16699 11.6665H8.33366V15.8332M15.8337 8.33317H11.667V4.1665\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\nimport { MAP_COLLAPSE_PATH, MAP_EXPAND_PATH } from \"./mapControlPaths\";\n\nfunction MapControlIcon({\n path,\n size = 20,\n color = colors.white,\n strokeWidth = 2,\n}: IconProps & { path: string }) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={path}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\nexport function MapExpandIcon(props: IconProps) {\n return <MapControlIcon {...props} path={MAP_EXPAND_PATH} />;\n}\n\nexport function MapCollapseIcon(props: IconProps) {\n return <MapControlIcon {...props} path={MAP_COLLAPSE_PATH} />;\n}\n","export const MENU_PATH = \"M8 12.6667H17.3333M1 6.83332H17.3333M8 0.999985H17.3333\";\n\nexport const MENU_CLOSE_PATH = \"M15 1L1 15M1 1L15 15\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\nimport { MENU_CLOSE_PATH, MENU_PATH } from \"./menuPath\";\n\nexport { MENU_CLOSE_PATH, MENU_PATH } from \"./menuPath\";\n\nexport interface MenuIconProps extends IconProps {\n open?: boolean;\n}\n\nexport function MenuIcon({\n size = 19,\n color = colors.white,\n strokeWidth = 2,\n open = false,\n}: MenuIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 19 19\" fill=\"none\">\n <Path\n d={open ? MENU_CLOSE_PATH : MENU_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n transform={open ? \"translate(1.5 1.5)\" : \"translate(0 2.5)\"}\n />\n </Svg>\n );\n}\n","export const MINUS_PATH = \"M3.33337 8H12.6667\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\nimport { MINUS_PATH } from \"./minusPath\";\n\nexport { MINUS_PATH } from \"./minusPath\";\n\nexport function MinusIcon({ size = 16, color = colors.white, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={MINUS_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const NAVIGATE_PATH =\n \"M5.691 14.2339C11.5836 17.7694 16.2976 13.0554 15.7084 4.21658C6.86968 3.62732 2.15584 8.34151 5.691 14.2339ZM5.691 14.2339C5.69093 14.2338 5.69107 14.234 5.691 14.2339ZM5.691 14.2339L4.16675 15.7576M5.691 14.2339L8.88079 11.0436\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { NAVIGATE_PATH } from \"./navigatePath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { NAVIGATE_PATH } from \"./navigatePath\";\n\nexport function NavigateIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={NAVIGATE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const PHONE_PATH =\n \"M7.91872 3.54768C7.66561 2.91492 7.05276 2.5 6.37126 2.5H4.07895C3.20692 2.5 2.5 3.20675 2.5 4.07878C2.5 11.491 8.50898 17.5 15.9212 17.5C16.7933 17.5 17.5 16.793 17.5 15.921L17.5004 13.6283C17.5004 12.9468 17.0856 12.334 16.4528 12.0809L14.2558 11.2024C13.6874 10.9751 13.0402 11.0774 12.57 11.4693L12.0029 11.9422C11.3407 12.4941 10.3664 12.4502 9.75683 11.8407L8.16018 10.2425C7.55066 9.63302 7.50561 8.65945 8.05745 7.99724L8.53027 7.43025C8.92218 6.95996 9.02541 6.31263 8.79805 5.74424L7.91872 3.54768Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { PHONE_PATH } from \"./phonePath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { PHONE_PATH } from \"./phonePath\";\n\nexport function PhoneIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={PHONE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const PLUS_PATH = \"M8.00004 3.33325V12.6666M3.33337 7.99992H12.6667\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\nimport { PLUS_PATH } from \"./plusPath\";\n\nexport { PLUS_PATH } from \"./plusPath\";\n\nexport function PlusIcon({ size = 16, color = colors.white, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={PLUS_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Reset / refresh — viewBox 0 0 20 20. */\nexport const REFRESH_PATH =\n \"M17.4993 8.33333C17.4993 8.33333 15.8285 6.05685 14.4712 4.69854C13.1138 3.34022 11.238 2.5 9.16602 2.5C5.02388 2.5 1.66602 5.85786 1.66602 10C1.66602 14.1421 5.02388 17.5 9.16602 17.5C12.5853 17.5 15.4701 15.2119 16.3729 12.0833M12.4993 8.33333H17.4993V3.33333\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\nimport { REFRESH_PATH } from \"./refreshPath\";\n\nexport function RefreshIcon({ size = 20, color = colors.white, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={REFRESH_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\nexport { REFRESH_PATH } from \"./refreshPath\";\n","/** Refund-in-progress clock — viewBox 0 0 16 16. */\nexport const REFUND_STATUS_PATH =\n \"M15.1333 7.66667L13.8004 9L12.4666 7.66667M13.9634 8.66667C13.9876 8.44778 14 8.22534 14 8C14 4.68629 11.3137 2 8 2C4.68629 2 2 4.68629 2 8C2 11.3137 4.68629 14 8 14C9.88484 14 11.5667 13.1309 12.6667 11.7716M8 4.66667V8L10 9.33333\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\nimport { REFUND_STATUS_PATH } from \"./refundStatusPath\";\n\nexport function RefundStatusIcon({\n size = 16,\n color = colors.primary,\n strokeWidth = 2,\n}: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={REFUND_STATUS_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\nexport { REFUND_STATUS_PATH } from \"./refundStatusPath\";\n","/** Search (magnifying glass) paths — 20×20 viewBox. */\nexport const SEARCH_CIRCLE_PATH =\n \"M9.16667 15.8333C12.8486 15.8333 15.8333 12.8486 15.8333 9.16667C15.8333 5.48477 12.8486 2.5 9.16667 2.5C5.48477 2.5 2.5 5.48477 2.5 9.16667C2.5 12.8486 5.48477 15.8333 9.16667 15.8333Z\";\n\nexport const SEARCH_HANDLE_PATH = \"M17.5 17.5L13.875 13.875\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { SEARCH_CIRCLE_PATH, SEARCH_HANDLE_PATH } from \"./searchPath\";\nimport { colors } from \"../../theme\";\n\nexport { SEARCH_CIRCLE_PATH, SEARCH_HANDLE_PATH } from \"./searchPath\";\n\ninterface SearchIconProps {\n size?: number;\n color?: string;\n strokeWidth?: number;\n}\n\n/** Native — react-native-svg (peer dependency). */\nexport function SearchIcon({\n size = 20,\n color = colors.primary,\n strokeWidth = 2,\n}: SearchIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={SEARCH_CIRCLE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <Path\n d={SEARCH_HANDLE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Settings icon path — 16×16 viewBox. */\nexport const SETTINGS_PATH =\n \"M8.00004 10C9.10461 10 10 9.10457 10 8C10 6.89543 9.10461 6 8.00004 6C6.89547 6 6.00004 6.89543 6.00004 8C6.00004 9.10457 6.89547 10 8.00004 10Z M12.4849 9.81818C12.4042 10.001 12.3801 10.2038 12.4158 10.4004C12.4514 10.597 12.5452 10.7784 12.6849 10.9212L12.7213 10.9576C12.834 11.0702 12.9234 11.2038 12.9844 11.351C13.0454 11.4981 13.0768 11.6559 13.0768 11.8152C13.0768 11.9744 13.0454 12.1322 12.9844 12.2793C12.9234 12.4265 12.834 12.5602 12.7213 12.6727C12.6087 12.7854 12.475 12.8748 12.3278 12.9358C12.1807 12.9968 12.023 13.0282 11.8637 13.0282C11.7044 13.0282 11.5467 12.9968 11.3995 12.9358C11.2524 12.8748 11.1187 12.7854 11.0061 12.6727L10.9697 12.6364C10.8269 12.4966 10.6455 12.4029 10.4489 12.3673C10.2523 12.3316 10.0495 12.3557 9.86671 12.4364C9.68745 12.5132 9.53458 12.6408 9.42689 12.8034C9.31921 12.966 9.26142 13.1565 9.26065 13.3515V13.4545C9.26065 13.776 9.13294 14.0843 8.90562 14.3116C8.67831 14.539 8.37 14.6667 8.04853 14.6667C7.72705 14.6667 7.41874 14.539 7.19143 14.3116C6.96411 14.0843 6.8364 13.776 6.8364 13.4545V13.4C6.83171 13.1994 6.76678 13.0048 6.65005 12.8416C6.53331 12.6784 6.37018 12.5541 6.18186 12.4848C5.99906 12.4042 5.79629 12.3801 5.59968 12.4158C5.40308 12.4514 5.22166 12.5451 5.07883 12.6849L5.04246 12.7212C4.92989 12.8339 4.79621 12.9233 4.64906 12.9843C4.50191 13.0453 4.34418 13.0767 4.18489 13.0767C4.0256 13.0767 3.86787 13.0453 3.72072 12.9843C3.57357 12.9233 3.43989 12.8339 3.32731 12.7212C3.21461 12.6086 3.12521 12.475 3.06421 12.3278C3.00321 12.1807 2.97181 12.0229 2.97181 11.8636C2.97181 11.7043 3.00321 11.5466 3.06421 11.3995C3.12521 11.2523 3.21461 11.1186 3.32731 11.0061L3.36368 10.9697C3.5034 10.8269 3.59712 10.6454 3.63277 10.4488C3.66842 10.2522 3.64435 10.0495 3.56368 9.86667C3.48685 9.68741 3.35929 9.53454 3.19669 9.42686C3.03409 9.31917 2.84355 9.26139 2.64853 9.26061H2.5455C2.22402 9.26061 1.91571 9.1329 1.6884 8.90559C1.46108 8.67827 1.33337 8.36996 1.33337 8.04849C1.33337 7.72701 1.46108 7.4187 1.6884 7.19139C1.91571 6.96407 2.22402 6.83637 2.5455 6.83637H2.60004C2.80064 6.83167 2.9952 6.76674 3.1584 6.65001C3.32161 6.53328 3.44593 6.37014 3.51519 6.18182C3.59587 5.99902 3.61993 5.79625 3.58429 5.59965C3.54864 5.40304 3.45491 5.22163 3.31519 5.07879L3.27883 5.04243C3.16613 4.92985 3.07672 4.79617 3.01573 4.64902C2.95473 4.50187 2.92333 4.34414 2.92333 4.18485C2.92333 4.02556 2.95473 3.86783 3.01573 3.72068C3.07672 3.57353 3.16613 3.43985 3.27883 3.32728C3.3914 3.21458 3.52509 3.12517 3.67223 3.06417C3.81938 3.00317 3.97711 2.97178 4.1364 2.97178C4.2957 2.97178 4.45343 3.00317 4.60057 3.06417C4.74772 3.12517 4.88141 3.21458 4.99398 3.32728L5.03034 3.36364C5.17318 3.50336 5.3546 3.59708 5.5512 3.63273C5.7478 3.66838 5.95058 3.64431 6.13337 3.56364H6.18186C6.36111 3.48681 6.51399 3.35925 6.62167 3.19665C6.72935 3.03405 6.78714 2.84351 6.78792 2.64849V2.54546C6.78792 2.22398 6.91562 1.91567 7.14294 1.68836C7.37026 1.46104 7.67857 1.33334 8.00004 1.33334C8.32151 1.33334 8.62982 1.46104 8.85714 1.68836C9.08446 1.91567 9.21216 2.22398 9.21216 2.54546V2.6C9.21294 2.79502 9.27073 2.98556 9.37841 3.14816C9.48609 3.31076 9.63897 3.43833 9.81822 3.51515C10.001 3.59583 10.2038 3.6199 10.4004 3.58425C10.597 3.5486 10.7784 3.45487 10.9213 3.31515L10.9576 3.27879C11.0702 3.16609 11.2039 3.07669 11.351 3.01569C11.4982 2.95469 11.6559 2.92329 11.8152 2.92329C11.9745 2.92329 12.1322 2.95469 12.2794 3.01569C12.4265 3.07669 12.5602 3.16609 12.6728 3.27879C12.7855 3.39136 12.8749 3.52505 12.9359 3.6722C12.9969 3.81935 13.0283 3.97707 13.0283 4.13637C13.0283 4.29566 12.9969 4.45339 12.9359 4.60054C12.8749 4.74769 12.7855 4.88137 12.6728 4.99394L12.6364 5.03031C12.4967 5.17314 12.403 5.35456 12.3673 5.55116C12.3317 5.74776 12.3557 5.95054 12.4364 6.13334V6.18182C12.5132 6.36107 12.6408 6.51395 12.8034 6.62163C12.966 6.72932 13.1565 6.7871 13.3516 6.78788H13.4546C13.7761 6.78788 14.0844 6.91559 14.3117 7.1429C14.539 7.37022 14.6667 7.67853 14.6667 8C14.6667 8.32148 14.539 8.62978 14.3117 8.8571C14.0844 9.08442 13.7761 9.21212 13.4546 9.21212H13.4C13.205 9.2129 13.0145 9.27069 12.8519 9.37837C12.6893 9.48605 12.5617 9.63893 12.4849 9.81818Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { SETTINGS_PATH } from \"./settingsPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { SETTINGS_PATH } from \"./settingsPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function SettingsIcon({ size = 20, color = colors.primary, strokeWidth = 1.5 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={SETTINGS_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Show (eye) icon path — 20×20 viewBox. */\nexport const SHOW_PATH =\n \"M1.66669 10C1.66669 10 4.16669 4.16667 10 4.16667C15.8334 4.16667 18.3334 10 18.3334 10C18.3334 10 15.8334 15.8333 10 15.8333C4.16669 15.8333 1.66669 10 1.66669 10Z\";\n\nexport const SHOW_PUPIL_PATH =\n \"M10 12.5C11.3807 12.5 12.5 11.3807 12.5 10C12.5 8.61929 11.3807 7.5 10 7.5C8.61929 7.5 7.5 8.61929 7.5 10C7.5 11.3807 8.61929 12.5 10 12.5Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { SHOW_PATH, SHOW_PUPIL_PATH } from \"./showPath\";\nimport { colors } from \"../../theme\";\n\nexport { SHOW_PATH, SHOW_PUPIL_PATH } from \"./showPath\";\n\ninterface ShowIconProps {\n size?: number;\n color?: string;\n strokeWidth?: number;\n}\n\n/** Native — react-native-svg (peer dependency). */\nexport function ShowIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: ShowIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={SHOW_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <Path\n d={SHOW_PUPIL_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Sidebar icon path — 20×20 viewBox. */\nexport const SIDEBAR_PATH =\n \"M12.5 2.5V17.5M6.5 2.5H13.5C14.9001 2.5 15.6002 2.5 16.135 2.77248C16.6054 3.01217 16.9878 3.39462 17.2275 3.86502C17.5 4.3998 17.5 5.09987 17.5 6.5V13.5C17.5 14.9001 17.5 15.6002 17.2275 16.135C16.9878 16.6054 16.6054 16.9878 16.135 17.2275C15.6002 17.5 14.9001 17.5 13.5 17.5H6.5C5.09987 17.5 4.3998 17.5 3.86502 17.2275C3.39462 16.9878 3.01217 16.6054 2.77248 16.135C2.5 15.6002 2.5 14.9001 2.5 13.5V6.5C2.5 5.09987 2.5 4.3998 2.77248 3.86502C3.01217 3.39462 3.39462 3.01217 3.86502 2.77248C4.3998 2.5 5.09987 2.5 6.5 2.5Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { SIDEBAR_PATH } from \"./sidebarPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { SIDEBAR_PATH } from \"./sidebarPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function SidebarIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={SIDEBAR_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Bidirectional sort icon path — 12×12 viewBox. */\nexport const SORT_PATH = \"M3.5 2V10M5.5 8L3.5 10L1.5 8M8.5 10V2M10.5 4L8.5 2L6.5 4\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { SORT_PATH } from \"./sortPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { SORT_PATH } from \"./sortPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function SortIcon({ size = 12, color = colors.grey150, strokeWidth = 1.5 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 12 12\" fill=\"none\">\n <Path\n d={SORT_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Star icon path — 28×26 viewBox. */\nexport const STAR_PATH =\n \"M12.6112 2.09824C12.9186 1.47565 13.0722 1.16436 13.2808 1.0649C13.4623 0.978367 13.6732 0.978367 13.8546 1.0649C14.0632 1.16436 14.2169 1.47565 14.5242 2.09824L17.4398 8.00486C17.5305 8.18866 17.5759 8.28056 17.6422 8.35192C17.7009 8.41509 17.7713 8.46628 17.8495 8.50264C17.9378 8.54371 18.0392 8.55854 18.242 8.58818L24.7637 9.54142C25.4505 9.6418 25.7938 9.69199 25.9528 9.85973C26.091 10.0057 26.156 10.2062 26.1297 10.4055C26.0995 10.6346 25.8509 10.8767 25.3537 11.361L20.6363 15.9557C20.4893 16.0989 20.4157 16.1706 20.3683 16.2558C20.3263 16.3312 20.2993 16.4141 20.2889 16.4998C20.2772 16.5966 20.2945 16.6978 20.3292 16.9001L21.4423 23.39C21.5597 24.0745 21.6184 24.4167 21.5081 24.6198C21.4121 24.7965 21.2415 24.9205 21.0438 24.9571C20.8165 24.9992 20.5092 24.8376 19.8945 24.5144L14.0642 21.4483C13.8826 21.3527 13.7917 21.305 13.696 21.2862C13.6113 21.2696 13.5242 21.2696 13.4394 21.2862C13.3437 21.305 13.2529 21.3527 13.0713 21.4483L7.24094 24.5144C6.62626 24.8376 6.31892 24.9992 6.09167 24.9571C5.89395 24.9205 5.72334 24.7965 5.62736 24.6198C5.51704 24.4167 5.57574 24.0745 5.69314 23.39L6.80622 16.9001C6.84092 16.6978 6.85828 16.5966 6.84653 16.4998C6.83614 16.4141 6.80919 16.3312 6.76718 16.2558C6.71974 16.1706 6.64621 16.0989 6.49916 15.9557L1.78179 11.361C1.28459 10.8767 1.03599 10.6346 1.00574 10.4055C0.979423 10.2062 1.04445 10.0057 1.18271 9.85973C1.34162 9.69199 1.685 9.6418 2.37177 9.54142L8.89346 8.58818C9.09627 8.55854 9.19768 8.54371 9.286 8.50264C9.36419 8.46628 9.43459 8.41509 9.49329 8.35192C9.55958 8.28056 9.60495 8.18866 9.69567 8.00486L12.6112 2.09824Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { colors } from \"../../theme\";\nimport { STAR_PATH } from \"./starPath\";\nimport type { IconProps } from \"../types\";\n\nexport interface StarIconProps extends IconProps {\n active?: boolean;\n height?: number;\n}\n\n/** Native — active is solid orange; inactive is a grey outline. */\nexport function StarIcon({\n active = false,\n size = 28,\n height,\n color,\n strokeWidth = 2,\n}: StarIconProps) {\n const resolvedColor = color ?? (active ? \"#E38E5E\" : colors.grey150);\n\n return (\n <Svg width={size} height={height ?? (size * 26) / 28} viewBox=\"0 0 28 26\" fill=\"none\">\n <Path\n d={STAR_PATH}\n fill={active ? resolvedColor : \"none\"}\n stroke={resolvedColor}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\nexport { STAR_PATH } from \"./starPath\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { STAR_PATH } from \"../Star/starPath\";\nimport type { IconProps } from \"../types\";\n\ninterface StarFilledIconProps extends IconProps {\n height?: number;\n}\n\n/** Native — supplied solid orange 28×26 star icon. */\nexport function StarFilledIcon({\n size = 28,\n height,\n color = \"#E38E5E\",\n strokeWidth = 2,\n}: StarFilledIconProps) {\n return (\n <Svg width={size} height={height ?? (size * 26) / 28} viewBox=\"0 0 28 26\" fill={color}>\n <Path\n d={STAR_PATH}\n fill={color}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** User icon path — 20×20 viewBox. */\nexport const USER_PATH =\n \"M15.8334 17.5C15.8334 14.2783 13.2217 11.6667 10 11.6667C6.77836 11.6667 4.16669 14.2783 4.16669 17.5M10 9.16667C8.15907 9.16667 6.66669 7.67428 6.66669 5.83333C6.66669 3.99238 8.15907 2.5 10 2.5C11.841 2.5 13.3334 3.99238 13.3334 5.83333C13.3334 7.67428 11.841 9.16667 10 9.16667Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { USER_PATH } from \"./userPath\";\nimport { colors } from \"../../theme\";\n\nexport { USER_PATH } from \"./userPath\";\n\ninterface UserIconProps {\n size?: number;\n color?: string;\n strokeWidth?: number;\n}\n\n/** Native — react-native-svg (peer dependency). */\nexport function UserIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: UserIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={USER_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const USERS_ALT_PATH =\n \"M14.35 14.2566C14.9725 13.7177 15.4718 13.0513 15.814 12.3024C16.1562 11.5536 16.3333 10.7399 16.3333 9.91659C16.3333 8.36949 15.7187 6.88576 14.6248 5.7918C13.5308 4.69783 12.0471 4.08325 10.5 4.08325C8.95289 4.08325 7.46916 4.69783 6.3752 5.7918C5.28124 6.88576 4.66666 8.36949 4.66666 9.91659C4.66665 10.7399 4.84376 11.5536 5.18597 12.3024C5.52818 13.0513 6.02748 13.7177 6.64999 14.2566C5.01682 14.9961 3.6312 16.1904 2.6588 17.6966C1.6864 19.2027 1.16837 20.9571 1.16666 22.7499C1.16666 23.0593 1.28957 23.3561 1.50837 23.5749C1.72716 23.7937 2.0239 23.9166 2.33332 23.9166C2.64274 23.9166 2.93949 23.7937 3.15828 23.5749C3.37707 23.3561 3.49999 23.0593 3.49999 22.7499C3.49999 20.8934 4.23749 19.1129 5.55024 17.8002C6.863 16.4874 8.64347 15.7499 10.5 15.7499C12.3565 15.7499 14.137 16.4874 15.4497 17.8002C16.7625 19.1129 17.5 20.8934 17.5 22.7499C17.5 23.0593 17.6229 23.3561 17.8417 23.5749C18.0605 23.7937 18.3572 23.9166 18.6667 23.9166C18.9761 23.9166 19.2728 23.7937 19.4916 23.5749C19.7104 23.3561 19.8333 23.0593 19.8333 22.7499C19.8316 20.9571 19.3136 19.2027 18.3412 17.6966C17.3688 16.1904 15.9832 14.9961 14.35 14.2566ZM10.5 13.4166C9.80775 13.4166 9.13107 13.2113 8.55549 12.8267C7.97992 12.4421 7.53132 11.8955 7.26641 11.256C7.0015 10.6164 6.93219 9.9127 7.06724 9.23377C7.20229 8.55484 7.53563 7.9312 8.02512 7.44171C8.5146 6.95223 9.13824 6.61889 9.81717 6.48384C10.4961 6.34879 11.1998 6.4181 11.8394 6.68301C12.4789 6.94791 13.0255 7.39652 13.4101 7.97209C13.7947 8.54766 14 9.22435 14 9.91659C14 10.8448 13.6312 11.7351 12.9749 12.3915C12.3185 13.0478 11.4282 13.4166 10.5 13.4166ZM21.8633 13.7899C22.61 12.9491 23.0977 11.9105 23.2678 10.799C23.4378 9.68748 23.2831 8.55051 22.822 7.52492C22.361 6.49933 21.6134 5.62885 20.6692 5.01825C19.725 4.40764 18.6244 4.08295 17.5 4.08325C17.1906 4.08325 16.8938 4.20617 16.675 4.42496C16.4562 4.64375 16.3333 4.9405 16.3333 5.24992C16.3333 5.55934 16.4562 5.85608 16.675 6.07488C16.8938 6.29367 17.1906 6.41659 17.5 6.41659C18.4282 6.41659 19.3185 6.78533 19.9749 7.44171C20.6312 8.09809 21 8.98833 21 9.91659C20.9983 10.5294 20.8358 11.131 20.5287 11.6612C20.2216 12.1915 19.7807 12.6319 19.25 12.9383C19.077 13.038 18.9325 13.1805 18.8304 13.3521C18.7283 13.5237 18.6719 13.7186 18.6667 13.9183C18.6618 14.1163 18.7074 14.3123 18.7993 14.4879C18.8911 14.6634 19.0262 14.8127 19.1917 14.9216L19.6467 15.2249L19.7983 15.3066C21.2046 15.9736 22.391 17.0286 23.2178 18.3473C24.0446 19.666 24.4773 21.1935 24.465 22.7499C24.465 23.0593 24.5879 23.3561 24.8067 23.5749C25.0255 23.7937 25.3222 23.9166 25.6317 23.9166C25.9411 23.9166 26.2378 23.7937 26.4566 23.5749C26.6754 23.3561 26.7983 23.0593 26.7983 22.7499C26.8079 20.9596 26.3594 19.1965 25.4957 17.6283C24.632 16.0601 23.3816 14.7388 21.8633 13.7899Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\nimport { USERS_ALT_PATH } from \"./usersAltPath\";\n\nexport { USERS_ALT_PATH } from \"./usersAltPath\";\n\nexport function UsersAltIcon({ size = 28, color = colors.white }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 28 28\" fill=\"none\">\n <Path d={USERS_ALT_PATH} fill={color} />\n </Svg>\n );\n}\n","/** Video icon paths — 16×16 viewBox. */\nexport const VIDEO_PATHS = [\n \"M14.6667 5.95424C14.6667 5.55036 14.6667 5.34843 14.5868 5.25492C14.5175 5.17378 14.4136 5.13072 14.3072 5.13909C14.1846 5.14874 14.0418 5.29153 13.7563 5.57712L11.3334 7.99999L13.7563 10.4229C14.0418 10.7085 14.1846 10.8512 14.3072 10.8609C14.4136 10.8693 14.5175 10.8262 14.5868 10.7451C14.6667 10.6516 14.6667 10.4496 14.6667 10.0457V5.95424Z\",\n \"M1.33337 6.53333C1.33337 5.41322 1.33337 4.85317 1.55136 4.42535C1.74311 4.04902 2.04907 3.74306 2.42539 3.55132C2.85322 3.33333 3.41327 3.33333 4.53337 3.33333H8.13337C9.25348 3.33333 9.81353 3.33333 10.2414 3.55132C10.6177 3.74306 10.9236 4.04902 11.1154 4.42535C11.3334 4.85317 11.3334 5.41322 11.3334 6.53333V9.46666C11.3334 10.5868 11.3334 11.1468 11.1154 11.5746C10.9236 11.951 10.6177 12.2569 10.2414 12.4487C9.81353 12.6667 9.25348 12.6667 8.13337 12.6667H4.53337C3.41327 12.6667 2.85322 12.6667 2.42539 12.4487C2.04907 12.2569 1.74311 11.951 1.55136 11.5746C1.33337 11.1468 1.33337 10.5868 1.33337 9.46666V6.53333Z\",\n] as const;\n","import Svg, { Path } from \"react-native-svg\";\nimport { VIDEO_PATHS } from \"./videoPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { VIDEO_PATHS } from \"./videoPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function VideoIcon({ size = 20, color = colors.primary, strokeWidth = 1.5 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n {VIDEO_PATHS.map((path) => (\n <Path\n key={path}\n d={path}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n ))}\n </Svg>\n );\n}\n","import { ArrowRightIcon } from \"./ArrowRight\";\nimport { AlertTriangleIcon } from \"./AlertTriangle\";\nimport { AppleIcon, GooglePlayIcon } from \"./Store\";\nimport { BagIcon } from \"./Bag\";\nimport { BellIcon } from \"./Bell\";\nimport { BuildingIcon } from \"./Building\";\nimport { CalendarIcon } from \"./Calendar\";\nimport { CalendarOutlineIcon } from \"./CalendarOutline\";\nimport { CameraIcon } from \"./Camera\";\nimport { CheckIcon } from \"./Check\";\nimport { CheckBadgeIcon } from \"./CheckBadge\";\nimport { ChevronDownIcon } from \"./ChevronDown\";\nimport { ChevronLeftIcon } from \"./ChevronLeft\";\nimport { ClockIcon } from \"./Clock\";\nimport { CloseIcon } from \"./Close\";\nimport { EditIcon } from \"./Edit\";\nimport {\n BathroomsIcon,\n BedroomsIcon,\n CardLocationIcon,\n GuestsIcon,\n RatingStarIcon,\n SaveHeartIcon,\n} from \"./CottageCard\";\nimport {\n AreaExpandIcon,\n CheckSuccessIcon,\n ClockFilledIcon,\n CopyIcon,\n DownloadIcon,\n QrCodeIcon,\n ShareIcon,\n TooltipArrowIcon,\n WhatsAppIcon,\n} from \"./CottageDetail\";\nimport { NoSmokingIcon, PawIcon, QuietHoursIcon, TrashIcon } from \"./HouseRules\";\nimport { FacebookIcon } from \"./Facebook\";\nimport { FiltersIcon } from \"./Filters\";\nimport { HeartIcon } from \"./Heart\";\nimport { GlobeIcon } from \"./Globe\";\nimport { HelpCircleIcon } from \"./HelpCircle\";\nimport { HomeIcon } from \"./Home\";\nimport { InstagramIcon } from \"./Instagram\";\nimport { KeyIcon } from \"./Key\";\nimport { LayoutGridIcon } from \"./LayoutGrid\";\nimport { LinkedInIcon } from \"./LinkedIn\";\nimport { ListViewIcon } from \"./ListView\";\nimport { LocationPinIcon } from \"./LocationPin\";\nimport { LocationUserIcon } from \"./LocationUser\";\nimport { LockIcon } from \"./Lock\";\nimport { LogOutIcon } from \"./LogOut\";\nimport { MailIcon } from \"./Mail\";\nimport { MapViewIcon } from \"./MapView\";\nimport { MapCollapseIcon, MapExpandIcon } from \"./MapControls\";\nimport { MenuIcon } from \"./Menu\";\nimport { MinusIcon } from \"./Minus\";\nimport { NavigateIcon } from \"./Navigate\";\nimport { PhoneIcon } from \"./Phone\";\nimport { PlusIcon } from \"./Plus\";\nimport { RefreshIcon } from \"./Refresh\";\nimport { RefundStatusIcon } from \"./RefundStatus\";\nimport { SearchIcon } from \"./Search\";\nimport { SettingsIcon } from \"./Settings\";\nimport { ShowIcon } from \"./Show\";\nimport { SidebarIcon } from \"./Sidebar\";\nimport { SortIcon } from \"./Sort\";\nimport { StarIcon } from \"./Star\";\nimport { StarFilledIcon } from \"./StarFilled\";\nimport { UserIcon } from \"./User\";\nimport { UsersAltIcon } from \"./UsersAlt\";\nimport { VideoIcon } from \"./Video\";\nimport type { IconComponent } from \"./types\";\n\nexport const icons = {\n alertTriangle: AlertTriangleIcon,\n areaExpand: AreaExpandIcon,\n apple: AppleIcon,\n arrowRight: ArrowRightIcon,\n bag: BagIcon,\n bell: BellIcon,\n building: BuildingIcon,\n calendar: CalendarIcon,\n calendarOutline: CalendarOutlineIcon,\n camera: CameraIcon,\n check: CheckIcon,\n checkBadge: CheckBadgeIcon,\n checkSuccess: CheckSuccessIcon,\n chevronDown: ChevronDownIcon,\n chevronLeft: ChevronLeftIcon,\n clock: ClockIcon,\n close: CloseIcon,\n edit: EditIcon,\n clockFilled: ClockFilledIcon,\n copy: CopyIcon,\n download: DownloadIcon,\n bathrooms: BathroomsIcon,\n bedrooms: BedroomsIcon,\n cardLocation: CardLocationIcon,\n facebook: FacebookIcon,\n filters: FiltersIcon,\n guests: GuestsIcon,\n heart: HeartIcon,\n globe: GlobeIcon,\n googlePlay: GooglePlayIcon,\n helpCircle: HelpCircleIcon,\n home: HomeIcon,\n instagram: InstagramIcon,\n key: KeyIcon,\n layoutGrid: LayoutGridIcon,\n linkedin: LinkedInIcon,\n listView: ListViewIcon,\n locationPin: LocationPinIcon,\n locationUser: LocationUserIcon,\n lock: LockIcon,\n logOut: LogOutIcon,\n mail: MailIcon,\n mapView: MapViewIcon,\n mapCollapse: MapCollapseIcon,\n mapExpand: MapExpandIcon,\n menu: MenuIcon,\n minus: MinusIcon,\n navigate: NavigateIcon,\n noSmoking: NoSmokingIcon,\n paw: PawIcon,\n phone: PhoneIcon,\n qrCode: QrCodeIcon,\n quietHours: QuietHoursIcon,\n ratingStar: RatingStarIcon,\n plus: PlusIcon,\n refresh: RefreshIcon,\n refundStatus: RefundStatusIcon,\n search: SearchIcon,\n saveHeart: SaveHeartIcon,\n share: ShareIcon,\n settings: SettingsIcon,\n show: ShowIcon,\n sidebar: SidebarIcon,\n sort: SortIcon,\n star: StarIcon,\n starFilled: StarFilledIcon,\n tooltipArrow: TooltipArrowIcon,\n trash: TrashIcon,\n user: UserIcon,\n usersAlt: UsersAltIcon,\n video: VideoIcon,\n whatsApp: WhatsAppIcon,\n} as const satisfies Record<string, IconComponent>;\n\nexport type IconName = keyof typeof icons;\n\nexport const iconNames = Object.keys(icons) as IconName[];\n\nexport const iconGroups = {\n navigation: [\n \"arrowRight\",\n \"chevronDown\",\n \"chevronLeft\",\n \"home\",\n \"listView\",\n \"locationPin\",\n \"locationUser\",\n \"mapCollapse\",\n \"mapExpand\",\n \"mapView\",\n \"menu\",\n \"navigate\",\n ],\n actions: [\n \"show\",\n \"alertTriangle\",\n \"bell\",\n \"camera\",\n \"key\",\n \"check\",\n \"checkBadge\",\n \"checkSuccess\",\n \"copy\",\n \"download\",\n \"search\",\n \"calendar\",\n \"calendarOutline\",\n \"close\",\n \"edit\",\n \"ratingStar\",\n \"saveHeart\",\n \"share\",\n \"filters\",\n \"heart\",\n \"star\",\n \"starFilled\",\n \"minus\",\n \"plus\",\n \"refresh\",\n \"refundStatus\",\n \"sort\",\n ],\n objects: [\n \"bag\",\n \"bathrooms\",\n \"bedrooms\",\n \"building\",\n \"cardLocation\",\n \"clock\",\n \"clockFilled\",\n \"guests\",\n \"lock\",\n \"noSmoking\",\n \"paw\",\n \"qrCode\",\n \"quietHours\",\n \"trash\",\n \"user\",\n \"usersAlt\",\n \"video\",\n \"whatsApp\",\n ],\n communication: [\"mail\", \"phone\"],\n social: [\"apple\", \"facebook\", \"googlePlay\", \"instagram\", \"linkedin\"],\n interface: [\n \"areaExpand\",\n \"globe\",\n \"layoutGrid\",\n \"sidebar\",\n \"settings\",\n \"helpCircle\",\n \"logOut\",\n \"tooltipArrow\",\n ],\n} as const satisfies Record<string, readonly IconName[]>;\n\nexport type IconGroup = keyof typeof iconGroups;\n\nexport const iconGroupNames = Object.keys(iconGroups) as IconGroup[];\n\nexport function getIconsByGroup(group: IconGroup): IconName[] {\n return [...iconGroups[group]];\n}\n","import { icons, type IconName } from \"./registry\";\nimport type { IconProps } from \"./types\";\n\nexport interface IconByNameProps extends IconProps {\n name: IconName;\n}\n\nexport function Icon({ name, ...props }: IconByNameProps) {\n const Component = icons[name];\n return <Component {...props} />;\n}\n","export const amenityNames = [\n \"kitchen\",\n \"wifi\",\n \"tv\",\n \"washer\",\n \"ac\",\n \"bbq\",\n \"forestView\",\n \"pets\",\n] as const;\n\nexport type AmenityName = (typeof amenityNames)[number];\n\nexport interface AmenityPathDefinition {\n d: string;\n fill?: boolean;\n rounded?: boolean;\n strokeWidth?: number;\n}\n\nexport const AMENITY_PATHS: Record<AmenityName, readonly AmenityPathDefinition[]> = {\n kitchen: [\n {\n d: \"M7.5 2.1665C7.58829 2.16659 7.67292 2.20172 7.73535 2.26416C7.79779 2.3266 7.83292 2.41122 7.83301 2.49951V17.4995C7.83301 17.5879 7.79786 17.6733 7.73535 17.7358C7.67293 17.7982 7.58821 17.8334 7.5 17.8335C7.41159 17.8335 7.32618 17.7984 7.26367 17.7358C7.20116 17.6733 7.16602 17.5879 7.16602 17.4995V11.1665H4.16602C4.07773 11.1664 3.9931 11.1313 3.93066 11.0688C3.86823 11.0064 3.83309 10.9218 3.83301 10.8335V5.8335C3.83301 4.86104 4.21959 3.92836 4.90723 3.24072C5.59486 2.55309 6.52754 2.1665 7.5 2.1665ZM6.5 3.00342C5.91495 3.21027 5.40799 3.59338 5.0498 4.1001C4.6916 4.60695 4.49967 5.21284 4.5 5.8335V10.4995H7.16602V2.76807L6.5 3.00342ZM13 9.3501L12.7783 9.20166L10.6533 7.77588L10.6494 7.77393L10.5879 7.72119C10.5694 7.70112 10.5532 7.67894 10.54 7.65479C10.527 7.63071 10.5165 7.60493 10.5098 7.57861L10.5 7.49756V2.49951C10.5001 2.41122 10.5352 2.3266 10.5977 2.26416C10.6602 2.20175 10.7447 2.1665 10.833 2.1665C10.9213 2.1665 11.0059 2.20175 11.0684 2.26416C11.1308 2.3266 11.1659 2.41122 11.166 2.49951V7.31689L11.3877 7.46533L12.2217 8.02393L13 8.54541V2.49951C13.0001 2.41122 13.0352 2.3266 13.0977 2.26416C13.1602 2.20175 13.2447 2.1665 13.333 2.1665C13.4213 2.1665 13.5059 2.20175 13.5684 2.26416C13.6308 2.32659 13.6659 2.41122 13.666 2.49951V8.54541L14.4443 8.02393L15.2783 7.46533L15.5 7.31689V2.49951C15.5001 2.41122 15.5352 2.32659 15.5977 2.26416C15.6602 2.20175 15.7447 2.1665 15.833 2.1665C15.9213 2.1665 16.0059 2.20175 16.0684 2.26416C16.1308 2.32659 16.1659 2.41122 16.166 2.49951V7.49951C16.1654 7.55363 16.1518 7.60718 16.126 7.65479C16.0998 7.70285 16.0623 7.74381 16.0166 7.77393L16.0127 7.77588L13.8877 9.20166L13.666 9.3501V17.4995C13.666 17.5879 13.6309 17.6733 13.5684 17.7358C13.5059 17.7981 13.4213 17.8335 13.333 17.8335C13.2448 17.8335 13.1601 17.7981 13.0977 17.7358C13.0351 17.6733 13 17.5879 13 17.4995V9.3501Z\",\n },\n ],\n wifi: [\n {\n d: \"M9.99967 16.25H10.008M19.005 7.25063C16.6326 5.07666 13.471 3.75 9.99958 3.75C6.52813 3.75 3.36653 5.07666 0.994141 7.25063M3.94295 10.2025C5.55806 8.77971 7.67807 7.91667 9.99966 7.91667C12.3212 7.91667 14.4413 8.77971 16.0564 10.2025M13.0816 13.1459C12.2324 12.4802 11.1623 12.0833 9.99958 12.0833C8.81925 12.0833 7.73445 12.4923 6.87915 13.1763\",\n rounded: true,\n strokeWidth: 2,\n },\n ],\n tv: [\n {\n d: \"M15.0003 14.1667V16.1667C15.0003 16.6334 15.0003 16.8667 14.9095 17.045C14.8296 17.2018 14.7021 17.3293 14.5453 17.4092C14.3671 17.5 14.1337 17.5 13.667 17.5H6.33366C5.86695 17.5 5.63359 17.5 5.45533 17.4092C5.29853 17.3293 5.17105 17.2018 5.09115 17.045C5.00033 16.8667 5.00033 16.6334 5.00033 16.1667V14.1667M5.66699 14.1667H14.3337C15.7338 14.1667 16.4339 14.1667 16.9686 13.8942C17.439 13.6545 17.8215 13.272 18.0612 12.8016C18.3337 12.2669 18.3337 11.5668 18.3337 10.1667V6.5C18.3337 5.09987 18.3337 4.3998 18.0612 3.86502C17.8215 3.39462 17.439 3.01217 16.9686 2.77248C16.4339 2.5 15.7338 2.5 14.3337 2.5H5.66699C4.26686 2.5 3.5668 2.5 3.03202 2.77248C2.56161 3.01217 2.17916 3.39462 1.93948 3.86502C1.66699 4.3998 1.66699 5.09987 1.66699 6.5V10.1667C1.66699 11.5668 1.66699 12.2669 1.93948 12.8016C2.17916 13.272 2.56161 13.6545 3.03202 13.8942C3.5668 14.1667 4.26686 14.1667 5.66699 14.1667Z\",\n rounded: true,\n strokeWidth: 2,\n },\n ],\n washer: [\n {\n d: \"M15.833 1.66699H4.16634C3.7061 1.66699 3.33301 2.04009 3.33301 2.50033V17.5003C3.33301 17.9606 3.7061 18.3337 4.16634 18.3337H15.833C16.2932 18.3337 16.6663 17.9606 16.6663 17.5003V2.50033C16.6663 2.04009 16.2932 1.66699 15.833 1.66699ZM3.33301 5.00033C3.33301 5.46058 3.7061 5.83366 4.16634 5.83366H15.833C16.2933 5.83366 16.6663 5.46058 16.6663 5.00033V2.50033C16.6663 2.04009 16.2933 1.66699 15.833 1.66699H4.16634C3.7061 1.66699 3.33301 2.04009 3.33301 2.50033V5.00033ZM9.99967 15.0003C11.6105 15.0003 12.9163 13.6945 12.9163 12.0837C12.9163 10.4728 11.6105 9.16699 9.99967 9.16699C8.38884 9.16699 7.08301 10.4728 7.08301 12.0837C7.08301 13.6945 8.38884 15.0003 9.99967 15.0003Z\",\n strokeWidth: 1.5,\n },\n {\n d: \"M5.83333 4.58317C6.29357 4.58317 6.66667 4.21007 6.66667 3.74984C6.66667 3.2896 6.29357 2.9165 5.83333 2.9165C5.3731 2.9165 5 3.2896 5 3.74984C5 4.21007 5.3731 4.58317 5.83333 4.58317ZM8.33333 4.58317C8.79357 4.58317 9.16667 4.21007 9.16667 3.74984C9.16667 3.2896 8.79357 2.9165 8.33333 2.9165C7.8731 2.9165 7.5 3.2896 7.5 3.74984C7.5 4.21007 7.8731 4.58317 8.33333 4.58317Z\",\n fill: true,\n },\n ],\n ac: [\n {\n d: \"M17.5003 3.33301H2.50033C2.04009 3.33301 1.66699 3.7061 1.66699 4.16634V10.833C1.66699 11.2932 2.04009 11.6663 2.50033 11.6663H17.5003C17.9606 11.6663 18.3337 11.2932 18.3337 10.833V4.16634C18.3337 3.7061 17.9606 3.33301 17.5003 3.33301ZM15 8.3335H5V11.6668H15V8.3335ZM13.333 5.83301H14.9997M10 14.1665V16.6665M6.66699 15V15.8333M13.333 15V15.8333\",\n rounded: true,\n strokeWidth: 1.5,\n },\n ],\n bbq: [\n {\n d: \"M15.8337 6.6665H4.16699C4.16699 7.99259 4.69378 9.26436 5.63146 10.202C6.56914 11.1397 7.84091 11.6665 9.16699 11.6665H10.8337C12.1279 11.6674 13.372 11.1664 14.3045 10.2689C15.237 9.37143 15.7851 8.14732 15.8337 6.854V6.6665ZM14.1667 16.6668C13.7246 16.6668 13.3007 16.4912 12.9882 16.1787C12.6756 15.8661 12.5 15.4422 12.5 15.0002C12.5 14.5581 12.6756 14.1342 12.9882 13.8217C13.3007 13.5091 13.7246 13.3335 14.1667 13.3335C14.6087 13.3335 15.0326 13.5091 15.3452 13.8217C15.6577 14.1342 15.8333 14.5581 15.8333 15.0002C15.8333 15.4422 15.6577 15.8661 15.3452 16.1787C15.0326 16.4912 14.6087 16.6668 14.1667 16.6668ZM12.5 11.6665L13.3333 13.3332M7.5 11.6665L5 16.6665M12.4997 15H5.83301M12.5 4.16683V3.3335M10 4.16683V3.3335M7.5 4.16683V3.3335\",\n rounded: true,\n strokeWidth: 1.5,\n },\n ],\n forestView: [\n {\n d: \"M13.75 5.3335C12.9544 5.3335 12.1905 5.64979 11.6279 6.2124C11.0656 6.77497 10.75 7.53803 10.75 8.3335V11.6685C10.7518 12.2873 10.9448 12.8903 11.3027 13.395C11.6608 13.8999 12.1665 14.2815 12.75 14.4878L13.416 14.7241V10.8335C13.416 10.7453 13.4514 10.6606 13.5137 10.5981C13.5762 10.5356 13.6616 10.5005 13.75 10.5005C13.8383 10.5006 13.9229 10.5357 13.9854 10.5981C14.0477 10.6606 14.083 10.7452 14.083 10.8335V14.7241L14.75 14.4878C15.3333 14.2815 15.8383 13.8997 16.1963 13.395C16.5543 12.8902 16.7482 12.2873 16.75 11.6685V8.3335C16.75 7.53795 16.4336 6.77499 15.8711 6.2124C15.3086 5.64987 14.5455 5.33358 13.75 5.3335ZM7.8291 2.896C7.08436 2.7482 6.31242 2.82426 5.61133 3.11572C4.91011 3.4073 4.31107 3.90128 3.89062 4.53369C3.52286 5.08695 3.30559 5.72481 3.25879 6.38428L3.25 6.6665V10.0015C3.25275 10.8492 3.53644 11.672 4.05664 12.3413C4.57684 13.0106 5.30421 13.4888 6.125 13.7007L6.75 13.8618V10.8335C6.75 10.7451 6.78518 10.6607 6.84766 10.5981C6.91017 10.5356 6.9946 10.5005 7.08301 10.5005C7.17141 10.5005 7.25585 10.5356 7.31836 10.5981C7.38083 10.6607 7.41602 10.7451 7.41602 10.8335V13.8716L8.04199 13.7095C8.81342 13.5095 9.50314 13.0736 10.0156 12.4634L10.1631 12.2876L10.127 12.062C10.1052 11.9268 10.0903 11.7906 10.083 11.6538V8.33447C10.0841 7.59016 10.3115 6.86331 10.7354 6.25146L10.8564 6.07764L10.8154 5.86963C10.6713 5.14369 10.3167 4.47555 9.79688 3.94873L9.79492 3.94678L9.58691 3.75342C9.08624 3.32147 8.48085 3.02537 7.8291 2.896ZM6.75 14.5024L6.33301 14.4321C5.2853 14.255 4.3338 13.713 3.64746 12.9019C3.00409 12.1414 2.63281 11.1901 2.58789 10.1987L2.58301 9.99951V6.67432C2.59783 5.64591 2.96462 4.65276 3.62207 3.86182C4.2795 3.07106 5.18807 2.52918 6.19629 2.32666C7.20464 2.12413 8.2522 2.27381 9.16406 2.74951C10.0758 3.22524 10.7973 3.9991 11.208 4.94189L11.4355 5.4624L11.9229 5.17041C12.4746 4.84014 13.106 4.66604 13.749 4.6665H13.75C14.7223 4.66659 15.6552 5.05317 16.3428 5.74072C17.0303 6.42833 17.416 7.36114 17.416 8.3335V11.6665C17.4162 12.5117 17.1243 13.3311 16.5898 13.9858C16.0554 14.6406 15.3115 15.0911 14.4834 15.2603L14.083 15.3413V17.5005C14.0829 17.5887 14.0478 17.6734 13.9854 17.7358C13.9229 17.7982 13.8383 17.8334 13.75 17.8335C13.6616 17.8335 13.5762 17.7984 13.5137 17.7358C13.4513 17.6734 13.4161 17.5887 13.416 17.5005V15.3442L13.0186 15.2603C12.534 15.1589 12.0747 14.9608 11.6689 14.6772C11.2632 14.3937 10.919 14.0309 10.6572 13.6108L10.3584 13.1313L9.91895 13.4858C9.31479 13.9737 8.59613 14.2993 7.83105 14.4321L7.41602 14.5044V17.5005C7.4159 17.5887 7.38077 17.6734 7.31836 17.7358C7.25587 17.7982 7.17131 17.8335 7.08301 17.8335C6.99471 17.8335 6.91015 17.7982 6.84766 17.7358C6.78525 17.6734 6.75012 17.5887 6.75 17.5005V14.5024Z\",\n },\n ],\n pets: [\n {\n d: \"M12.2491 11.2498C11.3324 9.58317 11.0482 9.1665 9.99907 9.1665C8.94991 9.1665 8.55241 9.79567 7.63574 11.4557C6.85074 12.8748 5.26407 12.9932 4.86824 14.1982C4.78741 14.419 4.74741 14.7623 4.74907 14.9998C4.74907 15.9798 5.40491 16.6665 6.24907 16.6665C7.29824 16.6665 8.74907 15.8332 9.99907 15.8332C11.2491 15.8332 12.6999 16.6665 13.7491 16.6665C14.5932 16.6665 15.2491 15.9807 15.2491 14.9998C15.2491 14.7623 15.2082 14.419 15.1274 14.1982C14.7316 12.989 13.0341 12.669 12.2491 11.2498ZM16.8232 6.73484C16.7161 6.68958 16.601 6.66634 16.4848 6.6665H16.4723C15.8598 6.6765 15.1723 7.2915 14.8115 8.2215C14.379 9.334 14.5782 10.4715 15.2598 10.7648C15.3673 10.8107 15.4823 10.8332 15.5982 10.8332C16.214 10.8332 16.9107 10.2148 17.274 9.27817C17.704 8.16567 17.5007 7.02817 16.8232 6.73484ZM7.89628 7.50016C7.94211 7.50016 7.98711 7.50016 8.03211 7.491C8.81878 7.38433 9.30961 6.36933 9.13211 5.22266C8.96295 4.14183 8.25961 3.3335 7.52211 3.3335C7.47628 3.3335 7.43128 3.3335 7.38628 3.34266C6.59961 3.44933 6.10878 4.46433 6.28628 5.611C6.45628 6.6885 7.15961 7.50016 7.89711 7.50016H7.89628ZM13.7129 5.611C13.8913 4.46433 13.4004 3.44933 12.6129 3.34266C12.5682 3.33647 12.5231 3.33341 12.4779 3.3335C11.7404 3.3335 11.0379 4.14183 10.8696 5.22267C10.6913 6.36933 11.1821 7.38433 11.9696 7.491C12.0146 7.49683 12.0596 7.50016 12.1046 7.50016C12.8421 7.50016 13.5463 6.6885 13.7129 5.611ZM4.74152 10.7648C5.42152 10.4715 5.61985 9.33234 5.18819 8.2215C4.82485 7.28484 4.12902 6.6665 3.51402 6.6665C3.39735 6.6665 3.28319 6.689 3.17485 6.73484C2.49485 7.02817 2.29652 8.16734 2.72819 9.27817C3.09152 10.2148 3.78735 10.8332 4.40235 10.8332C4.51902 10.8332 4.63319 10.8107 4.74152 10.7648Z\",\n rounded: true,\n strokeWidth: 1.5,\n },\n ],\n};\n","import Svg, { Path } from \"react-native-svg\";\nimport { colors } from \"../../theme\";\nimport { AMENITY_PATHS, type AmenityName } from \"./amenityPaths\";\n\nexport interface AmenityIconProps {\n name: AmenityName;\n size?: number;\n color?: string;\n}\n\nexport function AmenityIcon({ name, size = 20, color = colors.primary }: AmenityIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n {AMENITY_PATHS[name].map((path, index) => (\n <Path\n key={`${name}-${index}`}\n d={path.d}\n fill={path.fill ? color : \"none\"}\n stroke={path.fill ? undefined : color}\n strokeWidth={path.strokeWidth}\n strokeLinecap={path.rounded ? \"round\" : undefined}\n strokeLinejoin={path.rounded ? \"round\" : undefined}\n />\n ))}\n </Svg>\n );\n}\n","import type { ForwardedRef, MutableRefObject, RefCallback } from \"react\";\n\n/**\n * Combines a component's internal ref (used e.g. by `useApplyWebClassName`)\n * with an optional externally-forwarded ref, so consumers can still call\n * `.focus()`/`.measure()` on the underlying native node via `ref`.\n */\nexport function mergeRefs<T>(\n internalRef: MutableRefObject<T | null>,\n forwardedRef: ForwardedRef<T>,\n): RefCallback<T> {\n return (node) => {\n internalRef.current = node;\n if (typeof forwardedRef === \"function\") {\n forwardedRef(node);\n } else if (forwardedRef) {\n forwardedRef.current = node;\n }\n };\n}\n","import { useLayoutEffect } from \"react\";\nimport { Platform } from \"react-native\";\n\ninterface ClassListElement {\n classList: {\n add: (...classes: string[]) => void;\n remove: (...classes: string[]) => void;\n };\n}\n\nfunction hasClassList(node: unknown): node is ClassListElement {\n return (\n typeof node === \"object\" &&\n node !== null &&\n \"classList\" in node &&\n typeof (node as ClassListElement).classList?.add === \"function\"\n );\n}\n\nfunction resolveWebElement(ref: React.RefObject<unknown>): ClassListElement | null {\n const node = ref.current;\n if (!node) return null;\n\n if (hasClassList(node)) return node;\n\n const host = node as {\n _touchableNode?: unknown;\n getScrollableNode?: () => unknown;\n };\n\n if (hasClassList(host._touchableNode)) return host._touchableNode;\n\n if (typeof host.getScrollableNode === \"function\") {\n const scrollNode = host.getScrollableNode();\n if (hasClassList(scrollNode)) return scrollNode;\n }\n\n return null;\n}\n\n/**\n * Applies CSS class names to the underlying DOM node on web.\n * Keeps TouchableOpacity/Text as the render path so default RN styles stay intact.\n *\n * Retries via rAF when the host node is not ready yet — otherwise classes like\n * `h-13` / `w-full` would only land after a later re-render (e.g. typing in a form),\n * which visibly changes button size.\n */\nexport function useApplyWebClassName(\n ref: React.RefObject<unknown>,\n className?: string,\n enabled = true,\n): void {\n useLayoutEffect(() => {\n if (!enabled || Platform.OS !== \"web\" || !className?.trim()) return;\n\n let cancelled = false;\n let rafId = 0;\n let appliedElement: ClassListElement | null = null;\n const classes = className.trim().split(/\\s+/);\n\n const apply = () => {\n if (cancelled) return;\n\n const element = resolveWebElement(ref);\n if (!element) {\n rafId = requestAnimationFrame(apply);\n return;\n }\n\n appliedElement = element;\n element.classList.add(...classes);\n };\n\n apply();\n\n return () => {\n cancelled = true;\n if (rafId) cancelAnimationFrame(rafId);\n appliedElement?.classList.remove(...classes);\n };\n }, [ref, className, enabled]);\n}\n","import { forwardRef, useMemo, useRef, useState, type ComponentRef } from \"react\";\nimport {\n Platform,\n Pressable,\n StyleSheet,\n Text,\n View,\n type PressableProps,\n type StyleProp,\n type TextStyle,\n type ViewStyle,\n} from \"react-native\";\nimport { AmenityIcon, type AmenityName } from \"../../icons/Amenity\";\nimport { colors, fonts } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport type AmenityVariant = \"display\" | \"selectable\";\n\nexport interface AmenityProps extends Omit<\n PressableProps,\n \"children\" | \"disabled\" | \"onPress\" | \"style\"\n> {\n icon: AmenityName;\n label: string;\n variant?: AmenityVariant;\n selected?: boolean;\n defaultSelected?: boolean;\n onSelectedChange?: (selected: boolean) => void;\n disabled?: boolean;\n style?: StyleProp<ViewStyle>;\n labelStyle?: StyleProp<TextStyle>;\n className?: string;\n}\n\nexport const Amenity = forwardRef<ComponentRef<typeof View>, AmenityProps>(function Amenity(\n {\n icon,\n label,\n variant = \"display\",\n selected,\n defaultSelected = false,\n onSelectedChange,\n disabled = false,\n style,\n labelStyle,\n className,\n accessibilityLabel,\n ...rest\n },\n forwardedRef,\n) {\n const rootRef = useRef<ComponentRef<typeof View>>(null);\n const setRootRef = useMemo(() => mergeRefs(rootRef, forwardedRef), [forwardedRef]);\n const isControlled = typeof selected === \"boolean\";\n const [uncontrolledSelected, setUncontrolledSelected] = useState(defaultSelected);\n const isSelected = isControlled ? selected : uncontrolledSelected;\n const isSelectable = variant === \"selectable\";\n const iconColor = isSelectable && isSelected ? colors.primary : colors.white;\n\n useApplyWebClassName(rootRef, className?.trim() || undefined);\n\n const content = (\n <>\n <View style={styles.iconSlot}>\n <AmenityIcon color={iconColor} name={icon} />\n </View>\n <Text\n style={[\n styles.label,\n isSelectable ? styles.selectableLabel : styles.displayLabel,\n Platform.OS === \"android\" ? styles.labelAndroid : null,\n labelStyle,\n ]}\n >\n {label}\n </Text>\n </>\n );\n\n if (!isSelectable) {\n return (\n <View\n {...rest}\n ref={setRootRef}\n accessibilityLabel={accessibilityLabel ?? label}\n accessibilityRole=\"text\"\n style={[styles.base, styles.display, style]}\n >\n {content}\n </View>\n );\n }\n\n const handlePress = () => {\n if (disabled) return;\n const nextSelected = !isSelected;\n if (!isControlled) setUncontrolledSelected(nextSelected);\n onSelectedChange?.(nextSelected);\n };\n\n return (\n <Pressable\n {...rest}\n ref={setRootRef}\n accessibilityLabel={accessibilityLabel ?? label}\n accessibilityRole=\"checkbox\"\n accessibilityState={{ checked: isSelected, disabled }}\n disabled={disabled}\n onPress={handlePress}\n style={[\n styles.base,\n styles.selectable,\n isSelected && styles.selected,\n disabled && styles.disabled,\n style,\n ]}\n >\n {content}\n </Pressable>\n );\n});\n\nconst styles = StyleSheet.create({\n base: {\n height: 44,\n paddingVertical: 12,\n paddingHorizontal: 16,\n flexDirection: \"row\",\n alignItems: \"center\",\n alignSelf: \"flex-start\",\n backgroundColor: colors.grey700,\n },\n display: {\n gap: 8,\n borderRadius: 39,\n backgroundColor: colors.grey750,\n },\n selectable: {\n gap: 12,\n borderWidth: 1,\n borderColor: \"transparent\",\n borderStyle: \"solid\",\n borderRadius: 79,\n },\n selected: {\n borderColor: colors.primary,\n },\n disabled: {\n opacity: 0.6,\n },\n iconSlot: {\n width: 20,\n height: 20,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n label: {\n fontFamily: fonts.sans,\n color: colors.white,\n },\n displayLabel: {\n fontSize: 14,\n fontWeight: \"500\",\n lineHeight: 14,\n letterSpacing: 0,\n },\n selectableLabel: {\n fontSize: 12,\n fontWeight: \"700\",\n lineHeight: 13.44,\n letterSpacing: 0,\n },\n labelAndroid: {\n includeFontPadding: false,\n },\n});\n","import { forwardRef, useMemo, useRef, useState, type ComponentRef, type ReactNode } from \"react\";\nimport {\n Pressable,\n StyleSheet,\n Text,\n View,\n type GestureResponderEvent,\n type PressableProps,\n type StyleProp,\n type TextStyle,\n type ViewStyle,\n} from \"react-native\";\nimport { avatarTypography, colors } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport interface MenuItemProps extends Omit<\n PressableProps,\n \"onPress\" | \"disabled\" | \"style\" | \"children\" | \"hitSlop\"\n> {\n /** Leading icon, e.g. `<CalendarIcon size={16} />` — pass it pre-colored. */\n icon?: ReactNode;\n label: string;\n onPress?: (event: GestureResponderEvent) => void;\n disabled?: boolean;\n /** Row background at rest. Defaults to transparent. */\n backgroundColor?: string;\n /** Row background on hover/press. Defaults to `colors.grey600`. */\n hoverColor?: string;\n style?: StyleProp<ViewStyle>;\n labelStyle?: StyleProp<TextStyle>;\n className?: string;\n hitSlop?: PressableProps[\"hitSlop\"];\n}\n\nconst ITEM_RADIUS = 12;\nconst ICON_SIZE = 16;\n\nexport const MenuItem = forwardRef<ComponentRef<typeof Pressable>, MenuItemProps>(function MenuItem(\n {\n icon,\n label,\n onPress,\n disabled = false,\n backgroundColor,\n hoverColor,\n style,\n labelStyle,\n className,\n accessibilityLabel,\n hitSlop = 4,\n onHoverIn,\n onHoverOut,\n onPressIn,\n onPressOut,\n ...rest\n },\n forwardedRef,\n) {\n const containerRef = useRef<ComponentRef<typeof Pressable>>(null);\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n const [hovered, setHovered] = useState(false);\n\n useApplyWebClassName(containerRef, className);\n\n const resolvedBackground = hovered\n ? (hoverColor ?? colors.grey600)\n : (backgroundColor ?? \"transparent\");\n const resolvedAccessibilityLabel = accessibilityLabel ?? label;\n\n return (\n <Pressable\n {...rest}\n ref={setContainerRef}\n onPress={onPress}\n disabled={disabled}\n hitSlop={hitSlop}\n onHoverIn={(event) => {\n setHovered(true);\n onHoverIn?.(event);\n }}\n onHoverOut={(event) => {\n setHovered(false);\n onHoverOut?.(event);\n }}\n onPressIn={(event) => {\n setHovered(true);\n onPressIn?.(event);\n }}\n onPressOut={(event) => {\n setHovered(false);\n onPressOut?.(event);\n }}\n accessibilityRole=\"menuitem\"\n accessibilityLabel={resolvedAccessibilityLabel}\n accessibilityState={{ disabled }}\n style={[\n styles.root,\n { backgroundColor: resolvedBackground },\n disabled && styles.disabled,\n style,\n ]}\n >\n {icon ? <View style={styles.iconSlot}>{icon}</View> : null}\n <Text style={[styles.label, labelStyle]} numberOfLines={1}>\n {label}\n </Text>\n </Pressable>\n );\n});\n\nconst styles = StyleSheet.create({\n root: {\n minHeight: 40,\n borderRadius: ITEM_RADIUS,\n paddingVertical: 12,\n paddingHorizontal: 12,\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 8,\n alignSelf: \"stretch\",\n },\n disabled: {\n opacity: 0.5,\n },\n iconSlot: {\n width: ICON_SIZE,\n height: ICON_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n label: {\n ...avatarTypography.menuItem,\n color: colors.white,\n flex: 1,\n },\n});\n","import { forwardRef, useMemo, useRef, useState, type ComponentRef } from \"react\";\nimport {\n Platform,\n Pressable,\n StyleSheet,\n type PressableProps,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport { SaveHeartIcon } from \"../../icons\";\nimport { colors } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport interface FavoritesButtonProps extends Omit<\n PressableProps,\n \"onPress\" | \"disabled\" | \"style\" | \"children\" | \"hitSlop\"\n> {\n /** Controlled favorite state. */\n value?: boolean;\n /** Initial state when the button is uncontrolled. */\n defaultValue?: boolean;\n /** Called with the next favorite state when pressed. */\n onValueChange?: (value: boolean) => void;\n disabled?: boolean;\n style?: StyleProp<ViewStyle>;\n className?: string;\n hitSlop?: PressableProps[\"hitSlop\"];\n}\n\nconst ICON_SIZE = 16;\nconst BACKGROUND_COLOR = \"#09090966\";\n\nconst webBlurStyle: ViewStyle =\n Platform.OS === \"web\"\n ? ({\n backdropFilter: \"blur(10px)\",\n WebkitBackdropFilter: \"blur(10px)\",\n } as ViewStyle)\n : {};\n\nexport const FavoritesButton = forwardRef<ComponentRef<typeof Pressable>, FavoritesButtonProps>(\n function FavoritesButton(\n {\n value,\n defaultValue = false,\n onValueChange,\n disabled = false,\n style,\n className,\n accessibilityLabel,\n hitSlop = 8,\n ...rest\n },\n forwardedRef,\n ) {\n const buttonRef = useRef<ComponentRef<typeof Pressable>>(null);\n const isControlled = typeof value === \"boolean\";\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const isActive = isControlled ? value : uncontrolledValue;\n const setButtonRef = useMemo(() => mergeRefs(buttonRef, forwardedRef), [forwardedRef]);\n\n useApplyWebClassName(buttonRef, className?.trim() || undefined);\n\n const handlePress = () => {\n const nextValue = !isActive;\n if (!isControlled) setUncontrolledValue(nextValue);\n onValueChange?.(nextValue);\n };\n\n return (\n <Pressable\n {...rest}\n ref={setButtonRef}\n accessibilityLabel={\n accessibilityLabel ?? (isActive ? \"Remove from favorites\" : \"Add to favorites\")\n }\n accessibilityRole=\"togglebutton\"\n accessibilityState={{ checked: isActive, disabled }}\n disabled={disabled}\n hitSlop={hitSlop}\n onPress={handlePress}\n style={({ pressed }) => [\n styles.button,\n webBlurStyle,\n pressed && styles.pressed,\n disabled && styles.disabled,\n style,\n ]}\n >\n <SaveHeartIcon\n color={isActive ? colors.red : colors.white}\n fillOpacity={isActive ? 1 : 0}\n size={ICON_SIZE}\n strokeWidth={2}\n />\n </Pressable>\n );\n },\n);\n\nconst styles = StyleSheet.create({\n button: {\n padding: 12,\n gap: 10,\n alignItems: \"center\",\n justifyContent: \"center\",\n alignSelf: \"flex-start\",\n borderRadius: 39,\n borderWidth: 1,\n borderColor: colors.whiteAlpha10,\n backgroundColor: BACKGROUND_COLOR,\n },\n pressed: {\n opacity: 0.8,\n },\n disabled: {\n opacity: 0.5,\n },\n});\n","/** Shared Cortel Booking logo geometry. Keep variants color-only. */\nexport const BRAND_LOGO_PATHS = [\n \"M56.7394 7.09708H5.0271V9.56473H56.7394V7.09708Z\",\n \"M56.7394 13.9948V11.5271H5.0271V13.9948H35.0397L31.3321 15.9571H5.0271V18.4248H26.6682L23.663 20.0143L22.9654 20.3871H5.0271V22.8548H21.7653V24.8171H5.0271V27.2799H21.7653V29.2422H5.0271V31.7099H21.7653V33.6723H5.0271V36.1399H21.7653V38.1023H5.0271V40.5699H15.0768V42.5323H5.0271V44.9999H15.0768V46.9623H5.0271V49.4299H15.0768V51.3923H5.0271V53.8599H15.0768V55.8223H5.0271V58.285H56.7394V55.8223H49.9924V53.8599H56.7394V51.3923H49.9924V49.4299H56.7394V46.9623H49.9924V44.9999H56.7394V42.5323H49.9924V40.5699H56.7394V38.1023H48.3678L42.7332 36.7679V36.1399H56.7394V33.6723H42.7332V31.7099H56.7394V29.2422H38.401L37.601 28.8449V27.2799H56.7394V24.8171H37.601V22.8548H56.7394V20.3871H37.601V18.4248H56.7394V15.9571H37.601V13.9948H56.7394ZM25.4486 55.8223H16.9746V40.5699H25.4486V55.8223ZM28.7367 24.4247V55.8223H27.3414V38.1023H23.663V22.1729L27.0292 20.3871L30.7369 18.4248L35.3959 15.9571L35.7081 15.7903V27.9029L34.4641 27.2799L30.6344 25.3715L29.5221 24.8171L28.7367 24.4247ZM44.1235 55.8223H33.864V44.9999H44.1235V55.8223ZM48.0995 39.9959V55.8223H46.0213V42.5323H36.7667V37.3173L40.089 38.1023L40.8354 38.2789L42.7332 38.7253L48.0995 39.9959ZM39.0791 31.7099L40.8354 32.5832V36.3165L40.0792 36.1399L36.7667 35.355L34.869 34.9036V42.5323H31.9711V55.8223H30.6344V27.5007L34.1274 29.2422L35.7081 30.0321L37.601 30.974L39.0791 31.7099Z\",\n \"M9.88812 60.2797C10.3252 60.2797 10.7828 60.2978 11.2609 60.3341C11.739 60.3709 12.224 60.4445 12.7157 60.5539C12.7791 60.9297 12.8294 61.2427 12.866 61.4949C12.9021 61.747 12.9362 61.9756 12.9684 62.1817C13.0001 62.3877 13.0162 62.5089 13.0162 62.5452C13.0255 62.582 12.9977 62.6188 12.9343 62.6556C12.8704 62.6919 12.8021 62.71 12.7294 62.71C12.6655 62.71 12.6108 62.6968 12.5654 62.6688C12.5469 62.5683 12.504 62.4132 12.4357 62.2023C12.3674 61.9913 12.2444 61.7715 12.0669 61.5424C11.8893 61.3138 11.6317 61.1191 11.2951 60.9591C10.958 60.7992 10.5121 60.7187 9.95642 60.7187C9.46466 60.7187 9.01828 60.8311 8.61775 61.0553C8.21674 61.28 7.87329 61.5822 7.58644 61.9624C7.29958 62.3426 7.08102 62.764 6.93076 63.2261C6.78051 63.6883 6.70538 64.1533 6.70538 64.6204C6.70538 65.1419 6.77563 65.655 6.9171 66.1589C7.05858 66.6627 7.27226 67.1185 7.55912 67.5256C7.84597 67.9333 8.20552 68.2581 8.63824 68.5009C9.07048 68.7433 9.57833 68.8649 10.1613 68.8649C10.5711 68.8649 10.9194 68.8007 11.2063 68.6721C11.4932 68.5441 11.7322 68.393 11.9234 68.2188C12.1874 67.9809 12.3786 67.7155 12.4971 67.4221C12.6157 67.1288 12.6977 66.8727 12.743 66.6529C12.8977 66.6347 13.0387 66.6715 13.1665 66.7633C13.1665 66.8275 13.1504 66.9556 13.1187 67.1479C13.0865 67.3402 13.0479 67.5482 13.0026 67.7724C12.9567 67.9971 12.9069 68.1958 12.8523 68.3699C12.7977 68.5441 12.7474 68.654 12.702 68.6996C12.3376 68.9012 11.9234 69.0528 11.459 69.1534C10.9946 69.254 10.4531 69.3045 9.83348 69.3045C9.17781 69.3045 8.57677 69.1878 8.03038 68.9542C7.48399 68.7202 7.01272 68.4004 6.61659 67.9927C6.22045 67.5855 5.91506 67.1185 5.70138 66.5916C5.48721 66.0652 5.38037 65.5044 5.38037 64.9088C5.38037 64.277 5.49209 63.6843 5.71504 63.13C5.93799 62.5761 6.24972 62.0836 6.65074 61.6533C7.05126 61.2226 7.52692 60.8865 8.07819 60.6432C8.62897 60.4008 9.23245 60.2797 9.88812 60.2797Z\",\n \"M18.972 60.2797C19.5638 60.2797 20.1214 60.3896 20.6454 60.6093C21.1688 60.8286 21.6313 61.1426 22.0318 61.5503C22.4324 61.9575 22.749 62.4387 22.9812 62.9921C23.2134 63.5465 23.3295 64.1578 23.3295 64.8259C23.3295 65.4578 23.2134 66.046 22.9812 66.5911C22.749 67.1361 22.4324 67.6169 22.0318 68.0334C21.6313 68.4499 21.1688 68.7752 20.6454 69.0087C20.1214 69.2422 19.5638 69.359 18.972 69.359C18.389 69.359 17.8358 69.2486 17.3124 69.0293C16.7884 68.8095 16.3288 68.4955 15.9327 68.0883C15.5366 67.6807 15.2244 67.1999 14.997 66.646C14.7692 66.0921 14.6555 65.4853 14.6555 64.8259C14.6555 64.1941 14.7692 63.6034 14.997 63.0539C15.2244 62.5045 15.5366 62.0217 15.9327 61.6047C16.3288 61.1882 16.7884 60.863 17.3124 60.6299C17.8358 60.3959 18.389 60.2797 18.972 60.2797ZM18.7808 60.733C18.2798 60.733 17.8519 60.8453 17.4968 61.0695C17.1416 61.2942 16.8523 61.5895 16.6294 61.956C16.4059 62.322 16.242 62.7297 16.1376 63.1781C16.0327 63.6269 15.9805 64.0758 15.9805 64.5242C15.9805 65.0462 16.0513 65.5662 16.1923 66.0833C16.3332 66.6014 16.5406 67.0728 16.8138 67.4987C17.087 67.924 17.4216 68.2654 17.8178 68.522C18.2139 68.7786 18.6715 68.9066 19.1906 68.9066C19.6911 68.9066 20.1195 68.7943 20.4746 68.5696C20.8298 68.3454 21.121 68.0457 21.3488 67.6699C21.5762 67.2946 21.7425 66.88 21.8474 66.4267C21.9518 65.9734 22.0045 65.5226 22.0045 65.0737C22.0045 64.5522 21.9338 64.0346 21.7928 63.5215C21.6513 63.0088 21.442 62.5418 21.1644 62.1208C20.8864 61.6999 20.5497 61.3629 20.1536 61.1107C19.7575 60.859 19.2999 60.733 18.7808 60.733Z\",\n \"M28.3153 60.3758C28.6158 60.3758 28.9251 60.4269 29.2441 60.5274C29.5627 60.628 29.8564 60.7747 30.1252 60.967C30.3935 61.1598 30.6101 61.3997 30.774 61.6882C30.9379 61.9771 31.0199 62.3132 31.0199 62.6983C31.0199 63.0186 30.9311 63.3301 30.7535 63.6319C30.576 63.9341 30.3481 64.2 30.0705 64.4286C29.793 64.6577 29.5037 64.823 29.2031 64.9236C29.4397 65.3175 29.6676 65.6791 29.8861 66.0088C30.1047 66.3384 30.3325 66.6661 30.5691 66.9909C30.8057 67.3162 31.0697 67.6758 31.3614 68.0692C31.5526 68.3253 31.76 68.5176 31.9829 68.6462C32.2059 68.7747 32.4996 68.8522 32.8645 68.8797C32.9006 68.9165 32.9093 68.9852 32.8913 69.0857C32.8732 69.1868 32.8601 69.2457 32.8503 69.2643C32.4044 69.2643 32.0332 69.2481 31.7375 69.2162C31.4414 69.1843 31.2253 69.1451 31.0882 69.0995C30.997 69.0632 30.8696 69.0058 30.7057 68.9277C30.5418 68.8497 30.3823 68.7104 30.2276 68.5088C30.173 68.4357 30.0725 68.2939 29.9271 68.083C29.7812 67.8725 29.6081 67.6159 29.408 67.3142C29.2075 67.012 28.9934 66.6892 28.766 66.3453C28.5382 66.0019 28.3196 65.6653 28.1104 65.3357C28.0377 65.2253 27.9006 65.1708 27.7006 65.1708H27.0039V67.8357C27.0039 68.0094 27.0059 68.1678 27.0107 68.3096C27.0151 68.4519 27.0312 68.5686 27.0585 68.6599C27.0766 68.706 27.1498 68.7472 27.2771 68.7835C27.4044 68.8203 27.5415 68.8458 27.6869 68.8591C27.8323 68.8728 27.9328 68.8797 27.9874 68.8797C28.0147 68.9165 28.0303 68.9807 28.0352 69.0725C28.0396 69.1642 28.024 69.2275 27.9874 69.2648C27.7142 69.2461 27.4522 69.2304 27.202 69.2167C26.9512 69.203 26.6941 69.1961 26.4302 69.1961C26.175 69.1961 25.9155 69.203 25.6516 69.2167C25.3872 69.23 25.1188 69.2461 24.8456 69.2648C24.8091 69.228 24.7935 69.1642 24.7978 69.0725C24.8022 68.9807 24.8183 68.917 24.8456 68.8797C24.9003 68.8797 25.0003 68.8728 25.1462 68.8591C25.2915 68.8458 25.4306 68.8203 25.5628 68.7835C25.6945 68.7472 25.7652 68.706 25.7745 68.6599C25.8106 68.55 25.8311 68.4082 25.836 68.2346C25.8404 68.0609 25.8428 67.873 25.8428 67.6714L25.8292 61.9433C25.8292 61.7421 25.8267 61.5518 25.8223 61.3732C25.8179 61.1946 25.7974 61.0504 25.7609 60.9405C25.7516 60.8855 25.6809 60.8443 25.5491 60.8169C25.4169 60.7889 25.2803 60.7683 25.1393 60.7551C24.9979 60.7413 24.9003 60.7344 24.8456 60.7344C24.8183 60.6981 24.8022 60.6339 24.7978 60.5416C24.7935 60.4499 24.8091 60.3861 24.8456 60.3493C25.1188 60.3587 25.3852 60.3699 25.6448 60.3837C25.9043 60.3969 26.1614 60.4043 26.4165 60.4043C26.6805 60.4043 26.9649 60.3994 27.2703 60.3905C27.5752 60.3812 27.9235 60.3768 28.3153 60.3768V60.3758ZM29.7764 62.8209C29.7764 62.2352 29.6193 61.7539 29.3051 61.3786C28.9909 61.0033 28.465 60.8159 27.7274 60.8159C27.6454 60.8159 27.5201 60.8208 27.3517 60.8291C27.1829 60.8389 27.0854 60.8752 27.0581 60.9395C27.0215 61.0219 27.001 61.1613 26.9966 61.3585C26.9917 61.5557 26.9898 61.7549 26.9898 61.9565L27.0034 64.7587H27.7137C28.0596 64.7587 28.3899 64.6783 28.7041 64.5183C29.0182 64.3584 29.2753 64.1337 29.4758 63.8453C29.6759 63.5568 29.7764 63.2158 29.7764 62.8219V62.8209Z\",\n \"M39.5706 60.3484C39.6804 60.3484 39.8213 60.3253 39.994 60.2797C40.1667 60.2336 40.2946 60.1924 40.3765 60.1556C40.4492 60.1193 40.4995 60.1011 40.5268 60.1011C40.5546 60.1011 40.5858 60.1105 40.6224 60.1286C40.6678 60.5407 40.72 60.9391 40.7795 61.3242C40.8385 61.7083 40.9044 62.0797 40.9776 62.4368C40.959 62.4555 40.9268 62.478 40.8819 62.5055C40.8361 62.5335 40.7814 62.5423 40.718 62.5335C40.6175 62.5335 40.5541 62.5104 40.5263 62.4643C40.4351 61.9977 40.2853 61.6082 40.0755 61.2967C39.8657 60.9857 39.593 60.8297 39.2559 60.8297H37.5621V67.6704C37.5621 67.872 37.5641 68.0599 37.5689 68.2336C37.5733 68.4073 37.5938 68.5495 37.6304 68.6589C37.6485 68.7051 37.7216 68.7463 37.849 68.7826C37.9763 68.8194 38.1105 68.8449 38.2514 68.8581C38.3929 68.8719 38.4905 68.8787 38.5456 68.8787C38.5729 68.9155 38.5885 68.9798 38.5934 69.0715C38.5983 69.1633 38.5822 69.2266 38.5456 69.2638C38.2719 69.2452 38.0104 69.2295 37.7602 69.2158C37.5094 69.202 37.2523 69.1952 36.9884 69.1952C36.7337 69.1952 36.4737 69.202 36.2098 69.2158C35.9454 69.229 35.677 69.2452 35.4039 69.2638C35.3678 69.227 35.3517 69.1633 35.356 69.0715C35.3604 68.9798 35.3765 68.916 35.4039 68.8787C35.4585 68.8787 35.5585 68.8719 35.7044 68.8581C35.8502 68.8449 35.9888 68.8194 36.121 68.7826C36.2527 68.7463 36.3235 68.7051 36.3327 68.6589C36.3688 68.5491 36.3893 68.4073 36.3942 68.2336C36.3986 68.0599 36.401 67.872 36.401 67.6704V60.8297H34.6804C34.3433 60.8297 34.0701 60.9857 33.8603 61.2967C33.6505 61.6082 33.4964 61.9977 33.3963 62.4643C33.3685 62.5104 33.3046 62.5335 33.2046 62.5335C33.1407 62.5428 33.0885 62.5335 33.0475 62.5055C33.0065 62.478 32.9768 62.4555 32.9587 62.4368C33.0314 62.0797 33.0953 61.7088 33.15 61.3242C33.2046 60.9396 33.2549 60.5407 33.3007 60.1286C33.3461 60.1105 33.4007 60.108 33.4646 60.1217C33.5281 60.135 33.5783 60.1517 33.6149 60.1698C33.6969 60.2066 33.813 60.2454 33.9632 60.2866C34.114 60.3278 34.2433 60.3484 34.353 60.3484H39.5706Z\",\n \"M43.6005 60.4034C44.2284 60.4034 44.9206 60.3896 45.6768 60.3622C46.4325 60.3342 47.1701 60.321 47.8897 60.321C47.935 60.6595 47.9941 60.971 48.0668 61.2545C48.1395 61.5386 48.2078 61.8315 48.2717 62.1337C48.2258 62.1798 48.1487 62.2028 48.0394 62.2028C47.9209 62.2028 47.857 62.171 47.8482 62.1067C47.7023 61.5661 47.497 61.2227 47.233 61.0765C46.9691 60.9298 46.6593 60.8567 46.3046 60.8567H45.1567C45.1021 60.8567 45.0021 60.8591 44.8562 60.8635C44.7103 60.8685 44.5742 60.8797 44.4464 60.8979C44.3186 60.916 44.2464 60.9484 44.2279 60.9935C44.2005 61.0858 44.1844 61.2045 44.1801 61.3512C44.1752 61.4979 44.1732 61.6485 44.1732 61.8045V64.4556C44.1732 64.4919 44.2323 64.515 44.3503 64.5243C44.4689 64.5336 44.6011 64.538 44.7465 64.538H45.4431C45.7617 64.538 46.01 64.5287 46.1876 64.5106C46.3651 64.4919 46.4949 64.4507 46.5769 64.3865C46.6588 64.3227 46.7227 64.2265 46.7681 64.098C46.814 63.9699 46.8637 63.7963 46.9189 63.5765C46.9281 63.5122 46.9915 63.4803 47.1101 63.4803C47.2199 63.4803 47.2969 63.5034 47.3428 63.549V66.0765C47.3062 66.1133 47.233 66.1315 47.1242 66.1315C47.0154 66.1315 46.9467 66.0996 46.9193 66.0353C46.8554 65.7792 46.8032 65.5938 46.7623 65.479C46.7213 65.3642 46.6847 65.2862 46.653 65.245C46.6213 65.2038 46.5817 65.1699 46.5369 65.142C46.491 65.1057 46.3866 65.0801 46.2227 65.0669C46.0583 65.0532 45.8788 65.0438 45.6831 65.0389C45.4875 65.0345 45.3031 65.0321 45.1299 65.0321C45.0114 65.0321 44.8767 65.0345 44.7269 65.0389C44.5767 65.0438 44.4469 65.0527 44.3376 65.0669C44.2279 65.0801 44.1737 65.1106 44.1737 65.1562V67.7936C44.1737 67.9221 44.1757 68.087 44.1805 68.2881C44.1849 68.4897 44.2054 68.6045 44.242 68.6315C44.3332 68.6958 44.4445 68.7345 44.5772 68.7483C44.7089 68.7615 44.9157 68.7689 45.1982 68.7689H45.8402C46.1588 68.7689 46.473 68.737 46.7827 68.6727C47.0925 68.6089 47.3384 68.5172 47.5204 68.398C47.7301 68.2695 47.8941 68.084 48.0126 67.8412C48.1307 67.5988 48.2448 67.3359 48.3536 67.0518C48.3717 66.9969 48.4356 66.9694 48.5453 66.9694C48.7093 66.9694 48.8185 66.9969 48.8732 67.0518C48.7454 67.4183 48.6068 67.8073 48.4566 68.2194C48.3063 68.6315 48.2082 68.9842 48.1629 69.2771C47.4433 69.2771 46.7286 69.2673 46.0183 69.2492C45.3085 69.231 44.5064 69.2217 43.6141 69.2217C43.3044 69.2217 43.0268 69.2286 42.7809 69.2423C42.535 69.256 42.2804 69.2629 42.0164 69.2629C41.9798 69.2261 41.9637 69.1623 41.9681 69.0706C41.9725 68.9788 41.9886 68.9151 42.0164 68.8778C42.0706 68.8778 42.1706 68.8709 42.3165 68.8572C42.4623 68.8439 42.6014 68.8184 42.7331 68.7816C42.8653 68.7453 42.9355 68.7041 42.9448 68.658C42.9809 68.5481 43.0014 68.4063 43.0063 68.2327C43.0112 68.059 43.0136 67.8711 43.0136 67.6695V61.9414C43.0136 61.7402 43.0112 61.5499 43.0063 61.3713C43.0014 61.1927 42.9809 61.0485 42.9448 60.9386C42.9355 60.8837 42.8653 60.8424 42.7331 60.815C42.6009 60.787 42.4618 60.7664 42.3165 60.7532C42.1706 60.7394 42.0706 60.7326 42.0164 60.7326C41.9886 60.6963 41.973 60.632 41.9681 60.5398C41.9633 60.448 41.9794 60.3842 42.0164 60.3474C42.2896 60.3568 42.5579 60.3681 42.8219 60.3818C43.0858 60.395 43.3453 60.4024 43.601 60.4024L43.6005 60.4034Z\",\n \"M52.2741 67.6699V68.0751C52.2741 68.2081 52.2784 68.3292 52.2872 68.4391C52.2965 68.549 52.315 68.6128 52.3419 68.6314C52.4331 68.6957 52.5443 68.7345 52.677 68.7482C52.8087 68.7614 53.0156 68.7688 53.2981 68.7688H54.0493C54.304 68.7688 54.5845 68.7389 54.8894 68.679C55.1948 68.6197 55.4383 68.526 55.6202 68.3979C55.7841 68.2787 55.9364 68.1139 56.0778 67.9029C56.2188 67.6925 56.3442 67.4084 56.4535 67.0518C56.4715 66.9968 56.5354 66.9693 56.6452 66.9693C56.8091 66.9693 56.9184 66.9968 56.973 67.0518C56.8452 67.4182 56.7067 67.8073 56.5564 68.2193C56.4062 68.6314 56.3081 68.9842 56.2627 69.2771C55.5431 69.2771 54.8284 69.2672 54.1181 69.2491C53.4083 69.2309 52.6063 69.2216 51.714 69.2216C51.4042 69.2216 51.1266 69.2285 50.8808 69.2422C50.6349 69.256 50.3802 69.2628 50.1163 69.2628C50.0797 69.226 50.0636 69.1623 50.068 69.0705C50.0724 68.9788 50.0885 68.915 50.1163 68.8777C50.1704 68.8777 50.2704 68.8709 50.4163 68.8571C50.5622 68.8439 50.7012 68.8184 50.8329 68.7816C50.9651 68.7453 51.0354 68.7041 51.0447 68.6579C51.0808 68.548 51.1013 68.4063 51.1061 68.2326C51.111 68.0589 51.1135 67.871 51.1135 67.6694V61.9413C51.1135 61.7402 51.111 61.5498 51.1061 61.3712C51.1013 61.1927 51.0808 61.0484 51.0447 60.9385C51.0354 60.8836 50.9651 60.8424 50.8329 60.8149C50.7007 60.7869 50.5617 60.7663 50.4163 60.7531C50.2704 60.7394 50.1704 60.7325 50.1163 60.7325C50.0885 60.6962 50.0729 60.6319 50.068 60.5397C50.0631 60.448 50.0792 60.3842 50.1163 60.3474C50.3895 60.3567 50.6578 60.368 50.9217 60.3817C51.1857 60.395 51.4452 60.4023 51.7008 60.4023C51.9648 60.4023 52.2219 60.395 52.4721 60.3817C52.7229 60.368 52.9849 60.3562 53.2576 60.3474C53.2937 60.3837 53.3098 60.448 53.3054 60.5397C53.301 60.6319 53.2849 60.6957 53.2576 60.7325C53.2029 60.7325 53.1029 60.7394 52.957 60.7531C52.8112 60.7663 52.6751 60.7869 52.5473 60.8149C52.4194 60.8424 52.3472 60.8836 52.3287 60.9385C52.3014 61.0303 52.2853 61.1495 52.2809 61.2957C52.276 61.4424 52.2741 61.6028 52.2741 61.7765V67.6699Z\",\n \"M11.3828 72.8068C11.5867 72.8068 11.7965 72.8303 12.0131 72.8769C12.2292 72.924 12.4268 72.9981 12.6063 73.1006C12.7854 73.2032 12.9307 73.3415 13.042 73.5157C13.1532 73.6898 13.2088 73.9072 13.2088 74.1682C13.2088 74.3982 13.1547 74.6063 13.0464 74.7922C12.9381 74.9791 12.8117 75.1312 12.6663 75.2494C12.521 75.3672 12.3961 75.4481 12.2907 75.4918C12.2721 75.504 12.2721 75.5168 12.2907 75.5286C12.4019 75.5354 12.5317 75.5722 12.68 75.6409C12.8283 75.7096 12.9751 75.8072 13.1205 75.9348C13.2654 76.0623 13.3849 76.2159 13.4771 76.3959C13.5693 76.576 13.6162 76.7781 13.6162 77.0018C13.6162 77.2623 13.5713 77.5046 13.4815 77.7284C13.3918 77.9521 13.2361 78.1571 13.0137 78.3436C12.7976 78.5241 12.5131 78.6497 12.1609 78.7213C11.8087 78.7929 11.4594 78.8317 11.1135 78.8376H9.02793C9.00305 78.8125 8.99232 78.7694 8.99574 78.7071C8.99915 78.6448 9.0094 78.6016 9.02793 78.5766C9.06501 78.5766 9.13282 78.5717 9.23186 78.5624C9.33089 78.553 9.42504 78.5359 9.51481 78.5113C9.60457 78.4868 9.65238 78.4588 9.65824 78.4274C9.68312 78.3534 9.69678 78.2567 9.69971 78.1385C9.70263 78.0207 9.70458 77.8932 9.70458 77.7563V73.8694C9.70458 73.733 9.70312 73.604 9.69971 73.4828C9.69629 73.3616 9.68263 73.264 9.65824 73.1889C9.6519 73.1517 9.60409 73.1237 9.51481 73.1051C9.42553 73.0864 9.33089 73.0727 9.23186 73.0629C9.13282 73.0535 9.06501 73.0491 9.02793 73.0491C9.0094 73.0246 8.99866 72.9809 8.99574 72.9186C8.99281 72.8563 9.00354 72.8127 9.02793 72.7876C9.21332 72.794 9.39529 72.8019 9.57481 72.8112C9.75386 72.821 9.92997 72.8249 10.1032 72.8249C10.2822 72.8249 10.4739 72.822 10.6778 72.8156C10.8818 72.8092 11.1164 72.8058 11.3823 72.8058L11.3828 72.8068ZM10.493 75.4447H11.2438C11.5155 75.4447 11.735 75.3922 11.9019 75.2867C12.0687 75.1807 12.1907 75.0458 12.2678 74.881C12.3448 74.7166 12.3834 74.5469 12.3834 74.3732C12.3834 73.9695 12.2551 73.657 11.9985 73.4367C11.7423 73.2159 11.4038 73.1055 10.9837 73.1055C10.9281 73.1055 10.8427 73.109 10.7286 73.1149C10.6144 73.1212 10.5481 73.1458 10.5295 73.1894C10.511 73.2395 10.4998 73.317 10.4973 73.4225C10.4939 73.5284 10.4925 73.6403 10.4925 73.7585V75.4452L10.493 75.4447ZM10.493 75.7896V77.7656C10.493 77.8093 10.4944 77.876 10.4978 77.9658C10.5008 78.0561 10.5086 78.1414 10.5208 78.2219C10.533 78.3028 10.5486 78.3553 10.5671 78.3803C10.6349 78.4549 10.7291 78.5015 10.8496 78.5202C10.9701 78.5388 11.114 78.5481 11.2808 78.5481C11.5091 78.5481 11.7336 78.5143 11.9526 78.4456C12.1716 78.3774 12.3561 78.2454 12.5039 78.0492C12.6522 77.8539 12.7263 77.5723 12.7263 77.2059C12.7263 76.9758 12.6829 76.7536 12.5966 76.5392C12.5102 76.3248 12.3448 76.1462 12.1004 76.0034C11.856 75.8607 11.5028 75.7886 11.0393 75.7886H10.4925L10.493 75.7896Z\",\n \"M17.9083 72.7416C18.3098 72.7416 18.6884 72.8162 19.044 72.9653C19.3992 73.1145 19.7129 73.3274 19.9846 73.6041C20.2563 73.8803 20.4715 74.207 20.6291 74.5828C20.7866 74.9591 20.8652 75.3731 20.8652 75.8269C20.8652 76.2557 20.7861 76.6551 20.6291 77.0245C20.4715 77.3944 20.2563 77.7206 19.9846 78.0032C19.7124 78.2858 19.3992 78.5065 19.044 78.665C18.6884 78.8235 18.3103 78.9029 17.9083 78.9029C17.5127 78.9029 17.1375 78.8284 16.7819 78.6792C16.4262 78.5296 16.1145 78.3172 15.8457 78.0405C15.5769 77.7638 15.3651 77.4375 15.211 77.0618C15.0563 76.6855 14.9792 76.2744 14.9792 75.8264C14.9792 75.3977 15.0563 74.9969 15.211 74.624C15.3651 74.2512 15.5769 73.9235 15.8457 73.6409C16.1145 73.3583 16.4262 73.1375 16.7819 72.9786C17.1375 72.8206 17.5127 72.7416 17.9083 72.7416ZM17.7781 73.0492C17.438 73.0492 17.1477 73.1253 16.9067 73.2778C16.6658 73.4304 16.4696 73.6306 16.3184 73.8793C16.1667 74.128 16.0554 74.4042 15.9847 74.7084C15.9135 75.0131 15.8779 75.3177 15.8779 75.6219C15.8779 75.9761 15.9257 76.3288 16.0213 76.6796C16.1169 77.0308 16.2579 77.3507 16.4433 77.6397C16.6287 77.9286 16.8555 78.1607 17.1243 78.3343C17.3931 78.508 17.7039 78.5953 18.0561 78.5953C18.3957 78.5953 18.6864 78.5193 18.9274 78.3667C19.1684 78.2141 19.366 78.0106 19.5207 77.7559C19.6748 77.5013 19.7875 77.2202 19.8587 76.9126C19.93 76.605 19.9651 76.2989 19.9651 75.9942C19.9651 75.64 19.9173 75.2888 19.8217 74.9414C19.726 74.5941 19.5836 74.2767 19.3953 73.9907C19.207 73.7052 18.9782 73.4765 18.7094 73.3058C18.4406 73.1351 18.1298 73.0497 17.7776 73.0497L17.7781 73.0492Z\",\n \"M25.194 72.7416C25.5955 72.7416 25.974 72.8162 26.3297 72.9653C26.6848 73.1145 26.9985 73.3274 27.2703 73.6041C27.542 73.8803 27.7571 74.207 27.9147 74.5828C28.0723 74.9591 28.1508 75.3731 28.1508 75.8269C28.1508 76.2557 28.0718 76.6551 27.9147 77.0245C27.7571 77.3944 27.542 77.7206 27.2703 78.0032C26.998 78.2858 26.6848 78.5065 26.3297 78.665C25.974 78.8235 25.5959 78.9029 25.194 78.9029C24.7983 78.9029 24.4231 78.8284 24.0675 78.6792C23.7119 78.5296 23.4001 78.3172 23.1313 78.0405C22.8625 77.7638 22.6508 77.4375 22.4966 77.0618C22.342 76.6855 22.2649 76.2744 22.2649 75.8264C22.2649 75.3977 22.342 74.9969 22.4966 74.624C22.6508 74.2512 22.8625 73.9235 23.1313 73.6409C23.4001 73.3583 23.7119 73.1375 24.0675 72.9786C24.4231 72.8206 24.7983 72.7416 25.194 72.7416ZM25.0642 73.0492C24.7242 73.0492 24.4339 73.1253 24.1929 73.2778C23.9519 73.4304 23.7558 73.6306 23.6045 73.8793C23.4528 74.128 23.3416 74.4042 23.2708 74.7084C23.1996 75.0131 23.164 75.3177 23.164 75.6219C23.164 75.9761 23.2118 76.3288 23.3074 76.6796C23.4031 77.0308 23.544 77.3507 23.7294 77.6397C23.9148 77.9286 24.1417 78.1607 24.4105 78.3343C24.6793 78.508 24.99 78.5953 25.3423 78.5953C25.6818 78.5953 25.9726 78.5193 26.2136 78.3667C26.4546 78.2141 26.6521 78.0106 26.8068 77.7559C26.961 77.5013 27.0736 77.2202 27.1449 76.9126C27.2161 76.605 27.2512 76.2989 27.2512 75.9942C27.2512 75.64 27.2034 75.2888 27.1078 74.9414C27.0122 74.5941 26.8697 74.2767 26.6814 73.9907C26.4931 73.7052 26.2643 73.4765 25.9955 73.3058C25.7267 73.1351 25.4159 73.0497 25.0637 73.0497L25.0642 73.0492Z\",\n \"M30.5885 72.8255C30.7676 72.8255 30.9422 72.8211 31.112 72.8118C31.2822 72.8024 31.4598 72.7946 31.6447 72.7882C31.6696 72.8132 31.6803 72.8613 31.6769 72.9329C31.674 73.0046 31.6632 73.0526 31.6447 73.0777C31.6076 73.0777 31.5398 73.0821 31.4413 73.0914C31.3422 73.1007 31.2495 73.1145 31.1632 73.1331C31.0768 73.1517 31.0276 73.1802 31.0149 73.217C30.9964 73.2793 30.9851 73.3602 30.9827 73.4593C30.9793 73.5589 30.9778 73.6678 30.9778 73.7856V75.7057C31.0456 75.6626 31.1354 75.5909 31.2466 75.4914C31.3579 75.3918 31.4798 75.2784 31.6125 75.1514C31.7452 75.0238 31.8735 74.9012 31.9974 74.7829C32.2316 74.547 32.4155 74.362 32.5487 74.2281C32.6814 74.0951 32.7912 73.9779 32.878 73.8788C32.9643 73.7792 33.0541 73.6703 33.1468 73.5526C33.1775 73.5153 33.2073 73.4687 33.2351 73.4127C33.2629 73.3568 33.2766 73.3073 33.2766 73.2636C33.2766 73.1949 33.2444 73.1468 33.1795 73.1189C33.1146 73.0909 33.0439 73.0757 32.9663 73.0723C32.8887 73.0688 32.8321 73.0674 32.7946 73.0674H32.7663C32.7541 73.0365 32.7477 72.9928 32.7477 72.9369C32.7477 72.8809 32.7541 72.8309 32.7663 72.7872C32.9336 72.7936 33.1063 72.8029 33.2854 72.8157C33.4644 72.8284 33.6376 72.8343 33.8039 72.8343C34.0015 72.8343 34.1703 72.828 34.3094 72.8157C34.4484 72.8034 34.6069 72.7936 34.787 72.7872C34.7992 72.8123 34.8055 72.8652 34.8055 72.9457C34.8055 73.0266 34.7933 73.0669 34.7684 73.0669C34.7435 73.0669 34.6767 73.0718 34.5694 73.0806C34.4606 73.0904 34.3435 73.1179 34.2167 73.1645C34.0898 73.2116 33.9742 73.2906 33.8693 73.4024C33.6098 73.688 33.3702 73.9416 33.1507 74.1619C32.9312 74.3821 32.7136 74.597 32.497 74.8055C32.2809 75.0135 32.0394 75.2451 31.7745 75.4997C31.7618 75.5183 31.7618 75.5404 31.7745 75.5649C32.2126 76.0747 32.6224 76.552 33.0024 76.996C33.3824 77.44 33.7454 77.827 34.0918 78.1562C34.203 78.2558 34.3337 78.3461 34.4855 78.4265C34.6372 78.5075 34.8362 78.5575 35.0836 78.5762C35.1085 78.6012 35.1143 78.6478 35.1021 78.7155C35.0899 78.7842 35.0806 78.8244 35.0743 78.8367C34.7713 78.8367 34.504 78.8274 34.2723 78.8087C34.0405 78.7901 33.8781 78.765 33.7859 78.7341C33.7239 78.7096 33.6371 78.6689 33.5264 78.613C33.4146 78.5575 33.2975 78.4673 33.1736 78.3427C33.1122 78.2745 32.9839 78.1327 32.7892 77.9188C32.5946 77.7039 32.355 77.436 32.0706 77.1123C31.7862 76.7894 31.4744 76.4318 31.1349 76.0403C31.1222 76.0217 31.0944 76.0119 31.0515 76.0119C31.0266 76.0119 31.0017 76.0182 30.9773 76.0305V77.8393C30.9773 77.957 30.9788 78.0645 30.9822 78.1606C30.9851 78.2568 30.9959 78.3358 31.0144 78.3981C31.0266 78.429 31.0759 78.457 31.1627 78.482C31.2495 78.507 31.3422 78.5242 31.4408 78.533C31.5393 78.5428 31.6076 78.5467 31.6442 78.5467C31.6628 78.5718 31.674 78.6198 31.6764 78.6915C31.6798 78.7631 31.6686 78.8107 31.6442 78.8357C31.4593 78.8234 31.2813 78.8126 31.1115 78.8033C30.9417 78.794 30.7671 78.7896 30.588 78.7896C30.4148 78.7896 30.2387 78.7945 30.0597 78.8033C29.8801 78.8131 29.6982 78.8234 29.5128 78.8357C29.4879 78.8107 29.4772 78.7631 29.4806 78.6915C29.484 78.6198 29.4943 78.5718 29.5128 78.5467C29.5499 78.5467 29.6177 78.5423 29.7167 78.533C29.8158 78.5237 29.9099 78.5065 29.9997 78.482C30.0894 78.4574 30.1372 78.4295 30.1431 78.3981C30.168 78.3235 30.1816 78.2269 30.1846 78.1091C30.1875 77.9914 30.1894 77.8638 30.1894 77.727V73.896C30.1894 73.7596 30.188 73.6301 30.1846 73.5089C30.1812 73.3877 30.1675 73.2901 30.1431 73.215C30.1368 73.1782 30.0889 73.1498 29.9997 73.1311C29.9104 73.1125 29.8158 73.0988 29.7167 73.0894C29.6177 73.0796 29.5499 73.0757 29.5128 73.0757C29.4943 73.0507 29.4835 73.0026 29.4806 72.931C29.4777 72.8594 29.4884 72.8113 29.5128 72.7863C29.6982 72.7926 29.8801 72.8005 30.0597 72.8098C30.2387 72.8196 30.4148 72.8235 30.588 72.8235L30.5885 72.8255Z\",\n \"M37.0486 72.8254C37.2276 72.8254 37.4023 72.821 37.5716 72.8117C37.7423 72.8024 37.9194 72.7945 38.1053 72.7881C38.1302 72.8132 38.1404 72.8568 38.1375 72.9191C38.1336 72.9814 38.1233 73.0251 38.1053 73.0496C38.0682 73.0496 37.9994 73.0545 37.9013 73.0634C37.8023 73.0732 37.7096 73.0869 37.6233 73.1055C37.5369 73.1242 37.4872 73.1522 37.4745 73.1894C37.4564 73.2517 37.4447 73.3327 37.4423 73.4318C37.4394 73.5314 37.4374 73.6403 37.4374 73.758V77.8687C37.4374 77.9864 37.4394 78.0938 37.4423 78.19C37.4452 78.2862 37.4564 78.3656 37.4745 78.4274C37.4867 78.4583 37.5364 78.4868 37.6233 78.5113C37.7101 78.5364 37.8023 78.5535 37.9013 78.5624C37.9994 78.5722 38.0682 78.5766 38.1053 78.5766C38.1233 78.6016 38.1341 78.6448 38.1375 78.7071C38.1404 78.7694 38.1297 78.8125 38.1053 78.8376C37.9194 78.8253 37.7423 78.8145 37.5716 78.8052C37.4018 78.7959 37.2276 78.7915 37.0486 78.7915C36.8754 78.7915 36.6988 78.7964 36.5198 78.8052C36.3407 78.815 36.1587 78.8253 35.9729 78.8376C35.948 78.8125 35.9377 78.7694 35.9407 78.7071C35.9441 78.6448 35.9548 78.6016 35.9729 78.5766C36.0099 78.5766 36.0778 78.5717 36.1768 78.5624C36.2758 78.553 36.37 78.5359 36.4597 78.5113C36.5495 78.4868 36.5968 78.4588 36.6037 78.4274C36.6285 78.3534 36.6417 78.2567 36.6456 78.1385C36.6485 78.0207 36.6495 77.8932 36.6495 77.7563V73.8694C36.6495 73.733 36.6485 73.604 36.6456 73.4828C36.6417 73.3616 36.6285 73.264 36.6037 73.1889C36.5968 73.1517 36.5495 73.1237 36.4597 73.1051C36.37 73.0864 36.2758 73.0727 36.1768 73.0629C36.0778 73.0535 36.0099 73.0491 35.9729 73.0491C35.9548 73.0246 35.9436 72.9809 35.9407 72.9186C35.9377 72.8563 35.9485 72.8127 35.9729 72.7876C36.1587 72.794 36.3407 72.8019 36.5198 72.8112C36.6988 72.821 36.8754 72.8249 37.0486 72.8249V72.8254Z\",\n \"M40.3114 72.7974H40.7095C40.8397 72.7974 40.9354 72.794 40.9973 72.7876C41.0895 72.9308 41.2378 73.1325 41.4417 73.3935C41.6462 73.6545 41.8837 73.9513 42.156 74.2834C42.4277 74.616 42.7087 74.9594 42.9995 75.3136C43.2902 75.6678 43.5712 76.0176 43.8429 76.3625C44.1147 76.7074 44.3493 77.0194 44.5469 77.299V73.8502C44.5469 73.6888 44.544 73.5612 44.5377 73.4685C44.5313 73.3753 44.5035 73.2914 44.4542 73.2164C44.4357 73.186 44.3801 73.156 44.2869 73.1281C44.1947 73.0996 44.0971 73.078 43.9952 73.0623C43.8932 73.0471 43.8176 73.0393 43.7678 73.0393C43.7429 73.0084 43.7322 72.9632 43.7356 72.9044C43.7385 72.8455 43.7434 72.8033 43.7493 72.7783C43.9283 72.7847 44.0971 72.792 44.2542 72.8018C44.4118 72.8111 44.5899 72.8156 44.7874 72.8156C44.9294 72.8156 45.0455 72.8141 45.1353 72.8107C45.225 72.8077 45.3172 72.8028 45.4129 72.7969C45.5085 72.791 45.6251 72.7847 45.7607 72.7783C45.7729 72.8033 45.7822 72.8406 45.7885 72.8901C45.7948 72.9402 45.7856 72.9897 45.7607 73.0398C45.7236 73.0398 45.6509 73.0461 45.5431 73.0584C45.4353 73.0707 45.3309 73.0908 45.2324 73.1187C45.1333 73.1467 45.0718 73.1796 45.047 73.2164C45.0035 73.2851 44.9787 73.3626 44.9728 73.4499C44.967 73.5372 44.9635 73.6672 44.9635 73.8414V77.9986C44.9635 78.1296 44.965 78.2547 44.9679 78.3764C44.9713 78.4975 44.9762 78.6388 44.9821 78.8007C44.9757 78.8253 44.9572 78.841 44.9265 78.8473C44.8957 78.8537 44.8743 78.8567 44.8616 78.8567C44.8367 78.8567 44.7947 78.8414 44.7362 78.81C44.6777 78.7786 44.6142 78.7232 44.5459 78.6423L40.5973 73.627V77.7661C40.5973 77.9275 40.6022 78.0536 40.6109 78.1438C40.6207 78.2341 40.6465 78.3165 40.69 78.3906C40.708 78.422 40.7622 78.4514 40.8519 78.4794C40.9417 78.5078 41.0373 78.5304 41.1393 78.5495C41.2412 78.5687 41.3169 78.578 41.3666 78.578C41.3915 78.6089 41.4037 78.6521 41.4037 78.7085C41.4037 78.7649 41.3974 78.8081 41.3852 78.839C41.2056 78.8267 41.0388 78.8159 40.8846 78.8066C40.7305 78.7973 40.5539 78.7929 40.3563 78.7929C40.2207 78.7929 40.1041 78.7963 40.0089 78.8027C39.9128 78.8091 39.8201 78.8145 39.7308 78.8208C39.6416 78.8272 39.525 78.8331 39.383 78.8395C39.3708 78.8145 39.3615 78.7777 39.3552 78.7276C39.3489 78.6776 39.3581 78.6285 39.383 78.5785C39.4201 78.5785 39.4913 78.5702 39.5967 78.5549C39.7016 78.5397 39.805 78.5177 39.9074 78.4897C40.0094 78.4612 40.0694 78.4289 40.088 78.3916C40.1309 78.3234 40.1577 78.2473 40.1665 78.1635C40.1763 78.0796 40.1802 77.9505 40.1802 77.7764V73.8242C40.1802 73.6505 40.1758 73.52 40.1665 73.4327C40.1572 73.3454 40.1309 73.2679 40.088 73.1992C40.0694 73.1624 40.0094 73.1295 39.9074 73.1016C39.805 73.0736 39.7016 73.0535 39.5967 73.0412C39.4913 73.029 39.4206 73.0226 39.383 73.0226C39.3581 72.9725 39.3493 72.923 39.3552 72.8734C39.3615 72.8234 39.3703 72.7861 39.383 72.7611C39.5933 72.7675 39.763 72.7748 39.8928 72.7847C40.0231 72.794 40.1621 72.7984 40.3099 72.7984L40.3114 72.7974Z\",\n \"M51.2954 77.2158V77.104C51.2954 76.9857 51.294 76.8788 51.2906 76.7821C51.2876 76.686 51.2769 76.607 51.2584 76.5447C51.252 76.5074 51.2047 76.478 51.1149 76.4559C51.0247 76.4343 50.9325 76.4191 50.8369 76.4093C50.7412 76.4 50.6744 76.3956 50.6378 76.3956C50.6193 76.3705 50.6081 76.3269 50.6056 76.2651C50.6022 76.2028 50.6134 76.1591 50.6378 76.1341C50.8232 76.1405 51.0022 76.1498 51.1754 76.162C51.3481 76.1748 51.5213 76.1807 51.6945 76.1807C51.8735 76.1807 52.0419 76.1748 52.1994 76.162C52.357 76.1503 52.5287 76.1405 52.7141 76.1341C52.7385 76.1591 52.7492 76.2028 52.7463 76.2651C52.7429 76.3269 52.7327 76.3705 52.7141 76.3956C52.677 76.3956 52.6122 76.4005 52.5195 76.4093C52.4273 76.4191 52.3404 76.4343 52.2599 76.4559C52.1799 76.478 52.1331 76.5069 52.1214 76.5447C52.0965 76.6193 52.0823 76.7159 52.0794 76.8337C52.076 76.9519 52.0745 77.0794 52.0745 77.2158V77.859C52.0745 77.9586 52.0902 78.0331 52.1214 78.0827C52.1516 78.1327 52.1677 78.1823 52.1677 78.2323C52.1677 78.2573 52.158 78.2789 52.1399 78.2976C52.1214 78.3162 52.0716 78.3476 51.9911 78.3903C51.8613 78.459 51.7116 78.5301 51.5418 78.6052C51.3715 78.6797 51.1584 78.7416 50.9017 78.7916C50.6451 78.8416 50.3163 78.8662 49.9148 78.8662C49.4699 78.8662 49.0621 78.7867 48.6913 78.6287C48.3205 78.4703 48.0005 78.2524 47.7317 77.9762C47.4629 77.7 47.2555 77.3826 47.1111 77.0255C46.9658 76.6678 46.8931 76.2876 46.8931 75.8839C46.8931 75.4551 46.9687 75.0528 47.1204 74.6765C47.2721 74.3008 47.4834 73.9672 47.7556 73.6748C48.0273 73.3824 48.3503 73.1542 48.724 72.9899C49.0977 72.8256 49.507 72.7426 49.9524 72.7426C50.249 72.7426 50.5593 72.7549 50.8837 72.7799C51.2081 72.805 51.5374 72.8545 51.8706 72.9291C51.914 73.1842 51.9477 73.3966 51.9726 73.5678C51.9975 73.739 52.0209 73.8941 52.0423 74.0339C52.0643 74.1737 52.0745 74.2561 52.0745 74.2806C52.0809 74.3057 52.0623 74.3307 52.0194 74.3552C51.976 74.3802 51.9292 74.3925 51.8804 74.3925C51.837 74.3925 51.7999 74.3827 51.7687 74.364C51.7565 74.2958 51.7272 74.1904 51.6804 74.0471C51.634 73.9044 51.5506 73.7547 51.4301 73.5997C51.3096 73.4447 51.1354 73.3122 50.9066 73.2033C50.6778 73.0944 50.3749 73.0404 49.9982 73.0404C49.6646 73.0404 49.3616 73.1165 49.0904 73.2686C48.8181 73.4211 48.5849 73.6262 48.3903 73.8842C48.1956 74.1418 48.0473 74.4278 47.9454 74.7413C47.8434 75.0558 47.7927 75.3707 47.7927 75.6876C47.7927 76.0423 47.8405 76.3902 47.9361 76.7316C48.0317 77.0736 48.1771 77.3826 48.3722 77.6593C48.5664 77.9355 48.8103 78.1568 49.1045 78.3216C49.3982 78.486 49.7426 78.5684 50.1378 78.5684C50.3724 78.5684 50.5812 78.536 50.7632 78.4707C50.9457 78.4055 51.1047 78.3383 51.2408 78.2706C51.2715 78.2583 51.2891 78.2407 51.2915 78.2196C51.295 78.1975 51.2964 78.171 51.2964 78.1401V77.2173L51.2954 77.2158Z\",\n] as const;\n\nexport const BRAND_LOGO_VIEW_BOX = \"5.0271 7.09708 51.9459 71.80582\";\n","export type BrandLogoVariant = \"white\" | \"brand\";\n\nexport interface BrandLogoProps {\n /** White for dark surfaces, or the Cortel brand color for light surfaces. */\n variant?: BrandLogoVariant;\n /** Rendered width. Defaults to 62; setting only width preserves the original ratio. */\n width?: number;\n /** Rendered height. Defaults to 86; setting only height preserves the original ratio. */\n height?: number;\n /** Accessible name announced for the logo. */\n accessibilityLabel?: string;\n}\n\nexport const BRAND_LOGO_DEFAULT_WIDTH = 62;\nexport const BRAND_LOGO_DEFAULT_HEIGHT = 86;\n\nexport const BRAND_LOGO_COLORS = {\n white: \"#FFFFFF\",\n brand: \"#B76533\",\n} as const satisfies Record<BrandLogoVariant, string>;\n\nexport function resolveBrandLogoSize(\n width?: number,\n height?: number,\n): { width: number; height: number } {\n if (width != null && height != null) {\n return { width, height };\n }\n\n if (width != null) {\n return {\n width,\n height: width * (BRAND_LOGO_DEFAULT_HEIGHT / BRAND_LOGO_DEFAULT_WIDTH),\n };\n }\n\n if (height != null) {\n return {\n width: height * (BRAND_LOGO_DEFAULT_WIDTH / BRAND_LOGO_DEFAULT_HEIGHT),\n height,\n };\n }\n\n return { width: BRAND_LOGO_DEFAULT_WIDTH, height: BRAND_LOGO_DEFAULT_HEIGHT };\n}\n","import Svg, { Path } from \"react-native-svg\";\nimport { BRAND_LOGO_PATHS, BRAND_LOGO_VIEW_BOX } from \"./brandLogoPaths\";\nimport { BRAND_LOGO_COLORS, resolveBrandLogoSize, type BrandLogoProps } from \"./BrandLogo.types\";\n\n/** Native Cortel Booking brand mark. */\nexport function BrandLogo({\n variant = \"white\",\n width,\n height,\n accessibilityLabel = \"Cortel Booking\",\n}: BrandLogoProps) {\n const size = resolveBrandLogoSize(width, height);\n const fill = BRAND_LOGO_COLORS[variant];\n\n return (\n <Svg\n width={size.width}\n height={size.height}\n viewBox={BRAND_LOGO_VIEW_BOX}\n preserveAspectRatio=\"none\"\n fill=\"none\"\n accessible\n accessibilityRole=\"image\"\n accessibilityLabel={accessibilityLabel}\n >\n {BRAND_LOGO_PATHS.map((path, index) => (\n <Path key={index} d={path} fill={fill} />\n ))}\n </Svg>\n );\n}\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ComponentRef,\n} from \"react\";\nimport {\n Image,\n Platform,\n Pressable,\n StyleSheet,\n Text,\n View,\n type GestureResponderEvent,\n type PressableProps,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport { ChevronDownIcon, UserIcon } from \"../../icons\";\nimport { avatarTypography, colors } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\nimport { MenuItem, type MenuItemProps } from \"../../primitives\";\n\n/** Data shape for an Avatar dropdown option — same fields as `MenuItem`. */\nexport type AvatarMenuItem = Pick<\n MenuItemProps,\n \"icon\" | \"label\" | \"disabled\" | \"backgroundColor\" | \"hoverColor\"\n> & {\n /** Stable identity for React keys; falls back to `label`. */\n key?: string;\n onPress: () => void;\n};\n\nexport interface AvatarProps extends Omit<\n PressableProps,\n \"onPress\" | \"disabled\" | \"style\" | \"children\" | \"hitSlop\"\n> {\n /** Logged-in user's display name. */\n name: string;\n /** Shown under the name, e.g. the user's email. */\n email?: string;\n /** Photo URL; falls back to a placeholder icon when missing or when it fails to load. */\n imageUrl?: string | null;\n /** Called on every press, in addition to any menu toggling driven by `menuItems`. */\n onPress?: (event: GestureResponderEvent) => void;\n /** External — non-interactive. */\n disabled?: boolean;\n /** Trailing chevron, typically used to hint a dropdown/menu. */\n showChevron?: boolean;\n /**\n * Account-menu options, supplied entirely by the consumer (icon, label,\n * action, and per-item colors). When set, pressing the chip opens a\n * dropdown listing them via `MenuItem`.\n */\n menuItems?: AvatarMenuItem[];\n /** Controlled open state for the menu. */\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** Fixed menu width; defaults to matching the chip's width. */\n menuWidth?: number;\n style?: StyleProp<ViewStyle>;\n className?: string;\n hitSlop?: PressableProps[\"hitSlop\"];\n}\n\nconst IMAGE_SIZE = 48;\nconst CONTAINER_RADIUS = 71;\nconst CHEVRON_SIZE = 20;\nconst FALLBACK_ICON_SIZE = 20;\nconst MENU_RADIUS = 16;\n\nexport const Avatar = forwardRef<ComponentRef<typeof View>, AvatarProps>(function Avatar(\n {\n name,\n email,\n imageUrl,\n onPress,\n disabled = false,\n showChevron = true,\n menuItems,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n menuWidth,\n style,\n className,\n accessibilityLabel,\n hitSlop = 8,\n ...rest\n },\n forwardedRef,\n) {\n const wrapperRef = useRef<ComponentRef<typeof View>>(null);\n const containerRef = useRef<ComponentRef<typeof View>>(null);\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n const [imageFailed, setImageFailed] = useState(false);\n\n const resolvedMenuItems = menuItems ?? [];\n const hasMenu = resolvedMenuItems.length > 0;\n const isInteractive = onPress != null || hasMenu;\n const isOpenControlled = typeof openProp === \"boolean\";\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const isOpen = hasMenu && (isOpenControlled ? openProp : uncontrolledOpen);\n\n useApplyWebClassName(containerRef, className);\n\n const setOpen = useCallback(\n (next: boolean) => {\n if (!isOpenControlled) setUncontrolledOpen(next);\n onOpenChange?.(next);\n },\n [isOpenControlled, onOpenChange],\n );\n\n const focusTrigger = useCallback(() => {\n const node = containerRef.current as unknown as { focus?: () => void } | null;\n node?.focus?.();\n }, []);\n\n const closeAndFocusTrigger = useCallback(() => {\n setOpen(false);\n focusTrigger();\n }, [focusTrigger, setOpen]);\n\n const handlePress = (event: GestureResponderEvent) => {\n onPress?.(event);\n if (hasMenu) setOpen(!isOpen);\n };\n\n const handleItemPress = useCallback(\n (item: AvatarMenuItem) => {\n if (item.disabled) return;\n item.onPress();\n closeAndFocusTrigger();\n },\n [closeAndFocusTrigger],\n );\n\n // Close on outside click (web only; native has no document-level events).\n useEffect(() => {\n if (Platform.OS !== \"web\" || !isOpen) return;\n\n const handlePointerDown = (event: MouseEvent | TouchEvent) => {\n const wrapper = wrapperRef.current as unknown as {\n contains?: (node: Node) => boolean;\n } | null;\n const target = event.target;\n if (wrapper?.contains && target instanceof Node && !wrapper.contains(target)) {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handlePointerDown);\n document.addEventListener(\"touchstart\", handlePointerDown);\n return () => {\n document.removeEventListener(\"mousedown\", handlePointerDown);\n document.removeEventListener(\"touchstart\", handlePointerDown);\n };\n }, [isOpen, setOpen]);\n\n // Escape closes the menu and returns focus to the trigger (web only).\n useEffect(() => {\n if (Platform.OS !== \"web\" || !isOpen) return;\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n closeAndFocusTrigger();\n }\n };\n\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [isOpen, closeAndFocusTrigger]);\n\n const hasImage = Boolean(imageUrl) && !imageFailed;\n const resolvedAccessibilityLabel = accessibilityLabel ?? [name, email].filter(Boolean).join(\", \");\n\n return (\n <View ref={wrapperRef} style={[styles.wrapper, isOpen && styles.wrapperOpen]}>\n <Pressable\n {...rest}\n ref={setContainerRef}\n onPress={handlePress}\n disabled={disabled || !isInteractive}\n hitSlop={isInteractive ? hitSlop : undefined}\n accessibilityRole={isInteractive ? \"button\" : undefined}\n accessibilityLabel={resolvedAccessibilityLabel}\n accessibilityState={\n isInteractive ? { disabled, expanded: hasMenu ? isOpen : undefined } : undefined\n }\n style={[styles.root, disabled && styles.disabled, style]}\n >\n <View style={styles.imageWrap}>\n {hasImage ? (\n <Image\n source={{ uri: imageUrl ?? undefined }}\n style={styles.image}\n onError={() => setImageFailed(true)}\n />\n ) : (\n <View style={styles.imageFallback}>\n <UserIcon size={FALLBACK_ICON_SIZE} color={colors.primary} />\n </View>\n )}\n </View>\n\n <View style={styles.textColumn}>\n <Text style={styles.name} numberOfLines={1}>\n {name}\n </Text>\n {email ? (\n <Text style={styles.email} numberOfLines={1}>\n {email}\n </Text>\n ) : null}\n </View>\n\n {showChevron ? (\n <View style={[styles.chevronSlot, isOpen && styles.chevronOpen]}>\n <ChevronDownIcon size={CHEVRON_SIZE} color={isOpen ? colors.primary : colors.grey100} />\n </View>\n ) : null}\n </Pressable>\n\n {hasMenu && isOpen ? (\n <View style={[styles.menu, menuWidth != null && { right: undefined, width: menuWidth }]}>\n {resolvedMenuItems.map((item) => {\n const itemKey = item.key ?? item.label;\n return (\n <MenuItem\n key={itemKey}\n icon={item.icon}\n label={item.label}\n disabled={item.disabled}\n backgroundColor={item.backgroundColor}\n hoverColor={item.hoverColor}\n onPress={() => handleItemPress(item)}\n />\n );\n })}\n </View>\n ) : null}\n </View>\n );\n});\n\nconst styles = StyleSheet.create({\n wrapper: {\n position: \"relative\",\n alignSelf: \"flex-start\",\n },\n wrapperOpen: {\n zIndex: 20,\n },\n root: {\n flexDirection: \"row\",\n alignItems: \"center\",\n alignSelf: \"flex-start\",\n gap: 12,\n paddingTop: 4,\n paddingBottom: 4,\n paddingLeft: 4,\n paddingRight: 12,\n borderRadius: CONTAINER_RADIUS,\n backgroundColor: colors.grey700,\n },\n disabled: {\n opacity: 0.6,\n },\n imageWrap: {\n width: IMAGE_SIZE,\n height: IMAGE_SIZE,\n borderRadius: IMAGE_SIZE / 2,\n overflow: \"hidden\",\n flexShrink: 0,\n },\n image: {\n width: IMAGE_SIZE,\n height: IMAGE_SIZE,\n },\n imageFallback: {\n width: IMAGE_SIZE,\n height: IMAGE_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: colors.grey600,\n },\n textColumn: {\n minWidth: 0,\n flexShrink: 1,\n gap: 3,\n },\n name: {\n ...avatarTypography.name,\n color: colors.white,\n },\n email: {\n ...avatarTypography.email,\n color: colors.grey0,\n },\n chevronSlot: {\n width: CHEVRON_SIZE,\n height: CHEVRON_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n chevronOpen: {\n transform: [{ rotate: \"180deg\" }],\n },\n menu: {\n position: \"absolute\",\n top: \"100%\",\n left: 0,\n right: 0,\n marginTop: 8,\n zIndex: 10,\n borderRadius: MENU_RADIUS,\n padding: 8,\n gap: 8,\n backgroundColor: colors.grey700,\n ...Platform.select({\n web: {\n boxShadow: `0 8px 24px ${colors.black}73`,\n },\n default: {\n elevation: 8,\n },\n }),\n },\n});\n","import { forwardRef, useMemo, useRef, useState, type ComponentRef } from \"react\";\nimport {\n Image,\n Pressable,\n StyleSheet,\n Text,\n View,\n type StyleProp,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport { LogOutIcon } from \"../../icons\";\nimport { colors, fonts } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport interface AvatarSimpleProps extends Omit<ViewProps, \"style\" | \"children\"> {\n /** Logged-in user's display name. */\n name: string;\n /** Shown under the name, e.g. the user's email. */\n email: string;\n /** Photo URL; falls back to a solid placeholder when missing or when it fails to load. */\n imageUrl?: string | null;\n /** Called when the trailing logout control is pressed. */\n onLogOut?: () => void;\n /** Accessible label for the logout control. Defaults to `\"Log out\"`. */\n logOutAccessibilityLabel?: string;\n /**\n * Compact mode — avatar image only (no card chrome, name, email, or logout).\n * Used by collapsed account sidebars.\n */\n compact?: boolean;\n style?: StyleProp<ViewStyle>;\n className?: string;\n}\n\nconst IMAGE_SIZE = 32;\nconst CARD_WIDTH = 268;\nconst CARD_HEIGHT = 56;\nconst LOG_OUT_SIZE = 16;\n\nexport const AvatarSimple = forwardRef<ComponentRef<typeof View>, AvatarSimpleProps>(\n function AvatarSimple(\n {\n name,\n email,\n imageUrl,\n onLogOut,\n logOutAccessibilityLabel = \"Log out\",\n compact = false,\n style,\n className,\n ...rest\n },\n forwardedRef,\n ) {\n const containerRef = useRef<ComponentRef<typeof View>>(null);\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n const [imageFailed, setImageFailed] = useState(false);\n const showImage = Boolean(imageUrl) && !imageFailed;\n\n useApplyWebClassName(containerRef, className);\n\n return (\n <View\n {...rest}\n ref={setContainerRef}\n style={[styles.root, compact ? styles.rootCompact : styles.rootCard, style]}\n accessibilityRole=\"summary\"\n accessibilityLabel={`${name}, ${email}`}\n >\n <View style={styles.avatar}>\n {showImage ? (\n <Image\n source={{ uri: imageUrl ?? undefined }}\n style={styles.avatarImage}\n onError={() => setImageFailed(true)}\n accessibilityIgnoresInvertColors\n />\n ) : null}\n </View>\n\n {!compact ? (\n <View style={styles.details}>\n <View style={styles.textBlock}>\n <Text style={styles.name} numberOfLines={1} ellipsizeMode=\"tail\">\n {name}\n </Text>\n <Text style={styles.email} numberOfLines={1} ellipsizeMode=\"tail\">\n {email}\n </Text>\n </View>\n\n <Pressable\n onPress={onLogOut}\n accessibilityRole=\"button\"\n accessibilityLabel={logOutAccessibilityLabel}\n hitSlop={8}\n style={styles.logOutButton}\n >\n <LogOutIcon color={colors.primary} size={LOG_OUT_SIZE} strokeWidth={2} />\n </Pressable>\n </View>\n ) : null}\n </View>\n );\n },\n);\n\nconst styles = StyleSheet.create({\n root: {\n flexDirection: \"row\",\n alignItems: \"center\",\n overflow: \"hidden\",\n },\n rootCard: {\n width: CARD_WIDTH,\n height: CARD_HEIGHT,\n gap: 12,\n borderRadius: 12,\n paddingVertical: 4,\n paddingHorizontal: 12,\n backgroundColor: colors.grey700,\n },\n rootCompact: {\n width: IMAGE_SIZE,\n height: IMAGE_SIZE,\n borderRadius: IMAGE_SIZE,\n backgroundColor: \"transparent\",\n },\n avatar: {\n width: IMAGE_SIZE,\n height: IMAGE_SIZE,\n borderRadius: 56,\n backgroundColor: colors.grey500,\n overflow: \"hidden\",\n flexShrink: 0,\n },\n avatarImage: {\n width: IMAGE_SIZE,\n height: IMAGE_SIZE,\n },\n details: {\n flex: 1,\n minWidth: 0,\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 12,\n },\n textBlock: {\n flex: 1,\n minWidth: 0,\n },\n name: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"600\",\n lineHeight: 16,\n letterSpacing: 0,\n color: colors.white,\n },\n email: {\n marginTop: 2,\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"400\",\n lineHeight: 16,\n letterSpacing: 0,\n color: colors.grey0,\n },\n logOutButton: {\n width: LOG_OUT_SIZE,\n height: LOG_OUT_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n});\n","import { forwardRef, useMemo, useRef, type ComponentRef, type ReactNode } from \"react\";\nimport {\n Pressable,\n StyleSheet,\n Text,\n View,\n type StyleProp,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport { BellIcon, ChevronLeftIcon, MenuIcon } from \"../../icons\";\nimport { colors, fonts } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport interface AccountHeaderProps extends Omit<ViewProps, \"style\" | \"children\"> {\n title: string;\n /**\n * When set, shows a 32×32 back control (takes priority over `onMenuPress`).\n * Used on nested account pages such as booking details.\n */\n onBackPress?: () => void;\n /** When set, shows the 28×28 menu control (mobile account shell). Ignored if `onBackPress` is set. */\n onMenuPress?: () => void;\n onNotificationsPress?: () => void;\n /** Optional status chip (or other accessory) rendered after the title with a 12px gap. */\n badge?: ReactNode;\n /** Accessible name for the back control. Defaults to `\"Back\"`. */\n backAccessibilityLabel?: string;\n /** Accessible name for the menu control. Defaults to `\"Open menu\"`. */\n menuAccessibilityLabel?: string;\n /** Accessible name for notifications. Defaults to `\"Notifications\"`. */\n notificationsAccessibilityLabel?: string;\n style?: StyleProp<ViewStyle>;\n className?: string;\n}\n\nconst HEADER_HEIGHT = 64;\nconst MENU_ICON_SIZE = 28;\nconst ICON_BUTTON_SIZE = 32;\nconst ICON_BUTTON_ICON_SIZE = 16;\nconst BACK_TITLE_GAP = 12;\nconst TITLE_BADGE_GAP = 12;\nconst MENU_TITLE_GAP = 16;\nconst RIGHT_GAP = 16;\n\nexport const AccountHeader = forwardRef<ComponentRef<typeof View>, AccountHeaderProps>(\n function AccountHeader(\n {\n title,\n onBackPress,\n onMenuPress,\n onNotificationsPress,\n badge,\n backAccessibilityLabel = \"Back\",\n menuAccessibilityLabel = \"Open menu\",\n notificationsAccessibilityLabel = \"Notifications\",\n style,\n className,\n ...rest\n },\n forwardedRef,\n ) {\n const containerRef = useRef<ComponentRef<typeof View>>(null);\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n const resolvedClassName = className?.trim() || undefined;\n const showBack = onBackPress != null;\n const showMenu = !showBack && onMenuPress != null;\n const isCompact = showMenu;\n\n useApplyWebClassName(containerRef, resolvedClassName);\n\n return (\n <View\n {...rest}\n ref={setContainerRef}\n accessibilityRole=\"header\"\n style={[styles.base, isCompact ? styles.compact : styles.desktop, style]}\n >\n <View\n style={[\n styles.start,\n showBack ? styles.startWithBack : null,\n showMenu ? styles.startWithMenu : null,\n ]}\n >\n {showBack ? (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={backAccessibilityLabel}\n hitSlop={8}\n onPress={onBackPress}\n style={styles.iconButton}\n >\n <ChevronLeftIcon\n color={colors.white}\n size={ICON_BUTTON_ICON_SIZE}\n strokeWidth={1.5}\n />\n </Pressable>\n ) : null}\n\n {showMenu ? (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={menuAccessibilityLabel}\n hitSlop={8}\n onPress={onMenuPress}\n style={styles.menuButton}\n >\n <MenuIcon color={colors.white} size={MENU_ICON_SIZE} strokeWidth={1.5} />\n </Pressable>\n ) : null}\n\n <View style={styles.titleRow}>\n <Text\n numberOfLines={1}\n style={[\n styles.title,\n showBack || !isCompact ? styles.titleDesktop : styles.titleCompact,\n ]}\n >\n {title}\n </Text>\n {badge != null ? <View style={styles.badgeSlot}>{badge}</View> : null}\n </View>\n </View>\n\n <View style={styles.end}>\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={notificationsAccessibilityLabel}\n onPress={onNotificationsPress}\n style={styles.iconButton}\n >\n <BellIcon color={colors.white} size={ICON_BUTTON_ICON_SIZE} strokeWidth={1.5} />\n </Pressable>\n </View>\n </View>\n );\n },\n);\n\nconst styles = StyleSheet.create({\n base: {\n height: HEADER_HEIGHT,\n width: \"100%\",\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n backgroundColor: colors.dark,\n borderBottomWidth: 1,\n borderBottomColor: colors.grey700,\n },\n desktop: {\n paddingTop: 16,\n paddingBottom: 16,\n paddingLeft: 24,\n paddingRight: 24,\n },\n compact: {\n padding: 16,\n },\n start: {\n flex: 1,\n minWidth: 0,\n flexDirection: \"row\",\n alignItems: \"center\",\n },\n startWithBack: {\n gap: BACK_TITLE_GAP,\n },\n startWithMenu: {\n gap: MENU_TITLE_GAP,\n },\n titleRow: {\n flex: 1,\n minWidth: 0,\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: TITLE_BADGE_GAP,\n },\n end: {\n flexShrink: 0,\n marginLeft: RIGHT_GAP,\n },\n iconButton: {\n width: ICON_BUTTON_SIZE,\n height: ICON_BUTTON_SIZE,\n padding: 8,\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: 5,\n backgroundColor: colors.grey800,\n borderWidth: 1,\n borderColor: colors.grey700,\n flexShrink: 0,\n },\n menuButton: {\n width: MENU_ICON_SIZE,\n height: MENU_ICON_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n title: {\n flexShrink: 1,\n fontFamily: fonts.sans,\n fontWeight: \"600\",\n letterSpacing: 0,\n color: colors.white,\n },\n titleDesktop: {\n fontSize: 16,\n lineHeight: 22,\n },\n titleCompact: {\n fontSize: 14,\n lineHeight: 20,\n },\n badgeSlot: {\n flexShrink: 0,\n },\n});\n","import { forwardRef, useMemo, useRef, type ComponentRef } from \"react\";\nimport {\n Platform,\n StyleSheet,\n Text,\n View,\n type StyleProp,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport type { IconComponent } from \"../../icons\";\nimport { badgeTypography, colors } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport type BadgeVariant = \"default\" | \"transparent\";\n\nexport interface BadgeProps extends Omit<ViewProps, \"style\" | \"children\"> {\n label: string;\n variant?: BadgeVariant;\n icon?: IconComponent;\n style?: StyleProp<ViewStyle>;\n className?: string;\n}\n\nconst ICON_SIZE = 20;\n\nconst webBlurStyle: ViewStyle =\n Platform.OS === \"web\"\n ? ({\n backdropFilter: \"blur(10.3px)\",\n WebkitBackdropFilter: \"blur(10.3px)\",\n } as ViewStyle)\n : {};\n\n/**\n * Variant chrome — icon color is part of the variant, not a separate prop.\n * - default: grey fill, no border, white icon\n * - transparent: muted white fill + 1px border, primary icon, blur on web\n */\nconst variantConfig = {\n default: {\n backgroundColor: colors.grey750,\n iconColor: colors.white,\n border: false,\n blur: false,\n },\n transparent: {\n backgroundColor: colors.whiteAlpha5,\n iconColor: colors.primary,\n border: true,\n blur: true,\n },\n} as const satisfies Record<\n BadgeVariant,\n { backgroundColor: string; iconColor: string; border: boolean; blur: boolean }\n>;\n\nexport const Badge = forwardRef<ComponentRef<typeof View>, BadgeProps>(function Badge(\n { label, variant = \"default\", icon: Icon, style, className, accessibilityLabel, ...rest },\n forwardedRef,\n) {\n const containerRef = useRef<ComponentRef<typeof View>>(null);\n const preset = variantConfig[variant];\n const resolvedClassName = className?.trim() || undefined;\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n\n useApplyWebClassName(containerRef, resolvedClassName);\n\n return (\n <View\n {...rest}\n ref={setContainerRef}\n style={[\n styles.base,\n { backgroundColor: preset.backgroundColor },\n preset.border ? styles.transparentBorder : null,\n preset.blur ? webBlurStyle : null,\n style,\n ]}\n accessibilityRole=\"text\"\n accessibilityLabel={accessibilityLabel ?? label}\n >\n {Icon ? (\n <View style={styles.iconSlot}>\n <Icon size={ICON_SIZE} color={preset.iconColor} />\n </View>\n ) : null}\n\n <Text style={[styles.label, Platform.OS === \"android\" ? styles.labelAndroid : null]}>\n {label}\n </Text>\n </View>\n );\n});\n\nconst styles = StyleSheet.create({\n base: {\n flexDirection: \"row\",\n alignItems: \"center\",\n alignSelf: \"flex-start\",\n minHeight: 44,\n paddingVertical: 12,\n paddingHorizontal: 16,\n gap: 12,\n borderRadius: 79,\n overflow: \"hidden\",\n borderWidth: 0,\n borderColor: \"transparent\",\n borderStyle: \"solid\",\n },\n transparentBorder: {\n borderWidth: 1,\n borderColor: colors.whiteAlpha5,\n borderStyle: \"solid\",\n },\n iconSlot: {\n width: ICON_SIZE,\n height: ICON_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n label: {\n ...badgeTypography,\n color: colors.white,\n },\n labelAndroid: {\n includeFontPadding: false,\n },\n});\n","import { forwardRef, useMemo, useRef, type ComponentRef } from \"react\";\nimport {\n Platform,\n StyleSheet,\n Text,\n View,\n type StyleProp,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport { colors, fonts } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport type StatusBadgeTone = \"active\" | \"completed\" | \"cancelled\";\n\nexport interface StatusBadgeProps extends Omit<ViewProps, \"style\" | \"children\"> {\n label: string;\n tone?: StatusBadgeTone;\n style?: StyleProp<ViewStyle>;\n className?: string;\n}\n\nconst toneConfig = {\n active: {\n backgroundColor: colors.greenMuted,\n color: colors.green,\n },\n completed: {\n backgroundColor: colors.greyMuted,\n color: colors.grey0,\n },\n cancelled: {\n backgroundColor: colors.cancelledMuted,\n color: colors.red,\n },\n} as const satisfies Record<StatusBadgeTone, { backgroundColor: string; color: string }>;\n\nconst webBlurStyle: ViewStyle =\n Platform.OS === \"web\"\n ? ({\n backdropFilter: \"blur(39.5px)\",\n WebkitBackdropFilter: \"blur(39.5px)\",\n } as ViewStyle)\n : {};\n\n/**\n * Compact status chip (e.g. booking active / completed / cancelled).\n * Height 28, pill radius, Semibold 12 — distinct from amenity `Badge`.\n */\nexport const StatusBadge = forwardRef<ComponentRef<typeof View>, StatusBadgeProps>(\n function StatusBadge(\n { label, tone = \"active\", style, className, accessibilityLabel, ...rest },\n forwardedRef,\n ) {\n const containerRef = useRef<ComponentRef<typeof View>>(null);\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n const preset = toneConfig[tone];\n\n useApplyWebClassName(containerRef, className);\n\n return (\n <View\n {...rest}\n ref={setContainerRef}\n accessibilityRole=\"text\"\n accessibilityLabel={accessibilityLabel ?? label}\n style={[styles.base, { backgroundColor: preset.backgroundColor }, webBlurStyle, style]}\n >\n <Text\n style={[\n styles.label,\n { color: preset.color },\n Platform.OS === \"android\" ? styles.labelAndroid : null,\n ]}\n >\n {label}\n </Text>\n </View>\n );\n },\n);\n\nconst styles = StyleSheet.create({\n base: {\n height: 28,\n minHeight: 28,\n flexDirection: \"row\",\n alignItems: \"center\",\n alignSelf: \"flex-start\",\n justifyContent: \"center\",\n gap: 6,\n paddingVertical: 6,\n paddingHorizontal: 12,\n borderRadius: 50,\n overflow: \"hidden\",\n },\n label: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"600\",\n lineHeight: 12,\n letterSpacing: 0,\n },\n labelAndroid: {\n includeFontPadding: false,\n },\n});\n","import { forwardRef, useMemo, useRef, type ComponentRef } from \"react\";\nimport {\n Pressable,\n StyleSheet,\n View,\n type StyleProp,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport { colors } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport interface PaginationDotsProps extends Omit<ViewProps, \"style\" | \"children\"> {\n /** Total number of steps / slides. */\n count: number;\n /** Zero-based active index. */\n activeIndex: number;\n /** Called when a dot is pressed. */\n onDotPress?: (index: number) => void;\n /** Accessible name for the control group. */\n accessibilityLabel?: string;\n style?: StyleProp<ViewStyle>;\n className?: string;\n}\n\n/** Total width of the active pill + inactive dots + gaps. */\nconst TRACK_WIDTH = 48;\nconst DOT_HEIGHT = 6;\nconst INACTIVE_SIZE = 6;\nconst GAP = 4;\n\nfunction activePillWidth(count: number) {\n if (count <= 1) return TRACK_WIDTH;\n const inactiveCount = count - 1;\n return TRACK_WIDTH - inactiveCount * INACTIVE_SIZE - inactiveCount * GAP;\n}\n\n/**\n * Carousel / stepper pagination.\n * Whole track is `48` wide; height `6`; gap `4`; inactive dots `6×6`;\n * active pill takes the remaining width.\n */\nexport const PaginationDots = forwardRef<ComponentRef<typeof View>, PaginationDotsProps>(\n function PaginationDots(\n { count, activeIndex, onDotPress, accessibilityLabel, style, className, ...rest },\n forwardedRef,\n ) {\n const containerRef = useRef<ComponentRef<typeof View>>(null);\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n const safeCount = Math.max(0, count);\n const safeActive = safeCount === 0 ? 0 : Math.min(Math.max(activeIndex, 0), safeCount - 1);\n const pillWidth = Math.max(INACTIVE_SIZE, activePillWidth(safeCount));\n\n useApplyWebClassName(containerRef, className);\n\n if (safeCount <= 0) {\n return null;\n }\n\n return (\n <View\n {...rest}\n ref={setContainerRef}\n accessibilityRole=\"adjustable\"\n accessibilityLabel={accessibilityLabel ?? `Slide ${safeActive + 1} of ${safeCount}`}\n style={[styles.root, style]}\n >\n {Array.from({ length: safeCount }, (_, index) => {\n const active = index === safeActive;\n return (\n <Pressable\n key={index}\n accessibilityRole=\"button\"\n accessibilityLabel={`Go to slide ${index + 1}`}\n accessibilityState={{ selected: active }}\n disabled={onDotPress == null}\n hitSlop={8}\n onPress={() => onDotPress?.(index)}\n style={[\n styles.dot,\n active ? [styles.dotActive, { width: pillWidth }] : styles.dotInactive,\n ]}\n />\n );\n })}\n </View>\n );\n },\n);\n\nconst styles = StyleSheet.create({\n root: {\n width: TRACK_WIDTH,\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: GAP,\n },\n dot: {\n height: DOT_HEIGHT,\n borderRadius: DOT_HEIGHT,\n },\n dotActive: {\n backgroundColor: colors.white,\n },\n dotInactive: {\n width: INACTIVE_SIZE,\n backgroundColor: colors.whiteAlpha40,\n },\n});\n","import { forwardRef, useMemo, useRef, type ComponentRef } from \"react\";\nimport {\n StyleSheet,\n Text,\n View,\n type StyleProp,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport type { IconComponent, IconProps } from \"../../icons\";\nimport { colors, fonts } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport interface InfoTileProps extends Omit<ViewProps, \"style\" | \"children\"> {\n title: string;\n /** Optional supporting line under the title. */\n description?: string;\n icon: IconComponent;\n iconProps?: Omit<IconProps, \"size\">;\n iconSize?: number;\n /** Icon slot fill. Defaults to `grey600`. */\n iconSlotBackgroundColor?: string;\n style?: StyleProp<ViewStyle>;\n className?: string;\n}\n\nconst ICON_SLOT = 36;\nconst ICON_SIZE = 20;\n\n/**\n * Compact info tile — icon slot + title (+ optional description).\n * Padding 12, radius 16, icon container 36×36.\n */\nexport const InfoTile = forwardRef<ComponentRef<typeof View>, InfoTileProps>(function InfoTile(\n {\n title,\n description,\n icon: Icon,\n iconProps,\n iconSize = ICON_SIZE,\n iconSlotBackgroundColor = colors.grey600,\n style,\n className,\n accessibilityLabel,\n ...rest\n },\n forwardedRef,\n) {\n const containerRef = useRef<ComponentRef<typeof View>>(null);\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n const hasDescription = Boolean(description?.trim());\n\n useApplyWebClassName(containerRef, className);\n\n return (\n <View\n {...rest}\n ref={setContainerRef}\n accessibilityRole=\"text\"\n accessibilityLabel={\n accessibilityLabel ?? (hasDescription ? `${title}. ${description}` : title)\n }\n style={[styles.root, style]}\n >\n <View style={[styles.iconSlot, { backgroundColor: iconSlotBackgroundColor }]}>\n <Icon {...iconProps} size={iconSize} color={iconProps?.color ?? colors.white} />\n </View>\n <View style={styles.textBlock}>\n <Text style={styles.title}>{title}</Text>\n {hasDescription ? <Text style={styles.description}>{description}</Text> : null}\n </View>\n </View>\n );\n});\n\nconst styles = StyleSheet.create({\n root: {\n flexDirection: \"row\",\n alignItems: \"center\",\n alignSelf: \"flex-start\",\n gap: 16,\n padding: 12,\n borderRadius: 16,\n backgroundColor: colors.grey700,\n },\n iconSlot: {\n width: ICON_SLOT,\n height: ICON_SLOT,\n padding: 8,\n borderRadius: 8,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n textBlock: {\n flexShrink: 1,\n minWidth: 0,\n flexDirection: \"column\",\n gap: 6,\n },\n title: {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"500\",\n lineHeight: 14,\n letterSpacing: 0,\n color: colors.white,\n },\n description: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"400\",\n lineHeight: 12,\n letterSpacing: 0,\n color: colors.lightGrey,\n },\n});\n","import { forwardRef, useMemo, useRef, type ComponentRef } from \"react\";\nimport {\n Platform,\n StyleSheet,\n Text,\n View,\n type StyleProp,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport { colors, fonts } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport interface StepListProps extends Omit<ViewProps, \"style\" | \"children\"> {\n /** Step descriptions, numbered automatically from 1. */\n steps: string[];\n style?: StyleProp<ViewStyle>;\n className?: string;\n}\n\nconst BADGE_SIZE = 42;\nconst ROW_GAP = 12;\nconst CONNECTOR_WIDTH = 2;\nconst CONNECTOR_HEIGHT = 19;\nconst CONNECTOR_GAP = 8;\n\nconst webBlurStyle: ViewStyle =\n Platform.OS === \"web\"\n ? ({\n backdropFilter: \"blur(20px)\",\n WebkitBackdropFilter: \"blur(20px)\",\n } as ViewStyle)\n : {};\n\n/**\n * Vertical numbered process list — 42px badges, 2×19 connectors with 8px gaps.\n */\nexport const StepList = forwardRef<ComponentRef<typeof View>, StepListProps>(function StepList(\n { steps, style, className, accessibilityLabel, ...rest },\n forwardedRef,\n) {\n const containerRef = useRef<ComponentRef<typeof View>>(null);\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n\n useApplyWebClassName(containerRef, className);\n\n if (steps.length === 0) {\n return null;\n }\n\n return (\n <View\n {...rest}\n ref={setContainerRef}\n accessibilityRole=\"summary\"\n accessibilityLabel={accessibilityLabel}\n style={[styles.root, style]}\n >\n {steps.map((description, index) => {\n const isLast = index === steps.length - 1;\n const number = index + 1;\n\n return (\n <View key={`${number}-${description}`} style={styles.stepBlock}>\n <View style={styles.row}>\n <View style={[styles.badge, webBlurStyle]}>\n <Text\n style={[\n styles.badgeLabel,\n Platform.OS === \"android\" ? styles.labelAndroid : null,\n ]}\n >\n {String(number)}\n </Text>\n </View>\n <Text\n style={[styles.description, Platform.OS === \"android\" ? styles.labelAndroid : null]}\n >\n {description}\n </Text>\n </View>\n\n {!isLast ? (\n <View style={styles.connectorSlot}>\n <View style={styles.connector} />\n </View>\n ) : null}\n </View>\n );\n })}\n </View>\n );\n});\n\nconst styles = StyleSheet.create({\n root: {\n width: \"100%\",\n },\n stepBlock: {\n width: \"100%\",\n },\n row: {\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: ROW_GAP,\n width: \"100%\",\n },\n badge: {\n width: BADGE_SIZE,\n height: BADGE_SIZE,\n borderRadius: 79,\n backgroundColor: colors.grey600,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n overflow: \"hidden\",\n },\n badgeLabel: {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"500\",\n lineHeight: 14,\n letterSpacing: 0,\n color: colors.white,\n textAlign: \"center\",\n },\n description: {\n flex: 1,\n minWidth: 0,\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"400\",\n lineHeight: 14,\n letterSpacing: 0,\n color: colors.white,\n },\n connectorSlot: {\n width: BADGE_SIZE,\n alignItems: \"center\",\n paddingVertical: CONNECTOR_GAP,\n },\n connector: {\n width: CONNECTOR_WIDTH,\n height: CONNECTOR_HEIGHT,\n borderRadius: 98,\n backgroundColor: colors.grey600,\n },\n labelAndroid: {\n includeFontPadding: false,\n },\n});\n","import { forwardRef, useMemo, useRef, useState, type ComponentRef } from \"react\";\nimport {\n Platform,\n Pressable,\n StyleSheet,\n Text,\n View,\n type PressableProps,\n type StyleProp,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport { MinusIcon, PlusIcon } from \"../../icons\";\nimport { colors, counterTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport interface CounterProps extends Omit<ViewProps, \"style\" | \"children\"> {\n value?: number;\n defaultValue?: number;\n onValueChange?: (value: number) => void;\n min?: number;\n max?: number;\n step?: number;\n disabled?: boolean;\n style?: StyleProp<ViewStyle>;\n className?: string;\n hitSlop?: PressableProps[\"hitSlop\"];\n}\n\nconst BUTTON_SIZE = 32;\n\nconst webBlurStyle: ViewStyle =\n Platform.OS === \"web\"\n ? ({\n backdropFilter: \"blur(20px)\",\n WebkitBackdropFilter: \"blur(20px)\",\n } as ViewStyle)\n : {};\n\nfunction clamp(value: number, min: number, max?: number) {\n return Math.max(min, max === undefined ? value : Math.min(value, max));\n}\n\nexport const Counter = forwardRef<ComponentRef<typeof View>, CounterProps>(function Counter(\n {\n value,\n defaultValue,\n onValueChange,\n min = 1,\n max,\n step = 1,\n disabled = false,\n style,\n className,\n hitSlop,\n ...rest\n },\n forwardedRef,\n) {\n const containerRef = useRef<ComponentRef<typeof View>>(null);\n const isControlled = value !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = useState(() =>\n clamp(defaultValue ?? min, min, max),\n );\n const resolvedValue = clamp(isControlled ? value : uncontrolledValue, min, max);\n const resolvedClassName = className?.trim() || undefined;\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n const decrementDisabled = disabled || resolvedValue <= min;\n const incrementDisabled = disabled || (max !== undefined && resolvedValue >= max);\n\n useApplyWebClassName(containerRef, resolvedClassName);\n\n const updateValue = (nextValue: number) => {\n const next = clamp(nextValue, min, max);\n if (next === resolvedValue) return;\n if (!isControlled) setUncontrolledValue(next);\n onValueChange?.(next);\n };\n\n return (\n <View {...rest} ref={setContainerRef} style={[styles.base, style]}>\n <Pressable\n disabled={decrementDisabled}\n hitSlop={hitSlop}\n onPress={() => updateValue(resolvedValue - step)}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Decrease value\"\n accessibilityState={{ disabled: decrementDisabled }}\n style={[styles.button, webBlurStyle, decrementDisabled && styles.buttonDisabled]}\n >\n <MinusIcon />\n </Pressable>\n\n <Text style={styles.value}>{resolvedValue}</Text>\n\n <Pressable\n disabled={incrementDisabled}\n hitSlop={hitSlop}\n onPress={() => updateValue(resolvedValue + step)}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Increase value\"\n accessibilityState={{ disabled: incrementDisabled }}\n style={[styles.button, webBlurStyle, incrementDisabled && styles.buttonDisabled]}\n >\n <PlusIcon />\n </Pressable>\n </View>\n );\n});\n\nconst styles = StyleSheet.create({\n base: {\n flexDirection: \"row\",\n alignItems: \"center\",\n alignSelf: \"flex-start\",\n gap: 17,\n },\n button: {\n width: BUTTON_SIZE,\n height: BUTTON_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n borderWidth: 1,\n borderColor: colors.whiteAlpha10,\n borderRadius: 39,\n },\n buttonDisabled: {\n opacity: 0.25,\n },\n value: {\n ...counterTypography,\n color: colors.white,\n },\n});\n","import { forwardRef, useEffect, useMemo, useRef, useState, type ComponentRef } from \"react\";\nimport {\n Animated,\n Easing,\n Pressable,\n StyleSheet,\n Text,\n View,\n type PressableProps,\n type StyleProp,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport type { IconComponent } from \"../../icons\";\nimport { colors, segmentedToggleTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport interface SegmentedToggleOption {\n value: string;\n label: string;\n icon?: IconComponent;\n}\n\nexport interface SegmentedToggleProps extends Omit<ViewProps, \"style\" | \"children\"> {\n /**\n * Segment options. Supports 2 or 3 options (e.g. Active / Completed / Cancelled).\n * Passing fewer than 2 options is unsupported.\n */\n options:\n | readonly [SegmentedToggleOption, SegmentedToggleOption]\n | readonly [SegmentedToggleOption, SegmentedToggleOption, SegmentedToggleOption];\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n fullWidth?: boolean;\n disabled?: boolean;\n style?: StyleProp<ViewStyle>;\n className?: string;\n hitSlop?: PressableProps[\"hitSlop\"];\n}\n\nconst ICON_SIZE = 20;\nconst ANIMATION_DURATION = 200;\nconst OPTION_HORIZONTAL_PADDING = 16;\nconst OPTION_CONTENT_GAP = 12;\nconst OPTION_MIN_WIDTH = 97;\nconst OPTION_MEASUREMENT_TOLERANCE = 0.5;\nconst TRACK_PADDING = 4;\nconst OPTION_GAP = 4;\n\nfunction buildIndicatorOutputRange(optionWidths: number[]): number[] {\n const outputRange: number[] = [];\n let offset = 0;\n for (let index = 0; index < optionWidths.length; index += 1) {\n outputRange.push(offset);\n offset += optionWidths[index] + OPTION_GAP;\n }\n return outputRange;\n}\n\nexport const SegmentedToggle = forwardRef<ComponentRef<typeof View>, SegmentedToggleProps>(\n function SegmentedToggle(\n {\n options,\n value,\n defaultValue = options[0].value,\n onValueChange,\n fullWidth = true,\n disabled = false,\n style,\n className,\n hitSlop,\n onLayout,\n ...rest\n },\n forwardedRef,\n ) {\n const optionCount = options.length;\n const containerRef = useRef<ComponentRef<typeof View>>(null);\n const isControlled = value !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const selectedValue = isControlled ? value : uncontrolledValue;\n const selectedIndex = Math.max(\n 0,\n options.findIndex(({ value: optionValue }) => optionValue === selectedValue),\n );\n const resolvedClassName = className?.trim() || undefined;\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n const progress = useRef(new Animated.Value(selectedIndex)).current;\n const [contentWidths, setContentWidths] = useState<number[]>(() =>\n Array.from({ length: optionCount }, () => 0),\n );\n const [containerWidth, setContainerWidth] = useState(0);\n\n // Track chrome: left+right padding + gaps between options.\n const trackChrome = TRACK_PADDING * 2 + OPTION_GAP * (optionCount - 1);\n const availableOptionWidth = Math.max(0, (containerWidth - trackChrome) / optionCount);\n const resolveContentOptionWidth = (contentWidth: number) =>\n contentWidth > 0\n ? Math.max(\n OPTION_MIN_WIDTH,\n contentWidth + OPTION_HORIZONTAL_PADDING * 2 + OPTION_MEASUREMENT_TOLERANCE,\n )\n : 0;\n\n const optionWidths = fullWidth\n ? Array.from({ length: optionCount }, () => availableOptionWidth)\n : contentWidths.map((width) => resolveContentOptionWidth(width));\n\n const selectedOptionWidth = optionWidths[selectedIndex] ?? 0;\n const indicatorInputRange = options.map((_, index) => index);\n const indicatorOutputRange = buildIndicatorOutputRange(optionWidths);\n const indicatorTranslateX = progress.interpolate({\n inputRange: indicatorInputRange,\n outputRange: indicatorOutputRange,\n });\n\n useApplyWebClassName(containerRef, resolvedClassName);\n\n useEffect(() => {\n setContentWidths((current) => {\n if (current.length === optionCount) return current;\n return Array.from({ length: optionCount }, (_, index) => current[index] ?? 0);\n });\n }, [optionCount]);\n\n useEffect(() => {\n const animation = Animated.timing(progress, {\n toValue: selectedIndex,\n duration: ANIMATION_DURATION,\n easing: Easing.out(Easing.cubic),\n useNativeDriver: true,\n });\n\n animation.start();\n return () => animation.stop();\n }, [progress, selectedIndex]);\n\n const selectOption = (nextValue: string) => {\n if (disabled || nextValue === selectedValue) return;\n if (!isControlled) setUncontrolledValue(nextValue);\n onValueChange?.(nextValue);\n };\n\n return (\n <View\n {...rest}\n ref={setContainerRef}\n onLayout={(event) => {\n const nextWidth = event.nativeEvent.layout.width;\n setContainerWidth((currentWidth) =>\n currentWidth === nextWidth ? currentWidth : nextWidth,\n );\n onLayout?.(event);\n }}\n style={[\n styles.base,\n fullWidth ? styles.fullWidth : styles.contentWidth,\n disabled && styles.disabled,\n style,\n ]}\n accessibilityRole=\"radiogroup\"\n >\n {!fullWidth\n ? options.map(({ value: optionValue, label, icon: Icon }, index) => (\n <View\n key={`${optionValue}-measurement`}\n pointerEvents=\"none\"\n aria-hidden\n accessibilityElementsHidden\n importantForAccessibility=\"no-hide-descendants\"\n onLayout={(event) => {\n const nextWidth = event.nativeEvent.layout.width;\n setContentWidths((currentWidths) => {\n if (currentWidths[index] === nextWidth) return currentWidths;\n const nextWidths = [...currentWidths];\n nextWidths[index] = nextWidth;\n return nextWidths;\n });\n }}\n style={styles.optionMeasurement}\n >\n {Icon ? <Icon size={ICON_SIZE} /> : null}\n <Text style={[styles.label, styles.contentWidthLabel]}>{label}</Text>\n </View>\n ))\n : null}\n {selectedOptionWidth > 0 ? (\n <Animated.View\n pointerEvents=\"none\"\n style={[\n styles.activeIndicator,\n { width: selectedOptionWidth, transform: [{ translateX: indicatorTranslateX }] },\n ]}\n />\n ) : null}\n {options.map(({ value: optionValue, label, icon: Icon }, index) => {\n const selected = optionValue === selectedValue;\n const iconColor = selected ? colors.primary : colors.whiteAlpha20;\n const labelColor = selected ? colors.whiteAlpha86 : colors.whiteAlpha40;\n const optionWidth = optionWidths[index] ?? 0;\n\n return (\n <Pressable\n key={optionValue}\n onPress={() => selectOption(optionValue)}\n disabled={disabled}\n hitSlop={hitSlop}\n accessibilityRole=\"radio\"\n accessibilityLabel={label}\n accessibilityState={{ selected, disabled }}\n style={[\n styles.option,\n fullWidth\n ? styles.optionFullWidth\n : [styles.optionContentWidth, optionWidth > 0 && { width: optionWidth }],\n ]}\n >\n <View style={styles.optionContent}>\n {Icon ? <Icon size={ICON_SIZE} color={iconColor} /> : null}\n <Text\n numberOfLines={fullWidth ? 1 : undefined}\n style={[\n styles.label,\n !fullWidth && styles.contentWidthLabel,\n { color: labelColor },\n ]}\n >\n {label}\n </Text>\n </View>\n </Pressable>\n );\n })}\n </View>\n );\n },\n);\n\nconst styles = StyleSheet.create({\n base: {\n height: 44,\n flexDirection: \"row\",\n padding: TRACK_PADDING,\n gap: OPTION_GAP,\n borderRadius: 60,\n backgroundColor: colors.grey700,\n overflow: \"hidden\",\n },\n fullWidth: {\n width: \"100%\",\n alignSelf: \"stretch\",\n },\n contentWidth: {\n alignSelf: \"flex-start\",\n },\n disabled: {\n opacity: 0.6,\n },\n option: {\n zIndex: 1,\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"center\",\n paddingHorizontal: OPTION_HORIZONTAL_PADDING,\n borderRadius: 60,\n },\n optionContent: {\n maxWidth: \"100%\",\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: OPTION_CONTENT_GAP,\n },\n optionMeasurement: {\n position: \"absolute\",\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: OPTION_CONTENT_GAP,\n opacity: 0,\n },\n optionFullWidth: {\n flex: 1,\n minWidth: 0,\n },\n optionContentWidth: {\n minWidth: OPTION_MIN_WIDTH,\n },\n activeIndicator: {\n position: \"absolute\",\n top: TRACK_PADDING,\n left: TRACK_PADDING,\n height: 36,\n backgroundColor: colors.grey600,\n borderRadius: 60,\n },\n label: {\n ...segmentedToggleTypography,\n flexShrink: 1,\n },\n contentWidthLabel: {\n flexShrink: 0,\n },\n});\n","import {\n forwardRef,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ComponentRef,\n type ReactNode,\n} from \"react\";\nimport {\n Animated,\n Easing,\n Pressable,\n StyleSheet,\n View,\n type StyleProp,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport type { IconComponent } from \"../../icons\";\nimport { SidebarIcon } from \"../../icons\";\nimport { BrandLogo, MenuItem } from \"../../primitives\";\nimport { colors, fonts } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\nimport { AvatarSimple } from \"../AvatarSimple\";\n\nexport interface SidebarItem {\n /** Stable identity for React keys. */\n key: string;\n label: string;\n /** Icon component — colored by the sidebar based on active state. */\n icon: IconComponent;\n /** Marks the current route / selection. */\n active?: boolean;\n onPress?: () => void;\n}\n\nexport interface SidebarUser {\n name: string;\n email: string;\n imageUrl?: string | null;\n}\n\nexport interface SidebarProps extends Omit<ViewProps, \"style\" | \"children\"> {\n items: readonly SidebarItem[];\n user: SidebarUser;\n onLogOut?: () => void;\n /** Accessible name for the brand mark. Defaults to `\"Cortel Booking\"`. */\n logoAccessibilityLabel?: string;\n /** Accessible name for the nav landmark. Defaults to `\"Account navigation\"`. */\n navigationAccessibilityLabel?: string;\n /** Accessible label when the sidebar is expanded. Defaults to `\"Collapse sidebar\"`. */\n collapseAccessibilityLabel?: string;\n /** Accessible label when the sidebar is collapsed. Defaults to `\"Expand sidebar\"`. */\n expandAccessibilityLabel?: string;\n /** Accessible label for the logout control. Defaults to `\"Log out\"`. */\n logOutAccessibilityLabel?: string;\n collapsed?: boolean;\n defaultCollapsed?: boolean;\n onCollapsedChange?: (collapsed: boolean) => void;\n style?: StyleProp<ViewStyle>;\n className?: string;\n}\n\nconst SIDEBAR_WIDTH = 300;\nconst SIDEBAR_COLLAPSED_WIDTH = 72;\nconst HEADER_HEIGHT = 64;\nconst LOGO_WIDTH = 31;\nconst LOGO_HEIGHT = 44;\nconst TOGGLE_SIZE = 20;\nconst MENU_ICON_SIZE = 16;\nconst PROFILE_SECTION_HEIGHT = 80;\nconst SIDEBAR_TRANSITION_MS = 300;\n\nexport const Sidebar = forwardRef<ComponentRef<typeof View>, SidebarProps>(function Sidebar(\n {\n items,\n user,\n onLogOut,\n logoAccessibilityLabel = \"Cortel Booking\",\n navigationAccessibilityLabel = \"Account navigation\",\n collapseAccessibilityLabel = \"Collapse sidebar\",\n expandAccessibilityLabel = \"Expand sidebar\",\n logOutAccessibilityLabel = \"Log out\",\n collapsed: collapsedProp,\n defaultCollapsed = false,\n onCollapsedChange,\n style,\n className,\n ...rest\n },\n forwardedRef,\n) {\n const containerRef = useRef<ComponentRef<typeof View>>(null);\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n const [uncontrolledCollapsed, setUncontrolledCollapsed] = useState(defaultCollapsed);\n const collapsed = collapsedProp ?? uncontrolledCollapsed;\n const widthAnim = useRef(\n new Animated.Value(collapsed ? SIDEBAR_COLLAPSED_WIDTH : SIDEBAR_WIDTH),\n ).current;\n const labelOpacity = useRef(new Animated.Value(collapsed ? 0 : 1)).current;\n\n useApplyWebClassName(containerRef, className);\n\n useEffect(() => {\n const nextWidth = collapsed ? SIDEBAR_COLLAPSED_WIDTH : SIDEBAR_WIDTH;\n const nextOpacity = collapsed ? 0 : 1;\n const timing = {\n duration: SIDEBAR_TRANSITION_MS,\n easing: Easing.inOut(Easing.ease),\n useNativeDriver: false,\n };\n\n const widthAnimation = Animated.timing(widthAnim, { ...timing, toValue: nextWidth });\n const opacityAnimation = Animated.timing(labelOpacity, { ...timing, toValue: nextOpacity });\n\n Animated.parallel([widthAnimation, opacityAnimation]).start();\n return () => {\n widthAnimation.stop();\n opacityAnimation.stop();\n };\n }, [collapsed, labelOpacity, widthAnim]);\n\n const setCollapsed = (next: boolean) => {\n onCollapsedChange?.(next);\n if (collapsedProp === undefined) {\n setUncontrolledCollapsed(next);\n }\n };\n\n return (\n <Animated.View\n {...rest}\n ref={setContainerRef}\n style={[styles.root, { width: widthAnim }, style]}\n accessibilityRole=\"menu\"\n >\n <View style={[styles.header, collapsed ? styles.headerCollapsed : styles.headerExpanded]}>\n <Animated.View\n pointerEvents={collapsed ? \"none\" : \"auto\"}\n style={[\n styles.logoSlot,\n {\n opacity: labelOpacity,\n maxWidth: collapsed ? 0 : LOGO_WIDTH,\n },\n ]}\n accessibilityElementsHidden={collapsed}\n importantForAccessibility={collapsed ? \"no-hide-descendants\" : \"auto\"}\n >\n <BrandLogo\n accessibilityLabel={logoAccessibilityLabel}\n height={LOGO_HEIGHT}\n variant=\"brand\"\n width={LOGO_WIDTH}\n />\n </Animated.View>\n\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={collapsed ? expandAccessibilityLabel : collapseAccessibilityLabel}\n accessibilityState={{ expanded: !collapsed }}\n hitSlop={8}\n onPress={() => setCollapsed(!collapsed)}\n style={styles.toggleButton}\n >\n <SidebarIcon color={colors.grey100} size={TOGGLE_SIZE} strokeWidth={2} />\n </Pressable>\n </View>\n\n <View\n accessibilityLabel={navigationAccessibilityLabel}\n accessibilityRole=\"menu\"\n style={styles.nav}\n >\n {items.map((item) => {\n const isActive = Boolean(item.active);\n const iconColor = isActive ? colors.primary : colors.grey300;\n const Icon = item.icon;\n const iconNode: ReactNode = (\n <Icon color={iconColor} size={MENU_ICON_SIZE} strokeWidth={1.5} />\n );\n\n return (\n <MenuItem\n key={item.key}\n icon={iconNode}\n label={item.label}\n accessibilityLabel={item.label}\n backgroundColor={isActive ? colors.grey700 : \"transparent\"}\n hoverColor={colors.grey700}\n onPress={item.onPress}\n labelStyle={[\n styles.menuLabel,\n { color: isActive ? colors.white : colors.grey200 },\n collapsed ? styles.menuLabelCollapsed : styles.menuLabelExpanded,\n ]}\n style={[styles.menuItem, collapsed ? styles.menuItemCollapsed : null]}\n />\n );\n })}\n </View>\n\n <View style={[styles.footer, collapsed ? styles.footerCollapsed : styles.footerExpanded]}>\n <AvatarSimple\n name={user.name}\n email={user.email}\n imageUrl={user.imageUrl}\n onLogOut={onLogOut}\n logOutAccessibilityLabel={logOutAccessibilityLabel}\n compact={collapsed}\n />\n </View>\n </Animated.View>\n );\n});\n\nconst styles = StyleSheet.create({\n root: {\n flexDirection: \"column\",\n alignSelf: \"stretch\",\n height: \"100%\",\n minHeight: \"100%\",\n flexShrink: 0,\n backgroundColor: colors.dark,\n borderRightWidth: 1,\n borderRightColor: colors.grey700,\n overflow: \"hidden\",\n },\n header: {\n zIndex: 1,\n height: HEADER_HEIGHT,\n width: \"100%\",\n flexDirection: \"row\",\n alignItems: \"center\",\n borderBottomWidth: 1,\n borderBottomColor: colors.grey700,\n backgroundColor: colors.dark,\n },\n headerExpanded: {\n justifyContent: \"space-between\",\n paddingHorizontal: 24,\n },\n headerCollapsed: {\n justifyContent: \"center\",\n paddingHorizontal: 0,\n },\n logoSlot: {\n minWidth: 0,\n height: LOGO_HEIGHT,\n flexShrink: 0,\n overflow: \"hidden\",\n },\n toggleButton: {\n width: TOGGLE_SIZE,\n height: TOGGLE_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n nav: {\n flexGrow: 1,\n flexShrink: 1,\n flexBasis: 0,\n width: \"100%\",\n minHeight: 0,\n padding: 16,\n gap: 10,\n },\n menuItem: {\n gap: 8,\n },\n menuItemCollapsed: {\n gap: 0,\n },\n menuLabel: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"600\",\n lineHeight: 16,\n letterSpacing: 0,\n },\n menuLabelExpanded: {\n flexGrow: 1,\n flexShrink: 1,\n opacity: 1,\n },\n menuLabelCollapsed: {\n flexGrow: 0,\n flexShrink: 0,\n width: 0,\n maxWidth: 0,\n opacity: 0,\n overflow: \"hidden\",\n },\n footer: {\n height: PROFILE_SECTION_HEIGHT,\n width: \"100%\",\n flexGrow: 0,\n flexShrink: 0,\n marginTop: \"auto\",\n alignItems: \"center\",\n justifyContent: \"center\",\n paddingVertical: 12,\n },\n footerExpanded: {\n paddingHorizontal: 16,\n },\n footerCollapsed: {\n paddingHorizontal: 0,\n },\n});\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ComponentRef,\n} from \"react\";\nimport {\n Platform,\n Pressable,\n StyleSheet,\n Text,\n View,\n type PressableProps,\n type StyleProp,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport { ChevronDownIcon, GlobeIcon } from \"../../icons\";\nimport { colors, fonts, languageSwitcherTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport interface LanguageOption {\n /** Stable locale identifier, such as `hy`, `en`, or `ru`. */\n value: string;\n /** Short label shown in the trigger and menu. */\n label: string;\n}\n\nexport interface LanguageSwitcherProps extends Omit<ViewProps, \"style\" | \"children\"> {\n options?: readonly LanguageOption[];\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n disabled?: boolean;\n accessibilityLabel?: string;\n style?: StyleProp<ViewStyle>;\n className?: string;\n hitSlop?: PressableProps[\"hitSlop\"];\n}\n\nexport const defaultLanguageOptions = [\n { value: \"hy\", label: \"Հայ\" },\n { value: \"en\", label: \"Eng\" },\n { value: \"ru\", label: \"Рус\" },\n] as const satisfies readonly LanguageOption[];\n\nconst CONTROL_WIDTH = 90;\nconst CONTROL_HEIGHT = 35;\nconst ICON_SIZE = 16;\n\nexport const LanguageSwitcher = forwardRef<ComponentRef<typeof View>, LanguageSwitcherProps>(\n function LanguageSwitcher(\n {\n options = defaultLanguageOptions,\n value,\n defaultValue,\n onValueChange,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n disabled = false,\n accessibilityLabel = \"Language\",\n style,\n className,\n hitSlop = 8,\n ...rest\n },\n forwardedRef,\n ) {\n const wrapperRef = useRef<ComponentRef<typeof View>>(null);\n const triggerRef = useRef<ComponentRef<typeof Pressable>>(null);\n const setWrapperRef = useMemo(() => mergeRefs(wrapperRef, forwardedRef), [forwardedRef]);\n const firstValue = options[0]?.value ?? \"\";\n const isValueControlled = value !== undefined;\n const isOpenControlled = openProp !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue ?? firstValue);\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const [triggerHovered, setTriggerHovered] = useState(false);\n const [hoveredValue, setHoveredValue] = useState<string | null>(null);\n const selectedValue = isValueControlled ? value : uncontrolledValue;\n const isOpen = isOpenControlled ? openProp : uncontrolledOpen;\n const selectedOption =\n options.find((option) => option.value === selectedValue) ?? options[0] ?? null;\n\n useApplyWebClassName(wrapperRef, className?.trim() || undefined);\n\n const setOpen = useCallback(\n (next: boolean) => {\n if (disabled || next === isOpen) return;\n if (!isOpenControlled) setUncontrolledOpen(next);\n onOpenChange?.(next);\n },\n [disabled, isOpen, isOpenControlled, onOpenChange],\n );\n\n const closeAndFocusTrigger = useCallback(() => {\n setOpen(false);\n const node = triggerRef.current as unknown as { focus?: () => void } | null;\n node?.focus?.();\n }, [setOpen]);\n\n useEffect(() => {\n if (Platform.OS !== \"web\" || !isOpen) return;\n\n const handlePointerDown = (event: MouseEvent | TouchEvent) => {\n const wrapper = wrapperRef.current as unknown as {\n contains?: (node: Node) => boolean;\n } | null;\n const target = event.target;\n if (wrapper?.contains && target instanceof Node && !wrapper.contains(target)) {\n setOpen(false);\n }\n };\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n closeAndFocusTrigger();\n }\n };\n\n document.addEventListener(\"mousedown\", handlePointerDown);\n document.addEventListener(\"touchstart\", handlePointerDown);\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => {\n document.removeEventListener(\"mousedown\", handlePointerDown);\n document.removeEventListener(\"touchstart\", handlePointerDown);\n document.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [closeAndFocusTrigger, isOpen, setOpen]);\n\n const selectLanguage = (nextValue: string) => {\n if (nextValue !== selectedValue) {\n if (!isValueControlled) setUncontrolledValue(nextValue);\n onValueChange?.(nextValue);\n }\n closeAndFocusTrigger();\n };\n\n return (\n <View\n {...rest}\n ref={setWrapperRef}\n style={[styles.wrapper, isOpen && styles.wrapperOpen, disabled && styles.disabled, style]}\n >\n <Pressable\n ref={triggerRef}\n onPress={() => setOpen(!isOpen)}\n disabled={disabled || options.length === 0}\n hitSlop={hitSlop}\n accessibilityRole=\"button\"\n accessibilityLabel={accessibilityLabel}\n accessibilityState={{ disabled, expanded: isOpen }}\n onHoverIn={() => setTriggerHovered(true)}\n onHoverOut={() => setTriggerHovered(false)}\n style={({ pressed }) => [\n styles.trigger,\n (triggerHovered || pressed || isOpen) && styles.triggerActive,\n ]}\n >\n <GlobeIcon size={ICON_SIZE} color={colors.white} strokeWidth={2} />\n <Text style={styles.triggerLabel} numberOfLines={1}>\n {selectedOption?.label ?? \"\"}\n </Text>\n <View style={[styles.chevron, isOpen && styles.chevronOpen]}>\n <ChevronDownIcon size={ICON_SIZE} color={colors.white} strokeWidth={2} />\n </View>\n </Pressable>\n\n {isOpen && options.length > 0 ? (\n <View style={styles.menu} accessibilityRole=\"menu\">\n {options.map((option) => {\n const selected = option.value === selectedValue;\n return (\n <Pressable\n key={option.value}\n onPress={() => selectLanguage(option.value)}\n accessibilityRole=\"menuitem\"\n accessibilityLabel={option.label}\n accessibilityState={{ selected }}\n onHoverIn={() => setHoveredValue(option.value)}\n onHoverOut={() => setHoveredValue(null)}\n style={({ pressed }) => [\n styles.item,\n selected\n ? styles.itemSelected\n : (hoveredValue === option.value || pressed) && styles.itemHovered,\n ]}\n >\n <Text style={[styles.itemLabel, selected && styles.itemLabelSelected]}>\n {option.label}\n </Text>\n </Pressable>\n );\n })}\n </View>\n ) : null}\n </View>\n );\n },\n);\n\nconst styles = StyleSheet.create({\n wrapper: {\n position: \"relative\",\n width: CONTROL_WIDTH,\n alignSelf: \"flex-start\",\n },\n wrapperOpen: {\n zIndex: 20,\n },\n disabled: {\n opacity: 0.6,\n },\n trigger: {\n width: CONTROL_WIDTH,\n height: CONTROL_HEIGHT,\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 8,\n padding: 8,\n borderRadius: 12,\n backgroundColor: \"transparent\",\n },\n triggerActive: {\n backgroundColor: colors.whiteAlpha6,\n },\n triggerLabel: {\n ...languageSwitcherTypography,\n ...Platform.select({ web: { fontFamily: `${fonts.sans}, sans-serif` } }),\n minWidth: 0,\n flex: 1,\n color: colors.white,\n },\n chevron: {\n width: ICON_SIZE,\n height: ICON_SIZE,\n flexShrink: 0,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n chevronOpen: {\n transform: [{ rotate: \"180deg\" }],\n },\n menu: {\n position: \"absolute\",\n top: CONTROL_HEIGHT + 8,\n left: 0,\n width: CONTROL_WIDTH,\n padding: 8,\n gap: 8,\n borderRadius: 12,\n backgroundColor: colors.whiteAlpha6,\n overflow: \"hidden\",\n },\n item: {\n height: CONTROL_HEIGHT,\n alignItems: \"center\",\n justifyContent: \"center\",\n paddingVertical: 8,\n paddingHorizontal: 12,\n borderRadius: 8,\n },\n itemHovered: {\n backgroundColor: colors.whiteAlpha6,\n },\n itemSelected: {\n backgroundColor: colors.whiteAlpha6,\n },\n itemLabel: {\n ...languageSwitcherTypography,\n ...Platform.select({ web: { fontFamily: `${fonts.sans}, sans-serif` } }),\n color: colors.white,\n },\n itemLabelSelected: {\n color: colors.primary,\n },\n});\n","import { forwardRef, useMemo, useRef, type ComponentRef } from \"react\";\nimport {\n StyleSheet,\n Text,\n View,\n type StyleProp,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport type { IconComponent, IconProps } from \"../../icons\";\nimport { colors, statCardTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport interface StatCardProps extends Omit<ViewProps, \"style\" | \"children\"> {\n label: string;\n icon: IconComponent;\n iconProps?: Omit<IconProps, \"size\">;\n iconSize?: number;\n style?: StyleProp<ViewStyle>;\n className?: string;\n}\n\n/** Default matches Figma users-alt vector width (W 25.63181). */\nconst ICON_SIZE = 25.63181;\n\nexport const StatCard = forwardRef<ComponentRef<typeof View>, StatCardProps>(function StatCard(\n {\n label,\n icon: Icon,\n iconProps,\n iconSize = ICON_SIZE,\n style,\n className,\n accessibilityLabel,\n ...rest\n },\n forwardedRef,\n) {\n const containerRef = useRef<ComponentRef<typeof View>>(null);\n const resolvedClassName = className?.trim() || undefined;\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n\n useApplyWebClassName(containerRef, resolvedClassName);\n\n return (\n <View\n {...rest}\n ref={setContainerRef}\n style={[styles.base, style]}\n accessibilityRole=\"text\"\n accessibilityLabel={accessibilityLabel ?? label}\n >\n <Icon {...iconProps} size={iconSize} color={iconProps?.color ?? colors.white} />\n <Text style={styles.label}>{label}</Text>\n </View>\n );\n});\n\nconst styles = StyleSheet.create({\n base: {\n width: 204.5,\n minHeight: 114,\n padding: 24,\n gap: 16,\n borderRadius: 20,\n backgroundColor: colors.grey750,\n },\n label: {\n ...statCardTypography,\n color: colors.whiteAlpha86,\n },\n});\n","import { forwardRef, useMemo, useRef, type ComponentRef, type ReactNode } from \"react\";\nimport {\n Platform,\n StyleSheet,\n Text,\n TouchableOpacity,\n View,\n type GestureResponderEvent,\n type StyleProp,\n type TextStyle,\n type TouchableOpacityProps,\n type ViewStyle,\n} from \"react-native\";\nimport { ArrowRightIcon } from \"../../icons\";\nimport { buttonTypography, colors } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport type ButtonVariant = \"primary\" | \"secondary\";\nexport type ButtonSize = \"lg\" | \"sm\";\n\nexport interface ButtonProps extends Omit<\n TouchableOpacityProps,\n \"onPress\" | \"disabled\" | \"style\" | \"children\"\n> {\n title?: string;\n children?: ReactNode;\n onPress: (event: GestureResponderEvent) => void;\n disabled?: boolean;\n variant?: ButtonVariant;\n size?: ButtonSize;\n showIcon?: boolean;\n icon?: ReactNode;\n /** Overrides the trailing icon badge fill (defaults to the variant preset). */\n iconBadgeBackgroundColor?: string;\n style?: StyleProp<ViewStyle>;\n textStyle?: StyleProp<TextStyle>;\n className?: string;\n textClassName?: string;\n}\n\ntype VariantStyleSet = {\n backgroundColor: string;\n textColor: string;\n iconBadgeBackgroundColor: string;\n iconColor: string;\n};\n\nconst variantConfig: Record<ButtonVariant, VariantStyleSet> = {\n primary: {\n backgroundColor: colors.primary,\n textColor: colors.white,\n iconBadgeBackgroundColor: colors.white,\n iconColor: colors.primary,\n },\n secondary: {\n backgroundColor: colors.grey500,\n textColor: colors.white,\n iconBadgeBackgroundColor: colors.grey600,\n iconColor: colors.white,\n },\n};\n\nconst sizeConfig = {\n lg: {\n minHeight: 44,\n borderRadius: 40,\n paddingVertical: 4,\n paddingLeft: 20,\n paddingRightWithIcon: 4,\n paddingRight: 20,\n gap: 20,\n text: buttonTypography.lg,\n iconContainerSize: 36,\n iconSize: 20,\n },\n sm: {\n minHeight: 32,\n borderRadius: 40,\n paddingVertical: 6,\n paddingLeft: 12,\n paddingRightWithIcon: 4,\n paddingRight: 12,\n gap: 12,\n text: buttonTypography.sm,\n iconContainerSize: 20,\n iconSize: 12,\n },\n} as const satisfies Record<ButtonSize, Record<string, unknown>>;\n\nexport const Button = forwardRef<ComponentRef<typeof TouchableOpacity>, ButtonProps>(\n function Button(\n {\n title,\n children,\n onPress,\n disabled = false,\n variant = \"primary\",\n size = \"lg\",\n showIcon = false,\n icon,\n iconBadgeBackgroundColor,\n style,\n textStyle,\n className,\n textClassName,\n accessibilityLabel,\n ...rest\n },\n forwardedRef,\n ) {\n const containerRef = useRef<ComponentRef<typeof TouchableOpacity>>(null);\n const textRef = useRef<ComponentRef<typeof Text>>(null);\n const preset = variantConfig[variant];\n const metrics = sizeConfig[size];\n\n const label = typeof children !== \"undefined\" ? children : title;\n const hasCustomChildren = typeof children !== \"undefined\";\n const customIcon = icon != null && typeof icon !== \"boolean\" ? icon : undefined;\n const hasIcon = showIcon || icon === true || customIcon != null;\n const resolvedContainerClassName = className?.trim() || undefined;\n const resolvedAccessibilityLabel =\n accessibilityLabel ?? (typeof label === \"string\" ? label : undefined);\n\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n\n useApplyWebClassName(containerRef, resolvedContainerClassName);\n useApplyWebClassName(textRef, textClassName);\n\n const iconNode = customIcon ?? (\n <ArrowRightIcon size={metrics.iconSize} color={preset.iconColor} />\n );\n\n const containerStyle = [\n styles.base,\n {\n minHeight: metrics.minHeight,\n borderRadius: metrics.borderRadius,\n backgroundColor: preset.backgroundColor,\n paddingTop: metrics.paddingVertical,\n paddingBottom: metrics.paddingVertical,\n paddingLeft: metrics.paddingLeft,\n paddingRight: hasIcon ? metrics.paddingRightWithIcon : metrics.paddingRight,\n gap: hasIcon ? metrics.gap : 0,\n },\n hasIcon ? styles.contentWithIcon : styles.contentWithoutIcon,\n disabled && styles.disabled,\n style,\n ];\n\n const labelStyle = [\n styles.label,\n metrics.text,\n { color: preset.textColor },\n Platform.OS === \"android\" ? styles.labelAndroid : null,\n !hasIcon && styles.labelCentered,\n textStyle,\n ];\n\n return (\n <TouchableOpacity\n {...rest}\n ref={setContainerRef}\n style={containerStyle}\n onPress={onPress}\n disabled={disabled}\n activeOpacity={0.7}\n accessibilityRole=\"button\"\n accessibilityLabel={resolvedAccessibilityLabel}\n accessibilityState={{ disabled }}\n >\n {hasCustomChildren ? (\n children\n ) : (\n <Text ref={textRef} style={labelStyle}>\n {label}\n </Text>\n )}\n\n {hasIcon ? (\n <View\n style={[\n styles.iconContainer,\n {\n width: metrics.iconContainerSize,\n height: metrics.iconContainerSize,\n borderRadius: metrics.iconContainerSize / 2,\n backgroundColor: iconBadgeBackgroundColor ?? preset.iconBadgeBackgroundColor,\n },\n ]}\n >\n {iconNode}\n </View>\n ) : null}\n </TouchableOpacity>\n );\n },\n);\n\nconst styles = StyleSheet.create({\n base: {\n flexDirection: \"row\",\n alignItems: \"center\",\n alignSelf: \"flex-start\",\n borderWidth: 0,\n },\n disabled: {\n opacity: 0.6,\n },\n contentWithIcon: {\n justifyContent: \"space-between\",\n },\n contentWithoutIcon: {\n justifyContent: \"center\",\n },\n label: {},\n labelAndroid: {\n includeFontPadding: false,\n },\n labelCentered: {\n textAlign: \"center\",\n },\n iconContainer: {\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n});\n","import { forwardRef, useMemo, useRef, useState, type ComponentRef, type ReactNode } from \"react\";\nimport {\n Pressable,\n StyleSheet,\n Text,\n View,\n type PressableProps,\n type StyleProp,\n type TextStyle,\n type ViewStyle,\n} from \"react-native\";\nimport { CheckIcon } from \"../../icons\";\nimport { colors, inputTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport type CheckboxVariant = \"default\" | \"light\";\n\nexport interface CheckboxProps extends Omit<\n PressableProps,\n \"onPress\" | \"disabled\" | \"style\" | \"children\" | \"hitSlop\"\n> {\n value?: boolean;\n defaultValue?: boolean;\n onValueChange?: (value: boolean) => void;\n disabled?: boolean;\n variant?: CheckboxVariant;\n label?: string;\n children?: ReactNode;\n style?: StyleProp<ViewStyle>;\n labelStyle?: StyleProp<TextStyle>;\n className?: string;\n hitSlop?: PressableProps[\"hitSlop\"];\n}\n\nconst BOX_SIZE = 20;\nconst BOX_RADIUS = 6;\nconst CHECK_SIZE = 12;\nconst CHECK_STROKE = 2.5;\n\nconst variantChrome: Record<CheckboxVariant, { backgroundColor: string; borderColor: string }> = {\n default: {\n backgroundColor: colors.dark,\n borderColor: colors.grey700,\n },\n light: {\n backgroundColor: colors.grey700,\n borderColor: colors.grey500,\n },\n};\n\nexport const Checkbox = forwardRef<ComponentRef<typeof Pressable>, CheckboxProps>(function Checkbox(\n {\n value,\n defaultValue = false,\n onValueChange,\n disabled = false,\n variant = \"default\",\n label,\n children,\n style,\n labelStyle,\n className,\n hitSlop = 8,\n accessibilityLabel,\n ...rest\n },\n forwardedRef,\n) {\n const containerRef = useRef<ComponentRef<typeof Pressable>>(null);\n const isControlled = typeof value === \"boolean\";\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const isActive = isControlled ? value : uncontrolledValue;\n\n const chrome = variantChrome[variant];\n const labelContent = children ?? label;\n const resolvedAccessibilityLabel =\n accessibilityLabel ?? (typeof labelContent === \"string\" ? labelContent : undefined);\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n\n useApplyWebClassName(containerRef, className);\n\n const handlePress = () => {\n if (disabled) return;\n const next = !isActive;\n if (!isControlled) setUncontrolledValue(next);\n onValueChange?.(next);\n };\n\n return (\n <Pressable\n {...rest}\n ref={setContainerRef}\n onPress={handlePress}\n disabled={disabled}\n hitSlop={hitSlop}\n accessibilityRole=\"checkbox\"\n accessibilityLabel={resolvedAccessibilityLabel}\n accessibilityState={{ checked: isActive, disabled }}\n style={[styles.root, disabled && styles.disabled, style]}\n >\n <View\n style={[\n styles.box,\n {\n backgroundColor: chrome.backgroundColor,\n borderColor: chrome.borderColor,\n },\n ]}\n >\n {isActive ? (\n <CheckIcon size={CHECK_SIZE} color={colors.primary} strokeWidth={CHECK_STROKE} />\n ) : null}\n </View>\n\n {labelContent != null && labelContent !== false ? (\n typeof labelContent === \"string\" || typeof labelContent === \"number\" ? (\n <Text style={[styles.label, labelStyle]}>{labelContent}</Text>\n ) : (\n labelContent\n )\n ) : null}\n </Pressable>\n );\n});\n\nconst styles = StyleSheet.create({\n root: {\n flexDirection: \"row\",\n alignItems: \"center\",\n alignSelf: \"flex-start\",\n gap: 10,\n },\n disabled: {\n opacity: 0.5,\n },\n box: {\n width: BOX_SIZE,\n height: BOX_SIZE,\n borderRadius: BOX_RADIUS,\n borderWidth: 1,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n label: {\n ...inputTypography.field,\n color: colors.white,\n },\n});\n","/**\n * Small, dependency-free date helpers for the DatePicker component. These only\n * ever operate on local calendar days (time-of-day is ignored/zeroed) so\n * comparisons stay simple and predictable across the whole component.\n */\n\nexport function startOfDay(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n}\n\nexport function isSameDay(a: Date | null | undefined, b: Date | null | undefined): boolean {\n if (a == null || b == null) return false;\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nexport function isSameMonth(a: Date, b: Date): boolean {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();\n}\n\nexport function addMonths(date: Date, amount: number): Date {\n return new Date(date.getFullYear(), date.getMonth() + amount, 1);\n}\n\nexport function isBefore(a: Date, b: Date): boolean {\n return startOfDay(a).getTime() < startOfDay(b).getTime();\n}\n\nexport function isAfter(a: Date, b: Date): boolean {\n return startOfDay(a).getTime() > startOfDay(b).getTime();\n}\n\nexport function isWithinRange(date: Date, start: Date, end: Date): boolean {\n const time = startOfDay(date).getTime();\n return time >= startOfDay(start).getTime() && time <= startOfDay(end).getTime();\n}\n\nexport function clampDate(date: Date, min?: Date | null, max?: Date | null): Date {\n if (min && isBefore(date, min)) return startOfDay(min);\n if (max && isAfter(date, max)) return startOfDay(max);\n return startOfDay(date);\n}\n\nexport function isDateDisabled(date: Date, min?: Date | null, max?: Date | null): boolean {\n if (min && isBefore(date, min)) return true;\n if (max && isAfter(date, max)) return true;\n return false;\n}\n\n/** Zero-padded \"DD.MM.YYYY\" — matches the Figma reference formatting. */\nexport function formatDate(date: Date): string {\n const day = String(date.getDate()).padStart(2, \"0\");\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\n return `${day}.${month}.${date.getFullYear()}`;\n}\n\n/**\n * Shortens a month name to `letterCount` letters.\n * Armenian digraph «ու» counts as one letter so «Հուլիս» → «Հուլ», not «Հու».\n */\nexport function abbreviateMonthName(monthName: string, letterCount = 3): string {\n const chars = Array.from(monthName);\n let visual = 0;\n let end = 0;\n while (end < chars.length && visual < letterCount) {\n if (chars[end] === \"ո\" && chars[end + 1] === \"ւ\") {\n end += 2;\n } else {\n end += 1;\n }\n visual += 1;\n }\n return chars.slice(0, end).join(\"\");\n}\n\n/** \"15 Հուլ 2026\" — day + abbreviated month + year for range triggers. */\nexport function formatDateDayShortMonth(date: Date, monthNames: string[], letterCount = 3): string {\n const month = abbreviateMonthName(monthNames[date.getMonth()] ?? \"\", letterCount);\n return `${date.getDate()} ${month} ${date.getFullYear()}`;\n}\n\n/**\n * Builds a 6×7 grid of calendar days for the month containing `monthDate`,\n * including the leading/trailing days from adjacent months needed to fill\n * whole weeks. `weekStartsOn` follows the JS `Date#getDay()` convention\n * (0 = Sunday, 1 = Monday, ...).\n */\nexport function getMonthMatrix(monthDate: Date, weekStartsOn: 0 | 1 = 1): Date[][] {\n const year = monthDate.getFullYear();\n const month = monthDate.getMonth();\n const firstOfMonth = new Date(year, month, 1);\n\n const firstWeekday = firstOfMonth.getDay();\n const leadingDays = (firstWeekday - weekStartsOn + 7) % 7;\n const gridStart = new Date(year, month, 1 - leadingDays);\n\n const weeks: Date[][] = [];\n let cursor = gridStart;\n for (let week = 0; week < 6; week += 1) {\n const days: Date[] = [];\n for (let day = 0; day < 7; day += 1) {\n days.push(cursor);\n cursor = new Date(cursor.getFullYear(), cursor.getMonth(), cursor.getDate() + 1);\n }\n weeks.push(days);\n }\n return weeks;\n}\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ComponentRef,\n} from \"react\";\nimport {\n Platform,\n Pressable,\n StyleSheet,\n Text,\n View,\n type StyleProp,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport { CalendarOutlineIcon, ChevronLeftIcon, ClockFilledIcon } from \"../../icons\";\nimport { colors, datePickerTypography } from \"../../theme\";\nimport {\n addMonths,\n formatDate,\n formatDateDayShortMonth,\n getMonthMatrix,\n isBefore,\n isDateDisabled,\n isSameDay,\n isSameMonth,\n isWithinRange,\n startOfDay,\n} from \"../../utils/dateUtils\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\n/** Monday-first — override via `monthNames` for other locales. */\nconst DEFAULT_MONTH_NAMES = [\n \"Հունվար\",\n \"Փետրվար\",\n \"Մարտ\",\n \"Ապրիլ\",\n \"Մայիս\",\n \"Հունիս\",\n \"Հուլիս\",\n \"Օգոստոս\",\n \"Սեպտեմբեր\",\n \"Հոկտեմբեր\",\n \"Նոյեմբեր\",\n \"Դեկտեմբեր\",\n];\n/** Monday-first — override via `weekdayLabels` for other locales. */\nconst DEFAULT_WEEKDAY_LABELS = [\"ԵՐ\", \"ԵՔ\", \"ՉՐ\", \"ՀՆ\", \"ՈՒՐ\", \"ՇԲ\", \"ԿՐ\"];\n\nexport type DateRange = { start: Date | null; end: Date | null };\nexport type DatePickerVariant = \"default\" | \"range-horizontal\" | \"range-vertical\";\n\nconst EMPTY_RANGE: DateRange = { start: null, end: null };\n\ntype DatePickerBaseProps = Omit<ViewProps, \"style\" | \"children\"> & {\n placeholder?: string;\n /** Trigger presentation. Range variants display separate start/end fields. */\n variant?: DatePickerVariant;\n /** Labels shown above the start/end values in range trigger variants. */\n startLabel?: string;\n endLabel?: string;\n /** Optional supplementary times shown beside the start/end dates. */\n startTime?: string;\n endTime?: string;\n /** Per-field placeholders used by range trigger variants. */\n startPlaceholder?: string;\n endPlaceholder?: string;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n disabled?: boolean;\n /**\n * When true (default), the calendar closes after a complete selection —\n * a single date, or both ends of a range. Set false to keep it open.\n */\n closeOnSelect?: boolean;\n minDate?: Date;\n maxDate?: Date;\n /** First visible month when the calendar opens; defaults to the selected value's month, else today. */\n defaultVisibleMonth?: Date;\n /** Monday-first full month names. Defaults to Armenian. */\n monthNames?: string[];\n /** Weekday abbreviations, ordered starting from `weekStartsOn`. Defaults to Armenian, Monday-first. */\n weekdayLabels?: string[];\n /** Formats a selected date for the trigger and day accessibility labels. Defaults to \"DD.MM.YYYY\". */\n formatValue?: (date: Date) => string;\n /** First day of the week column (0 = Sunday, 1 = Monday). Defaults to Monday. */\n weekStartsOn?: 0 | 1;\n /** Styles the calendar popup independently from the trigger width. */\n calendarStyle?: StyleProp<ViewStyle>;\n style?: StyleProp<ViewStyle>;\n className?: string;\n};\n\nexport type DatePickerSingleProps = DatePickerBaseProps & {\n range?: false;\n value?: Date | null;\n defaultValue?: Date | null;\n onValueChange?: (value: Date | null) => void;\n};\n\nexport type DatePickerRangeProps = DatePickerBaseProps & {\n range: true;\n value?: DateRange;\n defaultValue?: DateRange;\n onValueChange?: (value: DateRange) => void;\n};\n\nexport type DatePickerProps = DatePickerSingleProps | DatePickerRangeProps;\n\nconst DEFAULT_WIDTH = 380;\nconst RANGE_TRIGGER_WIDTH = 382;\nconst TRIGGER_HEIGHT = 44;\nconst TRIGGER_RADIUS = 60;\nconst MENU_RADIUS = 20;\nconst ICON_SIZE = 20;\nconst NAV_ICON_SIZE = 20;\nconst DAY_CELL_HEIGHT = 44;\nconst DAY_CIRCLE_SIZE = 44;\n\nfunction RangeTriggerField({\n label,\n value,\n time,\n}: {\n label: string;\n value: string;\n time?: string;\n}) {\n return (\n <View style={styles.rangeField}>\n <Text numberOfLines={1} style={styles.rangeLabel}>\n {label}\n </Text>\n <View style={styles.rangeValueRow}>\n <Text style={styles.rangeDate}>{value}</Text>\n {time ? (\n <View style={styles.rangeTimeWrap}>\n <ClockFilledIcon color={colors.lightGrey} size={16} />\n <Text style={styles.rangeTime}>{time}</Text>\n </View>\n ) : null}\n </View>\n </View>\n );\n}\n\nexport const DatePicker = forwardRef<ComponentRef<typeof View>, DatePickerProps>(\n function DatePicker(props, forwardedRef) {\n const {\n placeholder = \"Select date\",\n variant = \"default\",\n startLabel = \"Start\",\n endLabel = \"End\",\n startTime,\n endTime,\n startPlaceholder = placeholder,\n endPlaceholder = placeholder,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n disabled = false,\n closeOnSelect = true,\n minDate,\n maxDate,\n defaultVisibleMonth,\n monthNames = DEFAULT_MONTH_NAMES,\n weekdayLabels = DEFAULT_WEEKDAY_LABELS,\n formatValue: formatValueProp,\n weekStartsOn = 1,\n calendarStyle,\n style,\n className,\n accessibilityLabel,\n // Pulled out only to keep them off `rest` (which is spread onto the root View);\n // the real values are read from `props` directly below to preserve discriminated typing.\n range: _range,\n value: _value,\n defaultValue: _defaultValue,\n onValueChange: _onValueChange,\n ...rest\n } = props;\n\n const isRange = props.range === true;\n const usesRangeTrigger = isRange && variant !== \"default\";\n const formatValue =\n formatValueProp ??\n (usesRangeTrigger ? (date: Date) => formatDateDayShortMonth(date, monthNames) : formatDate);\n const valueProp = props.value;\n const rootRef = useRef<ComponentRef<typeof View>>(null);\n const triggerRef = useRef<ComponentRef<typeof Pressable>>(null);\n const setRootRef = useMemo(() => mergeRefs(rootRef, forwardedRef), [forwardedRef]);\n\n const isOpenControlled = typeof openProp === \"boolean\";\n const isValueControlled = valueProp !== undefined;\n\n const [uncontrolledSingle, setUncontrolledSingle] = useState<Date | null>(\n !isRange ? ((props as DatePickerSingleProps).defaultValue ?? null) : null,\n );\n const [uncontrolledRange, setUncontrolledRange] = useState<DateRange>(\n isRange ? ((props as DatePickerRangeProps).defaultValue ?? EMPTY_RANGE) : EMPTY_RANGE,\n );\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const [hoveredDayKey, setHoveredDayKey] = useState<number | null>(null);\n\n const rangeValue: DateRange = isRange\n ? isValueControlled\n ? ((valueProp as DateRange) ?? EMPTY_RANGE)\n : uncontrolledRange\n : EMPTY_RANGE;\n const singleValue: Date | null = !isRange\n ? isValueControlled\n ? ((valueProp as Date | null) ?? null)\n : uncontrolledSingle\n : null;\n\n const isOpen = isOpenControlled ? openProp : uncontrolledOpen;\n\n const [visibleMonth, setVisibleMonth] = useState(() => {\n const anchor =\n defaultVisibleMonth ?? (isRange ? rangeValue.start : singleValue) ?? new Date();\n return new Date(anchor.getFullYear(), anchor.getMonth(), 1);\n });\n\n useApplyWebClassName(rootRef, className);\n\n const setOpen = useCallback(\n (next: boolean) => {\n if (!isOpenControlled) setUncontrolledOpen(next);\n onOpenChange?.(next);\n if (next) {\n const anchor = (isRange ? rangeValue.start : singleValue) ?? new Date();\n setVisibleMonth(new Date(anchor.getFullYear(), anchor.getMonth(), 1));\n } else {\n setHoveredDayKey(null);\n }\n },\n [isOpenControlled, isRange, onOpenChange, rangeValue.start, singleValue],\n );\n\n // Close on outside click (web only; native has no document-level events).\n useEffect(() => {\n if (Platform.OS !== \"web\" || !isOpen) return;\n\n const handlePointerDown = (event: MouseEvent | TouchEvent) => {\n const root = rootRef.current as unknown as { contains?: (node: Node) => boolean } | null;\n const target = event.target;\n if (root?.contains && target instanceof Node && !root.contains(target)) {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handlePointerDown);\n document.addEventListener(\"touchstart\", handlePointerDown);\n return () => {\n document.removeEventListener(\"mousedown\", handlePointerDown);\n document.removeEventListener(\"touchstart\", handlePointerDown);\n };\n }, [isOpen, setOpen]);\n\n const focusTrigger = useCallback(() => {\n const node = triggerRef.current as unknown as { focus?: () => void } | null;\n node?.focus?.();\n }, []);\n\n const closeAndFocusTrigger = useCallback(() => {\n setOpen(false);\n focusTrigger();\n }, [focusTrigger, setOpen]);\n\n // Escape closes the calendar and returns focus to the trigger (web only).\n useEffect(() => {\n if (Platform.OS !== \"web\" || !isOpen) return;\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n closeAndFocusTrigger();\n }\n };\n\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [isOpen, closeAndFocusTrigger]);\n\n const handleTriggerPress = () => {\n if (disabled) return;\n setOpen(!isOpen);\n };\n\n const handleDayPress = useCallback(\n (day: Date) => {\n if (disabled || isDateDisabled(day, minDate, maxDate)) return;\n const picked = startOfDay(day);\n\n if (!isRange) {\n if (!isValueControlled) setUncontrolledSingle(picked);\n (props as DatePickerSingleProps).onValueChange?.(picked);\n if (closeOnSelect) setOpen(false);\n return;\n }\n\n const { start, end } = rangeValue;\n const startingNewRange = !start || (start && end);\n const nextRange: DateRange = startingNewRange\n ? { start: picked, end: null }\n : isBefore(picked, start)\n ? { start: picked, end: null }\n : { start, end: picked };\n\n if (!isValueControlled) setUncontrolledRange(nextRange);\n (props as DatePickerRangeProps).onValueChange?.(nextRange);\n if (closeOnSelect && nextRange.start && nextRange.end) setOpen(false);\n },\n [\n closeOnSelect,\n disabled,\n isRange,\n isValueControlled,\n maxDate,\n minDate,\n props,\n rangeValue,\n setOpen,\n ],\n );\n\n const handlePrevMonth = () => setVisibleMonth((current) => addMonths(current, -1));\n const handleNextMonth = () => setVisibleMonth((current) => addMonths(current, 1));\n\n const weeks = useMemo(\n () => getMonthMatrix(visibleMonth, weekStartsOn),\n [visibleMonth, weekStartsOn],\n );\n const today = useMemo(() => startOfDay(new Date()), []);\n\n const hasValue = isRange ? rangeValue.start != null : singleValue != null;\n const triggerLabel = isRange\n ? rangeValue.start && rangeValue.end\n ? `${formatValue(rangeValue.start)} - ${formatValue(rangeValue.end)}`\n : rangeValue.start\n ? `${formatValue(rangeValue.start)} - ...`\n : placeholder\n : singleValue\n ? formatValue(singleValue)\n : placeholder;\n\n const usesVerticalRangeTrigger = usesRangeTrigger && variant === \"range-vertical\";\n const triggerBorderColor = usesRangeTrigger\n ? isOpen\n ? colors.primary\n : colors.grey500\n : isOpen\n ? colors.primaryMuted\n : colors.grey700;\n const triggerTextColor = hasValue ? colors.white : colors.grey100;\n const startValue = rangeValue.start ? formatValue(rangeValue.start) : startPlaceholder;\n const endValue = rangeValue.end ? formatValue(rangeValue.end) : endPlaceholder;\n\n const resolvedAccessibilityLabel = accessibilityLabel ?? placeholder;\n\n return (\n <View\n {...rest}\n ref={setRootRef}\n style={[\n styles.root,\n usesRangeTrigger && styles.rangeRoot,\n isOpen && styles.rootOpen,\n disabled && styles.disabled,\n style,\n ]}\n accessibilityState={{ disabled, expanded: isOpen }}\n >\n <View style={[styles.triggerWrap, isOpen && styles.triggerWrapOpen]}>\n <Pressable\n ref={triggerRef}\n onPress={handleTriggerPress}\n disabled={disabled}\n accessibilityRole=\"button\"\n accessibilityLabel={resolvedAccessibilityLabel}\n accessibilityState={{ disabled, expanded: isOpen }}\n style={[\n styles.trigger,\n usesRangeTrigger && styles.rangeTrigger,\n usesRangeTrigger &&\n (usesVerticalRangeTrigger\n ? styles.rangeTriggerVertical\n : styles.rangeTriggerHorizontal),\n {\n borderColor: triggerBorderColor,\n backgroundColor: usesRangeTrigger ? \"transparent\" : colors.grey700,\n },\n ]}\n >\n {usesRangeTrigger ? (\n <>\n <RangeTriggerField label={startLabel} time={startTime} value={startValue} />\n <View\n style={\n usesVerticalRangeTrigger\n ? styles.rangeDividerVertical\n : styles.rangeDividerHorizontal\n }\n />\n <RangeTriggerField label={endLabel} time={endTime} value={endValue} />\n </>\n ) : (\n <>\n <Text style={[styles.triggerText, { color: triggerTextColor }]} numberOfLines={1}>\n {triggerLabel}\n </Text>\n <View style={styles.iconSlot}>\n <CalendarOutlineIcon size={ICON_SIZE} color={colors.grey100} />\n </View>\n </>\n )}\n </Pressable>\n\n {isOpen ? (\n <View style={[styles.menu, usesRangeTrigger && styles.rangeMenu, calendarStyle]}>\n <View style={styles.calendarHeader}>\n <Pressable\n onPress={handlePrevMonth}\n hitSlop={8}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Previous month\"\n style={styles.navButton}\n >\n <ChevronLeftIcon size={NAV_ICON_SIZE} color={colors.white} />\n </Pressable>\n\n <Text style={styles.monthHeading}>\n {monthNames[visibleMonth.getMonth()]} {visibleMonth.getFullYear()}\n </Text>\n\n <Pressable\n onPress={handleNextMonth}\n hitSlop={8}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Next month\"\n style={styles.navButton}\n >\n <View style={styles.navIconMirror}>\n <ChevronLeftIcon size={NAV_ICON_SIZE} color={colors.white} />\n </View>\n </Pressable>\n </View>\n\n <View>\n <View style={styles.weekdayRow}>\n {weekdayLabels.map((weekdayLabel, index) => (\n <View key={`${weekdayLabel}-${index}`} style={styles.dayCellWrap}>\n <Text style={styles.weekdayText}>{weekdayLabel}</Text>\n </View>\n ))}\n </View>\n\n {weeks.map((week, weekIndex) => {\n let rangeHighlightStyle: { left: `${number}%`; width: `${number}%` } | null =\n null;\n\n if (isRange && rangeValue.start && rangeValue.end) {\n const rangeIndices = week.reduce<number[]>((acc, day, index) => {\n if (isWithinRange(day, rangeValue.start as Date, rangeValue.end as Date)) {\n acc.push(index);\n }\n return acc;\n }, []);\n\n if (rangeIndices.length > 0) {\n const first = rangeIndices[0];\n const last = rangeIndices[rangeIndices.length - 1];\n const startsHere = isSameDay(week[first], rangeValue.start);\n const endsHere = isSameDay(week[last], rangeValue.end);\n // Half a cell so the bar meets the circle center, not past it.\n const cellPct = 100 / 7;\n const halfCellPct = cellPct / 2;\n let leftPct = first * cellPct;\n let widthPct = (last - first + 1) * cellPct;\n if (startsHere) {\n leftPct += halfCellPct;\n widthPct -= halfCellPct;\n }\n if (endsHere) {\n widthPct -= halfCellPct;\n }\n // Same-day range: only the circle, no connector bar.\n if (widthPct > 0) {\n rangeHighlightStyle = {\n left: `${leftPct}%`,\n width: `${widthPct}%`,\n };\n }\n }\n }\n\n return (\n <View\n key={weekIndex}\n style={[styles.weekRow, weekIndex > 0 && styles.weekRowSpaced]}\n >\n {rangeHighlightStyle ? (\n <View\n pointerEvents=\"none\"\n style={[styles.rangeHighlight, rangeHighlightStyle]}\n />\n ) : null}\n\n {week.map((day, dayIndex) => {\n const inCurrentMonth = isSameMonth(day, visibleMonth);\n const isToday = isSameDay(day, today);\n const isSelectedSingle = !isRange && isSameDay(day, singleValue);\n const isRangeStart = isRange && isSameDay(day, rangeValue.start);\n const isRangeEnd = isRange && isSameDay(day, rangeValue.end);\n const isSelectedEndpoint = isSelectedSingle || isRangeStart || isRangeEnd;\n const dayDisabled = disabled || isDateDisabled(day, minDate, maxDate);\n const dayKey = startOfDay(day).getTime();\n const isHovered =\n !dayDisabled && !isSelectedEndpoint && hoveredDayKey === dayKey;\n\n const dayTextColor = isSelectedEndpoint\n ? colors.white\n : dayDisabled\n ? colors.grey400\n : isToday\n ? colors.primary\n : !inCurrentMonth\n ? colors.grey300\n : colors.white;\n\n return (\n <Pressable\n key={dayIndex}\n onPress={() => handleDayPress(day)}\n disabled={dayDisabled}\n onHoverIn={() => setHoveredDayKey(dayKey)}\n onHoverOut={() =>\n setHoveredDayKey((current) => (current === dayKey ? null : current))\n }\n onPressIn={() => setHoveredDayKey(dayKey)}\n onPressOut={() =>\n setHoveredDayKey((current) => (current === dayKey ? null : current))\n }\n style={styles.dayCellWrap}\n accessibilityRole=\"button\"\n accessibilityLabel={formatValue(day)}\n accessibilityState={{\n disabled: dayDisabled,\n selected: isSelectedEndpoint,\n }}\n >\n <View\n style={[\n styles.dayCircle,\n isSelectedEndpoint && styles.dayCircleSelected,\n isHovered && styles.dayCircleHovered,\n ]}\n >\n <Text style={[styles.dayText, { color: dayTextColor }]}>\n {day.getDate()}\n </Text>\n </View>\n {isToday && !isSelectedEndpoint ? (\n <View style={styles.todayDot} />\n ) : null}\n </Pressable>\n );\n })}\n </View>\n );\n })}\n </View>\n </View>\n ) : null}\n </View>\n </View>\n );\n },\n);\n\nconst styles = StyleSheet.create({\n root: {\n width: DEFAULT_WIDTH,\n gap: 8,\n alignSelf: \"flex-start\",\n },\n rootOpen: {\n zIndex: 30,\n },\n rangeRoot: {\n width: RANGE_TRIGGER_WIDTH,\n },\n disabled: {\n opacity: 0.6,\n },\n triggerWrap: {\n position: \"relative\",\n zIndex: 1,\n },\n triggerWrapOpen: {\n zIndex: 20,\n },\n trigger: {\n height: TRIGGER_HEIGHT,\n borderRadius: TRIGGER_RADIUS,\n borderWidth: 1,\n paddingVertical: 10,\n paddingHorizontal: 16,\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 10,\n overflow: \"hidden\",\n },\n triggerText: {\n ...datePickerTypography.field,\n flex: 1,\n minWidth: 0,\n },\n rangeTrigger: {\n paddingVertical: 0,\n paddingHorizontal: 0,\n borderRadius: 15,\n gap: 0,\n },\n rangeTriggerHorizontal: {\n height: 78,\n flexDirection: \"row\",\n },\n rangeTriggerVertical: {\n height: 156,\n flexDirection: \"column\",\n },\n rangeField: {\n flex: 1,\n alignSelf: \"stretch\",\n minWidth: 0,\n justifyContent: \"center\",\n gap: 8,\n paddingVertical: 12,\n paddingHorizontal: 12,\n },\n rangeLabel: {\n ...datePickerTypography.rangeLabel,\n color: colors.whiteAlpha60,\n },\n rangeValueRow: {\n minWidth: 0,\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n flexWrap: \"nowrap\",\n gap: 10,\n },\n rangeDate: {\n ...datePickerTypography.rangeDate,\n flexShrink: 0,\n color: colors.white,\n // @ts-expect-error RN Web — keep the full date on one line\n whiteSpace: \"nowrap\",\n },\n rangeTimeWrap: {\n flexShrink: 0,\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 3,\n },\n rangeTime: {\n ...datePickerTypography.rangeTime,\n color: colors.lightGrey,\n },\n rangeDividerHorizontal: {\n width: 1,\n alignSelf: \"stretch\",\n backgroundColor: colors.grey500,\n },\n rangeDividerVertical: {\n height: 1,\n alignSelf: \"stretch\",\n backgroundColor: colors.grey500,\n },\n iconSlot: {\n width: ICON_SIZE,\n height: ICON_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n menu: {\n position: \"absolute\",\n top: \"100%\",\n left: 0,\n width: DEFAULT_WIDTH,\n marginTop: 8,\n zIndex: 10,\n borderRadius: MENU_RADIUS,\n padding: 12,\n gap: 0,\n backgroundColor: colors.grey700,\n ...Platform.select({\n web: {\n boxShadow: `0 8px 24px ${colors.black}73`,\n },\n default: {\n elevation: 8,\n },\n }),\n },\n rangeMenu: {\n width: RANGE_TRIGGER_WIDTH,\n },\n calendarHeader: {\n height: 36,\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n },\n navButton: {\n width: 36,\n height: 36,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n navIconMirror: {\n transform: [{ scaleX: -1 }],\n },\n monthHeading: {\n ...datePickerTypography.monthHeading,\n color: colors.white,\n textAlign: \"center\",\n },\n weekdayRow: {\n flexDirection: \"row\",\n },\n weekdayText: {\n ...datePickerTypography.weekday,\n color: colors.grey300,\n textAlign: \"center\",\n textTransform: \"uppercase\",\n },\n weekRow: {\n flexDirection: \"row\",\n position: \"relative\",\n },\n weekRowSpaced: {\n marginTop: 8,\n },\n rangeHighlight: {\n position: \"absolute\",\n top: (DAY_CELL_HEIGHT - DAY_CIRCLE_SIZE) / 2,\n bottom: (DAY_CELL_HEIGHT - DAY_CIRCLE_SIZE) / 2,\n borderRadius: DAY_CIRCLE_SIZE / 2,\n backgroundColor: colors.primaryHover,\n },\n dayCellWrap: {\n flex: 1,\n height: DAY_CELL_HEIGHT,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n dayCircle: {\n width: DAY_CIRCLE_SIZE,\n height: DAY_CIRCLE_SIZE,\n borderRadius: DAY_CIRCLE_SIZE / 2,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n dayCircleSelected: {\n backgroundColor: colors.primary,\n },\n dayCircleHovered: {\n backgroundColor: colors.grey600,\n },\n dayText: {\n ...datePickerTypography.day,\n },\n todayDot: {\n position: \"absolute\",\n bottom: 2,\n width: 4,\n height: 4,\n borderRadius: 2,\n backgroundColor: colors.primary,\n },\n});\n","import { forwardRef, useMemo, useRef, type ComponentRef, type ReactNode } from \"react\";\nimport {\n StyleSheet,\n TouchableOpacity,\n type GestureResponderEvent,\n type StyleProp,\n type TouchableOpacityProps,\n type ViewStyle,\n} from \"react-native\";\nimport { PlusIcon } from \"../../icons\";\nimport { colors } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport interface FloatingActionButtonProps extends Omit<\n TouchableOpacityProps,\n \"onPress\" | \"disabled\" | \"style\" | \"children\"\n> {\n onPress: (event: GestureResponderEvent) => void;\n disabled?: boolean;\n /** Defaults to a 24×24 white plus icon. */\n icon?: ReactNode;\n accessibilityLabel?: string;\n style?: StyleProp<ViewStyle>;\n className?: string;\n}\n\nconst SIZE = 48;\nconst PADDING = 12;\nconst ICON_SIZE = 24;\nconst RADIUS = 64;\n\nexport const FloatingActionButton = forwardRef<\n ComponentRef<typeof TouchableOpacity>,\n FloatingActionButtonProps\n>(function FloatingActionButton(\n { onPress, disabled = false, icon, accessibilityLabel = \"Add\", style, className, ...rest },\n forwardedRef,\n) {\n const containerRef = useRef<ComponentRef<typeof TouchableOpacity>>(null);\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n const resolvedClassName = className?.trim() || undefined;\n\n useApplyWebClassName(containerRef, resolvedClassName);\n\n return (\n <TouchableOpacity\n {...rest}\n ref={setContainerRef}\n onPress={onPress}\n disabled={disabled}\n activeOpacity={0.7}\n accessibilityRole=\"button\"\n accessibilityLabel={accessibilityLabel}\n accessibilityState={{ disabled }}\n style={[styles.base, disabled && styles.disabled, style]}\n >\n {icon ?? <PlusIcon color={colors.white} size={ICON_SIZE} strokeWidth={2} />}\n </TouchableOpacity>\n );\n});\n\nconst styles = StyleSheet.create({\n base: {\n width: SIZE,\n height: SIZE,\n padding: PADDING,\n borderRadius: RADIUS,\n backgroundColor: colors.primary,\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: 10,\n },\n disabled: {\n opacity: 0.6,\n },\n});\n","import { cloneElement, isValidElement, type ReactNode } from \"react\";\nimport type { IconComponent, IconProps } from \"../icons\";\n\nexport type StatefulIcon = ReactNode | IconComponent;\n\nexport function renderStatefulIcon(\n icon: StatefulIcon | undefined,\n FallbackIcon: IconComponent,\n props: Pick<IconProps, \"color\" | \"size\">,\n) {\n if (icon == null) {\n return <FallbackIcon {...props} />;\n }\n\n if (typeof icon === \"function\") {\n const Icon = icon as IconComponent;\n return <Icon {...props} />;\n }\n\n if (isValidElement<IconProps>(icon)) {\n return cloneElement(icon, props);\n }\n\n return icon;\n}\n","import { forwardRef, useMemo, useRef, useState, type ComponentRef } from \"react\";\nimport {\n Platform,\n StyleSheet,\n Text,\n TextInput,\n TouchableOpacity,\n View,\n type StyleProp,\n type TextStyle,\n type ViewStyle,\n type TextInputProps,\n} from \"react-native\";\nimport { ShowIcon, UserIcon } from \"../../icons\";\nimport { colors, inputTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { renderStatefulIcon, type StatefulIcon } from \"../../utils/renderStatefulIcon\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport type InputSize = \"lg\" | \"sm\";\nexport type InputIcon = StatefulIcon;\n\nexport interface InputProps extends Omit<TextInputProps, \"style\" | \"editable\"> {\n label?: string;\n showLabel?: boolean;\n hint?: string;\n showHint?: boolean;\n size?: InputSize;\n /** External — validation / form error. */\n error?: boolean;\n /** External — non-interactive. */\n disabled?: boolean;\n leftIcon?: InputIcon;\n showLeftIcon?: boolean;\n rightIcon?: InputIcon;\n showRightIcon?: boolean;\n onRightIconPress?: () => void;\n /** Accessible name for the right icon button, when `onRightIconPress` is set. */\n rightIconAccessibilityLabel?: string;\n style?: StyleProp<ViewStyle>;\n fieldStyle?: StyleProp<ViewStyle>;\n inputStyle?: StyleProp<TextStyle>;\n className?: string;\n inputClassName?: string;\n}\n\ntype VisualState = \"default\" | \"filled\" | \"active\" | \"error\" | \"disabled\";\n\ntype FieldChrome = {\n borderColor: string;\n backgroundColor: string;\n textColor: string;\n placeholderColor: string;\n leftIconColor: string;\n rightIconColor: string;\n labelColor: string;\n hintColor: string;\n};\n\nconst DEFAULT_WIDTH = 308;\n\nconst sizeConfig = {\n lg: {\n height: 44,\n borderRadius: 60,\n paddingVertical: 12,\n paddingHorizontal: 16,\n gap: 10,\n iconSize: 20,\n text: inputTypography.field,\n },\n sm: {\n height: 32,\n borderRadius: 60,\n paddingVertical: 6,\n paddingHorizontal: 12,\n gap: 8,\n iconSize: 16,\n text: inputTypography.hint,\n },\n} as const satisfies Record<InputSize, Record<string, unknown>>;\n\n/** default / filled / active come from value + focus; error / disabled from props. */\nfunction resolveVisualState({\n disabled,\n error,\n focused,\n hasValue,\n}: {\n disabled: boolean;\n error: boolean;\n focused: boolean;\n hasValue: boolean;\n}): VisualState {\n if (disabled) return \"disabled\";\n if (error) return \"error\";\n if (focused) return \"active\";\n if (hasValue) return \"filled\";\n return \"default\";\n}\n\nfunction chromeFor(state: VisualState): FieldChrome {\n const base: FieldChrome = {\n borderColor: colors.grey700,\n backgroundColor: colors.grey700,\n textColor: colors.white,\n placeholderColor: colors.grey100,\n leftIconColor: colors.grey100,\n rightIconColor: colors.grey100,\n labelColor: colors.white,\n hintColor: colors.grey100,\n };\n\n switch (state) {\n case \"active\":\n return {\n ...base,\n borderColor: colors.primaryMuted,\n leftIconColor: colors.primary,\n };\n case \"error\":\n return {\n ...base,\n borderColor: colors.redMuted,\n textColor: colors.red,\n placeholderColor: colors.red,\n labelColor: colors.red,\n hintColor: colors.red,\n leftIconColor: colors.red,\n };\n case \"filled\":\n return base;\n case \"disabled\":\n return {\n ...base,\n borderColor: colors.grey700,\n backgroundColor: colors.grey700,\n textColor: colors.grey0,\n leftIconColor: colors.grey0,\n rightIconColor: colors.grey0,\n labelColor: colors.white,\n hintColor: colors.grey100,\n };\n default:\n return base;\n }\n}\n\nexport const Input = forwardRef<ComponentRef<typeof TextInput>, InputProps>(function Input(\n {\n label,\n showLabel = true,\n hint,\n showHint = true,\n placeholder,\n size = \"lg\",\n disabled = false,\n error = false,\n value,\n defaultValue,\n onChangeText,\n onFocus,\n onBlur,\n leftIcon,\n showLeftIcon = false,\n rightIcon,\n showRightIcon = false,\n onRightIconPress,\n rightIconAccessibilityLabel,\n style,\n fieldStyle,\n inputStyle,\n className,\n inputClassName,\n accessibilityLabel,\n ...textInputProps\n },\n forwardedRef,\n) {\n const rootRef = useRef<ComponentRef<typeof View>>(null);\n const inputRef = useRef<ComponentRef<typeof TextInput>>(null);\n const setInputRef = useMemo(() => mergeRefs(inputRef, forwardedRef), [forwardedRef]);\n const [focused, setFocused] = useState(false);\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue ?? \"\");\n const metrics = sizeConfig[size];\n\n const isControlled = typeof value === \"string\";\n const currentValue = isControlled ? value : uncontrolledValue;\n const hasValue = currentValue.length > 0;\n\n const visualState = resolveVisualState({ disabled, error, focused, hasValue });\n const chrome = chromeFor(visualState);\n const resolvedAccessibilityLabel = accessibilityLabel ?? (showLabel ? undefined : label);\n\n const hasLeftIcon = showLeftIcon || leftIcon != null;\n const hasRightIcon = showRightIcon || rightIcon != null;\n\n const leftIconNode = renderStatefulIcon(leftIcon, UserIcon, {\n size: metrics.iconSize,\n color: chrome.leftIconColor,\n });\n const rightIconNode = renderStatefulIcon(rightIcon, ShowIcon, {\n size: metrics.iconSize,\n color: chrome.rightIconColor,\n });\n\n useApplyWebClassName(rootRef, className);\n useApplyWebClassName(inputRef, inputClassName);\n\n return (\n <View ref={rootRef} style={[styles.root, disabled && styles.disabled, style]}>\n {showLabel && label ? (\n <Text style={[styles.label, { color: chrome.labelColor }]}>{label}</Text>\n ) : null}\n\n <View\n style={[\n styles.field,\n {\n height: metrics.height,\n borderRadius: metrics.borderRadius,\n paddingTop: metrics.paddingVertical,\n paddingBottom: metrics.paddingVertical,\n paddingLeft: metrics.paddingHorizontal,\n paddingRight: metrics.paddingHorizontal,\n gap: metrics.gap,\n borderColor: chrome.borderColor,\n backgroundColor: chrome.backgroundColor,\n },\n fieldStyle,\n ]}\n >\n {hasLeftIcon ? (\n <View style={[styles.iconSlot, { width: metrics.iconSize, height: metrics.iconSize }]}>\n {leftIconNode}\n </View>\n ) : null}\n\n <TextInput\n ref={setInputRef}\n {...textInputProps}\n value={isControlled ? value : undefined}\n defaultValue={isControlled ? undefined : defaultValue}\n editable={!disabled}\n placeholder={placeholder}\n placeholderTextColor={chrome.placeholderColor}\n onChangeText={(text) => {\n if (!isControlled) setUncontrolledValue(text);\n onChangeText?.(text);\n }}\n onFocus={(event) => {\n setFocused(true);\n onFocus?.(event);\n }}\n onBlur={(event) => {\n setFocused(false);\n onBlur?.(event);\n }}\n style={[\n styles.input,\n metrics.text,\n { color: chrome.textColor },\n Platform.OS === \"web\" ? styles.inputWeb : null,\n Platform.OS === \"android\" ? styles.inputAndroid : null,\n inputStyle,\n ]}\n accessibilityLabel={resolvedAccessibilityLabel}\n accessibilityState={{ disabled }}\n />\n\n {hasRightIcon ? (\n onRightIconPress ? (\n <TouchableOpacity\n onPress={onRightIconPress}\n disabled={disabled}\n style={[styles.iconSlot, { width: metrics.iconSize, height: metrics.iconSize }]}\n accessibilityRole=\"button\"\n accessibilityLabel={rightIconAccessibilityLabel}\n hitSlop={8}\n >\n {rightIconNode}\n </TouchableOpacity>\n ) : (\n <View style={[styles.iconSlot, { width: metrics.iconSize, height: metrics.iconSize }]}>\n {rightIconNode}\n </View>\n )\n ) : null}\n </View>\n\n {showHint && hint ? (\n <Text style={[styles.hint, { color: chrome.hintColor }]}>{hint}</Text>\n ) : null}\n </View>\n );\n});\n\nconst styles = StyleSheet.create({\n root: {\n width: DEFAULT_WIDTH,\n gap: 8,\n alignSelf: \"flex-start\",\n },\n disabled: {\n opacity: 0.6,\n },\n label: {\n ...inputTypography.label,\n },\n field: {\n borderWidth: 1,\n flexDirection: \"row\",\n alignItems: \"center\",\n },\n input: {\n flex: 1,\n paddingVertical: 0,\n margin: 0,\n },\n inputWeb: {\n outlineStyle: \"none\",\n } as TextStyle,\n inputAndroid: {\n includeFontPadding: false,\n },\n iconSlot: {\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n hint: {\n ...inputTypography.hint,\n },\n});\n","export function normalizeVerificationCode(value: string, length: number): string {\n return value.replace(/\\D/g, \"\").slice(0, Math.max(1, length));\n}\n\nexport interface VerificationCodeUpdate {\n code: string;\n nextFocus: number;\n}\n\nexport function updateVerificationCode(\n currentCode: string,\n index: number,\n input: string,\n length: number,\n): VerificationCodeUpdate {\n const safeLength = Math.max(1, length);\n const safeIndex = Math.min(Math.max(0, index), safeLength - 1);\n const current = normalizeVerificationCode(currentCode, safeLength);\n const insertedDigits = normalizeVerificationCode(input, safeLength - safeIndex);\n\n if (!insertedDigits) {\n return {\n code: `${current.slice(0, safeIndex)}${current.slice(safeIndex + 1)}`,\n nextFocus: safeIndex,\n };\n }\n\n return {\n code: `${current.slice(0, safeIndex)}${insertedDigits}${current.slice(\n safeIndex + insertedDigits.length,\n )}`.slice(0, safeLength),\n nextFocus: Math.min(safeIndex + insertedDigits.length, safeLength - 1),\n };\n}\n","import {\n forwardRef,\n useCallback,\n useImperativeHandle,\n useRef,\n useState,\n type ComponentRef,\n} from \"react\";\nimport {\n Platform,\n StyleSheet,\n TextInput,\n useWindowDimensions,\n View,\n type NativeSyntheticEvent,\n type StyleProp,\n type TextInputKeyPressEventData,\n type TextStyle,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport { colors, fonts } from \"../../theme\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\nimport { normalizeVerificationCode, updateVerificationCode } from \"./VerificationCodeInput.utils\";\n\nconst DEFAULT_LENGTH = 6;\nconst DESKTOP_CELL_WIDTH = 54;\nconst MOBILE_CELL_WIDTH = 50;\nconst CELL_HEIGHT = 68;\nconst DESKTOP_GAP = 12;\nconst MOBILE_GAP = 4;\nconst MOBILE_BREAKPOINT = 640;\n\nexport interface VerificationCodeInputHandle {\n clear: () => void;\n focus: (index?: number) => void;\n}\n\nexport interface VerificationCodeInputProps extends Omit<ViewProps, \"children\" | \"style\"> {\n /** Number of numeric cells. */\n length?: number;\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n /** Called whenever every cell contains a digit. */\n onComplete?: (value: string) => void;\n /** Called when Enter/submit is pressed from a cell. */\n onSubmit?: (value: string) => void;\n error?: boolean;\n disabled?: boolean;\n autoFocus?: boolean;\n /** Localized accessible name for each zero-based cell index. */\n getDigitAccessibilityLabel?: (index: number) => string;\n style?: StyleProp<ViewStyle>;\n inputStyle?: StyleProp<TextStyle>;\n className?: string;\n}\n\nexport const VerificationCodeInput = forwardRef<\n VerificationCodeInputHandle,\n VerificationCodeInputProps\n>(function VerificationCodeInput(\n {\n length = DEFAULT_LENGTH,\n value,\n defaultValue = \"\",\n onValueChange,\n onComplete,\n onSubmit,\n error = false,\n disabled = false,\n autoFocus = false,\n getDigitAccessibilityLabel,\n style,\n inputStyle,\n className,\n ...viewProps\n },\n forwardedRef,\n) {\n const safeLength = Math.max(1, Math.floor(length));\n const isControlled = typeof value === \"string\";\n const [uncontrolledValue, setUncontrolledValue] = useState(() =>\n normalizeVerificationCode(defaultValue, safeLength),\n );\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n const { width: viewportWidth } = useWindowDimensions();\n const rootRef = useRef<ComponentRef<typeof View>>(null);\n const inputRefs = useRef<Array<ComponentRef<typeof TextInput> | null>>([]);\n const currentCode = normalizeVerificationCode(\n isControlled ? value : uncontrolledValue,\n safeLength,\n );\n\n useApplyWebClassName(rootRef, className);\n\n const focus = useCallback(\n (index = 0) => {\n const safeIndex = Math.min(Math.max(0, index), safeLength - 1);\n inputRefs.current[safeIndex]?.focus();\n },\n [safeLength],\n );\n\n const commit = useCallback(\n (nextValue: string) => {\n const normalized = normalizeVerificationCode(nextValue, safeLength);\n\n if (!isControlled) {\n setUncontrolledValue(normalized);\n }\n\n onValueChange?.(normalized);\n\n if (normalized.length === safeLength) {\n onComplete?.(normalized);\n }\n },\n [isControlled, onComplete, onValueChange, safeLength],\n );\n\n useImperativeHandle(\n forwardedRef,\n () => ({\n clear: () => {\n commit(\"\");\n focus(0);\n },\n focus,\n }),\n [commit, focus],\n );\n\n const handleChange = (index: number, input: string) => {\n const update = updateVerificationCode(currentCode, index, input, safeLength);\n commit(update.code);\n focus(update.nextFocus);\n };\n\n const handleKeyPress = (\n index: number,\n event: NativeSyntheticEvent<TextInputKeyPressEventData>,\n ) => {\n const key = event.nativeEvent.key;\n\n if (key === \"Backspace\" && !currentCode[index] && index > 0) {\n const update = updateVerificationCode(currentCode, index - 1, \"\", safeLength);\n commit(update.code);\n focus(index - 1);\n return;\n }\n\n if (key === \"ArrowLeft\" && index > 0) {\n focus(index - 1);\n }\n\n if (key === \"ArrowRight\" && index < safeLength - 1) {\n focus(index + 1);\n }\n };\n\n const mobile = viewportWidth < MOBILE_BREAKPOINT;\n const cellWidth = mobile ? MOBILE_CELL_WIDTH : DESKTOP_CELL_WIDTH;\n const cellGap = mobile ? MOBILE_GAP : DESKTOP_GAP;\n const rootWidth = cellWidth * safeLength + cellGap * Math.max(0, safeLength - 1);\n\n return (\n <View\n {...viewProps}\n ref={rootRef}\n style={[\n styles.root,\n { width: rootWidth, maxWidth: \"100%\", gap: cellGap },\n disabled && styles.disabled,\n style,\n ]}\n >\n {Array.from({ length: safeLength }, (_, index) => {\n const active = focusedIndex === index;\n const borderColor = error ? colors.redHover : active ? colors.primary : colors.grey600;\n\n return (\n <TextInput\n ref={(element) => {\n inputRefs.current[index] = element;\n }}\n accessibilityLabel={\n getDigitAccessibilityLabel?.(index) ?? `Verification code digit ${index + 1}`\n }\n accessibilityState={{ disabled }}\n autoComplete={index === 0 ? \"one-time-code\" : \"off\"}\n autoFocus={autoFocus && index === 0}\n caretHidden={Platform.OS !== \"web\"}\n editable={!disabled}\n inputMode=\"numeric\"\n key={index}\n keyboardType=\"number-pad\"\n maxLength={safeLength}\n onBlur={() => setFocusedIndex((current) => (current === index ? null : current))}\n onChangeText={(text) => handleChange(index, text)}\n onFocus={() => setFocusedIndex(index)}\n onKeyPress={(event) => handleKeyPress(index, event)}\n onSubmitEditing={() => onSubmit?.(currentCode)}\n selectTextOnFocus\n style={[\n styles.cell,\n {\n width: cellWidth,\n height: CELL_HEIGHT,\n borderColor,\n color: error ? colors.red : colors.white,\n },\n Platform.OS === \"web\" ? styles.cellWeb : null,\n Platform.OS === \"android\" ? styles.cellAndroid : null,\n inputStyle,\n ]}\n value={currentCode[index] ?? \"\"}\n />\n );\n })}\n </View>\n );\n});\n\nconst styles = StyleSheet.create({\n root: {\n minWidth: 0,\n alignSelf: \"center\",\n flexDirection: \"row\",\n justifyContent: \"center\",\n },\n disabled: {\n opacity: 0.6,\n },\n cell: {\n minWidth: 0,\n flexGrow: 0,\n flexShrink: 0,\n borderWidth: 1,\n borderRadius: 16,\n padding: 0,\n margin: 0,\n textAlign: \"center\",\n fontFamily: fonts.sans,\n fontSize: 22,\n fontWeight: \"600\",\n lineHeight: 22,\n },\n cellWeb: {\n outlineStyle: \"none\",\n } as TextStyle,\n cellAndroid: {\n includeFontPadding: false,\n },\n});\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ComponentRef,\n} from \"react\";\nimport {\n Platform,\n Pressable,\n ScrollView,\n StyleSheet,\n Text,\n TextInput,\n View,\n type LayoutChangeEvent,\n type StyleProp,\n type TextStyle,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport { Checkbox } from \"../Checkbox\";\nimport { ChevronDownIcon, SearchIcon, UserIcon } from \"../../icons\";\nimport { colors, selectTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { renderStatefulIcon, type StatefulIcon } from \"../../utils/renderStatefulIcon\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport type SelectOption = {\n label: string;\n value: string;\n};\n\nexport type SelectIcon = StatefulIcon;\n\ntype SelectBaseProps = Omit<ViewProps, \"style\" | \"children\"> & {\n label?: string;\n showLabel?: boolean;\n hint?: string;\n showHint?: boolean;\n placeholder?: string;\n options: SelectOption[];\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n disabled?: boolean;\n error?: boolean;\n leftIcon?: SelectIcon;\n showLeftIcon?: boolean;\n showSearch?: boolean;\n searchPlaceholder?: string;\n /**\n * Called with the raw query on every keystroke. When provided, the parent owns\n * filtering (e.g. server search) and the options prop is rendered as-is;\n * when omitted, options are filtered locally by label.\n */\n onSearchChange?: (query: string) => void;\n /** Shows a loading row in the menu while the parent fetches options. */\n loading?: boolean;\n /** Text shown when no options match. */\n emptyText?: string;\n style?: StyleProp<ViewStyle>;\n className?: string;\n};\n\nexport type SelectSingleProps = SelectBaseProps & {\n multiple?: false;\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n};\n\nexport type SelectMultipleProps = SelectBaseProps & {\n multiple: true;\n value?: string[];\n defaultValue?: string[];\n onValueChange?: (value: string[]) => void;\n};\n\nexport type SelectProps = SelectSingleProps | SelectMultipleProps;\n\nconst DEFAULT_WIDTH = 308;\nconst TRIGGER_HEIGHT = 44;\nconst TRIGGER_RADIUS = 60;\nconst MENU_RADIUS = 24;\nconst MENU_MAX_LIST_HEIGHT = 248;\nconst ITEM_RADIUS = 12;\nconst ICON_SIZE = 20;\nconst CHIP_GAP = 6;\nconst FALLBACK_ELLIPSIS_WIDTH = 20;\n\ntype ItemVisualState = \"default\" | \"hover\" | \"selected\";\n\nfunction itemBackground(state: ItemVisualState): string {\n switch (state) {\n case \"hover\":\n return colors.grey600;\n case \"selected\":\n return colors.primaryMuted;\n default:\n return \"transparent\";\n }\n}\n\nfunction toArray(value: string | string[] | undefined): string[] {\n if (value == null || value === \"\") return [];\n return Array.isArray(value) ? value : [value];\n}\n\nfunction resolveVisibleOptions(\n options: SelectOption[],\n containerWidth: number,\n chipWidths: Record<string, number>,\n ellipsisWidth: number,\n): { visible: SelectOption[]; hasOverflow: boolean } {\n if (options.length === 0) return { visible: [], hasOverflow: false };\n if (containerWidth <= 0) return { visible: options.slice(0, 1), hasOverflow: options.length > 1 };\n\n const visible: SelectOption[] = [];\n let used = 0;\n\n for (let index = 0; index < options.length; index += 1) {\n const option = options[index];\n const chipWidth = chipWidths[option.value];\n if (chipWidth == null) {\n if (visible.length === 0) visible.push(option);\n break;\n }\n\n const remainingAfter = options.length - index - 1;\n const gap = visible.length > 0 ? CHIP_GAP : 0;\n const reserve = remainingAfter > 0 ? CHIP_GAP + ellipsisWidth : 0;\n const nextUsed = used + gap + chipWidth;\n\n if (visible.length > 0 && nextUsed + reserve > containerWidth) {\n return { visible, hasOverflow: true };\n }\n\n visible.push(option);\n used = nextUsed;\n }\n\n return { visible, hasOverflow: visible.length < options.length };\n}\n\ntype MultiValueChipsProps = {\n options: SelectOption[];\n disabled?: boolean;\n onRemove: (value: string) => void;\n};\n\nfunction MultiValueChips({ options, disabled, onRemove }: MultiValueChipsProps) {\n const [containerWidth, setContainerWidth] = useState(0);\n const [chipWidths, setChipWidths] = useState<Record<string, number>>({});\n const [ellipsisWidth, setEllipsisWidth] = useState(FALLBACK_ELLIPSIS_WIDTH);\n\n useEffect(() => {\n setChipWidths((current) => {\n const validValues = new Set(options.map((option) => option.value));\n const keys = Object.keys(current);\n if (keys.every((key) => validValues.has(key))) return current;\n\n const next: Record<string, number> = {};\n for (const key of keys) {\n if (validValues.has(key)) next[key] = current[key];\n }\n return next;\n });\n }, [options]);\n\n const { visible, hasOverflow } = useMemo(\n () => resolveVisibleOptions(options, containerWidth, chipWidths, ellipsisWidth),\n [chipWidths, containerWidth, ellipsisWidth, options],\n );\n\n const handleContainerLayout = (event: LayoutChangeEvent) => {\n const next = Math.floor(event.nativeEvent.layout.width);\n setContainerWidth((current) => (current === next ? current : next));\n };\n\n const handleChipLayout = (value: string, event: LayoutChangeEvent) => {\n const next = Math.ceil(event.nativeEvent.layout.width);\n setChipWidths((current) => (current[value] === next ? current : { ...current, [value]: next }));\n };\n\n const handleEllipsisLayout = (event: LayoutChangeEvent) => {\n const next = Math.ceil(event.nativeEvent.layout.width);\n setEllipsisWidth((current) => (current === next ? current : next));\n };\n\n return (\n <View style={styles.multiValueRoot}>\n {/* Hidden copy of every chip; RN has no synchronous text measurement. */}\n <View pointerEvents=\"none\" style={styles.measureRow}>\n {options.map((option) => (\n <View\n key={`measure-${option.value}`}\n style={styles.chip}\n onLayout={(event) => handleChipLayout(option.value, event)}\n >\n <Text style={styles.chipLabel} numberOfLines={1}>\n {option.label}\n </Text>\n <Text style={styles.chipRemove}>×</Text>\n </View>\n ))}\n <View style={styles.ellipsis} onLayout={handleEllipsisLayout}>\n <Text style={styles.ellipsisText}>...</Text>\n </View>\n </View>\n\n <View style={styles.chipsRow} onLayout={handleContainerLayout}>\n {visible.map((option) => (\n <View key={option.value} style={styles.chip}>\n <Text style={styles.chipLabel} numberOfLines={1}>\n {option.label}\n </Text>\n <Pressable\n onPress={(event) => {\n // Keep the surrounding trigger Pressable from toggling the menu.\n event?.stopPropagation?.();\n onRemove(option.value);\n }}\n disabled={disabled}\n hitSlop={6}\n accessibilityRole=\"button\"\n accessibilityLabel={`Remove ${option.label}`}\n >\n <Text style={styles.chipRemove}>×</Text>\n </Pressable>\n </View>\n ))}\n\n {hasOverflow ? (\n <View style={styles.ellipsis}>\n <Text style={styles.ellipsisText}>...</Text>\n </View>\n ) : null}\n </View>\n </View>\n );\n}\n\nexport const Select = forwardRef<ComponentRef<typeof View>, SelectProps>(\n function Select(props, forwardedRef) {\n const {\n label,\n showLabel = true,\n hint,\n showHint = true,\n placeholder,\n options,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n disabled = false,\n error = false,\n leftIcon,\n showLeftIcon = true,\n showSearch = true,\n searchPlaceholder = \"Search...\",\n onSearchChange,\n loading = false,\n emptyText = \"No results\",\n style,\n className,\n accessibilityLabel,\n // Pulled out only to keep them off `rest` (which is spread onto the root View);\n // the real values are read from `props` directly below to preserve discriminated typing.\n multiple: _multiple,\n value: _value,\n defaultValue: _defaultValue,\n onValueChange: _onValueChange,\n ...rest\n } = props;\n\n const multiple = props.multiple === true;\n const valueProp = props.value;\n const rootRef = useRef<ComponentRef<typeof View>>(null);\n const triggerRef = useRef<ComponentRef<typeof Pressable>>(null);\n const searchInputRef = useRef<ComponentRef<typeof TextInput>>(null);\n const setRootRef = useMemo(() => mergeRefs(rootRef, forwardedRef), [forwardedRef]);\n const isOpenControlled = typeof openProp === \"boolean\";\n const isValueControlled = valueProp !== undefined;\n\n const [uncontrolledSingle, setUncontrolledSingle] = useState(\n !multiple ? ((props as SelectSingleProps).defaultValue ?? \"\") : \"\",\n );\n const [uncontrolledMultiple, setUncontrolledMultiple] = useState<string[]>(\n multiple ? ((props as SelectMultipleProps).defaultValue ?? []) : [],\n );\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const [searchQuery, setSearchQuery] = useState(\"\");\n const [hoveredValue, setHoveredValue] = useState<string | null>(null);\n\n const selectedValues = useMemo(() => {\n const current = isValueControlled\n ? valueProp\n : multiple\n ? uncontrolledMultiple\n : uncontrolledSingle;\n return toArray(current);\n }, [isValueControlled, multiple, valueProp, uncontrolledMultiple, uncontrolledSingle]);\n\n const isOpen = isOpenControlled ? openProp : uncontrolledOpen;\n\n // Mapped from selectedValues (not filtered from options) to preserve selection order.\n const selectedOptions = useMemo(\n () =>\n selectedValues\n .map((value) => options.find((option) => option.value === value))\n .filter((option): option is SelectOption => option != null),\n [options, selectedValues],\n );\n const hasValue = selectedOptions.length > 0;\n\n const isExternalSearch = onSearchChange != null;\n\n const filteredOptions = useMemo(() => {\n if (isExternalSearch) return options;\n const query = searchQuery.trim().toLowerCase();\n if (!query) return options;\n return options.filter((option) => option.label.toLowerCase().includes(query));\n }, [isExternalSearch, options, searchQuery]);\n\n useApplyWebClassName(rootRef, className);\n\n const setOpen = useCallback(\n (next: boolean) => {\n if (!isOpenControlled) setUncontrolledOpen(next);\n onOpenChange?.(next);\n if (next) {\n // Seed keyboard highlight from the current selection so Arrow keys\n // start from a sensible position.\n setHoveredValue(selectedValues[0] ?? null);\n } else {\n setSearchQuery(\"\");\n setHoveredValue(null);\n // Let the parent reset its externally fetched options.\n onSearchChange?.(\"\");\n }\n },\n [isOpenControlled, onOpenChange, onSearchChange, selectedValues],\n );\n\n const handleSearchChange = (text: string) => {\n setSearchQuery(text);\n onSearchChange?.(text);\n };\n\n // Close on outside click (web only; native has no document-level events).\n useEffect(() => {\n if (Platform.OS !== \"web\" || !isOpen) return;\n\n const handlePointerDown = (event: MouseEvent | TouchEvent) => {\n const root = rootRef.current as unknown as { contains?: (node: Node) => boolean } | null;\n const target = event.target;\n if (root?.contains && target instanceof Node && !root.contains(target)) {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handlePointerDown);\n document.addEventListener(\"touchstart\", handlePointerDown);\n return () => {\n document.removeEventListener(\"mousedown\", handlePointerDown);\n document.removeEventListener(\"touchstart\", handlePointerDown);\n };\n }, [isOpen, setOpen]);\n\n const commitValues = useCallback(\n (nextValues: string[]) => {\n if (multiple) {\n if (!isValueControlled) setUncontrolledMultiple(nextValues);\n (props as SelectMultipleProps).onValueChange?.(nextValues);\n return;\n }\n\n const nextValue = nextValues[0] ?? \"\";\n if (!isValueControlled) setUncontrolledSingle(nextValue);\n (props as SelectSingleProps).onValueChange?.(nextValue);\n },\n [isValueControlled, multiple, props],\n );\n\n const handleTriggerPress = () => {\n if (disabled) return;\n setOpen(!isOpen);\n };\n\n const handleSelect = useCallback(\n (optionValue: string) => {\n if (disabled) return;\n if (multiple) {\n const exists = selectedValues.includes(optionValue);\n const nextValues = exists\n ? selectedValues.filter((value) => value !== optionValue)\n : [...selectedValues, optionValue];\n commitValues(nextValues);\n return;\n }\n\n commitValues([optionValue]);\n setOpen(false);\n },\n [commitValues, disabled, multiple, selectedValues, setOpen],\n );\n\n const handleRemoveChip = (optionValue: string) => {\n if (disabled || !multiple) return;\n commitValues(selectedValues.filter((value) => value !== optionValue));\n };\n\n const focusTrigger = useCallback(() => {\n const node = triggerRef.current as unknown as { focus?: () => void } | null;\n node?.focus?.();\n }, []);\n\n const closeAndFocusTrigger = useCallback(() => {\n setOpen(false);\n focusTrigger();\n }, [focusTrigger, setOpen]);\n\n // ARIA combobox keyboard pattern (web only): Arrow keys move the highlighted\n // option, Enter/Space selects it, Escape closes and returns focus to the trigger.\n useEffect(() => {\n if (Platform.OS !== \"web\") return;\n\n const isTriggerFocused = () => document.activeElement === triggerRef.current;\n const isSearchFocused = () => document.activeElement === searchInputRef.current;\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (!isOpen) {\n if (!isTriggerFocused() || disabled) return;\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\" || event.key === \"Enter\") {\n event.preventDefault();\n setOpen(true);\n }\n return;\n }\n\n if (event.key === \"Escape\") {\n event.preventDefault();\n closeAndFocusTrigger();\n return;\n }\n\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n setHoveredValue((current) => {\n if (filteredOptions.length === 0) return current;\n const currentIndex = filteredOptions.findIndex((option) => option.value === current);\n const delta = event.key === \"ArrowDown\" ? 1 : -1;\n const nextIndex =\n currentIndex === -1\n ? delta === 1\n ? 0\n : filteredOptions.length - 1\n : Math.min(Math.max(currentIndex + delta, 0), filteredOptions.length - 1);\n return filteredOptions[nextIndex]?.value ?? current;\n });\n return;\n }\n\n // Home/End and Space are left alone while typing in the search field\n // (text-cursor navigation and literal spaces must keep working).\n if (\n isSearchFocused() &&\n (event.key === \"Home\" || event.key === \"End\" || event.key === \" \")\n ) {\n return;\n }\n\n if (event.key === \"Home\" || event.key === \"End\") {\n if (filteredOptions.length === 0) return;\n event.preventDefault();\n setHoveredValue(\n event.key === \"Home\"\n ? filteredOptions[0].value\n : filteredOptions[filteredOptions.length - 1].value,\n );\n return;\n }\n\n if (event.key === \"Enter\" || event.key === \" \") {\n if (hoveredValue == null) return;\n event.preventDefault();\n handleSelect(hoveredValue);\n if (!multiple) focusTrigger();\n }\n };\n\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [\n isOpen,\n disabled,\n filteredOptions,\n hoveredValue,\n multiple,\n closeAndFocusTrigger,\n focusTrigger,\n handleSelect,\n setOpen,\n ]);\n\n const leftIconNode = renderStatefulIcon(leftIcon, UserIcon, {\n size: ICON_SIZE,\n color: error ? colors.red : isOpen ? colors.primary : colors.grey100,\n });\n const hasLeftIcon = showLeftIcon || leftIcon != null;\n\n const triggerBorderColor = error\n ? colors.redMuted\n : isOpen\n ? colors.primaryMuted\n : colors.grey700;\n const triggerTextColor = hasValue\n ? error\n ? colors.red\n : colors.white\n : error\n ? colors.red\n : colors.grey100;\n const labelColor = error ? colors.red : colors.white;\n const hintColor = error ? colors.red : colors.grey100;\n\n const singleLabel = selectedOptions[0]?.label ?? placeholder;\n const resolvedAccessibilityLabel =\n accessibilityLabel ?? (typeof label === \"string\" ? label : undefined);\n\n return (\n <View\n {...rest}\n ref={setRootRef}\n style={[styles.root, isOpen && styles.rootOpen, disabled && styles.disabled, style]}\n accessibilityState={{ disabled, expanded: isOpen }}\n >\n {showLabel && label ? (\n <Text style={[styles.label, { color: labelColor }]}>{label}</Text>\n ) : null}\n\n <View style={[styles.triggerWrap, isOpen && styles.triggerWrapOpen]}>\n <Pressable\n ref={triggerRef}\n onPress={handleTriggerPress}\n disabled={disabled}\n accessibilityRole=\"combobox\"\n accessibilityLabel={resolvedAccessibilityLabel}\n accessibilityState={{ disabled, expanded: isOpen }}\n style={[\n styles.trigger,\n {\n borderColor: triggerBorderColor,\n backgroundColor: colors.grey700,\n },\n ]}\n >\n {hasLeftIcon ? <View style={styles.iconSlot}>{leftIconNode}</View> : null}\n\n <View style={styles.triggerContent}>\n {multiple && hasValue ? (\n <MultiValueChips\n options={selectedOptions}\n disabled={disabled}\n onRemove={handleRemoveChip}\n />\n ) : (\n <Text style={[styles.triggerText, { color: triggerTextColor }]} numberOfLines={1}>\n {multiple ? placeholder : singleLabel}\n </Text>\n )}\n </View>\n\n <View style={[styles.iconSlot, isOpen && styles.chevronOpen]}>\n <ChevronDownIcon size={ICON_SIZE} color={isOpen ? colors.primary : colors.grey100} />\n </View>\n </Pressable>\n\n {isOpen ? (\n <View style={styles.menu}>\n {showSearch ? (\n <View style={styles.searchField}>\n <View style={styles.iconSlot}>\n <SearchIcon size={ICON_SIZE} color={colors.grey100} />\n </View>\n <TextInput\n ref={searchInputRef}\n value={searchQuery}\n onChangeText={handleSearchChange}\n editable={!disabled}\n placeholder={searchPlaceholder}\n placeholderTextColor={colors.grey100}\n style={[\n styles.searchInput,\n Platform.OS === \"web\" ? styles.searchInputWeb : null,\n Platform.OS === \"android\" ? styles.searchInputAndroid : null,\n ]}\n accessibilityLabel={searchPlaceholder}\n />\n </View>\n ) : null}\n\n <ScrollView\n style={styles.optionList}\n contentContainerStyle={styles.optionListContent}\n keyboardShouldPersistTaps=\"handled\"\n showsVerticalScrollIndicator={false}\n >\n {loading ? (\n <View style={styles.statusRow}>\n <Text style={styles.statusText}>Loading...</Text>\n </View>\n ) : filteredOptions.length === 0 ? (\n <View style={styles.statusRow}>\n <Text style={styles.statusText}>{emptyText}</Text>\n </View>\n ) : null}\n\n {!loading &&\n filteredOptions.map((option) => {\n const isSelected = selectedValues.includes(option.value);\n const isHovered = hoveredValue === option.value;\n const visualState: ItemVisualState = isSelected\n ? \"selected\"\n : isHovered\n ? \"hover\"\n : \"default\";\n\n return (\n <Pressable\n key={option.value}\n onPress={() => handleSelect(option.value)}\n disabled={disabled}\n onHoverIn={() => setHoveredValue(option.value)}\n onHoverOut={() =>\n setHoveredValue((current) => (current === option.value ? null : current))\n }\n onPressIn={() => setHoveredValue(option.value)}\n onPressOut={() =>\n setHoveredValue((current) => (current === option.value ? null : current))\n }\n accessibilityRole={multiple ? \"checkbox\" : \"button\"}\n accessibilityState={{ selected: isSelected, checked: isSelected, disabled }}\n style={[\n styles.item,\n {\n backgroundColor: itemBackground(visualState),\n },\n ]}\n >\n {multiple ? (\n <View pointerEvents=\"none\" style={styles.itemCheckbox}>\n <Checkbox value={isSelected} variant=\"light\" />\n </View>\n ) : null}\n <Text style={styles.itemLabel} numberOfLines={1}>\n {option.label}\n </Text>\n </Pressable>\n );\n })}\n </ScrollView>\n </View>\n ) : null}\n </View>\n\n {showHint && hint ? <Text style={[styles.hint, { color: hintColor }]}>{hint}</Text> : null}\n </View>\n );\n },\n);\n\nconst styles = StyleSheet.create({\n root: {\n width: DEFAULT_WIDTH,\n gap: 8,\n alignSelf: \"flex-start\",\n },\n rootOpen: {\n zIndex: 30,\n },\n disabled: {\n opacity: 0.6,\n },\n label: {\n ...selectTypography.label,\n },\n triggerWrap: {\n position: \"relative\",\n zIndex: 1,\n },\n triggerWrapOpen: {\n zIndex: 20,\n },\n trigger: {\n height: TRIGGER_HEIGHT,\n borderRadius: TRIGGER_RADIUS,\n borderWidth: 1,\n paddingVertical: 12,\n paddingHorizontal: 16,\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 10,\n overflow: \"hidden\",\n },\n triggerContent: {\n flex: 1,\n justifyContent: \"center\",\n minWidth: 0,\n overflow: \"hidden\",\n },\n triggerText: {\n ...selectTypography.field,\n },\n multiValueRoot: {\n width: \"100%\",\n position: \"relative\",\n },\n measureRow: {\n position: \"absolute\",\n left: 0,\n top: 0,\n flexDirection: \"row\",\n opacity: 0,\n zIndex: -1,\n },\n chipsRow: {\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: CHIP_GAP,\n overflow: \"hidden\",\n },\n chip: {\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 4,\n paddingVertical: 2,\n paddingHorizontal: 8,\n borderRadius: 999,\n backgroundColor: colors.grey600,\n flexShrink: 0,\n },\n chipLabel: {\n ...selectTypography.hint,\n color: colors.white,\n maxWidth: 120,\n },\n chipRemove: {\n color: colors.grey100,\n fontSize: 14,\n lineHeight: 14,\n },\n ellipsis: {\n flexShrink: 0,\n paddingHorizontal: 2,\n },\n ellipsisText: {\n ...selectTypography.field,\n color: colors.white,\n lineHeight: 16,\n },\n iconSlot: {\n width: ICON_SIZE,\n height: ICON_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n chevronOpen: {\n transform: [{ rotate: \"180deg\" }],\n },\n menu: {\n position: \"absolute\",\n top: \"100%\",\n left: 0,\n right: 0,\n marginTop: 8,\n zIndex: 10,\n borderRadius: MENU_RADIUS,\n padding: 12,\n gap: 8,\n backgroundColor: colors.grey700,\n ...Platform.select({\n web: {\n boxShadow: `0 8px 24px ${colors.black}73`,\n },\n default: {\n elevation: 8,\n },\n }),\n },\n optionList: {\n maxHeight: MENU_MAX_LIST_HEIGHT,\n },\n optionListContent: {\n gap: 8,\n },\n statusRow: {\n minHeight: 43,\n padding: 12,\n justifyContent: \"center\",\n },\n statusText: {\n ...selectTypography.field,\n color: colors.grey100,\n },\n searchField: {\n height: 40,\n borderRadius: ITEM_RADIUS,\n paddingHorizontal: 12,\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 8,\n backgroundColor: colors.grey800,\n },\n searchInput: {\n ...selectTypography.field,\n flex: 1,\n color: colors.white,\n paddingVertical: 0,\n margin: 0,\n },\n searchInputWeb: {\n outlineStyle: \"none\",\n } as TextStyle,\n searchInputAndroid: {\n includeFontPadding: false,\n },\n item: {\n minHeight: 43,\n borderRadius: ITEM_RADIUS,\n padding: 12,\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 8,\n },\n itemCheckbox: {\n flexShrink: 0,\n },\n itemLabel: {\n ...selectTypography.field,\n color: colors.white,\n flex: 1,\n },\n hint: {\n ...selectTypography.hint,\n },\n});\n","import { forwardRef, useMemo, useRef, useState, type ComponentRef } from \"react\";\nimport {\n Platform,\n StyleSheet,\n Text,\n TextInput,\n View,\n type StyleProp,\n type TextStyle,\n type ViewStyle,\n type TextInputProps,\n} from \"react-native\";\nimport { colors, textareaTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport interface TextareaProps extends Omit<TextInputProps, \"style\" | \"editable\" | \"multiline\"> {\n label?: string;\n showLabel?: boolean;\n hint?: string;\n showHint?: boolean;\n /** External — validation / form error. */\n error?: boolean;\n /** External — non-interactive. */\n disabled?: boolean;\n style?: StyleProp<ViewStyle>;\n fieldStyle?: StyleProp<ViewStyle>;\n inputStyle?: StyleProp<TextStyle>;\n className?: string;\n inputClassName?: string;\n}\n\ntype VisualState = \"default\" | \"filled\" | \"active\" | \"error\" | \"disabled\";\n\ntype FieldChrome = {\n borderColor: string;\n backgroundColor: string;\n textColor: string;\n placeholderColor: string;\n labelColor: string;\n hintColor: string;\n};\n\nconst DEFAULT_WIDTH = 308;\nconst FIELD_HEIGHT = 100;\nconst FIELD_RADIUS = 16;\nconst FIELD_PADDING_VERTICAL = 12;\nconst FIELD_PADDING_HORIZONTAL = 16;\n\n/** default / filled / active come from value + focus; error / disabled from props. */\nfunction resolveVisualState({\n disabled,\n error,\n focused,\n hasValue,\n}: {\n disabled: boolean;\n error: boolean;\n focused: boolean;\n hasValue: boolean;\n}): VisualState {\n if (disabled) return \"disabled\";\n if (error) return \"error\";\n if (focused) return \"active\";\n if (hasValue) return \"filled\";\n return \"default\";\n}\n\nfunction chromeFor(state: VisualState): FieldChrome {\n const base: FieldChrome = {\n borderColor: colors.grey700,\n backgroundColor: colors.grey700,\n textColor: colors.white,\n placeholderColor: colors.grey100,\n labelColor: colors.white,\n hintColor: colors.grey100,\n };\n\n switch (state) {\n case \"active\":\n return {\n ...base,\n borderColor: colors.primaryMuted,\n };\n case \"error\":\n return {\n ...base,\n borderColor: colors.redMuted,\n textColor: colors.red,\n placeholderColor: colors.red,\n labelColor: colors.red,\n hintColor: colors.red,\n };\n case \"filled\":\n return base;\n case \"disabled\":\n return {\n ...base,\n textColor: colors.grey0,\n };\n default:\n return base;\n }\n}\n\nexport const Textarea = forwardRef<ComponentRef<typeof TextInput>, TextareaProps>(function Textarea(\n {\n label = \"Label\",\n showLabel = true,\n hint = \"Hint\",\n showHint = true,\n placeholder = \"placeholder\",\n disabled = false,\n error = false,\n value,\n defaultValue,\n onChangeText,\n onFocus,\n onBlur,\n style,\n fieldStyle,\n inputStyle,\n className,\n inputClassName,\n accessibilityLabel,\n ...textInputProps\n },\n forwardedRef,\n) {\n const rootRef = useRef<ComponentRef<typeof View>>(null);\n const inputRef = useRef<ComponentRef<typeof TextInput>>(null);\n const setInputRef = useMemo(() => mergeRefs(inputRef, forwardedRef), [forwardedRef]);\n const [focused, setFocused] = useState(false);\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue ?? \"\");\n\n const isControlled = typeof value === \"string\";\n const currentValue = isControlled ? value : uncontrolledValue;\n const hasValue = currentValue.length > 0;\n\n const visualState = resolveVisualState({ disabled, error, focused, hasValue });\n const chrome = chromeFor(visualState);\n const resolvedAccessibilityLabel = accessibilityLabel ?? (showLabel ? undefined : label);\n\n useApplyWebClassName(rootRef, className);\n useApplyWebClassName(inputRef, inputClassName);\n\n return (\n <View ref={rootRef} style={[styles.root, disabled && styles.disabled, style]}>\n {showLabel && label ? (\n <Text style={[styles.label, { color: chrome.labelColor }]}>{label}</Text>\n ) : null}\n\n <View\n style={[\n styles.field,\n {\n borderColor: chrome.borderColor,\n backgroundColor: chrome.backgroundColor,\n },\n fieldStyle,\n ]}\n >\n <TextInput\n ref={setInputRef}\n {...textInputProps}\n multiline\n textAlignVertical=\"top\"\n value={isControlled ? value : undefined}\n defaultValue={isControlled ? undefined : defaultValue}\n editable={!disabled}\n placeholder={placeholder}\n placeholderTextColor={chrome.placeholderColor}\n onChangeText={(text) => {\n if (!isControlled) setUncontrolledValue(text);\n onChangeText?.(text);\n }}\n onFocus={(event) => {\n setFocused(true);\n onFocus?.(event);\n }}\n onBlur={(event) => {\n setFocused(false);\n onBlur?.(event);\n }}\n style={[\n styles.input,\n textareaTypography.field,\n { color: chrome.textColor },\n Platform.OS === \"web\" ? styles.inputWeb : null,\n Platform.OS === \"android\" ? styles.inputAndroid : null,\n inputStyle,\n ]}\n accessibilityLabel={resolvedAccessibilityLabel}\n accessibilityState={{ disabled }}\n />\n </View>\n\n {showHint && hint ? (\n <Text style={[styles.hint, { color: chrome.hintColor }]}>{hint}</Text>\n ) : null}\n </View>\n );\n});\n\nconst styles = StyleSheet.create({\n root: {\n width: DEFAULT_WIDTH,\n gap: 8,\n alignSelf: \"flex-start\",\n },\n disabled: {\n opacity: 0.6,\n },\n label: {\n ...textareaTypography.label,\n },\n field: {\n height: FIELD_HEIGHT,\n borderRadius: FIELD_RADIUS,\n borderWidth: 1,\n paddingTop: FIELD_PADDING_VERTICAL,\n paddingBottom: FIELD_PADDING_VERTICAL,\n paddingLeft: FIELD_PADDING_HORIZONTAL,\n paddingRight: FIELD_PADDING_HORIZONTAL,\n },\n input: {\n flex: 1,\n paddingVertical: 0,\n margin: 0,\n },\n inputWeb: {\n outlineStyle: \"none\",\n resize: \"none\",\n } as TextStyle,\n inputAndroid: {\n includeFontPadding: false,\n },\n hint: {\n ...textareaTypography.hint,\n },\n});\n","import {\n forwardRef,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ComponentRef,\n type ReactNode,\n} from \"react\";\nimport {\n Animated,\n Easing,\n Pressable,\n StyleSheet,\n Text,\n type PressableProps,\n type StyleProp,\n type TextStyle,\n type ViewStyle,\n} from \"react-native\";\nimport { colors, inputTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport interface ToggleProps extends Omit<\n PressableProps,\n \"onPress\" | \"disabled\" | \"style\" | \"children\" | \"hitSlop\"\n> {\n value?: boolean;\n defaultValue?: boolean;\n onValueChange?: (value: boolean) => void;\n disabled?: boolean;\n /** Visible label rendered next to the track. */\n label?: string;\n children?: ReactNode;\n /** Accessible name for screen readers; falls back to `label`/`children` when omitted. */\n accessibilityLabel?: string;\n style?: StyleProp<ViewStyle>;\n labelStyle?: StyleProp<TextStyle>;\n className?: string;\n hitSlop?: PressableProps[\"hitSlop\"];\n}\n\nconst TRACK_WIDTH = 44;\nconst TRACK_HEIGHT = 24;\nconst TRACK_RADIUS = 43;\nconst TRACK_PADDING = 4;\nconst THUMB_SIZE = TRACK_HEIGHT - TRACK_PADDING * 2;\nconst THUMB_TRAVEL = TRACK_WIDTH - TRACK_PADDING * 2 - THUMB_SIZE;\nconst ANIMATION_DURATION = 300;\n\nexport const Toggle = forwardRef<ComponentRef<typeof Pressable>, ToggleProps>(function Toggle(\n {\n value,\n defaultValue = false,\n onValueChange,\n disabled = false,\n label,\n children,\n accessibilityLabel,\n style,\n labelStyle,\n className,\n hitSlop = 10,\n ...rest\n },\n forwardedRef,\n) {\n const containerRef = useRef<ComponentRef<typeof Pressable>>(null);\n const isControlled = typeof value === \"boolean\";\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const isActive = isControlled ? value : uncontrolledValue;\n const labelContent = children ?? label;\n const resolvedAccessibilityLabel =\n accessibilityLabel ?? (typeof labelContent === \"string\" ? labelContent : undefined);\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n\n const progress = useRef(new Animated.Value(isActive ? 1 : 0)).current;\n\n useApplyWebClassName(containerRef, className);\n\n useEffect(() => {\n Animated.timing(progress, {\n toValue: isActive ? 1 : 0,\n duration: ANIMATION_DURATION,\n easing: Easing.out(Easing.ease),\n useNativeDriver: false,\n }).start();\n }, [isActive, progress]);\n\n const handlePress = () => {\n if (disabled) return;\n const next = !isActive;\n if (!isControlled) setUncontrolledValue(next);\n onValueChange?.(next);\n };\n\n const trackBackgroundColor = progress.interpolate({\n inputRange: [0, 1],\n outputRange: [colors.grey700, colors.primary],\n });\n\n const thumbTranslateX = progress.interpolate({\n inputRange: [0, 1],\n outputRange: [0, THUMB_TRAVEL],\n });\n\n return (\n <Pressable\n {...rest}\n ref={setContainerRef}\n onPress={handlePress}\n disabled={disabled}\n hitSlop={hitSlop}\n accessibilityRole=\"switch\"\n accessibilityLabel={resolvedAccessibilityLabel}\n accessibilityState={{ checked: isActive, disabled }}\n style={[styles.pressable, disabled && styles.disabled, style]}\n >\n <Animated.View\n style={[\n styles.track,\n {\n backgroundColor: trackBackgroundColor,\n },\n ]}\n >\n <Animated.View\n style={[\n styles.thumb,\n {\n transform: [{ translateX: thumbTranslateX }],\n },\n ]}\n />\n </Animated.View>\n\n {labelContent != null && labelContent !== false ? (\n typeof labelContent === \"string\" || typeof labelContent === \"number\" ? (\n <Text style={[styles.label, labelStyle]}>{labelContent}</Text>\n ) : (\n labelContent\n )\n ) : null}\n </Pressable>\n );\n});\n\nconst styles = StyleSheet.create({\n pressable: {\n flexDirection: \"row\",\n alignItems: \"center\",\n alignSelf: \"flex-start\",\n gap: 10,\n },\n disabled: {\n opacity: 0.6,\n },\n track: {\n width: TRACK_WIDTH,\n height: TRACK_HEIGHT,\n borderRadius: TRACK_RADIUS,\n padding: TRACK_PADDING,\n justifyContent: \"center\",\n },\n thumb: {\n width: THUMB_SIZE,\n height: THUMB_SIZE,\n borderRadius: THUMB_SIZE / 2,\n backgroundColor: colors.white,\n },\n label: {\n ...inputTypography.field,\n color: colors.white,\n },\n});\n","import { forwardRef, useMemo, useRef, useState, type ComponentRef } from \"react\";\nimport {\n Pressable,\n StyleSheet,\n Text,\n View,\n type PressableProps,\n type StyleProp,\n type TextStyle,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport { StarFilledIcon, StarIcon } from \"../../icons\";\nimport { colors, ratingTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nconst STAR_COUNT = 5;\nconst BASE_ITEM_SIZE = 16;\nconst ICON_WIDTH_RATIO = 12.57 / BASE_ITEM_SIZE;\nconst ICON_HEIGHT_RATIO = 11.98 / BASE_ITEM_SIZE;\nconst STAR_GAP_RATIO = 2 / BASE_ITEM_SIZE;\n\nexport interface RatingInputProps extends Omit<ViewProps, \"style\" | \"children\"> {\n value?: number;\n defaultValue?: number;\n onValueChange?: (value: number) => void;\n showValue?: boolean;\n precision?: number;\n /** Star item size. Glyph dimensions and default spacing scale with it. */\n size?: number;\n /** Overrides the proportional spacing between star items. */\n starGap?: number;\n readOnly?: boolean;\n disabled?: boolean;\n style?: StyleProp<ViewStyle>;\n valueStyle?: StyleProp<TextStyle>;\n className?: string;\n hitSlop?: PressableProps[\"hitSlop\"];\n accessibilityLabel?: string;\n}\n\nfunction clamp(value: number) {\n return Math.max(0, Math.min(value, STAR_COUNT));\n}\n\nexport const RatingInput = forwardRef<ComponentRef<typeof View>, RatingInputProps>(\n function RatingInput(\n {\n value,\n defaultValue = 0,\n onValueChange,\n showValue = true,\n precision = 1,\n size = 20,\n starGap,\n readOnly = false,\n disabled = false,\n style,\n valueStyle,\n className,\n hitSlop = 6,\n accessibilityLabel,\n ...rest\n },\n forwardedRef,\n ) {\n const containerRef = useRef<ComponentRef<typeof View>>(null);\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n const isControlled = value !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = useState(() => clamp(defaultValue));\n const selectedValue = clamp(isControlled ? value : uncontrolledValue);\n const selectedStarCount = Math.round(selectedValue);\n const iconWidth = size * ICON_WIDTH_RATIO;\n const iconHeight = size * ICON_HEIGHT_RATIO;\n const resolvedStarGap = starGap ?? size * STAR_GAP_RATIO;\n const resolvedAccessibilityLabel =\n accessibilityLabel ?? (readOnly ? `${selectedValue} out of ${STAR_COUNT} stars` : \"Rating\");\n\n useApplyWebClassName(containerRef, className);\n\n const selectValue = (nextValue: number) => {\n if (disabled || nextValue === selectedValue) return;\n if (!isControlled) setUncontrolledValue(nextValue);\n onValueChange?.(nextValue);\n };\n\n return (\n <View\n {...rest}\n ref={setContainerRef}\n style={[styles.root, disabled && styles.disabled, style]}\n >\n {showValue ? (\n <Text numberOfLines={1} style={[styles.value, valueStyle]}>\n {selectedValue.toFixed(precision)}\n </Text>\n ) : null}\n\n <View\n accessibilityRole={readOnly ? \"image\" : \"radiogroup\"}\n accessibilityLabel={resolvedAccessibilityLabel}\n accessibilityState={{ disabled }}\n style={[styles.stars, { gap: resolvedStarGap }]}\n >\n {Array.from({ length: STAR_COUNT }, (_, index) => {\n const starValue = index + 1;\n const isSelected = starValue <= selectedStarCount;\n const icon = isSelected ? (\n <StarFilledIcon size={iconWidth} height={iconHeight} />\n ) : (\n <StarIcon size={iconWidth} height={iconHeight} />\n );\n const itemStyle = [styles.starItem, { width: size, height: size }];\n\n if (readOnly) {\n return (\n <View key={starValue} style={itemStyle}>\n {icon}\n </View>\n );\n }\n\n return (\n <Pressable\n key={starValue}\n disabled={disabled}\n hitSlop={hitSlop}\n onPress={() => selectValue(starValue)}\n accessibilityRole=\"radio\"\n accessibilityLabel={`${starValue} star${starValue === 1 ? \"\" : \"s\"}`}\n accessibilityState={{ checked: isSelected, disabled }}\n style={itemStyle}\n >\n {icon}\n </Pressable>\n );\n })}\n </View>\n </View>\n );\n },\n);\n\nconst styles = StyleSheet.create({\n root: {\n flexDirection: \"row\",\n alignItems: \"center\",\n flexWrap: \"nowrap\",\n alignSelf: \"flex-start\",\n gap: 16,\n },\n stars: {\n flexDirection: \"row\",\n alignItems: \"center\",\n },\n starItem: {\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n value: {\n ...ratingTypography,\n color: colors.white,\n },\n disabled: {\n opacity: 0.5,\n },\n});\n","import { forwardRef, useEffect, useMemo, useRef, useState, type ComponentRef } from \"react\";\nimport {\n Image,\n Pressable,\n StyleSheet,\n Text,\n View,\n type StyleProp,\n type TextStyle,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport { UserIcon } from \"../../icons\";\nimport { colors, commentCardTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\nimport { RatingInput } from \"../RatingInput\";\n\nexport interface CommentCardProps extends Omit<ViewProps, \"style\" | \"children\"> {\n userName: string;\n date: string;\n commentText: string;\n rating: number;\n imageUrl?: string | null;\n maxCommentLines?: number;\n maxCommentLength?: number;\n readMoreLabel?: string;\n readLessLabel?: string;\n onExpandedChange?: (expanded: boolean) => void;\n style?: StyleProp<ViewStyle>;\n commentStyle?: StyleProp<TextStyle>;\n className?: string;\n}\n\nconst CARD_WIDTH = 370;\nconst CARD_MIN_HEIGHT = 173;\nconst AVATAR_SIZE = 44;\n\nexport const CommentCard = forwardRef<ComponentRef<typeof View>, CommentCardProps>(\n function CommentCard(\n {\n userName,\n date,\n commentText,\n rating,\n imageUrl,\n maxCommentLines = 3,\n maxCommentLength = 111,\n readMoreLabel = \"Դիտել ավելին\",\n readLessLabel = \"Փակել\",\n onExpandedChange,\n style,\n commentStyle,\n className,\n ...rest\n },\n forwardedRef,\n ) {\n const containerRef = useRef<ComponentRef<typeof View>>(null);\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n const [imageFailed, setImageFailed] = useState(false);\n const [expanded, setExpanded] = useState(false);\n const [actionHovered, setActionHovered] = useState(false);\n const hasImage = Boolean(imageUrl) && !imageFailed;\n const shouldShowAction = Array.from(commentText).length >= maxCommentLength;\n\n useApplyWebClassName(containerRef, className);\n\n useEffect(() => {\n setImageFailed(false);\n }, [imageUrl]);\n\n useEffect(() => {\n setExpanded(false);\n setActionHovered(false);\n }, [commentText, maxCommentLength, maxCommentLines]);\n\n const toggleExpanded = () => {\n const next = !expanded;\n setExpanded(next);\n onExpandedChange?.(next);\n };\n\n return (\n <View {...rest} ref={setContainerRef} style={[styles.root, style]}>\n <View style={styles.header}>\n <View style={styles.avatar}>\n {hasImage ? (\n <Image\n source={{ uri: imageUrl ?? undefined }}\n style={styles.avatarImage}\n onError={() => setImageFailed(true)}\n />\n ) : (\n <UserIcon size={20} color={colors.primary} />\n )}\n </View>\n\n <View style={styles.identity}>\n <Text numberOfLines={1} style={styles.name}>\n {userName}\n </Text>\n <Text numberOfLines={1} style={styles.date}>\n {date}\n </Text>\n </View>\n\n <RatingInput value={rating} readOnly showValue={false} size={16} />\n </View>\n\n <Text\n numberOfLines={expanded ? undefined : maxCommentLines}\n style={[styles.comment, commentStyle]}\n >\n {commentText}\n </Text>\n\n {shouldShowAction ? (\n <Pressable\n onPress={toggleExpanded}\n accessibilityRole=\"button\"\n accessibilityState={{ expanded }}\n hitSlop={6}\n onHoverIn={() => setActionHovered(true)}\n onHoverOut={() => setActionHovered(false)}\n style={styles.action}\n >\n <Text\n style={[\n styles.actionText,\n expanded && styles.closeActionText,\n actionHovered &&\n (expanded ? styles.closeActionTextHovered : styles.openActionTextHovered),\n ]}\n >\n {expanded ? readLessLabel : readMoreLabel}\n </Text>\n </Pressable>\n ) : null}\n </View>\n );\n },\n);\n\nconst styles = StyleSheet.create({\n root: {\n width: CARD_WIDTH,\n minHeight: CARD_MIN_HEIGHT,\n padding: 16,\n gap: 12,\n borderRadius: 12,\n backgroundColor: colors.grey750,\n },\n header: {\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 8,\n },\n avatar: {\n width: AVATAR_SIZE,\n height: AVATAR_SIZE,\n flexShrink: 0,\n alignItems: \"center\",\n justifyContent: \"center\",\n overflow: \"hidden\",\n borderRadius: AVATAR_SIZE / 2,\n backgroundColor: colors.grey600,\n },\n avatarImage: {\n width: AVATAR_SIZE,\n height: AVATAR_SIZE,\n },\n identity: {\n minWidth: 0,\n flex: 1,\n gap: 4,\n },\n name: {\n ...commentCardTypography.name,\n color: colors.white,\n },\n date: {\n ...commentCardTypography.date,\n color: colors.grey0,\n },\n comment: {\n ...commentCardTypography.comment,\n color: colors.white,\n },\n action: {\n alignSelf: \"flex-start\",\n marginTop: \"auto\",\n minHeight: 16,\n justifyContent: \"center\",\n },\n actionText: {\n ...commentCardTypography.action,\n color: colors.white,\n },\n closeActionText: {\n color: colors.primary,\n },\n openActionTextHovered: {\n color: colors.primary,\n },\n closeActionTextHovered: {\n color: colors.white,\n },\n});\n","import type { RangeValue } from \"./Range.types\";\n\nexport type ParsedRangeDraft =\n { kind: \"empty\" } | { kind: \"invalid\" } | { kind: \"value\"; value: number };\n\nfunction decimals(value: number) {\n const [coefficient, exponentText = \"0\"] = Math.abs(value).toString().toLowerCase().split(\"e\");\n const [, fraction = \"\"] = coefficient.split(\".\");\n return Math.max(0, fraction.length - Number(exponentText));\n}\n\nexport function clampAndSnap(value: number, min: number, max: number, step: number) {\n const clamped = Math.min(max, Math.max(min, value));\n const snapped = min + Math.round((clamped - min) / step) * step;\n const precision = Math.min(15, Math.max(decimals(min), decimals(step)));\n return Number(Math.min(max, Math.max(min, snapped)).toFixed(precision));\n}\n\nexport function clampRangeValue(value: number, min: number, max: number) {\n return Math.min(max, Math.max(min, value));\n}\n\nexport function snapRangeDelta(start: number, delta: number, step: number) {\n const steps = Math.round(Math.abs(delta) / step) * Math.sign(delta);\n const precision = Math.min(15, Math.max(decimals(start), decimals(step)));\n return Number((start + steps * step).toFixed(precision));\n}\n\nexport function parseRangeDraft(\n draft: string,\n parseValue: (value: string) => number | undefined,\n): ParsedRangeDraft {\n if (!draft.trim()) return { kind: \"empty\" };\n\n const parsed = parseValue(draft);\n if (parsed === undefined || !Number.isFinite(parsed)) return { kind: \"invalid\" };\n\n return { kind: \"value\", value: parsed };\n}\n\nexport function normalizeRangeValue(value: RangeValue, min: number, max: number): RangeValue {\n const from =\n typeof value.from === \"number\" && Number.isFinite(value.from)\n ? clampRangeValue(value.from, min, max)\n : undefined;\n const to =\n typeof value.to === \"number\" && Number.isFinite(value.to)\n ? clampRangeValue(value.to, min, max)\n : undefined;\n\n if (from !== undefined && to !== undefined && from > to) {\n return { from: to, to: from };\n }\n\n return { from, to };\n}\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ComponentRef,\n} from \"react\";\nimport {\n PanResponder,\n Platform,\n Pressable,\n StyleSheet,\n Text,\n TextInput,\n View,\n type AccessibilityActionEvent,\n type GestureResponderEvent,\n type LayoutChangeEvent,\n type PointerEvent,\n type TextStyle,\n} from \"react-native\";\nimport { colors, fonts } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\nimport type { RangeProps, RangeValue } from \"./Range.types\";\nimport {\n clampAndSnap,\n clampRangeValue,\n normalizeRangeValue,\n parseRangeDraft,\n snapRangeDelta,\n} from \"./Range.utils\";\n\nconst DEFAULT_WIDTH = 347;\nconst TRACK_HEIGHT = 4;\nconst TRACK_HORIZONTAL_INSET = 20;\nconst THUMB_SIZE = 20;\nconst INPUT_WIDTH = 120;\n\ntype WebKeyboardEvent = {\n key?: string;\n nativeEvent?: { key?: string };\n preventDefault: () => void;\n stopPropagation: () => void;\n};\n\nfunction defaultParseValue(value: string) {\n const normalized = value.replace(/[\\s,]/g, \"\");\n if (!normalized) return undefined;\n const parsed = Number(normalized);\n return Number.isFinite(parsed) ? parsed : undefined;\n}\n\nfunction valuesEqual(a: RangeValue, b: RangeValue) {\n return a.from === b.from && a.to === b.to;\n}\n\nexport const Range = forwardRef<ComponentRef<typeof View>, RangeProps>(function Range(\n {\n min = 0,\n max = 100,\n step = 1,\n value,\n defaultValue = {},\n onValueChange,\n fromPlaceholder = \"Սկսած\",\n toPlaceholder = \"Մինչև\",\n currency = \"֏\",\n fromAccessibilityLabel = fromPlaceholder,\n toAccessibilityLabel = toPlaceholder,\n disabled = false,\n formatValue = String,\n parseValue = defaultParseValue,\n style,\n className,\n onLayout,\n ...rest\n },\n forwardedRef,\n) {\n const rootRef = useRef<ComponentRef<typeof View>>(null);\n const fromThumbRef = useRef<ComponentRef<typeof View>>(null);\n const toThumbRef = useRef<ComponentRef<typeof View>>(null);\n const setRootRef = useMemo(() => mergeRefs(rootRef, forwardedRef), [forwardedRef]);\n const lowerBound = Math.min(min, max);\n const upperBound = Math.max(min, max);\n const safeStep = Number.isFinite(step) && step > 0 ? step : 1;\n const isControlled = value !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = useState(() =>\n normalizeRangeValue(defaultValue, lowerBound, upperBound),\n );\n const resolvedValue = normalizeRangeValue(\n isControlled ? value : uncontrolledValue,\n lowerBound,\n upperBound,\n );\n const latestValueRef = useRef(resolvedValue);\n const [trackWidth, setTrackWidth] = useState(DEFAULT_WIDTH);\n const [fromDraft, setFromDraft] = useState(\n resolvedValue.from === undefined ? \"\" : formatValue(resolvedValue.from),\n );\n const [toDraft, setToDraft] = useState(\n resolvedValue.to === undefined ? \"\" : formatValue(resolvedValue.to),\n );\n const [editingField, setEditingField] = useState<\"from\" | \"to\" | null>(null);\n const [focusedThumb, setFocusedThumb] = useState<\"from\" | \"to\" | null>(null);\n const dragStartRef = useRef({ from: lowerBound, to: upperBound });\n const nativeDragTargetRef = useRef<\"from\" | \"to\" | null>(null);\n const pointerDragRef = useRef<{\n target: \"from\" | \"to\";\n pointerId: number;\n startPageX: number;\n startValue: number;\n coincident: boolean;\n } | null>(null);\n\n useApplyWebClassName(rootRef, className?.trim() || undefined);\n\n useEffect(() => {\n if (editingField !== \"from\") {\n setFromDraft(resolvedValue.from === undefined ? \"\" : formatValue(resolvedValue.from));\n }\n }, [editingField, formatValue, resolvedValue.from]);\n\n useEffect(() => {\n if (editingField !== \"to\") {\n setToDraft(resolvedValue.to === undefined ? \"\" : formatValue(resolvedValue.to));\n }\n }, [editingField, formatValue, resolvedValue.to]);\n\n useEffect(() => {\n const nextValue = { from: resolvedValue.from, to: resolvedValue.to };\n const changedOutsideInteraction = !valuesEqual(nextValue, latestValueRef.current);\n latestValueRef.current = nextValue;\n\n if (!changedOutsideInteraction) return;\n if (editingField === \"from\") {\n setFromDraft(nextValue.from === undefined ? \"\" : formatValue(nextValue.from));\n }\n if (editingField === \"to\") {\n setToDraft(nextValue.to === undefined ? \"\" : formatValue(nextValue.to));\n }\n }, [editingField, formatValue, resolvedValue.from, resolvedValue.to]);\n\n useEffect(() => {\n if (isControlled) return;\n setUncontrolledValue((current) => {\n const normalized = normalizeRangeValue(current, lowerBound, upperBound);\n return valuesEqual(current, normalized) ? current : normalized;\n });\n }, [isControlled, lowerBound, upperBound]);\n\n const emitValue = useCallback(\n (nextValue: RangeValue) => {\n const normalized = normalizeRangeValue(nextValue, lowerBound, upperBound);\n if (valuesEqual(normalized, latestValueRef.current)) return;\n latestValueRef.current = normalized;\n if (!isControlled) setUncontrolledValue(normalized);\n onValueChange?.(normalized);\n },\n [isControlled, lowerBound, onValueChange, upperBound],\n );\n\n const updateFrom = useCallback(\n (next: number | undefined) => {\n const current = latestValueRef.current;\n const maximum = current.to ?? upperBound;\n const snapped =\n next === undefined ? undefined : clampAndSnap(next, lowerBound, upperBound, safeStep);\n emitValue({\n ...current,\n from: snapped === undefined ? undefined : clampRangeValue(snapped, lowerBound, maximum),\n });\n },\n [emitValue, lowerBound, safeStep, upperBound],\n );\n\n const updateTo = useCallback(\n (next: number | undefined) => {\n const current = latestValueRef.current;\n const minimum = current.from ?? lowerBound;\n const snapped =\n next === undefined ? undefined : clampAndSnap(next, lowerBound, upperBound, safeStep);\n emitValue({\n ...current,\n to: snapped === undefined ? undefined : clampRangeValue(snapped, minimum, upperBound),\n });\n },\n [emitValue, lowerBound, safeStep, upperBound],\n );\n\n const updateFromInput = useCallback(\n (next: number | undefined) => {\n const current = latestValueRef.current;\n const maximum = current.to ?? upperBound;\n emitValue({\n ...current,\n from: next === undefined ? undefined : clampRangeValue(next, lowerBound, maximum),\n });\n },\n [emitValue, lowerBound, upperBound],\n );\n\n const updateToInput = useCallback(\n (next: number | undefined) => {\n const current = latestValueRef.current;\n const minimum = current.from ?? lowerBound;\n emitValue({\n ...current,\n to: next === undefined ? undefined : clampRangeValue(next, minimum, upperBound),\n });\n },\n [emitValue, lowerBound, upperBound],\n );\n\n const span = upperBound - lowerBound;\n const thumbTravel = Math.max(0, trackWidth - TRACK_HORIZONTAL_INSET * 2 - THUMB_SIZE);\n const effectiveFrom = resolvedValue.from ?? lowerBound;\n const effectiveTo = resolvedValue.to ?? upperBound;\n const valueToOffset = useCallback(\n (next: number) => (span === 0 ? 0 : ((next - lowerBound) / span) * thumbTravel),\n [lowerBound, span, thumbTravel],\n );\n const deltaToValue = useCallback(\n (delta: number) => (thumbTravel === 0 || span === 0 ? 0 : (delta / thumbTravel) * span),\n [span, thumbTravel],\n );\n const fromOffset = valueToOffset(effectiveFrom);\n const toOffset = valueToOffset(effectiveTo);\n\n const fromPanResponder = useMemo(\n () =>\n PanResponder.create({\n onStartShouldSetPanResponder: () => !disabled,\n onMoveShouldSetPanResponder: () => !disabled,\n onPanResponderGrant: () => {\n dragStartRef.current = { from: effectiveFrom, to: effectiveTo };\n nativeDragTargetRef.current = effectiveFrom === effectiveTo ? null : \"from\";\n },\n onPanResponderMove: (_, gesture) => {\n if (!nativeDragTargetRef.current && gesture.dx !== 0) {\n nativeDragTargetRef.current = gesture.dx < 0 ? \"from\" : \"to\";\n }\n const delta = deltaToValue(gesture.dx);\n if (nativeDragTargetRef.current === \"to\") {\n updateToInput(snapRangeDelta(dragStartRef.current.to, delta, safeStep));\n } else if (nativeDragTargetRef.current === \"from\") {\n updateFromInput(snapRangeDelta(dragStartRef.current.from, delta, safeStep));\n }\n },\n onPanResponderRelease: () => {\n nativeDragTargetRef.current = null;\n },\n onPanResponderTerminate: () => {\n nativeDragTargetRef.current = null;\n },\n }),\n [deltaToValue, disabled, effectiveFrom, effectiveTo, safeStep, updateFromInput, updateToInput],\n );\n\n const toPanResponder = useMemo(\n () =>\n PanResponder.create({\n onStartShouldSetPanResponder: () => !disabled,\n onMoveShouldSetPanResponder: () => !disabled,\n onPanResponderGrant: () => {\n dragStartRef.current = { from: effectiveFrom, to: effectiveTo };\n nativeDragTargetRef.current = effectiveFrom === effectiveTo ? null : \"to\";\n },\n onPanResponderMove: (_, gesture) => {\n if (!nativeDragTargetRef.current && gesture.dx !== 0) {\n nativeDragTargetRef.current = gesture.dx < 0 ? \"from\" : \"to\";\n }\n const delta = deltaToValue(gesture.dx);\n if (nativeDragTargetRef.current === \"from\") {\n updateFromInput(snapRangeDelta(dragStartRef.current.from, delta, safeStep));\n } else if (nativeDragTargetRef.current === \"to\") {\n updateToInput(snapRangeDelta(dragStartRef.current.to, delta, safeStep));\n }\n },\n onPanResponderRelease: () => {\n nativeDragTargetRef.current = null;\n },\n onPanResponderTerminate: () => {\n nativeDragTargetRef.current = null;\n },\n }),\n [deltaToValue, disabled, effectiveFrom, effectiveTo, safeStep, updateFromInput, updateToInput],\n );\n\n const beginPointerDrag = (target: \"from\" | \"to\", currentValue: number, event: PointerEvent) => {\n if (disabled) return;\n event.stopPropagation();\n const pointerId = event.nativeEvent.pointerId;\n const node = event.currentTarget as unknown as {\n focus?: () => void;\n setPointerCapture?: (id: number) => void;\n };\n node.focus?.();\n node.setPointerCapture?.(pointerId);\n pointerDragRef.current = {\n target,\n pointerId,\n startPageX: event.nativeEvent.pageX,\n startValue: currentValue,\n coincident: effectiveFrom === effectiveTo,\n };\n };\n\n const movePointerDrag = (event: PointerEvent) => {\n const drag = pointerDragRef.current;\n if (!drag || drag.pointerId !== event.nativeEvent.pointerId) return;\n const deltaX = event.nativeEvent.pageX - drag.startPageX;\n const nextValue = snapRangeDelta(drag.startValue, deltaToValue(deltaX), safeStep);\n if (drag.coincident && deltaX !== 0) {\n drag.target = deltaX < 0 ? \"from\" : \"to\";\n drag.coincident = false;\n }\n const target = drag.target;\n if (target === \"from\") updateFromInput(nextValue);\n else updateToInput(nextValue);\n };\n\n const endPointerDrag = (event: PointerEvent) => {\n const drag = pointerDragRef.current;\n if (!drag || drag.pointerId !== event.nativeEvent.pointerId) return;\n const node = event.currentTarget as unknown as {\n hasPointerCapture?: (id: number) => boolean;\n releasePointerCapture?: (id: number) => void;\n };\n if (node.hasPointerCapture?.(drag.pointerId)) node.releasePointerCapture?.(drag.pointerId);\n pointerDragRef.current = null;\n };\n\n const handleAccessibilityAction = (\n event: AccessibilityActionEvent,\n current: number,\n update: (value: number) => void,\n ) => {\n if (disabled) return;\n if (event.nativeEvent.actionName === \"increment\") update(current + safeStep);\n if (event.nativeEvent.actionName === \"decrement\") update(current - safeStep);\n };\n\n const handleWebKeyDown = (\n event: WebKeyboardEvent,\n current: number,\n minimum: number,\n maximum: number,\n update: (value: number) => void,\n ) => {\n if (disabled) return;\n\n const key = event.nativeEvent?.key ?? event.key;\n let nextValue: number | undefined;\n\n if (key === \"ArrowRight\" || key === \"ArrowUp\") nextValue = current + safeStep;\n if (key === \"ArrowLeft\" || key === \"ArrowDown\") nextValue = current - safeStep;\n if (key === \"Home\") nextValue = minimum;\n if (key === \"End\") nextValue = maximum;\n\n if (nextValue === undefined) return;\n event.preventDefault();\n event.stopPropagation();\n update(nextValue);\n };\n\n const commitDraft = (draft: string, update: (value: number | undefined) => void) => {\n const result = parseRangeDraft(draft, parseValue);\n if (result.kind === \"empty\") update(undefined);\n if (result.kind === \"value\") update(result.value);\n };\n\n const changeFromDraft = (draft: string) => {\n setFromDraft(draft);\n const result = parseRangeDraft(draft, parseValue);\n if (result.kind === \"empty\") updateFromInput(undefined);\n if (result.kind === \"value\") updateFromInput(result.value);\n };\n\n const changeToDraft = (draft: string) => {\n setToDraft(draft);\n const result = parseRangeDraft(draft, parseValue);\n if (result.kind === \"empty\") updateToInput(undefined);\n if (result.kind === \"value\") updateToInput(result.value);\n };\n\n const focusWebThumb = (target: \"from\" | \"to\") => {\n if (Platform.OS !== \"web\") return;\n const node = (target === \"from\" ? fromThumbRef.current : toThumbRef.current) as unknown as {\n focus?: () => void;\n } | null;\n node?.focus?.();\n };\n\n const updateNearestFromTrack = (locationX: number) => {\n if (disabled || thumbTravel === 0 || span === 0) return;\n\n const offset = Math.min(\n thumbTravel,\n Math.max(0, locationX - TRACK_HORIZONTAL_INSET - THUMB_SIZE / 2),\n );\n const nextValue = clampAndSnap(\n lowerBound + (offset / thumbTravel) * span,\n lowerBound,\n upperBound,\n safeStep,\n );\n\n const fromDistance = Math.abs(nextValue - effectiveFrom);\n const toDistance = Math.abs(nextValue - effectiveTo);\n\n if (effectiveFrom === effectiveTo && fromDistance === toDistance) {\n if (nextValue < effectiveFrom) {\n focusWebThumb(\"from\");\n updateFrom(nextValue);\n }\n if (nextValue > effectiveTo) {\n focusWebThumb(\"to\");\n updateTo(nextValue);\n }\n } else if (fromDistance <= toDistance) {\n focusWebThumb(\"from\");\n updateFrom(nextValue);\n } else {\n focusWebThumb(\"to\");\n updateTo(nextValue);\n }\n };\n\n const handleTrackPress = (event: GestureResponderEvent) => {\n updateNearestFromTrack(event.nativeEvent.locationX);\n };\n\n const handleTrackLayout = (event: LayoutChangeEvent) => {\n setTrackWidth(event.nativeEvent.layout.width);\n };\n\n const fromValueText = `${formatValue(effectiveFrom)}${currency ? ` ${currency}` : \"\"}`;\n const toValueText = `${formatValue(effectiveTo)}${currency ? ` ${currency}` : \"\"}`;\n\n return (\n <View\n {...rest}\n ref={setRootRef}\n onLayout={onLayout}\n style={[styles.root, disabled && styles.disabled, style]}\n >\n {/* The 20px plane keeps native hit-testing on the thumbs while the rail stays at y=8. */}\n <Pressable\n accessible={false}\n disabled={disabled}\n focusable={false}\n onLayout={handleTrackLayout}\n onPointerDown={\n Platform.OS === \"web\"\n ? (event) => {\n event.preventDefault();\n updateNearestFromTrack(event.nativeEvent.offsetX);\n }\n : undefined\n }\n onPress={Platform.OS === \"web\" ? undefined : handleTrackPress}\n style={styles.sliderPlane}\n tabIndex={-1}\n >\n <View pointerEvents=\"none\" style={styles.track} />\n <View\n pointerEvents=\"none\"\n style={[\n styles.activeTrack,\n {\n left: TRACK_HORIZONTAL_INSET + fromOffset,\n width: toOffset - fromOffset + THUMB_SIZE,\n },\n ]}\n />\n {/* Native Pressable owns responder handlers, so the draggable hosts intentionally stay Views. */}\n <View\n ref={fromThumbRef}\n {...(Platform.OS === \"web\"\n ? {\n onPointerCancel: endPointerDrag,\n onPointerDown: (event: PointerEvent) =>\n beginPointerDrag(\"from\", effectiveFrom, event),\n onLostPointerCapture: endPointerDrag,\n onPointerMove: movePointerDrag,\n onPointerUp: endPointerDrag,\n onBlur: () => setFocusedThumb(null),\n onFocus: () => setFocusedThumb(\"from\"),\n onKeyDown: (event: WebKeyboardEvent) =>\n handleWebKeyDown(event, effectiveFrom, lowerBound, effectiveTo, updateFromInput),\n }\n : fromPanResponder.panHandlers)}\n aria-disabled={disabled}\n aria-valuemax={effectiveTo}\n aria-valuemin={lowerBound}\n aria-valuenow={effectiveFrom}\n aria-valuetext={fromValueText}\n accessible\n accessibilityActions={[{ name: \"increment\" }, { name: \"decrement\" }]}\n accessibilityLabel={fromAccessibilityLabel}\n accessibilityRole=\"adjustable\"\n accessibilityState={{ disabled }}\n accessibilityValue={{\n min: lowerBound,\n max: effectiveTo,\n now: effectiveFrom,\n text: fromValueText,\n }}\n focusable={!disabled}\n onAccessibilityAction={(event) =>\n handleAccessibilityAction(event, effectiveFrom, updateFromInput)\n }\n pointerEvents={disabled ? \"none\" : \"auto\"}\n style={[\n styles.thumb,\n Platform.OS === \"web\" && styles.thumbWeb,\n focusedThumb === \"from\" && Platform.OS === \"web\" && styles.thumbFocusedWeb,\n { left: TRACK_HORIZONTAL_INSET + fromOffset },\n ]}\n tabIndex={disabled ? -1 : 0}\n />\n <View\n ref={toThumbRef}\n {...(Platform.OS === \"web\"\n ? {\n onPointerCancel: endPointerDrag,\n onPointerDown: (event: PointerEvent) => beginPointerDrag(\"to\", effectiveTo, event),\n onLostPointerCapture: endPointerDrag,\n onPointerMove: movePointerDrag,\n onPointerUp: endPointerDrag,\n onBlur: () => setFocusedThumb(null),\n onFocus: () => setFocusedThumb(\"to\"),\n onKeyDown: (event: WebKeyboardEvent) =>\n handleWebKeyDown(event, effectiveTo, effectiveFrom, upperBound, updateToInput),\n }\n : toPanResponder.panHandlers)}\n aria-disabled={disabled}\n aria-valuemax={upperBound}\n aria-valuemin={effectiveFrom}\n aria-valuenow={effectiveTo}\n aria-valuetext={toValueText}\n accessible\n accessibilityActions={[{ name: \"increment\" }, { name: \"decrement\" }]}\n accessibilityLabel={toAccessibilityLabel}\n accessibilityRole=\"adjustable\"\n accessibilityState={{ disabled }}\n accessibilityValue={{\n min: effectiveFrom,\n max: upperBound,\n now: effectiveTo,\n text: toValueText,\n }}\n focusable={!disabled}\n onAccessibilityAction={(event) =>\n handleAccessibilityAction(event, effectiveTo, updateToInput)\n }\n pointerEvents={disabled ? \"none\" : \"auto\"}\n style={[\n styles.thumb,\n Platform.OS === \"web\" && styles.thumbWeb,\n focusedThumb === \"to\" && Platform.OS === \"web\" && styles.thumbFocusedWeb,\n { left: TRACK_HORIZONTAL_INSET + toOffset },\n ]}\n tabIndex={disabled ? -1 : 0}\n />\n </Pressable>\n\n <View style={styles.inputs}>\n <RangeInput\n accessibilityLabel={fromAccessibilityLabel}\n currency={currency}\n disabled={disabled}\n focused={editingField === \"from\"}\n onChangeText={changeFromDraft}\n onCommit={() => {\n setEditingField(null);\n commitDraft(fromDraft, updateFromInput);\n }}\n onFocus={() => setEditingField(\"from\")}\n placeholder={fromPlaceholder}\n value={fromDraft}\n />\n <RangeInput\n accessibilityLabel={toAccessibilityLabel}\n currency={currency}\n disabled={disabled}\n focused={editingField === \"to\"}\n onChangeText={changeToDraft}\n onCommit={() => {\n setEditingField(null);\n commitDraft(toDraft, updateToInput);\n }}\n onFocus={() => setEditingField(\"to\")}\n placeholder={toPlaceholder}\n value={toDraft}\n />\n </View>\n </View>\n );\n});\n\nfunction RangeInput({\n accessibilityLabel,\n currency,\n disabled,\n focused,\n onChangeText,\n onCommit,\n onFocus,\n placeholder,\n value,\n}: {\n accessibilityLabel: string;\n currency: string;\n disabled: boolean;\n focused: boolean;\n onChangeText: (value: string) => void;\n onCommit: () => void;\n onFocus: () => void;\n placeholder: string;\n value: string;\n}) {\n return (\n <View style={[styles.inputField, focused && styles.inputFieldFocused]}>\n <TextInput\n aria-disabled={disabled}\n accessibilityLabel={accessibilityLabel}\n accessibilityState={{ disabled }}\n editable={!disabled}\n inputMode=\"decimal\"\n onBlur={onCommit}\n onChangeText={onChangeText}\n onFocus={onFocus}\n onSubmitEditing={onCommit}\n placeholder={placeholder}\n placeholderTextColor={colors.grey150}\n returnKeyType=\"done\"\n style={[styles.input, Platform.OS === \"web\" && styles.inputWeb]}\n tabIndex={disabled ? -1 : undefined}\n value={value}\n />\n <View style={styles.currencySlot}>\n <Text style={styles.currency}>{currency}</Text>\n </View>\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n root: {\n width: DEFAULT_WIDTH,\n gap: 15,\n alignSelf: \"flex-start\",\n },\n disabled: {\n opacity: 0.6,\n },\n sliderPlane: {\n width: \"100%\",\n height: THUMB_SIZE,\n position: \"relative\",\n },\n track: {\n position: \"absolute\",\n top: 8,\n left: 0,\n width: \"100%\",\n height: TRACK_HEIGHT,\n borderRadius: 16,\n backgroundColor: colors.grey600,\n },\n activeTrack: {\n position: \"absolute\",\n top: 8,\n height: TRACK_HEIGHT,\n borderRadius: 16,\n backgroundColor: colors.primary,\n },\n thumb: {\n position: \"absolute\",\n top: 0,\n width: THUMB_SIZE,\n height: THUMB_SIZE,\n borderRadius: 32,\n borderWidth: 2,\n borderColor: colors.primary,\n backgroundColor: colors.white,\n },\n thumbWeb: {\n cursor: \"grab\",\n touchAction: \"none\",\n } as unknown as TextStyle,\n thumbFocusedWeb: {\n outlineColor: colors.white,\n outlineOffset: 2,\n outlineStyle: \"solid\",\n outlineWidth: 2,\n } as TextStyle,\n inputs: {\n width: \"100%\",\n height: 44,\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n },\n inputField: {\n width: INPUT_WIDTH,\n height: 44,\n paddingVertical: 12,\n paddingHorizontal: 16,\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 10,\n borderWidth: 1,\n borderColor: colors.grey700,\n borderRadius: 60,\n backgroundColor: colors.grey700,\n },\n inputFieldFocused: {\n borderColor: colors.primary,\n },\n input: {\n minWidth: 0,\n flex: 1,\n margin: 0,\n padding: 0,\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"400\",\n lineHeight: 16,\n letterSpacing: 0.36,\n color: colors.white,\n },\n inputWeb: {\n outlineStyle: \"none\",\n } as TextStyle,\n currencySlot: {\n width: 20,\n height: 20,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n currency: {\n fontFamily: fonts.sans,\n fontSize: 16,\n fontWeight: \"600\",\n lineHeight: 22,\n color: colors.white,\n },\n});\n"]}
|