hazo_ui 2.2.3 → 2.3.0

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/example_component/index.tsx","../src/lib/utils.ts","../src/components/ui/button.tsx","../src/components/ui/dialog.tsx","../src/components/ui/command.tsx","../src/components/ui/popover.tsx","../src/components/ui/input.tsx","../src/components/ui/select.tsx","../src/components/ui/tooltip.tsx","../src/components/ui/calendar.tsx","../src/components/hazo_ui_multi_filter_dialog/index.tsx","../src/components/ui/switch.tsx","../src/components/ui/label.tsx","../src/components/hazo_ui_multi_sort_dialog/index.tsx","../src/components/ui/radio-group.tsx","../src/components/hazo_ui_flex_radio/index.tsx","../src/components/hazo_ui_flex_input/index.tsx"],"names":["twMerge","clsx","cva","React","Slot","jsx","DialogPrimitive","React2","jsxs","X","React3","PopoverPrimitive","React4","React5","SelectPrimitive","React6","ChevronDown","ChevronUp","Check","TooltipPrimitive","React7","DayPicker","ChevronLeft","ChevronRight","useState","CalendarIcon","format","Trash2","useEffect","Filter","Plus","ChevronsUpDown","CheckIcon","React8","SwitchPrimitives","Label","React9","useSortable","CSS","GripVertical","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","arrayMove","ArrowUpDown","DndContext","closestCenter","SortableContext","verticalListSortingStrategy","React10","RadioGroupPrimitive","Circle","FaIcons","MdIcons","HiIcons","BiIcons","AiIcons","BsIcons","FiIcons","IoIcons","RiIcons","TbIcons","CiIcons","isSelected","parts","React11"],"mappings":"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","file":"index.cjs","sourcesContent":["// Example component structure for hazo_ui library\n// This is a placeholder - replace with your actual components\nimport React from \"react\";\n\n/**\n * Example component demonstrating the structure for hazo_ui components\n * @param props - Component props\n * @returns React component\n */\nexport const ExampleComponent: React.FC<{\n children?: React.ReactNode;\n className?: string;\n}> = ({ children, className = \"\" }) => {\n return (\n <div className={`cls_example_component ${className}`}>\n {children}\n </div>\n );\n};\n\n","// Utility functions for hazo_ui component library\n// Provides className merging utility (cn function)\n\nimport { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * Merges class names using clsx and tailwind-merge\n * @param inputs - Class values to merge\n * @returns Merged class string\n */\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\n","// Button component for hazo_ui library\n// Based on shadcn/ui button component\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive: \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline: \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n sm: \"h-9 rounded-md px-3\",\n lg: \"h-11 rounded-md px-8\",\n icon: \"h-10 w-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n );\n }\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n\n","// Dialog component for hazo_ui library\n// Based on shadcn/ui dialog component\nimport * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nconst Dialog = DialogPrimitive.Root;\nconst DialogTrigger = DialogPrimitive.Trigger;\nconst DialogPortal = DialogPrimitive.Portal;\nconst DialogClose = DialogPrimitive.Close;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\n className\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n);\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogClose,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};\n\n","// Command component for hazo_ui library\n// Based on shadcn/ui command component (simplified version)\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nconst Command = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\",\n className\n )}\n {...props}\n />\n));\nCommand.displayName = \"Command\";\n\nconst CommandInput = React.forwardRef<\n HTMLInputElement,\n React.InputHTMLAttributes<HTMLInputElement>\n>(({ className, ...props }, ref) => (\n <input\n ref={ref}\n className={cn(\n \"flex h-11 w-full rounded-md border border-input bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50 px-3\",\n className\n )}\n {...props}\n />\n));\nCommandInput.displayName = \"CommandInput\";\n\nconst CommandList = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\n {...props}\n />\n));\nCommandList.displayName = \"CommandList\";\n\nconst CommandEmpty = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>((props, ref) => (\n <div\n ref={ref}\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n));\nCommandEmpty.displayName = \"CommandEmpty\";\n\nconst CommandGroup = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\",\n className\n )}\n {...props}\n />\n));\nCommandGroup.displayName = \"CommandGroup\";\n\nconst CommandItem = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & {\n onSelect?: (value: string) => void;\n value?: string;\n }\n>(({ className, onSelect, value, ...props }, ref) => {\n const handleClick = () => {\n if (onSelect && value) {\n onSelect(value);\n }\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"relative flex cursor-pointer select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none hover:bg-accent hover:text-accent-foreground aria-selected:bg-accent aria-selected:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n onClick={handleClick}\n {...props}\n />\n );\n});\nCommandItem.displayName = \"CommandItem\";\n\nexport {\n Command,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n};\n\n","// Popover component for hazo_ui library\n// Based on shadcn/ui popover component\nimport * as React from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport { cn } from \"../../lib/utils\";\n\nconst Popover = PopoverPrimitive.Root;\nconst PopoverTrigger = PopoverPrimitive.Trigger;\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverTrigger, PopoverContent };\n\n","// Input component for hazo_ui library\n// Based on shadcn/ui input component\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface InputProps\n extends React.InputHTMLAttributes<HTMLInputElement> {}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n \"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n ref={ref}\n {...props}\n />\n );\n }\n);\nInput.displayName = \"Input\";\n\nexport { Input };\n\n","// Select component for hazo_ui library\n// Based on shadcn/ui select component\nimport * as React from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nconst Select = SelectPrimitive.Root;\nconst SelectGroup = SelectPrimitive.Group;\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"h-4 w-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronUp className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollUpButton>\n));\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronDown className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollDownButton>\n));\nSelectScrollDownButton.displayName =\n SelectPrimitive.ScrollDownButton.displayName;\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n \"relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n));\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"py-1.5 pl-8 pr-2 text-sm font-semibold\", className)}\n {...props}\n />\n));\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n};\n\n","// Tooltip component for hazo_ui library\n// Based on shadcn/ui tooltip component\nimport * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport { cn } from \"../../lib/utils\";\n\nconst TooltipProvider = TooltipPrimitive.Provider;\nconst Tooltip = TooltipPrimitive.Root;\nconst TooltipTrigger = TooltipPrimitive.Trigger;\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n));\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n\n","// Calendar component for hazo_ui library\n// Based on shadcn/ui calendar component\nimport * as React from \"react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { DayPicker } from \"react-day-picker\";\nimport { cn } from \"../../lib/utils\";\n\nexport type CalendarProps = React.ComponentProps<typeof DayPicker>;\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n ...props\n}: CalendarProps) {\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\"p-3\", className)}\n classNames={{\n months: \"flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0\",\n month: \"space-y-4\",\n caption: \"flex justify-center pt-1 relative items-center\",\n caption_label: \"text-sm font-medium\",\n nav: \"space-x-1 flex items-center\",\n nav_button: cn(\n \"h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100\"\n ),\n nav_button_previous: \"absolute left-1\",\n nav_button_next: \"absolute right-1\",\n table: \"w-full border-collapse space-y-1\",\n head_row: \"flex\",\n head_cell:\n \"text-muted-foreground rounded-md w-9 font-normal text-[0.8rem]\",\n row: \"flex w-full mt-2\",\n cell: \"h-9 w-9 text-center text-sm p-0 relative [&:has([aria-selected].day-range-end)]:rounded-r-md [&:has([aria-selected].day-outside)]:bg-accent/50 [&:has([aria-selected])]:bg-accent first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md focus-within:relative focus-within:z-20\",\n day: cn(\n \"h-9 w-9 p-0 font-normal aria-selected:opacity-100\"\n ),\n day_range_end: \"day-range-end\",\n day_selected:\n \"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground\",\n day_today: \"bg-accent text-accent-foreground\",\n day_outside:\n \"day-outside text-muted-foreground opacity-50 aria-selected:bg-accent/50 aria-selected:text-muted-foreground aria-selected:opacity-30\",\n day_disabled: \"text-muted-foreground opacity-50\",\n day_range_middle:\n \"aria-selected:bg-accent aria-selected:text-accent-foreground\",\n day_hidden: \"invisible\",\n ...classNames,\n }}\n components={{\n IconLeft: () => <ChevronLeft className=\"h-4 w-4\" />,\n IconRight: () => <ChevronRight className=\"h-4 w-4\" />,\n }}\n {...props}\n />\n );\n}\nCalendar.displayName = \"Calendar\";\n\nexport { Calendar };\n\n","\"use client\";\n\n/**\n * Hazo UI Multi Filter Dialog Component\n * \n * Reusable component for multi-field filtering with different input types.\n * Allows users to select multiple fields for filtering with appropriate input controls.\n */\n\nimport { useState, useEffect } from 'react';\nimport { Button } from \"../ui/button\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"../ui/dialog\";\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"../ui/command\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../ui/popover\";\nimport { Input } from \"../ui/input\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../ui/select\";\nimport { Tooltip, TooltipContent, TooltipTrigger, TooltipProvider } from \"../ui/tooltip\";\nimport { Calendar as CalendarComponent } from \"../ui/calendar\";\nimport { Filter, Trash2, Plus, Check as CheckIcon, ChevronsUpDown, Calendar as CalendarIcon, X } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport { format } from \"date-fns\";\n\nexport interface FilterField {\n value: string;\n label: string;\n type: 'text' | 'number' | 'combobox' | 'boolean' | 'date';\n textConfig?: {\n minLength?: number;\n maxLength?: number;\n };\n numberConfig?: {\n min?: number;\n max?: number;\n allowDecimal?: boolean;\n decimalLength?: number;\n };\n comboboxOptions?: Array<{ label: string; value: string }>;\n booleanLabels?: {\n trueLabel?: string;\n falseLabel?: string;\n };\n}\n\nexport interface FilterConfig {\n field: string;\n operator?: string; // For number fields: equals, not_equals, greater_than, less_than, greater_equal, less_equal\n value: any;\n}\n\ninterface HazoUiMultiFilterDialogProps {\n availableFields: FilterField[];\n onFilterChange: (filterConfig: FilterConfig[]) => void;\n initialFilters?: FilterConfig[];\n title?: string;\n description?: string;\n}\n\ninterface FilterFieldItemProps {\n filterConfig: FilterConfig;\n fieldConfig: FilterField;\n onValueChange: (value: any) => void;\n onOperatorChange?: (operator: string) => void;\n onDelete: () => void;\n}\n\nfunction FilterFieldItem({\n filterConfig,\n fieldConfig,\n onValueChange,\n onOperatorChange,\n onDelete,\n}: FilterFieldItemProps) {\n const [isCalendarOpen, setIsCalendarOpen] = useState(false);\n\n const renderInput = () => {\n switch (fieldConfig.type) {\n case 'text':\n return (\n <Input\n type=\"text\"\n value={filterConfig.value || ''}\n onChange={(e) => {\n const value = e.target.value;\n if (fieldConfig.textConfig?.maxLength && value.length > fieldConfig.textConfig.maxLength) {\n return;\n }\n onValueChange(value);\n }}\n placeholder=\"Enter text...\"\n minLength={fieldConfig.textConfig?.minLength}\n maxLength={fieldConfig.textConfig?.maxLength}\n className=\"cls_filter_text_input w-full min-w-0\"\n />\n );\n\n case 'number':\n const numberOperators = [\n { value: 'equals', label: 'Equals' },\n { value: 'not_equals', label: 'Not Equals' },\n { value: 'greater_than', label: 'Greater Than' },\n { value: 'less_than', label: 'Less Than' },\n { value: 'greater_equal', label: 'Greater or Equal' },\n { value: 'less_equal', label: 'Less or Equal' },\n ];\n\n return (\n <div className=\"cls_number_filter_container flex flex-col sm:flex-row items-stretch sm:items-center gap-2 w-full\">\n <Select\n value={filterConfig.operator || 'equals'}\n onValueChange={(value) => onOperatorChange?.(value)}\n >\n <SelectTrigger className=\"cls_operator_select w-full sm:w-[140px] shrink-0\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {numberOperators.map((op) => (\n <SelectItem key={op.value} value={op.value}>\n {op.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <Input\n type=\"number\"\n value={filterConfig.value !== undefined && filterConfig.value !== null ? filterConfig.value : ''}\n onChange={(e) => {\n const value = e.target.value;\n if (value === '') {\n onValueChange('');\n return;\n }\n let numValue = fieldConfig.numberConfig?.allowDecimal\n ? parseFloat(value)\n : parseInt(value, 10);\n \n if (isNaN(numValue)) {\n return;\n }\n\n // Apply decimal length restriction\n if (fieldConfig.numberConfig?.allowDecimal && fieldConfig.numberConfig?.decimalLength) {\n const decimalPlaces = value.split('.')[1]?.length || 0;\n if (decimalPlaces > fieldConfig.numberConfig.decimalLength) {\n return;\n }\n }\n\n // Apply min/max restrictions\n if (fieldConfig.numberConfig?.min !== undefined && numValue < fieldConfig.numberConfig.min) {\n numValue = fieldConfig.numberConfig.min;\n }\n if (fieldConfig.numberConfig?.max !== undefined && numValue > fieldConfig.numberConfig.max) {\n numValue = fieldConfig.numberConfig.max;\n }\n\n onValueChange(numValue);\n }}\n placeholder=\"Enter number...\"\n min={fieldConfig.numberConfig?.min}\n max={fieldConfig.numberConfig?.max}\n step={fieldConfig.numberConfig?.allowDecimal ? 0.01 : 1}\n className=\"cls_filter_number_input flex-1 min-w-0\"\n />\n </div>\n );\n\n case 'combobox':\n return (\n <Select\n value={filterConfig.value || ''}\n onValueChange={(value) => onValueChange(value)}\n >\n <SelectTrigger className=\"cls_filter_combobox_select w-full min-w-0\">\n <SelectValue placeholder=\"Select option...\" />\n </SelectTrigger>\n <SelectContent>\n {fieldConfig.comboboxOptions?.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n\n case 'boolean':\n const trueLabel = fieldConfig.booleanLabels?.trueLabel || 'On';\n const falseLabel = fieldConfig.booleanLabels?.falseLabel || 'Off';\n \n return (\n <Select\n value={filterConfig.value !== undefined && filterConfig.value !== null ? String(filterConfig.value) : ''}\n onValueChange={(value) => onValueChange(value === 'true')}\n >\n <SelectTrigger className=\"cls_filter_boolean_select w-full min-w-0\">\n <SelectValue placeholder=\"Select...\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"true\">{trueLabel}</SelectItem>\n <SelectItem value=\"false\">{falseLabel}</SelectItem>\n </SelectContent>\n </Select>\n );\n\n case 'date':\n const dateOperators = [\n { value: 'equals', label: 'Equals' },\n { value: 'not_equals', label: 'Not Equals' },\n { value: 'greater_than', label: 'Greater Than' },\n { value: 'less_than', label: 'Less Than' },\n { value: 'greater_equal', label: 'Greater or Equal' },\n { value: 'less_equal', label: 'Less or Equal' },\n ];\n\n const selectedDate = filterConfig.value \n ? (typeof filterConfig.value === 'string' ? new Date(filterConfig.value) : filterConfig.value)\n : undefined;\n\n return (\n <div className=\"cls_date_filter_container flex flex-col sm:flex-row items-stretch sm:items-center gap-2 w-full\">\n <Select\n value={filterConfig.operator || 'equals'}\n onValueChange={(value) => onOperatorChange?.(value)}\n >\n <SelectTrigger className=\"cls_operator_select w-full sm:w-[140px] shrink-0\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {dateOperators.map((op) => (\n <SelectItem key={op.value} value={op.value}>\n {op.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <Popover open={isCalendarOpen} onOpenChange={setIsCalendarOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n className={cn(\n \"cls_date_picker_trigger w-full justify-start text-left font-normal min-w-0\",\n !selectedDate && \"text-muted-foreground\"\n )}\n >\n <CalendarIcon className=\"cls_calendar_icon mr-2 h-4 w-4 shrink-0\" />\n <span className=\"cls_date_text truncate\">\n {selectedDate ? (\n format(selectedDate, \"MMM d, yyyy\")\n ) : (\n \"Pick a date\"\n )}\n </span>\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"cls_calendar_popover w-auto p-0\" align=\"start\">\n <CalendarComponent\n mode=\"single\"\n selected={selectedDate}\n onSelect={(date) => {\n onValueChange(date);\n setIsCalendarOpen(false);\n }}\n initialFocus\n />\n </PopoverContent>\n </Popover>\n </div>\n );\n\n default:\n return null;\n }\n };\n\n return (\n <div className=\"cls_filter_field_item flex flex-col sm:flex-row items-start sm:items-center gap-3 p-3 border rounded-md bg-card\">\n <span className=\"cls_field_label text-sm font-medium min-w-[120px] sm:min-w-[100px] truncate\">{fieldConfig.label}</span>\n <div className=\"cls_field_input_container flex-1 min-w-0 w-full sm:w-auto\">\n {renderInput()}\n </div>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={onDelete}\n className=\"cls_delete_btn h-8 w-8 p-0 text-destructive hover:text-destructive shrink-0\"\n aria-label={`Remove ${fieldConfig.label} filter`}\n >\n <Trash2 className=\"cls_delete_icon h-4 w-4\" />\n </Button>\n </div>\n );\n}\n\nexport function HazoUiMultiFilterDialog({\n availableFields,\n onFilterChange,\n initialFilters = [],\n title = \"Filter\",\n description = \"Add multiple fields to filter by. Select a field and set its filter value.\",\n}: HazoUiMultiFilterDialogProps) {\n const [isOpen, setIsOpen] = useState(false);\n const [filterFields, setFilterFields] = useState<FilterConfig[]>(initialFilters);\n const [isComboboxOpen, setIsComboboxOpen] = useState(false);\n\n // Sync local state with initialFilters when dialog opens\n useEffect(() => {\n if (isOpen) {\n setFilterFields(initialFilters);\n }\n }, [isOpen, initialFilters]);\n\n const handleAddField = (fieldValue: string) => {\n // Check if field is already added\n if (filterFields.some(ff => ff.field === fieldValue)) {\n return;\n }\n\n const fieldConfig = availableFields.find(af => af.value === fieldValue);\n if (!fieldConfig) {\n return;\n }\n\n let defaultValue: any = '';\n if (fieldConfig.type === 'boolean') {\n defaultValue = false;\n } else if (fieldConfig.type === 'number') {\n defaultValue = fieldConfig.numberConfig?.min || 0;\n } else if (fieldConfig.type === 'date') {\n defaultValue = new Date(); // Default to today\n }\n\n const newFilter: FilterConfig = {\n field: fieldValue,\n operator: (fieldConfig.type === 'number' || fieldConfig.type === 'date') ? 'equals' : undefined,\n value: defaultValue,\n };\n setFilterFields([...filterFields, newFilter]);\n setIsComboboxOpen(false);\n };\n\n const handleDeleteField = (fieldValue: string) => {\n setFilterFields(filterFields.filter(ff => ff.field !== fieldValue));\n };\n\n const handleValueChange = (fieldValue: string, value: any) => {\n setFilterFields(\n filterFields.map(ff =>\n ff.field === fieldValue ? { ...ff, value } : ff\n )\n );\n };\n\n const handleOperatorChange = (fieldValue: string, operator: string) => {\n setFilterFields(\n filterFields.map(ff =>\n ff.field === fieldValue ? { ...ff, operator } : ff\n )\n );\n };\n\n const handleApply = () => {\n // Call onFilterChange with the current filter configuration\n onFilterChange([...filterFields]);\n setIsOpen(false);\n };\n\n const handleCancel = () => {\n setFilterFields(initialFilters);\n setIsOpen(false);\n };\n\n const handleClearAll = () => {\n setFilterFields([]);\n };\n\n // Get available fields that haven't been added yet\n const availableFieldsToAdd = availableFields.filter(\n af => !filterFields.some(ff => ff.field === af.value)\n );\n\n // Get field config helper\n const getFieldConfig = (fieldValue: string): FilterField | undefined => {\n return availableFields.find(af => af.value === fieldValue);\n };\n\n // Check if there are active filters\n const hasActiveFilters = initialFilters.length > 0;\n\n // Format tooltip content showing active filters\n const tooltipContent = hasActiveFilters ? (\n <div className=\"cls_filter_tooltip_content space-y-1\">\n <div className=\"cls_tooltip_title text-xs font-semibold mb-1\">Active Filters:</div>\n {initialFilters.map((filterConfig) => {\n const fieldConfig = getFieldConfig(filterConfig.field);\n if (!fieldConfig) return null;\n \n let displayValue = String(filterConfig.value);\n if (fieldConfig.type === 'boolean') {\n displayValue = filterConfig.value\n ? (fieldConfig.booleanLabels?.trueLabel || 'On')\n : (fieldConfig.booleanLabels?.falseLabel || 'Off');\n } else if (fieldConfig.type === 'combobox') {\n const option = fieldConfig.comboboxOptions?.find(opt => opt.value === filterConfig.value);\n displayValue = option?.label || displayValue;\n } else if (fieldConfig.type === 'date') {\n const dateValue = filterConfig.value instanceof Date \n ? filterConfig.value \n : new Date(filterConfig.value);\n if (!isNaN(dateValue.getTime())) {\n displayValue = format(dateValue, \"MMM d, yyyy\");\n }\n }\n \n const operatorLabel = filterConfig.operator\n ? filterConfig.operator.replace('_', ' ').replace(/\\b\\w/g, l => l.toUpperCase()) + ' '\n : '';\n \n return (\n <div key={filterConfig.field} className=\"cls_tooltip_item text-xs\">\n {fieldConfig.label}: {operatorLabel}{displayValue}\n </div>\n );\n })}\n </div>\n ) : (\n <div className=\"cls_filter_tooltip_content text-xs\">No active filters</div>\n );\n\n return (\n <Dialog open={isOpen} onOpenChange={setIsOpen}>\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <DialogTrigger asChild>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"cls_filter_button\"\n aria-label=\"Open filter dialog\"\n >\n <Filter\n className={cn(\n \"cls_filter_icon h-4 w-4 mr-2\",\n hasActiveFilters && \"text-blue-600\"\n )}\n />\n Filter\n </Button>\n </DialogTrigger>\n </TooltipTrigger>\n <TooltipContent>\n {tooltipContent}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n <DialogContent className=\"cls_filter_dialog_content max-w-lg w-full max-h-[90vh] overflow-y-auto\">\n <DialogHeader>\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>\n {description}\n </DialogDescription>\n </DialogHeader>\n <div className=\"cls_filter_dialog_body space-y-4 py-4\">\n {/* Add Field Combobox */}\n <div className=\"cls_add_field_section\">\n <Popover open={isComboboxOpen} onOpenChange={setIsComboboxOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={isComboboxOpen}\n className=\"cls_add_field_combobox w-full justify-between\"\n >\n <div className=\"cls_combobox_content flex items-center\">\n <Plus className=\"cls_plus_icon h-4 w-4 mr-2\" />\n <span>Add field</span>\n </div>\n <ChevronsUpDown className=\"cls_chevron_icon ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"cls_combobox_popover w-full p-0\">\n <Command>\n <CommandInput placeholder=\"Search fields...\" className=\"cls_command_input\" />\n <CommandList>\n {availableFieldsToAdd.length === 0 ? (\n <CommandEmpty>No fields found.</CommandEmpty>\n ) : (\n <CommandGroup>\n {availableFieldsToAdd.map((field) => (\n <CommandItem\n key={field.value}\n value={field.label}\n onSelect={() => handleAddField(field.value)}\n className=\"cls_command_item\"\n >\n <CheckIcon\n className={cn(\n \"cls_check_icon mr-2 h-4 w-4\",\n false ? \"opacity-100\" : \"opacity-0\"\n )}\n />\n {field.label}\n </CommandItem>\n ))}\n </CommandGroup>\n )}\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n </div>\n\n {/* Filter Fields List */}\n {filterFields.length > 0 ? (\n <div className=\"cls_filter_fields_list space-y-2\">\n {filterFields.map((filterConfig) => {\n const fieldConfig = getFieldConfig(filterConfig.field);\n if (!fieldConfig) return null;\n\n return (\n <FilterFieldItem\n key={filterConfig.field}\n filterConfig={filterConfig}\n fieldConfig={fieldConfig}\n onValueChange={(value) => handleValueChange(filterConfig.field, value)}\n onOperatorChange={(operator) => handleOperatorChange(filterConfig.field, operator)}\n onDelete={() => handleDeleteField(filterConfig.field)}\n />\n );\n })}\n </div>\n ) : (\n <div className=\"cls_empty_filter_fields text-center py-8 text-sm text-muted-foreground\">\n No filter fields added. Click \"Add field\" to add filtering criteria.\n </div>\n )}\n </div>\n <DialogFooter>\n {filterFields.length > 0 && (\n <Button\n variant=\"outline\"\n onClick={handleClearAll}\n className=\"cls_clear_all_btn\"\n >\n <X className=\"cls_clear_all_icon h-4 w-4 mr-2\" />\n Clear All\n </Button>\n )}\n <Button\n onClick={handleApply}\n className=\"cls_apply_btn\"\n >\n Apply\n </Button>\n <Button\n variant=\"outline\"\n onClick={handleCancel}\n className=\"cls_cancel_btn\"\n >\n Cancel\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n\n","// Switch component for hazo_ui library\n// Based on shadcn/ui switch component\nimport * as React from \"react\";\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\";\nimport { cn } from \"../../lib/utils\";\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\n>(({ className, ...props }, ref) => (\n <SwitchPrimitives.Root\n className={cn(\n \"peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input\",\n className\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n \"pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0\"\n )}\n />\n </SwitchPrimitives.Root>\n));\nSwitch.displayName = SwitchPrimitives.Root.displayName;\n\nexport { Switch };\n\n","// Label component for hazo_ui library\n// Based on shadcn/ui label component (placeholder - not used in HazoUiMultiFilterDialog but included for completeness)\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface LabelProps\n extends React.LabelHTMLAttributes<HTMLLabelElement> {}\n\nconst Label = React.forwardRef<HTMLLabelElement, LabelProps>(\n ({ className, ...props }, ref) => {\n return (\n <label\n ref={ref}\n className={cn(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n className\n )}\n {...props}\n />\n );\n }\n);\nLabel.displayName = \"Label\";\n\nexport { Label };\n\n","\"use client\";\n\n/**\n * Hazo UI Multi Sort Dialog Component\n * \n * Reusable component for multi-field sorting with drag-and-drop reordering.\n * Allows users to select multiple fields for sorting, reorder them, and set ascending/descending direction.\n */\n\nimport { useState, useEffect } from 'react';\nimport { Button } from \"../ui/button\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"../ui/dialog\";\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"../ui/command\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../ui/popover\";\nimport { Switch } from \"../ui/switch\";\nimport { Label } from \"../ui/label\";\nimport { Tooltip, TooltipContent, TooltipTrigger, TooltipProvider } from \"../ui/tooltip\";\nimport { ArrowUpDown, GripVertical, Trash2, Plus, Check as CheckIcon, ChevronsUpDown } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n DragEndEvent,\n} from '@dnd-kit/core';\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy,\n useSortable,\n} from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\n\nexport interface SortField {\n value: string;\n label: string;\n}\n\nexport interface SortConfig {\n field: string;\n direction: 'asc' | 'desc';\n}\n\ninterface HazoUiMultiSortDialogProps {\n availableFields: SortField[];\n onSortChange: (sortConfig: SortConfig[]) => void;\n initialSortFields?: SortConfig[];\n title?: string;\n description?: string;\n}\n\ninterface SortableSortFieldItemProps {\n sortConfig: SortConfig;\n fieldLabel: string;\n onDirectionChange: (direction: 'asc' | 'desc') => void;\n onDelete: () => void;\n}\n\nfunction SortableSortFieldItem({\n sortConfig,\n fieldLabel,\n onDirectionChange,\n onDelete,\n}: SortableSortFieldItemProps) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id: sortConfig.field });\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n opacity: isDragging ? 0.5 : 1,\n };\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n className=\"cls_sortable_sort_field_item flex items-center gap-3 p-3 border rounded-md bg-card\"\n >\n <div\n {...attributes}\n {...listeners}\n className=\"cls_drag_handle cursor-grab active:cursor-grabbing text-muted-foreground hover:text-foreground\"\n >\n <GripVertical className=\"cls_drag_icon h-4 w-4\" />\n </div>\n <span className=\"cls_field_label flex-1 text-sm font-medium\">{fieldLabel}</span>\n <div className=\"cls_direction_control flex items-center gap-2\">\n <Label htmlFor={`switch-${sortConfig.field}`} className=\"cls_direction_label text-xs text-muted-foreground\">\n {sortConfig.direction === 'asc' ? 'Ascending' : 'Descending'}\n </Label>\n <Switch\n id={`switch-${sortConfig.field}`}\n checked={sortConfig.direction === 'desc'}\n onCheckedChange={(checked) => onDirectionChange(checked ? 'desc' : 'asc')}\n aria-label={`Toggle sort direction for ${fieldLabel}`}\n />\n </div>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={onDelete}\n className=\"cls_delete_btn h-8 w-8 p-0 text-destructive hover:text-destructive\"\n aria-label={`Remove ${fieldLabel} from sort`}\n >\n <Trash2 className=\"cls_delete_icon h-4 w-4\" />\n </Button>\n </div>\n );\n}\n\nexport function HazoUiMultiSortDialog({\n availableFields,\n onSortChange,\n initialSortFields = [],\n title = \"Sort\",\n description = \"Add multiple fields to sort by and reorder them. Use the switch to toggle between ascending and descending.\",\n}: HazoUiMultiSortDialogProps) {\n const [isOpen, setIsOpen] = useState(false);\n const [sortFields, setSortFields] = useState<SortConfig[]>(initialSortFields);\n const [isComboboxOpen, setIsComboboxOpen] = useState(false);\n \n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n );\n\n // Sync local state with initialSortFields when dialog opens\n useEffect(() => {\n if (isOpen) {\n setSortFields(initialSortFields);\n }\n }, [isOpen, initialSortFields]);\n\n const handleAddField = (fieldValue: string) => {\n // Check if field is already added\n if (sortFields.some(sf => sf.field === fieldValue)) {\n return;\n }\n\n const newField: SortConfig = {\n field: fieldValue,\n direction: 'asc',\n };\n setSortFields([...sortFields, newField]);\n setIsComboboxOpen(false);\n };\n\n const handleDeleteField = (fieldValue: string) => {\n setSortFields(sortFields.filter(sf => sf.field !== fieldValue));\n };\n\n const handleDirectionChange = (fieldValue: string, direction: 'asc' | 'desc') => {\n setSortFields(\n sortFields.map(sf =>\n sf.field === fieldValue ? { ...sf, direction } : sf\n )\n );\n };\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event;\n\n if (!over || active.id === over.id) {\n return;\n }\n\n const oldIndex = sortFields.findIndex(sf => sf.field === active.id);\n const newIndex = sortFields.findIndex(sf => sf.field === over.id);\n\n if (oldIndex !== -1 && newIndex !== -1) {\n setSortFields(arrayMove(sortFields, oldIndex, newIndex));\n }\n };\n\n const handleApply = () => {\n // Call onSortChange with the current sort configuration\n onSortChange([...sortFields]);\n setIsOpen(false);\n };\n\n const handleCancel = () => {\n setSortFields(initialSortFields);\n setIsOpen(false);\n };\n\n const handleClearAll = () => {\n setSortFields([]);\n };\n\n // Get available fields that haven't been added yet\n const availableFieldsToAdd = availableFields.filter(\n af => !sortFields.some(sf => sf.field === af.value)\n );\n\n // Get field label helper\n const getFieldLabel = (fieldValue: string): string => {\n return availableFields.find(af => af.value === fieldValue)?.label || fieldValue;\n };\n\n // Check if there are active sort fields\n const hasActiveSorts = initialSortFields.length > 0;\n\n // Format tooltip content showing active sort fields\n const tooltipContent = hasActiveSorts ? (\n <div className=\"cls_sort_tooltip_content space-y-1\">\n <div className=\"cls_tooltip_title text-xs font-semibold mb-1\">Active Sorts:</div>\n {initialSortFields.map((sortConfig, index) => (\n <div key={sortConfig.field} className=\"cls_tooltip_item text-xs\">\n {index + 1}. {getFieldLabel(sortConfig.field)} ({sortConfig.direction === 'asc' ? 'Asc' : 'Desc'})\n </div>\n ))}\n </div>\n ) : (\n <div className=\"cls_sort_tooltip_content text-xs\">No active sorts</div>\n );\n\n return (\n <Dialog open={isOpen} onOpenChange={setIsOpen}>\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <DialogTrigger asChild>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"cls_sort_button\"\n aria-label=\"Open sort dialog\"\n >\n <ArrowUpDown \n className={cn(\n \"cls_sort_icon h-4 w-4 mr-2\",\n hasActiveSorts && \"text-blue-600\"\n )} \n />\n Sort\n </Button>\n </DialogTrigger>\n </TooltipTrigger>\n <TooltipContent>\n {tooltipContent}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n <DialogContent className=\"cls_sort_dialog_content max-w-lg\">\n <DialogHeader>\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>\n {description}\n </DialogDescription>\n </DialogHeader>\n <div className=\"cls_sort_dialog_body space-y-4 py-4\">\n {/* Add Field Combobox */}\n <div className=\"cls_add_field_section\">\n <Popover open={isComboboxOpen} onOpenChange={setIsComboboxOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={isComboboxOpen}\n className=\"cls_add_field_combobox w-full justify-between\"\n >\n <div className=\"cls_combobox_content flex items-center\">\n <Plus className=\"cls_plus_icon h-4 w-4 mr-2\" />\n <span>Add field</span>\n </div>\n <ChevronsUpDown className=\"cls_chevron_icon ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"cls_combobox_popover w-full p-0\">\n <Command>\n <CommandInput placeholder=\"Search fields...\" className=\"cls_command_input\" />\n <CommandList>\n {availableFieldsToAdd.length === 0 ? (\n <CommandEmpty>No fields found.</CommandEmpty>\n ) : (\n <CommandGroup>\n {availableFieldsToAdd.map((field) => (\n <CommandItem\n key={field.value}\n value={field.label}\n onSelect={() => handleAddField(field.value)}\n className=\"cls_command_item\"\n >\n <CheckIcon\n className={cn(\n \"cls_check_icon mr-2 h-4 w-4\",\n false ? \"opacity-100\" : \"opacity-0\"\n )}\n />\n {field.label}\n </CommandItem>\n ))}\n </CommandGroup>\n )}\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n </div>\n\n {/* Sort Fields List */}\n {sortFields.length > 0 ? (\n <div className=\"cls_sort_fields_list space-y-2\">\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n >\n <SortableContext\n items={sortFields.map(sf => sf.field)}\n strategy={verticalListSortingStrategy}\n >\n {sortFields.map((sortConfig) => (\n <SortableSortFieldItem\n key={sortConfig.field}\n sortConfig={sortConfig}\n fieldLabel={getFieldLabel(sortConfig.field)}\n onDirectionChange={(direction) =>\n handleDirectionChange(sortConfig.field, direction)\n }\n onDelete={() => handleDeleteField(sortConfig.field)}\n />\n ))}\n </SortableContext>\n </DndContext>\n </div>\n ) : (\n <div className=\"cls_empty_sort_fields text-center py-8 text-sm text-muted-foreground\">\n No sort fields added. Click \"Add field\" to add sorting criteria.\n </div>\n )}\n </div>\n <DialogFooter>\n {sortFields.length > 0 && (\n <Button\n variant=\"outline\"\n onClick={handleClearAll}\n className=\"cls_clear_all_btn\"\n >\n <Trash2 className=\"cls_clear_all_icon h-4 w-4 mr-2\" />\n Clear All\n </Button>\n )}\n <Button\n onClick={handleApply}\n className=\"cls_apply_btn\"\n >\n Apply\n </Button>\n <Button\n variant=\"outline\"\n onClick={handleCancel}\n className=\"cls_cancel_btn\"\n >\n Cancel\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n\n","// Radio group component for hazo_ui library\n// Based on shadcn/ui radio group component\nimport * as React from \"react\";\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\nimport { Circle } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nconst RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Root\n className={cn(\"grid gap-2\", className)}\n {...props}\n ref={ref}\n />\n );\n});\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName;\n\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n \"aspect-square h-4 w-4 rounded-full border border-primary text-primary ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <Circle className=\"h-2.5 w-2.5 fill-current text-current\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n});\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;\n\nexport { RadioGroup, RadioGroupItem };\n\n\n","\"use client\";\n\n/**\n * Hazo UI Flex Radio Component\n * \n * Flexible radio button/icon selection component with support for single and multi-selection modes,\n * customizable layouts, and react-icons integration.\n */\n\nimport { RadioGroup, RadioGroupItem } from \"../ui/radio-group\";\nimport { Button } from \"../ui/button\";\nimport { Tooltip, TooltipContent, TooltipTrigger, TooltipProvider } from \"../ui/tooltip\";\nimport { cn } from \"../../lib/utils\";\n// Import icon sets - tree-shaking will remove unused ones\nimport * as FaIcons from \"react-icons/fa\";\nimport * as MdIcons from \"react-icons/md\";\nimport * as HiIcons from \"react-icons/hi\";\nimport * as BiIcons from \"react-icons/bi\";\nimport * as AiIcons from \"react-icons/ai\";\nimport * as BsIcons from \"react-icons/bs\";\nimport * as FiIcons from \"react-icons/fi\";\nimport * as IoIcons from \"react-icons/io5\";\nimport * as RiIcons from \"react-icons/ri\";\nimport * as TbIcons from \"react-icons/tb\";\nimport * as CiIcons from \"react-icons/ci\";\n\n// Icon set mapping\nconst iconSetMap: Record<string, any> = {\n fa: FaIcons,\n md: MdIcons,\n hi: HiIcons,\n bi: BiIcons,\n ai: AiIcons,\n bs: BsIcons,\n fi: FiIcons,\n io: IoIcons,\n io5: IoIcons,\n ri: RiIcons,\n tb: TbIcons,\n ci: CiIcons,\n};\n\n/**\n * Get icon library for a given icon set\n */\nfunction getIconLibrary(iconSet: string): any {\n if (!iconSet) return null;\n const normalizedSet = iconSet.toLowerCase();\n return iconSetMap[normalizedSet] || null;\n}\n\nexport interface HazoUiFlexRadioItem {\n label: string;\n value: string;\n icon_selected?: string;\n icon_unselected?: string;\n fgcolor?: string; // Foreground color for the icon (text/icon color)\n bgcolor?: string; // Background color for the icon button\n}\n\nexport interface HazoUiFlexRadioProps {\n layout?: \"horizontal\" | \"vertical\";\n style?: \"radio\" | \"icons\";\n display_label?: boolean;\n icon_set?: string; // Package name like 'fa', 'md', etc.\n data: HazoUiFlexRadioItem[];\n selection: \"single\" | \"multi\";\n value: string | string[];\n onChange: (value: string | string[]) => void;\n className?: string;\n compressed?: boolean; // When true, removes padding and spacing between elements\n}\n\n/**\n * Get icon component from react-icons based on icon set and icon name\n */\nfunction getIconComponent(iconSet: string | undefined, iconName: string | undefined): React.ComponentType<any> | null {\n if (!iconSet || !iconName) return null;\n \n const iconLibrary = getIconLibrary(iconSet);\n if (!iconLibrary) return null;\n \n const IconComponent = iconLibrary[iconName];\n return IconComponent || null;\n}\n\n/**\n * Hazo UI Flex Radio Component\n * Supports single and multi-selection with radio buttons or icons\n */\nexport function HazoUiFlexRadio({\n layout = \"horizontal\",\n style = \"radio\",\n display_label = true,\n icon_set,\n data,\n selection = \"single\",\n value,\n onChange,\n className,\n compressed = false,\n}: HazoUiFlexRadioProps) {\n // Icon library is loaded lazily when needed\n\n /**\n * Handle single selection change\n */\n const handleSingleSelection = (selectedValue: string) => {\n onChange(selectedValue);\n };\n\n /**\n * Handle multi selection change\n */\n const handleMultiSelection = (selectedValue: string) => {\n const currentValues = Array.isArray(value) ? value : [];\n const isSelected = currentValues.includes(selectedValue);\n \n if (isSelected) {\n // Remove from selection\n onChange(currentValues.filter((v) => v !== selectedValue));\n } else {\n // Add to selection\n onChange([...currentValues, selectedValue]);\n }\n };\n\n /**\n * Check if an item is selected\n */\n const isSelected = (itemValue: string): boolean => {\n if (selection === \"single\") {\n return value === itemValue;\n } else {\n const currentValues = Array.isArray(value) ? value : [];\n return currentValues.includes(itemValue);\n }\n };\n\n /**\n * Render radio style option\n */\n const renderRadioOption = (item: HazoUiFlexRadioItem) => {\n const selected = isSelected(item.value);\n \n if (selection === \"single\") {\n const optionContent = (\n <div\n className={cn(\n \"cls_radio_option flex items-center gap-2\",\n layout === \"horizontal\" ? \"flex-row\" : \"flex-col\",\n compressed ? \"\" : \"p-2 rounded-md\",\n \"hover:bg-accent transition-colors\",\n selected && \"bg-accent\"\n )}\n >\n <RadioGroupItem\n value={item.value}\n id={`radio-${item.value}`}\n className=\"cls_radio_item shrink-0\"\n />\n {display_label && (\n <label\n htmlFor={`radio-${item.value}`}\n className=\"cls_radio_label text-sm font-medium cursor-pointer flex-1\"\n >\n {item.label}\n </label>\n )}\n </div>\n );\n \n return (\n <Tooltip key={item.value} delayDuration={1000}>\n <TooltipTrigger asChild>\n {optionContent}\n </TooltipTrigger>\n <TooltipContent>\n <p className=\"cls_tooltip_text\">{item.label}</p>\n </TooltipContent>\n </Tooltip>\n );\n } else {\n // Multi-selection with checkbox-like behavior\n const optionContent = (\n <div\n className={cn(\n \"cls_radio_option flex items-center gap-2 cursor-pointer\",\n layout === \"horizontal\" ? \"flex-row\" : \"flex-col\",\n compressed ? \"\" : \"p-2 rounded-md\",\n \"hover:bg-accent transition-colors\",\n selected && \"bg-accent\"\n )}\n onClick={() => handleMultiSelection(item.value)}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleMultiSelection(item.value);\n }\n }}\n >\n <div\n className={cn(\n \"cls_checkbox_indicator h-4 w-4 rounded-sm border-2 border-primary flex items-center justify-center transition-colors shrink-0\",\n selected ? \"bg-primary\" : \"bg-background\"\n )}\n >\n {selected && (\n <svg\n className=\"cls_checkmark h-3 w-3 text-primary-foreground\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={3}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M5 13l4 4L19 7\"\n />\n </svg>\n )}\n </div>\n {display_label && (\n <span className=\"cls_checkbox_label text-sm font-medium flex-1\">\n {item.label}\n </span>\n )}\n </div>\n );\n \n return (\n <Tooltip key={item.value} delayDuration={1000}>\n <TooltipTrigger asChild>\n {optionContent}\n </TooltipTrigger>\n <TooltipContent>\n <p className=\"cls_tooltip_text\">{item.label}</p>\n </TooltipContent>\n </Tooltip>\n );\n }\n };\n\n /**\n * Render icon style option\n */\n const renderIconOption = (item: HazoUiFlexRadioItem) => {\n const selected = isSelected(item.value);\n \n // Get icon components\n const SelectedIcon = icon_set && item.icon_selected\n ? getIconComponent(icon_set, item.icon_selected)\n : null;\n const UnselectedIcon = icon_set && item.icon_unselected\n ? getIconComponent(icon_set, item.icon_unselected)\n : null;\n \n const IconComponent = selected && SelectedIcon ? SelectedIcon : (UnselectedIcon || SelectedIcon);\n \n // Apply custom colors if provided\n const buttonStyles: React.CSSProperties = {};\n if (item.bgcolor) {\n buttonStyles.backgroundColor = item.bgcolor;\n }\n \n const buttonContent = (\n <Button\n variant={selected ? \"default\" : \"ghost\"}\n size=\"default\"\n className={cn(\n \"cls_icon_option border-0\",\n layout === \"horizontal\" ? \"flex-row\" : \"flex-col\",\n \"gap-2 h-auto\",\n compressed ? \"py-0 px-0\" : \"py-2 px-3 sm:py-3 sm:px-4\",\n // Only apply default colors if custom colors are not provided\n !item.bgcolor && selected && \"bg-primary text-primary-foreground\",\n !item.bgcolor && !selected && \"hover:bg-accent\"\n )}\n style={Object.keys(buttonStyles).length > 0 ? buttonStyles : undefined}\n onClick={() => {\n if (selection === \"single\") {\n handleSingleSelection(item.value);\n } else {\n handleMultiSelection(item.value);\n }\n }}\n aria-label={item.label}\n aria-pressed={selected}\n >\n {IconComponent && (\n <IconComponent \n className=\"cls_icon h-4 w-4 sm:h-5 sm:w-5\" \n style={item.fgcolor ? { color: item.fgcolor } : undefined}\n />\n )}\n {display_label && (\n <span \n className=\"cls_icon_label text-sm font-medium\"\n style={item.fgcolor ? { color: item.fgcolor } : undefined}\n >\n {item.label}\n </span>\n )}\n </Button>\n );\n \n return (\n <Tooltip key={item.value} delayDuration={1000}>\n <TooltipTrigger asChild>\n {buttonContent}\n </TooltipTrigger>\n <TooltipContent>\n <p className=\"cls_tooltip_text\">{item.label}</p>\n </TooltipContent>\n </Tooltip>\n );\n };\n\n // Container classes with single outline\n const containerClasses = cn(\n \"cls_hazo_ui_flex_radio border border-input rounded-md\",\n compressed ? \"\" : \"p-2 sm:p-3\",\n layout === \"horizontal\"\n ? cn(\n \"flex flex-row flex-wrap\",\n compressed ? \"gap-0\" : \"gap-2 sm:gap-3\"\n )\n : cn(\n \"flex flex-col\",\n compressed ? \"gap-0\" : \"gap-2 sm:gap-3\"\n ),\n className\n );\n \n // RadioGroup needs grid override for flex layout\n const radioGroupClasses = cn(\n containerClasses,\n \"!flex !flex-row !flex-wrap\" // Override RadioGroup's default grid\n );\n\n if (style === \"icons\") {\n // Icon style - use buttons\n return (\n <TooltipProvider delayDuration={1000}>\n <div className={containerClasses} role={selection === \"single\" ? \"radiogroup\" : \"group\"}>\n {data.map((item) => renderIconOption(item))}\n </div>\n </TooltipProvider>\n );\n } else {\n // Radio style - use RadioGroup for single, custom for multi\n if (selection === \"single\") {\n return (\n <TooltipProvider delayDuration={1000}>\n <RadioGroup\n value={typeof value === \"string\" ? value : \"\"}\n onValueChange={handleSingleSelection}\n className={layout === \"horizontal\" \n ? cn(radioGroupClasses, \"!flex-row\")\n : cn(radioGroupClasses, \"!flex-col\")\n }\n >\n {data.map((item) => renderRadioOption(item))}\n </RadioGroup>\n </TooltipProvider>\n );\n } else {\n return (\n <TooltipProvider delayDuration={1000}>\n <div className={containerClasses} role=\"group\">\n {data.map((item) => renderRadioOption(item))}\n </div>\n </TooltipProvider>\n );\n }\n }\n}\n\n","\"use client\";\n\n/**\n * Hazo UI Flex Input Component\n * \n * Enhanced input component with type validation, character restrictions, and error messaging.\n * Extends shadcn Input component with additional validation props.\n */\n\nimport * as React from \"react\";\nimport { Input, type InputProps } from \"../ui/input\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface HazoUiFlexInputProps extends Omit<InputProps, \"type\"> {\n input_type?: \"mixed\" | \"numeric\" | \"email\" | \"alpha\";\n text_len_min?: number;\n text_len_max?: number;\n num_min?: number;\n num_max?: number;\n regex?: string | RegExp;\n num_decimals?: number;\n format_guide?: string;\n format_guide_info?: boolean;\n}\n\n/**\n * Validate input value based on input_type and constraints\n */\nfunction validateInput(\n value: string,\n input_type: \"mixed\" | \"numeric\" | \"email\" | \"alpha\",\n text_len_min?: number,\n text_len_max?: number,\n num_min?: number,\n num_max?: number,\n regex?: string | RegExp,\n num_decimals?: number\n): { isValid: boolean; errorMessage?: string } {\n // Empty value validation\n if (value === \"\") {\n return { isValid: true };\n }\n\n // Type-specific validation\n switch (input_type) {\n case \"numeric\": {\n // Check if value is a valid number\n const numValue = parseFloat(value);\n if (isNaN(numValue)) {\n return { isValid: false, errorMessage: \"Must be a valid number\" };\n }\n\n // Check decimal places\n if (num_decimals !== undefined) {\n const decimalPlaces = value.split(\".\")[1]?.length || 0;\n if (decimalPlaces > num_decimals) {\n return {\n isValid: false,\n errorMessage: `Maximum ${num_decimals} decimal place${num_decimals !== 1 ? \"s\" : \"\"} allowed`,\n };\n }\n }\n\n // Check min/max\n if (num_min !== undefined && numValue < num_min) {\n return { isValid: false, errorMessage: `Must be at least ${num_min}` };\n }\n if (num_max !== undefined && numValue > num_max) {\n return { isValid: false, errorMessage: `Must be at most ${num_max}` };\n }\n break;\n }\n\n case \"alpha\": {\n // Check if value contains only letters\n const alphaRegex = /^[A-Za-z\\s]*$/;\n if (!alphaRegex.test(value)) {\n return { isValid: false, errorMessage: \"Only letters are allowed\" };\n }\n break;\n }\n\n case \"email\": {\n // Basic email validation\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n if (!emailRegex.test(value)) {\n return { isValid: false, errorMessage: \"Must be a valid email address\" };\n }\n break;\n }\n\n case \"mixed\": {\n // Check length constraints\n if (text_len_min !== undefined && value.length < text_len_min) {\n return {\n isValid: false,\n errorMessage: `Must be at least ${text_len_min} character${text_len_min !== 1 ? \"s\" : \"\"}`,\n };\n }\n if (text_len_max !== undefined && value.length > text_len_max) {\n return {\n isValid: false,\n errorMessage: `Must be at most ${text_len_max} character${text_len_max !== 1 ? \"s\" : \"\"}`,\n };\n }\n break;\n }\n }\n\n // Regex validation (applies to all types if provided)\n if (regex) {\n const regexPattern = typeof regex === \"string\" ? new RegExp(regex) : regex;\n if (!regexPattern.test(value)) {\n return { isValid: false, errorMessage: \"Invalid format\" };\n }\n }\n\n return { isValid: true };\n}\n\n/**\n * Filter input value based on input_type to prevent invalid characters\n */\nfunction filterInputValue(\n value: string,\n input_type: \"mixed\" | \"numeric\" | \"email\" | \"alpha\",\n num_decimals?: number\n): string {\n switch (input_type) {\n case \"numeric\": {\n // Allow digits, decimal point, and minus sign\n let filtered = value.replace(/[^\\d.-]/g, \"\");\n\n // Handle decimal point - only allow one\n const parts = filtered.split(\".\");\n if (parts.length > 2) {\n filtered = parts[0] + \".\" + parts.slice(1).join(\"\");\n }\n\n // If num_decimals is 0, don't allow decimal point\n if (num_decimals === 0 && filtered.includes(\".\")) {\n filtered = filtered.replace(\".\", \"\");\n }\n\n // Limit decimal places\n if (num_decimals !== undefined && num_decimals > 0) {\n const parts = filtered.split(\".\");\n if (parts.length === 2 && parts[1].length > num_decimals) {\n filtered = parts[0] + \".\" + parts[1].substring(0, num_decimals);\n }\n }\n\n return filtered;\n }\n\n case \"alpha\": {\n // Allow only letters and spaces\n return value.replace(/[^A-Za-z\\s]/g, \"\");\n }\n\n case \"email\":\n case \"mixed\":\n default: {\n // Allow all characters for email and mixed\n return value;\n }\n }\n}\n\nexport const HazoUiFlexInput = React.forwardRef<\n HTMLInputElement,\n HazoUiFlexInputProps\n>(\n (\n {\n className,\n input_type = \"mixed\",\n text_len_min,\n text_len_max,\n num_min,\n num_max,\n regex,\n num_decimals,\n format_guide,\n format_guide_info = false,\n value: controlledValue,\n onChange,\n onBlur,\n ...props\n },\n ref\n ) => {\n const [internalValue, setInternalValue] = React.useState<string>(\n typeof controlledValue === \"string\" ? controlledValue : (typeof controlledValue === \"number\" ? String(controlledValue) : \"\")\n );\n const [errorMessage, setErrorMessage] = React.useState<string | undefined>();\n\n // Use controlled value if provided, otherwise use internal state\n const isControlled = controlledValue !== undefined;\n const currentValue = isControlled\n ? (typeof controlledValue === \"string\" ? controlledValue : String(controlledValue || \"\"))\n : internalValue;\n\n // Sync internal state when controlled value changes externally\n React.useEffect(() => {\n if (isControlled) {\n const newValue = typeof controlledValue === \"string\" ? controlledValue : String(controlledValue || \"\");\n if (newValue !== internalValue) {\n setInternalValue(newValue);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [controlledValue, isControlled]);\n\n /**\n * Handle input change with character filtering\n */\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n let newValue = e.target.value;\n\n // Apply character filtering for numeric and alpha types\n if (input_type === \"numeric\" || input_type === \"alpha\") {\n newValue = filterInputValue(newValue, input_type, num_decimals);\n }\n\n // Update internal state if uncontrolled\n if (!isControlled) {\n setInternalValue(newValue);\n }\n\n // Clear error on change\n if (errorMessage) {\n setErrorMessage(undefined);\n }\n\n // Call original onChange if provided\n if (onChange) {\n const syntheticEvent = {\n ...e,\n target: { ...e.target, value: newValue },\n } as React.ChangeEvent<HTMLInputElement>;\n onChange(syntheticEvent);\n }\n };\n\n /**\n * Handle blur event with validation\n */\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n const validation = validateInput(\n currentValue,\n input_type,\n text_len_min,\n text_len_max,\n num_min,\n num_max,\n regex,\n num_decimals\n );\n\n if (!validation.isValid) {\n setErrorMessage(validation.errorMessage || format_guide || \"Invalid input\");\n } else {\n setErrorMessage(undefined);\n }\n\n // Call original onBlur if provided\n if (onBlur) {\n onBlur(e);\n }\n };\n\n // Determine input type for HTML input element\n const htmlInputType =\n input_type === \"email\" ? \"email\" : input_type === \"numeric\" ? \"text\" : \"text\";\n\n // Determine if input has error\n const hasError = errorMessage !== undefined;\n\n return (\n <div className=\"cls_hazo_ui_flex_input_container w-full\">\n <Input\n ref={ref}\n type={htmlInputType}\n value={currentValue}\n onChange={handleChange}\n onBlur={handleBlur}\n className={cn(\n hasError && \"border-destructive focus-visible:ring-destructive\",\n className\n )}\n {...props}\n />\n {hasError && errorMessage && (\n <p className=\"cls_error_message mt-1 text-sm text-destructive\">\n {errorMessage}\n </p>\n )}\n {format_guide_info && format_guide && (\n <p\n className={cn(\n \"cls_format_guide_info mt-1 text-xs italic text-muted-foreground\",\n hasError && \"mt-0\"\n )}\n >\n {format_guide}\n </p>\n )}\n </div>\n );\n }\n);\n\nHazoUiFlexInput.displayName = \"HazoUiFlexInput\";\n\n"]}
1
+ {"version":3,"sources":["../node_modules/@babel/runtime/helpers/extends.js","../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","../src/lib/utils.ts","../src/components/ui/button.tsx","../src/components/ui/dialog.tsx","../src/components/ui/command.tsx","../src/components/ui/popover.tsx","../src/components/ui/input.tsx","../src/components/ui/select.tsx","../src/components/ui/tooltip.tsx","../src/components/ui/calendar.tsx","../src/components/hazo_ui_multi_filter_dialog/index.tsx","../src/components/ui/switch.tsx","../src/components/ui/label.tsx","../src/components/hazo_ui_multi_sort_dialog/index.tsx","../src/components/ui/radio-group.tsx","../src/components/hazo_ui_flex_radio/index.tsx","../src/components/hazo_ui_flex_input/index.tsx","../src/components/hazo_ui_rte/toolbar/toolbar_button.tsx","../node_modules/@uiw/react-color-sketch/esm/index.js","../node_modules/@uiw/react-color-saturation/esm/index.js","../node_modules/@uiw/color-convert/esm/index.js","../node_modules/@uiw/react-drag-event-interactive/esm/index.js","../node_modules/@uiw/react-drag-event-interactive/esm/utils.js","../node_modules/@uiw/react-color-saturation/esm/Pointer.js","../node_modules/@uiw/react-color-alpha/esm/index.js","../node_modules/@uiw/react-color-alpha/esm/Pointer.js","../node_modules/@uiw/react-color-editable-input/esm/index.js","../node_modules/@uiw/react-color-editable-input-rgba/esm/index.js","../node_modules/@uiw/react-color-hue/esm/index.js","../node_modules/@uiw/react-color-swatch/esm/index.js","../src/components/hazo_ui_rte/types.ts","../src/components/hazo_ui_rte/utils.ts","../src/components/hazo_ui_rte/toolbar/toolbar.tsx","../src/components/hazo_ui_rte/attachments/attachments_list.tsx","../src/components/hazo_ui_rte/extensions/font_size_extension.tsx","../src/components/hazo_ui_rte/extensions/variable_extension.tsx","../src/components/ui/tabs.tsx","../src/components/hazo_ui_rte/index.tsx"],"names":["exports","_extends","_objectWithoutPropertiesLoose","twMerge","clsx","cva","React","Slot","jsx","DialogPrimitive","React2","jsxs","X","React3","PopoverPrimitive","React4","React5","SelectPrimitive","React6","ChevronDown","ChevronUp","Check","TooltipPrimitive","React7","DayPicker","ChevronLeft","ChevronRight","useState","CalendarIcon","format","Trash2","useEffect","Filter","Plus","ChevronsUpDown","CheckIcon","React8","SwitchPrimitives","Label","React9","useSortable","CSS","GripVertical","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","arrayMove","ArrowUpDown","DndContext","closestCenter","SortableContext","verticalListSortingStrategy","React10","RadioGroupPrimitive","Circle","FaIcons","MdIcons","HiIcons","BiIcons","AiIcons","BsIcons","FiIcons","IoIcons","RiIcons","TbIcons","CiIcons","isSelected","parts","React11","React12","import_extends","import_objectWithoutPropertiesLoose","translateColor","color","useRef","useCallback","clamp","useMemo","_jsx","_excluded","esm_default","Pointer","validHex","value","_jsxs","Fragment","React23","LuUndo2","LuRedo2","LuMinus","LuPlus","LuBold","LuItalic","LuUnderline","LuStrikethrough","LuSubscript","LuSuperscript","LuLink","LuRemoveFormatting","LuPalette","LuHighlighter","LuAlignLeft","LuAlignCenter","LuAlignRight","LuAlignJustify","LuList","LuListOrdered","LuListChecks","LuIndentDecrease","LuIndentIncrease","RxDividerHorizontal","LuImage","LuTable","LuTableRowsSplit","LuTableColumnsSplit","LuTrash2","_","LuGrid3X3","LuVariable","LuPaperclip","LuFileText","LuFileCode","LuFile","LuX","Extension","NodeViewWrapper","Node","mergeAttributes","ReactNodeViewRenderer","TabsPrimitive","React24","React25","useEditor","StarterKit","TextStyle","FontFamily","Underline","Subscript","Superscript","Link","TextAlign","Highlight","Color","Image","Placeholder","HorizontalRule","Table","TableRow","TableCell","TableHeader","TaskList","TaskItem","editor","EditorContent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,eAAA,GAAA,UAAA,CAAA;AAAA,EAAA,gDAAA,CAAAA,SAAA,EAAA,MAAA,EAAA;AAAA,IAAA,SAASC,UAAAA,GAAW;AAClB,MAAA,OAAO,MAAA,CAAO,OAAA,GAAUA,UAAAA,GAAW,MAAA,CAAO,MAAA,GAAS,OAAO,MAAA,CAAO,IAAA,EAAK,GAAI,SAAU,CAAA,EAAG;AACrF,QAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,SAAA,CAAU,QAAQ,CAAA,EAAA,EAAK;AACzC,UAAA,IAAI,CAAA,GAAI,UAAU,CAAC,CAAA;AACnB,UAAA,KAAA,IAAS,CAAA,IAAK,CAAA,EAAG,CAAC,IAAI,cAAA,CAAe,IAAA,CAAK,CAAA,EAAG,CAAC,CAAA,KAAM,CAAA,CAAE,CAAC,CAAA,GAAI,EAAE,CAAC,CAAA,CAAA;AAAA,QAChE;AACA,QAAA,OAAO,CAAA;AAAA,MACT,CAAA,EAAG,MAAA,CAAO,OAAA,CAAQ,UAAA,GAAa,MAAM,MAAA,CAAO,OAAA,CAAQ,SAAS,CAAA,GAAI,MAAA,CAAO,OAAA,EAASA,UAAAA,CAAS,KAAA,CAAM,MAAM,SAAS,CAAA;AAAA,IACjH;AACA,IAAA,MAAA,CAAO,OAAA,GAAUA,UAAAA,EAAU,MAAA,CAAO,OAAA,CAAQ,UAAA,GAAa,MAAM,MAAA,CAAO,OAAA,CAAQ,SAAS,CAAA,GAAI,MAAA,CAAO,OAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACThG,IAAA,oCAAA,GAAA,UAAA,CAAA;AAAA,EAAA,qEAAA,CAAAD,SAAA,EAAA,MAAA,EAAA;AAAA,IAAA,SAASE,+BAAAA,CAA8B,GAAG,CAAA,EAAG;AAC3C,MAAA,IAAI,IAAA,IAAQ,CAAA,EAAG,OAAO,EAAC;AACvB,MAAA,IAAI,IAAI,EAAC;AACT,MAAA,KAAA,IAAS,CAAA,IAAK,GAAG,IAAI,GAAG,cAAA,CAAe,IAAA,CAAK,CAAA,EAAG,CAAC,CAAA,EAAG;AACjD,QAAA,IAAI,EAAA,KAAO,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,EAAG;AACzB,QAAA,CAAA,CAAE,CAAC,CAAA,GAAI,CAAA,CAAE,CAAC,CAAA;AAAA,MACZ;AACA,MAAA,OAAO,CAAA;AAAA,IACT;AACA,IAAA,MAAA,CAAO,OAAA,GAAUA,+BAAAA,EAA+B,MAAA,CAAO,OAAA,CAAQ,UAAA,GAAa,MAAM,MAAA,CAAO,OAAA,CAAQ,SAAS,CAAA,GAAI,MAAA,CAAO,OAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACE9G,SAAS,MAAM,MAAA,EAAsB;AAC1C,EAAA,OAAOC,qBAAA,CAAQC,SAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;ACNA,IAAM,cAAA,GAAiBC,0BAAA;AAAA,EACrB,wRAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,wDAAA;AAAA,QACT,WAAA,EAAa,oEAAA;AAAA,QACb,OAAA,EAAS,gFAAA;AAAA,QACT,SAAA,EAAW,8DAAA;AAAA,QACX,KAAA,EAAO,8CAAA;AAAA,QACP,IAAA,EAAM;AAAA,OACR;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,OAAA,EAAS,gBAAA;AAAA,QACT,EAAA,EAAI,qBAAA;AAAA,QACJ,EAAA,EAAI,sBAAA;AAAA,QACJ,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ,CAAA;AAQA,IAAM,MAAA,GAAeC,kBAAA,CAAA,UAAA;AAAA,EACnB,CAAC,EAAE,SAAA,EAAW,OAAA,EAAS,IAAA,EAAM,UAAU,KAAA,EAAO,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AAChE,IAAA,MAAM,IAAA,GAAO,UAAUC,cAAA,GAAO,QAAA;AAC9B,IAAA,uBACEC,cAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,GAAG,cAAA,CAAe,EAAE,SAAS,IAAA,EAAM,SAAA,EAAW,CAAC,CAAA;AAAA,QAC1D,GAAA;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF,CAAA;AACA,MAAA,CAAO,WAAA,GAAc,QAAA;AC5CrB,IAAM,MAAA,GAAyBC,0BAAA,CAAA,IAAA;AAC/B,IAAM,aAAA,GAAgCA,0BAAA,CAAA,OAAA;AACtC,IAAM,YAAA,GAA+BA,0BAAA,CAAA,MAAA;AAGrC,IAAM,aAAA,GAAsBC,8BAG1B,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BF,cAAAA;AAAA,EAAiBC,0BAAA,CAAA,OAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,yJAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD,CAAA;AACD,aAAA,CAAc,cAA8BA,0BAAA,CAAA,OAAA,CAAQ,WAAA;AAEpD,IAAM,aAAA,GAAsBC,kBAAA,CAAA,UAAA,CAG1B,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpCC,eAAA,CAAC,YAAA,EAAA,EACC,QAAA,EAAA;AAAA,kBAAAH,eAAC,aAAA,EAAA,EAAc,CAAA;AAAA,kBACfG,eAAA;AAAA,IAAiBF,0BAAA,CAAA,OAAA;AAAA,IAAhB;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,6fAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,wBACDE,eAAA,CAAiBF,0BAAA,CAAA,KAAA,EAAhB,EAAsB,SAAA,EAAU,+QAAA,EAC/B,QAAA,EAAA;AAAA,0BAAAD,cAAAA,CAACI,aAAA,EAAA,EAAE,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,0BACvBJ,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,WAAU,QAAA,EAAA,OAAA,EAAK;AAAA,SAAA,EACjC;AAAA;AAAA;AAAA;AACF,CAAA,EACF,CACD,CAAA;AACD,aAAA,CAAc,cAA8BC,0BAAA,CAAA,OAAA,CAAQ,WAAA;AAEpD,IAAM,eAAe,CAAC;AAAA,EACpB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACED,cAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,SAAA,EAAW,EAAA;AAAA,MACT,oDAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CAAA;AAEF,YAAA,CAAa,WAAA,GAAc,cAAA;AAE3B,IAAM,eAAe,CAAC;AAAA,EACpB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEA,cAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,SAAA,EAAW,EAAA;AAAA,MACT,+DAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CAAA;AAEF,YAAA,CAAa,WAAA,GAAc,cAAA;AAE3B,IAAM,WAAA,GAAoBE,8BAGxB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BF,cAAAA;AAAA,EAAiBC,0BAAA,CAAA,KAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,mDAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD,CAAA;AACD,WAAA,CAAY,cAA8BA,0BAAA,CAAA,KAAA,CAAM,WAAA;AAEhD,IAAM,iBAAA,GAA0BC,8BAG9B,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BF,cAAAA;AAAA,EAAiBC,0BAAA,CAAA,WAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,+BAAA,EAAiC,SAAS,CAAA;AAAA,IACvD,GAAG;AAAA;AACN,CACD,CAAA;AACD,iBAAA,CAAkB,cAA8BA,0BAAA,CAAA,WAAA,CAAY,WAAA;ACnG5D,IAAM,OAAA,GAAgBI,8BAGpB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BL,cAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,2FAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD,CAAA;AACD,OAAA,CAAQ,WAAA,GAAc,SAAA;AAEtB,IAAM,YAAA,GAAqBK,8BAGzB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BL,cAAAA;AAAA,EAAC,OAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,iLAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD,CAAA;AACD,YAAA,CAAa,WAAA,GAAc,cAAA;AAE3B,IAAM,WAAA,GAAoBK,8BAGxB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BL,cAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,iDAAA,EAAmD,SAAS,CAAA;AAAA,IACzE,GAAG;AAAA;AACN,CACD,CAAA;AACD,WAAA,CAAY,WAAA,GAAc,aAAA;AAE1B,IAAM,YAAA,GAAqBK,kBAAA,CAAA,UAAA,CAGzB,CAAC,KAAA,EAAO,wBACRL,cAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAU,0BAAA;AAAA,IACT,GAAG;AAAA;AACN,CACD,CAAA;AACD,YAAA,CAAa,WAAA,GAAc,cAAA;AAE3B,IAAM,YAAA,GAAqBK,8BAGzB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BL,cAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,wNAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD,CAAA;AACD,YAAA,CAAa,WAAA,GAAc,cAAA;AAE3B,IAAM,WAAA,GAAoBK,kBAAA,CAAA,UAAA,CAMxB,CAAC,EAAE,SAAA,EAAW,UAAU,KAAA,EAAO,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AACnD,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,IAAI,YAAY,KAAA,EAAO;AACrB,MAAA,QAAA,CAAS,KAAK,CAAA;AAAA,IAChB;AAAA,EACF,CAAA;AAEA,EAAA,uBACEL,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,4QAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,OAAA,EAAS,WAAA;AAAA,MACR,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC,CAAA;AACD,WAAA,CAAY,WAAA,GAAc,aAAA;AC7F1B,IAAM,OAAA,GAA2BM,2BAAA,CAAA,IAAA;AACjC,IAAM,cAAA,GAAkCA,2BAAA,CAAA,OAAA;AACxC,IAAM,iBAAuBC,kBAAA,CAAA,UAAA,CAG3B,CAAC,EAAE,SAAA,EAAW,QAAQ,QAAA,EAAU,UAAA,GAAa,CAAA,EAAG,GAAG,OAAM,EAAG,GAAA,qBAC5DP,cAAAA,CAAkBM,2BAAA,CAAA,MAAA,EAAjB,EACC,QAAA,kBAAAN,cAAAA;AAAA,EAAkBM,2BAAA,CAAA,OAAA;AAAA,EAAjB;AAAA,IACC,GAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,4aAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CAAA,EACF,CACD,CAAA;AACD,cAAA,CAAe,cAA+BA,2BAAA,CAAA,OAAA,CAAQ,WAAA;ACjBtD,IAAM,KAAA,GAAcE,kBAAA,CAAA,UAAA;AAAA,EAClB,CAAC,EAAE,SAAA,EAAW,MAAM,GAAG,KAAA,IAAS,GAAA,KAAQ;AACtC,IAAA,uBACER,cAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,8VAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,GAAA;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF,CAAA;AACA,KAAA,CAAM,WAAA,GAAc,OAAA;AChBpB,IAAM,MAAA,GAAyBS,0BAAA,CAAA,IAAA;AAE/B,IAAM,WAAA,GAA8BA,0BAAA,CAAA,KAAA;AAEpC,IAAM,aAAA,GAAsBC,kBAAA,CAAA,UAAA,CAG1B,CAAC,EAAE,SAAA,EAAW,UAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpCP,eAAAA;AAAA,EAAiBM,0BAAA,CAAA,OAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,iTAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEH,QAAA,EAAA;AAAA,MAAA,QAAA;AAAA,sBACDT,cAAAA,CAAiBS,0BAAA,CAAA,IAAA,EAAhB,EAAqB,OAAA,EAAO,IAAA,EAC3B,QAAA,kBAAAT,cAAAA,CAACW,uBAAA,EAAA,EAAY,SAAA,EAAU,oBAAA,EAAqB,CAAA,EAC9C;AAAA;AAAA;AACF,CACD,CAAA;AACD,aAAA,CAAc,cAA8BF,0BAAA,CAAA,OAAA,CAAQ,WAAA;AAEpD,IAAM,oBAAA,GAA6BC,8BAGjC,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BV,cAAAA;AAAA,EAAiBS,0BAAA,CAAA,cAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,sDAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAAT,cAAAA,CAACY,qBAAA,EAAA,EAAU,SAAA,EAAU,SAAA,EAAU;AAAA;AACjC,CACD,CAAA;AACD,oBAAA,CAAqB,cAA8BH,0BAAA,CAAA,cAAA,CAAe,WAAA;AAElE,IAAM,sBAAA,GAA+BC,8BAGnC,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BV,cAAAA;AAAA,EAAiBS,0BAAA,CAAA,gBAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,sDAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAAT,cAAAA,CAACW,uBAAA,EAAA,EAAY,SAAA,EAAU,SAAA,EAAU;AAAA;AACnC,CACD,CAAA;AACD,sBAAA,CAAuB,cACLF,0BAAA,CAAA,gBAAA,CAAiB,WAAA;AAEnC,IAAM,gBAAsBC,kBAAA,CAAA,UAAA,CAG1B,CAAC,EAAE,SAAA,EAAW,UAAU,QAAA,GAAW,QAAA,EAAU,GAAG,KAAA,IAAS,GAAA,qBACzDV,cAAAA,CAAiBS,0BAAA,CAAA,MAAA,EAAhB,EACC,QAAA,kBAAAN,eAAAA;AAAA,EAAiBM,0BAAA,CAAA,OAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,qcAAA;AAAA,MACA,aAAa,QAAA,IACX,iIAAA;AAAA,MACF;AAAA,KACF;AAAA,IACA,QAAA;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAAT,eAAC,oBAAA,EAAA,EAAqB,CAAA;AAAA,sBACtBA,cAAAA;AAAA,QAAiBS,0BAAA,CAAA,QAAA;AAAA,QAAhB;AAAA,UACC,SAAA,EAAW,EAAA;AAAA,YACT,KAAA;AAAA,YACA,aAAa,QAAA,IACX;AAAA,WACJ;AAAA,UAEC;AAAA;AAAA,OACH;AAAA,sBACAT,eAAC,sBAAA,EAAA,EAAuB;AAAA;AAAA;AAC1B,CAAA,EACF,CACD,CAAA;AACD,aAAA,CAAc,cAA8BS,0BAAA,CAAA,OAAA,CAAQ,WAAA;AAEpD,IAAM,WAAA,GAAoBC,8BAGxB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BV,cAAAA;AAAA,EAAiBS,0BAAA,CAAA,KAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,wCAAA,EAA0C,SAAS,CAAA;AAAA,IAChE,GAAG;AAAA;AACN,CACD,CAAA;AACD,WAAA,CAAY,cAA8BA,0BAAA,CAAA,KAAA,CAAM,WAAA;AAEhD,IAAM,UAAA,GAAmBC,kBAAA,CAAA,UAAA,CAGvB,CAAC,EAAE,SAAA,EAAW,UAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpCP,eAAAA;AAAA,EAAiBM,0BAAA,CAAA,IAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,2NAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAAT,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,8DAAA,EACd,0BAAAA,cAAAA,CAAiBS,0BAAA,CAAA,aAAA,EAAhB,EACC,QAAA,kBAAAT,cAAAA,CAACa,iBAAA,EAAA,EAAM,SAAA,EAAU,SAAA,EAAU,GAC7B,CAAA,EACF,CAAA;AAAA,sBAEAb,cAAAA,CAAiBS,0BAAA,CAAA,QAAA,EAAhB,EAA0B,QAAA,EAAS;AAAA;AAAA;AACtC,CACD,CAAA;AACD,UAAA,CAAW,cAA8BA,0BAAA,CAAA,IAAA,CAAK,WAAA;AAE9C,IAAM,eAAA,GAAwBC,8BAG5B,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BV,cAAAA;AAAA,EAAiBS,0BAAA,CAAA,SAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,0BAAA,EAA4B,SAAS,CAAA;AAAA,IAClD,GAAG;AAAA;AACN,CACD,CAAA;AACD,eAAA,CAAgB,cAA8BA,0BAAA,CAAA,SAAA,CAAU,WAAA;ACzIxD,IAAM,eAAA,GAAmCK,2BAAA,CAAA,QAAA;AACzC,IAAM,OAAA,GAA2BA,2BAAA,CAAA,IAAA;AACjC,IAAM,cAAA,GAAkCA,2BAAA,CAAA,OAAA;AAExC,IAAM,cAAA,GAAuBC,kBAAA,CAAA,UAAA,CAG3B,CAAC,EAAE,SAAA,EAAW,UAAA,GAAa,CAAA,EAAG,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1Cf,cAAAA;AAAA,EAAkBc,2BAAA,CAAA,OAAA;AAAA,EAAjB;AAAA,IACC,GAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,oYAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD,CAAA;AACD,cAAA,CAAe,cAA+BA,2BAAA,CAAA,OAAA,CAAQ,WAAA;ACftD,SAAS,QAAA,CAAS;AAAA,EAChB,SAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA,GAAkB,IAAA;AAAA,EAClB,GAAG;AACL,CAAA,EAAkB;AAChB,EAAA,uBACEd,cAAAA;AAAA,IAACgB,wBAAA;AAAA,IAAA;AAAA,MACC,eAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,KAAA,EAAO,SAAS,CAAA;AAAA,MAC9B,UAAA,EAAY;AAAA,QACV,MAAA,EAAQ,+DAAA;AAAA,QACR,KAAA,EAAO,WAAA;AAAA,QACP,OAAA,EAAS,gDAAA;AAAA,QACT,aAAA,EAAe,qBAAA;AAAA,QACf,GAAA,EAAK,6BAAA;AAAA,QACL,UAAA,EAAY,EAAA;AAAA,UACV;AAAA,SACF;AAAA,QACA,mBAAA,EAAqB,iBAAA;AAAA,QACrB,eAAA,EAAiB,kBAAA;AAAA,QACjB,KAAA,EAAO,kCAAA;AAAA,QACP,QAAA,EAAU,MAAA;AAAA,QACV,SAAA,EACE,gEAAA;AAAA,QACF,GAAA,EAAK,kBAAA;AAAA,QACL,IAAA,EAAM,kTAAA;AAAA,QACN,GAAA,EAAK,EAAA;AAAA,UACH;AAAA,SACF;AAAA,QACA,aAAA,EAAe,eAAA;AAAA,QACf,YAAA,EACE,kIAAA;AAAA,QACF,SAAA,EAAW,kCAAA;AAAA,QACX,WAAA,EACE,sIAAA;AAAA,QACF,YAAA,EAAc,kCAAA;AAAA,QACd,gBAAA,EACE,8DAAA;AAAA,QACF,UAAA,EAAY,WAAA;AAAA,QACZ,GAAG;AAAA,OACL;AAAA,MACA,UAAA,EAAY;AAAA,QACV,UAAU,sBAAMhB,cAAAA,CAACiB,uBAAA,EAAA,EAAY,WAAU,SAAA,EAAU,CAAA;AAAA,QACjD,WAAW,sBAAMjB,cAAAA,CAACkB,wBAAA,EAAA,EAAa,WAAU,SAAA,EAAU;AAAA,OACrD;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AACA,QAAA,CAAS,WAAA,GAAc,UAAA;AC2BvB,SAAS,eAAA,CAAgB;AAAA,EACvB,YAAA;AAAA,EACA,WAAA;AAAA,EACA,aAAA;AAAA,EACA,gBAAA;AAAA,EACA;AACF,CAAA,EAAyB;AACvB,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAIC,iBAAS,KAAK,CAAA;AAE1D,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,QAAQ,YAAY,IAAA;AAAM,MACxB,KAAK,MAAA;AACH,QAAA,uBACEnB,cAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,MAAA;AAAA,YACL,KAAA,EAAO,aAAa,KAAA,IAAS,EAAA;AAAA,YAC7B,QAAA,EAAU,CAAC,CAAA,KAAM;AACf,cAAA,MAAM,KAAA,GAAQ,EAAE,MAAA,CAAO,KAAA;AACvB,cAAA,IAAI,YAAY,UAAA,EAAY,SAAA,IAAa,MAAM,MAAA,GAAS,WAAA,CAAY,WAAW,SAAA,EAAW;AACxF,gBAAA;AAAA,cACF;AACA,cAAA,aAAA,CAAc,KAAK,CAAA;AAAA,YACrB,CAAA;AAAA,YACA,WAAA,EAAY,eAAA;AAAA,YACZ,SAAA,EAAW,YAAY,UAAA,EAAY,SAAA;AAAA,YACnC,SAAA,EAAW,YAAY,UAAA,EAAY,SAAA;AAAA,YACnC,SAAA,EAAU;AAAA;AAAA,SACZ;AAAA,MAGJ,KAAK,QAAA;AACH,QAAA,MAAM,eAAA,GAAkB;AAAA,UACtB,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,QAAA,EAAS;AAAA,UACnC,EAAE,KAAA,EAAO,YAAA,EAAc,KAAA,EAAO,YAAA,EAAa;AAAA,UAC3C,EAAE,KAAA,EAAO,cAAA,EAAgB,KAAA,EAAO,cAAA,EAAe;AAAA,UAC/C,EAAE,KAAA,EAAO,WAAA,EAAa,KAAA,EAAO,WAAA,EAAY;AAAA,UACzC,EAAE,KAAA,EAAO,eAAA,EAAiB,KAAA,EAAO,kBAAA,EAAmB;AAAA,UACpD,EAAE,KAAA,EAAO,YAAA,EAAc,KAAA,EAAO,eAAA;AAAgB,SAChD;AAEA,QAAA,uBACEG,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kGAAA,EACb,QAAA,EAAA;AAAA,0BAAAA,eAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,aAAa,QAAA,IAAY,QAAA;AAAA,cAChC,aAAA,EAAe,CAAC,KAAA,KAAU,gBAAA,GAAmB,KAAK,CAAA;AAAA,cAElD,QAAA,EAAA;AAAA,gCAAAH,eAAC,aAAA,EAAA,EAAc,SAAA,EAAU,oDACvB,QAAA,kBAAAA,cAAAA,CAAC,eAAY,CAAA,EACf,CAAA;AAAA,gCACAA,cAAAA,CAAC,aAAA,EAAA,EACE,0BAAgB,GAAA,CAAI,CAAC,uBACpBA,cAAAA,CAAC,UAAA,EAAA,EAA0B,KAAA,EAAO,GAAG,KAAA,EAClC,QAAA,EAAA,EAAA,CAAG,SADW,EAAA,CAAG,KAEpB,CACD,CAAA,EACH;AAAA;AAAA;AAAA,WACF;AAAA,0BACAA,cAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,KAAA,EAAO,aAAa,KAAA,KAAU,MAAA,IAAa,aAAa,KAAA,KAAU,IAAA,GAAO,aAAa,KAAA,GAAQ,EAAA;AAAA,cAC9F,QAAA,EAAU,CAAC,CAAA,KAAM;AACf,gBAAA,MAAM,KAAA,GAAQ,EAAE,MAAA,CAAO,KAAA;AACvB,gBAAA,IAAI,UAAU,EAAA,EAAI;AAChB,kBAAA,aAAA,CAAc,EAAE,CAAA;AAChB,kBAAA;AAAA,gBACF;AACA,gBAAA,IAAI,QAAA,GAAW,YAAY,YAAA,EAAc,YAAA,GACrC,WAAW,KAAK,CAAA,GAChB,QAAA,CAAS,KAAA,EAAO,EAAE,CAAA;AAEtB,gBAAA,IAAI,KAAA,CAAM,QAAQ,CAAA,EAAG;AACnB,kBAAA;AAAA,gBACF;AAGA,gBAAA,IAAI,WAAA,CAAY,YAAA,EAAc,YAAA,IAAgB,WAAA,CAAY,cAAc,aAAA,EAAe;AACrF,kBAAA,MAAM,gBAAgB,KAAA,CAAM,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,GAAG,MAAA,IAAU,CAAA;AACrD,kBAAA,IAAI,aAAA,GAAgB,WAAA,CAAY,YAAA,CAAa,aAAA,EAAe;AAC1D,oBAAA;AAAA,kBACF;AAAA,gBACF;AAGA,gBAAA,IAAI,YAAY,YAAA,EAAc,GAAA,KAAQ,UAAa,QAAA,GAAW,WAAA,CAAY,aAAa,GAAA,EAAK;AAC1F,kBAAA,QAAA,GAAW,YAAY,YAAA,CAAa,GAAA;AAAA,gBACtC;AACA,gBAAA,IAAI,YAAY,YAAA,EAAc,GAAA,KAAQ,UAAa,QAAA,GAAW,WAAA,CAAY,aAAa,GAAA,EAAK;AAC1F,kBAAA,QAAA,GAAW,YAAY,YAAA,CAAa,GAAA;AAAA,gBACtC;AAEA,gBAAA,aAAA,CAAc,QAAQ,CAAA;AAAA,cACxB,CAAA;AAAA,cACA,WAAA,EAAY,iBAAA;AAAA,cACZ,GAAA,EAAK,YAAY,YAAA,EAAc,GAAA;AAAA,cAC/B,GAAA,EAAK,YAAY,YAAA,EAAc,GAAA;AAAA,cAC/B,IAAA,EAAM,WAAA,CAAY,YAAA,EAAc,YAAA,GAAe,IAAA,GAAO,CAAA;AAAA,cACtD,SAAA,EAAU;AAAA;AAAA;AACZ,SAAA,EACF,CAAA;AAAA,MAGJ,KAAK,UAAA;AACH,QAAA,uBACEG,eAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,aAAa,KAAA,IAAS,EAAA;AAAA,YAC7B,aAAA,EAAe,CAAC,KAAA,KAAU,aAAA,CAAc,KAAK,CAAA;AAAA,YAE7C,QAAA,EAAA;AAAA,8BAAAH,cAAAA,CAAC,iBAAc,SAAA,EAAU,2CAAA,EACvB,0BAAAA,cAAAA,CAAC,WAAA,EAAA,EAAY,WAAA,EAAY,kBAAA,EAAmB,CAAA,EAC9C,CAAA;AAAA,8BACAA,cAAAA,CAAC,aAAA,EAAA,EACE,sBAAY,eAAA,EAAiB,GAAA,CAAI,CAAC,MAAA,qBACjCA,eAAC,UAAA,EAAA,EAA8B,KAAA,EAAO,OAAO,KAAA,EAC1C,QAAA,EAAA,MAAA,CAAO,SADO,MAAA,CAAO,KAExB,CACD,CAAA,EACH;AAAA;AAAA;AAAA,SACF;AAAA,MAGJ,KAAK,SAAA;AACH,QAAA,MAAM,SAAA,GAAY,WAAA,CAAY,aAAA,EAAe,SAAA,IAAa,IAAA;AAC1D,QAAA,MAAM,UAAA,GAAa,WAAA,CAAY,aAAA,EAAe,UAAA,IAAc,KAAA;AAE5D,QAAA,uBACEG,eAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,YAAA,CAAa,KAAA,KAAU,MAAA,IAAa,YAAA,CAAa,UAAU,IAAA,GAAO,MAAA,CAAO,YAAA,CAAa,KAAK,CAAA,GAAI,EAAA;AAAA,YACtG,aAAA,EAAe,CAAC,KAAA,KAAU,aAAA,CAAc,UAAU,MAAM,CAAA;AAAA,YAExD,QAAA,EAAA;AAAA,8BAAAH,cAAAA,CAAC,iBAAc,SAAA,EAAU,0CAAA,EACvB,0BAAAA,cAAAA,CAAC,WAAA,EAAA,EAAY,WAAA,EAAY,WAAA,EAAY,CAAA,EACvC,CAAA;AAAA,8BACAG,gBAAC,aAAA,EAAA,EACC,QAAA,EAAA;AAAA,gCAAAH,cAAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAM,MAAA,EAAQ,QAAA,EAAA,SAAA,EAAU,CAAA;AAAA,gCACpCA,cAAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAM,SAAS,QAAA,EAAA,UAAA,EAAW;AAAA,eAAA,EACxC;AAAA;AAAA;AAAA,SACF;AAAA,MAGJ,KAAK,MAAA;AACH,QAAA,MAAM,aAAA,GAAgB;AAAA,UACpB,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,QAAA,EAAS;AAAA,UACnC,EAAE,KAAA,EAAO,YAAA,EAAc,KAAA,EAAO,YAAA,EAAa;AAAA,UAC3C,EAAE,KAAA,EAAO,cAAA,EAAgB,KAAA,EAAO,cAAA,EAAe;AAAA,UAC/C,EAAE,KAAA,EAAO,WAAA,EAAa,KAAA,EAAO,WAAA,EAAY;AAAA,UACzC,EAAE,KAAA,EAAO,eAAA,EAAiB,KAAA,EAAO,kBAAA,EAAmB;AAAA,UACpD,EAAE,KAAA,EAAO,YAAA,EAAc,KAAA,EAAO,eAAA;AAAgB,SAChD;AAEA,QAAA,MAAM,YAAA,GAAe,YAAA,CAAa,KAAA,GAC7B,OAAO,YAAA,CAAa,KAAA,KAAU,QAAA,GAAW,IAAI,IAAA,CAAK,YAAA,CAAa,KAAK,CAAA,GAAI,aAAa,KAAA,GACtF,MAAA;AAEJ,QAAA,uBACEG,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gGAAA,EACb,QAAA,EAAA;AAAA,0BAAAA,eAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,aAAa,QAAA,IAAY,QAAA;AAAA,cAChC,aAAA,EAAe,CAAC,KAAA,KAAU,gBAAA,GAAmB,KAAK,CAAA;AAAA,cAElD,QAAA,EAAA;AAAA,gCAAAH,eAAC,aAAA,EAAA,EAAc,SAAA,EAAU,oDACvB,QAAA,kBAAAA,cAAAA,CAAC,eAAY,CAAA,EACf,CAAA;AAAA,gCACAA,cAAAA,CAAC,aAAA,EAAA,EACE,wBAAc,GAAA,CAAI,CAAC,uBAClBA,cAAAA,CAAC,UAAA,EAAA,EAA0B,KAAA,EAAO,GAAG,KAAA,EAClC,QAAA,EAAA,EAAA,CAAG,SADW,EAAA,CAAG,KAEpB,CACD,CAAA,EACH;AAAA;AAAA;AAAA,WACF;AAAA,0BACAG,eAAAA,CAAC,OAAA,EAAA,EAAQ,IAAA,EAAM,cAAA,EAAgB,cAAc,iBAAA,EAC3C,QAAA,EAAA;AAAA,4BAAAH,cAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACrB,QAAA,kBAAAG,eAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAQ,SAAA;AAAA,gBACR,SAAA,EAAW,EAAA;AAAA,kBACT,4EAAA;AAAA,kBACA,CAAC,YAAA,IAAgB;AAAA,iBACnB;AAAA,gBAEA,QAAA,EAAA;AAAA,kCAAAH,cAAAA,CAACoB,oBAAA,EAAA,EAAa,SAAA,EAAU,yCAAA,EAA0C,CAAA;AAAA,kCAClEpB,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,wBAAA,EACb,yBACCqB,cAAA,CAAO,YAAA,EAAc,aAAa,CAAA,GAElC,aAAA,EAEJ;AAAA;AAAA;AAAA,aACF,EACF,CAAA;AAAA,4BACArB,cAAAA,CAAC,cAAA,EAAA,EAAe,WAAU,iCAAA,EAAkC,KAAA,EAAM,SAChE,QAAA,kBAAAA,cAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,QAAA;AAAA,gBACL,QAAA,EAAU,YAAA;AAAA,gBACV,QAAA,EAAU,CAAC,IAAA,KAAS;AAClB,kBAAA,aAAA,CAAc,IAAI,CAAA;AAClB,kBAAA,iBAAA,CAAkB,KAAK,CAAA;AAAA,gBACzB,CAAA;AAAA,gBACA,YAAA,EAAY;AAAA;AAAA,aACd,EACF;AAAA,WAAA,EACF;AAAA,SAAA,EACF,CAAA;AAAA,MAGJ;AACE,QAAA,OAAO,IAAA;AAAA;AACX,EACF,CAAA;AAEA,EAAA,uBACEG,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iHAAA,EACb,QAAA,EAAA;AAAA,oBAAAH,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,6EAAA,EAA+E,sBAAY,KAAA,EAAM,CAAA;AAAA,oBACjHA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2DAAA,EACZ,uBAAY,EACf,CAAA;AAAA,oBACAA,cAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAK,IAAA;AAAA,QACL,OAAA,EAAS,QAAA;AAAA,QACT,SAAA,EAAU,6EAAA;AAAA,QACV,YAAA,EAAY,CAAA,OAAA,EAAU,WAAA,CAAY,KAAK,CAAA,OAAA,CAAA;AAAA,QAEvC,QAAA,kBAAAA,cAAAA,CAACsB,kBAAA,EAAA,EAAO,SAAA,EAAU,yBAAA,EAA0B;AAAA;AAAA;AAC9C,GAAA,EACF,CAAA;AAEJ;AAEO,SAAS,uBAAA,CAAwB;AAAA,EACtC,eAAA;AAAA,EACA,cAAA;AAAA,EACA,iBAAiB,EAAC;AAAA,EAClB,KAAA,GAAQ,QAAA;AAAA,EACR,WAAA,GAAc;AAChB,CAAA,EAAiC;AAC/B,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIH,iBAAS,KAAK,CAAA;AAC1C,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,iBAAyB,cAAc,CAAA;AAC/E,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAIA,iBAAS,KAAK,CAAA;AAG1D,EAAAI,iBAAA,CAAU,MAAM;AACd,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,eAAA,CAAgB,cAAc,CAAA;AAAA,IAChC;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,cAAc,CAAC,CAAA;AAE3B,EAAA,MAAM,cAAA,GAAiB,CAAC,UAAA,KAAuB;AAE7C,IAAA,IAAI,aAAa,IAAA,CAAK,CAAA,EAAA,KAAM,EAAA,CAAG,KAAA,KAAU,UAAU,CAAA,EAAG;AACpD,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,cAAc,eAAA,CAAgB,IAAA,CAAK,CAAA,EAAA,KAAM,EAAA,CAAG,UAAU,UAAU,CAAA;AACtE,IAAA,IAAI,CAAC,WAAA,EAAa;AAChB,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,YAAA,GAAoB,EAAA;AACxB,IAAA,IAAI,WAAA,CAAY,SAAS,SAAA,EAAW;AAClC,MAAA,YAAA,GAAe,KAAA;AAAA,IACjB,CAAA,MAAA,IAAW,WAAA,CAAY,IAAA,KAAS,QAAA,EAAU;AACxC,MAAA,YAAA,GAAe,WAAA,CAAY,cAAc,GAAA,IAAO,CAAA;AAAA,IAClD,CAAA,MAAA,IAAW,WAAA,CAAY,IAAA,KAAS,MAAA,EAAQ;AACtC,MAAA,YAAA,uBAAmB,IAAA,EAAK;AAAA,IAC1B;AAEA,IAAA,MAAM,SAAA,GAA0B;AAAA,MAC9B,KAAA,EAAO,UAAA;AAAA,MACP,UAAW,WAAA,CAAY,IAAA,KAAS,YAAY,WAAA,CAAY,IAAA,KAAS,SAAU,QAAA,GAAW,MAAA;AAAA,MACtF,KAAA,EAAO;AAAA,KACT;AACA,IAAA,eAAA,CAAgB,CAAC,GAAG,YAAA,EAAc,SAAS,CAAC,CAAA;AAC5C,IAAA,iBAAA,CAAkB,KAAK,CAAA;AAAA,EACzB,CAAA;AAEA,EAAA,MAAM,iBAAA,GAAoB,CAAC,UAAA,KAAuB;AAChD,IAAA,eAAA,CAAgB,aAAa,MAAA,CAAO,CAAA,EAAA,KAAM,EAAA,CAAG,KAAA,KAAU,UAAU,CAAC,CAAA;AAAA,EACpE,CAAA;AAEA,EAAA,MAAM,iBAAA,GAAoB,CAAC,UAAA,EAAoB,KAAA,KAAe;AAC5D,IAAA,eAAA;AAAA,MACE,YAAA,CAAa,GAAA;AAAA,QAAI,CAAA,EAAA,KACf,GAAG,KAAA,KAAU,UAAA,GAAa,EAAE,GAAG,EAAA,EAAI,OAAM,GAAI;AAAA;AAC/C,KACF;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,oBAAA,GAAuB,CAAC,UAAA,EAAoB,QAAA,KAAqB;AACrE,IAAA,eAAA;AAAA,MACE,YAAA,CAAa,GAAA;AAAA,QAAI,CAAA,EAAA,KACf,GAAG,KAAA,KAAU,UAAA,GAAa,EAAE,GAAG,EAAA,EAAI,UAAS,GAAI;AAAA;AAClD,KACF;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,cAAc,MAAM;AAExB,IAAA,cAAA,CAAe,CAAC,GAAG,YAAY,CAAC,CAAA;AAChC,IAAA,SAAA,CAAU,KAAK,CAAA;AAAA,EACjB,CAAA;AAEA,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,eAAA,CAAgB,cAAc,CAAA;AAC9B,IAAA,SAAA,CAAU,KAAK,CAAA;AAAA,EACjB,CAAA;AAEA,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,eAAA,CAAgB,EAAE,CAAA;AAAA,EACpB,CAAA;AAGA,EAAA,MAAM,uBAAuB,eAAA,CAAgB,MAAA;AAAA,IAC3C,CAAA,EAAA,KAAM,CAAC,YAAA,CAAa,IAAA,CAAK,QAAM,EAAA,CAAG,KAAA,KAAU,GAAG,KAAK;AAAA,GACtD;AAGA,EAAA,MAAM,cAAA,GAAiB,CAAC,UAAA,KAAgD;AACtE,IAAA,OAAO,eAAA,CAAgB,IAAA,CAAK,CAAA,EAAA,KAAM,EAAA,CAAG,UAAU,UAAU,CAAA;AAAA,EAC3D,CAAA;AAGA,EAAA,MAAM,gBAAA,GAAmB,eAAe,MAAA,GAAS,CAAA;AAGjD,EAAA,MAAM,iBAAiB,gBAAA,mBACrBpB,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,sCAAA,EACb,QAAA,EAAA;AAAA,oBAAAH,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8CAAA,EAA+C,QAAA,EAAA,iBAAA,EAAe,CAAA;AAAA,IAC5E,cAAA,CAAe,GAAA,CAAI,CAAC,YAAA,KAAiB;AACpC,MAAA,MAAM,WAAA,GAAc,cAAA,CAAe,YAAA,CAAa,KAAK,CAAA;AACrD,MAAA,IAAI,CAAC,aAAa,OAAO,IAAA;AAEzB,MAAA,IAAI,YAAA,GAAe,MAAA,CAAO,YAAA,CAAa,KAAK,CAAA;AAC5C,MAAA,IAAI,WAAA,CAAY,SAAS,SAAA,EAAW;AAClC,QAAA,YAAA,GAAe,YAAA,CAAa,QACvB,WAAA,CAAY,aAAA,EAAe,aAAa,IAAA,GACxC,WAAA,CAAY,eAAe,UAAA,IAAc,KAAA;AAAA,MAChD,CAAA,MAAA,IAAW,WAAA,CAAY,IAAA,KAAS,UAAA,EAAY;AAC1C,QAAA,MAAM,MAAA,GAAS,YAAY,eAAA,EAAiB,IAAA,CAAK,SAAO,GAAA,CAAI,KAAA,KAAU,aAAa,KAAK,CAAA;AACxF,QAAA,YAAA,GAAe,QAAQ,KAAA,IAAS,YAAA;AAAA,MAClC,CAAA,MAAA,IAAW,WAAA,CAAY,IAAA,KAAS,MAAA,EAAQ;AACtC,QAAA,MAAM,SAAA,GAAY,aAAa,KAAA,YAAiB,IAAA,GAC5C,aAAa,KAAA,GACb,IAAI,IAAA,CAAK,YAAA,CAAa,KAAK,CAAA;AAC/B,QAAA,IAAI,CAAC,KAAA,CAAM,SAAA,CAAU,OAAA,EAAS,CAAA,EAAG;AAC/B,UAAA,YAAA,GAAeqB,cAAA,CAAO,WAAW,aAAa,CAAA;AAAA,QAChD;AAAA,MACF;AAEA,MAAA,MAAM,gBAAgB,YAAA,CAAa,QAAA,GAC/B,YAAA,CAAa,QAAA,CAAS,QAAQ,GAAA,EAAK,GAAG,CAAA,CAAE,OAAA,CAAQ,SAAS,CAAA,CAAA,KAAK,CAAA,CAAE,WAAA,EAAa,IAAI,GAAA,GACjF,EAAA;AAEJ,MAAA,uBACElB,eAAAA,CAAC,KAAA,EAAA,EAA6B,SAAA,EAAU,0BAAA,EACrC,QAAA,EAAA;AAAA,QAAA,WAAA,CAAY,KAAA;AAAA,QAAM,IAAA;AAAA,QAAG,aAAA;AAAA,QAAe;AAAA,OAAA,EAAA,EAD7B,aAAa,KAEvB,CAAA;AAAA,IAEJ,CAAC;AAAA,GAAA,EACH,oBAEAH,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sCAAqC,QAAA,EAAA,mBAAA,EAAiB,CAAA;AAGvE,EAAA,uBACEG,eAAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,cAAc,SAAA,EAClC,QAAA,EAAA;AAAA,oBAAAH,cAAAA,CAAC,eAAA,EAAA,EACC,QAAA,kBAAAG,eAAAA,CAAC,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAH,cAAAA,CAAC,kBAAe,OAAA,EAAO,IAAA,EACrB,0BAAAA,cAAAA,CAAC,aAAA,EAAA,EAAc,OAAA,EAAO,IAAA,EACpB,QAAA,kBAAAG,eAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAQ,SAAA;AAAA,UACR,IAAA,EAAK,IAAA;AAAA,UACL,SAAA,EAAU,mBAAA;AAAA,UACV,YAAA,EAAW,oBAAA;AAAA,UAEX,QAAA,EAAA;AAAA,4BAAAH,cAAAA;AAAA,cAACwB,kBAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,EAAA;AAAA,kBACT,8BAAA;AAAA,kBACA,gBAAA,IAAoB;AAAA;AACtB;AAAA,aACF;AAAA,YAAE;AAAA;AAAA;AAAA,SAGN,CAAA,EACF,CAAA;AAAA,sBACAxB,cAAAA,CAAC,cAAA,EAAA,EACE,QAAA,EAAA,cAAA,EACH;AAAA,KAAA,EACF,CAAA,EACF,CAAA;AAAA,oBACAG,eAAAA,CAAC,aAAA,EAAA,EAAc,SAAA,EAAU,wEAAA,EACvB,QAAA,EAAA;AAAA,sBAAAA,gBAAC,YAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAH,cAAAA,CAAC,eAAa,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,wBACpBA,cAAAA,CAAC,iBAAA,EAAA,EACE,QAAA,EAAA,WAAA,EACH;AAAA,OAAA,EACF,CAAA;AAAA,sBACAG,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uCAAA,EAEb,QAAA,EAAA;AAAA,wBAAAH,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EACb,QAAA,kBAAAG,gBAAC,OAAA,EAAA,EAAQ,IAAA,EAAM,cAAA,EAAgB,YAAA,EAAc,iBAAA,EAC3C,QAAA,EAAA;AAAA,0BAAAH,cAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACrB,QAAA,kBAAAG,eAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAQ,SAAA;AAAA,cACR,IAAA,EAAK,UAAA;AAAA,cACL,eAAA,EAAe,cAAA;AAAA,cACf,SAAA,EAAU,+CAAA;AAAA,cAEV,QAAA,EAAA;AAAA,gCAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wCAAA,EACb,QAAA,EAAA;AAAA,kCAAAH,cAAAA,CAACyB,gBAAA,EAAA,EAAK,SAAA,EAAU,4BAAA,EAA6B,CAAA;AAAA,kCAC7CzB,cAAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAA,WAAA,EAAS;AAAA,iBAAA,EACjB,CAAA;AAAA,gCACAA,cAAAA,CAAC0B,0BAAA,EAAA,EAAe,SAAA,EAAU,mDAAA,EAAoD;AAAA;AAAA;AAAA,WAChF,EACF,CAAA;AAAA,0BACA1B,cAAAA,CAAC,cAAA,EAAA,EAAe,WAAU,iCAAA,EACxB,QAAA,kBAAAG,gBAAC,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,4BAAAH,cAAAA,CAAC,YAAA,EAAA,EAAa,WAAA,EAAY,kBAAA,EAAmB,WAAU,mBAAA,EAAoB,CAAA;AAAA,4BAC3EA,cAAAA,CAAC,WAAA,EAAA,EACE,+BAAqB,MAAA,KAAW,CAAA,mBAC/BA,cAAAA,CAAC,YAAA,EAAA,EAAa,QAAA,EAAA,kBAAA,EAAgB,CAAA,mBAE9BA,cAAAA,CAAC,YAAA,EAAA,EACE,+BAAqB,GAAA,CAAI,CAAC,0BACzBG,eAAAA;AAAA,cAAC,WAAA;AAAA,cAAA;AAAA,gBAEC,OAAO,KAAA,CAAM,KAAA;AAAA,gBACb,QAAA,EAAU,MAAM,cAAA,CAAe,KAAA,CAAM,KAAK,CAAA;AAAA,gBAC1C,SAAA,EAAU,kBAAA;AAAA,gBAEV,QAAA,EAAA;AAAA,kCAAAH,cAAAA;AAAA,oBAAC2B,iBAAA;AAAA,oBAAA;AAAA,sBACC,SAAA,EAAW,EAAA;AAAA,wBACT,6BAAA;AAAA,wBACwB;AAAA;AAC1B;AAAA,mBACF;AAAA,kBACC,KAAA,CAAM;AAAA;AAAA,eAAA;AAAA,cAXF,KAAA,CAAM;AAAA,aAad,GACH,CAAA,EAEJ;AAAA,WAAA,EACF,CAAA,EACF;AAAA,SAAA,EACF,CAAA,EACF,CAAA;AAAA,QAGC,YAAA,CAAa,MAAA,GAAS,CAAA,mBACrB3B,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kCAAA,EACZ,QAAA,EAAA,YAAA,CAAa,GAAA,CAAI,CAAC,YAAA,KAAiB;AAClC,UAAA,MAAM,WAAA,GAAc,cAAA,CAAe,YAAA,CAAa,KAAK,CAAA;AACrD,UAAA,IAAI,CAAC,aAAa,OAAO,IAAA;AAEzB,UAAA,uBACEA,cAAAA;AAAA,YAAC,eAAA;AAAA,YAAA;AAAA,cAEC,YAAA;AAAA,cACA,WAAA;AAAA,cACA,eAAe,CAAC,KAAA,KAAU,iBAAA,CAAkB,YAAA,CAAa,OAAO,KAAK,CAAA;AAAA,cACrE,kBAAkB,CAAC,QAAA,KAAa,oBAAA,CAAqB,YAAA,CAAa,OAAO,QAAQ,CAAA;AAAA,cACjF,QAAA,EAAU,MAAM,iBAAA,CAAkB,YAAA,CAAa,KAAK;AAAA,aAAA;AAAA,YAL/C,YAAA,CAAa;AAAA,WAMpB;AAAA,QAEJ,CAAC,GACH,CAAA,mBAEAA,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0EAAyE,QAAA,EAAA,sEAAA,EAExF;AAAA,OAAA,EAEJ,CAAA;AAAA,sBACAG,gBAAC,YAAA,EAAA,EACE,QAAA,EAAA;AAAA,QAAA,YAAA,CAAa,MAAA,GAAS,qBACrBA,eAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,SAAA;AAAA,YACR,OAAA,EAAS,cAAA;AAAA,YACT,SAAA,EAAU,mBAAA;AAAA,YAEV,QAAA,EAAA;AAAA,8BAAAH,cAAAA,CAACI,aAAAA,EAAA,EAAE,SAAA,EAAU,iCAAA,EAAkC,CAAA;AAAA,cAAE;AAAA;AAAA;AAAA,SAEnD;AAAA,wBAEFJ,cAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,WAAA;AAAA,YACT,SAAA,EAAU,eAAA;AAAA,YACX,QAAA,EAAA;AAAA;AAAA,SAED;AAAA,wBACAA,cAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,SAAA;AAAA,YACR,OAAA,EAAS,YAAA;AAAA,YACT,SAAA,EAAU,gBAAA;AAAA,YACX,QAAA,EAAA;AAAA;AAAA;AAED,OAAA,EACF;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;ACpkBA,IAAM,MAAA,GAAe4B,8BAGnB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1B5B,cAAAA;AAAA,EAAkB6B,2BAAA,CAAA,IAAA;AAAA,EAAjB;AAAA,IACC,SAAA,EAAW,EAAA;AAAA,MACT,oXAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IACJ,GAAA;AAAA,IAEA,QAAA,kBAAA7B,cAAAA;AAAA,MAAkB6B,2BAAA,CAAA,KAAA;AAAA,MAAjB;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT;AAAA;AACF;AAAA;AACF;AACF,CACD,CAAA;AACD,MAAA,CAAO,cAA+BA,2BAAA,CAAA,IAAA,CAAK,WAAA;ACjB3C,IAAMC,MAAAA,GAAcC,kBAAA,CAAA,UAAA;AAAA,EAClB,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AAChC,IAAA,uBACE/B,cAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,4FAAA;AAAA,UACA;AAAA,SACF;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF,CAAA;AACA8B,MAAAA,CAAM,WAAA,GAAc,OAAA;ACuDpB,SAAS,qBAAA,CAAsB;AAAA,EAC7B,UAAA;AAAA,EACA,UAAA;AAAA,EACA,iBAAA;AAAA,EACA;AACF,CAAA,EAA+B;AAC7B,EAAA,MAAM;AAAA,IACJ,UAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,MACEE,oBAAA,CAAY,EAAE,EAAA,EAAI,UAAA,CAAW,OAAO,CAAA;AAExC,EAAA,MAAM,KAAA,GAAQ;AAAA,IACZ,SAAA,EAAWC,aAAA,CAAI,SAAA,CAAU,QAAA,CAAS,SAAS,CAAA;AAAA,IAC3C,UAAA;AAAA,IACA,OAAA,EAAS,aAAa,GAAA,GAAM;AAAA,GAC9B;AAEA,EAAA,uBACE9B,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,UAAA;AAAA,MACL,KAAA;AAAA,MACA,SAAA,EAAU,oFAAA;AAAA,MAEV,QAAA,EAAA;AAAA,wBAAAH,cAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACE,GAAG,UAAA;AAAA,YACH,GAAG,SAAA;AAAA,YACJ,SAAA,EAAU,gGAAA;AAAA,YAEV,QAAA,kBAAAA,cAAAA,CAACkC,wBAAA,EAAA,EAAa,SAAA,EAAU,uBAAA,EAAwB;AAAA;AAAA,SAClD;AAAA,wBACAlC,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,8CAA8C,QAAA,EAAA,UAAA,EAAW,CAAA;AAAA,wBACzEG,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+CAAA,EACb,QAAA,EAAA;AAAA,0BAAAH,cAAAA,CAAC8B,MAAAA,EAAA,EAAM,OAAA,EAAS,UAAU,UAAA,CAAW,KAAK,CAAA,CAAA,EAAI,SAAA,EAAU,mDAAA,EACrD,QAAA,EAAA,UAAA,CAAW,SAAA,KAAc,KAAA,GAAQ,cAAc,YAAA,EAClD,CAAA;AAAA,0BACA9B,cAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,EAAA,EAAI,CAAA,OAAA,EAAU,UAAA,CAAW,KAAK,CAAA,CAAA;AAAA,cAC9B,OAAA,EAAS,WAAW,SAAA,KAAc,MAAA;AAAA,cAClC,iBAAiB,CAAC,OAAA,KAAY,iBAAA,CAAkB,OAAA,GAAU,SAAS,KAAK,CAAA;AAAA,cACxE,YAAA,EAAY,6BAA6B,UAAU,CAAA;AAAA;AAAA;AACrD,SAAA,EACF,CAAA;AAAA,wBACAA,cAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAK,IAAA;AAAA,YACL,OAAA,EAAS,QAAA;AAAA,YACT,SAAA,EAAU,oEAAA;AAAA,YACV,YAAA,EAAY,UAAU,UAAU,CAAA,UAAA,CAAA;AAAA,YAEhC,QAAA,kBAAAA,cAAAA,CAACsB,kBAAAA,EAAA,EAAO,WAAU,yBAAA,EAA0B;AAAA;AAAA;AAC9C;AAAA;AAAA,GACF;AAEJ;AAEO,SAAS,qBAAA,CAAsB;AAAA,EACpC,eAAA;AAAA,EACA,YAAA;AAAA,EACA,oBAAoB,EAAC;AAAA,EACrB,KAAA,GAAQ,MAAA;AAAA,EACR,WAAA,GAAc;AAChB,CAAA,EAA+B;AAC7B,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIH,iBAAS,KAAK,CAAA;AAC1C,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,iBAAuB,iBAAiB,CAAA;AAC5E,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAIA,iBAAS,KAAK,CAAA;AAE1D,EAAA,MAAM,OAAA,GAAUgB,iBAAA;AAAA,IACdC,iBAAUC,oBAAa,CAAA;AAAA,IACvBD,iBAAUE,qBAAA,EAAgB;AAAA,MACxB,gBAAA,EAAkBC;AAAA,KACnB;AAAA,GACH;AAGA,EAAAhB,kBAAU,MAAM;AACd,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,aAAA,CAAc,iBAAiB,CAAA;AAAA,IACjC;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,iBAAiB,CAAC,CAAA;AAE9B,EAAA,MAAM,cAAA,GAAiB,CAAC,UAAA,KAAuB;AAE7C,IAAA,IAAI,WAAW,IAAA,CAAK,CAAA,EAAA,KAAM,EAAA,CAAG,KAAA,KAAU,UAAU,CAAA,EAAG;AAClD,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,QAAA,GAAuB;AAAA,MAC3B,KAAA,EAAO,UAAA;AAAA,MACP,SAAA,EAAW;AAAA,KACb;AACA,IAAA,aAAA,CAAc,CAAC,GAAG,UAAA,EAAY,QAAQ,CAAC,CAAA;AACvC,IAAA,iBAAA,CAAkB,KAAK,CAAA;AAAA,EACzB,CAAA;AAEA,EAAA,MAAM,iBAAA,GAAoB,CAAC,UAAA,KAAuB;AAChD,IAAA,aAAA,CAAc,WAAW,MAAA,CAAO,CAAA,EAAA,KAAM,EAAA,CAAG,KAAA,KAAU,UAAU,CAAC,CAAA;AAAA,EAChE,CAAA;AAEA,EAAA,MAAM,qBAAA,GAAwB,CAAC,UAAA,EAAoB,SAAA,KAA8B;AAC/E,IAAA,aAAA;AAAA,MACE,UAAA,CAAW,GAAA;AAAA,QAAI,CAAA,EAAA,KACb,GAAG,KAAA,KAAU,UAAA,GAAa,EAAE,GAAG,EAAA,EAAI,WAAU,GAAI;AAAA;AACnD,KACF;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAwB;AAC7C,IAAA,MAAM,EAAE,MAAA,EAAQ,IAAA,EAAK,GAAI,KAAA;AAEzB,IAAA,IAAI,CAAC,IAAA,IAAQ,MAAA,CAAO,EAAA,KAAO,KAAK,EAAA,EAAI;AAClC,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,WAAW,UAAA,CAAW,SAAA,CAAU,QAAM,EAAA,CAAG,KAAA,KAAU,OAAO,EAAE,CAAA;AAClE,IAAA,MAAM,WAAW,UAAA,CAAW,SAAA,CAAU,QAAM,EAAA,CAAG,KAAA,KAAU,KAAK,EAAE,CAAA;AAEhE,IAAA,IAAI,QAAA,KAAa,EAAA,IAAM,QAAA,KAAa,EAAA,EAAI;AACtC,MAAA,aAAA,CAAciB,kBAAA,CAAU,UAAA,EAAY,QAAA,EAAU,QAAQ,CAAC,CAAA;AAAA,IACzD;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,cAAc,MAAM;AAExB,IAAA,YAAA,CAAa,CAAC,GAAG,UAAU,CAAC,CAAA;AAC5B,IAAA,SAAA,CAAU,KAAK,CAAA;AAAA,EACjB,CAAA;AAEA,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,aAAA,CAAc,iBAAiB,CAAA;AAC/B,IAAA,SAAA,CAAU,KAAK,CAAA;AAAA,EACjB,CAAA;AAEA,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,aAAA,CAAc,EAAE,CAAA;AAAA,EAClB,CAAA;AAGA,EAAA,MAAM,uBAAuB,eAAA,CAAgB,MAAA;AAAA,IAC3C,CAAA,EAAA,KAAM,CAAC,UAAA,CAAW,IAAA,CAAK,QAAM,EAAA,CAAG,KAAA,KAAU,GAAG,KAAK;AAAA,GACpD;AAGA,EAAA,MAAM,aAAA,GAAgB,CAAC,UAAA,KAA+B;AACpD,IAAA,OAAO,gBAAgB,IAAA,CAAK,CAAA,EAAA,KAAM,GAAG,KAAA,KAAU,UAAU,GAAG,KAAA,IAAS,UAAA;AAAA,EACvE,CAAA;AAGA,EAAA,MAAM,cAAA,GAAiB,kBAAkB,MAAA,GAAS,CAAA;AAGlD,EAAA,MAAM,iBAAiB,cAAA,mBACrBrC,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,oCAAA,EACb,QAAA,EAAA;AAAA,oBAAAH,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8CAAA,EAA+C,QAAA,EAAA,eAAA,EAAa,CAAA;AAAA,IAC1E,iBAAA,CAAkB,IAAI,CAAC,UAAA,EAAY,0BAClCG,eAAAA,CAAC,KAAA,EAAA,EAA2B,SAAA,EAAU,0BAAA,EACnC,QAAA,EAAA;AAAA,MAAA,KAAA,GAAQ,CAAA;AAAA,MAAE,IAAA;AAAA,MAAG,aAAA,CAAc,WAAW,KAAK,CAAA;AAAA,MAAE,IAAA;AAAA,MAAG,UAAA,CAAW,SAAA,KAAc,KAAA,GAAQ,KAAA,GAAQ,MAAA;AAAA,MAAO;AAAA,KAAA,EAAA,EADzF,UAAA,CAAW,KAErB,CACD;AAAA,GAAA,EACH,oBAEAH,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oCAAmC,QAAA,EAAA,iBAAA,EAAe,CAAA;AAGnE,EAAA,uBACEG,eAAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,cAAc,SAAA,EAClC,QAAA,EAAA;AAAA,oBAAAH,cAAAA,CAAC,eAAA,EAAA,EACC,QAAA,kBAAAG,eAAAA,CAAC,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAH,cAAAA,CAAC,kBAAe,OAAA,EAAO,IAAA,EACrB,0BAAAA,cAAAA,CAAC,aAAA,EAAA,EAAc,OAAA,EAAO,IAAA,EACpB,QAAA,kBAAAG,eAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAQ,SAAA;AAAA,UACR,IAAA,EAAK,IAAA;AAAA,UACL,SAAA,EAAU,iBAAA;AAAA,UACV,YAAA,EAAW,kBAAA;AAAA,UAEX,QAAA,EAAA;AAAA,4BAAAH,cAAAA;AAAA,cAACyC,uBAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,EAAA;AAAA,kBACT,4BAAA;AAAA,kBACA,cAAA,IAAkB;AAAA;AACpB;AAAA,aACF;AAAA,YAAE;AAAA;AAAA;AAAA,SAGN,CAAA,EACF,CAAA;AAAA,sBACAzC,cAAAA,CAAC,cAAA,EAAA,EACE,QAAA,EAAA,cAAA,EACH;AAAA,KAAA,EACF,CAAA,EACF,CAAA;AAAA,oBACAG,eAAAA,CAAC,aAAA,EAAA,EAAc,SAAA,EAAU,kCAAA,EACvB,QAAA,EAAA;AAAA,sBAAAA,gBAAC,YAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAH,cAAAA,CAAC,eAAa,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,wBACpBA,cAAAA,CAAC,iBAAA,EAAA,EACE,QAAA,EAAA,WAAA,EACH;AAAA,OAAA,EACF,CAAA;AAAA,sBACAG,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qCAAA,EAEb,QAAA,EAAA;AAAA,wBAAAH,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EACb,QAAA,kBAAAG,gBAAC,OAAA,EAAA,EAAQ,IAAA,EAAM,cAAA,EAAgB,YAAA,EAAc,iBAAA,EAC3C,QAAA,EAAA;AAAA,0BAAAH,cAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACrB,QAAA,kBAAAG,eAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAQ,SAAA;AAAA,cACR,IAAA,EAAK,UAAA;AAAA,cACL,eAAA,EAAe,cAAA;AAAA,cACf,SAAA,EAAU,+CAAA;AAAA,cAEV,QAAA,EAAA;AAAA,gCAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wCAAA,EACb,QAAA,EAAA;AAAA,kCAAAH,cAAAA,CAACyB,gBAAAA,EAAA,EAAK,SAAA,EAAU,4BAAA,EAA6B,CAAA;AAAA,kCAC7CzB,cAAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAA,WAAA,EAAS;AAAA,iBAAA,EACjB,CAAA;AAAA,gCACAA,cAAAA,CAAC0B,0BAAAA,EAAA,EAAe,WAAU,mDAAA,EAAoD;AAAA;AAAA;AAAA,WAChF,EACF,CAAA;AAAA,0BACA1B,cAAAA,CAAC,cAAA,EAAA,EAAe,WAAU,iCAAA,EACxB,QAAA,kBAAAG,gBAAC,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,4BAAAH,cAAAA,CAAC,YAAA,EAAA,EAAa,WAAA,EAAY,kBAAA,EAAmB,WAAU,mBAAA,EAAoB,CAAA;AAAA,4BAC3EA,cAAAA,CAAC,WAAA,EAAA,EACE,+BAAqB,MAAA,KAAW,CAAA,mBAC/BA,cAAAA,CAAC,YAAA,EAAA,EAAa,QAAA,EAAA,kBAAA,EAAgB,CAAA,mBAE9BA,cAAAA,CAAC,YAAA,EAAA,EACE,+BAAqB,GAAA,CAAI,CAAC,0BACzBG,eAAAA;AAAA,cAAC,WAAA;AAAA,cAAA;AAAA,gBAEC,OAAO,KAAA,CAAM,KAAA;AAAA,gBACb,QAAA,EAAU,MAAM,cAAA,CAAe,KAAA,CAAM,KAAK,CAAA;AAAA,gBAC1C,SAAA,EAAU,kBAAA;AAAA,gBAEV,QAAA,EAAA;AAAA,kCAAAH,cAAAA;AAAA,oBAAC2B,iBAAAA;AAAA,oBAAA;AAAA,sBACC,SAAA,EAAW,EAAA;AAAA,wBACT,6BAAA;AAAA,wBACwB;AAAA;AAC1B;AAAA,mBACF;AAAA,kBACC,KAAA,CAAM;AAAA;AAAA,eAAA;AAAA,cAXF,KAAA,CAAM;AAAA,aAad,GACH,CAAA,EAEJ;AAAA,WAAA,EACF,CAAA,EACF;AAAA,SAAA,EACF,CAAA,EACF,CAAA;AAAA,QAGC,UAAA,CAAW,SAAS,CAAA,mBACnB3B,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kCACb,QAAA,kBAAAA,cAAAA;AAAA,UAAC0C,iBAAA;AAAA,UAAA;AAAA,YACC,OAAA;AAAA,YACA,kBAAA,EAAoBC,oBAAA;AAAA,YACpB,SAAA,EAAW,aAAA;AAAA,YAEX,QAAA,kBAAA3C,cAAAA;AAAA,cAAC4C,wBAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO,UAAA,CAAW,GAAA,CAAI,CAAA,EAAA,KAAM,GAAG,KAAK,CAAA;AAAA,gBACpC,QAAA,EAAUC,oCAAA;AAAA,gBAET,QAAA,EAAA,UAAA,CAAW,GAAA,CAAI,CAAC,UAAA,qBACf7C,cAAAA;AAAA,kBAAC,qBAAA;AAAA,kBAAA;AAAA,oBAEC,UAAA;AAAA,oBACA,UAAA,EAAY,aAAA,CAAc,UAAA,CAAW,KAAK,CAAA;AAAA,oBAC1C,mBAAmB,CAAC,SAAA,KAClB,qBAAA,CAAsB,UAAA,CAAW,OAAO,SAAS,CAAA;AAAA,oBAEnD,QAAA,EAAU,MAAM,iBAAA,CAAkB,UAAA,CAAW,KAAK;AAAA,mBAAA;AAAA,kBAN7C,UAAA,CAAW;AAAA,iBAQnB;AAAA;AAAA;AACH;AAAA,WAEJ,CAAA,mBAEAA,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wEAAuE,QAAA,EAAA,kEAAA,EAEtF;AAAA,OAAA,EAEJ,CAAA;AAAA,sBACAG,gBAAC,YAAA,EAAA,EACE,QAAA,EAAA;AAAA,QAAA,UAAA,CAAW,MAAA,GAAS,qBACnBA,eAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,SAAA;AAAA,YACR,OAAA,EAAS,cAAA;AAAA,YACT,SAAA,EAAU,mBAAA;AAAA,YAEV,QAAA,EAAA;AAAA,8BAAAH,cAAAA,CAACsB,kBAAAA,EAAA,EAAO,SAAA,EAAU,iCAAA,EAAkC,CAAA;AAAA,cAAE;AAAA;AAAA;AAAA,SAExD;AAAA,wBAEFtB,cAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,WAAA;AAAA,YACT,SAAA,EAAU,eAAA;AAAA,YACX,QAAA,EAAA;AAAA;AAAA,SAED;AAAA,wBACAA,cAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,SAAA;AAAA,YACR,OAAA,EAAS,YAAA;AAAA,YACT,SAAA,EAAU,gBAAA;AAAA,YACX,QAAA,EAAA;AAAA;AAAA;AAED,OAAA,EACF;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AC7XA,IAAM,UAAA,GAAmB8C,8BAGvB,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AAClC,EAAA,uBACE9C,cAAAA;AAAA,IAAqB+C,8BAAA,CAAA,IAAA;AAAA,IAApB;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,YAAA,EAAc,SAAS,CAAA;AAAA,MACpC,GAAG,KAAA;AAAA,MACJ;AAAA;AAAA,GACF;AAEJ,CAAC,CAAA;AACD,UAAA,CAAW,cAAkCA,8BAAA,CAAA,IAAA,CAAK,WAAA;AAElD,IAAM,cAAA,GAAuBD,8BAG3B,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AAClC,EAAA,uBACE9C,cAAAA;AAAA,IAAqB+C,8BAAA,CAAA,IAAA;AAAA,IAApB;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,0OAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAA/C,cAAAA,CAAqB+C,8BAAA,CAAA,SAAA,EAApB,EAA8B,SAAA,EAAU,kCAAA,EACvC,QAAA,kBAAA/C,cAAAA,CAACgD,kBAAA,EAAA,EAAO,SAAA,EAAU,uCAAA,EAAwC,CAAA,EAC5D;AAAA;AAAA,GACF;AAEJ,CAAC,CAAA;AACD,cAAA,CAAe,cAAkCD,8BAAA,CAAA,IAAA,CAAK,WAAA;ACbtD,IAAM,UAAA,GAAkC;AAAA,EACtC,EAAA,EAAIE,kBAAA;AAAA,EACJ,EAAA,EAAIC,kBAAA;AAAA,EACJ,EAAA,EAAIC,kBAAA;AAAA,EACJ,EAAA,EAAIC,kBAAA;AAAA,EACJ,EAAA,EAAIC,kBAAA;AAAA,EACJ,EAAA,EAAIC,kBAAA;AAAA,EACJ,EAAA,EAAIC,kBAAA;AAAA,EACJ,EAAA,EAAIC,kBAAA;AAAA,EACJ,GAAA,EAAKA,kBAAA;AAAA,EACL,EAAA,EAAIC,kBAAA;AAAA,EACJ,EAAA,EAAIC,kBAAA;AAAA,EACJ,EAAA,EAAIC;AACN,CAAA;AAKA,SAAS,eAAe,OAAA,EAAsB;AAC5C,EAAA,IAAI,CAAC,SAAS,OAAO,IAAA;AACrB,EAAA,MAAM,aAAA,GAAgB,QAAQ,WAAA,EAAY;AAC1C,EAAA,OAAO,UAAA,CAAW,aAAa,CAAA,IAAK,IAAA;AACtC;AA2BA,SAAS,gBAAA,CAAiB,SAA6B,QAAA,EAA+D;AACpH,EAAA,IAAI,CAAC,OAAA,IAAW,CAAC,QAAA,EAAU,OAAO,IAAA;AAElC,EAAA,MAAM,WAAA,GAAc,eAAe,OAAO,CAAA;AAC1C,EAAA,IAAI,CAAC,aAAa,OAAO,IAAA;AAEzB,EAAA,MAAM,aAAA,GAAgB,YAAY,QAAQ,CAAA;AAC1C,EAAA,OAAO,aAAA,IAAiB,IAAA;AAC1B;AAMO,SAAS,eAAA,CAAgB;AAAA,EAC9B,MAAA,GAAS,YAAA;AAAA,EACT,KAAA,GAAQ,OAAA;AAAA,EACR,aAAA,GAAgB,IAAA;AAAA,EAChB,QAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA,GAAY,QAAA;AAAA,EACZ,KAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA,GAAa;AACf,CAAA,EAAyB;AAMvB,EAAA,MAAM,qBAAA,GAAwB,CAAC,aAAA,KAA0B;AACvD,IAAA,QAAA,CAAS,aAAa,CAAA;AAAA,EACxB,CAAA;AAKA,EAAA,MAAM,oBAAA,GAAuB,CAAC,aAAA,KAA0B;AACtD,IAAA,MAAM,gBAAgB,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAI,QAAQ,EAAC;AACtD,IAAA,MAAMC,WAAAA,GAAa,aAAA,CAAc,QAAA,CAAS,aAAa,CAAA;AAEvD,IAAA,IAAIA,WAAAA,EAAY;AAEd,MAAA,QAAA,CAAS,cAAc,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,KAAM,aAAa,CAAC,CAAA;AAAA,IAC3D,CAAA,MAAO;AAEL,MAAA,QAAA,CAAS,CAAC,GAAG,aAAA,EAAe,aAAa,CAAC,CAAA;AAAA,IAC5C;AAAA,EACF,CAAA;AAKA,EAAA,MAAM,UAAA,GAAa,CAAC,SAAA,KAA+B;AACjD,IAAA,IAAI,cAAc,QAAA,EAAU;AAC1B,MAAA,OAAO,KAAA,KAAU,SAAA;AAAA,IACnB,CAAA,MAAO;AACL,MAAA,MAAM,gBAAgB,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAI,QAAQ,EAAC;AACtD,MAAA,OAAO,aAAA,CAAc,SAAS,SAAS,CAAA;AAAA,IACzC;AAAA,EACF,CAAA;AAKA,EAAA,MAAM,iBAAA,GAAoB,CAAC,IAAA,KAA8B;AACvD,IAAA,MAAM,QAAA,GAAW,UAAA,CAAW,IAAA,CAAK,KAAK,CAAA;AAEtC,IAAA,IAAI,cAAc,QAAA,EAAU;AAC1B,MAAA,MAAM,gCACJzD,eAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,EAAA;AAAA,YACT,0CAAA;AAAA,YACA,MAAA,KAAW,eAAe,UAAA,GAAa,UAAA;AAAA,YACvC,aAAa,EAAA,GAAK,gBAAA;AAAA,YAClB,mCAAA;AAAA,YACA,QAAA,IAAY;AAAA,WACd;AAAA,UAEA,QAAA,EAAA;AAAA,4BAAAH,cAAAA;AAAA,cAAC,cAAA;AAAA,cAAA;AAAA,gBACC,OAAO,IAAA,CAAK,KAAA;AAAA,gBACZ,EAAA,EAAI,CAAA,MAAA,EAAS,IAAA,CAAK,KAAK,CAAA,CAAA;AAAA,gBACvB,SAAA,EAAU;AAAA;AAAA,aACZ;AAAA,YACC,iCACCA,cAAAA;AAAA,cAAC,OAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAS,CAAA,MAAA,EAAS,IAAA,CAAK,KAAK,CAAA,CAAA;AAAA,gBAC5B,SAAA,EAAU,2DAAA;AAAA,gBAET,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA;AACR;AAAA;AAAA,OAEJ;AAGF,MAAA,uBACEG,eAAAA,CAAC,OAAA,EAAA,EAAyB,aAAA,EAAe,GAAA,EACvC,QAAA,EAAA;AAAA,wBAAAH,cAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACpB,QAAA,EAAA,aAAA,EACH,CAAA;AAAA,wBACAA,cAAAA,CAAC,cAAA,EAAA,EACC,QAAA,kBAAAA,cAAAA,CAAC,OAAE,SAAA,EAAU,kBAAA,EAAoB,QAAA,EAAA,IAAA,CAAK,KAAA,EAAM,CAAA,EAC9C;AAAA,OAAA,EAAA,EANY,KAAK,KAOnB,CAAA;AAAA,IAEJ,CAAA,MAAO;AAEL,MAAA,MAAM,gCACJG,eAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,EAAA;AAAA,YACT,yDAAA;AAAA,YACA,MAAA,KAAW,eAAe,UAAA,GAAa,UAAA;AAAA,YACvC,aAAa,EAAA,GAAK,gBAAA;AAAA,YAClB,mCAAA;AAAA,YACA,QAAA,IAAY;AAAA,WACd;AAAA,UACA,OAAA,EAAS,MAAM,oBAAA,CAAqB,IAAA,CAAK,KAAK,CAAA;AAAA,UAC9C,IAAA,EAAK,QAAA;AAAA,UACL,QAAA,EAAU,CAAA;AAAA,UACV,SAAA,EAAW,CAAC,CAAA,KAAM;AAChB,YAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,OAAA,IAAW,CAAA,CAAE,QAAQ,GAAA,EAAK;AACtC,cAAA,CAAA,CAAE,cAAA,EAAe;AACjB,cAAA,oBAAA,CAAqB,KAAK,KAAK,CAAA;AAAA,YACjC;AAAA,UACF,CAAA;AAAA,UAEA,QAAA,EAAA;AAAA,4BAAAH,cAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,EAAA;AAAA,kBACT,+HAAA;AAAA,kBACA,WAAW,YAAA,GAAe;AAAA,iBAC5B;AAAA,gBAEC,sCACCA,cAAAA;AAAA,kBAAC,KAAA;AAAA,kBAAA;AAAA,oBACC,SAAA,EAAU,+CAAA;AAAA,oBACV,IAAA,EAAK,MAAA;AAAA,oBACL,OAAA,EAAQ,WAAA;AAAA,oBACR,MAAA,EAAO,cAAA;AAAA,oBACP,WAAA,EAAa,CAAA;AAAA,oBAEb,QAAA,kBAAAA,cAAAA;AAAA,sBAAC,MAAA;AAAA,sBAAA;AAAA,wBACC,aAAA,EAAc,OAAA;AAAA,wBACd,cAAA,EAAe,OAAA;AAAA,wBACf,CAAA,EAAE;AAAA;AAAA;AACJ;AAAA;AACF;AAAA,aAEJ;AAAA,YACC,iCACCA,cAAAA,CAAC,UAAK,SAAA,EAAU,+CAAA,EACb,eAAK,KAAA,EACR;AAAA;AAAA;AAAA,OAEJ;AAGF,MAAA,uBACEG,eAAAA,CAAC,OAAA,EAAA,EAAyB,aAAA,EAAe,GAAA,EACvC,QAAA,EAAA;AAAA,wBAAAH,cAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACpB,QAAA,EAAA,aAAA,EACH,CAAA;AAAA,wBACAA,cAAAA,CAAC,cAAA,EAAA,EACC,QAAA,kBAAAA,cAAAA,CAAC,OAAE,SAAA,EAAU,kBAAA,EAAoB,QAAA,EAAA,IAAA,CAAK,KAAA,EAAM,CAAA,EAC9C;AAAA,OAAA,EAAA,EANY,KAAK,KAOnB,CAAA;AAAA,IAEJ;AAAA,EACF,CAAA;AAKA,EAAA,MAAM,gBAAA,GAAmB,CAAC,IAAA,KAA8B;AACtD,IAAA,MAAM,QAAA,GAAW,UAAA,CAAW,IAAA,CAAK,KAAK,CAAA;AAGtC,IAAA,MAAM,YAAA,GAAe,YAAY,IAAA,CAAK,aAAA,GAClC,iBAAiB,QAAA,EAAU,IAAA,CAAK,aAAa,CAAA,GAC7C,IAAA;AACJ,IAAA,MAAM,cAAA,GAAiB,YAAY,IAAA,CAAK,eAAA,GACpC,iBAAiB,QAAA,EAAU,IAAA,CAAK,eAAe,CAAA,GAC/C,IAAA;AAEJ,IAAA,MAAM,aAAA,GAAgB,QAAA,IAAY,YAAA,GAAe,YAAA,GAAgB,cAAA,IAAkB,YAAA;AAGnF,IAAA,MAAM,eAAoC,EAAC;AAC3C,IAAA,IAAI,KAAK,OAAA,EAAS;AAChB,MAAA,YAAA,CAAa,kBAAkB,IAAA,CAAK,OAAA;AAAA,IACtC;AAEA,IAAA,MAAM,gCACJG,eAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,WAAW,SAAA,GAAY,OAAA;AAAA,QAChC,IAAA,EAAK,SAAA;AAAA,QACL,SAAA,EAAW,EAAA;AAAA,UACT,0BAAA;AAAA,UACA,MAAA,KAAW,eAAe,UAAA,GAAa,UAAA;AAAA,UACvC,cAAA;AAAA,UACA,aAAa,WAAA,GAAc,2BAAA;AAAA;AAAA,UAE3B,CAAC,IAAA,CAAK,OAAA,IAAW,QAAA,IAAY,oCAAA;AAAA,UAC7B,CAAC,IAAA,CAAK,OAAA,IAAW,CAAC,QAAA,IAAY;AAAA,SAChC;AAAA,QACA,OAAO,MAAA,CAAO,IAAA,CAAK,YAAY,CAAA,CAAE,MAAA,GAAS,IAAI,YAAA,GAAe,MAAA;AAAA,QAC7D,SAAS,MAAM;AACb,UAAA,IAAI,cAAc,QAAA,EAAU;AAC1B,YAAA,qBAAA,CAAsB,KAAK,KAAK,CAAA;AAAA,UAClC,CAAA,MAAO;AACL,YAAA,oBAAA,CAAqB,KAAK,KAAK,CAAA;AAAA,UACjC;AAAA,QACF,CAAA;AAAA,QACA,cAAY,IAAA,CAAK,KAAA;AAAA,QACjB,cAAA,EAAc,QAAA;AAAA,QAEb,QAAA,EAAA;AAAA,UAAA,aAAA,oBACCH,cAAAA;AAAA,YAAC,aAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAU,gCAAA;AAAA,cACV,OAAO,IAAA,CAAK,OAAA,GAAU,EAAE,KAAA,EAAO,IAAA,CAAK,SAAQ,GAAI;AAAA;AAAA,WAClD;AAAA,UAED,iCACCA,cAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAU,oCAAA;AAAA,cACV,OAAO,IAAA,CAAK,OAAA,GAAU,EAAE,KAAA,EAAO,IAAA,CAAK,SAAQ,GAAI,MAAA;AAAA,cAE/C,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA;AACR;AAAA;AAAA,KAEJ;AAGF,IAAA,uBACEG,eAAAA,CAAC,OAAA,EAAA,EAAyB,aAAA,EAAe,GAAA,EACvC,QAAA,EAAA;AAAA,sBAAAH,cAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACpB,QAAA,EAAA,aAAA,EACH,CAAA;AAAA,sBACAA,cAAAA,CAAC,cAAA,EAAA,EACC,QAAA,kBAAAA,cAAAA,CAAC,OAAE,SAAA,EAAU,kBAAA,EAAoB,QAAA,EAAA,IAAA,CAAK,KAAA,EAAM,CAAA,EAC9C;AAAA,KAAA,EAAA,EANY,KAAK,KAOnB,CAAA;AAAA,EAEJ,CAAA;AAGA,EAAA,MAAM,gBAAA,GAAmB,EAAA;AAAA,IACvB,uDAAA;AAAA,IACA,aAAa,EAAA,GAAK,YAAA;AAAA,IAClB,WAAW,YAAA,GACP,EAAA;AAAA,MACE,yBAAA;AAAA,MACA,aAAa,OAAA,GAAU;AAAA,KACzB,GACA,EAAA;AAAA,MACE,eAAA;AAAA,MACA,aAAa,OAAA,GAAU;AAAA,KACzB;AAAA,IACJ;AAAA,GACF;AAGA,EAAA,MAAM,iBAAA,GAAoB,EAAA;AAAA,IACxB,gBAAA;AAAA,IACA;AAAA;AAAA,GACF;AAEA,EAAA,IAAI,UAAU,OAAA,EAAS;AAErB,IAAA,uBACEA,eAAC,eAAA,EAAA,EAAgB,aAAA,EAAe,KAC9B,QAAA,kBAAAA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,gBAAA,EAAkB,IAAA,EAAM,cAAc,QAAA,GAAW,YAAA,GAAe,OAAA,EAC7E,QAAA,EAAA,IAAA,CAAK,GAAA,CAAI,CAAC,SAAS,gBAAA,CAAiB,IAAI,CAAC,CAAA,EAC5C,CAAA,EACF,CAAA;AAAA,EAEF,CAAA,MAAO;AAEL,IAAA,IAAI,cAAc,QAAA,EAAU;AAC1B,MAAA,uBACEA,cAAAA,CAAC,eAAA,EAAA,EAAgB,aAAA,EAAe,KAC9B,QAAA,kBAAAA,cAAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,OAAO,KAAA,KAAU,QAAA,GAAW,KAAA,GAAQ,EAAA;AAAA,UAC3C,aAAA,EAAe,qBAAA;AAAA,UACf,SAAA,EAAW,WAAW,YAAA,GAClB,EAAA,CAAG,mBAAmB,WAAW,CAAA,GACjC,EAAA,CAAG,iBAAA,EAAmB,WAAW,CAAA;AAAA,UAGpC,eAAK,GAAA,CAAI,CAAC,IAAA,KAAS,iBAAA,CAAkB,IAAI,CAAC;AAAA;AAAA,OAC7C,EACF,CAAA;AAAA,IAEJ,CAAA,MAAO;AACL,MAAA,uBACEA,eAAC,eAAA,EAAA,EAAgB,aAAA,EAAe,KAC9B,QAAA,kBAAAA,cAAAA,CAAC,SAAI,SAAA,EAAW,gBAAA,EAAkB,MAAK,OAAA,EACpC,QAAA,EAAA,IAAA,CAAK,IAAI,CAAC,IAAA,KAAS,kBAAkB,IAAI,CAAC,GAC7C,CAAA,EACF,CAAA;AAAA,IAEJ;AAAA,EACF;AACJ;AC/VA,SAAS,aAAA,CACP,OACA,UAAA,EACA,YAAA,EACA,cACA,OAAA,EACA,OAAA,EACA,OACA,YAAA,EAC6C;AAE7C,EAAA,IAAI,UAAU,EAAA,EAAI;AAChB,IAAA,OAAO,EAAE,SAAS,IAAA,EAAK;AAAA,EACzB;AAGA,EAAA,QAAQ,UAAA;AAAY,IAClB,KAAK,SAAA,EAAW;AAEd,MAAA,MAAM,QAAA,GAAW,WAAW,KAAK,CAAA;AACjC,MAAA,IAAI,KAAA,CAAM,QAAQ,CAAA,EAAG;AACnB,QAAA,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,YAAA,EAAc,wBAAA,EAAyB;AAAA,MAClE;AAGA,MAAA,IAAI,iBAAiB,MAAA,EAAW;AAC9B,QAAA,MAAM,gBAAgB,KAAA,CAAM,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,GAAG,MAAA,IAAU,CAAA;AACrD,QAAA,IAAI,gBAAgB,YAAA,EAAc;AAChC,UAAA,OAAO;AAAA,YACL,OAAA,EAAS,KAAA;AAAA,YACT,cAAc,CAAA,QAAA,EAAW,YAAY,iBAAiB,YAAA,KAAiB,CAAA,GAAI,MAAM,EAAE,CAAA,QAAA;AAAA,WACrF;AAAA,QACF;AAAA,MACF;AAGA,MAAA,IAAI,OAAA,KAAY,MAAA,IAAa,QAAA,GAAW,OAAA,EAAS;AAC/C,QAAA,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,YAAA,EAAc,CAAA,iBAAA,EAAoB,OAAO,CAAA,CAAA,EAAG;AAAA,MACvE;AACA,MAAA,IAAI,OAAA,KAAY,MAAA,IAAa,QAAA,GAAW,OAAA,EAAS;AAC/C,QAAA,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,YAAA,EAAc,CAAA,gBAAA,EAAmB,OAAO,CAAA,CAAA,EAAG;AAAA,MACtE;AACA,MAAA;AAAA,IACF;AAAA,IAEA,KAAK,OAAA,EAAS;AAEZ,MAAA,MAAM,UAAA,GAAa,eAAA;AACnB,MAAA,IAAI,CAAC,UAAA,CAAW,IAAA,CAAK,KAAK,CAAA,EAAG;AAC3B,QAAA,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,YAAA,EAAc,0BAAA,EAA2B;AAAA,MACpE;AACA,MAAA;AAAA,IACF;AAAA,IAEA,KAAK,OAAA,EAAS;AAEZ,MAAA,MAAM,UAAA,GAAa,4BAAA;AACnB,MAAA,IAAI,CAAC,UAAA,CAAW,IAAA,CAAK,KAAK,CAAA,EAAG;AAC3B,QAAA,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,YAAA,EAAc,+BAAA,EAAgC;AAAA,MACzE;AACA,MAAA;AAAA,IACF;AAAA,IAEA,KAAK,OAAA,EAAS;AAEZ,MAAA,IAAI,YAAA,KAAiB,MAAA,IAAa,KAAA,CAAM,MAAA,GAAS,YAAA,EAAc;AAC7D,QAAA,OAAO;AAAA,UACL,OAAA,EAAS,KAAA;AAAA,UACT,cAAc,CAAA,iBAAA,EAAoB,YAAY,aAAa,YAAA,KAAiB,CAAA,GAAI,MAAM,EAAE,CAAA;AAAA,SAC1F;AAAA,MACF;AACA,MAAA,IAAI,YAAA,KAAiB,MAAA,IAAa,KAAA,CAAM,MAAA,GAAS,YAAA,EAAc;AAC7D,QAAA,OAAO;AAAA,UACL,OAAA,EAAS,KAAA;AAAA,UACT,cAAc,CAAA,gBAAA,EAAmB,YAAY,aAAa,YAAA,KAAiB,CAAA,GAAI,MAAM,EAAE,CAAA;AAAA,SACzF;AAAA,MACF;AACA,MAAA;AAAA,IACF;AAAA;AAIF,EAAA,IAAI,KAAA,EAAO;AACT,IAAA,MAAM,eAAe,OAAO,KAAA,KAAU,WAAW,IAAI,MAAA,CAAO,KAAK,CAAA,GAAI,KAAA;AACrE,IAAA,IAAI,CAAC,YAAA,CAAa,IAAA,CAAK,KAAK,CAAA,EAAG;AAC7B,MAAA,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,YAAA,EAAc,gBAAA,EAAiB;AAAA,IAC1D;AAAA,EACF;AAEA,EAAA,OAAO,EAAE,SAAS,IAAA,EAAK;AACzB;AAKA,SAAS,gBAAA,CACP,KAAA,EACA,UAAA,EACA,YAAA,EACQ;AACR,EAAA,QAAQ,UAAA;AAAY,IAClB,KAAK,SAAA,EAAW;AAEd,MAAA,IAAI,QAAA,GAAW,KAAA,CAAM,OAAA,CAAQ,UAAA,EAAY,EAAE,CAAA;AAG3C,MAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,KAAA,CAAM,GAAG,CAAA;AAChC,MAAA,IAAI,KAAA,CAAM,SAAS,CAAA,EAAG;AACpB,QAAA,QAAA,GAAW,KAAA,CAAM,CAAC,CAAA,GAAI,GAAA,GAAM,MAAM,KAAA,CAAM,CAAC,CAAA,CAAE,IAAA,CAAK,EAAE,CAAA;AAAA,MACpD;AAGA,MAAA,IAAI,YAAA,KAAiB,CAAA,IAAK,QAAA,CAAS,QAAA,CAAS,GAAG,CAAA,EAAG;AAChD,QAAA,QAAA,GAAW,QAAA,CAAS,OAAA,CAAQ,GAAA,EAAK,EAAE,CAAA;AAAA,MACrC;AAGA,MAAA,IAAI,YAAA,KAAiB,MAAA,IAAa,YAAA,GAAe,CAAA,EAAG;AAClD,QAAA,MAAM6D,MAAAA,GAAQ,QAAA,CAAS,KAAA,CAAM,GAAG,CAAA;AAChC,QAAA,IAAIA,OAAM,MAAA,KAAW,CAAA,IAAKA,OAAM,CAAC,CAAA,CAAE,SAAS,YAAA,EAAc;AACxD,UAAA,QAAA,GAAWA,MAAAA,CAAM,CAAC,CAAA,GAAI,GAAA,GAAMA,OAAM,CAAC,CAAA,CAAE,SAAA,CAAU,CAAA,EAAG,YAAY,CAAA;AAAA,QAChE;AAAA,MACF;AAEA,MAAA,OAAO,QAAA;AAAA,IACT;AAAA,IAEA,KAAK,OAAA,EAAS;AAEZ,MAAA,OAAO,KAAA,CAAM,OAAA,CAAQ,cAAA,EAAgB,EAAE,CAAA;AAAA,IACzC;AAAA,IAEA,KAAK,OAAA;AAAA,IACL,KAAK,OAAA;AAAA,IACL,SAAS;AAEP,MAAA,OAAO,KAAA;AAAA,IACT;AAAA;AAEJ;AAEO,IAAM,eAAA,GAAwBC,kBAAA,CAAA,UAAA;AAAA,EAInC,CACE;AAAA,IACE,SAAA;AAAA,IACA,UAAA,GAAa,OAAA;AAAA,IACb,YAAA;AAAA,IACA,YAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA;AAAA,IACA,YAAA;AAAA,IACA,YAAA;AAAA,IACA,iBAAA,GAAoB,KAAA;AAAA,IACpB,KAAA,EAAO,eAAA;AAAA,IACP,QAAA;AAAA,IACA,MAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,KACG;AACH,IAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAUA,kBAAA,CAAA,QAAA;AAAA,MAC9C,OAAO,oBAAoB,QAAA,GAAW,eAAA,GAAmB,OAAO,eAAA,KAAoB,QAAA,GAAW,MAAA,CAAO,eAAe,CAAA,GAAI;AAAA,KAC3H;AACA,IAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAUA,kBAAA,CAAA,QAAA,EAA6B;AAG3E,IAAA,MAAM,eAAe,eAAA,KAAoB,MAAA;AACzC,IAAA,MAAM,YAAA,GAAe,eAChB,OAAO,eAAA,KAAoB,WAAW,eAAA,GAAkB,MAAA,CAAO,eAAA,IAAmB,EAAE,CAAA,GACrF,aAAA;AAGJ,IAAMA,6BAAU,MAAM;AACpB,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,MAAM,WAAW,OAAO,eAAA,KAAoB,WAAW,eAAA,GAAkB,MAAA,CAAO,mBAAmB,EAAE,CAAA;AACrG,QAAA,IAAI,aAAa,aAAA,EAAe;AAC9B,UAAA,gBAAA,CAAiB,QAAQ,CAAA;AAAA,QAC3B;AAAA,MACF;AAAA,IAEF,CAAA,EAAG,CAAC,eAAA,EAAiB,YAAY,CAAC,CAAA;AAKlC,IAAA,MAAM,YAAA,GAAe,CAAC,CAAA,KAA2C;AAC/D,MAAA,IAAI,QAAA,GAAW,EAAE,MAAA,CAAO,KAAA;AAGxB,MAAA,IAAI,UAAA,KAAe,SAAA,IAAa,UAAA,KAAe,OAAA,EAAS;AACtD,QAAA,QAAA,GAAW,gBAAA,CAAiB,QAAA,EAAU,UAAA,EAAY,YAAY,CAAA;AAAA,MAChE;AAGA,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,gBAAA,CAAiB,QAAQ,CAAA;AAAA,MAC3B;AAGA,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,eAAA,CAAgB,MAAS,CAAA;AAAA,MAC3B;AAGA,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,MAAM,cAAA,GAAiB;AAAA,UACrB,GAAG,CAAA;AAAA,UACH,QAAQ,EAAE,GAAG,CAAA,CAAE,MAAA,EAAQ,OAAO,QAAA;AAAS,SACzC;AACA,QAAA,QAAA,CAAS,cAAc,CAAA;AAAA,MACzB;AAAA,IACF,CAAA;AAKA,IAAA,MAAM,UAAA,GAAa,CAAC,CAAA,KAA0C;AAC5D,MAAA,MAAM,UAAA,GAAa,aAAA;AAAA,QACjB,YAAA;AAAA,QACA,UAAA;AAAA,QACA,YAAA;AAAA,QACA,YAAA;AAAA,QACA,OAAA;AAAA,QACA,OAAA;AAAA,QACA,KAAA;AAAA,QACA;AAAA,OACF;AAEA,MAAA,IAAI,CAAC,WAAW,OAAA,EAAS;AACvB,QAAA,eAAA,CAAgB,UAAA,CAAW,YAAA,IAAgB,YAAA,IAAgB,eAAe,CAAA;AAAA,MAC5E,CAAA,MAAO;AACL,QAAA,eAAA,CAAgB,MAAS,CAAA;AAAA,MAC3B;AAGA,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,MAAA,CAAO,CAAC,CAAA;AAAA,MACV;AAAA,IACF,CAAA;AAGA,IAAA,MAAM,gBACJ,UAAA,KAAe,OAAA,GAAU,OAAA,GAAU,UAAA,KAAe,YAAY,MAAA,GAAS,MAAA;AAGzE,IAAA,MAAM,WAAW,YAAA,KAAiB,MAAA;AAElC,IAAA,uBACE3D,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yCAAA,EACb,QAAA,EAAA;AAAA,sBAAAH,cAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,GAAA;AAAA,UACA,IAAA,EAAM,aAAA;AAAA,UACN,KAAA,EAAO,YAAA;AAAA,UACP,QAAA,EAAU,YAAA;AAAA,UACV,MAAA,EAAQ,UAAA;AAAA,UACR,SAAA,EAAW,EAAA;AAAA,YACT,QAAA,IAAY,mDAAA;AAAA,YACZ;AAAA,WACF;AAAA,UACC,GAAG;AAAA;AAAA,OACN;AAAA,MACC,YAAY,YAAA,oBACXA,eAAC,GAAA,EAAA,EAAE,SAAA,EAAU,mDACV,QAAA,EAAA,YAAA,EACH,CAAA;AAAA,MAED,iBAAA,IAAqB,gCACpBA,cAAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,EAAA;AAAA,YACT,iEAAA;AAAA,YACA,QAAA,IAAY;AAAA,WACd;AAAA,UAEC,QAAA,EAAA;AAAA;AAAA;AACH,KAAA,EAEJ,CAAA;AAAA,EAEJ;AACF;AAEA,eAAA,CAAgB,WAAA,GAAc,iBAAA;AC/RvB,IAAM,aAAA,GAAsB+D,kBAAA,CAAA,UAAA;AAAA,EAIjC,CACE,EAAE,OAAA,EAAS,SAAA,GAAY,KAAA,EAAO,QAAA,GAAW,KAAA,EAAO,OAAA,EAAS,SAAA,EAAW,QAAA,EAAS,EAC7E,GAAA,KACG;AACH,IAAA,MAAM,yBACJ/D,cAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA,EAAK,QAAA;AAAA,QACL,OAAA;AAAA,QACA,QAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,wBAAA;AAAA,UACA,yCAAA;AAAA,UACA,oBAAA;AAAA,UACA,qBAAA;AAAA,UACA,gCAAA;AAAA,UACA,yEAAA;AAAA;AAAA,UAEA,mFAAA;AAAA;AAAA,UAEA,SAAA,IAAa,kCAAA;AAAA;AAAA,UAEb,QAAA,IAAY,gFAAA;AAAA,UACZ;AAAA,SACF;AAAA,QAEC;AAAA;AAAA,KACH;AAGF,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,uBACEG,gBAAC,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAH,cAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EAAE,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,wBAChCA,cAAAA,CAAC,cAAA,EAAA,EAAe,MAAK,QAAA,EAAS,SAAA,EAAU,WACrC,QAAA,EAAA,OAAA,EACH;AAAA,OAAA,EACF,CAAA;AAAA,IAEJ;AAEA,IAAA,OAAO,MAAA;AAAA,EACT;AACF,CAAA;AAEA,aAAA,CAAc,WAAA,GAAc,eAAA;;;AC3E5B,IAAAgE,gBAAAA,GAAqB,OAAA,CAAA,eAAA,EAAA,CAAA;AACrB,IAAAC,oCAAAA,GAA0C,OAAA,CAAA,oCAAA,EAAA,CAAA;;;ACD1C,IAAAD,eAAAA,GAAqB,OAAA,CAAA,eAAA,EAAA,CAAA;AACrB,IAAAC,oCAAAA,GAA0C,OAAA,CAAA,oCAAA,EAAA,CAAA;;;ACD1C,IAAA,cAAA,GAAqB,OAAA,CAAA,eAAA,EAAA,CAAA;AACrB,IAAI,OAAA,GAAU,GAAA;AAEd,IAAI,MAAA,GAAS,GAAA;AAMN,IAAI,aAAa,CAAA,IAAA,KAAQ;AAC9B,EAAA,IAAI;AAAA,IACF,CAAA;AAAA,IACA,CAAA;AAAA,IACA,CAAA;AAAA,IACA;AAAA,GACF,GAAI,IAAA;AACJ,EAAA,IAAI,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,GAAG,CAAC,CAAA;AAC1B,EAAA,IAAI,QAAQ,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,GAAG,CAAC,CAAA;AAGlC,EAAA,IAAI,KAAK,KAAA,GAAQ,GAAA,KAAQ,CAAA,GAAA,CAAK,CAAA,GAAI,KAAK,KAAA,GAAQ,GAAA,KAAQ,CAAA,GAAI,CAAA,GAAA,CAAK,IAAI,CAAA,IAAK,KAAA,GAAQ,CAAA,GAAA,CAAK,CAAA,GAAI,KAAK,KAAA,GAAQ,CAAA;AACvG,EAAA,OAAO;AAAA,IACL,CAAA,EAAG,EAAA,IAAM,EAAA,GAAK,CAAA,GAAI,KAAK,CAAA,GAAI,EAAA,CAAA;AAAA,IAC3B,CAAA,EAAG,GAAA,GAAM,KAAA,GAAQ,GAAA,GAAM,MAAA,GAAS,CAAA;AAAA,IAChC,CAAA,EAAG,MAAM,OAAA,GAAU,MAAA;AAAA,IACnB;AAAA,GACF;AACF,CAAA;AA2BO,IAAI,mBAAmB,CAAA,IAAA,KAAQ;AACpC,EAAA,IAAI;AAAA,IACF,CAAA;AAAA,IACA,CAAA;AAAA,IACA,CAAA;AAAA,IACA;AAAA,GACF,GAAI,WAAW,IAAI,CAAA;AACnB,EAAA,OAAO,UAAU,CAAA,GAAI,IAAA,GAAO,IAAI,KAAA,GAAQ,CAAA,GAAI,QAAQ,CAAA,GAAI,GAAA;AAC1D,CAAA;AA0CO,IAAI,aAAa,CAAA,KAAA,KAAS;AAC/B,EAAA,IAAI;AAAA,IACF,CAAA;AAAA,IACA,CAAA;AAAA,IACA,CAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AACJ,EAAA,IAAI,EAAA,GAAA,CAAM,GAAA,GAAM,CAAA,IAAK,CAAA,GAAI,MAAA;AACzB,EAAA,OAAO;AAAA,IACL,CAAA;AAAA,IACA,CAAA,EAAG,EAAA,GAAK,CAAA,IAAK,EAAA,GAAK,GAAA,GAAM,CAAA,GAAI,CAAA,GAAI,MAAA,IAAU,EAAA,IAAM,MAAA,GAAS,EAAA,GAAK,GAAA,GAAM,MAAM,MAAA,GAAS,CAAA;AAAA,IACnF,GAAG,EAAA,GAAK,CAAA;AAAA,IACR;AAAA,GACF;AACF,CAAA;AAiEO,IAAI,WAAW,CAAA,KAAA,KAAS;AAC7B,EAAA,IAAI;AAAA,IACF,CAAA;AAAA,IACA,CAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AACJ,EAAA,IAAI,GAAA,GAAM,CAAA,IAAK,EAAA,GAAK,CAAA,IAAK,CAAA,GAAI,CAAA;AAC7B,EAAA,OAAO,GAAA,GAAA,CAAO,CAAA,CAAA,KAAK,IAAI,KAAA,CAAM,IAAI,CAAA,CAAE,MAAM,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA,GAAI,CAAA,EAAG,GAAA,CAAI,QAAA,CAAS,EAAE,CAAC,CAAA;AAC5E,CAAA;AACO,IAAI,aAAa,CAAA,KAAA,KAAS;AAC/B,EAAA,IAAI;AAAA,IACF,CAAA;AAAA,IACA,CAAA;AAAA,IACA,CAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AACJ,EAAA,IAAI,KAAA,GAAQ,OAAO,CAAA,KAAM,QAAA,IAAA,CAAa,CAAA,GAAI,GAAA,GAAM,CAAA,IAAK,CAAA,EAAG,QAAA,CAAS,EAAE,CAAA,CAAE,KAAA,CAAM,CAAC,CAAA;AAC5E,EAAA,OAAO,KAAK,QAAA,CAAS;AAAA,IACnB,CAAA;AAAA,IACA,CAAA;AAAA,IACA;AAAA,GACD,CAAA,IAAK,KAAA,GAAQ,KAAA,GAAQ,EAAA,CAAA;AACxB,CAAA;AACO,IAAI,SAAA,GAAY,CAAA,GAAA,KAAO,UAAA,CAAW,SAAA,CAAU,GAAG,CAAC,CAAA;AAChD,IAAI,YAAY,CAAA,GAAA,KAAO;AAC5B,EAAA,IAAI,KAAA,GAAQ,GAAA,CAAI,OAAA,CAAQ,GAAA,EAAK,EAAE,CAAA;AAC/B,EAAA,IAAI,MAAM,IAAA,CAAK,GAAG,CAAA,IAAK,KAAA,CAAM,WAAW,CAAA,EAAG;AACzC,IAAA,GAAA,GAAM,GAAA,GAAM,MAAM,MAAA,CAAO,CAAC,IAAI,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA,GAAI,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA,GAAI,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA,GAAI,KAAA,CAAM,OAAO,CAAC,CAAA,GAAI,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA;AAAA,EACtH;AACA,EAAA,IAAI,GAAA,GAAM,IAAI,MAAA,CAAO,gBAAA,EAAkB,GAAG,CAAA;AAC1C,EAAA,IAAI,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,GAAI,CAAA,EAAG,CAAC,CAAA,GAAI,GAAA,CAAI,KAAA,CAAM,GAAG,EAAE,GAAA,CAAI,CAAA,CAAA,KAAK,QAAA,CAAS,CAAA,EAAG,EAAE,CAAC,CAAA;AAC9D,EAAA,OAAO;AAAA,IACL,CAAA;AAAA,IACA,CAAA;AAAA,IACA,CAAA;AAAA,IACA,CAAA,EAAA,CAAI,CAAA,IAAK,IAAA,GAAO,CAAA,GAAI,GAAA,IAAO;AAAA,GAC7B;AACF,CAAA;AAMO,IAAI,aAAa,CAAA,KAAA,KAAS;AAC/B,EAAA,IAAI;AAAA,IACF,CAAA;AAAA,IACA,CAAA;AAAA,IACA,CAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AACJ,EAAA,IAAI,EAAA,GAAK,CAAA,GAAI,EAAA,EACX,EAAA,GAAK,CAAA,GAAI,MAAA,EACT,EAAA,GAAK,CAAA,GAAI,MAAA,EACT,EAAA,GAAK,IAAA,CAAK,KAAA,CAAM,EAAE,CAAA,GAAI,CAAA;AACxB,EAAA,IAAI,CAAA,GAAI,KAAK,IAAA,CAAK,KAAA,CAAM,EAAE,CAAA,EACxB,EAAA,GAAK,OAAA,GAAU,EAAA,IAAM,CAAA,GAAI,EAAA,CAAA,EACzB,KAAK,OAAA,GAAU,EAAA,IAAM,IAAI,EAAA,GAAK,CAAA,CAAA,EAC9B,KAAK,OAAA,GAAU,EAAA,IAAM,CAAA,GAAI,EAAA,IAAM,CAAA,GAAI,CAAA,CAAA,CAAA;AACrC,EAAA,EAAA,IAAM,OAAA;AACN,EAAA,IAAI,OAAO,EAAC;AACZ,EAAA,QAAQ,EAAA;AAAI,IACV,KAAK,CAAA;AACH,MAAA,IAAA,CAAK,CAAA,GAAI,EAAA;AACT,MAAA,IAAA,CAAK,CAAA,GAAI,EAAA;AACT,MAAA,IAAA,CAAK,CAAA,GAAI,EAAA;AACT,MAAA;AAAA,IACF,KAAK,CAAA;AACH,MAAA,IAAA,CAAK,CAAA,GAAI,EAAA;AACT,MAAA,IAAA,CAAK,CAAA,GAAI,EAAA;AACT,MAAA,IAAA,CAAK,CAAA,GAAI,EAAA;AACT,MAAA;AAAA,IACF,KAAK,CAAA;AACH,MAAA,IAAA,CAAK,CAAA,GAAI,EAAA;AACT,MAAA,IAAA,CAAK,CAAA,GAAI,EAAA;AACT,MAAA,IAAA,CAAK,CAAA,GAAI,EAAA;AACT,MAAA;AAAA,IACF,KAAK,CAAA;AACH,MAAA,IAAA,CAAK,CAAA,GAAI,EAAA;AACT,MAAA,IAAA,CAAK,CAAA,GAAI,EAAA;AACT,MAAA,IAAA,CAAK,CAAA,GAAI,EAAA;AACT,MAAA;AAAA,IACF,KAAK,CAAA;AACH,MAAA,IAAA,CAAK,CAAA,GAAI,EAAA;AACT,MAAA,IAAA,CAAK,CAAA,GAAI,EAAA;AACT,MAAA,IAAA,CAAK,CAAA,GAAI,EAAA;AACT,MAAA;AAAA,IACF,KAAK,CAAA;AACH,MAAA,IAAA,CAAK,CAAA,GAAI,EAAA;AACT,MAAA,IAAA,CAAK,CAAA,GAAI,EAAA;AACT,MAAA,IAAA,CAAK,CAAA,GAAI,EAAA;AACT,MAAA;AAAA;AAEJ,EAAA,IAAA,CAAK,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA;AAC1B,EAAA,IAAA,CAAK,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA;AAC1B,EAAA,IAAA,CAAK,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA;AAC1B,EAAA,OAAA,IAAO,cAAA,CAAAxE,OAAAA,EAAS,EAAC,EAAG,IAAA,EAAM;AAAA,IACxB;AAAA,GACD,CAAA;AACH,CAAA;AASO,IAAI,mBAAmB,CAAA,IAAA,KAAQ;AACpC,EAAA,IAAI;AAAA,IACF,CAAA;AAAA,IACA,CAAA;AAAA,IACA,CAAA;AAAA,IACA;AAAA,GACF,GAAI,WAAW,IAAI,CAAA;AACnB,EAAA,OAAO,UAAU,CAAA,GAAI,IAAA,GAAO,IAAI,IAAA,GAAO,CAAA,GAAI,OAAO,CAAA,GAAI,GAAA;AACxD,CAAA;AACO,IAAI,YAAY,CAAA,KAAA,KAAS;AAC9B,EAAA,IAAI;AAAA,IACF,CAAA;AAAA,IACA,CAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AACJ,EAAA,OAAO;AAAA,IACL,CAAA;AAAA,IACA,CAAA;AAAA,IACA;AAAA,GACF;AACF,CAAA;AACO,IAAI,YAAY,CAAA,KAAA,KAAS;AAC9B,EAAA,IAAI;AAAA,IACF,CAAA;AAAA,IACA,CAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AACJ,EAAA,OAAO;AAAA,IACL,CAAA;AAAA,IACA,CAAA;AAAA,IACA;AAAA,GACF;AACF,CAAA;AACO,IAAI,SAAA,GAAY,CAAA,IAAA,KAAQ,QAAA,CAAS,UAAA,CAAW,IAAI,CAAC,CAAA;AAEjD,IAAI,YAAY,CAAA,MAAA,KAAU;AAC/B,EAAA,IAAI;AAAA,IACF,CAAA;AAAA,IACA,CAAA;AAAA,IACA;AAAA,GACF,GAAI,MAAA;AACJ,EAAA,OAAO;AAAA,IACL,CAAA;AAAA,IACA,CAAA;AAAA,IACA;AAAA,GACF;AACF,CAAA;AA+BO,IAAI,UAAU,CAAA,MAAA,KAAU;AAC7B,EAAA,IAAI;AAAA,IACF,CAAA;AAAA,IACA,CAAA;AAAA,IACA;AAAA,GACF,GAAI,MAAA;AACJ,EAAA,IAAI,cAAA,GAAiB,SAASyE,eAAAA,CAAeC,MAAAA,EAAO;AAClD,IAAA,OAAOA,MAAAA,IAAS,UAAUA,MAAAA,GAAQ,KAAA,GAAQ,KAAK,GAAA,CAAA,CAAKA,MAAAA,GAAQ,KAAA,IAAS,KAAA,EAAO,GAAG,CAAA;AAAA,EACjF,CAAA;AACA,EAAA,IAAI,GAAA,GAAM,cAAA,CAAe,CAAA,GAAI,GAAG,CAAA;AAChC,EAAA,IAAI,KAAA,GAAQ,cAAA,CAAe,CAAA,GAAI,GAAG,CAAA;AAClC,EAAA,IAAI,IAAA,GAAO,cAAA,CAAe,CAAA,GAAI,GAAG,CAAA;AACjC,EAAA,IAAI,MAAM,EAAC;AACX,EAAA,GAAA,CAAI,CAAA,GAAI,GAAA,GAAM,MAAA,GAAS,KAAA,GAAQ,SAAS,IAAA,GAAO,MAAA;AAC/C,EAAA,GAAA,CAAI,CAAA,GAAI,GAAA,GAAM,MAAA,GAAS,KAAA,GAAQ,SAAS,IAAA,GAAO,MAAA;AAC/C,EAAA,GAAA,CAAI,GAAA,GAAM,GAAA,GAAM,MAAA,GAAS,KAAA,GAAQ,SAAS,IAAA,GAAO,MAAA;AACjD,EAAA,OAAO,GAAA;AACT,CAAA;AACO,IAAI,QAAQ,CAAA,GAAA,KAAO;AACxB,EAAA,IAAI,GAAA;AACJ,EAAA,IAAI,GAAA;AACJ,EAAA,IAAI,GAAA;AACJ,EAAA,IAAI,IAAA;AACJ,EAAA,IAAI,IAAA;AACJ,EAAA,IAAI,IAAA;AACJ,EAAA,IAAI,EAAA;AACJ,EAAA,IAAI,GAAA;AACJ,EAAA,IAAI,IAAA;AACJ,EAAA,IAAI,OAAO,GAAA,KAAQ,QAAA,IAAY,QAAA,CAAS,GAAG,CAAA,EAAG;AAC5C,IAAA,IAAA,GAAO,UAAU,GAAG,CAAA;AACpB,IAAA,GAAA,GAAM,GAAA;AAAA,EACR,CAAA,MAAA,IAAW,OAAO,GAAA,KAAQ,QAAA,EAAU;AAClC,IAAA,IAAA,GAAO,GAAA;AAAA,EACT;AACA,EAAA,IAAI,IAAA,EAAM;AACR,IAAA,GAAA,GAAM,UAAU,IAAI,CAAA;AACpB,IAAA,IAAA,GAAO,WAAW,IAAI,CAAA;AACtB,IAAA,IAAA,GAAO,WAAW,IAAI,CAAA;AACtB,IAAA,IAAA,GAAO,WAAW,IAAI,CAAA;AACtB,IAAA,GAAA,GAAM,UAAU,IAAI,CAAA;AACpB,IAAA,GAAA,GAAM,UAAU,IAAI,CAAA;AACpB,IAAA,GAAA,GAAM,UAAU,IAAI,CAAA;AACpB,IAAA,EAAA,GAAK,QAAQ,GAAG,CAAA;AAAA,EAClB;AACA,EAAA,OAAO;AAAA,IACL,GAAA;AAAA,IACA,GAAA;AAAA,IACA,GAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,GAAA;AAAA,IACA,IAAA;AAAA,IACA;AAAA,GACF;AACF,CAAA;AA8BO,IAAI,QAAA,GAAW,CAAA,GAAA,KAAO,6BAAA,CAA8B,IAAA,CAAK,GAAG,CAAA;;;ACpcnE,IAAAH,eAAAA,GAAqB,OAAA,CAAA,eAAA,EAAA,CAAA;AACrB,IAAA,mCAAA,GAA0C,OAAA,CAAA,oCAAA,EAAA,CAAA;ACEnC,SAAS,iBAAiB,OAAA,EAAS;AACxC,EAAA,IAAI,WAAA,GAAcI,eAAO,OAAO,CAAA;AAChC,EAAA7C,kBAAU,MAAM;AACd,IAAA,WAAA,CAAY,OAAA,GAAU,OAAA;AAAA,EACxB,CAAC,CAAA;AACD,EAAA,OAAO8C,mBAAA,CAAY,CAAC,KAAA,EAAO,KAAA,KAAU,WAAA,CAAY,OAAA,IAAW,WAAA,CAAY,OAAA,CAAQ,KAAA,EAAO,KAAK,CAAA,EAAG,EAAE,CAAA;AACnG;AAGO,IAAI,OAAA,GAAU,WAAS,SAAA,IAAa,KAAA;AAKpC,IAAI,qBAAqB,CAAA,KAAA,KAAS;AACvC,EAAA,CAAC,QAAQ,KAAK,CAAA,IAAK,KAAA,CAAM,cAAA,IAAkB,MAAM,cAAA,EAAe;AAClE,CAAA;AAIO,IAAI,KAAA,GAAQ,SAASC,MAAAA,CAAM,MAAA,EAAQ,KAAK,GAAA,EAAK;AAClD,EAAA,IAAI,QAAQ,MAAA,EAAQ;AAClB,IAAA,GAAA,GAAM,CAAA;AAAA,EACR;AACA,EAAA,IAAI,QAAQ,MAAA,EAAQ;AAClB,IAAA,GAAA,GAAM,CAAA;AAAA,EACR;AACA,EAAA,OAAO,MAAA,GAAS,GAAA,GAAM,GAAA,GAAM,MAAA,GAAS,MAAM,GAAA,GAAM,MAAA;AACnD,CAAA;AAEO,IAAI,mBAAA,GAAsB,CAAC,IAAA,EAAM,KAAA,KAAU;AAChD,EAAA,IAAI,IAAA,GAAO,KAAK,qBAAA,EAAsB;AAGtC,EAAA,IAAI,UAAU,OAAA,CAAQ,KAAK,IAAI,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA,GAAI,KAAA;AAClD,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,OAAO,OAAA,CAAQ,KAAA,IAAS,KAAK,IAAA,GAAO,MAAA,CAAO,WAAA,CAAA,IAAgB,IAAA,CAAK,KAAK,CAAA;AAAA,IAC3E,GAAA,EAAK,OAAO,OAAA,CAAQ,KAAA,IAAS,KAAK,GAAA,GAAM,MAAA,CAAO,WAAA,CAAA,IAAgB,IAAA,CAAK,MAAM,CAAA;AAAA,IAC1E,OAAO,IAAA,CAAK,KAAA;AAAA,IACZ,QAAQ,IAAA,CAAK,MAAA;AAAA,IACb,CAAA,EAAG,OAAA,CAAQ,KAAA,IAAS,IAAA,CAAK,OAAO,MAAA,CAAO,WAAA,CAAA;AAAA,IACvC,CAAA,EAAG,OAAA,CAAQ,KAAA,IAAS,IAAA,CAAK,MAAM,MAAA,CAAO,WAAA;AAAA,GACxC;AACF,CAAA;AD5CA,IAAI,SAAA,GAAY,CAAC,WAAA,EAAa,WAAA,EAAa,UAAU,QAAQ,CAAA;AAK7D,IAAI,8BAA2BxE,0BAAAA,CAAM,UAAA,CAAW,CAAC,OAAO,GAAA,KAAQ;AAC9D,EAAA,IAAI;AAAA,IACA,SAAA,GAAY,qBAAA;AAAA,IACZ,SAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,MACE,KAAA,EACJ,KAAA,GAAA,IAAQ,mCAAA,CAAAJ,OAAAA,EAA8B,OAAO,SAAS,CAAA;AACxD,EAAA,IAAI,SAAA,GAAY0E,eAAO,IAAI,CAAA;AAC3B,EAAA,IAAI,UAAA,GAAaA,eAAO,KAAK,CAAA;AAC7B,EAAA,IAAI,CAAC,UAAA,EAAY,WAAW,CAAA,GAAIjD,iBAAS,KAAK,CAAA;AAC9C,EAAA,IAAI,cAAA,GAAiB,iBAAiB,MAAM,CAAA;AAC5C,EAAA,IAAI,aAAA,GAAgB,iBAAiB,MAAM,CAAA;AAI3C,EAAA,IAAI,UAAU,CAAA,KAAA,KAAS;AACrB,IAAA,IAAI,WAAW,OAAA,IAAW,CAAC,OAAA,CAAQ,KAAK,GAAG,OAAO,KAAA;AAClD,IAAA,UAAA,CAAW,OAAA,GAAU,QAAQ,KAAK,CAAA;AAClC,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AACA,EAAA,IAAI,UAAA,GAAakD,oBAAY,CAAA,KAAA,KAAS;AACpC,IAAA,kBAAA,CAAmB,KAAK,CAAA;AACxB,IAAA,IAAI,CAAC,UAAU,OAAA,EAAS;AACxB,IAAA,IAAI,MAAA,GAAS,QAAQ,KAAK,CAAA,GAAI,MAAM,OAAA,CAAQ,MAAA,GAAS,CAAA,GAAI,KAAA,CAAM,OAAA,GAAU,CAAA;AACzE,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,WAAA,CAAY,KAAK,CAAA;AACjB,MAAA;AAAA,IACF;AACA,IAAA,cAAA,IAAkB,QAAQ,cAAA,CAAe,mBAAA,CAAoB,UAAU,OAAA,EAAS,KAAK,GAAG,KAAK,CAAA;AAAA,EAC/F,CAAA,EAAG,CAAC,cAAc,CAAC,CAAA;AACnB,EAAA,IAAI,gBAAgBA,mBAAAA,CAAY,MAAM,YAAY,KAAK,CAAA,EAAG,EAAE,CAAA;AAC5D,EAAA,IAAI,oBAAA,GAAuBA,oBAAY,CAAA,KAAA,KAAS;AAC9C,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,MAAA,CAAO,gBAAA,CAAiB,UAAA,CAAW,OAAA,GAAU,WAAA,GAAc,aAAa,UAAU,CAAA;AAClF,MAAA,MAAA,CAAO,gBAAA,CAAiB,UAAA,CAAW,OAAA,GAAU,UAAA,GAAa,WAAW,aAAa,CAAA;AAAA,IACpF,CAAA,MAAO;AACL,MAAA,MAAA,CAAO,mBAAA,CAAoB,aAAa,UAAU,CAAA;AAClD,MAAA,MAAA,CAAO,mBAAA,CAAoB,WAAW,aAAa,CAAA;AACnD,MAAA,MAAA,CAAO,mBAAA,CAAoB,aAAa,UAAU,CAAA;AAClD,MAAA,MAAA,CAAO,mBAAA,CAAoB,YAAY,aAAa,CAAA;AAAA,IACtD;AAAA,EACF,CAAA,EAAG,CAAC,UAAA,EAAY,aAAa,CAAC,CAAA;AAC9B,EAAA9C,kBAAU,MAAM;AACd,IAAA,oBAAA,CAAqB,UAAU,CAAA;AAC/B,IAAA,OAAO,MAAM;AACX,MAAA,oBAAA,CAAqB,KAAK,CAAA;AAAA,IAC5B,CAAA;AAAA,EACF,GAAG,CAAC,UAAA,EAAY,UAAA,EAAY,aAAA,EAAe,oBAAoB,CAAC,CAAA;AAChE,EAAA,IAAI,eAAA,GAAkB8C,oBAAY,CAAA,KAAA,KAAS;AACzC,IAAA,IAAI,WAAW,QAAA,CAAS,aAAA;AACxB,IAAA,QAAA,IAAY,IAAA,IAAQ,SAAS,IAAA,EAAK;AAClC,IAAA,kBAAA,CAAmB,MAAM,WAAW,CAAA;AACpC,IAAA,IAAI,CAAC,OAAA,CAAQ,KAAA,CAAM,WAAW,CAAA,EAAG;AACjC,IAAA,IAAI,CAAC,UAAU,OAAA,EAAS;AACxB,IAAA,aAAA,IAAiB,IAAA,IAAQ,cAAc,mBAAA,CAAoB,SAAA,CAAU,SAAS,KAAA,CAAM,WAAW,CAAA,EAAG,KAAA,CAAM,WAAW,CAAA;AACnH,IAAA,WAAA,CAAY,IAAI,CAAA;AAAA,EAClB,CAAA,EAAG,CAAC,aAAa,CAAC,CAAA;AAClB,EAAA,sCAAyB,KAAA,EAAA,IAAO,eAAA,CAAA5E,OAAAA,EAAS,IAAI,KAAA,EAAO;AAAA,IAClD,SAAA,EAAW,CAAC,SAAA,EAAW,SAAA,IAAa,EAAE,EAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAAA,IAChE,WAAO,eAAA,CAAAA,OAAAA,EAAS,EAAC,EAAG,MAAM,KAAA,EAAO;AAAA,MAC/B,WAAA,EAAa;AAAA,KACd,CAAA;AAAA,IACD,GAAA,EAAK,SAAA;AAAA,IACL,QAAA,EAAU,CAAA;AAAA,IACV,WAAA,EAAa,eAAA;AAAA,IACb,YAAA,EAAc;AAAA,GACf,CAAC,CAAA;AACJ,CAAC,CAAA;AACD,WAAA,CAAY,WAAA,GAAc,aAAA;AAC1B,IAAO,WAAA,GAAQ,WAAA;AE3ER,IAAI,UAAU,CAAA,IAAA,KAAQ;AAC3B,EAAA,IAAI;AAAA,IACF,SAAA;AAAA,IACA,KAAA,EAAA0E,MAAAA;AAAA,IACA,IAAA;AAAA,IACA,GAAA;AAAA,IACA;AAAA,GACF,GAAI,IAAA;AACJ,EAAA,IAAI,KAAA,GAAQ;AAAA,IACV,QAAA,EAAU,UAAA;AAAA,IACV,GAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IAAI,YAAA,GAAe;AAAA,IACjB,iCAAA,EAAmC,8GAAA;AAAA,IACnC,KAAA,EAAO,CAAA;AAAA,IACP,MAAA,EAAQ,CAAA;AAAA,IACR,SAAA,EAAW,uBAAA;AAAA,IACX,SAAA,EAAW,sCAAA;AAAA,IACX,YAAA,EAAc,KAAA;AAAA,IACd,eAAA,EAAiBA;AAAA,GACnB;AACA,EAAA,OAAOI,eAAA,CAAQ,sBAAmBC,cAAAA,CAAK,KAAA,EAAO;AAAA,IAC5C,SAAA,EAAW,SAAA,GAAY,WAAA,IAAe,SAAA,IAAa,EAAA,CAAA;AAAA,IACnD,KAAA;AAAA,IACA,QAAA,kBAAuBA,cAAAA,CAAK,KAAA,EAAO;AAAA,MACjC,WAAW,SAAA,GAAY,OAAA;AAAA,MACvB,KAAA,EAAO;AAAA,KACR;AAAA,GACF,GAAG,CAAC,GAAA,EAAK,MAAML,MAAAA,EAAO,SAAA,EAAW,SAAS,CAAC,CAAA;AAC9C,CAAA;AJ9BA,IAAIM,UAAAA,GAAY,CAAC,WAAA,EAAa,QAAA,EAAU,WAAW,WAAA,EAAa,KAAA,EAAO,OAAA,EAAS,MAAA,EAAQ,UAAU,CAAA;AAMlG,IAAI,6BAA0B3E,0BAAAA,CAAM,UAAA,CAAW,CAAC,OAAO,GAAA,KAAQ;AAC7D,EAAA,IAAI,OAAA;AACJ,EAAA,IAAI;AAAA,IACA,SAAA,GAAY,oBAAA;AAAA,IACZ,MAAA,GAAS,CAAA;AAAA,IACT,OAAA;AAAA,IACA,SAAA;AAAA,IACA,GAAA,GAAM,CAAA;AAAA,IACN,KAAA;AAAA,IACA,IAAA;AAAA,IACA;AAAA,MACE,KAAA,EACJ,KAAA,GAAA,IAAQ,oCAAA,CAAAJ,OAAAA,EAA8B,OAAO+E,UAAS,CAAA;AACxD,EAAA,IAAI,cAAA,GAAA,IAAiB,gBAAAhF,OAAAA,EAAS;AAAA,IAC5B,KAAA,EAAO,GAAA;AAAA,IACP,MAAA,EAAQ,GAAA;AAAA,IACR,YAAA,EAAc;AAAA,KACb,KAAA,EAAO;AAAA,IACR,QAAA,EAAU;AAAA,GACX,CAAA;AACD,EAAA,IAAI,YAAA,GAAe,CAAC,WAAA,EAAa,KAAA,KAAU;AACzC,IAAA,QAAA,IAAY,QAAQ,QAAA,CAAS;AAAA,MAC3B,GAAG,IAAA,CAAK,CAAA;AAAA,MACR,CAAA,EAAG,YAAY,IAAA,GAAO,GAAA;AAAA,MACtB,CAAA,EAAA,CAAI,CAAA,GAAI,WAAA,CAAY,GAAA,IAAO,GAAA;AAAA,MAC3B,GAAG,IAAA,CAAK;AAAA;AAAA,KAET,CAAA;AAAA,EACH,CAAA;AACA,EAAA,IAAI,aAAA,GAAgB4E,oBAAY,CAAA,KAAA,KAAS;AACvC,IAAA,IAAI,CAAC,IAAA,IAAQ,CAAC,QAAA,EAAU;AACxB,IAAA,IAAI,IAAA,GAAO,CAAA;AACX,IAAA,IAAI,OAAO,IAAA,CAAK,CAAA;AAChB,IAAA,IAAI,OAAO,IAAA,CAAK,CAAA;AAChB,IAAA,IAAI,OAAA,GAAU,KAAA;AACd,IAAA,QAAQ,MAAM,GAAA;AAAK,MACjB,KAAK,WAAA;AACH,QAAA,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,IAAI,IAAI,CAAA;AAChC,QAAA,OAAA,GAAU,IAAA;AACV,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA;AAAA,MACF,KAAK,YAAA;AACH,QAAA,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,IAAA,CAAK,IAAI,IAAI,CAAA;AAClC,QAAA,OAAA,GAAU,IAAA;AACV,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA;AAAA,MACF,KAAK,SAAA;AACH,QAAA,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,IAAA,CAAK,IAAI,IAAI,CAAA;AAClC,QAAA,OAAA,GAAU,IAAA;AACV,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA;AAAA,MACF,KAAK,WAAA;AACH,QAAA,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,IAAI,IAAI,CAAA;AAChC,QAAA,OAAA,GAAU,IAAA;AACV,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA;AAAA,MACF;AACE,QAAA;AAAA;AAEJ,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,QAAA,CAAS;AAAA,QACP,GAAG,IAAA,CAAK,CAAA;AAAA,QACR,CAAA,EAAG,IAAA;AAAA,QACH,CAAA,EAAG,IAAA;AAAA,QACH,GAAG,IAAA,CAAK;AAAA,OACT,CAAA;AAAA,IACH;AAAA,EACF,CAAA,EAAG,CAAC,IAAA,EAAM,QAAQ,CAAC,CAAA;AACnB,EAAA,IAAI,cAAA,GAAiBE,gBAAQ,MAAM;AACjC,IAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAClB,IAAA,IAAI,QAAA,GAAW;AAAA,MACb,GAAA,EAAK,GAAA,GAAM,IAAA,CAAK,CAAA,GAAI,GAAA;AAAA,MACpB,IAAA,EAAM,KAAK,CAAA,GAAI,GAAA;AAAA,MACf,KAAA,EAAO,iBAAiB,IAAI;AAAA,KAC9B;AACA,IAAA,IAAI,OAAA,IAAW,OAAO,OAAA,KAAY,UAAA,EAAY;AAC5C,MAAA,OAAO,OAAA,CAAA,IAAQ,gBAAA9E,OAAAA,EAAS;AAAA,QACtB;AAAA,OACF,EAAG,QAAQ,CAAC,CAAA;AAAA,IACd;AACA,IAAA,uBAAoB+E,cAAAA,CAAK,OAAA,EAAA,IAAS,eAAA,CAAA/E,OAAAA,EAAS;AAAA,MACzC;AAAA,KACF,EAAG,QAAQ,CAAC,CAAA;AAAA,EACd,CAAA,EAAG,CAAC,IAAA,EAAM,OAAA,EAAS,SAAS,CAAC,CAAA;AAC7B,EAAA,IAAI,WAAA,GAAc4E,oBAAY,CAAA,KAAA,KAAS;AACrC,IAAA,KAAA,CAAM,OAAO,KAAA,EAAM;AAAA,EACrB,CAAA,EAAG,EAAE,CAAA;AACL,EAAA,uBAAoBG,cAAAA,CAAK,WAAA,EAAA,IAAa,eAAA,CAAA/E,OAAAA,EAAS;AAAA,IAC7C,SAAA,EAAW,CAAC,SAAA,EAAW,SAAA,IAAa,EAAE,EAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG;AAAA,KAC/D,KAAA,EAAO;AAAA,IACR,KAAA,EAAA,IAAO,gBAAAA,OAAAA,EAAS;AAAA,MACd,QAAA,EAAU,UAAA;AAAA,MACV,KAAA,EAAO,CAAA;AAAA,MACP,MAAA,EAAQ,WAAA;AAAA,MACR,eAAA,EAAiB,6EAAA,IAAA,CAAkF,OAAA,GAAU,IAAA,IAAQ,IAAA,GAAO,SAAS,IAAA,CAAK,CAAA,KAAM,IAAA,GAAO,OAAA,GAAU,GAAA,CAAA,GAAO;AAAA,OACvK,cAAA,EAAgB;AAAA,MACjB,OAAA,EAAS;AAAA,KACV,CAAA;AAAA,IACD,GAAA;AAAA,IACA,MAAA,EAAQ,YAAA;AAAA,IACR,MAAA,EAAQ,YAAA;AAAA,IACR,SAAA,EAAW,aAAA;AAAA,IACX,OAAA,EAAS,WAAA;AAAA,IACT,QAAA,EAAU;AAAA,GACX,CAAC,CAAA;AACJ,CAAC,CAAA;AACD,UAAA,CAAW,WAAA,GAAc,YAAA;AACzB,IAAOiF,YAAAA,GAAQ,UAAA;;;AKnHf,IAAAV,eAAAA,GAAqB,OAAA,CAAA,eAAA,EAAA,CAAA;AACrB,IAAAC,oCAAAA,GAA0C,OAAA,CAAA,oCAAA,EAAA,CAAA;;;ACD1C,IAAAD,eAAAA,GAAqB,OAAA,CAAA,eAAA,EAAA,CAAA;AACrB,IAAAC,oCAAAA,GAA0C,OAAA,CAAA,oCAAA,EAAA,CAAA;AAC1C,IAAIQ,aAAY,CAAC,WAAA,EAAa,aAAa,MAAA,EAAQ,KAAA,EAAO,SAAS,WAAW,CAAA;AAGvE,IAAIE,WAAU,CAAA,IAAA,KAAQ;AAC3B,EAAA,IAAI;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,IAAA;AAAA,IACA,GAAA;AAAA,IACA,KAAA;AAAA,IACA;AAAA,MACE,IAAA,EACJ,KAAA,GAAA,IAAQ,oCAAA,CAAAjF,OAAAA,EAA8B,MAAM+E,UAAS,CAAA;AACvD,EAAA,IAAI,YAAA,GAAA,IAAe,eAAA,CAAAhF,OAAAA,EAAS,IAAI,KAAA,EAAO;AAAA,IACrC,QAAA,EAAU,UAAA;AAAA,IACV,IAAA;AAAA,IACA;AAAA,GACD,CAAA;AACD,EAAA,IAAI,YAAA,GAAA,IAAe,gBAAAA,OAAAA,EAAS;AAAA,IAC1B,KAAA,EAAO,EAAA;AAAA,IACP,MAAA,EAAQ,EAAA;AAAA,IACR,SAAA,EAAW,iCAAA;AAAA,IACX,YAAA,EAAc,KAAA;AAAA,IACd,eAAA,EAAiB;AAAA,GACnB,EAAG,SAAA,IAAa,IAAA,GAAO,MAAA,GAAS,UAAU,KAAA,EAAO;AAAA,IAC/C,SAAA,EAAW,OAAO,uBAAA,GAA0B;AAAA,GAC7C,CAAA;AACD,EAAA,uBAAoB+E,cAAAA,CAAK,KAAA,EAAA,IAAO,eAAA,CAAA/E,OAAAA,EAAS;AAAA,IACvC,SAAA,EAAW,SAAA,GAAY,WAAA,IAAe,SAAA,IAAa,EAAA,CAAA;AAAA,IACnD,KAAA,EAAO;AAAA,KACN,KAAA,EAAO;AAAA,IACR,QAAA,kBAAuB+E,cAAAA,CAAK,KAAA,EAAA,IAAO,gBAAA/E,OAAAA,EAAS;AAAA,MAC1C,WAAW,SAAA,GAAY;AAAA,OACtB,SAAA,EAAW;AAAA,MACZ,KAAA,EAAO;AAAA,KACR,CAAC;AAAA,GACH,CAAC,CAAA;AACJ,CAAA;ADrCA,IAAIgF,UAAAA,GAAY,CAAC,WAAA,EAAa,WAAA,EAAa,QAAQ,YAAA,EAAc,SAAA,EAAW,YAAA,EAAc,cAAA,EAAgB,UAAU,OAAA,EAAS,QAAA,EAAU,WAAA,EAAa,OAAA,EAAS,YAAY,SAAS,CAAA;AAO3K,IAAI,cAAA,GAAiB,wKAAA;AAC5B,IAAI,wBAAqB3E,0BAAAA,CAAM,UAAA,CAAW,CAAC,OAAO,GAAA,KAAQ;AACxD,EAAA,IAAI;AAAA,IACA,SAAA,GAAY,eAAA;AAAA,IACZ,SAAA;AAAA,IACA,IAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAU,EAAC;AAAA,IACX,aAAa,EAAC;AAAA,IACd,eAAe,EAAC;AAAA,IAChB,MAAA,GAAS,CAAA;AAAA,IACT,KAAA;AAAA,IACA,MAAA,GAAS,EAAA;AAAA,IACT,SAAA,GAAY,YAAA;AAAA,IACZ,KAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,MACE,KAAA,EACJ,KAAA,GAAA,IAAQ,oCAAA,CAAAJ,OAAAA,EAA8B,OAAO+E,UAAS,CAAA;AACxD,EAAA,IAAI,eAAe,CAAA,MAAA,KAAU;AAC3B,IAAA,QAAA,IAAY,QAAA,CAAA,IAAS,eAAA,CAAAhF,OAAAA,EAAS,IAAI,IAAA,EAAM;AAAA,MACtC,CAAA,EAAG,SAAA,KAAc,YAAA,GAAe,MAAA,CAAO,OAAO,MAAA,CAAO;AAAA,KACtD,GAAG,MAAM,CAAA;AAAA,EACZ,CAAA;AACA,EAAA,IAAI,UAAU,gBAAA,CAAiB,MAAA,CAAO,MAAA,CAAO,IAAI,IAAA,EAAM;AAAA,IACrD,CAAA,EAAG;AAAA,GACJ,CAAC,CAAA;AACF,EAAA,IAAI,kBAAkB,qBAAA,IAAyB,SAAA,KAAc,eAAe,OAAA,GAAU,QAAA,CAAA,GAAY,gCAAgC,OAAA,GAAU,QAAA;AAC5I,EAAA,IAAI,WAAW,EAAC;AAChB,EAAA,IAAI,cAAc,YAAA,EAAc;AAC9B,IAAA,QAAA,CAAS,IAAA,GAAO,IAAA,CAAK,CAAA,GAAI,GAAA,GAAM,GAAA;AAAA,EACjC,CAAA,MAAO;AACL,IAAA,QAAA,CAAS,GAAA,GAAM,IAAA,CAAK,CAAA,GAAI,GAAA,GAAM,GAAA;AAAA,EAChC;AACA,EAAA,IAAI,YAAA,GAAA,IAAe,gBAAAA,OAAAA,EAAS;AAAA,IAC1B,0BAAA,EAA4B,MAAA;AAAA,IAC5B,kCAAA,EAAoC,oBAAA;AAAA,IACpC,4BAAA,EAA8B,kCAAA;AAAA,IAC9B,YAAA,EAAc,MAAA;AAAA,IACd,UAAA,EAAY,SAAS,cAAA,GAAiB,eAAA;AAAA,IACtC,eAAA,EAAiB;AAAA,GACnB,EAAG;AAAA,IACD,KAAA;AAAA,IACA;AAAA,KACC,KAAA,EAAO;AAAA,IACR,QAAA,EAAU;AAAA,GACX,CAAA;AACD,EAAA,IAAI,aAAA,GAAgB4E,oBAAY,CAAA,KAAA,KAAS;AACvC,IAAA,IAAI,IAAA,GAAO,IAAA;AACX,IAAA,IAAI,eAAe,IAAA,CAAK,CAAA;AACxB,IAAA,IAAI,QAAA,GAAW,YAAA;AACf,IAAA,QAAQ,MAAM,GAAA;AAAK,MACjB,KAAK,WAAA;AACH,QAAA,IAAI,cAAc,YAAA,EAAc;AAC9B,UAAA,QAAA,GAAW,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,YAAA,GAAe,IAAI,CAAA;AAC1C,UAAA,KAAA,CAAM,cAAA,EAAe;AAAA,QACvB;AACA,QAAA;AAAA,MACF,KAAK,YAAA;AACH,QAAA,IAAI,cAAc,YAAA,EAAc;AAC9B,UAAA,QAAA,GAAW,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,YAAA,GAAe,IAAI,CAAA;AAC1C,UAAA,KAAA,CAAM,cAAA,EAAe;AAAA,QACvB;AACA,QAAA;AAAA,MACF,KAAK,SAAA;AACH,QAAA,IAAI,cAAc,UAAA,EAAY;AAC5B,UAAA,QAAA,GAAW,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,YAAA,GAAe,IAAI,CAAA;AAC1C,UAAA,KAAA,CAAM,cAAA,EAAe;AAAA,QACvB;AACA,QAAA;AAAA,MACF,KAAK,WAAA;AACH,QAAA,IAAI,cAAc,UAAA,EAAY;AAC5B,UAAA,QAAA,GAAW,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,YAAA,GAAe,IAAI,CAAA;AAC1C,UAAA,KAAA,CAAM,cAAA,EAAe;AAAA,QACvB;AACA,QAAA;AAAA,MACF;AACE,QAAA;AAAA;AAEJ,IAAA,IAAI,aAAa,YAAA,EAAc;AAC7B,MAAA,IAAI,eAAA,GAAkB;AAAA,QACpB,IAAA,EAAM,SAAA,KAAc,YAAA,GAAe,QAAA,GAAW,IAAA,CAAK,CAAA;AAAA,QACnD,GAAA,EAAK,SAAA,KAAc,UAAA,GAAa,QAAA,GAAW,IAAA,CAAK,CAAA;AAAA,QAChD,KAAA,EAAO,CAAA;AAAA,QACP,MAAA,EAAQ,CAAA;AAAA,QACR,CAAA,EAAG,CAAA;AAAA,QACH,CAAA,EAAG;AAAA,OACL;AACA,MAAA,QAAA,IAAY,QAAA,CAAA,IAAS,eAAA,CAAA5E,OAAAA,EAAS,IAAI,IAAA,EAAM;AAAA,QACtC,CAAA,EAAG;AAAA,OACJ,GAAG,eAAe,CAAA;AAAA,IACrB;AAAA,EACF,CAAA,EAAG,CAAC,IAAA,EAAM,SAAA,EAAW,QAAQ,CAAC,CAAA;AAC9B,EAAA,IAAI,WAAA,GAAc4E,oBAAY,CAAA,KAAA,KAAS;AACrC,IAAA,KAAA,CAAM,OAAO,KAAA,EAAM;AAAA,EACrB,CAAA,EAAG,EAAE,CAAA;AACL,EAAA,IAAI,iBAAiB,OAAA,IAAW,OAAO,YAAY,UAAA,GAAa,OAAA,CAAA,IAAQ,gBAAA5E,OAAAA,EAAS;AAAA,IAC/E;AAAA,GACF,EAAG,YAAA,EAAc,QAAQ,CAAC,CAAA,mBAAiB+E,cAAAA,CAAKG,QAAAA,EAAAA,IAAS,eAAA,CAAAlF,OAAAA,EAAS,EAAC,EAAG,YAAA,EAAc;AAAA,IAClF;AAAA,GACF,EAAG,QAAQ,CAAC,CAAA;AACZ,EAAA,uCAA0B,KAAA,EAAA,IAAO,eAAA,CAAAA,OAAAA,EAAS,IAAI,KAAA,EAAO;AAAA,IACnD,SAAA,EAAW,CAAC,SAAA,EAAW,SAAA,GAAY,GAAA,GAAM,SAAA,EAAW,SAAA,IAAa,EAAE,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AAAA,IAC7F,KAAA,EAAO,YAAA;AAAA,IACP,GAAA;AAAA,IACA,QAAA,EAAU,iBAAc+E,cAAAA,CAAK,WAAO,eAAA,CAAA/E,OAAAA,EAAS,EAAC,EAAG,OAAA,EAAS;AAAA,MACxD,KAAA,EAAA,IAAO,gBAAAA,OAAAA,EAAS;AAAA,QACd,KAAA,EAAO,CAAA;AAAA,QACP,QAAA,EAAU,UAAA;AAAA,QACV,YAAY,UAAA,IAAc,eAAA;AAAA,QAC1B,YAAA,EAAc;AAAA,OAChB,EAAG,QAAQ,KAAK;AAAA,KACjB,CAAC,CAAA,kBAAgB+E,cAAAA,CAAK,iBAAa,eAAA,CAAA/E,OAAAA,EAAS,EAAC,EAAG,UAAA,EAAY;AAAA,MAC3D,WAAO,eAAA,CAAAA,OAAAA,EAAS,EAAC,EAAG,WAAW,KAAA,EAAO;AAAA,QACpC,KAAA,EAAO,CAAA;AAAA,QACP,MAAA,EAAQ,CAAA;AAAA,QACR,QAAA,EAAU,UAAA;AAAA,QACV,OAAA,EAAS;AAAA,OACV,CAAA;AAAA,MACD,MAAA,EAAQ,YAAA;AAAA,MACR,MAAA,EAAQ,YAAA;AAAA,MACR,OAAA,EAAS,WAAA;AAAA,MACT,SAAA,EAAW,aAAA;AAAA,MACX,QAAA,EAAU;AAAA,KACX,CAAC,CAAC;AAAA,GACJ,CAAC,CAAA;AACJ,CAAC,CAAA;AACD,KAAA,CAAM,WAAA,GAAc,OAAA;AACpB,IAAOiF,YAAAA,GAAQ,KAAA;;;AEzIf,IAAAV,eAAAA,GAAqB,OAAA,CAAA,eAAA,EAAA,CAAA;AACrB,IAAAC,oCAAAA,GAA0C,OAAA,CAAA,oCAAA,EAAA,CAAA;AAC1C,IAAIQ,UAAAA,GAAY,CAAC,WAAA,EAAa,WAAA,EAAa,OAAA,EAAS,OAAA,EAAS,WAAA,EAAa,OAAA,EAAS,YAAA,EAAc,YAAA,EAAc,UAAA,EAAY,QAAA,EAAU,aAAa,CAAA;AAIlJ,IAAIG,SAAAA,GAAW,CAAA,GAAA,KAAO,6BAAA,CAA8B,IAAA,CAAK,GAAG,CAAA;AAC5D,IAAI,cAAA,GAAiB,WAAS,MAAA,CAAO,MAAA,CAAO,KAAK,CAAA,CAAE,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA;AACpE,IAAI,gCAA6B9E,0BAAAA,CAAM,UAAA,CAAW,CAAC,OAAO,GAAA,KAAQ;AAChE,EAAA,IAAI;AAAA,IACA,SAAA,GAAY,wBAAA;AAAA,IACZ,SAAA,GAAY,QAAA;AAAA,IACZ,KAAA;AAAA,IACA,KAAA,EAAO,SAAA;AAAA,IACP,SAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,MACE,KAAA,EACJ,KAAA,GAAA,IAAQ,oCAAA,CAAAJ,OAAAA,EAA8B,OAAO+E,UAAS,CAAA;AACxD,EAAA,IAAI,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAItD,iBAAS,SAAS,CAAA;AAC1C,EAAA,IAAI,OAAA,GAAUiD,eAAO,KAAK,CAAA;AAC1B,EAAA7C,kBAAU,MAAM;AACd,IAAA,IAAI,KAAA,CAAM,UAAU,KAAA,EAAO;AACzB,MAAA,IAAI,CAAC,QAAQ,OAAA,EAAS;AACpB,QAAA,QAAA,CAAS,MAAM,KAAK,CAAA;AAAA,MACtB;AAAA,IACF;AAAA,EACF,CAAA,EAAG,CAAC,KAAA,CAAM,KAAK,CAAC,CAAA;AAChB,EAAA,SAAS,YAAA,CAAa,KAAK,OAAA,EAAS;AAClC,IAAA,IAAIsD,MAAAA,GAAAA,CAAS,WAAW,GAAA,CAAI,MAAA,CAAO,OAAO,IAAA,EAAK,CAAE,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAA;AACjE,IAAA,IAAID,SAAAA,CAASC,MAAK,CAAA,EAAG;AACnB,MAAA,QAAA,IAAY,QAAA,CAAS,KAAKA,MAAK,CAAA;AAAA,IACjC;AACA,IAAA,IAAI,GAAA,GAAM,eAAeA,MAAK,CAAA;AAC9B,IAAA,IAAI,CAAC,KAAA,CAAM,GAAG,CAAA,EAAG;AACf,MAAA,QAAA,IAAY,QAAA,CAAS,KAAK,GAAG,CAAA;AAAA,IAC/B;AACA,IAAA,QAAA,CAASA,MAAK,CAAA;AAAA,EAChB;AACA,EAAA,SAAS,WAAW,GAAA,EAAK;AACvB,IAAA,OAAA,CAAQ,OAAA,GAAU,KAAA;AAClB,IAAA,QAAA,CAAS,MAAM,KAAK,CAAA;AACpB,IAAA,MAAA,IAAU,OAAO,GAAG,CAAA;AAAA,EACtB;AACA,EAAA,IAAI,iBAAiB,EAAC;AACtB,EAAA,IAAI,cAAc,QAAA,EAAU;AAC1B,IAAA,cAAA,CAAe,eAAe,CAAA,GAAI,QAAA;AAAA,EACpC;AACA,EAAA,IAAI,cAAc,KAAA,EAAO;AACvB,IAAA,cAAA,CAAe,eAAe,CAAA,GAAI,gBAAA;AAAA,EACpC;AACA,EAAA,IAAI,cAAc,MAAA,EAAQ;AACxB,IAAA,cAAA,CAAe,eAAe,CAAA,GAAI,aAAA;AAAA,EACpC;AACA,EAAA,IAAI,YAAA,GAAA,IAAe,gBAAApF,OAAAA,EAAS;AAAA,IAC1B,8BAAA,EAAgC,oBAAA;AAAA,IAChC,6BAAA,EAA+B,wCAAA;AAAA,IAC/B,wBAAA,EAA0B,MAAA;AAAA,IAC1B,QAAA,EAAU,UAAA;AAAA,IACV,UAAA,EAAY,QAAA;AAAA,IACZ,OAAA,EAAS,MAAA;AAAA,IACT,QAAA,EAAU;AAAA,GACZ,EAAG,gBAAgB,KAAK,CAAA;AACxB,EAAA,IAAI,aAAA,GAAA,IAAgB,gBAAAA,OAAAA,EAAS;AAAA,IAC3B,KAAA,EAAO,MAAA;AAAA,IACP,UAAA,EAAY,CAAA;AAAA,IACZ,aAAA,EAAe,CAAA;AAAA,IACf,WAAA,EAAa,CAAA;AAAA,IACb,YAAA,EAAc,CAAA;AAAA,IACd,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,aAAA;AAAA,IACZ,SAAA,EAAW,YAAA;AAAA,IACX,MAAA,EAAQ,MAAA;AAAA,IACR,KAAA,EAAO,6BAAA;AAAA,IACP,SAAA,EAAW;AAAA,KACV,UAAU,CAAA;AACb,EAAA,IAAI,UAAA,GAAA,IAAa,gBAAAA,OAAAA,EAAS;AAAA,IACxB,KAAA;AAAA,IACA,QAAA,EAAU,YAAA;AAAA,IACV,MAAA,EAAQ,UAAA;AAAA,IACR,YAAA,EAAc,KAAA;AAAA,IACd,OAAA,EAAS,MAAM,OAAA,CAAQ,OAAA,GAAU;AAAA,KAChC,KAAA,EAAO;AAAA,IACR,KAAA,EAAO,aAAA;AAAA,IACP,gBAAgB,CAAA,CAAA,KAAK;AACnB,MAAA,IAAI,MAAM,CAAA,CAAE,MAAA;AACZ,MAAA,GAAA,CAAI,kBAAkB,GAAA,CAAI,KAAA,CAAM,MAAA,EAAQ,GAAA,CAAI,MAAM,MAAM,CAAA;AAAA,IAC1D;AAAA,GACD,CAAA;AACD,EAAA,uBAAoBqF,gBAAM,KAAA,EAAO;AAAA,IAC/B,SAAA,EAAW,CAAC,SAAA,EAAW,SAAA,IAAa,EAAE,EAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAAA,IAChE,KAAA,EAAO,YAAA;AAAA,IACP,QAAA,EAAU,CAAC,WAAA,GAAc,WAAA,CAAY,UAAA,EAAY,GAAG,CAAA,mBAAiBN,cAAAA,CAAK,OAAA,EAAA,IAAS,eAAA,CAAA/E,OAAAA,EAAS;AAAA,MAC1F;AAAA,OACC,UAAU,CAAC,GAAG,KAAA,oBAAsB+E,eAAK,MAAA,EAAQ;AAAA,MAClD,KAAA,EAAA,IAAO,gBAAA/E,OAAAA,EAAS;AAAA,QACd,KAAA,EAAO,mCAAA;AAAA,QACP,aAAA,EAAe;AAAA,SACd,UAAU,CAAA;AAAA,MACb,QAAA,EAAU;AAAA,KACX,CAAC;AAAA,GACH,CAAA;AACH,CAAC,CAAA;AACD,aAAA,CAAc,WAAA,GAAc,eAAA;AAC5B,IAAOiF,YAAAA,GAAQ,aAAA;;;AC5Gf,IAAAV,eAAAA,GAAqB,OAAA,CAAA,eAAA,EAAA,CAAA;AACrB,IAAAC,oCAAAA,GAA0C,OAAA,CAAA,oCAAA,EAAA,CAAA;AAC1C,IAAIQ,UAAAA,GAAY,CAAC,WAAA,EAAa,MAAA,EAAQ,WAAA,EAAa,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,WAAA,EAAa,OAAA,EAAS,UAAU,CAAA;AAK3H,IAAI,oCAAiC3E,0BAAAA,CAAM,UAAA,CAAW,CAAC,OAAO,GAAA,KAAQ;AACpE,EAAA,IAAI;AAAA,IACA,SAAA,GAAY,6BAAA;AAAA,IACZ,IAAA;AAAA,IACA,SAAA,GAAY,QAAA;AAAA,IACZ,SAAS,EAAC;AAAA,IACV,SAAS,EAAC;AAAA,IACV,SAAS,EAAC;AAAA,IACV,SAAS,EAAC;AAAA,IACV,SAAA;AAAA,IACA,KAAA;AAAA,IACA;AAAA,MACE,KAAA,EACJ,KAAA,GAAA,IAAQ,oCAAA,CAAAJ,OAAAA,EAA8B,OAAO+E,UAAS,CAAA;AACxD,EAAA,IAAI,IAAA,GAAO,IAAA,GAAO,UAAA,CAAW,IAAI,IAAI,EAAC;AACtC,EAAA,SAAS,WAAW,GAAA,EAAK;AACvB,IAAA,IAAI,KAAA,GAAQ,MAAA,CAAO,GAAA,CAAI,MAAA,CAAO,KAAK,CAAA;AACnC,IAAA,IAAI,KAAA,IAAS,QAAQ,GAAA,EAAK;AACxB,MAAA,GAAA,CAAI,OAAO,KAAA,GAAQ,KAAA;AAAA,IACrB;AACA,IAAA,IAAI,KAAA,IAAS,QAAQ,CAAA,EAAG;AACtB,MAAA,GAAA,CAAI,OAAO,KAAA,GAAQ,GAAA;AAAA,IACrB;AAAA,EACF;AACA,EAAA,IAAI,kBAAkB,CAAA,GAAA,KAAO;AAC3B,IAAA,IAAI,KAAA,GAAQ,MAAA,CAAO,GAAA,CAAI,MAAA,CAAO,KAAK,CAAA;AACnC,IAAA,IAAI,KAAA,IAAS,QAAQ,GAAA,EAAK;AACxB,MAAA,GAAA,CAAI,OAAO,KAAA,GAAQ,KAAA;AAAA,IACrB;AACA,IAAA,IAAI,KAAA,IAAS,QAAQ,CAAA,EAAG;AACtB,MAAA,GAAA,CAAI,OAAO,KAAA,GAAQ,GAAA;AAAA,IACrB;AAAA,EACF,CAAA;AACA,EAAA,IAAI,YAAA,GAAe,CAAC,KAAA,EAAO,IAAA,EAAM,GAAA,KAAQ;AACvC,IAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,MAAA,IAAI,SAAS,GAAA,EAAK;AAChB,QAAA,IAAI,KAAA,GAAQ,GAAG,KAAA,GAAQ,CAAA;AACvB,QAAA,IAAI,KAAA,GAAQ,KAAK,KAAA,GAAQ,GAAA;AACzB,QAAA,QAAA,IAAY,SAAS,KAAA,CAAY,UAAA,CAAA,IAAW,gBAAAhF,OAAAA,EAAS,IAAI,IAAA,EAAM;AAAA,UAC7D,GAAG,KAAA,GAAQ;AAAA,SACZ,CAAC,CAAC,CAAC,CAAA;AAAA,MACN;AACA,MAAA,IAAI,QAAQ,GAAA,EAAK;AACf,QAAA,KAAA,GAAQ,GAAA;AACR,QAAA,GAAA,CAAI,OAAO,KAAA,GAAQ,KAAA;AAAA,MACrB;AACA,MAAA,IAAI,QAAQ,CAAA,EAAG;AACb,QAAA,KAAA,GAAQ,CAAA;AACR,QAAA,GAAA,CAAI,OAAO,KAAA,GAAQ,GAAA;AAAA,MACrB;AACA,MAAA,IAAI,SAAS,GAAA,EAAK;AAChB,QAAA,QAAA,IAAY,SAAS,KAAA,CAAY,UAAA,CAAA,IAAW,gBAAAA,OAAAA,EAAS,IAAI,IAAA,EAAM;AAAA,UAC7D,CAAA,EAAG;AAAA,SACJ,CAAC,CAAC,CAAC,CAAA;AAAA,MACN;AACA,MAAA,IAAI,SAAS,GAAA,EAAK;AAChB,QAAA,QAAA,IAAY,SAAS,KAAA,CAAY,UAAA,CAAA,IAAW,gBAAAA,OAAAA,EAAS,IAAI,IAAA,EAAM;AAAA,UAC7D,CAAA,EAAG;AAAA,SACJ,CAAC,CAAC,CAAC,CAAA;AAAA,MACN;AACA,MAAA,IAAI,SAAS,GAAA,EAAK;AAChB,QAAA,QAAA,IAAY,SAAS,KAAA,CAAY,UAAA,CAAA,IAAW,gBAAAA,OAAAA,EAAS,IAAI,IAAA,EAAM;AAAA,UAC7D,CAAA,EAAG;AAAA,SACJ,CAAC,CAAC,CAAC,CAAA;AAAA,MACN;AAAA,IACF;AAAA,EACF,CAAA;AACA,EAAA,IAAI,YAAA,GAAe,KAAK,CAAA,GAAI,IAAA,CAAK,MAAM,IAAA,CAAK,CAAA,GAAI,GAAG,CAAA,GAAI,GAAA,GAAM,CAAA;AAC7D,EAAA,uBAAoBqF,eAAAA,CAAM,KAAA,EAAA,IAAO,eAAA,CAAArF,OAAAA,EAAS;AAAA,IACxC,GAAA;AAAA,IACA,SAAA,EAAW,CAAC,SAAA,EAAW,SAAA,IAAa,EAAE,EAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG;AAAA,KAC/D,KAAA,EAAO;AAAA,IACR,KAAA,EAAA,IAAO,gBAAAA,OAAAA,EAAS;AAAA,MACd,QAAA,EAAU,EAAA;AAAA,MACV,OAAA,EAAS;AAAA,OACR,KAAK,CAAA;AAAA,IACR,UAAU,iBAAc+E,cAAAA,CAAKE,YAAAA,EAAAA,IAAe,gBAAAjF,OAAAA,EAAS;AAAA,MACnD,KAAA,EAAO,GAAA;AAAA,MACP,KAAA,EAAO,KAAK,CAAA,IAAK,CAAA;AAAA,MACjB,MAAA,EAAQ,UAAA;AAAA,MACR,SAAA;AAAA,MACA,UAAU,CAAC,GAAA,EAAK,QAAQ,YAAA,CAAa,GAAA,EAAK,KAAK,GAAG;AAAA,OACjD,MAAA,EAAQ;AAAA,MACT,WAAO,eAAA,CAAAA,OAAAA,EAAS,EAAC,EAAG,OAAO,KAAK;AAAA,KACjC,CAAC,CAAA,kBAAgB+E,cAAAA,CAAKE,YAAAA,EAAAA,IAAe,gBAAAjF,OAAAA,EAAS;AAAA,MAC7C,KAAA,EAAO,GAAA;AAAA,MACP,KAAA,EAAO,KAAK,CAAA,IAAK,CAAA;AAAA,MACjB,MAAA,EAAQ,UAAA;AAAA,MACR,SAAA;AAAA,MACA,UAAU,CAAC,GAAA,EAAK,QAAQ,YAAA,CAAa,GAAA,EAAK,KAAK,GAAG;AAAA,OACjD,MAAA,EAAQ;AAAA,MACT,KAAA,EAAA,IAAO,gBAAAA,OAAAA,EAAS;AAAA,QACd,UAAA,EAAY;AAAA,OACd,EAAG,OAAO,KAAK;AAAA,KAChB,CAAC,CAAA,kBAAgB+E,cAAAA,CAAKE,YAAAA,EAAAA,IAAe,gBAAAjF,OAAAA,EAAS;AAAA,MAC7C,KAAA,EAAO,GAAA;AAAA,MACP,KAAA,EAAO,KAAK,CAAA,IAAK,CAAA;AAAA,MACjB,MAAA,EAAQ,UAAA;AAAA,MACR,SAAA;AAAA,MACA,UAAU,CAAC,GAAA,EAAK,QAAQ,YAAA,CAAa,GAAA,EAAK,KAAK,GAAG;AAAA,OACjD,MAAA,EAAQ;AAAA,MACT,KAAA,EAAA,IAAO,gBAAAA,OAAAA,EAAS;AAAA,QACd,UAAA,EAAY;AAAA,OACd,EAAG,OAAO,KAAK;AAAA,KAChB,CAAC,CAAA,EAAG,MAAA,oBAAuB+E,cAAAA,CAAKE,YAAAA,EAAAA,IAAe,gBAAAjF,OAAAA,EAAS;AAAA,MACvD,KAAA,EAAO,GAAA;AAAA,MACP,OAAO,QAAA,CAAS,MAAA,CAAO,YAAA,GAAe,GAAG,GAAG,EAAE,CAAA;AAAA,MAC9C,MAAA,EAAQ,eAAA;AAAA,MACR,SAAA;AAAA,MACA,UAAU,CAAC,GAAA,EAAK,QAAQ,YAAA,CAAa,GAAA,EAAK,KAAK,GAAG;AAAA,OACjD,MAAA,EAAQ;AAAA,MACT,KAAA,EAAA,IAAO,gBAAAA,OAAAA,EAAS;AAAA,QACd,UAAA,EAAY;AAAA,OACd,EAAG,OAAO,KAAK;AAAA,KAChB,CAAC,CAAC;AAAA,GACJ,CAAC,CAAA;AACJ,CAAC,CAAA;AACD,iBAAA,CAAkB,WAAA,GAAc,mBAAA;AAChC,IAAOiF,YAAAA,GAAQ,iBAAA;;;AC7Hf,IAAAV,eAAAA,GAAqB,OAAA,CAAA,eAAA,EAAA,CAAA;AACrB,IAAAC,oCAAAA,GAA0C,OAAA,CAAA,oCAAA,EAAA,CAAA;AAC1C,IAAIQ,aAAY,CAAC,WAAA,EAAa,WAAA,EAAa,KAAA,EAAO,YAAY,WAAW,CAAA;AAIzE,IAAI,sBAAmB3E,0BAAAA,CAAM,UAAA,CAAW,CAAC,OAAO,GAAA,KAAQ;AACtD,EAAA,IAAI;AAAA,IACA,SAAA,GAAY,aAAA;AAAA,IACZ,SAAA;AAAA,IACA,GAAA,GAAM,CAAA;AAAA,IACN,QAAA,EAAU,SAAA;AAAA,IACV,SAAA,GAAY;AAAA,MACV,KAAA,EACJ,KAAA,GAAA,IAAQ,oCAAA,CAAAJ,OAAAA,EAA8B,OAAO+E,UAAS,CAAA;AACxD,EAAA,uBAAoBD,cAAAA,CAAKE,YAAAA,EAAAA,IAAO,eAAA,CAAAjF,OAAAA,EAAS;AAAA,IACvC,GAAA;AAAA,IACA,SAAA,EAAW,SAAA,GAAY,GAAA,IAAO,SAAA,IAAa,EAAA;AAAA,KAC1C,KAAA,EAAO;AAAA,IACR,SAAA;AAAA,IACA,UAAA,EAAY,qBAAA,IAAyB,SAAA,KAAc,YAAA,GAAe,UAAU,QAAA,CAAA,GAAY,qJAAA;AAAA,IACxF,IAAA,EAAM;AAAA,MACJ,CAAA,EAAG,GAAA;AAAA,MACH,CAAA,EAAG,GAAA;AAAA,MACH,CAAA,EAAG,GAAA;AAAA,MACH,GAAG,GAAA,GAAM;AAAA,KACX;AAAA,IACA,QAAA,EAAU,CAAC,CAAA,EAAG,WAAA,KAAgB;AAC5B,MAAA,SAAA,IAAa,SAAA,CAAU;AAAA,QACrB,GAAG,SAAA,KAAc,YAAA,GAAe,MAAM,WAAA,CAAY,IAAA,GAAO,MAAM,WAAA,CAAY;AAAA,OAC5E,CAAA;AAAA,IACH;AAAA,GACD,CAAC,CAAA;AACJ,CAAC,CAAA;AACD,GAAA,CAAI,WAAA,GAAc,KAAA;AAClB,IAAOiF,YAAAA,GAAQ,GAAA;;;ACnCf,IAAAV,eAAAA,GAAqB,OAAA,CAAA,eAAA,EAAA,CAAA;AACrB,IAAAC,oCAAAA,GAA0C,OAAA,CAAA,oCAAA,EAAA,CAAA;AAC1C,IAAIQ,UAAAA,GAAY,CAAC,WAAA,EAAa,WAAA,EAAa,OAAA,EAAS,QAAA,EAAU,OAAA,EAAS,WAAA,EAAa,UAAA,EAAY,YAAA,EAAc,aAAA,EAAe,YAAY,CAAA;AAIzI,IAAI,yBAAsB3E,0BAAAA,CAAM,UAAA,CAAW,CAAC,OAAO,GAAA,KAAQ;AACzD,EAAA,IAAI;AAAA,IACA,SAAA,GAAY,gBAAA;AAAA,IACZ,SAAA;AAAA,IACA,KAAA,EAAAqE,MAAAA;AAAA,IACA,SAAS,EAAC;AAAA,IACV,KAAA;AAAA,IACA,YAAY,EAAC;AAAA,IACb,QAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,MACE,KAAA,EACJ,KAAA,GAAA,IAAQ,oCAAA,CAAAzE,OAAAA,EAA8B,OAAO+E,UAAS,CAAA;AACxD,EAAA,IAAI,SAAA,GAAA,IAAY,gBAAAhF,OAAAA,EAAS;AAAA,IACvB,2BAAA,EAA6B,mBAAA;AAAA,IAC7B,UAAA,EAAY,gCAAA;AAAA,IACZ,MAAA,EAAQ,EAAA;AAAA,IACR,KAAA,EAAO,EAAA;AAAA,IACP,WAAA,EAAa,CAAA;AAAA,IACb,YAAA,EAAc,CAAA;AAAA,IACd,MAAA,EAAQ,SAAA;AAAA,IACR,QAAA,EAAU,UAAA;AAAA,IACV,OAAA,EAAS,MAAA;AAAA,IACT,YAAA,EAAc;AAAA,GAChB,EAAG,UAAU,KAAK,CAAA;AAClB,EAAA,IAAI,WAAA,GAAc,CAAC,GAAA,EAAK,GAAA,KAAQ;AAC9B,IAAA,QAAA,IAAY,QAAA,CAAS,UAAU,GAAG,CAAA,EAAG,MAAY,SAAA,CAAU,GAAG,CAAC,CAAA,EAAG,GAAG,CAAA;AAAA,EACvE,CAAA;AACA,EAAA,uBAAoBqF,eAAAA,CAAM,KAAA,EAAA,IAAO,eAAA,CAAArF,OAAAA,EAAS;AAAA,IACxC;AAAA,KACC,KAAA,EAAO;AAAA,IACR,SAAA,EAAW,CAAC,SAAA,EAAW,SAAA,IAAa,EAAE,EAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAAA,IAChE,KAAA,EAAA,IAAO,gBAAAA,OAAAA,EAAS;AAAA,MACd,OAAA,EAAS,MAAA;AAAA,MACT,QAAA,EAAU,MAAA;AAAA,MACV,QAAA,EAAU;AAAA,OACT,KAAK,CAAA;AAAA,IACR,UAAU,CAAC,WAAA,oBAA4BK,0BAAAA,CAAM,cAAA,CAAe,WAAW,CAAA,IAAK,WAAA,EAAa,MAAA,IAAU,KAAA,CAAM,QAAQ,MAAM,CAAA,IAAK,OAAO,GAAA,CAAI,CAAC,MAAM,GAAA,KAAQ;AACpJ,MAAA,IAAI,KAAA,GAAQ,EAAA;AACZ,MAAA,IAAI,UAAA,GAAa,EAAA;AACjB,MAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,QAAA,KAAA,GAAQ,IAAA;AACR,QAAA,UAAA,GAAa,IAAA;AAAA,MACf;AACA,MAAA,IAAI,OAAO,IAAA,KAAS,QAAA,IAAY,IAAA,CAAK,KAAA,EAAO;AAC1C,QAAA,KAAA,GAAQ,IAAA,CAAK,SAAS,IAAA,CAAK,KAAA;AAC3B,QAAA,UAAA,GAAa,IAAA,CAAK,KAAA;AAAA,MACpB;AACA,MAAA,IAAI,UAAUqE,MAAAA,IAASA,MAAAA,CAAM,iBAAA,EAAkB,KAAM,WAAW,iBAAA,EAAkB;AAClF,MAAA,IAAI,MAAA,GAAS,cAAc,UAAA,CAAW;AAAA,QACpC,KAAA;AAAA,QACA,KAAA,EAAO,UAAA;AAAA,QACP,OAAA,EAAS,CAAC,CAAC,OAAA;AAAA,QACX,KAAA,EAAA,IAAO,eAAA,CAAA1E,OAAAA,EAAS,IAAI,SAAA,EAAW;AAAA,UAC7B;AAAA,SACD,CAAA;AAAA,QACD,OAAA,EAAS,CAAA,GAAA,KAAO,WAAA,CAAY,UAAA,EAAY,GAAG;AAAA,OAC5C,CAAA;AACD,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,uBAAoB+E,eAAKO,gBAAA,EAAU;AAAA,UACjC,QAAA,EAAU;AAAA,WACT,GAAG,CAAA;AAAA,MACR;AACA,MAAA,IAAI,KAAA,GAAQ,SAAA,CAAU,QAAA,oBAAyBjF,0BAAAA,CAAM,cAAA,CAAe,SAAA,CAAU,QAAQ,CAAA,mBAAiBA,0BAAAA,CAAM,YAAA,CAAa,UAAU,QAAA,EAAU;AAAA,QAC5I,KAAA,EAAO,UAAA;AAAA,QACP;AAAA,OACD,CAAA,GAAI,IAAA;AACL,MAAA,uBAAoB0E,cAAAA,CAAK,KAAA,EAAA,IAAO,eAAA,CAAA/E,OAAAA,EAAS;AAAA,QACvC,QAAA,EAAU,CAAA;AAAA,QACV,KAAA;AAAA,QACA,OAAA,EAAS,CAAA,GAAA,KAAO,WAAA,CAAY,UAAA,EAAY,GAAG;AAAA,SAC1C,SAAA,EAAW;AAAA,QACZ,QAAA,EAAU,KAAA;AAAA,QACV,KAAA,EAAA,IAAO,eAAA,CAAAA,OAAAA,EAAS,IAAI,SAAA,EAAW;AAAA,UAC7B;AAAA,SACD;AAAA,OACF,GAAG,GAAG,CAAA;AAAA,IACT,CAAC,GAAG,UAAA,oBAA2BK,2BAAM,cAAA,CAAe,UAAU,KAAK,UAAU;AAAA,GAC9E,CAAC,CAAA;AACJ,CAAC,CAAA;AACD,MAAA,CAAO,WAAA,GAAc,QAAA;AACrB,IAAO4E,YAAAA,GAAQ,MAAA;AXtFf,IAAID,UAAAA,GAAY,CAAC,WAAA,EAAa,WAAA,EAAa,UAAA,EAAY,SAAS,cAAA,EAAgB,OAAA,EAAS,iBAAA,EAAmB,cAAA,EAAgB,OAAO,CAAA;AAWnI,IAAI,gBAAgB,CAAC,SAAA,EAAW,SAAA,EAAW,SAAA,EAAW,WAAW,SAAA,EAAW,SAAA,EAAW,SAAA,EAAW,SAAA,EAAW,WAAW,SAAA,EAAW,SAAA,EAAW,SAAA,EAAW,SAAA,EAAW,WAAW,SAAS,CAAA;AACxL,IAAI,GAAA,GAAM,CAAA,KAAA,qBAAsBD,cAAAA,CAAK,KAAA,EAAO;AAAA,EAC1C,KAAA,EAAO;AAAA,IACL,SAAA,EAAW,8BAAA;AAAA,IACX,KAAA,EAAO,CAAA;AAAA,IACP,GAAA,EAAK,CAAA;AAAA,IACL,MAAA,EAAQ,CAAA;AAAA,IACR,MAAM,KAAA,CAAM,IAAA;AAAA,IACZ,YAAA,EAAc,CAAA;AAAA,IACd,QAAA,EAAU,UAAA;AAAA,IACV,eAAA,EAAiB;AAAA;AAErB,CAAC,CAAA;AACD,IAAI,yBAAsB1E,0BAAAA,CAAM,UAAA,CAAW,CAAC,OAAO,GAAA,KAAQ;AACzD,EAAA,IAAI;AAAA,IACA,SAAA,GAAY,gBAAA;AAAA,IACZ,SAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA,GAAQ,GAAA;AAAA,IACR,YAAA,GAAe,aAAA;AAAA,IACf,KAAA,EAAAqE,MAAAA;AAAA,IACA,eAAA,GAAkB,IAAA;AAAA,IAClB,YAAA,GAAe,KAAA;AAAA,IACf;AAAA,MACE,KAAA,EACJ,KAAA,GAAA,IAAQ,oCAAA,CAAAzE,OAAAA,EAA8B,OAAO+E,UAAS,CAAA;AACxD,EAAA,IAAI,CAAC,IAAA,EAAM,OAAO,CAAA,GAAItD,gBAAAA,CAAS;AAAA,IAC7B,CAAA,EAAG,GAAA;AAAA,IACH,CAAA,EAAG,EAAA;AAAA,IACH,CAAA,EAAG,EAAA;AAAA,IACH,CAAA,EAAG;AAAA,GACJ,CAAA;AACD,EAAAI,kBAAU,MAAM;AACd,IAAA,IAAI,OAAO4C,MAAAA,KAAU,QAAA,IAAY,QAAA,CAASA,MAAK,CAAA,EAAG;AAChD,MAAA,OAAA,CAAQ,SAAA,CAAUA,MAAK,CAAC,CAAA;AAAA,IAC1B;AACA,IAAA,IAAI,OAAOA,WAAU,QAAA,EAAU;AAC7B,MAAA,OAAA,CAAQA,MAAK,CAAA;AAAA,IACf;AAAA,EACF,CAAA,EAAG,CAACA,MAAK,CAAC,CAAA;AACV,EAAA,IAAI,eAAe,CAAA,GAAA,KAAO;AACxB,IAAA,OAAA,CAAQ,GAAG,CAAA;AACX,IAAA,QAAA,IAAY,QAAA,CAAS,KAAA,CAAY,GAAG,CAAC,CAAA;AAAA,EACvC,CAAA;AACA,EAAA,IAAI,SAAA,GAAY,CAAC,KAAA,EAAO,GAAA,KAAQ;AAC9B,IAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,QAAA,CAAS,KAAK,CAAA,IAAK,OAAA,CAAQ,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,MAAM,CAAC,CAAA,EAAG;AACtF,MAAA,YAAA,CAAa,SAAA,CAAU,KAAK,CAAC,CAAA;AAAA,IAC/B;AAAA,EACF,CAAA;AACA,EAAA,IAAI,oBAAoB,CAAA,QAAA,KAAY,YAAA,CAAA,IAAa,iBAAA1E,OAAAA,EAAS,IAAI,IAAA,EAAM;AAAA,IAClE,GAAG,QAAA,CAAS;AAAA,GACb,CAAC,CAAA;AACF,EAAA,IAAI,sBAAA,GAAyB,cAAY,YAAA,CAAA,IAAa,gBAAA,CAAAA,SAAS,EAAC,EAAG,MAAM,QAAA,EAAU;AAAA,IACjF,GAAG,IAAA,CAAK;AAAA,GACT,CAAC,CAAA;AACF,EAAA,IAAI,SAAA,GAAA,IAAY,iBAAAA,OAAAA,EAAS;AAAA,IACvB,qBAAA,EAAuB,oBAAA;AAAA,IACvB,qBAAA,EAAuB,iEAAA;AAAA,IACvB,4BAAA,EAA8B,wCAAA;AAAA,IAC9B,2BAAA,EAA6B,4EAAA;AAAA,IAC7B,4BAAA,EAA8B,8BAAA;AAAA,IAC9B,UAAA,EAAY,0BAAA;AAAA,IACZ,YAAA,EAAc,CAAA;AAAA,IACd,SAAA,EAAW,0BAAA;AAAA,IACX;AAAA,KACC,KAAK,CAAA;AACR,EAAA,IAAI,UAAA,GAAa;AAAA,IACf,YAAA,EAAc,CAAA;AAAA,IACd,UAAA,EAAY,iBAAiB,IAAI,CAAA;AAAA,IACjC,SAAA,EAAW;AAAA,GACb;AACA,EAAA,IAAI,WAAA,GAAc;AAAA,IAChB,SAAA,EAAW,iCAAA;AAAA,IACX,UAAA,EAAY,EAAA;AAAA,IACZ,WAAA,EAAa;AAAA,GACf;AACA,EAAA,IAAI,eAAA,GAAkB;AAAA,IACpB,WAAA,EAAa,EAAA;AAAA,IACb,YAAA,EAAc,EAAA;AAAA,IACd,YAAA,EAAc,CAAA;AAAA,IACd,SAAA,EAAW;AAAA,GACb;AACA,EAAA,uBAAoBqF,eAAAA,CAAM,KAAA,EAAA,IAAO,iBAAArF,OAAAA,EAAS,IAAI,KAAA,EAAO;AAAA,IACnD,SAAA,EAAW,SAAA,GAAY,GAAA,IAAO,SAAA,IAAa,EAAA,CAAA;AAAA,IAC3C,GAAA;AAAA,IACA,KAAA,EAAO,SAAA;AAAA,IACP,QAAA,EAAU,iBAAcqF,eAAAA,CAAM,KAAA,EAAO;AAAA,MACnC,KAAA,EAAO;AAAA,QACL,OAAA,EAAS;AAAA,OACX;AAAA,MACA,QAAA,EAAU,iBAAcN,cAAAA,CAAKE,YAAAA,EAAY;AAAA,QACvC,IAAA;AAAA,QACA,KAAA,EAAO;AAAA,UACL,KAAA,EAAO,MAAA;AAAA,UACP,MAAA,EAAQ;AAAA,SACV;AAAA,QACA,QAAA,EAAU;AAAA,OACX,CAAA,kBAAgBI,eAAAA,CAAM,KAAA,EAAO;AAAA,QAC5B,KAAA,EAAO;AAAA,UACL,OAAA,EAAS,MAAA;AAAA,UACT,SAAA,EAAW;AAAA,SACb;AAAA,QACA,QAAA,EAAU,iBAAcA,eAAAA,CAAM,KAAA,EAAO;AAAA,UACnC,KAAA,EAAO;AAAA,YACL,IAAA,EAAM;AAAA,WACR;AAAA,UACA,QAAA,EAAU,iBAAcN,cAAAA,CAAKE,YAAAA,EAAK;AAAA,YAChC,KAAA,EAAO,MAAA;AAAA,YACP,MAAA,EAAQ,EAAA;AAAA,YACR,KAAK,IAAA,CAAK,CAAA;AAAA,YACV,OAAA,EAAS,GAAA;AAAA,YACT,UAAA,EAAY;AAAA,cACV,KAAA,EAAO;AAAA,gBACL,UAAA,EAAY,CAAA;AAAA,gBACZ,WAAA,EAAa;AAAA;AACf,aACF;AAAA,YACA,QAAA,EAAU,YAAU,YAAA,CAAA,IAAa,gBAAA,CAAAjF,SAAS,EAAC,EAAG,IAAA,EAAM,MAAM,CAAC;AAAA,WAC5D,CAAA,EAAG,CAAC,YAAA,oBAA6B+E,eAAKE,YAAAA,EAAO;AAAA,YAC5C,KAAA,EAAO,MAAA;AAAA,YACP,MAAA,EAAQ,EAAA;AAAA,YACR,IAAA;AAAA,YACA,OAAA,EAAS,GAAA;AAAA,YACT,KAAA,EAAO;AAAA,cACL,SAAA,EAAW;AAAA,aACb;AAAA,YACA,UAAA,EAAY;AAAA,cACV,KAAA,EAAO;AAAA,gBACL,UAAA,EAAY,CAAA;AAAA,gBACZ,WAAA,EAAa;AAAA;AACf,aACF;AAAA,YACA,QAAA,EAAU;AAAA,WACX,CAAC;AAAA,SACH,CAAA,EAAG,CAAC,YAAA,oBAA6BF,eAAKE,YAAAA,EAAO;AAAA,UAC5C,KAAA,EAAO,EAAA;AAAA,UACP,MAAA,EAAQ,EAAA;AAAA,UACR,IAAA;AAAA,UACA,MAAA,EAAQ,CAAA;AAAA,UACR,KAAA,EAAO;AAAA,YACL,UAAA,EAAY;AAAA,WACd;AAAA,UACA,OAAA,EAAS;AAAA,YACP,KAAA,EAAO;AAAA,cACL,UAAA,EAAY;AAAA;AACd,WACF;AAAA,UACA,UAAA,EAAY;AAAA,YACV,KAAA,EAAO;AAAA,WACT;AAAA,UACA,SAAS,sBAAmBF,cAAAA,CAAKO,gBAAAA,EAAU,EAAE;AAAA,SAC9C,CAAC;AAAA,OACH,CAAC;AAAA,KACH,CAAA,EAAG,eAAA,oBAAgCD,gBAAM,KAAA,EAAO;AAAA,MAC/C,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,MAAA;AAAA,QACT,MAAA,EAAQ;AAAA,OACV;AAAA,MACA,QAAA,EAAU,iBAAcN,cAAAA,CAAKE,YAAAA,EAAe;AAAA,QAC1C,KAAA,EAAO,KAAA;AAAA,QACP,KAAA,EAAO,UAAU,IAAI,CAAA,CAAE,QAAQ,IAAA,EAAM,EAAE,EAAE,iBAAA,EAAkB;AAAA,QAC3D,UAAU,CAAC,GAAA,EAAK,GAAA,KAAQ,SAAA,CAAU,GAAQ,CAAA;AAAA,QAC1C,KAAA,EAAO;AAAA,UACL,QAAA,EAAU;AAAA;AACZ,OACD,CAAA,kBAAgBF,cAAAA,CAAKE,YAAAA,EAAM;AAAA,QAC1B,IAAA;AAAA,QACA,KAAA,EAAO;AAAA,UACL,UAAA,EAAY;AAAA,SACd;AAAA,QACA,MAAA,EAAQ,CAAC,YAAA,GAAe,EAAC,GAAI,KAAA;AAAA,QAC7B,QAAA,EAAU,CAAA,MAAA,KAAU,YAAA,CAAa,MAAA,CAAO,IAAI;AAAA,OAC7C,CAAC;AAAA,KACH,GAAG,YAAA,IAAgB,YAAA,CAAa,SAAS,CAAA,oBAAkBF,eAAKE,YAAAA,EAAQ;AAAA,MACvE,KAAA,EAAO,WAAA;AAAA,MACP,MAAA,EAAQ,YAAA;AAAA,MACR,KAAA,EAAO,UAAU,IAAI,CAAA;AAAA,MACrB,QAAA,EAAU,CAAA,QAAA,KAAY,YAAA,CAAa,QAAQ,CAAA;AAAA,MAC3C,SAAA,EAAW;AAAA,QACT,KAAA,EAAO;AAAA;AACT,KACD,CAAC;AAAA,GACH,CAAC,CAAA;AACJ,CAAC,CAAA;AACD,MAAA,CAAO,WAAA,GAAc,QAAA;AACrB,IAAOA,YAAAA,GAAQ,MAAA;;;AYxIR,IAAM,aAAA,GAAgB;AAAA,EAC3B,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,mBAAA,EAAoB;AAAA,EAC7C,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,qBAAA,EAAsB;AAAA,EACjD,EAAE,KAAA,EAAO,iBAAA,EAAmB,KAAA,EAAO,wBAAA,EAAyB;AAAA,EAC5D,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,gBAAA,EAAiB;AAAA,EAC5C,EAAE,KAAA,EAAO,aAAA,EAAe,KAAA,EAAO,wBAAA,EAAyB;AAAA,EACxD,EAAE,KAAA,EAAO,cAAA,EAAgB,KAAA,EAAO,0BAAA;AAClC,CAAA;AAKO,IAAM,gBAAA,GAAmB;AAAA,EAC9B,OAAA,EAAS,EAAA;AAAA,EACT,GAAA,EAAK,CAAA;AAAA,EACL,GAAA,EAAK,EAAA;AAAA,EACL,IAAA,EAAM;AACR,CAAA;AAKO,IAAM,WAAA,GAAc;AAAA,EACzB,EAAE,KAAA,EAAO,WAAA,EAAa,KAAA,EAAO,WAAA,EAAa,MAAM,WAAA,EAAY;AAAA,EAC5D,EAAE,KAAA,EAAO,WAAA,EAAa,KAAA,EAAO,WAAA,EAAa,MAAM,IAAA,EAAK;AAAA,EACrD,EAAE,KAAA,EAAO,WAAA,EAAa,KAAA,EAAO,WAAA,EAAa,MAAM,IAAA,EAAK;AAAA,EACrD,EAAE,KAAA,EAAO,WAAA,EAAa,KAAA,EAAO,WAAA,EAAa,MAAM,IAAA,EAAK;AAAA,EACrD,EAAE,KAAA,EAAO,eAAA,EAAiB,KAAA,EAAO,cAAA,EAAgB,MAAM,cAAA,EAAe;AAAA,EACtE,EAAE,KAAA,EAAO,eAAA,EAAiB,KAAA,EAAO,aAAA,EAAe,MAAM,MAAA,EAAO;AAAA,EAC7D,EAAE,KAAA,EAAO,YAAA,EAAc,KAAA,EAAO,WAAA,EAAa,MAAM,aAAA,EAAc;AAAA,EAC/D,EAAE,KAAA,EAAO,YAAA,EAAc,KAAA,EAAO,YAAA,EAAc,MAAM,MAAA,EAAO;AAAA,EACzD,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,YAAA,EAAc,MAAM,OAAA;AAC/C,CAAA;;;ACnFO,SAAS,eAAe,IAAA,EAA6B;AAC1D,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAA,KAAW;AACtC,IAAA,MAAM,MAAA,GAAS,IAAI,UAAA,EAAW;AAC9B,IAAA,MAAA,CAAO,SAAS,MAAM;AACpB,MAAA,MAAM,SAAS,MAAA,CAAO,MAAA;AAEtB,MAAA,MAAM,MAAA,GAAS,MAAA,CAAO,KAAA,CAAM,GAAG,EAAE,CAAC,CAAA;AAClC,MAAA,OAAA,CAAQ,MAAM,CAAA;AAAA,IAChB,CAAA;AACA,IAAA,MAAA,CAAO,OAAA,GAAU,MAAA;AACjB,IAAA,MAAA,CAAO,cAAc,IAAI,CAAA;AAAA,EAC3B,CAAC,CAAA;AACH;AAKA,eAAsB,mBAAmB,IAAA,EAAoC;AAC3E,EAAA,MAAM,IAAA,GAAO,MAAM,cAAA,CAAe,IAAI,CAAA;AACtC,EAAA,OAAO;AAAA,IACL,UAAU,IAAA,CAAK,IAAA;AAAA,IACf,SAAA,EAAW,KAAK,IAAA,IAAQ,0BAAA;AAAA,IACxB;AAAA,GACF;AACF;AAKO,SAAS,iBAAiB,IAAA,EAA6B;AAC5D,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAA,KAAW;AACtC,IAAA,MAAM,MAAA,GAAS,IAAI,UAAA,EAAW;AAC9B,IAAA,MAAA,CAAO,MAAA,GAAS,MAAM,OAAA,CAAQ,MAAA,CAAO,MAAgB,CAAA;AACrD,IAAA,MAAA,CAAO,OAAA,GAAU,MAAA;AACjB,IAAA,MAAA,CAAO,cAAc,IAAI,CAAA;AAAA,EAC3B,CAAC,CAAA;AACH;AAoDO,SAAS,iBAAiB,KAAA,EAAuB;AACtD,EAAA,IAAI,KAAA,KAAU,GAAG,OAAO,KAAA;AACxB,EAAA,MAAM,CAAA,GAAI,IAAA;AACV,EAAA,MAAM,KAAA,GAAQ,CAAC,GAAA,EAAK,IAAA,EAAM,MAAM,IAAI,CAAA;AACpC,EAAA,MAAM,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,KAAK,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAC,CAAC,CAAA;AAClD,EAAA,OAAO,CAAA,EAAG,UAAA,CAAA,CAAY,KAAA,GAAQ,IAAA,CAAK,IAAI,CAAA,EAAG,CAAC,CAAA,EAAG,OAAA,CAAQ,CAAC,CAAC,CAAC,CAAA,CAAA,EAAI,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AACvE;AAKO,SAAS,mBAAmB,QAAA,EAA0B;AAC3D,EAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,KAAA,CAAM,GAAG,CAAA;AAChC,EAAA,OAAO,KAAA,CAAM,SAAS,CAAA,GAAI,KAAA,CAAM,KAAI,EAAG,WAAA,MAAiB,EAAA,GAAK,EAAA;AAC/D;AAKO,SAAS,cAAc,SAAA,EAA4B;AACxD,EAAA,OAAO,SAAA,CAAU,WAAW,QAAQ,CAAA;AACtC;AC9BA,IAAM,mBAAmB,sBACvB1E,cAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,mDAAA,EAAoD,CAAA;AAG9D,IAAM,UAAkC,CAAC;AAAA,EAC9C,MAAA;AAAA,EACA,YAAY,EAAC;AAAA,EACb,WAAA;AAAA,EACA,qBAAA;AAAA,EACA,QAAA,GAAW;AACb,CAAA,KAAM;AACJ,EAAA,MAAM,CAAC,QAAA,EAAU,YAAY,CAAA,GAAUgF,4BAAS,UAAU,CAAA;AAC1D,EAAA,MAAM,CAAC,iBAAA,EAAmB,qBAAqB,CAAA,GAAUA,4BAAS,KAAK,CAAA;AACvE,EAAA,MAAM,CAAC,eAAA,EAAiB,mBAAmB,CAAA,GAAUA,4BAAS,KAAK,CAAA;AACnE,EAAA,MAAM,CAAC,oBAAA,EAAsB,wBAAwB,CAAA,GAAUA,4BAAS,KAAK,CAAA;AAC7E,EAAA,MAAM,CAAC,mBAAA,EAAqB,uBAAuB,CAAA,GAAUA,4BAAS,KAAK,CAAA;AAC3E,EAAA,MAAM,CAAC,eAAA,EAAiB,mBAAmB,CAAA,GAAUA,4BAAS,KAAK,CAAA;AACnE,EAAA,MAAM,CAAC,UAAA,EAAY,cAAc,CAAA,GAAUA,4BAAS,SAAS,CAAA;AAC7D,EAAA,MAAM,CAAC,eAAA,EAAiB,mBAAmB,CAAA,GAAUA,4BAAS,SAAS,CAAA;AACvE,EAAA,MAAM,CAAC,UAAA,EAAY,cAAc,CAAA,GAAUA,4BAAS,CAAC,CAAA;AACrD,EAAA,MAAM,CAAC,UAAA,EAAY,cAAc,CAAA,GAAUA,4BAAS,CAAC,CAAA;AACrD,EAAA,MAAM,CAAC,YAAA,EAAc,gBAAgB,CAAA,GAAUA,4BAA8C,IAAI,CAAA;AAEjG,EAAA,MAAM,cAAA,GAAuBA,0BAAyB,IAAI,CAAA;AAC1D,EAAA,MAAM,eAAA,GAAwBA,0BAAyB,IAAI,CAAA;AAE3D,EAAA,IAAI,CAAC,MAAA,EAAQ;AACX,IAAA,OAAO,IAAA;AAAA,EACT;AAGA,EAAA,MAAM,wBAAwB,MAAc;AAC1C,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,aAAA,CAAc,WAAW,CAAA;AAC9C,IAAA,OAAO,KAAA,CAAM,YAAY,gBAAA,CAAiB,OAAA;AAAA,EAC5C,CAAA;AAGA,EAAA,MAAM,0BAA0B,MAAc;AAC5C,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,aAAA,CAAc,WAAW,CAAA;AAC9C,IAAA,OAAO,KAAA,CAAM,UAAA,IAAc,aAAA,CAAc,CAAC,CAAA,CAAE,KAAA;AAAA,EAC9C,CAAA;AAGA,EAAA,MAAM,yBAAyB,MAAc;AAC3C,IAAA,IAAI,MAAA,CAAO,SAAS,SAAA,EAAW,EAAE,OAAO,CAAA,EAAG,GAAG,OAAO,WAAA;AACrD,IAAA,IAAI,MAAA,CAAO,SAAS,SAAA,EAAW,EAAE,OAAO,CAAA,EAAG,GAAG,OAAO,WAAA;AACrD,IAAA,IAAI,MAAA,CAAO,SAAS,SAAA,EAAW,EAAE,OAAO,CAAA,EAAG,GAAG,OAAO,WAAA;AACrD,IAAA,IAAI,MAAA,CAAO,QAAA,CAAS,YAAY,CAAA,EAAG,OAAO,aAAA;AAC1C,IAAA,IAAI,MAAA,CAAO,QAAA,CAAS,aAAa,CAAA,EAAG,OAAO,cAAA;AAC3C,IAAA,IAAI,MAAA,CAAO,QAAA,CAAS,UAAU,CAAA,EAAG,OAAO,WAAA;AACxC,IAAA,IAAI,MAAA,CAAO,QAAA,CAAS,WAAW,CAAA,EAAG,OAAO,YAAA;AACzC,IAAA,IAAI,MAAA,CAAO,QAAA,CAAS,YAAY,CAAA,EAAG,OAAO,YAAA;AAC1C,IAAA,OAAO,WAAA;AAAA,EACT,CAAA;AAGA,EAAA,MAAM,wBAAA,GAA2B,CAAC,KAAA,KAAkB;AAClD,IAAA,QAAQ,KAAA;AAAO,MACb,KAAK,WAAA;AACH,QAAA,MAAA,CAAO,OAAM,CAAE,KAAA,EAAM,CAAE,YAAA,GAAe,GAAA,EAAI;AAC1C,QAAA;AAAA,MACF,KAAK,WAAA;AACH,QAAA,MAAA,CAAO,KAAA,EAAM,CAAE,KAAA,EAAM,CAAE,aAAA,CAAc,EAAE,KAAA,EAAO,CAAA,EAAG,CAAA,CAAE,GAAA,EAAI;AACvD,QAAA;AAAA,MACF,KAAK,WAAA;AACH,QAAA,MAAA,CAAO,KAAA,EAAM,CAAE,KAAA,EAAM,CAAE,aAAA,CAAc,EAAE,KAAA,EAAO,CAAA,EAAG,CAAA,CAAE,GAAA,EAAI;AACvD,QAAA;AAAA,MACF,KAAK,WAAA;AACH,QAAA,MAAA,CAAO,KAAA,EAAM,CAAE,KAAA,EAAM,CAAE,aAAA,CAAc,EAAE,KAAA,EAAO,CAAA,EAAG,CAAA,CAAE,GAAA,EAAI;AACvD,QAAA;AAAA,MACF,KAAK,aAAA;AACH,QAAA,MAAA,CAAO,OAAM,CAAE,KAAA,EAAM,CAAE,gBAAA,GAAmB,GAAA,EAAI;AAC9C,QAAA;AAAA,MACF,KAAK,cAAA;AACH,QAAA,MAAA,CAAO,OAAM,CAAE,KAAA,EAAM,CAAE,iBAAA,GAAoB,GAAA,EAAI;AAC/C,QAAA;AAAA,MACF,KAAK,WAAA;AACH,QAAA,MAAA,CAAO,OAAM,CAAE,KAAA,EAAM,CAAE,cAAA,GAAiB,GAAA,EAAI;AAC5C,QAAA;AAAA,MACF,KAAK,YAAA;AACH,QAAA,MAAA,CAAO,OAAM,CAAE,KAAA,EAAM,CAAE,eAAA,GAAkB,GAAA,EAAI;AAC7C,QAAA;AAAA,MACF,KAAK,YAAA;AACH,QAAA,MAAA,CAAO,OAAM,CAAE,KAAA,EAAM,CAAE,gBAAA,GAAmB,GAAA,EAAI;AAC9C,QAAA;AAAA;AACJ,EACF,CAAA;AAGA,EAAA,MAAM,yBAAA,GAA4B,CAAC,KAAA,KAAkB;AACnD,IAAA,MAAA,CAAO,OAAM,CAAE,KAAA,GAAQ,aAAA,CAAc,KAAK,EAAE,GAAA,EAAI;AAAA,EAClD,CAAA;AAGA,EAAA,MAAM,uBAAA,GAA0B,CAAC,KAAA,KAAkB;AACjD,IAAA,MAAM,UAAU,qBAAA,EAAsB;AACtC,IAAA,MAAM,WAAW,IAAA,CAAK,GAAA;AAAA,MACpB,gBAAA,CAAiB,GAAA;AAAA,MACjB,IAAA,CAAK,GAAA,CAAI,gBAAA,CAAiB,GAAA,EAAK,UAAU,KAAK;AAAA,KAChD;AACA,IAAA,MAAA,CAAO,OAAM,CAAE,KAAA,GAAQ,cAAA,CAAe,QAAQ,EAAE,GAAA,EAAI;AAAA,EACtD,CAAA;AAGA,EAAA,MAAM,kBAAkB,MAAM;AAC5B,IAAA,IAAI,QAAA,IAAY,aAAa,UAAA,EAAY;AACvC,MAAA,MAAA,CAAO,KAAA,EAAM,CAAE,KAAA,EAAM,CAAE,OAAA,CAAQ,EAAE,IAAA,EAAM,QAAA,EAAU,CAAA,CAAE,GAAA,EAAI;AACvD,MAAA,YAAA,CAAa,UAAU,CAAA;AACvB,MAAA,qBAAA,CAAsB,KAAK,CAAA;AAAA,IAC7B;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,qBAAqB,MAAM;AAC/B,IAAA,MAAA,CAAO,OAAM,CAAE,KAAA,EAAM,CAAE,SAAA,GAAY,GAAA,EAAI;AACvC,IAAA,qBAAA,CAAsB,KAAK,CAAA;AAAA,EAC7B,CAAA;AAGA,EAAA,MAAM,wBAAA,GAA2B,CAACb,MAAAA,KAA2B;AAC3D,IAAA,cAAA,CAAeA,OAAM,GAAG,CAAA;AACxB,IAAA,MAAA,CAAO,KAAA,GAAQ,KAAA,EAAM,CAAE,SAASA,MAAAA,CAAM,GAAG,EAAE,GAAA,EAAI;AAAA,EACjD,CAAA;AAGA,EAAA,MAAM,6BAAA,GAAgC,CAACA,MAAAA,KAA2B;AAChE,IAAA,mBAAA,CAAoBA,OAAM,GAAG,CAAA;AAC7B,IAAA,MAAA,CAAO,KAAA,EAAM,CAAE,KAAA,EAAM,CAAE,YAAA,CAAa,EAAE,KAAA,EAAOA,MAAAA,CAAM,GAAA,EAAK,CAAA,CAAE,GAAA,EAAI;AAAA,EAChE,CAAA;AAGA,EAAA,MAAM,mBAAA,GAAsB,OAAO,CAAA,KAA2C;AAC5E,IAAA,MAAM,IAAA,GAAO,CAAA,CAAE,MAAA,CAAO,KAAA,GAAQ,CAAC,CAAA;AAC/B,IAAA,IAAI,IAAA,IAAQ,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW,QAAQ,CAAA,EAAG;AAC1C,MAAA,MAAM,QAAA,GAAW,MAAM,gBAAA,CAAiB,IAAI,CAAA;AAC5C,MAAA,MAAA,CAAO,KAAA,EAAM,CAAE,KAAA,EAAM,CAAE,QAAA,CAAS,EAAE,GAAA,EAAK,QAAA,EAAU,CAAA,CAAE,GAAA,EAAI;AAAA,IACzD;AACA,IAAA,IAAI,gBAAgB,OAAA,EAAS;AAC3B,MAAA,eAAA,CAAgB,QAAQ,KAAA,GAAQ,EAAA;AAAA,IAClC;AAAA,EACF,CAAA;AAGA,EAAA,MAAM,kBAAA,GAAqB,OAAO,CAAA,KAA2C;AAC3E,IAAA,MAAM,IAAA,GAAO,CAAA,CAAE,MAAA,CAAO,KAAA,GAAQ,CAAC,CAAA;AAC/B,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,MAAM,UAAA,GAAa,MAAM,kBAAA,CAAmB,IAAI,CAAA;AAChD,MAAA,qBAAA,CAAsB,CAAC,GAAG,WAAA,EAAa,UAAU,CAAC,CAAA;AAAA,IACpD;AACA,IAAA,IAAI,eAAe,OAAA,EAAS;AAC1B,MAAA,cAAA,CAAe,QAAQ,KAAA,GAAQ,EAAA;AAAA,IACjC;AAAA,EACF,CAAA;AAGA,EAAA,MAAM,mBAAA,GAAsB,CAAC,IAAA,EAAc,IAAA,KAAiB;AAC1D,IAAA,MAAA,CACG,KAAA,EAAM,CACN,KAAA,EAAM,CACN,WAAA,CAAY,EAAE,IAAA,EAAM,IAAA,EAAM,aAAA,EAAe,IAAA,EAAM,CAAA,CAC/C,GAAA,EAAI;AACP,IAAA,mBAAA,CAAoB,KAAK,CAAA;AACzB,IAAA,cAAA,CAAe,CAAC,CAAA;AAChB,IAAA,cAAA,CAAe,CAAC,CAAA;AAChB,IAAA,gBAAA,CAAiB,IAAI,CAAA;AAAA,EACvB,CAAA;AAGA,EAAA,MAAM,wBAAwB,MAAM;AAClC,IAAA,MAAA,CAAO,OAAM,CAAE,KAAA,EAAM,CAAE,YAAA,GAAe,GAAA,EAAI;AAAA,EAC5C,CAAA;AAEA,EAAA,MAAM,uBAAuB,MAAM;AACjC,IAAA,MAAA,CAAO,OAAM,CAAE,KAAA,EAAM,CAAE,WAAA,GAAc,GAAA,EAAI;AAAA,EAC3C,CAAA;AAEA,EAAA,MAAM,oBAAoB,MAAM;AAC9B,IAAA,MAAA,CAAO,OAAM,CAAE,KAAA,EAAM,CAAE,SAAA,GAAY,GAAA,EAAI;AAAA,EACzC,CAAA;AAEA,EAAA,MAAM,wBAAwB,MAAM;AAClC,IAAA,MAAA,CAAO,OAAM,CAAE,KAAA,EAAM,CAAE,eAAA,GAAkB,GAAA,EAAI;AAAA,EAC/C,CAAA;AAEA,EAAA,MAAM,uBAAuB,MAAM;AACjC,IAAA,MAAA,CAAO,OAAM,CAAE,KAAA,EAAM,CAAE,cAAA,GAAiB,GAAA,EAAI;AAAA,EAC9C,CAAA;AAEA,EAAA,MAAM,oBAAoB,MAAM;AAC9B,IAAA,MAAA,CAAO,OAAM,CAAE,KAAA,EAAM,CAAE,YAAA,GAAe,GAAA,EAAI;AAAA,EAC5C,CAAA;AAEA,EAAA,MAAM,sBAAsB,MAAM;AAChC,IAAA,MAAA,CAAO,OAAM,CAAE,KAAA,EAAM,CAAE,WAAA,GAAc,GAAA,EAAI;AAAA,EAC3C,CAAA;AAGA,EAAA,MAAM,mBAAmB,MAAM;AAC7B,IAAA,MAAA,CAAO,OAAM,CAAE,KAAA,EAAM,CAAE,iBAAA,GAAoB,GAAA,EAAI;AAAA,EACjD,CAAA;AAGA,EAAA,MAAM,sBAAA,GAAyB,CAAC,aAAA,KAA0B;AACxD,IAAA,MAAA,CAAO,OAAM,CAAE,KAAA,GAAQ,cAAA,CAAe,aAAa,EAAE,GAAA,EAAI;AACzD,IAAA,uBAAA,CAAwB,KAAK,CAAA;AAAA,EAC/B,CAAA;AAEA,EAAA,uBACEnE,cAAAA,CAAC,eAAA,EAAA,EAAgB,aAAA,EAAe,KAC9B,QAAA,kBAAAG,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,iBAAA;AAAA,QACA,qCAAA;AAAA,QACA,oBAAA;AAAA,QACA,iCAAA;AAAA,QACA,QAAA,IAAY;AAAA,OACd;AAAA,MAGA,QAAA,EAAA;AAAA,wBAAAH,cAAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,MAAM,MAAA,CAAO,KAAA,GAAQ,KAAA,EAAM,CAAE,IAAA,EAAK,CAAE,GAAA,EAAI;AAAA,YACjD,QAAA,EAAU,CAAC,MAAA,CAAO,GAAA,GAAM,IAAA,EAAK;AAAA,YAC7B,OAAA,EAAQ,MAAA;AAAA,YAER,QAAA,kBAAAA,cAAAA,CAACiF,UAAA,EAAA,EAAQ,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,SAC/B;AAAA,wBACAjF,cAAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,MAAM,MAAA,CAAO,KAAA,GAAQ,KAAA,EAAM,CAAE,IAAA,EAAK,CAAE,GAAA,EAAI;AAAA,YACjD,QAAA,EAAU,CAAC,MAAA,CAAO,GAAA,GAAM,IAAA,EAAK;AAAA,YAC7B,OAAA,EAAQ,MAAA;AAAA,YAER,QAAA,kBAAAA,cAAAA,CAACkF,UAAA,EAAA,EAAQ,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,SAC/B;AAAA,wBAEAlF,eAAC,gBAAA,EAAA,EAAiB,CAAA;AAAA,wBAGlBG,eAAAA,CAAC,MAAA,EAAA,EAAO,OAAO,sBAAA,EAAuB,EAAG,eAAe,wBAAA,EACtD,QAAA,EAAA;AAAA,0BAAAH,eAAC,aAAA,EAAA,EAAc,SAAA,EAAU,yBACvB,QAAA,kBAAAA,cAAAA,CAAC,eAAY,CAAA,EACf,CAAA;AAAA,0BACAA,eAAC,aAAA,EAAA,EACE,QAAA,EAAA,WAAA,CAAY,IAAI,CAAC,IAAA,qBAChBA,cAAAA,CAAC,UAAA,EAAA,EAA4B,OAAO,IAAA,CAAK,KAAA,EAAO,WAAU,SAAA,EACvD,QAAA,EAAA,IAAA,CAAK,SADS,IAAA,CAAK,KAEtB,CACD,CAAA,EACH;AAAA,SAAA,EACF,CAAA;AAAA,wBAEAA,eAAC,gBAAA,EAAA,EAAiB,CAAA;AAAA,wBAGlBG,eAAAA,CAAC,MAAA,EAAA,EAAO,OAAO,uBAAA,EAAwB,EAAG,eAAe,yBAAA,EACvD,QAAA,EAAA;AAAA,0BAAAH,eAAC,aAAA,EAAA,EAAc,SAAA,EAAU,yBACvB,QAAA,kBAAAA,cAAAA,CAAC,eAAY,CAAA,EACf,CAAA;AAAA,0BACAA,cAAAA,CAAC,aAAA,EAAA,EACE,wBAAc,GAAA,CAAI,CAAC,yBAClBA,cAAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cAEC,OAAO,IAAA,CAAK,KAAA;AAAA,cACZ,SAAA,EAAU,SAAA;AAAA,cACV,KAAA,EAAO,EAAE,UAAA,EAAY,IAAA,CAAK,KAAA,EAAM;AAAA,cAE/B,QAAA,EAAA,IAAA,CAAK;AAAA,aAAA;AAAA,YALD,IAAA,CAAK;AAAA,WAOb,CAAA,EACH;AAAA,SAAA,EACF,CAAA;AAAA,wBAGAG,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mBAAA,EACb,QAAA,EAAA;AAAA,0BAAAH,cAAAA;AAAA,YAAC,aAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAS,MAAM,uBAAA,CAAwB,EAAsB,CAAA;AAAA,cAC7D,OAAA,EAAQ,oBAAA;AAAA,cAER,QAAA,kBAAAA,cAAAA,CAACmF,UAAA,EAAA,EAAQ,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,WAC/B;AAAA,0BACAnF,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,sCAAA,EACb,iCAAsB,EACzB,CAAA;AAAA,0BACAA,cAAAA;AAAA,YAAC,aAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAS,MAAM,uBAAA,CAAwB,gBAAA,CAAiB,IAAI,CAAA;AAAA,cAC5D,OAAA,EAAQ,oBAAA;AAAA,cAER,QAAA,kBAAAA,cAAAA,CAACoF,SAAA,EAAA,EAAO,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA;AAC9B,SAAA,EACF,CAAA;AAAA,wBAEApF,eAAC,gBAAA,EAAA,EAAiB,CAAA;AAAA,wBAGlBA,cAAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,MAAM,MAAA,CAAO,KAAA,GAAQ,KAAA,EAAM,CAAE,UAAA,EAAW,CAAE,GAAA,EAAI;AAAA,YACvD,SAAA,EAAW,MAAA,CAAO,QAAA,CAAS,MAAM,CAAA;AAAA,YACjC,OAAA,EAAQ,MAAA;AAAA,YAER,QAAA,kBAAAA,cAAAA,CAACqF,SAAA,EAAA,EAAO,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,SAC9B;AAAA,wBACArF,cAAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,MAAM,MAAA,CAAO,KAAA,GAAQ,KAAA,EAAM,CAAE,YAAA,EAAa,CAAE,GAAA,EAAI;AAAA,YACzD,SAAA,EAAW,MAAA,CAAO,QAAA,CAAS,QAAQ,CAAA;AAAA,YACnC,OAAA,EAAQ,QAAA;AAAA,YAER,QAAA,kBAAAA,cAAAA,CAACsF,WAAA,EAAA,EAAS,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,SAChC;AAAA,wBACAtF,cAAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,MAAM,MAAA,CAAO,KAAA,GAAQ,KAAA,EAAM,CAAE,eAAA,EAAgB,CAAE,GAAA,EAAI;AAAA,YAC5D,SAAA,EAAW,MAAA,CAAO,QAAA,CAAS,WAAW,CAAA;AAAA,YACtC,OAAA,EAAQ,WAAA;AAAA,YAER,QAAA,kBAAAA,cAAAA,CAACuF,cAAA,EAAA,EAAY,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,SACnC;AAAA,wBACAvF,cAAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,MAAM,MAAA,CAAO,KAAA,GAAQ,KAAA,EAAM,CAAE,YAAA,EAAa,CAAE,GAAA,EAAI;AAAA,YACzD,SAAA,EAAW,MAAA,CAAO,QAAA,CAAS,QAAQ,CAAA;AAAA,YACnC,OAAA,EAAQ,eAAA;AAAA,YAER,QAAA,kBAAAA,cAAAA,CAACwF,kBAAA,EAAA,EAAgB,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,SACvC;AAAA,wBACAxF,cAAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,MAAM,MAAA,CAAO,KAAA,GAAQ,KAAA,EAAM,CAAE,eAAA,EAAgB,CAAE,GAAA,EAAI;AAAA,YAC5D,SAAA,EAAW,MAAA,CAAO,QAAA,CAAS,WAAW,CAAA;AAAA,YACtC,OAAA,EAAQ,WAAA;AAAA,YAER,QAAA,kBAAAA,cAAAA,CAACyF,cAAA,EAAA,EAAY,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,SACnC;AAAA,wBACAzF,cAAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,MAAM,MAAA,CAAO,KAAA,GAAQ,KAAA,EAAM,CAAE,iBAAA,EAAkB,CAAE,GAAA,EAAI;AAAA,YAC9D,SAAA,EAAW,MAAA,CAAO,QAAA,CAAS,aAAa,CAAA;AAAA,YACxC,OAAA,EAAQ,aAAA;AAAA,YAER,QAAA,kBAAAA,cAAAA,CAAC0F,gBAAA,EAAA,EAAc,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,SACrC;AAAA,wBAEA1F,eAAC,gBAAA,EAAA,EAAiB,CAAA;AAAA,wBAGlBG,eAAAA,CAAC,OAAA,EAAA,EAAQ,IAAA,EAAM,iBAAA,EAAmB,cAAc,qBAAA,EAC9C,QAAA,EAAA;AAAA,0BAAAH,cAAAA,CAAC,kBAAe,OAAA,EAAO,IAAA,EACrB,0BAAAA,cAAAA,CAAC,aAAA,EAAA,EAAc,WAAW,MAAA,CAAO,QAAA,CAAS,MAAM,CAAA,EAAG,OAAA,EAAQ,QACzD,QAAA,kBAAAA,cAAAA,CAAC2F,aAAO,SAAA,EAAU,SAAA,EAAU,GAC9B,CAAA,EACF,CAAA;AAAA,0BACA3F,eAAC,cAAA,EAAA,EAAe,SAAA,EAAU,YACxB,QAAA,kBAAAG,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBAAA,EACb,QAAA,EAAA;AAAA,4BAAAH,cAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO,QAAA;AAAA,gBACP,UAAU,CAAC,CAAA,KAAM,YAAA,CAAa,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,gBAC5C,WAAA,EAAY,qBAAA;AAAA,gBACZ,SAAA,EAAU;AAAA;AAAA,aACZ;AAAA,4BACAG,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YAAA,EACb,QAAA,EAAA;AAAA,8BAAAA,gBAAC,MAAA,EAAA,EAAO,IAAA,EAAK,MAAK,OAAA,EAAS,eAAA,EAAiB,WAAU,QAAA,EACnD,QAAA,EAAA;AAAA,gBAAA,MAAA,CAAO,QAAA,CAAS,MAAM,CAAA,GAAI,QAAA,GAAW,KAAA;AAAA,gBAAM;AAAA,eAAA,EAC9C,CAAA;AAAA,cACC,MAAA,CAAO,QAAA,CAAS,MAAM,CAAA,oBACrBH,cAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,IAAA;AAAA,kBACL,OAAA,EAAQ,aAAA;AAAA,kBACR,OAAA,EAAS,kBAAA;AAAA,kBACV,QAAA,EAAA;AAAA;AAAA;AAED,aAAA,EAEJ;AAAA,WAAA,EACF,CAAA,EACF;AAAA,SAAA,EACF,CAAA;AAAA,wBAGAA,cAAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,MAAM,MAAA,CAAO,KAAA,EAAM,CAAE,KAAA,EAAM,CAAE,aAAA,EAAc,CAAE,UAAA,EAAW,CAAE,GAAA,EAAI;AAAA,YACvE,OAAA,EAAQ,kBAAA;AAAA,YAER,QAAA,kBAAAA,cAAAA,CAAC4F,qBAAA,EAAA,EAAmB,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,SAC1C;AAAA,wBAEA5F,eAAC,gBAAA,EAAA,EAAiB,CAAA;AAAA,wBAGlBG,eAAAA,CAAC,OAAA,EAAA,EAAQ,IAAA,EAAM,eAAA,EAAiB,cAAc,mBAAA,EAC5C,QAAA,EAAA;AAAA,0BAAAH,cAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACrB,QAAA,kBAAAA,cAAAA,CAAC,aAAA,EAAA,EAAc,OAAA,EAAQ,YAAA,EACrB,QAAA,kBAAAG,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,4BAAA,EACb,QAAA,EAAA;AAAA,4BAAAH,cAAAA,CAAC6F,YAAA,EAAA,EAAU,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,4BAC/B7F,cAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAU,+BAAA;AAAA,gBACV,KAAA,EAAO,EAAE,eAAA,EAAiB,UAAA;AAAW;AAAA;AACvC,WAAA,EACF,GACF,CAAA,EACF,CAAA;AAAA,0BACAA,cAAAA,CAAC,cAAA,EAAA,EAAe,WAAU,YAAA,EAAa,KAAA,EAAM,SAC3C,QAAA,kBAAAA,cAAAA;AAAA,YAAC0E,YAAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,UAAA;AAAA,cACP,QAAA,EAAU,wBAAA;AAAA,cACV,YAAA,EAAc;AAAA,gBACZ,SAAA;AAAA,gBAAW,SAAA;AAAA,gBAAW,SAAA;AAAA,gBAAW,SAAA;AAAA,gBAAW,SAAA;AAAA,gBAAW,SAAA;AAAA,gBACvD,SAAA;AAAA,gBAAW,SAAA;AAAA,gBAAW,SAAA;AAAA,gBAAW,SAAA;AAAA,gBAAW,SAAA;AAAA,gBAAW,SAAA;AAAA,gBACvD,SAAA;AAAA,gBAAW,SAAA;AAAA,gBAAW,SAAA;AAAA,gBAAW,SAAA;AAAA,gBAAW,SAAA;AAAA,gBAAW;AAAA;AACzD;AAAA,WACF,EACF;AAAA,SAAA,EACF,CAAA;AAAA,wBAGAvE,eAAAA,CAAC,OAAA,EAAA,EAAQ,IAAA,EAAM,oBAAA,EAAsB,cAAc,wBAAA,EACjD,QAAA,EAAA;AAAA,0BAAAH,cAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACrB,QAAA,kBAAAA,cAAAA,CAAC,aAAA,EAAA,EAAc,OAAA,EAAQ,iBAAA,EACrB,QAAA,kBAAAG,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,4BAAA,EACb,QAAA,EAAA;AAAA,4BAAAH,cAAAA,CAAC8F,gBAAA,EAAA,EAAc,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,4BACnC9F,cAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAU,+BAAA;AAAA,gBACV,KAAA,EAAO,EAAE,eAAA,EAAiB,eAAA;AAAgB;AAAA;AAC5C,WAAA,EACF,GACF,CAAA,EACF,CAAA;AAAA,0BACAA,cAAAA,CAAC,cAAA,EAAA,EAAe,WAAU,YAAA,EAAa,KAAA,EAAM,SAC3C,QAAA,kBAAAA,cAAAA;AAAA,YAAC0E,YAAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,eAAA;AAAA,cACP,QAAA,EAAU,6BAAA;AAAA,cACV,YAAA,EAAc;AAAA,gBACZ,SAAA;AAAA,gBAAW,SAAA;AAAA,gBAAW,SAAA;AAAA,gBAAW,SAAA;AAAA,gBAAW,SAAA;AAAA,gBAAW,SAAA;AAAA,gBACvD,SAAA;AAAA,gBAAW,SAAA;AAAA,gBAAW,SAAA;AAAA,gBAAW,SAAA;AAAA,gBAAW,SAAA;AAAA,gBAAW;AAAA;AACzD;AAAA,WACF,EACF;AAAA,SAAA,EACF,CAAA;AAAA,wBAEA1E,eAAC,gBAAA,EAAA,EAAiB,CAAA;AAAA,wBAGlBA,cAAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,MAAM,MAAA,CAAO,KAAA,EAAM,CAAE,OAAM,CAAE,YAAA,CAAa,MAAM,CAAA,CAAE,GAAA,EAAI;AAAA,YAC/D,WAAW,MAAA,CAAO,QAAA,CAAS,EAAE,SAAA,EAAW,QAAQ,CAAA;AAAA,YAChD,OAAA,EAAQ,YAAA;AAAA,YAER,QAAA,kBAAAA,cAAAA,CAAC+F,cAAA,EAAA,EAAY,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,SACnC;AAAA,wBACA/F,cAAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,MAAM,MAAA,CAAO,KAAA,EAAM,CAAE,OAAM,CAAE,YAAA,CAAa,QAAQ,CAAA,CAAE,GAAA,EAAI;AAAA,YACjE,WAAW,MAAA,CAAO,QAAA,CAAS,EAAE,SAAA,EAAW,UAAU,CAAA;AAAA,YAClD,OAAA,EAAQ,cAAA;AAAA,YAER,QAAA,kBAAAA,cAAAA,CAACgG,gBAAA,EAAA,EAAc,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,SACrC;AAAA,wBACAhG,cAAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,MAAM,MAAA,CAAO,KAAA,EAAM,CAAE,OAAM,CAAE,YAAA,CAAa,OAAO,CAAA,CAAE,GAAA,EAAI;AAAA,YAChE,WAAW,MAAA,CAAO,QAAA,CAAS,EAAE,SAAA,EAAW,SAAS,CAAA;AAAA,YACjD,OAAA,EAAQ,aAAA;AAAA,YAER,QAAA,kBAAAA,cAAAA,CAACiG,eAAA,EAAA,EAAa,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,SACpC;AAAA,wBACAjG,cAAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,MAAM,MAAA,CAAO,KAAA,EAAM,CAAE,OAAM,CAAE,YAAA,CAAa,SAAS,CAAA,CAAE,GAAA,EAAI;AAAA,YAClE,WAAW,MAAA,CAAO,QAAA,CAAS,EAAE,SAAA,EAAW,WAAW,CAAA;AAAA,YACnD,OAAA,EAAQ,SAAA;AAAA,YAER,QAAA,kBAAAA,cAAAA,CAACkG,iBAAA,EAAA,EAAe,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,SACtC;AAAA,wBAEAlG,eAAC,gBAAA,EAAA,EAAiB,CAAA;AAAA,wBAGlBA,cAAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,MAAM,MAAA,CAAO,KAAA,GAAQ,KAAA,EAAM,CAAE,gBAAA,EAAiB,CAAE,GAAA,EAAI;AAAA,YAC7D,SAAA,EAAW,MAAA,CAAO,QAAA,CAAS,YAAY,CAAA;AAAA,YACvC,OAAA,EAAQ,aAAA;AAAA,YAER,QAAA,kBAAAA,cAAAA,CAACmG,SAAA,EAAA,EAAO,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,SAC9B;AAAA,wBACAnG,cAAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,MAAM,MAAA,CAAO,KAAA,GAAQ,KAAA,EAAM,CAAE,iBAAA,EAAkB,CAAE,GAAA,EAAI;AAAA,YAC9D,SAAA,EAAW,MAAA,CAAO,QAAA,CAAS,aAAa,CAAA;AAAA,YACxC,OAAA,EAAQ,eAAA;AAAA,YAER,QAAA,kBAAAA,cAAAA,CAACoG,gBAAA,EAAA,EAAc,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,SACrC;AAAA,wBACApG,cAAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,MAAM,MAAA,CAAO,KAAA,GAAQ,KAAA,EAAM,CAAE,cAAA,EAAe,CAAE,GAAA,EAAI;AAAA,YAC3D,SAAA,EAAW,MAAA,CAAO,QAAA,CAAS,UAAU,CAAA;AAAA,YACrC,OAAA,EAAQ,WAAA;AAAA,YAER,QAAA,kBAAAA,cAAAA,CAACqG,eAAA,EAAA,EAAa,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,SACpC;AAAA,wBAEArG,eAAC,gBAAA,EAAA,EAAiB,CAAA;AAAA,wBAGlBA,cAAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,SAAS,MAAM;AACb,cAAA,IAAI,MAAA,CAAO,QAAA,CAAS,UAAU,CAAA,EAAG;AAC/B,gBAAA,MAAA,CAAO,OAAM,CAAE,KAAA,GAAQ,YAAA,CAAa,UAAU,EAAE,GAAA,EAAI;AAAA,cACtD,CAAA,MAAA,IAAW,MAAA,CAAO,QAAA,CAAS,UAAU,CAAA,EAAG;AACtC,gBAAA,MAAA,CAAO,OAAM,CAAE,KAAA,GAAQ,YAAA,CAAa,UAAU,EAAE,GAAA,EAAI;AAAA,cACtD;AAAA,YACF,CAAA;AAAA,YACA,QAAA,EAAU,CAAC,MAAA,CAAO,GAAA,EAAI,CAAE,YAAA,CAAa,UAAU,CAAA,IAAK,CAAC,MAAA,CAAO,GAAA,EAAI,CAAE,aAAa,UAAU,CAAA;AAAA,YACzF,OAAA,EAAQ,iBAAA;AAAA,YAER,QAAA,kBAAAA,cAAAA,CAACsG,mBAAA,EAAA,EAAiB,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,SACxC;AAAA,wBACAtG,cAAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,SAAS,MAAM;AACb,cAAA,IAAI,MAAA,CAAO,QAAA,CAAS,UAAU,CAAA,EAAG;AAC/B,gBAAA,MAAA,CAAO,OAAM,CAAE,KAAA,GAAQ,YAAA,CAAa,UAAU,EAAE,GAAA,EAAI;AAAA,cACtD,CAAA,MAAA,IAAW,MAAA,CAAO,QAAA,CAAS,UAAU,CAAA,EAAG;AACtC,gBAAA,MAAA,CAAO,OAAM,CAAE,KAAA,GAAQ,YAAA,CAAa,UAAU,EAAE,GAAA,EAAI;AAAA,cACtD;AAAA,YACF,CAAA;AAAA,YACA,QAAA,EAAU,CAAC,MAAA,CAAO,GAAA,EAAI,CAAE,YAAA,CAAa,UAAU,CAAA,IAAK,CAAC,MAAA,CAAO,GAAA,EAAI,CAAE,aAAa,UAAU,CAAA;AAAA,YACzF,OAAA,EAAQ,iBAAA;AAAA,YAER,QAAA,kBAAAA,cAAAA,CAACuG,mBAAA,EAAA,EAAiB,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,SACxC;AAAA,wBAEAvG,eAAC,gBAAA,EAAA,EAAiB,CAAA;AAAA,wBAGlBA,cAAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,gBAAA;AAAA,YACT,OAAA,EAAQ,iBAAA;AAAA,YAER,QAAA,kBAAAA,cAAAA,CAACwG,sBAAA,EAAA,EAAoB,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,SAC3C;AAAA,wBAGAxG,cAAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,MAAM,eAAA,CAAgB,OAAA,EAAS,KAAA,EAAM;AAAA,YAC9C,OAAA,EAAQ,cAAA;AAAA,YAER,QAAA,kBAAAA,cAAAA,CAACyG,UAAA,EAAA,EAAQ,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,SAC/B;AAAA,wBAGAtG,eAAAA,CAAC,OAAA,EAAA,EAAQ,IAAA,EAAM,eAAA,EAAiB,cAAc,mBAAA,EAC5C,QAAA,EAAA;AAAA,0BAAAH,cAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACrB,QAAA,kBAAAA,cAAAA;AAAA,YAAC,aAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,MAAA,CAAO,QAAA,CAAS,OAAO,CAAA;AAAA,cAClC,OAAA,EAAQ,OAAA;AAAA,cAER,QAAA,kBAAAA,cAAAA,CAAC0G,UAAA,EAAA,EAAQ,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,WAC/B,EACF,CAAA;AAAA,0BACA1G,eAAC,cAAA,EAAA,EAAe,SAAA,EAAU,cAAa,KAAA,EAAM,OAAA,EAC1C,QAAA,EAAA,MAAA,CAAO,QAAA,CAAS,OAAO,CAAA;AAAA;AAAA,4BAEtBG,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBAAA,EACb,QAAA,EAAA;AAAA,8BAAAH,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0BAAA,EAA2B,QAAA,EAAA,kBAAA,EAAgB,CAAA;AAAA,8BAC1DG,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EACb,QAAA,EAAA;AAAA,gCAAAA,eAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,OAAA,EAAQ,OAAA;AAAA,oBACR,IAAA,EAAK,IAAA;AAAA,oBACL,SAAA,EAAU,2BAAA;AAAA,oBACV,OAAA,EAAS,qBAAA;AAAA,oBAET,QAAA,EAAA;AAAA,sCAAAH,cAAAA,CAAC2G,mBAAA,EAAA,EAAiB,SAAA,EAAU,cAAA,EAAe,CAAA;AAAA,sBAAE;AAAA;AAAA;AAAA,iBAE/C;AAAA,gCACAxG,eAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,OAAA,EAAQ,OAAA;AAAA,oBACR,IAAA,EAAK,IAAA;AAAA,oBACL,SAAA,EAAU,2BAAA;AAAA,oBACV,OAAA,EAAS,oBAAA;AAAA,oBAET,QAAA,EAAA;AAAA,sCAAAH,cAAAA,CAAC2G,mBAAA,EAAA,EAAiB,SAAA,EAAU,cAAA,EAAe,CAAA;AAAA,sBAAE;AAAA;AAAA;AAAA,iBAE/C;AAAA,gCACAxG,eAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,OAAA,EAAQ,OAAA;AAAA,oBACR,IAAA,EAAK,IAAA;AAAA,oBACL,SAAA,EAAU,2BAAA;AAAA,oBACV,OAAA,EAAS,qBAAA;AAAA,oBAET,QAAA,EAAA;AAAA,sCAAAH,cAAAA,CAAC4G,sBAAA,EAAA,EAAoB,SAAA,EAAU,cAAA,EAAe,CAAA;AAAA,sBAAE;AAAA;AAAA;AAAA,iBAElD;AAAA,gCACAzG,eAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,OAAA,EAAQ,OAAA;AAAA,oBACR,IAAA,EAAK,IAAA;AAAA,oBACL,SAAA,EAAU,2BAAA;AAAA,oBACV,OAAA,EAAS,oBAAA;AAAA,oBAET,QAAA,EAAA;AAAA,sCAAAH,cAAAA,CAAC4G,sBAAA,EAAA,EAAoB,SAAA,EAAU,cAAA,EAAe,CAAA;AAAA,sBAAE;AAAA;AAAA;AAAA,iBAElD;AAAA,gCACAzG,eAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,OAAA,EAAQ,OAAA;AAAA,oBACR,IAAA,EAAK,IAAA;AAAA,oBACL,SAAA,EAAU,mEAAA;AAAA,oBACV,OAAA,EAAS,iBAAA;AAAA,oBAET,QAAA,EAAA;AAAA,sCAAAH,cAAAA,CAAC6G,WAAA,EAAA,EAAS,SAAA,EAAU,cAAA,EAAe,CAAA;AAAA,sBAAE;AAAA;AAAA;AAAA,iBAEvC;AAAA,gCACA1G,eAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,OAAA,EAAQ,OAAA;AAAA,oBACR,IAAA,EAAK,IAAA;AAAA,oBACL,SAAA,EAAU,mEAAA;AAAA,oBACV,OAAA,EAAS,iBAAA;AAAA,oBAET,QAAA,EAAA;AAAA,sCAAAH,cAAAA,CAAC6G,WAAA,EAAA,EAAS,SAAA,EAAU,cAAA,EAAe,CAAA;AAAA,sBAAE;AAAA;AAAA;AAAA;AAEvC,eAAA,EACF,CAAA;AAAA,8BACA1G,eAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,OAAA,EAAQ,aAAA;AAAA,kBACR,IAAA,EAAK,IAAA;AAAA,kBACL,SAAA,EAAU,iCAAA;AAAA,kBACV,OAAA,EAAS,mBAAA;AAAA,kBAET,QAAA,EAAA;AAAA,oCAAAH,cAAAA,CAAC6G,WAAA,EAAA,EAAS,SAAA,EAAU,cAAA,EAAe,CAAA;AAAA,oBAAE;AAAA;AAAA;AAAA;AAEvC,aAAA,EACF;AAAA;AAAA;AAAA,4BAGA1G,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBAAA,EACb,QAAA,EAAA;AAAA,8BAAAH,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0BAAA,EAA2B,QAAA,EAAA,cAAA,EAAY,CAAA;AAAA,8BAEtDA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBACZ,QAAA,EAAA,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,CAAA,EAAG,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,EAAG,OAAA,qBACjCA,cAAAA,CAAC,KAAA,EAAA,EAAkB,SAAA,EAAU,cAAA,EAC1B,QAAA,EAAA,KAAA,CAAM,KAAK,EAAE,MAAA,EAAQ,CAAA,EAAG,CAAA,CAAE,GAAA,CAAI,CAAC8G,EAAAA,EAAG,4BACjC9G,cAAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBAEC,SAAA,EAAW,EAAA;AAAA,oBACT,4DAAA;AAAA,oBACA,gBAAgB,OAAA,GAAU,YAAA,CAAa,OAAO,OAAA,GAAU,YAAA,CAAa,MACjE,2BAAA,GACA;AAAA,mBACN;AAAA,kBACA,YAAA,EAAc,MAAM,gBAAA,CAAiB,EAAE,GAAA,EAAK,UAAU,CAAA,EAAG,GAAA,EAAK,OAAA,GAAU,CAAA,EAAG,CAAA;AAAA,kBAC3E,YAAA,EAAc,MAAM,gBAAA,CAAiB,IAAI,CAAA;AAAA,kBACzC,SAAS,MAAM,mBAAA,CAAoB,OAAA,GAAU,CAAA,EAAG,UAAU,CAAC;AAAA,iBAAA;AAAA,gBATtD;AAAA,eAWR,CAAA,EAAA,EAdO,OAeV,CACD,CAAA,EACH,CAAA;AAAA,8BACAA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2CAAA,EACZ,QAAA,EAAA,YAAA,GAAe,CAAA,EAAG,YAAA,CAAa,GAAG,CAAA,GAAA,EAAM,YAAA,CAAa,GAAG,KAAK,aAAA,EAChE,CAAA;AAAA,8BACAG,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oBAAA,EACb,QAAA,EAAA;AAAA,gCAAAH,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oCAAA,EAAqC,QAAA,EAAA,aAAA,EAAW,CAAA;AAAA,gCAC/DG,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,EAAA;AAAA,kCAAAH,cAAAA;AAAA,oBAAC,KAAA;AAAA,oBAAA;AAAA,sBACC,IAAA,EAAK,QAAA;AAAA,sBACL,GAAA,EAAK,CAAA;AAAA,sBACL,GAAA,EAAK,EAAA;AAAA,sBACL,KAAA,EAAO,UAAA;AAAA,sBACP,UAAU,CAAC,CAAA,KAAM,cAAA,CAAe,IAAA,CAAK,IAAI,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,SAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAA,IAAK,CAAC,CAAC,CAAC,CAAA;AAAA,sBACxF,SAAA,EAAU;AAAA;AAAA,mBACZ;AAAA,kCACAA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,WAAU,QAAA,EAAA,GAAA,EAAC,CAAA;AAAA,kCAC3BA,cAAAA;AAAA,oBAAC,KAAA;AAAA,oBAAA;AAAA,sBACC,IAAA,EAAK,QAAA;AAAA,sBACL,GAAA,EAAK,CAAA;AAAA,sBACL,GAAA,EAAK,EAAA;AAAA,sBACL,KAAA,EAAO,UAAA;AAAA,sBACP,UAAU,CAAC,CAAA,KAAM,cAAA,CAAe,IAAA,CAAK,IAAI,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,SAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAA,IAAK,CAAC,CAAC,CAAC,CAAA;AAAA,sBACxF,SAAA,EAAU;AAAA;AAAA,mBACZ;AAAA,kCACAG,eAAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBACC,IAAA,EAAK,IAAA;AAAA,sBACL,SAAA,EAAU,aAAA;AAAA,sBACV,OAAA,EAAS,MAAM,mBAAA,CAAoB,UAAA,EAAY,UAAU,CAAA;AAAA,sBAEzD,QAAA,EAAA;AAAA,wCAAAH,cAAAA,CAAC+G,YAAA,EAAA,EAAU,SAAA,EAAU,cAAA,EAAe,CAAA;AAAA,wBAAE;AAAA;AAAA;AAAA;AAExC,iBAAA,EACF;AAAA,eAAA,EACF;AAAA,aAAA,EACF;AAAA,WAAA,EAEJ;AAAA,SAAA,EACF,CAAA;AAAA,wBAEA/G,eAAC,gBAAA,EAAA,EAAiB,CAAA;AAAA,QAGjB,SAAA,CAAU,SAAS,CAAA,oBAClBG,gBAAC,OAAA,EAAA,EAAQ,IAAA,EAAM,mBAAA,EAAqB,YAAA,EAAc,uBAAA,EAChD,QAAA,EAAA;AAAA,0BAAAH,cAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACrB,0BAAAA,cAAAA,CAAC,aAAA,EAAA,EAAc,OAAA,EAAQ,iBAAA,EACrB,0BAAAA,cAAAA,CAACgH,aAAA,EAAA,EAAW,SAAA,EAAU,SAAA,EAAU,GAClC,CAAA,EACF,CAAA;AAAA,0BACAhH,eAAC,cAAA,EAAA,EAAe,SAAA,EAAU,YAAW,KAAA,EAAM,OAAA,EACzC,QAAA,kBAAAG,eAAAA,CAAC,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,4BAAAH,cAAAA,CAAC,YAAA,EAAA,EAAa,WAAA,EAAY,qBAAA,EAAsB,WAAU,aAAA,EAAc,CAAA;AAAA,4BACxEG,gBAAC,WAAA,EAAA,EACC,QAAA,EAAA;AAAA,8BAAAH,cAAAA,CAAC,gBAAa,QAAA,EAAA,qBAAA,EAAmB,CAAA;AAAA,8BACjCA,cAAAA,CAAC,YAAA,EAAA,EACE,oBAAU,GAAA,CAAI,CAAC,6BACdA,cAAAA;AAAA,gBAAC,WAAA;AAAA,gBAAA;AAAA,kBAEC,OAAO,QAAA,CAAS,IAAA;AAAA,kBAChB,QAAA,EAAU,MAAM,sBAAA,CAAuB,QAAA,CAAS,IAAI,CAAA;AAAA,kBACpD,SAAA,EAAU,SAAA;AAAA,kBAEV,QAAA,kBAAAG,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAA,EACb,QAAA,EAAA;AAAA,oCAAAH,eAAC,MAAA,EAAA,EAAK,SAAA,EAAU,eAAe,QAAA,EAAA,CAAA,EAAA,EAAK,QAAA,CAAS,IAAI,CAAA,EAAA,CAAA,EAAK,CAAA;AAAA,oBACrD,QAAA,CAAS,+BACRA,cAAAA,CAAC,UAAK,SAAA,EAAU,mCAAA,EACb,mBAAS,WAAA,EACZ;AAAA,mBAAA,EAEJ;AAAA,iBAAA;AAAA,gBAZK,QAAA,CAAS;AAAA,eAcjB,CAAA,EACH;AAAA,aAAA,EACF;AAAA,WAAA,EACF,CAAA,EACF;AAAA,SAAA,EACF,CAAA;AAAA,wBAIFA,cAAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,MAAM,cAAA,CAAe,OAAA,EAAS,KAAA,EAAM;AAAA,YAC7C,OAAA,EAAQ,aAAA;AAAA,YAER,QAAA,kBAAAA,cAAAA,CAACiH,cAAA,EAAA,EAAY,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,SACnC;AAAA,wBAGAjH,cAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,cAAA;AAAA,YACL,IAAA,EAAK,MAAA;AAAA,YACL,SAAA,EAAU,QAAA;AAAA,YACV,QAAA,EAAU;AAAA;AAAA,SACZ;AAAA,wBACAA,cAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,eAAA;AAAA,YACL,IAAA,EAAK,MAAA;AAAA,YACL,MAAA,EAAO,SAAA;AAAA,YACP,SAAA,EAAU,QAAA;AAAA,YACV,QAAA,EAAU;AAAA;AAAA;AACZ;AAAA;AAAA,GACF,EACF,CAAA;AAEJ,CAAA;AC3yBA,IAAM,aAAA,GAAgB,CAAC,SAAA,EAAmB,QAAA,KAAqB;AAC7D,EAAA,IAAI,aAAA,CAAc,SAAS,CAAA,EAAG;AAC5B,IAAA,uBAAOA,cAAAA,CAACyG,UAAAA,EAAA,EAAQ,WAAU,SAAA,EAAU,CAAA;AAAA,EACtC;AAEA,EAAA,MAAM,GAAA,GAAM,mBAAmB,QAAQ,CAAA;AACvC,EAAA,IAAI,CAAC,OAAO,IAAA,EAAM,KAAA,EAAO,QAAQ,KAAK,CAAA,CAAE,QAAA,CAAS,GAAG,CAAA,EAAG;AACrD,IAAA,uBAAOzG,cAAAA,CAACkH,aAAA,EAAA,EAAW,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,CAAC,IAAA,EAAM,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,MAAA,EAAQ,MAAA,EAAQ,KAAK,CAAA,CAAE,QAAA,CAAS,GAAG,CAAA,EAAG;AACnE,IAAA,uBAAOlH,cAAAA,CAACmH,aAAA,EAAA,EAAW,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,EACzC;AAEA,EAAA,uBAAOnH,cAAAA,CAACoH,SAAA,EAAA,EAAO,SAAA,EAAU,SAAA,EAAU,CAAA;AACrC,CAAA;AAKA,IAAM,eAAA,GAAkB,CAAC,MAAA,KAA2B;AAElD,EAAA,MAAM,OAAA,GAAA,CAAW,OAAO,KAAA,CAAM,KAAK,KAAK,CAAC,EAAE,CAAA,EAAG,CAAC,CAAA,CAAE,MAAA;AACjD,EAAA,OAAO,KAAK,KAAA,CAAO,MAAA,CAAO,MAAA,GAAS,CAAA,GAAK,CAAC,CAAA,GAAI,OAAA;AAC/C,CAAA;AAEO,IAAM,kBAAkD,CAAC;AAAA,EAC9D,WAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA,GAAW;AACb,CAAA,KAAM;AACJ,EAAA,IAAI,WAAA,CAAY,WAAW,CAAA,EAAG;AAC5B,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACEpH,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,qBAAA;AAAA,QACA,0BAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEC,QAAA,EAAA,WAAA,CAAY,GAAA,CAAI,CAAC,UAAA,EAAY,KAAA,KAAU;AACtC,QAAA,MAAM,IAAA,GAAO,eAAA,CAAgB,UAAA,CAAW,IAAI,CAAA;AAC5C,QAAA,MAAM,QAAA,GAAW,aAAA,CAAc,UAAA,CAAW,SAAS,CAAA;AAEnD,QAAA,uBACEG,eAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YAEC,SAAA,EAAW,EAAA;AAAA,cACT,yBAAA;AAAA,cACA,yBAAA;AAAA,cACA,wBAAA;AAAA,cACA,oCAAA;AAAA,cACA;AAAA,aACF;AAAA,YAGC,QAAA,EAAA;AAAA,cAAA,QAAA,mBACCH,cAAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,KAAK,CAAA,KAAA,EAAQ,UAAA,CAAW,SAAS,CAAA,QAAA,EAAW,WAAW,IAAI,CAAA,CAAA;AAAA,kBAC3D,KAAK,UAAA,CAAW,QAAA;AAAA,kBAChB,SAAA,EAAU;AAAA;AAAA,eACZ,mBAEAA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2DAAA,EACZ,QAAA,EAAA,aAAA,CAAc,UAAA,CAAW,SAAA,EAAW,UAAA,CAAW,QAAQ,CAAA,EAC1D,CAAA;AAAA,8BAIFG,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EACb,QAAA,EAAA;AAAA,gCAAAH,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oCAAA,EACb,qBAAW,QAAA,EACd,CAAA;AAAA,gCACAA,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,mCAAA,EACb,QAAA,EAAA,gBAAA,CAAiB,IAAI,CAAA,EACxB;AAAA,eAAA,EACF,CAAA;AAAA,8BAGAA,cAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,OAAA,EAAQ,OAAA;AAAA,kBACR,IAAA,EAAK,MAAA;AAAA,kBACL,SAAA,EAAU,cAAA;AAAA,kBACV,OAAA,EAAS,MAAM,SAAA,CAAU,KAAK,CAAA;AAAA,kBAC9B,QAAA;AAAA,kBAEA,QAAA,kBAAAA,cAAAA,CAACqH,MAAA,EAAA,EAAI,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA;AAC3B;AAAA,WAAA;AAAA,UAzCK,CAAA,EAAG,UAAA,CAAW,QAAQ,CAAA,CAAA,EAAI,KAAK,CAAA;AAAA,SA0CtC;AAAA,MAEJ,CAAC;AAAA;AAAA,GACH;AAEJ,CAAA;ACtFO,IAAM,iBAAA,GAAoBC,eAAU,MAAA,CAAwB;AAAA,EACjE,IAAA,EAAM,gBAAA;AAAA,EAEN,UAAA,GAAa;AACX,IAAA,OAAO;AAAA,MACL,KAAA,EAAO,CAAC,WAAW,CAAA;AAAA,MACnB,YAAA,EAAc,EAAA;AAAA,MACd,QAAA,EAAU,CAAA;AAAA,MACV,QAAA,EAAU,EAAA;AAAA,MACV,IAAA,EAAM;AAAA,KACR;AAAA,EACF,CAAA;AAAA,EAEA,mBAAA,GAAsB;AACpB,IAAA,OAAO;AAAA,MACL;AAAA,QACE,KAAA,EAAO,KAAK,OAAA,CAAQ,KAAA;AAAA,QACpB,UAAA,EAAY;AAAA,UACV,QAAA,EAAU;AAAA,YACR,OAAA,EAAS,IAAA;AAAA,YACT,SAAA,EAAW,CAAC,OAAA,KAAY;AACtB,cAAA,MAAM,OAAO,OAAA,CAAQ,KAAA,CAAM,QAAA,EAAU,OAAA,CAAQ,WAAW,EAAE,CAAA;AAC1D,cAAA,OAAO,IAAA,GAAO,QAAA,CAAS,IAAA,EAAM,EAAE,CAAA,GAAI,IAAA;AAAA,YACrC,CAAA;AAAA,YACA,UAAA,EAAY,CAAC,UAAA,KAAe;AAC1B,cAAA,IAAI,CAAC,WAAW,QAAA,EAAU;AACxB,gBAAA,OAAO,EAAC;AAAA,cACV;AACA,cAAA,OAAO;AAAA,gBACL,KAAA,EAAO,CAAA,WAAA,EAAc,UAAA,CAAW,QAAQ,CAAA,EAAA;AAAA,eAC1C;AAAA,YACF;AAAA;AACF;AACF;AACF,KACF;AAAA,EACF,CAAA;AAAA,EAEA,WAAA,GAAc;AACZ,IAAA,OAAO;AAAA,MACL,gBACE,CAAC,IAAA,KACD,CAAC,EAAE,OAAM,KAAM;AACb,QAAA,MAAM,cAAc,IAAA,CAAK,GAAA;AAAA,UACvB,KAAK,OAAA,CAAQ,QAAA;AAAA,UACb,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,OAAA,CAAQ,UAAU,IAAI;AAAA,SACtC;AACA,QAAA,OAAO,KAAA,GAAQ,OAAA,CAAQ,WAAA,EAAa,EAAE,QAAA,EAAU,WAAA,EAAa,CAAA,CAAE,GAAA,EAAI;AAAA,MACrE,CAAA;AAAA,MACF,gBAAA,EACE,MACA,CAAC,EAAE,OAAM,KAAM;AACb,QAAA,OAAO,KAAA,EAAM,CACV,OAAA,CAAQ,WAAA,EAAa,EAAE,QAAA,EAAU,IAAA,EAAM,CAAA,CACvC,oBAAA,EAAqB,CACrB,GAAA,EAAI;AAAA,MACT;AAAA,KACJ;AAAA,EACF;AACF,CAAC,CAAA;AC7ED,IAAM,YAAA,GAAwC,CAAC,EAAE,IAAA,EAAM,UAAS,KAAM;AACpE,EAAA,uBACEtH,cAAAA,CAACuH,qBAAA,EAAA,EAAgB,IAAG,MAAA,EAAO,SAAA,EAAU,UACnC,QAAA,kBAAAvH,cAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,uBAAA;AAAA,QACA,0BAAA;AAAA,QACA,oBAAA;AAAA,QACA,cAAA;AAAA,QACA,qBAAA;AAAA,QACA,4BAAA;AAAA,QACA,0BAAA;AAAA,QACA,4BAAA;AAAA,QACA,QAAA,IAAY;AAAA,OACd;AAAA,MACA,eAAA,EAAiB,KAAA;AAAA,MACjB,eAAA,EAAe,KAAK,KAAA,CAAM,IAAA;AAAA,MAEzB,QAAA,EAAA,CAAA,EAAA,EAAK,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA,EAAA;AAAA;AAAA,GACvB,EACF,CAAA;AAEJ,CAAA;AAaO,IAAM,iBAAA,GAAoBwH,UAAK,MAAA,CAAO;AAAA,EAC3C,IAAA,EAAM,UAAA;AAAA,EAEN,KAAA,EAAO,QAAA;AAAA,EAEP,MAAA,EAAQ,IAAA;AAAA;AAAA,EAGR,IAAA,EAAM,IAAA;AAAA;AAAA,EAGN,SAAA,EAAW,IAAA;AAAA;AAAA,EAGX,UAAA,EAAY,IAAA;AAAA,EAEZ,aAAA,GAAgB;AACd,IAAA,OAAO;AAAA,MACL,IAAA,EAAM;AAAA,QACJ,OAAA,EAAS,IAAA;AAAA,QACT,SAAA,EAAW,CAAC,OAAA,KAAY,OAAA,CAAQ,aAAa,eAAe,CAAA;AAAA,QAC5D,UAAA,EAAY,CAAC,UAAA,MAAgB;AAAA,UAC3B,iBAAiB,UAAA,CAAW;AAAA,SAC9B;AAAA;AACF,KACF;AAAA,EACF,CAAA;AAAA,EAEA,SAAA,GAAY;AACV,IAAA,OAAO;AAAA,MACL;AAAA,QACE,GAAA,EAAK;AAAA;AACP,KACF;AAAA,EACF,CAAA;AAAA,EAEA,UAAA,CAAW,EAAE,cAAA,EAAe,EAAG;AAC7B,IAAA,OAAO;AAAA,MACL,MAAA;AAAA,MACAC,qBAAgB,cAAA,EAAgB;AAAA,QAC9B,KAAA,EAAO,uBAAA;AAAA,QACP,eAAA,EAAiB;AAAA,OAClB,CAAA;AAAA,MACD,CAAA,EAAA,EAAK,cAAA,CAAe,eAAe,CAAC,CAAA,EAAA;AAAA,KACtC;AAAA,EACF,CAAA;AAAA,EAEA,UAAA,CAAW,EAAE,IAAA,EAAK,EAAG;AACnB,IAAA,OAAO,CAAA,EAAA,EAAK,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA,EAAA,CAAA;AAAA,EAC7B,CAAA;AAAA,EAEA,WAAA,GAAc;AACZ,IAAA,OAAOC,4BAAsB,YAAY,CAAA;AAAA,EAC3C,CAAA;AAAA,EAEA,WAAA,GAAc;AACZ,IAAA,OAAO;AAAA,MACL,gBACE,CAAC,IAAA,KACD,CAAC,EAAE,UAAS,KAAM;AAChB,QAAA,OAAO,SAAS,aAAA,CAAc;AAAA,UAC5B,MAAM,IAAA,CAAK,IAAA;AAAA,UACX,KAAA,EAAO,EAAE,IAAA;AAAK,SACf,CAAA;AAAA,MACH;AAAA,KACJ;AAAA,EACF,CAAA;AAAA;AAAA,EAGA,oBAAA,GAAuB;AACrB,IAAA,OAAO;AAAA,MACL,SAAA,EAAW,MACT,IAAA,CAAK,MAAA,CAAO,QAAA,CAAS,QAAQ,CAAC,EAAE,EAAA,EAAI,KAAA,EAAM,KAAM;AAC9C,QAAA,IAAI,WAAA,GAAc,KAAA;AAClB,QAAA,MAAM,EAAE,WAAU,GAAI,KAAA;AACtB,QAAA,MAAM,EAAE,KAAA,EAAO,MAAA,EAAO,GAAI,SAAA;AAE1B,QAAA,IAAI,CAAC,KAAA,EAAO;AACV,UAAA,OAAO,KAAA;AAAA,QACT;AAEA,QAAA,KAAA,CAAM,IAAI,YAAA,CAAa,MAAA,GAAS,GAAG,MAAA,EAAQ,CAAC,MAAM,GAAA,KAAQ;AACxD,UAAA,IAAI,IAAA,CAAK,IAAA,CAAK,IAAA,KAAS,IAAA,CAAK,IAAA,EAAM;AAChC,YAAA,WAAA,GAAc,IAAA;AACd,YAAA,EAAA,CAAG,UAAA,CAAW,EAAA,EAAI,GAAA,EAAK,GAAA,GAAM,KAAK,QAAQ,CAAA;AAC1C,YAAA,OAAO,KAAA;AAAA,UACT;AAAA,QACF,CAAC,CAAA;AAED,QAAA,OAAO,WAAA;AAAA,MACT,CAAC;AAAA,KACL;AAAA,EACF;AACF,CAAC,CAAA;ACpID,IAAM,IAAA,GAAqBC,wBAAA,CAAA,IAAA;AAE3B,IAAM,QAAA,GAAiBC,8BAGrB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1B5H,cAAAA;AAAA,EAAe2H,wBAAA,CAAA,IAAA;AAAA,EAAd;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,2FAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD,CAAA;AACD,QAAA,CAAS,cAA4BA,wBAAA,CAAA,IAAA,CAAK,WAAA;AAE1C,IAAM,WAAA,GAAoBC,8BAGxB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1B5H,cAAAA;AAAA,EAAe2H,wBAAA,CAAA,OAAA;AAAA,EAAd;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,gYAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD,CAAA;AACD,WAAA,CAAY,cAA4BA,wBAAA,CAAA,OAAA,CAAQ,WAAA;AAEhD,IAAM,WAAA,GAAoBC,8BAGxB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1B5H,cAAAA;AAAA,EAAe2H,wBAAA,CAAA,OAAA;AAAA,EAAd;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,iIAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD,CAAA;AACD,WAAA,CAAY,cAA4BA,wBAAA,CAAA,OAAA,CAAQ,WAAA;ACNhD,SAAS,WAAA,CACP,MACA,IAAA,EACqB;AACrB,EAAA,IAAI,UAAA,GAAmD,IAAA;AAEvD,EAAA,OAAO,CAAC,MAAA,KAAc;AACpB,IAAA,IAAI,UAAA,EAAY;AACd,MAAA,YAAA,CAAa,UAAU,CAAA;AAAA,IACzB;AACA,IAAA,UAAA,GAAa,WAAW,MAAM;AAC5B,MAAA,IAAA,CAAK,MAAM,CAAA;AAAA,IACb,GAAG,IAAI,CAAA;AAAA,EACT,CAAA;AACF;AAKO,IAAM,YAAsC,CAAC;AAAA,EAClD,IAAA,GAAO,EAAA;AAAA,EACP,WAAA,EAAa,sBAAsB,EAAC;AAAA,EACpC,YAAY,EAAC;AAAA,EACb,SAAA;AAAA,EACA,WAAA,GAAc,iBAAA;AAAA,EACd,UAAA,GAAa,OAAA;AAAA,EACb,UAAA,GAAa,OAAA;AAAA,EACb,QAAA,GAAW,KAAA;AAAA,EACX,SAAA;AAAA,EACA,kBAAA,GAAqB;AACvB,CAAA,KAAM;AACJ,EAAA,MAAM,CAAC,WAAA,EAAa,eAAe,CAAA,GAAUE,kBAAA,CAAA,QAAA;AAAA,IAC3C;AAAA,GACF;AACA,EAAA,MAAM,CAAC,UAAA,EAAY,cAAc,CAAA,GAAUA,4BAA6C,MAAM,CAAA;AAG9F,EAAA,MAAM,eAAe,UAAA,KAAe,MAAA;AAGpC,EAAA,MAAM,eAAA,GAAwBA,0BAAO,WAAW,CAAA;AAChD,EAAA,eAAA,CAAgB,OAAA,GAAU,WAAA;AAG1B,EAAA,MAAM,mBAAA,GAA4BA,kBAAA,CAAA,OAAA;AAAA,IAChC,MACE,WAAA,CAAuB,CAAC,MAAA,KAAsB;AAC5C,MAAA,IAAI,SAAA,EAAW;AACb,QAAA,SAAA,CAAU,MAAM,CAAA;AAAA,MAClB;AAAA,IACF,GAAG,GAAG,CAAA;AAAA,IACR,CAAC,SAAS;AAAA,GACZ;AAGA,EAAA,MAAM,SAASC,eAAA,CAAU;AAAA,IACvB,UAAA,EAAY;AAAA,MACVC,4BAAW,SAAA,CAAU;AAAA,QACnB,OAAA,EAAS;AAAA,UACP,MAAA,EAAQ,CAAC,CAAA,EAAG,CAAA,EAAG,CAAC;AAAA;AAClB,OACD,CAAA;AAAA,MACDC,4BAAA;AAAA,MACAC,2BAAA;AAAA,MACA,iBAAA;AAAA,MACAC,0BAAA;AAAA,MACAC,0BAAA;AAAA,MACAC,4BAAA;AAAA,MACAC,sBAAK,SAAA,CAAU;AAAA,QACb,WAAA,EAAa,KAAA;AAAA,QACb,cAAA,EAAgB;AAAA,UACd,KAAA,EAAO;AAAA;AACT,OACD,CAAA;AAAA,MACDC,2BAAU,SAAA,CAAU;AAAA,QAClB,KAAA,EAAO,CAAC,SAAA,EAAW,WAAW;AAAA,OAC/B,CAAA;AAAA,MACDC,2BAAU,SAAA,CAAU;AAAA,QAClB,UAAA,EAAY;AAAA,OACb,CAAA;AAAA,MACDC,sBAAA;AAAA,MACAC,uBAAM,SAAA,CAAU;AAAA,QACd,MAAA,EAAQ,IAAA;AAAA,QACR,WAAA,EAAa,IAAA;AAAA,QACb,cAAA,EAAgB;AAAA,UACd,KAAA,EAAO;AAAA;AACT,OACD,CAAA;AAAA,MACDC,6BAAY,SAAA,CAAU;AAAA,QACpB;AAAA,OACD,CAAA;AAAA,MACDC,+BAAA;AAAA,MACAC,qBAAM,SAAA,CAAU;AAAA,QACd,SAAA,EAAW,IAAA;AAAA,QACX,cAAA,EAAgB;AAAA,UACd,KAAA,EAAO;AAAA;AACT,OACD,CAAA;AAAA,MACDC,yBAAA;AAAA,MACAC,2BAAU,SAAA,CAAU;AAAA,QAClB,cAAA,EAAgB;AAAA,UACd,KAAA,EAAO;AAAA;AACT,OACD,CAAA;AAAA,MACDC,6BAAY,SAAA,CAAU;AAAA,QACpB,cAAA,EAAgB;AAAA,UACd,KAAA,EAAO;AAAA;AACT,OACD,CAAA;AAAA,MACDC,0BAAS,SAAA,CAAU;AAAA,QACjB,cAAA,EAAgB;AAAA,UACd,KAAA,EAAO;AAAA;AACT,OACD,CAAA;AAAA,MACDC,0BAAS,SAAA,CAAU;AAAA,QACjB,MAAA,EAAQ,IAAA;AAAA,QACR,cAAA,EAAgB;AAAA,UACd,KAAA,EAAO;AAAA;AACT,OACD,CAAA;AAAA,MACD;AAAA,KACF;AAAA,IACA,OAAA,EAAS,IAAA;AAAA,IACT,UAAU,CAAC,QAAA;AAAA,IACX,WAAA,EAAa;AAAA,MACX,UAAA,EAAY;AAAA,QACV,KAAA,EAAO,EAAA;AAAA,UACL,gBAAA;AAAA,UACA,6CAAA;AAAA,UACA,wBAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,KAAA,EAAO,CAAA,YAAA,EAAe,UAAU,CAAA,cAAA,EAAiB,UAAU,CAAA;AAAA;AAC7D,KACF;AAAA,IACA,QAAA,EAAU,CAAC,EAAE,MAAA,EAAAC,SAAO,KAAM;AACxB,MAAA,MAAM,MAAA,GAAoB;AAAA,QACxB,IAAA,EAAMA,QAAO,OAAA,EAAQ;AAAA,QACrB,UAAA,EAAYA,QAAO,OAAA,EAAQ;AAAA,QAC3B,aAAa,eAAA,CAAgB;AAAA,OAC/B;AACA,MAAA,mBAAA,CAAoB,MAAM,CAAA;AAAA,IAC5B;AAAA,GACD,CAAA;AAGD,EAAMrB,6BAAU,MAAM;AACpB,IAAA,IAAI,MAAA,IAAU,SAAS,MAAA,EAAW;AAChC,MAAA,MAAM,YAAA,GAAe,OAAO,OAAA,EAAQ;AAEpC,MAAA,IAAI,IAAA,KAAS,YAAA,IAAgB,CAAC,MAAA,CAAO,SAAA,EAAW;AAC9C,QAAA,MAAA,CAAO,SAAS,UAAA,CAAW,IAAA,EAAM,EAAE,UAAA,EAAY,OAAO,CAAA;AAAA,MACxD;AAAA,IACF;AAAA,EACF,CAAA,EAAG,CAAC,IAAA,EAAM,MAAM,CAAC,CAAA;AAGjB,EAAMA,6BAAU,MAAM;AACpB,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,MAAA,CAAO,WAAA,CAAY,CAAC,QAAQ,CAAA;AAAA,IAC9B;AAAA,EACF,CAAA,EAAG,CAAC,QAAA,EAAU,MAAM,CAAC,CAAA;AAGrB,EAAA,MAAM,0BAAA,GAAmCA,0BAAO,KAAK,CAAA;AACrD,EAAA,MAAM,4BAAA,GAAqCA,0BAAO,mBAAmB,CAAA;AAGrE,EAAMA,6BAAU,MAAM;AAEpB,IAAA,IAAI,IAAA,CAAK,UAAU,mBAAmB,CAAA,KAAM,KAAK,SAAA,CAAU,4BAAA,CAA6B,OAAO,CAAA,EAAG;AAChG,MAAA,4BAAA,CAA6B,OAAA,GAAU,mBAAA;AACvC,MAAA,0BAAA,CAA2B,OAAA,GAAU,IAAA;AACrC,MAAA,eAAA,CAAgB,mBAAmB,CAAA;AAAA,IACrC;AAAA,EACF,CAAA,EAAG,CAAC,mBAAmB,CAAC,CAAA;AAGxB,EAAMA,6BAAU,MAAM;AACpB,IAAA,IAAI,2BAA2B,OAAA,EAAS;AACtC,MAAA,0BAAA,CAA2B,OAAA,GAAU,KAAA;AACrC,MAAA;AAAA,IACF;AACA,IAAA,IAAI,UAAU,SAAA,EAAW;AACvB,MAAA,MAAM,MAAA,GAAoB;AAAA,QACxB,IAAA,EAAM,OAAO,OAAA,EAAQ;AAAA,QACrB,UAAA,EAAY,OAAO,OAAA,EAAQ;AAAA,QAC3B;AAAA,OACF;AACA,MAAA,SAAA,CAAU,MAAM,CAAA;AAAA,IAClB;AAAA,EAEF,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAGhB,EAAA,MAAM,wBAAA,GAA2B,CAAC,KAAA,KAAkB;AAClD,IAAA,eAAA,CAAgB,CAAC,SAAS,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,KAAM,KAAK,CAAC,CAAA;AAAA,EAC9D,CAAA;AAGA,EAAA,MAAM,yBAAA,GAA4B,CAAC,eAAA,KAAqC;AACtE,IAAA,eAAA,CAAgB,eAAe,CAAA;AAAA,EACjC,CAAA;AAGA,EAAA,MAAM,WAAA,GAAc,CAAC,QAAA,KAA6B;AAChD,IAAA,IAAI,SAAA,GAAY,EAAA;AAChB,IAAA,IAAI,MAAA,GAAS,CAAA;AACb,IAAA,MAAM,OAAO,QAAA,CAAS,KAAA,CAAM,YAAY,CAAA,CAAE,OAAO,OAAO,CAAA;AAExD,IAAA,KAAA,MAAW,OAAO,IAAA,EAAM;AACtB,MAAA,IAAI,GAAA,CAAI,UAAA,CAAW,IAAI,CAAA,EAAG;AACxB,QAAA,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,MAAA,GAAS,CAAC,CAAA;AAC/B,QAAA,SAAA,IAAa,IAAA,CAAK,MAAA,CAAO,MAAM,CAAA,GAAI,GAAA,GAAM,IAAA;AAAA,MAC3C,CAAA,MAAA,IAAW,GAAA,CAAI,UAAA,CAAW,GAAG,KAAK,CAAC,GAAA,CAAI,UAAA,CAAW,IAAI,CAAA,IAAK,CAAC,GAAA,CAAI,QAAA,CAAS,IAAI,CAAA,EAAG;AAC9E,QAAA,SAAA,IAAa,IAAA,CAAK,MAAA,CAAO,MAAM,CAAA,GAAI,GAAA,GAAM,IAAA;AACzC,QAAA,IAAI,CAAC,GAAA,CAAI,QAAA,CAAS,IAAI,KAAK,CAAC,GAAA,CAAI,QAAA,CAAS,IAAI,CAAA,IAAK,CAAC,GAAA,CAAI,QAAA,CAAS,KAAK,CAAA,EAAG;AACtE,UAAA,MAAA,EAAA;AAAA,QACF;AAAA,MACF,CAAA,MAAA,IAAW,GAAA,CAAI,UAAA,CAAW,GAAG,CAAA,EAAG;AAC9B,QAAA,SAAA,IAAa,IAAA,CAAK,MAAA,CAAO,MAAM,CAAA,GAAI,GAAA,GAAM,IAAA;AAAA,MAC3C,CAAA,MAAA,IAAW,GAAA,CAAI,IAAA,EAAK,EAAG;AACrB,QAAA,SAAA,IAAa,KAAK,MAAA,CAAO,MAAM,CAAA,GAAI,GAAA,CAAI,MAAK,GAAI,IAAA;AAAA,MAClD;AAAA,IACF;AACA,IAAA,OAAO,UAAU,IAAA,EAAK;AAAA,EACxB,CAAA;AAEA,EAAA,uBACE1H,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,mBAAA;AAAA,QACA,8CAAA;AAAA,QACA,uEAAA;AAAA,QACA,QAAA,IAAY,+BAAA;AAAA,QACZ;AAAA,OACF;AAAA,MAGA,QAAA,EAAA;AAAA,wBAAAH,cAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,MAAA;AAAA,YACA,SAAA;AAAA,YACA,WAAA;AAAA,YACA,qBAAA,EAAuB,yBAAA;AAAA,YACvB,UAAU,QAAA,IAAY;AAAA;AAAA,SACxB;AAAA,QAGC,kBAAA,IAAsB,0BACrBA,cAAAA,CAAC,SAAI,SAAA,EAAU,+CAAA,EACb,QAAA,kBAAAA,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAO,YAAY,aAAA,EAAe,CAAC,MAAM,cAAA,CAAe,CAAsB,GAClF,QAAA,kBAAAG,eAAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,KAAA,EAClB,QAAA,EAAA;AAAA,0BAAAH,eAAC,WAAA,EAAA,EAAY,KAAA,EAAM,MAAA,EAAO,SAAA,EAAU,WAAU,QAAA,EAAA,MAAA,EAAI,CAAA;AAAA,0BAClDA,cAAAA,CAAC,WAAA,EAAA,EAAY,OAAM,YAAA,EAAa,SAAA,EAAU,WAAU,QAAA,EAAA,YAAA,EAAU,CAAA;AAAA,0BAC9DA,cAAAA,CAAC,WAAA,EAAA,EAAY,OAAM,UAAA,EAAW,SAAA,EAAU,WAAU,QAAA,EAAA,UAAA,EAAQ;AAAA,SAAA,EAC5D,GACF,CAAA,EACF,CAAA;AAAA,wBAIFG,eAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,SAAA,EAAW,UAAA,EAAY,SAAA,EAAW,UAAA,EAAW,EAAG,SAAA,EAAU,eAAA,EAErE,QAAA,EAAA;AAAA,UAAA,UAAA,KAAe,0BACdH,cAAAA;AAAA,YAACmJ,mBAAA;AAAA,YAAA;AAAA,cACC,MAAA;AAAA,cACA,SAAA,EAAW,EAAA;AAAA,gBACT,iBAAA;AAAA,gBACA,QAAA,IAAY;AAAA;AACd;AAAA,WACF;AAAA,UAID,UAAA,KAAe,YAAA,oBACdnJ,cAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,qEAAA,EACZ,QAAA,EAAA,MAAA,EAAQ,OAAA,EAAQ,IAAK,SAAA,EACxB,CAAA;AAAA,UAID,UAAA,KAAe,UAAA,oBACdA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yFAAA,EACZ,QAAA,EAAA,WAAA,CAAY,MAAA,EAAQ,OAAA,EAAQ,IAAK,EAAE,KAAK,SAAA,EAC3C;AAAA,SAAA,EAEJ,CAAA;AAAA,wBAGAA,cAAAA;AAAA,UAAC,eAAA;AAAA,UAAA;AAAA,YACC,WAAA;AAAA,YACA,SAAA,EAAW,wBAAA;AAAA,YACX;AAAA;AAAA;AACF;AAAA;AAAA,GACF;AAEJ;AAEA,SAAA,CAAU,WAAA,GAAc,WAAA","file":"index.cjs","sourcesContent":["function _extends() {\n return module.exports = _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _extends.apply(null, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// Utility functions for hazo_ui component library\n// Provides className merging utility (cn function)\n\nimport { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * Merges class names using clsx and tailwind-merge\n * @param inputs - Class values to merge\n * @returns Merged class string\n */\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\n","// Button component for hazo_ui library\n// Based on shadcn/ui button component\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive: \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline: \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n sm: \"h-9 rounded-md px-3\",\n lg: \"h-11 rounded-md px-8\",\n icon: \"h-10 w-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n );\n }\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n\n","// Dialog component for hazo_ui library\n// Based on shadcn/ui dialog component\nimport * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nconst Dialog = DialogPrimitive.Root;\nconst DialogTrigger = DialogPrimitive.Trigger;\nconst DialogPortal = DialogPrimitive.Portal;\nconst DialogClose = DialogPrimitive.Close;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\n className\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n);\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogClose,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};\n\n","// Command component for hazo_ui library\n// Based on shadcn/ui command component (simplified version)\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nconst Command = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\",\n className\n )}\n {...props}\n />\n));\nCommand.displayName = \"Command\";\n\nconst CommandInput = React.forwardRef<\n HTMLInputElement,\n React.InputHTMLAttributes<HTMLInputElement>\n>(({ className, ...props }, ref) => (\n <input\n ref={ref}\n className={cn(\n \"flex h-11 w-full rounded-md border border-input bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50 px-3\",\n className\n )}\n {...props}\n />\n));\nCommandInput.displayName = \"CommandInput\";\n\nconst CommandList = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\n {...props}\n />\n));\nCommandList.displayName = \"CommandList\";\n\nconst CommandEmpty = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>((props, ref) => (\n <div\n ref={ref}\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n));\nCommandEmpty.displayName = \"CommandEmpty\";\n\nconst CommandGroup = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\",\n className\n )}\n {...props}\n />\n));\nCommandGroup.displayName = \"CommandGroup\";\n\nconst CommandItem = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & {\n onSelect?: (value: string) => void;\n value?: string;\n }\n>(({ className, onSelect, value, ...props }, ref) => {\n const handleClick = () => {\n if (onSelect && value) {\n onSelect(value);\n }\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"relative flex cursor-pointer select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none hover:bg-accent hover:text-accent-foreground aria-selected:bg-accent aria-selected:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n onClick={handleClick}\n {...props}\n />\n );\n});\nCommandItem.displayName = \"CommandItem\";\n\nexport {\n Command,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n};\n\n","// Popover component for hazo_ui library\n// Based on shadcn/ui popover component\nimport * as React from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport { cn } from \"../../lib/utils\";\n\nconst Popover = PopoverPrimitive.Root;\nconst PopoverTrigger = PopoverPrimitive.Trigger;\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverTrigger, PopoverContent };\n\n","// Input component for hazo_ui library\n// Based on shadcn/ui input component\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface InputProps\n extends React.InputHTMLAttributes<HTMLInputElement> {}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n \"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n ref={ref}\n {...props}\n />\n );\n }\n);\nInput.displayName = \"Input\";\n\nexport { Input };\n\n","// Select component for hazo_ui library\n// Based on shadcn/ui select component\nimport * as React from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nconst Select = SelectPrimitive.Root;\nconst SelectGroup = SelectPrimitive.Group;\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"h-4 w-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronUp className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollUpButton>\n));\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronDown className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollDownButton>\n));\nSelectScrollDownButton.displayName =\n SelectPrimitive.ScrollDownButton.displayName;\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n \"relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n));\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"py-1.5 pl-8 pr-2 text-sm font-semibold\", className)}\n {...props}\n />\n));\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n};\n\n","// Tooltip component for hazo_ui library\n// Based on shadcn/ui tooltip component\nimport * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport { cn } from \"../../lib/utils\";\n\nconst TooltipProvider = TooltipPrimitive.Provider;\nconst Tooltip = TooltipPrimitive.Root;\nconst TooltipTrigger = TooltipPrimitive.Trigger;\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n));\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n\n","// Calendar component for hazo_ui library\n// Based on shadcn/ui calendar component\nimport * as React from \"react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { DayPicker } from \"react-day-picker\";\nimport { cn } from \"../../lib/utils\";\n\nexport type CalendarProps = React.ComponentProps<typeof DayPicker>;\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n ...props\n}: CalendarProps) {\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\"p-3\", className)}\n classNames={{\n months: \"flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0\",\n month: \"space-y-4\",\n caption: \"flex justify-center pt-1 relative items-center\",\n caption_label: \"text-sm font-medium\",\n nav: \"space-x-1 flex items-center\",\n nav_button: cn(\n \"h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100\"\n ),\n nav_button_previous: \"absolute left-1\",\n nav_button_next: \"absolute right-1\",\n table: \"w-full border-collapse space-y-1\",\n head_row: \"flex\",\n head_cell:\n \"text-muted-foreground rounded-md w-9 font-normal text-[0.8rem]\",\n row: \"flex w-full mt-2\",\n cell: \"h-9 w-9 text-center text-sm p-0 relative [&:has([aria-selected].day-range-end)]:rounded-r-md [&:has([aria-selected].day-outside)]:bg-accent/50 [&:has([aria-selected])]:bg-accent first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md focus-within:relative focus-within:z-20\",\n day: cn(\n \"h-9 w-9 p-0 font-normal aria-selected:opacity-100\"\n ),\n day_range_end: \"day-range-end\",\n day_selected:\n \"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground\",\n day_today: \"bg-accent text-accent-foreground\",\n day_outside:\n \"day-outside text-muted-foreground opacity-50 aria-selected:bg-accent/50 aria-selected:text-muted-foreground aria-selected:opacity-30\",\n day_disabled: \"text-muted-foreground opacity-50\",\n day_range_middle:\n \"aria-selected:bg-accent aria-selected:text-accent-foreground\",\n day_hidden: \"invisible\",\n ...classNames,\n }}\n components={{\n IconLeft: () => <ChevronLeft className=\"h-4 w-4\" />,\n IconRight: () => <ChevronRight className=\"h-4 w-4\" />,\n }}\n {...props}\n />\n );\n}\nCalendar.displayName = \"Calendar\";\n\nexport { Calendar };\n\n","\"use client\";\n\n/**\n * Hazo UI Multi Filter Dialog Component\n * \n * Reusable component for multi-field filtering with different input types.\n * Allows users to select multiple fields for filtering with appropriate input controls.\n */\n\nimport { useState, useEffect } from 'react';\nimport { Button } from \"../ui/button\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"../ui/dialog\";\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"../ui/command\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../ui/popover\";\nimport { Input } from \"../ui/input\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../ui/select\";\nimport { Tooltip, TooltipContent, TooltipTrigger, TooltipProvider } from \"../ui/tooltip\";\nimport { Calendar as CalendarComponent } from \"../ui/calendar\";\nimport { Filter, Trash2, Plus, Check as CheckIcon, ChevronsUpDown, Calendar as CalendarIcon, X } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport { format } from \"date-fns\";\n\nexport interface FilterField {\n value: string;\n label: string;\n type: 'text' | 'number' | 'combobox' | 'boolean' | 'date';\n textConfig?: {\n minLength?: number;\n maxLength?: number;\n };\n numberConfig?: {\n min?: number;\n max?: number;\n allowDecimal?: boolean;\n decimalLength?: number;\n };\n comboboxOptions?: Array<{ label: string; value: string }>;\n booleanLabels?: {\n trueLabel?: string;\n falseLabel?: string;\n };\n}\n\nexport interface FilterConfig {\n field: string;\n operator?: string; // For number fields: equals, not_equals, greater_than, less_than, greater_equal, less_equal\n value: any;\n}\n\ninterface HazoUiMultiFilterDialogProps {\n availableFields: FilterField[];\n onFilterChange: (filterConfig: FilterConfig[]) => void;\n initialFilters?: FilterConfig[];\n title?: string;\n description?: string;\n}\n\ninterface FilterFieldItemProps {\n filterConfig: FilterConfig;\n fieldConfig: FilterField;\n onValueChange: (value: any) => void;\n onOperatorChange?: (operator: string) => void;\n onDelete: () => void;\n}\n\nfunction FilterFieldItem({\n filterConfig,\n fieldConfig,\n onValueChange,\n onOperatorChange,\n onDelete,\n}: FilterFieldItemProps) {\n const [isCalendarOpen, setIsCalendarOpen] = useState(false);\n\n const renderInput = () => {\n switch (fieldConfig.type) {\n case 'text':\n return (\n <Input\n type=\"text\"\n value={filterConfig.value || ''}\n onChange={(e) => {\n const value = e.target.value;\n if (fieldConfig.textConfig?.maxLength && value.length > fieldConfig.textConfig.maxLength) {\n return;\n }\n onValueChange(value);\n }}\n placeholder=\"Enter text...\"\n minLength={fieldConfig.textConfig?.minLength}\n maxLength={fieldConfig.textConfig?.maxLength}\n className=\"cls_filter_text_input w-full min-w-0\"\n />\n );\n\n case 'number':\n const numberOperators = [\n { value: 'equals', label: 'Equals' },\n { value: 'not_equals', label: 'Not Equals' },\n { value: 'greater_than', label: 'Greater Than' },\n { value: 'less_than', label: 'Less Than' },\n { value: 'greater_equal', label: 'Greater or Equal' },\n { value: 'less_equal', label: 'Less or Equal' },\n ];\n\n return (\n <div className=\"cls_number_filter_container flex flex-col sm:flex-row items-stretch sm:items-center gap-2 w-full\">\n <Select\n value={filterConfig.operator || 'equals'}\n onValueChange={(value) => onOperatorChange?.(value)}\n >\n <SelectTrigger className=\"cls_operator_select w-full sm:w-[140px] shrink-0\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {numberOperators.map((op) => (\n <SelectItem key={op.value} value={op.value}>\n {op.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <Input\n type=\"number\"\n value={filterConfig.value !== undefined && filterConfig.value !== null ? filterConfig.value : ''}\n onChange={(e) => {\n const value = e.target.value;\n if (value === '') {\n onValueChange('');\n return;\n }\n let numValue = fieldConfig.numberConfig?.allowDecimal\n ? parseFloat(value)\n : parseInt(value, 10);\n \n if (isNaN(numValue)) {\n return;\n }\n\n // Apply decimal length restriction\n if (fieldConfig.numberConfig?.allowDecimal && fieldConfig.numberConfig?.decimalLength) {\n const decimalPlaces = value.split('.')[1]?.length || 0;\n if (decimalPlaces > fieldConfig.numberConfig.decimalLength) {\n return;\n }\n }\n\n // Apply min/max restrictions\n if (fieldConfig.numberConfig?.min !== undefined && numValue < fieldConfig.numberConfig.min) {\n numValue = fieldConfig.numberConfig.min;\n }\n if (fieldConfig.numberConfig?.max !== undefined && numValue > fieldConfig.numberConfig.max) {\n numValue = fieldConfig.numberConfig.max;\n }\n\n onValueChange(numValue);\n }}\n placeholder=\"Enter number...\"\n min={fieldConfig.numberConfig?.min}\n max={fieldConfig.numberConfig?.max}\n step={fieldConfig.numberConfig?.allowDecimal ? 0.01 : 1}\n className=\"cls_filter_number_input flex-1 min-w-0\"\n />\n </div>\n );\n\n case 'combobox':\n return (\n <Select\n value={filterConfig.value || ''}\n onValueChange={(value) => onValueChange(value)}\n >\n <SelectTrigger className=\"cls_filter_combobox_select w-full min-w-0\">\n <SelectValue placeholder=\"Select option...\" />\n </SelectTrigger>\n <SelectContent>\n {fieldConfig.comboboxOptions?.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n\n case 'boolean':\n const trueLabel = fieldConfig.booleanLabels?.trueLabel || 'On';\n const falseLabel = fieldConfig.booleanLabels?.falseLabel || 'Off';\n \n return (\n <Select\n value={filterConfig.value !== undefined && filterConfig.value !== null ? String(filterConfig.value) : ''}\n onValueChange={(value) => onValueChange(value === 'true')}\n >\n <SelectTrigger className=\"cls_filter_boolean_select w-full min-w-0\">\n <SelectValue placeholder=\"Select...\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"true\">{trueLabel}</SelectItem>\n <SelectItem value=\"false\">{falseLabel}</SelectItem>\n </SelectContent>\n </Select>\n );\n\n case 'date':\n const dateOperators = [\n { value: 'equals', label: 'Equals' },\n { value: 'not_equals', label: 'Not Equals' },\n { value: 'greater_than', label: 'Greater Than' },\n { value: 'less_than', label: 'Less Than' },\n { value: 'greater_equal', label: 'Greater or Equal' },\n { value: 'less_equal', label: 'Less or Equal' },\n ];\n\n const selectedDate = filterConfig.value \n ? (typeof filterConfig.value === 'string' ? new Date(filterConfig.value) : filterConfig.value)\n : undefined;\n\n return (\n <div className=\"cls_date_filter_container flex flex-col sm:flex-row items-stretch sm:items-center gap-2 w-full\">\n <Select\n value={filterConfig.operator || 'equals'}\n onValueChange={(value) => onOperatorChange?.(value)}\n >\n <SelectTrigger className=\"cls_operator_select w-full sm:w-[140px] shrink-0\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {dateOperators.map((op) => (\n <SelectItem key={op.value} value={op.value}>\n {op.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <Popover open={isCalendarOpen} onOpenChange={setIsCalendarOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n className={cn(\n \"cls_date_picker_trigger w-full justify-start text-left font-normal min-w-0\",\n !selectedDate && \"text-muted-foreground\"\n )}\n >\n <CalendarIcon className=\"cls_calendar_icon mr-2 h-4 w-4 shrink-0\" />\n <span className=\"cls_date_text truncate\">\n {selectedDate ? (\n format(selectedDate, \"MMM d, yyyy\")\n ) : (\n \"Pick a date\"\n )}\n </span>\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"cls_calendar_popover w-auto p-0\" align=\"start\">\n <CalendarComponent\n mode=\"single\"\n selected={selectedDate}\n onSelect={(date) => {\n onValueChange(date);\n setIsCalendarOpen(false);\n }}\n initialFocus\n />\n </PopoverContent>\n </Popover>\n </div>\n );\n\n default:\n return null;\n }\n };\n\n return (\n <div className=\"cls_filter_field_item flex flex-col sm:flex-row items-start sm:items-center gap-3 p-3 border rounded-md bg-card\">\n <span className=\"cls_field_label text-sm font-medium min-w-[120px] sm:min-w-[100px] truncate\">{fieldConfig.label}</span>\n <div className=\"cls_field_input_container flex-1 min-w-0 w-full sm:w-auto\">\n {renderInput()}\n </div>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={onDelete}\n className=\"cls_delete_btn h-8 w-8 p-0 text-destructive hover:text-destructive shrink-0\"\n aria-label={`Remove ${fieldConfig.label} filter`}\n >\n <Trash2 className=\"cls_delete_icon h-4 w-4\" />\n </Button>\n </div>\n );\n}\n\nexport function HazoUiMultiFilterDialog({\n availableFields,\n onFilterChange,\n initialFilters = [],\n title = \"Filter\",\n description = \"Add multiple fields to filter by. Select a field and set its filter value.\",\n}: HazoUiMultiFilterDialogProps) {\n const [isOpen, setIsOpen] = useState(false);\n const [filterFields, setFilterFields] = useState<FilterConfig[]>(initialFilters);\n const [isComboboxOpen, setIsComboboxOpen] = useState(false);\n\n // Sync local state with initialFilters when dialog opens\n useEffect(() => {\n if (isOpen) {\n setFilterFields(initialFilters);\n }\n }, [isOpen, initialFilters]);\n\n const handleAddField = (fieldValue: string) => {\n // Check if field is already added\n if (filterFields.some(ff => ff.field === fieldValue)) {\n return;\n }\n\n const fieldConfig = availableFields.find(af => af.value === fieldValue);\n if (!fieldConfig) {\n return;\n }\n\n let defaultValue: any = '';\n if (fieldConfig.type === 'boolean') {\n defaultValue = false;\n } else if (fieldConfig.type === 'number') {\n defaultValue = fieldConfig.numberConfig?.min || 0;\n } else if (fieldConfig.type === 'date') {\n defaultValue = new Date(); // Default to today\n }\n\n const newFilter: FilterConfig = {\n field: fieldValue,\n operator: (fieldConfig.type === 'number' || fieldConfig.type === 'date') ? 'equals' : undefined,\n value: defaultValue,\n };\n setFilterFields([...filterFields, newFilter]);\n setIsComboboxOpen(false);\n };\n\n const handleDeleteField = (fieldValue: string) => {\n setFilterFields(filterFields.filter(ff => ff.field !== fieldValue));\n };\n\n const handleValueChange = (fieldValue: string, value: any) => {\n setFilterFields(\n filterFields.map(ff =>\n ff.field === fieldValue ? { ...ff, value } : ff\n )\n );\n };\n\n const handleOperatorChange = (fieldValue: string, operator: string) => {\n setFilterFields(\n filterFields.map(ff =>\n ff.field === fieldValue ? { ...ff, operator } : ff\n )\n );\n };\n\n const handleApply = () => {\n // Call onFilterChange with the current filter configuration\n onFilterChange([...filterFields]);\n setIsOpen(false);\n };\n\n const handleCancel = () => {\n setFilterFields(initialFilters);\n setIsOpen(false);\n };\n\n const handleClearAll = () => {\n setFilterFields([]);\n };\n\n // Get available fields that haven't been added yet\n const availableFieldsToAdd = availableFields.filter(\n af => !filterFields.some(ff => ff.field === af.value)\n );\n\n // Get field config helper\n const getFieldConfig = (fieldValue: string): FilterField | undefined => {\n return availableFields.find(af => af.value === fieldValue);\n };\n\n // Check if there are active filters\n const hasActiveFilters = initialFilters.length > 0;\n\n // Format tooltip content showing active filters\n const tooltipContent = hasActiveFilters ? (\n <div className=\"cls_filter_tooltip_content space-y-1\">\n <div className=\"cls_tooltip_title text-xs font-semibold mb-1\">Active Filters:</div>\n {initialFilters.map((filterConfig) => {\n const fieldConfig = getFieldConfig(filterConfig.field);\n if (!fieldConfig) return null;\n \n let displayValue = String(filterConfig.value);\n if (fieldConfig.type === 'boolean') {\n displayValue = filterConfig.value\n ? (fieldConfig.booleanLabels?.trueLabel || 'On')\n : (fieldConfig.booleanLabels?.falseLabel || 'Off');\n } else if (fieldConfig.type === 'combobox') {\n const option = fieldConfig.comboboxOptions?.find(opt => opt.value === filterConfig.value);\n displayValue = option?.label || displayValue;\n } else if (fieldConfig.type === 'date') {\n const dateValue = filterConfig.value instanceof Date \n ? filterConfig.value \n : new Date(filterConfig.value);\n if (!isNaN(dateValue.getTime())) {\n displayValue = format(dateValue, \"MMM d, yyyy\");\n }\n }\n \n const operatorLabel = filterConfig.operator\n ? filterConfig.operator.replace('_', ' ').replace(/\\b\\w/g, l => l.toUpperCase()) + ' '\n : '';\n \n return (\n <div key={filterConfig.field} className=\"cls_tooltip_item text-xs\">\n {fieldConfig.label}: {operatorLabel}{displayValue}\n </div>\n );\n })}\n </div>\n ) : (\n <div className=\"cls_filter_tooltip_content text-xs\">No active filters</div>\n );\n\n return (\n <Dialog open={isOpen} onOpenChange={setIsOpen}>\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <DialogTrigger asChild>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"cls_filter_button\"\n aria-label=\"Open filter dialog\"\n >\n <Filter\n className={cn(\n \"cls_filter_icon h-4 w-4 mr-2\",\n hasActiveFilters && \"text-blue-600\"\n )}\n />\n Filter\n </Button>\n </DialogTrigger>\n </TooltipTrigger>\n <TooltipContent>\n {tooltipContent}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n <DialogContent className=\"cls_filter_dialog_content max-w-lg w-full max-h-[90vh] overflow-y-auto\">\n <DialogHeader>\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>\n {description}\n </DialogDescription>\n </DialogHeader>\n <div className=\"cls_filter_dialog_body space-y-4 py-4\">\n {/* Add Field Combobox */}\n <div className=\"cls_add_field_section\">\n <Popover open={isComboboxOpen} onOpenChange={setIsComboboxOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={isComboboxOpen}\n className=\"cls_add_field_combobox w-full justify-between\"\n >\n <div className=\"cls_combobox_content flex items-center\">\n <Plus className=\"cls_plus_icon h-4 w-4 mr-2\" />\n <span>Add field</span>\n </div>\n <ChevronsUpDown className=\"cls_chevron_icon ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"cls_combobox_popover w-full p-0\">\n <Command>\n <CommandInput placeholder=\"Search fields...\" className=\"cls_command_input\" />\n <CommandList>\n {availableFieldsToAdd.length === 0 ? (\n <CommandEmpty>No fields found.</CommandEmpty>\n ) : (\n <CommandGroup>\n {availableFieldsToAdd.map((field) => (\n <CommandItem\n key={field.value}\n value={field.label}\n onSelect={() => handleAddField(field.value)}\n className=\"cls_command_item\"\n >\n <CheckIcon\n className={cn(\n \"cls_check_icon mr-2 h-4 w-4\",\n false ? \"opacity-100\" : \"opacity-0\"\n )}\n />\n {field.label}\n </CommandItem>\n ))}\n </CommandGroup>\n )}\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n </div>\n\n {/* Filter Fields List */}\n {filterFields.length > 0 ? (\n <div className=\"cls_filter_fields_list space-y-2\">\n {filterFields.map((filterConfig) => {\n const fieldConfig = getFieldConfig(filterConfig.field);\n if (!fieldConfig) return null;\n\n return (\n <FilterFieldItem\n key={filterConfig.field}\n filterConfig={filterConfig}\n fieldConfig={fieldConfig}\n onValueChange={(value) => handleValueChange(filterConfig.field, value)}\n onOperatorChange={(operator) => handleOperatorChange(filterConfig.field, operator)}\n onDelete={() => handleDeleteField(filterConfig.field)}\n />\n );\n })}\n </div>\n ) : (\n <div className=\"cls_empty_filter_fields text-center py-8 text-sm text-muted-foreground\">\n No filter fields added. Click \"Add field\" to add filtering criteria.\n </div>\n )}\n </div>\n <DialogFooter>\n {filterFields.length > 0 && (\n <Button\n variant=\"outline\"\n onClick={handleClearAll}\n className=\"cls_clear_all_btn\"\n >\n <X className=\"cls_clear_all_icon h-4 w-4 mr-2\" />\n Clear All\n </Button>\n )}\n <Button\n onClick={handleApply}\n className=\"cls_apply_btn\"\n >\n Apply\n </Button>\n <Button\n variant=\"outline\"\n onClick={handleCancel}\n className=\"cls_cancel_btn\"\n >\n Cancel\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n\n","// Switch component for hazo_ui library\n// Based on shadcn/ui switch component\nimport * as React from \"react\";\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\";\nimport { cn } from \"../../lib/utils\";\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\n>(({ className, ...props }, ref) => (\n <SwitchPrimitives.Root\n className={cn(\n \"peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input\",\n className\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n \"pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0\"\n )}\n />\n </SwitchPrimitives.Root>\n));\nSwitch.displayName = SwitchPrimitives.Root.displayName;\n\nexport { Switch };\n\n","// Label component for hazo_ui library\n// Based on shadcn/ui label component (placeholder - not used in HazoUiMultiFilterDialog but included for completeness)\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface LabelProps\n extends React.LabelHTMLAttributes<HTMLLabelElement> {}\n\nconst Label = React.forwardRef<HTMLLabelElement, LabelProps>(\n ({ className, ...props }, ref) => {\n return (\n <label\n ref={ref}\n className={cn(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n className\n )}\n {...props}\n />\n );\n }\n);\nLabel.displayName = \"Label\";\n\nexport { Label };\n\n","\"use client\";\n\n/**\n * Hazo UI Multi Sort Dialog Component\n * \n * Reusable component for multi-field sorting with drag-and-drop reordering.\n * Allows users to select multiple fields for sorting, reorder them, and set ascending/descending direction.\n */\n\nimport { useState, useEffect } from 'react';\nimport { Button } from \"../ui/button\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"../ui/dialog\";\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"../ui/command\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../ui/popover\";\nimport { Switch } from \"../ui/switch\";\nimport { Label } from \"../ui/label\";\nimport { Tooltip, TooltipContent, TooltipTrigger, TooltipProvider } from \"../ui/tooltip\";\nimport { ArrowUpDown, GripVertical, Trash2, Plus, Check as CheckIcon, ChevronsUpDown } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n DragEndEvent,\n} from '@dnd-kit/core';\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy,\n useSortable,\n} from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\n\nexport interface SortField {\n value: string;\n label: string;\n}\n\nexport interface SortConfig {\n field: string;\n direction: 'asc' | 'desc';\n}\n\ninterface HazoUiMultiSortDialogProps {\n availableFields: SortField[];\n onSortChange: (sortConfig: SortConfig[]) => void;\n initialSortFields?: SortConfig[];\n title?: string;\n description?: string;\n}\n\ninterface SortableSortFieldItemProps {\n sortConfig: SortConfig;\n fieldLabel: string;\n onDirectionChange: (direction: 'asc' | 'desc') => void;\n onDelete: () => void;\n}\n\nfunction SortableSortFieldItem({\n sortConfig,\n fieldLabel,\n onDirectionChange,\n onDelete,\n}: SortableSortFieldItemProps) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id: sortConfig.field });\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n opacity: isDragging ? 0.5 : 1,\n };\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n className=\"cls_sortable_sort_field_item flex items-center gap-3 p-3 border rounded-md bg-card\"\n >\n <div\n {...attributes}\n {...listeners}\n className=\"cls_drag_handle cursor-grab active:cursor-grabbing text-muted-foreground hover:text-foreground\"\n >\n <GripVertical className=\"cls_drag_icon h-4 w-4\" />\n </div>\n <span className=\"cls_field_label flex-1 text-sm font-medium\">{fieldLabel}</span>\n <div className=\"cls_direction_control flex items-center gap-2\">\n <Label htmlFor={`switch-${sortConfig.field}`} className=\"cls_direction_label text-xs text-muted-foreground\">\n {sortConfig.direction === 'asc' ? 'Ascending' : 'Descending'}\n </Label>\n <Switch\n id={`switch-${sortConfig.field}`}\n checked={sortConfig.direction === 'desc'}\n onCheckedChange={(checked) => onDirectionChange(checked ? 'desc' : 'asc')}\n aria-label={`Toggle sort direction for ${fieldLabel}`}\n />\n </div>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={onDelete}\n className=\"cls_delete_btn h-8 w-8 p-0 text-destructive hover:text-destructive\"\n aria-label={`Remove ${fieldLabel} from sort`}\n >\n <Trash2 className=\"cls_delete_icon h-4 w-4\" />\n </Button>\n </div>\n );\n}\n\nexport function HazoUiMultiSortDialog({\n availableFields,\n onSortChange,\n initialSortFields = [],\n title = \"Sort\",\n description = \"Add multiple fields to sort by and reorder them. Use the switch to toggle between ascending and descending.\",\n}: HazoUiMultiSortDialogProps) {\n const [isOpen, setIsOpen] = useState(false);\n const [sortFields, setSortFields] = useState<SortConfig[]>(initialSortFields);\n const [isComboboxOpen, setIsComboboxOpen] = useState(false);\n \n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n );\n\n // Sync local state with initialSortFields when dialog opens\n useEffect(() => {\n if (isOpen) {\n setSortFields(initialSortFields);\n }\n }, [isOpen, initialSortFields]);\n\n const handleAddField = (fieldValue: string) => {\n // Check if field is already added\n if (sortFields.some(sf => sf.field === fieldValue)) {\n return;\n }\n\n const newField: SortConfig = {\n field: fieldValue,\n direction: 'asc',\n };\n setSortFields([...sortFields, newField]);\n setIsComboboxOpen(false);\n };\n\n const handleDeleteField = (fieldValue: string) => {\n setSortFields(sortFields.filter(sf => sf.field !== fieldValue));\n };\n\n const handleDirectionChange = (fieldValue: string, direction: 'asc' | 'desc') => {\n setSortFields(\n sortFields.map(sf =>\n sf.field === fieldValue ? { ...sf, direction } : sf\n )\n );\n };\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event;\n\n if (!over || active.id === over.id) {\n return;\n }\n\n const oldIndex = sortFields.findIndex(sf => sf.field === active.id);\n const newIndex = sortFields.findIndex(sf => sf.field === over.id);\n\n if (oldIndex !== -1 && newIndex !== -1) {\n setSortFields(arrayMove(sortFields, oldIndex, newIndex));\n }\n };\n\n const handleApply = () => {\n // Call onSortChange with the current sort configuration\n onSortChange([...sortFields]);\n setIsOpen(false);\n };\n\n const handleCancel = () => {\n setSortFields(initialSortFields);\n setIsOpen(false);\n };\n\n const handleClearAll = () => {\n setSortFields([]);\n };\n\n // Get available fields that haven't been added yet\n const availableFieldsToAdd = availableFields.filter(\n af => !sortFields.some(sf => sf.field === af.value)\n );\n\n // Get field label helper\n const getFieldLabel = (fieldValue: string): string => {\n return availableFields.find(af => af.value === fieldValue)?.label || fieldValue;\n };\n\n // Check if there are active sort fields\n const hasActiveSorts = initialSortFields.length > 0;\n\n // Format tooltip content showing active sort fields\n const tooltipContent = hasActiveSorts ? (\n <div className=\"cls_sort_tooltip_content space-y-1\">\n <div className=\"cls_tooltip_title text-xs font-semibold mb-1\">Active Sorts:</div>\n {initialSortFields.map((sortConfig, index) => (\n <div key={sortConfig.field} className=\"cls_tooltip_item text-xs\">\n {index + 1}. {getFieldLabel(sortConfig.field)} ({sortConfig.direction === 'asc' ? 'Asc' : 'Desc'})\n </div>\n ))}\n </div>\n ) : (\n <div className=\"cls_sort_tooltip_content text-xs\">No active sorts</div>\n );\n\n return (\n <Dialog open={isOpen} onOpenChange={setIsOpen}>\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <DialogTrigger asChild>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"cls_sort_button\"\n aria-label=\"Open sort dialog\"\n >\n <ArrowUpDown \n className={cn(\n \"cls_sort_icon h-4 w-4 mr-2\",\n hasActiveSorts && \"text-blue-600\"\n )} \n />\n Sort\n </Button>\n </DialogTrigger>\n </TooltipTrigger>\n <TooltipContent>\n {tooltipContent}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n <DialogContent className=\"cls_sort_dialog_content max-w-lg\">\n <DialogHeader>\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>\n {description}\n </DialogDescription>\n </DialogHeader>\n <div className=\"cls_sort_dialog_body space-y-4 py-4\">\n {/* Add Field Combobox */}\n <div className=\"cls_add_field_section\">\n <Popover open={isComboboxOpen} onOpenChange={setIsComboboxOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={isComboboxOpen}\n className=\"cls_add_field_combobox w-full justify-between\"\n >\n <div className=\"cls_combobox_content flex items-center\">\n <Plus className=\"cls_plus_icon h-4 w-4 mr-2\" />\n <span>Add field</span>\n </div>\n <ChevronsUpDown className=\"cls_chevron_icon ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"cls_combobox_popover w-full p-0\">\n <Command>\n <CommandInput placeholder=\"Search fields...\" className=\"cls_command_input\" />\n <CommandList>\n {availableFieldsToAdd.length === 0 ? (\n <CommandEmpty>No fields found.</CommandEmpty>\n ) : (\n <CommandGroup>\n {availableFieldsToAdd.map((field) => (\n <CommandItem\n key={field.value}\n value={field.label}\n onSelect={() => handleAddField(field.value)}\n className=\"cls_command_item\"\n >\n <CheckIcon\n className={cn(\n \"cls_check_icon mr-2 h-4 w-4\",\n false ? \"opacity-100\" : \"opacity-0\"\n )}\n />\n {field.label}\n </CommandItem>\n ))}\n </CommandGroup>\n )}\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n </div>\n\n {/* Sort Fields List */}\n {sortFields.length > 0 ? (\n <div className=\"cls_sort_fields_list space-y-2\">\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n >\n <SortableContext\n items={sortFields.map(sf => sf.field)}\n strategy={verticalListSortingStrategy}\n >\n {sortFields.map((sortConfig) => (\n <SortableSortFieldItem\n key={sortConfig.field}\n sortConfig={sortConfig}\n fieldLabel={getFieldLabel(sortConfig.field)}\n onDirectionChange={(direction) =>\n handleDirectionChange(sortConfig.field, direction)\n }\n onDelete={() => handleDeleteField(sortConfig.field)}\n />\n ))}\n </SortableContext>\n </DndContext>\n </div>\n ) : (\n <div className=\"cls_empty_sort_fields text-center py-8 text-sm text-muted-foreground\">\n No sort fields added. Click \"Add field\" to add sorting criteria.\n </div>\n )}\n </div>\n <DialogFooter>\n {sortFields.length > 0 && (\n <Button\n variant=\"outline\"\n onClick={handleClearAll}\n className=\"cls_clear_all_btn\"\n >\n <Trash2 className=\"cls_clear_all_icon h-4 w-4 mr-2\" />\n Clear All\n </Button>\n )}\n <Button\n onClick={handleApply}\n className=\"cls_apply_btn\"\n >\n Apply\n </Button>\n <Button\n variant=\"outline\"\n onClick={handleCancel}\n className=\"cls_cancel_btn\"\n >\n Cancel\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n\n","// Radio group component for hazo_ui library\n// Based on shadcn/ui radio group component\nimport * as React from \"react\";\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\nimport { Circle } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nconst RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Root\n className={cn(\"grid gap-2\", className)}\n {...props}\n ref={ref}\n />\n );\n});\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName;\n\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n \"aspect-square h-4 w-4 rounded-full border border-primary text-primary ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <Circle className=\"h-2.5 w-2.5 fill-current text-current\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n});\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;\n\nexport { RadioGroup, RadioGroupItem };\n\n\n","\"use client\";\n\n/**\n * Hazo UI Flex Radio Component\n * \n * Flexible radio button/icon selection component with support for single and multi-selection modes,\n * customizable layouts, and react-icons integration.\n */\n\nimport { RadioGroup, RadioGroupItem } from \"../ui/radio-group\";\nimport { Button } from \"../ui/button\";\nimport { Tooltip, TooltipContent, TooltipTrigger, TooltipProvider } from \"../ui/tooltip\";\nimport { cn } from \"../../lib/utils\";\n// Import icon sets - tree-shaking will remove unused ones\nimport * as FaIcons from \"react-icons/fa\";\nimport * as MdIcons from \"react-icons/md\";\nimport * as HiIcons from \"react-icons/hi\";\nimport * as BiIcons from \"react-icons/bi\";\nimport * as AiIcons from \"react-icons/ai\";\nimport * as BsIcons from \"react-icons/bs\";\nimport * as FiIcons from \"react-icons/fi\";\nimport * as IoIcons from \"react-icons/io5\";\nimport * as RiIcons from \"react-icons/ri\";\nimport * as TbIcons from \"react-icons/tb\";\nimport * as CiIcons from \"react-icons/ci\";\n\n// Icon set mapping\nconst iconSetMap: Record<string, any> = {\n fa: FaIcons,\n md: MdIcons,\n hi: HiIcons,\n bi: BiIcons,\n ai: AiIcons,\n bs: BsIcons,\n fi: FiIcons,\n io: IoIcons,\n io5: IoIcons,\n ri: RiIcons,\n tb: TbIcons,\n ci: CiIcons,\n};\n\n/**\n * Get icon library for a given icon set\n */\nfunction getIconLibrary(iconSet: string): any {\n if (!iconSet) return null;\n const normalizedSet = iconSet.toLowerCase();\n return iconSetMap[normalizedSet] || null;\n}\n\nexport interface HazoUiFlexRadioItem {\n label: string;\n value: string;\n icon_selected?: string;\n icon_unselected?: string;\n fgcolor?: string; // Foreground color for the icon (text/icon color)\n bgcolor?: string; // Background color for the icon button\n}\n\nexport interface HazoUiFlexRadioProps {\n layout?: \"horizontal\" | \"vertical\";\n style?: \"radio\" | \"icons\";\n display_label?: boolean;\n icon_set?: string; // Package name like 'fa', 'md', etc.\n data: HazoUiFlexRadioItem[];\n selection: \"single\" | \"multi\";\n value: string | string[];\n onChange: (value: string | string[]) => void;\n className?: string;\n compressed?: boolean; // When true, removes padding and spacing between elements\n}\n\n/**\n * Get icon component from react-icons based on icon set and icon name\n */\nfunction getIconComponent(iconSet: string | undefined, iconName: string | undefined): React.ComponentType<any> | null {\n if (!iconSet || !iconName) return null;\n \n const iconLibrary = getIconLibrary(iconSet);\n if (!iconLibrary) return null;\n \n const IconComponent = iconLibrary[iconName];\n return IconComponent || null;\n}\n\n/**\n * Hazo UI Flex Radio Component\n * Supports single and multi-selection with radio buttons or icons\n */\nexport function HazoUiFlexRadio({\n layout = \"horizontal\",\n style = \"radio\",\n display_label = true,\n icon_set,\n data,\n selection = \"single\",\n value,\n onChange,\n className,\n compressed = false,\n}: HazoUiFlexRadioProps) {\n // Icon library is loaded lazily when needed\n\n /**\n * Handle single selection change\n */\n const handleSingleSelection = (selectedValue: string) => {\n onChange(selectedValue);\n };\n\n /**\n * Handle multi selection change\n */\n const handleMultiSelection = (selectedValue: string) => {\n const currentValues = Array.isArray(value) ? value : [];\n const isSelected = currentValues.includes(selectedValue);\n \n if (isSelected) {\n // Remove from selection\n onChange(currentValues.filter((v) => v !== selectedValue));\n } else {\n // Add to selection\n onChange([...currentValues, selectedValue]);\n }\n };\n\n /**\n * Check if an item is selected\n */\n const isSelected = (itemValue: string): boolean => {\n if (selection === \"single\") {\n return value === itemValue;\n } else {\n const currentValues = Array.isArray(value) ? value : [];\n return currentValues.includes(itemValue);\n }\n };\n\n /**\n * Render radio style option\n */\n const renderRadioOption = (item: HazoUiFlexRadioItem) => {\n const selected = isSelected(item.value);\n \n if (selection === \"single\") {\n const optionContent = (\n <div\n className={cn(\n \"cls_radio_option flex items-center gap-2\",\n layout === \"horizontal\" ? \"flex-row\" : \"flex-col\",\n compressed ? \"\" : \"p-2 rounded-md\",\n \"hover:bg-accent transition-colors\",\n selected && \"bg-accent\"\n )}\n >\n <RadioGroupItem\n value={item.value}\n id={`radio-${item.value}`}\n className=\"cls_radio_item shrink-0\"\n />\n {display_label && (\n <label\n htmlFor={`radio-${item.value}`}\n className=\"cls_radio_label text-sm font-medium cursor-pointer flex-1\"\n >\n {item.label}\n </label>\n )}\n </div>\n );\n \n return (\n <Tooltip key={item.value} delayDuration={1000}>\n <TooltipTrigger asChild>\n {optionContent}\n </TooltipTrigger>\n <TooltipContent>\n <p className=\"cls_tooltip_text\">{item.label}</p>\n </TooltipContent>\n </Tooltip>\n );\n } else {\n // Multi-selection with checkbox-like behavior\n const optionContent = (\n <div\n className={cn(\n \"cls_radio_option flex items-center gap-2 cursor-pointer\",\n layout === \"horizontal\" ? \"flex-row\" : \"flex-col\",\n compressed ? \"\" : \"p-2 rounded-md\",\n \"hover:bg-accent transition-colors\",\n selected && \"bg-accent\"\n )}\n onClick={() => handleMultiSelection(item.value)}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleMultiSelection(item.value);\n }\n }}\n >\n <div\n className={cn(\n \"cls_checkbox_indicator h-4 w-4 rounded-sm border-2 border-primary flex items-center justify-center transition-colors shrink-0\",\n selected ? \"bg-primary\" : \"bg-background\"\n )}\n >\n {selected && (\n <svg\n className=\"cls_checkmark h-3 w-3 text-primary-foreground\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={3}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M5 13l4 4L19 7\"\n />\n </svg>\n )}\n </div>\n {display_label && (\n <span className=\"cls_checkbox_label text-sm font-medium flex-1\">\n {item.label}\n </span>\n )}\n </div>\n );\n \n return (\n <Tooltip key={item.value} delayDuration={1000}>\n <TooltipTrigger asChild>\n {optionContent}\n </TooltipTrigger>\n <TooltipContent>\n <p className=\"cls_tooltip_text\">{item.label}</p>\n </TooltipContent>\n </Tooltip>\n );\n }\n };\n\n /**\n * Render icon style option\n */\n const renderIconOption = (item: HazoUiFlexRadioItem) => {\n const selected = isSelected(item.value);\n \n // Get icon components\n const SelectedIcon = icon_set && item.icon_selected\n ? getIconComponent(icon_set, item.icon_selected)\n : null;\n const UnselectedIcon = icon_set && item.icon_unselected\n ? getIconComponent(icon_set, item.icon_unselected)\n : null;\n \n const IconComponent = selected && SelectedIcon ? SelectedIcon : (UnselectedIcon || SelectedIcon);\n \n // Apply custom colors if provided\n const buttonStyles: React.CSSProperties = {};\n if (item.bgcolor) {\n buttonStyles.backgroundColor = item.bgcolor;\n }\n \n const buttonContent = (\n <Button\n variant={selected ? \"default\" : \"ghost\"}\n size=\"default\"\n className={cn(\n \"cls_icon_option border-0\",\n layout === \"horizontal\" ? \"flex-row\" : \"flex-col\",\n \"gap-2 h-auto\",\n compressed ? \"py-0 px-0\" : \"py-2 px-3 sm:py-3 sm:px-4\",\n // Only apply default colors if custom colors are not provided\n !item.bgcolor && selected && \"bg-primary text-primary-foreground\",\n !item.bgcolor && !selected && \"hover:bg-accent\"\n )}\n style={Object.keys(buttonStyles).length > 0 ? buttonStyles : undefined}\n onClick={() => {\n if (selection === \"single\") {\n handleSingleSelection(item.value);\n } else {\n handleMultiSelection(item.value);\n }\n }}\n aria-label={item.label}\n aria-pressed={selected}\n >\n {IconComponent && (\n <IconComponent \n className=\"cls_icon h-4 w-4 sm:h-5 sm:w-5\" \n style={item.fgcolor ? { color: item.fgcolor } : undefined}\n />\n )}\n {display_label && (\n <span \n className=\"cls_icon_label text-sm font-medium\"\n style={item.fgcolor ? { color: item.fgcolor } : undefined}\n >\n {item.label}\n </span>\n )}\n </Button>\n );\n \n return (\n <Tooltip key={item.value} delayDuration={1000}>\n <TooltipTrigger asChild>\n {buttonContent}\n </TooltipTrigger>\n <TooltipContent>\n <p className=\"cls_tooltip_text\">{item.label}</p>\n </TooltipContent>\n </Tooltip>\n );\n };\n\n // Container classes with single outline\n const containerClasses = cn(\n \"cls_hazo_ui_flex_radio border border-input rounded-md\",\n compressed ? \"\" : \"p-2 sm:p-3\",\n layout === \"horizontal\"\n ? cn(\n \"flex flex-row flex-wrap\",\n compressed ? \"gap-0\" : \"gap-2 sm:gap-3\"\n )\n : cn(\n \"flex flex-col\",\n compressed ? \"gap-0\" : \"gap-2 sm:gap-3\"\n ),\n className\n );\n \n // RadioGroup needs grid override for flex layout\n const radioGroupClasses = cn(\n containerClasses,\n \"!flex !flex-row !flex-wrap\" // Override RadioGroup's default grid\n );\n\n if (style === \"icons\") {\n // Icon style - use buttons\n return (\n <TooltipProvider delayDuration={1000}>\n <div className={containerClasses} role={selection === \"single\" ? \"radiogroup\" : \"group\"}>\n {data.map((item) => renderIconOption(item))}\n </div>\n </TooltipProvider>\n );\n } else {\n // Radio style - use RadioGroup for single, custom for multi\n if (selection === \"single\") {\n return (\n <TooltipProvider delayDuration={1000}>\n <RadioGroup\n value={typeof value === \"string\" ? value : \"\"}\n onValueChange={handleSingleSelection}\n className={layout === \"horizontal\" \n ? cn(radioGroupClasses, \"!flex-row\")\n : cn(radioGroupClasses, \"!flex-col\")\n }\n >\n {data.map((item) => renderRadioOption(item))}\n </RadioGroup>\n </TooltipProvider>\n );\n } else {\n return (\n <TooltipProvider delayDuration={1000}>\n <div className={containerClasses} role=\"group\">\n {data.map((item) => renderRadioOption(item))}\n </div>\n </TooltipProvider>\n );\n }\n }\n}\n\n","\"use client\";\n\n/**\n * Hazo UI Flex Input Component\n * \n * Enhanced input component with type validation, character restrictions, and error messaging.\n * Extends shadcn Input component with additional validation props.\n */\n\nimport * as React from \"react\";\nimport { Input, type InputProps } from \"../ui/input\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface HazoUiFlexInputProps extends Omit<InputProps, \"type\"> {\n input_type?: \"mixed\" | \"numeric\" | \"email\" | \"alpha\";\n text_len_min?: number;\n text_len_max?: number;\n num_min?: number;\n num_max?: number;\n regex?: string | RegExp;\n num_decimals?: number;\n format_guide?: string;\n format_guide_info?: boolean;\n}\n\n/**\n * Validate input value based on input_type and constraints\n */\nfunction validateInput(\n value: string,\n input_type: \"mixed\" | \"numeric\" | \"email\" | \"alpha\",\n text_len_min?: number,\n text_len_max?: number,\n num_min?: number,\n num_max?: number,\n regex?: string | RegExp,\n num_decimals?: number\n): { isValid: boolean; errorMessage?: string } {\n // Empty value validation\n if (value === \"\") {\n return { isValid: true };\n }\n\n // Type-specific validation\n switch (input_type) {\n case \"numeric\": {\n // Check if value is a valid number\n const numValue = parseFloat(value);\n if (isNaN(numValue)) {\n return { isValid: false, errorMessage: \"Must be a valid number\" };\n }\n\n // Check decimal places\n if (num_decimals !== undefined) {\n const decimalPlaces = value.split(\".\")[1]?.length || 0;\n if (decimalPlaces > num_decimals) {\n return {\n isValid: false,\n errorMessage: `Maximum ${num_decimals} decimal place${num_decimals !== 1 ? \"s\" : \"\"} allowed`,\n };\n }\n }\n\n // Check min/max\n if (num_min !== undefined && numValue < num_min) {\n return { isValid: false, errorMessage: `Must be at least ${num_min}` };\n }\n if (num_max !== undefined && numValue > num_max) {\n return { isValid: false, errorMessage: `Must be at most ${num_max}` };\n }\n break;\n }\n\n case \"alpha\": {\n // Check if value contains only letters\n const alphaRegex = /^[A-Za-z\\s]*$/;\n if (!alphaRegex.test(value)) {\n return { isValid: false, errorMessage: \"Only letters are allowed\" };\n }\n break;\n }\n\n case \"email\": {\n // Basic email validation\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n if (!emailRegex.test(value)) {\n return { isValid: false, errorMessage: \"Must be a valid email address\" };\n }\n break;\n }\n\n case \"mixed\": {\n // Check length constraints\n if (text_len_min !== undefined && value.length < text_len_min) {\n return {\n isValid: false,\n errorMessage: `Must be at least ${text_len_min} character${text_len_min !== 1 ? \"s\" : \"\"}`,\n };\n }\n if (text_len_max !== undefined && value.length > text_len_max) {\n return {\n isValid: false,\n errorMessage: `Must be at most ${text_len_max} character${text_len_max !== 1 ? \"s\" : \"\"}`,\n };\n }\n break;\n }\n }\n\n // Regex validation (applies to all types if provided)\n if (regex) {\n const regexPattern = typeof regex === \"string\" ? new RegExp(regex) : regex;\n if (!regexPattern.test(value)) {\n return { isValid: false, errorMessage: \"Invalid format\" };\n }\n }\n\n return { isValid: true };\n}\n\n/**\n * Filter input value based on input_type to prevent invalid characters\n */\nfunction filterInputValue(\n value: string,\n input_type: \"mixed\" | \"numeric\" | \"email\" | \"alpha\",\n num_decimals?: number\n): string {\n switch (input_type) {\n case \"numeric\": {\n // Allow digits, decimal point, and minus sign\n let filtered = value.replace(/[^\\d.-]/g, \"\");\n\n // Handle decimal point - only allow one\n const parts = filtered.split(\".\");\n if (parts.length > 2) {\n filtered = parts[0] + \".\" + parts.slice(1).join(\"\");\n }\n\n // If num_decimals is 0, don't allow decimal point\n if (num_decimals === 0 && filtered.includes(\".\")) {\n filtered = filtered.replace(\".\", \"\");\n }\n\n // Limit decimal places\n if (num_decimals !== undefined && num_decimals > 0) {\n const parts = filtered.split(\".\");\n if (parts.length === 2 && parts[1].length > num_decimals) {\n filtered = parts[0] + \".\" + parts[1].substring(0, num_decimals);\n }\n }\n\n return filtered;\n }\n\n case \"alpha\": {\n // Allow only letters and spaces\n return value.replace(/[^A-Za-z\\s]/g, \"\");\n }\n\n case \"email\":\n case \"mixed\":\n default: {\n // Allow all characters for email and mixed\n return value;\n }\n }\n}\n\nexport const HazoUiFlexInput = React.forwardRef<\n HTMLInputElement,\n HazoUiFlexInputProps\n>(\n (\n {\n className,\n input_type = \"mixed\",\n text_len_min,\n text_len_max,\n num_min,\n num_max,\n regex,\n num_decimals,\n format_guide,\n format_guide_info = false,\n value: controlledValue,\n onChange,\n onBlur,\n ...props\n },\n ref\n ) => {\n const [internalValue, setInternalValue] = React.useState<string>(\n typeof controlledValue === \"string\" ? controlledValue : (typeof controlledValue === \"number\" ? String(controlledValue) : \"\")\n );\n const [errorMessage, setErrorMessage] = React.useState<string | undefined>();\n\n // Use controlled value if provided, otherwise use internal state\n const isControlled = controlledValue !== undefined;\n const currentValue = isControlled\n ? (typeof controlledValue === \"string\" ? controlledValue : String(controlledValue || \"\"))\n : internalValue;\n\n // Sync internal state when controlled value changes externally\n React.useEffect(() => {\n if (isControlled) {\n const newValue = typeof controlledValue === \"string\" ? controlledValue : String(controlledValue || \"\");\n if (newValue !== internalValue) {\n setInternalValue(newValue);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [controlledValue, isControlled]);\n\n /**\n * Handle input change with character filtering\n */\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n let newValue = e.target.value;\n\n // Apply character filtering for numeric and alpha types\n if (input_type === \"numeric\" || input_type === \"alpha\") {\n newValue = filterInputValue(newValue, input_type, num_decimals);\n }\n\n // Update internal state if uncontrolled\n if (!isControlled) {\n setInternalValue(newValue);\n }\n\n // Clear error on change\n if (errorMessage) {\n setErrorMessage(undefined);\n }\n\n // Call original onChange if provided\n if (onChange) {\n const syntheticEvent = {\n ...e,\n target: { ...e.target, value: newValue },\n } as React.ChangeEvent<HTMLInputElement>;\n onChange(syntheticEvent);\n }\n };\n\n /**\n * Handle blur event with validation\n */\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n const validation = validateInput(\n currentValue,\n input_type,\n text_len_min,\n text_len_max,\n num_min,\n num_max,\n regex,\n num_decimals\n );\n\n if (!validation.isValid) {\n setErrorMessage(validation.errorMessage || format_guide || \"Invalid input\");\n } else {\n setErrorMessage(undefined);\n }\n\n // Call original onBlur if provided\n if (onBlur) {\n onBlur(e);\n }\n };\n\n // Determine input type for HTML input element\n const htmlInputType =\n input_type === \"email\" ? \"email\" : input_type === \"numeric\" ? \"text\" : \"text\";\n\n // Determine if input has error\n const hasError = errorMessage !== undefined;\n\n return (\n <div className=\"cls_hazo_ui_flex_input_container w-full\">\n <Input\n ref={ref}\n type={htmlInputType}\n value={currentValue}\n onChange={handleChange}\n onBlur={handleBlur}\n className={cn(\n hasError && \"border-destructive focus-visible:ring-destructive\",\n className\n )}\n {...props}\n />\n {hasError && errorMessage && (\n <p className=\"cls_error_message mt-1 text-sm text-destructive\">\n {errorMessage}\n </p>\n )}\n {format_guide_info && format_guide && (\n <p\n className={cn(\n \"cls_format_guide_info mt-1 text-xs italic text-muted-foreground\",\n hasError && \"mt-0\"\n )}\n >\n {format_guide}\n </p>\n )}\n </div>\n );\n }\n);\n\nHazoUiFlexInput.displayName = \"HazoUiFlexInput\";\n\n","\"use client\";\n\n/**\n * Toolbar Button Component\n *\n * Reusable button component for the RTE toolbar with active/disabled states\n * and tooltip support.\n */\n\nimport * as React from \"react\";\nimport { cn } from \"../../../lib/utils\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from \"../../ui/tooltip\";\n\nexport interface ToolbarButtonProps {\n onClick?: () => void;\n is_active?: boolean;\n disabled?: boolean;\n tooltip?: string;\n className?: string;\n children: React.ReactNode;\n}\n\nexport const ToolbarButton = React.forwardRef<\n HTMLButtonElement,\n ToolbarButtonProps\n>(\n (\n { onClick, is_active = false, disabled = false, tooltip, className, children },\n ref\n ) => {\n const button = (\n <button\n ref={ref}\n type=\"button\"\n onClick={onClick}\n disabled={disabled}\n className={cn(\n \"cls_rte_toolbar_button\",\n \"inline-flex items-center justify-center\",\n \"h-8 w-8 rounded-md\",\n \"text-sm font-medium\",\n \"transition-colors duration-150\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n // Default state\n \"bg-transparent text-muted-foreground hover:bg-accent hover:text-accent-foreground\",\n // Active state\n is_active && \"bg-accent text-accent-foreground\",\n // Disabled state\n disabled && \"opacity-50 cursor-not-allowed hover:bg-transparent hover:text-muted-foreground\",\n className\n )}\n >\n {children}\n </button>\n );\n\n if (tooltip) {\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent side=\"bottom\" className=\"text-xs\">\n {tooltip}\n </TooltipContent>\n </Tooltip>\n );\n }\n\n return button;\n }\n);\n\nToolbarButton.displayName = \"ToolbarButton\";\n","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"prefixCls\", \"className\", \"onChange\", \"width\", \"presetColors\", \"color\", \"editableDisable\", \"disableAlpha\", \"style\"];\nimport React, { useState, Fragment } from 'react';\nimport Saturation from '@uiw/react-color-saturation';\nimport Alpha from '@uiw/react-color-alpha';\nimport EditableInput from '@uiw/react-color-editable-input';\nimport RGBA from '@uiw/react-color-editable-input-rgba';\nimport Hue from '@uiw/react-color-hue';\nimport { validHex, hsvaToHex, hsvaToRgbaString, hexToHsva, color as handleColor } from '@uiw/color-convert';\nimport Swatch from '@uiw/react-color-swatch';\nimport { useEffect } from 'react';\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nvar PRESET_COLORS = ['#D0021B', '#F5A623', '#f8e61b', '#8B572A', '#7ED321', '#417505', '#BD10E0', '#9013FE', '#4A90E2', '#50E3C2', '#B8E986', '#000000', '#4A4A4A', '#9B9B9B', '#FFFFFF'];\nvar Bar = props => /*#__PURE__*/_jsx(\"div\", {\n style: {\n boxShadow: 'rgb(0 0 0 / 60%) 0px 0px 2px',\n width: 4,\n top: 1,\n bottom: 1,\n left: props.left,\n borderRadius: 1,\n position: 'absolute',\n backgroundColor: '#fff'\n }\n});\nvar Sketch = /*#__PURE__*/React.forwardRef((props, ref) => {\n var {\n prefixCls = 'w-color-sketch',\n className,\n onChange,\n width = 218,\n presetColors = PRESET_COLORS,\n color,\n editableDisable = true,\n disableAlpha = false,\n style\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n var [hsva, setHsva] = useState({\n h: 209,\n s: 36,\n v: 90,\n a: 1\n });\n useEffect(() => {\n if (typeof color === 'string' && validHex(color)) {\n setHsva(hexToHsva(color));\n }\n if (typeof color === 'object') {\n setHsva(color);\n }\n }, [color]);\n var handleChange = hsv => {\n setHsva(hsv);\n onChange && onChange(handleColor(hsv));\n };\n var handleHex = (value, evn) => {\n if (typeof value === 'string' && validHex(value) && /(3|6)/.test(String(value.length))) {\n handleChange(hexToHsva(value));\n }\n };\n var handleAlphaChange = newAlpha => handleChange(_extends({}, hsva, {\n a: newAlpha.a\n }));\n var handleSaturationChange = newColor => handleChange(_extends({}, hsva, newColor, {\n a: hsva.a\n }));\n var styleMain = _extends({\n '--sketch-background': 'rgb(255, 255, 255)',\n '--sketch-box-shadow': 'rgb(0 0 0 / 15%) 0px 0px 0px 1px, rgb(0 0 0 / 15%) 0px 8px 16px',\n '--sketch-swatch-box-shadow': 'rgb(0 0 0 / 15%) 0px 0px 0px 1px inset',\n '--sketch-alpha-box-shadow': 'rgb(0 0 0 / 15%) 0px 0px 0px 1px inset, rgb(0 0 0 / 25%) 0px 0px 4px inset',\n '--sketch-swatch-border-top': '1px solid rgb(238, 238, 238)',\n background: 'var(--sketch-background)',\n borderRadius: 4,\n boxShadow: 'var(--sketch-box-shadow)',\n width\n }, style);\n var styleAlpha = {\n borderRadius: 2,\n background: hsvaToRgbaString(hsva),\n boxShadow: 'var(--sketch-alpha-box-shadow)'\n };\n var styleSwatch = {\n borderTop: 'var(--sketch-swatch-border-top)',\n paddingTop: 10,\n paddingLeft: 10\n };\n var styleSwatchRect = {\n marginRight: 10,\n marginBottom: 10,\n borderRadius: 3,\n boxShadow: 'var(--sketch-swatch-box-shadow)'\n };\n return /*#__PURE__*/_jsxs(\"div\", _extends({}, other, {\n className: prefixCls + \" \" + (className || ''),\n ref: ref,\n style: styleMain,\n children: [/*#__PURE__*/_jsxs(\"div\", {\n style: {\n padding: '10px 10px 8px'\n },\n children: [/*#__PURE__*/_jsx(Saturation, {\n hsva: hsva,\n style: {\n width: 'auto',\n height: 150\n },\n onChange: handleSaturationChange\n }), /*#__PURE__*/_jsxs(\"div\", {\n style: {\n display: 'flex',\n marginTop: 4\n },\n children: [/*#__PURE__*/_jsxs(\"div\", {\n style: {\n flex: 1\n },\n children: [/*#__PURE__*/_jsx(Hue, {\n width: \"auto\",\n height: 10,\n hue: hsva.h,\n pointer: Bar,\n innerProps: {\n style: {\n marginLeft: 1,\n marginRight: 5\n }\n },\n onChange: newHue => handleChange(_extends({}, hsva, newHue))\n }), !disableAlpha && /*#__PURE__*/_jsx(Alpha, {\n width: \"auto\",\n height: 10,\n hsva: hsva,\n pointer: Bar,\n style: {\n marginTop: 4\n },\n innerProps: {\n style: {\n marginLeft: 1,\n marginRight: 5\n }\n },\n onChange: handleAlphaChange\n })]\n }), !disableAlpha && /*#__PURE__*/_jsx(Alpha, {\n width: 24,\n height: 24,\n hsva: hsva,\n radius: 2,\n style: {\n marginLeft: 4\n },\n bgProps: {\n style: {\n background: 'transparent'\n }\n },\n innerProps: {\n style: styleAlpha\n },\n pointer: () => /*#__PURE__*/_jsx(Fragment, {})\n })]\n })]\n }), editableDisable && /*#__PURE__*/_jsxs(\"div\", {\n style: {\n display: 'flex',\n margin: '0 10px 3px 10px'\n },\n children: [/*#__PURE__*/_jsx(EditableInput, {\n label: \"Hex\",\n value: hsvaToHex(hsva).replace(/^#/, '').toLocaleUpperCase(),\n onChange: (evn, val) => handleHex(val, evn),\n style: {\n minWidth: 58\n }\n }), /*#__PURE__*/_jsx(RGBA, {\n hsva: hsva,\n style: {\n marginLeft: 6\n },\n aProps: !disableAlpha ? {} : false,\n onChange: result => handleChange(result.hsva)\n })]\n }), presetColors && presetColors.length > 0 && /*#__PURE__*/_jsx(Swatch, {\n style: styleSwatch,\n colors: presetColors,\n color: hsvaToHex(hsva),\n onChange: hsvColor => handleChange(hsvColor),\n rectProps: {\n style: styleSwatchRect\n }\n })]\n }));\n});\nSketch.displayName = 'Sketch';\nexport default Sketch;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"prefixCls\", \"radius\", \"pointer\", \"className\", \"hue\", \"style\", \"hsva\", \"onChange\"];\nimport React, { useCallback, useMemo } from 'react';\nimport { hsvaToHslaString } from '@uiw/color-convert';\nimport Interactive from '@uiw/react-drag-event-interactive';\nimport { Pointer } from \"./Pointer.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar Saturation = /*#__PURE__*/React.forwardRef((props, ref) => {\n var _hsva$h;\n var {\n prefixCls = 'w-color-saturation',\n radius = 0,\n pointer,\n className,\n hue = 0,\n style,\n hsva,\n onChange\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n var containerStyle = _extends({\n width: 200,\n height: 200,\n borderRadius: radius\n }, style, {\n position: 'relative'\n });\n var handleChange = (interaction, event) => {\n onChange && hsva && onChange({\n h: hsva.h,\n s: interaction.left * 100,\n v: (1 - interaction.top) * 100,\n a: hsva.a\n // source: 'hsv',\n });\n };\n var handleKeyDown = useCallback(event => {\n if (!hsva || !onChange) return;\n var step = 1; // 1% step for saturation and value\n var newS = hsva.s;\n var newV = hsva.v;\n var changed = false;\n switch (event.key) {\n case 'ArrowLeft':\n newS = Math.max(0, hsva.s - step);\n changed = true;\n event.preventDefault();\n break;\n case 'ArrowRight':\n newS = Math.min(100, hsva.s + step);\n changed = true;\n event.preventDefault();\n break;\n case 'ArrowUp':\n newV = Math.min(100, hsva.v + step);\n changed = true;\n event.preventDefault();\n break;\n case 'ArrowDown':\n newV = Math.max(0, hsva.v - step);\n changed = true;\n event.preventDefault();\n break;\n default:\n return;\n }\n if (changed) {\n onChange({\n h: hsva.h,\n s: newS,\n v: newV,\n a: hsva.a\n });\n }\n }, [hsva, onChange]);\n var pointerElement = useMemo(() => {\n if (!hsva) return null;\n var comProps = {\n top: 100 - hsva.v + \"%\",\n left: hsva.s + \"%\",\n color: hsvaToHslaString(hsva)\n };\n if (pointer && typeof pointer === 'function') {\n return pointer(_extends({\n prefixCls\n }, comProps));\n }\n return /*#__PURE__*/_jsx(Pointer, _extends({\n prefixCls: prefixCls\n }, comProps));\n }, [hsva, pointer, prefixCls]);\n var handleClick = useCallback(event => {\n event.target.focus();\n }, []);\n return /*#__PURE__*/_jsx(Interactive, _extends({\n className: [prefixCls, className || ''].filter(Boolean).join(' ')\n }, other, {\n style: _extends({\n position: 'absolute',\n inset: 0,\n cursor: 'crosshair',\n backgroundImage: \"linear-gradient(0deg, #000, transparent), linear-gradient(90deg, #fff, hsl(\" + ((_hsva$h = hsva == null ? void 0 : hsva.h) != null ? _hsva$h : hue) + \", 100%, 50%))\"\n }, containerStyle, {\n outline: 'none'\n }),\n ref: ref,\n onMove: handleChange,\n onDown: handleChange,\n onKeyDown: handleKeyDown,\n onClick: handleClick,\n children: pointerElement\n }));\n});\nSaturation.displayName = 'Saturation';\nexport default Saturation;","import _extends from \"@babel/runtime/helpers/extends\";\nvar RGB_MAX = 255;\nvar HUE_MAX = 360;\nvar SV_MAX = 100;\n/**\n * ```js\n * rgbaToHsva({ r: 255, g: 255, b: 255, a: 1 }) //=> { h: 0, s: 0, v: 100, a: 1 }\n * ```\n */\nexport var rgbaToHsva = _ref => {\n var {\n r,\n g,\n b,\n a\n } = _ref;\n var max = Math.max(r, g, b);\n var delta = max - Math.min(r, g, b);\n\n // prettier-ignore\n var hh = delta ? max === r ? (g - b) / delta : max === g ? 2 + (b - r) / delta : 4 + (r - g) / delta : 0;\n return {\n h: 60 * (hh < 0 ? hh + 6 : hh),\n s: max ? delta / max * SV_MAX : 0,\n v: max / RGB_MAX * SV_MAX,\n a\n };\n};\nexport var hsvaToHslString = hsva => {\n var {\n h,\n s,\n l\n } = hsvaToHsla(hsva);\n // return `hsl(${h}, ${s}%, ${l}%)`;\n return \"hsl(\" + h + \", \" + Math.round(s) + \"%, \" + Math.round(l) + \"%)\";\n};\nexport var hsvaToHsvString = _ref2 => {\n var {\n h,\n s,\n v\n } = _ref2;\n return \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\";\n};\nexport var hsvaToHsvaString = _ref3 => {\n var {\n h,\n s,\n v,\n a\n } = _ref3;\n return \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \" + a + \")\";\n};\nexport var hsvaToHslaString = hsva => {\n var {\n h,\n s,\n l,\n a\n } = hsvaToHsla(hsva);\n return \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \" + a + \")\";\n};\nexport var hslStringToHsla = str => {\n var [h, s, l, a] = (str.match(/\\d+/g) || []).map(Number);\n return {\n h,\n s,\n l,\n a\n };\n};\nexport var hslaStringToHsva = hslString => {\n var matcher = /hsla?\\(?\\s*(-?\\d*\\.?\\d+)(deg|rad|grad|turn)?[,\\s]+(-?\\d*\\.?\\d+)%?[,\\s]+(-?\\d*\\.?\\d+)%?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i;\n var match = matcher.exec(hslString);\n if (!match) return {\n h: 0,\n s: 0,\n v: 0,\n a: 1\n };\n return hslaToHsva({\n h: parseHue(match[1], match[2]),\n s: Number(match[3]),\n l: Number(match[4]),\n a: match[5] === undefined ? 1 : Number(match[5]) / (match[6] ? 100 : 1)\n });\n};\nexport var hslStringToHsva = hslaStringToHsva;\nexport var hslaToHsva = _ref4 => {\n var {\n h,\n s,\n l,\n a\n } = _ref4;\n s *= (l < 50 ? l : SV_MAX - l) / SV_MAX;\n return {\n h: h,\n s: s > 0 ? 2 * s / (l + s) * SV_MAX : 0,\n v: l + s,\n a\n };\n};\nexport var hsvaToHsla = _ref5 => {\n var {\n h,\n s,\n v,\n a\n } = _ref5;\n var hh = (200 - s) * v / SV_MAX;\n return {\n h,\n s: hh > 0 && hh < 200 ? s * v / SV_MAX / (hh <= SV_MAX ? hh : 200 - hh) * SV_MAX : 0,\n l: hh / 2,\n a\n };\n};\nexport var hsvaStringToHsva = hsvString => {\n var matcher = /hsva?\\(?\\s*(-?\\d*\\.?\\d+)(deg|rad|grad|turn)?[,\\s]+(-?\\d*\\.?\\d+)%?[,\\s]+(-?\\d*\\.?\\d+)%?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i;\n var match = matcher.exec(hsvString);\n if (!match) return {\n h: 0,\n s: 0,\n v: 0,\n a: 1\n };\n return {\n h: parseHue(match[1], match[2]),\n s: Number(match[3]),\n v: Number(match[4]),\n a: match[5] === undefined ? 1 : Number(match[5]) / (match[6] ? SV_MAX : 1)\n };\n};\n\n/**\n * Valid CSS <angle> units.\n * https://developer.mozilla.org/en-US/docs/Web/CSS/angle\n */\nvar angleUnits = {\n grad: HUE_MAX / 400,\n turn: HUE_MAX,\n rad: HUE_MAX / (Math.PI * 2)\n};\nexport var parseHue = function parseHue(value, unit) {\n if (unit === void 0) {\n unit = 'deg';\n }\n return Number(value) * (angleUnits[unit] || 1);\n};\nexport var hsvStringToHsva = hsvaStringToHsva;\nexport var rgbaStringToHsva = rgbaString => {\n var matcher = /rgba?\\(?\\s*(-?\\d*\\.?\\d+)(%)?[,\\s]+(-?\\d*\\.?\\d+)(%)?[,\\s]+(-?\\d*\\.?\\d+)(%)?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i;\n var match = matcher.exec(rgbaString);\n if (!match) return {\n h: 0,\n s: 0,\n v: 0,\n a: 1\n };\n return rgbaToHsva({\n r: Number(match[1]) / (match[2] ? SV_MAX / RGB_MAX : 1),\n g: Number(match[3]) / (match[4] ? SV_MAX / RGB_MAX : 1),\n b: Number(match[5]) / (match[6] ? SV_MAX / RGB_MAX : 1),\n a: match[7] === undefined ? 1 : Number(match[7]) / (match[8] ? SV_MAX : 1)\n });\n};\nexport var rgbStringToHsva = rgbaStringToHsva;\n\n/** Converts an RGBA color plus alpha transparency to hex */\nexport var rgbaToHex = _ref6 => {\n var {\n r,\n g,\n b\n } = _ref6;\n return rgbToHex({\n r,\n g,\n b\n });\n};\nexport var rgbToHex = _ref7 => {\n var {\n r,\n g,\n b\n } = _ref7;\n var bin = r << 16 | g << 8 | b;\n return \"#\" + (h => new Array(7 - h.length).join('0') + h)(bin.toString(16));\n};\nexport var rgbaToHexa = _ref8 => {\n var {\n r,\n g,\n b,\n a\n } = _ref8;\n var alpha = typeof a === 'number' && (a * 255 | 1 << 8).toString(16).slice(1);\n return \"\" + rgbToHex({\n r,\n g,\n b\n }) + (alpha ? alpha : '');\n};\nexport var hexToHsva = hex => rgbaToHsva(hexToRgba(hex));\nexport var hexToRgba = hex => {\n var htemp = hex.replace('#', '');\n if (/^#?/.test(hex) && htemp.length === 3) {\n hex = \"#\" + htemp.charAt(0) + htemp.charAt(0) + htemp.charAt(1) + htemp.charAt(1) + htemp.charAt(2) + htemp.charAt(2);\n }\n var reg = new RegExp(\"[A-Za-z0-9]{2}\", 'g');\n var [r, g, b = 0, a] = hex.match(reg).map(v => parseInt(v, 16));\n return {\n r,\n g,\n b,\n a: (a != null ? a : 255) / RGB_MAX\n };\n};\n\n/**\n * Converts HSVA to RGBA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV\n * @param color HSVA color as an array [0-360, 0-1, 0-1, 0-1]\n */\nexport var hsvaToRgba = _ref9 => {\n var {\n h,\n s,\n v,\n a\n } = _ref9;\n var _h = h / 60,\n _s = s / SV_MAX,\n _v = v / SV_MAX,\n hi = Math.floor(_h) % 6;\n var f = _h - Math.floor(_h),\n _p = RGB_MAX * _v * (1 - _s),\n _q = RGB_MAX * _v * (1 - _s * f),\n _t = RGB_MAX * _v * (1 - _s * (1 - f));\n _v *= RGB_MAX;\n var rgba = {};\n switch (hi) {\n case 0:\n rgba.r = _v;\n rgba.g = _t;\n rgba.b = _p;\n break;\n case 1:\n rgba.r = _q;\n rgba.g = _v;\n rgba.b = _p;\n break;\n case 2:\n rgba.r = _p;\n rgba.g = _v;\n rgba.b = _t;\n break;\n case 3:\n rgba.r = _p;\n rgba.g = _q;\n rgba.b = _v;\n break;\n case 4:\n rgba.r = _t;\n rgba.g = _p;\n rgba.b = _v;\n break;\n case 5:\n rgba.r = _v;\n rgba.g = _p;\n rgba.b = _q;\n break;\n }\n rgba.r = Math.round(rgba.r);\n rgba.g = Math.round(rgba.g);\n rgba.b = Math.round(rgba.b);\n return _extends({}, rgba, {\n a\n });\n};\nexport var hsvaToRgbString = hsva => {\n var {\n r,\n g,\n b\n } = hsvaToRgba(hsva);\n return \"rgb(\" + r + \", \" + g + \", \" + b + \")\";\n};\nexport var hsvaToRgbaString = hsva => {\n var {\n r,\n g,\n b,\n a\n } = hsvaToRgba(hsva);\n return \"rgba(\" + r + \", \" + g + \", \" + b + \", \" + a + \")\";\n};\nexport var rgbaToRgb = _ref0 => {\n var {\n r,\n g,\n b\n } = _ref0;\n return {\n r,\n g,\n b\n };\n};\nexport var hslaToHsl = _ref1 => {\n var {\n h,\n s,\n l\n } = _ref1;\n return {\n h,\n s,\n l\n };\n};\nexport var hsvaToHex = hsva => rgbToHex(hsvaToRgba(hsva));\nexport var hsvaToHexa = hsva => rgbaToHexa(hsvaToRgba(hsva));\nexport var hsvaToHsv = _ref10 => {\n var {\n h,\n s,\n v\n } = _ref10;\n return {\n h,\n s,\n v\n };\n};\nexport var hexToXY = hex => rgbToXY(rgbaToRgb(hexToRgba(hex)));\nexport var xyToHex = xy => rgbToHex(_extends({}, xyToRgb(xy)));\n\n/**\n * Converts XY to RGB. Based on formula from https://developers.meethue.com/develop/application-design-guidance/color-conversion-formulas-rgb-to-xy-and-back/\n * @param color XY color and brightness as an array [0-1, 0-1, 0-1]\n */\nexport var xyToRgb = _ref11 => {\n var {\n x,\n y,\n bri = 255\n } = _ref11;\n var red = x * 3.2406255 + y * -1.537208 + bri * -0.4986286;\n var green = x * -0.9689307 + y * 1.8757561 + bri * 0.0415175;\n var blue = x * 0.0557101 + y * -0.2040211 + bri * 1.0569959;\n var translate = function translate(color) {\n return color <= 0.0031308 ? 12.92 * color : 1.055 * Math.pow(color, 1 / 2.4) - 0.055;\n };\n return {\n r: Math.round(255 * translate(red)),\n g: Math.round(255 * translate(green)),\n b: Math.round(255 * translate(blue))\n };\n};\n\n/**\n * Converts RGB to XY. Based on formula from https://developers.meethue.com/develop/application-design-guidance/color-conversion-formulas-rgb-to-xy-and-back/\n * @param color RGB color as an array [0-255, 0-255, 0-255]\n */\nexport var rgbToXY = _ref12 => {\n var {\n r,\n g,\n b\n } = _ref12;\n var translateColor = function translateColor(color) {\n return color <= 0.04045 ? color / 12.92 : Math.pow((color + 0.055) / 1.055, 2.4);\n };\n var red = translateColor(r / 255);\n var green = translateColor(g / 255);\n var blue = translateColor(b / 255);\n var xyz = {};\n xyz.x = red * 0.4124 + green * 0.3576 + blue * 0.1805;\n xyz.y = red * 0.2126 + green * 0.7152 + blue * 0.0722;\n xyz.bri = red * 0.0193 + green * 0.1192 + blue * 0.9505;\n return xyz;\n};\nexport var color = str => {\n var rgb;\n var hsl;\n var hsv;\n var rgba;\n var hsla;\n var hsva;\n var xy;\n var hex;\n var hexa;\n if (typeof str === 'string' && validHex(str)) {\n hsva = hexToHsva(str);\n hex = str;\n } else if (typeof str !== 'string') {\n hsva = str;\n }\n if (hsva) {\n hsv = hsvaToHsv(hsva);\n hsla = hsvaToHsla(hsva);\n rgba = hsvaToRgba(hsva);\n hexa = rgbaToHexa(rgba);\n hex = hsvaToHex(hsva);\n hsl = hslaToHsl(hsla);\n rgb = rgbaToRgb(rgba);\n xy = rgbToXY(rgb);\n }\n return {\n rgb,\n hsl,\n hsv,\n rgba,\n hsla,\n hsva,\n hex,\n hexa,\n xy\n };\n};\nexport var getContrastingColor = str => {\n if (!str) {\n return '#ffffff';\n }\n var col = color(str);\n var yiq = (col.rgb.r * 299 + col.rgb.g * 587 + col.rgb.b * 114) / 1000;\n return yiq >= 128 ? '#000000' : '#ffffff';\n};\nexport var equalColorObjects = (first, second) => {\n if (first === second) return true;\n for (var prop in first) {\n // The following allows for a type-safe calling of this function (first & second have to be HSL, HSV, or RGB)\n // with type-unsafe iterating over object keys. TS does not allow this without an index (`[key: string]: number`)\n // on an object to define how iteration is normally done. To ensure extra keys are not allowed on our types,\n // we must cast our object to unknown (as RGB demands `r` be a key, while `Record<string, x>` does not care if\n // there is or not), and then as a type TS can iterate over.\n if (first[prop] !== second[prop]) return false;\n }\n return true;\n};\nexport var equalColorString = (first, second) => {\n return first.replace(/\\s/g, '') === second.replace(/\\s/g, '');\n};\nexport var equalHex = (first, second) => {\n if (first.toLowerCase() === second.toLowerCase()) return true;\n\n // To compare colors like `#FFF` and `ffffff` we convert them into RGB objects\n return equalColorObjects(hexToRgba(first), hexToRgba(second));\n};\nexport var validHex = hex => /^#?([A-Fa-f0-9]{3,4}){1,2}$/.test(hex);","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"prefixCls\", \"className\", \"onMove\", \"onDown\"];\nimport React, { useRef, useState, useCallback, useEffect } from 'react';\nimport { isTouch, preventDefaultMove, getRelativePosition, useEventCallback } from \"./utils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport * from \"./utils.js\";\nvar Interactive = /*#__PURE__*/React.forwardRef((props, ref) => {\n var {\n prefixCls = 'w-color-interactive',\n className,\n onMove,\n onDown\n } = props,\n reset = _objectWithoutPropertiesLoose(props, _excluded);\n var container = useRef(null);\n var hasTouched = useRef(false);\n var [isDragging, setDragging] = useState(false);\n var onMoveCallback = useEventCallback(onMove);\n var onKeyCallback = useEventCallback(onDown);\n\n // Prevent mobile browsers from handling mouse events (conflicting with touch ones).\n // If we detected a touch interaction before, we prefer reacting to touch events only.\n var isValid = event => {\n if (hasTouched.current && !isTouch(event)) return false;\n hasTouched.current = isTouch(event);\n return true;\n };\n var handleMove = useCallback(event => {\n preventDefaultMove(event);\n if (!container.current) return;\n var isDown = isTouch(event) ? event.touches.length > 0 : event.buttons > 0;\n if (!isDown) {\n setDragging(false);\n return;\n }\n onMoveCallback == null || onMoveCallback(getRelativePosition(container.current, event), event);\n }, [onMoveCallback]);\n var handleMoveEnd = useCallback(() => setDragging(false), []);\n var toggleDocumentEvents = useCallback(state => {\n if (state) {\n window.addEventListener(hasTouched.current ? 'touchmove' : 'mousemove', handleMove);\n window.addEventListener(hasTouched.current ? 'touchend' : 'mouseup', handleMoveEnd);\n } else {\n window.removeEventListener('mousemove', handleMove);\n window.removeEventListener('mouseup', handleMoveEnd);\n window.removeEventListener('touchmove', handleMove);\n window.removeEventListener('touchend', handleMoveEnd);\n }\n }, [handleMove, handleMoveEnd]);\n useEffect(() => {\n toggleDocumentEvents(isDragging);\n return () => {\n toggleDocumentEvents(false);\n };\n }, [isDragging, handleMove, handleMoveEnd, toggleDocumentEvents]);\n var handleMoveStart = useCallback(event => {\n var activeEl = document.activeElement;\n activeEl == null || activeEl.blur();\n preventDefaultMove(event.nativeEvent);\n if (!isValid(event.nativeEvent)) return;\n if (!container.current) return;\n onKeyCallback == null || onKeyCallback(getRelativePosition(container.current, event.nativeEvent), event.nativeEvent);\n setDragging(true);\n }, [onKeyCallback]);\n return /*#__PURE__*/_jsx(\"div\", _extends({}, reset, {\n className: [prefixCls, className || ''].filter(Boolean).join(' '),\n style: _extends({}, reset.style, {\n touchAction: 'none'\n }),\n ref: container,\n tabIndex: 0,\n onMouseDown: handleMoveStart,\n onTouchStart: handleMoveStart\n }));\n});\nInteractive.displayName = 'Interactive';\nexport default Interactive;","import { useRef, useEffect, useCallback } from 'react';\n\n// Saves incoming handler to the ref in order to avoid \"useCallback hell\"\nexport function useEventCallback(handler) {\n var callbackRef = useRef(handler);\n useEffect(() => {\n callbackRef.current = handler;\n });\n return useCallback((value, event) => callbackRef.current && callbackRef.current(value, event), []);\n}\n\n// Check if an event was triggered by touch\nexport var isTouch = event => 'touches' in event;\n\n// Browsers introduced an intervention, making touch events passive by default.\n// This workaround removes `preventDefault` call from the touch handlers.\n// https://github.com/facebook/react/issues/19651\nexport var preventDefaultMove = event => {\n !isTouch(event) && event.preventDefault && event.preventDefault();\n};\n// Clamps a value between an upper and lower bound.\n// We use ternary operators because it makes the minified code\n// 2 times shorter then `Math.min(Math.max(a,b),c)`\nexport var clamp = function clamp(number, min, max) {\n if (min === void 0) {\n min = 0;\n }\n if (max === void 0) {\n max = 1;\n }\n return number > max ? max : number < min ? min : number;\n};\n// Returns a relative position of the pointer inside the node's bounding box\nexport var getRelativePosition = (node, event) => {\n var rect = node.getBoundingClientRect();\n\n // Get user's pointer position from `touches` array if it's a `TouchEvent`\n var pointer = isTouch(event) ? event.touches[0] : event;\n return {\n left: clamp((pointer.pageX - (rect.left + window.pageXOffset)) / rect.width),\n top: clamp((pointer.pageY - (rect.top + window.pageYOffset)) / rect.height),\n width: rect.width,\n height: rect.height,\n x: pointer.pageX - (rect.left + window.pageXOffset),\n y: pointer.pageY - (rect.top + window.pageYOffset)\n };\n};","import React, { useMemo } from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var Pointer = _ref => {\n var {\n className,\n color,\n left,\n top,\n prefixCls\n } = _ref;\n var style = {\n position: 'absolute',\n top,\n left\n };\n var stylePointer = {\n '--saturation-pointer-box-shadow': 'rgb(255 255 255) 0px 0px 0px 1.5px, rgb(0 0 0 / 30%) 0px 0px 1px 1px inset, rgb(0 0 0 / 40%) 0px 0px 1px 2px',\n width: 6,\n height: 6,\n transform: 'translate(-3px, -3px)',\n boxShadow: 'var(--saturation-pointer-box-shadow)',\n borderRadius: '50%',\n backgroundColor: color\n };\n return useMemo(() => /*#__PURE__*/_jsx(\"div\", {\n className: prefixCls + \"-pointer \" + (className || ''),\n style: style,\n children: /*#__PURE__*/_jsx(\"div\", {\n className: prefixCls + \"-fill\",\n style: stylePointer\n })\n }), [top, left, color, className, prefixCls]);\n};","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"prefixCls\", \"className\", \"hsva\", \"background\", \"bgProps\", \"innerProps\", \"pointerProps\", \"radius\", \"width\", \"height\", \"direction\", \"style\", \"onChange\", \"pointer\"];\nimport React, { useCallback } from 'react';\nimport { hsvaToHslaString } from '@uiw/color-convert';\nimport Interactive from '@uiw/react-drag-event-interactive';\nimport { Pointer } from \"./Pointer.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport * from \"./Pointer.js\";\nexport var BACKGROUND_IMG = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg==';\nvar Alpha = /*#__PURE__*/React.forwardRef((props, ref) => {\n var {\n prefixCls = 'w-color-alpha',\n className,\n hsva,\n background,\n bgProps = {},\n innerProps = {},\n pointerProps = {},\n radius = 0,\n width,\n height = 16,\n direction = 'horizontal',\n style,\n onChange,\n pointer\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n var handleChange = offset => {\n onChange && onChange(_extends({}, hsva, {\n a: direction === 'horizontal' ? offset.left : offset.top\n }), offset);\n };\n var colorTo = hsvaToHslaString(Object.assign({}, hsva, {\n a: 1\n }));\n var innerBackground = \"linear-gradient(to \" + (direction === 'horizontal' ? 'right' : 'bottom') + \", rgba(244, 67, 54, 0) 0%, \" + colorTo + \" 100%)\";\n var comProps = {};\n if (direction === 'horizontal') {\n comProps.left = hsva.a * 100 + \"%\";\n } else {\n comProps.top = hsva.a * 100 + \"%\";\n }\n var styleWrapper = _extends({\n '--alpha-background-color': '#fff',\n '--alpha-pointer-background-color': 'rgb(248, 248, 248)',\n '--alpha-pointer-box-shadow': 'rgb(0 0 0 / 37%) 0px 1px 4px 0px',\n borderRadius: radius,\n background: \"url(\" + BACKGROUND_IMG + \") left center\",\n backgroundColor: 'var(--alpha-background-color)'\n }, {\n width,\n height\n }, style, {\n position: 'relative'\n });\n var handleKeyDown = useCallback(event => {\n var step = 0.01; // 1% step\n var currentAlpha = hsva.a;\n var newAlpha = currentAlpha;\n switch (event.key) {\n case 'ArrowLeft':\n if (direction === 'horizontal') {\n newAlpha = Math.max(0, currentAlpha - step);\n event.preventDefault();\n }\n break;\n case 'ArrowRight':\n if (direction === 'horizontal') {\n newAlpha = Math.min(1, currentAlpha + step);\n event.preventDefault();\n }\n break;\n case 'ArrowUp':\n if (direction === 'vertical') {\n newAlpha = Math.max(0, currentAlpha - step);\n event.preventDefault();\n }\n break;\n case 'ArrowDown':\n if (direction === 'vertical') {\n newAlpha = Math.min(1, currentAlpha + step);\n event.preventDefault();\n }\n break;\n default:\n return;\n }\n if (newAlpha !== currentAlpha) {\n var syntheticOffset = {\n left: direction === 'horizontal' ? newAlpha : hsva.a,\n top: direction === 'vertical' ? newAlpha : hsva.a,\n width: 0,\n height: 0,\n x: 0,\n y: 0\n };\n onChange && onChange(_extends({}, hsva, {\n a: newAlpha\n }), syntheticOffset);\n }\n }, [hsva, direction, onChange]);\n var handleClick = useCallback(event => {\n event.target.focus();\n }, []);\n var pointerElement = pointer && typeof pointer === 'function' ? pointer(_extends({\n prefixCls\n }, pointerProps, comProps)) : /*#__PURE__*/_jsx(Pointer, _extends({}, pointerProps, {\n prefixCls: prefixCls\n }, comProps));\n return /*#__PURE__*/_jsxs(\"div\", _extends({}, other, {\n className: [prefixCls, prefixCls + \"-\" + direction, className || ''].filter(Boolean).join(' '),\n style: styleWrapper,\n ref: ref,\n children: [/*#__PURE__*/_jsx(\"div\", _extends({}, bgProps, {\n style: _extends({\n inset: 0,\n position: 'absolute',\n background: background || innerBackground,\n borderRadius: radius\n }, bgProps.style)\n })), /*#__PURE__*/_jsx(Interactive, _extends({}, innerProps, {\n style: _extends({}, innerProps.style, {\n inset: 0,\n zIndex: 1,\n position: 'absolute',\n outline: 'none'\n }),\n onMove: handleChange,\n onDown: handleChange,\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n children: pointerElement\n }))]\n }));\n});\nAlpha.displayName = 'Alpha';\nexport default Alpha;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"prefixCls\", \"left\", \"top\", \"style\", \"fillProps\"];\nimport React from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var Pointer = _ref => {\n var {\n className,\n prefixCls,\n left,\n top,\n style,\n fillProps\n } = _ref,\n reset = _objectWithoutPropertiesLoose(_ref, _excluded);\n var styleWrapper = _extends({}, style, {\n position: 'absolute',\n left,\n top\n });\n var stylePointer = _extends({\n width: 18,\n height: 18,\n boxShadow: 'var(--alpha-pointer-box-shadow)',\n borderRadius: '50%',\n backgroundColor: 'var(--alpha-pointer-background-color)'\n }, fillProps == null ? void 0 : fillProps.style, {\n transform: left ? 'translate(-9px, -1px)' : 'translate(-1px, -9px)'\n });\n return /*#__PURE__*/_jsx(\"div\", _extends({\n className: prefixCls + \"-pointer \" + (className || ''),\n style: styleWrapper\n }, reset, {\n children: /*#__PURE__*/_jsx(\"div\", _extends({\n className: prefixCls + \"-fill\"\n }, fillProps, {\n style: stylePointer\n }))\n }));\n};","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"prefixCls\", \"placement\", \"label\", \"value\", \"className\", \"style\", \"labelStyle\", \"inputStyle\", \"onChange\", \"onBlur\", \"renderInput\"];\nimport React from 'react';\nimport { useRef, useEffect, useState } from 'react';\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nvar validHex = hex => /^#?([A-Fa-f0-9]{3,4}){1,2}$/.test(hex);\nvar getNumberValue = value => Number(String(value).replace(/%/g, ''));\nvar EditableInput = /*#__PURE__*/React.forwardRef((props, ref) => {\n var {\n prefixCls = 'w-color-editable-input',\n placement = 'bottom',\n label,\n value: initValue,\n className,\n style,\n labelStyle,\n inputStyle,\n onChange,\n onBlur,\n renderInput\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n var [value, setValue] = useState(initValue);\n var isFocus = useRef(false);\n useEffect(() => {\n if (props.value !== value) {\n if (!isFocus.current) {\n setValue(props.value);\n }\n }\n }, [props.value]);\n function handleChange(evn, valInit) {\n var value = (valInit || evn.target.value).trim().replace(/^#/, '');\n if (validHex(value)) {\n onChange && onChange(evn, value);\n }\n var val = getNumberValue(value);\n if (!isNaN(val)) {\n onChange && onChange(evn, val);\n }\n setValue(value);\n }\n function handleBlur(evn) {\n isFocus.current = false;\n setValue(props.value);\n onBlur && onBlur(evn);\n }\n var placementStyle = {};\n if (placement === 'bottom') {\n placementStyle['flexDirection'] = 'column';\n }\n if (placement === 'top') {\n placementStyle['flexDirection'] = 'column-reverse';\n }\n if (placement === 'left') {\n placementStyle['flexDirection'] = 'row-reverse';\n }\n var wrapperStyle = _extends({\n '--editable-input-label-color': 'rgb(153, 153, 153)',\n '--editable-input-box-shadow': 'rgb(204 204 204) 0px 0px 0px 1px inset',\n '--editable-input-color': '#666',\n position: 'relative',\n alignItems: 'center',\n display: 'flex',\n fontSize: 11\n }, placementStyle, style);\n var editableStyle = _extends({\n width: '100%',\n paddingTop: 2,\n paddingBottom: 2,\n paddingLeft: 3,\n paddingRight: 3,\n fontSize: 11,\n background: 'transparent',\n boxSizing: 'border-box',\n border: 'none',\n color: 'var(--editable-input-color)',\n boxShadow: 'var(--editable-input-box-shadow)'\n }, inputStyle);\n var inputProps = _extends({\n value,\n onChange: handleChange,\n onBlur: handleBlur,\n autoComplete: 'off',\n onFocus: () => isFocus.current = true\n }, other, {\n style: editableStyle,\n onFocusCapture: e => {\n var elm = e.target;\n elm.setSelectionRange(elm.value.length, elm.value.length);\n }\n });\n return /*#__PURE__*/_jsxs(\"div\", {\n className: [prefixCls, className || ''].filter(Boolean).join(' '),\n style: wrapperStyle,\n children: [renderInput ? renderInput(inputProps, ref) : /*#__PURE__*/_jsx(\"input\", _extends({\n ref: ref\n }, inputProps)), label && /*#__PURE__*/_jsx(\"span\", {\n style: _extends({\n color: 'var(--editable-input-label-color)',\n textTransform: 'capitalize'\n }, labelStyle),\n children: label\n })]\n });\n});\nEditableInput.displayName = 'EditableInput';\nexport default EditableInput;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"prefixCls\", \"hsva\", \"placement\", \"rProps\", \"gProps\", \"bProps\", \"aProps\", \"className\", \"style\", \"onChange\"];\nimport React from 'react';\nimport EditableInput from '@uiw/react-color-editable-input';\nimport { color as handleColor, hsvaToRgba, rgbaToHsva } from '@uiw/color-convert';\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nvar EditableInputRGBA = /*#__PURE__*/React.forwardRef((props, ref) => {\n var {\n prefixCls = 'w-color-editable-input-rgba',\n hsva,\n placement = 'bottom',\n rProps = {},\n gProps = {},\n bProps = {},\n aProps = {},\n className,\n style,\n onChange\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n var rgba = hsva ? hsvaToRgba(hsva) : {};\n function handleBlur(evn) {\n var value = Number(evn.target.value);\n if (value && value > 255) {\n evn.target.value = '255';\n }\n if (value && value < 0) {\n evn.target.value = '0';\n }\n }\n var handleAlphaBlur = evn => {\n var value = Number(evn.target.value);\n if (value && value > 100) {\n evn.target.value = '100';\n }\n if (value && value < 0) {\n evn.target.value = '0';\n }\n };\n var handleChange = (value, type, evn) => {\n if (typeof value === 'number') {\n if (type === 'a') {\n if (value < 0) value = 0;\n if (value > 100) value = 100;\n onChange && onChange(handleColor(rgbaToHsva(_extends({}, rgba, {\n a: value / 100\n }))));\n }\n if (value > 255) {\n value = 255;\n evn.target.value = '255';\n }\n if (value < 0) {\n value = 0;\n evn.target.value = '0';\n }\n if (type === 'r') {\n onChange && onChange(handleColor(rgbaToHsva(_extends({}, rgba, {\n r: value\n }))));\n }\n if (type === 'g') {\n onChange && onChange(handleColor(rgbaToHsva(_extends({}, rgba, {\n g: value\n }))));\n }\n if (type === 'b') {\n onChange && onChange(handleColor(rgbaToHsva(_extends({}, rgba, {\n b: value\n }))));\n }\n }\n };\n var roundedAlpha = rgba.a ? Math.round(rgba.a * 100) / 100 : 0;\n return /*#__PURE__*/_jsxs(\"div\", _extends({\n ref: ref,\n className: [prefixCls, className || ''].filter(Boolean).join(' ')\n }, other, {\n style: _extends({\n fontSize: 11,\n display: 'flex'\n }, style),\n children: [/*#__PURE__*/_jsx(EditableInput, _extends({\n label: \"R\",\n value: rgba.r || 0,\n onBlur: handleBlur,\n placement: placement,\n onChange: (evn, val) => handleChange(val, 'r', evn)\n }, rProps, {\n style: _extends({}, rProps.style)\n })), /*#__PURE__*/_jsx(EditableInput, _extends({\n label: \"G\",\n value: rgba.g || 0,\n onBlur: handleBlur,\n placement: placement,\n onChange: (evn, val) => handleChange(val, 'g', evn)\n }, gProps, {\n style: _extends({\n marginLeft: 5\n }, rProps.style)\n })), /*#__PURE__*/_jsx(EditableInput, _extends({\n label: \"B\",\n value: rgba.b || 0,\n onBlur: handleBlur,\n placement: placement,\n onChange: (evn, val) => handleChange(val, 'b', evn)\n }, bProps, {\n style: _extends({\n marginLeft: 5\n }, bProps.style)\n })), aProps && /*#__PURE__*/_jsx(EditableInput, _extends({\n label: \"A\",\n value: parseInt(String(roundedAlpha * 100), 10),\n onBlur: handleAlphaBlur,\n placement: placement,\n onChange: (evn, val) => handleChange(val, 'a', evn)\n }, aProps, {\n style: _extends({\n marginLeft: 5\n }, aProps.style)\n }))]\n }));\n});\nEditableInputRGBA.displayName = 'EditableInputRGBA';\nexport default EditableInputRGBA;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"prefixCls\", \"className\", \"hue\", \"onChange\", \"direction\"];\nimport React from 'react';\nimport Alpha from '@uiw/react-color-alpha';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar Hue = /*#__PURE__*/React.forwardRef((props, ref) => {\n var {\n prefixCls = 'w-color-hue',\n className,\n hue = 0,\n onChange: _onChange,\n direction = 'horizontal'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n return /*#__PURE__*/_jsx(Alpha, _extends({\n ref: ref,\n className: prefixCls + \" \" + (className || '')\n }, other, {\n direction: direction,\n background: \"linear-gradient(to \" + (direction === 'horizontal' ? 'right' : 'bottom') + \", rgb(255, 0, 0) 0%, rgb(255, 255, 0) 17%, rgb(0, 255, 0) 33%, rgb(0, 255, 255) 50%, rgb(0, 0, 255) 67%, rgb(255, 0, 255) 83%, rgb(255, 0, 0) 100%)\",\n hsva: {\n h: hue,\n s: 100,\n v: 100,\n a: hue / 360\n },\n onChange: (_, interaction) => {\n _onChange && _onChange({\n h: direction === 'horizontal' ? 360 * interaction.left : 360 * interaction.top\n });\n }\n }));\n});\nHue.displayName = 'Hue';\nexport default Hue;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"prefixCls\", \"className\", \"color\", \"colors\", \"style\", \"rectProps\", \"onChange\", \"addonAfter\", \"addonBefore\", \"rectRender\"];\nimport React, { Fragment } from 'react';\nimport { hexToHsva, color as handleColor } from '@uiw/color-convert';\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nvar Swatch = /*#__PURE__*/React.forwardRef((props, ref) => {\n var {\n prefixCls = 'w-color-swatch',\n className,\n color,\n colors = [],\n style,\n rectProps = {},\n onChange,\n addonAfter,\n addonBefore,\n rectRender\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n var rectStyle = _extends({\n '--swatch-background-color': 'rgb(144, 19, 254)',\n background: 'var(--swatch-background-color)',\n height: 15,\n width: 15,\n marginRight: 5,\n marginBottom: 5,\n cursor: 'pointer',\n position: 'relative',\n outline: 'none',\n borderRadius: 2\n }, rectProps.style);\n var handleClick = (hex, evn) => {\n onChange && onChange(hexToHsva(hex), handleColor(hexToHsva(hex)), evn);\n };\n return /*#__PURE__*/_jsxs(\"div\", _extends({\n ref: ref\n }, other, {\n className: [prefixCls, className || ''].filter(Boolean).join(' '),\n style: _extends({\n display: 'flex',\n flexWrap: 'wrap',\n position: 'relative'\n }, style),\n children: [addonBefore && /*#__PURE__*/React.isValidElement(addonBefore) && addonBefore, colors && Array.isArray(colors) && colors.map((item, idx) => {\n var title = '';\n var background = '';\n if (typeof item === 'string') {\n title = item;\n background = item;\n }\n if (typeof item === 'object' && item.color) {\n title = item.title || item.color;\n background = item.color;\n }\n var checked = color && color.toLocaleLowerCase() === background.toLocaleLowerCase();\n var render = rectRender && rectRender({\n title,\n color: background,\n checked: !!checked,\n style: _extends({}, rectStyle, {\n background\n }),\n onClick: evn => handleClick(background, evn)\n });\n if (render) {\n return /*#__PURE__*/_jsx(Fragment, {\n children: render\n }, idx);\n }\n var child = rectProps.children && /*#__PURE__*/React.isValidElement(rectProps.children) ? /*#__PURE__*/React.cloneElement(rectProps.children, {\n color: background,\n checked\n }) : null;\n return /*#__PURE__*/_jsx(\"div\", _extends({\n tabIndex: 0,\n title: title,\n onClick: evn => handleClick(background, evn)\n }, rectProps, {\n children: child,\n style: _extends({}, rectStyle, {\n background\n })\n }), idx);\n }), addonAfter && /*#__PURE__*/React.isValidElement(addonAfter) && addonAfter]\n }));\n});\nSwatch.displayName = 'Swatch';\nexport default Swatch;","/**\n * Hazo UI Rich Text Editor - Type Definitions\n *\n * Type definitions for the rich text editor component including\n * attachments, variables, and editor output interfaces.\n */\n\n/**\n * Represents a file attachment stored as base64\n */\nexport interface RteAttachment {\n filename: string;\n mime_type: string;\n data: string; // base64 encoded content\n}\n\n/**\n * Represents a template variable that can be inserted into the editor\n */\nexport interface RteVariable {\n name: string;\n description: string;\n}\n\n/**\n * Output structure returned by the editor on change\n */\nexport interface RteOutput {\n html: string;\n plain_text: string;\n attachments: RteAttachment[];\n}\n\n/**\n * Props for the HazoUiRte component\n */\nexport interface HazoUiRteProps {\n // Content (all optional)\n html?: string;\n plain_text?: string;\n attachments?: RteAttachment[];\n\n // Variables for email templates\n variables?: RteVariable[];\n\n // Callback fired when content changes\n on_change?: (output: RteOutput) => void;\n\n // Customization\n placeholder?: string;\n min_height?: string;\n max_height?: string;\n disabled?: boolean;\n className?: string;\n\n // Show output viewer tabs (HTML, Plain Text, Raw HTML)\n show_output_viewer?: boolean;\n}\n\n/**\n * Font family options available in the editor\n */\nexport const FONT_FAMILIES = [\n { label: \"Arial\", value: \"Arial, sans-serif\" },\n { label: \"Verdana\", value: \"Verdana, sans-serif\" },\n { label: \"Times New Roman\", value: \"Times New Roman, serif\" },\n { label: \"Georgia\", value: \"Georgia, serif\" },\n { label: \"Courier New\", value: \"Courier New, monospace\" },\n { label: \"Trebuchet MS\", value: \"Trebuchet MS, sans-serif\" },\n] as const;\n\n/**\n * Font size configuration\n */\nexport const FONT_SIZE_CONFIG = {\n default: 16,\n min: 8,\n max: 72,\n step: 2,\n} as const;\n\n/**\n * Block type options for the paragraph dropdown\n */\nexport const BLOCK_TYPES = [\n { label: \"Paragraph\", value: \"paragraph\", icon: \"paragraph\" },\n { label: \"Heading 1\", value: \"heading-1\", icon: \"h1\" },\n { label: \"Heading 2\", value: \"heading-2\", icon: \"h2\" },\n { label: \"Heading 3\", value: \"heading-3\", icon: \"h3\" },\n { label: \"Numbered List\", value: \"ordered-list\", icon: \"list-ordered\" },\n { label: \"Bulleted List\", value: \"bullet-list\", icon: \"list\" },\n { label: \"Check List\", value: \"task-list\", icon: \"list-checks\" },\n { label: \"Code Block\", value: \"code-block\", icon: \"code\" },\n { label: \"Quote\", value: \"blockquote\", icon: \"quote\" },\n] as const;\n\n/**\n * Text alignment options\n */\nexport const TEXT_ALIGNMENTS = [\n { label: \"Left\", value: \"left\", icon: \"align-left\" },\n { label: \"Center\", value: \"center\", icon: \"align-center\" },\n { label: \"Right\", value: \"right\", icon: \"align-right\" },\n { label: \"Justify\", value: \"justify\", icon: \"align-justify\" },\n] as const;\n","/**\n * Hazo UI Rich Text Editor - Utility Functions\n *\n * Helper functions for file handling, text extraction, and other utilities.\n */\n\nimport type { RteAttachment } from \"./types\";\n\n/**\n * Convert a File object to a base64 encoded string\n */\nexport function file_to_base64(file: File): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n const result = reader.result as string;\n // Remove data URL prefix to get just the base64 content\n const base64 = result.split(\",\")[1];\n resolve(base64);\n };\n reader.onerror = reject;\n reader.readAsDataURL(file);\n });\n}\n\n/**\n * Convert a File object to an RteAttachment\n */\nexport async function file_to_attachment(file: File): Promise<RteAttachment> {\n const data = await file_to_base64(file);\n return {\n filename: file.name,\n mime_type: file.type || \"application/octet-stream\",\n data,\n };\n}\n\n/**\n * Convert a File object to a base64 data URL for inline embedding\n */\nexport function file_to_data_url(file: File): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => resolve(reader.result as string);\n reader.onerror = reject;\n reader.readAsDataURL(file);\n });\n}\n\n/**\n * Extract plain text from HTML content\n */\nexport function extract_plain_text(html: string): string {\n if (typeof document === \"undefined\") {\n // Server-side fallback - basic tag stripping\n return html\n .replace(/<[^>]*>/g, \"\")\n .replace(/&nbsp;/g, \" \")\n .replace(/&amp;/g, \"&\")\n .replace(/&lt;/g, \"<\")\n .replace(/&gt;/g, \">\")\n .replace(/&quot;/g, '\"')\n .trim();\n }\n\n // Client-side - use DOM parser\n const doc = new DOMParser().parseFromString(html, \"text/html\");\n return doc.body.textContent || \"\";\n}\n\n/**\n * Generate a unique ID for internal use\n */\nexport function generate_unique_id(): string {\n return `rte_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`;\n}\n\n/**\n * Debounce function for rate-limiting callbacks\n */\nexport function debounce<T extends (...args: unknown[]) => unknown>(\n func: T,\n wait: number\n): (...args: Parameters<T>) => void {\n let timeout_id: ReturnType<typeof setTimeout> | null = null;\n\n return (...args: Parameters<T>) => {\n if (timeout_id) {\n clearTimeout(timeout_id);\n }\n timeout_id = setTimeout(() => {\n func(...args);\n }, wait);\n };\n}\n\n/**\n * Format file size for display\n */\nexport function format_file_size(bytes: number): string {\n if (bytes === 0) return \"0 B\";\n const k = 1024;\n const sizes = [\"B\", \"KB\", \"MB\", \"GB\"];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(1))} ${sizes[i]}`;\n}\n\n/**\n * Get file extension from filename\n */\nexport function get_file_extension(filename: string): string {\n const parts = filename.split(\".\");\n return parts.length > 1 ? parts.pop()?.toLowerCase() || \"\" : \"\";\n}\n\n/**\n * Check if a file is an image based on MIME type\n */\nexport function is_image_file(mime_type: string): boolean {\n return mime_type.startsWith(\"image/\");\n}\n\n/**\n * Parse variable syntax {{variable_name}} from text\n */\nexport function parse_variables_from_text(text: string): string[] {\n const regex = /\\{\\{([^}]+)\\}\\}/g;\n const variables: string[] = [];\n let match;\n while ((match = regex.exec(text)) !== null) {\n variables.push(match[1]);\n }\n return variables;\n}\n","\"use client\";\n\n/**\n * RTE Toolbar Component\n *\n * Main toolbar container that orchestrates all formatting controls.\n */\n\nimport * as React from \"react\";\nimport { type Editor } from \"@tiptap/react\";\nimport { cn } from \"../../../lib/utils\";\nimport { TooltipProvider } from \"../../ui/tooltip\";\nimport { ToolbarButton } from \"./toolbar_button\";\nimport {\n LuUndo2,\n LuRedo2,\n LuBold,\n LuItalic,\n LuUnderline,\n LuStrikethrough,\n LuSubscript,\n LuSuperscript,\n LuLink,\n LuRemoveFormatting,\n LuAlignLeft,\n LuAlignCenter,\n LuAlignRight,\n LuAlignJustify,\n LuIndentIncrease,\n LuIndentDecrease,\n LuPalette,\n LuHighlighter,\n LuPlus,\n LuVariable,\n LuPaperclip,\n LuMinus,\n LuImage,\n LuTable,\n LuList,\n LuListOrdered,\n LuListChecks,\n LuTableRowsSplit,\n LuTableColumnsSplit,\n LuTrash2,\n LuGrid3X3,\n} from \"react-icons/lu\";\nimport { RxDividerHorizontal } from \"react-icons/rx\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../../ui/select\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"../../ui/popover\";\nimport { Input } from \"../../ui/input\";\nimport { Button } from \"../../ui/button\";\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"../../ui/command\";\nimport Sketch from \"@uiw/react-color-sketch\";\nimport {\n FONT_FAMILIES,\n FONT_SIZE_CONFIG,\n BLOCK_TYPES,\n type RteVariable,\n type RteAttachment,\n} from \"../types\";\nimport { file_to_attachment, file_to_data_url } from \"../utils\";\n\ninterface ToolbarProps {\n editor: Editor | null;\n variables?: RteVariable[];\n attachments: RteAttachment[];\n on_attachments_change: (attachments: RteAttachment[]) => void;\n disabled?: boolean;\n}\n\n/**\n * Toolbar separator component\n */\nconst ToolbarSeparator = () => (\n <div className=\"cls_rte_toolbar_separator mx-1 h-6 w-px bg-border\" />\n);\n\nexport const Toolbar: React.FC<ToolbarProps> = ({\n editor,\n variables = [],\n attachments,\n on_attachments_change,\n disabled = false,\n}) => {\n const [link_url, set_link_url] = React.useState(\"https://\");\n const [link_popover_open, set_link_popover_open] = React.useState(false);\n const [text_color_open, set_text_color_open] = React.useState(false);\n const [highlight_color_open, set_highlight_color_open] = React.useState(false);\n const [variables_menu_open, set_variables_menu_open] = React.useState(false);\n const [table_menu_open, set_table_menu_open] = React.useState(false);\n const [text_color, set_text_color] = React.useState(\"#000000\");\n const [highlight_color, set_highlight_color] = React.useState(\"#ffff00\");\n const [table_rows, set_table_rows] = React.useState(3);\n const [table_cols, set_table_cols] = React.useState(3);\n const [hovered_cell, set_hovered_cell] = React.useState<{ row: number; col: number } | null>(null);\n\n const file_input_ref = React.useRef<HTMLInputElement>(null);\n const image_input_ref = React.useRef<HTMLInputElement>(null);\n\n if (!editor) {\n return null;\n }\n\n // Get current font size\n const get_current_font_size = (): number => {\n const attrs = editor.getAttributes(\"textStyle\");\n return attrs.fontSize || FONT_SIZE_CONFIG.default;\n };\n\n // Get current font family\n const get_current_font_family = (): string => {\n const attrs = editor.getAttributes(\"textStyle\");\n return attrs.fontFamily || FONT_FAMILIES[0].value;\n };\n\n // Get current block type\n const get_current_block_type = (): string => {\n if (editor.isActive(\"heading\", { level: 1 })) return \"heading-1\";\n if (editor.isActive(\"heading\", { level: 2 })) return \"heading-2\";\n if (editor.isActive(\"heading\", { level: 3 })) return \"heading-3\";\n if (editor.isActive(\"bulletList\")) return \"bullet-list\";\n if (editor.isActive(\"orderedList\")) return \"ordered-list\";\n if (editor.isActive(\"taskList\")) return \"task-list\";\n if (editor.isActive(\"codeBlock\")) return \"code-block\";\n if (editor.isActive(\"blockquote\")) return \"blockquote\";\n return \"paragraph\";\n };\n\n // Handle block type change\n const handle_block_type_change = (value: string) => {\n switch (value) {\n case \"paragraph\":\n editor.chain().focus().setParagraph().run();\n break;\n case \"heading-1\":\n editor.chain().focus().toggleHeading({ level: 1 }).run();\n break;\n case \"heading-2\":\n editor.chain().focus().toggleHeading({ level: 2 }).run();\n break;\n case \"heading-3\":\n editor.chain().focus().toggleHeading({ level: 3 }).run();\n break;\n case \"bullet-list\":\n editor.chain().focus().toggleBulletList().run();\n break;\n case \"ordered-list\":\n editor.chain().focus().toggleOrderedList().run();\n break;\n case \"task-list\":\n editor.chain().focus().toggleTaskList().run();\n break;\n case \"code-block\":\n editor.chain().focus().toggleCodeBlock().run();\n break;\n case \"blockquote\":\n editor.chain().focus().toggleBlockquote().run();\n break;\n }\n };\n\n // Handle font family change\n const handle_font_family_change = (value: string) => {\n editor.chain().focus().setFontFamily(value).run();\n };\n\n // Handle font size change\n const handle_font_size_change = (delta: number) => {\n const current = get_current_font_size();\n const new_size = Math.min(\n FONT_SIZE_CONFIG.max,\n Math.max(FONT_SIZE_CONFIG.min, current + delta)\n );\n editor.chain().focus().setFontSizeNum(new_size).run();\n };\n\n // Handle link\n const handle_set_link = () => {\n if (link_url && link_url !== \"https://\") {\n editor.chain().focus().setLink({ href: link_url }).run();\n set_link_url(\"https://\");\n set_link_popover_open(false);\n }\n };\n\n const handle_remove_link = () => {\n editor.chain().focus().unsetLink().run();\n set_link_popover_open(false);\n };\n\n // Handle text color\n const handle_text_color_change = (color: { hex: string }) => {\n set_text_color(color.hex);\n editor.chain().focus().setColor(color.hex).run();\n };\n\n // Handle highlight color\n const handle_highlight_color_change = (color: { hex: string }) => {\n set_highlight_color(color.hex);\n editor.chain().focus().setHighlight({ color: color.hex }).run();\n };\n\n // Handle image insert\n const handle_image_insert = async (e: React.ChangeEvent<HTMLInputElement>) => {\n const file = e.target.files?.[0];\n if (file && file.type.startsWith(\"image/\")) {\n const data_url = await file_to_data_url(file);\n editor.chain().focus().setImage({ src: data_url }).run();\n }\n if (image_input_ref.current) {\n image_input_ref.current.value = \"\";\n }\n };\n\n // Handle file attach\n const handle_file_attach = async (e: React.ChangeEvent<HTMLInputElement>) => {\n const file = e.target.files?.[0];\n if (file) {\n const attachment = await file_to_attachment(file);\n on_attachments_change([...attachments, attachment]);\n }\n if (file_input_ref.current) {\n file_input_ref.current.value = \"\";\n }\n };\n\n // Handle table insert with custom size\n const handle_table_insert = (rows: number, cols: number) => {\n editor\n .chain()\n .focus()\n .insertTable({ rows, cols, withHeaderRow: true })\n .run();\n set_table_menu_open(false);\n set_table_rows(3);\n set_table_cols(3);\n set_hovered_cell(null);\n };\n\n // Handle table row/column operations\n const handle_add_row_before = () => {\n editor.chain().focus().addRowBefore().run();\n };\n\n const handle_add_row_after = () => {\n editor.chain().focus().addRowAfter().run();\n };\n\n const handle_delete_row = () => {\n editor.chain().focus().deleteRow().run();\n };\n\n const handle_add_col_before = () => {\n editor.chain().focus().addColumnBefore().run();\n };\n\n const handle_add_col_after = () => {\n editor.chain().focus().addColumnAfter().run();\n };\n\n const handle_delete_col = () => {\n editor.chain().focus().deleteColumn().run();\n };\n\n const handle_delete_table = () => {\n editor.chain().focus().deleteTable().run();\n };\n\n // Handle horizontal rule\n const handle_hr_insert = () => {\n editor.chain().focus().setHorizontalRule().run();\n };\n\n // Handle variable insert\n const handle_variable_insert = (variable_name: string) => {\n editor.chain().focus().insertVariable(variable_name).run();\n set_variables_menu_open(false);\n };\n\n return (\n <TooltipProvider delayDuration={300}>\n <div\n className={cn(\n \"cls_rte_toolbar\",\n \"flex flex-wrap items-center gap-0.5\",\n \"p-1.5 rounded-t-md\",\n \"bg-muted border-b border-border\",\n disabled && \"opacity-50 pointer-events-none\"\n )}\n >\n {/* Undo/Redo */}\n <ToolbarButton\n onClick={() => editor.chain().focus().undo().run()}\n disabled={!editor.can().undo()}\n tooltip=\"Undo\"\n >\n <LuUndo2 className=\"h-4 w-4\" />\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().redo().run()}\n disabled={!editor.can().redo()}\n tooltip=\"Redo\"\n >\n <LuRedo2 className=\"h-4 w-4\" />\n </ToolbarButton>\n\n <ToolbarSeparator />\n\n {/* Block Type Dropdown */}\n <Select value={get_current_block_type()} onValueChange={handle_block_type_change}>\n <SelectTrigger className=\"h-8 w-[130px] text-xs\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {BLOCK_TYPES.map((type) => (\n <SelectItem key={type.value} value={type.value} className=\"text-xs\">\n {type.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n\n <ToolbarSeparator />\n\n {/* Font Family */}\n <Select value={get_current_font_family()} onValueChange={handle_font_family_change}>\n <SelectTrigger className=\"h-8 w-[120px] text-xs\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {FONT_FAMILIES.map((font) => (\n <SelectItem\n key={font.value}\n value={font.value}\n className=\"text-xs\"\n style={{ fontFamily: font.value }}\n >\n {font.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n\n {/* Font Size */}\n <div className=\"flex items-center\">\n <ToolbarButton\n onClick={() => handle_font_size_change(-FONT_SIZE_CONFIG.step)}\n tooltip=\"Decrease font size\"\n >\n <LuMinus className=\"h-3 w-3\" />\n </ToolbarButton>\n <span className=\"w-8 text-center text-xs tabular-nums\">\n {get_current_font_size()}\n </span>\n <ToolbarButton\n onClick={() => handle_font_size_change(FONT_SIZE_CONFIG.step)}\n tooltip=\"Increase font size\"\n >\n <LuPlus className=\"h-3 w-3\" />\n </ToolbarButton>\n </div>\n\n <ToolbarSeparator />\n\n {/* Text Formatting */}\n <ToolbarButton\n onClick={() => editor.chain().focus().toggleBold().run()}\n is_active={editor.isActive(\"bold\")}\n tooltip=\"Bold\"\n >\n <LuBold className=\"h-4 w-4\" />\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().toggleItalic().run()}\n is_active={editor.isActive(\"italic\")}\n tooltip=\"Italic\"\n >\n <LuItalic className=\"h-4 w-4\" />\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().toggleUnderline().run()}\n is_active={editor.isActive(\"underline\")}\n tooltip=\"Underline\"\n >\n <LuUnderline className=\"h-4 w-4\" />\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().toggleStrike().run()}\n is_active={editor.isActive(\"strike\")}\n tooltip=\"Strikethrough\"\n >\n <LuStrikethrough className=\"h-4 w-4\" />\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().toggleSubscript().run()}\n is_active={editor.isActive(\"subscript\")}\n tooltip=\"Subscript\"\n >\n <LuSubscript className=\"h-4 w-4\" />\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().toggleSuperscript().run()}\n is_active={editor.isActive(\"superscript\")}\n tooltip=\"Superscript\"\n >\n <LuSuperscript className=\"h-4 w-4\" />\n </ToolbarButton>\n\n <ToolbarSeparator />\n\n {/* Link */}\n <Popover open={link_popover_open} onOpenChange={set_link_popover_open}>\n <PopoverTrigger asChild>\n <ToolbarButton is_active={editor.isActive(\"link\")} tooltip=\"Link\">\n <LuLink className=\"h-4 w-4\" />\n </ToolbarButton>\n </PopoverTrigger>\n <PopoverContent className=\"w-80 p-3\">\n <div className=\"flex flex-col gap-2\">\n <Input\n value={link_url}\n onChange={(e) => set_link_url(e.target.value)}\n placeholder=\"https://example.com\"\n className=\"h-8 text-sm\"\n />\n <div className=\"flex gap-2\">\n <Button size=\"sm\" onClick={handle_set_link} className=\"flex-1\">\n {editor.isActive(\"link\") ? \"Update\" : \"Add\"} Link\n </Button>\n {editor.isActive(\"link\") && (\n <Button\n size=\"sm\"\n variant=\"destructive\"\n onClick={handle_remove_link}\n >\n Remove\n </Button>\n )}\n </div>\n </div>\n </PopoverContent>\n </Popover>\n\n {/* Clear Formatting */}\n <ToolbarButton\n onClick={() => editor.chain().focus().unsetAllMarks().clearNodes().run()}\n tooltip=\"Clear formatting\"\n >\n <LuRemoveFormatting className=\"h-4 w-4\" />\n </ToolbarButton>\n\n <ToolbarSeparator />\n\n {/* Text Color */}\n <Popover open={text_color_open} onOpenChange={set_text_color_open}>\n <PopoverTrigger asChild>\n <ToolbarButton tooltip=\"Text color\">\n <div className=\"flex flex-col items-center\">\n <LuPalette className=\"h-4 w-4\" />\n <div\n className=\"h-0.5 w-4 mt-0.5 rounded-full\"\n style={{ backgroundColor: text_color }}\n />\n </div>\n </ToolbarButton>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Sketch\n color={text_color}\n onChange={handle_text_color_change}\n presetColors={[\n \"#000000\", \"#434343\", \"#666666\", \"#999999\", \"#cccccc\", \"#ffffff\",\n \"#ff0000\", \"#ff9900\", \"#ffff00\", \"#00ff00\", \"#00ffff\", \"#0000ff\",\n \"#9900ff\", \"#ff00ff\", \"#f4cccc\", \"#fce5cd\", \"#fff2cc\", \"#d9ead3\",\n ]}\n />\n </PopoverContent>\n </Popover>\n\n {/* Highlight Color */}\n <Popover open={highlight_color_open} onOpenChange={set_highlight_color_open}>\n <PopoverTrigger asChild>\n <ToolbarButton tooltip=\"Highlight color\">\n <div className=\"flex flex-col items-center\">\n <LuHighlighter className=\"h-4 w-4\" />\n <div\n className=\"h-0.5 w-4 mt-0.5 rounded-full\"\n style={{ backgroundColor: highlight_color }}\n />\n </div>\n </ToolbarButton>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Sketch\n color={highlight_color}\n onChange={handle_highlight_color_change}\n presetColors={[\n \"#ffff00\", \"#00ff00\", \"#00ffff\", \"#ff00ff\", \"#ff0000\", \"#0000ff\",\n \"#fff2cc\", \"#d9ead3\", \"#cfe2f3\", \"#ead1dc\", \"#fce5cd\", \"#d0e0e3\",\n ]}\n />\n </PopoverContent>\n </Popover>\n\n <ToolbarSeparator />\n\n {/* Alignment */}\n <ToolbarButton\n onClick={() => editor.chain().focus().setTextAlign(\"left\").run()}\n is_active={editor.isActive({ textAlign: \"left\" })}\n tooltip=\"Align left\"\n >\n <LuAlignLeft className=\"h-4 w-4\" />\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().setTextAlign(\"center\").run()}\n is_active={editor.isActive({ textAlign: \"center\" })}\n tooltip=\"Align center\"\n >\n <LuAlignCenter className=\"h-4 w-4\" />\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().setTextAlign(\"right\").run()}\n is_active={editor.isActive({ textAlign: \"right\" })}\n tooltip=\"Align right\"\n >\n <LuAlignRight className=\"h-4 w-4\" />\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().setTextAlign(\"justify\").run()}\n is_active={editor.isActive({ textAlign: \"justify\" })}\n tooltip=\"Justify\"\n >\n <LuAlignJustify className=\"h-4 w-4\" />\n </ToolbarButton>\n\n <ToolbarSeparator />\n\n {/* List Types */}\n <ToolbarButton\n onClick={() => editor.chain().focus().toggleBulletList().run()}\n is_active={editor.isActive(\"bulletList\")}\n tooltip=\"Bullet list\"\n >\n <LuList className=\"h-4 w-4\" />\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().toggleOrderedList().run()}\n is_active={editor.isActive(\"orderedList\")}\n tooltip=\"Numbered list\"\n >\n <LuListOrdered className=\"h-4 w-4\" />\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().toggleTaskList().run()}\n is_active={editor.isActive(\"taskList\")}\n tooltip=\"Checklist\"\n >\n <LuListChecks className=\"h-4 w-4\" />\n </ToolbarButton>\n\n <ToolbarSeparator />\n\n {/* Indent/Outdent */}\n <ToolbarButton\n onClick={() => {\n if (editor.isActive(\"listItem\")) {\n editor.chain().focus().liftListItem(\"listItem\").run();\n } else if (editor.isActive(\"taskItem\")) {\n editor.chain().focus().liftListItem(\"taskItem\").run();\n }\n }}\n disabled={!editor.can().liftListItem(\"listItem\") && !editor.can().liftListItem(\"taskItem\")}\n tooltip=\"Decrease indent\"\n >\n <LuIndentDecrease className=\"h-4 w-4\" />\n </ToolbarButton>\n <ToolbarButton\n onClick={() => {\n if (editor.isActive(\"listItem\")) {\n editor.chain().focus().sinkListItem(\"listItem\").run();\n } else if (editor.isActive(\"taskItem\")) {\n editor.chain().focus().sinkListItem(\"taskItem\").run();\n }\n }}\n disabled={!editor.can().sinkListItem(\"listItem\") && !editor.can().sinkListItem(\"taskItem\")}\n tooltip=\"Increase indent\"\n >\n <LuIndentIncrease className=\"h-4 w-4\" />\n </ToolbarButton>\n\n <ToolbarSeparator />\n\n {/* Horizontal Rule */}\n <ToolbarButton\n onClick={handle_hr_insert}\n tooltip=\"Horizontal rule\"\n >\n <RxDividerHorizontal className=\"h-4 w-4\" />\n </ToolbarButton>\n\n {/* Image */}\n <ToolbarButton\n onClick={() => image_input_ref.current?.click()}\n tooltip=\"Insert image\"\n >\n <LuImage className=\"h-4 w-4\" />\n </ToolbarButton>\n\n {/* Table Menu */}\n <Popover open={table_menu_open} onOpenChange={set_table_menu_open}>\n <PopoverTrigger asChild>\n <ToolbarButton\n is_active={editor.isActive(\"table\")}\n tooltip=\"Table\"\n >\n <LuTable className=\"h-4 w-4\" />\n </ToolbarButton>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-3\" align=\"start\">\n {editor.isActive(\"table\") ? (\n // Table editing controls when inside a table\n <div className=\"flex flex-col gap-2\">\n <div className=\"text-xs font-medium mb-1\">Table Operations</div>\n <div className=\"grid grid-cols-2 gap-1\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"justify-start text-xs h-7\"\n onClick={handle_add_row_before}\n >\n <LuTableRowsSplit className=\"h-3 w-3 mr-1\" />\n Add row above\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"justify-start text-xs h-7\"\n onClick={handle_add_row_after}\n >\n <LuTableRowsSplit className=\"h-3 w-3 mr-1\" />\n Add row below\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"justify-start text-xs h-7\"\n onClick={handle_add_col_before}\n >\n <LuTableColumnsSplit className=\"h-3 w-3 mr-1\" />\n Add col left\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"justify-start text-xs h-7\"\n onClick={handle_add_col_after}\n >\n <LuTableColumnsSplit className=\"h-3 w-3 mr-1\" />\n Add col right\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"justify-start text-xs h-7 text-destructive hover:text-destructive\"\n onClick={handle_delete_row}\n >\n <LuTrash2 className=\"h-3 w-3 mr-1\" />\n Delete row\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"justify-start text-xs h-7 text-destructive hover:text-destructive\"\n onClick={handle_delete_col}\n >\n <LuTrash2 className=\"h-3 w-3 mr-1\" />\n Delete col\n </Button>\n </div>\n <Button\n variant=\"destructive\"\n size=\"sm\"\n className=\"justify-center text-xs h-7 mt-1\"\n onClick={handle_delete_table}\n >\n <LuTrash2 className=\"h-3 w-3 mr-1\" />\n Delete table\n </Button>\n </div>\n ) : (\n // Table size picker when not in a table\n <div className=\"flex flex-col gap-2\">\n <div className=\"text-xs font-medium mb-1\">Insert Table</div>\n {/* Grid size picker */}\n <div className=\"grid gap-0.5\">\n {Array.from({ length: 6 }).map((_, row_idx) => (\n <div key={row_idx} className=\"flex gap-0.5\">\n {Array.from({ length: 6 }).map((_, col_idx) => (\n <div\n key={col_idx}\n className={cn(\n \"w-5 h-5 border rounded-sm cursor-pointer transition-colors\",\n hovered_cell && row_idx < hovered_cell.row && col_idx < hovered_cell.col\n ? \"bg-primary border-primary\"\n : \"border-border hover:border-primary/50\"\n )}\n onMouseEnter={() => set_hovered_cell({ row: row_idx + 1, col: col_idx + 1 })}\n onMouseLeave={() => set_hovered_cell(null)}\n onClick={() => handle_table_insert(row_idx + 1, col_idx + 1)}\n />\n ))}\n </div>\n ))}\n </div>\n <div className=\"text-xs text-center text-muted-foreground\">\n {hovered_cell ? `${hovered_cell.col} x ${hovered_cell.row}` : \"Select size\"}\n </div>\n <div className=\"border-t pt-2 mt-1\">\n <div className=\"text-xs text-muted-foreground mb-2\">Custom size</div>\n <div className=\"flex items-center gap-2\">\n <Input\n type=\"number\"\n min={1}\n max={20}\n value={table_cols}\n onChange={(e) => set_table_cols(Math.max(1, Math.min(20, parseInt(e.target.value) || 1)))}\n className=\"h-7 w-14 text-xs\"\n />\n <span className=\"text-xs\">x</span>\n <Input\n type=\"number\"\n min={1}\n max={20}\n value={table_rows}\n onChange={(e) => set_table_rows(Math.max(1, Math.min(20, parseInt(e.target.value) || 1)))}\n className=\"h-7 w-14 text-xs\"\n />\n <Button\n size=\"sm\"\n className=\"h-7 text-xs\"\n onClick={() => handle_table_insert(table_rows, table_cols)}\n >\n <LuGrid3X3 className=\"h-3 w-3 mr-1\" />\n Insert\n </Button>\n </div>\n </div>\n </div>\n )}\n </PopoverContent>\n </Popover>\n\n <ToolbarSeparator />\n\n {/* Variables Menu */}\n {variables.length > 0 && (\n <Popover open={variables_menu_open} onOpenChange={set_variables_menu_open}>\n <PopoverTrigger asChild>\n <ToolbarButton tooltip=\"Insert variable\">\n <LuVariable className=\"h-4 w-4\" />\n </ToolbarButton>\n </PopoverTrigger>\n <PopoverContent className=\"w-64 p-0\" align=\"start\">\n <Command>\n <CommandInput placeholder=\"Search variables...\" className=\"h-8 text-xs\" />\n <CommandList>\n <CommandEmpty>No variables found.</CommandEmpty>\n <CommandGroup>\n {variables.map((variable) => (\n <CommandItem\n key={variable.name}\n value={variable.name}\n onSelect={() => handle_variable_insert(variable.name)}\n className=\"text-xs\"\n >\n <div className=\"flex flex-col\">\n <span className=\"font-medium\">{`{{${variable.name}}}`}</span>\n {variable.description && (\n <span className=\"text-muted-foreground text-[10px]\">\n {variable.description}\n </span>\n )}\n </div>\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n )}\n\n {/* File Attach */}\n <ToolbarButton\n onClick={() => file_input_ref.current?.click()}\n tooltip=\"Attach file\"\n >\n <LuPaperclip className=\"h-4 w-4\" />\n </ToolbarButton>\n\n {/* Hidden file inputs */}\n <input\n ref={file_input_ref}\n type=\"file\"\n className=\"hidden\"\n onChange={handle_file_attach}\n />\n <input\n ref={image_input_ref}\n type=\"file\"\n accept=\"image/*\"\n className=\"hidden\"\n onChange={handle_image_insert}\n />\n </div>\n </TooltipProvider>\n );\n};\n","\"use client\";\n\n/**\n * Attachments List Component\n *\n * Displays attached files with preview and remove functionality.\n */\n\nimport * as React from \"react\";\nimport { cn } from \"../../../lib/utils\";\nimport { Button } from \"../../ui/button\";\nimport { LuX, LuFile, LuImage, LuFileText, LuFileCode } from \"react-icons/lu\";\nimport type { RteAttachment } from \"../types\";\nimport { format_file_size, get_file_extension, is_image_file } from \"../utils\";\n\ninterface AttachmentsListProps {\n attachments: RteAttachment[];\n on_remove: (index: number) => void;\n disabled?: boolean;\n}\n\n/**\n * Get icon for file type\n */\nconst get_file_icon = (mime_type: string, filename: string) => {\n if (is_image_file(mime_type)) {\n return <LuImage className=\"h-4 w-4\" />;\n }\n\n const ext = get_file_extension(filename);\n if ([\"txt\", \"md\", \"doc\", \"docx\", \"pdf\"].includes(ext)) {\n return <LuFileText className=\"h-4 w-4\" />;\n }\n if ([\"js\", \"ts\", \"jsx\", \"tsx\", \"json\", \"html\", \"css\"].includes(ext)) {\n return <LuFileCode className=\"h-4 w-4\" />;\n }\n\n return <LuFile className=\"h-4 w-4\" />;\n};\n\n/**\n * Calculate base64 file size in bytes\n */\nconst get_base64_size = (base64: string): number => {\n // Remove padding and calculate\n const padding = (base64.match(/=+$/) || [\"\"])[0].length;\n return Math.floor((base64.length * 3) / 4) - padding;\n};\n\nexport const AttachmentsList: React.FC<AttachmentsListProps> = ({\n attachments,\n on_remove,\n disabled = false,\n}) => {\n if (attachments.length === 0) {\n return null;\n }\n\n return (\n <div\n className={cn(\n \"cls_rte_attachments\",\n \"flex flex-wrap gap-2 p-2\",\n \"border-t border-border bg-muted/50 rounded-b-md\"\n )}\n >\n {attachments.map((attachment, index) => {\n const size = get_base64_size(attachment.data);\n const is_image = is_image_file(attachment.mime_type);\n\n return (\n <div\n key={`${attachment.filename}-${index}`}\n className={cn(\n \"cls_rte_attachment_item\",\n \"flex items-center gap-2\",\n \"px-2 py-1.5 rounded-md\",\n \"bg-background border border-border\",\n \"text-xs\"\n )}\n >\n {/* Preview thumbnail for images */}\n {is_image ? (\n <img\n src={`data:${attachment.mime_type};base64,${attachment.data}`}\n alt={attachment.filename}\n className=\"h-8 w-8 rounded object-cover\"\n />\n ) : (\n <div className=\"flex h-8 w-8 items-center justify-center rounded bg-muted\">\n {get_file_icon(attachment.mime_type, attachment.filename)}\n </div>\n )}\n\n {/* File info */}\n <div className=\"flex flex-col min-w-0\">\n <span className=\"truncate max-w-[120px] font-medium\">\n {attachment.filename}\n </span>\n <span className=\"text-muted-foreground text-[10px]\">\n {format_file_size(size)}\n </span>\n </div>\n\n {/* Remove button */}\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-5 w-5 ml-1\"\n onClick={() => on_remove(index)}\n disabled={disabled}\n >\n <LuX className=\"h-3 w-3\" />\n </Button>\n </div>\n );\n })}\n </div>\n );\n};\n","/**\n * Font Size Extension for Tiptap\n *\n * Custom extension that adds font-size support through the TextStyle mark.\n * Uses setFontSizeNum to avoid conflicts with other font size extensions.\n */\n\nimport { Extension } from \"@tiptap/core\";\nimport \"@tiptap/extension-text-style\";\n\nexport interface FontSizeOptions {\n types: string[];\n default_size: number;\n min_size: number;\n max_size: number;\n step: number;\n}\n\ndeclare module \"@tiptap/core\" {\n interface Commands<ReturnType> {\n fontSizeCustom: {\n /**\n * Set the font size (numeric)\n */\n setFontSizeNum: (size: number) => ReturnType;\n /**\n * Unset the font size\n */\n unsetFontSizeNum: () => ReturnType;\n };\n }\n}\n\nexport const FontSizeExtension = Extension.create<FontSizeOptions>({\n name: \"fontSizeCustom\",\n\n addOptions() {\n return {\n types: [\"textStyle\"],\n default_size: 16,\n min_size: 8,\n max_size: 72,\n step: 2,\n };\n },\n\n addGlobalAttributes() {\n return [\n {\n types: this.options.types,\n attributes: {\n fontSize: {\n default: null,\n parseHTML: (element) => {\n const size = element.style.fontSize?.replace(/['\"px]/g, \"\");\n return size ? parseInt(size, 10) : null;\n },\n renderHTML: (attributes) => {\n if (!attributes.fontSize) {\n return {};\n }\n return {\n style: `font-size: ${attributes.fontSize}px`,\n };\n },\n },\n },\n },\n ];\n },\n\n addCommands() {\n return {\n setFontSizeNum:\n (size: number) =>\n ({ chain }) => {\n const clampedSize = Math.min(\n this.options.max_size,\n Math.max(this.options.min_size, size)\n );\n return chain().setMark(\"textStyle\", { fontSize: clampedSize }).run();\n },\n unsetFontSizeNum:\n () =>\n ({ chain }) => {\n return chain()\n .setMark(\"textStyle\", { fontSize: null })\n .removeEmptyTextStyle()\n .run();\n },\n };\n },\n});\n","/**\n * Variable Extension for Tiptap\n *\n * Custom atomic node extension for template variables.\n * Variables are rendered as non-editable pills and serialize to {{variable_name}}.\n */\n\nimport { Node, mergeAttributes } from \"@tiptap/core\";\nimport { ReactNodeViewRenderer, NodeViewWrapper, type NodeViewProps } from \"@tiptap/react\";\nimport * as React from \"react\";\nimport { cn } from \"../../../lib/utils\";\n\n/**\n * React component for rendering variable pills in the editor\n */\nconst VariablePill: React.FC<NodeViewProps> = ({ node, selected }) => {\n return (\n <NodeViewWrapper as=\"span\" className=\"inline\">\n <span\n className={cn(\n \"cls_rte_variable_pill\",\n \"inline-flex items-center\",\n \"px-2 py-0.5 mx-0.5\",\n \"rounded-full\",\n \"text-sm font-medium\",\n \"bg-primary/10 text-primary\",\n \"border border-primary/20\",\n \"cursor-default select-none\",\n selected && \"ring-2 ring-primary ring-offset-1\"\n )}\n contentEditable={false}\n data-variable={node.attrs.name}\n >\n {`{{${node.attrs.name}}}`}\n </span>\n </NodeViewWrapper>\n );\n};\n\ndeclare module \"@tiptap/core\" {\n interface Commands<ReturnType> {\n variable: {\n /**\n * Insert a variable node\n */\n insertVariable: (name: string) => ReturnType;\n };\n }\n}\n\nexport const VariableExtension = Node.create({\n name: \"variable\",\n\n group: \"inline\",\n\n inline: true,\n\n // Atomic means the node cannot be split or merged\n atom: true,\n\n // Draggable in the editor\n draggable: true,\n\n // Selectable as a whole unit\n selectable: true,\n\n addAttributes() {\n return {\n name: {\n default: null,\n parseHTML: (element) => element.getAttribute(\"data-variable\"),\n renderHTML: (attributes) => ({\n \"data-variable\": attributes.name,\n }),\n },\n };\n },\n\n parseHTML() {\n return [\n {\n tag: \"span[data-variable]\",\n },\n ];\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\n \"span\",\n mergeAttributes(HTMLAttributes, {\n class: \"cls_rte_variable_pill\",\n contenteditable: \"false\",\n }),\n `{{${HTMLAttributes[\"data-variable\"]}}}`,\n ];\n },\n\n renderText({ node }) {\n return `{{${node.attrs.name}}}`;\n },\n\n addNodeView() {\n return ReactNodeViewRenderer(VariablePill);\n },\n\n addCommands() {\n return {\n insertVariable:\n (name: string) =>\n ({ commands }) => {\n return commands.insertContent({\n type: this.name,\n attrs: { name },\n });\n },\n };\n },\n\n // Keyboard behavior - delete entire node on backspace\n addKeyboardShortcuts() {\n return {\n Backspace: () =>\n this.editor.commands.command(({ tr, state }) => {\n let is_variable = false;\n const { selection } = state;\n const { empty, anchor } = selection;\n\n if (!empty) {\n return false;\n }\n\n state.doc.nodesBetween(anchor - 1, anchor, (node, pos) => {\n if (node.type.name === this.name) {\n is_variable = true;\n tr.insertText(\"\", pos, pos + node.nodeSize);\n return false;\n }\n });\n\n return is_variable;\n }),\n };\n },\n});\n","\"use client\";\n\n/**\n * Tabs component based on Radix UI\n * Provides tabbed interface for content switching\n */\n\nimport * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport { cn } from \"../../lib/utils\";\n\nconst Tabs = TabsPrimitive.Root;\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n \"inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground\",\n className\n )}\n {...props}\n />\n));\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow\",\n className\n )}\n {...props}\n />\n));\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n \"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n className\n )}\n {...props}\n />\n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n","\"use client\";\n\n/**\n * Hazo UI Rich Text Editor Component\n *\n * A comprehensive rich text editor for email template generation with\n * variable insertion support, file attachments, and full formatting controls.\n */\n\nimport * as React from \"react\";\nimport { useEditor, EditorContent } from \"@tiptap/react\";\nimport StarterKit from \"@tiptap/starter-kit\";\nimport { TextStyle } from \"@tiptap/extension-text-style\";\nimport FontFamily from \"@tiptap/extension-font-family\";\nimport Underline from \"@tiptap/extension-underline\";\nimport Subscript from \"@tiptap/extension-subscript\";\nimport Superscript from \"@tiptap/extension-superscript\";\nimport Link from \"@tiptap/extension-link\";\nimport TextAlign from \"@tiptap/extension-text-align\";\nimport Highlight from \"@tiptap/extension-highlight\";\nimport Color from \"@tiptap/extension-color\";\nimport Image from \"@tiptap/extension-image\";\nimport Placeholder from \"@tiptap/extension-placeholder\";\nimport HorizontalRule from \"@tiptap/extension-horizontal-rule\";\nimport { Table } from \"@tiptap/extension-table\";\nimport TableRow from \"@tiptap/extension-table-row\";\nimport TableCell from \"@tiptap/extension-table-cell\";\nimport TableHeader from \"@tiptap/extension-table-header\";\nimport TaskList from \"@tiptap/extension-task-list\";\nimport TaskItem from \"@tiptap/extension-task-item\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Toolbar } from \"./toolbar/toolbar\";\nimport { AttachmentsList } from \"./attachments/attachments_list\";\nimport { FontSizeExtension } from \"./extensions/font_size_extension\";\nimport { VariableExtension } from \"./extensions/variable_extension\";\nimport { Tabs, TabsList, TabsTrigger } from \"../ui/tabs\";\nimport type {\n HazoUiRteProps,\n RteOutput,\n RteAttachment,\n RteVariable,\n} from \"./types\";\n\n// Re-export types for external use\nexport type { HazoUiRteProps, RteOutput, RteAttachment, RteVariable };\n\n/**\n * Debounce utility for rate-limiting callbacks\n */\nfunction debounce_fn<T extends RteOutput>(\n func: (output: T) => void,\n wait: number\n): (output: T) => void {\n let timeout_id: ReturnType<typeof setTimeout> | null = null;\n\n return (output: T) => {\n if (timeout_id) {\n clearTimeout(timeout_id);\n }\n timeout_id = setTimeout(() => {\n func(output);\n }, wait);\n };\n}\n\n/**\n * HazoUiRte - Rich Text Editor Component\n */\nexport const HazoUiRte: React.FC<HazoUiRteProps> = ({\n html = \"\",\n attachments: initial_attachments = [],\n variables = [],\n on_change,\n placeholder = \"Start typing...\",\n min_height = \"200px\",\n max_height = \"400px\",\n disabled = false,\n className,\n show_output_viewer = false,\n}) => {\n const [attachments, set_attachments] = React.useState<RteAttachment[]>(\n initial_attachments\n );\n const [active_tab, set_active_tab] = React.useState<\"html\" | \"plain_text\" | \"raw_html\">(\"html\");\n\n // Determine if toolbar should be disabled (view-only modes)\n const is_view_only = active_tab !== \"html\";\n\n // Store latest attachments in a ref for the debounced callback\n const attachments_ref = React.useRef(attachments);\n attachments_ref.current = attachments;\n\n // Create debounced change handler\n const debounced_on_change = React.useMemo(\n () =>\n debounce_fn<RteOutput>((output: RteOutput) => {\n if (on_change) {\n on_change(output);\n }\n }, 300),\n [on_change]\n );\n\n // Initialize the editor\n const editor = useEditor({\n extensions: [\n StarterKit.configure({\n heading: {\n levels: [1, 2, 3],\n },\n }),\n TextStyle,\n FontFamily,\n FontSizeExtension,\n Underline,\n Subscript,\n Superscript,\n Link.configure({\n openOnClick: false,\n HTMLAttributes: {\n class: \"cls_rte_link text-primary underline cursor-pointer\",\n },\n }),\n TextAlign.configure({\n types: [\"heading\", \"paragraph\"],\n }),\n Highlight.configure({\n multicolor: true,\n }),\n Color,\n Image.configure({\n inline: true,\n allowBase64: true,\n HTMLAttributes: {\n class: \"cls_rte_image max-w-full h-auto rounded\",\n },\n }),\n Placeholder.configure({\n placeholder,\n }),\n HorizontalRule,\n Table.configure({\n resizable: true,\n HTMLAttributes: {\n class: \"cls_rte_table border-collapse w-full\",\n },\n }),\n TableRow,\n TableCell.configure({\n HTMLAttributes: {\n class: \"border border-border p-2\",\n },\n }),\n TableHeader.configure({\n HTMLAttributes: {\n class: \"border border-border p-2 bg-muted font-semibold\",\n },\n }),\n TaskList.configure({\n HTMLAttributes: {\n class: \"cls_rte_task_list list-none pl-0\",\n },\n }),\n TaskItem.configure({\n nested: true,\n HTMLAttributes: {\n class: \"cls_rte_task_item flex items-start gap-2\",\n },\n }),\n VariableExtension,\n ],\n content: html,\n editable: !disabled,\n editorProps: {\n attributes: {\n class: cn(\n \"cls_rte_editor\",\n \"prose prose-sm dark:prose-invert max-w-none\",\n \"p-4 focus:outline-none\",\n \"min-h-[inherit] overflow-auto\"\n ),\n style: `min-height: ${min_height}; max-height: ${max_height}`,\n },\n },\n onUpdate: ({ editor }) => {\n const output: RteOutput = {\n html: editor.getHTML(),\n plain_text: editor.getText(),\n attachments: attachments_ref.current,\n };\n debounced_on_change(output);\n },\n });\n\n // Update editor content when html prop changes externally\n React.useEffect(() => {\n if (editor && html !== undefined) {\n const current_html = editor.getHTML();\n // Only update if content is actually different to avoid cursor jumps\n if (html !== current_html && !editor.isFocused) {\n editor.commands.setContent(html, { emitUpdate: false });\n }\n }\n }, [html, editor]);\n\n // Update editor editable state when disabled changes\n React.useEffect(() => {\n if (editor) {\n editor.setEditable(!disabled);\n }\n }, [disabled, editor]);\n\n // Track if attachments were set from props to avoid circular updates\n const attachments_from_props_ref = React.useRef(false);\n const prev_initial_attachments_ref = React.useRef(initial_attachments);\n\n // Sync attachments with initial prop (only if changed externally)\n React.useEffect(() => {\n // Only update if initial_attachments actually changed (not from our own on_change)\n if (JSON.stringify(initial_attachments) !== JSON.stringify(prev_initial_attachments_ref.current)) {\n prev_initial_attachments_ref.current = initial_attachments;\n attachments_from_props_ref.current = true;\n set_attachments(initial_attachments);\n }\n }, [initial_attachments]);\n\n // Notify parent when attachments change (but not if set from props)\n React.useEffect(() => {\n if (attachments_from_props_ref.current) {\n attachments_from_props_ref.current = false;\n return;\n }\n if (editor && on_change) {\n const output: RteOutput = {\n html: editor.getHTML(),\n plain_text: editor.getText(),\n attachments,\n };\n on_change(output);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [attachments]);\n\n // Handle attachment removal\n const handle_remove_attachment = (index: number) => {\n set_attachments((prev) => prev.filter((_, i) => i !== index));\n };\n\n // Handle attachments change from toolbar\n const handle_attachments_change = (new_attachments: RteAttachment[]) => {\n set_attachments(new_attachments);\n };\n\n // Format HTML with indentation for raw view\n const format_html = (html_str: string): string => {\n let formatted = \"\";\n let indent = 0;\n const tags = html_str.split(/(<[^>]+>)/g).filter(Boolean);\n\n for (const tag of tags) {\n if (tag.startsWith(\"</\")) {\n indent = Math.max(0, indent - 1);\n formatted += \" \".repeat(indent) + tag + \"\\n\";\n } else if (tag.startsWith(\"<\") && !tag.startsWith(\"<!\") && !tag.endsWith(\"/>\")) {\n formatted += \" \".repeat(indent) + tag + \"\\n\";\n if (!tag.includes(\"br\") && !tag.includes(\"hr\") && !tag.includes(\"img\")) {\n indent++;\n }\n } else if (tag.startsWith(\"<\")) {\n formatted += \" \".repeat(indent) + tag + \"\\n\";\n } else if (tag.trim()) {\n formatted += \" \".repeat(indent) + tag.trim() + \"\\n\";\n }\n }\n return formatted.trim();\n };\n\n return (\n <div\n className={cn(\n \"cls_rte_container\",\n \"rounded-md border border-input bg-background\",\n \"focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2\",\n disabled && \"opacity-50 cursor-not-allowed\",\n className\n )}\n >\n {/* Toolbar - always visible, disabled in view-only modes */}\n <Toolbar\n editor={editor}\n variables={variables}\n attachments={attachments}\n on_attachments_change={handle_attachments_change}\n disabled={disabled || is_view_only}\n />\n\n {/* View Mode Tabs */}\n {show_output_viewer && editor && (\n <div className=\"cls_rte_tabs border-b border-border px-2 pt-2\">\n <Tabs value={active_tab} onValueChange={(v) => set_active_tab(v as typeof active_tab)}>\n <TabsList className=\"h-9\">\n <TabsTrigger value=\"html\" className=\"text-sm\">HTML</TabsTrigger>\n <TabsTrigger value=\"plain_text\" className=\"text-sm\">Plain Text</TabsTrigger>\n <TabsTrigger value=\"raw_html\" className=\"text-sm\">Raw HTML</TabsTrigger>\n </TabsList>\n </Tabs>\n </div>\n )}\n\n {/* Content Area */}\n <div style={{ minHeight: min_height, maxHeight: max_height }} className=\"overflow-auto\">\n {/* HTML Edit Mode */}\n {active_tab === \"html\" && (\n <EditorContent\n editor={editor}\n className={cn(\n \"cls_rte_content\",\n disabled && \"pointer-events-none\"\n )}\n />\n )}\n\n {/* Plain Text View */}\n {active_tab === \"plain_text\" && (\n <pre className=\"cls_rte_plain_text p-4 text-sm whitespace-pre-wrap font-mono h-full\">\n {editor?.getText() || \"(empty)\"}\n </pre>\n )}\n\n {/* Raw HTML View */}\n {active_tab === \"raw_html\" && (\n <pre className=\"cls_rte_raw_html p-4 text-xs whitespace-pre-wrap font-mono text-muted-foreground h-full\">\n {format_html(editor?.getHTML() || \"\") || \"(empty)\"}\n </pre>\n )}\n </div>\n\n {/* Attachments List */}\n <AttachmentsList\n attachments={attachments}\n on_remove={handle_remove_attachment}\n disabled={disabled}\n />\n </div>\n );\n};\n\nHazoUiRte.displayName = \"HazoUiRte\";\n"]}