braid-ui 1.0.97 → 1.0.99
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +44 -327
- package/components.json +20 -0
- package/eslint.config.js +29 -0
- package/index.html +24 -0
- package/package.json +55 -115
- package/postcss.config.js +6 -0
- package/public/favicon.ico +0 -0
- package/public/placeholder.svg +1 -0
- package/public/robots.txt +14 -0
- package/src/App.css +42 -0
- package/src/App.tsx +94 -0
- package/src/components/MainLayout.tsx +15 -0
- package/src/components/alerts/AlertDocuments.tsx +320 -0
- package/src/components/alerts/AlertNotes.tsx +185 -0
- package/src/components/alerts/AlertTimeline.tsx +79 -0
- package/src/components/alerts/ContextSection.tsx +155 -0
- package/src/components/app-sidebar.tsx +341 -0
- package/src/components/form-sections/ACHBankCard.tsx +78 -0
- package/src/components/form-sections/ACHBasicInfoCard.tsx +100 -0
- package/src/components/form-sections/ACHTransferSection.tsx +64 -0
- package/src/components/form-sections/AddressForm.tsx +94 -0
- package/src/components/form-sections/BankAddressCard.tsx +95 -0
- package/src/components/form-sections/BankingDetailsCard.tsx +46 -0
- package/src/components/form-sections/BasicInfoCard.tsx +103 -0
- package/src/components/form-sections/BasicInfoSection.tsx +34 -0
- package/src/components/form-sections/BeneficiaryAddress.tsx +19 -0
- package/src/components/form-sections/BeneficiaryCard.tsx +41 -0
- package/src/components/form-sections/BeneficiaryDomesticWire.tsx +23 -0
- package/src/components/form-sections/BusinessProfileCard.tsx +131 -0
- package/src/components/form-sections/BusinessStatusCard.tsx +53 -0
- package/src/components/form-sections/ContactInfoCard.tsx +63 -0
- package/src/components/form-sections/CounterpartyBasicInfo.tsx +101 -0
- package/src/components/form-sections/CounterpartyProfileCard.tsx +104 -0
- package/src/components/form-sections/CounterpartyRecordsCard.tsx +41 -0
- package/src/components/form-sections/IntermediaryCard.tsx +77 -0
- package/src/components/form-sections/IntermediaryFI.tsx +41 -0
- package/src/components/form-sections/IntermediaryFIAddress.tsx +14 -0
- package/src/components/form-sections/OriginatorCard.tsx +49 -0
- package/src/components/form-sections/OriginatorFI.tsx +42 -0
- package/src/components/form-sections/OriginatorFIAddress.tsx +14 -0
- package/src/components/form-sections/PaymentInformationSection.tsx +163 -0
- package/src/components/form-sections/ReceiverCard.tsx +94 -0
- package/src/components/form-sections/WireTransferSection.tsx +75 -0
- package/src/components/layouts/list-page.tsx +103 -0
- package/src/components/transaction/ACHDetailsSection.tsx +95 -0
- package/src/components/transaction/WireDetailsSection.tsx +112 -0
- package/src/components/ui/account-card.tsx +94 -0
- package/src/components/ui/badge.tsx +75 -0
- package/src/components/ui/breadcrumb.tsx +78 -0
- package/src/components/ui/business-type-badge.tsx +42 -0
- package/src/components/ui/button.tsx +56 -0
- package/src/components/ui/calendar.tsx +49 -0
- package/src/components/ui/card.tsx +223 -0
- package/src/components/ui/container.tsx +45 -0
- package/src/components/ui/counterparty-type-badge.tsx +53 -0
- package/src/components/ui/data-grid.tsx +99 -0
- package/src/components/ui/data-table.tsx +152 -0
- package/src/components/ui/detail-page-layout.tsx +83 -0
- package/src/components/ui/dialog.tsx +120 -0
- package/src/components/ui/dropdown-menu.tsx +82 -0
- package/src/components/ui/editable-form-card.tsx +106 -0
- package/src/components/ui/editable-info-field.tsx +67 -0
- package/src/components/ui/enhanced-input.tsx +78 -0
- package/src/components/ui/enhanced-select.tsx +101 -0
- package/src/components/ui/enhanced-textarea.tsx +64 -0
- package/src/components/ui/entity-card.tsx +140 -0
- package/src/components/ui/form-card.tsx +40 -0
- package/src/components/ui/form-field.tsx +50 -0
- package/src/components/ui/form-input.tsx +29 -0
- package/src/components/ui/form-provider.tsx +18 -0
- package/src/components/ui/form-section.tsx +66 -0
- package/src/components/ui/form-select.tsx +35 -0
- package/src/components/ui/info-field.tsx +36 -0
- package/src/components/ui/json-viewer.tsx +146 -0
- package/src/components/ui/label.tsx +24 -0
- package/src/components/ui/metric-card.tsx +80 -0
- package/src/components/ui/page-layout.tsx +183 -0
- package/src/components/ui/popover.tsx +29 -0
- package/src/components/ui/responsive-grid.tsx +46 -0
- package/src/components/ui/separator.tsx +31 -0
- package/src/components/ui/sheet.tsx +140 -0
- package/src/components/ui/sidebar.tsx +775 -0
- package/src/components/ui/sonner.tsx +29 -0
- package/src/components/ui/stack.tsx +77 -0
- package/src/components/ui/status-badge.tsx +68 -0
- package/src/components/ui/tabs.tsx +52 -0
- package/src/components/ui/toast.tsx +127 -0
- package/src/components/ui/toaster.tsx +33 -0
- package/src/components/ui/tooltip.tsx +28 -0
- package/src/components/ui/use-toast.ts +3 -0
- package/src/components/ui-kit/dashboard-demo.tsx +156 -0
- package/src/components/ui-kit/pattern-library.tsx +248 -0
- package/src/components/ui-kit/showcase.tsx +211 -0
- package/src/hooks/use-mobile.tsx +19 -0
- package/src/hooks/use-toast.ts +191 -0
- package/src/hooks/useEditState.ts +70 -0
- package/src/hooks/useFormWithEditState.ts +115 -0
- package/src/{styles.css → index.css} +10 -4
- package/src/lib/constants.ts +25 -0
- package/src/lib/mock-data/alert-data.ts +275 -0
- package/src/lib/mock-data/banking-data.ts +72 -0
- package/src/lib/mock-data/business-data.ts +71 -0
- package/src/lib/mock-data/counterparty-data.ts +70 -0
- package/src/lib/mock-data/index.ts +5 -0
- package/src/lib/mock-data/transaction-data.ts +283 -0
- package/src/lib/mock-data/wire-data.ts +103 -0
- package/src/lib/mock-data.tsx +180 -0
- package/src/lib/schemas/banking-schemas.ts +30 -0
- package/src/lib/schemas/business-schemas.ts +36 -0
- package/src/lib/schemas/counterparty-schemas.ts +43 -0
- package/src/lib/schemas/index.ts +5 -0
- package/src/lib/schemas/wire-schemas.ts +44 -0
- package/src/lib/utils.ts +6 -0
- package/src/main.tsx +10 -0
- package/src/pages/Cases.tsx +16 -0
- package/src/pages/Dashboard.tsx +16 -0
- package/src/pages/NotFound.tsx +27 -0
- package/src/pages/TransactionHistory.tsx +532 -0
- package/src/pages/UIKit.tsx +51 -0
- package/src/pages/alerts/AlertDetail.tsx +193 -0
- package/src/pages/alerts/Alerts.tsx +373 -0
- package/src/pages/business/Business.tsx +48 -0
- package/src/pages/business/Create.tsx +173 -0
- package/src/pages/counterparty/Create.tsx +48 -0
- package/src/pages/counterparty/DomesticWire.tsx +78 -0
- package/src/pages/counterparty/Manage.tsx +79 -0
- package/src/pages/transactions/NewTransaction.tsx +527 -0
- package/src/pages/transactions/TransactionDetail.tsx +192 -0
- package/src/vite-env.d.ts +1 -0
- package/tailwind.config.ts +124 -0
- package/tsconfig.app.json +30 -0
- package/tsconfig.json +19 -0
- package/tsconfig.node.json +22 -0
- package/vite.config.ts +22 -0
- package/dist/css/braid-ui-variables.css +0 -88
- package/dist/css/braid-ui.css +0 -4484
- package/dist/css/braid-ui.min.css +0 -1
- package/dist/index.cjs +0 -4
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts +0 -2429
- package/dist/index.d.ts +0 -2429
- package/dist/index.js +0 -4
- package/dist/index.js.map +0 -1
- package/src/styles-only.css +0 -121
- /package/{dist/braid-logo-343BOQZ2.png → src/assets/braid-logo.png} +0 -0
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/utils.ts","../src/components/ui/card.tsx","../src/components/ui/form-card.tsx","../src/components/ui/badge.tsx","../src/components/alerts/AlertTimeline.tsx","../src/components/ui/button.tsx","../src/components/ui/enhanced-textarea.tsx","../src/components/ui/enhanced-select.tsx","../src/hooks/use-toast.ts","../src/components/alerts/AlertNotes.tsx","../src/components/ui/enhanced-input.tsx","../src/components/alerts/AlertDocuments.tsx","../src/components/ui/info-field.tsx","../src/components/ui/scroll-area.tsx","../src/components/ui/table.tsx","../src/components/ui/dialog.tsx","../src/components/ui/json-viewer.tsx","../src/components/alerts/OFACAlertView.tsx","../src/components/alerts/AlertDetailRouter.tsx","../src/lib/constants.ts","../src/lib/utils/alert-utils.ts","../src/components/alerts/AlertHeaderControls.tsx","../src/components/alerts/ContextSection.tsx","../src/components/ui/form-provider.tsx","../src/components/ui/form-input.tsx","../src/components/ui/form-select.tsx","../src/hooks/useFormWithEditState.ts","../src/lib/schemas/alert-schemas.ts","../src/components/alerts/ResolveAlertDialog.tsx","../src/hooks/use-mobile.tsx","../src/components/ui/separator.tsx","../src/components/ui/sheet.tsx","../src/components/ui/tooltip.tsx","../src/components/ui/sidebar.tsx","../src/components/app-sidebar.tsx","../src/components/MainLayout.tsx","../src/hooks/useEditState.ts","../src/components/ui/editable-form-card.tsx","../src/lib/schemas/counterparty-schemas.ts","../src/lib/schemas/banking-schemas.ts","../src/lib/schemas/wire-schemas.ts","../src/lib/schemas/business-schemas.ts","../src/lib/mock-data/business-data.ts","../src/components/form-sections/BusinessProfileCard.tsx","../src/components/form-sections/BusinessStatusCard.tsx","../src/components/ui/status-badge.tsx","../src/components/ui/cip-status-badge.tsx","../src/components/ui/entity-type-badge.tsx","../src/components/ui/sub-type-badge.tsx","../src/components/ui/editable-info-field.tsx","../src/components/ui/page-layout.tsx","../src/components/ui/data-table.tsx","../src/components/ui/form-field.tsx","../src/components/ui/form-section.tsx","../src/components/ui/calendar.tsx","../src/components/ui/popover.tsx","../src/components/ui/date-picker.tsx","../src/lib/schemas/ubo-schemas.ts","../src/components/business/AddUBODialog.tsx","../src/components/business/UBOCard.tsx","../src/components/business/AddAccountDialog.tsx","../src/components/business/BusinessDocuments.tsx","../src/lib/utils/ofac-utils.ts","../src/components/business/OfacHeaderCard.tsx","../src/components/business/BusinessDetailView.tsx","../src/components/business/BusinessFiltersSheet.tsx","../src/components/business/BusinessForm.tsx","../src/components/business/CreateBusinessView.tsx","../src/components/counterparty/CounterpartyFiltersSheet.tsx","../src/components/counterparty/CounterpartiesView.tsx","../src/lib/mock-data/counterparty-data.ts","../src/components/form-sections/CounterpartyProfileCard.tsx","../src/components/form-sections/CounterpartyStatusCard.tsx","../src/components/ui/counterparty-type-badge.tsx","../src/components/ui/payment-method-card.tsx","../src/components/ui/responsive-grid.tsx","../src/components/counterparty/CounterpartyDetailView.tsx","../src/components/form-sections/SimpleACHForm.tsx","../src/components/form-sections/SimpleWireForm.tsx","../src/components/form-sections/PaymentInformationSection.tsx","../src/components/form-sections/AddressForm.tsx","../src/components/ui/label.tsx","../src/components/form-sections/CounterpartyBasicInfo.tsx","../src/components/counterparty/CreateCounterpartyView.tsx","../src/components/ui/skeleton.tsx","../src/components/ui/account-type-badge.tsx","../src/components/form-sections/AccountStatusCard.tsx","../src/components/account/AccountDetailView.tsx","../src/components/account/AccountFiltersSheet.tsx","../src/components/account/AccountsTableSkeleton.tsx","../src/components/account/AccountsView.tsx","../src/components/individual/IndividualsFiltersSheet.tsx","../src/components/individual/IndividualsView.tsx","../src/lib/schemas/individual-schemas.ts","../src/components/form-sections/IndividualProfileCard.tsx","../src/components/form-sections/IndividualStatusCard.tsx","../src/components/individual/AddExternalAccountDialog.tsx","../src/components/individual/IndividualDetailView.tsx","../src/components/individual/CreateIndividualView.tsx","../src/lib/mock-data/banking-data.ts","../src/components/form-sections/ACHBankCard.tsx","../src/components/form-sections/ACHBasicInfoCard.tsx","../src/components/form-sections/BankAddressCard.tsx","../src/components/form-sections/ACHTransferSection.tsx","../src/components/form-sections/BankingDetailsCard.tsx","../src/components/form-sections/BasicInfoCard.tsx","../src/components/form-sections/CounterpartyRecordsCard.tsx","../src/components/form-sections/BasicInfoSection.tsx","../src/components/form-sections/BeneficiaryAddress.tsx","../src/components/ui/data-grid.tsx","../src/components/form-sections/BeneficiaryDomesticWire.tsx","../src/components/form-sections/BeneficiaryCard.tsx","../src/components/form-sections/ContactInfoCard.tsx","../src/components/form-sections/IntermediaryFI.tsx","../src/components/form-sections/IntermediaryFIAddress.tsx","../src/lib/mock-data/wire-data.ts","../src/components/form-sections/IntermediaryCard.tsx","../src/components/form-sections/OriginatorFI.tsx","../src/components/form-sections/OriginatorFIAddress.tsx","../src/components/form-sections/OriginatorCard.tsx","../src/components/form-sections/ReceiverCard.tsx","../src/components/form-sections/WireTransferSection.tsx","../src/components/ui/container.tsx","../src/components/ui/stack.tsx","../src/components/ui/breadcrumb.tsx","../src/components/layouts/list-page.tsx","../src/lib/mock-data/statement-data.ts","../src/components/statement/StatementHeader.tsx","../src/components/statement/StatementView.tsx","../src/components/transaction/ACHDetailsSection.tsx","../src/components/transaction/WireDetailsSection.tsx","../src/components/ui/currency-input.tsx","../src/components/ui/checkbox.tsx","../src/components/transaction/NewTransactionView.tsx","../src/components/ui/enhanced-multi-select.tsx","../src/components/transaction/TransactionHistoryFiltersSheet.tsx","../src/components/transaction/TransactionHistoryView.tsx","../src/components/ui/transaction-type-badge.tsx","../src/lib/utils/transaction-utils.ts","../src/components/transaction/TransactionDetailView.tsx","../src/lib/schemas/transaction-schemas.ts","../src/components/transaction/CancelTransactionDialog.tsx","../src/components/transaction/ReturnTransactionDialog.tsx","../src/components/ui/account-card.tsx","../src/components/ui/business-type-badge.tsx","../src/components/ui/detail-page-layout.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/ui/entity-card.tsx","../src/components/ui/metric-card.tsx","../src/components/ui/sonner.tsx","../src/components/ui/tabs.tsx","../src/components/ui/toast.tsx","../src/lib/mock-data.tsx","../src/components/ui-kit/dashboard-demo.tsx","../src/components/ui-kit/pattern-library.tsx","../src/components/ui-kit/showcase.tsx","../src/lib/mock-data/alert-data.ts","../src/hooks/useAlertDetail.ts","../src/hooks/useCounterpartyEntity.ts","../src/lib/mock-data/business-account-data.ts","../src/pages/Accounts.tsx","../src/lib/mock-data/account-fee-data.ts","../src/pages/accounts/AccountDetail.tsx","../src/pages/alerts/AlertDetail.tsx","../src/pages/alerts/Alerts.tsx","../src/lib/mock-data/businesses-list-data.ts","../src/components/business/BusinessesView.tsx","../src/pages/business/Businesses.tsx","../src/lib/mock-data/identity-verification-data.ts","../src/lib/mock-data/ubo-data.ts","../src/lib/mock-data/document-data.ts","../src/lib/mock-data/business-profiles-data.ts","../src/lib/mock-data/ofac-data.ts","../src/pages/business/BusinessDetail.tsx","../src/pages/business/Create.tsx","../src/pages/Cases.tsx","../src/lib/mock-data/counterparties-list-data.ts","../src/pages/counterparty/Counterparties.tsx","../src/pages/counterparty/CounterpartyDetail.tsx","../src/pages/counterparty/Create.tsx","../src/pages/Dashboard.tsx","../src/lib/mock-data/individuals-list-data.ts","../src/pages/individual/Individuals.tsx","../src/lib/mock-data/individual-data.ts","../src/pages/individual/IndividualDetail.tsx","../src/pages/individual/Create.tsx","../src/pages/NotFound.tsx","../src/lib/utils/csv-utils.ts","../src/pages/Statement.tsx","../src/lib/mock-data/transaction-data.ts","../src/pages/TransactionHistory.tsx","../src/pages/transactions/NewTransaction.tsx","../src/pages/transactions/TransactionDetail.tsx","../src/pages/UIKit.tsx","../src/components/compliance/VelocityLimitFiltersSheet.tsx","../src/lib/mock-data/velocity-limit-data.ts","../src/pages/compliance/VelocityLimits.tsx","../src/pages/compliance/CreateVelocityLimit.tsx","../src/pages/compliance/VelocityLimitDetail.tsx","../src/components/compliance/UploadReconDialog.tsx","../src/lib/mock-data/recon-data.ts","../src/pages/compliance/ReconUpload.tsx","../src/lib/mock-data/recon-exception-data.ts","../src/pages/compliance/ReconExceptions.tsx"],"names":["cn","inputs","twMerge","clsx","formatCurrency","value","currency","cardVariants","cva","Card","Xr","className","variant","size","fullHeight","interactive","props","ref","jsx","cardHeaderVariants","CardHeader","align","direction","cardTitleVariants","CardTitle","CardDescription","cardContentVariants","CardContent","cardFooterVariants","CardFooter","justify","FormCard","Kl","title","titleBadge","description","children","headerActions","jsxs","badgeVariants","Badge","AlertTimeline","events","getIcon","action","StickyNote","FileUp","CheckCircle","XCircle","RefreshCw","Eye","RotateCcw","Send","PlayCircle","Circle","UserPlus","Edit","getStatusColor","status","event","index","buttonVariants","Button","Ql","asChild","Slot","textareaVariants","EnhancedTextarea","td","label","hint","error","success","textareaVariant","selectVariants","EnhancedSelect","rd","placeholder","options","disabled","selectVariant","ChevronDown","ChevronUp","option","Check","TOAST_LIMIT","TOAST_REMOVE_DELAY","count","genId","toastTimeouts","addToRemoveQueue","toastId","timeout","dispatch","reducer","state","t","toast","listeners","memoryState","listener","id","update","dismiss","open","useToast","setState","$n","NOTE_TYPE_OPTIONS","AlertNotes","alertId","notes","showNoteDialog","setShowNoteDialog","useState","newNote","setNewNote","noteType","setNoteType","isSubmitting","setIsSubmitting","resetForm","handleCancelNote","handleAddNote","handleDeleteNote","noteId","noteContent","createPortal","X","e","Plus","MessageSquare","note","Trash2","inputVariants","EnhancedInput","sd","isLoading","inputVariant","AlertDocuments","documents","renderDocumentViewer","isUploading","setIsUploading","showUploadDialog","setShowUploadDialog","selectedFile","setSelectedFile","documentName","setDocumentName","setDescription","documentType","setDocumentType","viewingDocument","setViewingDocument","isImageType","name","ext","handleDownload","doc","handleFileSelect","file","handleUploadSubmit","fileInput","handleCancelUpload","getFileIcon","type","FileText","getFileTypeColor","documentTypeOptions","Upload","Download","InfoField","layout","ScrollArea","Ns","ScrollBar","orientation","Table","lr","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption","Dialog","DialogTrigger","DialogPortal","DialogClose","DialogOverlay","Xo","DialogContent","hideCloseButton","DialogHeader","DialogFooter","DialogTitle","DialogDescription","JsonViewer","data","compact","maxHeight","expandFully","copied","setCopied","handleCopy","Fragment","Copy","JsonNode","depth","isExpanded","setIsExpanded","indent","isArray","isEmpty","ChevronRight","item","key","OFACAlertView","alert","isJsonDialogOpen","setIsJsonDialogOpen","parseOFACMatches","rawResults","tableRows","getListName","listType","formatCheckKey","str","nameField","list","check","renderOFACContext","entityName","entityType","entityId","entityLink","Link","FileJson","row","renderTransactionContext","renderFileRecordContext","renderProductContext","renderContext","AlertDetailRouter","COUNTRY_OPTIONS","FI_ID_TYPE_OPTIONS","ADDRESS_TYPE_OPTIONS","RFI_STATUS_OPTIONS","ASSIGNEE_OPTIONS","BUSINESS_STATUS_OPTIONS","BUSINESS_ENTITY_TYPE_OPTIONS","INDIVIDUAL_STATUS_OPTIONS","INDIVIDUAL_DOCUMENT_TYPE_OPTIONS","getTypeBadgeVariant","AlertHeaderControls","assignee","rfiStatus","onAssigneeChange","onRfiStatusChange","ContextSection","isDialogOpen","setIsDialogOpen","getContextTitle","FormProvider","form","RHFFormProvider","FormInput","control","formState","useFormContext","get","Controller","onChange","restField","val","FormSelect","field","useFormWithEditState","schema","initialEditing","onToggleEdit","onSave","onCancel","formProps","localEditing","setLocalEditing","setIsLoading","useForm","zodResolver","reset","setError","isValid","isDirty","useEffect","isEditing","handleToggleEdit","useCallback","prev","handleSave","handleCancel","setFieldError","resolveAlertSchema","z","RETURN_CODES","ResolveAlertDialog","onOpenChange","onResolve","handleSubmit","watch","code","MOBILE_BREAKPOINT","useIsMobile","isMobile","setIsMobile","ei","mql","Separator","Md","decorative","Sheet","dt","SheetTrigger","SheetClose","SheetPortal","SheetOverlay","Zo","sheetVariants","SheetContent","side","SheetHeader","SheetFooter","SheetTitle","SheetDescription","TooltipProvider","Tooltip","TooltipTrigger","TooltipContent","Vd","sideOffset","SIDEBAR_COOKIE_NAME","SIDEBAR_COOKIE_MAX_AGE","SIDEBAR_WIDTH","SIDEBAR_WIDTH_MOBILE","SIDEBAR_WIDTH_ICON","SIDEBAR_KEYBOARD_SHORTCUT","SidebarContext","useSidebar","context","SidebarProvider","defaultOpen","openProp","setOpenProp","style","openMobile","setOpenMobile","_open","_setOpen","setOpen","openState","toggleSidebar","handleKeyDown","contextValue","Sidebar","collapsible","SidebarTrigger","onClick","PanelLeft","SidebarRail","SidebarInset","SidebarInput","SidebarHeader","SidebarFooter","SidebarSeparator","SidebarContent","SidebarGroup","SidebarGroupLabel","SidebarGroupAction","SidebarGroupContent","SidebarMenu","SidebarMenuItem","sidebarMenuButtonVariants","SidebarMenuButton","isActive","tooltip","Comp","button","SidebarMenuAction","showOnHover","SidebarMenuBadge","SidebarMenuSkeleton","showIcon","width","SidebarMenuSub","SidebarMenuSubItem","SidebarMenuSubButton","navigationItems","LayoutDashboard","Bell","Briefcase","ArrowLeftRight","FileCheck","Receipt","Users","Building2","CreditCard","Shield","TrendingUp","AlertCircle","Repeat","Landmark","Search","Zap","Settings","Box","BarChart3","Key","AppSidebar","currentPath","useLocation","openItems","setOpenItems","path","toggleItem","braid_logo_default","isOpen","Collapsible","CollapsibleTrigger","CollapsibleContent","subItem","NavLink","MainLayout","useEditState","EditableFormCard","tc","editContent","viewContent","hideActions","isFormValid","currentlyEditing","addressSchema","counterpartyDetailSchema","achBasicInfoSchema","achBankDetailsSchema","achTransferSchema","wireBasicInfoSchema","beneficiarySchema","originatorFISchema","intermediaryFISchema","businessProfileSchema","defaultBusinessProfile","BusinessProfileCard","identityVerification","onDataChange","onProductIdClick","onRevealIdNumber","isIdNumberRevealed","onToggleIdNumberVisibility","isLoadingIdNumber","revealedIdNumber","businessEntityTypeOptions","showResultDialog","setShowResultDialog","formValues","kycBy","Loader2","EyeOff","parts","cityStateZip","mockBusinessTimeline","BusinessStatusCard","statusConfig","Clock","AlertTriangle","Ban","StatusBadge","showDropdownIndicator","config","Icon","CIPStatusBadge","typeConfig","User","EntityTypeBadge","SubTypeBadge","subType","UserCheck","EditableInfoField","renderValue","setIsEditing","handleChange","newValue","displayValue","maxWidthClasses","getGridClasses","gridCols","responsive","colsMap","PageLayout","mi","actions","cards","mode","maxWidth","headerContent","editingCards","setEditingCards","toggleEdit","cardKey","next","card","shouldExpand","DataTable","columns","sortBy","sortDirection","onSort","onRowClick","loading","emptyMessage","pagination","handleSort","renderSortIcon","column","ChevronsUpDown","renderCell","totalPages","startItem","endItem","ChevronLeft","FormField","xc","required","isHorizontal","spacingClasses","gridClasses","FormSection","Sc","spacing","Calendar","classNames","showOutsideDays","DayPicker","Popover","PopoverTrigger","PopoverContent","Dc","container","DatePicker","date","onDateChange","buttonClassName","calendarClassName","disabledDates","wrapperClassName","Ac","handleSelect","selectedDate","picker","CalendarIcon","format","uboSchema","titleOptions","AddUBODialog","onSubmit","UBOCard","ubos","onUBOClick","onAddUBO","onRemoveUBO","handleAddUBO","handleRemoveUBO","uboId","uboName","_","accountSchema","AddAccountDialog","existingAccounts","acc","DEFAULT_DOCUMENT_TYPE_OPTIONS","BusinessDocuments","businessId","onDocumentUpload","onDocumentDelete","deletingDocumentId","setDeletingDocumentId","blob","url","link","handleDelete","normalizeOfacStatus","getOfacBadgeVariant","getOfacToneClasses","formatOfacDate","iso","d","OfacHeaderCard","latestOFAC","onNavigateToOFAC","tone","badgeVariant","BusinessDetailView","business","businessProfile","showTimeline","businessUBOs","businessDocuments","businessAccounts","currentStatus","isEditingProfile","statusOptions","onStatusChange","onProfileDataChange","onToggleProfileEdit","onNavigateToAccounts","onNavigateToCounterparty","onAddAccount","onDeleteAccount","showAddAccountDialog","setShowAddAccountDialog","handleAddAccountSubmit","Wallet","BusinessFiltersSheet","filters","onFilterChange","onResetFilters","localFilters","setLocalFilters","handleLocalFilterChange","handleApplyFilters","handleResetFilters","Filter","BusinessForm","businessType","onBusinessTypeChange","CreateBusinessView","CounterpartyFiltersSheet","CounterpartiesView","table","onCreateCounterparty","defaultCounterpartyDetail","CounterpartyProfileCard","onEntityClick","idTypeLabel","mockCounterpartyTimeline","CounterpartyStatusCard","CounterpartyTypeBadge","PaymentMethodCard","fiId","accountNumber","bankName","accountType","beneficiaryBankName","correspondentBankId","intermediaryBankId","Globe","MoreVertical","typeClasses","gapClasses","ResponsiveGrid","nm","gap","editMode","CounterpartyDetailView","counterpartyName","counterpartyType","counterpartyProfileData","mockPaymentMethods","onAddPaymentMethod","onAddDocument","documentColumns","method","SimpleACHForm","SimpleWireForm","wireType","setWireType","PaymentInformationSection","onPaymentMethodsChange","paymentMethods","setPaymentMethods","showAddMenu","setShowAddMenu","addPaymentMethod","newMethod","updatedMethods","removePaymentMethod","toggleCollapse","renderPaymentMethodContent","AddressForm","fieldPrefix","showAddressType","addressTypeOptions","fieldOverrides","showApartment","addressTypeLabel","labelVariants","Label","um","CounterpartyBasicInfo","handleInputChange","updatedData","handleTypeChange","CreateCounterpartyView","counterpartyData","onBasicInfoChange","m","Skeleton","PiggyBank","CircleDollarSign","AccountTypeBadge","mockAccountTimeline","AccountStatusCard","DollarSign","SkeletonOr","skeleton","AccountDetailView","account","canAcceptSweepOptions","onNavigateCustomer","onNavigateCounterparty","onNavigateLimits","onNavigateTransactions","onNavigateProduct","hideTransactionAction","hideTimeline","onRetry","feesTable","feeCount","onScrollToFees","onAddFee","onCreateTransaction","balanceSectionRef","useRef","scrollContainerRef","feesSectionRef","showHeaderBalances","setShowHeaderBalances","handleScrollToFees","elementTop","balanceSection","scrollContainer","observer","entries","entry","hasScrolled","rowIndex","i","AccountFiltersSheet","onApplyFilters","handleLocalChange","handleApply","handleReset","AccountsTableSkeleton","hideBalanceColumns","AccountsView","hasActiveFilters","Inbox","IndividualsFiltersSheet","IndividualsView","onCreateIndividual","individualProfileEditSchema","IndividualProfileCard","setIsIdNumberRevealed","defaultValues","useMemo","v","mockIndividualTimeline","IndividualStatusCard","externalAccountSchema","AddExternalAccountDialog","IndividualDetailView","individual","profile","onProfileSave","profileIsEditing","externalAccounts","onAddExternalAccount","onDeleteExternalAccount","showAddExternalAccountDialog","setShowAddExternalAccountDialog","headerName","individualId","hasExternalAccount","firstExternalAccount","handleAddExternalAccountClick","CreateIndividualView","defaultACHBankDetails","defaultBankAddress","defaultACHTransfer","ACHBankCard","ACHBasicInfoCard","BankAddressCard","ACHTransferSection","achData","setAchData","handleDataChange","newData","content","BankingDetailsCard","BasicInfoCard","setName","setStatus","CounterpartyRecordsCard","BasicInfoSection","BeneficiaryAddress","columnClasses","DataGrid","Jm","items","sections","section","sectionIndex","itemIndex","BeneficiaryDomesticWire","BeneficiaryCard","ContactInfoCard","IntermediaryFI","IntermediaryFIAddress","defaultReceiverInfo","defaultIntermediaryFIInfo","IntermediaryCard","OriginatorFI","OriginatorFIAddress","OriginatorCard","receiverSchema","ReceiverCard","viewData","WireTransferSection","wireTransferType","setWireTransferType","sizeClasses","paddingClasses","Container","ou","padding","center","alignClasses","justifyClasses","Stack","nu","Breadcrumb","Ei","showHome","separator","separatorElement","Home","isLast","ListPage","Bi","breadcrumbs","emptyState","hasData","calculateBalanceChange","startingBalance","endingBalance","parseCurrency","start","change","isPositive","mockStatementHeader","mockStatementTransactions","mockPrograms","mockProducts","StatementHeader","onEdit","hasValue","balanceChange","statementTypes","StatementView","statementType","selectedProgram","selectedProduct","startDate","endDate","statementGenerated","programs","products","statementHeader","statementTransactions","programsLoading","productsLoading","programsError","productsError","onStatementTypeChange","onProgramChange","onProductChange","onAccountNumberChange","onStartDateChange","onEndDateChange","onGenerateStatement","onDownloadCSV","onPrintPDF","onRetryFetch","shouldShowRetry","isGenerateDisabled","ACHDetailsSection","copiedField","setCopiedField","CollapsibleRawSection","WireDetailsSection","onIMADChange","isEditingImad","setIsEditingImad","imadValue","setImadValue","inputRef","handleImadSave","handleImadCancel","omadFieldValue","imadFieldValue","Pencil","numValue","CurrencyInput","isFocused","setIsFocused","Nu","sanitized","Checkbox","Cu","ADJUSTMENT_DIRECTION_OPTIONS","NewTransactionView","accountLookedUp","accountData","counterpartyLookedUp","confirmationOpen","submissionStatus","errorMessage","transactionId","isAccountLoading","isCounterpartyLoading","counterpartySearchResults","isCounterpartySearching","showCounterpartyDropdown","onAccountLookup","onEditAccount","onEditCounterparty","onTransactionTypeChange","onConfirmationClose","onConfirmationOpenChange","onNewTransaction","onCounterpartySearchChange","onCounterpartySelect","onCounterpartyDropdownClose","counterpartyHasMore","counterpartyTotalResults","isLoadingMoreCounterparties","onLoadMoreCounterparties","receiverAccountLookedUp","receiverAccountData","isReceiverAccountLoading","onReceiverAccountLookup","onEditReceiverAccount","isReviewReady","adjustmentTypeOptions","transactionTypeOptions","showSuccessInfoBox","successInfoMessage","transactionType","amount","receiverAccountNumber","adjustmentDirection","adjustmentType","requiresCounterparty","isTransfer","isAdjustment","accountDataGrid","counterpartyDataGrid","receiverAccountDataGrid","reviewData","CheckCircle2","isSelected","isDisabled","result","EnhancedMultiSelect","onValueChange","ar","searchQuery","setSearchQuery","popoverContainer","setPopoverContainer","triggerRef","sheetContent","optionValue","handleRemove","selectedLabels","opt","filteredOptions","query","defaultFilters","TransactionHistoryFiltersSheet","filterOptions","transactionTypes","transactionStatuses","processingStatuses","handleDateChange","isoString","parseDate","dateStr","TransactionHistoryView","TransactionTypeBadge","isInbound","ArrowDownRight","ArrowUpRight","getStatusVariant","getProcessingStatusVariant","TransactionDetailView","transaction","timelineEvents","isWireTransfer","isACHTransfer","showCancelButton","showReturnButton","onReturnClick","onCancelClick","onAccountClick","onCustomerClick","onCounterpartyClick","onOFACClick","onProductClick","onAlertClick","onLinkedPaymentClick","fieldName","cancelTransactionSchema","returnTransactionSchema","CancelTransactionDialog","register","errors","handleClose","ReturnTransactionDialog","onReturn","reasonCodes","setValue","reasonCode","selectOptions","typeIcons","Building","typeLabels","AccountCard","Wu","showBalance","TypeIcon","BusinessTypeBadge","DetailPageLayout","initialEditingState","isSingleCard","DropdownMenu","DropdownMenuTrigger","DropdownMenuContent","xn","DropdownMenuItem","inset","DropdownMenuLabel","DropdownMenuSeparator","EntityCard","zi","entity","showDefaultActions","onView","onDelete","defaultActions","allActions","entityData","variantStyles","trendIcons","TrendingDown","Minus","trendColors","MetricCard","qu","trend","icon","TrendIcon","Toaster","theme","useTheme","Sonner","Tabs","TabsList","_i","TabsTrigger","TabsContent","ToastProvider","ToastViewport","go","toastVariants","Toast","ToastAction","ToastClose","ToastTitle","ToastDescription","mockCounterparties","mockAccounts","mockMetrics","mockTableData","recentTransactions","transactionColumns","DashboardDemo","setSortBy","Dl","setSortDirection","metric","colorPalette","typography","ColorSwatch","color","Ju","PatternLibrary","palette","space","tableColumns","UIKitShowcase","Al","mockAlerts","useAlertDetail","a","setRfiStatus","setAssignee","newStatus","newAssignee","resolve","mockBusinesses","mockIndividuals","useCounterpartyEntity","counterparties","enrichedCounterparties","setEnrichedCounterparties","setLoading","enriched","counterparty","associatedEntity","mockBusinessAccounts","Accounts","navigate","useNavigate","searchParams","useSearchParams","currentPage","setCurrentPage","filteredAccounts","setFilteredAccounts","setFilters","pageSize","timer","customerId","filtered","handleFilterChange","handleRowClick","baseColumns","customerPath","balanceColumns","endColumns","paginatedData","startIndex","endIndex","Accounts_default","mockAccountFees","accountInfoSchema","AccountDetail","useParams","setCurrentStatus","accountFees","fee","feeColumns","_value","handleNavigateCustomer","handleNavigateCounterparty","handleNavigateLimits","handleNavigateTransactions","handleNavigateProduct","handleStatusChange","handleAddFee","handleCreateTransaction","AccountDetail_default","AlertDetail","resolveDialogOpen","setResolveDialogOpen","handleRfiStatusChange","handleAssigneeChange","handleResolveAlert","AlertDetail_default","Alerts","filteredAlerts","setFilteredAlerts","rowsPerPage","setRowsPerPage","applyFilters","resetFilters","paginatedAlerts","handlePageChange","newPage","handleRowsPerPageChange","Alerts_default","mockBusinessesList","BusinessesView","sortedData","onCreateBusiness","Businesses","filteredData","created","b","aValue","bValue","handleCreateBusiness","Businesses_default","mockIdentityVerifications","mockBusinessUBOs","mockBusinessDocuments","mockBusinessProfiles","mockOFACChecks","BusinessDetail","initialUBOs","initialDocuments","initialAccounts","initialProfile","setIsEditingProfile","setBusinessProfile","setBusinessUBOs","setBusinessAccounts","setRevealedIdNumber","setIsLoadingIdNumber","setBusinessDocuments","loadData","handleToggleProfileEdit","handleProfileDataChange","updatedProfile","handleNavigateToAccounts","handleNavigateToCounterparty","handleNavigateToOFAC","ofacCheckId","handleAddAccount","newAccountId","handleDeleteAccount","accountId","handleUBOClick","ubo","newUboId","first","last","handleProductIdClick","productId","handleRevealIdNumber","handleToggleIdNumberVisibility","decryptedId","handleDocumentUpload","metadata","newDocument","handleDocumentDelete","documentId","handleRetry","BusinessDetail_default","defaultBusinessFormValues","CreateBusiness","setBusinessType","handleBusinessTypeChange","Create_default","Cases","Cases_default","mockCounterpartiesList","Counterparties","setCounterparties","filteredCounterparties","cp","sortedCounterparties","handleCreateCounterparty","Package","Counterparties_default","CounterpartyDetail","c","counterpartyDocuments","getInitialProfileData","idType","idValue","setCounterpartyProfileData","handleEntityClick","handleAddPaymentMethod","handleAddDocument","CounterpartyDetail_default","CreateCounterparty","setCounterpartyData","methods","Dashboard","Dashboard_default","mockIndividualsListData","Individuals","individuals","filteredIndividuals","setFilteredIndividuals","handleCreateIndividual","sortedIndividuals","tableNode","Individuals_default","mockIndividualData","IndividualDetail","setProfile","setExternalAccounts","setDocuments","handleViewAccount","handleAddAsCounterparty","handleAddExternalAccount","newAccount","handleDeleteExternalAccount","IndividualDetail_default","CreateIndividual","NotFound","location","NotFound_default","escapeCsvValue","stringValue","generateStatementCSV","header","transactions","lines","downloadCSV","filename","Statement","setStatementType","setSelectedProgram","setSelectedProduct","setAccountNumber","setStartDate","now","setEndDate","setStatementGenerated","setPrograms","setProducts","setProgramsLoading","setProductsLoading","setProgramsError","setProductsError","setStatementHeader","setStatementTransactions","fetchPrograms","fetchProducts","handleStatementTypeChange","handleGenerateStatement","csvContent","filenamePart","mockTransactions","mockTransactionTimeline","TransactionHistory","loadTransactions","err","filteredTransactions","minAmount","maxAmount","sortedTransactions","TransactionHistory_default","newTransactionSchema","mockAccountData","NewTransaction","setAccountLookedUp","setAccountData","setCounterpartyLookedUp","setCounterpartySearchResults","setIsCounterpartySearching","setShowCounterpartyDropdown","counterpartySearchPage","setCounterpartySearchPage","setCounterpartyHasMore","setCounterpartyTotalResults","setIsLoadingMoreCounterparties","currentSearchQuery","setCurrentSearchQuery","setConfirmationOpen","setSubmissionStatus","setErrorMessage","setTransactionId","setIsAccountLoading","setIsCounterpartyLoading","setReceiverAccountLookedUp","setReceiverAccountData","setIsReceiverAccountLoading","handleAccountLookup","mockSearchResults","PAGE_SIZE","isCounterpartyCompatible","instrumentType","filterByTransactionType","results","txType","debouncedSearch","debounce","page","filteredResults","paginatedResults","handleCounterpartySearchChange","handleLoadMoreCounterparties","handleTransactionTypeChange","newType","typeLabel","handleCounterpartySelect","handleEditAccount","handleReceiverAccountLookup","receiverNum","handleEditReceiverAccount","handleEditCounterparty","submissionPayload","errorScenarios","txId","handleConfirmationClose","handleNewTransaction","returnReasonCodes","TransactionDetail","isCancelDialogOpen","setIsCancelDialogOpen","isReturnDialogOpen","setIsReturnDialogOpen","setTransaction","loadTransaction","found","cancelableStatuses","handleOpenReturnDialog","handleReturnTransaction","handleOpenCancelDialog","handleCancelTransaction","handleAccountClick","handleCustomerClick","customer","handleCounterpartyClick","handleOFACClick","ofacId","handleProductClick","handleAlertClick","handleLinkedPaymentClick","paymentId","handleIMADChange","newImad","TransactionDetail_default","UIKit","VelocityLimitFiltersSheet","mockVelocityLimits","getActionVariant","VelocityLimits","sortField","setSortField","sortedLimits","limit","parseISO","CreateVelocityLimit","limitType","setLimitType","formData","setFormData","handleFieldChange","renderTypeSpecificFields","ArrowLeft","VelocityLimitDetailsCard","renderTransactionFields","group","renderReceiverNameMismatchFields","renderRoundNumberFields","renderProhibitedEntityFields","l","VelocityLimitDetail","UploadReconDialog","fileType","setFileType","fileInputRef","handleFileChange","handleRemoveFile","handleUpload","ArrowRightLeft","File","mockReconUploads","ReconUpload","uploadDialogOpen","setUploadDialogOpen","sortedUploads","mockBraidTransactions","mockFedSettlements","ReconExceptions","fromDate","setFromDate","toDate","setToDate","setTransactionType","braidData","setBraidData","fedData","setFedData","selectedBraid","setSelectedBraid","selectedFed","setSelectedFed","dataLoaded","setDataLoaded","braidPage","setBraidPage","braidRowsPerPage","setBraidRowsPerPage","fedPage","setFedPage","fedRowsPerPage","setFedRowsPerPage","handleSearch","filteredBraid","tDate","filteredFed","s","sDate","handleMatch","braidTxn","fedTxn","canMatch","braidTotalPages","braidStartIndex","braidPaginatedData","fedTotalPages","fedStartIndex","fedPaginatedData","txn","settlement"],"mappings":"g/DAGO,SAASA,CAAAA,CAAAA,GAAMC,EAAsB,CAC1C,OAAOC,QAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CAEO,SAASG,EAAAA,CAAeC,CAAAA,CAAeC,EAAW,KAAA,CAAe,CACtE,OAAO,IAAI,IAAA,CAAK,aAAa,OAAA,CAAS,CACpC,KAAA,CAAO,UAAA,CACP,QAAA,CAAAA,CAAAA,CACA,sBAAuB,CAAA,CACvB,qBAAA,CAAuB,CACzB,CAAC,CAAA,CAAE,OAAOD,CAAK,CACjB,CCTA,IAAME,EAAAA,CAAeC,IACnB,4EAAA,CACA,CACE,SAAU,CACR,OAAA,CAAS,CACP,OAAA,CAAS,WAAA,CACT,QAAA,CAAU,4BACV,QAAA,CAAU,sBAAA,CACV,MAAO,+CAAA,CACP,MAAA,CAAQ,8BACV,CAAA,CACA,IAAA,CAAM,CACJ,EAAA,CAAI,KAAA,CACJ,GAAI,KAAA,CACJ,EAAA,CAAI,MACJ,IAAA,CAAM,KACR,EACA,UAAA,CAAY,CACV,IAAA,CAAM,sBAAA,CACN,KAAA,CAAO,EACT,EACA,WAAA,CAAa,CACX,KAAM,mDAAA,CACN,KAAA,CAAO,EACT,CACF,CAAA,CACA,gBAAiB,CACf,OAAA,CAAS,UACT,IAAA,CAAM,MAAA,CACN,WAAY,KAAA,CACZ,WAAA,CAAa,KACf,CACF,CACF,CAAA,CAMMC,CAAAA,CAAaC,EAAA,CAAA,UAAA,CACjB,CAAC,CAAE,SAAA,CAAAC,CAAAA,CAAW,QAAAC,CAAAA,CAAS,IAAA,CAAAC,EAAM,UAAA,CAAAC,CAAAA,CAAY,YAAAC,CAAAA,CAAa,GAAGC,CAAM,CAAA,CAAGC,CAAAA,GAChEC,IAAC,KAAA,CAAA,CACC,GAAA,CAAKD,EACL,SAAA,CAAWjB,CAAAA,CAAGO,EAAAA,CAAa,CAAE,OAAA,CAAAK,CAAAA,CAAS,KAAAC,CAAAA,CAAM,UAAA,CAAAC,EAAY,WAAA,CAAAC,CAAY,CAAC,CAAA,CAAGJ,CAAS,EAChF,GAAGK,CAAAA,CACN,CAEJ,EACAP,CAAAA,CAAK,YAAc,MAAA,CAEnB,IAAMU,GAAqBX,GAAAA,CACzB,2BAAA,CACA,CACE,QAAA,CAAU,CACR,IAAA,CAAM,CACJ,EAAA,CAAI,gBAAA,CACJ,GAAI,gBAAA,CACJ,EAAA,CAAI,gBACN,CAAA,CACA,KAAA,CAAO,CACL,KAAA,CAAO,aAAA,CACP,OAAQ,cAAA,CACR,GAAA,CAAK,WACP,CAAA,CACA,SAAA,CAAW,CACT,GAAA,CAAK,2DAAA,CACL,MAAA,CAAQ,sBACV,CACF,CAAA,CACA,gBAAiB,CACf,IAAA,CAAM,KACN,KAAA,CAAO,OAAA,CACP,UAAW,QACb,CACF,CACF,CAAA,CAMMY,CAAAA,CAAmBV,cACvB,CAAC,CAAE,UAAAC,CAAAA,CAAW,IAAA,CAAAE,EAAM,KAAA,CAAAQ,CAAAA,CAAO,SAAA,CAAAC,CAAAA,CAAW,GAAGN,CAAM,EAAGC,CAAAA,GAChDC,GAAAA,CAAC,OACC,GAAA,CAAKD,CAAAA,CACL,UAAWjB,CAAAA,CAAGmB,EAAAA,CAAmB,CAAE,IAAA,CAAAN,CAAAA,CAAM,MAAAQ,CAAAA,CAAO,SAAA,CAAAC,CAAU,CAAC,CAAA,CAAGX,CAAS,CAAA,CACtE,GAAGK,CAAAA,CACN,CAEJ,EACAI,CAAAA,CAAW,YAAc,YAAA,CAEzB,IAAMG,GAAoBf,GAAAA,CACxB,2CAAA,CACA,CACE,QAAA,CAAU,CACR,KAAM,CACJ,EAAA,CAAI,YACJ,EAAA,CAAI,SAAA,CACJ,GAAI,SACN,CACF,EACA,eAAA,CAAiB,CACf,IAAA,CAAM,IACR,CACF,CACF,EAMMgB,CAAAA,CAAkBd,EAAA,CAAA,UAAA,CACtB,CAAC,CAAE,SAAA,CAAAC,EAAW,IAAA,CAAAE,CAAAA,CAAM,GAAGG,CAAM,CAAA,CAAGC,IAC9BC,GAAAA,CAAC,IAAA,CAAA,CACC,IAAKD,CAAAA,CACL,SAAA,CAAWjB,EAAGuB,EAAAA,CAAkB,CAAE,IAAA,CAAAV,CAAK,CAAC,CAAA,CAAGF,CAAS,CAAA,CACnD,GAAGK,EACN,CAEJ,EACAQ,EAAU,WAAA,CAAc,WAAA,KAElBC,EAAAA,CAAwBf,EAAA,CAAA,UAAA,CAG5B,CAAC,CAAE,SAAA,CAAAC,EAAW,GAAGK,CAAM,EAAGC,CAAAA,GAC1BC,GAAAA,CAAC,GAAA,CAAA,CACC,GAAA,CAAKD,CAAAA,CACL,SAAA,CAAWjB,EAAG,+BAAA,CAAiCW,CAAS,EACvD,GAAGK,CAAAA,CACN,CACD,EACDS,EAAAA,CAAgB,YAAc,iBAAA,CAE9B,IAAMC,GAAsBlB,GAAAA,CAC1B,EAAA,CACA,CACE,QAAA,CAAU,CACR,KAAM,CACJ,EAAA,CAAI,WAAA,CACJ,EAAA,CAAI,WAAA,CACJ,EAAA,CAAI,WACN,CAAA,CACA,UAAA,CAAY,CACV,IAAA,CAAM,QAAA,CACN,MAAO,EACT,CACF,EACA,eAAA,CAAiB,CACf,KAAM,IAAA,CACN,UAAA,CAAY,KACd,CACF,CACF,EAMMmB,CAAAA,CAAoBjB,EAAA,CAAA,UAAA,CACxB,CAAC,CAAE,SAAA,CAAAC,CAAAA,CAAW,KAAAE,CAAAA,CAAM,UAAA,CAAAC,EAAY,GAAGE,CAAM,EAAGC,CAAAA,GAC1CC,GAAAA,CAAC,OACC,GAAA,CAAKD,CAAAA,CACL,UAAWjB,CAAAA,CAAG0B,EAAAA,CAAoB,CAAE,IAAA,CAAAb,CAAAA,CAAM,WAAAC,CAAW,CAAC,CAAA,CAAGH,CAAS,CAAA,CACjE,GAAGK,EACN,CAEJ,EACAW,EAAY,WAAA,CAAc,aAAA,KAEpBC,EAAAA,CAAqBpB,GAAAA,CACzB,yBACA,CACE,QAAA,CAAU,CACR,IAAA,CAAM,CACJ,GAAI,UAAA,CACJ,EAAA,CAAI,WACJ,EAAA,CAAI,UACN,CAAA,CACA,OAAA,CAAS,CACP,KAAA,CAAO,gBACP,MAAA,CAAQ,gBAAA,CACR,IAAK,aAAA,CACL,OAAA,CAAS,iBACX,CACF,CAAA,CACA,gBAAiB,CACf,IAAA,CAAM,KACN,OAAA,CAAS,OACX,CACF,CACF,CAAA,CAMMqB,GAAmBnB,EAAA,CAAA,UAAA,CACvB,CAAC,CAAE,SAAA,CAAAC,CAAAA,CAAW,IAAA,CAAAE,EAAM,OAAA,CAAAiB,CAAAA,CAAS,GAAGd,CAAM,CAAA,CAAGC,IACvCC,GAAAA,CAAC,KAAA,CAAA,CACC,IAAKD,CAAAA,CACL,SAAA,CAAWjB,EAAG4B,EAAAA,CAAmB,CAAE,KAAAf,CAAAA,CAAM,OAAA,CAAAiB,CAAQ,CAAC,CAAA,CAAGnB,CAAS,CAAA,CAC7D,GAAGK,CAAAA,CACN,CAEJ,EACAa,EAAAA,CAAW,YAAc,YAAA,CCxMlB,IAAME,GAAiBC,EAAA,CAAA,UAAA,CAC5B,CAAC,CAAE,KAAA,CAAAC,CAAAA,CAAO,WAAAC,CAAAA,CAAY,WAAA,CAAAC,CAAAA,CAAa,QAAA,CAAAC,CAAAA,CAAU,aAAA,CAAAC,EAAe,SAAA,CAAA1B,CAAAA,CAAW,QAAAC,CAAAA,CAAU,SAAA,CAAW,GAAGI,CAAM,CAAA,CAAGC,IACtGqB,IAAAA,CAAC7B,CAAAA,CAAA,CACC,GAAA,CAAKQ,CAAAA,CACL,QAASL,CAAAA,CACT,UAAA,CAAU,KACV,SAAA,CAAWZ,CAAAA,CAAG,EAAA,CAAIW,CAAS,CAAA,CAC1B,GAAGK,EAEJ,QAAA,CAAA,CAAAsB,IAAAA,CAAClB,EAAA,CACC,SAAA,CAAWiB,EAAgB,KAAA,CAAQ,QAAA,CACnC,KAAK,IAAA,CAEL,QAAA,CAAA,CAAAnB,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,YACb,QAAA,CAAAoB,IAAAA,CAAC,OAAI,SAAA,CAAU,yBAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAACM,CAAAA,CAAA,CAAU,KAAK,IAAA,CAAM,QAAA,CAAAS,EAAM,CAAA,CAC3BC,CAAAA,CAAAA,CACH,EACF,CAAA,CACCG,CAAAA,EACCnB,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,0BACZ,QAAA,CAAAmB,CAAAA,CACH,GAEJ,CAAA,CACAnB,GAAAA,CAACS,EAAA,CAAY,IAAA,CAAK,IAAA,CAAK,UAAA,CAAU,IAAA,CAC9B,QAAA,CAAAS,EACH,CAAA,CAAA,CACF,CAEJ,EACAL,EAAAA,CAAS,WAAA,CAAc,WCvCvB,IAAMQ,GAAgB/B,GAAAA,CACpB,wKAAA,CACA,CACE,QAAA,CAAU,CACR,OAAA,CAAS,CACP,OAAA,CACE,2EAAA,CACF,UACE,iFAAA,CACF,WAAA,CACE,wFACF,OAAA,CAAS,iBAAA,CACT,QACE,2EAAA,CACF,OAAA,CACE,4EACF,OAAA,CACE,yEAAA,CACF,QACE,6DAAA,CACF,QAAA,CACE,kEAEF,QAAA,CACE,qHAAA,CACF,WACE,4HAAA,CACF,UAAA,CACE,mIAAA,CACF,SAAA,CACE,mIAAA,CAEF,WAAA,CACE,6HACF,GAAA,CACE,qHAAA,CACF,YACE,mIAAA,CACF,mBAAA,CACE,6HAEF,MAAA,CACE,4HAAA,CACF,SACE,8GAAA,CACF,OAAA,CACE,oIACF,SAAA,CACE,qHAAA,CAEF,aACE,gJAAA,CACF,cAAA,CACE,qIACF,aAAA,CACE,sJAAA,CACF,eAAA,CACE,0IAAA,CAEF,YAAA,CACE,0HAAA,CACF,aACE,sJAAA,CACF,kBAAA,CACE,yIACF,aAAA,CACE,iIAAA,CAEF,cACE,qHAAA,CACF,WAAA,CACE,6HACF,YAAA,CACE,4HAAA,CACF,eACE,8GAAA,CACF,YAAA,CACE,6HAEF,QAAA,CACE,qHAAA,CACF,QACE,0IAAA,CACF,cAAA,CACE,4HAAA,CACF,OAAA,CACE,mIACJ,CACF,EACA,eAAA,CAAiB,CACf,QAAS,SACX,CACF,CACF,EAMA,SAASgC,EAAM,CAAE,SAAA,CAAA7B,EAAW,OAAA,CAAAC,CAAAA,CAAS,GAAGI,CAAM,CAAA,CAAe,CAC3D,OACEE,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAWlB,CAAAA,CAAGuC,EAAAA,CAAc,CAAE,OAAA,CAAA3B,CAAQ,CAAC,CAAA,CAAGD,CAAS,EAAI,GAAGK,CAAAA,CAAO,CAE1E,CCnGO,IAAMyB,GAAgB,CAAC,CAAE,MAAA,CAAAC,CAAO,CAAA,GAA0B,CAC/D,IAAMC,CAAAA,CAAWC,CAAAA,EACXA,EAAO,QAAA,CAAS,YAAY,EAAU1B,GAAAA,CAAC2B,UAAAA,CAAA,CAAW,SAAA,CAAU,SAAA,CAAU,EACtED,CAAAA,CAAO,QAAA,CAAS,gBAAgB,CAAA,CAAU1B,GAAAA,CAAC4B,OAAA,CAAO,SAAA,CAAU,SAAA,CAAU,CAAA,CACtEF,CAAAA,CAAO,QAAA,CAAS,gBAAgB,CAAA,CAAU1B,GAAAA,CAAC6B,YAAA,CAAY,SAAA,CAAU,UAAU,CAAA,CAC3EH,CAAAA,CAAO,QAAA,CAAS,gBAAgB,CAAA,CAAU1B,GAAAA,CAAC8B,QAAA,CAAQ,SAAA,CAAU,UAAU,CAAA,CACvEJ,CAAAA,CAAO,SAAS,mBAAmB,CAAA,CAAU1B,GAAAA,CAAC+B,SAAAA,CAAA,CAAU,SAAA,CAAU,UAAU,CAAA,CAC5EL,CAAAA,CAAO,SAAS,eAAe,CAAA,CAAU1B,IAACgC,GAAAA,CAAA,CAAI,UAAU,SAAA,CAAU,CAAA,CAClEN,EAAO,QAAA,CAAS,UAAU,EAAU1B,GAAAA,CAACiC,SAAAA,CAAA,CAAU,SAAA,CAAU,SAAA,CAAU,CAAA,CACnEP,CAAAA,CAAO,QAAA,CAAS,WAAW,EAAU1B,GAAAA,CAAC8B,OAAAA,CAAA,CAAQ,SAAA,CAAU,SAAA,CAAU,EAClEJ,CAAAA,CAAO,QAAA,CAAS,MAAM,CAAA,CAAU1B,GAAAA,CAACkC,KAAA,CAAK,SAAA,CAAU,UAAU,CAAA,CAC1DR,CAAAA,CAAO,SAAS,WAAW,CAAA,CAAU1B,GAAAA,CAAC4B,MAAAA,CAAA,CAAO,SAAA,CAAU,UAAU,CAAA,CACjEF,CAAAA,CAAO,SAAS,WAAW,CAAA,CAAU1B,IAACmC,UAAAA,CAAA,CAAW,UAAU,SAAA,CAAU,CAAA,CACrET,EAAO,QAAA,CAAS,SAAS,EAAU1B,GAAAA,CAACoC,MAAAA,CAAA,CAAO,SAAA,CAAU,SAAA,CAAU,CAAA,CAC/DV,CAAAA,CAAO,QAAA,CAAS,UAAU,EAAU1B,GAAAA,CAACqC,QAAAA,CAAA,CAAS,SAAA,CAAU,SAAA,CAAU,EAClEX,CAAAA,CAAO,QAAA,CAAS,SAAS,CAAA,EAAKA,CAAAA,CAAO,SAAS,UAAU,CAAA,CAAU1B,IAACsC,IAAAA,CAAA,CAAK,UAAU,SAAA,CAAU,CAAA,CAC5FZ,CAAAA,CAAO,QAAA,CAAS,QAAQ,CAAA,EAAKA,EAAO,QAAA,CAAS,UAAU,EAAU1B,GAAAA,CAAC6B,WAAAA,CAAA,CAAY,SAAA,CAAU,SAAA,CAAU,EAClGH,CAAAA,CAAO,QAAA,CAAS,UAAU,CAAA,CAAU1B,GAAAA,CAAC8B,QAAA,CAAQ,SAAA,CAAU,UAAU,CAAA,CAC9D9B,GAAAA,CAACoC,MAAAA,CAAA,CAAO,SAAA,CAAU,SAAA,CAAU,EAG/BG,CAAAA,CAAiB,CAACC,EAAiBd,CAAAA,GAAoB,CAE3D,GAAIA,CAAAA,EAAQ,QAAA,CAAS,YAAY,CAAA,CAAG,OAAO,gBAC3C,GAAIA,CAAAA,EAAQ,SAAS,gBAAgB,CAAA,CAAG,OAAO,iBAAA,CAC/C,GAAIA,CAAAA,EAAQ,QAAA,CAAS,gBAAgB,CAAA,CAAG,OAAO,cAAA,CAC/C,GAAIA,GAAQ,QAAA,CAAS,gBAAgB,EAAG,OAAO,kBAAA,CAG/C,GAFIA,CAAAA,EAAQ,QAAA,CAAS,mBAAmB,CAAA,EACpCA,CAAAA,EAAQ,SAAS,eAAe,CAAA,EAChCA,GAAQ,QAAA,CAAS,UAAU,CAAA,CAAG,OAAO,cAAA,CACzC,GAAIA,GAAQ,QAAA,CAAS,WAAW,EAAG,OAAO,kBAAA,CAC1C,GAAIA,CAAAA,EAAQ,QAAA,CAAS,MAAM,CAAA,CAAG,OAAO,eAErC,GADIA,CAAAA,EAAQ,SAAS,WAAW,CAAA,EAC5BA,GAAQ,QAAA,CAAS,WAAW,CAAA,CAAG,OAAO,eAAA,CAG1C,OAAQc,GACN,KAAK,aACH,OAAO,kBAAA,CACT,KAAK,QAAA,CACH,OAAO,eACT,KAAK,aAAA,CACH,OAAO,cAAA,CACT,QACE,OAAO,uBACX,CACF,EAEA,OAAIhB,CAAAA,CAAO,MAAA,GAAW,CAAA,CACbxB,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wCAAA,CAAyC,QAAA,CAAA,wBAAA,CAAsB,EAIrFA,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,WAAA,CACZ,QAAA,CAAAwB,EAAO,GAAA,CAAI,CAACiB,EAAOC,CAAAA,GAClBtB,IAAAA,CAAC,OAAmB,SAAA,CAAU,oBAAA,CAE3B,UAAAsB,CAAAA,GAAUlB,CAAAA,CAAO,MAAA,CAAS,CAAA,EAAKxB,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,sDAAA,CAAuD,CAAA,CAGtGA,IAAC,KAAA,CAAA,CAAI,SAAA,CAAWlB,EAAG,iCAAA,CAAmCyD,CAAAA,CAAeE,EAAM,MAAA,CAAQA,CAAAA,CAAM,MAAM,CAAC,CAAA,CAC9F,SAAAzC,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,SAAA,CAAW,QAAA,CAAAyB,CAAAA,CAAQgB,CAAAA,CAAM,MAAM,CAAA,CAAE,EAClD,CAAA,CAGArB,IAAAA,CAAC,OAAI,SAAA,CAAU,aAAA,CACb,UAAApB,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,qCAAA,CAAuC,QAAA,CAAAyC,EAAM,MAAA,CAAO,CAAA,CAChEA,EAAM,OAAA,EAAWzC,GAAAA,CAAC,KAAE,SAAA,CAAU,+BAAA,CAAiC,QAAA,CAAAyC,CAAAA,CAAM,OAAA,CAAQ,CAAA,CAC9EzC,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,0CAA2C,QAAA,CAAAyC,CAAAA,CAAM,UAAU,CAAA,CAAA,CAC1E,CAAA,CAAA,CAAA,CAdQA,EAAM,EAehB,CACD,EACH,CAEJ,MC5EME,EAAAA,CAAiBrD,GAAAA,CACrB,2VACA,CACE,QAAA,CAAU,CACR,OAAA,CAAS,CACP,OAAA,CAAS,wDAAA,CACT,WAAA,CACE,oEAAA,CACF,QACE,gFAAA,CACF,SAAA,CACE,+DACF,KAAA,CAAO,8CAAA,CACP,KAAM,iDACR,CAAA,CACA,KAAM,CACJ,OAAA,CAAS,iBACT,EAAA,CAAI,qBAAA,CACJ,GAAI,sBAAA,CACJ,IAAA,CAAM,WACR,CACF,CAAA,CACA,eAAA,CAAiB,CACf,OAAA,CAAS,SAAA,CACT,KAAM,SACR,CACF,CACF,CAAA,CAQMsD,CAAAA,CAAeC,cACnB,CAAC,CAAE,SAAA,CAAApD,CAAAA,CAAW,OAAA,CAAAC,CAAAA,CAAS,KAAAC,CAAAA,CAAM,OAAA,CAAAmD,EAAU,KAAA,CAAO,GAAGhD,CAAM,CAAA,CAAGC,CAAAA,GAGtDC,GAAAA,CAFW8C,CAAAA,CAAUC,IAAAA,CAAO,QAAA,CAE3B,CACC,SAAA,CAAWjE,CAAAA,CAAG6D,GAAe,CAAE,OAAA,CAAAjD,EAAS,IAAA,CAAAC,CAAAA,CAAM,UAAAF,CAAU,CAAC,CAAC,CAAA,CAC1D,GAAA,CAAKM,EACJ,GAAGD,CAAAA,CACN,CAGN,EACA8C,CAAAA,CAAO,WAAA,CAAc,QAAA,CCjDrB,IAAMI,GAAmB1D,GAAAA,CACvB,4JAAA,CACA,CACE,QAAA,CAAU,CACR,QAAS,CACP,OAAA,CAAS,6HAAA,CACT,KAAA,CAAO,mIAAA,CACP,OAAA,CAAS,wGACT,QAAA,CAAU,8EAAA,CACV,SAAU,kEACZ,CACF,EACA,eAAA,CAAiB,CACf,QAAS,SACX,CACF,CACF,CAAA,CAWM2D,EAAAA,CAAyBC,cAC7B,CAAC,CAAE,UAAAzD,CAAAA,CAAW,OAAA,CAAAC,CAAAA,CAAS,KAAA,CAAAyD,CAAAA,CAAO,IAAA,CAAAC,EAAM,KAAA,CAAAC,CAAAA,CAAO,QAAAC,CAAAA,CAAS,GAAGxD,CAAM,CAAA,CAAGC,CAAAA,GAAQ,CACtE,IAAMwD,CAAAA,CAAkBF,EAAQ,OAAA,CAAUC,CAAAA,CAAU,UAAYxD,CAAAA,CAAM,QAAA,CAAW,WAAaA,CAAAA,CAAM,QAAA,CAAW,UAAA,CAAaJ,CAAAA,CAE5H,OACE0B,IAAAA,CAAC,OAAI,SAAA,CAAU,WAAA,CACZ,UAAA+B,CAAAA,EACC/B,IAAAA,CAAC,SAAM,SAAA,CAAU,4FAAA,CACd,UAAA+B,CAAAA,CACArD,CAAAA,CAAM,UAAYE,GAAAA,CAAC,MAAA,CAAA,CAAK,UAAU,uBAAA,CAAwB,QAAA,CAAA,GAAA,CAAC,GAC9D,CAAA,CAEFA,GAAAA,CAAC,UAAA,CAAA,CACC,SAAA,CAAWlB,CAAAA,CAAGkE,EAAAA,CAAiB,CAAE,OAAA,CAASO,CAAAA,CAAiB,UAAA9D,CAAU,CAAC,CAAC,CAAA,CACvE,GAAA,CAAKM,EACJ,GAAGD,CAAAA,CACN,EACCsD,CAAAA,EAAQ,CAACC,GAAS,CAACC,CAAAA,EAClBtD,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,+BAAA,CAAiC,QAAA,CAAAoD,CAAAA,CAAK,CAAA,CAEpDC,GACCrD,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,0BAAA,CAA4B,QAAA,CAAAqD,EAAM,CAAA,CAEhDC,CAAAA,EACCtD,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,uBAAwB,QAAA,CAAAsD,CAAAA,CAAQ,GAEjD,CAEJ,CACF,EACAL,EAAAA,CAAiB,WAAA,CAAc,kBAAA,CCvD/B,IAAMO,EAAAA,CAAiBlE,GAAAA,CACrB,2LAAA,CACA,CACE,SAAU,CACR,OAAA,CAAS,CACP,OAAA,CAAS,kFAAA,CACT,MAAO,wFAAA,CACP,OAAA,CAAS,qEACT,QAAA,CAAU,kEACZ,CACF,CAAA,CACA,eAAA,CAAiB,CACf,OAAA,CAAS,SACX,CACF,CACF,CAAA,CAeMmE,CAAAA,CAAuBC,EAAA,CAAA,UAAA,CAG3B,CAAC,CAAE,QAAAhE,CAAAA,CAAS,KAAA,CAAAyD,EAAO,IAAA,CAAAC,CAAAA,CAAM,MAAAC,CAAAA,CAAO,OAAA,CAAAC,EAAS,WAAA,CAAAK,CAAAA,CAAa,QAAAC,CAAAA,CAAS,QAAA,CAAAC,EAAU,SAAA,CAAApE,CAAAA,CAAW,GAAGK,CAAM,CAAA,CAAGC,CAAAA,GAAQ,CACxG,IAAM+D,CAAAA,CAAgBT,EAAQ,OAAA,CAAUC,CAAAA,CAAU,UAAYO,CAAAA,CAAW,UAAA,CAAanE,EAEtF,OACE0B,IAAAA,CAAC,OAAI,SAAA,CAAWtC,CAAAA,CAAG,YAAaW,CAAS,CAAA,CACtC,UAAA0D,CAAAA,EACCnD,GAAAA,CAAC,SAAM,SAAA,CAAU,4FAAA,CACd,QAAA,CAAAmD,CAAAA,CACH,CAAA,CAEF/B,IAAAA,CAAiB,QAAhB,CAAsB,GAAGtB,EAAO,QAAA,CAAU+D,CAAAA,CACzC,UAAAzC,IAAAA,CAAiB,EAAA,CAAA,OAAA,CAAhB,CACC,GAAA,CAAKrB,CAAAA,CACL,UAAWjB,CAAAA,CAAG0E,EAAAA,CAAe,CAAE,OAAA,CAASM,CAAc,CAAC,CAAC,CAAA,CAExD,QAAA,CAAA,CAAA9D,GAAAA,CAAiB,EAAA,CAAA,KAAA,CAAhB,CAAsB,YAAa2D,CAAAA,CAAa,CAAA,CACjD3D,IAAiB,EAAA,CAAA,IAAA,CAAhB,CAAqB,QAAO,IAAA,CAC3B,QAAA,CAAAA,IAAC+D,WAAAA,CAAA,CAAY,UAAU,oBAAA,CAAqB,CAAA,CAC9C,GACF,CAAA,CACA/D,GAAAA,CAAiB,UAAhB,CACC,QAAA,CAAAoB,IAAAA,CAAiB,EAAA,CAAA,OAAA,CAAhB,CAAwB,SAAA,CAAU,0cACjC,QAAA,CAAA,CAAApB,GAAAA,CAAiB,kBAAhB,CAA+B,SAAA,CAAU,uDACxC,QAAA,CAAAA,GAAAA,CAACgE,UAAA,CAAU,SAAA,CAAU,UAAU,CAAA,CACjC,CAAA,CACAhE,IAAiB,EAAA,CAAA,QAAA,CAAhB,CAAyB,UAAU,KAAA,CACjC,QAAA,CAAA4D,CAAAA,CAAQ,GAAA,CAAKK,CAAAA,EACZ7C,IAAAA,CAAiB,QAAhB,CAEC,KAAA,CAAO6C,EAAO,KAAA,CACd,QAAA,CAAUA,EAAO,QAAA,CACjB,SAAA,CAAU,4NAEV,QAAA,CAAA,CAAAjE,GAAAA,CAAC,QAAK,SAAA,CAAU,8DAAA,CACd,SAAAA,GAAAA,CAAiB,EAAA,CAAA,aAAA,CAAhB,CACC,QAAA,CAAAA,GAAAA,CAACkE,KAAAA,CAAA,CAAM,SAAA,CAAU,SAAA,CAAU,EAC7B,CAAA,CACF,CAAA,CACAlE,IAAiB,EAAA,CAAA,QAAA,CAAhB,CAA0B,SAAAiE,CAAAA,CAAO,KAAA,CAAM,CAAA,CAAA,CAAA,CAVnCA,CAAAA,CAAO,KAWd,CACD,EACH,CAAA,CACAjE,GAAAA,CAAiB,oBAAhB,CAAiC,SAAA,CAAU,uDAC1C,QAAA,CAAAA,GAAAA,CAAC+D,WAAAA,CAAA,CAAY,SAAA,CAAU,SAAA,CAAU,EACnC,CAAA,CAAA,CACF,CAAA,CACF,GACF,CAAA,CACCX,CAAAA,EAAQ,CAACC,CAAAA,EAAS,CAACC,GAClBtD,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,+BAAA,CAAiC,QAAA,CAAAoD,EAAK,CAAA,CAEpDC,CAAAA,EACCrD,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,0BAAA,CAA4B,QAAA,CAAAqD,CAAAA,CAAM,CAAA,CAEhDC,GACCtD,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,sBAAA,CAAwB,QAAA,CAAAsD,EAAQ,CAAA,CAAA,CAEjD,CAEJ,CAAC,EACDG,CAAAA,CAAe,YAAc,gBAAA,CC5F7B,IAAMU,GAAc,CAAA,CACdC,EAAAA,CAAqB,GAAA,CAgB3B,IAAIC,EAAAA,CAAQ,CAAA,CAEZ,SAASC,EAAAA,EAAQ,CACf,OAAAD,EAAAA,CAAAA,CAASA,EAAAA,CAAQ,GAAK,MAAA,CAAO,gBAAA,CACtBA,GAAM,QAAA,EACf,CA0BA,IAAME,EAAAA,CAAgB,IAAI,GAAA,CAEpBC,EAAAA,CAAoBC,GAAoB,CAC5C,GAAIF,EAAAA,CAAc,GAAA,CAAIE,CAAO,CAAA,CAC3B,OAGF,IAAMC,CAAAA,CAAU,WAAW,IAAM,CAC/BH,GAAc,MAAA,CAAOE,CAAO,EAC5BE,EAAAA,CAAS,CACP,KAAM,cAAA,CACN,OAAA,CAASF,CACX,CAAC,EACH,EAAGL,EAAkB,CAAA,CAErBG,EAAAA,CAAc,GAAA,CAAIE,CAAAA,CAASC,CAAO,EACpC,CAAA,CAEaE,EAAAA,CAAU,CAACC,CAAAA,CAAcnD,CAAAA,GAA0B,CAC9D,OAAQA,CAAAA,CAAO,MACb,KAAK,YACH,OAAO,CACL,GAAGmD,CAAAA,CACH,MAAA,CAAQ,CAACnD,CAAAA,CAAO,KAAA,CAAO,GAAGmD,CAAAA,CAAM,MAAM,CAAA,CAAE,MAAM,CAAA,CAAGV,EAAW,CAC9D,CAAA,CAEF,KAAK,eACH,OAAO,CACL,GAAGU,CAAAA,CACH,MAAA,CAAQA,EAAM,MAAA,CAAO,GAAA,CAAKC,GACxBA,CAAAA,CAAE,EAAA,GAAOpD,EAAO,KAAA,CAAM,EAAA,CAAK,CAAE,GAAGoD,CAAAA,CAAG,GAAGpD,EAAO,KAAM,CAAA,CAAIoD,CACzD,CACF,CAAA,CAEF,KAAK,eAAA,CAAiB,CACpB,GAAM,CAAE,OAAA,CAAAL,CAAQ,CAAA,CAAI/C,CAAAA,CAIpB,OAAI+C,CAAAA,CACFD,EAAAA,CAAiBC,CAAO,CAAA,CAExBI,CAAAA,CAAM,MAAA,CAAO,OAAA,CAASE,CAAAA,EAAU,CAC9BP,GAAiBO,CAAAA,CAAM,EAAE,EAC3B,CAAC,CAAA,CAGI,CACL,GAAGF,CAAAA,CACH,OAAQA,CAAAA,CAAM,MAAA,CAAO,IAAKC,CAAAA,EACxBA,CAAAA,CAAE,KAAOL,CAAAA,EAAWA,CAAAA,GAAY,OAC5B,CACE,GAAGK,CAAAA,CACH,IAAA,CAAM,KACR,CAAA,CACAA,CACN,CACF,CACF,CACA,KAAK,cAAA,CACH,OAAIpD,CAAAA,CAAO,OAAA,GAAY,OACd,CACL,GAAGmD,EACH,MAAA,CAAQ,EACV,CAAA,CAEK,CACL,GAAGA,CAAAA,CACH,MAAA,CAAQA,CAAAA,CAAM,MAAA,CAAO,MAAA,CAAQC,CAAAA,EAAMA,EAAE,EAAA,GAAOpD,CAAAA,CAAO,OAAO,CAC5D,CACJ,CACF,CAAA,CAEMsD,EAAAA,CAA2C,EAAC,CAE9CC,EAAAA,CAAqB,CAAE,MAAA,CAAQ,EAAG,EAEtC,SAASN,GAASjD,CAAAA,CAAgB,CAChCuD,EAAAA,CAAcL,EAAAA,CAAQK,EAAAA,CAAavD,CAAM,EACzCsD,EAAAA,CAAU,OAAA,CAASE,GAAa,CAC9BA,CAAAA,CAASD,EAAW,EACtB,CAAC,EACH,CAIA,SAASF,GAAM,CAAE,GAAGjF,CAAM,CAAA,CAAU,CAClC,IAAMqF,CAAAA,CAAKb,EAAAA,EAAM,CAEXc,CAAAA,CAAUtF,CAAAA,EACd6E,EAAAA,CAAS,CACP,IAAA,CAAM,cAAA,CACN,MAAO,CAAE,GAAG7E,EAAO,EAAA,CAAAqF,CAAG,CACxB,CAAC,CAAA,CACGE,EAAU,IAAMV,EAAAA,CAAS,CAAE,IAAA,CAAM,eAAA,CAAiB,QAASQ,CAAG,CAAC,CAAA,CAErE,OAAAR,EAAAA,CAAS,CACP,KAAM,WAAA,CACN,KAAA,CAAO,CACL,GAAG7E,CAAAA,CACH,GAAAqF,CAAAA,CACA,IAAA,CAAM,KACN,YAAA,CAAeG,CAAAA,EAAS,CACjBA,CAAAA,EAAMD,CAAAA,GACb,CACF,CACF,CAAC,CAAA,CAEM,CACL,EAAA,CAAIF,CAAAA,CACJ,OAAA,CAAAE,CAAAA,CACA,OAAAD,CACF,CACF,CAEA,SAASG,EAAAA,EAAW,CAClB,GAAM,CAACV,EAAOW,CAAQ,CAAA,CAAUC,YAAgBR,EAAW,CAAA,CAE3D,OAAMQ,EAAA,CAAA,SAAA,CAAU,KACdT,GAAU,IAAA,CAAKQ,CAAQ,CAAA,CAChB,IAAM,CACX,IAAM9C,EAAQsC,EAAAA,CAAU,OAAA,CAAQQ,CAAQ,CAAA,CACpC9C,CAAAA,CAAQ,IACVsC,EAAAA,CAAU,MAAA,CAAOtC,EAAO,CAAC,EAE7B,GACC,CAACmC,CAAK,CAAC,CAAA,CAEH,CACL,GAAGA,CAAAA,CACH,KAAA,CAAAE,EAAAA,CACA,OAAA,CAAUN,CAAAA,EAAqBE,EAAAA,CAAS,CAAE,IAAA,CAAM,eAAA,CAAiB,QAAAF,CAAQ,CAAC,CAC5E,CACF,CClLA,IAAMiB,GAAoB,CACxB,CAAE,MAAO,UAAA,CAAY,KAAA,CAAO,UAAW,CAAA,CACvC,CAAE,MAAO,eAAA,CAAiB,KAAA,CAAO,eAAgB,CACnD,CAAA,CAOaC,GAAa,CAAC,CAAE,QAAAC,CAAAA,CAAS,KAAA,CAAAC,CAAM,CAAA,GAAuB,CACjE,GAAM,CAACC,CAAAA,CAAgBC,CAAiB,EAAIC,QAAAA,CAAS,KAAK,EACpD,CAACC,CAAAA,CAASC,CAAU,CAAA,CAAIF,QAAAA,CAAS,EAAE,CAAA,CACnC,CAACG,EAAUC,CAAW,CAAA,CAAIJ,SAAuC,UAAU,CAAA,CAC3E,CAACK,CAAAA,CAAcC,CAAe,CAAA,CAAIN,SAAS,KAAK,CAAA,CAEhDO,EAAY,IAAM,CACtBL,EAAW,EAAE,CAAA,CACbE,EAAY,UAAU,EACxB,EAEMI,CAAAA,CAAmB,IAAM,CAC7BT,CAAAA,CAAkB,KAAK,EACvBQ,CAAAA,GACF,CAAA,CAEME,CAAAA,CAAgB,SAAY,CAChC,GAAI,CAACR,CAAAA,CAAQ,MAAK,CAAG,CACnBlB,GAAM,CACJ,KAAA,CAAO,QACP,WAAA,CAAa,uCAAA,CACb,QAAS,aACX,CAAC,EACD,MACF,CAEAuB,EAAgB,IAAI,CAAA,CAGpB,UAAA,CAAW,IAAM,CACfvB,EAAAA,CAAM,CACJ,KAAA,CAAO,YAAA,CACP,YAAa,uCACf,CAAC,EACDgB,CAAAA,CAAkB,KAAK,EACvBQ,CAAAA,EAAU,CACVD,EAAgB,KAAK,EACvB,EAAG,GAAG,EACR,EAEMI,CAAAA,CAAmB,CAACC,CAAAA,CAAgBC,CAAAA,GAAwB,CAChE7B,EAAAA,CAAM,CACJ,KAAA,CAAO,cAAA,CACP,YAAa,2BACf,CAAC,EAED,OAAA,CAAQ,GAAA,CAAI,iBAAkB4B,CAAM,EACtC,EAEA,OACEvF,IAAAA,CAAC,OAAI,SAAA,CAAU,WAAA,CAEZ,UAAA0E,CAAAA,EAAkBe,YAAAA,CACjBzF,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,4DAAA,CACb,UAAApB,GAAAA,CAAC,KAAA,CAAA,CACC,UAAU,iDAAA,CACV,OAAA,CAASwG,EACX,CAAA,CACApF,IAAAA,CAAC,OAAI,SAAA,CAAU,0EAAA,CACb,UAAAA,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wCAAA,CACb,QAAA,CAAA,CAAApB,IAAC,IAAA,CAAA,CAAG,SAAA,CAAU,oBAAA,CAAqB,QAAA,CAAA,UAAA,CAAQ,CAAA,CAC3CA,GAAAA,CAAC4C,EAAA,CACC,OAAA,CAAQ,QACR,IAAA,CAAK,IAAA,CACL,UAAU,aAAA,CACV,OAAA,CAAS4D,EAET,QAAA,CAAAxG,GAAAA,CAAC8G,IAAA,CAAE,SAAA,CAAU,UAAU,CAAA,CACzB,CAAA,CAAA,CACF,EAEA1F,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,WAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAACyD,EAAA,CACC,KAAA,CAAM,YACN,KAAA,CAAO0C,CAAAA,CACP,cAAgBhH,CAAAA,EAAUiH,CAAAA,CAAYjH,CAAqC,CAAA,CAC3E,OAAA,CAASuG,GACX,CAAA,CACA1F,GAAAA,CAACiD,GAAA,CACC,KAAA,CAAM,OACN,WAAA,CAAY,yBAAA,CACZ,KAAA,CAAOgD,CAAAA,CACP,QAAA,CAAWc,CAAAA,EAAMb,EAAWa,CAAAA,CAAE,MAAA,CAAO,KAAK,CAAA,CAC1C,IAAA,CAAM,EACN,QAAA,CAAQ,IAAA,CACV,GACF,CAAA,CAEA3F,IAAAA,CAAC,OAAI,SAAA,CAAU,iBAAA,CACb,UAAApB,GAAAA,CAAC4C,CAAAA,CAAA,CACC,OAAA,CAAQ,SAAA,CACR,OAAA,CAAS4D,CAAAA,CACT,QAAA,CAAUH,CAAAA,CACV,UAAU,QAAA,CACX,QAAA,CAAA,QAAA,CAED,EACArG,GAAAA,CAAC4C,CAAAA,CAAA,CACC,OAAA,CAAS6D,CAAAA,CACT,SAAUJ,CAAAA,EAAgB,CAACJ,EAAQ,IAAA,EAAK,CACxC,UAAU,QAAA,CAET,QAAA,CAAAI,EAAe,WAAA,CAAc,UAAA,CAChC,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CACA,SAAS,IACX,CAAA,CAGAjF,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,YACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,OAAI,SAAA,CAAU,mCAAA,CACb,UAAApB,GAAAA,CAAC,IAAA,CAAA,CAAG,UAAU,qCAAA,CAAsC,QAAA,CAAA,cAAA,CAAY,EAChEoB,IAAAA,CAACwB,CAAAA,CAAA,CACC,OAAA,CAAS,IAAMmD,CAAAA,CAAkB,IAAI,CAAA,CACrC,OAAA,CAAQ,QACR,IAAA,CAAK,IAAA,CACL,UAAU,uCAAA,CAEV,QAAA,CAAA,CAAA/F,IAACgH,IAAAA,CAAA,CAAK,UAAU,SAAA,CAAU,CAAA,CAAE,YAE9B,CAAA,CAAA,CACF,CAAA,CACCnB,EAAM,MAAA,GAAW,CAAA,CAChBzE,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wCAAA,CACb,UAAApB,GAAAA,CAACiH,aAAAA,CAAA,CAAc,SAAA,CAAU,iCAAA,CAAkC,EAC3DjH,GAAAA,CAAC,GAAA,CAAA,CAAE,wBAAY,CAAA,CAAA,CACjB,CAAA,CAEAA,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,YACZ,QAAA,CAAA6F,CAAAA,CAAM,IAAKqB,CAAAA,EACV9F,IAAAA,CAAC,KAAA,CAAA,CAEC,SAAA,CAAU,mCAAA,CAEV,QAAA,CAAA,CAAAA,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,8CACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,OAAI,SAAA,CAAU,yBAAA,CACb,UAAApB,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,qCAAA,CAAuC,QAAA,CAAAkH,EAAK,IAAA,CAAK,CAAA,CAC9DlH,IAACsB,CAAAA,CAAA,CAAM,OAAA,CAAS4F,CAAAA,CAAK,IAAA,GAAS,UAAA,CAAa,UAAY,SAAA,CACpD,QAAA,CAAAA,EAAK,IAAA,GAAS,UAAA,CAAa,MAAQ,UAAA,CACtC,CAAA,CAAA,CACF,CAAA,CACA9F,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,0BACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,QAAK,SAAA,CAAU,iDAAA,CACb,SAAAkH,CAAAA,CAAK,SAAA,CACR,CAAA,CACAlH,GAAAA,CAAC4C,CAAAA,CAAA,CACC,QAAQ,OAAA,CACR,IAAA,CAAK,KACL,SAAA,CAAU,yDAAA,CACV,QAAS,IAAM8D,CAAAA,CAAiBQ,EAAK,EAAA,CAAIA,CAAAA,CAAK,OAAO,CAAA,CAErD,QAAA,CAAAlH,IAACmH,MAAAA,CAAA,CAAO,UAAU,SAAA,CAAU,CAAA,CAC9B,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CACAnH,GAAAA,CAAC,KAAE,SAAA,CAAU,yBAAA,CAA2B,SAAAkH,CAAAA,CAAK,OAAA,CAAQ,IAxBhDA,CAAAA,CAAK,EAyBZ,CACD,CAAA,CACH,CAAA,CAAA,CAEJ,GACF,CAEJ,MCrLME,EAAAA,CAAgB9H,GAAAA,CACpB,uMACA,CACE,QAAA,CAAU,CACR,OAAA,CAAS,CACP,QAAS,6HAAA,CACT,KAAA,CAAO,oIACP,OAAA,CAAS,uGAAA,CACT,SAAU,kEAAA,CACV,QAAA,CAAU,sDACZ,CAAA,CACA,IAAA,CAAM,CACJ,OAAA,CAAS,MAAA,CACT,EAAA,CAAI,MACJ,EAAA,CAAI,MACN,CACF,CAAA,CACA,eAAA,CAAiB,CACf,OAAA,CAAS,SAAA,CACT,KAAM,SACR,CACF,CACF,CAAA,CAYM+H,CAAAA,CAAsBC,cAC1B,CAAC,CAAE,UAAA7H,CAAAA,CAAW,OAAA,CAAAC,CAAAA,CAAS,IAAA,CAAAC,CAAAA,CAAM,KAAA,CAAAwD,EAAO,IAAA,CAAAC,CAAAA,CAAM,MAAAC,CAAAA,CAAO,OAAA,CAAAC,EAAS,SAAA,CAAAiE,CAAAA,CAAW,GAAGzH,CAAM,CAAA,CAAGC,IAAQ,CACvF,IAAMyH,EAAenE,CAAAA,CAAQ,OAAA,CAAUC,EAAU,SAAA,CAAYxD,CAAAA,CAAM,QAAA,CAAW,UAAA,CAAaA,CAAAA,CAAM,QAAA,CAAW,WAAaJ,CAAAA,CAEzH,OACE0B,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,YACZ,QAAA,CAAA,CAAA+B,CAAAA,EACC/B,KAAC,OAAA,CAAA,CAAM,SAAA,CAAU,6FACd,QAAA,CAAA,CAAA+B,CAAAA,CACArD,EAAM,QAAA,EAAYE,GAAAA,CAAC,QAAK,SAAA,CAAU,uBAAA,CAAwB,QAAA,CAAA,GAAA,CAAC,CAAA,CAAA,CAC9D,CAAA,CAEFoB,IAAAA,CAAC,OAAI,SAAA,CAAU,UAAA,CACb,UAAApB,GAAAA,CAAC,OAAA,CAAA,CACC,UAAWlB,CAAAA,CAAGsI,EAAAA,CAAc,CAAE,OAAA,CAASI,CAAAA,CAAc,KAAA7H,CAAAA,CAAM,SAAA,CAAAF,CAAU,CAAC,CAAC,EACvE,GAAA,CAAKM,CAAAA,CACJ,GAAGD,CAAAA,CACN,CAAA,CACCyH,CAAAA,EACCvH,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,sDACb,QAAA,CAAAA,GAAAA,CAAC,OAAI,SAAA,CAAU,gFAAA,CAAiF,EAClG,CAAA,CAAA,CAEJ,CAAA,CACCoD,GAAQ,CAACC,CAAAA,EAAS,CAACC,CAAAA,EAClBtD,GAAAA,CAAC,KAAE,SAAA,CAAU,+BAAA,CAAiC,QAAA,CAAAoD,CAAAA,CAAK,CAAA,CAEpDC,CAAAA,EACCrD,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,2BAA4B,QAAA,CAAAqD,CAAAA,CAAM,EAEhDC,CAAAA,EACCtD,GAAAA,CAAC,KAAE,SAAA,CAAU,sBAAA,CAAwB,SAAAsD,CAAAA,CAAQ,CAAA,CAAA,CAEjD,CAEJ,CACF,EACA+D,EAAc,WAAA,CAAc,eAAA,CC1DrB,IAAMI,EAAAA,CAAiB,CAAC,CAAE,OAAA,CAAA7B,EAAS,SAAA,CAAA8B,CAAAA,CAAW,qBAAAC,CAAqB,CAAA,GAA2B,CACnG,GAAM,CAACC,EAAaC,CAAc,CAAA,CAAI7B,SAAS,KAAK,CAAA,CAC9C,CAAC8B,CAAAA,CAAkBC,CAAmB,CAAA,CAAI/B,SAAS,KAAK,CAAA,CACxD,CAACgC,CAAAA,CAAcC,CAAe,EAAIjC,QAAAA,CAAsB,IAAI,EAC5D,CAACkC,CAAAA,CAAcC,CAAe,CAAA,CAAInC,QAAAA,CAAS,EAAE,CAAA,CAC7C,CAAC/E,EAAamH,CAAc,CAAA,CAAIpC,QAAAA,CAAS,EAAE,CAAA,CAC3C,CAACqC,EAAcC,CAAe,CAAA,CAAItC,SAAS,EAAE,CAAA,CAC7C,CAACuC,CAAAA,CAAiBC,CAAkB,EAAIxC,QAAAA,CAA+B,IAAI,EAE3EyC,CAAAA,CAAeC,CAAAA,EACK,CAAC,MAAA,CAAQ,OAAA,CAAS,OAAQ,MAAA,CAAQ,OAAA,CAAS,MAAM,CAAA,CAClD,IAAA,CAAKC,CAAAA,EAAOD,EAAK,WAAA,EAAY,CAAE,SAASC,CAAG,CAAC,EAG/DC,CAAAA,CAAkBC,CAAAA,EAAuB,CACzCA,CAAAA,CAAI,GAAA,EACN,OAAO,IAAA,CAAKA,CAAAA,CAAI,IAAK,QAAQ,CAAA,CAE/B9D,GAAM,CAAE,KAAA,CAAO,UAAA,CAAY,WAAA,CAAa,CAAA,YAAA,EAAe8D,CAAAA,CAAI,IAAI,CAAA,CAAG,CAAC,EACrE,CAAA,CAEMC,CAAAA,CAAoB/B,GAA2C,CACnE,IAAMgC,EAAOhC,CAAAA,CAAE,MAAA,CAAO,QAAQ,CAAC,CAAA,CAC1BgC,IAELd,CAAAA,CAAgBc,CAAI,EACpBZ,CAAAA,CAAgBY,CAAAA,CAAK,IAAI,CAAA,EAC3B,CAAA,CAEMC,CAAAA,CAAqB,IAAM,CAC/B,GAAI,CAAChB,CAAAA,EAAgB,CAACE,GAAgB,CAACG,CAAAA,CAAc,CACnDtD,EAAAA,CAAM,CACJ,KAAA,CAAO,sBACP,WAAA,CAAa,oCAAA,CACb,QAAS,aACX,CAAC,EACD,MACF,CAEA8C,CAAAA,CAAe,IAAI,CAAA,CAGnB,UAAA,CAAW,IAAM,EACoB,CAKjC,KAAM,CAAA,EAAA,CAAIG,CAAAA,CAAa,IAAA,CAAO,IAAA,CAAO,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAC,CAAA,GAAA,CAAA,CAErD,UAAA,CAAY,IAAI,IAAA,EAAK,CAAE,aACzB,GAEAjD,GAAM,CACJ,KAAA,CAAO,oBACP,WAAA,CAAa,CAAA,EAAGmD,CAAY,CAAA,sBAAA,CAC9B,CAAC,CAAA,CACDL,CAAAA,CAAe,KAAK,CAAA,CACpBE,EAAoB,KAAK,CAAA,CACzBxB,IACF,CAAA,CAAG,GAAI,EACT,CAAA,CAEMA,EAAY,IAAM,CACtB0B,EAAgB,IAAI,CAAA,CACpBE,EAAgB,EAAE,CAAA,CAClBC,EAAe,EAAE,CAAA,CACjBE,CAAAA,CAAgB,EAAE,CAAA,CAClB,IAAMW,EAAY,QAAA,CAAS,cAAA,CAAe,aAAa,CAAA,CACnDA,CAAAA,GAAWA,EAAU,KAAA,CAAQ,EAAA,EACnC,EAEMC,CAAAA,CAAqB,IAAM,CAC/BnB,CAAAA,CAAoB,KAAK,EACzBxB,CAAAA,GACF,EAEM4C,CAAAA,CAAeC,CAAAA,EACZpJ,GAAAA,CAACqJ,QAAAA,CAAA,CAAS,SAAA,CAAU,UAAU,CAAA,CAGjCC,EAAAA,CAAoBF,GAAiB,CACzC,OAAQA,EAAK,WAAA,EAAY,EACvB,KAAK,KAAA,CACH,OAAO,cAAA,CACT,KAAK,OACL,KAAK,KAAA,CACH,OAAO,eAAA,CACT,KAAK,MAAA,CACL,KAAK,KAAA,CACH,OAAO,iBACT,KAAK,KAAA,CACL,KAAK,MAAA,CACL,KAAK,MACH,OAAO,iBAAA,CACT,QACE,OAAO,uBACX,CACF,CAAA,CAEMG,EAAAA,CAAsB,CAC1B,CAAE,KAAA,CAAO,oBAAqB,KAAA,CAAO,qBAAsB,CAAA,CAC3D,CAAE,KAAA,CAAO,kBAAA,CAAoB,MAAO,oBAAqB,CAAA,CACzD,CAAE,KAAA,CAAO,UAAA,CAAY,MAAO,UAAW,CAAA,CACvC,CAAE,KAAA,CAAO,kBAAA,CAAoB,MAAO,kBAAmB,CAAA,CACvD,CAAE,KAAA,CAAO,gBAAA,CAAkB,MAAO,gBAAiB,CAAA,CACnD,CAAE,KAAA,CAAO,kBAAA,CAAoB,KAAA,CAAO,kBAAmB,CAAA,CACvD,CAAE,MAAO,cAAA,CAAgB,KAAA,CAAO,cAAe,CAAA,CAC/C,CAAE,MAAO,OAAA,CAAS,KAAA,CAAO,OAAQ,CACnC,CAAA,CAEA,OACEnI,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,WAAA,CAEZ,QAAA,CAAA,CAAA0G,CAAAA,EAAoBjB,YAAAA,CACnBzF,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,4DAAA,CACb,QAAA,CAAA,CAAApB,IAAC,KAAA,CAAA,CACC,SAAA,CAAU,kDACV,OAAA,CAASkJ,CAAAA,CACX,EACA9H,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,0EAAA,CACb,QAAA,CAAA,CAAAA,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yCACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,IAAA,CAAA,CAAG,SAAA,CAAU,oBAAA,CAAqB,QAAA,CAAA,iBAAA,CAAe,EAClDA,GAAAA,CAAC4C,CAAAA,CAAA,CACC,OAAA,CAAQ,OAAA,CACR,KAAK,IAAA,CACL,SAAA,CAAU,cACV,OAAA,CAASsG,CAAAA,CAET,SAAAlJ,GAAAA,CAAC8G,GAAAA,CAAA,CAAE,SAAA,CAAU,SAAA,CAAU,EACzB,CAAA,CAAA,CACF,CAAA,CAEA1F,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,WAAA,CAEb,UAAAA,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,6FAAA,CACb,QAAA,CAAA,CAAApB,IAAC,OAAA,CAAA,CACC,IAAA,CAAK,OACL,EAAA,CAAG,oBAAA,CACH,UAAU,QAAA,CACV,QAAA,CAAU8I,EACV,QAAA,CAAUlB,CAAAA,CACZ,EACAxG,IAAAA,CAAC,OAAA,CAAA,CACC,OAAA,CAAQ,oBAAA,CACR,SAAA,CAAWtC,CAAAA,CACT,kDACA8I,CAAAA,EAAe,+BACjB,EAEA,QAAA,CAAA,CAAA5H,GAAAA,CAACwJ,OAAA,CAAO,SAAA,CAAU,gCAAgC,CAAA,CAClDpI,IAAAA,CAAC,OACC,QAAA,CAAA,CAAApB,GAAAA,CAAC,KAAE,SAAA,CAAU,qCAAA,CACV,SAAAgI,CAAAA,CAAe,aAAA,CAAgB,kCAAA,CAClC,CAAA,CACAhI,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,oCAAA,CAAqC,QAAA,CAAA,qCAAA,CAElD,GACF,CAAA,CAAA,CACF,CAAA,CAAA,CACF,EAECgI,CAAAA,EACC5G,IAAAA,CAAC,OAAI,SAAA,CAAU,4BAAA,CACb,UAAApB,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,+BAAA,CAAgC,QAAA,CAAA,gBAAA,CAAc,EAC3DA,GAAAA,CAAC,GAAA,CAAA,CAAE,SAAA,CAAU,qBAAA,CAAuB,QAAA,CAAAgI,CAAAA,CAAa,KAAK,CAAA,CACtD5G,IAAAA,CAAC,KAAE,SAAA,CAAU,+BAAA,CACT,WAAA4G,CAAAA,CAAa,IAAA,CAAO,KAAO,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAA,CAAE,KAAA,CAAA,CAChD,GACF,CAAA,CAGFhI,GAAAA,CAACqH,EAAA,CACC,KAAA,CAAM,eAAA,CACN,KAAA,CAAOa,CAAAA,CACP,QAAA,CAAWnB,GAAMoB,CAAAA,CAAgBpB,CAAAA,CAAE,OAAO,KAAK,CAAA,CAC/C,YAAY,qBAAA,CACd,CAAA,CAEA/G,IAACiD,EAAAA,CAAA,CACC,MAAM,aAAA,CACN,KAAA,CAAOhC,EACP,QAAA,CAAW8F,CAAAA,EAAMqB,EAAerB,CAAAA,CAAE,MAAA,CAAO,KAAK,CAAA,CAC9C,WAAA,CAAY,uCAAA,CACZ,KAAM,CAAA,CACR,CAAA,CAEA/G,IAACyD,CAAAA,CAAA,CACC,MAAM,eAAA,CACN,KAAA,CAAO4E,CAAAA,CACP,aAAA,CAAeC,CAAAA,CACf,WAAA,CAAY,uBACZ,OAAA,CAASiB,EAAAA,CACX,GACF,CAAA,CAEAnI,IAAAA,CAAC,OAAI,SAAA,CAAU,iBAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC4C,CAAAA,CAAA,CACC,QAAQ,SAAA,CACR,OAAA,CAASsG,EACT,QAAA,CAAUtB,CAAAA,CACV,UAAU,QAAA,CACX,QAAA,CAAA,QAAA,CAED,EACA5H,GAAAA,CAAC4C,CAAAA,CAAA,CACC,OAAA,CAASoG,CAAAA,CACT,SAAUpB,CAAAA,CACV,SAAA,CAAU,SAET,QAAA,CAAAA,CAAAA,CAAc,cAAA,CAAiB,QAAA,CAClC,CAAA,CAAA,CACF,CAAA,CAAA,CACF,GACF,CAAA,CACA,QAAA,CAAS,IACX,CAAA,CAGAxG,IAAAA,CAAC,OAAI,SAAA,CAAU,WAAA,CACb,UAAAA,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,mCAAA,CACb,QAAA,CAAA,CAAApB,IAAC,IAAA,CAAA,CAAG,SAAA,CAAU,sCAAsC,QAAA,CAAA,oBAAA,CAAkB,CAAA,CACtEoB,IAAAA,CAACwB,CAAAA,CAAA,CACC,OAAA,CAAS,IAAMmF,CAAAA,CAAoB,IAAI,EACvC,OAAA,CAAQ,OAAA,CACR,KAAK,IAAA,CACL,SAAA,CAAU,wCAEV,QAAA,CAAA,CAAA/H,GAAAA,CAACwJ,OAAA,CAAO,SAAA,CAAU,UAAU,CAAA,CAAE,QAAA,CAAA,CAEhC,GACF,CAAA,CACC9B,CAAAA,CAAU,MAAA,GAAW,CAAA,CACpBtG,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wCAAA,CACb,QAAA,CAAA,CAAApB,IAACqJ,QAAAA,CAAA,CAAS,UAAU,iCAAA,CAAkC,CAAA,CACtDrJ,IAAC,GAAA,CAAA,CAAE,QAAA,CAAA,2BAAA,CAAyB,GAC9B,CAAA,CAEAA,GAAAA,CAAC,OAAI,SAAA,CAAU,WAAA,CACZ,SAAA0H,CAAAA,CAAU,GAAA,CAAKmB,CAAAA,EACdzH,IAAAA,CAAC,KAAA,CAAA,CAEC,SAAA,CAAU,wEAGT,QAAA,CAAA,CAAAqH,CAAAA,CAAYI,EAAI,IAAI,CAAA,EAAKA,EAAI,GAAA,EAC5B7I,GAAAA,CAAC,OAAI,SAAA,CAAU,oBAAA,CACb,SAAAA,GAAAA,CAAC,KAAA,CAAA,CACC,IAAK6I,CAAAA,CAAI,GAAA,CACT,IAAKA,CAAAA,CAAI,IAAA,CACT,SAAA,CAAU,0BAAA,CACZ,CAAA,CACF,CAAA,CAGFzH,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wCACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,OAAI,SAAA,CAAU,wCAAA,CACZ,WAACqH,CAAAA,CAAYI,CAAAA,CAAI,IAAI,CAAA,EACpB7I,GAAAA,CAAC,OAAI,SAAA,CAAWlB,CAAAA,CAAGwK,GAAiBT,CAAAA,CAAI,IAAI,CAAC,CAAA,CAC1C,QAAA,CAAAM,CAAAA,CAAYN,EAAI,IAAI,CAAA,CACvB,EAEFzH,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,gBAAA,CACb,QAAA,CAAA,CAAApB,IAAC,IAAA,CAAA,CAAG,SAAA,CAAU,+BAAgC,QAAA,CAAA6I,CAAAA,CAAI,KAAK,CAAA,CACvD7I,GAAAA,CAAC,QAAK,SAAA,CAAWlB,CAAAA,CAAG,6DAAA,CAA+DwK,EAAAA,CAAiBT,CAAAA,CAAI,IAAI,CAAC,CAAA,CAC1G,QAAA,CAAAA,EAAI,IAAA,CACP,CAAA,CACCA,EAAI,WAAA,EACH7I,GAAAA,CAAC,KAAE,SAAA,CAAU,8BAAA,CAAgC,SAAA6I,CAAAA,CAAI,WAAA,CAAY,EAE/DzH,IAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,oCAAA,CACV,QAAA,CAAA,CAAAyH,CAAAA,CAAI,IAAA,CAAK,sBAAA,CAAgBA,CAAAA,CAAI,WAAW,UAAA,CAAI,IAAI,KAAKA,CAAAA,CAAI,UAAU,EAAE,kBAAA,EAAmB,CAAA,CAC3F,GACF,CAAA,CAAA,CACF,CAAA,CACAzH,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,0BACb,QAAA,CAAA,CAAApB,GAAAA,CAAC4C,EAAA,CACC,OAAA,CAAQ,OAAA,CACR,IAAA,CAAK,IAAA,CACL,SAAA,CAAU,cACV,OAAA,CAAS,IAAM4F,EAAmBK,CAAG,CAAA,CAErC,SAAA7I,GAAAA,CAACgC,GAAAA,CAAA,CAAI,SAAA,CAAU,SAAA,CAAU,EAC3B,CAAA,CACAhC,GAAAA,CAAC4C,EAAA,CACC,OAAA,CAAQ,QACR,IAAA,CAAK,IAAA,CACL,SAAA,CAAU,aAAA,CACV,OAAA,CAAS,IAAMgG,EAAeC,CAAG,CAAA,CAEjC,SAAA7I,GAAAA,CAACyJ,QAAAA,CAAA,CAAS,SAAA,CAAU,SAAA,CAAU,EAChC,CAAA,CACAzJ,GAAAA,CAAC4C,EAAA,CACC,OAAA,CAAQ,QACR,IAAA,CAAK,IAAA,CACL,UAAU,yDAAA,CACV,OAAA,CAAS,IAAMmC,EAAAA,CAAM,CAAE,KAAA,CAAO,SAAU,WAAA,CAAa,CAAA,QAAA,EAAW8D,EAAI,IAAI,CAAA,CAAG,CAAC,CAAA,CAE5E,QAAA,CAAA7I,IAACmH,MAAAA,CAAA,CAAO,UAAU,SAAA,CAAU,CAAA,CAC9B,GACF,CAAA,CAAA,CACF,CAAA,CAAA,CAAA,CA5DK0B,EAAI,EA6DX,CACD,CAAA,CACH,CAAA,CAAA,CAEJ,CAAA,CAGCN,CAAAA,EAAmB1B,aAClBzF,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,4DAAA,CACb,QAAA,CAAA,CAAApB,IAAC,KAAA,CAAA,CACC,SAAA,CAAU,kDACV,OAAA,CAAS,IAAMwI,EAAmB,IAAI,CAAA,CACxC,EACApH,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,oGAAA,CAEb,QAAA,CAAA,CAAAA,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,gDAAA,CACb,UAAAA,IAAAA,CAAC,KAAA,CAAA,CACC,UAAApB,GAAAA,CAAC,IAAA,CAAA,CAAG,UAAU,uBAAA,CAAyB,QAAA,CAAAuI,EAAgB,IAAA,CAAK,CAAA,CAC5DvI,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,gCAAiC,QAAA,CAAAuI,CAAAA,CAAgB,KAAK,CAAA,CAAA,CACrE,CAAA,CACAnH,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,YAAA,CACb,UAAAA,IAAAA,CAACwB,CAAAA,CAAA,CAAO,OAAA,CAAQ,SAAA,CAAU,KAAK,IAAA,CAAK,OAAA,CAAS,IAAMgG,CAAAA,CAAeL,CAAe,EAC/E,QAAA,CAAA,CAAAvI,GAAAA,CAACyJ,SAAA,CAAS,SAAA,CAAU,eAAe,CAAA,CAAE,WAAA,CAAA,CACvC,CAAA,CACAzJ,GAAAA,CAAC4C,CAAAA,CAAA,CAAO,QAAQ,OAAA,CAAQ,IAAA,CAAK,KAAK,SAAA,CAAU,aAAA,CAAc,QAAS,IAAM4F,CAAAA,CAAmB,IAAI,CAAA,CAC9F,QAAA,CAAAxI,IAAC8G,GAAAA,CAAA,CAAE,UAAU,SAAA,CAAU,CAAA,CACzB,GACF,CAAA,CAAA,CACF,CAAA,CAGA9G,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,4CAAA,CACZ,SAAAyI,CAAAA,CAAYF,CAAAA,CAAgB,IAAI,CAAA,EAAKA,CAAAA,CAAgB,IACpDvI,GAAAA,CAAC,KAAA,CAAA,CACC,IAAKuI,CAAAA,CAAgB,GAAA,CACrB,IAAKA,CAAAA,CAAgB,IAAA,CACrB,UAAU,sCAAA,CACZ,CAAA,CACEZ,EACFA,CAAAA,CAAqBY,CAAe,CAAA,CAEpCnH,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,oBACb,QAAA,CAAA,CAAApB,GAAAA,CAACqJ,SAAA,CAAS,SAAA,CAAU,+CAA+C,CAAA,CACnErJ,GAAAA,CAAC,KAAE,SAAA,CAAU,qBAAA,CAAuB,SAAAuI,CAAAA,CAAgB,IAAA,CAAK,EACzDvI,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,4BAAA,CAA6B,QAAA,CAAA,wCAAA,CAAsC,CAAA,CAC/EuI,CAAAA,CAAgB,WAAA,EACfvI,GAAAA,CAAC,KAAE,SAAA,CAAU,8BAAA,CAAgC,SAAAuI,CAAAA,CAAgB,WAAA,CAAY,EAE3EnH,IAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,oCAAA,CAAqC,QAAA,CAAA,CAAA,QAAA,CACzCmH,EAAgB,IAAA,CAAK,sBAAA,CAAgBA,EAAgB,UAAA,CAAW,UAAA,CAAI,IAAI,IAAA,CAAKA,CAAAA,CAAgB,UAAU,CAAA,CAAE,kBAAA,EAAmB,CAAA,CACrI,GACF,CAAA,CAEJ,CAAA,CAAA,CACF,GACF,CAAA,CACA,QAAA,CAAS,IACX,CAAA,CAAA,CACF,CAEJ,EClXO,IAAMmB,CAAAA,CAAY,CAAC,CAAE,KAAA,CAAAvG,CAAAA,CAAO,KAAA,CAAAhE,CAAAA,CAAO,MAAA,CAAAwK,EAAS,UAAA,CAAY,SAAA,CAAAlK,CAAU,CAAA,GACnEkK,CAAAA,GAAW,aAEXvI,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAW,CAAA,uBAAA,EAA0B3B,CAAAA,EAAa,EAAE,CAAA,CAAA,CACtD,QAAA,CAAA,CAAA0D,GAASnD,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,qEAAA,CAAuE,QAAA,CAAAmD,CAAAA,CAAM,CAAA,CACpGnD,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,kEAAA,CAAoE,QAAA,CAAAb,EAAM,CAAA,CAAA,CAC3F,CAAA,CAIAwK,IAAW,SAAA,CAEXvI,IAAAA,CAAC,OAAI,SAAA,CAAW,CAAA,wBAAA,EAA2B3B,GAAa,EAAE,CAAA,CAAA,CACvD,UAAA0D,CAAAA,EAAS/B,IAAAA,CAAC,KAAE,SAAA,CAAU,2CAAA,CAA6C,QAAA,CAAA,CAAA+B,CAAAA,CAAM,GAAA,CAAA,CAAC,CAAA,CAC3EnD,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,0BAA2B,QAAA,CAAAb,CAAAA,CAAM,GAClD,CAAA,CAMFiC,IAAAA,CAAC,OAAI,SAAA,CAAW3B,CAAAA,CACb,UAAA0D,CAAAA,EAASnD,GAAAA,CAAC,KAAE,SAAA,CAAU,2CAAA,CAA6C,SAAAmD,CAAAA,CAAM,CAAA,CAC1EnD,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAW,CAAA,wBAAA,EAA2BmD,EAAQ,MAAA,CAAS,EAAE,GAAK,QAAA,CAAAhE,CAAAA,CAAM,GAC3E,EC5BJ,IAAMyK,GAAmBC,EAAA,CAAA,UAAA,CAGvB,CAAC,CAAE,SAAA,CAAApK,CAAAA,CAAW,SAAAyB,CAAAA,CAAU,GAAGpB,CAAM,CAAA,CAAGC,CAAAA,GACpCqB,KAAqB,EAAA,CAAA,IAAA,CAApB,CACC,IAAKrB,CAAAA,CACL,SAAA,CAAWjB,EAAG,0BAAA,CAA4BW,CAAS,CAAA,CAClD,GAAGK,CAAAA,CAEJ,QAAA,CAAA,CAAAE,IAAqB,EAAA,CAAA,QAAA,CAApB,CAA6B,UAAU,iCAAA,CACrC,QAAA,CAAAkB,EACH,CAAA,CACAlB,GAAAA,CAAC8J,GAAA,EAAU,CAAA,CACX9J,IAAqB,EAAA,CAAA,MAAA,CAApB,EAA2B,GAC9B,CACD,EACD4J,GAAW,WAAA,CAAkC,EAAA,CAAA,IAAA,CAAK,WAAA,CAElD,IAAME,EAAAA,CAAkBD,EAAA,CAAA,UAAA,CAGtB,CAAC,CAAE,SAAA,CAAApK,EAAW,WAAA,CAAAsK,CAAAA,CAAc,WAAY,GAAGjK,CAAM,EAAGC,CAAAA,GACpDC,GAAAA,CAAqB,uBAApB,CACC,GAAA,CAAKD,EACL,WAAA,CAAagK,CAAAA,CACb,UAAWjL,CAAAA,CACT,+CAAA,CACAiL,CAAAA,GAAgB,UAAA,EACd,oDAAA,CACFA,CAAAA,GAAgB,cACd,sDAAA,CACFtK,CACF,EACC,GAAGK,CAAAA,CAEJ,SAAAE,GAAAA,CAAqB,EAAA,CAAA,eAAA,CAApB,CAAoC,SAAA,CAAU,wCAAA,CAAyC,EAC1F,CACD,EACD8J,GAAU,WAAA,CAAkC,EAAA,CAAA,mBAAA,CAAoB,gBCvC1DE,EAAAA,CAAcC,EAAA,CAAA,UAAA,CAGlB,CAAC,CAAE,SAAA,CAAAxK,EAAW,GAAGK,CAAM,EAAGC,CAAAA,GAC1BC,GAAAA,CAAC,OAAI,SAAA,CAAU,+BAAA,CACb,SAAAA,GAAAA,CAAC,OAAA,CAAA,CACC,IAAKD,CAAAA,CACL,SAAA,CAAWjB,CAAAA,CAAG,+BAAA,CAAiCW,CAAS,CAAA,CACvD,GAAGK,CAAAA,CACN,CAAA,CACF,CACD,EACDkK,EAAAA,CAAM,YAAc,OAAA,CAEpB,IAAME,GAAoBD,EAAA,CAAA,UAAA,CAGxB,CAAC,CAAE,SAAA,CAAAxK,CAAAA,CAAW,GAAGK,CAAM,CAAA,CAAGC,IAC1BC,GAAAA,CAAC,OAAA,CAAA,CAAM,GAAA,CAAKD,CAAAA,CAAK,SAAA,CAAWjB,CAAAA,CAAG,kBAAmBW,CAAS,CAAA,CAAI,GAAGK,CAAAA,CAAO,CAC1E,EACDoK,EAAAA,CAAY,WAAA,CAAc,cAE1B,IAAMC,EAAAA,CAAkBF,cAGtB,CAAC,CAAE,UAAAxK,CAAAA,CAAW,GAAGK,CAAM,CAAA,CAAGC,CAAAA,GAC1BC,GAAAA,CAAC,OAAA,CAAA,CACC,GAAA,CAAKD,CAAAA,CACL,UAAWjB,CAAAA,CAAG,4BAAA,CAA8BW,CAAS,CAAA,CACpD,GAAGK,EACN,CACD,EACDqK,EAAAA,CAAU,WAAA,CAAc,WAAA,CAExB,IAAMC,GAAoBH,EAAA,CAAA,UAAA,CAGxB,CAAC,CAAE,SAAA,CAAAxK,CAAAA,CAAW,GAAGK,CAAM,CAAA,CAAGC,CAAAA,GAC1BC,GAAAA,CAAC,OAAA,CAAA,CACC,GAAA,CAAKD,EACL,SAAA,CAAWjB,CAAAA,CACT,0DACAW,CACF,CAAA,CACC,GAAGK,CAAAA,CACN,CACD,EACDsK,EAAAA,CAAY,WAAA,CAAc,cAE1B,IAAMC,EAAAA,CAAiBJ,cAGrB,CAAC,CAAE,UAAAxK,CAAAA,CAAW,GAAGK,CAAM,CAAA,CAAGC,CAAAA,GAC1BC,GAAAA,CAAC,MACC,GAAA,CAAKD,CAAAA,CACL,UAAWjB,CAAAA,CACT,6EAAA,CACAW,CACF,CAAA,CACC,GAAGK,EACN,CACD,EACDuK,GAAS,WAAA,CAAc,UAAA,KAEjBC,EAAAA,CAAkBL,EAAA,CAAA,UAAA,CAGtB,CAAC,CAAE,SAAA,CAAAxK,CAAAA,CAAW,GAAGK,CAAM,CAAA,CAAGC,IAC1BC,GAAAA,CAAC,IAAA,CAAA,CACC,IAAKD,CAAAA,CACL,SAAA,CAAWjB,EACT,kGAAA,CACAW,CACF,EACC,GAAGK,CAAAA,CACN,CACD,EACDwK,EAAAA,CAAU,YAAc,WAAA,CAExB,IAAMC,GAAkBN,EAAA,CAAA,UAAA,CAGtB,CAAC,CAAE,SAAA,CAAAxK,CAAAA,CAAW,GAAGK,CAAM,CAAA,CAAGC,CAAAA,GAC1BC,IAAC,IAAA,CAAA,CACC,GAAA,CAAKD,EACL,SAAA,CAAWjB,CAAAA,CAAG,iDAAkDW,CAAS,CAAA,CACxE,GAAGK,CAAAA,CACN,CACD,EACDyK,EAAAA,CAAU,WAAA,CAAc,YAExB,IAAMC,EAAAA,CAAqBP,EAAA,CAAA,UAAA,CAGzB,CAAC,CAAE,SAAA,CAAAxK,EAAW,GAAGK,CAAM,EAAGC,CAAAA,GAC1BC,GAAAA,CAAC,WACC,GAAA,CAAKD,CAAAA,CACL,UAAWjB,CAAAA,CAAG,oCAAA,CAAsCW,CAAS,CAAA,CAC5D,GAAGK,EACN,CACD,EACD0K,GAAa,WAAA,CAAc,cAAA,CCnG3B,IAAMC,GAAyB,EAAA,CAAA,IAAA,CAEzBC,EAAAA,CAAgC,WAEhCC,EAAAA,CAA+B,EAAA,CAAA,MAAA,CAE/BC,GAA8B,EAAA,CAAA,KAAA,CAE9BC,EAAAA,CAAsBC,EAAA,CAAA,UAAA,CAG1B,CAAC,CAAE,SAAA,CAAArL,EAAW,GAAGK,CAAM,EAAGC,CAAAA,GAC1BC,GAAAA,CAAiB,WAAhB,CACC,GAAA,CAAKD,EACL,SAAA,CAAWjB,CAAAA,CACT,yJACAW,CACF,CAAA,CACC,GAAGK,CAAAA,CACN,CACD,EACD+K,EAAAA,CAAc,WAAA,CAA8B,EAAA,CAAA,OAAA,CAAQ,WAAA,CAMpD,IAAME,EAAAA,CAAsBD,cAG1B,CAAC,CAAE,UAAArL,CAAAA,CAAW,QAAA,CAAAyB,EAAU,eAAA,CAAA8J,CAAAA,CAAiB,GAAGlL,CAAM,CAAA,CAAGC,IACrDqB,IAAAA,CAACuJ,EAAAA,CAAA,CACC,QAAA,CAAA,CAAA3K,GAAAA,CAAC6K,GAAA,EAAc,CAAA,CACfzJ,IAAAA,CAAiB,EAAA,CAAA,OAAA,CAAhB,CACC,GAAA,CAAKrB,EACL,SAAA,CAAWjB,CAAAA,CACT,yhBACAW,CACF,CAAA,CACC,GAAGK,CAAAA,CAEH,QAAA,CAAA,CAAAoB,EACA,CAAC8J,CAAAA,EACA5J,KAAiB,EAAA,CAAA,KAAA,CAAhB,CAAsB,UAAU,+QAAA,CAC/B,QAAA,CAAA,CAAApB,IAAC8G,GAAAA,CAAA,CAAE,SAAA,CAAU,SAAA,CAAU,CAAA,CACvB9G,GAAAA,CAAC,QAAK,SAAA,CAAU,SAAA,CAAU,iBAAK,CAAA,CAAA,CACjC,CAAA,CAAA,CAEJ,GACF,CACD,EACD+K,GAAc,WAAA,CAA8B,EAAA,CAAA,OAAA,CAAQ,YAEpD,IAAME,EAAAA,CAAe,CAAC,CACpB,SAAA,CAAAxL,EACA,GAAGK,CACL,CAAA,GACEE,GAAAA,CAAC,KAAA,CAAA,CACC,SAAA,CAAWlB,EACT,oDAAA,CACAW,CACF,EACC,GAAGK,CAAAA,CACN,EAEFmL,EAAAA,CAAa,WAAA,CAAc,eAE3B,IAAMC,EAAAA,CAAe,CAAC,CACpB,SAAA,CAAAzL,EACA,GAAGK,CACL,IACEE,GAAAA,CAAC,KAAA,CAAA,CACC,SAAA,CAAWlB,CAAAA,CACT,+DAAA,CACAW,CACF,EACC,GAAGK,CAAAA,CACN,EAEFoL,EAAAA,CAAa,WAAA,CAAc,eAE3B,IAAMC,EAAAA,CAAoBL,cAGxB,CAAC,CAAE,UAAArL,CAAAA,CAAW,GAAGK,CAAM,CAAA,CAAGC,CAAAA,GAC1BC,IAAiB,EAAA,CAAA,KAAA,CAAhB,CACC,GAAA,CAAKD,CAAAA,CACL,SAAA,CAAWjB,CAAAA,CACT,oDACAW,CACF,CAAA,CACC,GAAGK,CAAAA,CACN,CACD,EACDqL,EAAAA,CAAY,WAAA,CAA8B,SAAM,WAAA,CAEhD,IAAMC,GAA0BN,EAAA,CAAA,UAAA,CAG9B,CAAC,CAAE,SAAA,CAAArL,CAAAA,CAAW,GAAGK,CAAM,CAAA,CAAGC,CAAAA,GAC1BC,GAAAA,CAAiB,EAAA,CAAA,WAAA,CAAhB,CACC,IAAKD,CAAAA,CACL,SAAA,CAAWjB,EAAG,+BAAA,CAAiCW,CAAS,EACvD,GAAGK,CAAAA,CACN,CACD,EACDsL,EAAAA,CAAkB,YAA8B,EAAA,CAAA,WAAA,CAAY,WAAA,KCnG/CC,EAAAA,CAAa,CAAC,CAAE,IAAA,CAAAC,CAAAA,CAAM,SAAA,CAAA7L,CAAAA,CAAW,OAAA,CAAA8L,CAAAA,CAAU,MAAO,SAAA,CAAAC,CAAAA,CAAY,OAAQ,WAAA,CAAAC,CAAAA,CAAc,KAAM,CAAA,GAAuB,CAC5H,GAAM,CAACC,CAAAA,CAAQC,CAAS,EAAI3F,QAAAA,CAAS,KAAK,EAEpC4F,CAAAA,CAAa,IAAM,CACvB,SAAA,CAAU,SAAA,CAAU,SAAA,CAAU,IAAA,CAAK,SAAA,CAAUN,CAAAA,CAAM,KAAM,CAAC,CAAC,EAC3DK,CAAAA,CAAU,IAAI,EACd,UAAA,CAAW,IAAMA,EAAU,KAAK,CAAA,CAAG,GAAI,EACzC,CAAA,CAEA,OACEvK,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAWtC,CAAAA,CAAG,UAAA,CAAYW,CAAS,CAAA,CACtC,QAAA,CAAA,CAAAO,GAAAA,CAAC,OAAI,SAAA,CAAWlB,CAAAA,CAAG,gBAAiByM,CAAAA,CAAU,eAAA,CAAkB,eAAe,CAAA,CAC7E,QAAA,CAAAvL,IAAC4C,CAAAA,CAAA,CACC,QAAQ,SAAA,CACR,IAAA,CAAgB,KAChB,OAAA,CAASgJ,CAAAA,CACT,UAAW9M,CAAAA,CAAG,OAAA,CAASyM,CAAAA,EAAW,kBAAkB,CAAA,CAEnD,QAAA,CAAAG,EACCtK,IAAAA,CAAAyK,QAAAA,CAAA,CACE,QAAA,CAAA,CAAA7L,GAAAA,CAACkE,MAAA,CAAM,SAAA,CAAU,UAAU,CAAA,CAC1B,CAACqH,GAAW,QAAA,CAAA,CACf,CAAA,CAEAnK,KAAAyK,QAAAA,CAAA,CACE,UAAA7L,GAAAA,CAAC8L,IAAAA,CAAA,CAAK,SAAA,CAAU,SAAA,CAAU,CAAA,CACzB,CAACP,CAAAA,EAAW,WAAA,CAAA,CACf,EAEJ,CAAA,CACF,CAAA,CACAvL,IAAC,KAAA,CAAA,CACC,SAAA,CAAWlB,EACT,yCAAA,CACA2M,CAAAA,CAAc,cAAgBF,CAAAA,CAAU,yCAAA,CAA4C,2BACtF,CAAA,CACA,KAAA,CAAOE,EAAc,MAAA,CAAY,CAAE,SAAA,CAAWF,CAAAA,CAAU,OAAA,CAAUC,CAAU,EAE5E,QAAA,CAAAxL,GAAAA,CAAC+L,GAAA,CAAS,IAAA,CAAMT,EAAM,IAAA,CAAK,MAAA,CAAO,MAAO,CAAA,CAAG,OAAA,CAASC,EAAS,CAAA,CAChE,CAAA,CAAA,CACF,CAEJ,CAAA,CASMQ,EAAAA,CAAW,CAAC,CAAE,IAAA,CAAAT,CAAAA,CAAM,IAAA,CAAA5C,CAAAA,CAAM,KAAA,CAAAsD,EAAO,OAAA,CAAAT,CAAAA,CAAU,KAAM,CAAA,GAAqB,CAC1E,GAAM,CAACU,CAAAA,CAAYC,CAAa,CAAA,CAAIlG,QAAAA,CAAS,IAAI,CAAA,CAE3CmG,CAAAA,CAASH,EAAQ,CAAA,CAEvB,GAAIV,IAAS,IAAA,CACX,OACElK,IAAAA,CAAC,KAAA,CAAA,CAAI,KAAA,CAAO,CAAE,YAAa+K,CAAO,CAAA,CAAG,UAAU,uBAAA,CAC7C,QAAA,CAAA,CAAAnM,IAAC,MAAA,CAAA,CAAK,SAAA,CAAU,eAAgB,QAAA,CAAA0I,CAAAA,CAAK,EAAO,IAAA,CAAE1I,GAAAA,CAAC,QAAK,SAAA,CAAU,iBAAA,CAAkB,gBAAI,CAAA,CAAA,CACtF,CAAA,CAIJ,GAAI,OAAOsL,CAAAA,EAAS,QAAA,CAOlB,OACElK,IAAAA,CAAC,KAAA,CAAA,CAAI,MAAO,CAAE,WAAA,CAAa+K,CAAO,CAAA,CAChC,QAAA,CAAA,CAAAnM,IAAC,MAAA,CAAA,CAAK,SAAA,CAAU,eAAgB,QAAA,CAAA0I,CAAAA,CAAK,EAAO,GAAA,CAAE,GAAA,CAC9C1I,IAAC,MAAA,CAAA,CAAK,SAAA,CARR,OAAOsL,CAAAA,EAAS,QAAA,CAAW,oCAAA,CAC3B,OAAOA,CAAAA,EAAS,QAAA,CAAW,mCAC3B,OAAOA,CAAAA,EAAS,UAAY,iBAAA,CAC5B,iBAAA,CAMK,gBAAOA,CAAAA,EAAS,QAAA,CAAW,IAAIA,CAAI,CAAA,CAAA,CAAA,CAAM,OAAOA,CAAI,CAAA,CACvD,GACF,CAAA,CAIJ,IAAMc,CAAAA,CAAU,KAAA,CAAM,OAAA,CAAQd,CAAI,EAE5Be,CAAAA,CAAAA,CADUD,CAAAA,CAAUd,EAAO,MAAA,CAAO,OAAA,CAAQA,CAAI,CAAA,EAC5B,MAAA,GAAW,EAEnC,OACElK,IAAAA,CAAC,OAAI,KAAA,CAAO,CAAE,YAAa+K,CAAO,CAAA,CAChC,UAAA/K,IAAAA,CAAC,KAAA,CAAA,CACC,SAAA,CAAU,kEAAA,CACV,OAAA,CAAS,IAAM,CAACiL,CAAAA,EAAWH,CAAAA,CAAc,CAACD,CAAU,CAAA,CAEnD,WAACI,CAAAA,GACAJ,CAAAA,CACEjM,IAAC+D,WAAAA,CAAA,CAAY,UAAU,+BAAA,CAAgC,CAAA,CAEvD/D,IAACsM,YAAAA,CAAA,CAAa,UAAU,+BAAA,CAAgC,CAAA,CAAA,CAG5DtM,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,cAAA,CAAgB,SAAA0I,CAAAA,CAAK,CAAA,CACrCtH,KAAC,MAAA,CAAA,CAAK,SAAA,CAAU,wBACb,QAAA,CAAA,CAAAgL,CAAAA,CAAU,IAAM,GAAA,CAChB,CAACH,GAAc,CAACI,CAAAA,EAAW,MAC3BA,CAAAA,GAAYD,CAAAA,CAAU,IAAM,GAAA,CAAA,CAAA,CAC/B,CAAA,CAAA,CACF,CAAA,CACCH,CAAAA,EAAc,CAACI,CAAAA,EACdjL,KAAC,KAAA,CAAA,CACE,QAAA,CAAA,CAAAgL,EACGd,CAAAA,CAAK,GAAA,CAAI,CAACiB,CAAAA,CAAW7J,CAAAA,GACnB1C,IAAC+L,EAAAA,CAAA,CAEC,KAAMQ,CAAAA,CACN,IAAA,CAAM,OAAO7J,CAAK,CAAA,CAClB,MAAOsJ,CAAAA,CAAQ,CAAA,CACf,OAAA,CAAST,CAAAA,CAAAA,CAJJ7I,CAKP,CACD,EACD,MAAA,CAAO,OAAA,CAAQ4I,CAAI,CAAA,CAAE,GAAA,CAAI,CAAC,CAACkB,CAAAA,CAAKrN,CAAK,CAAA,GACnCa,GAAAA,CAAC+L,GAAA,CAEC,IAAA,CAAM5M,EACN,IAAA,CAAMqN,CAAAA,CACN,MAAOR,CAAAA,CAAQ,CAAA,CACf,OAAA,CAAST,CAAAA,CAAAA,CAJJiB,CAKP,CACD,EACLxM,GAAAA,CAAC,KAAA,CAAA,CAAI,MAAO,CAAE,WAAA,CAAamM,CAAO,CAAA,CAAG,SAAA,CAAU,wBAC5C,QAAA,CAAAC,CAAAA,CAAU,IAAM,GAAA,CACnB,CAAA,CAAA,CACF,GAEJ,CAEJ,EChHO,IAAMK,GAAgB,CAAC,CAAE,MAAAC,CAAM,CAAA,GAA0B,CAC9D,IAAM,CAACC,CAAAA,CAAkBC,CAAmB,CAAA,CAAI5G,QAAAA,CAAS,KAAK,CAAA,CAGxD6G,CAAAA,CAAoBvB,GAAc,CACtC,GAAI,CAACA,CAAAA,CAAK,UAAA,EAAc,CAACA,CAAAA,CAAK,gBAAA,CAAkB,OAAO,EAAC,CAExD,GAAI,CACF,IAAMwB,CAAAA,CAAa,KAAK,KAAA,CAAMxB,CAAAA,CAAK,UAAU,CAAA,CACvCyB,CAAAA,CAAmB,EAAC,CAGpBC,CAAAA,CAAeC,IACuB,CACxC,IAAA,CAAQ,gBACR,QAAA,CAAY,sBAAA,CACZ,iBAAA,CAAqB,yBAAA,CACrB,4BAAA,CAAgC,mBAAA,CAChC,4BAA+B,sBACjC,CAAA,EACiBA,CAAQ,CAAA,EAAKA,CAAAA,CAI1BC,EAAkBV,CAAAA,EACfA,CAAAA,CACJ,QAAQ,UAAA,CAAY,KAAK,EACzB,OAAA,CAAQ,IAAA,CAAMW,GAAOA,CAAAA,CAAI,WAAA,EAAa,CAAA,CACtC,IAAA,EAAK,CAYV,OARkB,CAChB,CAAE,IAAK,MAAA,CAAQ,SAAA,CAAW,SAAU,CAAA,CACpC,CAAE,IAAK,UAAA,CAAY,SAAA,CAAW,eAAgB,CAAA,CAC9C,CAAE,IAAK,mBAAA,CAAqB,SAAA,CAAW,MAAO,CAAA,CAC9C,CAAE,IAAK,8BAAA,CAAgC,SAAA,CAAW,MAAO,CAAA,CACzD,CAAE,GAAA,CAAK,8BAA+B,SAAA,CAAW,OAAQ,CAC3D,CAAA,CAEU,OAAA,CAAQ,CAAC,CAAE,GAAA,CAAAX,EAAK,SAAA,CAAAY,CAAU,IAAM,CACxC,IAAMC,EAAOP,CAAAA,CAAWN,CAAG,EACvBa,CAAAA,EAAQ,KAAA,CAAM,OAAA,CAAQA,CAAI,CAAA,EAC5BA,CAAAA,CAAK,QAASd,CAAAA,EAAc,CAE1BjB,EAAK,gBAAA,CAAiB,OAAA,CAASgC,GAAe,CAG5CP,CAAAA,CAAU,KAAK,CACb,IAAA,CAAMG,EAAeI,CAAAA,CAAM,QAAQ,EACnC,IAAA,CAAMA,CAAAA,CAAM,WACZ,WAAA,CAAaf,CAAAA,CAAK,WAAA,EAAeA,CAAAA,CAAKa,CAAS,CAAA,EAAK,MACpD,IAAA,CAAMJ,CAAAA,CAAYR,CAAG,CAAA,CACrB,UAAA,CAAYD,EAAK,KAAA,CAAQ,CAAA,EAAA,CAAIA,EAAK,KAAA,CAAQ,GAAA,EAAK,QAAQ,CAAC,CAAC,IAAM,KACjE,CAAC,EACH,CAAC,EACH,CAAC,EAEL,CAAC,CAAA,CAEMQ,CACT,CAAA,MAAS1J,CAAAA,CAAO,CACd,OAAA,OAAA,CAAQ,KAAA,CAAM,8BAA+BA,CAAK,CAAA,CAC3C,EACT,CACF,EAEMkK,CAAAA,CAAoB,IAAM,CAC9B,IAAMjC,CAAAA,CAAOoB,EAAM,WAAA,CACnB,GAAI,CAACpB,CAAAA,CAAM,OAAO,IAAA,CAElB,IAAMyB,CAAAA,CAAYF,CAAAA,CAAiBvB,CAAI,CAAA,CAGjCkC,CAAAA,CAAalC,EAAK,gBAAA,EAAoBA,CAAAA,CAAK,cAAgBA,CAAAA,CAAK,cAAA,EAAkBA,EAAK,oBAAA,EAAwB,KAAA,CAC/GmC,EAAanC,CAAAA,CAAK,gBAAA,CAAmB,eACvCA,CAAAA,CAAK,YAAA,CAAe,UAAA,CACpBA,CAAAA,CAAK,cAAA,CAAiB,YAAA,CACtBA,EAAK,oBAAA,CAAuB,aAAA,CAC5B,MACEoC,CAAAA,CAAWpC,CAAAA,CAAK,gBAAkBA,CAAAA,CAAK,UAAA,EAAcA,EAAK,YAAA,EAAgBA,CAAAA,CAAK,qBAC/EqC,CAAAA,CAAaD,CAAAA,CACfpC,EAAK,cAAA,CAAiB,CAAA,gBAAA,EAAmBoC,CAAQ,CAAA,CAAA,CACjDpC,CAAAA,CAAK,UAAA,CAAa,CAAA,YAAA,EAAeoC,CAAQ,CAAA,CAAA,CACzCpC,EAAK,YAAA,CAAe,CAAA,aAAA,EAAgBoC,CAAQ,CAAA,CAAA,CAC5CpC,CAAAA,CAAK,qBAAuB,CAAA,cAAA,EAAiBoC,CAAQ,GACrD,IAAA,CACA,IAAA,CAEJ,OACEtM,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,WAAA,CACb,QAAA,CAAA,CAAAA,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wBAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC0J,CAAAA,CAAA,CACC,KAAA,CAAM,aAAA,CACN,MACEiE,CAAAA,CACE3N,GAAAA,CAAC4N,KAAA,CACC,EAAA,CAAID,EACJ,SAAA,CAAU,8BAAA,CAET,SAAAH,CAAAA,CACH,CAAA,CACEA,EAEN,MAAA,CAAO,YAAA,CACT,EACAxN,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,aAAA,CAAc,KAAA,CAAO+D,EAAY,MAAA,CAAO,YAAA,CAAa,GACxE,CAAA,CAECV,CAAAA,CAAU,OAAS,CAAA,EAClB/M,GAAAA,CAAC,OAAI,SAAA,CAAU,MAAA,CACb,SAAAA,GAAAA,CAAC4J,EAAAA,CAAA,CAAW,SAAA,CAAU,6BAAA,CACpB,SAAAxI,IAAAA,CAAC4I,EAAAA,CAAA,CACC,QAAA,CAAA,CAAAhK,GAAAA,CAACkK,EAAAA,CAAA,CACC,QAAA,CAAA9I,IAAAA,CAACiJ,GAAA,CACC,QAAA,CAAA,CAAArK,IAACsK,EAAAA,CAAA,CAAU,gBAAI,CAAA,CACftK,GAAAA,CAACsK,GAAA,CAAU,QAAA,CAAA,MAAA,CAAI,EACftK,GAAAA,CAACsK,EAAAA,CAAA,CAAU,QAAA,CAAA,cAAA,CAAY,CAAA,CACvBlJ,IAAAA,CAACkJ,EAAAA,CAAA,CAAU,SAAA,CAAU,0BACnB,QAAA,CAAA,CAAAtK,GAAAA,CAAC,QAAK,QAAA,CAAA,MAAA,CAAI,CAAA,CACVoB,KAACqJ,EAAAA,CAAA,CAAO,KAAMkC,CAAAA,CAAkB,YAAA,CAAcC,EAC5C,QAAA,CAAA,CAAA5M,GAAAA,CAAC0K,GAAA,CAAc,OAAA,CAAO,KACpB,QAAA,CAAA1K,GAAAA,CAAC4C,CAAAA,CAAA,CACC,OAAA,CAAQ,OAAA,CACR,KAAK,MAAA,CACL,SAAA,CAAU,6CAEV,QAAA,CAAA5C,GAAAA,CAAC6N,SAAA,CAAS,SAAA,CAAU,UAAU,CAAA,CAChC,CAAA,CACF,EACAzM,IAAAA,CAAC2J,EAAAA,CAAA,CAAc,SAAA,CAAU,wBAAA,CACvB,UAAA3J,IAAAA,CAAC6J,EAAAA,CAAA,CACC,QAAA,CAAA,CAAAjL,GAAAA,CAACmL,EAAAA,CAAA,CAAY,QAAA,CAAA,kBAAA,CAAgB,CAAA,CAC7BnL,IAACoL,EAAAA,CAAA,CAAkB,gEAEnB,CAAA,CAAA,CACF,CAAA,CACApL,GAAAA,CAACqL,EAAAA,CAAA,CACC,IAAA,CAAMC,EAAK,UAAA,CAAa,IAAA,CAAK,MAAMA,CAAAA,CAAK,UAAU,EAAI,EAAC,CACvD,SAAA,CAAU,MAAA,CACZ,CAAA,CAAA,CACF,CAAA,CAAA,CACF,GACF,CAAA,CACAtL,GAAAA,CAACsK,GAAA,CAAU,QAAA,CAAA,aAAA,CAAW,GACxB,CAAA,CACF,CAAA,CACAtK,IAACmK,EAAAA,CAAA,CACE,SAAA4C,CAAAA,CAAU,GAAA,CAAI,CAACe,CAAAA,CAAKpL,CAAAA,GACnBtB,KAACiJ,EAAAA,CAAA,CACC,QAAA,CAAA,CAAArK,GAAAA,CAACuK,EAAAA,CAAA,CAAW,SAAAuD,CAAAA,CAAI,IAAA,CAAK,EACrB9N,GAAAA,CAACuK,EAAAA,CAAA,CAAW,QAAA,CAAAuD,CAAAA,CAAI,KAAK,CAAA,CACrB9N,GAAAA,CAACuK,GAAA,CAAW,QAAA,CAAAuD,EAAI,WAAA,CAAY,CAAA,CAC5B9N,IAACuK,EAAAA,CAAA,CAAW,QAAA,CAAAuD,CAAAA,CAAI,IAAA,CAAK,CAAA,CACrB9N,IAACuK,EAAAA,CAAA,CAAW,SAAAuD,CAAAA,CAAI,UAAA,CAAW,IALdpL,CAMf,CACD,EACH,CAAA,CAAA,CACF,CAAA,CACF,EACF,CAAA,CAAA,CAEJ,CAEJ,EAEMqL,CAAAA,CAA2B,IAE7B3M,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wBAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,gBAAA,CAAiB,MAAM,WAAA,CAAY,CAAA,CACpD1J,IAAC0J,CAAAA,CAAA,CAAU,MAAM,QAAA,CAAS,KAAA,CAAM,aAAa,CAAA,CAC7C1J,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,mBAAmB,KAAA,CAAM,eAAA,CAAgB,CAAA,CAC1D1J,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,MAAM,MAAA,CAAO,KAAA,CAAM,aAAa,CAAA,CAAA,CAC7C,CAAA,CAIEsE,EAA0B,IAE5B5M,IAAAA,CAAC,OAAI,SAAA,CAAU,wBAAA,CACb,UAAApB,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,WAAA,CAAY,MAAM,uBAAA,CAAwB,CAAA,CAC3D1J,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,eAAe,KAAA,CAAM,OAAA,CAAQ,EAC9C1J,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,aAAA,CAAc,MAAM,GAAA,CAAI,CAAA,CACzC1J,IAAC0J,CAAAA,CAAA,CAAU,MAAM,QAAA,CAAS,KAAA,CAAO1J,IAACsB,CAAAA,CAAA,CAAM,OAAA,CAAQ,aAAA,CAAc,QAAA,CAAA,QAAA,CAAM,CAAA,CAAU,GAChF,CAAA,CAIE2M,CAAAA,CAAuB,IAEzB7M,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wBAAA,CACb,QAAA,CAAA,CAAApB,IAAC0J,CAAAA,CAAA,CAAU,MAAM,YAAA,CAAa,KAAA,CAAM,YAAY,CAAA,CAChD1J,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,cAAA,CAAe,KAAA,CAAM,2BAAA,CAA4B,CAAA,CAClE1J,IAAC0J,CAAAA,CAAA,CAAU,MAAM,QAAA,CAAS,KAAA,CAAM,uBAAuB,CAAA,CACvD1J,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,SAAS,KAAA,CAAM,4BAAA,CAA6B,GAC/D,CAAA,CAmBEwE,CAAAA,CAAgB,IAAM,CAC1B,OAAQxB,CAAAA,CAAM,aACZ,KAAK,OACH,OAAOa,CAAAA,GACT,KAAK,aAAA,CACH,OAAOQ,CAAAA,EAAyB,CAClC,KAAK,aAAA,CACH,OAAOC,GAAwB,CACjC,KAAK,UACH,OAAOC,CAAAA,EAAqB,CAC9B,QACE,OAAOjO,GAAAA,CAAC,KAAE,SAAA,CAAU,+BAAA,CAAgC,2CAA+B,CACvF,CACF,EAEA,OACEoB,IAAAA,CAAC,OAAI,SAAA,CAAU,iCAAA,CAEb,UAAAA,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,8CAAA,CACb,QAAA,CAAA,CAAApB,IAACa,EAAAA,CAAA,CAAS,KAAA,CAAM,eAAA,CAAgB,SAAA,CAAU,eAAA,CACxC,SAAAO,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,WAAA,CAEb,QAAA,CAAA,CAAApB,IAAC0J,CAAAA,CAAA,CAAU,MAAM,aAAA,CAAc,KAAA,CAAOgD,EAAM,WAAA,CAAa,MAAA,CAAO,aAAa,CAAA,CAG5EwB,CAAAA,IACH,CAAA,CACF,CAAA,CAGAlO,GAAAA,CAACa,EAAAA,CAAA,CAAS,KAAA,CAAM,QACd,QAAA,CAAAb,GAAAA,CAAC2F,GAAA,CAAW,OAAA,CAAS+G,EAAM,EAAA,CAAI,KAAA,CAAOA,EAAM,KAAA,EAAS,GAAI,CAAA,CAC3D,CAAA,CAGA1M,IAACa,EAAAA,CAAA,CAAS,MAAM,WAAA,CACd,QAAA,CAAAb,GAAAA,CAACyH,EAAAA,CAAA,CAAe,OAAA,CAASiF,EAAM,EAAA,CAAI,SAAA,CAAWA,EAAM,SAAA,EAAa,GAAI,CAAA,CACvE,CAAA,CAAA,CACF,EAGA1M,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,SAAA,CACb,QAAA,CAAAA,IAACa,EAAAA,CAAA,CAAS,MAAM,iBAAA,CAAkB,SAAA,CAAU,QAAA,CAC1C,QAAA,CAAAb,GAAAA,CAACuB,EAAAA,CAAA,CAAc,MAAA,CAAQmL,CAAAA,CAAM,UAAY,EAAC,CAAG,EAC/C,CAAA,CACF,CAAA,CAAA,CAEF,CAEJ,EClSO,IAAMyB,EAAAA,CAAoB,CAAC,CAAE,KAAA,CAAAzB,CAAM,CAAA,GAA8B,CAEtE,OAAQA,EAAM,IAAA,EACZ,KAAK,MAAA,CACH,OAAO1M,IAACyM,EAAAA,CAAA,CAAc,KAAA,CAAOC,CAAAA,CAAO,CAAA,CAEtC,KAAK,yBAEH,OAAO1M,GAAAA,CAAC,OAAI,QAAA,CAAA,2CAAA,CAAyC,CAAA,CAEvD,KAAK,mBAAA,CAEH,OAAOA,GAAAA,CAAC,KAAA,CAAA,CAAI,QAAA,CAAA,sCAAA,CAAoC,CAAA,CAElD,KAAK,MAAA,CAEH,OAAOA,IAAC,KAAA,CAAA,CAAI,QAAA,CAAA,yBAAA,CAAuB,EAErC,KAAK,eAAA,CAEH,OAAOA,GAAAA,CAAC,KAAA,CAAA,CAAI,4CAAgC,CAAA,CAE9C,KAAK,+BAEH,OAAOA,GAAAA,CAAC,OAAI,QAAA,CAAA,iDAAA,CAA+C,CAAA,CAE7D,KAAK,YAAA,CAEH,OAAOA,GAAAA,CAAC,OAAI,QAAA,CAAA,+BAAA,CAA6B,CAAA,CAE3C,QACE,OAAOoB,IAAAA,CAAC,OAAI,QAAA,CAAA,CAAA,sBAAA,CAAqBsL,CAAAA,CAAM,MAAK,CAChD,CACF,ECtCO,IAAM0B,EAAAA,CAAkB,CAC7B,CAAE,KAAA,CAAO,KAAM,KAAA,CAAO,eAAgB,CAAA,CACtC,CAAE,KAAA,CAAO,IAAA,CAAM,MAAO,QAAS,CAAA,CAC/B,CAAE,KAAA,CAAO,IAAA,CAAM,MAAO,gBAAiB,CAAA,CACvC,CAAE,KAAA,CAAO,IAAA,CAAM,MAAO,SAAU,CAAA,CAChC,CAAE,KAAA,CAAO,IAAA,CAAM,MAAO,QAAS,CACjC,CAAA,CAEaC,EAAAA,CAAqB,CAChC,CAAE,MAAO,KAAA,CAAO,KAAA,CAAO,KAAM,CAAA,CAC7B,CAAE,MAAO,OAAA,CAAS,KAAA,CAAO,OAAQ,CAAA,CACjC,CAAE,MAAO,KAAA,CAAO,KAAA,CAAO,KAAM,CAAA,CAC7B,CAAE,MAAO,MAAA,CAAQ,KAAA,CAAO,MAAO,CAAA,CAC/B,CAAE,KAAA,CAAO,UAAW,KAAA,CAAO,gBAAiB,CAC9C,CAAA,CAEaC,EAAAA,CAAuB,CAClC,EAAA,CAAI,CACF,CAAE,KAAA,CAAO,cAAA,CAAgB,MAAO,cAAe,CAAA,CAC/C,CAAE,KAAA,CAAO,QAAA,CAAU,MAAO,eAAgB,CAAA,CAC1C,CAAE,KAAA,CAAO,eAAA,CAAiB,KAAA,CAAO,oBAAqB,CACxD,CACF,EAEaC,EAAAA,CAAqB,CAChC,CAAE,KAAA,CAAO,WAAA,CAAa,MAAO,WAAY,CAAA,CACzC,CAAE,KAAA,CAAO,UAAA,CAAY,MAAO,UAAW,CAAA,CACvC,CAAE,KAAA,CAAO,SAAA,CAAW,KAAA,CAAO,SAAU,CACvC,CAAA,CAEaC,GAAmB,CAC9B,CAAE,MAAO,YAAA,CAAc,KAAA,CAAO,YAAa,CAAA,CAC3C,CAAE,MAAO,eAAA,CAAiB,KAAA,CAAO,eAAgB,CAAA,CACjD,CAAE,MAAO,cAAA,CAAgB,KAAA,CAAO,cAAe,CAAA,CAC/C,CAAE,KAAA,CAAO,aAAA,CAAe,KAAA,CAAO,aAAc,EAC7C,CAAE,KAAA,CAAO,aAAc,KAAA,CAAO,YAAa,CAC7C,CAAA,CAEaC,EAAAA,CAA0B,CACrC,CAAE,KAAA,CAAO,SAAU,KAAA,CAAO,QAAS,EACnC,CAAE,KAAA,CAAO,WAAY,KAAA,CAAO,UAAW,CAAA,CACvC,CAAE,KAAA,CAAO,WAAA,CAAa,MAAO,WAAY,CAC3C,EAEaC,EAAAA,CAA+B,CAC1C,CAAE,KAAA,CAAO,iBAAA,CAAmB,MAAO,iBAAkB,CAAA,CACrD,CAAE,KAAA,CAAO,2BAAA,CAA6B,MAAO,iCAAkC,CAAA,CAC/E,CAAE,KAAA,CAAO,aAAA,CAAe,KAAA,CAAO,oBAAqB,CAAA,CACpD,CAAE,MAAO,qBAAA,CAAuB,KAAA,CAAO,qBAAsB,CAAA,CAC7D,CAAE,MAAO,+BAAA,CAAiC,KAAA,CAAO,+BAAgC,CAAA,CACjF,CAAE,MAAO,YAAA,CAAc,KAAA,CAAO,wBAAyB,CAAA,CACvD,CAAE,MAAO,yBAAA,CAA2B,KAAA,CAAO,yBAA0B,CAAA,CACrE,CAAE,KAAA,CAAO,0BAA2B,KAAA,CAAO,yBAA0B,EACrE,CAAE,KAAA,CAAO,SAAU,KAAA,CAAO,QAAS,CACrC,CAAA,CAIaC,EAAAA,CAA4B,CACvC,CAAE,KAAA,CAAO,SAAU,KAAA,CAAO,QAAS,EACnC,CAAE,KAAA,CAAO,kBAAA,CAAoB,KAAA,CAAO,kBAAmB,CAAA,CACvD,CAAE,KAAA,CAAO,SAAA,CAAW,MAAO,SAAU,CAAA,CACrC,CAAE,KAAA,CAAO,UAAA,CAAY,MAAO,UAAW,CAAA,CACvC,CAAE,KAAA,CAAO,WAAA,CAAa,MAAO,WAAY,CAAA,CACzC,CAAE,KAAA,CAAO,SAAA,CAAW,KAAA,CAAO,SAAU,CACvC,CAAA,CAGaC,GAAmC,CAC9C,CAAE,MAAO,8BAAA,CAAgC,KAAA,CAAO,8BAA+B,CAAA,CAC/E,CAAE,MAAO,KAAA,CAAO,KAAA,CAAO,KAAM,CAAA,CAC7B,CAAE,MAAO,sBAAA,CAAwB,KAAA,CAAO,sBAAuB,CAAA,CAC/D,CAAE,KAAA,CAAO,kBAAA,CAAoB,KAAA,CAAO,oBAAqB,EACzD,CAAE,KAAA,CAAO,oBAAqB,KAAA,CAAO,qBAAsB,EAC3D,CAAE,KAAA,CAAO,mBAAoB,KAAA,CAAO,kBAAmB,EACvD,CAAE,KAAA,CAAO,oBAAqB,KAAA,CAAO,mBAAoB,EACzD,CAAE,KAAA,CAAO,OAAA,CAAS,KAAA,CAAO,OAAQ,CAAA,CACjC,CAAE,KAAA,CAAO,WAAA,CAAa,MAAO,WAAY,CAAA,CACzC,CAAE,KAAA,CAAO,qBAAA,CAAuB,MAAO,qBAAsB,CAAA,CAC7D,CAAE,KAAA,CAAO,kBAAA,CAAoB,MAAO,kBAAmB,CAAA,CACvD,CAAE,KAAA,CAAO,sBAAA,CAAwB,KAAA,CAAO,sBAAuB,CAAA,CAC/D,CAAE,MAAO,aAAA,CAAe,KAAA,CAAO,aAAc,CAAA,CAC7C,CAAE,MAAO,8BAAA,CAAgC,KAAA,CAAO,8BAA+B,CAAA,CAC/E,CAAE,KAAA,CAAO,WAAY,KAAA,CAAO,UAAW,CACzC,CAAA,CCtFO,IAAMC,GAAuBzF,CAAAA,EAAsB,CACxD,OAAQA,CAAAA,EACN,KAAK,OACH,OAAO,YAAA,CACT,KAAK,eAAA,CACH,OAAO,aACT,KAAK,wBAAA,CACH,OAAO,kBAAA,CACT,KAAK,+BACH,OAAO,aAAA,CACT,QACE,OAAO,SACX,CACF,CAAA,CAEa7G,EAAAA,CAAkBC,CAAAA,EAAmB,CAChD,OAAQA,CAAAA,EACN,KAAK,YAAA,CACH,OAAO,kBAAA,CACT,KAAK,SACH,OAAO,cAAA,CACT,KAAK,aAAA,CACH,OAAO,eACT,QACE,OAAO,EACX,CACF,CAAA,CCZO,IAAMsM,GAAsB,CAAC,CAClC,OAAAtM,CAAAA,CACA,QAAA,CAAAuM,EACA,SAAA,CAAAC,CAAAA,CACA,iBAAAC,CAAAA,CACA,iBAAA,CAAAC,CACF,CAAA,GAEI9N,IAAAA,CAAC,OAAI,SAAA,CAAU,yBAAA,CAEb,UAAAA,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yBAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,QAAK,SAAA,CAAU,+BAAA,CAAgC,mBAAO,CAAA,CACvDA,GAAAA,CAAC,QAAK,SAAA,CAAWlB,CAAAA,CAAG,sBAAuByD,EAAAA,CAAeC,CAAM,CAAC,CAAA,CAAI,QAAA,CAAAA,EAAO,CAAA,CAAA,CAC9E,CAAA,CAGApB,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,uCAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,MAAA,CAAA,CAAK,UAAU,+BAAA,CAAgC,QAAA,CAAA,WAAA,CAAS,EACzDA,GAAAA,CAACyD,CAAAA,CAAA,CACC,KAAA,CAAOsL,CAAAA,CACP,cAAeE,CAAAA,CACf,OAAA,CAAST,GACT,WAAA,CAAY,YAAA,CACd,GACF,CAAA,CAGApN,IAAAA,CAAC,OAAI,SAAA,CAAU,uCAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,gCAAgC,QAAA,CAAA,aAAA,CAAW,CAAA,CAC3DA,IAACyD,CAAAA,CAAA,CACC,MAAOuL,CAAAA,CACP,aAAA,CAAeE,EACf,OAAA,CAASX,EAAAA,CACT,YAAY,eAAA,CACd,CAAA,CAAA,CACF,GACF,ECpCG,IAAMY,GAAiB,CAAC,CAAE,MAAAzC,CAAM,CAAA,GAA2B,CAChE,GAAM,CAAC0C,EAAcC,CAAe,CAAA,CAAIrJ,QAAAA,CAAS,KAAK,CAAA,CAEhDuH,CAAAA,CAAoB,IAAM,CAC9B,IAAMjC,EAAOoB,CAAAA,CAAM,WAAA,CACnB,OAAKpB,CAAAA,CAGHlK,IAAAA,CAAC,OAAI,SAAA,CAAU,WAAA,CACb,UAAAA,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wBAAA,CACb,QAAA,CAAA,CAAApB,IAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,aAAA,CAAc,KAAA,CAAO4B,CAAAA,CAAK,WAAY,CAAA,CACvDtL,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,cAAc,KAAA,CAAO4B,CAAAA,CAAK,WAAY,CAAA,CACvDtL,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,cAAc,KAAA,CAAO1J,GAAAA,CAACsB,EAAA,CAAM,OAAA,CAAQ,YAAA,CAAc,QAAA,CAAAgK,CAAAA,CAAK,UAAA,CAAW,EAAU,CAAA,CAC7FtL,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,YAAY,KAAA,CAAO4B,CAAAA,CAAK,SAAU,CAAA,CAAA,CACrD,CAAA,CAEAlK,KAAC,KAAA,CAAA,CACC,QAAA,CAAA,CAAApB,IAAC,IAAA,CAAA,CAAG,SAAA,CAAU,2BAA2B,QAAA,CAAA,eAAA,CAAa,CAAA,CACtDA,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,mCAAA,CACb,SAAAoB,IAAAA,CAAC,OAAA,CAAA,CAAM,UAAU,QAAA,CACf,QAAA,CAAA,CAAApB,IAAC,OAAA,CAAA,CAAM,SAAA,CAAU,uBACf,QAAA,CAAAoB,IAAAA,CAAC,MACC,QAAA,CAAA,CAAApB,GAAAA,CAAC,MAAG,SAAA,CAAU,yCAAA,CAA0C,iBAAK,CAAA,CAC7DA,GAAAA,CAAC,IAAA,CAAA,CAAG,SAAA,CAAU,yCAAA,CAA0C,QAAA,CAAA,OAAA,CAAK,EAC7DA,GAAAA,CAAC,IAAA,CAAA,CAAG,UAAU,yCAAA,CAA0C,QAAA,CAAA,aAAA,CAAW,GACrE,CAAA,CACF,CAAA,CACAA,IAAC,OAAA,CAAA,CACE,QAAA,CAAAsL,EAAK,YAAA,EAAc,GAAA,CAAI,CAACiB,CAAAA,CAAW7J,CAAAA,GAClCtB,KAAC,IAAA,CAAA,CAAe,SAAA,CAAU,4BAAA,CACxB,QAAA,CAAA,CAAApB,GAAAA,CAAC,IAAA,CAAA,CAAG,UAAU,+BAAA,CAAiC,QAAA,CAAAuM,EAAK,KAAA,CAAM,CAAA,CAC1DvM,IAAC,IAAA,CAAA,CAAG,SAAA,CAAU,oBAAqB,QAAA,CAAAuM,CAAAA,CAAK,MAAM,CAAA,CAC9CvM,GAAAA,CAAC,MAAG,SAAA,CAAU,WAAA,CACZ,SAAAA,GAAAA,CAACsB,CAAAA,CAAA,CAAM,OAAA,CAAS,QAAA,CAASiL,CAAAA,CAAK,UAAU,CAAA,CAAI,EAAA,CAAK,aAAe,SAAA,CAC7D,QAAA,CAAAA,EAAK,UAAA,CACR,CAAA,CACF,IAPO7J,CAQT,CACD,EACH,CAAA,CAAA,CACF,CAAA,CACF,GACF,CAAA,CAECgK,CAAAA,CAAM,aACL1M,GAAAA,CAAC,KAAA,CAAA,CACC,QAAA,CAAAoB,IAAAA,CAACwB,CAAAA,CAAA,CACC,QAAQ,OAAA,CACR,SAAA,CAAU,8EACV,OAAA,CAAS,IAAMyM,EAAgB,IAAI,CAAA,CAEnC,UAAArP,GAAAA,CAAC,MAAA,CAAA,CAAK,UAAU,qBAAA,CAAsB,QAAA,CAAA,eAAA,CAAa,EACnDA,GAAAA,CAACsM,YAAAA,CAAA,CAAa,SAAA,CAAU,SAAA,CAAU,CAAA,CAAA,CACpC,CAAA,CACF,CAAA,CAAA,CAEJ,CAAA,CAnDgB,IAqDpB,CAAA,CAEMyB,CAAAA,CAA2B,IAE7B3M,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wBAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,iBAAiB,KAAA,CAAM,WAAA,CAAY,EACpD1J,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,QAAA,CAAS,KAAA,CAAM,YAAA,CAAa,CAAA,CAC7C1J,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,mBAAmB,KAAA,CAAM,eAAA,CAAgB,EAC1D1J,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,MAAA,CAAO,MAAM,YAAA,CAAa,CAAA,CAAA,CAC7C,EAIEsE,CAAAA,CAA0B,IAE5B5M,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wBAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,WAAA,CAAY,MAAM,uBAAA,CAAwB,CAAA,CAC3D1J,IAAC0J,CAAAA,CAAA,CAAU,MAAM,cAAA,CAAe,KAAA,CAAM,QAAQ,CAAA,CAC9C1J,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,cAAc,KAAA,CAAM,GAAA,CAAI,CAAA,CACzC1J,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,MAAM,QAAA,CAAS,KAAA,CAAO1J,IAACsB,CAAAA,CAAA,CAAM,QAAQ,aAAA,CAAc,QAAA,CAAA,QAAA,CAAM,EAAU,CAAA,CAAA,CAChF,CAAA,CAIE2M,EAAuB,IAEzB7M,IAAAA,CAAC,OAAI,SAAA,CAAU,wBAAA,CACb,UAAApB,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,YAAA,CAAa,KAAA,CAAM,YAAY,CAAA,CAChD1J,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,eAAe,KAAA,CAAM,2BAAA,CAA4B,EAClE1J,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,QAAA,CAAS,MAAM,sBAAA,CAAuB,CAAA,CACvD1J,IAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,QAAA,CAAS,KAAA,CAAM,4BAAA,CAA6B,GAC/D,CAAA,CAIE4F,CAAAA,CAAkB,IAAM,CAC5B,OAAQ5C,EAAM,WAAA,EACZ,KAAK,MAAA,CACH,OAAO,eACT,KAAK,aAAA,CACH,OAAO,qBAAA,CACT,KAAK,cACH,OAAO,yBAAA,CACT,KAAK,SAAA,CACH,OAAO,iBAAA,CACT,QACE,OAAO,qBACX,CACF,CAAA,CAEMwB,CAAAA,CAAgB,IAAM,CAC1B,OAAQxB,EAAM,WAAA,EACZ,KAAK,MAAA,CACH,OAAOa,GAAkB,CAC3B,KAAK,cACH,OAAOQ,CAAAA,EAAyB,CAClC,KAAK,aAAA,CACH,OAAOC,GAAwB,CACjC,KAAK,UACH,OAAOC,CAAAA,GACT,QACE,OAAOjO,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,gCAAgC,QAAA,CAAA,iCAAA,CAA+B,CACvF,CACF,CAAA,CAGA,OACEoB,KAAAyK,QAAAA,CAAA,CACE,QAAA,CAAA,CAAA7L,GAAAA,CAACa,EAAAA,CAAA,CAAS,MAAOyO,CAAAA,EAAgB,CAC9B,SAAApB,CAAAA,EAAc,CACjB,EAEAlO,GAAAA,CAACyK,EAAAA,CAAA,CAAO,IAAA,CAAM2E,CAAAA,CAAc,aAAcC,CAAAA,CACxC,QAAA,CAAAjO,KAAC2J,EAAAA,CAAA,CAAc,UAAU,WAAA,CACvB,QAAA,CAAA,CAAA/K,GAAAA,CAACiL,EAAAA,CAAA,CACC,QAAA,CAAA7J,KAAC+J,EAAAA,CAAA,CAAa,UAAAmE,CAAAA,EAAgB,CAAE,oBAAgB,CAAA,CAClD,CAAA,CACAtP,IAACqL,EAAAA,CAAA,CAAW,KAAMqB,CAAAA,CAAM,WAAA,CAAa,GACvC,CAAA,CACF,CAAA,CAAA,CACF,CAEJ,MClJa6C,EAAAA,CAAe,CAAwB,CAClD,IAAA,CAAAC,CAAAA,CACA,SAAAtO,CACF,CAAA,GAEIlB,IAACyP,YAAAA,CAAA,CAAiB,GAAGD,CAAAA,CAClB,QAAA,CAAAtO,CAAAA,CACH,ECNG,IAAMwO,EAAY,CAAsC,CAC7D,KAAAhH,CAAAA,CACA,IAAA,CAAAU,EACA,GAAGtJ,CACL,CAAA,GAAyB,CACvB,GAAM,CAAE,QAAA6P,CAAAA,CAAS,SAAA,CAAAC,CAAU,CAAA,CAAIC,cAAAA,GACzBxM,CAAAA,CAAQyM,GAAAA,CAAIF,EAAU,MAAA,CAAQlH,CAAI,GAAG,OAAA,CAE3C,OACE1I,IAAC+P,UAAAA,CAAA,CACC,KAAMrH,CAAAA,CACN,OAAA,CAASiH,CAAAA,CACT,MAAA,CAAQ,CAAC,CAAE,MAAO,CAAE,QAAA,CAAAK,EAAU,KAAA,CAAA7Q,CAAAA,CAAO,GAAG8Q,CAAU,CAAE,IAClDjQ,GAAAA,CAACqH,CAAAA,CAAA,CACE,GAAGvH,CAAAA,CACH,GAAGmQ,CAAAA,CACJ,IAAA,CAAM7G,EACN,KAAA,CAAOjK,CAAAA,EAA8B,EAAA,CACrC,QAAA,CAAW4H,CAAAA,EAAM,CACf,GAAIqC,CAAAA,GAAS,QAAA,CAAU,CACrB,IAAM8G,CAAAA,CAAMnJ,EAAE,MAAA,CAAO,KAAA,CACrBiJ,EAASE,CAAAA,GAAQ,EAAA,CAAK,OAAY,UAAA,CAAWA,CAAG,CAAC,EACnD,CAAA,KACEF,EAASjJ,CAAAA,CAAE,MAAA,CAAO,KAAK,EAE3B,CAAA,CACA,KAAA,CAAO1D,EACT,CAAA,CAEJ,CAEJ,ECzBO,IAAM8M,GAAa,CAAsC,CAC9D,IAAA,CAAAzH,CAAAA,CACA,GAAG5I,CACL,IAA0B,CACxB,GAAM,CAAE,OAAA,CAAA6P,CAAAA,CAAS,UAAAC,CAAU,CAAA,CAAIC,gBAAkB,CAC3CxM,CAAAA,CAAQyM,IAAIF,CAAAA,CAAU,MAAA,CAAQlH,CAAI,CAAA,EAAG,OAAA,CAE3C,OACE1I,GAAAA,CAAC+P,UAAAA,CAAA,CACC,IAAA,CAAMrH,CAAAA,CACN,OAAA,CAASiH,EACT,MAAA,CAAQ,CAAC,CAAE,KAAA,CAAAS,CAAM,IACfpQ,GAAAA,CAACyD,CAAAA,CAAA,CACE,GAAG3D,CAAAA,CACJ,MAAOsQ,CAAAA,CAAM,KAAA,CACb,cAAeA,CAAAA,CAAM,QAAA,CACrB,MAAO/M,CAAAA,CACT,CAAA,CAEJ,CAEJ,ECZO,IAAMgN,GAAuB,CAAwB,CAC1D,OAAAC,CAAAA,CACA,cAAA,CAAAC,CAAAA,CAAiB,KAAA,CACjB,YAAA,CAAAC,CAAAA,CACA,OAAAC,CAAAA,CACA,QAAA,CAAAC,EACA,GAAGC,CACL,IAAmE,CACjE,GAAM,CAACC,CAAAA,CAAcC,CAAe,EAAI7K,QAAAA,CAASuK,CAAc,EACzD,CAAChJ,CAAAA,CAAWuJ,CAAY,CAAA,CAAI9K,QAAAA,CAAS,KAAK,CAAA,CAE1CwJ,CAAAA,CAAOuB,OAAAA,CAAW,CACtB,GAAGJ,CAAAA,CACH,SAAUL,CAAAA,CAASU,WAAAA,CAAYV,CAAM,CAAA,CAAW,MAClD,CAAC,CAAA,CAEK,CAAE,UAAAV,CAAAA,CAAW,KAAA,CAAAqB,EAAO,QAAA,CAAAC,CAAS,EAAI1B,CAAAA,CACjC,CAAE,OAAA,CAAA2B,CAAAA,CAAS,OAAA,CAAAC,CAAQ,EAAIxB,CAAAA,CAG7ByB,SAAAA,CAAU,IAAM,CACdR,CAAAA,CAAgBN,CAAc,EAChC,CAAA,CAAG,CAACA,CAAc,CAAC,EAEnB,IAAMe,CAAAA,CAAYd,IAAiB,MAAA,CAAYD,CAAAA,CAAiBK,EAE1DW,CAAAA,CAAmBC,WAAAA,CAAY,IAAM,CACrChB,CAAAA,CACFA,CAAAA,GAEAK,CAAAA,CAAgBY,CAAAA,EAAQ,CAACA,CAAI,EAEjC,EAAG,CAACjB,CAAY,CAAC,CAAA,CAEXkB,CAAAA,CAAaF,YAAY,SAAY,CAIzC,GAFoB,MAAMhC,CAAAA,CAAK,SAAQ,CAOvC,CAAAsB,CAAAA,CAAa,IAAI,CAAA,CAEjB,GAAI,CACF,IAAMxF,CAAAA,CAAOkE,EAAK,SAAA,EAAU,CACxBiB,GACF,MAAMA,CAAAA,CAAOnF,CAAI,CAAA,CAIfkF,CAAAA,CACFA,GAAa,CAEbK,CAAAA,CAAgB,EAAK,EAEzB,CAAA,MAASxN,EAAO,CACd,OAAA,CAAQ,KAAA,CAAM,kBAAA,CAAoBA,CAAK,EAEzC,QAAE,CACAyN,CAAAA,CAAa,KAAK,EACpB,CAAA,CACF,EAAG,CAACtB,CAAAA,CAAMiB,EAAQD,CAAY,CAAC,EAEzBmB,CAAAA,CAAeH,WAAAA,CAAY,IAAM,CAErCP,CAAAA,GAEIP,CAAAA,EACFA,CAAAA,EAAS,CAIPF,CAAAA,CACFA,CAAAA,EAAa,CAEbK,EAAgB,KAAK,EAEzB,EAAG,CAACI,CAAAA,CAAOP,EAAUF,CAAY,CAAC,EAE5BoB,CAAAA,CAAgBJ,WAAAA,CAAY,CAACpB,CAAAA,CAAgB/M,CAAAA,GAAkB,CACnE6N,CAAAA,CAASd,CAAAA,CAAO,CAAE,IAAA,CAAM,QAAA,CAAU,OAAA,CAAS/M,CAAM,CAAC,EACpD,EAAG,CAAC6N,CAAQ,CAAC,CAAA,CAEb,OAAO,CACL,GAAG1B,CAAAA,CACH,UAAA8B,CAAAA,CACA,SAAA,CAAA/J,EACA,gBAAA,CAAAgK,CAAAA,CACA,WAAAG,CAAAA,CACA,YAAA,CAAAC,EACA,WAAA,CAAaR,CAAAA,CACb,OAAA,CAAAC,CAAAA,CACA,aAAA,CAAAQ,CACF,CACF,ECtHO,IAAMC,EAAAA,CAAqBC,CAAAA,CAAE,OAAO,CACzC,MAAA,CAAQA,EAAE,MAAA,EAAO,CAAE,OAAQ5B,CAAAA,EAAQ,CAAC,UAAW,SAAA,CAAW,OAAO,CAAA,CAAE,QAAA,CAASA,CAAG,CAAA,CAAG,CAChF,OAAA,CAAS,yBACX,CAAC,CAAA,CACD,eAAA,CAAiB4B,EAAE,MAAA,EAAO,CAAE,UAAS,CACrC,IAAA,CAAMA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAA,CAAG,kBAAkB,EAAE,GAAA,CAAI,GAAA,CAAM,wCAAwC,CAAA,CAC9F,UAAA,CAAYA,CAAAA,CAAE,QAAO,CAAE,QAAA,EACzB,CAAC,CAAA,CAAE,OAAQxG,CAAAA,EAEL,EAAAA,EAAK,MAAA,GAAW,SAAA,EAAa,CAACA,CAAAA,CAAK,UAAA,CAAA,CAItC,CACD,OAAA,CAAS,wCAAA,CACT,KAAM,CAAC,YAAY,CACrB,CAAC,CAAA,CAIYyG,EAAAA,CAAe,CAC1B,CAAE,KAAA,CAAO,iBAAkB,KAAA,CAAO,2CAA4C,EAC9E,CAAE,KAAA,CAAO,yBAA0B,KAAA,CAAO,0BAA2B,EACrE,CAAE,KAAA,CAAO,qBAAsB,KAAA,CAAO,sBAAuB,EAC7D,CAAE,KAAA,CAAO,qBAAA,CAAuB,KAAA,CAAO,8BAA+B,CAAA,CACtE,CAAE,KAAA,CAAO,kBAAA,CAAoB,MAAO,qCAAsC,CAAA,CAC1E,CAAE,KAAA,CAAO,2BAAA,CAA6B,MAAO,6BAA8B,CAAA,CAC3E,CAAE,KAAA,CAAO,qBAAA,CAAuB,MAAO,uBAAwB,CAAA,CAC/D,CAAE,KAAA,CAAO,uBAAA,CAAyB,KAAA,CAAO,yBAA0B,CACrE,CAAA,KCLaC,EAAAA,CAAqB,CAAC,CACjC,OAAA,CAAApM,CAAAA,CACA,IAAA,CAAAN,EACA,YAAA,CAAA2M,CAAAA,CACA,UAAAC,CACF,CAAA,GAA+B,CAC7B,IAAM1C,CAAAA,CAAOa,EAAAA,CAA2C,CACtD,MAAA,CAAQwB,EAAAA,CACR,cAAe,CACb,MAAA,CAAQ,UACR,eAAA,CAAiB,EAAA,CACjB,KAAM,EAAA,CACN,UAAA,CAAY,EACd,CACF,CAAC,EAEK,CAAE,YAAA,CAAAM,EAAc,KAAA,CAAAC,CAAAA,CAAO,QAAAzC,CAAAA,CAAS,SAAA,CAAAC,CAAU,CAAA,CAAIJ,CAAAA,CAC9C9N,CAAAA,CAAS0Q,EAAM,QAAQ,CAAA,CAoB7B,OACEpS,GAAAA,CAACyK,EAAAA,CAAA,CAAO,IAAA,CAAMnF,CAAAA,CAAM,aAAc2M,CAAAA,CAChC,QAAA,CAAA7Q,KAAC2J,EAAAA,CAAA,CAAc,UAAU,kBAAA,CACvB,QAAA,CAAA,CAAA3J,KAAC6J,EAAAA,CAAA,CACC,QAAA,CAAA,CAAA7J,IAAAA,CAAC+J,EAAAA,CAAA,CAAY,4BAAgBvF,CAAAA,CAAAA,CAAQ,CAAA,CACrC5F,IAACoL,EAAAA,CAAA,CAAkB,uEAEnB,CAAA,CAAA,CACF,CAAA,CAEApL,IAACuP,EAAAA,CAAA,CAAa,KAAMC,CAAAA,CAClB,QAAA,CAAApO,KAAC,MAAA,CAAA,CAAK,QAAA,CAAU+Q,EA7BP,MAAO7G,CAAAA,EAA+B,CACrD,GAAI,CACF,MAAM4G,EAAU5G,CAAI,CAAA,CACpBvG,GAAM,CACJ,KAAA,CAAO,iBACP,WAAA,CAAa,CAAA,OAAA,EAAUa,CAAO,CAAA,UAAA,EAAa0F,CAAAA,CAAK,OAAO,WAAA,EAAa,iBACtE,CAAC,CAAA,CACD2G,EAAa,CAAA,CAAK,CAAA,CAClBzC,CAAAA,CAAK,KAAA,GACP,CAAA,KAAgB,CACdzK,EAAAA,CAAM,CACJ,MAAO,OAAA,CACP,WAAA,CAAa,6CACb,OAAA,CAAS,aACX,CAAC,EACH,CACF,CAa6C,CAAA,CAAG,SAAA,CAAU,YAChD,QAAA,CAAA,CAAA/E,GAAAA,CAACmQ,GAAA,CACC,IAAA,CAAK,QAAA,CACL,KAAA,CAAM,QAAA,CACN,WAAA,CAAY,gBACZ,OAAA,CAAS,CACP,CAAE,KAAA,CAAO,SAAA,CAAW,MAAO,SAAU,CAAA,CACrC,CAAE,KAAA,CAAO,SAAA,CAAW,MAAO,SAAU,CAAA,CACrC,CAAE,KAAA,CAAO,OAAA,CAAS,MAAO,OAAQ,CACnC,CAAA,CACF,CAAA,CAEAnQ,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,iBAAA,CACL,MAAM,8BAAA,CACN,WAAA,CAAY,uBACd,CAAA,CAEAtO,IAAAA,CAAC,OAAI,SAAA,CAAU,WAAA,CACb,UAAAA,IAAAA,CAAC,OAAA,CAAA,CAAM,UAAU,qCAAA,CAAsC,QAAA,CAAA,CAAA,OAAA,CAChDpB,IAAC,MAAA,CAAA,CAAK,SAAA,CAAU,kBAAA,CAAmB,QAAA,CAAA,GAAA,CAAC,CAAA,CAAA,CAC3C,CAAA,CACAA,IAAC+P,UAAAA,CAAA,CACC,KAAK,MAAA,CACL,OAAA,CAASJ,EACT,MAAA,CAAQ,CAAC,CAAE,KAAA,CAAAS,CAAM,IACfpQ,GAAAA,CAACiD,EAAAA,CAAA,CACE,GAAGmN,CAAAA,CACJ,YAAY,2BAAA,CACZ,IAAA,CAAM,CAAA,CACN,KAAA,CAAOR,CAAAA,CAAU,MAAA,CAAO,MAAM,OAAA,CAChC,CAAA,CAEJ,GACF,CAAA,CAEClO,CAAAA,GAAW,WACV1B,GAAAA,CAACmQ,EAAAA,CAAA,CACC,IAAA,CAAK,YAAA,CACL,MAAM,aAAA,CACN,WAAA,CAAY,qBACZ,OAAA,CAAS4B,EAAAA,CAAa,IAAIM,CAAAA,GAAS,CACjC,KAAA,CAAOA,CAAAA,CAAK,KAAA,CACZ,KAAA,CAAOA,EAAK,KACd,CAAA,CAAE,EACJ,CAAA,CAGFjR,IAAAA,CAAC8J,GAAA,CACC,QAAA,CAAA,CAAAlL,IAAC4C,CAAAA,CAAA,CACC,KAAK,QAAA,CACL,OAAA,CAAQ,UACR,OAAA,CAAS,IAAM,CACbqP,CAAAA,CAAa,KAAK,CAAA,CAClBzC,CAAAA,CAAK,KAAA,GACP,EACD,QAAA,CAAA,QAAA,CAED,CAAA,CACAxP,IAAC4C,CAAAA,CAAA,CACC,KAAK,QAAA,CACL,QAAA,CAAU,CAACgN,CAAAA,CAAU,OAAA,EAAWA,EAAU,YAAA,CAEzC,QAAA,CAAAA,EAAU,YAAA,CAAe,eAAA,CAAkB,UAC9C,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CACF,CAEJ,qCC/IA,IAAM0C,EAAAA,CAAoB,IAEnB,SAASC,EAAAA,EAAc,CAC5B,GAAM,CAACC,CAAAA,CAAUC,CAAW,CAAA,CAAUC,EAAA,CAAA,QAAA,CAA8B,MAAS,CAAA,CAE7E,OAAMA,aAAU,IAAM,CACpB,IAAMC,CAAAA,CAAM,MAAA,CAAO,UAAA,CAAW,CAAA,YAAA,EAAeL,EAAAA,CAAoB,CAAC,KAAK,CAAA,CACjEtC,CAAAA,CAAW,IAAM,CACrByC,CAAAA,CAAY,OAAO,UAAA,CAAaH,EAAiB,EACnD,CAAA,CACA,OAAAK,CAAAA,CAAI,iBAAiB,QAAA,CAAU3C,CAAQ,EACvCyC,CAAAA,CAAY,MAAA,CAAO,WAAaH,EAAiB,CAAA,CAC1C,IAAMK,CAAAA,CAAI,mBAAA,CAAoB,SAAU3C,CAAQ,CACzD,EAAG,EAAE,EAEE,CAAC,CAACwC,CACX,CCXA,IAAMI,EAAAA,CAAkBC,cAItB,CACE,CAAE,UAAApT,CAAAA,CAAW,WAAA,CAAAsK,EAAc,YAAA,CAAc,UAAA,CAAA+I,EAAa,IAAA,CAAM,GAAGhT,CAAM,CAAA,CACrEC,CAAAA,GAEAC,GAAAA,CAAoB,QAAnB,CACC,GAAA,CAAKD,EACL,UAAA,CAAY+S,CAAAA,CACZ,YAAa/I,CAAAA,CACb,SAAA,CAAWjL,EACT,oBAAA,CACAiL,CAAAA,GAAgB,aAAe,gBAAA,CAAmB,gBAAA,CAClDtK,CACF,CAAA,CACC,GAAGK,EACN,CAEJ,EACA8S,EAAAA,CAAU,WAAA,CAAiC,EAAA,CAAA,IAAA,CAAK,WAAA,CCnBhD,IAAMG,EAAAA,CAAuBC,EAAA,CAAA,IAAA,CAEvBC,EAAAA,CAA8BD,EAAA,CAAA,OAAA,CAE9BE,EAAAA,CAA4BF,SAE5BG,EAAAA,CAA6BH,EAAA,CAAA,MAAA,CAE7BI,GAAqBC,EAAA,CAAA,UAAA,CAGzB,CAAC,CAAE,SAAA,CAAA5T,CAAAA,CAAW,GAAGK,CAAM,CAAA,CAAGC,IAC1BC,GAAAA,CAAgBgT,EAAA,CAAA,OAAA,CAAf,CACC,SAAA,CAAWlU,CAAAA,CACT,0JACAW,CACF,CAAA,CACC,GAAGK,CAAAA,CACJ,GAAA,CAAKC,CAAAA,CACP,CACD,EACDqT,EAAAA,CAAa,YAA6BJ,EAAA,CAAA,OAAA,CAAQ,WAAA,KAE5CM,EAAAA,CAAgBhU,GAAAA,CACpB,mMACA,CACE,QAAA,CAAU,CACR,IAAA,CAAM,CACJ,IAAK,mGAAA,CACL,MAAA,CACE,6GACF,IAAA,CAAM,+HAAA,CACN,KAAA,CACE,kIACJ,CACF,CAAA,CACA,gBAAiB,CACf,IAAA,CAAM,OACR,CACF,CACF,EAMMiU,EAAAA,CAAqBF,EAAA,CAAA,UAAA,CAGzB,CAAC,CAAE,IAAA,CAAAG,EAAO,OAAA,CAAS,SAAA,CAAA/T,EAAW,QAAA,CAAAyB,CAAAA,CAAU,GAAGpB,CAAM,CAAA,CAAGC,CAAAA,GACpDqB,IAAAA,CAAC+R,EAAAA,CAAA,CACC,UAAAnT,GAAAA,CAACoT,EAAAA,CAAA,EAAa,CAAA,CACdhS,IAAAA,CAAgB4R,WAAf,CACC,GAAA,CAAKjT,EACL,SAAA,CAAWjB,CAAAA,CAAGwU,GAAc,CAAE,IAAA,CAAAE,CAAK,CAAC,CAAA,CAAG/T,CAAS,CAAA,CAC/C,GAAGK,CAAAA,CAEH,QAAA,CAAA,CAAAoB,CAAAA,CACDE,IAAAA,CAAgB4R,SAAf,CAAqB,SAAA,CAAU,2OAC9B,QAAA,CAAA,CAAAhT,GAAAA,CAAC8G,IAAA,CAAE,SAAA,CAAU,UAAU,CAAA,CACvB9G,GAAAA,CAAC,QAAK,SAAA,CAAU,SAAA,CAAU,iBAAK,CAAA,CAAA,CACjC,CAAA,CAAA,CACF,GACF,CACD,EACDuT,EAAAA,CAAa,WAAA,CAA6BP,EAAA,CAAA,OAAA,CAAQ,WAAA,KAE5CS,EAAAA,CAAc,CAAC,CACnB,SAAA,CAAAhU,CAAAA,CACA,GAAGK,CACL,CAAA,GACEE,IAAC,KAAA,CAAA,CACC,SAAA,CAAWlB,EACT,kDAAA,CACAW,CACF,EACC,GAAGK,CAAAA,CACN,EAEF2T,EAAAA,CAAY,WAAA,CAAc,aAAA,CAE1B,IAAMC,EAAAA,CAAc,CAAC,CACnB,SAAA,CAAAjU,CAAAA,CACA,GAAGK,CACL,CAAA,GACEE,IAAC,KAAA,CAAA,CACC,SAAA,CAAWlB,EACT,+DAAA,CACAW,CACF,EACC,GAAGK,CAAAA,CACN,EAEF4T,EAAAA,CAAY,WAAA,CAAc,cAE1B,IAAMC,EAAAA,CAAmBN,EAAA,CAAA,UAAA,CAGvB,CAAC,CAAE,SAAA,CAAA5T,EAAW,GAAGK,CAAM,EAAGC,CAAAA,GAC1BC,GAAAA,CAAgBgT,SAAf,CACC,GAAA,CAAKjT,EACL,SAAA,CAAWjB,CAAAA,CAAG,wCAAyCW,CAAS,CAAA,CAC/D,GAAGK,CAAAA,CACN,CACD,EACD6T,EAAAA,CAAW,WAAA,CAA6BX,EAAA,CAAA,KAAA,CAAM,WAAA,CAE9C,IAAMY,EAAAA,CAAyBP,cAG7B,CAAC,CAAE,UAAA5T,CAAAA,CAAW,GAAGK,CAAM,CAAA,CAAGC,CAAAA,GAC1BC,IAAgBgT,EAAA,CAAA,WAAA,CAAf,CACC,IAAKjT,CAAAA,CACL,SAAA,CAAWjB,EAAG,+BAAA,CAAiCW,CAAS,EACvD,GAAGK,CAAAA,CACN,CACD,EACD8T,EAAAA,CAAiB,WAAA,CAA6BZ,eAAY,WAAA,CCzH1D,IAAMa,GAAmC,EAAA,CAAA,QAAA,CAEnCC,EAAAA,CAA2B,QAE3BC,EAAAA,CAAkC,EAAA,CAAA,OAAA,CAElCC,GAAuBC,EAAA,CAAA,UAAA,CAG3B,CAAC,CAAE,SAAA,CAAAxU,CAAAA,CAAW,UAAA,CAAAyU,EAAa,CAAA,CAAG,GAAGpU,CAAM,CAAA,CAAGC,CAAAA,GAC1CC,IAAkB,EAAA,CAAA,OAAA,CAAjB,CACC,IAAKD,CAAAA,CACL,UAAA,CAAYmU,EACZ,SAAA,CAAWpV,CAAAA,CACT,qYACAW,CACF,CAAA,CACC,GAAGK,CAAAA,CACN,CACD,EACDkU,EAAAA,CAAe,WAAA,CAA+B,EAAA,CAAA,OAAA,CAAQ,YCAtD,IAAMG,EAAAA,CAAsB,eAAA,CACtBC,EAAAA,CAAyB,IAAA,CAAU,EAAA,CAAK,CAAA,CACxCC,GAAgB,OAAA,CAChBC,EAAAA,CAAuB,QACvBC,EAAAA,CAAqB,MAAA,CACrBC,GAA4B,GAAA,CAY5BC,EAAAA,CAAuB,EAAA,CAAA,aAAA,CAAqC,IAAI,CAAA,CAEtE,SAASC,IAAa,CACpB,IAAMC,EAAgB,EAAA,CAAA,UAAA,CAAWF,EAAc,EAC/C,GAAI,CAACE,EACH,MAAM,IAAI,MAAM,mDAAmD,CAAA,CAGrE,OAAOA,CACT,KAEMC,EAAAA,CAAwB,EAAA,CAAA,UAAA,CAQ5B,CACE,CACE,WAAA,CAAAC,CAAAA,CAAc,KACd,IAAA,CAAMC,CAAAA,CACN,aAAcC,CAAAA,CACd,SAAA,CAAAtV,EACA,KAAA,CAAAuV,CAAAA,CACA,SAAA9T,CAAAA,CACA,GAAGpB,CACL,CAAA,CACAC,CAAAA,GACG,CACH,IAAMyS,CAAAA,CAAWD,IAAY,CACvB,CAAC0C,CAAAA,CAAYC,CAAa,CAAA,CAAU,EAAA,CAAA,QAAA,CAAS,KAAK,CAAA,CAIlD,CAACC,EAAOC,CAAQ,CAAA,CAAU,YAASP,CAAW,CAAA,CAC9CvP,EAAOwP,CAAAA,EAAYK,CAAAA,CACnBE,EAAgB,EAAA,CAAA,WAAA,CACnBlW,CAAAA,EAAmD,CAClD,IAAMmW,CAAAA,CAAY,OAAOnW,CAAAA,EAAU,UAAA,CAAaA,CAAAA,CAAMmG,CAAI,CAAA,CAAInG,CAAAA,CAC1D4V,EACFA,CAAAA,CAAYO,CAAS,EAErBF,CAAAA,CAASE,CAAS,EAIpB,QAAA,CAAS,MAAA,CAAS,GAAGnB,EAAmB,CAAA,CAAA,EAAImB,CAAS,CAAA,kBAAA,EAAqBlB,EAAsB,GAClG,CAAA,CACA,CAACW,EAAazP,CAAI,CACpB,CAAA,CAGMiQ,CAAAA,CAAsB,EAAA,CAAA,WAAA,CAAY,IAC/B/C,EACH0C,CAAAA,CAAe5P,CAAAA,EAAS,CAACA,CAAI,CAAA,CAC7B+P,EAAS/P,CAAAA,EAAS,CAACA,CAAI,CAAA,CAC1B,CAACkN,EAAU6C,CAAAA,CAASH,CAAa,CAAC,CAAA,CAG/B,EAAA,CAAA,SAAA,CAAU,IAAM,CACpB,IAAMM,CAAAA,CAAiB/S,CAAAA,EAAyB,CAE5CA,CAAAA,CAAM,MAAQ+R,EAAAA,GACb/R,CAAAA,CAAM,SAAWA,CAAAA,CAAM,OAAA,CAAA,GAExBA,EAAM,cAAA,EAAe,CACrB8S,GAAc,EAElB,CAAA,CAEA,cAAO,gBAAA,CAAiB,SAAA,CAAWC,CAAa,CAAA,CACzC,IAAM,OAAO,mBAAA,CAAoB,SAAA,CAAWA,CAAa,CAClE,CAAA,CAAG,CAACD,CAAa,CAAC,CAAA,CAIlB,IAAM1Q,CAAAA,CAAQS,CAAAA,CAAO,WAAa,WAAA,CAE5BmQ,CAAAA,CAAqB,WACzB,KAAO,CACL,MAAA5Q,CAAAA,CACA,IAAA,CAAAS,EACA,OAAA,CAAA+P,CAAAA,CACA,SAAA7C,CAAAA,CACA,UAAA,CAAAyC,CAAAA,CACA,aAAA,CAAAC,CAAAA,CACA,aAAA,CAAAK,CACF,CAAA,CAAA,CACA,CAAC1Q,EAAOS,CAAAA,CAAM+P,CAAAA,CAAS7C,EAAUyC,CAAAA,CAAYC,CAAAA,CAAeK,CAAa,CAC3E,CAAA,CAEA,OACEvV,GAAAA,CAACyU,EAAAA,CAAe,SAAf,CAAwB,KAAA,CAAOgB,EAC9B,QAAA,CAAAzV,GAAAA,CAAC6T,EAAAA,CAAA,CAAgB,aAAA,CAAe,CAAA,CAC9B,SAAA7T,GAAAA,CAAC,KAAA,CAAA,CACC,MACE,CACE,iBAAA,CAAmBqU,GACnB,sBAAA,CAAwBE,EAAAA,CACxB,GAAGS,CACL,CAAA,CAEF,UAAWlW,CAAAA,CACT,mFAAA,CACAW,CACF,CAAA,CACA,GAAA,CAAKM,EACJ,GAAGD,CAAAA,CAEH,QAAA,CAAAoB,CAAAA,CACH,CAAA,CACF,CAAA,CACF,CAEJ,CACF,EACA0T,GAAgB,WAAA,CAAc,iBAAA,KAExBc,EAAAA,CAAgB,EAAA,CAAA,UAAA,CAQpB,CACE,CACE,IAAA,CAAAlC,EAAO,MAAA,CACP,OAAA,CAAA9T,EAAU,SAAA,CACV,WAAA,CAAAiW,EAAc,WAAA,CACd,SAAA,CAAAlW,CAAAA,CACA,QAAA,CAAAyB,CAAAA,CACA,GAAGpB,CACL,CAAA,CACAC,CAAAA,GACG,CACH,GAAM,CAAE,SAAAyS,CAAAA,CAAU,KAAA,CAAA3N,EAAO,UAAA,CAAAoQ,CAAAA,CAAY,cAAAC,CAAc,CAAA,CAAIR,IAAW,CAElE,OAAIiB,IAAgB,MAAA,CAEhB3V,GAAAA,CAAC,KAAA,CAAA,CACC,SAAA,CAAWlB,CAAAA,CACT,6EAAA,CACAW,CACF,CAAA,CACA,GAAA,CAAKM,EACJ,GAAGD,CAAAA,CAEH,SAAAoB,CAAAA,CACH,CAAA,CAIAsR,EAEAxS,GAAAA,CAAC+S,EAAAA,CAAA,CAAM,IAAA,CAAMkC,CAAAA,CAAY,aAAcC,CAAAA,CAAgB,GAAGpV,EACxD,QAAA,CAAAE,GAAAA,CAACuT,EAAAA,CAAA,CACC,cAAA,CAAa,SAAA,CACb,cAAY,MAAA,CACZ,SAAA,CAAU,+EACV,KAAA,CACE,CACE,kBAAmBe,EACrB,CAAA,CAEF,KAAMd,CAAAA,CAEN,QAAA,CAAAxT,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,8BAA+B,QAAA,CAAAkB,CAAAA,CAAS,EACzD,CAAA,CACF,CAAA,CAKFE,IAAAA,CAAC,KAAA,CAAA,CACC,GAAA,CAAKrB,CAAAA,CACL,UAAU,oDAAA,CACV,YAAA,CAAY8E,EACZ,kBAAA,CAAkBA,CAAAA,GAAU,YAAc8Q,CAAAA,CAAc,EAAA,CACxD,eAAcjW,CAAAA,CACd,WAAA,CAAW8T,EAGX,QAAA,CAAA,CAAAxT,GAAAA,CAAC,OACC,SAAA,CAAWlB,CAAAA,CACT,gGACA,wCAAA,CACA,oCAAA,CACAY,CAAAA,GAAY,UAAA,EAAcA,CAAAA,GAAY,OAAA,CAClC,uFACA,wDACN,CAAA,CACF,EACAM,GAAAA,CAAC,KAAA,CAAA,CACC,UAAWlB,CAAAA,CACT,sHAAA,CACA0U,IAAS,MAAA,CACL,gFAAA,CACA,mFAEJ9T,CAAAA,GAAY,UAAA,EAAcA,IAAY,OAAA,CAClC,+FAAA,CACA,0HACJD,CACF,CAAA,CACC,GAAGK,CAAAA,CAEJ,QAAA,CAAAE,GAAAA,CAAC,OACC,cAAA,CAAa,SAAA,CACb,UAAU,+MAAA,CAET,QAAA,CAAAkB,EACH,CAAA,CACF,CAAA,CAAA,CACF,CAEJ,CACF,EACAwU,EAAAA,CAAQ,YAAc,SAAA,CAEtB,IAAME,GAAuB,EAAA,CAAA,UAAA,CAG3B,CAAC,CAAE,SAAA,CAAAnW,CAAAA,CAAW,OAAA,CAAAoW,CAAAA,CAAS,GAAG/V,CAAM,EAAGC,CAAAA,GAAQ,CAC3C,GAAM,CAAE,aAAA,CAAAwV,CAAc,CAAA,CAAIb,EAAAA,GAE1B,OACEtT,IAAAA,CAACwB,EAAA,CACC,GAAA,CAAK7C,EACL,cAAA,CAAa,SAAA,CACb,QAAQ,OAAA,CACR,IAAA,CAAK,MAAA,CACL,SAAA,CAAWjB,CAAAA,CAAG,SAAA,CAAWW,CAAS,CAAA,CAClC,OAAA,CAAUgD,GAAU,CAClBoT,CAAAA,GAAUpT,CAAK,CAAA,CACf8S,CAAAA,GACF,CAAA,CACC,GAAGzV,EAEJ,QAAA,CAAA,CAAAE,GAAAA,CAAC8V,UAAA,EAAU,CAAA,CACX9V,IAAC,MAAA,CAAA,CAAK,SAAA,CAAU,SAAA,CAAU,QAAA,CAAA,gBAAA,CAAc,CAAA,CAAA,CAC1C,CAEJ,CAAC,EACD4V,EAAAA,CAAe,YAAc,gBAAA,CAE7B,IAAMG,GAAoB,EAAA,CAAA,UAAA,CAGxB,CAAC,CAAE,SAAA,CAAAtW,CAAAA,CAAW,GAAGK,CAAM,CAAA,CAAGC,IAAQ,CAClC,GAAM,CAAE,aAAA,CAAAwV,CAAc,CAAA,CAAIb,EAAAA,EAAW,CAErC,OACE1U,IAAC,QAAA,CAAA,CACC,GAAA,CAAKD,EACL,cAAA,CAAa,MAAA,CACb,aAAW,gBAAA,CACX,QAAA,CAAU,GACV,OAAA,CAASwV,CAAAA,CACT,MAAM,gBAAA,CACN,SAAA,CAAWzW,EACT,iPAAA,CACA,4EAAA,CACA,yHACA,yJAAA,CACA,2DAAA,CACA,2DAAA,CACAW,CACF,CAAA,CACC,GAAGK,EACN,CAEJ,CAAC,EACDiW,EAAAA,CAAY,WAAA,CAAc,cAE1B,IAAMC,EAAAA,CAAqB,cAGzB,CAAC,CAAE,UAAAvW,CAAAA,CAAW,GAAGK,CAAM,CAAA,CAAGC,CAAAA,GAExBC,IAAC,MAAA,CAAA,CACC,GAAA,CAAKD,CAAAA,CACL,SAAA,CAAWjB,CAAAA,CACT,uDAAA,CACA,+QACAW,CACF,CAAA,CACC,GAAGK,CAAAA,CACN,CAEH,EACDkW,EAAAA,CAAa,WAAA,CAAc,eAE3B,IAAMC,EAAAA,CAAqB,cAGzB,CAAC,CAAE,UAAAxW,CAAAA,CAAW,GAAGK,CAAM,CAAA,CAAGC,CAAAA,GAExBC,GAAAA,CAAC,OAAA,CAAA,CACC,GAAA,CAAKD,CAAAA,CACL,eAAa,OAAA,CACb,SAAA,CAAWjB,EACT,yUAAA,CACAW,CACF,EACC,GAAGK,CAAAA,CACN,CAEH,EACDmW,EAAAA,CAAa,YAAc,cAAA,CAE3B,IAAMC,GAAsB,EAAA,CAAA,UAAA,CAG1B,CAAC,CAAE,SAAA,CAAAzW,CAAAA,CAAW,GAAGK,CAAM,CAAA,CAAGC,CAAAA,GAExBC,IAAC,KAAA,CAAA,CACC,GAAA,CAAKD,EACL,cAAA,CAAa,QAAA,CACb,UAAWjB,CAAAA,CAAG,yBAAA,CAA2BW,CAAS,CAAA,CACjD,GAAGK,EACN,CAEH,EACDoW,GAAc,WAAA,CAAc,eAAA,KAEtBC,EAAAA,CAAsB,EAAA,CAAA,UAAA,CAG1B,CAAC,CAAE,SAAA,CAAA1W,CAAAA,CAAW,GAAGK,CAAM,CAAA,CAAGC,IAExBC,GAAAA,CAAC,KAAA,CAAA,CACC,IAAKD,CAAAA,CACL,cAAA,CAAa,SACb,SAAA,CAAWjB,CAAAA,CAAG,0BAA2BW,CAAS,CAAA,CACjD,GAAGK,CAAAA,CACN,CAEH,EACDqW,EAAAA,CAAc,WAAA,CAAc,eAAA,CAE5B,IAAMC,EAAAA,CAAyB,EAAA,CAAA,UAAA,CAG7B,CAAC,CAAE,SAAA,CAAA3W,EAAW,GAAGK,CAAM,EAAGC,CAAAA,GAExBC,GAAAA,CAAC4S,GAAA,CACC,GAAA,CAAK7S,EACL,cAAA,CAAa,WAAA,CACb,UAAWjB,CAAAA,CAAG,+BAAA,CAAiCW,CAAS,CAAA,CACvD,GAAGK,CAAAA,CACN,CAEH,EACDsW,EAAAA,CAAiB,YAAc,kBAAA,CAE/B,IAAMC,GAAuB,EAAA,CAAA,UAAA,CAG3B,CAAC,CAAE,SAAA,CAAA5W,CAAAA,CAAW,GAAGK,CAAM,CAAA,CAAGC,IAExBC,GAAAA,CAAC,KAAA,CAAA,CACC,IAAKD,CAAAA,CACL,cAAA,CAAa,UACb,SAAA,CAAWjB,CAAAA,CACT,gGAAA,CACAW,CACF,CAAA,CACC,GAAGK,EACN,CAEH,EACDuW,GAAe,WAAA,CAAc,gBAAA,KAEvBC,EAAAA,CAAqB,EAAA,CAAA,UAAA,CAGzB,CAAC,CAAE,SAAA,CAAA7W,EAAW,GAAGK,CAAM,EAAGC,CAAAA,GAExBC,GAAAA,CAAC,OACC,GAAA,CAAKD,CAAAA,CACL,cAAA,CAAa,OAAA,CACb,SAAA,CAAWjB,CAAAA,CAAG,4CAA6CW,CAAS,CAAA,CACnE,GAAGK,CAAAA,CACN,CAEH,EACDwW,EAAAA,CAAa,WAAA,CAAc,eAE3B,IAAMC,EAAAA,CAA0B,cAG9B,CAAC,CAAE,UAAA9W,CAAAA,CAAW,OAAA,CAAAqD,EAAU,KAAA,CAAO,GAAGhD,CAAM,CAAA,CAAGC,CAAAA,GAIzCC,GAAAA,CAHW8C,EAAUC,IAAAA,CAAO,KAAA,CAG3B,CACC,GAAA,CAAKhD,CAAAA,CACL,eAAa,aAAA,CACb,SAAA,CAAWjB,EACT,oOAAA,CACA,6EAAA,CACAW,CACF,CAAA,CACC,GAAGK,EACN,CAEH,EACDyW,GAAkB,WAAA,CAAc,mBAAA,CAEhC,IAAMC,EAAAA,CAA2B,EAAA,CAAA,UAAA,CAG/B,CAAC,CAAE,SAAA,CAAA/W,CAAAA,CAAW,QAAAqD,CAAAA,CAAU,KAAA,CAAO,GAAGhD,CAAM,CAAA,CAAGC,IAIzCC,GAAAA,CAHW8C,CAAAA,CAAUC,KAAO,QAAA,CAG3B,CACC,IAAKhD,CAAAA,CACL,cAAA,CAAa,eACb,SAAA,CAAWjB,CAAAA,CACT,0RAAA,CAEA,+CAAA,CACA,sCAAA,CACAW,CACF,EACC,GAAGK,CAAAA,CACN,CAEH,EACD0W,EAAAA,CAAmB,YAAc,oBAAA,CAEjC,IAAMC,EAAAA,CAA4B,EAAA,CAAA,UAAA,CAGhC,CAAC,CAAE,UAAAhX,CAAAA,CAAW,GAAGK,CAAM,CAAA,CAAGC,CAAAA,GAExBC,IAAC,KAAA,CAAA,CACC,GAAA,CAAKD,CAAAA,CACL,cAAA,CAAa,eAAA,CACb,SAAA,CAAWjB,EAAG,gBAAA,CAAkBW,CAAS,EACxC,GAAGK,CAAAA,CACN,CAEH,EACD2W,EAAAA,CAAoB,YAAc,qBAAA,CAElC,IAAMC,GAAoB,EAAA,CAAA,UAAA,CAGxB,CAAC,CAAE,SAAA,CAAAjX,CAAAA,CAAW,GAAGK,CAAM,CAAA,CAAGC,CAAAA,GAExBC,GAAAA,CAAC,IAAA,CAAA,CACC,GAAA,CAAKD,EACL,cAAA,CAAa,MAAA,CACb,UAAWjB,CAAAA,CAAG,oCAAA,CAAsCW,CAAS,CAAA,CAC5D,GAAGK,EACN,CAEH,EACD4W,GAAY,WAAA,CAAc,aAAA,KAEpBC,EAAAA,CAAwB,EAAA,CAAA,UAAA,CAG5B,CAAC,CAAE,SAAA,CAAAlX,CAAAA,CAAW,GAAGK,CAAM,CAAA,CAAGC,IAExBC,GAAAA,CAAC,IAAA,CAAA,CACC,IAAKD,CAAAA,CACL,cAAA,CAAa,YACb,SAAA,CAAWjB,CAAAA,CAAG,2BAA4BW,CAAS,CAAA,CAClD,GAAGK,CAAAA,CACN,CAEH,EACD6W,EAAAA,CAAgB,WAAA,CAAc,kBAE9B,IAAMC,EAAAA,CAA4BtX,GAAAA,CAChC,8zBAAA,CACA,CACE,QAAA,CAAU,CACR,OAAA,CAAS,CACP,QAAS,8DAAA,CACT,OAAA,CACE,8KACJ,CAAA,CACA,IAAA,CAAM,CACJ,OAAA,CAAS,aAAA,CACT,GAAI,aAAA,CACJ,EAAA,CAAI,qDACN,CACF,CAAA,CACA,gBAAiB,CACf,OAAA,CAAS,SAAA,CACT,IAAA,CAAM,SACR,CACF,CACF,CAAA,CAEMuX,EAAAA,CAA0B,cAQ9B,CACE,CACE,QAAA/T,CAAAA,CAAU,KAAA,CACV,SAAAgU,CAAAA,CAAW,KAAA,CACX,QAAApX,CAAAA,CAAU,SAAA,CACV,KAAAC,CAAAA,CAAO,SAAA,CACP,QAAAoX,CAAAA,CACA,SAAA,CAAAtX,CAAAA,CACA,GAAGK,CACL,CAAA,CACAC,IACG,CACH,IAAMiX,EAAOlU,CAAAA,CAAUC,IAAAA,CAAO,SACxB,CAAE,QAAA,CAAAyP,EAAU,KAAA,CAAA3N,CAAM,EAAI6P,EAAAA,EAAW,CAEjCuC,EACJjX,GAAAA,CAACgX,CAAAA,CAAA,CACC,GAAA,CAAKjX,CAAAA,CACL,cAAA,CAAa,aAAA,CACb,WAAA,CAAWJ,CAAAA,CACX,cAAamX,CAAAA,CACb,SAAA,CAAWhY,EAAG8X,EAAAA,CAA0B,CAAE,QAAAlX,CAAAA,CAAS,IAAA,CAAAC,CAAK,CAAC,CAAA,CAAGF,CAAS,CAAA,CACpE,GAAGK,EACN,CAAA,CAGF,OAAKiX,GAID,OAAOA,CAAAA,EAAY,QAAA,GACrBA,CAAAA,CAAU,CACR,QAAA,CAAUA,CACZ,CAAA,CAAA,CAIA3V,IAAAA,CAAC0S,GAAA,CACC,QAAA,CAAA,CAAA9T,IAAC+T,EAAAA,CAAA,CAAe,QAAO,IAAA,CAAE,QAAA,CAAAkD,EAAO,CAAA,CAChCjX,GAAAA,CAACgU,GAAA,CACC,IAAA,CAAK,QACL,KAAA,CAAM,QAAA,CACN,MAAA,CAAQnP,CAAAA,GAAU,WAAA,EAAe2N,CAAAA,CAChC,GAAGuE,CAAAA,CACN,CAAA,CAAA,CACF,GAlBOE,CAoBX,CACF,EACAJ,EAAAA,CAAkB,WAAA,CAAc,oBAEhC,IAAMK,EAAAA,CAA0B,cAM9B,CAAC,CAAE,UAAAzX,CAAAA,CAAW,OAAA,CAAAqD,EAAU,KAAA,CAAO,WAAA,CAAAqU,CAAAA,CAAc,KAAA,CAAO,GAAGrX,CAAM,EAAGC,CAAAA,GAI9DC,GAAAA,CAHW8C,EAAUC,IAAAA,CAAO,QAAA,CAG3B,CACC,GAAA,CAAKhD,CAAAA,CACL,eAAa,aAAA,CACb,SAAA,CAAWjB,EACT,gVAAA,CAEA,+CAAA,CACA,wCACA,8CAAA,CACA,yCAAA,CACA,uCACAqY,CAAAA,EACE,0LAAA,CACF1X,CACF,CAAA,CACC,GAAGK,CAAAA,CACN,CAEH,EACDoX,EAAAA,CAAkB,YAAc,mBAAA,CAEhC,IAAME,GAAyB,EAAA,CAAA,UAAA,CAG7B,CAAC,CAAE,SAAA,CAAA3X,CAAAA,CAAW,GAAGK,CAAM,CAAA,CAAGC,IAExBC,GAAAA,CAAC,KAAA,CAAA,CACC,IAAKD,CAAAA,CACL,cAAA,CAAa,YAAA,CACb,SAAA,CAAWjB,CAAAA,CACT,wKAAA,CACA,2HACA,uCAAA,CACA,8CAAA,CACA,0CACA,sCAAA,CACAW,CACF,EACC,GAAGK,CAAAA,CACN,CAEH,EACDsX,EAAAA,CAAiB,YAAc,kBAAA,CAE/B,IAAMC,GAA4B,EAAA,CAAA,UAAA,CAKhC,CAAC,CAAE,SAAA,CAAA5X,CAAAA,CAAW,QAAA,CAAA6X,CAAAA,CAAW,KAAA,CAAO,GAAGxX,CAAM,CAAA,CAAGC,CAAAA,GAAQ,CAEpD,IAAMwX,CAAAA,CAAc,WAAQ,IACnB,CAAA,EAAG,KAAK,KAAA,CAAM,IAAA,CAAK,QAAO,CAAI,EAAE,EAAI,EAAE,CAAA,CAAA,CAAA,CAC5C,EAAE,CAAA,CAEL,OACEnW,IAAAA,CAAC,KAAA,CAAA,CACC,GAAA,CAAKrB,EACL,cAAA,CAAa,eAAA,CACb,UAAWjB,CAAAA,CAAG,6CAAA,CAA+CW,CAAS,CAAA,CACrE,GAAGK,EAEH,QAAA,CAAA,CAAAwX,CAAAA,EACCtX,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,+CAA+C,CAAA,CAEhEA,GAAAA,CAAC,OACC,SAAA,CAAU,sEAAA,CACV,KAAA,CACE,CACE,kBAAA,CAAoBuX,CACtB,EAEJ,CAAA,CAAA,CACF,CAEJ,CAAC,EACDF,EAAAA,CAAoB,YAAc,qBAAA,CAElC,IAAMG,GAAuB,EAAA,CAAA,UAAA,CAG3B,CAAC,CAAE,SAAA,CAAA/X,CAAAA,CAAW,GAAGK,CAAM,CAAA,CAAGC,IAExBC,GAAAA,CAAC,IAAA,CAAA,CACC,GAAA,CAAKD,CAAAA,CACL,cAAA,CAAa,UAAA,CACb,UAAWjB,CAAAA,CACT,iEAAA,CACA,uCACAW,CACF,CAAA,CACC,GAAGK,CAAAA,CACN,CAEH,EACD0X,EAAAA,CAAe,WAAA,CAAc,gBAAA,KAEvBC,EAAAA,CAA2B,EAAA,CAAA,UAAA,CAG/B,CAAC,CAAE,GAAG3X,CAAM,CAAA,CAAGC,CAAAA,GACRC,GAAAA,CAAC,IAAA,CAAA,CAAG,GAAA,CAAKD,CAAAA,CAAM,GAAGD,CAAAA,CAAO,CACjC,EACD2X,EAAAA,CAAmB,WAAA,CAAc,qBAEjC,IAAMC,EAAAA,CAA6B,cAOjC,CAAC,CAAE,QAAA5U,CAAAA,CAAU,KAAA,CAAO,KAAAnD,CAAAA,CAAO,IAAA,CAAM,SAAAmX,CAAAA,CAAU,SAAA,CAAArX,CAAAA,CAAW,GAAGK,CAAM,CAAA,CAAGC,IAIhEC,GAAAA,CAHW8C,CAAAA,CAAUC,KAAO,GAAA,CAG3B,CACC,IAAKhD,CAAAA,CACL,cAAA,CAAa,kBACb,WAAA,CAAWJ,CAAAA,CACX,cAAamX,CAAAA,CACb,SAAA,CAAWhY,EACT,mfAAA,CACA,wFAAA,CACAa,IAAS,IAAA,EAAQ,SAAA,CACjBA,CAAAA,GAAS,IAAA,EAAQ,SAAA,CACjB,sCAAA,CACAF,CACF,CAAA,CACC,GAAGK,EACN,CAEH,EACD4X,GAAqB,WAAA,CAAc,sBAAA,CC9sBnC,IAAMC,EAAAA,CAAkB,CACtB,CACE,KAAA,CAAO,WAAA,CACP,GAAA,CAAK,YAAA,CACL,IAAA,CAAMC,eACR,EACA,CACE,KAAA,CAAO,mBACP,IAAA,CAAMC,IAAAA,CACN,MAAO,CACL,CACE,MAAO,QAAA,CACP,GAAA,CAAK,UACL,IAAA,CAAMA,IAAAA,CACN,MAAO,KACT,CAAA,CACA,CACE,KAAA,CAAO,OAAA,CACP,GAAA,CAAK,QAAA,CACL,IAAA,CAAMC,SACR,CACF,CACF,CAAA,CACA,CACE,KAAA,CAAO,cAAA,CACP,KAAMC,cAAAA,CACN,KAAA,CAAO,CACL,CACE,KAAA,CAAO,sBACP,GAAA,CAAK,uBAAA,CACL,KAAM1O,QACR,CAAA,CACA,CACE,KAAA,CAAO,oBAAA,CACP,GAAA,CAAK,sBAAA,CACL,IAAA,CAAM2O,SACR,EACA,CACE,KAAA,CAAO,kBACP,GAAA,CAAK,mBAAA,CACL,KAAMC,OACR,CACF,CACF,CAAA,CACA,CACE,MAAO,WAAA,CACP,GAAA,CAAK,aACL,IAAA,CAAM5O,QACR,EACA,CACE,KAAA,CAAO,aAAA,CACP,GAAA,CAAK,cAAA,CACL,IAAA,CAAM6O,KACR,CAAA,CACA,CACE,MAAO,YAAA,CACP,GAAA,CAAK,YACL,IAAA,CAAMC,SACR,EACA,CACE,KAAA,CAAO,iBACP,GAAA,CAAK,eAAA,CACL,KAAML,SACR,CAAA,CACA,CACE,KAAA,CAAO,UAAA,CACP,GAAA,CAAK,WAAA,CACL,IAAA,CAAMM,UACR,EACA,CACE,KAAA,CAAO,aACP,IAAA,CAAMC,MAAAA,CACN,MAAO,CACL,CACE,MAAO,MAAA,CACP,GAAA,CAAK,mBACL,IAAA,CAAMA,MACR,EACA,CACE,KAAA,CAAO,OACP,GAAA,CAAK,kBAAA,CACL,IAAA,CAAMhP,QACR,CAAA,CACA,CACE,MAAO,iBAAA,CACP,GAAA,CAAK,uBACL,IAAA,CAAMiP,UACR,CACF,CACF,CAAA,CACA,CACE,KAAA,CAAO,OAAA,CACP,KAAMvW,SAAAA,CACN,KAAA,CAAO,CACL,CACE,KAAA,CAAO,cACP,GAAA,CAAK,eAAA,CACL,IAAA,CAAMyH,MACR,CAAA,CACA,CACE,MAAO,kBAAA,CACP,GAAA,CAAK,oBACL,IAAA,CAAM+O,WACR,CACF,CACF,CAAA,CACA,CACE,KAAA,CAAO,KAAA,CACP,KAAMC,MAAAA,CACN,KAAA,CAAO,CACL,CACE,KAAA,CAAO,aACP,GAAA,CAAK,iBAAA,CACL,IAAA,CAAMnP,QACR,CAAA,CACA,CACE,MAAO,YAAA,CACP,GAAA,CAAK,kBACL,IAAA,CAAMoP,QACR,EACA,CACE,KAAA,CAAO,SACP,GAAA,CAAK,aAAA,CACL,KAAMC,MACR,CAAA,CACA,CACE,KAAA,CAAO,KAAA,CACP,IAAK,UAAA,CACL,IAAA,CAAM3W,SACR,CACF,CACF,CAAA,CACA,CACE,KAAA,CAAO,MAAA,CACP,KAAM4W,GAAAA,CACN,KAAA,CAAO,CACL,CACE,KAAA,CAAO,aACP,GAAA,CAAK,kBAAA,CACL,KAAMtP,QACR,CAAA,CACA,CACE,KAAA,CAAO,YAAA,CACP,IAAK,kBAAA,CACL,IAAA,CAAMoP,QACR,CACF,CACF,CAAA,CACA,CACE,KAAA,CAAO,gBAAA,CACP,KAAMG,QAAAA,CACN,KAAA,CAAO,CACL,CACE,KAAA,CAAO,aACP,GAAA,CAAK,4BAAA,CACL,KAAMC,GACR,CAAA,CACA,CACE,KAAA,CAAO,UAAA,CACP,IAAK,0BAAA,CACL,IAAA,CAAMjB,eACR,CAAA,CACA,CACE,KAAA,CAAO,WACP,GAAA,CAAK,0BAAA,CACL,KAAMvO,QACR,CACF,CACF,CAAA,CACA,CACE,MAAO,YAAA,CACP,GAAA,CAAK,cACL,IAAA,CAAMyP,SACR,EACA,CACE,KAAA,CAAO,WACP,IAAA,CAAMF,QAAAA,CACN,KAAA,CAAO,CACL,CACE,KAAA,CAAO,kBACP,GAAA,CAAK,iBAAA,CACL,KAAMV,KACR,CAAA,CACA,CACE,KAAA,CAAO,SAAA,CACP,IAAK,mBAAA,CACL,IAAA,CAAMa,GACR,CACF,CACF,CACF,CAAA,CAEO,SAASC,IAAa,CAC3B,GAAM,CAAE,KAAA,CAAAnU,CAAM,CAAA,CAAI6P,IAAW,CAEvBuE,CAAAA,CADWC,aAAY,CACA,QAAA,CAGvB,CAACC,CAAAA,CAAWC,CAAY,CAAA,CAAIpT,QAAAA,CAAmB,EAAE,EAEjD8Q,CAAAA,CAAYuC,CAAAA,EAAiBJ,IAAgBI,CAAAA,CAE7CC,CAAAA,CAAcvY,GAAkB,CACpCqY,CAAAA,CAAa3H,CAAAA,EACXA,CAAAA,CAAK,QAAA,CAAS1Q,CAAK,EACf0Q,CAAAA,CAAK,MAAA,CAAOlF,GAAQA,CAAAA,GAASxL,CAAK,EAClC,CAAC,GAAG0Q,EAAM1Q,CAAK,CACrB,EACF,CAAA,CAEA,OACEK,KAACsU,EAAAA,CAAA,CAAQ,YAAY,MAAA,CACnB,QAAA,CAAA,CAAA1V,GAAAA,CAACkW,EAAAA,CAAA,CAAc,SAAA,CAAU,iCACvB,QAAA,CAAA9U,IAAAA,CAAC,OAAI,SAAA,CAAU,mDAAA,CACZ,UAAAyD,CAAAA,GAAU,WAAA,CACT7E,IAAC,KAAA,CAAA,CAAI,GAAA,CAAKuZ,GAAW,GAAA,CAAI,OAAA,CAAQ,UAAU,KAAA,CAAM,CAAA,CAEjDvZ,IAAC,KAAA,CAAA,CAAI,GAAA,CAAKuZ,EAAAA,CAAW,GAAA,CAAI,OAAA,CAAQ,SAAA,CAAU,MAAM,CAAA,CAEnDvZ,GAAAA,CAAC4V,GAAA,EAAe,CAAA,CAAA,CAClB,EACF,CAAA,CAEA5V,GAAAA,CAACqW,GAAA,CACC,QAAA,CAAArW,IAAC0W,EAAAA,CAAA,CACE,SAAAiB,EAAAA,CAAgB,GAAA,CAAKpL,GAAS,CAE7B,GAAIA,CAAAA,CAAK,KAAA,CAAO,CACd,IAAMiN,EAASL,CAAAA,CAAU,QAAA,CAAS5M,EAAK,KAAK,CAAA,CAE5C,OACEvM,GAAAA,CAACyZ,WAAAA,CAAA,CAEC,IAAA,CAAMD,CAAAA,CACN,aAAc,IAAMF,CAAAA,CAAW/M,EAAK,KAAK,CAAA,CAEzC,SAAAnL,IAAAA,CAACuV,EAAAA,CAAA,CACC,QAAA,CAAA,CAAA3W,GAAAA,CAAC0Z,kBAAAA,CAAA,CAAmB,OAAA,CAAO,IAAA,CACzB,SAAAtY,IAAAA,CAACyV,EAAAA,CAAA,CACC,OAAA,CAAShS,CAAAA,GAAU,YAAc0H,CAAAA,CAAK,KAAA,CAAQ,OAE9C,QAAA,CAAA,CAAAvM,GAAAA,CAACuM,EAAK,IAAA,CAAL,CAAU,UAAU,SAAA,CAAU,CAAA,CAC/BvM,GAAAA,CAAC,MAAA,CAAA,CAAM,QAAA,CAAAuM,CAAAA,CAAK,MAAM,CAAA,CAClBvM,GAAAA,CAACsM,aAAA,CACC,SAAA,CAAW,wCAAwCkN,CAAAA,CAAS,WAAA,CAAc,EAAE,CAAA,CAAA,CAC9E,CAAA,CAAA,CACF,EACF,CAAA,CACAxZ,GAAAA,CAAC2Z,mBAAA,CACC,QAAA,CAAA3Z,IAACwX,EAAAA,CAAA,CACE,QAAA,CAAAjL,CAAAA,CAAK,KAAA,CAAM,GAAA,CAAKqN,GACf5Z,GAAAA,CAACyX,EAAAA,CAAA,CACC,QAAA,CAAAzX,GAAAA,CAAC0X,GAAA,CACC,OAAA,CAAO,KACP,QAAA,CAAUZ,CAAAA,CAAS8C,EAAQ,GAAG,CAAA,CAE9B,SAAAxY,IAAAA,CAACyY,OAAAA,CAAA,CAAQ,EAAA,CAAID,CAAAA,CAAQ,GAAA,CACnB,QAAA,CAAA,CAAA5Z,GAAAA,CAAC4Z,CAAAA,CAAQ,KAAR,CAAa,SAAA,CAAU,UAAU,CAAA,CAClC5Z,GAAAA,CAAC,QAAM,QAAA,CAAA4Z,CAAAA,CAAQ,MAAM,CAAA,CACpBA,CAAAA,CAAQ,OACP5Z,GAAAA,CAACoX,EAAAA,CAAA,CAAiB,SAAA,CAAU,SAAA,CACzB,SAAAwC,CAAAA,CAAQ,KAAA,CACX,CAAA,CAAA,CAEJ,CAAA,CACF,CAAA,CAAA,CAduBA,CAAAA,CAAQ,KAejC,CACD,CAAA,CACH,EACF,CAAA,CAAA,CACF,CAAA,CAAA,CAtCKrN,EAAK,KAuCZ,CAEJ,CAGA,OACEvM,GAAAA,CAAC2W,GAAA,CACC,QAAA,CAAA3W,IAAC6W,EAAAA,CAAA,CACC,QAAO,IAAA,CACP,QAAA,CAAUC,CAAAA,CAASvK,CAAAA,CAAK,GAAI,CAAA,CAC5B,QAAS1H,CAAAA,GAAU,WAAA,CAAc0H,EAAK,KAAA,CAAQ,MAAA,CAE9C,SAAAnL,IAAAA,CAACyY,OAAAA,CAAA,CAAQ,EAAA,CAAItN,CAAAA,CAAK,IAChB,QAAA,CAAA,CAAAvM,GAAAA,CAACuM,EAAK,IAAA,CAAL,CAAU,UAAU,SAAA,CAAU,CAAA,CAC/BvM,GAAAA,CAAC,MAAA,CAAA,CAAM,QAAA,CAAAuM,CAAAA,CAAK,MAAM,CAAA,CAAA,CACpB,CAAA,CACF,GAVoBA,CAAAA,CAAK,KAW3B,CAEJ,CAAC,CAAA,CACH,EACF,CAAA,CAAA,CACF,CAEJ,CC9TO,IAAMuN,EAAAA,CAAa,CAAC,CAAE,QAAA,CAAA5Y,CAAS,CAAA,GAElClB,GAAAA,CAAC,MAAA,CAAA,CAAK,UAAU,+BAAA,CACb,QAAA,CAAAkB,EACH,MCDS6Y,EAAAA,CAAe,CAAC,CAAE,cAAA,CAAAxJ,CAAAA,CAAiB,MAAO,YAAA,CAAAC,CAAAA,CAAc,OAAAC,CAAAA,CAAQ,QAAA,CAAAC,CAAS,CAAA,GAAyB,CAC7G,GAAM,CAACE,CAAAA,CAAcC,CAAe,CAAA,CAAI7K,QAAAA,CAASuK,CAAc,EACzD,CAAChJ,CAAAA,CAAWuJ,CAAY,CAAA,CAAI9K,QAAAA,CAAS,KAAK,CAAA,CAGhDqL,SAAAA,CAAU,IAAM,CACdR,CAAAA,CAAgBN,CAAc,EAChC,CAAA,CAAG,CAACA,CAAc,CAAC,EAEnB,IAAMe,CAAAA,CAAYd,CAAAA,GAAiB,MAAA,CAAYD,CAAAA,CAAiBK,CAAAA,CAE1DW,EAAmBC,WAAAA,CAAY,IAAM,CACrChB,CAAAA,CACFA,CAAAA,GAEAK,CAAAA,CAAgBY,CAAAA,EAAQ,CAACA,CAAI,EAEjC,EAAG,CAACjB,CAAY,CAAC,CAAA,CAEXkB,CAAAA,CAAaF,YAAY,SAAY,CACzCV,CAAAA,CAAa,IAAI,CAAA,CAEjB,GAAI,CACEL,CAAAA,EACF,MAAMA,GAAO,CAIXD,CAAAA,CACFA,GAAa,CAEbK,CAAAA,CAAgB,EAAK,EAEzB,CAAA,MAASxN,EAAO,CACd,OAAA,CAAQ,MAAM,aAAA,CAAeA,CAAK,EAEpC,CAAA,OAAE,CACAyN,CAAAA,CAAa,KAAK,EACpB,CACF,EAAG,CAACL,CAAAA,CAAQD,CAAY,CAAC,CAAA,CAEnBmB,EAAeH,WAAAA,CAAY,IAAM,CACjCd,CAAAA,EACFA,CAAAA,GAGEF,CAAAA,CACFA,CAAAA,GAEAK,CAAAA,CAAgB,KAAK,EAEzB,CAAA,CAAG,CAACH,CAAAA,CAAUF,CAAY,CAAC,CAAA,CAE3B,OAAO,CACL,SAAA,CAAAc,EACA,SAAA,CAAA/J,CAAAA,CACA,iBAAAgK,CAAAA,CACA,UAAA,CAAAG,EACA,YAAA,CAAAC,CACF,CACF,EC7CO,IAAMqI,EAAAA,CAAyBC,EAAA,CAAA,UAAA,CACpC,CAAC,CACC,KAAA,CAAAlZ,CAAAA,CACA,YAAAE,CAAAA,CACA,WAAA,CAAAiZ,EACA,WAAA,CAAAC,CAAAA,CACA,UAAA7I,CAAAA,CACA,YAAA,CAAAd,EACA,WAAA,CAAA4J,CAAAA,CAAc,MACd,MAAA,CAAA3J,CAAAA,CACA,SAAAC,CAAAA,CACA,SAAA,CAAAjR,CAAAA,CACA,OAAA,CAAAC,CAAAA,CAAU,QAAA,CACV,YAAA2a,CAAAA,CAAc,IAAA,CACd,QAAAjJ,CAAAA,CAAU,KAAA,CACV,aAAA/K,CAAAA,CAAe,KAAA,CACf,GAAGvG,CACL,CAAA,CAAGC,IAAQ,CACT,GAAM,CAAE,SAAA,CAAWua,CAAAA,CAAkB,iBAAA/I,CAAAA,CAAkB,YAAA,CAAAI,CAAa,CAAA,CAAIoI,EAAAA,CAAa,CACnF,eAAgBzI,CAAAA,EAAa,KAAA,CAC7B,aAAAd,CACF,CAAC,EAgBD,OACExQ,GAAAA,CAACa,GAAA,CACC,GAAA,CAAKd,EACL,KAAA,CAAOgB,CAAAA,CACP,YAAaE,CAAAA,CACb,OAAA,CAASvB,EACT,SAAA,CAAWD,CAAAA,CACX,aAAA,CACG2a,CAAAA,CA0BG,MAAA,CAzBFpa,GAAAA,CAAC,OAAI,SAAA,CAAU,yBAAA,CACZ,SAAAsa,CAAAA,CACClZ,IAAAA,CAAAyK,SAAA,CACE,QAAA,CAAA,CAAA7L,IAAC4C,CAAAA,CAAA,CAAO,QAAQ,SAAA,CAAU,IAAA,CAAK,KAAK,OAAA,CApBvB,IAAM,CAC3B8N,CAAAA,CACFA,CAAAA,EAAS,CAETiB,CAAAA,GAEJ,CAAA,CAc+E,kBAEjE,CAAA,CACA3R,GAAAA,CAAC4C,EAAA,CACC,IAAA,CAAK,KACL,OAAA,CA/BS,SAAY,CAC/B6N,CAAAA,EACF,MAAMA,IAEV,CAAA,CA4BgB,SAAU,CAAC4J,CAAAA,EAAehU,EAEzB,QAAA,CAAAA,CAAAA,CAAe,WAAA,CAAc,MAAA,CAChC,CAAA,CAAA,CACF,CAAA,CAEArG,IAAC4C,CAAAA,CAAA,CACC,QAAQ,OAAA,CACR,IAAA,CAAK,OACL,OAAA,CAAS2O,CAAAA,CACT,UAAU,wDAAA,CAEV,QAAA,CAAAvR,IAACsC,IAAAA,CAAA,CAAK,UAAU,SAAA,CAAU,CAAA,CAC5B,EAEJ,CAAA,CAGH,GAAGxC,CAAAA,CAEH,QAAA,CAAAwa,CAAAA,CAAmBJ,CAAAA,CAAcC,EACpC,CAEJ,CACF,EAEAH,EAAAA,CAAiB,WAAA,CAAc,mBCvGYlI,CAAAA,CAAE,MAAA,CAAO,CAClD,IAAA,CAAMA,CAAAA,CAAE,QAAO,CAAE,GAAA,CAAI,CAAA,CAAG,kBAAkB,CAAA,CAC1C,IAAA,CAAMA,EAAE,IAAA,CAAK,CAAC,WAAY,YAAY,CAAU,EAChD,MAAA,CAAQA,CAAAA,CAAE,QAAO,CAAE,GAAA,CAAI,EAAG,oBAAoB,CAAA,CAC9C,YAAaA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAC1B,CAAC,CAAA,KAEYyI,EAAAA,CAAgBzI,CAAAA,CAAE,OAAO,CACpC,KAAA,CAAOA,EAAE,MAAA,EAAO,CAAE,UAAS,CAC3B,KAAA,CAAOA,EAAE,MAAA,EAAO,CAAE,UAAS,CAC3B,IAAA,CAAMA,EAAE,MAAA,EAAO,CAAE,UAAS,CAC1B,KAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,GAClB,UAAA,CAAYA,CAAAA,CAAE,QAAO,CAAE,QAAA,GACvB,WAAA,CAAaA,CAAAA,CAAE,QAAO,CAAE,GAAA,CAAI,EAAG,0BAA0B,CAAA,CACzD,KAAMA,CAAAA,CAAE,MAAA,GAAS,QAAA,EACnB,CAAC,CAAA,CAEY0I,EAAAA,CAA2B1I,CAAAA,CAAE,OAAO,CAC/C,KAAA,CAAOA,EAAE,MAAA,EAAO,CAAE,MAAM,sBAAsB,CAAA,CAAE,UAAS,CAAE,EAAA,CAAGA,EAAE,OAAA,CAAQ,EAAE,CAAC,CAAA,CAC3E,KAAA,CAAOA,EAAE,MAAA,EAAO,CAAE,QAAA,EAAS,CAC3B,WAAA,CAAaA,CAAAA,CAAE,QAAO,CAAE,QAAA,GACxB,QAAA,CAAUA,CAAAA,CAAE,QAAO,CAAE,QAAA,GACrB,MAAA,CAAQA,CAAAA,CAAE,QAAO,CAAE,QAAA,GACnB,OAAA,CAASA,CAAAA,CAAE,QAAO,CAAE,QAAA,EAAS,CAC7B,OAAA,CAASyI,EAAAA,CAAc,QAAA,EACzB,CAAC,CAAA,CAEwCzI,CAAAA,CAAE,MAAA,CAAO,CAChD,SAAA,CAAWA,CAAAA,CAAE,QAAO,CAAE,GAAA,CAAI,EAAG,wBAAwB,CAAA,CACrD,QAASA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAC7B,YAAA,CAAcA,CAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAA,CAAG,2BAA2B,EAC3D,KAAA,CAAOA,CAAAA,CAAE,QAAO,CAAE,GAAA,CAAI,CAAA,CAAG,oBAAoB,CAAA,CAC7C,aAAA,CAAeA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAA,CAAG,4BAA4B,EAC7D,aAAA,CAAeA,CAAAA,CAAE,MAAA,EAAO,CAAE,KAAA,CAAM,sBAAsB,EACtD,OAAA,CAASA,CAAAA,CAAE,QAAO,CAAE,GAAA,CAAI,oBAAoB,CAAA,CAAE,QAAA,GAAW,EAAA,CAAGA,CAAAA,CAAE,QAAQ,EAAE,CAAC,CAC3E,CAAC,CAAA,CAGwCA,CAAAA,CAAE,MAAA,CAAO,CAChD,EAAA,CAAIA,CAAAA,CAAE,MAAA,GACN,SAAA,CAAWA,CAAAA,CAAE,QAAO,CACpB,SAAA,CAAWA,EAAE,MAAA,EAAO,CACpB,UAAWA,CAAAA,CAAE,MAAA,GACb,SAAA,CAAWA,CAAAA,CAAE,QAAO,CACpB,YAAA,CAAcA,EAAE,MAAA,EAAO,CACvB,cAAA,CAAgBA,CAAAA,CAAE,MAAA,EACpB,CAAC,CAAA,CAEuCA,EAAE,MAAA,CAAO,CAC/C,OAAQA,CAAAA,CAAE,IAAA,CAAK,CAAC,QAAA,CAAU,UAAA,CAAY,UAAW,WAAW,CAAC,EAC7D,SAAA,CAAWA,CAAAA,CAAE,KAAK,CAAC,UAAA,CAAY,SAAA,CAAW,aAAa,CAAC,CAAA,CACxD,UAAWA,CAAAA,CAAE,MAAA,GACb,SAAA,CAAWA,CAAAA,CAAE,QAAO,CACpB,aAAA,CAAeA,EAAE,MAAA,EAAO,CAAE,UAC5B,CAAC,ECtDM,IAAM2I,EAAAA,CAAqB3I,CAAAA,CAAE,MAAA,CAAO,CACzC,iBAAkBA,CAAAA,CAAE,MAAA,GAAS,GAAA,CAAI,CAAA,CAAG,+BAA+B,CAAA,CACnE,SAAA,CAAWA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAA,CAAG,wBAAwB,EACrD,IAAA,CAAMA,CAAAA,CAAE,QAAO,CAAE,GAAA,CAAI,CAAA,CAAG,kBAAkB,CAAA,CAC1C,WAAA,CAAaA,EAAE,MAAA,EAAO,CAAE,UAC1B,CAAC,EAEY4I,EAAAA,CAAuB5I,CAAAA,CAAE,OAAO,CAC3C,oBAAA,CAAsBA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAA,CAAG,kDAAkD,EAAE,GAAA,CAAI,CAAA,CAAG,yCAAyC,CAAA,CAC5I,mBAAA,CAAqBA,CAAAA,CAAE,QAAO,CAAE,GAAA,CAAI,EAAG,mCAAmC,CAC5E,CAAC,CAAA,CAEY6I,EAAAA,CAAoB7I,EAAE,MAAA,CAAO,CACxC,UAAW2I,EAAAA,CACX,WAAA,CAAaC,EACf,CAAC,CAAA,CAEmC5I,CAAAA,CAAE,MAAA,CAAO,CAC3C,WAAA,CAAaA,CAAAA,CAAE,MAAA,GAAS,GAAA,CAAI,CAAA,CAAG,0BAA0B,CAAA,CACzD,aAAA,CAAeA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAA,CAAG,4BAA4B,EAC7D,aAAA,CAAeA,CAAAA,CAAE,QAAO,CAAE,GAAA,CAAI,EAAG,0CAA0C,CAAA,CAAE,GAAA,CAAI,CAAA,CAAG,iCAAiC,CAAA,CACrH,YAAaA,CAAAA,CAAE,MAAA,GAAS,GAAA,CAAI,CAAA,CAAG,0BAA0B,CAC3D,CAAC,ECrBM,IAAM8I,GAAsB9I,CAAAA,CAAE,MAAA,CAAO,CAC1C,gBAAA,CAAkBA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAA,CAAG,+BAA+B,CAAA,CACnE,SAAA,CAAWA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAA,CAAG,wBAAwB,EACrD,IAAA,CAAMA,CAAAA,CAAE,QAAO,CAAE,GAAA,CAAI,EAAG,kBAAkB,CAAA,CAC1C,YAAaA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAC1B,CAAC,EAEY+I,EAAAA,CAAoB/I,CAAAA,CAAE,OAAO,CACxC,IAAA,CAAMA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAA,CAAG,8BAA8B,EACtD,aAAA,CAAeA,CAAAA,CAAE,QAAO,CAAE,GAAA,CAAI,EAAG,4BAA4B,CAAA,CAC7D,OAAA,CAASyI,EACX,CAAC,CAAA,CAEYO,GAAqBhJ,CAAAA,CAAE,MAAA,CAAO,CACzC,aAAA,CAAeA,CAAAA,CAAE,QAAO,CAAE,GAAA,CAAI,EAAG,4BAA4B,CAAA,CAC7D,KAAMA,CAAAA,CAAE,MAAA,GAAS,GAAA,CAAI,CAAA,CAAG,qBAAqB,CAAA,CAC7C,MAAA,CAAQA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,EAAG,qBAAqB,CAAA,CAC/C,SAAUA,CAAAA,CAAE,MAAA,GAAS,GAAA,CAAI,CAAA,CAAG,uBAAuB,CAAA,CACnD,OAAA,CAASyI,EACX,CAAC,CAAA,CAEYQ,GAAuBjJ,CAAAA,CAAE,MAAA,CAAO,CAC3C,aAAA,CAAeA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS,CACnC,KAAMA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAC1B,OAAQA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAC5B,SAAUA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAC9B,QAASyI,EAAAA,CAAc,QAAA,EACzB,CAAC,CAAA,CAEiCzI,EAAE,MAAA,CAAO,CACzC,UAAW8I,EAAAA,CACX,WAAA,CAAaC,GACb,YAAA,CAAcC,EAAAA,CACd,eAAgBC,EAAAA,CAAqB,QAAA,EACvC,CAAC,EClCM,IAAMC,EAAAA,CAAwBlJ,CAAAA,CAAE,MAAA,CAAO,CAE5C,IAAA,CAAMA,EAAE,MAAA,EAAO,CAAE,UAAS,CAC1B,SAAA,CAAWA,EAAE,MAAA,EAAO,CAAE,QAAA,EAAS,CAC/B,cAAA,CAAgBA,CAAAA,CAAE,QAAO,CAAE,QAAA,GAC3B,QAAA,CAAUA,CAAAA,CAAE,QAAO,CAAE,QAAA,EAAS,CAC9B,GAAA,CAAKA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CACzB,mBAAoBA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CACxC,mBAAoBA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CACxC,cAAeA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CACnC,OAAA,CAASA,CAAAA,CAAE,MAAA,EAAO,CAAE,UAAS,CAC7B,YAAA,CAAcA,EAAE,MAAA,EAAO,CAAE,UAAS,CAClC,GAAA,CAAKA,EAAE,MAAA,EAAO,CAAE,UAAS,CACzB,KAAA,CAAOA,EAAE,MAAA,EAAO,CAAE,UAAS,CAC3B,WAAA,CAAaA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,GACxB,sBAAA,CAAwBA,CAAAA,CAAE,QAAO,CAAE,QAAA,GACnC,qBAAA,CAAuBA,CAAAA,CAAE,QAAO,CAAE,QAAA,GAClC,kBAAA,CAAoBA,CAAAA,CAAE,QAAO,CAAE,QAAA,GAC/B,kBAAA,CAAoBA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS,CACxC,QAASyI,EAAAA,CAAc,QAAA,GACvB,WAAA,CAAazI,CAAAA,CACV,OAAO,CACN,kBAAA,CAAoBA,EAAE,MAAA,EAAO,CAAE,UAAS,CACxC,sBAAA,CAAwBA,EAAE,MAAA,EAAO,CAAE,UAAS,CAC5C,qBAAA,CAAuBA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,GAClC,kBAAA,CAAoBA,CAAAA,CAAE,QAAO,CAAE,QAAA,EACjC,CAAC,CAAA,CACA,UACL,CAAC,EAEmCA,CAAAA,CAAE,OAAO,CAC3C,MAAA,CAAQA,EAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAA,CAAG,oBAAoB,CAAA,CAC9C,UAAWA,CAAAA,CAAE,MAAA,GAAS,GAAA,CAAI,CAAA,CAAG,wBAAwB,CAAA,CACrD,WAAA,CAAaA,EAAE,MAAA,EAAO,CACtB,YAAaA,CAAAA,CAAE,MAAA,GACf,YAAA,CAAcA,CAAAA,CAAE,QAAO,CACvB,cAAA,CAAgBA,CAAAA,CAAE,MAAA,EACpB,CAAC,EAEoCA,CAAAA,CAAE,OAAO,CAC5C,EAAA,CAAIA,EAAE,MAAA,EAAO,CACb,UAAWA,CAAAA,CAAE,MAAA,GACb,SAAA,CAAWA,CAAAA,CAAE,QAAO,CACpB,SAAA,CAAWA,EAAE,MAAA,EAAO,CACpB,SAAA,CAAWA,CAAAA,CAAE,MAAA,EAAO,CACpB,aAAcA,CAAAA,CAAE,MAAA,GAChB,cAAA,CAAgBA,CAAAA,CAAE,QACpB,CAAC,EC/BM,IAAMmJ,EAAAA,CAA0C,CACrD,IAAA,CAAM,kBAAA,CACN,UAAW,CAAA,CACX,cAAA,CAAgB,MAChB,QAAA,CAAU,YAAA,CACV,GAAA,CAAK,WAAA,CACL,kBAAA,CAAoB,aAAA,CACpB,mBAAoB,UAAA,CACpB,aAAA,CAAe,aACf,OAAA,CAAS,kBAAA,CACT,IAAK,MAAA,CACL,KAAA,CAAO,SACP,WAAA,CAAa,mBAAA,CACb,aAAc,YAAA,CACd,sBAAA,CAAwB,OACxB,qBAAA,CAAuB,OAAA,CACvB,mBAAoB,kBAAA,CACpB,kBAAA,CAAoB,mBAAA,CACpB,OAAA,CAAS,CACP,KAAA,CAAO,sBACP,KAAA,CAAO,WAAA,CACP,KAAM,UAAA,CACN,KAAA,CAAO,KACP,UAAA,CAAY,OAAA,CACZ,YAAa,IACf,CACF,ECRO,IAAMC,EAAAA,CAAsB,CAAC,CAClC,IAAA,CAAA5P,EACA,oBAAA,CAAA6P,CAAAA,CACA,aAAAC,CAAAA,CACA,SAAA,CAAA9J,EACA,YAAA,CAAAd,CAAAA,CACA,UAAA/Q,CAAAA,CACA,WAAA,CAAA2a,CAAAA,CACA,gBAAA,CAAAiB,CAAAA,CACA,gBAAA,CAAAC,EACA,kBAAA,CAAAC,CAAAA,CACA,2BAAAC,CAAAA,CACA,iBAAA,CAAAC,EACA,gBAAA,CAAAC,CAAAA,CACA,0BAAAC,CAAAA,CAA4B,EAC9B,CAAA,GAAgC,CAC9B,GAAM,CAACC,CAAAA,CAAkBC,CAAmB,CAAA,CAAI7V,QAAAA,CAAS,KAAK,CAAA,CAExDwJ,CAAAA,CAAOa,EAAAA,CAAsC,CACjD,MAAA,CAAQ2K,EAAAA,CACR,cAAe,CAAE,GAAGC,GAAwB,GAAG3P,CAAK,EACpD,cAAA,CAAgBgG,CAAAA,CAChB,aAAAd,CAAAA,CACA,MAAA,CAAQ4K,CACV,CAAC,CAAA,CAEKlB,EACJla,GAAAA,CAACuP,EAAAA,CAAA,CAAa,IAAA,CAAMC,CAAAA,CAClB,QAAA,CAAApO,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,YACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,OAAI,SAAA,CAAU,uCAAA,CACb,UAAApB,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,MAAA,CACL,MAAM,eAAA,CACN,WAAA,CAAY,sBACZ,QAAA,CAAQ,IAAA,CACV,CAAA,CAEA1P,GAAAA,CAAC0P,CAAAA,CAAA,CACC,KAAK,KAAA,CACL,KAAA,CAAM,WACN,WAAA,CAAY,8BAAA,CACd,EAEA1P,GAAAA,CAACmQ,EAAAA,CAAA,CACC,IAAA,CAAK,oBAAA,CACL,MAAM,sBAAA,CACN,WAAA,CAAY,uBACZ,OAAA,CAASwL,CAAAA,CACX,EAEA3b,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,UAAA,CACL,KAAA,CAAM,YACN,WAAA,CAAY,iBAAA,CACZ,SAAQ,IAAA,CACV,CAAA,CAEA1P,IAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,eAAA,CACL,KAAA,CAAM,gBAAA,CACN,KAAK,MAAA,CACL,WAAA,CAAY,uBACd,CAAA,CAEA1P,GAAAA,CAACmQ,GAAA,CACC,IAAA,CAAK,gBAAA,CACL,KAAA,CAAM,SAAA,CACN,WAAA,CAAY,iBACZ,OAAA,CAAS,CACP,CAAE,KAAA,CAAO,KAAA,CAAO,MAAO,KAAM,CAAA,CAC7B,CAAE,KAAA,CAAO,KAAA,CAAO,MAAO,KAAM,CAAA,CAC7B,CAAE,KAAA,CAAO,KAAA,CAAO,MAAO,KAAM,CAAA,CAC7B,CAAE,KAAA,CAAO,UAAA,CAAY,KAAA,CAAO,UAAW,CACzC,CAAA,CACF,EAEAnQ,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,oBAAA,CACL,MAAM,qBAAA,CACN,WAAA,CAAY,4BACd,CAAA,CAEA1P,GAAAA,CAAC0P,EAAA,CACC,IAAA,CAAK,UACL,KAAA,CAAM,SAAA,CACN,WAAA,CAAY,mBAAA,CACd,CAAA,CAAA,CACF,CAAA,CACA1P,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wCACb,QAAA,CAAAA,GAAAA,CAAC0P,EAAA,CACC,IAAA,CAAK,cACL,KAAA,CAAM,gBAAA,CACN,YAAY,sBAAA,CACd,CAAA,CACF,EAEAtO,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wBAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,gBACL,KAAA,CAAM,gBAAA,CACN,YAAY,sBAAA,CACd,CAAA,CAEA1P,IAAC0P,CAAAA,CAAA,CACC,KAAK,eAAA,CACL,KAAA,CAAM,6BACN,WAAA,CAAY,kCAAA,CACd,GACF,CAAA,CACAtO,IAAAA,CAAC,OAAI,SAAA,CAAU,uCAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC0P,CAAAA,CAAA,CACC,KAAK,cAAA,CACL,KAAA,CAAM,OACN,WAAA,CAAY,YAAA,CACd,EAEA1P,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,eAAA,CACL,MAAM,OAAA,CACN,WAAA,CAAY,cACd,CAAA,CAEA1P,GAAAA,CAAC0P,EAAA,CACC,IAAA,CAAK,oBAAA,CACL,KAAA,CAAM,aAAA,CACN,WAAA,CAAY,oBACd,CAAA,CAEA1P,GAAAA,CAAC0P,EAAA,CACC,IAAA,CAAK,sBACL,KAAA,CAAM,cAAA,CACN,YAAY,UAAA,CACd,CAAA,CAAA,CACF,EAEAtO,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,uCAAA,CACb,QAAA,CAAA,CAAApB,IAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,KAAA,CACL,KAAA,CAAM,KAAA,CACN,YAAY,cAAA,CACZ,IAAA,CAAK,yBACP,CAAA,CAEA1P,GAAAA,CAAC0P,EAAA,CACC,IAAA,CAAK,QACL,KAAA,CAAM,OAAA,CACN,YAAY,cAAA,CACZ,IAAA,CAAK,gDACP,CAAA,CAAA,CACF,CAAA,CAEAtO,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,uCAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,cAAA,CACL,MAAM,gBAAA,CACN,WAAA,CAAY,sBACd,CAAA,CAEA1P,GAAAA,CAAC0P,EAAA,CACC,IAAA,CAAK,YACL,KAAA,CAAM,YAAA,CACN,KAAK,QAAA,CACL,WAAA,CAAY,aACZ,QAAA,CAAQ,IAAA,CACV,CAAA,CAAA,CACF,CAAA,CAEA1P,GAAAA,CAAC,IAAA,CAAA,CAAG,UAAU,gDAAA,CAAiD,QAAA,CAAA,gBAAA,CAAc,EAC7EoB,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,uCAAA,CACb,QAAA,CAAA,CAAApB,IAAC0P,CAAAA,CAAA,CACC,KAAK,wBAAA,CACL,KAAA,CAAM,aACN,WAAA,CAAY,kBAAA,CACd,EAEA1P,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,uBAAA,CACL,KAAA,CAAM,YACN,WAAA,CAAY,iBAAA,CACd,EAEA1P,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,oBAAA,CACL,MAAM,OAAA,CACN,IAAA,CAAK,QACL,WAAA,CAAY,aAAA,CACd,EAEA1P,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,oBAAA,CACL,KAAA,CAAM,cAAA,CACN,WAAA,CAAY,oBAAA,CACd,GACF,CAAA,CAAA,CACF,CAAA,CACF,EAGIoM,CAAAA,CAAatM,CAAAA,CAAK,OAAM,CACxBuM,CAAAA,CAAQZ,GAAsB,oBAAA,CAAuB,SAAA,CAAY,OAEjEhB,CAAAA,CACJ/Y,IAAAA,CAAAyK,SAAA,CACE,QAAA,CAAA,CAAAzK,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,WAAA,CACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wBAAA,CACb,QAAA,CAAA,CAAApB,IAAC0J,CAAAA,CAAA,CAAU,MAAM,eAAA,CAAgB,KAAA,CAAOoS,GAAY,IAAA,EAAQ,GAAA,CAAK,OAAO,YAAA,CAAa,CAAA,CACrF9b,IAAC0J,CAAAA,CAAA,CAAU,MAAM,UAAA,CAAW,KAAA,CAAOoS,CAAAA,EAAY,GAAA,EAAO,GAAA,CAAK,MAAA,CAAO,aAAa,CAAA,CAAA,CACjF,CAAA,CACA1a,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yBACb,QAAA,CAAA,CAAApB,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,uBAAuB,KAAA,CAAOoS,CAAAA,EAAY,oBAAsB,GAAA,CAAK,MAAA,CAAO,aAAa,CAAA,CAC1G9b,GAAAA,CAAC0J,CAAAA,CAAA,CACC,KAAA,CAAM,WAAA,CACN,MACE8R,CAAAA,CACEpa,IAAAA,CAAC,OAAI,SAAA,CAAU,yBAAA,CACZ,UAAAqa,CAAAA,CACCzb,GAAAA,CAACgc,QAAA,CAAQ,SAAA,CAAU,6CAA6C,CAAA,CAEhEhc,GAAAA,CAAC,QAAM,QAAA,CAAAub,CAAAA,EAAsBG,EAAmBA,CAAAA,CAAmB,8DAAA,CAAa,CAAA,CAElF1b,GAAAA,CAAC,QAAA,CAAA,CACC,IAAA,CAAK,SACL,OAAA,CAASwb,CAAAA,CACT,UAAU,+DAAA,CACV,QAAA,CAAUC,EAET,QAAA,CAAAF,CAAAA,CACCvb,IAACgC,GAAAA,CAAA,CAAI,UAAU,SAAA,CAAU,CAAA,CAEzBhC,IAACic,MAAAA,CAAA,CAAO,UAAU,SAAA,CAAU,CAAA,CAEhC,CAAA,CAAA,CACF,CAAA,CAEAH,CAAAA,EAAY,QAAA,EAAY,IAG5B,MAAA,CAAO,YAAA,CACT,GACF,CAAA,CACA1a,IAAAA,CAAC,OAAI,SAAA,CAAU,wBAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,MAAM,gBAAA,CAAiB,KAAA,CAAOoS,GAAY,aAAA,EAAiB,GAAA,CAAK,OAAO,YAAA,CAAa,CAAA,CAC/F9b,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,UAAU,KAAA,CAAOoS,CAAAA,EAAY,gBAAkB,GAAA,CAAK,MAAA,CAAO,aAAa,CAAA,CAAA,CAC3F,CAAA,CACA1a,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yBACb,QAAA,CAAA,CAAApB,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,sBAAsB,KAAA,CAAOoS,CAAAA,EAAY,kBAAA,EAAsB,GAAA,CAAK,MAAA,CAAO,YAAA,CAAa,EACzG9b,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,SAAA,CAAU,MAAOoS,CAAAA,EAAY,OAAA,EAAW,IAAK,MAAA,CAAO,YAAA,CAAa,GACpF,CAAA,CAEA9b,GAAAA,CAAC,OAAI,SAAA,CAAU,wBAAA,CACb,SAAAA,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,gBAAA,CAAiB,KAAA,CAAOoS,GAAY,WAAA,EAAe,GAAA,CAAK,OAAO,YAAA,CAAa,CAAA,CAC/F,EAEA9b,GAAAA,CAAC0J,CAAAA,CAAA,CACC,KAAA,CAAM,SAAA,CACN,MACEoS,CAAAA,EAAY,OAAA,CAAA,CACP,IAAM,CACL,IAAMI,EAAQ,EAAC,CACXJ,CAAAA,CAAW,OAAA,CAAQ,KAAA,EAAOI,CAAAA,CAAM,KAAKJ,CAAAA,CAAW,OAAA,CAAQ,KAAK,CAAA,CAC7DA,CAAAA,CAAW,QAAQ,KAAA,EAAOI,CAAAA,CAAM,KAAKJ,CAAAA,CAAW,OAAA,CAAQ,KAAK,CAAA,CAEjE,IAAMK,EAAe,CACnBL,CAAAA,CAAW,QAAQ,IAAA,CACnBA,CAAAA,CAAW,OAAA,CAAQ,KAAA,CACnBA,CAAAA,CAAW,OAAA,CAAQ,UACrB,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA,CAE1B,OAAIK,GAAcD,CAAAA,CAAM,IAAA,CAAKC,CAAY,CAAA,CACrCL,CAAAA,CAAW,QAAQ,WAAA,EAAaI,CAAAA,CAAM,KAAKJ,CAAAA,CAAW,OAAA,CAAQ,WAAW,CAAA,CAEtEI,CAAAA,CAAM,MAAA,CAAS,EAAIA,CAAAA,CAAM,IAAA,CAAK,IAAI,CAAA,CAAI,GAC/C,IAAG,CACH,GAAA,CAEN,OAAO,YAAA,CACT,CAAA,CAEQ9a,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yBACrB,QAAA,CAAA,CAAApB,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,KAAA,CAAM,KAAA,CAAOoS,CAAAA,EAAY,GAAA,EAAO,IAAK,MAAA,CAAO,YAAA,CAAa,EAC1E9b,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,OAAA,CAAQ,MAAOoS,CAAAA,EAAY,KAAA,EAAS,IAAK,MAAA,CAAO,YAAA,CAAa,GAChF,CAAA,CAEA1a,IAAAA,CAAC,OAAI,SAAA,CAAU,wBAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,MAAM,gBAAA,CAAiB,KAAA,CAAOoS,GAAY,YAAA,EAAgB,GAAA,CAAK,OAAO,YAAA,CAAa,CAAA,CAC9F9b,IAAC0J,CAAAA,CAAA,CACC,MAAM,YAAA,CACN,KAAA,CACEoS,GAAY,SAAA,EAAaT,CAAAA,CACvBrb,IAAC,QAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,OAAA,CAAS,IAAMqb,CAAAA,CAAiBS,EAAW,SAAS,CAAA,CACpD,UAAU,0CAAA,CAET,QAAA,CAAAA,EAAW,SAAA,CACd,CAAA,CAEAA,GAAY,SAAA,EAAW,QAAA,IAAc,GAAA,CAGzC,MAAA,CAAO,aACT,CAAA,CAAA,CACF,CAAA,CAEA1a,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wBAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC0J,CAAAA,CAAA,CACC,KAAA,CAAM,QAAA,CACN,MAAOyR,CAAAA,CAAuBnb,GAAAA,CAACsB,EAAA,CAAM,OAAA,CAAS6Z,EAAqB,oBAAA,CAAuB,UAAA,CAAa,aAAe,QAAA,CAAAY,CAAAA,CAAM,EAAW,GAAA,CACvI,MAAA,CAAO,aACT,CAAA,CACA/b,GAAAA,CAAC0J,CAAAA,CAAA,CACC,KAAA,CAAM,UAAA,CACN,MACEyR,CAAAA,CACEnb,GAAAA,CAAC,UACC,OAAA,CAAS,IAAM6b,EAAoB,IAAI,CAAA,CACvC,UAAU,0CAAA,CAET,QAAA,CAAAV,EAAqB,QAAA,CACxB,CAAA,CACE,IAEN,MAAA,CAAO,YAAA,CACT,GACF,CAAA,CAEAnb,GAAAA,CAAC,IAAA,CAAA,CAAG,SAAA,CAAU,gDAAA,CAAiD,QAAA,CAAA,gBAAA,CAAc,EAC7EoB,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wBAAA,CACb,QAAA,CAAA,CAAApB,IAAC0J,CAAAA,CAAA,CAAU,MAAM,YAAA,CAAa,KAAA,CAAOoS,GAAY,sBAAA,EAA0B,GAAA,CAAK,OAAO,YAAA,CAAa,CAAA,CACpG9b,IAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,WAAA,CAAY,KAAA,CAAOoS,CAAAA,EAAY,uBAAyB,GAAA,CAAK,MAAA,CAAO,aAAa,CAAA,CAAA,CACpG,CAAA,CACA1a,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yBACb,QAAA,CAAA,CAAApB,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,QAAQ,KAAA,CAAOoS,CAAAA,EAAY,oBAAsB,GAAA,CAAK,MAAA,CAAO,YAAA,CAAa,CAAA,CAC3F9b,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,cAAA,CAAe,MAAOoS,CAAAA,EAAY,kBAAA,EAAsB,IAAK,MAAA,CAAO,YAAA,CAAa,GACpG,CAAA,CAAA,CACF,CAAA,CAEA9b,IAACyK,EAAAA,CAAA,CAAO,KAAMmR,CAAAA,CAAkB,YAAA,CAAcC,EAC5C,QAAA,CAAAza,IAAAA,CAAC2J,EAAAA,CAAA,CAAc,SAAA,CAAU,wCAAA,CACvB,UAAA3J,IAAAA,CAAC6J,EAAAA,CAAA,CACC,QAAA,CAAA,CAAA7J,IAAAA,CAAC+J,GAAA,CAAY,QAAA,CAAA,CAAA,oBAAA,CAAmBgQ,GAAsB,QAAA,EAAY,GAAA,CAAA,CAAI,EACtEnb,GAAAA,CAACoL,EAAAA,CAAA,CAAkB,QAAA,CAAA,2CAAA,CAEnB,CAAA,CAAA,CACF,EACApL,GAAAA,CAACqL,EAAAA,CAAA,CAAW,IAAA,CAAM8P,CAAAA,EAAsB,MAAA,EAAU,EAAC,CAAG,CAAA,CAAA,CACxD,EACF,CAAA,CAAA,CACF,CAAA,CAGF,OACEnb,GAAAA,CAACga,EAAAA,CAAA,CACC,KAAA,CAAM,kBAAA,CACN,OAAA,CAAQ,SACR,SAAA,CAAWva,CAAAA,CACX,UAAW+P,CAAAA,CAAK,SAAA,CAChB,aAAcA,CAAAA,CAAK,gBAAA,CACnB,MAAA,CAAQA,CAAAA,CAAK,UAAA,CACb,QAAA,CAAUA,EAAK,YAAA,CACf,WAAA,CAAa4K,EACb,WAAA,CAAaF,CAAAA,CACb,YAAaC,CAAAA,CACf,CAEJ,MC/XMiC,EAAAA,CAAwC,CAC5C,CACE,EAAA,CAAI,GAAA,CACJ,OAAQ,kBAAA,CACR,IAAA,CAAM,QACN,OAAA,CAAS,wBAAA,CACT,OAAQ,QAAA,CACR,SAAA,CAAW,qBACb,CAAA,CACA,CACE,GAAI,GAAA,CACJ,MAAA,CAAQ,iBAAA,CACR,IAAA,CAAM,OAAA,CACN,OAAA,CAAS,+BACT,SAAA,CAAW,qBACb,EACA,CACE,EAAA,CAAI,IACJ,MAAA,CAAQ,sBAAA,CACR,KAAM,QAAA,CACN,OAAA,CAAS,6BACT,MAAA,CAAQ,UAAA,CACR,UAAW,qBACb,CACF,EAEaC,EAAAA,CAAqB,CAAC,CAAE,SAAA,CAAA/K,CAAAA,CAAW,YAAA,CAAAd,EAAc,SAAA,CAAA/Q,CAAU,IAA+B,CACrG,IAAMgC,EAAWC,CAAAA,EACXA,CAAAA,CAAO,SAAS,SAAS,CAAA,CAAU1B,IAACoC,MAAAA,CAAA,CAAO,UAAU,SAAA,CAAU,CAAA,CAC/DV,EAAO,QAAA,CAAS,UAAU,CAAA,CAAU1B,GAAAA,CAACqC,QAAAA,CAAA,CAAS,UAAU,SAAA,CAAU,CAAA,CAClEX,EAAO,QAAA,CAAS,SAAS,GAAKA,CAAAA,CAAO,QAAA,CAAS,UAAU,CAAA,EAAKA,CAAAA,CAAO,SAAS,OAAO,CAAA,CAAU1B,IAACsC,IAAAA,CAAA,CAAK,UAAU,SAAA,CAAU,CAAA,CACxHZ,CAAAA,CAAO,QAAA,CAAS,WAAW,CAAA,EAAKA,EAAO,QAAA,CAAS,UAAU,EAAU1B,GAAAA,CAAC6B,WAAAA,CAAA,CAAY,SAAA,CAAU,SAAA,CAAU,EAClG7B,GAAAA,CAACoC,MAAAA,CAAA,CAAO,SAAA,CAAU,SAAA,CAAU,EAG/BG,CAAAA,CAAkBC,CAAAA,EAAoB,CAC1C,OAAQA,CAAAA,EACN,KAAK,QAAA,CACL,KAAK,WACH,OAAO,cAAA,CACT,KAAK,SAAA,CACH,OAAO,eACT,QACE,OAAO,uBACX,CACF,CAAA,CAEA,OACExC,GAAAA,CAACa,EAAAA,CAAA,CACC,KAAA,CAAM,UAAA,CACN,UAAWpB,CAAAA,CAEX,QAAA,CAAAO,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,WAAA,CACZ,SAAAoc,EAAAA,CAAqB,GAAA,CAAI,CAAC3Z,CAAAA,CAAOC,CAAAA,GAChCtB,KAAC,KAAA,CAAA,CAAmB,SAAA,CAAU,qBAE3B,QAAA,CAAA,CAAAsB,CAAAA,GAAU0Z,GAAqB,MAAA,CAAS,CAAA,EACvCpc,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,uDAAuD,CAAA,CAIxEA,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAWlB,CAAAA,CACd,iCAAA,CACAyD,EAAeE,CAAAA,CAAM,MAAM,CAC7B,CAAA,CACE,QAAA,CAAAzC,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,UACZ,QAAA,CAAAyB,CAAAA,CAAQgB,EAAM,MAAM,CAAA,CACvB,EACF,CAAA,CAGArB,IAAAA,CAAC,OAAI,SAAA,CAAU,aAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,GAAA,CAAA,CAAE,SAAA,CAAU,sCAAuC,QAAA,CAAAyC,CAAAA,CAAM,OAAO,CAAA,CACjErB,IAAAA,CAAC,KAAE,SAAA,CAAU,+BAAA,CAAgC,gBAAIqB,CAAAA,CAAM,IAAA,CAAA,CAAK,EAC3DA,CAAAA,CAAM,OAAA,EACLzC,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,gCAAiC,QAAA,CAAAyC,CAAAA,CAAM,OAAA,CAAQ,CAAA,CAE7DA,CAAAA,CAAM,MAAA,EACLrB,KAAC,GAAA,CAAA,CAAE,SAAA,CAAWtC,EAAG,qBAAA,CAAuByD,CAAAA,CAAeE,EAAM,MAAM,CAAC,EAAG,QAAA,CAAA,CAAA,UAAA,CAC5DA,CAAAA,CAAM,QACjB,CAAA,CAEFzC,GAAAA,CAAC,KAAE,SAAA,CAAU,yCAAA,CACV,SAAAyC,CAAAA,CAAM,SAAA,CACT,CAAA,CAAA,CACF,CAAA,CAAA,CAAA,CA/BQA,CAAAA,CAAM,EAgChB,CACD,CAAA,CACH,CAAA,CACF,CAEJ,MCpGM6Z,EAAAA,CAAe,CACnB,OAAQ,CACN,OAAA,CAAS,SACT,KAAA,CAAO,QAAA,CACP,KAAMza,WACR,CAAA,CACA,SAAU,CACR,OAAA,CAAS,WACT,KAAA,CAAO,UAAA,CACP,KAAMC,OACR,CAAA,CACA,OAAA,CAAS,CACP,OAAA,CAAS,SAAA,CACT,MAAO,SAAA,CACP,IAAA,CAAMya,KACR,CAAA,CACA,SAAA,CAAW,CACT,OAAA,CAAS,WAAA,CACT,MAAO,WAAA,CACP,IAAA,CAAMC,aACR,CAAA,CACA,OAAA,CAAS,CACP,OAAA,CAAS,WAAA,CACT,MAAO,SAAA,CACP,IAAA,CAAMC,GACR,CAAA,CACA,gBAAA,CAAkB,CAChB,QAAS,SAAA,CACT,KAAA,CAAO,mBACP,IAAA,CAAMF,KACR,EACA,MAAA,CAAQ,CACN,QAAS,QAAA,CACT,KAAA,CAAO,SACP,IAAA,CAAM1a,WACR,EACA,MAAA,CAAQ,CACN,QAAS,UAAA,CACT,KAAA,CAAO,QAAA,CACP,IAAA,CAAMC,OACR,CAAA,CACA,UAAW,CACT,OAAA,CAAS,YACT,KAAA,CAAO,WAAA,CACP,KAAMA,OACR,CAAA,CACA,OAAA,CAAS,CACP,OAAA,CAAS,UAAA,CACT,MAAO,SAAA,CACP,IAAA,CAAMA,OACR,CAAA,CACA,UAAA,CAAY,CACV,OAAA,CAAS,SAAA,CACT,KAAA,CAAO,YAAA,CACP,IAAA,CAAM0a,aACR,EACA,eAAA,CAAiB,CACf,QAAS,SAAA,CACT,KAAA,CAAO,kBACP,IAAA,CAAMD,KACR,CACF,CAAA,CAEaG,EAAAA,CAAc,CAAC,CAAE,MAAA,CAAAla,EAAQ,SAAA,CAAA/C,CAAAA,CAAW,sBAAAkd,CAAsB,CAAA,GAAwB,CAC7F,IAAMC,CAAAA,CAASN,EAAAA,CAAa9Z,CAAM,CAAA,CAGlC,GAAI,CAACoa,CAAAA,CACH,OACExb,KAACE,CAAAA,CAAA,CAAM,QAAQ,WAAA,CAAY,SAAA,CAAW7B,EACpC,QAAA,CAAA,CAAAO,GAAAA,CAACwc,cAAA,CAAc,SAAA,CAAU,eAAe,CAAA,CACvCha,CAAAA,EAAU,SAAA,CAAA,CACb,CAAA,CAIJ,IAAMqa,CAAAA,CAAOD,EAAO,IAAA,CAEpB,OACExb,KAACE,CAAAA,CAAA,CAAM,QAASsb,CAAAA,CAAO,OAAA,CAAS,UAAWnd,CAAAA,CACzC,QAAA,CAAA,CAAAO,IAAC6c,CAAAA,CAAA,CAAK,UAAU,cAAA,CAAe,CAAA,CAC9BD,EAAO,KAAA,CACPD,CAAAA,EAAyB3c,GAAAA,CAAC+D,WAAAA,CAAA,CAAY,SAAA,CAAU,0BAA0B,CAAA,CAAA,CAC7E,CAEJ,ECvFA,IAAMuY,EAAAA,CAAe,CACnB,SAAA,CAAW,CACT,QAAS,eAAA,CACT,KAAA,CAAO,YACP,IAAA,CAAMla,MACR,EACA,IAAA,CAAM,CACJ,QAAS,YAAA,CACT,KAAA,CAAO,OACP,IAAA,CAAMP,WACR,EACA,IAAA,CAAM,CACJ,QAAS,cAAA,CACT,KAAA,CAAO,MAAA,CACP,IAAA,CAAMC,OACR,CAAA,CACA,UAAW,CACT,OAAA,CAAS,cACT,KAAA,CAAO,WAAA,CACP,KAAMya,KACR,CAAA,CAEA,SAAU,CACR,OAAA,CAAS,aACT,KAAA,CAAO,UAAA,CACP,KAAM1a,WACR,CAAA,CACA,UAAW,CACT,OAAA,CAAS,eAAA,CACT,KAAA,CAAO,WAAA,CACP,IAAA,CAAMO,MACR,CAAA,CACA,OAAA,CAAS,CACP,OAAA,CAAS,aAAA,CACT,MAAO,SAAA,CACP,IAAA,CAAMma,KACR,CAAA,CACA,QAAA,CAAU,CACR,OAAA,CAAS,cAAA,CACT,MAAO,UAAA,CACP,IAAA,CAAMza,OACR,CACF,CAAA,CAEagb,EAAAA,CAAiB,CAAC,CAAE,MAAA,CAAAta,EAAQ,SAAA,CAAA/C,CAAU,IAA2B,CAC5E,IAAMmd,EAASN,EAAAA,CAAa9Z,CAAM,EAGlC,GAAI,CAACoa,EACH,OACExb,IAAAA,CAACE,EAAA,CAAM,OAAA,CAAQ,YAAY,SAAA,CAAW7B,CAAAA,CACpC,QAAA,CAAA,CAAAO,GAAAA,CAACoC,MAAAA,CAAA,CAAO,UAAU,cAAA,CAAe,CAAA,CAChCI,GAAU,SAAA,CAAA,CACb,CAAA,CAIJ,IAAMqa,CAAAA,CAAOD,CAAAA,CAAO,KAEpB,OACExb,IAAAA,CAACE,EAAA,CAAM,OAAA,CAASsb,EAAO,OAAA,CAAS,SAAA,CAAWnd,EACzC,QAAA,CAAA,CAAAO,GAAAA,CAAC6c,CAAAA,CAAA,CAAK,SAAA,CAAU,cAAA,CAAe,EAC9BD,CAAAA,CAAO,KAAA,CAAA,CACV,CAEJ,ECjEA,IAAMG,GAAa,CACjB,UAAA,CAAY,CAEV,OAAA,CAAS,UAAA,CACT,KAAA,CAAO,aACP,IAAA,CAAMC,IACR,EACA,QAAA,CAAU,CACR,QAAS,UAAA,CACT,KAAA,CAAO,WACP,IAAA,CAAM7E,SACR,CACF,CAAA,CAEa8E,EAAAA,CAAkB,CAAC,CAAE,IAAA,CAAA7T,EAAM,SAAA,CAAA3J,CAAU,CAAA,GAA4B,CAC5E,IAAMmd,CAAAA,CAASG,GAAW3T,CAAI,CAAA,CAG9B,GAAI,CAACwT,CAAAA,CACH,OACExb,IAAAA,CAACE,CAAAA,CAAA,CAAM,OAAA,CAAQ,WAAA,CAAY,UAAW7B,CAAAA,CACpC,QAAA,CAAA,CAAAO,IAACmY,SAAAA,CAAA,CAAU,UAAU,cAAA,CAAe,CAAA,CACnC/O,CAAAA,EAAQ,SAAA,CAAA,CACX,CAAA,CAIJ,IAAMyT,EAAOD,CAAAA,CAAO,IAAA,CAEpB,OACExb,IAAAA,CAACE,CAAAA,CAAA,CAAM,OAAA,CAASsb,CAAAA,CAAO,QAAS,SAAA,CAAWnd,CAAAA,CACzC,UAAAO,GAAAA,CAAC6c,CAAAA,CAAA,CAAK,SAAA,CAAU,cAAA,CAAe,EAC9BD,CAAAA,CAAO,KAAA,CAAA,CACV,CAEJ,CAAA,CCjCO,IAAMM,EAAAA,CAAe,CAAC,CAAE,OAAA,CAAAC,EAAS,UAAA,CAAA1P,CAAAA,CAAa,WAAY,SAAA,CAAAhO,CAAU,CAAA,GAAyB,CAClG,IAAMmd,CAAAA,CACJO,IAAY,KAAA,CACR,CAAE,QAAS,YAAA,CAAuB,KAAA,CAAO,MAAO,IAAA,CAAMC,SAAU,EAChE,CACE,OAAA,CAAU3P,IAAe,YAAA,CAAe,YAAA,CAAe,WACvD,KAAA,CAAO,UAAA,CACP,KAAMyK,KACR,CAAA,CAGN,GAAI,CAAC0E,CAAAA,CACH,OACExb,KAACE,CAAAA,CAAA,CAAM,QAAQ,WAAA,CAAY,SAAA,CAAW7B,EACpC,QAAA,CAAA,CAAAO,GAAAA,CAACkY,KAAAA,CAAA,CAAM,SAAA,CAAU,cAAA,CAAe,EAC/BiF,CAAAA,EAAW,SAAA,CAAA,CACd,EAIJ,IAAMN,CAAAA,CAAOD,EAAO,IAAA,CAEpB,OACExb,IAAAA,CAACE,CAAAA,CAAA,CAAM,OAAA,CAASsb,EAAO,OAAA,CAAS,SAAA,CAAWnd,EACzC,QAAA,CAAA,CAAAO,GAAAA,CAAC6c,EAAA,CAAK,SAAA,CAAU,eAAe,CAAA,CAC9BD,CAAAA,CAAO,OACV,CAEJ,CAAA,CCtBO,IAAMS,EAAAA,CAAoB,CAAC,CAChC,KAAA,CAAAla,CAAAA,CACA,MAAAhE,CAAAA,CACA,OAAA,CAAAyE,EACA,QAAA,CAAAoM,CAAAA,CACA,YAAArM,CAAAA,CAAc,WAAA,CACd,YAAA2Z,CAAAA,CACA,SAAA,CAAA7d,CACF,CAAA,GAA8B,CAC5B,GAAM,CAAC6R,CAAAA,CAAWiM,CAAY,CAAA,CAAIvX,QAAAA,CAAS,KAAK,EAE1CwX,CAAAA,CAAgBC,CAAAA,EAAqB,CACzCzN,CAAAA,CAASyN,CAAQ,EACjBF,CAAAA,CAAa,KAAK,EACpB,CAAA,CAEA,GAAIjM,EACF,OACEtR,GAAAA,CAAC,OAAI,SAAA,CAAWP,CAAAA,CACd,SAAAO,GAAAA,CAACyD,CAAAA,CAAA,CACC,KAAA,CAAON,CAAAA,CACP,KAAA,CAAOhE,GAAS,EAAA,CAChB,aAAA,CAAeqe,EACf,OAAA,CAAS5Z,CAAAA,CACT,YAAaD,CAAAA,CACf,CAAA,CACF,EAIJ,IAAM+Z,CAAAA,CAAeve,EAChBme,CAAAA,CAAcA,CAAAA,CAAYne,CAAK,CAAA,CAAIA,CAAAA,CACpCwE,EAEJ,OACE3D,GAAAA,CAAC,KAAA,CAAA,CACC,SAAA,CAAWlB,CAAAA,CAAG,qFAAA,CAAuFW,CAAS,CAAA,CAC9G,OAAA,CAAS,IAAM8d,CAAAA,CAAa,IAAI,EAChC,IAAA,CAAK,QAAA,CACL,SAAU,CAAA,CACV,SAAA,CAAYxW,GAAM,CAAA,CACZA,CAAAA,CAAE,MAAQ,OAAA,EAAWA,CAAAA,CAAE,MAAQ,GAAA,IACjCA,CAAAA,CAAE,cAAA,EAAe,CACjBwW,CAAAA,CAAa,IAAI,GAErB,CAAA,CAEA,QAAA,CAAAvd,IAAC0J,CAAAA,CAAA,CAAU,MAAOvG,CAAAA,CAAO,KAAA,CAAOua,EAAc,CAAA,CAChD,CAEJ,ECnCA,IAAMC,EAAAA,CAAkB,CACtB,EAAA,CAAI,WAAA,CACJ,GAAI,WAAA,CACJ,EAAA,CAAI,YACJ,EAAA,CAAI,WAAA,CACJ,MAAO,kBAAA,CACP,IAAA,CAAM,YACR,CAAA,CAEMC,EAAAA,CAAiB,CAACC,EAAkBC,CAAAA,GAAwB,CAChE,IAAMC,CAAAA,CAAU,CACd,EAAG,aAAA,CACH,CAAA,CAAG,cACH,CAAA,CAAG,aAAA,CACH,EAAG,aACL,CAAA,CAEA,GAAI,CAACD,CAAAA,CACH,OAAOC,CAAAA,CAAQF,CAAgC,CAAA,EAAK,aAAA,CAItD,OAAQA,CAAAA,EACN,KAAK,CAAA,CACH,OAAO,aAAA,CACT,OACE,OAAO,4BAAA,CACT,KAAK,CAAA,CACH,OAAO,4CACT,KAAK,CAAA,CACH,OAAO,0DAAA,CACT,QACE,OAAO,4BACX,CACF,CAAA,CAEaG,EAAAA,CAAmBC,EAAA,CAAA,UAAA,CAC9B,CACE,CACE,KAAA,CAAAld,CAAAA,CACA,YAAAE,CAAAA,CACA,QAAA,CAAAC,EACA,OAAA,CAAAgd,CAAAA,CAAU,EAAC,CACX,KAAA,CAAAC,EAAQ,EAAC,CACT,KAAAC,CAAAA,CAAO,QAAA,CACP,SAAAC,CAAAA,CAAW,IAAA,CACX,QAAA,CAAAR,CAAAA,CAAW,CAAA,CACX,UAAA,CAAAC,EAAa,IAAA,CACb,SAAA,CAAAre,EACA,aAAA,CAAA6e,CACF,EACAve,CAAAA,GACG,CACH,GAAM,CAACwe,CAAAA,CAAcC,CAAe,CAAA,CAAUP,EAAA,CAAA,QAAA,CAAsB,IAAI,GAAK,CAAA,CAEvEQ,EAAcC,CAAAA,EAAoB,CACtCF,CAAAA,CAAiB/M,CAAAA,EAAS,CACxB,IAAMkN,EAAO,IAAI,GAAA,CAAIlN,CAAI,CAAA,CACzB,OAAIkN,EAAK,GAAA,CAAID,CAAO,EAClBC,CAAAA,CAAK,MAAA,CAAOD,CAAO,CAAA,CAEnBC,CAAAA,CAAK,IAAID,CAAO,CAAA,CAEXC,CACT,CAAC,EACH,CAAA,CAEA,OACEvd,IAAAA,CAAC,KAAA,CAAA,CAAI,IAAKrB,CAAAA,CAAK,SAAA,CAAU,4CAEvB,QAAA,CAAA,CAAAC,GAAAA,CAAC,OAAI,SAAA,CAAU,+FAAA,CACb,SAAAA,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAWlB,CAAAA,CAAG,6BAAA,CAA+B6e,GAAgBU,CAAQ,CAAC,EACzE,QAAA,CAAAjd,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,oEAAA,CACb,QAAA,CAAA,CAAAA,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,sCACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,MAAG,SAAA,CAAU,oCAAA,CAAsC,SAAAe,CAAAA,CAAM,CAAA,CACzDE,GAAejB,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,uBAAA,CAAyB,QAAA,CAAAiB,EAAY,CAAA,CAAA,CACpE,CAAA,CAAA,CAEEqd,CAAAA,EAAiBJ,CAAAA,CAAQ,MAAA,CAAS,CAAA,GAClC9c,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wFACZ,QAAA,CAAA,CAAAkd,CAAAA,EAAiBte,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,WAAY,QAAA,CAAAse,CAAAA,CAAc,EAE1DJ,CAAAA,CAAQ,MAAA,CAAS,GAChBle,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,kCAAA,CACZ,QAAA,CAAAke,CAAAA,CAAQ,GAAA,CAAI,CAACxc,CAAAA,CAAQgB,IAAU,CAC9B,IAAMma,EAAOnb,CAAAA,CAAO,IAAA,CACpB,OACEN,IAAAA,CAAC,QAAA,CAAA,CAEC,QAASM,CAAAA,CAAO,OAAA,CAChB,UAAW5C,CAAAA,CACT,2FAAA,CACA,CACE,wDAAA,CACE4C,CAAAA,CAAO,UAAY,SAAA,EAAa,CAACA,CAAAA,CAAO,OAAA,CAC1C,8DAAA,CACEA,CAAAA,CAAO,UAAY,WAAA,CACrB,oEAAA,CACEA,EAAO,OAAA,GAAY,aAAA,CACrB,iFACEA,CAAAA,CAAO,OAAA,GAAY,UACrB,8CAAA,CAAgDA,CAAAA,CAAO,UAAY,OACrE,CACF,EAEC,QAAA,CAAA,CAAAmb,CAAAA,EAAQ7c,IAAC6c,CAAAA,CAAA,CAAK,SAAA,CAAU,SAAA,CAAU,CAAA,CAClCnb,CAAAA,CAAO,QAlBHgB,CAmBP,CAEJ,CAAC,CAAA,CACH,CAAA,CAAA,CAEJ,GAEJ,CAAA,CACF,CAAA,CACF,EAGA1C,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wBAAA,CACb,QAAA,CAAAA,IAAC,KAAA,CAAA,CAAI,SAAA,CAAWlB,EAAG,6BAAA,CAA+B6e,EAAAA,CAAgBU,CAAQ,CAAA,CAAG5e,CAAS,CAAA,CACnF,SAAA2e,CAAAA,GAAS,OAAA,EAAWD,EAAM,MAAA,CAAS,CAAA,CAClCne,IAAC,KAAA,CAAA,CAAI,SAAA,CAAWlB,EAAG,YAAA,CAAc8e,EAAAA,CAAeC,EAAUC,CAAU,CAAC,EAClE,QAAA,CAAAK,CAAAA,CAAM,IAAKS,CAAAA,EAAS,CACnB,IAAMtN,CAAAA,CAAYiN,CAAAA,CAAa,GAAA,CAAIK,EAAK,GAAG,CAAA,CACrCC,EAAeD,CAAAA,CAAK,YAAA,EAAgBtN,EAE1C,OACEtR,GAAAA,CAAC,OAEC,SAAA,CAAWlB,CAAAA,CACT,8BACA+f,CAAAA,GAAiBhB,CAAAA,CAAW,EAAI,eAAA,CAAkB,EAAA,CACpD,EAEA,QAAA,CAAA7d,GAAAA,CAAC4e,CAAAA,CAAK,SAAA,CAAL,CAAgB,GAAGA,EAAK,KAAA,CAAO,SAAA,CAAWtN,EAAW,YAAA,CAAc,IAAMmN,EAAWG,CAAAA,CAAK,GAAG,EAAG,CAAA,CAAA,CAN3FA,CAAAA,CAAK,GAOZ,CAEJ,CAAC,EACH,CAAA,CAEA1d,CAAAA,CAEJ,EACF,CAAA,CAAA,CACF,CAEJ,CACF,EAEA8c,EAAAA,CAAW,WAAA,CAAc,aCpJlB,SAASc,GAAyC,CACvD,OAAA,CAAAC,EACA,IAAA,CAAAzT,CAAAA,CACA,OAAA0T,CAAAA,CACA,aAAA,CAAAC,EACA,MAAA,CAAAC,CAAAA,CACA,WAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CAAU,KAAA,CACV,YAAA,CAAAC,CAAAA,CAAe,oBACf,SAAA,CAAA5f,CAAAA,CACA,WAAA6f,CACF,CAAA,CAAsB,CACpB,IAAMC,CAAAA,CAAc/S,GAAgB,CAC9B0S,CAAAA,EACFA,EAAO1S,CAAG,EAEd,EAEMgT,CAAAA,CAAkBC,CAAAA,EAClB,CAACA,CAAAA,CAAO,QAAA,EAAY,CAACP,CAAAA,CAAe,IAAA,CAEpCF,CAAAA,GAAWS,EAAO,GAAA,CACbR,CAAAA,GAAkB,MACvBjf,GAAAA,CAACgE,SAAAA,CAAA,CAAU,SAAA,CAAU,cAAA,CAAe,EACpChE,GAAAA,CAAC+D,WAAAA,CAAA,CAAY,SAAA,CAAU,cAAA,CAAe,EAGnC/D,GAAAA,CAAC0f,cAAAA,CAAA,CAAe,SAAA,CAAU,yBAAA,CAA0B,CAAA,CAGvDC,CAAAA,CAAa,CAACF,CAAAA,CAA4B3R,IAAW,CACzD,IAAM3O,EAAQ2O,CAAAA,CAAI2R,CAAAA,CAAO,GAAG,CAAA,CAE5B,OAAIA,EAAO,MAAA,CACFA,CAAAA,CAAO,OAAOtgB,CAAAA,CAAO2O,CAAG,EAI7B,OAAO3O,CAAAA,EAAU,UACZa,GAAAA,CAACsB,CAAAA,CAAA,CAAM,OAAA,CAASnC,CAAAA,CAAQ,SAAA,CAAY,YAAc,QAAA,CAAAA,CAAAA,CAAQ,MAAQ,IAAA,CAAK,CAAA,CAG5E,MAAM,OAAA,CAAQA,CAAK,EACdA,CAAAA,CAAM,IAAA,CAAK,IAAI,CAAA,CAGjBA,CAAAA,EAAO,UAAS,EAAK,GAC9B,EAEA,GAAIigB,CAAAA,CACF,OACEpf,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAWlB,EAAG,mBAAA,CAAqBW,CAAS,EAC/C,QAAA,CAAAO,GAAAA,CAAC,OAAI,SAAA,CAAU,iBAAA,CACb,SAAAA,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,qCAAA,CAAsC,QAAA,CAAA,YAAA,CAAU,EACjE,CAAA,CACF,CAAA,CAIJ,IAAM4f,CAAAA,CAAaN,CAAAA,CAAa,IAAA,CAAK,IAAA,CAAKA,CAAAA,CAAW,UAAA,CAAaA,EAAW,QAAQ,CAAA,CAAI,EACnFO,CAAAA,CAAYP,CAAAA,CAAAA,CAAcA,EAAW,WAAA,CAAc,CAAA,EAAKA,EAAW,QAAA,CAAW,CAAA,CAAI,EAClFQ,CAAAA,CAAUR,CAAAA,CAAa,KAAK,GAAA,CAAIA,CAAAA,CAAW,YAAcA,CAAAA,CAAW,QAAA,CAAUA,CAAAA,CAAW,UAAU,CAAA,CAAI,CAAA,CAE7G,OACEle,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAWtC,CAAAA,CAAG,WAAA,CAAaW,CAAS,CAAA,CACvC,QAAA,CAAA,CAAAO,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,oBACb,QAAA,CAAAA,GAAAA,CAAC,OAAI,SAAA,CAAU,iBAAA,CACb,SAAAoB,IAAAA,CAAC,OAAA,CAAA,CAAM,SAAA,CAAU,QAAA,CACf,QAAA,CAAA,CAAApB,GAAAA,CAAC,SACC,QAAA,CAAAA,GAAAA,CAAC,MAAG,SAAA,CAAU,sBAAA,CACX,SAAA+e,CAAAA,CAAQ,GAAA,CAAKU,GACZzf,GAAAA,CAAC,IAAA,CAAA,CAEC,MAAOyf,CAAAA,CAAO,KAAA,CAAQ,CAAE,KAAA,CAAOA,CAAAA,CAAO,KAAM,CAAA,CAAI,MAAA,CAChD,SAAA,CAAW3gB,CAAAA,CACT,kEAAA,CACA2gB,CAAAA,CAAO,QAAU,QAAA,EAAY,aAAA,CAC7BA,EAAO,KAAA,GAAU,OAAA,EAAW,YAC9B,CAAA,CAEC,QAAA,CAAAA,CAAAA,CAAO,QAAA,EAAYP,CAAAA,CAClBlf,GAAAA,CAAC4C,EAAA,CACC,OAAA,CAAQ,QACR,IAAA,CAAK,IAAA,CACL,UAAU,qDAAA,CACV,OAAA,CAAS,IAAM2c,CAAAA,CAAWE,CAAAA,CAAO,GAAG,EAEpC,QAAA,CAAAre,IAAAA,CAAC,QAAK,SAAA,CAAU,mBAAA,CACb,UAAAqe,CAAAA,CAAO,KAAA,CACPD,EAAeC,CAAM,CAAA,CAAA,CACxB,EACF,CAAA,CAEAA,CAAAA,CAAO,OArBJA,CAAAA,CAAO,GAuBd,CACD,CAAA,CACH,CAAA,CACF,CAAA,CACAzf,GAAAA,CAAC,OAAA,CAAA,CACE,QAAA,CAAAsL,EAAK,MAAA,GAAW,CAAA,CACftL,IAAC,IAAA,CAAA,CACC,QAAA,CAAAA,IAAC,IAAA,CAAA,CAAG,OAAA,CAAS+e,EAAQ,MAAA,CAAQ,SAAA,CAAU,yCACpC,QAAA,CAAAM,CAAAA,CACH,EACF,CAAA,CAEA/T,CAAAA,CAAK,IAAI,CAACwC,CAAAA,CAAKpL,CAAAA,GACb1C,GAAAA,CAAC,IAAA,CAAA,CAEC,SAAA,CAAWlB,EACT,8CAAA,CACAqgB,CAAAA,EAAc,gBAChB,CAAA,CACA,OAAA,CAAS,IAAMA,CAAAA,GAAarR,CAAG,EAE9B,QAAA,CAAAiR,CAAAA,CAAQ,IAAKU,CAAAA,EACdzf,GAAAA,CAAC,MAEC,KAAA,CAAOyf,CAAAA,CAAO,MAAQ,CAAE,KAAA,CAAOA,CAAAA,CAAO,KAAM,CAAA,CAAI,MAAA,CAChD,UAAW3gB,CAAAA,CACT,gCAAA,CACA2gB,EAAO,KAAA,GAAU,QAAA,EAAY,cAC7BA,CAAAA,CAAO,KAAA,GAAU,SAAW,YAC9B,CAAA,CAEG,SAAAE,CAAAA,CAAWF,CAAAA,CAAQ3R,CAAG,CAAA,CAAA,CARpB2R,CAAAA,CAAO,GASZ,CACD,CAAA,CAAA,CAnBI/c,CAoBP,CACD,CAAA,CAEL,CAAA,CAAA,CACF,EACF,CAAA,CACF,CAAA,CAEC4c,GAAcM,CAAAA,CAAa,CAAA,EAC1Bxe,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yCACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,OAAI,SAAA,CAAU,+BAAA,CAAgC,qBACpCye,CAAAA,CAAU,MAAA,CAAKC,EAAQ,MAAA,CAAKR,CAAAA,CAAW,UAAA,CAAW,UAAA,CAAA,CAC7D,CAAA,CACAle,IAAAA,CAAC,OAAI,SAAA,CAAU,yBAAA,CACb,UAAAA,IAAAA,CAACwB,CAAAA,CAAA,CACC,OAAA,CAAQ,SAAA,CACR,KAAK,IAAA,CACL,OAAA,CAAS,IAAM0c,CAAAA,CAAW,YAAA,CAAaA,EAAW,WAAA,CAAc,CAAC,EACjE,QAAA,CAAUA,CAAAA,CAAW,WAAA,GAAgB,CAAA,CAErC,QAAA,CAAA,CAAAtf,GAAAA,CAAC+f,YAAA,CAAY,SAAA,CAAU,UAAU,CAAA,CAAE,UAAA,CAAA,CAErC,EACA3e,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,qBAAA,CAAsB,QAAA,CAAA,CAAA,OAAA,CAC7Bke,EAAW,WAAA,CAAY,MAAA,CAAKM,GACpC,CAAA,CACAxe,IAAAA,CAACwB,EAAA,CACC,OAAA,CAAQ,SAAA,CACR,IAAA,CAAK,IAAA,CACL,OAAA,CAAS,IAAM0c,CAAAA,CAAW,YAAA,CAAaA,EAAW,WAAA,CAAc,CAAC,EACjE,QAAA,CAAUA,CAAAA,CAAW,cAAgBM,CAAAA,CACtC,QAAA,CAAA,CAAA,MAAA,CAEC5f,IAACsM,YAAAA,CAAA,CAAa,UAAU,SAAA,CAAU,CAAA,CAAA,CACpC,GACF,CAAA,CAAA,CACF,CAAA,CAAA,CAEJ,CAEJ,CC7LO,IAAM0T,EAAAA,CAAkBC,EAAA,CAAA,UAAA,CAC7B,CAAC,CAAE,KAAA,CAAA9c,CAAAA,CAAO,YAAAlC,CAAAA,CAAa,KAAA,CAAAoC,EAAO,QAAA,CAAA6c,CAAAA,CAAU,SAAAhf,CAAAA,CAAU,SAAA,CAAAzB,EAAW,MAAA,CAAAkK,CAAAA,CAAS,UAAW,CAAA,CAAG5J,CAAAA,GAAQ,CAC1F,IAAMogB,CAAAA,CAAexW,CAAAA,GAAW,YAAA,CAEhC,OACEvI,IAAAA,CAAC,OACC,GAAA,CAAKrB,CAAAA,CACL,UAAWjB,CAAAA,CACT,WAAA,CACAqhB,GAAgB,6DAAA,CAChB1gB,CACF,EAEC,QAAA,CAAA,CAAA0D,CAAAA,EACC/B,KAAC,KAAA,CAAA,CAAI,SAAA,CAAWtC,EAAG,WAAA,CAAaqhB,CAAAA,EAAgB,MAAM,CAAA,CACpD,QAAA,CAAA,CAAA/e,IAAAA,CAAC,OAAA,CAAA,CAAM,SAAA,CAAU,qCAAA,CACd,UAAA+B,CAAAA,CACA+c,CAAAA,EAAYlgB,IAAC,MAAA,CAAA,CAAK,SAAA,CAAU,wBAAwB,QAAA,CAAA,GAAA,CAAC,CAAA,CAAA,CACxD,EACCiB,CAAAA,EACCjB,GAAAA,CAAC,KAAE,SAAA,CAAU,+BAAA,CAAiC,SAAAiB,CAAAA,CAAY,CAAA,CAAA,CAE9D,EAGFG,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAWtC,CAAAA,CAAGqhB,CAAAA,EAAgB,eAAe,EAC/C,QAAA,CAAA,CAAAjf,CAAAA,CACAmC,GACCrD,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,+BAAA,CAAiC,QAAA,CAAAqD,EAAM,CAAA,CAAA,CAExD,CAAA,CAAA,CACF,CAEJ,CACF,EAEA2c,GAAU,WAAA,CAAc,WAAA,CCpCxB,IAAMI,GAAiB,CACrB,EAAA,CAAI,YACJ,EAAA,CAAI,WAAA,CACJ,GAAI,WACN,CAAA,CAEMC,GAAc,CAClB,CAAA,CAAG,cACH,CAAA,CAAG,4BAAA,CACH,EAAG,2CAAA,CACH,CAAA,CAAG,2CACL,CAAA,CAEaC,EAAAA,CAAoBC,EAAA,CAAA,UAAA,CAC/B,CAAC,CACC,KAAA,CAAAxf,EACA,WAAA,CAAAE,CAAAA,CACA,SAAAC,CAAAA,CACA,SAAA,CAAAzB,EACA,OAAA,CAAA+gB,CAAAA,CAAU,KACV,MAAA,CAAA7W,CAAAA,CAAS,WACT,OAAA,CAAAoV,CAAAA,CAAU,CACZ,CAAA,CAAGhf,CAAAA,GAECqB,IAAAA,CAAC,KAAA,CAAA,CAAI,GAAA,CAAKrB,CAAAA,CAAK,UAAWjB,CAAAA,CAAG,WAAA,CAAaW,CAAS,CAAA,CAC/C,QAAA,CAAA,CAAA,CAAAsB,GAASE,CAAAA,GACTG,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,WAAA,CACZ,QAAA,CAAA,CAAAL,GACCf,GAAAA,CAAC,IAAA,CAAA,CAAG,UAAU,uCAAA,CACX,QAAA,CAAAe,EACH,CAAA,CAEDE,CAAAA,EACCjB,GAAAA,CAAC,GAAA,CAAA,CAAE,SAAA,CAAU,+BAAA,CACV,SAAAiB,CAAAA,CACH,CAAA,CAAA,CAEJ,EAGFjB,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAWlB,CAAAA,CACd6K,CAAAA,GAAW,OACP,CAAA,WAAA,EAAc0W,EAAAA,CAAYtB,CAAO,CAAC,CAAA,CAAA,CAClCqB,GAAeI,CAAO,CAC5B,EACG,QAAA,CAAAtf,CAAAA,CACH,CAAA,CAAA,CACF,CAGN,EAEAof,EAAAA,CAAY,YAAc,aAAA,CCzD1B,SAASG,EAAAA,CAAS,CAChB,SAAA,CAAAhhB,CAAAA,CACA,WAAAihB,CAAAA,CACA,eAAA,CAAAC,EAAkB,IAAA,CAClB,GAAG7gB,CACL,CAAA,CAAkB,CAChB,OACEE,GAAAA,CAAC4gB,SAAAA,CAAA,CACC,eAAA,CAAiBD,CAAAA,CACjB,UAAW7hB,CAAAA,CAAG,yBAAA,CAA2BW,CAAS,CAAA,CAClD,UAAA,CAAY,CACV,MAAA,CAAQ,+DAAA,CACR,KAAA,CAAO,YACP,OAAA,CAAS,gDAAA,CACT,cAAe,qBAAA,CACf,GAAA,CAAK,8BACL,eAAA,CAAiB,yEAAA,CACjB,YAAa,0EAAA,CACb,UAAA,CAAY,mCACZ,QAAA,CAAU,MAAA,CACV,QAAS,gEAAA,CACT,IAAA,CAAM,mBACN,GAAA,CAAK,kGAAA,CACL,UAAA,CAAYX,CAAAA,CACV6D,EAAAA,CAAe,CAAE,QAAS,OAAQ,CAAC,EACnC,yBACF,CAAA,CACA,SAAU,mFAAA,CACV,KAAA,CAAO,mCACP,OAAA,CAAS,kCAAA,CACT,SAAU,kCAAA,CACV,MAAA,CAAQ,YACR,GAAG+d,CACL,EACC,GAAG5gB,CAAAA,CACN,CAEJ,CACA2gB,EAAAA,CAAS,WAAA,CAAc,WCzCvB,IAAMI,EAAAA,CAA2B,QAE3BC,EAAAA,CAAkC,EAAA,CAAA,OAAA,CAOlCC,GAAuBC,EAAA,CAAA,UAAA,CAG3B,CAAC,CAAE,SAAA,CAAAvhB,CAAAA,CAAW,KAAA,CAAAU,CAAAA,CAAQ,QAAA,CAAU,UAAA,CAAA+T,EAAa,CAAA,CAAG,SAAA,CAAA+M,EAAW,GAAGnhB,CAAM,EAAGC,CAAAA,GACvEC,GAAAA,CAAkB,UAAjB,CAAwB,SAAA,CAAWihB,EAClC,QAAA,CAAAjhB,GAAAA,CAAkB,WAAjB,CACC,GAAA,CAAKD,EACL,KAAA,CAAOI,CAAAA,CACP,UAAA,CAAY+T,CAAAA,CACZ,SAAA,CAAWpV,CAAAA,CACT,6aACAW,CACF,CAAA,CACC,GAAGK,CAAAA,CACN,CAAA,CACF,CACD,EACDihB,EAAAA,CAAe,YAA+B,EAAA,CAAA,OAAA,CAAQ,WAAA,CCT/C,SAASG,EAAAA,CAAW,CACzB,IAAA,CAAAC,CAAAA,CACA,YAAA,CAAAC,CAAAA,CACA,YAAAzd,CAAAA,CAAc,aAAA,CACd,SAAAE,CAAAA,CAAW,KAAA,CACX,UAAApE,CAAAA,CACA,eAAA,CAAA4hB,EACA,iBAAA,CAAAC,CAAAA,CACA,MAAAnhB,CAAAA,CAAQ,OAAA,CACR,cAAAohB,CAAAA,CACA,KAAA,CAAApe,EACA,gBAAA,CAAAqe,CACF,CAAA,CAAoB,CAClB,GAAM,CAAClc,EAAM+P,CAAO,CAAA,CAAUoM,YAAS,KAAK,CAAA,CAEtCC,EAAgBC,CAAAA,EAAmC,CACvDP,IAAeO,CAAY,CAAA,CAC3BtM,EAAQ,KAAK,EACf,EAEMuM,CAAAA,CACJxgB,IAAAA,CAACyf,GAAA,CAAQ,IAAA,CAAMvb,CAAAA,CAAM,YAAA,CAAc+P,CAAAA,CACjC,QAAA,CAAA,CAAArV,IAAC8gB,EAAAA,CAAA,CAAe,QAAO,IAAA,CACrB,QAAA,CAAA1f,KAACwB,CAAAA,CAAA,CACC,QAAQ,SAAA,CACR,QAAA,CAAUiB,EACV,SAAA,CAAW/E,CAAAA,CACT,sCACA,CAACqiB,CAAAA,EAAQ,wBACTE,CACF,CAAA,CAEA,QAAA,CAAA,CAAArhB,GAAAA,CAAC6hB,YAAAA,CAAA,CAAa,UAAU,cAAA,CAAe,CAAA,CACtCV,EAAOW,MAAAA,CAAOX,CAAAA,CAAM,YAAY,CAAA,CAAIxd,CAAAA,CAAAA,CACvC,EACF,CAAA,CACA3D,GAAAA,CAAC+gB,GAAA,CAAe,SAAA,CAAWjiB,EAAG,YAAA,CAAcW,CAAS,EAAG,KAAA,CAAOU,CAAAA,CAC7D,QAAA,CAAAH,GAAAA,CAACygB,EAAAA,CAAA,CACC,KAAK,QAAA,CACL,QAAA,CAAUU,EACV,QAAA,CAAUO,CAAAA,CACV,SAAUH,CAAAA,CACV,YAAA,CAAY,KACZ,SAAA,CAAWziB,CAAAA,CAAG,sBAAuBwiB,CAAiB,CAAA,CACxD,EACF,CAAA,CAAA,CACF,CAAA,CAGF,OAAIne,CAAAA,CAEA/B,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAWtC,CAAAA,CAAG,WAAA,CAAa0iB,CAAgB,CAAA,CAC9C,QAAA,CAAA,CAAAxhB,IAAC,OAAA,CAAA,CAAM,SAAA,CAAU,6FACd,QAAA,CAAAmD,CAAAA,CACH,EACCye,CAAAA,CAAAA,CACH,CAAA,CAIGA,CACT,CCjFO,IAAMG,EAAAA,CAAYjQ,CAAAA,CAAE,MAAA,CAAO,CAChC,cAAA,CAAgBA,CAAAA,CAAE,QAAO,CAAE,QAAA,GAC3B,aAAA,CAAeA,CAAAA,CAAE,QAAO,CAAE,QAAA,GAC1B,KAAA,CAAOA,CAAAA,CAAE,QAAO,CAAE,QAAA,GAClB,KAAA,CAAOA,CAAAA,CAAE,QAAO,CAAE,QAAA,EAAS,CAC3B,mBAAA,CAAqBA,CAAAA,CAAE,MAAA,GAAS,GAAA,CAAI,CAAA,CAAG,qBAAqB,CAAA,CAAE,GAAA,CAAI,IAAK,sBAAsB,CAAA,CAAE,QAAA,EAAS,CACxG,QAAA,CAAUA,CAAAA,CAAE,QAAO,CAAE,QAAA,GACrB,GAAA,CAAKA,CAAAA,CAAE,QAAO,CAAE,QAAA,EAAS,CACzB,WAAA,CAAaA,CAAAA,CAAE,IAAA,GAAO,QAAA,EAAS,CAC/B,OAAQA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAC5B,UAAWA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAC/B,KAAMA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAC1B,KAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,CAAE,UAAS,CAC3B,OAAA,CAASA,EAAE,MAAA,EAAO,CAAE,UACtB,CAAC,ECID,IAAMkQ,EAAAA,CAAe,CACnB,CAAE,KAAA,CAAO,MAAO,KAAA,CAAO,KAAM,EAC7B,CAAE,KAAA,CAAO,MAAO,KAAA,CAAO,KAAM,EAC7B,CAAE,KAAA,CAAO,MAAO,KAAA,CAAO,KAAM,EAC7B,CAAE,KAAA,CAAO,KAAA,CAAO,KAAA,CAAO,KAAM,CAAA,CAC7B,CAAE,KAAA,CAAO,WAAA,CAAa,MAAO,WAAY,CAAA,CACzC,CAAE,KAAA,CAAO,gBAAA,CAAkB,MAAO,gBAAiB,CAAA,CACnD,CAAE,KAAA,CAAO,UAAA,CAAY,MAAO,UAAW,CAAA,CACvC,CAAE,KAAA,CAAO,SAAA,CAAW,KAAA,CAAO,SAAU,CAAA,CACrC,CAAE,MAAO,cAAA,CAAgB,KAAA,CAAO,cAAe,CAAA,CAC/C,CAAE,MAAO,SAAA,CAAW,KAAA,CAAO,SAAU,CAAA,CACrC,CAAE,MAAO,OAAA,CAAS,KAAA,CAAO,OAAQ,CACnC,CAAA,CAEaC,GAAe,CAAC,CAAE,IAAA,CAAA3c,CAAAA,CAAM,YAAA,CAAA2M,CAAAA,CAAc,SAAAiQ,CAAS,CAAA,GAAyB,CACnF,GAAM,CAAC7b,EAAcC,CAAe,CAAA,CAAIN,SAAS,KAAK,CAAA,CAEhDwJ,EAAOuB,OAAAA,CAAqB,CAChC,SAAUC,WAAAA,CAAY+Q,EAAS,EAC/B,aAAA,CAAe,CACb,cAAA,CAAgB,EAAA,CAChB,aAAA,CAAe,EAAA,CACf,MAAO,EAAA,CACP,KAAA,CAAO,GACP,mBAAA,CAAqB,CAAA,CACrB,SAAU,EAAA,CACV,GAAA,CAAK,GACL,MAAA,CAAQ,EAAA,CACR,UAAW,EAAA,CACX,IAAA,CAAM,GACN,KAAA,CAAO,EAAA,CACP,QAAS,IACX,CACF,CAAC,CAAA,CAEK5P,CAAAA,CAAe,MAAO7G,GAAsB,CAChDhF,CAAAA,CAAgB,IAAI,CAAA,CACpB,GAAI,CAIF,GAHe,MAAM4b,EAAS5W,CAAI,CAAA,GAGnB,GAAO,CACpBvG,KAAAA,CAAM,MAAM,oDAAoD,CAAA,CAChE,MACF,CACAyK,CAAAA,CAAK,KAAA,EAAM,CACXyC,CAAAA,CAAa,CAAA,CAAK,EACpB,CAAA,MAAS5O,CAAAA,CAAO,CACd,OAAA,CAAQ,KAAA,CAAM,oBAAqBA,CAAK,CAAA,CACxC0B,MAAM,KAAA,CAAM,qCAAqC,EACnD,CAAA,OAAE,CACAuB,EAAgB,KAAK,EACvB,CACF,CAAA,CAEMqL,CAAAA,CAAe,IAAM,CACzBnC,CAAAA,CAAK,KAAA,GACLyC,CAAAA,CAAa,KAAK,EACpB,CAAA,CAEA,OACEjS,IAACyK,EAAAA,CAAA,CAAO,KAAMnF,CAAAA,CAAM,YAAA,CAAc2M,EAChC,QAAA,CAAA7Q,IAAAA,CAAC2J,GAAA,CAAc,SAAA,CAAU,yCACvB,QAAA,CAAA,CAAA/K,GAAAA,CAACiL,EAAAA,CAAA,CACC,QAAA,CAAAjL,GAAAA,CAACmL,GAAA,CAAY,QAAA,CAAA,+BAAA,CAA6B,EAC5C,CAAA,CAEAnL,GAAAA,CAACuP,aAAA,CAAc,GAAGC,EAChB,QAAA,CAAApO,IAAAA,CAAC,QAAK,QAAA,CAAUoO,CAAAA,CAAK,aAAa2C,CAAY,CAAA,CAAG,UAAU,WAAA,CACzD,QAAA,CAAA,CAAA/Q,IAAAA,CAACkf,EAAAA,CAAA,CAAY,MAAA,CAAO,OAAO,OAAA,CAAS,CAAA,CAAG,QAAQ,IAAA,CAC7C,QAAA,CAAA,CAAAtgB,IAAC0P,CAAAA,CAAA,CACC,KAAK,gBAAA,CACL,KAAA,CAAM,mBACN,WAAA,CAAY,kBAAA,CACd,EACA1P,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,eAAA,CACL,KAAA,CAAM,iBAAA,CACN,WAAA,CAAY,iBAAA,CACd,GACF,CAAA,CAEA1P,GAAAA,CAACsgB,GAAA,CAAY,MAAA,CAAO,WAAW,OAAA,CAAQ,IAAA,CACrC,SAAAtgB,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,OAAA,CACL,MAAM,OAAA,CACN,IAAA,CAAK,QACL,WAAA,CAAY,qBAAA,CACd,CAAA,CACF,CAAA,CAEAtO,IAAAA,CAACkf,EAAAA,CAAA,CAAY,MAAA,CAAO,MAAA,CAAO,QAAS,CAAA,CAAG,OAAA,CAAQ,KAC7C,QAAA,CAAA,CAAAtgB,GAAAA,CAACmQ,GAAA,CACC,IAAA,CAAK,QACL,KAAA,CAAM,OAAA,CACN,YAAY,cAAA,CACZ,OAAA,CAAS6R,GACX,CAAA,CACAhiB,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,qBAAA,CACL,MAAM,aAAA,CACN,IAAA,CAAK,SACL,WAAA,CAAY,4BAAA,CACd,GACF,CAAA,CAEAtO,IAAAA,CAACkf,GAAA,CAAY,MAAA,CAAO,OAAO,OAAA,CAAS,CAAA,CAAG,QAAQ,IAAA,CAC7C,QAAA,CAAA,CAAAtgB,IAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,UAAA,CACL,KAAA,CAAM,WAAA,CACN,YAAY,iBAAA,CACd,CAAA,CACA1P,IAAC0P,CAAAA,CAAA,CACC,KAAK,KAAA,CACL,KAAA,CAAM,MACN,WAAA,CAAY,WAAA,CACd,GACF,CAAA,CAEA1P,GAAAA,CAACsgB,GAAA,CAAY,MAAA,CAAO,WAAW,OAAA,CAAQ,IAAA,CACrC,QAAA,CAAAtgB,GAAAA,CAACggB,EAAAA,CAAA,CAAU,MAAM,eAAA,CACf,QAAA,CAAAhgB,IAAC+P,UAAAA,CAAA,CACC,KAAK,aAAA,CACL,OAAA,CAASP,EAAK,OAAA,CACd,MAAA,CAAQ,CAAC,CAAE,KAAA,CAAAY,CAAM,CAAA,GACfpQ,GAAAA,CAACkhB,GAAA,CACC,IAAA,CAAM9Q,CAAAA,CAAM,KAAA,CACZ,YAAA,CAAcA,CAAAA,CAAM,SACpB,WAAA,CAAY,YAAA,CACd,EAEJ,CAAA,CACF,CAAA,CACF,EAEAhP,IAAAA,CAACkf,EAAAA,CAAA,CAAY,KAAA,CAAM,iBAAA,CAAkB,OAAO,UAAA,CAAW,OAAA,CAAQ,KAC7D,QAAA,CAAA,CAAAtgB,GAAAA,CAAC0P,EAAA,CACC,IAAA,CAAK,QAAA,CACL,KAAA,CAAM,QAAA,CACN,WAAA,CAAY,uBACd,CAAA,CACA1P,GAAAA,CAAC0P,EAAA,CACC,IAAA,CAAK,YACL,KAAA,CAAM,4BAAA,CACN,YAAY,6CAAA,CACd,CAAA,CACAtO,KAACkf,EAAAA,CAAA,CAAY,OAAO,MAAA,CAAO,OAAA,CAAS,EAAG,OAAA,CAAQ,IAAA,CAC7C,QAAA,CAAA,CAAAtgB,GAAAA,CAAC0P,CAAAA,CAAA,CACC,KAAK,MAAA,CACL,KAAA,CAAM,OACN,WAAA,CAAY,YAAA,CACd,EACA1P,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,OAAA,CACL,MAAM,OAAA,CACN,WAAA,CAAY,cACd,CAAA,CAAA,CACF,CAAA,CACA1P,IAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,SAAA,CACL,KAAA,CAAM,SAAA,CACN,YAAY,eAAA,CACd,CAAA,CAAA,CACF,EAEAtO,IAAAA,CAAC8J,EAAAA,CAAA,CACC,QAAA,CAAA,CAAAlL,GAAAA,CAAC4C,EAAA,CAAO,IAAA,CAAK,SAAS,OAAA,CAAQ,SAAA,CAAU,QAAS+O,CAAAA,CAAc,QAAA,CAAA,QAAA,CAE/D,EACA3R,GAAAA,CAAC4C,CAAAA,CAAA,CAAO,IAAA,CAAK,QAAA,CAAS,QAAA,CAAUyD,EAC7B,QAAA,CAAAA,CAAAA,CAAe,YAAc,SAAA,CAChC,CAAA,CAAA,CACF,GACF,CAAA,CACF,CAAA,CAAA,CACF,EACF,CAEJ,CAAA,CCrLO,IAAM8b,EAAAA,CAAU,CAAC,CAAE,KAAAC,CAAAA,CAAM,UAAA,CAAAC,EAAY,QAAA,CAAAC,CAAAA,CAAU,YAAAC,CAAY,CAAA,GAAoB,CACpF,GAAM,CAACnT,EAAcC,CAAe,CAAA,CAAIrJ,SAAS,KAAK,CAAA,CAEhDwc,EAAe,MAAOlX,CAAAA,EAAsB,CAChD,GAAI,CAACgX,CAAAA,CACH,MAAM,IAAI,KAAA,CAAM,gCAAgC,CAAA,CAElD,MAAMA,EAAShX,CAAI,EACrB,EAEMmX,CAAAA,CAAkB,CAACC,EAAeC,CAAAA,GAAoB,CACtDJ,IACFA,CAAAA,CAAYG,CAAK,EACjB3d,KAAAA,CAAM,OAAA,CAAQ,CAAA,EAAG4d,CAAO,CAAA,kBAAA,CAAoB,CAAA,EAEhD,EAEM5D,CAAAA,CAA6B,CACjC,CACE,GAAA,CAAK,MAAA,CACL,MAAO,MAAA,CACP,QAAA,CAAU,KACV,KAAA,CAAO,KAAA,CACP,OAAQ,CAAC5f,CAAAA,CAAO2O,IACd9N,GAAAA,CAAC,QAAA,CAAA,CACC,QAAS,IAAMqiB,CAAAA,CAAWvU,CAAAA,CAAI,UAAU,CAAA,CACxC,SAAA,CAAU,qDAET,QAAA,CAAA3O,CAAAA,CACH,CAEJ,CAAA,CACA,CACE,IAAK,OAAA,CACL,KAAA,CAAO,QACP,QAAA,CAAU,IAAA,CACV,MAAO,KACT,CAAA,CACA,CACE,GAAA,CAAK,qBAAA,CACL,MAAO,aAAA,CACP,QAAA,CAAU,IAAA,CACV,KAAA,CAAO,KAAA,CACP,KAAA,CAAO,QACP,MAAA,CAASA,CAAAA,EAAU,GAAGA,CAAK,CAAA,CAAA,CAC7B,EACA,CACE,GAAA,CAAK,UACL,KAAA,CAAO,EAAA,CACP,MAAO,KAAA,CACP,KAAA,CAAO,QACP,MAAA,CAAQ,CAACyjB,EAAG9U,CAAAA,GACV9N,GAAAA,CAAC4C,CAAAA,CAAA,CACC,OAAA,CAAQ,OAAA,CACR,KAAK,IAAA,CACL,OAAA,CAAUmE,GAAM,CACdA,CAAAA,CAAE,iBAAgB,CAClB0b,CAAAA,CAAgB3U,EAAI,EAAA,CAAIA,CAAAA,CAAI,IAAI,EAClC,CAAA,CACA,UAAU,iEAAA,CAEV,QAAA,CAAA9N,IAACmH,MAAAA,CAAA,CAAO,SAAA,CAAU,SAAA,CAAU,CAAA,CAC9B,CAEJ,CACF,CAAA,CAEA,OACE/F,KAAC7B,CAAAA,CAAA,CACC,UAAA6B,IAAAA,CAAClB,CAAAA,CAAA,CAAW,SAAA,CAAU,2DAAA,CACpB,UAAAF,GAAAA,CAACM,CAAAA,CAAA,CAAU,QAAA,CAAA,kCAAA,CAAgC,CAAA,CAC3Cc,KAACwB,CAAAA,CAAA,CAAO,IAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,QAAS,IAAMyM,CAAAA,CAAgB,IAAI,CAAA,CACnE,QAAA,CAAA,CAAArP,IAACgH,IAAAA,CAAA,CAAK,UAAU,cAAA,CAAe,CAAA,CAAE,WAEnC,CAAA,CAAA,CACF,CAAA,CACAhH,IAACS,CAAAA,CAAA,CACE,SAAA2hB,CAAAA,CAAK,MAAA,GAAW,CAAA,CACfhhB,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,4EACb,QAAA,CAAA,CAAApB,GAAAA,CAACkY,MAAA,CAAM,SAAA,CAAU,qBAAqB,CAAA,CACtClY,GAAAA,CAAC,KAAE,QAAA,CAAA,kBAAA,CAAgB,CAAA,CAAA,CACrB,EAEAA,GAAAA,CAAC8e,EAAAA,CAAA,CACC,OAAA,CAASC,CAAAA,CACT,KAAMqD,CAAAA,CACR,CAAA,CAEJ,CAAA,CAEApiB,GAAAA,CAACiiB,EAAAA,CAAA,CACC,KAAM7S,CAAAA,CACN,YAAA,CAAcC,EACd,QAAA,CAAUmT,CAAAA,CACZ,GACF,CAEJ,CAAA,CCtGA,IAAMK,GAAgB/Q,CAAAA,CAAE,MAAA,CAAO,CAC7B,WAAA,CAAaA,CAAAA,CAAE,QAAO,CAAE,GAAA,CAAI,EAAG,0BAA0B,CAAA,CACzD,WAAA,CAAaA,CAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAA,CAAG,0BAA0B,EACzD,kBAAA,CAAoBA,CAAAA,CAAE,QAAO,CAAE,QAAA,GAC/B,cAAA,CAAgBA,CAAAA,CAAE,QAAO,CAAE,QAAA,EAC7B,CAAC,CAAA,CAaYgR,GAAmB,CAAC,CAC/B,IAAA,CAAAxd,CAAAA,CACA,YAAA,CAAA2M,CAAAA,CACA,SAAAiQ,CAAAA,CACA,gBAAA,CAAAa,EAAmB,EACrB,IAA6B,CAC3B,IAAM,CAACxb,CAAAA,CAAWuJ,CAAY,EAAI9K,QAAAA,CAAS,KAAK,EAE1CwJ,CAAAA,CAAOuB,OAAAA,CAAyB,CACpC,QAAA,CAAUC,WAAAA,CAAY6R,EAAa,CAAA,CACnC,aAAA,CAAe,CACb,YAAa,EAAA,CACb,WAAA,CAAa,OACb,kBAAA,CAAoB,EAAA,CACpB,eAAgB,EAClB,CACF,CAAC,CAAA,CAEK1Q,CAAAA,CAAe,MAAO7G,CAAAA,EAA0B,CACpDwF,EAAa,IAAI,CAAA,CACjB,GAAI,CAIF,GAHe,MAAMoR,CAAAA,GAAW5W,CAAI,CAAA,GAGrB,GAAO,CACpBvG,KAAAA,CAAM,MAAM,iEAAiE,CAAA,CAC7E,MACF,CACAyK,CAAAA,CAAK,OAAM,CACXyC,CAAAA,CAAa,EAAK,EACpB,CAAA,MAAS5O,EAAO,CACd,OAAA,CAAQ,MAAM,yBAAA,CAA2BA,CAAK,CAAA,CAC9C0B,KAAAA,CAAM,KAAA,CAAM,kDAAkD,EAChE,CAAA,OAAE,CACA+L,EAAa,KAAK,EACpB,CACF,CAAA,CAEuBiS,EAAiB,GAAA,CAAIC,CAAAA,GAAQ,CAClD,KAAA,CAAOA,CAAAA,CAAI,GACX,KAAA,CAAO,CAAA,EAAGA,EAAI,MAAM,CAAA,EAAGA,CAAAA,CAAI,IAAA,CAAO,CAAA,EAAA,EAAKA,CAAAA,CAAI,IAAI,CAAA,CAAA,CAAA,CAAM,EAAE,EACzD,CAAA,CAAE,EAEF,OACEhjB,GAAAA,CAACyK,EAAAA,CAAA,CAAO,IAAA,CAAMnF,CAAAA,CAAM,aAAc2M,CAAAA,CAChC,QAAA,CAAA7Q,KAAC2J,EAAAA,CAAA,CAAc,UAAU,+CAAA,CACvB,QAAA,CAAA,CAAA/K,GAAAA,CAACiL,EAAAA,CAAA,CACC,QAAA,CAAAjL,IAACmL,EAAAA,CAAA,CAAY,uBAAW,CAAA,CAC1B,CAAA,CAEAnL,IAACuP,EAAAA,CAAA,CAAa,KAAMC,CAAAA,CAClB,QAAA,CAAApO,KAAC,MAAA,CAAA,CAAK,QAAA,CAAUoO,EAAK,YAAA,CAAa2C,CAAY,EAAG,SAAA,CAAU,WAAA,CACzD,QAAA,CAAA,CAAA/Q,IAAAA,CAACkf,EAAAA,CAAA,CAAY,QAAQ,IAAA,CACnB,QAAA,CAAA,CAAAtgB,IAAC0P,CAAAA,CAAA,CACC,KAAK,aAAA,CACL,KAAA,CAAM,eACN,WAAA,CAAY,oBAAA,CACZ,SAAQ,IAAA,CACV,CAAA,CAEA1P,IAACmQ,EAAAA,CAAA,CACC,KAAK,aAAA,CACL,KAAA,CAAM,cAAA,CACN,WAAA,CAAY,qBAAA,CACZ,OAAA,CAAS,CACP,CAAE,KAAA,CAAO,WAAY,KAAA,CAAO,UAAW,EACvC,CAAE,KAAA,CAAO,UAAW,KAAA,CAAO,SAAU,CACvC,CAAA,CACF,CAAA,CAEAnQ,IAAC0P,CAAAA,CAAA,CACC,KAAK,oBAAA,CACL,KAAA,CAAM,sBAAA,CACN,WAAA,CAAY,uBAAA,CACd,CAAA,CAEA1P,IAAC0P,CAAAA,CAAA,CACC,KAAK,gBAAA,CACL,KAAA,CAAM,mBACN,WAAA,CAAY,qBAAA,CACd,GACF,CAAA,CAEAtO,IAAAA,CAAC8J,GAAA,CACC,QAAA,CAAA,CAAAlL,IAAC4C,CAAAA,CAAA,CACC,KAAK,QAAA,CACL,OAAA,CAAQ,SAAA,CACR,OAAA,CAAS,IAAMqP,CAAAA,CAAa,KAAK,CAAA,CACjC,QAAA,CAAU1K,EACX,QAAA,CAAA,QAAA,CAED,CAAA,CACAvH,IAAC4C,CAAAA,CAAA,CAAO,KAAK,QAAA,CAAS,QAAA,CAAU2E,EAC7B,QAAA,CAAAA,CAAAA,CAAY,cAAgB,gBAAA,CAC/B,CAAA,CAAA,CACF,GACF,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CACF,CAEJ,CAAA,CC9GA,IAAM0b,EAAAA,CAAgC,CACpC,CAAE,KAAA,CAAO,mBAAoB,KAAA,CAAO,kBAAmB,EACvD,CAAE,KAAA,CAAO,eAAgB,KAAA,CAAO,cAAe,EAC/C,CAAE,KAAA,CAAO,mBAAoB,KAAA,CAAO,kBAAmB,CAAA,CACvD,CAAE,KAAA,CAAO,gBAAA,CAAkB,MAAO,gBAAiB,CAAA,CACnD,CAAE,KAAA,CAAO,oBAAA,CAAsB,MAAO,yBAA0B,CAAA,CAChE,CAAE,KAAA,CAAO,qBAAA,CAAuB,MAAO,qBAAsB,CAAA,CAC7D,CAAE,KAAA,CAAO,OAAA,CAAS,MAAO,OAAQ,CACnC,CAAA,CAEaC,EAAAA,CAAoB,CAAC,CAChC,WAAAC,CAAAA,CACA,SAAA,CAAAzb,EACA,gBAAA,CAAA0b,CAAAA,CACA,iBAAAC,CAAAA,CACA,oBAAA,CAAA1b,CAAAA,CACA,mBAAA,CAAA4B,CAAAA,CAAsB0Z,EACxB,IAA8B,CAC5B,GAAM,CAACrb,CAAAA,CAAaC,CAAc,EAAI7B,QAAAA,CAAS,KAAK,CAAA,CAC9C,CAAC8B,CAAAA,CAAkBC,CAAmB,EAAI/B,QAAAA,CAAS,KAAK,EACxD,CAACgC,CAAAA,CAAcC,CAAe,CAAA,CAAIjC,QAAAA,CAAsB,IAAI,CAAA,CAC5D,CAACkC,EAAcC,CAAe,CAAA,CAAInC,SAAS,EAAE,CAAA,CAC7C,CAAC/E,CAAAA,CAAamH,CAAc,CAAA,CAAIpC,QAAAA,CAAS,EAAE,CAAA,CAC3C,CAACqC,CAAAA,CAAcC,CAAe,EAAItC,QAAAA,CAAS,EAAE,EAC7C,CAACuC,CAAAA,CAAiBC,CAAkB,CAAA,CAAIxC,QAAAA,CAAkC,IAAI,CAAA,CAC9E,CAACsd,EAAoBC,CAAqB,CAAA,CAAIvd,SAAwB,IAAI,CAAA,CAE1EyC,CAAAA,CAAeC,CAAAA,EACK,CAAC,MAAA,CAAQ,QAAS,MAAA,CAAQ,MAAA,CAAQ,QAAS,MAAM,CAAA,CAClD,KAAKC,CAAAA,EAAOD,CAAAA,CAAK,aAAY,CAAE,QAAA,CAASC,CAAG,CAAC,CAAA,CAG/DC,EAAiB,MAAOC,CAAAA,EAA0B,CACtD,GAAI,CAACA,CAAAA,CAAI,GAAA,CAAK,CACZ9D,EAAAA,CAAM,CAAE,KAAA,CAAO,iBAAA,CAAmB,YAAa,uBAAA,CAAyB,OAAA,CAAS,aAAc,CAAC,CAAA,CAChG,MACF,CAEA,GAAI,CAEF,IAAMye,CAAAA,CAAO,MADI,MAAM,KAAA,CAAM3a,EAAI,GAAG,CAAA,EACR,IAAA,EAAK,CAC3B4a,EAAAA,CAAM,MAAA,CAAO,IAAI,eAAA,CAAgBD,CAAI,EACrCE,EAAAA,CAAO,QAAA,CAAS,cAAc,GAAG,CAAA,CACvCA,GAAK,IAAA,CAAOD,EAAAA,CACZC,GAAK,QAAA,CAAW7a,CAAAA,CAAI,KACpB,QAAA,CAAS,IAAA,CAAK,YAAY6a,EAAI,CAAA,CAC9BA,EAAAA,CAAK,KAAA,EAAM,CACX,QAAA,CAAS,KAAK,WAAA,CAAYA,EAAI,EAC9B,MAAA,CAAO,GAAA,CAAI,gBAAgBD,EAAG,CAAA,CAC9B1e,GAAM,CAAE,KAAA,CAAO,mBAAoB,WAAA,CAAa,CAAA,YAAA,EAAe8D,EAAI,IAAI,CAAA,CAAG,CAAC,EAC7E,CAAA,KAAgB,CAEd,MAAA,CAAO,IAAA,CAAKA,CAAAA,CAAI,IAAK,QAAQ,CAAA,CAC7B9D,GAAM,CAAE,KAAA,CAAO,WAAY,WAAA,CAAa,CAAA,QAAA,EAAW8D,EAAI,IAAI,CAAA,WAAA,CAAc,CAAC,EAC5E,CACF,EAEMC,EAAAA,CAAoB/B,CAAAA,EAA2C,CACnE,IAAMgC,EAAAA,CAAOhC,CAAAA,CAAE,MAAA,CAAO,KAAA,GAAQ,CAAC,EAC1BgC,EAAAA,GAELd,CAAAA,CAAgBc,EAAI,CAAA,CACpBZ,CAAAA,CAAgBY,GAAK,IAAI,CAAA,EAC3B,EAEMC,EAAAA,CAAqB,SAAY,CACrC,GAAI,CAAChB,GAAgB,CAACE,CAAAA,EAAgB,CAACG,CAAAA,CAAc,CACnDtD,EAAAA,CAAM,CACJ,KAAA,CAAO,qBAAA,CACP,YAAa,oCAAA,CACb,OAAA,CAAS,aACX,CAAC,CAAA,CACD,MACF,CAEA8C,CAAAA,CAAe,IAAI,CAAA,CAEnB,GAAI,CACF,MAAMub,CAAAA,CAAiBpb,EAAc,CACnC,IAAA,CAAME,EACN,WAAA,CAAajH,CAAAA,CACb,IAAA,CAAMoH,CACR,CAAC,CAAA,CAEDtD,GAAM,CACJ,KAAA,CAAO,oBACP,WAAA,CAAa,CAAA,EAAGmD,CAAY,CAAA,sBAAA,CAC9B,CAAC,EACDH,CAAAA,CAAoB,CAAA,CAAK,EACzBxB,CAAAA,GACF,MAAgB,CACdxB,EAAAA,CAAM,CACJ,KAAA,CAAO,eAAA,CACP,WAAA,CAAa,8CAAA,CACb,OAAA,CAAS,aACX,CAAC,EACH,CAAA,OAAE,CACA8C,CAAAA,CAAe,KAAK,EACtB,CACF,CAAA,CAEMtB,EAAY,IAAM,CACtB0B,EAAgB,IAAI,CAAA,CACpBE,EAAgB,EAAE,CAAA,CAClBC,EAAe,EAAE,CAAA,CACjBE,CAAAA,CAAgB,EAAE,CAAA,CAClB,IAAMW,EAAY,QAAA,CAAS,cAAA,CAAe,aAAa,CAAA,CACnDA,CAAAA,GAAWA,EAAU,KAAA,CAAQ,EAAA,EACnC,EAEMC,CAAAA,CAAqB,IAAM,CAC/BnB,CAAAA,CAAoB,KAAK,EACzBxB,CAAAA,GACF,EAEMod,CAAAA,CAAe,MAAO9a,CAAAA,EAA0B,CACpD,GAAI,CAACwa,EAAkB,CACrBte,EAAAA,CAAM,CACJ,KAAA,CAAO,sBAAA,CACP,YAAa,iCAAA,CACb,OAAA,CAAS,aACX,CAAC,CAAA,CACD,MACF,CAEAwe,CAAAA,CAAsB1a,EAAI,EAAE,CAAA,CAC5B,GAAI,CAEF,GADe,MAAMwa,CAAAA,CAAiBxa,CAAAA,CAAI,EAAE,IAC7B,CAAA,CAAA,CAAO,CACpB9D,GAAM,CACJ,KAAA,CAAO,gBACP,WAAA,CAAa,iDAAA,CACb,QAAS,aACX,CAAC,EACD,MACF,CAEAA,GAAM,CAAE,KAAA,CAAO,mBAAoB,WAAA,CAAa8D,CAAAA,CAAI,IAAK,CAAC,CAAA,CAEtDN,CAAAA,EAAiB,KAAOM,CAAAA,CAAI,EAAA,EAC9BL,EAAmB,IAAI,EAE3B,MAAY,CACVzD,EAAAA,CAAM,CACJ,KAAA,CAAO,eAAA,CACP,YAAa,iDAAA,CACb,OAAA,CAAS,aACX,CAAC,EACH,QAAE,CACAwe,CAAAA,CAAsB9R,EAAAA,EAASA,EAAAA,GAAS5I,CAAAA,CAAI,EAAA,CAAK,KAAO4I,EAAK,EAC/D,CACF,CAAA,CAEMtI,CAAAA,CAAeC,GACZpJ,GAAAA,CAACqJ,QAAAA,CAAA,CAAS,SAAA,CAAU,SAAA,CAAU,CAAA,CAGjCC,EAAoBF,CAAAA,EAAiB,CACzC,OAAQA,CAAAA,CAAK,WAAA,IACX,KAAK,KAAA,CACH,OAAO,cAAA,CACT,KAAK,OACL,KAAK,KAAA,CACH,OAAO,eAAA,CACT,KAAK,OACL,KAAK,KAAA,CACH,OAAO,gBAAA,CACT,KAAK,MACL,KAAK,MAAA,CACL,KAAK,KAAA,CACH,OAAO,kBACT,QACE,OAAO,uBACX,CACF,CAAA,CAGA,OACEhI,KAAC7B,CAAAA,CAAA,CACC,UAAA6B,IAAAA,CAAClB,CAAAA,CAAA,CAAW,SAAA,CAAU,2DAAA,CACpB,UAAAF,GAAAA,CAACM,CAAAA,CAAA,CAAU,QAAA,CAAA,WAAA,CAAS,CAAA,CACpBc,KAACwB,CAAAA,CAAA,CACC,QAAS,IAAMmF,CAAAA,CAAoB,IAAI,CAAA,CACvC,IAAA,CAAK,IAAA,CACL,QAAQ,OAAA,CACR,SAAA,CAAU,QAEV,QAAA,CAAA,CAAA/H,GAAAA,CAACwJ,OAAA,CAAO,SAAA,CAAU,UAAU,CAAA,CAAE,QAAA,CAAA,CAEhC,GACF,CAAA,CACApI,IAAAA,CAACX,EAAA,CAEE,QAAA,CAAA,CAAAqH,GAAoBjB,YAAAA,CACnBzF,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,4DAAA,CACb,QAAA,CAAA,CAAApB,IAAC,KAAA,CAAA,CACC,SAAA,CAAU,kDACV,OAAA,CAASkJ,CAAAA,CACX,EACA9H,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,0EAAA,CACb,QAAA,CAAA,CAAAA,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yCACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,MAAG,SAAA,CAAU,oBAAA,CAAqB,QAAA,CAAA,iBAAA,CAAe,CAAA,CAClDA,GAAAA,CAAC4C,CAAAA,CAAA,CACC,OAAA,CAAQ,OAAA,CACR,KAAK,IAAA,CACL,SAAA,CAAU,cACV,OAAA,CAASsG,CAAAA,CAET,SAAAlJ,GAAAA,CAAC8G,GAAAA,CAAA,CAAE,SAAA,CAAU,SAAA,CAAU,EACzB,CAAA,CAAA,CACF,CAAA,CAEA1F,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,WAAA,CAEb,QAAA,CAAA,CAAAA,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,6FAAA,CACb,QAAA,CAAA,CAAApB,IAAC,OAAA,CAAA,CACC,IAAA,CAAK,OACL,EAAA,CAAG,oBAAA,CACH,UAAU,QAAA,CACV,QAAA,CAAU8I,GACV,QAAA,CAAUlB,CAAAA,CACZ,EACAxG,IAAAA,CAAC,OAAA,CAAA,CACC,QAAQ,oBAAA,CACR,SAAA,CAAWtC,CAAAA,CACT,iDAAA,CACA8I,CAAAA,EAAe,+BACjB,EAEA,QAAA,CAAA,CAAA5H,GAAAA,CAACwJ,OAAA,CAAO,SAAA,CAAU,gCAAgC,CAAA,CAClDpI,IAAAA,CAAC,OACC,QAAA,CAAA,CAAApB,GAAAA,CAAC,KAAE,SAAA,CAAU,qCAAA,CACV,SAAAgI,CAAAA,CAAe,aAAA,CAAgB,mCAClC,CAAA,CACAhI,GAAAA,CAAC,GAAA,CAAA,CAAE,SAAA,CAAU,oCAAA,CAAqC,QAAA,CAAA,qCAAA,CAElD,GACF,CAAA,CAAA,CACF,CAAA,CAAA,CACF,EAECgI,CAAAA,EACC5G,IAAAA,CAAC,OAAI,SAAA,CAAU,4BAAA,CACb,UAAApB,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,+BAAA,CAAgC,QAAA,CAAA,gBAAA,CAAc,EAC3DA,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,qBAAA,CAAuB,QAAA,CAAAgI,CAAAA,CAAa,IAAA,CAAK,CAAA,CACtD5G,IAAAA,CAAC,KAAE,SAAA,CAAU,+BAAA,CACT,WAAA4G,CAAAA,CAAa,IAAA,CAAO,KAAO,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAA,CAAE,KAAA,CAAA,CAChD,GACF,CAAA,CAGFhI,GAAAA,CAACqH,EAAA,CACC,KAAA,CAAM,gBACN,KAAA,CAAOa,CAAAA,CACP,QAAA,CAAWnB,CAAAA,EAAMoB,CAAAA,CAAgBpB,CAAAA,CAAE,OAAO,KAAK,CAAA,CAC/C,YAAY,qBAAA,CACd,CAAA,CAEA/G,IAACiD,EAAAA,CAAA,CACC,MAAM,aAAA,CACN,KAAA,CAAOhC,EACP,QAAA,CAAW8F,CAAAA,EAAMqB,EAAerB,CAAAA,CAAE,MAAA,CAAO,KAAK,CAAA,CAC9C,WAAA,CAAY,uCAAA,CACZ,IAAA,CAAM,CAAA,CACR,CAAA,CAEA/G,IAACyD,CAAAA,CAAA,CACC,MAAM,eAAA,CACN,KAAA,CAAO4E,EACP,aAAA,CAAeC,CAAAA,CACf,YAAY,sBAAA,CACZ,OAAA,CAASiB,EACX,CAAA,CAAA,CACF,CAAA,CAEAnI,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,kBACb,QAAA,CAAA,CAAApB,GAAAA,CAAC4C,CAAAA,CAAA,CACC,OAAA,CAAQ,SAAA,CACR,QAASsG,CAAAA,CACT,QAAA,CAAUtB,EACV,SAAA,CAAU,QAAA,CACX,kBAED,CAAA,CACA5H,GAAAA,CAAC4C,EAAA,CACC,OAAA,CAASoG,GACT,QAAA,CAAUpB,CAAAA,CACV,UAAU,QAAA,CAET,QAAA,CAAAA,EAAc,cAAA,CAAiB,QAAA,CAClC,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CACA,SAAS,IACX,CAAA,CAGCF,EAAU,MAAA,GAAW,CAAA,CACpBtG,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,4EACb,QAAA,CAAA,CAAApB,GAAAA,CAACqJ,SAAA,CAAS,SAAA,CAAU,qBAAqB,CAAA,CACzCrJ,GAAAA,CAAC,KAAE,QAAA,CAAA,2BAAA,CAAyB,CAAA,CAAA,CAC9B,CAAA,CAEAA,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,YACZ,QAAA,CAAA0H,CAAAA,CAAU,IAAKmB,CAAAA,EACdzH,IAAAA,CAAC,OAEC,SAAA,CAAU,uEAAA,CAGT,UAAAqH,CAAAA,CAAYI,CAAAA,CAAI,IAAI,CAAA,EAAKA,CAAAA,CAAI,KAC5B7I,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,oBAAA,CACb,QAAA,CAAAA,GAAAA,CAAC,KAAA,CAAA,CACC,GAAA,CAAK6I,CAAAA,CAAI,IACT,GAAA,CAAKA,CAAAA,CAAI,KACT,SAAA,CAAU,0BAAA,CACZ,EACF,CAAA,CAGFzH,IAAAA,CAAC,OAAI,SAAA,CAAU,uCAAA,CACb,UAAAA,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wCAAA,CACZ,QAAA,CAAA,CAAA,CAACqH,EAAYI,CAAAA,CAAI,IAAI,CAAA,EACpB7I,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAWlB,EAAGwK,CAAAA,CAAiBT,CAAAA,CAAI,IAAI,CAAC,CAAA,CAC1C,SAAAM,CAAAA,CAAYN,CAAAA,CAAI,IAAI,CAAA,CACvB,CAAA,CAEFzH,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,iBACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,MAAG,SAAA,CAAU,8BAAA,CAAgC,QAAA,CAAA6I,CAAAA,CAAI,IAAA,CAAK,CAAA,CACvD7I,IAAC,MAAA,CAAA,CAAK,SAAA,CAAWlB,EAAG,6DAAA,CAA+DwK,CAAAA,CAAiBT,EAAI,IAAI,CAAC,EAC1G,QAAA,CAAAA,CAAAA,CAAI,KACP,CAAA,CACCA,CAAAA,CAAI,aACH7I,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,8BAAA,CAAgC,QAAA,CAAA6I,CAAAA,CAAI,WAAA,CAAY,CAAA,CAE/DzH,IAAAA,CAAC,KAAE,SAAA,CAAU,oCAAA,CACV,UAAAyH,CAAAA,CAAI,IAAA,CAAK,uBAAgBA,CAAAA,CAAI,UAAA,CAAW,WAAI,IAAI,IAAA,CAAKA,EAAI,UAAU,CAAA,CAAE,oBAAmB,CAAA,CAC3F,CAAA,CAAA,CACF,GACF,CAAA,CACAzH,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yBAAA,CACb,QAAA,CAAA,CAAApB,IAAC4C,CAAAA,CAAA,CACC,QAAQ,OAAA,CACR,IAAA,CAAK,KACL,SAAA,CAAU,aAAA,CACV,QAAS,IAAM4F,CAAAA,CAAmBK,CAAG,CAAA,CAErC,QAAA,CAAA7I,IAACgC,GAAAA,CAAA,CAAI,UAAU,SAAA,CAAU,CAAA,CAC3B,CAAA,CACAhC,GAAAA,CAAC4C,CAAAA,CAAA,CACC,QAAQ,OAAA,CACR,IAAA,CAAK,KACL,SAAA,CAAU,aAAA,CACV,QAAS,IAAMgG,CAAAA,CAAeC,CAAG,CAAA,CAEjC,QAAA,CAAA7I,IAACyJ,QAAAA,CAAA,CAAS,UAAU,SAAA,CAAU,CAAA,CAChC,EACAzJ,GAAAA,CAAC4C,CAAAA,CAAA,CACC,OAAA,CAAQ,OAAA,CACR,IAAA,CAAK,KACL,SAAA,CAAU,yDAAA,CACV,SAAU0gB,CAAAA,GAAuBza,CAAAA,CAAI,GACrC,OAAA,CAAS,IAAM8a,EAAa9a,CAAG,CAAA,CAE/B,SAAA7I,GAAAA,CAACmH,MAAAA,CAAA,CAAO,SAAA,CAAU,SAAA,CAAU,EAC9B,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAAA,CAAA,CA7DK0B,CAAAA,CAAI,EA8DX,CACD,EACH,CAAA,CAIDN,CAAAA,EAAmB1B,aAClBzF,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,4DAAA,CACb,QAAA,CAAA,CAAApB,IAAC,KAAA,CAAA,CACC,SAAA,CAAU,kDACV,OAAA,CAAS,IAAMwI,EAAmB,IAAI,CAAA,CACxC,EACApH,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,oGAAA,CAEb,QAAA,CAAA,CAAAA,IAAAA,CAAC,OAAI,SAAA,CAAU,gDAAA,CACb,UAAAA,IAAAA,CAAC,KAAA,CAAA,CACC,UAAApB,GAAAA,CAAC,IAAA,CAAA,CAAG,UAAU,uBAAA,CAAyB,QAAA,CAAAuI,EAAgB,IAAA,CAAK,CAAA,CAC5DvI,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,gCAAiC,QAAA,CAAAuI,CAAAA,CAAgB,IAAA,CAAK,CAAA,CAAA,CACrE,CAAA,CACAnH,IAAAA,CAAC,OAAI,SAAA,CAAU,YAAA,CACb,UAAAA,IAAAA,CAACwB,CAAAA,CAAA,CAAO,OAAA,CAAQ,SAAA,CAAU,KAAK,IAAA,CAAK,OAAA,CAAS,IAAMgG,CAAAA,CAAeL,CAAe,EAC/E,QAAA,CAAA,CAAAvI,GAAAA,CAACyJ,SAAA,CAAS,SAAA,CAAU,cAAA,CAAe,CAAA,CAAE,WAAA,CAAA,CACvC,CAAA,CACAzJ,IAAC4C,CAAAA,CAAA,CAAO,QAAQ,OAAA,CAAQ,IAAA,CAAK,KAAK,SAAA,CAAU,aAAA,CAAc,QAAS,IAAM4F,CAAAA,CAAmB,IAAI,CAAA,CAC9F,QAAA,CAAAxI,IAAC8G,GAAAA,CAAA,CAAE,UAAU,SAAA,CAAU,CAAA,CACzB,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAGA9G,GAAAA,CAAC,OAAI,SAAA,CAAU,4CAAA,CACZ,SAAAyI,CAAAA,CAAYF,CAAAA,CAAgB,IAAI,CAAA,EAAKA,CAAAA,CAAgB,IACpDvI,GAAAA,CAAC,KAAA,CAAA,CACC,IAAKuI,CAAAA,CAAgB,GAAA,CACrB,IAAKA,CAAAA,CAAgB,IAAA,CACrB,UAAU,sCAAA,CACZ,CAAA,CACEZ,CAAAA,CACFA,CAAAA,CAAqBY,CAAe,CAAA,CAEpCnH,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,oBACb,QAAA,CAAA,CAAApB,GAAAA,CAACqJ,SAAA,CAAS,SAAA,CAAU,+CAA+C,CAAA,CACnErJ,GAAAA,CAAC,KAAE,SAAA,CAAU,qBAAA,CAAuB,SAAAuI,CAAAA,CAAgB,IAAA,CAAK,EACzDvI,GAAAA,CAAC,GAAA,CAAA,CAAE,SAAA,CAAU,4BAAA,CAA6B,QAAA,CAAA,wCAAA,CAAsC,CAAA,CAC/EuI,EAAgB,WAAA,EACfvI,GAAAA,CAAC,KAAE,SAAA,CAAU,8BAAA,CAAgC,SAAAuI,CAAAA,CAAgB,WAAA,CAAY,EAE3EnH,IAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,oCAAA,CAAqC,QAAA,CAAA,CAAA,QAAA,CACzCmH,EAAgB,IAAA,CAAK,sBAAA,CAAgBA,EAAgB,UAAA,CAAW,UAAA,CAAI,IAAI,IAAA,CAAKA,CAAAA,CAAgB,UAAU,EAAE,kBAAA,EAAmB,CAAA,CACrI,GACF,CAAA,CAEJ,CAAA,CAAA,CACF,GACF,CAAA,CACA,QAAA,CAAS,IACX,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAEJ,CAAA,CC7bO,IAAMqb,EAAAA,CAAuBphB,CAAAA,EAAAA,CAAqBA,CAAAA,EAAU,EAAA,EAAI,MAAK,CAAE,WAAA,GAEjEqhB,EAAAA,CAAuBrhB,CAAAA,EAAkC,CACpE,OAAQohB,EAAAA,CAAoBphB,CAAM,CAAA,EAChC,KAAK,UAAA,CACL,KAAK,WACH,OAAO,eAAA,CACT,KAAK,QAAA,CACH,OAAO,aAAA,CACT,KAAK,SAAA,CACH,OAAO,eACT,KAAK,WAAA,CACH,OAAO,gBAAA,CACT,KAAK,UACH,OAAO,cAAA,CACT,QACE,OAAO,WACX,CACF,CAAA,CCRA,IAAMshB,EAAAA,CAAsBthB,CAAAA,EAAoB,CAE9C,OAAQohB,GAAoBphB,CAAM,CAAA,EAChC,KAAK,SAAA,CACH,OAAO,CAAE,MAAA,CAAQ,gBAAA,CAAkB,IAAA,CAAM,cAAe,CAAA,CAC1D,KAAK,UAAA,CACL,KAAK,WACH,OAAO,CAAE,OAAQ,gBAAA,CAAkB,IAAA,CAAM,cAAe,CAAA,CAC1D,KAAK,QAAA,CACH,OAAO,CAAE,MAAA,CAAQ,iBAAkB,IAAA,CAAM,cAAe,EAC1D,KAAK,WAAA,CACH,OAAO,CAAE,MAAA,CAAQ,qBAAsB,IAAA,CAAM,kBAAmB,EAClE,KAAK,SAAA,CACH,OAAO,CAAE,MAAA,CAAQ,mBAAA,CAAqB,IAAA,CAAM,iBAAkB,CAAA,CAChE,QACE,OAAO,CAAE,OAAQ,cAAA,CAAgB,IAAA,CAAM,uBAAwB,CACnE,CACF,EAEMuhB,EAAAA,CAAkBC,CAAAA,EAAiB,CACvC,GAAI,CAACA,EAAK,OAAO,QAAA,CACjB,IAAMC,CAAAA,CAAI,IAAI,IAAA,CAAKD,CAAG,CAAA,CACtB,OAAI,OAAO,KAAA,CAAMC,CAAAA,CAAE,SAAS,CAAA,CAAU,SAC/B,IAAI,IAAA,CAAK,eAAe,MAAA,CAAW,CACxC,KAAM,SAAA,CACN,KAAA,CAAO,UACP,GAAA,CAAK,SACP,CAAC,CAAA,CAAE,MAAA,CAAOA,CAAC,CACb,CAAA,CAEaC,EAAAA,CAAiB,CAAC,CAAE,UAAA,CAAAC,EAAY,gBAAA,CAAAC,CAAAA,CAAkB,UAAA3kB,CAAU,CAAA,GAA2B,CAClG,GAAI,CAAC0kB,EAAY,OAAO,IAAA,CAExB,IAAME,CAAAA,CAAOP,EAAAA,CAAmBK,EAAW,MAAM,CAAA,CAC3CG,CAAAA,CAAeT,EAAAA,CAAoBM,CAAAA,CAAW,MAAM,EAE1D,OACE/iB,IAAAA,CAAC,UACC,IAAA,CAAK,QAAA,CACL,QAAS,IAAMgjB,CAAAA,GAAmBD,EAAW,EAAE,CAAA,CAC/C,UAAWrlB,CAAAA,CACT,uFAAA,CACAulB,EAAK,MAAA,CACL,8CAAA,CACA,sGACA,wBAAA,CACA5kB,CACF,CAAA,CACA,YAAA,CAAY,CAAA,qBAAA,EAAwBskB,EAAAA,CAAeI,EAAW,OAAO,CAAC,GAEtE,QAAA,CAAA,CAAAnkB,GAAAA,CAACqY,OAAA,CAAO,SAAA,CAAWvZ,EAAG,SAAA,CAAWulB,CAAAA,CAAK,IAAI,CAAA,CAAG,CAAA,CAE7CrkB,IAAC,MAAA,CAAA,CAAK,SAAA,CAAU,sCAAuC,QAAA,CAAA+jB,EAAAA,CAAeI,CAAAA,CAAW,OAAO,CAAA,CAAE,CAAA,CAEzFA,EAAW,MAAA,CACVnkB,GAAAA,CAACsB,EAAA,CAAM,OAAA,CAASgjB,EAAc,SAAA,CAAU,aAAA,CACrC,SAAAH,CAAAA,CAAW,MAAA,CACd,EAEAnkB,GAAAA,CAAC,MAAA,CAAA,CAAK,UAAU,+BAAA,CAAgC,QAAA,CAAA,QAAA,CAAC,EAGnDA,GAAAA,CAACsM,YAAAA,CAAA,CACC,aAAA,CAAY,MAAA,CACZ,SAAA,CAAWxN,EACT,yCAAA,CACAulB,CAAAA,CAAK,KACL,qDACF,CAAA,CACF,GAEF,CAEJ,CAAA,KCLaE,EAAAA,CAAqB,CAAC,CACjC,QAAA,CAAAC,CAAAA,CACA,eAAA,CAAAC,CAAAA,CACA,oBAAA,CAAAtJ,CAAAA,CACA,WAAAgJ,CAAAA,CACA,gBAAA,CAAAC,EACA,YAAA,CAAAM,CAAAA,CAAe,KACf,YAAA,CAAAC,CAAAA,CACA,kBAAAC,CAAAA,CACA,gBAAA,CAAAC,EACA,aAAA,CAAAC,CAAAA,CACA,iBAAAC,CAAAA,CACA,aAAA,CAAAC,EACA,yBAAA,CAAArJ,CAAAA,CACA,cAAA,CAAAsJ,CAAAA,CACA,mBAAA,CAAAC,CAAAA,CACA,oBAAAC,CAAAA,CACA,oBAAA,CAAAC,EACA,wBAAA,CAAAC,CAAAA,CACA,aAAAC,CAAAA,CACA,eAAA,CAAAC,EACA,UAAA,CAAAlD,CAAAA,CACA,SAAAC,CAAAA,CACA,WAAA,CAAAC,EACA,gBAAA,CAAAa,CAAAA,CACA,iBAAAC,EAAAA,CACA,oBAAA,CAAA1b,EAAAA,CACA,gBAAA,CAAA2T,CAAAA,CACA,kBAAA,CAAAC,EACA,0BAAA,CAAAC,CAAAA,CACA,kBAAAC,CAAAA,CACA,gBAAA,CAAAC,EACA,gBAAA,CAAAL,CACF,IAA+B,CAC7B,GAAM,CAACmK,EAAAA,CAAsBC,CAAuB,EAAIzf,QAAAA,CAAS,KAAK,EAEhE0f,EAAAA,CAAyB,MAAOpa,EAAAA,EAA0B,CAC9D,GAAI,CAACga,EACH,MAAM,IAAI,MAAM,oCAAoC,CAAA,CAEtD,MAAMA,CAAAA,CAAaha,EAAI,EACzB,CAAA,CAEMnK,EAAAA,CAAgB,CACpB,CACE,KAAA,CAAO,UACP,OAAA,CAAS,SAAA,CACT,QAASikB,CAAAA,CACT,IAAA,CAAMO,MACR,CAAA,CACA,CACE,KAAA,CAAO,eACP,OAAA,CAAS,SAAA,CACT,QAASN,CAAAA,CACT,IAAA,CAAMnN,KACR,CACF,CAAA,CAEA,OACE9W,IAAAA,CAAC4c,EAAAA,CAAA,CACC,KAAA,CACE5c,IAAAA,CAAC,OAAI,SAAA,CAAU,yBAAA,CACb,UAAApB,GAAAA,CAAC,MAAA,CAAA,CAAM,QAAA,CAAAwkB,CAAAA,CAAS,YAAA,CAAa,CAAA,CAC7BxkB,IAACqd,EAAAA,CAAA,CACC,MAAM,EAAA,CACN,KAAA,CAAOyH,EACP,OAAA,CAASE,CAAAA,CACT,SAAUC,CAAAA,CACR,WAAA,CAAc9lB,IACZa,GAAAA,CAAC0c,EAAAA,CAAA,CAAY,MAAA,CAAQvd,EAAAA,CAAM,aAAY,CAAU,qBAAA,CAAqB,IAAA,CAAC,CAAA,CAE3E,SAAA,CAAU,cAAA,CACZ,EACAa,GAAAA,CAAC8c,EAAAA,CAAA,CAAe,MAAA,CAAQ0H,CAAAA,CAAS,UAAW,CAAA,CAC5CxkB,GAAAA,CAACid,GAAA,CAAgB,IAAA,CAAMuH,EAAS,IAAA,CAAM,CAAA,CACtCxkB,IAACkd,EAAAA,CAAA,CAAa,QAASsH,CAAAA,CAAS,OAAA,CAAS,CAAA,CAAA,CAC3C,CAAA,CAEF,OAAA,CAASrjB,EAAAA,CACT,cAAenB,GAAAA,CAACkkB,EAAAA,CAAA,CAAe,UAAA,CAAYC,CAAAA,CAAY,iBAAkBC,CAAAA,CAAkB,CAAA,CAC3F,QAAA,CAAS,MAAA,CAET,QAAA,CAAA,CAAAhjB,IAAAA,CAAC,OAAI,SAAA,CAAU,6CAAA,CAEb,UAAAA,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,kBAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAACkb,EAAAA,CAAA,CACC,IAAA,CAAMuJ,EACN,oBAAA,CAAsBtJ,CAAAA,CACtB,UAAW4J,CAAAA,CACX,YAAA,CAAcI,EACd,YAAA,CAAcD,CAAAA,CACd,iBAAkB7J,CAAAA,CAClB,gBAAA,CAAkBC,EAClB,kBAAA,CAAoBC,CAAAA,CACpB,2BAA4BC,CAAAA,CAC5B,iBAAA,CAAmBC,EACnB,gBAAA,CAAkBC,CAAAA,CAClB,yBAAA,CAA2BC,CAAAA,CAC7B,CAAA,CAEA3b,GAAAA,CAACmiB,GAAA,CACC,IAAA,CAAMwC,EACN,UAAA,CAAYtC,CAAAA,CACZ,SAAUC,CAAAA,CACV,WAAA,CAAaC,EACf,CAAA,CAEAnhB,IAAAA,CAAC7B,EAAA,CACC,QAAA,CAAA,CAAA6B,KAAClB,CAAAA,CAAA,CAAW,UAAU,2DAAA,CACpB,QAAA,CAAA,CAAAF,GAAAA,CAACM,CAAAA,CAAA,CAAU,QAAA,CAAA,mBAAA,CAAiB,EAC3BukB,CAAAA,CAAiB,MAAA,GAAW,EAC3BzjB,IAAAA,CAACwB,CAAAA,CAAA,CAAO,IAAA,CAAK,IAAA,CAAK,QAAQ,OAAA,CAAQ,OAAA,CAAS,IAAM6iB,CAAAA,CAAwB,IAAI,EAC3E,QAAA,CAAA,CAAAzlB,GAAAA,CAACgH,KAAA,CAAK,SAAA,CAAU,cAAA,CAAe,CAAA,CAAE,SAAA,CAAA,CAEnC,CAAA,CAEA5F,KAACwB,CAAAA,CAAA,CACC,KAAK,IAAA,CACL,OAAA,CAAQ,cACR,OAAA,CAAS,IAAM2iB,IAAkBV,CAAAA,CAAiB,CAAC,EAAE,EAAE,CAAA,CACvD,SAAU,CAACU,CAAAA,CAEX,UAAAvlB,GAAAA,CAACmH,MAAAA,CAAA,CAAO,SAAA,CAAU,cAAA,CAAe,CAAA,CAAE,UAErC,CAAA,CAAA,CAEJ,CAAA,CACAnH,IAACS,CAAAA,CAAA,CACE,SAAAokB,CAAAA,CAAiB,MAAA,GAAW,EAC3BzjB,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,2EAAA,CACb,QAAA,CAAA,CAAApB,IAAC2lB,MAAAA,CAAA,CAAO,UAAU,oBAAA,CAAqB,CAAA,CACvC3lB,GAAAA,CAAC,GAAA,CAAA,CAAE,QAAA,CAAA,4BAAA,CAA0B,CAAA,CAAA,CAC/B,EAEAoB,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,uCAAA,CACb,QAAA,CAAA,CAAApB,IAAC0J,CAAAA,CAAA,CAAU,MAAM,gBAAA,CAAiB,KAAA,CAAOmb,EAAiB,CAAC,CAAA,CAAE,eAAiB,QAAA,CAAK,CAAA,CACnF7kB,IAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,gBAAA,CAAiB,KAAA,CAAOmb,CAAAA,CAAiB,CAAC,CAAA,CAAE,aAAA,EAAiB,SAAK,CAAA,CACnF7kB,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,YAAY,KAAA,CAAOmb,CAAAA,CAAiB,CAAC,CAAA,CAAE,QAAA,EAAY,SAAK,CAAA,CACzE7kB,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,mBAAA,CAAoB,KAAA,CAAOmb,CAAAA,CAAiB,CAAC,EAAE,eAAA,EAAmB,QAAA,CAAK,GAC1F,CAAA,CAEJ,CAAA,CAAA,CACF,EAEA7kB,GAAAA,CAACkjB,EAAAA,CAAA,CACC,UAAA,CAAYsB,CAAAA,CAAS,GACrB,SAAA,CAAWI,CAAAA,CACX,iBAAkBxB,CAAAA,CAClB,gBAAA,CAAkBC,GAClB,oBAAA,CAAsB1b,EAAAA,CACxB,CAAA,CAAA,CACF,CAAA,CAGC+c,CAAAA,EACC1kB,GAAAA,CAAC,OAAI,SAAA,CAAU,SAAA,CACb,SAAAA,GAAAA,CAACqc,EAAAA,CAAA,CAAmB,SAAA,CAAW,KAAA,CAAO,aAAc,IAAM,CAAC,EAAG,CAAA,CAChE,CAAA,CAAA,CAEJ,EAEArc,GAAAA,CAAC8iB,EAAAA,CAAA,CACC,IAAA,CAAM0C,EAAAA,CACN,YAAA,CAAcC,CAAAA,CACd,QAAA,CAAUC,EAAAA,CACV,iBAAkBb,CAAAA,CAAiB,GAAA,CAAK7B,KAAS,CAC/C,EAAA,CAAIA,GAAI,EAAA,CACR,MAAA,CAAQA,GAAI,aAAA,CACZ,aAAA,CAAeA,GAAI,aAAA,CACnB,IAAA,CAAMA,GAAI,eACZ,CAAA,CAAE,EACJ,CAAA,CAAA,CACF,CAEJ,EC3OO,IAAM4C,EAAAA,CAAuB,CAAC,CACnC,OAAA,CAAAC,EACA,cAAA,CAAAC,CAAAA,CACA,cAAA,CAAAC,CACF,CAAA,GAAiC,CAC/B,GAAM,CAACC,CAAAA,CAAcC,CAAe,CAAA,CAAIjgB,QAAAA,CAA0B6f,CAAO,CAAA,CACnE,CAACvgB,EAAM+P,CAAO,CAAA,CAAIrP,SAAS,KAAK,CAAA,CAGtCqL,UAAU,IAAM,CACd4U,EAAgBJ,CAAO,EACzB,CAAA,CAAG,CAACA,CAAO,CAAC,EAEZ,IAAMK,CAAAA,CAA0B,CAAC9V,CAAAA,CAA8BjR,CAAAA,GAAqC,CAClG8mB,CAAAA,CAAgBxU,CAAAA,GAAS,CAAE,GAAGA,CAAAA,CAAM,CAACrB,CAAK,EAAGjR,CAAM,CAAA,CAAE,EACvD,EAEMgnB,CAAAA,CAAqB,IAAM,CAG/B,MAAA,CAAO,OAAA,CAAQH,CAAY,EAAE,OAAA,CAAQ,CAAC,CAACxZ,CAAAA,CAAKrN,CAAK,IAAM,CACrD2mB,CAAAA,CAAetZ,EAA8BrN,CAAK,EACpD,CAAC,CAAA,CAEDkW,CAAAA,CAAQ,KAAK,EACf,CAAA,CAEM+Q,EAAqB,IAAM,CAQ/BH,CAAAA,CAPsC,CACpC,IAAA,CAAM,EAAA,CACN,YAAa,EAAA,CACb,MAAA,CAAQ,GACR,gBAAA,CAAkB,MAAA,CAClB,eAAgB,MAClB,CAC4B,EAC5BF,CAAAA,EAAe,CAEf1Q,EAAQ,KAAK,EACf,EAEA,OACEjU,IAAAA,CAAC2R,GAAA,CAAM,IAAA,CAAMzN,CAAAA,CAAM,YAAA,CAAc+P,CAAAA,CAC/B,QAAA,CAAA,CAAArV,IAACiT,EAAAA,CAAA,CAAa,QAAO,IAAA,CACnB,QAAA,CAAA7R,KAACwB,CAAAA,CAAA,CAAO,OAAA,CAAQ,SAAA,CAAU,SAAA,CAAU,OAAA,CAClC,UAAA5C,GAAAA,CAACqmB,MAAAA,CAAA,CAAO,SAAA,CAAU,SAAA,CAAU,EAAE,SAAA,CAAA,CAEhC,CAAA,CACF,CAAA,CACAjlB,IAAAA,CAACmS,EAAAA,CAAA,CAAa,KAAK,OAAA,CAAQ,SAAA,CAAU,qCACnC,QAAA,CAAA,CAAAvT,GAAAA,CAACyT,GAAA,CACC,QAAA,CAAAzT,IAAC2T,EAAAA,CAAA,CAAW,4BAAgB,CAAA,CAC9B,CAAA,CAEAvS,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,iBACb,QAAA,CAAA,CAAApB,GAAAA,CAACqH,CAAAA,CAAA,CACC,KAAA,CAAM,MAAA,CACN,MAAO2e,CAAAA,CAAa,IAAA,CACpB,SAAWjf,CAAAA,EAAMmf,CAAAA,CAAwB,OAAQnf,CAAAA,CAAE,MAAA,CAAO,KAAK,CAAA,CAC/D,WAAA,CAAY,sBACd,CAAA,CAEA/G,GAAAA,CAACqH,EAAA,CACC,KAAA,CAAM,eACN,KAAA,CAAO2e,CAAAA,CAAa,WAAA,CACpB,QAAA,CAAWjf,CAAAA,EAAMmf,CAAAA,CAAwB,cAAenf,CAAAA,CAAE,MAAA,CAAO,KAAK,CAAA,CACtE,WAAA,CAAY,qBACd,CAAA,CAEA/G,GAAAA,CAACyD,EAAA,CACC,KAAA,CAAM,SACN,KAAA,CAAOuiB,CAAAA,CAAa,OACpB,aAAA,CAAgB7mB,CAAAA,EAAU+mB,EAAwB,QAAA,CAAU/mB,CAAK,CAAA,CACjE,WAAA,CAAY,eAAA,CACZ,OAAA,CAAS,CACP,CAAE,KAAA,CAAO,SAAU,KAAA,CAAO,QAAS,EACnC,CAAE,KAAA,CAAO,WAAY,KAAA,CAAO,UAAW,EACvC,CAAE,KAAA,CAAO,UAAW,KAAA,CAAO,SAAU,EACrC,CAAE,KAAA,CAAO,kBAAA,CAAoB,KAAA,CAAO,kBAAmB,CAAA,CACvD,CAAE,KAAA,CAAO,SAAA,CAAW,MAAO,SAAU,CAAA,CACrC,CAAE,KAAA,CAAO,aAAA,CAAe,MAAO,aAAc,CAAA,CAC7C,CAAE,KAAA,CAAO,mBAAA,CAAqB,MAAO,mBAAoB,CAC3D,EACF,CAAA,CAEAiC,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wBAAA,CACb,QAAA,CAAA,CAAAA,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,YACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,SAAM,SAAA,CAAU,qBAAA,CAAsB,8BAAkB,CAAA,CACzDA,GAAAA,CAACkhB,GAAA,CACC,IAAA,CAAM8E,EAAa,gBAAA,CACnB,YAAA,CAAe7E,GAAS+E,CAAAA,CAAwB,kBAAA,CAAoB/E,CAAI,CAAA,CACxE,WAAA,CAAY,YAAA,CACZ,gBAAgB,QAAA,CAChB,SAAA,CAAU,qBACZ,CAAA,CAAA,CACF,CAAA,CAEA/f,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,YACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,SAAM,SAAA,CAAU,qBAAA,CAAsB,4BAAgB,CAAA,CACvDA,GAAAA,CAACkhB,GAAA,CACC,IAAA,CAAM8E,CAAAA,CAAa,cAAA,CACnB,YAAA,CAAe7E,CAAAA,EAAS+E,EAAwB,gBAAA,CAAkB/E,CAAI,EACtE,WAAA,CAAY,YAAA,CACZ,gBAAgB,QAAA,CAChB,SAAA,CAAU,qBACZ,CAAA,CAAA,CACF,CAAA,CAAA,CACF,GACF,CAAA,CAEA/f,IAAAA,CAACsS,GAAA,CAAY,SAAA,CAAU,QACrB,QAAA,CAAA,CAAA1T,GAAAA,CAAC4C,CAAAA,CAAA,CAAO,OAAA,CAAQ,SAAA,CAAU,QAASwjB,CAAAA,CAAoB,QAAA,CAAA,eAAA,CAEvD,EACApmB,GAAAA,CAAC4C,CAAAA,CAAA,CAAO,OAAA,CAASujB,CAAAA,CAAoB,yBAErC,CAAA,CAAA,CACF,CAAA,CAAA,CACF,GACF,CAEJ,EChIO,IAAMG,EAAAA,CAAe,CAAC,CAC3B,IAAA,CAAA9W,EACA,YAAA,CAAA+W,CAAAA,CACA,qBAAAC,CAAAA,CACA,QAAA,CAAAtE,CACF,CAAA,GAEIliB,GAAAA,CAACuP,GAAA,CAAa,IAAA,CAAMC,EAClB,QAAA,CAAApO,IAAAA,CAAC,QAAK,QAAA,CAAUoO,CAAAA,CAAK,aAAa0S,CAAQ,CAAA,CAAG,SAAA,CAAU,WAAA,CACvD,QAAA,CAAA,CAAA9gB,IAAAA,CAAC7B,EAAA,CAAK,SAAA,CAAU,MACd,QAAA,CAAA,CAAAS,GAAAA,CAAC,OAAI,SAAA,CAAU,kCAAA,CACb,SAAAA,GAAAA,CAAC,IAAA,CAAA,CAAG,UAAU,uCAAA,CAAwC,QAAA,CAAA,sBAAA,CAAoB,EAC5E,CAAA,CAEAoB,IAAAA,CAAC,OAAI,SAAA,CAAU,sDAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC0P,CAAAA,CAAA,CACC,KAAK,MAAA,CACL,KAAA,CAAM,gBACN,WAAA,CAAY,qBAAA,CACZ,SAAQ,IAAA,CACV,CAAA,CAEA1P,IAAC0P,CAAAA,CAAA,CACC,KAAK,WAAA,CACL,KAAA,CAAM,aACN,WAAA,CAAY,kBAAA,CACZ,KAAK,QAAA,CACL,QAAA,CAAQ,IAAA,CACV,CAAA,CAEA1P,GAAAA,CAACmQ,EAAAA,CAAA,CACC,IAAA,CAAK,gBAAA,CACL,MAAM,gBAAA,CACN,WAAA,CAAY,iBACZ,OAAA,CAAS,CACP,CAAE,KAAA,CAAO,KAAA,CAAO,MAAO,KAAM,CAAA,CAC7B,CAAE,KAAA,CAAO,KAAA,CAAO,MAAO,KAAM,CAAA,CAC7B,CAAE,KAAA,CAAO,KAAA,CAAO,KAAA,CAAO,KAAM,CAAA,CAC7B,CAAE,MAAO,UAAA,CAAY,KAAA,CAAO,UAAW,CACzC,CAAA,CACF,EAEAnQ,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,UAAA,CACL,MAAM,WAAA,CACN,WAAA,CAAY,kBACZ,QAAA,CAAQ,IAAA,CACV,CAAA,CAEA1P,GAAAA,CAAC0P,CAAAA,CAAA,CACC,KAAK,KAAA,CACL,KAAA,CAAM,WACN,WAAA,CAAY,gBAAA,CACZ,KAAK,wBAAA,CACP,CAAA,CAEA1P,IAACmQ,EAAAA,CAAA,CACC,KAAK,oBAAA,CACL,KAAA,CAAM,uBACN,WAAA,CAAY,sBAAA,CACZ,QAAS,CACP,CAAE,KAAA,CAAO,iBAAA,CAAmB,KAAA,CAAO,iBAAkB,EACrD,CAAE,KAAA,CAAO,4BAA6B,KAAA,CAAO,iCAAkC,EAC/E,CAAE,KAAA,CAAO,aAAA,CAAe,KAAA,CAAO,oBAAqB,CAAA,CACpD,CAAE,KAAA,CAAO,qBAAA,CAAuB,MAAO,qBAAsB,CAAA,CAC7D,CAAE,KAAA,CAAO,+BAAA,CAAiC,KAAA,CAAO,+BAAgC,CAAA,CACjF,CAAE,MAAO,YAAA,CAAc,KAAA,CAAO,wBAAyB,CAAA,CACvD,CAAE,MAAO,yBAAA,CAA2B,KAAA,CAAO,yBAA0B,CAAA,CACrE,CAAE,MAAO,yBAAA,CAA2B,KAAA,CAAO,yBAA0B,CAAA,CACrE,CAAE,MAAO,QAAA,CAAU,KAAA,CAAO,QAAS,CACrC,CAAA,CACF,CAAA,CAEAnQ,IAAC0P,CAAAA,CAAA,CACC,KAAK,oBAAA,CACL,KAAA,CAAM,sBACN,WAAA,CAAY,aAAA,CACd,EAEA1P,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,eAAA,CACL,MAAM,gBAAA,CACN,WAAA,CAAY,aACZ,IAAA,CAAK,MAAA,CACP,CAAA,CAEA1P,GAAAA,CAAC0P,CAAAA,CAAA,CACC,KAAK,SAAA,CACL,KAAA,CAAM,UACN,WAAA,CAAY,0BAAA,CACd,EAEA1P,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,aAAA,CACL,MAAM,cAAA,CACN,WAAA,CAAY,oBACZ,IAAA,CAAK,2BAAA,CACP,EAEA1P,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,KAAA,CACL,KAAA,CAAM,MACN,WAAA,CAAY,MAAA,CACZ,KAAK,gCAAA,CACP,CAAA,CAEA1P,IAAC0P,CAAAA,CAAA,CACC,KAAK,OAAA,CACL,KAAA,CAAM,QACN,WAAA,CAAY,QAAA,CACZ,KAAK,iCAAA,CACP,CAAA,CAEA1P,IAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,cAAA,CACL,KAAA,CAAM,gBAAA,CACN,YAAY,sBAAA,CACd,CAAA,CAAA,CACF,GACF,CAAA,CAEAtO,IAAAA,CAAC7B,EAAA,CAAK,SAAA,CAAU,MACd,QAAA,CAAA,CAAAS,GAAAA,CAAC,OAAI,SAAA,CAAU,kCAAA,CACb,SAAAA,GAAAA,CAAC,IAAA,CAAA,CAAG,UAAU,uCAAA,CAAwC,QAAA,CAAA,kBAAA,CAAgB,CAAA,CACxE,CAAA,CAEAoB,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,sDAAA,CACb,QAAA,CAAA,CAAApB,IAAC0P,CAAAA,CAAA,CACC,KAAK,eAAA,CACL,KAAA,CAAM,iBACN,WAAA,CAAY,sBAAA,CACd,EAEA1P,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,eAAA,CACL,MAAM,iBAAA,CACN,WAAA,CAAY,iCAAA,CACd,CAAA,CAEA1P,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,cAAA,CACL,MAAM,MAAA,CACN,WAAA,CAAY,aACd,CAAA,CAEA1P,GAAAA,CAAC0P,EAAA,CACC,IAAA,CAAK,gBACL,KAAA,CAAM,OAAA,CACN,YAAY,aAAA,CACd,CAAA,CAEA1P,IAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,oBAAA,CACL,KAAA,CAAM,aAAA,CACN,YAAY,OAAA,CACd,CAAA,CAEA1P,IAAC0P,CAAAA,CAAA,CACC,KAAK,qBAAA,CACL,KAAA,CAAM,eACN,WAAA,CAAY,UAAA,CACZ,SAAQ,IAAA,CACV,CAAA,CAEA1P,IAAC0P,CAAAA,CAAA,CACC,KAAK,cAAA,CACL,KAAA,CAAM,cAAA,CACN,WAAA,CAAY,eAAA,CACd,CAAA,CAAA,CACF,GACF,CAAA,CAEAtO,IAAAA,CAAC7B,EAAA,CAAK,SAAA,CAAU,MACd,QAAA,CAAA,CAAAS,GAAAA,CAAC,OAAI,SAAA,CAAU,kCAAA,CACb,SAAAA,GAAAA,CAAC,IAAA,CAAA,CAAG,UAAU,uCAAA,CAAwC,QAAA,CAAA,qBAAA,CAAmB,EAC3E,CAAA,CAEAoB,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,sDAAA,CACb,QAAA,CAAA,CAAApB,IAAC0P,CAAAA,CAAA,CACC,KAAK,wBAAA,CACL,KAAA,CAAM,qBACN,WAAA,CAAY,kBAAA,CACd,EAEA1P,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,uBAAA,CACL,MAAM,mBAAA,CACN,WAAA,CAAY,kBACd,CAAA,CAEA1P,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,oBAAA,CACL,MAAM,eAAA,CACN,WAAA,CAAY,uBACZ,IAAA,CAAK,OAAA,CACP,EAEA1P,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,oBAAA,CACL,MAAM,eAAA,CACN,WAAA,CAAY,oBACd,CAAA,CAAA,CACF,CAAA,CAAA,CACF,GACA,CAAA,CACF,CAAA,CC/MG,IAAM+W,GAAqB,CAAC,CACjC,KAAAjX,CAAAA,CACA,YAAA,CAAA+W,EACA,oBAAA,CAAAC,CAAAA,CACA,SAAAtE,CAAAA,CACA,QAAA,CAAAxR,CACF,CAAA,GAEI1Q,GAAAA,CAACge,GAAA,CACC,KAAA,CAAM,kBACN,OAAA,CAAS,CACP,CAAE,KAAA,CAAO,QAAA,CAAU,OAAA,CAAS,UAAW,OAAA,CAAStN,CAAS,EACzD,CAAE,KAAA,CAAO,kBAAmB,OAAA,CAAS,SAAA,CAAW,QAASlB,CAAAA,CAAK,YAAA,CAAa0S,CAAQ,CAAE,CACvF,EAEA,QAAA,CAAAliB,GAAAA,CAACsmB,GAAA,CACC,IAAA,CAAM9W,CAAAA,CACN,YAAA,CAAc+W,CAAAA,CACd,oBAAA,CAAsBC,EACtB,QAAA,CAAUtE,CAAAA,CACZ,EACF,ECZG,IAAMwE,EAAAA,CAA2B,CAAC,CACvC,QAAAb,CAAAA,CACA,cAAA,CAAAC,EACA,cAAA,CAAAC,CACF,IAAqC,CACnC,GAAM,CAACC,CAAAA,CAAcC,CAAe,EAAIjgB,QAAAA,CAA8B6f,CAAO,EACvE,CAACvgB,CAAAA,CAAM+P,CAAO,CAAA,CAAIrP,QAAAA,CAAS,KAAK,CAAA,CAGtCqL,SAAAA,CAAU,IAAM,CACd4U,CAAAA,CAAgBJ,CAAO,EACzB,CAAA,CAAG,CAACA,CAAO,CAAC,CAAA,CAEZ,IAAMK,CAAAA,CAA0B,CAAC9V,CAAAA,CAAkCjR,IAAqC,CACtG8mB,CAAAA,CAAgBxU,IAAS,CAAE,GAAGA,EAAM,CAACrB,CAAK,EAAGjR,CAAM,CAAA,CAAE,EACvD,EAEMgnB,CAAAA,CAAqB,IAAM,CAE/B,MAAA,CAAO,OAAA,CAAQH,CAAY,CAAA,CAAE,OAAA,CAAQ,CAAC,CAACxZ,CAAAA,CAAKrN,CAAK,CAAA,GAAM,CACrD2mB,EAAetZ,CAAAA,CAAkCrN,CAAK,EACxD,CAAC,CAAA,CAEDkW,CAAAA,CAAQ,KAAK,EACf,CAAA,CAEM+Q,EAAqB,IAAM,CAQ/BH,EAP0C,CACxC,IAAA,CAAM,GACN,IAAA,CAAM,EAAA,CACN,OAAQ,EAAA,CACR,gBAAA,CAAkB,OAClB,cAAA,CAAgB,MAClB,CAC4B,CAAA,CAC5BF,CAAAA,GAEA1Q,CAAAA,CAAQ,KAAK,EACf,CAAA,CAEA,OACEjU,IAAAA,CAAC2R,GAAA,CAAM,IAAA,CAAMzN,EAAM,YAAA,CAAc+P,CAAAA,CAC/B,UAAArV,GAAAA,CAACiT,EAAAA,CAAA,CAAa,OAAA,CAAO,IAAA,CACnB,SAAA7R,IAAAA,CAACwB,CAAAA,CAAA,CAAO,OAAA,CAAQ,SAAA,CAAU,UAAU,OAAA,CAClC,QAAA,CAAA,CAAA5C,GAAAA,CAACqmB,MAAAA,CAAA,CAAO,SAAA,CAAU,UAAU,CAAA,CAAE,SAAA,CAAA,CAEhC,EACF,CAAA,CACAjlB,IAAAA,CAACmS,GAAA,CAAa,IAAA,CAAK,QAAQ,SAAA,CAAU,oCAAA,CACnC,UAAAvT,GAAAA,CAACyT,EAAAA,CAAA,CACC,QAAA,CAAAzT,GAAAA,CAAC2T,GAAA,CAAW,QAAA,CAAA,sBAAA,CAAoB,CAAA,CAClC,CAAA,CAEAvS,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,gBAAA,CACb,QAAA,CAAA,CAAApB,IAACqH,CAAAA,CAAA,CACC,MAAM,MAAA,CACN,KAAA,CAAO2e,EAAa,IAAA,CACpB,QAAA,CAAWjf,GAAMmf,CAAAA,CAAwB,MAAA,CAAQnf,EAAE,MAAA,CAAO,KAAK,EAC/D,WAAA,CAAY,yBAAA,CACd,CAAA,CAEA/G,GAAAA,CAACyD,CAAAA,CAAA,CACC,MAAM,MAAA,CACN,KAAA,CAAOuiB,EAAa,IAAA,CACpB,aAAA,CAAgB7mB,GAAU+mB,CAAAA,CAAwB,MAAA,CAAQ/mB,CAAK,CAAA,CAC/D,WAAA,CAAY,cACZ,OAAA,CAAS,CACP,CAAE,KAAA,CAAO,UAAA,CAAY,MAAO,UAAW,CAAA,CACvC,CAAE,KAAA,CAAO,YAAA,CAAc,KAAA,CAAO,YAAa,CAC7C,CAAA,CACF,EAEAa,GAAAA,CAACyD,CAAAA,CAAA,CACC,KAAA,CAAM,QAAA,CACN,MAAOuiB,CAAAA,CAAa,MAAA,CACpB,cAAgB7mB,CAAAA,EAAU+mB,CAAAA,CAAwB,SAAU/mB,CAAK,CAAA,CACjE,YAAY,eAAA,CACZ,OAAA,CAAS,CACP,CAAE,KAAA,CAAO,QAAA,CAAU,MAAO,QAAS,CAAA,CACnC,CAAE,KAAA,CAAO,UAAA,CAAY,MAAO,UAAW,CAAA,CACvC,CAAE,KAAA,CAAO,SAAA,CAAW,MAAO,SAAU,CAAA,CACrC,CAAE,KAAA,CAAO,WAAA,CAAa,MAAO,WAAY,CAC3C,CAAA,CACF,CAAA,CAEAiC,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wBAAA,CACb,QAAA,CAAA,CAAAA,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,YACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,SAAM,SAAA,CAAU,qBAAA,CAAsB,8BAAkB,CAAA,CACzDA,GAAAA,CAACkhB,GAAA,CACC,IAAA,CAAM8E,EAAa,gBAAA,CACnB,YAAA,CAAe7E,CAAAA,EAAS+E,CAAAA,CAAwB,kBAAA,CAAoB/E,CAAI,EACxE,WAAA,CAAY,YAAA,CACZ,gBAAgB,QAAA,CAChB,SAAA,CAAU,qBACZ,CAAA,CAAA,CACF,CAAA,CAEA/f,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,YACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,SAAM,SAAA,CAAU,qBAAA,CAAsB,4BAAgB,CAAA,CACvDA,GAAAA,CAACkhB,EAAAA,CAAA,CACC,IAAA,CAAM8E,CAAAA,CAAa,eACnB,YAAA,CAAe7E,CAAAA,EAAS+E,EAAwB,gBAAA,CAAkB/E,CAAI,EACtE,WAAA,CAAY,YAAA,CACZ,gBAAgB,QAAA,CAChB,SAAA,CAAU,qBACZ,CAAA,CAAA,CACF,CAAA,CAAA,CACF,GACF,CAAA,CAEA/f,IAAAA,CAACsS,GAAA,CAAY,SAAA,CAAU,YAAA,CACrB,QAAA,CAAA,CAAA1T,GAAAA,CAAC4C,CAAAA,CAAA,CAAO,OAAA,CAAQ,SAAA,CAAU,QAASwjB,CAAAA,CAAoB,SAAA,CAAU,SAAS,QAAA,CAAA,eAAA,CAE1E,CAAA,CACApmB,IAAC4C,CAAAA,CAAA,CAAO,QAASujB,CAAAA,CAAoB,SAAA,CAAU,SAAS,QAAA,CAAA,eAAA,CAExD,CAAA,CAAA,CACF,GACF,CAAA,CAAA,CACF,CAEJ,CAAA,CC9HO,IAAMQ,GAAqB,CAAC,CACjC,MAAAC,CAAAA,CACA,OAAA,CAAAf,EACA,cAAA,CAAAC,CAAAA,CACA,eAAAC,CAAAA,CACA,oBAAA,CAAAc,CACF,CAAA,GAEIzlB,IAAAA,CAAC,OAAI,SAAA,CAAU,2CAAA,CAEb,QAAA,CAAA,CAAApB,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,gGACb,QAAA,CAAAA,GAAAA,CAAC,OAAI,SAAA,CAAU,wCAAA,CACb,SAAAoB,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,mCAAA,CACb,QAAA,CAAA,CAAApB,IAAC,KAAA,CAAA,CACC,QAAA,CAAAA,IAAC,IAAA,CAAA,CAAG,SAAA,CAAU,qCAAqC,QAAA,CAAA,gBAAA,CAAc,CAAA,CACnE,CAAA,CACAoB,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,0BACb,QAAA,CAAA,CAAApB,GAAAA,CAAC0mB,GAAA,CACC,OAAA,CAASb,EACT,cAAA,CAAgBC,CAAAA,CAChB,eAAgBC,CAAAA,CAClB,CAAA,CACA/lB,IAAC4C,CAAAA,CAAA,CAAO,QAASikB,CAAAA,CAAsB,QAAA,CAAA,qBAAA,CAEvC,GACF,CAAA,CAAA,CACF,CAAA,CACF,CAAA,CACF,CAAA,CAGA7mB,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wBAAA,CACb,QAAA,CAAAA,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yDACb,QAAA,CAAAA,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,2BAAA,CACZ,QAAA,CAAA4mB,EACH,CAAA,CACF,CAAA,CACF,GACF,ECbG,IAAME,GAA4B,CACvC,KAAA,CAAO,kBAAA,CACP,KAAA,CAAO,mBAAA,CACP,WAAA,CAAa,aACb,QAAA,CAAU,cAAA,CACV,OAAQ,YAAA,CACR,OAAA,CAAS,WACT,OAAA,CAAS,CACP,MAAO,kBAAA,CACP,KAAA,CAAO,YACP,IAAA,CAAM,UAAA,CACN,MAAO,IAAA,CACP,UAAA,CAAY,QACZ,WAAA,CAAa,IAAA,CACb,IAAA,CAAM,SACR,CACF,CAAA,KCvCaC,EAAAA,CAA0B,CAAC,CACtC,IAAA,CAAAzb,CAAAA,CACA,aAAA8P,CAAAA,CACA,SAAA,CAAA9J,EAAY,KAAA,CACZ,YAAA,CAAAd,EACA,WAAA,CAAA4J,CAAAA,CAAc,KAAA,CACd,SAAA,CAAA3a,CAAAA,CACA,aAAA,CAAAunB,CACF,CAAA,GAAoC,CAClC,IAAMxX,CAAAA,CAAOa,EAAAA,CAAyC,CACpD,MAAA,CAAQmK,EAAAA,CACR,cAAe,CAAE,GAAGsM,GAA2B,GAAGxb,CAAK,EACvD,cAAA,CAAgBgG,CAAAA,CAChB,aAAAd,CAAAA,CACA,MAAA,CAAQ4K,CACV,CAAC,CAAA,CAEKlB,CAAAA,CACJla,IAACuP,EAAAA,CAAA,CAAa,KAAMC,CAAAA,CAClB,QAAA,CAAApO,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,YACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,OAAI,SAAA,CAAU,uCAAA,CACb,UAAApB,GAAAA,CAACmQ,EAAAA,CAAA,CACA,QAAA,CAAU,IAAA,CACT,IAAA,CAAK,QAAA,CACL,KAAA,CAAM,iBAAA,CACN,YAAY,yBAAA,CACZ,OAAA,CAAS,CACP,CAAE,KAAA,CAAO,aAAc,KAAA,CAAO,YAAa,EAC3C,CAAE,KAAA,CAAO,cAAe,KAAA,CAAO,aAAc,EAC7C,CAAE,KAAA,CAAO,gBAAiB,KAAA,CAAO,eAAgB,CAAA,CACjD,CAAE,KAAA,CAAO,gBAAA,CAAkB,MAAO,gBAAiB,CACrD,EACF,CAAA,CAEAnQ,GAAAA,CAAC0P,EAAA,CACD,QAAA,CAAU,KACR,IAAA,CAAK,SAAA,CACL,MAAOF,CAAAA,CAAK,KAAA,CAAM,QAAQ,CAAA,GAAM,YAAA,CAAe,aACxCA,CAAAA,CAAK,KAAA,CAAM,QAAQ,CAAA,GAAM,aAAA,CAAgB,aAAA,CACzCA,EAAK,KAAA,CAAM,QAAQ,IAAM,eAAA,CAAkB,eAAA,CAAkB,iBACpE,WAAA,CAAY,gBAAA,CACd,EAEAxP,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,OAAA,CACL,MAAM,OAAA,CACN,IAAA,CAAK,QACL,WAAA,CAAY,qBAAA,CACd,CAAA,CAEA1P,GAAAA,CAAC0P,CAAAA,CAAA,CACC,KAAK,OAAA,CACL,KAAA,CAAM,eACN,IAAA,CAAK,KAAA,CACL,YAAY,oBAAA,CACd,CAAA,CAEA1P,IAAC0P,CAAAA,CAAA,CACC,KAAK,aAAA,CACL,KAAA,CAAM,gBACN,IAAA,CAAK,MAAA,CACL,YAAY,sBAAA,CACd,CAAA,CAEA1P,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,WACL,KAAA,CAAM,WAAA,CACN,YAAY,iBAAA,CACd,CAAA,CAAA,CACF,EAEAtO,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wBAAA,CACb,QAAA,CAAA,CAAApB,IAAC0P,CAAAA,CAAA,CACC,KAAK,eAAA,CACL,KAAA,CAAM,iBACN,WAAA,CAAY,sBAAA,CACd,CAAA,CAEA1P,GAAAA,CAAC0P,CAAAA,CAAA,CACC,KAAK,eAAA,CACL,KAAA,CAAM,6BACN,WAAA,CAAY,kCAAA,CACd,GACF,CAAA,CACAtO,IAAAA,CAAC,OAAI,SAAA,CAAU,uCAAA,CACb,UAAApB,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,cAAA,CACL,MAAM,MAAA,CACN,WAAA,CAAY,YAAA,CACd,CAAA,CAEA1P,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,eAAA,CACL,MAAM,OAAA,CACN,WAAA,CAAY,cACd,CAAA,CAEA1P,GAAAA,CAAC0P,EAAA,CACC,IAAA,CAAK,qBACL,KAAA,CAAM,aAAA,CACN,YAAY,mBAAA,CACd,CAAA,CAEA1P,IAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,qBAAA,CACL,KAAA,CAAM,cAAA,CACN,YAAY,UAAA,CACd,CAAA,CAAA,CACF,GACF,CAAA,CACF,CAAA,CAGIoM,EAAatM,CAAAA,CAAK,KAAA,GAClByX,CAAAA,CAAcnL,CAAAA,EAAY,SAAW,YAAA,CAAe,YAAA,CACtCA,GAAY,MAAA,GAAW,aAAA,CAAgB,cACvCA,CAAAA,EAAY,MAAA,GAAW,eAAA,CAAkB,eAAA,CAAkB,gBAAA,CAEzE3B,CAAAA,CACJ/Y,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,YACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,OAAI,SAAA,CAAU,wBAAA,CACb,UAAApB,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,iBAAA,CAAkB,MACjCoS,CAAAA,EAAY,MAAA,GAAW,aAAe,YAAA,CACtCA,CAAAA,EAAY,MAAA,GAAW,aAAA,CAAgB,aAAA,CACvCA,CAAAA,EAAY,SAAW,eAAA,CAAkB,eAAA,CAAkB,iBAC3D,MAAA,CAAO,YAAA,CAAa,EACtB9b,GAAAA,CAAC0J,CAAAA,CAAA,CACC,KAAA,CAAOud,CAAAA,CACP,MACEnL,CAAAA,EAAY,OAAA,EAAWA,GAAY,MAAA,EAAUkL,CAAAA,CAC3ChnB,IAAC,QAAA,CAAA,CACC,OAAA,CAAU+G,CAAAA,EAAM,CACdA,CAAAA,CAAE,cAAA,GACFigB,CAAAA,CAAclL,CAAAA,CAAW,OAAQA,CAAAA,CAAW,OAAO,EACrD,CAAA,CACA,SAAA,CAAU,oEAET,QAAA,CAAAA,CAAAA,EAAY,SAAW,GAAA,CAC1B,CAAA,CACGA,GAAY,OAAA,EAAW,GAAA,CAE9B,OAAO,YAAA,CACT,CAAA,CAAA,CACF,CAAA,CACA1a,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yBACb,QAAA,CAAA,CAAApB,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,QAAQ,KAAA,CAAOoS,CAAAA,EAAY,KAAA,EAAS,GAAA,CAAK,MAAA,CAAO,YAAA,CAAa,EAC9E9b,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,cAAA,CAAe,MAAOoS,CAAAA,EAAY,KAAA,EAAS,GAAA,CAAK,MAAA,CAAO,YAAA,CAAa,CAAA,CAAA,CACvF,EACA1a,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wBAAA,CACb,QAAA,CAAA,CAAApB,IAAC0J,CAAAA,CAAA,CAAU,MAAM,eAAA,CAAgB,KAAA,CAAOoS,GAAY,WAAA,EAAe,GAAA,CAAK,OAAO,YAAA,CAAa,CAAA,CAC5F9b,IAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,WAAA,CAAY,KAAA,CAAOoS,CAAAA,EAAY,UAAY,GAAA,CAAK,MAAA,CAAO,aAAa,CAAA,CAAA,CACvF,CAAA,CACA9b,IAAC0J,CAAAA,CAAA,CACC,MAAM,SAAA,CACN,KAAA,CAAOoS,GAAY,OAAA,CAAU,CAAA,EAAGA,EAAW,OAAA,CAAQ,KAAA,EAAS,EAAE,CAAA,EAAGA,CAAAA,CAAW,OAAA,CAAQ,KAAA,CAAQ,IAAA,CAAOA,CAAAA,CAAW,QAAQ,KAAA,CAAQ,EAAE,KAAKA,CAAAA,CAAW,OAAA,CAAQ,MAAQ,EAAE,CAAA,EAAA,EAAKA,EAAW,OAAA,CAAQ,KAAA,EAAS,EAAE,CAAA,CAAA,EAAIA,CAAAA,CAAW,QAAQ,UAAA,EAAc,EAAE,KAAKA,CAAAA,CAAW,OAAA,CAAQ,WAAA,EAAe,EAAE,CAAA,CAAA,CAAK,GAAA,CAC1R,OAAO,YAAA,CACT,CAAA,CAAA,CACF,EAGF,OACE9b,GAAAA,CAACga,GAAA,CACC,KAAA,CAAM,sBACN,OAAA,CAAQ,QAAA,CACR,UAAWva,CAAAA,CACX,SAAA,CAAW+P,EAAK,SAAA,CAChB,YAAA,CAAcA,EAAK,gBAAA,CACnB,MAAA,CAAQA,CAAAA,CAAK,UAAA,CACb,QAAA,CAAUA,CAAAA,CAAK,aACf,WAAA,CAAa4K,CAAAA,CACb,YAAaF,CAAAA,CACb,WAAA,CAAaC,EACf,CAEJ,EC9KA,IAAM+M,GAA4C,CAChD,CACE,GAAI,GAAA,CACJ,MAAA,CAAQ,uBACR,IAAA,CAAM,OAAA,CACN,QAAS,4BAAA,CACT,MAAA,CAAQ,SACR,SAAA,CAAW,qBACb,EACA,CACE,EAAA,CAAI,IACJ,MAAA,CAAQ,iBAAA,CACR,IAAA,CAAM,OAAA,CACN,OAAA,CAAS,kCAAA,CACT,UAAW,qBACb,CAAA,CACA,CACE,EAAA,CAAI,GAAA,CACJ,OAAQ,sBAAA,CACR,IAAA,CAAM,SACN,OAAA,CAAS,4BAAA,CACT,OAAQ,UAAA,CACR,SAAA,CAAW,qBACb,CACF,CAAA,CAEaC,GAAyB,CAAC,CAAE,SAAA,CAAA7V,CAAAA,CAAW,YAAA,CAAAd,CAAAA,CAAc,UAAA/Q,CAAU,CAAA,GAAmC,CAC7G,IAAMgC,CAAAA,CAAWC,GACXA,CAAAA,CAAO,QAAA,CAAS,SAAS,CAAA,CAAU1B,GAAAA,CAACoC,OAAA,CAAO,SAAA,CAAU,UAAU,CAAA,CAC/DV,CAAAA,CAAO,SAAS,UAAU,CAAA,CAAU1B,GAAAA,CAACqC,QAAAA,CAAA,CAAS,SAAA,CAAU,UAAU,CAAA,CAClEX,CAAAA,CAAO,SAAS,SAAS,CAAA,EAAKA,EAAO,QAAA,CAAS,UAAU,GAAKA,CAAAA,CAAO,QAAA,CAAS,OAAO,CAAA,CAAU1B,GAAAA,CAACsC,KAAA,CAAK,SAAA,CAAU,UAAU,CAAA,CACxHZ,CAAAA,CAAO,QAAA,CAAS,WAAW,CAAA,EAAKA,CAAAA,CAAO,SAAS,UAAU,CAAA,CAAU1B,IAAC6B,WAAAA,CAAA,CAAY,UAAU,SAAA,CAAU,CAAA,CAClG7B,IAACoC,MAAAA,CAAA,CAAO,UAAU,SAAA,CAAU,CAAA,CAG/BG,EAAkBC,CAAAA,EAAoB,CAC1C,OAAQA,CAAAA,EACN,KAAK,QAAA,CACL,KAAK,UAAA,CACH,OAAO,cAAA,CACT,KAAK,UACH,OAAO,cAAA,CACT,QACE,OAAO,uBACX,CACF,CAAA,CAEA,OACExC,IAACa,EAAAA,CAAA,CACC,MAAM,UAAA,CACN,SAAA,CAAWpB,EAEX,QAAA,CAAAO,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,WAAA,CACZ,QAAA,CAAAknB,GAAyB,GAAA,CAAI,CAACzkB,EAAOC,CAAAA,GACpCtB,IAAAA,CAAC,OAAmB,SAAA,CAAU,oBAAA,CAE3B,UAAAsB,CAAAA,GAAUwkB,EAAAA,CAAyB,OAAS,CAAA,EAC3ClnB,GAAAA,CAAC,OAAI,SAAA,CAAU,sDAAA,CAAuD,EAIxEA,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAWlB,CAAAA,CACd,iCAAA,CACAyD,CAAAA,CAAeE,EAAM,MAAM,CAC7B,EACE,QAAA,CAAAzC,GAAAA,CAAC,OAAI,SAAA,CAAU,SAAA,CACZ,SAAAyB,CAAAA,CAAQgB,CAAAA,CAAM,MAAM,CAAA,CACvB,CAAA,CACF,EAGArB,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,aAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,GAAA,CAAA,CAAE,SAAA,CAAU,qCAAA,CAAuC,SAAAyC,CAAAA,CAAM,MAAA,CAAO,EACjErB,IAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,+BAAA,CAAgC,QAAA,CAAA,CAAA,KAAA,CAAIqB,EAAM,IAAA,CAAA,CAAK,CAAA,CAC3DA,EAAM,OAAA,EACLzC,GAAAA,CAAC,KAAE,SAAA,CAAU,+BAAA,CAAiC,SAAAyC,CAAAA,CAAM,OAAA,CAAQ,CAAA,CAE7DA,CAAAA,CAAM,MAAA,EACLrB,IAAAA,CAAC,KAAE,SAAA,CAAWtC,CAAAA,CAAG,sBAAuByD,CAAAA,CAAeE,CAAAA,CAAM,MAAM,CAAC,CAAA,CAAG,qBAC5DA,CAAAA,CAAM,MAAA,CAAA,CACjB,EAEFzC,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,yCAAA,CACV,QAAA,CAAAyC,EAAM,SAAA,CACT,CAAA,CAAA,CACF,CAAA,CAAA,CAAA,CA/BQA,CAAAA,CAAM,EAgChB,CACD,EACH,CAAA,CACF,CAEJ,ECtGA,IAAMsa,EAAAA,CAAa,CACjB,QAAA,CAAU,CACR,OAAA,CAAS,UAAA,CACT,KAAA,CAAO,UAAA,CACP,KAAM5E,SACR,CAAA,CACA,WAAY,CACV,OAAA,CAAS,aACT,KAAA,CAAO,YAAA,CACP,KAAM6E,IACR,CACF,EAEaoK,EAAAA,CAAwB,CAAC,CAAE,IAAA,CAAAhe,CAAAA,CAAM,UAAA3J,CAAU,CAAA,GAAkC,CACxF,IAAMmd,CAAAA,CAASG,EAAAA,CAAW3T,CAAI,CAAA,CAG9B,GAAI,CAACwT,CAAAA,CACH,OACExb,KAACE,CAAAA,CAAA,CAAM,QAAQ,WAAA,CAAY,SAAA,CAAW7B,EACpC,QAAA,CAAA,CAAAO,GAAAA,CAACmY,UAAA,CAAU,SAAA,CAAU,eAAe,CAAA,CACnC/O,CAAAA,EAAQ,SAAA,CAAA,CACX,CAAA,CAIJ,IAAMyT,CAAAA,CAAOD,EAAO,IAAA,CAEpB,OACExb,KAACE,CAAAA,CAAA,CAAM,QAASsb,CAAAA,CAAO,OAAA,CAAS,UAAWnd,CAAAA,CACzC,QAAA,CAAA,CAAAO,IAAC6c,CAAAA,CAAA,CAAK,UAAU,cAAA,CAAe,CAAA,CAC9BD,EAAO,KAAA,CAAA,CACV,CAEJ,ECxBO,IAAMyK,EAAAA,CAAoB,CAAC,CAChC,KAAAje,CAAAA,CACA,IAAA,CAAAke,EACA,aAAA,CAAAC,CAAAA,CACA,SAAAC,CAAAA,CACA,WAAA,CAAAC,EACA,mBAAA,CAAAC,CAAAA,CACA,oBAAAC,CAAAA,CACA,kBAAA,CAAAC,EACA,SAAA,CAAAnoB,CACF,IAA8B,CAc5B,IAAMod,CAAAA,CAAAA,CAbU,IAAM,CACpB,OAAQzT,GACN,KAAK,MACH,OAAO+O,SAAAA,CACT,KAAK,eAAA,CACH,OAAOM,SACT,KAAK,oBAAA,CACH,OAAOoP,KAAAA,CACT,QACE,OAAO1P,SACX,CACF,IAEqB,CAErB,OACE/W,IAAAA,CAAC7B,CAAAA,CAAA,CAAK,SAAA,CAAWT,EAAG,qCAAA,CAAuCW,CAAS,EAClE,QAAA,CAAA,CAAA2B,IAAAA,CAAClB,EAAA,CAAW,SAAA,CAAU,2DACpB,QAAA,CAAA,CAAAkB,IAAAA,CAAC,OAAI,SAAA,CAAU,yBAAA,CACb,UAAApB,GAAAA,CAAC6c,CAAAA,CAAA,CAAK,SAAA,CAAU,+BAAA,CAAgC,CAAA,CAChD7c,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,sBAAuB,QAAA,CAAAoJ,CAAAA,CAAK,GAC9C,CAAA,CACApJ,GAAAA,CAAC4C,EAAA,CAAO,OAAA,CAAQ,QAAQ,IAAA,CAAK,IAAA,CAAK,UAAU,aAAA,CAC1C,QAAA,CAAA5C,IAAC8nB,YAAAA,CAAA,CAAa,UAAU,SAAA,CAAU,CAAA,CACpC,CAAA,CAAA,CACF,CAAA,CACA1mB,IAAAA,CAACX,CAAAA,CAAA,CAAY,SAAA,CAAU,WAAA,CACrB,UAAAW,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wBAAA,CACb,QAAA,CAAA,CAAApB,IAAC0J,CAAAA,CAAA,CAAU,MAAM,mBAAA,CAAoB,KAAA,CAAO4d,EAAM,CAAA,CAClDtnB,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,gBAAA,CAAiB,KAAA,CAAO6d,CAAAA,CAAe,CAAA,CAAA,CAC1D,EAECne,CAAAA,GAAS,KAAA,EACRhI,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yBACZ,QAAA,CAAA,CAAAomB,CAAAA,EAAYxnB,IAAC0J,CAAAA,CAAA,CAAU,MAAM,WAAA,CAAY,KAAA,CAAO8d,EAAU,CAAA,CAC1DC,CAAAA,EAAeznB,IAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,cAAA,CAAe,KAAA,CAAO+d,CAAAA,CAAa,GACtE,CAAA,CAGDre,CAAAA,GAAS,iBAAmBoe,CAAAA,EAC3BxnB,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,YAAY,KAAA,CAAO8d,CAAAA,CAAU,EAG/Cpe,CAAAA,GAAS,oBAAA,EACRhI,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,YACZ,QAAA,CAAA,CAAAsmB,CAAAA,EACC1nB,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,wBAAwB,KAAA,CAAOge,CAAAA,CAAqB,EAEvEtmB,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wBAAA,CACZ,QAAA,CAAA,CAAAumB,GACC3nB,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,uBAAA,CAAwB,MAAOie,CAAAA,CAAqB,CAAA,CAEtEC,GACC5nB,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,sBAAA,CAAuB,KAAA,CAAOke,EAAoB,CAAA,CAAA,CAEvE,CAAA,CAAA,CACF,GAEJ,CAAA,CAAA,CACF,CAEJ,EC/EA,IAAMG,EAAAA,CAAc,CAClB,KAAA,CAAO,2CAAA,CACP,MAAO,4BAAA,CACP,IAAA,CAAM,0DAAA,CACN,MAAA,CAAQ,EACV,CAAA,CAEMC,GAAa,CACjB,EAAA,CAAI,QACJ,EAAA,CAAI,OAAA,CACJ,GAAI,OAAA,CACJ,EAAA,CAAI,OACN,CAAA,CAEaC,EAAAA,CAAuBC,cAClC,CAAC,CAAE,SAAAhnB,CAAAA,CAAU,IAAA,CAAAkI,EAAO,OAAA,CAAS,GAAA,CAAA+e,CAAAA,CAAM,IAAA,CAAM,QAAA,CAAAC,CAAAA,CAAW,MAAO,SAAA,CAAA3oB,CAAU,EAAGM,CAAAA,GAAQ,CAC9E,IAAMsgB,CAAAA,CAAc+H,CAAAA,CAAW,cAAgBL,EAAAA,CAAY3e,CAAI,EAE/D,OACEpJ,GAAAA,CAAC,OACC,GAAA,CAAKD,CAAAA,CACL,UAAWjB,CAAAA,CACT,MAAA,CACAuhB,CAAAA,CACA2H,EAAAA,CAAWG,CAAG,CAAA,CACd1oB,CACF,CAAA,CAEC,QAAA,CAAAyB,EACH,CAEJ,CACF,EAEA+mB,EAAAA,CAAe,WAAA,CAAc,gBAAA,CCftB,IAAMI,GAAyB,CAAC,CACrC,iBAAAC,CAAAA,CACA,gBAAA,CAAAC,CAAAA,CACA,aAAA,CAAAzD,CAAAA,CACA,gBAAA,CAAAC,EACA,uBAAA,CAAAyD,CAAAA,CACA,mBAAAC,CAAAA,CACA,SAAA,CAAA/gB,EACA,cAAA,CAAAud,CAAAA,CACA,oBAAAE,CAAAA,CACA,mBAAA,CAAAD,EACA,kBAAA,CAAAwD,CAAAA,CACA,cAAAC,CAAAA,CACA,aAAA,CAAA3B,CACF,CAAA,GAAmC,CAEjC,IAAM4B,CAAAA,CAAqC,CACzC,CACE,IAAK,MAAA,CACL,KAAA,CAAO,gBACP,QAAA,CAAU,IAAA,CACV,MAAO,KACT,CAAA,CACA,CACE,GAAA,CAAK,MAAA,CACL,MAAO,MAAA,CACP,QAAA,CAAU,KACV,KAAA,CAAO,KACT,EACA,CACE,GAAA,CAAK,cAAA,CACL,KAAA,CAAO,UAAA,CACP,QAAA,CAAU,KACV,KAAA,CAAO,KACT,EACA,CACE,GAAA,CAAK,SACL,KAAA,CAAO,QAAA,CACP,SAAU,IAAA,CACV,KAAA,CAAO,MACP,KAAA,CAAO,OAAA,CACP,OAASzpB,CAAAA,EACPa,GAAAA,CAAC,QAAK,SAAA,CAAU,YAAA,CAAc,QAAA,CAAAb,CAAAA,CAAM,CAExC,CACF,EAEA,OACEa,GAAAA,CAACge,GAAA,CACC,KAAA,CACE5c,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,0BACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,QAAM,QAAA,CAAAsoB,CAAAA,CAAiB,EACxBtoB,GAAAA,CAACqd,EAAAA,CAAA,CACC,KAAA,CAAM,EAAA,CACN,KAAA,CAAOyH,CAAAA,CACP,OAAA,CAAS,CACP,CAAE,KAAA,CAAO,QAAA,CAAU,MAAO,QAAS,CAAA,CACnC,CAAE,KAAA,CAAO,SAAA,CAAW,MAAO,SAAU,CAAA,CACrC,CAAE,KAAA,CAAO,SAAA,CAAW,MAAO,SAAU,CAAA,CACrC,CAAE,KAAA,CAAO,YAAA,CAAc,KAAA,CAAO,YAAa,CAAA,CAC3C,CAAE,MAAO,iBAAA,CAAmB,KAAA,CAAO,iBAAkB,CACvD,CAAA,CACA,SAAUG,CAAAA,CACV,WAAA,CAAc9lB,GAAUa,GAAAA,CAAC0c,EAAAA,CAAA,CAAY,MAAA,CAAQvd,CAAAA,CAAc,EAC3D,SAAA,CAAU,cAAA,CACZ,EACAa,GAAAA,CAAConB,EAAAA,CAAA,CAAsB,IAAA,CAAMmB,CAAAA,CAA+C,CAAA,CAAA,CAC9E,EAEF,QAAA,CAAS,MAAA,CAET,SAAAnnB,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,6CAAA,CAEb,QAAA,CAAA,CAAAA,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,mBACb,QAAA,CAAA,CAAApB,GAAAA,CAAC+mB,GAAA,CACC,IAAA,CAAMyB,EACN,SAAA,CAAWzD,CAAAA,CACX,YAAA,CAAcI,CAAAA,CACd,YAAA,CAAcD,CAAAA,CACd,cAAe8B,CAAAA,CACjB,CAAA,CAEA5lB,KAAC7B,CAAAA,CAAA,CACC,UAAA6B,IAAAA,CAAClB,CAAAA,CAAA,CAAW,SAAA,CAAU,2DAAA,CACpB,UAAAF,GAAAA,CAACM,CAAAA,CAAA,CAAU,QAAA,CAAA,iBAAA,CAAe,CAAA,CAC1Bc,KAACwB,CAAAA,CAAA,CAAO,IAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,QAAS8lB,CAAAA,CACzC,QAAA,CAAA,CAAA1oB,IAACgH,IAAAA,CAAA,CAAK,UAAU,cAAA,CAAe,CAAA,CAAE,UAEnC,CAAA,CAAA,CACF,CAAA,CACAhH,IAACS,CAAAA,CAAA,CACE,SAAAgoB,CAAAA,CAAmB,MAAA,GAAW,EAC7BrnB,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,2EAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC2lB,OAAA,CAAO,SAAA,CAAU,qBAAqB,CAAA,CACvC3lB,GAAAA,CAAC,KAAE,QAAA,CAAA,+BAAA,CAA6B,CAAA,CAAA,CAClC,EAEAA,GAAAA,CAACioB,EAAAA,CAAA,CAAe,IAAA,CAAK,OAAA,CAAQ,IAAI,IAAA,CAC9B,QAAA,CAAAQ,EAAmB,GAAA,CAAI,CAACI,CAAAA,CAAQnmB,CAAAA,GAC/B1C,GAAAA,CAACqnB,EAAAA,CAAA,CAA+B,GAAGwB,CAAAA,CAAAA,CAAXnmB,CAAmB,CAC5C,CAAA,CACH,EAEJ,CAAA,CAAA,CACF,CAAA,CAEAtB,KAAC7B,CAAAA,CAAA,CACC,UAAA6B,IAAAA,CAAClB,CAAAA,CAAA,CAAW,SAAA,CAAU,2DAAA,CACpB,UAAAF,GAAAA,CAACM,CAAAA,CAAA,CAAU,QAAA,CAAA,WAAA,CAAS,CAAA,CACpBc,IAAAA,CAACwB,EAAA,CAAO,IAAA,CAAK,KAAK,OAAA,CAAQ,OAAA,CAAQ,QAAS+lB,CAAAA,CACzC,QAAA,CAAA,CAAA3oB,IAACgH,IAAAA,CAAA,CAAK,UAAU,cAAA,CAAe,CAAA,CAAE,YAEnC,CAAA,CAAA,CACF,CAAA,CACAhH,IAACS,CAAAA,CAAA,CACE,QAAA,CAAAiH,CAAAA,CAAU,MAAA,GAAW,CAAA,CACpBtG,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,4EACb,QAAA,CAAA,CAAApB,GAAAA,CAACqJ,SAAA,CAAS,SAAA,CAAU,qBAAqB,CAAA,CACzCrJ,GAAAA,CAAC,KAAE,QAAA,CAAA,oBAAA,CAAkB,CAAA,CAAA,CACvB,EAEAA,GAAAA,CAAC8e,EAAAA,CAAA,CACC,OAAA,CAAS8J,CAAAA,CACT,IAAA,CAAMlhB,CAAAA,CACR,CAAA,CAEJ,CAAA,CAAA,CACF,GACF,CAAA,CAGA1H,GAAAA,CAAC,OAAI,SAAA,CAAU,SAAA,CACb,SAAAA,GAAAA,CAACmnB,EAAAA,CAAA,CAAuB,SAAA,CAAW,KAAA,CAAO,aAAc,IAAM,CAAC,EAAG,CAAA,CACpE,CAAA,CAAA,CACF,EACF,CAEJ,ECpKO,IAAM2B,EAAAA,CAAgB,IAEzB1nB,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,uCAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAACqH,EAAA,CACC,KAAA,CAAM,iBACN,WAAA,CAAY,8BAAA,CACZ,QAAQ,UAAA,CACR,SAAA,CAAW,CAAA,CACX,IAAA,CAAK,wBAAA,CACL,QAAA,CAAQ,KACV,CAAA,CAEArH,GAAAA,CAACqH,EAAA,CACC,KAAA,CAAM,iBACN,WAAA,CAAY,sBAAA,CACZ,QAAA,CAAQ,IAAA,CACV,CAAA,CAEArH,GAAAA,CAACyD,EAAA,CACC,KAAA,CAAM,eACN,WAAA,CAAY,qBAAA,CACZ,QAAS,CACP,CAAE,MAAO,UAAA,CAAY,KAAA,CAAO,UAAW,CAAA,CACvC,CAAE,MAAO,SAAA,CAAW,KAAA,CAAO,SAAU,CACvC,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CCzBG,IAAMslB,GAAiB,IAAM,CAClC,GAAM,CAACC,CAAAA,CAAUC,CAAW,CAAA,CAAIjjB,QAAAA,CAAiB,UAAU,CAAA,CAE3D,OACEhG,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,WAAA,CACb,SAAAoB,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,uCAAA,CACb,QAAA,CAAA,CAAApB,IAACyD,CAAAA,CAAA,CACC,MAAM,WAAA,CACN,WAAA,CAAY,mBACZ,KAAA,CAAOulB,CAAAA,CACP,cAAeC,CAAAA,CACf,OAAA,CAAS,CACP,CAAE,KAAA,CAAO,UAAA,CAAY,KAAA,CAAO,UAAW,CAAA,CACvC,CAAE,KAAA,CAAO,eAAA,CAAiB,MAAO,eAAgB,CACnD,EACF,CAAA,CAECD,CAAAA,GAAa,WACZhpB,GAAAA,CAACqH,CAAAA,CAAA,CACC,KAAA,CAAM,gBAAA,CACN,YAAY,8BAAA,CACZ,OAAA,CAAQ,WACR,SAAA,CAAW,CAAA,CACX,IAAA,CAAK,wBAAA,CACL,QAAA,CAAQ,IAAA,CACV,EAEArH,GAAAA,CAACqH,CAAAA,CAAA,CACC,KAAA,CAAM,YAAA,CACN,YAAY,sBAAA,CACZ,IAAA,CAAK,uBACL,QAAA,CAAQ,IAAA,CACV,EAGFrH,GAAAA,CAACqH,CAAAA,CAAA,CACC,KAAA,CAAM,gBAAA,CACN,YAAY,sBAAA,CACZ,QAAA,CAAQ,IAAA,CACV,CAAA,CAAA,CACF,CAAA,CACF,CAEJ,MC7Ba6hB,EAAAA,CAA4B,CAAC,CAAE,sBAAA,CAAAC,CAAuB,EAAoC,EAAC,GAAM,CAC5G,GAAM,CAACC,EAAgBC,CAAiB,CAAA,CAAIrjB,QAAAA,CAA0B,EAAE,CAAA,CAClE,CAACsjB,CAAAA,CAAaC,CAAc,EAAIvjB,QAAAA,CAAS,KAAK,EAE9CwjB,CAAAA,CAAoBpgB,CAAAA,EAAyB,CACjD,IAAMqgB,CAAAA,CAA2B,CAC/B,EAAA,CAAI,CAAA,EAAGrgB,CAAI,CAAA,CAAA,EAAI,IAAA,CAAK,KAAK,CAAA,CAAA,CACzB,IAAA,CAAAA,CAAAA,CACA,IAAA,CAAMA,CAAAA,GAAS,MAAQ,aAAA,CAAgB,eAAA,CACvC,UAAW,KACb,CAAA,CACMsgB,EAAiB,CAAC,GAAGN,EAAgBK,CAAS,CAAA,CACpDJ,EAAkBK,CAAc,CAAA,CAChCP,IAAyBO,CAAc,CAAA,CACvCH,EAAe,KAAK,EACtB,CAAA,CAEMI,CAAAA,CAAuBxkB,CAAAA,EAAe,CAC1C,IAAMukB,CAAAA,CAAiBN,CAAAA,CAAe,OAAOP,CAAAA,EAAUA,CAAAA,CAAO,KAAO1jB,CAAE,CAAA,CACvEkkB,EAAkBK,CAAc,CAAA,CAChCP,IAAyBO,CAAc,EACzC,EAEME,CAAAA,CAAkBzkB,CAAAA,EAAe,CACrCkkB,CAAAA,CAAkBD,CAAAA,CAAe,GAAA,CAAIP,CAAAA,EACnCA,CAAAA,CAAO,EAAA,GAAO1jB,EAAK,CAAE,GAAG0jB,EAAQ,SAAA,CAAW,CAACA,EAAO,SAAU,CAAA,CAAIA,CACnE,CAAC,EACH,EAEMgB,CAAAA,CAA8BhB,CAAAA,EAC9BA,EAAO,IAAA,GAAS,KAAA,CACX7oB,IAAC8oB,EAAAA,CAAA,EAAc,CAAA,CAEf9oB,GAAAA,CAAC+oB,EAAAA,CAAA,EAAe,EAI3B,OACE3nB,IAAAA,CAAC,OAAI,SAAA,CAAU,WAAA,CACZ,UAAAgoB,CAAAA,CAAe,GAAA,CAAKP,GACnBznB,IAAAA,CAAC7B,CAAAA,CAAA,CAAqB,SAAA,CAAU,UAAA,CAC9B,UAAAS,GAAAA,CAACE,CAAAA,CAAA,CAAW,SAAA,CAAU,MAAA,CACpB,QAAA,CAAAkB,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,oCACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,OAAI,SAAA,CAAU,yBAAA,CACb,UAAApB,GAAAA,CAAC4C,CAAAA,CAAA,CACC,OAAA,CAAQ,OAAA,CACR,KAAK,MAAA,CACL,OAAA,CAAS,IAAMgnB,CAAAA,CAAef,CAAAA,CAAO,EAAE,CAAA,CACvC,SAAA,CAAU,SAAA,CAET,QAAA,CAAAA,CAAAA,CAAO,SAAA,CACN7oB,IAAC+D,WAAAA,CAAA,CAAY,UAAU,SAAA,CAAU,CAAA,CAEjC/D,IAACgE,SAAAA,CAAA,CAAU,UAAU,SAAA,CAAU,CAAA,CAEnC,EACAhE,GAAAA,CAACM,CAAAA,CAAA,CAAU,SAAA,CAAU,WAAA,CAAa,SAAAuoB,CAAAA,CAAO,IAAA,CAAK,CAAA,CAC9C7oB,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,8DACb,QAAA,CAAA6oB,CAAAA,CAAO,KACV,CAAA,CAAA,CACF,CAAA,CACA7oB,IAAC4C,CAAAA,CAAA,CACC,QAAQ,OAAA,CACR,IAAA,CAAK,OACL,OAAA,CAAS,IAAM+mB,EAAoBd,CAAAA,CAAO,EAAE,EAC5C,SAAA,CAAU,4EAAA,CAEV,QAAA,CAAA7oB,GAAAA,CAACmH,MAAAA,CAAA,CAAO,UAAU,SAAA,CAAU,CAAA,CAC9B,GACF,CAAA,CACF,CAAA,CACC,CAAC0hB,CAAAA,CAAO,SAAA,EACP7oB,IAACS,CAAAA,CAAA,CACE,SAAAopB,CAAAA,CAA2BhB,CAAM,EACpC,CAAA,CAAA,CAAA,CAlCOA,CAAAA,CAAO,EAoClB,CACD,CAAA,CAEDznB,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,UAAA,CACZ,UAAAgoB,CAAAA,CAAe,MAAA,GAAW,GACzBppB,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,oCAAA,CAAqC,QAAA,CAAA,2CAAA,CAElD,CAAA,CAEFoB,IAAAA,CAACwB,CAAAA,CAAA,CACC,QAAQ,SAAA,CACR,OAAA,CAAS,IAAM2mB,CAAAA,CAAe,CAACD,CAAW,CAAA,CAC1C,SAAA,CAAU,sBAAA,CAEV,QAAA,CAAA,CAAAtpB,GAAAA,CAACgH,IAAAA,CAAA,CAAK,SAAA,CAAU,cAAA,CAAe,EAAE,yBAAA,CAAA,CAEnC,CAAA,CAECsiB,GACCtpB,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,oGAAA,CACb,QAAA,CAAAoB,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,gBACb,QAAA,CAAA,CAAApB,GAAAA,CAAC4C,EAAA,CACC,OAAA,CAAQ,OAAA,CACR,OAAA,CAAS,IAAM4mB,CAAAA,CAAiB,KAAK,CAAA,CACrC,SAAA,CAAU,uBACX,QAAA,CAAA,iBAAA,CAED,CAAA,CACAxpB,IAAC4C,CAAAA,CAAA,CACC,QAAQ,OAAA,CACR,OAAA,CAAS,IAAM4mB,CAAAA,CAAiB,MAAM,EACtC,SAAA,CAAU,sBAAA,CACX,6BAED,CAAA,CAAA,CACF,CAAA,CACF,CAAA,CAAA,CAEJ,CAAA,CAAA,CACF,CAEJ,MCnHaM,EAAAA,CAAc,CAAC,CAC1B,KAAA,CAAA/oB,CAAAA,CACA,YAAAE,CAAAA,CACA,WAAA,CAAA8oB,EAAc,EAAA,CACd,eAAA,CAAAC,EAAkB,IAAA,CAClB,kBAAA,CAAAC,CAAAA,CAAqB3b,EAAAA,CAAqB,EAAA,CAC1C,cAAA,CAAA4b,EAAiB,EAAC,CAClB,cAAAC,CAAAA,CAAgB,KAClB,IAAwB,CACtB,IAAMC,EAAmBL,CAAAA,CAAc,CAAA,EAAGA,CAAW,CAAA,aAAA,CAAA,CAAkB,cAAA,CAEvE,OACE/pB,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,WAAA,CACb,QAAA,CAAAoB,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,uCAAA,CACX,UAAApB,GAAAA,CAACqH,CAAAA,CAAA,CACC,KAAA,CAAM,gBAAA,CACN,YAAY,sBAAA,CACZ,IAAA,CAAM0iB,EAAc,CAAA,EAAGA,CAAW,kBAAoB,wBAAA,CACrD,GAAGG,EAAe,aAAA,CACrB,CAAA,CAECC,GACCnqB,GAAAA,CAACqH,CAAAA,CAAA,CACC,KAAA,CAAM,mBAAA,CACN,WAAA,CAAY,iCACZ,IAAA,CAAK,gCAAA,CACJ,GAAG6iB,CAAAA,CAAe,SAAA,CACrB,EAGFlqB,GAAAA,CAACqH,CAAAA,CAAA,CACC,KAAA,CAAM,MAAA,CACN,YAAY,YAAA,CACZ,QAAA,CAAQ,KACP,GAAG6iB,CAAAA,CAAe,KACrB,CAAA,CAEAlqB,GAAAA,CAACqH,CAAAA,CAAA,CACC,KAAA,CAAM,OAAA,CACN,YAAY,aAAA,CACZ,IAAA,CAAK,oBACJ,GAAG6iB,CAAAA,CAAe,MACrB,CAAA,CAEAlqB,GAAAA,CAACqH,EAAA,CACC,KAAA,CAAM,cACN,WAAA,CAAY,OAAA,CACX,GAAG6iB,CAAAA,CAAe,UAAA,CACrB,EAEAlqB,GAAAA,CAACyD,CAAAA,CAAA,CACC,KAAA,CAAM,cAAA,CACN,WAAA,CAAY,iBACZ,OAAA,CAAS2K,EAAAA,CACX,EAEC4b,CAAAA,EACChqB,GAAAA,CAACyD,EAAA,CACC,KAAA,CAAO2mB,EACP,WAAA,CAAY,aAAA,CACZ,QAASH,CAAAA,CACX,CAAA,CAAA,CAEJ,EACJ,CAEJ,MChFMI,EAAAA,CAAgB/qB,GAAAA,CACpB,4FACF,CAAA,CAEMgrB,EAAAA,CAAcC,cAIlB,CAAC,CAAE,UAAA9qB,CAAAA,CAAW,GAAGK,CAAM,CAAA,CAAGC,CAAAA,GAC1BC,GAAAA,CAAgB,EAAA,CAAA,IAAA,CAAf,CACC,GAAA,CAAKD,EACL,SAAA,CAAWjB,CAAAA,CAAGurB,IAAc,CAAG5qB,CAAS,EACvC,GAAGK,CAAAA,CACN,CACD,EACDwqB,EAAAA,CAAM,YAA6B,EAAA,CAAA,IAAA,CAAK,WAAA,CCZjC,IAAME,EAAAA,CAAwB,CAAC,CAAE,KAAA,CAAArrB,EAAQ,CAC9C,IAAA,CAAM,GACN,IAAA,CAAM,UAAA,CACN,MAAO,EAAA,CACP,KAAA,CAAO,GACP,WAAA,CAAa,EAAA,CACb,SAAU,EAAA,CACV,MAAA,CAAQ,aACR,OAAA,CAAS,EACX,EAAG,YAAA,CAAAic,CAAa,CAAA,GAAkC,CAChD,IAAMqP,CAAAA,CAAoB,CAACra,CAAAA,CAAeqN,CAAAA,GAAqB,CAC7D,IAAMiN,CAAAA,CAAc,CAAE,GAAGvrB,CAAAA,CAAO,CAACiR,CAAK,EAAGqN,CAAS,CAAA,CAClDrC,CAAAA,GAAesP,CAAW,EAC5B,CAAA,CAEMC,EAAoBvhB,CAAAA,EAAiB,CACzCqhB,CAAAA,CAAkB,MAAA,CAAQrhB,CAAI,EAChC,EAEA,OACEhI,IAAAA,CAAC,OAAI,SAAA,CAAU,WAAA,CACb,UAAAA,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,uCAAA,CACX,QAAA,CAAA,CAAApB,IAACqH,CAAAA,CAAA,CACC,MAAM,mBAAA,CACN,KAAA,CAAOlI,EAAM,IAAA,CACb,QAAA,CAAW4H,CAAAA,EAAM0jB,CAAAA,CAAkB,MAAA,CAAQ1jB,CAAAA,CAAE,OAAO,KAAK,CAAA,CACzD,YAAY,yBAAA,CACZ,QAAA,CAAQ,KACV,CAAA,CAEA3F,IAAAA,CAAC,OAAI,SAAA,CAAU,WAAA,CACb,UAAApB,GAAAA,CAACsqB,EAAAA,CAAA,CAAM,SAAA,CAAU,qBAAA,CAAsB,6BAAiB,CAAA,CACxDlpB,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,8BAAA,CACb,QAAA,CAAA,CAAAA,KAAC,OAAA,CAAA,CAAM,SAAA,CAAU,6CACf,QAAA,CAAA,CAAApB,GAAAA,CAAC,SACC,IAAA,CAAK,OAAA,CACL,KAAK,kBAAA,CACL,KAAA,CAAM,WACN,OAAA,CAASb,CAAAA,CAAM,OAAS,UAAA,CACxB,QAAA,CAAU,IAAMwrB,CAAAA,CAAiB,UAAU,CAAA,CAC3C,SAAA,CAAU,oEAAA,CACZ,CAAA,CACA3qB,IAAC,MAAA,CAAA,CAAK,SAAA,CAAU,0BAA0B,QAAA,CAAA,UAAA,CAAQ,CAAA,CAAA,CACpD,EACAoB,IAAAA,CAAC,OAAA,CAAA,CAAM,SAAA,CAAU,4CAAA,CACf,QAAA,CAAA,CAAApB,GAAAA,CAAC,SACC,IAAA,CAAK,OAAA,CACL,KAAK,kBAAA,CACL,KAAA,CAAM,aACN,OAAA,CAASb,CAAAA,CAAM,IAAA,GAAS,YAAA,CACxB,QAAA,CAAU,IAAMwrB,EAAiB,YAAY,CAAA,CAC7C,UAAU,oEAAA,CACZ,CAAA,CACA3qB,IAAC,MAAA,CAAA,CAAK,SAAA,CAAU,0BAA0B,QAAA,CAAA,YAAA,CAAU,CAAA,CAAA,CACtD,GACF,CAAA,CAAA,CACF,CAAA,CAEAA,IAACyD,CAAAA,CAAA,CACC,MAAM,iBAAA,CACN,KAAA,CAAOtE,CAAAA,CAAM,MAAA,CACb,aAAA,CAAgB+Q,CAAAA,EAAQua,EAAkB,QAAA,CAAUva,CAAG,EACvD,OAAA,CAAS,CACP,CAAE,KAAA,CAAO,YAAA,CAAc,MAAO,YAAa,CAAA,CAC3C,CAAE,KAAA,CAAO,aAAA,CAAe,MAAO,aAAc,CAAA,CAC7C,CAAE,KAAA,CAAO,eAAA,CAAiB,KAAA,CAAO,eAAgB,CAAA,CACjD,CAAE,MAAO,gBAAA,CAAkB,KAAA,CAAO,gBAAiB,CACrD,CAAA,CACF,EAEAlQ,GAAAA,CAACqH,CAAAA,CAAA,CACC,KAAA,CAAOlI,CAAAA,CAAM,SAAW,YAAA,CAAe,YAAA,CAChCA,EAAM,MAAA,GAAW,aAAA,CAAgB,cACjCA,CAAAA,CAAM,MAAA,GAAW,eAAA,CAAkB,eAAA,CAAkB,gBAAA,CAC5D,KAAA,CAAOA,EAAM,OAAA,CACb,QAAA,CAAW4H,GAAM0jB,CAAAA,CAAkB,SAAA,CAAW1jB,EAAE,MAAA,CAAO,KAAK,EAC5D,WAAA,CAAa,CAAA,MAAA,EAAS5H,EAAM,MAAA,GAAW,YAAA,CAAe,aACzCA,CAAAA,CAAM,MAAA,GAAW,cAAgB,aAAA,CACjCA,CAAAA,CAAM,MAAA,GAAW,eAAA,CAAkB,eAAA,CAAkB,gBAAgB,GAClF,QAAA,CAAQ,IAAA,CACV,GACF,CAAA,CAGAiC,IAAAA,CAAC,OAAI,SAAA,CAAU,uCAAA,CACb,UAAApB,GAAAA,CAACqH,CAAAA,CAAA,CACC,KAAA,CAAM,OAAA,CACN,KAAK,OAAA,CACL,KAAA,CAAOlI,EAAM,KAAA,CACb,QAAA,CAAW4H,CAAAA,EAAM0jB,CAAAA,CAAkB,OAAA,CAAS1jB,CAAAA,CAAE,OAAO,KAAK,CAAA,CAC1D,YAAY,qBAAA,CACd,CAAA,CAEA/G,IAACqH,CAAAA,CAAA,CACC,MAAM,cAAA,CACN,IAAA,CAAK,MACL,KAAA,CAAOlI,CAAAA,CAAM,MACb,QAAA,CAAW4H,CAAAA,EAAM0jB,EAAkB,OAAA,CAAS1jB,CAAAA,CAAE,MAAA,CAAO,KAAK,CAAA,CAC1D,WAAA,CAAY,qBACd,CAAA,CAEA/G,GAAAA,CAACqH,EAAA,CACC,KAAA,CAAM,gBACN,IAAA,CAAK,MAAA,CACL,MAAOlI,CAAAA,CAAM,WAAA,CACb,SAAW4H,CAAAA,EAAM0jB,CAAAA,CAAkB,cAAe1jB,CAAAA,CAAE,MAAA,CAAO,KAAK,CAAA,CAChE,WAAA,CAAY,sBAAA,CACd,CAAA,CAEA/G,GAAAA,CAACqH,CAAAA,CAAA,CACC,KAAA,CAAM,WAAA,CACN,MAAOlI,CAAAA,CAAM,QAAA,CACb,SAAW4H,CAAAA,EAAM0jB,CAAAA,CAAkB,WAAY1jB,CAAAA,CAAE,MAAA,CAAO,KAAK,CAAA,CAC7D,WAAA,CAAY,kBACd,CAAA,CAAA,CACF,CAAA,CAAA,CACJ,CAEJ,EChHO,IAAM6jB,EAAAA,CAAyB,CAAC,CACrC,gBAAA,CAAAC,EACA,cAAA,CAAAzB,CAAAA,CACA,uBAAAD,CAAAA,CACA,iBAAA,CAAA2B,EACA,QAAA,CAAApa,CAAAA,CACA,SAAAwR,CACF,CAAA,GAEIliB,IAACge,EAAAA,CAAA,CACC,KAAA,CAAM,qBAAA,CACN,WAAA,CAAY,yDAAA,CACZ,QAAS,CACP,CAAE,MAAO,QAAA,CAAU,OAAA,CAAS,UAAW,OAAA,CAAStN,CAAS,EACzD,CAAE,KAAA,CAAO,sBAAuB,OAAA,CAAS,SAAA,CAAW,QAASwR,CAAS,CACxE,EAEA,QAAA,CAAA9gB,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,WAAA,CAEb,QAAA,CAAA,CAAAA,KAAC7B,CAAAA,CAAA,CACC,UAAAS,GAAAA,CAACE,CAAAA,CAAA,CACC,QAAA,CAAAF,GAAAA,CAACM,EAAA,CAAU,QAAA,CAAA,mBAAA,CAAiB,EAC9B,CAAA,CACAN,GAAAA,CAACS,EAAA,CACC,QAAA,CAAAT,IAACwqB,EAAAA,CAAA,CAAsB,KAAA,CAAOK,CAAAA,CAAkB,YAAA,CAAcC,CAAAA,CAAmB,EACnF,CAAA,CAAA,CACF,CAAA,CAGA1pB,KAAC7B,CAAAA,CAAA,CACC,UAAAS,GAAAA,CAACE,CAAAA,CAAA,CACC,QAAA,CAAAkB,IAAAA,CAACd,EAAA,CAAU,QAAA,CAAA,CAAA,SAAA,CAER8oB,EAAe,IAAA,CAAK2B,CAAAA,EAAKA,EAAE,IAAA,GAAS,MAAM,CAAA,EACzC/qB,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,wBAAwB,QAAA,CAAA,GAAA,CAAC,CAAA,CAAA,CAE7C,EACF,CAAA,CACAoB,IAAAA,CAACX,EAAA,CACE,QAAA,CAAA,CAAA2oB,EAAe,MAAA,GAAW,CAAA,EACzBppB,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,qCAAqC,QAAA,CAAA,wDAAA,CAElD,CAAA,CAEDopB,EAAe,IAAA,CAAK2B,CAAAA,EAAKA,CAAAA,CAAE,IAAA,GAAS,MAAM,CAAA,EACzC/qB,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,qCAAqC,QAAA,CAAA,gDAAA,CAElD,CAAA,CAEFA,IAAC8pB,EAAAA,CAAA,CACC,MAAM,EAAA,CACN,WAAA,CAAY,GACZ,aAAA,CAAa,IAAA,CACf,GACF,CAAA,CAAA,CACF,CAAA,CAGA1oB,KAAC7B,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAS,GAAAA,CAACE,CAAAA,CAAA,CACC,SAAAF,GAAAA,CAACM,CAAAA,CAAA,CAAU,QAAA,CAAA,uBAAA,CAAqB,CAAA,CAClC,EACAN,GAAAA,CAACS,CAAAA,CAAA,CACC,QAAA,CAAAT,GAAAA,CAACkpB,GAAA,CAA0B,sBAAA,CAAwBC,EAAwB,CAAA,CAC7E,CAAA,CAAA,CACF,GACF,CAAA,CACF,EChFJ,SAAS6B,CAAAA,CAAS,CAChB,SAAA,CAAAvrB,CAAAA,CACA,GAAGK,CACL,CAAA,CAAyC,CACvC,OACEE,GAAAA,CAAC,OACC,SAAA,CAAWlB,CAAAA,CAAG,oCAAqCW,CAAS,CAAA,CAC3D,GAAGK,CAAAA,CACN,CAEJ,CCFA,IAAMid,EAAAA,CAID,CACH,QAAA,CAAU,CACR,QAAS,UAAA,CACT,KAAA,CAAO,UAAA,CACP,IAAA,CAAM4I,MACR,CAAA,CACA,QAAS,CACP,OAAA,CAAS,UACT,KAAA,CAAO,SAAA,CACP,KAAMsF,SACR,CAAA,CACA,eAAgB,CACd,OAAA,CAAS,eACT,KAAA,CAAO,cAAA,CACP,KAAMC,gBACR,CAAA,CACA,QAAS,CACP,OAAA,CAAS,SAAA,CACT,KAAA,CAAO,SAAA,CACP,IAAA,CAAMzS,QACR,CACF,CAAA,CAEa0S,GAAmB,CAAC,CAAE,KAAA/hB,CAAAA,CAAM,SAAA,CAAA3J,CAAU,CAAA,GAA6B,CAC9E,IAAMmd,CAAAA,CAASG,EAAAA,CAAW3T,CAAI,CAAA,EAAK2T,EAAAA,CAAW,SACxCF,CAAAA,CAAOD,CAAAA,CAAO,IAAA,CAEpB,OACExb,IAAAA,CAACE,CAAAA,CAAA,CAAM,OAAA,CAASsb,CAAAA,CAAO,QAAS,SAAA,CAAWnd,CAAAA,CACzC,UAAAO,GAAAA,CAAC6c,CAAAA,CAAA,CAAK,SAAA,CAAU,cAAA,CAAe,EAC9BD,CAAAA,CAAO,KAAA,CAAA,CACV,CAEJ,EC5BA,IAAMwO,EAAAA,CAAuC,CAC3C,CACE,EAAA,CAAI,GAAA,CACJ,OAAQ,iBAAA,CACR,IAAA,CAAM,QACN,OAAA,CAAS,uBAAA,CACT,MAAA,CAAQ,QAAA,CACR,SAAA,CAAW,qBACb,EACA,CACE,EAAA,CAAI,IACJ,MAAA,CAAQ,gBAAA,CACR,KAAM,OAAA,CACN,OAAA,CAAS,oBACT,SAAA,CAAW,qBACb,EACA,CACE,EAAA,CAAI,IACJ,MAAA,CAAQ,uBAAA,CACR,KAAM,QAAA,CACN,OAAA,CAAS,yBAAA,CACT,MAAA,CAAQ,QAAA,CACR,SAAA,CAAW,qBACb,CACF,CAAA,CAEaC,GAAoB,CAAC,CAAE,UAAA/Z,CAAAA,CAAW,YAAA,CAAAd,EAAc,SAAA,CAAA/Q,CAAU,IAA8B,CACnG,IAAMgC,EAAWC,CAAAA,EACXA,CAAAA,CAAO,SAAS,SAAS,CAAA,CAAU1B,GAAAA,CAACoC,MAAAA,CAAA,CAAO,SAAA,CAAU,UAAU,CAAA,CAC/DV,CAAAA,CAAO,SAAS,UAAU,CAAA,CAAU1B,IAACqC,QAAAA,CAAA,CAAS,UAAU,SAAA,CAAU,CAAA,CAClEX,EAAO,QAAA,CAAS,SAAS,GAAKA,CAAAA,CAAO,QAAA,CAAS,UAAU,CAAA,CAAU1B,GAAAA,CAACsC,IAAAA,CAAA,CAAK,SAAA,CAAU,SAAA,CAAU,EAC5FZ,CAAAA,CAAO,QAAA,CAAS,aAAa,CAAA,EAAKA,CAAAA,CAAO,SAAS,WAAW,CAAA,CAAU1B,IAACsrB,UAAAA,CAAA,CAAW,UAAU,SAAA,CAAU,CAAA,CACvG5pB,EAAO,QAAA,CAAS,WAAW,GAAKA,CAAAA,CAAO,QAAA,CAAS,UAAU,CAAA,CAAU1B,GAAAA,CAAC6B,WAAAA,CAAA,CAAY,SAAA,CAAU,SAAA,CAAU,EAClG7B,GAAAA,CAACoC,MAAAA,CAAA,CAAO,SAAA,CAAU,SAAA,CAAU,EAG/BG,CAAAA,CAAkBC,CAAAA,EAAoB,CAC1C,OAAQA,CAAAA,EACN,KAAK,QAAA,CACL,KAAK,UAAA,CACL,KAAK,QAAA,CACH,OAAO,cAAA,CACT,KAAK,UACH,OAAO,cAAA,CACT,QACE,OAAO,uBACX,CACF,CAAA,CAEA,OACExC,IAACa,EAAAA,CAAA,CACC,MAAM,UAAA,CACN,SAAA,CAAWpB,EAEX,QAAA,CAAAO,GAAAA,CAAC,OAAI,SAAA,CAAU,WAAA,CACZ,QAAA,CAAAorB,EAAAA,CAAoB,GAAA,CAAI,CAAC3oB,EAAOC,CAAAA,GAC/BtB,IAAAA,CAAC,OAAmB,SAAA,CAAU,oBAAA,CAE3B,UAAAsB,CAAAA,GAAU0oB,EAAAA,CAAoB,OAAS,CAAA,EACtCprB,GAAAA,CAAC,OAAI,SAAA,CAAU,sDAAA,CAAuD,EAIxEA,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAWlB,CAAAA,CACd,iCAAA,CACAyD,CAAAA,CAAeE,CAAAA,CAAM,MAAM,CAC7B,EACE,QAAA,CAAAzC,GAAAA,CAAC,OAAI,SAAA,CAAU,SAAA,CACZ,SAAAyB,CAAAA,CAAQgB,CAAAA,CAAM,MAAM,CAAA,CACvB,CAAA,CACF,EAGArB,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,aAAA,CACb,QAAA,CAAA,CAAApB,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,qCAAA,CAAuC,QAAA,CAAAyC,CAAAA,CAAM,MAAA,CAAO,EACjErB,IAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,+BAAA,CAAgC,QAAA,CAAA,CAAA,KAAA,CAAIqB,EAAM,IAAA,CAAA,CAAK,CAAA,CAC3DA,EAAM,OAAA,EACLzC,GAAAA,CAAC,KAAE,SAAA,CAAU,+BAAA,CAAiC,SAAAyC,CAAAA,CAAM,OAAA,CAAQ,EAE7DA,CAAAA,CAAM,MAAA,EACLrB,IAAAA,CAAC,GAAA,CAAA,CAAE,SAAA,CAAWtC,CAAAA,CAAG,sBAAuByD,CAAAA,CAAeE,CAAAA,CAAM,MAAM,CAAC,CAAA,CAAG,qBAC5DA,CAAAA,CAAM,MAAA,CAAA,CACjB,CAAA,CAEFzC,GAAAA,CAAC,GAAA,CAAA,CAAE,SAAA,CAAU,0CACV,QAAA,CAAAyC,CAAAA,CAAM,UACT,CAAA,CAAA,CACF,CAAA,CAAA,CAAA,CA/BQA,EAAM,EAgChB,CACD,CAAA,CACH,CAAA,CACF,CAEJ,CAAA,CCpDA,IAAM8oB,EAAAA,CAAa,CAAC,CAClB,SAAA,CAAAhkB,EACA,QAAA,CAAAikB,CAAAA,CACA,SAAAtqB,CACF,CAAA,GAKSlB,IAAA6L,QAAAA,CAAA,CAAG,QAAA,CAAAtE,CAAAA,CAAYikB,CAAAA,CAAWtqB,CAAAA,CAAS,EAG/BuqB,EAAAA,CAAoB,CAAC,CAChC,OAAA,CAAAC,CAAAA,CACA,cAAA5G,CAAAA,CACA,cAAA,CAAAG,EACA,aAAA,CAAAD,CAAAA,CACA,sBAAA2G,CAAAA,CACA,IAAA,CAAAnc,EACA,kBAAA,CAAAoc,CAAAA,CACA,uBAAAC,CAAAA,CACA,gBAAA,CAAAC,CAAAA,CACA,sBAAA,CAAAC,CAAAA,CACA,iBAAA,CAAAC,EACA,qBAAA,CAAAC,CAAAA,CACA,aAAAC,CAAAA,CACA,SAAA,CAAA3kB,EACA,KAAA,CAAAlE,CAAAA,CACA,QAAA8oB,CAAAA,CACA,SAAA,CAAAC,EACA,QAAA,CAAAC,CAAAA,CACA,eAAAC,CAAAA,CACA,QAAA,CAAAC,EACA,mBAAA,CAAAC,CACF,CAAA,GAA8B,CAE5B,IAAM1Q,CAAAA,CAAatM,EAAK,KAAA,EAAM,CACxBid,EAAoBC,MAAAA,CAAuB,IAAI,EAC/CC,CAAAA,CAAqBD,MAAAA,CAAuB,IAAI,CAAA,CAChDE,EAAAA,CAAiBF,OAAuB,IAAI,CAAA,CAC5C,CAACG,EAAAA,CAAoBC,CAAqB,EAAI9mB,QAAAA,CAAS,KAAK,CAAA,CAE5D+mB,CAAAA,CAAqB,IAAM,CAC/B,GAAIH,EAAAA,CAAe,OAAA,EAAWD,EAAmB,OAAA,CAAS,CACxD,IAAM1L,CAAAA,CAAY0L,CAAAA,CAAmB,QAE/BK,EAAAA,CADUJ,EAAAA,CAAe,QACJ,SAAA,CAAY3L,CAAAA,CAAU,UAAY,GAAA,CAC7DA,CAAAA,CAAU,SAAS,CAAE,GAAA,CAAK+L,EAAAA,CAAY,QAAA,CAAU,QAAS,CAAC,EAC5D,CACAV,CAAAA,KACF,CAAA,CA+BA,GA3BAjb,UAAU,IAAM,CACd,IAAM4b,CAAAA,CAAiBR,CAAAA,CAAkB,QACnCS,CAAAA,CAAkBP,CAAAA,CAAmB,QAC3C,GAAI,CAACM,GAAkB,CAACC,CAAAA,CAAiB,OAEzC,IAAMC,EAAAA,CAAW,IAAI,qBAClBC,CAAAA,EAAY,CACXA,EAAQ,OAAA,CAASC,EAAAA,EAAU,CAGzB,IAAMC,EAAAA,CAAcJ,EAAgB,SAAA,CAAY,CAAA,CAEhDJ,EAAsB,CAACO,EAAAA,CAAM,gBAAkBC,EAAW,EAC5D,CAAC,EACH,CAAA,CACA,CACE,IAAA,CAAMJ,CAAAA,CACN,SAAA,CAAW,EACX,UAAA,CAAY,KACd,CACF,CAAA,CAEA,OAAAC,GAAS,OAAA,CAAQF,CAAc,EACxB,IAAME,EAAAA,CAAS,YACxB,CAAA,CAAG,CAAC5lB,CAAS,CAAC,EAGVlE,CAAAA,CACF,OACErD,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,2CAAA,CACb,SAAAA,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,yCAAA,CACb,QAAA,CAAAoB,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wDACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,OAAI,SAAA,CAAU,uFAAA,CACb,UAAApB,GAAAA,CAACuY,WAAAA,CAAA,CAAY,SAAA,CAAU,wCAAA,CAAyC,CAAA,CAChEnX,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,sBACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,KAAE,SAAA,CAAU,sCAAA,CAAuC,kCAAsB,CAAA,CAC1EA,GAAAA,CAAC,KAAE,SAAA,CAAU,+BAAA,CAAiC,SAAAqD,CAAAA,CAAM,CAAA,CAAA,CACtD,GACF,CAAA,CACC8oB,CAAAA,EACC/qB,KAACwB,CAAAA,CAAA,CAAO,OAAA,CAAQ,SAAA,CAAU,OAAA,CAASupB,CAAAA,CACjC,UAAAnsB,GAAAA,CAAC+B,SAAAA,CAAA,CAAU,SAAA,CAAU,cAAA,CAAe,EAAE,OAAA,CAAA,CAExC,CAAA,CAAA,CAEJ,EACF,CAAA,CACF,CAAA,CAIJ,IAAMmc,CAAAA,CAAU,CACd,CAAE,KAAA,CAAO,gBAAA,CAAkB,QAAS,SAAA,CAAW,OAAA,CAAS2N,CAAAA,CAAwB,IAAA,CAAM3T,KAAM,CAAA,CAC5F,CAAE,KAAA,CAAO,QAAA,CAAU,QAAS,SAAA,CAAW,OAAA,CAAS4T,EAAkB,IAAA,CAAM1T,UAAW,EACnF,GAAK6T,CAAAA,CAAiI,EAAC,CAA1G,CAAC,CAAE,KAAA,CAAO,cAAA,CAAgB,QAAS,SAAA,CAAW,OAAA,CAASF,CAAAA,CAAwB,IAAA,CAAMhU,cAAe,CAAC,CACpI,CAAA,CAEMqH,CAAAA,CAAU7X,GAAa,KAAA,CAE7B,OACEnG,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,4CAEb,QAAA,CAAA,CAAAA,IAAAA,CAAC,OAAI,SAAA,CAAU,yBAAA,CACb,UAAApB,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAWlB,CAAAA,CACd,4EAAA,CACA,CAAC+tB,EAAAA,EAAsB,UACzB,CAAA,CACE,SAAA7sB,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wCAAA,CACb,QAAA,CAAAoB,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,qEACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,OAAI,SAAA,CAAU,qCAAA,CACb,SAAAoB,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,yBAAA,CAEb,QAAA,CAAA,CAAApB,GAAAA,CAACurB,EAAAA,CAAA,CAAW,SAAA,CAAWnM,GAAW,CAACsM,CAAAA,EAAS,OAAQ,QAAA,CAAU1rB,GAAAA,CAACgrB,EAAA,CAAS,SAAA,CAAU,WAAW,CAAA,CAC3F,QAAA,CAAAhrB,IAAC,IAAA,CAAA,CAAG,SAAA,CAAU,qCAAsC,QAAA,CAAA0rB,CAAAA,EAAS,OAAO,CAAA,CACtE,CAAA,CAGA1rB,GAAAA,CAACurB,EAAAA,CAAA,CACC,SAAA,CAAWnM,GAAW,CAACsM,CAAAA,EAAS,KAChC,QAAA,CACEtqB,IAAAA,CAAC,OAAI,SAAA,CAAU,kGAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAACgrB,CAAAA,CAAA,CAAS,UAAU,sBAAA,CAAuB,CAAA,CAC3ChrB,IAACgrB,CAAAA,CAAA,CAAS,UAAU,UAAA,CAAW,CAAA,CAAA,CACjC,CAAA,CAGF,QAAA,CAAAhrB,GAAAA,CAACmrB,EAAAA,CAAA,CAAiB,IAAA,CAAMO,CAAAA,EAAS,KAA6D,CAAA,CAChG,CAAA,CAGA1rB,IAACurB,EAAAA,CAAA,CACC,UAAWnM,CAAAA,EAAW,CAAC0F,GAAiB,CAAC4G,CAAAA,EAAS,OAClD,QAAA,CACEtqB,IAAAA,CAAC,OAAI,SAAA,CAAU,kGAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAACgrB,CAAAA,CAAA,CAAS,UAAU,sBAAA,CAAuB,CAAA,CAC3ChrB,IAACgrB,CAAAA,CAAA,CAAS,UAAU,UAAA,CAAW,CAAA,CAC/BhrB,IAACgrB,CAAAA,CAAA,CAAS,UAAU,SAAA,CAAU,CAAA,CAAA,CAChC,EAGF,QAAA,CAAAhrB,GAAAA,CAACqd,GAAA,CACC,KAAA,CAAM,EAAA,CACN,KAAA,CAAOyH,CAAAA,CACP,OAAA,CAASE,EACT,QAAA,CAAUC,CAAAA,CACV,YAAc9lB,CAAAA,EAAUa,GAAAA,CAAC0c,GAAA,CAAY,MAAA,CAAQvd,EAAc,qBAAA,CAAqB,IAAA,CAAC,EACjF,SAAA,CAAU,cAAA,CACZ,EACF,CAAA,CAAA,CACF,CAAA,CACF,EAEAa,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,uFAAA,CACb,QAAA,CAAAoB,IAAAA,CAAC,OAAI,SAAA,CAAU,kCAAA,CACZ,UAAAirB,CAAAA,GAAa,MAAA,EAAaA,EAAW,CAAA,EACpCjrB,IAAAA,CAAC,UACC,OAAA,CAAS2rB,CAAAA,CACT,UAAU,kKAAA,CAEV,QAAA,CAAA,CAAA/sB,IAACiY,OAAAA,CAAA,CAAQ,UAAU,SAAA,CAAU,CAAA,CAC5BoU,CAAAA,CAAS,GAAA,CAAEA,CAAAA,GAAa,CAAA,CAAI,MAAQ,MAAA,CAAA,CACvC,CAAA,CAEDnO,EAAQ,GAAA,CAAI,CAACxc,EAAQgB,CAAAA,GAAU,CAC9B,IAAMma,EAAAA,CAAOnb,CAAAA,CAAO,KACpB,OACEN,IAAAA,CAAC,UAEC,OAAA,CAASM,CAAAA,CAAO,QAChB,SAAA,CAAU,0KAAA,CAET,QAAA,CAAA,CAAAmb,EAAAA,EAAQ7c,GAAAA,CAAC6c,EAAAA,CAAA,CAAK,SAAA,CAAU,SAAA,CAAU,EAClCnb,CAAAA,CAAO,KAAA,CAAA,CAAA,CALHgB,CAMP,CAEJ,CAAC,GACH,CAAA,CACF,CAAA,CAAA,CACF,EACF,CAAA,CACF,CAAA,CAGA1C,IAAC,KAAA,CAAA,CACC,SAAA,CAAWlB,EACT,uEAAA,CACA+tB,EAAAA,CACI,+CAAA,CACA,8CACN,CAAA,CAEA,QAAA,CAAA7sB,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,uGACb,QAAA,CAAAA,GAAAA,CAAC,OAAI,SAAA,CAAU,QAAA,CACb,SAAAA,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,uGAAA,CACb,QAAA,CAAAoB,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,0BACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,KAAA,CAAA,CACC,QAAA,CAAA,CAAApB,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,+BAAA,CAAgC,QAAA,CAAA,iBAAA,CAAe,EAC5DA,GAAAA,CAACurB,EAAAA,CAAA,CAAW,SAAA,CAAWnM,CAAAA,EAAWsM,GAAS,cAAA,GAAmB,MAAA,CAAW,SAAU1rB,GAAAA,CAACgrB,CAAAA,CAAA,CAAS,SAAA,CAAU,UAAA,CAAW,EAChH,QAAA,CAAAhrB,GAAAA,CAAC,GAAA,CAAA,CAAE,SAAA,CAAU,mBAAA,CAAqB,QAAA,CAAAd,GAAewsB,CAAAA,EAAS,cAAA,EAAkB,CAAC,CAAA,CAAE,CAAA,CACjF,GACF,CAAA,CACAtqB,IAAAA,CAAC,OACC,QAAA,CAAA,CAAApB,GAAAA,CAAC,KAAE,SAAA,CAAU,+BAAA,CAAgC,qBAAS,CAAA,CACtDA,GAAAA,CAACurB,GAAA,CAAW,SAAA,CAAWnM,CAAAA,EAAWsM,CAAAA,EAAS,gBAAA,GAAqB,MAAA,CAAW,SAAU1rB,GAAAA,CAACgrB,CAAAA,CAAA,CAAS,SAAA,CAAU,UAAA,CAAW,EAClH,QAAA,CAAAhrB,GAAAA,CAAC,KAAE,SAAA,CAAU,mBAAA,CAAqB,SAAAd,EAAAA,CAAewsB,CAAAA,EAAS,kBAAoB,CAAC,CAAA,CAAE,EACnF,CAAA,CAAA,CACF,CAAA,CACAtqB,IAAAA,CAAC,KAAA,CAAA,CACC,QAAA,CAAA,CAAApB,GAAAA,CAAC,KAAE,SAAA,CAAU,+BAAA,CAAgC,mBAAO,CAAA,CACpDA,GAAAA,CAACurB,GAAA,CAAW,SAAA,CAAWnM,GAAWsM,CAAAA,EAAS,cAAA,GAAmB,OAAW,QAAA,CAAU1rB,GAAAA,CAACgrB,EAAA,CAAS,SAAA,CAAU,WAAW,CAAA,CAChH,QAAA,CAAAhrB,GAAAA,CAAC,GAAA,CAAA,CAAE,SAAA,CAAU,uBAAA,CAAyB,SAAAd,EAAAA,CAAewsB,CAAAA,EAAS,gBAAkB,CAAC,CAAA,CAAE,EACrF,CAAA,CAAA,CACF,CAAA,CACAtqB,KAAC,KAAA,CAAA,CACC,QAAA,CAAA,CAAApB,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,gCAAgC,QAAA,CAAA,iBAAA,CAAe,CAAA,CAC5DA,IAACurB,EAAAA,CAAA,CAAW,SAAA,CAAWnM,CAAAA,EAAWsM,CAAAA,EAAS,cAAA,GAAmB,OAAW,QAAA,CAAU1rB,GAAAA,CAACgrB,EAAA,CAAS,SAAA,CAAU,WAAW,CAAA,CAChH,QAAA,CAAA5pB,KAAC,GAAA,CAAA,CAAE,SAAA,CAAU,qCAAqC,QAAA,CAAA,CAAA,GAAA,CAAElC,EAAAA,CAAewsB,GAAS,cAAA,EAAkB,CAAC,GAAE,CAAA,CACnG,CAAA,CAAA,CACF,CAAA,CACAtqB,IAAAA,CAAC,KAAA,CAAA,CACC,QAAA,CAAA,CAAApB,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,gCAAgC,QAAA,CAAA,gBAAA,CAAc,CAAA,CAC3DA,IAACurB,EAAAA,CAAA,CAAW,UAAWnM,CAAAA,EAAWsM,CAAAA,EAAS,gBAAkB,MAAA,CAAW,QAAA,CAAU1rB,IAACgrB,CAAAA,CAAA,CAAS,UAAU,UAAA,CAAW,CAAA,CAC/G,QAAA,CAAA5pB,IAAAA,CAAC,GAAA,CAAA,CAAE,SAAA,CAAU,yCAAyC,QAAA,CAAA,CAAA,GAAA,CAAElC,EAAAA,CAAewsB,GAAS,aAAA,EAAiB,CAAC,GAAE,CAAA,CACtG,CAAA,CAAA,CACF,EACAtqB,IAAAA,CAAC,KAAA,CAAA,CACC,UAAApB,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,+BAAA,CAAgC,QAAA,CAAA,eAAA,CAAa,EAC1DA,GAAAA,CAACurB,EAAAA,CAAA,CAAW,SAAA,CAAWnM,CAAAA,EAAWsM,CAAAA,EAAS,cAAgB,MAAA,CAAW,QAAA,CAAU1rB,IAACgrB,CAAAA,CAAA,CAAS,UAAU,UAAA,CAAW,CAAA,CAC7G,SAAAhrB,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAWlB,CAAAA,CAAG,uBAAA,CAAA,CAA0B4sB,GAAS,WAAA,EAAe,CAAA,EAAK,GAAK,cAAc,CAAA,CACxF,QAAA,CAAAxsB,EAAAA,CAAewsB,CAAAA,EAAS,WAAA,EAAe,CAAC,CAAA,CAC3C,CAAA,CACF,GACF,CAAA,CAEA1rB,GAAAA,CAAC,OAAI,SAAA,CAAU,SAAA,CACb,SAAAoB,IAAAA,CAACwB,CAAAA,CAAA,CACC,IAAA,CAAK,IAAA,CACL,QAAS4pB,CAAAA,CAET,QAAA,CAAA,CAAAxsB,IAACkC,IAAAA,CAAA,CAAK,SAAA,CAAU,cAAA,CAAe,CAAA,CAAE,gBAAA,CAAA,CAEnC,EACF,CAAA,CAAA,CACF,CAAA,CACF,EACF,CAAA,CACF,CAAA,CACF,GACF,CAAA,CAGAlC,GAAAA,CAAC,OAAI,GAAA,CAAK2sB,CAAAA,CAAoB,UAAU,wBAAA,CACtC,QAAA,CAAA3sB,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yCACb,QAAA,CAAAoB,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,6CAAA,CAEb,QAAA,CAAA,CAAAA,KAAC,KAAA,CAAA,CAAI,SAAA,CAAWtC,EAAG,kBAAA,CAAoBotB,CAAAA,EAAgB,QAAQ,CAAA,CAC9D,QAAA,CAAA,CAAA9M,EAEGhe,IAAAA,CAAC7B,CAAAA,CAAA,CAAK,OAAA,CAAQ,QAAA,CAAS,WAAU,IAAA,CAC/B,QAAA,CAAA,CAAA6B,KAAClB,CAAAA,CAAA,CAAW,SAAA,CAAU,KAAA,CAAM,IAAA,CAAK,IAAA,CAC/B,UAAAF,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,WAAA,CACb,QAAA,CAAAA,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,0BACb,QAAA,CAAAA,GAAAA,CAACurB,GAAA,CAAW,SAAA,CAAW,CAACG,CAAAA,EAAS,IAAA,CAAM,SAAU1rB,GAAAA,CAACgrB,CAAAA,CAAA,CAAS,SAAA,CAAU,UAAA,CAAW,CAAA,CAC9E,SAAAhrB,GAAAA,CAAC,IAAA,CAAA,CAAG,UAAU,mDAAA,CAAqD,QAAA,CAAA0rB,GAAS,IAAA,CAAK,CAAA,CACnF,EACF,CAAA,CACF,CAAA,CACA1rB,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,0BACb,QAAA,CAAAA,GAAAA,CAAC4C,EAAA,CAAO,OAAA,CAAQ,OAAA,CAAQ,IAAA,CAAK,MAAA,CAC3B,QAAA,CAAA5C,IAACsC,IAAAA,CAAA,CAAK,UAAU,SAAA,CAAU,CAAA,CAC5B,EACF,CAAA,CAAA,CACF,CAAA,CACAlB,KAACX,CAAAA,CAAA,CAAY,KAAK,IAAA,CAAK,UAAA,CAAU,KAE/B,QAAA,CAAA,CAAAW,IAAAA,CAAC,OACC,GAAA,CAAKqrB,CAAAA,CACL,SAAA,CAAU,4GAAA,CAGV,QAAA,CAAA,CAAArrB,IAAAA,CAAC,OAAI,SAAA,CAAU,2BAAA,CACb,UAAAA,IAAAA,CAAC,KAAA,CAAA,CACC,UAAApB,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,gDAAA,CAAiD,QAAA,CAAA,iBAAA,CAAe,EAC7EA,GAAAA,CAACurB,EAAAA,CAAA,CAAW,SAAA,CAAWG,CAAAA,EAAS,iBAAmB,MAAA,CAAW,QAAA,CAAU1rB,GAAAA,CAACgrB,CAAAA,CAAA,CAAS,SAAA,CAAU,WAAW,CAAA,CACrG,QAAA,CAAAhrB,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,oDACV,QAAA,CAAAd,EAAAA,CAAewsB,GAAS,cAAA,EAAkB,CAAC,EAC9C,CAAA,CACF,CAAA,CAAA,CACF,EACAtqB,IAAAA,CAAC,KAAA,CAAA,CACC,UAAApB,GAAAA,CAAC,GAAA,CAAA,CAAE,SAAA,CAAU,gDAAA,CAAiD,QAAA,CAAA,mBAAA,CAAiB,CAAA,CAC/EA,IAACurB,EAAAA,CAAA,CAAW,UAAWG,CAAAA,EAAS,gBAAA,GAAqB,OAAW,QAAA,CAAU1rB,GAAAA,CAACgrB,EAAA,CAAS,SAAA,CAAU,WAAW,CAAA,CACvG,QAAA,CAAAhrB,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,oDACV,QAAA,CAAAd,EAAAA,CAAewsB,CAAAA,EAAS,gBAAA,EAAoB,CAAC,CAAA,CAChD,EACF,CAAA,CAAA,CACF,CAAA,CAEA1rB,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,UACb,QAAA,CAAAoB,IAAAA,CAACwB,EAAA,CAAO,OAAA,CAAS4pB,EAAqB,QAAA,CAAUpN,CAAAA,CAC9C,UAAApf,GAAAA,CAACkC,IAAAA,CAAA,CAAK,SAAA,CAAU,cAAA,CAAe,CAAA,CAAE,gBAAA,CAAA,CAEnC,CAAA,CACF,CAAA,CAAA,CACF,EAGAlC,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,gCAAA,CAAiC,CAAA,CAGhDoB,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wCACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,OACC,QAAA,CAAA,CAAApB,GAAAA,CAAC,KAAE,SAAA,CAAU,+BAAA,CAAgC,2BAAe,CAAA,CAC5DA,GAAAA,CAACurB,EAAAA,CAAA,CAAW,SAAA,CAAWG,CAAAA,EAAS,iBAAmB,MAAA,CAAW,QAAA,CAAU1rB,IAACgrB,CAAAA,CAAA,CAAS,UAAU,UAAA,CAAW,CAAA,CACrG,SAAAhrB,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,uBAAA,CAAyB,QAAA,CAAAd,GAAewsB,CAAAA,EAAS,cAAA,EAAkB,CAAC,CAAA,CAAE,CAAA,CACrF,CAAA,CAAA,CACF,CAAA,CACAtqB,IAAAA,CAAC,KAAA,CAAA,CACC,UAAApB,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,+BAAA,CAAgC,QAAA,CAAA,iBAAA,CAAe,EAC5DA,GAAAA,CAACurB,EAAAA,CAAA,CAAW,SAAA,CAAWG,CAAAA,EAAS,iBAAmB,MAAA,CAAW,QAAA,CAAU1rB,IAACgrB,CAAAA,CAAA,CAAS,UAAU,UAAA,CAAW,CAAA,CACrG,QAAA,CAAA5pB,IAAAA,CAAC,GAAA,CAAA,CAAE,SAAA,CAAU,qCAAqC,QAAA,CAAA,CAAA,GAAA,CAAElC,EAAAA,CAAewsB,GAAS,cAAA,EAAkB,CAAC,GAAE,CAAA,CACnG,CAAA,CAAA,CACF,EACAtqB,IAAAA,CAAC,KAAA,CAAA,CACC,UAAApB,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,+BAAA,CAAgC,QAAA,CAAA,gBAAA,CAAc,EAC3DA,GAAAA,CAACurB,EAAAA,CAAA,CAAW,SAAA,CAAWG,CAAAA,EAAS,aAAA,GAAkB,OAAW,QAAA,CAAU1rB,GAAAA,CAACgrB,EAAA,CAAS,SAAA,CAAU,WAAW,CAAA,CACpG,QAAA,CAAA5pB,KAAC,GAAA,CAAA,CAAE,SAAA,CAAU,yCAAyC,QAAA,CAAA,CAAA,GAAA,CAAElC,EAAAA,CAAewsB,GAAS,aAAA,EAAiB,CAAC,GAAE,CAAA,CACtG,CAAA,CAAA,CACF,CAAA,CACAtqB,IAAAA,CAAC,KAAA,CAAA,CACC,QAAA,CAAA,CAAApB,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,gCAAgC,QAAA,CAAA,eAAA,CAAa,CAAA,CAC1DA,IAACurB,EAAAA,CAAA,CAAW,SAAA,CAAWG,CAAAA,EAAS,WAAA,GAAgB,MAAA,CAAW,SAAU1rB,GAAAA,CAACgrB,CAAAA,CAAA,CAAS,SAAA,CAAU,UAAA,CAAW,EAClG,QAAA,CAAAhrB,GAAAA,CAAC,GAAA,CAAA,CAAE,SAAA,CAAWlB,CAAAA,CAAG,uBAAA,CAAA,CAA0B4sB,GAAS,WAAA,EAAe,CAAA,EAAK,GAAK,cAAc,CAAA,CACxF,SAAAxsB,EAAAA,CAAewsB,CAAAA,EAAS,aAAe,CAAC,CAAA,CAC3C,EACF,CAAA,CAAA,CACF,CAAA,CAAA,CACF,GACF,CAAA,CAGAtqB,IAAAA,CAAC,OAAI,SAAA,CAAU,uCAAA,CACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,KAAA,CAAA,CACC,QAAA,CAAA,CAAApB,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,4CAA4C,QAAA,CAAA,IAAA,CAAE,CAAA,CAC3DA,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,6BACb,QAAA,CAAAA,GAAAA,CAACurB,GAAA,CAAW,SAAA,CAAW,CAACG,CAAAA,EAAS,EAAA,CAAI,SAAU1rB,GAAAA,CAACgrB,CAAAA,CAAA,CAAS,SAAA,CAAU,YAAA,CAAa,CAAA,CAC9E,SAAAhrB,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,mBAAA,CAAqB,QAAA,CAAA0rB,GAAS,EAAA,CAAG,CAAA,CAChD,EACF,CAAA,CAAA,CACF,CAAA,CACAtqB,KAAC,KAAA,CAAA,CACC,QAAA,CAAA,CAAApB,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,4CAA4C,QAAA,CAAA,aAAA,CAAW,CAAA,CACpEA,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,4BAAA,CACb,SAAAA,GAAAA,CAACurB,EAAAA,CAAA,CAAW,SAAA,CAAW,CAACG,GAAS,YAAA,CAAc,QAAA,CAAU1rB,IAACgrB,CAAAA,CAAA,CAAS,UAAU,YAAA,CAAa,CAAA,CACxF,SAAAhrB,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,gCAAA,CAAkC,QAAA,CAAA0rB,CAAAA,EAAS,YAAA,CAAa,CAAA,CACvE,CAAA,CACF,GACF,CAAA,CACAtqB,IAAAA,CAAC,OACC,QAAA,CAAA,CAAApB,GAAAA,CAAC,KAAE,SAAA,CAAU,2CAAA,CAA4C,0BAAc,CAAA,CACvEA,GAAAA,CAAC,OAAI,SAAA,CAAU,4BAAA,CACb,SAAAA,GAAAA,CAACurB,EAAAA,CAAA,CAAW,SAAA,CAAW,CAACG,CAAAA,EAAS,MAAA,CAAQ,QAAA,CAAU1rB,GAAAA,CAACgrB,EAAA,CAAS,SAAA,CAAU,aAAa,CAAA,CAClF,QAAA,CAAAhrB,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,oBAAqB,QAAA,CAAA0rB,CAAAA,EAAS,OAAO,CAAA,CACpD,CAAA,CACF,GACF,CAAA,CACAtqB,IAAAA,CAAC,OACC,QAAA,CAAA,CAAApB,GAAAA,CAAC,GAAA,CAAA,CAAE,SAAA,CAAU,2CAAA,CAA4C,QAAA,CAAA,SAAA,CAAO,EAChEA,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,4BAAA,CACb,QAAA,CAAAA,IAACurB,EAAAA,CAAA,CAAW,UAAW,CAACG,CAAAA,EAAS,YAAa,QAAA,CAAU1rB,GAAAA,CAACgrB,EAAA,CAAS,SAAA,CAAU,aAAa,CAAA,CACvF,QAAA,CAAAhrB,GAAAA,CAAC,QAAA,CAAA,CACC,OAAA,CAASgsB,CAAAA,CACT,UAAU,0DAAA,CAET,QAAA,CAAAN,GAAS,WAAA,CACZ,CAAA,CACF,EACF,CAAA,CAAA,CACF,CAAA,CACAtqB,KAAC,KAAA,CAAA,CACC,QAAA,CAAA,CAAApB,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,4CAA4C,QAAA,CAAA,cAAA,CAAY,CAAA,CACrEA,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,4BAAA,CACb,QAAA,CAAAA,GAAAA,CAACurB,EAAAA,CAAA,CAAW,SAAA,CAAW,CAACG,GAAS,IAAA,CAAM,QAAA,CAAU1rB,IAACgrB,CAAAA,CAAA,CAAS,UAAU,YAAA,CAAa,CAAA,CAChF,SAAAhrB,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,mBAAA,CAAqB,QAAA,CAAA0rB,GAAS,IAAA,CAAK,CAAA,CAClD,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CACAtqB,IAAAA,CAAC,OACC,QAAA,CAAA,CAAApB,GAAAA,CAAC,KAAE,SAAA,CAAU,2CAAA,CAA4C,4BAAgB,CAAA,CACzEA,GAAAA,CAAC,OAAI,SAAA,CAAU,4BAAA,CACb,SAAAA,GAAAA,CAACgrB,CAAAA,CAAA,CAAS,SAAA,CAAU,YAAA,CAAa,EACnC,CAAA,CAAA,CACF,CAAA,CACA5pB,IAAAA,CAAC,KAAA,CAAA,CACC,QAAA,CAAA,CAAApB,GAAAA,CAAC,KAAE,SAAA,CAAU,2CAAA,CAA4C,kCAAsB,CAAA,CAC/EA,GAAAA,CAAC,OAAI,SAAA,CAAU,4BAAA,CACb,SAAAA,GAAAA,CAACgrB,CAAAA,CAAA,CAAS,SAAA,CAAU,YAAA,CAAa,EACnC,CAAA,CAAA,CACF,CAAA,CACA5pB,KAAC,KAAA,CAAA,CACC,QAAA,CAAA,CAAApB,GAAAA,CAAC,GAAA,CAAA,CAAE,SAAA,CAAU,2CAAA,CAA4C,gCAAoB,CAAA,CAC7EA,GAAAA,CAAC,OAAI,SAAA,CAAU,4BAAA,CACb,SAAAA,GAAAA,CAACgrB,CAAAA,CAAA,CAAS,SAAA,CAAU,YAAA,CAAa,EACnC,CAAA,CAAA,CACF,CAAA,CAAA,CACF,GACF,CAAA,CAAA,CACF,CAAA,CAGAhrB,IAACga,EAAAA,CAAA,CACC,KAAA,CAAO0R,CAAAA,CAAQ,IAAA,CACf,OAAA,CAAQ,SACR,SAAA,CAAWlc,CAAAA,CAAK,UAChB,YAAA,CAAcA,CAAAA,CAAK,iBACnB,MAAA,CAAQA,CAAAA,CAAK,WACb,QAAA,CAAUA,CAAAA,CAAK,aACf,WAAA,CACEpO,IAAAA,CAAAyK,SAAA,CAEE,QAAA,CAAA,CAAAzK,KAAC,KAAA,CAAA,CACC,GAAA,CAAKqrB,CAAAA,CACL,SAAA,CAAU,4GAAA,CAGV,QAAA,CAAA,CAAArrB,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,4BACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,OACC,QAAA,CAAA,CAAApB,GAAAA,CAAC,KAAE,SAAA,CAAU,gDAAA,CAAiD,2BAAe,CAAA,CAC7EA,GAAAA,CAAC,KAAE,SAAA,CAAU,mDAAA,CACV,SAAAd,EAAAA,CAAewsB,CAAAA,CAAQ,cAAc,CAAA,CACxC,CAAA,CAAA,CACF,CAAA,CAEAtqB,KAAC,KAAA,CAAA,CACC,QAAA,CAAA,CAAApB,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,iDAAiD,QAAA,CAAA,mBAAA,CAAiB,CAAA,CAC/EA,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,oDACV,QAAA,CAAAd,EAAAA,CAAewsB,EAAQ,gBAAgB,CAAA,CAC1C,GACF,CAAA,CAGA1rB,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,SAAA,CACb,QAAA,CAAAoB,KAACwB,CAAAA,CAAA,CAAO,QAAS4pB,CAAAA,CACf,QAAA,CAAA,CAAAxsB,IAACkC,IAAAA,CAAA,CAAK,SAAA,CAAU,cAAA,CAAe,CAAA,CAAE,gBAAA,CAAA,CAEnC,EACF,CAAA,CAAA,CACF,CAAA,CAGAlC,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,iCAAiC,CAAA,CAGhDoB,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,uCAAA,CACb,QAAA,CAAA,CAAAA,KAAC,KAAA,CAAA,CACC,QAAA,CAAA,CAAApB,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,gCAAgC,QAAA,CAAA,iBAAA,CAAe,CAAA,CAC5DA,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,wBAAyB,QAAA,CAAAd,EAAAA,CAAewsB,EAAQ,cAAc,CAAA,CAAE,GAC/E,CAAA,CACAtqB,IAAAA,CAAC,KAAA,CAAA,CACC,QAAA,CAAA,CAAApB,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,+BAAA,CAAgC,QAAA,CAAA,iBAAA,CAAe,EAC5DoB,IAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,oCAAA,CAAqC,QAAA,CAAA,CAAA,GAAA,CAC9ClC,GAAewsB,CAAAA,CAAQ,cAAc,GACzC,CAAA,CAAA,CACF,CAAA,CACAtqB,KAAC,KAAA,CAAA,CACC,QAAA,CAAA,CAAApB,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,+BAAA,CAAgC,QAAA,CAAA,gBAAA,CAAc,CAAA,CAC3DoB,IAAAA,CAAC,KAAE,SAAA,CAAU,wCAAA,CAAyC,cAClDlC,EAAAA,CAAewsB,CAAAA,CAAQ,aAAa,CAAA,CAAA,CACxC,CAAA,CAAA,CACF,EACAtqB,IAAAA,CAAC,KAAA,CAAA,CACC,UAAApB,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,+BAAA,CAAgC,QAAA,CAAA,eAAA,CAAa,EAC1DA,GAAAA,CAAC,GAAA,CAAA,CAAE,SAAA,CAAWlB,CAAAA,CACZ,uBAAA,CACA4sB,CAAAA,CAAQ,YAAc,CAAA,EAAK,cAC7B,EACG,QAAA,CAAAxsB,EAAAA,CAAewsB,EAAQ,WAAW,CAAA,CACrC,GACF,CAAA,CAAA,CACF,CAAA,CAAA,CACF,EAEAtqB,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,uCAAA,CACb,QAAA,CAAA,CAAApB,IAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,IAAA,CAAK,KAAA,CAAOgiB,CAAAA,CAAQ,GAAI,CAAA,CACzC1rB,GAAAA,CAAC0J,EAAA,CACC,KAAA,CAAM,cACN,KAAA,CACE1J,GAAAA,CAAC,UAAO,OAAA,CAAS4rB,CAAAA,CAAoB,UAAU,wCAAA,CAC5C,QAAA,CAAAF,EAAQ,YAAA,CACX,CAAA,CAEJ,EACA1rB,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,gBAAA,CAAiB,KAAA,CAAOgiB,EAAQ,MAAA,CAAQ,CAAA,CACzD1rB,IAAC0J,CAAAA,CAAA,CACC,MAAM,SAAA,CACN,KAAA,CACE1J,IAAC,QAAA,CAAA,CAAO,OAAA,CAASgsB,EAAmB,SAAA,CAAU,8BAAA,CAC3C,SAAAN,CAAAA,CAAQ,WAAA,CACX,EAEJ,CAAA,CACA1rB,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,cAAA,CAAe,MAAOoS,CAAAA,CAAW,WAAA,CAAa,EAC/D9b,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,kBAAA,CAAmB,MAAOoS,CAAAA,CAAW,cAAA,CAAgB,EACtE9b,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,wBAAA,CAAyB,MAAOoS,CAAAA,CAAW,oBAAA,EAAwB,GAAA,CAAK,CAAA,CACzF9b,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,sBAAA,CAAuB,MAAOoS,CAAAA,CAAW,kBAAA,EAAsB,IAAK,CAAA,CAAA,CACvF,CAAA,CAAA,CACF,EAEF,WAAA,CACE9b,GAAAA,CAACuP,GAAA,CAAa,IAAA,CAAMC,EAClB,QAAA,CAAApO,IAAAA,CAAAyK,SAAA,CAEE,QAAA,CAAA,CAAAzK,IAAAA,CAAC,KAAA,CAAA,CAAI,GAAA,CAAKqrB,CAAAA,CAAmB,UAAU,4GAAA,CAErC,QAAA,CAAA,CAAArrB,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,4BACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,OACC,QAAA,CAAA,CAAApB,GAAAA,CAAC,KAAE,SAAA,CAAU,gDAAA,CAAiD,2BAAe,CAAA,CAC7EA,GAAAA,CAAC,KAAE,SAAA,CAAU,mDAAA,CACV,QAAA,CAAAd,EAAAA,CAAewsB,CAAAA,CAAQ,cAAc,EACxC,CAAA,CAAA,CACF,CAAA,CAEAtqB,KAAC,KAAA,CAAA,CACC,QAAA,CAAA,CAAApB,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,iDAAiD,QAAA,CAAA,mBAAA,CAAiB,CAAA,CAC/EA,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,oDACV,QAAA,CAAAd,EAAAA,CAAewsB,EAAQ,gBAAgB,CAAA,CAC1C,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAGA1rB,GAAAA,CAAC,OAAI,SAAA,CAAU,gCAAA,CAAiC,EAGhDoB,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,uCAAA,CACb,QAAA,CAAA,CAAAA,KAAC,KAAA,CAAA,CACC,QAAA,CAAA,CAAApB,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,gCAAgC,QAAA,CAAA,iBAAA,CAAe,CAAA,CAC5DA,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,uBAAA,CAAyB,QAAA,CAAAd,EAAAA,CAAewsB,CAAAA,CAAQ,cAAc,CAAA,CAAE,CAAA,CAAA,CAC/E,EACAtqB,IAAAA,CAAC,KAAA,CAAA,CACC,UAAApB,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,+BAAA,CAAgC,QAAA,CAAA,iBAAA,CAAe,EAC5DoB,IAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,oCAAA,CAAqC,QAAA,CAAA,CAAA,GAAA,CAC9ClC,GAAewsB,CAAAA,CAAQ,cAAc,CAAA,CAAA,CACzC,CAAA,CAAA,CACF,CAAA,CACAtqB,IAAAA,CAAC,OACC,QAAA,CAAA,CAAApB,GAAAA,CAAC,KAAE,SAAA,CAAU,+BAAA,CAAgC,0BAAc,CAAA,CAC3DoB,IAAAA,CAAC,KAAE,SAAA,CAAU,wCAAA,CAAyC,cAClDlC,EAAAA,CAAewsB,CAAAA,CAAQ,aAAa,CAAA,CAAA,CACxC,CAAA,CAAA,CACF,EACAtqB,IAAAA,CAAC,KAAA,CAAA,CACC,QAAA,CAAA,CAAApB,GAAAA,CAAC,GAAA,CAAA,CAAE,SAAA,CAAU,gCAAgC,QAAA,CAAA,eAAA,CAAa,CAAA,CAC1DA,IAAC,GAAA,CAAA,CAAE,SAAA,CAAWlB,EACZ,uBAAA,CACA4sB,CAAAA,CAAQ,YAAc,CAAA,EAAK,cAC7B,EACG,QAAA,CAAAxsB,EAAAA,CAAewsB,EAAQ,WAAW,CAAA,CACrC,GACF,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAEAtqB,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wCACb,QAAA,CAAA,CAAApB,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,KAAK,KAAA,CAAOgiB,CAAAA,CAAQ,GAAI,CAAA,CACzC1rB,GAAAA,CAAC0J,EAAA,CACC,KAAA,CAAM,cACN,KAAA,CACE1J,GAAAA,CAAC,UAAO,OAAA,CAAS4rB,CAAAA,CAAoB,SAAA,CAAU,wCAAA,CAC5C,QAAA,CAAAF,CAAAA,CAAQ,aACX,CAAA,CAEJ,CAAA,CACA1rB,IAAC0J,CAAAA,CAAA,CAAU,MAAM,gBAAA,CAAiB,KAAA,CAAOgiB,CAAAA,CAAQ,MAAA,CAAQ,CAAA,CACzD1rB,GAAAA,CAAC0J,EAAA,CACC,KAAA,CAAM,UACN,KAAA,CACE1J,GAAAA,CAAC,UAAO,OAAA,CAASgsB,CAAAA,CAAmB,SAAA,CAAU,8BAAA,CAC3C,QAAA,CAAAN,CAAAA,CAAQ,YACX,CAAA,CAEJ,CAAA,CACA1rB,IAAC0P,CAAAA,CAAA,CACC,KAAK,aAAA,CACL,KAAA,CAAM,eACN,WAAA,CAAY,oBAAA,CACZ,SAAQ,IAAA,CACV,CAAA,CACA1P,IAACmQ,EAAAA,CAAA,CACC,KAAK,gBAAA,CACL,KAAA,CAAM,kBAAA,CACN,OAAA,CAASwb,CAAAA,CACX,CAAA,CACA3rB,IAAC0P,CAAAA,CAAA,CACC,KAAK,sBAAA,CACL,KAAA,CAAM,yBACN,WAAA,CAAY,8BAAA,CACd,EACA1P,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,oBAAA,CACL,MAAM,sBAAA,CACN,WAAA,CAAY,6BACd,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CACF,CAAA,CAEJ,CAAA,CAIFtO,IAAAA,CAAC,OAAI,GAAA,CAAKwrB,EAAAA,CAAgB,UAAU,WAAA,CAClC,QAAA,CAAA,CAAAxrB,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,oCACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,MAAG,SAAA,CAAU,uCAAA,CAAwC,gBAAI,CAAA,CACzDusB,CAAAA,EAAY,CAACnN,CAAAA,EACZhe,IAAAA,CAACwB,CAAAA,CAAA,CAAO,IAAA,CAAK,IAAA,CAAK,QAAS2pB,CAAAA,CACzB,QAAA,CAAA,CAAAvsB,IAACgH,IAAAA,CAAA,CAAK,UAAU,cAAA,CAAe,CAAA,CAAE,WAEnC,CAAA,CAAA,CAEJ,CAAA,CACAhH,IAACT,CAAAA,CAAA,CACC,SAAAS,GAAAA,CAACS,CAAAA,CAAA,CAAY,SAAA,CAAU,MAAA,CACpB,QAAA,CAAA2e,CAAAA,CAECpf,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,mBAAA,CACb,QAAA,CAAAA,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,kBACb,QAAA,CAAAoB,IAAAA,CAAC,SAAM,SAAA,CAAU,QAAA,CACf,UAAApB,GAAAA,CAAC,OAAA,CAAA,CACC,SAAAoB,IAAAA,CAAC,IAAA,CAAA,CAAG,UAAU,sBAAA,CACZ,QAAA,CAAA,CAAApB,GAAAA,CAAC,IAAA,CAAA,CAAG,KAAA,CAAO,CAAE,MAAO,MAAO,CAAA,CAAG,UAAU,+DAAA,CAAgE,QAAA,CAAA,IAAA,CAAE,EAC1GA,GAAAA,CAAC,IAAA,CAAA,CAAG,MAAO,CAAE,KAAA,CAAO,OAAQ,CAAA,CAAG,SAAA,CAAU,gEAAgE,QAAA,CAAA,UAAA,CAAQ,CAAA,CACjHA,IAAC,IAAA,CAAA,CAAG,KAAA,CAAO,CAAE,KAAA,CAAO,OAAQ,CAAA,CAAG,UAAU,+DAAA,CAAgE,QAAA,CAAA,kBAAA,CAAgB,EACzHA,GAAAA,CAAC,IAAA,CAAA,CAAG,MAAO,CAAE,KAAA,CAAO,OAAQ,CAAA,CAAG,SAAA,CAAU,gEAAgE,QAAA,CAAA,mBAAA,CAAiB,CAAA,CAC1HA,IAAC,IAAA,CAAA,CAAG,KAAA,CAAO,CAAE,KAAA,CAAO,OAAQ,CAAA,CAAG,SAAA,CAAU,gEAAA,CAAiE,QAAA,CAAA,YAAA,CAAU,EACpHA,GAAAA,CAAC,IAAA,CAAA,CAAG,MAAO,CAAE,KAAA,CAAO,OAAQ,CAAA,CAAG,SAAA,CAAU,gEAAgE,QAAA,CAAA,kBAAA,CAAgB,CAAA,CACzHA,IAAC,IAAA,CAAA,CAAG,KAAA,CAAO,CAAE,KAAA,CAAO,OAAQ,EAAG,SAAA,CAAU,+DAAA,CAAgE,QAAA,CAAA,oBAAA,CAAkB,CAAA,CAAA,CAC7H,CAAA,CACF,CAAA,CACAA,IAAC,OAAA,CAAA,CACE,QAAA,CAAA,KAAA,CAAM,KAAK,CAAE,MAAA,CAAQ,CAAE,CAAC,CAAA,CAAE,IAAI,CAAC4iB,CAAAA,CAAG2K,IACjCnsB,IAAAA,CAAC,IAAA,CAAA,CAAkB,UAAU,UAAA,CAC3B,QAAA,CAAA,CAAApB,IAAC,IAAA,CAAA,CAAG,KAAA,CAAO,CAAE,KAAA,CAAO,MAAO,CAAA,CAAG,UAAU,WAAA,CAAY,QAAA,CAAAA,IAACgrB,CAAAA,CAAA,CAAS,UAAU,cAAA,CAAe,CAAA,CAAE,EACzFhrB,GAAAA,CAAC,IAAA,CAAA,CAAG,MAAO,CAAE,KAAA,CAAO,OAAQ,CAAA,CAAG,SAAA,CAAU,YAAY,QAAA,CAAAA,GAAAA,CAACgrB,CAAAA,CAAA,CAAS,SAAA,CAAU,cAAA,CAAe,EAAE,CAAA,CAC1FhrB,GAAAA,CAAC,MAAG,KAAA,CAAO,CAAE,MAAO,OAAQ,CAAA,CAAG,UAAU,WAAA,CAAY,QAAA,CAAAA,IAACgrB,CAAAA,CAAA,CAAS,UAAU,cAAA,CAAe,CAAA,CAAE,EAC1FhrB,GAAAA,CAAC,IAAA,CAAA,CAAG,KAAA,CAAO,CAAE,KAAA,CAAO,OAAQ,EAAG,SAAA,CAAU,WAAA,CAAY,SAAAA,GAAAA,CAACgrB,CAAAA,CAAA,CAAS,SAAA,CAAU,cAAA,CAAe,EAAE,CAAA,CAC1FhrB,GAAAA,CAAC,MAAG,KAAA,CAAO,CAAE,MAAO,OAAQ,CAAA,CAAG,UAAU,sBAAA,CAAuB,QAAA,CAAAA,GAAAA,CAACgrB,CAAAA,CAAA,CAAS,SAAA,CAAU,eAAe,CAAA,CAAE,CAAA,CACrGhrB,IAAC,IAAA,CAAA,CAAG,KAAA,CAAO,CAAE,KAAA,CAAO,OAAQ,EAAG,SAAA,CAAU,WAAA,CAAY,SAAAA,GAAAA,CAACgrB,CAAAA,CAAA,CAAS,SAAA,CAAU,cAAA,CAAe,EAAE,CAAA,CAC1FhrB,GAAAA,CAAC,IAAA,CAAA,CAAG,KAAA,CAAO,CAAE,KAAA,CAAO,OAAQ,CAAA,CAAG,SAAA,CAAU,YAAY,QAAA,CAAAA,GAAAA,CAACgrB,EAAA,CAAS,SAAA,CAAU,eAAe,CAAA,CAAE,CAAA,CAAA,CAAA,CAPnFuC,CAQT,CACD,CAAA,CACH,GACF,CAAA,CACF,CAAA,CACF,EAEAnB,CAAAA,EACEpsB,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wCAAA,CACb,QAAA,CAAAA,IAAC,GAAA,CAAA,CAAE,QAAA,CAAA,oBAAA,CAAkB,EACvB,CAAA,CAGN,CAAA,CACF,GACF,CAAA,CAAA,CACF,CAAA,CAGC,CAACksB,CAAAA,EACAlsB,GAAAA,CAAC,OAAI,SAAA,CAAU,SAAA,CACZ,SAAAof,CAAAA,CAEChe,IAAAA,CAAC7B,EAAA,CACC,QAAA,CAAA,CAAAS,GAAAA,CAACE,CAAAA,CAAA,CAAW,IAAA,CAAK,KACf,QAAA,CAAAF,GAAAA,CAAC,MAAG,SAAA,CAAU,mDAAA,CAAoD,oBAAQ,CAAA,CAC5E,CAAA,CACAA,GAAAA,CAACS,CAAAA,CAAA,CAAY,IAAA,CAAK,KAAK,SAAA,CAAU,WAAA,CAC9B,eAAM,IAAA,CAAK,CAAE,OAAQ,CAAE,CAAC,CAAA,CAAE,GAAA,CAAI,CAACmiB,CAAAA,CAAG4K,IACjCpsB,IAAAA,CAAC,KAAA,CAAA,CAAY,UAAU,YAAA,CACrB,QAAA,CAAA,CAAApB,IAACgrB,CAAAA,CAAA,CAAS,UAAU,sCAAA,CAAuC,CAAA,CAC3D5pB,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,mBACb,QAAA,CAAA,CAAApB,GAAAA,CAACgrB,EAAA,CAAS,SAAA,CAAU,cAAA,CAAe,CAAA,CACnChrB,GAAAA,CAACgrB,CAAAA,CAAA,CAAS,SAAA,CAAU,UAAA,CAAW,GACjC,CAAA,CAAA,CAAA,CALQwC,CAMV,CACD,CAAA,CACH,CAAA,CAAA,CACF,EAEAxtB,GAAAA,CAACqrB,EAAAA,CAAA,CAAkB,SAAA,CAAW,KAAA,CAAO,aAAc,IAAM,CAAC,EAAG,CAAA,CAEjE,CAAA,CAAA,CAEJ,CAAA,CACF,CAAA,CACF,CAAA,CAAA,CACF,CAEJ,ECnvBO,IAAMoC,EAAAA,CAAsB,CAAC,CAClC,OAAA,CAAA5H,CAAAA,CACA,eAAAC,CAAAA,CACA,cAAA,CAAAC,EACA,cAAA,CAAA2H,CACF,IAAgC,CAC9B,GAAM,CAACpoB,CAAAA,CAAM+P,CAAO,EAAIrP,QAAAA,CAAS,KAAK,CAAA,CAChC,CAACggB,CAAAA,CAAcC,CAAe,EAAIjgB,QAAAA,CAAyB6f,CAAO,EAGxExU,SAAAA,CAAU,IAAM,CACd4U,CAAAA,CAAgBJ,CAAO,EACzB,CAAA,CAAG,CAACA,CAAO,CAAC,CAAA,CAEZ,IAAM8H,CAAAA,CAAoB,CAACvd,EAA6BjR,CAAAA,GAAkB,CACxE8mB,CAAAA,CAAgBxU,CAAAA,GAAS,CAAE,GAAGA,EAAM,CAACrB,CAAK,EAAGjR,CAAM,CAAA,CAAE,EACvD,CAAA,CAEMyuB,CAAAA,CAAc,IAAM,CAExB,MAAA,CAAO,KAAK5H,CAAY,CAAA,CAAE,QAAQxZ,CAAAA,EAAO,CACvCsZ,EAAetZ,CAAAA,CAA6BwZ,CAAAA,CAAaxZ,CAA2B,CAAC,EACvF,CAAC,EACDkhB,CAAAA,EAAe,CACfrY,EAAQ,KAAK,EACf,EAEMwY,CAAAA,CAAc,IAAM,CACxB5H,CAAAA,CAAgB,CAAE,cAAe,EAAG,CAAC,EACrCF,CAAAA,EAAe,CACf1Q,EAAQ,KAAK,EACf,CAAA,CAEA,OACEjU,IAAAA,CAAC2R,EAAAA,CAAA,CAAM,IAAA,CAAMzN,CAAAA,CAAM,aAAc+P,CAAAA,CAC/B,QAAA,CAAA,CAAArV,IAACiT,EAAAA,CAAA,CAAa,QAAO,IAAA,CACnB,QAAA,CAAA7R,KAACwB,CAAAA,CAAA,CAAO,QAAQ,SAAA,CACd,QAAA,CAAA,CAAA5C,IAACqmB,MAAAA,CAAA,CAAO,SAAA,CAAU,cAAA,CAAe,CAAA,CAAE,SAAA,CAAA,CAErC,EACF,CAAA,CACAjlB,IAAAA,CAACmS,GAAA,CACC,QAAA,CAAA,CAAAvT,IAACyT,EAAAA,CAAA,CACC,SAAAzT,GAAAA,CAAC2T,EAAAA,CAAA,CAAW,QAAA,CAAA,iBAAA,CAAe,CAAA,CAC7B,EACA3T,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,gBAAA,CACb,QAAA,CAAAA,GAAAA,CAACqH,CAAAA,CAAA,CACC,KAAA,CAAM,iBACN,KAAA,CAAO2e,CAAAA,CAAa,cACpB,QAAA,CAAWjf,CAAAA,EAAM4mB,EAAkB,eAAA,CAAiB5mB,CAAAA,CAAE,OAAO,KAAK,CAAA,CAClE,YAAY,0BAAA,CACd,CAAA,CACF,EACA3F,IAAAA,CAACsS,EAAAA,CAAA,CACC,QAAA,CAAA,CAAA1T,GAAAA,CAAC4C,CAAAA,CAAA,CAAO,OAAA,CAAQ,SAAA,CAAU,QAASirB,CAAAA,CAAa,QAAA,CAAA,OAAA,CAEhD,EACA7tB,GAAAA,CAAC4C,CAAAA,CAAA,CAAO,OAAA,CAASgrB,CAAAA,CAAa,yBAE9B,CAAA,CAAA,CACF,CAAA,CAAA,CACF,GACF,CAEJ,CAAA,CC3EO,IAAME,EAAAA,CAAwB,CAAC,CAAE,kBAAA,CAAAC,CAAmB,CAAA,GAEvD3sB,IAAAA,CAAC,OAAI,SAAA,CAAU,WAAA,CAEb,UAAApB,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,mBAAA,CACb,QAAA,CAAAA,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,kBACb,QAAA,CAAAoB,IAAAA,CAAC,OAAA,CAAA,CAAM,SAAA,CAAU,oBAAA,CAEf,QAAA,CAAA,CAAApB,IAAC,OAAA,CAAA,CACC,QAAA,CAAAoB,KAAC,IAAA,CAAA,CAAG,SAAA,CAAU,uBACZ,QAAA,CAAA,CAAApB,GAAAA,CAAC,MAAG,KAAA,CAAO,CAAE,MAAO,OAAQ,CAAA,CAAG,UAAU,4EAAA,CAA6E,QAAA,CAAA,gBAAA,CAEtH,EACAA,GAAAA,CAAC,IAAA,CAAA,CAAG,KAAA,CAAO,CAAE,KAAA,CAAO,OAAQ,EAAG,SAAA,CAAU,4EAAA,CAA6E,gBAEtH,CAAA,CACAA,GAAAA,CAAC,MAAG,KAAA,CAAO,CAAE,MAAO,OAAQ,CAAA,CAAG,UAAU,4EAAA,CAA6E,QAAA,CAAA,cAAA,CAEtH,EACAA,GAAAA,CAAC,IAAA,CAAA,CAAG,MAAO,CAAE,KAAA,CAAO,OAAQ,CAAA,CAAG,SAAA,CAAU,4EAAA,CAA6E,yBAEtH,CAAA,CACC,CAAC+tB,GACA3sB,IAAAA,CAAAyK,QAAAA,CAAA,CACE,QAAA,CAAA,CAAA7L,GAAAA,CAAC,MAAG,KAAA,CAAO,CAAE,MAAO,OAAQ,CAAA,CAAG,UAAU,6EAAA,CAA8E,QAAA,CAAA,iBAAA,CAEvH,EACAA,GAAAA,CAAC,IAAA,CAAA,CAAG,KAAA,CAAO,CAAE,KAAA,CAAO,OAAQ,EAAG,SAAA,CAAU,6EAAA,CAA8E,6BAEvH,CAAA,CAAA,CACF,CAAA,CAEFA,IAAC,IAAA,CAAA,CAAG,KAAA,CAAO,CAAE,KAAA,CAAO,OAAQ,CAAA,CAAG,UAAU,4EAAA,CAA6E,QAAA,CAAA,QAAA,CAEtH,EACAA,GAAAA,CAAC,IAAA,CAAA,CAAG,MAAO,CAAE,KAAA,CAAO,OAAQ,CAAA,CAAG,SAAA,CAAU,4EAAA,CAA6E,uBAEtH,CAAA,CAAA,CACF,CAAA,CACF,EAGAA,GAAAA,CAAC,OAAA,CAAA,CACE,eAAM,IAAA,CAAK,CAAE,OAAQ,EAAG,CAAC,EAAE,GAAA,CAAI,CAAC4iB,EAAGlgB,CAAAA,GAClCtB,IAAAA,CAAC,MAAe,SAAA,CAAU,UAAA,CACxB,QAAA,CAAA,CAAApB,GAAAA,CAAC,IAAA,CAAA,CAAG,KAAA,CAAO,CAAE,KAAA,CAAO,OAAQ,EAAG,SAAA,CAAU,wBAAA,CACvC,SAAAA,GAAAA,CAACgrB,CAAAA,CAAA,CAAS,SAAA,CAAU,UAAA,CAAW,EACjC,CAAA,CACAhrB,GAAAA,CAAC,MAAG,KAAA,CAAO,CAAE,MAAO,OAAQ,CAAA,CAAG,SAAA,CAAU,wBAAA,CACvC,QAAA,CAAAA,GAAAA,CAACgrB,EAAA,CAAS,SAAA,CAAU,wBAAwB,CAAA,CAC9C,CAAA,CACAhrB,IAAC,IAAA,CAAA,CAAG,KAAA,CAAO,CAAE,KAAA,CAAO,OAAQ,EAAG,SAAA,CAAU,wBAAA,CACvC,SAAAA,GAAAA,CAACgrB,CAAAA,CAAA,CAAS,SAAA,CAAU,UAAA,CAAW,CAAA,CACjC,CAAA,CACAhrB,GAAAA,CAAC,IAAA,CAAA,CAAG,MAAO,CAAE,KAAA,CAAO,OAAQ,CAAA,CAAG,SAAA,CAAU,yBACvC,QAAA,CAAAA,GAAAA,CAACgrB,EAAA,CAAS,SAAA,CAAU,WAAW,CAAA,CACjC,CAAA,CACC,CAAC+C,CAAAA,EACA3sB,IAAAA,CAAAyK,SAAA,CACE,QAAA,CAAA,CAAA7L,GAAAA,CAAC,IAAA,CAAA,CAAG,KAAA,CAAO,CAAE,MAAO,OAAQ,CAAA,CAAG,UAAU,mCAAA,CACvC,QAAA,CAAAA,IAACgrB,CAAAA,CAAA,CAAS,UAAU,kBAAA,CAAmB,CAAA,CACzC,EACAhrB,GAAAA,CAAC,IAAA,CAAA,CAAG,MAAO,CAAE,KAAA,CAAO,OAAQ,CAAA,CAAG,SAAA,CAAU,mCAAA,CACvC,QAAA,CAAAA,GAAAA,CAACgrB,CAAAA,CAAA,CAAS,SAAA,CAAU,kBAAA,CAAmB,EACzC,CAAA,CAAA,CACF,CAAA,CAEFhrB,IAAC,IAAA,CAAA,CAAG,KAAA,CAAO,CAAE,KAAA,CAAO,OAAQ,EAAG,SAAA,CAAU,wBAAA,CACvC,SAAAA,GAAAA,CAACgrB,CAAAA,CAAA,CAAS,SAAA,CAAU,uBAAA,CAAwB,CAAA,CAC9C,CAAA,CACAhrB,GAAAA,CAAC,IAAA,CAAA,CAAG,MAAO,CAAE,KAAA,CAAO,OAAQ,CAAA,CAAG,SAAA,CAAU,yBACvC,QAAA,CAAAA,GAAAA,CAACgrB,EAAA,CAAS,SAAA,CAAU,WAAW,CAAA,CACjC,CAAA,CAAA,CAAA,CA5BOtoB,CA6BT,CACD,CAAA,CACH,GACF,CAAA,CACF,CAAA,CACF,CAAA,CAGAtB,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yCACb,QAAA,CAAA,CAAApB,GAAAA,CAACgrB,EAAA,CAAS,SAAA,CAAU,WAAW,CAAA,CAC/B5pB,IAAAA,CAAC,OAAI,SAAA,CAAU,yBAAA,CACb,UAAApB,GAAAA,CAACgrB,CAAAA,CAAA,CAAS,SAAA,CAAU,qBAAA,CAAsB,EAC1ChrB,GAAAA,CAACgrB,CAAAA,CAAA,CAAS,SAAA,CAAU,UAAA,CAAW,CAAA,CAC/BhrB,IAACgrB,CAAAA,CAAA,CAAS,UAAU,qBAAA,CAAsB,CAAA,CAAA,CAC5C,GACF,CAAA,CAAA,CACF,CAAA,CC5EG,IAAMgD,GAAe,CAAC,CAC3B,MAAApH,CAAAA,CACA,OAAA,CAAAf,CAAAA,CACA,cAAA,CAAAC,CAAAA,CACA,cAAA,CAAAC,EACA,cAAA,CAAA2H,CAAAA,CACA,UAAAnmB,CAAAA,CACA,KAAA,CAAAlE,EACA,OAAA,CAAA8oB,CAAAA,CACA,QAAA9f,CAAAA,CACA,gBAAA,CAAA4hB,EACA,kBAAA,CAAAF,CACF,IAoEI3sB,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,2CAAA,CAEb,QAAA,CAAA,CAAApB,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,+FAAA,CACb,SAAAA,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wCAAA,CACb,QAAA,CAAAoB,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,oCACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,MAAG,SAAA,CAAU,oCAAA,CAAqC,oBAAQ,CAAA,CAC3DA,GAAAA,CAACytB,GAAA,CACC,OAAA,CAAS5H,CAAAA,CACT,cAAA,CAAgBC,CAAAA,CAChB,cAAA,CAAgBC,EAChB,cAAA,CAAgB2H,CAAAA,CAClB,GACF,CAAA,CACF,CAAA,CACF,EAGA1tB,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wBAAA,CACb,QAAA,CAAAA,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yDACZ,QAAA,CArFHuH,CAAAA,CAEAvH,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,gCAAA,CACb,QAAA,CAAAA,GAAAA,CAAC8tB,EAAAA,CAAA,CAAsB,kBAAA,CAAoBC,CAAAA,CAAoB,EACjE,CAAA,CAIA1qB,CAAAA,CAEArD,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,0CACb,QAAA,CAAAoB,IAAAA,CAAC,OAAI,SAAA,CAAU,uDAAA,CACb,UAAAA,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,uFAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAACuY,WAAAA,CAAA,CAAY,SAAA,CAAU,yCAAyC,CAAA,CAChEnX,IAAAA,CAAC,OAAI,SAAA,CAAU,qBAAA,CACb,UAAApB,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,sCAAA,CAAuC,QAAA,CAAA,yBAAA,CAAuB,EAC3EA,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,+BAAA,CAAiC,QAAA,CAAAqD,EAAM,CAAA,CAAA,CACtD,CAAA,CAAA,CACF,CAAA,CACC8oB,CAAAA,EACC/qB,IAAAA,CAACwB,CAAAA,CAAA,CAAO,OAAA,CAAQ,SAAA,CAAU,QAASupB,CAAAA,CACjC,QAAA,CAAA,CAAAnsB,IAAC+B,SAAAA,CAAA,CAAU,UAAU,cAAA,CAAe,CAAA,CAAE,SAExC,CAAA,CAAA,CAEJ,CAAA,CACF,EAIAsK,CAAAA,CAEArM,GAAAA,CAAC,OAAI,SAAA,CAAU,yCAAA,CACb,QAAA,CAAAoB,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wDACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,OAAI,SAAA,CAAU,kEAAA,CACb,SAAAA,GAAAA,CAACkuB,KAAAA,CAAA,CAAM,SAAA,CAAU,+BAAA,CAAgC,CAAA,CACnD,EACA9sB,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,WAAA,CACb,QAAA,CAAA,CAAApB,IAAC,IAAA,CAAA,CAAG,SAAA,CAAU,uCAAA,CACX,QAAA,CAAAiuB,CAAAA,CAAmB,sBAAA,CAAyB,oBAC/C,CAAA,CACAjuB,GAAAA,CAAC,KAAE,SAAA,CAAU,+BAAA,CACV,SAAAiuB,CAAAA,CACG,6DAAA,CACA,iDAEN,CAAA,CAAA,CACF,CAAA,CACCA,GACCjuB,GAAAA,CAAC4C,CAAAA,CAAA,CAAO,OAAA,CAAQ,SAAA,CAAU,QAASmjB,CAAAA,CAAgB,QAAA,CAAA,eAAA,CAEnD,CAAA,CAAA,CAEJ,CAAA,CACF,CAAA,CAKF/lB,GAAAA,CAAC,OAAI,SAAA,CAAU,gCAAA,CACZ,SAAA4mB,CAAAA,CACH,CAAA,CAyBE,EACF,CAAA,CAAA,CACF,EChGG,IAAMuH,EAAAA,CAA0B,CAAC,CACtC,OAAA,CAAAtI,CAAAA,CACA,cAAAb,CAAAA,CACA,cAAA,CAAAc,EACA,cAAA,CAAAC,CAAAA,CACA,eAAA2H,CACF,CAAA,GAAoC,CAClC,GAAM,CAAC1H,EAAcC,CAAe,CAAA,CAAIjgB,QAAAA,CAA6B6f,CAAO,CAAA,CACtE,CAACvgB,EAAM+P,CAAO,CAAA,CAAIrP,SAAS,KAAK,CAAA,CAEtCqL,UAAU,IAAM,CACd4U,EAAgBJ,CAAO,EACzB,EAAG,CAACA,CAAO,CAAC,CAAA,CAEZ,IAAMK,EAA0B,CAAC9V,CAAAA,CAAiCjR,CAAAA,GAAqC,CACrG8mB,CAAAA,CAAiBxU,CAAAA,GAAU,CAAE,GAAGA,CAAAA,CAAM,CAACrB,CAAK,EAAGjR,CAAM,CAAA,CAAE,EACzD,EAEMyuB,CAAAA,CAAc,IAAM,CACxB,MAAA,CAAO,OAAA,CAAQ5H,CAAY,CAAA,CAAE,OAAA,CAAQ,CAAC,CAACxZ,CAAAA,CAAKrN,CAAK,CAAA,GAAM,CACrD2mB,CAAAA,CAAetZ,EAAiCrN,CAAK,EACvD,CAAC,CAAA,CACDuuB,CAAAA,GACArY,CAAAA,CAAQ,KAAK,EACf,CAAA,CAEMwY,CAAAA,CAAc,IAAM,CASxB5H,CAAAA,CARkC,CAChC,IAAA,CAAM,EAAA,CACN,YAAa,EAAA,CACb,MAAA,CAAQ,EAAA,CACR,gBAAA,CAAkB,MAAA,CAClB,cAAA,CAAgB,MAClB,CAEqB,CAAA,CACrBF,GAAe,CACf1Q,CAAAA,CAAQ,KAAK,EACf,CAAA,CAEA,OACEjU,IAAAA,CAAC2R,EAAAA,CAAA,CAAM,IAAA,CAAMzN,CAAAA,CAAM,aAAc+P,CAAAA,CAC/B,QAAA,CAAA,CAAArV,IAACiT,EAAAA,CAAA,CAAa,OAAA,CAAO,IAAA,CACnB,QAAA,CAAA7R,IAAAA,CAACwB,EAAA,CAAO,OAAA,CAAQ,UAAU,SAAA,CAAU,OAAA,CAClC,UAAA5C,GAAAA,CAACqmB,MAAAA,CAAA,CAAO,SAAA,CAAU,SAAA,CAAU,EAAE,SAAA,CAAA,CAEhC,CAAA,CACF,EACAjlB,IAAAA,CAACmS,EAAAA,CAAA,CAAa,IAAA,CAAK,OAAA,CAAQ,SAAA,CAAU,oCAAA,CACnC,QAAA,CAAA,CAAAvT,GAAAA,CAACyT,GAAA,CACC,QAAA,CAAAzT,IAAC2T,EAAAA,CAAA,CAAW,8BAAkB,CAAA,CAChC,CAAA,CAEAvS,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,iBACb,QAAA,CAAA,CAAApB,GAAAA,CAACqH,EAAA,CACC,KAAA,CAAM,OACN,KAAA,CAAO2e,CAAAA,CAAa,IAAA,CACpB,QAAA,CAAWjf,CAAAA,EAAMmf,CAAAA,CAAwB,OAAQnf,CAAAA,CAAE,MAAA,CAAO,KAAK,CAAA,CAC/D,WAAA,CAAY,wBACd,CAAA,CAEA/G,GAAAA,CAACqH,EAAA,CACC,KAAA,CAAM,eACN,KAAA,CAAO2e,CAAAA,CAAa,YACpB,QAAA,CAAWjf,CAAAA,EAAMmf,EAAwB,aAAA,CAAenf,CAAAA,CAAE,MAAA,CAAO,KAAK,CAAA,CACtE,WAAA,CAAY,qBACd,CAAA,CAEA/G,GAAAA,CAACyD,EAAA,CACC,KAAA,CAAM,SACN,KAAA,CAAOuiB,CAAAA,CAAa,OACpB,aAAA,CAAgB7mB,CAAAA,EAAU+mB,EAAwB,QAAA,CAAU/mB,CAAK,EACjE,WAAA,CAAY,eAAA,CACZ,QAAS6lB,CAAAA,CACX,CAAA,CAEA5jB,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wBAAA,CACb,UAAAA,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,WAAA,CACb,QAAA,CAAA,CAAApB,IAAC,OAAA,CAAA,CAAM,SAAA,CAAU,sBAAsB,QAAA,CAAA,oBAAA,CAAkB,CAAA,CACzDA,IAACkhB,EAAAA,CAAA,CACC,KAAM8E,CAAAA,CAAa,gBAAA,CACnB,aAAe7E,CAAAA,EAAS+E,CAAAA,CAAwB,kBAAA,CAAoB/E,CAAI,CAAA,CACxE,WAAA,CAAY,aACZ,eAAA,CAAgB,QAAA,CAChB,UAAU,oBAAA,CACZ,CAAA,CAAA,CACF,EAEA/f,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,WAAA,CACb,QAAA,CAAA,CAAApB,IAAC,OAAA,CAAA,CAAM,SAAA,CAAU,sBAAsB,QAAA,CAAA,kBAAA,CAAgB,CAAA,CACvDA,IAACkhB,EAAAA,CAAA,CACC,IAAA,CAAM8E,CAAAA,CAAa,cAAA,CACnB,YAAA,CAAe7E,GAAS+E,CAAAA,CAAwB,gBAAA,CAAkB/E,CAAI,CAAA,CACtE,WAAA,CAAY,aACZ,eAAA,CAAgB,QAAA,CAChB,UAAU,oBAAA,CACZ,CAAA,CAAA,CACF,GACF,CAAA,CAAA,CACF,CAAA,CAEA/f,KAACsS,EAAAA,CAAA,CAAY,UAAU,OAAA,CACrB,QAAA,CAAA,CAAA1T,GAAAA,CAAC4C,CAAAA,CAAA,CAAO,OAAA,CAAQ,UAAU,OAAA,CAASirB,CAAAA,CAAa,yBAEhD,CAAA,CACA7tB,GAAAA,CAAC4C,EAAA,CAAO,OAAA,CAASgrB,EAAa,QAAA,CAAA,eAAA,CAAa,CAAA,CAAA,CAC7C,GACF,CAAA,CAAA,CACF,CAEJ,ECzHO,IAAMQ,EAAAA,CAAkB,CAAC,CAC9B,MAAArtB,CAAAA,CAAQ,aAAA,CACR,QAAA8kB,CAAAA,CACA,aAAA,CAAAb,EACA,cAAA,CAAAc,CAAAA,CACA,cAAA,CAAAC,CAAAA,CACA,cAAA,CAAA2H,CAAAA,CACA,mBAAAW,CAAAA,CACA,KAAA,CAAAzH,CACF,CAAA,GAEIxlB,IAAAA,CAAC,OAAI,SAAA,CAAU,2CAAA,CAEb,QAAA,CAAA,CAAApB,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,gGACb,QAAA,CAAAA,GAAAA,CAAC,OAAI,SAAA,CAAU,wCAAA,CACb,SAAAoB,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,mCAAA,CACb,QAAA,CAAA,CAAApB,IAAC,KAAA,CAAA,CACC,QAAA,CAAAA,IAAC,IAAA,CAAA,CAAG,SAAA,CAAU,qCAAsC,QAAA,CAAAe,CAAAA,CAAM,CAAA,CAC5D,CAAA,CACAK,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,yBAAA,CACb,QAAA,CAAA,CAAApB,IAACmuB,EAAAA,CAAA,CACC,QAAStI,CAAAA,CACT,aAAA,CAAeb,EACf,cAAA,CAAgBc,CAAAA,CAChB,eAAgBC,CAAAA,CAChB,cAAA,CAAgB2H,EAClB,CAAA,CACA1tB,GAAAA,CAAC4C,EAAA,CAAO,OAAA,CAASyrB,CAAAA,CAAoB,QAAA,CAAA,mBAAA,CAAiB,CAAA,CAAA,CACxD,CAAA,CAAA,CACF,EACF,CAAA,CACF,CAAA,CAGAruB,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yBACb,QAAA,CAAAA,GAAAA,CAAC,OAAI,SAAA,CAAU,wDAAA,CACb,SAAAA,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,2BAAA,CAA6B,QAAA,CAAA4mB,EAAM,CAAA,CACpD,CAAA,CACF,CAAA,CAAA,CACF,ECnDmC9U,EAAE,MAAA,CAAO,CAE9C,SAAA,CAAWA,CAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAA,CAAG,wBAAwB,EACrD,QAAA,CAAUA,CAAAA,CAAE,QAAO,CAAE,GAAA,CAAI,EAAG,uBAAuB,CAAA,CACnD,YAAaA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAGjC,OAAQA,CAAAA,CAAE,IAAA,CAAK,CAAC,KAAA,CAAO,MAAA,CAAQ,UAAA,CAAY,gBAAgB,CAAC,CAAA,CAAE,UAAS,CACvE,QAAA,CAAUA,EAAE,MAAA,EAAO,CAAE,UAAS,CAC9B,GAAA,CAAKA,EAAE,MAAA,EAAO,CAAE,UAAS,CAGzB,KAAA,CAAOA,EAAE,MAAA,EAAO,CAAE,KAAA,CAAM,uBAAuB,CAAA,CAAE,QAAA,GACjD,WAAA,CAAaA,CAAAA,CAAE,QAAO,CAAE,QAAA,GAGxB,aAAA,CAAeA,CAAAA,CAAE,QAAO,CAAE,QAAA,GAC1B,SAAA,CAAWA,CAAAA,CAAE,QAAO,CAAE,QAAA,GACtB,IAAA,CAAMA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS,CAC1B,MAAOA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAC3B,WAAYA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAChC,QAASA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAG7B,WAAYA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS,CAChC,SAAA,CAAWA,EAAE,MAAA,EAAO,CAAE,UACxB,CAAC,MAMYwc,EAAAA,CAA8Bxc,CAAAA,CAAE,OAAO,CAElD,SAAA,CAAWA,EAAE,MAAA,EAAO,CAAE,UAAS,CAC/B,QAAA,CAAUA,EAAE,MAAA,EAAO,CAAE,QAAA,EAAS,CAC9B,WAAA,CAAaA,CAAAA,CAAE,QAAO,CAAE,QAAA,GAGxB,MAAA,CAAQA,CAAAA,CAAE,QAAO,CAAE,QAAA,GACnB,QAAA,CAAUA,CAAAA,CAAE,QAAO,CAAE,QAAA,GACrB,GAAA,CAAKA,CAAAA,CAAE,QAAO,CAAE,QAAA,EAAS,CAGzB,KAAA,CAAOA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAC3B,YAAaA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAGjC,cAAeA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CACnC,UAAWA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAC/B,IAAA,CAAMA,CAAAA,CAAE,MAAA,EAAO,CAAE,UAAS,CAC1B,KAAA,CAAOA,EAAE,MAAA,EAAO,CAAE,UAAS,CAC3B,UAAA,CAAYA,EAAE,MAAA,EAAO,CAAE,UAAS,CAChC,OAAA,CAASA,EAAE,MAAA,EAAO,CAAE,UAAS,CAG7B,UAAA,CAAYA,CAAAA,CAAE,MAAA,CAAO,MAAA,EAAO,CAAE,UAAS,CACvC,SAAA,CAAWA,EAAE,MAAA,CAAO,MAAA,GAAS,QAAA,EAC/B,CAAC,ECzCM,IAAMyc,EAAAA,CAAwB,CAAC,CACpC,KAAA,CAAApvB,EACA,SAAA,CAAAmS,CAAAA,CACA,aAAAd,CAAAA,CACA,MAAA,CAAAC,EACA,SAAA,CAAAhR,CAAAA,CACA,iBAAA4b,CACF,CAAA,GAAkC,CAChC,GAAM,CAACE,EAAoBiT,CAAqB,CAAA,CAAIxoB,QAAAA,CAAS,KAAK,CAAA,CAI5DyoB,CAAAA,CAAgBC,QAAQ,KAAO,CAAE,GAAGvvB,CAAM,CAAA,CAAA,CAAI,CAACA,CAAK,CAAC,EAErDqQ,CAAAA,CAAOa,EAAAA,CAA4C,CACvD,MAAA,CAAQie,EAAAA,CACR,cAAAG,CAAAA,CACA,cAAA,CAAgBnd,EAChB,YAAA,CAAAd,CAAAA,CACA,MAAA,CAAQ,MAAOlF,CAAAA,EAAS,CACtB,MAAMmF,CAAAA,GAASnF,CAAI,EACrB,CACF,CAAC,EAEK4O,CAAAA,CACJla,GAAAA,CAACuP,GAAA,CAAa,IAAA,CAAMC,EAClB,QAAA,CAAApO,IAAAA,CAAC,OAAI,SAAA,CAAU,WAAA,CAEb,UAAAA,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,uCAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC0P,EAAA,CACC,IAAA,CAAK,YACL,KAAA,CAAM,YAAA,CACN,YAAY,kBAAA,CACZ,QAAA,CAAQ,KACV,CAAA,CAEA1P,GAAAA,CAAC0P,EAAA,CACC,IAAA,CAAK,WACL,KAAA,CAAM,WAAA,CACN,YAAY,iBAAA,CACZ,QAAA,CAAQ,IAAA,CACV,CAAA,CAEA1P,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,aAAA,CACL,MAAM,eAAA,CACN,WAAA,CAAY,aACd,CAAA,CAEA1P,GAAAA,CAACmQ,GAAA,CACC,IAAA,CAAK,SACL,KAAA,CAAM,SAAA,CACN,YAAY,gBAAA,CACZ,OAAA,CAAS,CACP,CAAE,KAAA,CAAO,KAAA,CAAO,KAAA,CAAO,KAAM,CAAA,CAC7B,CAAE,KAAA,CAAO,MAAA,CAAQ,MAAO,MAAO,CAAA,CAC/B,CAAE,KAAA,CAAO,UAAA,CAAY,MAAO,UAAW,CAAA,CACvC,CAAE,KAAA,CAAO,gBAAA,CAAkB,MAAO,gBAAiB,CACrD,EACF,CAAA,CAEAnQ,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,UAAA,CACL,MAAM,WAAA,CACN,WAAA,CAAY,kBACd,CAAA,CAEA1P,GAAAA,CAAC0P,EAAA,CACC,IAAA,CAAK,MACL,KAAA,CAAM,UAAA,CACN,YAAY,mBAAA,CACZ,IAAA,CAAK,+BACP,CAAA,CAEA1P,GAAAA,CAAC0P,EAAA,CACC,IAAA,CAAK,OAAA,CACL,KAAA,CAAM,OAAA,CACN,IAAA,CAAK,QACL,WAAA,CAAY,qBAAA,CACd,EAEA1P,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,aAAA,CACL,MAAM,cAAA,CACN,WAAA,CAAY,qBACd,CAAA,CAAA,CACF,CAAA,CAGAtO,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yBACb,QAAA,CAAA,CAAApB,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,eAAA,CACL,MAAM,gBAAA,CACN,WAAA,CAAY,uBACd,CAAA,CAEA1P,GAAAA,CAAC0P,EAAA,CACC,IAAA,CAAK,YACL,KAAA,CAAM,gBAAA,CACN,YAAY,gCAAA,CACd,CAAA,CAAA,CACF,EAEAtO,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,uCAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,OACL,KAAA,CAAM,MAAA,CACN,YAAY,YAAA,CACd,CAAA,CAEA1P,IAAC0P,CAAAA,CAAA,CACC,KAAK,OAAA,CACL,KAAA,CAAM,QACN,WAAA,CAAY,aAAA,CACd,EAEA1P,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,YAAA,CACL,KAAA,CAAM,aAAA,CACN,WAAA,CAAY,mBAAA,CACd,EAEA1P,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,SAAA,CACL,MAAM,SAAA,CACN,WAAA,CAAY,gBACd,CAAA,CAAA,CACF,CAAA,CAGAtO,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wCACb,QAAA,CAAA,CAAApB,GAAAA,CAAC0P,EAAA,CACC,IAAA,CAAK,YAAA,CACL,KAAA,CAAM,aAAA,CACN,WAAA,CAAY,OACZ,QAAA,CAAQ,IAAA,CACV,EAEA1P,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,WAAA,CACL,MAAM,YAAA,CACN,WAAA,CAAY,aACZ,QAAA,CAAQ,IAAA,CACV,GACF,CAAA,CAAA,CACF,CAAA,CACF,EAGIoM,CAAAA,CAAatM,CAAAA,CAAK,KAAA,EAAM,CAExB2K,CAAAA,CACJ/Y,IAAAA,CAAC,OAAI,SAAA,CAAU,WAAA,CACb,UAAAA,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wBAAA,CACb,QAAA,CAAA,CAAApB,IAAC0J,CAAAA,CAAA,CAAU,MAAM,YAAA,CAAa,KAAA,CAAOoS,GAAY,SAAA,EAAa,GAAA,CAAK,OAAO,YAAA,CAAa,CAAA,CACvF9b,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,YAAY,KAAA,CAAOoS,CAAAA,EAAY,UAAY,GAAA,CAAK,MAAA,CAAO,aAAa,CAAA,CAAA,CACvF,CAAA,CACA1a,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yBACb,QAAA,CAAA,CAAApB,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,gBAAgB,KAAA,CAAOoS,CAAAA,EAAY,WAAA,EAAe,GAAA,CAAK,MAAA,CAAO,YAAA,CAAa,EAC5F9b,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,SAAA,CAAU,MAAOoS,CAAAA,EAAY,MAAA,EAAU,IAAK,MAAA,CAAO,YAAA,CAAa,GACnF,CAAA,CACA1a,IAAAA,CAAC,OAAI,SAAA,CAAU,wBAAA,CACb,UAAApB,GAAAA,CAAC0J,CAAAA,CAAA,CACC,KAAA,CAAM,WAAA,CACN,KAAA,CACEoS,GAAY,QAAA,CACV1a,IAAAA,CAAC,OAAI,SAAA,CAAU,yBAAA,CACb,UAAApB,GAAAA,CAAC,MAAA,CAAA,CAAM,SAAAub,CAAAA,CAAqB,MAAA,CAAOO,EAAW,QAAQ,CAAA,CAAI,+DAAa,CAAA,CACvE9b,GAAAA,CAAC,UACC,IAAA,CAAK,QAAA,CACL,OAAA,CAAS,IAAMwuB,CAAAA,CAAuBG,CAAAA,EAAM,CAACA,CAAC,CAAA,CAC9C,UAAU,+DAAA,CAET,QAAA,CAAApT,EAAqBvb,GAAAA,CAACgC,GAAAA,CAAA,CAAI,SAAA,CAAU,SAAA,CAAU,EAAKhC,GAAAA,CAACic,MAAAA,CAAA,CAAO,SAAA,CAAU,SAAA,CAAU,EAClF,CAAA,CAAA,CACF,CAAA,CAEA,GAAA,CAGJ,MAAA,CAAO,YAAA,CACT,CAAA,CACAjc,IAAC0J,CAAAA,CAAA,CAAU,MAAM,UAAA,CAAW,KAAA,CAAOoS,GAAY,GAAA,EAAO,GAAA,CAAK,OAAO,YAAA,CAAa,CAAA,CAAA,CACjF,EACA1a,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wBAAA,CACb,QAAA,CAAA,CAAApB,IAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,OAAA,CAAQ,KAAA,CAAOoS,CAAAA,EAAY,OAAS,GAAA,CAAK,MAAA,CAAO,aAAa,CAAA,CAC9E9b,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,cAAA,CAAe,KAAA,CAAOoS,CAAAA,EAAY,WAAA,EAAe,IAAK,MAAA,CAAO,YAAA,CAAa,GAC7F,CAAA,CAEA9b,GAAAA,CAAC0J,EAAA,CACC,KAAA,CAAM,SAAA,CACN,KAAA,CAAOoS,CAAAA,EAAY,aAAA,CAAgB,GAAGA,CAAAA,CAAW,aAAa,GAAGA,CAAAA,CAAW,SAAA,CAAY,KAAOA,CAAAA,CAAW,SAAA,CAAY,EAAE,CAAA,EAAA,EAAKA,CAAAA,CAAW,IAAI,CAAA,EAAA,EAAKA,CAAAA,CAAW,KAAK,CAAA,CAAA,EAAIA,CAAAA,CAAW,UAAU,CAAA,EAAA,EAAKA,CAAAA,CAAW,OAAO,CAAA,CAAA,CAAK,GAAA,CACtN,MAAA,CAAO,aACT,CAAA,CAEA1a,IAAAA,CAAC,OAAI,SAAA,CAAU,wBAAA,CACb,UAAApB,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,aAAA,CAAc,MAAOoS,CAAAA,EAAY,UAAA,EAAc,IAAK,MAAA,CAAO,YAAA,CAAa,EACzF9b,GAAAA,CAAC0J,CAAAA,CAAA,CACC,KAAA,CAAM,YAAA,CACN,KAAA,CACEoS,GAAY,SAAA,EAAaT,CAAAA,CACvBrb,IAAC,QAAA,CAAA,CACC,IAAA,CAAK,SACL,OAAA,CAAS,IAAMqb,EAAiB,MAAA,CAAOS,CAAAA,CAAW,SAAS,CAAC,CAAA,CAC5D,UAAU,0CAAA,CAET,QAAA,CAAAA,EAAW,SAAA,CACd,CAAA,CAEAA,CAAAA,EAAY,SAAA,EAAa,GAAA,CAG7B,MAAA,CAAO,aACT,CAAA,CAAA,CACF,CAAA,CAAA,CACF,EAGF,OACE9b,GAAAA,CAACga,GAAA,CACC,KAAA,CAAM,qBACN,OAAA,CAAQ,QAAA,CACR,UAAWva,CAAAA,CACX,SAAA,CAAW+P,EAAK,SAAA,CAChB,YAAA,CAAcA,EAAK,gBAAA,CACnB,MAAA,CAAQA,CAAAA,CAAK,UAAA,CACb,QAAA,CAAUA,CAAAA,CAAK,aACf,WAAA,CAAa0K,CAAAA,CACb,YAAaC,CAAAA,CACf,CAEJ,ECvOA,IAAMyU,EAAAA,CAA0C,CAC9C,CACE,EAAA,CAAI,GAAA,CACJ,OAAQ,oBAAA,CACR,IAAA,CAAM,QACN,OAAA,CAAS,0BAAA,CACT,OAAQ,QAAA,CACR,SAAA,CAAW,qBACb,CAAA,CACA,CACE,GAAI,GAAA,CACJ,MAAA,CAAQ,8BACR,IAAA,CAAM,YAAA,CACN,OAAA,CAAS,kCAAA,CACT,SAAA,CAAW,qBACb,EACA,CACE,EAAA,CAAI,IACJ,MAAA,CAAQ,4BAAA,CACR,KAAM,iBAAA,CACN,OAAA,CAAS,8BACT,MAAA,CAAQ,UAAA,CACR,UAAW,qBACb,CAAA,CACA,CACE,EAAA,CAAI,GAAA,CACJ,OAAQ,sBAAA,CACR,IAAA,CAAM,QAAA,CACN,OAAA,CAAS,4BAAA,CACT,MAAA,CAAQ,WACR,SAAA,CAAW,qBACb,CACF,CAAA,CAEaC,EAAAA,CAAuB,CAAC,CAAE,SAAA,CAAAvd,EAAW,YAAA,CAAAd,CAAAA,CAAc,UAAA/Q,CAAU,CAAA,GAAiC,CACzG,IAAMgC,CAAAA,CAAWC,GACXA,CAAAA,CAAO,QAAA,CAAS,SAAS,CAAA,CAAU1B,GAAAA,CAACoC,MAAAA,CAAA,CAAO,SAAA,CAAU,SAAA,CAAU,EAC/DV,CAAAA,CAAO,QAAA,CAAS,UAAU,CAAA,CAAU1B,GAAAA,CAACqC,SAAA,CAAS,SAAA,CAAU,UAAU,CAAA,CAClEX,CAAAA,CAAO,SAAS,SAAS,CAAA,EAAKA,EAAO,QAAA,CAAS,UAAU,CAAA,EAAKA,CAAAA,CAAO,QAAA,CAAS,OAAO,GAAKA,CAAAA,CAAO,QAAA,CAAS,UAAU,CAAA,CAAU1B,GAAAA,CAACsC,KAAA,CAAK,SAAA,CAAU,UAAU,CAAA,CACvJZ,CAAAA,CAAO,SAAS,WAAW,CAAA,EAAKA,EAAO,QAAA,CAAS,UAAU,EAAU1B,GAAAA,CAAC6B,WAAAA,CAAA,CAAY,SAAA,CAAU,SAAA,CAAU,CAAA,CAClG7B,IAACoC,MAAAA,CAAA,CAAO,UAAU,SAAA,CAAU,CAAA,CAG/BG,EAAkBC,CAAAA,EAAoB,CAC1C,OAAQA,CAAAA,EACN,KAAK,QAAA,CACL,KAAK,WACH,OAAO,cAAA,CACT,KAAK,SAAA,CACH,OAAO,cAAA,CACT,QACE,OAAO,uBACX,CACF,CAAA,CAEA,OACExC,IAACa,EAAAA,CAAA,CACC,MAAM,UAAA,CACN,SAAA,CAAWpB,EAEX,QAAA,CAAAO,GAAAA,CAAC,OAAI,SAAA,CAAU,WAAA,CACZ,SAAA4uB,EAAAA,CAAuB,GAAA,CAAI,CAACnsB,CAAAA,CAAOC,CAAAA,GAClCtB,IAAAA,CAAC,KAAA,CAAA,CAAmB,SAAA,CAAU,oBAAA,CAE3B,UAAAsB,CAAAA,GAAUksB,EAAAA,CAAuB,OAAS,CAAA,EACzC5uB,GAAAA,CAAC,OAAI,SAAA,CAAU,sDAAA,CAAuD,EAIxEA,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAWlB,CAAAA,CACd,iCAAA,CACAyD,EAAeE,CAAAA,CAAM,MAAM,CAC7B,CAAA,CACE,QAAA,CAAAzC,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,SAAA,CACZ,SAAAyB,CAAAA,CAAQgB,CAAAA,CAAM,MAAM,CAAA,CACvB,CAAA,CACF,EAGArB,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,aAAA,CACb,QAAA,CAAA,CAAApB,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,sCAAuC,QAAA,CAAAyC,CAAAA,CAAM,OAAO,CAAA,CACjErB,IAAAA,CAAC,GAAA,CAAA,CAAE,SAAA,CAAU,+BAAA,CAAgC,QAAA,CAAA,CAAA,KAAA,CAAIqB,EAAM,IAAA,CAAA,CAAK,CAAA,CAC3DA,EAAM,OAAA,EACLzC,GAAAA,CAAC,KAAE,SAAA,CAAU,+BAAA,CAAiC,SAAAyC,CAAAA,CAAM,OAAA,CAAQ,EAE7DA,CAAAA,CAAM,MAAA,EACLrB,KAAC,GAAA,CAAA,CAAE,SAAA,CAAWtC,EAAG,qBAAA,CAAuByD,CAAAA,CAAeE,CAAAA,CAAM,MAAM,CAAC,CAAA,CAAG,qBAC5DA,CAAAA,CAAM,MAAA,CAAA,CACjB,EAEFzC,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,yCAAA,CACV,QAAA,CAAAyC,CAAAA,CAAM,SAAA,CACT,CAAA,CAAA,CACF,CAAA,CAAA,CAAA,CA/BQA,EAAM,EAgChB,CACD,EACH,CAAA,CACF,CAEJ,ECzGA,IAAMqsB,EAAAA,CAAwBhd,CAAAA,CAAE,MAAA,CAAO,CACrC,aAAA,CAAeA,EAAE,MAAA,EAAO,CAAE,UAAS,CACnC,aAAA,CAAeA,EAAE,MAAA,EAAO,CAAE,UAAS,CACnC,QAAA,CAAUA,EAAE,MAAA,EAAO,CAAE,UAAS,CAC9B,eAAA,CAAiBA,EAAE,MAAA,EAAO,CAAE,QAAA,EAC9B,CAAC,CAAA,CAUYid,GAA2B,CAAC,CAAE,KAAAzpB,CAAAA,CAAM,YAAA,CAAA2M,EAAc,QAAA,CAAAiQ,CAAS,IAAqC,CAC3G,GAAM,CAAC3a,CAAAA,CAAWuJ,CAAY,EAAI9K,QAAAA,CAAS,KAAK,EAE1CwJ,CAAAA,CAAOuB,OAAAA,CAAiC,CAC5C,QAAA,CAAUC,WAAAA,CAAY8d,EAAqB,EAC3C,aAAA,CAAe,CACb,cAAe,EAAA,CACf,aAAA,CAAe,GACf,QAAA,CAAU,EAAA,CACV,gBAAiB,UACnB,CACF,CAAC,CAAA,CAEK3c,CAAAA,CAAe,MAAO7G,CAAAA,EAAkC,CAC5DwF,EAAa,IAAI,CAAA,CACjB,GAAI,CAGF,GAFe,MAAMoR,IAAW5W,CAAI,CAAA,GAErB,GAAO,CACpBvG,KAAAA,CAAM,MAAM,iEAAiE,CAAA,CAC7E,MACF,CAEAyK,CAAAA,CAAK,OAAM,CACXyC,CAAAA,CAAa,EAAK,EACpB,CAAA,MAAS5O,EAAO,CACd,OAAA,CAAQ,KAAA,CAAM,kCAAA,CAAoCA,CAAK,CAAA,CACvD0B,MAAM,KAAA,CAAM,kDAAkD,EAChE,CAAA,OAAE,CACA+L,EAAa,KAAK,EACpB,CACF,CAAA,CAEA,OACE9Q,IAACyK,EAAAA,CAAA,CAAO,KAAMnF,CAAAA,CAAM,YAAA,CAAc2M,EAChC,QAAA,CAAA7Q,IAAAA,CAAC2J,EAAAA,CAAA,CAAc,SAAA,CAAU,+CAAA,CACvB,UAAA/K,GAAAA,CAACiL,EAAAA,CAAA,CACC,QAAA,CAAAjL,GAAAA,CAACmL,GAAA,CAAY,QAAA,CAAA,sBAAA,CAAoB,EACnC,CAAA,CAEAnL,GAAAA,CAACuP,GAAA,CAAa,IAAA,CAAMC,EAClB,QAAA,CAAApO,IAAAA,CAAC,QAAK,QAAA,CAAUoO,CAAAA,CAAK,YAAA,CAAa2C,CAAY,CAAA,CAAG,SAAA,CAAU,YACzD,QAAA,CAAA,CAAA/Q,IAAAA,CAACkf,GAAA,CAAY,OAAA,CAAQ,KACnB,QAAA,CAAA,CAAAtgB,GAAAA,CAAC0P,EAAA,CAAU,IAAA,CAAK,gBAAgB,KAAA,CAAM,gBAAA,CAAiB,YAAY,KAAA,CAAM,CAAA,CACzE1P,IAAC0P,CAAAA,CAAA,CAAU,IAAA,CAAK,eAAA,CAAgB,KAAA,CAAM,gBAAA,CAAiB,YAAY,KAAA,CAAM,CAAA,CACzE1P,IAAC0P,CAAAA,CAAA,CAAU,KAAK,UAAA,CAAW,KAAA,CAAM,YAAY,WAAA,CAAY,MAAA,CAAO,EAChE1P,GAAAA,CAACmQ,EAAAA,CAAA,CACC,IAAA,CAAK,iBAAA,CACL,MAAM,mBAAA,CACN,WAAA,CAAY,aAAA,CACZ,OAAA,CAAS,CACP,CAAE,MAAO,UAAA,CAAY,KAAA,CAAO,UAAW,CAAA,CACvC,CAAE,MAAO,SAAA,CAAW,KAAA,CAAO,SAAU,CACvC,CAAA,CACF,GACF,CAAA,CAEA/O,IAAAA,CAAC8J,GAAA,CACC,QAAA,CAAA,CAAAlL,IAAC4C,CAAAA,CAAA,CAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAQ,SAAA,CAAU,QAAS,IAAMqP,CAAAA,CAAa,KAAK,CAAA,CAAG,QAAA,CAAU1K,EAAW,QAAA,CAAA,QAAA,CAEjG,CAAA,CACAvH,IAAC4C,CAAAA,CAAA,CAAO,KAAK,QAAA,CAAS,QAAA,CAAU2E,EAC7B,QAAA,CAAAA,CAAAA,CAAY,cAAgB,gBAAA,CAC/B,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CACF,CAEJ,CAAA,CCvBO,IAAMynB,EAAAA,CAAuB,CAAC,CACnC,UAAA,CAAAC,EACA,OAAA,CAAAC,CAAAA,CACA,aAAA,CAAAC,CAAAA,CACA,MAAA,CAAA3sB,CAAAA,CACA,cAAAwiB,CAAAA,CACA,cAAA,CAAAC,EACA,UAAA,CAAAd,CAAAA,CACA,iBAAAC,CAAAA,CACA,oBAAA,CAAAgB,EACA,wBAAA,CAAAC,CAAAA,CACA,aAAAX,CAAAA,CAAe,IAAA,CACf,iBAAA0K,CAAAA,CACA,mBAAA,CAAAjK,EACA,gBAAA,CAAA9J,CAAAA,CACA,gBAAA,CAAAgU,CAAAA,CACA,oBAAA,CAAAC,CAAAA,CACA,wBAAAC,CAAAA,CACA,SAAA,CAAA7nB,EACA,gBAAA,CAAA0b,CAAAA,CACA,iBAAAC,CAAAA,CACA,oBAAA,CAAA1b,CACF,CAAA,GAAiC,KACzB,CAAC6nB,CAAAA,CAA8BC,CAA+B,CAAA,CAAIzpB,QAAAA,CAAS,KAAK,CAAA,CAEhF0pB,CAAAA,CAAa,CAAA,EAAGT,CAAAA,CAAW,SAAS,CAAA,CAAA,EAAIA,EAAW,QAAQ,CAAA,CAAA,CAC3DU,GAAeV,CAAAA,CAAW,EAAA,CAC1B9R,GAAU8R,CAAAA,CAAW,OAAA,CAErB9tB,EAAgB,CACpB,CACE,MAAO,SAAA,CACP,OAAA,CAAS,UACT,OAAA,CAASikB,CAAAA,CACT,KAAMO,MACR,CAAA,CACA,CACE,KAAA,CAAO,cAAA,CACP,OAAA,CAAS,UACT,OAAA,CAASN,CAAAA,CACT,KAAMnN,KACR,CACF,EAEM0X,CAAAA,CAAqBP,CAAAA,CAAiB,MAAA,CAAS,CAAA,CAC/CQ,CAAAA,CAAuBR,CAAAA,CAAiB,CAAC,CAAA,CAEzCS,CAAAA,CAAgCte,YAAY,IAAM,CACtDie,EAAgC,IAAI,EACtC,CAAA,CAAG,EAAE,CAAA,CAEoCje,WAAAA,CAAY,IAAM,CACpDqe,CAAAA,EAAsB,EAAA,EACtBN,EAAwBM,CAAAA,CAAqB,EAAE,EACtD,CAAA,CAAG,CAACA,GAAsB,EAAA,CAAIN,CAAuB,CAAC,EAEtD,OACEnuB,KAAC4c,EAAAA,CAAA,CACC,KAAA,CACE5c,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,0BACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,QAAM,QAAA,CAAA0vB,CAAAA,CAAW,EAClBtuB,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,yBAAA,CACb,QAAA,CAAA,CAAApB,IAACqd,EAAAA,CAAA,CACC,MAAM,EAAA,CACN,KAAA,CAAO7a,EACP,QAAA,CAAUyiB,CAAAA,CACV,OAAA,CAASD,CAAAA,CACT,WAAA,CAAc7lB,CAAAA,EAAUa,IAAC0c,EAAAA,CAAA,CAAY,OAAQvd,CAAAA,CAAc,qBAAA,CAAqB,KAAC,CAAA,CACnF,CAAA,CACAa,IAAC8c,EAAAA,CAAA,CAAe,OAAQmS,CAAAA,CAAW,SAAA,CAAW,EAC9CjvB,GAAAA,CAACid,EAAAA,CAAA,CAAgB,IAAA,CAAK,YAAA,CAAa,CAAA,CAClCE,EAAAA,EAAWnd,GAAAA,CAACkd,EAAAA,CAAA,CAAa,OAAA,CAASC,EAAAA,CAAS,WAAW,YAAA,CAAa,CAAA,CAAA,CACtE,GACF,CAAA,CAEF,WAAA,CAAa,OACb,OAAA,CAAShc,CAAAA,CACT,cAAenB,GAAAA,CAACkkB,EAAAA,CAAA,CAAe,UAAA,CAAYC,CAAAA,CAAY,iBAAkBC,CAAAA,CAAkB,CAAA,CAC3F,QAAA,CAAS,MAAA,CAET,QAAA,CAAA,CAAAhjB,IAAAA,CAAC,OAAI,SAAA,CAAU,6CAAA,CACb,UAAAA,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,kBAAA,CACb,QAAA,CAAA,CAAApB,IAACuuB,EAAAA,CAAA,CACC,MAAOW,CAAAA,CACP,SAAA,CAAWE,EACX,YAAA,CAAcjK,CAAAA,CACd,OAAQgK,CAAAA,CACR,gBAAA,CAAkB9T,CAAAA,CACpB,CAAA,CAEAja,IAAAA,CAAC7B,CAAAA,CAAA,CACC,QAAA,CAAA,CAAA6B,IAAAA,CAAClB,EAAA,CAAW,SAAA,CAAU,4DACpB,QAAA,CAAA,CAAAF,GAAAA,CAACM,EAAA,CAAU,QAAA,CAAA,mBAAA,CAAiB,EAC3B,CAACsvB,CAAAA,EACAxuB,KAACwB,CAAAA,CAAA,CAAO,KAAK,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,OAAA,CAASktB,CAAAA,CACzC,QAAA,CAAA,CAAA9vB,IAACgH,IAAAA,CAAA,CAAK,UAAU,cAAA,CAAe,CAAA,CAAE,WAEnC,CAAA,CAAA,CAEJ,CAAA,CACAhH,IAACS,CAAAA,CAAA,CACE,SAACmvB,CAAAA,CAMAxuB,IAAAA,CAAC,OAAI,SAAA,CAAU,uCAAA,CACb,UAAApB,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,gBAAA,CAAiB,KAAA,CAAOmmB,GAAsB,aAAA,EAAiB,QAAA,CAAK,EACrF7vB,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,gBAAA,CAAiB,MAAOmmB,CAAAA,EAAsB,aAAA,EAAiB,SAAK,CAAA,CACrF7vB,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,YAAY,KAAA,CAAOmmB,CAAAA,EAAsB,QAAA,EAAY,QAAA,CAAK,CAAA,CAC3E7vB,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,oBAAoB,KAAA,CAAOmmB,CAAAA,EAAsB,iBAAmB,QAAA,CAAK,CAAA,CAAA,CAC5F,EAVAzuB,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,2EAAA,CACb,QAAA,CAAA,CAAApB,IAAC2lB,MAAAA,CAAA,CAAO,UAAU,oBAAA,CAAqB,CAAA,CACvC3lB,GAAAA,CAAC,GAAA,CAAA,CAAE,QAAA,CAAA,4BAAA,CAA0B,CAAA,CAAA,CAC/B,EASJ,CAAA,CAAA,CACF,CAAA,CAEAA,IAACkjB,EAAAA,CAAA,CACC,WAAYyM,EAAAA,CACZ,SAAA,CAAWjoB,EACX,gBAAA,CAAkB0b,CAAAA,CAClB,iBAAkBC,CAAAA,CAClB,oBAAA,CAAsB1b,EACtB,mBAAA,CAAqBiH,EAAAA,CACvB,GACF,CAAA,CAEC8V,CAAAA,EACCtjB,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,SAAA,CACb,UAAApB,GAAAA,CAACT,CAAAA,CAAA,CAAK,SAAA,CAAU,QAAA,CAAS,cAAW,IAAA,CAAC,CAAA,CACrCS,IAAC6uB,EAAAA,CAAA,CAAqB,UAAW,KAAA,CAAO,YAAA,CAAc,IAAM,CAAC,CAAA,CAAG,GAClE,CAAA,CAAA,CAEJ,CAAA,CAEA7uB,GAAAA,CAAC+uB,EAAAA,CAAA,CACC,IAAA,CAAMS,EACN,YAAA,CAAcC,CAAAA,CACd,SAAUH,CAAAA,CACZ,CAAA,CAAA,CACF,CAEJ,ECtMO,IAAMS,GAAuB,CAAC,CAAE,KAAAvgB,CAAAA,CAAM,QAAA,CAAAkB,CAAAA,CAAU,QAAA,CAAAwR,CAAS,CAAA,GAE5DliB,IAACge,EAAAA,CAAA,CACC,MAAM,mBAAA,CACN,OAAA,CAAS,CACP,CAAE,KAAA,CAAO,SAAU,OAAA,CAAS,SAAA,CAAW,QAAStN,CAAS,CAAA,CACzD,CAAE,KAAA,CAAO,mBAAA,CAAqB,QAAS,SAAA,CAAW,OAAA,CAASwR,CAAS,CACtE,CAAA,CAEA,QAAA,CAAAliB,IAACuP,EAAAA,CAAA,CAAa,KAAMC,CAAAA,CAClB,QAAA,CAAApO,KAAC,MAAA,CAAA,CAAK,QAAA,CAAUoO,EAAK,YAAA,CAAaA,CAAAA,CAAK,UAAU,CAAA,CAAG,SAAA,CAAU,YAC5D,QAAA,CAAA,CAAAxP,GAAAA,CAACa,GAAA,CAAS,KAAA,CAAM,sBAAA,CACd,QAAA,CAAAO,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,uCAAA,CACb,QAAA,CAAA,CAAApB,IAAC0P,CAAAA,CAAA,CAAU,KAAK,WAAA,CAAY,KAAA,CAAM,aAAa,WAAA,CAAY,kBAAA,CAAmB,SAAQ,IAAA,CAAC,CAAA,CACvF1P,IAAC0P,CAAAA,CAAA,CAAU,KAAK,UAAA,CAAW,KAAA,CAAM,WAAA,CAAY,WAAA,CAAY,iBAAA,CAAkB,QAAA,CAAQ,KAAC,CAAA,CAEpF1P,GAAAA,CAAC0P,EAAA,CACC,IAAA,CAAK,cACL,KAAA,CAAM,eAAA,CACN,KAAK,MAAA,CACL,WAAA,CAAY,uBACd,CAAA,CAEA1P,GAAAA,CAACmQ,GAAA,CACC,IAAA,CAAK,SACL,KAAA,CAAM,SAAA,CACN,WAAA,CAAY,gBAAA,CACZ,OAAA,CAAS,CACP,CAAE,KAAA,CAAO,KAAA,CAAO,MAAO,KAAM,CAAA,CAC7B,CAAE,KAAA,CAAO,MAAA,CAAQ,MAAO,MAAO,CAAA,CAC/B,CAAE,KAAA,CAAO,UAAA,CAAY,MAAO,UAAW,CAAA,CACvC,CAAE,KAAA,CAAO,gBAAA,CAAkB,KAAA,CAAO,gBAAiB,CACrD,CAAA,CACF,EAEAnQ,GAAAA,CAAC0P,CAAAA,CAAA,CAAU,IAAA,CAAK,UAAA,CAAW,MAAM,WAAA,CAAY,WAAA,CAAY,kBAAkB,CAAA,CAC3E1P,GAAAA,CAAC0P,EAAA,CAAU,IAAA,CAAK,MAAM,KAAA,CAAM,UAAA,CAAW,YAAY,mBAAA,CAAoB,IAAA,CAAK,wBAAA,CAAyB,CAAA,CACrG1P,GAAAA,CAAC0P,CAAAA,CAAA,CAAU,IAAA,CAAK,OAAA,CAAQ,MAAM,OAAA,CAAQ,IAAA,CAAK,QAAQ,WAAA,CAAY,qBAAA,CAAsB,EACrF1P,GAAAA,CAAC0P,CAAAA,CAAA,CAAU,IAAA,CAAK,aAAA,CAAc,MAAM,cAAA,CAAe,WAAA,CAAY,qBAAqB,CAAA,CAEpF1P,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,YAAA,CACL,MAAM,aAAA,CACN,WAAA,CAAY,cACd,CAAA,CACA1P,GAAAA,CAAC0P,EAAA,CAAU,IAAA,CAAK,YAAY,KAAA,CAAM,YAAA,CAAa,YAAY,kBAAA,CAAmB,CAAA,CAAA,CAChF,EACF,CAAA,CAEAtO,IAAAA,CAACP,GAAA,CAAS,KAAA,CAAM,qBAAA,CACd,QAAA,CAAA,CAAAO,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wBAAA,CACb,QAAA,CAAA,CAAApB,IAAC0P,CAAAA,CAAA,CAAU,KAAK,eAAA,CAAgB,KAAA,CAAM,iBAAiB,WAAA,CAAY,sBAAA,CAAuB,EAC1F1P,GAAAA,CAAC0P,CAAAA,CAAA,CAAU,IAAA,CAAK,WAAA,CAAY,MAAM,gBAAA,CAAiB,WAAA,CAAY,gCAAA,CAAiC,CAAA,CAAA,CAClG,CAAA,CAEAtO,IAAAA,CAAC,OAAI,SAAA,CAAU,4CAAA,CACb,UAAApB,GAAAA,CAAC0P,CAAAA,CAAA,CAAU,IAAA,CAAK,MAAA,CAAO,MAAM,MAAA,CAAO,WAAA,CAAY,aAAa,CAAA,CAC7D1P,GAAAA,CAAC0P,EAAA,CAAU,IAAA,CAAK,QAAQ,KAAA,CAAM,OAAA,CAAQ,WAAA,CAAY,aAAA,CAAc,CAAA,CAChE1P,GAAAA,CAAC0P,EAAA,CAAU,IAAA,CAAK,aAAa,KAAA,CAAM,aAAA,CAAc,YAAY,mBAAA,CAAoB,CAAA,CACjF1P,IAAC0P,CAAAA,CAAA,CAAU,KAAK,SAAA,CAAU,KAAA,CAAM,UAAU,WAAA,CAAY,eAAA,CAAgB,GACxE,CAAA,CAAA,CACF,CAAA,CAAA,CAEF,CAAA,CACF,CAAA,CACF,EC1CG,IAAMsgB,GAAwC,CACnD,oBAAA,CAAsB,YACtB,mBAAA,CAAqB,IACvB,EAEaC,EAAAA,CAAkC,CAC7C,OAAQ,iBAAA,CACR,IAAA,CAAM,WACN,KAAA,CAAO,IAAA,CACP,WAAY,OAAA,CACZ,OAAA,CAAS,IACX,CAAA,CAUO,IAAMC,EAAAA,CAAqB,CAChC,SAAA,CAAW,CACT,iBAAkB,kBAAA,CAClB,SAAA,CAAW,OACX,IAAA,CAAM,UAAA,CACN,YAAa,mCACf,CAAA,CACA,YAAaF,EACf,CAAA,KCtDaG,EAAAA,CAAc,CAAC,CAAE,IAAA,CAAA7kB,CAAAA,CAAM,YAAA,CAAA8P,EAAc,SAAA,CAAA9J,CAAAA,CAAW,aAAAd,CAAAA,CAAc,SAAA,CAAA/Q,EAAW,WAAA,CAAA2a,CAAY,IAAwB,CACxH,IAAM5K,EAAOa,EAAAA,CAAkC,CAC7C,OAAQsK,EAAAA,CACR,aAAA,CAAe,CAAE,GAAGuV,EAAAA,CAAoB,GAAG5kB,CAAK,CAAA,CAChD,cAAA,CAAgBgG,EAChB,YAAA,CAAAd,CAAAA,CACA,OAAQ4K,CACV,CAAC,EAEKlB,CAAAA,CACJla,GAAAA,CAACuP,GAAA,CAAa,IAAA,CAAMC,EAClB,QAAA,CAAAxP,GAAAA,CAAC,OAAI,SAAA,CAAU,WAAA,CACb,SAAAoB,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,uCAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC0P,EAAA,CACC,IAAA,CAAK,mCACL,KAAA,CAAM,wBAAA,CACN,YAAY,8BAAA,CACZ,OAAA,CAAQ,WACR,SAAA,CAAW,CAAA,CACX,KAAK,gCAAA,CACL,QAAA,CAAQ,KACV,CAAA,CAEA1P,GAAAA,CAAC0P,EAAA,CACC,IAAA,CAAK,iCAAA,CACL,KAAA,CAAM,uBAAA,CACN,WAAA,CAAY,uBACZ,SAAA,CAAW,CAAA,CACX,KAAK,+BAAA,CACL,QAAA,CAAQ,KACV,CAAA,CAAA,CACF,CAAA,CACF,EACF,CAAA,CAGIyK,CAAAA,CACJ/Y,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wCACb,QAAA,CAAA,CAAApB,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,wBAAA,CAAyB,KAAA,CAAO8F,CAAAA,CAAK,SAAA,CAAU,kCAAkC,CAAA,CAAG,MAAA,CAAO,aAAa,CAAA,CACzHxP,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,wBAAwB,KAAA,CAAO8F,CAAAA,CAAK,UAAU,iCAAiC,CAAA,CAAG,OAAO,YAAA,CAAa,CAAA,CAAA,CACzH,EAGF,OACExP,GAAAA,CAACga,EAAAA,CAAA,CACC,KAAA,CAAM,kBAAA,CACN,YAAY,oDAAA,CACZ,OAAA,CAAQ,SACR,SAAA,CAAWva,CAAAA,CACX,UAAW+P,CAAAA,CAAK,SAAA,CAChB,aAAcA,CAAAA,CAAK,gBAAA,CACnB,OAAQA,CAAAA,CAAK,UAAA,CACb,SAAUA,CAAAA,CAAK,YAAA,CACf,YAAa4K,CAAAA,CACb,WAAA,CAAa5K,CAAAA,CAAK,WAAA,CAClB,OAAA,CAASA,CAAAA,CAAK,QACd,WAAA,CAAa0K,CAAAA,CACb,YAAaC,CAAAA,CACf,CAEJ,MC3DaiW,EAAAA,CAAmB,CAAC,CAC/B,IAAA,CAAA9kB,CAAAA,CACA,aAAA8P,CAAAA,CACA,SAAA,CAAA9J,CAAAA,CACA,YAAA,CAAAd,CAAAA,CACA,SAAA,CAAA/Q,EACA,WAAA,CAAA2a,CACF,IAA6B,CAC3B,IAAM5K,EAAOa,EAAAA,CAAkC,CAC7C,OAAQsK,EAAAA,CACR,aAAA,CAAe,CAAE,GAAGuV,EAAAA,CAAoB,GAAG5kB,CAAK,CAAA,CAChD,eAAgBgG,CAAAA,CAChB,YAAA,CAAAd,CAAAA,CACA,MAAA,CAAQ4K,CACV,CAAC,EAEKlB,CAAAA,CACJla,GAAAA,CAACuP,GAAA,CAAa,IAAA,CAAMC,EAClB,QAAA,CAAApO,IAAAA,CAAC,OAAI,SAAA,CAAU,WAAA,CACb,UAAAA,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,uCAAA,CACb,QAAA,CAAA,CAAApB,IAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,4BAAA,CACL,KAAA,CAAM,mBAAA,CACN,YAAY,yBAAA,CACZ,QAAA,CAAQ,KACV,CAAA,CAEA1P,GAAAA,CAAC0P,EAAA,CACC,IAAA,CAAK,sBACL,KAAA,CAAM,YAAA,CACN,YAAY,kBAAA,CACZ,QAAA,CAAQ,KACV,CAAA,CAAA,CACF,CAAA,CAEAtO,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,uCAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAACmQ,EAAAA,CAAA,CACC,IAAA,CAAK,gBAAA,CACL,MAAM,MAAA,CACN,WAAA,CAAY,cACZ,OAAA,CAAS,CACP,CAAE,KAAA,CAAO,UAAA,CAAY,MAAO,UAAW,CAAA,CACvC,CAAE,KAAA,CAAO,YAAA,CAAc,MAAO,YAAa,CAC7C,CAAA,CACF,CAAA,CAEAnQ,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,uBAAA,CACL,MAAM,aAAA,CACN,WAAA,CAAY,oBACd,CAAA,CAAA,CACF,CAAA,CAAA,CACF,EACF,CAAA,CAGIyK,CAAAA,CACJ/Y,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,YACb,QAAA,CAAA,CAAApB,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,mBAAA,CAAoB,KAAA,CAAO8F,CAAAA,CAAK,SAAA,CAAU,4BAA4B,CAAA,CAAG,MAAA,CAAO,aAAa,CAAA,CAC9GxP,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,aAAa,KAAA,CAAO8F,CAAAA,CAAK,UAAU,qBAAqB,CAAA,CAAG,OAAO,YAAA,CAAa,CAAA,CAChGxP,IAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,MAAA,CAAO,KAAA,CAAO8F,CAAAA,CAAK,UAAU,gBAAgB,CAAA,CAAG,OAAO,YAAA,CAAa,CAAA,CACrFxP,IAAC0J,CAAAA,CAAA,CAAU,MAAM,aAAA,CAAc,KAAA,CAAO8F,EAAK,SAAA,CAAU,uBAAuB,GAAK,KAAA,CAAO,MAAA,CAAO,aAAa,CAAA,CAAA,CAC9G,CAAA,CAGF,OACExP,GAAAA,CAACga,EAAAA,CAAA,CACC,MAAM,mBAAA,CACN,OAAA,CAAQ,SACR,SAAA,CAAWva,CAAAA,CACX,UAAW+P,CAAAA,CAAK,SAAA,CAChB,aAAcA,CAAAA,CAAK,gBAAA,CACnB,OAAQA,CAAAA,CAAK,UAAA,CACb,SAAUA,CAAAA,CAAK,YAAA,CACf,YAAa4K,CAAAA,CACb,WAAA,CAAa5K,CAAAA,CAAK,WAAA,CAClB,OAAA,CAASA,CAAAA,CAAK,QACd,WAAA,CAAa0K,CAAAA,CACb,YAAaC,CAAAA,CACf,CAEJ,EClFO,IAAMkW,GAAkB,CAAC,CAC9B,IAAA,CAAA/kB,CAAAA,CACA,YAAA,CAAA8P,CAAAA,CACA,UAAA9J,CAAAA,CACA,YAAA,CAAAd,EACA,SAAA,CAAA/Q,CAAAA,CACA,YAAA2a,CACF,CAAA,GAA4B,CAC1B,IAAM5K,CAAAA,CAAOa,GAA8B,CACzC,MAAA,CAAQkK,GACR,aAAA,CAAe,CAAE,GAAG0V,EAAAA,CAAoB,GAAG3kB,CAAK,CAAA,CAChD,cAAA,CAAgBgG,CAAAA,CAChB,aAAAd,CAAAA,CACA,MAAA,CAAQ4K,CACV,CAAC,CAAA,CAEKlB,EACJla,GAAAA,CAACuP,EAAAA,CAAA,CAAa,IAAA,CAAMC,CAAAA,CAClB,SAAAxP,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,WAAA,CACb,QAAA,CAAAoB,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,uCAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,OAAA,CACL,MAAM,gBAAA,CACN,WAAA,CAAY,uBACZ,QAAA,CAAQ,IAAA,CACV,EAEA1P,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,MAAA,CACL,MAAM,MAAA,CACN,WAAA,CAAY,aACZ,QAAA,CAAQ,IAAA,CACV,CAAA,CAEA1P,GAAAA,CAAC0P,CAAAA,CAAA,CACC,KAAK,OAAA,CACL,KAAA,CAAM,QACN,WAAA,CAAY,aAAA,CACZ,SAAQ,IAAA,CACV,CAAA,CAEA1P,IAAC0P,CAAAA,CAAA,CACC,KAAK,YAAA,CACL,KAAA,CAAM,cACN,WAAA,CAAY,mBAAA,CACZ,SAAQ,IAAA,CACV,CAAA,CAAA,CACF,CAAA,CACF,CAAA,CACF,CAAA,CAGIoM,CAAAA,CAAatM,EAAK,KAAA,EAAM,CACxB2K,EACJ/Y,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,uCAAA,CACb,QAAA,CAAA,CAAApB,IAAC0J,CAAAA,CAAA,CAAU,MAAM,gBAAA,CAAiB,KAAA,CAAOoS,GAAY,KAAA,CAAO,MAAA,CAAO,aAAa,CAAA,CAChF9b,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,MAAA,CAAO,MAAOoS,CAAAA,EAAY,IAAA,CAAM,OAAO,YAAA,CAAa,CAAA,CACrE9b,IAAC0J,CAAAA,CAAA,CAAU,MAAM,OAAA,CAAQ,KAAA,CAAOoS,GAAY,KAAA,CAAO,MAAA,CAAO,aAAa,CAAA,CACvE9b,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,aAAA,CAAc,KAAA,CAAOoS,CAAAA,EAAY,UAAA,CAAY,OAAO,YAAA,CAAa,CAAA,CAAA,CACpF,EAGF,OACE9b,GAAAA,CAACga,GAAA,CACC,KAAA,CAAM,cAAA,CACN,WAAA,CAAY,6CAAA,CACZ,OAAA,CAAQ,SACR,SAAA,CAAWva,CAAAA,CACX,UAAW+P,CAAAA,CAAK,SAAA,CAChB,aAAcA,CAAAA,CAAK,gBAAA,CACnB,MAAA,CAAQA,CAAAA,CAAK,UAAA,CACb,QAAA,CAAUA,EAAK,YAAA,CACf,WAAA,CAAa4K,EACb,WAAA,CAAaF,CAAAA,CACb,YAAaC,CAAAA,CACf,CAEJ,EC9EO,IAAMmW,EAAAA,CAAqB,CAAC,CAAE,SAAA,CAAAhf,CAAAA,CAAW,YAAA,CAAAd,CAAAA,CAAc,SAAA,CAAA/Q,EAAW,WAAA,CAAA2a,CAAY,IAA+B,CAClH,GAAM,CAACmW,CAAAA,CAASC,CAAU,EAAIxqB,QAAAA,CAAsBkqB,EAAkB,EAEhEO,CAAAA,CAAoBC,CAAAA,EAAyB,CACjDF,CAAAA,CAAWE,CAAO,EACpB,CAAA,CAEMC,CAAAA,CACJvvB,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,WAAA,CACb,UAAAA,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,yBAAA,CACb,QAAA,CAAA,CAAApB,IAAC,MAAA,CAAA,CAAK,SAAA,CAAU,4CAA4C,QAAA,CAAA,gBAAA,CAAc,CAAA,CAC1EA,IAAC,MAAA,CAAA,CAAK,SAAA,CAAU,iHAAiH,QAAA,CAAA,KAAA,CAEjI,CAAA,CAAA,CACF,EAEAoB,IAAAA,CAAC6mB,EAAAA,CAAA,CAAe,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,KAAK,QAAA,CAAU3W,CAAAA,CAC9C,UAAAtR,GAAAA,CAACowB,EAAAA,CAAA,CACC,IAAA,CAAMG,CAAAA,CACN,aAAcE,CAAAA,CACd,SAAA,CAAWnf,EACX,WAAA,CAAa,IAAA,CACf,EACAtR,GAAAA,CAACmwB,EAAAA,CAAA,CACC,IAAA,CAAMI,CAAAA,CACN,YAAA,CAAcE,CAAAA,CACd,SAAA,CAAWnf,CAAAA,CACX,YAAa,IAAA,CACf,CAAA,CACAtR,IAACqwB,EAAAA,CAAA,CAAgB,UAAW/e,CAAAA,CAAW,WAAA,CAAa,KAAM,CAAA,CAAA,CAC5D,CAAA,CAAA,CACF,EAGF,OACEtR,GAAAA,CAACga,GAAA,CACC,KAAA,CAAM,6BACN,WAAA,CAAY,kDAAA,CACZ,OAAA,CAAQ,QAAA,CACR,SAAA,CAAWva,CAAAA,CACX,UAAW6R,CAAAA,CACX,YAAA,CAAcd,EACd,WAAA,CAAa4J,CAAAA,CACb,YAAauW,CAAAA,CACb,WAAA,CAAaA,EACf,CAEJ,ECpDO,IAAMC,EAAAA,CAAqB,CAAC,CAAE,SAAA,CAAAtf,EAAW,YAAA,CAAAd,CAAAA,CAAc,UAAA/Q,CAAU,CAAA,GAEpEO,IAACa,EAAAA,CAAA,CACC,MAAM,iBAAA,CACN,SAAA,CAAWpB,EACX,aAAA,CACEO,GAAAA,CAAC,OAAI,SAAA,CAAU,yBAAA,CACZ,QAAA,CAAAsR,CAAAA,CACClQ,IAAAA,CAAAyK,QAAAA,CAAA,CACE,QAAA,CAAA,CAAA7L,GAAAA,CAAC4C,EAAA,CAAO,OAAA,CAAQ,UAAU,IAAA,CAAK,IAAA,CAAK,QAAS4N,CAAAA,CAAc,QAAA,CAAA,QAAA,CAE3D,EACAxQ,GAAAA,CAAC4C,CAAAA,CAAA,CAAO,IAAA,CAAK,IAAA,CAAK,QAAS4N,CAAAA,CAAc,QAAA,CAAA,MAAA,CAEzC,CAAA,CAAA,CACF,CAAA,CAEAxQ,GAAAA,CAAC4C,CAAAA,CAAA,CAAO,OAAA,CAAQ,OAAA,CAAQ,KAAK,MAAA,CAAO,OAAA,CAAS4N,EAAc,SAAA,CAAU,wDAAA,CACnE,SAAAxQ,GAAAA,CAACsC,IAAAA,CAAA,CAAK,SAAA,CAAU,SAAA,CAAU,EAC5B,CAAA,CAEJ,CAAA,CAGF,SAAAtC,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,WAAA,CACb,QAAA,CAAAoB,IAAAA,CAAC,OAAI,SAAA,CAAU,wBAAA,CACb,UAAApB,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,cAAA,CAAe,MAAM,gBAAA,CAAiB,MAAA,CAAO,aAAa,CAAA,CAC3E1J,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,iBAAiB,KAAA,CAAM,kBAAA,CAAmB,MAAA,CAAO,YAAA,CAAa,CAAA,CAC/E1J,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,iBAAiB,KAAA,CAAM,WAAA,CAAY,OAAO,YAAA,CAAa,CAAA,CACxE1J,IAAC0J,CAAAA,CAAA,CAAU,MAAM,cAAA,CAAe,KAAA,CAAM,oBAAoB,MAAA,CAAO,YAAA,CAAa,GAChF,CAAA,CACF,CAAA,CACF,EC5BG,IAAMmnB,EAAAA,CAAgB,CAAC,CAAE,SAAA,CAAAvf,EAAW,YAAA,CAAAd,CAAAA,CAAc,UAAA/Q,CAAAA,CAAW,WAAA,CAAA2a,CAAY,CAAA,GAA0B,CACxG,GAAM,CAAC1R,CAAAA,CAAMooB,CAAO,EAAI9qB,QAAAA,CAAS,eAAe,EAC1C,CAACxD,CAAAA,CAAQuuB,CAAS,CAAA,CAAI/qB,QAAAA,CAAS,QAAQ,CAAA,CA0E7C,OACEhG,IAACga,EAAAA,CAAA,CACC,MAAM,YAAA,CACN,SAAA,CAAWva,EACX,SAAA,CAAW6R,CAAAA,CACX,YAAA,CAAcd,CAAAA,CACd,WAAA,CAAa4J,CAAAA,CACb,YA9EFhZ,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,WAAA,CACb,QAAA,CAAA,CAAAA,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wCACb,QAAA,CAAA,CAAApB,GAAAA,CAACqH,EAAA,CACC,KAAA,CAAM,OACN,KAAA,CAAOqB,CAAAA,CACP,SAAW3B,CAAAA,EAAM+pB,CAAAA,CAAQ/pB,CAAAA,CAAE,MAAA,CAAO,KAAK,CAAA,CACvC,YAAY,yBAAA,CACd,CAAA,CAEA/G,IAACyD,CAAAA,CAAA,CACC,MAAM,QAAA,CACN,KAAA,CAAOjB,EACP,aAAA,CAAeuuB,CAAAA,CACf,YAAY,eAAA,CACZ,OAAA,CAAS,CACP,CAAE,KAAA,CAAO,SAAU,KAAA,CAAO,QAAS,CAAA,CACnC,CAAE,KAAA,CAAO,UAAA,CAAY,MAAO,UAAW,CAAA,CACvC,CAAE,KAAA,CAAO,SAAA,CAAW,MAAO,SAAU,CAAA,CACrC,CAAE,KAAA,CAAO,WAAA,CAAa,KAAA,CAAO,WAAY,CAC3C,CAAA,CACF,GACF,CAAA,CAEA3vB,IAAAA,CAAC,OAAI,SAAA,CAAU,oDAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,MAAM,IAAA,CAAK,KAAA,CAAM,UAAU,MAAA,CAAO,YAAA,CAAa,EAC1D1J,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,mBAAA,CAAoB,MAAO1J,GAAAA,CAAConB,EAAAA,CAAA,CAAsB,IAAA,CAAK,UAAA,CAAW,EAAI,MAAA,CAAO,YAAA,CAAa,CAAA,CAC3GpnB,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,MAAM,WAAA,CAAY,KAAA,CAAM,6CAAU,MAAA,CAAO,YAAA,CAAa,EACjE1J,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,SAAA,CAAU,MAAM,KAAA,CAAM,MAAA,CAAO,aAAa,CAAA,CAC3D1J,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,eAAA,CAAgB,KAAA,CAAM,WAAA,CAAY,MAAA,CAAO,aAAa,CAAA,CACvE1J,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,aAAa,KAAA,CAAM,OAAA,CAAQ,OAAO,YAAA,CAAa,CAAA,CAChE1J,IAAC0J,CAAAA,CAAA,CAAU,MAAM,YAAA,CAAa,KAAA,CAAM,aAAa,MAAA,CAAO,YAAA,CAAa,CAAA,CACrE1J,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,MAAM,YAAA,CAAa,KAAA,CAAM,QAAQ,MAAA,CAAO,YAAA,CAAa,EAChE1J,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,YAAA,CAAa,MAAM,YAAA,CAAa,MAAA,CAAO,aAAa,CAAA,CAAA,CACvE,CAAA,CAEAtI,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,6BAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,IAAA,CAAA,CAAG,UAAU,0CAAA,CAA2C,QAAA,CAAA,cAAA,CAAY,EACrEoB,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wBAAA,CACb,QAAA,CAAA,CAAApB,IAAC0J,CAAAA,CAAA,CAAU,MAAM,gBAAA,CAAiB,KAAA,CAAM,aAAa,MAAA,CAAO,YAAA,CAAa,EACzE1J,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,kBAAA,CAAmB,KAAA,CAAM,WAAW,MAAA,CAAO,YAAA,CAAa,GAC3E,CAAA,CAAA,CACF,CAAA,CAAA,CACF,EAqCE,WAAA,CAjCFtI,IAAAA,CAAC,OAAI,SAAA,CAAU,WAAA,CACb,UAAAA,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wBAAA,CACb,QAAA,CAAA,CAAApB,IAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,IAAA,CAAK,KAAA,CAAM,SAAA,CAAU,OAAO,YAAA,CAAa,CAAA,CAC1D1J,IAAC0J,CAAAA,CAAA,CAAU,MAAM,MAAA,CAAO,KAAA,CAAOhB,EAAM,MAAA,CAAO,YAAA,CAAa,EACzD1I,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,mBAAA,CAAoB,MAAO1J,GAAAA,CAAConB,EAAAA,CAAA,CAAsB,IAAA,CAAK,UAAA,CAAW,CAAA,CAAI,OAAO,YAAA,CAAa,CAAA,CAC3GpnB,IAAC0J,CAAAA,CAAA,CAAU,MAAM,QAAA,CAAS,KAAA,CAAO1J,IAAC0c,EAAAA,CAAA,CAAY,OAAQla,CAAAA,CAA2D,CAAA,CAAI,OAAO,YAAA,CAAa,CAAA,CACzIxC,IAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,WAAA,CAAY,KAAA,CAAM,4CAAA,CAAU,OAAO,YAAA,CAAa,CAAA,CACjE1J,IAAC0J,CAAAA,CAAA,CAAU,MAAM,SAAA,CAAU,KAAA,CAAM,MAAM,MAAA,CAAO,YAAA,CAAa,EAC3D1J,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,eAAA,CAAgB,MAAM,WAAA,CAAY,MAAA,CAAO,YAAA,CAAa,CAAA,CACvE1J,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,YAAA,CAAa,MAAM,OAAA,CAAQ,MAAA,CAAO,aAAa,CAAA,CAChE1J,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,aAAa,KAAA,CAAM,YAAA,CAAa,OAAO,YAAA,CAAa,CAAA,CACrE1J,IAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,YAAA,CAAa,KAAA,CAAM,OAAA,CAAQ,OAAO,YAAA,CAAa,CAAA,CAChE1J,IAAC0J,CAAAA,CAAA,CAAU,MAAM,YAAA,CAAa,KAAA,CAAM,aAAa,MAAA,CAAO,YAAA,CAAa,GACvE,CAAA,CAEAtI,IAAAA,CAAC,OAAI,SAAA,CAAU,6BAAA,CACb,UAAApB,GAAAA,CAAC,IAAA,CAAA,CAAG,SAAA,CAAU,0CAAA,CAA2C,QAAA,CAAA,cAAA,CAAY,CAAA,CACrEoB,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yBACb,QAAA,CAAA,CAAApB,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,iBAAiB,KAAA,CAAM,YAAA,CAAa,OAAO,YAAA,CAAa,CAAA,CACzE1J,IAAC0J,CAAAA,CAAA,CAAU,MAAM,kBAAA,CAAmB,KAAA,CAAM,UAAA,CAAW,MAAA,CAAO,YAAA,CAAa,CAAA,CAAA,CAC3E,GACF,CAAA,CAAA,CACF,CAAA,CAYA,CAEJ,EC7FO,IAAMsnB,EAAAA,CAA0B,CAAC,CACtC,SAAA,CAAA1f,EAAY,KAAA,CACZ,WAAA,CAAA8I,EAAc,KAAA,CACd,SAAA,CAAA3a,CACF,CAAA,GAEI2B,IAAAA,CAAC7B,CAAAA,CAAA,CAAK,OAAA,CAAQ,QAAA,CAAS,UAAWE,CAAAA,CAChC,QAAA,CAAA,CAAAO,IAACE,CAAAA,CAAA,CAAW,KAAK,IAAA,CACf,QAAA,CAAAF,IAACM,CAAAA,CAAA,CAAU,KAAK,IAAA,CAAK,QAAA,CAAA,gBAAA,CAAc,EACrC,CAAA,CACAN,GAAAA,CAACS,CAAAA,CAAA,CAAY,IAAA,CAAK,IAAA,CAChB,SAAAW,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,WAAA,CACb,QAAA,CAAA,CAAAA,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,YACb,QAAA,CAAA,CAAApB,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,KAAK,KAAA,CAAM,SAAA,CAAU,OAAO,YAAA,CAAa,CAAA,CAC1D1J,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,aAAa,KAAA,CAAM,OAAA,CAAQ,OAAO,YAAA,CAAa,CAAA,CAChE1J,IAAC0J,CAAAA,CAAA,CAAU,MAAM,YAAA,CAAa,KAAA,CAAM,aAAa,MAAA,CAAO,YAAA,CAAa,EACrE1J,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,YAAA,CAAa,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,YAAA,CAAa,EAChE1J,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,YAAA,CAAa,MAAM,YAAA,CAAa,MAAA,CAAO,aAAa,CAAA,CAAA,CACvE,CAAA,CAEAtI,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,8BACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,MAAG,SAAA,CAAU,0CAAA,CAA2C,QAAA,CAAA,cAAA,CAAY,CAAA,CACrEoB,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,WAAA,CACb,QAAA,CAAA,CAAApB,IAAC0J,CAAAA,CAAA,CAAU,MAAM,gBAAA,CAAiB,KAAA,CAAM,aAAa,MAAA,CAAO,YAAA,CAAa,EACzE1J,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,kBAAA,CAAmB,MAAM,UAAA,CAAW,MAAA,CAAO,YAAA,CAAa,CAAA,CAAA,CAC3E,CAAA,CAAA,CACF,CAAA,CAAA,CACF,EACF,CAAA,CAAA,CACF,MC1BSunB,EAAAA,CAAmB,CAAC,CAAE,SAAA,CAAA3f,CAAAA,CAAW,aAAAd,CAAAA,CAAc,SAAA,CAAA/Q,EAAW,WAAA,CAAA2a,CAAY,CAAA,GAA6B,CAC9G,IAAMuW,CAAAA,CACJvvB,KAAC6mB,EAAAA,CAAA,CAAe,KAAK,OAAA,CAAQ,GAAA,CAAI,KAAK,QAAA,CAAU3W,CAAAA,CAC9C,UAAAtR,GAAAA,CAAC+mB,EAAAA,CAAA,CAAwB,SAAA,CAAWzV,CAAAA,CAAW,YAAa,IAAA,CAAM,CAAA,CAClEtR,IAACgxB,EAAAA,CAAA,CAAwB,SAAA,CAAW1f,CAAAA,CAAW,WAAA,CAAa,IAAA,CAAM,GACpE,CAAA,CAGF,OACEtR,IAACga,EAAAA,CAAA,CACC,MAAM,mBAAA,CACN,WAAA,CAAY,wCACZ,OAAA,CAAQ,QAAA,CACR,UAAWva,CAAAA,CACX,SAAA,CAAW6R,EACX,YAAA,CAAcd,CAAAA,CACd,YAAa4J,CAAAA,CACb,WAAA,CAAauW,CAAAA,CACb,WAAA,CAAaA,CAAAA,CACf,CAEJ,EC/BO,IAAMO,EAAAA,CAAqB,IAE9BlxB,GAAAA,CAAC8pB,EAAAA,CAAA,CACC,KAAA,CAAM,6BAAA,CACN,YAAY,yCAAA,CACZ,eAAA,CAAiB,MACjB,aAAA,CAAe,IAAA,CACf,eAAgB,CACd,SAAA,CAAW,CACT,WAAA,CAAa,oDAAA,CACb,KAAA,CAAO,oDACT,CAAA,CACA,UAAA,CAAY,CAAE,KAAA,CAAO,4BAA6B,CACpD,CAAA,CACF,ECOJ,IAAM9B,GAAa,CACjB,EAAA,CAAI,OAAA,CACJ,EAAA,CAAI,OAAA,CACJ,EAAA,CAAI,OACN,CAAA,CAEMmJ,EAAAA,CAAgB,CACpB,CAAA,CAAG,aAAA,CACH,EAAG,4BAAA,CACH,CAAA,CAAG,4CACH,CAAA,CAAG,2CACL,EAEaC,EAAAA,CAAiBC,EAAA,CAAA,UAAA,CAC5B,CAAC,CAAE,IAAA,CAAA/lB,EAAM,OAAA,CAAAyT,CAAAA,CAAU,CAAA,CAAG,GAAA,CAAAoJ,CAAAA,CAAM,IAAA,CAAM,UAAA1oB,CAAU,CAAA,CAAGM,IAAQ,CAIrD,GAFoBuL,EAAK,MAAA,CAAS,CAAA,EAAK,UAAWA,CAAAA,CAAK,CAAC,EAEvC,CAEf,IAAMgmB,EAAQhmB,CAAAA,CACd,OACEtL,IAAC,KAAA,CAAA,CACC,GAAA,CAAKD,CAAAA,CACL,SAAA,CAAWjB,CAAAA,CACT,MAAA,CACAqyB,GAAcpS,CAAO,CAAA,CACrBiJ,GAAWG,CAAG,CAAA,CACd1oB,CACF,CAAA,CAEC,QAAA,CAAA6xB,EAAM,GAAA,CAAI,CAAC/kB,EAAM7J,CAAAA,GAChB1C,GAAAA,CAAC0J,EAAA,CAEC,KAAA,CAAO6C,EAAK,KAAA,CACZ,KAAA,CAAOA,CAAAA,CAAK,KAAA,CACZ,MAAA,CAAQA,CAAAA,CAAK,QAAU,YAAA,CAAA,CAHlB7J,CAIP,CACD,CAAA,CACH,CAEJ,CAGA,IAAM6uB,CAAAA,CAAWjmB,EACjB,OACEtL,GAAAA,CAAC,OAAI,GAAA,CAAKD,CAAAA,CAAK,UAAWjB,CAAAA,CAAG,WAAA,CAAaW,CAAS,CAAA,CAChD,QAAA,CAAA8xB,CAAAA,CAAS,GAAA,CAAI,CAACC,CAAAA,CAASC,IACtBrwB,IAAAA,CAAC,KAAA,CAAA,CAAuB,UAAWowB,CAAAA,CAAQ,SAAA,CACxC,UAAAA,CAAAA,CAAQ,KAAA,EACPxxB,IAAC,IAAA,CAAA,CAAG,SAAA,CAAU,2CACX,QAAA,CAAAwxB,CAAAA,CAAQ,MACX,CAAA,CAEFxxB,GAAAA,CAAC,OAAI,SAAA,CAAWlB,CAAAA,CACd,MAAA,CACAqyB,EAAAA,CAAcpS,CAAO,CAAA,CACrBiJ,GAAWG,CAAG,CAChB,EACG,QAAA,CAAAqJ,CAAAA,CAAQ,MAAM,GAAA,CAAI,CAACjlB,EAAMmlB,CAAAA,GACxB1xB,GAAAA,CAAC0J,EAAA,CAEC,KAAA,CAAO6C,EAAK,KAAA,CACZ,KAAA,CAAOA,EAAK,KAAA,CACZ,MAAA,CAAQA,CAAAA,CAAK,MAAA,EAAU,YAAA,CAAA,CAHlBmlB,CAIP,CACD,CAAA,CACH,CAAA,CAAA,CAAA,CAnBQD,CAoBV,CACD,CAAA,CACH,CAEJ,CACF,EAEAL,GAAS,WAAA,CAAc,UAAA,KC/FVO,EAAAA,CAA0B,IAEnCvwB,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,WAAA,CACb,UAAAA,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,6BAAA,CACb,QAAA,CAAA,CAAApB,IAAC,IAAA,CAAA,CAAG,SAAA,CAAU,wCAAwC,QAAA,CAAA,yBAAA,CAAuB,CAAA,CAC7EA,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,gCAAgC,QAAA,CAAA,iDAAA,CAA+C,CAAA,CAAA,CAC9F,EAEAoB,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,WAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAACqH,EAAA,CACC,KAAA,CAAM,6BACN,WAAA,CAAY,kCAAA,CACZ,KAAK,oCAAA,CACP,CAAA,CAEArH,GAAAA,CAACkxB,EAAAA,CAAA,EAAmB,CAAA,CAAA,CACtB,GACF,ECTG,IAAMU,GAAkB,CAAC,CAAE,SAAA,CAAAtgB,CAAAA,CAAW,YAAA,CAAAd,CAAAA,CAAc,UAAA/Q,CAAAA,CAAW,WAAA,CAAA2a,CAAY,CAAA,GAkB9Epa,GAAAA,CAACga,GAAA,CACC,KAAA,CAAM,cACN,OAAA,CAAQ,QAAA,CACR,UAAWva,CAAAA,CACX,SAAA,CAAW6R,EACX,YAAA,CAAcd,CAAAA,CACd,YAAa4J,CAAAA,CACb,WAAA,CAAapa,GAAAA,CAAC2xB,EAAAA,CAAA,EAAwB,CAAA,CACtC,YAAa3xB,GAAAA,CAACoxB,EAAAA,CAAA,CAAS,IAAA,CAzBV,CACf,CACE,KAAA,CAAO,qBAAA,CACP,MAAO,CACL,CAAE,MAAO,gBAAA,CAAkB,KAAA,CAAO,cAAe,CACnD,CACF,EACA,CACE,KAAA,CAAO,qBAAA,CACP,KAAA,CAAO,CACL,CAAE,MAAO,kEAAmE,CAC9E,EACA,SAAA,CAAW,6BACb,CACF,CAAA,CAW2C,OAAA,CAAS,EAAG,CAAA,CACrD,EC3BG,IAAMS,EAAAA,CAAkB,CAAC,CAAE,SAAA,CAAAvgB,EAAW,YAAA,CAAAd,CAAAA,CAAc,UAAA/Q,CAAU,CAAA,GAEjEO,IAACa,EAAAA,CAAA,CACC,MAAM,qBAAA,CACN,SAAA,CAAWpB,EACX,aAAA,CACEO,GAAAA,CAAC,OAAI,SAAA,CAAU,yBAAA,CACZ,QAAA,CAAAsR,CAAAA,CACClQ,IAAAA,CAAAyK,QAAAA,CAAA,CACE,QAAA,CAAA,CAAA7L,GAAAA,CAAC4C,EAAA,CAAO,OAAA,CAAQ,UAAU,IAAA,CAAK,IAAA,CAAK,QAAS4N,CAAAA,CAAc,QAAA,CAAA,QAAA,CAE3D,EACAxQ,GAAAA,CAAC4C,CAAAA,CAAA,CAAO,IAAA,CAAK,IAAA,CAAK,QAAS4N,CAAAA,CAAc,QAAA,CAAA,MAAA,CAEzC,CAAA,CAAA,CACF,CAAA,CAEAxQ,GAAAA,CAAC4C,CAAAA,CAAA,CAAO,OAAA,CAAQ,OAAA,CAAQ,KAAK,MAAA,CAAO,OAAA,CAAS4N,EAAc,SAAA,CAAU,wDAAA,CACnE,SAAAxQ,GAAAA,CAACsC,IAAAA,CAAA,CAAK,SAAA,CAAU,SAAA,CAAU,EAC5B,CAAA,CAEJ,CAAA,CAGF,SAAAlB,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,WAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,MAAG,SAAA,CAAU,2CAAA,CAA4C,0BAAc,CAAA,CACxEoB,IAAAA,CAAC,OAAI,SAAA,CAAU,wBAAA,CACb,UAAApB,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,YAAA,CAAa,MAAM,EAAA,CAAG,MAAA,CAAO,aAAa,CAAA,CAC3D1J,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,WAAA,CAAY,MAAM,EAAA,CAAG,MAAA,CAAO,aAAa,CAAA,CAAA,CAC5D,CAAA,CACAtI,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yBACb,QAAA,CAAA,CAAApB,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,QAAQ,KAAA,CAAM,EAAA,CAAG,OAAO,YAAA,CAAa,CAAA,CACtD1J,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,eAAe,KAAA,CAAM,EAAA,CAAG,OAAO,YAAA,CAAa,CAAA,CAAA,CAC/D,EAEA1J,GAAAA,CAAC,IAAA,CAAA,CAAG,UAAU,gDAAA,CAAiD,QAAA,CAAA,iBAAA,CAAe,EAC7EsR,CAAAA,CACClQ,IAAAA,CAAAyK,SAAA,CACE,QAAA,CAAA,CAAAzK,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wBAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,gBAAA,CAAiB,MAAM,EAAA,CAAG,MAAA,CAAO,aAAa,CAAA,CAC/D1J,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,6BAA6B,KAAA,CAAM,EAAA,CAAG,OAAO,YAAA,CAAa,CAAA,CAAA,CAC7E,EACAtI,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wBAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,OAAO,KAAA,CAAM,EAAA,CAAG,OAAO,YAAA,CAAa,CAAA,CACrD1J,IAAC0J,CAAAA,CAAA,CAAU,MAAM,OAAA,CAAQ,KAAA,CAAM,UAAU,MAAA,CAAO,YAAA,CAAa,GAC/D,CAAA,CACAtI,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wBAAA,CACb,QAAA,CAAA,CAAApB,IAAC0J,CAAAA,CAAA,CAAU,MAAM,aAAA,CAAc,KAAA,CAAM,GAAG,MAAA,CAAO,YAAA,CAAa,EAC5D1J,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,cAAA,CAAe,MAAM,IAAA,CAAK,MAAA,CAAO,aAAa,CAAA,CAAA,CACjE,CAAA,CAAA,CACF,CAAA,CAEA1J,GAAAA,CAAC0J,CAAAA,CAAA,CACC,MAAM,SAAA,CACN,KAAA,CAAM,yDACN,MAAA,CAAO,YAAA,CACT,GAEJ,CAAA,CACF,MClESooB,EAAAA,CAAiB,IAE1B1wB,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,WAAA,CACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,6BAAA,CACb,QAAA,CAAA,CAAApB,IAAC,IAAA,CAAA,CAAG,SAAA,CAAU,wCAAwC,QAAA,CAAA,yBAAA,CAAuB,CAAA,CAC7EA,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,gCAAgC,QAAA,CAAA,oDAAA,CAAkD,CAAA,CAAA,CACjG,EAEAA,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,WAAA,CACb,QAAA,CAAAoB,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,sDAAA,CACb,UAAApB,GAAAA,CAACqH,CAAAA,CAAA,CACC,KAAA,CAAM,gCAAA,CACN,YAAY,sBAAA,CACd,CAAA,CAEArH,IAACqH,CAAAA,CAAA,CACC,MAAM,sBAAA,CACN,WAAA,CAAY,gBACZ,IAAA,CAAK,qDAAA,CACP,EAEArH,GAAAA,CAACyD,CAAAA,CAAA,CACC,KAAA,CAAM,yBAAA,CACN,WAAA,CAAY,iBACZ,OAAA,CAAS4K,EAAAA,CACX,EAEArO,GAAAA,CAACqH,CAAAA,CAAA,CACC,KAAA,CAAM,2BAAA,CACN,WAAA,CAAY,iBAAA,CACZ,IAAA,CAAK,6CAAA,CACP,GACF,CAAA,CACF,CAAA,CAAA,CACF,ECpCG,IAAM0qB,EAAAA,CAAwB,IAEjC/xB,GAAAA,CAAC8pB,EAAAA,CAAA,CACC,MAAM,yBAAA,CACN,WAAA,CAAY,oDACZ,WAAA,CAAY,iBAAA,CACZ,eAAgB,CACd,aAAA,CAAe,CAAE,IAAA,CAAM,mDAAoD,CAC7E,CAAA,CACF,EC8CG,IAAMkI,EAAAA,CAAoC,CAC/C,cAAe,WAAA,CACf,aAAA,CAAe,kBACjB,CAAA,CA6BO,IAAMC,EAAAA,CAAgD,CAC3D,aAAA,CAAe,cAAA,CACf,KAAM,mBAAA,CACN,MAAA,CAAQ,QACR,QAAA,CAAU,aAAA,CACV,QAAS,CACP,aAAA,CAAe,kBACf,IAAA,CAAM,WAAA,CACN,MAAO,IAAA,CACP,UAAA,CAAY,QACZ,OAAA,CAAS,IAAA,CACT,WAAA,CAAa,UACf,CACF,CAAA,KCnFaC,EAAAA,CAAmB,CAAC,CAC/B,IAAA,CAAA5mB,CAAAA,CACA,aAAA8P,CAAAA,CACA,SAAA,CAAA9J,EACA,YAAA,CAAAd,CAAAA,CACA,UAAA/Q,CAAAA,CACA,WAAA,CAAA2a,CACF,CAAA,GAA6B,CAC3B,IAAM5K,EAAOa,EAAAA,CAAyC,CACpD,OAAQ0K,EAAAA,CACR,aAAA,CAAe,CAAE,GAAGkX,EAAAA,CAA2B,GAAG3mB,CAAK,CAAA,CACvD,eAAgBgG,CAAAA,CAChB,YAAA,CAAAd,EACA,MAAA,CAAQ4K,CACV,CAAC,CAAA,CAEKlB,CAAAA,CACJla,GAAAA,CAACuP,EAAAA,CAAA,CAAa,IAAA,CAAMC,EAClB,QAAA,CAAApO,IAAAA,CAACkf,GAAA,CAAY,OAAA,CAAQ,KACnB,QAAA,CAAA,CAAAtgB,GAAAA,CAAC8xB,GAAA,EAAe,CAAA,CAChB9xB,IAAC+xB,EAAAA,CAAA,EAAsB,GACzB,CAAA,CACF,CAAA,CAGIjW,EAAatM,CAAAA,CAAK,KAAA,EAAM,CACxB2K,CAAAA,CACJ/Y,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,WAAA,CACb,QAAA,CAAA,CAAAA,KAAC,KAAA,CAAA,CACC,QAAA,CAAA,CAAApB,IAAC,IAAA,CAAA,CAAG,SAAA,CAAU,2CAA2C,QAAA,CAAA,uBAAA,CAAqB,CAAA,CAC9EoB,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,cACb,QAAA,CAAA,CAAApB,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,aAAA,CAAc,KAAA,CAAO,CAAA,EAAGoS,CAAAA,EAAY,IAAI,CAAA,EAAA,EAAKA,CAAAA,EAAY,aAAa,CAAA,CAAA,CAAA,CAAK,MAAA,CAAO,aAAa,CAAA,CAChH9b,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,aAAa,KAAA,CAAO,CAAA,EAAGoS,GAAY,MAAA,EAAQ,WAAA,EAAa,CAAA,GAAA,EAAMA,CAAAA,EAAY,QAAQ,CAAA,CAAA,CAAI,MAAA,CAAO,YAAA,CAAa,GAC7H,CAAA,CAAA,CACF,CAAA,CAEA1a,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,8BACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,MAAG,SAAA,CAAU,0CAAA,CAA2C,sBAAU,CAAA,CACnEA,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAOoS,GAAY,OAAA,CAAU,CAAA,EAAGA,CAAAA,CAAW,OAAA,CAAQ,KAAK,CAAA,EAAA,EAAKA,EAAW,OAAA,CAAQ,IAAI,KAAKA,CAAAA,CAAW,OAAA,CAAQ,UAAU,CAAA,EAAA,EAAKA,CAAAA,CAAW,QAAQ,WAAW,CAAA,CAAA,CAAK,GAAI,CAAA,CAAA,CAC/K,CAAA,CAAA,CACF,EAGF,OACE9b,GAAAA,CAACga,GAAA,CACC,KAAA,CAAM,cAAA,CACN,OAAA,CAAQ,QAAA,CACR,SAAA,CAAWva,EACX,SAAA,CAAW+P,CAAAA,CAAK,UAChB,YAAA,CAAcA,CAAAA,CAAK,iBACnB,MAAA,CAAQA,CAAAA,CAAK,WACb,QAAA,CAAUA,CAAAA,CAAK,aACf,WAAA,CAAa4K,CAAAA,CACb,YAAaF,CAAAA,CACb,WAAA,CAAaC,EACf,CAEJ,ECxEO,IAAMgY,GAAe,IAExB/wB,IAAAA,CAAC,OAAI,SAAA,CAAU,WAAA,CACb,UAAAA,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,6BAAA,CACb,QAAA,CAAA,CAAApB,IAAC,IAAA,CAAA,CAAG,SAAA,CAAU,wCAAwC,QAAA,CAAA,uBAAA,CAAqB,CAAA,CAC3EA,GAAAA,CAAC,GAAA,CAAA,CAAE,SAAA,CAAU,+BAAA,CAAgC,4DAAgD,CAAA,CAAA,CAC/F,CAAA,CAEAA,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,YACb,QAAA,CAAAoB,IAAAA,CAAC,OAAI,SAAA,CAAU,sDAAA,CACb,UAAApB,GAAAA,CAACqH,CAAAA,CAAA,CACC,KAAA,CAAM,8BAAA,CACN,YAAY,sBAAA,CACZ,QAAA,CAAQ,IAAA,CACV,CAAA,CAEArH,GAAAA,CAACqH,CAAAA,CAAA,CACC,KAAA,CAAM,oBAAA,CACN,YAAY,eAAA,CACZ,IAAA,CAAK,qDACP,CAAA,CAEArH,GAAAA,CAACyD,EAAA,CACC,KAAA,CAAM,wBACN,WAAA,CAAY,gBAAA,CACZ,QAAS4K,EAAAA,CACX,CAAA,CAEArO,IAACqH,CAAAA,CAAA,CACC,KAAA,CAAM,yBAAA,CACN,WAAA,CAAY,iBAAA,CACZ,KAAK,6CAAA,CACP,CAAA,CAAA,CACF,EACF,CAAA,CAAA,CACF,MCrCS+qB,EAAAA,CAAsB,IAE/BpyB,IAAC8pB,EAAAA,CAAA,CACC,MAAM,uBAAA,CACN,WAAA,CAAY,mDACZ,WAAA,CAAY,eAAA,CACZ,cAAA,CAAgB,CACd,aAAA,CAAe,CAAE,KAAM,kDAAmD,CAC5E,EACF,ECEG,IAAMuI,GAAiB,CAAC,CAAE,UAAA/gB,CAAAA,CAAW,YAAA,CAAAd,EAAc,SAAA,CAAA/Q,CAAAA,CAAW,WAAA,CAAA2a,CAAY,CAAA,GAmB7Epa,GAAAA,CAACga,GAAA,CACC,KAAA,CAAM,aACN,OAAA,CAAQ,QAAA,CACR,UAAWva,CAAAA,CACX,SAAA,CAAW6R,CAAAA,CACX,YAAA,CAAcd,CAAAA,CACd,WAAA,CAAa4J,EACb,WAAA,CACEhZ,IAAAA,CAACkf,GAAA,CAAY,OAAA,CAAQ,KACnB,QAAA,CAAA,CAAAtgB,GAAAA,CAACmyB,EAAAA,CAAA,EAAa,CAAA,CACdnyB,GAAAA,CAACoyB,GAAA,EAAoB,CAAA,CAAA,CACvB,EAEF,WAAA,CAAapyB,GAAAA,CAACoxB,GAAA,CAAS,IAAA,CA/BV,CACf,CACE,KAAA,CAAO,wBACP,KAAA,CAAO,CACL,CAAE,KAAA,CAAO,aAAA,CAAe,MAAO,kCAAmC,CAAA,CAClE,CAAE,KAAA,CAAO,YAAA,CAAc,KAAA,CAAO,iBAAkB,CAClD,CACF,EACA,CACE,KAAA,CAAO,aACP,KAAA,CAAO,CACL,CAAE,KAAA,CAAO,qDAAsD,CACjE,CAAA,CACA,SAAA,CAAW,6BACb,CACF,CAAA,CAgB2C,QAAS,CAAA,CAAG,CAAA,CACrD,ECrCJ,IAAMkB,EAAAA,CAAiBxgB,EAAE,MAAA,CAAO,CAC9B,cAAeA,CAAAA,CAAE,MAAA,GAAS,GAAA,CAAI,CAAA,CAAG,iCAAiC,CAAA,CAAE,GAAA,CAAI,CAAA,CAAG,iCAAiC,CAAA,CAC5G,aAAA,CAAeA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAA,CAAG,6BAA6B,CAChE,CAAC,CAAA,CAaYygB,GAAe,CAAC,CAC3B,KAAAjnB,CAAAA,CACA,YAAA,CAAA8P,EACA,SAAA,CAAA9J,CAAAA,CACA,aAAAd,CAAAA,CACA,SAAA,CAAA/Q,CAAAA,CACA,WAAA,CAAA2a,CACF,CAAA,GAAyB,CACvB,IAAM5K,CAAAA,CAAOa,GAAmC,CAC9C,MAAA,CAAQiiB,GACR,aAAA,CAAe,CAAE,GAAGN,EAAAA,CAAqB,GAAG1mB,CAAK,CAAA,CACjD,cAAA,CAAgBgG,EAChB,YAAA,CAAAd,CAAAA,CACA,OAAQ4K,CACV,CAAC,CAAA,CAEKlB,CAAAA,CACJla,GAAAA,CAACuP,EAAAA,CAAA,CAAa,IAAA,CAAMC,CAAAA,CAClB,SAAAxP,GAAAA,CAACsgB,EAAAA,CAAA,CACC,QAAA,CAAAlf,IAAAA,CAAC,OAAI,SAAA,CAAU,WAAA,CACb,UAAAA,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,6BAAA,CACb,QAAA,CAAA,CAAApB,IAAC,IAAA,CAAA,CAAG,SAAA,CAAU,uCAAA,CAAwC,QAAA,CAAA,kBAAA,CAAgB,CAAA,CACtEA,GAAAA,CAAC,KAAE,SAAA,CAAU,+BAAA,CAAgC,sCAA0B,CAAA,CAAA,CACzE,CAAA,CAEAoB,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yBACb,QAAA,CAAA,CAAApB,GAAAA,CAAC0P,EAAA,CACC,IAAA,CAAK,gBACL,KAAA,CAAM,yBAAA,CACN,YAAY,sBAAA,CACZ,IAAA,CAAK,wBAAA,CACL,OAAA,CAAQ,UAAA,CACR,SAAA,CAAW,EACX,QAAA,CAAQ,IAAA,CACV,EAEA1P,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,eAAA,CACL,MAAM,0BAAA,CACN,WAAA,CAAY,wBACZ,QAAA,CAAQ,IAAA,CACV,GACF,CAAA,CAAA,CACF,CAAA,CACF,EACF,CAAA,CAGIoM,CAAAA,CAAatM,CAAAA,CAAK,KAAA,EAAM,CACxBgjB,CAAAA,CAAW,CACf,CAAE,KAAA,CAAO,iBAAkB,KAAA,CAAO1W,CAAAA,EAAY,aAAc,CAAA,CAC5D,CAAE,MAAO,iBAAA,CAAmB,KAAA,CAAOA,GAAY,aAAc,CAC/D,EAEA,OACE9b,GAAAA,CAACga,GAAA,CACC,KAAA,CAAM,kBAAA,CACN,OAAA,CAAQ,QAAA,CACR,SAAA,CAAWva,EACX,SAAA,CAAW+P,CAAAA,CAAK,UAChB,YAAA,CAAcA,CAAAA,CAAK,iBACnB,MAAA,CAAQA,CAAAA,CAAK,WACb,QAAA,CAAUA,CAAAA,CAAK,aACf,WAAA,CAAa4K,CAAAA,CACb,YAAaF,CAAAA,CACb,WAAA,CAAala,IAACoxB,EAAAA,CAAA,CAAS,IAAA,CAAMoB,CAAAA,CAAU,OAAA,CAAS,CAAA,CAAG,EACrD,CAEJ,MC7EaC,EAAAA,CAAsB,CAAC,CAAE,SAAA,CAAAnhB,CAAAA,CAAW,aAAAd,CAAAA,CAAc,SAAA,CAAA/Q,CAAAA,CAAW,WAAA,CAAA2a,CAAY,CAAA,GAAgC,CACpH,GAAM,CAACsY,EAAkBC,CAAmB,CAAA,CAAI3sB,SAAS,eAAe,CAAA,CA4CxE,OACEhG,GAAAA,CAACga,EAAAA,CAAA,CACC,KAAA,CAAM,6BAAA,CACN,YAAY,mDAAA,CACZ,OAAA,CAAQ,SACR,SAAA,CAAWva,CAAAA,CACX,SAAA,CAAW6R,CAAAA,CACX,YAAA,CAAcd,CAAAA,CACd,YAAa4J,CAAAA,CACb,WAAA,CAlDFhZ,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,YACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,OAAI,SAAA,CAAU,yBAAA,CACb,SAAAA,GAAAA,CAACyD,CAAAA,CAAA,CACC,KAAA,CAAM,eAAA,CACN,MAAOivB,CAAAA,CACP,aAAA,CAAeC,CAAAA,CACf,OAAA,CAAS,CACP,CAAE,MAAO,UAAA,CAAY,KAAA,CAAO,UAAW,CAAA,CACvC,CAAE,MAAO,eAAA,CAAiB,KAAA,CAAO,eAAgB,CACnD,CAAA,CACA,YAAY,sBAAA,CACd,CAAA,CACF,EAEAvxB,IAAAA,CAAC6mB,EAAAA,CAAA,CAAe,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,IAAA,CAAK,QAAA,CAAU3W,CAAAA,CAC9C,UAAAtR,GAAAA,CAACuyB,EAAAA,CAAA,CAAa,SAAA,CAAWjhB,CAAAA,CAAW,YAAa,IAAA,CAAM,CAAA,CACvDtR,IAAC4xB,EAAAA,CAAA,CAAgB,UAAWtgB,CAAAA,CAAW,WAAA,CAAa,KAAM,CAAA,CAC1DtR,GAAAA,CAACqyB,GAAA,CAAe,SAAA,CAAW/gB,CAAAA,CAAW,WAAA,CAAa,IAAA,CAAM,CAAA,CACzDtR,IAACkyB,EAAAA,CAAA,CAAiB,UAAW5gB,CAAAA,CAAW,WAAA,CAAa,KAAM,CAAA,CAAA,CAC7D,CAAA,CAAA,CACF,CAAA,CA+BE,WAAA,CA3BFlQ,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,WAAA,CACb,QAAA,CAAA,CAAAA,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,0BACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,2CAAA,CAA4C,QAAA,CAAA,gBAAA,CAAc,EAC1EA,GAAAA,CAAC,MAAA,CAAA,CAAK,UAAU,gHAAA,CACb,QAAA,CAAA0yB,EACH,CAAA,CAAA,CACF,CAAA,CAEAtxB,KAAC6mB,EAAAA,CAAA,CAAe,KAAK,OAAA,CAAQ,GAAA,CAAI,KAC/B,QAAA,CAAA,CAAAjoB,GAAAA,CAACuyB,GAAA,CAAa,SAAA,CAAW,KAAA,CAAO,WAAA,CAAa,IAAA,CAAM,CAAA,CACnDvyB,IAAC4xB,EAAAA,CAAA,CAAgB,UAAW,KAAA,CAAO,WAAA,CAAa,KAAM,CAAA,CACtD5xB,GAAAA,CAACqyB,GAAA,CAAe,SAAA,CAAW,MAAO,WAAA,CAAa,IAAA,CAAM,EACrDryB,GAAAA,CAACkyB,EAAAA,CAAA,CAAiB,SAAA,CAAW,KAAA,CAAO,WAAA,CAAa,IAAA,CAAM,CAAA,CAAA,CACzD,CAAA,CAAA,CACF,EAcA,CAEJ,MC/DMU,EAAAA,CAAc,CAClB,GAAI,WAAA,CACJ,EAAA,CAAI,YACJ,EAAA,CAAI,WAAA,CACJ,EAAA,CAAI,WAAA,CACJ,IAAA,CAAM,YACR,EAEMC,EAAAA,CAAiB,CACrB,KAAM,EAAA,CACN,EAAA,CAAI,YACJ,EAAA,CAAI,WAAA,CACJ,GAAI,WACN,CAAA,CAEaC,GAAkBC,EAAA,CAAA,UAAA,CAC7B,CAAC,CAAE,QAAA,CAAA7xB,CAAAA,CAAU,KAAAvB,CAAAA,CAAO,IAAA,CAAM,OAAA,CAAAqzB,CAAAA,CAAU,IAAA,CAAM,MAAA,CAAAC,EAAS,IAAA,CAAM,SAAA,CAAAxzB,CAAU,CAAA,CAAGM,CAAAA,GAElEC,IAAC,KAAA,CAAA,CACC,GAAA,CAAKD,EACL,SAAA,CAAWjB,CAAAA,CACT8zB,GAAYjzB,CAAI,CAAA,CAChBkzB,GAAeG,CAAO,CAAA,CACtBC,GAAU,SAAA,CACVxzB,CACF,CAAA,CAEC,QAAA,CAAAyB,CAAAA,CACH,CAGN,EAEA4xB,EAAAA,CAAU,WAAA,CAAc,YChCxB,IAAM1S,EAAAA,CAAiB,CACrB,QAAA,CAAU,CACR,KAAM,EAAA,CACN,EAAA,CAAI,YACJ,EAAA,CAAI,WAAA,CACJ,EAAA,CAAI,WAAA,CACJ,EAAA,CAAI,WAAA,CACJ,GAAI,WACN,CAAA,CACA,WAAY,CACV,IAAA,CAAM,GACN,EAAA,CAAI,WAAA,CACJ,GAAI,WAAA,CACJ,EAAA,CAAI,YACJ,EAAA,CAAI,WAAA,CACJ,GAAI,WACN,CACF,EAEM8S,EAAAA,CAAe,CACnB,QAAA,CAAU,CACR,KAAA,CAAO,EAAA,CACP,OAAQ,cAAA,CACR,GAAA,CAAK,YACL,OAAA,CAAS,eACX,EACA,UAAA,CAAY,CACV,MAAO,EAAA,CACP,MAAA,CAAQ,eACR,GAAA,CAAK,WAAA,CACL,QAAS,eACX,CACF,EAEMC,EAAAA,CAAiB,CACrB,KAAA,CAAO,EAAA,CACP,MAAA,CAAQ,gBAAA,CACR,IAAK,aAAA,CACL,OAAA,CAAS,kBACT,MAAA,CAAQ,gBACV,EAEaC,EAAAA,CAAcC,EAAA,CAAA,UAAA,CACzB,CAAC,CAAE,QAAA,CAAAnyB,EAAU,SAAA,CAAAd,CAAAA,CAAY,WAAY,OAAA,CAAAogB,CAAAA,CAAU,KAAM,KAAA,CAAArgB,CAAAA,CAAQ,OAAA,CAAS,OAAA,CAAAS,CAAAA,CAAU,OAAA,CAAS,UAAAnB,CAAU,CAAA,CAAGM,IAIlGC,GAAAA,CAAC,KAAA,CAAA,CACC,IAAKD,CAAAA,CACL,SAAA,CAAWjB,EACT,MAAA,CANesB,CAAAA,GAAc,aAOd,UAAA,CAAa,UAAA,CAC5BggB,GAAehgB,CAAS,CAAA,CAAEogB,CAAO,CAAA,CACjC0S,EAAAA,CAAa9yB,CAAS,CAAA,CAAED,CAAK,CAAA,CAC7BgzB,GAAevyB,CAAO,CAAA,CACtBnB,CACF,CAAA,CAEC,QAAA,CAAAyB,EACH,CAGN,EAEAkyB,GAAM,WAAA,CAAc,OAAA,CC1Db,IAAME,GAAmBC,EAAA,CAAA,UAAA,CAC9B,CAAC,CAAE,KAAA,CAAAjC,CAAAA,CAAO,SAAAkC,CAAAA,CAAW,IAAA,CAAM,UAAAC,CAAAA,CAAW,SAAA,CAAAh0B,CAAU,CAAA,CAAGM,CAAAA,GAAQ,CAEzD,IAAM2zB,CAAAA,CAAmBD,CAAAA,EADAzzB,IAACsM,YAAAA,CAAA,CAAa,UAAU,+BAAA,CAAgC,CAAA,CAGjF,OACElL,IAAAA,CAAC,KAAA,CAAA,CACC,IAAKrB,CAAAA,CACL,YAAA,CAAW,aACX,SAAA,CAAWjB,CAAAA,CAAG,sCAAuCW,CAAS,CAAA,CAE7D,QAAA,CAAA,CAAA+zB,CAAAA,EACCpyB,IAAAA,CAAAyK,QAAAA,CAAA,CACE,QAAA,CAAA,CAAA7L,GAAAA,CAAC6Z,QAAA,CACC,EAAA,CAAG,IACH,SAAA,CAAU,iFAAA,CAEV,SAAA7Z,GAAAA,CAAC2zB,IAAAA,CAAA,CAAK,SAAA,CAAU,SAAA,CAAU,EAC5B,CAAA,CACCrC,CAAAA,CAAM,OAAS,CAAA,EACdtxB,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,uBAAA,CAAyB,QAAA,CAAA0zB,EAAiB,CAAA,CAAA,CAE9D,CAAA,CAGDpC,EAAM,GAAA,CAAI,CAAC/kB,EAAM7J,CAAAA,GAAU,CAC1B,IAAMkxB,CAAAA,CAASlxB,CAAAA,GAAU4uB,EAAM,MAAA,CAAS,CAAA,CAExC,OACElwB,IAAAA,CAAOmyB,EAAA,CAAA,QAAA,CAAN,CACE,QAAA,CAAA,CAAAhnB,CAAAA,CAAK,IAAA,EAAQ,CAACqnB,CAAAA,CACbxyB,IAAAA,CAACyY,QAAA,CACC,EAAA,CAAItN,EAAK,IAAA,CACT,SAAA,CAAU,kFAET,QAAA,CAAA,CAAAA,CAAAA,CAAK,IAAA,EAAQvM,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,OAAQ,QAAA,CAAAuM,CAAAA,CAAK,KAAK,CAAA,CAC/CA,CAAAA,CAAK,OACR,CAAA,CAEAnL,IAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAWtC,CAAAA,CACf,mBAAA,CACA80B,EAAS,6BAAA,CAAgC,uBAC3C,EACG,QAAA,CAAA,CAAArnB,CAAAA,CAAK,MAAQvM,GAAAA,CAAC,MAAA,CAAA,CAAK,UAAU,MAAA,CAAQ,QAAA,CAAAuM,EAAK,IAAA,CAAK,CAAA,CAC/CA,EAAK,KAAA,CAAA,CACR,CAAA,CAGD,CAACqnB,CAAAA,EACA5zB,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,uBAAA,CAAyB,QAAA,CAAA0zB,EAAiB,CAAA,CAAA,CAAA,CApBzChxB,CAsBrB,CAEJ,CAAC,CAAA,CAAA,CACH,CAEJ,CACF,EAEA4wB,GAAW,WAAA,CAAc,YAAA,CClDlB,IAAMO,GAAiBC,EAAA,CAAA,UAAA,CAC5B,CAAC,CACC,KAAA,CAAA/yB,CAAAA,CACA,WAAA,CAAAE,EACA,WAAA,CAAA8yB,CAAAA,CACA,QAAA7V,CAAAA,CACA,QAAA,CAAAhd,EACA,QAAA,CAAAmd,CAAAA,CAAW,KACX,OAAA,CAAAe,CAAAA,CAAU,MACV,UAAA,CAAA4U,CAAAA,CACA,UAAAv0B,CACF,CAAA,CAAGM,IAAQ,CACT,IAAMk0B,CAAAA,CAAgBH,EAAA,CAAA,QAAA,CAAS,KAAA,CAAM5yB,CAAQ,EAAI,CAAA,CAEjD,OACElB,IAAC,KAAA,CAAA,CAAI,GAAA,CAAKD,EAAK,SAAA,CAAWjB,CAAAA,CAAG,kCAAmCW,CAAS,CAAA,CACvE,SAAAO,GAAAA,CAAC8yB,EAAAA,CAAA,CAAU,IAAA,CAAMzU,CAAAA,CACf,SAAAjd,IAAAA,CAACgyB,EAAAA,CAAA,CAAM,OAAA,CAAQ,IAAA,CAEZ,QAAA,CAAA,CAAAW,GAAeA,CAAAA,CAAY,MAAA,CAAS,GACnC/zB,GAAAA,CAACszB,EAAAA,CAAA,CAAW,KAAA,CAAOS,CAAAA,CAAa,EAIlC3yB,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,kCAAA,CACb,QAAA,CAAA,CAAAA,KAACgyB,EAAAA,CAAA,CAAM,QAAQ,IAAA,CACb,QAAA,CAAA,CAAApzB,GAAAA,CAAC,IAAA,CAAA,CAAG,SAAA,CAAU,oCAAA,CAAsC,SAAAe,CAAAA,CAAM,CAAA,CACzDE,GACCjB,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,iCAAA,CAAmC,QAAA,CAAAiB,EAAY,CAAA,CAAA,CAEhE,CAAA,CAECid,GAAWA,CAAAA,CAAQ,MAAA,CAAS,GAC3Ble,GAAAA,CAACozB,EAAAA,CAAA,CAAM,SAAA,CAAU,YAAA,CAAa,OAAA,CAAQ,IAAA,CACnC,QAAA,CAAAlV,CAAAA,CAAQ,IAAI,CAACxc,CAAAA,CAAQgB,IACpBtB,IAAAA,CAACwB,CAAAA,CAAA,CAEC,OAAA,CAASlB,CAAAA,CAAO,SAAW,SAAA,CAC3B,OAAA,CAASA,EAAO,OAAA,CAEf,QAAA,CAAA,CAAAA,EAAO,IAAA,CACPA,CAAAA,CAAO,QALHgB,CAMP,CACD,CAAA,CACH,CAAA,CAAA,CAEJ,CAAA,CAGC0c,CAAAA,CACCpf,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yCACb,QAAA,CAAAA,GAAAA,CAAC,OAAI,SAAA,CAAU,qCAAA,CAAsC,sBAAU,CAAA,CACjE,CAAA,CACEi0B,EACFj0B,GAAAA,CAACioB,EAAAA,CAAA,CAAe,IAAA,CAAK,OAAA,CAAQ,IAAI,IAAA,CAC9B,QAAA,CAAA/mB,CAAAA,CACH,CAAA,CACE8yB,CAAAA,CACFh0B,GAAAA,CAAC,OAAI,SAAA,CAAU,wCAAA,CACZ,SAAAg0B,CAAAA,CACH,CAAA,CAEAh0B,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yCACb,QAAA,CAAAA,GAAAA,CAAC,OAAI,SAAA,CAAU,aAAA,CACb,SAAAA,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,uBAAA,CAAwB,QAAA,CAAA,gBAAA,CAAc,CAAA,CACrD,CAAA,CACF,CAAA,CAAA,CAEJ,CAAA,CACF,EACF,CAEJ,CACF,EAEA6zB,EAAAA,CAAS,WAAA,CAAc,WC/EhB,IAAMK,GAAyB,CACpCC,CAAAA,CACAC,IAC+D,CAE/D,IAAMC,EAAiBlnB,CAAAA,EACd,UAAA,CAAWA,CAAAA,CAAI,OAAA,CAAQ,OAAA,CAAS,EAAE,CAAC,CAAA,CAGtCmnB,CAAAA,CAAQD,EAAcF,CAAe,CAAA,CAErCI,EADMF,CAAAA,CAAcD,CAAa,EAClBE,CAAAA,CAEfE,CAAAA,CAAaD,GAAU,CAAA,CAG7B,OAAO,CACL,MAAA,CAAQA,CAAAA,CACR,UAAW,CAAA,EAJEC,CAAAA,CAAa,GAAA,CAAM,EAIZ,CAAA,CAAA,EAAI,IAAA,CAAK,IAAID,CAAM,CAAA,CAAE,eAAe,OAAA,CAAS,CAC/D,sBAAuB,CAAA,CACvB,qBAAA,CAAuB,CACzB,CAAC,CAAC,GACF,UAAA,CAAAC,CACF,CACF,CAAA,CAEaC,EAAAA,CAAuC,CAClD,OAAA,CAAS,YAAA,CACT,SAAA,CAAW,UAAA,CACX,SAAA,CAAW,UAAA,CACX,UAAW,qBAAA,CACX,OAAA,CAAS,sBACT,eAAA,CAAiB,aAAA,CACjB,cAAe,aACjB,CAAA,CAEaC,GAAoD,CAC/D,CAAE,gBAAiB,YAAA,CAAc,SAAA,CAAW,SAAU,MAAA,CAAQ,IAAA,CAAS,MAAO,EAAG,CAAA,CACjF,CAAE,eAAA,CAAiB,WAAA,CAAa,SAAA,CAAW,QAAS,MAAA,CAAQ,KAAA,CAAS,MAAO,CAAE,CAAA,CAC9E,CAAE,eAAA,CAAiB,kBAAA,CAAoB,UAAW,QAAA,CAAU,MAAA,CAAQ,KAAS,KAAA,CAAO,CAAE,EACtF,CAAE,eAAA,CAAiB,oBAAqB,SAAA,CAAW,OAAA,CAAS,MAAA,CAAQ,IAAA,CAAQ,KAAA,CAAO,CAAE,EACrF,CAAE,eAAA,CAAiB,gBAAiB,SAAA,CAAW,OAAA,CAAS,OAAQ,MAAA,CAAQ,KAAA,CAAO,EAAG,CAAA,CAClF,CAAE,gBAAiB,gBAAA,CAAkB,SAAA,CAAW,SAAU,MAAA,CAAQ,KAAA,CAAS,MAAO,CAAE,CAAA,CACpF,CAAE,eAAA,CAAiB,gBAAA,CAAkB,SAAA,CAAW,QAAS,MAAA,CAAQ,IAAA,CAAQ,MAAO,EAAG,CAAA,CACnF,CAAE,eAAA,CAAiB,eAAA,CAAiB,SAAA,CAAW,QAAA,CAAU,MAAA,CAAQ,IAAA,CAAQ,MAAO,CAAE,CAAA,CAClF,CAAE,eAAA,CAAiB,cAAA,CAAgB,UAAW,OAAA,CAAS,MAAA,CAAQ,IAAA,CAAQ,KAAA,CAAO,EAAG,CAAA,CACjF,CAAE,eAAA,CAAiB,aAAA,CAAe,UAAW,QAAA,CAAU,MAAA,CAAQ,KAAQ,KAAA,CAAO,CAAE,EAChF,CAAE,eAAA,CAAiB,eAAgB,SAAA,CAAW,OAAA,CAAS,OAAQ,IAAA,CAAQ,KAAA,CAAO,CAAE,CAAA,CAChF,CAAE,eAAA,CAAiB,KAAA,CAAO,SAAA,CAAW,OAAA,CAAS,OAAQ,GAAA,CAAO,KAAA,CAAO,CAAE,CAAA,CACtE,CAAE,gBAAiB,UAAA,CAAY,SAAA,CAAW,SAAU,MAAA,CAAQ,IAAA,CAAM,MAAO,CAAE,CAAA,CAC3E,CAAE,eAAA,CAAiB,QAAA,CAAU,UAAW,QAAA,CAAU,MAAA,CAAQ,GAAA,CAAO,KAAA,CAAO,CAAE,CAC5E,EAEaC,EAAAA,CAAe,CAC1B,CAAE,KAAA,CAAO,UAAA,CAAY,MAAO,0BAA2B,CAAA,CACvD,CAAE,KAAA,CAAO,UAAA,CAAY,MAAO,0BAA2B,CAAA,CACvD,CAAE,KAAA,CAAO,UAAA,CAAY,MAAO,yBAA0B,CAAA,CACtD,CAAE,KAAA,CAAO,UAAA,CAAY,KAAA,CAAO,2BAA4B,CAAA,CACxD,CAAE,MAAO,UAAA,CAAY,KAAA,CAAO,2BAA4B,CAAA,CACxD,CAAE,MAAO,UAAA,CAAY,KAAA,CAAO,2BAA4B,CAAA,CACxD,CAAE,MAAO,UAAA,CAAY,KAAA,CAAO,2BAA4B,CAAA,CACxD,CAAE,KAAA,CAAO,UAAA,CAAY,KAAA,CAAO,2BAA4B,EACxD,CAAE,KAAA,CAAO,WAAY,KAAA,CAAO,2BAA4B,EACxD,CAAE,KAAA,CAAO,YAAa,KAAA,CAAO,0BAA2B,EACxD,CAAE,KAAA,CAAO,YAAa,KAAA,CAAO,0BAA2B,EACxD,CAAE,KAAA,CAAO,WAAA,CAAa,KAAA,CAAO,yBAA0B,CAAA,CACvD,CAAE,KAAA,CAAO,WAAA,CAAa,MAAO,2BAA4B,CAAA,CACzD,CAAE,KAAA,CAAO,WAAA,CAAa,MAAO,2BAA4B,CAAA,CACzD,CAAE,KAAA,CAAO,WAAA,CAAa,MAAO,2BAA4B,CAAA,CACzD,CAAE,KAAA,CAAO,WAAA,CAAa,KAAA,CAAO,2BAA4B,CAAA,CACzD,CAAE,MAAO,WAAA,CAAa,KAAA,CAAO,2BAA4B,CAAA,CACzD,CAAE,MAAO,WAAA,CAAa,KAAA,CAAO,2BAA4B,CAAA,CACzD,CAAE,MAAO,WAAA,CAAa,KAAA,CAAO,0BAA2B,CAAA,CACxD,CAAE,MAAO,WAAA,CAAa,KAAA,CAAO,0BAA2B,CAAA,CACxD,CAAE,KAAA,CAAO,YAAa,KAAA,CAAO,yBAA0B,EACvD,CAAE,KAAA,CAAO,YAAa,KAAA,CAAO,2BAA4B,EACzD,CAAE,KAAA,CAAO,YAAa,KAAA,CAAO,2BAA4B,EACzD,CAAE,KAAA,CAAO,YAAa,KAAA,CAAO,2BAA4B,CAAA,CACzD,CAAE,KAAA,CAAO,WAAA,CAAa,MAAO,2BAA4B,CAAA,CACzD,CAAE,KAAA,CAAO,WAAA,CAAa,MAAO,2BAA4B,CAAA,CACzD,CAAE,KAAA,CAAO,WAAA,CAAa,MAAO,2BAA4B,CAAA,CACzD,CAAE,KAAA,CAAO,YAAA,CAAc,MAAO,0BAA2B,CAAA,CACzD,CAAE,KAAA,CAAO,YAAA,CAAc,KAAA,CAAO,0BAA2B,CAAA,CACzD,CAAE,MAAO,YAAA,CAAc,KAAA,CAAO,yBAA0B,CAAA,CACxD,CAAE,MAAO,YAAA,CAAc,KAAA,CAAO,2BAA4B,CAAA,CAC1D,CAAE,MAAO,YAAA,CAAc,KAAA,CAAO,2BAA4B,CAAA,CAC1D,CAAE,KAAA,CAAO,YAAA,CAAc,KAAA,CAAO,2BAA4B,EAC1D,CAAE,KAAA,CAAO,aAAc,KAAA,CAAO,2BAA4B,EAC1D,CAAE,KAAA,CAAO,aAAc,KAAA,CAAO,2BAA4B,EAC1D,CAAE,KAAA,CAAO,aAAc,KAAA,CAAO,2BAA4B,CAC5D,CAAA,CAEaC,EAAAA,CAAe,CAC1B,CAAE,KAAA,CAAO,UAAA,CAAY,MAAO,kBAAmB,CAAA,CAC/C,CAAE,KAAA,CAAO,UAAA,CAAY,MAAO,iBAAkB,CAAA,CAC9C,CAAE,KAAA,CAAO,UAAA,CAAY,MAAO,sBAAuB,CAAA,CACnD,CAAE,KAAA,CAAO,UAAA,CAAY,MAAO,mBAAoB,CAClD,CAAA,CC7GO,IAAMC,GAAkB,CAAC,CAAE,KAAAvpB,CAAAA,CAAM,MAAA,CAAAwpB,CAAO,CAAA,GAA4B,CAEzE,IAAMC,CAAAA,CAAY51B,CAAAA,EACZ,EAAuBA,CAAAA,EAAU,IAAA,EACjC,OAAOA,CAAAA,EAAU,QAAA,EAAYA,CAAAA,CAAM,IAAA,EAAK,GAAM,EAAA,CAAA,CAK9C61B,EAAiB1pB,CAAAA,CAAK,eAAA,EAAmBA,EAAK,aAAA,CAChD4oB,EAAAA,CAAuB5oB,EAAK,eAAA,CAAiBA,CAAAA,CAAK,aAAa,CAAA,CAC/D,IAAA,CAEJ,OACElK,IAAAA,CAAC7B,CAAAA,CAAA,CACC,QAAA,CAAA,CAAA6B,IAAAA,CAAClB,EAAA,CAAW,SAAA,CAAU,KAAA,CACpB,QAAA,CAAA,CAAAF,GAAAA,CAACM,CAAAA,CAAA,CAAU,IAAA,CAAK,IAAA,CAAK,6BAAiB,CAAA,CACtCc,IAAAA,CAACwB,EAAA,CAAO,OAAA,CAAQ,UAAU,IAAA,CAAK,IAAA,CAAK,QAASkyB,CAAAA,CAC3C,QAAA,CAAA,CAAA90B,IAACsC,IAAAA,CAAA,CAAK,UAAU,cAAA,CAAe,CAAA,CAAE,MAAA,CAAA,CAEnC,CAAA,CAAA,CACF,CAAA,CACAtC,GAAAA,CAACS,EAAA,CACC,QAAA,CAAAW,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,uDACZ,QAAA,CAAA,CAAA2zB,CAAAA,CAASzpB,CAAAA,CAAK,OAAO,CAAA,EACpBtL,GAAAA,CAAC0J,EAAA,CACC,KAAA,CAAM,UACN,KAAA,CAAO4B,CAAAA,CAAK,QACZ,MAAA,CAAO,YAAA,CACT,CAAA,CAEDypB,CAAAA,CAASzpB,CAAAA,CAAK,SAAS,GACtBtL,GAAAA,CAAC0J,CAAAA,CAAA,CACC,KAAA,CAAM,YAAA,CACN,MAAO4B,CAAAA,CAAK,SAAA,CACZ,OAAO,YAAA,CACT,CAAA,CAEDypB,EAASzpB,CAAAA,CAAK,SAAS,GACtBtL,GAAAA,CAAC0J,CAAAA,CAAA,CACC,KAAA,CAAM,YAAA,CACN,KAAA,CAAO4B,CAAAA,CAAK,SAAA,CACZ,MAAA,CAAO,aACT,CAAA,CAEDypB,CAAAA,CAASzpB,EAAK,SAAS,CAAA,EACtBtL,IAAC0J,CAAAA,CAAA,CACC,MAAM,YAAA,CACN,KAAA,CAAO4B,EAAK,SAAA,CACZ,MAAA,CAAO,aACT,CAAA,CAEDypB,CAAAA,CAASzpB,EAAK,OAAO,CAAA,EACpBtL,GAAAA,CAAC0J,CAAAA,CAAA,CACC,KAAA,CAAM,WACN,KAAA,CAAO4B,CAAAA,CAAK,QACZ,MAAA,CAAO,YAAA,CACT,EAEDypB,CAAAA,CAASzpB,CAAAA,CAAK,eAAe,CAAA,EAC5BtL,GAAAA,CAAC0J,EAAA,CACC,KAAA,CAAM,mBACN,KAAA,CAAO4B,CAAAA,CAAK,gBACZ,MAAA,CAAO,YAAA,CACT,CAAA,CAEDypB,CAAAA,CAASzpB,CAAAA,CAAK,aAAa,GAC1BtL,GAAAA,CAAC0J,CAAAA,CAAA,CACC,KAAA,CAAM,gBAAA,CACN,MAAO4B,CAAAA,CAAK,aAAA,CACZ,OAAO,YAAA,CACT,CAAA,CAED0pB,GACCh1B,GAAAA,CAAC0J,CAAAA,CAAA,CACC,KAAA,CAAM,gBAAA,CACN,MACE1J,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAWg1B,CAAAA,CAAc,UAAA,CAAa,4BAAA,CAA+B,2BACxE,QAAA,CAAAA,CAAAA,CAAc,UACjB,CAAA,CAEF,MAAA,CAAO,aACT,CAAA,CAAA,CAEJ,CAAA,CACF,GACF,CAEJ,ECvFA,IAAMC,EAAAA,CAAiB,CACrB,CAAE,KAAA,CAAO,OAAQ,KAAA,CAAO,MAAO,EAC/B,CAAE,KAAA,CAAO,UAAW,KAAA,CAAO,SAAU,CAAA,CACrC,CAAE,KAAA,CAAO,SAAA,CAAW,MAAO,SAAU,CAAA,CACrC,CAAE,KAAA,CAAO,SAAA,CAAW,MAAO,SAAU,CACvC,EAEMlW,EAAAA,CAAmD,CACvD,CACE,GAAA,CAAK,iBAAA,CACL,MAAO,kBAAA,CACP,QAAA,CAAU,KACV,KAAA,CAAO,MACT,CAAA,CACA,CACE,GAAA,CAAK,WAAA,CACL,MAAO,WAAA,CACP,QAAA,CAAU,KACV,KAAA,CAAO,MAAA,CACP,OAAS5f,CAAAA,EACPa,GAAAA,CAACsB,EAAA,CAAM,OAAA,CAASnC,IAAU,QAAA,CAAW,SAAA,CAAY,YAC9C,QAAA,CAAAA,CAAAA,CACH,CAEJ,CAAA,CACA,CACE,GAAA,CAAK,QAAA,CACL,KAAA,CAAO,QAAA,CACP,SAAU,IAAA,CACV,KAAA,CAAO,QACP,MAAA,CAASA,CAAAA,EAAkBD,GAAeC,CAAK,CACjD,EACA,CACE,GAAA,CAAK,QACL,KAAA,CAAO,OAAA,CACP,SAAU,IAAA,CACV,KAAA,CAAO,OACT,CACF,CAAA,CAkCa+1B,EAAAA,CAAgB,CAAC,CAC5B,aAAA,CAAAC,EACA,eAAA,CAAAC,CAAAA,CACA,gBAAAC,CAAAA,CACA,aAAA,CAAA9N,EACA,SAAA,CAAA+N,CAAAA,CACA,QAAAC,CAAAA,CACA,kBAAA,CAAAC,EACA,QAAA,CAAAC,CAAAA,CACA,SAAAC,CAAAA,CACA,eAAA,CAAAC,EACA,qBAAA,CAAAC,CAAAA,CACA,eAAA,CAAAC,CAAAA,CACA,eAAA,CAAAC,CAAAA,CACA,cAAAC,CAAAA,CACA,aAAA,CAAAC,EACA,qBAAA,CAAAC,CAAAA,CACA,gBAAAC,CAAAA,CACA,eAAA,CAAAC,EACA,qBAAA,CAAAC,CAAAA,CACA,kBAAAC,CAAAA,CACA,eAAA,CAAAC,EACA,mBAAA,CAAAC,CAAAA,CACA,OAAAzB,CAAAA,CACA,aAAA,CAAA0B,CAAAA,CACA,UAAA,CAAAC,EAAAA,CACA,YAAA,CAAAC,GACA,eAAA,CAAAC,CAAAA,CACA,mBAAAC,CAAAA,CACA,SAAA,CAAArvB,CACF,CAAA,GAEInG,IAAAA,CAAC,OAAI,SAAA,CAAU,iCAAA,CAEb,UAAAA,IAAAA,CAAC,KAAA,CAAA,CACC,UAAApB,GAAAA,CAAC,IAAA,CAAA,CAAG,UAAU,mCAAA,CAAoC,QAAA,CAAA,WAAA,CAAS,CAAA,CAC3DA,GAAAA,CAAC,GAAA,CAAA,CAAE,SAAA,CAAU,6BAA6B,QAAA,CAAA,qCAAA,CAE1C,CAAA,CAAA,CACF,EAGC,CAACw1B,CAAAA,EACAp0B,KAAC7B,CAAAA,CAAA,CACC,UAAAS,GAAAA,CAACE,CAAAA,CAAA,CACC,QAAA,CAAAF,GAAAA,CAACM,EAAA,CAAU,IAAA,CAAK,KAAK,QAAA,CAAA,sBAAA,CAAoB,CAAA,CAC3C,CAAA,CACAc,IAAAA,CAACX,CAAAA,CAAA,CAAY,UAAU,WAAA,CAEpB,QAAA,CAAA,CAAA00B,IAAkB,SAAA,EAAaY,CAAAA,EAC9B30B,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wGACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,OAAI,SAAA,CAAU,yBAAA,CACb,UAAApB,GAAAA,CAACuY,WAAAA,CAAA,CAAY,SAAA,CAAU,wCAAA,CAAyC,CAAA,CAChEnX,IAAAA,CAAC,KAAA,CAAA,CACC,QAAA,CAAA,CAAApB,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,uCAAuC,QAAA,CAAA,yBAAA,CAAuB,CAAA,CAC3EA,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,qCAAsC,QAAA,CAAA+1B,CAAAA,CAAc,GACnE,CAAA,CAAA,CACF,CAAA,CACA30B,KAACwB,CAAAA,CAAA,CACC,QAAS8zB,EAAAA,CACT,OAAA,CAAQ,SAAA,CACR,IAAA,CAAK,IAAA,CACL,QAAA,CAAUb,EAET,QAAA,CAAA,CAAAA,CAAAA,CACC71B,IAACgc,OAAAA,CAAA,CAAQ,UAAU,sBAAA,CAAuB,CAAA,CAE1Chc,IAAC+B,SAAAA,CAAA,CAAU,UAAU,SAAA,CAAU,CAAA,CAC/B,SAEJ,CAAA,CAAA,CACF,CAAA,CAGDozB,IAAkB,SAAA,EAAaa,CAAAA,EAC9B50B,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,uGAAA,CACb,UAAAA,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,yBAAA,CACb,QAAA,CAAA,CAAApB,IAACuY,WAAAA,CAAA,CAAY,UAAU,wCAAA,CAAyC,CAAA,CAChEnX,KAAC,KAAA,CAAA,CACC,QAAA,CAAA,CAAApB,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,uCAAuC,QAAA,CAAA,yBAAA,CAAuB,CAAA,CAC3EA,GAAAA,CAAC,GAAA,CAAA,CAAE,SAAA,CAAU,oCAAA,CAAsC,SAAAg2B,CAAAA,CAAc,CAAA,CAAA,CACnE,GACF,CAAA,CACA50B,IAAAA,CAACwB,EAAA,CACC,OAAA,CAAS8zB,GACT,OAAA,CAAQ,SAAA,CACR,KAAK,IAAA,CACL,QAAA,CAAUZ,EAET,QAAA,CAAA,CAAAA,CAAAA,CACC91B,IAACgc,OAAAA,CAAA,CAAQ,SAAA,CAAU,sBAAA,CAAuB,CAAA,CAE1Chc,GAAAA,CAAC+B,UAAA,CAAU,SAAA,CAAU,UAAU,CAAA,CAC/B,OAAA,CAAA,CAEJ,GACF,CAAA,CAGFX,IAAAA,CAAC,OAAI,SAAA,CAAU,sDAAA,CAEb,UAAApB,GAAAA,CAACyD,CAAAA,CAAA,CACC,KAAA,CAAM,gBAAA,CACN,YAAY,aAAA,CACZ,OAAA,CAASwxB,EAAAA,CACT,KAAA,CAAOE,CAAAA,CACP,aAAA,CAAec,EACjB,CAAA,CAGCd,CAAAA,GAAkB,WACjBn1B,GAAAA,CAACyD,CAAAA,CAAA,CACC,KAAA,CAAM,cAAA,CACN,YAAaoyB,CAAAA,CAAkB,qBAAA,CAAwB,iBACvD,OAAA,CAASJ,CAAAA,CACT,MAAOL,CAAAA,CACP,aAAA,CAAec,EACf,QAAA,CAAUL,CAAAA,EAAmB,CAAC,CAACE,CAAAA,CACjC,CAAA,CAGDZ,IAAkB,SAAA,EACjBn1B,GAAAA,CAACyD,EAAA,CACC,KAAA,CAAM,eACN,WAAA,CAAaqyB,CAAAA,CAAkB,sBAAwB,gBAAA,CACvD,OAAA,CAASJ,EACT,KAAA,CAAOL,CAAAA,CACP,cAAec,CAAAA,CACf,QAAA,CAAUL,GAAmB,CAAC,CAACE,CAAAA,CACjC,CAAA,CAGDb,CAAAA,GAAkB,SAAA,EACjBn1B,IAACqH,CAAAA,CAAA,CACC,MAAM,gBAAA,CACN,WAAA,CAAY,uBACZ,KAAA,CAAOkgB,CAAAA,CACP,SAAWxgB,CAAAA,EAAMqvB,CAAAA,CAAsBrvB,EAAE,MAAA,CAAO,KAAK,EACvD,CAAA,CAIF/G,GAAAA,CAACkhB,GAAA,CACC,KAAA,CAAM,YAAA,CACN,IAAA,CAAMoU,CAAAA,CACN,YAAA,CAAce,EACd,WAAA,CAAY,mBAAA,CACZ,gBAAgB,QAAA,CAClB,CAAA,CAGAr2B,IAACkhB,EAAAA,CAAA,CACC,MAAM,UAAA,CACN,IAAA,CAAMqU,EACN,YAAA,CAAce,CAAAA,CACd,YAAY,iBAAA,CACZ,eAAA,CAAgB,SAClB,CAAA,CAAA,CACF,CAAA,CAGAt2B,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,kBAAA,CACb,SAAAoB,IAAAA,CAACwB,CAAAA,CAAA,CACC,OAAA,CAAS2zB,CAAAA,CACT,SAAUK,CAAAA,EAAsBrvB,CAAAA,CAE/B,UAAAA,CAAAA,EAAavH,GAAAA,CAACgc,QAAA,CAAQ,SAAA,CAAU,uBAAuB,CAAA,CACvDzU,CAAAA,CAAY,gBAAkB,oBAAA,CAAA,CACjC,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAIDiuB,CAAAA,EAAsBG,GACrBv0B,IAAAA,CAAAyK,QAAAA,CAAA,CAEE,QAAA,CAAA,CAAA7L,GAAAA,CAAC60B,GAAA,CAAyB,IAAA,CAAMc,EAAiB,MAAA,CAAQb,CAAAA,CAAQ,EAGjE1zB,IAAAA,CAAC7B,CAAAA,CAAA,CACC,QAAA,CAAA,CAAA6B,IAAAA,CAAClB,EAAA,CAAW,SAAA,CAAU,KAAA,CACpB,QAAA,CAAA,CAAAF,GAAAA,CAACM,CAAAA,CAAA,CAAU,IAAA,CAAK,IAAA,CAAK,+BAAmB,CAAA,CAGxCc,IAAAA,CAAC,OAAI,SAAA,CAAU,yBAAA,CACb,UAAAA,IAAAA,CAACwB,CAAAA,CAAA,CAAO,OAAA,CAAQ,SAAA,CAAU,QAAS4zB,CAAAA,CACjC,QAAA,CAAA,CAAAx2B,IAACyJ,QAAAA,CAAA,CAAS,SAAA,CAAU,cAAA,CAAe,CAAA,CAAE,cAAA,CAAA,CAEvC,EACArI,IAAAA,CAACwB,CAAAA,CAAA,CAAO,OAAA,CAAQ,SAAA,CAAU,QAAS6zB,EAAAA,CACjC,QAAA,CAAA,CAAAz2B,IAACqJ,QAAAA,CAAA,CAAS,UAAU,cAAA,CAAe,CAAA,CAAE,aAEvC,CAAA,CAAA,CACF,CAAA,CAAA,CACF,EACArJ,GAAAA,CAACS,CAAAA,CAAA,CACC,QAAA,CAAAT,GAAAA,CAAC8e,EAAAA,CAAA,CACC,OAAA,CAASC,EAAAA,CACT,KAAM6W,CAAAA,CACN,YAAA,CAAa,wBACf,CAAA,CACF,CAAA,CAAA,CACF,GACF,CAAA,CAAA,CAEJ,MCtPSiB,EAAAA,CAAoB,CAAC,CAAE,IAAA,CAAAvrB,CAAK,IAA8B,CACrE,GAAM,CAACwrB,CAAAA,CAAaC,CAAc,EAAI/wB,QAAAA,CAAwB,IAAI,CAAA,CAE5D4F,CAAAA,CAAa,CAACzM,CAAAA,CAAeiR,IAAkB,CACnD,SAAA,CAAU,UAAU,SAAA,CAAUjR,CAAK,EACnC43B,CAAAA,CAAe3mB,CAAK,EACpB,UAAA,CAAW,IAAM2mB,EAAe,IAAI,CAAA,CAAG,GAAI,EAC7C,CAAA,CAEA,OACE31B,IAAAA,CAACP,EAAAA,CAAA,CAAS,KAAA,CAAM,aAAA,CACd,QAAA,CAAA,CAAAO,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,kDAEb,QAAA,CAAA,CAAApB,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,kBAAkB,KAAA,CAAO4B,CAAAA,CAAK,eAAgB,MAAA,CAAO,YAAA,CAAa,EACnFtL,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,eAAA,CAAgB,KAAA,CAAO4B,CAAAA,CAAK,YAAA,CAAc,MAAA,CAAO,aAAa,CAAA,CAG/EtL,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,iBAAiB,KAAA,CAAO4B,CAAAA,CAAK,aAAA,CAAe,MAAA,CAAO,YAAA,CAAa,CAAA,CACjFtL,IAAC0J,CAAAA,CAAA,CAAU,MAAM,cAAA,CAAe,KAAA,CAAO4B,EAAK,WAAA,CAAa,MAAA,CAAO,YAAA,CAAa,CAAA,CAG7EtL,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,eAAA,CAAgB,MAAO4B,CAAAA,CAAK,YAAA,CAAc,OAAO,YAAA,CAAa,CAAA,CAC/EtL,IAAC0J,CAAAA,CAAA,CAAU,MAAM,kBAAA,CAAmB,KAAA,CAAO4B,EAAK,eAAA,CAAiB,MAAA,CAAO,aAAa,CAAA,CAGrFtL,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,UAAA,CAAW,MAAO4B,CAAAA,CAAK,OAAA,CAAS,OAAO,YAAA,CAAa,CAAA,CACrEtL,IAAC0J,CAAAA,CAAA,CAAU,MAAM,cAAA,CAAe,KAAA,CAAO4B,EAAK,WAAA,EAAe,GAAA,CAAK,OAAO,YAAA,CAAa,CAAA,CAGpFtL,IAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,gBAAA,CAAiB,KAAA,CAAO4B,CAAAA,CAAK,eAAiB,GAAA,CAAK,MAAA,CAAO,aAAa,CAAA,CACxFtL,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,UAAU,KAAA,CAAO4B,CAAAA,CAAK,SAAW,GAAA,CAAK,MAAA,CAAO,aAAa,CAAA,CAG3EtL,GAAAA,CAAC0J,EAAA,CACC,KAAA,CAAM,cAAA,CACN,KAAA,CACEtI,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wBAAA,CACb,QAAA,CAAA,CAAApB,IAAC,MAAA,CAAA,CAAK,SAAA,CAAU,YAAa,QAAA,CAAAsL,CAAAA,CAAK,YAAY,CAAA,CAC9CtL,GAAAA,CAAC,UACC,IAAA,CAAK,QAAA,CACL,QAAS,IAAM4L,CAAAA,CAAWN,EAAK,WAAA,CAAa,aAAa,CAAA,CACzD,SAAA,CAAU,6EAAA,CAET,QAAA,CAAAwrB,IAAgB,aAAA,CACf92B,GAAAA,CAACkE,MAAA,CAAM,SAAA,CAAU,2BAA2B,CAAA,CAE5ClE,GAAAA,CAAC8L,KAAA,CAAK,SAAA,CAAU,cAAc,CAAA,CAElC,CAAA,CAAA,CACF,EAEF,MAAA,CAAO,YAAA,CACT,EACA9L,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,gBAAA,CAAiB,KAAA,CAAO4B,EAAK,aAAA,EAAiB,GAAA,CAAK,OAAO,YAAA,CAAa,CAAA,CAGxFtL,IAAC0J,CAAAA,CAAA,CAAU,MAAM,aAAA,CAAc,KAAA,CAAO4B,EAAK,UAAA,EAAc,GAAA,CAAK,OAAO,YAAA,CAAa,CAAA,CAClFtL,IAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,aAAA,CAAc,KAAA,CAAO4B,CAAAA,CAAK,YAAc,GAAA,CAAK,MAAA,CAAO,aAAa,CAAA,CAGlFtL,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,gBAAgB,KAAA,CAAO4B,CAAAA,CAAK,cAAgB,GAAA,CAAK,MAAA,CAAO,aAAa,CAAA,CACtFtL,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,eAAA,CAAgB,KAAA,CAAO4B,CAAAA,CAAK,YAAA,EAAgB,IAAK,MAAA,CAAO,YAAA,CAAa,EAGtFtL,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,aAAA,CAAc,MAAO4B,CAAAA,CAAK,UAAA,EAAc,IAAK,MAAA,CAAO,YAAA,CAAa,EAClFtL,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,QAAA,CAAS,KAAA,CAAO4B,CAAAA,CAAK,KAAA,EAAS,GAAA,CAAK,OAAO,YAAA,CAAa,CAAA,CAGxEtL,IAAC0J,CAAAA,CAAA,CAAU,MAAM,SAAA,CAAU,KAAA,CAAO4B,EAAK,OAAA,EAAW,GAAA,CAAK,OAAO,YAAA,CAAa,CAAA,CAC3EtL,IAAC0J,CAAAA,CAAA,CAAU,MAAM,aAAA,CAAc,KAAA,CAAO4B,CAAAA,CAAK,UAAA,EAAc,GAAA,CAAK,MAAA,CAAO,aAAa,CAAA,CAAA,CACpF,CAAA,CAGCA,EAAK,GAAA,EAAOtL,GAAAA,CAACg3B,GAAA,CAAsB,IAAA,CAAM1rB,EAAK,GAAA,CAAK,CAAA,CAAA,CACtD,CAEJ,CAAA,CAEM0rB,EAAAA,CAAwB,CAAC,CAAE,IAAA,CAAA1rB,CAAK,CAAA,GAAqB,CACzD,GAAM,CAACW,CAAAA,CAAYC,CAAa,EAAIlG,QAAAA,CAAS,KAAK,EAElD,OACE5E,IAAAA,CAAC,OAAI,SAAA,CAAU,kCAAA,CACb,UAAAA,IAAAA,CAAC,QAAA,CAAA,CACC,KAAK,QAAA,CACL,OAAA,CAAS,IAAM8K,CAAAA,CAAc,CAACD,CAAU,CAAA,CACxC,SAAA,CAAU,2GAAA,CAET,QAAA,CAAA,CAAAA,CAAAA,CACCjM,GAAAA,CAAC+D,YAAA,CAAY,SAAA,CAAU,UAAU,CAAA,CAEjC/D,GAAAA,CAACsM,aAAA,CAAa,SAAA,CAAU,UAAU,CAAA,CAClC,aAAA,CAAA,CAEJ,EACCL,CAAAA,EACCjM,GAAAA,CAAC,OAAI,SAAA,CAAU,MAAA,CACb,SAAAA,GAAAA,CAACqL,EAAAA,CAAA,CAAW,IAAA,CAAMC,CAAAA,CAAM,WAAA,CAAW,KAAC,CAAA,CACtC,CAAA,CAAA,CAEJ,CAEJ,ECpHO,IAAM2rB,GAAqB,CAAC,CAAE,KAAA3rB,CAAAA,CAAM,YAAA,CAAA4rB,CAAa,CAAA,GAA+B,CACrF,GAAM,CAACC,CAAAA,CAAeC,CAAgB,CAAA,CAAIpxB,QAAAA,CAAS,KAAK,EAClD,CAACqxB,CAAAA,CAAWC,CAAY,CAAA,CAAItxB,QAAAA,CAASsF,EAAK,IAAA,EAAQ,EAAE,EACpD,CAACI,CAAAA,CAAQC,CAAS,CAAA,CAAI3F,QAAAA,CAAiC,IAAI,CAAA,CAC3DuxB,CAAAA,CAAW7K,OAAyB,IAAI,CAAA,CAE9Crb,SAAAA,CAAU,IAAM,CACV8lB,CAAAA,EAAiBI,EAAS,OAAA,EAC5BA,CAAAA,CAAS,QAAQ,KAAA,GAErB,EAAG,CAACJ,CAAa,CAAC,CAAA,CAElB,IAAMK,CAAAA,CAAiB,IAAM,CACvBN,CAAAA,EAAgBG,IAAc/rB,CAAAA,CAAK,IAAA,EACrC4rB,EAAaG,CAAS,CAAA,CAExBD,CAAAA,CAAiB,KAAK,EACxB,CAAA,CAEMK,EAAmB,IAAM,CAC7BH,EAAahsB,CAAAA,CAAK,IAAA,EAAQ,EAAE,CAAA,CAC5B8rB,CAAAA,CAAiB,KAAK,EACxB,CAAA,CAEM5hB,EAAiBzO,CAAAA,EAA2B,CAC5CA,EAAE,GAAA,GAAQ,OAAA,CACZywB,GAAe,CACNzwB,CAAAA,CAAE,GAAA,GAAQ,QAAA,EACnB0wB,CAAAA,GAEJ,EAEM7rB,CAAAA,CAAa,CAACzM,EAAeiR,CAAAA,GAA2B,CAC5D,UAAU,SAAA,CAAU,SAAA,CAAUjR,CAAK,CAAA,CACnCwM,CAAAA,CAAUyE,CAAK,CAAA,CACf,UAAA,CAAW,IAAMzE,CAAAA,CAAU,IAAI,EAAG,GAAI,EACxC,CAAA,CAEM+rB,CAAAA,CAAiBpsB,CAAAA,CAAK,IAAA,CAC1BlK,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,0BACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,QAAK,SAAA,CAAU,SAAA,CAAW,SAAAsL,CAAAA,CAAK,IAAA,CAAK,EACrCtL,GAAAA,CAAC4C,CAAAA,CAAA,CACC,OAAA,CAAQ,OAAA,CACR,KAAK,MAAA,CACL,SAAA,CAAU,SAAA,CACV,OAAA,CAAS,IAAMgJ,CAAAA,CAAWN,EAAK,IAAA,CAAO,MAAM,EAE3C,QAAA,CAAAI,CAAAA,GAAW,OACV1L,GAAAA,CAACkE,KAAAA,CAAA,CAAM,SAAA,CAAU,sBAAA,CAAuB,EAExClE,GAAAA,CAAC8L,IAAAA,CAAA,CAAK,SAAA,CAAU,+BAAA,CAAgC,EAEpD,CAAA,CAAA,CACF,CAAA,CAEA9L,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,SAAA,CAAU,aAAC,CAAA,CAGvB23B,CAAAA,CAAiBR,EACrB/1B,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,yBAAA,CACb,QAAA,CAAA,CAAApB,IAAC,OAAA,CAAA,CACC,GAAA,CAAKu3B,EACL,KAAA,CAAOF,CAAAA,CACP,SAAWtwB,CAAAA,EAAMuwB,CAAAA,CAAavwB,EAAE,MAAA,CAAO,KAAK,CAAA,CAC5C,SAAA,CAAWyO,CAAAA,CACX,SAAA,CAAU,oHACZ,CAAA,CACAxV,GAAAA,CAAC4C,EAAA,CACC,OAAA,CAAQ,QACR,IAAA,CAAK,MAAA,CACL,UAAU,SAAA,CACV,OAAA,CAAS40B,EAET,QAAA,CAAAx3B,GAAAA,CAACkE,MAAA,CAAM,SAAA,CAAU,uBAAuB,CAAA,CAC1C,CAAA,CACAlE,GAAAA,CAAC4C,CAAAA,CAAA,CACC,OAAA,CAAQ,QACR,IAAA,CAAK,MAAA,CACL,UAAU,SAAA,CACV,OAAA,CAAS60B,EAET,QAAA,CAAAz3B,GAAAA,CAAC8G,IAAA,CAAE,SAAA,CAAU,gCAAgC,CAAA,CAC/C,CAAA,CAAA,CACF,EAEAwE,CAAAA,CAAK,IAAA,CACHlK,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yBAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,MAAA,CAAA,CAAK,UAAU,SAAA,CAAW,QAAA,CAAAsL,EAAK,IAAA,CAAK,CAAA,CACrCtL,IAAC4C,CAAAA,CAAA,CACC,QAAQ,OAAA,CACR,IAAA,CAAK,OACL,SAAA,CAAU,SAAA,CACV,QAAS,IAAMgJ,CAAAA,CAAWN,EAAK,IAAA,CAAO,MAAM,CAAA,CAE3C,QAAA,CAAAI,CAAAA,GAAW,MAAA,CACV1L,IAACkE,KAAAA,CAAA,CAAM,UAAU,sBAAA,CAAuB,CAAA,CAExClE,IAAC8L,IAAAA,CAAA,CAAK,UAAU,+BAAA,CAAgC,CAAA,CAEpD,EACCorB,CAAAA,EACCl3B,GAAAA,CAAC4C,EAAA,CACC,OAAA,CAAQ,QACR,IAAA,CAAK,MAAA,CACL,SAAA,CAAU,SAAA,CACV,OAAA,CAAS,IAAMw0B,EAAiB,IAAI,CAAA,CAEpC,SAAAp3B,GAAAA,CAAC43B,MAAAA,CAAA,CAAO,SAAA,CAAU,+BAAA,CAAgC,EACpD,CAAA,CAAA,CAEJ,CAAA,CAEAV,EACEl3B,GAAAA,CAAC4C,CAAAA,CAAA,CACC,OAAA,CAAQ,MAAA,CACR,UAAU,oBAAA,CACV,OAAA,CAAS,IAAMw0B,CAAAA,CAAiB,IAAI,CAAA,CACrC,oBAED,CAAA,CAEAp3B,GAAAA,CAAC,QAAK,SAAA,CAAU,SAAA,CAAU,aAAC,CAAA,CAKjC,OACEoB,KAACP,EAAAA,CAAA,CACC,MAAM,uBAAA,CACN,UAAA,CACEb,IAACsB,CAAAA,CAAA,CAAM,QAASgK,CAAAA,CAAK,IAAA,GAAS,eAAA,CAAkB,SAAA,CAAY,WAAA,CACzD,QAAA,CAAAA,EAAK,IAAA,GAAS,eAAA,CAAkB,gBAAkB,UAAA,CACrD,CAAA,CAGF,UAAAlK,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,iDAAA,CAEb,QAAA,CAAA,CAAApB,IAAC0J,CAAAA,CAAA,CAAU,MAAM,MAAA,CAAO,KAAA,CAAOiuB,EAAgB,MAAA,CAAO,YAAA,CAAa,CAAA,CACnE33B,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,MAAM,MAAA,CAAO,KAAA,CAAOguB,EAAgB,MAAA,CAAO,YAAA,CAAa,EAGnE13B,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,YAAA,CAAa,MAAO4B,CAAAA,CAAK,cAAA,CAAgB,OAAO,YAAA,CAAa,CAAA,CAC9EtL,IAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,aAAA,CAAc,KAAA,CAAO4B,CAAAA,CAAK,gBAAiB,MAAA,CAAO,YAAA,CAAa,EAGhFtL,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,oBAAA,CAAqB,MAAO4B,CAAAA,CAAK,uBAAA,CAAyB,OAAO,YAAA,CAAa,CAAA,CAC/FtL,IAAC0J,CAAAA,CAAA,CAAU,MAAM,qBAAA,CAAsB,KAAA,CAAO4B,CAAAA,CAAK,wBAAA,CAA0B,MAAA,CAAO,YAAA,CAAa,EAGjGtL,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,eAAA,CAAgB,MAAO4B,CAAAA,CAAK,gBAAA,CAAkB,OAAO,YAAA,CAAa,CAAA,CACnFtL,IAAC0J,CAAAA,CAAA,CAAU,MAAM,gBAAA,CAAiB,KAAA,CAAO4B,EAAK,iBAAA,CAAmB,MAAA,CAAO,YAAA,CAAa,CAAA,CAGrFtL,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,kBAAA,CAAmB,MAAO4B,CAAAA,CAAK,cAAA,CAAgB,OAAO,YAAA,CAAa,CAAA,CACpFtL,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,oBAAoB,KAAA,CAAO4B,CAAAA,CAAK,gBAAiB,MAAA,CAAO,YAAA,CAAa,EAGtFtL,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,aAAA,CAAc,KAAA,CAAO4B,EAAK,UAAA,EAAc,GAAA,CAAK,OAAO,YAAA,CAAa,CAAA,CAClFtL,IAAC0J,CAAAA,CAAA,CAAU,MAAM,eAAA,CAAgB,KAAA,CAAO4B,EAAK,YAAA,EAAgB,GAAA,CAAK,OAAO,YAAA,CAAa,CAAA,CAAA,CACxF,EAGCA,CAAAA,CAAK,2BAAA,EACJtL,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,MAAA,CACb,SAAAA,GAAAA,CAAC0J,CAAAA,CAAA,CACC,KAAA,CAAM,gCAAA,CACN,MAAO4B,CAAAA,CAAK,2BAAA,CACZ,OAAO,YAAA,CACT,CAAA,CACF,EAIDA,CAAAA,CAAK,GAAA,EACJtL,IAACg3B,EAAAA,CAAA,CAAsB,KAAM1rB,CAAAA,CAAK,GAAA,CAAK,CAAA,CAAA,CAE3C,CAEJ,CAAA,CAEM0rB,EAAAA,CAAwB,CAAC,CAAE,IAAA,CAAA1rB,CAAK,CAAA,GAAqB,CACzD,GAAM,CAACW,CAAAA,CAAYC,CAAa,CAAA,CAAIlG,QAAAA,CAAS,KAAK,CAAA,CAElD,OACE5E,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,mCACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,QAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,OAAA,CAAS,IAAM8K,CAAAA,CAAc,CAACD,CAAU,CAAA,CACxC,SAAA,CAAU,4GAET,QAAA,CAAA,CAAAA,CAAAA,CACCjM,IAAC+D,WAAAA,CAAA,CAAY,UAAU,SAAA,CAAU,CAAA,CAEjC/D,IAACsM,YAAAA,CAAA,CAAa,UAAU,SAAA,CAAU,CAAA,CAClC,aAAA,CAAA,CAEJ,CAAA,CACCL,CAAAA,EACCjM,GAAAA,CAAC,OAAI,SAAA,CAAU,MAAA,CACb,SAAAA,GAAAA,CAACqL,EAAAA,CAAA,CAAW,IAAA,CAAMC,CAAAA,CAAM,YAAW,IAAA,CAAC,CAAA,CACtC,GAEJ,CAEJ,ECxOA,IAAMpM,EAAAA,CAAkBC,CAAAA,EAA2B,CACjD,IAAM04B,CAAAA,CAAW,OAAO14B,CAAAA,EAAU,QAAA,CAAW,WAAWA,CAAK,CAAA,CAAIA,EACjE,OAAI,KAAA,CAAM04B,CAAQ,CAAA,CAAU,EAAA,CACrB,IAAI,IAAA,CAAK,YAAA,CAAa,OAAA,CAAS,CACpC,KAAA,CAAO,UAAA,CACP,SAAU,KAAA,CACV,qBAAA,CAAuB,CACzB,CAAC,CAAA,CAAE,OAAOA,CAAQ,CACpB,EAOaC,EAAAA,CAAgB,CAAC,CAAE,KAAA,CAAA34B,CAAAA,CAAO,SAAA6Q,CAAAA,CAAU,GAAGlQ,CAAM,CAAA,GAA0B,CAClF,GAAM,CAACi4B,CAAAA,CAAWC,CAAY,EAAUC,EAAA,CAAA,QAAA,CAAS,KAAK,EAEhDva,CAAAA,CAAeve,CAAAA,CAChB44B,EAAY54B,CAAAA,CAAQD,EAAAA,CAAeC,CAAK,CAAA,CACzC,EAAA,CASJ,OACEa,GAAAA,CAACqH,CAAAA,CAAA,CACE,GAAGvH,CAAAA,CACJ,MAAO4d,CAAAA,CACP,QAAA,CAXkB3W,CAAAA,EAA2C,CAE/D,IAAMmV,CAAAA,CADWnV,EAAE,MAAA,CAAO,KAAA,CAAM,QAAQ,UAAA,CAAY,EAAE,EAC/B,KAAA,CAAM,GAAG,EAC1BmxB,CAAAA,CAAYhc,CAAAA,CAAM,CAAC,CAAA,EAAKA,CAAAA,CAAM,OAAS,CAAA,CAAI,GAAA,CAAMA,EAAM,CAAC,CAAA,EAAG,KAAA,CAAM,CAAA,CAAG,CAAC,CAAA,CAAI,IAC/ElM,CAAAA,CAASkoB,CAAS,EACpB,CAAA,CAOI,OAAA,CAAS,IAAMF,CAAAA,CAAa,IAAI,EAChC,MAAA,CAAQ,IAAMA,EAAa,KAAK,CAAA,CAChC,UAAU,SAAA,CACV,WAAA,CAAal4B,EAAM,WAAA,EAAe,OAAA,CACpC,CAEJ,CAAA,CCrCA,IAAMq4B,GAAiBC,EAAA,CAAA,UAAA,CAGrB,CAAC,CAAE,SAAA,CAAA34B,CAAAA,CAAW,GAAGK,CAAM,CAAA,CAAGC,CAAAA,GAC1BC,GAAAA,CAAmB,EAAA,CAAA,IAAA,CAAlB,CACC,IAAKD,CAAAA,CACL,SAAA,CAAWjB,EACT,gTAAA,CACAW,CACF,EACC,GAAGK,CAAAA,CAEJ,SAAAE,GAAAA,CAAmB,EAAA,CAAA,SAAA,CAAlB,CACC,SAAA,CAAWlB,CAAAA,CAAG,+CAA+C,CAAA,CAE7D,QAAA,CAAAkB,IAACkE,KAAAA,CAAA,CAAM,SAAA,CAAU,SAAA,CAAU,CAAA,CAC7B,CAAA,CACF,CACD,EACDi0B,EAAAA,CAAS,YAAgC,EAAA,CAAA,IAAA,CAAK,WAAA,KCVxCj5B,EAAAA,CAAkBC,CAAAA,EAA2B,CACjD,IAAM04B,CAAAA,CAAW,OAAO14B,CAAAA,EAAU,QAAA,CAAW,WAAWA,CAAK,CAAA,CAAIA,EACjE,OAAI,KAAA,CAAM04B,CAAQ,CAAA,CAAU,GAAA,CACrB,IAAI,IAAA,CAAK,YAAA,CAAa,OAAA,CAAS,CACpC,KAAA,CAAO,UAAA,CACP,SAAU,KAAA,CACV,qBAAA,CAAuB,CACzB,CAAC,CAAA,CAAE,OAAOA,CAAQ,CACpB,EAqDaQ,EAAAA,CAA+B,CAC1C,CAAE,KAAA,CAAO,OAAA,CAAS,MAAO,OAAQ,CAAA,CACjC,CAAE,KAAA,CAAO,QAAA,CAAU,KAAA,CAAO,QAAS,CACrC,CAAA,CAwDaC,GAAqB,CAAC,CACjC,KAAA9oB,CAAAA,CACA,eAAA,CAAA+oB,CAAAA,CACA,WAAA,CAAAC,CAAAA,CACA,oBAAA,CAAAC,EACA,gBAAA,CAAA5N,CAAAA,CACA,iBAAA6N,CAAAA,CACA,gBAAA,CAAAC,EACA,YAAA,CAAAC,CAAAA,CACA,aAAA,CAAAC,CAAAA,CACA,gBAAA,CAAAC,CAAAA,CACA,sBAAAC,CAAAA,CACA,YAAA,CAAA1yB,EACA,yBAAA,CAAA2yB,CAAAA,CACA,wBAAAC,CAAAA,CACA,wBAAA,CAAAC,EACA,eAAA,CAAAC,CAAAA,CACA,cAAAC,CAAAA,CACA,kBAAA,CAAAC,EACA,uBAAA,CAAAC,CAAAA,CACA,SAAApX,CAAAA,CACA,mBAAA,CAAAqX,CAAAA,CACA,wBAAA,CAAAC,CAAAA,CACA,gBAAA,CAAAC,EACA,0BAAA,CAAAC,CAAAA,CACA,qBAAAC,EAAAA,CACA,2BAAA,CAAAC,GACA,mBAAA,CAAAC,CAAAA,CACA,yBAAAC,CAAAA,CACA,2BAAA,CAAAC,EACA,wBAAA,CAAAC,CAAAA,CACA,wBAAAC,CAAAA,CACA,mBAAA,CAAAC,EACA,wBAAA,CAAAC,EAAAA,CACA,uBAAA,CAAAC,CAAAA,CACA,qBAAA,CAAAC,EAAAA,CACA,cAAAC,EAAAA,CACA,qBAAA,CAAAC,GACA,sBAAA,CAAAC,EAAAA,CACA,mBAAAC,EAAAA,CAAqB,KAAA,CACrB,mBAAAC,EAAAA,CAAqB,EACvB,IAA+B,CAC7B,IAAMC,GAAkBnrB,CAAAA,CAAK,KAAA,CAAM,iBAAiB,CAAA,CAC9C+X,EAAAA,CAAgB/X,CAAAA,CAAK,KAAA,CAAM,eAAe,CAAA,CAC1C8Y,GAAmB9Y,CAAAA,CAAK,KAAA,CAAM,kBAAkB,CAAA,CAChDorB,EAAAA,CAASprB,EAAK,KAAA,CAAM,QAAQ,EAC5BqrB,EAAAA,CAAwBrrB,CAAAA,CAAK,MAAM,uBAAuB,CAAA,CAC1DsrB,GAAsBtrB,CAAAA,CAAK,KAAA,CAAM,qBAAqB,CAAA,CACtDurB,EAAAA,CAAiBvrB,CAAAA,CAAK,KAAA,CAAM,gBAAgB,CAAA,CAC5CvO,GAAcuO,CAAAA,CAAK,KAAA,CAAM,aAAa,CAAA,CAGtCwrB,EAAAA,CAAuB,CAAC,KAAA,CAAO,MAAM,EAAE,QAAA,CAASL,EAAe,EAC/DM,EAAAA,CAAaN,EAAAA,GAAoB,WACjCO,CAAAA,CAAeP,EAAAA,GAAoB,aAEnCQ,EAAAA,CAAkB3C,CAAAA,CAAc,CACpC,CACE,KAAA,CAAO,qBAAA,CACP,MAAO,CACL,CAAE,MAAO,gBAAA,CAAkB,KAAA,CAAOA,EAAY,aAAc,CAAA,CAC5D,CAAE,KAAA,CAAO,cAAA,CAAgB,MAAOA,CAAAA,CAAY,WAAY,EACxD,CAAE,KAAA,CAAO,eAAgB,KAAA,CAAOA,CAAAA,CAAY,WAAY,CAAA,CACxD,CAAE,KAAA,CAAO,UAAW,KAAA,CAAOA,CAAAA,CAAY,OAAQ,CAAA,CAC/C,CAAE,MAAO,eAAA,CAAiB,KAAA,CAAOA,EAAY,YAAa,CAAA,CAC1D,CAAE,KAAA,CAAO,aAAA,CAAe,MAAOA,CAAAA,CAAY,UAAW,CACxD,CACF,CACF,CAAA,CAAI,EAAC,CAEC4C,EAAAA,CAAuBvQ,EAAmB,CAC9C,CACE,MAAO,0BAAA,CACP,KAAA,CAAO,CACL,CAAE,KAAA,CAAO,oBAAqB,KAAA,CAAOA,CAAAA,CAAiB,gBAAiB,CAAA,CACvE,CAAE,MAAO,iBAAA,CAAmB,KAAA,CAAOA,EAAiB,cAAe,CAAA,CACnE,CAAE,KAAA,CAAO,iBAAA,CAAmB,KAAA,CAAOA,EAAiB,qBAAA,EAAuB,WAAA,IAAiB,GAAI,CAAA,CAChG,CAAE,KAAA,CAAO,eAAA,CAAiB,MAAOA,CAAAA,CAAiB,YAAa,EAC/D,CAAE,KAAA,CAAO,gBAAiB,KAAA,CAAOA,CAAAA,CAAiB,YAAa,CACjE,CACF,CACF,CAAA,CAAI,EAAC,CAECwQ,GAA0BnB,CAAAA,CAAsB,CACpD,CACE,KAAA,CAAO,8BAAA,CACP,MAAO,CACL,CAAE,MAAO,gBAAA,CAAkB,KAAA,CAAOA,EAAoB,aAAc,CAAA,CACpE,CAAE,KAAA,CAAO,cAAA,CAAgB,MAAOA,CAAAA,CAAoB,WAAY,CAAA,CAChE,CAAE,KAAA,CAAO,cAAA,CAAgB,MAAOA,CAAAA,CAAoB,WAAY,EAChE,CAAE,KAAA,CAAO,gBAAiB,KAAA,CAAOA,CAAAA,CAAoB,YAAa,CAAA,CAClE,CAAE,MAAO,aAAA,CAAe,KAAA,CAAOA,EAAoB,UAAW,CAChE,CACF,CACF,CAAA,CAAI,EAAC,CAeCoB,EAAAA,CAAa,CACjB,CACE,KAAA,CAAO,qBAAA,CACP,MAhBgB,CAClB,CAAE,MAAO,kBAAA,CAAoB,KAAA,CAAOd,GAAuB,IAAA,CAAK11B,EAAAA,EAAKA,GAAE,KAAA,GAAU61B,EAAe,GAAG,KAAA,EAAS,GAAI,EAChH,CAAE,KAAA,CAAO,gBAAA,CAAkB,KAAA,CAAOpT,EAAAA,EAAiB,GAAI,EACvD,GAAI2T,CAAAA,CAAe,CACjB,CAAE,KAAA,CAAO,YAAa,KAAA,CAAOJ,EAAAA,GAAwB,QAAU,OAAA,CAAUA,EAAAA,GAAwB,SAAW,QAAA,CAAW,GAAI,EAC3H,CAAE,KAAA,CAAO,kBAAmB,KAAA,CAAOP,EAAAA,CAAsB,IAAA,CAAKz1B,EAAAA,EAAKA,EAAAA,CAAE,KAAA,GAAUi2B,EAAc,CAAA,EAAG,KAAA,EAAS,GAAI,CAC/G,CAAA,CAAI,EAAC,CACL,GAAIE,GAAa,CAAC,CAAE,MAAO,kBAAA,CAAoB,KAAA,CAAOJ,IAAyB,GAAI,CAAC,EAAI,EAAC,CACzF,GAAIG,EAAAA,CAAuB,CAAC,CAAE,MAAO,cAAA,CAAgB,KAAA,CAAO1S,IAAoB,GAAI,CAAC,EAAI,EAAC,CAC1F,CAAE,KAAA,CAAO,QAAA,CAAU,MAAOsS,EAAAA,CAAS17B,EAAAA,CAAe07B,EAAM,CAAA,CAAI,GAAI,EAChE,CAAE,KAAA,CAAO,aAAA,CAAe,KAAA,CAAOprB,CAAAA,CAAK,KAAA,CAAM,aAAa,CAAA,EAAK,KAAM,CACpE,CAME,CACF,EAEA,OACEpO,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,2CAAA,CAEX,QAAA,CAAA,CAAApB,IAAC,KAAA,CAAA,CACC,QAAA,CAAAA,IAAC,IAAA,CAAA,CAAG,SAAA,CAAU,oCAAoC,QAAA,CAAA,iBAAA,CAAe,CAAA,CACnE,CAAA,CACAA,GAAAA,CAACuP,EAAAA,CAAA,CAAa,KAAMC,CAAAA,CAClB,QAAA,CAAApO,KAAC,MAAA,CAAA,CAAK,QAAA,CAAW2F,IAAMA,EAAAA,CAAE,cAAA,GAEtB,QAAA,CAAA,CAACwxB,CAAAA,CA6BAv4B,IAACa,EAAAA,CAAA,CACC,MAAM,qBAAA,CACN,OAAA,CAAQ,SACR,aAAA,CACEO,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yBAAA,CACb,QAAA,CAAA,CAAApB,IAACu7B,YAAAA,CAAA,CAAa,UAAU,sBAAA,CAAuB,CAAA,CAC/Cn6B,KAACwB,CAAAA,CAAA,CAAO,QAAQ,OAAA,CAAQ,IAAA,CAAK,KAAK,OAAA,CAASw2B,CAAAA,CACzC,UAAAp5B,GAAAA,CAACsC,IAAAA,CAAA,CAAK,SAAA,CAAU,cAAA,CAAe,CAAA,CAAE,MAAA,CAAA,CAEnC,CAAA,CAAA,CACF,CAAA,CAGF,SAAAtC,GAAAA,CAACoxB,EAAAA,CAAA,CAAS,IAAA,CAAM+J,EAAAA,CAAiB,QAAS,CAAA,CAAG,CAAA,CAC/C,EA1CAn7B,GAAAA,CAACa,EAAAA,CAAA,CAAS,KAAA,CAAM,gBAAA,CAAiB,QAAQ,SAAA,CACvC,QAAA,CAAAO,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,+BAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,QAAA,CACb,QAAA,CAAAA,IAAC0P,CAAAA,CAAA,CACC,KAAK,eAAA,CACL,WAAA,CAAY,uBACd,CAAA,CACF,CAAA,CACA1P,IAAC4C,CAAAA,CAAA,CACC,QAASu2B,CAAAA,CACT,QAAA,CAAU,CAAC5R,EAAAA,EAAiBuR,CAAAA,CAC5B,SAAA,CAAU,oBAAA,CAET,QAAA,CAAAA,CAAAA,CACC13B,KAAAyK,QAAAA,CAAA,CACE,UAAA7L,GAAAA,CAACgc,OAAAA,CAAA,CAAQ,SAAA,CAAU,2BAAA,CAA4B,EAAE,eAAA,CAAA,CAEnD,CAAA,CAEA5a,KAAAyK,QAAAA,CAAA,CACE,UAAA7L,GAAAA,CAAC0Y,MAAAA,CAAA,CAAO,SAAA,CAAU,cAAA,CAAe,CAAA,CAAE,gBAAA,CAAA,CAErC,CAAA,CAEJ,CAAA,CAAA,CACF,EACF,CAAA,CAoBF1Y,GAAAA,CAACa,GAAA,CACC,KAAA,CAAM,mBACN,OAAA,CAAQ,SAAA,CACR,UAAW/B,CAAAA,CAAG,CAACy5B,GAAmB,gCAAgC,CAAA,CAEpE,SAAAv4B,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,gDAAA,CACV,QAAA,CAAAw6B,EAAAA,CAAuB,GAAA,CAAKpxB,EAAAA,EAAS,CACpC,IAAMyT,EAAAA,CAAOzT,EAAAA,CAAK,KACZoyB,EAAAA,CAAab,EAAAA,GAAoBvxB,GAAK,KAAA,CACtCqyB,EAAAA,CAAa,CAAClD,CAAAA,EAAmBnvB,EAAAA,CAAK,SAC5C,OACEhI,IAAAA,CAAC,UAEC,IAAA,CAAK,QAAA,CACL,QAAS,IAAM,CAACgI,EAAAA,CAAK,QAAA,EAAYkwB,CAAAA,CAAwBlwB,EAAAA,CAAK,KAAK,CAAA,CACnE,QAAA,CAAUqyB,GACV,SAAA,CAAW38B,CAAAA,CACT,0FACA28B,EAAAA,CACI,sDAAA,CACA,0CACJD,EAAAA,EAAc,CAACpyB,GAAK,QAAA,CAChB,uCAAA,CACA,CAACqyB,EAAAA,EAAc,uBACrB,EAEA,QAAA,CAAA,CAAAz7B,GAAAA,CAAC6c,EAAAA,CAAA,CAAK,SAAA,CAAW/d,CAAAA,CACf,6BACA08B,EAAAA,EAAc,CAACpyB,GAAK,QAAA,CAAW,cAAA,CAAiB,uBAClD,CAAA,CAAG,CAAA,CACHpJ,IAAC,MAAA,CAAA,CAAK,SAAA,CAAWlB,EACf,qBAAA,CACA08B,EAAAA,EAAc,CAACpyB,EAAAA,CAAK,QAAA,CAAW,eAAiBqyB,EAAAA,CAAa,uBAAA,CAA0B,iBACzF,CAAA,CACG,QAAA,CAAAryB,EAAAA,CAAK,MACR,CAAA,CAAA,CAAA,CAvBKA,EAAAA,CAAK,KAwBZ,CAEJ,CAAC,EACH,CAAA,CACF,CAAA,CAGC4xB,KACEvC,CAAAA,CAqFCz4B,GAAAA,CAACa,GAAA,CACC,KAAA,CAAM,2BACN,OAAA,CAAQ,QAAA,CACR,cACEO,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yBAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAACu7B,aAAA,CAAa,SAAA,CAAU,uBAAuB,CAAA,CAC/Cn6B,IAAAA,CAACwB,EAAA,CAAO,OAAA,CAAQ,QAAQ,IAAA,CAAK,IAAA,CAAK,QAASy2B,CAAAA,CACzC,QAAA,CAAA,CAAAr5B,IAACsC,IAAAA,CAAA,CAAK,UAAU,cAAA,CAAe,CAAA,CAAE,MAAA,CAAA,CAEnC,CAAA,CAAA,CACF,CAAA,CAGF,QAAA,CAAAtC,IAACoxB,EAAAA,CAAA,CAAS,KAAMgK,EAAAA,CAAsB,OAAA,CAAS,EAAG,CAAA,CACpD,CAAA,CAlGAh6B,KAACP,EAAAA,CAAA,CACC,MAAM,qBAAA,CACN,OAAA,CAAQ,UACR,SAAA,CAAW/B,CAAAA,CAAG,CAAC67B,EAAAA,EAAmB,gCAAgC,CAAA,CAEpE,QAAA,CAAA,CAAAv5B,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,UAAA,CACb,QAAA,CAAA,CAAAA,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,WACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,SACC,IAAA,CAAK,MAAA,CACL,YAAY,0CAAA,CACZ,KAAA,CAAOsoB,GACP,QAAA,CAAWvhB,EAAAA,EAAM2yB,EAA2B3yB,EAAAA,CAAE,MAAA,CAAO,KAAK,CAAA,CAC1D,QAAA,CAAU,CAAC4zB,GACX,SAAA,CAAW77B,CAAAA,CACT,kFACA,0DAAA,CACA,qGAAA,CACA,kDACAm6B,CAAAA,EAA2B,OAC7B,EACF,CAAA,CACCA,CAAAA,EACCj5B,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,4CACb,QAAA,CAAAA,GAAAA,CAACgc,QAAA,CAAQ,SAAA,CAAU,4CAAA,CAA6C,CAAA,CAClE,CAAA,CAAA,CAEJ,CAAA,CAGCkd,GAA4BF,CAAAA,CAA0B,MAAA,CAAS,GAC9D53B,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,uHAAA,CAEb,QAAA,CAAA,CAAAA,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,6EAA6E,QAAA,CAAA,CAAA,UAAA,CACjF43B,CAAAA,CAA0B,OAAO,MAAA,CAAKc,CAAAA,CAAyB,YAC1E,CAAA,CAGA95B,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,sBAAA,CACZ,QAAA,CAAAg5B,EAA0B,GAAA,CAAK0C,EAAAA,EAC9Bt6B,KAAC,QAAA,CAAA,CAEC,IAAA,CAAK,SACL,OAAA,CAAS,IAAMu4B,EAAAA,CAAqB+B,EAAM,CAAA,CAC1C,SAAA,CAAU,+DAEV,QAAA,CAAA,CAAA17B,GAAAA,CAAC,OAAI,SAAA,CAAU,qBAAA,CAAuB,SAAA07B,EAAAA,CAAO,IAAA,CAAK,CAAA,CAClD17B,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,gCAAiC,QAAA,CAAA07B,EAAAA,CAAO,GAAG,CAAA,CAAA,CAAA,CANrDA,EAAAA,CAAO,EAOd,CACD,CAAA,CACH,EAGC7B,CAAAA,EACC75B,GAAAA,CAAC,UACC,IAAA,CAAK,QAAA,CACL,QAASg6B,CAAAA,CACT,QAAA,CAAUD,EACV,SAAA,CAAU,8GAAA,CAET,QAAA,CAAAA,CAAAA,CACC34B,IAAAA,CAAC,MAAA,CAAA,CAAK,UAAU,wCAAA,CACd,QAAA,CAAA,CAAApB,IAACgc,OAAAA,CAAA,CAAQ,UAAU,sBAAA,CAAuB,CAAA,CAAE,cAE9C,CAAA,CAEA,WAAA,CAEJ,GAEJ,CAAA,CAIDkd,CAAAA,EAA4BF,EAA0B,MAAA,GAAW,CAAA,EAAK,CAACC,CAAAA,EAA2B3Q,EAAAA,CAAiB,MAAA,EAAU,CAAA,EAC5HtoB,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,oFAAA,CACb,QAAA,CAAAoB,KAAC,GAAA,CAAA,CAAE,SAAA,CAAU,gCAAgC,QAAA,CAAA,CAAA,oCAAA,CAAmCknB,EAAAA,CAAiB,KAAC,CAAA,CACpG,CAAA,CAAA,CAEJ,EACAtoB,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,oCAAA,CAAqC,QAAA,CAAA,sCAAA,CAElD,GACF,CAAA,CAAA,CAqBDi7B,EAAAA,GACEhB,CAAAA,CAkCCj6B,GAAAA,CAACa,EAAAA,CAAA,CACC,MAAM,8BAAA,CACN,OAAA,CAAQ,SACR,aAAA,CACEO,IAAAA,CAAC,OAAI,SAAA,CAAU,yBAAA,CACb,UAAApB,GAAAA,CAACu7B,YAAAA,CAAA,CAAa,SAAA,CAAU,sBAAA,CAAuB,EAC/Cn6B,IAAAA,CAACwB,CAAAA,CAAA,CAAO,OAAA,CAAQ,OAAA,CAAQ,IAAA,CAAK,IAAA,CAAK,OAAA,CAASy3B,EAAAA,CACzC,UAAAr6B,GAAAA,CAACsC,IAAAA,CAAA,CAAK,SAAA,CAAU,cAAA,CAAe,EAAE,MAAA,CAAA,CAEnC,CAAA,CAAA,CACF,EAGF,QAAA,CAAAtC,GAAAA,CAACoxB,GAAA,CAAS,IAAA,CAAMiK,GAAyB,OAAA,CAAS,CAAA,CAAG,EACvD,CAAA,CA/CAr7B,GAAAA,CAACa,EAAAA,CAAA,CACC,KAAA,CAAM,kBAAA,CACN,QAAQ,SAAA,CACR,SAAA,CAAW/B,EAAG,CAAC67B,EAAAA,EAAmB,gCAAgC,CAAA,CAElE,QAAA,CAAAv5B,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,gCACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,OAAI,SAAA,CAAU,QAAA,CACb,SAAAA,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,uBAAA,CACL,WAAA,CAAY,gCACZ,QAAA,CAAU,CAACirB,GACb,CAAA,CACF,CAAA,CACA36B,IAAC4C,CAAAA,CAAA,CACC,QAASw3B,CAAAA,CACT,QAAA,CAAU,CAACS,EAAAA,EAAyBV,EAAAA,CACpC,UAAU,oBAAA,CAET,QAAA,CAAAA,GACC/4B,IAAAA,CAAAyK,QAAAA,CAAA,CACE,QAAA,CAAA,CAAA7L,GAAAA,CAACgc,OAAAA,CAAA,CAAQ,SAAA,CAAU,2BAAA,CAA4B,EAAE,eAAA,CAAA,CAEnD,CAAA,CAEA5a,KAAAyK,QAAAA,CAAA,CACE,UAAA7L,GAAAA,CAAC0Y,MAAAA,CAAA,CAAO,SAAA,CAAU,cAAA,CAAe,EAAE,iBAAA,CAAA,CAErC,CAAA,CAEJ,GACF,CAAA,CACF,CAAA,CAAA,CAqBJ1Y,GAAAA,CAACa,EAAAA,CAAA,CACC,KAAA,CAAM,sBACN,OAAA,CAAQ,SAAA,CACR,UAAW/B,CAAAA,CACTk8B,EAAAA,CACK,CAACvC,CAAAA,EAAwB,gCAAA,CAC1BwC,GACG,CAAChB,CAAAA,EAA2B,iCAC5B,CAACU,EAAAA,EAAmB,gCAC7B,CAAA,CAEA,QAAA,CAAAv5B,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,WAAA,CAEZ,QAAA,CAAA,CAAA85B,CAAAA,EACC95B,IAAAA,CAAC,OAAI,SAAA,CAAU,uCAAA,CACb,UAAApB,GAAAA,CAACmQ,EAAAA,CAAA,CACC,IAAA,CAAK,qBAAA,CACL,MAAM,WAAA,CACN,WAAA,CAAY,mBACZ,OAAA,CAASkoB,EAAAA,CACT,SAAU,CAACsC,EAAAA,CACb,EACA36B,GAAAA,CAACmQ,EAAAA,CAAA,CACC,IAAA,CAAK,gBAAA,CACL,KAAA,CAAM,kBACN,WAAA,CAAY,aAAA,CACZ,QAASoqB,EAAAA,CACT,QAAA,CAAU,CAACI,EAAAA,EAAmB,CAACG,GACjC,CAAA,CAAA,CACF,CAAA,CAGF96B,IAAC+P,UAAAA,CAAA,CACC,KAAK,QAAA,CACL,OAAA,CAASP,EAAK,OAAA,CACd,MAAA,CAAQ,CAAC,CAAE,KAAA,CAAAY,EAAM,IACfpQ,GAAAA,CAAC83B,EAAAA,CAAA,CACC,KAAA,CAAM,QAAA,CACN,MAAO1nB,EAAAA,CAAM,KAAA,CACb,SAAUA,EAAAA,CAAM,QAAA,CAChB,SACE4qB,EAAAA,CACI,CAACvC,EACDwC,EAAAA,CACE,CAAChB,EACD,CAACU,EAAAA,CAET,KAAA,CAAOnrB,CAAAA,CAAK,SAAA,CAAU,MAAA,CAAO,QAAQ,OAAA,CACvC,CAAA,CAEJ,EACAxP,GAAAA,CAAC0P,CAAAA,CAAA,CACC,IAAA,CAAK,aAAA,CACL,MAAM,aAAA,CACN,WAAA,CAAY,gCACZ,QAAA,CACEsrB,EAAAA,CACI,CAACvC,CAAAA,CACDwC,EAAAA,CACE,CAAChB,CAAAA,CACD,CAACU,EAAAA,CAEX,CAAA,CAAA,CACF,CAAA,CACF,CAAA,CAGA36B,IAACa,EAAAA,CAAA,CAAS,MAAM,iBAAA,CAAkB,OAAA,CAAQ,UAAU,SAAA,CAAW/B,CAAAA,CAAG,CAACw7B,EAAAA,EAAiB,gCAAgC,EAClH,QAAA,CAAAl5B,IAAAA,CAAC,OAAI,SAAA,CAAU,WAAA,CACb,UAAApB,GAAAA,CAACoxB,EAAAA,CAAA,CAAS,IAAA,CAAMkK,EAAAA,CAAY,OAAA,CAAS,EAAG,CAAA,CAGxCt7B,GAAAA,CAAC,OAAI,SAAA,CAAU,oDAAA,CACb,SAAAA,GAAAA,CAAC+P,UAAAA,CAAA,CACC,IAAA,CAAK,oBAAA,CACL,QAASP,CAAAA,CAAK,OAAA,CACd,OAAQ,CAAC,CAAE,MAAAY,EAAM,CAAA,GACfhP,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,WAAA,CACb,UAAAA,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wBAAA,CACb,QAAA,CAAA,CAAApB,IAACm4B,EAAAA,CAAA,CACC,EAAA,CAAG,oBAAA,CACH,OAAA,CAAS/nB,EAAAA,CAAM,MACf,eAAA,CAAiBA,EAAAA,CAAM,SACzB,CAAA,CACApQ,GAAAA,CAAC,SACC,OAAA,CAAQ,oBAAA,CACR,SAAA,CAAU,gEAAA,CACX,QAAA,CAAA,4FAAA,CAED,CAAA,CAAA,CACF,EACCwP,CAAAA,CAAK,SAAA,CAAU,OAAO,kBAAA,EACrBxP,GAAAA,CAAC,KAAE,SAAA,CAAU,+BAAA,CACV,SAAAwP,CAAAA,CAAK,SAAA,CAAU,OAAO,kBAAA,CAAmB,OAAA,CAC5C,GAEJ,CAAA,CAEJ,CAAA,CACF,EAEAxP,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,8CAAA,CACb,QAAA,CAAAA,GAAAA,CAAC4C,EAAA,CACC,IAAA,CAAK,SACL,OAAA,CAASsf,CAAAA,CACT,UAAU,MAAA,CACV,QAAA,CACE,CAACyY,EAAAA,EACD,CAACpT,IACAyT,EAAAA,EAAwB,CAAC1S,IACzB2S,EAAAA,EAAc,CAAChB,GACfiB,CAAAA,GAAiB,CAACJ,EAAAA,EAAuB,CAACC,EAAAA,CAAAA,EAC3C,CAACH,IACD,CAACprB,CAAAA,CAAK,MAAM,oBAAoB,CAAA,EAChCnJ,EAGD,QAAA,CAAAA,CAAAA,CACCjF,KAAAyK,QAAAA,CAAA,CACE,UAAA7L,GAAAA,CAACgc,OAAAA,CAAA,CAAQ,SAAA,CAAU,2BAAA,CAA4B,EAAE,eAAA,CAAA,CAEnD,CAAA,CAEA5a,IAAAA,CAAAyK,QAAAA,CAAA,CACE,QAAA,CAAA,CAAA7L,IAACu7B,YAAAA,CAAA,CAAa,UAAU,cAAA,CAAe,CAAA,CAAE,sBAE3C,CAAA,CAEJ,CAAA,CACF,GACF,CAAA,CACF,CAAA,CAAA,CACF,EACF,CAAA,CAGAv7B,GAAAA,CAACyK,GAAA,CAAO,IAAA,CAAMiuB,EAAkB,YAAA,CAAc,IAAM,CAAC,CAAA,CACnD,QAAA,CAAAt3B,IAAAA,CAAC2J,GAAA,CAAc,SAAA,CAAU,yCAAyC,eAAA,CAAe,IAAA,CAC/E,UAAA/K,GAAAA,CAACiL,EAAAA,CAAA,CAAa,SAAA,CAAU,eAAA,CACtB,SAAA7J,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,8BAAA,CACZ,QAAA,CAAA,CAAAu3B,IAAqB,SAAA,CACpB34B,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,uEAAA,CACb,QAAA,CAAAA,IAACu7B,YAAAA,CAAA,CAAa,UAAU,sBAAA,CAAuB,CAAA,CACjD,EAEAv7B,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,2EAAA,CACb,QAAA,CAAAA,IAAC8B,OAAAA,CAAA,CAAQ,UAAU,0BAAA,CAA2B,CAAA,CAChD,EAEF9B,GAAAA,CAACmL,EAAAA,CAAA,CAAY,SAAA,CAAU,SAAA,CACpB,QAAA,CAAAwtB,IAAqB,SAAA,CAAY,uBAAA,CAA0B,qBAC9D,CAAA,CAAA,CACF,CAAA,CACF,EACA34B,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,gCAAA,CACZ,QAAA,CAAA24B,IAAqB,SAAA,CACpBv3B,IAAAA,CAAC,OAAI,SAAA,CAAU,gBAAA,CACb,UAAApB,GAAAA,CAAC,GAAA,CAAA,CAAE,SAAA,CAAU,iBAAA,CAAkB,QAAA,CAAA,0EAAA,CAAwE,CAAA,CACvGoB,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,uCACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,OAAI,SAAA,CAAU,8BAAA,CACb,UAAApB,GAAAA,CAAC,MAAA,CAAA,CAAK,UAAU,uBAAA,CAAwB,QAAA,CAAA,aAAA,CAAW,EACnDA,GAAAA,CAAC,MAAA,CAAA,CAAK,UAAU,+BAAA,CAAiC,QAAA,CAAA,MAAA,CAAO,UAAA,EAAW,CAAE,CAAA,CAAA,CACvE,CAAA,CACAoB,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,+BACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,QAAK,SAAA,CAAU,uBAAA,CAAwB,oBAAQ,CAAA,CAChDA,GAAAA,CAAC,QAAK,SAAA,CAAU,aAAA,CAAe,SAAAw4B,CAAAA,CAAc,CAAA,EAAGA,EAAY,WAAW,CAAA,EAAA,EAAKA,CAAAA,CAAY,aAAa,CAAA,CAAA,CAAA,CAAM,KAAA,CAAM,GACnH,CAAA,CACCmC,EAAAA,GAAoB,YACnBv5B,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,8BAAA,CACb,QAAA,CAAA,CAAApB,IAAC,MAAA,CAAA,CAAK,SAAA,CAAU,wBAAwB,QAAA,CAAA,mBAAA,CAAiB,CAAA,CACzDA,IAAC,MAAA,CAAA,CAAK,SAAA,CAAU,cAAe,QAAA,CAAAk6B,CAAAA,CAAsB,CAAA,EAAGA,CAAAA,CAAoB,WAAW,CAAA,EAAA,EAAKA,EAAoB,aAAa,CAAA,CAAA,CAAA,CAAM,MAAM,CAAA,CAAA,CAC3I,CAAA,CAEDS,KAAoB,YAAA,EACnBv5B,IAAAA,CAAAyK,SAAA,CACE,QAAA,CAAA,CAAAzK,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,+BACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,QAAK,SAAA,CAAU,uBAAA,CAAwB,QAAA,CAAA,YAAA,CAAU,CAAA,CAClDA,GAAAA,CAAC,MAAA,CAAA,CAAK,UAAU,aAAA,CAAe,QAAA,CAAA86B,KAAwB,OAAA,CAAU,OAAA,CAAU,SAAS,CAAA,CAAA,CACtF,CAAA,CACA15B,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,+BACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,QAAK,SAAA,CAAU,uBAAA,CAAwB,4BAAgB,CAAA,CACxDA,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,aAAA,CAAe,QAAA,CAAAu6B,GAAsB,IAAA,CAAKz1B,EAAAA,EAAKA,GAAE,KAAA,GAAUi2B,EAAc,GAAG,KAAA,EAAS,KAAA,CAAM,GAC7G,CAAA,CAAA,CACF,CAAA,CAAA,CAEAJ,KAAoB,MAAA,EAAUA,EAAAA,GAAoB,QAClDv5B,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,8BAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,uBAAA,CAAwB,0BAAc,CAAA,CACtDA,GAAAA,CAAC,QAAK,SAAA,CAAU,aAAA,CAAe,SAAAsoB,EAAAA,EAAoB,KAAA,CAAM,GAC3D,CAAA,CAEFlnB,IAAAA,CAAC,OAAI,SAAA,CAAU,8BAAA,CACb,UAAApB,GAAAA,CAAC,MAAA,CAAA,CAAK,UAAU,uBAAA,CAAwB,QAAA,CAAA,SAAA,CAAO,CAAA,CAC/CA,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,cAAe,QAAA,CAAAd,EAAAA,CAAe07B,EAAM,CAAA,CAAE,CAAA,CAAA,CACxD,EACAx5B,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,8BAAA,CACb,QAAA,CAAA,CAAApB,IAAC,MAAA,CAAA,CAAK,SAAA,CAAU,wBAAwB,QAAA,CAAA,cAAA,CAAY,CAAA,CACpDA,IAAC,MAAA,CAAA,CAAK,SAAA,CAAU,aAAA,CAAe,QAAA,CAAAiB,EAAAA,EAAe,KAAA,CAAM,GACtD,CAAA,CAAA,CACF,CAAA,CACCw5B,IAAsBC,EAAAA,EACrBt5B,IAAAA,CAAC,OAAI,SAAA,CAAU,gFAAA,CACb,UAAApB,GAAAA,CAACuY,WAAAA,CAAA,CAAY,SAAA,CAAU,4CAAA,CAA6C,EACpEvY,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,0CAAA,CACV,QAAA,CAAA06B,EAAAA,CACH,CAAA,CAAA,CACF,CAAA,CAAA,CAEJ,CAAA,CAEAt5B,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,iBACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,OAAI,SAAA,CAAU,sFAAA,CACb,UAAApB,GAAAA,CAAC8B,OAAAA,CAAA,CAAQ,SAAA,CAAU,+CAAA,CAAgD,EACnEV,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,0BAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,GAAA,CAAA,CAAE,SAAA,CAAU,sCAAA,CAAuC,wCAA4B,CAAA,CAChFA,GAAAA,CAAC,KAAE,SAAA,CAAU,+DAAA,CAAiE,SAAA44B,CAAAA,CAAa,CAAA,CAAA,CAC7F,GACF,CAAA,CACA54B,GAAAA,CAAC,KAAE,SAAA,CAAU,+BAAA,CAAgC,0GAE7C,CAAA,CAAA,CACF,CAAA,CAEJ,EACAoB,IAAAA,CAAC8J,EAAAA,CAAA,CAAa,SAAA,CAAU,oCAAA,CACrB,QAAA,CAAA,CAAAytB,IAAqB,OAAA,EACpB34B,GAAAA,CAAC4C,EAAA,CAAO,IAAA,CAAK,SAAS,OAAA,CAAS,IAAM42B,EAAyB,KAAK,CAAA,CAAG,gBAEtE,CAAA,CAEDb,CAAAA,GAAqB,WACpBv3B,IAAAA,CAAAyK,QAAAA,CAAA,CACE,QAAA,CAAA,CAAA7L,GAAAA,CAAC4C,CAAAA,CAAA,CAAO,IAAA,CAAK,QAAA,CAAS,QAAQ,SAAA,CAAU,OAAA,CAAS62B,EAAkB,QAAA,CAAA,iBAAA,CAEnE,CAAA,CACAz5B,IAAC4C,CAAAA,CAAA,CAAO,KAAK,QAAA,CAAS,OAAA,CAAS22B,EAAqB,QAAA,CAAA,kBAAA,CAEpD,CAAA,CAAA,CACF,GAEJ,CAAA,CAAA,CACF,CAAA,CACF,GACJ,CAEJ,ECxtBO,IAAMoC,EAAAA,CAAsB,CAAC,CAClC,KAAA,CAAAx4B,EACA,KAAA,CAAAhE,CAAAA,CAAQ,EAAC,CACT,aAAA,CAAAy8B,EACA,OAAA,CAAAh4B,CAAAA,CACA,WAAA,CAAAD,CAAAA,CAAc,gBAAA,CACd,SAAA,CAAAlE,EACA,QAAA,CAAAoE,CAAAA,CAAW,KACb,CAAA,GAAgC,CAC9B,GAAM,CAACyB,CAAAA,CAAM+P,CAAO,CAAA,CAAUwmB,EAAA,CAAA,QAAA,CAAS,KAAK,CAAA,CACtC,CAACC,EAAaC,CAAc,CAAA,CAAUF,YAAS,EAAE,CAAA,CACjD,CAACG,CAAAA,CAAkBC,CAAmB,CAAA,CAAUJ,YAA6B,IAAI,CAAA,CACjFK,EAAmBL,EAAA,CAAA,MAAA,CAA0B,IAAI,EAEjDA,EAAA,CAAA,SAAA,CAAU,IAAM,CACpB,GAAIK,CAAAA,CAAW,QAAS,CACtB,IAAMC,EAAeD,CAAAA,CAAW,OAAA,CAAQ,QAAQ,6BAA6B,CAAA,CAC7ED,CAAAA,CAAoBE,CAAkC,EACxD,CACF,EAAG,EAAE,EAEL,IAAMza,CAAAA,CAAgB0a,GAAwB,CACxCj9B,CAAAA,CAAM,SAASi9B,CAAW,CAAA,CAC5BR,EAAcz8B,CAAAA,CAAM,MAAA,CAAQwvB,GAAMA,CAAAA,GAAMyN,CAAW,CAAC,CAAA,CAEpDR,CAAAA,CAAc,CAAC,GAAGz8B,CAAAA,CAAOi9B,CAAW,CAAC,EAEzC,CAAA,CAEMC,EAAe,CAACD,CAAAA,CAAqBr1B,IAAwB,CACjEA,CAAAA,CAAE,gBAAe,CACjBA,CAAAA,CAAE,iBAAgB,CAClB60B,CAAAA,CAAcz8B,EAAM,MAAA,CAAQwvB,CAAAA,EAAMA,IAAMyN,CAAW,CAAC,EACtD,CAAA,CAEME,CAAAA,CAAiBn9B,CAAAA,CACpB,IAAKwvB,CAAAA,EAAM/qB,CAAAA,CAAQ,KAAM24B,CAAAA,EAAQA,CAAAA,CAAI,QAAU5N,CAAC,CAAA,EAAG,KAAK,CAAA,CACxD,MAAA,CAAO,OAAO,CAAA,CAEX6N,CAAAA,CAAwBX,WAAQ,IAAM,CAC1C,GAAI,CAACC,CAAAA,CAAY,IAAA,EAAK,CAAG,OAAOl4B,CAAAA,CAChC,IAAM64B,CAAAA,CAAQX,CAAAA,CAAY,aAAY,CACtC,OAAOl4B,EAAQ,MAAA,CAAQK,CAAAA,EACrBA,EAAO,KAAA,CAAM,WAAA,GAAc,QAAA,CAASw4B,CAAK,CAC3C,CACF,CAAA,CAAG,CAAC74B,CAAAA,CAASk4B,CAAW,CAAC,CAAA,CAEzB,OACE16B,IAAAA,CAAC,OAAI,SAAA,CAAWtC,CAAAA,CAAG,YAAaW,CAAS,CAAA,CACtC,UAAA0D,CAAAA,EACCnD,GAAAA,CAAC,SAAM,SAAA,CAAU,4FAAA,CACd,SAAAmD,CAAAA,CACH,CAAA,CAEF/B,KAACyf,EAAAA,CAAA,CAAQ,KAAMvb,CAAAA,CAAM,YAAA,CAAekU,CAAAA,EAAW,CAC7CnE,CAAAA,CAAQmE,CAAM,EACTA,CAAAA,EAAQuiB,CAAAA,CAAe,EAAE,EAChC,CAAA,CAAG,MAAO,KAAA,CACR,QAAA,CAAA,CAAA/7B,IAAC8gB,EAAAA,CAAA,CAAe,QAAO,IAAA,CACrB,QAAA,CAAA1f,KAACwB,CAAAA,CAAA,CACC,IAAKs5B,CAAAA,CACL,OAAA,CAAQ,SAAA,CACR,IAAA,CAAK,UAAA,CACL,eAAA,CAAe52B,EACf,QAAA,CAAUzB,CAAAA,CACV,UAAU,oDAAA,CAEV,QAAA,CAAA,CAAA7D,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wCACZ,QAAA,CAAAs8B,CAAAA,CAAe,OAAS,CAAA,CACvBA,CAAAA,CAAe,IAAI,CAACn5B,CAAAA,CAAOT,IACzBtB,IAAAA,CAACE,CAAAA,CAAA,CAEC,OAAA,CAAQ,WAAA,CACR,SAAA,CAAU,UAET,QAAA,CAAA,CAAA6B,CAAAA,CACDnD,IAAC,MAAA,CAAA,CACC,IAAA,CAAK,SACL,SAAA,CAAU,0FAAA,CACV,WAAA,CAAc+G,CAAAA,EAAM,CAClBA,CAAAA,CAAE,gBAAe,CACjBA,CAAAA,CAAE,kBACJ,CAAA,CACA,QAAUA,CAAAA,EAAMs1B,CAAAA,CAAal9B,CAAAA,CAAMuD,CAAK,CAAA,CAAGqE,CAAC,EAE5C,QAAA,CAAA/G,GAAAA,CAAC8G,IAAA,CAAE,SAAA,CAAU,yBAAyB,CAAA,CACxC,CAAA,CAAA,CAAA,CAfK3H,EAAMuD,CAAK,CAgBlB,CACD,CAAA,CAED1C,GAAAA,CAAC,QAAK,SAAA,CAAU,uBAAA,CAAyB,SAAA2D,CAAAA,CAAY,CAAA,CAEzD,CAAA,CACA3D,GAAAA,CAAC+D,WAAAA,CAAA,CAAY,UAAU,kCAAA,CAAmC,CAAA,CAAA,CAC5D,EACF,CAAA,CACA3C,IAAAA,CAAC2f,GAAA,CACC,SAAA,CAAWib,EACX,SAAA,CAAU,iGAAA,CACV,MAAM,OAAA,CACN,eAAA,CAAkBj1B,GAAMA,CAAAA,CAAE,cAAA,GAC1B,iBAAA,CAAoBA,CAAAA,EAAM,CACTA,CAAAA,CAAE,MAAA,CACN,OAAA,CAAQ,iBAAiB,CAAA,EAClCA,CAAAA,CAAE,iBAEN,CAAA,CAEA,UAAA/G,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,cAAA,CACb,QAAA,CAAAoB,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,WACb,QAAA,CAAA,CAAApB,GAAAA,CAAC0Y,OAAA,CAAO,SAAA,CAAU,wEAAA,CAAyE,CAAA,CAC3F1Y,GAAAA,CAAC,OAAA,CAAA,CACC,KAAK,MAAA,CACL,WAAA,CAAY,YACZ,KAAA,CAAO87B,CAAAA,CACP,SAAW/0B,CAAAA,EAAMg1B,CAAAA,CAAeh1B,EAAE,MAAA,CAAO,KAAK,EAC9C,SAAA,CAAU,iHAAA,CACV,UAAYA,CAAAA,EAAMA,CAAAA,CAAE,iBAAgB,CACtC,CAAA,CAAA,CACF,CAAA,CACF,CAAA,CACA3F,IAAAA,CAAC,KAAA,CAAA,CACC,UAAU,sDAAA,CACV,OAAA,CAAU2F,GAAMA,CAAAA,CAAE,eAAA,GAClB,WAAA,CAAcA,CAAAA,EAAMA,EAAE,eAAA,EAAgB,CAErC,UAAAy1B,CAAAA,CAAgB,GAAA,CAAKv4B,GAAW,CAC/B,IAAMu3B,EAAar8B,CAAAA,CAAM,QAAA,CAAS8E,CAAAA,CAAO,KAAK,CAAA,CAC9C,OACE7C,KAAC,KAAA,CAAA,CAEC,IAAA,CAAK,SACL,eAAA,CAAeo6B,CAAAA,CACf,UAAW18B,CAAAA,CACT,gIAAA,CACA08B,GAAc,WAChB,CAAA,CACA,YAAcz0B,CAAAA,EAAMA,CAAAA,CAAE,gBAAe,CACrC,OAAA,CAAS,IAAM2a,CAAAA,CAAazd,CAAAA,CAAO,KAAK,CAAA,CAExC,QAAA,CAAA,CAAAjE,GAAAA,CAAC,OACC,SAAA,CAAWlB,CAAAA,CACT,4EACA08B,CAAAA,CACI,oCAAA,CACA,YACN,CAAA,CAEC,QAAA,CAAAA,GAAcx7B,GAAAA,CAACkE,KAAAA,CAAA,CAAM,SAAA,CAAU,SAAA,CAAU,EAC5C,CAAA,CACAlE,GAAAA,CAAC,QAAM,QAAA,CAAAiE,CAAAA,CAAO,KAAA,CAAM,CAAA,CAAA,CAAA,CApBfA,CAAAA,CAAO,KAqBd,CAEJ,CAAC,CAAA,CACAu4B,EAAgB,MAAA,GAAW,CAAA,EAC1Bx8B,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,sDAAsD,QAAA,CAAA,kBAAA,CAErE,CAAA,CAAA,CAEJ,GACF,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAEJ,CAAA,CClIA,IAAM08B,EAAAA,CAA4C,CAChD,gBAAA,CAAkB,EAAA,CAClB,mBAAoB,EAAA,CACpB,iBAAA,CAAmB,GACnB,UAAA,CAAY,KAAA,CACZ,YAAa,KAAA,CACb,UAAA,CAAY,MACZ,cAAA,CAAgB,EAAA,CAChB,UAAW,EAAA,CACX,cAAA,CAAgB,GAChB,UAAA,CAAY,EAAA,CACZ,kBAAA,CAAoB,EAAA,CACpB,SAAA,CAAW,KAAA,CACX,cAAe,EAAA,CACf,gBAAA,CAAkB,EAAC,CACnB,SAAA,CAAW,OACX,OAAA,CAAS,MAAA,CACT,cAAe,MAAA,CACf,WAAA,CAAa,OACb,SAAA,CAAW,EAAA,CACX,UAAW,EAAA,CACX,SAAA,CAAW,GACX,SAAA,CAAW,EAAA,CACX,iBAAA,CAAmB,EAAC,CACpB,eAAA,CAAiB,EACnB,CAAA,CAEaC,GAAiC,CAAC,CAC7C,QAAA9W,CAAAA,CACA,aAAA,CAAA+W,EAAgB,EAAC,CACjB,eAAA9W,CAAAA,CACA,cAAA,CAAAC,EACA,cAAA,CAAA2H,CACF,IAA2C,CACzC,GAAM,CACJ,gBAAA,CAAAmP,CAAAA,CAAmB,GACnB,mBAAA,CAAAC,CAAAA,CAAsB,EAAC,CACvB,kBAAA,CAAAC,EAAqB,EAAC,CACtB,SAAArH,CAAAA,CAAW,EACb,CAAA,CAAIkH,CAAAA,CACE,CAAC5W,CAAAA,CAAcC,CAAe,EAAIjgB,QAAAA,CAAoC6f,CAAO,CAAA,CAC7E,CAACvgB,CAAAA,CAAM+P,CAAO,EAAIrP,QAAAA,CAAS,KAAK,EAEtCqL,SAAAA,CAAU,IAAM,CACd4U,CAAAA,CAAgBJ,CAAO,EACzB,CAAA,CAAG,CAACA,CAAO,CAAC,CAAA,CAEZ,IAAMK,CAAAA,CAA0B,CAAC9V,EAAwCjR,CAAAA,GAAuB,CAC9F8mB,CAAAA,CAAgBxU,CAAAA,GAAS,CAAE,GAAGA,EAAM,CAACrB,CAAK,EAAGjR,CAAM,CAAA,CAAE,EACvD,CAAA,CAEM69B,CAAAA,CAAmB,CAAC5sB,CAAAA,CAAwC+Q,CAAAA,GAA2B,CAC3F,IAAM8b,CAAAA,CAAY9b,EAAOA,CAAAA,CAAK,WAAA,GAAgB,MAAA,CAC9C+E,CAAAA,CAAwB9V,CAAAA,CAAO6sB,CAAS,EAC1C,CAAA,CAEM9W,EAAqB,IAAM,CAC/B,OAAO,OAAA,CAAQH,CAAY,EAAE,OAAA,CAAQ,CAAC,CAACxZ,CAAAA,CAAKrN,CAAK,IAAM,CACrD2mB,CAAAA,CAAetZ,EAAwCrN,CAAK,EAC9D,CAAC,CAAA,CACDuuB,CAAAA,EAAe,CACfrY,CAAAA,CAAQ,KAAK,EACf,EAEM+Q,CAAAA,CAAqB,IAAM,CAC/BH,CAAAA,CAAgByW,EAAc,EAC9B3W,CAAAA,EAAe,CACf1Q,CAAAA,CAAQ,KAAK,EACf,CAAA,CAEM6nB,EAAaC,CAAAA,EAAkD,CACnE,GAAI,CAACA,CAAAA,CAAS,OACd,IAAMhc,CAAAA,CAAO,IAAI,IAAA,CAAKgc,CAAO,CAAA,CAC7B,OAAO,KAAA,CAAMhc,CAAAA,CAAK,SAAS,CAAA,CAAI,OAAYA,CAC7C,CAAA,CAEA,OACE/f,IAAAA,CAAC2R,EAAAA,CAAA,CAAM,IAAA,CAAMzN,CAAAA,CAAM,aAAc+P,CAAAA,CAC/B,QAAA,CAAA,CAAArV,IAACiT,EAAAA,CAAA,CAAa,OAAA,CAAO,IAAA,CACnB,QAAA,CAAA7R,IAAAA,CAACwB,EAAA,CAAO,OAAA,CAAQ,UAAU,SAAA,CAAU,OAAA,CAClC,UAAA5C,GAAAA,CAACqmB,MAAAA,CAAA,CAAO,SAAA,CAAU,SAAA,CAAU,EAAE,SAAA,CAAA,CAEhC,CAAA,CACF,EACAjlB,IAAAA,CAACmS,EAAAA,CAAA,CAAa,IAAA,CAAK,OAAA,CAAQ,SAAA,CAAU,oCAAA,CACnC,QAAA,CAAA,CAAAvT,GAAAA,CAACyT,GAAA,CACC,QAAA,CAAAzT,IAAC2T,EAAAA,CAAA,CAAW,+BAAmB,CAAA,CACjC,CAAA,CAEAvS,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,iBAEb,QAAA,CAAA,CAAAA,IAAAA,CAAC,OAAI,SAAA,CAAU,wBAAA,CACb,UAAApB,GAAAA,CAACqH,CAAAA,CAAA,CACC,KAAA,CAAM,YAAA,CACN,KAAA,CAAO2e,EAAa,SAAA,EAAa,EAAA,CACjC,SAAWjf,CAAAA,EAAMmf,CAAAA,CAAwB,YAAanf,CAAAA,CAAE,MAAA,CAAO,KAAK,CAAA,CACpE,WAAA,CAAY,mBACd,CAAA,CACA/G,GAAAA,CAACqH,EAAA,CACC,KAAA,CAAM,iBACN,KAAA,CAAO2e,CAAAA,CAAa,aAAA,EAAiB,EAAA,CACrC,QAAA,CAAWjf,CAAAA,EAAMmf,EAAwB,eAAA,CAAiBnf,CAAAA,CAAE,OAAO,KAAK,CAAA,CACxE,YAAY,sBAAA,CACd,CAAA,CAAA,CACF,EAGA3F,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wBAAA,CACb,QAAA,CAAA,CAAApB,IAAC27B,EAAAA,CAAA,CACC,MAAM,kBAAA,CACN,KAAA,CAAO3V,CAAAA,CAAa,eAAA,EAAmB,EAAC,CACxC,cAAgB7mB,CAAAA,EAAU+mB,CAAAA,CAAwB,kBAAmB/mB,CAAK,CAAA,CAC1E,YAAY,cAAA,CACZ,OAAA,CAAS09B,EACX,CAAA,CACA78B,GAAAA,CAACyD,EAAA,CACC,KAAA,CAAM,UACN,KAAA,CAAOuiB,CAAAA,CAAa,WAAa,EAAA,CACjC,aAAA,CAAgB7mB,CAAAA,EAAU+mB,CAAAA,CAAwB,WAAA,CAAa/mB,CAAK,EACpE,WAAA,CAAY,gBAAA,CACZ,QAASu2B,CAAAA,CACX,CAAA,CAAA,CACF,EAGAt0B,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wBAAA,CACb,QAAA,CAAA,CAAApB,IAAC27B,EAAAA,CAAA,CACC,MAAM,oBAAA,CACN,KAAA,CAAO3V,EAAa,iBAAA,EAAqB,EAAC,CAC1C,aAAA,CAAgB7mB,CAAAA,EAAU+mB,CAAAA,CAAwB,oBAAqB/mB,CAAK,CAAA,CAC5E,YAAY,iBAAA,CACZ,OAAA,CAAS29B,EACX,CAAA,CACA98B,GAAAA,CAAC27B,GAAA,CACC,KAAA,CAAM,oBACN,KAAA,CAAO3V,CAAAA,CAAa,kBAAoB,EAAC,CACzC,cAAgB7mB,CAAAA,EAAU+mB,CAAAA,CAAwB,kBAAA,CAAoB/mB,CAAK,CAAA,CAC3E,WAAA,CAAY,kBACZ,OAAA,CAAS49B,CAAAA,CACX,GACF,CAAA,CAGA37B,IAAAA,CAAC,OAAI,SAAA,CAAU,wBAAA,CACb,UAAApB,GAAAA,CAAC83B,EAAAA,CAAA,CACC,KAAA,CAAM,YAAA,CACN,MAAO9R,CAAAA,CAAa,SAAA,EAAa,GACjC,QAAA,CAAW7mB,CAAAA,EAAU+mB,CAAAA,CAAwB,WAAA,CAAa/mB,CAAK,CAAA,CACjE,EACAa,GAAAA,CAAC83B,EAAAA,CAAA,CACC,KAAA,CAAM,YAAA,CACN,MAAO9R,CAAAA,CAAa,SAAA,EAAa,GACjC,QAAA,CAAW7mB,CAAAA,EAAU+mB,EAAwB,WAAA,CAAa/mB,CAAK,EACjE,CAAA,CAAA,CACF,CAAA,CAGAiC,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wBAAA,CACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,WAAA,CACb,QAAA,CAAA,CAAApB,IAAC,OAAA,CAAA,CAAM,SAAA,CAAU,sBAAsB,QAAA,CAAA,mBAAA,CAAiB,CAAA,CACxDA,IAACkhB,EAAAA,CAAA,CACC,KAAMgc,CAAAA,CAAUlX,CAAAA,CAAa,SAAS,CAAA,CACtC,YAAA,CAAe7E,GAAS6b,CAAAA,CAAiB,WAAA,CAAa7b,CAAI,CAAA,CAC1D,WAAA,CAAY,YAAA,CACZ,gBAAgB,QAAA,CAChB,SAAA,CAAU,qBACZ,CAAA,CAAA,CACF,CAAA,CACA/f,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,YACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,SAAM,SAAA,CAAU,qBAAA,CAAsB,2BAAe,CAAA,CACtDA,GAAAA,CAACkhB,GAAA,CACC,IAAA,CAAMgc,CAAAA,CAAUlX,CAAAA,CAAa,OAAO,CAAA,CACpC,aAAe7E,CAAAA,EAAS6b,CAAAA,CAAiB,UAAW7b,CAAI,CAAA,CACxD,YAAY,YAAA,CACZ,eAAA,CAAgB,SAChB,SAAA,CAAU,oBAAA,CACZ,GACF,CAAA,CAAA,CACF,CAAA,CAGA/f,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yBACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,WAAA,CACb,QAAA,CAAA,CAAApB,IAAC,OAAA,CAAA,CAAM,SAAA,CAAU,sBAAsB,QAAA,CAAA,iBAAA,CAAe,CAAA,CACtDA,IAACkhB,EAAAA,CAAA,CACC,KAAMgc,CAAAA,CAAUlX,CAAAA,CAAa,aAAa,CAAA,CAC1C,YAAA,CAAe7E,GAAS6b,CAAAA,CAAiB,eAAA,CAAiB7b,CAAI,CAAA,CAC9D,WAAA,CAAY,YAAA,CACZ,eAAA,CAAgB,QAAA,CAChB,SAAA,CAAU,qBACZ,CAAA,CAAA,CACF,CAAA,CACA/f,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,YACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,SAAM,SAAA,CAAU,qBAAA,CAAsB,yBAAa,CAAA,CACpDA,GAAAA,CAACkhB,GAAA,CACC,IAAA,CAAMgc,EAAUlX,CAAAA,CAAa,WAAW,CAAA,CACxC,YAAA,CAAe7E,CAAAA,EAAS6b,CAAAA,CAAiB,cAAe7b,CAAI,CAAA,CAC5D,YAAY,YAAA,CACZ,eAAA,CAAgB,SAChB,SAAA,CAAU,oBAAA,CACZ,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAGA/f,IAAAA,CAAC,OAAI,SAAA,CAAU,wBAAA,CACb,UAAApB,GAAAA,CAACqH,CAAAA,CAAA,CACC,KAAA,CAAM,aAAA,CACN,KAAA,CAAO2e,CAAAA,CAAa,UAAA,EAAc,EAAA,CAClC,SAAWjf,CAAAA,EAAMmf,CAAAA,CAAwB,aAAcnf,CAAAA,CAAE,MAAA,CAAO,KAAK,CAAA,CACrE,WAAA,CAAY,oBACd,CAAA,CACA/G,GAAAA,CAACqH,EAAA,CACC,KAAA,CAAM,kBACN,KAAA,CAAO2e,CAAAA,CAAa,gBAAkB,EAAA,CACtC,QAAA,CAAWjf,CAAAA,EAAMmf,CAAAA,CAAwB,gBAAA,CAAkBnf,CAAAA,CAAE,OAAO,KAAK,CAAA,CACzE,YAAY,uBAAA,CACd,CAAA,CAAA,CACF,EAGA3F,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wBAAA,CACb,QAAA,CAAA,CAAApB,IAACqH,CAAAA,CAAA,CACC,MAAM,sBAAA,CACN,KAAA,CAAO2e,EAAa,kBAAA,EAAsB,EAAA,CAC1C,QAAA,CAAWjf,CAAAA,EAAMmf,CAAAA,CAAwB,oBAAA,CAAsBnf,EAAE,MAAA,CAAO,KAAK,EAC7E,WAAA,CAAY,iBAAA,CACd,EACA/G,GAAAA,CAACqH,CAAAA,CAAA,CACC,KAAA,CAAM,sBAAA,CACN,MAAO2e,CAAAA,CAAa,gBAAA,EAAoB,GACxC,QAAA,CAAWjf,CAAAA,EAAMmf,EAAwB,kBAAA,CAAoBnf,CAAAA,CAAE,MAAA,CAAO,KAAK,CAAA,CAC3E,WAAA,CAAY,kBACd,CAAA,CAAA,CACF,CAAA,CAAA,CACF,EAEA3F,IAAAA,CAACsS,EAAAA,CAAA,CAAY,SAAA,CAAU,YAAA,CACrB,UAAA1T,GAAAA,CAAC4C,CAAAA,CAAA,CAAO,OAAA,CAAQ,SAAA,CAAU,QAASwjB,CAAAA,CAAoB,SAAA,CAAU,SAAS,QAAA,CAAA,eAAA,CAE1E,CAAA,CACApmB,GAAAA,CAAC4C,CAAAA,CAAA,CAAO,OAAA,CAASujB,EAAoB,SAAA,CAAU,QAAA,CAAS,yBAExD,CAAA,CAAA,CACF,CAAA,CAAA,CACF,GACF,CAEJ,MClSaiX,EAAAA,CAAyB,CAAC,CACrC,KAAA,CAAAxW,CAAAA,CACA,OAAA,CAAAf,CAAAA,CACA,aAAA,CAAA+W,CAAAA,CACA,eAAA9W,CAAAA,CACA,cAAA,CAAAC,EACA,cAAA,CAAA2H,CAAAA,CACA,UAAAnmB,CAAAA,CACA,KAAA,CAAAlE,EACA,OAAA,CAAA8oB,CACF,IA2CI/qB,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,2CAAA,CAEb,QAAA,CAAA,CAAApB,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,+FAAA,CACb,QAAA,CAAAA,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wCAAA,CACb,QAAA,CAAAoB,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,oCACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,MAAG,SAAA,CAAU,oCAAA,CAAqC,+BAAmB,CAAA,CACtEA,GAAAA,CAAC28B,GAAA,CACC,OAAA,CAAS9W,EACT,aAAA,CAAe+W,CAAAA,CACf,cAAA,CAAgB9W,CAAAA,CAChB,cAAA,CAAgBC,CAAAA,CAChB,eAAgB2H,CAAAA,CAClB,CAAA,CAAA,CACF,EACF,CAAA,CACF,CAAA,CAGA1tB,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yBACb,QAAA,CAAAA,GAAAA,CAAC,OAAI,SAAA,CAAU,wDAAA,CACZ,SA7DHuH,CAAAA,CAEAvH,GAAAA,CAAC,OAAI,SAAA,CAAU,yCAAA,CACb,QAAA,CAAAoB,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,mCACb,QAAA,CAAA,CAAApB,GAAAA,CAACgc,QAAA,CAAQ,SAAA,CAAU,6CAA6C,CAAA,CAChEhc,GAAAA,CAAC,KAAE,SAAA,CAAU,+BAAA,CAAgC,mCAAuB,CAAA,CAAA,CACtE,CAAA,CACF,EAIAqD,CAAAA,CAEArD,GAAAA,CAAC,OAAI,SAAA,CAAU,yCAAA,CACb,QAAA,CAAAoB,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wDACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,OAAI,SAAA,CAAU,uFAAA,CACb,UAAApB,GAAAA,CAACuY,WAAAA,CAAA,CAAY,SAAA,CAAU,wCAAA,CAAyC,EAChEnX,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,qBAAA,CACb,QAAA,CAAA,CAAApB,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,sCAAA,CAAuC,QAAA,CAAA,6BAAA,CAA2B,CAAA,CAC/EA,GAAAA,CAAC,KAAE,SAAA,CAAU,+BAAA,CAAiC,SAAAqD,CAAAA,CAAM,CAAA,CAAA,CACtD,GACF,CAAA,CACC8oB,CAAAA,EACC/qB,KAACwB,CAAAA,CAAA,CAAO,QAAQ,SAAA,CAAU,OAAA,CAASupB,EACjC,QAAA,CAAA,CAAAnsB,GAAAA,CAAC+B,UAAA,CAAU,SAAA,CAAU,cAAA,CAAe,CAAA,CAAE,OAAA,CAAA,CAExC,CAAA,CAAA,CAEJ,EACF,CAAA,CAKF/B,GAAAA,CAAC,OAAI,SAAA,CAAU,gCAAA,CACZ,SAAA4mB,CAAAA,CACH,CAAA,CA0BE,EACF,CAAA,CAAA,CACF,MCrFSyW,EAAAA,CAAuB,CAAC,CACnC,eAAA,CAAA1C,CAAAA,CACA,UAAA2C,CAAAA,CACA,SAAA,CAAA79B,CACF,CAAA,GAAiC,CAC/B,IAAMod,CAAAA,CAAOygB,CAAAA,CAAYC,eAAiBC,YAAAA,CAG1C,OACEp8B,IAAAA,CAACE,CAAAA,CAAA,CAAM,OAAA,CAHO,UAGW,SAAA,CAAW7B,CAAAA,CACjC,UAAA69B,CAAAA,EAAat9B,GAAAA,CAAC6c,EAAA,CAAK,SAAA,CAAU,eAAe,CAAA,CAC5C8d,CAAAA,CACA,CAAC2C,CAAAA,EAAat9B,GAAAA,CAAC6c,EAAA,CAAK,SAAA,CAAU,eAAe,CAAA,CAAA,CAChD,CAEJ,ECpBO,IAAM4gB,EAAAA,CAAoBj7B,CAAAA,EAA2B,CAC1D,OAAQA,CAAAA,EACN,KAAK,QAAA,CACH,OAAO,SAAA,CACT,KAAK,SAAA,CACH,OAAO,SAAA,CACT,KAAK,SACH,OAAO,aAAA,CACT,KAAK,WAAA,CACH,OAAO,UACT,QACE,OAAO,SACX,CACF,CAAA,CAEak7B,EAAAA,CAA8Bl7B,GAA2B,CACpE,OAAQA,GACN,KAAK,YACL,KAAK,MAAA,CACH,OAAO,SAAA,CACT,KAAK,WAAA,CACL,KAAK,iBAAA,CACL,KAAK,gBACH,OAAO,SAAA,CACT,KAAK,WAAA,CACL,QACE,OAAO,SACX,CACF,EAEatD,EAAAA,CAAkBC,CAAAA,EACtB,IAAI,IAAA,CAAK,YAAA,CAAa,QAAS,CACpC,KAAA,CAAO,UAAA,CACP,QAAA,CAAU,KAAA,CACV,qBAAA,CAAuB,CACzB,CAAC,CAAA,CAAE,OAAOA,CAAK,CAAA,KC8BJw+B,EAAAA,CAAwB,CAAC,CACpC,WAAA,CAAAC,CAAAA,CACA,eAAAC,CAAAA,CACA,cAAA,CAAAC,CAAAA,CACA,aAAA,CAAAC,CAAAA,CACA,gBAAA,CAAAC,EACA,gBAAA,CAAAC,CAAAA,CACA,cAAAC,CAAAA,CACA,aAAA,CAAAC,EACA,cAAA,CAAAC,CAAAA,CACA,gBAAAC,CAAAA,CACA,mBAAA,CAAAC,EACA,WAAA,CAAAC,CAAAA,CACA,eAAAC,CAAAA,CACA,YAAA,CAAAC,EACA,oBAAA,CAAAC,CAAAA,CACA,YAAA,CAAAxH,CAAAA,CACA,SAAA,CAAA3vB,CAAAA,CACA,MAAAlE,CAAAA,CACA,OAAA,CAAA8oB,CACF,CAAA,GAAkC,CAChC,GAAI5kB,CAAAA,CACF,OACEvH,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wDACb,QAAA,CAAAoB,IAAAA,CAAC,OAAI,SAAA,CAAU,kCAAA,CACb,UAAApB,GAAAA,CAACgc,OAAAA,CAAA,CAAQ,SAAA,CAAU,4CAAA,CAA6C,CAAA,CAChEhc,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,gCAAgC,QAAA,CAAA,wBAAA,CAAsB,CAAA,CAAA,CACrE,EACF,CAAA,CAIJ,GAAIqD,EACF,OACErD,GAAAA,CAAC,OAAI,SAAA,CAAU,uDAAA,CACb,SAAAoB,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,uDAAA,CACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,uFAAA,CACb,UAAApB,GAAAA,CAACuY,WAAAA,CAAA,CAAY,SAAA,CAAU,wCAAA,CAAyC,EAChEnX,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,qBAAA,CACb,QAAA,CAAA,CAAApB,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,uCAAuC,QAAA,CAAA,4BAAA,CAA0B,CAAA,CAC9EA,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,+BAAA,CAAiC,QAAA,CAAAqD,CAAAA,CAAM,CAAA,CAAA,CACtD,GACF,CAAA,CACC8oB,CAAAA,EACC/qB,KAACwB,CAAAA,CAAA,CAAO,QAAQ,SAAA,CAAU,OAAA,CAASupB,EACjC,QAAA,CAAA,CAAAnsB,GAAAA,CAAC+B,UAAA,CAAU,SAAA,CAAU,eAAe,CAAA,CAAE,OAAA,CAAA,CAExC,GAEJ,CAAA,CACF,CAAA,CAIJ,GAAM,CAAC+0B,CAAAA,CAAaC,CAAc,EAAI/wB,QAAAA,CAAwB,IAAI,EAE5D4F,CAAAA,CAAa,CAACzM,EAAew/B,CAAAA,GAAsB,CACvD,UAAU,SAAA,CAAU,SAAA,CAAUx/B,CAAK,CAAA,CACnC43B,CAAAA,CAAe4H,CAAS,CAAA,CACxB,UAAA,CAAW,IAAM5H,CAAAA,CAAe,IAAI,CAAA,CAAG,GAAI,EAC7C,CAAA,CAEA,OAAK6G,CAAAA,CAKH59B,GAAAA,CAACge,GAAA,CACC,KAAA,CACE5c,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,0BACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,QAAK,SAAA,CAAWlB,CAAAA,CACf,gBACA8+B,CAAAA,CAAY,MAAA,CAAS,EAAI,kBAAA,CAAqB,cAChD,CAAA,CACG,QAAA,CAAA1+B,EAAAA,CAAe0+B,CAAAA,CAAY,MAAM,CAAA,CACpC,CAAA,CACA59B,IAACq9B,EAAAA,CAAA,CACC,gBAAiBO,CAAAA,CAAY,eAAA,CAC7B,UAAWA,CAAAA,CAAY,SAAA,CACzB,EACA59B,GAAAA,CAACsB,CAAAA,CAAA,CAAM,OAAA,CAASm8B,EAAAA,CAAiBG,EAAY,MAAM,CAAA,CAAW,QAAA,CAAAA,CAAAA,CAAY,MAAA,CAAO,CAAA,CACjF59B,IAACsB,CAAAA,CAAA,CAAM,QAASo8B,EAAAA,CAA2BE,CAAAA,CAAY,gBAAgB,CAAA,CAAW,QAAA,CAAAA,EAAY,gBAAA,CAAiB,CAAA,CAAA,CACjH,EAEF,QAAA,CAAS,MAAA,CACT,QAAS,CACP,GAAIK,EAAmB,CAAC,CACtB,KAAA,CAAO,QAAA,CACP,OAAA,CAAS,SAAA,CACT,QAASC,CACX,CAAC,EAAI,EAAC,CACN,GAAIF,CAAAA,CAAmB,CAAC,CACtB,KAAA,CAAO,QAAA,CACP,QAAS,SAAA,CACT,OAAA,CAASG,CACX,CAAC,CAAA,CAAI,EACP,CAAA,CAEA,QAAA,CAAA/8B,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,8CACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,OAAI,SAAA,CAAU,kBAAA,CACb,UAAApB,GAAAA,CAACa,EAAAA,CAAA,CAAS,KAAA,CAAM,SAAA,CACd,SAAAO,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,iDAAA,CACb,QAAA,CAAA,CAAApB,IAAC0J,CAAAA,CAAA,CACC,KAAA,CAAM,gBAAA,CACN,KAAA,CACEtI,IAAAA,CAAC,OAAI,SAAA,CAAU,wBAAA,CACb,UAAApB,GAAAA,CAAC4C,CAAAA,CAAA,CACC,OAAA,CAAQ,MAAA,CACR,UAAU,0DAAA,CACV,OAAA,CAAS,IAAMw7B,CAAAA,CAAeR,CAAAA,CAAY,aAAa,CAAA,CAEtD,QAAA,CAAAA,EAAY,aAAA,CACf,CAAA,CACA59B,GAAAA,CAAC,QAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,QAAS,IAAM4L,CAAAA,CAAWgyB,EAAY,aAAA,CAAe,eAAe,EACpE,SAAA,CAAU,6EAAA,CAET,SAAA9G,CAAAA,GAAgB,eAAA,CACf92B,IAACkE,KAAAA,CAAA,CAAM,UAAU,0BAAA,CAA2B,CAAA,CAE5ClE,IAAC8L,IAAAA,CAAA,CAAK,SAAA,CAAU,aAAA,CAAc,CAAA,CAElC,CAAA,CAAA,CACF,EAEF,MAAA,CAAO,YAAA,CACT,EACA9L,GAAAA,CAAC0J,CAAAA,CAAA,CACC,KAAA,CAAM,UAAA,CACN,KAAA,CACE1J,GAAAA,CAAC4C,CAAAA,CAAA,CACC,QAAQ,MAAA,CACR,SAAA,CAAU,qBACV,OAAA,CAAS,IAAMy7B,EAAgBT,CAAAA,CAAY,QAAQ,CAAA,CAElD,QAAA,CAAAA,CAAAA,CAAY,QAAA,CACf,EAEF,MAAA,CAAO,YAAA,CACT,EACA59B,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,aAAA,CAAc,MAAOk0B,CAAAA,CAAY,WAAA,CAAa,OAAO,YAAA,CAAa,CAAA,CACnF59B,IAAC0J,CAAAA,CAAA,CACC,MAAM,cAAA,CACN,KAAA,CACE1J,GAAAA,CAAC4C,CAAAA,CAAA,CACC,OAAA,CAAQ,OACR,SAAA,CAAU,oBAAA,CACV,QAAS,IAAM07B,CAAAA,CAAoBV,EAAY,YAAY,CAAA,CAE1D,SAAAA,CAAAA,CAAY,YAAA,CACf,EAEF,MAAA,CAAO,YAAA,CACT,EAEA59B,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,WAAA,CAAY,KAAA,CAAOk0B,CAAAA,CAAY,OAAA,CAAQ,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,EAAG,MAAA,CAAO,YAAA,CAAa,EAC3F59B,GAAAA,CAAC0J,CAAAA,CAAA,CACC,KAAA,CAAM,YAAA,CACN,MACEk0B,CAAAA,CAAY,SAAA,CACV59B,IAAC4C,CAAAA,CAAA,CACC,QAAQ,MAAA,CACR,SAAA,CAAU,oBAAA,CACV,OAAA,CAAS,IAAM47B,CAAAA,CAAeZ,EAAY,SAAU,CAAA,CAEnD,SAAAA,CAAAA,CAAY,SAAA,CACf,EACE,GAAA,CAEN,MAAA,CAAO,aACT,CAAA,CAEA59B,GAAAA,CAAC0J,EAAA,CACC,KAAA,CAAM,UACN,KAAA,CACEk0B,CAAAA,CAAY,OACV59B,GAAAA,CAAC4C,CAAAA,CAAA,CACC,OAAA,CAAQ,MAAA,CACR,SAAA,CAAU,qBACV,OAAA,CAAS,IAAM27B,EAAYX,CAAAA,CAAY,MAAO,EAE7C,QAAA,CAAAA,CAAAA,CAAY,OACf,CAAA,CACE,GAAA,CAEN,OAAO,YAAA,CACT,CAAA,CACA59B,IAAC0J,CAAAA,CAAA,CACC,MAAM,QAAA,CACN,KAAA,CACEk0B,CAAAA,CAAY,MAAA,EAAUA,CAAAA,CAAY,MAAA,CAAO,OAAS,CAAA,CAChD59B,GAAAA,CAAC,OAAI,SAAA,CAAU,sBAAA,CACZ,SAAA49B,CAAAA,CAAY,MAAA,CAAO,IAAI,CAACh4B,CAAAA,CAASlD,IAChCtB,IAAAA,CAAC,MAAA,CAAA,CAAmB,UAAU,0BAAA,CAC5B,QAAA,CAAA,CAAApB,IAAC4C,CAAAA,CAAA,CACC,OAAA,CAAQ,MAAA,CACR,SAAA,CAAU,oBAAA,CACV,QAAS,IAAM67B,CAAAA,GAAe74B,CAAO,CAAA,CAEpC,QAAA,CAAAA,EACH,CAAA,CACClD,CAAAA,CAAQk7B,EAAY,MAAA,CAAQ,MAAA,CAAS,GAAK59B,GAAAA,CAAC,MAAA,CAAA,CAAK,UAAU,MAAA,CAAO,QAAA,CAAA,GAAA,CAAC,IAR1D4F,CASX,CACD,CAAA,CACH,CAAA,CACE,GAAA,CAEN,MAAA,CAAO,aACT,CAAA,CAEA5F,GAAAA,CAAC0J,EAAA,CACC,KAAA,CAAM,aACN,KAAA,CACEtI,IAAAA,CAAC,OAAI,SAAA,CAAU,wBAAA,CACb,UAAApB,GAAAA,CAAC,MAAA,CAAA,CAAK,UAAU,WAAA,CAAa,QAAA,CAAA49B,EAAY,EAAA,CAAG,CAAA,CAC5C59B,GAAAA,CAAC,QAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,QAAS,IAAM4L,CAAAA,CAAWgyB,EAAY,EAAA,CAAI,WAAW,EACrD,SAAA,CAAU,6EAAA,CAET,SAAA9G,CAAAA,GAAgB,WAAA,CACf92B,IAACkE,KAAAA,CAAA,CAAM,UAAU,0BAAA,CAA2B,CAAA,CAE5ClE,IAAC8L,IAAAA,CAAA,CAAK,SAAA,CAAU,aAAA,CAAc,CAAA,CAElC,CAAA,CAAA,CACF,EAEF,MAAA,CAAO,YAAA,CACT,EACA9L,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,oBAAA,CAAqB,MAAOk0B,CAAAA,CAAY,iBAAA,EAAqB,IAAK,MAAA,CAAO,YAAA,CAAa,EAEvG59B,GAAAA,CAAC0J,CAAAA,CAAA,CACC,KAAA,CAAM,mBAAA,CACN,KAAA,CACEk0B,CAAAA,CAAY,eAAA,CACV59B,GAAAA,CAAC4C,EAAA,CACC,OAAA,CAAQ,OACR,SAAA,CAAU,0DAAA,CACV,QAAS,IAAM87B,CAAAA,GAAuBd,EAAY,eAAgB,CAAA,CAEjE,SAAAA,CAAAA,CAAY,eAAA,CACf,EACE,GAAA,CAEN,MAAA,CAAO,aACT,CAAA,CACA59B,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,sBAAA,CAAuB,MAAOk0B,CAAAA,CAAY,kBAAA,EAAsB,IAAK,MAAA,CAAO,YAAA,CAAa,EAE1G59B,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,oBAAA,CAAqB,MAAOk0B,CAAAA,CAAY,gBAAA,EAAoB,IAAK,MAAA,CAAO,YAAA,CAAa,EACtG59B,GAAAA,CAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,mBAAA,CAAoB,KAAA,CAAOk0B,EAAY,eAAA,EAAmB,GAAA,CAAK,OAAO,YAAA,CAAa,CAAA,CAEpG59B,IAAC0J,CAAAA,CAAA,CAAU,MAAM,wBAAA,CAAyB,KAAA,CAAOk0B,EAAY,oBAAA,EAAwB,GAAA,CAAK,OAAO,YAAA,CAAa,CAAA,CAC9G59B,IAAC0J,CAAAA,CAAA,CAAU,KAAA,CAAM,qBAAA,CAAsB,KAAA,CAAOk0B,CAAAA,CAAY,oBAAsB,GAAA,CAAK,MAAA,CAAO,aAAa,CAAA,CAEzG59B,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,oBAAoB,KAAA,CAAOk0B,CAAAA,CAAY,kBAAoB,GAAA,CAAK,MAAA,CAAO,aAAa,CAAA,CACrG59B,GAAAA,CAAC0J,EAAA,CAAU,KAAA,CAAM,kBAAA,CAAmB,KAAA,CAAOk0B,CAAAA,CAAY,cAAA,EAAkB,IAAK,MAAA,CAAO,YAAA,CAAa,GACpG,CAAA,CACF,CAAA,CAECG,GAAiBH,CAAAA,CAAY,UAAA,EAC5B59B,IAAC62B,EAAAA,CAAA,CAAkB,KAAM+G,CAAAA,CAAY,UAAA,CAAY,EAGlDE,CAAAA,EAAkBF,CAAAA,CAAY,aAC7B59B,GAAAA,CAACi3B,EAAAA,CAAA,CAAmB,IAAA,CAAM2G,CAAAA,CAAY,WAAA,CAAa,aAAc1G,CAAAA,CAAc,CAAA,CAAA,CAEnF,EAEAl3B,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,SAAA,CACb,QAAA,CAAAA,GAAAA,CAACa,EAAAA,CAAA,CAAS,KAAA,CAAM,uBACd,QAAA,CAAAb,GAAAA,CAACuB,GAAA,CAAc,MAAA,CAAQs8B,EAAgB,CAAA,CACzC,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CACF,CAAA,CArNO,IAuNX,ECzVO,IAAMe,GAA0B9sB,CAAAA,CAAE,MAAA,CAAO,CAC9C,MAAA,CAAQA,CAAAA,CAAE,QAAO,CACd,GAAA,CAAI,EAAG,oBAAoB,CAAA,CAC3B,IAAI,GAAA,CAAK,yCAAyC,CACvD,CAAC,CAAA,CAIY+sB,EAAAA,CAA0B/sB,EAAE,MAAA,CAAO,CAC9C,WAAYA,CAAAA,CAAE,MAAA,GAAS,GAAA,CAAI,CAAA,CAAG,yBAAyB,CACzD,CAAC,MCSYgtB,EAAAA,CAA0B,CAAC,CACtC,aAAA,CAAAjG,CAAAA,CACA,IAAA,CAAAvzB,EACA,YAAA,CAAA2M,CAAAA,CACA,SAAAvB,CACF,CAAA,GAAoC,CAClC,GAAM,CAAE,MAAA3L,CAAM,CAAA,CAAIQ,IAAS,CAErB,CACJ,SAAAw5B,CAAAA,CACA,YAAA,CAAA5sB,EACA,SAAA,CAAW,CAAE,MAAA,CAAA6sB,CAAAA,CAAQ,YAAA,CAAA34B,CAAa,EAClC,KAAA,CAAA4K,CACF,EAAIZ,EAAAA,CAAgD,CAClD,OAAQuuB,EAAAA,CACR,aAAA,CAAe,CACb,MAAA,CAAQ,EACV,CACF,CAAC,CAAA,CAEK1c,EAAW,MAAO5W,CAAAA,EAAoC,CAC1D,GAAI,CACF,MAAMoF,CAAAA,CAASpF,CAAI,CAAA,CACnBvG,EAAM,CACJ,KAAA,CAAO,wBACP,WAAA,CAAa,CAAA,YAAA,EAAe8zB,CAAa,CAAA,iCAAA,CAC3C,CAAC,EACD5nB,CAAAA,EAAM,CACNgB,EAAa,CAAA,CAAK,EACpB,MAAgB,CACdlN,CAAAA,CAAM,CACJ,KAAA,CAAO,OAAA,CACP,WAAA,CAAa,qDAAA,CACb,OAAA,CAAS,aACX,CAAC,EACH,CACF,EAEMk6B,CAAAA,CAAc,IAAM,CACxBhuB,CAAAA,EAAM,CACNgB,EAAa,KAAK,EACpB,EAEA,OACEjS,GAAAA,CAACyK,GAAA,CAAO,IAAA,CAAMnF,EAAM,YAAA,CAAc25B,CAAAA,CAChC,QAAA,CAAA79B,IAAAA,CAAC2J,EAAAA,CAAA,CAAc,UAAU,aAAA,CACvB,QAAA,CAAA,CAAA3J,KAAC6J,EAAAA,CAAA,CACC,UAAAjL,GAAAA,CAACmL,EAAAA,CAAA,CAAY,QAAA,CAAA,oBAAA,CAAkB,CAAA,CAC/B/J,KAACgK,EAAAA,CAAA,CAAkB,gEACmCytB,CAAAA,CAAc,GAAA,CAAA,CACpE,GACF,CAAA,CAEAz3B,IAAAA,CAAC,MAAA,CAAA,CAAK,QAAA,CAAU+Q,CAAAA,CAAa+P,CAAQ,EAAG,SAAA,CAAU,WAAA,CAChD,UAAAliB,GAAAA,CAACiD,EAAAA,CAAA,CACC,KAAA,CAAM,qBAAA,CACN,YAAY,sCAAA,CACZ,KAAA,CAAO+7B,EAAO,MAAA,EAAQ,OAAA,CACrB,GAAGD,CAAAA,CAAS,QAAQ,EACvB,CAAA,CAEA39B,IAAAA,CAAC8J,EAAAA,CAAA,CAAa,SAAA,CAAU,gBAAA,CACtB,UAAAlL,GAAAA,CAAC4C,CAAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,QAAQ,SAAA,CACR,OAAA,CAASq8B,EACT,QAAA,CAAU54B,CAAAA,CACX,iBAED,CAAA,CACArG,GAAAA,CAAC4C,EAAA,CACC,IAAA,CAAK,SACL,OAAA,CAAQ,aAAA,CACR,QAAA,CAAUyD,CAAAA,CAET,QAAA,CAAAA,CAAAA,CAAe,gBAAkB,oBAAA,CACpC,CAAA,CAAA,CACF,GACF,CAAA,CAAA,CACF,CAAA,CACF,CAEJ,ECjFO,SAAS64B,EAAAA,CAAwB,CACtC,aAAA,CAAArG,CAAAA,CACA,KAAAvzB,CAAAA,CACA,YAAA,CAAA2M,CAAAA,CACA,QAAA,CAAAktB,CAAAA,CACA,WAAA,CAAAC,CACF,CAAA,CAAiC,CAC/B,GAAM,CACJ,KAAA,CAAAhtB,EACA,QAAA,CAAAitB,CAAAA,CACA,WAAA3tB,CAAAA,CACA,YAAA,CAAAC,EACA,SAAA,CAAApK,CAAAA,CACA,UAAW,CAAE,MAAA,CAAAy3B,CAAO,CACtB,CAAA,CAAI3uB,EAAAA,CAAgD,CAClD,MAAA,CAAQwuB,EAAAA,CACR,eAAgB,IAAA,CAChB,MAAA,CAAQ,MAAOvzB,CAAAA,EAAS,CACtB,GAAI,CACF,MAAM6zB,EAAS7zB,CAAI,CAAA,CACnBvG,GAAM,CACJ,KAAA,CAAO,uBACP,WAAA,CAAa,CAAA,aAAA,EAAgB8zB,CAAa,CAAA,gCAAA,CAC5C,CAAC,CAAA,CACD5mB,CAAAA,CAAa,CAAA,CAAK,EACpB,OAAS5O,CAAAA,CAAO,CACd,MAAA0B,EAAAA,CAAM,CACJ,MAAO,OAAA,CACP,WAAA,CAAa,kDACb,OAAA,CAAS,aACX,CAAC,CAAA,CACK1B,CACR,CACF,CAAA,CACA,QAAA,CAAU,IAAM,CACd4O,CAAAA,CAAa,CAAA,CAAK,EACpB,CACF,CAAC,EAEKqtB,CAAAA,CAAaltB,CAAAA,CAAM,YAAY,CAAA,CAE/BmtB,CAAAA,CAAgBH,EAAY,GAAA,CAAI/sB,CAAAA,GAAS,CAC7C,KAAA,CAAOA,CAAAA,CAAK,MACZ,KAAA,CAAOA,CAAAA,CAAK,KACd,CAAA,CAAE,CAAA,CAEF,OACErS,GAAAA,CAACyK,EAAAA,CAAA,CAAO,IAAA,CAAMnF,CAAAA,CAAM,YAAA,CAAc2M,EAChC,QAAA,CAAA7Q,IAAAA,CAAC2J,GAAA,CAAc,SAAA,CAAU,mBACvB,QAAA,CAAA,CAAA3J,IAAAA,CAAC6J,GAAA,CACC,QAAA,CAAA,CAAAjL,IAACmL,EAAAA,CAAA,CAAY,8BAAkB,CAAA,CAC/B/J,IAAAA,CAACgK,GAAA,CAAkB,QAAA,CAAA,CAAA,8CAAA,CAC4BytB,CAAAA,CAAc,GAAA,CAAA,CAC7D,CAAA,CAAA,CACF,CAAA,CAEA74B,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,OACb,QAAA,CAAAA,GAAAA,CAACyD,EAAA,CACC,KAAA,CAAM,aAAA,CACN,WAAA,CAAY,sBAAA,CACZ,OAAA,CAAS87B,EACT,KAAA,CAAOD,CAAAA,EAAc,GACrB,aAAA,CAAgBngC,CAAAA,EAAUkgC,EAAS,YAAA,CAAclgC,CAAK,CAAA,CACtD,KAAA,CAAO6/B,CAAAA,CAAO,UAAA,EAAY,QAC5B,CAAA,CACF,CAAA,CAEA59B,KAAC8J,EAAAA,CAAA,CACC,UAAAlL,GAAAA,CAAC4C,CAAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,QAAQ,SAAA,CACR,OAAA,CAAS+O,EACT,QAAA,CAAUpK,CAAAA,CACX,kBAED,CAAA,CACAvH,GAAAA,CAAC4C,CAAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,QAAQ,aAAA,CACR,OAAA,CAAS8O,EACT,QAAA,CAAUnK,CAAAA,EAAa,CAAC+3B,CAAAA,CAEvB,QAAA,CAAA/3B,EAAY,cAAA,CAAiB,oBAAA,CAChC,GACF,CAAA,CAAA,CACF,CAAA,CACF,CAEJ,CCrFA,IAAMi4B,GAAY,CAChB,QAAA,CAAUpnB,WACV,OAAA,CAASqnB,QAAAA,CACT,OAAQrnB,UAAAA,CACR,UAAA,CAAYyP,KACd,CAAA,CAEM6X,EAAAA,CAAa,CACjB,QAAA,CAAU,UAAA,CACV,OAAA,CAAS,UACT,MAAA,CAAQ,QAAA,CACR,WAAY,YACd,CAAA,CAEaC,GAAoBC,EAAA,CAAA,UAAA,CAC/B,CAAC,CAAE,OAAA,CAAAlU,CAAAA,CAAS,YAAAmU,CAAAA,CAAc,IAAA,CAAM,UAAApgC,CAAU,CAAA,CAAGM,IAAQ,CACnD,IAAM+/B,CAAAA,CAAWN,EAAAA,CAAU9T,CAAAA,CAAQ,IAAI,EAEjC8M,CAAAA,CAAc,CAClB,CAAE,KAAA,CAAO,gBAAA,CAAkB,MAAO9M,CAAAA,CAAQ,MAAO,EACjD,CAAE,KAAA,CAAO,OAAQ,KAAA,CAAOgU,EAAAA,CAAWhU,EAAQ,IAAI,CAAE,EACjD,GAAIA,CAAAA,CAAQ,aAAA,CAAgB,CAAC,CAAE,KAAA,CAAO,iBAAkB,KAAA,CAAOA,CAAAA,CAAQ,aAAc,CAAC,CAAA,CAAI,EAAC,CAC3F,GAAIA,EAAQ,WAAA,CAAc,CAAC,CAAE,KAAA,CAAO,aAAA,CAAe,MAAOA,CAAAA,CAAQ,WAAY,CAAC,CAAA,CAAI,EAAC,CACpF,GAAIA,CAAAA,CAAQ,OAAA,CAAU,CAAC,CAAE,KAAA,CAAO,UAAW,KAAA,CAAOA,CAAAA,CAAQ,OAAQ,CAAC,CAAA,CAAI,EACzE,CAAA,CAEA,OACEtqB,IAAAA,CAAC7B,CAAAA,CAAA,CAAK,GAAA,CAAKQ,CAAAA,CAAK,UAAWjB,CAAAA,CAAG,EAAA,CAAIW,CAAS,CAAA,CACzC,QAAA,CAAA,CAAAO,GAAAA,CAACE,EAAA,CACC,QAAA,CAAAkB,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,oCACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,OAAI,SAAA,CAAU,6BAAA,CACb,UAAApB,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,qEAAA,CACb,QAAA,CAAAA,IAAC8/B,CAAAA,CAAA,CAAS,SAAA,CAAU,sBAAA,CAAuB,CAAA,CAC7C,CAAA,CACA1+B,KAAC,KAAA,CAAA,CACC,QAAA,CAAA,CAAApB,IAACM,CAAAA,CAAA,CAAU,UAAU,SAAA,CAAW,QAAA,CAAAorB,EAAQ,IAAA,CAAK,CAAA,CAC7CtqB,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,mCACb,QAAA,CAAA,CAAApB,GAAAA,CAACsB,EAAA,CAAM,OAAA,CAASoqB,CAAAA,CAAQ,MAAA,CAAgB,QAAA,CAAAA,CAAAA,CAAQ,OAAO,CAAA,CACvD1rB,GAAAA,CAAC,QAAK,SAAA,CAAU,+BAAA,CACb,SAAA0/B,EAAAA,CAAWhU,CAAAA,CAAQ,IAAI,CAAA,CAC1B,CAAA,CAAA,CACF,GACF,CAAA,CAAA,CACF,CAAA,CAECmU,GAAenU,CAAAA,CAAQ,OAAA,EACtBtqB,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,YAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,oCAAA,CACZ,QAAA,CAAA0rB,EAAQ,OAAA,CACX,CAAA,CACCA,EAAQ,QAAA,EACP1rB,GAAAA,CAAC,OAAI,SAAA,CAAU,+BAAA,CACZ,SAAA0rB,CAAAA,CAAQ,QAAA,CACX,GAEJ,CAAA,CAAA,CAEJ,CAAA,CACF,EAEA1rB,GAAAA,CAACS,CAAAA,CAAA,CACC,QAAA,CAAAT,GAAAA,CAACoxB,EAAAA,CAAA,CAAS,IAAA,CAAMoH,CAAAA,CAAa,QAAS,CAAA,CAAG,GAAA,CAAI,KAAK,CAAA,CACpD,CAAA,CAAA,CACF,CAEJ,CACF,EAEAmH,GAAY,WAAA,CAAc,aAAA,KCrFpB5iB,EAAAA,CAAa,CACjB,YAAa,CACX,OAAA,CAAS,cACT,KAAA,CAAO,aAAA,CACP,KAAM0iB,QACR,CAAA,CACA,IAAK,CACH,OAAA,CAAS,KAAA,CACT,KAAA,CAAO,KAAA,CACP,IAAA,CAAM3nB,SACR,CAAA,CACA,WAAA,CAAa,CACX,OAAA,CAAS,aAAA,CACT,MAAO,aAAA,CACP,IAAA,CAAMI,KACR,CAAA,CACA,mBAAA,CAAqB,CACnB,OAAA,CAAS,qBAAA,CACT,MAAO,qBAAA,CACP,IAAA,CAAM8E,IACR,CACF,CAAA,CAEa+iB,EAAAA,CAAoB,CAAC,CAAE,IAAA,CAAA32B,EAAM,SAAA,CAAA3J,CAAU,IAA8B,CAChF,IAAMmd,EAASG,EAAAA,CAAW3T,CAAI,EACxByT,CAAAA,CAAOD,CAAAA,CAAO,KAEpB,OACExb,IAAAA,CAACE,EAAA,CAAM,OAAA,CAASsb,EAAO,OAAA,CAAS,SAAA,CAAWnd,CAAAA,CACzC,QAAA,CAAA,CAAAO,GAAAA,CAAC6c,CAAAA,CAAA,CAAK,SAAA,CAAU,cAAA,CAAe,EAC9BD,CAAAA,CAAO,KAAA,CAAA,CACV,CAEJ,MCfaojB,EAAAA,CAAmB,CAAC,CAC/B,KAAA,CAAAj/B,CAAAA,CACA,WAAA,CAAAE,CAAAA,CACA,KAAA,CAAAkd,CAAAA,CACA,QAAAD,CAAAA,CACA,mBAAA,CAAA+hB,EAAsB,EAAC,CACvB,cAAA3hB,CACF,CAAA,GAA6B,CAC3B,IAAM,CAACC,EAAcC,CAAe,CAAA,CAAIxY,SACtCi6B,CACF,CAAA,CAEMxhB,EAAcC,CAAAA,EAAoB,CACtCF,CAAAA,CAAgB/M,CAAAA,GAAS,CACvB,GAAGA,EACH,CAACiN,CAAO,EAAG,CAACjN,CAAAA,CAAKiN,CAAO,CAC1B,CAAA,CAAE,EACJ,CAAA,CAEyB,OAAO,MAAA,CAAOH,CAAY,EAAE,IAAA,CAAK,OAAO,MAE3D2hB,CAAAA,CAAe/hB,CAAAA,CAAM,MAAA,GAAW,CAAA,CAChCkC,CAAAA,CAAc6f,CAAAA,CAChB,8BACA,sDAEJ,OACElgC,IAACge,EAAAA,CAAA,CACC,MAAOjd,CAAAA,CACP,WAAA,CAAaE,EACb,aAAA,CAAeqd,CAAAA,CACf,QAASJ,CAAAA,EAAS,GAAA,CAAIxc,IAAW,CAC/B,KAAA,CAAOA,EAAO,KAAA,CACd,OAAA,CAASA,CAAAA,CAAO,OAAA,EAAW,SAAA,CAC3B,OAAA,CAASA,EAAO,OAAA,GAAY,IAAM,CAAC,CAAA,CACrC,CAAA,CAAE,EAGF,QAAA,CAAA1B,GAAAA,CAAC,OAAI,SAAA,CAAWqgB,CAAAA,CACb,SAAAlC,CAAAA,CAAM,GAAA,CAAKS,GAAS,CACnB,IAAMtN,EAAYiN,CAAAA,CAAaK,CAAAA,CAAK,GAAG,CAAA,EAAK,KAAA,CACtCC,CAAAA,CAAe,CAACqhB,CAAAA,EAAgBthB,CAAAA,CAAK,eAAiB,KAAA,EAAStN,CAAAA,CAErE,OACEtR,GAAAA,CAAC,KAAA,CAAA,CAEC,UAAW6e,CAAAA,CAAe,eAAA,CAAkB,GAE3C,QAAA,CAAAD,CAAAA,CAAK,UAAU,CACd,SAAA,CAAAtN,EACA,YAAA,CAAc,IAAMmN,CAAAA,CAAWG,CAAAA,CAAK,GAAG,CAAA,CACvC,UAAWC,CAAAA,CAAe,eAAA,CAAkB,EAC9C,CAAC,CAAA,CAAA,CAPID,EAAK,GAQZ,CAEJ,CAAC,CAAA,CACH,CAAA,CACF,CAEJ,ECjFA,IAAMuhB,EAAAA,CAAqC,QAErCC,EAAAA,CAA4C,EAAA,CAAA,OAAA,CAE5CC,GAA4BC,EAAA,CAAA,UAAA,CAGhC,CAAC,CAAE,SAAA,CAAA7gC,CAAAA,CAAW,WAAAyU,CAAAA,CAAa,CAAA,CAAG,GAAGpU,CAAM,CAAA,CAAGC,IAC1CC,GAAAA,CAAuB,EAAA,CAAA,MAAA,CAAtB,CACC,QAAA,CAAAA,GAAAA,CAAuB,EAAA,CAAA,OAAA,CAAtB,CACC,GAAA,CAAKD,CAAAA,CACL,WAAYmU,CAAAA,CACZ,SAAA,CAAWpV,EACT,ubAAA,CACAW,CACF,EACC,GAAGK,CAAAA,CACN,EACF,CACD,EACDugC,GAAoB,WAAA,CAAoC,EAAA,CAAA,OAAA,CAAQ,YAEhE,IAAME,EAAAA,CAAyBD,cAK7B,CAAC,CAAE,SAAA,CAAA7gC,CAAAA,CAAW,KAAA,CAAA+gC,CAAAA,CAAO,GAAG1gC,CAAM,CAAA,CAAGC,IACjCC,GAAAA,CAAuB,EAAA,CAAA,IAAA,CAAtB,CACC,GAAA,CAAKD,CAAAA,CACL,UAAWjB,CAAAA,CACT,iOAAA,CACA0hC,GAAS,MAAA,CACT/gC,CACF,EACC,GAAGK,CAAAA,CACN,CACD,EACDygC,EAAAA,CAAiB,WAAA,CAAoC,EAAA,CAAA,IAAA,CAAK,WAAA,CAE1D,IAAME,GAA0BH,EAAA,CAAA,UAAA,CAK9B,CAAC,CAAE,SAAA,CAAA7gC,CAAAA,CAAW,MAAA+gC,CAAAA,CAAO,GAAG1gC,CAAM,CAAA,CAAGC,CAAAA,GACjCC,IAAuB,EAAA,CAAA,KAAA,CAAtB,CACC,IAAKD,CAAAA,CACL,SAAA,CAAWjB,EACT,mCAAA,CACA0hC,CAAAA,EAAS,MAAA,CACT/gC,CACF,CAAA,CACC,GAAGK,EACN,CACD,EACD2gC,GAAkB,WAAA,CAAoC,EAAA,CAAA,KAAA,CAAM,YAE5D,IAAMC,EAAAA,CAA8BJ,cAGlC,CAAC,CAAE,UAAA7gC,CAAAA,CAAW,GAAGK,CAAM,CAAA,CAAGC,CAAAA,GAC1BC,IAAuB,EAAA,CAAA,SAAA,CAAtB,CACC,GAAA,CAAKD,CAAAA,CACL,SAAA,CAAWjB,CAAAA,CAAG,2BAA4BW,CAAS,CAAA,CAClD,GAAGK,CAAAA,CACN,CACD,EACD4gC,EAAAA,CAAsB,WAAA,CAAoC,aAAU,WAAA,CChC7D,IAAMC,EAAAA,CAAmBC,cAC9B,CAAC,CACC,OAAAC,CAAAA,CACA,OAAA,CAAA3iB,EACA,kBAAA,CAAA4iB,CAAAA,CAAqB,KACrB,MAAA,CAAAC,CAAAA,CACA,OAAAjM,CAAAA,CACA,QAAA,CAAAkM,CAAAA,CACA,SAAA,CAAAvhC,CAAAA,CACA,QAAA,CAAAyB,CACF,CAAA,CAAGnB,CAAAA,GAAQ,CACT,IAAMkhC,CAAAA,CAAiC,CACrC,GAAIF,CAAAA,CAAS,CAAC,CACZ,KAAA,CAAO,eACP,IAAA,CAAM/gC,GAAAA,CAACgC,IAAA,CAAI,SAAA,CAAU,UAAU,CAAA,CAC/B,OAAA,CAAS,IAAM++B,CAAAA,CAAOF,CAAAA,CAAO,EAAE,CACjC,CAAC,CAAA,CAAI,EAAC,CACN,GAAI/L,EAAS,CAAC,CACZ,MAAO,MAAA,CACP,IAAA,CAAM90B,IAACsC,IAAAA,CAAA,CAAK,UAAU,SAAA,CAAU,CAAA,CAChC,QAAS,IAAMwyB,CAAAA,CAAO+L,CAAAA,CAAO,EAAE,CACjC,CAAC,EAAI,EAAC,CACN,GAAIG,CAAAA,CAAW,CAAC,CACd,KAAA,CAAO,QAAA,CACP,IAAA,CAAMhhC,GAAAA,CAACmH,MAAAA,CAAA,CAAO,UAAU,SAAA,CAAU,CAAA,CAClC,QAAS,IAAM65B,CAAAA,CAASH,EAAO,EAAE,CAAA,CACjC,OAAA,CAAS,aACX,CAAC,CAAA,CAAI,EACP,CAAA,CAEMK,EAAaJ,CAAAA,CAAqB,CAAC,GAAGG,CAAAA,CAAgB,GAAI/iB,GAAW,EAAG,EAAKA,CAAAA,EAAW,GAExFijB,CAAAA,CAAaN,CAAAA,CAAO,SAAW,MAAA,CAAO,OAAA,CAAQA,CAAAA,CAAO,QAAQ,CAAA,CAChE,MAAA,CAAO,CAAC,CAACje,CAAAA,CAAGzjB,CAAK,CAAA,GAAMA,CAAAA,EAAU,IAA2B,CAAA,CAC5D,GAAA,CAAI,CAAC,CAACqN,CAAAA,CAAKrN,CAAK,CAAA,IAAO,CACtB,MAAOqN,CAAAA,CAAI,MAAA,CAAO,CAAC,CAAA,CAAE,WAAA,EAAY,CAAIA,CAAAA,CAAI,KAAA,CAAM,CAAC,EAAE,OAAA,CAAQ,UAAA,CAAY,KAAK,CAAA,CAC3E,KAAA,CAAO,OAAOrN,CAAAA,EAAU,QAAA,CAAW,KAAK,SAAA,CAAUA,CAAK,EAAI,MAAA,CAAOA,CAAK,CACzE,CAAA,CAAE,CAAA,CAAI,EAAC,CAET,OACEiC,IAAAA,CAAC7B,CAAAA,CAAA,CAAK,GAAA,CAAKQ,EAAK,SAAA,CAAWjB,CAAAA,CAAG,WAAYW,CAAS,CAAA,CACjD,UAAAO,GAAAA,CAACE,CAAAA,CAAA,CACC,QAAA,CAAAkB,IAAAA,CAAC,OAAI,SAAA,CAAU,kCAAA,CACb,UAAAA,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,gBAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAACM,CAAAA,CAAA,CAAU,SAAA,CAAU,mBAAoB,QAAA,CAAAugC,CAAAA,CAAO,KAAK,CAAA,CACrDz/B,IAAAA,CAAC,OAAI,SAAA,CAAU,kCAAA,CACb,UAAApB,GAAAA,CAACsB,CAAAA,CAAA,CAAM,OAAA,CAASu/B,CAAAA,CAAO,OAAgB,QAAA,CAAAA,CAAAA,CAAO,OAAO,CAAA,CACrD7gC,GAAAA,CAACsB,CAAAA,CAAA,CAAM,OAAA,CAAQ,SAAA,CAAW,SAAAu/B,CAAAA,CAAO,IAAA,CAAK,GACxC,CAAA,CACCA,CAAAA,CAAO,aACN7gC,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,iDAAA,CACV,QAAA,CAAA6gC,EAAO,WAAA,CACV,CAAA,CAAA,CAEJ,EAECK,CAAAA,CAAW,MAAA,CAAS,GACnB9/B,IAAAA,CAAC++B,EAAAA,CAAA,CACC,QAAA,CAAA,CAAAngC,GAAAA,CAACogC,EAAAA,CAAA,CAAoB,OAAA,CAAO,IAAA,CAC1B,SAAApgC,GAAAA,CAAC4C,CAAAA,CAAA,CAAO,OAAA,CAAQ,OAAA,CAAQ,KAAK,MAAA,CAAO,SAAA,CAAU,UAC5C,QAAA,CAAA5C,GAAAA,CAAC8nB,aAAA,CAAa,SAAA,CAAU,UAAU,CAAA,CACpC,CAAA,CACF,CAAA,CACA9nB,GAAAA,CAACqgC,EAAAA,CAAA,CAAoB,MAAM,KAAA,CACxB,QAAA,CAAAa,EAAW,GAAA,CAAI,CAACx/B,EAAQgB,CAAAA,GACvBtB,IAAAA,CAAOw/B,YAAN,CACC,QAAA,CAAA,CAAAx/B,KAACm/B,EAAAA,CAAA,CACC,QAAS7+B,CAAAA,CAAO,OAAA,CAChB,UAAW5C,CAAAA,CACT4C,CAAAA,CAAO,OAAA,GAAY,aAAA,EAAiB,yCACtC,CAAA,CAEC,UAAAA,CAAAA,CAAO,IAAA,CACPA,EAAO,KAAA,CAAA,CACV,CAAA,CACCgB,EAAQw+B,CAAAA,CAAW,MAAA,CAAS,GAAKx/B,CAAAA,CAAO,OAAA,GAAY,eACnD1B,GAAAA,CAAC0gC,EAAAA,CAAA,EAAsB,CAAA,CAAA,CAAA,CAXNh+B,CAarB,CACD,CAAA,CACH,CAAA,CAAA,CACF,CAAA,CAAA,CAEJ,CAAA,CACF,CAAA,CAAA,CAEEy+B,CAAAA,CAAW,OAAS,CAAA,EAAKjgC,CAAAA,GACzBE,KAACX,CAAAA,CAAA,CACE,UAAA0gC,CAAAA,CAAW,MAAA,CAAS,GACnBnhC,GAAAA,CAACoxB,EAAAA,CAAA,CAAS,IAAA,CAAM+P,CAAAA,CAAY,QAAS,CAAA,CAAG,GAAA,CAAI,KAAK,CAAA,CAElDjgC,CAAAA,CAAAA,CACH,CAAA,CAAA,CAEJ,CAEJ,CACF,EAEAy/B,GAAW,WAAA,CAAc,YAAA,CCvHzB,IAAMS,EAAAA,CAAgB,CACpB,OAAA,CAAS,EAAA,CACT,QAAS,gCAAA,CACT,OAAA,CAAS,iCACT,WAAA,CAAa,wCACf,EAEMC,EAAAA,CAAa,CACjB,GAAI/oB,UAAAA,CACJ,IAAA,CAAMgpB,aACN,OAAA,CAASC,KACX,EAEMC,EAAAA,CAAc,CAClB,GAAI,SAAA,CACJ,IAAA,CAAM,aAAA,CACN,OAAA,CAAS,WACX,CAAA,CAEaC,GAAmBC,EAAA,CAAA,UAAA,CAC9B,CAAC,CAAE,KAAA,CAAA3gC,CAAAA,CAAO,MAAA5B,CAAAA,CAAO,WAAA,CAAA8B,EAAa,KAAA,CAAA0gC,CAAAA,CAAO,KAAAC,CAAAA,CAAM,OAAA,CAAAliC,EAAU,SAAA,CAAW,SAAA,CAAAD,CAAU,CAAA,CAAGM,CAAAA,GAAQ,CACnF,IAAM8hC,CAAAA,CAAYF,CAAAA,CAAQN,GAAWM,CAAAA,CAAM,SAAS,EAAI,IAAA,CAExD,OACEvgC,KAAC7B,CAAAA,CAAA,CACC,IAAKQ,CAAAA,CACL,SAAA,CAAWjB,EAAGsiC,EAAAA,CAAc1hC,CAAO,EAAGD,CAAS,CAAA,CAE/C,UAAA2B,IAAAA,CAAClB,CAAAA,CAAA,CAAW,SAAA,CAAU,2DAAA,CACpB,QAAA,CAAA,CAAAF,IAACM,CAAAA,CAAA,CAAU,UAAU,2CAAA,CAClB,QAAA,CAAAS,EACH,CAAA,CACC6gC,CAAAA,EACC5hC,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wBACZ,QAAA,CAAA4hC,CAAAA,CACH,GAEJ,CAAA,CACAxgC,IAAAA,CAACX,EAAA,CACC,QAAA,CAAA,CAAAT,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,oCAAA,CAAsC,SAAAb,CAAAA,CAAM,CAAA,CAAA,CACzD8B,GAAe0gC,CAAAA,GACfvgC,IAAAA,CAAC,OAAI,SAAA,CAAU,wCAAA,CACZ,QAAA,CAAA,CAAAH,CAAAA,EACCjB,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,+BAAA,CAAiC,QAAA,CAAAiB,EAAY,CAAA,CAE3D0gC,CAAAA,EAASE,GACRzgC,IAAAA,CAACE,CAAAA,CAAA,CAAM,OAAA,CAASkgC,EAAAA,CAAYG,CAAAA,CAAM,SAAS,CAAA,CAAG,SAAA,CAAU,UACtD,QAAA,CAAA,CAAA3hC,GAAAA,CAAC6hC,EAAA,CAAU,SAAA,CAAU,eAAe,CAAA,CACnCF,CAAAA,CAAM,MAAQ,CAAA,CAAI,GAAA,CAAM,GAAIA,CAAAA,CAAM,KAAA,CAAM,KAAGA,CAAAA,CAAM,KAAA,CAAA,CACpD,CAAA,CAAA,CAEJ,CAAA,CAAA,CAEJ,CAAA,CAAA,CACF,CAEJ,CACF,EAEAF,EAAAA,CAAW,YAAc,YAAA,KC1EnBK,EAAAA,CAAU,CAAC,CAAE,GAAGhiC,CAAM,CAAA,GAAoB,CAC9C,GAAM,CAAE,MAAAiiC,CAAAA,CAAQ,QAAS,EAAIC,QAAAA,EAAS,CAEtC,OACEhiC,GAAAA,CAACiiC,OAAAA,CAAA,CACC,KAAA,CAAOF,CAAAA,CACP,UAAU,eAAA,CACV,YAAA,CAAc,CACZ,UAAA,CAAY,CACV,KAAA,CACE,uIAAA,CACF,WAAA,CAAa,sCAAA,CACb,aACE,kEAAA,CACF,YAAA,CACE,8DACJ,CACF,CAAA,CACC,GAAGjiC,CAAAA,CACN,CAEJ,ECtBA,IAAMoiC,EAAAA,CAAqB,EAAA,CAAA,IAAA,CAErBC,EAAAA,CAAiBC,EAAA,CAAA,UAAA,CAGrB,CAAC,CAAE,SAAA,CAAA3iC,CAAAA,CAAW,GAAGK,CAAM,CAAA,CAAGC,IAC1BC,GAAAA,CAAe,EAAA,CAAA,IAAA,CAAd,CACC,GAAA,CAAKD,CAAAA,CACL,UAAWjB,CAAAA,CACT,4FAAA,CACAW,CACF,CAAA,CACC,GAAGK,EACN,CACD,EACDqiC,EAAAA,CAAS,WAAA,CAA4B,EAAA,CAAA,IAAA,CAAK,WAAA,KAEpCE,EAAAA,CAAoBD,EAAA,CAAA,UAAA,CAGxB,CAAC,CAAE,SAAA,CAAA3iC,EAAW,GAAGK,CAAM,EAAGC,CAAAA,GAC1BC,GAAAA,CAAe,WAAd,CACC,GAAA,CAAKD,EACL,SAAA,CAAWjB,CAAAA,CACT,sYACAW,CACF,CAAA,CACC,GAAGK,CAAAA,CACN,CACD,EACDuiC,GAAY,WAAA,CAA4B,EAAA,CAAA,OAAA,CAAQ,YAEhD,IAAMC,EAAAA,CAAoBF,cAGxB,CAAC,CAAE,UAAA3iC,CAAAA,CAAW,GAAGK,CAAM,CAAA,CAAGC,CAAAA,GAC1BC,IAAe,EAAA,CAAA,OAAA,CAAd,CACC,IAAKD,CAAAA,CACL,SAAA,CAAWjB,CAAAA,CACT,iIAAA,CACAW,CACF,CAAA,CACC,GAAGK,CAAAA,CACN,CACD,EACDwiC,EAAAA,CAAY,WAAA,CAA4B,WAAQ,WAAA,KC1C1CC,EAAAA,CAAgC,EAAA,CAAA,QAAA,CAEhCC,GAAsBC,EAAA,CAAA,UAAA,CAG1B,CAAC,CAAE,SAAA,CAAAhjC,CAAAA,CAAW,GAAGK,CAAM,CAAA,CAAGC,IAC1BC,GAAAA,CAAiB,EAAA,CAAA,QAAA,CAAhB,CACC,GAAA,CAAKD,CAAAA,CACL,UAAWjB,CAAAA,CACT,mIAAA,CACAW,CACF,CAAA,CACC,GAAGK,CAAAA,CACN,CACD,EACD0iC,EAAAA,CAAc,YAA8B,EAAA,CAAA,QAAA,CAAS,WAAA,KAE/CE,EAAAA,CAAgBpjC,GAAAA,CACpB,4lBACA,CACE,QAAA,CAAU,CACR,OAAA,CAAS,CACP,QAAS,sCAAA,CACT,WAAA,CACE,iFACJ,CACF,CAAA,CACA,eAAA,CAAiB,CACf,OAAA,CAAS,SACX,CACF,CACF,CAAA,CAEMqjC,GAAcF,EAAA,CAAA,UAAA,CAIlB,CAAC,CAAE,SAAA,CAAAhjC,CAAAA,CAAW,QAAAC,CAAAA,CAAS,GAAGI,CAAM,CAAA,CAAGC,CAAAA,GAEjCC,IAAiB,EAAA,CAAA,IAAA,CAAhB,CACC,IAAKD,CAAAA,CACL,SAAA,CAAWjB,CAAAA,CAAG4jC,EAAAA,CAAc,CAAE,OAAA,CAAAhjC,CAAQ,CAAC,CAAA,CAAGD,CAAS,CAAA,CAClD,GAAGK,EACN,CAEH,EACD6iC,GAAM,WAAA,CAA8B,EAAA,CAAA,IAAA,CAAK,YAEzC,IAAMC,EAAAA,CAAoBH,cAGxB,CAAC,CAAE,UAAAhjC,CAAAA,CAAW,GAAGK,CAAM,CAAA,CAAGC,CAAAA,GAC1BC,GAAAA,CAAiB,UAAhB,CACC,GAAA,CAAKD,EACL,SAAA,CAAWjB,CAAAA,CACT,qgBACAW,CACF,CAAA,CACC,GAAGK,CAAAA,CACN,CACD,EACD8iC,EAAAA,CAAY,WAAA,CAA8B,UAAO,WAAA,CAEjD,IAAMC,GAAmBJ,EAAA,CAAA,UAAA,CAGvB,CAAC,CAAE,SAAA,CAAAhjC,CAAAA,CAAW,GAAGK,CAAM,CAAA,CAAGC,CAAAA,GAC1BC,IAAiB,EAAA,CAAA,KAAA,CAAhB,CACC,IAAKD,CAAAA,CACL,SAAA,CAAWjB,EACT,uVAAA,CACAW,CACF,EACA,aAAA,CAAY,EAAA,CACX,GAAGK,CAAAA,CAEJ,QAAA,CAAAE,IAAC8G,GAAAA,CAAA,CAAE,SAAA,CAAU,SAAA,CAAU,CAAA,CACzB,CACD,EACD+7B,EAAAA,CAAW,WAAA,CAA8B,SAAM,WAAA,CAE/C,IAAMC,GAAmBL,EAAA,CAAA,UAAA,CAGvB,CAAC,CAAE,SAAA,CAAAhjC,CAAAA,CAAW,GAAGK,CAAM,CAAA,CAAGC,IAC1BC,GAAAA,CAAiB,EAAA,CAAA,KAAA,CAAhB,CACC,GAAA,CAAKD,CAAAA,CACL,SAAA,CAAWjB,CAAAA,CAAG,uBAAA,CAAyBW,CAAS,EAC/C,GAAGK,CAAAA,CACN,CACD,EACDgjC,EAAAA,CAAW,YAA8B,EAAA,CAAA,KAAA,CAAM,WAAA,CAE/C,IAAMC,EAAAA,CAAyBN,EAAA,CAAA,UAAA,CAG7B,CAAC,CAAE,SAAA,CAAAhjC,CAAAA,CAAW,GAAGK,CAAM,CAAA,CAAGC,IAC1BC,GAAAA,CAAiB,EAAA,CAAA,WAAA,CAAhB,CACC,GAAA,CAAKD,CAAAA,CACL,SAAA,CAAWjB,EAAG,oBAAA,CAAsBW,CAAS,EAC5C,GAAGK,CAAAA,CACN,CACD,EACDijC,EAAAA,CAAiB,YAA8B,EAAA,CAAA,WAAA,CAAY,WAAA,CC5GpD,IAAMC,EAAAA,CAAqB,CAChC,CACE,EAAA,CAAI,GAAA,CACJ,KAAM,kBAAA,CACN,IAAA,CAAM,WACN,YAAA,CAAc,aAAA,CACd,OAAQ,QAAA,CACR,WAAA,CAAa,wCACb,QAAA,CAAU,CACR,KAAA,CAAO,kBAAA,CACP,KAAA,CAAO,mBAAA,CACP,QAAS,eAAA,CACT,YAAA,CAAc,YAChB,CACF,CAAA,CACA,CACE,EAAA,CAAI,GAAA,CACJ,KAAM,iBAAA,CACN,IAAA,CAAM,WACN,YAAA,CAAc,KAAA,CACd,OAAQ,SAAA,CACR,WAAA,CAAa,+CACb,QAAA,CAAU,CACR,KAAA,CAAO,qBAAA,CACP,KAAA,CAAO,mBAAA,CACP,QAAS,QAAA,CACT,YAAA,CAAc,YAChB,CACF,CAAA,CACA,CACE,EAAA,CAAI,GAAA,CACJ,KAAM,YAAA,CACN,IAAA,CAAM,aACN,YAAA,CAAc,IAAA,CACd,OAAQ,QAAA,CACR,WAAA,CAAa,uCACb,QAAA,CAAU,CACR,KAAA,CAAO,sBAAA,CACP,KAAA,CAAO,mBAAA,CACP,QAAS,eAAA,CACT,YAAA,CAAc,YAChB,CACF,CAAA,CACA,CACE,EAAA,CAAI,GAAA,CACJ,KAAM,qBAAA,CACN,IAAA,CAAM,WACN,YAAA,CAAc,aAAA,CACd,OAAQ,UAAA,CACR,WAAA,CAAa,qCACb,QAAA,CAAU,CACR,KAAA,CAAO,sBAAA,CACP,KAAA,CAAO,mBAAA,CACP,QAAS,gBAAA,CACT,YAAA,CAAc,YAChB,CACF,CACF,EAEaC,EAAAA,CAAe,CAC1B,CACE,EAAA,CAAI,GAAA,CACJ,KAAM,kBAAA,CACN,MAAA,CAAQ,WACR,IAAA,CAAM,UAAA,CACN,OAAQ,QAAA,CACR,OAAA,CAAS,YAAA,CACT,QAAA,CAAU,KAAA,CACV,WAAA,CAAa,iBACb,aAAA,CAAe,WAAA,CACf,QAAS,eACX,CAAA,CACA,CACE,EAAA,CAAI,GAAA,CACJ,KAAM,kBAAA,CACN,MAAA,CAAQ,WACR,IAAA,CAAM,SAAA,CACN,OAAQ,QAAA,CACR,OAAA,CAAS,cACT,QAAA,CAAU,KAAA,CACV,WAAA,CAAa,iBAAA,CACb,aAAA,CAAe,WAAA,CACf,QAAS,eACX,CAAA,CACA,CACE,EAAA,CAAI,GAAA,CACJ,KAAM,oBAAA,CACN,MAAA,CAAQ,WACR,IAAA,CAAM,YAAA,CACN,OAAQ,SAAA,CACR,OAAA,CAAS,aACT,QAAA,CAAU,KAAA,CACV,YAAa,sBAAA,CACb,aAAA,CAAe,WAAA,CACf,OAAA,CAAS,eACX,CACF,EAEaC,EAAAA,CAAc,CACzB,CACE,KAAA,CAAO,sBAAA,CACP,MAAO,OAAA,CACP,WAAA,CAAa,gCACb,KAAA,CAAO,CACL,MAAO,EAAA,CACP,KAAA,CAAO,kBACP,SAAA,CAAW,IACb,EACA,IAAA,CAAMljC,GAAAA,CAACy/B,QAAAA,CAAA,CAAS,SAAA,CAAU,SAAA,CAAU,EACpC,OAAA,CAAS,SACX,EACA,CACE,KAAA,CAAO,iBACP,KAAA,CAAO,OAAA,CACP,YAAa,YAAA,CACb,KAAA,CAAO,CACL,KAAA,CAAO,CAAA,CACP,MAAO,iBAAA,CACP,SAAA,CAAW,IACb,CAAA,CACA,IAAA,CAAMz/B,GAAAA,CAACoY,UAAAA,CAAA,CAAW,SAAA,CAAU,UAAU,CAAA,CACtC,OAAA,CAAS,SACX,CAAA,CACA,CACE,MAAO,eAAA,CACP,KAAA,CAAO,MACP,WAAA,CAAa,qBAAA,CACb,MAAO,CACL,KAAA,CAAO,GACP,KAAA,CAAO,gBAAA,CACP,UAAW,MACb,CAAA,CACA,IAAA,CAAMpY,GAAAA,CAACkY,KAAAA,CAAA,CAAM,UAAU,SAAA,CAAU,CAAA,CACjC,QAAS,SACX,CAAA,CACA,CACE,KAAA,CAAO,iBAAA,CACP,MAAO,IAAA,CACP,WAAA,CAAa,oBACb,KAAA,CAAO,CACL,MAAO,CAAA,CACP,KAAA,CAAO,YACP,SAAA,CAAW,SACb,CAAA,CACA,IAAA,CAAMlY,GAAAA,CAACgd,IAAAA,CAAA,CAAK,SAAA,CAAU,SAAA,CAAU,EAChC,OAAA,CAAS,aACX,CACF,CAAA,CAEammB,EAAAA,CAAgB,CAC3B,CACE,EAAA,CAAI,IACJ,IAAA,CAAM,kBAAA,CACN,KAAM,UAAA,CACN,MAAA,CAAQ,SACR,MAAA,CAAQ,UAAA,CACR,IAAA,CAAM,YAAA,CACN,QAAA,CAAU,IACZ,EACA,CACE,EAAA,CAAI,IACJ,IAAA,CAAM,iBAAA,CACN,KAAM,UAAA,CACN,MAAA,CAAQ,UACR,MAAA,CAAQ,SAAA,CACR,KAAM,YAAA,CACN,QAAA,CAAU,KACZ,CAAA,CACA,CACE,GAAI,GAAA,CACJ,IAAA,CAAM,YAAA,CACN,IAAA,CAAM,YAAA,CACN,MAAA,CAAQ,SACR,MAAA,CAAQ,SAAA,CACR,KAAM,YAAA,CACN,QAAA,CAAU,IACZ,CACF,CAAA,CCvKA,IAAMC,EAAAA,CAAqB,CACzB,CACE,EAAA,CAAI,GAAA,CACJ,UAAW,kBAAA,CACX,MAAA,CAAQ,UACR,IAAA,CAAM,eAAA,CACN,MAAA,CAAQ,WAAA,CACR,IAAA,CAAM,YACR,EACA,CACE,EAAA,CAAI,IACJ,SAAA,CAAW,iBAAA,CACX,OAAQ,SAAA,CACR,IAAA,CAAM,cAAA,CACN,MAAA,CAAQ,SAAA,CACR,IAAA,CAAM,YACR,CAAA,CACA,CACE,GAAI,GAAA,CACJ,SAAA,CAAW,aACX,MAAA,CAAQ,QAAA,CACR,KAAM,eAAA,CACN,MAAA,CAAQ,YACR,IAAA,CAAM,YACR,CACF,CAAA,CAEMC,EAAAA,CAAwC,CAC5C,CAAE,GAAA,CAAK,WAAA,CAAa,KAAA,CAAO,WAAA,CAAa,QAAA,CAAU,IAAK,CAAA,CACvD,CAAE,IAAK,QAAA,CAAU,KAAA,CAAO,SAAU,QAAA,CAAU,IAAA,CAAM,MAAO,OAAQ,CAAA,CACjE,CAAE,GAAA,CAAK,MAAA,CAAQ,MAAO,MAAA,CAAQ,QAAA,CAAU,IAAK,CAAA,CAC7C,CACE,GAAA,CAAK,QAAA,CACL,KAAA,CAAO,QAAA,CACP,SAAU,IAAA,CACV,MAAA,CAASlkC,GAAUa,GAAAA,CAACsB,CAAAA,CAAA,CAAM,OAAA,CAASnC,CAAAA,GAAU,YAAc,SAAA,CAAY,SAAA,CAAY,SAAAA,CAAAA,CAAM,CAC3F,EACA,CAAE,GAAA,CAAK,OAAQ,KAAA,CAAO,MAAA,CAAQ,QAAA,CAAU,IAAK,CAC/C,CAAA,CAEO,SAASmkC,EAAAA,EAAgB,CAC9B,GAAM,CAACtkB,CAAAA,CAAQukB,CAAS,CAAA,CAAUC,EAAA,CAAA,QAAA,GAC5B,CAACvkB,CAAAA,CAAewkB,CAAgB,CAAA,CAAUD,EAAA,CAAA,QAAA,CAAyB,KAAK,CAAA,CAExEjkB,CAAAA,CAAc/S,GAAgB,CAC9BwS,CAAAA,GAAWxS,CAAAA,CACbi3B,CAAAA,CAAiBxkB,CAAAA,GAAkB,KAAA,CAAQ,OAAS,KAAK,CAAA,EAEzDskB,EAAU/2B,CAAG,CAAA,CACbi3B,EAAiB,KAAK,CAAA,EAE1B,EAqBA,OACEriC,IAAAA,CAACyyB,GAAA,CACC,KAAA,CAAM,sBACN,WAAA,CAAY,qEAAA,CACZ,YAvBgB,CAClB,CAAE,KAAA,CAAO,QAAA,CAAU,IAAA,CAAM,SAAU,EACnC,CAAE,KAAA,CAAO,gBAAiB,CAC5B,CAAA,CAqBI,QAnBY,CACd,CACE,MAAO,eAAA,CACP,OAAA,CAAS,IAAM,OAAA,CAAQ,GAAA,CAAI,QAAQ,CAAA,CACnC,OAAA,CAAS,UACT,IAAA,CAAM7zB,GAAAA,CAACyJ,QAAAA,CAAA,CAAS,SAAA,CAAU,SAAA,CAAU,CACtC,CAAA,CACA,CACE,MAAO,cAAA,CACP,OAAA,CAAS,IAAM,OAAA,CAAQ,GAAA,CAAI,cAAc,CAAA,CACzC,IAAA,CAAMzJ,IAACgH,IAAAA,CAAA,CAAK,UAAU,SAAA,CAAU,CAClC,CACF,CAAA,CAQI,QAAA,CAAS,IAAA,CAGT,QAAA,CAAA,CAAAhH,GAAAA,CAACioB,EAAAA,CAAA,CAAe,IAAA,CAAK,OAAA,CAAQ,IAAI,IAAA,CAC9B,QAAA,CAAAib,GAAY,GAAA,CAAI,CAACQ,EAAQhhC,CAAAA,GACxB1C,GAAAA,CAACyhC,GAAA,CAAwB,GAAGiC,GAAXhhC,CAAmB,CACrC,EACH,CAAA,CAGAtB,IAAAA,CAAC7B,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAS,GAAAA,CAACE,EAAA,CACC,QAAA,CAAAkB,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,oCACb,QAAA,CAAA,CAAApB,GAAAA,CAACM,EAAA,CAAU,QAAA,CAAA,kBAAA,CAAgB,EAC3Bc,IAAAA,CAACE,CAAAA,CAAA,CAAM,OAAA,CAAQ,WAAA,CAAY,UAAU,yBAAA,CACnC,QAAA,CAAA,CAAAtB,GAAAA,CAACsY,UAAAA,CAAA,CAAW,SAAA,CAAU,UAAU,CAAA,CAAE,mBAAA,CAAA,CAEpC,GACF,CAAA,CACF,CAAA,CACAtY,IAACS,CAAAA,CAAA,CACC,SAAAT,GAAAA,CAACioB,EAAAA,CAAA,CAAe,IAAA,CAAK,OAAA,CAAQ,IAAI,IAAA,CAC9B,QAAA,CAAAgb,GAAa,GAAA,CAAKvX,CAAAA,EACjB1rB,GAAAA,CAAC2/B,EAAAA,CAAA,CAA6B,OAAA,CAASjU,GAArBA,CAAAA,CAAQ,EAAsB,CACjD,CAAA,CACH,CAAA,CACF,GACF,CAAA,CAGAtqB,IAAAA,CAAC7B,EAAA,CACC,QAAA,CAAA,CAAAS,IAACE,CAAAA,CAAA,CACC,SAAAF,GAAAA,CAACM,CAAAA,CAAA,CAAU,QAAA,CAAA,qBAAA,CAAmB,CAAA,CAChC,CAAA,CACAN,GAAAA,CAACS,CAAAA,CAAA,CACC,SAAAT,GAAAA,CAAC8e,EAAAA,CAAA,CACC,OAAA,CAASukB,EAAAA,CACT,KAAMD,EAAAA,CACN,MAAA,CAAQpkB,EACR,aAAA,CAAeC,CAAAA,CACf,OAAQM,CAAAA,CACV,CAAA,CACF,GACF,CAAA,CAGAne,IAAAA,CAAC7B,EAAA,CACC,QAAA,CAAA,CAAAS,GAAAA,CAACE,CAAAA,CAAA,CACC,QAAA,CAAAF,IAACM,CAAAA,CAAA,CAAU,iCAAqB,CAAA,CAClC,CAAA,CACAN,IAACS,CAAAA,CAAA,CACC,SAAAT,GAAAA,CAACioB,EAAAA,CAAA,CAAe,IAAA,CAAK,OAAA,CAAQ,IAAI,IAAA,CAC9B,QAAA,CAAA+a,GAAmB,KAAA,CAAM,CAAA,CAAG,CAAC,CAAA,CAAE,GAAA,CAAKnC,CAAAA,EACnC7gC,IAAC2gC,EAAAA,CAAA,CAEC,OAAQE,CAAAA,CACR,MAAA,CAAS17B,GAAO,OAAA,CAAQ,GAAA,CAAI,OAAQA,CAAE,CAAA,CACtC,OAASA,CAAAA,EAAO,OAAA,CAAQ,IAAI,MAAA,CAAQA,CAAE,GAHjC07B,CAAAA,CAAO,EAId,CACD,CAAA,CACH,CAAA,CACF,CAAA,CAAA,CACF,GACF,CAEJ,CCjJA,IAAM8C,GAAe,CACnB,OAAA,CAAS,CACP,IAAA,CAAM,SAAA,CACN,MAAA,CAAQ,CACN,CAAE,IAAA,CAAM,UAAW,KAAA,CAAO,mBAAA,CAAqB,MAAO,YAAa,CAAA,CACnE,CAAE,IAAA,CAAM,oBAAA,CAAsB,KAAA,CAAO,iBAAkB,KAAA,CAAO,uBAAwB,EACtF,CAAE,IAAA,CAAM,eAAgB,KAAA,CAAO,mBAAA,CAAqB,KAAA,CAAO,iBAAkB,CAC/E,CACF,EACA,OAAA,CAAS,CACP,KAAM,SAAA,CACN,MAAA,CAAQ,CACN,CAAE,IAAA,CAAM,aAAc,KAAA,CAAO,kBAAA,CAAoB,MAAO,eAAgB,CAAA,CACxE,CAAE,IAAA,CAAM,YAAA,CAAc,MAAO,iBAAA,CAAmB,KAAA,CAAO,eAAgB,CAAA,CACvE,CAAE,IAAA,CAAM,QAAS,KAAA,CAAO,iBAAA,CAAmB,MAAO,UAAW,CAAA,CAC7D,CAAE,IAAA,CAAM,kBAAA,CAAoB,MAAO,iBAAA,CAAmB,KAAA,CAAO,qBAAsB,CACrF,CACF,EACA,QAAA,CAAU,CACR,KAAM,UAAA,CACN,MAAA,CAAQ,CACN,CAAE,IAAA,CAAM,SAAA,CAAW,MAAO,kBAAA,CAAoB,KAAA,CAAO,YAAa,CAAA,CAClE,CAAE,KAAM,SAAA,CAAW,KAAA,CAAO,kBAAmB,KAAA,CAAO,YAAa,EACjE,CAAE,IAAA,CAAM,cAAe,KAAA,CAAO,gBAAA,CAAkB,MAAO,gBAAiB,CAC1E,CACF,CACF,CAAA,CAEMC,EAAAA,CAAa,CACjB,CAAE,IAAA,CAAM,YAAa,KAAA,CAAO,oBAAA,CAAsB,QAAS,qBAAsB,CAAA,CACjF,CAAE,IAAA,CAAM,WAAA,CAAa,MAAO,wBAAA,CAA0B,OAAA,CAAS,qBAAsB,CAAA,CACrF,CAAE,KAAM,WAAA,CAAa,KAAA,CAAO,qBAAA,CAAuB,OAAA,CAAS,qBAAsB,CAAA,CAClF,CAAE,IAAA,CAAM,YAAA,CAAc,MAAO,SAAA,CAAW,OAAA,CAAS,6CAA8C,CAAA,CAC/F,CAAE,KAAM,MAAA,CAAQ,KAAA,CAAO,YAAa,OAAA,CAAS,6CAA8C,EAC3F,CAAE,IAAA,CAAM,aAAc,KAAA,CAAO,SAAA,CAAW,OAAA,CAAS,6CAA8C,CAAA,CAC/F,CAAE,KAAM,SAAA,CAAW,KAAA,CAAO,gCAAiC,OAAA,CAAS,6CAA8C,CACpH,CAAA,CAEMpjB,EAAAA,CAAU,CACd,CAAE,IAAA,CAAM,OAAQ,KAAA,CAAO,WAAA,CAAa,MAAO,GAAI,CAAA,CAC/C,CAAE,IAAA,CAAM,IAAA,CAAM,KAAA,CAAO,WAAA,CAAa,KAAA,CAAO,SAAU,EACnD,CAAE,IAAA,CAAM,KAAM,KAAA,CAAO,WAAA,CAAa,MAAO,QAAS,CAAA,CAClD,CAAE,IAAA,CAAM,IAAA,CAAM,MAAO,WAAA,CAAa,KAAA,CAAO,MAAO,CAAA,CAChD,CAAE,KAAM,IAAA,CAAM,KAAA,CAAO,WAAA,CAAa,KAAA,CAAO,QAAS,CAAA,CAClD,CAAE,IAAA,CAAM,IAAA,CAAM,MAAO,WAAA,CAAa,KAAA,CAAO,MAAO,CAClD,CAAA,CAEMnf,GAAgB,CACpB,SAAA,CAAW,YAAa,aAAA,CAAe,SAAA,CAAW,UAAW,SAAA,CAC7D,UAAA,CAAY,aAAc,QAAA,CAAU,UAAA,CAAY,SAAA,CAAW,WAC7D,CAAA,CAEA,SAASwiC,GAAY,CAAE,KAAA,CAAAC,CAAM,CAAA,CAA8D,CACzF,GAAM,CAACp4B,CAAAA,CAAQC,CAAS,CAAA,CAAUo4B,EAAA,CAAA,QAAA,CAAS,KAAK,CAAA,CAQhD,OACE3iC,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,uBAAuB,OAAA,CAPhB,IAAM,CAC5B,SAAA,CAAU,SAAA,CAAU,SAAA,CAAU0iC,EAAM,KAAK,CAAA,CACzCn4B,EAAU,IAAI,CAAA,CACd,WAAW,IAAMA,CAAAA,CAAU,KAAK,CAAA,CAAG,GAAI,EACzC,CAAA,CAII,QAAA,CAAA,CAAA3L,IAAC,KAAA,CAAA,CAAI,SAAA,CAAW,0BAA0B8jC,CAAAA,CAAM,KAAK,CAAA,gDAAA,CAAA,CAAoD,CAAA,CACzG1iC,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,SAAA,CACb,QAAA,CAAA,CAAApB,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,8BAA+B,QAAA,CAAA8jC,CAAAA,CAAM,KAAK,CAAA,CACzD1iC,IAAAA,CAAC,OAAI,SAAA,CAAU,+CAAA,CACZ,UAAA0iC,CAAAA,CAAM,KAAA,CACNp4B,EAAS1L,GAAAA,CAACkE,KAAAA,CAAA,CAAM,SAAA,CAAU,sBAAA,CAAuB,CAAA,CAAKlE,IAAC8L,IAAAA,CAAA,CAAK,UAAU,2CAAA,CAA4C,CAAA,CAAA,CACrH,GACF,CAAA,CAAA,CACF,CAEJ,CAEO,SAASk4B,EAAAA,EAAiB,CAC/B,OACEhkC,GAAAA,CAAC8yB,GAAA,CAAU,IAAA,CAAK,KACd,QAAA,CAAA1xB,IAAAA,CAACgyB,EAAAA,CAAA,CAAM,OAAA,CAAQ,IAAA,CACb,UAAAhyB,IAAAA,CAAC,KAAA,CAAA,CACC,UAAApB,GAAAA,CAAC,IAAA,CAAA,CAAG,UAAU,oCAAA,CAAqC,QAAA,CAAA,iBAAA,CAAe,EAClEA,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,4BAAA,CAA6B,QAAA,CAAA,wDAAA,CAE1C,GACF,CAAA,CAEAoB,IAAAA,CAAC8gC,GAAA,CAAK,YAAA,CAAa,QAAA,CAAS,SAAA,CAAU,QAAA,CACpC,QAAA,CAAA,CAAA9gC,KAAC+gC,EAAAA,CAAA,CAAS,UAAU,yBAAA,CAClB,QAAA,CAAA,CAAAniC,IAACqiC,EAAAA,CAAA,CAAY,MAAM,QAAA,CAAS,QAAA,CAAA,QAAA,CAAM,EAClCriC,GAAAA,CAACqiC,EAAAA,CAAA,CAAY,KAAA,CAAM,YAAA,CAAa,sBAAU,CAAA,CAC1CriC,GAAAA,CAACqiC,EAAAA,CAAA,CAAY,KAAA,CAAM,SAAA,CAAU,mBAAO,CAAA,CACpCriC,GAAAA,CAACqiC,GAAA,CAAY,KAAA,CAAM,aAAa,QAAA,CAAA,YAAA,CAAU,CAAA,CAAA,CAC5C,EAEAriC,GAAAA,CAACsiC,EAAAA,CAAA,CAAY,KAAA,CAAM,QAAA,CAAS,UAAU,MAAA,CACpC,QAAA,CAAAtiC,IAACozB,EAAAA,CAAA,CAAM,OAAA,CAAQ,IAAA,CACZ,QAAA,CAAA,MAAA,CAAO,OAAA,CAAQuQ,EAAY,CAAA,CAAE,GAAA,CAAI,CAAC,CAACn3B,CAAAA,CAAKy3B,CAAO,CAAA,GAC9C7iC,IAAAA,CAAC7B,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAS,GAAAA,CAACE,EAAA,CACC,QAAA,CAAAF,IAACM,CAAAA,CAAA,CAAW,SAAA2jC,CAAAA,CAAQ,IAAA,CAAK,CAAA,CAC3B,CAAA,CACAjkC,GAAAA,CAACS,CAAAA,CAAA,CACC,QAAA,CAAAT,GAAAA,CAAC,OAAI,SAAA,CAAU,sDAAA,CACZ,SAAAikC,CAAAA,CAAQ,MAAA,CAAO,IAAKH,CAAAA,EACnB9jC,GAAAA,CAAC6jC,GAAA,CAA6B,KAAA,CAAOC,GAAnBA,CAAAA,CAAM,IAAoB,CAC7C,CAAA,CACH,CAAA,CACF,CAAA,CAAA,CAAA,CAVSt3B,CAWX,CACD,CAAA,CACH,EACF,CAAA,CAEAxM,GAAAA,CAACsiC,GAAA,CAAY,KAAA,CAAM,aAAa,SAAA,CAAU,MAAA,CACxC,SAAAlhC,IAAAA,CAAC7B,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAS,GAAAA,CAACE,EAAA,CACC,QAAA,CAAAF,IAACM,CAAAA,CAAA,CAAU,QAAA,CAAA,kBAAA,CAAgB,CAAA,CAC7B,CAAA,CACAN,GAAAA,CAACS,EAAA,CACC,QAAA,CAAAT,IAACozB,EAAAA,CAAA,CAAM,QAAQ,IAAA,CACZ,QAAA,CAAAwQ,GAAW,GAAA,CAAKx6B,CAAAA,EACfhI,KAAC,KAAA,CAAA,CAAoB,SAAA,CAAU,qDAC7B,QAAA,CAAA,CAAApB,GAAAA,CAAC,OAAI,SAAA,CAAU,2CAAA,CACZ,QAAA,CAAAoJ,CAAAA,CAAK,IAAA,CACR,CAAA,CACApJ,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,gBACb,QAAA,CAAAA,GAAAA,CAAC,OAAI,SAAA,CAAWoJ,CAAAA,CAAK,MAAQ,QAAA,CAAAA,CAAAA,CAAK,QAAQ,CAAA,CAC5C,CAAA,CACApJ,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,0CACZ,QAAA,CAAAoJ,CAAAA,CAAK,KAAA,CACR,CAAA,CAAA,CAAA,CATQA,CAAAA,CAAK,IAUf,CACD,CAAA,CACH,CAAA,CACF,GACF,CAAA,CACF,CAAA,CAEApJ,IAACsiC,EAAAA,CAAA,CAAY,MAAM,SAAA,CAAU,SAAA,CAAU,OACrC,QAAA,CAAAlhC,IAAAA,CAAC7B,EAAA,CACC,QAAA,CAAA,CAAAS,IAACE,CAAAA,CAAA,CACC,QAAA,CAAAF,GAAAA,CAACM,CAAAA,CAAA,CAAU,0BAAc,CAAA,CAC3B,CAAA,CACAN,IAACS,CAAAA,CAAA,CACC,SAAAT,GAAAA,CAACozB,EAAAA,CAAA,CAAM,OAAA,CAAQ,IAAA,CACZ,SAAA5S,EAAAA,CAAQ,GAAA,CAAK0jB,GACZ9iC,IAAAA,CAAC,KAAA,CAAA,CAAqB,UAAU,oDAAA,CAC9B,QAAA,CAAA,CAAApB,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,2CAAA,CACZ,SAAAkkC,CAAAA,CAAM,IAAA,CACT,EACAlkC,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,eAAA,CACb,QAAA,CAAAoB,KAAC,KAAA,CAAA,CAAI,SAAA,CAAW8iC,EAAM,KAAA,CACpB,QAAA,CAAA,CAAAlkC,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,4BAA4B,QAAA,CAAA,QAAA,CAAM,CAAA,CACjDA,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,2BAAA,CAA4B,kBAAM,CAAA,CAAA,CACnD,CAAA,CACF,EACAoB,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,yCAAA,CACZ,QAAA,CAAA,CAAA8iC,EAAM,KAAA,CAAM,IAAA,CAAGA,EAAM,KAAA,CAAM,GAAA,CAAA,CAC9B,IAZQA,CAAAA,CAAM,IAahB,CACD,CAAA,CACH,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CACF,CAAA,CAEAlkC,GAAAA,CAACsiC,GAAA,CAAY,KAAA,CAAM,aAAa,SAAA,CAAU,MAAA,CACxC,SAAAlhC,IAAAA,CAACgyB,EAAAA,CAAA,CAAM,OAAA,CAAQ,IAAA,CAEb,UAAAhyB,IAAAA,CAAC7B,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAS,GAAAA,CAACE,EAAA,CACC,QAAA,CAAAF,GAAAA,CAACM,CAAAA,CAAA,CAAU,QAAA,CAAA,gBAAA,CAAc,EAC3B,CAAA,CACAN,GAAAA,CAACS,EAAA,CACC,QAAA,CAAAT,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,uBACZ,QAAA,CAAAqB,EAAAA,CAAc,IAAK3B,CAAAA,EAClBM,GAAAA,CAACsB,EAAA,CAAoB,OAAA,CAAS5B,EAC3B,QAAA,CAAAA,CAAAA,CAAAA,CADSA,CAEZ,CACD,CAAA,CACH,CAAA,CACF,GACF,CAAA,CAGA0B,IAAAA,CAAC7B,EAAA,CACC,QAAA,CAAA,CAAAS,IAACE,CAAAA,CAAA,CACC,SAAAF,GAAAA,CAACM,CAAAA,CAAA,CAAU,QAAA,CAAA,iBAAA,CAAe,CAAA,CAC5B,EACAN,GAAAA,CAACS,CAAAA,CAAA,CACC,QAAA,CAAAW,IAAAA,CAACgyB,EAAAA,CAAA,CAAM,SAAA,CAAU,YAAA,CAAa,QAAQ,IAAA,CAAK,SAAA,CAAU,YACnD,QAAA,CAAA,CAAApzB,GAAAA,CAAC4C,EAAA,CAAO,OAAA,CAAQ,UAAU,QAAA,CAAA,SAAA,CAAO,CAAA,CACjC5C,IAAC4C,CAAAA,CAAA,CAAO,QAAQ,WAAA,CAAY,QAAA,CAAA,WAAA,CAAS,EACrC5C,GAAAA,CAAC4C,CAAAA,CAAA,CAAO,OAAA,CAAQ,SAAA,CAAU,QAAA,CAAA,SAAA,CAAO,EACjC5C,GAAAA,CAAC4C,CAAAA,CAAA,CAAO,OAAA,CAAQ,OAAA,CAAQ,iBAAK,CAAA,CAC7B5C,GAAAA,CAAC4C,EAAA,CAAO,OAAA,CAAQ,OAAO,QAAA,CAAA,MAAA,CAAI,CAAA,CAC3B5C,IAAC4C,CAAAA,CAAA,CAAO,QAAQ,aAAA,CAAc,QAAA,CAAA,aAAA,CAAW,CAAA,CAAA,CAC3C,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAGAxB,KAAC7B,CAAAA,CAAA,CACC,UAAAS,GAAAA,CAACE,CAAAA,CAAA,CACC,QAAA,CAAAF,GAAAA,CAACM,EAAA,CAAU,QAAA,CAAA,cAAA,CAAY,EACzB,CAAA,CACAN,GAAAA,CAACS,EAAA,CACC,QAAA,CAAAW,KAACgyB,EAAAA,CAAA,CAAM,OAAA,CAAQ,IAAA,CACb,QAAA,CAAA,CAAAhyB,IAAAA,CAAC,OACC,QAAA,CAAA,CAAApB,GAAAA,CAAC,MAAG,SAAA,CAAU,0BAAA,CAA2B,sBAAU,CAAA,CACnDA,GAAAA,CAACioB,GAAA,CAAe,IAAA,CAAK,QAAQ,GAAA,CAAI,IAAA,CAC9B,UAAC,CAAA,CAAG,CAAA,CAAG,EAAG,CAAA,CAAG,CAAA,CAAG,CAAC,CAAA,CAAE,GAAA,CAAKuF,CAAAA,EACvBpsB,KAAC,KAAA,CAAA,CAAY,SAAA,CAAU,2CAA2C,QAAA,CAAA,CAAA,OAAA,CAC1DosB,CAAAA,CAAAA,CAAAA,CADEA,CAEV,CACD,CAAA,CACH,CAAA,CAAA,CACF,CAAA,CACApsB,IAAAA,CAAC,KAAA,CAAA,CACC,UAAApB,GAAAA,CAAC,IAAA,CAAA,CAAG,UAAU,0BAAA,CAA2B,QAAA,CAAA,YAAA,CAAU,EACnDA,GAAAA,CAACioB,EAAAA,CAAA,CAAe,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,KAC9B,QAAA,CAAA,CAAC,CAAA,CAAG,EAAG,CAAA,CAAG,CAAC,EAAE,GAAA,CAAKuF,CAAAA,EACjBpsB,KAAC,KAAA,CAAA,CAAY,SAAA,CAAU,2CAA2C,QAAA,CAAA,CAAA,eAAA,CAClDosB,CAAAA,CAAAA,CAAAA,CADNA,CAEV,CACD,CAAA,CACH,GACF,CAAA,CAAA,CACF,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CACF,CAAA,CAAA,CACF,GACF,CAAA,CACF,CAEJ,CCtOA,IAAM2W,EAAAA,CAAkC,CACtC,CAAE,GAAA,CAAK,MAAA,CAAQ,KAAA,CAAO,OAAQ,QAAA,CAAU,IAAK,EAC7C,CAAE,GAAA,CAAK,OAAQ,KAAA,CAAO,MAAA,CAAQ,SAAU,IAAK,CAAA,CAC7C,CAAE,GAAA,CAAK,QAAA,CAAU,MAAO,QAAA,CAAU,QAAA,CAAU,IAAK,CAAA,CACjD,CAAE,GAAA,CAAK,QAAA,CAAU,KAAA,CAAO,QAAA,CAAU,SAAU,IAAA,CAAM,KAAA,CAAO,OAAQ,CAAA,CACjE,CAAE,IAAK,MAAA,CAAQ,KAAA,CAAO,OAAQ,QAAA,CAAU,IAAK,EAC7C,CAAE,GAAA,CAAK,WAAY,KAAA,CAAO,UAAA,CAAY,SAAU,IAAK,CACvD,CAAA,CAEO,SAASC,EAAAA,EAAgB,CAC9B,GAAM,CAACplB,CAAAA,CAAQukB,CAAS,CAAA,CAAUc,EAAA,CAAA,QAAA,GAC5B,CAACplB,CAAAA,CAAewkB,CAAgB,CAAA,CAAUY,EAAA,CAAA,QAAA,CAAyB,KAAK,CAAA,CAExE9kB,CAAAA,CAAc/S,GAAgB,CAC9BwS,CAAAA,GAAWxS,EACbi3B,CAAAA,CAAiBxkB,CAAAA,GAAkB,KAAA,CAAQ,MAAA,CAAS,KAAK,CAAA,EAEzDskB,EAAU/2B,CAAG,CAAA,CACbi3B,EAAiB,KAAK,CAAA,EAE1B,EAOA,OACEzjC,GAAAA,CAAC,OAAI,SAAA,CAAU,iCAAA,CACb,SAAAA,GAAAA,CAAC8yB,EAAAA,CAAA,CAAU,IAAA,CAAK,IAAA,CACd,SAAA1xB,IAAAA,CAACgyB,EAAAA,CAAA,CAAM,OAAA,CAAQ,IAAA,CAEb,QAAA,CAAA,CAAApzB,IAACszB,EAAAA,CAAA,CAAW,MAVA,CAClB,CAAE,MAAO,QAAA,CAAU,IAAA,CAAM,SAAU,CAAA,CACnC,CAAE,MAAO,UAAW,CACtB,EAOwC,CAAA,CAGhClyB,IAAAA,CAAC,OAAI,SAAA,CAAU,kCAAA,CACb,QAAA,CAAA,CAAAA,IAAAA,CAACgyB,EAAAA,CAAA,CAAM,QAAQ,IAAA,CACb,QAAA,CAAA,CAAApzB,IAAC,IAAA,CAAA,CAAG,SAAA,CAAU,qCAAqC,QAAA,CAAA,iBAAA,CAAe,CAAA,CAClEA,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,kCAAkC,QAAA,CAAA,wGAAA,CAE/C,CAAA,CAAA,CACF,EAEAoB,IAAAA,CAACgyB,EAAAA,CAAA,CAAM,SAAA,CAAU,YAAA,CAAa,OAAA,CAAQ,IAAA,CACpC,QAAA,CAAA,CAAAhyB,IAAAA,CAACwB,EAAA,CAAO,OAAA,CAAQ,UACd,QAAA,CAAA,CAAA5C,GAAAA,CAACyJ,SAAA,CAAS,SAAA,CAAU,UAAU,CAAA,CAAE,YAAA,CAAA,CAElC,EACArI,IAAAA,CAACwB,CAAAA,CAAA,CACC,QAAA,CAAA,CAAA5C,GAAAA,CAACgH,KAAA,CAAK,SAAA,CAAU,SAAA,CAAU,CAAA,CAAE,kBAAA,CAAA,CAE9B,CAAA,CAAA,CACF,GACF,CAAA,CAGA5F,IAAAA,CAAC7B,EAAA,CACC,QAAA,CAAA,CAAAS,IAACE,CAAAA,CAAA,CACC,SAAAF,GAAAA,CAACM,CAAAA,CAAA,CAAU,QAAA,CAAA,cAAA,CAAY,CAAA,CACzB,EACAN,GAAAA,CAACS,CAAAA,CAAA,CACC,QAAA,CAAAT,GAAAA,CAACioB,EAAAA,CAAA,CAAe,IAAA,CAAK,OAAA,CAAQ,IAAI,IAAA,CAC9B,QAAA,CAAAib,GAAY,GAAA,CAAI,CAACQ,EAAQhhC,CAAAA,GACxB1C,GAAAA,CAACyhC,GAAA,CAAwB,GAAGiC,GAAXhhC,CAAmB,CACrC,EACH,CAAA,CACF,CAAA,CAAA,CACF,EAGAtB,IAAAA,CAAC7B,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAS,GAAAA,CAACE,CAAAA,CAAA,CACC,QAAA,CAAAF,GAAAA,CAACM,EAAA,CAAU,QAAA,CAAA,iBAAA,CAAe,EAC5B,CAAA,CACAN,GAAAA,CAACS,EAAA,CACC,QAAA,CAAAW,KAACgyB,EAAAA,CAAA,CAAM,QAAQ,IAAA,CACb,QAAA,CAAA,CAAApzB,IAACggB,EAAAA,CAAA,CACC,KAAA,CAAM,gBAAA,CACN,WAAA,CAAY,kDAAA,CACZ,SAAQ,IAAA,CAER,QAAA,CAAAhgB,IAACqH,CAAAA,CAAA,CACC,YAAY,iBAAA,CACZ,KAAA,CAAM,yBACR,CAAA,CACF,CAAA,CAEArH,IAACggB,EAAAA,CAAA,CACC,MAAM,iBAAA,CACN,WAAA,CAAY,6CACZ,MAAA,CAAO,YAAA,CAEP,QAAA,CAAAhgB,GAAAA,CAACyD,CAAAA,CAAA,CACC,YAAY,kBAAA,CACZ,OAAA,CAAS,CACP,CAAE,KAAA,CAAO,UAAW,KAAA,CAAO,UAAW,EACtC,CAAE,KAAA,CAAO,UAAW,KAAA,CAAO,UAAW,EACtC,CAAE,KAAA,CAAO,UAAW,KAAA,CAAO,UAAW,CACxC,CAAA,CACF,CAAA,CACF,CAAA,CAAA,CACF,EACF,CAAA,CAAA,CACF,CAAA,CAGArC,KAAC7B,CAAAA,CAAA,CACC,UAAAS,GAAAA,CAACE,CAAAA,CAAA,CACC,QAAA,CAAAF,GAAAA,CAACM,EAAA,CAAU,QAAA,CAAA,eAAA,CAAa,EAC1B,CAAA,CACAN,GAAAA,CAACS,EAAA,CACC,QAAA,CAAAT,GAAAA,CAACioB,EAAAA,CAAA,CAAe,IAAA,CAAK,QAAQ,GAAA,CAAI,IAAA,CAC9B,SAAAgb,EAAAA,CAAa,GAAA,CAAKvX,GACjB1rB,GAAAA,CAAC2/B,EAAAA,CAAA,CAA6B,OAAA,CAASjU,CAAAA,CAAAA,CAArBA,EAAQ,EAAsB,CACjD,EACH,CAAA,CACF,CAAA,CAAA,CACF,EAGAtqB,IAAAA,CAAC7B,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAS,GAAAA,CAACE,CAAAA,CAAA,CACC,QAAA,CAAAF,GAAAA,CAACM,EAAA,CAAU,QAAA,CAAA,cAAA,CAAY,EACzB,CAAA,CACAN,GAAAA,CAACS,EAAA,CACC,QAAA,CAAAT,IAACioB,EAAAA,CAAA,CAAe,KAAK,OAAA,CAAQ,GAAA,CAAI,KAC9B,QAAA,CAAA+a,EAAAA,CAAmB,GAAA,CAAKnC,CAAAA,EACvB7gC,GAAAA,CAAC2gC,EAAAA,CAAA,CAEC,MAAA,CAAQE,CAAAA,CACR,OAAS17B,CAAAA,EAAO,OAAA,CAAQ,IAAI,MAAA,CAAQA,CAAE,EACtC,MAAA,CAASA,CAAAA,EAAO,QAAQ,GAAA,CAAI,MAAA,CAAQA,CAAE,CAAA,CACtC,QAAA,CAAWA,GAAO,OAAA,CAAQ,GAAA,CAAI,QAAA,CAAUA,CAAE,CAAA,CAAA,CAJrC07B,CAAAA,CAAO,EAKd,CACD,CAAA,CACH,EACF,CAAA,CAAA,CACF,CAAA,CAGAz/B,KAAC7B,CAAAA,CAAA,CACC,UAAAS,GAAAA,CAACE,CAAAA,CAAA,CACC,QAAA,CAAAF,GAAAA,CAACM,EAAA,CAAU,QAAA,CAAA,YAAA,CAAU,EACvB,CAAA,CACAN,GAAAA,CAACS,CAAAA,CAAA,CACC,QAAA,CAAAT,GAAAA,CAAC8e,GAAA,CACC,OAAA,CAASqlB,GACT,IAAA,CAAMhB,EAAAA,CACN,OAAQnkB,CAAAA,CACR,aAAA,CAAeC,EACf,MAAA,CAAQM,CAAAA,CACV,EACF,CAAA,CAAA,CACF,CAAA,CAGAne,KAAC7B,CAAAA,CAAA,CACC,UAAAS,GAAAA,CAACE,CAAAA,CAAA,CACC,QAAA,CAAAF,GAAAA,CAACM,CAAAA,CAAA,CAAU,QAAA,CAAA,mBAAA,CAAiB,CAAA,CAC9B,EACAN,GAAAA,CAACS,CAAAA,CAAA,CACC,QAAA,CAAAW,IAAAA,CAACgyB,GAAA,CAAM,OAAA,CAAQ,KACb,QAAA,CAAA,CAAAhyB,IAAAA,CAAC,OACC,QAAA,CAAA,CAAApB,GAAAA,CAAC,MAAG,SAAA,CAAU,0CAAA,CAA2C,QAAA,CAAA,iBAAA,CAAe,CAAA,CACxEoB,IAAAA,CAACgyB,EAAAA,CAAA,CAAM,OAAA,CAAQ,IAAA,CACb,UAAApzB,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,+CAAA,CAAgD,QAAA,CAAA,6BAAA,CAE/D,EACAA,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,yDAAA,CAA0D,QAAA,CAAA,8BAAA,CAEzE,EACAA,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,yDAAA,CAA0D,QAAA,CAAA,6BAAA,CAEzE,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAEAoB,IAAAA,CAAC,OACC,QAAA,CAAA,CAAApB,GAAAA,CAAC,MAAG,SAAA,CAAU,0CAAA,CAA2C,4BAAgB,CAAA,CACzEoB,IAAAA,CAAC6mB,GAAA,CAAe,IAAA,CAAK,QAAQ,GAAA,CAAI,IAAA,CAC/B,UAAAjoB,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,8CAAA,CAA+C,QAAA,CAAA,aAAA,CAAW,CAAA,CACzEA,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,+CAA+C,QAAA,CAAA,aAAA,CAAW,CAAA,CACzEA,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,+CAA+C,QAAA,CAAA,aAAA,CAAW,CAAA,CACzEA,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,+CAA+C,QAAA,CAAA,aAAA,CAAW,CAAA,CAAA,CAC3E,GACF,CAAA,CAAA,CACF,CAAA,CACF,GACF,CAAA,CAAA,CACF,CAAA,CACF,CAAA,CACF,CAEJ,CCtKO,IAAMskC,GAAsB,CACjC,CACE,GAAI,MAAA,CACJ,SAAA,CAAW,sBACX,IAAA,CAAM,MAAA,CACN,OAAQ,YAAA,CACR,WAAA,CAAa,OACb,WAAA,CAAa,oEAAA,CACb,QAAA,CAAU,CACR,CAAE,EAAA,CAAI,IAAK,SAAA,CAAW,qBAAA,CAAuB,KAAM,QAAA,CAAU,MAAA,CAAQ,gBAAiB,MAAA,CAAQ,YAAa,EAC3G,CAAE,EAAA,CAAI,IAAK,SAAA,CAAW,qBAAA,CAAuB,KAAM,YAAA,CAAc,MAAA,CAAQ,iBAAkB,OAAA,CAAS,6BAAA,CAA+B,MAAA,CAAQ,aAAc,CAAA,CACzJ,CAAE,GAAI,GAAA,CAAK,SAAA,CAAW,sBAAuB,IAAA,CAAM,YAAA,CAAc,OAAQ,YAAA,CAAc,OAAA,CAAS,yCAA0C,CAAA,CAC1I,CAAE,GAAI,GAAA,CAAK,SAAA,CAAW,sBAAuB,IAAA,CAAM,YAAA,CAAc,OAAQ,gBAAA,CAAkB,OAAA,CAAS,4BAA6B,CAAA,CACjI,CAAE,EAAA,CAAI,IAAK,SAAA,CAAW,qBAAA,CAAuB,KAAM,eAAA,CAAiB,MAAA,CAAQ,iBAAkB,OAAA,CAAS,+BAAgC,EACvI,CAAE,EAAA,CAAI,IAAK,SAAA,CAAW,qBAAA,CAAuB,KAAM,QAAA,CAAU,MAAA,CAAQ,oBAAqB,OAAA,CAAS,yCAA0C,CAAA,CAC7I,CAAE,EAAA,CAAI,GAAA,CAAK,UAAW,qBAAA,CAAuB,IAAA,CAAM,eAAgB,MAAA,CAAQ,gBAAA,CAAkB,QAAS,kDAAmD,CAC3J,EACA,KAAA,CAAO,CACL,CAAE,EAAA,CAAI,GAAA,CAAK,UAAW,qBAAA,CAAuB,IAAA,CAAM,aAAc,OAAA,CAAS,0DAAA,CAA4D,IAAA,CAAM,UAAW,CAAA,CACvJ,CAAE,GAAI,GAAA,CAAK,SAAA,CAAW,sBAAuB,IAAA,CAAM,eAAA,CAAiB,QAAS,yFAAA,CAA2F,IAAA,CAAM,UAAW,CAAA,CACzL,CAAE,GAAI,GAAA,CAAK,SAAA,CAAW,sBAAuB,IAAA,CAAM,YAAA,CAAc,QAAS,0GAAA,CAA4G,IAAA,CAAM,eAAgB,CAAA,CAC5M,CAAE,EAAA,CAAI,IAAK,SAAA,CAAW,qBAAA,CAAuB,KAAM,cAAA,CAAgB,OAAA,CAAS,6JAA8J,IAAA,CAAM,eAAgB,CAClQ,CAAA,CACA,SAAA,CAAW,CACT,CACE,EAAA,CAAI,IACJ,IAAA,CAAM,mBAAA,CACN,KAAM,iBAAA,CACN,WAAA,CAAa,6CAAA,CACb,IAAA,CAAM,QAAA,CACN,UAAA,CAAY,aACZ,UAAA,CAAY,qBAAA,CACZ,IAAK,kBACP,CAAA,CACA,CACE,EAAA,CAAI,GAAA,CACJ,IAAA,CAAM,sBAAA,CACN,IAAA,CAAM,kBAAA,CACN,YAAa,kDAAA,CACb,IAAA,CAAM,SACN,UAAA,CAAY,eAAA,CACZ,WAAY,qBAAA,CACZ,GAAA,CAAK,kBACP,CACF,CAAA,CACA,WAAA,CAAa,CACX,MAAA,CAAQ,OAAA,CACR,iBAAkB,IAAA,CAClB,cAAA,CAAgB,KAChB,YAAA,CAAc,IAAA,CACd,WAAY,IAAA,CACZ,cAAA,CAAgB,KAChB,YAAA,CAAc,IAAA,CACd,MAAO,IAAA,CACP,oBAAA,CAAsB,uCACtB,QAAA,CAAU,SAAA,CACV,OAAA,CAAS,IAAA,CACT,IAAA,CAAM,IAAA,CACN,OAAQ,QAAA,CACR,SAAA,CAAW,WACX,SAAA,CAAW,kBAAA,CACX,UAAW,IAAA,CACX,gBAAA,CAAkB,CAChB,CACE,EAAA,CAAI,MACJ,QAAA,CAAU,gBAAA,CACV,WAAY,aACd,CAAA,CACA,CACE,EAAA,CAAI,KAAA,CACJ,QAAA,CAAU,oBAAA,CACV,UAAA,CAAY,SACd,EACA,CACE,EAAA,CAAI,MACJ,QAAA,CAAU,iBAAA,CACV,WAAY,qBACd,CAAA,CACA,CACE,EAAA,CAAI,KAAA,CACJ,SAAU,qBAAA,CACV,UAAA,CAAY,cACd,CACF,CAAA,CACA,WAAY,CAAA,gtgBAAA,CACd,CACF,CAAA,CACA,CACE,EAAA,CAAI,MAAA,CACJ,UAAW,qBAAA,CACX,IAAA,CAAM,OACN,MAAA,CAAQ,QAAA,CACR,YAAa,MAAA,CACb,WAAA,CAAa,4CACf,CAAA,CACA,CACE,GAAI,MAAA,CACJ,SAAA,CAAW,sBACX,IAAA,CAAM,MAAA,CACN,OAAQ,YAAA,CACR,WAAA,CAAa,MAAA,CACb,WAAA,CAAa,qCACf,CAAA,CACA,CACE,EAAA,CAAI,MAAA,CACJ,UAAW,qBAAA,CACX,IAAA,CAAM,OACN,MAAA,CAAQ,YAAA,CACR,YAAa,MAAA,CACb,WAAA,CAAa,oCACf,CAAA,CACA,CACE,GAAI,MAAA,CACJ,SAAA,CAAW,sBACX,IAAA,CAAM,8BAAA,CACN,MAAA,CAAQ,YAAA,CACR,WAAA,CAAa,aAAA,CACb,YAAa,oFACf,CAAA,CACA,CACE,EAAA,CAAI,MAAA,CACJ,UAAW,qBAAA,CACX,IAAA,CAAM,gBACN,MAAA,CAAQ,YAAA,CACR,YAAa,aAAA,CACb,WAAA,CAAa,yDACf,CAAA,CACA,CACE,GAAI,MAAA,CACJ,SAAA,CAAW,qBAAA,CACX,IAAA,CAAM,wBAAA,CACN,MAAA,CAAQ,aACR,WAAA,CAAa,aAAA,CACb,YAAa,iFACf,CAAA,CACA,CACE,EAAA,CAAI,MAAA,CACJ,UAAW,qBAAA,CACX,IAAA,CAAM,OACN,MAAA,CAAQ,QAAA,CACR,YAAa,MAAA,CACb,SAAA,CAAW,YACX,WAAA,CAAa,oCACf,CAAA,CACA,CACE,EAAA,CAAI,MAAA,CACJ,UAAW,qBAAA,CACX,IAAA,CAAM,gBACN,MAAA,CAAQ,QAAA,CACR,YAAa,SAAA,CACb,WAAA,CAAa,sCACf,CAAA,CACA,CACE,GAAI,MAAA,CACJ,SAAA,CAAW,sBACX,IAAA,CAAM,eAAA,CACN,OAAQ,YAAA,CACR,WAAA,CAAa,SAAA,CACb,WAAA,CAAa,sCACf,CAAA,CACA,CACE,EAAA,CAAI,MAAA,CACJ,UAAW,qBAAA,CACX,IAAA,CAAM,yBACN,MAAA,CAAQ,QAAA,CACR,YAAa,aAAA,CACb,SAAA,CAAW,WACX,WAAA,CAAa,kFACf,CACF,CAAA,CCvMO,IAAMC,GAAkBp/B,CAAAA,EAAiD,CAC9E,IAAMuH,CAAAA,CAAQgiB,OAAAA,CAAQ,IAAM4V,GAAW,IAAA,CAAKE,CAAAA,EAAKA,EAAE,EAAA,GAAOr/B,CAAE,EAAG,CAACA,CAAE,CAAC,CAAA,CAE7D,CAAC6J,EAAWy1B,CAAY,CAAA,CAAIz+B,SAAS0G,CAAAA,EAAO,SAAA,EAAa,EAAE,CAAA,CAC3D,CAACqC,CAAAA,CAAU21B,CAAW,CAAA,CAAI1+B,QAAAA,CAAS0G,GAAO,QAAA,EAAY,YAAY,EA0BxE,OAAO,CACL,MAAAA,CAAAA,CACA,SAAA,CAAW,MACX,SAAA,CAAAsC,CAAAA,CACA,SAAAD,CAAAA,CACA,qBAAA,CA7B6B41B,GAAsB,CACnDF,CAAAA,CAAaE,CAAS,CAAA,CACtB,OAAA,CAAQ,GAAA,CAAI,wBAAA,CAA0BA,CAAS,EAEjD,EA0BE,oBAAA,CAxB4BC,CAAAA,EAAwB,CACpDF,CAAAA,CAAYE,CAAW,EACvB,OAAA,CAAQ,GAAA,CAAI,uBAAwBA,CAAW,EAEjD,EAqBE,kBAAA,CAnByB,MAAOt5B,GAA+B,CAE/D,OAAA,CAAQ,IAAI,4BAAA,CAA8BA,CAAI,CAAA,CAG9C,MAAM,IAAI,OAAA,CAAQu5B,GAAW,UAAA,CAAWA,CAAAA,CAAS,GAAI,CAAC,CAAA,CAItD,QAAQ,GAAA,CAAI,6BAA6B,EAC3C,CAUA,CACF,ECjDA,IAAMjQ,EAAAA,CAAuC,CAC3C,UAAA,CAAY,sBAAA,CACZ,UAAA,CAAY,kBACZ,UAAA,CAAY,uBACd,EAEMkQ,EAAAA,CAAyC,CAC7C,UAAW,oBAAA,CACX,SAAA,CAAW,kBACb,CAAA,CAEMC,EAAAA,CAA0C,CAC9C,SAAA,CAAW,qBAAA,CACX,UAAW,mBACb,CAAA,CAOaC,GAAyBC,CAAAA,EAA2C,CAC/E,GAAM,CAACC,CAAAA,CAAwBC,CAAyB,EAAIn/B,QAAAA,CAAmC,EAAE,CAAA,CAC3F,CAACoZ,EAASgmB,CAAU,CAAA,CAAIp/B,SAAS,IAAI,CAAA,CAE3C,OAAAqL,SAAAA,CAAU,IAAM,EACW,SAAY,CACnC+zB,EAAW,IAAI,CAAA,CAEf,IAAMC,CAAAA,CAAW,MAAM,OAAA,CAAQ,IAC7BJ,CAAAA,CAAe,GAAA,CAAI,MAAOK,CAAAA,EAAiB,CACzC,IAAIC,CAAAA,CAAmB,EAAA,CACnB93B,CAAAA,CAAuE,IAAA,CAG3E,OAAI63B,CAAAA,CAAa,WAEfC,CAAAA,CAAmB3Q,EAAAA,CAAa0Q,EAAa,SAAS,CAAA,EAAKA,EAAa,SAAA,CACxE73B,CAAAA,CAAa,SAAA,EACJ63B,CAAAA,CAAa,UAAA,EAEtBC,CAAAA,CAAmBT,GAAeQ,CAAAA,CAAa,UAAU,GAAKA,CAAAA,CAAa,UAAA,CAC3E73B,EAAa,UAAA,EACJ63B,CAAAA,CAAa,cAEtBC,CAAAA,CAAmBR,EAAAA,CAAgBO,EAAa,YAAY,CAAA,EAAKA,EAAa,YAAA,CAC9E73B,CAAAA,CAAa,cACJ63B,CAAAA,CAAa,aAAA,GAEtBC,CAAAA,CAAmBD,CAAAA,CAAa,aAAA,CAChC73B,CAAAA,CAAa,WAGR,CACL,GAAG63B,EACH,gBAAA,CAAAC,CAAAA,CACA,WAAA93B,CACF,CACF,CAAC,CACH,CAAA,CAEA03B,EAA0BE,CAAQ,CAAA,CAClCD,EAAW,KAAK,EAClB,KAGF,CAAA,CAAG,CAACH,CAAc,CAAC,CAAA,CAEZ,CAAE,cAAA,CAAgBC,CAAAA,CAAwB,QAAA9lB,CAAQ,CAC3D,EClDO,IAAMomB,EAAAA,CAA0C,CACrD,CACE,EAAA,CAAI,UACJ,IAAA,CAAM,2BAAA,CACN,OAAQ,YAAA,CACR,IAAA,CAAM,WACN,MAAA,CAAQ,QAAA,CACR,eAAgB,MAAA,CAChB,cAAA,CAAgB,EAChB,aAAA,CAAe,GAAA,CACf,YAAa,CAAA,CACb,cAAA,CAAgB,MAAA,CAChB,gBAAA,CAAkB,MAAA,CAClB,QAAA,CAAU,MACV,WAAA,CAAa,YAAA,CACb,cAAe,WAAA,CACf,OAAA,CAAS,KACT,YAAA,CAAc,kBAAA,CACd,WAAY,SAAA,CACZ,YAAA,CAAc,WACd,OAAA,CAAS,YAAA,CACT,SAAU,YACZ,CAAA,CACA,CACE,EAAA,CAAI,SAAA,CACJ,IAAA,CAAM,kBAAA,CACN,MAAA,CAAQ,YAAA,CACR,KAAM,SAAA,CACN,MAAA,CAAQ,SACR,cAAA,CAAgB,KAAA,CAChB,eAAgB,CAAA,CAChB,aAAA,CAAe,EACf,WAAA,CAAa,CAAA,CACb,eAAgB,KAAA,CAChB,gBAAA,CAAkB,MAClB,QAAA,CAAU,KAAA,CACV,YAAa,YAAA,CACb,aAAA,CAAe,WAAA,CACf,OAAA,CAAS,IAAA,CACT,YAAA,CAAc,mBACd,UAAA,CAAY,SAAA,CACZ,aAAc,UAAA,CACd,OAAA,CAAS,aACT,QAAA,CAAU,YACZ,EACA,CACE,EAAA,CAAI,UACJ,IAAA,CAAM,iBAAA,CACN,OAAQ,YAAA,CACR,IAAA,CAAM,WACN,MAAA,CAAQ,QAAA,CACR,cAAA,CAAgB,GAAA,CAChB,cAAA,CAAgB,IAAA,CAChB,cAAe,GAAA,CACf,WAAA,CAAa,EACb,cAAA,CAAgB,KAAA,CAChB,iBAAkB,KAAA,CAClB,QAAA,CAAU,MACV,WAAA,CAAa,aAAA,CACb,cAAe,WAAA,CACf,OAAA,CAAS,KACT,YAAA,CAAc,kBAAA,CACd,WAAY,SAAA,CACZ,YAAA,CAAc,UAAA,CACd,OAAA,CAAS,YAAA,CACT,QAAA,CAAU,YACZ,CAAA,CACA,CACE,GAAI,SAAA,CACJ,IAAA,CAAM,4BACN,MAAA,CAAQ,YAAA,CACR,KAAM,SAAA,CACN,MAAA,CAAQ,SACR,cAAA,CAAgB,IAAA,CAChB,eAAgB,OAAA,CAChB,aAAA,CAAe,EACf,WAAA,CAAa,OAAA,CACb,cAAA,CAAgB,SAAA,CAChB,gBAAA,CAAkB,IAAA,CAClB,SAAU,KAAA,CACV,WAAA,CAAa,kBACb,aAAA,CAAe,WAAA,CACf,QAAS,IAAA,CACT,YAAA,CAAc,gBACd,UAAA,CAAY,SAAA,CACZ,aAAc,UAAA,CACd,OAAA,CAAS,aACT,QAAA,CAAU,YACZ,EACA,CACE,EAAA,CAAI,SAAA,CACJ,IAAA,CAAM,iBAAA,CACN,MAAA,CAAQ,aACR,IAAA,CAAM,SAAA,CACN,OAAQ,QAAA,CACR,cAAA,CAAgB,IAChB,cAAA,CAAgB,CAAA,CAChB,cAAe,CAAA,CACf,WAAA,CAAa,EACb,cAAA,CAAgB,GAAA,CAChB,iBAAkB,GAAA,CAClB,QAAA,CAAU,MACV,WAAA,CAAa,UAAA,CACb,aAAA,CAAe,WAAA,CACf,OAAA,CAAS,IAAA,CACT,aAAc,wBAAA,CACd,UAAA,CAAY,UACZ,YAAA,CAAc,UAAA,CACd,QAAS,YAAA,CACT,QAAA,CAAU,YACZ,CAAA,CACA,CACE,GAAI,SAAA,CACJ,IAAA,CAAM,oBACN,MAAA,CAAQ,YAAA,CACR,KAAM,cAAA,CACN,MAAA,CAAQ,UAAA,CACR,cAAA,CAAgB,CAAA,CAChB,cAAA,CAAgB,EAChB,aAAA,CAAe,CAAA,CACf,YAAa,CAAA,CACb,cAAA,CAAgB,EAChB,gBAAA,CAAkB,CAAA,CAClB,SAAU,KAAA,CACV,WAAA,CAAa,cACb,aAAA,CAAe,WAAA,CACf,QAAS,IAAA,CACT,YAAA,CAAc,aACd,UAAA,CAAY,SAAA,CACZ,YAAA,CAAc,UAAA,CACd,OAAA,CAAS,YAAA,CACT,SAAU,YACZ,CAAA,CACA,CACE,EAAA,CAAI,SAAA,CACJ,KAAM,qBAAA,CACN,MAAA,CAAQ,aACR,IAAA,CAAM,UAAA,CACN,OAAQ,QAAA,CACR,cAAA,CAAgB,QAChB,cAAA,CAAgB,IAAA,CAChB,cAAe,GAAA,CACf,WAAA,CAAa,CAAA,CACb,cAAA,CAAgB,OAAA,CAChB,gBAAA,CAAkB,QAClB,QAAA,CAAU,KAAA,CACV,YAAa,SAAA,CACb,aAAA,CAAe,YACf,OAAA,CAAS,IAAA,CACT,aAAc,uBAAA,CACd,UAAA,CAAY,UACZ,YAAA,CAAc,UAAA,CACd,QAAS,YAAA,CACT,QAAA,CAAU,YACZ,CAAA,CACA,CACE,EAAA,CAAI,SAAA,CACJ,IAAA,CAAM,gBAAA,CACN,OAAQ,YAAA,CACR,IAAA,CAAM,UACN,MAAA,CAAQ,QAAA,CACR,eAAgB,IAAA,CAChB,cAAA,CAAgB,CAAA,CAChB,aAAA,CAAe,CAAA,CACf,WAAA,CAAa,EACb,cAAA,CAAgB,IAAA,CAChB,iBAAkB,IAAA,CAClB,QAAA,CAAU,MACV,WAAA,CAAa,UAAA,CACb,aAAA,CAAe,WAAA,CACf,OAAA,CAAS,IAAA,CACT,aAAc,gBAAA,CACd,UAAA,CAAY,UACZ,YAAA,CAAc,YAAA,CACd,QAAS,YAAA,CACT,QAAA,CAAU,YACZ,CAAA,CACA,CACE,GAAI,SAAA,CACJ,IAAA,CAAM,kBACN,MAAA,CAAQ,YAAA,CACR,KAAM,UAAA,CACN,MAAA,CAAQ,QAAA,CACR,cAAA,CAAgB,KAAA,CAChB,cAAA,CAAgB,KAChB,aAAA,CAAe,IAAA,CACf,YAAa,GAAA,CACb,cAAA,CAAgB,MAChB,gBAAA,CAAkB,KAAA,CAClB,SAAU,KAAA,CACV,WAAA,CAAa,UACb,aAAA,CAAe,WAAA,CACf,QAAS,IAAA,CACT,YAAA,CAAc,yBACd,UAAA,CAAY,SAAA,CACZ,YAAA,CAAc,UAAA,CACd,OAAA,CAAS,YAAA,CACT,SAAU,YACZ,CAAA,CACA,CACE,EAAA,CAAI,SAAA,CACJ,KAAM,eAAA,CACN,MAAA,CAAQ,aACR,IAAA,CAAM,SAAA,CACN,OAAQ,QAAA,CACR,cAAA,CAAgB,MAChB,cAAA,CAAgB,IAAA,CAChB,cAAe,CAAA,CACf,WAAA,CAAa,IAAA,CACb,cAAA,CAAgB,GAAA,CAChB,gBAAA,CAAkB,MAClB,QAAA,CAAU,KAAA,CACV,YAAa,gBAAA,CACb,aAAA,CAAe,YACf,OAAA,CAAS,IAAA,CACT,aAAc,oBAAA,CACd,UAAA,CAAY,UACZ,YAAA,CAAc,UAAA,CACd,QAAS,YAAA,CACT,QAAA,CAAU,YACZ,CAAA,CACA,CACE,EAAA,CAAI,SAAA,CACJ,IAAA,CAAM,aAAA,CACN,OAAQ,YAAA,CACR,IAAA,CAAM,UACN,MAAA,CAAQ,QAAA,CACR,eAAgB,GAAA,CAChB,cAAA,CAAgB,EAChB,aAAA,CAAe,CAAA,CACf,YAAa,CAAA,CACb,cAAA,CAAgB,IAChB,gBAAA,CAAkB,GAAA,CAClB,SAAU,KAAA,CACV,WAAA,CAAa,aAAA,CACb,aAAA,CAAe,WAAA,CACf,OAAA,CAAS,KACT,YAAA,CAAc,kBAAA,CACd,WAAY,SAAA,CACZ,YAAA,CAAc,WACd,OAAA,CAAS,YAAA,CACT,SAAU,YACZ,CAAA,CACA,CACE,EAAA,CAAI,SAAA,CACJ,KAAM,mBAAA,CACN,MAAA,CAAQ,aACR,IAAA,CAAM,UAAA,CACN,MAAA,CAAQ,QAAA,CACR,cAAA,CAAgB,QAAA,CAChB,eAAgB,IAAA,CAChB,aAAA,CAAe,IACf,WAAA,CAAa,CAAA,CACb,eAAgB,QAAA,CAChB,gBAAA,CAAkB,SAClB,QAAA,CAAU,KAAA,CACV,YAAa,YAAA,CACb,aAAA,CAAe,YACf,OAAA,CAAS,IAAA,CACT,aAAc,iBAAA,CACd,UAAA,CAAY,SAAA,CACZ,YAAA,CAAc,YAAA,CACd,OAAA,CAAS,aACT,QAAA,CAAU,YACZ,EACA,CACE,EAAA,CAAI,UACJ,IAAA,CAAM,uBAAA,CACN,OAAQ,YAAA,CACR,IAAA,CAAM,eACN,MAAA,CAAQ,QAAA,CACR,eAAgB,CAAA,CAChB,cAAA,CAAgB,EAChB,aAAA,CAAe,CAAA,CACf,WAAA,CAAa,CAAA,CACb,cAAA,CAAgB,CAAA,CAChB,iBAAkB,CAAA,CAClB,QAAA,CAAU,MACV,WAAA,CAAa,iBAAA,CACb,cAAe,WAAA,CACf,OAAA,CAAS,KACT,YAAA,CAAc,eAAA,CACd,WAAY,SAAA,CACZ,YAAA,CAAc,WACd,OAAA,CAAS,YAAA,CACT,SAAU,YACZ,CAAA,CACA,CACE,EAAA,CAAI,SAAA,CACJ,IAAA,CAAM,sBACN,MAAA,CAAQ,YAAA,CACR,KAAM,SAAA,CACN,MAAA,CAAQ,SACR,cAAA,CAAgB,IAAA,CAChB,eAAgB,IAAA,CAChB,aAAA,CAAe,EACf,WAAA,CAAa,CAAA,CACb,eAAgB,KAAA,CAChB,gBAAA,CAAkB,MAClB,QAAA,CAAU,KAAA,CACV,WAAA,CAAa,gBAAA,CACb,aAAA,CAAe,WAAA,CACf,QAAS,IAAA,CACT,YAAA,CAAc,yBACd,UAAA,CAAY,SAAA,CACZ,aAAc,UAAA,CACd,OAAA,CAAS,aACT,QAAA,CAAU,YACZ,EACA,CACE,EAAA,CAAI,UACJ,IAAA,CAAM,sBAAA,CACN,OAAQ,YAAA,CACR,IAAA,CAAM,UAAA,CACN,MAAA,CAAQ,QAAA,CACR,cAAA,CAAgB,KAChB,cAAA,CAAgB,CAAA,CAChB,cAAe,IAAA,CACf,WAAA,CAAa,EACb,cAAA,CAAgB,KAAA,CAChB,iBAAkB,KAAA,CAClB,QAAA,CAAU,MACV,WAAA,CAAa,cAAA,CACb,cAAe,WAAA,CACf,OAAA,CAAS,KACT,YAAA,CAAc,2BAAA,CACd,UAAA,CAAY,SAAA,CACZ,YAAA,CAAc,UAAA,CACd,QAAS,YAAA,CACT,QAAA,CAAU,YACZ,CAAA,CACA,CACE,GAAI,SAAA,CACJ,IAAA,CAAM,qBACN,MAAA,CAAQ,YAAA,CACR,KAAM,SAAA,CACN,MAAA,CAAQ,SACR,cAAA,CAAgB,IAAA,CAChB,eAAgB,IAAA,CAChB,aAAA,CAAe,IAAA,CACf,WAAA,CAAa,GAAA,CACb,cAAA,CAAgB,MAChB,gBAAA,CAAkB,KAAA,CAClB,SAAU,KAAA,CACV,WAAA,CAAa,mBACb,aAAA,CAAe,WAAA,CACf,QAAS,IAAA,CACT,YAAA,CAAc,sBACd,UAAA,CAAY,SAAA,CACZ,aAAc,UAAA,CACd,OAAA,CAAS,aACT,QAAA,CAAU,YACZ,CACF,CAAA,CC7WA,IAAM9I,GAAiC,CACrC,aAAA,CAAe,EACjB,CAAA,CAEM+I,EAAAA,CAAW,IAAM,CACrB,IAAMC,EAAWC,WAAAA,EAAY,CACvB,CAACC,CAAY,CAAA,CAAIC,eAAAA,EAAgB,CACjC,CAAC7mB,CAAAA,CAAQukB,CAAS,CAAA,CAAIv9B,QAAAA,CAAiB,SAAS,CAAA,CAChD,CAACiZ,EAAewkB,CAAgB,CAAA,CAAIz9B,QAAAA,CAAyB,MAAM,CAAA,CACnE,CAAC8/B,EAAaC,CAAc,CAAA,CAAI//B,SAAS,CAAC,CAAA,CAC1C,CAACggC,CAAAA,CAAkBC,CAAmB,CAAA,CAAIjgC,QAAAA,CAA4Bw/B,EAAoB,CAAA,CAC1F,CAAC3f,CAAAA,CAASqgB,CAAU,EAAIlgC,QAAAA,CAAyB02B,EAAc,EAC/D,CAACn1B,CAAAA,CAAWuJ,CAAY,CAAA,CAAI9K,QAAAA,CAAS,IAAI,CAAA,CACzCmgC,CAAAA,CAAW,GAGjB90B,SAAAA,CAAU,IAAM,CACd,IAAM+0B,CAAAA,CAAQ,UAAA,CAAW,IAAM,CAC7Bt1B,CAAAA,CAAa,KAAK,EACpB,CAAA,CAAG,GAAI,CAAA,CACP,OAAO,IAAM,YAAA,CAAas1B,CAAK,CACjC,CAAA,CAAG,EAAE,CAAA,CAGL/0B,SAAAA,CAAU,IAAM,CACd,IAAMg1B,EAAaT,CAAAA,CAAa,GAAA,CAAI,YAAY,CAAA,CAE5CU,CAAAA,CAAWd,EAAAA,CAEXa,IACFC,CAAAA,CAAWA,CAAAA,CAAS,OAAO5a,CAAAA,EAAWA,CAAAA,CAAQ,aAAe2a,CAAU,CAAA,CAAA,CAGzEJ,EAAoBK,CAAQ,EAC9B,EAAG,CAACV,CAAY,CAAC,CAAA,CAEjB,IAAMW,EAAqB/0B,WAAAA,CAAY,CAACpB,CAAAA,CAA6BjR,CAAAA,GAAkB,CACrF+mC,CAAAA,CAAWz0B,IAAS,CAAE,GAAGA,EAAM,CAACrB,CAAK,EAAGjR,CAAM,CAAA,CAAE,EAClD,CAAA,CAAG,EAAE,CAAA,CAECgnB,CAAAA,CAAqB3U,YAAY,IAAM,CAC3C,IAAI80B,CAAAA,CAAWd,EAAAA,CAEX3f,CAAAA,CAAQ,aAAA,GACVygB,CAAAA,CAAWA,CAAAA,CAAS,OAAO5a,CAAAA,EACzBA,CAAAA,CAAQ,OAAO,WAAA,EAAY,CAAE,SAAS7F,CAAAA,CAAQ,aAAA,CAAc,aAAa,CAC3E,GAIF,IAAMwgB,CAAAA,CAAaT,EAAa,GAAA,CAAI,YAAY,EAC5CS,CAAAA,GACFC,CAAAA,CAAWA,CAAAA,CAAS,MAAA,CAAO5a,CAAAA,EAAWA,CAAAA,CAAQ,aAAe2a,CAAU,CAAA,CAAA,CAGzEJ,EAAoBK,CAAQ,CAAA,CAC5BP,EAAe,CAAC,EAClB,EAAG,CAAClgB,CAAAA,CAAS+f,CAAY,CAAC,CAAA,CAEpBxf,EAAqB5U,WAAAA,CAAY,IAAM,CAC3C00B,CAAAA,CAAWxJ,EAAc,CAAA,CAGzB,IAAM2J,CAAAA,CAAaT,CAAAA,CAAa,IAAI,YAAY,CAAA,CAC5CU,EAAWd,EAAAA,CACXa,CAAAA,GACFC,EAAWA,CAAAA,CAAS,MAAA,CAAO5a,GAAWA,CAAAA,CAAQ,UAAA,GAAe2a,CAAU,CAAA,CAAA,CAGzEJ,CAAAA,CAAoBK,CAAQ,CAAA,CAC5BP,CAAAA,CAAe,CAAC,EAClB,CAAA,CAAG,CAACH,CAAY,CAAC,CAAA,CAEXrmB,EAAa/N,WAAAA,CAAahF,CAAAA,EAAgB,CAC9C+2B,CAAAA,CAAU9xB,CAAAA,EACJA,IAASjF,CAAAA,EACXi3B,CAAAA,CAAiBxf,GAAKA,CAAAA,GAAM,KAAA,CAAQ,OAAS,KAAK,CAAA,CAC3CxS,IAETgyB,CAAAA,CAAiB,KAAK,EACfj3B,CAAAA,CACR,EACH,CAAA,CAAG,EAAE,CAAA,CAECg6B,EAAiBh1B,WAAAA,CAAaka,CAAAA,EAA6B,CAC/Dga,CAAAA,CAAS,CAAA,UAAA,EAAaha,EAAQ,EAAE,CAAA,CAAE,EACpC,CAAA,CAAG,CAACga,CAAQ,CAAC,CAAA,CAEP3X,EAAqB,IAAA,CAErBhP,CAAAA,CAA8C2P,QAAQ,IAAM,CAChE,IAAM+X,CAAAA,CAAkD,CACtD,CACE,IAAK,QAAA,CACL,KAAA,CAAO,iBACP,QAAA,CAAU,IAAA,CACV,MAAO,OACT,CAAA,CACA,CACE,GAAA,CAAK,MAAA,CACL,MAAO,MAAA,CACP,QAAA,CAAU,KACV,KAAA,CAAO,OAAA,CACP,OAAQ,CAACtnC,CAAAA,CAAO2O,CAAAA,GACd9N,GAAAA,CAACmrB,EAAAA,CAAA,CAAiB,KAAMrd,CAAAA,CAAI,IAAA,CAA6D,CAE7F,CAAA,CACA,CACE,IAAK,MAAA,CACL,KAAA,CAAO,eACP,QAAA,CAAU,IAAA,CACV,MAAO,OACT,CAAA,CACA,CACE,GAAA,CAAK,cAAA,CACL,MAAO,eAAA,CACP,QAAA,CAAU,IAAA,CACV,KAAA,CAAO,OAAA,CACP,MAAA,CAAQ,CAAC3O,CAAAA,CAAO2O,CAAAA,GAAQ,CACtB,IAAM44B,CAAAA,CAAe54B,EAAI,YAAA,GAAiB,UAAA,CACtC,aAAaA,CAAAA,CAAI,UAAU,GAC3B,CAAA,YAAA,EAAeA,CAAAA,CAAI,UAAU,CAAA,CAAA,CAEjC,OACE9N,IAAC4N,IAAAA,CAAA,CACC,EAAA,CAAI84B,CAAAA,CACJ,SAAA,CAAU,8BAAA,CACV,QAAU3/B,EAAAA,EAAMA,EAAAA,CAAE,iBAAgB,CAEjC,QAAA,CAAA5H,EACH,CAEJ,CACF,CACF,CAAA,CAEMwnC,CAAAA,CAA0E,GAmB1EC,CAAAA,CAAiD,CACrD,CACE,GAAA,CAAK,QAAA,CACL,MAAO,QAAA,CACP,QAAA,CAAU,KACV,KAAA,CAAO,OAAA,CACP,OAASznC,CAAAA,EACPa,GAAAA,CAACsB,EAAA,CAAM,OAAA,CAASnC,IAAU,QAAA,CAAW,SAAA,CAAY,WAAA,CAC7C,QAAA,CAAAA,CAAAA,CAAiB,WAAA,GACrB,CAEJ,CAAA,CACA,CACE,GAAA,CAAK,SAAA,CACL,MAAO,aAAA,CACP,QAAA,CAAU,IAAA,CACV,KAAA,CAAO,OACT,CACF,EAEA,OAAO,CAAC,GAAGsnC,CAAAA,CAAa,GAAGE,EAAgB,GAAGC,CAAU,CAC1D,CAAA,CAAG,CAAC7Y,CAAkB,CAAC,CAAA,CAGjB8Y,CAAAA,CAAgBnY,QAAQ,IAAM,CAClC,IAAMoY,CAAAA,CAAAA,CAAchB,CAAAA,CAAc,GAAKK,CAAAA,CACjCY,CAAAA,CAAWD,EAAaX,CAAAA,CAC9B,OAAOH,EAAiB,KAAA,CAAMc,CAAAA,CAAYC,CAAQ,CACpD,CAAA,CAAG,CAACf,CAAAA,CAAkBF,CAAAA,CAAaK,CAAQ,CAAC,CAAA,CAEtCvf,CAAAA,CAAQ8H,QAAQ,IACpB1uB,GAAAA,CAAC8e,GAAA,CACC,OAAA,CAASC,EACT,IAAA,CAAM8nB,CAAAA,CACN,OAAQ7nB,CAAAA,CACR,aAAA,CAAeC,EACf,MAAA,CAAQM,CAAAA,CACR,WAAYinB,CAAAA,CACZ,UAAA,CAAY,CACV,WAAA,CAAAV,CAAAA,CACA,QAAA,CAAAK,EACA,UAAA,CAAYH,CAAAA,CAAiB,OAC7B,YAAA,CAAcD,CAChB,EACF,CAAA,CACC,CAAChnB,EAAS8nB,CAAAA,CAAe7nB,CAAAA,CAAQC,EAAeM,CAAAA,CAAYinB,CAAAA,CAAgBV,EAAaK,CAAAA,CAAUH,CAAAA,CAAiB,MAAM,CAAC,CAAA,CAExH35B,EAAAA,CAAU25B,CAAAA,CAAiB,MAAA,GAAW,CAAA,CACtC/X,GAAmBpI,CAAAA,CAAQ,aAAA,CAAc,MAAK,GAAM,EAAA,CAE1D,OACE7lB,GAAAA,CAACguB,EAAAA,CAAA,CACC,KAAA,CAAOpH,CAAAA,CACP,QAASf,CAAAA,CACT,cAAA,CAAgB0gB,EAChB,cAAA,CAAgBngB,CAAAA,CAChB,eAAgBD,CAAAA,CAChB,SAAA,CAAW5e,CAAAA,CACX,OAAA,CAAS8E,EAAAA,CACT,gBAAA,CAAkB4hB,GAClB,kBAAA,CAAoBF,CAAAA,CACtB,CAEJ,CAAA,CAEOiZ,EAAAA,CAAQvB,GC5NR,IAAMwB,EAAAA,CAAgC,CAC3C,CACE,EAAA,CAAI,UACJ,OAAA,CAAS,mBAAA,CACT,gBAAiB,eAAA,CACjB,gBAAA,CAAkB,OAClB,SAAA,CAAW,EAAA,CACX,gBAAiB,YAAA,CACjB,iBAAA,CAAmB,aACnB,aAAA,CAAe,YACjB,EACA,CACE,EAAA,CAAI,SAAA,CACJ,OAAA,CAAS,qBAAA,CACT,eAAA,CAAiB,aACjB,gBAAA,CAAkB,KAAA,CAClB,UAAW,EAAA,CACX,eAAA,CAAiB,aACjB,iBAAA,CAAmB,YAAA,CACnB,cAAe,YACjB,CAAA,CACA,CACE,EAAA,CAAI,SAAA,CACJ,QAAS,gBAAA,CACT,eAAA,CAAiB,aACjB,gBAAA,CAAkB,KAAA,CAClB,SAAA,CAAW,CAAA,CACX,eAAA,CAAiB,YAAA,CACjB,kBAAmB,YAAA,CACnB,aAAA,CAAe,YACjB,CAAA,CACA,CACE,GAAI,SAAA,CACJ,OAAA,CAAS,sBACT,eAAA,CAAiB,aAAA,CACjB,iBAAkB,aAAA,CAClB,SAAA,CAAW,GACX,eAAA,CAAiB,YAAA,CACjB,kBAAmB,YAAA,CACnB,aAAA,CAAe,YACjB,CAAA,CACA,CACE,EAAA,CAAI,UACJ,OAAA,CAAS,eAAA,CACT,gBAAiB,WAAA,CACjB,gBAAA,CAAkB,UAClB,SAAA,CAAW,EAAA,CACX,gBAAiB,YAAA,CACjB,iBAAA,CAAmB,aACnB,aAAA,CAAe,YACjB,EACA,CACE,EAAA,CAAI,UACJ,OAAA,CAAS,wBAAA,CACT,eAAA,CAAiB,oBAAA,CACjB,gBAAA,CAAkB,MAAA,CAClB,UAAW,EAAA,CACX,eAAA,CAAiB,aACjB,iBAAA,CAAmB,YAAA,CACnB,cAAe,YACjB,CAAA,CACA,CACE,EAAA,CAAI,SAAA,CACJ,QAAS,kBAAA,CACT,eAAA,CAAiB,eACjB,gBAAA,CAAkB,SAAA,CAClB,UAAW,EAAA,CACX,eAAA,CAAiB,YAAA,CACjB,iBAAA,CAAmB,YAAA,CACnB,aAAA,CAAe,YACjB,CAAA,CACA,CACE,GAAI,SAAA,CACJ,OAAA,CAAS,uBACT,eAAA,CAAiB,eAAA,CACjB,iBAAkB,OAAA,CAClB,SAAA,CAAW,IACX,eAAA,CAAiB,YAAA,CACjB,kBAAmB,YAAA,CACnB,aAAA,CAAe,YACjB,CAAA,CACA,CACE,EAAA,CAAI,SAAA,CACJ,OAAA,CAAS,eAAA,CACT,gBAAiB,iBAAA,CACjB,gBAAA,CAAkB,UAClB,SAAA,CAAW,CAAA,CACX,gBAAiB,YAAA,CACjB,iBAAA,CAAmB,aACnB,aAAA,CAAe,YACjB,EACA,CACE,EAAA,CAAI,UACJ,OAAA,CAAS,kBAAA,CACT,gBAAiB,cAAA,CACjB,gBAAA,CAAkB,KAAA,CAClB,SAAA,CAAW,GAAA,CACX,eAAA,CAAiB,aACjB,iBAAA,CAAmB,YAAA,CACnB,cAAe,YACjB,CAAA,CACA,CACE,EAAA,CAAI,SAAA,CACJ,QAAS,mBAAA,CACT,eAAA,CAAiB,eACjB,gBAAA,CAAkB,MAAA,CAClB,UAAW,EAAA,CACX,eAAA,CAAiB,aACjB,iBAAA,CAAmB,YAAA,CACnB,aAAA,CAAe,YACjB,CAAA,CACA,CACE,GAAI,SAAA,CACJ,OAAA,CAAS,UACT,eAAA,CAAiB,YAAA,CACjB,iBAAkB,SAAA,CAClB,SAAA,CAAW,GACX,eAAA,CAAiB,YAAA,CACjB,kBAAmB,YAAA,CACnB,aAAA,CAAe,YACjB,CAAA,CACA,CACE,GAAI,SAAA,CACJ,OAAA,CAAS,sBAAA,CACT,eAAA,CAAiB,UAAA,CACjB,gBAAA,CAAkB,UAClB,SAAA,CAAW,EAAA,CACX,gBAAiB,YAAA,CACjB,iBAAA,CAAmB,aACnB,aAAA,CAAe,YACjB,EACA,CACE,EAAA,CAAI,UACJ,OAAA,CAAS,kBAAA,CACT,gBAAiB,cAAA,CACjB,gBAAA,CAAkB,UAClB,SAAA,CAAW,EAAA,CACX,eAAA,CAAiB,YAAA,CACjB,iBAAA,CAAmB,YAAA,CACnB,cAAe,YACjB,CAAA,CACA,CACE,EAAA,CAAI,SAAA,CACJ,QAAS,eAAA,CACT,eAAA,CAAiB,WAAA,CACjB,gBAAA,CAAkB,KAAA,CAClB,SAAA,CAAW,GACX,eAAA,CAAiB,YAAA,CACjB,kBAAmB,YAAA,CACnB,aAAA,CAAe,YACjB,CACF,CAAA,KCxJMC,EAAAA,CAAoBp1B,CAAAA,CAAE,OAAO,CACjC,WAAA,CAAaA,EAAE,MAAA,EAAO,CAAE,MAAK,CAAE,GAAA,CAAI,EAAG,0BAA0B,CAAA,CAAE,IAAI,GAAA,CAAK,+CAA+C,CAAA,CAC1H,cAAA,CAAgBA,CAAAA,CAAE,IAAA,CAAK,CAAC,KAAA,CAAO,IAAI,CAAC,CAAA,CACpC,oBAAA,CAAsBA,EAAE,MAAA,EAAO,CAAE,MAAK,CAAE,GAAA,CAAI,GAAI,wDAAwD,CAAA,CAAE,UAAS,CACnH,kBAAA,CAAoBA,EAAE,MAAA,EAAO,CAAE,IAAA,EAAK,CAAE,GAAA,CAAI,EAAA,CAAI,sDAAsD,CAAA,CAAE,QAAA,EACxG,CAAC,CAAA,CAEKq1B,GAAgB,IAAM,CAC1B,GAAM,CAAE,EAAA,CAAAhiC,CAAG,CAAA,CAAIiiC,SAAAA,GACT1B,CAAAA,CAAWC,WAAAA,GACX,CAACp+B,CAAAA,CAAWuJ,CAAY,CAAA,CAAI9K,QAAAA,CAAS,IAAI,EAGzC0lB,CAAAA,CAAU8Z,EAAAA,CAAqB,KAAKxiB,CAAAA,EAAOA,CAAAA,CAAI,KAAO7d,CAAE,CAAA,CAGxD,CAAC2f,CAAAA,CAAeuiB,CAAgB,EAAIrhC,QAAAA,CAAS0lB,CAAAA,EAAS,QAAU,QAAQ,CAAA,CAG9Era,UAAU,IAAM,CACd,IAAM+0B,CAAAA,CAAQ,UAAA,CAAW,IAAM,CAC7Bt1B,CAAAA,CAAa,KAAK,EACpB,CAAA,CAAG,GAAI,EACP,OAAO,IAAM,aAAas1B,CAAK,CACjC,EAAG,EAAE,EAGL,IAAMphB,CAAAA,CAAgC0J,QAAQ,IAAM,CAClD,CAAE,KAAA,CAAO,QAAA,CAAU,KAAA,CAAO,QAAS,CAAA,CACnC,CAAE,MAAO,UAAA,CAAY,KAAA,CAAO,UAAW,CAAA,CACvC,CAAE,MAAO,WAAA,CAAa,KAAA,CAAO,WAAY,CAAA,CACzC,CAAE,MAAO,SAAA,CAAW,KAAA,CAAO,SAAU,CACvC,CAAA,CAAG,EAAE,CAAA,CAEC/C,CAAAA,CAAwC+C,QAAQ,IAAM,CAC1D,CAAE,KAAA,CAAO,KAAA,CAAO,MAAO,KAAM,CAAA,CAC7B,CAAE,KAAA,CAAO,IAAA,CAAM,MAAO,IAAK,CAC7B,EAAG,EAAE,EAGClf,CAAAA,CAAOa,EAAAA,CAAwC,CACnD,MAAA,CAAQ62B,EAAAA,CACR,aAAA,CAAe,CACb,WAAA,CAAaxb,CAAAA,EAAS,MAAQ,EAAA,CAC9B,cAAA,CAAgB,KAChB,oBAAA,CAAsB,EAAA,CACtB,mBAAoB,EACtB,CAAA,CACA,eAAgB,KAClB,CAAC,EAGK4b,CAAAA,CAAc5Y,OAAAA,CAAQ,IAC1BuY,EAAAA,CAAgB,MAAA,CAAOM,CAAAA,EAAOA,CAAAA,CAAI,aAAA,GAAkB7b,CAAAA,EAAS,MAAM,CAAA,CACnE,CAACA,GAAS,MAAM,CAClB,EAGM8b,CAAAA,CAA2D9Y,OAAAA,CAAQ,IAAM,CAC7E,CAAE,IAAK,IAAA,CAAM,KAAA,CAAO,KAAM,QAAA,CAAU,IAAA,CAAM,MAAO,MAAO,CAAA,CACxD,CAAE,GAAA,CAAK,SAAA,CAAW,KAAA,CAAO,WAAY,QAAA,CAAU,IAAA,CAAM,MAAO,OAAQ,CAAA,CACpE,CAAE,GAAA,CAAK,iBAAA,CAAmB,MAAO,kBAAA,CAAoB,QAAA,CAAU,KAAM,KAAA,CAAO,OAAQ,EACpF,CAAE,GAAA,CAAK,mBAAoB,KAAA,CAAO,mBAAA,CAAqB,QAAA,CAAU,IAAA,CAAM,KAAA,CAAO,OAAQ,EACtF,CACE,GAAA,CAAK,YACL,KAAA,CAAO,YAAA,CACP,SAAU,IAAA,CACV,MAAA,CAAQ,CAAC+Y,CAAAA,CAAQF,EAAAA,GAAQroC,GAAeqoC,EAAAA,CAAI,SAAS,EACrD,KAAA,CAAO,OAAA,CACP,MAAO,OACT,CAAA,CACA,CAAE,GAAA,CAAK,iBAAA,CAAmB,KAAA,CAAO,mBAAoB,QAAA,CAAU,IAAA,CAAM,MAAO,OAAQ,CAAA,CACpF,CAAE,GAAA,CAAK,mBAAA,CAAqB,MAAO,oBAAA,CAAsB,QAAA,CAAU,KAAM,KAAA,CAAO,OAAQ,CAC1F,CAAA,CAAG,EAAE,CAAA,CAGCnb,CAAAA,CAAYsC,OAAAA,CAAQ,IACxB1uB,GAAAA,CAAC8e,EAAAA,CAAA,CACC,IAAA,CAAMwoB,CAAAA,CACN,QAASE,CAAAA,CACT,YAAA,CAAa,sCACf,CAAA,CACC,CAACF,EAAaE,CAAU,CAAC,EAGtBE,CAAAA,CAAyBl2B,WAAAA,CAAY,IAAM,CAC/C,GAAIka,EAAS,CACX,IAAMgb,CAAAA,CAAehb,CAAAA,CAAQ,YAAA,GAAiB,UAAA,CAC1C,aAAaA,CAAAA,CAAQ,UAAU,GAC/B,CAAA,YAAA,EAAeA,CAAAA,CAAQ,UAAU,CAAA,CAAA,CACrCga,CAAAA,CAASgB,CAAY,EACvB,CACF,EAAG,CAAChB,CAAAA,CAAUha,CAAO,CAAC,CAAA,CAEhBic,EAA6Bn2B,WAAAA,CAAY,IAAM,CAC/Cka,CAAAA,EACFga,CAAAA,CAAS,CAAA,yBAAA,EAA4Bha,EAAQ,UAAU,CAAA,cAAA,EAAiBA,EAAQ,YAAY,CAAA,CAAE,EAElG,CAAA,CAAG,CAACga,EAAUha,CAAO,CAAC,EAEhBkc,CAAAA,CAAuBp2B,WAAAA,CAAY,IAAM,CAC7C,OAAA,CAAQ,IAAI,oBAAoB,EAClC,CAAA,CAAG,EAAE,CAAA,CAECq2B,EAA6Br2B,WAAAA,CAAY,IAAM,CAC/Cka,CAAAA,EACFga,CAAAA,CAAS,mCAAmCha,CAAAA,CAAQ,EAAE,CAAA,CAAE,EAE5D,CAAA,CAAG,CAACga,EAAUha,CAAO,CAAC,EAEhBoc,CAAAA,CAAwBt2B,WAAAA,CAAY,IAAM,CAC1Cka,CAAAA,EACFga,CAAAA,CAAS,CAAA,UAAA,EAAaha,CAAAA,CAAQ,WAAW,EAAE,EAE/C,CAAA,CAAG,CAACga,CAAAA,CAAUha,CAAO,CAAC,CAAA,CAEhBqc,CAAAA,CAAqBv2B,YAAamzB,CAAAA,EAAsB,CAC5D0C,EAAiB1C,CAAS,EAC5B,EAAG,EAAE,EAECqD,CAAAA,CAAex2B,WAAAA,CAAY,IAAM,CACrC,OAAA,CAAQ,GAAA,CAAI,iBAAiB,EAE/B,CAAA,CAAG,EAAE,CAAA,CAECy2B,EAA0Bz2B,WAAAA,CAAY,IAAM,CAC5Cka,CAAAA,EACFga,CAAAA,CAAS,+BAA+Bha,CAAAA,CAAQ,EAAE,EAAE,EAExD,CAAA,CAAG,CAACga,CAAAA,CAAUha,CAAO,CAAC,CAAA,CAGtB,GAAI,CAACA,EACH,OACE1rB,GAAAA,CAACyrB,GAAA,CACC,OAAA,CAAS,KACT,aAAA,CAAc,EAAA,CACd,eAAgB,IAAM,CAAC,EACvB,aAAA,CAAezG,CAAAA,CACf,sBAAuB2G,CAAAA,CACvB,IAAA,CAAMnc,EACN,kBAAA,CAAoB,IAAM,CAAC,CAAA,CAC3B,sBAAA,CAAwB,IAAM,CAAC,CAAA,CAC/B,gBAAA,CAAkB,IAAM,CAAC,CAAA,CACzB,uBAAwB,IAAM,CAAC,EAC/B,KAAA,CAAM,iCAAA,CACR,EAKJ,IAAM0c,CAAAA,CAAeR,EAAQ,MAAA,GAAW,YAAA,CAGlCW,EAAWib,CAAAA,CAAY,MAAA,CAE7B,OACEtnC,GAAAA,CAACyrB,EAAAA,CAAA,CACC,QAASC,CAAAA,CACT,aAAA,CAAe5G,EACf,cAAA,CAAgBijB,CAAAA,CAChB,cAAe/iB,CAAAA,CACf,qBAAA,CAAuB2G,EACvB,IAAA,CAAMnc,CAAAA,CACN,mBAAoBk4B,CAAAA,CACpB,sBAAA,CAAwBC,EACxB,gBAAA,CAAkBC,CAAAA,CAClB,uBAAwBC,CAAAA,CACxB,iBAAA,CAAmBC,CAAAA,CACnB,YAAA,CAAc5b,CAAAA,CACd,SAAA,CAAWE,EACX,QAAA,CAAUC,CAAAA,CACV,UAAW9kB,CAAAA,CACX,QAAA,CAAUygC,EACV,mBAAA,CAAqBC,CAAAA,CACvB,CAEJ,CAAA,CAEOC,EAAAA,CAAQf,OClLTgB,EAAAA,CAAc,IAAM,CACxB,GAAM,CAAE,GAAAhjC,CAAG,CAAA,CAAIiiC,WAAU,CACnB1B,CAAAA,CAAWC,aAAY,CACvB,CAACyC,EAAmBC,CAAoB,CAAA,CAAIriC,QAAAA,CAAS,KAAK,CAAA,CAE1D,CACJ,MAAA0G,CAAAA,CACA,SAAA,CAAAsC,EACA,QAAA,CAAAD,CAAAA,CACA,sBAAAu5B,CAAAA,CACA,oBAAA,CAAAC,EACA,kBAAA,CAAAC,CACF,EAAIjE,EAAAA,CAAep/B,CAAE,EAErB,OAAKuH,CAAAA,CAeHtL,KAAC4c,EAAAA,CAAA,CACC,KAAA,CACE5c,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,0BACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,QAAK,QAAA,CAAA,CAAA,SAAA,CAAQsL,CAAAA,CAAM,IAAG,CAAA,CACvB1M,GAAAA,CAACsB,EAAA,CAAM,OAAA,CAASuN,GAAoBnC,CAAAA,CAAM,IAAI,EAAI,QAAA,CAAAA,CAAAA,CAAM,KAAK,CAAA,CAAA,CAC/D,CAAA,CAEF,QAAA,CAAS,MAAA,CACT,aAAA,CACE1M,GAAAA,CAAC8O,GAAA,CACC,MAAA,CAAQpC,EAAM,MAAA,CACd,QAAA,CAAUqC,EACV,SAAA,CAAWC,CAAAA,CACX,iBAAkBu5B,CAAAA,CAClB,iBAAA,CAAmBD,EACrB,CAAA,CAEF,OAAA,CAAS,CACP,CACE,KAAA,CAAO,gBACP,OAAA,CAAS,SAAA,CACT,OAAA,CAAS,IAAMD,CAAAA,CAAqB,IAAI,CAC1C,CACF,CAAA,CAEA,UAAAroC,GAAAA,CAACmO,EAAAA,CAAA,CAAkB,KAAA,CAAOzB,CAAAA,CAAO,EAEjC1M,GAAAA,CAACgS,EAAAA,CAAA,CACC,OAAA,CAAStF,CAAAA,CAAM,GACf,IAAA,CAAM07B,CAAAA,CACN,aAAcC,CAAAA,CACd,SAAA,CAAWG,CAAAA,CACb,CAAA,CAAA,CACF,CAAA,CA9CExoC,GAAAA,CAAC,OAAI,SAAA,CAAU,6BAAA,CACb,SAAAoB,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,aAAA,CACb,QAAA,CAAA,CAAApB,IAAC,IAAA,CAAA,CAAG,SAAA,CAAU,0BAA0B,QAAA,CAAA,iBAAA,CAAe,CAAA,CACvDoB,KAAC,GAAA,CAAA,CAAE,SAAA,CAAU,6BAA6B,QAAA,CAAA,CAAA,aAAA,CAAY+D,CAAAA,CAAG,sBAAA,CAAA,CAAoB,CAAA,CAC7EnF,GAAAA,CAAC4C,CAAAA,CAAA,CAAO,OAAA,CAAS,IAAM8iC,EAAS,SAAS,CAAA,CAAG,0BAE5C,CAAA,CAAA,CACF,CAAA,CACF,CAwCN,CAAA,CAEO+C,EAAAA,CAAQN,OC3DTO,EAAAA,CAAS,IAAM,CACnB,IAAMhD,CAAAA,CAAWC,aAAY,CACvB,CAAC9f,EAASqgB,CAAU,CAAA,CAAIlgC,QAAAA,CAAS,CACrC,OAAA,CAAS,EAAA,CACT,UAAW,EAAA,CACX,WAAA,CAAa,GACb,SAAA,CAAW,EAAA,CACX,YAAa,EAAA,CACb,QAAA,CAAU,GACV,SAAA,CAAW,EAAA,CACX,UAAW,EAAA,CACX,OAAA,CAAS,EACX,CAAC,CAAA,CAEK,CAAC2iC,CAAAA,CAAgBC,CAAiB,CAAA,CAAI5iC,QAAAA,CAAkBs+B,EAAU,CAAA,CAClE,CAACwB,CAAAA,CAAaC,CAAc,EAAI//B,QAAAA,CAAS,CAAC,EAC1C,CAAC6iC,CAAAA,CAAaC,CAAc,CAAA,CAAI9iC,QAAAA,CAAS,GAAG,CAAA,CAE5CugC,CAAAA,CAAqB,CAACn2B,CAAAA,CAAejR,CAAAA,GAAkB,CAC3D+mC,CAAAA,CAAWz0B,CAAAA,GAAS,CAAE,GAAGA,CAAAA,CAAM,CAACrB,CAAK,EAAGjR,CAAM,EAAE,EAClD,CAAA,CAEM4pC,EAAe,IAAM,CACzB,IAAIzC,CAAAA,CAAWhC,EAAAA,CAEXze,EAAQ,OAAA,GACVygB,CAAAA,CAAWA,EAAS,MAAA,CAAO55B,CAAAA,EAASA,EAAM,EAAA,CAAG,QAAA,CAASmZ,CAAAA,CAAQ,OAAO,CAAC,CAAA,CAAA,CAEpEA,EAAQ,WAAA,GACVygB,CAAAA,CAAWA,EAAS,MAAA,CAAO55B,CAAAA,EAASA,EAAM,MAAA,GAAWmZ,CAAAA,CAAQ,WAAW,CAAA,CAAA,CAEtEA,CAAAA,CAAQ,YACVygB,CAAAA,CAAWA,CAAAA,CAAS,OAAO55B,CAAAA,EAASA,CAAAA,CAAM,OAASmZ,CAAAA,CAAQ,SAAS,CAAA,CAAA,CAElEA,CAAAA,CAAQ,WAAA,GACVygB,CAAAA,CAAWA,EAAS,MAAA,CAAO55B,CAAAA,EAASA,EAAM,WAAA,GAAgBmZ,CAAAA,CAAQ,WAAW,CAAA,CAAA,CAE3EA,CAAAA,CAAQ,YACVygB,CAAAA,CAAWA,CAAAA,CAAS,OAAO55B,CAAAA,EAASA,CAAAA,CAAM,YAAcmZ,CAAAA,CAAQ,SAAS,GAG3E+iB,CAAAA,CAAkBtC,CAAQ,CAAA,CAC1BP,CAAAA,CAAe,CAAC,EAClB,EAEMiD,CAAAA,CAAe,IAAM,CACzB9C,CAAAA,CAAW,CACT,QAAS,EAAA,CACT,SAAA,CAAW,GACX,WAAA,CAAa,EAAA,CACb,UAAW,EAAA,CACX,WAAA,CAAa,GACb,QAAA,CAAU,EAAA,CACV,UAAW,EAAA,CACX,SAAA,CAAW,EAAA,CACX,OAAA,CAAS,EACX,CAAC,EACD0C,CAAAA,CAAkBtE,EAAU,EAC5ByB,CAAAA,CAAe,CAAC,EAClB,CAAA,CAEMl3B,CAAAA,CAAuBzF,GAAsB,CACjD,OAAQA,GACN,KAAK,OACH,OAAO,YAAA,CACT,KAAK,eAAA,CACH,OAAO,YAAA,CACT,KAAK,wBAAA,CACH,OAAO,mBACT,KAAK,8BAAA,CACH,OAAO,aAAA,CACT,QACE,OAAO,SACX,CACF,EAEM7G,CAAAA,CAAkBC,CAAAA,EAAmB,CACzC,OAAQA,CAAAA,EACN,KAAK,YAAA,CACH,OAAO,kBAAA,CACT,KAAK,QAAA,CACH,OAAO,cAAA,CACT,KAAK,cACH,OAAO,cAAA,CACT,QACE,OAAO,EACX,CACF,CAAA,CAGMod,CAAAA,CAAa,KAAK,IAAA,CAAK+oB,CAAAA,CAAe,OAASE,CAAW,CAAA,CAC1D/B,GAAchB,CAAAA,CAAc,CAAA,EAAK+C,EACjC9B,CAAAA,CAAWD,CAAAA,CAAa+B,CAAAA,CACxBI,CAAAA,CAAkBN,CAAAA,CAAe,KAAA,CAAM7B,EAAYC,CAAQ,CAAA,CAE3DmC,EAAoBC,CAAAA,EAAoB,CACxCA,GAAW,CAAA,EAAKA,CAAAA,EAAWvpB,GAC7BmmB,CAAAA,CAAeoD,CAAO,EAE1B,CAAA,CAEMC,CAAAA,CAA2BjqC,GAAkB,CACjD2pC,CAAAA,CAAe3pC,CAAK,CAAA,CACpB4mC,CAAAA,CAAe,CAAC,EAClB,CAAA,CAEA,OACE3kC,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,4CAEb,QAAA,CAAA,CAAApB,GAAAA,CAAC,OAAI,SAAA,CAAU,+FAAA,CACb,SAAAA,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wCAAA,CACb,QAAA,CAAAoB,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,oCACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,IAAA,CAAA,CAAG,SAAA,CAAU,oCAAA,CAAqC,QAAA,CAAA,QAAA,CAAM,EACzDoB,IAAAA,CAAC2R,EAAAA,CAAA,CACC,QAAA,CAAA,CAAA/S,GAAAA,CAACiT,GAAA,CAAa,OAAA,CAAO,KACnB,QAAA,CAAA7R,IAAAA,CAACwB,EAAA,CAAO,OAAA,CAAQ,UAAU,SAAA,CAAU,OAAA,CAClC,UAAA5C,GAAAA,CAACqmB,MAAAA,CAAA,CAAO,SAAA,CAAU,SAAA,CAAU,CAAA,CAAE,WAEhC,CAAA,CACF,CAAA,CACAjlB,KAACmS,EAAAA,CAAA,CAAa,KAAK,OAAA,CAAQ,SAAA,CAAU,qCACnC,QAAA,CAAA,CAAAvT,GAAAA,CAACyT,GAAA,CACC,QAAA,CAAAzT,IAAC2T,EAAAA,CAAA,CAAW,yBAAa,CAAA,CAC3B,CAAA,CAEAvS,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,gBAAA,CACb,UAAApB,GAAAA,CAACqH,CAAAA,CAAA,CACC,KAAA,CAAM,UAAA,CACN,MAAOwe,CAAAA,CAAQ,OAAA,CACf,SAAW9e,CAAAA,EAAMw/B,CAAAA,CAAmB,UAAWx/B,CAAAA,CAAE,MAAA,CAAO,KAAK,CAAA,CAC7D,WAAA,CAAY,iBACd,CAAA,CAEA/G,GAAAA,CAACqH,CAAAA,CAAA,CACC,KAAA,CAAM,YAAA,CACN,MAAOwe,CAAAA,CAAQ,SAAA,CACf,SAAW9e,CAAAA,EAAMw/B,CAAAA,CAAmB,YAAax/B,CAAAA,CAAE,MAAA,CAAO,KAAK,CAAA,CAC/D,WAAA,CAAY,mBACd,CAAA,CAEA/G,GAAAA,CAACyD,EAAA,CACC,KAAA,CAAM,eACN,KAAA,CAAOoiB,CAAAA,CAAQ,WAAA,CACf,aAAA,CAAgB1mB,CAAAA,EAAUonC,CAAAA,CAAmB,cAAepnC,CAAK,CAAA,CACjE,YAAY,qBAAA,CACZ,OAAA,CAAS,CACP,CAAE,KAAA,CAAO,OAAQ,KAAA,CAAO,MAAO,EAC/B,CAAE,KAAA,CAAO,cAAe,KAAA,CAAO,aAAc,EAC7C,CAAE,KAAA,CAAO,SAAA,CAAW,KAAA,CAAO,SAAU,CAAA,CACrC,CAAE,KAAA,CAAO,aAAA,CAAe,MAAO,aAAc,CAC/C,EACF,CAAA,CAEAa,GAAAA,CAACyD,EAAA,CACC,KAAA,CAAM,aACN,KAAA,CAAOoiB,CAAAA,CAAQ,UACf,aAAA,CAAgB1mB,CAAAA,EAAUonC,EAAmB,WAAA,CAAapnC,CAAK,CAAA,CAC/D,WAAA,CAAY,mBAAA,CACZ,OAAA,CAAS,CACP,CAAE,KAAA,CAAO,OAAQ,KAAA,CAAO,MAAO,EAC/B,CAAE,KAAA,CAAO,eAAA,CAAiB,KAAA,CAAO,eAAgB,CAAA,CACjD,CAAE,KAAA,CAAO,wBAAA,CAA0B,MAAO,wBAAyB,CAAA,CACnE,CAAE,KAAA,CAAO,8BAAA,CAAgC,KAAA,CAAO,8BAA+B,CACjF,CAAA,CACF,EAEAa,GAAAA,CAACyD,CAAAA,CAAA,CACC,KAAA,CAAM,cAAA,CACN,MAAOoiB,CAAAA,CAAQ,WAAA,CACf,cAAgB1mB,CAAAA,EAAUonC,CAAAA,CAAmB,cAAepnC,CAAK,CAAA,CACjE,YAAY,eAAA,CACZ,OAAA,CAAS,CACP,CAAE,KAAA,CAAO,YAAA,CAAc,KAAA,CAAO,YAAa,CAAA,CAC3C,CAAE,KAAA,CAAO,QAAA,CAAU,MAAO,QAAS,CAAA,CACnC,CAAE,KAAA,CAAO,aAAA,CAAe,MAAO,aAAc,CAC/C,EACF,CAAA,CAEAa,GAAAA,CAACqH,EAAA,CACC,KAAA,CAAM,WACN,KAAA,CAAOwe,CAAAA,CAAQ,QAAA,CACf,QAAA,CAAW9e,CAAAA,EAAMw/B,CAAAA,CAAmB,WAAYx/B,CAAAA,CAAE,MAAA,CAAO,KAAK,CAAA,CAC9D,WAAA,CAAY,sBACd,CAAA,CAEA/G,GAAAA,CAACyD,EAAA,CACC,KAAA,CAAM,aACN,KAAA,CAAOoiB,CAAAA,CAAQ,UACf,aAAA,CAAgB1mB,CAAAA,EAAUonC,EAAmB,WAAA,CAAapnC,CAAK,CAAA,CAC/D,WAAA,CAAY,mBAAA,CACZ,OAAA,CAAS,CACP,CAAE,KAAA,CAAO,YAAa,KAAA,CAAO,WAAY,EACzC,CAAE,KAAA,CAAO,WAAY,KAAA,CAAO,UAAW,EACvC,CAAE,KAAA,CAAO,UAAW,KAAA,CAAO,SAAU,CACvC,CAAA,CACF,CAAA,CAEAiC,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wBAAA,CACb,UAAApB,GAAAA,CAACqH,CAAAA,CAAA,CACC,KAAA,CAAM,YAAA,CACN,KAAK,MAAA,CACL,KAAA,CAAOwe,EAAQ,SAAA,CACf,QAAA,CAAW9e,GAAMw/B,CAAAA,CAAmB,WAAA,CAAax/B,EAAE,MAAA,CAAO,KAAK,EACjE,CAAA,CAEA/G,GAAAA,CAACqH,CAAAA,CAAA,CACC,KAAA,CAAM,UAAA,CACN,KAAK,MAAA,CACL,KAAA,CAAOwe,EAAQ,OAAA,CACf,QAAA,CAAW9e,GAAMw/B,CAAAA,CAAmB,SAAA,CAAWx/B,EAAE,MAAA,CAAO,KAAK,EAC/D,CAAA,CAAA,CACF,CAAA,CAAA,CACF,EAEA3F,IAAAA,CAACsS,EAAAA,CAAA,CAAY,SAAA,CAAU,OAAA,CACrB,QAAA,CAAA,CAAA1T,GAAAA,CAAC4C,CAAAA,CAAA,CAAO,QAAQ,SAAA,CAAU,OAAA,CAASomC,EAAc,QAAA,CAAA,eAAA,CAEjD,CAAA,CACAhpC,IAAC4C,CAAAA,CAAA,CAAO,QAASmmC,CAAAA,CAAc,QAAA,CAAA,eAAA,CAE/B,GACF,CAAA,CAAA,CACF,CAAA,CAAA,CACF,GACF,CAAA,CACF,CAAA,CACF,EAGA/oC,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wBAAA,CACb,QAAA,CAAAA,GAAAA,CAAC,OAAI,SAAA,CAAU,wDAAA,CACb,SAAAoB,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,qEAAA,CACb,QAAA,CAAA,CAAApB,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,uBACb,QAAA,CAAAoB,IAAAA,CAAC,SAAM,SAAA,CAAU,oBAAA,CACf,UAAAA,IAAAA,CAAC,UAAA,CAAA,CACC,QAAA,CAAA,CAAApB,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,OAAO,CAAA,CACtBA,GAAAA,CAAC,OAAI,SAAA,CAAU,MAAA,CAAO,EACtBA,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,MAAA,CAAO,CAAA,CACtBA,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,OAAO,CAAA,CACtBA,GAAAA,CAAC,OAAI,SAAA,CAAU,MAAA,CAAO,CAAA,CACtBA,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,OAAO,CAAA,CACtBA,GAAAA,CAAC,OAAI,SAAA,CAAU,QAAA,CAAS,GAC1B,CAAA,CACAA,GAAAA,CAAC,SAAM,SAAA,CAAU,qCAAA,CACf,SAAAoB,IAAAA,CAAC,IAAA,CAAA,CAAG,UAAU,UAAA,CACZ,QAAA,CAAA,CAAApB,IAAC,IAAA,CAAA,CAAG,SAAA,CAAU,qDAAA,CAAsD,QAAA,CAAA,UAAA,CAAQ,CAAA,CAC5EA,GAAAA,CAAC,MAAG,SAAA,CAAU,qDAAA,CAAsD,sBAAU,CAAA,CAC9EA,GAAAA,CAAC,MAAG,SAAA,CAAU,qDAAA,CAAsD,gBAAI,CAAA,CACxEA,GAAAA,CAAC,MAAG,SAAA,CAAU,qDAAA,CAAsD,kBAAM,CAAA,CAC1EA,GAAAA,CAAC,MAAG,SAAA,CAAU,qDAAA,CAAsD,QAAA,CAAA,cAAA,CAAY,CAAA,CAChFA,GAAAA,CAAC,IAAA,CAAA,CAAG,UAAU,qDAAA,CAAsD,QAAA,CAAA,YAAA,CAAU,EAC9EA,GAAAA,CAAC,IAAA,CAAA,CAAG,UAAU,qDAAA,CAAsD,QAAA,CAAA,aAAA,CAAW,GACjF,CAAA,CACF,CAAA,CACAA,IAAC,OAAA,CAAA,CACI,QAAA,CAAAipC,EAAgB,GAAA,CAAKv8B,CAAAA,EACpBtL,KAAC,IAAA,CAAA,CAEC,SAAA,CAAU,6DAAA,CACV,OAAA,CAAS,IAAMskC,CAAAA,CAAS,WAAWh5B,CAAAA,CAAM,EAAE,EAAE,CAAA,CAE7C,QAAA,CAAA,CAAA1M,IAAC,IAAA,CAAA,CAAG,SAAA,CAAU,oBAAqB,QAAA,CAAA0M,CAAAA,CAAM,GAAG,CAAA,CAC5C1M,GAAAA,CAAC,MAAG,SAAA,CAAU,mBAAA,CAAqB,SAAA0M,CAAAA,CAAM,SAAA,CAAU,CAAA,CACnD1M,GAAAA,CAAC,IAAA,CAAA,CAAG,SAAA,CAAU,YACZ,QAAA,CAAAA,GAAAA,CAACsB,EAAA,CAAM,OAAA,CAASuN,EAAoBnC,CAAAA,CAAM,IAAI,EAAG,SAAA,CAAU,mBAAA,CACxD,SAAAA,CAAAA,CAAM,IAAA,CACT,EACF,CAAA,CACA1M,GAAAA,CAAC,MAAG,SAAA,CAAU,WAAA,CACZ,QAAA,CAAAA,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAWlB,EAAG,qBAAA,CAAuByD,CAAAA,CAAemK,EAAM,MAAM,CAAC,EACpE,QAAA,CAAAA,CAAAA,CAAM,OACT,CAAA,CACF,CAAA,CACA1M,IAAC,IAAA,CAAA,CAAG,SAAA,CAAU,YACZ,QAAA,CAAAA,GAAAA,CAACsB,EAAA,CAAM,OAAA,CAAQ,SAAA,CAAU,SAAA,CAAU,mBAAA,CAChC,QAAA,CAAAoL,EAAM,WAAA,CACT,CAAA,CACF,EACA1M,GAAAA,CAAC,IAAA,CAAA,CAAG,UAAU,WAAA,CACX,QAAA,CAAA0M,CAAAA,CAAM,SAAA,EACL1M,GAAAA,CAACsB,CAAAA,CAAA,CAAM,OAAA,CAAQ,SAAA,CAAU,UAAU,mBAAA,CAChC,QAAA,CAAAoL,EAAM,SAAA,CACT,CAAA,CAEJ,CAAA,CACA1M,GAAAA,CAAC,IAAA,CAAA,CAAG,SAAA,CAAU,6BACX,QAAA,CAAA0M,CAAAA,CAAM,YACT,CAAA,CAAA,CAAA,CA9BKA,CAAAA,CAAM,EA+Bb,CACH,CAAA,CACH,GACF,CAAA,CACF,CAAA,CAGA1M,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,6CACb,QAAA,CAAAoB,IAAAA,CAAC,OAAI,SAAA,CAAU,mCAAA,CACf,QAAA,CAAA,CAAAA,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,0BACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,QAAK,SAAA,CAAU,+BAAA,CAAgC,0BAAc,CAAA,CAC9DoB,IAAAA,CAAC++B,GAAA,CACC,QAAA,CAAA,CAAAngC,IAACogC,EAAAA,CAAA,CAAoB,QAAO,IAAA,CAC1B,QAAA,CAAAh/B,KAACwB,CAAAA,CAAA,CAAO,OAAA,CAAQ,SAAA,CAAU,IAAA,CAAK,IAAA,CAAK,UAAU,WAAA,CAC3C,QAAA,CAAA,CAAAimC,EACD7oC,GAAAA,CAACsM,YAAAA,CAAA,CAAa,SAAA,CAAU,mBAAA,CAAoB,GAC9C,CAAA,CACF,CAAA,CACAlL,KAACi/B,EAAAA,CAAA,CAAoB,MAAM,OAAA,CAAQ,SAAA,CAAU,qBAC3C,QAAA,CAAA,CAAArgC,GAAAA,CAACugC,EAAAA,CAAA,CAAiB,OAAA,CAAS,IAAM6I,EAAwB,GAAG,CAAA,CAAG,eAE/D,CAAA,CACAppC,GAAAA,CAACugC,GAAA,CAAiB,OAAA,CAAS,IAAM6I,CAAAA,CAAwB,GAAG,EAAG,QAAA,CAAA,KAAA,CAE/D,CAAA,CACAppC,IAACugC,EAAAA,CAAA,CAAiB,QAAS,IAAM6I,CAAAA,CAAwB,GAAG,CAAA,CAAG,QAAA,CAAA,KAAA,CAE/D,CAAA,CAAA,CACF,GACF,CAAA,CAAA,CACF,CAAA,CAEAhoC,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,0BACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,QAAK,SAAA,CAAU,+BAAA,CAAgC,kBACxC0kC,CAAAA,CAAY,MAAA,CAAKlmB,GACzB,CAAA,CACAxe,IAAAA,CAAC,OAAI,SAAA,CAAU,yBAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC4C,CAAAA,CAAA,CACC,QAAQ,SAAA,CACR,IAAA,CAAK,KACL,SAAA,CAAU,aAAA,CACV,QAAS,IAAMsmC,CAAAA,CAAiBpD,EAAc,CAAC,CAAA,CAC/C,SAAUA,CAAAA,GAAgB,CAAA,CAE1B,SAAA9lC,GAAAA,CAAC+f,WAAAA,CAAA,CAAY,SAAA,CAAU,SAAA,CAAU,CAAA,CACnC,CAAA,CACA/f,GAAAA,CAAC4C,CAAAA,CAAA,CACC,OAAA,CAAQ,SAAA,CACR,KAAK,IAAA,CACL,SAAA,CAAU,cACV,OAAA,CAAS,IAAMsmC,EAAiBpD,CAAAA,CAAc,CAAC,EAC/C,QAAA,CAAUA,CAAAA,GAAgBlmB,EAE1B,QAAA,CAAA5f,GAAAA,CAACsM,aAAA,CAAa,SAAA,CAAU,SAAA,CAAU,CAAA,CACpC,CAAA,CAAA,CACJ,CAAA,CAAA,CACF,GACF,CAAA,CACF,CAAA,CAAA,CACF,EACE,CAAA,CACF,CAAA,CAAA,CACF,CAEJ,CAAA,CAEO+8B,EAAAA,CAAQX,GCrWR,IAAMY,EAAAA,CAAyC,CACpD,CACE,EAAA,CAAI,SAAA,CACJ,aAAc,gBAAA,CACd,WAAA,CAAa,2CACb,SAAA,CAAW,MAAA,CACX,OAAQ,QAAA,CACR,IAAA,CAAM,WACN,OAAA,CAAS,UAAA,CACT,qBAAsB,IAAA,CACtB,QAAA,CAAU,QACV,MAAA,CAAQ,oTAAA,CACR,OAAA,CAAS,YAAA,CACT,QAAA,CAAU,YACZ,EACA,CACE,EAAA,CAAI,UACJ,YAAA,CAAc,uBAAA,CACd,YAAa,+CAAA,CACb,SAAA,CAAW,OACX,MAAA,CAAQ,QAAA,CACR,KAAM,UAAA,CACN,OAAA,CAAS,MACT,oBAAA,CAAsB,KAAA,CACtB,SAAU,OAAA,CACV,MAAA,CAAQ,0KAAA,CACR,OAAA,CAAS,YAAA,CACT,QAAA,CAAU,YACZ,CAAA,CACA,CACE,GAAI,SAAA,CACJ,YAAA,CAAc,mCACd,WAAA,CAAa,sCAAA,CACb,UAAW,WAAA,CACX,MAAA,CAAQ,SACR,IAAA,CAAM,YAAA,CACN,QAAS,UAAA,CACT,oBAAA,CAAsB,KACtB,QAAA,CAAU,OAAA,CACV,MAAA,CAAQ,4IAAA,CACR,OAAA,CAAS,YAAA,CACT,SAAU,YACZ,CAAA,CACA,CACE,EAAA,CAAI,SAAA,CACJ,aAAc,qBAAA,CACd,WAAA,CAAa,yCACb,SAAA,CAAW,WAAA,CACX,OAAQ,kBAAA,CACR,IAAA,CAAM,WACN,OAAA,CAAS,UAAA,CACT,qBAAsB,KAAA,CACtB,QAAA,CAAU,OAAA,CACV,MAAA,CAAQ,2IAAA,CACR,OAAA,CAAS,aACT,QAAA,CAAU,YACZ,EACA,CACE,EAAA,CAAI,UACJ,YAAA,CAAc,2BAAA,CACd,YAAa,iCAAA,CACb,SAAA,CAAW,OACX,MAAA,CAAQ,QAAA,CACR,KAAM,YAAA,CACN,OAAA,CAAS,MACT,oBAAA,CAAsB,IAAA,CACtB,QAAA,CAAU,OAAA,CACV,MAAA,CAAQ,8IAAA,CACR,QAAS,YAAA,CACT,QAAA,CAAU,YACZ,CACF,CAAA,CC3DA,IAAMvqB,GAA+C,CACnD,CACE,IAAK,IAAA,CACL,KAAA,CAAO,cACP,QAAA,CAAU,IACZ,CAAA,CACA,CACE,GAAA,CAAK,cAAA,CACL,MAAO,eAAA,CACP,QAAA,CAAU,IACZ,CAAA,CACA,CACE,IAAK,aAAA,CACL,KAAA,CAAO,eACP,QAAA,CAAU,IAAA,CACV,OAAS5f,CAAAA,EACPa,GAAAA,CAAC,QAAK,SAAA,CAAU,6CAAA,CACb,SAAAb,CAAAA,CACH,CAEJ,CAAA,CACA,CACE,GAAA,CAAK,WAAA,CACL,MAAO,YAAA,CACP,QAAA,CAAU,KACV,MAAA,CAASA,CAAAA,EAAUa,IAAC8c,EAAAA,CAAA,CAAe,MAAA,CAAQ3d,CAAAA,CAAc,CAC3D,CAAA,CACA,CACE,GAAA,CAAK,QAAA,CACL,MAAO,QAAA,CACP,QAAA,CAAU,KACV,MAAA,CAASA,CAAAA,EAAUa,GAAAA,CAAC0c,EAAAA,CAAA,CAAY,MAAA,CAASvd,GAAkB,WAAA,EAAY,CAAU,CACnF,CAAA,CACA,CACE,IAAK,SAAA,CACL,KAAA,CAAO,UACP,QAAA,CAAU,IACZ,EACA,CACE,GAAA,CAAK,WACL,KAAA,CAAO,UAAA,CACP,SAAU,IACZ,CACF,CAAA,CAEaoqC,EAAAA,CAAiB,CAAC,CAC7B,QAAA1jB,CAAAA,CACA,UAAA,CAAA2jB,EACA,MAAA,CAAAxqB,CAAAA,CACA,cAAAC,CAAAA,CACA,cAAA,CAAA6G,EACA,cAAA,CAAAC,CAAAA,CACA,OAAA7G,CAAAA,CACA,UAAA,CAAAC,EACA,gBAAA,CAAAsqB,CACF,IAEIroC,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,2CAAA,CAEb,QAAA,CAAA,CAAApB,GAAAA,CAAC,OAAI,SAAA,CAAU,+FAAA,CACb,SAAAA,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wCAAA,CACb,QAAA,CAAAoB,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,oCACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,OACC,QAAA,CAAAA,GAAAA,CAAC,MAAG,SAAA,CAAU,yCAAA,CAA0C,QAAA,CAAA,YAAA,CAAU,CAAA,CACpE,CAAA,CACAoB,IAAAA,CAAC,OAAI,SAAA,CAAU,yBAAA,CACb,UAAApB,GAAAA,CAAC4lB,EAAAA,CAAA,CACC,OAAA,CAASC,CAAAA,CACT,eAAgBC,CAAAA,CAChB,cAAA,CAAgBC,EAClB,CAAA,CACA/lB,GAAAA,CAAC4C,EAAA,CAAO,OAAA,CAAS6mC,EAAkB,QAAA,CAAA,iBAAA,CAEnC,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CACF,CAAA,CACF,CAAA,CAGAzpC,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yBACb,QAAA,CAAAA,GAAAA,CAAC,OAAI,SAAA,CAAU,wDAAA,CACb,SAAAA,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,2BAAA,CACb,QAAA,CAAAA,IAAC8e,EAAAA,CAAA,CACC,QAASC,EAAAA,CACT,IAAA,CAAMyqB,CAAAA,CACN,MAAA,CAAQxqB,CAAAA,CACR,aAAA,CAAeC,EACf,MAAA,CAAQC,CAAAA,CACR,WAAYC,CAAAA,CACd,CAAA,CACF,EACF,CAAA,CACF,CAAA,CAAA,CACF,EC1GJ,IAAMuqB,EAAAA,CAAa,IAAM,CACvB,IAAMhE,EAAWC,WAAAA,EAAY,CAEvB,CAAC9f,CAAAA,CAASqgB,CAAU,CAAA,CAAIlgC,SAA0B,CACtD,IAAA,CAAM,GACN,WAAA,CAAa,EAAA,CACb,OAAQ,EAAA,CACR,gBAAA,CAAkB,OAClB,cAAA,CAAgB,MAClB,CAAC,CAAA,CAEK,CAACgZ,EAAQukB,CAAS,CAAA,CAAIv9B,SAAiB,SAAS,CAAA,CAChD,CAACiZ,CAAAA,CAAewkB,CAAgB,CAAA,CAAIz9B,SAAyB,MAAM,CAAA,CAEnE2jC,EAAejb,OAAAA,CAAQ,IACpB4a,GAAmB,MAAA,CAAO9kB,CAAAA,EAAY,CAO3C,GANIqB,CAAAA,CAAQ,MAAQ,CAACrB,CAAAA,CAAS,aAAa,WAAA,EAAY,CAAE,SAASqB,CAAAA,CAAQ,IAAA,CAAK,WAAA,EAAa,CAAA,EAGxFA,CAAAA,CAAQ,aAAe,CAACrB,CAAAA,CAAS,YAAY,WAAA,EAAY,CAAE,SAASqB,CAAAA,CAAQ,WAAA,CAAY,aAAa,CAAA,EAGrGA,EAAQ,MAAA,EAAUrB,CAAAA,CAAS,OAAO,WAAA,EAAY,GAAMqB,EAAQ,MAAA,CAAO,WAAA,EAAY,CACjF,OAAO,MAAA,CAET,GAAIA,EAAQ,gBAAA,EAAoBA,CAAAA,CAAQ,eAAgB,CACtD,IAAM+jB,EAAU,IAAI,IAAA,CAAKplB,EAAS,OAAO,CAAA,CAIzC,GAHIqB,CAAAA,CAAQ,gBAAA,EAAoB+jB,EAAU/jB,CAAAA,CAAQ,gBAAA,EAG9CA,EAAQ,cAAA,EAAkB+jB,CAAAA,CAAU/jB,CAAAA,CAAQ,cAAA,CAC9C,OAAO,MAEX,CACA,OAAO,KACT,CAAC,CAAA,CACA,CAACA,CAAO,CAAC,CAAA,CAEN2jB,EAAa9a,OAAAA,CAAQ,IAClB,CAAC,GAAGib,CAAY,EAAE,IAAA,CAAK,CAACnF,EAAGqF,CAAAA,GAAM,CACtC,IAAMC,CAAAA,CAAStF,CAAAA,CAAExlB,CAAgC,EAC3C+qB,CAAAA,CAASF,CAAAA,CAAE7qB,CAAgC,CAAA,CAEjD,OAAI8qB,EAASC,CAAAA,CAAe9qB,CAAAA,GAAkB,MAAQ,EAAA,CAAK,CAAA,CACvD6qB,EAASC,CAAAA,CAAe9qB,CAAAA,GAAkB,MAAQ,CAAA,CAAI,EAAA,CACnD,CACT,CAAC,CAAA,CACA,CAAC0qB,CAAAA,CAAc3qB,CAAAA,CAAQC,CAAa,CAAC,CAAA,CAElCsnB,CAAAA,CAAqB/0B,YAAY,CAACpB,CAAAA,CAA8BjR,IAAqC,CACzG+mC,CAAAA,CAAWz0B,IAAS,CAAE,GAAGA,EAAM,CAACrB,CAAK,EAAGjR,CAAM,CAAA,CAAE,EAClD,CAAA,CAAG,EAAE,CAAA,CAEC6pC,CAAAA,CAAex3B,WAAAA,CAAY,IAAM,CACrC00B,CAAAA,CAAW,CACT,IAAA,CAAM,EAAA,CACN,YAAa,EAAA,CACb,MAAA,CAAQ,GACR,gBAAA,CAAkB,MAAA,CAClB,eAAgB,MAClB,CAAC,EACH,CAAA,CAAG,EAAE,CAAA,CAEC3mB,CAAAA,CAAa/N,WAAAA,CAAahF,CAAAA,EAAgB,CAC1CwS,CAAAA,GAAWxS,EACbi3B,CAAAA,CAAiBhyB,CAAAA,EAAQA,IAAS,KAAA,CAAQ,MAAA,CAAS,KAAK,CAAA,EAExD8xB,CAAAA,CAAU/2B,CAAG,CAAA,CACbi3B,CAAAA,CAAiB,KAAK,CAAA,EAE1B,CAAA,CAAG,CAACzkB,CAAM,CAAC,EAELwnB,CAAAA,CAAiBh1B,WAAAA,CAAagT,CAAAA,EAA+B,CACjEkhB,CAAAA,CAAS,CAAA,UAAA,EAAalhB,EAAS,EAAE,CAAA,CAAE,EACrC,CAAA,CAAG,CAACkhB,CAAQ,CAAC,CAAA,CAEPsE,CAAAA,CAAuBx4B,WAAAA,CAAY,IAAM,CAC7Ck0B,EAAS,kBAAkB,EAC7B,EAAG,CAACA,CAAQ,CAAC,CAAA,CAEb,OACE1lC,GAAAA,CAACupC,EAAAA,CAAA,CACC,OAAA,CAAS1jB,EACT,UAAA,CAAY2jB,CAAAA,CACZ,OAAQxqB,CAAAA,CACR,aAAA,CAAeC,EACf,cAAA,CAAgBsnB,CAAAA,CAChB,eAAgByC,CAAAA,CAChB,MAAA,CAAQzpB,EACR,UAAA,CAAYinB,CAAAA,CACZ,iBAAkBwD,CAAAA,CACpB,CAEJ,EAEOC,EAAAA,CAAQP,GCvGR,IAAMQ,GAAkE,CAC7E,OAAA,CAAW,CACT,UAAA,CAAY,SAAA,CACZ,qBAAsB,IAAA,CACtB,QAAA,CAAU,QACV,MAAA,CAAQ,oTACV,CAAA,CACA,OAAA,CAAW,CACT,UAAA,CAAY,UACZ,oBAAA,CAAsB,KAAA,CACtB,SAAU,OAAA,CACV,MAAA,CAAQ,0KACV,CAAA,CACA,OAAA,CAAW,CACT,UAAA,CAAY,SAAA,CACZ,qBAAsB,IAAA,CACtB,QAAA,CAAU,QACV,MAAA,CAAQ,4IACV,EACA,OAAA,CAAW,CACT,UAAA,CAAY,SAAA,CACZ,oBAAA,CAAsB,KAAA,CACtB,SAAU,OAAA,CACV,MAAA,CAAQ,2IACV,CAAA,CACA,OAAA,CAAW,CACT,UAAA,CAAY,SAAA,CACZ,qBAAsB,IAAA,CACtB,QAAA,CAAU,QACV,MAAA,CAAQ,8IACV,CACF,CAAA,CC9BO,IAAMC,GAA0C,CACrD,OAAA,CAAW,CACT,CACE,EAAA,CAAI,SAAA,CACJ,KAAM,YAAA,CACN,KAAA,CAAO,gBACP,mBAAA,CAAqB,EAAA,CACrB,WAAY,UACd,CAAA,CACA,CACE,EAAA,CAAI,SAAA,CACJ,KAAM,eAAA,CACN,KAAA,CAAO,mBACP,mBAAA,CAAqB,EAAA,CACrB,WAAY,UACd,CAAA,CACA,CACE,EAAA,CAAI,SAAA,CACJ,IAAA,CAAM,eACN,KAAA,CAAO,KAAA,CACP,oBAAqB,EAAA,CACrB,UAAA,CAAY,UACd,CACF,CAAA,CACA,QAAW,CACT,CACE,GAAI,SAAA,CACJ,IAAA,CAAM,cACN,KAAA,CAAO,mBAAA,CACP,oBAAqB,EAAA,CACrB,UAAA,CAAY,UACd,CAAA,CACA,CACE,EAAA,CAAI,UACJ,IAAA,CAAM,eAAA,CACN,MAAO,cAAA,CACP,mBAAA,CAAqB,GACrB,UAAA,CAAY,UACd,CACF,CACF,CAAA,CCrCO,IAAMC,EAAAA,CAA4D,CACvE,QAAW,CACT,CACE,GAAI,SAAA,CACJ,IAAA,CAAM,kCAAA,CACN,IAAA,CAAM,kBAAA,CACN,WAAA,CAAa,sDACb,IAAA,CAAM,QAAA,CACN,WAAY,YAAA,CACZ,UAAA,CAAY,uBACZ,GAAA,CAAK,8BACP,EACA,CACE,EAAA,CAAI,UACJ,IAAA,CAAM,yBAAA,CACN,KAAM,cAAA,CACN,WAAA,CAAa,8BACb,IAAA,CAAM,QAAA,CACN,UAAA,CAAY,eAAA,CACZ,UAAA,CAAY,sBAAA,CACZ,IAAK,8BACP,CAAA,CACA,CACE,EAAA,CAAI,SAAA,CACJ,KAAM,4BAAA,CACN,IAAA,CAAM,mBACN,WAAA,CAAa,mCAAA,CACb,KAAM,QAAA,CACN,UAAA,CAAY,aACZ,UAAA,CAAY,sBAAA,CACZ,IAAK,8BACP,CAAA,CACA,CACE,EAAA,CAAI,SAAA,CACJ,IAAA,CAAM,0BACN,IAAA,CAAM,OAAA,CACN,YAAa,wCAAA,CACb,IAAA,CAAM,SACN,UAAA,CAAY,YAAA,CACZ,WAAY,sBAAA,CACZ,GAAA,CAAK,8BACP,CACF,CAAA,CACA,QAAW,CACT,CACE,GAAI,SAAA,CACJ,IAAA,CAAM,2BAAA,CACN,IAAA,CAAM,kBAAA,CACN,IAAA,CAAM,SACN,UAAA,CAAY,aAAA,CACZ,WAAY,sBAAA,CACZ,GAAA,CAAK,8BACP,CACF,CACF,EC/DO,IAAMC,EAAAA,CAAwD,CACnE,OAAA,CAAW,CACT,KAAM,gBAAA,CACN,SAAA,CAAW,EACX,cAAA,CAAgB,KAAA,CAChB,QAAA,CAAU,YAAA,CACV,GAAA,CAAK,YAAA,CACL,mBAAoB,aAAA,CACpB,kBAAA,CAAoB,WACpB,aAAA,CAAe,YAAA,CACf,QAAS,uBAAA,CACT,GAAA,CAAK,OACL,KAAA,CAAO,QAAA,CACP,YAAa,mBAAA,CACb,YAAA,CAAc,aACd,sBAAA,CAAwB,MAAA,CACxB,sBAAuB,OAAA,CACvB,kBAAA,CAAoB,0BAAA,CACpB,kBAAA,CAAoB,mBAAA,CACpB,OAAA,CAAS,CACP,KAAA,CAAO,kBAAA,CACP,MAAO,WAAA,CACP,IAAA,CAAM,WACN,KAAA,CAAO,IAAA,CACP,WAAY,OAAA,CACZ,WAAA,CAAa,IACf,CACF,CAAA,CACA,QAAW,CACT,IAAA,CAAM,wBACN,SAAA,CAAW,CAAA,CACX,cAAA,CAAgB,KAAA,CAChB,QAAA,CAAU,YAAA,CACV,mBAAoB,2BAAA,CACpB,kBAAA,CAAoB,aACpB,aAAA,CAAe,YAAA,CACf,QAAS,6BAAA,CACT,GAAA,CAAK,OACL,KAAA,CAAO,QAAA,CACP,YAAa,mBAAA,CACb,sBAAA,CAAwB,OACxB,qBAAA,CAAuB,KAAA,CACvB,mBAAoB,8BAAA,CACpB,kBAAA,CAAoB,mBAAA,CACpB,OAAA,CAAS,CACP,KAAA,CAAO,kBACP,IAAA,CAAM,eAAA,CACN,MAAO,IAAA,CACP,UAAA,CAAY,QACZ,WAAA,CAAa,IACf,CACF,CAAA,CACA,OAAA,CAAW,CACT,IAAA,CAAM,kCAAA,CACN,UAAW,CAAA,CACX,cAAA,CAAgB,MAChB,QAAA,CAAU,YAAA,CACV,kBAAA,CAAoB,aAAA,CACpB,kBAAA,CAAoB,OAAA,CACpB,cAAe,YAAA,CACf,OAAA,CAAS,iCACT,GAAA,CAAK,MAAA,CACL,MAAO,QAAA,CACP,WAAA,CAAa,mBAAA,CACb,sBAAA,CAAwB,QAAA,CACxB,qBAAA,CAAuB,YACvB,kBAAA,CAAoB,+BAAA,CACpB,mBAAoB,mBAAA,CACpB,OAAA,CAAS,CACP,KAAA,CAAO,qBAAA,CACP,IAAA,CAAM,SAAA,CACN,KAAA,CAAO,IAAA,CACP,WAAY,OAAA,CACZ,WAAA,CAAa,IACf,CACF,CAAA,CACA,QAAW,CACT,IAAA,CAAM,sBACN,SAAA,CAAW,CAAA,CACX,eAAgB,KAAA,CAChB,QAAA,CAAU,aACV,kBAAA,CAAoB,aAAA,CACpB,mBAAoB,YAAA,CACpB,aAAA,CAAe,YAAA,CACf,OAAA,CAAS,2BAAA,CACT,GAAA,CAAK,OACL,KAAA,CAAO,QAAA,CACP,YAAa,mBAAA,CACb,YAAA,CAAc,aACd,sBAAA,CAAwB,OAAA,CACxB,sBAAuB,SAAA,CACvB,kBAAA,CAAoB,kCACpB,kBAAA,CAAoB,mBAAA,CACpB,QAAS,CACP,KAAA,CAAO,gBACP,KAAA,CAAO,YAAA,CACP,IAAA,CAAM,SAAA,CACN,KAAA,CAAO,IAAA,CACP,WAAY,OAAA,CACZ,WAAA,CAAa,IACf,CACF,CAAA,CACA,QAAW,CACT,IAAA,CAAM,4BACN,SAAA,CAAW,CAAA,CACX,eAAgB,KAAA,CAChB,QAAA,CAAU,aACV,GAAA,CAAK,KAAA,CACL,mBAAoB,2BAAA,CACpB,kBAAA,CAAoB,SAAA,CACpB,aAAA,CAAe,YAAA,CACf,OAAA,CAAS,kCACT,GAAA,CAAK,MAAA,CACL,MAAO,QAAA,CACP,WAAA,CAAa,oBACb,sBAAA,CAAwB,SAAA,CACxB,sBAAuB,MAAA,CACvB,kBAAA,CAAoB,uBACpB,kBAAA,CAAoB,mBAAA,CACpB,QAAS,CACP,KAAA,CAAO,mBACP,IAAA,CAAM,OAAA,CACN,KAAA,CAAO,IAAA,CACP,UAAA,CAAY,OAAA,CACZ,YAAa,IACf,CACF,CACF,CAAA,CCvHO,IAAMC,GAA8B,CACzC,CACE,GAAI,mBAAA,CACJ,OAAA,CAAS,uBACT,QAAA,CAAU,cAAA,CACV,WAAY,YAAA,CACZ,UAAA,CAAY,aACZ,OAAA,CAAS,IAAA,CACT,MAAA,CAAQ,UACV,CAAA,CACA,CACE,GAAI,UAAA,CACJ,OAAA,CAAS,uBACT,QAAA,CAAU,SAAA,CACV,WAAY,kBAAA,CACZ,UAAA,CAAY,WACZ,OAAA,CAAS,SAAA,CACT,OAAQ,SACV,CAAA,CACA,CACE,EAAA,CAAI,UAAA,CACJ,QAAS,sBAAA,CACT,QAAA,CAAU,SAAA,CACV,UAAA,CAAY,wBAAA,CACZ,UAAA,CAAY,WACZ,OAAA,CAAS,SAAA,CACT,OAAQ,QACV,CAAA,CACA,CACE,EAAA,CAAI,UAAA,CACJ,QAAS,sBAAA,CACT,QAAA,CAAU,UACV,UAAA,CAAY,YAAA,CACZ,WAAY,YAAA,CACZ,OAAA,CAAS,KACT,MAAA,CAAQ,UACV,CAAA,CACA,CACE,EAAA,CAAI,UAAA,CACJ,QAAS,sBAAA,CACT,QAAA,CAAU,UACV,UAAA,CAAY,yBAAA,CACZ,WAAY,UAAA,CACZ,OAAA,CAAS,UACT,MAAA,CAAQ,WACV,EACA,CACE,EAAA,CAAI,WACJ,OAAA,CAAS,sBAAA,CACT,SAAU,SAAA,CACV,UAAA,CAAY,UAAA,CACZ,UAAA,CAAY,YAAA,CACZ,OAAA,CAAS,KACT,MAAA,CAAQ,UACV,EACA,CACE,EAAA,CAAI,WACJ,OAAA,CAAS,sBAAA,CACT,SAAU,QAAA,CACV,UAAA,CAAY,8BACZ,UAAA,CAAY,cAAA,CACZ,QAAS,SAAA,CACT,MAAA,CAAQ,QACV,CAAA,CACA,CACE,EAAA,CAAI,UAAA,CACJ,OAAA,CAAS,sBAAA,CACT,SAAU,SAAA,CACV,UAAA,CAAY,oBACZ,UAAA,CAAY,UAAA,CACZ,QAAS,IAAA,CACT,MAAA,CAAQ,UACV,CAAA,CACA,CACE,GAAI,UAAA,CACJ,OAAA,CAAS,uBACT,QAAA,CAAU,SAAA,CACV,WAAY,gBAAA,CACZ,UAAA,CAAY,YAAA,CACZ,OAAA,CAAS,SAAA,CACT,MAAA,CAAQ,SACV,CAAA,CACA,CACE,GAAI,UAAA,CACJ,OAAA,CAAS,uBACT,QAAA,CAAU,QAAA,CACV,WAAY,0BAAA,CACZ,UAAA,CAAY,eACZ,OAAA,CAAS,SAAA,CACT,OAAQ,QACV,CAAA,CACA,CACE,EAAA,CAAI,UAAA,CACJ,OAAA,CAAS,sBAAA,CACT,QAAA,CAAU,SAAA,CACV,WAAY,wBAAA,CACZ,UAAA,CAAY,WACZ,OAAA,CAAS,IAAA,CACT,OAAQ,UACV,CACF,ECpFA,IAAMC,EAAAA,CAAiB,IAAM,CAC3B,GAAM,CAAE,EAAA,CAAAplC,CAAG,EAAIiiC,SAAAA,EAAU,CACnB1B,EAAWC,WAAAA,EAAY,CAGvBjhB,EAAe,IAAA,CAGf,CAACnd,EAAWuJ,CAAY,CAAA,CAAI9K,QAAAA,CAAS,IAAI,CAAA,CACzC,CAAC3C,EAAO6N,CAAQ,CAAA,CAAIlL,SAAwB,IAAI,CAAA,CAGhDwe,EAAW8kB,EAAAA,CAAmB,IAAA,CAAKO,GAAKA,CAAAA,CAAE,EAAA,GAAO1kC,CAAE,CAAA,CAGnDgW,CAAAA,CAAuBhW,EAAK+kC,EAAAA,CAA0B/kC,CAAE,EAAI,MAAA,CAG5DqlC,CAAAA,CAAcrlC,CAAAA,CAAKglC,EAAAA,CAAiBhlC,CAAE,CAAA,EAAK,EAAC,CAAI,GAGhDslC,CAAAA,CAAmBtlC,CAAAA,CAAKilC,GAAsBjlC,CAAE,CAAA,EAAK,EAAC,CAAI,GAG1DulC,CAAAA,CAAwCvlC,CAAAA,CAC1CqgC,GACG,MAAA,CAAOxiB,CAAAA,EAAOA,EAAI,UAAA,GAAe7d,CAAE,CAAA,CACnC,GAAA,CAAI6d,CAAAA,GAAQ,CACX,GAAIA,CAAAA,CAAI,EAAA,CACR,cAAeA,CAAAA,CAAI,MAAA,CACnB,cAAeA,CAAAA,CAAI,aAAA,CACnB,QAAA,CAAUA,CAAAA,CAAI,WAAA,CACd,eAAA,CAAiBA,EAAI,IAAA,CAAK,WAAA,EAC5B,CAAA,CAAE,CAAA,CACJ,EAAC,CAGC2nB,CAAAA,CAAiBxlC,CAAAA,CAAKklC,EAAAA,CAAqBllC,CAAE,CAAA,CAAI,OAGjDgf,CAAAA,CAAahf,CAAAA,CACfmlC,GACG,MAAA,CAAOh9B,CAAAA,EAASA,EAAM,QAAA,GAAanI,CAAAA,EAAMmI,EAAM,UAAA,GAAe,UAAU,EACxE,IAAA,CAAK,CAACk3B,EAAGqF,EAAAA,GAAM,IAAI,KAAKA,EAAAA,CAAE,OAAO,CAAA,CAAE,OAAA,EAAQ,CAAI,IAAI,KAAKrF,CAAAA,CAAE,OAAO,EAAE,OAAA,EAAS,EAAE,CAAC,CAAA,CAClF,OAGE,CAAC1f,CAAAA,CAAeuiB,CAAgB,CAAA,CAAIrhC,QAAAA,CAASwe,GAAU,MAAA,EAAU,QAAQ,EACzE,CAACO,CAAAA,CAAkB6lB,CAAmB,CAAA,CAAI5kC,QAAAA,CAAS,KAAK,EACxD,CAACye,CAAAA,CAAiBomB,CAAkB,CAAA,CAAI7kC,QAAAA,CAC5C2kC,CACF,CAAA,CACM,CAAChmB,EAAcmmB,CAAe,CAAA,CAAI9kC,SAASwkC,CAAW,CAAA,CACtD,CAAC3lB,CAAAA,CAAkBkmB,CAAmB,EAAI/kC,QAAAA,CAA+B0kC,CAAe,CAAA,CAGxF,CAACnvB,EAAAA,CAAoBiT,EAAqB,EAAIxoB,QAAAA,CAAS,KAAK,EAC5D,CAAC0V,CAAAA,CAAkBsvB,CAAmB,CAAA,CAAIhlC,QAAAA,CAAwB,IAAI,CAAA,CACtE,CAACyV,EAAmBwvB,CAAoB,CAAA,CAAIjlC,SAAS,KAAK,CAAA,CAC1D,CAAC4e,CAAAA,CAAmBsmB,CAAoB,CAAA,CAAIllC,QAAAA,CAA6BykC,CAAgB,CAAA,CAGzFU,GAAW,IAAM,CACrBr6B,EAAa,IAAI,CAAA,CACjBI,EAAS,IAAI,CAAA,CAGb,WAAW,IAAM,CACVsT,GACHtT,CAAAA,CAAS,oBAAoB,EAE/BJ,CAAAA,CAAa,KAAK,EACpB,CAAA,CAAG,GAAG,EACR,CAAA,CAEAO,SAAAA,CAAU,IAAM,CACd85B,EAAAA,GACF,EAAG,CAAChmC,CAAE,CAAC,CAAA,CAGP,IAAM4iC,EAAsBpD,CAAAA,EAAsB,CAChD0C,EAAiB1C,CAAS,EAE5B,EAEMyG,EAAAA,CAA0B,IAAM,CACpCR,CAAAA,CAAoB,CAAC7lB,CAAgB,EACvC,CAAA,CAEMsmB,EAAAA,CAA2BC,GAAoC,CACnET,CAAAA,CAAmBS,CAAc,CAAA,CAEjC,OAAA,CAAQ,IAAI,kBAAA,CAAoBA,CAAc,EAChD,CAAA,CAEMC,EAAAA,CAA2B,IAAM,CACrC7F,CAAAA,CAAS,wBAAwBvgC,CAAE,CAAA,sBAAA,CAAwB,EAC7D,CAAA,CAEMqmC,EAAAA,CAA+B,IAAM,CACzC9F,CAAAA,CAAS,CAAA,yBAAA,EAA4BvgC,CAAE,CAAA,sBAAA,CAAwB,EACjE,EAEMsmC,EAAAA,CAAwBC,CAAAA,EAAyB,CAEnDhG,CAAAA,CADEgG,CAAAA,CACO,oBAAoBA,CAAW,CAAA,CAAA,CAE/B,kBAFiC,EAI9C,CAAA,CAEMC,GAAmB,MAAOrgC,CAAAA,EAA0B,CAExD,GAAIuZ,CAAAA,CAAiB,MAAA,EAAU,CAAA,CAC7B,OAAA9f,KAAAA,CAAM,MAAM,sCAAsC,CAAA,CAC3C,MAKT,IAAM6mC,EAAAA,CAAe,OAAO,IAAA,CAAK,GAAA,EAAK,CAAA,CAAA,CAChCrkB,EAAAA,CAAAA,CAAiBjc,EAAK,kBAAA,EAAsB,EAAA,EAAI,MAAK,EAAK,QAAA,CAEhEy/B,EAAoBt5B,EAAAA,EAAQ,CAC1B,GAAGA,EAAAA,CACH,CACE,EAAA,CAAIm6B,GACJ,aAAA,CAAArkB,EAAAA,CACA,cAAe,QAAA,CACf,QAAA,CAAA,CAAWjc,EAAK,WAAA,EAAe,EAAA,EAAI,MAAK,EAAK,QAAA,CAC7C,iBAAkBA,CAAAA,CAAK,WAAA,EAAe,YAAY,WAAA,EACpD,CACF,CAAC,CAAA,CAEDvG,KAAAA,CAAM,OAAA,CAAQ,wBAAwB,EACxC,EAEM8mC,EAAAA,CAAsB,MAAOC,GAAsB,CAEvD,MAAM,IAAI,OAAA,CAAQjH,EAAAA,EAAW,WAAWA,EAAAA,CAAS,GAAG,CAAC,CAAA,CAErDkG,CAAAA,CAAoBt5B,IAAQA,EAAAA,CAAK,MAAA,CAAOuR,IAAOA,EAAAA,CAAI,EAAA,GAAO8oB,CAAS,CAAC,CAAA,CACpE/mC,KAAAA,CAAM,QAAQ,0BAA0B,EAC1C,EAEMgnC,EAAAA,CAAkB1F,CAAAA,EAAuB,CAC7CX,CAAAA,CAAS,CAAA,UAAA,EAAaW,CAAU,CAAA,CAAE,EACpC,EAEM5jB,EAAAA,CAAmBC,CAAAA,EAAkB,CACzCooB,CAAAA,CAAgBr5B,EAAAA,EAAQA,GAAK,MAAA,CAAOu6B,EAAAA,EAAOA,EAAAA,CAAI,EAAA,GAAOtpB,CAAK,CAAC,EAE5D,OAAA,CAAQ,GAAA,CAAI,eAAgBA,CAAK,EACnC,EAEMF,EAAAA,CAAe,MAAOlX,GAAsB,CAChD,IAAM2gC,GAAW,CAAA,IAAA,EAAO,IAAA,CAAK,KAAK,CAAA,CAAA,CAC5BC,IAAS5gC,CAAAA,CAAK,cAAA,EAAkB,EAAA,EAAI,IAAA,EAAK,CACzC6gC,EAAAA,CAAAA,CAAQ7gC,EAAK,aAAA,EAAiB,EAAA,EAAI,MAAK,CACvC5C,EAAAA,CAAO,CAACwjC,EAAAA,CAAOC,EAAI,EAAE,MAAA,CAAO,OAAO,EAAE,IAAA,CAAK,GAAG,GAAK,aAAA,CAExDrB,CAAAA,CAAgBr5B,IAAQ,CACtB,GAAGA,EAAAA,CACH,CACE,EAAA,CAAIw6B,EAAAA,CACJ,KAAAvjC,EAAAA,CACA,KAAA,CAAA,CAAQ4C,EAAK,KAAA,EAAS,EAAA,EAAI,MAAK,CAC/B,mBAAA,CAAqBA,EAAK,mBAAA,EAAuB,CAAA,CAGjD,WAAY2gC,EACd,CACF,CAAC,CAAA,CAEDlnC,KAAAA,CAAM,QAAQ,wBAAwB,EACxC,CAAA,CAEMqnC,EAAAA,CAAwBC,CAAAA,EAAsB,CAClD3G,EAAS,CAAA,UAAA,EAAa2G,CAAS,EAAE,EACnC,CAAA,CAEMC,GAAuB,UAE3B,MAAM,IAAI,OAAA,CAAQzH,CAAAA,EAAW,UAAA,CAAWA,EAAS,GAAG,CAAC,EAE9CpgB,CAAAA,EAAiB,QAAA,EAAY,eAGhC8nB,EAAAA,CAAiC,SAAY,CACjD,GAAIhxB,EAAAA,CAEFiT,EAAAA,CAAsB,KAAK,CAAA,CAC3Bwc,CAAAA,CAAoB,IAAI,CAAA,CAAA,KACnB,CAELC,EAAqB,IAAI,CAAA,CACzB,GAAI,CACF,IAAMuB,EAAc,MAAMF,EAAAA,GAC1BtB,CAAAA,CAAoBwB,CAAW,EAC/Bhe,EAAAA,CAAsB,CAAA,CAAI,EAC5B,CAAA,MAASnrB,CAAAA,CAAO,CACd,QAAQ,KAAA,CAAM,6BAAA,CAA+BA,CAAK,EACpD,CAAA,OAAE,CACA4nC,CAAAA,CAAqB,KAAK,EAC5B,CACF,CACF,EAEMwB,EAAAA,CAAuB,MAC3B1jC,EACA2jC,EAAAA,GACG,CAEH,MAAM,IAAI,OAAA,CAAQ7H,EAAAA,EAAW,UAAA,CAAWA,EAAAA,CAAS,GAAI,CAAC,CAAA,CAGtD,IAAM8H,GAAgC,CACpC,EAAA,CAAI,OAAO,IAAA,CAAK,GAAA,EAAK,CAAA,CAAA,CACrB,IAAA,CAAMD,GAAS,IAAA,CACf,IAAA,CAAMA,GAAS,IAAA,CACf,WAAA,CAAaA,GAAS,WAAA,CACtB,IAAA,CAAM,CAAA,EAAA,CAAI3jC,CAAAA,CAAK,IAAA,CAAO,IAAA,CAAO,MAAM,OAAA,CAAQ,CAAC,CAAC,CAAA,GAAA,CAAA,CAC7C,UAAA,CAAY,eACZ,UAAA,CAAY,IAAI,MAAK,CAAE,WAAA,EACzB,CAAA,CAGAmiC,CAAAA,CAAqBz5B,IAAQ,CAAC,GAAGA,GAAMk7B,EAAW,CAAC,CAAA,CAGnD,OAAA,CAAQ,GAAA,CAAI,oBAAA,CAAsB,CAAE,IAAA,CAAA5jC,CAAAA,CAAM,SAAA2jC,EAAAA,CAAU,WAAA,CAAAC,EAAY,CAAC,EACnE,EAEMC,EAAAA,CAAuB,MAAOC,GAAuB,CAEzD,MAAM,IAAI,OAAA,CAAQhI,EAAAA,EAAW,WAAWA,EAAAA,CAAS,GAAG,CAAC,CAAA,CAErDqG,CAAAA,CAAqBz5B,EAAAA,EAAQA,GAAK,MAAA,CAAO5I,EAAAA,EAAOA,GAAI,EAAA,GAAOgkC,CAAU,CAAC,CAAA,CAGtE9nC,KAAAA,CAAM,QAAQ,kBAAkB,EAClC,EAEM+nC,EAAAA,CAAc,IAAM,CACxB3B,EAAAA,GACF,EAGA,OAAI5jC,CAAAA,CAEAnG,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,+DAAA,CACb,UAAApB,GAAAA,CAACgc,OAAAA,CAAA,CAAQ,SAAA,CAAU,4CAAA,CAA6C,EAChEhc,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,uBAAA,CAAwB,QAAA,CAAA,YAAA,CAAU,GACjD,CAAA,CAKAqD,CAAAA,EAAS,CAACmhB,CAAAA,CAEVxkB,GAAAA,CAAC,OAAI,SAAA,CAAU,6BAAA,CACb,QAAA,CAAAoB,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,gEACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,OAAI,SAAA,CAAU,0CAAA,CACb,UAAApB,GAAAA,CAACuY,WAAAA,CAAA,CAAY,SAAA,CAAU,SAAA,CAAU,EACjCvY,GAAAA,CAAC,MAAA,CAAA,CAAK,UAAU,aAAA,CAAe,QAAA,CAAAqD,GAAS,oBAAA,CAAqB,CAAA,CAAA,CAC/D,CAAA,CACArD,GAAAA,CAAC,GAAA,CAAA,CAAE,SAAA,CAAU,wBAAwB,QAAA,CAAA,mCAAA,CAAiC,CAAA,CACtEA,IAAC4C,CAAAA,CAAA,CAAO,QAAQ,SAAA,CAAU,OAAA,CAASkqC,GAAa,QAAA,CAAA,OAAA,CAEhD,CAAA,CAAA,CACF,EACF,CAAA,CAKF9sC,GAAAA,CAACukB,GAAA,CACC,QAAA,CAAUC,EACV,eAAA,CAAiBC,CAAAA,CACjB,oBAAA,CAAsBtJ,CAAAA,CACtB,UAAA,CAAYgJ,CAAAA,CACZ,iBAAkBsnB,EAAAA,CAClB,YAAA,CAAc/mB,EACd,YAAA,CAAcC,CAAAA,CACd,kBAAmBC,CAAAA,CACnB,gBAAA,CAAkBC,EAClB,aAAA,CAAeC,CAAAA,CACf,iBAAkBC,CAAAA,CAClB,aAAA,CAAetW,GACf,yBAAA,CAA2BC,EAAAA,CAC3B,eAAgBq5B,CAAAA,CAChB,mBAAA,CAAqBsD,EAAAA,CACrB,mBAAA,CAAqBD,EAAAA,CACrB,oBAAA,CAAsBG,GACtB,wBAAA,CAA0BC,EAAAA,CAC1B,aAAcG,EAAAA,CACd,eAAA,CAAiBE,GACjB,UAAA,CAAYE,EAAAA,CACZ,SAAUvpB,EAAAA,CACV,WAAA,CAAaC,GACb,gBAAA,CAAkBgqB,EAAAA,CAClB,iBAAkBG,EAAAA,CAClB,gBAAA,CAAkBR,GAClB,gBAAA,CAAkBE,EAAAA,CAClB,kBAAA,CAAoB/wB,EAAAA,CACpB,0BAAA,CAA4BgxB,EAAAA,CAC5B,kBAAmB9wB,CAAAA,CACnB,gBAAA,CAAkBC,EACpB,CAEJ,CAAA,CAEOqxB,GAAQxC,GC3Uf,IAAMyC,EAAAA,CAA6C,CACjD,IAAA,CAAM,EAAA,CACN,UAAW,CAAA,CACX,cAAA,CAAgB,GAChB,QAAA,CAAU,EAAA,CACV,IAAK,EAAA,CACL,kBAAA,CAAoB,GACpB,kBAAA,CAAoB,EAAA,CACpB,aAAA,CAAe,EAAA,CACf,OAAA,CAAS,EAAA,CACT,aAAc,EAAA,CACd,WAAA,CAAa,GACb,GAAA,CAAK,EAAA,CACL,MAAO,EAAA,CACP,sBAAA,CAAwB,GACxB,qBAAA,CAAuB,EAAA,CACvB,mBAAoB,EAAA,CACpB,kBAAA,CAAoB,GACpB,OAAA,CAAS,CACP,MAAO,EAAA,CACP,KAAA,CAAO,EAAA,CACP,IAAA,CAAM,EAAA,CACN,KAAA,CAAO,GACP,UAAA,CAAY,EAAA,CACZ,YAAa,IAAA,CACb,IAAA,CAAM,SACR,CACF,CAAA,CAEMC,GAAiB,IAAM,CAC3B,IAAMvH,CAAAA,CAAWC,WAAAA,GACX,CAACpf,CAAAA,CAAc2mB,CAAe,CAAA,CAAIlnC,QAAAA,CAAS,EAAE,CAAA,CAE7CwJ,CAAAA,CAAOuB,OAAAA,CAAyB,CACpC,QAAA,CAAUC,WAAAA,CAAYgK,EAAqB,CAAA,CAC3C,aAAA,CAAegyB,EACjB,CAAC,CAAA,CAEK9qB,EAAW1Q,WAAAA,CAAalG,CAAAA,EAA0B,CACtD,OAAA,CAAQ,GAAA,CAAI,iBAAkBA,CAAI,CAAA,CAClCo6B,EAAS,WAAW,EACtB,CAAA,CAAG,CAACA,CAAQ,CAAC,EAEP/zB,CAAAA,CAAeH,WAAAA,CAAY,IAAM,CACrCk0B,CAAAA,CAAS,WAAW,EACtB,CAAA,CAAG,CAACA,CAAQ,CAAC,EAEPyH,CAAAA,CAA2B37B,WAAAA,CAAarS,GAAkB,CAC9D+tC,CAAAA,CAAgB/tC,CAAK,CAAA,CACrBqQ,CAAAA,CAAK,QAAA,CAAS,oBAAA,CAAsBrQ,CAAAA,CAAO,CAAE,eAAgB,IAAK,CAAC,EACrE,CAAA,CAAG,CAACqQ,CAAI,CAAC,CAAA,CAET,OACExP,GAAAA,CAACymB,EAAAA,CAAA,CACC,IAAA,CAAMjX,CAAAA,CACN,aAAc+W,CAAAA,CACd,oBAAA,CAAsB4mB,EACtB,QAAA,CAAUjrB,CAAAA,CACV,QAAA,CAAUvQ,CAAAA,CACZ,CAEJ,CAAA,CAEOy7B,GAAQH,GCpEf,IAAMI,GAAQ,IAEVrtC,GAAAA,CAACge,GAAA,CACC,KAAA,CAAM,QACN,WAAA,CAAY,sCAAA,CAEZ,SAAAhe,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,yCAAA,CAA0C,QAAA,CAAA,2BAAA,CAEzD,CAAA,CACF,CAAA,CAIGstC,EAAAA,CAAQD,GCAR,IAAME,EAAAA,CAAiD,CAC5D,CACE,EAAA,CAAI,SACJ,IAAA,CAAM,kBAAA,CACN,KAAM,UAAA,CACN,MAAA,CAAQ,SACR,SAAA,CAAW,UAAA,CACX,WAAY,SAAA,CACZ,YAAA,CAAc,WACd,OAAA,CAAS,YAAA,CACT,QAAA,CAAU,YACZ,CAAA,CACA,CACE,GAAI,QAAA,CACJ,IAAA,CAAM,aACN,IAAA,CAAM,YAAA,CACN,OAAQ,QAAA,CACR,UAAA,CAAY,UACZ,UAAA,CAAY,SAAA,CACZ,aAAc,UAAA,CACd,OAAA,CAAS,aACT,QAAA,CAAU,YACZ,EACA,CACE,EAAA,CAAI,QAAA,CACJ,IAAA,CAAM,uBAAA,CACN,IAAA,CAAM,WACN,MAAA,CAAQ,QAAA,CACR,cAAe,cAAA,CACf,UAAA,CAAY,UACZ,YAAA,CAAc,UAAA,CACd,QAAS,YAAA,CACT,QAAA,CAAU,YACZ,CAAA,CACA,CACE,GAAI,QAAA,CACJ,IAAA,CAAM,2BACN,IAAA,CAAM,UAAA,CACN,MAAA,CAAQ,QAAA,CACR,YAAA,CAAc,SAAA,CACd,WAAY,SAAA,CACZ,YAAA,CAAc,WACd,OAAA,CAAS,YAAA,CACT,SAAU,YACZ,CAAA,CACA,CACE,EAAA,CAAI,QAAA,CACJ,KAAM,gBAAA,CACN,IAAA,CAAM,aACN,MAAA,CAAQ,QAAA,CACR,UAAW,UAAA,CACX,UAAA,CAAY,SAAA,CACZ,YAAA,CAAc,UAAA,CACd,OAAA,CAAS,aACT,QAAA,CAAU,YACZ,EACA,CACE,EAAA,CAAI,SACJ,IAAA,CAAM,eAAA,CACN,KAAM,YAAA,CACN,MAAA,CAAQ,UACR,aAAA,CAAe,cAAA,CACf,QAAS,YAAA,CACT,QAAA,CAAU,YACZ,CAAA,CACA,CACE,EAAA,CAAI,QAAA,CACJ,IAAA,CAAM,sBAAA,CACN,KAAM,UAAA,CACN,MAAA,CAAQ,WACR,UAAA,CAAY,SAAA,CACZ,QAAS,YAAA,CACT,QAAA,CAAU,YACZ,CAAA,CACA,CACE,GAAI,QAAA,CACJ,IAAA,CAAM,4BACN,IAAA,CAAM,UAAA,CACN,OAAQ,QAAA,CACR,SAAA,CAAW,UAAA,CACX,OAAA,CAAS,YAAA,CACT,QAAA,CAAU,YACZ,CAAA,CACA,CACE,GAAI,QAAA,CACJ,IAAA,CAAM,eACN,IAAA,CAAM,YAAA,CACN,OAAQ,QAAA,CACR,YAAA,CAAc,UACd,OAAA,CAAS,YAAA,CACT,SAAU,YACZ,CAAA,CACA,CACE,EAAA,CAAI,QAAA,CACJ,IAAA,CAAM,kBAAA,CACN,IAAA,CAAM,UAAA,CACN,OAAQ,QAAA,CACR,aAAA,CAAe,eACf,OAAA,CAAS,YAAA,CACT,SAAU,YACZ,CACF,EC1GA,IAAM3Y,EAAAA,CAAuC,CAC3C,UAAA,CAAY,sBAAA,CACZ,UAAA,CAAY,iBAAA,CACZ,UAAA,CAAY,uBACd,EAEMkQ,EAAAA,CAAyC,CAC7C,UAAW,oBAAA,CACX,SAAA,CAAW,kBACb,CAAA,CAEMC,EAAAA,CAA0C,CAC9C,SAAA,CAAW,qBAAA,CACX,UAAW,mBACb,CAAA,CAEMyI,GAAiB,IAAM,CAC3B,IAAM9H,CAAAA,CAAWC,WAAAA,EAAY,CACvB,CAACC,CAAY,CAAA,CAAIC,iBAAgB,CACjC,CAACZ,EAAgBwI,CAAiB,CAAA,CAAIznC,SAAmC,EAAE,EAC3E,CAACgZ,CAAAA,CAAQukB,CAAS,CAAA,CAAIv9B,QAAAA,CAAiB,SAAS,CAAA,CAChD,CAACiZ,EAAewkB,CAAgB,CAAA,CAAIz9B,QAAAA,CAAyB,MAAM,CAAA,CACnE,CAAC6f,EAASqgB,CAAU,CAAA,CAAIlgC,SAAS,CACrC,IAAA,CAAM,GACN,IAAA,CAAM,EAAA,CACN,OAAQ,EAAA,CACR,gBAAA,CAAkB,OAClB,cAAA,CAAgB,MAClB,CAAC,CAAA,CAGDqL,SAAAA,CAAU,IAAM,CAAA,CACe,SAAY,CACvC,IAAMg0B,CAAAA,CAAW,MAAM,QAAQ,GAAA,CAC7BkI,EAAAA,CAAuB,IAAI,MAAOjI,CAAAA,EAAiB,CACjD,IAAIC,CAAAA,CAAmB,EAAA,CACnB93B,CAAAA,CAAuE,IAAA,CAG3E,OAAI63B,EAAa,SAAA,EACfC,CAAAA,CAAmB3Q,GAAa0Q,CAAAA,CAAa,SAAS,GAAKA,CAAAA,CAAa,SAAA,CACxE73B,CAAAA,CAAa,SAAA,EACJ63B,CAAAA,CAAa,UAAA,EACtBC,EAAmBT,EAAAA,CAAeQ,CAAAA,CAAa,UAAU,CAAA,EAAKA,CAAAA,CAAa,WAC3E73B,CAAAA,CAAa,UAAA,EACJ63B,EAAa,YAAA,EACtBC,CAAAA,CAAmBR,GAAgBO,CAAAA,CAAa,YAAY,GAAKA,CAAAA,CAAa,YAAA,CAC9E73B,EAAa,YAAA,EACJ63B,CAAAA,CAAa,aAAA,GACtBC,CAAAA,CAAmBD,CAAAA,CAAa,aAAA,CAChC73B,EAAa,SAAA,CAAA,CAGR,CACL,GAAG63B,CAAAA,CACH,gBAAA,CAAAC,EACA,UAAA,CAAA93B,CACF,CACF,CAAC,CACH,EAEAggC,CAAAA,CAAkBpI,CAAQ,EAC5B,CAAA,IAGF,EAAG,EAAE,CAAA,CAGL,IAAMqI,CAAAA,CAAyBhf,OAAAA,CAAQ,IAAM,CAC3C,IAAM2X,EAAaT,CAAAA,CAAa,GAAA,CAAI,YAAY,CAAA,CAC5CU,CAAAA,CAAWrB,EAGf,OAAIoB,CAAAA,GACFC,EAAWA,CAAAA,CAAS,MAAA,CAAOqH,GAAMA,CAAAA,CAAG,UAAA,GAAetH,CAAU,CAAA,CAAA,CAI3DxgB,CAAAA,CAAQ,IAAA,GACVygB,CAAAA,CAAWA,CAAAA,CAAS,MAAA,CAAOqH,GACzBA,CAAAA,CAAG,IAAA,CAAK,aAAY,CAAE,QAAA,CAAS9nB,EAAQ,IAAA,CAAK,WAAA,EAAa,CAC3D,CAAA,CAAA,CAEEA,EAAQ,IAAA,GACVygB,CAAAA,CAAWA,EAAS,MAAA,CAAOqH,CAAAA,EAAMA,EAAG,IAAA,GAAS9nB,CAAAA,CAAQ,IAAI,CAAA,CAAA,CAEvDA,CAAAA,CAAQ,MAAA,GACVygB,EAAWA,CAAAA,CAAS,MAAA,CAAOqH,GAAMA,CAAAA,CAAG,MAAA,GAAW9nB,EAAQ,MAAM,CAAA,CAAA,CAE3DA,EAAQ,gBAAA,GACVygB,CAAAA,CAAWA,EAAS,MAAA,CAAOqH,CAAAA,EACzB,IAAI,IAAA,CAAKA,CAAAA,CAAG,OAAO,CAAA,EAAK9nB,CAAAA,CAAQ,gBAClC,CAAA,CAAA,CAEEA,CAAAA,CAAQ,cAAA,GACVygB,EAAWA,CAAAA,CAAS,MAAA,CAAOqH,GACzB,IAAI,IAAA,CAAKA,EAAG,OAAO,CAAA,EAAK9nB,EAAQ,cAClC,CAAA,CAAA,CAGKygB,CACT,CAAA,CAAG,CAACrB,EAAgBpf,CAAAA,CAAS+f,CAAY,CAAC,CAAA,CAGpCgI,CAAAA,CAAuBlf,OAAAA,CAAQ,IAC5B,CAAC,GAAGgf,CAAsB,CAAA,CAAE,IAAA,CAAK,CAAClJ,CAAAA,CAAGqF,CAAAA,GAAM,CAChD,IAAMC,CAAAA,CAAStF,EAAExlB,CAAsC,CAAA,CACjD+qB,EAASF,CAAAA,CAAE7qB,CAAsC,EAEvD,OAAI8qB,CAAAA,CAASC,EAAe9qB,CAAAA,GAAkB,KAAA,CAAQ,EAAA,CAAK,CAAA,CACvD6qB,CAAAA,CAASC,CAAAA,CAAe9qB,IAAkB,KAAA,CAAQ,CAAA,CAAI,GACnD,CACT,CAAC,EACA,CAACyuB,CAAAA,CAAwB1uB,EAAQC,CAAa,CAAC,EAG5CsnB,CAAAA,CAAqB/0B,WAAAA,CAAY,CAACpB,CAAAA,CAAejR,CAAAA,GAAqC,CAC1F+mC,CAAAA,CAAWz0B,CAAAA,GAAS,CAAE,GAAGA,CAAAA,CAAM,CAACrB,CAAK,EAAGjR,CAAM,EAAE,EAClD,CAAA,CAAG,EAAE,CAAA,CAECinB,EAAqB5U,WAAAA,CAAY,IAAM,CAC3C00B,CAAAA,CAAW,CACT,KAAM,EAAA,CACN,IAAA,CAAM,GACN,MAAA,CAAQ,EAAA,CACR,gBAAA,CAAkB,MAAA,CAClB,cAAA,CAAgB,MAClB,CAAC,EACH,CAAA,CAAG,EAAE,CAAA,CAEC3mB,EAAa/N,WAAAA,CAAahF,CAAAA,EAAgB,CAC1CwS,CAAAA,GAAWxS,CAAAA,CACbi3B,EAAiBhyB,CAAAA,EAAQA,CAAAA,GAAS,MAAQ,MAAA,CAAS,KAAK,GAExD8xB,CAAAA,CAAU/2B,CAAG,CAAA,CACbi3B,CAAAA,CAAiB,KAAK,CAAA,EAE1B,EAAG,CAACzkB,CAAM,CAAC,CAAA,CAELwnB,CAAAA,CAAiBh1B,YAAa8zB,CAAAA,EAAyC,CAC3EI,EAAS,CAAA,cAAA,EAAiBJ,CAAAA,CAAa,EAAE,CAAA,CAAE,EAC7C,EAAG,CAACI,CAAQ,CAAC,CAAA,CAEPmI,CAAAA,CAA2Br8B,WAAAA,CAAY,IAAM,CACjDk0B,CAAAA,CAAS,sBAAsB,EACjC,CAAA,CAAG,CAACA,CAAQ,CAAC,EAGP3mB,CAAAA,CAAqD,CACzD,CACE,GAAA,CAAK,MAAA,CACL,MAAO,MAAA,CACP,QAAA,CAAU,KACV,MAAA,CAAQ,CAAC5f,EAAO2O,CAAAA,GACd1M,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yBAAA,CACZ,QAAA,CAAA,CAAA0M,EAAI,IAAA,GAAS,UAAA,CACZ9N,IAACmY,SAAAA,CAAA,CAAU,UAAU,6CAAA,CAA8C,CAAA,CAEnEnY,IAACgd,IAAAA,CAAA,CAAK,UAAU,6CAAA,CAA8C,CAAA,CAEhEhd,IAAC,MAAA,CAAA,CAAM,QAAA,CAAAb,EAAgB,CAAA,CAAA,CACzB,CAEJ,CAAA,CACA,CACE,GAAA,CAAK,QAAA,CACL,MAAO,QAAA,CACP,QAAA,CAAU,KACV,MAAA,CAASA,CAAAA,EACPa,IAAC0c,EAAAA,CAAA,CAAY,OAAQvd,CAAAA,CAA0D,CAEnF,EACA,CACE,GAAA,CAAK,mBACL,KAAA,CAAO,mBAAA,CACP,SAAU,IAAA,CACV,MAAA,CAAQ,CAACA,CAAAA,CAAO2O,CAAAA,GAiBZ1M,IAAAA,CAAC,OAAI,SAAA,CAAU,yBAAA,CACZ,WAjBiB,IAAM,CAC1B,OAAQ0M,CAAAA,CAAI,UAAA,EACV,KAAK,SAAA,CACH,OAAO9N,GAAAA,CAAC8tC,OAAAA,CAAA,CAAQ,SAAA,CAAU,6CAAA,CAA8C,EAC1E,KAAK,UAAA,CACH,OAAO9tC,GAAAA,CAACmY,SAAAA,CAAA,CAAU,UAAU,6CAAA,CAA8C,CAAA,CAC5E,KAAK,YAAA,CACH,OAAOnY,IAACgd,IAAAA,CAAA,CAAK,SAAA,CAAU,6CAAA,CAA8C,CAAA,CACvE,KAAK,UACH,OAAOhd,GAAAA,CAAC2lB,OAAA,CAAO,SAAA,CAAU,8CAA8C,CAAA,CACzE,QACE,OAAO,IACX,CACF,CAAA,IAKI3lB,GAAAA,CAAC,MAAA,CAAA,CAAK,UAAU,6CAAA,CACb,QAAA,CAAAb,EACH,CAAA,CAAA,CACF,CAGN,EACA,CACE,GAAA,CAAK,UACL,KAAA,CAAO,SAAA,CACP,SAAU,IACZ,CAAA,CACA,CACE,GAAA,CAAK,UAAA,CACL,KAAA,CAAO,UAAA,CACP,QAAA,CAAU,IACZ,CACF,CAAA,CAGMynB,CAAAA,CAAQ8H,QAAQ,IACpB1uB,GAAAA,CAAC8e,GAAA,CACC,OAAA,CAASC,EACT,IAAA,CAAM6uB,CAAAA,CACN,OAAQ5uB,CAAAA,CACR,aAAA,CAAeC,EACf,MAAA,CAAQM,CAAAA,CACR,WAAYinB,CAAAA,CACd,CAAA,CACC,CAACznB,CAAAA,CAAS6uB,CAAAA,CAAsB5uB,CAAAA,CAAQC,EAAeM,CAAAA,CAAYinB,CAAc,CAAC,CAAA,CAErF,OACExmC,IAAC2mB,EAAAA,CAAA,CACC,MAAOC,CAAAA,CACP,OAAA,CAASf,EACT,cAAA,CAAgB0gB,CAAAA,CAChB,eAAgBngB,CAAAA,CAChB,oBAAA,CAAsBynB,EACxB,CAEJ,CAAA,CAEOE,EAAAA,CAAQP,GC9Of,IAAM/kB,GAA+C,CACnD,CACE,KAAM,KAAA,CACN,IAAA,CAAM,UAAA,CACN,aAAA,CAAe,cAAA,CACf,QAAA,CAAU,aACV,WAAA,CAAa,UACf,EACA,CACE,IAAA,CAAM,gBACN,IAAA,CAAM,UAAA,CACN,cAAe,cAAA,CACf,QAAA,CAAU,iBACZ,CAAA,CACA,CACE,KAAM,oBAAA,CACN,IAAA,CAAM,WACN,aAAA,CAAe,wBAAA,CACf,mBAAA,CAAqB,aAAA,CACrB,mBAAA,CAAqB,YAAA,CACrB,mBAAoB,WACtB,CACF,EAEMulB,EAAAA,CAAqB,IAAM,CAC/B,GAAM,CAAE,GAAA7oC,CAAG,CAAA,CAAIiiC,WAAU,CACnB1B,CAAAA,CAAWC,aAAY,CAGvBL,CAAAA,CAAeiI,GAAuB,IAAA,CAAKU,CAAAA,EAAKA,CAAAA,CAAE,EAAA,GAAO9oC,CAAE,CAAA,CAG3D+oC,EAAwB/oC,CAAAA,CAAKilC,EAAAA,CAAsBjlC,CAAE,CAAA,EAAK,GAAK,EAAC,CAGhE,CAAC2f,CAAAA,CAAeuiB,CAAgB,EAAIrhC,QAAAA,CAASs/B,CAAAA,EAAc,QAAU,QAAQ,CAAA,CAG7E,CAACvgB,CAAAA,CAAkB6lB,CAAmB,CAAA,CAAI5kC,QAAAA,CAAS,KAAK,CAAA,CAGxDmoC,EAAwB,IAA8B,CAC1D,GAAI,CAAC7I,CAAAA,CACH,OAAO,CACL,MAAA,CAAQ,aACR,OAAA,CAAS,EAAA,CACT,MAAO,EAAA,CACP,KAAA,CAAO,GACP,WAAA,CAAa,EAAA,CACb,SAAU,EAAA,CACV,OAAA,CAAS,CACP,KAAA,CAAO,EAAA,CACP,KAAA,CAAO,GACP,IAAA,CAAM,EAAA,CACN,MAAO,EAAA,CACP,UAAA,CAAY,GACZ,WAAA,CAAa,IAAA,CACb,KAAM,EACR,CACF,EAIF,IAAI8I,CAAAA,CAA4E,aAC5EC,CAAAA,CAAU,EAAA,CAEd,OAAI/I,CAAAA,CAAa,SAAA,EACf8I,CAAAA,CAAS,YAAA,CACTC,CAAAA,CAAU/I,CAAAA,CAAa,WACdA,CAAAA,CAAa,UAAA,EACtB8I,EAAS,aAAA,CACTC,CAAAA,CAAU/I,EAAa,UAAA,EACdA,CAAAA,CAAa,cACtB8I,CAAAA,CAAS,eAAA,CACTC,EAAU/I,CAAAA,CAAa,YAAA,EACdA,EAAa,aAAA,GACtB8I,CAAAA,CAAS,iBACTC,CAAAA,CAAU/I,CAAAA,CAAa,aAAA,CAAA,CAGlB,CACL,MAAA,CAAA8I,CAAAA,CACA,QAAAC,CAAAA,CACA,KAAA,CAAO,GACP,KAAA,CAAO,EAAA,CACP,YAAa,EAAA,CACb,QAAA,CAAU,GACV,OAAA,CAAS,CACP,MAAO,EAAA,CACP,KAAA,CAAO,GACP,IAAA,CAAM,EAAA,CACN,MAAO,EAAA,CACP,UAAA,CAAY,EAAA,CACZ,WAAA,CAAa,IAAA,CACb,IAAA,CAAM,EACR,CACF,CACF,EAEM,CAAC7lB,CAAAA,CAAyB8lB,CAA0B,CAAA,CAAItoC,QAAAA,CAAiCmoC,GAAuB,CAAA,CAGhHI,EAAoB,CAAC9gC,CAAAA,CAAoBC,IAAqB,CAClE,OAAQD,GACN,KAAK,aAAA,CACHi4B,CAAAA,CAAS,CAAA,UAAA,EAAah4B,CAAQ,EAAE,CAAA,CAChC,MACF,KAAK,eAAA,CACHg4B,CAAAA,CAAS,eAAeh4B,CAAQ,CAAA,CAAE,EAClC,MACF,KAAK,iBACHg4B,CAAAA,CAAS,CAAA,SAAA,EAAYh4B,CAAQ,CAAA,CAAE,CAAA,CAC/B,MAGJ,CACF,CAAA,CAEMq6B,CAAAA,CAAsBpD,CAAAA,EAAsB,CAChD0C,CAAAA,CAAiB1C,CAAgB,EACnC,CAAA,CAEMyG,CAAAA,CAA0B,IAAM,CACpCR,CAAAA,CAAoB,CAAC7lB,CAAgB,EACvC,EAEMsmB,CAAAA,CAA2B3a,CAAAA,EAAoC,CACnE4d,CAAAA,CAA2B5d,CAAO,EACpC,CAAA,CAEM8d,CAAAA,CAAyB,IAAM,CACnC,OAAA,CAAQ,GAAA,CAAI,oBAAoB,EAClC,CAAA,CAEMC,EAAoB,IAAM,CAC9B,QAAQ,GAAA,CAAI,cAAc,EAC5B,CAAA,CAGA,OAAKnJ,EAYHtlC,GAAAA,CAACqoB,EAAAA,CAAA,CACC,gBAAA,CAAkBid,CAAAA,CAAa,KAC/B,gBAAA,CAAkBA,CAAAA,CAAa,IAAA,CAC/B,aAAA,CAAexgB,CAAAA,CACf,gBAAA,CAAkBC,EAClB,uBAAA,CAAyByD,CAAAA,CACzB,mBAAoBC,EAAAA,CACpB,SAAA,CAAWylB,EACX,cAAA,CAAgBnG,CAAAA,CAChB,mBAAA,CAAqBqD,CAAAA,CACrB,mBAAA,CAAqBC,CAAAA,CACrB,mBAAoBmD,CAAAA,CACpB,aAAA,CAAeC,EACf,aAAA,CAAeF,CAAAA,CACjB,EAxBEvuC,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,6BAAA,CACb,QAAA,CAAAoB,IAAAA,CAAC,OAAI,SAAA,CAAU,aAAA,CACb,UAAApB,GAAAA,CAAC,IAAA,CAAA,CAAG,UAAU,yBAAA,CAA0B,QAAA,CAAA,wBAAA,CAAsB,EAC9DA,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,4BAAA,CAA6B,QAAA,CAAA,sCAAA,CAAoC,GAChF,CAAA,CACF,CAqBN,EAEO0uC,EAAAA,CAAQV,GC7Kf,IAAMW,EAAAA,CAAqB,IAAM,CAC/B,IAAMjJ,EAAWC,WAAAA,EAAY,CACvB,CAAC9a,CAAAA,CAAkB+jB,CAAmB,EAAI5oC,QAAAA,CAAc,CAC5D,IAAA,CAAM,EAAA,CACN,IAAA,CAAM,UAAA,CACN,MAAO,EAAA,CACP,KAAA,CAAO,GACP,WAAA,CAAa,EAAA,CACb,SAAU,EAAA,CACV,MAAA,CAAQ,aACR,OAAA,CAAS,EACX,CAAC,CAAA,CACK,CAACojB,EAAgBC,CAAiB,CAAA,CAAIrjB,SAAgB,EAAE,CAAA,CA0D9D,OACEhG,GAAAA,CAAC4qB,EAAAA,CAAA,CACC,gBAAA,CAAkBC,CAAAA,CAClB,eAAgBzB,CAAAA,CAChB,sBAAA,CA5DgCylB,GAAmB,CACrDxlB,CAAAA,CAAkBwlB,CAAO,EAC3B,CAAA,CA2DI,kBAzD2BvjC,CAAAA,EAAc,CAC3CsjC,EAAoBtjC,CAAI,EAC1B,EAwDI,QAAA,CAtDiB,IAAM,CACzBo6B,CAAAA,CAAS,eAAe,EAC1B,EAqDI,QAAA,CAnDiB,IAAM,CACzB,IAAMnd,CAAAA,CAAmBsC,GAAkB,IAAA,EAAQ,EAAA,CAEnD,GAAI,CAACtC,CAAAA,CAAkB,CACrBxjB,EAAAA,CAAM,CACJ,MAAO,OAAA,CACP,WAAA,CAAa,oCACb,OAAA,CAAS,aACX,CAAC,CAAA,CACD,MACF,CAEA,GAAIqkB,CAAAA,CAAe,MAAA,GAAW,EAAG,CAC/BrkB,EAAAA,CAAM,CACJ,KAAA,CAAO,OAAA,CACP,YAAa,yCAAA,CACb,OAAA,CAAS,aACX,CAAC,CAAA,CACD,MACF,CAGIqkB,CAAAA,CAAe,KAAK2B,CAAAA,EAAKA,CAAAA,CAAE,IAAA,GAAS,MAAM,CAAA,EAE5C,OAAA,CAAQ,IAAI,gDAAgD,CAAA,CAI9D,QAAQ,GAAA,CAAI,kCAAA,CAAoC,CAC9C,IAAA,CAAMxC,CAAAA,CACN,UAAWsC,CACb,CAAC,EAED9lB,EAAAA,CAAM,CACJ,MAAO,SAAA,CACP,WAAA,CAAa,mCACf,CAAC,CAAA,CAGD,UAAA,CAAW,IAAM,CACf2gC,CAAAA,CAAS,eAAe,EAC1B,CAAA,CAAG,GAAI,EACT,CAAA,CAUE,CAEJ,CAAA,CAEO0H,EAAAA,CAAQuB,GCrFf,IAAMG,EAAAA,CAAY,IAEd9uC,GAAAA,CAACge,EAAAA,CAAA,CACC,KAAA,CAAM,WAAA,CACN,WAAA,CAAY,8CAAA,CAEZ,QAAA,CAAAhe,GAAAA,CAAC,OAAI,SAAA,CAAU,yCAAA,CAA0C,yCAEzD,CAAA,CACF,CAAA,CAIG+uC,GAAQD,GCfR,IAAME,EAAAA,CAA0B,CACrC,CACE,EAAA,CAAI,eACJ,SAAA,CAAW,MAAA,CACX,SAAU,OAAA,CACV,QAAA,CAAU,aACV,WAAA,CAAa,mBAAA,CACb,UAAW,MAAA,CACX,MAAA,CAAQ,SACR,SAAA,CAAW,sBAAA,CACX,WAAY,sBACd,CAAA,CACA,CACE,EAAA,CAAI,cAAA,CACJ,SAAA,CAAW,OAAA,CACX,QAAA,CAAU,SAAA,CACV,SAAU,eAAA,CACV,WAAA,CAAa,kBACb,SAAA,CAAW,MAAA,CACX,OAAQ,QAAA,CACR,SAAA,CAAW,uBACX,UAAA,CAAY,sBACd,EACA,CACE,EAAA,CAAI,eACJ,SAAA,CAAW,SAAA,CACX,SAAU,MAAA,CACV,QAAA,CAAU,cAAA,CACV,WAAA,CAAa,mBAAA,CACb,SAAA,CAAW,YACX,MAAA,CAAQ,kBAAA,CACR,UAAW,sBAAA,CACX,UAAA,CAAY,sBACd,CAAA,CACA,CACE,GAAI,cAAA,CACJ,SAAA,CAAW,QACX,QAAA,CAAU,WAAA,CACV,SAAU,iBAAA,CACV,WAAA,CAAa,mBACb,SAAA,CAAW,MAAA,CACX,MAAA,CAAQ,QAAA,CACR,SAAA,CAAW,sBAAA,CACX,WAAY,sBACd,CAAA,CACA,CACE,EAAA,CAAI,cAAA,CACJ,UAAW,OAAA,CACX,QAAA,CAAU,WACV,QAAA,CAAU,gBAAA,CACV,YAAa,mBAAA,CACb,SAAA,CAAW,OACX,MAAA,CAAQ,SAAA,CACR,UAAW,sBAAA,CACX,UAAA,CAAY,sBACd,CACF,CAAA,CC9CA,IAAMC,GAAc,IAAM,CACxB,IAAMvJ,CAAAA,CAAWC,WAAAA,GACX,CAACuJ,CAAW,EAAIlpC,QAAAA,CAASgpC,EAAuB,EAChD,CAACG,CAAAA,CAAqBC,CAAsB,CAAA,CAAIppC,QAAAA,CAASgpC,EAAuB,CAAA,CAChF,CAAChwB,CAAAA,CAAQukB,CAAS,CAAA,CAAIv9B,QAAAA,CAAiB,SAAS,CAAA,CAChD,CAACiZ,EAAewkB,CAAgB,CAAA,CAAIz9B,SAAyB,MAAM,CAAA,CACnE,CAAC6f,CAAAA,CAASqgB,CAAU,EAAIlgC,QAAAA,CAA6B,CACzD,KAAM,EAAA,CACN,WAAA,CAAa,EAAA,CACb,MAAA,CAAQ,EAAA,CACR,gBAAA,CAAkB,OAClB,cAAA,CAAgB,MAClB,CAAC,CAAA,CAEKugC,CAAAA,CAAqB/0B,YACzB,CAACpB,CAAAA,CAAiCjR,CAAAA,GAAqC,CACrE+mC,CAAAA,CAAYz0B,CAAAA,GAAU,CAAE,GAAGA,CAAAA,CAAM,CAACrB,CAAK,EAAGjR,CAAM,CAAA,CAAE,EACpD,CAAA,CACA,EACF,CAAA,CAEM4pC,EAAev3B,WAAAA,CAAY,IAAM,CACrC,IAAI80B,CAAAA,CAAW4I,EAEXrpB,CAAAA,CAAQ,IAAA,GACVygB,EAAWA,CAAAA,CAAS,MAAA,CAAOrX,GACzBA,CAAAA,CAAW,QAAA,CAAS,aAAY,CAAE,QAAA,CAASpJ,EAAQ,IAAA,CAAK,WAAA,EAAa,CACvE,CAAA,CAAA,CAEEA,CAAAA,CAAQ,cACVygB,CAAAA,CAAWA,CAAAA,CAAS,OAAOrX,CAAAA,EACzBA,CAAAA,CAAW,YAAY,WAAA,EAAY,CAAE,SAASpJ,CAAAA,CAAQ,WAAA,CAAY,aAAa,CACjF,GAEEA,CAAAA,CAAQ,MAAA,GACVygB,EAAWA,CAAAA,CAAS,MAAA,CAAOrX,CAAAA,EAAcA,CAAAA,CAAW,MAAA,GAAWpJ,CAAAA,CAAQ,MAAM,CAAA,CAAA,CAE3EA,CAAAA,CAAQ,mBACVygB,CAAAA,CAAWA,CAAAA,CAAS,OAAOrX,CAAAA,EACzB,IAAI,KAAKA,CAAAA,CAAW,SAAS,GAAKpJ,CAAAA,CAAQ,gBAC5C,GAEEA,CAAAA,CAAQ,cAAA,GACVygB,EAAWA,CAAAA,CAAS,MAAA,CAAOrX,CAAAA,EACzB,IAAI,IAAA,CAAKA,CAAAA,CAAW,SAAS,CAAA,EAAKpJ,CAAAA,CAAQ,cAC5C,CAAA,CAAA,CAGFupB,CAAAA,CAAuB9I,CAAQ,EACjC,CAAA,CAAG,CAACzgB,CAAAA,CAASqpB,CAAW,CAAC,CAAA,CAEnBlG,CAAAA,CAAex3B,YAAY,IAAM,CACrC00B,EAAW,CACT,IAAA,CAAM,EAAA,CACN,WAAA,CAAa,EAAA,CACb,MAAA,CAAQ,GACR,gBAAA,CAAkB,MAAA,CAClB,eAAgB,MAClB,CAAC,EACDkJ,CAAAA,CAAuBF,CAAW,EACpC,CAAA,CAAG,CAACA,CAAW,CAAC,CAAA,CAEV3vB,EAAa/N,WAAAA,CAAahF,CAAAA,EAAgB,CAC1CwS,CAAAA,GAAWxS,CAAAA,CACbi3B,CAAAA,CAAiBxkB,CAAAA,GAAkB,KAAA,CAAQ,MAAA,CAAS,KAAK,CAAA,EAEzDskB,CAAAA,CAAU/2B,CAAG,CAAA,CACbi3B,CAAAA,CAAiB,KAAK,CAAA,EAE1B,CAAA,CAAG,CAACzkB,CAAAA,CAAQC,CAAa,CAAC,CAAA,CAEpBunB,CAAAA,CAAiBh1B,YAAa1D,CAAAA,EAAa,CAC/C43B,EAAS,CAAA,YAAA,EAAe53B,CAAAA,CAAI,EAAE,CAAA,CAAE,EAClC,CAAA,CAAG,CAAC43B,CAAQ,CAAC,EAEP2J,CAAAA,CAAyB79B,WAAAA,CAAY,IAAM,CAC/Ck0B,CAAAA,CAAS,oBAAoB,EAC/B,CAAA,CAAG,CAACA,CAAQ,CAAC,EAEP3mB,CAAAA,CAA6B2P,OAAAA,CACjC,IAAM,CACJ,CACE,GAAA,CAAK,IAAA,CACL,KAAA,CAAO,eAAA,CACP,SAAU,IACZ,CAAA,CACA,CACE,GAAA,CAAK,UAAA,CACL,MAAO,MAAA,CACP,QAAA,CAAU,IACZ,CAAA,CACA,CACE,IAAK,aAAA,CACL,KAAA,CAAO,eACP,QAAA,CAAU,IACZ,EACA,CACE,GAAA,CAAK,WAAA,CACL,KAAA,CAAO,YAAA,CACP,QAAA,CAAU,KACV,MAAA,CAASvvB,CAAAA,EAAUa,IAAC8c,EAAAA,CAAA,CAAe,OAAQ3d,CAAAA,CAAc,CAC3D,EACA,CACE,GAAA,CAAK,SACL,KAAA,CAAO,QAAA,CACP,SAAU,IAAA,CACV,MAAA,CAASA,GAAUa,GAAAA,CAAC0c,EAAAA,CAAA,CAAY,MAAA,CAAQvd,CAAAA,CAAc,CACxD,EACA,CACE,GAAA,CAAK,YACL,KAAA,CAAO,SAAA,CACP,SAAU,IAAA,CACV,MAAA,CAASA,GAAU,IAAI,IAAA,CAAKA,CAAK,CAAA,CAAE,kBAAA,EACrC,CAAA,CACA,CACE,IAAK,YAAA,CACL,KAAA,CAAO,UAAA,CACP,QAAA,CAAU,IAAA,CACV,MAAA,CAASA,GAAU,IAAI,IAAA,CAAKA,CAAK,CAAA,CAAE,kBAAA,EACrC,CACF,CAAA,CACA,EACF,CAAA,CAEMmwC,EAAoB5gB,OAAAA,CAAQ,IACzB,CAAC,GAAGygB,CAAmB,EAAE,IAAA,CAAK,CAAC3K,CAAAA,CAAGqF,CAAAA,GAAM,CAC7C,IAAMC,EAAStF,CAAAA,CAAExlB,CAAwB,EACnC+qB,CAAAA,CAASF,CAAAA,CAAE7qB,CAAwB,CAAA,CAEzC,OAAI8qB,EAASC,CAAAA,CAAe9qB,CAAAA,GAAkB,MAAQ,EAAA,CAAK,CAAA,CACvD6qB,EAASC,CAAAA,CAAe9qB,CAAAA,GAAkB,MAAQ,CAAA,CAAI,EAAA,CACnD,CACT,CAAC,CAAA,CACA,CAACkwB,EAAqBnwB,CAAAA,CAAQC,CAAa,CAAC,CAAA,CAEzCswB,CAAAA,CAAY7gB,QAChB,IACE1uB,GAAAA,CAAC8e,GAAA,CACC,OAAA,CAASC,EACT,IAAA,CAAMuwB,CAAAA,CACN,OAAQtwB,CAAAA,CACR,aAAA,CAAeC,EACf,MAAA,CAAQM,CAAAA,CACR,UAAA,CAAYinB,CAAAA,CACd,CAAA,CAEF,CAACznB,EAASynB,CAAAA,CAAgBjnB,CAAAA,CAAYP,EAAQC,CAAAA,CAAeqwB,CAAiB,CAChF,CAAA,CAEA,OACEtvC,IAACouB,EAAAA,CAAA,CACC,QAASvI,CAAAA,CACT,aAAA,CAAelX,GACf,cAAA,CAAgB43B,CAAAA,CAChB,eAAgByC,CAAAA,CAChB,cAAA,CAAgBD,CAAAA,CAChB,kBAAA,CAAoBsG,CAAAA,CACpB,KAAA,CAAOE,EACT,CAEJ,CAAA,CAEOC,GAAQP,GC5KR,IAAMQ,EAAAA,CAAqB,CAChC,EAAA,CAAI,cAAA,CACJ,SAAA,CAAW,OACX,QAAA,CAAU,OAAA,CACV,YAAa,YAAA,CACb,MAAA,CAAQ,MACR,QAAA,CAAU,aAAA,CACV,GAAA,CAAK,aAAA,CACL,KAAA,CAAO,sBAAA,CACP,YAAa,mBAAA,CAGb,aAAA,CAAe,kBACf,SAAA,CAAW,QAAA,CACX,KAAM,eAAA,CACN,KAAA,CAAO,IAAA,CACP,UAAA,CAAY,OAAA,CACZ,OAAA,CAAS,gBAGT,UAAA,CAAY,aAAA,CACZ,UAAW,mBAAA,CAIX,MAAA,CAAQ,QAAA,CACR,UAAW,UAWb,CAAA,KCzBMC,EAAAA,CAAmB,IAAM,CAC7B,GAAM,CAAE,GAAAvqC,CAAG,CAAA,CAAIiiC,WAAU,CACnB1B,CAAAA,CAAWC,WAAAA,EAAY,CAGvBjhB,CAAAA,CAAe,IAAA,CAEf,CAACnG,CAAAA,CAAcC,CAAe,EAAIxY,QAAAA,CAAkC,EAAE,CAAA,CACtE,CAACxD,EAAQuuB,CAAS,CAAA,CAAI/qB,SAASypC,EAAAA,CAAmB,MAAM,EAExD,CAACvgB,CAAAA,CAASygB,CAAU,CAAA,CAAI3pC,QAAAA,CAAgC,CAC5D,SAAA,CAAWypC,EAAAA,CAAmB,SAAA,CAC9B,SAAUA,EAAAA,CAAmB,QAAA,CAC7B,YAAaA,EAAAA,CAAmB,WAAA,CAChC,OAAQA,EAAAA,CAAmB,MAAA,CAC3B,SAAUA,EAAAA,CAAmB,QAAA,CAC7B,IAAKA,EAAAA,CAAmB,GAAA,CACxB,MAAOA,EAAAA,CAAmB,KAAA,CAC1B,YAAaA,EAAAA,CAAmB,WAAA,CAChC,aAAA,CAAeA,EAAAA,CAAmB,aAAA,CAClC,SAAA,CAAWA,GAAmB,SAAA,CAC9B,IAAA,CAAMA,GAAmB,IAAA,CACzB,KAAA,CAAOA,GAAmB,KAAA,CAC1B,UAAA,CAAYA,GAAmB,UAAA,CAC/B,OAAA,CAASA,GAAmB,OAAA,CAC5B,UAAA,CAAYA,GAAmB,UAAA,CAC/B,SAAA,CAAWA,GAAmB,SAChC,CAAC,CAAA,CAUK,CAACpgB,CAAAA,CAAkBugB,CAAmB,EAAI5pC,QAAAA,CAA+B,EAAE,CAAA,CAE3E,CAAC0B,EAAWmoC,CAAY,CAAA,CAAI7pC,SAA6B,CAC7D,CACE,GAAI,aAAA,CACJ,IAAA,CAAM,uBACN,IAAA,CAAM,kBAAA,CACN,YAAa,cAAA,CACb,IAAA,CAAM,QAAA,CACN,UAAA,CAAY,cAAA,CACZ,UAAA,CAAY,uBACZ,GAAA,CAAK,8BACP,CACF,CAAC,CAAA,CAEKyY,EAAajN,WAAAA,CAAakN,CAAAA,EAAoB,CAClDF,CAAAA,CAAiB/M,CAAAA,GAAU,CACzB,GAAGA,CAAAA,CACH,CAACiN,CAAO,EAAG,CAACjN,CAAAA,CAAKiN,CAAO,CAC1B,CAAA,CAAE,EACJ,CAAA,CAAG,EAAE,CAAA,CAECqpB,EAAqBv2B,WAAAA,CACxBiM,CAAAA,EAAqB,CACpBsT,CAAAA,CAAUtT,CAAyB,EACnC,OAAA,CAAQ,GAAA,CAAI,qBAAsBA,CAAQ,EAC5C,EACA,CAACjb,CAAM,CACT,CAAA,CAEMmtB,CAAAA,CAAexqB,CAAAA,EAAMsqC,EAAAA,CAAmB,EAAA,CAExCtrB,CAAAA,CAAauK,QAAQ,IAClB4b,EAAAA,CACJ,OAAQh9B,CAAAA,EAAUA,CAAAA,CAAM,WAAaqiB,CAAAA,EAAgBriB,CAAAA,CAAM,aAAe,YAAY,CAAA,CACtF,KAAK,CAACk3B,CAAAA,CAAGqF,IAAM,IAAI,IAAA,CAAKA,EAAE,OAAO,CAAA,CAAE,OAAA,EAAQ,CAAI,IAAI,IAAA,CAAKrF,EAAE,OAAO,CAAA,CAAE,SAAS,CAAA,CAAE,CAAC,CAAA,CACjF,CAAC7U,CAAY,CAAC,CAAA,CAEX3K,EAAgB0J,OAAAA,CACpB,IAAM/f,GACN,EACF,EAEMmhC,CAAAA,CAAoBt+B,WAAAA,CAAY,IAAM,CAC1C,OAAA,CAAQ,GAAA,CAAI,cAAc,EAC5B,CAAA,CAAG,EAAE,CAAA,CAECu+B,EAA0Bv+B,WAAAA,CAAY,IAAM,CAChD,OAAA,CAAQ,GAAA,CAAI,qBAAqB,EACnC,CAAA,CAAG,EAAE,CAAA,CAECi6B,EAAuBj6B,WAAAA,CAC1Bk6B,CAAAA,EAAyB,CAEtBhG,CAAAA,CADEgG,CAAAA,CACO,CAAA,iBAAA,EAAoBA,CAAW,CAAA,CAAA,CAE/B,kBAFiC,EAI9C,CAAA,CACA,CAAChG,CAAQ,CACX,CAAA,CAEM0G,EAAuB56B,WAAAA,CAC1B66B,CAAAA,EAAsB,CACrB3G,CAAAA,CAAS,CAAA,UAAA,EAAa2G,CAAS,CAAA,CAAE,EACnC,EACA,CAAC3G,CAAQ,CACX,CAAA,CAEMsK,CAAAA,CAA2Bx+B,WAAAA,CAC/B,MAAOlG,CAAAA,EAAkC,CAEvC,GAAI+jB,CAAAA,CAAiB,MAAA,EAAU,EAC7B,OAAAtqB,KAAAA,CAAM,MAAM,sCAAsC,CAAA,CAC3C,MAGT,IAAMkrC,CAAAA,CAAiC,CACrC,EAAA,CAAI,CAAA,IAAA,EAAO,KAAK,GAAA,EAAK,CAAA,CAAA,CACrB,aAAA,CAAA,CAAgB3kC,CAAAA,CAAK,aAAA,EAAiB,IAAI,IAAA,EAAK,EAAK,SACpD,aAAA,CAAA,CAAgBA,CAAAA,CAAK,eAAiB,EAAA,EAAI,IAAA,IAAU,QAAA,CACpD,QAAA,CAAA,CAAWA,EAAK,QAAA,EAAY,EAAA,EAAI,MAAK,EAAK,QAAA,CAC1C,iBAAkBA,CAAAA,CAAK,eAAA,EAAmB,EAAA,EAAI,IAAA,EAAK,EAAK,QAC1D,EAEAskC,CAAAA,CAAoB,CAACK,CAAU,CAAC,CAAA,CAChClrC,MAAM,OAAA,CAAQ,wBAAwB,EACxC,CAAA,CACA,CAACsqB,EAAiB,MAAM,CAC1B,EAEM6gB,CAAAA,CAA8B1+B,WAAAA,CAAY,MAAOs6B,CAAAA,EAAsB,CAC3E8D,CAAAA,CAAqBn+B,CAAAA,EAASA,CAAAA,CAAK,MAAA,CAAQuR,GAAQA,CAAAA,CAAI,EAAA,GAAO8oB,CAAS,CAAC,CAAA,CACxE/mC,MAAM,OAAA,CAAQ,0BAA0B,EAC1C,CAAA,CAAG,EAAE,EAEC0nC,EAAAA,CAAuBj7B,WAAAA,CAC3B,MAAOzI,CAAAA,CAAY2jC,CAAAA,GAAkE,CACnF,IAAM/tB,CAAAA,CAAyB,CAC7B,EAAA,CAAI,CAAA,QAAA,EAAW,IAAA,CAAK,KAAK,CAAA,CAAA,CACzB,KAAM+tB,CAAAA,CAAS,IAAA,CACf,KAAMA,CAAAA,CAAS,IAAA,CACf,YAAaA,CAAAA,CAAS,WAAA,EAAe,OACrC,IAAA,CAAM,CAAA,EAAA,CAAI3jC,EAAK,IAAA,CAAO,IAAA,CAAO,MAAM,OAAA,CAAQ,CAAC,CAAC,CAAA,GAAA,CAAA,CAC7C,UAAA,CAAY,cAAA,CACZ,WAAY,IAAI,IAAA,GAAO,WAAA,EAAY,CACnC,IAAK,GAAA,CAAI,eAAA,CAAgBA,CAAI,CAC/B,CAAA,CAEA8mC,EAAcp+B,EAAAA,EAAS,CAACkN,EAAM,GAAGlN,EAAI,CAAC,EACxC,CAAA,CACA,EACF,CAAA,CAEMm7B,EAAAA,CAAuBp7B,YAAY,MAAOq7B,CAAAA,EAAuB,CACrEgD,CAAAA,CAAcp+B,CAAAA,EAASA,EAAK,MAAA,CAAQwS,CAAAA,EAAMA,EAAE,EAAA,GAAO4oB,CAAU,CAAC,EAChE,CAAA,CAAG,EAAE,CAAA,CAGCtB,EAA2BuE,CAAAA,CAC3BtE,CAAAA,CAA+BuE,CAAAA,CAE/BpoC,CAAAA,CAAuB6J,WAAAA,CAAa3I,CAAAA,EACpCA,EAAI,GAAA,EAAOA,CAAAA,CAAI,KAAK,WAAA,EAAY,CAAE,SAAS,MAAM,CAAA,CAEjD7I,IAAC,QAAA,CAAA,CACC,KAAA,CAAO6I,EAAI,IAAA,CACX,GAAA,CAAKA,EAAI,GAAA,CACT,SAAA,CAAU,kDACZ,CAAA,CAGG,IAAA,CACN,EAAE,CAAA,CAEL,OACE7I,IAAA6L,QAAAA,CAAA,CACE,SAAA7L,GAAAA,CAACgvB,EAAAA,CAAA,CACC,UAAA,CAAY,CACV,GAAIW,CAAAA,CACJ,SAAA,CAAW8f,GAAmB,SAAA,CAC9B,QAAA,CAAUA,GAAmB,QAAA,CAC7B,SAAA,CAAWA,GAAmB,SAAA,CAC9B,OAAA,CAAS,UACX,CAAA,CACA,OAAA,CAASvgB,CAAAA,CACT,cAAgB5jB,CAAAA,EAAS,CAEvBqkC,EAAYl+B,CAAAA,GAAU,CAAE,GAAGA,CAAAA,CAAM,GAAGnG,CAAK,CAAA,CAAE,EAC7C,EACA,MAAA,CAAQ9I,CAAAA,CACR,cAAewiB,CAAAA,CACf,cAAA,CAAgB+iB,EAChB,UAAA,CAAY5jB,CAAAA,CACZ,gBAAA,CAAkBsnB,CAAAA,CAClB,oBAAA,CAAsBF,CAAAA,CACtB,yBAA0BC,CAAAA,CAC1B,YAAA,CAAc9mB,EAEd,gBAAA,CAAkBnG,CAAAA,CAAa,SAAc,KAAA,CAC7C,mBAAA,CAAqB,IAAME,CAAAA,CAAW,SAAS,EAC/C,gBAAA,CAAkB2tB,CAAAA,CAElB,iBAAkB/c,CAAAA,CAClB,oBAAA,CAAsB2gB,EACtB,uBAAA,CAAyBE,CAAAA,CAEzB,SAAA,CAAWxoC,CAAAA,CACX,gBAAA,CAAkB+kC,EAAAA,CAClB,iBAAkBG,EAAAA,CAClB,oBAAA,CAAsBjlC,EACxB,CAAA,CACF,CAEJ,EAEOwoC,EAAAA,CAAQT,GC3Nf,IAAMU,EAAAA,CAAmB,IAAM,CAC7B,IAAM1K,EAAWC,WAAAA,EAAY,CAEvBn2B,EAAOa,EAAAA,CAA4C,CACvD,OAAQie,EAAAA,CACR,aAAA,CAAe,CACb,SAAA,CAAW,EAAA,CACX,SAAU,EAAA,CACV,WAAA,CAAa,GACb,MAAA,CAAQ,KAAA,CACR,SAAU,EAAA,CACV,GAAA,CAAK,EAAA,CACL,KAAA,CAAO,EAAA,CACP,WAAA,CAAa,GACb,aAAA,CAAe,EAAA,CACf,UAAW,EAAA,CACX,IAAA,CAAM,GACN,KAAA,CAAO,EAAA,CACP,WAAY,EAAA,CACZ,OAAA,CAAS,gBACT,UAAA,CAAY,EAAA,CACZ,UAAW,EACb,CAAA,CACA,eAAgB,IAAA,CAChB,MAAA,CAAQ,MAAOhjB,CAAAA,EAAS,CACtB,OAAA,CAAQ,IAAI,sBAAA,CAAwBA,CAAI,EAExCo6B,CAAAA,CAAS,aAAa,EACxB,CACF,CAAC,EAEK/zB,CAAAA,CAAeH,WAAAA,CAAY,IAAM,CACrCk0B,CAAAA,CAAS,aAAa,EACxB,CAAA,CAAG,CAACA,CAAQ,CAAC,CAAA,CAEPvzB,CAAAA,CAAeX,WAAAA,CAAY,IAAM,CAErChC,CAAAA,CAAK,YAAA,CAAaA,EAAK,UAAU,CAAA,GACnC,CAAA,CAAG,CAACA,CAAI,CAAC,CAAA,CAET,OACExP,GAAAA,CAAC+vB,EAAAA,CAAA,CAAqB,IAAA,CAAMvgB,CAAAA,CAAM,SAAUmC,CAAAA,CAAc,QAAA,CAAUQ,CAAAA,CAAc,CAEtF,CAAA,CAEOi7B,EAAAA,CAAQgD,OChDTC,EAAAA,CAAW,IAAM,CACrB,IAAMC,CAAAA,CAAWp3B,WAAAA,EAAY,CAE7B,OAAA7H,SAAAA,CAAU,IAAM,CACd,OAAA,CAAQ,MACN,yDAAA,CACAi/B,CAAAA,CAAS,QACX,EACF,CAAA,CAAG,CAACA,CAAAA,CAAS,QAAQ,CAAC,CAAA,CAGpBtwC,GAAAA,CAAC,OAAI,SAAA,CAAU,2DAAA,CACb,SAAAoB,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,aAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,MAAG,SAAA,CAAU,yBAAA,CAA0B,eAAG,CAAA,CAC3CA,GAAAA,CAAC,KAAE,SAAA,CAAU,4BAAA,CAA6B,gCAAoB,CAAA,CAC9DA,GAAAA,CAAC,KAAE,IAAA,CAAK,GAAA,CAAI,UAAU,6CAAA,CAA8C,QAAA,CAAA,gBAAA,CAEpE,GACF,CAAA,CACF,CAEJ,CAAA,CAEOuwC,EAAAA,CAAQF,GCrBf,SAASG,GAAerxC,CAAAA,CAAgC,CACtD,IAAMsxC,CAAAA,CAAc,MAAA,CAAOtxC,CAAK,EAChC,OAAIsxC,CAAAA,CAAY,SAAS,GAAG,CAAA,EAAKA,EAAY,QAAA,CAAS,GAAG,CAAA,EAAKA,CAAAA,CAAY,QAAA,CAAS;AAAA,CAAI,CAAA,CAC9E,CAAA,CAAA,EAAIA,CAAAA,CAAY,OAAA,CAAQ,KAAM,IAAI,CAAC,CAAA,CAAA,CAAA,CAErCA,CACT,CAKO,SAASC,EAAAA,CACdC,CAAAA,CACAC,EACQ,CACR,IAAMC,CAAAA,CAAkB,EAAC,CAGzB,OAAAA,CAAAA,CAAM,IAAA,CAAK,uBAAuB,CAAA,CAC9BF,CAAAA,CAAO,OAAA,EACTE,CAAAA,CAAM,KAAK,CAAA,QAAA,EAAWL,EAAAA,CAAeG,CAAAA,CAAO,OAAO,CAAC,CAAA,CAAE,CAAA,CAEpDA,CAAAA,CAAO,SAAA,EACTE,CAAAA,CAAM,IAAA,CAAK,CAAA,WAAA,EAAcL,EAAAA,CAAeG,EAAO,SAAS,CAAC,CAAA,CAAE,CAAA,CAEzDA,EAAO,SAAA,EACTE,CAAAA,CAAM,IAAA,CAAK,CAAA,WAAA,EAAcL,GAAeG,CAAAA,CAAO,SAAS,CAAC,CAAA,CAAE,CAAA,CAEzDA,CAAAA,CAAO,SAAA,EACTE,CAAAA,CAAM,KAAK,CAAA,WAAA,EAAcL,EAAAA,CAAeG,CAAAA,CAAO,SAAS,CAAC,CAAA,CAAE,CAAA,CAEzDA,CAAAA,CAAO,OAAA,EACTE,EAAM,IAAA,CAAK,CAAA,SAAA,EAAYL,EAAAA,CAAeG,CAAAA,CAAO,OAAO,CAAC,CAAA,CAAE,CAAA,CAErDA,EAAO,eAAA,EACTE,CAAAA,CAAM,IAAA,CAAK,CAAA,iBAAA,EAAoBL,GAAeG,CAAAA,CAAO,eAAe,CAAC,CAAA,CAAE,EAErEA,CAAAA,CAAO,aAAA,EACTE,CAAAA,CAAM,IAAA,CAAK,CAAA,eAAA,EAAkBL,EAAAA,CAAeG,CAAAA,CAAO,aAAa,CAAC,CAAA,CAAE,CAAA,CAIrEE,CAAAA,CAAM,IAAA,CAAK,EAAE,CAAA,CAGbA,CAAAA,CAAM,IAAA,CAAK,qBAAqB,EAChCA,CAAAA,CAAM,IAAA,CAAK,yCAAyC,CAAA,CAEpDD,CAAAA,CAAa,OAAA,CAAQhT,CAAAA,EAAe,CAClC,IAAM9vB,CAAAA,CAAM,CACV0iC,EAAAA,CAAe5S,CAAAA,CAAY,eAAe,CAAA,CAC1C4S,EAAAA,CAAe5S,CAAAA,CAAY,SAAS,EACpC4S,EAAAA,CAAe5S,CAAAA,CAAY,MAAM,CAAA,CACjC4S,EAAAA,CAAe5S,CAAAA,CAAY,KAAK,CAClC,EAAE,IAAA,CAAK,GAAG,CAAA,CACViT,CAAAA,CAAM,KAAK/iC,CAAG,EAChB,CAAC,CAAA,CAEM+iC,EAAM,IAAA,CAAK;AAAA,CAAI,CACxB,CAKO,SAASC,EAAAA,CAAYngB,CAAAA,CAAiBogB,EAAwB,CACnE,IAAMvtB,CAAAA,CAAO,IAAI,KAAK,CAACmN,CAAO,CAAA,CAAG,CAAE,KAAM,yBAA0B,CAAC,CAAA,CAC9DlN,CAAAA,CAAM,IAAI,eAAA,CAAgBD,CAAI,CAAA,CAE9BE,CAAAA,CAAO,SAAS,aAAA,CAAc,GAAG,CAAA,CACvCA,CAAAA,CAAK,KAAOD,CAAAA,CACZC,CAAAA,CAAK,QAAA,CAAWqtB,CAAAA,CAChBrtB,EAAK,KAAA,CAAM,OAAA,CAAU,MAAA,CAErB,QAAA,CAAS,KAAK,WAAA,CAAYA,CAAI,CAAA,CAC9BA,CAAAA,CAAK,OAAM,CAGX,QAAA,CAAS,IAAA,CAAK,WAAA,CAAYA,CAAI,CAAA,CAC9B,GAAA,CAAI,eAAA,CAAgBD,CAAG,EACzB,CCvEe,SAARutB,EAAAA,EAA6B,CAElC,GAAM,CAAC7b,EAAe8b,CAAgB,CAAA,CAAIjrC,QAAAA,CAAiB,MAAM,EAC3D,CAACovB,CAAAA,CAAiB8b,CAAkB,CAAA,CAAIlrC,QAAAA,CAAiB,EAAE,CAAA,CAC3D,CAACqvB,CAAAA,CAAiB8b,CAAkB,EAAInrC,QAAAA,CAAiB,EAAE,CAAA,CAC3D,CAACuhB,EAAe6pB,CAAgB,CAAA,CAAIprC,QAAAA,CAAiB,EAAE,EACvD,CAACsvB,CAAAA,CAAW+b,CAAY,CAAA,CAAIrrC,SAAe,IAAM,CACrD,IAAMsrC,EAAAA,CAAM,IAAI,IAAA,CAChB,OAAO,IAAI,IAAA,CAAKA,GAAI,WAAA,EAAY,CAAGA,EAAAA,CAAI,QAAA,GAAY,CAAC,CACtD,CAAC,CAAA,CACK,CAAC/b,CAAAA,CAASgc,CAAU,CAAA,CAAIvrC,QAAAA,CAAe,IAAI,IAAM,CAAA,CACjD,CAACwvB,CAAAA,CAAoBgc,CAAqB,CAAA,CAAIxrC,QAAAA,CAAS,KAAK,CAAA,CAC5D,CAACuB,CAAAA,CAAWuJ,CAAY,CAAA,CAAI9K,QAAAA,CAAS,KAAK,CAAA,CAG1C,CAACyvB,CAAAA,CAAUgc,CAAW,EAAIzrC,QAAAA,CAAkD,EAAE,CAAA,CAC9E,CAAC0vB,CAAAA,CAAUgc,CAAW,CAAA,CAAI1rC,QAAAA,CAAkD,EAAE,CAAA,CAC9E,CAAC6vB,CAAAA,CAAiB8b,CAAkB,EAAI3rC,QAAAA,CAAS,KAAK,CAAA,CACtD,CAAC8vB,EAAiB8b,CAAkB,CAAA,CAAI5rC,QAAAA,CAAS,KAAK,EACtD,CAAC+vB,EAAAA,CAAe8b,EAAgB,CAAA,CAAI7rC,SAAwB,IAAI,CAAA,CAChE,CAACgwB,CAAAA,CAAe8b,CAAgB,CAAA,CAAI9rC,QAAAA,CAAwB,IAAI,CAAA,CAChE,CAAC2vB,CAAAA,CAAiBoc,CAAkB,CAAA,CAAI/rC,QAAAA,CAAiC,IAAI,CAAA,CAC7E,CAAC4vB,CAAAA,CAAuBoc,CAAwB,EAAIhsC,QAAAA,CAAiC,EAAE,CAAA,CAGvFisC,GAAgB,SAAY,CAChCN,CAAAA,CAAmB,IAAI,EACvBE,EAAAA,CAAiB,IAAI,CAAA,CACrB,GAAI,CAMF,MAAA,MAAM,IAAI,OAAA,CAAQhN,EAAAA,EAAW,WAAWA,EAAAA,CAAS,GAAI,CAAC,CAAA,CAGhD,IAAI,KAAA,CAAM,8DAA8D,CAAA,CAG9E,IAAMv5B,GAAYqpB,EAAAA,CAGlB,GAAI,OAAOrpB,EAAAA,EAAS,SAClB,MAAM,IAAI,KAAA,CAAMA,EAAI,EAGtBmmC,CAAAA,CAAYnmC,EAAI,EAClB,CAAA,MAASjI,EAAAA,CAAO,CACd,IAAMu1B,EAAAA,CAAev1B,EAAAA,YAAiB,KAAA,CAAQA,GAAM,OAAA,CAAU,yBAAA,CAC9DwuC,EAAAA,CAAiBjZ,EAAY,EAC7B6Y,CAAAA,CAAY,EAAE,CAAA,CAEd1sC,GAAM,CACJ,KAAA,CAAO,wBAAA,CACP,WAAA,CAAa6zB,GACb,OAAA,CAAS,aACX,CAAC,EACH,QAAE,CACA+Y,CAAAA,CAAmB,KAAK,EAC1B,CACF,CAAA,CAGMO,CAAAA,CAAgB,SAAY,CAChCN,EAAmB,IAAI,CAAA,CACvBE,CAAAA,CAAiB,IAAI,EACrB,GAAI,CAMF,MAAM,IAAI,QAAQjN,EAAAA,EAAW,UAAA,CAAWA,EAAAA,CAAS,GAAI,CAAC,CAAA,CAGtD,IAAMv5B,EAAAA,CAAYspB,EAAAA,CAGlB,GAAI,OAAOtpB,EAAAA,EAAS,QAAA,CAClB,MAAM,IAAI,KAAA,CAAMA,EAAI,CAAA,CAGtBomC,CAAAA,CAAYpmC,EAAI,EAClB,CAAA,MAASjI,EAAAA,CAAO,CACd,IAAMu1B,EAAAA,CAAev1B,EAAAA,YAAiB,KAAA,CAAQA,EAAAA,CAAM,QAAU,yBAAA,CAC9DyuC,CAAAA,CAAiBlZ,EAAY,CAAA,CAC7B8Y,CAAAA,CAAY,EAAE,CAAA,CAEd3sC,EAAAA,CAAM,CACJ,MAAO,wBAAA,CACP,WAAA,CAAa6zB,EAAAA,CACb,OAAA,CAAS,aACX,CAAC,EACH,CAAA,OAAE,CACAgZ,EAAmB,KAAK,EAC1B,CACF,CAAA,CAGAvgC,UAAU,IAAM,CACd4gC,EAAAA,EAAc,CACdC,IACF,CAAA,CAAG,EAAE,EAGL,IAAMC,EAAAA,CAA6BhzC,EAAAA,EAAkB,CACnD8xC,EAAiB9xC,EAAK,CAAA,CAEtB+xC,CAAAA,CAAmB,EAAE,EACrBC,CAAAA,CAAmB,EAAE,CAAA,CACrBC,CAAAA,CAAiB,EAAE,EACrB,CAAA,CAEMgB,EAAAA,CAA0B,SAAY,CAC1C,GAAI,EAAA,CAACjd,CAAAA,EAAiB,CAACG,GAAa,CAACC,CAAAA,CAAAA,EAGjC,EAAAJ,CAAAA,GAAkB,WAAa,CAACC,CAAAA,CAAAA,EAChC,EAAAD,CAAAA,GAAkB,WAAa,CAACE,CAAAA,CAAAA,EAChC,EAAAF,CAAAA,GAAkB,WAAa,CAAC5N,CAAAA,CAAAA,CAEpC,CAAAzW,CAAAA,CAAa,IAAI,CAAA,CAEjB,GAAI,CAEF,OAAA,CAAQ,GAAA,CAAI,6BAA8B,CACxC,aAAA,CAAAqkB,CAAAA,CACA,eAAA,CAAAC,EACA,eAAA,CAAAC,CAAAA,CACA,aAAA,CAAA9N,CAAAA,CACA,UAAA+N,CAAAA,CACA,OAAA,CAAAC,CACF,CAAC,EAGD,MAAM,IAAI,OAAA,CAAQsP,EAAAA,EAAW,WAAWA,EAAAA,CAAS,GAAI,CAAC,CAAA,CAGtDkN,EAAmBtd,EAAmB,CAAA,CACtCud,CAAAA,CAAyBtd,EAAyB,EAClD8c,CAAAA,CAAsB,CAAA,CAAI,EAC5B,CAAA,OAAE,CACA1gC,CAAAA,CAAa,KAAK,EACpB,CAAA,CACF,EAEM8lB,EAAAA,CAAqB,IACrB,CAAA,EAAA,CAACzB,CAAAA,EAAiB,CAACG,CAAAA,EAAa,CAACC,CAAAA,EAGjCJ,CAAAA,GAAkB,YAAcY,EAAAA,EAAiBF,CAAAA,CAAAA,EACjDV,CAAAA,GAAkB,SAAA,GAAca,GAAiBF,CAAAA,CAAAA,EAGjDX,CAAAA,GAAkB,SAAA,EAAa,CAACC,GAChCD,CAAAA,GAAkB,SAAA,EAAa,CAACE,CAAAA,EAChCF,IAAkB,SAAA,EAAa,CAAC5N,CAAAA,CAAAA,CAoEtC,OACEvnB,IAACk1B,EAAAA,CAAA,CACC,aAAA,CAAeC,CAAAA,CACf,gBAAiBC,CAAAA,CACjB,eAAA,CAAiBC,EACjB,aAAA,CAAe9N,CAAAA,CACf,UAAW+N,CAAAA,CACX,OAAA,CAASC,CAAAA,CACT,kBAAA,CAAoBC,EACpB,QAAA,CAAUC,CAAAA,CACV,QAAA,CAAUC,CAAAA,CACV,gBAAiBC,CAAAA,CACjB,qBAAA,CAAuBC,CAAAA,CACvB,eAAA,CAAiBC,EACjB,eAAA,CAAiBC,CAAAA,CACjB,aAAA,CAAeC,EAAAA,CACf,cAAeC,CAAAA,CACf,qBAAA,CAAuBmc,EAAAA,CACvB,eAAA,CAAiBjB,EACjB,eAAA,CAAiBC,CAAAA,CACjB,qBAAA,CAAuBC,CAAAA,CACvB,kBAAmBC,CAAAA,CACnB,eAAA,CAAiBE,CAAAA,CACjB,mBAAA,CAAqBa,GACrB,MAAA,CA5Be,IAAM,CACvBZ,CAAAA,CAAsB,KAAK,EAC7B,CAAA,CA2BI,aAAA,CA1EsB,IAAM,CAC9B,GAAI,CAAC7b,CAAAA,EAAmB,CAACC,EAAsB,MAAA,CAAQ,CACrD7wB,EAAAA,CAAM,CACJ,MAAO,mBAAA,CACP,WAAA,CAAa,gDAAA,CACb,OAAA,CAAS,aACX,CAAC,CAAA,CACD,MACF,CAEA,GAAI,CACF,IAAMstC,EAAAA,CAAa3B,EAAAA,CAAqB/a,EAAiBC,CAAqB,CAAA,CAGxEuH,EAAAA,CAAU,IAAI,MAAK,CAAE,WAAA,GAAc,KAAA,CAAM,GAAG,EAAE,CAAC,CAAA,CACjDmV,EAAAA,CAAend,CAAAA,CACfA,IAAkB,SAAA,EAAaC,CAAAA,CACjCkd,EAAAA,CAAe,CAAA,QAAA,EAAWld,CAAe,CAAA,CAAA,CAChCD,CAAAA,GAAkB,SAAA,EAAaE,CAAAA,CACxCid,GAAe,CAAA,QAAA,EAAWjd,CAAe,CAAA,CAAA,CAChCF,CAAAA,GAAkB,WAAa5N,CAAAA,GACxC+qB,EAAAA,CAAe,CAAA,QAAA,EAAW/qB,CAAa,IAGzC,IAAMwpB,EAAAA,CAAW,CAAA,UAAA,EAAauB,EAAY,IAAInV,EAAO,CAAA,IAAA,CAAA,CACrD2T,EAAAA,CAAYuB,EAAAA,CAAYtB,EAAQ,CAAA,CAEhChsC,EAAAA,CAAM,CACJ,KAAA,CAAO,mBACP,WAAA,CAAa,wCACf,CAAC,EACH,OAAS1B,EAAAA,CAAO,CACd0B,EAAAA,CAAM,CACJ,MAAO,iBAAA,CACP,WAAA,CAAa1B,EAAAA,YAAiB,KAAA,CAAQA,GAAM,OAAA,CAAU,wBAAA,CACtD,OAAA,CAAS,aACX,CAAC,EACH,CACF,CAAA,CAqCI,UAAA,CAnCmB,IAAM,CAE3B,OAAA,CAAQ,GAAA,CAAI,iBAAiB,EAC/B,CAAA,CAiCI,YAAA,CA1FqB,IAAM,CACzB8xB,IAAkB,SAAA,EAAaY,EAAAA,CACjCkc,IAAc,CACL9c,CAAAA,GAAkB,WAAaa,CAAAA,EACxCkc,CAAAA,GAEJ,CAAA,CAqFI,gBAlFE,CAAA,EAAA/c,CAAAA,GAAkB,SAAA,EAAaY,EAAAA,EAC/BZ,IAAkB,SAAA,EAAaa,CAAAA,CAAAA,CAkFjC,kBAAA,CAAoBY,EAAAA,GACpB,SAAA,CAAWrvB,CAAAA,CACb,CAEJ,CChPO,IAAMgrC,GAAkC,CAC7C,CACE,EAAA,CAAI,sCAAA,CACJ,QAAS,kBAAA,CACT,aAAA,CAAe,cAAA,CACf,MAAA,CAAQ,SACR,QAAA,CAAU,gBAAA,CACV,YAAA,CAAc,yBAAA,CACd,YAAa,kBAAA,CACb,eAAA,CAAiB,uBAAA,CACjB,MAAA,CAAQ,UACR,gBAAA,CAAkB,MAAA,CAClB,OAAA,CAAS,kBAAA,CACT,UAAW,IAAA,CACX,MAAA,CAAQ,UAAA,CACR,SAAA,CAAW,MACX,cAAA,CAAgB,0CAAA,CAChB,eAAA,CAAiB,sCAAA,CACjB,kBAAmB,qBAAA,CACnB,kBAAA,CAAoB,eAAA,CACpB,UAAA,CAAY,CACV,cAAA,CAAgB,gBAAA,CAChB,cAAe,WAAA,CACf,YAAA,CAAc,aACd,YAAA,CAAc,yBAAA,CACd,WAAA,CAAa,WAAA,CACb,gBAAiB,YAAA,CACjB,OAAA,CAAS,KAAA,CACT,WAAA,CAAa,WACb,aAAA,CAAe,YAAA,CACf,OAAA,CAAS,UAAA,CACT,YAAa,iBAAA,CACb,OAAA,CAAS,4BAAA,CACT,GAAA,CAAK,CACH,UAAA,CAAY,GAAA,CACZ,eAAA,CAAiB,IAAA,CACjB,2BAA4B,UAAA,CAC5B,UAAA,CAAY,GAAA,CACZ,gBAAA,CAAkB,aAClB,MAAA,CAAQ,YAAA,CACR,8BAAA,CAAgC,YAAA,CAChC,eAAgB,uBAAA,CAChB,iBAAA,CAAmB,IAAA,CACnB,sBAAA,CAAwB,IACxB,WAAA,CAAa,iBAAA,CACb,WAAA,CAAa,CACX,WAAY,GAAA,CACZ,gBAAA,CAAkB,KAAA,CAClB,WAAA,CAAa,iBACb,wBAAA,CAA0B,eAAA,CAC1B,qBAAA,CAAuB,YAAA,CACvB,uBAAwB,KAAA,CACxB,uBAAA,CAAyB,SAAA,CACzB,sBAAA,CAAwB,SACxB,kBAAA,CAAoB,QAAA,CACpB,cAAA,CAAgB,KAAA,CAChB,qBAAsB,GAAA,CACtB,4BAAA,CAA8B,UAAA,CAC9B,WAAA,CAAa,SACf,CACF,CACF,CACF,CAAA,CACA,CACE,EAAA,CAAI,sCAAA,CACJ,QAAS,kBAAA,CACT,aAAA,CAAe,eACf,MAAA,CAAQ,EAAA,CACR,QAAA,CAAU,UAAA,CACV,aAAc,YAAA,CACd,WAAA,CAAa,SAAA,CACb,eAAA,CAAiB,sBACjB,MAAA,CAAQ,QAAA,CACR,gBAAA,CAAkB,WAAA,CAClB,QAAS,kBAAA,CACT,SAAA,CAAW,KACb,CAAA,CACA,CACE,EAAA,CAAI,GAAA,CACJ,OAAA,CAAS,kBAAA,CACT,cAAe,cAAA,CACf,MAAA,CAAQ,IAAA,CACR,QAAA,CAAU,qBACV,YAAA,CAAc,sBAAA,CACd,WAAA,CAAa,+BAAA,CACb,gBAAiB,sBAAA,CACjB,MAAA,CAAQ,QAAA,CACR,gBAAA,CAAkB,YAClB,OAAA,CAAS,kBAAA,CACT,SAAA,CAAW,KAAA,CACX,mBAAoB,yBAAA,CACpB,MAAA,CAAQ,CAAC,qBAAqB,EAC9B,WAAA,CAAa,CACX,IAAA,CAAM,UAAA,CACN,KAAM,yBAAA,CACN,IAAA,CAAM,yBAAA,CACN,cAAA,CAAgB,qBAChB,uBAAA,CAAyB,cAAA,CACzB,gBAAA,CAAkB,kBAAA,CAClB,eAAgB,WAAA,CAChB,eAAA,CAAiB,sBAAA,CACjB,wBAAA,CAA0B,eAC1B,iBAAA,CAAmB,YAAA,CACnB,eAAA,CAAiB,WAAA,CACjB,4BAA6B,uDAAA,CAC7B,GAAA,CAAK,CACH,iBAAA,CAAmB,CACjB,OAAQ,CACN,KAAA,CAAO,wBAAA,CACP,OAAA,CAAS,CACP,QAAA,CAAU,CACR,IAAA,CAAM,CAAE,KAAM,IAAA,CAAM,KAAA,CAAO,CAAA,CAAG,GAAA,CAAK,CAAE,CAAA,CACrC,IAAA,CAAM,CAAE,IAAA,CAAM,GAAI,MAAA,CAAQ,EAAA,CAAI,MAAA,CAAQ,CAAA,CAAG,KAAM,IAAU,CAC3D,CAAA,CACA,MAAA,CAAQ,CAAE,YAAA,CAAc,MAAO,CACjC,CAAA,CACA,QAAS,GAAA,CACT,QAAA,CAAU,CACR,QAAA,CAAU,OACV,MAAA,CAAQ,CAAE,EAAA,CAAI,KAAM,CACtB,CACF,CAAA,CACA,WAAA,CAAa,CACX,CACE,KAAA,CAAO,CACL,UAAA,CAAY,cAAA,CACZ,KAAM,sCACR,CAAA,CACA,QAAA,CAAU,CACR,UAAW,CAAE,KAAA,CAAO,MAAO,CAC7B,EACA,cAAA,CAAgB,CAAE,KAAA,CAAO,EAAA,CAAI,IAAK,KAAM,CAAA,CACxC,aAAA,CAAe,CAAE,KAAM,IAAA,CAAM,KAAA,CAAO,EAAG,GAAA,CAAK,CAAE,EAC9C,QAAA,CAAU,CAAE,KAAA,CAAO,EAAA,CAAI,IAAK,KAAM,CAAA,CAClC,MAAA,CAAQ,MACV,CACF,CACF,CAAA,CACA,IAAA,CAAM,IAAA,CACN,WAAY,iBACd,CACF,CACF,CAAA,CACA,CACE,EAAA,CAAI,GAAA,CACJ,OAAA,CAAS,kBAAA,CACT,cAAe,cAAA,CACf,MAAA,CAAQ,QAAA,CACR,QAAA,CAAU,uBACV,YAAA,CAAc,oBAAA,CACd,WAAA,CAAa,gBAAA,CACb,gBAAiB,sBAAA,CACjB,MAAA,CAAQ,QAAA,CACR,gBAAA,CAAkB,YAClB,OAAA,CAAS,kBAAA,CACT,SAAA,CAAW,KACb,EACA,CACE,EAAA,CAAI,GAAA,CACJ,OAAA,CAAS,mBACT,aAAA,CAAe,cAAA,CACf,MAAA,CAAQ,GAAA,CACR,SAAU,qBAAA,CACV,YAAA,CAAc,eAAA,CACd,WAAA,CAAa,qBACb,eAAA,CAAiB,uBAAA,CACjB,MAAA,CAAQ,SAAA,CACR,iBAAkB,iBAAA,CAClB,OAAA,CAAS,kBAAA,CACT,SAAA,CAAW,KACb,CAAA,CACA,CACE,EAAA,CAAI,GAAA,CACJ,QAAS,kBAAA,CACT,aAAA,CAAe,eACf,MAAA,CAAQ,MAAA,CACR,SAAU,sBAAA,CACV,YAAA,CAAc,yBAAA,CACd,WAAA,CAAa,uBACb,eAAA,CAAiB,qBAAA,CACjB,MAAA,CAAQ,SAAA,CACR,iBAAkB,MAAA,CAClB,OAAA,CAAS,kBAAA,CACT,SAAA,CAAW,MACX,WAAA,CAAa,CACX,IAAA,CAAM,UAAA,CACN,KAAM,yBAAA,CACN,IAAA,CAAM,yBAAA,CACN,cAAA,CAAgB,uBAChB,uBAAA,CAAyB,cAAA,CACzB,gBAAA,CAAkB,kBAAA,CAClB,eAAgB,WAAA,CAChB,eAAA,CAAiB,yBAAA,CACjB,wBAAA,CAA0B,eAC1B,iBAAA,CAAmB,SAAA,CACnB,eAAA,CAAiB,WACnB,CACF,CAAA,CACA,CACE,EAAA,CAAI,GAAA,CACJ,QAAS,kBAAA,CACT,aAAA,CAAe,cAAA,CACf,MAAA,CAAQ,EACR,QAAA,CAAU,qBAAA,CACV,YAAA,CAAc,eAAA,CACd,YAAa,mBAAA,CACb,eAAA,CAAiB,sBAAA,CACjB,MAAA,CAAQ,SACR,gBAAA,CAAkB,WAAA,CAClB,OAAA,CAAS,kBAAA,CACT,UAAW,KACb,CAAA,CACA,CACE,EAAA,CAAI,IACJ,OAAA,CAAS,kBAAA,CACT,aAAA,CAAe,cAAA,CACf,OAAQ,MAAA,CACR,QAAA,CAAU,sBACV,YAAA,CAAc,mBAAA,CACd,YAAa,sBAAA,CACb,eAAA,CAAiB,uBAAA,CACjB,MAAA,CAAQ,SACR,gBAAA,CAAkB,eAAA,CAClB,OAAA,CAAS,kBAAA,CACT,UAAW,KACb,CAAA,CACA,CACE,EAAA,CAAI,IACJ,OAAA,CAAS,kBAAA,CACT,aAAA,CAAe,cAAA,CACf,OAAQ,IAAA,CACR,QAAA,CAAU,sBAAA,CACV,YAAA,CAAc,eACd,WAAA,CAAa,oBAAA,CACb,eAAA,CAAiB,YAAA,CACjB,OAAQ,QAAA,CACR,gBAAA,CAAkB,WAAA,CAClB,OAAA,CAAS,mBACT,SAAA,CAAW,IAAA,CACX,UAAA,CAAY,CACV,eAAgB,sBAAA,CAChB,aAAA,CAAe,WAAA,CACf,YAAA,CAAc,aACd,YAAA,CAAc,cAAA,CACd,WAAA,CAAa,WAAA,CACb,gBAAiB,cAAA,CACjB,OAAA,CAAS,KAAA,CACT,WAAA,CAAa,WACb,aAAA,CAAe,YAAA,CACf,OAAA,CAAS,UAAA,CACT,YAAa,iBACf,CACF,CAAA,CACA,CACE,GAAI,IAAA,CACJ,OAAA,CAAS,kBAAA,CACT,aAAA,CAAe,eACf,MAAA,CAAQ,KAAA,CACR,QAAA,CAAU,oBAAA,CACV,aAAc,gBAAA,CACd,WAAA,CAAa,kBACb,eAAA,CAAiB,WAAA,CACjB,OAAQ,SAAA,CACR,gBAAA,CAAkB,WAAA,CAClB,OAAA,CAAS,mBACT,SAAA,CAAW,KAAA,CACX,UAAA,CAAY,CACV,eAAgB,oBAAA,CAChB,aAAA,CAAe,WAAA,CACf,YAAA,CAAc,aACd,YAAA,CAAc,gBAAA,CACd,WAAA,CAAa,WAAA,CACb,gBAAiB,cAAA,CACjB,OAAA,CAAS,KAAA,CACT,WAAA,CAAa,WACb,aAAA,CAAe,YAAA,CACf,OAAA,CAAS,UAAA,CACT,YAAa,iBACf,CACF,CAAA,CACA,CACE,GAAI,IAAA,CACJ,OAAA,CAAS,mBACT,aAAA,CAAe,cAAA,CACf,OAAQ,IAAA,CACR,QAAA,CAAU,oBAAA,CACV,YAAA,CAAc,iBACd,WAAA,CAAa,8BAAA,CACb,eAAA,CAAiB,2BAAA,CACjB,OAAQ,QAAA,CACR,gBAAA,CAAkB,WAAA,CAClB,OAAA,CAAS,mBACT,SAAA,CAAW,IAAA,CACX,WAAA,CAAa,CACX,KAAM,eAAA,CACN,IAAA,CAAM,yBAAA,CACN,IAAA,CAAM,0BACN,cAAA,CAAgB,oBAAA,CAChB,uBAAA,CAAyB,cAAA,CACzB,iBAAkB,iBAAA,CAClB,cAAA,CAAgB,UAAA,CAChB,eAAA,CAAiB,oBACjB,wBAAA,CAA0B,cAAA,CAC1B,kBAAmB,eAAA,CACnB,eAAA,CAAiB,UACnB,CACF,CAAA,CACA,CACE,EAAA,CAAI,KACJ,OAAA,CAAS,kBAAA,CACT,aAAA,CAAe,cAAA,CACf,OAAQ,MAAA,CACR,QAAA,CAAU,qBAAA,CACV,YAAA,CAAc,eACd,WAAA,CAAa,wBAAA,CACb,eAAA,CAAiB,0BAAA,CACjB,OAAQ,SAAA,CACR,gBAAA,CAAkB,eAAA,CAClB,OAAA,CAAS,mBACT,SAAA,CAAW,KAAA,CACX,WAAA,CAAa,CACX,KAAM,eAAA,CACN,IAAA,CAAM,yBAAA,CACN,IAAA,CAAM,0BACN,cAAA,CAAgB,cAAA,CAChB,uBAAA,CAAyB,cAAA,CACzB,iBAAkB,YAAA,CAClB,cAAA,CAAgB,UAAA,CAChB,eAAA,CAAiB,0BACjB,wBAAA,CAA0B,cAAA,CAC1B,iBAAA,CAAmB,WAAA,CACnB,gBAAiB,UACnB,CACF,CAAA,CACA,CACE,GAAI,IAAA,CACJ,OAAA,CAAS,kBAAA,CACT,aAAA,CAAe,eACf,MAAA,CAAQ,KAAA,CACR,QAAA,CAAU,iBAAA,CACV,aAAc,aAAA,CACd,WAAA,CAAa,uCAAA,CACb,eAAA,CAAiB,aACjB,MAAA,CAAQ,QAAA,CACR,gBAAA,CAAkB,WAAA,CAClB,QAAS,kBAAA,CACT,SAAA,CAAW,MACX,UAAA,CAAY,CACV,eAAgB,iBAAA,CAChB,aAAA,CAAe,WAAA,CACf,YAAA,CAAc,aACd,YAAA,CAAc,aAAA,CACd,WAAA,CAAa,WAAA,CACb,gBAAiB,cAAA,CACjB,OAAA,CAAS,KAAA,CACT,WAAA,CAAa,WACb,aAAA,CAAe,YAAA,CACf,OAAA,CAAS,UAAA,CACT,YAAa,iBAAA,CACb,UAAA,CAAY,KAAA,CACZ,YAAA,CAAc,qBACd,UAAA,CAAY,kBACd,CACF,CAAA,CACA,CACE,EAAA,CAAI,IAAA,CACJ,OAAA,CAAS,kBAAA,CACT,cAAe,cAAA,CACf,MAAA,CAAQ,GAAA,CACR,QAAA,CAAU,gBACV,YAAA,CAAc,eAAA,CACd,WAAA,CAAa,4BAAA,CACb,gBAAiB,sBAAA,CACjB,MAAA,CAAQ,QAAA,CACR,gBAAA,CAAkB,YAClB,OAAA,CAAS,kBAAA,CACT,SAAA,CAAW,IAAA,CACX,YAAa,CACX,eAAA,CAAiB,sBAAA,CACjB,wBAAA,CAA0B,eAC1B,mBAAA,CAAqB,aAAA,CACrB,oBAAA,CAAsB,UAAA,CACtB,eAAgB,eAAA,CAChB,uBAAA,CAAyB,cAAA,CACzB,kBAAA,CAAoB,kBACpB,mBAAA,CAAqB,UAAA,CACrB,IAAA,CAAM,yBAAA,CACN,KAAM,yBACR,CACF,EACA,CACE,EAAA,CAAI,KACJ,OAAA,CAAS,kBAAA,CACT,aAAA,CAAe,cAAA,CACf,OAAQ,KAAA,CACR,QAAA,CAAU,iBAAA,CACV,YAAA,CAAc,eACd,WAAA,CAAa,iCAAA,CACb,eAAA,CAAiB,qBAAA,CACjB,OAAQ,WAAA,CACR,gBAAA,CAAkB,WAAA,CAClB,OAAA,CAAS,mBACT,SAAA,CAAW,KACb,CAAA,CACA,CACE,GAAI,IAAA,CACJ,OAAA,CAAS,kBAAA,CACT,aAAA,CAAe,eACf,MAAA,CAAQ,KAAA,CACR,QAAA,CAAU,sBAAA,CACV,aAAc,aAAA,CACd,WAAA,CAAa,yBAAA,CACb,eAAA,CAAiB,wBACjB,MAAA,CAAQ,QAAA,CACR,gBAAA,CAAkB,WAAA,CAClB,QAAS,kBAAA,CACT,SAAA,CAAW,IAAA,CACX,UAAA,CAAY,CACV,OAAA,CAAS,KAAA,CACT,WAAA,CAAa,iBAAA,CACb,YAAa,sBAAA,CACb,SAAA,CAAW,YAAA,CACX,aAAA,CAAe,YACjB,CACF,CAAA,CACA,CACE,EAAA,CAAI,KACJ,OAAA,CAAS,kBAAA,CACT,aAAA,CAAe,cAAA,CACf,OAAQ,KAAA,CACR,QAAA,CAAU,cAAA,CACV,YAAA,CAAc,kBACd,WAAA,CAAa,wBAAA,CACb,gBAAiB,sBAAA,CACjB,MAAA,CAAQ,UACR,gBAAA,CAAkB,iBAAA,CAClB,OAAA,CAAS,kBAAA,CACT,UAAW,KAAA,CACX,UAAA,CAAY,CACV,OAAA,CAAS,MACT,WAAA,CAAa,iBAAA,CACb,WAAA,CAAa,cAAA,CACb,UAAW,YAAA,CACX,aAAA,CAAe,YACjB,CACF,EACA,CACE,EAAA,CAAI,IAAA,CACJ,OAAA,CAAS,mBACT,aAAA,CAAe,cAAA,CACf,MAAA,CAAQ,GAAA,CACR,SAAU,oBAAA,CACV,YAAA,CAAc,iBAAA,CACd,WAAA,CAAa,kCACb,eAAA,CAAiB,2BAAA,CACjB,MAAA,CAAQ,SAAA,CACR,iBAAkB,MAAA,CAClB,OAAA,CAAS,kBAAA,CACT,SAAA,CAAW,KACX,WAAA,CAAa,CACX,eAAA,CAAiB,oBAAA,CACjB,yBAA0B,cAAA,CAC1B,mBAAA,CAAqB,UAAA,CACrB,oBAAA,CAAsB,WACtB,cAAA,CAAgB,oBAAA,CAChB,uBAAA,CAAyB,cAAA,CACzB,mBAAoB,aAAA,CACpB,mBAAA,CAAqB,UAAA,CACrB,IAAA,CAAM,0BACN,IAAA,CAAM,yBACR,CACF,CAAA,CACA,CACE,EAAA,CAAI,IAAA,CACJ,OAAA,CAAS,kBAAA,CACT,cAAe,cAAA,CACf,MAAA,CAAQ,KACR,QAAA,CAAU,oBAAA,CACV,aAAc,cAAA,CACd,WAAA,CAAa,wBAAA,CACb,eAAA,CAAiB,aACjB,MAAA,CAAQ,QAAA,CACR,gBAAA,CAAkB,WAAA,CAClB,QAAS,kBAAA,CACT,SAAA,CAAW,IAAA,CACX,UAAA,CAAY,CACV,OAAA,CAAS,KAAA,CACT,WAAA,CAAa,iBAAA,CACb,YAAa,oBAAA,CACb,SAAA,CAAW,YAAA,CACX,aAAA,CAAe,YACjB,CACF,CAAA,CACA,CACE,EAAA,CAAI,KACJ,OAAA,CAAS,kBAAA,CACT,aAAA,CAAe,cAAA,CACf,OAAQ,GAAA,CACR,QAAA,CAAU,gBAAA,CACV,YAAA,CAAc,gBACd,WAAA,CAAa,mBAAA,CACb,eAAA,CAAiB,sBAAA,CACjB,OAAQ,QAAA,CACR,gBAAA,CAAkB,WAAA,CAClB,OAAA,CAAS,mBACT,SAAA,CAAW,KACb,CACF,CAAA,CAEaC,GAA0B,CACrC,CACE,EAAA,CAAI,GAAA,CACJ,OAAQ,qBAAA,CACR,IAAA,CAAM,QAAA,CACN,OAAA,CAAS,gCACT,MAAA,CAAQ,SAAA,CACR,SAAA,CAAW,qBACb,EACA,CACE,EAAA,CAAI,GAAA,CACJ,MAAA,CAAQ,uBACR,IAAA,CAAM,QAAA,CACN,QAAS,8BAAA,CACT,SAAA,CAAW,qBACb,CAAA,CACA,CACE,EAAA,CAAI,GAAA,CACJ,OAAQ,qBAAA,CACR,IAAA,CAAM,aAAA,CACN,OAAA,CAAS,0CACT,MAAA,CAAQ,aAAA,CACR,SAAA,CAAW,qBACb,EACA,CACE,EAAA,CAAI,GAAA,CACJ,MAAA,CAAQ,oBACR,IAAA,CAAM,eAAA,CACN,OAAA,CAAS,uCAAA,CACT,UAAW,qBACb,CAAA,CACA,CACE,EAAA,CAAI,IACJ,MAAA,CAAQ,UAAA,CACR,IAAA,CAAM,cAAA,CACN,QAAS,qCAAA,CACT,MAAA,CAAQ,QAAA,CACR,SAAA,CAAW,qBACb,CACF,CAAA,CCtjBA,IAAM9V,EAAAA,CAA4C,CAChD,gBAAA,CAAkB,GAClB,kBAAA,CAAoB,EAAA,CACpB,iBAAA,CAAmB,EAAA,CACnB,WAAY,KAAA,CACZ,WAAA,CAAa,KAAA,CACb,UAAA,CAAY,MACZ,cAAA,CAAgB,EAAA,CAChB,SAAA,CAAW,EAAA,CACX,eAAgB,EAAA,CAChB,UAAA,CAAY,EAAA,CACZ,kBAAA,CAAoB,GACpB,SAAA,CAAW,KAAA,CACX,aAAA,CAAe,EAAA,CACf,iBAAkB,EAAC,CACnB,UAAW,MAAA,CACX,OAAA,CAAS,OACT,aAAA,CAAe,MAAA,CACf,WAAA,CAAa,MAAA,CACb,UAAW,EAAA,CACX,SAAA,CAAW,EAAA,CACX,SAAA,CAAW,GACX,SAAA,CAAW,EAAA,CACX,iBAAA,CAAmB,GACnB,eAAA,CAAiB,EACnB,CAAA,CAGME,GAA+B,CACnC,gBAAA,CAAkB,CAChB,CAAE,MAAO,YAAA,CAAc,KAAA,CAAO,YAAa,CAAA,CAC3C,CAAE,KAAA,CAAO,WAAA,CAAa,KAAA,CAAO,WAAY,EACzC,CAAE,KAAA,CAAO,YAAA,CAAc,KAAA,CAAO,YAAa,CAAA,CAC3C,CAAE,KAAA,CAAO,uBAAA,CAAyB,MAAO,uBAAwB,CAAA,CACjE,CAAE,KAAA,CAAO,uBAAwB,KAAA,CAAO,sBAAuB,CAAA,CAC/D,CAAE,MAAO,sBAAA,CAAwB,KAAA,CAAO,sBAAuB,CAAA,CAC/D,CAAE,KAAA,CAAO,qBAAA,CAAuB,KAAA,CAAO,qBAAsB,EAC7D,CAAE,KAAA,CAAO,2BAAA,CAA6B,KAAA,CAAO,2BAA4B,CAAA,CACzE,CAAE,KAAA,CAAO,0BAAA,CAA4B,MAAO,0BAA2B,CAAA,CACvE,CAAE,KAAA,CAAO,qBAAA,CAAuB,MAAO,SAAU,CAAA,CACjD,CAAE,KAAA,CAAO,uBAAwB,KAAA,CAAO,UAAW,CACrD,CAAA,CACA,oBAAqB,CACnB,CAAE,KAAA,CAAO,SAAA,CAAW,MAAO,SAAU,CAAA,CACrC,CAAE,KAAA,CAAO,SAAU,KAAA,CAAO,QAAS,CAAA,CACnC,CAAE,MAAO,QAAA,CAAU,KAAA,CAAO,QAAS,CAAA,CACnC,CAAE,KAAA,CAAO,WAAA,CAAa,KAAA,CAAO,WAAY,CAC3C,CAAA,CACA,kBAAA,CAAoB,CAClB,CAAE,MAAO,WAAA,CAAa,KAAA,CAAO,WAAY,CAAA,CACzC,CAAE,KAAA,CAAO,WAAA,CAAa,KAAA,CAAO,WAAY,EACzC,CAAE,KAAA,CAAO,iBAAA,CAAmB,KAAA,CAAO,iBAAkB,CAAA,CACrD,CAAE,KAAA,CAAO,eAAA,CAAiB,MAAO,eAAgB,CAAA,CACjD,CAAE,KAAA,CAAO,OAAQ,KAAA,CAAO,MAAO,CAAA,CAC/B,CAAE,MAAO,WAAA,CAAa,KAAA,CAAO,WAAY,CAC3C,EACA,UAAA,CAAY,CACV,CAAE,KAAA,CAAO,SAAA,CAAW,MAAO,SAAU,CAAA,CACrC,CAAE,KAAA,CAAO,WAAY,KAAA,CAAO,UAAW,CACzC,CAAA,CACA,SAAU,CACR,CAAE,KAAA,CAAO,KAAA,CAAO,MAAO,KAAM,CAAA,CAC7B,CAAE,KAAA,CAAO,OAAQ,KAAA,CAAO,MAAO,CACjC,CACF,EAEM6V,EAAAA,CAAqB,IAAM,CAC/B,IAAM/M,EAAWC,WAAAA,EAAY,CACvB,CAAC3mB,CAAAA,CAAQukB,CAAS,CAAA,CAAIv9B,QAAAA,CAAiB,SAAS,CAAA,CAChD,CAACiZ,CAAAA,CAAewkB,CAAgB,CAAA,CAAIz9B,QAAAA,CAAyB,MAAM,CAAA,CACnE,CAAC6f,CAAAA,CAASqgB,CAAU,EAAIlgC,QAAAA,CAAoC02B,EAAc,CAAA,CAC1E,CAACn1B,EAAWuJ,CAAY,CAAA,CAAI9K,QAAAA,CAAS,IAAI,EACzC,CAAC3C,CAAAA,CAAO6N,CAAQ,CAAA,CAAIlL,SAAwB,IAAI,CAAA,CAGhD0sC,CAAAA,CAAmBlhC,WAAAA,CAAY,SAAY,CAC/CV,CAAAA,CAAa,IAAI,CAAA,CACjBI,EAAS,IAAI,CAAA,CACb,GAAI,CAEF,MAAM,IAAI,OAAA,CAAQ2zB,CAAAA,EAAW,UAAA,CAAWA,CAAAA,CAAS,GAAG,CAAC,EAEvD,CAAA,MAAS8N,CAAAA,CAAK,CACZzhC,CAAAA,CAASyhC,CAAAA,YAAe,KAAA,CAAQA,CAAAA,CAAI,QAAU,6BAA6B,EAC7E,CAAA,OAAE,CACA7hC,EAAa,KAAK,EACpB,CACF,CAAA,CAAG,EAAE,CAAA,CAGLO,SAAAA,CAAU,IAAM,CACdqhC,CAAAA,GACF,CAAA,CAAG,CAACA,CAAgB,CAAC,CAAA,CAErB,IAAM5F,CAAAA,CAAct7B,YAAY,IAAM,CACpCkhC,CAAAA,GACF,EAAG,CAACA,CAAgB,CAAC,CAAA,CAGfE,EAAuBlkB,OAAAA,CAAQ,IAAM,CACzC,IAAI4X,EAAW,CAAC,GAAGiM,EAAgB,CAAA,CAanC,GAXI1sB,CAAAA,CAAQ,aAAA,GACVygB,CAAAA,CAAWA,CAAAA,CAAS,OAAOxhC,CAAAA,EACzBA,CAAAA,CAAE,aAAA,CAAc,WAAA,GAAc,QAAA,CAAS+gB,CAAAA,CAAQ,aAAA,CAAe,WAAA,EAAa,CAC7E,CAAA,CAAA,CAEEA,EAAQ,eAAA,EAAmBA,CAAAA,CAAQ,gBAAgB,MAAA,CAAS,CAAA,GAC9DygB,CAAAA,CAAWA,CAAAA,CAAS,OAAOxhC,CAAAA,EAAK+gB,CAAAA,CAAQ,eAAA,CAAiB,QAAA,CAAS/gB,EAAE,eAAe,CAAC,CAAA,CAAA,CAElF+gB,CAAAA,CAAQ,mBAAqBA,CAAAA,CAAQ,iBAAA,CAAkB,MAAA,CAAS,CAAA,GAClEygB,EAAWA,CAAAA,CAAS,MAAA,CAAOxhC,CAAAA,EAAK+gB,CAAAA,CAAQ,kBAAmB,QAAA,CAAS/gB,CAAAA,CAAE,MAAM,CAAC,GAE3E+gB,CAAAA,CAAQ,SAAA,CAAW,CACrB,IAAMgtB,EAAY,UAAA,CAAWhtB,CAAAA,CAAQ,SAAA,CAAU,OAAA,CAAQ,YAAa,EAAE,CAAC,CAAA,CAClE,KAAA,CAAMgtB,CAAS,CAAA,GAClBvM,CAAAA,CAAWA,CAAAA,CAAS,MAAA,CAAOxhC,IAAKA,EAAAA,CAAE,MAAA,EAAU+tC,CAAS,CAAA,EAEzD,CACA,GAAIhtB,CAAAA,CAAQ,SAAA,CAAW,CACrB,IAAMitB,CAAAA,CAAY,UAAA,CAAWjtB,CAAAA,CAAQ,SAAA,CAAU,QAAQ,WAAA,CAAa,EAAE,CAAC,CAAA,CAClE,MAAMitB,CAAS,CAAA,GAClBxM,CAAAA,CAAWA,CAAAA,CAAS,OAAOxhC,EAAAA,EAAKA,EAAAA,CAAE,QAAUguC,CAAS,CAAA,EAEzD,CACA,OAAIjtB,CAAAA,CAAQ,WAAA,GACVygB,CAAAA,CAAWA,EAAS,MAAA,CAAOxhC,CAAAA,EAAK,CAACA,CAAAA,CAAE,gBAAgB,WAAA,EAAY,CAAE,QAAA,CAAS,MAAM,CAAC,CAAA,CAAA,CAE/E+gB,CAAAA,CAAQ,UAAA,GACVygB,CAAAA,CAAWA,EAAS,MAAA,CAAOxhC,CAAAA,EAAK,CAACA,CAAAA,CAAE,gBAAgB,WAAA,EAAY,CAAE,QAAA,CAAS,KAAK,CAAC,CAAA,CAAA,CAG3EwhC,CACT,CAAA,CAAG,CAACzgB,CAAO,CAAC,CAAA,CAGNktB,CAAAA,CAAqBrkB,OAAAA,CAAQ,IAC1B,CAAC,GAAGkkB,CAAoB,CAAA,CAAE,KAAK,CAACpO,CAAAA,CAAGqF,CAAAA,GAAM,CAC9C,IAAMC,EAAAA,CAAStF,CAAAA,CAAExlB,CAA2B,CAAA,CACtC+qB,GAASF,CAAAA,CAAE7qB,CAA2B,CAAA,CAE5C,OAAI8qB,KAAW,MAAA,EAAaC,EAAAA,GAAW,MAAA,CAAkB,CAAA,CACrDD,GAASC,EAAAA,CAAe9qB,CAAAA,GAAkB,KAAA,CAAQ,EAAA,CAAK,EACvD6qB,EAAAA,CAASC,EAAAA,CAAe9qB,CAAAA,GAAkB,KAAA,CAAQ,EAAI,EAAA,CACnD,CACT,CAAC,CAAA,CACA,CAAC2zB,EAAsB5zB,CAAAA,CAAQC,CAAa,CAAC,CAAA,CAG1CsnB,EAAqB/0B,WAAAA,CAAY,CAACpB,CAAAA,CAAwCjR,CAAAA,GAAuB,CACrG+mC,CAAAA,CAAWz0B,EAAAA,GAAS,CAAE,GAAGA,GAAM,CAACrB,CAAK,EAAGjR,CAAM,EAAE,EAClD,CAAA,CAAG,EAAE,EAECinB,CAAAA,CAAqB5U,WAAAA,CAAY,IAAM,CAC3C00B,EAAWxJ,EAAc,EAC3B,CAAA,CAAG,EAAE,CAAA,CAECvW,CAAAA,CAAqB3U,WAAAA,CAAY,IAAM,CAC3C,OAAA,CAAQ,GAAA,CAAI,mBAAA,CAAqBqU,CAAO,EAC1C,CAAA,CAAG,CAACA,CAAO,CAAC,EAENtG,CAAAA,CAAa/N,WAAAA,CAAahF,CAAAA,EAAgB,CAC1CwS,IAAWxS,CAAAA,CACbi3B,CAAAA,CAAiBhyB,CAAAA,EAAQA,CAAAA,GAAS,MAAQ,MAAA,CAAS,KAAK,CAAA,EAExD8xB,CAAAA,CAAU/2B,CAAG,CAAA,CACbi3B,CAAAA,CAAiB,KAAK,CAAA,EAE1B,EAAG,CAACzkB,CAAM,CAAC,CAAA,CAELwnB,EAAiBh1B,WAAAA,CAAaosB,CAAAA,EAA6B,CAC/D8H,CAAAA,CAAS,CAAA,cAAA,EAAiB9H,EAAY,EAAE,CAAA,CAAE,EAC5C,CAAA,CAAG,CAAC8H,CAAQ,CAAC,CAAA,CAIP3mB,CAAAA,CAA0C2P,QAAQ,IAAM,CAC5D,CACE,GAAA,CAAK,UACL,KAAA,CAAO,SAAA,CACP,QAAA,CAAU,IACZ,EACA,CACE,GAAA,CAAK,eAAA,CACL,KAAA,CAAO,iBACP,QAAA,CAAU,IACZ,CAAA,CACA,CACE,IAAK,QAAA,CACL,KAAA,CAAO,QAAA,CACP,QAAA,CAAU,KACV,KAAA,CAAO,OAAA,CACP,MAAA,CAASvvB,CAAAA,EACPa,IAAC,MAAA,CAAA,CAAK,SAAA,CAAYb,CAAAA,CAAmB,CAAA,CAAI,mBAAqB,EAAA,CAC3D,QAAA,CAAAD,EAAAA,CAAeC,CAAe,EACjC,CAEJ,CAAA,CACA,CACE,GAAA,CAAK,WACL,KAAA,CAAO,UAAA,CACP,QAAA,CAAU,IAAA,CACV,OAASA,CAAAA,EACPa,GAAAA,CAAC4C,CAAAA,CAAA,CAAO,QAAQ,MAAA,CAAO,SAAA,CAAU,gCAAA,CAC9B,QAAA,CAAAzD,EACH,CAEJ,CAAA,CACA,CACE,GAAA,CAAK,eACL,KAAA,CAAO,cAAA,CACP,SAAU,IAAA,CACV,MAAA,CAASA,GACPa,GAAAA,CAAC4C,CAAAA,CAAA,CAAO,OAAA,CAAQ,OAAO,SAAA,CAAU,gCAAA,CAC9B,QAAA,CAAAzD,CAAAA,CACH,CAEJ,CAAA,CACA,CACE,GAAA,CAAK,aAAA,CACL,MAAO,aAAA,CACP,QAAA,CAAU,IAAA,CACV,MAAA,CAASA,GACPa,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,8BAAA,CAAgC,SAAAb,CAAAA,CAAgB,CAEpE,CAAA,CACA,CACE,IAAK,iBAAA,CACL,KAAA,CAAO,kBAAA,CACP,QAAA,CAAU,KACV,MAAA,CAASA,CAAAA,EACPa,GAAAA,CAACsB,CAAAA,CAAA,CAAM,OAAA,CAAQ,SAAA,CAAU,SAAA,CAAU,uCAAA,CAChC,SAAAnC,CAAAA,CACH,CAEJ,CAAA,CACA,CACE,IAAK,QAAA,CACL,KAAA,CAAO,QAAA,CACP,QAAA,CAAU,KACV,MAAA,CAASA,CAAAA,EACPa,GAAAA,CAAC0c,EAAAA,CAAA,CAAY,MAAA,CAAQvd,CAAAA,CAAwD,CAEjF,CAAA,CACA,CACE,GAAA,CAAK,SAAA,CACL,KAAA,CAAO,SAAA,CACP,SAAU,IACZ,CACF,CAAA,CAAG,EAAE,CAAA,CAGCynB,CAAAA,CAAQ8H,QAAQ,IACpB1uB,GAAAA,CAAC8e,GAAA,CACC,OAAA,CAASC,CAAAA,CACT,IAAA,CAAMg0B,EACN,MAAA,CAAQ/zB,CAAAA,CACR,aAAA,CAAeC,CAAAA,CACf,OAAQM,CAAAA,CACR,UAAA,CAAYinB,CAAAA,CACd,CAAA,CACC,CAACznB,CAAAA,CAASg0B,CAAAA,CAAoB/zB,CAAAA,CAAQC,CAAAA,CAAeM,EAAYinB,CAAc,CAAC,CAAA,CAEnF,OACExmC,IAACo9B,EAAAA,CAAA,CACC,KAAA,CAAOxW,CAAAA,CACP,QAASf,CAAAA,CACT,aAAA,CAAe+W,EAAAA,CACf,cAAA,CAAgB2J,EAChB,cAAA,CAAgBngB,CAAAA,CAChB,eAAgBD,CAAAA,CAChB,SAAA,CAAW5e,EACX,KAAA,CAAOlE,CAAAA,CACP,OAAA,CAASypC,CAAAA,CACX,CAEJ,CAAA,CAEOkG,EAAAA,CAAQP,GClRR,IAAMQ,EAAAA,CAAuBnhC,EACjC,MAAA,CAAO,CACN,eAAA,CAAiBA,CAAAA,CAAE,QAAO,CAAE,GAAA,CAAI,CAAA,CAAG,8BAA8B,EACjE,aAAA,CAAeA,CAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAA,CAAG,4BAA4B,CAAA,CAC7D,gBAAA,CAAkBA,EAAE,MAAA,EAAO,CAAE,QAAA,EAAS,CACtC,OAAQA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,EAAG,oBAAoB,CAAA,CAC9C,WAAA,CAAaA,CAAAA,CAAE,QAAO,CAAE,GAAA,CAAI,CAAA,CAAG,yBAAyB,EACxD,kBAAA,CAAoBA,CAAAA,CAAE,OAAA,EAAQ,CAAE,OAAQ5B,CAAAA,EAAQA,CAAAA,GAAQ,IAAA,CAAM,CAC5D,QAAS,6CACX,CAAC,CAAA,CAED,mBAAA,CAAqB4B,EAAE,MAAA,EAAO,CAAE,QAAA,EAAS,CACzC,eAAgBA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAEpC,sBAAuBA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EACpC,CAAC,CAAA,CACA,MAAA,CACExG,CAAAA,EAEK,EADyB,CAAC,KAAA,CAAO,MAAM,CAAA,CAAE,SAASA,CAAAA,CAAK,eAAe,CAAA,EAC9C,CAACA,EAAK,gBAAA,CAAA,CAKpC,CACE,OAAA,CAAS,wDAAA,CACT,KAAM,CAAC,kBAAkB,CAC3B,CACF,EACC,MAAA,CACEA,CAAAA,EACK,EAAAA,CAAAA,CAAK,kBAAoB,YAAA,GACvB,CAACA,CAAAA,CAAK,mBAAA,EAAuB,CAACA,CAAAA,CAAK,cAAA,CAAA,CAAA,CAI3C,CACE,OAAA,CAAS,8DACT,IAAA,CAAM,CAAC,qBAAqB,CAC9B,CACF,CAAA,CACC,MAAA,CACEA,CAAAA,EACK,EAAAA,EAAK,eAAA,GAAoB,UAAA,EACvB,CAACA,CAAAA,CAAK,uBAId,CACE,OAAA,CAAS,+DAAA,CACT,IAAA,CAAM,CAAC,uBAAuB,CAChC,CACF,CAAA,CAGI4nC,GAA+B,CACnC,aAAA,CAAe,UAAA,CACf,WAAA,CAAa,oBACb,WAAA,CAAa,UAAA,CACb,QAAS,aAAA,CACT,YAAA,CAAc,mBACd,UAAA,CAAY,UAAA,CACZ,YAAA,CAAc,UAChB,EAEe,SAARC,EAAAA,EAAkC,CACvC,IAAMzN,EAAWC,WAAAA,EAAY,CAGvB,CAACpN,CAAAA,CAAiB6a,CAAkB,CAAA,CAAIptC,QAAAA,CAAS,KAAK,CAAA,CACtD,CAACwyB,CAAAA,CAAa6a,CAAc,CAAA,CAAIrtC,QAAAA,CAA6B,IAAI,CAAA,CACjE,CAACyyB,CAAAA,CAAsB6a,CAAuB,EAAIttC,QAAAA,CAAS,KAAK,CAAA,CAChE,CAAC6kB,EAAkB+jB,CAAmB,CAAA,CAAI5oC,QAAAA,CAAkC,IAAI,EAChF,CAACgzB,CAAAA,CAA2Bua,CAA4B,CAAA,CAAIvtC,SAAqC,EAAE,CAAA,CACnG,CAACizB,EAAyBua,CAA0B,CAAA,CAAIxtC,QAAAA,CAAS,KAAK,EACtE,CAACkzB,CAAAA,CAA0Bua,CAA2B,CAAA,CAAIztC,SAAS,KAAK,CAAA,CAExE,CAAC0tC,CAAAA,CAAwBC,CAAyB,CAAA,CAAI3tC,QAAAA,CAAS,CAAC,CAAA,CAChE,CAAC6zB,CAAAA,CAAqB+Z,CAAsB,CAAA,CAAI5tC,QAAAA,CAAS,KAAK,CAAA,CAC9D,CAAC8zB,EAA0B+Z,CAA2B,CAAA,CAAI7tC,SAAS,CAAC,CAAA,CACpE,CAAC+zB,CAAAA,CAA6B+Z,CAA8B,CAAA,CAAI9tC,QAAAA,CAAS,KAAK,CAAA,CAC9E,CAAC+tC,CAAAA,CAAoBC,EAAqB,CAAA,CAAIhuC,QAAAA,CAAS,EAAE,CAAA,CACzD,CAAC0yB,EAAAA,CAAkBub,CAAmB,EAAIjuC,QAAAA,CAAS,KAAK,CAAA,CACxD,CAAC2yB,EAAkBub,CAAmB,CAAA,CAAIluC,QAAAA,CAAqC,IAAI,EACnF,CAAC4yB,CAAAA,CAAcub,CAAe,CAAA,CAAInuC,SAAS,EAAE,CAAA,CAC7C,CAAC6yB,CAAAA,CAAeub,EAAgB,CAAA,CAAIpuC,QAAAA,CAAS,EAAE,CAAA,CAC/C,CAAC8yB,CAAAA,CAAkBub,EAAmB,CAAA,CAAIruC,QAAAA,CAAS,KAAK,CAAA,CACxD,CAAC+yB,EAAAA,CAAuBub,EAAwB,EAAItuC,QAAAA,CAAS,KAAK,CAAA,CAClE,CAACK,GAAcC,EAAe,CAAA,CAAIN,QAAAA,CAAS,KAAK,EAEhD,CAACi0B,EAAAA,CAAyBsa,EAA0B,CAAA,CAAIvuC,SAAS,KAAK,CAAA,CACtE,CAACk0B,EAAAA,CAAqBsa,EAAsB,CAAA,CAAIxuC,QAAAA,CAA6B,IAAI,CAAA,CACjF,CAACm0B,GAA0Bsa,EAA2B,CAAA,CAAIzuC,QAAAA,CAAS,KAAK,EAExEwJ,EAAAA,CAAOuB,OAAAA,CAAkC,CAC7C,QAAA,CAAUC,YAAYiiC,EAAoB,CAAA,CAC1C,aAAA,CAAe,CACb,gBAAiB,EAAA,CACjB,aAAA,CAAe,EAAA,CACf,gBAAA,CAAkB,GAClB,MAAA,CAAQ,EAAA,CACR,WAAA,CAAa,EAAA,CACb,mBAAoB,KAAA,CACpB,mBAAA,CAAqB,OAAA,CACrB,cAAA,CAAgB,GAChB,qBAAA,CAAuB,EACzB,CACF,CAAC,EAGKzY,EAAAA,CAAyB9L,OAAAA,CAC7B,IAAM,CACJ,CAAE,KAAA,CAAO,UAAA,CAAY,KAAA,CAAO,UAAA,CAAY,KAAM3W,cAAAA,CAAgB,QAAA,CAAU,KAAM,CAAA,CAC9E,CAAE,KAAA,CAAO,YAAA,CAAc,KAAA,CAAO,YAAA,CAAc,KAAMa,QAAAA,CAAU,QAAA,CAAU,KAAM,CAAA,CAC5E,CAAE,KAAA,CAAO,KAAA,CAAO,KAAA,CAAO,KAAA,CAAO,KAAMT,SAAAA,CAAW,QAAA,CAAU,IAAK,CAAA,CAC9D,CAAE,KAAA,CAAO,MAAA,CAAQ,KAAA,CAAO,MAAA,CAAQ,KAAMQ,GAAAA,CAAK,QAAA,CAAU,KAAM,CAC7D,CAAA,CACA,EACF,CAAA,CAGMmiB,EAAAA,CAAsBtrB,EAAAA,CAAK,MAAM,qBAAqB,CAAA,CAEtD+qB,EAAAA,CAAwB7L,OAAAA,CAAQ,IAChCoM,EAAAA,GAAwB,QAAA,CACnB,CACL,CAAE,MAAO,iBAAA,CAAmB,KAAA,CAAO,iBAAkB,CAAA,CACrD,CAAE,KAAA,CAAO,cAAA,CAAgB,KAAA,CAAO,cAAe,EAC/C,CAAE,KAAA,CAAO,oBAAA,CAAsB,KAAA,CAAO,oBAAqB,CAC7D,CAAA,CAGK,CACL,CAAE,MAAO,YAAA,CAAc,KAAA,CAAO,YAAa,CAAA,CAC3C,CAAE,KAAA,CAAO,sBAAA,CAAwB,KAAA,CAAO,sBAAuB,EAC/D,CAAE,KAAA,CAAO,wBAAA,CAA0B,KAAA,CAAO,wBAAyB,CACrE,CAAA,CACC,CAACA,EAAmB,CAAC,CAAA,CAGxBzpB,SAAAA,CAAU,IAAM,CACd7B,GAAK,QAAA,CAAS,gBAAA,CAAkB,EAAE,EACpC,EAAG,CAACsrB,EAAAA,CAAqBtrB,EAAI,CAAC,EAG9B,IAAMklC,EAAAA,CAAsB,SAAY,CAEtC,GAAI,CADWllC,EAAAA,CAAK,UAAU,eAAe,CAAA,CAChC,CACXzK,KAAAA,CAAM,KAAA,CAAM,gCAAgC,CAAA,CAC5C,MACF,CACAsvC,EAAAA,CAAoB,IAAI,CAAA,CACxB,GAAI,CACF,MAAM,IAAI,OAAA,CAASxP,IAAY,UAAA,CAAWA,EAAAA,CAAS,GAAI,CAAC,EACxDwO,CAAAA,CAAeH,EAAe,CAAA,CAC9BE,CAAAA,CAAmB,EAAI,CAAA,CACvBruC,KAAAA,CAAM,OAAA,CAAQ,eAAe,EAC/B,CAAA,KAAgB,CACdA,KAAAA,CAAM,KAAA,CAAM,0BAA0B,EACxC,CAAA,OAAE,CACAsvC,EAAAA,CAAoB,KAAK,EAC3B,CACF,CAAA,CAGMM,CAAAA,CAAgD,CACpD,CAAE,EAAA,CAAI,SAAA,CAAW,IAAA,CAAM,6BAA8B,IAAA,CAAM,UAAA,CAAY,qBAAA,CAAuB,MAAO,EACrG,CAAE,EAAA,CAAI,SAAA,CAAW,IAAA,CAAM,wBAAyB,IAAA,CAAM,UAAA,CAAY,qBAAA,CAAuB,KAAM,EAC/F,CAAE,EAAA,CAAI,SAAA,CAAW,IAAA,CAAM,sBAAuB,IAAA,CAAM,UAAA,CAAY,qBAAA,CAAuB,MAAO,EAC9F,CAAE,EAAA,CAAI,UAAW,IAAA,CAAM,kBAAA,CAAoB,KAAM,UAAA,CAAY,qBAAA,CAAuB,MAAO,CAAA,CAC3F,CAAE,EAAA,CAAI,SAAA,CAAW,IAAA,CAAM,sBAAA,CAAwB,KAAM,UAAA,CAAY,qBAAA,CAAuB,KAAM,CAAA,CAC9F,CAAE,EAAA,CAAI,SAAA,CAAW,IAAA,CAAM,oBAAA,CAAsB,KAAM,UAAA,CAAY,qBAAA,CAAuB,MAAO,CAAA,CAC7F,CAAE,EAAA,CAAI,SAAA,CAAW,IAAA,CAAM,sBAAA,CAAwB,KAAM,UAAA,CAAY,qBAAA,CAAuB,MAAO,CAAA,CAC/F,CAAE,EAAA,CAAI,SAAA,CAAW,IAAA,CAAM,mBAAA,CAAqB,KAAM,UAAA,CAAY,qBAAA,CAAuB,MAAO,CAAA,CAC5F,CAAE,EAAA,CAAI,SAAA,CAAW,IAAA,CAAM,qBAAA,CAAuB,KAAM,UAAA,CAAY,qBAAA,CAAuB,KAAM,CAAA,CAC7F,CAAE,EAAA,CAAI,SAAA,CAAW,IAAA,CAAM,qBAAA,CAAuB,KAAM,UAAA,CAAY,qBAAA,CAAuB,MAAO,CAChG,EAEMC,EAAAA,CAAY,CAAA,CAGZC,EAAAA,CAA2B,CAACC,EAAwBna,EAAAA,GACpDma,CAAAA,GAAmB,MAAA,EACnBna,EAAAA,GAAoB,OAASma,CAAAA,GAAmB,KAAA,EAChDna,KAAoB,MAAA,EAAUma,CAAAA,GAAmB,OAKjDC,EAAAA,CAA0B,CAACC,CAAAA,CAAqCC,EAAAA,GAChEA,KAAW,KAAA,CACND,CAAAA,CAAQ,MAAA,CAAQrH,EAAAA,EAAOA,GAAG,qBAAA,GAA0B,KAAA,EAASA,EAAAA,CAAG,qBAAA,GAA0B,MAAM,CAAA,CAC9FsH,EAAAA,GAAW,MAAA,CACbD,CAAAA,CAAQ,OAAQrH,EAAAA,EAAOA,EAAAA,CAAG,qBAAA,GAA0B,MAAA,EAAUA,GAAG,qBAAA,GAA0B,MAAM,CAAA,CAEnGqH,CAAAA,CAIHE,GAAkBxmB,OAAAA,CACtB,IACEymB,QAAAA,CAAS,MAAO1Y,EAAewY,EAAAA,CAAgBG,EAAAA,CAAe,CAAA,GAAM,CAClE,GAAI3Y,CAAAA,CAAM,MAAA,CAAS,CAAA,CAAG,CACpB8W,EAA6B,EAAE,CAAA,CAC/BE,CAAAA,CAA4B,KAAK,CAAA,CACjCG,CAAAA,CAAuB,KAAK,CAAA,CAC5BC,EAA4B,CAAC,CAAA,CAC7B,MACF,CAEIuB,KAAS,CAAA,EACX5B,CAAAA,CAA2B,IAAI,CAAA,CAGjC,GAAI,CAEF,MAAM,IAAI,OAAA,CAAS3O,IAAY,UAAA,CAAWA,EAAAA,CAAS,GAAG,CAAC,EAGvD,IAAIwQ,EAAAA,CAAkBV,EAAkB,MAAA,CAAQhH,EAAAA,EAAOA,GAAG,IAAA,CAAK,WAAA,EAAY,CAAE,QAAA,CAASlR,EAAM,WAAA,EAAa,CAAC,CAAA,CAC1G4Y,GAAkBN,EAAAA,CAAwBM,EAAAA,CAAiBJ,EAAM,CAAA,CAGjE,IAAMnO,EAAAA,CAAAA,CAAcsO,EAAAA,CAAO,CAAA,EAAKR,EAAAA,CAC1BU,GAAmBD,EAAAA,CAAgB,KAAA,CAAMvO,EAAAA,CAAYA,EAAAA,CAAa8N,EAAS,CAAA,CAG/ErB,CAAAA,CADE6B,EAAAA,GAAS,CAAA,CACkBE,GAEC7jC,EAAAA,EAAS,CAAC,GAAGA,EAAAA,CAAM,GAAG6jC,EAAgB,CAFvB,CAAA,CAK/CzB,CAAAA,CAA4BwB,GAAgB,MAAM,CAAA,CAClDzB,CAAAA,CAAuB9M,EAAAA,CAAa8N,GAAYS,EAAAA,CAAgB,MAAM,CAAA,CACtE1B,CAAAA,CAA0ByB,EAAI,CAAA,CAC9B3B,CAAAA,CAA4B,CAAA,CAAI,EAClC,QAAE,CACAD,CAAAA,CAA2B,KAAK,EAClC,CACF,CAAA,CAAG,GAAG,CAAA,CACR,EACF,CAAA,CAGAniC,SAAAA,CAAU,IACD,IAAM,CACX6jC,EAAAA,CAAgB,MAAA,GAClB,CAAA,CACC,CAACA,EAAe,CAAC,EAEpB,IAAMK,EAAAA,CAAkCp2C,GAAkB,CACxDqQ,EAAAA,CAAK,QAAA,CAAS,kBAAA,CAAoBrQ,CAAK,CAAA,CACvC60C,EAAAA,CAAsB70C,CAAK,CAAA,CAC3Bw0C,EAA0B,CAAC,CAAA,CACvBlb,CAAAA,GACF6a,CAAAA,CAAwB,KAAK,CAAA,CAC7B1E,CAAAA,CAAoB,IAAI,CAAA,CAAA,CAE1BsG,GAAgB/1C,CAAAA,CAAOqQ,EAAAA,CAAK,SAAA,CAAU,iBAAiB,EAAG,CAAC,EAC7D,CAAA,CAEMgmC,EAAAA,CAA+B,SAAY,CAC/C1B,CAAAA,CAA+B,IAAI,CAAA,CACnC,IAAMmB,CAAAA,CAASzlC,EAAAA,CAAK,SAAA,CAAU,iBAAiB,EAC/C,MAAM0lC,EAAAA,CAAgBnB,CAAAA,CAAoBkB,CAAAA,CAAQvB,EAAyB,CAAC,CAAA,CAC5EI,CAAAA,CAA+B,KAAK,EACtC,CAAA,CAEM2B,EAAAA,CAA+BC,CAAAA,EAAoB,CAIvD,GAHAlmC,EAAAA,CAAK,QAAA,CAAS,iBAAA,CAAmBkmC,CAAO,EAGpC7qB,CAAAA,EAAoB4N,CAAAA,EACO,CAAC,KAAA,CAAO,MAAM,CAAA,CAAE,QAAA,CAASid,CAAO,CAAA,EAKvD,CAFiBb,EAAAA,CAAyBhqB,CAAAA,CAAiB,qBAAA,CAAuB6qB,CAAO,EAE1E,CAEjBpC,CAAAA,CAAwB,KAAK,CAAA,CAC7B1E,CAAAA,CAAoB,IAAI,CAAA,CACxB2E,CAAAA,CAA6B,EAAE,EAC/B/jC,EAAAA,CAAK,QAAA,CAAS,kBAAA,CAAoB,EAAE,EAEpC,IAAMmmC,EAAAA,CAAYD,CAAAA,GAAY,KAAA,CAAQ,MAAQ,MAAA,CAC9C3wC,KAAAA,CAAM,OAAA,CACJ,CAAA,EAAG8lB,EAAiB,gBAAgB,CAAA,iBAAA,EAAoB8qB,EAAS,CAAA,sDAAA,CACnE,EACF,CAGN,CAAA,CAEMC,EAAAA,CAA4Bla,CAAAA,EAAqC,CACrElsB,EAAAA,CAAK,QAAA,CAAS,kBAAA,CAAoBksB,CAAAA,CAAO,IAAI,CAAA,CAC7C+X,CAAAA,CAA4B,KAAK,CAAA,CACjCF,EAA6B,EAAE,CAAA,CAG/Be,EAAAA,CAAyB,IAAI,CAAA,CAC7B,UAAA,CAAW,IAAM,CACf1F,EAAoB,CAClB,gBAAA,CAAkBlT,CAAAA,CAAO,IAAA,CACzB,eAAgBA,CAAAA,CAAO,EAAA,CACvB,gBAAA,CAAkBA,CAAAA,CAAO,KACzB,MAAA,CAAQ,QAAA,CACR,KAAA,CAAO,YAAA,CACP,eAAgB,cAAA,CAChB,YAAA,CAAc,qBAAA,CACd,YAAA,CAAc,oBACd,OAAA,CAAS,kCAAA,CACT,qBAAA,CAAuBA,CAAAA,CAAO,qBAChC,CAAC,CAAA,CACD4X,EAAwB,IAAI,CAAA,CAC5BgB,GAAyB,KAAK,CAAA,CAC9BvvC,KAAAA,CAAM,OAAA,CAAQ,uBAAuB,EACvC,CAAA,CAAG,GAAG,EACR,EAEM8wC,EAAAA,CAAoB,IAAM,CAC9BzC,CAAAA,CAAmB,KAAK,CAAA,CACxBC,CAAAA,CAAe,IAAI,CAAA,CACnB7jC,GAAK,QAAA,CAAS,iBAAA,CAAmB,EAAE,CAAA,CACnC8jC,EAAwB,KAAK,CAAA,CAC7B1E,CAAAA,CAAoB,IAAI,EACxBp/B,EAAAA,CAAK,QAAA,CAAS,kBAAA,CAAoB,EAAE,EACpCA,EAAAA,CAAK,QAAA,CAAS,QAAA,CAAU,EAAE,EAC1BA,EAAAA,CAAK,QAAA,CAAS,aAAA,CAAe,EAAE,EAE/BA,EAAAA,CAAK,QAAA,CAAS,qBAAA,CAAuB,OAAO,EAC5CA,EAAAA,CAAK,QAAA,CAAS,gBAAA,CAAkB,EAAE,EAElC+kC,EAAAA,CAA2B,KAAK,CAAA,CAChCC,EAAAA,CAAuB,IAAI,CAAA,CAC3BhlC,EAAAA,CAAK,QAAA,CAAS,uBAAA,CAAyB,EAAE,EAC3C,CAAA,CAGMsmC,EAAAA,CAA8B,SAAY,CAC9C,IAAMC,CAAAA,CAAcvmC,EAAAA,CAAK,SAAA,CAAU,uBAAuB,CAAA,CAC1D,GAAI,CAACumC,CAAAA,CAAa,CAChBhxC,MAAM,KAAA,CAAM,wCAAwC,CAAA,CACpD,MACF,CACA0vC,EAAAA,CAA4B,IAAI,CAAA,CAChC,GAAI,CACF,MAAM,IAAI,OAAA,CAAS5P,EAAAA,EAAY,WAAWA,EAAAA,CAAS,GAAI,CAAC,CAAA,CAExD2P,GAAuB,CACrB,aAAA,CAAe,MAAA,CAASuB,CAAAA,CAAY,MAAM,CAAA,CAAE,CAAA,CAC5C,WAAA,CAAa,kBAAA,CACb,YAAa,UAAA,CACb,OAAA,CAAS,YAAA,CACT,YAAA,CAAc,gBACd,UAAA,CAAY,cAAA,CACZ,YAAA,CAAc,UAChB,CAAC,CAAA,CACDxB,EAAAA,CAA2B,CAAA,CAAI,CAAA,CAC/BxvC,MAAM,OAAA,CAAQ,wBAAwB,EACxC,CAAA,KAAgB,CACdA,KAAAA,CAAM,KAAA,CAAM,mCAAmC,EACjD,QAAE,CACA0vC,EAAAA,CAA4B,KAAK,EACnC,CACF,CAAA,CAEMuB,EAAAA,CAA4B,IAAM,CACtCzB,GAA2B,KAAK,CAAA,CAChCC,EAAAA,CAAuB,IAAI,EAC3BhlC,EAAAA,CAAK,QAAA,CAAS,uBAAA,CAAyB,EAAE,EAC3C,CAAA,CAEMymC,EAAAA,CAAyB,IAAM,CACnC3C,CAAAA,CAAwB,KAAK,CAAA,CAC7B1E,CAAAA,CAAoB,IAAI,CAAA,CACxB2E,EAA6B,EAAE,CAAA,CAC/BE,CAAAA,CAA4B,KAAK,CAAA,CACjCjkC,EAAAA,CAAK,QAAA,CAAS,kBAAA,CAAoB,EAAE,CAAA,CACpCA,EAAAA,CAAK,QAAA,CAAS,QAAA,CAAU,EAAE,CAAA,CAC1BA,EAAAA,CAAK,QAAA,CAAS,aAAA,CAAe,EAAE,EACjC,CAAA,CAEM2C,EAAAA,CAAe,SAAY,CAC/B,IAAM7G,CAAAA,CAAOkE,EAAAA,CAAK,SAAA,GACZwrB,EAAAA,CAAuB,CAAC,KAAA,CAAO,MAAM,EAAE,QAAA,CAAS1vB,CAAAA,CAAK,eAAe,CAAA,CAE1E,GAAI,CAACA,CAAAA,CAAK,eAAA,EAAmB,CAACA,EAAK,aAAA,EAAiB,CAACA,CAAAA,CAAK,MAAA,CAAQ,CAChEvG,KAAAA,CAAM,KAAA,CAAM,qCAAqC,CAAA,CACjD,MACF,CAEA,GAAIi2B,EAAAA,GAAyB,CAAC1vB,EAAK,gBAAA,EAAoB,CAACmtB,CAAAA,CAAAA,CAAuB,CAC7E1zB,MAAM,KAAA,CAAM,sDAAsD,CAAA,CAClE,MACF,CAEA,GAAI,CAACwzB,EAAiB,CACpBxzB,KAAAA,CAAM,MAAM,uBAAuB,CAAA,CACnC,MACF,CAGA,GAAIuG,CAAAA,CAAK,eAAA,GAAoB,YAAA,GACvB,CAACA,EAAK,mBAAA,EAAuB,CAACA,CAAAA,CAAK,cAAA,CAAA,CAAgB,CACrDvG,KAAAA,CAAM,KAAA,CAAM,iDAAiD,CAAA,CAC7D,MACF,CAIF,GAAIuG,CAAAA,CAAK,eAAA,GAAoB,aACvB,CAACA,CAAAA,CAAK,qBAAA,EAAyB,CAAC2uB,IAAyB,CAC3Dl1B,KAAAA,CAAM,KAAA,CAAM,6CAA6C,EACzD,MACF,CAGFuB,GAAgB,IAAI,CAAA,CACpB,GAAI,CAEF,IAAM4vC,EAAAA,CAAoB,CACxB,GAAG5qC,CAAAA,CAEH,GAAI0vB,EAAAA,EACFnQ,CAAAA,EAAoB,CAClB,cAAA,CAAgBA,CAAAA,CAAiB,cAAA,CACjC,gBAAA,CAAkBA,EAAiB,gBAAA,CACnC,iCAAA,CAAmCA,CAAAA,CAAiB,qBACtD,EAEF,SAAA,CAAW2N,CAAAA,EAAa,UAAA,CAExB,GAAIltB,EAAK,eAAA,GAAoB,UAAA,EAC3B4uB,EAAAA,EAAuB,CACrB,kBAAmBA,EAAAA,CAAoB,UACzC,CACJ,CAAA,CAQA,GANA,OAAA,CAAQ,GAAA,CAAI,kCAAmCgc,EAAiB,CAAA,CAEhE,MAAM,IAAI,OAAA,CAASrR,EAAAA,EAAY,UAAA,CAAWA,GAAS,IAAI,CAAC,CAAA,CAEvC,IAAA,CAAK,QAAO,CAAI,EAAA,CAEnB,CACZ,IAAMsR,GAAiB,CACrB,+DAAA,CAAkE,UAAA,CAAW7qC,CAAAA,CAAK,MAAM,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,CACnG,sDACA,0EAAA,CACA,2DACF,CAAA,CACA4oC,CAAAA,CAAoB,OAAO,CAAA,CAC3BC,CAAAA,CAAgBgC,EAAAA,CAAe,IAAA,CAAK,MAAM,IAAA,CAAK,MAAA,EAAO,CAAIA,EAAAA,CAAe,MAAM,CAAC,CAAC,EACnF,CAAA,KAAO,CACL,IAAMC,EAAAA,CAAO,MAAA,CAAS,IAAA,CAAK,QAAO,CAAE,QAAA,CAAS,EAAE,CAAA,CAAE,OAAO,CAAA,CAAG,CAAC,CAAA,CAAE,WAAA,GAC9DhC,EAAAA,CAAiBgC,EAAI,CAAA,CACrBlC,CAAAA,CAAoB,SAAS,EAC/B,CACAD,CAAAA,CAAoB,CAAA,CAAI,EAC1B,CAAA,OAAE,CACA3tC,EAAAA,CAAgB,KAAK,EACvB,CACF,CAAA,CAEMC,GAAY,IAAM,CACtBiJ,GAAK,KAAA,CAAM,CACT,eAAA,CAAiB,EAAA,CACjB,cAAe,EAAA,CACf,gBAAA,CAAkB,EAAA,CAClB,MAAA,CAAQ,GACR,WAAA,CAAa,EAAA,CACb,kBAAA,CAAoB,KAAA,CACpB,oBAAqB,OAAA,CACrB,cAAA,CAAgB,EAAA,CAChB,qBAAA,CAAuB,EACzB,CAAC,CAAA,CACD4jC,CAAAA,CAAmB,KAAK,EACxBC,CAAAA,CAAe,IAAI,CAAA,CACnBC,CAAAA,CAAwB,KAAK,CAAA,CAC7B1E,CAAAA,CAAoB,IAAI,CAAA,CACxB2E,EAA6B,EAAE,CAAA,CAC/BE,CAAAA,CAA4B,KAAK,CAAA,CACjCc,EAAAA,CAA2B,KAAK,CAAA,CAChCC,GAAuB,IAAI,CAAA,CAC3BN,CAAAA,CAAoB,IAAI,EACxBC,CAAAA,CAAgB,EAAE,CAAA,CAClBC,EAAAA,CAAiB,EAAE,EACrB,CAAA,CAEMiC,EAAAA,CAA0B,IAAM,CACpCpC,CAAAA,CAAoB,KAAK,CAAA,CACrBtb,CAAAA,GAAqB,WACvB+M,CAAAA,CAAS,CAAA,cAAA,EAAiB7M,CAAa,CAAA,CAAE,EAE7C,CAAA,CAEMyd,EAAAA,CAAuB,IAAM,CACjCrC,EAAoB,KAAK,CAAA,CACzB1tC,KACF,CAAA,CAGMuV,GAAatM,EAAAA,CAAK,KAAA,EAAM,CAGxB8qB,EAAAA,CAAgB5L,QAAQ,IAAM,CAClC,IAAMsM,CAAAA,CAAuB,CAAC,KAAA,CAAO,MAAM,CAAA,CAAE,QAAA,CAASlf,GAAW,eAAe,CAAA,CAYhF,OAVI,EAAA,CAACA,GAAW,eAAA,EAAmB,CAACA,EAAAA,CAAW,aAAA,EAAiB,CAACA,EAAAA,CAAW,MAAA,EAAU,CAACA,EAAAA,CAAW,aAC9Fkf,CAAAA,GAAyB,CAAClf,EAAAA,CAAW,gBAAA,EAAoB,CAAC2c,CAAAA,CAAAA,EAC1D,CAACF,CAAAA,EAGDzc,EAAAA,CAAW,kBAAoB,YAAA,GAC7B,CAACA,EAAAA,CAAW,mBAAA,EAAuB,CAACA,EAAAA,CAAW,cAAA,CAAA,EAIjDA,EAAAA,CAAW,eAAA,GAAoB,aAC7B,CAACA,EAAAA,CAAW,qBAAA,EAAyB,CAACme,IAI9C,CAAA,CAAG,CAACne,EAAAA,CAAYyc,CAAAA,CAAiBE,EAAsBwB,EAAuB,CAAC,CAAA,CAE/E,OACEj6B,IAACs4B,EAAAA,CAAA,CACC,IAAA,CAAM9oB,EAAAA,CACN,gBAAiB+oB,CAAAA,CACjB,WAAA,CAAaC,CAAAA,CACb,oBAAA,CAAsBC,EACtB,gBAAA,CAAkB5N,CAAAA,CAClB,iBAAkB6N,EAAAA,CAClB,gBAAA,CAAkBC,EAClB,YAAA,CAAcC,CAAAA,CACd,aAAA,CAAeC,CAAAA,CACf,iBAAkBC,CAAAA,CAClB,qBAAA,CAAuBC,EAAAA,CACvB,YAAA,CAAc1yB,GACd,eAAA,CAAiBquC,EAAAA,CACjB,aAAA,CAAemB,EAAAA,CACf,0BAA2B7c,CAAAA,CAC3B,uBAAA,CAAyBC,CAAAA,CACzB,wBAAA,CAA0BC,EAC1B,0BAAA,CAA4Bqc,EAAAA,CAC5B,oBAAA,CAAsBK,EAAAA,CACtB,4BAA6B,IAAMnC,CAAAA,CAA4B,KAAK,CAAA,CACpE,oBAAqB5Z,CAAAA,CACrB,wBAAA,CAA0BC,CAAAA,CAC1B,2BAAA,CAA6BC,EAC7B,wBAAA,CAA0Byb,EAAAA,CAC1B,kBAAA,CAAoBS,EAAAA,CACpB,wBAAyBR,EAAAA,CACzB,QAAA,CAAUtjC,EAAAA,CACV,mBAAA,CAAqBkkC,GACrB,wBAAA,CAA0BpC,CAAAA,CAC1B,gBAAA,CAAkBqC,EAAAA,CAElB,wBAAyBrc,EAAAA,CACzB,mBAAA,CAAqBC,EAAAA,CACrB,wBAAA,CAA0BC,GAC1B,uBAAA,CAAyB2b,EAAAA,CACzB,qBAAA,CAAuBE,EAAAA,CAEvB,cAAe1b,EAAAA,CAEf,qBAAA,CAAuBC,EAAAA,CAEvB,sBAAA,CAAwBC,GACxB,kBAAA,CAAkB,IAAA,CAClB,kBAAA,CAAmB,4CAAA,CACrB,CAEJ,KCtkBM+b,EAAAA,CAAwC,CAC5C,CAAE,KAAA,CAAO,MAAO,KAAA,CAAO,0BAA2B,CAAA,CAClD,CAAE,MAAO,KAAA,CAAO,KAAA,CAAO,sBAAuB,CAAA,CAC9C,CAAE,KAAA,CAAO,KAAA,CAAO,KAAA,CAAO,mCAAoC,EAC3D,CAAE,KAAA,CAAO,KAAA,CAAO,KAAA,CAAO,8BAA+B,CAAA,CACtD,CAAE,KAAA,CAAO,KAAA,CAAO,MAAO,0BAA2B,CAAA,CAClD,CAAE,KAAA,CAAO,MAAO,KAAA,CAAO,iCAAkC,CAAA,CACzD,CAAE,MAAO,KAAA,CAAO,KAAA,CAAO,6BAA8B,CAAA,CACrD,CAAE,KAAA,CAAO,KAAA,CAAO,KAAA,CAAO,uBAAwB,EAC/C,CAAE,KAAA,CAAO,KAAA,CAAO,KAAA,CAAO,yBAA0B,CAAA,CACjD,CAAE,KAAA,CAAO,KAAA,CAAO,MAAO,uCAAwC,CACjE,EAEMC,EAAAA,CAAoB,IAAM,CAC9B,GAAM,CAAE,EAAA,CAAArxC,CAAG,EAAIiiC,SAAAA,EAAU,CACnB1B,CAAAA,CAAWC,WAAAA,GAGX,CAAC8Q,CAAAA,CAAoBC,CAAqB,CAAA,CAAI1wC,SAAS,KAAK,CAAA,CAC5D,CAAC2wC,CAAAA,CAAoBC,CAAqB,CAAA,CAAI5wC,QAAAA,CAAS,KAAK,CAAA,CAG5D,CAACuB,CAAAA,CAAWuJ,CAAY,CAAA,CAAI9K,QAAAA,CAAS,IAAI,CAAA,CACzC,CAAC3C,CAAAA,CAAO6N,CAAQ,EAAIlL,QAAAA,CAAwB,IAAI,CAAA,CAChD,CAAC43B,EAAaiZ,CAAc,CAAA,CAAI7wC,QAAAA,CAA4C,IAAI,EAGhF8wC,CAAAA,CAAkBtlC,WAAAA,CAAY,SAAY,CAC9CV,EAAa,IAAI,CAAA,CACjBI,CAAAA,CAAS,IAAI,EACb,GAAI,CAEF,MAAM,IAAI,QAAQ2zB,EAAAA,EAAW,UAAA,CAAWA,EAAAA,CAAS,GAAG,CAAC,CAAA,CACrD,IAAMkS,CAAAA,CAAQxE,EAAAA,CAAiB,KAAKztC,EAAAA,EAAKA,EAAAA,CAAE,EAAA,GAAOK,CAAE,EACpD0xC,CAAAA,CAAeE,CAAAA,EAAS,IAAI,EAC9B,CAAA,MAASpE,EAAK,CACZzhC,CAAAA,CAASyhC,CAAAA,YAAe,KAAA,CAAQA,EAAI,OAAA,CAAU,4BAA4B,EAC5E,CAAA,OAAE,CACA7hC,CAAAA,CAAa,KAAK,EACpB,CACF,EAAG,CAAC3L,CAAE,CAAC,CAAA,CAEPkM,UAAU,IAAM,CACdylC,CAAAA,GACF,EAAG,CAACA,CAAe,CAAC,CAAA,CAEpB,IAAMhK,CAAAA,CAAct7B,WAAAA,CAAY,IAAM,CACpCslC,IACF,CAAA,CAAG,CAACA,CAAe,CAAC,CAAA,CAGdhZ,CAAAA,CAAiBpP,OAAAA,CAAQ,IAC7BkP,GAAa,eAAA,CAAgB,WAAA,EAAY,CAAE,QAAA,CAAS,MAAM,CAAA,EAAK,KAAA,CAC/D,CAACA,CAAAA,EAAa,eAAe,CAC/B,CAAA,CAEMG,CAAAA,CAAgBrP,OAAAA,CAAQ,IAC5BkP,CAAAA,EAAa,eAAA,CAAgB,WAAA,EAAY,CAAE,SAAS,KAAK,CAAA,EAAK,KAAA,CAC9D,CAACA,GAAa,eAAe,CAC/B,CAAA,CAEMC,CAAAA,CAAiBnP,QAAQ,IAC7B8jB,EAAAA,CACA,EACF,CAAA,CAGMxU,EAAmBtP,OAAAA,CAAQ,IAAM,CACrC,GAAI,CAACkP,CAAAA,CAAa,OAAO,MAAA,CACzB,IAAMoZ,EAAqB,CAAC,WAAA,CAAa,WAAA,CAAa,iBAAA,CAAmB,eAAe,CAAA,CACxF,OAAOpZ,CAAAA,CAAY,MAAA,GAAW,WACvBoZ,CAAAA,CAAmB,QAAA,CAASpZ,CAAAA,CAAY,gBAAgB,CACjE,CAAA,CAAG,CAACA,CAAW,CAAC,EAGVK,CAAAA,CAAmBvP,OAAAA,CAAQ,IAC1BkP,CAAAA,CACsB,CAAC,QAAA,CAAU,SAAA,CAAW,WAAW,CAAA,CAClC,QAAA,CAASA,EAAY,gBAAgB,CAAA,CAFtC,KAAA,CAGxB,CAACA,CAAW,CAAC,CAAA,CAGVqZ,CAAAA,CAAyBzlC,WAAAA,CAAY,IAAM,CAC/ColC,CAAAA,CAAsB,IAAI,EAC5B,EAAG,EAAE,CAAA,CAECM,CAAAA,CAA0B1lC,YAAY,MAAOlG,CAAAA,EAAoC,CACrF,OAAA,CAAQ,IAAI,yCAAA,CAA2CA,CAAAA,CAAK,UAAU,EAExE,EAAG,EAAE,CAAA,CAEC6rC,CAAAA,CAAyB3lC,YAAY,IAAM,CAC/CklC,EAAsB,IAAI,EAC5B,EAAG,EAAE,CAAA,CAECU,CAAAA,CAA0B5lC,YAAY,MAAOlG,CAAAA,EAAoC,CACrF,OAAA,CAAQ,IAAI,qCAAA,CAAuCA,CAAAA,CAAK,MAAM,EAEhE,EAAG,EAAE,CAAA,CAEC+rC,CAAAA,CAAqB7lC,YAAa+V,CAAAA,EAA0B,CAChEme,CAAAA,CAAS,CAAA,UAAA,EAAane,CAAa,CAAA,CAAE,EACvC,CAAA,CAAG,CAACme,CAAQ,CAAC,CAAA,CAEP4R,EAAAA,CAAsB9lC,WAAAA,CAAa+lC,GAAqB,CAC5D,OAAA,CAAQ,GAAA,CAAI,uBAAA,CAAyBA,CAAQ,EAC/C,CAAA,CAAG,EAAE,EAECC,EAAAA,CAA0BhmC,WAAAA,CAAa8zB,CAAAA,EAAyB,CACpE,QAAQ,GAAA,CAAI,2BAAA,CAA6BA,CAAY,EACvD,EAAG,EAAE,CAAA,CAECmS,CAAAA,CAAkBjmC,YAAakmC,CAAAA,EAAmB,CACtDhS,CAAAA,CAAS,CAAA,iBAAA,EAAoBgS,CAAM,CAAA,CAAE,EACvC,CAAA,CAAG,CAAChS,CAAQ,CAAC,CAAA,CAEPiS,CAAAA,CAAqBnmC,WAAAA,CAAa66B,GAAsB,CAC5D,OAAA,CAAQ,IAAI,sBAAA,CAAwBA,CAAS,EAC/C,CAAA,CAAG,EAAE,CAAA,CAECuL,EAAmBpmC,WAAAA,CAAa5L,CAAAA,EAAoB,CACxD8/B,CAAAA,CAAS,WAAW9/B,CAAO,CAAA,CAAE,EAC/B,CAAA,CAAG,CAAC8/B,CAAQ,CAAC,CAAA,CAEPmS,CAAAA,CAA2BrmC,YAAasmC,CAAAA,EAAsB,CAClEpS,CAAAA,CAAS,CAAA,cAAA,EAAiBoS,CAAS,CAAA,CAAE,EACvC,CAAA,CAAG,CAACpS,CAAQ,CAAC,CAAA,CAEPqS,CAAAA,CAAmBvmC,WAAAA,CAAawmC,GAAoB,CACxD,OAAA,CAAQ,GAAA,CAAI,kBAAA,CAAoBA,CAAO,EAEzC,CAAA,CAAG,EAAE,EAGL,OAAI,CAACzwC,CAAAA,EAAa,CAAClE,GAAS,CAACu6B,CAAAA,CAEzB59B,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,6BAAA,CACb,QAAA,CAAAoB,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,aAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,IAAA,CAAA,CAAG,UAAU,yBAAA,CAA0B,QAAA,CAAA,uBAAA,CAAqB,CAAA,CAC7DoB,IAAAA,CAAC,KAAE,SAAA,CAAU,4BAAA,CAA6B,QAAA,CAAA,CAAA,mBAAA,CAAkB+D,CAAAA,CAAG,wBAAoB,CAAA,CACnFnF,GAAAA,CAAC4C,EAAA,CAAO,OAAA,CAAS,IAAM8iC,CAAAA,CAAS,uBAAuB,CAAA,CAAG,QAAA,CAAA,6BAAA,CAE1D,GACF,CAAA,CACF,CAAA,CAKFtkC,IAAAA,CAAAyK,QAAAA,CAAA,CACE,QAAA,CAAA,CAAA7L,GAAAA,CAAC29B,EAAAA,CAAA,CACC,YAAaC,CAAAA,CACb,cAAA,CAAgBC,CAAAA,CAChB,cAAA,CAAgBC,EAChB,aAAA,CAAeC,CAAAA,CACf,gBAAA,CAAkBC,CAAAA,CAClB,iBAAkBC,CAAAA,CAClB,aAAA,CAAegZ,CAAAA,CACf,aAAA,CAAeE,EACf,cAAA,CAAgBE,CAAAA,CAChB,eAAA,CAAiBC,EAAAA,CACjB,oBAAqBE,EAAAA,CACrB,WAAA,CAAaC,CAAAA,CACb,cAAA,CAAgBE,EAChB,YAAA,CAAcC,CAAAA,CACd,oBAAA,CAAsBC,CAAAA,CACtB,aAAcE,CAAAA,CACd,SAAA,CAAWxwC,CAAAA,CACX,KAAA,CAAOlE,EACP,OAAA,CAASypC,CAAAA,CACX,CAAA,CAEClP,CAAAA,EACCx8B,KAAAyK,QAAAA,CAAA,CACE,QAAA,CAAA,CAAA7L,GAAAA,CAAC8+B,GAAA,CACC,aAAA,CAAelB,CAAAA,CAAY,EAAA,CAC3B,KAAM6Y,CAAAA,CACN,YAAA,CAAcC,CAAAA,CACd,QAAA,CAAUU,EACZ,CAAA,CAEAp3C,GAAAA,CAACk/B,EAAAA,CAAA,CACC,cAAetB,CAAAA,CAAY,EAAA,CAC3B,KAAM+Y,CAAAA,CACN,YAAA,CAAcC,EACd,QAAA,CAAUM,CAAAA,CACV,WAAA,CAAaX,EAAAA,CACf,GACF,CAAA,CAAA,CAEJ,CAEJ,CAAA,CAEO0B,EAAAA,CAAQzB,GClMA,SAAR0B,EAAAA,EAAyB,CAK9B,OACEl4C,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,iCAAA,CACb,QAAA,CAAAA,IAAC8yB,EAAAA,CAAA,CAAU,IAAA,CAAK,IAAA,CACd,SAAA1xB,IAAAA,CAACgyB,EAAAA,CAAA,CAAM,OAAA,CAAQ,KACb,QAAA,CAAA,CAAApzB,GAAAA,CAACszB,EAAAA,CAAA,CAAW,MARA,CAClB,CAAE,KAAA,CAAO,QAAS,CACpB,CAAA,CAMwC,CAAA,CAEhClyB,IAAAA,CAAC,KAAA,CAAA,CACC,UAAApB,GAAAA,CAAC,IAAA,CAAA,CAAG,SAAA,CAAU,oCAAA,CAAqC,kBAAM,CAAA,CACzDA,GAAAA,CAAC,GAAA,CAAA,CAAE,SAAA,CAAU,6BAA6B,QAAA,CAAA,mEAAA,CAE1C,CAAA,CAAA,CACF,CAAA,CAEAoB,IAAAA,CAAC8gC,GAAA,CAAK,YAAA,CAAa,UAAA,CAAW,SAAA,CAAU,SACtC,QAAA,CAAA,CAAA9gC,IAAAA,CAAC+gC,EAAAA,CAAA,CAAS,UAAU,yBAAA,CAClB,QAAA,CAAA,CAAAniC,IAACqiC,EAAAA,CAAA,CAAY,MAAM,UAAA,CAAW,QAAA,CAAA,oBAAA,CAAkB,CAAA,CAChDriC,GAAAA,CAACqiC,GAAA,CAAY,KAAA,CAAM,UAAA,CAAW,QAAA,CAAA,iBAAA,CAAe,EAC7CriC,GAAAA,CAACqiC,EAAAA,CAAA,CAAY,KAAA,CAAM,OAAO,QAAA,CAAA,gBAAA,CAAc,CAAA,CAAA,CAC1C,CAAA,CAEAriC,GAAAA,CAACsiC,GAAA,CAAY,KAAA,CAAM,UAAA,CAAW,SAAA,CAAU,OACtC,QAAA,CAAAtiC,GAAAA,CAACokC,EAAAA,CAAA,EAAc,EACjB,CAAA,CAEApkC,GAAAA,CAACsiC,EAAAA,CAAA,CAAY,MAAM,UAAA,CAAW,SAAA,CAAU,MAAA,CACtC,QAAA,CAAAtiC,IAACgkC,EAAAA,CAAA,EAAe,CAAA,CAClB,CAAA,CAEAhkC,IAACsiC,EAAAA,CAAA,CAAY,KAAA,CAAM,MAAA,CAAO,UAAU,MAAA,CAClC,QAAA,CAAAtiC,GAAAA,CAACsjC,EAAAA,CAAA,EAAc,CAAA,CACjB,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CACF,EACF,CAEJ,CCjBO,SAAS6U,GAA0B,CACxC,OAAA,CAAAtyB,CAAAA,CACA,cAAA,CAAAC,EACA,cAAA,CAAAC,CACF,CAAA,CAAmC,CACjC,IAAMkI,CAAAA,CACJpI,CAAAA,CAAQ,aAAA,GAAkB,EAAA,EAC1BA,EAAQ,cAAA,GAAmB,EAAA,EAC3BA,CAAAA,CAAQ,SAAA,GAAc,IACtBA,CAAAA,CAAQ,SAAA,GAAc,EAAA,EACtBA,CAAAA,CAAQ,YAAc,EAAA,EACtBA,CAAAA,CAAQ,SAAA,GAAc,EAAA,EACtBA,EAAQ,MAAA,GAAW,EAAA,EACnBA,CAAAA,CAAQ,gBAAA,GAAqB,IAC7BA,CAAAA,CAAQ,MAAA,GAAW,EAAA,EACnBA,CAAAA,CAAQ,kBAAoB,EAAA,EAC5BA,CAAAA,CAAQ,gBAAA,GAAqB,EAAA,CAE/B,OACEzkB,IAAAA,CAAC2R,EAAAA,CAAA,CACC,QAAA,CAAA,CAAA/S,IAACiT,EAAAA,CAAA,CAAa,OAAA,CAAO,IAAA,CACnB,SAAA7R,IAAAA,CAACwB,CAAAA,CAAA,CAAO,OAAA,CAAQ,UACd,QAAA,CAAA,CAAA5C,GAAAA,CAACqmB,MAAAA,CAAA,CAAO,UAAU,cAAA,CAAe,CAAA,CAAE,SAAA,CAElC4H,CAAAA,EACCjuB,IAAC,MAAA,CAAA,CAAK,SAAA,CAAU,wGACb,QAAA,CAAA,MAAA,CAAO,MAAA,CAAO6lB,CAAO,CAAA,CAAE,MAAA,CAAO8I,CAAAA,EAAKA,CAAAA,GAAM,EAAE,CAAA,CAAE,MAAA,CAChD,CAAA,CAAA,CAEJ,CAAA,CACF,EACAvtB,IAAAA,CAACmS,EAAAA,CAAA,CAAa,SAAA,CAAU,qCACtB,QAAA,CAAA,CAAAnS,IAAAA,CAACqS,EAAAA,CAAA,CACC,UAAArS,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,mCAAA,CACb,UAAApB,GAAAA,CAAC2T,EAAAA,CAAA,CAAW,QAAA,CAAA,wBAAA,CAAsB,EACjCsa,CAAAA,EACC7sB,IAAAA,CAACwB,CAAAA,CAAA,CACC,QAAQ,OAAA,CACR,IAAA,CAAK,IAAA,CACL,OAAA,CAASmjB,EACT,SAAA,CAAU,UAAA,CAEV,QAAA,CAAA,CAAA/lB,GAAAA,CAAC8G,IAAA,CAAE,SAAA,CAAU,cAAA,CAAe,CAAA,CAAE,aAEhC,CAAA,CAAA,CAEJ,CAAA,CACA9G,GAAAA,CAAC4T,EAAAA,CAAA,CAAiB,QAAA,CAAA,4EAAA,CAElB,CAAA,CAAA,CACF,CAAA,CAEAxS,IAAAA,CAAC,OAAI,SAAA,CAAU,6BAAA,CAEb,QAAA,CAAA,CAAApB,GAAAA,CAACqH,EAAA,CACC,KAAA,CAAM,gBAAA,CACN,WAAA,CAAY,uBACZ,KAAA,CAAOwe,CAAAA,CAAQ,aAAA,CACf,QAAA,CAAW9e,GAAM+e,CAAAA,CAAe,eAAA,CAAiB/e,EAAE,MAAA,CAAO,KAAK,EACjE,CAAA,CAGA/G,GAAAA,CAACqH,CAAAA,CAAA,CACC,MAAM,iBAAA,CACN,WAAA,CAAY,uBAAA,CACZ,KAAA,CAAOwe,EAAQ,cAAA,CACf,QAAA,CAAW9e,CAAAA,EAAM+e,CAAAA,CAAe,iBAAkB/e,CAAAA,CAAE,MAAA,CAAO,KAAK,CAAA,CAClE,EAGA/G,GAAAA,CAACqH,CAAAA,CAAA,CACC,KAAA,CAAM,aACN,WAAA,CAAY,kBAAA,CACZ,KAAA,CAAOwe,CAAAA,CAAQ,UACf,QAAA,CAAW9e,CAAAA,EAAM+e,CAAAA,CAAe,WAAA,CAAa/e,EAAE,MAAA,CAAO,KAAK,EAC7D,CAAA,CAGA/G,GAAAA,CAACqH,EAAA,CACC,KAAA,CAAM,YAAA,CACN,WAAA,CAAY,mBACZ,KAAA,CAAOwe,CAAAA,CAAQ,SAAA,CACf,QAAA,CAAW9e,GAAM+e,CAAAA,CAAe,WAAA,CAAa/e,CAAAA,CAAE,MAAA,CAAO,KAAK,CAAA,CAC7D,CAAA,CAGA/G,GAAAA,CAACqH,CAAAA,CAAA,CACC,KAAA,CAAM,YAAA,CACN,WAAA,CAAY,kBAAA,CACZ,MAAOwe,CAAAA,CAAQ,SAAA,CACf,QAAA,CAAW9e,CAAAA,EAAM+e,EAAe,WAAA,CAAa/e,CAAAA,CAAE,MAAA,CAAO,KAAK,EAC7D,CAAA,CAGA/G,GAAAA,CAACyD,EAAA,CACC,KAAA,CAAM,aACN,WAAA,CAAY,mBAAA,CACZ,OAAA,CAAS,CACP,CAAE,KAAA,CAAO,KAAA,CAAO,KAAA,CAAO,WAAY,EACnC,CAAE,KAAA,CAAO,QAAA,CAAU,KAAA,CAAO,QAAS,CAAA,CACnC,CAAE,KAAA,CAAO,OAAA,CAAS,MAAO,OAAQ,CACnC,CAAA,CACA,KAAA,CAAOoiB,EAAQ,SAAA,EAAa,KAAA,CAC5B,aAAA,CAAgB1mB,CAAAA,EAAU2mB,EAAe,WAAA,CAAa3mB,CAAAA,GAAU,KAAA,CAAQ,EAAA,CAAKA,CAAK,CAAA,CACpF,CAAA,CAGAa,GAAAA,CAACyD,CAAAA,CAAA,CACC,KAAA,CAAM,QAAA,CACN,WAAA,CAAY,eAAA,CACZ,QAAS,CACP,CAAE,KAAA,CAAO,KAAA,CAAO,MAAO,cAAe,CAAA,CACtC,CAAE,KAAA,CAAO,SAAU,KAAA,CAAO,QAAS,CAAA,CACnC,CAAE,MAAO,UAAA,CAAY,KAAA,CAAO,UAAW,CAAA,CACvC,CAAE,KAAA,CAAO,SAAA,CAAW,KAAA,CAAO,SAAU,CACvC,CAAA,CACA,KAAA,CAAOoiB,CAAAA,CAAQ,MAAA,EAAU,MACzB,aAAA,CAAgB1mB,CAAAA,EAAU2mB,EAAe,QAAA,CAAU3mB,CAAAA,GAAU,MAAQ,EAAA,CAAKA,CAAK,CAAA,CACjF,CAAA,CAGAa,IAACyD,CAAAA,CAAA,CACC,KAAA,CAAM,mBAAA,CACN,YAAY,0BAAA,CACZ,OAAA,CAAS,CACP,CAAE,MAAO,KAAA,CAAO,KAAA,CAAO,YAAa,CAAA,CACpC,CAAE,KAAA,CAAO,SAAA,CAAW,KAAA,CAAO,SAAU,EACrC,CAAE,KAAA,CAAO,SAAA,CAAW,KAAA,CAAO,SAAU,CAAA,CACrC,CAAE,KAAA,CAAO,SAAA,CAAW,MAAO,SAAU,CACvC,CAAA,CACA,KAAA,CAAOoiB,EAAQ,gBAAA,EAAoB,KAAA,CACnC,aAAA,CAAgB1mB,CAAAA,EAAU2mB,EAAe,kBAAA,CAAoB3mB,CAAAA,GAAU,KAAA,CAAQ,EAAA,CAAKA,CAAK,CAAA,CAC3F,CAAA,CAGAa,GAAAA,CAACyD,CAAAA,CAAA,CACC,KAAA,CAAM,QAAA,CACN,WAAA,CAAY,eAAA,CACZ,QAAS,CACP,CAAE,KAAA,CAAO,KAAA,CAAO,MAAO,aAAc,CAAA,CACrC,CAAE,KAAA,CAAO,UAAW,KAAA,CAAO,SAAU,CAAA,CACrC,CAAE,MAAO,MAAA,CAAQ,KAAA,CAAO,MAAO,CACjC,CAAA,CACA,MAAOoiB,CAAAA,CAAQ,MAAA,EAAU,KAAA,CACzB,aAAA,CAAgB1mB,GAAU2mB,CAAAA,CAAe,QAAA,CAAU3mB,CAAAA,GAAU,KAAA,CAAQ,GAAKA,CAAK,CAAA,CACjF,CAAA,CAGAa,GAAAA,CAACyD,EAAA,CACC,KAAA,CAAM,kBAAA,CACN,WAAA,CAAY,0BACZ,OAAA,CAAS,CACP,CAAE,KAAA,CAAO,MAAO,KAAA,CAAO,WAAY,CAAA,CACnC,CAAE,MAAO,MAAA,CAAQ,KAAA,CAAO,MAAO,CAAA,CAC/B,CAAE,KAAA,CAAO,KAAA,CAAO,KAAA,CAAO,KAAM,EAC7B,CAAE,KAAA,CAAO,MAAA,CAAQ,KAAA,CAAO,MAAO,CACjC,CAAA,CACA,KAAA,CAAOoiB,CAAAA,CAAQ,iBAAmB,KAAA,CAClC,aAAA,CAAgB1mB,CAAAA,EAAU2mB,CAAAA,CAAe,kBAAmB3mB,CAAAA,GAAU,KAAA,CAAQ,EAAA,CAAKA,CAAK,EAC1F,CAAA,CAGAa,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,aACb,QAAA,CAAAA,GAAAA,CAACyD,CAAAA,CAAA,CACC,MAAM,mBAAA,CACN,WAAA,CAAY,0BAAA,CACZ,OAAA,CAAS,CACP,CAAE,KAAA,CAAO,MAAO,KAAA,CAAO,YAAa,EACpC,CAAE,KAAA,CAAO,SAAA,CAAW,KAAA,CAAO,SAAU,CAAA,CACrC,CAAE,KAAA,CAAO,UAAA,CAAY,MAAO,UAAW,CACzC,CAAA,CACA,KAAA,CAAOoiB,EAAQ,gBAAA,EAAoB,KAAA,CACnC,aAAA,CAAgB1mB,CAAAA,EAAU2mB,EAAe,kBAAA,CAAoB3mB,CAAAA,GAAU,KAAA,CAAQ,EAAA,CAAKA,CAAK,CAAA,CAC3F,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAAA,CACF,GACF,CAEJ,CCxLO,IAAMi5C,EAAAA,CAAsC,CACjD,CACE,EAAA,CAAI,GAAA,CACJ,OAAA,CAAS,uBACT,SAAA,CAAW,2BAAA,CACX,SAAA,CAAW,aAAA,CACX,OAAQ,SAAA,CACR,MAAA,CAAQ,QAAA,CACR,gBAAA,CAAkB,UAClB,kBAAA,CAAoB,YAAA,CACpB,gBAAA,CAAkB,CAAC,SAAS,CAAA,CAC5B,eAAA,CAAiB,CAAC,MAAM,EACxB,gBAAA,CAAkB,SAAA,CAClB,UAAA,CAAY,OAAA,CACZ,UAAW,OAAA,CACX,QAAA,CAAU,IACZ,CAAA,CACA,CACE,EAAA,CAAI,GAAA,CACJ,OAAA,CAAS,sBAAA,CACT,UAAW,2BAAA,CACX,SAAA,CAAW,cACX,MAAA,CAAQ,SAAA,CACR,OAAQ,QAAA,CACR,gBAAA,CAAkB,SAAA,CAClB,kBAAA,CAAoB,aACpB,eAAA,CAAiB,CAAC,MAAM,CAAA,CACxB,iBAAkB,SAAA,CAClB,UAAA,CAAY,OAAA,CACZ,SAAA,CAAW,SACX,QAAA,CAAU,IACZ,CAAA,CACA,CACE,GAAI,GAAA,CACJ,OAAA,CAAS,sBAAA,CACT,SAAA,CAAW,4BACX,SAAA,CAAW,aAAA,CACX,MAAA,CAAQ,SAAA,CACR,OAAQ,QAAA,CACR,gBAAA,CAAkB,SAAA,CAClB,kBAAA,CAAoB,WACpB,eAAA,CAAiB,CAAC,MAAM,CAAA,CACxB,iBAAkB,aAAA,CAClB,SAAA,CAAW,OACb,CAAA,CACA,CACE,EAAA,CAAI,GAAA,CACJ,OAAA,CAAS,sBAAA,CACT,UAAW,2BAAA,CACX,SAAA,CAAW,aAAA,CACX,MAAA,CAAQ,UACR,MAAA,CAAQ,QAAA,CACR,gBAAA,CAAkB,SAAA,CAClB,mBAAoB,UAAA,CACpB,eAAA,CAAiB,CAAC,qBAAA,CAAuB,wBAAyB,cAAA,CAAgB,eAAA,CAAiB,kBAAkB,CAAA,CACrH,iBAAkB,SAAA,CAClB,UAAA,CAAY,SAAA,CACZ,SAAA,CAAW,SACX,QAAA,CAAU,IACZ,EACA,CACE,EAAA,CAAI,IACJ,OAAA,CAAS,sBAAA,CACT,SAAA,CAAW,4BAAA,CACX,UAAW,mBAAA,CACX,MAAA,CAAQ,SAAA,CACR,MAAA,CAAQ,UACR,gBAAA,CAAkB,QAAA,CAClB,cAAA,CAAgB,2BAAA,CAChB,WAAY,SAAA,CACZ,kBAAA,CAAoB,gCACtB,CAAA,CACA,CACE,EAAA,CAAI,GAAA,CACJ,OAAA,CAAS,sBAAA,CACT,UAAW,yBAAA,CACX,SAAA,CAAW,aAAA,CACX,MAAA,CAAQ,UACR,MAAA,CAAQ,UAAA,CACR,gBAAA,CAAkB,QAAA,CAClB,gBAAiB,CAAC,MAAM,CAAA,CACxB,gBAAA,CAAkB,UAClB,UAAA,CAAY,OAAA,CACZ,SAAA,CAAW,SAAA,CACX,SAAU,KACZ,CAAA,CACA,CACE,EAAA,CAAI,IACJ,OAAA,CAAS,sBAAA,CACT,SAAA,CAAW,yBAAA,CACX,UAAW,aAAA,CACX,MAAA,CAAQ,SAAA,CACR,MAAA,CAAQ,SACR,gBAAA,CAAkB,QAAA,CAClB,eAAA,CAAiB,CAAC,MAAM,CAAA,CACxB,gBAAA,CAAkB,SAAA,CAClB,UAAA,CAAY,QACZ,SAAA,CAAW,SAAA,CACX,QAAA,CAAU,KACZ,EACA,CACE,EAAA,CAAI,IACJ,OAAA,CAAS,sBAAA,CACT,UAAW,sBAAA,CACX,SAAA,CAAW,cAAA,CACX,MAAA,CAAQ,OACR,MAAA,CAAQ,QAAA,CACR,gBAAA,CAAkB,SAAA,CAClB,mBAAoB,QAAA,CACpB,eAAA,CAAiB,OAAA,CACjB,YAAA,CAAc,0BAChB,CAAA,CACA,CACE,EAAA,CAAI,GAAA,CACJ,QAAS,sBAAA,CACT,SAAA,CAAW,0BAAA,CACX,SAAA,CAAW,yBACX,MAAA,CAAQ,MAAA,CACR,MAAA,CAAQ,QAAA,CACR,iBAAkB,QAAA,CAClB,iBAAA,CAAmB,IAAA,CACnB,gBAAA,CAAkB,OACpB,CACF,CAAA,CC/HA,IAAM3a,EAAAA,CAAoBj7B,GAAoC,CAC5D,OAAQA,CAAAA,EACN,KAAK,QAAA,CACH,OAAO,SAAA,CACT,KAAK,WACH,OAAO,SAAA,CACT,KAAK,SAAA,CACH,OAAO,aAAA,CACT,QACE,OAAO,WACX,CACF,CAAA,CAEM61C,EAAAA,CAAoB32C,GAAoC,CAC5D,OAAQA,GACN,KAAK,SAAA,CACH,OAAO,cACT,KAAK,MAAA,CACH,OAAO,SAAA,CACT,QACE,OAAO,WACX,CACF,CAAA,CAEe,SAAR42C,EAAAA,EAAkC,CACvC,IAAM5S,CAAAA,CAAWC,aAAY,CACvB,CAAC4S,CAAAA,CAAWC,CAAY,EAAIxyC,QAAAA,CAA8B,SAAS,CAAA,CACnE,CAACiZ,EAAewkB,CAAgB,CAAA,CAAIz9B,QAAAA,CAAyB,MAAM,EACnE,CAAC6f,CAAAA,CAASqgB,CAAU,CAAA,CAAIlgC,SAA+B,CAC3D,aAAA,CAAe,EAAA,CACf,cAAA,CAAgB,GAChB,SAAA,CAAW,EAAA,CACX,SAAA,CAAW,EAAA,CACX,UAAW,EAAA,CACX,SAAA,CAAW,EAAA,CACX,MAAA,CAAQ,GACR,gBAAA,CAAkB,EAAA,CAClB,MAAA,CAAQ,EAAA,CACR,gBAAiB,EAAA,CACjB,gBAAA,CAAkB,EACpB,CAAC,EAEKugC,CAAAA,CAAqB,CAACn2B,CAAAA,CAAmCjR,CAAAA,GAAqC,CAClG+mC,CAAAA,CAAWz0B,CAAAA,GAAS,CAAE,GAAGA,EAAM,CAACrB,CAAK,EAAGjR,CAAM,CAAA,CAAE,EAClD,CAAA,CAEMinB,CAAAA,CAAqB,IAAM,CAC/B8f,EAAW,CACT,aAAA,CAAe,EAAA,CACf,cAAA,CAAgB,GAChB,SAAA,CAAW,EAAA,CACX,SAAA,CAAW,EAAA,CACX,UAAW,EAAA,CACX,SAAA,CAAW,EAAA,CACX,MAAA,CAAQ,GACR,gBAAA,CAAkB,EAAA,CAClB,MAAA,CAAQ,EAAA,CACR,gBAAiB,EAAA,CACjB,gBAAA,CAAkB,EACpB,CAAC,EACH,CAAA,CAEM3mB,CAAAA,CAAcnP,CAAAA,EAA+B,CAC7CmoC,IAAcnoC,CAAAA,CAChBqzB,CAAAA,CAAiBxkB,CAAAA,GAAkB,KAAA,CAAQ,OAAS,KAAK,CAAA,EAEzDu5B,CAAAA,CAAapoC,CAAK,EAClBqzB,CAAAA,CAAiB,MAAM,CAAA,EAE3B,CAAA,CAkCMgV,EAAe,CAAC,GA/BC/pB,OAAAA,CAAQ,IACtB0pB,GAAmB,MAAA,CAAQM,CAAAA,EAE5B,EAAA7yB,CAAAA,CAAQ,eAAiB6yB,CAAAA,CAAM,kBAAA,EAC/B,CAACA,CAAAA,CAAM,mBAAmB,QAAA,CAAS7yB,CAAAA,CAAQ,aAAa,CAAA,EAKxDA,EAAQ,SAAA,EAAa,CAAC6yB,CAAAA,CAAM,SAAA,CAAU,aAAY,CAAE,QAAA,CAAS7yB,EAAQ,SAAA,CAAU,WAAA,EAAa,CAAA,EAK5FA,CAAAA,CAAQ,MAAA,EAAU6yB,CAAAA,CAAM,SAAW7yB,CAAAA,CAAQ,MAAA,EAK3CA,CAAAA,CAAQ,MAAA,EAAU6yB,EAAM,MAAA,GAAW7yB,CAAAA,CAAQ,MAAA,CAShD,CAAA,CACA,CAACA,CAAO,CAAC,CAE2B,CAAA,CAAE,KAAK,CAAC2e,CAAAA,CAAGqF,CAAAA,GAAM,CACtD,IAAMC,CAAAA,CAAStF,CAAAA,CAAE+T,CAAS,CAAA,CACpBxO,EAASF,CAAAA,CAAE0O,CAAS,CAAA,CAE1B,OAAIzO,GAAU,IAAA,CAAa,CAAA,CACvBC,CAAAA,EAAU,IAAA,CAAa,GAEvB9qB,CAAAA,GAAkB,KAAA,CACb6qB,CAAAA,CAASC,CAAAA,CAAS,EAAI,EAAA,CAEtBD,CAAAA,CAASC,CAAAA,CAAS,CAAA,CAAI,EAEjC,CAAC,CAAA,CA4DD,OACE3oC,IAAAA,CAAC,OAAI,SAAA,CAAU,2CAAA,CAEb,QAAA,CAAA,CAAApB,GAAAA,CAAC,OAAI,SAAA,CAAU,+FAAA,CACb,QAAA,CAAAA,GAAAA,CAAC,OAAI,SAAA,CAAU,wCAAA,CACb,QAAA,CAAAoB,IAAAA,CAAC,OAAI,SAAA,CAAU,mCAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,OACC,QAAA,CAAAA,GAAAA,CAAC,MAAG,SAAA,CAAU,oCAAA,CAAqC,2BAAe,CAAA,CACpE,CAAA,CACAoB,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,yBAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAACm4C,EAAAA,CAAA,CACC,OAAA,CAAStyB,CAAAA,CACT,cAAA,CAAgB0gB,CAAAA,CAChB,eAAgBngB,CAAAA,CAClB,CAAA,CACAhlB,IAAAA,CAACwB,CAAAA,CAAA,CAAO,OAAA,CAAS,IAAM8iC,CAAAA,CAAS,6BAA6B,EAC3D,QAAA,CAAA,CAAA1lC,GAAAA,CAACgH,IAAAA,CAAA,CAAK,UAAU,cAAA,CAAe,CAAA,CAAE,cAAA,CAAA,CAEnC,CAAA,CAAA,CACF,GACF,CAAA,CACF,CAAA,CACF,CAAA,CAGAhH,GAAAA,CAAC,OAAI,SAAA,CAAU,wBAAA,CACb,QAAA,CAAAA,GAAAA,CAAC,OAAI,SAAA,CAAU,wDAAA,CACb,QAAA,CAAAA,GAAAA,CAAC,OAAI,SAAA,CAAU,2BAAA,CACb,QAAA,CAAAA,GAAAA,CAAC8e,GAAA,CACC,OAAA,CAvFsC,CAChD,CACE,IAAK,SAAA,CACL,KAAA,CAAO,SAAA,CACP,QAAA,CAAU,KACV,MAAA,CAAS3f,CAAAA,EACPa,GAAAA,CAAC,MAAA,CAAA,CAAK,UAAU,SAAA,CACb,QAAA,CAAA8hB,MAAAA,CAAO62B,QAAAA,CAASx5C,CAAK,CAAA,CAAG,YAAY,EACvC,CAEJ,CAAA,CACA,CACE,GAAA,CAAK,WAAA,CACL,KAAA,CAAO,YAAA,CACP,SAAU,IAAA,CACV,MAAA,CAASA,CAAAA,EACPa,GAAAA,CAAC,QAAK,SAAA,CAAU,qBAAA,CAAuB,QAAA,CAAAb,CAAAA,CAAM,CAEjD,CAAA,CACA,CACE,GAAA,CAAK,QAAA,CACL,MAAO,QAAA,CACP,QAAA,CAAU,IAAA,CACV,MAAA,CAASA,GACPa,GAAAA,CAACsB,CAAAA,CAAA,CAAM,OAAA,CAAS+2C,GAAiBl5C,CAAK,CAAA,CACnC,QAAA,CAAAA,CAAAA,CACH,CAEJ,CAAA,CACA,CACE,GAAA,CAAK,QAAA,CACL,MAAO,QAAA,CACP,QAAA,CAAU,IAAA,CACV,MAAA,CAASA,GACPa,GAAAA,CAACsB,CAAAA,CAAA,CAAM,OAAA,CAASm8B,GAAiBt+B,CAAK,CAAA,CACnC,QAAA,CAAAA,CAAAA,CACH,CAEJ,CAAA,CACA,CACE,GAAA,CAAK,kBAAA,CACL,MAAO,mBAAA,CACP,QAAA,CAAU,IAAA,CACV,MAAA,CAASA,GACPa,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,SAAA,CAAW,SAAAb,CAAAA,CAAM,CAErC,CAAA,CACA,CACE,IAAK,oBAAA,CACL,KAAA,CAAO,uBACP,MAAA,CAASA,CAAAA,EACPa,IAAC,MAAA,CAAA,CAAK,SAAA,CAAU,SAAA,CACb,QAAA,CAAAb,GAAS,QAAA,CACZ,CAEJ,CACF,CAAA,CAgCY,KAAMs5C,CAAAA,CACN,MAAA,CAAQF,CAAAA,CACR,aAAA,CAAet5B,EACf,MAAA,CAAQM,CAAAA,CACR,UAAA,CAAam5B,CAAAA,EAAUhT,EAAS,CAAA,qBAAA,EAAwBgT,CAAAA,CAAM,EAAE,CAAA,CAAE,EAClE,UAAA,CAAY,CACV,QAAA,CAAU,EAAA,CACV,YAAa,CAAA,CACb,UAAA,CAAYD,CAAAA,CAAa,MAAA,CACzB,aAAc,IAAM,CAAC,CACvB,CAAA,CACF,EACF,CAAA,CACF,CAAA,CACF,CAAA,CAAA,CACF,CAEJ,CC3Oe,SAARG,EAAAA,EAAuC,CAC5C,IAAMlT,CAAAA,CAAWC,aAAY,CACvB,CAACkT,CAAAA,CAAWC,CAAY,EAAI9yC,QAAAA,CAAoB,EAAE,EAClD,CAAC+yC,CAAAA,CAAUC,CAAW,CAAA,CAAIhzC,QAAAA,CAAS,CACvC,SAAA,CAAW,GACX,MAAA,CAAQ,EAAA,CACR,oBAAA,CAAsB,EAAA,CACtB,mBAAoB,EAAA,CACpB,qBAAA,CAAuB,EAAA,CACvB,eAAA,CAAiB,GACjB,gBAAA,CAAkB,EAAA,CAClB,gBAAA,CAAkB,EAEpB,CAAC,CAAA,CAEKizC,CAAAA,CAAoB,CAAC7oC,CAAAA,CAAejR,IAAkB,CAC1D65C,CAAAA,CAAYvnC,CAAAA,GAAS,CAAE,GAAGA,CAAAA,CAAM,CAACrB,CAAK,EAAGjR,CAAM,CAAA,CAAE,EACnD,CAAA,CAEMgT,CAAAA,CAAgBpL,GAAuB,CAC3CA,CAAAA,CAAE,cAAA,EAAe,CACjB,QAAQ,GAAA,CAAI,0BAAA,CAA4B,CAAE,SAAA,CAAA8xC,EAAW,GAAGE,CAAS,CAAC,CAAA,CAElErT,EAAS,sBAAsB,EACjC,CAAA,CAEMwT,CAAAA,CAA2B,IAAM,CACrC,OAAQL,CAAAA,EACN,KAAK,wBAAA,CACH,OACE74C,GAAAA,CAAA6L,QAAAA,CAAA,CACE,QAAA,CAAAzK,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yBACb,QAAA,CAAA,CAAApB,GAAAA,CAACqH,EAAA,CACC,KAAA,CAAM,yBACN,WAAA,CAAY,4BAAA,CACZ,QAAA,CAAWN,CAAAA,EAAMkyC,EAAkB,mBAAA,CAAqBlyC,CAAAA,CAAE,MAAA,CAAO,KAAK,EACxE,CAAA,CACA/G,GAAAA,CAACyD,CAAAA,CAAA,CACC,MAAM,mBAAA,CACN,WAAA,CAAY,eAAA,CACZ,OAAA,CAAS,CACP,CAAE,KAAA,CAAO,OAAA,CAAS,KAAA,CAAO,aAAc,CAAA,CACvC,CAAE,KAAA,CAAO,OAAA,CAAS,MAAO,aAAc,CAAA,CACvC,CAAE,KAAA,CAAO,UAAW,KAAA,CAAO,eAAgB,CAC7C,CAAA,CACA,cAAgBtE,CAAAA,EAAU85C,CAAAA,CAAkB,kBAAA,CAAoB95C,CAAK,EACvE,CAAA,CAAA,CACF,CAAA,CACF,CAAA,CAGJ,KAAK,eACH,OACEa,GAAAA,CAAA6L,QAAAA,CAAA,CACE,SAAAzK,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wBAAA,CACb,UAAApB,GAAAA,CAAC83B,EAAAA,CAAA,CACC,KAAA,CAAM,mBACN,KAAA,CAAQihB,CAAAA,CAAiB,eAAA,EAAmB,EAAA,CAC5C,SAAW55C,CAAAA,EAAU85C,CAAAA,CAAkB,iBAAA,CAAmB95C,CAAK,EACjE,CAAA,CACAa,GAAAA,CAACqH,EAAA,CACC,KAAA,CAAM,uBACN,WAAA,CAAY,yBAAA,CACZ,QAAA,CAAWN,CAAAA,EAAMkyC,EAAkB,cAAA,CAAgBlyC,CAAAA,CAAE,MAAA,CAAO,KAAK,EACnE,CAAA,CAAA,CACF,CAAA,CACF,CAAA,CAGJ,KAAK,cACH,OACE3F,IAAAA,CAAAyK,QAAAA,CAAA,CACE,UAAAzK,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,MAAA,CACb,UAAApB,GAAAA,CAAC,OAAA,CAAA,CAAM,SAAA,CAAU,gDAAA,CAAiD,qBAElE,CAAA,CACAoB,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,0BACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,OAAI,SAAA,CAAU,YAAA,CACb,UAAAA,IAAAA,CAAC,OAAA,CAAA,CAAM,SAAA,CAAU,wCAAA,CACf,UAAApB,GAAAA,CAAC,OAAA,CAAA,CACC,IAAA,CAAK,OAAA,CACL,KAAK,uBAAA,CACL,KAAA,CAAM,MAAA,CACN,OAAA,CAAS+4C,EAAS,qBAAA,GAA0B,MAAA,CAC5C,QAAA,CAAWhyC,CAAAA,EAAM,CACfkyC,CAAAA,CAAkB,uBAAA,CAAyBlyC,CAAAA,CAAE,MAAA,CAAO,KAAK,CAAA,CACzDkyC,CAAAA,CAAkB,kBAAA,CAAoB,EAAE,EAC1C,CAAA,CACA,SAAA,CAAU,oEAAA,CACZ,CAAA,CACAj5C,IAAC,MAAA,CAAA,CAAK,SAAA,CAAU,0BAA0B,QAAA,CAAA,kBAAA,CAAgB,CAAA,CAAA,CAC5D,EACAoB,IAAAA,CAAC,OAAA,CAAA,CAAM,SAAA,CAAU,wCAAA,CACf,UAAApB,GAAAA,CAAC,OAAA,CAAA,CACC,IAAA,CAAK,OAAA,CACL,KAAK,uBAAA,CACL,KAAA,CAAM,OAAA,CACN,OAAA,CAAS+4C,EAAS,qBAAA,GAA0B,OAAA,CAC5C,QAAA,CAAWhyC,CAAAA,EAAM,CACfkyC,CAAAA,CAAkB,uBAAA,CAAyBlyC,CAAAA,CAAE,MAAA,CAAO,KAAK,CAAA,CACzDkyC,CAAAA,CAAkB,iBAAA,CAAmB,EAAE,EACzC,CAAA,CACA,SAAA,CAAU,oEAAA,CACZ,CAAA,CACAj5C,IAAC,MAAA,CAAA,CAAK,SAAA,CAAU,yBAAA,CAA0B,QAAA,CAAA,mBAAA,CAAiB,GAC7D,CAAA,CAAA,CACF,CAAA,CAEAoB,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,QAAA,CACZ,QAAA,CAAA,CAAA23C,CAAAA,CAAS,qBAAA,GAA0B,QAClC/4C,GAAAA,CAACyD,CAAAA,CAAA,CACC,KAAA,CAAM,GACN,WAAA,CAAY,aAAA,CACZ,OAAA,CAAS,CACP,CAAE,KAAA,CAAO,MAAA,CAAQ,KAAA,CAAO,MAAO,EAC/B,CAAE,KAAA,CAAO,KAAA,CAAO,KAAA,CAAO,KAAM,CAAA,CAC7B,CAAE,KAAA,CAAO,MAAA,CAAQ,MAAO,MAAO,CACjC,EACA,KAAA,CAAOs1C,CAAAA,CAAS,gBAChB,aAAA,CAAgB55C,CAAAA,EAAU85C,CAAAA,CAAkB,iBAAA,CAAmB95C,CAAK,CAAA,CACtE,CAAA,CAGD45C,CAAAA,CAAS,qBAAA,GAA0B,SAClC/4C,GAAAA,CAACyD,CAAAA,CAAA,CACC,KAAA,CAAM,GACN,WAAA,CAAY,cAAA,CACZ,OAAA,CAAS,CACP,CAAE,KAAA,CAAO,SAAA,CAAW,KAAA,CAAO,SAAU,EACrC,CAAE,KAAA,CAAO,UAAA,CAAY,KAAA,CAAO,UAAW,CACzC,CAAA,CACA,KAAA,CAAOs1C,CAAAA,CAAS,iBAChB,aAAA,CAAgB55C,CAAAA,EAAU85C,CAAAA,CAAkB,kBAAA,CAAoB95C,CAAK,CAAA,CACvE,CAAA,CAAA,CAEJ,CAAA,CAAA,CACF,CAAA,CAAA,CACF,EAEAiC,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wBAAA,CACb,UAAApB,GAAAA,CAACyD,CAAAA,CAAA,CACC,KAAA,CAAM,oBACN,WAAA,CAAY,cAAA,CACZ,OAAA,CAAS,CACP,CAAE,KAAA,CAAO,aAAA,CAAe,KAAA,CAAO,aAAc,EAC7C,CAAE,KAAA,CAAO,SAAA,CAAW,KAAA,CAAO,SAAU,CAAA,CACrC,CAAE,KAAA,CAAO,SAAA,CAAW,MAAO,SAAU,CAAA,CACrC,CAAE,KAAA,CAAO,SAAA,CAAW,MAAO,SAAU,CACvC,CAAA,CACA,aAAA,CAAgBtE,GAAU85C,CAAAA,CAAkB,kBAAA,CAAoB95C,CAAK,CAAA,CACvE,EACC45C,CAAAA,CAAS,gBAAA,GAAqB,aAAA,EAC7B/4C,GAAAA,CAACyD,EAAA,CACC,KAAA,CAAM,aAAA,CACN,WAAA,CAAY,gBACZ,OAAA,CAAS,CACP,CAAE,KAAA,CAAO,QAAS,KAAA,CAAO,OAAQ,CAAA,CACjC,CAAE,MAAO,QAAA,CAAU,KAAA,CAAO,QAAS,CAAA,CACnC,CAAE,KAAA,CAAO,SAAA,CAAW,KAAA,CAAO,SAAU,CACvC,CAAA,CACA,aAAA,CAAgBtE,CAAAA,EAAU85C,CAAAA,CAAkB,aAAc95C,CAAK,CAAA,CACjE,CAAA,CAEFa,GAAAA,CAAC83B,GAAA,CACC,KAAA,CAAM,wBAAA,CACN,KAAA,CAAQihB,EAAiB,SAAA,EAAa,EAAA,CACtC,QAAA,CAAW55C,CAAAA,EAAU85C,EAAkB,WAAA,CAAa95C,CAAK,CAAA,CAC3D,CAAA,CACC45C,EAAS,gBAAA,GAAqB,aAAA,EAC7B/4C,GAAAA,CAACqH,CAAAA,CAAA,CACC,KAAA,CAAM,uBAAA,CACN,WAAA,CAAY,aAAA,CACZ,SAAWN,CAAAA,EAAMkyC,CAAAA,CAAkB,WAAYlyC,CAAAA,CAAE,MAAA,CAAO,KAAK,CAAA,CAC/D,CAAA,CAAA,CAEJ,CAAA,CAAA,CACF,CAAA,CAGJ,KAAK,mBAAA,CACH,OACE/G,GAAAA,CAAA6L,QAAAA,CAAA,CACE,QAAA,CAAAzK,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yBACb,QAAA,CAAA,CAAApB,GAAAA,CAACqH,CAAAA,CAAA,CACC,MAAM,kBAAA,CACN,WAAA,CAAY,iBAAA,CACZ,QAAA,CAAWN,GAAMkyC,CAAAA,CAAkB,gBAAA,CAAkBlyC,CAAAA,CAAE,MAAA,CAAO,KAAK,CAAA,CACrE,CAAA,CACA/G,GAAAA,CAACyD,CAAAA,CAAA,CACC,KAAA,CAAM,aAAA,CACN,WAAA,CAAY,aAAA,CACZ,QAAS,CACP,CAAE,KAAA,CAAO,SAAA,CAAW,MAAO,SAAU,CAAA,CACrC,CAAE,KAAA,CAAO,aAAc,KAAA,CAAO,YAAa,CAAA,CAC3C,CAAE,MAAO,UAAA,CAAY,KAAA,CAAO,UAAW,CACzC,EACA,aAAA,CAAgBtE,CAAAA,EAAU85C,CAAAA,CAAkB,YAAA,CAAc95C,CAAK,CAAA,CACjE,CAAA,CACAa,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,YAAA,CACb,QAAA,CAAAA,GAAAA,CAACqH,CAAAA,CAAA,CACC,KAAA,CAAM,uCAAA,CACN,YAAY,gBAAA,CACZ,QAAA,CAAWN,GAAMkyC,CAAAA,CAAkB,oBAAA,CAAsBlyC,CAAAA,CAAE,MAAA,CAAO,KAAK,CAAA,CACzE,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CACF,EAGJ,QACE,OAAO,IACX,CACF,EAEA,OACE3F,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,4CAEb,QAAA,CAAA,CAAApB,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,gGACb,QAAA,CAAAA,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yCACb,QAAA,CAAAoB,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,0BACb,QAAA,CAAA,CAAAA,IAAAA,CAACwB,CAAAA,CAAA,CACC,QAAQ,OAAA,CACR,IAAA,CAAK,IAAA,CACL,OAAA,CAAS,IAAM8iC,CAAAA,CAAS,sBAAsB,CAAA,CAE9C,QAAA,CAAA,CAAA1lC,IAACm5C,SAAAA,CAAA,CAAU,SAAA,CAAU,cAAA,CAAe,EAAE,MAAA,CAAA,CAExC,CAAA,CACAn5C,GAAAA,CAAC,KAAA,CAAA,CACC,SAAAA,GAAAA,CAAC,IAAA,CAAA,CAAG,SAAA,CAAU,oCAAA,CAAqC,iCAAqB,CAAA,CAC1E,CAAA,CAAA,CACF,CAAA,CACF,CAAA,CACF,EAGAA,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,sBAAA,CACb,SAAAA,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,uCAAA,CACb,QAAA,CAAAA,IAAC,MAAA,CAAA,CAAK,QAAA,CAAUmS,CAAAA,CACd,QAAA,CAAAnS,IAACT,CAAAA,CAAA,CAAK,SAAA,CAAU,KAAA,CACd,SAAA6B,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,WAAA,CAEb,UAAAA,IAAAA,CAAC,KAAA,CAAA,CACC,QAAA,CAAA,CAAApB,GAAAA,CAAC,MAAG,SAAA,CAAU,4BAAA,CAA6B,QAAA,CAAA,mBAAA,CAAiB,CAAA,CAC5DA,IAACyD,CAAAA,CAAA,CACC,KAAA,CAAM,YAAA,CACN,YAAY,qBAAA,CACZ,OAAA,CAAS,CACP,CAAE,MAAO,wBAAA,CAA0B,KAAA,CAAO,wBAAyB,CAAA,CACnE,CAAE,KAAA,CAAO,cAAA,CAAgB,KAAA,CAAO,cAAe,EAC/C,CAAE,KAAA,CAAO,aAAA,CAAe,KAAA,CAAO,aAAc,CAAA,CAC7C,CAAE,KAAA,CAAO,mBAAA,CAAqB,MAAO,mBAAoB,CAC3D,CAAA,CACA,KAAA,CAAOo1C,EACP,aAAA,CAAgB15C,CAAAA,EAAU25C,CAAAA,CAAa35C,CAAkB,EAC3D,CAAA,CAAA,CACF,CAAA,CAGC05C,CAAAA,EACCz3C,IAAAA,CAAAyK,SAAA,CACE,QAAA,CAAA,CAAAzK,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,eAAA,CACb,QAAA,CAAA,CAAApB,IAAC,IAAA,CAAA,CAAG,SAAA,CAAU,6BAA6B,QAAA,CAAA,mBAAA,CAAiB,CAAA,CAC5DoB,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wBAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAACqH,CAAAA,CAAA,CACC,KAAA,CAAM,YAAA,CACN,WAAA,CAAY,kBAAA,CACZ,MAAO0xC,CAAAA,CAAS,SAAA,CAChB,QAAA,CAAWhyC,CAAAA,EAAMkyC,EAAkB,WAAA,CAAalyC,CAAAA,CAAE,MAAA,CAAO,KAAK,EAChE,CAAA,CACA/G,GAAAA,CAACyD,CAAAA,CAAA,CACC,MAAM,QAAA,CACN,WAAA,CAAY,eAAA,CACZ,OAAA,CAAS,CACP,CAAE,KAAA,CAAO,SAAA,CAAW,KAAA,CAAO,SAAU,CAAA,CACrC,CAAE,KAAA,CAAO,MAAA,CAAQ,MAAO,MAAO,CACjC,CAAA,CACA,aAAA,CAAgBtE,GAAU85C,CAAAA,CAAkB,QAAA,CAAU95C,CAAK,CAAA,CAC7D,EACAa,GAAAA,CAACyD,CAAAA,CAAA,CACC,KAAA,CAAM,yBACN,WAAA,CAAY,oBAAA,CACZ,OAAA,CAAS,CACP,CAAE,KAAA,CAAO,QAAA,CAAU,KAAA,CAAO,QAAS,EACnC,CAAE,KAAA,CAAO,SAAA,CAAW,KAAA,CAAO,SAAU,CAAA,CACrC,CAAE,MAAO,SAAA,CAAW,KAAA,CAAO,SAAU,CAAA,CACrC,CAAE,KAAA,CAAO,SAAA,CAAW,MAAO,SAAU,CACvC,CAAA,CACA,KAAA,CAAOs1C,EAAS,oBAAA,CAChB,aAAA,CAAgB55C,CAAAA,EAAU,CACxB85C,EAAkB,sBAAA,CAAwB95C,CAAK,CAAA,CAC/C85C,CAAAA,CAAkB,qBAAsB,EAAE,EAC5C,CAAA,CACF,CAAA,CACCF,EAAS,oBAAA,EAAwBA,CAAAA,CAAS,oBAAA,GAAyB,QAAA,EAClE/4C,IAACqH,CAAAA,CAAA,CACC,KAAA,CAAO,CAAA,EAAG0xC,EAAS,oBAAA,CAAqB,MAAA,CAAO,CAAC,CAAA,CAAE,aAAY,CAAIA,CAAAA,CAAS,oBAAA,CAAqB,KAAA,CAAM,CAAC,CAAC,CAAA,GAAA,CAAA,CACxG,WAAA,CAAa,CAAA,MAAA,EAASA,EAAS,oBAAoB,CAAA,GAAA,CAAA,CACnD,KAAA,CAAOA,CAAAA,CAAS,mBAChB,QAAA,CAAWhyC,CAAAA,EAAMkyC,CAAAA,CAAkB,oBAAA,CAAsBlyC,EAAE,MAAA,CAAO,KAAK,CAAA,CACzE,CAAA,CAAA,CAEJ,GACF,CAAA,CAGA3F,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,gBACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,IAAA,CAAA,CAAG,SAAA,CAAU,6BAA6B,QAAA,CAAA,qBAAA,CAAmB,CAAA,CAC7Dk5C,GAAyB,CAAA,CAC5B,CAAA,CAGA93C,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,mDAAA,CACb,QAAA,CAAA,CAAApB,IAAC4C,CAAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,QAAQ,SAAA,CACR,OAAA,CAAS,IAAM8iC,CAAAA,CAAS,sBAAsB,CAAA,CAC/C,QAAA,CAAA,QAAA,CAED,CAAA,CACA1lC,GAAAA,CAAC4C,EAAA,CAAO,IAAA,CAAK,QAAA,CAAS,QAAA,CAAA,cAAA,CAEtB,GACF,CAAA,CAAA,CACF,CAAA,CAAA,CAEJ,CAAA,CACF,CAAA,CACF,EACF,CAAA,CACF,CAAA,CAAA,CACF,CAEJ,CC7UA,IAAM66B,EAAAA,CAAoBj7B,GAAoC,CAC5D,OAAQA,CAAAA,EACN,KAAK,QAAA,CACH,OAAO,SAAA,CACT,KAAK,WACH,OAAO,SAAA,CACT,KAAK,SAAA,CACH,OAAO,aAAA,CACT,QACE,OAAO,WACX,CACF,EAEM61C,EAAAA,CAAoB32C,CAAAA,EAAoC,CAC5D,OAAQA,GACN,KAAK,SAAA,CACH,OAAO,cACT,KAAK,MAAA,CACH,OAAO,SAAA,CACT,QACE,OAAO,WACX,CACF,CAAA,CAEM03C,GAA2B,CAAC,CAChC,SAAA,CAAA9nC,CAAAA,CACA,aAAAd,CAAAA,CACA,KAAA,CAAAkoC,CACF,CAAA,GAIM,CACJ,IAAMW,CAAAA,CAA0B,IAC9Bj4C,IAAAA,CAAAyK,SAAA,CACG,QAAA,CAAA,CAAA6sC,CAAAA,CAAM,eAAA,EAAmBA,EAAM,eAAA,CAAgB,MAAA,CAAS,CAAA,EACvDt3C,IAAAA,CAAC,OAAI,SAAA,CAAU,wBAAA,CACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,OACC,QAAA,CAAA,CAAApB,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,iDAAiD,QAAA,CAAA,kBAAA,CAAgB,CAAA,CAChFA,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,WAAA,CACZ,QAAA,CAAA04C,CAAAA,CAAM,eAAA,CAAgB,IAAI,CAACtvC,CAAAA,CAAM1G,CAAAA,GAChC1C,GAAAA,CAAC,OAAgB,SAAA,CAAU,yBAAA,CACxB,QAAA,CAAAoJ,CAAAA,CAAAA,CADO1G,CAEV,CACD,CAAA,CACH,GACF,CAAA,CACCg2C,CAAAA,CAAM,kBAAoBA,CAAAA,CAAM,gBAAA,CAAiB,MAAA,CAAS,CAAA,EACzDt3C,KAAC,KAAA,CAAA,CACC,QAAA,CAAA,CAAApB,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,gDAAA,CAAiD,QAAA,CAAA,mBAAA,CAAiB,CAAA,CACjFA,GAAAA,CAAC,OAAI,SAAA,CAAU,WAAA,CACZ,QAAA,CAAA04C,CAAAA,CAAM,iBAAiB,GAAA,CAAI,CAACY,CAAAA,CAAO52C,CAAAA,GAClC1C,IAAC,KAAA,CAAA,CAAgB,SAAA,CAAU,yBAAA,CACxB,QAAA,CAAAs5C,EAAM,WAAA,EAAY,CAAA,CADX52C,CAEV,CACD,EACH,CAAA,CAAA,CACF,CAAA,CAAA,CAEJ,CAAA,CAED,CAACg2C,EAAM,eAAA,EAAmBA,CAAAA,CAAM,gBAAA,EAAoBA,CAAAA,CAAM,iBAAiB,MAAA,CAAS,CAAA,EACnF14C,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wBAAA,CACb,QAAA,CAAAoB,IAAAA,CAAC,KAAA,CAAA,CACC,UAAApB,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,gDAAA,CAAiD,6BAAiB,CAAA,CACjFA,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,YACZ,QAAA,CAAA04C,CAAAA,CAAM,gBAAA,CAAiB,GAAA,CAAI,CAACY,CAAAA,CAAO52C,CAAAA,GAClC1C,GAAAA,CAAC,KAAA,CAAA,CAAgB,UAAU,yBAAA,CACxB,QAAA,CAAAs5C,EAAM,WAAA,EAAY,CAAA,CADX52C,CAEV,CACD,CAAA,CACH,CAAA,CAAA,CACF,CAAA,CACF,GAEAg2C,CAAAA,CAAM,gBAAA,EAAoBA,CAAAA,CAAM,UAAA,GAChCt3C,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wBAAA,CACZ,QAAA,CAAA,CAAAs3C,EAAM,gBAAA,EACL14C,GAAAA,CAAC0J,CAAAA,CAAA,CACC,MAAM,mBAAA,CACN,KAAA,CAAOgvC,CAAAA,CAAM,gBAAA,CAAiB,OAAO,CAAC,CAAA,CAAE,WAAA,EAAY,CAAIA,EAAM,gBAAA,CAAiB,KAAA,CAAM,CAAC,CAAA,CACtF,OAAO,YAAA,CACT,CAAA,CAEDA,CAAAA,CAAM,UAAA,EACL14C,IAAC0J,CAAAA,CAAA,CACC,KAAA,CAAM,aAAA,CACN,MAAOgvC,CAAAA,CAAM,UAAA,CAAW,MAAA,CAAO,CAAC,EAAE,WAAA,EAAY,CAAIA,CAAAA,CAAM,UAAA,CAAW,MAAM,CAAC,CAAA,CAC1E,MAAA,CAAO,YAAA,CACT,GAEJ,CAAA,CAAA,CAEAA,CAAAA,CAAM,SAAA,EAAaA,CAAAA,CAAM,WACzBt3C,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wBAAA,CACZ,UAAAs3C,CAAAA,CAAM,SAAA,EACL14C,GAAAA,CAAC0J,CAAAA,CAAA,CACC,KAAA,CAAM,YAAA,CACN,MAAOxK,EAAAA,CAAe,UAAA,CAAWw5C,EAAM,SAAS,CAAC,CAAA,CACjD,MAAA,CAAO,aACT,CAAA,CAEDA,CAAAA,CAAM,QAAA,EACL14C,GAAAA,CAAC0J,EAAA,CACC,KAAA,CAAM,WAAA,CACN,KAAA,CAAOgvC,EAAM,QAAA,CACb,MAAA,CAAO,YAAA,CACT,CAAA,CAAA,CAEJ,GAEJ,CAAA,CAGIa,CAAAA,CAAmC,IACvCv5C,GAAAA,CAAA6L,SAAA,CACG,QAAA,CAAA6sC,CAAAA,CAAM,iBAAA,EACLt3C,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wBAAA,CACb,QAAA,CAAA,CAAApB,IAAC0J,CAAAA,CAAA,CACC,KAAA,CAAM,oBAAA,CACN,MAAO,CAAA,EAAGgvC,CAAAA,CAAM,iBAAiB,CAAA,CAAA,CAAA,CACjC,OAAO,YAAA,CACT,CAAA,CACCA,CAAAA,CAAM,gBAAA,EACL14C,IAAC0J,CAAAA,CAAA,CACC,KAAA,CAAM,mBAAA,CACN,MAAOgvC,CAAAA,CAAM,gBAAA,CAAiB,MAAA,CAAO,CAAC,EAAE,WAAA,EAAY,CAAIA,CAAAA,CAAM,gBAAA,CAAiB,MAAM,CAAC,CAAA,CACtF,MAAA,CAAO,YAAA,CACT,GAEJ,CAAA,CAEJ,CAAA,CAGIc,CAAAA,CAA0B,IAC9Bx5C,IAAA6L,QAAAA,CAAA,CACG,SAAA6sC,CAAAA,CAAM,eAAA,EACLt3C,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wBAAA,CACb,QAAA,CAAA,CAAApB,IAAC0J,CAAAA,CAAA,CACC,KAAA,CAAM,kBAAA,CACN,MAAOxK,EAAAA,CAAe,UAAA,CAAWw5C,CAAAA,CAAM,eAAe,CAAC,CAAA,CACvD,MAAA,CAAO,YAAA,CACT,CAAA,CACCA,EAAM,YAAA,EACL14C,GAAAA,CAAC0J,CAAAA,CAAA,CACC,MAAM,gBAAA,CACN,KAAA,CAAOgvC,CAAAA,CAAM,YAAA,CACb,OAAO,YAAA,CACT,CAAA,CAAA,CAEJ,CAAA,CAEJ,CAAA,CAGIe,EAA+B,IACnCr4C,IAAAA,CAAAyK,QAAAA,CAAA,CACG,UAAA6sC,CAAAA,CAAM,cAAA,EACLt3C,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wBAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC0J,CAAAA,CAAA,CACC,KAAA,CAAM,kBAAA,CACN,KAAA,CAAOgvC,CAAAA,CAAM,eACb,MAAA,CAAO,YAAA,CACT,CAAA,CACCA,CAAAA,CAAM,YACL14C,GAAAA,CAAC0J,CAAAA,CAAA,CACC,KAAA,CAAM,cACN,KAAA,CAAOgvC,CAAAA,CAAM,UAAA,CAAW,MAAA,CAAO,CAAC,CAAA,CAAE,WAAA,EAAY,CAAIA,CAAAA,CAAM,WAAW,KAAA,CAAM,CAAC,EAC1E,MAAA,CAAO,YAAA,CACT,GAEJ,CAAA,CAEDA,CAAAA,CAAM,kBAAA,EACL14C,GAAAA,CAAC,OAAI,SAAA,CAAU,wBAAA,CACb,QAAA,CAAAA,GAAAA,CAAC0J,EAAA,CACC,KAAA,CAAM,qBAAA,CACN,KAAA,CAAOgvC,EAAM,kBAAA,CACb,MAAA,CAAO,YAAA,CACT,CAAA,CACF,GAEJ,CAAA,CAGIv+B,CAAAA,CACJ/Y,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,WAAA,CACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wBAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC0J,CAAAA,CAAA,CACC,KAAA,CAAM,YAAA,CACN,KAAA,CAAOgvC,CAAAA,CAAM,UACb,MAAA,CAAO,YAAA,CACT,CAAA,CACA14C,GAAAA,CAAC0J,EAAA,CACC,KAAA,CAAM,YAAA,CACN,KAAA,CAAOgvC,EAAM,SAAA,CAAU,OAAA,CAAQ,IAAA,CAAM,GAAG,EAAE,OAAA,CAAQ,OAAA,CAASgB,CAAAA,EAAKA,CAAAA,CAAE,aAAa,CAAA,CAC/E,MAAA,CAAO,YAAA,CACT,GACF,CAAA,CAEAt4C,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yBACb,QAAA,CAAA,CAAApB,GAAAA,CAAC0J,CAAAA,CAAA,CACC,MAAM,QAAA,CACN,KAAA,CAAO1J,IAACsB,CAAAA,CAAA,CAAM,QAAS+2C,EAAAA,CAAiBK,CAAAA,CAAM,MAAM,CAAA,CAAI,SAAAA,CAAAA,CAAM,MAAA,CAAO,CAAA,CACrE,MAAA,CAAO,aACT,CAAA,CACA14C,GAAAA,CAAC0J,CAAAA,CAAA,CACC,MAAM,SAAA,CACN,KAAA,CAAOoY,MAAAA,CAAO62B,QAAAA,CAASD,EAAM,OAAO,CAAA,CAAG,0BAA0B,CAAA,CACjE,OAAO,YAAA,CACT,CAAA,CAAA,CACF,CAAA,CAEAt3C,IAAAA,CAAC,OAAI,SAAA,CAAU,wBAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC0J,EAAA,CACC,KAAA,CAAM,oBACN,KAAA,CAAOgvC,CAAAA,CAAM,iBACb,MAAA,CAAO,YAAA,CACT,CAAA,CACCA,CAAAA,CAAM,oBACL14C,GAAAA,CAAC0J,CAAAA,CAAA,CACC,KAAA,CAAM,uBACN,KAAA,CAAOgvC,CAAAA,CAAM,kBAAA,CACb,MAAA,CAAO,aACT,CAAA,CAAA,CAEJ,CAAA,CAEAt3C,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,WAAA,CACZ,QAAA,CAAA,CAAAs3C,CAAAA,CAAM,SAAA,GAAc,eAAiBW,CAAAA,EAAwB,CAC7DX,CAAAA,CAAM,SAAA,GAAc,0BAA4Ba,CAAAA,EAAiC,CACjFb,CAAAA,CAAM,SAAA,GAAc,gBAAkBc,CAAAA,EAAwB,CAC9Dd,EAAM,SAAA,GAAc,mBAAA,EAAuBe,GAA6B,CAAA,CAC3E,CAAA,CAAA,CACF,CAAA,CAOF,OACEz5C,IAACga,EAAAA,CAAA,CACC,KAAA,CAAM,wBAAA,CACN,YAAaG,CAAAA,CACb,WAAA,CAPFna,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,+BAAA,CAAgC,QAAA,CAAA,0BAAA,CAAwB,CAAA,CAQrE,SAAA,CAAWsR,EACX,YAAA,CAAcd,CAAAA,CACd,OAAA,CAAQ,QAAA,CACV,CAEJ,CAAA,CAEe,SAARmpC,EAAAA,EAAuC,CAC5C,GAAM,CAAE,EAAA,CAAAx0C,CAAG,CAAA,CAAIiiC,WAAU,CACnB1B,CAAAA,CAAWC,WAAAA,EAAY,CAEvB+S,EAAQN,EAAAA,CAAmB,IAAA,CAAKsB,CAAAA,EAAKA,CAAAA,CAAE,KAAOv0C,CAAE,CAAA,CAEtD,OAAKuzC,CAAAA,CAgBH14C,IAACggC,EAAAA,CAAA,CACC,KAAA,CACE5+B,IAAAA,CAAC,OAAI,SAAA,CAAU,yBAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,QAAM,QAAA,CAAA04C,CAAAA,CAAM,SAAA,CAAU,CAAA,CACvB14C,IAACsB,CAAAA,CAAA,CAAM,OAAA,CAASm8B,EAAAA,CAAiBib,EAAM,MAAM,CAAA,CAAI,QAAA,CAAAA,CAAAA,CAAM,OAAO,CAAA,CAAA,CAChE,CAAA,CAEF,MAAO,CACL,CACE,IAAK,SAAA,CACL,SAAA,CAAY54C,CAAAA,EAAUE,GAAAA,CAACo5C,GAAA,CAA0B,GAAGt5C,CAAAA,CAAO,KAAA,CAAO44C,EAAO,CAC3E,CACF,CAAA,CACA,OAAA,CAAS,CACP,CACE,KAAA,CAAO,YAAA,CACP,OAAA,CAAS,cACT,OAAA,CAAS,IAAM,OAAA,CAAQ,GAAA,CAAI,kBAAkB,CAC/C,CACF,CAAA,CACF,CAAA,CAlCE14C,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,6BAAA,CACb,QAAA,CAAAoB,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,aAAA,CACb,QAAA,CAAA,CAAApB,IAAC,IAAA,CAAA,CAAG,SAAA,CAAU,yBAAA,CAA0B,QAAA,CAAA,0BAAA,CAAwB,EAChEA,GAAAA,CAAC,GAAA,CAAA,CAAE,SAAA,CAAU,4BAAA,CAA6B,kDAAsC,CAAA,CAChFoB,IAAAA,CAACwB,CAAAA,CAAA,CAAO,QAAS,IAAM8iC,CAAAA,CAAS,sBAAsB,CAAA,CACpD,UAAA1lC,GAAAA,CAACm5C,SAAAA,CAAA,CAAU,SAAA,CAAU,eAAe,CAAA,CAAE,yBAAA,CAAA,CAExC,CAAA,CAAA,CACF,CAAA,CACF,CA2BN,CCxSO,SAASS,EAAAA,CAAkB,CAAE,KAAAt0C,CAAAA,CAAM,YAAA,CAAA2M,CAAa,CAAA,CAA2B,CAChF,GAAM,CAAC4nC,CAAAA,CAAUC,CAAW,EAAI9zC,QAAAA,CAAgC,IAAI,CAAA,CAC9D,CAACgC,EAAcC,CAAe,CAAA,CAAIjC,QAAAA,CAAsB,IAAI,EAC5D,CAAC4B,CAAAA,CAAaC,CAAc,CAAA,CAAI7B,SAAS,KAAK,CAAA,CAC9C+zC,CAAAA,CAAertB,MAAAA,CAAyB,IAAI,CAAA,CAE5CstB,CAAAA,CAAoBv3C,CAAAA,EAA+C,CACvE,IAAMsG,CAAAA,CAAOtG,CAAAA,CAAM,MAAA,CAAO,KAAA,GAAQ,CAAC,CAAA,CAC/BsG,CAAAA,EACFd,CAAAA,CAAgBc,CAAI,EAExB,CAAA,CAEMkxC,CAAAA,CAAmB,IAAM,CAC7BhyC,EAAgB,IAAI,CAAA,CAChB8xC,EAAa,OAAA,GACfA,CAAAA,CAAa,QAAQ,KAAA,CAAQ,EAAA,EAEjC,CAAA,CAEMlsB,CAAAA,CAAc,IAAM,CACxBisB,CAAAA,CAAY,IAAI,CAAA,CAChB7xC,EAAgB,IAAI,CAAA,CAChB8xC,CAAAA,CAAa,OAAA,GACfA,EAAa,OAAA,CAAQ,KAAA,CAAQ,EAAA,EAEjC,CAAA,CAEMG,EAAe,SAAY,CAC3B,CAAClyC,CAAAA,EAAgB,CAAC6xC,CAAAA,GAEtBhyC,CAAAA,CAAe,IAAI,CAAA,CAGnB,WAAW,IAAM,CACfA,CAAAA,CAAe,KAAK,EACpB9C,KAAAA,CAAM,OAAA,CAAQ,CAAA,EAAG80C,CAAQ,6BAA6B,CAAA,CACtDhsB,CAAAA,EAAY,CACZ5b,CAAAA,CAAa,KAAK,EACpB,CAAA,CAAG,GAAI,CAAA,EACT,EAEA,OACEjS,GAAAA,CAACyK,EAAAA,CAAA,CAAO,KAAMnF,CAAAA,CAAM,YAAA,CAAc2M,CAAAA,CAChC,QAAA,CAAA7Q,KAAC2J,EAAAA,CAAA,CAAc,SAAA,CAAU,kBAAA,CACvB,UAAA/K,GAAAA,CAACiL,EAAAA,CAAA,CACC,QAAA,CAAAjL,IAACmL,EAAAA,CAAA,CAAY,QAAA,CAAA,mBAAA,CAAiB,CAAA,CAChC,EAEA/J,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,gBAAA,CAEb,QAAA,CAAA,CAAAA,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,WAAA,CACb,QAAA,CAAA,CAAApB,IAACsqB,EAAAA,CAAA,CAAM,QAAA,CAAA,WAAA,CAAS,CAAA,CAChBlpB,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wBAAA,CACb,QAAA,CAAA,CAAAA,KAAC,QAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,OAAA,CAAS,IAAM04C,CAAAA,CAAY,KAAK,CAAA,CAChC,SAAA,CAAWh7C,EACT,yEAAA,CACA+6C,CAAAA,GAAa,KAAA,CACT,6BAAA,CACA,uCACN,CAAA,CAEA,QAAA,CAAA,CAAA75C,GAAAA,CAACm6C,cAAAA,CAAA,CAAe,SAAA,CAAU,sBAAA,CAAuB,CAAA,CACjD/4C,IAAAA,CAAC,OAAI,SAAA,CAAU,aAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,OAAI,SAAA,CAAU,aAAA,CAAc,QAAA,CAAA,KAAA,CAAG,CAAA,CAChCA,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,oCAAA,CAAqC,QAAA,CAAA,8DAAA,CAA4D,GAClH,CAAA,CAAA,CACF,CAAA,CACAoB,IAAAA,CAAC,QAAA,CAAA,CACC,KAAK,QAAA,CACL,OAAA,CAAS,IAAM04C,CAAAA,CAAY,MAAM,CAAA,CACjC,SAAA,CAAWh7C,CAAAA,CACT,yEAAA,CACA+6C,IAAa,MAAA,CACT,6BAAA,CACA,uCACN,CAAA,CAEA,UAAA75C,GAAAA,CAAC2Y,GAAAA,CAAA,CAAI,SAAA,CAAU,sBAAA,CAAuB,EACtCvX,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,aAAA,CACb,UAAApB,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,aAAA,CAAc,gBAAI,CAAA,CACjCA,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,qCAAqC,QAAA,CAAA,+CAAA,CAA6C,CAAA,CAAA,CACnG,CAAA,CAAA,CACF,CAAA,CAAA,CACF,GACF,CAAA,CAGC65C,CAAAA,EACC75C,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,qDAAA,CACd,QAAA,CAACgI,CAAAA,CA0BA5G,IAAAA,CAAC,OAAI,SAAA,CAAU,yCAAA,CACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,OAAI,SAAA,CAAU,wCAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAACo6C,KAAA,CAAK,SAAA,CAAU,oCAAA,CAAqC,CAAA,CACrDh5C,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,gBAAA,CACb,QAAA,CAAA,CAAApB,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,8BAAA,CAAgC,QAAA,CAAAgI,EAAa,IAAA,CAAK,CAAA,CAC/D5G,IAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,+BAAA,CACT,QAAA,CAAA,CAAA,CAAA4G,CAAAA,CAAa,IAAA,CAAO,MAAM,OAAA,CAAQ,CAAC,CAAA,CAAE,KAAA,CAAA,CACzC,GACF,CAAA,CAAA,CACF,CAAA,CACAhI,GAAAA,CAAC4C,CAAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,QAAQ,OAAA,CACR,IAAA,CAAK,OACL,OAAA,CAASq3C,CAAAA,CACT,SAAA,CAAU,eAAA,CAEV,SAAAj6C,GAAAA,CAAC8G,GAAAA,CAAA,CAAE,SAAA,CAAU,UAAU,CAAA,CACzB,CAAA,CAAA,CACF,CAAA,CA5CA1F,IAAAA,CAAC,OAAI,SAAA,CAAU,iDAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAACwJ,OAAA,CAAO,SAAA,CAAU,iCAAA,CAAkC,CAAA,CACpDpI,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,aAAA,CACb,QAAA,CAAA,CAAApB,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,qBAAA,CAAsB,QAAA,CAAA,yBAAA,CAAuB,EAC1DA,GAAAA,CAAC,GAAA,CAAA,CAAE,SAAA,CAAU,oCAAA,CAAqC,oCAElD,CAAA,CAAA,CACF,CAAA,CACAA,GAAAA,CAAC,OAAA,CAAA,CACC,IAAK+5C,CAAAA,CACL,IAAA,CAAK,MAAA,CACL,QAAA,CAAUC,EACV,SAAA,CAAU,QAAA,CACV,MAAA,CAAO,WAAA,CACP,GAAG,mBAAA,CACL,CAAA,CACAh6C,GAAAA,CAAC4C,CAAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,OAAA,CAAQ,SAAA,CACR,QAAS,IAAMm3C,CAAAA,CAAa,OAAA,EAAS,KAAA,GACtC,QAAA,CAAA,aAAA,CAED,CAAA,CAAA,CACF,CAAA,CAuBF,CAAA,CAAA,CAEJ,EAEA34C,IAAAA,CAAC8J,EAAAA,CAAA,CACC,QAAA,CAAA,CAAAlL,GAAAA,CAAC4C,EAAA,CAAO,OAAA,CAAQ,SAAA,CAAU,OAAA,CAAS,IAAM,CACvCirB,CAAAA,EAAY,CACZ5b,CAAAA,CAAa,KAAK,EACpB,CAAA,CAAG,QAAA,CAAA,QAAA,CAEH,CAAA,CACAjS,IAAC4C,CAAAA,CAAA,CACC,OAAA,CAASs3C,CAAAA,CACT,SAAU,CAAClyC,CAAAA,EAAgB,CAAC6xC,CAAAA,EAAYjyC,EAEvC,QAAA,CAAAA,CAAAA,CAAc,cAAA,CAAiB,QAAA,CAClC,GACF,CAAA,CAAA,CACF,CAAA,CACF,CAEJ,CC/JO,IAAMyyC,EAAAA,CAAkC,CAC7C,CACE,EAAA,CAAI,IACJ,QAAA,CAAU,sBAAA,CACV,QAAA,CAAU,+BAAA,CACV,KAAM,iBAAA,CACN,MAAA,CAAQ,WAAA,CACR,SAAA,CAAW,qBACX,YAAA,CAAc,IAAA,CACd,cAAA,CAAgB,IAAA,CAChB,iBAAkB,CAAA,CAClB,cAAA,CAAgB,CAAA,CAChB,cAAA,CAAgB,CAClB,CAAA,CACA,CACE,EAAA,CAAI,GAAA,CACJ,SAAU,sBAAA,CACV,QAAA,CAAU,8BAAA,CACV,IAAA,CAAM,kBACN,MAAA,CAAQ,WAAA,CACR,SAAA,CAAW,oBAAA,CACX,aAAc,GAAA,CACd,cAAA,CAAgB,IAChB,gBAAA,CAAkB,CAAA,CAClB,eAAgB,CAAA,CAChB,cAAA,CAAgB,CAClB,CAAA,CACA,CACE,EAAA,CAAI,GAAA,CACJ,QAAA,CAAU,sBAAA,CACV,SAAU,sBAAA,CACV,IAAA,CAAM,iBAAA,CACN,MAAA,CAAQ,YACR,SAAA,CAAW,oBAAA,CACX,YAAA,CAAc,GAAA,CACd,eAAgB,GAAA,CAChB,gBAAA,CAAkB,CAAA,CAClB,cAAA,CAAgB,GAChB,cAAA,CAAgB,CAClB,CAAA,CACA,CACE,GAAI,GAAA,CACJ,QAAA,CAAU,sBAAA,CACV,QAAA,CAAU,gCACV,IAAA,CAAM,iBAAA,CACN,MAAA,CAAQ,WAAA,CACR,UAAW,oBAAA,CACX,YAAA,CAAc,IAAA,CACd,cAAA,CAAgB,KAChB,gBAAA,CAAkB,CAAA,CAClB,cAAA,CAAgB,CAAA,CAChB,eAAgB,CAClB,CAAA,CACA,CACE,EAAA,CAAI,IACJ,QAAA,CAAU,sBAAA,CACV,QAAA,CAAU,sBAAA,CACV,KAAM,iBAAA,CACN,MAAA,CAAQ,WAAA,CACR,SAAA,CAAW,qBACX,YAAA,CAAc,GAAA,CACd,cAAA,CAAgB,GAAA,CAChB,iBAAkB,CAAA,CAClB,cAAA,CAAgB,GAAA,CAChB,cAAA,CAAgB,CAClB,CAAA,CACA,CACE,GAAI,GAAA,CACJ,QAAA,CAAU,uBACV,QAAA,CAAU,8BAAA,CACV,IAAA,CAAM,iBAAA,CACN,OAAQ,WAAA,CACR,SAAA,CAAW,oBAAA,CACX,YAAA,CAAc,IACd,cAAA,CAAgB,GAAA,CAChB,gBAAA,CAAkB,CAAA,CAClB,eAAgB,CAAA,CAChB,cAAA,CAAgB,CAClB,CAAA,CACA,CACE,EAAA,CAAI,GAAA,CACJ,QAAA,CAAU,sBAAA,CACV,SAAU,+BAAA,CACV,IAAA,CAAM,iBAAA,CACN,MAAA,CAAQ,YACR,SAAA,CAAW,oBAAA,CACX,YAAA,CAAc,IAAA,CACd,eAAgB,IAAA,CAChB,gBAAA,CAAkB,CAAA,CAClB,cAAA,CAAgB,EAChB,cAAA,CAAgB,CAClB,CAAA,CACA,CACE,GAAI,GAAA,CACJ,QAAA,CAAU,sBAAA,CACV,QAAA,CAAU,gCACV,IAAA,CAAM,iBAAA,CACN,MAAA,CAAQ,QAAA,CACR,UAAW,oBAAA,CACX,YAAA,CAAc,CAAA,CACd,cAAA,CAAgB,EAChB,gBAAA,CAAkB,CAAA,CAClB,cAAA,CAAgB,CAAA,CAChB,eAAgB,CAClB,CAAA,CACA,CACE,EAAA,CAAI,IACJ,QAAA,CAAU,sBAAA,CACV,QAAA,CAAU,8BAAA,CACV,KAAM,iBAAA,CACN,MAAA,CAAQ,YACR,SAAA,CAAW,oBAAA,CACX,aAAc,GAAA,CACd,cAAA,CAAgB,GAAA,CAChB,gBAAA,CAAkB,GAClB,cAAA,CAAgB,CAAA,CAChB,cAAA,CAAgB,CAClB,CACF,CAAA,CC3He,SAARC,EAAAA,EAA+B,CACpC,GAAM,CAAC/B,CAAAA,CAAWC,CAAY,CAAA,CAAIxyC,SAA4B,UAAU,CAAA,CAClE,CAACiZ,CAAAA,CAAewkB,CAAgB,CAAA,CAAIz9B,QAAAA,CAAyB,MAAM,CAAA,CACnE,CAACu0C,CAAAA,CAAkBC,CAAmB,CAAA,CAAIx0C,QAAAA,CAAS,KAAK,CAAA,CAExDuZ,CAAAA,CAAcnP,CAAAA,EAA6B,CAC3CmoC,IAAcnoC,CAAAA,CAChBqzB,CAAAA,CAAiBxkB,CAAAA,GAAkB,KAAA,CAAQ,OAAS,KAAK,CAAA,EAEzDu5B,CAAAA,CAAapoC,CAAK,EAClBqzB,CAAAA,CAAiB,MAAM,GAE3B,CAAA,CAEMgX,CAAAA,CAAgB,CAAC,GAAGJ,EAAgB,CAAA,CAAE,IAAA,CAAK,CAAC7V,CAAAA,CAAGqF,CAAAA,GAAM,CACzD,IAAMC,EAAStF,CAAAA,CAAE+T,CAAS,CAAA,CACpBxO,CAAAA,CAASF,EAAE0O,CAAS,CAAA,CAE1B,OAAIzO,CAAAA,EAAU,KAAa,CAAA,CACvBC,CAAAA,EAAU,IAAA,CAAa,EAAA,CAEvB9qB,IAAkB,KAAA,CACb6qB,CAAAA,CAASC,CAAAA,CAAS,CAAA,CAAI,GAEtBD,CAAAA,CAASC,CAAAA,CAAS,CAAA,CAAI,EAEjC,CAAC,CAAA,CA4FD,OACE3oC,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,2CAAA,CAEb,QAAA,CAAA,CAAApB,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,+FAAA,CACb,QAAA,CAAAA,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wCAAA,CACb,QAAA,CAAAoB,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,mCAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,KAAA,CAAA,CACC,SAAAA,GAAAA,CAAC,IAAA,CAAA,CAAG,SAAA,CAAU,oCAAA,CAAqC,8BAAkB,CAAA,CACvE,CAAA,CACAA,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,yBAAA,CACb,QAAA,CAAAoB,IAAAA,CAACwB,CAAAA,CAAA,CAAO,OAAA,CAAS,IAAM43C,EAAoB,IAAI,CAAA,CAC7C,UAAAx6C,GAAAA,CAACwJ,MAAAA,CAAA,CAAO,SAAA,CAAU,eAAe,CAAA,CAAE,mBAAA,CAAA,CAErC,CAAA,CACF,CAAA,CAAA,CACF,EACF,CAAA,CACF,CAAA,CAGAxJ,GAAAA,CAAC45C,EAAAA,CAAA,CAAkB,IAAA,CAAMW,CAAAA,CAAkB,YAAA,CAAcC,CAAAA,CAAqB,EAG9Ex6C,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wBAAA,CACb,SAAAA,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wDAAA,CACb,SAAAA,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,2BAAA,CACb,SAAAA,GAAAA,CAAC8e,EAAAA,CAAA,CACC,OAAA,CArHoC,CAC9C,CACE,GAAA,CAAK,UAAA,CACL,KAAA,CAAO,WACP,QAAA,CAAU,IAAA,CACV,MAAA,CAAS3f,CAAAA,EACPa,IAAC,MAAA,CAAA,CAAK,SAAA,CAAU,SAAA,CACb,QAAA,CAAA8hB,OAAO62B,QAAAA,CAASx5C,CAAK,CAAA,CAAG,YAAY,EACvC,CAEJ,CAAA,CACA,CACE,GAAA,CAAK,WACL,KAAA,CAAO,WAAA,CACP,MAAA,CAAQ,CAACA,EAAO2O,CAAAA,GAAQ,CAEtB,IAAM+O,CAAAA,CADQ/O,EAAI,IAAA,CAAK,QAAA,CAAS,KAAK,CAAA,CAChBqsC,cAAAA,CAAiBxhC,IACtC,OACEvX,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,0BACb,QAAA,CAAA,CAAApB,GAAAA,CAAC6c,CAAAA,CAAA,CAAK,UAAU,6CAAA,CAA8C,CAAA,CAC9D7c,GAAAA,CAAC,MAAA,CAAA,CAAK,UAAU,qBAAA,CAAuB,QAAA,CAAAb,CAAAA,CAAM,CAAA,CAAA,CAC/C,CAEJ,CACF,CAAA,CACA,CACE,GAAA,CAAK,SACL,KAAA,CAAO,QAAA,CACP,MAAA,CAASA,CAAAA,EACHA,IAAU,WAAA,CACLa,GAAAA,CAACu7B,YAAAA,CAAA,CAAa,UAAU,wBAAA,CAAyB,CAAA,CAEtDp8B,CAAAA,GAAU,QAAA,CACLa,IAAC8B,OAAAA,CAAA,CAAQ,SAAA,CAAU,sBAAA,CAAuB,EAE/C3C,CAAAA,GAAU,YAAA,CACLa,GAAAA,CAACoC,MAAAA,CAAA,CAAO,SAAA,CAAU,wBAAA,CAAyB,CAAA,CAE7CpC,GAAAA,CAAC,QAAK,SAAA,CAAU,SAAA,CAAW,QAAA,CAAAb,CAAAA,CAAM,CAE5C,CAAA,CACA,CACE,GAAA,CAAK,WAAA,CACL,MAAO,WAAA,CACP,MAAA,CAASA,CAAAA,EACPa,GAAAA,CAAC,QAAK,SAAA,CAAU,SAAA,CAAW,QAAA,CAAAb,CAAAA,CAAM,CAErC,CAAA,CACA,CACE,IAAK,cAAA,CACL,KAAA,CAAO,QACP,QAAA,CAAU,IAAA,CACV,MAAA,CAASA,CAAAA,EACPa,IAAC,MAAA,CAAA,CAAK,SAAA,CAAU,SAAA,CAAW,QAAA,CAAAb,EAAM,cAAA,EAAe,CAAE,CAEtD,CAAA,CACA,CACE,GAAA,CAAK,gBAAA,CACL,KAAA,CAAO,SAAA,CACP,SAAU,IAAA,CACV,MAAA,CAASA,CAAAA,EACPa,GAAAA,CAAC,QAAK,SAAA,CAAU,SAAA,CAAW,QAAA,CAAAb,CAAAA,CAAM,gBAAe,CAAE,CAEtD,CAAA,CACA,CACE,IAAK,kBAAA,CACL,KAAA,CAAO,WAAA,CACP,QAAA,CAAU,KACV,MAAA,CAASA,CAAAA,EACPa,GAAAA,CAAC,MAAA,CAAA,CAAK,UAAU,SAAA,CAAW,QAAA,CAAAb,CAAAA,CAAM,cAAA,GAAiB,CAEtD,CAAA,CACA,CACE,GAAA,CAAK,iBACL,KAAA,CAAO,SAAA,CACP,QAAA,CAAU,IAAA,CACV,OAASA,CAAAA,EACPa,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,UAAW,QAAA,CAAAb,CAAAA,CAAM,cAAA,EAAe,CAAE,CAEtD,CAAA,CACA,CACE,GAAA,CAAK,gBAAA,CACL,MAAO,SAAA,CACP,QAAA,CAAU,KACV,MAAA,CAASA,CAAAA,EACPa,IAAC,MAAA,CAAA,CAAK,SAAA,CAAU,SAAA,CAAW,QAAA,CAAAb,EAAM,cAAA,EAAe,CAAE,CAEtD,CACF,EA8BY,IAAA,CAAMs7C,CAAAA,CACN,MAAA,CAAQlC,CAAAA,CACR,cAAet5B,CAAAA,CACf,MAAA,CAAQM,CAAAA,CACV,CAAA,CACF,EACF,CAAA,CACF,CAAA,CAAA,CACF,CAEJ,CCpJO,IAAMm7B,EAAAA,CAA4C,CACvD,CACE,EAAA,CAAI,SACJ,MAAA,CAAQ,IAAA,CACR,QAAA,CAAU,YAAA,CACV,cAAe,YAAA,CACf,eAAA,CAAiB,YAAA,CACjB,IAAA,CAAM,KACR,CAAA,CACA,CACE,EAAA,CAAI,QAAA,CACJ,OAAQ,MAAA,CACR,QAAA,CAAU,YAAA,CACV,aAAA,CAAe,aACf,eAAA,CAAiB,YAAA,CACjB,IAAA,CAAM,KACR,EACA,CACE,EAAA,CAAI,QAAA,CACJ,MAAA,CAAQ,KACR,QAAA,CAAU,YAAA,CACV,cAAe,YAAA,CACf,eAAA,CAAiB,aACjB,IAAA,CAAM,KACR,CAAA,CACA,CACE,GAAI,QAAA,CACJ,MAAA,CAAQ,GAAA,CACR,QAAA,CAAU,aACV,aAAA,CAAe,YAAA,CACf,eAAA,CAAiB,YAAA,CACjB,KAAM,MACR,CAAA,CACA,CACE,EAAA,CAAI,SACJ,MAAA,CAAQ,QAAA,CACR,QAAA,CAAU,YAAA,CACV,cAAe,YAAA,CACf,eAAA,CAAiB,YAAA,CACjB,IAAA,CAAM,MACR,CAAA,CACA,CACE,EAAA,CAAI,QAAA,CACJ,OAAQ,IAAA,CACR,QAAA,CAAU,YAAA,CACV,aAAA,CAAe,aACf,eAAA,CAAiB,YAAA,CACjB,IAAA,CAAM,KACR,CACF,CAAA,CAEaC,EAAAA,CAAsC,CACjD,CACE,GAAI,QAAA,CACJ,MAAA,CAAQ,IAAA,CACR,cAAA,CAAgB,aAChB,eAAA,CAAiB,YAAA,CACjB,IAAA,CAAM,KACR,EACA,CACE,EAAA,CAAI,QAAA,CACJ,MAAA,CAAQ,OACR,cAAA,CAAgB,YAAA,CAChB,eAAA,CAAiB,YAAA,CACjB,KAAM,KACR,CAAA,CACA,CACE,EAAA,CAAI,SACJ,MAAA,CAAQ,KAAA,CACR,eAAgB,YAAA,CAChB,eAAA,CAAiB,aACjB,IAAA,CAAM,KACR,CAAA,CACA,CACE,GAAI,QAAA,CACJ,MAAA,CAAQ,GAAA,CACR,cAAA,CAAgB,aAChB,eAAA,CAAiB,YAAA,CACjB,IAAA,CAAM,MACR,EACA,CACE,EAAA,CAAI,QAAA,CACJ,MAAA,CAAQ,SACR,cAAA,CAAgB,YAAA,CAChB,eAAA,CAAiB,YAAA,CACjB,KAAM,MACR,CAAA,CACA,CACE,EAAA,CAAI,SACJ,MAAA,CAAQ,IAAA,CACR,cAAA,CAAgB,YAAA,CAChB,gBAAiB,YAAA,CACjB,IAAA,CAAM,KACR,CACF,ECjGe,SAARC,IAAmC,CACxC,GAAM,CAACC,CAAAA,CAAUC,CAAW,CAAA,CAAI90C,QAAAA,EAAe,CACzC,CAAC+0C,EAAQC,CAAS,CAAA,CAAIh1C,QAAAA,EAAe,CACrC,CAAC20B,CAAAA,CAAiBsgB,CAAkB,CAAA,CAAIj1C,QAAAA,CAAyB,KAAK,CAAA,CACtE,CAACk1C,CAAAA,CAAWC,CAAY,EAAIn1C,QAAAA,CAA6B00C,EAAqB,EAC9E,CAACU,CAAAA,CAASC,CAAU,CAAA,CAAIr1C,QAAAA,CAA0B20C,EAAkB,CAAA,CACpE,CAACW,CAAAA,CAAeC,CAAgB,CAAA,CAAIv1C,QAAAA,CAAwB,IAAI,CAAA,CAChE,CAACw1C,CAAAA,CAAaC,CAAc,EAAIz1C,QAAAA,CAAwB,IAAI,CAAA,CAC5D,CAAC01C,EAAYC,CAAa,CAAA,CAAI31C,QAAAA,CAAS,IAAI,EAG3C,CAAC41C,CAAAA,CAAWC,CAAY,CAAA,CAAI71C,SAAS,CAAC,CAAA,CACtC,CAAC81C,CAAAA,CAAkBC,CAAmB,CAAA,CAAI/1C,QAAAA,CAAS,EAAE,CAAA,CACrD,CAACg2C,CAAAA,CAASC,CAAU,CAAA,CAAIj2C,QAAAA,CAAS,CAAC,CAAA,CAClC,CAACk2C,CAAAA,CAAgBC,CAAiB,EAAIn2C,QAAAA,CAAS,EAAE,CAAA,CAEjDo2C,EAAAA,CAAe,IAAM,CACzB,GAAI,CAACvB,CAAAA,EAAY,CAACE,CAAAA,CAAQ,CACxBh2C,EAAAA,CAAM,CACJ,MAAO,oBAAA,CACP,WAAA,CAAa,sCAAA,CACb,OAAA,CAAS,aACX,CAAC,CAAA,CACD,MACF,CAGA,IAAMs3C,CAAAA,CAAgB3B,EAAAA,CAAsB,OAAO51C,EAAAA,EAAK,CACtD,IAAMw3C,EAAAA,CAAQ,IAAI,IAAA,CAAKx3C,EAAAA,CAAE,QAAQ,CAAA,CACjC,OAAOA,EAAAA,CAAE,IAAA,GAAS61B,GAAmB2hB,EAAAA,EAASzB,CAAAA,EAAYyB,EAAAA,EAASvB,CACrE,CAAC,CAAA,CAEKwB,EAAAA,CAAc5B,EAAAA,CAAmB,MAAA,CAAO6B,IAAK,CACjD,IAAMC,EAAAA,CAAQ,IAAI,KAAKD,EAAAA,CAAE,cAAc,CAAA,CACvC,OAAOA,GAAE,IAAA,GAAS7hB,CAAAA,EAAmB8hB,EAAAA,EAAS5B,CAAAA,EAAY4B,IAAS1B,CACrE,CAAC,CAAA,CAEDI,CAAAA,CAAakB,CAAa,CAAA,CAC1BhB,CAAAA,CAAWkB,EAAW,CAAA,CACtBZ,EAAc,IAAI,CAAA,CAClBJ,CAAAA,CAAiB,IAAI,EACrBE,CAAAA,CAAe,IAAI,CAAA,CACnBI,CAAAA,CAAa,CAAC,CAAA,CACdI,CAAAA,CAAW,CAAC,CAAA,CAEZl3C,GAAM,CACJ,KAAA,CAAO,aAAA,CACP,WAAA,CAAa,SAASs3C,CAAAA,CAAc,MAAM,CAAA,wBAAA,EAA2BE,EAAAA,CAAY,MAAM,CAAA,gBAAA,CACzF,CAAC,EACH,CAAA,CAEMG,GAAc,IAAM,CACxB,GAAI,CAACpB,CAAAA,EAAiB,CAACE,CAAAA,CAAa,CAClCz2C,EAAAA,CAAM,CACJ,MAAO,oBAAA,CACP,WAAA,CAAa,+CAAA,CACb,OAAA,CAAS,aACX,CAAC,CAAA,CACD,MACF,CAEA,IAAM43C,CAAAA,CAAWzB,CAAAA,CAAU,IAAA,CAAKp2C,EAAAA,EAAKA,GAAE,EAAA,GAAOw2C,CAAa,CAAA,CACrDsB,EAAAA,CAASxB,EAAQ,IAAA,CAAKoB,EAAAA,EAAKA,EAAAA,CAAE,EAAA,GAAOhB,CAAW,CAAA,CAGrDL,CAAAA,CAAa1pC,EAAAA,EAAQA,EAAAA,CAAK,OAAO3M,EAAAA,EAAKA,EAAAA,CAAE,EAAA,GAAOw2C,CAAa,CAAC,CAAA,CAC7DD,CAAAA,CAAW5pC,EAAAA,EAAQA,EAAAA,CAAK,OAAO+qC,EAAAA,EAAKA,EAAAA,CAAE,EAAA,GAAOhB,CAAW,CAAC,CAAA,CACzDD,CAAAA,CAAiB,IAAI,CAAA,CACrBE,EAAe,IAAI,CAAA,CAEnB12C,EAAAA,CAAM,CACJ,MAAO,sBAAA,CACP,WAAA,CAAa,CAAA,QAAA,EAAW43C,CAAAA,EAAU,EAAE,CAAA,MAAA,EAASC,EAAAA,EAAQ,EAAE,CAAA,CACzD,CAAC,EACH,CAAA,CAEMC,CAAAA,CAAWvB,CAAAA,EAAiBE,EAG5BsB,CAAAA,CAAkB,IAAA,CAAK,KAAK5B,CAAAA,CAAU,MAAA,CAASY,CAAgB,CAAA,CAC/DiB,CAAAA,CAAAA,CAAmBnB,CAAAA,CAAY,CAAA,EAAKE,EACpCkB,CAAAA,CAAqB9B,CAAAA,CAAU,KAAA,CAAM6B,CAAAA,CAAiBA,EAAkBjB,CAAgB,CAAA,CAGxFmB,CAAAA,CAAgB,IAAA,CAAK,KAAK7B,CAAAA,CAAQ,MAAA,CAASc,CAAc,CAAA,CACzDgB,GAAiBlB,CAAAA,CAAU,CAAA,EAAKE,CAAAA,CAChCiB,EAAAA,CAAmB/B,EAAQ,KAAA,CAAM8B,CAAAA,CAAeA,CAAAA,CAAgBhB,CAAc,EAEpF,OACEl8C,GAAAA,CAAC8yB,EAAAA,CAAA,CAAU,KAAK,MAAA,CAAO,OAAA,CAAQ,IAAA,CAC7B,QAAA,CAAA1xB,KAACgyB,EAAAA,CAAA,CAAM,OAAA,CAAQ,IAAA,CACb,UAAAhyB,IAAAA,CAAC,KAAA,CAAA,CACC,QAAA,CAAA,CAAApB,GAAAA,CAAC,MAAG,SAAA,CAAU,mCAAA,CAAoC,QAAA,CAAA,kBAAA,CAAgB,CAAA,CAClEA,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,4BAAA,CAA6B,QAAA,CAAA,kFAAA,CAE1C,GACF,CAAA,CAGAA,GAAAA,CAACT,CAAAA,CAAA,CACC,SAAAS,GAAAA,CAACS,CAAAA,CAAA,CAAY,SAAA,CAAU,OACrB,QAAA,CAAAW,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,iCACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,OAAI,SAAA,CAAU,sBAAA,CACb,SAAAA,GAAAA,CAACkhB,EAAAA,CAAA,CACC,KAAA,CAAM,YACN,IAAA,CAAM25B,CAAAA,CACN,YAAA,CAAcC,CAAAA,CACd,YAAY,kBAAA,CACd,CAAA,CACF,CAAA,CACA96C,GAAAA,CAAC,OAAI,SAAA,CAAU,sBAAA,CACb,QAAA,CAAAA,GAAAA,CAACkhB,GAAA,CACC,KAAA,CAAM,SAAA,CACN,IAAA,CAAM65B,EACN,YAAA,CAAcC,CAAAA,CACd,WAAA,CAAY,gBAAA,CACd,EACF,CAAA,CACA55C,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,uBACb,QAAA,CAAA,CAAApB,GAAAA,CAACsqB,EAAAA,CAAA,CAAM,4BAAgB,CAAA,CACvBlpB,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,kBACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,OAAA,CAAA,CAAM,SAAA,CAAU,yCACf,QAAA,CAAA,CAAApB,GAAAA,CAAC,OAAA,CAAA,CACC,IAAA,CAAK,QACL,KAAA,CAAM,KAAA,CACN,OAAA,CAAS26B,CAAAA,GAAoB,MAC7B,QAAA,CAAW5zB,CAAAA,EAAMk0C,CAAAA,CAAmBl0C,CAAAA,CAAE,OAAO,KAAuB,CAAA,CACpE,SAAA,CAAU,sBAAA,CACZ,EACA/G,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,SAAA,CAAU,eAAG,CAAA,CAAA,CAC/B,CAAA,CACAoB,KAAC,OAAA,CAAA,CAAM,SAAA,CAAU,yCACf,QAAA,CAAA,CAAApB,GAAAA,CAAC,OAAA,CAAA,CACC,IAAA,CAAK,QACL,KAAA,CAAM,MAAA,CACN,OAAA,CAAS26B,CAAAA,GAAoB,OAC7B,QAAA,CAAW5zB,CAAAA,EAAMk0C,CAAAA,CAAmBl0C,CAAAA,CAAE,OAAO,KAAuB,CAAA,CACpE,SAAA,CAAU,sBAAA,CACZ,EACA/G,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,SAAA,CAAU,gBAAI,CAAA,CAAA,CAChC,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CACAoB,KAACwB,CAAAA,CAAA,CAAO,OAAA,CAASw5C,EAAAA,CAAc,UAAU,OAAA,CACvC,QAAA,CAAA,CAAAp8C,IAAC0Y,MAAAA,CAAA,CAAO,UAAU,SAAA,CAAU,CAAA,CAAE,QAAA,CAAA,CAEhC,CAAA,CAAA,CACF,EACF,CAAA,CACF,CAAA,CAGEgjC,CAAAA,CAOAt6C,IAAAA,CAAAyK,SAAA,CACE,QAAA,CAAA,CAAAzK,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,uCAAA,CAEb,QAAA,CAAA,CAAAA,IAAAA,CAAC7B,CAAAA,CAAA,CAAK,SAAA,CAAU,eAAA,CACd,QAAA,CAAA,CAAAS,GAAAA,CAACE,EAAA,CACC,QAAA,CAAAkB,IAAAA,CAACd,CAAAA,CAAA,CAAU,SAAA,CAAU,SAAA,CAAU,QAAA,CAAA,CAAA,6BAAA,CACD46C,CAAAA,CAAU,OAAO,GAAA,CAAA,CAC/C,CAAA,CACF,EACA95C,IAAAA,CAACX,CAAAA,CAAA,CAAY,SAAA,CAAU,sBAAA,CACrB,QAAA,CAAA,CAAAT,GAAAA,CAAC,OAAI,SAAA,CAAU,wCAAA,CACb,QAAA,CAAAoB,IAAAA,CAAC4I,GAAA,CACC,QAAA,CAAA,CAAAhK,GAAAA,CAACkK,EAAAA,CAAA,CACC,QAAA,CAAA9I,IAAAA,CAACiJ,EAAAA,CAAA,CACC,UAAArK,GAAAA,CAACsK,EAAAA,CAAA,CAAU,SAAA,CAAU,OAAO,CAAA,CAC5BtK,GAAAA,CAACsK,EAAAA,CAAA,CAAU,kBAAM,CAAA,CACjBtK,GAAAA,CAACsK,EAAAA,CAAA,CAAU,qBAAS,CAAA,CACpBtK,GAAAA,CAACsK,EAAAA,CAAA,CAAU,0BAAc,CAAA,CACzBtK,GAAAA,CAACsK,EAAAA,CAAA,CAAU,4BAAgB,CAAA,CAAA,CAC7B,CAAA,CACF,CAAA,CACAtK,GAAAA,CAACmK,GAAA,CACE,QAAA,CAAA+wC,CAAAA,CAAU,MAAA,GAAW,EACpBl7C,GAAAA,CAACqK,EAAAA,CAAA,CACC,QAAA,CAAArK,IAACuK,EAAAA,CAAA,CAAU,OAAA,CAAS,CAAA,CAAG,UAAU,mCAAA,CAAoC,QAAA,CAAA,uBAAA,CAErE,CAAA,CACF,CAAA,CAEAyyC,EAAmB,GAAA,CAAKI,CAAAA,EACtBh8C,IAAAA,CAACiJ,EAAAA,CAAA,CAEC,SAAA,CAAWixC,CAAAA,GAAkB8B,EAAI,EAAA,CAAK,UAAA,CAAa,GAEnD,QAAA,CAAA,CAAAp9C,GAAAA,CAACuK,EAAAA,CAAA,CACC,SAAAvK,GAAAA,CAAC,OAAA,CAAA,CACC,IAAA,CAAK,OAAA,CACL,KAAK,cAAA,CACL,OAAA,CAASs7C,CAAAA,GAAkB8B,CAAAA,CAAI,GAC/B,QAAA,CAAU,IAAM7B,CAAAA,CAAiB6B,CAAAA,CAAI,EAAE,CAAA,CACvC,SAAA,CAAU,qCAAA,CACZ,CAAA,CACF,EACAh8C,IAAAA,CAACmJ,EAAAA,CAAA,CAAU,SAAA,CAAU,cAAc,QAAA,CAAA,CAAA,GAAA,CAC/B6yC,CAAAA,CAAI,MAAA,CAAO,cAAA,CAAe,QAAS,CAAE,qBAAA,CAAuB,CAAA,CAAG,qBAAA,CAAuB,CAAE,CAAC,CAAA,CAAA,CAC7F,CAAA,CACAp9C,GAAAA,CAACuK,GAAA,CAAW,QAAA,CAAAuX,MAAAA,CAAO,IAAI,KAAKs7B,CAAAA,CAAI,QAAQ,CAAA,CAAG,cAAc,EAAE,CAAA,CAC3Dp9C,GAAAA,CAACuK,EAAAA,CAAA,CAAU,UAAU,mBAAA,CAAqB,QAAA,CAAA6yC,CAAAA,CAAI,aAAA,CAAc,EAC5Dp9C,GAAAA,CAACuK,EAAAA,CAAA,CAAU,SAAA,CAAU,oBAAqB,QAAA,CAAA6yC,CAAAA,CAAI,eAAA,CAAgB,CAAA,CAAA,CAAA,CAjBzDA,EAAI,EAkBX,CACD,EAEL,CAAA,CAAA,CACF,CAAA,CACF,EACClC,CAAAA,CAAU,MAAA,CAAS,CAAA,EAClB95C,IAAAA,CAAC,OAAI,SAAA,CAAU,6CAAA,CACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,OAAI,SAAA,CAAU,yBAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,QAAK,SAAA,CAAU,+BAAA,CAAgC,QAAA,CAAA,gBAAA,CAAc,CAAA,CAC9DoB,KAAC,QAAA,CAAA,CACC,KAAA,CAAO06C,CAAAA,CACP,QAAA,CAAW/0C,GAAM,CACfg1C,CAAAA,CAAoB,MAAA,CAAOh1C,CAAAA,CAAE,OAAO,KAAK,CAAC,CAAA,CAC1C80C,CAAAA,CAAa,CAAC,EAChB,CAAA,CACA,SAAA,CAAU,oEAAA,CAEV,UAAA77C,GAAAA,CAAC,QAAA,CAAA,CAAO,KAAA,CAAO,EAAA,CAAI,cAAE,CAAA,CACrBA,GAAAA,CAAC,QAAA,CAAA,CAAO,KAAA,CAAO,GAAI,QAAA,CAAA,IAAA,CAAE,CAAA,CACrBA,GAAAA,CAAC,QAAA,CAAA,CAAO,MAAO,EAAA,CAAI,QAAA,CAAA,IAAA,CAAE,CAAA,CAAA,CACvB,CAAA,CAAA,CACF,EACAoB,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yBAAA,CACb,UAAAA,IAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,+BAAA,CAAgC,kBACxCw6C,CAAAA,CAAU,MAAA,CAAKkB,CAAAA,CAAAA,CACvB,CAAA,CACA17C,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,aACb,QAAA,CAAA,CAAApB,GAAAA,CAAC4C,EAAA,CACC,OAAA,CAAQ,SAAA,CACR,IAAA,CAAK,KACL,OAAA,CAAS,IAAMi5C,CAAAA,CAAa,IAAA,CAAK,IAAI,CAAA,CAAGD,CAAAA,CAAY,CAAC,CAAC,EACtD,QAAA,CAAUA,CAAAA,GAAc,CAAA,CAExB,QAAA,CAAA57C,IAAC+f,WAAAA,CAAA,CAAY,SAAA,CAAU,SAAA,CAAU,EACnC,CAAA,CACA/f,GAAAA,CAAC4C,CAAAA,CAAA,CACC,QAAQ,SAAA,CACR,IAAA,CAAK,IAAA,CACL,OAAA,CAAS,IAAMi5C,CAAAA,CAAa,IAAA,CAAK,GAAA,CAAIiB,CAAAA,CAAiBlB,EAAY,CAAC,CAAC,CAAA,CACpE,QAAA,CAAUA,IAAckB,CAAAA,CAExB,QAAA,CAAA98C,GAAAA,CAACsM,YAAAA,CAAA,CAAa,SAAA,CAAU,SAAA,CAAU,CAAA,CACpC,CAAA,CAAA,CACF,GACF,CAAA,CAAA,CACF,CAAA,CAAA,CAEJ,CAAA,CAAA,CACF,CAAA,CAGAlL,KAAC7B,CAAAA,CAAA,CAAK,SAAA,CAAU,eAAA,CACd,UAAAS,GAAAA,CAACE,CAAAA,CAAA,CACC,QAAA,CAAAkB,KAACd,CAAAA,CAAA,CAAU,SAAA,CAAU,SAAA,CAAU,qCACJ86C,CAAAA,CAAQ,MAAA,CAAO,KAC1C,CAAA,CACF,CAAA,CACAh6C,KAACX,CAAAA,CAAA,CAAY,SAAA,CAAU,sBAAA,CACrB,UAAAT,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wCAAA,CACb,SAAAoB,IAAAA,CAAC4I,EAAAA,CAAA,CACC,QAAA,CAAA,CAAAhK,IAACkK,EAAAA,CAAA,CACC,QAAA,CAAA9I,IAAAA,CAACiJ,GAAA,CACC,QAAA,CAAA,CAAArK,GAAAA,CAACsK,EAAAA,CAAA,CAAU,SAAA,CAAU,MAAA,CAAO,CAAA,CAC5BtK,GAAAA,CAACsK,GAAA,CAAU,QAAA,CAAA,QAAA,CAAM,CAAA,CACjBtK,GAAAA,CAACsK,GAAA,CAAU,QAAA,CAAA,iBAAA,CAAe,CAAA,CAC1BtK,GAAAA,CAACsK,GAAA,CAAU,QAAA,CAAA,kBAAA,CAAgB,CAAA,CAAA,CAC7B,CAAA,CACF,EACAtK,GAAAA,CAACmK,EAAAA,CAAA,CACE,QAAA,CAAAixC,EAAQ,MAAA,GAAW,CAAA,CAClBp7C,GAAAA,CAACqK,EAAAA,CAAA,CACC,QAAA,CAAArK,GAAAA,CAACuK,EAAAA,CAAA,CAAU,QAAS,CAAA,CAAG,SAAA,CAAU,mCAAA,CAAoC,QAAA,CAAA,sBAAA,CAErE,EACF,CAAA,CAEA4yC,EAAAA,CAAiB,GAAA,CAAKE,CAAAA,EACpBj8C,KAACiJ,EAAAA,CAAA,CAEC,SAAA,CAAWmxC,CAAAA,GAAgB6B,EAAW,EAAA,CAAK,UAAA,CAAa,GAExD,QAAA,CAAA,CAAAr9C,GAAAA,CAACuK,GAAA,CACC,QAAA,CAAAvK,GAAAA,CAAC,OAAA,CAAA,CACC,KAAK,OAAA,CACL,IAAA,CAAK,YAAA,CACL,OAAA,CAASw7C,IAAgB6B,CAAAA,CAAW,EAAA,CACpC,QAAA,CAAU,IAAM5B,EAAe4B,CAAAA,CAAW,EAAE,CAAA,CAC5C,SAAA,CAAU,sCACZ,CAAA,CACF,CAAA,CACAj8C,IAAAA,CAACmJ,EAAAA,CAAA,CAAU,SAAA,CAAU,aAAA,CAAc,QAAA,CAAA,CAAA,GAAA,CAC/B8yC,CAAAA,CAAW,OAAO,cAAA,CAAe,OAAA,CAAS,CAAE,qBAAA,CAAuB,EAAG,qBAAA,CAAuB,CAAE,CAAC,CAAA,CAAA,CACpG,EACAr9C,GAAAA,CAACuK,EAAAA,CAAA,CAAW,QAAA,CAAAuX,OAAO,IAAI,IAAA,CAAKu7B,CAAAA,CAAW,cAAc,EAAG,cAAc,CAAA,CAAE,CAAA,CACxEr9C,GAAAA,CAACuK,GAAA,CAAU,SAAA,CAAU,mBAAA,CAAqB,QAAA,CAAA8yC,EAAW,eAAA,CAAgB,CAAA,CAAA,CAAA,CAhBhEA,CAAAA,CAAW,EAiBlB,CACD,CAAA,CAEL,CAAA,CAAA,CACF,CAAA,CACF,CAAA,CACCjC,EAAQ,MAAA,CAAS,CAAA,EAChBh6C,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,6CAAA,CACb,QAAA,CAAA,CAAAA,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,0BACb,QAAA,CAAA,CAAApB,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,gCAAgC,QAAA,CAAA,gBAAA,CAAc,CAAA,CAC9DoB,IAAAA,CAAC,QAAA,CAAA,CACC,MAAO86C,CAAAA,CACP,QAAA,CAAWn1C,CAAAA,EAAM,CACfo1C,EAAkB,MAAA,CAAOp1C,CAAAA,CAAE,MAAA,CAAO,KAAK,CAAC,CAAA,CACxCk1C,CAAAA,CAAW,CAAC,EACd,EACA,SAAA,CAAU,oEAAA,CAEV,QAAA,CAAA,CAAAj8C,GAAAA,CAAC,UAAO,KAAA,CAAO,EAAA,CAAI,QAAA,CAAA,IAAA,CAAE,CAAA,CACrBA,IAAC,QAAA,CAAA,CAAO,KAAA,CAAO,EAAA,CAAI,QAAA,CAAA,IAAA,CAAE,EACrBA,GAAAA,CAAC,QAAA,CAAA,CAAO,KAAA,CAAO,EAAA,CAAI,cAAE,CAAA,CAAA,CACvB,CAAA,CAAA,CACF,CAAA,CACAoB,IAAAA,CAAC,OAAI,SAAA,CAAU,yBAAA,CACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,QAAK,SAAA,CAAU,+BAAA,CAAgC,QAAA,CAAA,CAAA,OAAA,CACxC46C,CAAAA,CAAQ,OAAKiB,CAAAA,CAAAA,CACrB,CAAA,CACA77C,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,YAAA,CACb,QAAA,CAAA,CAAApB,GAAAA,CAAC4C,CAAAA,CAAA,CACC,OAAA,CAAQ,SAAA,CACR,IAAA,CAAK,IAAA,CACL,QAAS,IAAMq5C,CAAAA,CAAW,KAAK,GAAA,CAAI,CAAA,CAAGD,EAAU,CAAC,CAAC,CAAA,CAClD,QAAA,CAAUA,IAAY,CAAA,CAEtB,QAAA,CAAAh8C,GAAAA,CAAC+f,WAAAA,CAAA,CAAY,SAAA,CAAU,SAAA,CAAU,CAAA,CACnC,CAAA,CACA/f,IAAC4C,CAAAA,CAAA,CACC,OAAA,CAAQ,SAAA,CACR,KAAK,IAAA,CACL,OAAA,CAAS,IAAMq5C,CAAAA,CAAW,KAAK,GAAA,CAAIgB,CAAAA,CAAejB,CAAAA,CAAU,CAAC,CAAC,CAAA,CAC9D,QAAA,CAAUA,CAAAA,GAAYiB,CAAAA,CAEtB,SAAAj9C,GAAAA,CAACsM,YAAAA,CAAA,CAAa,SAAA,CAAU,SAAA,CAAU,EACpC,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAAA,CAEJ,GACF,CAAA,CAAA,CACF,CAAA,CAGAtM,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,qBAAA,CACb,QAAA,CAAAA,GAAAA,CAAC4C,CAAAA,CAAA,CACC,IAAA,CAAK,IAAA,CACL,OAAA,CAAS85C,EAAAA,CACT,SAAU,CAACG,CAAAA,CACX,SAAA,CAAU,eAAA,CACX,0BAED,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAtNA78C,GAAAA,CAACT,EAAA,CACC,QAAA,CAAAS,GAAAA,CAACS,CAAAA,CAAA,CAAY,SAAA,CAAU,yCAAA,CAA0C,kFAEjE,CAAA,CACF,CAAA,CAAA,CAoNJ,EACF,CAEJ","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n\nexport function formatCurrency(value: number, currency = \"USD\"): string {\n return new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency,\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n }).format(value)\n}\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst cardVariants = cva(\n \"rounded-lg border bg-card text-card-foreground transition-all duration-200\",\n {\n variants: {\n variant: {\n default: \"shadow-sm\",\n elevated: \"shadow-md hover:shadow-lg\",\n outlined: \"border-2 shadow-none\",\n ghost: \"border-transparent shadow-none bg-transparent\",\n subtle: \"border-border/75 shadow-none\"\n },\n size: {\n sm: \"p-3\",\n md: \"p-4\", \n lg: \"p-6\",\n none: \"p-0\"\n },\n fullHeight: {\n true: \"h-full flex flex-col\",\n false: \"\"\n },\n interactive: {\n true: \"cursor-pointer hover:shadow-md hover:scale-[1.02]\",\n false: \"\"\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"none\",\n fullHeight: false,\n interactive: false\n }\n }\n)\n\nexport interface CardProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof cardVariants> {}\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n ({ className, variant, size, fullHeight, interactive, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(cardVariants({ variant, size, fullHeight, interactive }), className)}\n {...props}\n />\n )\n)\nCard.displayName = \"Card\"\n\nconst cardHeaderVariants = cva(\n \"flex flex-col space-y-1.5\",\n {\n variants: {\n size: {\n sm: \"px-3 pt-3 pb-2\",\n md: \"px-4 pt-4 pb-3\",\n lg: \"px-6 pt-6 pb-4\"\n },\n align: {\n start: \"items-start\",\n center: \"items-center\", \n end: \"items-end\"\n },\n direction: {\n row: \"flex-row justify-between items-center space-y-0 space-x-4\",\n column: \"flex-col space-y-1.5\"\n }\n },\n defaultVariants: {\n size: \"lg\",\n align: \"start\",\n direction: \"column\"\n }\n }\n)\n\nexport interface CardHeaderProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof cardHeaderVariants> {}\n\nconst CardHeader = React.forwardRef<HTMLDivElement, CardHeaderProps>(\n ({ className, size, align, direction, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(cardHeaderVariants({ size, align, direction }), className)}\n {...props}\n />\n )\n)\nCardHeader.displayName = \"CardHeader\"\n\nconst cardTitleVariants = cva(\n \"font-semibold leading-none tracking-tight\",\n {\n variants: {\n size: {\n sm: \"text-base\",\n md: \"text-lg\", \n lg: \"text-xl\"\n }\n },\n defaultVariants: {\n size: \"md\"\n }\n }\n)\n\nexport interface CardTitleProps\n extends React.HTMLAttributes<HTMLHeadingElement>,\n VariantProps<typeof cardTitleVariants> {}\n\nconst CardTitle = React.forwardRef<HTMLParagraphElement, CardTitleProps>(\n ({ className, size, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(cardTitleVariants({ size }), className)}\n {...props}\n />\n )\n)\nCardTitle.displayName = \"CardTitle\"\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nCardDescription.displayName = \"CardDescription\"\n\nconst cardContentVariants = cva(\n \"\",\n {\n variants: {\n size: {\n sm: \"px-3 pb-2\",\n md: \"px-4 pb-3\",\n lg: \"px-6 pb-4\"\n },\n fullHeight: {\n true: \"flex-1\",\n false: \"\"\n }\n },\n defaultVariants: {\n size: \"lg\",\n fullHeight: false\n }\n }\n)\n\nexport interface CardContentProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof cardContentVariants> {}\n\nconst CardContent = React.forwardRef<HTMLDivElement, CardContentProps>(\n ({ className, size, fullHeight, ...props }, ref) => (\n <div \n ref={ref} \n className={cn(cardContentVariants({ size, fullHeight }), className)} \n {...props} \n />\n )\n)\nCardContent.displayName = \"CardContent\"\n\nconst cardFooterVariants = cva(\n \"flex items-center pt-0\",\n {\n variants: {\n size: {\n sm: \"p-3 pt-0\",\n md: \"p-4 pt-0\",\n lg: \"p-6 pt-0\"\n },\n justify: {\n start: \"justify-start\",\n center: \"justify-center\",\n end: \"justify-end\",\n between: \"justify-between\"\n }\n },\n defaultVariants: {\n size: \"lg\",\n justify: \"start\"\n }\n }\n)\n\nexport interface CardFooterProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof cardFooterVariants> {}\n\nconst CardFooter = React.forwardRef<HTMLDivElement, CardFooterProps>(\n ({ className, size, justify, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(cardFooterVariants({ size, justify }), className)}\n {...props}\n />\n )\n)\nCardFooter.displayName = \"CardFooter\"\n\nexport { \n Card, \n CardHeader, \n CardFooter, \n CardTitle, \n CardDescription, \n CardContent,\n cardVariants\n}\n","import * as React from \"react\"\nimport { Card, CardContent, CardHeader, CardTitle, CardDescription, type CardProps } from \"@/components/ui/card\"\nimport { cn } from \"@/lib/utils\"\n\nexport interface FormCardProps extends Omit<CardProps, 'children'> {\n title: string\n titleBadge?: React.ReactNode\n description?: string\n children: React.ReactNode\n headerActions?: React.ReactNode\n}\n\nexport const FormCard = React.forwardRef<HTMLDivElement, FormCardProps>(\n ({ title, titleBadge, description, children, headerActions, className, variant = \"default\", ...props }, ref) => (\n <Card \n ref={ref}\n variant={variant}\n fullHeight\n className={cn(\"\", className)}\n {...props}\n >\n <CardHeader \n direction={headerActions ? \"row\" : \"column\"}\n size=\"sm\"\n >\n <div className=\"space-y-1\">\n <div className=\"flex items-center gap-2\">\n <CardTitle size=\"md\">{title}</CardTitle>\n {titleBadge}\n </div>\n </div>\n {headerActions && (\n <div className=\"flex items-center gap-2\">\n {headerActions}\n </div>\n )}\n </CardHeader>\n <CardContent size=\"sm\" fullHeight>\n {children}\n </CardContent>\n </Card>\n )\n)\nFormCard.displayName = \"FormCard\"","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { cn } from \"@/lib/utils\"\n\nconst badgeVariants = cva(\n \"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground hover:bg-primary/80\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n destructive:\n \"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\n outline: \"text-foreground\",\n success:\n \"border-transparent bg-success text-success-foreground hover:bg-success/80\",\n warning:\n \"border-transparent bg-warning text-warning-foreground hover:bg-warning/80\",\n blocked:\n \"border-transparent bg-foreground text-background hover:bg-foreground/90\",\n inbound:\n \"border-transparent bg-blue-500 text-white hover:bg-blue-600\",\n outbound:\n \"border-transparent bg-orange-500 text-white hover:bg-orange-600\",\n // Business type specific variants\n business:\n \"border-blue-200 bg-blue-50 text-blue-700 hover:bg-blue-100 dark:border-blue-800 dark:bg-blue-950 dark:text-blue-300\",\n individual:\n \"border-green-200 bg-green-50 text-green-700 hover:bg-green-100 dark:border-green-800 dark:bg-green-950 dark:text-green-300\",\n government:\n \"border-purple-200 bg-purple-50 text-purple-700 hover:bg-purple-100 dark:border-purple-800 dark:bg-purple-950 dark:text-purple-300\",\n nonprofit:\n \"border-orange-200 bg-orange-50 text-orange-700 hover:bg-orange-100 dark:border-orange-800 dark:bg-orange-950 dark:text-orange-300\",\n // Business entity type variants\n corporation:\n \"border-slate-200 bg-slate-50 text-slate-700 hover:bg-slate-100 dark:border-slate-700 dark:bg-slate-900 dark:text-slate-300\",\n llc:\n \"border-teal-200 bg-teal-50 text-teal-700 hover:bg-teal-100 dark:border-teal-800 dark:bg-teal-950 dark:text-teal-300\",\n partnership:\n \"border-indigo-200 bg-indigo-50 text-indigo-700 hover:bg-indigo-100 dark:border-indigo-800 dark:bg-indigo-950 dark:text-indigo-300\",\n sole_proprietorship:\n \"border-amber-200 bg-amber-50 text-amber-700 hover:bg-amber-100 dark:border-amber-800 dark:bg-amber-950 dark:text-amber-300\",\n // Status variants\n active:\n \"border-green-200 bg-green-50 text-green-700 hover:bg-green-100 dark:border-green-800 dark:bg-green-950 dark:text-green-300\",\n inactive:\n \"border-red-200 bg-red-50 text-red-700 hover:bg-red-100 dark:border-red-800 dark:bg-red-950 dark:text-red-300\",\n pending:\n \"border-yellow-200 bg-yellow-50 text-yellow-700 hover:bg-yellow-100 dark:border-yellow-800 dark:bg-yellow-950 dark:text-yellow-300\",\n suspended:\n \"border-gray-200 bg-gray-50 text-gray-700 hover:bg-gray-100 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-300\",\n // CIP Status outlined variants\n \"cip-active\":\n \"border-2 border-green-600 bg-transparent text-green-700 hover:bg-green-50 dark:border-green-500 dark:text-green-400 dark:hover:bg-green-950/30\",\n \"cip-inactive\":\n \"border-2 border-red-600 bg-transparent text-red-700 hover:bg-red-50 dark:border-red-500 dark:text-red-400 dark:hover:bg-red-950/30\",\n \"cip-pending\":\n \"border-2 border-yellow-600 bg-transparent text-yellow-700 hover:bg-yellow-50 dark:border-yellow-500 dark:text-yellow-400 dark:hover:bg-yellow-950/30\",\n \"cip-secondary\":\n \"border-2 border-gray-500 bg-transparent text-gray-700 hover:bg-gray-50 dark:border-gray-400 dark:text-gray-300 dark:hover:bg-gray-950/30\",\n // Alert type subtle variants\n \"alert-ofac\":\n \"border-red-200 bg-red-50 text-red-700 hover:bg-red-100 dark:border-red-800 dark:bg-red-950 dark:text-red-300 font-medium\",\n \"alert-dual\":\n \"border-emerald-200 bg-emerald-50 text-emerald-700 hover:bg-emerald-100 dark:border-emerald-800 dark:bg-emerald-950 dark:text-emerald-300 font-medium\",\n \"alert-monitoring\":\n \"border-amber-200 bg-amber-50 text-amber-700 hover:bg-amber-100 dark:border-amber-800 dark:bg-amber-950 dark:text-amber-300 font-medium\",\n \"alert-error\":\n \"border-rose-200 bg-rose-50 text-rose-700 hover:bg-rose-100 dark:border-rose-800 dark:bg-rose-950 dark:text-rose-300 font-medium\",\n // OFAC status subtle variants (outlined / light fill)\n ofac_no_match:\n \"border-blue-200 bg-blue-50 text-blue-700 hover:bg-blue-100 dark:border-blue-800 dark:bg-blue-950 dark:text-blue-300\",\n ofac_review:\n \"border-amber-200 bg-amber-50 text-amber-800 hover:bg-amber-100 dark:border-amber-800 dark:bg-amber-950 dark:text-amber-200\",\n ofac_cleared:\n \"border-green-200 bg-green-50 text-green-700 hover:bg-green-100 dark:border-green-800 dark:bg-green-950 dark:text-green-300\",\n ofac_confirmed:\n \"border-red-200 bg-red-50 text-red-700 hover:bg-red-100 dark:border-red-800 dark:bg-red-950 dark:text-red-300\",\n ofac_blocked:\n \"border-slate-300 bg-slate-50 text-slate-900 hover:bg-slate-100 dark:border-slate-600 dark:bg-slate-900 dark:text-slate-100\",\n // Account type variants\n checking:\n \"border-blue-200 bg-blue-50 text-blue-700 hover:bg-blue-100 dark:border-blue-800 dark:bg-blue-950 dark:text-blue-300\",\n savings:\n \"border-emerald-200 bg-emerald-50 text-emerald-700 hover:bg-emerald-100 dark:border-emerald-800 dark:bg-emerald-950 dark:text-emerald-300\",\n \"zero-balance\":\n \"border-slate-200 bg-slate-50 text-slate-700 hover:bg-slate-100 dark:border-slate-700 dark:bg-slate-900 dark:text-slate-300\",\n funding:\n \"border-violet-200 bg-violet-50 text-violet-700 hover:bg-violet-100 dark:border-violet-800 dark:bg-violet-950 dark:text-violet-300\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return (\n <div className={cn(badgeVariants({ variant }), className)} {...props} />\n )\n}\n\nexport { Badge, badgeVariants }","import { TimelineEvent } from \"@/lib/mock-data/alert-data\";\nimport { CheckCircle, Circle, UserPlus, Edit, XCircle, StickyNote, FileUp, RefreshCw, Send, Eye, RotateCcw, PlayCircle } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\n\ninterface AlertTimelineProps {\n events: TimelineEvent[];\n}\n\nexport const AlertTimeline = ({ events }: AlertTimelineProps) => {\n const getIcon = (action: string) => {\n if (action.includes(\"Note added\")) return <StickyNote className=\"h-4 w-4\" />;\n if (action.includes(\"Document added\")) return <FileUp className=\"h-4 w-4\" />;\n if (action.includes(\"Alert Approved\")) return <CheckCircle className=\"h-4 w-4\" />;\n if (action.includes(\"Alert Declined\")) return <XCircle className=\"h-4 w-4\" />;\n if (action.includes(\"RFI Status change\")) return <RefreshCw className=\"h-4 w-4\" />;\n if (action.includes(\"Manual Review\")) return <Eye className=\"h-4 w-4\" />;\n if (action.includes(\"Returned\")) return <RotateCcw className=\"h-4 w-4\" />;\n if (action.includes(\"Cancelled\")) return <XCircle className=\"h-4 w-4\" />;\n if (action.includes(\"Sent\")) return <Send className=\"h-4 w-4\" />;\n if (action.includes(\"Submitted\")) return <FileUp className=\"h-4 w-4\" />;\n if (action.includes(\"Initiated\")) return <PlayCircle className=\"h-4 w-4\" />;\n if (action.includes(\"Created\")) return <Circle className=\"h-4 w-4\" />;\n if (action.includes(\"Assigned\")) return <UserPlus className=\"h-4 w-4\" />;\n if (action.includes(\"Updated\") || action.includes(\"Modified\")) return <Edit className=\"h-4 w-4\" />;\n if (action.includes(\"Closed\") || action.includes(\"Resolved\")) return <CheckCircle className=\"h-4 w-4\" />;\n if (action.includes(\"Rejected\")) return <XCircle className=\"h-4 w-4\" />;\n return <Circle className=\"h-4 w-4\" />;\n };\n\n const getStatusColor = (status?: string, action?: string) => {\n // Color by action type for specific events\n if (action?.includes(\"Note added\")) return \"text-blue-500\";\n if (action?.includes(\"Document added\")) return \"text-purple-500\";\n if (action?.includes(\"Alert Approved\")) return \"text-success\";\n if (action?.includes(\"Alert Declined\")) return \"text-destructive\";\n if (action?.includes(\"RFI Status change\")) return \"text-warning\";\n if (action?.includes(\"Manual Review\")) return \"text-warning\";\n if (action?.includes(\"Returned\")) return \"text-warning\";\n if (action?.includes(\"Cancelled\")) return \"text-destructive\";\n if (action?.includes(\"Sent\")) return \"text-success\";\n if (action?.includes(\"Submitted\")) return \"text-blue-500\";\n if (action?.includes(\"Initiated\")) return \"text-blue-500\";\n \n // Default color by status\n switch (status) {\n case \"Unassigned\":\n return \"text-destructive\";\n case \"Closed\":\n return \"text-success\";\n case \"In Progress\":\n return \"text-warning\";\n default:\n return \"text-muted-foreground\";\n }\n };\n\n if (events.length === 0) {\n return <div className=\"text-center py-8 text-muted-foreground\">No timeline events yet</div>;\n }\n\n return (\n <div className=\"space-y-3\">\n {events.map((event, index) => (\n <div key={event.id} className=\"relative pl-6 pb-3\">\n {/* Timeline line */}\n {index !== events.length - 1 && <div className=\"absolute left-[7px] top-5 bottom-0 w-[2px] bg-border\" />}\n\n {/* Icon */}\n <div className={cn(\"absolute left-0 top-0 flex-none\", getStatusColor(event.status, event.action))}>\n <div className=\"h-4 w-4\">{getIcon(event.action)}</div>\n </div>\n\n {/* Content */}\n <div className=\"space-y-0.5\">\n <p className=\"text-xs font-medium text-foreground\">{event.action}</p>\n {event.details && <p className=\"text-xs text-muted-foreground\">{event.details}</p>}\n <p className=\"text-xs text-muted-foreground/70 pt-0.5\">{event.timestamp}</p>\n </div>\n </div>\n ))}\n </div>\n );\n};\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 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 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"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","import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nconst textareaVariants = cva(\n \"flex min-h-[80px] w-full rounded-md bg-form-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground transition-form resize-y\",\n {\n variants: {\n variant: {\n default: \"border border-form-border focus-visible:border-form-border-focus focus-visible:outline-none focus-visible:shadow-form-focus\",\n error: \"border border-form-border-error focus-visible:border-form-border-error focus-visible:outline-none focus-visible:shadow-form-error\",\n success: \"border border-form-border-success focus-visible:border-form-border-success focus-visible:outline-none\",\n disabled: \"border border-form-border bg-muted cursor-not-allowed opacity-50 resize-none\",\n readonly: \"border border-form-border bg-muted/50 cursor-default resize-none\"\n }\n },\n defaultVariants: {\n variant: \"default\"\n }\n }\n)\n\nexport interface TextareaProps\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement>,\n VariantProps<typeof textareaVariants> {\n label?: string\n hint?: string\n error?: string\n success?: string\n}\n\nconst EnhancedTextarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, variant, label, hint, error, success, ...props }, ref) => {\n const textareaVariant = error ? \"error\" : success ? \"success\" : props.disabled ? \"disabled\" : props.readOnly ? \"readonly\" : variant\n\n return (\n <div className=\"space-y-2\">\n {label && (\n <label className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\">\n {label}\n {props.required && <span className=\"text-destructive ml-1\">*</span>}\n </label>\n )}\n <textarea\n className={cn(textareaVariants({ variant: textareaVariant, className }))}\n ref={ref}\n {...props}\n />\n {hint && !error && !success && (\n <p className=\"text-xs text-muted-foreground\">{hint}</p>\n )}\n {error && (\n <p className=\"text-xs text-destructive\">{error}</p>\n )}\n {success && (\n <p className=\"text-xs text-success\">{success}</p>\n )}\n </div>\n )\n }\n)\nEnhancedTextarea.displayName = \"EnhancedTextarea\"\n\nexport { EnhancedTextarea, textareaVariants }","import * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\"\nimport { cn } from \"@/lib/utils\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nconst selectVariants = cva(\n \"flex h-10 w-full items-center justify-between rounded-md bg-form-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none transition-form\",\n {\n variants: {\n variant: {\n default: \"border border-form-border focus:border-form-border-focus focus:shadow-form-focus\",\n error: \"border border-form-border-error focus:border-form-border-error focus:shadow-form-error\",\n success: \"border border-form-border-success focus:border-form-border-success\",\n disabled: \"border border-form-border bg-muted cursor-not-allowed opacity-50\",\n }\n },\n defaultVariants: {\n variant: \"default\"\n }\n }\n)\n\ninterface EnhancedSelectProps extends VariantProps<typeof selectVariants> {\n label?: string\n hint?: string\n error?: string\n success?: string\n placeholder?: string\n options: { value: string; label: string; disabled?: boolean }[]\n value?: string\n onValueChange?: (value: string) => void\n disabled?: boolean\n className?: string\n}\n\nconst EnhancedSelect = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n EnhancedSelectProps\n>(({ variant, label, hint, error, success, placeholder, options, disabled, className, ...props }, ref) => {\n const selectVariant = error ? \"error\" : success ? \"success\" : disabled ? \"disabled\" : variant\n\n return (\n <div className={cn(\"space-y-2\", className)}>\n {label && (\n <label className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\">\n {label}\n </label>\n )}\n <SelectPrimitive.Root {...props} disabled={disabled}>\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(selectVariants({ variant: selectVariant }))}\n >\n <SelectPrimitive.Value placeholder={placeholder} />\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"h-4 w-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content className=\"relative z-[9999] 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 <SelectPrimitive.ScrollUpButton className=\"flex cursor-default items-center justify-center py-1\">\n <ChevronUp className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollUpButton>\n <SelectPrimitive.Viewport className=\"p-1\">\n {options.map((option) => (\n <SelectPrimitive.Item\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n className=\"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 >\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 <SelectPrimitive.ItemText>{option.label}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n ))}\n </SelectPrimitive.Viewport>\n <SelectPrimitive.ScrollDownButton className=\"flex cursor-default items-center justify-center py-1\">\n <ChevronDown className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollDownButton>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n </SelectPrimitive.Root>\n {hint && !error && !success && (\n <p className=\"text-xs text-muted-foreground\">{hint}</p>\n )}\n {error && (\n <p className=\"text-xs text-destructive\">{error}</p>\n )}\n {success && (\n <p className=\"text-xs text-success\">{success}</p>\n )}\n </div>\n )\n})\nEnhancedSelect.displayName = \"EnhancedSelect\"\n\nexport { EnhancedSelect }\n","import * as React from \"react\"\n\nimport type {\n ToastActionElement,\n ToastProps,\n} from \"@/components/ui/toast\"\n\nconst TOAST_LIMIT = 1\nconst TOAST_REMOVE_DELAY = 1000000\n\ntype ToasterToast = ToastProps & {\n id: string\n title?: React.ReactNode\n description?: React.ReactNode\n action?: ToastActionElement\n}\n\nconst actionTypes = {\n ADD_TOAST: \"ADD_TOAST\",\n UPDATE_TOAST: \"UPDATE_TOAST\",\n DISMISS_TOAST: \"DISMISS_TOAST\",\n REMOVE_TOAST: \"REMOVE_TOAST\",\n} as const\n\nlet count = 0\n\nfunction genId() {\n count = (count + 1) % Number.MAX_SAFE_INTEGER\n return count.toString()\n}\n\ntype ActionType = typeof actionTypes\n\ntype Action =\n | {\n type: ActionType[\"ADD_TOAST\"]\n toast: ToasterToast\n }\n | {\n type: ActionType[\"UPDATE_TOAST\"]\n toast: Partial<ToasterToast>\n }\n | {\n type: ActionType[\"DISMISS_TOAST\"]\n toastId?: ToasterToast[\"id\"]\n }\n | {\n type: ActionType[\"REMOVE_TOAST\"]\n toastId?: ToasterToast[\"id\"]\n }\n\ninterface State {\n toasts: ToasterToast[]\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>()\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId)\n dispatch({\n type: \"REMOVE_TOAST\",\n toastId: toastId,\n })\n }, TOAST_REMOVE_DELAY)\n\n toastTimeouts.set(toastId, timeout)\n}\n\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case \"ADD_TOAST\":\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n }\n\n case \"UPDATE_TOAST\":\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t\n ),\n }\n\n case \"DISMISS_TOAST\": {\n const { toastId } = action\n\n // ! Side effects ! - This could be extracted into a dismissToast() action,\n // but I'll keep it here for simplicity\n if (toastId) {\n addToRemoveQueue(toastId)\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id)\n })\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t\n ),\n }\n }\n case \"REMOVE_TOAST\":\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n }\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n }\n }\n}\n\nconst listeners: Array<(state: State) => void> = []\n\nlet memoryState: State = { toasts: [] }\n\nfunction dispatch(action: Action) {\n memoryState = reducer(memoryState, action)\n listeners.forEach((listener) => {\n listener(memoryState)\n })\n}\n\ntype Toast = Omit<ToasterToast, \"id\">\n\nfunction toast({ ...props }: Toast) {\n const id = genId()\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: \"UPDATE_TOAST\",\n toast: { ...props, id },\n })\n const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id })\n\n dispatch({\n type: \"ADD_TOAST\",\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open) => {\n if (!open) dismiss()\n },\n },\n })\n\n return {\n id: id,\n dismiss,\n update,\n }\n}\n\nfunction useToast() {\n const [state, setState] = React.useState<State>(memoryState)\n\n React.useEffect(() => {\n listeners.push(setState)\n return () => {\n const index = listeners.indexOf(setState)\n if (index > -1) {\n listeners.splice(index, 1)\n }\n }\n }, [state])\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) => dispatch({ type: \"DISMISS_TOAST\", toastId }),\n }\n}\n\nexport { useToast, toast }\n","import { useState } from \"react\"\nimport { createPortal } from \"react-dom\"\nimport { AlertNote } from \"@/lib/mock-data/alert-data\"\nimport { Button } from \"@/components/ui/button\"\nimport { EnhancedTextarea } from \"@/components/ui/enhanced-textarea\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { toast } from \"@/hooks/use-toast\"\nimport { MessageSquare, Plus, X, Trash2 } from \"lucide-react\"\n\nconst NOTE_TYPE_OPTIONS = [\n { value: \"RFI Note\", label: \"RFI Note\" },\n { value: \"Internal Note\", label: \"Internal Note\" }\n]\n\ninterface AlertNotesProps {\n alertId: string\n notes: AlertNote[]\n}\n\nexport const AlertNotes = ({ alertId, notes }: AlertNotesProps) => {\n const [showNoteDialog, setShowNoteDialog] = useState(false)\n const [newNote, setNewNote] = useState(\"\")\n const [noteType, setNoteType] = useState<\"RFI Note\" | \"Internal Note\">(\"RFI Note\")\n const [isSubmitting, setIsSubmitting] = useState(false)\n\n const resetForm = () => {\n setNewNote(\"\")\n setNoteType(\"RFI Note\")\n }\n\n const handleCancelNote = () => {\n setShowNoteDialog(false)\n resetForm()\n }\n\n const handleAddNote = async () => {\n if (!newNote.trim()) {\n toast({\n title: \"Error\",\n description: \"Please enter a note before submitting\",\n variant: \"destructive\"\n })\n return\n }\n\n setIsSubmitting(true)\n \n // Simulate API call\n setTimeout(() => {\n toast({\n title: \"Note Added\",\n description: \"Your note has been added successfully\"\n })\n setShowNoteDialog(false)\n resetForm()\n setIsSubmitting(false)\n }, 500)\n }\n\n const handleDeleteNote = (noteId: string, noteContent: string) => {\n toast({\n title: \"Note Deleted\",\n description: `Note deleted successfully`\n })\n // TODO: API call to delete note\n console.log(\"Deleting note:\", noteId)\n }\n\n return (\n <div className=\"space-y-6\">\n {/* Add Note Dialog - Render using portal */}\n {showNoteDialog && createPortal(\n <div className=\"fixed inset-0 z-[100] flex items-center justify-center p-4\">\n <div \n className=\"fixed inset-0 bg-background/80 backdrop-blur-sm\"\n onClick={handleCancelNote}\n />\n <div className=\"relative bg-card border rounded-lg shadow-lg max-w-lg w-full p-6 z-[101]\">\n <div className=\"flex items-center justify-between mb-6\">\n <h2 className=\"text-2xl font-bold\">Add Note</h2>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0\"\n onClick={handleCancelNote}\n >\n <X className=\"h-4 w-4\" />\n </Button>\n </div>\n\n <div className=\"space-y-4\">\n <EnhancedSelect\n label=\"Note Type\"\n value={noteType}\n onValueChange={(value) => setNoteType(value as \"RFI Note\" | \"Internal Note\")}\n options={NOTE_TYPE_OPTIONS}\n />\n <EnhancedTextarea\n label=\"Note\"\n placeholder=\"Enter your note here...\"\n value={newNote}\n onChange={(e) => setNewNote(e.target.value)}\n rows={6}\n required\n />\n </div>\n\n <div className=\"flex gap-3 mt-6\">\n <Button\n variant=\"outline\"\n onClick={handleCancelNote}\n disabled={isSubmitting}\n className=\"flex-1\"\n >\n Cancel\n </Button>\n <Button\n onClick={handleAddNote}\n disabled={isSubmitting || !newNote.trim()}\n className=\"flex-1\"\n >\n {isSubmitting ? \"Adding...\" : \"Add Note\"}\n </Button>\n </div>\n </div>\n </div>,\n document.body\n )}\n\n {/* Notes History */}\n <div className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <h3 className=\"text-sm font-medium text-foreground\">Note History</h3>\n <Button \n onClick={() => setShowNoteDialog(true)}\n variant=\"ghost\"\n size=\"sm\"\n className=\"gap-2 text-primary hover:text-primary\"\n >\n <Plus className=\"h-4 w-4\" />\n Add Note\n </Button>\n </div>\n {notes.length === 0 ? (\n <div className=\"text-center py-8 text-muted-foreground\">\n <MessageSquare className=\"h-8 w-8 mx-auto mb-2 opacity-50\" />\n <p>No notes yet</p>\n </div>\n ) : (\n <div className=\"space-y-3\">\n {notes.map((note) => (\n <div \n key={note.id} \n className=\"border rounded-lg p-4 bg-muted/30\"\n >\n <div className=\"flex items-start justify-between gap-4 mb-2\">\n <div className=\"flex items-center gap-2\">\n <p className=\"font-medium text-sm text-foreground\">{note.user}</p>\n <Badge variant={note.type === \"RFI Note\" ? \"default\" : \"outline\"}>\n {note.type === \"RFI Note\" ? \"RFI\" : \"Internal\"}\n </Badge>\n </div>\n <div className=\"flex items-center gap-2\">\n <span className=\"text-xs text-muted-foreground whitespace-nowrap\">\n {note.timestamp}\n </span>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0 text-muted-foreground hover:text-foreground\"\n onClick={() => handleDeleteNote(note.id, note.content)}\n >\n <Trash2 className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n <p className=\"text-sm text-foreground\">{note.content}</p>\n </div>\n ))}\n </div>\n )}\n </div>\n </div>\n )\n}\n","import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nconst inputVariants = cva(\n \"flex w-full rounded-md bg-form-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 transition-form\",\n {\n variants: {\n variant: {\n default: \"border border-form-border focus-visible:border-form-border-focus focus-visible:outline-none focus-visible:shadow-form-focus\",\n error: \"border border-form-border-error focus-visible:border-form-border-error focus-visible:outline-none focus-visible:shadow-form-error\",\n success: \"border border-form-border-success focus-visible:border-form-border-success focus-visible:outline-none\",\n disabled: \"border border-form-border bg-muted cursor-not-allowed opacity-50\",\n readonly: \"border border-form-border bg-muted/50 cursor-default\"\n },\n size: {\n default: \"h-10\",\n sm: \"h-9\",\n lg: \"h-11\"\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\"\n }\n }\n)\n\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'>,\n VariantProps<typeof inputVariants> {\n label?: string\n hint?: string\n error?: string\n success?: string\n isLoading?: boolean\n}\n\nconst EnhancedInput = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, variant, size, label, hint, error, success, isLoading, ...props }, ref) => {\n const inputVariant = error ? \"error\" : success ? \"success\" : props.disabled ? \"disabled\" : props.readOnly ? \"readonly\" : variant\n\n return (\n <div className=\"space-y-2\">\n {label && (\n <label className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\">\n {label}\n {props.required && <span className=\"text-destructive ml-1\">*</span>}\n </label>\n )}\n <div className=\"relative\">\n <input\n className={cn(inputVariants({ variant: inputVariant, size, className }))}\n ref={ref}\n {...props}\n />\n {isLoading && (\n <div className=\"absolute right-3 top-1/2 transform -translate-y-1/2\">\n <div className=\"animate-spin rounded-full h-4 w-4 border-2 border-primary border-t-transparent\"></div>\n </div>\n )}\n </div>\n {hint && !error && !success && (\n <p className=\"text-xs text-muted-foreground\">{hint}</p>\n )}\n {error && (\n <p className=\"text-xs text-destructive\">{error}</p>\n )}\n {success && (\n <p className=\"text-xs text-success\">{success}</p>\n )}\n </div>\n )\n }\n)\nEnhancedInput.displayName = \"EnhancedInput\"\n\nexport { EnhancedInput, inputVariants }","import { useState } from \"react\"\nimport { createPortal } from \"react-dom\"\nimport { AlertDocument } from \"@/lib/mock-data/alert-data\"\nimport { Button } from \"@/components/ui/button\"\nimport { toast } from \"@/hooks/use-toast\"\nimport { FileText, Upload, Download, Eye, Trash2, X } from \"lucide-react\"\nimport { cn } from \"@/lib/utils\"\nimport { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { EnhancedTextarea } from \"@/components/ui/enhanced-textarea\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\n\ninterface AlertDocumentsProps {\n alertId: string\n documents: AlertDocument[]\n renderDocumentViewer?: (document: AlertDocument) => React.ReactNode\n}\n\nexport const AlertDocuments = ({ alertId, documents, renderDocumentViewer }: AlertDocumentsProps) => {\n const [isUploading, setIsUploading] = useState(false)\n const [showUploadDialog, setShowUploadDialog] = useState(false)\n const [selectedFile, setSelectedFile] = useState<File | null>(null)\n const [documentName, setDocumentName] = useState(\"\")\n const [description, setDescription] = useState(\"\")\n const [documentType, setDocumentType] = useState(\"\")\n const [viewingDocument, setViewingDocument] = useState<AlertDocument | null>(null)\n\n const isImageType = (name: string) => {\n const imageExtensions = ['.jpg', '.jpeg', '.png', '.gif', '.webp', '.bmp']\n return imageExtensions.some(ext => name.toLowerCase().endsWith(ext))\n }\n\n const handleDownload = (doc: AlertDocument) => {\n if (doc.url) {\n window.open(doc.url, '_blank')\n }\n toast({ title: \"Download\", description: `Downloading ${doc.name}` })\n }\n\n const handleFileSelect = (e: React.ChangeEvent<HTMLInputElement>) => {\n const file = e.target.files?.[0]\n if (!file) return\n \n setSelectedFile(file)\n setDocumentName(file.name)\n }\n\n const handleUploadSubmit = () => {\n if (!selectedFile || !documentName || !documentType) {\n toast({\n title: \"Missing Information\",\n description: \"Please fill in all required fields\",\n variant: \"destructive\"\n })\n return\n }\n\n setIsUploading(true)\n \n // Simulate upload\n setTimeout(() => {\n const newDocument: AlertDocument = {\n id: String(Date.now()),\n name: documentName,\n type: documentType,\n description: description || undefined,\n size: `${(selectedFile.size / 1024 / 1024).toFixed(1)} MB`,\n uploadedBy: \"Current User\",\n uploadedAt: new Date().toISOString()\n }\n \n toast({\n title: \"Upload Successful\",\n description: `${documentName} uploaded successfully`\n })\n setIsUploading(false)\n setShowUploadDialog(false)\n resetForm()\n }, 1000)\n }\n\n const resetForm = () => {\n setSelectedFile(null)\n setDocumentName(\"\")\n setDescription(\"\")\n setDocumentType(\"\")\n const fileInput = document.getElementById(\"file-upload\") as HTMLInputElement\n if (fileInput) fileInput.value = \"\"\n }\n\n const handleCancelUpload = () => {\n setShowUploadDialog(false)\n resetForm()\n }\n\n const getFileIcon = (type: string) => {\n return <FileText className=\"h-5 w-5\" />\n }\n\n const getFileTypeColor = (type: string) => {\n switch (type.toUpperCase()) {\n case \"PDF\":\n return \"text-red-500\"\n case \"DOCX\":\n case \"DOC\":\n return \"text-blue-500\"\n case \"XLSX\":\n case \"XLS\":\n return \"text-green-500\"\n case \"JPG\":\n case \"JPEG\":\n case \"PNG\":\n return \"text-purple-500\"\n default:\n return \"text-muted-foreground\"\n }\n }\n\n const documentTypeOptions = [\n { value: \"ID_DOCUMENT_FRONT\", label: \"ID Document (Front)\" },\n { value: \"ID_DOCUMENT_BACK\", label: \"ID Document (Back)\" },\n { value: \"PASSPORT\", label: \"Passport\" },\n { value: \"PROOF_OF_ADDRESS\", label: \"Proof of Address\" },\n { value: \"BANK_STATEMENT\", label: \"Bank Statement\" },\n { value: \"BUSINESS_LICENSE\", label: \"Business License\" },\n { value: \"TAX_DOCUMENT\", label: \"Tax Document\" },\n { value: \"OTHER\", label: \"Other\" }\n ]\n\n return (\n <div className=\"space-y-6\">\n {/* Upload Dialog - Render using portal */}\n {showUploadDialog && createPortal(\n <div className=\"fixed inset-0 z-[100] flex items-center justify-center p-4\">\n <div \n className=\"fixed inset-0 bg-background/80 backdrop-blur-sm\"\n onClick={handleCancelUpload}\n />\n <div className=\"relative bg-card border rounded-lg shadow-lg max-w-lg w-full p-6 z-[101]\">\n <div className=\"flex items-center justify-between mb-6\">\n <h2 className=\"text-2xl font-bold\">Upload Document</h2>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0\"\n onClick={handleCancelUpload}\n >\n <X className=\"h-4 w-4\" />\n </Button>\n </div>\n\n <div className=\"space-y-4\">\n {/* File Upload Area Inside Dialog */}\n <div className=\"border-2 border-dashed rounded-lg p-6 text-center hover:border-primary/50 transition-colors\">\n <input\n type=\"file\"\n id=\"file-upload-dialog\"\n className=\"hidden\"\n onChange={handleFileSelect}\n disabled={isUploading}\n />\n <label\n htmlFor=\"file-upload-dialog\"\n className={cn(\n \"cursor-pointer flex flex-col items-center gap-2\",\n isUploading && \"opacity-50 cursor-not-allowed\"\n )}\n >\n <Upload className=\"h-8 w-8 text-muted-foreground\" />\n <div>\n <p className=\"text-sm font-medium text-foreground\">\n {selectedFile ? \"Change file\" : \"Click to upload or drag and drop\"}\n </p>\n <p className=\"text-xs text-muted-foreground mt-1\">\n PDF, DOC, DOCX, JPG, PNG up to 10MB\n </p>\n </div>\n </label>\n </div>\n\n {selectedFile && (\n <div className=\"p-3 bg-muted/50 rounded-lg\">\n <p className=\"text-sm text-muted-foreground\">Selected file:</p>\n <p className=\"text-sm font-medium\">{selectedFile.name}</p>\n <p className=\"text-xs text-muted-foreground\">\n {(selectedFile.size / 1024 / 1024).toFixed(2)} MB\n </p>\n </div>\n )}\n\n <EnhancedInput\n label=\"Document name\"\n value={documentName}\n onChange={(e) => setDocumentName(e.target.value)}\n placeholder=\"Enter document name\"\n />\n\n <EnhancedTextarea\n label=\"Description\"\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n placeholder=\"Enter document description (optional)\"\n rows={3}\n />\n\n <EnhancedSelect\n label=\"Document type\"\n value={documentType}\n onValueChange={setDocumentType}\n placeholder=\"Select document type\"\n options={documentTypeOptions}\n />\n </div>\n\n <div className=\"flex gap-3 mt-6\">\n <Button\n variant=\"outline\"\n onClick={handleCancelUpload}\n disabled={isUploading}\n className=\"flex-1\"\n >\n Cancel\n </Button>\n <Button\n onClick={handleUploadSubmit}\n disabled={isUploading}\n className=\"flex-1\"\n >\n {isUploading ? \"Uploading...\" : \"Upload\"}\n </Button>\n </div>\n </div>\n </div>,\n document.body\n )}\n\n {/* Documents List */}\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <h3 className=\"text-sm font-medium text-foreground\">Uploaded Documents</h3>\n <Button \n onClick={() => setShowUploadDialog(true)}\n variant=\"ghost\"\n size=\"sm\"\n className=\"gap-2 text-primary hover:text-primary\"\n >\n <Upload className=\"h-4 w-4\" />\n Upload\n </Button>\n </div>\n {documents.length === 0 ? (\n <div className=\"text-center py-8 text-muted-foreground\">\n <FileText className=\"h-8 w-8 mx-auto mb-2 opacity-50\" />\n <p>No documents uploaded yet</p>\n </div>\n ) : (\n <div className=\"space-y-2\">\n {documents.map((doc) => (\n <div\n key={doc.id}\n className=\"border rounded-lg hover:bg-muted/30 transition-colors overflow-hidden\"\n >\n {/* Image Preview for image types */}\n {isImageType(doc.name) && doc.url && (\n <div className=\"w-full bg-muted/50\">\n <img \n src={doc.url} \n alt={doc.name}\n className=\"w-full h-48 object-cover\"\n />\n </div>\n )}\n \n <div className=\"flex items-center justify-between p-3\">\n <div className=\"flex items-center gap-3 flex-1 min-w-0\">\n {!isImageType(doc.name) && (\n <div className={cn(getFileTypeColor(doc.type))}>\n {getFileIcon(doc.type)}\n </div>\n )}\n <div className=\"flex-1 min-w-0\">\n <h4 className=\"font-medium text-sm truncate\">{doc.name}</h4>\n <span className={cn(\"text-xs px-2 py-0.5 rounded-full bg-muted inline-block mt-1\", getFileTypeColor(doc.type))}>\n {doc.type}\n </span>\n {doc.description && (\n <p className=\"text-sm text-foreground mt-1\">{doc.description}</p>\n )}\n <p className=\"text-xs text-muted-foreground mt-1\">\n {doc.size} • Uploaded by {doc.uploadedBy} • {new Date(doc.uploadedAt).toLocaleDateString()}\n </p>\n </div>\n </div>\n <div className=\"flex items-center gap-1\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0\"\n onClick={() => setViewingDocument(doc)}\n >\n <Eye className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0\"\n onClick={() => handleDownload(doc)}\n >\n <Download className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0 text-muted-foreground hover:text-foreground\"\n onClick={() => toast({ title: \"Delete\", description: `Deleted ${doc.name}` })}\n >\n <Trash2 className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n\n {/* Document Preview Dialog */}\n {viewingDocument && createPortal(\n <div className=\"fixed inset-0 z-[100] flex items-center justify-center p-4\">\n <div \n className=\"fixed inset-0 bg-background/80 backdrop-blur-sm\"\n onClick={() => setViewingDocument(null)}\n />\n <div className=\"relative bg-card border rounded-lg shadow-lg max-w-4xl w-full max-h-[90vh] overflow-hidden z-[101]\">\n {/* Header */}\n <div className=\"flex items-center justify-between p-4 border-b\">\n <div>\n <h2 className=\"text-lg font-semibold\">{viewingDocument.name}</h2>\n <p className=\"text-sm text-muted-foreground\">{viewingDocument.type}</p>\n </div>\n <div className=\"flex gap-2\">\n <Button variant=\"outline\" size=\"sm\" onClick={() => handleDownload(viewingDocument)}>\n <Download className=\"h-4 w-4 mr-2\" /> Download\n </Button>\n <Button variant=\"ghost\" size=\"sm\" className=\"h-8 w-8 p-0\" onClick={() => setViewingDocument(null)}>\n <X className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n \n {/* Content */}\n <div className=\"p-4 overflow-auto max-h-[calc(90vh-120px)]\">\n {isImageType(viewingDocument.name) && viewingDocument.url ? (\n <img \n src={viewingDocument.url} \n alt={viewingDocument.name} \n className=\"max-w-full h-auto mx-auto rounded-lg\"\n />\n ) : renderDocumentViewer ? (\n renderDocumentViewer(viewingDocument)\n ) : (\n <div className=\"text-center py-12\">\n <FileText className=\"h-16 w-16 mx-auto mb-4 text-muted-foreground\" />\n <p className=\"text-lg font-medium\">{viewingDocument.name}</p>\n <p className=\"text-muted-foreground mt-2\">Click \"Download\" to view this document</p>\n {viewingDocument.description && (\n <p className=\"text-sm text-foreground mt-4\">{viewingDocument.description}</p>\n )}\n <p className=\"text-sm text-muted-foreground mt-4\">\n Size: {viewingDocument.size} • Uploaded by {viewingDocument.uploadedBy} • {new Date(viewingDocument.uploadedAt).toLocaleDateString()}\n </p>\n </div>\n )}\n </div>\n </div>\n </div>,\n document.body\n )}\n </div>\n )\n}","interface InfoFieldProps {\n label?: string\n value: string | React.ReactNode\n layout?: 'vertical' | 'horizontal' | 'compact'\n className?: string\n}\n\nimport React from \"react\"\n\nexport const InfoField = ({ label, value, layout = 'vertical', className }: InfoFieldProps) => {\n if (layout === 'horizontal') {\n return (\n <div className={`flex items-start gap-3 ${className || ''}`}>\n {label && <p className=\"text-sm font-medium text-muted-foreground flex-shrink-0 max-w-[50%]\">{label}</p>}\n <div className=\"text-sm text-foreground flex-1 min-w-0 break-all overflow-hidden\">{value}</div>\n </div>\n )\n }\n\n if (layout === 'compact') {\n return (\n <div className={`flex items-center gap-2 ${className || ''}`}>\n {label && <p className=\"text-xs font-medium text-muted-foreground\">{label}:</p>}\n <div className=\"text-xs text-foreground\">{value}</div>\n </div>\n )\n }\n\n // Default vertical layout\n return (\n <div className={className}>\n {label && <p className=\"text-sm font-medium text-muted-foreground\">{label}</p>}\n <div className={`text-sm text-foreground ${label ? 'mt-1' : ''}`}>{value}</div>\n </div>\n )\n}","import * as React from \"react\"\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst ScrollArea = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n <ScrollAreaPrimitive.Root\n ref={ref}\n className={cn(\"relative overflow-hidden\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n))\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName\n\nconst ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n \"flex touch-none select-none transition-colors\",\n orientation === \"vertical\" &&\n \"h-full w-2.5 border-l border-l-transparent p-[1px]\",\n orientation === \"horizontal\" &&\n \"h-2.5 flex-col border-t border-t-transparent p-[1px]\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n))\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName\n\nexport { ScrollArea, ScrollBar }\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Table = React.forwardRef<\n HTMLTableElement,\n React.HTMLAttributes<HTMLTableElement>\n>(({ className, ...props }, ref) => (\n <div className=\"relative w-full overflow-auto\">\n <table\n ref={ref}\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n))\nTable.displayName = \"Table\"\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead ref={ref} className={cn(\"[&_tr]:border-b\", className)} {...props} />\n))\nTableHeader.displayName = \"TableHeader\"\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody\n ref={ref}\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n))\nTableBody.displayName = \"TableBody\"\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\n \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n))\nTableFooter.displayName = \"TableFooter\"\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n \"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\",\n className\n )}\n {...props}\n />\n))\nTableRow.displayName = \"TableRow\"\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n \"h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0\",\n className\n )}\n {...props}\n />\n))\nTableHead.displayName = \"TableHead\"\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\"p-4 align-middle [&:has([role=checkbox])]:pr-0\", className)}\n {...props}\n />\n))\nTableCell.displayName = \"TableCell\"\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nTableCaption.displayName = \"TableCaption\"\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n","import * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Dialog = DialogPrimitive.Root\n\nconst DialogTrigger = DialogPrimitive.Trigger\n\nconst DialogPortal = DialogPrimitive.Portal\n\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-white/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\ninterface DialogContentProps extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> {\n hideCloseButton?: boolean\n}\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n DialogContentProps\n>(({ className, children, hideCloseButton, ...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-4xl 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%] rounded-lg max-h-[90vh] overflow-hidden\",\n className\n )}\n {...props}\n >\n {children}\n {!hideCloseButton && (\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 )}\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","import { useState } from \"react\"\nimport { ChevronDown, ChevronRight, Copy, Check } from \"lucide-react\"\nimport { Button } from \"./button\"\nimport { cn } from \"@/lib/utils\"\n\ninterface JsonViewerProps {\n data: any\n className?: string\n compact?: boolean\n maxHeight?: string\n expandFully?: boolean\n}\n\nexport const JsonViewer = ({ data, className, compact = false, maxHeight = \"60vh\", expandFully = false }: JsonViewerProps) => {\n const [copied, setCopied] = useState(false)\n\n const handleCopy = () => {\n navigator.clipboard.writeText(JSON.stringify(data, null, 2))\n setCopied(true)\n setTimeout(() => setCopied(false), 2000)\n }\n\n return (\n <div className={cn(\"relative\", className)}>\n <div className={cn(\"absolute z-10\", compact ? \"right-1 top-1\" : \"right-2 top-2\")}>\n <Button\n variant=\"outline\"\n size={compact ? \"sm\" : \"sm\"}\n onClick={handleCopy}\n className={cn(\"gap-2\", compact && \"h-7 text-xs px-2\")}\n >\n {copied ? (\n <>\n <Check className=\"h-3 w-3\" />\n {!compact && \"Copied\"}\n </>\n ) : (\n <>\n <Copy className=\"h-3 w-3\" />\n {!compact && \"Copy JSON\"}\n </>\n )}\n </Button>\n </div>\n <div \n className={cn(\n \"bg-muted/30 rounded-lg border font-mono\",\n expandFully ? \"p-4 text-xs\" : compact ? \"max-h-[300px] overflow-auto p-2 text-xs\" : \"overflow-auto p-4 text-xs\"\n )}\n style={expandFully ? undefined : { maxHeight: compact ? \"300px\" : maxHeight }}\n >\n <JsonNode data={data} name=\"root\" depth={0} compact={compact} />\n </div>\n </div>\n )\n}\n\ninterface JsonNodeProps {\n data: any\n name: string\n depth: number\n compact?: boolean\n}\n\nconst JsonNode = ({ data, name, depth, compact = false }: JsonNodeProps) => {\n const [isExpanded, setIsExpanded] = useState(true)\n\n const indent = depth * 8\n\n if (data === null) {\n return (\n <div style={{ paddingLeft: indent }} className=\"text-muted-foreground\">\n <span className=\"text-primary\">{name}</span>: <span className=\"text-orange-500\">null</span>\n </div>\n )\n }\n\n if (typeof data !== \"object\") {\n const valueClass = \n typeof data === \"string\" ? \"text-green-600 dark:text-green-400\" :\n typeof data === \"number\" ? \"text-blue-600 dark:text-blue-400\" :\n typeof data === \"boolean\" ? \"text-orange-500\" :\n \"text-foreground\"\n\n return (\n <div style={{ paddingLeft: indent }}>\n <span className=\"text-primary\">{name}</span>:{\" \"}\n <span className={valueClass}>\n {typeof data === \"string\" ? `\"${data}\"` : String(data)}\n </span>\n </div>\n )\n }\n\n const isArray = Array.isArray(data)\n const entries = isArray ? data : Object.entries(data)\n const isEmpty = entries.length === 0\n\n return (\n <div style={{ paddingLeft: indent }}>\n <div\n className=\"flex items-center gap-1 cursor-pointer hover:bg-muted/50 rounded\"\n onClick={() => !isEmpty && setIsExpanded(!isExpanded)}\n >\n {!isEmpty && (\n isExpanded ? (\n <ChevronDown className=\"h-3 w-3 text-muted-foreground\" />\n ) : (\n <ChevronRight className=\"h-3 w-3 text-muted-foreground\" />\n )\n )}\n <span className=\"text-primary\">{name}</span>\n <span className=\"text-muted-foreground\">\n {isArray ? \"[\" : \"{\"}\n {!isExpanded && !isEmpty && \"...\"}\n {isEmpty && (isArray ? \"]\" : \"}\")}\n </span>\n </div>\n {isExpanded && !isEmpty && (\n <div>\n {isArray\n ? data.map((item: any, index: number) => (\n <JsonNode\n key={index}\n data={item}\n name={String(index)}\n depth={depth + 1}\n compact={compact}\n />\n ))\n : Object.entries(data).map(([key, value]) => (\n <JsonNode\n key={key}\n data={value}\n name={key}\n depth={depth + 1}\n compact={compact}\n />\n ))}\n <div style={{ paddingLeft: indent }} className=\"text-muted-foreground\">\n {isArray ? \"]\" : \"}\"}\n </div>\n </div>\n )}\n </div>\n )\n}\n","import { useState } from \"react\"\nimport { FormCard } from \"@/components/ui/form-card\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { AlertTimeline } from \"@/components/alerts/AlertTimeline\"\nimport { AlertNotes } from \"@/components/alerts/AlertNotes\"\nimport { AlertDocuments } from \"@/components/alerts/AlertDocuments\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport type { Alert } from \"@/lib/mock-data/alert-data\"\nimport { Link } from \"react-router-dom\"\nimport { ScrollArea } from \"@/components/ui/scroll-area\"\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"@/components/ui/table\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"@/components/ui/dialog\"\nimport { Button } from \"@/components/ui/button\"\nimport { FileJson } from \"lucide-react\"\nimport { JsonViewer } from \"@/components/ui/json-viewer\"\n\nexport interface OFACAlertViewProps {\n alert: Alert\n}\n\nexport const OFACAlertView = ({ alert }: OFACAlertViewProps) => {\n const [isJsonDialogOpen, setIsJsonDialogOpen] = useState(false)\n\n // Parse OFAC raw results and create table rows\n const parseOFACMatches = (data: any) => {\n if (!data.rawResults || !data.ofacCheckDetails) return []\n\n try {\n const rawResults = JSON.parse(data.rawResults)\n const tableRows: any[] = []\n\n // Helper to get user-friendly list names\n const getListName = (listType: string) => {\n const listNames: Record<string, string> = {\n 'SDNs': 'OFAC SDN List',\n 'altNames': 'OFAC Alternate Names',\n 'sectoralSanctions': 'OFAC Sectoral Sanctions',\n 'nonSDNMenuBasedSanctionsList': 'OFAC Non-SDN List',\n 'ukConsolidatedSanctionsList': 'UK Consolidated List'\n }\n return listNames[listType] || listType\n }\n\n // Helper to format check key\n const formatCheckKey = (key: string) => {\n return key\n .replace(/([A-Z])/g, ' $1')\n .replace(/^./, str => str.toUpperCase())\n .trim()\n }\n\n // Process each list type\n const listTypes = [\n { key: 'SDNs', nameField: 'sdnName' },\n { key: 'altNames', nameField: 'alternateName' },\n { key: 'sectoralSanctions', nameField: 'Name' },\n { key: 'nonSDNMenuBasedSanctionsList', nameField: 'Name' },\n { key: 'ukConsolidatedSanctionsList', nameField: 'Names' }\n ]\n\n listTypes.forEach(({ key, nameField }) => {\n const list = rawResults[key]\n if (list && Array.isArray(list)) {\n list.forEach((item: any) => {\n // For each check detail, create rows if there's a match\n data.ofacCheckDetails.forEach((check: any) => {\n // Only create row if the match is relevant to this check\n // For simplicity, we're showing all matches for all checks\n tableRows.push({\n type: formatCheckKey(check.checkKey),\n name: check.checkValue,\n matchedName: item.matchedName || item[nameField] || 'N/A',\n list: getListName(key),\n matchScore: item.match ? `${(item.match * 100).toFixed(2)}%` : 'N/A'\n })\n })\n })\n }\n })\n\n return tableRows\n } catch (error) {\n console.error('Error parsing OFAC results:', error)\n return []\n }\n }\n\n const renderOFACContext = () => {\n const data = alert.contextData\n if (!data) return null\n\n const tableRows = parseOFACMatches(data)\n\n // Determine entity name and link\n const entityName = data.counterpartyName || data.businessName || data.individualName || data.transactionPaymentId || 'N/A'\n const entityType = data.counterpartyName ? 'Counterparty' \n : data.businessName ? 'Business' \n : data.individualName ? 'Individual' \n : data.transactionPaymentId ? 'Transaction'\n : 'N/A'\n const entityId = data.counterpartyId || data.businessId || data.individualId || data.transactionPaymentId\n const entityLink = entityId \n ? data.counterpartyId ? `/counterparties/${entityId}` \n : data.businessId ? `/businesses/${entityId}` \n : data.individualId ? `/individuals/${entityId}`\n : data.transactionPaymentId ? `/transactions/${entityId}`\n : null\n : null\n\n return (\n <div className=\"space-y-4\">\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField \n label=\"Entity Name\" \n value={\n entityLink ? (\n <Link \n to={entityLink} \n className=\"text-primary hover:underline\"\n >\n {entityName}\n </Link>\n ) : entityName\n } \n layout=\"horizontal\" \n />\n <InfoField label=\"Entity Type\" value={entityType} layout=\"horizontal\" />\n </div>\n\n {tableRows.length > 0 && (\n <div className=\"mt-4\">\n <ScrollArea className=\"h-[300px] rounded-md border\">\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead>Type</TableHead>\n <TableHead>Name</TableHead>\n <TableHead>Matched Name</TableHead>\n <TableHead className=\"flex items-center gap-1\">\n <span>List</span>\n <Dialog open={isJsonDialogOpen} onOpenChange={setIsJsonDialogOpen}>\n <DialogTrigger asChild>\n <Button \n variant=\"ghost\" \n size=\"icon\"\n className=\"h-6 w-6 text-primary hover:text-primary/80\"\n >\n <FileJson className=\"h-4 w-4\" />\n </Button>\n </DialogTrigger>\n <DialogContent className=\"max-w-4xl max-h-[80vh]\">\n <DialogHeader>\n <DialogTitle>OFAC Raw Results</DialogTitle>\n <DialogDescription>\n Complete JSON response from the OFAC screening check\n </DialogDescription>\n </DialogHeader>\n <JsonViewer \n data={data.rawResults ? JSON.parse(data.rawResults) : {}} \n maxHeight=\"60vh\"\n />\n </DialogContent>\n </Dialog>\n </TableHead>\n <TableHead>Match Score</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {tableRows.map((row, index) => (\n <TableRow key={index}>\n <TableCell>{row.type}</TableCell>\n <TableCell>{row.name}</TableCell>\n <TableCell>{row.matchedName}</TableCell>\n <TableCell>{row.list}</TableCell>\n <TableCell>{row.matchScore}</TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </ScrollArea>\n </div>\n )}\n </div>\n )\n }\n\n const renderTransactionContext = () => {\n return (\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Transaction ID\" value=\"TXN-12345\" />\n <InfoField label=\"Amount\" value=\"$30,000.00\" />\n <InfoField label=\"Transaction Type\" value=\"Wire Transfer\" />\n <InfoField label=\"Date\" value=\"2025-09-30\" />\n </div>\n )\n }\n\n const renderFileRecordContext = () => {\n return (\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"File Name\" value=\"wire_batch_093025.csv\" />\n <InfoField label=\"Record Count\" value=\"1,234\" />\n <InfoField label=\"Error Count\" value=\"3\" />\n <InfoField label=\"Status\" value={<Badge variant=\"alert-error\">Failed</Badge>} />\n </div>\n )\n }\n\n const renderProductContext = () => {\n return (\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Product ID\" value=\"PROD-2787\" />\n <InfoField label=\"Product Name\" value=\"Business Checking Account\" />\n <InfoField label=\"Status\" value=\"Pending Deactivation\" />\n <InfoField label=\"Reason\" value=\"Compliance review required\" />\n </div>\n )\n }\n\n const getContextTitle = () => {\n switch (alert.contextType) {\n case \"Ofac\":\n return \"OFAC Context\"\n case \"Transaction\":\n return \"Transaction Context\"\n case \"File Record\":\n return \"File Processing Context\"\n case \"Product\":\n return \"Product Context\"\n default:\n return \"Context Information\"\n }\n }\n\n const renderContext = () => {\n switch (alert.contextType) {\n case \"Ofac\":\n return renderOFACContext()\n case \"Transaction\":\n return renderTransactionContext()\n case \"File Record\":\n return renderFileRecordContext()\n case \"Product\":\n return renderProductContext()\n default:\n return <p className=\"text-sm text-muted-foreground\">No additional context available</p>\n }\n }\n\n return (\n <div className=\"flex flex-col lg:flex-row gap-6\">\n {/* Left Section: 2x2 Grid */}\n <div className=\"flex-1 grid grid-cols-1 lg:grid-cols-2 gap-6\">\n <FormCard title=\"Alert Details\" className=\"lg:col-span-2\">\n <div className=\"space-y-3\">\n {/* Description */}\n <InfoField label=\"Description\" value={alert.description} layout=\"horizontal\" />\n\n {/* OFAC Context Data */}\n {renderContext()}\n </div>\n </FormCard>\n\n {/* Notes Section */}\n <FormCard title=\"Notes\">\n <AlertNotes alertId={alert.id} notes={alert.notes || []} />\n </FormCard>\n\n {/* Documents Section */}\n <FormCard title=\"Documents\">\n <AlertDocuments alertId={alert.id} documents={alert.documents || []} />\n </FormCard>\n </div>\n\n {/* Right Section: Timeline Column */}\n <div className=\"lg:w-64\">\n <FormCard title=\"Status Timeline\" className=\"h-full\">\n <AlertTimeline events={alert.timeline || []} />\n </FormCard>\n </div>\n\n </div>\n )\n}\n","import type { Alert } from \"@/lib/mock-data/alert-data\"\nimport { OFACAlertView } from \"./OFACAlertView\"\n\nexport interface AlertDetailRouterProps {\n alert: Alert\n}\n\nexport const AlertDetailRouter = ({ alert }: AlertDetailRouterProps) => {\n // Route to appropriate view based on alert type\n switch (alert.type) {\n case \"Ofac\":\n return <OFACAlertView alert={alert} />\n \n case \"Transaction Monitoring\":\n // TODO: Create TransactionMonitoringAlertView\n return <div>Transaction Monitoring view - Coming soon</div>\n \n case \"Prohibited Entity\":\n // TODO: Create ProhibitedEntityAlertView\n return <div>Prohibited Entity view - Coming soon</div>\n \n case \"314a\":\n // TODO: Create Alert314aView\n return <div>314a view - Coming soon</div>\n \n case \"Dual Approval\":\n // TODO: Create DualApprovalAlertView\n return <div>Dual Approval view - Coming soon</div>\n \n case \"Transaction Processing Error\":\n // TODO: Create TransactionProcessingErrorAlertView\n return <div>Transaction Processing Error view - Coming soon</div>\n \n case \"ACH Return\":\n // TODO: Create ACHReturnAlertView\n return <div>ACH Return view - Coming soon</div>\n \n default:\n return <div>Unknown alert type: {alert.type}</div>\n }\n}\n","// Shared constants for form options across the application\n\nexport const COUNTRY_OPTIONS = [\n { value: \"US\", label: \"United States\" },\n { value: \"CA\", label: \"Canada\" },\n { value: \"GB\", label: \"United Kingdom\" },\n { value: \"DE\", label: \"Germany\" },\n { value: \"FR\", label: \"France\" }\n]\n\nexport const FI_ID_TYPE_OPTIONS = [\n { value: \"bic\", label: \"BIC\" },\n { value: \"swift\", label: \"SWIFT\" },\n { value: \"aba\", label: \"ABA\" },\n { value: \"iban\", label: \"IBAN\" },\n { value: \"routing\", label: \"Routing Number\" }\n]\n\nexport const ADDRESS_TYPE_OPTIONS = {\n FI: [\n { value: \"headquarters\", label: \"Headquarters\" },\n { value: \"branch\", label: \"Branch Office\" },\n { value: \"correspondent\", label: \"Correspondent Bank\" }\n ]\n}\n\nexport const RFI_STATUS_OPTIONS = [\n { value: \"Completed\", label: \"Completed\" },\n { value: \"Provided\", label: \"Provided\" },\n { value: \"Pending\", label: \"Pending\" }\n]\n\nexport const ASSIGNEE_OPTIONS = [\n { value: \"John Smith\", label: \"John Smith\" },\n { value: \"Sarah Johnson\", label: \"Sarah Johnson\" },\n { value: \"Michael Chen\", label: \"Michael Chen\" },\n { value: \"approverdev\", label: \"approverdev\" },\n { value: \"Unassigned\", label: \"Unassigned\" }\n]\n\nexport const BUSINESS_STATUS_OPTIONS = [\n { value: \"active\", label: \"Active\" },\n { value: \"inactive\", label: \"Inactive\" },\n { value: \"suspended\", label: \"Suspended\" }\n]\n\nexport const BUSINESS_ENTITY_TYPE_OPTIONS = [\n { value: \"SOLE_PROPRIETOR\", label: \"Sole Proprietor\" },\n { value: \"LIMITED_LIABILITY_COMPANY\", label: \"Limited Liability Company (LLC)\" },\n { value: \"CORPORATION\", label: \"S or C Corporation\" },\n { value: \"GENERAL_PARTNERSHIP\", label: \"General Partnership\" },\n { value: \"LIMITED_LIABILITY_PARTNERSHIP\", label: \"Limited Liability Partnership\" },\n { value: \"NON_PROFIT\", label: \"Non-Profit Corporation\" },\n { value: \"GOVERNMENT_ORGANIZATION\", label: \"Government Organization\" },\n { value: \"PUBLICLY_TRADED_COMPANY\", label: \"Publicly Traded Company\" },\n { value: \"TRUSTS\", label: \"Trusts\" }\n]\n\n// Individuals\n// Normalized values (match data/status badges) + friendly labels (for UI)\nexport const INDIVIDUAL_STATUS_OPTIONS = [\n { value: \"ACTIVE\", label: \"Active\" },\n { value: \"PENDING_APPROVAL\", label: \"Pending Approval\" },\n { value: \"BLOCKED\", label: \"Blocked\" },\n { value: \"INACTIVE\", label: \"Inactive\" },\n { value: \"SUSPENDED\", label: \"Suspended\" },\n { value: \"PENDING\", label: \"Pending\" },\n]\n\n// Individual document types\nexport const INDIVIDUAL_DOCUMENT_TYPE_OPTIONS = [\n { value: \"IDENTITY_VERIFICATION_RESULT\", label: \"Identity Verification Result\" },\n { value: \"DBA\", label: \"DBA\" },\n { value: \"ADDRESS_VERIFICATION\", label: \"Address Verification\" },\n { value: \"ID_DOCUMENT_BACK\", label: \"ID Document (Back)\" },\n { value: \"ID_DOCUMENT_FRONT\", label: \"ID Document (Front)\" },\n { value: \"EIN_CONFIRMATION\", label: \"EIN Confirmation\" },\n { value: \"POWER_OF_ATTORNEY\", label: \"Power of Attorney\" },\n { value: \"OTHER\", label: \"Other\" },\n { value: \"FORMATION\", label: \"Formation\" },\n { value: \"SELFIE_VERIFICATION\", label: \"Selfie Verification\" },\n { value: \"CLIENT_REQUESTED\", label: \"Client Requested\" },\n { value: \"SOCIAL_SECURITY_CARD\", label: \"Social Security Card\" },\n { value: \"TRANSACTION\", label: \"Transaction\" },\n { value: \"CERTIFICATE_OF_INCORPORATION\", label: \"Certificate of Incorporation\" },\n { value: \"PASSPORT\", label: \"Passport\" },\n]","export const getTypeBadgeVariant = (type: string): any => {\n switch (type) {\n case \"Ofac\":\n return \"alert-ofac\"\n case \"Dual Approval\":\n return \"alert-dual\"\n case \"Transaction Monitoring\":\n return \"alert-monitoring\"\n case \"Transaction Processing Error\":\n return \"alert-error\"\n default:\n return \"outline\"\n }\n}\n\nexport const getStatusColor = (status: string) => {\n switch (status) {\n case \"Unassigned\":\n return \"text-destructive\"\n case \"Closed\":\n return \"text-success\"\n case \"In Progress\":\n return \"text-warning\"\n default:\n return \"\"\n }\n}\n","import { Badge } from \"@/components/ui/badge\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { RFI_STATUS_OPTIONS, ASSIGNEE_OPTIONS } from \"@/lib/constants\"\nimport { cn } from \"@/lib/utils\"\nimport { getStatusColor } from \"@/lib/utils/alert-utils\"\n\ninterface AlertHeaderControlsProps {\n status: string\n assignee: string\n rfiStatus: string\n onAssigneeChange: (value: string) => void\n onRfiStatusChange: (value: string) => void\n}\n\nexport const AlertHeaderControls = ({\n status,\n assignee,\n rfiStatus,\n onAssigneeChange,\n onRfiStatusChange\n}: AlertHeaderControlsProps) => {\n return (\n <div className=\"flex items-center gap-4\">\n {/* Status Display */}\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-foreground\">Status:</span>\n <span className={cn(\"font-medium text-sm\", getStatusColor(status))}>{status}</span>\n </div>\n\n {/* Assignee Select */}\n <div className=\"flex items-center gap-2 min-w-[180px]\">\n <span className=\"text-sm text-muted-foreground\">Assignee:</span>\n <EnhancedSelect\n value={assignee}\n onValueChange={onAssigneeChange}\n options={ASSIGNEE_OPTIONS}\n placeholder=\"Unassigned\"\n />\n </div>\n\n {/* RFI Status Select */}\n <div className=\"flex items-center gap-2 min-w-[180px]\">\n <span className=\"text-sm text-muted-foreground\">RFI Status:</span>\n <EnhancedSelect\n value={rfiStatus}\n onValueChange={onRfiStatusChange}\n options={RFI_STATUS_OPTIONS}\n placeholder=\"Select status\"\n />\n </div>\n </div>\n )\n}\n","import { useState } from \"react\"\nimport { Alert } from \"@/lib/mock-data/alert-data\"\nimport { FormCard } from \"@/components/ui/form-card\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { Dialog, DialogContent, DialogHeader, DialogTitle } from \"@/components/ui/dialog\"\nimport { JsonViewer } from \"@/components/ui/json-viewer\"\nimport { ChevronRight } from \"lucide-react\"\n\ninterface ContextSectionProps {\n alert: Alert\n}\n\nexport const ContextSection = ({ alert }: ContextSectionProps) => {\n const [isDialogOpen, setIsDialogOpen] = useState(false)\n\n const renderOFACContext = () => {\n const data = alert.contextData\n if (!data) return null\n\n return (\n <div className=\"space-y-4\">\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Entity Name\" value={data.entityName} />\n <InfoField label=\"Entity Type\" value={data.entityType} />\n <InfoField label=\"Match Score\" value={<Badge variant=\"alert-ofac\">{data.matchScore}</Badge>} />\n <InfoField label=\"List Name\" value={data.listName} />\n </div>\n\n <div>\n <h4 className=\"text-sm font-medium mb-3\">Flagged Items</h4>\n <div className=\"overflow-x-auto border rounded-lg\">\n <table className=\"w-full\">\n <thead className=\"border-b bg-muted/50\">\n <tr>\n <th className=\"px-4 py-3 text-left text-sm font-medium\">Field</th>\n <th className=\"px-4 py-3 text-left text-sm font-medium\">Value</th>\n <th className=\"px-4 py-3 text-left text-sm font-medium\">Match Score</th>\n </tr>\n </thead>\n <tbody>\n {data.flaggedItems?.map((item: any, index: number) => (\n <tr key={index} className=\"border-b hover:bg-muted/50\">\n <td className=\"px-4 py-3 text-sm font-medium\">{item.field}</td>\n <td className=\"px-4 py-3 text-sm\">{item.value}</td>\n <td className=\"px-4 py-3\">\n <Badge variant={parseInt(item.matchScore) > 90 ? \"alert-ofac\" : \"outline\"}>\n {item.matchScore}\n </Badge>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n\n {alert.contextData && (\n <div>\n <Button \n variant=\"ghost\" \n className=\"w-full justify-between h-auto py-3 px-4 border rounded-lg hover:bg-muted/50\"\n onClick={() => setIsDialogOpen(true)}\n >\n <span className=\"text-sm font-medium\">Detail Result</span>\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n </div>\n )}\n </div>\n )\n }\n\n const renderTransactionContext = () => {\n return (\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Transaction ID\" value=\"TXN-12345\" />\n <InfoField label=\"Amount\" value=\"$30,000.00\" />\n <InfoField label=\"Transaction Type\" value=\"Wire Transfer\" />\n <InfoField label=\"Date\" value=\"2025-09-30\" />\n </div>\n )\n }\n\n const renderFileRecordContext = () => {\n return (\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"File Name\" value=\"wire_batch_093025.csv\" />\n <InfoField label=\"Record Count\" value=\"1,234\" />\n <InfoField label=\"Error Count\" value=\"3\" />\n <InfoField label=\"Status\" value={<Badge variant=\"alert-error\">Failed</Badge>} />\n </div>\n )\n }\n\n const renderProductContext = () => {\n return (\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Product ID\" value=\"PROD-2787\" />\n <InfoField label=\"Product Name\" value=\"Business Checking Account\" />\n <InfoField label=\"Status\" value=\"Pending Deactivation\" />\n <InfoField label=\"Reason\" value=\"Compliance review required\" />\n </div>\n )\n }\n\n const getContextTitle = () => {\n switch (alert.contextType) {\n case \"Ofac\":\n return \"OFAC Context\"\n case \"Transaction\":\n return \"Transaction Context\"\n case \"File Record\":\n return \"File Processing Context\"\n case \"Product\":\n return \"Product Context\"\n default:\n return \"Context Information\"\n }\n }\n\n const renderContext = () => {\n switch (alert.contextType) {\n case \"Ofac\":\n return renderOFACContext()\n case \"Transaction\":\n return renderTransactionContext()\n case \"File Record\":\n return renderFileRecordContext()\n case \"Product\":\n return renderProductContext()\n default:\n return <p className=\"text-sm text-muted-foreground\">No additional context available</p>\n }\n }\n\n\n return (\n <>\n <FormCard title={getContextTitle()}>\n {renderContext()}\n </FormCard>\n\n <Dialog open={isDialogOpen} onOpenChange={setIsDialogOpen}>\n <DialogContent className=\"max-w-4xl\">\n <DialogHeader>\n <DialogTitle>{getContextTitle()} - Detail Result</DialogTitle>\n </DialogHeader>\n <JsonViewer data={alert.contextData} />\n </DialogContent>\n </Dialog>\n </>\n )\n}\n","import * as React from \"react\"\nimport { FormProvider as RHFFormProvider, UseFormReturn, FieldValues } from \"react-hook-form\"\n\ninterface FormProviderProps<T extends FieldValues> {\n form: UseFormReturn<T>\n children: React.ReactNode\n}\n\nexport const FormProvider = <T extends FieldValues>({ \n form, \n children \n}: FormProviderProps<T>) => {\n return (\n <RHFFormProvider {...form}>\n {children}\n </RHFFormProvider>\n )\n}","import * as React from \"react\"\nimport { Controller, useFormContext, FieldPath, FieldValues } from \"react-hook-form\"\nimport { EnhancedInput, type InputProps } from \"@/components/ui/enhanced-input\"\nimport { get } from \"lodash\"\n\ninterface FormInputProps<T extends FieldValues = FieldValues> extends Omit<InputProps, 'error' | 'name'> {\n name: FieldPath<T>\n}\n\nexport const FormInput = <T extends FieldValues = FieldValues>({ \n name,\n type,\n ...props \n}: FormInputProps<T>) => {\n const { control, formState } = useFormContext<T>()\n const error = get(formState.errors, name)?.message as string | undefined\n\n return (\n <Controller\n name={name}\n control={control}\n render={({ field: { onChange, value, ...restField } }) => (\n <EnhancedInput\n {...props}\n {...restField}\n type={type}\n value={value ?? (type === \"number\" ? \"\" : \"\")}\n onChange={(e) => {\n if (type === \"number\") {\n const val = e.target.value\n onChange(val === \"\" ? undefined : parseFloat(val))\n } else {\n onChange(e.target.value)\n }\n }}\n error={error}\n />\n )}\n />\n )\n}","import * as React from \"react\"\nimport { Controller, useFormContext, FieldPath, FieldValues } from \"react-hook-form\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { get } from \"lodash\"\n\ninterface FormSelectProps<T extends FieldValues = FieldValues> {\n name: FieldPath<T>\n label?: string\n hint?: string\n placeholder?: string\n options: { value: string; label: string; disabled?: boolean }[]\n disabled?: boolean\n className?: string\n}\n\nexport const FormSelect = <T extends FieldValues = FieldValues>({ \n name, \n ...props \n}: FormSelectProps<T>) => {\n const { control, formState } = useFormContext<T>()\n const error = get(formState.errors, name)?.message as string | undefined\n\n return (\n <Controller\n name={name}\n control={control}\n render={({ field }) => (\n <EnhancedSelect\n {...props}\n value={field.value}\n onValueChange={field.onChange}\n error={error}\n />\n )}\n />\n )\n}","import { useState, useCallback, useEffect } from \"react\"\nimport { useForm, UseFormProps, UseFormReturn, FieldValues, Path } from \"react-hook-form\"\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport { z } from \"zod\"\n\ninterface UseFormWithEditStateProps<T extends FieldValues> extends UseFormProps<T> {\n schema?: z.ZodSchema<T>\n initialEditing?: boolean\n onToggleEdit?: () => void\n onSave?: (data: T) => void | Promise<void>\n onCancel?: () => void\n}\n\ninterface UseFormWithEditStateReturn<T extends FieldValues> extends UseFormReturn<T> {\n isEditing: boolean\n isLoading: boolean\n handleToggleEdit: () => void\n handleSave: () => Promise<void>\n handleCancel: () => void\n isFormValid: boolean\n isDirty: boolean\n setFieldError: (field: Path<T>, error: string) => void\n}\n\nexport const useFormWithEditState = <T extends FieldValues>({\n schema,\n initialEditing = false,\n onToggleEdit,\n onSave,\n onCancel,\n ...formProps\n}: UseFormWithEditStateProps<T>): UseFormWithEditStateReturn<T> => {\n const [localEditing, setLocalEditing] = useState(initialEditing)\n const [isLoading, setIsLoading] = useState(false)\n \n const form = useForm<T>({\n ...formProps,\n resolver: schema ? zodResolver(schema) as any : undefined,\n })\n\n const { formState, reset, setError } = form\n const { isValid, isDirty } = formState\n \n // Sync local state with prop changes\n useEffect(() => {\n setLocalEditing(initialEditing)\n }, [initialEditing])\n \n const isEditing = onToggleEdit !== undefined ? initialEditing : localEditing\n \n const handleToggleEdit = useCallback(() => {\n if (onToggleEdit) {\n onToggleEdit()\n } else {\n setLocalEditing(prev => !prev)\n }\n }, [onToggleEdit])\n \n const handleSave = useCallback(async () => {\n // Trigger validation for all fields to show errors\n const isFormValid = await form.trigger()\n \n if (!isFormValid) {\n // Form is invalid, errors are now visible to the user\n return\n }\n \n setIsLoading(true)\n \n try {\n const data = form.getValues()\n if (onSave) {\n await onSave(data)\n }\n \n // Exit edit mode after successful save\n if (onToggleEdit) {\n onToggleEdit()\n } else {\n setLocalEditing(false)\n }\n } catch (error) {\n console.error(\"Form save error:\", error)\n // Don't exit edit mode on error\n } finally {\n setIsLoading(false)\n }\n }, [form, onSave, onToggleEdit])\n \n const handleCancel = useCallback(() => {\n // Reset form to original values\n reset()\n \n if (onCancel) {\n onCancel()\n }\n \n // Exit edit mode\n if (onToggleEdit) {\n onToggleEdit()\n } else {\n setLocalEditing(false)\n }\n }, [reset, onCancel, onToggleEdit])\n\n const setFieldError = useCallback((field: Path<T>, error: string) => {\n setError(field, { type: \"manual\", message: error })\n }, [setError])\n \n return {\n ...form,\n isEditing,\n isLoading,\n handleToggleEdit,\n handleSave,\n handleCancel,\n isFormValid: isValid,\n isDirty,\n setFieldError,\n }\n}","import { z } from \"zod\"\n\nexport const resolveAlertSchema = z.object({\n action: z.string().refine((val) => [\"APPROVE\", \"DECLINE\", \"CLOSE\"].includes(val), {\n message: \"Please select an action\",\n }),\n changeToAccount: z.string().optional(),\n note: z.string().min(1, \"Note is required\").max(1000, \"Note must be less than 1000 characters\"),\n returnCode: z.string().optional(),\n}).refine((data) => {\n // If action is DECLINE, returnCode should be provided\n if (data.action === \"DECLINE\" && !data.returnCode) {\n return false\n }\n return true\n}, {\n message: \"Return code is required when declining\",\n path: [\"returnCode\"],\n})\n\nexport type ResolveAlertFormData = z.infer<typeof resolveAlertSchema>\n\nexport const RETURN_CODES = [\n { value: \"R03_NO_ACCOUNT\", label: \"R03 - No Account/Unable to Locate Account\" },\n { value: \"R01_INSUFFICIENT_FUNDS\", label: \"R01 - Insufficient Funds\" },\n { value: \"R02_ACCOUNT_CLOSED\", label: \"R02 - Account Closed\" },\n { value: \"R04_INVALID_ACCOUNT\", label: \"R04 - Invalid Account Number\" },\n { value: \"R10_UNAUTHORIZED\", label: \"R10 - Customer Advises Unauthorized\" },\n { value: \"R07_AUTHORIZATION_REVOKED\", label: \"R07 - Authorization Revoked\" },\n { value: \"R08_PAYMENT_STOPPED\", label: \"R08 - Payment Stopped\" },\n { value: \"R09_UNCOLLECTED_FUNDS\", label: \"R09 - Uncollected Funds\" },\n] as const\n","import { useState } from \"react\"\nimport { Controller } from \"react-hook-form\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from \"@/components/ui/dialog\"\nimport { Button } from \"@/components/ui/button\"\nimport { FormProvider } from \"@/components/ui/form-provider\"\nimport { FormInput } from \"@/components/ui/form-input\"\nimport { FormSelect } from \"@/components/ui/form-select\"\nimport { EnhancedTextarea } from \"@/components/ui/enhanced-textarea\"\nimport { useFormWithEditState } from \"@/hooks/useFormWithEditState\"\nimport { resolveAlertSchema, type ResolveAlertFormData, RETURN_CODES } from \"@/lib/schemas/alert-schemas\"\nimport { toast } from \"@/hooks/use-toast\"\n\ninterface ResolveAlertDialogProps {\n alertId: string\n open: boolean\n onOpenChange: (open: boolean) => void\n onResolve: (data: ResolveAlertFormData) => Promise<void>\n}\n\nexport const ResolveAlertDialog = ({ \n alertId, \n open, \n onOpenChange,\n onResolve \n}: ResolveAlertDialogProps) => {\n const form = useFormWithEditState<ResolveAlertFormData>({\n schema: resolveAlertSchema,\n defaultValues: {\n action: \"APPROVE\",\n changeToAccount: \"\",\n note: \"\",\n returnCode: \"\",\n },\n })\n\n const { handleSubmit, watch, control, formState } = form\n const action = watch(\"action\")\n\n const onSubmit = async (data: ResolveAlertFormData) => {\n try {\n await onResolve(data)\n toast({\n title: \"Alert Resolved\",\n description: `Alert #${alertId} has been ${data.action.toLowerCase()}d successfully.`,\n })\n onOpenChange(false)\n form.reset()\n } catch (error) {\n toast({\n title: \"Error\",\n description: \"Failed to resolve alert. Please try again.\",\n variant: \"destructive\",\n })\n }\n }\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent className=\"sm:max-w-[600px]\">\n <DialogHeader>\n <DialogTitle>Resolve Alert #{alertId}</DialogTitle>\n <DialogDescription>\n Select an action and provide details to resolve this alert.\n </DialogDescription>\n </DialogHeader>\n\n <FormProvider form={form}>\n <form onSubmit={handleSubmit(onSubmit)} className=\"space-y-4\">\n <FormSelect\n name=\"action\"\n label=\"Action\"\n placeholder=\"Select action\"\n options={[\n { value: \"APPROVE\", label: \"Approve\" },\n { value: \"DECLINE\", label: \"Decline\" },\n { value: \"CLOSE\", label: \"Close\" },\n ]}\n />\n\n <FormInput\n name=\"changeToAccount\"\n label=\"Change to Account (Optional)\"\n placeholder=\"Enter account number\"\n />\n\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium text-foreground\">\n Note <span className=\"text-destructive\">*</span>\n </label>\n <Controller\n name=\"note\"\n control={control}\n render={({ field }) => (\n <EnhancedTextarea\n {...field}\n placeholder=\"Enter resolution notes...\"\n rows={4}\n error={formState.errors.note?.message}\n />\n )}\n />\n </div>\n\n {action === \"DECLINE\" && (\n <FormSelect\n name=\"returnCode\"\n label=\"Return Code\"\n placeholder=\"Select return code\"\n options={RETURN_CODES.map(code => ({\n value: code.value,\n label: code.label,\n }))}\n />\n )}\n\n <DialogFooter>\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={() => {\n onOpenChange(false)\n form.reset()\n }}\n >\n Cancel\n </Button>\n <Button \n type=\"submit\" \n disabled={!formState.isValid || formState.isSubmitting}\n >\n {formState.isSubmitting ? \"Submitting...\" : \"Resolve\"}\n </Button>\n </DialogFooter>\n </form>\n </FormProvider>\n </DialogContent>\n </Dialog>\n )\n}\n","import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener(\"change\", onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n return !!isMobile\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(\n (\n { className, orientation = \"horizontal\", decorative = true, ...props },\n ref\n ) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border\",\n orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\n className\n )}\n {...props}\n />\n )\n)\nSeparator.displayName = SeparatorPrimitive.Root.displayName\n\nexport { Separator }","\"use client\"\n\nimport * as React from \"react\"\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Sheet = SheetPrimitive.Root\n\nconst SheetTrigger = SheetPrimitive.Trigger\n\nconst SheetClose = SheetPrimitive.Close\n\nconst SheetPortal = SheetPrimitive.Portal\n\nconst SheetOverlay = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Overlay\n className={cn(\n \"fixed inset-0 z-50 bg-white/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 ref={ref}\n />\n))\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName\n\nconst sheetVariants = cva(\n \"fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n {\n variants: {\n side: {\n top: \"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\n bottom:\n \"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\n left: \"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm\",\n right:\n \"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm\",\n },\n },\n defaultVariants: {\n side: \"right\",\n },\n }\n)\n\ninterface SheetContentProps\n extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\n VariantProps<typeof sheetVariants> {}\n\nconst SheetContent = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Content>,\n SheetContentProps\n>(({ side = \"right\", className, children, ...props }, ref) => (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n ref={ref}\n className={cn(sheetVariants({ side }), className)}\n {...props}\n >\n {children}\n <SheetPrimitive.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-secondary\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n))\nSheetContent.displayName = SheetPrimitive.Content.displayName\n\nconst SheetHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-2 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n)\nSheetHeader.displayName = \"SheetHeader\"\n\nconst SheetFooter = ({\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)\nSheetFooter.displayName = \"SheetFooter\"\n\nconst SheetTitle = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Title\n ref={ref}\n className={cn(\"text-lg font-semibold text-foreground\", className)}\n {...props}\n />\n))\nSheetTitle.displayName = SheetPrimitive.Title.displayName\n\nconst SheetDescription = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nSheetDescription.displayName = SheetPrimitive.Description.displayName\n\nexport {\n Sheet,\n SheetPortal,\n SheetOverlay,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}","import * as React from \"react\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst TooltipProvider = TooltipPrimitive.Provider\n\nconst Tooltip = TooltipPrimitive.Root\n\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","\"use client\"\n\nimport * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { VariantProps, cva } from \"class-variance-authority\"\nimport { PanelLeft } from \"lucide-react\"\n\nimport { useIsMobile } from \"@/hooks/use-mobile\"\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Separator } from \"@/components/ui/separator\"\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from \"@/components/ui/sheet\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"@/components/ui/tooltip\"\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar:state\"\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = \"15rem\"\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\"\nconst SIDEBAR_WIDTH_ICON = \"3rem\"\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\"\n\ntype SidebarContext = {\n state: \"expanded\" | \"collapsed\"\n open: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n isMobile: boolean\n toggleSidebar: () => void\n}\n\nconst SidebarContext = React.createContext<SidebarContext | null>(null)\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext)\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider.\")\n }\n\n return context\n}\n\nconst SidebarProvider = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n }\n>(\n (\n {\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n },\n ref\n ) => {\n const isMobile = useIsMobile()\n const [openMobile, setOpenMobile] = React.useState(false)\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen)\n const open = openProp ?? _open\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === \"function\" ? value(open) : value\n if (setOpenProp) {\n setOpenProp(openState)\n } else {\n _setOpen(openState)\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n },\n [setOpenProp, open]\n )\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile\n ? setOpenMobile((open) => !open)\n : setOpen((open) => !open)\n }, [isMobile, setOpen, setOpenMobile])\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener(\"keydown\", handleKeyDown)\n return () => window.removeEventListener(\"keydown\", handleKeyDown)\n }, [toggleSidebar])\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? \"expanded\" : \"collapsed\"\n\n const contextValue = React.useMemo<SidebarContext>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n )\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n \"group/sidebar-wrapper flex min-h-svh w-full has-[[data-variant=inset]]:bg-sidebar\",\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n )\n }\n)\nSidebarProvider.displayName = \"SidebarProvider\"\n\nconst Sidebar = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n side?: \"left\" | \"right\"\n variant?: \"sidebar\" | \"floating\" | \"inset\"\n collapsible?: \"offcanvas\" | \"icon\" | \"none\"\n }\n>(\n (\n {\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n ...props\n },\n ref\n ) => {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n if (collapsible === \"none\") {\n return (\n <div\n className={cn(\n \"flex h-full w-[--sidebar-width] flex-col bg-sidebar text-sidebar-foreground\",\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n )\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-mobile=\"true\"\n className=\"w-[--sidebar-width] bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n )\n }\n\n return (\n <div\n ref={ref}\n className=\"group peer hidden md:block text-sidebar-foreground\"\n data-state={state}\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-variant={variant}\n data-side={side}\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n className={cn(\n \"duration-200 relative h-svh w-[--sidebar-width] bg-transparent transition-[width] ease-linear\",\n \"group-data-[collapsible=offcanvas]:w-0\",\n \"group-data-[side=right]:rotate-180\",\n variant === \"floating\" || variant === \"inset\"\n ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]\"\n : \"group-data-[collapsible=icon]:w-[--sidebar-width-icon]\"\n )}\n />\n <div\n className={cn(\n \"duration-200 fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-[left,right,width] ease-linear md:flex\",\n side === \"left\"\n ? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n // Adjust the padding for floating and inset variants.\n variant === \"floating\" || variant === \"inset\"\n ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]\"\n : \"group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l\",\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n className=\"flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow\"\n >\n {children}\n </div>\n </div>\n </div>\n )\n }\n)\nSidebar.displayName = \"Sidebar\"\n\nconst SidebarTrigger = React.forwardRef<\n React.ElementRef<typeof Button>,\n React.ComponentProps<typeof Button>\n>(({ className, onClick, ...props }, ref) => {\n const { toggleSidebar } = useSidebar()\n\n return (\n <Button\n ref={ref}\n data-sidebar=\"trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"h-7 w-7\", className)}\n onClick={(event) => {\n onClick?.(event)\n toggleSidebar()\n }}\n {...props}\n >\n <PanelLeft />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n})\nSidebarTrigger.displayName = \"SidebarTrigger\"\n\nconst SidebarRail = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\">\n>(({ className, ...props }, ref) => {\n const { toggleSidebar } = useSidebar()\n\n return (\n <button\n ref={ref}\n data-sidebar=\"rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n \"absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex\",\n \"[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize\",\n \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n \"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar\",\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarRail.displayName = \"SidebarRail\"\n\nconst SidebarInset = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <main\n ref={ref}\n className={cn(\n \"relative flex min-h-svh flex-1 flex-col bg-background\",\n \"peer-data-[variant=inset]:min-h-[calc(100svh-theme(spacing.4))] md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarInset.displayName = \"SidebarInset\"\n\nconst SidebarInput = React.forwardRef<\n React.ElementRef<\"input\">,\n React.ComponentProps<\"input\">\n>(({ className, ...props }, ref) => {\n return (\n <input\n ref={ref}\n data-sidebar=\"input\"\n className={cn(\n \"flex h-8 w-full rounded-md 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 {...props}\n />\n )\n})\nSidebarInput.displayName = \"SidebarInput\"\n\nconst SidebarHeader = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"header\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n )\n})\nSidebarHeader.displayName = \"SidebarHeader\"\n\nconst SidebarFooter = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"footer\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n )\n})\nSidebarFooter.displayName = \"SidebarFooter\"\n\nconst SidebarSeparator = React.forwardRef<\n React.ElementRef<typeof Separator>,\n React.ComponentProps<typeof Separator>\n>(({ className, ...props }, ref) => {\n return (\n <Separator\n ref={ref}\n data-sidebar=\"separator\"\n className={cn(\"mx-2 w-auto bg-sidebar-border\", className)}\n {...props}\n />\n )\n})\nSidebarSeparator.displayName = \"SidebarSeparator\"\n\nconst SidebarContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"content\"\n className={cn(\n \"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarContent.displayName = \"SidebarContent\"\n\nconst SidebarGroup = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"group\"\n className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n {...props}\n />\n )\n})\nSidebarGroup.displayName = \"SidebarGroup\"\n\nconst SidebarGroupLabel = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & { asChild?: boolean }\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"div\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-label\"\n className={cn(\n \"duration-200 flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opa] ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n \"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarGroupLabel.displayName = \"SidebarGroupLabel\"\n\nconst SidebarGroupAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & { asChild?: boolean }\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-action\"\n className={cn(\n \"absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 after:md:hidden\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarGroupAction.displayName = \"SidebarGroupAction\"\n\nconst SidebarGroupContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"group-content\"\n className={cn(\"w-full text-sm\", className)}\n {...props}\n />\n )\n})\nSidebarGroupContent.displayName = \"SidebarGroupContent\"\n\nconst SidebarMenu = React.forwardRef<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => {\n return (\n <ul\n ref={ref}\n data-sidebar=\"menu\"\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n {...props}\n />\n )\n})\nSidebarMenu.displayName = \"SidebarMenu\"\n\nconst SidebarMenuItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\">\n>(({ className, ...props }, ref) => {\n return (\n <li\n ref={ref}\n data-sidebar=\"menu-item\"\n className={cn(\"group/menu-item relative\", className)}\n {...props}\n />\n )\n})\nSidebarMenuItem.displayName = \"SidebarMenuItem\"\n\nconst sidebarMenuButtonVariants = cva(\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md pl-4 pr-2 py-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n outline:\n \"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\",\n },\n size: {\n default: \"h-8 text-sm\",\n sm: \"h-7 text-xs\",\n lg: \"h-12 text-sm group-data-[collapsible=icon]:!size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nconst SidebarMenuButton = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & {\n asChild?: boolean\n isActive?: boolean\n tooltip?: string | React.ComponentProps<typeof TooltipContent>\n } & VariantProps<typeof sidebarMenuButtonVariants>\n>(\n (\n {\n asChild = false,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"button\"\n const { isMobile, state } = useSidebar()\n\n const button = (\n <Comp\n ref={ref}\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n )\n\n if (!tooltip) {\n return button\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip,\n }\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== \"collapsed\" || isMobile}\n {...tooltip}\n />\n </Tooltip>\n )\n }\n)\nSidebarMenuButton.displayName = \"SidebarMenuButton\"\n\nconst SidebarMenuAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & {\n asChild?: boolean\n showOnHover?: boolean\n }\n>(({ className, asChild = false, showOnHover = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-action\"\n className={cn(\n \"absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 after:md:hidden\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n showOnHover &&\n \"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarMenuAction.displayName = \"SidebarMenuAction\"\n\nconst SidebarMenuBadge = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"menu-badge\"\n className={cn(\n \"absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground select-none pointer-events-none\",\n \"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarMenuBadge.displayName = \"SidebarMenuBadge\"\n\nconst SidebarMenuSkeleton = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n showIcon?: boolean\n }\n>(({ className, showIcon = false, ...props }, ref) => {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`\n }, [])\n\n return (\n <div\n ref={ref}\n data-sidebar=\"menu-skeleton\"\n className={cn(\"rounded-md h-8 flex gap-2 px-2 items-center\", className)}\n {...props}\n >\n {showIcon && (\n <div className=\"flex size-4 rounded-sm bg-sidebar-primary/10\" />\n )}\n <div\n className=\"h-4 flex-1 max-w-[--skeleton-width] rounded-sm bg-sidebar-primary/10\"\n style={\n {\n \"--skeleton-width\": width,\n } as React.CSSProperties\n }\n />\n </div>\n )\n})\nSidebarMenuSkeleton.displayName = \"SidebarMenuSkeleton\"\n\nconst SidebarMenuSub = React.forwardRef<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => {\n return (\n <ul\n ref={ref}\n data-sidebar=\"menu-sub\"\n className={cn(\n \"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 px-2.5 py-0.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarMenuSub.displayName = \"SidebarMenuSub\"\n\nconst SidebarMenuSubItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\">\n>(({ ...props }, ref) => {\n return <li ref={ref} {...props} />\n})\nSidebarMenuSubItem.displayName = \"SidebarMenuSubItem\"\n\nconst SidebarMenuSubButton = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentProps<\"a\"> & {\n asChild?: boolean\n size?: \"sm\" | \"md\"\n isActive?: boolean\n }\n>(({ asChild = false, size = \"md\", isActive, className, ...props }, ref) => {\n const Comp = asChild ? Slot : \"a\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n \"flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md pl-4 pr-2 py-1 text-sidebar-foreground outline-none ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-foreground/50\",\n \"data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground\",\n size === \"sm\" && \"text-xs\",\n size === \"md\" && \"text-sm\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarMenuSubButton.displayName = \"SidebarMenuSubButton\"\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n}\n","import { \n LayoutDashboard, Bell, Briefcase, ArrowLeftRight, FileText, Users, Building2, \n CreditCard, Shield, RefreshCw, DollarSign, Zap, Settings, User, Key,\n Upload, AlertCircle, TrendingUp, Box, BarChart3, FileCheck, Receipt,\n Landmark, Search, Repeat, CheckCircle, ChevronRight\n} from \"lucide-react\"\nimport { NavLink, useLocation } from \"react-router-dom\"\nimport { useState } from \"react\"\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from \"@radix-ui/react-collapsible\"\nimport braidLogo from \"@/assets/braid-logo.png\"\n\nimport {\n Sidebar,\n SidebarContent,\n SidebarGroup,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuBadge,\n SidebarMenuSub,\n SidebarMenuSubItem,\n SidebarMenuSubButton,\n SidebarTrigger,\n useSidebar,\n} from \"@/components/ui/sidebar\"\n\nconst navigationItems = [\n {\n title: \"Dashboard\",\n url: \"/dashboard\",\n icon: LayoutDashboard,\n },\n {\n title: \"Alerts and Cases\",\n icon: Bell,\n items: [\n {\n title: \"Alerts\",\n url: \"/alerts\",\n icon: Bell,\n badge: \"99+\"\n },\n {\n title: \"Cases\",\n url: \"/cases\",\n icon: Briefcase,\n },\n ],\n },\n {\n title: \"Transactions\",\n icon: ArrowLeftRight,\n items: [\n {\n title: \"Transaction History\",\n url: \"/transactions/history\",\n icon: FileText,\n },\n {\n title: \"Transaction Review\",\n url: \"/transactions/review\",\n icon: FileCheck,\n },\n {\n title: \"New Transaction\",\n url: \"/transactions/new\",\n icon: Receipt,\n },\n ],\n },\n {\n title: \"Statement\",\n url: \"/statement\",\n icon: FileText,\n },\n {\n title: \"Individuals\",\n url: \"/individuals\",\n icon: Users,\n },\n {\n title: \"Businesses\",\n url: \"/business\",\n icon: Building2,\n },\n {\n title: \"Counterparties\",\n url: \"/counterparty\",\n icon: Briefcase,\n },\n {\n title: \"Accounts\",\n url: \"/accounts\",\n icon: CreditCard,\n },\n {\n title: \"Compliance\",\n icon: Shield,\n items: [\n {\n title: \"OFAC\",\n url: \"/compliance/ofac\",\n icon: Shield,\n },\n {\n title: \"314a\",\n url: \"/compliance/314a\",\n icon: FileText,\n },\n {\n title: \"Velocity Limits\",\n url: \"/compliance/velocity\",\n icon: TrendingUp,\n },\n ],\n },\n {\n title: \"Recon\",\n icon: RefreshCw,\n items: [\n {\n title: \"File Upload\",\n url: \"/recon/upload\",\n icon: Upload,\n },\n {\n title: \"Exception Review\",\n url: \"/recon/exceptions\",\n icon: AlertCircle,\n },\n ],\n },\n {\n title: \"ACH\",\n icon: Repeat,\n items: [\n {\n title: \"Processing\",\n url: \"/ach/processing\",\n icon: FileText,\n },\n {\n title: \"Settlement\",\n url: \"/ach/settlement\",\n icon: Landmark,\n },\n {\n title: \"Return\",\n url: \"/ach/return\",\n icon: Search,\n },\n {\n title: \"NOC\",\n url: \"/ach/noc\",\n icon: RefreshCw,\n },\n ],\n },\n {\n title: \"Wire\",\n icon: Zap,\n items: [\n {\n title: \"Processing\",\n url: \"/wire/processing\",\n icon: FileText,\n },\n {\n title: \"Settlement\",\n url: \"/wire/settlement\",\n icon: Landmark,\n },\n ],\n },\n {\n title: \"Configurations\",\n icon: Settings,\n items: [\n {\n title: \"Developers\",\n url: \"/configurations/developers\",\n icon: Box,\n },\n {\n title: \"Programs\",\n url: \"/configurations/programs\",\n icon: LayoutDashboard,\n },\n {\n title: \"Products\",\n url: \"/configurations/products\",\n icon: FileText,\n },\n ],\n },\n {\n title: \"ClearSight\",\n url: \"/clearsight\",\n icon: BarChart3,\n },\n {\n title: \"Settings\",\n icon: Settings,\n items: [\n {\n title: \"User Management\",\n url: \"/settings/users\",\n icon: Users,\n },\n {\n title: \"API Key\",\n url: \"/settings/api-key\",\n icon: Key,\n },\n ],\n },\n]\n\nexport function AppSidebar() {\n const { state } = useSidebar()\n const location = useLocation()\n const currentPath = location.pathname\n \n // Track which menu items are open\n const [openItems, setOpenItems] = useState<string[]>([])\n\n const isActive = (path: string) => currentPath === path\n \n const toggleItem = (title: string) => {\n setOpenItems(prev => \n prev.includes(title) \n ? prev.filter(item => item !== title)\n : [...prev, title]\n )\n }\n\n return (\n <Sidebar collapsible=\"icon\">\n <SidebarHeader className=\"border-b border-sidebar-border\">\n <div className=\"flex items-center justify-between gap-2 px-4 py-6\">\n {state !== \"collapsed\" ? (\n <img src={braidLogo} alt=\"Braid\" className=\"h-8\" />\n ) : (\n <img src={braidLogo} alt=\"Braid\" className=\"h-6\" />\n )}\n <SidebarTrigger />\n </div>\n </SidebarHeader>\n\n <SidebarContent>\n <SidebarMenu>\n {navigationItems.map((item) => {\n // Check if it's a group with sub-items\n if (item.items) {\n const isOpen = openItems.includes(item.title)\n \n return (\n <Collapsible\n key={item.title}\n open={isOpen}\n onOpenChange={() => toggleItem(item.title)}\n >\n <SidebarMenuItem>\n <CollapsibleTrigger asChild>\n <SidebarMenuButton\n tooltip={state === \"collapsed\" ? item.title : undefined}\n >\n <item.icon className=\"w-4 h-4\" />\n <span>{item.title}</span>\n <ChevronRight \n className={`ml-auto h-4 w-4 transition-transform ${isOpen ? 'rotate-90' : ''}`}\n />\n </SidebarMenuButton>\n </CollapsibleTrigger>\n <CollapsibleContent>\n <SidebarMenuSub>\n {item.items.map((subItem) => (\n <SidebarMenuSubItem key={subItem.title}>\n <SidebarMenuSubButton \n asChild\n isActive={isActive(subItem.url)}\n >\n <NavLink to={subItem.url}>\n <subItem.icon className=\"w-4 h-4\" />\n <span>{subItem.title}</span>\n {subItem.badge && (\n <SidebarMenuBadge className=\"ml-auto\">\n {subItem.badge}\n </SidebarMenuBadge>\n )}\n </NavLink>\n </SidebarMenuSubButton>\n </SidebarMenuSubItem>\n ))}\n </SidebarMenuSub>\n </CollapsibleContent>\n </SidebarMenuItem>\n </Collapsible>\n )\n }\n\n // Single item without sub-items\n return (\n <SidebarMenuItem key={item.title}>\n <SidebarMenuButton \n asChild\n isActive={isActive(item.url!)}\n tooltip={state === \"collapsed\" ? item.title : undefined}\n >\n <NavLink to={item.url!}>\n <item.icon className=\"w-4 h-4\" />\n <span>{item.title}</span>\n </NavLink>\n </SidebarMenuButton>\n </SidebarMenuItem>\n )\n })}\n </SidebarMenu>\n </SidebarContent>\n </Sidebar>\n )\n}","import { ReactNode } from \"react\"\n\ninterface MainLayoutProps {\n children: ReactNode\n}\n\nexport const MainLayout = ({ children }: MainLayoutProps) => {\n return (\n <main className=\"flex-1 h-full overflow-y-auto\">\n {children}\n </main>\n )\n}\n","import { useState, useCallback, useEffect } from \"react\"\n\ninterface UseEditStateProps {\n initialEditing?: boolean\n onToggleEdit?: () => void\n onSave?: () => void | Promise<void>\n onCancel?: () => void\n}\n\nexport const useEditState = ({ initialEditing = false, onToggleEdit, onSave, onCancel }: UseEditStateProps) => {\n const [localEditing, setLocalEditing] = useState(initialEditing)\n const [isLoading, setIsLoading] = useState(false)\n \n // Sync local state with prop changes\n useEffect(() => {\n setLocalEditing(initialEditing)\n }, [initialEditing])\n \n const isEditing = onToggleEdit !== undefined ? initialEditing : localEditing\n \n const handleToggleEdit = useCallback(() => {\n if (onToggleEdit) {\n onToggleEdit()\n } else {\n setLocalEditing(prev => !prev)\n }\n }, [onToggleEdit])\n \n const handleSave = useCallback(async () => {\n setIsLoading(true)\n \n try {\n if (onSave) {\n await onSave()\n }\n \n // Exit edit mode after successful save\n if (onToggleEdit) {\n onToggleEdit()\n } else {\n setLocalEditing(false)\n }\n } catch (error) {\n console.error(\"Save error:\", error)\n // Don't exit edit mode on error\n } finally {\n setIsLoading(false)\n }\n }, [onSave, onToggleEdit])\n \n const handleCancel = useCallback(() => {\n if (onCancel) {\n onCancel()\n }\n \n if (onToggleEdit) {\n onToggleEdit()\n } else {\n setLocalEditing(false)\n }\n }, [onCancel, onToggleEdit])\n \n return {\n isEditing,\n isLoading,\n handleToggleEdit,\n handleSave,\n handleCancel\n }\n}","import * as React from \"react\"\nimport { FormCard, type FormCardProps } from \"@/components/ui/form-card\"\nimport { Button } from \"@/components/ui/button\"\nimport { Edit } from \"lucide-react\"\nimport { useEditState } from \"@/hooks/useEditState\"\nimport { cn } from \"@/lib/utils\"\n\ninterface EditableFormCardProps extends Omit<FormCardProps, 'headerActions' | 'children'> {\n title: string\n description?: string\n children?: React.ReactNode\n editContent: React.ReactNode\n viewContent: React.ReactNode\n isEditing?: boolean\n onToggleEdit?: () => void\n hideActions?: boolean\n onSave?: () => void | Promise<void>\n onCancel?: () => void\n className?: string\n isFormValid?: boolean\n isDirty?: boolean\n isSubmitting?: boolean\n}\n\nexport const EditableFormCard = React.forwardRef<HTMLDivElement, EditableFormCardProps>(\n ({ \n title, \n description, \n editContent, \n viewContent, \n isEditing, \n onToggleEdit, \n hideActions = false,\n onSave,\n onCancel,\n className,\n variant = \"subtle\",\n isFormValid = true,\n isDirty = false,\n isSubmitting = false,\n ...props \n }, ref) => {\n const { isEditing: currentlyEditing, handleToggleEdit, handleCancel } = useEditState({\n initialEditing: isEditing ?? false,\n onToggleEdit\n })\n\n const handleSaveAction = async () => {\n if (onSave) {\n await onSave()\n }\n }\n\n const handleCancelAction = () => {\n if (onCancel) {\n onCancel()\n } else {\n handleCancel()\n }\n }\n\n return (\n <FormCard \n ref={ref}\n title={title}\n description={description}\n variant={variant}\n className={className}\n headerActions={\n !hideActions ? (\n <div className=\"flex items-center gap-2\">\n {currentlyEditing ? (\n <>\n <Button variant=\"outline\" size=\"sm\" onClick={handleCancelAction}>\n Cancel\n </Button>\n <Button \n size=\"sm\" \n onClick={handleSaveAction}\n disabled={!isFormValid || isSubmitting}\n >\n {isSubmitting ? \"Saving...\" : \"Save\"}\n </Button>\n </>\n ) : (\n <Button \n variant=\"ghost\" \n size=\"icon\" \n onClick={handleToggleEdit} \n className=\"text-primary hover:text-primary/80 hover:bg-primary/10\"\n >\n <Edit className=\"h-4 w-4\" />\n </Button>\n )}\n </div>\n ) : undefined\n }\n {...props}\n >\n {currentlyEditing ? editContent : viewContent}\n </FormCard>\n )\n }\n)\n\nEditableFormCard.displayName = \"EditableFormCard\"","import { z } from \"zod\"\n\nexport const counterpartyBasicInfoSchema = z.object({\n name: z.string().min(1, \"Name is required\"),\n type: z.enum([\"BUSINESS\", \"INDIVIDUAL\"] as const),\n status: z.string().min(1, \"Status is required\"),\n description: z.string().optional(),\n})\n\nexport const addressSchema = z.object({\n line1: z.string().optional(), // Street address\n line2: z.string().optional(), // Apartment, suite, or floor\n city: z.string().optional(),\n state: z.string().optional(),\n postalCode: z.string().optional(),\n countryCode: z.string().min(1, \"Country code is required\"), // Required field\n type: z.string().optional(), // Address type (e.g., \"MAILING\")\n})\n\nexport const counterpartyDetailSchema = z.object({\n email: z.string().email(\"Invalid email format\").optional().or(z.literal(\"\")),\n phone: z.string().optional(),\n dateOfBirth: z.string().optional(),\n idNumber: z.string().optional(),\n idType: z.string().optional(),\n idValue: z.string().optional(),\n address: addressSchema.optional(),\n})\n\nexport const counterpartyProfileSchema = z.object({\n legalName: z.string().min(1, \"Legal name is required\"),\n dbaName: z.string().optional(),\n businessType: z.string().min(1, \"Business type is required\"),\n taxId: z.string().min(1, \"Tax ID is required\"),\n businessPhone: z.string().min(1, \"Business phone is required\"),\n businessEmail: z.string().email(\"Invalid email format\"),\n website: z.string().url(\"Invalid URL format\").optional().or(z.literal(\"\")),\n})\n\n\nexport const counterpartyRecordsSchema = z.object({\n id: z.string(),\n createdBy: z.string(),\n createdAt: z.string(),\n updatedBy: z.string(),\n updatedAt: z.string(),\n lastOFACDate: z.string(),\n lastOFACStatus: z.string(),\n})\n\nexport const counterpartyStatusSchema = z.object({\n status: z.enum([\"ACTIVE\", \"INACTIVE\", \"PENDING\", \"SUSPENDED\"]),\n cipStatus: z.enum([\"verified\", \"pending\", \"not_started\"]),\n createdAt: z.string(),\n updatedAt: z.string(),\n lastOFACCheck: z.string().optional(),\n})\n\nexport type CounterpartyBasicInfo = z.infer<typeof counterpartyBasicInfoSchema>\nexport type CounterpartyProfile = z.infer<typeof counterpartyProfileSchema>\nexport type CounterpartyDetail = z.infer<typeof counterpartyDetailSchema>\nexport type Address = z.infer<typeof addressSchema>\nexport type CounterpartyRecords = z.infer<typeof counterpartyRecordsSchema>\nexport type CounterpartyStatus = z.infer<typeof counterpartyStatusSchema>","import { z } from \"zod\"\n\nexport const achBasicInfoSchema = z.object({\n counterpartyName: z.string().min(1, \"Counterparty name is required\"),\n shortName: z.string().min(1, \"Short name is required\"),\n type: z.string().min(1, \"Type is required\"),\n description: z.string().optional(),\n})\n\nexport const achBankDetailsSchema = z.object({\n gatewayRoutingNumber: z.string().min(9, \"Gateway routing number must be at least 9 digits\").max(9, \"Gateway routing number must be 9 digits\"),\n rdfiNumberQualifier: z.string().min(1, \"RDFI number qualifier is required\"),\n})\n\nexport const achTransferSchema = z.object({\n basicInfo: achBasicInfoSchema,\n bankDetails: achBankDetailsSchema,\n})\n\nexport const bankingDetailsSchema = z.object({\n primaryBank: z.string().min(1, \"Primary bank is required\"),\n accountNumber: z.string().min(1, \"Account number is required\"),\n routingNumber: z.string().min(9, \"Routing number must be at least 9 digits\").max(9, \"Routing number must be 9 digits\"),\n accountType: z.string().min(1, \"Account type is required\"),\n})\n\nexport type ACHBasicInfo = z.infer<typeof achBasicInfoSchema>\nexport type ACHBankDetails = z.infer<typeof achBankDetailsSchema>\nexport type ACHTransfer = z.infer<typeof achTransferSchema>\nexport type BankingDetails = z.infer<typeof bankingDetailsSchema>","import { z } from \"zod\"\nimport { addressSchema } from \"./counterparty-schemas\"\n\nexport const wireBasicInfoSchema = z.object({\n counterpartyName: z.string().min(1, \"Counterparty name is required\"),\n shortName: z.string().min(1, \"Short name is required\"),\n type: z.string().min(1, \"Type is required\"),\n description: z.string().optional(),\n})\n\nexport const beneficiarySchema = z.object({\n name: z.string().min(1, \"Beneficiary name is required\"),\n accountNumber: z.string().min(1, \"Account number is required\"),\n address: addressSchema,\n})\n\nexport const originatorFISchema = z.object({\n accountNumber: z.string().min(1, \"Account number is required\"),\n name: z.string().min(1, \"FI name is required\"),\n idType: z.string().min(1, \"ID type is required\"),\n idNumber: z.string().min(1, \"ID number is required\"),\n address: addressSchema,\n})\n\nexport const intermediaryFISchema = z.object({\n accountNumber: z.string().optional(),\n name: z.string().optional(),\n idType: z.string().optional(),\n idNumber: z.string().optional(),\n address: addressSchema.optional(),\n})\n\nexport const wireTransferSchema = z.object({\n basicInfo: wireBasicInfoSchema,\n beneficiary: beneficiarySchema,\n originatorFI: originatorFISchema,\n intermediaryFI: intermediaryFISchema.optional(),\n})\n\nexport type WireBasicInfo = z.infer<typeof wireBasicInfoSchema>\nexport type Beneficiary = z.infer<typeof beneficiarySchema>\nexport type OriginatorFI = z.infer<typeof originatorFISchema>\nexport type IntermediaryFI = z.infer<typeof intermediaryFISchema>\nexport type WireTransfer = z.infer<typeof wireTransferSchema>","import { z } from \"zod\"\nimport { addressSchema } from \"./counterparty-schemas\"\n\nexport const businessProfileSchema = z.object({\n // All fields optional for flexible updates\n name: z.string().optional(),\n productId: z.number().optional(),\n businessIdType: z.string().optional(),\n idNumber: z.string().optional(),\n dba: z.string().optional(),\n businessEntityType: z.string().optional(),\n incorporationState: z.string().optional(),\n formationDate: z.string().optional(),\n website: z.string().optional(),\n achCompanyId: z.string().optional(),\n mcc: z.string().optional(),\n naics: z.string().optional(),\n mobilePhone: z.string().optional(),\n contactPersonFirstName: z.string().optional(),\n contactPersonLastName: z.string().optional(),\n contactPersonEmail: z.string().optional(),\n contactPersonPhone: z.string().optional(),\n address: addressSchema.optional(),\n submittedBy: z\n .object({\n contactPersonEmail: z.string().optional(),\n contactPersonFirstName: z.string().optional(),\n contactPersonLastName: z.string().optional(),\n contactPersonPhone: z.string().optional(),\n })\n .optional(),\n})\n\nexport const businessStatusSchema = z.object({\n status: z.string().min(1, \"Status is required\"),\n cipStatus: z.string().min(1, \"CIP status is required\"),\n createdDate: z.string(),\n updatedDate: z.string(),\n lastOFACDate: z.string(),\n lastOFACStatus: z.string(),\n})\n\nexport const businessRecordsSchema = z.object({\n id: z.string(),\n createdBy: z.string(),\n createdAt: z.string(),\n updatedBy: z.string(),\n updatedAt: z.string(),\n lastOFACDate: z.string(),\n lastOFACStatus: z.string(),\n})\n\nexport type BusinessProfile = z.infer<typeof businessProfileSchema>\nexport type BusinessStatus = z.infer<typeof businessStatusSchema>\nexport type BusinessRecords = z.infer<typeof businessRecordsSchema>","import { BusinessProfile } from \"@/lib/schemas/business-schemas\"\n\nexport interface BusinessStatus {\n operationalStatus: string\n complianceStatus: string\n lastReview: string\n nextReview: string\n riskLevel: string\n}\n\nexport interface ContactInfo {\n primaryContact: string\n email: string\n phone: string\n alternateContact?: string\n alternateEmail?: string\n alternatePhone?: string\n}\n\nexport const defaultBusinessProfile: BusinessProfile = {\n name: \"Acme Corporation\",\n productId: 1,\n businessIdType: \"EIN\",\n idNumber: \"12-3456789\",\n dba: \"ACME Tech\",\n businessEntityType: \"CORPORATION\",\n incorporationState: \"Delaware\",\n formationDate: \"2020-01-15\",\n website: \"https://acme.com\",\n mcc: \"1234\",\n naics: \"123456\",\n mobilePhone: \"+1 (555) 234-5678\",\n achCompanyId: \"1234567890\",\n contactPersonFirstName: \"John\",\n contactPersonLastName: \"Smith\",\n contactPersonEmail: \"contact@acme.com\",\n contactPersonPhone: \"+1 (555) 123-4567\",\n address: {\n line1: \"123 Business Avenue\",\n line2: \"Suite 100\",\n city: \"New York\",\n state: \"NY\",\n postalCode: \"10001\",\n countryCode: \"US\"\n }\n}\n\nexport const defaultBusinessStatus: BusinessStatus = {\n operationalStatus: \"active\",\n complianceStatus: \"compliant\",\n lastReview: \"2024-01-15\",\n nextReview: \"2024-07-15\",\n riskLevel: \"low\"\n}\n\nexport const defaultContactInfo: ContactInfo = {\n primaryContact: \"John Smith\",\n email: \"john.smith@acme.com\",\n phone: \"+1 (555) 123-4567\",\n alternateContact: \"Jane Doe\",\n alternateEmail: \"jane.doe@acme.com\",\n alternatePhone: \"+1 (555) 987-6543\"\n}","import { useState } from \"react\"\nimport { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { FormProvider } from \"@/components/ui/form-provider\"\nimport { FormInput } from \"@/components/ui/form-input\"\nimport { FormSelect } from \"@/components/ui/form-select\"\nimport { useFormWithEditState } from \"@/hooks/useFormWithEditState\"\nimport { businessProfileSchema, type BusinessProfile } from \"@/lib/schemas\"\nimport { defaultBusinessProfile } from \"@/lib/mock-data/business-data\"\nimport { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription } from \"@/components/ui/dialog\"\nimport { JsonViewer } from \"@/components/ui/json-viewer\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { IdentityVerification } from \"@/lib/mock-data/identity-verification-data\"\nimport { Eye, EyeOff, Loader2 } from \"lucide-react\"\n\ninterface SelectOption {\n value: string\n label: string\n}\n\ninterface BusinessProfileCardProps {\n data?: Partial<BusinessProfile>\n identityVerification?: IdentityVerification\n onDataChange?: (data: BusinessProfile) => void\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n hideActions?: boolean\n onProductIdClick?: (productId: number) => void\n onRevealIdNumber?: () => Promise<string>\n isIdNumberRevealed?: boolean\n onToggleIdNumberVisibility?: () => void\n isLoadingIdNumber?: boolean\n revealedIdNumber?: string | null\n businessEntityTypeOptions?: SelectOption[]\n}\n\nexport const BusinessProfileCard = ({ \n data,\n identityVerification,\n onDataChange, \n isEditing, \n onToggleEdit, \n className, \n hideActions,\n onProductIdClick,\n onRevealIdNumber,\n isIdNumberRevealed,\n onToggleIdNumberVisibility,\n isLoadingIdNumber,\n revealedIdNumber,\n businessEntityTypeOptions = []\n}: BusinessProfileCardProps) => {\n const [showResultDialog, setShowResultDialog] = useState(false)\n \n const form = useFormWithEditState<BusinessProfile>({\n schema: businessProfileSchema,\n defaultValues: { ...defaultBusinessProfile, ...data },\n initialEditing: isEditing,\n onToggleEdit,\n onSave: onDataChange,\n })\n\n const editContent = (\n <FormProvider form={form}>\n <div className=\"space-y-4\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <FormInput\n name=\"name\"\n label=\"Business Name\"\n placeholder=\"Enter business name\"\n required\n />\n \n <FormInput\n name=\"dba\"\n label=\"DBA Name\"\n placeholder=\"Enter doing business as name\"\n />\n \n <FormSelect\n name=\"businessEntityType\"\n label=\"Business Entity Type\"\n placeholder=\"Select business type\"\n options={businessEntityTypeOptions}\n />\n \n <FormInput\n name=\"idNumber\"\n label=\"ID Number\"\n placeholder=\"Enter ID number\"\n required\n />\n\n <FormInput\n name=\"formationDate\"\n label=\"Formation Date\"\n type=\"date\"\n placeholder=\"Enter formation date\"\n />\n\n <FormSelect\n name=\"businessIdType\"\n label=\"ID Type\"\n placeholder=\"Select ID type\"\n options={[\n { value: \"EIN\", label: \"EIN\" },\n { value: \"SSN\", label: \"SSN\" },\n { value: \"TIN\", label: \"TIN\" },\n { value: \"OTHER_ID\", label: \"Other ID\" }\n ]}\n />\n\n <FormInput\n name=\"incorporationState\"\n label=\"Incorporation State\"\n placeholder=\"Enter incorporation state\"\n />\n \n <FormInput\n name=\"website\"\n label=\"Website\"\n placeholder=\"Enter website URL\"\n />\n </div>\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <FormInput\n name=\"mobilePhone\"\n label=\"Business Phone\"\n placeholder=\"Enter business phone\"\n />\n </div>\n\n <div className=\"grid grid-cols-1 gap-4\">\n <FormInput\n name=\"address.line1\"\n label=\"Street Address\"\n placeholder=\"Enter street address\"\n />\n \n <FormInput\n name=\"address.line2\"\n label=\"Apartment, suite, or floor\"\n placeholder=\"Enter apartment, suite, or floor\"\n />\n </div>\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <FormInput\n name=\"address.city\"\n label=\"City\"\n placeholder=\"Enter city\"\n />\n \n <FormInput\n name=\"address.state\"\n label=\"State\"\n placeholder=\"Enter state\"\n />\n \n <FormInput\n name=\"address.postalCode\"\n label=\"Postal Code\"\n placeholder=\"Enter postal code\"\n />\n \n <FormInput\n name=\"address.countryCode\"\n label=\"Country Code\"\n placeholder=\"e.g., US\"\n />\n </div>\n\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <FormInput\n name=\"mcc\"\n label=\"MCC\"\n placeholder=\"4-digit code\"\n hint=\"Merchant Category Code\"\n />\n \n <FormInput\n name=\"naics\"\n label=\"NAICS\"\n placeholder=\"6-digit code\"\n hint=\"North American Industry Classification System\"\n />\n </div>\n\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <FormInput\n name=\"achCompanyId\"\n label=\"ACH Company ID\"\n placeholder=\"10-digit company ID\"\n />\n \n <FormInput\n name=\"productId\"\n label=\"Product ID\"\n type=\"number\"\n placeholder=\"Product ID\"\n disabled\n />\n </div>\n\n <h4 className=\"text-sm font-medium text-muted-foreground mt-6\">Contact Person</h4>\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <FormInput\n name=\"contactPersonFirstName\"\n label=\"First Name\"\n placeholder=\"Enter first name\"\n />\n \n <FormInput\n name=\"contactPersonLastName\"\n label=\"Last Name\"\n placeholder=\"Enter last name\"\n />\n \n <FormInput\n name=\"contactPersonEmail\"\n label=\"Email\"\n type=\"email\"\n placeholder=\"Enter email\"\n />\n \n <FormInput\n name=\"contactPersonPhone\"\n label=\"Phone Number\"\n placeholder=\"Enter phone number\"\n />\n </div>\n </div>\n </FormProvider>\n )\n\n const formValues = form.watch()\n const kycBy = identityVerification?.isDeveloperInitiated ? \"Fintech\" : \"Bank\"\n \n const viewContent = (\n <>\n <div className=\"space-y-3\">\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Business Name\" value={formValues?.name || \"-\"} layout=\"horizontal\" />\n <InfoField label=\"DBA Name\" value={formValues?.dba || \"-\"} layout=\"horizontal\" />\n </div>\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Business Entity Type\" value={formValues?.businessEntityType || \"-\"} layout=\"horizontal\" />\n <InfoField \n label=\"ID Number\" \n value={\n onToggleIdNumberVisibility ? (\n <div className=\"flex items-center gap-2\">\n {isLoadingIdNumber ? (\n <Loader2 className=\"h-4 w-4 animate-spin text-muted-foreground\" />\n ) : (\n <span>{isIdNumberRevealed && revealedIdNumber ? revealedIdNumber : \"••••••••••\"}</span>\n )}\n <button\n type=\"button\"\n onClick={onToggleIdNumberVisibility}\n className=\"text-muted-foreground hover:text-foreground transition-colors\"\n disabled={isLoadingIdNumber}\n >\n {isIdNumberRevealed ? (\n <Eye className=\"h-4 w-4\" />\n ) : (\n <EyeOff className=\"h-4 w-4\" />\n )}\n </button>\n </div>\n ) : (\n formValues?.idNumber || \"-\"\n )\n } \n layout=\"horizontal\" \n />\n </div>\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Formation Date\" value={formValues?.formationDate || \"-\"} layout=\"horizontal\" />\n <InfoField label=\"ID Type\" value={formValues?.businessIdType || \"-\"} layout=\"horizontal\" />\n </div>\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Incorporation State\" value={formValues?.incorporationState || \"-\"} layout=\"horizontal\" />\n <InfoField label=\"Website\" value={formValues?.website || \"-\"} layout=\"horizontal\" />\n </div>\n\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Business Phone\" value={formValues?.mobilePhone || \"-\"} layout=\"horizontal\" />\n </div>\n\n <InfoField\n label=\"Address\" \n value={\n formValues?.address \n ? (() => {\n const parts = []\n if (formValues.address.line1) parts.push(formValues.address.line1)\n if (formValues.address.line2) parts.push(formValues.address.line2)\n \n const cityStateZip = [\n formValues.address.city,\n formValues.address.state,\n formValues.address.postalCode\n ].filter(Boolean).join(' ')\n \n if (cityStateZip) parts.push(cityStateZip)\n if (formValues.address.countryCode) parts.push(formValues.address.countryCode)\n \n return parts.length > 0 ? parts.join(', ') : '-'\n })()\n : \"-\"\n } \n layout=\"horizontal\" \n />\n\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"MCC\" value={formValues?.mcc || \"-\"} layout=\"horizontal\" />\n <InfoField label=\"NAICS\" value={formValues?.naics || \"-\"} layout=\"horizontal\" />\n </div>\n\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"ACH Company ID\" value={formValues?.achCompanyId || \"-\"} layout=\"horizontal\" />\n <InfoField \n label=\"Product ID\" \n value={\n formValues?.productId && onProductIdClick ? (\n <button\n type=\"button\"\n onClick={() => onProductIdClick(formValues.productId)}\n className=\"text-primary hover:underline font-medium\"\n >\n {formValues.productId}\n </button>\n ) : (\n formValues?.productId?.toString() || \"-\"\n )\n } \n layout=\"horizontal\" \n />\n </div>\n\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField \n label=\"KYC by\" \n value={identityVerification ? <Badge variant={identityVerification.isDeveloperInitiated ? \"business\" : \"government\"}>{kycBy}</Badge> : \"-\"} \n layout=\"horizontal\" \n />\n <InfoField \n label=\"Provider\" \n value={\n identityVerification ? (\n <button \n onClick={() => setShowResultDialog(true)}\n className=\"text-primary hover:underline font-medium\"\n >\n {identityVerification.provider}\n </button>\n ) : \"-\"\n } \n layout=\"horizontal\" \n />\n </div>\n\n <h4 className=\"text-sm font-medium text-muted-foreground mt-6\">Contact Person</h4>\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"First Name\" value={formValues?.contactPersonFirstName || \"-\"} layout=\"horizontal\" />\n <InfoField label=\"Last Name\" value={formValues?.contactPersonLastName || \"-\"} layout=\"horizontal\" />\n </div>\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Email\" value={formValues?.contactPersonEmail || \"-\"} layout=\"horizontal\" />\n <InfoField label=\"Phone Number\" value={formValues?.contactPersonPhone || \"-\"} layout=\"horizontal\" />\n </div>\n </div>\n\n <Dialog open={showResultDialog} onOpenChange={setShowResultDialog}>\n <DialogContent className=\"max-w-3xl max-h-[80vh] overflow-y-auto\">\n <DialogHeader>\n <DialogTitle>Provider Result - {identityVerification?.provider || \"-\"}</DialogTitle>\n <DialogDescription>\n KYC verification result from the provider\n </DialogDescription>\n </DialogHeader>\n <JsonViewer data={identityVerification?.result || {}} />\n </DialogContent>\n </Dialog>\n </>\n )\n\n return (\n <EditableFormCard\n title=\"Business Profile\"\n variant=\"subtle\"\n className={className}\n isEditing={form.isEditing}\n onToggleEdit={form.handleToggleEdit}\n onSave={form.handleSave}\n onCancel={form.handleCancel}\n hideActions={hideActions}\n editContent={editContent}\n viewContent={viewContent}\n />\n )\n}","import { FormCard } from \"@/components/ui/form-card\"\nimport { CheckCircle, Circle, UserPlus, Edit } from \"lucide-react\"\nimport { cn } from \"@/lib/utils\"\n\ninterface TimelineEvent {\n id: string\n action: string\n user: string\n details?: string\n status?: string\n timestamp: string\n}\n\ninterface BusinessStatusCardProps {\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n}\n\nconst mockBusinessTimeline: TimelineEvent[] = [\n {\n id: \"1\",\n action: \"Business Created\",\n user: \"admin\",\n details: \"Initial business setup\",\n status: \"Active\",\n timestamp: \"2025-08-03 10:30:00\"\n },\n {\n id: \"2\",\n action: \"Profile Updated\",\n user: \"admin\",\n details: \"Updated business information\",\n timestamp: \"2025-09-05 14:22:00\"\n },\n {\n id: \"3\",\n action: \"OFAC Check Completed\",\n user: \"System\",\n details: \"Automated compliance check\",\n status: \"Verified\",\n timestamp: \"2025-09-05 14:30:00\"\n }\n]\n\nexport const BusinessStatusCard = ({ isEditing, onToggleEdit, className }: BusinessStatusCardProps) => {\n const getIcon = (action: string) => {\n if (action.includes(\"Created\")) return <Circle className=\"h-4 w-4\" />\n if (action.includes(\"Assigned\")) return <UserPlus className=\"h-4 w-4\" />\n if (action.includes(\"Updated\") || action.includes(\"Modified\") || action.includes(\"Check\")) return <Edit className=\"h-4 w-4\" />\n if (action.includes(\"Completed\") || action.includes(\"Verified\")) return <CheckCircle className=\"h-4 w-4\" />\n return <Circle className=\"h-4 w-4\" />\n }\n\n const getStatusColor = (status?: string) => {\n switch (status) {\n case \"Active\":\n case \"Verified\":\n return \"text-success\"\n case \"Pending\":\n return \"text-warning\"\n default:\n return \"text-muted-foreground\"\n }\n }\n\n return (\n <FormCard \n title=\"Timeline\"\n className={className}\n >\n <div className=\"space-y-3\">\n {mockBusinessTimeline.map((event, index) => (\n <div key={event.id} className=\"relative pl-6 pb-3\">\n {/* Timeline line */}\n {index !== mockBusinessTimeline.length - 1 && (\n <div className=\"absolute left-[7px] top-5 bottom-0 w-[2px] bg-border\" />\n )}\n \n {/* Icon */}\n <div className={cn(\n \"absolute left-0 top-0 flex-none\",\n getStatusColor(event.status)\n )}>\n <div className=\"h-4 w-4\">\n {getIcon(event.action)}\n </div>\n </div>\n \n {/* Content */}\n <div className=\"space-y-0.5\">\n <p className=\"text-xs font-medium text-foreground\">{event.action}</p>\n <p className=\"text-xs text-muted-foreground\">by {event.user}</p>\n {event.details && (\n <p className=\"text-xs text-muted-foreground\">{event.details}</p>\n )}\n {event.status && (\n <p className={cn(\"text-xs font-medium\", getStatusColor(event.status))}>\n Status: {event.status}\n </p>\n )}\n <p className=\"text-xs text-muted-foreground/70 pt-0.5\">\n {event.timestamp}\n </p>\n </div>\n </div>\n ))}\n </div>\n </FormCard>\n )\n}","import { Badge } from \"@/components/ui/badge\"\nimport { CheckCircle, XCircle, Clock, AlertTriangle, Ban, ChevronDown } from \"lucide-react\"\n\ninterface StatusBadgeProps {\n status: \"ACTIVE\" | \"INACTIVE\" | \"PENDING\" | \"SUSPENDED\" | \"BLOCKED\" | \"PENDING_APPROVAL\" | \"POSTED\" | \"FAILED\" | \"CANCELLED\" | \"DELETED\" | \"NEEDS_OFAC\" | \"PENDING_UNBLOCK\"\n className?: string\n /** Shows a subtle chevron to indicate the status is a clickable dropdown/select. */\n showDropdownIndicator?: boolean\n}\n\nconst statusConfig = {\n ACTIVE: {\n variant: \"active\" as const,\n label: \"Active\",\n icon: CheckCircle\n },\n INACTIVE: {\n variant: \"inactive\" as const,\n label: \"Inactive\",\n icon: XCircle\n },\n PENDING: {\n variant: \"pending\" as const,\n label: \"Pending\",\n icon: Clock\n },\n SUSPENDED: {\n variant: \"suspended\" as const,\n label: \"Suspended\",\n icon: AlertTriangle\n },\n BLOCKED: {\n variant: \"suspended\" as const,\n label: \"Blocked\",\n icon: Ban\n },\n PENDING_APPROVAL: {\n variant: \"pending\" as const,\n label: \"Pending Approval\",\n icon: Clock\n },\n POSTED: {\n variant: \"active\" as const,\n label: \"Posted\",\n icon: CheckCircle\n },\n FAILED: {\n variant: \"inactive\" as const,\n label: \"Failed\",\n icon: XCircle\n },\n CANCELLED: {\n variant: \"secondary\" as const,\n label: \"Cancelled\",\n icon: XCircle\n },\n DELETED: {\n variant: \"inactive\" as const,\n label: \"Deleted\",\n icon: XCircle\n },\n NEEDS_OFAC: {\n variant: \"pending\" as const,\n label: \"Needs OFAC\",\n icon: AlertTriangle\n },\n PENDING_UNBLOCK: {\n variant: \"pending\" as const,\n label: \"Pending Unblock\",\n icon: Clock\n }\n}\n\nexport const StatusBadge = ({ status, className, showDropdownIndicator }: StatusBadgeProps) => {\n const config = statusConfig[status]\n \n // Fallback if config is not found\n if (!config) {\n return (\n <Badge variant=\"secondary\" className={className}>\n <AlertTriangle className=\"w-3 h-3 mr-1\" />\n {status || \"Unknown\"}\n </Badge>\n )\n }\n \n const Icon = config.icon\n\n return (\n <Badge variant={config.variant} className={className}>\n <Icon className=\"w-3 h-3 mr-1\" />\n {config.label}\n {showDropdownIndicator && <ChevronDown className=\"ml-1 h-3 w-3 opacity-70\" />}\n </Badge>\n )\n}","import { Badge } from \"@/components/ui/badge\"\nimport { CheckCircle, Circle, Clock, XCircle } from \"lucide-react\"\n\ninterface CIPStatusBadgeProps {\n status: \"NOT_START\" | \"PASS\" | \"FAIL\" | \"IN_REVIEW\" | \"verified\" | \"not_start\" | \"pending\" | \"rejected\"\n className?: string\n}\n\nconst statusConfig = {\n NOT_START: {\n variant: \"cip-secondary\" as const,\n label: \"Not Start\",\n icon: Circle\n },\n PASS: {\n variant: \"cip-active\" as const,\n label: \"Pass\",\n icon: CheckCircle\n },\n FAIL: {\n variant: \"cip-inactive\" as const,\n label: \"Fail\",\n icon: XCircle\n },\n IN_REVIEW: {\n variant: \"cip-pending\" as const,\n label: \"In Review\",\n icon: Clock\n },\n // Backward compatibility\n verified: {\n variant: \"cip-active\" as const,\n label: \"Verified\",\n icon: CheckCircle\n },\n not_start: {\n variant: \"cip-secondary\" as const,\n label: \"Not Start\",\n icon: Circle\n },\n pending: {\n variant: \"cip-pending\" as const,\n label: \"Pending\",\n icon: Clock\n },\n rejected: {\n variant: \"cip-inactive\" as const,\n label: \"Rejected\",\n icon: XCircle\n }\n}\n\nexport const CIPStatusBadge = ({ status, className }: CIPStatusBadgeProps) => {\n const config = statusConfig[status]\n \n // Fallback if config is not found\n if (!config) {\n return (\n <Badge variant=\"secondary\" className={className}>\n <Circle className=\"w-3 h-3 mr-1\" />\n {status || \"Unknown\"}\n </Badge>\n )\n }\n \n const Icon = config.icon\n\n return (\n <Badge variant={config.variant} className={className}>\n <Icon className=\"w-3 h-3 mr-1\" />\n {config.label}\n </Badge>\n )\n}\n","import { Badge } from \"@/components/ui/badge\"\nimport { User, Building2 } from \"lucide-react\"\n\ninterface EntityTypeBadgeProps {\n type: \"Individual\" | \"Business\"\n className?: string\n}\n\nconst typeConfig = {\n Individual: {\n // Keep header type badges consistent (blue scheme) across entity detail pages\n variant: \"business\" as const,\n label: \"Individual\",\n icon: User\n },\n Business: {\n variant: \"business\" as const,\n label: \"Business\",\n icon: Building2\n }\n}\n\nexport const EntityTypeBadge = ({ type, className }: EntityTypeBadgeProps) => {\n const config = typeConfig[type]\n \n // Fallback if config is not found\n if (!config) {\n return (\n <Badge variant=\"secondary\" className={className}>\n <Building2 className=\"w-3 h-3 mr-1\" />\n {type || \"Unknown\"}\n </Badge>\n )\n }\n \n const Icon = config.icon\n\n return (\n <Badge variant={config.variant} className={className}>\n <Icon className=\"w-3 h-3 mr-1\" />\n {config.label}\n </Badge>\n )\n}\n","import { Badge } from \"@/components/ui/badge\"\nimport { UserCheck, Users } from \"lucide-react\"\n\ninterface SubTypeBadgeProps {\n subType: \"UBO\" | \"Customer\"\n /** Optional context so the Customer subtype can inherit the entity type color scheme. */\n entityType?: \"Business\" | \"Individual\"\n className?: string\n}\n\nexport const SubTypeBadge = ({ subType, entityType = \"Business\", className }: SubTypeBadgeProps) => {\n const config =\n subType === \"UBO\"\n ? { variant: \"government\" as const, label: \"UBO\", icon: UserCheck }\n : {\n variant: (entityType === \"Individual\" ? \"individual\" : \"business\") as \"individual\" | \"business\",\n label: \"Customer\",\n icon: Users,\n }\n \n // Fallback if config is not found\n if (!config) {\n return (\n <Badge variant=\"secondary\" className={className}>\n <Users className=\"w-3 h-3 mr-1\" />\n {subType || \"Unknown\"}\n </Badge>\n )\n }\n \n const Icon = config.icon\n\n return (\n <Badge variant={config.variant} className={className}>\n <Icon className=\"w-3 h-3 mr-1\" />\n {config.label}\n </Badge>\n )\n}\n","import { useState } from \"react\"\nimport { InfoField } from \"./info-field\"\nimport { EnhancedSelect } from \"./enhanced-select\"\nimport { Badge } from \"./badge\"\nimport { cn } from \"@/lib/utils\"\n\ninterface EditableInfoFieldProps {\n label: string\n value: string | null | undefined\n options: { value: string; label: string }[]\n onChange: (value: string) => void\n placeholder?: string\n renderValue?: (value: string) => React.ReactNode\n className?: string\n}\n\nexport const EditableInfoField = ({\n label,\n value,\n options,\n onChange,\n placeholder = \"Select...\",\n renderValue,\n className\n}: EditableInfoFieldProps) => {\n const [isEditing, setIsEditing] = useState(false)\n\n const handleChange = (newValue: string) => {\n onChange(newValue)\n setIsEditing(false)\n }\n\n if (isEditing) {\n return (\n <div className={className}>\n <EnhancedSelect\n label={label}\n value={value || \"\"}\n onValueChange={handleChange}\n options={options}\n placeholder={placeholder}\n />\n </div>\n )\n }\n\n const displayValue = value \n ? (renderValue ? renderValue(value) : value)\n : placeholder\n\n return (\n <div \n className={cn(\"cursor-pointer transition-colors hover:bg-muted/50 rounded-md -mx-2 px-2 -my-1 py-1\", className)}\n onClick={() => setIsEditing(true)}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n setIsEditing(true)\n }\n }}\n >\n <InfoField label={label} value={displayValue} />\n </div>\n )\n}\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport interface PageAction {\n label: string;\n variant?: \"default\" | \"secondary\" | \"destructive\" | \"outline\" | \"ghost\";\n onClick: () => void;\n icon?: React.ComponentType<{ className?: string }>;\n}\n\nexport interface PageCard {\n component: React.ComponentType<any>;\n key: string;\n expandOnEdit?: boolean;\n props?: Record<string, any>;\n}\n\ninterface PageLayoutProps {\n title: string | React.ReactNode;\n description?: string;\n children?: React.ReactNode;\n actions?: PageAction[];\n cards?: PageCard[];\n mode?: \"simple\" | \"detail\" | \"cards\";\n maxWidth?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"full\";\n gridCols?: 1 | 2 | 3 | 4;\n responsive?: boolean;\n className?: string;\n headerContent?: React.ReactNode;\n}\n\nconst maxWidthClasses = {\n sm: \"max-w-2xl\",\n md: \"max-w-4xl\",\n lg: \"max-w-6xl\",\n xl: \"max-w-7xl\",\n \"2xl\": \"max-w-screen-2xl\",\n full: \"max-w-none\",\n};\n\nconst getGridClasses = (gridCols: number, responsive: boolean) => {\n const colsMap = {\n 1: \"grid-cols-1\",\n 2: \"grid-cols-2\",\n 3: \"grid-cols-3\",\n 4: \"grid-cols-4\",\n };\n\n if (!responsive) {\n return colsMap[gridCols as keyof typeof colsMap] || \"grid-cols-1\";\n }\n\n // Responsive grid classes\n switch (gridCols) {\n case 1:\n return \"grid-cols-1\";\n case 2:\n return \"grid-cols-1 lg:grid-cols-2\";\n case 3:\n return \"grid-cols-1 md:grid-cols-2 lg:grid-cols-3\";\n case 4:\n return \"grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4\";\n default:\n return \"grid-cols-1 lg:grid-cols-2\";\n }\n};\n\nexport const PageLayout = React.forwardRef<HTMLDivElement, PageLayoutProps>(\n (\n {\n title,\n description,\n children,\n actions = [],\n cards = [],\n mode = \"simple\",\n maxWidth = \"xl\",\n gridCols = 2,\n responsive = true,\n className,\n headerContent,\n },\n ref,\n ) => {\n const [editingCards, setEditingCards] = React.useState<Set<string>>(new Set());\n\n const toggleEdit = (cardKey: string) => {\n setEditingCards((prev) => {\n const next = new Set(prev);\n if (next.has(cardKey)) {\n next.delete(cardKey);\n } else {\n next.add(cardKey);\n }\n return next;\n });\n };\n\n return (\n <div ref={ref} className=\"flex flex-col h-screen bg-gradient-subtle\">\n {/* Fixed Header */}\n <div className=\"flex-none border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60\">\n <div className={cn(\"container mx-auto px-4 py-4\", maxWidthClasses[maxWidth])}>\n <div className=\"flex flex-col md:flex-row md:items-center md:justify-between gap-4\">\n <div className=\"flex flex-1 flex-col justify-center\">\n <h1 className=\"text-3xl font-bold text-foreground\">{title}</h1>\n {description && <p className=\"text-muted-foreground\">{description}</p>}\n </div>\n\n {(headerContent || actions.length > 0) && (\n <div className=\"flex w-full items-center justify-start gap-2 overflow-x-auto md:w-auto md:justify-end\">\n {headerContent && <div className=\"shrink-0\">{headerContent}</div>}\n\n {actions.length > 0 && (\n <div className=\"flex shrink-0 items-center gap-2\">\n {actions.map((action, index) => {\n const Icon = action.icon;\n return (\n <button\n key={index}\n onClick={action.onClick}\n className={cn(\n \"inline-flex items-center gap-2 px-4 py-2 rounded-md text-sm font-medium transition-colors\",\n {\n \"bg-primary text-primary-foreground hover:bg-primary/90\":\n action.variant === \"default\" || !action.variant,\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\":\n action.variant === \"secondary\",\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\":\n action.variant === \"destructive\",\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\":\n action.variant === \"outline\",\n \"hover:bg-accent hover:text-accent-foreground\": action.variant === \"ghost\",\n },\n )}\n >\n {Icon && <Icon className=\"h-4 w-4\" />}\n {action.label}\n </button>\n );\n })}\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n </div>\n\n {/* Scrollable Content */}\n <div className=\"flex-1 overflow-y-auto\">\n <div className={cn(\"container mx-auto px-4 py-6\", maxWidthClasses[maxWidth], className)}>\n {mode === \"cards\" && cards.length > 0 ? (\n <div className={cn(\"grid gap-6\", getGridClasses(gridCols, responsive))}>\n {cards.map((card) => {\n const isEditing = editingCards.has(card.key);\n const shouldExpand = card.expandOnEdit && isEditing;\n\n return (\n <div\n key={card.key}\n className={cn(\n \"transition-all duration-300\",\n shouldExpand && (gridCols > 1 ? \"col-span-full\" : \"\"),\n )}\n >\n <card.component {...card.props} isEditing={isEditing} onToggleEdit={() => toggleEdit(card.key)} />\n </div>\n );\n })}\n </div>\n ) : (\n children\n )}\n </div>\n </div>\n </div>\n );\n },\n);\n\nPageLayout.displayName = \"PageLayout\";\n","import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { ChevronDown, ChevronUp, ChevronsUpDown, ChevronLeft, ChevronRight } from \"lucide-react\"\n\nexport interface DataTableColumn<T = any> {\n key: string\n title: string\n sortable?: boolean\n render?: (value: any, row: T) => React.ReactNode\n width?: string\n align?: \"left\" | \"center\" | \"right\"\n}\n\nexport interface DataTableProps<T = any> {\n columns: DataTableColumn<T>[]\n data: T[]\n sortBy?: string\n sortDirection?: \"asc\" | \"desc\"\n onSort?: (key: string) => void\n onRowClick?: (row: T) => void\n loading?: boolean\n emptyMessage?: string\n className?: string\n pagination?: {\n currentPage: number\n pageSize: number\n totalItems: number\n onPageChange: (page: number) => void\n }\n}\n\nexport function DataTable<T extends Record<string, any>>({\n columns,\n data,\n sortBy,\n sortDirection,\n onSort,\n onRowClick,\n loading = false,\n emptyMessage = \"No data available\",\n className,\n pagination\n}: DataTableProps<T>) {\n const handleSort = (key: string) => {\n if (onSort) {\n onSort(key)\n }\n }\n\n const renderSortIcon = (column: DataTableColumn<T>) => {\n if (!column.sortable || !onSort) return null\n \n if (sortBy === column.key) {\n return sortDirection === \"asc\" ? \n <ChevronUp className=\"w-4 h-4 ml-1\" /> : \n <ChevronDown className=\"w-4 h-4 ml-1\" />\n }\n \n return <ChevronsUpDown className=\"w-4 h-4 ml-1 opacity-50\" />\n }\n\n const renderCell = (column: DataTableColumn<T>, row: T) => {\n const value = row[column.key]\n \n if (column.render) {\n return column.render(value, row)\n }\n \n // Auto-render common types\n if (typeof value === \"boolean\") {\n return <Badge variant={value ? \"success\" : \"secondary\"}>{value ? \"Yes\" : \"No\"}</Badge>\n }\n \n if (Array.isArray(value)) {\n return value.join(\", \")\n }\n \n return value?.toString() || \"-\"\n }\n\n if (loading) {\n return (\n <div className={cn(\"rounded-md border\", className)}>\n <div className=\"p-8 text-center\">\n <div className=\"animate-pulse text-muted-foreground\">Loading...</div>\n </div>\n </div>\n )\n }\n\n const totalPages = pagination ? Math.ceil(pagination.totalItems / pagination.pageSize) : 0\n const startItem = pagination ? (pagination.currentPage - 1) * pagination.pageSize + 1 : 0\n const endItem = pagination ? Math.min(pagination.currentPage * pagination.pageSize, pagination.totalItems) : 0\n\n return (\n <div className={cn(\"space-y-4\", className)}>\n <div className=\"rounded-md border\">\n <div className=\"overflow-x-auto\">\n <table className=\"w-full\">\n <thead>\n <tr className=\"border-b bg-muted/50\">\n {columns.map((column) => (\n <th\n key={column.key}\n style={column.width ? { width: column.width } : undefined}\n className={cn(\n \"px-3 py-2 text-left align-middle text-sm font-medium bg-muted/50\",\n column.align === \"center\" && \"text-center\",\n column.align === \"right\" && \"text-right\"\n )}\n >\n {column.sortable && onSort ? (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-auto p-0 text-sm font-medium hover:bg-transparent\"\n onClick={() => handleSort(column.key)}\n >\n <span className=\"flex items-center\">\n {column.title}\n {renderSortIcon(column)}\n </span>\n </Button>\n ) : (\n column.title\n )}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {data.length === 0 ? (\n <tr>\n <td colSpan={columns.length} className=\"h-24 text-center text-muted-foreground\">\n {emptyMessage}\n </td>\n </tr>\n ) : (\n data.map((row, index) => (\n <tr\n key={index}\n className={cn(\n \"border-b transition-colors hover:bg-muted/50\",\n onRowClick && \"cursor-pointer\"\n )}\n onClick={() => onRowClick?.(row)}\n >\n {columns.map((column) => (\n <td\n key={column.key}\n style={column.width ? { width: column.width } : undefined}\n className={cn(\n \"px-3 py-2 align-middle text-sm\",\n column.align === \"center\" && \"text-center\",\n column.align === \"right\" && \"text-right\"\n )}\n >\n {renderCell(column, row)}\n </td>\n ))}\n </tr>\n ))\n )}\n </tbody>\n </table>\n </div>\n </div>\n \n {pagination && totalPages > 1 && (\n <div className=\"flex items-center justify-between px-2\">\n <div className=\"text-sm text-muted-foreground\">\n Showing {startItem} to {endItem} of {pagination.totalItems} results\n </div>\n <div className=\"flex items-center gap-2\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => pagination.onPageChange(pagination.currentPage - 1)}\n disabled={pagination.currentPage === 1}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n Previous\n </Button>\n <div className=\"text-sm font-medium\">\n Page {pagination.currentPage} of {totalPages}\n </div>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => pagination.onPageChange(pagination.currentPage + 1)}\n disabled={pagination.currentPage === totalPages}\n >\n Next\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n )}\n </div>\n )\n}","import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\ninterface FormFieldProps {\n label?: string\n description?: string\n error?: string\n required?: boolean\n children: React.ReactNode\n className?: string\n layout?: \"vertical\" | \"horizontal\"\n}\n\nexport const FormField = React.forwardRef<HTMLDivElement, FormFieldProps>(\n ({ label, description, error, required, children, className, layout = \"vertical\" }, ref) => {\n const isHorizontal = layout === \"horizontal\"\n \n return (\n <div \n ref={ref}\n className={cn(\n \"space-y-2\",\n isHorizontal && \"grid grid-cols-1 md:grid-cols-3 gap-4 items-start space-y-0\",\n className\n )}\n >\n {label && (\n <div className={cn(\"space-y-1\", isHorizontal && \"pt-2\")}>\n <label className=\"text-sm font-medium text-foreground\">\n {label}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </label>\n {description && (\n <p className=\"text-xs text-muted-foreground\">{description}</p>\n )}\n </div>\n )}\n \n <div className={cn(isHorizontal && \"md:col-span-2\")}>\n {children}\n {error && (\n <p className=\"text-xs text-destructive mt-1\">{error}</p>\n )}\n </div>\n </div>\n )\n }\n)\n\nFormField.displayName = \"FormField\"","import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\ninterface FormSectionProps {\n title?: string\n description?: string\n children: React.ReactNode\n className?: string\n spacing?: \"sm\" | \"md\" | \"lg\"\n layout?: \"vertical\" | \"grid\"\n columns?: 1 | 2 | 3 | 4\n}\n\nconst spacingClasses = {\n sm: \"space-y-3\",\n md: \"space-y-4\",\n lg: \"space-y-6\"\n}\n\nconst gridClasses = {\n 1: \"grid-cols-1\",\n 2: \"grid-cols-1 md:grid-cols-2\", \n 3: \"grid-cols-1 md:grid-cols-2 lg:grid-cols-3\",\n 4: \"grid-cols-1 md:grid-cols-2 lg:grid-cols-4\"\n}\n\nexport const FormSection = React.forwardRef<HTMLDivElement, FormSectionProps>(\n ({ \n title, \n description, \n children, \n className, \n spacing = \"md\", \n layout = \"vertical\",\n columns = 2 \n }, ref) => {\n return (\n <div ref={ref} className={cn(\"space-y-4\", className)}>\n {(title || description) && (\n <div className=\"space-y-1\">\n {title && (\n <h3 className=\"text-lg font-semibold text-foreground\">\n {title}\n </h3>\n )}\n {description && (\n <p className=\"text-sm text-muted-foreground\">\n {description}\n </p>\n )}\n </div>\n )}\n \n <div className={cn(\n layout === \"grid\" \n ? `grid gap-4 ${gridClasses[columns]}` \n : spacingClasses[spacing]\n )}>\n {children}\n </div>\n </div>\n )\n }\n)\n\nFormSection.displayName = \"FormSection\"","import * as React from \"react\"\nimport { DayPicker } from \"react-day-picker\"\n\nimport { cn } from \"@/lib/utils\"\nimport { buttonVariants } from \"@/components/ui/button\"\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 pointer-events-auto\", 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 button_previous: \"absolute left-1 h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100\",\n button_next: \"absolute right-1 h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100\",\n month_grid: \"w-full border-collapse space-y-1\",\n weekdays: \"flex\",\n weekday: \"text-muted-foreground rounded-md w-9 font-normal text-[0.8rem]\",\n week: \"flex w-full mt-2\",\n day: \"h-9 w-9 text-center text-sm p-0 relative hover:bg-accent hover:text-accent-foreground rounded-md\",\n day_button: cn(\n buttonVariants({ variant: \"ghost\" }),\n \"h-9 w-9 p-0 font-normal\"\n ),\n selected: \"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground\",\n today: \"bg-accent text-accent-foreground\",\n outside: \"text-muted-foreground opacity-50\",\n disabled: \"text-muted-foreground opacity-50\",\n hidden: \"invisible\",\n ...classNames,\n }}\n {...props}\n />\n )\n}\nCalendar.displayName = \"Calendar\"\n\nexport { Calendar }\n","import * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Popover = PopoverPrimitive.Root\n\nconst PopoverTrigger = PopoverPrimitive.Trigger\n\ninterface PopoverContentProps\n extends React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content> {\n container?: HTMLElement | null\n}\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n PopoverContentProps\n>(({ className, align = \"center\", sideOffset = 4, container, ...props }, ref) => (\n <PopoverPrimitive.Portal container={container}>\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","import * as React from \"react\"\nimport { format } from \"date-fns\"\nimport { CalendarIcon } from \"lucide-react\"\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Calendar } from \"@/components/ui/calendar\"\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/ui/popover\"\n\ninterface DatePickerProps {\n date?: Date\n onDateChange?: (date: Date | undefined) => void\n placeholder?: string\n disabled?: boolean\n className?: string\n buttonClassName?: string\n calendarClassName?: string\n align?: \"start\" | \"center\" | \"end\"\n disabledDates?: (date: Date) => boolean\n label?: string\n wrapperClassName?: string\n}\n\nexport function DatePicker({\n date,\n onDateChange,\n placeholder = \"Pick a date\",\n disabled = false,\n className,\n buttonClassName,\n calendarClassName,\n align = \"start\",\n disabledDates,\n label,\n wrapperClassName,\n}: DatePickerProps) {\n const [open, setOpen] = React.useState(false)\n\n const handleSelect = (selectedDate: Date | undefined) => {\n onDateChange?.(selectedDate)\n setOpen(false)\n }\n\n const picker = (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n disabled={disabled}\n className={cn(\n \"justify-start text-left font-normal\",\n !date && \"text-muted-foreground\",\n buttonClassName\n )}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {date ? format(date, \"MM/dd/yyyy\") : placeholder}\n </Button>\n </PopoverTrigger>\n <PopoverContent className={cn(\"w-auto p-0\", className)} align={align}>\n <Calendar\n mode=\"single\"\n selected={date}\n onSelect={handleSelect}\n disabled={disabledDates}\n initialFocus\n className={cn(\"pointer-events-auto\", calendarClassName)}\n />\n </PopoverContent>\n </Popover>\n )\n\n if (label) {\n return (\n <div className={cn(\"space-y-2\", wrapperClassName)}>\n <label className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\">\n {label}\n </label>\n {picker}\n </div>\n )\n }\n\n return picker\n}\n","import { z } from \"zod\"\n\nexport const uboSchema = z.object({\n legalFirstName: z.string().optional(),\n legalLastName: z.string().optional(),\n email: z.string().optional(),\n title: z.string().optional(),\n ownershipPercentage: z.number().min(0, \"Must be at least 0%\").max(100, \"Must be at most 100%\").optional(),\n idNumber: z.string().optional(),\n ssn: z.string().optional(),\n dateOfBirth: z.date().optional(),\n street: z.string().optional(),\n apartment: z.string().optional(),\n city: z.string().optional(),\n state: z.string().optional(),\n country: z.string().optional(),\n})\n\nexport type UBOFormData = z.infer<typeof uboSchema>\n","import { useState } from \"react\"\nimport { useForm, FormProvider } from \"react-hook-form\"\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter } from \"@/components/ui/dialog\"\nimport { Button } from \"@/components/ui/button\"\nimport { FormInput } from \"@/components/ui/form-input\"\nimport { FormSelect } from \"@/components/ui/form-select\"\nimport { FormField } from \"@/components/ui/form-field\"\nimport { FormSection } from \"@/components/ui/form-section\"\nimport { DatePicker } from \"@/components/ui/date-picker\"\nimport { uboSchema, type UBOFormData } from \"@/lib/schemas/ubo-schemas\"\nimport { Controller } from \"react-hook-form\"\nimport { toast } from \"sonner\"\n\ninterface AddUBODialogProps {\n open: boolean\n onOpenChange: (open: boolean) => void\n onSubmit: (data: UBOFormData) => Promise<void | boolean> | void | boolean\n}\n\nconst titleOptions = [\n { value: \"CEO\", label: \"CEO\" },\n { value: \"CFO\", label: \"CFO\" },\n { value: \"CTO\", label: \"CTO\" },\n { value: \"COO\", label: \"COO\" },\n { value: \"President\", label: \"President\" },\n { value: \"Vice President\", label: \"Vice President\" },\n { value: \"Director\", label: \"Director\" },\n { value: \"Manager\", label: \"Manager\" },\n { value: \"Board Member\", label: \"Board Member\" },\n { value: \"Partner\", label: \"Partner\" },\n { value: \"Other\", label: \"Other\" },\n]\n\nexport const AddUBODialog = ({ open, onOpenChange, onSubmit }: AddUBODialogProps) => {\n const [isSubmitting, setIsSubmitting] = useState(false)\n \n const form = useForm<UBOFormData>({\n resolver: zodResolver(uboSchema),\n defaultValues: {\n legalFirstName: \"\",\n legalLastName: \"\",\n email: \"\",\n title: \"\",\n ownershipPercentage: 0,\n idNumber: \"\",\n ssn: \"\",\n street: \"\",\n apartment: \"\",\n city: \"\",\n state: \"\",\n country: \"US\",\n },\n })\n\n const handleSubmit = async (data: UBOFormData) => {\n setIsSubmitting(true)\n try {\n const result = await onSubmit(data)\n\n // Keep the dialog open if the submitter explicitly reports failure.\n if (result === false) {\n toast.error(\"Couldn't add UBO. Please fix issues and try again.\")\n return\n }\n form.reset()\n onOpenChange(false)\n } catch (error) {\n console.error(\"Error adding UBO:\", error)\n toast.error(\"Couldn't add UBO. Please try again.\")\n } finally {\n setIsSubmitting(false)\n }\n }\n\n const handleCancel = () => {\n form.reset()\n onOpenChange(false)\n }\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent className=\"max-w-3xl max-h-[90vh] overflow-y-auto\">\n <DialogHeader>\n <DialogTitle>Add Ultimate Beneficial Owner</DialogTitle>\n </DialogHeader>\n\n <FormProvider {...form}>\n <form onSubmit={form.handleSubmit(handleSubmit)} className=\"space-y-6\">\n <FormSection layout=\"grid\" columns={2} spacing=\"md\">\n <FormInput\n name=\"legalFirstName\"\n label=\"Legal first name\"\n placeholder=\"Enter first name\"\n />\n <FormInput\n name=\"legalLastName\"\n label=\"Legal last name\"\n placeholder=\"Enter last name\"\n />\n </FormSection>\n\n <FormSection layout=\"vertical\" spacing=\"md\">\n <FormInput\n name=\"email\"\n label=\"Email\"\n type=\"email\"\n placeholder=\"Enter email address\"\n />\n </FormSection>\n\n <FormSection layout=\"grid\" columns={2} spacing=\"md\">\n <FormSelect\n name=\"title\"\n label=\"Title\"\n placeholder=\"Select title\"\n options={titleOptions}\n />\n <FormInput\n name=\"ownershipPercentage\"\n label=\"Ownership %\"\n type=\"number\"\n placeholder=\"Enter ownership percentage\"\n />\n </FormSection>\n\n <FormSection layout=\"grid\" columns={2} spacing=\"md\">\n <FormInput\n name=\"idNumber\"\n label=\"ID Number\"\n placeholder=\"Enter ID number\"\n />\n <FormInput\n name=\"ssn\"\n label=\"SSN\"\n placeholder=\"Enter SSN\"\n />\n </FormSection>\n\n <FormSection layout=\"vertical\" spacing=\"md\">\n <FormField label=\"Date of birth\">\n <Controller\n name=\"dateOfBirth\"\n control={form.control}\n render={({ field }) => (\n <DatePicker\n date={field.value}\n onDateChange={field.onChange}\n placeholder=\"MM/DD/YYYY\"\n />\n )}\n />\n </FormField>\n </FormSection>\n\n <FormSection title=\"Address Details\" layout=\"vertical\" spacing=\"md\">\n <FormInput\n name=\"street\"\n label=\"Street\"\n placeholder=\"Enter street address\"\n />\n <FormInput\n name=\"apartment\"\n label=\"Apartment, suite, or floor\"\n placeholder=\"Enter apartment, suite, or floor (optional)\"\n />\n <FormSection layout=\"grid\" columns={2} spacing=\"md\">\n <FormInput\n name=\"city\"\n label=\"City\"\n placeholder=\"Enter city\"\n />\n <FormInput\n name=\"state\"\n label=\"State\"\n placeholder=\"Enter state\"\n />\n </FormSection>\n <FormInput\n name=\"country\"\n label=\"Country\"\n placeholder=\"Enter country\"\n />\n </FormSection>\n\n <DialogFooter>\n <Button type=\"button\" variant=\"outline\" onClick={handleCancel}>\n Cancel\n </Button>\n <Button type=\"submit\" disabled={isSubmitting}>\n {isSubmitting ? \"Adding...\" : \"Add UBO\"}\n </Button>\n </DialogFooter>\n </form>\n </FormProvider>\n </DialogContent>\n </Dialog>\n )\n}\n","import { useState } from \"react\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Button } from \"@/components/ui/button\"\nimport { UBO } from \"@/lib/mock-data/ubo-data\"\nimport { Plus, Users, Trash2 } from \"lucide-react\"\nimport { DataTable, DataTableColumn } from \"@/components/ui/data-table\"\nimport { AddUBODialog } from \"./AddUBODialog\"\nimport { type UBOFormData } from \"@/lib/schemas/ubo-schemas\"\nimport { toast } from \"sonner\"\n\ninterface UBOCardProps {\n ubos: UBO[]\n onUBOClick: (customerId: string) => void\n onAddUBO?: (data: UBOFormData) => Promise<void | boolean> | void | boolean\n onRemoveUBO?: (uboId: string) => void\n}\n\nexport const UBOCard = ({ ubos, onUBOClick, onAddUBO, onRemoveUBO }: UBOCardProps) => {\n const [isDialogOpen, setIsDialogOpen] = useState(false)\n\n const handleAddUBO = async (data: UBOFormData) => {\n if (!onAddUBO) {\n throw new Error(\"onAddUBO callback not provided\")\n }\n await onAddUBO(data)\n }\n\n const handleRemoveUBO = (uboId: string, uboName: string) => {\n if (onRemoveUBO) {\n onRemoveUBO(uboId)\n toast.success(`${uboName} removed from UBOs`)\n }\n }\n\n const columns: DataTableColumn[] = [\n {\n key: \"name\",\n title: \"Name\",\n sortable: true,\n width: \"35%\",\n render: (value, row) => (\n <button\n onClick={() => onUBOClick(row.customerId)}\n className=\"text-primary hover:underline font-medium text-left\"\n >\n {value}\n </button>\n ),\n },\n {\n key: \"title\",\n title: \"Title\",\n sortable: true,\n width: \"35%\",\n },\n {\n key: \"ownershipPercentage\",\n title: \"Ownership %\",\n sortable: true,\n width: \"15%\",\n align: \"right\" as const,\n render: (value) => `${value}%`,\n },\n {\n key: \"actions\",\n title: \"\",\n width: \"15%\",\n align: \"right\" as const,\n render: (_, row) => (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={(e) => {\n e.stopPropagation()\n handleRemoveUBO(row.id, row.name)\n }}\n className=\"text-destructive hover:text-destructive hover:bg-destructive/10\"\n >\n <Trash2 className=\"h-4 w-4\" />\n </Button>\n ),\n },\n ]\n\n return (\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-4\">\n <CardTitle>Ultimate Beneficial Owners (UBO)</CardTitle>\n <Button size=\"sm\" variant=\"ghost\" onClick={() => setIsDialogOpen(true)}>\n <Plus className=\"h-4 w-4 mr-1\" />\n Add UBO\n </Button>\n </CardHeader>\n <CardContent>\n {ubos.length === 0 ? (\n <div className=\"flex items-center justify-center gap-2 py-4 text-sm text-muted-foreground\">\n <Users className=\"h-5 w-5 opacity-50\" />\n <p>No UBOs recorded</p>\n </div>\n ) : (\n <DataTable\n columns={columns}\n data={ubos}\n />\n )}\n </CardContent>\n\n <AddUBODialog\n open={isDialogOpen}\n onOpenChange={setIsDialogOpen}\n onSubmit={handleAddUBO}\n />\n </Card>\n )\n}\n","import { useState } from \"react\"\nimport { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle } from \"@/components/ui/dialog\"\nimport { Button } from \"@/components/ui/button\"\nimport { FormProvider } from \"@/components/ui/form-provider\"\nimport { FormInput } from \"@/components/ui/form-input\"\nimport { FormSelect } from \"@/components/ui/form-select\"\nimport { FormSection } from \"@/components/ui/form-section\"\nimport { useForm } from \"react-hook-form\"\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport { z } from \"zod\"\nimport { toast } from \"sonner\"\n\nconst accountSchema = z.object({\n accountName: z.string().min(1, \"Account name is required\"),\n accountType: z.string().min(1, \"Account type is required\"),\n fundingFromAccount: z.string().optional(),\n sweepToAccount: z.string().optional(),\n})\n\ntype AccountFormData = z.infer<typeof accountSchema>\n\nexport type { AccountFormData }\n\ninterface AddAccountDialogProps {\n open: boolean\n onOpenChange: (open: boolean) => void\n onSubmit?: (data: AccountFormData) => Promise<void | boolean> | void | boolean\n existingAccounts?: Array<{ id: string; number: string; routingNumber?: string; type?: string }>\n}\n\nexport const AddAccountDialog = ({ \n open, \n onOpenChange, \n onSubmit,\n existingAccounts = []\n}: AddAccountDialogProps) => {\n const [isLoading, setIsLoading] = useState(false)\n\n const form = useForm<AccountFormData>({\n resolver: zodResolver(accountSchema),\n defaultValues: {\n accountName: \"\",\n accountType: undefined,\n fundingFromAccount: \"\",\n sweepToAccount: \"\",\n },\n })\n\n const handleSubmit = async (data: AccountFormData) => {\n setIsLoading(true)\n try {\n const result = await onSubmit?.(data)\n\n // Keep the dialog open if the submitter explicitly reports failure.\n if (result === false) {\n toast.error(\"Couldn't add external account. Please fix issues and try again.\")\n return\n }\n form.reset()\n onOpenChange(false)\n } catch (error) {\n console.error(\"Error creating account:\", error)\n toast.error(\"Couldn't add external account. Please try again.\")\n } finally {\n setIsLoading(false)\n }\n }\n\n const accountOptions = existingAccounts.map(acc => ({\n value: acc.id,\n label: `${acc.number}${acc.type ? ` (${acc.type})` : ''}`,\n }))\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent className=\"sm:max-w-[600px] max-h-[90vh] overflow-y-auto\">\n <DialogHeader>\n <DialogTitle>Add Account</DialogTitle>\n </DialogHeader>\n\n <FormProvider form={form}>\n <form onSubmit={form.handleSubmit(handleSubmit)} className=\"space-y-4\">\n <FormSection spacing=\"md\">\n <FormInput\n name=\"accountName\"\n label=\"Account Name\"\n placeholder=\"Enter account name\"\n required\n />\n\n <FormSelect\n name=\"accountType\"\n label=\"Account Type\"\n placeholder=\"Select account type\"\n options={[\n { value: \"CHECKING\", label: \"Checking\" },\n { value: \"SAVINGS\", label: \"Savings\" },\n ]}\n />\n\n <FormInput\n name=\"fundingFromAccount\"\n label=\"Funding from Account\"\n placeholder=\"Enter funding account\"\n />\n\n <FormInput\n name=\"sweepToAccount\"\n label=\"Sweep to Account\"\n placeholder=\"Enter sweep account\"\n />\n </FormSection>\n\n <DialogFooter>\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={() => onOpenChange(false)}\n disabled={isLoading}\n >\n Cancel\n </Button>\n <Button type=\"submit\" disabled={isLoading}>\n {isLoading ? \"Creating...\" : \"Create Account\"}\n </Button>\n </DialogFooter>\n </form>\n </FormProvider>\n </DialogContent>\n </Dialog>\n )\n}\n","import { useState } from \"react\"\nimport { createPortal } from \"react-dom\"\nimport { BusinessDocument } from \"@/lib/mock-data/document-data\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Button } from \"@/components/ui/button\"\nimport { toast } from \"@/hooks/use-toast\"\nimport { FileText, Upload, Download, Eye, Trash2, X } from \"lucide-react\"\nimport { cn } from \"@/lib/utils\"\nimport { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { EnhancedTextarea } from \"@/components/ui/enhanced-textarea\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\n\ninterface BusinessDocumentsProps {\n businessId: string\n documents: BusinessDocument[]\n onDocumentUpload: (file: File, metadata: { name: string; description: string; type: string }) => Promise<void>\n onDocumentDelete?: (documentId: string) => Promise<void | boolean> | void | boolean\n renderDocumentViewer?: (document: BusinessDocument) => React.ReactNode\n documentTypeOptions?: Array<{ value: string; label: string }>\n}\n\nconst DEFAULT_DOCUMENT_TYPE_OPTIONS = [\n { value: \"BUSINESS_LICENSE\", label: \"Business License\" },\n { value: \"TAX_DOCUMENT\", label: \"Tax Document\" },\n { value: \"PROOF_OF_ADDRESS\", label: \"Proof of Address\" },\n { value: \"BANK_STATEMENT\", label: \"Bank Statement\" },\n { value: \"INCORPORATION_DOCS\", label: \"Incorporation Documents\" },\n { value: \"OPERATING_AGREEMENT\", label: \"Operating Agreement\" },\n { value: \"OTHER\", label: \"Other\" }\n]\n\nexport const BusinessDocuments = ({\n businessId,\n documents,\n onDocumentUpload,\n onDocumentDelete,\n renderDocumentViewer,\n documentTypeOptions = DEFAULT_DOCUMENT_TYPE_OPTIONS,\n}: BusinessDocumentsProps) => {\n const [isUploading, setIsUploading] = useState(false)\n const [showUploadDialog, setShowUploadDialog] = useState(false)\n const [selectedFile, setSelectedFile] = useState<File | null>(null)\n const [documentName, setDocumentName] = useState(\"\")\n const [description, setDescription] = useState(\"\")\n const [documentType, setDocumentType] = useState(\"\")\n const [viewingDocument, setViewingDocument] = useState<BusinessDocument | null>(null)\n const [deletingDocumentId, setDeletingDocumentId] = useState<string | null>(null)\n\n const isImageType = (name: string) => {\n const imageExtensions = ['.jpg', '.jpeg', '.png', '.gif', '.webp', '.bmp']\n return imageExtensions.some(ext => name.toLowerCase().endsWith(ext))\n }\n\n const handleDownload = async (doc: BusinessDocument) => {\n if (!doc.url) {\n toast({ title: \"Download Failed\", description: \"No file URL available\", variant: \"destructive\" })\n return\n }\n \n try {\n const response = await fetch(doc.url)\n const blob = await response.blob()\n const url = window.URL.createObjectURL(blob)\n const link = document.createElement('a')\n link.href = url\n link.download = doc.name\n document.body.appendChild(link)\n link.click()\n document.body.removeChild(link)\n window.URL.revokeObjectURL(url)\n toast({ title: \"Download Started\", description: `Downloading ${doc.name}` })\n } catch (error) {\n // Fallback to opening in new tab\n window.open(doc.url, '_blank')\n toast({ title: \"Download\", description: `Opening ${doc.name} in new tab` })\n }\n }\n\n const handleFileSelect = (e: React.ChangeEvent<HTMLInputElement>) => {\n const file = e.target.files?.[0]\n if (!file) return\n \n setSelectedFile(file)\n setDocumentName(file.name)\n }\n\n const handleUploadSubmit = async () => {\n if (!selectedFile || !documentName || !documentType) {\n toast({\n title: \"Missing Information\",\n description: \"Please fill in all required fields\",\n variant: \"destructive\"\n })\n return\n }\n\n setIsUploading(true)\n \n try {\n await onDocumentUpload(selectedFile, {\n name: documentName,\n description: description,\n type: documentType\n })\n \n toast({\n title: \"Upload Successful\",\n description: `${documentName} uploaded successfully`\n })\n setShowUploadDialog(false)\n resetForm()\n } catch (error) {\n toast({\n title: \"Upload Failed\",\n description: \"Failed to upload document. Please try again.\",\n variant: \"destructive\"\n })\n } finally {\n setIsUploading(false)\n }\n }\n\n const resetForm = () => {\n setSelectedFile(null)\n setDocumentName(\"\")\n setDescription(\"\")\n setDocumentType(\"\")\n const fileInput = document.getElementById(\"file-upload\") as HTMLInputElement\n if (fileInput) fileInput.value = \"\"\n }\n\n const handleCancelUpload = () => {\n setShowUploadDialog(false)\n resetForm()\n }\n\n const handleDelete = async (doc: BusinessDocument) => {\n if (!onDocumentDelete) {\n toast({\n title: \"Delete not available\",\n description: \"No delete handler was provided.\",\n variant: \"destructive\",\n })\n return\n }\n\n setDeletingDocumentId(doc.id)\n try {\n const result = await onDocumentDelete(doc.id)\n if (result === false) {\n toast({\n title: \"Delete Failed\",\n description: \"Couldn't delete the document. Please try again.\",\n variant: \"destructive\",\n })\n return\n }\n\n toast({ title: \"Document deleted\", description: doc.name })\n\n if (viewingDocument?.id === doc.id) {\n setViewingDocument(null)\n }\n } catch (e) {\n toast({\n title: \"Delete Failed\",\n description: \"Couldn't delete the document. Please try again.\",\n variant: \"destructive\",\n })\n } finally {\n setDeletingDocumentId(prev => (prev === doc.id ? null : prev))\n }\n }\n\n const getFileIcon = (type: string) => {\n return <FileText className=\"h-5 w-5\" />\n }\n\n const getFileTypeColor = (type: string) => {\n switch (type.toUpperCase()) {\n case \"PDF\":\n return \"text-red-500\"\n case \"DOCX\":\n case \"DOC\":\n return \"text-blue-500\"\n case \"XLSX\":\n case \"XLS\":\n return \"text-green-500\"\n case \"JPG\":\n case \"JPEG\":\n case \"PNG\":\n return \"text-purple-500\"\n default:\n return \"text-muted-foreground\"\n }\n }\n\n\n return (\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-4\">\n <CardTitle>Documents</CardTitle>\n <Button \n onClick={() => setShowUploadDialog(true)}\n size=\"sm\"\n variant=\"ghost\"\n className=\"gap-2\"\n >\n <Upload className=\"h-4 w-4\" />\n Upload\n </Button>\n </CardHeader>\n <CardContent>\n {/* Upload Dialog - Render using portal */}\n {showUploadDialog && createPortal(\n <div className=\"fixed inset-0 z-[100] flex items-center justify-center p-4\">\n <div \n className=\"fixed inset-0 bg-background/80 backdrop-blur-sm\"\n onClick={handleCancelUpload}\n />\n <div className=\"relative bg-card border rounded-lg shadow-lg max-w-lg w-full p-6 z-[101]\">\n <div className=\"flex items-center justify-between mb-6\">\n <h2 className=\"text-2xl font-bold\">Upload Document</h2>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0\"\n onClick={handleCancelUpload}\n >\n <X className=\"h-4 w-4\" />\n </Button>\n </div>\n\n <div className=\"space-y-4\">\n {/* File Upload Area Inside Dialog */}\n <div className=\"border-2 border-dashed rounded-lg p-6 text-center hover:border-primary/50 transition-colors\">\n <input\n type=\"file\"\n id=\"file-upload-dialog\"\n className=\"hidden\"\n onChange={handleFileSelect}\n disabled={isUploading}\n />\n <label\n htmlFor=\"file-upload-dialog\"\n className={cn(\n \"cursor-pointer flex flex-col items-center gap-2\",\n isUploading && \"opacity-50 cursor-not-allowed\"\n )}\n >\n <Upload className=\"h-8 w-8 text-muted-foreground\" />\n <div>\n <p className=\"text-sm font-medium text-foreground\">\n {selectedFile ? \"Change file\" : \"Click to upload or drag and drop\"}\n </p>\n <p className=\"text-xs text-muted-foreground mt-1\">\n PDF, DOC, DOCX, JPG, PNG up to 10MB\n </p>\n </div>\n </label>\n </div>\n\n {selectedFile && (\n <div className=\"p-3 bg-muted/50 rounded-lg\">\n <p className=\"text-sm text-muted-foreground\">Selected file:</p>\n <p className=\"text-sm font-medium\">{selectedFile.name}</p>\n <p className=\"text-xs text-muted-foreground\">\n {(selectedFile.size / 1024 / 1024).toFixed(2)} MB\n </p>\n </div>\n )}\n\n <EnhancedInput\n label=\"Document name\"\n value={documentName}\n onChange={(e) => setDocumentName(e.target.value)}\n placeholder=\"Enter document name\"\n />\n\n <EnhancedTextarea\n label=\"Description\"\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n placeholder=\"Enter document description (optional)\"\n rows={3}\n />\n\n <EnhancedSelect\n label=\"Document type\"\n value={documentType}\n onValueChange={setDocumentType}\n placeholder=\"Select document type\"\n options={documentTypeOptions}\n />\n </div>\n\n <div className=\"flex gap-3 mt-6\">\n <Button\n variant=\"outline\"\n onClick={handleCancelUpload}\n disabled={isUploading}\n className=\"flex-1\"\n >\n Cancel\n </Button>\n <Button\n onClick={handleUploadSubmit}\n disabled={isUploading}\n className=\"flex-1\"\n >\n {isUploading ? \"Uploading...\" : \"Upload\"}\n </Button>\n </div>\n </div>\n </div>,\n document.body\n )}\n\n {/* Documents List */}\n {documents.length === 0 ? (\n <div className=\"flex items-center justify-center gap-2 py-4 text-sm text-muted-foreground\">\n <FileText className=\"h-5 w-5 opacity-50\" />\n <p>No documents uploaded yet</p>\n </div>\n ) : (\n <div className=\"space-y-2\">\n {documents.map((doc) => (\n <div\n key={doc.id}\n className=\"border rounded-lg hover:bg-muted/30 transition-colors overflow-hidden\"\n >\n {/* Image Preview for image types */}\n {isImageType(doc.name) && doc.url && (\n <div className=\"w-full bg-muted/50\">\n <img \n src={doc.url} \n alt={doc.name}\n className=\"w-full h-48 object-cover\"\n />\n </div>\n )}\n \n <div className=\"flex items-center justify-between p-3\">\n <div className=\"flex items-center gap-3 flex-1 min-w-0\">\n {!isImageType(doc.name) && (\n <div className={cn(getFileTypeColor(doc.type))}>\n {getFileIcon(doc.type)}\n </div>\n )}\n <div className=\"flex-1 min-w-0\">\n <h4 className=\"font-medium text-sm truncate\">{doc.name}</h4>\n <span className={cn(\"text-xs px-2 py-0.5 rounded-full bg-muted inline-block mt-1\", getFileTypeColor(doc.type))}>\n {doc.type}\n </span>\n {doc.description && (\n <p className=\"text-sm text-foreground mt-1\">{doc.description}</p>\n )}\n <p className=\"text-xs text-muted-foreground mt-1\">\n {doc.size} • Uploaded by {doc.uploadedBy} • {new Date(doc.uploadedAt).toLocaleDateString()}\n </p>\n </div>\n </div>\n <div className=\"flex items-center gap-1\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0\"\n onClick={() => setViewingDocument(doc)}\n >\n <Eye className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0\"\n onClick={() => handleDownload(doc)}\n >\n <Download className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0 text-muted-foreground hover:text-foreground\"\n disabled={deletingDocumentId === doc.id}\n onClick={() => handleDelete(doc)}\n >\n <Trash2 className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n </div>\n ))}\n </div>\n )}\n\n {/* Document Preview Dialog */}\n {viewingDocument && createPortal(\n <div className=\"fixed inset-0 z-[100] flex items-center justify-center p-4\">\n <div \n className=\"fixed inset-0 bg-background/80 backdrop-blur-sm\"\n onClick={() => setViewingDocument(null)}\n />\n <div className=\"relative bg-card border rounded-lg shadow-lg max-w-4xl w-full max-h-[90vh] overflow-hidden z-[101]\">\n {/* Header */}\n <div className=\"flex items-center justify-between p-4 border-b\">\n <div>\n <h2 className=\"text-lg font-semibold\">{viewingDocument.name}</h2>\n <p className=\"text-sm text-muted-foreground\">{viewingDocument.type}</p>\n </div>\n <div className=\"flex gap-2\">\n <Button variant=\"outline\" size=\"sm\" onClick={() => handleDownload(viewingDocument)}>\n <Download className=\"h-4 w-4 mr-2\" /> Download\n </Button>\n <Button variant=\"ghost\" size=\"sm\" className=\"h-8 w-8 p-0\" onClick={() => setViewingDocument(null)}>\n <X className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n \n {/* Content */}\n <div className=\"p-4 overflow-auto max-h-[calc(90vh-120px)]\">\n {isImageType(viewingDocument.name) && viewingDocument.url ? (\n <img \n src={viewingDocument.url} \n alt={viewingDocument.name} \n className=\"max-w-full h-auto mx-auto rounded-lg\"\n />\n ) : renderDocumentViewer ? (\n renderDocumentViewer(viewingDocument)\n ) : (\n <div className=\"text-center py-12\">\n <FileText className=\"h-16 w-16 mx-auto mb-4 text-muted-foreground\" />\n <p className=\"text-lg font-medium\">{viewingDocument.name}</p>\n <p className=\"text-muted-foreground mt-2\">Click \"Download\" to view this document</p>\n {viewingDocument.description && (\n <p className=\"text-sm text-foreground mt-4\">{viewingDocument.description}</p>\n )}\n <p className=\"text-sm text-muted-foreground mt-4\">\n Size: {viewingDocument.size} • Uploaded by {viewingDocument.uploadedBy} • {new Date(viewingDocument.uploadedAt).toLocaleDateString()}\n </p>\n </div>\n )}\n </div>\n </div>\n </div>,\n document.body\n )}\n </CardContent>\n </Card>\n )\n}","import type { ComponentProps } from \"react\"\nimport { Badge } from \"@/components/ui/badge\"\n\ntype BadgeVariant = ComponentProps<typeof Badge>[\"variant\"]\n\nexport const normalizeOfacStatus = (status?: string) => (status ?? \"\").trim().toUpperCase()\n\nexport const getOfacBadgeVariant = (status?: string): BadgeVariant => {\n switch (normalizeOfacStatus(status)) {\n case \"NO MATCH\":\n case \"NO_MATCH\":\n return \"ofac_no_match\"\n case \"REVIEW\":\n return \"ofac_review\"\n case \"CLEARED\":\n return \"ofac_cleared\"\n case \"CONFIRMED\":\n return \"ofac_confirmed\"\n case \"BLOCKED\":\n return \"ofac_blocked\"\n default:\n return \"secondary\"\n }\n}\n","import type { ComponentProps } from \"react\";\nimport { ChevronRight, Shield } from \"lucide-react\";\nimport { Badge } from \"@/components/ui/badge\";\nimport type { OFACCheck } from \"@/lib/mock-data/ofac-data\";\nimport { cn } from \"@/lib/utils\";\nimport { getOfacBadgeVariant, normalizeOfacStatus } from \"@/lib/utils/ofac-utils\";\n\ninterface OfacHeaderCardProps {\n latestOFAC?: OFACCheck;\n onNavigateToOFAC?: (ofacCheckId?: string) => void;\n className?: string;\n}\n\ntype OfacBadgeVariant = ComponentProps<typeof Badge>[\"variant\"];\n\nconst getOfacToneClasses = (status?: string) => {\n // Only used for pill border + shield icon (badge styling stays as-is)\n switch (normalizeOfacStatus(status)) {\n case \"CLEARED\":\n return { border: \"border-success\", icon: \"text-success\" };\n case \"NO MATCH\":\n case \"NO_MATCH\":\n return { border: \"border-primary\", icon: \"text-primary\" };\n case \"REVIEW\":\n return { border: \"border-warning\", icon: \"text-warning\" };\n case \"CONFIRMED\":\n return { border: \"border-destructive\", icon: \"text-destructive\" };\n case \"BLOCKED\":\n return { border: \"border-foreground\", icon: \"text-foreground\" };\n default:\n return { border: \"border-input\", icon: \"text-muted-foreground\" };\n }\n};\n\nconst formatOfacDate = (iso?: string) => {\n if (!iso) return \"—\";\n const d = new Date(iso);\n if (Number.isNaN(d.getTime())) return \"—\";\n return new Intl.DateTimeFormat(undefined, {\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n }).format(d);\n};\n\nexport const OfacHeaderCard = ({ latestOFAC, onNavigateToOFAC, className }: OfacHeaderCardProps) => {\n if (!latestOFAC) return null;\n\n const tone = getOfacToneClasses(latestOFAC.status);\n const badgeVariant = getOfacBadgeVariant(latestOFAC.status) as OfacBadgeVariant;\n\n return (\n <button\n type=\"button\"\n onClick={() => onNavigateToOFAC?.(latestOFAC.id)}\n className={cn(\n \"group inline-flex h-9 items-center gap-2 rounded-md border bg-background px-2 text-sm\",\n tone.border,\n \"hover:bg-accent hover:text-accent-foreground\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"ring-offset-background\",\n className,\n )}\n aria-label={`View OFAC check from ${formatOfacDate(latestOFAC.created)}`}\n >\n <Shield className={cn(\"h-4 w-4\", tone.icon)} />\n\n <span className=\"text-xs font-medium text-foreground\">{formatOfacDate(latestOFAC.created)}</span>\n\n {latestOFAC.status ? (\n <Badge variant={badgeVariant} className=\"text-[10px]\">\n {latestOFAC.status}\n </Badge>\n ) : (\n <span className=\"text-xs text-muted-foreground\">—</span>\n )}\n\n <ChevronRight\n aria-hidden=\"true\"\n className={cn(\n \"h-3 w-3 transition-transform opacity-60\",\n tone.icon,\n \"group-hover:translate-x-0.5 group-hover:opacity-100\",\n )}\n />\n\n </button>\n );\n};\n","import { useState } from \"react\"\nimport { Button } from \"@/components/ui/button\"\nimport { BusinessProfileCard } from \"@/components/form-sections/BusinessProfileCard\"\nimport { BusinessStatusCard } from \"@/components/form-sections/BusinessStatusCard\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { StatusBadge } from \"@/components/ui/status-badge\"\nimport { CIPStatusBadge } from \"@/components/ui/cip-status-badge\"\nimport { EntityTypeBadge } from \"@/components/ui/entity-type-badge\"\nimport { SubTypeBadge } from \"@/components/ui/sub-type-badge\"\nimport { EditableInfoField } from \"@/components/ui/editable-info-field\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { Plus, Trash2, Wallet, Users } from \"lucide-react\"\nimport { PageLayout } from \"@/components/ui/page-layout\"\nimport { UBOCard } from \"@/components/business/UBOCard\"\nimport { AddAccountDialog } from \"@/components/business/AddAccountDialog\"\nimport { BusinessDocuments } from \"@/components/business/BusinessDocuments\"\nimport type { UBO } from \"@/lib/mock-data/ubo-data\"\nimport type { BusinessDocument } from \"@/lib/mock-data/document-data\"\nimport type { OFACCheck } from \"@/lib/mock-data/ofac-data\"\nimport type { ReactNode } from \"react\"\nimport type { IdentityVerification } from \"@/lib/mock-data/identity-verification-data\"\nimport type { BusinessProfile } from \"@/lib/schemas/business-schemas\"\nimport type { UBOFormData } from \"@/lib/schemas/ubo-schemas\"\nimport type { AccountFormData } from \"@/components/business/AddAccountDialog\"\nimport { OfacHeaderCard } from \"@/components/business/OfacHeaderCard\"\n\ninterface Business {\n id: string\n businessName: string\n status: string\n cipStatus: \"PASS\" | \"FAIL\" | \"IN_REVIEW\" | \"NOT_START\" | \"not_start\" | \"pending\" | \"rejected\" | \"verified\"\n type: \"Business\" | \"Individual\"\n subType: \"Customer\" | \"UBO\"\n}\n\ninterface BusinessAccount {\n id: string\n accountNumber: string\n routingNumber: string\n bankName: string\n bankAccountType: string\n}\n\ninterface SelectOption {\n value: string\n label: string\n}\n\ninterface BusinessDetailViewProps {\n business: Business\n businessProfile?: BusinessProfile\n identityVerification?: IdentityVerification\n latestOFAC?: OFACCheck\n onNavigateToOFAC?: (ofacCheckId?: string) => void\n showTimeline?: boolean\n businessUBOs: UBO[]\n businessDocuments: BusinessDocument[]\n businessAccounts: BusinessAccount[]\n currentStatus: string\n isEditingProfile: boolean\n statusOptions: SelectOption[]\n businessEntityTypeOptions: SelectOption[]\n onStatusChange: (newStatus: string) => void\n onProfileDataChange: (profile: BusinessProfile) => void\n onToggleProfileEdit: () => void\n onNavigateToAccounts: () => void\n onNavigateToCounterparty: () => void\n onAddAccount?: (data: AccountFormData) => Promise<void | boolean> | void | boolean\n onDeleteAccount?: (accountId: string) => Promise<void | boolean> | void | boolean\n onUBOClick: (customerId: string) => void\n onAddUBO?: (data: UBOFormData) => Promise<void | boolean> | void | boolean\n onRemoveUBO?: (uboId: string) => void\n onDocumentUpload: (file: File, metadata: { name: string; description: string; type: string }) => Promise<void>\n onDocumentDelete?: (documentId: string) => Promise<void | boolean> | void | boolean\n renderDocumentViewer?: (document: BusinessDocument) => ReactNode\n onRevealIdNumber?: () => Promise<string>\n isIdNumberRevealed?: boolean\n onToggleIdNumberVisibility?: () => void\n isLoadingIdNumber?: boolean\n revealedIdNumber?: string | null\n onProductIdClick?: (productId: number) => void\n}\n\nexport const BusinessDetailView = ({\n business,\n businessProfile,\n identityVerification,\n latestOFAC,\n onNavigateToOFAC,\n showTimeline = true,\n businessUBOs,\n businessDocuments,\n businessAccounts,\n currentStatus,\n isEditingProfile,\n statusOptions,\n businessEntityTypeOptions,\n onStatusChange,\n onProfileDataChange,\n onToggleProfileEdit,\n onNavigateToAccounts,\n onNavigateToCounterparty,\n onAddAccount,\n onDeleteAccount,\n onUBOClick,\n onAddUBO,\n onRemoveUBO,\n onDocumentUpload,\n onDocumentDelete,\n renderDocumentViewer,\n onRevealIdNumber,\n isIdNumberRevealed,\n onToggleIdNumberVisibility,\n isLoadingIdNumber,\n revealedIdNumber,\n onProductIdClick,\n}: BusinessDetailViewProps) => {\n const [showAddAccountDialog, setShowAddAccountDialog] = useState(false)\n\n const handleAddAccountSubmit = async (data: AccountFormData) => {\n if (!onAddAccount) {\n throw new Error(\"onAddAccount callback not provided\")\n }\n await onAddAccount(data)\n }\n\n const headerActions = [\n {\n label: \"Account\",\n variant: \"outline\" as const,\n onClick: onNavigateToAccounts,\n icon: Wallet,\n },\n {\n label: \"Counterparty\",\n variant: \"outline\" as const,\n onClick: onNavigateToCounterparty,\n icon: Users,\n },\n ]\n\n return (\n <PageLayout\n title={\n <div className=\"flex items-center gap-3\">\n <span>{business.businessName}</span>\n <EditableInfoField\n label=\"\"\n value={currentStatus}\n options={statusOptions}\n onChange={onStatusChange}\n renderValue={(value) => (\n <StatusBadge status={value.toUpperCase() as any} showDropdownIndicator />\n )}\n className=\"inline-block\"\n />\n <CIPStatusBadge status={business.cipStatus} />\n <EntityTypeBadge type={business.type} />\n <SubTypeBadge subType={business.subType} />\n </div>\n }\n actions={headerActions}\n headerContent={<OfacHeaderCard latestOFAC={latestOFAC} onNavigateToOFAC={onNavigateToOFAC} />}\n maxWidth=\"full\"\n >\n <div className=\"flex flex-col lg:flex-row items-start gap-4\">\n {/* Left Section: Main cards */}\n <div className=\"flex-1 space-y-4\">\n <BusinessProfileCard \n data={businessProfile}\n identityVerification={identityVerification}\n isEditing={isEditingProfile} \n onToggleEdit={onToggleProfileEdit}\n onDataChange={onProfileDataChange}\n onProductIdClick={onProductIdClick}\n onRevealIdNumber={onRevealIdNumber}\n isIdNumberRevealed={isIdNumberRevealed}\n onToggleIdNumberVisibility={onToggleIdNumberVisibility}\n isLoadingIdNumber={isLoadingIdNumber}\n revealedIdNumber={revealedIdNumber}\n businessEntityTypeOptions={businessEntityTypeOptions}\n />\n \n <UBOCard\n ubos={businessUBOs}\n onUBOClick={onUBOClick}\n onAddUBO={onAddUBO}\n onRemoveUBO={onRemoveUBO}\n />\n \n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-4\">\n <CardTitle>External Accounts</CardTitle>\n {businessAccounts.length === 0 ? (\n <Button size=\"sm\" variant=\"ghost\" onClick={() => setShowAddAccountDialog(true)}>\n <Plus className=\"h-4 w-4 mr-1\" />\n Account\n </Button>\n ) : (\n <Button\n size=\"sm\"\n variant=\"destructive\"\n onClick={() => onDeleteAccount?.(businessAccounts[0].id)}\n disabled={!onDeleteAccount}\n >\n <Trash2 className=\"h-4 w-4 mr-1\" />\n Delete\n </Button>\n )}\n </CardHeader>\n <CardContent>\n {businessAccounts.length === 0 ? (\n <div className=\"flex items-center justify-center gap-2 py-4 text-sm text-muted-foreground\">\n <Wallet className=\"h-5 w-5 opacity-50\" />\n <p>No external accounts found</p>\n </div>\n ) : (\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2\">\n <InfoField label=\"Routing Number\" value={businessAccounts[0].routingNumber || \"—\"} />\n <InfoField label=\"Account Number\" value={businessAccounts[0].accountNumber || \"—\"} />\n <InfoField label=\"Bank Name\" value={businessAccounts[0].bankName || \"—\"} />\n <InfoField label=\"Bank Account Type\" value={businessAccounts[0].bankAccountType || \"—\"} />\n </div>\n )}\n </CardContent>\n </Card>\n\n <BusinessDocuments \n businessId={business.id} \n documents={businessDocuments} \n onDocumentUpload={onDocumentUpload}\n onDocumentDelete={onDocumentDelete}\n renderDocumentViewer={renderDocumentViewer}\n />\n </div>\n\n {/* Right Section: Timeline */}\n {showTimeline && (\n <div className=\"lg:w-64\">\n <BusinessStatusCard isEditing={false} onToggleEdit={() => {}} />\n </div>\n )}\n </div>\n\n <AddAccountDialog\n open={showAddAccountDialog}\n onOpenChange={setShowAddAccountDialog}\n onSubmit={handleAddAccountSubmit}\n existingAccounts={businessAccounts.map((acc) => ({\n id: acc.id,\n number: acc.accountNumber,\n routingNumber: acc.routingNumber,\n type: acc.bankAccountType,\n }))}\n />\n </PageLayout>\n )\n}\n","import { useState, useEffect } from \"react\"\nimport { Button } from \"@/components/ui/button\"\nimport { Filter } from \"lucide-react\"\nimport { Sheet, SheetContent, SheetHeader, SheetTitle, SheetTrigger, SheetFooter } from \"@/components/ui/sheet\"\nimport { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { DatePicker } from \"@/components/ui/date-picker\"\n\ninterface BusinessFilters {\n name: string\n productName: string\n status: string\n createdDateStart?: Date\n createdDateEnd?: Date\n}\n\ninterface BusinessFiltersSheetProps {\n filters: BusinessFilters\n onFilterChange: (field: keyof BusinessFilters, value: string | Date | undefined) => void\n onResetFilters: () => void\n}\n\nexport const BusinessFiltersSheet = ({\n filters,\n onFilterChange,\n onResetFilters\n}: BusinessFiltersSheetProps) => {\n const [localFilters, setLocalFilters] = useState<BusinessFilters>(filters)\n const [open, setOpen] = useState(false)\n\n // Sync local state when filters prop changes\n useEffect(() => {\n setLocalFilters(filters)\n }, [filters])\n\n const handleLocalFilterChange = (field: keyof BusinessFilters, value: string | Date | undefined) => {\n setLocalFilters(prev => ({ ...prev, [field]: value }))\n }\n\n const handleApplyFilters = () => {\n // Apply all filter changes - React 18 automatically batches synchronous state updates\n // All onFilterChange calls will be batched into a single re-render\n Object.entries(localFilters).forEach(([key, value]) => {\n onFilterChange(key as keyof BusinessFilters, value)\n })\n // Close the sheet after applying\n setOpen(false)\n }\n\n const handleResetFilters = () => {\n const resetFilters: BusinessFilters = {\n name: \"\",\n productName: \"\",\n status: \"\",\n createdDateStart: undefined,\n createdDateEnd: undefined\n }\n setLocalFilters(resetFilters)\n onResetFilters()\n // Close the sheet after resetting\n setOpen(false)\n }\n \n return (\n <Sheet open={open} onOpenChange={setOpen}>\n <SheetTrigger asChild>\n <Button variant=\"outline\" className=\"gap-2\">\n <Filter className=\"h-4 w-4\" />\n Filters\n </Button>\n </SheetTrigger>\n <SheetContent side=\"right\" className=\"w-full sm:max-w-xl overflow-y-auto\">\n <SheetHeader>\n <SheetTitle>Business Filters</SheetTitle>\n </SheetHeader>\n \n <div className=\"space-y-6 py-6\">\n <EnhancedInput\n label=\"Name\"\n value={localFilters.name}\n onChange={(e) => handleLocalFilterChange(\"name\", e.target.value)}\n placeholder=\"Enter business name\"\n />\n\n <EnhancedInput\n label=\"Product Name\"\n value={localFilters.productName}\n onChange={(e) => handleLocalFilterChange(\"productName\", e.target.value)}\n placeholder=\"Enter product name\"\n />\n\n <EnhancedSelect\n label=\"Status\"\n value={localFilters.status}\n onValueChange={(value) => handleLocalFilterChange(\"status\", value)}\n placeholder=\"Select status\"\n options={[\n { value: \"ACTIVE\", label: \"Active\" },\n { value: \"INACTIVE\", label: \"Inactive\" },\n { value: \"BLOCKED\", label: \"Blocked\" },\n { value: \"PENDING_APPROVAL\", label: \"Pending Approval\" },\n { value: \"PENDING\", label: \"Pending\" },\n { value: \"INITIALIZED\", label: \"Initialized\" },\n { value: \"PENDING_UNBLOCKED\", label: \"Pending Unblocked\" },\n ]}\n />\n\n <div className=\"grid grid-cols-2 gap-4\">\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Created Date Start</label>\n <DatePicker\n date={localFilters.createdDateStart}\n onDateChange={(date) => handleLocalFilterChange(\"createdDateStart\", date)}\n placeholder=\"MM/DD/YYYY\"\n buttonClassName=\"w-full\"\n className=\"bg-background z-50\"\n />\n </div>\n\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Created Date End</label>\n <DatePicker\n date={localFilters.createdDateEnd}\n onDateChange={(date) => handleLocalFilterChange(\"createdDateEnd\", date)}\n placeholder=\"MM/DD/YYYY\"\n buttonClassName=\"w-full\"\n className=\"bg-background z-50\"\n />\n </div>\n </div>\n </div>\n\n <SheetFooter className=\"gap-2\">\n <Button variant=\"outline\" onClick={handleResetFilters}>\n Reset Filters\n </Button>\n <Button onClick={handleApplyFilters}>\n Apply Filters\n </Button>\n </SheetFooter>\n </SheetContent>\n </Sheet>\n )\n}\n","import { UseFormReturn } from \"react-hook-form\"\nimport { BusinessProfile } from \"@/lib/schemas/business-schemas\"\nimport { FormProvider } from \"@/components/ui/form-provider\"\nimport { FormInput } from \"@/components/ui/form-input\"\nimport { FormSelect } from \"@/components/ui/form-select\"\nimport { Card } from \"@/components/ui/card\"\nimport { BusinessTypeBadge } from \"@/components/ui/business-type-badge\"\n\ninterface BusinessFormProps {\n form: UseFormReturn<BusinessProfile>\n businessType: string\n onBusinessTypeChange: (value: string) => void\n onSubmit: (data: BusinessProfile) => void\n}\n\nexport const BusinessForm = ({\n form,\n businessType,\n onBusinessTypeChange,\n onSubmit\n}: BusinessFormProps) => {\n return (\n <FormProvider form={form}>\n <form onSubmit={form.handleSubmit(onSubmit)} className=\"space-y-6\">\n <Card className=\"p-6\">\n <div className=\"border-b border-border pb-4 mb-6\">\n <h2 className=\"text-lg font-semibold text-foreground\">Business Information</h2>\n </div>\n \n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6\">\n <FormInput\n name=\"name\"\n label=\"Business Name\"\n placeholder=\"Enter business name\"\n required\n />\n \n <FormInput\n name=\"productId\"\n label=\"Product ID\"\n placeholder=\"Enter product ID\"\n type=\"number\"\n required\n />\n \n <FormSelect\n name=\"businessIdType\"\n label=\"ID Number Type\"\n placeholder=\"Select ID type\"\n options={[\n { value: \"EIN\", label: \"EIN\" },\n { value: \"SSN\", label: \"SSN\" },\n { value: \"TIN\", label: \"TIN\" },\n { value: \"OTHER_ID\", label: \"Other ID\" }\n ]}\n />\n \n <FormInput\n name=\"idNumber\"\n label=\"ID Number\"\n placeholder=\"Enter ID number\"\n required\n />\n \n <FormInput\n name=\"dba\"\n label=\"DBA Name\"\n placeholder=\"Enter DBA name\"\n hint=\"Doing Business As name\"\n />\n \n <FormSelect\n name=\"businessEntityType\"\n label=\"Business Entity Type\"\n placeholder=\"Select business type\"\n options={[\n { value: \"SOLE_PROPRIETOR\", label: \"Sole Proprietor\" },\n { value: \"LIMITED_LIABILITY_COMPANY\", label: \"Limited Liability Company (LLC)\" },\n { value: \"CORPORATION\", label: \"S or C Corporation\" },\n { value: \"GENERAL_PARTNERSHIP\", label: \"General Partnership\" },\n { value: \"LIMITED_LIABILITY_PARTNERSHIP\", label: \"Limited Liability Partnership\" },\n { value: \"NON_PROFIT\", label: \"Non-Profit Corporation\" },\n { value: \"GOVERNMENT_ORGANIZATION\", label: \"Government Organization\" },\n { value: \"PUBLICLY_TRADED_COMPANY\", label: \"Publicly Traded Company\" },\n { value: \"TRUSTS\", label: \"Trusts\" }\n ]}\n />\n \n <FormInput\n name=\"incorporationState\"\n label=\"Incorporation State\"\n placeholder=\"Enter state\"\n />\n \n <FormInput\n name=\"formationDate\"\n label=\"Formation Date\"\n placeholder=\"YYYY-MM-DD\"\n type=\"date\"\n />\n \n <FormInput\n name=\"website\"\n label=\"Website\"\n placeholder=\"https://www.business.com\"\n />\n \n <FormInput\n name=\"mobilePhone\"\n label=\"Mobile Phone\"\n placeholder=\"+1 (555) 123-4567\"\n hint=\"Format: +1 (555) 123-4567\"\n />\n \n <FormInput\n name=\"mcc\"\n label=\"MCC\"\n placeholder=\"1234\"\n hint=\"4-digit Merchant Category Code\"\n />\n \n <FormInput\n name=\"naics\"\n label=\"NAICS\"\n placeholder=\"123456\"\n hint=\"6-digit industry classification\"\n />\n \n <FormInput\n name=\"achCompanyId\"\n label=\"ACH Company ID\"\n placeholder=\"Enter ACH company ID\"\n />\n </div>\n </Card>\n\n <Card className=\"p-6\">\n <div className=\"border-b border-border pb-4 mb-6\">\n <h2 className=\"text-lg font-semibold text-foreground\">Business Address</h2>\n </div>\n \n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6\">\n <FormInput\n name=\"address.line1\"\n label=\"Street Address\"\n placeholder=\"Enter street address\"\n />\n \n <FormInput\n name=\"address.line2\"\n label=\"Apartment/Suite\"\n placeholder=\"Enter apartment or suite number\"\n />\n \n <FormInput\n name=\"address.city\"\n label=\"City\"\n placeholder=\"Enter city\"\n />\n \n <FormInput\n name=\"address.state\"\n label=\"State\"\n placeholder=\"Enter state\"\n />\n \n <FormInput\n name=\"address.postalCode\"\n label=\"Postal Code\"\n placeholder=\"12345\"\n />\n \n <FormInput\n name=\"address.countryCode\"\n label=\"Country Code\"\n placeholder=\"e.g., US\"\n required\n />\n \n <FormInput\n name=\"address.type\"\n label=\"Address Type\"\n placeholder=\"e.g., MAILING\"\n />\n </div>\n </Card>\n\n <Card className=\"p-6\">\n <div className=\"border-b border-border pb-4 mb-6\">\n <h2 className=\"text-lg font-semibold text-foreground\">Contact Information</h2>\n </div>\n \n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6\">\n <FormInput\n name=\"contactPersonFirstName\"\n label=\"Contact First Name\"\n placeholder=\"Enter first name\"\n />\n \n <FormInput\n name=\"contactPersonLastName\"\n label=\"Contact Last Name\"\n placeholder=\"Enter last name\"\n />\n \n <FormInput\n name=\"contactPersonEmail\"\n label=\"Contact Email\"\n placeholder=\"contact@business.com\"\n type=\"email\"\n />\n \n <FormInput\n name=\"contactPersonPhone\"\n label=\"Contact Phone\"\n placeholder=\"+1 (555) 123-4567\"\n />\n </div>\n </Card>\n </form>\n </FormProvider>\n )\n}\n","import { UseFormReturn } from \"react-hook-form\"\nimport { BusinessProfile } from \"@/lib/schemas/business-schemas\"\nimport { PageLayout } from \"@/components/ui/page-layout\"\nimport { BusinessForm } from \"./BusinessForm\"\n\ninterface CreateBusinessViewProps {\n form: UseFormReturn<BusinessProfile>\n businessType: string\n onBusinessTypeChange: (value: string) => void\n onSubmit: (data: BusinessProfile) => void\n onCancel: () => void\n}\n\nexport const CreateBusinessView = ({\n form,\n businessType,\n onBusinessTypeChange,\n onSubmit,\n onCancel\n}: CreateBusinessViewProps) => {\n return (\n <PageLayout \n title=\"Create Business\"\n actions={[\n { label: \"Cancel\", variant: \"outline\", onClick: onCancel },\n { label: \"Create Business\", variant: \"default\", onClick: form.handleSubmit(onSubmit) }\n ]}\n >\n <BusinessForm\n form={form}\n businessType={businessType}\n onBusinessTypeChange={onBusinessTypeChange}\n onSubmit={onSubmit}\n />\n </PageLayout>\n )\n}\n","import { useState, useEffect } from \"react\"\nimport { Button } from \"@/components/ui/button\"\nimport { Filter } from \"lucide-react\"\nimport { Sheet, SheetContent, SheetHeader, SheetTitle, SheetTrigger, SheetFooter } from \"@/components/ui/sheet\"\nimport { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { DatePicker } from \"@/components/ui/date-picker\"\n\ninterface CounterpartyFilters {\n name: string\n type: string\n status: string\n createdDateStart?: Date\n createdDateEnd?: Date\n}\n\ninterface CounterpartyFiltersSheetProps {\n filters: CounterpartyFilters\n onFilterChange: (field: keyof CounterpartyFilters, value: string | Date | undefined) => void\n onResetFilters: () => void\n}\n\nexport const CounterpartyFiltersSheet = ({\n filters,\n onFilterChange,\n onResetFilters\n}: CounterpartyFiltersSheetProps) => {\n const [localFilters, setLocalFilters] = useState<CounterpartyFilters>(filters)\n const [open, setOpen] = useState(false)\n\n // Sync local state when filters prop changes\n useEffect(() => {\n setLocalFilters(filters)\n }, [filters])\n\n const handleLocalFilterChange = (field: keyof CounterpartyFilters, value: string | Date | undefined) => {\n setLocalFilters(prev => ({ ...prev, [field]: value }))\n }\n\n const handleApplyFilters = () => {\n // Apply all filter changes - React 18 automatically batches synchronous state updates\n Object.entries(localFilters).forEach(([key, value]) => {\n onFilterChange(key as keyof CounterpartyFilters, value)\n })\n // Close the sheet after applying\n setOpen(false)\n }\n\n const handleResetFilters = () => {\n const resetFilters: CounterpartyFilters = {\n name: \"\",\n type: \"\",\n status: \"\",\n createdDateStart: undefined,\n createdDateEnd: undefined\n }\n setLocalFilters(resetFilters)\n onResetFilters()\n // Close the sheet after resetting\n setOpen(false)\n }\n \n return (\n <Sheet open={open} onOpenChange={setOpen}>\n <SheetTrigger asChild>\n <Button variant=\"outline\" className=\"gap-2\">\n <Filter className=\"h-4 w-4\" />\n Filters\n </Button>\n </SheetTrigger>\n <SheetContent side=\"right\" className=\"w-full sm:max-w-xl overflow-y-auto\">\n <SheetHeader>\n <SheetTitle>Counterparty Filters</SheetTitle>\n </SheetHeader>\n \n <div className=\"space-y-6 py-6\">\n <EnhancedInput\n label=\"Name\"\n value={localFilters.name}\n onChange={(e) => handleLocalFilterChange(\"name\", e.target.value)}\n placeholder=\"Enter counterparty name\"\n />\n\n <EnhancedSelect\n label=\"Type\"\n value={localFilters.type}\n onValueChange={(value) => handleLocalFilterChange(\"type\", value)}\n placeholder=\"Select type\"\n options={[\n { value: \"BUSINESS\", label: \"Business\" },\n { value: \"INDIVIDUAL\", label: \"Individual\" }\n ]}\n />\n\n <EnhancedSelect\n label=\"Status\"\n value={localFilters.status}\n onValueChange={(value) => handleLocalFilterChange(\"status\", value)}\n placeholder=\"Select status\"\n options={[\n { value: \"ACTIVE\", label: \"Active\" },\n { value: \"INACTIVE\", label: \"Inactive\" },\n { value: \"PENDING\", label: \"Pending\" },\n { value: \"SUSPENDED\", label: \"Suspended\" }\n ]}\n />\n\n <div className=\"grid grid-cols-2 gap-4\">\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Created Date Start</label>\n <DatePicker\n date={localFilters.createdDateStart}\n onDateChange={(date) => handleLocalFilterChange(\"createdDateStart\", date)}\n placeholder=\"MM/DD/YYYY\"\n buttonClassName=\"w-full\"\n className=\"bg-background z-50\"\n />\n </div>\n\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Created Date End</label>\n <DatePicker\n date={localFilters.createdDateEnd}\n onDateChange={(date) => handleLocalFilterChange(\"createdDateEnd\", date)}\n placeholder=\"MM/DD/YYYY\"\n buttonClassName=\"w-full\"\n className=\"bg-background z-50\"\n />\n </div>\n </div>\n </div>\n\n <SheetFooter className=\"flex gap-2\">\n <Button variant=\"outline\" onClick={handleResetFilters} className=\"flex-1\">\n Reset Filters\n </Button>\n <Button onClick={handleApplyFilters} className=\"flex-1\">\n Apply Filters\n </Button>\n </SheetFooter>\n </SheetContent>\n </Sheet>\n )\n}\n","import { Button } from \"@/components/ui/button\"\nimport { CounterpartyFiltersSheet } from \"@/components/counterparty/CounterpartyFiltersSheet\"\n\ninterface CounterpartiesViewProps {\n table: React.ReactNode\n filters: {\n name: string\n type: string\n status: string\n createdDateStart?: Date\n createdDateEnd?: Date\n }\n onFilterChange: (field: string, value: string | Date | undefined) => void\n onResetFilters: () => void\n onCreateCounterparty: () => void\n}\n\nexport const CounterpartiesView = ({\n table,\n filters,\n onFilterChange,\n onResetFilters,\n onCreateCounterparty\n}: CounterpartiesViewProps) => {\n return (\n <div className=\"flex flex-col h-screen bg-gradient-subtle\">\n {/* Fixed Header */}\n <div className=\"flex-none border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60\">\n <div className=\"container mx-auto px-4 py-6 max-w-none\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-3xl font-bold text-foreground\">Counterparties</h1>\n </div>\n <div className=\"flex items-center gap-2\">\n <CounterpartyFiltersSheet\n filters={filters}\n onFilterChange={onFilterChange}\n onResetFilters={onResetFilters}\n />\n <Button onClick={onCreateCounterparty}>\n Create Counterparty\n </Button>\n </div>\n </div>\n </div>\n </div>\n\n {/* Scrollable Content */}\n <div className=\"flex-1 overflow-hidden\">\n <div className=\"container mx-auto px-4 h-full max-w-none flex flex-col\">\n <div className=\"flex-1 mt-4 overflow-auto\">\n {table}\n </div>\n </div>\n </div>\n </div>\n )\n}\n","export interface CounterpartyBasicInfo {\n name: string\n status: string\n type: string\n businessType?: string\n description: string\n website?: string\n taxId?: string\n incorporationDate?: string\n legalStructure?: string\n}\n\nexport interface CounterpartyProfile {\n primaryContact: string\n contactEmail: string\n contactPhone: string\n secondaryContact?: string\n industry?: string\n region?: string\n}\n\nexport interface CounterpartyAddress {\n street: string\n city: string\n state: string\n postalCode: string\n country: string\n apartment?: string\n}\n\nexport const defaultCounterpartyBasicInfo: CounterpartyBasicInfo = {\n name: \"Acme Corporation\",\n status: \"active\",\n type: \"business\",\n businessType: \"corporation\",\n description: \"Leading technology solutions provider\",\n website: \"https://acme.com\",\n taxId: \"12-3456789\",\n incorporationDate: \"2020-01-15\",\n legalStructure: \"C-Corporation\"\n}\n\nexport const defaultCounterpartyDetail = {\n email: \"contact@acme.com\",\n phone: \"+1 (555) 123-4567\",\n dateOfBirth: \"1985-03-15\",\n idNumber: \"ID-123456789\",\n idType: \"product_id\",\n idValue: \"PROD-001\",\n address: {\n line1: \"123 Business Ave\",\n line2: \"Suite 100\",\n city: \"New York\",\n state: \"NY\",\n postalCode: \"10001\",\n countryCode: \"US\",\n type: \"MAILING\"\n }\n}\n\nexport const defaultCounterpartyProfile: CounterpartyProfile = {\n primaryContact: \"John Smith\",\n contactEmail: \"john.smith@acme.com\",\n contactPhone: \"+1 (555) 123-4567\",\n secondaryContact: \"Jane Doe\",\n industry: \"Technology\",\n region: \"North America\"\n}\n\nexport const defaultCounterpartyAddress: CounterpartyAddress = {\n street: \"123 Business Ave\",\n city: \"New York\",\n state: \"NY\",\n postalCode: \"10001\",\n country: \"US\",\n apartment: \"Suite 100\"\n}\n\n// Combined counterparty profile data that matches the schema\nexport const defaultCounterpartyProfileData = {\n legalName: \"Acme Corporation\",\n dbaName: \"ACME Tech\",\n businessType: \"corporation\",\n taxId: \"12-3456789\",\n businessPhone: \"+1 (555) 123-4567\",\n businessEmail: \"contact@acme.com\",\n website: \"https://acme.com\"\n}","import { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { FormProvider } from \"@/components/ui/form-provider\"\nimport { FormInput } from \"@/components/ui/form-input\"\nimport { FormSelect } from \"@/components/ui/form-select\"\nimport { useFormWithEditState } from \"@/hooks/useFormWithEditState\"\nimport { counterpartyDetailSchema, type CounterpartyDetail } from \"@/lib/schemas\"\nimport { defaultCounterpartyDetail } from \"@/lib/mock-data/counterparty-data\"\n\ninterface CounterpartyProfileCardProps {\n data?: Partial<CounterpartyDetail>\n onDataChange?: (data: CounterpartyDetail) => void\n isEditing?: boolean\n onToggleEdit?: () => void\n hideActions?: boolean\n className?: string\n onEntityClick?: (entityType: string, entityId: string) => void\n}\n\nexport const CounterpartyProfileCard = ({ \n data,\n onDataChange,\n isEditing = false,\n onToggleEdit,\n hideActions = false, \n className,\n onEntityClick\n}: CounterpartyProfileCardProps) => {\n const form = useFormWithEditState<CounterpartyDetail>({\n schema: counterpartyDetailSchema,\n defaultValues: { ...defaultCounterpartyDetail, ...data },\n initialEditing: isEditing,\n onToggleEdit,\n onSave: onDataChange,\n })\n\n const editContent = (\n <FormProvider form={form}>\n <div className=\"space-y-4\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <FormSelect\n disabled={true}\n name=\"idType\"\n label=\"Associated with\"\n placeholder=\"Select association type\"\n options={[\n { value: \"product_id\", label: \"Product ID\" },\n { value: \"business_id\", label: \"Business ID\" },\n { value: \"individual_id\", label: \"Individual ID\" },\n { value: \"account_number\", label: \"Account Number\" }\n ]}\n />\n \n <FormInput\n disabled={true}\n name=\"idValue\"\n label={form.watch(\"idType\") === \"product_id\" ? \"Product ID\" : \n form.watch(\"idType\") === \"business_id\" ? \"Business ID\" : \n form.watch(\"idType\") === \"individual_id\" ? \"Individual ID\" : \"Account Number\"}\n placeholder=\"Enter ID value\"\n />\n \n <FormInput\n name=\"email\"\n label=\"Email\"\n type=\"email\"\n placeholder=\"Enter email address\"\n />\n \n <FormInput\n name=\"phone\"\n label=\"Phone Number\"\n type=\"tel\"\n placeholder=\"Enter phone number\"\n />\n \n <FormInput\n name=\"dateOfBirth\"\n label=\"Date of Birth\"\n type=\"date\"\n placeholder=\"Select date of birth\"\n />\n \n <FormInput\n name=\"idNumber\"\n label=\"ID Number\"\n placeholder=\"Enter ID number\"\n />\n </div>\n\n <div className=\"grid grid-cols-1 gap-4\">\n <FormInput\n name=\"address.line1\"\n label=\"Street Address\"\n placeholder=\"Enter street address\"\n />\n \n <FormInput\n name=\"address.line2\"\n label=\"Apartment, suite, or floor\"\n placeholder=\"Enter apartment, suite, or floor\"\n />\n </div>\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <FormInput\n name=\"address.city\"\n label=\"City\"\n placeholder=\"Enter city\"\n />\n \n <FormInput\n name=\"address.state\"\n label=\"State\"\n placeholder=\"Enter state\"\n />\n \n <FormInput\n name=\"address.postalCode\"\n label=\"Postal Code\"\n placeholder=\"Enter postal code\"\n />\n \n <FormInput\n name=\"address.countryCode\"\n label=\"Country Code\"\n placeholder=\"e.g., US\"\n />\n </div>\n </div>\n </FormProvider>\n )\n\n const formValues = form.watch()\n const idTypeLabel = formValues?.idType === \"product_id\" ? \"Product ID\" : \n formValues?.idType === \"business_id\" ? \"Business ID\" : \n formValues?.idType === \"individual_id\" ? \"Individual ID\" : \"Account Number\"\n \n const viewContent = (\n <div className=\"space-y-3\">\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Associated with\" value={\n formValues?.idType === \"product_id\" ? \"Product ID\" : \n formValues?.idType === \"business_id\" ? \"Business ID\" : \n formValues?.idType === \"individual_id\" ? \"Individual ID\" : \"Account Number\"\n } layout=\"horizontal\" />\n <InfoField \n label={idTypeLabel} \n value={\n formValues?.idValue && formValues?.idType && onEntityClick ? (\n <button \n onClick={(e) => {\n e.preventDefault()\n onEntityClick(formValues.idType, formValues.idValue)\n }}\n className=\"text-primary hover:underline font-medium text-left cursor-pointer\"\n >\n {formValues?.idValue || \"-\"}\n </button>\n ) : (formValues?.idValue || \"-\")\n } \n layout=\"horizontal\" \n />\n </div>\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Email\" value={formValues?.email || \"-\"} layout=\"horizontal\" />\n <InfoField label=\"Phone Number\" value={formValues?.phone || \"-\"} layout=\"horizontal\" />\n </div>\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Date of Birth\" value={formValues?.dateOfBirth || \"-\"} layout=\"horizontal\" />\n <InfoField label=\"ID Number\" value={formValues?.idNumber || \"-\"} layout=\"horizontal\" />\n </div>\n <InfoField \n label=\"Address\" \n value={formValues?.address ? `${formValues.address.line1 || ''}${formValues.address.line2 ? ', ' + formValues.address.line2 : ''}, ${formValues.address.city || ''}, ${formValues.address.state || ''} ${formValues.address.postalCode || ''}, ${formValues.address.countryCode || ''}` : \"-\"} \n layout=\"horizontal\" \n />\n </div>\n )\n\n return (\n <EditableFormCard\n title=\"Profile Information\"\n variant=\"subtle\"\n className={className}\n isEditing={form.isEditing}\n onToggleEdit={form.handleToggleEdit}\n onSave={form.handleSave}\n onCancel={form.handleCancel}\n hideActions={hideActions}\n editContent={editContent}\n viewContent={viewContent}\n />\n )\n}","import { FormCard } from \"@/components/ui/form-card\"\nimport { CheckCircle, Circle, UserPlus, Edit } from \"lucide-react\"\nimport { cn } from \"@/lib/utils\"\n\ninterface TimelineEvent {\n id: string\n action: string\n user: string\n details?: string\n status?: string\n timestamp: string\n}\n\ninterface CounterpartyStatusCardProps {\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n}\n\nconst mockCounterpartyTimeline: TimelineEvent[] = [\n {\n id: \"1\",\n action: \"Counterparty Created\",\n user: \"admin\",\n details: \"Initial counterparty setup\",\n status: \"Active\",\n timestamp: \"2024-01-15 10:30:00\"\n },\n {\n id: \"2\",\n action: \"Profile Updated\",\n user: \"admin\",\n details: \"Updated counterparty information\",\n timestamp: \"2024-01-20 14:22:00\"\n },\n {\n id: \"3\",\n action: \"OFAC Check Completed\",\n user: \"System\",\n details: \"Automated compliance check\",\n status: \"Verified\",\n timestamp: \"2024-01-20 14:30:00\"\n }\n]\n\nexport const CounterpartyStatusCard = ({ isEditing, onToggleEdit, className }: CounterpartyStatusCardProps) => {\n const getIcon = (action: string) => {\n if (action.includes(\"Created\")) return <Circle className=\"h-4 w-4\" />\n if (action.includes(\"Assigned\")) return <UserPlus className=\"h-4 w-4\" />\n if (action.includes(\"Updated\") || action.includes(\"Modified\") || action.includes(\"Check\")) return <Edit className=\"h-4 w-4\" />\n if (action.includes(\"Completed\") || action.includes(\"Verified\")) return <CheckCircle className=\"h-4 w-4\" />\n return <Circle className=\"h-4 w-4\" />\n }\n\n const getStatusColor = (status?: string) => {\n switch (status) {\n case \"Active\":\n case \"Verified\":\n return \"text-success\"\n case \"Pending\":\n return \"text-warning\"\n default:\n return \"text-muted-foreground\"\n }\n }\n\n return (\n <FormCard \n title=\"Timeline\"\n className={className}\n >\n <div className=\"space-y-3\">\n {mockCounterpartyTimeline.map((event, index) => (\n <div key={event.id} className=\"relative pl-6 pb-3\">\n {/* Timeline line */}\n {index !== mockCounterpartyTimeline.length - 1 && (\n <div className=\"absolute left-[7px] top-5 bottom-0 w-[2px] bg-border\" />\n )}\n \n {/* Icon */}\n <div className={cn(\n \"absolute left-0 top-0 flex-none\",\n getStatusColor(event.status)\n )}>\n <div className=\"h-4 w-4\">\n {getIcon(event.action)}\n </div>\n </div>\n \n {/* Content */}\n <div className=\"space-y-0.5\">\n <p className=\"text-xs font-medium text-foreground\">{event.action}</p>\n <p className=\"text-xs text-muted-foreground\">by {event.user}</p>\n {event.details && (\n <p className=\"text-xs text-muted-foreground\">{event.details}</p>\n )}\n {event.status && (\n <p className={cn(\"text-xs font-medium\", getStatusColor(event.status))}>\n Status: {event.status}\n </p>\n )}\n <p className=\"text-xs text-muted-foreground/70 pt-0.5\">\n {event.timestamp}\n </p>\n </div>\n </div>\n ))}\n </div>\n </FormCard>\n )\n}\n","import { Badge } from \"@/components/ui/badge\"\nimport { Building2, User } from \"lucide-react\"\n\ninterface CounterpartyTypeBadgeProps {\n type: \"BUSINESS\" | \"INDIVIDUAL\"\n className?: string\n}\n\nconst typeConfig = {\n BUSINESS: {\n variant: \"business\" as const,\n label: \"Business\",\n icon: Building2\n },\n INDIVIDUAL: {\n variant: \"individual\" as const,\n label: \"Individual\",\n icon: User\n }\n}\n\nexport const CounterpartyTypeBadge = ({ type, className }: CounterpartyTypeBadgeProps) => {\n const config = typeConfig[type]\n \n // Fallback if config is not found\n if (!config) {\n return (\n <Badge variant=\"secondary\" className={className}>\n <Building2 className=\"w-3 h-3 mr-1\" />\n {type || \"Unknown\"}\n </Badge>\n )\n }\n \n const Icon = config.icon\n\n return (\n <Badge variant={config.variant} className={className}>\n <Icon className=\"w-3 h-3 mr-1\" />\n {config.label}\n </Badge>\n )\n}","import { Card, CardContent, CardHeader } from \"@/components/ui/card\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { Button } from \"@/components/ui/button\"\nimport { MoreVertical, Building2, Globe, Landmark } from \"lucide-react\"\nimport { cn } from \"@/lib/utils\"\n\nexport interface PaymentMethodCardProps {\n type: \"ACH\" | \"Domestic Wire\" | \"International Wire\"\n fiId: string\n accountNumber: string\n bankName?: string\n accountType?: string\n beneficiaryBankName?: string\n correspondentBankId?: string\n intermediaryBankId?: string\n className?: string\n}\n\nexport const PaymentMethodCard = ({\n type,\n fiId,\n accountNumber,\n bankName,\n accountType,\n beneficiaryBankName,\n correspondentBankId,\n intermediaryBankId,\n className\n}: PaymentMethodCardProps) => {\n const getIcon = () => {\n switch (type) {\n case \"ACH\":\n return Building2\n case \"Domestic Wire\":\n return Landmark\n case \"International Wire\":\n return Globe\n default:\n return Building2\n }\n }\n\n const Icon = getIcon()\n\n return (\n <Card className={cn(\"hover:bg-muted/50 transition-colors\", className)}>\n <CardHeader className=\"flex flex-row items-start justify-between space-y-0 pb-3\">\n <div className=\"flex items-center gap-2\">\n <Icon className=\"h-4 w-4 text-muted-foreground\" />\n <span className=\"font-medium text-sm\">{type}</span>\n </div>\n <Button variant=\"ghost\" size=\"sm\" className=\"h-8 w-8 p-0\">\n <MoreVertical className=\"h-4 w-4\" />\n </Button>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n <div className=\"grid grid-cols-2 gap-3\">\n <InfoField label=\"Beneficiary FI ID\" value={fiId} />\n <InfoField label=\"Account Number\" value={accountNumber} />\n </div>\n\n {type === \"ACH\" && (\n <div className=\"grid grid-cols-2 gap-3\">\n {bankName && <InfoField label=\"Bank Name\" value={bankName} />}\n {accountType && <InfoField label=\"Account Type\" value={accountType} />}\n </div>\n )}\n\n {type === \"Domestic Wire\" && bankName && (\n <InfoField label=\"Bank Name\" value={bankName} />\n )}\n\n {type === \"International Wire\" && (\n <div className=\"space-y-3\">\n {beneficiaryBankName && (\n <InfoField label=\"Beneficiary Bank Name\" value={beneficiaryBankName} />\n )}\n <div className=\"grid grid-cols-2 gap-3\">\n {correspondentBankId && (\n <InfoField label=\"Correspondent Bank ID\" value={correspondentBankId} />\n )}\n {intermediaryBankId && (\n <InfoField label=\"Intermediary Bank ID\" value={intermediaryBankId} />\n )}\n </div>\n </div>\n )}\n </CardContent>\n </Card>\n )\n}\n","import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\ninterface ResponsiveGridProps {\n children: React.ReactNode\n type?: \"cards\" | \"forms\" | \"data\" | \"custom\"\n gap?: \"sm\" | \"md\" | \"lg\" | \"xl\"\n editMode?: boolean\n className?: string\n}\n\nconst typeClasses = {\n cards: \"grid-cols-1 md:grid-cols-2 lg:grid-cols-3\",\n forms: \"grid-cols-1 lg:grid-cols-2\", \n data: \"grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4\",\n custom: \"\"\n}\n\nconst gapClasses = {\n sm: \"gap-3\",\n md: \"gap-4\",\n lg: \"gap-6\", \n xl: \"gap-8\"\n}\n\nexport const ResponsiveGrid = React.forwardRef<HTMLDivElement, ResponsiveGridProps>(\n ({ children, type = \"cards\", gap = \"md\", editMode = false, className }, ref) => {\n const gridClasses = editMode ? \"grid-cols-1\" : typeClasses[type]\n \n return (\n <div \n ref={ref}\n className={cn(\n \"grid\",\n gridClasses,\n gapClasses[gap],\n className\n )}\n >\n {children}\n </div>\n )\n }\n)\n\nResponsiveGrid.displayName = \"ResponsiveGrid\"","import { Button } from \"@/components/ui/button\"\nimport { CounterpartyProfileCard } from \"@/components/form-sections/CounterpartyProfileCard\"\nimport { CounterpartyStatusCard } from \"@/components/form-sections/CounterpartyStatusCard\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { StatusBadge } from \"@/components/ui/status-badge\"\nimport { CounterpartyTypeBadge } from \"@/components/ui/counterparty-type-badge\"\nimport { EditableInfoField } from \"@/components/ui/editable-info-field\"\nimport { Plus, Wallet, FileText } from \"lucide-react\"\nimport { PageLayout } from \"@/components/ui/page-layout\"\nimport { PaymentMethodCard, PaymentMethodCardProps } from \"@/components/ui/payment-method-card\"\nimport { ResponsiveGrid } from \"@/components/ui/responsive-grid\"\nimport { DataTable, DataTableColumn } from \"@/components/ui/data-table\"\nimport { CounterpartyDetail } from \"@/lib/schemas\"\n\ninterface CounterpartyDetailViewProps {\n counterpartyName: string\n counterpartyType: string\n currentStatus: string\n isEditingProfile: boolean\n counterpartyProfileData: CounterpartyDetail\n mockPaymentMethods: PaymentMethodCardProps[]\n documents: any[]\n onStatusChange: (newStatus: string) => void\n onToggleProfileEdit: () => void\n onProfileDataChange: (data: CounterpartyDetail) => void\n onAddPaymentMethod: () => void\n onAddDocument: () => void\n onEntityClick?: (entityType: string, entityId: string) => void\n}\n\nexport const CounterpartyDetailView = ({\n counterpartyName,\n counterpartyType,\n currentStatus,\n isEditingProfile,\n counterpartyProfileData,\n mockPaymentMethods,\n documents,\n onStatusChange,\n onToggleProfileEdit,\n onProfileDataChange,\n onAddPaymentMethod,\n onAddDocument,\n onEntityClick\n}: CounterpartyDetailViewProps) => {\n // Document columns configuration\n const documentColumns: DataTableColumn[] = [\n {\n key: \"name\",\n title: \"Document Name\",\n sortable: true,\n width: \"40%\",\n },\n {\n key: \"type\",\n title: \"Type\",\n sortable: true,\n width: \"20%\",\n },\n {\n key: \"uploadedDate\",\n title: \"Uploaded\",\n sortable: true,\n width: \"20%\",\n },\n {\n key: \"status\",\n title: \"Status\",\n sortable: true,\n width: \"20%\",\n align: \"right\" as const,\n render: (value) => (\n <span className=\"capitalize\">{value}</span>\n ),\n },\n ]\n\n return (\n <PageLayout\n title={\n <div className=\"flex items-center gap-3\">\n <span>{counterpartyName}</span>\n <EditableInfoField\n label=\"\"\n value={currentStatus}\n options={[\n { value: \"ACTIVE\", label: \"Active\" },\n { value: \"BLOCKED\", label: \"Blocked\" },\n { value: \"DELETED\", label: \"Deleted\" },\n { value: \"NEEDS_OFAC\", label: \"Needs OFAC\" },\n { value: \"PENDING_UNBLOCK\", label: \"Pending Unblock\" }\n ]}\n onChange={onStatusChange}\n renderValue={(value) => <StatusBadge status={value as any} />}\n className=\"inline-block\"\n />\n <CounterpartyTypeBadge type={counterpartyType as \"BUSINESS\" | \"INDIVIDUAL\"} />\n </div>\n }\n maxWidth=\"full\"\n >\n <div className=\"flex flex-col lg:flex-row items-start gap-4\">\n {/* Left Section: Main cards */}\n <div className=\"flex-1 space-y-4\">\n <CounterpartyProfileCard \n data={counterpartyProfileData}\n isEditing={isEditingProfile} \n onToggleEdit={onToggleProfileEdit}\n onDataChange={onProfileDataChange}\n onEntityClick={onEntityClick}\n />\n \n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-4\">\n <CardTitle>Payment Methods</CardTitle>\n <Button size=\"sm\" variant=\"ghost\" onClick={onAddPaymentMethod}>\n <Plus className=\"h-4 w-4 mr-1\" />\n Method\n </Button>\n </CardHeader>\n <CardContent>\n {mockPaymentMethods.length === 0 ? (\n <div className=\"flex items-center justify-center gap-2 py-4 text-sm text-muted-foreground\">\n <Wallet className=\"h-5 w-5 opacity-50\" />\n <p>No payment methods configured</p>\n </div>\n ) : (\n <ResponsiveGrid type=\"forms\" gap=\"md\">\n {mockPaymentMethods.map((method, index) => (\n <PaymentMethodCard key={index} {...method} />\n ))}\n </ResponsiveGrid>\n )}\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-4\">\n <CardTitle>Documents</CardTitle>\n <Button size=\"sm\" variant=\"ghost\" onClick={onAddDocument}>\n <Plus className=\"h-4 w-4 mr-1\" />\n Document\n </Button>\n </CardHeader>\n <CardContent>\n {documents.length === 0 ? (\n <div className=\"flex items-center justify-center gap-2 py-4 text-sm text-muted-foreground\">\n <FileText className=\"h-5 w-5 opacity-50\" />\n <p>No documents found</p>\n </div>\n ) : (\n <DataTable\n columns={documentColumns}\n data={documents}\n />\n )}\n </CardContent>\n </Card>\n </div>\n\n {/* Right Section: Timeline */}\n <div className=\"lg:w-64\">\n <CounterpartyStatusCard isEditing={false} onToggleEdit={() => {}} />\n </div>\n </div>\n </PageLayout>\n )\n}\n","import { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\n\nexport const SimpleACHForm = () => {\n return (\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <EnhancedInput\n label=\"Routing Number\"\n placeholder=\"Enter 9-digit routing number\"\n pattern=\"[0-9]{9}\"\n maxLength={9}\n hint=\"9-digit routing number\"\n required\n />\n \n <EnhancedInput\n label=\"Account Number\"\n placeholder=\"Enter account number\"\n required\n />\n \n <EnhancedSelect\n label=\"Account Type\"\n placeholder=\"Select account type\"\n options={[\n { value: \"checking\", label: \"Checking\" },\n { value: \"savings\", label: \"Savings\" }\n ]}\n />\n </div>\n )\n}\n","import { useState } from \"react\"\nimport { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\n\nexport const SimpleWireForm = () => {\n const [wireType, setWireType] = useState<string>(\"domestic\")\n\n return (\n <div className=\"space-y-4\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <EnhancedSelect\n label=\"Wire Type\"\n placeholder=\"Select wire type\"\n value={wireType}\n onValueChange={setWireType}\n options={[\n { value: \"domestic\", label: \"Domestic\" },\n { value: \"international\", label: \"International\" }\n ]}\n />\n \n {wireType === \"domestic\" ? (\n <EnhancedInput\n label=\"Routing Number\"\n placeholder=\"Enter 9-digit routing number\"\n pattern=\"[0-9]{9}\"\n maxLength={9}\n hint=\"9-digit routing number\"\n required\n />\n ) : (\n <EnhancedInput\n label=\"BIC Number\"\n placeholder=\"Enter BIC/SWIFT code\"\n hint=\"Bank Identifier Code\"\n required\n />\n )}\n \n <EnhancedInput\n label=\"Account Number\"\n placeholder=\"Enter account number\"\n required\n />\n </div>\n </div>\n )\n}\n","import { useState } from \"react\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Plus, Trash2, ChevronDown, ChevronUp } from \"lucide-react\"\nimport { SimpleACHForm } from \"./SimpleACHForm\"\nimport { SimpleWireForm } from \"./SimpleWireForm\"\n\ninterface PaymentMethod {\n id: string\n type: \"ach\" | \"wire\"\n name: string\n collapsed: boolean\n}\n\ninterface PaymentInformationSectionProps {\n onPaymentMethodsChange?: (methods: PaymentMethod[]) => void\n}\n\nexport const PaymentInformationSection = ({ onPaymentMethodsChange }: PaymentInformationSectionProps = {}) => {\n const [paymentMethods, setPaymentMethods] = useState<PaymentMethod[]>([])\n const [showAddMenu, setShowAddMenu] = useState(false)\n\n const addPaymentMethod = (type: \"ach\" | \"wire\") => {\n const newMethod: PaymentMethod = {\n id: `${type}-${Date.now()}`,\n type,\n name: type === \"ach\" ? \"ACH Payment\" : \"Wire Transfer\",\n collapsed: false\n }\n const updatedMethods = [...paymentMethods, newMethod]\n setPaymentMethods(updatedMethods)\n onPaymentMethodsChange?.(updatedMethods)\n setShowAddMenu(false)\n }\n\n const removePaymentMethod = (id: string) => {\n const updatedMethods = paymentMethods.filter(method => method.id !== id)\n setPaymentMethods(updatedMethods)\n onPaymentMethodsChange?.(updatedMethods)\n }\n\n const toggleCollapse = (id: string) => {\n setPaymentMethods(paymentMethods.map(method => \n method.id === id ? { ...method, collapsed: !method.collapsed } : method\n ))\n }\n\n const renderPaymentMethodContent = (method: PaymentMethod) => {\n if (method.type === \"ach\") {\n return <SimpleACHForm />\n } else {\n return <SimpleWireForm />\n }\n }\n\n return (\n <div className=\"space-y-6\">\n {paymentMethods.map((method) => (\n <Card key={method.id} className=\"relative\">\n <CardHeader className=\"pb-3\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => toggleCollapse(method.id)}\n className=\"h-6 w-6\"\n >\n {method.collapsed ? (\n <ChevronDown className=\"h-4 w-4\" />\n ) : (\n <ChevronUp className=\"h-4 w-4\" />\n )}\n </Button>\n <CardTitle className=\"text-base\">{method.name}</CardTitle>\n <span className=\"text-xs bg-muted px-2 py-1 rounded-md uppercase font-medium\">\n {method.type}\n </span>\n </div>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => removePaymentMethod(method.id)}\n className=\"h-6 w-6 text-destructive hover:text-destructive/80 hover:bg-destructive/10\"\n >\n <Trash2 className=\"h-4 w-4\" />\n </Button>\n </div>\n </CardHeader>\n {!method.collapsed && (\n <CardContent>\n {renderPaymentMethodContent(method)}\n </CardContent>\n )}\n </Card>\n ))}\n\n <div className=\"relative\">\n {paymentMethods.length === 0 && (\n <p className=\"text-sm text-muted-foreground mb-2\">\n At least one payment method is required *\n </p>\n )}\n <Button\n variant=\"outline\"\n onClick={() => setShowAddMenu(!showAddMenu)}\n className=\"w-full border-dashed\"\n >\n <Plus className=\"h-4 w-4 mr-2\" />\n Add Payment Information\n </Button>\n \n {showAddMenu && (\n <div className=\"absolute top-full left-0 right-0 mt-2 bg-background border border-border rounded-md shadow-lg z-10\">\n <div className=\"p-2 space-y-1\">\n <Button\n variant=\"ghost\"\n onClick={() => addPaymentMethod(\"ach\")}\n className=\"w-full justify-start\"\n >\n Add ACH Payment\n </Button>\n <Button\n variant=\"ghost\"\n onClick={() => addPaymentMethod(\"wire\")}\n className=\"w-full justify-start\"\n >\n Add Wire Transfer\n </Button>\n </div>\n </div>\n )}\n </div>\n </div>\n )\n}","import { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { COUNTRY_OPTIONS, ADDRESS_TYPE_OPTIONS } from \"@/lib/constants\"\n\ninterface AddressFormProps {\n title: string\n description: string\n fieldPrefix?: string\n showAddressType?: boolean\n addressTypeOptions?: Array<{ value: string; label: string }>\n fieldOverrides?: {\n state?: Partial<React.ComponentProps<typeof EnhancedInput>>\n city?: Partial<React.ComponentProps<typeof EnhancedInput>>\n streetAddress?: Partial<React.ComponentProps<typeof EnhancedInput>>\n postalCode?: Partial<React.ComponentProps<typeof EnhancedInput>>\n apartment?: Partial<React.ComponentProps<typeof EnhancedInput>>\n }\n showApartment?: boolean\n}\n\nexport const AddressForm = ({ \n title, \n description, \n fieldPrefix = \"\",\n showAddressType = true,\n addressTypeOptions = ADDRESS_TYPE_OPTIONS.FI,\n fieldOverrides = {},\n showApartment = false\n}: AddressFormProps) => {\n const addressTypeLabel = fieldPrefix ? `${fieldPrefix} Address Type` : \"Address Type\"\n \n return (\n <div className=\"space-y-6\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <EnhancedInput\n label=\"Street Address\"\n placeholder=\"Enter street address\"\n hint={fieldPrefix ? `${fieldPrefix} street address` : \"Primary street address\"}\n {...fieldOverrides.streetAddress}\n />\n \n {showApartment && (\n <EnhancedInput\n label=\"Apt, Building etc\"\n placeholder=\"Additional address information\"\n hint=\"Additional address information\"\n {...fieldOverrides.apartment}\n />\n )}\n \n <EnhancedInput\n label=\"City\"\n placeholder=\"Enter city\"\n required\n {...fieldOverrides.city}\n />\n \n <EnhancedInput\n label=\"State\"\n placeholder=\"Enter state\"\n hint=\"State or province\"\n {...fieldOverrides.state}\n />\n \n <EnhancedInput\n label=\"Postal Code\"\n placeholder=\"12345\"\n {...fieldOverrides.postalCode}\n />\n \n <EnhancedSelect\n label=\"Country Code\"\n placeholder=\"Select country\"\n options={COUNTRY_OPTIONS}\n />\n \n {showAddressType && (\n <EnhancedSelect\n label={addressTypeLabel}\n placeholder=\"Select type\"\n options={addressTypeOptions}\n />\n )}\n </div>\n </div>\n )\n}","import * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n)\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n))\nLabel.displayName = LabelPrimitive.Root.displayName\n\nexport { Label }\n","import { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { Label } from \"@/components/ui/label\"\n\ninterface CounterpartyBasicInfoProps {\n value?: any\n onDataChange?: (data: any) => void\n}\n\nexport const CounterpartyBasicInfo = ({ value = {\n name: \"\",\n type: \"business\",\n email: \"\",\n phone: \"\",\n dateOfBirth: \"\",\n idNumber: \"\",\n idType: \"product_id\",\n idValue: \"\"\n}, onDataChange }: CounterpartyBasicInfoProps) => {\n const handleInputChange = (field: string, newValue: string) => {\n const updatedData = { ...value, [field]: newValue }\n onDataChange?.(updatedData)\n }\n\n const handleTypeChange = (type: string) => {\n handleInputChange(\"type\", type)\n }\n\n return (\n <div className=\"space-y-6\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <EnhancedInput\n label=\"Counterparty Name\"\n value={value.name}\n onChange={(e) => handleInputChange(\"name\", e.target.value)}\n placeholder=\"Enter counterparty name\"\n required\n />\n \n <div className=\"space-y-2\">\n <Label className=\"text-sm font-medium\">Counterparty Type</Label>\n <div className=\"flex gap-6 h-10 items-center\">\n <label className=\"flex items-center space-x-2 cursor-pointer\">\n <input\n type=\"radio\"\n name=\"counterpartyType\"\n value=\"business\"\n checked={value.type === \"business\"}\n onChange={() => handleTypeChange(\"business\")}\n className=\"w-4 h-4 text-primary border-border focus:ring-primary focus:ring-2\"\n />\n <span className=\"text-sm text-foreground\">Business</span>\n </label>\n <label className=\"flex items-center space-x-2 cursor-pointer\">\n <input\n type=\"radio\"\n name=\"counterpartyType\"\n value=\"individual\"\n checked={value.type === \"individual\"}\n onChange={() => handleTypeChange(\"individual\")}\n className=\"w-4 h-4 text-primary border-border focus:ring-primary focus:ring-2\"\n />\n <span className=\"text-sm text-foreground\">Individual</span>\n </label>\n </div>\n </div>\n \n <EnhancedSelect\n label=\"Associated with\"\n value={value.idType}\n onValueChange={(val) => handleInputChange(\"idType\", val)}\n options={[\n { value: \"product_id\", label: \"Product ID\" },\n { value: \"business_id\", label: \"Business ID\" },\n { value: \"individual_id\", label: \"Individual ID\" },\n { value: \"account_number\", label: \"Account Number\" }\n ]}\n />\n \n <EnhancedInput\n label={value.idType === \"product_id\" ? \"Product ID\" : \n value.idType === \"business_id\" ? \"Business ID\" : \n value.idType === \"individual_id\" ? \"Individual ID\" : \"Account Number\"}\n value={value.idValue}\n onChange={(e) => handleInputChange(\"idValue\", e.target.value)}\n placeholder={`Enter ${value.idType === \"product_id\" ? \"product ID\" : \n value.idType === \"business_id\" ? \"business ID\" : \n value.idType === \"individual_id\" ? \"individual ID\" : \"account number\"}`}\n required\n />\n </div>\n \n \n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <EnhancedInput\n label=\"Email\"\n type=\"email\"\n value={value.email}\n onChange={(e) => handleInputChange(\"email\", e.target.value)}\n placeholder=\"Enter email address\"\n />\n \n <EnhancedInput\n label=\"Phone Number\"\n type=\"tel\"\n value={value.phone}\n onChange={(e) => handleInputChange(\"phone\", e.target.value)}\n placeholder=\"Enter phone number\"\n />\n \n <EnhancedInput\n label=\"Date of Birth\"\n type=\"date\"\n value={value.dateOfBirth}\n onChange={(e) => handleInputChange(\"dateOfBirth\", e.target.value)}\n placeholder=\"Select date of birth\"\n />\n \n <EnhancedInput\n label=\"ID Number\"\n value={value.idNumber}\n onChange={(e) => handleInputChange(\"idNumber\", e.target.value)}\n placeholder=\"Enter ID number\"\n />\n </div>\n </div>\n )\n}","import { PageLayout } from \"@/components/ui/page-layout\"\nimport { PaymentInformationSection } from \"@/components/form-sections/PaymentInformationSection\"\nimport { AddressForm } from \"@/components/form-sections/AddressForm\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { CounterpartyBasicInfo } from \"@/components/form-sections/CounterpartyBasicInfo\"\n\ninterface CreateCounterpartyViewProps {\n counterpartyData: any\n paymentMethods: any[]\n onPaymentMethodsChange: (methods: any[]) => void\n onBasicInfoChange: (data: any) => void\n onCancel: () => void\n onSubmit: () => void\n}\n\nexport const CreateCounterpartyView = ({\n counterpartyData,\n paymentMethods,\n onPaymentMethodsChange,\n onBasicInfoChange,\n onCancel,\n onSubmit\n}: CreateCounterpartyViewProps) => {\n return (\n <PageLayout \n title=\"Create Counterparty\" \n description=\"Create a new counterparty with all required information\"\n actions={[\n { label: \"Cancel\", variant: \"outline\", onClick: onCancel },\n { label: \"Create Counterparty\", variant: \"default\", onClick: onSubmit }\n ]}\n >\n <div className=\"space-y-6\">\n {/* Basic Information Card */}\n <Card>\n <CardHeader>\n <CardTitle>Basic Information</CardTitle>\n </CardHeader>\n <CardContent>\n <CounterpartyBasicInfo value={counterpartyData} onDataChange={onBasicInfoChange} />\n </CardContent>\n </Card>\n\n {/* Address */}\n <Card>\n <CardHeader>\n <CardTitle>\n Address\n {paymentMethods.some(m => m.type === 'wire') && (\n <span className=\"text-destructive ml-1\">*</span>\n )}\n </CardTitle>\n </CardHeader>\n <CardContent>\n {paymentMethods.length === 0 && (\n <p className=\"text-sm text-muted-foreground mb-4\">\n Optional for ACH payments, required for wire transfers\n </p>\n )}\n {paymentMethods.some(m => m.type === 'wire') && (\n <p className=\"text-sm text-muted-foreground mb-4\">\n Required because you have wire payment methods\n </p>\n )}\n <AddressForm \n title=\"\"\n description=\"\"\n showApartment\n />\n </CardContent>\n </Card>\n\n {/* Payment Information Section */}\n <Card>\n <CardHeader>\n <CardTitle>Payment Configuration</CardTitle>\n </CardHeader>\n <CardContent>\n <PaymentInformationSection onPaymentMethodsChange={onPaymentMethodsChange} />\n </CardContent>\n </Card>\n </div>\n </PageLayout>\n )\n}\n","import { cn } from \"@/lib/utils\"\n\nfunction Skeleton({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(\"animate-pulse rounded-md bg-muted\", className)}\n {...props}\n />\n )\n}\n\nexport { Skeleton }\n","import { Badge } from \"@/components/ui/badge\"\nimport { Wallet, PiggyBank, CircleDollarSign, Landmark } from \"lucide-react\"\n\ntype AccountType = \"checking\" | \"savings\" | \"zero-balance\" | \"funding\"\n\ninterface AccountTypeBadgeProps {\n type: AccountType\n className?: string\n}\n\nconst typeConfig: Record<AccountType, {\n variant: \"checking\" | \"savings\" | \"zero-balance\" | \"funding\"\n label: string\n icon: typeof Wallet\n}> = {\n checking: {\n variant: \"checking\",\n label: \"Checking\",\n icon: Wallet\n },\n savings: {\n variant: \"savings\",\n label: \"Savings\",\n icon: PiggyBank\n },\n \"zero-balance\": {\n variant: \"zero-balance\",\n label: \"Zero Balance\",\n icon: CircleDollarSign\n },\n funding: {\n variant: \"funding\",\n label: \"Funding\",\n icon: Landmark\n }\n}\n\nexport const AccountTypeBadge = ({ type, className }: AccountTypeBadgeProps) => {\n const config = typeConfig[type] || typeConfig.checking\n const Icon = config.icon\n\n return (\n <Badge variant={config.variant} className={className}>\n <Icon className=\"w-3 h-3 mr-1\" />\n {config.label}\n </Badge>\n )\n}\n","import { FormCard } from \"@/components/ui/form-card\"\nimport { CheckCircle, Circle, UserPlus, Edit, DollarSign } from \"lucide-react\"\nimport { cn } from \"@/lib/utils\"\n\ninterface TimelineEvent {\n id: string\n action: string\n user: string\n details?: string\n status?: string\n timestamp: string\n}\n\ninterface AccountStatusCardProps {\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n}\n\nconst mockAccountTimeline: TimelineEvent[] = [\n {\n id: \"1\",\n action: \"Account Created\",\n user: \"admin\",\n details: \"Initial account setup\",\n status: \"Active\",\n timestamp: \"2025-08-03 10:30:00\"\n },\n {\n id: \"2\",\n action: \"Status Updated\",\n user: \"admin\",\n details: \"Account activated\",\n timestamp: \"2025-09-05 14:22:00\"\n },\n {\n id: \"3\",\n action: \"Transaction Processed\",\n user: \"System\",\n details: \"Wire transfer completed\",\n status: \"Posted\",\n timestamp: \"2025-09-10 09:15:00\"\n }\n]\n\nexport const AccountStatusCard = ({ isEditing, onToggleEdit, className }: AccountStatusCardProps) => {\n const getIcon = (action: string) => {\n if (action.includes(\"Created\")) return <Circle className=\"h-4 w-4\" />\n if (action.includes(\"Assigned\")) return <UserPlus className=\"h-4 w-4\" />\n if (action.includes(\"Updated\") || action.includes(\"Modified\")) return <Edit className=\"h-4 w-4\" />\n if (action.includes(\"Transaction\") || action.includes(\"Processed\")) return <DollarSign className=\"h-4 w-4\" />\n if (action.includes(\"Completed\") || action.includes(\"Verified\")) return <CheckCircle className=\"h-4 w-4\" />\n return <Circle className=\"h-4 w-4\" />\n }\n\n const getStatusColor = (status?: string) => {\n switch (status) {\n case \"Active\":\n case \"Verified\":\n case \"Posted\":\n return \"text-success\"\n case \"Pending\":\n return \"text-warning\"\n default:\n return \"text-muted-foreground\"\n }\n }\n\n return (\n <FormCard \n title=\"Timeline\"\n className={className}\n >\n <div className=\"space-y-3\">\n {mockAccountTimeline.map((event, index) => (\n <div key={event.id} className=\"relative pl-6 pb-3\">\n {/* Timeline line */}\n {index !== mockAccountTimeline.length - 1 && (\n <div className=\"absolute left-[7px] top-5 bottom-0 w-[2px] bg-border\" />\n )}\n \n {/* Icon */}\n <div className={cn(\n \"absolute left-0 top-0 flex-none\",\n getStatusColor(event.status)\n )}>\n <div className=\"h-4 w-4\">\n {getIcon(event.action)}\n </div>\n </div>\n \n {/* Content */}\n <div className=\"space-y-0.5\">\n <p className=\"text-xs font-medium text-foreground\">{event.action}</p>\n <p className=\"text-xs text-muted-foreground\">by {event.user}</p>\n {event.details && (\n <p className=\"text-xs text-muted-foreground\">{event.details}</p>\n )}\n {event.status && (\n <p className={cn(\"text-xs font-medium\", getStatusColor(event.status))}>\n Status: {event.status}\n </p>\n )}\n <p className=\"text-xs text-muted-foreground/70 pt-0.5\">\n {event.timestamp}\n </p>\n </div>\n </div>\n ))}\n </div>\n </FormCard>\n )\n}\n","import { ReactNode, useRef, useState, useEffect } from \"react\"\nimport { AlertCircle, RefreshCw, Users, ArrowLeftRight, CreditCard, Receipt, Edit, Plus, Send } from \"lucide-react\"\nimport { Skeleton } from \"@/components/ui/skeleton\"\nimport { Card, CardContent, CardHeader } from \"@/components/ui/card\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { EditableInfoField } from \"@/components/ui/editable-info-field\"\nimport { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { FormProvider } from \"@/components/ui/form-provider\"\nimport { FormInput } from \"@/components/ui/form-input\"\nimport { FormSelect } from \"@/components/ui/form-select\"\nimport { StatusBadge } from \"@/components/ui/status-badge\"\nimport { AccountTypeBadge } from \"@/components/ui/account-type-badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { AccountStatusCard } from \"@/components/form-sections/AccountStatusCard\"\nimport { cn, formatCurrency } from \"@/lib/utils\"\nimport { BusinessAccount } from \"@/lib/mock-data/business-account-data\"\nimport { UseFormReturn } from \"react-hook-form\"\n\nexport interface AccountFormValues {\n accountName: string\n canAcceptSweep: \"Yes\" | \"No\"\n fundingAccountNumber?: string\n sweepAccountNumber?: string\n}\n\nexport interface SelectOption {\n value: string\n label: string\n}\n\ninterface AccountDetailViewProps {\n account: BusinessAccount\n currentStatus: string\n onStatusChange: (status: string) => void\n statusOptions: SelectOption[]\n canAcceptSweepOptions: SelectOption[]\n form: UseFormReturn<AccountFormValues> & {\n isEditing: boolean\n handleToggleEdit: () => void\n handleSave: () => void\n handleCancel: () => void\n }\n onNavigateCustomer: () => void\n onNavigateCounterparty: () => void\n onNavigateLimits: () => void\n onNavigateTransactions: () => void\n onNavigateProduct?: () => void\n hideTransactionAction?: boolean\n hideTimeline?: boolean\n isLoading?: boolean\n error?: string | null\n onRetry?: () => void\n feesTable?: ReactNode\n feeCount?: number\n onScrollToFees?: () => void\n onAddFee?: () => void\n onCreateTransaction?: () => void\n}\n\n// Helper component to render skeleton or actual value\nconst SkeletonOr = ({ \n isLoading, \n skeleton, \n children \n}: { \n isLoading: boolean\n skeleton: ReactNode\n children: ReactNode \n}) => {\n return <>{isLoading ? skeleton : children}</>\n}\n\nexport const AccountDetailView = ({\n account,\n currentStatus,\n onStatusChange,\n statusOptions,\n canAcceptSweepOptions,\n form,\n onNavigateCustomer,\n onNavigateCounterparty,\n onNavigateLimits,\n onNavigateTransactions,\n onNavigateProduct,\n hideTransactionAction,\n hideTimeline,\n isLoading,\n error,\n onRetry,\n feesTable,\n feeCount,\n onScrollToFees,\n onAddFee,\n onCreateTransaction\n}: AccountDetailViewProps) => {\n // All hooks must be called before any conditional returns\n const formValues = form.watch()\n const balanceSectionRef = useRef<HTMLDivElement>(null)\n const scrollContainerRef = useRef<HTMLDivElement>(null)\n const feesSectionRef = useRef<HTMLDivElement>(null)\n const [showHeaderBalances, setShowHeaderBalances] = useState(false)\n\n const handleScrollToFees = () => {\n if (feesSectionRef.current && scrollContainerRef.current) {\n const container = scrollContainerRef.current\n const element = feesSectionRef.current\n const elementTop = element.offsetTop - container.offsetTop - 100\n container.scrollTo({ top: elementTop, behavior: 'smooth' })\n }\n onScrollToFees?.()\n }\n\n // Scroll detection for balance section\n // Re-run when isLoading changes to re-evaluate intersection after content swap\n useEffect(() => {\n const balanceSection = balanceSectionRef.current\n const scrollContainer = scrollContainerRef.current\n if (!balanceSection || !scrollContainer) return\n\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n // Only show header if user has actually scrolled (scrollTop > 0)\n // This prevents flash on initial load when observer first fires\n const hasScrolled = scrollContainer.scrollTop > 0\n // Show header only when the balance card is completely out of view\n setShowHeaderBalances(!entry.isIntersecting && hasScrolled)\n })\n },\n {\n root: scrollContainer,\n threshold: 0, // Trigger when element is completely out of view\n rootMargin: \"0px\"\n }\n )\n\n observer.observe(balanceSection)\n return () => observer.disconnect()\n }, [isLoading])\n\n // Error state - this is the only early return we keep\n if (error) {\n return (\n <div className=\"flex flex-col h-screen bg-gradient-subtle\">\n <div className=\"flex-1 flex items-center justify-center\">\n <div className=\"flex flex-col items-center gap-4 max-w-md text-center\">\n <div className=\"flex items-center gap-3 p-4 bg-destructive/10 border border-destructive/20 rounded-lg\">\n <AlertCircle className=\"h-5 w-5 text-destructive flex-shrink-0\" />\n <div className=\"space-y-1 text-left\">\n <p className=\"text-sm font-medium text-destructive\">Failed to load account</p>\n <p className=\"text-sm text-muted-foreground\">{error}</p>\n </div>\n </div>\n {onRetry && (\n <Button variant=\"outline\" onClick={onRetry}>\n <RefreshCw className=\"h-4 w-4 mr-2\" />\n Retry\n </Button>\n )}\n </div>\n </div>\n </div>\n )\n }\n\n const actions = [\n { label: \"Counterparties\", variant: \"outline\", onClick: onNavigateCounterparty, icon: Users },\n { label: \"Limits\", variant: \"outline\", onClick: onNavigateLimits, icon: CreditCard },\n ...(!hideTransactionAction ? [{ label: \"Transactions\", variant: \"outline\", onClick: onNavigateTransactions, icon: ArrowLeftRight }] : [])\n ]\n\n const loading = isLoading ?? false\n\n return (\n <div className=\"flex flex-col h-screen bg-gradient-subtle\">\n {/* Fixed Header - always renders, persists across loading states */}\n <div className=\"flex-none relative z-20\">\n <div className={cn(\n \"bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60\",\n !showHeaderBalances && \"border-b\"\n )}>\n <div className=\"container mx-auto px-4 py-4 max-w-none\">\n <div className=\"flex flex-col md:flex-row md:items-center md:justify-between gap-4\">\n <div className=\"flex flex-1 flex-col justify-center\">\n <div className=\"flex items-center gap-3\">\n {/* Account number */}\n <SkeletonOr isLoading={loading && !account?.number} skeleton={<Skeleton className=\"h-9 w-28\" />}>\n <h1 className=\"text-3xl font-bold text-foreground\">{account?.number}</h1>\n </SkeletonOr>\n \n {/* Account type badge */}\n <SkeletonOr \n isLoading={loading && !account?.type} \n skeleton={\n <div className=\"inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full border border-border bg-muted/50 h-6\">\n <Skeleton className=\"h-3 w-3 rounded-full\" />\n <Skeleton className=\"h-3 w-14\" />\n </div>\n }\n >\n <AccountTypeBadge type={account?.type as \"checking\" | \"savings\" | \"zero-balance\" | \"funding\"} />\n </SkeletonOr>\n \n {/* Status badge */}\n <SkeletonOr \n isLoading={loading && !currentStatus && !account?.status}\n skeleton={\n <div className=\"inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full border border-border bg-muted/50 h-6\">\n <Skeleton className=\"h-3 w-3 rounded-full\" />\n <Skeleton className=\"h-3 w-12\" />\n <Skeleton className=\"h-3 w-3\" />\n </div>\n }\n >\n <EditableInfoField\n label=\"\"\n value={currentStatus}\n options={statusOptions}\n onChange={onStatusChange}\n renderValue={(value) => <StatusBadge status={value as any} showDropdownIndicator />}\n className=\"inline-block\"\n />\n </SkeletonOr>\n </div>\n </div>\n\n <div className=\"flex w-full items-center justify-start gap-2 overflow-x-auto md:w-auto md:justify-end\">\n <div className=\"flex shrink-0 items-center gap-2\">\n {feeCount !== undefined && feeCount > 0 && (\n <button\n onClick={handleScrollToFees}\n className=\"inline-flex items-center gap-2 px-4 py-2 rounded-md text-sm font-medium transition-colors border border-primary/30 bg-primary/5 text-primary hover:bg-primary/10\"\n >\n <Receipt className=\"h-4 w-4\" />\n {feeCount} {feeCount === 1 ? 'Fee' : 'Fees'}\n </button>\n )}\n {actions.map((action, index) => {\n const Icon = action.icon\n return (\n <button\n key={index}\n onClick={action.onClick}\n className=\"inline-flex items-center gap-2 px-4 py-2 rounded-md text-sm font-medium transition-colors border border-input bg-background hover:bg-accent hover:text-accent-foreground\"\n >\n {Icon && <Icon className=\"h-4 w-4\" />}\n {action.label}\n </button>\n )\n })}\n </div>\n </div>\n </div>\n </div>\n </div>\n \n {/* Expandable balance bar - overlays content, attached to header */}\n <div \n className={cn(\n \"absolute left-0 right-0 top-full transition-all duration-300 ease-out\",\n showHeaderBalances \n ? \"translate-y-0 opacity-100 pointer-events-auto\" \n : \"-translate-y-2 opacity-0 pointer-events-none\"\n )}\n >\n <div className=\"w-full px-4 pb-4 bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60 border-b\">\n <div className=\"w-full\">\n <div className=\"p-4 rounded-lg bg-gradient-to-br from-primary/10 via-primary/5 to-background border border-primary/20\">\n <div className=\"flex items-center gap-6\">\n <div>\n <p className=\"text-xs text-muted-foreground\">Account Balance</p>\n <SkeletonOr isLoading={loading && account?.accountBalance === undefined} skeleton={<Skeleton className=\"h-5 w-20\" />}>\n <p className=\"text-sm font-bold\">{formatCurrency(account?.accountBalance ?? 0)}</p>\n </SkeletonOr>\n </div>\n <div>\n <p className=\"text-xs text-muted-foreground\">Available</p>\n <SkeletonOr isLoading={loading && account?.availableBalance === undefined} skeleton={<Skeleton className=\"h-5 w-20\" />}>\n <p className=\"text-sm font-bold\">{formatCurrency(account?.availableBalance ?? 0)}</p>\n </SkeletonOr>\n </div>\n <div>\n <p className=\"text-xs text-muted-foreground\">Settled</p>\n <SkeletonOr isLoading={loading && account?.settledBalance === undefined} skeleton={<Skeleton className=\"h-5 w-20\" />}>\n <p className=\"text-sm font-semibold\">{formatCurrency(account?.settledBalance ?? 0)}</p>\n </SkeletonOr>\n </div>\n <div>\n <p className=\"text-xs text-muted-foreground\">Pending Credits</p>\n <SkeletonOr isLoading={loading && account?.pendingCredits === undefined} skeleton={<Skeleton className=\"h-5 w-20\" />}>\n <p className=\"text-sm font-semibold text-success\">+{formatCurrency(account?.pendingCredits ?? 0)}</p>\n </SkeletonOr>\n </div>\n <div>\n <p className=\"text-xs text-muted-foreground\">Pending Debits</p>\n <SkeletonOr isLoading={loading && account?.pendingDebits === undefined} skeleton={<Skeleton className=\"h-5 w-20\" />}>\n <p className=\"text-sm font-semibold text-destructive\">-{formatCurrency(account?.pendingDebits ?? 0)}</p>\n </SkeletonOr>\n </div>\n <div>\n <p className=\"text-xs text-muted-foreground\">Funds on Hold</p>\n <SkeletonOr isLoading={loading && account?.fundsOnHold === undefined} skeleton={<Skeleton className=\"h-5 w-20\" />}>\n <p className={cn(\"text-sm font-semibold\", (account?.fundsOnHold ?? 0) > 0 && \"text-warning\")}>\n {formatCurrency(account?.fundsOnHold ?? 0)}\n </p>\n </SkeletonOr>\n </div>\n {/* Create Payment button */}\n <div className=\"ml-auto\">\n <Button \n size=\"sm\"\n onClick={onCreateTransaction}\n >\n <Send className=\"h-4 w-4 mr-2\" />\n Create Payment\n </Button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n {/* Scrollable Content - PERSISTS across loading states */}\n <div ref={scrollContainerRef} className=\"flex-1 overflow-y-auto\">\n <div className=\"container mx-auto px-4 py-6 max-w-none\">\n <div className=\"flex flex-col lg:flex-row items-start gap-4\">\n {/* Left Section: Main cards */}\n <div className={cn(\"flex-1 space-y-4\", hideTimeline && \"w-full\")}>\n {loading ? (\n // Skeleton state for main card\n <Card variant=\"subtle\" fullHeight>\n <CardHeader direction=\"row\" size=\"sm\">\n <div className=\"space-y-1\">\n <div className=\"flex items-center gap-2\">\n <SkeletonOr isLoading={!account?.name} skeleton={<Skeleton className=\"h-5 w-48\" />}>\n <h3 className=\"text-lg font-semibold leading-none tracking-tight\">{account?.name}</h3>\n </SkeletonOr>\n </div>\n </div>\n <div className=\"flex items-center gap-2\">\n <Button variant=\"ghost\" size=\"icon\">\n <Edit className=\"h-4 w-4\" />\n </Button>\n </div>\n </CardHeader>\n <CardContent size=\"sm\" fullHeight>\n {/* Balance Section - ref wraps just the balance details */}\n <div\n ref={balanceSectionRef}\n className=\"mb-6 p-6 rounded-lg bg-gradient-to-br from-primary/10 via-primary/5 to-background border border-primary/20\"\n >\n {/* Primary Balances */}\n <div className=\"flex items-end gap-8 mb-6\">\n <div>\n <p className=\"text-xs font-medium text-muted-foreground mb-1\">Account Balance</p>\n <SkeletonOr isLoading={account?.accountBalance === undefined} skeleton={<Skeleton className=\"h-9 w-32\" />}>\n <p className=\"text-3xl font-bold text-foreground tracking-tight\">\n {formatCurrency(account?.accountBalance ?? 0)}\n </p>\n </SkeletonOr>\n </div>\n <div>\n <p className=\"text-xs font-medium text-muted-foreground mb-1\">Available Balance</p>\n <SkeletonOr isLoading={account?.availableBalance === undefined} skeleton={<Skeleton className=\"h-9 w-32\" />}>\n <p className=\"text-3xl font-bold text-foreground tracking-tight\">\n {formatCurrency(account?.availableBalance ?? 0)}\n </p>\n </SkeletonOr>\n </div>\n {/* Create Payment button */}\n <div className=\"ml-auto\">\n <Button onClick={onCreateTransaction} disabled={loading}>\n <Send className=\"h-4 w-4 mr-2\" />\n Create Payment\n </Button>\n </div>\n </div>\n \n {/* Divider */}\n <div className=\"border-t border-border/50 mb-4\" />\n \n {/* Secondary Metrics */}\n <div className=\"grid grid-cols-2 md:grid-cols-4 gap-4\">\n <div>\n <p className=\"text-xs text-muted-foreground\">Settled Balance</p>\n <SkeletonOr isLoading={account?.settledBalance === undefined} skeleton={<Skeleton className=\"h-7 w-24\" />}>\n <p className=\"text-lg font-semibold\">{formatCurrency(account?.settledBalance ?? 0)}</p>\n </SkeletonOr>\n </div>\n <div>\n <p className=\"text-xs text-muted-foreground\">Pending Credits</p>\n <SkeletonOr isLoading={account?.pendingCredits === undefined} skeleton={<Skeleton className=\"h-7 w-24\" />}>\n <p className=\"text-lg font-semibold text-success\">+{formatCurrency(account?.pendingCredits ?? 0)}</p>\n </SkeletonOr>\n </div>\n <div>\n <p className=\"text-xs text-muted-foreground\">Pending Debits</p>\n <SkeletonOr isLoading={account?.pendingDebits === undefined} skeleton={<Skeleton className=\"h-7 w-24\" />}>\n <p className=\"text-lg font-semibold text-destructive\">-{formatCurrency(account?.pendingDebits ?? 0)}</p>\n </SkeletonOr>\n </div>\n <div>\n <p className=\"text-xs text-muted-foreground\">Funds on Hold</p>\n <SkeletonOr isLoading={account?.fundsOnHold === undefined} skeleton={<Skeleton className=\"h-7 w-24\" />}>\n <p className={cn(\"text-lg font-semibold\", (account?.fundsOnHold ?? 0) > 0 && \"text-warning\")}>\n {formatCurrency(account?.fundsOnHold ?? 0)}\n </p>\n </SkeletonOr>\n </div>\n </div>\n </div>\n\n {/* Account Details Grid */}\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <div>\n <p className=\"text-sm font-medium text-muted-foreground\">ID</p>\n <div className=\"mt-1 h-5 flex items-center\">\n <SkeletonOr isLoading={!account?.id} skeleton={<Skeleton className=\"h-3.5 w-20\" />}>\n <p className=\"text-sm leading-5\">{account?.id}</p>\n </SkeletonOr>\n </div>\n </div>\n <div>\n <p className=\"text-sm font-medium text-muted-foreground\">Customer ID</p>\n <div className=\"mt-1 h-5 flex items-center\">\n <SkeletonOr isLoading={!account?.customerName} skeleton={<Skeleton className=\"h-3.5 w-32\" />}>\n <p className=\"text-sm leading-5 text-primary\">{account?.customerName}</p>\n </SkeletonOr>\n </div>\n </div>\n <div>\n <p className=\"text-sm font-medium text-muted-foreground\">Account number</p>\n <div className=\"mt-1 h-5 flex items-center\">\n <SkeletonOr isLoading={!account?.number} skeleton={<Skeleton className=\"h-3.5 w-24\" />}>\n <p className=\"text-sm leading-5\">{account?.number}</p>\n </SkeletonOr>\n </div>\n </div>\n <div>\n <p className=\"text-sm font-medium text-muted-foreground\">Product</p>\n <div className=\"mt-1 h-5 flex items-center\">\n <SkeletonOr isLoading={!account?.institution} skeleton={<Skeleton className=\"h-3.5 w-28\" />}>\n <button \n onClick={onNavigateProduct} \n className=\"text-sm leading-5 text-primary hover:underline text-left\"\n >\n {account?.institution}\n </button>\n </SkeletonOr>\n </div>\n </div>\n <div>\n <p className=\"text-sm font-medium text-muted-foreground\">Account Name</p>\n <div className=\"mt-1 h-5 flex items-center\">\n <SkeletonOr isLoading={!account?.name} skeleton={<Skeleton className=\"h-3.5 w-40\" />}>\n <p className=\"text-sm leading-5\">{account?.name}</p>\n </SkeletonOr>\n </div>\n </div>\n <div>\n <p className=\"text-sm font-medium text-muted-foreground\">Can Accept Sweep</p>\n <div className=\"mt-1 h-5 flex items-center\">\n <Skeleton className=\"h-3.5 w-12\" />\n </div>\n </div>\n <div>\n <p className=\"text-sm font-medium text-muted-foreground\">Funding Account Number</p>\n <div className=\"mt-1 h-5 flex items-center\">\n <Skeleton className=\"h-3.5 w-24\" />\n </div>\n </div>\n <div>\n <p className=\"text-sm font-medium text-muted-foreground\">Sweep Account Number</p>\n <div className=\"mt-1 h-5 flex items-center\">\n <Skeleton className=\"h-3.5 w-24\" />\n </div>\n </div>\n </div>\n </CardContent>\n </Card>\n ) : (\n // Loaded state for main card\n <EditableFormCard\n title={account.name}\n variant=\"subtle\"\n isEditing={form.isEditing}\n onToggleEdit={form.handleToggleEdit}\n onSave={form.handleSave}\n onCancel={form.handleCancel}\n viewContent={\n <>\n {/* Balance Section - ref wraps just the balance details */}\n <div\n ref={balanceSectionRef}\n className=\"mb-6 p-6 rounded-lg bg-gradient-to-br from-primary/10 via-primary/5 to-background border border-primary/20\"\n >\n {/* Primary Balances */}\n <div className=\"flex items-end gap-8 mb-6\">\n <div>\n <p className=\"text-xs font-medium text-muted-foreground mb-1\">Account Balance</p>\n <p className=\"text-3xl font-bold text-foreground tracking-tight\">\n {formatCurrency(account.accountBalance)}\n </p>\n </div>\n \n <div>\n <p className=\"text-xs font-medium text-muted-foreground mb-1\">Available Balance</p>\n <p className=\"text-3xl font-bold text-foreground tracking-tight\">\n {formatCurrency(account.availableBalance)}\n </p>\n </div>\n \n {/* Create Payment button */}\n <div className=\"ml-auto\">\n <Button onClick={onCreateTransaction}>\n <Send className=\"h-4 w-4 mr-2\" />\n Create Payment\n </Button>\n </div>\n </div>\n \n {/* Divider */}\n <div className=\"border-t border-border/50 mb-4\" />\n \n {/* Secondary Metrics */}\n <div className=\"grid grid-cols-2 md:grid-cols-4 gap-4\">\n <div>\n <p className=\"text-xs text-muted-foreground\">Settled Balance</p>\n <p className=\"text-lg font-semibold\">{formatCurrency(account.settledBalance)}</p>\n </div>\n <div>\n <p className=\"text-xs text-muted-foreground\">Pending Credits</p>\n <p className=\"text-lg font-semibold text-success\">\n +{formatCurrency(account.pendingCredits)}\n </p>\n </div>\n <div>\n <p className=\"text-xs text-muted-foreground\">Pending Debits</p>\n <p className=\"text-lg font-semibold text-destructive\">\n -{formatCurrency(account.pendingDebits)}\n </p>\n </div>\n <div>\n <p className=\"text-xs text-muted-foreground\">Funds on Hold</p>\n <p className={cn(\n \"text-lg font-semibold\",\n account.fundsOnHold > 0 && \"text-warning\"\n )}>\n {formatCurrency(account.fundsOnHold)}\n </p>\n </div>\n </div>\n </div>\n {/* Account Details */}\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <InfoField label=\"ID\" value={account.id} />\n <InfoField\n label=\"Customer ID\"\n value={\n <button onClick={onNavigateCustomer} className=\"text-primary hover:underline text-left\">\n {account.customerName}\n </button>\n }\n />\n <InfoField label=\"Account number\" value={account.number} />\n <InfoField \n label=\"Product\" \n value={\n <button onClick={onNavigateProduct} className=\"text-primary hover:underline\">\n {account.institution}\n </button>\n } \n />\n <InfoField label=\"Account Name\" value={formValues.accountName} />\n <InfoField label=\"Can Accept Sweep\" value={formValues.canAcceptSweep} />\n <InfoField label=\"Funding Account Number\" value={formValues.fundingAccountNumber || \"-\"} />\n <InfoField label=\"Sweep Account Number\" value={formValues.sweepAccountNumber || \"-\"} />\n </div>\n </>\n }\n editContent={\n <FormProvider form={form}>\n <>\n {/* Balance Section (non-editable in edit mode) - ref for sticky header */}\n <div ref={balanceSectionRef} className=\"mb-6 p-6 rounded-lg bg-gradient-to-br from-primary/10 via-primary/5 to-background border border-primary/20\">\n {/* Primary Balances */}\n <div className=\"flex items-end gap-8 mb-6\">\n <div>\n <p className=\"text-xs font-medium text-muted-foreground mb-1\">Account Balance</p>\n <p className=\"text-3xl font-bold text-foreground tracking-tight\">\n {formatCurrency(account.accountBalance)}\n </p>\n </div>\n \n <div>\n <p className=\"text-xs font-medium text-muted-foreground mb-1\">Available Balance</p>\n <p className=\"text-3xl font-bold text-foreground tracking-tight\">\n {formatCurrency(account.availableBalance)}\n </p>\n </div>\n </div>\n \n {/* Divider */}\n <div className=\"border-t border-border/50 mb-4\" />\n \n {/* Secondary Metrics */}\n <div className=\"grid grid-cols-2 md:grid-cols-4 gap-4\">\n <div>\n <p className=\"text-xs text-muted-foreground\">Settled Balance</p>\n <p className=\"text-lg font-semibold\">{formatCurrency(account.settledBalance)}</p>\n </div>\n <div>\n <p className=\"text-xs text-muted-foreground\">Pending Credits</p>\n <p className=\"text-lg font-semibold text-success\">\n +{formatCurrency(account.pendingCredits)}\n </p>\n </div>\n <div>\n <p className=\"text-xs text-muted-foreground\">Pending Debits</p>\n <p className=\"text-lg font-semibold text-destructive\">\n -{formatCurrency(account.pendingDebits)}\n </p>\n </div>\n <div>\n <p className=\"text-xs text-muted-foreground\">Funds on Hold</p>\n <p className={cn(\n \"text-lg font-semibold\",\n account.fundsOnHold > 0 && \"text-warning\"\n )}>\n {formatCurrency(account.fundsOnHold)}\n </p>\n </div>\n </div>\n </div>\n {/* Account Details */}\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <InfoField label=\"ID\" value={account.id} />\n <InfoField\n label=\"Customer ID\"\n value={\n <button onClick={onNavigateCustomer} className=\"text-primary hover:underline text-left\">\n {account.customerName}\n </button>\n }\n />\n <InfoField label=\"Account number\" value={account.number} />\n <InfoField \n label=\"Product\" \n value={\n <button onClick={onNavigateProduct} className=\"text-primary hover:underline\">\n {account.institution}\n </button>\n } \n />\n <FormInput\n name=\"accountName\"\n label=\"Account Name\"\n placeholder=\"Enter account name\"\n required\n />\n <FormSelect\n name=\"canAcceptSweep\"\n label=\"Can Accept Sweep\"\n options={canAcceptSweepOptions}\n />\n <FormInput\n name=\"fundingAccountNumber\"\n label=\"Funding Account Number\"\n placeholder=\"Enter funding account number\"\n />\n <FormInput\n name=\"sweepAccountNumber\"\n label=\"Sweep Account Number\"\n placeholder=\"Enter sweep account number\"\n />\n </div>\n </>\n </FormProvider>\n }\n />\n )}\n\n {/* Fees Section - persists across loading states */}\n <div ref={feesSectionRef} className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <h2 className=\"text-xl font-semibold text-foreground\">Fees</h2>\n {onAddFee && !loading && (\n <Button size=\"sm\" onClick={onAddFee}>\n <Plus className=\"h-4 w-4 mr-1\" />\n Add Fee\n </Button>\n )}\n </div>\n <Card>\n <CardContent className=\"pt-6\">\n {loading ? (\n // Skeleton fees table\n <div className=\"rounded-md border\">\n <div className=\"overflow-x-auto\">\n <table className=\"w-full\">\n <thead>\n <tr className=\"border-b bg-muted/50\">\n <th style={{ width: \"80px\" }} className=\"px-3 py-2 text-left text-sm font-medium text-muted-foreground\">ID</th>\n <th style={{ width: \"160px\" }} className=\"px-3 py-2 text-left text-sm font-medium text-muted-foreground\">Fee Type</th>\n <th style={{ width: \"140px\" }} className=\"px-3 py-2 text-left text-sm font-medium text-muted-foreground\">Transaction Type</th>\n <th style={{ width: \"130px\" }} className=\"px-3 py-2 text-left text-sm font-medium text-muted-foreground\">Transaction Group</th>\n <th style={{ width: \"100px\" }} className=\"px-3 py-2 text-right text-sm font-medium text-muted-foreground\">Fee Amount</th>\n <th style={{ width: \"130px\" }} className=\"px-3 py-2 text-left text-sm font-medium text-muted-foreground\">Charging Account</th>\n <th style={{ width: \"140px\" }} className=\"px-3 py-2 text-left text-sm font-medium text-muted-foreground\">Settlement Account</th>\n </tr>\n </thead>\n <tbody>\n {Array.from({ length: 5 }).map((_, rowIndex) => (\n <tr key={rowIndex} className=\"border-b\">\n <td style={{ width: \"80px\" }} className=\"px-3 py-2\"><Skeleton className=\"h-3.5 w-full\" /></td>\n <td style={{ width: \"160px\" }} className=\"px-3 py-2\"><Skeleton className=\"h-3.5 w-full\" /></td>\n <td style={{ width: \"140px\" }} className=\"px-3 py-2\"><Skeleton className=\"h-3.5 w-full\" /></td>\n <td style={{ width: \"130px\" }} className=\"px-3 py-2\"><Skeleton className=\"h-3.5 w-full\" /></td>\n <td style={{ width: \"100px\" }} className=\"px-3 py-2 text-right\"><Skeleton className=\"h-3.5 w-full\" /></td>\n <td style={{ width: \"130px\" }} className=\"px-3 py-2\"><Skeleton className=\"h-3.5 w-full\" /></td>\n <td style={{ width: \"140px\" }} className=\"px-3 py-2\"><Skeleton className=\"h-3.5 w-full\" /></td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n ) : (\n feesTable || (\n <div className=\"text-center py-8 text-muted-foreground\">\n <p>No fees configured</p>\n </div>\n )\n )}\n </CardContent>\n </Card>\n </div>\n </div>\n\n {/* Right Section: Timeline */}\n {!hideTimeline && (\n <div className=\"lg:w-64\">\n {loading ? (\n // Skeleton timeline\n <Card>\n <CardHeader size=\"sm\">\n <h3 className=\"text-lg font-semibold leading-none tracking-tight\">Timeline</h3>\n </CardHeader>\n <CardContent size=\"sm\" className=\"space-y-4\">\n {Array.from({ length: 4 }).map((_, i) => (\n <div key={i} className=\"flex gap-3\">\n <Skeleton className=\"h-2 w-2 rounded-full mt-1.5 shrink-0\" />\n <div className=\"flex-1 space-y-1\">\n <Skeleton className=\"h-3.5 w-full\" />\n <Skeleton className=\"h-3 w-20\" />\n </div>\n </div>\n ))}\n </CardContent>\n </Card>\n ) : (\n <AccountStatusCard isEditing={false} onToggleEdit={() => {}} />\n )}\n </div>\n )}\n </div>\n </div>\n </div>\n </div>\n )\n}\n\n","import { useState, useEffect } from \"react\"\nimport { Filter } from \"lucide-react\"\nimport { Button } from \"@/components/ui/button\"\nimport { Sheet, SheetContent, SheetHeader, SheetTitle, SheetTrigger, SheetFooter } from \"@/components/ui/sheet\"\nimport { EnhancedInput } from \"@/components/ui/enhanced-input\"\n\nexport interface AccountFilters {\n accountNumber: string\n}\n\nexport interface AccountFiltersSheetProps {\n filters: AccountFilters\n onFilterChange: (field: keyof AccountFilters, value: string) => void\n onResetFilters: () => void\n onApplyFilters: () => void\n}\n\nexport const AccountFiltersSheet = ({\n filters,\n onFilterChange,\n onResetFilters,\n onApplyFilters\n}: AccountFiltersSheetProps) => {\n const [open, setOpen] = useState(false)\n const [localFilters, setLocalFilters] = useState<AccountFilters>(filters)\n\n // Sync local filters when parent filters change\n useEffect(() => {\n setLocalFilters(filters)\n }, [filters])\n\n const handleLocalChange = (field: keyof AccountFilters, value: string) => {\n setLocalFilters(prev => ({ ...prev, [field]: value }))\n }\n\n const handleApply = () => {\n // Propagate local filters to parent\n Object.keys(localFilters).forEach(key => {\n onFilterChange(key as keyof AccountFilters, localFilters[key as keyof AccountFilters])\n })\n onApplyFilters()\n setOpen(false)\n }\n\n const handleReset = () => {\n setLocalFilters({ accountNumber: \"\" })\n onResetFilters()\n setOpen(false)\n }\n\n return (\n <Sheet open={open} onOpenChange={setOpen}>\n <SheetTrigger asChild>\n <Button variant=\"outline\">\n <Filter className=\"mr-2 h-4 w-4\" />\n Filters\n </Button>\n </SheetTrigger>\n <SheetContent>\n <SheetHeader>\n <SheetTitle>Filter Accounts</SheetTitle>\n </SheetHeader>\n <div className=\"space-y-4 py-4\">\n <EnhancedInput\n label=\"Account Number\"\n value={localFilters.accountNumber}\n onChange={(e) => handleLocalChange(\"accountNumber\", e.target.value)}\n placeholder=\"Search by account number\"\n />\n </div>\n <SheetFooter>\n <Button variant=\"outline\" onClick={handleReset}>\n Reset\n </Button>\n <Button onClick={handleApply}>\n Apply Filters\n </Button>\n </SheetFooter>\n </SheetContent>\n </Sheet>\n )\n}\n","import { Skeleton } from \"@/components/ui/skeleton\"\n\ninterface AccountsTableSkeletonProps {\n hideBalanceColumns?: boolean\n}\n\nexport const AccountsTableSkeleton = ({ hideBalanceColumns }: AccountsTableSkeletonProps) => {\n return (\n <div className=\"space-y-4\">\n {/* Table */}\n <div className=\"rounded-md border\">\n <div className=\"overflow-x-auto\">\n <table className=\"w-full table-fixed\">\n {/* Table Header */}\n <thead>\n <tr className=\"border-b bg-muted/50\">\n <th style={{ width: \"140px\" }} className=\"px-3 py-2 text-left align-middle text-sm font-medium text-muted-foreground\">\n Account Number\n </th>\n <th style={{ width: \"100px\" }} className=\"px-3 py-2 text-left align-middle text-sm font-medium text-muted-foreground\">\n Type\n </th>\n <th style={{ width: \"180px\" }} className=\"px-3 py-2 text-left align-middle text-sm font-medium text-muted-foreground\">\n Account Name\n </th>\n <th style={{ width: \"160px\" }} className=\"px-3 py-2 text-left align-middle text-sm font-medium text-muted-foreground\">\n Customer Name\n </th>\n {!hideBalanceColumns && (\n <>\n <th style={{ width: \"140px\" }} className=\"px-3 py-2 text-right align-middle text-sm font-medium text-muted-foreground\">\n Account Balance\n </th>\n <th style={{ width: \"140px\" }} className=\"px-3 py-2 text-right align-middle text-sm font-medium text-muted-foreground\">\n Available Balance\n </th>\n </>\n )}\n <th style={{ width: \"100px\" }} className=\"px-3 py-2 text-left align-middle text-sm font-medium text-muted-foreground\">\n Status\n </th>\n <th style={{ width: \"120px\" }} className=\"px-3 py-2 text-left align-middle text-sm font-medium text-muted-foreground\">\n Create Date\n </th>\n </tr>\n </thead>\n \n {/* Table Body */}\n <tbody>\n {Array.from({ length: 10 }).map((_, index) => (\n <tr key={index} className=\"border-b\">\n <td style={{ width: \"140px\" }} className=\"px-3 py-2 align-middle\">\n <Skeleton className=\"h-4 w-24\" />\n </td>\n <td style={{ width: \"100px\" }} className=\"px-3 py-2 align-middle\">\n <Skeleton className=\"h-5 w-16 rounded-full\" />\n </td>\n <td style={{ width: \"180px\" }} className=\"px-3 py-2 align-middle\">\n <Skeleton className=\"h-4 w-32\" />\n </td>\n <td style={{ width: \"160px\" }} className=\"px-3 py-2 align-middle\">\n <Skeleton className=\"h-4 w-28\" />\n </td>\n {!hideBalanceColumns && (\n <>\n <td style={{ width: \"140px\" }} className=\"px-3 py-2 align-middle text-right\">\n <Skeleton className=\"h-4 w-20 ml-auto\" />\n </td>\n <td style={{ width: \"140px\" }} className=\"px-3 py-2 align-middle text-right\">\n <Skeleton className=\"h-4 w-20 ml-auto\" />\n </td>\n </>\n )}\n <td style={{ width: \"100px\" }} className=\"px-3 py-2 align-middle\">\n <Skeleton className=\"h-5 w-14 rounded-full\" />\n </td>\n <td style={{ width: \"120px\" }} className=\"px-3 py-2 align-middle\">\n <Skeleton className=\"h-4 w-20\" />\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n\n {/* Pagination */}\n <div className=\"flex items-center justify-between px-2\">\n <Skeleton className=\"h-4 w-44\" />\n <div className=\"flex items-center gap-2\">\n <Skeleton className=\"h-8 w-24 rounded-md\" />\n <Skeleton className=\"h-4 w-24\" />\n <Skeleton className=\"h-8 w-20 rounded-md\" />\n </div>\n </div>\n </div>\n )\n}\n","import { AlertCircle, RefreshCw, Inbox } from \"lucide-react\"\nimport { Button } from \"@/components/ui/button\"\nimport { AccountFiltersSheet, AccountFilters } from \"./AccountFiltersSheet\"\nimport { AccountsTableSkeleton } from \"./AccountsTableSkeleton\"\n\ninterface AccountsViewProps {\n table: React.ReactNode\n filters: AccountFilters\n onFilterChange: (field: keyof AccountFilters, value: string) => void\n onResetFilters: () => void\n onApplyFilters: () => void\n isLoading?: boolean\n error?: string | null\n onRetry?: () => void\n isEmpty?: boolean\n hasActiveFilters?: boolean\n hideBalanceColumns?: boolean\n}\n\nexport const AccountsView = ({\n table,\n filters,\n onFilterChange,\n onResetFilters,\n onApplyFilters,\n isLoading,\n error,\n onRetry,\n isEmpty,\n hasActiveFilters,\n hideBalanceColumns\n}: AccountsViewProps) => {\n const renderContent = () => {\n if (isLoading) {\n return (\n <div className=\"flex-1 mt-4 pb-6 overflow-auto\">\n <AccountsTableSkeleton hideBalanceColumns={hideBalanceColumns} />\n </div>\n )\n }\n\n if (error) {\n return (\n <div className=\"flex-1 flex items-center justify-center\">\n <div className=\"flex flex-col items-center gap-4 max-w-md text-center\">\n <div className=\"flex items-center gap-3 p-4 bg-destructive/10 border border-destructive/20 rounded-lg\">\n <AlertCircle className=\"h-5 w-5 text-destructive flex-shrink-0\" />\n <div className=\"space-y-1 text-left\">\n <p className=\"text-sm font-medium text-destructive\">Failed to load accounts</p>\n <p className=\"text-sm text-muted-foreground\">{error}</p>\n </div>\n </div>\n {onRetry && (\n <Button variant=\"outline\" onClick={onRetry}>\n <RefreshCw className=\"h-4 w-4 mr-2\" />\n Retry\n </Button>\n )}\n </div>\n </div>\n )\n }\n\n if (isEmpty) {\n return (\n <div className=\"flex-1 flex items-center justify-center\">\n <div className=\"flex flex-col items-center gap-4 max-w-md text-center\">\n <div className=\"flex h-16 w-16 items-center justify-center rounded-full bg-muted\">\n <Inbox className=\"h-8 w-8 text-muted-foreground\" />\n </div>\n <div className=\"space-y-2\">\n <h3 className=\"text-lg font-semibold text-foreground\">\n {hasActiveFilters ? \"No matching accounts\" : \"No accounts found\"}\n </h3>\n <p className=\"text-sm text-muted-foreground\">\n {hasActiveFilters \n ? \"Try adjusting your filters to find what you're looking for.\"\n : \"There are no accounts to display at this time.\"\n }\n </p>\n </div>\n {hasActiveFilters && (\n <Button variant=\"outline\" onClick={onResetFilters}>\n Clear filters\n </Button>\n )}\n </div>\n </div>\n )\n }\n\n return (\n <div className=\"flex-1 mt-4 pb-6 overflow-auto\">\n {table}\n </div>\n )\n }\n\n return (\n <div className=\"flex flex-col h-screen bg-gradient-subtle\">\n {/* Fixed Header */}\n <div className=\"flex-none border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60\">\n <div className=\"container mx-auto px-4 py-4 max-w-none\">\n <div className=\"flex items-center justify-between\">\n <h1 className=\"text-3xl font-bold text-foreground\">Accounts</h1>\n <AccountFiltersSheet\n filters={filters}\n onFilterChange={onFilterChange}\n onResetFilters={onResetFilters}\n onApplyFilters={onApplyFilters}\n />\n </div>\n </div>\n </div>\n\n {/* Scrollable Content */}\n <div className=\"flex-1 overflow-hidden\">\n <div className=\"container mx-auto px-4 h-full max-w-none flex flex-col\">\n {renderContent()}\n </div>\n </div>\n </div>\n )\n}\n","import { useEffect, useState } from \"react\"\nimport { Filter } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { DatePicker } from \"@/components/ui/date-picker\"\nimport { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { Sheet, SheetContent, SheetFooter, SheetHeader, SheetTitle, SheetTrigger } from \"@/components/ui/sheet\"\n\nexport interface IndividualsFilters {\n name: string\n productName: string\n status: string\n createdDateStart?: Date\n createdDateEnd?: Date\n}\n\nexport interface IndividualsFiltersSheetProps {\n filters: IndividualsFilters\n statusOptions: { value: string; label: string }[]\n onFilterChange: (field: keyof IndividualsFilters, value: string | Date | undefined) => void\n onResetFilters: () => void\n onApplyFilters: () => void\n}\n\nexport const IndividualsFiltersSheet = ({\n filters,\n statusOptions,\n onFilterChange,\n onResetFilters,\n onApplyFilters,\n}: IndividualsFiltersSheetProps) => {\n const [localFilters, setLocalFilters] = useState<IndividualsFilters>(filters)\n const [open, setOpen] = useState(false)\n\n useEffect(() => {\n setLocalFilters(filters)\n }, [filters])\n\n const handleLocalFilterChange = (field: keyof IndividualsFilters, value: string | Date | undefined) => {\n setLocalFilters((prev) => ({ ...prev, [field]: value }))\n }\n\n const handleApply = () => {\n Object.entries(localFilters).forEach(([key, value]) => {\n onFilterChange(key as keyof IndividualsFilters, value)\n })\n onApplyFilters()\n setOpen(false)\n }\n\n const handleReset = () => {\n const reset: IndividualsFilters = {\n name: \"\",\n productName: \"\",\n status: \"\",\n createdDateStart: undefined,\n createdDateEnd: undefined,\n }\n\n setLocalFilters(reset)\n onResetFilters()\n setOpen(false)\n }\n\n return (\n <Sheet open={open} onOpenChange={setOpen}>\n <SheetTrigger asChild>\n <Button variant=\"outline\" className=\"gap-2\">\n <Filter className=\"h-4 w-4\" />\n Filters\n </Button>\n </SheetTrigger>\n <SheetContent side=\"right\" className=\"w-full sm:max-w-xl overflow-y-auto\">\n <SheetHeader>\n <SheetTitle>Individual Filters</SheetTitle>\n </SheetHeader>\n\n <div className=\"space-y-6 py-6\">\n <EnhancedInput\n label=\"Name\"\n value={localFilters.name}\n onChange={(e) => handleLocalFilterChange(\"name\", e.target.value)}\n placeholder=\"Enter individual name\"\n />\n\n <EnhancedInput\n label=\"Product Name\"\n value={localFilters.productName}\n onChange={(e) => handleLocalFilterChange(\"productName\", e.target.value)}\n placeholder=\"Enter product name\"\n />\n\n <EnhancedSelect\n label=\"Status\"\n value={localFilters.status}\n onValueChange={(value) => handleLocalFilterChange(\"status\", value)}\n placeholder=\"Select status\"\n options={statusOptions}\n />\n\n <div className=\"grid grid-cols-2 gap-4\">\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Created Date Start</label>\n <DatePicker\n date={localFilters.createdDateStart}\n onDateChange={(date) => handleLocalFilterChange(\"createdDateStart\", date)}\n placeholder=\"MM/DD/YYYY\"\n buttonClassName=\"w-full\"\n className=\"bg-background z-50\"\n />\n </div>\n\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Created Date End</label>\n <DatePicker\n date={localFilters.createdDateEnd}\n onDateChange={(date) => handleLocalFilterChange(\"createdDateEnd\", date)}\n placeholder=\"MM/DD/YYYY\"\n buttonClassName=\"w-full\"\n className=\"bg-background z-50\"\n />\n </div>\n </div>\n </div>\n\n <SheetFooter className=\"gap-2\">\n <Button variant=\"outline\" onClick={handleReset}>\n Reset Filters\n </Button>\n <Button onClick={handleApply}>Apply Filters</Button>\n </SheetFooter>\n </SheetContent>\n </Sheet>\n )\n}\n","import { Button } from \"@/components/ui/button\"\nimport { IndividualsFiltersSheet, type IndividualsFilters } from \"@/components/individual/IndividualsFiltersSheet\"\n\ninterface IndividualsViewProps {\n title?: string\n filters: IndividualsFilters\n statusOptions: { value: string; label: string }[]\n onFilterChange: (field: keyof IndividualsFilters, value: string | Date | undefined) => void\n onResetFilters: () => void\n onApplyFilters: () => void\n onCreateIndividual: () => void\n table: React.ReactNode\n}\n\nexport const IndividualsView = ({\n title = \"Individuals\",\n filters,\n statusOptions,\n onFilterChange,\n onResetFilters,\n onApplyFilters,\n onCreateIndividual,\n table,\n}: IndividualsViewProps) => {\n return (\n <div className=\"flex flex-col h-screen bg-gradient-subtle\">\n {/* Fixed Header */}\n <div className=\"flex-none border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60\">\n <div className=\"container mx-auto px-4 py-4 max-w-none\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-3xl font-bold text-foreground\">{title}</h1>\n </div>\n <div className=\"flex items-center gap-2\">\n <IndividualsFiltersSheet\n filters={filters}\n statusOptions={statusOptions}\n onFilterChange={onFilterChange}\n onResetFilters={onResetFilters}\n onApplyFilters={onApplyFilters}\n />\n <Button onClick={onCreateIndividual}>Create Individual</Button>\n </div>\n </div>\n </div>\n </div>\n\n {/* Scrollable Content */}\n <div className=\"flex-1 overflow-hidden\">\n <div className=\"container mx-auto px-4 h-full max-w-none flex flex-col\">\n <div className=\"flex-1 mt-4 overflow-auto\">{table}</div>\n </div>\n </div>\n </div>\n )\n}\n","import { z } from \"zod\"\n\nexport const individualProfileSchema = z.object({\n // Personal Information\n firstName: z.string().min(1, \"First name is required\"),\n lastName: z.string().min(1, \"Last name is required\"),\n dateOfBirth: z.string().optional(),\n \n // Identification\n idType: z.enum([\"SSN\", \"ITIN\", \"Passport\", \"Driver License\"]).optional(),\n idNumber: z.string().optional(),\n ssn: z.string().optional(),\n \n // Contact Information\n email: z.string().email(\"Invalid email address\").optional(),\n mobilePhone: z.string().optional(),\n \n // Address\n streetAddress: z.string().optional(),\n apartment: z.string().optional(),\n city: z.string().optional(),\n state: z.string().optional(),\n postalCode: z.string().optional(),\n country: z.string().optional(),\n \n // Integration Fields\n externalId: z.string().optional(),\n productId: z.string().optional(),\n})\n\n// Loosened schema for editing existing individuals (flexible updates)\n// - Most fields optional\n// - No strict format validation (e.g., email)\n// - ID type not restricted to a fixed enum\nexport const individualProfileEditSchema = z.object({\n // Personal Information\n firstName: z.string().optional(),\n lastName: z.string().optional(),\n dateOfBirth: z.string().optional(),\n\n // Identification\n idType: z.string().optional(),\n idNumber: z.string().optional(),\n ssn: z.string().optional(),\n\n // Contact Information\n email: z.string().optional(),\n mobilePhone: z.string().optional(),\n\n // Address\n streetAddress: z.string().optional(),\n apartment: z.string().optional(),\n city: z.string().optional(),\n state: z.string().optional(),\n postalCode: z.string().optional(),\n country: z.string().optional(),\n\n // Integration Fields\n externalId: z.coerce.string().optional(),\n productId: z.coerce.string().optional(),\n})\n\nexport type IndividualProfile = z.infer<typeof individualProfileSchema>\nexport type IndividualProfileEdit = z.infer<typeof individualProfileEditSchema>\n","import { useMemo, useState } from \"react\"\nimport { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { FormProvider } from \"@/components/ui/form-provider\"\nimport { FormInput } from \"@/components/ui/form-input\"\nimport { FormSelect } from \"@/components/ui/form-select\"\nimport { useFormWithEditState } from \"@/hooks/useFormWithEditState\"\nimport { individualProfileEditSchema, IndividualProfileEdit } from \"@/lib/schemas/individual-schemas\"\nimport { Eye, EyeOff } from \"lucide-react\"\n\ninterface IndividualProfileCardProps {\n value: IndividualProfileEdit\n isEditing: boolean\n onToggleEdit: () => void\n onSave?: (data: IndividualProfileEdit) => Promise<void> | void\n className?: string\n onProductIdClick?: (productId: string) => void\n}\n\nexport const IndividualProfileCard = ({\n value,\n isEditing,\n onToggleEdit,\n onSave,\n className,\n onProductIdClick,\n}: IndividualProfileCardProps) => {\n const [isIdNumberRevealed, setIsIdNumberRevealed] = useState(false)\n\n // Ensure we don't create a new object every render (helps form hooks that\n // rely on referential equality).\n const defaultValues = useMemo(() => ({ ...value }), [value])\n\n const form = useFormWithEditState<IndividualProfileEdit>({\n schema: individualProfileEditSchema,\n defaultValues,\n initialEditing: isEditing,\n onToggleEdit,\n onSave: async (data) => {\n await onSave?.(data)\n }\n })\n\n const editContent = (\n <FormProvider form={form}>\n <div className=\"space-y-4\">\n {/* Personal Information */}\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <FormInput\n name=\"firstName\"\n label=\"First Name\"\n placeholder=\"Enter first name\"\n required\n />\n \n <FormInput\n name=\"lastName\"\n label=\"Last Name\"\n placeholder=\"Enter last name\"\n required\n />\n \n <FormInput\n name=\"dateOfBirth\"\n label=\"Date of Birth\"\n placeholder=\"YYYY-MM-DD\"\n />\n \n <FormSelect\n name=\"idType\"\n label=\"ID Type\"\n placeholder=\"Select ID type\"\n options={[\n { value: \"SSN\", label: \"SSN\" },\n { value: \"ITIN\", label: \"ITIN\" },\n { value: \"Passport\", label: \"Passport\" },\n { value: \"Driver License\", label: \"Driver License\" },\n ]}\n />\n\n <FormInput\n name=\"idNumber\"\n label=\"ID Number\"\n placeholder=\"Enter ID number\"\n />\n \n <FormInput\n name=\"ssn\"\n label=\"SSN/ITIN\"\n placeholder=\"Enter SSN or ITIN\"\n hint=\"Last 4 digits will be masked\"\n />\n \n <FormInput\n name=\"email\"\n label=\"Email\"\n type=\"email\"\n placeholder=\"Enter email address\"\n />\n \n <FormInput\n name=\"mobilePhone\"\n label=\"Mobile Phone\"\n placeholder=\"Enter mobile phone\"\n />\n </div>\n \n {/* Address Information */}\n <div className=\"grid grid-cols-1 gap-4\">\n <FormInput\n name=\"streetAddress\"\n label=\"Street Address\"\n placeholder=\"Enter street address\"\n />\n \n <FormInput\n name=\"apartment\"\n label=\"Apartment/Unit\"\n placeholder=\"Enter apartment or unit number\"\n />\n </div>\n \n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <FormInput\n name=\"city\"\n label=\"City\"\n placeholder=\"Enter city\"\n />\n \n <FormInput\n name=\"state\"\n label=\"State\"\n placeholder=\"Enter state\"\n />\n \n <FormInput\n name=\"postalCode\"\n label=\"Postal Code\"\n placeholder=\"Enter postal code\"\n />\n \n <FormInput\n name=\"country\"\n label=\"Country\"\n placeholder=\"Enter country\"\n />\n </div>\n \n {/* Integration Fields */}\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <FormInput\n name=\"externalId\"\n label=\"External ID\"\n placeholder=\"UUID\"\n disabled\n />\n \n <FormInput\n name=\"productId\"\n label=\"Product ID\"\n placeholder=\"Product ID\"\n disabled\n />\n </div>\n </div>\n </FormProvider>\n )\n\n const formValues = form.watch()\n \n const viewContent = (\n <div className=\"space-y-3\">\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"First Name\" value={formValues?.firstName || \"-\"} layout=\"horizontal\" />\n <InfoField label=\"Last Name\" value={formValues?.lastName || \"-\"} layout=\"horizontal\" />\n </div>\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Date of Birth\" value={formValues?.dateOfBirth || \"-\"} layout=\"horizontal\" />\n <InfoField label=\"ID Type\" value={formValues?.idType || \"-\"} layout=\"horizontal\" />\n </div>\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField\n label=\"ID Number\"\n value={\n formValues?.idNumber ? (\n <div className=\"flex items-center gap-2\">\n <span>{isIdNumberRevealed ? String(formValues.idNumber) : \"••••••••••\"}</span>\n <button\n type=\"button\"\n onClick={() => setIsIdNumberRevealed((v) => !v)}\n className=\"text-muted-foreground hover:text-foreground transition-colors\"\n >\n {isIdNumberRevealed ? <Eye className=\"h-4 w-4\" /> : <EyeOff className=\"h-4 w-4\" />}\n </button>\n </div>\n ) : (\n \"-\"\n )\n }\n layout=\"horizontal\"\n />\n <InfoField label=\"SSN/ITIN\" value={formValues?.ssn || \"-\"} layout=\"horizontal\" />\n </div>\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Email\" value={formValues?.email || \"-\"} layout=\"horizontal\" />\n <InfoField label=\"Mobile Phone\" value={formValues?.mobilePhone || \"-\"} layout=\"horizontal\" />\n </div>\n \n <InfoField \n label=\"Address\" \n value={formValues?.streetAddress ? `${formValues.streetAddress}${formValues.apartment ? ', ' + formValues.apartment : ''}, ${formValues.city}, ${formValues.state} ${formValues.postalCode}, ${formValues.country}` : \"-\"} \n layout=\"horizontal\" \n />\n \n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"External ID\" value={formValues?.externalId || \"-\"} layout=\"horizontal\" />\n <InfoField\n label=\"Product ID\"\n value={\n formValues?.productId && onProductIdClick ? (\n <button\n type=\"button\"\n onClick={() => onProductIdClick(String(formValues.productId))}\n className=\"text-primary hover:underline font-medium\"\n >\n {formValues.productId}\n </button>\n ) : (\n formValues?.productId || \"-\"\n )\n }\n layout=\"horizontal\"\n />\n </div>\n </div>\n )\n\n return (\n <EditableFormCard\n title=\"Individual Profile\"\n variant=\"subtle\"\n className={className}\n isEditing={form.isEditing}\n onToggleEdit={form.handleToggleEdit}\n onSave={form.handleSave}\n onCancel={form.handleCancel}\n editContent={editContent}\n viewContent={viewContent}\n />\n )\n}\n","import { FormCard } from \"@/components/ui/form-card\"\nimport { CheckCircle, Circle, UserPlus, Edit } from \"lucide-react\"\nimport { cn } from \"@/lib/utils\"\n\ninterface TimelineEvent {\n id: string\n action: string\n user: string\n details?: string\n status?: string\n timestamp: string\n}\n\ninterface IndividualStatusCardProps {\n isEditing: boolean\n onToggleEdit: () => void\n className?: string\n}\n\nconst mockIndividualTimeline: TimelineEvent[] = [\n {\n id: \"1\",\n action: \"Individual Created\",\n user: \"admin\",\n details: \"Initial individual setup\",\n status: \"Active\",\n timestamp: \"2024-01-15 10:30:00\"\n },\n {\n id: \"2\",\n action: \"Identity Documents Uploaded\",\n user: \"John Smith\",\n details: \"Driver License, Proof of Address\",\n timestamp: \"2024-01-18 11:20:00\"\n },\n {\n id: \"3\",\n action: \"CIP Verification Completed\",\n user: \"Compliance Team\",\n details: \"Identity verification check\",\n status: \"Verified\",\n timestamp: \"2024-01-20 14:30:00\"\n },\n {\n id: \"4\",\n action: \"OFAC Check Completed\",\n user: \"System\",\n details: \"Automated compliance check\",\n status: \"Verified\",\n timestamp: \"2024-01-20 14:45:00\"\n }\n]\n\nexport const IndividualStatusCard = ({ isEditing, onToggleEdit, className }: IndividualStatusCardProps) => {\n const getIcon = (action: string) => {\n if (action.includes(\"Created\")) return <Circle className=\"h-4 w-4\" />\n if (action.includes(\"Assigned\")) return <UserPlus className=\"h-4 w-4\" />\n if (action.includes(\"Updated\") || action.includes(\"Modified\") || action.includes(\"Check\") || action.includes(\"Uploaded\")) return <Edit className=\"h-4 w-4\" />\n if (action.includes(\"Completed\") || action.includes(\"Verified\")) return <CheckCircle className=\"h-4 w-4\" />\n return <Circle className=\"h-4 w-4\" />\n }\n\n const getStatusColor = (status?: string) => {\n switch (status) {\n case \"Active\":\n case \"Verified\":\n return \"text-success\"\n case \"Pending\":\n return \"text-warning\"\n default:\n return \"text-muted-foreground\"\n }\n }\n\n return (\n <FormCard \n title=\"Timeline\"\n className={className}\n >\n <div className=\"space-y-3\">\n {mockIndividualTimeline.map((event, index) => (\n <div key={event.id} className=\"relative pl-6 pb-3\">\n {/* Timeline line */}\n {index !== mockIndividualTimeline.length - 1 && (\n <div className=\"absolute left-[7px] top-5 bottom-0 w-[2px] bg-border\" />\n )}\n \n {/* Icon */}\n <div className={cn(\n \"absolute left-0 top-0 flex-none\",\n getStatusColor(event.status)\n )}>\n <div className=\"h-4 w-4\">\n {getIcon(event.action)}\n </div>\n </div>\n \n {/* Content */}\n <div className=\"space-y-0.5\">\n <p className=\"text-xs font-medium text-foreground\">{event.action}</p>\n <p className=\"text-xs text-muted-foreground\">by {event.user}</p>\n {event.details && (\n <p className=\"text-xs text-muted-foreground\">{event.details}</p>\n )}\n {event.status && (\n <p className={cn(\"text-xs font-medium\", getStatusColor(event.status))}>\n Status: {event.status}\n </p>\n )}\n <p className=\"text-xs text-muted-foreground/70 pt-0.5\">\n {event.timestamp}\n </p>\n </div>\n </div>\n ))}\n </div>\n </FormCard>\n )\n}\n","import { useState } from \"react\"\nimport { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle } from \"@/components/ui/dialog\"\nimport { Button } from \"@/components/ui/button\"\nimport { FormProvider } from \"@/components/ui/form-provider\"\nimport { FormInput } from \"@/components/ui/form-input\"\nimport { FormSelect } from \"@/components/ui/form-select\"\nimport { FormSection } from \"@/components/ui/form-section\"\nimport { useForm } from \"react-hook-form\"\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport { z } from \"zod\"\nimport { toast } from \"sonner\"\n\n// Loosened validations (all optional) to support flexible external account creation.\nconst externalAccountSchema = z.object({\n routingNumber: z.string().optional(),\n accountNumber: z.string().optional(),\n bankName: z.string().optional(),\n bankAccountType: z.string().optional(),\n})\n\nexport type ExternalAccountFormData = z.infer<typeof externalAccountSchema>\n\ninterface AddExternalAccountDialogProps {\n open: boolean\n onOpenChange: (open: boolean) => void\n onSubmit?: (data: ExternalAccountFormData) => Promise<void | boolean> | void | boolean\n}\n\nexport const AddExternalAccountDialog = ({ open, onOpenChange, onSubmit }: AddExternalAccountDialogProps) => {\n const [isLoading, setIsLoading] = useState(false)\n\n const form = useForm<ExternalAccountFormData>({\n resolver: zodResolver(externalAccountSchema),\n defaultValues: {\n routingNumber: \"\",\n accountNumber: \"\",\n bankName: \"\",\n bankAccountType: \"CHECKING\",\n },\n })\n\n const handleSubmit = async (data: ExternalAccountFormData) => {\n setIsLoading(true)\n try {\n const result = await onSubmit?.(data)\n\n if (result === false) {\n toast.error(\"Couldn't add external account. Please fix issues and try again.\")\n return\n }\n\n form.reset()\n onOpenChange(false)\n } catch (error) {\n console.error(\"Error creating external account:\", error)\n toast.error(\"Couldn't add external account. Please try again.\")\n } finally {\n setIsLoading(false)\n }\n }\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent className=\"sm:max-w-[600px] max-h-[90vh] overflow-y-auto\">\n <DialogHeader>\n <DialogTitle>Add External Account</DialogTitle>\n </DialogHeader>\n\n <FormProvider form={form}>\n <form onSubmit={form.handleSubmit(handleSubmit)} className=\"space-y-4\">\n <FormSection spacing=\"md\">\n <FormInput name=\"routingNumber\" label=\"Routing Number\" placeholder=\"123\" />\n <FormInput name=\"accountNumber\" label=\"Account Number\" placeholder=\"123\" />\n <FormInput name=\"bankName\" label=\"Bank Name\" placeholder=\"name\" />\n <FormSelect\n name=\"bankAccountType\"\n label=\"Bank Account Type\"\n placeholder=\"Select type\"\n options={[\n { value: \"CHECKING\", label: \"Checking\" },\n { value: \"SAVINGS\", label: \"Savings\" },\n ]}\n />\n </FormSection>\n\n <DialogFooter>\n <Button type=\"button\" variant=\"outline\" onClick={() => onOpenChange(false)} disabled={isLoading}>\n Cancel\n </Button>\n <Button type=\"submit\" disabled={isLoading}>\n {isLoading ? \"Creating...\" : \"Create Account\"}\n </Button>\n </DialogFooter>\n </form>\n </FormProvider>\n </DialogContent>\n </Dialog>\n )\n}\n","import { PageLayout } from \"@/components/ui/page-layout\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Button } from \"@/components/ui/button\"\nimport { EditableInfoField } from \"@/components/ui/editable-info-field\"\nimport { StatusBadge } from \"@/components/ui/status-badge\"\nimport { CIPStatusBadge } from \"@/components/ui/cip-status-badge\"\nimport { EntityTypeBadge } from \"@/components/ui/entity-type-badge\"\nimport { SubTypeBadge } from \"@/components/ui/sub-type-badge\"\nimport { OfacHeaderCard } from \"@/components/business/OfacHeaderCard\"\nimport type { OFACCheck } from \"@/lib/mock-data/ofac-data\"\nimport { Wallet, Users, Plus, Trash2 } from \"lucide-react\"\nimport { IndividualProfileCard } from \"@/components/form-sections/IndividualProfileCard\"\nimport { IndividualStatusCard } from \"@/components/form-sections/IndividualStatusCard\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { BusinessDocuments } from \"@/components/business/BusinessDocuments\"\nimport type { BusinessDocument } from \"@/lib/mock-data/document-data\"\nimport { INDIVIDUAL_DOCUMENT_TYPE_OPTIONS } from \"@/lib/constants\"\nimport {\n AddExternalAccountDialog,\n type ExternalAccountFormData,\n} from \"@/components/individual/AddExternalAccountDialog\"\nimport { useCallback, useState } from \"react\"\n\ninterface SelectOption {\n value: string\n label: string\n}\n\ninterface IndividualDetailViewProps {\n individual: {\n id: string\n firstName: string\n lastName: string\n cipStatus: any\n subType?: \"UBO\" | \"Customer\"\n }\n\n // Profile data (kept in container; UI lives in the card)\n profile: import(\"@/lib/schemas/individual-schemas\").IndividualProfileEdit\n onProfileSave?: (\n data: import(\"@/lib/schemas/individual-schemas\").IndividualProfileEdit\n ) => Promise<void> | void\n\n status: string\n statusOptions: SelectOption[]\n onStatusChange: (newStatus: string) => void\n latestOFAC?: OFACCheck\n onNavigateToOFAC?: (ofacCheckId?: string) => void\n onNavigateToAccounts: () => void\n onNavigateToCounterparty: () => void\n showTimeline?: boolean\n\n // Profile\n profileIsEditing: boolean\n onToggleProfileEdit: () => void\n onProductIdClick?: (productId: string) => void\n\n // External accounts (UI composed here; state + rules live in container callbacks)\n externalAccounts: Array<{\n id: string\n routingNumber: string\n accountNumber: string\n bankName: string\n bankAccountType: string\n }>\n onAddExternalAccount: (data: ExternalAccountFormData) => Promise<void | boolean> | void | boolean\n onDeleteExternalAccount: (accountId: string) => Promise<void | boolean> | void | boolean\n\n // Documents\n documents: BusinessDocument[]\n onDocumentUpload: (file: File, metadata: { name: string; description: string; type: string }) => Promise<void>\n onDocumentDelete?: (documentId: string) => Promise<void | boolean> | void | boolean\n renderDocumentViewer?: (document: BusinessDocument) => React.ReactNode\n}\n\nexport const IndividualDetailView = ({\n individual,\n profile,\n onProfileSave,\n status,\n statusOptions,\n onStatusChange,\n latestOFAC,\n onNavigateToOFAC,\n onNavigateToAccounts,\n onNavigateToCounterparty,\n showTimeline = true,\n profileIsEditing,\n onToggleProfileEdit,\n onProductIdClick,\n externalAccounts,\n onAddExternalAccount,\n onDeleteExternalAccount,\n documents,\n onDocumentUpload,\n onDocumentDelete,\n renderDocumentViewer,\n}: IndividualDetailViewProps) => {\n const [showAddExternalAccountDialog, setShowAddExternalAccountDialog] = useState(false)\n\n const headerName = `${individual.firstName} ${individual.lastName}`\n const individualId = individual.id\n const subType = individual.subType\n\n const headerActions = [\n {\n label: \"Account\",\n variant: \"outline\" as const,\n onClick: onNavigateToAccounts,\n icon: Wallet,\n },\n {\n label: \"Counterparty\",\n variant: \"outline\" as const,\n onClick: onNavigateToCounterparty,\n icon: Users,\n },\n ]\n\n const hasExternalAccount = externalAccounts.length > 0\n const firstExternalAccount = externalAccounts[0]\n\n const handleAddExternalAccountClick = useCallback(() => {\n setShowAddExternalAccountDialog(true)\n }, [])\n\n const handleDeleteExternalAccountClick = useCallback(() => {\n if (!firstExternalAccount?.id) return\n void onDeleteExternalAccount(firstExternalAccount.id)\n }, [firstExternalAccount?.id, onDeleteExternalAccount])\n\n return (\n <PageLayout\n title={\n <div className=\"flex items-center gap-3\">\n <span>{headerName}</span>\n <div className=\"flex items-center gap-2\">\n <EditableInfoField\n label=\"\"\n value={status}\n onChange={onStatusChange}\n options={statusOptions}\n renderValue={(value) => <StatusBadge status={value as any} showDropdownIndicator />}\n />\n <CIPStatusBadge status={individual.cipStatus} />\n <EntityTypeBadge type=\"Individual\" />\n {subType && <SubTypeBadge subType={subType} entityType=\"Individual\" />}\n </div>\n </div>\n }\n description={undefined}\n actions={headerActions}\n headerContent={<OfacHeaderCard latestOFAC={latestOFAC} onNavigateToOFAC={onNavigateToOFAC} />}\n maxWidth=\"full\"\n >\n <div className=\"flex flex-col lg:flex-row items-start gap-4\">\n <div className=\"flex-1 space-y-4\">\n <IndividualProfileCard\n value={profile}\n isEditing={profileIsEditing}\n onToggleEdit={onToggleProfileEdit}\n onSave={onProfileSave}\n onProductIdClick={onProductIdClick}\n />\n\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-4\">\n <CardTitle>External Accounts</CardTitle>\n {!hasExternalAccount && (\n <Button size=\"sm\" variant=\"ghost\" onClick={handleAddExternalAccountClick}>\n <Plus className=\"h-4 w-4 mr-1\" />\n Account\n </Button>\n )}\n </CardHeader>\n <CardContent>\n {!hasExternalAccount ? (\n <div className=\"flex items-center justify-center gap-2 py-4 text-sm text-muted-foreground\">\n <Wallet className=\"h-5 w-5 opacity-50\" />\n <p>No external accounts found</p>\n </div>\n ) : (\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2\">\n <InfoField label=\"Routing Number\" value={firstExternalAccount?.routingNumber || \"—\"} />\n <InfoField label=\"Account Number\" value={firstExternalAccount?.accountNumber || \"—\"} />\n <InfoField label=\"Bank Name\" value={firstExternalAccount?.bankName || \"—\"} />\n <InfoField label=\"Bank Account Type\" value={firstExternalAccount?.bankAccountType || \"—\"} />\n </div>\n )}\n </CardContent>\n </Card>\n\n <BusinessDocuments\n businessId={individualId}\n documents={documents}\n onDocumentUpload={onDocumentUpload}\n onDocumentDelete={onDocumentDelete}\n renderDocumentViewer={renderDocumentViewer}\n documentTypeOptions={INDIVIDUAL_DOCUMENT_TYPE_OPTIONS}\n />\n </div>\n\n {showTimeline && (\n <div className=\"lg:w-64\">\n <Card className=\"hidden\" aria-hidden />\n <IndividualStatusCard isEditing={false} onToggleEdit={() => {}} />\n </div>\n )}\n </div>\n\n <AddExternalAccountDialog\n open={showAddExternalAccountDialog}\n onOpenChange={setShowAddExternalAccountDialog}\n onSubmit={onAddExternalAccount}\n />\n </PageLayout>\n )\n}\n","import { FormProvider } from \"@/components/ui/form-provider\"\nimport { PageLayout } from \"@/components/ui/page-layout\"\nimport { FormCard } from \"@/components/ui/form-card\"\nimport { FormInput } from \"@/components/ui/form-input\"\nimport { FormSelect } from \"@/components/ui/form-select\"\n\ntype CreateIndividualViewForm = {\n handleSubmit: (onValid: any) => (e?: any) => void\n handleSave: (data?: any) => Promise<void> | void\n isFormValid: boolean\n isLoading: boolean\n}\n\ninterface CreateIndividualViewProps {\n form: CreateIndividualViewForm\n onCancel: () => void\n onSubmit: () => void\n}\n\nexport const CreateIndividualView = ({ form, onCancel, onSubmit }: CreateIndividualViewProps) => {\n return (\n <PageLayout\n title=\"Create Individual\"\n actions={[\n { label: \"Cancel\", variant: \"outline\", onClick: onCancel },\n { label: \"Create Individual\", variant: \"default\", onClick: onSubmit },\n ]}\n >\n <FormProvider form={form as any}>\n <form onSubmit={form.handleSubmit(form.handleSave)} className=\"space-y-6\">\n <FormCard title=\"Personal Information\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <FormInput name=\"firstName\" label=\"First Name\" placeholder=\"Enter first name\" required />\n <FormInput name=\"lastName\" label=\"Last Name\" placeholder=\"Enter last name\" required />\n\n <FormInput\n name=\"dateOfBirth\"\n label=\"Date of Birth\"\n type=\"date\"\n placeholder=\"Select date of birth\"\n />\n\n <FormSelect\n name=\"idType\"\n label=\"ID Type\"\n placeholder=\"Select ID type\"\n options={[\n { value: \"SSN\", label: \"SSN\" },\n { value: \"ITIN\", label: \"ITIN\" },\n { value: \"Passport\", label: \"Passport\" },\n { value: \"Driver License\", label: \"Driver License\" },\n ]}\n />\n\n <FormInput name=\"idNumber\" label=\"ID Number\" placeholder=\"Enter ID number\" />\n <FormInput name=\"ssn\" label=\"SSN/ITIN\" placeholder=\"Enter SSN or ITIN\" hint=\"Enter full SSN or ITIN\" />\n <FormInput name=\"email\" label=\"Email\" type=\"email\" placeholder=\"Enter email address\" />\n <FormInput name=\"mobilePhone\" label=\"Mobile Phone\" placeholder=\"Enter mobile phone\" />\n\n <FormInput\n name=\"externalId\"\n label=\"External ID\"\n placeholder=\"External ID\"\n />\n <FormInput name=\"productId\" label=\"Product ID\" placeholder=\"Enter product ID\" />\n </div>\n </FormCard>\n\n <FormCard title=\"Address Information\">\n <div className=\"grid grid-cols-1 gap-4\">\n <FormInput name=\"streetAddress\" label=\"Street Address\" placeholder=\"Enter street address\" />\n <FormInput name=\"apartment\" label=\"Apartment/Unit\" placeholder=\"Enter apartment or unit number\" />\n </div>\n\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6 mt-4\">\n <FormInput name=\"city\" label=\"City\" placeholder=\"Enter city\" />\n <FormInput name=\"state\" label=\"State\" placeholder=\"Enter state\" />\n <FormInput name=\"postalCode\" label=\"Postal Code\" placeholder=\"Enter postal code\" />\n <FormInput name=\"country\" label=\"Country\" placeholder=\"Enter country\" />\n </div>\n </FormCard>\n\n </form>\n </FormProvider>\n </PageLayout>\n )\n}\n","export interface ACHBasicInfo {\n bankName: string\n accountType: string\n routingNumber: string\n accountNumber: string\n countryCode: string\n status: string\n swiftCode?: string\n bankAddress?: string\n}\n\nexport interface ACHBankDetails {\n gatewayRoutingNumber: string\n rdfiNumberQualifier: string\n}\n\nexport interface BankAddress {\n street: string\n city: string\n state: string\n postalCode: string\n country: string\n}\n\nexport interface BankingDetails {\n primaryBank: string\n accountNumber: string\n routingNumber: string\n accountType: string\n}\n\nexport const defaultACHBasicInfo: ACHBasicInfo = {\n bankName: \"Bank of New York\",\n accountType: \"checking\",\n routingNumber: \"043087080\",\n accountNumber: \"1234567890\",\n countryCode: \"US\",\n status: \"active\",\n swiftCode: \"CHASUS33\",\n bankAddress: \"270 Park Avenue, New York, NY 10017\"\n}\n\nexport const defaultACHBankDetails: ACHBankDetails = {\n gatewayRoutingNumber: \"043087080\",\n rdfiNumberQualifier: \"01\"\n}\n\nexport const defaultBankAddress: BankAddress = {\n street: \"270 Park Avenue\",\n city: \"New York\", \n state: \"NY\",\n postalCode: \"10017\",\n country: \"US\"\n}\n\nexport const defaultBankingDetails: BankingDetails = {\n primaryBank: \"JPMorgan Chase\",\n accountNumber: \"1234567890121234\",\n routingNumber: \"021000021\",\n accountType: \"Business Checking\"\n}\n\n// Combined ACH Transfer data that matches the schema\nexport const defaultACHTransfer = {\n basicInfo: {\n counterpartyName: \"Acme Corporation\",\n shortName: \"ACME\",\n type: \"business\",\n description: \"ACH transfer for Acme Corporation\"\n },\n bankDetails: defaultACHBankDetails\n}","import { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { FormProvider } from \"@/components/ui/form-provider\"\nimport { FormInput } from \"@/components/ui/form-input\"\nimport { useFormWithEditState } from \"@/hooks/useFormWithEditState\"\nimport { achTransferSchema, type ACHTransfer } from \"@/lib/schemas/banking-schemas\"\nimport { defaultACHTransfer } from \"@/lib/mock-data/banking-data\"\n\ninterface ACHBankCardProps {\n data?: Partial<ACHTransfer>\n onDataChange?: (data: ACHTransfer) => void\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n hideActions?: boolean\n}\n\nexport const ACHBankCard = ({ data, onDataChange, isEditing, onToggleEdit, className, hideActions }: ACHBankCardProps) => {\n const form = useFormWithEditState<ACHTransfer>({\n schema: achTransferSchema,\n defaultValues: { ...defaultACHTransfer, ...data },\n initialEditing: isEditing,\n onToggleEdit,\n onSave: onDataChange,\n })\n\n const editContent = (\n <FormProvider form={form}>\n <div className=\"space-y-6\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <FormInput\n name=\"bankDetails.gatewayRoutingNumber\"\n label=\"Gateway Routing Number\"\n placeholder=\"Enter gateway routing number\"\n pattern=\"[0-9]{9}\"\n maxLength={9}\n hint=\"9-digit gateway routing number\"\n required\n />\n \n <FormInput\n name=\"bankDetails.rdfiNumberQualifier\"\n label=\"RDFI Number Qualifier\"\n placeholder=\"Enter RDFI qualifier\"\n maxLength={2}\n hint=\"2-digit RDFI number qualifier\"\n required\n />\n </div>\n </div>\n </FormProvider>\n )\n\n const viewContent = (\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <InfoField label=\"Gateway Routing Number\" value={form.getValues(\"bankDetails.gatewayRoutingNumber\")} layout=\"horizontal\" />\n <InfoField label=\"RDFI Number Qualifier\" value={form.getValues(\"bankDetails.rdfiNumberQualifier\")} layout=\"horizontal\" />\n </div>\n )\n\n return (\n <EditableFormCard\n title=\"ACH Bank Details\"\n description=\"ACH-specific routing and qualification information\"\n variant=\"subtle\"\n className={className}\n isEditing={form.isEditing}\n onToggleEdit={form.handleToggleEdit}\n onSave={form.handleSave}\n onCancel={form.handleCancel}\n hideActions={hideActions}\n isFormValid={form.isFormValid}\n isDirty={form.isDirty}\n editContent={editContent}\n viewContent={viewContent}\n />\n )\n}","import { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { FormProvider } from \"@/components/ui/form-provider\"\nimport { FormInput } from \"@/components/ui/form-input\"\nimport { FormSelect } from \"@/components/ui/form-select\"\nimport { useFormWithEditState } from \"@/hooks/useFormWithEditState\"\nimport { achTransferSchema, type ACHTransfer } from \"@/lib/schemas/banking-schemas\"\nimport { defaultACHTransfer } from \"@/lib/mock-data/banking-data\"\n\ninterface ACHBasicInfoCardProps {\n data?: Partial<ACHTransfer>\n onDataChange?: (data: ACHTransfer) => void\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n hideActions?: boolean\n}\n\nexport const ACHBasicInfoCard = ({ \n data, \n onDataChange, \n isEditing, \n onToggleEdit, \n className, \n hideActions \n}: ACHBasicInfoCardProps) => {\n const form = useFormWithEditState<ACHTransfer>({\n schema: achTransferSchema,\n defaultValues: { ...defaultACHTransfer, ...data },\n initialEditing: isEditing,\n onToggleEdit,\n onSave: onDataChange,\n })\n\n const editContent = (\n <FormProvider form={form}>\n <div className=\"space-y-4\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <FormInput\n name=\"basicInfo.counterpartyName\"\n label=\"Counterparty Name\"\n placeholder=\"Enter counterparty name\"\n required\n />\n \n <FormInput\n name=\"basicInfo.shortName\"\n label=\"Short Name\"\n placeholder=\"Enter short name\"\n required\n />\n </div>\n \n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <FormSelect\n name=\"basicInfo.type\"\n label=\"Type\"\n placeholder=\"Select type\"\n options={[\n { value: \"business\", label: \"Business\" },\n { value: \"individual\", label: \"Individual\" }\n ]}\n />\n \n <FormInput\n name=\"basicInfo.description\"\n label=\"Description\"\n placeholder=\"Enter description\"\n />\n </div>\n </div>\n </FormProvider>\n )\n\n const viewContent = (\n <div className=\"space-y-3\">\n <InfoField label=\"Counterparty Name\" value={form.getValues(\"basicInfo.counterpartyName\")} layout=\"horizontal\" />\n <InfoField label=\"Short Name\" value={form.getValues(\"basicInfo.shortName\")} layout=\"horizontal\" />\n <InfoField label=\"Type\" value={form.getValues(\"basicInfo.type\")} layout=\"horizontal\" />\n <InfoField label=\"Description\" value={form.getValues(\"basicInfo.description\") || \"N/A\"} layout=\"horizontal\" />\n </div>\n )\n\n return (\n <EditableFormCard\n title=\"Basic Information\" \n variant=\"subtle\"\n className={className}\n isEditing={form.isEditing}\n onToggleEdit={form.handleToggleEdit}\n onSave={form.handleSave}\n onCancel={form.handleCancel}\n hideActions={hideActions}\n isFormValid={form.isFormValid}\n isDirty={form.isDirty}\n editContent={editContent}\n viewContent={viewContent}\n />\n )\n}","import { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { FormProvider } from \"@/components/ui/form-provider\"\nimport { FormInput } from \"@/components/ui/form-input\"\nimport { useFormWithEditState } from \"@/hooks/useFormWithEditState\"\nimport { addressSchema, type Address } from \"@/lib/schemas\"\nimport { defaultBankAddress } from \"@/lib/mock-data/banking-data\"\n\ninterface BankAddressCardProps {\n data?: Partial<Address>\n onDataChange?: (data: Address) => void\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n hideActions?: boolean\n}\n\nexport const BankAddressCard = ({ \n data, \n onDataChange, \n isEditing, \n onToggleEdit, \n className, \n hideActions \n}: BankAddressCardProps) => {\n const form = useFormWithEditState<Address>({\n schema: addressSchema,\n defaultValues: { ...defaultBankAddress, ...data },\n initialEditing: isEditing,\n onToggleEdit,\n onSave: onDataChange,\n })\n\n const editContent = (\n <FormProvider form={form}>\n <div className=\"space-y-6\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <FormInput\n name=\"line1\"\n label=\"Street Address\"\n placeholder=\"Enter street address\"\n required\n />\n \n <FormInput\n name=\"city\"\n label=\"City\"\n placeholder=\"Enter city\"\n required\n />\n \n <FormInput\n name=\"state\"\n label=\"State\"\n placeholder=\"Enter state\"\n required\n />\n \n <FormInput\n name=\"postalCode\"\n label=\"Postal Code\"\n placeholder=\"Enter postal code\"\n required\n />\n </div>\n </div>\n </FormProvider>\n )\n\n const formValues = form.watch()\n const viewContent = (\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <InfoField label=\"Street Address\" value={formValues?.line1} layout=\"horizontal\" />\n <InfoField label=\"City\" value={formValues?.city} layout=\"horizontal\" />\n <InfoField label=\"State\" value={formValues?.state} layout=\"horizontal\" />\n <InfoField label=\"Postal Code\" value={formValues?.postalCode} layout=\"horizontal\" />\n </div>\n )\n\n return (\n <EditableFormCard\n title=\"Bank Address\"\n description=\"Physical address of the banking institution\"\n variant=\"subtle\"\n className={className}\n isEditing={form.isEditing}\n onToggleEdit={form.handleToggleEdit}\n onSave={form.handleSave}\n onCancel={form.handleCancel}\n hideActions={hideActions}\n editContent={editContent}\n viewContent={viewContent}\n />\n )\n}","import { useState } from \"react\"\nimport { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { ResponsiveGrid } from \"@/components/ui/responsive-grid\"\nimport { ACHBasicInfoCard } from \"./ACHBasicInfoCard\"\nimport { ACHBankCard } from \"./ACHBankCard\"\nimport { BankAddressCard } from \"./BankAddressCard\"\nimport { defaultACHTransfer } from \"@/lib/mock-data/banking-data\"\nimport { type ACHTransfer } from \"@/lib/schemas/banking-schemas\"\n\ninterface ACHTransferSectionProps {\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n hideActions?: boolean\n}\n\nexport const ACHTransferSection = ({ isEditing, onToggleEdit, className, hideActions }: ACHTransferSectionProps) => {\n const [achData, setAchData] = useState<ACHTransfer>(defaultACHTransfer)\n\n const handleDataChange = (newData: ACHTransfer) => {\n setAchData(newData)\n }\n\n const content = (\n <div className=\"space-y-6\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-medium text-muted-foreground\">Transfer Type:</span>\n <span className=\"inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-secondary text-secondary-foreground\">\n ACH\n </span>\n </div>\n \n <ResponsiveGrid type=\"forms\" gap=\"md\" editMode={isEditing}>\n <ACHBasicInfoCard \n data={achData}\n onDataChange={handleDataChange}\n isEditing={isEditing} \n hideActions={true} \n />\n <ACHBankCard \n data={achData}\n onDataChange={handleDataChange}\n isEditing={isEditing} \n hideActions={true} \n />\n <BankAddressCard isEditing={isEditing} hideActions={true} />\n </ResponsiveGrid>\n </div>\n )\n\n return (\n <EditableFormCard\n title=\"ACH Transfer Configuration\"\n description=\"Configure ACH transfer settings and bank details\"\n variant=\"subtle\"\n className={className}\n isEditing={isEditing}\n onToggleEdit={onToggleEdit}\n hideActions={hideActions}\n editContent={content}\n viewContent={content}\n />\n )\n}","import { FormCard } from \"@/components/ui/form-card\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { Button } from \"@/components/ui/button\"\nimport { Edit } from \"lucide-react\"\n\ninterface BankingDetailsCardProps {\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n}\n\nexport const BankingDetailsCard = ({ isEditing, onToggleEdit, className }: BankingDetailsCardProps) => {\n return (\n <FormCard \n title=\"Banking Details\"\n className={className}\n headerActions={\n <div className=\"flex items-center gap-2\">\n {isEditing ? (\n <>\n <Button variant=\"outline\" size=\"sm\" onClick={onToggleEdit}>\n Cancel\n </Button>\n <Button size=\"sm\" onClick={onToggleEdit}>\n Save\n </Button>\n </>\n ) : (\n <Button variant=\"ghost\" size=\"icon\" onClick={onToggleEdit} className=\"text-primary hover:text-primary/80 hover:bg-primary/10\">\n <Edit className=\"h-4 w-4\" />\n </Button>\n )}\n </div>\n }\n >\n <div className=\"space-y-3\">\n <div className=\"grid grid-cols-1 gap-2\">\n <InfoField label=\"Primary Bank\" value=\"JPMorgan Chase\" layout=\"horizontal\" />\n <InfoField label=\"Account Number\" value=\"1234567890121234\" layout=\"horizontal\" />\n <InfoField label=\"Routing Number\" value=\"021000021\" layout=\"horizontal\" />\n <InfoField label=\"Account Type\" value=\"Business Checking\" layout=\"horizontal\" />\n </div>\n </div>\n </FormCard>\n )\n}","import { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { CounterpartyTypeBadge } from \"@/components/ui/counterparty-type-badge\"\nimport { StatusBadge } from \"@/components/ui/status-badge\"\nimport { useState } from \"react\"\n\ninterface BasicInfoCardProps {\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n hideActions?: boolean\n}\n\nexport const BasicInfoCard = ({ isEditing, onToggleEdit, className, hideActions }: BasicInfoCardProps) => {\n const [name, setName] = useState(\"John wire hot\")\n const [status, setStatus] = useState(\"ACTIVE\")\n\n const editContent = (\n <div className=\"space-y-6\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <EnhancedInput\n label=\"Name\"\n value={name}\n onChange={(e) => setName(e.target.value)}\n placeholder=\"Enter counterparty name\"\n />\n \n <EnhancedSelect\n label=\"Status\"\n value={status}\n onValueChange={setStatus}\n placeholder=\"Select status\"\n options={[\n { value: \"ACTIVE\", label: \"Active\" },\n { value: \"INACTIVE\", label: \"Inactive\" },\n { value: \"PENDING\", label: \"Pending\" },\n { value: \"SUSPENDED\", label: \"Suspended\" }\n ]}\n />\n </div>\n \n <div className=\"grid grid-cols-2 gap-4 pt-4 border-t border-border\">\n <InfoField label=\"ID\" value=\"5000541\" layout=\"horizontal\" />\n <InfoField label=\"Counterparty Type\" value={<CounterpartyTypeBadge type=\"BUSINESS\" />} layout=\"horizontal\" />\n <InfoField label=\"ID Number\" value=\"•••••••\" layout=\"horizontal\" />\n <InfoField label=\"ID Type\" value=\"SSN\" layout=\"horizontal\" />\n <InfoField label=\"Date of Birth\" value=\"1985-8-20\" layout=\"horizontal\" />\n <InfoField label=\"Created By\" value=\"admin\" layout=\"horizontal\" />\n <InfoField label=\"Created At\" value=\"2025-07-14\" layout=\"horizontal\" />\n <InfoField label=\"Updated By\" value=\"admin\" layout=\"horizontal\" />\n <InfoField label=\"Updated At\" value=\"2025-07-14\" layout=\"horizontal\" />\n </div>\n \n <div className=\"pt-3 border-t border-border\">\n <h4 className=\"text-sm font-medium text-foreground mb-2\">OFAC Details</h4>\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Last OFAC date\" value=\"2025-07-14\" layout=\"horizontal\" />\n <InfoField label=\"Last OFAC status\" value=\"Verified\" layout=\"horizontal\" />\n </div>\n </div>\n </div>\n )\n\n const viewContent = (\n <div className=\"space-y-4\">\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"ID\" value=\"5000541\" layout=\"horizontal\" />\n <InfoField label=\"Name\" value={name} layout=\"horizontal\" />\n <InfoField label=\"Counterparty Type\" value={<CounterpartyTypeBadge type=\"BUSINESS\" />} layout=\"horizontal\" />\n <InfoField label=\"Status\" value={<StatusBadge status={status as \"ACTIVE\" | \"INACTIVE\" | \"PENDING\" | \"SUSPENDED\"} />} layout=\"horizontal\" />\n <InfoField label=\"ID Number\" value=\"•••••••\" layout=\"horizontal\" />\n <InfoField label=\"ID Type\" value=\"SSN\" layout=\"horizontal\" />\n <InfoField label=\"Date of Birth\" value=\"1985-8-20\" layout=\"horizontal\" />\n <InfoField label=\"Created By\" value=\"admin\" layout=\"horizontal\" />\n <InfoField label=\"Created At\" value=\"2025-07-14\" layout=\"horizontal\" />\n <InfoField label=\"Updated By\" value=\"admin\" layout=\"horizontal\" />\n <InfoField label=\"Updated At\" value=\"2025-07-14\" layout=\"horizontal\" />\n </div>\n \n <div className=\"pt-3 border-t border-border\">\n <h4 className=\"text-sm font-medium text-foreground mb-2\">OFAC Details</h4>\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Last OFAC date\" value=\"2025-07-14\" layout=\"horizontal\" />\n <InfoField label=\"Last OFAC status\" value=\"Verified\" layout=\"horizontal\" />\n </div>\n </div>\n </div>\n )\n\n return (\n <EditableFormCard\n title=\"Basic Info\"\n className={className}\n isEditing={isEditing}\n onToggleEdit={onToggleEdit}\n hideActions={hideActions}\n editContent={editContent}\n viewContent={viewContent}\n />\n )\n}","import { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { InfoField } from \"@/components/ui/info-field\"\n\ninterface CounterpartyRecordsCardProps {\n isEditing?: boolean\n hideActions?: boolean\n className?: string\n}\n\nexport const CounterpartyRecordsCard = ({ \n isEditing = false, \n hideActions = false, \n className \n}: CounterpartyRecordsCardProps) => {\n return (\n <Card variant=\"subtle\" className={className}>\n <CardHeader size=\"lg\">\n <CardTitle size=\"lg\">System Records</CardTitle>\n </CardHeader>\n <CardContent size=\"lg\">\n <div className=\"space-y-4\">\n <div className=\"space-y-3\">\n <InfoField label=\"ID\" value=\"5000541\" layout=\"horizontal\" />\n <InfoField label=\"Created By\" value=\"admin\" layout=\"horizontal\" />\n <InfoField label=\"Created At\" value=\"2025-07-14\" layout=\"horizontal\" />\n <InfoField label=\"Updated By\" value=\"admin\" layout=\"horizontal\" />\n <InfoField label=\"Updated At\" value=\"2025-07-14\" layout=\"horizontal\" />\n </div>\n \n <div className=\"pt-3 border-t border-border\">\n <h4 className=\"text-sm font-medium text-foreground mb-2\">OFAC Details</h4>\n <div className=\"space-y-3\">\n <InfoField label=\"Last OFAC date\" value=\"2025-07-14\" layout=\"horizontal\" />\n <InfoField label=\"Last OFAC status\" value=\"Verified\" layout=\"horizontal\" />\n </div>\n </div>\n </div>\n </CardContent>\n </Card>\n )\n}","import { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { ResponsiveGrid } from \"@/components/ui/responsive-grid\"\nimport { CounterpartyProfileCard } from \"./CounterpartyProfileCard\"\nimport { CounterpartyRecordsCard } from \"./CounterpartyRecordsCard\"\n\ninterface BasicInfoSectionProps {\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n hideActions?: boolean\n}\n\nexport const BasicInfoSection = ({ isEditing, onToggleEdit, className, hideActions }: BasicInfoSectionProps) => {\n const content = (\n <ResponsiveGrid type=\"forms\" gap=\"md\" editMode={isEditing}>\n <CounterpartyProfileCard isEditing={isEditing} hideActions={true} />\n <CounterpartyRecordsCard isEditing={isEditing} hideActions={true} />\n </ResponsiveGrid>\n )\n\n return (\n <EditableFormCard\n title=\"Basic Information\"\n description=\"Core counterparty details and records\"\n variant=\"subtle\"\n className={className}\n isEditing={isEditing}\n onToggleEdit={onToggleEdit}\n hideActions={hideActions}\n editContent={content}\n viewContent={content}\n />\n )\n}","import { AddressForm } from \"./AddressForm\"\n\nexport const BeneficiaryAddress = () => {\n return (\n <AddressForm\n title=\"Beneficiary Address Details\"\n description=\"Address information for the beneficiary\"\n showAddressType={false}\n showApartment={true}\n fieldOverrides={{\n apartment: { \n placeholder: \"this is a very long address that will be truncated\",\n value: \"this is a very long address that will be truncated\"\n },\n postalCode: { error: \"Invalid postal code format\" }\n }}\n />\n )\n}","import * as React from \"react\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { cn } from \"@/lib/utils\"\n\nexport interface DataGridItem {\n label?: string\n value: string\n layout?: \"vertical\" | \"horizontal\"\n}\n\nexport interface DataGridSection {\n title?: string\n items: DataGridItem[]\n className?: string\n}\n\ninterface DataGridProps {\n data: DataGridItem[] | DataGridSection[]\n columns?: 1 | 2 | 3 | 4\n gap?: \"sm\" | \"md\" | \"lg\"\n className?: string\n}\n\nconst gapClasses = {\n sm: \"gap-2\",\n md: \"gap-4\", \n lg: \"gap-6\"\n}\n\nconst columnClasses = {\n 1: \"grid-cols-1\",\n 2: \"grid-cols-1 md:grid-cols-2\",\n 3: \"grid-cols-1 md:grid-cols-2 lg:grid-cols-3\",\n 4: \"grid-cols-1 md:grid-cols-2 lg:grid-cols-4\"\n}\n\nexport const DataGrid = React.forwardRef<HTMLDivElement, DataGridProps>(\n ({ data, columns = 2, gap = \"md\", className }, ref) => {\n // Check if data is sections or simple items\n const isItemArray = data.length > 0 && 'label' in data[0]\n \n if (isItemArray) {\n // Simple items array\n const items = data as DataGridItem[]\n return (\n <div \n ref={ref}\n className={cn(\n \"grid\",\n columnClasses[columns],\n gapClasses[gap],\n className\n )}\n >\n {items.map((item, index) => (\n <InfoField\n key={index}\n label={item.label}\n value={item.value}\n layout={item.layout || \"horizontal\"}\n />\n ))}\n </div>\n )\n }\n\n // Sections array\n const sections = data as DataGridSection[]\n return (\n <div ref={ref} className={cn(\"space-y-4\", className)}>\n {sections.map((section, sectionIndex) => (\n <div key={sectionIndex} className={section.className}>\n {section.title && (\n <h4 className=\"text-sm font-medium text-foreground mb-2\">\n {section.title}\n </h4>\n )}\n <div className={cn(\n \"grid\",\n columnClasses[columns],\n gapClasses[gap]\n )}>\n {section.items.map((item, itemIndex) => (\n <InfoField\n key={itemIndex}\n label={item.label}\n value={item.value}\n layout={item.layout || \"horizontal\"}\n />\n ))}\n </div>\n </div>\n ))}\n </div>\n )\n }\n)\n\nDataGrid.displayName = \"DataGrid\"","import { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { BeneficiaryAddress } from \"./BeneficiaryAddress\"\n\nexport const BeneficiaryDomesticWire = () => {\n return (\n <div className=\"space-y-6\">\n <div className=\"border-b border-border pb-4\">\n <h3 className=\"text-lg font-semibold text-foreground\">Beneficiary Information</h3>\n <p className=\"text-sm text-muted-foreground\">Account and address details for the beneficiary</p>\n </div>\n \n <div className=\"space-y-6\">\n <EnhancedInput\n label=\"Beneficiary Account Number\"\n placeholder=\"Enter beneficiary account number\"\n hint=\"Account number for the beneficiary\"\n />\n \n <BeneficiaryAddress />\n </div>\n </div>\n )\n}","import { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { DataGrid } from \"@/components/ui/data-grid\"\nimport { BeneficiaryDomesticWire } from \"@/components/form-sections/BeneficiaryDomesticWire\"\n\ninterface BeneficiaryCardProps {\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n hideActions?: boolean\n}\n\nexport const BeneficiaryCard = ({ isEditing, onToggleEdit, className, hideActions }: BeneficiaryCardProps) => {\n const viewData = [\n {\n title: \"Account Information\",\n items: [\n { label: \"Account Number\", value: \"123456789012\" }\n ]\n },\n {\n title: \"Beneficiary Address\", \n items: [\n { value: \"123 Main Street, Apartment 4B, New York, NY 10001, United States\" }\n ],\n className: \"pt-3 border-t border-border\"\n }\n ]\n\n return (\n <EditableFormCard\n title=\"Beneficiary\"\n variant=\"subtle\"\n className={className}\n isEditing={isEditing}\n onToggleEdit={onToggleEdit}\n hideActions={hideActions}\n editContent={<BeneficiaryDomesticWire />}\n viewContent={<DataGrid data={viewData} columns={1} />}\n />\n )\n}","import { FormCard } from \"@/components/ui/form-card\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { Button } from \"@/components/ui/button\"\nimport { Edit } from \"lucide-react\"\n\ninterface ContactInfoCardProps {\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n}\n\nexport const ContactInfoCard = ({ isEditing, onToggleEdit, className }: ContactInfoCardProps) => {\n return (\n <FormCard \n title=\"Contact Information\"\n className={className}\n headerActions={\n <div className=\"flex items-center gap-2\">\n {isEditing ? (\n <>\n <Button variant=\"outline\" size=\"sm\" onClick={onToggleEdit}>\n Cancel\n </Button>\n <Button size=\"sm\" onClick={onToggleEdit}>\n Save\n </Button>\n </>\n ) : (\n <Button variant=\"ghost\" size=\"icon\" onClick={onToggleEdit} className=\"text-primary hover:text-primary/80 hover:bg-primary/10\">\n <Edit className=\"h-4 w-4\" />\n </Button>\n )}\n </div>\n }\n >\n <div className=\"space-y-4\">\n <h4 className=\"text-sm font-medium text-muted-foreground\">Contact Person</h4>\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"First Name\" value=\"\" layout=\"horizontal\" />\n <InfoField label=\"Last Name\" value=\"\" layout=\"horizontal\" />\n </div>\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Email\" value=\"\" layout=\"horizontal\" />\n <InfoField label=\"Phone Number\" value=\"\" layout=\"horizontal\" />\n </div>\n \n <h4 className=\"text-sm font-medium text-muted-foreground mt-6\">Mailing Address</h4>\n {isEditing ? (\n <>\n <div className=\"grid grid-cols-1 gap-3\">\n <InfoField label=\"Street Address\" value=\"\" layout=\"horizontal\" />\n <InfoField label=\"Apartment, suite, or floor\" value=\"\" layout=\"horizontal\" />\n </div>\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"City\" value=\"\" layout=\"horizontal\" />\n <InfoField label=\"State\" value=\"Alabama\" layout=\"horizontal\" />\n </div>\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField label=\"Postal Code\" value=\"\" layout=\"horizontal\" />\n <InfoField label=\"Country Code\" value=\"US\" layout=\"horizontal\" />\n </div>\n </>\n ) : (\n <InfoField \n label=\"Address\" \n value=\"123 Business Avenue, Suite 100, New York, NY 10001, US\" \n layout=\"horizontal\" \n />\n )}\n </div>\n </FormCard>\n )\n}","import { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { FI_ID_TYPE_OPTIONS } from \"@/lib/constants\"\n\nexport const IntermediaryFI = () => {\n return (\n <div className=\"space-y-6\">\n <div className=\"border-b border-border pb-4\">\n <h2 className=\"text-lg font-semibold text-foreground\">Intermediary FI Details</h2>\n <p className=\"text-sm text-muted-foreground\">Financial institution details for the intermediary</p>\n </div>\n \n <div className=\"space-y-6\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6\">\n <EnhancedInput\n label=\"Intermediary FI Account Number\"\n placeholder=\"Enter account number\"\n />\n \n <EnhancedInput\n label=\"Intermediary FI Name\"\n placeholder=\"Enter FI name\"\n hint=\"Full name of the intermediary financial institution\"\n />\n \n <EnhancedSelect\n label=\"Intermediary FI ID Type\"\n placeholder=\"Select ID type\"\n options={FI_ID_TYPE_OPTIONS}\n />\n \n <EnhancedInput\n label=\"Intermediary FI ID Number\"\n placeholder=\"Enter ID number\"\n hint=\"Financial institution identification number\"\n />\n </div>\n </div>\n </div>\n )\n}","import { AddressForm } from \"./AddressForm\"\n\nexport const IntermediaryFIAddress = () => {\n return (\n <AddressForm\n title=\"Intermediary FI Address\"\n description=\"Address of the intermediary financial institution\"\n fieldPrefix=\"Intermediary FI\"\n fieldOverrides={{\n streetAddress: { hint: \"Intermediary financial institution street address\" }\n }}\n />\n )\n}","export interface WireTransferInfo {\n transferType: string\n}\n\nexport interface ReceiverInfo {\n routingNumber: string\n bankShortName: string\n}\n\nexport interface BeneficiaryInfo {\n accountNumber: string\n address: {\n street: string\n city: string\n state: string\n postalCode: string\n country: string\n apartment?: string\n }\n}\n\nexport interface OriginatorFIInfo {\n accountNumber: string\n name: string\n idType: string\n idNumber: string\n address: {\n streetAddress: string\n apartment?: string\n city: string\n state: string\n postalCode: string\n country: string\n addressType?: string\n }\n}\n\nexport interface IntermediaryFIInfo {\n accountNumber?: string\n name: string\n idType: string\n idNumber: string\n address?: {\n streetAddress: string\n apartment?: string\n city: string\n state: string\n postalCode: string\n country: string\n addressType?: string\n }\n}\n\nexport const defaultWireTransferInfo: WireTransferInfo = {\n transferType: \"domestic\"\n}\n\nexport const defaultReceiverInfo: ReceiverInfo = {\n routingNumber: \"043087080\",\n bankShortName: \"Bank of New York\"\n}\n\nexport const defaultBeneficiaryInfo: BeneficiaryInfo = {\n accountNumber: \"123456789012\",\n address: {\n street: \"123 Main Street\",\n city: \"New York\",\n state: \"NY\", \n postalCode: \"10001\",\n country: \"US\",\n apartment: \"Apartment 4B\"\n }\n}\n\nexport const defaultOriginatorFIInfo: OriginatorFIInfo = {\n accountNumber: \"987654321098\",\n name: \"Originator Bank\",\n idType: \"swift\",\n idNumber: \"ORIGUS33XXX\",\n address: {\n streetAddress: \"270 Park Avenue\",\n city: \"New York\",\n state: \"NY\",\n postalCode: \"10017\",\n country: \"US\",\n addressType: \"business\"\n }\n}\n\nexport const defaultIntermediaryFIInfo: IntermediaryFIInfo = {\n accountNumber: \"555666777888\",\n name: \"Intermediary Bank\",\n idType: \"swift\", \n idNumber: \"INTEUS33XXX\",\n address: {\n streetAddress: \"Taunusanlage 12\",\n city: \"Frankfurt\",\n state: \"HE\",\n postalCode: \"60325\",\n country: \"DE\",\n addressType: \"business\"\n }\n}","import { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { FormProvider } from \"@/components/ui/form-provider\"\nimport { FormSection } from \"@/components/ui/form-section\"\nimport { IntermediaryFI } from \"@/components/form-sections/IntermediaryFI\"\nimport { IntermediaryFIAddress } from \"@/components/form-sections/IntermediaryFIAddress\"\nimport { useFormWithEditState } from \"@/hooks/useFormWithEditState\"\nimport { intermediaryFISchema, type IntermediaryFI as IntermediaryFIType } from \"@/lib/schemas\"\nimport { defaultIntermediaryFIInfo } from \"@/lib/mock-data/wire-data\"\n\ninterface IntermediaryCardProps {\n data?: Partial<IntermediaryFIType>\n onDataChange?: (data: IntermediaryFIType) => void\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n hideActions?: boolean\n}\n\nexport const IntermediaryCard = ({ \n data, \n onDataChange, \n isEditing, \n onToggleEdit, \n className, \n hideActions \n}: IntermediaryCardProps) => {\n const form = useFormWithEditState<IntermediaryFIType>({\n schema: intermediaryFISchema,\n defaultValues: { ...defaultIntermediaryFIInfo, ...data },\n initialEditing: isEditing,\n onToggleEdit,\n onSave: onDataChange,\n })\n\n const editContent = (\n <FormProvider form={form}>\n <FormSection spacing=\"lg\">\n <IntermediaryFI />\n <IntermediaryFIAddress />\n </FormSection>\n </FormProvider>\n )\n\n const formValues = form.watch()\n const viewContent = (\n <div className=\"space-y-3\">\n <div>\n <h4 className=\"text-sm font-medium text-foreground mb-2\">Financial Institution</h4>\n <div className=\"space-y-1.5\">\n <InfoField label=\"Institution\" value={`${formValues?.name} (${formValues?.accountNumber})`} layout=\"horizontal\" />\n <InfoField label=\"Identifier\" value={`${formValues?.idType?.toUpperCase()} - ${formValues?.idNumber}`} layout=\"horizontal\" />\n </div>\n </div>\n \n <div className=\"pt-3 border-t border-border\">\n <h4 className=\"text-sm font-medium text-foreground mb-2\">FI Address</h4>\n <InfoField value={formValues?.address ? `${formValues.address.line1}, ${formValues.address.city}, ${formValues.address.postalCode}, ${formValues.address.countryCode}` : \"\"} />\n </div>\n </div>\n )\n\n return (\n <EditableFormCard\n title=\"Intermediary\" \n variant=\"subtle\"\n className={className}\n isEditing={form.isEditing}\n onToggleEdit={form.handleToggleEdit}\n onSave={form.handleSave}\n onCancel={form.handleCancel}\n hideActions={hideActions}\n editContent={editContent}\n viewContent={viewContent}\n />\n )\n}","import { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { FI_ID_TYPE_OPTIONS } from \"@/lib/constants\"\n\nexport const OriginatorFI = () => {\n return (\n <div className=\"space-y-6\">\n <div className=\"border-b border-border pb-4\">\n <h2 className=\"text-lg font-semibold text-foreground\">Originator FI Details</h2>\n <p className=\"text-sm text-muted-foreground\">Financial institution details for the originator</p>\n </div>\n \n <div className=\"space-y-6\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6\">\n <EnhancedInput\n label=\"Originator FI Account Number\"\n placeholder=\"Enter account number\"\n required\n />\n \n <EnhancedInput\n label=\"Originator FI Name\"\n placeholder=\"Enter FI name\"\n hint=\"Full name of the originating financial institution\"\n />\n \n <EnhancedSelect\n label=\"Originator FI ID Type\"\n placeholder=\"Select ID type\"\n options={FI_ID_TYPE_OPTIONS}\n />\n \n <EnhancedInput\n label=\"Originator FI ID Number\"\n placeholder=\"Enter ID number\"\n hint=\"Financial institution identification number\"\n />\n </div>\n </div>\n </div>\n )\n}","import { AddressForm } from \"./AddressForm\"\n\nexport const OriginatorFIAddress = () => {\n return (\n <AddressForm\n title=\"Originator FI Address\"\n description=\"Address of the originating financial institution\"\n fieldPrefix=\"Originator FI\"\n fieldOverrides={{\n streetAddress: { hint: \"Originating financial institution street address\" }\n }}\n />\n )\n}","import { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { DataGrid } from \"@/components/ui/data-grid\"\nimport { FormSection } from \"@/components/ui/form-section\"\nimport { OriginatorFI } from \"@/components/form-sections/OriginatorFI\"\nimport { OriginatorFIAddress } from \"@/components/form-sections/OriginatorFIAddress\"\n\ninterface OriginatorCardProps {\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n hideActions?: boolean\n}\n\nexport const OriginatorCard = ({ isEditing, onToggleEdit, className, hideActions }: OriginatorCardProps) => {\n const viewData = [\n {\n title: \"Financial Institution\",\n items: [\n { label: \"Institution\", value: \"JPMorgan Chase Bank (1234567890)\" },\n { label: \"Identifier\", value: \"ABA - 021000021\" }\n ]\n },\n {\n title: \"FI Address\",\n items: [\n { value: \"270 Park Avenue, New York, NY, 10017, United States\" }\n ],\n className: \"pt-3 border-t border-border\"\n }\n ]\n\n return (\n <EditableFormCard\n title=\"Originator\"\n variant=\"subtle\"\n className={className}\n isEditing={isEditing}\n onToggleEdit={onToggleEdit}\n hideActions={hideActions}\n editContent={\n <FormSection spacing=\"lg\">\n <OriginatorFI />\n <OriginatorFIAddress />\n </FormSection>\n }\n viewContent={<DataGrid data={viewData} columns={1} />}\n />\n )\n}","import { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { DataGrid } from \"@/components/ui/data-grid\"\nimport { FormSection } from \"@/components/ui/form-section\"\nimport { FormProvider } from \"@/components/ui/form-provider\"\nimport { FormInput } from \"@/components/ui/form-input\"\nimport { useFormWithEditState } from \"@/hooks/useFormWithEditState\"\nimport { z } from \"zod\"\nimport { defaultReceiverInfo } from \"@/lib/mock-data/wire-data\"\n\nconst receiverSchema = z.object({\n routingNumber: z.string().min(9, \"Routing number must be 9 digits\").max(9, \"Routing number must be 9 digits\"),\n bankShortName: z.string().min(1, \"Bank short name is required\"),\n})\n\ntype ReceiverInfo = z.infer<typeof receiverSchema>\n\ninterface ReceiverCardProps {\n data?: Partial<ReceiverInfo>\n onDataChange?: (data: ReceiverInfo) => void\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n hideActions?: boolean\n}\n\nexport const ReceiverCard = ({ \n data, \n onDataChange, \n isEditing, \n onToggleEdit, \n className, \n hideActions \n}: ReceiverCardProps) => {\n const form = useFormWithEditState<ReceiverInfo>({\n schema: receiverSchema,\n defaultValues: { ...defaultReceiverInfo, ...data },\n initialEditing: isEditing,\n onToggleEdit,\n onSave: onDataChange,\n })\n\n const editContent = (\n <FormProvider form={form}>\n <FormSection>\n <div className=\"space-y-6\">\n <div className=\"border-b border-border pb-4\">\n <h2 className=\"text-lg font-semibold text-foreground\">Receiver Details</h2>\n <p className=\"text-sm text-muted-foreground\">Receiving bank information</p>\n </div>\n \n <div className=\"grid grid-cols-1 gap-6\">\n <FormInput\n name=\"routingNumber\"\n label=\"Receiver Routing Number\"\n placeholder=\"Enter routing number\"\n hint=\"9-digit routing number\"\n pattern=\"[0-9]{9}\"\n maxLength={9}\n required\n />\n \n <FormInput\n name=\"bankShortName\"\n label=\"Receiver Bank Short Name\"\n placeholder=\"Enter bank short name\"\n required\n />\n </div>\n </div>\n </FormSection>\n </FormProvider>\n )\n\n const formValues = form.watch()\n const viewData = [\n { label: \"Routing Number\", value: formValues?.routingNumber },\n { label: \"Bank Short Name\", value: formValues?.bankShortName }\n ]\n\n return (\n <EditableFormCard\n title=\"FedWire Receiver\"\n variant=\"subtle\"\n className={className}\n isEditing={form.isEditing}\n onToggleEdit={form.handleToggleEdit}\n onSave={form.handleSave}\n onCancel={form.handleCancel}\n hideActions={hideActions}\n editContent={editContent}\n viewContent={<DataGrid data={viewData} columns={2} />}\n />\n )\n}","import { useState } from \"react\"\nimport { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { ResponsiveGrid } from \"@/components/ui/responsive-grid\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { ReceiverCard } from \"./ReceiverCard\"\nimport { BeneficiaryCard } from \"./BeneficiaryCard\"\nimport { OriginatorCard } from \"./OriginatorCard\"\nimport { IntermediaryCard } from \"./IntermediaryCard\"\n\ninterface WireTransferSectionProps {\n isEditing?: boolean\n onToggleEdit?: () => void\n className?: string\n hideActions?: boolean\n}\n\nexport const WireTransferSection = ({ isEditing, onToggleEdit, className, hideActions }: WireTransferSectionProps) => {\n const [wireTransferType, setWireTransferType] = useState(\"INTERNATIONAL\")\n\n const editContent = (\n <div className=\"space-y-6\">\n <div className=\"flex items-center gap-4\">\n <EnhancedSelect\n label=\"Transfer Type\"\n value={wireTransferType}\n onValueChange={setWireTransferType}\n options={[\n { value: \"DOMESTIC\", label: \"Domestic\" },\n { value: \"INTERNATIONAL\", label: \"International\" }\n ]}\n placeholder=\"Select transfer type\"\n />\n </div>\n \n <ResponsiveGrid type=\"forms\" gap=\"md\" editMode={isEditing}>\n <ReceiverCard isEditing={isEditing} hideActions={true} />\n <BeneficiaryCard isEditing={isEditing} hideActions={true} />\n <OriginatorCard isEditing={isEditing} hideActions={true} />\n <IntermediaryCard isEditing={isEditing} hideActions={true} />\n </ResponsiveGrid>\n </div>\n )\n\n const viewContent = (\n <div className=\"space-y-6\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-medium text-muted-foreground\">Transfer Type:</span>\n <span className=\"inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-secondary text-secondary-foreground\">\n {wireTransferType}\n </span>\n </div>\n \n <ResponsiveGrid type=\"forms\" gap=\"md\">\n <ReceiverCard isEditing={false} hideActions={true} />\n <BeneficiaryCard isEditing={false} hideActions={true} />\n <OriginatorCard isEditing={false} hideActions={true} />\n <IntermediaryCard isEditing={false} hideActions={true} />\n </ResponsiveGrid>\n </div>\n )\n\n return (\n <EditableFormCard\n title=\"Wire Transfer Configuration\"\n description=\"Configure wire transfer settings and participants\"\n variant=\"subtle\"\n className={className}\n isEditing={isEditing}\n onToggleEdit={onToggleEdit}\n hideActions={hideActions}\n editContent={editContent}\n viewContent={viewContent}\n />\n )\n}","import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\ninterface ContainerProps {\n children: React.ReactNode\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\"\n padding?: \"none\" | \"sm\" | \"md\" | \"lg\"\n center?: boolean\n className?: string\n}\n\nconst sizeClasses = {\n sm: \"max-w-2xl\",\n md: \"max-w-4xl\", \n lg: \"max-w-6xl\",\n xl: \"max-w-7xl\",\n full: \"max-w-full\"\n}\n\nconst paddingClasses = {\n none: \"\",\n sm: \"px-4 py-4\",\n md: \"px-6 py-6\", \n lg: \"px-8 py-8\"\n}\n\nexport const Container = React.forwardRef<HTMLDivElement, ContainerProps>(\n ({ children, size = \"lg\", padding = \"md\", center = true, className }, ref) => {\n return (\n <div \n ref={ref}\n className={cn(\n sizeClasses[size],\n paddingClasses[padding],\n center && \"mx-auto\",\n className\n )}\n >\n {children}\n </div>\n )\n }\n)\n\nContainer.displayName = \"Container\"","import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\ninterface StackProps {\n children: React.ReactNode\n direction?: \"vertical\" | \"horizontal\"\n spacing?: \"none\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\"\n align?: \"start\" | \"center\" | \"end\" | \"stretch\"\n justify?: \"start\" | \"center\" | \"end\" | \"between\" | \"around\"\n className?: string\n}\n\nconst spacingClasses = {\n vertical: {\n none: \"\",\n xs: \"space-y-1\",\n sm: \"space-y-2\",\n md: \"space-y-4\",\n lg: \"space-y-6\",\n xl: \"space-y-8\"\n },\n horizontal: {\n none: \"\",\n xs: \"space-x-1\",\n sm: \"space-x-2\", \n md: \"space-x-4\",\n lg: \"space-x-6\",\n xl: \"space-x-8\"\n }\n}\n\nconst alignClasses = {\n vertical: {\n start: \"\",\n center: \"items-center\",\n end: \"items-end\", \n stretch: \"items-stretch\"\n },\n horizontal: {\n start: \"\",\n center: \"items-center\",\n end: \"items-end\",\n stretch: \"items-stretch\"\n }\n}\n\nconst justifyClasses = {\n start: \"\",\n center: \"justify-center\",\n end: \"justify-end\",\n between: \"justify-between\",\n around: \"justify-around\"\n}\n\nexport const Stack = React.forwardRef<HTMLDivElement, StackProps>(\n ({ children, direction = \"vertical\", spacing = \"md\", align = \"start\", justify = \"start\", className }, ref) => {\n const isHorizontal = direction === \"horizontal\"\n \n return (\n <div \n ref={ref}\n className={cn(\n \"flex\",\n isHorizontal ? \"flex-row\" : \"flex-col\",\n spacingClasses[direction][spacing],\n alignClasses[direction][align],\n justifyClasses[justify],\n className\n )}\n >\n {children}\n </div>\n )\n }\n)\n\nStack.displayName = \"Stack\"","import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\nimport { ChevronRight, Home } from \"lucide-react\"\nimport { NavLink } from \"react-router-dom\"\n\nexport interface BreadcrumbItem {\n label: string\n href?: string\n icon?: React.ReactNode\n}\n\ninterface BreadcrumbProps {\n items: BreadcrumbItem[]\n showHome?: boolean\n separator?: React.ReactNode\n className?: string\n}\n\nexport const Breadcrumb = React.forwardRef<HTMLElement, BreadcrumbProps>(\n ({ items, showHome = true, separator, className }, ref) => {\n const defaultSeparator = <ChevronRight className=\"w-4 h-4 text-muted-foreground\" />\n const separatorElement = separator || defaultSeparator\n\n return (\n <nav\n ref={ref}\n aria-label=\"Breadcrumb\"\n className={cn(\"flex items-center space-x-1 text-sm\", className)}\n >\n {showHome && (\n <>\n <NavLink\n to=\"/\"\n className=\"flex items-center text-muted-foreground hover:text-foreground transition-colors\"\n >\n <Home className=\"w-4 h-4\" />\n </NavLink>\n {items.length > 0 && (\n <span className=\"text-muted-foreground\">{separatorElement}</span>\n )}\n </>\n )}\n \n {items.map((item, index) => {\n const isLast = index === items.length - 1\n \n return (\n <React.Fragment key={index}>\n {item.href && !isLast ? (\n <NavLink\n to={item.href}\n className=\"flex items-center text-muted-foreground hover:text-foreground transition-colors\"\n >\n {item.icon && <span className=\"mr-1\">{item.icon}</span>}\n {item.label}\n </NavLink>\n ) : (\n <span className={cn(\n \"flex items-center\",\n isLast ? \"text-foreground font-medium\" : \"text-muted-foreground\"\n )}>\n {item.icon && <span className=\"mr-1\">{item.icon}</span>}\n {item.label}\n </span>\n )}\n \n {!isLast && (\n <span className=\"text-muted-foreground\">{separatorElement}</span>\n )}\n </React.Fragment>\n )\n })}\n </nav>\n )\n }\n)\n\nBreadcrumb.displayName = \"Breadcrumb\"","import * as React from \"react\"\nimport { Container } from \"@/components/ui/container\"\nimport { Stack } from \"@/components/ui/stack\"\nimport { Button } from \"@/components/ui/button\"\nimport { Breadcrumb, type BreadcrumbItem } from \"@/components/ui/breadcrumb\"\nimport { ResponsiveGrid } from \"@/components/ui/responsive-grid\"\nimport { cn } from \"@/lib/utils\"\n\ninterface PageAction {\n label: string\n onClick: () => void\n variant?: \"default\" | \"outline\" | \"secondary\"\n icon?: React.ReactNode\n}\n\ninterface ListPageProps {\n title: string\n description?: string\n breadcrumbs?: BreadcrumbItem[]\n actions?: PageAction[]\n children: React.ReactNode\n maxWidth?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\"\n loading?: boolean\n emptyState?: React.ReactNode\n className?: string\n}\n\nexport const ListPage = React.forwardRef<HTMLDivElement, ListPageProps>(\n ({ \n title, \n description, \n breadcrumbs,\n actions,\n children, \n maxWidth = \"xl\",\n loading = false,\n emptyState,\n className \n }, ref) => {\n const hasData = React.Children.count(children) > 0\n\n return (\n <div ref={ref} className={cn(\"min-h-screen bg-gradient-subtle\", className)}>\n <Container size={maxWidth}>\n <Stack spacing=\"lg\">\n {/* Breadcrumbs */}\n {breadcrumbs && breadcrumbs.length > 0 && (\n <Breadcrumb items={breadcrumbs} />\n )}\n \n {/* Page Header */}\n <div className=\"flex items-start justify-between\">\n <Stack spacing=\"sm\">\n <h1 className=\"text-3xl font-bold text-foreground\">{title}</h1>\n {description && (\n <p className=\"text-muted-foreground max-w-2xl\">{description}</p>\n )}\n </Stack>\n \n {actions && actions.length > 0 && (\n <Stack direction=\"horizontal\" spacing=\"sm\">\n {actions.map((action, index) => (\n <Button\n key={index}\n variant={action.variant || \"default\"}\n onClick={action.onClick}\n >\n {action.icon}\n {action.label}\n </Button>\n ))}\n </Stack>\n )}\n </div>\n \n {/* Content */}\n {loading ? (\n <div className=\"flex items-center justify-center py-12\">\n <div className=\"animate-pulse text-muted-foreground\">Loading...</div>\n </div>\n ) : hasData ? (\n <ResponsiveGrid type=\"cards\" gap=\"lg\">\n {children}\n </ResponsiveGrid>\n ) : emptyState ? (\n <div className=\"flex items-center justify-center py-12\">\n {emptyState}\n </div>\n ) : (\n <div className=\"flex items-center justify-center py-12\">\n <div className=\"text-center\">\n <p className=\"text-muted-foreground\">No items found</p>\n </div>\n </div>\n )}\n </Stack>\n </Container>\n </div>\n )\n }\n)\n\nListPage.displayName = \"ListPage\"","export interface StatementHeader {\n account?: string;\n productId?: string;\n programId?: string;\n startDate?: string;\n endDate?: string;\n startingBalance?: string;\n endingBalance?: string;\n}\n\nexport interface StatementTransaction {\n transactionType: string;\n direction: \"CREDIT\" | \"DEBIT\";\n amount: number;\n count: number;\n}\n\n/**\n * Calculates the balance change from starting to ending balance\n * @param startingBalance - Formatted currency string (e.g., \"$125,450.00\")\n * @param endingBalance - Formatted currency string (e.g., \"$158,320.50\")\n * @returns Object with calculated change amount, formatted string, and sign indicator\n */\nexport const calculateBalanceChange = (\n startingBalance: string,\n endingBalance: string\n): { amount: number; formatted: string; isPositive: boolean } => {\n // Helper function to parse currency strings\n const parseCurrency = (str: string): number => {\n return parseFloat(str.replace(/[$,]/g, ''))\n }\n\n const start = parseCurrency(startingBalance)\n const end = parseCurrency(endingBalance)\n const change = end - start\n\n const isPositive = change >= 0\n const prefix = isPositive ? '+' : ''\n\n return {\n amount: change,\n formatted: `${prefix}$${Math.abs(change).toLocaleString('en-US', {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2\n })}`,\n isPositive\n }\n}\n\nexport const mockStatementHeader: StatementHeader = {\n account: \"1234567890\",\n productId: \"PROD-001\",\n programId: \"PROG-001\",\n startDate: \"01/01/2024 00:00:00\",\n endDate: \"01/31/2024 23:59:59\",\n startingBalance: \"$125,450.00\",\n endingBalance: \"$158,320.50\",\n};\n\nexport const mockStatementTransactions: StatementTransaction[] = [\n { transactionType: \"ACH Credit\", direction: \"CREDIT\", amount: 45000.0, count: 12 },\n { transactionType: \"ACH Debit\", direction: \"DEBIT\", amount: 23500.0, count: 8 },\n { transactionType: \"Wire Transfer In\", direction: \"CREDIT\", amount: 15000.0, count: 3 },\n { transactionType: \"Wire Transfer Out\", direction: \"DEBIT\", amount: 8200.0, count: 2 },\n { transactionType: \"Card Purchase\", direction: \"DEBIT\", amount: 5430.5, count: 45 },\n { transactionType: \"Direct Deposit\", direction: \"CREDIT\", amount: 12500.0, count: 5 },\n { transactionType: \"ATM Withdrawal\", direction: \"DEBIT\", amount: 3200.0, count: 16 },\n { transactionType: \"Check Deposit\", direction: \"CREDIT\", amount: 8900.0, count: 4 },\n { transactionType: \"Bill Payment\", direction: \"DEBIT\", amount: 6780.0, count: 18 },\n { transactionType: \"Transfer In\", direction: \"CREDIT\", amount: 5200.0, count: 7 },\n { transactionType: \"Transfer Out\", direction: \"DEBIT\", amount: 4350.0, count: 6 },\n { transactionType: \"Fee\", direction: \"DEBIT\", amount: 125.0, count: 3 },\n { transactionType: \"Interest\", direction: \"CREDIT\", amount: 85.5, count: 1 },\n { transactionType: \"Refund\", direction: \"CREDIT\", amount: 450.0, count: 2 },\n];\n\nexport const mockPrograms = [\n { value: \"PROG-001\", label: \"Consumer Banking Program\" },\n { value: \"PROG-002\", label: \"Business Banking Program\" },\n { value: \"PROG-003\", label: \"Premium Rewards Program\" },\n { value: \"PROG-004\", label: \"Premium Rewards Program 1\" },\n { value: \"PROG-005\", label: \"Premium Rewards Program 2\" },\n { value: \"PROG-006\", label: \"Premium Rewards Program 3\" },\n { value: \"PROG-007\", label: \"Premium Rewards Program 4\" },\n { value: \"PROG-008\", label: \"Premium Rewards Program 5\" },\n { value: \"PROG-009\", label: \"Premium Rewards Program 6\" },\n { value: \"PROG-0010\", label: \"Consumer Banking Program\" },\n { value: \"PROG-0011\", label: \"Business Banking Program\" },\n { value: \"PROG-0013\", label: \"Premium Rewards Program\" },\n { value: \"PROG-0041\", label: \"Premium Rewards Program 1\" },\n { value: \"PROG-0051\", label: \"Premium Rewards Program 2\" },\n { value: \"PROG-0061\", label: \"Premium Rewards Program 3\" },\n { value: \"PROG-0071\", label: \"Premium Rewards Program 4\" },\n { value: \"PROG-0081\", label: \"Premium Rewards Program 5\" },\n { value: \"PROG-0091\", label: \"Premium Rewards Program 6\" },\n { value: \"PROG-0014\", label: \"Consumer Banking Program\" },\n { value: \"PROG-0024\", label: \"Business Banking Program\" },\n { value: \"PROG-0034\", label: \"Premium Rewards Program\" },\n { value: \"PROG-0044\", label: \"Premium Rewards Program 1\" },\n { value: \"PROG-0054\", label: \"Premium Rewards Program 2\" },\n { value: \"PROG-0064\", label: \"Premium Rewards Program 3\" },\n { value: \"PROG-0074\", label: \"Premium Rewards Program 4\" },\n { value: \"PROG-0084\", label: \"Premium Rewards Program 5\" },\n { value: \"PROG-0094\", label: \"Premium Rewards Program 6\" },\n { value: \"PROG-00104\", label: \"Consumer Banking Program\" },\n { value: \"PROG-00114\", label: \"Business Banking Program\" },\n { value: \"PROG-00134\", label: \"Premium Rewards Program\" },\n { value: \"PROG-00414\", label: \"Premium Rewards Program 1\" },\n { value: \"PROG-00514\", label: \"Premium Rewards Program 2\" },\n { value: \"PROG-00614\", label: \"Premium Rewards Program 3\" },\n { value: \"PROG-00714\", label: \"Premium Rewards Program 4\" },\n { value: \"PROG-00814\", label: \"Premium Rewards Program 5\" },\n { value: \"PROG-00914\", label: \"Premium Rewards Program 6\" },\n];\n\nexport const mockProducts = [\n { value: \"PROD-001\", label: \"Checking Account\" },\n { value: \"PROD-002\", label: \"Savings Account\" },\n { value: \"PROD-003\", label: \"Money Market Account\" },\n { value: \"PROD-004\", label: \"Business Checking\" },\n];\n","import { Edit } from \"lucide-react\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Button } from \"@/components/ui/button\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { StatementHeader as StatementHeaderType, calculateBalanceChange } from \"@/lib/mock-data/statement-data\"\n\ninterface StatementHeaderProps {\n data: StatementHeaderType\n onEdit: () => void\n}\n\nexport const StatementHeader = ({ data, onEdit }: StatementHeaderProps) => {\n // Helper to check if value is not empty\n const hasValue = (value: string | number | undefined | null): boolean => {\n if (value === undefined || value === null) return false;\n if (typeof value === 'string' && value.trim() === '') return false;\n return true;\n }\n\n // Only calculate balance change if both values exist\n const balanceChange = (data.startingBalance && data.endingBalance)\n ? calculateBalanceChange(data.startingBalance, data.endingBalance)\n : null\n \n return (\n <Card>\n <CardHeader direction=\"row\">\n <CardTitle size=\"md\">Statement Summary</CardTitle>\n <Button variant=\"outline\" size=\"sm\" onClick={onEdit}>\n <Edit className=\"h-4 w-4 mr-2\" />\n Edit\n </Button>\n </CardHeader>\n <CardContent>\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6\">\n {hasValue(data.account) && (\n <InfoField \n label=\"Account\" \n value={data.account} \n layout=\"horizontal\"\n />\n )}\n {hasValue(data.productId) && (\n <InfoField \n label=\"Product ID\" \n value={data.productId} \n layout=\"horizontal\"\n />\n )}\n {hasValue(data.programId) && (\n <InfoField \n label=\"Program ID\" \n value={data.programId} \n layout=\"horizontal\"\n />\n )}\n {hasValue(data.startDate) && (\n <InfoField \n label=\"Start Date\" \n value={data.startDate} \n layout=\"horizontal\"\n />\n )}\n {hasValue(data.endDate) && (\n <InfoField \n label=\"End Date\" \n value={data.endDate} \n layout=\"horizontal\"\n />\n )}\n {hasValue(data.startingBalance) && (\n <InfoField \n label=\"Starting Balance\" \n value={data.startingBalance} \n layout=\"horizontal\"\n />\n )}\n {hasValue(data.endingBalance) && (\n <InfoField \n label=\"Ending Balance\" \n value={data.endingBalance} \n layout=\"horizontal\"\n />\n )}\n {balanceChange && (\n <InfoField \n label=\"Balance Change\" \n value={\n <span className={balanceChange.isPositive ? \"text-green-600 font-medium\" : \"text-red-600 font-medium\"}>\n {balanceChange.formatted}\n </span>\n }\n layout=\"horizontal\"\n />\n )}\n </div>\n </CardContent>\n </Card>\n )\n}\n","import { Download, FileText, Loader2, RefreshCw, AlertCircle } from \"lucide-react\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { DatePicker } from \"@/components/ui/date-picker\"\nimport { DataTable, DataTableColumn } from \"@/components/ui/data-table\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { StatementHeader as StatementHeaderComponent } from \"@/components/statement/StatementHeader\"\nimport { StatementTransaction, StatementHeader } from \"@/lib/mock-data/statement-data\"\nimport { formatCurrency } from \"@/lib/utils\"\n\nconst statementTypes = [\n { value: \"root\", label: \"Root\" },\n { value: \"program\", label: \"Program\" },\n { value: \"product\", label: \"Product\" },\n { value: \"account\", label: \"Account\" }\n]\n\nconst columns: DataTableColumn<StatementTransaction>[] = [\n {\n key: \"transactionType\",\n title: \"Transaction Type\",\n sortable: true,\n align: \"left\"\n },\n {\n key: \"direction\",\n title: \"Direction\",\n sortable: true,\n align: \"left\",\n render: (value: string) => (\n <Badge variant={value === \"CREDIT\" ? \"success\" : \"secondary\"}>\n {value}\n </Badge>\n )\n },\n {\n key: \"amount\",\n title: \"Amount\",\n sortable: true,\n align: \"right\",\n render: (value: number) => formatCurrency(value)\n },\n {\n key: \"count\",\n title: \"Count\",\n sortable: true,\n align: \"right\"\n }\n]\n\ninterface StatementViewProps {\n statementType: string\n selectedProgram: string\n selectedProduct: string\n accountNumber: string\n startDate: Date | undefined\n endDate: Date | undefined\n statementGenerated: boolean\n programs: Array<{ value: string; label: string }>\n products: Array<{ value: string; label: string }>\n statementHeader: StatementHeader | null\n statementTransactions: StatementTransaction[]\n programsLoading: boolean\n productsLoading: boolean\n programsError: string | null\n productsError: string | null\n onStatementTypeChange: (value: string) => void\n onProgramChange: (value: string) => void\n onProductChange: (value: string) => void\n onAccountNumberChange: (value: string) => void\n onStartDateChange: (date: Date | undefined) => void\n onEndDateChange: (date: Date | undefined) => void\n onGenerateStatement: () => void\n onEdit: () => void\n onDownloadCSV: () => void\n onPrintPDF: () => void\n onRetryFetch: () => void\n shouldShowRetry: boolean\n isGenerateDisabled: boolean\n isLoading: boolean\n}\n\nexport const StatementView = ({\n statementType,\n selectedProgram,\n selectedProduct,\n accountNumber,\n startDate,\n endDate,\n statementGenerated,\n programs,\n products,\n statementHeader,\n statementTransactions,\n programsLoading,\n productsLoading,\n programsError,\n productsError,\n onStatementTypeChange,\n onProgramChange,\n onProductChange,\n onAccountNumberChange,\n onStartDateChange,\n onEndDateChange,\n onGenerateStatement,\n onEdit,\n onDownloadCSV,\n onPrintPDF,\n onRetryFetch,\n shouldShowRetry,\n isGenerateDisabled,\n isLoading\n}: StatementViewProps) => {\n return (\n <div className=\"container mx-auto p-6 space-y-6\">\n {/* Page Header */}\n <div>\n <h1 className=\"text-3xl font-bold tracking-tight\">Statement</h1>\n <p className=\"text-muted-foreground mt-1\">\n Generate and view statement reports\n </p>\n </div>\n\n {/* Filter Section - Only show when not generated */}\n {!statementGenerated && (\n <Card>\n <CardHeader>\n <CardTitle size=\"md\">Statement Parameters</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n {/* Error Alerts - Show above all inputs */}\n {statementType === \"program\" && programsError && (\n <div className=\"flex items-center justify-between gap-2 p-4 bg-destructive/10 border border-destructive/20 rounded-md\">\n <div className=\"flex items-center gap-2\">\n <AlertCircle className=\"h-5 w-5 text-destructive flex-shrink-0\" />\n <div>\n <p className=\"text-sm font-medium text-destructive\">Failed to load programs</p>\n <p className=\"text-xs text-destructive/80 mt-0.5\">{programsError}</p>\n </div>\n </div>\n <Button \n onClick={onRetryFetch}\n variant=\"outline\"\n size=\"sm\"\n disabled={programsLoading}\n >\n {programsLoading ? (\n <Loader2 className=\"h-4 w-4 animate-spin\" />\n ) : (\n <RefreshCw className=\"h-4 w-4\" />\n )}\n Retry\n </Button>\n </div>\n )}\n\n {statementType === \"product\" && productsError && (\n <div className=\"flex items-center justify-between gap-2 p-4 bg-destructive/10 border border-destructive/20 rounded-md\">\n <div className=\"flex items-center gap-2\">\n <AlertCircle className=\"h-5 w-5 text-destructive flex-shrink-0\" />\n <div>\n <p className=\"text-sm font-medium text-destructive\">Failed to load products</p>\n <p className=\"text-xs text-destructive/80 mt-0.5\">{productsError}</p>\n </div>\n </div>\n <Button \n onClick={onRetryFetch}\n variant=\"outline\"\n size=\"sm\"\n disabled={productsLoading}\n >\n {productsLoading ? (\n <Loader2 className=\"h-4 w-4 animate-spin\" />\n ) : (\n <RefreshCw className=\"h-4 w-4\" />\n )}\n Retry\n </Button>\n </div>\n )}\n\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4\">\n {/* Statement Type */}\n <EnhancedSelect\n label=\"Statement Type\"\n placeholder=\"Select type\"\n options={statementTypes}\n value={statementType}\n onValueChange={onStatementTypeChange}\n />\n\n {/* Conditional Secondary Selector */}\n {statementType === \"program\" && (\n <EnhancedSelect\n label=\"Program Name\"\n placeholder={programsLoading ? \"Loading programs...\" : \"Select program\"}\n options={programs}\n value={selectedProgram}\n onValueChange={onProgramChange}\n disabled={programsLoading || !!programsError}\n />\n )}\n\n {statementType === \"product\" && (\n <EnhancedSelect\n label=\"Product Name\"\n placeholder={productsLoading ? \"Loading products...\" : \"Select product\"}\n options={products}\n value={selectedProduct}\n onValueChange={onProductChange}\n disabled={productsLoading || !!productsError}\n />\n )}\n\n {statementType === \"account\" && (\n <EnhancedInput\n label=\"Account Number\"\n placeholder=\"Enter account number\"\n value={accountNumber}\n onChange={(e) => onAccountNumberChange(e.target.value)}\n />\n )}\n\n {/* Start Date */}\n <DatePicker\n label=\"Start Date\"\n date={startDate}\n onDateChange={onStartDateChange}\n placeholder=\"Select start date\"\n buttonClassName=\"w-full\"\n />\n\n {/* End Date */}\n <DatePicker\n label=\"End Date\"\n date={endDate}\n onDateChange={onEndDateChange}\n placeholder=\"Select end date\"\n buttonClassName=\"w-full\"\n />\n </div>\n\n {/* Generate Button */}\n <div className=\"flex justify-end\">\n <Button \n onClick={onGenerateStatement}\n disabled={isGenerateDisabled || isLoading}\n >\n {isLoading && <Loader2 className=\"h-4 w-4 animate-spin\" />}\n {isLoading ? \"Generating...\" : \"Generate Statement\"}\n </Button>\n </div>\n </CardContent>\n </Card>\n )}\n\n {/* Statement Results */}\n {statementGenerated && statementHeader && (\n <>\n {/* Statement Header */}\n <StatementHeaderComponent data={statementHeader} onEdit={onEdit} />\n\n {/* Statement Table */}\n <Card>\n <CardHeader direction=\"row\">\n <CardTitle size=\"md\">Transaction Summary</CardTitle>\n \n {/* Action Buttons */}\n <div className=\"flex items-center gap-2\">\n <Button variant=\"outline\" onClick={onDownloadCSV}>\n <Download className=\"h-4 w-4 mr-2\" />\n Download CSV\n </Button>\n <Button variant=\"outline\" onClick={onPrintPDF}>\n <FileText className=\"h-4 w-4 mr-2\" />\n Print PDF\n </Button>\n </div>\n </CardHeader>\n <CardContent>\n <DataTable\n columns={columns}\n data={statementTransactions}\n emptyMessage=\"No transactions found\"\n />\n </CardContent>\n </Card>\n </>\n )}\n </div>\n )\n}\n","import { useState } from \"react\"\nimport { FormCard } from \"@/components/ui/form-card\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { JsonViewer } from \"@/components/ui/json-viewer\"\nimport { ChevronRight, ChevronDown, Copy, Check } from \"lucide-react\"\n\ninterface ACHDetails {\n // Originator fields\n originatorName: string\n originatorRtn: string\n originatorId: string\n \n // Receiver fields\n receiverName: string\n receiverRtn: string\n receiverAccount: string\n \n // Transaction details\n secCode: string\n accountType?: string\n effectiveDate?: string\n service?: string\n traceNumber: string\n \n // Return/Correction fields\n correctedData?: string\n returnCode?: string\n changeCode?: string\n returnReason?: string\n changeReason?: string\n returnedAt?: string\n nocAt?: string\n \n // Addenda fields\n addenda?: string\n iatAddenda?: string\n \n // Raw JSON\n raw?: any\n}\n\ninterface ACHDetailsSectionProps {\n data: ACHDetails\n}\n\nexport const ACHDetailsSection = ({ data }: ACHDetailsSectionProps) => {\n const [copiedField, setCopiedField] = useState<string | null>(null)\n\n const handleCopy = (value: string, field: string) => {\n navigator.clipboard.writeText(value)\n setCopiedField(field)\n setTimeout(() => setCopiedField(null), 2000)\n }\n\n return (\n <FormCard title=\"ACH Details\">\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-x-8 gap-y-4\">\n {/* Row 1 */}\n <InfoField label=\"Originator Name\" value={data.originatorName} layout=\"horizontal\" />\n <InfoField label=\"Receiver Name\" value={data.receiverName} layout=\"horizontal\" />\n \n {/* Row 2 */}\n <InfoField label=\"Originator RTN\" value={data.originatorRtn} layout=\"horizontal\" />\n <InfoField label=\"Receiver RTN\" value={data.receiverRtn} layout=\"horizontal\" />\n \n {/* Row 3 */}\n <InfoField label=\"Originator ID\" value={data.originatorId} layout=\"horizontal\" />\n <InfoField label=\"Receiver Account\" value={data.receiverAccount} layout=\"horizontal\" />\n \n {/* Row 4 */}\n <InfoField label=\"SEC Code\" value={data.secCode} layout=\"horizontal\" />\n <InfoField label=\"Account Type\" value={data.accountType || \"-\"} layout=\"horizontal\" />\n \n {/* Row 5 */}\n <InfoField label=\"Effective Date\" value={data.effectiveDate || \"-\"} layout=\"horizontal\" />\n <InfoField label=\"Service\" value={data.service || \"-\"} layout=\"horizontal\" />\n \n {/* Row 6 */}\n <InfoField \n label=\"Trace Number\" \n value={\n <div className=\"flex items-start gap-2\">\n <span className=\"break-all\">{data.traceNumber}</span>\n <button\n type=\"button\"\n onClick={() => handleCopy(data.traceNumber, 'traceNumber')}\n className=\"text-muted-foreground hover:text-foreground transition-colors flex-shrink-0\"\n >\n {copiedField === 'traceNumber' ? (\n <Check className=\"h-3.5 w-3.5 text-success\" />\n ) : (\n <Copy className=\"h-3.5 w-3.5\" />\n )}\n </button>\n </div>\n }\n layout=\"horizontal\" \n />\n <InfoField label=\"Corrected Data\" value={data.correctedData || \"-\"} layout=\"horizontal\" />\n \n {/* Row 7 */}\n <InfoField label=\"Return Code\" value={data.returnCode || \"-\"} layout=\"horizontal\" />\n <InfoField label=\"Change Code\" value={data.changeCode || \"-\"} layout=\"horizontal\" />\n \n {/* Row 8 */}\n <InfoField label=\"Return Reason\" value={data.returnReason || \"-\"} layout=\"horizontal\" />\n <InfoField label=\"Change Reason\" value={data.changeReason || \"-\"} layout=\"horizontal\" />\n \n {/* Row 9 */}\n <InfoField label=\"Returned At\" value={data.returnedAt || \"-\"} layout=\"horizontal\" />\n <InfoField label=\"NOC At\" value={data.nocAt || \"-\"} layout=\"horizontal\" />\n \n {/* Row 10 */}\n <InfoField label=\"Addenda\" value={data.addenda || \"-\"} layout=\"horizontal\" />\n <InfoField label=\"IAT Addenda\" value={data.iatAddenda || \"-\"} layout=\"horizontal\" />\n </div>\n\n {/* Raw JSON - Collapsible */}\n {data.raw && <CollapsibleRawSection data={data.raw} />}\n </FormCard>\n )\n}\n\nconst CollapsibleRawSection = ({ data }: { data: any }) => {\n const [isExpanded, setIsExpanded] = useState(false)\n\n return (\n <div className=\"mt-6 pt-6 border-t border-border\">\n <button\n type=\"button\"\n onClick={() => setIsExpanded(!isExpanded)}\n className=\"flex items-center gap-2 text-sm font-medium text-muted-foreground hover:text-foreground transition-colors\"\n >\n {isExpanded ? (\n <ChevronDown className=\"h-4 w-4\" />\n ) : (\n <ChevronRight className=\"h-4 w-4\" />\n )}\n Raw message\n </button>\n {isExpanded && (\n <div className=\"mt-3\">\n <JsonViewer data={data} expandFully />\n </div>\n )}\n </div>\n )\n}\n","import { FormCard } from \"@/components/ui/form-card\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { Button } from \"@/components/ui/button\"\nimport { JsonViewer } from \"@/components/ui/json-viewer\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { useState, useRef, useEffect } from \"react\"\nimport { Pencil, Check, X, ChevronRight, ChevronDown, Copy } from \"lucide-react\"\n\ninterface WireDetails {\n type: \"DOMESTIC\" | \"INTERNATIONAL\"\n imad?: string\n omad?: string\n originatorName: string\n originatorAccountNumber: string\n originatorFIName: string\n originatorFIId: string\n beneficiaryName: string\n beneficiaryAccountNumber: string\n beneficiaryFIName: string\n beneficiaryFIId: string\n returnCode?: string\n returnReason?: string\n originatorToBeneficiaryInfo?: string\n raw?: any\n}\n\ninterface WireDetailsSectionProps {\n data: WireDetails\n onIMADChange?: (newImad: string) => void\n}\n\nexport const WireDetailsSection = ({ data, onIMADChange }: WireDetailsSectionProps) => {\n const [isEditingImad, setIsEditingImad] = useState(false)\n const [imadValue, setImadValue] = useState(data.imad || \"\")\n const [copied, setCopied] = useState<\"imad\" | \"omad\" | null>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n\n useEffect(() => {\n if (isEditingImad && inputRef.current) {\n inputRef.current.focus()\n }\n }, [isEditingImad])\n\n const handleImadSave = () => {\n if (onIMADChange && imadValue !== data.imad) {\n onIMADChange(imadValue)\n }\n setIsEditingImad(false)\n }\n\n const handleImadCancel = () => {\n setImadValue(data.imad || \"\")\n setIsEditingImad(false)\n }\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\") {\n handleImadSave()\n } else if (e.key === \"Escape\") {\n handleImadCancel()\n }\n }\n\n const handleCopy = (value: string, field: \"imad\" | \"omad\") => {\n navigator.clipboard.writeText(value)\n setCopied(field)\n setTimeout(() => setCopied(null), 2000)\n }\n\n const omadFieldValue = data.omad ? (\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm\">{data.omad}</span>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-6 w-6\"\n onClick={() => handleCopy(data.omad!, \"omad\")}\n >\n {copied === \"omad\" ? (\n <Check className=\"h-3 w-3 text-success\" />\n ) : (\n <Copy className=\"h-3 w-3 text-muted-foreground\" />\n )}\n </Button>\n </div>\n ) : (\n <span className=\"text-sm\">-</span>\n )\n\n const imadFieldValue = isEditingImad ? (\n <div className=\"flex items-center gap-2\">\n <input\n ref={inputRef}\n value={imadValue}\n onChange={(e) => setImadValue(e.target.value)}\n onKeyDown={handleKeyDown}\n className=\"h-7 text-sm px-2 border border-border rounded-md bg-background focus:outline-none focus:ring-1 focus:ring-primary\"\n />\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-7 w-7\"\n onClick={handleImadSave}\n >\n <Check className=\"h-4 w-4 text-success\" />\n </Button>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-7 w-7\"\n onClick={handleImadCancel}\n >\n <X className=\"h-4 w-4 text-muted-foreground\" />\n </Button>\n </div>\n ) : (\n data.imad ? (\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm\">{data.imad}</span>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-6 w-6\"\n onClick={() => handleCopy(data.imad!, \"imad\")}\n >\n {copied === \"imad\" ? (\n <Check className=\"h-3 w-3 text-success\" />\n ) : (\n <Copy className=\"h-3 w-3 text-muted-foreground\" />\n )}\n </Button>\n {onIMADChange && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-6 w-6\"\n onClick={() => setIsEditingImad(true)}\n >\n <Pencil className=\"h-3 w-3 text-muted-foreground\" />\n </Button>\n )}\n </div>\n ) : (\n onIMADChange ? (\n <Button \n variant=\"link\" \n className=\"h-auto p-0 text-sm\"\n onClick={() => setIsEditingImad(true)}\n >\n Add IMAD\n </Button>\n ) : (\n <span className=\"text-sm\">-</span>\n )\n )\n )\n\n return (\n <FormCard \n title=\"Wire Transfer Details\"\n titleBadge={\n <Badge variant={data.type === \"INTERNATIONAL\" ? \"outline\" : \"secondary\"}>\n {data.type === \"INTERNATIONAL\" ? \"International\" : \"Domestic\"}\n </Badge>\n }\n >\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-x-8 gap-y-4\">\n {/* Row 1 - IMAD/OMAD */}\n <InfoField label=\"IMAD\" value={imadFieldValue} layout=\"horizontal\" />\n <InfoField label=\"OMAD\" value={omadFieldValue} layout=\"horizontal\" />\n \n {/* Row 2 - Names */}\n <InfoField label=\"Originator\" value={data.originatorName} layout=\"horizontal\" />\n <InfoField label=\"Beneficiary\" value={data.beneficiaryName} layout=\"horizontal\" />\n \n {/* Row 3 - Accounts */}\n <InfoField label=\"Originator Account\" value={data.originatorAccountNumber} layout=\"horizontal\" />\n <InfoField label=\"Beneficiary Account\" value={data.beneficiaryAccountNumber} layout=\"horizontal\" />\n \n {/* Row 4 - FI Names */}\n <InfoField label=\"Originator FI\" value={data.originatorFIName} layout=\"horizontal\" />\n <InfoField label=\"Beneficiary FI\" value={data.beneficiaryFIName} layout=\"horizontal\" />\n \n {/* Row 5 - FI IDs */}\n <InfoField label=\"Originator FI ID\" value={data.originatorFIId} layout=\"horizontal\" />\n <InfoField label=\"Beneficiary FI ID\" value={data.beneficiaryFIId} layout=\"horizontal\" />\n \n {/* Row 6 - Return fields */}\n <InfoField label=\"Return Code\" value={data.returnCode || \"-\"} layout=\"horizontal\" />\n <InfoField label=\"Return Reason\" value={data.returnReason || \"-\"} layout=\"horizontal\" />\n </div>\n\n {/* Single line - Originator to Beneficiary Info */}\n {data.originatorToBeneficiaryInfo && (\n <div className=\"mt-4\">\n <InfoField \n label=\"Originator to Beneficiary Info\" \n value={data.originatorToBeneficiaryInfo} \n layout=\"horizontal\" \n />\n </div>\n )}\n\n {/* Raw JSON - Collapsible */}\n {data.raw && (\n <CollapsibleRawSection data={data.raw} />\n )}\n </FormCard>\n )\n}\n\nconst CollapsibleRawSection = ({ data }: { data: any }) => {\n const [isExpanded, setIsExpanded] = useState(false)\n\n return (\n <div className=\"mt-6 pt-6 border-t border-border\">\n <button\n type=\"button\"\n onClick={() => setIsExpanded(!isExpanded)}\n className=\"flex items-center gap-2 text-sm font-medium text-muted-foreground hover:text-foreground transition-colors\"\n >\n {isExpanded ? (\n <ChevronDown className=\"h-4 w-4\" />\n ) : (\n <ChevronRight className=\"h-4 w-4\" />\n )}\n Raw message\n </button>\n {isExpanded && (\n <div className=\"mt-3\">\n <JsonViewer data={data} expandFully />\n </div>\n )}\n </div>\n )\n}\n","import * as React from \"react\"\nimport { EnhancedInput, type InputProps } from \"@/components/ui/enhanced-input\"\n\nconst formatCurrency = (value: string | number) => {\n const numValue = typeof value === 'string' ? parseFloat(value) : value\n if (isNaN(numValue)) return \"\"\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n minimumFractionDigits: 2\n }).format(numValue)\n}\n\ninterface CurrencyInputProps extends Omit<InputProps, 'value' | 'onChange'> {\n value: string\n onChange: (value: string) => void\n}\n\nexport const CurrencyInput = ({ value, onChange, ...props }: CurrencyInputProps) => {\n const [isFocused, setIsFocused] = React.useState(false)\n \n const displayValue = value \n ? (isFocused ? value : formatCurrency(value))\n : ''\n \n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const rawValue = e.target.value.replace(/[^0-9.]/g, '')\n const parts = rawValue.split('.')\n const sanitized = parts[0] + (parts.length > 1 ? '.' + parts[1]?.slice(0, 2) : '')\n onChange(sanitized)\n }\n \n return (\n <EnhancedInput\n {...props}\n value={displayValue}\n onChange={handleChange}\n onFocus={() => setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n inputMode=\"decimal\"\n placeholder={props.placeholder || \"$0.00\"}\n />\n )\n}\n\nexport { formatCurrency }\n","import * as React from \"react\"\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport { Check } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\"flex items-center justify-center text-current\")}\n >\n <Check className=\"h-4 w-4\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n))\nCheckbox.displayName = CheckboxPrimitive.Root.displayName\n\nexport { Checkbox }\n","import React from \"react\"\nimport { UseFormReturn, Controller } from \"react-hook-form\"\n\nimport { FormCard } from \"@/components/ui/form-card\"\nimport { Button } from \"@/components/ui/button\"\nimport { FormProvider } from \"@/components/ui/form-provider\"\nimport { FormSelect } from \"@/components/ui/form-select\"\nimport { FormInput } from \"@/components/ui/form-input\"\nimport { CurrencyInput } from \"@/components/ui/currency-input\"\nimport { DataGrid } from \"@/components/ui/data-grid\"\nimport { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter } from \"@/components/ui/dialog\"\nimport { Checkbox } from \"@/components/ui/checkbox\"\nimport { ArrowLeftRight, Settings, Building2, Zap, Search, CheckCircle2, XCircle, AlertCircle, Edit, Loader2 } from \"lucide-react\"\nimport { cn } from \"@/lib/utils\"\n\nconst formatCurrency = (value: string | number) => {\n const numValue = typeof value === 'string' ? parseFloat(value) : value\n if (isNaN(numValue)) return \"-\"\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n minimumFractionDigits: 2\n }).format(numValue)\n}\n\nexport interface AccountData {\n accountNumber: string\n accountName: string\n accountType: string\n balance: string\n customerName: string\n customerId: string\n customerType: string\n}\n\nexport interface CounterpartyData {\n counterpartyName: string\n counterpartyId: string\n counterpartyType: string\n status: string\n taxId: string\n primaryContact: string\n contactEmail: string\n contactPhone: string\n address: string\n paymentInstrumentType: string\n}\n\nexport interface CounterpartySearchResult {\n id: string\n name: string\n type: string\n paymentInstrumentType: string\n}\n\nexport interface NewTransactionFormValues {\n transactionType: string\n accountNumber: string\n counterpartyName?: string\n amount: string\n description: string\n certifyInformation: boolean\n // Adjustment-specific fields\n adjustmentDirection?: string\n adjustmentType?: string\n // Transfer-specific fields\n receiverAccountNumber?: string\n}\n\nexport interface TransactionTypeOption {\n value: string\n label: string\n icon: React.ComponentType<{ className?: string }>\n disabled?: boolean\n}\n\nexport const ADJUSTMENT_DIRECTION_OPTIONS = [\n { value: \"debit\", label: \"Debit\" },\n { value: \"credit\", label: \"Credit\" },\n]\n\nexport interface AdjustmentTypeOption {\n value: string\n label: string\n}\n\ninterface NewTransactionViewProps {\n form: UseFormReturn<NewTransactionFormValues>\n accountLookedUp: boolean\n accountData: AccountData | null\n counterpartyLookedUp: boolean\n counterpartyData: CounterpartyData | null\n confirmationOpen: boolean\n submissionStatus: \"success\" | \"error\" | null\n errorMessage: string\n transactionId: string\n isAccountLoading: boolean\n isCounterpartyLoading: boolean\n isSubmitting: boolean\n counterpartySearchResults: CounterpartySearchResult[]\n isCounterpartySearching: boolean\n showCounterpartyDropdown: boolean\n onAccountLookup: () => void\n onEditAccount: () => void\n onEditCounterparty: () => void\n onTransactionTypeChange: (type: string) => void\n onSubmit: () => void\n onConfirmationClose: () => void\n onConfirmationOpenChange: (open: boolean) => void\n onNewTransaction: () => void\n onCounterpartySearchChange: (value: string) => void\n onCounterpartySelect: (result: CounterpartySearchResult) => void\n onCounterpartyDropdownClose: () => void\n // Counterparty search pagination\n counterpartyHasMore: boolean\n counterpartyTotalResults: number\n isLoadingMoreCounterparties: boolean\n onLoadMoreCounterparties: () => void\n // Transfer-specific props\n receiverAccountLookedUp: boolean\n receiverAccountData: AccountData | null\n isReceiverAccountLoading: boolean\n onReceiverAccountLookup: () => void\n onEditReceiverAccount: () => void\n // Review ready state\n isReviewReady: boolean\n // Adjustment type options (dynamic based on direction)\n adjustmentTypeOptions: AdjustmentTypeOption[]\n // Transaction type options with disabled state\n transactionTypeOptions: TransactionTypeOption[]\n // Success dialog info box (optional)\n showSuccessInfoBox?: boolean\n successInfoMessage?: string\n}\n\nexport const NewTransactionView = ({\n form,\n accountLookedUp,\n accountData,\n counterpartyLookedUp,\n counterpartyData,\n confirmationOpen,\n submissionStatus,\n errorMessage,\n transactionId,\n isAccountLoading,\n isCounterpartyLoading,\n isSubmitting,\n counterpartySearchResults,\n isCounterpartySearching,\n showCounterpartyDropdown,\n onAccountLookup,\n onEditAccount,\n onEditCounterparty,\n onTransactionTypeChange,\n onSubmit,\n onConfirmationClose,\n onConfirmationOpenChange,\n onNewTransaction,\n onCounterpartySearchChange,\n onCounterpartySelect,\n onCounterpartyDropdownClose,\n counterpartyHasMore,\n counterpartyTotalResults,\n isLoadingMoreCounterparties,\n onLoadMoreCounterparties,\n receiverAccountLookedUp,\n receiverAccountData,\n isReceiverAccountLoading,\n onReceiverAccountLookup,\n onEditReceiverAccount,\n isReviewReady,\n adjustmentTypeOptions,\n transactionTypeOptions,\n showSuccessInfoBox = false,\n successInfoMessage = \"\",\n}: NewTransactionViewProps) => {\n const transactionType = form.watch(\"transactionType\")\n const accountNumber = form.watch(\"accountNumber\")\n const counterpartyName = form.watch(\"counterpartyName\")\n const amount = form.watch(\"amount\")\n const receiverAccountNumber = form.watch(\"receiverAccountNumber\")\n const adjustmentDirection = form.watch(\"adjustmentDirection\")\n const adjustmentType = form.watch(\"adjustmentType\")\n const description = form.watch(\"description\")\n \n // Check if transaction type requires counterparty\n const requiresCounterparty = [\"ach\", \"wire\"].includes(transactionType)\n const isTransfer = transactionType === \"transfer\"\n const isAdjustment = transactionType === \"adjustment\"\n\n const accountDataGrid = accountData ? [\n {\n title: \"Account Information\",\n items: [\n { label: \"Account Number\", value: accountData.accountNumber },\n { label: \"Account Name\", value: accountData.accountName },\n { label: \"Account Type\", value: accountData.accountType },\n { label: \"Balance\", value: accountData.balance },\n { label: \"Customer Name\", value: accountData.customerName },\n { label: \"Customer ID\", value: accountData.customerId },\n ]\n }\n ] : []\n\n const counterpartyDataGrid = counterpartyData ? [\n {\n title: \"Counterparty Information\",\n items: [\n { label: \"Counterparty Name\", value: counterpartyData.counterpartyName },\n { label: \"Counterparty ID\", value: counterpartyData.counterpartyId },\n { label: \"Instrument Type\", value: counterpartyData.paymentInstrumentType?.toUpperCase() || \"-\" },\n { label: \"Contact Email\", value: counterpartyData.contactEmail },\n { label: \"Contact Phone\", value: counterpartyData.contactPhone },\n ]\n }\n ] : []\n\n const receiverAccountDataGrid = receiverAccountData ? [\n {\n title: \"Receiver Account Information\",\n items: [\n { label: \"Account Number\", value: receiverAccountData.accountNumber },\n { label: \"Account Name\", value: receiverAccountData.accountName },\n { label: \"Account Type\", value: receiverAccountData.accountType },\n { label: \"Customer Name\", value: receiverAccountData.customerName },\n { label: \"Customer ID\", value: receiverAccountData.customerId },\n ]\n }\n ] : []\n\n const reviewItems = [\n { label: \"Transaction Type\", value: transactionTypeOptions.find(t => t.value === transactionType)?.label || \"-\" },\n { label: \"Account Number\", value: accountNumber || \"-\" },\n ...(isAdjustment ? [\n { label: \"Direction\", value: adjustmentDirection === \"debit\" ? \"Debit\" : adjustmentDirection === \"credit\" ? \"Credit\" : \"-\" },\n { label: \"Adjustment Type\", value: adjustmentTypeOptions.find(t => t.value === adjustmentType)?.label || \"-\" },\n ] : []),\n ...(isTransfer ? [{ label: \"Receiver Account\", value: receiverAccountNumber || \"-\" }] : []),\n ...(requiresCounterparty ? [{ label: \"Counterparty\", value: counterpartyName || \"-\" }] : []),\n { label: \"Amount\", value: amount ? formatCurrency(amount) : \"-\" },\n { label: \"Description\", value: form.watch(\"description\") || \"N/A\" },\n ]\n\n const reviewData = [\n {\n title: \"Transaction Summary\",\n items: reviewItems\n }\n ]\n\n return (\n <div className=\"container mx-auto p-6 space-y-6 max-w-4xl\">\n {/* Page Header */}\n <div>\n <h1 className=\"text-3xl font-bold tracking-tight\">New Transaction</h1>\n </div>\n <FormProvider form={form}>\n <form onSubmit={(e) => e.preventDefault()}>\n {/* Account Lookup */}\n {!accountLookedUp ? (\n <FormCard title=\"Account Lookup\" variant=\"default\">\n <div className=\"flex gap-3 items-start w-full\">\n <div className=\"flex-1\">\n <FormInput\n name=\"accountNumber\"\n placeholder=\"Enter account number\"\n />\n </div>\n <Button \n onClick={onAccountLookup} \n disabled={!accountNumber || isAccountLoading}\n className=\"shrink-0 mt-0 w-48\"\n >\n {isAccountLoading ? (\n <>\n <Loader2 className=\"h-4 w-4 mr-2 animate-spin\" />\n Looking up...\n </>\n ) : (\n <>\n <Search className=\"h-4 w-4 mr-2\" />\n Lookup Account\n </>\n )}\n </Button>\n </div>\n </FormCard>\n ) : (\n <FormCard \n title=\"Account Information\" \n variant=\"subtle\"\n headerActions={\n <div className=\"flex items-center gap-2\">\n <CheckCircle2 className=\"h-5 w-5 text-success\" />\n <Button variant=\"ghost\" size=\"sm\" onClick={onEditAccount}>\n <Edit className=\"h-4 w-4 mr-1\" />\n Edit\n </Button>\n </div>\n }\n >\n <DataGrid data={accountDataGrid} columns={2} />\n </FormCard>\n )}\n\n {/* Transaction Type Selection */}\n <FormCard \n title=\"Transaction Type\" \n variant=\"default\"\n className={cn(!accountLookedUp && \"opacity-50 pointer-events-none\")}\n >\n <div className=\"grid grid-cols-2 lg:grid-cols-4 gap-3 lg:gap-4\">\n {transactionTypeOptions.map((type) => {\n const Icon = type.icon\n const isSelected = transactionType === type.value\n const isDisabled = !accountLookedUp || type.disabled\n return (\n <button\n key={type.value}\n type=\"button\"\n onClick={() => !type.disabled && onTransactionTypeChange(type.value)}\n disabled={isDisabled}\n className={cn(\n \"flex flex-col items-center justify-center p-4 lg:p-3 rounded-lg border-2 transition-all\",\n isDisabled\n ? \"opacity-50 cursor-not-allowed border-border bg-muted\"\n : \"hover:border-primary/50 hover:shadow-md\",\n isSelected && !type.disabled\n ? \"border-primary bg-primary/5 shadow-sm\"\n : !isDisabled && \"border-border bg-card\"\n )}\n >\n <Icon className={cn(\n \"h-6 w-6 lg:h-5 lg:w-5 mb-2\",\n isSelected && !type.disabled ? \"text-primary\" : \"text-muted-foreground\"\n )} />\n <span className={cn(\n \"text-sm font-medium\",\n isSelected && !type.disabled ? \"text-primary\" : isDisabled ? \"text-muted-foreground\" : \"text-foreground\"\n )}>\n {type.label}\n </span>\n </button>\n )\n })}\n </div>\n </FormCard>\n\n {/* Counterparty Search - only for ACH/Wire */}\n {requiresCounterparty && (\n !counterpartyLookedUp ? (\n <FormCard \n title=\"Counterparty Search\" \n variant=\"default\"\n className={cn(!transactionType && \"opacity-50 pointer-events-none\")}\n >\n <div className=\"relative\">\n <div className=\"relative\">\n <input\n type=\"text\"\n placeholder=\"Start typing to search counterparties...\"\n value={counterpartyName}\n onChange={(e) => onCounterpartySearchChange(e.target.value)}\n disabled={!transactionType}\n className={cn(\n \"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm\",\n \"ring-offset-background placeholder:text-muted-foreground\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n isCounterpartySearching && \"pr-10\"\n )}\n />\n {isCounterpartySearching && (\n <div className=\"absolute right-3 top-1/2 -translate-y-1/2\">\n <Loader2 className=\"h-4 w-4 animate-spin text-muted-foreground\" />\n </div>\n )}\n </div>\n \n {/* Search Results Dropdown */}\n {showCounterpartyDropdown && counterpartySearchResults.length > 0 && (\n <div className=\"absolute z-50 w-full mt-1 bg-popover border border-border rounded-md shadow-lg max-h-60 overflow-hidden flex flex-col\">\n {/* Results count header */}\n <div className=\"px-3 py-2 text-xs text-muted-foreground border-b bg-muted/50 flex-shrink-0\">\n Showing {counterpartySearchResults.length} of {counterpartyTotalResults} results\n </div>\n \n {/* Results list */}\n <div className=\"overflow-auto flex-1\">\n {counterpartySearchResults.map((result) => (\n <button\n key={result.id}\n type=\"button\"\n onClick={() => onCounterpartySelect(result)}\n className=\"w-full px-3 py-2 text-left hover:bg-accent transition-colors\"\n >\n <div className=\"font-medium text-sm\">{result.name}</div>\n <div className=\"text-xs text-muted-foreground\">{result.id}</div>\n </button>\n ))}\n </div>\n \n {/* Load More button */}\n {counterpartyHasMore && (\n <button\n type=\"button\"\n onClick={onLoadMoreCounterparties}\n disabled={isLoadingMoreCounterparties}\n className=\"w-full px-3 py-2 text-center text-sm text-primary hover:bg-accent border-t flex-shrink-0 disabled:opacity-50\"\n >\n {isLoadingMoreCounterparties ? (\n <span className=\"flex items-center justify-center gap-2\">\n <Loader2 className=\"h-4 w-4 animate-spin\" />\n Loading...\n </span>\n ) : (\n \"Load More\"\n )}\n </button>\n )}\n </div>\n )}\n \n {/* No results message */}\n {showCounterpartyDropdown && counterpartySearchResults.length === 0 && !isCounterpartySearching && counterpartyName.length >= 2 && (\n <div className=\"absolute z-50 w-full mt-1 bg-popover border border-border rounded-md shadow-lg p-3\">\n <p className=\"text-sm text-muted-foreground\">No counterparties found matching \"{counterpartyName}\"</p>\n </div>\n )}\n </div>\n <p className=\"text-xs text-muted-foreground mt-2\">\n Type at least 2 characters to search\n </p>\n </FormCard>\n ) : (\n <FormCard \n title=\"Counterparty Information\" \n variant=\"subtle\"\n headerActions={\n <div className=\"flex items-center gap-2\">\n <CheckCircle2 className=\"h-5 w-5 text-success\" />\n <Button variant=\"ghost\" size=\"sm\" onClick={onEditCounterparty}>\n <Edit className=\"h-4 w-4 mr-1\" />\n Edit\n </Button>\n </div>\n }\n >\n <DataGrid data={counterpartyDataGrid} columns={2} />\n </FormCard>\n )\n )}\n\n {/* Receiver Account Lookup - only for Transfer */}\n {isTransfer && (\n !receiverAccountLookedUp ? (\n <FormCard \n title=\"Receiver Account\" \n variant=\"default\"\n className={cn(!transactionType && \"opacity-50 pointer-events-none\")}\n >\n <div className=\"flex gap-3 items-start w-full\">\n <div className=\"flex-1\">\n <FormInput\n name=\"receiverAccountNumber\"\n placeholder=\"Enter receiver account number\"\n disabled={!transactionType}\n />\n </div>\n <Button \n onClick={onReceiverAccountLookup} \n disabled={!receiverAccountNumber || isReceiverAccountLoading}\n className=\"shrink-0 mt-0 w-48\"\n >\n {isReceiverAccountLoading ? (\n <>\n <Loader2 className=\"h-4 w-4 mr-2 animate-spin\" />\n Looking up...\n </>\n ) : (\n <>\n <Search className=\"h-4 w-4 mr-2\" />\n Lookup Receiver\n </>\n )}\n </Button>\n </div>\n </FormCard>\n ) : (\n <FormCard \n title=\"Receiver Account Information\" \n variant=\"subtle\"\n headerActions={\n <div className=\"flex items-center gap-2\">\n <CheckCircle2 className=\"h-5 w-5 text-success\" />\n <Button variant=\"ghost\" size=\"sm\" onClick={onEditReceiverAccount}>\n <Edit className=\"h-4 w-4 mr-1\" />\n Edit\n </Button>\n </div>\n }\n >\n <DataGrid data={receiverAccountDataGrid} columns={2} />\n </FormCard>\n )\n )}\n\n {/* Transaction Details */}\n <FormCard \n title=\"Transaction Details\" \n variant=\"default\"\n className={cn(\n requiresCounterparty \n ? (!counterpartyLookedUp && \"opacity-50 pointer-events-none\")\n : isTransfer\n ? (!receiverAccountLookedUp && \"opacity-50 pointer-events-none\")\n : (!transactionType && \"opacity-50 pointer-events-none\")\n )}\n >\n <div className=\"space-y-4\">\n {/* Adjustment-specific fields */}\n {isAdjustment && (\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-4\">\n <FormSelect\n name=\"adjustmentDirection\"\n label=\"Direction\"\n placeholder=\"Select direction\"\n options={ADJUSTMENT_DIRECTION_OPTIONS}\n disabled={!transactionType}\n />\n <FormSelect\n name=\"adjustmentType\"\n label=\"Adjustment Type\"\n placeholder=\"Select type\"\n options={adjustmentTypeOptions}\n disabled={!transactionType || !adjustmentDirection}\n />\n </div>\n )}\n\n <Controller\n name=\"amount\"\n control={form.control}\n render={({ field }) => (\n <CurrencyInput\n label=\"Amount\"\n value={field.value}\n onChange={field.onChange}\n disabled={\n requiresCounterparty \n ? !counterpartyLookedUp \n : isTransfer \n ? !receiverAccountLookedUp \n : !transactionType\n }\n error={form.formState.errors.amount?.message}\n />\n )}\n />\n <FormInput\n name=\"description\"\n label=\"Description\"\n placeholder=\"Enter transaction description\"\n disabled={\n requiresCounterparty \n ? !counterpartyLookedUp \n : isTransfer \n ? !receiverAccountLookedUp \n : !transactionType\n }\n />\n </div>\n </FormCard>\n\n {/* Review Summary */}\n <FormCard title=\"Review & Submit\" variant=\"default\" className={cn(!isReviewReady && \"opacity-50 pointer-events-none\")}>\n <div className=\"space-y-6\">\n <DataGrid data={reviewData} columns={2} />\n \n {/* Certification Checkbox */}\n <div className=\"bg-muted/30 rounded-lg p-4 border border-border/50\">\n <Controller\n name=\"certifyInformation\"\n control={form.control}\n render={({ field }) => (\n <div className=\"space-y-2\">\n <div className=\"flex items-start gap-3\">\n <Checkbox\n id=\"certifyInformation\"\n checked={field.value}\n onCheckedChange={field.onChange}\n />\n <label\n htmlFor=\"certifyInformation\"\n className=\"text-sm font-medium leading-relaxed cursor-pointer select-none\"\n >\n I certify that all information entered is correct and accurate to the best of my knowledge\n </label>\n </div>\n {form.formState.errors.certifyInformation && (\n <p className=\"text-xs text-destructive ml-7\">\n {form.formState.errors.certifyInformation.message}\n </p>\n )}\n </div>\n )}\n />\n </div>\n \n <div className=\"flex justify-end pt-4 border-t border-border\">\n <Button\n type=\"button\"\n onClick={onSubmit}\n className=\"w-48\"\n disabled={\n !transactionType || \n !accountNumber || \n (requiresCounterparty && !counterpartyName) || \n (isTransfer && !receiverAccountLookedUp) ||\n (isAdjustment && (!adjustmentDirection || !adjustmentType)) ||\n !amount || \n !form.watch(\"certifyInformation\") || \n isSubmitting\n }\n >\n {isSubmitting ? (\n <>\n <Loader2 className=\"h-4 w-4 mr-2 animate-spin\" />\n Submitting...\n </>\n ) : (\n <>\n <CheckCircle2 className=\"h-4 w-4 mr-2\" />\n Submit Transaction\n </>\n )}\n </Button>\n </div>\n </div>\n </FormCard>\n </form>\n </FormProvider>\n\n {/* Confirmation Dialog */}\n <Dialog open={confirmationOpen} onOpenChange={() => {}}>\n <DialogContent className=\"sm:max-w-md flex flex-col max-h-[85vh]\" hideCloseButton>\n <DialogHeader className=\"flex-shrink-0\">\n <div className=\"flex items-center gap-3 mb-2\">\n {submissionStatus === \"success\" ? (\n <div className=\"h-12 w-12 rounded-full bg-success/10 flex items-center justify-center\">\n <CheckCircle2 className=\"h-6 w-6 text-success\" />\n </div>\n ) : (\n <div className=\"h-12 w-12 rounded-full bg-destructive/10 flex items-center justify-center\">\n <XCircle className=\"h-6 w-6 text-destructive\" />\n </div>\n )}\n <DialogTitle className=\"text-xl\">\n {submissionStatus === \"success\" ? \"Transaction Submitted\" : \"Transaction Failed\"}\n </DialogTitle>\n </div>\n </DialogHeader>\n <div className=\"flex-1 overflow-y-auto min-h-0\">\n {submissionStatus === \"success\" ? (\n <div className=\"space-y-4 pt-2\">\n <p className=\"text-foreground\">Your transaction has been successfully submitted and is being processed.</p>\n <div className=\"bg-muted/50 rounded-lg p-4 space-y-2\">\n <div className=\"flex justify-between text-sm\">\n <span className=\"text-muted-foreground\">Payment ID:</span>\n <span className=\"font-mono font-medium text-xs\">{crypto.randomUUID()}</span>\n </div>\n <div className=\"flex justify-between text-sm\">\n <span className=\"text-muted-foreground\">Account:</span>\n <span className=\"font-medium\">{accountData ? `${accountData.accountName} (${accountData.accountNumber})` : \"N/A\"}</span>\n </div>\n {transactionType === \"transfer\" && (\n <div className=\"flex justify-between text-sm\">\n <span className=\"text-muted-foreground\">Receiver Account:</span>\n <span className=\"font-medium\">{receiverAccountData ? `${receiverAccountData.accountName} (${receiverAccountData.accountNumber})` : \"N/A\"}</span>\n </div>\n )}\n {transactionType === \"adjustment\" && (\n <>\n <div className=\"flex justify-between text-sm\">\n <span className=\"text-muted-foreground\">Direction:</span>\n <span className=\"font-medium\">{adjustmentDirection === \"debit\" ? \"Debit\" : \"Credit\"}</span>\n </div>\n <div className=\"flex justify-between text-sm\">\n <span className=\"text-muted-foreground\">Adjustment Type:</span>\n <span className=\"font-medium\">{adjustmentTypeOptions.find(t => t.value === adjustmentType)?.label || \"N/A\"}</span>\n </div>\n </>\n )}\n {(transactionType === \"wire\" || transactionType === \"ach\") && (\n <div className=\"flex justify-between text-sm\">\n <span className=\"text-muted-foreground\">Customer Name:</span>\n <span className=\"font-medium\">{counterpartyName || \"N/A\"}</span>\n </div>\n )}\n <div className=\"flex justify-between text-sm\">\n <span className=\"text-muted-foreground\">Amount:</span>\n <span className=\"font-medium\">{formatCurrency(amount)}</span>\n </div>\n <div className=\"flex justify-between text-sm\">\n <span className=\"text-muted-foreground\">Description:</span>\n <span className=\"font-medium\">{description || \"N/A\"}</span>\n </div>\n </div>\n {showSuccessInfoBox && successInfoMessage && (\n <div className=\"flex items-start gap-2 p-3 bg-blue-500/10 border border-blue-500/20 rounded-lg\">\n <AlertCircle className=\"h-5 w-5 text-blue-500 mt-0.5 flex-shrink-0\" />\n <p className=\"text-sm text-blue-700 dark:text-blue-300\">\n {successInfoMessage}\n </p>\n </div>\n )}\n </div>\n ) : (\n <div className=\"space-y-4 pt-2\">\n <div className=\"flex items-start gap-2 p-4 bg-destructive/10 border border-destructive/20 rounded-lg\">\n <XCircle className=\"h-5 w-5 text-destructive mt-0.5 flex-shrink-0\" />\n <div className=\"space-y-1 min-w-0 flex-1\">\n <p className=\"text-sm font-medium text-destructive\">Error Processing Transaction</p>\n <p className=\"text-sm text-muted-foreground break-words whitespace-pre-wrap\">{errorMessage}</p>\n </div>\n </div>\n <p className=\"text-sm text-muted-foreground\">\n Please review the error message above and try again. If the problem persists, contact support.\n </p>\n </div>\n )}\n </div>\n <DialogFooter className=\"sm:justify-end gap-2 flex-shrink-0\">\n {submissionStatus === \"error\" && (\n <Button type=\"button\" onClick={() => onConfirmationOpenChange(false)}>\n Edit\n </Button>\n )}\n {submissionStatus === \"success\" && (\n <>\n <Button type=\"button\" variant=\"outline\" onClick={onNewTransaction}>\n New Transaction\n </Button>\n <Button type=\"button\" onClick={onConfirmationClose}>\n View Transaction\n </Button>\n </>\n )}\n </DialogFooter>\n </DialogContent>\n </Dialog>\n </div>\n )\n}\n","import * as React from \"react\"\nimport { Check, ChevronDown, Search, X } from \"lucide-react\"\nimport { Button } from \"@/components/ui/button\"\nimport { Badge } from \"@/components/ui/badge\"\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/components/ui/popover\"\nimport { cn } from \"@/lib/utils\"\n\ninterface Option {\n value: string\n label: string\n}\n\ninterface EnhancedMultiSelectProps {\n label?: string\n value?: string[]\n onValueChange: (value: string[]) => void\n options: Option[]\n placeholder?: string\n className?: string\n disabled?: boolean\n}\n\nexport const EnhancedMultiSelect = ({\n label,\n value = [],\n onValueChange,\n options,\n placeholder = \"Select options\",\n className,\n disabled = false,\n}: EnhancedMultiSelectProps) => {\n const [open, setOpen] = React.useState(false)\n const [searchQuery, setSearchQuery] = React.useState(\"\")\n const [popoverContainer, setPopoverContainer] = React.useState<HTMLElement | null>(null)\n const triggerRef = React.useRef<HTMLButtonElement>(null)\n\n React.useEffect(() => {\n if (triggerRef.current) {\n const sheetContent = triggerRef.current.closest('[data-radix-dialog-content]')\n setPopoverContainer(sheetContent as HTMLElement | null)\n }\n }, [])\n\n const handleSelect = (optionValue: string) => {\n if (value.includes(optionValue)) {\n onValueChange(value.filter((v) => v !== optionValue))\n } else {\n onValueChange([...value, optionValue])\n }\n }\n\n const handleRemove = (optionValue: string, e: React.MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n onValueChange(value.filter((v) => v !== optionValue))\n }\n\n const selectedLabels = value\n .map((v) => options.find((opt) => opt.value === v)?.label)\n .filter(Boolean)\n\n const filteredOptions = React.useMemo(() => {\n if (!searchQuery.trim()) return options\n const query = searchQuery.toLowerCase()\n return options.filter((option) =>\n option.label.toLowerCase().includes(query)\n )\n }, [options, searchQuery])\n\n return (\n <div className={cn(\"space-y-2\", className)}>\n {label && (\n <label className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\">\n {label}\n </label>\n )}\n <Popover open={open} onOpenChange={(isOpen) => {\n setOpen(isOpen)\n if (!isOpen) setSearchQuery(\"\")\n }} modal={false}>\n <PopoverTrigger asChild>\n <Button\n ref={triggerRef}\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n disabled={disabled}\n className=\"w-full justify-between font-normal h-auto min-h-10\"\n >\n <div className=\"flex flex-wrap gap-1 flex-1 text-left\">\n {selectedLabels.length > 0 ? (\n selectedLabels.map((label, index) => (\n <Badge\n key={value[index]}\n variant=\"secondary\"\n className=\"text-xs\"\n >\n {label}\n <span\n role=\"button\"\n className=\"ml-1 rounded-sm hover:bg-secondary-foreground/20 inline-flex items-center justify-center\"\n onMouseDown={(e) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n onClick={(e) => handleRemove(value[index], e)}\n >\n <X className=\"h-3 w-3 cursor-pointer\" />\n </span>\n </Badge>\n ))\n ) : (\n <span className=\"text-muted-foreground\">{placeholder}</span>\n )}\n </div>\n <ChevronDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent \n container={popoverContainer}\n className=\"w-[var(--radix-popover-trigger-width)] min-w-[200px] p-0 bg-popover z-[100] pointer-events-auto\" \n align=\"start\"\n onOpenAutoFocus={(e) => e.preventDefault()}\n onInteractOutside={(e) => {\n const target = e.target as HTMLElement\n if (target.closest('[role=\"option\"]')) {\n e.preventDefault()\n }\n }}\n >\n <div className=\"p-2 border-b\">\n <div className=\"relative\">\n <Search className=\"absolute left-2 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground\" />\n <input\n type=\"text\"\n placeholder=\"Search...\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n className=\"w-full pl-8 pr-2 py-1.5 text-sm border rounded-md bg-background focus:outline-none focus:ring-1 focus:ring-ring\"\n onKeyDown={(e) => e.stopPropagation()}\n />\n </div>\n </div>\n <div \n className=\"max-h-[240px] overflow-y-auto overscroll-contain p-1\"\n onWheel={(e) => e.stopPropagation()}\n onTouchMove={(e) => e.stopPropagation()}\n >\n {filteredOptions.map((option) => {\n const isSelected = value.includes(option.value)\n return (\n <div\n key={option.value}\n role=\"option\"\n aria-selected={isSelected}\n className={cn(\n \"flex items-center gap-2 rounded-sm px-2 py-1.5 text-sm cursor-pointer hover:bg-accent hover:text-accent-foreground select-none\",\n isSelected && \"bg-accent\"\n )}\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => handleSelect(option.value)}\n >\n <div\n className={cn(\n \"flex h-4 w-4 items-center justify-center rounded-sm border border-primary\",\n isSelected\n ? \"bg-primary text-primary-foreground\"\n : \"opacity-50\"\n )}\n >\n {isSelected && <Check className=\"h-3 w-3\" />}\n </div>\n <span>{option.label}</span>\n </div>\n )\n })}\n {filteredOptions.length === 0 && (\n <div className=\"px-2 py-4 text-sm text-center text-muted-foreground\">\n No options found\n </div>\n )}\n </div>\n </PopoverContent>\n </Popover>\n </div>\n )\n}\n","import { useState, useEffect } from \"react\"\nimport { Button } from \"@/components/ui/button\"\nimport { Filter } from \"lucide-react\"\nimport { Sheet, SheetContent, SheetHeader, SheetTitle, SheetTrigger, SheetFooter } from \"@/components/ui/sheet\"\nimport { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { EnhancedMultiSelect } from \"@/components/ui/enhanced-multi-select\"\nimport { DatePicker } from \"@/components/ui/date-picker\"\nimport { CurrencyInput } from \"@/components/ui/currency-input\"\n\nexport interface TransactionHistoryFilters {\n originalFileName?: string\n requesterIpAddress?: string\n requesterUsername?: string\n showAchNoc?: boolean\n excludeWire?: boolean\n excludeAch?: boolean\n wireFileHandle?: string\n direction?: string\n counterpartyId?: string\n customerId?: string\n settlementFileName?: string\n isInbound?: boolean\n accountNumber?: string\n processingStatus?: string[]\n beginDate?: string\n endDate?: string\n postDateStart?: string\n postDateEnd?: string\n maxAmount?: string\n minAmount?: string\n productId?: string\n paymentId?: string\n transactionStatus?: string[]\n transactionType?: string[]\n}\n\ntype FilterValue = string | string[] | boolean | undefined\n\nexport interface SelectOption {\n value: string\n label: string\n}\n\nexport interface FilterOptions {\n transactionTypes?: SelectOption[]\n transactionStatuses?: SelectOption[]\n processingStatuses?: SelectOption[]\n directions?: SelectOption[]\n products?: SelectOption[]\n}\n\ninterface TransactionHistoryFiltersSheetProps {\n filters: TransactionHistoryFilters\n filterOptions?: FilterOptions\n onFilterChange: (field: keyof TransactionHistoryFilters, value: FilterValue) => void\n onResetFilters: () => void\n onApplyFilters: () => void\n}\n\nconst defaultFilters: TransactionHistoryFilters = {\n originalFileName: \"\",\n requesterIpAddress: \"\",\n requesterUsername: \"\",\n showAchNoc: false,\n excludeWire: false,\n excludeAch: false,\n wireFileHandle: \"\",\n direction: \"\",\n counterpartyId: \"\",\n customerId: \"\",\n settlementFileName: \"\",\n isInbound: false,\n accountNumber: \"\",\n processingStatus: [],\n beginDate: undefined,\n endDate: undefined,\n postDateStart: undefined,\n postDateEnd: undefined,\n maxAmount: \"\",\n minAmount: \"\",\n productId: \"\",\n paymentId: \"\",\n transactionStatus: [],\n transactionType: [],\n}\n\nexport const TransactionHistoryFiltersSheet = ({\n filters,\n filterOptions = {},\n onFilterChange,\n onResetFilters,\n onApplyFilters\n}: TransactionHistoryFiltersSheetProps) => {\n const {\n transactionTypes = [],\n transactionStatuses = [],\n processingStatuses = [],\n products = [],\n } = filterOptions\n const [localFilters, setLocalFilters] = useState<TransactionHistoryFilters>(filters)\n const [open, setOpen] = useState(false)\n\n useEffect(() => {\n setLocalFilters(filters)\n }, [filters])\n\n const handleLocalFilterChange = (field: keyof TransactionHistoryFilters, value: FilterValue) => {\n setLocalFilters(prev => ({ ...prev, [field]: value }))\n }\n\n const handleDateChange = (field: keyof TransactionHistoryFilters, date: Date | undefined) => {\n const isoString = date ? date.toISOString() : undefined\n handleLocalFilterChange(field, isoString)\n }\n\n const handleApplyFilters = () => {\n Object.entries(localFilters).forEach(([key, value]) => {\n onFilterChange(key as keyof TransactionHistoryFilters, value)\n })\n onApplyFilters()\n setOpen(false)\n }\n\n const handleResetFilters = () => {\n setLocalFilters(defaultFilters)\n onResetFilters()\n setOpen(false)\n }\n\n const parseDate = (dateStr: string | undefined): Date | undefined => {\n if (!dateStr) return undefined\n const date = new Date(dateStr)\n return isNaN(date.getTime()) ? undefined : date\n }\n\n return (\n <Sheet open={open} onOpenChange={setOpen}>\n <SheetTrigger asChild>\n <Button variant=\"outline\" className=\"gap-2\">\n <Filter className=\"h-4 w-4\" />\n Filters\n </Button>\n </SheetTrigger>\n <SheetContent side=\"right\" className=\"w-full sm:max-w-xl overflow-y-auto\">\n <SheetHeader>\n <SheetTitle>Transaction Filters</SheetTitle>\n </SheetHeader>\n \n <div className=\"space-y-6 py-6\">\n {/* Row 1: Payment ID, Account Number */}\n <div className=\"grid grid-cols-2 gap-4\">\n <EnhancedInput\n label=\"Payment ID\"\n value={localFilters.paymentId || \"\"}\n onChange={(e) => handleLocalFilterChange(\"paymentId\", e.target.value)}\n placeholder=\"Enter payment ID\"\n />\n <EnhancedInput\n label=\"Account Number\"\n value={localFilters.accountNumber || \"\"}\n onChange={(e) => handleLocalFilterChange(\"accountNumber\", e.target.value)}\n placeholder=\"Enter account number\"\n />\n </div>\n\n {/* Row 2: Transaction Type, Product */}\n <div className=\"grid grid-cols-2 gap-4\">\n <EnhancedMultiSelect\n label=\"Transaction Type\"\n value={localFilters.transactionType || []}\n onValueChange={(value) => handleLocalFilterChange(\"transactionType\", value)}\n placeholder=\"Select types\"\n options={transactionTypes}\n />\n <EnhancedSelect\n label=\"Product\"\n value={localFilters.productId || \"\"}\n onValueChange={(value) => handleLocalFilterChange(\"productId\", value)}\n placeholder=\"Select product\"\n options={products}\n />\n </div>\n\n {/* Row 3: Transaction Status, Processing Status */}\n <div className=\"grid grid-cols-2 gap-4\">\n <EnhancedMultiSelect\n label=\"Transaction Status\"\n value={localFilters.transactionStatus || []}\n onValueChange={(value) => handleLocalFilterChange(\"transactionStatus\", value)}\n placeholder=\"Select statuses\"\n options={transactionStatuses}\n />\n <EnhancedMultiSelect\n label=\"Processing Status\"\n value={localFilters.processingStatus || []}\n onValueChange={(value) => handleLocalFilterChange(\"processingStatus\", value)}\n placeholder=\"Select statuses\"\n options={processingStatuses}\n />\n </div>\n\n {/* Row 4: Min/Max Amount */}\n <div className=\"grid grid-cols-2 gap-4\">\n <CurrencyInput\n label=\"Min Amount\"\n value={localFilters.minAmount || \"\"}\n onChange={(value) => handleLocalFilterChange(\"minAmount\", value)}\n />\n <CurrencyInput\n label=\"Max Amount\"\n value={localFilters.maxAmount || \"\"}\n onChange={(value) => handleLocalFilterChange(\"maxAmount\", value)}\n />\n </div>\n\n {/* Row 5: Update Date Start/End */}\n <div className=\"grid grid-cols-2 gap-4\">\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Update Date Start</label>\n <DatePicker\n date={parseDate(localFilters.beginDate)}\n onDateChange={(date) => handleDateChange(\"beginDate\", date)}\n placeholder=\"MM/DD/YYYY\"\n buttonClassName=\"w-full\"\n className=\"bg-background z-50\"\n />\n </div>\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Update Date End</label>\n <DatePicker\n date={parseDate(localFilters.endDate)}\n onDateChange={(date) => handleDateChange(\"endDate\", date)}\n placeholder=\"MM/DD/YYYY\"\n buttonClassName=\"w-full\"\n className=\"bg-background z-50\"\n />\n </div>\n </div>\n\n {/* Row 6: Post Date Start/End */}\n <div className=\"grid grid-cols-2 gap-4\">\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Post Date Start</label>\n <DatePicker\n date={parseDate(localFilters.postDateStart)}\n onDateChange={(date) => handleDateChange(\"postDateStart\", date)}\n placeholder=\"MM/DD/YYYY\"\n buttonClassName=\"w-full\"\n className=\"bg-background z-50\"\n />\n </div>\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Post Date End</label>\n <DatePicker\n date={parseDate(localFilters.postDateEnd)}\n onDateChange={(date) => handleDateChange(\"postDateEnd\", date)}\n placeholder=\"MM/DD/YYYY\"\n buttonClassName=\"w-full\"\n className=\"bg-background z-50\"\n />\n </div>\n </div>\n\n {/* Row 7: Customer ID, Counterparty ID */}\n <div className=\"grid grid-cols-2 gap-4\">\n <EnhancedInput\n label=\"Customer ID\"\n value={localFilters.customerId || \"\"}\n onChange={(e) => handleLocalFilterChange(\"customerId\", e.target.value)}\n placeholder=\"Enter customer ID\"\n />\n <EnhancedInput\n label=\"Counterparty ID\"\n value={localFilters.counterpartyId || \"\"}\n onChange={(e) => handleLocalFilterChange(\"counterpartyId\", e.target.value)}\n placeholder=\"Enter counterparty ID\"\n />\n </div>\n\n {/* Row 8: Settlement File Name, Original File Name */}\n <div className=\"grid grid-cols-2 gap-4\">\n <EnhancedInput\n label=\"Settlement File Name\"\n value={localFilters.settlementFileName || \"\"}\n onChange={(e) => handleLocalFilterChange(\"settlementFileName\", e.target.value)}\n placeholder=\"Enter file name\"\n />\n <EnhancedInput\n label=\"Processing File Name\"\n value={localFilters.originalFileName || \"\"}\n onChange={(e) => handleLocalFilterChange(\"originalFileName\", e.target.value)}\n placeholder=\"Enter file name\"\n />\n </div>\n </div>\n\n <SheetFooter className=\"flex gap-2\">\n <Button variant=\"outline\" onClick={handleResetFilters} className=\"flex-1\">\n Reset Filters\n </Button>\n <Button onClick={handleApplyFilters} className=\"flex-1\">\n Apply Filters\n </Button>\n </SheetFooter>\n </SheetContent>\n </Sheet>\n )\n}\n","import { Loader2, AlertCircle, RefreshCw } from \"lucide-react\"\nimport { Button } from \"@/components/ui/button\"\nimport { TransactionHistoryFiltersSheet, TransactionHistoryFilters, FilterOptions } from \"./TransactionHistoryFiltersSheet\"\n\ntype FilterValue = string | string[] | boolean | undefined\n\ninterface TransactionHistoryViewProps {\n table: React.ReactNode\n filters: TransactionHistoryFilters\n filterOptions?: FilterOptions\n onFilterChange: (field: keyof TransactionHistoryFilters, value: FilterValue) => void\n onResetFilters: () => void\n onApplyFilters: () => void\n isLoading?: boolean\n error?: string | null\n onRetry?: () => void\n}\n\nexport const TransactionHistoryView = ({\n table,\n filters,\n filterOptions,\n onFilterChange,\n onResetFilters,\n onApplyFilters,\n isLoading,\n error,\n onRetry\n}: TransactionHistoryViewProps) => {\n const renderContent = () => {\n if (isLoading) {\n return (\n <div className=\"flex-1 flex items-center justify-center\">\n <div className=\"flex flex-col items-center gap-3\">\n <Loader2 className=\"h-8 w-8 animate-spin text-muted-foreground\" />\n <p className=\"text-sm text-muted-foreground\">Loading transactions...</p>\n </div>\n </div>\n )\n }\n\n if (error) {\n return (\n <div className=\"flex-1 flex items-center justify-center\">\n <div className=\"flex flex-col items-center gap-4 max-w-md text-center\">\n <div className=\"flex items-center gap-3 p-4 bg-destructive/10 border border-destructive/20 rounded-lg\">\n <AlertCircle className=\"h-5 w-5 text-destructive flex-shrink-0\" />\n <div className=\"space-y-1 text-left\">\n <p className=\"text-sm font-medium text-destructive\">Failed to load transactions</p>\n <p className=\"text-sm text-muted-foreground\">{error}</p>\n </div>\n </div>\n {onRetry && (\n <Button variant=\"outline\" onClick={onRetry}>\n <RefreshCw className=\"h-4 w-4 mr-2\" />\n Retry\n </Button>\n )}\n </div>\n </div>\n )\n }\n\n return (\n <div className=\"flex-1 mt-4 pb-6 overflow-auto\">\n {table}\n </div>\n )\n }\n\n return (\n <div className=\"flex flex-col h-screen bg-gradient-subtle\">\n {/* Fixed Header */}\n <div className=\"flex-none border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60\">\n <div className=\"container mx-auto px-4 py-4 max-w-none\">\n <div className=\"flex items-center justify-between\">\n <h1 className=\"text-3xl font-bold text-foreground\">Transaction History</h1>\n <TransactionHistoryFiltersSheet\n filters={filters}\n filterOptions={filterOptions}\n onFilterChange={onFilterChange}\n onResetFilters={onResetFilters}\n onApplyFilters={onApplyFilters}\n />\n </div>\n </div>\n </div>\n\n {/* Scrollable Content */}\n <div className=\"flex-1 overflow-hidden\">\n <div className=\"container mx-auto px-4 h-full max-w-none flex flex-col\">\n {renderContent()}\n </div>\n </div>\n </div>\n )\n}\n","import { Badge } from \"@/components/ui/badge\"\nimport { ArrowDownRight, ArrowUpRight } from \"lucide-react\"\n\ninterface TransactionTypeBadgeProps {\n transactionType: string\n isInbound: boolean\n className?: string\n}\n\nexport const TransactionTypeBadge = ({ \n transactionType, \n isInbound,\n className \n}: TransactionTypeBadgeProps) => {\n const Icon = isInbound ? ArrowDownRight : ArrowUpRight\n const variant = \"outline\"\n \n return (\n <Badge variant={variant} className={className}>\n {isInbound && <Icon className=\"w-3 h-3 mr-1\" />}\n {transactionType}\n {!isInbound && <Icon className=\"w-3 h-3 ml-1\" />}\n </Badge>\n )\n}\n","/**\n * Utility functions for transaction-related components\n */\n\nexport const getStatusVariant = (status: string): string => {\n switch (status) {\n case \"POSTED\":\n return \"success\"\n case \"PENDING\":\n return \"warning\"\n case \"FAILED\":\n return \"destructive\"\n case \"CANCELLED\":\n return \"outline\"\n default:\n return \"outline\"\n }\n}\n\nexport const getProcessingStatusVariant = (status: string): string => {\n switch (status) {\n case \"CONFIRMED\":\n case \"SENT\":\n return \"success\"\n case \"SUBMITTED\":\n case \"CUSTOMER_REVIEW\":\n case \"MANUAL_REVIEW\":\n return \"warning\"\n case \"INITIATED\":\n default:\n return \"outline\"\n }\n}\n\nexport const formatCurrency = (value: number): string => {\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n minimumFractionDigits: 2\n }).format(value)\n}\n","import { useState } from \"react\"\nimport { PageLayout } from \"@/components/ui/page-layout\"\nimport { FormCard } from \"@/components/ui/form-card\"\nimport { Button } from \"@/components/ui/button\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { AlertTimeline } from \"@/components/alerts/AlertTimeline\"\nimport { cn } from \"@/lib/utils\"\nimport { WireDetailsSection } from \"@/components/transaction/WireDetailsSection\"\nimport { ACHDetailsSection } from \"@/components/transaction/ACHDetailsSection\"\nimport { TransactionTypeBadge } from \"@/components/ui/transaction-type-badge\"\nimport { TimelineEvent } from \"@/lib/mock-data/alert-data\"\nimport { Loader2, AlertCircle, RefreshCw, Copy, Check } from \"lucide-react\"\nimport { \n getStatusVariant, \n getProcessingStatusVariant, \n formatCurrency \n} from \"@/lib/utils/transaction-utils\"\n\ninterface TransactionData {\n id: string\n amount: number\n transactionType: string\n isInbound: boolean\n status: string\n processingStatus: string\n accountNumber: string\n customer: string\n description: string\n counterparty: string\n created: string\n ofacId?: string\n productId?: string\n achDetails?: any\n wireDetails?: any\n originalFilename?: string\n loadedFromFile?: string\n linkedPaymentId?: string\n pendingUntilDate?: string\n furtherCreditTo?: string\n balanceAvailableDate?: string\n requesterUsername?: string\n requesterIpAddress?: string\n settlementFilename?: string\n alerts?: string[]\n}\n\nexport interface TransactionDetailViewProps {\n transaction?: TransactionData | null\n timelineEvents: TimelineEvent[]\n isWireTransfer: boolean\n isACHTransfer: boolean\n showCancelButton: boolean\n showReturnButton: boolean\n onReturnClick: () => void\n onCancelClick: () => void\n onAccountClick: (accountNumber: string) => void\n onCustomerClick: (customer: string) => void\n onCounterpartyClick: (counterparty: string) => void\n onOFACClick: (ofacId: string) => void\n onProductClick: (productId: string) => void\n onAlertClick?: (alertId: string) => void\n onLinkedPaymentClick?: (paymentId: string) => void\n onIMADChange?: (newImad: string) => void\n isLoading?: boolean\n error?: string | null\n onRetry?: () => void\n}\n\nexport const TransactionDetailView = ({\n transaction,\n timelineEvents,\n isWireTransfer,\n isACHTransfer,\n showCancelButton,\n showReturnButton,\n onReturnClick,\n onCancelClick,\n onAccountClick,\n onCustomerClick,\n onCounterpartyClick,\n onOFACClick,\n onProductClick,\n onAlertClick,\n onLinkedPaymentClick,\n onIMADChange,\n isLoading,\n error,\n onRetry,\n}: TransactionDetailViewProps) => {\n if (isLoading) {\n return (\n <div className=\"flex-1 flex items-center justify-center min-h-[400px]\">\n <div className=\"flex flex-col items-center gap-3\">\n <Loader2 className=\"h-8 w-8 animate-spin text-muted-foreground\" />\n <p className=\"text-sm text-muted-foreground\">Loading transaction...</p>\n </div>\n </div>\n )\n }\n\n if (error) {\n return (\n <div className=\"flex-1 flex items-center justify-center min-h-[400px]\">\n <div className=\"flex flex-col items-center gap-4 max-w-md text-center\">\n <div className=\"flex items-center gap-3 p-4 bg-destructive/10 border border-destructive/20 rounded-lg\">\n <AlertCircle className=\"h-5 w-5 text-destructive flex-shrink-0\" />\n <div className=\"space-y-1 text-left\">\n <p className=\"text-sm font-medium text-destructive\">Failed to load transaction</p>\n <p className=\"text-sm text-muted-foreground\">{error}</p>\n </div>\n </div>\n {onRetry && (\n <Button variant=\"outline\" onClick={onRetry}>\n <RefreshCw className=\"h-4 w-4 mr-2\" />\n Retry\n </Button>\n )}\n </div>\n </div>\n )\n }\n\n const [copiedField, setCopiedField] = useState<string | null>(null)\n\n const handleCopy = (value: string, fieldName: string) => {\n navigator.clipboard.writeText(value)\n setCopiedField(fieldName)\n setTimeout(() => setCopiedField(null), 2000)\n }\n\n if (!transaction) {\n return null\n }\n\n return (\n <PageLayout \n title={\n <div className=\"flex items-center gap-3\">\n <span className={cn(\n \"font-semibold\",\n transaction.amount < 0 ? \"text-destructive\" : \"text-success\"\n )}>\n {formatCurrency(transaction.amount)}\n </span>\n <TransactionTypeBadge \n transactionType={transaction.transactionType} \n isInbound={transaction.isInbound} \n />\n <Badge variant={getStatusVariant(transaction.status) as any}>{transaction.status}</Badge>\n <Badge variant={getProcessingStatusVariant(transaction.processingStatus) as any}>{transaction.processingStatus}</Badge>\n </div>\n }\n maxWidth=\"full\"\n actions={[\n ...(showReturnButton ? [{\n label: \"Return\",\n variant: \"outline\" as const,\n onClick: onReturnClick\n }] : []),\n ...(showCancelButton ? [{\n label: \"Cancel\",\n variant: \"default\" as const,\n onClick: onCancelClick\n }] : [])\n ]}\n >\n <div className=\"flex flex-col lg:flex-row items-start gap-6\">\n <div className=\"flex-1 space-y-6\">\n <FormCard title=\"Details\">\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-x-8 gap-y-4\">\n <InfoField \n label=\"Account Number\" \n value={\n <div className=\"flex items-start gap-2\">\n <Button \n variant=\"link\" \n className=\"h-auto p-0 text-sm whitespace-normal break-all text-left\"\n onClick={() => onAccountClick(transaction.accountNumber)}\n >\n {transaction.accountNumber}\n </Button>\n <button\n type=\"button\"\n onClick={() => handleCopy(transaction.accountNumber, 'accountNumber')}\n className=\"text-muted-foreground hover:text-foreground transition-colors flex-shrink-0\"\n >\n {copiedField === 'accountNumber' ? (\n <Check className=\"h-3.5 w-3.5 text-success\" />\n ) : (\n <Copy className=\"h-3.5 w-3.5\" />\n )}\n </button>\n </div>\n }\n layout=\"horizontal\"\n />\n <InfoField \n label=\"Customer\" \n value={\n <Button \n variant=\"link\" \n className=\"h-auto p-0 text-sm\"\n onClick={() => onCustomerClick(transaction.customer)}\n >\n {transaction.customer}\n </Button>\n }\n layout=\"horizontal\"\n />\n <InfoField label=\"Description\" value={transaction.description} layout=\"horizontal\" />\n <InfoField \n label=\"Counterparty\" \n value={\n <Button \n variant=\"link\" \n className=\"h-auto p-0 text-sm\"\n onClick={() => onCounterpartyClick(transaction.counterparty)}\n >\n {transaction.counterparty}\n </Button>\n }\n layout=\"horizontal\"\n />\n {/* Row 3 */}\n <InfoField label=\"Post Date\" value={transaction.created.split(' ')[0]} layout=\"horizontal\" />\n <InfoField \n label=\"Product ID\" \n value={\n transaction.productId ? (\n <Button \n variant=\"link\" \n className=\"h-auto p-0 text-sm\"\n onClick={() => onProductClick(transaction.productId!)}\n >\n {transaction.productId}\n </Button>\n ) : \"-\"\n }\n layout=\"horizontal\"\n />\n {/* Row 4 */}\n <InfoField \n label=\"OFAC ID\" \n value={\n transaction.ofacId ? (\n <Button \n variant=\"link\" \n className=\"h-auto p-0 text-sm\"\n onClick={() => onOFACClick(transaction.ofacId!)}\n >\n {transaction.ofacId}\n </Button>\n ) : \"-\"\n } \n layout=\"horizontal\" \n />\n <InfoField \n label=\"Alerts\" \n value={\n transaction.alerts && transaction.alerts.length > 0 ? (\n <div className=\"flex flex-wrap gap-1\">\n {transaction.alerts.map((alertId, index) => (\n <span key={alertId} className=\"inline-flex items-center\">\n <Button\n variant=\"link\"\n className=\"h-auto p-0 text-sm\"\n onClick={() => onAlertClick?.(alertId)}\n >\n {alertId}\n </Button>\n {index < transaction.alerts!.length - 1 && <span className=\"mr-1\">,</span>}\n </span>\n ))}\n </div>\n ) : \"-\"\n }\n layout=\"horizontal\"\n />\n {/* Row 5 */}\n <InfoField \n label=\"Payment ID\" \n value={\n <div className=\"flex items-start gap-2\">\n <span className=\"break-all\">{transaction.id}</span>\n <button\n type=\"button\"\n onClick={() => handleCopy(transaction.id, 'paymentId')}\n className=\"text-muted-foreground hover:text-foreground transition-colors flex-shrink-0\"\n >\n {copiedField === 'paymentId' ? (\n <Check className=\"h-3.5 w-3.5 text-success\" />\n ) : (\n <Copy className=\"h-3.5 w-3.5\" />\n )}\n </button>\n </div>\n }\n layout=\"horizontal\"\n />\n <InfoField label=\"Requester Username\" value={transaction.requesterUsername || \"-\"} layout=\"horizontal\" />\n {/* Row 6 */}\n <InfoField \n label=\"Linked Payment ID\" \n value={\n transaction.linkedPaymentId ? (\n <Button\n variant=\"link\"\n className=\"h-auto p-0 text-sm whitespace-normal break-all text-left\"\n onClick={() => onLinkedPaymentClick?.(transaction.linkedPaymentId!)}\n >\n {transaction.linkedPaymentId}\n </Button>\n ) : \"-\"\n }\n layout=\"horizontal\" \n />\n <InfoField label=\"Requester IP Address\" value={transaction.requesterIpAddress || \"-\"} layout=\"horizontal\" />\n {/* Row 7 */}\n <InfoField label=\"Pending until Date\" value={transaction.pendingUntilDate || \"-\"} layout=\"horizontal\" />\n <InfoField label=\"Further Credit To\" value={transaction.furtherCreditTo || \"-\"} layout=\"horizontal\" />\n {/* Row 8 */}\n <InfoField label=\"Balance Available Date\" value={transaction.balanceAvailableDate || \"-\"} layout=\"horizontal\" />\n <InfoField label=\"Settlement Filename\" value={transaction.settlementFilename || \"-\"} layout=\"horizontal\" />\n {/* Row 9 */}\n <InfoField label=\"Original Filename\" value={transaction.originalFilename || \"-\"} layout=\"horizontal\" />\n <InfoField label=\"Loaded From File\" value={transaction.loadedFromFile || \"-\"} layout=\"horizontal\" />\n </div>\n </FormCard>\n\n {isACHTransfer && transaction.achDetails && (\n <ACHDetailsSection data={transaction.achDetails} />\n )}\n \n {isWireTransfer && transaction.wireDetails && (\n <WireDetailsSection data={transaction.wireDetails} onIMADChange={onIMADChange} />\n )}\n </div>\n\n <div className=\"lg:w-64\">\n <FormCard title=\"Transaction Timeline\">\n <AlertTimeline events={timelineEvents} />\n </FormCard>\n </div>\n </div>\n </PageLayout>\n )\n}\n","import { z } from \"zod\"\n\nexport const cancelTransactionSchema = z.object({\n reason: z.string()\n .min(1, \"Reason is required\")\n .max(500, \"Reason must be less than 500 characters\"),\n})\n\nexport type CancelTransactionFormData = z.infer<typeof cancelTransactionSchema>\n\nexport const returnTransactionSchema = z.object({\n reasonCode: z.string().min(1, \"Reason code is required\"),\n})\n\nexport type ReturnTransactionFormData = z.infer<typeof returnTransactionSchema>\n\nexport interface ReturnReasonCode {\n value: string\n label: string\n}\n","import {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from \"@/components/ui/dialog\"\nimport { Button } from \"@/components/ui/button\"\nimport { EnhancedTextarea } from \"@/components/ui/enhanced-textarea\"\nimport { useFormWithEditState } from \"@/hooks/useFormWithEditState\"\nimport { cancelTransactionSchema, CancelTransactionFormData } from \"@/lib/schemas/transaction-schemas\"\nimport { useToast } from \"@/hooks/use-toast\"\n\ninterface CancelTransactionDialogProps {\n transactionId: string\n open: boolean\n onOpenChange: (open: boolean) => void\n onCancel: (data: CancelTransactionFormData) => Promise<void>\n}\n\nexport const CancelTransactionDialog = ({\n transactionId,\n open,\n onOpenChange,\n onCancel,\n}: CancelTransactionDialogProps) => {\n const { toast } = useToast()\n\n const {\n register,\n handleSubmit,\n formState: { errors, isSubmitting },\n reset,\n } = useFormWithEditState<CancelTransactionFormData>({\n schema: cancelTransactionSchema,\n defaultValues: {\n reason: \"\",\n },\n })\n\n const onSubmit = async (data: CancelTransactionFormData) => {\n try {\n await onCancel(data)\n toast({\n title: \"Transaction Cancelled\",\n description: `Transaction ${transactionId} has been cancelled successfully.`,\n })\n reset()\n onOpenChange(false)\n } catch (error) {\n toast({\n title: \"Error\",\n description: \"Failed to cancel the transaction. Please try again.\",\n variant: \"destructive\",\n })\n }\n }\n\n const handleClose = () => {\n reset()\n onOpenChange(false)\n }\n\n return (\n <Dialog open={open} onOpenChange={handleClose}>\n <DialogContent className=\"sm:max-w-md\">\n <DialogHeader>\n <DialogTitle>Cancel Transaction</DialogTitle>\n <DialogDescription>\n Please provide a reason for cancelling transaction {transactionId}.\n </DialogDescription>\n </DialogHeader>\n\n <form onSubmit={handleSubmit(onSubmit)} className=\"space-y-4\">\n <EnhancedTextarea\n label=\"Cancellation Reason\"\n placeholder=\"Enter the reason for cancellation...\"\n error={errors.reason?.message}\n {...register(\"reason\")}\n />\n\n <DialogFooter className=\"gap-2 sm:gap-0\">\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={handleClose}\n disabled={isSubmitting}\n >\n Close\n </Button>\n <Button\n type=\"submit\"\n variant=\"destructive\"\n disabled={isSubmitting}\n >\n {isSubmitting ? \"Cancelling...\" : \"Cancel Transaction\"}\n </Button>\n </DialogFooter>\n </form>\n </DialogContent>\n </Dialog>\n )\n}\n","import {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from \"@/components/ui/dialog\"\nimport { Button } from \"@/components/ui/button\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { useFormWithEditState } from \"@/hooks/useFormWithEditState\"\nimport { returnTransactionSchema, ReturnTransactionFormData, ReturnReasonCode } from \"@/lib/schemas/transaction-schemas\"\nimport { toast } from \"@/hooks/use-toast\"\n\ninterface ReturnTransactionDialogProps {\n transactionId: string\n open: boolean\n onOpenChange: (open: boolean) => void\n onReturn: (data: ReturnTransactionFormData) => Promise<void>\n reasonCodes: ReturnReasonCode[]\n}\n\nexport function ReturnTransactionDialog({\n transactionId,\n open,\n onOpenChange,\n onReturn,\n reasonCodes,\n}: ReturnTransactionDialogProps) {\n const {\n watch,\n setValue,\n handleSave,\n handleCancel,\n isLoading,\n formState: { errors },\n } = useFormWithEditState<ReturnTransactionFormData>({\n schema: returnTransactionSchema,\n initialEditing: true,\n onSave: async (data) => {\n try {\n await onReturn(data)\n toast({\n title: \"Transaction returned\",\n description: `Transaction #${transactionId} has been returned successfully.`,\n })\n onOpenChange(false)\n } catch (error) {\n toast({\n title: \"Error\",\n description: \"Failed to return transaction. Please try again.\",\n variant: \"destructive\",\n })\n throw error\n }\n },\n onCancel: () => {\n onOpenChange(false)\n },\n })\n\n const reasonCode = watch(\"reasonCode\")\n\n const selectOptions = reasonCodes.map(code => ({\n value: code.value,\n label: code.label,\n }))\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent className=\"sm:max-w-[425px]\">\n <DialogHeader>\n <DialogTitle>Return Transaction</DialogTitle>\n <DialogDescription>\n Select a reason code to return transaction #{transactionId}.\n </DialogDescription>\n </DialogHeader>\n\n <div className=\"py-4\">\n <EnhancedSelect\n label=\"Reason Code\"\n placeholder=\"Select a reason code\"\n options={selectOptions}\n value={reasonCode || \"\"}\n onValueChange={(value) => setValue(\"reasonCode\", value)}\n error={errors.reasonCode?.message}\n />\n </div>\n\n <DialogFooter>\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={handleCancel}\n disabled={isLoading}\n >\n Cancel\n </Button>\n <Button\n type=\"button\"\n variant=\"destructive\"\n onClick={handleSave}\n disabled={isLoading || !reasonCode}\n >\n {isLoading ? \"Returning...\" : \"Return Transaction\"}\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n )\n}\n","import * as React from \"react\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { DataGrid } from \"@/components/ui/data-grid\"\nimport { cn } from \"@/lib/utils\"\nimport { Building, CreditCard, Globe } from \"lucide-react\"\n\ninterface AccountCardProps {\n account: {\n id: string\n name: string\n number: string\n type: \"checking\" | \"savings\" | \"credit\" | \"investment\"\n status: \"active\" | \"inactive\" | \"pending\" | \"suspended\"\n balance?: string\n currency?: string\n institution?: string\n routingNumber?: string\n country?: string\n }\n showBalance?: boolean\n className?: string\n}\n\nconst typeIcons = {\n checking: CreditCard,\n savings: Building,\n credit: CreditCard,\n investment: Globe\n}\n\nconst typeLabels = {\n checking: \"Checking\",\n savings: \"Savings\", \n credit: \"Credit\",\n investment: \"Investment\"\n}\n\nexport const AccountCard = React.forwardRef<HTMLDivElement, AccountCardProps>(\n ({ account, showBalance = true, className }, ref) => {\n const TypeIcon = typeIcons[account.type]\n \n const accountData = [\n { label: \"Account Number\", value: account.number },\n { label: \"Type\", value: typeLabels[account.type] },\n ...(account.routingNumber ? [{ label: \"Routing Number\", value: account.routingNumber }] : []),\n ...(account.institution ? [{ label: \"Institution\", value: account.institution }] : []),\n ...(account.country ? [{ label: \"Country\", value: account.country }] : [])\n ]\n\n return (\n <Card ref={ref} className={cn(\"\", className)}>\n <CardHeader>\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center space-x-3\">\n <div className=\"flex items-center justify-center w-10 h-10 rounded-lg bg-primary/10\">\n <TypeIcon className=\"w-5 h-5 text-primary\" />\n </div>\n <div>\n <CardTitle className=\"text-lg\">{account.name}</CardTitle>\n <div className=\"flex items-center space-x-2 mt-1\">\n <Badge variant={account.status as any}>{account.status}</Badge>\n <span className=\"text-sm text-muted-foreground\">\n {typeLabels[account.type]}\n </span>\n </div>\n </div>\n </div>\n \n {showBalance && account.balance && (\n <div className=\"text-right\">\n <div className=\"text-2xl font-bold text-foreground\">\n {account.balance}\n </div>\n {account.currency && (\n <div className=\"text-sm text-muted-foreground\">\n {account.currency}\n </div>\n )}\n </div>\n )}\n </div>\n </CardHeader>\n \n <CardContent>\n <DataGrid data={accountData} columns={2} gap=\"sm\" />\n </CardContent>\n </Card>\n )\n }\n)\n\nAccountCard.displayName = \"AccountCard\"","import { Badge } from \"@/components/ui/badge\"\nimport { Building, Briefcase, Users, User } from \"lucide-react\"\n\ninterface BusinessTypeBadgeProps {\n type: \"corporation\" | \"llc\" | \"partnership\" | \"sole_proprietorship\"\n className?: string\n}\n\nconst typeConfig = {\n corporation: {\n variant: \"corporation\" as const,\n label: \"Corporation\",\n icon: Building\n },\n llc: {\n variant: \"llc\" as const,\n label: \"LLC\",\n icon: Briefcase\n },\n partnership: {\n variant: \"partnership\" as const,\n label: \"Partnership\",\n icon: Users\n },\n sole_proprietorship: {\n variant: \"sole_proprietorship\" as const,\n label: \"Sole Proprietorship\",\n icon: User\n }\n}\n\nexport const BusinessTypeBadge = ({ type, className }: BusinessTypeBadgeProps) => {\n const config = typeConfig[type]\n const Icon = config.icon\n\n return (\n <Badge variant={config.variant} className={className}>\n <Icon className=\"w-3 h-3 mr-1\" />\n {config.label}\n </Badge>\n )\n}","import { ReactNode, useState } from \"react\"\nimport { PageLayout } from \"@/components/ui/page-layout\"\nimport { Button } from \"@/components/ui/button\"\n\ninterface DetailPageCard {\n key: string\n component: (props: { isEditing: boolean; onToggleEdit: () => void; className?: string }) => ReactNode\n expandOnEdit?: boolean\n}\n\ninterface DetailPageAction {\n label: string\n variant?: \"default\" | \"outline\" | \"destructive\" | \"secondary\" | \"ghost\"\n onClick?: () => void\n className?: string\n}\n\ninterface DetailPageLayoutProps {\n title: string | ReactNode\n description?: string\n cards: DetailPageCard[]\n actions?: DetailPageAction[]\n initialEditingState?: Record<string, boolean>\n headerContent?: ReactNode\n}\n\nexport const DetailPageLayout = ({ \n title, \n description, \n cards, \n actions,\n initialEditingState = {},\n headerContent\n}: DetailPageLayoutProps) => {\n const [editingCards, setEditingCards] = useState<Record<string, boolean>>(\n initialEditingState\n )\n\n const toggleEdit = (cardKey: string) => {\n setEditingCards(prev => ({\n ...prev,\n [cardKey]: !prev[cardKey]\n }))\n }\n\n const isAnyCardEditing = Object.values(editingCards).some(Boolean)\n\n const isSingleCard = cards.length === 1\n const gridClasses = isSingleCard \n ? \"space-y-4 mb-6 lg:space-y-6\" \n : \"grid gap-4 mb-6 grid-cols-1 lg:grid-cols-2 lg:gap-6\"\n\n return (\n <PageLayout \n title={title} \n description={description}\n headerContent={headerContent}\n actions={actions?.map(action => ({\n label: action.label,\n variant: action.variant || \"default\",\n onClick: action.onClick || (() => {})\n }))}\n >\n {/* Cards - Full width for single card, max 2 per row for multiple */}\n <div className={gridClasses}>\n {cards.map((card) => {\n const isEditing = editingCards[card.key] || false\n const shouldExpand = !isSingleCard && card.expandOnEdit !== false && isEditing\n \n return (\n <div \n key={card.key}\n className={shouldExpand ? \"col-span-full\" : \"\"}\n >\n {card.component({ \n isEditing, \n onToggleEdit: () => toggleEdit(card.key),\n className: shouldExpand ? \"col-span-full\" : \"\"\n })}\n </div>\n )\n })}\n </div>\n </PageLayout>\n )\n}","import * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { cn } from \"@/lib/utils\"\n\nconst DropdownMenu = DropdownMenuPrimitive.Root\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 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 className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n))\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n))\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n}","import * as React from \"react\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { DataGrid } from \"@/components/ui/data-grid\"\nimport { cn } from \"@/lib/utils\"\nimport { MoreVertical, Edit, Trash2, Eye } from \"lucide-react\"\nimport { \n DropdownMenu, \n DropdownMenuContent, \n DropdownMenuItem, \n DropdownMenuSeparator, \n DropdownMenuTrigger \n} from \"@/components/ui/dropdown-menu\"\n\ninterface EntityAction {\n label: string\n icon: React.ReactNode\n onClick: () => void\n variant?: \"default\" | \"destructive\"\n}\n\ninterface EntityCardProps {\n entity: {\n id: string\n name: string\n type: string\n status: string\n description?: string\n metadata?: Record<string, any>\n }\n actions?: EntityAction[]\n showDefaultActions?: boolean\n onView?: (id: string) => void\n onEdit?: (id: string) => void\n onDelete?: (id: string) => void\n className?: string\n children?: React.ReactNode\n}\n\nexport const EntityCard = React.forwardRef<HTMLDivElement, EntityCardProps>(\n ({ \n entity, \n actions, \n showDefaultActions = true,\n onView,\n onEdit, \n onDelete,\n className, \n children \n }, ref) => {\n const defaultActions: EntityAction[] = [\n ...(onView ? [{\n label: \"View Details\",\n icon: <Eye className=\"w-4 h-4\" />,\n onClick: () => onView(entity.id)\n }] : []),\n ...(onEdit ? [{\n label: \"Edit\",\n icon: <Edit className=\"w-4 h-4\" />,\n onClick: () => onEdit(entity.id)\n }] : []),\n ...(onDelete ? [{\n label: \"Delete\",\n icon: <Trash2 className=\"w-4 h-4\" />,\n onClick: () => onDelete(entity.id),\n variant: \"destructive\" as const\n }] : [])\n ]\n\n const allActions = showDefaultActions ? [...defaultActions, ...(actions || [])] : (actions || [])\n \n const entityData = entity.metadata ? Object.entries(entity.metadata)\n .filter(([_, value]) => value !== null && value !== undefined)\n .map(([key, value]) => ({\n label: key.charAt(0).toUpperCase() + key.slice(1).replace(/([A-Z])/g, ' $1'),\n value: typeof value === 'object' ? JSON.stringify(value) : String(value)\n })) : []\n\n return (\n <Card ref={ref} className={cn(\"relative\", className)}>\n <CardHeader>\n <div className=\"flex items-start justify-between\">\n <div className=\"flex-1 min-w-0\">\n <CardTitle className=\"text-lg truncate\">{entity.name}</CardTitle>\n <div className=\"flex items-center space-x-2 mt-2\">\n <Badge variant={entity.status as any}>{entity.status}</Badge>\n <Badge variant=\"outline\">{entity.type}</Badge>\n </div>\n {entity.description && (\n <p className=\"text-sm text-muted-foreground mt-2 line-clamp-2\">\n {entity.description}\n </p>\n )}\n </div>\n \n {allActions.length > 0 && (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"h-8 w-8\">\n <MoreVertical className=\"w-4 h-4\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n {allActions.map((action, index) => (\n <React.Fragment key={index}>\n <DropdownMenuItem\n onClick={action.onClick}\n className={cn(\n action.variant === \"destructive\" && \"text-destructive focus:text-destructive\"\n )}\n >\n {action.icon}\n {action.label}\n </DropdownMenuItem>\n {index < allActions.length - 1 && action.variant === \"destructive\" && (\n <DropdownMenuSeparator />\n )}\n </React.Fragment>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n </div>\n </CardHeader>\n \n {(entityData.length > 0 || children) && (\n <CardContent>\n {entityData.length > 0 && (\n <DataGrid data={entityData} columns={2} gap=\"sm\" />\n )}\n {children}\n </CardContent>\n )}\n </Card>\n )\n }\n)\n\nEntityCard.displayName = \"EntityCard\"","import * as React from \"react\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { cn } from \"@/lib/utils\"\nimport { TrendingUp, TrendingDown, Minus } from \"lucide-react\"\n\ninterface MetricCardProps {\n title: string\n value: string | number\n description?: string\n trend?: {\n value: number\n label: string\n direction: \"up\" | \"down\" | \"neutral\"\n }\n icon?: React.ReactNode\n variant?: \"default\" | \"success\" | \"warning\" | \"destructive\"\n className?: string\n}\n\nconst variantStyles = {\n default: \"\",\n success: \"border-success/20 bg-success/5\",\n warning: \"border-warning/20 bg-warning/5\", \n destructive: \"border-destructive/20 bg-destructive/5\"\n}\n\nconst trendIcons = {\n up: TrendingUp,\n down: TrendingDown,\n neutral: Minus\n}\n\nconst trendColors = {\n up: \"success\",\n down: \"destructive\",\n neutral: \"secondary\"\n} as const\n\nexport const MetricCard = React.forwardRef<HTMLDivElement, MetricCardProps>(\n ({ title, value, description, trend, icon, variant = \"default\", className }, ref) => {\n const TrendIcon = trend ? trendIcons[trend.direction] : null\n \n return (\n <Card \n ref={ref}\n className={cn(variantStyles[variant], className)}\n >\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium text-muted-foreground\">\n {title}\n </CardTitle>\n {icon && (\n <div className=\"text-muted-foreground\">\n {icon}\n </div>\n )}\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold text-foreground\">{value}</div>\n {(description || trend) && (\n <div className=\"flex items-center justify-between mt-2\">\n {description && (\n <p className=\"text-xs text-muted-foreground\">{description}</p>\n )}\n {trend && TrendIcon && (\n <Badge variant={trendColors[trend.direction]} className=\"text-xs\">\n <TrendIcon className=\"w-3 h-3 mr-1\" />\n {trend.value > 0 ? \"+\" : \"\"}{trend.value}% {trend.label}\n </Badge>\n )}\n </div>\n )}\n </CardContent>\n </Card>\n )\n }\n)\n\nMetricCard.displayName = \"MetricCard\"","import { useTheme } from \"next-themes\"\nimport { Toaster as Sonner, toast } from \"sonner\"\n\ntype ToasterProps = React.ComponentProps<typeof Sonner>\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n const { theme = \"system\" } = useTheme()\n\n return (\n <Sonner\n theme={theme as ToasterProps[\"theme\"]}\n className=\"toaster group\"\n toastOptions={{\n classNames: {\n toast:\n \"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg\",\n description: \"group-[.toast]:text-muted-foreground\",\n actionButton:\n \"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground\",\n cancelButton:\n \"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground\",\n },\n }}\n {...props}\n />\n )\n}\n\nexport { Toaster, toast }\n","import * 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-10 items-center justify-center rounded-md 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-sm px-3 py-1.5 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-sm\",\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 }","import * as React from \"react\"\nimport * as ToastPrimitives from \"@radix-ui/react-toast\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst ToastProvider = ToastPrimitives.Provider\n\nconst ToastViewport = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Viewport>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Viewport\n ref={ref}\n className={cn(\n \"fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]\",\n className\n )}\n {...props}\n />\n))\nToastViewport.displayName = ToastPrimitives.Viewport.displayName\n\nconst toastVariants = cva(\n \"group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full\",\n {\n variants: {\n variant: {\n default: \"border bg-background text-foreground\",\n destructive:\n \"destructive group border-destructive bg-destructive text-destructive-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nconst Toast = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> &\n VariantProps<typeof toastVariants>\n>(({ className, variant, ...props }, ref) => {\n return (\n <ToastPrimitives.Root\n ref={ref}\n className={cn(toastVariants({ variant }), className)}\n {...props}\n />\n )\n})\nToast.displayName = ToastPrimitives.Root.displayName\n\nconst ToastAction = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Action>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Action>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Action\n ref={ref}\n className={cn(\n \"inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive\",\n className\n )}\n {...props}\n />\n))\nToastAction.displayName = ToastPrimitives.Action.displayName\n\nconst ToastClose = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Close>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Close>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Close\n ref={ref}\n className={cn(\n \"absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600\",\n className\n )}\n toast-close=\"\"\n {...props}\n >\n <X className=\"h-4 w-4\" />\n </ToastPrimitives.Close>\n))\nToastClose.displayName = ToastPrimitives.Close.displayName\n\nconst ToastTitle = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Title>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Title>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Title\n ref={ref}\n className={cn(\"text-sm font-semibold\", className)}\n {...props}\n />\n))\nToastTitle.displayName = ToastPrimitives.Title.displayName\n\nconst ToastDescription = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Description>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Description\n ref={ref}\n className={cn(\"text-sm opacity-90\", className)}\n {...props}\n />\n))\nToastDescription.displayName = ToastPrimitives.Description.displayName\n\ntype ToastProps = React.ComponentPropsWithoutRef<typeof Toast>\n\ntype ToastActionElement = React.ReactElement<typeof ToastAction>\n\nexport {\n type ToastProps,\n type ToastActionElement,\n ToastProvider,\n ToastViewport,\n Toast,\n ToastTitle,\n ToastDescription,\n ToastClose,\n ToastAction,\n}\n","import { Building, Users, User, CreditCard } from \"lucide-react\"\n\nexport const mockCounterparties = [\n {\n id: \"1\",\n name: \"Acme Corporation\",\n type: \"business\",\n businessType: \"corporation\",\n status: \"active\",\n description: \"Leading technology solutions provider\",\n metadata: {\n email: \"contact@acme.com\",\n phone: \"+1 (555) 123-4567\",\n country: \"United States\",\n lastActivity: \"2024-01-15\"\n }\n },\n {\n id: \"2\", \n name: \"Global Tech LLC\",\n type: \"business\",\n businessType: \"llc\",\n status: \"pending\",\n description: \"Software development and consulting services\",\n metadata: {\n email: \"info@globaltech.com\",\n phone: \"+1 (555) 987-6543\",\n country: \"Canada\",\n lastActivity: \"2024-01-10\"\n }\n },\n {\n id: \"3\",\n name: \"John Smith\",\n type: \"individual\", \n businessType: null,\n status: \"active\",\n description: \"Individual contractor and consultant\",\n metadata: {\n email: \"john.smith@email.com\",\n phone: \"+1 (555) 456-7890\",\n country: \"United States\",\n lastActivity: \"2024-01-20\"\n }\n },\n {\n id: \"4\",\n name: \"Innovation Partners\",\n type: \"business\",\n businessType: \"partnership\", \n status: \"inactive\",\n description: \"Strategic business consulting firm\",\n metadata: {\n email: \"hello@innovation.com\",\n phone: \"+1 (555) 321-0987\",\n country: \"United Kingdom\",\n lastActivity: \"2024-01-05\"\n }\n }\n]\n\nexport const mockAccounts = [\n {\n id: \"1\",\n name: \"Primary Checking\",\n number: \"****1234\",\n type: \"checking\" as const,\n status: \"active\" as const,\n balance: \"$24,567.89\",\n currency: \"USD\",\n institution: \"JPMorgan Chase\",\n routingNumber: \"021000021\",\n country: \"United States\"\n },\n {\n id: \"2\", \n name: \"Business Savings\",\n number: \"****5678\",\n type: \"savings\" as const,\n status: \"active\" as const,\n balance: \"$150,000.00\",\n currency: \"USD\",\n institution: \"Bank of America\", \n routingNumber: \"026009593\",\n country: \"United States\"\n },\n {\n id: \"3\",\n name: \"Investment Account\",\n number: \"****9012\",\n type: \"investment\" as const,\n status: \"pending\" as const,\n balance: \"$75,432.10\",\n currency: \"USD\",\n institution: \"Fidelity Investments\",\n routingNumber: \"011000235\",\n country: \"United States\"\n }\n]\n\nexport const mockMetrics = [\n {\n title: \"Total Counterparties\",\n value: \"1,234\",\n description: \"Active business relationships\",\n trend: {\n value: 12,\n label: \"from last month\",\n direction: \"up\" as const\n },\n icon: <Building className=\"w-4 h-4\" />,\n variant: \"default\" as const\n },\n {\n title: \"Wire Transfers\",\n value: \"$2.4M\",\n description: \"This month\",\n trend: {\n value: 8,\n label: \"from last month\", \n direction: \"up\" as const\n },\n icon: <CreditCard className=\"w-4 h-4\" />,\n variant: \"success\" as const\n },\n {\n title: \"ACH Transfers\",\n value: \"567\",\n description: \"Processed this week\",\n trend: {\n value: -3,\n label: \"from last week\",\n direction: \"down\" as const\n },\n icon: <Users className=\"w-4 h-4\" />,\n variant: \"warning\" as const\n },\n {\n title: \"Pending Reviews\",\n value: \"23\",\n description: \"Require attention\",\n trend: {\n value: 0,\n label: \"no change\",\n direction: \"neutral\" as const\n },\n icon: <User className=\"w-4 h-4\" />,\n variant: \"destructive\" as const\n }\n]\n\nexport const mockTableData = [\n {\n id: \"1\",\n name: \"Acme Corporation\",\n type: \"Business\",\n status: \"Active\",\n amount: \"$125,000\",\n date: \"2024-01-15\",\n verified: true\n },\n {\n id: \"2\",\n name: \"Global Tech LLC\", \n type: \"Business\",\n status: \"Pending\",\n amount: \"$75,500\",\n date: \"2024-01-12\",\n verified: false\n },\n {\n id: \"3\",\n name: \"John Smith\",\n type: \"Individual\",\n status: \"Active\", \n amount: \"$45,200\",\n date: \"2024-01-10\",\n verified: true\n }\n]","import * as React from \"react\"\nimport { ListPage } from \"@/components/layouts/list-page\"\nimport { MetricCard } from \"@/components/ui/metric-card\"\nimport { DataTable, type DataTableColumn } from \"@/components/ui/data-table\"\nimport { EntityCard } from \"@/components/ui/entity-card\"\nimport { AccountCard } from \"@/components/ui/account-card\"\nimport { ResponsiveGrid } from \"@/components/ui/responsive-grid\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { mockMetrics, mockTableData, mockCounterparties, mockAccounts } from \"@/lib/mock-data\"\nimport { Plus, Download, TrendingUp } from \"lucide-react\"\n\nconst recentTransactions = [\n {\n id: \"1\",\n recipient: \"Acme Corporation\",\n amount: \"$25,000\",\n type: \"Wire Transfer\",\n status: \"completed\",\n date: \"2024-01-20\"\n },\n {\n id: \"2\", \n recipient: \"Global Tech LLC\",\n amount: \"$12,500\",\n type: \"ACH Transfer\",\n status: \"pending\",\n date: \"2024-01-20\"\n },\n {\n id: \"3\",\n recipient: \"John Smith\",\n amount: \"$3,200\",\n type: \"Wire Transfer\", \n status: \"completed\",\n date: \"2024-01-19\"\n }\n]\n\nconst transactionColumns: DataTableColumn[] = [\n { key: \"recipient\", title: \"Recipient\", sortable: true },\n { key: \"amount\", title: \"Amount\", sortable: true, align: \"right\" },\n { key: \"type\", title: \"Type\", sortable: true },\n { \n key: \"status\", \n title: \"Status\", \n sortable: true,\n render: (value) => <Badge variant={value === \"completed\" ? \"success\" : \"warning\"}>{value}</Badge>\n },\n { key: \"date\", title: \"Date\", sortable: true }\n]\n\nexport function DashboardDemo() {\n const [sortBy, setSortBy] = React.useState<string>()\n const [sortDirection, setSortDirection] = React.useState<\"asc\" | \"desc\">(\"asc\")\n\n const handleSort = (key: string) => {\n if (sortBy === key) {\n setSortDirection(sortDirection === \"asc\" ? \"desc\" : \"asc\")\n } else {\n setSortBy(key)\n setSortDirection(\"asc\")\n }\n }\n\n const breadcrumbs = [\n { label: \"UI Kit\", href: \"/ui-kit\" },\n { label: \"Dashboard Demo\" }\n ]\n\n const actions = [\n {\n label: \"Export Report\",\n onClick: () => console.log(\"Export\"),\n variant: \"outline\" as const,\n icon: <Download className=\"w-4 h-4\" />\n },\n {\n label: \"New Transfer\",\n onClick: () => console.log(\"New Transfer\"),\n icon: <Plus className=\"w-4 h-4\" />\n }\n ]\n\n return (\n <ListPage\n title=\"Financial Dashboard\"\n description=\"Comprehensive overview of accounts, transfers, and business metrics\"\n breadcrumbs={breadcrumbs}\n actions={actions}\n maxWidth=\"xl\"\n >\n {/* Metrics Overview */}\n <ResponsiveGrid type=\"cards\" gap=\"md\">\n {mockMetrics.map((metric, index) => (\n <MetricCard key={index} {...metric} />\n ))}\n </ResponsiveGrid>\n\n {/* Account Cards */}\n <Card>\n <CardHeader>\n <div className=\"flex items-center justify-between\">\n <CardTitle>Account Overview</CardTitle>\n <Badge variant=\"secondary\" className=\"flex items-center gap-1\">\n <TrendingUp className=\"w-3 h-3\" />\n 3 Active Accounts\n </Badge>\n </div>\n </CardHeader>\n <CardContent>\n <ResponsiveGrid type=\"cards\" gap=\"md\">\n {mockAccounts.map((account) => (\n <AccountCard key={account.id} account={account} />\n ))}\n </ResponsiveGrid>\n </CardContent>\n </Card>\n\n {/* Recent Transactions */}\n <Card>\n <CardHeader>\n <CardTitle>Recent Transactions</CardTitle>\n </CardHeader>\n <CardContent>\n <DataTable\n columns={transactionColumns}\n data={recentTransactions}\n sortBy={sortBy}\n sortDirection={sortDirection}\n onSort={handleSort}\n />\n </CardContent>\n </Card>\n\n {/* Recent Counterparties */}\n <Card>\n <CardHeader>\n <CardTitle>Recent Counterparties</CardTitle>\n </CardHeader>\n <CardContent>\n <ResponsiveGrid type=\"cards\" gap=\"md\">\n {mockCounterparties.slice(0, 4).map((entity) => (\n <EntityCard \n key={entity.id}\n entity={entity}\n onView={(id) => console.log(\"View\", id)}\n onEdit={(id) => console.log(\"Edit\", id)}\n />\n ))}\n </ResponsiveGrid>\n </CardContent>\n </Card>\n </ListPage>\n )\n}","import * as React from \"react\"\nimport { Container } from \"@/components/ui/container\"\nimport { Stack } from \"@/components/ui/stack\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"@/components/ui/tabs\"\nimport { ResponsiveGrid } from \"@/components/ui/responsive-grid\"\nimport { Copy, Check } from \"lucide-react\"\n\nconst colorPalette = {\n primary: {\n name: \"Primary\",\n colors: [\n { name: \"primary\", value: \"hsl(204 100% 54%)\", class: \"bg-primary\" },\n { name: \"primary-foreground\", value: \"hsl(0 0% 100%)\", class: \"bg-primary-foreground\" },\n { name: \"primary-glow\", value: \"hsl(204 100% 64%)\", class: \"bg-primary-glow\" }\n ]\n },\n neutral: {\n name: \"Neutral\",\n colors: [\n { name: \"background\", value: \"hsl(240 10% 98%)\", class: \"bg-background\" },\n { name: \"foreground\", value: \"hsl(240 10% 8%)\", class: \"bg-foreground\" },\n { name: \"muted\", value: \"hsl(240 5% 96%)\", class: \"bg-muted\" },\n { name: \"muted-foreground\", value: \"hsl(240 4% 46%)\", class: \"bg-muted-foreground\" }\n ]\n },\n semantic: {\n name: \"Semantic\",\n colors: [\n { name: \"success\", value: \"hsl(142 76% 36%)\", class: \"bg-success\" },\n { name: \"warning\", value: \"hsl(38 92% 50%)\", class: \"bg-warning\" },\n { name: \"destructive\", value: \"hsl(0 84% 60%)\", class: \"bg-destructive\" }\n ]\n }\n}\n\nconst typography = [\n { name: \"Heading 1\", class: \"text-3xl font-bold\", example: \"The quick brown fox\" },\n { name: \"Heading 2\", class: \"text-2xl font-semibold\", example: \"The quick brown fox\" },\n { name: \"Heading 3\", class: \"text-xl font-medium\", example: \"The quick brown fox\" },\n { name: \"Body Large\", class: \"text-lg\", example: \"The quick brown fox jumps over the lazy dog\" },\n { name: \"Body\", class: \"text-base\", example: \"The quick brown fox jumps over the lazy dog\" },\n { name: \"Body Small\", class: \"text-sm\", example: \"The quick brown fox jumps over the lazy dog\" },\n { name: \"Caption\", class: \"text-xs text-muted-foreground\", example: \"The quick brown fox jumps over the lazy dog\" }\n]\n\nconst spacing = [\n { name: \"None\", class: \"space-y-0\", value: \"0\" },\n { name: \"XS\", class: \"space-y-1\", value: \"0.25rem\" },\n { name: \"SM\", class: \"space-y-2\", value: \"0.5rem\" },\n { name: \"MD\", class: \"space-y-4\", value: \"1rem\" },\n { name: \"LG\", class: \"space-y-6\", value: \"1.5rem\" },\n { name: \"XL\", class: \"space-y-8\", value: \"2rem\" }\n]\n\nconst badgeVariants = [\n \"default\", \"secondary\", \"destructive\", \"outline\", \"success\", \"warning\",\n \"business\", \"individual\", \"active\", \"inactive\", \"pending\", \"suspended\"\n]\n\nfunction ColorSwatch({ color }: { color: { name: string; value: string; class: string } }) {\n const [copied, setCopied] = React.useState(false)\n \n const copyToClipboard = () => {\n navigator.clipboard.writeText(color.value)\n setCopied(true)\n setTimeout(() => setCopied(false), 2000)\n }\n \n return (\n <div className=\"group cursor-pointer\" onClick={copyToClipboard}>\n <div className={`h-16 w-full rounded-lg ${color.class} mb-2 group-hover:scale-105 transition-transform`} />\n <div className=\"text-xs\">\n <div className=\"font-medium text-foreground\">{color.name}</div>\n <div className=\"text-muted-foreground flex items-center gap-1\">\n {color.value}\n {copied ? <Check className=\"w-3 h-3 text-success\" /> : <Copy className=\"w-3 h-3 opacity-0 group-hover:opacity-100\" />}\n </div>\n </div>\n </div>\n )\n}\n\nexport function PatternLibrary() {\n return (\n <Container size=\"xl\">\n <Stack spacing=\"lg\">\n <div>\n <h1 className=\"text-3xl font-bold text-foreground\">Pattern Library</h1>\n <p className=\"text-muted-foreground mt-2\">\n Design system tokens, components, and usage guidelines\n </p>\n </div>\n\n <Tabs defaultValue=\"colors\" className=\"w-full\">\n <TabsList className=\"grid w-full grid-cols-4\">\n <TabsTrigger value=\"colors\">Colors</TabsTrigger>\n <TabsTrigger value=\"typography\">Typography</TabsTrigger>\n <TabsTrigger value=\"spacing\">Spacing</TabsTrigger>\n <TabsTrigger value=\"components\">Components</TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"colors\" className=\"mt-6\">\n <Stack spacing=\"lg\">\n {Object.entries(colorPalette).map(([key, palette]) => (\n <Card key={key}>\n <CardHeader>\n <CardTitle>{palette.name}</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-4\">\n {palette.colors.map((color) => (\n <ColorSwatch key={color.name} color={color} />\n ))}\n </div>\n </CardContent>\n </Card>\n ))}\n </Stack>\n </TabsContent>\n\n <TabsContent value=\"typography\" className=\"mt-6\">\n <Card>\n <CardHeader>\n <CardTitle>Typography Scale</CardTitle>\n </CardHeader>\n <CardContent>\n <Stack spacing=\"lg\">\n {typography.map((type) => (\n <div key={type.name} className=\"grid grid-cols-1 md:grid-cols-4 gap-4 items-center\">\n <div className=\"text-sm font-medium text-muted-foreground\">\n {type.name}\n </div>\n <div className=\"md:col-span-2\">\n <div className={type.class}>{type.example}</div>\n </div>\n <div className=\"text-xs text-muted-foreground font-mono\">\n {type.class}\n </div>\n </div>\n ))}\n </Stack>\n </CardContent>\n </Card>\n </TabsContent>\n\n <TabsContent value=\"spacing\" className=\"mt-6\">\n <Card>\n <CardHeader>\n <CardTitle>Spacing System</CardTitle>\n </CardHeader>\n <CardContent>\n <Stack spacing=\"lg\">\n {spacing.map((space) => (\n <div key={space.name} className=\"grid grid-cols-1 md:grid-cols-4 gap-4 items-center\">\n <div className=\"text-sm font-medium text-muted-foreground\">\n {space.name}\n </div>\n <div className=\"md:col-span-2\">\n <div className={space.class}>\n <div className=\"bg-primary/20 p-2 rounded\">Item 1</div>\n <div className=\"bg-primary/20 p-2 rounded\">Item 2</div>\n </div>\n </div>\n <div className=\"text-xs text-muted-foreground font-mono\">\n {space.value} ({space.class})\n </div>\n </div>\n ))}\n </Stack>\n </CardContent>\n </Card>\n </TabsContent>\n\n <TabsContent value=\"components\" className=\"mt-6\">\n <Stack spacing=\"lg\">\n {/* Badges */}\n <Card>\n <CardHeader>\n <CardTitle>Badge Variants</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"flex flex-wrap gap-2\">\n {badgeVariants.map((variant) => (\n <Badge key={variant} variant={variant as any}>\n {variant}\n </Badge>\n ))}\n </div>\n </CardContent>\n </Card>\n\n {/* Buttons */}\n <Card>\n <CardHeader>\n <CardTitle>Button Variants</CardTitle>\n </CardHeader>\n <CardContent>\n <Stack direction=\"horizontal\" spacing=\"sm\" className=\"flex-wrap\">\n <Button variant=\"default\">Default</Button>\n <Button variant=\"secondary\">Secondary</Button>\n <Button variant=\"outline\">Outline</Button>\n <Button variant=\"ghost\">Ghost</Button>\n <Button variant=\"link\">Link</Button>\n <Button variant=\"destructive\">Destructive</Button>\n </Stack>\n </CardContent>\n </Card>\n\n {/* Grid Examples */}\n <Card>\n <CardHeader>\n <CardTitle>Grid Layouts</CardTitle>\n </CardHeader>\n <CardContent>\n <Stack spacing=\"md\">\n <div>\n <h4 className=\"text-sm font-medium mb-2\">Cards Grid</h4>\n <ResponsiveGrid type=\"cards\" gap=\"sm\">\n {[1, 2, 3, 4, 5, 6].map((i) => (\n <div key={i} className=\"bg-muted rounded p-4 text-center text-sm\">\n Card {i}\n </div>\n ))}\n </ResponsiveGrid>\n </div>\n <div>\n <h4 className=\"text-sm font-medium mb-2\">Forms Grid</h4>\n <ResponsiveGrid type=\"forms\" gap=\"md\">\n {[1, 2, 3, 4].map((i) => (\n <div key={i} className=\"bg-muted rounded p-4 text-center text-sm\">\n Form Section {i}\n </div>\n ))}\n </ResponsiveGrid>\n </div>\n </Stack>\n </CardContent>\n </Card>\n </Stack>\n </TabsContent>\n </Tabs>\n </Stack>\n </Container>\n )\n}","import * as React from \"react\"\nimport { Container } from \"@/components/ui/container\"\nimport { Stack } from \"@/components/ui/stack\"\nimport { MetricCard } from \"@/components/ui/metric-card\"\nimport { DataTable, type DataTableColumn } from \"@/components/ui/data-table\"\nimport { AccountCard } from \"@/components/ui/account-card\"\nimport { EntityCard } from \"@/components/ui/entity-card\"\nimport { FormField } from \"@/components/ui/form-field\"\nimport { Breadcrumb } from \"@/components/ui/breadcrumb\"\nimport { ResponsiveGrid } from \"@/components/ui/responsive-grid\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Button } from \"@/components/ui/button\"\nimport { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { mockCounterparties, mockAccounts, mockMetrics, mockTableData } from \"@/lib/mock-data\"\nimport { Building, Users, Plus, Download } from \"lucide-react\"\n\nconst tableColumns: DataTableColumn[] = [\n { key: \"name\", title: \"Name\", sortable: true },\n { key: \"type\", title: \"Type\", sortable: true },\n { key: \"status\", title: \"Status\", sortable: true },\n { key: \"amount\", title: \"Amount\", sortable: true, align: \"right\" },\n { key: \"date\", title: \"Date\", sortable: true },\n { key: \"verified\", title: \"Verified\", sortable: true }\n]\n\nexport function UIKitShowcase() {\n const [sortBy, setSortBy] = React.useState<string>()\n const [sortDirection, setSortDirection] = React.useState<\"asc\" | \"desc\">(\"asc\")\n\n const handleSort = (key: string) => {\n if (sortBy === key) {\n setSortDirection(sortDirection === \"asc\" ? \"desc\" : \"asc\")\n } else {\n setSortBy(key)\n setSortDirection(\"asc\")\n }\n }\n\n const breadcrumbs = [\n { label: \"UI Kit\", href: \"/ui-kit\" },\n { label: \"Showcase\" }\n ]\n\n return (\n <div className=\"min-h-screen bg-gradient-subtle\">\n <Container size=\"xl\">\n <Stack spacing=\"lg\">\n {/* Breadcrumbs */}\n <Breadcrumb items={breadcrumbs} />\n \n {/* Page Header */}\n <div className=\"flex items-start justify-between\">\n <Stack spacing=\"sm\">\n <h1 className=\"text-3xl font-bold text-foreground\">UI Kit Showcase</h1>\n <p className=\"text-muted-foreground max-w-2xl\">\n Complete collection of reusable components, layouts, and patterns for building financial applications.\n </p>\n </Stack>\n \n <Stack direction=\"horizontal\" spacing=\"sm\">\n <Button variant=\"outline\">\n <Download className=\"w-4 h-4\" />\n Export Kit\n </Button>\n <Button>\n <Plus className=\"w-4 h-4\" />\n Create Component\n </Button>\n </Stack>\n </div>\n\n {/* Metrics Section */}\n <Card>\n <CardHeader>\n <CardTitle>Metric Cards</CardTitle>\n </CardHeader>\n <CardContent>\n <ResponsiveGrid type=\"cards\" gap=\"md\">\n {mockMetrics.map((metric, index) => (\n <MetricCard key={index} {...metric} />\n ))}\n </ResponsiveGrid>\n </CardContent>\n </Card>\n\n {/* Form Components */}\n <Card>\n <CardHeader>\n <CardTitle>Form Components</CardTitle>\n </CardHeader>\n <CardContent>\n <Stack spacing=\"md\">\n <FormField\n label=\"Enhanced Input\"\n description=\"Input field with validation and enhanced styling\"\n required\n >\n <EnhancedInput \n placeholder=\"Enter your name\"\n error=\"This field is required\"\n />\n </FormField>\n \n <FormField\n label=\"Enhanced Select\"\n description=\"Select dropdown with search and validation\"\n layout=\"horizontal\"\n >\n <EnhancedSelect\n placeholder=\"Choose an option\"\n options={[\n { value: \"option1\", label: \"Option 1\" },\n { value: \"option2\", label: \"Option 2\" },\n { value: \"option3\", label: \"Option 3\" }\n ]}\n />\n </FormField>\n </Stack>\n </CardContent>\n </Card>\n\n {/* Account Cards */}\n <Card>\n <CardHeader>\n <CardTitle>Account Cards</CardTitle>\n </CardHeader>\n <CardContent>\n <ResponsiveGrid type=\"cards\" gap=\"md\">\n {mockAccounts.map((account) => (\n <AccountCard key={account.id} account={account} />\n ))}\n </ResponsiveGrid>\n </CardContent>\n </Card>\n\n {/* Entity Cards */}\n <Card>\n <CardHeader>\n <CardTitle>Entity Cards</CardTitle>\n </CardHeader>\n <CardContent>\n <ResponsiveGrid type=\"cards\" gap=\"md\">\n {mockCounterparties.map((entity) => (\n <EntityCard \n key={entity.id}\n entity={entity}\n onView={(id) => console.log(\"View\", id)}\n onEdit={(id) => console.log(\"Edit\", id)}\n onDelete={(id) => console.log(\"Delete\", id)}\n />\n ))}\n </ResponsiveGrid>\n </CardContent>\n </Card>\n\n {/* Data Table */}\n <Card>\n <CardHeader>\n <CardTitle>Data Table</CardTitle>\n </CardHeader>\n <CardContent>\n <DataTable\n columns={tableColumns}\n data={mockTableData}\n sortBy={sortBy}\n sortDirection={sortDirection}\n onSort={handleSort}\n />\n </CardContent>\n </Card>\n\n {/* Layout Examples */}\n <Card>\n <CardHeader>\n <CardTitle>Layout Components</CardTitle>\n </CardHeader>\n <CardContent>\n <Stack spacing=\"md\">\n <div>\n <h4 className=\"text-sm font-medium text-foreground mb-2\">Container Sizes</h4>\n <Stack spacing=\"sm\">\n <div className=\"bg-primary/10 rounded p-2 text-center text-xs\">\n Small Container (max-w-2xl)\n </div>\n <div className=\"bg-primary/10 rounded p-2 text-center text-xs max-w-4xl\">\n Medium Container (max-w-4xl)\n </div>\n <div className=\"bg-primary/10 rounded p-2 text-center text-xs max-w-6xl\">\n Large Container (max-w-6xl)\n </div>\n </Stack>\n </div>\n \n <div>\n <h4 className=\"text-sm font-medium text-foreground mb-2\">Responsive Grids</h4>\n <ResponsiveGrid type=\"forms\" gap=\"sm\">\n <div className=\"bg-secondary rounded p-4 text-center text-sm\">Form Grid 1</div>\n <div className=\"bg-secondary rounded p-4 text-center text-sm\">Form Grid 2</div>\n <div className=\"bg-secondary rounded p-4 text-center text-sm\">Form Grid 3</div>\n <div className=\"bg-secondary rounded p-4 text-center text-sm\">Form Grid 4</div>\n </ResponsiveGrid>\n </div>\n </Stack>\n </CardContent>\n </Card>\n </Stack>\n </Container>\n </div>\n )\n}","export interface TimelineEvent {\n id: string\n timestamp: string\n user: string\n action: string\n details?: string\n status?: string\n}\n\nexport interface AlertNote {\n id: string\n timestamp: string\n user: string\n content: string\n type: \"RFI Note\" | \"Internal Note\"\n}\n\nexport interface AlertDocument {\n id: string\n name: string\n type: string\n description?: string\n size: string\n uploadedBy: string\n uploadedAt: string\n url?: string\n}\n\nexport interface Alert {\n id: string\n createdAt: string\n type: string\n status: \"Unassigned\" | \"Closed\" | \"In Progress\"\n contextType: string\n rfiStatus?: \"Completed\" | \"Provided\" | \"Pending\"\n description: string\n contextId?: string\n assignee?: string\n timeline?: TimelineEvent[]\n notes?: AlertNote[]\n documents?: AlertDocument[]\n contextData?: any\n}\n\nexport const mockAlerts: Alert[] = [\n {\n id: \"4402\",\n createdAt: \"2025-09-30 03:00:21\",\n type: \"Ofac\",\n status: \"Unassigned\",\n contextType: \"Ofac\",\n description: \"WIRE TRANSFER: Multiple OFAC matches detected for beneficiary bank\",\n timeline: [\n { id: \"1\", timestamp: \"2025-09-30 03:00:21\", user: \"System\", action: \"Alert Created\", status: \"Unassigned\" },\n { id: \"2\", timestamp: \"2025-09-30 09:15:32\", user: \"John Smith\", action: \"Alert Assigned\", details: \"Assigned to compliance team\", status: \"In Progress\" },\n { id: \"3\", timestamp: \"2025-09-30 10:22:15\", user: \"John Smith\", action: \"Note added\", details: \"Added RFI note requesting documentation\" },\n { id: \"4\", timestamp: \"2025-09-30 10:25:00\", user: \"John Smith\", action: \"Document added\", details: \"Uploaded passport_scan.pdf\" },\n { id: \"5\", timestamp: \"2025-09-30 11:50:00\", user: \"Sarah Johnson\", action: \"Document added\", details: \"Uploaded proof_of_address.jpg\" },\n { id: \"6\", timestamp: \"2025-10-01 08:30:00\", user: \"System\", action: \"RFI Status change\", details: \"Status changed from Pending to Provided\" },\n { id: \"7\", timestamp: \"2025-10-01 14:20:00\", user: \"Michael Chen\", action: \"Alert Approved\", details: \"Approved after review - false positive confirmed\" }\n ],\n notes: [\n { id: \"1\", timestamp: \"2025-09-30 10:22:15\", user: \"John Smith\", content: \"Reviewing OFAC match. Need to verify identity documents.\", type: \"RFI Note\" },\n { id: \"2\", timestamp: \"2025-09-30 11:45:30\", user: \"Sarah Johnson\", content: \"Requested additional documentation from customer. Passport and proof of address needed.\", type: \"RFI Note\" },\n { id: \"3\", timestamp: \"2025-09-30 14:20:45\", user: \"John Smith\", content: \"Customer responded with requested documents. Passport appears valid, reviewing address verification now.\", type: \"Internal Note\" },\n { id: \"4\", timestamp: \"2025-10-01 09:10:00\", user: \"Michael Chen\", content: \"Cross-referenced with internal records. Customer has been with us for 5 years with no prior issues. Match appears to be false positive due to common name.\", type: \"Internal Note\" }\n ],\n documents: [\n { \n id: \"1\", \n name: \"passport_scan.pdf\", \n type: \"ID Verification\", \n description: \"Customer passport for identity verification\", \n size: \"2.4 MB\", \n uploadedBy: \"John Smith\", \n uploadedAt: \"2025-09-30 10:25:00\",\n url: \"/placeholder.svg\"\n },\n { \n id: \"2\", \n name: \"proof_of_address.jpg\", \n type: \"Proof of Address\", \n description: \"Utility bill showing current residential address\", \n size: \"1.8 MB\", \n uploadedBy: \"Sarah Johnson\", \n uploadedAt: \"2025-09-30 11:50:00\",\n url: \"/placeholder.svg\"\n }\n ],\n contextData: {\n ofacId: 5043462,\n counterpartyName: null,\n counterpartyId: null,\n businessName: null,\n businessId: null,\n individualName: null,\n individualId: null,\n uboId: null,\n transactionPaymentId: \"5c73200c-3ade-4ba5-b6e6-39ad4b519fab\",\n tenantId: \"JakeUAT\",\n alertId: 4425,\n note: null,\n status: \"REVIEW\",\n createdAt: 1760162113.000000000,\n updatedAt: 1760162113.004160000,\n updatedBy: null,\n ofacCheckDetails: [\n {\n id: 24870,\n checkKey: \"originatorName\",\n checkValue: \"Kim jung un\"\n },\n {\n id: 24871,\n checkKey: \"originatorBankName\",\n checkValue: \"TD bank\"\n },\n {\n id: 24872,\n checkKey: \"beneficiaryName\",\n checkValue: \"Jake from Braid LLC\"\n },\n {\n id: 24873,\n checkKey: \"beneficiaryBankName\",\n checkValue: \"RUssian bank\"\n }\n ],\n rawResults: \"{\\\"SDNs\\\":[{\\\"entityID\\\":\\\"51656\\\",\\\"sdnName\\\":\\\"RUSSIAN UNIVERSAL BANK\\\",\\\"sdnType\\\":\\\"\\\",\\\"program\\\":[\\\"RUSSIA-EO14024\\\"],\\\"title\\\":\\\"\\\",\\\"callSign\\\":\\\"\\\",\\\"vesselType\\\":\\\"\\\",\\\"tonnage\\\":\\\"\\\",\\\"grossRegisteredTonnage\\\":\\\"\\\",\\\"vesselFlag\\\":\\\"\\\",\\\"vesselOwner\\\":\\\"\\\",\\\"remarks\\\":\\\"SWIFT/BIC RUNIRUMM; Website www.rubank.ru; Secondary sanctions risk: See Section 11 of Executive Order 14024.; Target Type Financial Institution; Tax ID No. 7718120593 (Russia); Legal Entity Number 253400YYHA5GJQB46R62; Registration Number 1027739671288 (Russia).\\\",\\\"match\\\":0.9325,\\\"matchedName\\\":\\\"russian universal bank\\\"},{\\\"entityID\\\":\\\"17755\\\",\\\"sdnName\\\":\\\"RUSSIAN NATIONAL COMMERCIAL BANK\\\",\\\"sdnType\\\":\\\"\\\",\\\"program\\\":[\\\"UKRAINE-EO13685\\\"],\\\"title\\\":\\\"\\\",\\\"callSign\\\":\\\"\\\",\\\"vesselType\\\":\\\"\\\",\\\"tonnage\\\":\\\"\\\",\\\"grossRegisteredTonnage\\\":\\\"\\\",\\\"vesselFlag\\\":\\\"\\\",\\\"vesselOwner\\\":\\\"\\\",\\\"remarks\\\":\\\"SWIFT/BIC RNCORUMM; Website http://www.rncb.ru; Email Address rncb@rncb.ru; BIK (RU) 044525607; Secondary sanctions risk: Ukraine-/Russia-Related Sanctions Regulations, 31 CFR 589.201 and/or 589.209; Registration ID 1027700381290 (Russia); Tax ID No. 7701105460 (Russia); Government Gazette Number 09610705 (Russia); a.k.a. 'RNCB'.\\\",\\\"match\\\":0.906896551724138,\\\"matchedName\\\":\\\"russian national commercial bank\\\"}],\\\"altNames\\\":[{\\\"entityID\\\":\\\"51760\\\",\\\"alternateID\\\":\\\"81078\\\",\\\"alternateType\\\":\\\"aka\\\",\\\"alternateName\\\":\\\"RUSSITA BANK\\\",\\\"alternateRemarks\\\":\\\"\\\",\\\"match\\\":0.9636363636363636,\\\"matchedName\\\":\\\"russita bank\\\"},{\\\"entityID\\\":\\\"18268\\\",\\\"alternateID\\\":\\\"28201\\\",\\\"alternateType\\\":\\\"aka\\\",\\\"alternateName\\\":\\\"RUSSIAN EXPORT-IMPORT BANK\\\",\\\"alternateRemarks\\\":\\\"\\\",\\\"match\\\":0.9217391304347826,\\\"matchedName\\\":\\\"russian export import bank\\\"},{\\\"entityID\\\":\\\"16681\\\",\\\"alternateID\\\":\\\"25333\\\",\\\"alternateType\\\":\\\"fka\\\",\\\"alternateName\\\":\\\"AKTSIONERNY BANK RUSSIAN FEDERATION\\\",\\\"alternateRemarks\\\":\\\"\\\",\\\"match\\\":0.9015625,\\\"matchedName\\\":\\\"aktsionerny bank russian federation\\\"}],\\\"sectoralSanctions\\\":[{\\\"Addresses\\\":[\\\"3, Gagarinsky Pereulok, Moscow, 119034, RU\\\",\\\"3 Gagarinsky per., Moscow, 119034, RU\\\"],\\\"AlternateNames\\\":[\\\"Russian Agricultural Bank\\\",\\\"Russian Agricultural Bank Open Joint Stock Company\\\",\\\"Rosselkhozbank\\\",\\\"Russian Agricultural Bank OJSC\\\",\\\"RusAg\\\"],\\\"EntityID\\\":\\\"17014\\\",\\\"IDsOnRecord\\\":[\\\"Registration Number, 1027700342890, RU\\\",\\\"Government Gazette Number, 52750822, RU\\\",\\\"Website, http://www.rshb.ru\\\",\\\"SWIFT/BIC, RUAGRUMM\\\",\\\"Executive Order 13662 Directive Determination -, Subject to Directive 1\\\",\\\"Executive Order 14024 Directive Information -, For more information on directives, please visit the following link: https://home.treasury.gov/policy-issues/financial-sanctions/sanctions-programs-and-country-information/russian-harmful-foreign-activities-sanctions#directives\\\",\\\"Executive Order 14024 Directive Information, Subject to Directive 3 - All transactions in, provision of financing for, and other dealings in new debt of longer than 14 days maturity or new equity where such new debt or new equity is issued on or after the 'Effective Date (EO 14024 Directive)' associated with this name are prohibited.\\\",\\\"Listing Date (EO 14024 Directive 3):, 2022-02-24\\\",\\\"Effective Date (EO 14024 Directive 3):, 2022-03-26\\\",\\\"Secondary sanctions risk:, Ukraine-/Russia-Related Sanctions Regulations, 31 CFR 589.201 and/or 589.209\\\"],\\\"Name\\\":\\\"Joint Stock Company Russian Agricultural Bank\\\",\\\"Programs\\\":[\\\"UKRAINE-EO13662\\\",\\\"RUSSIA-EO14024\\\"],\\\"Remarks\\\":[\\\"For more information on directives, please visit the following link: http://www.treasury.gov/resource-center/sanctions/Programs/Pages/ukraine.aspx#directives.\\\"],\\\"SourceInfoURL\\\":\\\"https://ofac.treasury.gov/other-ofac-sanctions-lists\\\",\\\"SourceListURL\\\":\\\"https://sanctionslist.ofac.treas.gov/Home/ConsolidatedList\\\",\\\"Type\\\":\\\"Entity\\\",\\\"match\\\":0.9217391304347826,\\\"matchedName\\\":\\\"russian agricultural bank\\\"},{\\\"Addresses\\\":[\\\"12 Krasnopresnenskaya Embankments, Moscow, 123610, RU\\\"],\\\"AlternateNames\\\":[\\\"ROSEKSIMBANK, ZAO\\\",\\\"RUSSIAN EXPORT-IMPORT BANK\\\",\\\"GOSUDARSTVENNY SPETSIALIZIROVANNY ROSSISKI EKSPORTNO-IMPORTNY BANK (ZAKRYTOE AKTSIONERNOE OBSHCHESTVO)\\\",\\\"STATE SPECIALIZED RUSSIAN EXPORT-IMPORT BANK JOINT-STOCK COMPANY\\\",\\\"Eximbank of Russia ZAO\\\",\\\"Eximbank of Russia\\\",\\\"AO Roseksimbank\\\"],\\\"EntityID\\\":\\\"18268\\\",\\\"IDsOnRecord\\\":[\\\"Registration Number, 1027739109133, RU\\\",\\\"Tax ID No., 7704001959, RU\\\",\\\"Legal Entity Number, 253400HA6URWT39X2982\\\",\\\"SWIFT/BIC, EXIRRUMM\\\",\\\"Website, eximbank.ru\\\",\\\"Executive Order 13662 Directive Determination -, Subject to Directive 1\\\",\\\"Organization Established Date, 1994-05-24\\\",\\\"Target Type, Financial Institution\\\",\\\"Secondary sanctions risk:, Ukraine-/Russia-Related Sanctions Regulations, 31 CFR 589.201 and/or 589.209\\\",\\\"Secondary sanctions risk:, See Section 11 of Executive Order 14024.\\\"],\\\"Name\\\":\\\"EXIMBANK OF RUSSIA JSC\\\",\\\"Programs\\\":[\\\"UKRAINE-EO13662\\\",\\\"RUSSIA-EO14024\\\"],\\\"Remarks\\\":[\\\"All offices worldwide\\\",\\\"for more information on directives, please visit the following link: http://www.treasury.gov/resource-center/sanctions/Programs/Pages/ukraine.aspx#directives.\\\"],\\\"SourceInfoURL\\\":\\\"https://ofac.treasury.gov/other-ofac-sanctions-lists\\\",\\\"SourceListURL\\\":\\\"https://sanctionslist.ofac.treas.gov/Home/ConsolidatedList\\\",\\\"Type\\\":\\\"Entity\\\",\\\"match\\\":0.9217391304347826,\\\"matchedName\\\":\\\"russian export import bank\\\"},{\\\"Addresses\\\":[\\\"65/1 Suschevsky Val, Moscow, 129594, RU\\\",\\\"65 Sushchevskiy val, Moscow, 129594, RU\\\"],\\\"AlternateNames\\\":[\\\"RUSSIAN REGIONAL DEVELOPMENT BANK\\\",\\\"VBRR\\\"],\\\"EntityID\\\":\\\"18298\\\",\\\"IDsOnRecord\\\":[\\\"Registration ID, 3287, RU\\\",\\\"Website, www.vbrr.ru\\\",\\\"Executive Order 13662 Directive Determination -, Subject to Directive 2\\\",\\\"Executive Order 13662 Directive Determination -, Subject to Directive 4\\\",\\\"Secondary sanctions risk:, Ukraine-/Russia-Related Sanctions Regulations, 31 CFR 589.201 and/or 589.209\\\"],\\\"Name\\\":\\\"OJSC RUSSIAN REGIONAL DEVELOPMENT BANK\\\",\\\"Programs\\\":[\\\"UKRAINE-EO13662\\\"],\\\"Remarks\\\":[\\\"For more information on directives, please visit the following link: http://www.treasury.gov/resource-center/sanctions/Programs/Pages/ukraine.aspx#directives.\\\"],\\\"SourceInfoURL\\\":\\\"https://ofac.treasury.gov/other-ofac-sanctions-lists\\\",\\\"SourceListURL\\\":\\\"https://sanctionslist.ofac.treas.gov/Home/ConsolidatedList\\\",\\\"Type\\\":\\\"Entity\\\",\\\"match\\\":0.905,\\\"matchedName\\\":\\\"russian regional development bank\\\"}],\\\"nonSDNMenuBasedSanctionsList\\\":[{\\\"Addresses\\\":[\\\"Neglinnaya St 12, Moscow, 107016, RU\\\",\\\"Moscow, RU\\\"],\\\"AlternateNames\\\":[\\\"Bank Rossi, Federal State Budgetary Institution\\\",\\\"Bank of Russia\\\",\\\"Bank of Russia, Central Bank\\\",\\\"Tsentralny Bank Rossiskoi Federatsii\\\",\\\"Central Bank of Russia\\\"],\\\"EntityID\\\":\\\"31695\\\",\\\"EntityNumber\\\":\\\"31695\\\",\\\"IDs\\\":[\\\"Registration Number, 1037700013020, RU\\\",\\\"Government Gazette Number, 00032253, RU\\\",\\\"Tax ID No., 7702235133, RU\\\",\\\"SWIFT/BIC, CBRFRUMM\\\",\\\"Website, www.cbr.ru\\\",\\\"Organization Established Date, 1990-07-13\\\",\\\"Organization Type:, Central banking\\\",\\\"Executive Order 14024 Directive Information -, For more information on directives, please visit the following link: https://home.treasury.gov/policy-issues/financial-sanctions/sanctions-programs-and-country-information/russian-harmful-foreign-activities-sanctions#directives\\\",\\\"Executive Order 14024 Directive Information, Subject to Directive 1a - As of the effective date, participation in the secondary market for ruble or non-ruble denominated bonds issued on or after the effective date by the Central Bank of the Russian Federation, the National Wealth Fund of the Russian Federation, or the Ministry of Finance of the Russian Federation is prohibited.\\\",\\\"Target Type, Government Entity\\\",\\\"Listing Date (EO 14024 Directive 1a):, 2022-02-22\\\",\\\"Effective Date (EO 14024 Directive 1a):, 2022-03-01\\\",\\\"Executive Order 14024 Directive Information, Subject to Directive 4 - any transaction involving the Central Bank of the Russian Federation, the National Wealth Fund of the Russian Federation, or the Ministry of Finance of the Russian Federation, including any transfer of assets to such entities or any foreign exchange transaction for or on behalf of such entities is prohibited.\\\"],\\\"Name\\\":\\\"Central Bank of the Russian Federation\\\",\\\"Programs\\\":[\\\"RUSSIA-EO14024\\\"],\\\"SourceInfoURL\\\":\\\"https://ofac.treasury.gov/other-ofac-sanctions-lists\\\",\\\"Type\\\":\\\"Entity\\\",\\\"match\\\":0.9326268221574344,\\\"matchedName\\\":\\\"bank of russia\\\"},{\\\"Addresses\\\":[\\\"3, Gagarinsky Pereulok, Moscow, 119034, RU\\\",\\\"3 Gagarinsky per., Moscow, 119034, RU\\\"],\\\"AlternateNames\\\":[\\\"Russian Agricultural Bank\\\",\\\"Russian Agricultural Bank Open Joint Stock Company\\\",\\\"Rosselkhozbank\\\",\\\"Russian Agricultural Bank OJSC\\\",\\\"RusAg\\\"],\\\"EntityID\\\":\\\"17014\\\",\\\"EntityNumber\\\":\\\"17014\\\",\\\"IDs\\\":[\\\"Registration Number, 1027700342890, RU\\\",\\\"Government Gazette Number, 52750822, RU\\\",\\\"Website, http://www.rshb.ru\\\",\\\"SWIFT/BIC, RUAGRUMM\\\",\\\"Executive Order 13662 Directive Determination -, Subject to Directive 1\\\",\\\"Executive Order 14024 Directive Information -, For more information on directives, please visit the following link: https://home.treasury.gov/policy-issues/financial-sanctions/sanctions-programs-and-country-information/russian-harmful-foreign-activities-sanctions#directives\\\",\\\"Executive Order 14024 Directive Information, Subject to Directive 3 - All transactions in, provision of financing for, and other dealings in new debt of longer than 14 days maturity or new equity where such new debt or new equity is issued on or after the 'Effective Date (EO 14024 Directive)' associated with this name are prohibited.\\\",\\\"Listing Date (EO 14024 Directive 3):, 2022-02-24\\\",\\\"Effective Date (EO 14024 Directive 3):, 2022-03-26\\\",\\\"Secondary sanctions risk:, Ukraine-/Russia-Related Sanctions Regulations, 31 CFR 589.201 and/or 589.209\\\"],\\\"Name\\\":\\\"Joint Stock Company Russian Agricultural Bank\\\",\\\"Programs\\\":[\\\"UKRAINE-EO13662\\\",\\\"RUSSIA-EO14024\\\"],\\\"Remarks\\\":[\\\"For more information on directives, please visit the following link: http://www.treasury.gov/resource-center/sanctions/Programs/Pages/ukraine.aspx#directives.\\\"],\\\"SourceInfoURL\\\":\\\"https://ofac.treasury.gov/other-ofac-sanctions-lists\\\",\\\"Type\\\":\\\"Entity\\\",\\\"match\\\":0.9217391304347826,\\\"matchedName\\\":\\\"russian agricultural bank\\\"}],\\\"ukConsolidatedSanctionsList\\\":[{\\\"Addresses\\\":[\\\"Rastrelli Square, 2A, Saint-Petersburg\\\"],\\\"GroupID\\\":14177,\\\"GroupType\\\":\\\"Entity\\\",\\\"LastUpdates\\\":[\\\"15/12/2023\\\"],\\\"ListedDates\\\":[\\\"22/02/2022\\\"],\\\"Names\\\":[\\\"BANK OF RUSSIA\\\",\\\"BANK ROSSIYA\\\",\\\"RUSSIA BANK\\\"],\\\"OtherInfos\\\":[\\\"(UK Sanctions List Ref):RUS0232. Financial sanctions imposed in addition to an asset freeze: Correspondent banking relationships etc. Trust services. Date trust services sanctions imposed: 21/03/2023. The prohibition on correspondent banking relationships etc. measure was imposed on 15/12/2023. (UK Statement of Reasons):Bank \\\\\\\"Rossiya\\\\\\\" is a Russian bank privately owned by elite Russian billionaires with direct links to Putin. Bank \\\\\\\"Rossiya\\\\\\\" also has important stakes in the National Media Group, which controls television stations which actively support the Russian Government's policies of destabilisation in Ukraine. Since the annexation of Crimea, Bank \\\\\\\"Rossiya\\\\\\\" has opened branches across Crimea and Sevastopol, and provided travel cards for the public to travel across the peninsula thereby supporting the integration of Crimea and Sevastopol into the Russian Federation through the financial system. Bank \\\\\\\"Rossiya\\\\\\\" has also contributed to the provision of insurance and investment throughout Crimea and Sevastopol and services to support military capability and major transport links. Bank \\\\\\\"Rossiya\\\\\\\" therefore is or has been involved in providing financial services, or making available funds, economic resources, goods or technology and engaging in, providing support for, or promoting any policy or action that could contribute to destabilising Ukraine or undermining or threatening the territorial integrity, sovereignty or independence of Ukraine. (Website):https://abr.ru/ (Type of entity):Public Joint Stock Company (PJSC) (Business Reg No):License number: 328 INN: 7831000122 OGRN: 1027800000084\\\"],\\\"PostalCodes\\\":[\\\"191124\\\"],\\\"SanctionListDates\\\":[\\\"22/02/2022\\\"],\\\"match\\\":0.9565403304178814,\\\"matchedName\\\":\\\"russia bank\\\"},{\\\"Addresses\\\":[\\\"0 Bld. 2 Presnenskaya Emb. (Moscow City, IQ-quarter Complex), Moscow\\\",\\\"3, Gagarinsky Pereulok, Moscow\\\"],\\\"Countries\\\":[\\\"Russia\\\"],\\\"GroupID\\\":15016,\\\"GroupType\\\":\\\"Entity\\\",\\\"LastUpdates\\\":[\\\"15/12/2023\\\"],\\\"ListedDates\\\":[\\\"24/03/2022\\\"],\\\"Names\\\":[\\\"JSC ROSSELKHOZBANK\\\",\\\"RUSAG\\\",\\\"RUSSIAN AGRICULTURAL BANK\\\"],\\\"OtherInfos\\\":[\\\"(UK Sanctions List Ref):RUS1073. Financial sanctions imposed in addition to an asset freeze: Dealing with transferable securities or money-market instruments. Loans and credit arrangements. Correspondent banking relationships etc. Trust services. Date trust services sanctions imposed: 21/03/2023. The prohibition on correspondent banking relationships etc. measure was imposed on 15/12/2023. (UK Statement of Reasons):RUSSIAN AGRICULTURAL BANK is a Russian bank. RUSSIAN AGRICULTURAL BANK is or has been involved in obtaining a benefit from or supporting the Government of Russia by carrying on business in the financial services sector - a sector of strategic significance to the Government of Russia. (Phone number):(1) 7 (495) 777-11-00 (2) 7 (495) 787-7-787 (3) 8 (800) 100-0-100 (Website):(1) http://www.rshb.ru/en/ (2) https://www.rshb.ru/ (Email address):office@rshb.ru\\\"],\\\"PostalCodes\\\":[\\\"123112\\\",\\\"119034\\\"],\\\"SanctionListDates\\\":[\\\"24/03/2022\\\"],\\\"match\\\":0.9217391304347826,\\\"matchedName\\\":\\\"russian agricultural bank\\\"},{\\\"Addresses\\\":[\\\"27 Kalanchevskaya str., Moscow\\\"],\\\"Countries\\\":[\\\"Russia\\\"],\\\"GroupID\\\":15017,\\\"GroupType\\\":\\\"Entity\\\",\\\"LastUpdates\\\":[\\\"15/12/2023\\\"],\\\"ListedDates\\\":[\\\"24/03/2022\\\"],\\\"Names\\\":[\\\"ALFA-BANK JSC\\\",\\\"ALFA-BANK RUSSIA\\\"],\\\"OtherInfos\\\":[\\\"(UK Sanctions List Ref):RUS1074. Financial sanctions imposed in addition to an asset freeze: Correspondent banking relationships etc. Trust services. Date trust services sanctions imposed: 21/03/2023. The prohibition on correspondent banking relationships etc. measure was imposed on 15/12/2023. (UK Statement of Reasons):Alfa-Bank JSC is a Russian bank. There are reasonable grounds to suspect that Alfa-Bank JSC is or has been involved in obtaining a benefit from or supporting the Government of Russia by carrying on business in the financial services sector - a sector of strategic significance to the Government of Russia. (Phone number):7 495 755-58-58. 7 495 78-888-78 (Website):https://alfabank.ru/ (Type of entity):Bank, Financial Services Company, JSC\\\"],\\\"PostalCodes\\\":[\\\"107078\\\"],\\\"SanctionListDates\\\":[\\\"24/03/2022\\\"],\\\"match\\\":0.9155457448285437,\\\"matchedName\\\":\\\"alfa bank russia\\\"},{\\\"Addresses\\\":[\\\"Naberezhnaja street, 34, Simferopol, The Autonomous Republic of Crimea and the city of Sevastopol\\\"],\\\"Countries\\\":[\\\"Ukraine\\\"],\\\"GroupID\\\":13078,\\\"GroupType\\\":\\\"Entity\\\",\\\"LastUpdates\\\":[\\\"21/03/2023\\\"],\\\"ListedDates\\\":[\\\"31/07/2014\\\"],\\\"Names\\\":[\\\"RUSSIAN NATIONAL COMMERCIAL BANK\\\"],\\\"OtherInfos\\\":[\\\"(UK Sanctions List Ref):RUS0193. Financial sanctions imposed in addition to an asset freeze: Trust services. Date trust services sanctions imposed: 21/03/2023. (UK Statement of Reasons):After the illegal annexation of Crimea, Russian National Commercial Bank (RNCB) became fully owned by the so-called 'Republic of Crimea'. In January 2016 became a property of Federal Agency for State Property Management also known as Rosimushchestvo. It has become the dominant player in the market, while it had no presence in Crimea before the annexation. By buying or taking over from branches of retreating banks operating in Crimea, RNBC supported materially and financially the actions of the Russian government to integrate Crimea into the Russian Federation, thus undermining Ukraine's territorial integrity. (Website):http://www.rncb.ru\\\"],\\\"PostalCodes\\\":[\\\"295000\\\"],\\\"SanctionListDates\\\":[\\\"31/12/2020\\\"],\\\"match\\\":0.906896551724138,\\\"matchedName\\\":\\\"russian national commercial bank\\\"},{\\\"Addresses\\\":[\\\"65 Sushchevskiy val, Moscow\\\"],\\\"Countries\\\":[\\\"Russia\\\"],\\\"GroupID\\\":15918,\\\"GroupType\\\":\\\"Entity\\\",\\\"LastUpdates\\\":[\\\"15/12/2023\\\"],\\\"ListedDates\\\":[\\\"19/05/2023\\\"],\\\"Names\\\":[\\\"RUSSIAN REGIONAL DEVELOPMENT BANK\\\"],\\\"OtherInfos\\\":[\\\"(UK Sanctions List Ref):RUS1860. Financial sanctions imposed in addition to an asset freeze: Correspondent banking relationships etc. Trust services. Date trust services sanctions imposed: 18/05/2023. The prohibition on correspondent banking relationships etc. measure was imposed on 15/12/2023. (UK Statement of Reasons):RUSSIAN REGIONAL DEVELOPMENT BANK is an involved person under the Russia (EU Exit) (Sanctions) Regulations 2019 because it is or has been involved in obtaining a benefit from or supporting the Government of Russia by carrying on business in a sector of strategic significance to the Government of Russia, namely the Russian financial services sector.\\\"],\\\"PostalCodes\\\":[\\\"129594\\\"],\\\"SanctionListDates\\\":[\\\"18/05/2023\\\"],\\\"match\\\":0.905,\\\"matchedName\\\":\\\"russian regional development bank\\\"}],\\\"refreshedAt\\\":\\\"2025-10-11T00:54:13.808076626Z\\\"}\"\n }\n },\n {\n id: \"4401\",\n createdAt: \"2025-09-29 15:00:45\",\n type: \"Ofac\",\n status: \"Closed\",\n contextType: \"Ofac\",\n description: \"INDIVIDUAL: ali hassan is flagged for OFAC\"\n },\n {\n id: \"4400\",\n createdAt: \"2025-09-27 03:02:34\",\n type: \"Ofac\",\n status: \"Unassigned\",\n contextType: \"Ofac\",\n description: \"BUSINESS: Randy is flagged for OFAC\"\n },\n {\n id: \"4399\",\n createdAt: \"2025-09-27 03:02:31\",\n type: \"Ofac\",\n status: \"Unassigned\",\n contextType: \"Ofac\",\n description: \"BUSINESS: test is flagged for OFAC\"\n },\n {\n id: \"4398\",\n createdAt: \"2025-09-24 10:01:58\",\n type: \"Transaction Processing Error\",\n status: \"Unassigned\",\n contextType: \"File Record\",\n description: \"Inbound WIRE for $100,000.00 can not be processed. Exception: incorrect account...\"\n },\n {\n id: \"4397\",\n createdAt: \"2025-09-22 20:33:59\",\n type: \"Dual Approval\",\n status: \"Unassigned\",\n contextType: \"Transaction\",\n description: \"Debit adjustment for $20.00 for account number 84804949\"\n },\n {\n id: \"4396\",\n createdAt: \"2025-09-22 20:33:12\",\n type: \"Transaction Monitoring\",\n status: \"Unassigned\",\n contextType: \"Transaction\",\n description: \"Transaction WIRE_INTERNATIONAL_DEBIT of $3,000.00 is flagged for velocity li...\"\n },\n {\n id: \"4395\",\n createdAt: \"2025-09-13 03:02:29\",\n type: \"Ofac\",\n status: \"Closed\",\n contextType: \"Ofac\",\n rfiStatus: \"Completed\",\n description: \"BUSINESS: test is flagged for OFAC\"\n },\n {\n id: \"4394\",\n createdAt: \"2025-09-11 07:46:28\",\n type: \"Dual Approval\",\n status: \"Closed\",\n contextType: \"Product\",\n description: \"Product 2787 is set for deactivation\"\n },\n {\n id: \"4393\",\n createdAt: \"2025-09-11 07:46:17\",\n type: \"Dual Approval\",\n status: \"Unassigned\",\n contextType: \"Product\",\n description: \"Product 2787 is set for deactivation\"\n },\n {\n id: \"4392\",\n createdAt: \"2025-09-10 14:44:46\",\n type: \"Transaction Monitoring\",\n status: \"Closed\",\n contextType: \"Transaction\",\n rfiStatus: \"Provided\",\n description: \"Transaction WIRE_DOMESTIC_CREDIT of $30,000.00 is flagged for velocity limit ...\"\n }\n]\n","import { useState, useMemo } from \"react\"\nimport { mockAlerts, type Alert } from \"../lib/mock-data/alert-data\"\nimport { type ResolveAlertFormData } from \"../lib/schemas/alert-schemas\"\n\nexport interface UseAlertDetailReturn {\n alert: Alert | undefined\n isLoading: boolean\n rfiStatus: string\n assignee: string\n handleRfiStatusChange: (status: string) => void\n handleAssigneeChange: (assignee: string) => void\n handleResolveAlert: (data: ResolveAlertFormData) => Promise<void>\n}\n\nexport const useAlertDetail = (id: string | undefined): UseAlertDetailReturn => {\n const alert = useMemo(() => mockAlerts.find(a => a.id === id), [id])\n \n const [rfiStatus, setRfiStatus] = useState(alert?.rfiStatus || \"\")\n const [assignee, setAssignee] = useState(alert?.assignee || \"Unassigned\")\n\n const handleRfiStatusChange = (newStatus: string) => {\n setRfiStatus(newStatus)\n console.log(\"RFI Status updated to:\", newStatus)\n // TODO: API call to update alert\n }\n\n const handleAssigneeChange = (newAssignee: string) => {\n setAssignee(newAssignee)\n console.log(\"Assignee updated to:\", newAssignee)\n // TODO: API call to update alert\n }\n\n const handleResolveAlert = async (data: ResolveAlertFormData) => {\n // TODO: Replace with actual API call\n console.log(\"Resolving alert with data:\", data)\n \n // Simulate API call\n await new Promise(resolve => setTimeout(resolve, 1000))\n \n // In a real implementation, this would update the backend\n // and refetch the alert data\n console.log(\"Alert resolved successfully\")\n }\n\n return {\n alert,\n isLoading: false, // Set to true when implementing real data fetching\n rfiStatus,\n assignee,\n handleRfiStatusChange,\n handleAssigneeChange,\n handleResolveAlert\n }\n}\n","import { useState, useEffect } from \"react\"\nimport { CounterpartyListItem } from \"@/lib/mock-data/counterparties-list-data\"\n\n// Mock API responses - in production, these would be fetched from real APIs\nconst mockProducts: Record<string, string> = {\n \"prod-001\": \"Business Banking Pro\",\n \"prod-002\": \"Premium Banking\",\n \"prod-003\": \"Business Banking Plus\"\n}\n\nconst mockBusinesses: Record<string, string> = {\n \"bus-001\": \"Tech Solutions LLC\",\n \"bus-002\": \"Digital Ventures\"\n}\n\nconst mockIndividuals: Record<string, string> = {\n \"ind-001\": \"Cloud Services Corp\",\n \"ind-002\": \"Wealth Management\"\n}\n\nexport interface CounterpartyWithEntity extends CounterpartyListItem {\n associatedEntity: string\n entityType: \"product\" | \"business\" | \"individual\" | \"account\" | null\n}\n\nexport const useCounterpartyEntity = (counterparties: CounterpartyListItem[]) => {\n const [enrichedCounterparties, setEnrichedCounterparties] = useState<CounterpartyWithEntity[]>([])\n const [loading, setLoading] = useState(true)\n\n useEffect(() => {\n const fetchEntityNames = async () => {\n setLoading(true)\n \n const enriched = await Promise.all(\n counterparties.map(async (counterparty) => {\n let associatedEntity = \"\"\n let entityType: \"product\" | \"business\" | \"individual\" | \"account\" | null = null\n\n // Determine which ID exists and fetch the corresponding name\n if (counterparty.productId) {\n // In production: const response = await fetch(`/products/${counterparty.productId}`)\n associatedEntity = mockProducts[counterparty.productId] || counterparty.productId\n entityType = \"product\"\n } else if (counterparty.businessId) {\n // In production: const response = await fetch(`/businesses/${counterparty.businessId}`)\n associatedEntity = mockBusinesses[counterparty.businessId] || counterparty.businessId\n entityType = \"business\"\n } else if (counterparty.individualId) {\n // In production: const response = await fetch(`/individuals/${counterparty.individualId}`)\n associatedEntity = mockIndividuals[counterparty.individualId] || counterparty.individualId\n entityType = \"individual\"\n } else if (counterparty.accountNumber) {\n // For account numbers, use the number itself as the display name\n associatedEntity = counterparty.accountNumber\n entityType = \"account\"\n }\n\n return {\n ...counterparty,\n associatedEntity,\n entityType\n }\n })\n )\n\n setEnrichedCounterparties(enriched)\n setLoading(false)\n }\n\n fetchEntityNames()\n }, [counterparties])\n\n return { counterparties: enrichedCounterparties, loading }\n}\n","export interface BusinessAccount {\n id: string\n name: string\n number: string\n type: \"checking\" | \"savings\" | \"zero-balance\" | \"funding\"\n status: \"active\" | \"inactive\"\n settledBalance: number\n pendingCredits: number\n pendingDebits: number\n fundsOnHold: number\n accountBalance: number\n availableBalance: number\n currency: string\n institution: string\n routingNumber: string\n country: string\n customerName: string\n customerId: string\n customerType: \"business\" | \"individual\"\n created: string\n modified: string\n}\n\nexport const mockBusinessAccounts: BusinessAccount[] = [\n {\n id: \"acc-001\",\n name: \"Primary Operating Account\",\n number: \"1234567890\",\n type: \"checking\",\n status: \"active\",\n settledBalance: 127450.00,\n pendingCredits: 0.00,\n pendingDebits: 2000.00,\n fundsOnHold: 0.00,\n accountBalance: 125450.00,\n availableBalance: 123450.00,\n currency: \"USD\",\n institution: \"Chase Bank\",\n routingNumber: \"021000021\",\n country: \"US\",\n customerName: \"Acme Corporation\",\n customerId: \"8112488\",\n customerType: \"business\",\n created: \"2024-01-15\",\n modified: \"2024-11-05\"\n },\n {\n id: \"acc-002\",\n name: \"Business Savings\",\n number: \"9876544567\",\n type: \"savings\",\n status: \"active\",\n settledBalance: 45230.00,\n pendingCredits: 0.00,\n pendingDebits: 0.00,\n fundsOnHold: 0.00,\n accountBalance: 45230.00,\n availableBalance: 45230.00,\n currency: \"USD\",\n institution: \"Chase Bank\",\n routingNumber: \"021000021\",\n country: \"US\",\n customerName: \"Acme Corporation\",\n customerId: \"8112488\",\n customerType: \"business\",\n created: \"2024-02-20\",\n modified: \"2024-11-01\"\n },\n {\n id: \"acc-003\",\n name: \"Payroll Account\",\n number: \"5555551234\",\n type: \"checking\",\n status: \"active\",\n settledBalance: 80000.00,\n pendingCredits: 1900.00,\n pendingDebits: 3000.00,\n fundsOnHold: 0.00,\n accountBalance: 78900.00,\n availableBalance: 75900.00,\n currency: \"USD\",\n institution: \"Wells Fargo\",\n routingNumber: \"121000248\",\n country: \"US\",\n customerName: \"Acme Corporation\",\n customerId: \"8112488\",\n customerType: \"business\",\n created: \"2024-03-10\",\n modified: \"2024-11-07\"\n },\n {\n id: \"acc-004\",\n name: \"Merchant Services Account\",\n number: \"4444445678\",\n type: \"funding\",\n status: \"active\",\n settledBalance: 230000.00,\n pendingCredits: 4567.89,\n pendingDebits: 0.00,\n fundsOnHold: 4567.89,\n accountBalance: 234567.89,\n availableBalance: 230000.00,\n currency: \"USD\",\n institution: \"Bank of America\",\n routingNumber: \"026009593\",\n country: \"US\",\n customerName: \"TechStart Inc\",\n customerId: \"9087654\",\n customerType: \"business\",\n created: \"2024-01-05\",\n modified: \"2024-11-06\"\n },\n {\n id: \"acc-005\",\n name: \"Reserve Account\",\n number: \"7777779012\",\n type: \"savings\",\n status: \"active\",\n settledBalance: 500000.00,\n pendingCredits: 0.00,\n pendingDebits: 0.00,\n fundsOnHold: 0.00,\n accountBalance: 500000.00,\n availableBalance: 500000.00,\n currency: \"USD\",\n institution: \"Citibank\",\n routingNumber: \"021000089\",\n country: \"US\",\n customerName: \"Global Innovations LLC\",\n customerId: \"7654321\",\n customerType: \"business\",\n created: \"2023-11-20\",\n modified: \"2024-10-30\"\n },\n {\n id: \"acc-006\",\n name: \"Operating Account\",\n number: \"3333333456\",\n type: \"zero-balance\",\n status: \"inactive\",\n settledBalance: 0.00,\n pendingCredits: 0.00,\n pendingDebits: 0.00,\n fundsOnHold: 0.00,\n accountBalance: 0.00,\n availableBalance: 0.00,\n currency: \"USD\",\n institution: \"Wells Fargo\",\n routingNumber: \"121000248\",\n country: \"US\",\n customerName: \"StartUp Co\",\n customerId: \"5432109\",\n customerType: \"business\",\n created: \"2023-06-15\",\n modified: \"2024-09-20\"\n },\n {\n id: \"acc-007\",\n name: \"Operations Checking\",\n number: \"8888887654\",\n type: \"checking\",\n status: \"active\",\n settledBalance: 67890.50,\n pendingCredits: 1200.00,\n pendingDebits: 500.00,\n fundsOnHold: 0.00,\n accountBalance: 68590.50,\n availableBalance: 68090.50,\n currency: \"USD\",\n institution: \"US Bank\",\n routingNumber: \"091000019\",\n country: \"US\",\n customerName: \"Horizon Manufacturing\",\n customerId: \"1122334\",\n customerType: \"business\",\n created: \"2024-04-12\",\n modified: \"2024-11-08\"\n },\n {\n id: \"acc-008\",\n name: \"Emergency Fund\",\n number: \"2222228901\",\n type: \"savings\",\n status: \"active\",\n settledBalance: 150000.00,\n pendingCredits: 0.00,\n pendingDebits: 0.00,\n fundsOnHold: 0.00,\n accountBalance: 150000.00,\n availableBalance: 150000.00,\n currency: \"USD\",\n institution: \"PNC Bank\",\n routingNumber: \"043000096\",\n country: \"US\",\n customerName: \"Sarah Mitchell\",\n customerId: \"ind-001\",\n customerType: \"individual\",\n created: \"2024-02-01\",\n modified: \"2024-10-15\"\n },\n {\n id: \"acc-009\",\n name: \"Vendor Payments\",\n number: \"6666665432\",\n type: \"checking\",\n status: \"active\",\n settledBalance: 89500.00,\n pendingCredits: 3400.00,\n pendingDebits: 12000.00,\n fundsOnHold: 5000.00,\n accountBalance: 80900.00,\n availableBalance: 75900.00,\n currency: \"USD\",\n institution: \"TD Bank\",\n routingNumber: \"031101266\",\n country: \"US\",\n customerName: \"Metro Distributors Inc\",\n customerId: \"2233445\",\n customerType: \"business\",\n created: \"2024-05-20\",\n modified: \"2024-11-10\"\n },\n {\n id: \"acc-010\",\n name: \"Client Escrow\",\n number: \"1111119876\",\n type: \"funding\",\n status: \"active\",\n settledBalance: 425000.00,\n pendingCredits: 75000.00,\n pendingDebits: 0.00,\n fundsOnHold: 75000.00,\n accountBalance: 500000.00,\n availableBalance: 425000.00,\n currency: \"USD\",\n institution: \"First Republic\",\n routingNumber: \"321081669\",\n country: \"US\",\n customerName: \"Legal Partners LLP\",\n customerId: \"3344556\",\n customerType: \"business\",\n created: \"2023-12-10\",\n modified: \"2024-11-05\"\n },\n {\n id: \"acc-011\",\n name: \"Tax Reserve\",\n number: \"9999993210\",\n type: \"savings\",\n status: \"active\",\n settledBalance: 200000.00,\n pendingCredits: 0.00,\n pendingDebits: 0.00,\n fundsOnHold: 0.00,\n accountBalance: 200000.00,\n availableBalance: 200000.00,\n currency: \"USD\",\n institution: \"Capital One\",\n routingNumber: \"056073573\",\n country: \"US\",\n customerName: \"Acme Corporation\",\n customerId: \"8112488\",\n customerType: \"business\",\n created: \"2024-01-20\",\n modified: \"2024-09-30\"\n },\n {\n id: \"acc-012\",\n name: \"Personal Checking\",\n number: \"4545456789\",\n type: \"checking\",\n status: \"active\",\n settledBalance: 15670.25,\n pendingCredits: 2500.00,\n pendingDebits: 340.00,\n fundsOnHold: 0.00,\n accountBalance: 17830.25,\n availableBalance: 17490.25,\n currency: \"USD\",\n institution: \"Chase Bank\",\n routingNumber: \"021000021\",\n country: \"US\",\n customerName: \"James Rodriguez\",\n customerId: \"ind-002\",\n customerType: \"individual\",\n created: \"2024-06-15\",\n modified: \"2024-11-12\"\n },\n {\n id: \"acc-013\",\n name: \"Concentration Account\",\n number: \"7878781234\",\n type: \"zero-balance\",\n status: \"active\",\n settledBalance: 0.00,\n pendingCredits: 0.00,\n pendingDebits: 0.00,\n fundsOnHold: 0.00,\n accountBalance: 0.00,\n availableBalance: 0.00,\n currency: \"USD\",\n institution: \"Bank of America\",\n routingNumber: \"026009593\",\n country: \"US\",\n customerName: \"TechStart Inc\",\n customerId: \"9087654\",\n customerType: \"business\",\n created: \"2024-03-25\",\n modified: \"2024-10-20\"\n },\n {\n id: \"acc-014\",\n name: \"Investment Holdings\",\n number: \"5656564321\",\n type: \"savings\",\n status: \"active\",\n settledBalance: 750000.00,\n pendingCredits: 25000.00,\n pendingDebits: 0.00,\n fundsOnHold: 0.00,\n accountBalance: 775000.00,\n availableBalance: 775000.00,\n currency: \"USD\",\n institution: \"Morgan Stanley\",\n routingNumber: \"056073573\",\n country: \"US\",\n customerName: \"Global Innovations LLC\",\n customerId: \"7654321\",\n customerType: \"business\",\n created: \"2023-08-15\",\n modified: \"2024-11-01\"\n },\n {\n id: \"acc-015\",\n name: \"Disbursement Account\",\n number: \"3434345678\",\n type: \"checking\",\n status: \"active\",\n settledBalance: 45000.00,\n pendingCredits: 0.00,\n pendingDebits: 8900.00,\n fundsOnHold: 0.00,\n accountBalance: 36100.00,\n availableBalance: 36100.00,\n currency: \"USD\",\n institution: \"Regions Bank\",\n routingNumber: \"062005690\",\n country: \"US\",\n customerName: \"Healthcare Solutions Corp\",\n customerId: \"4455667\",\n customerType: \"business\",\n created: \"2024-07-10\",\n modified: \"2024-11-09\"\n },\n {\n id: \"acc-016\",\n name: \"Settlement Account\",\n number: \"1212127890\",\n type: \"funding\",\n status: \"active\",\n settledBalance: 320000.00,\n pendingCredits: 45000.00,\n pendingDebits: 12000.00,\n fundsOnHold: 10000.00,\n accountBalance: 353000.00,\n availableBalance: 298000.00,\n currency: \"USD\",\n institution: \"Fifth Third Bank\",\n routingNumber: \"042000314\",\n country: \"US\",\n customerName: \"Retail Dynamics LLC\",\n customerId: \"5566778\",\n customerType: \"business\",\n created: \"2024-04-05\",\n modified: \"2024-11-11\"\n }\n]\n","import { useState, useEffect, useMemo, useCallback } from \"react\"\nimport { useNavigate, useSearchParams } from \"react-router-dom\"\nimport { DataTable, DataTableColumn } from \"@/components/ui/data-table\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { AccountTypeBadge } from \"@/components/ui/account-type-badge\"\nimport { mockBusinessAccounts, BusinessAccount } from \"@/lib/mock-data/business-account-data\"\nimport { Link } from \"react-router-dom\"\nimport { formatCurrency } from \"@/lib/utils\"\nimport { AccountsView } from \"@/components/account/AccountsView\"\nimport { AccountFilters } from \"@/components/account/AccountFiltersSheet\"\n\nconst defaultFilters: AccountFilters = {\n accountNumber: \"\"\n}\n\nconst Accounts = () => {\n const navigate = useNavigate()\n const [searchParams] = useSearchParams()\n const [sortBy, setSortBy] = useState<string>(\"created\")\n const [sortDirection, setSortDirection] = useState<\"asc\" | \"desc\">(\"desc\")\n const [currentPage, setCurrentPage] = useState(1)\n const [filteredAccounts, setFilteredAccounts] = useState<BusinessAccount[]>(mockBusinessAccounts)\n const [filters, setFilters] = useState<AccountFilters>(defaultFilters)\n const [isLoading, setIsLoading] = useState(true)\n const pageSize = 10\n\n // Simulate initial loading\n useEffect(() => {\n const timer = setTimeout(() => {\n setIsLoading(false)\n }, 1000)\n return () => clearTimeout(timer)\n }, [])\n\n // Apply URL params on mount\n useEffect(() => {\n const customerId = searchParams.get('customerId')\n \n let filtered = mockBusinessAccounts\n\n if (customerId) {\n filtered = filtered.filter(account => account.customerId === customerId)\n }\n\n setFilteredAccounts(filtered)\n }, [searchParams])\n\n const handleFilterChange = useCallback((field: keyof AccountFilters, value: string) => {\n setFilters(prev => ({ ...prev, [field]: value }))\n }, [])\n\n const handleApplyFilters = useCallback(() => {\n let filtered = mockBusinessAccounts\n\n if (filters.accountNumber) {\n filtered = filtered.filter(account => \n account.number.toLowerCase().includes(filters.accountNumber.toLowerCase())\n )\n }\n\n // Also apply URL params\n const customerId = searchParams.get('customerId')\n if (customerId) {\n filtered = filtered.filter(account => account.customerId === customerId)\n }\n\n setFilteredAccounts(filtered)\n setCurrentPage(1)\n }, [filters, searchParams])\n\n const handleResetFilters = useCallback(() => {\n setFilters(defaultFilters)\n \n // Reset but still respect URL params\n const customerId = searchParams.get('customerId')\n let filtered = mockBusinessAccounts\n if (customerId) {\n filtered = filtered.filter(account => account.customerId === customerId)\n }\n \n setFilteredAccounts(filtered)\n setCurrentPage(1)\n }, [searchParams])\n\n const handleSort = useCallback((key: string) => {\n setSortBy(prev => {\n if (prev === key) {\n setSortDirection(d => d === \"asc\" ? \"desc\" : \"asc\")\n return prev\n }\n setSortDirection(\"asc\")\n return key\n })\n }, [])\n\n const handleRowClick = useCallback((account: BusinessAccount) => {\n navigate(`/accounts/${account.id}`)\n }, [navigate])\n\n const hideBalanceColumns = true // Set to true to hide balance columns\n\n const columns: DataTableColumn<BusinessAccount>[] = useMemo(() => {\n const baseColumns: DataTableColumn<BusinessAccount>[] = [\n {\n key: \"number\",\n title: \"Account Number\",\n sortable: true,\n width: \"140px\",\n },\n {\n key: \"type\",\n title: \"Type\",\n sortable: true,\n width: \"100px\",\n render: (value, row) => (\n <AccountTypeBadge type={row.type as \"checking\" | \"savings\" | \"zero-balance\" | \"funding\"} />\n ),\n },\n {\n key: \"name\",\n title: \"Account Name\",\n sortable: true,\n width: \"180px\",\n },\n {\n key: \"customerName\",\n title: \"Customer Name\",\n sortable: true,\n width: \"160px\",\n render: (value, row) => {\n const customerPath = row.customerType === \"business\" \n ? `/business/${row.customerId}` \n : `/individual/${row.customerId}`\n \n return (\n <Link \n to={customerPath} \n className=\"text-primary hover:underline\"\n onClick={(e) => e.stopPropagation()}\n >\n {value as string}\n </Link>\n )\n },\n },\n ]\n\n const balanceColumns: DataTableColumn<BusinessAccount>[] = hideBalanceColumns ? [] : [\n {\n key: \"accountBalance\",\n title: \"Account Balance\",\n sortable: true,\n align: \"right\" as const,\n width: \"140px\",\n render: (value) => formatCurrency(value as number),\n },\n {\n key: \"availableBalance\",\n title: \"Available Balance\",\n sortable: true,\n align: \"right\" as const,\n width: \"140px\",\n render: (value) => formatCurrency(value as number),\n },\n ]\n\n const endColumns: DataTableColumn<BusinessAccount>[] = [\n {\n key: \"status\",\n title: \"Status\",\n sortable: true,\n width: \"100px\",\n render: (value) => (\n <Badge variant={value === \"active\" ? \"default\" : \"secondary\"}>\n {(value as string).toUpperCase()}\n </Badge>\n ),\n },\n {\n key: \"created\",\n title: \"Create Date\",\n sortable: true,\n width: \"120px\",\n },\n ]\n\n return [...baseColumns, ...balanceColumns, ...endColumns]\n }, [hideBalanceColumns])\n\n // Calculate pagination\n const paginatedData = useMemo(() => {\n const startIndex = (currentPage - 1) * pageSize\n const endIndex = startIndex + pageSize\n return filteredAccounts.slice(startIndex, endIndex)\n }, [filteredAccounts, currentPage, pageSize])\n\n const table = useMemo(() => (\n <DataTable\n columns={columns}\n data={paginatedData}\n sortBy={sortBy}\n sortDirection={sortDirection}\n onSort={handleSort}\n onRowClick={handleRowClick}\n pagination={{\n currentPage,\n pageSize,\n totalItems: filteredAccounts.length,\n onPageChange: setCurrentPage\n }}\n />\n ), [columns, paginatedData, sortBy, sortDirection, handleSort, handleRowClick, currentPage, pageSize, filteredAccounts.length])\n\n const isEmpty = filteredAccounts.length === 0\n const hasActiveFilters = filters.accountNumber.trim() !== \"\"\n\n return (\n <AccountsView\n table={table}\n filters={filters}\n onFilterChange={handleFilterChange}\n onResetFilters={handleResetFilters}\n onApplyFilters={handleApplyFilters}\n isLoading={isLoading}\n isEmpty={isEmpty}\n hasActiveFilters={hasActiveFilters}\n hideBalanceColumns={hideBalanceColumns}\n />\n )\n}\n\nexport default Accounts\n","export interface AccountFee {\n id: string\n feeType: string\n transactionType: string\n transactionGroup: string\n feeAmount: number\n chargingAccount: string\n settlementAccount: string\n accountNumber: string\n}\n\nexport const mockAccountFees: AccountFee[] = [\n {\n id: \"fee-001\",\n feeType: \"Wire Transfer Fee\",\n transactionType: \"Outbound Wire\",\n transactionGroup: \"Wire\",\n feeAmount: 25.00,\n chargingAccount: \"1234567890\",\n settlementAccount: \"9876544567\",\n accountNumber: \"1234567890\"\n },\n {\n id: \"fee-002\",\n feeType: \"ACH Origination Fee\",\n transactionType: \"ACH Credit\",\n transactionGroup: \"ACH\",\n feeAmount: 0.50,\n chargingAccount: \"1234567890\",\n settlementAccount: \"9876544567\",\n accountNumber: \"1234567890\"\n },\n {\n id: \"fee-003\",\n feeType: \"ACH Return Fee\",\n transactionType: \"ACH Return\",\n transactionGroup: \"ACH\",\n feeAmount: 5.00,\n chargingAccount: \"1234567890\",\n settlementAccount: \"9876544567\",\n accountNumber: \"1234567890\"\n },\n {\n id: \"fee-004\",\n feeType: \"Monthly Maintenance\",\n transactionType: \"Account Fee\",\n transactionGroup: \"Maintenance\",\n feeAmount: 15.00,\n chargingAccount: \"1234567890\",\n settlementAccount: \"9876544567\",\n accountNumber: \"1234567890\"\n },\n {\n id: \"fee-005\",\n feeType: \"Overdraft Fee\",\n transactionType: \"Overdraft\",\n transactionGroup: \"Penalty\",\n feeAmount: 35.00,\n chargingAccount: \"1234567890\",\n settlementAccount: \"9876544567\",\n accountNumber: \"1234567890\"\n },\n {\n id: \"fee-006\",\n feeType: \"International Wire Fee\",\n transactionType: \"Outbound Wire Intl\",\n transactionGroup: \"Wire\",\n feeAmount: 45.00,\n chargingAccount: \"1234567890\",\n settlementAccount: \"9876544567\",\n accountNumber: \"1234567890\"\n },\n {\n id: \"fee-007\",\n feeType: \"Stop Payment Fee\",\n transactionType: \"Stop Payment\",\n transactionGroup: \"Service\",\n feeAmount: 30.00,\n chargingAccount: \"1234567890\",\n settlementAccount: \"9876544567\",\n accountNumber: \"1234567890\"\n },\n {\n id: \"fee-008\",\n feeType: \"Check Processing Fee\",\n transactionType: \"Check Deposit\",\n transactionGroup: \"Check\",\n feeAmount: 1.50,\n chargingAccount: \"1234567890\",\n settlementAccount: \"9876544567\",\n accountNumber: \"1234567890\"\n },\n {\n id: \"fee-009\",\n feeType: \"Statement Fee\",\n transactionType: \"Paper Statement\",\n transactionGroup: \"Service\",\n feeAmount: 5.00,\n chargingAccount: \"1234567890\",\n settlementAccount: \"9876544567\",\n accountNumber: \"1234567890\"\n },\n {\n id: \"fee-010\",\n feeType: \"Same Day ACH Fee\",\n transactionType: \"ACH Same Day\",\n transactionGroup: \"ACH\",\n feeAmount: 2.50,\n chargingAccount: \"1234567890\",\n settlementAccount: \"9876544567\",\n accountNumber: \"1234567890\"\n },\n {\n id: \"fee-011\",\n feeType: \"Incoming Wire Fee\",\n transactionType: \"Inbound Wire\",\n transactionGroup: \"Wire\",\n feeAmount: 15.00,\n chargingAccount: \"1234567890\",\n settlementAccount: \"9876544567\",\n accountNumber: \"1234567890\"\n },\n {\n id: \"fee-012\",\n feeType: \"NSF Fee\",\n transactionType: \"NSF Return\",\n transactionGroup: \"Penalty\",\n feeAmount: 35.00,\n chargingAccount: \"1234567890\",\n settlementAccount: \"9876544567\",\n accountNumber: \"1234567890\"\n },\n {\n id: \"fee-013\",\n feeType: \"Account Analysis Fee\",\n transactionType: \"Analysis\",\n transactionGroup: \"Service\",\n feeAmount: 25.00,\n chargingAccount: \"1234567890\",\n settlementAccount: \"9876544567\",\n accountNumber: \"1234567890\"\n },\n {\n id: \"fee-014\",\n feeType: \"Positive Pay Fee\",\n transactionType: \"Positive Pay\",\n transactionGroup: \"Service\",\n feeAmount: 50.00,\n chargingAccount: \"1234567890\",\n settlementAccount: \"9876544567\",\n accountNumber: \"1234567890\"\n },\n {\n id: \"fee-015\",\n feeType: \"ACH Batch Fee\",\n transactionType: \"ACH Batch\",\n transactionGroup: \"ACH\",\n feeAmount: 10.00,\n chargingAccount: \"1234567890\",\n settlementAccount: \"9876544567\",\n accountNumber: \"1234567890\"\n }\n]\n","import { useState, useCallback, useMemo, useEffect } from \"react\"\nimport { useParams, useNavigate } from \"react-router-dom\"\nimport { mockBusinessAccounts } from \"@/lib/mock-data/business-account-data\"\nimport { mockAccountFees } from \"@/lib/mock-data/account-fee-data\"\nimport { useFormWithEditState } from \"@/hooks/useFormWithEditState\"\nimport { z } from \"zod\"\nimport { AccountDetailView, AccountFormValues, SelectOption } from \"@/components/account/AccountDetailView\"\nimport { DataTable, DataTableColumn } from \"@/components/ui/data-table\"\nimport { formatCurrency } from \"@/lib/utils\"\n\nconst accountInfoSchema = z.object({\n accountName: z.string().trim().min(1, \"Account name is required\").max(100, \"Account name must be less than 100 characters\"),\n canAcceptSweep: z.enum([\"Yes\", \"No\"]),\n fundingAccountNumber: z.string().trim().max(50, \"Funding account number must be less than 50 characters\").optional(),\n sweepAccountNumber: z.string().trim().max(50, \"Sweep account number must be less than 50 characters\").optional(),\n})\n\nconst AccountDetail = () => {\n const { id } = useParams()\n const navigate = useNavigate()\n const [isLoading, setIsLoading] = useState(true)\n \n // Get account data from mock data\n const account = mockBusinessAccounts.find(acc => acc.id === id)\n \n // Status management state\n const [currentStatus, setCurrentStatus] = useState(account?.status || \"ACTIVE\")\n\n // Simulate loading\n useEffect(() => {\n const timer = setTimeout(() => {\n setIsLoading(false)\n }, 1000)\n return () => clearTimeout(timer)\n }, [])\n \n // Dropdown options\n const statusOptions: SelectOption[] = useMemo(() => [\n { value: \"ACTIVE\", label: \"Active\" },\n { value: \"INACTIVE\", label: \"Inactive\" },\n { value: \"SUSPENDED\", label: \"Suspended\" },\n { value: \"PENDING\", label: \"Pending\" }\n ], [])\n\n const canAcceptSweepOptions: SelectOption[] = useMemo(() => [\n { value: \"Yes\", label: \"Yes\" },\n { value: \"No\", label: \"No\" }\n ], [])\n \n // Form for editable account fields\n const form = useFormWithEditState<AccountFormValues>({\n schema: accountInfoSchema as z.ZodType<AccountFormValues>,\n defaultValues: {\n accountName: account?.name || \"\",\n canAcceptSweep: \"No\",\n fundingAccountNumber: \"\",\n sweepAccountNumber: \"\",\n },\n initialEditing: false,\n })\n\n // Get fees for this account\n const accountFees = useMemo(() => \n mockAccountFees.filter(fee => fee.accountNumber === account?.number),\n [account?.number]\n )\n\n // Fees table columns\n const feeColumns: DataTableColumn<typeof mockAccountFees[0]>[] = useMemo(() => [\n { key: \"id\", title: \"ID\", sortable: true, width: \"80px\" },\n { key: \"feeType\", title: \"Fee Type\", sortable: true, width: \"160px\" },\n { key: \"transactionType\", title: \"Transaction Type\", sortable: true, width: \"140px\" },\n { key: \"transactionGroup\", title: \"Transaction Group\", sortable: true, width: \"130px\" },\n { \n key: \"feeAmount\", \n title: \"Fee Amount\", \n sortable: true,\n render: (_value, fee) => formatCurrency(fee.feeAmount),\n align: \"right\",\n width: \"100px\"\n },\n { key: \"chargingAccount\", title: \"Charging Account\", sortable: true, width: \"130px\" },\n { key: \"settlementAccount\", title: \"Settlement Account\", sortable: true, width: \"140px\" },\n ], [])\n\n // Memoized fees table\n const feesTable = useMemo(() => (\n <DataTable\n data={accountFees}\n columns={feeColumns}\n emptyMessage=\"No fees configured for this account\"\n />\n ), [accountFees, feeColumns])\n\n // Navigation callbacks\n const handleNavigateCustomer = useCallback(() => {\n if (account) {\n const customerPath = account.customerType === \"business\"\n ? `/business/${account.customerId}` \n : `/individual/${account.customerId}`\n navigate(customerPath)\n }\n }, [navigate, account])\n\n const handleNavigateCounterparty = useCallback(() => {\n if (account) {\n navigate(`/counterparty?customerId=${account.customerId}&customerType=${account.customerType}`)\n }\n }, [navigate, account])\n\n const handleNavigateLimits = useCallback(() => {\n console.log(\"Navigate to limits\")\n }, [])\n\n const handleNavigateTransactions = useCallback(() => {\n if (account) {\n navigate(`/transactions/history?accountId=${account.id}`)\n }\n }, [navigate, account])\n\n const handleNavigateProduct = useCallback(() => {\n if (account) {\n navigate(`/products/${account.institution}`)\n }\n }, [navigate, account])\n\n const handleStatusChange = useCallback((newStatus: string) => {\n setCurrentStatus(newStatus)\n }, [])\n\n const handleAddFee = useCallback(() => {\n console.log(\"Add fee clicked\")\n // TODO: Open add fee dialog\n }, [])\n\n const handleCreateTransaction = useCallback(() => {\n if (account) {\n navigate(`/transactions/new?accountId=${account.id}`)\n }\n }, [navigate, account])\n\n // Not found state\n if (!account) {\n return (\n <AccountDetailView\n account={null as any}\n currentStatus=\"\"\n onStatusChange={() => {}}\n statusOptions={statusOptions}\n canAcceptSweepOptions={canAcceptSweepOptions}\n form={form}\n onNavigateCustomer={() => {}}\n onNavigateCounterparty={() => {}}\n onNavigateLimits={() => {}}\n onNavigateTransactions={() => {}}\n error=\"The account could not be found.\"\n />\n )\n }\n\n // Hide timeline for specific accounts\n const hideTimeline = account.number === \"1234567890\"\n\n // Fee count for header badge\n const feeCount = accountFees.length\n\n return (\n <AccountDetailView\n account={account}\n currentStatus={currentStatus}\n onStatusChange={handleStatusChange}\n statusOptions={statusOptions}\n canAcceptSweepOptions={canAcceptSweepOptions}\n form={form}\n onNavigateCustomer={handleNavigateCustomer}\n onNavigateCounterparty={handleNavigateCounterparty}\n onNavigateLimits={handleNavigateLimits}\n onNavigateTransactions={handleNavigateTransactions}\n onNavigateProduct={handleNavigateProduct}\n hideTimeline={hideTimeline}\n feesTable={feesTable}\n feeCount={feeCount}\n isLoading={isLoading}\n onAddFee={handleAddFee}\n onCreateTransaction={handleCreateTransaction}\n />\n )\n}\n\nexport default AccountDetail\n","import { useState } from \"react\"\nimport { useParams, useNavigate } from \"react-router-dom\"\nimport { PageLayout } from \"@/components/ui/page-layout\"\nimport { Button } from \"@/components/ui/button\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { useAlertDetail } from \"@/hooks/useAlertDetail\"\nimport { AlertDetailRouter } from \"@/components/alerts/AlertDetailRouter\"\nimport { AlertHeaderControls } from \"@/components/alerts/AlertHeaderControls\"\nimport { ResolveAlertDialog } from \"@/components/alerts/ResolveAlertDialog\"\nimport { getTypeBadgeVariant } from \"@/lib/utils/alert-utils\"\n\nconst AlertDetail = () => {\n const { id } = useParams()\n const navigate = useNavigate()\n const [resolveDialogOpen, setResolveDialogOpen] = useState(false)\n \n const {\n alert,\n rfiStatus,\n assignee,\n handleRfiStatusChange,\n handleAssigneeChange,\n handleResolveAlert\n } = useAlertDetail(id)\n \n if (!alert) {\n return (\n <div className=\"container mx-auto px-4 py-8\">\n <div className=\"text-center\">\n <h1 className=\"text-2xl font-bold mb-2\">Alert Not Found</h1>\n <p className=\"text-muted-foreground mb-4\">The alert #{id} could not be found.</p>\n <Button onClick={() => navigate(\"/alerts\")}>\n Back to Alerts\n </Button>\n </div>\n </div>\n )\n }\n\n return (\n <PageLayout \n title={\n <div className=\"flex items-center gap-3\">\n <span>Alert #{alert.id}</span>\n <Badge variant={getTypeBadgeVariant(alert.type)}>{alert.type}</Badge>\n </div>\n }\n maxWidth=\"full\"\n headerContent={\n <AlertHeaderControls\n status={alert.status}\n assignee={assignee}\n rfiStatus={rfiStatus}\n onAssigneeChange={handleAssigneeChange}\n onRfiStatusChange={handleRfiStatusChange}\n />\n }\n actions={[\n {\n label: \"Resolve Alert\",\n variant: \"default\",\n onClick: () => setResolveDialogOpen(true)\n }\n ]}\n >\n <AlertDetailRouter alert={alert} />\n \n <ResolveAlertDialog\n alertId={alert.id}\n open={resolveDialogOpen}\n onOpenChange={setResolveDialogOpen}\n onResolve={handleResolveAlert}\n />\n </PageLayout>\n )\n}\n\nexport default AlertDetail\n","import { useState } from \"react\"\nimport { useNavigate } from \"react-router-dom\"\nimport { PageLayout } from \"@/components/ui/page-layout\"\nimport { Button } from \"@/components/ui/button\"\nimport { Filter, ChevronLeft, ChevronRight } from \"lucide-react\"\nimport { Sheet, SheetContent, SheetHeader, SheetTitle, SheetTrigger, SheetFooter } from \"@/components/ui/sheet\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { mockAlerts, Alert } from \"@/lib/mock-data/alert-data\"\nimport { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { cn } from \"@/lib/utils\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\"\n\nconst Alerts = () => {\n const navigate = useNavigate()\n const [filters, setFilters] = useState({\n alertId: \"\",\n contextId: \"\",\n contextType: \"\",\n alertType: \"\",\n alertStatus: \"\",\n assignee: \"\",\n rfiStatus: \"\",\n startDate: \"\",\n endDate: \"\"\n })\n\n const [filteredAlerts, setFilteredAlerts] = useState<Alert[]>(mockAlerts)\n const [currentPage, setCurrentPage] = useState(1)\n const [rowsPerPage, setRowsPerPage] = useState(100)\n\n const handleFilterChange = (field: string, value: string) => {\n setFilters(prev => ({ ...prev, [field]: value }))\n }\n\n const applyFilters = () => {\n let filtered = mockAlerts\n\n if (filters.alertId) {\n filtered = filtered.filter(alert => alert.id.includes(filters.alertId))\n }\n if (filters.alertStatus) {\n filtered = filtered.filter(alert => alert.status === filters.alertStatus)\n }\n if (filters.alertType) {\n filtered = filtered.filter(alert => alert.type === filters.alertType)\n }\n if (filters.contextType) {\n filtered = filtered.filter(alert => alert.contextType === filters.contextType)\n }\n if (filters.rfiStatus) {\n filtered = filtered.filter(alert => alert.rfiStatus === filters.rfiStatus)\n }\n\n setFilteredAlerts(filtered)\n setCurrentPage(1) // Reset to first page when applying filters\n }\n\n const resetFilters = () => {\n setFilters({\n alertId: \"\",\n contextId: \"\",\n contextType: \"\",\n alertType: \"\",\n alertStatus: \"\",\n assignee: \"\",\n rfiStatus: \"\",\n startDate: \"\",\n endDate: \"\"\n })\n setFilteredAlerts(mockAlerts)\n setCurrentPage(1) // Reset to first page when resetting filters\n }\n\n const getTypeBadgeVariant = (type: string): any => {\n switch (type) {\n case \"Ofac\":\n return \"alert-ofac\"\n case \"Dual Approval\":\n return \"alert-dual\"\n case \"Transaction Monitoring\":\n return \"alert-monitoring\"\n case \"Transaction Processing Error\":\n return \"alert-error\"\n default:\n return \"outline\"\n }\n }\n\n const getStatusColor = (status: string) => {\n switch (status) {\n case \"Unassigned\":\n return \"text-destructive\"\n case \"Closed\":\n return \"text-success\"\n case \"In Progress\":\n return \"text-warning\"\n default:\n return \"\"\n }\n }\n\n // Pagination calculations\n const totalPages = Math.ceil(filteredAlerts.length / rowsPerPage)\n const startIndex = (currentPage - 1) * rowsPerPage\n const endIndex = startIndex + rowsPerPage\n const paginatedAlerts = filteredAlerts.slice(startIndex, endIndex)\n\n const handlePageChange = (newPage: number) => {\n if (newPage >= 1 && newPage <= totalPages) {\n setCurrentPage(newPage)\n }\n }\n\n const handleRowsPerPageChange = (value: number) => {\n setRowsPerPage(value)\n setCurrentPage(1) // Reset to first page when changing rows per page\n }\n\n return (\n <div className=\"flex flex-col h-screen bg-gradient-subtle\">\n {/* Fixed Header */}\n <div className=\"flex-none border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60\">\n <div className=\"container mx-auto px-4 py-4 max-w-none\">\n <div className=\"flex items-center justify-between\">\n <h1 className=\"text-3xl font-bold text-foreground\">Alerts</h1>\n <Sheet>\n <SheetTrigger asChild>\n <Button variant=\"outline\" className=\"gap-2\">\n <Filter className=\"h-4 w-4\" />\n Filters\n </Button>\n </SheetTrigger>\n <SheetContent side=\"right\" className=\"w-full sm:max-w-xl overflow-y-auto\">\n <SheetHeader>\n <SheetTitle>Alert Filters</SheetTitle>\n </SheetHeader>\n \n <div className=\"space-y-6 py-6\">\n <EnhancedInput\n label=\"Alert ID\"\n value={filters.alertId}\n onChange={(e) => handleFilterChange(\"alertId\", e.target.value)}\n placeholder=\"Enter alert ID\"\n />\n\n <EnhancedInput\n label=\"Context ID\"\n value={filters.contextId}\n onChange={(e) => handleFilterChange(\"contextId\", e.target.value)}\n placeholder=\"Enter context ID\"\n />\n\n <EnhancedSelect\n label=\"Context Type\"\n value={filters.contextType}\n onValueChange={(value) => handleFilterChange(\"contextType\", value)}\n placeholder=\"Select context type\"\n options={[\n { value: \"Ofac\", label: \"Ofac\" },\n { value: \"Transaction\", label: \"Transaction\" },\n { value: \"Product\", label: \"Product\" },\n { value: \"File Record\", label: \"File Record\" }\n ]}\n />\n\n <EnhancedSelect\n label=\"Alert Type\"\n value={filters.alertType}\n onValueChange={(value) => handleFilterChange(\"alertType\", value)}\n placeholder=\"Select alert type\"\n options={[\n { value: \"Ofac\", label: \"Ofac\" },\n { value: \"Dual Approval\", label: \"Dual Approval\" },\n { value: \"Transaction Monitoring\", label: \"Transaction Monitoring\" },\n { value: \"Transaction Processing Error\", label: \"Transaction Processing Error\" }\n ]}\n />\n\n <EnhancedSelect\n label=\"Alert Status\"\n value={filters.alertStatus}\n onValueChange={(value) => handleFilterChange(\"alertStatus\", value)}\n placeholder=\"Select status\"\n options={[\n { value: \"Unassigned\", label: \"Unassigned\" },\n { value: \"Closed\", label: \"Closed\" },\n { value: \"In Progress\", label: \"In Progress\" }\n ]}\n />\n\n <EnhancedInput\n label=\"Assignee\"\n value={filters.assignee}\n onChange={(e) => handleFilterChange(\"assignee\", e.target.value)}\n placeholder=\"Enter assignee name\"\n />\n\n <EnhancedSelect\n label=\"RFI Status\"\n value={filters.rfiStatus}\n onValueChange={(value) => handleFilterChange(\"rfiStatus\", value)}\n placeholder=\"Select RFI status\"\n options={[\n { value: \"Completed\", label: \"Completed\" },\n { value: \"Provided\", label: \"Provided\" },\n { value: \"Pending\", label: \"Pending\" }\n ]}\n />\n\n <div className=\"grid grid-cols-2 gap-4\">\n <EnhancedInput\n label=\"Start Date\"\n type=\"date\"\n value={filters.startDate}\n onChange={(e) => handleFilterChange(\"startDate\", e.target.value)}\n />\n\n <EnhancedInput\n label=\"End Date\"\n type=\"date\"\n value={filters.endDate}\n onChange={(e) => handleFilterChange(\"endDate\", e.target.value)}\n />\n </div>\n </div>\n\n <SheetFooter className=\"gap-2\">\n <Button variant=\"outline\" onClick={resetFilters}>\n Reset Filters\n </Button>\n <Button onClick={applyFilters}>\n Apply Filters\n </Button>\n </SheetFooter>\n </SheetContent>\n </Sheet>\n </div>\n </div>\n </div>\n\n {/* Scrollable Content */}\n <div className=\"flex-1 overflow-hidden\">\n <div className=\"container mx-auto px-4 h-full max-w-none flex flex-col\">\n <div className=\"flex-1 mt-4 rounded-lg border bg-card overflow-hidden flex flex-col\">\n <div className=\"flex-1 overflow-auto\">\n <table className=\"w-full table-fixed\">\n <colgroup>\n <col className=\"w-28\" />\n <col className=\"w-36\" />\n <col className=\"w-52\" />\n <col className=\"w-32\" />\n <col className=\"w-36\" />\n <col className=\"w-32\" />\n <col className=\"w-auto\" />\n </colgroup>\n <thead className=\"sticky top-0 bg-card z-10 shadow-sm\">\n <tr className=\"border-b\">\n <th className=\"px-3 py-2 text-left text-xs font-medium bg-muted/50\">Alert ID</th>\n <th className=\"px-3 py-2 text-left text-xs font-medium bg-muted/50\">Created At</th>\n <th className=\"px-3 py-2 text-left text-xs font-medium bg-muted/50\">Type</th>\n <th className=\"px-3 py-2 text-left text-xs font-medium bg-muted/50\">Status</th>\n <th className=\"px-3 py-2 text-left text-xs font-medium bg-muted/50\">Context Type</th>\n <th className=\"px-3 py-2 text-left text-xs font-medium bg-muted/50\">RFI Status</th>\n <th className=\"px-3 py-2 text-left text-xs font-medium bg-muted/50\">Description</th>\n </tr>\n </thead>\n <tbody>\n {paginatedAlerts.map((alert) => (\n <tr \n key={alert.id} \n className=\"border-b hover:bg-muted/50 transition-colors cursor-pointer\"\n onClick={() => navigate(`/alerts/${alert.id}`)}\n >\n <td className=\"px-3 py-2 text-xs\">{alert.id}</td>\n <td className=\"px-3 py-2 text-xs\">{alert.createdAt}</td>\n <td className=\"px-3 py-2\">\n <Badge variant={getTypeBadgeVariant(alert.type)} className=\"whitespace-nowrap\">\n {alert.type}\n </Badge>\n </td>\n <td className=\"px-3 py-2\">\n <span className={cn(\"text-xs font-medium\", getStatusColor(alert.status))}>\n {alert.status}\n </span>\n </td>\n <td className=\"px-3 py-2\">\n <Badge variant=\"outline\" className=\"whitespace-nowrap\">\n {alert.contextType}\n </Badge>\n </td>\n <td className=\"px-3 py-2\">\n {alert.rfiStatus && (\n <Badge variant=\"success\" className=\"whitespace-nowrap\">\n {alert.rfiStatus}\n </Badge>\n )}\n </td>\n <td className=\"px-3 py-2 text-xs truncate\">\n {alert.description}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n \n {/* Pagination Footer */}\n <div className=\"flex-none border-t bg-background py-3 px-4\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-foreground\">Rows per page:</span>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\" size=\"sm\" className=\"h-8 gap-1\">\n {rowsPerPage}\n <ChevronRight className=\"h-4 w-4 rotate-90\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\" className=\"bg-background z-50\">\n <DropdownMenuItem onClick={() => handleRowsPerPageChange(100)}>\n 100\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => handleRowsPerPageChange(200)}>\n 200\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => handleRowsPerPageChange(500)}>\n 500\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n\n <div className=\"flex items-center gap-4\">\n <span className=\"text-sm text-muted-foreground\">\n Page {currentPage} of {totalPages}\n </span>\n <div className=\"flex items-center gap-1\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"h-8 w-8 p-0\"\n onClick={() => handlePageChange(currentPage - 1)}\n disabled={currentPage === 1}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"h-8 w-8 p-0\"\n onClick={() => handlePageChange(currentPage + 1)}\n disabled={currentPage === totalPages}\n >\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nexport default Alerts\n","export interface BusinessListItem {\n id: string\n businessName: string\n productName: string\n cipStatus: \"NOT_START\" | \"PASS\" | \"FAIL\" | \"IN_REVIEW\"\n status: \"ACTIVE\" | \"INACTIVE\" | \"BLOCKED\" | \"PENDING_APPROVAL\"\n type: \"Individual\" | \"Business\"\n subType: \"UBO\" | \"Customer\"\n isDeveloperInitiated: boolean\n provider: string\n result: string\n created: string\n modified: string\n}\n\nexport const mockBusinessesList: BusinessListItem[] = [\n {\n id: \"8112488\",\n businessName: \"RAPIDZ PAY INC\",\n productName: \"Fiat Republic Canada Inc. FBO Rapidz Pay\",\n cipStatus: \"PASS\",\n status: \"ACTIVE\",\n type: \"Business\",\n subType: \"Customer\",\n isDeveloperInitiated: true,\n provider: \"Plaid\",\n result: 'vendor:ADVISOR_KYC_VENDOR status:successful data:\"id:\\\\\"81ae3fca-bdef-493f-9b13-137d259a97f9\\\\\" corporate_id:\\\\\"9d8665b3-7525-40e7-aa75-e46d4f77f0f1\\\\\" created_timestamp:{seconds:1761333876 nanos:574963000} modified_timestamp:{seconds:1761333889 nanos:83986000} status:processing edition:1 method:reliance\"',\n created: \"2025-10-05\",\n modified: \"2025-10-05\"\n },\n {\n id: \"8111609\",\n businessName: \"Fern Hyper Growth Llc\",\n productName: \"Atomic Brokerage FBO Atomic Brokerage Clients\",\n cipStatus: \"PASS\",\n status: \"ACTIVE\",\n type: \"Business\",\n subType: \"UBO\",\n isDeveloperInitiated: false,\n provider: \"Alloy\",\n result: 'vendor:COMPLIANCE_VENDOR status:approved data:\"verification_id:\\\\\"vrf-123\\\\\" corporate_id:\\\\\"corp-456\\\\\" timestamp:{seconds:1761333900 nanos:123456000} status:verified\"',\n created: \"2025-10-04\",\n modified: \"2025-10-04\"\n },\n {\n id: \"8111026\",\n businessName: \"ACEROSGALVANISADOS & PREPINTADOS\",\n productName: \"SendFriend Inc FBO Conduit Pay Agent\",\n cipStatus: \"NOT_START\",\n status: \"ACTIVE\",\n type: \"Individual\",\n subType: \"Customer\",\n isDeveloperInitiated: true,\n provider: \"Plaid\",\n result: 'vendor:IDENTITY_VENDOR status:pending data:\"request_id:\\\\\"req-789\\\\\" entity_id:\\\\\"ent-012\\\\\" created:{seconds:1761333800 nanos:987654000}\"',\n created: \"2025-10-03\",\n modified: \"2025-10-03\"\n },\n {\n id: \"8110892\",\n businessName: \"Tech Solutions Corp\",\n productName: \"Digital Finance Inc FBO Tech Solutions\",\n cipStatus: \"IN_REVIEW\",\n status: \"PENDING_APPROVAL\",\n type: \"Business\",\n subType: \"Customer\",\n isDeveloperInitiated: false,\n provider: \"Alloy\",\n result: 'vendor:KYC_VENDOR status:in_progress data:\"kyc_id:\\\\\"kyc-345\\\\\" business_id:\\\\\"biz-678\\\\\" initiated:{seconds:1761333700 nanos:111222000}\"',\n created: \"2025-10-02\",\n modified: \"2025-10-02\"\n },\n {\n id: \"8110654\",\n businessName: \"Global Trade Partners LLC\",\n productName: \"Swift Transfer FBO Global Trade\",\n cipStatus: \"PASS\",\n status: \"ACTIVE\",\n type: \"Individual\",\n subType: \"UBO\",\n isDeveloperInitiated: true,\n provider: \"Plaid\",\n result: 'vendor:VERIFICATION_VENDOR status:completed data:\"account_verified:true holder_verified:true timestamp:{seconds:1761333600 nanos:333444000}\"',\n created: \"2025-10-01\",\n modified: \"2025-10-01\"\n }\n]\n","import { DataTable, DataTableColumn } from \"@/components/ui/data-table\"\nimport { CIPStatusBadge } from \"@/components/ui/cip-status-badge\"\nimport { StatusBadge } from \"@/components/ui/status-badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { BusinessListItem } from \"@/lib/mock-data/businesses-list-data\"\nimport { BusinessFiltersSheet } from \"./BusinessFiltersSheet\"\n\ninterface BusinessFilters {\n name: string\n productName: string\n status: string\n createdDateStart?: Date\n createdDateEnd?: Date\n}\n\ninterface BusinessesViewProps {\n filters: BusinessFilters\n sortedData: BusinessListItem[]\n sortBy: string\n sortDirection: \"asc\" | \"desc\"\n onFilterChange: (field: keyof BusinessFilters, value: string | Date | undefined) => void\n onResetFilters: () => void\n onSort: (key: string) => void\n onRowClick: (business: BusinessListItem) => void\n onCreateBusiness: () => void\n}\n\nconst columns: DataTableColumn<BusinessListItem>[] = [\n {\n key: \"id\",\n title: \"Business ID\",\n sortable: true,\n },\n {\n key: \"businessName\",\n title: \"Business Name\",\n sortable: true,\n },\n {\n key: \"productName\",\n title: \"Product Name\",\n sortable: true,\n render: (value) => (\n <span className=\"text-primary hover:underline cursor-pointer\">\n {value as string}\n </span>\n ),\n },\n {\n key: \"cipStatus\",\n title: \"CIP status\",\n sortable: true,\n render: (value) => <CIPStatusBadge status={value as any} />,\n },\n {\n key: \"status\",\n title: \"Status\",\n sortable: true,\n render: (value) => <StatusBadge status={(value as string)?.toUpperCase() as any} />,\n },\n {\n key: \"created\",\n title: \"Created\",\n sortable: true,\n },\n {\n key: \"modified\",\n title: \"Modified\",\n sortable: true,\n },\n]\n\nexport const BusinessesView = ({\n filters,\n sortedData,\n sortBy,\n sortDirection,\n onFilterChange,\n onResetFilters,\n onSort,\n onRowClick,\n onCreateBusiness\n}: BusinessesViewProps) => {\n return (\n <div className=\"flex flex-col h-screen bg-gradient-subtle\">\n {/* Fixed Header */}\n <div className=\"flex-none border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60\">\n <div className=\"container mx-auto px-4 py-6 max-w-none\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-3xl font-bold text-foreground mb-2\">Businesses</h1>\n </div>\n <div className=\"flex items-center gap-2\">\n <BusinessFiltersSheet\n filters={filters}\n onFilterChange={onFilterChange}\n onResetFilters={onResetFilters}\n />\n <Button onClick={onCreateBusiness}>\n Create Business\n </Button>\n </div>\n </div>\n </div>\n </div>\n\n {/* Scrollable Content */}\n <div className=\"flex-1 overflow-hidden\">\n <div className=\"container mx-auto px-4 h-full max-w-none flex flex-col\">\n <div className=\"flex-1 mt-4 overflow-auto\">\n <DataTable\n columns={columns}\n data={sortedData}\n sortBy={sortBy}\n sortDirection={sortDirection}\n onSort={onSort}\n onRowClick={onRowClick}\n />\n </div>\n </div>\n </div>\n </div>\n )\n}\n","import { useState, useMemo, useCallback } from \"react\"\nimport { useNavigate } from \"react-router-dom\"\nimport { mockBusinessesList, BusinessListItem } from \"@/lib/mock-data/businesses-list-data\"\nimport { BusinessesView } from \"@/components/business/BusinessesView\"\nimport { BusinessFiltersSheet } from \"@/components/business/BusinessFiltersSheet\"\nimport { CreateBusinessView } from \"@/components/business/CreateBusinessView\"\n\ninterface BusinessFilters {\n name: string\n productName: string\n status: string\n createdDateStart?: Date\n createdDateEnd?: Date\n}\n\nconst Businesses = () => {\n const navigate = useNavigate()\n \n const [filters, setFilters] = useState<BusinessFilters>({\n name: \"\",\n productName: \"\",\n status: \"\",\n createdDateStart: undefined,\n createdDateEnd: undefined\n })\n \n const [sortBy, setSortBy] = useState<string>(\"created\")\n const [sortDirection, setSortDirection] = useState<\"asc\" | \"desc\">(\"desc\")\n\n const filteredData = useMemo(() => {\n return mockBusinessesList.filter(business => {\n if (filters.name && !business.businessName.toLowerCase().includes(filters.name.toLowerCase())) {\n return false\n }\n if (filters.productName && !business.productName.toLowerCase().includes(filters.productName.toLowerCase())) {\n return false\n }\n if (filters.status && business.status.toLowerCase() !== filters.status.toLowerCase()) {\n return false\n }\n if (filters.createdDateStart || filters.createdDateEnd) {\n const created = new Date(business.created)\n if (filters.createdDateStart && created < filters.createdDateStart) {\n return false\n }\n if (filters.createdDateEnd && created > filters.createdDateEnd) {\n return false\n }\n }\n return true\n })\n }, [filters])\n\n const sortedData = useMemo(() => {\n return [...filteredData].sort((a, b) => {\n const aValue = a[sortBy as keyof BusinessListItem]\n const bValue = b[sortBy as keyof BusinessListItem]\n \n if (aValue < bValue) return sortDirection === \"asc\" ? -1 : 1\n if (aValue > bValue) return sortDirection === \"asc\" ? 1 : -1\n return 0\n })\n }, [filteredData, sortBy, sortDirection])\n\n const handleFilterChange = useCallback((field: keyof BusinessFilters, value: string | Date | undefined) => {\n setFilters(prev => ({ ...prev, [field]: value }))\n }, [])\n\n const resetFilters = useCallback(() => {\n setFilters({\n name: \"\",\n productName: \"\",\n status: \"\",\n createdDateStart: undefined,\n createdDateEnd: undefined\n })\n }, [])\n\n const handleSort = useCallback((key: string) => {\n if (sortBy === key) {\n setSortDirection(prev => prev === \"asc\" ? \"desc\" : \"asc\")\n } else {\n setSortBy(key)\n setSortDirection(\"asc\")\n }\n }, [sortBy])\n\n const handleRowClick = useCallback((business: BusinessListItem) => {\n navigate(`/business/${business.id}`)\n }, [navigate])\n\n const handleCreateBusiness = useCallback(() => {\n navigate(\"/business/create\")\n }, [navigate])\n\n return (\n <BusinessesView\n filters={filters}\n sortedData={sortedData}\n sortBy={sortBy}\n sortDirection={sortDirection}\n onFilterChange={handleFilterChange}\n onResetFilters={resetFilters}\n onSort={handleSort}\n onRowClick={handleRowClick}\n onCreateBusiness={handleCreateBusiness}\n />\n )\n}\n\nexport default Businesses\nexport { BusinessFiltersSheet, CreateBusinessView }\n","export interface IdentityVerification {\n customerId: string\n isDeveloperInitiated: boolean\n provider: string\n result: string\n}\n\nexport const mockIdentityVerifications: Record<string, IdentityVerification> = {\n \"8112488\": {\n customerId: \"8112488\",\n isDeveloperInitiated: true,\n provider: \"Plaid\",\n result: 'vendor:ADVISOR_KYC_VENDOR status:successful data:\"id:\\\\\"81ae3fca-bdef-493f-9b13-137d259a97f9\\\\\" corporate_id:\\\\\"9d8665b3-7525-40e7-aa75-e46d4f77f0f1\\\\\" created_timestamp:{seconds:1761333876 nanos:574963000} modified_timestamp:{seconds:1761333889 nanos:83986000} status:processing edition:1 method:reliance\"'\n },\n \"8111609\": {\n customerId: \"8111609\",\n isDeveloperInitiated: false,\n provider: \"Alloy\",\n result: 'vendor:COMPLIANCE_VENDOR status:approved data:\"verification_id:\\\\\"vrf-123\\\\\" corporate_id:\\\\\"corp-456\\\\\" timestamp:{seconds:1761333900 nanos:123456000} status:verified\"'\n },\n \"8111026\": {\n customerId: \"8111026\",\n isDeveloperInitiated: true,\n provider: \"Plaid\",\n result: 'vendor:IDENTITY_VENDOR status:pending data:\"request_id:\\\\\"req-789\\\\\" entity_id:\\\\\"ent-012\\\\\" created:{seconds:1761333800 nanos:987654000}\"'\n },\n \"8110892\": {\n customerId: \"8110892\",\n isDeveloperInitiated: false,\n provider: \"Alloy\",\n result: 'vendor:KYC_VENDOR status:in_progress data:\"kyc_id:\\\\\"kyc-345\\\\\" business_id:\\\\\"biz-678\\\\\" initiated:{seconds:1761333700 nanos:111222000}\"'\n },\n \"8110654\": {\n customerId: \"8110654\",\n isDeveloperInitiated: true,\n provider: \"Plaid\",\n result: 'vendor:VERIFICATION_VENDOR status:completed data:\"account_verified:true holder_verified:true timestamp:{seconds:1761333600 nanos:333444000}\"'\n }\n}\n","export interface UBO {\n id: string\n name: string\n title: string\n ownershipPercentage: number\n customerId: string // Link to individual customer page\n}\n\nexport const mockBusinessUBOs: Record<string, UBO[]> = {\n \"8112488\": [\n {\n id: \"ubo-001\",\n name: \"John Smith\",\n title: \"CEO & Founder\",\n ownershipPercentage: 45,\n customerId: \"cust-001\"\n },\n {\n id: \"ubo-002\",\n name: \"Sarah Johnson\",\n title: \"CFO & Co-Founder\",\n ownershipPercentage: 35,\n customerId: \"cust-002\"\n },\n {\n id: \"ubo-003\",\n name: \"Michael Chen\",\n title: \"CTO\",\n ownershipPercentage: 20,\n customerId: \"cust-003\"\n }\n ],\n \"8112489\": [\n {\n id: \"ubo-004\",\n name: \"Emily Davis\",\n title: \"Managing Director\",\n ownershipPercentage: 60,\n customerId: \"cust-004\"\n },\n {\n id: \"ubo-005\",\n name: \"Robert Wilson\",\n title: \"Board Member\",\n ownershipPercentage: 40,\n customerId: \"cust-005\"\n }\n ]\n}\n","export interface BusinessDocument {\n id: string;\n name: string;\n type: string;\n description?: string;\n size: string;\n uploadedBy: string;\n uploadedAt: string;\n url?: string;\n}\n\nexport const mockBusinessDocuments: Record<string, BusinessDocument[]> = {\n \"8112488\": [\n {\n id: \"doc-001\",\n name: \"Certificate of Incorporation.pdf\",\n type: \"BUSINESS_LICENSE\",\n description: \"Official certificate of incorporation from Delaware\",\n size: \"2.3 MB\",\n uploadedBy: \"John Smith\",\n uploadedAt: \"2024-01-10T10:30:00Z\",\n url: \"/sample-documents/sample.pdf\",\n },\n {\n id: \"doc-002\",\n name: \"Tax_ID_Verification.pdf\",\n type: \"TAX_DOCUMENT\",\n description: \"IRS EIN verification letter\",\n size: \"1.1 MB\",\n uploadedBy: \"Sarah Johnson\",\n uploadedAt: \"2024-01-12T14:20:00Z\",\n url: \"/sample-documents/sample.pdf\",\n },\n {\n id: \"doc-003\",\n name: \"Business_Address_Proof.pdf\",\n type: \"PROOF_OF_ADDRESS\",\n description: \"Utility bill for business address\",\n size: \"0.8 MB\",\n uploadedBy: \"John Smith\",\n uploadedAt: \"2024-01-15T09:15:00Z\",\n url: \"/sample-documents/sample.pdf\",\n },\n {\n id: \"doc-004\",\n name: \"Operating_Agreement.pdf\",\n type: \"OTHER\",\n description: \"Company operating agreement and bylaws\",\n size: \"3.5 MB\",\n uploadedBy: \"Legal Team\",\n uploadedAt: \"2024-01-08T16:45:00Z\",\n url: \"/sample-documents/sample.pdf\",\n },\n ],\n \"8112489\": [\n {\n id: \"doc-005\",\n name: \"Business_License_2024.pdf\",\n type: \"BUSINESS_LICENSE\",\n size: \"1.5 MB\",\n uploadedBy: \"Emily Davis\",\n uploadedAt: \"2024-01-05T11:00:00Z\",\n url: \"/sample-documents/sample.pdf\",\n },\n ],\n};\n","import { BusinessProfile } from \"@/lib/schemas/business-schemas\"\n\nexport const mockBusinessProfiles: Record<string, BusinessProfile> = {\n \"8112488\": {\n name: \"RAPIDZ PAY INC\",\n productId: 1,\n businessIdType: \"EIN\",\n idNumber: \"12-3456789\",\n dba: \"Rapidz Pay\",\n businessEntityType: \"CORPORATION\",\n incorporationState: \"Delaware\",\n formationDate: \"2020-01-15\",\n website: \"https://rapidzpay.com\",\n mcc: \"6211\",\n naics: \"522320\",\n mobilePhone: \"+1 (555) 123-4567\",\n achCompanyId: \"1234567890\",\n contactPersonFirstName: \"John\",\n contactPersonLastName: \"Smith\",\n contactPersonEmail: \"john.smith@rapidzpay.com\",\n contactPersonPhone: \"+1 (555) 234-5678\",\n address: {\n line1: \"123 Business Ave\",\n line2: \"Suite 100\",\n city: \"New York\",\n state: \"NY\",\n postalCode: \"10001\",\n countryCode: \"US\"\n }\n },\n \"8111609\": {\n name: \"Fern Hyper Growth Llc\",\n productId: 2,\n businessIdType: \"EIN\",\n idNumber: \"98-7654321\",\n businessEntityType: \"LIMITED_LIABILITY_COMPANY\",\n incorporationState: \"California\",\n formationDate: \"2019-06-20\",\n website: \"https://fernhypergrowth.com\",\n mcc: \"5999\",\n naics: \"541519\",\n mobilePhone: \"+1 (555) 987-6543\",\n contactPersonFirstName: \"Jane\",\n contactPersonLastName: \"Doe\",\n contactPersonEmail: \"jane.doe@fernhypergrowth.com\",\n contactPersonPhone: \"+1 (555) 876-5432\",\n address: {\n line1: \"456 Tech Street\",\n city: \"San Francisco\",\n state: \"CA\",\n postalCode: \"94102\",\n countryCode: \"US\"\n }\n },\n \"8111026\": {\n name: \"ACEROSGALVANISADOS & PREPINTADOS\",\n productId: 3,\n businessIdType: \"EIN\",\n idNumber: \"45-6789012\",\n businessEntityType: \"PARTNERSHIP\",\n incorporationState: \"Texas\",\n formationDate: \"2018-03-10\",\n website: \"https://acerosgalvanisados.com\",\n mcc: \"5051\",\n naics: \"423510\",\n mobilePhone: \"+1 (555) 456-7890\",\n contactPersonFirstName: \"Carlos\",\n contactPersonLastName: \"Rodriguez\",\n contactPersonEmail: \"carlos@acerosgalvanisados.com\",\n contactPersonPhone: \"+1 (555) 567-8901\",\n address: {\n line1: \"789 Industrial Blvd\",\n city: \"Houston\",\n state: \"TX\",\n postalCode: \"77001\",\n countryCode: \"US\"\n }\n },\n \"8110892\": {\n name: \"Tech Solutions Corp\",\n productId: 4,\n businessIdType: \"EIN\",\n idNumber: \"23-4567890\",\n businessEntityType: \"CORPORATION\",\n incorporationState: \"Washington\",\n formationDate: \"2021-08-15\",\n website: \"https://techsolutions.com\",\n mcc: \"7372\",\n naics: \"541511\",\n mobilePhone: \"+1 (555) 321-0987\",\n achCompanyId: \"9876543210\",\n contactPersonFirstName: \"Sarah\",\n contactPersonLastName: \"Johnson\",\n contactPersonEmail: \"sarah.johnson@techsolutions.com\",\n contactPersonPhone: \"+1 (555) 432-1098\",\n address: {\n line1: \"321 Tech Park\",\n line2: \"Building B\",\n city: \"Seattle\",\n state: \"WA\",\n postalCode: \"98101\",\n countryCode: \"US\"\n }\n },\n \"8110654\": {\n name: \"Global Trade Partners LLC\",\n productId: 5,\n businessIdType: \"EIN\",\n idNumber: \"67-8901234\",\n dba: \"GTP\",\n businessEntityType: \"LIMITED_LIABILITY_COMPANY\",\n incorporationState: \"Florida\",\n formationDate: \"2017-11-01\",\n website: \"https://globaltradepartners.com\",\n mcc: \"5732\",\n naics: \"443142\",\n mobilePhone: \"+1 (555) 654-3210\",\n contactPersonFirstName: \"Michael\",\n contactPersonLastName: \"Chen\",\n contactPersonEmail: \"michael.chen@gtp.com\",\n contactPersonPhone: \"+1 (555) 765-4321\",\n address: {\n line1: \"555 Trade Center\",\n city: \"Miami\",\n state: \"FL\",\n postalCode: \"33101\",\n countryCode: \"US\"\n }\n }\n}\n","export interface OFACCheck {\n id: string\n created: string\n entityId: string\n entityName: string\n entityType: \"Individual\" | \"Business\" | \"Counterparty\"\n alertId: string | null\n status: \"NO MATCH\" | \"REVIEW\" | \"CLEARED\" | \"CONFIRMED\"\n}\n\nexport const mockOFACChecks: OFACCheck[] = [\n {\n id: \"ofac-ind-2024-001\",\n created: \"2024-01-20T14:45:00Z\",\n entityId: \"IND-2024-001\",\n entityName: \"John Smith\",\n entityType: \"Individual\",\n alertId: null,\n status: \"NO MATCH\",\n },\n {\n id: \"ofac-001\",\n created: \"2024-01-15T10:30:00Z\",\n entityId: \"8112488\",\n entityName: \"Acme Corporation\",\n entityType: \"Business\",\n alertId: \"ALT-001\",\n status: \"CLEARED\"\n },\n {\n id: \"ofac-002\",\n created: \"2024-01-14T14:22:00Z\",\n entityId: \"8111609\",\n entityName: \"Global Tech Industries\",\n entityType: \"Business\",\n alertId: \"ALT-002\",\n status: \"REVIEW\"\n },\n {\n id: \"ofac-003\",\n created: \"2024-01-14T09:15:00Z\",\n entityId: \"IND-001\",\n entityName: \"John Smith\",\n entityType: \"Individual\",\n alertId: null,\n status: \"NO MATCH\"\n },\n {\n id: \"ofac-004\",\n created: \"2024-01-13T16:45:00Z\",\n entityId: \"8111026\",\n entityName: \"Innovation Partners LLC\",\n entityType: \"Business\",\n alertId: \"ALT-003\",\n status: \"CONFIRMED\"\n },\n {\n id: \"ofac-005\",\n created: \"2024-01-13T11:20:00Z\",\n entityId: \"IND-002\",\n entityName: \"Jane Doe\",\n entityType: \"Individual\",\n alertId: null,\n status: \"NO MATCH\"\n },\n {\n id: \"ofac-006\",\n created: \"2024-01-12T13:30:00Z\",\n entityId: \"CP-001\",\n entityName: \"International Suppliers Inc\",\n entityType: \"Counterparty\",\n alertId: \"ALT-004\",\n status: \"REVIEW\"\n },\n {\n id: \"ofac-007\",\n created: \"2024-01-12T08:00:00Z\",\n entityId: \"8110892\",\n entityName: \"NextGen Solutions\",\n entityType: \"Business\",\n alertId: null,\n status: \"NO MATCH\"\n },\n {\n id: \"ofac-008\",\n created: \"2024-01-11T15:10:00Z\",\n entityId: \"IND-003\",\n entityName: \"Robert Johnson\",\n entityType: \"Individual\",\n alertId: \"ALT-005\",\n status: \"CLEARED\"\n },\n {\n id: \"ofac-009\",\n created: \"2024-01-11T10:45:00Z\",\n entityId: \"CP-002\",\n entityName: \"Overseas Trading Company\",\n entityType: \"Counterparty\",\n alertId: \"ALT-006\",\n status: \"REVIEW\"\n },\n {\n id: \"ofac-010\",\n created: \"2024-01-10T14:25:00Z\",\n entityId: \"8110654\",\n entityName: \"Digital Ventures Group\",\n entityType: \"Business\",\n alertId: null,\n status: \"NO MATCH\"\n }\n]\n","import { useState, useEffect } from \"react\"\nimport { useParams, useNavigate } from \"react-router-dom\"\nimport { mockBusinessesList } from \"@/lib/mock-data/businesses-list-data\"\nimport { mockIdentityVerifications } from \"@/lib/mock-data/identity-verification-data\"\nimport { mockBusinessUBOs } from \"@/lib/mock-data/ubo-data\"\nimport { mockBusinessDocuments, BusinessDocument } from \"@/lib/mock-data/document-data\"\nimport { mockBusinessAccounts } from \"@/lib/mock-data/business-account-data\"\nimport { mockBusinessProfiles } from \"@/lib/mock-data/business-profiles-data\"\nimport { mockOFACChecks } from \"@/lib/mock-data/ofac-data\"\nimport { BusinessDetailView } from \"@/components/business/BusinessDetailView\"\nimport { Loader2, AlertCircle } from \"lucide-react\"\nimport { Button } from \"@/components/ui/button\"\nimport type { BusinessProfile } from \"@/lib/schemas/business-schemas\"\nimport { BUSINESS_STATUS_OPTIONS, BUSINESS_ENTITY_TYPE_OPTIONS } from \"@/lib/constants\"\nimport { toast } from \"sonner\"\nimport type { UBOFormData } from \"@/lib/schemas/ubo-schemas\"\nimport type { AccountFormData } from \"@/components/business/AddAccountDialog\"\n\ntype ExternalAccountRow = {\n id: string\n accountNumber: string\n routingNumber: string\n bankName: string\n bankAccountType: string\n}\n\nconst BusinessDetail = () => {\n const { id } = useParams()\n const navigate = useNavigate()\n\n // Flag to show/hide the right-side timeline column (OFAC + status)\n const showTimeline = true\n \n // Loading and error states\n const [isLoading, setIsLoading] = useState(true)\n const [error, setError] = useState<string | null>(null)\n \n // Get business data from mock data\n const business = mockBusinessesList.find(b => b.id === id)\n \n // Get identity verification data (simulating /identity-verification/{customerId})\n const identityVerification = id ? mockIdentityVerifications[id] : undefined\n \n // Get UBO data for this business\n const initialUBOs = id ? mockBusinessUBOs[id] || [] : []\n \n // Get documents for this business\n const initialDocuments = id ? mockBusinessDocuments[id] || [] : []\n \n // Get accounts for this business\n const initialAccounts: ExternalAccountRow[] = id\n ? mockBusinessAccounts\n .filter(acc => acc.customerId === id)\n .map(acc => ({\n id: acc.id,\n accountNumber: acc.number,\n routingNumber: acc.routingNumber,\n bankName: acc.institution,\n bankAccountType: acc.type.toUpperCase(),\n }))\n : []\n \n // Get business profile data\n const initialProfile = id ? mockBusinessProfiles[id] : undefined\n\n // Latest OFAC check for this business\n const latestOFAC = id\n ? mockOFACChecks\n .filter(check => check.entityId === id && check.entityType === \"Business\")\n .sort((a, b) => new Date(b.created).getTime() - new Date(a.created).getTime())[0]\n : undefined\n \n // State management\n const [currentStatus, setCurrentStatus] = useState(business?.status || \"active\")\n const [isEditingProfile, setIsEditingProfile] = useState(false)\n const [businessProfile, setBusinessProfile] = useState<BusinessProfile | undefined>(\n initialProfile\n )\n const [businessUBOs, setBusinessUBOs] = useState(initialUBOs)\n const [businessAccounts, setBusinessAccounts] = useState<ExternalAccountRow[]>(initialAccounts)\n \n // ID Number visibility state\n const [isIdNumberRevealed, setIsIdNumberRevealed] = useState(false)\n const [revealedIdNumber, setRevealedIdNumber] = useState<string | null>(null)\n const [isLoadingIdNumber, setIsLoadingIdNumber] = useState(false)\n const [businessDocuments, setBusinessDocuments] = useState<BusinessDocument[]>(initialDocuments)\n \n // Simulate loading data\n const loadData = () => {\n setIsLoading(true)\n setError(null)\n \n // Simulate API call\n setTimeout(() => {\n if (!business) {\n setError(\"Business not found\")\n }\n setIsLoading(false)\n }, 500)\n }\n \n useEffect(() => {\n loadData()\n }, [id])\n \n // Callbacks\n const handleStatusChange = (newStatus: string) => {\n setCurrentStatus(newStatus)\n // Future: API call to update status\n }\n \n const handleToggleProfileEdit = () => {\n setIsEditingProfile(!isEditingProfile)\n }\n \n const handleProfileDataChange = (updatedProfile: BusinessProfile) => {\n setBusinessProfile(updatedProfile)\n // Future: API call to save profile\n console.log(\"Profile updated:\", updatedProfile)\n }\n \n const handleNavigateToAccounts = () => {\n navigate(`/accounts?customerId=${id}&customerType=business`)\n }\n \n const handleNavigateToCounterparty = () => {\n navigate(`/counterparty?customerId=${id}&customerType=business`)\n }\n\n const handleNavigateToOFAC = (ofacCheckId?: string) => {\n if (ofacCheckId) {\n navigate(`/compliance/ofac/${ofacCheckId}`)\n } else {\n navigate(\"/compliance/ofac\")\n }\n }\n \n const handleAddAccount = async (data: AccountFormData) => {\n // Enforce at most 1 external account\n if (businessAccounts.length >= 1) {\n toast.error(\"Only one external account is allowed\")\n return false\n }\n\n // Local/mock add: dialog doesn't collect real routing/account numbers yet.\n // We'll store whatever we have and show placeholders for missing values.\n const newAccountId = `ext-${Date.now()}`\n const accountNumber = (data.fundingFromAccount || \"\").trim() || \"—\"\n\n setBusinessAccounts(prev => [\n ...prev,\n {\n id: newAccountId,\n accountNumber,\n routingNumber: \"—\",\n bankName: (data.accountName || \"\").trim() || \"—\",\n bankAccountType: (data.accountType || \"CHECKING\").toUpperCase(),\n },\n ])\n\n toast.success(\"External account added\")\n }\n\n const handleDeleteAccount = async (accountId: string) => {\n // Simulate delete delay\n await new Promise(resolve => setTimeout(resolve, 400))\n\n setBusinessAccounts(prev => prev.filter(acc => acc.id !== accountId))\n toast.success(\"External account deleted\")\n }\n\n const handleUBOClick = (customerId: string) => {\n navigate(`/customer/${customerId}`)\n }\n\n const handleRemoveUBO = (uboId: string) => {\n setBusinessUBOs(prev => prev.filter(ubo => ubo.id !== uboId))\n // Future: API call to remove UBO\n console.log(\"UBO removed:\", uboId)\n }\n\n const handleAddUBO = async (data: UBOFormData) => {\n const newUboId = `ubo-${Date.now()}`\n const first = (data.legalFirstName || \"\").trim()\n const last = (data.legalLastName || \"\").trim()\n const name = [first, last].filter(Boolean).join(\" \") || \"Unnamed UBO\"\n\n setBusinessUBOs(prev => [\n ...prev,\n {\n id: newUboId,\n name,\n title: (data.title || \"\").trim(),\n ownershipPercentage: data.ownershipPercentage ?? 0,\n // For mock/local add, we don't have a real customerId yet.\n // Using the generated id keeps the row clickable and consistent.\n customerId: newUboId,\n },\n ])\n\n toast.success(\"UBO added successfully\")\n }\n\n const handleProductIdClick = (productId: number) => {\n navigate(`/products/${productId}`)\n }\n\n const handleRevealIdNumber = async (): Promise<string> => {\n // Simulate API call to fetch decrypted ID\n await new Promise(resolve => setTimeout(resolve, 800))\n // In reality, this would be an API call like: const response = await api.getDecryptedIdNumber(id)\n return businessProfile?.idNumber || \"123-45-6789\"\n }\n\n const handleToggleIdNumberVisibility = async () => {\n if (isIdNumberRevealed) {\n // Hide the ID number\n setIsIdNumberRevealed(false)\n setRevealedIdNumber(null)\n } else {\n // Reveal the ID number - make API call\n setIsLoadingIdNumber(true)\n try {\n const decryptedId = await handleRevealIdNumber()\n setRevealedIdNumber(decryptedId)\n setIsIdNumberRevealed(true)\n } catch (error) {\n console.error(\"Failed to reveal ID number:\", error)\n } finally {\n setIsLoadingIdNumber(false)\n }\n }\n }\n\n const handleDocumentUpload = async (\n file: File, \n metadata: { name: string; description: string; type: string }\n ) => {\n // Simulate upload delay\n await new Promise(resolve => setTimeout(resolve, 1000))\n \n // Create new document entry\n const newDocument: BusinessDocument = {\n id: `doc-${Date.now()}`,\n name: metadata.name,\n type: metadata.type,\n description: metadata.description,\n size: `${(file.size / 1024 / 1024).toFixed(2)} MB`,\n uploadedBy: \"Current User\",\n uploadedAt: new Date().toISOString()\n }\n \n // Update documents state\n setBusinessDocuments(prev => [...prev, newDocument])\n \n // Future: API call to upload file and save document metadata\n console.log(\"Document uploaded:\", { file, metadata, newDocument })\n }\n\n const handleDocumentDelete = async (documentId: string) => {\n // Simulate delete delay\n await new Promise(resolve => setTimeout(resolve, 600))\n\n setBusinessDocuments(prev => prev.filter(doc => doc.id !== documentId))\n\n // Future: API call to delete file + document metadata\n toast.success(\"Document deleted\")\n }\n\n const handleRetry = () => {\n loadData()\n }\n\n // Loading state\n if (isLoading) {\n return (\n <div className=\"flex flex-col items-center justify-center min-h-[400px] gap-3\">\n <Loader2 className=\"h-8 w-8 animate-spin text-muted-foreground\" />\n <p className=\"text-muted-foreground\">Loading...</p>\n </div>\n )\n }\n\n // Error state\n if (error || !business) {\n return (\n <div className=\"container mx-auto px-4 py-8\">\n <div className=\"flex flex-col items-center justify-center min-h-[400px] gap-4\">\n <div className=\"flex items-center gap-2 text-destructive\">\n <AlertCircle className=\"h-5 w-5\" />\n <span className=\"font-medium\">{error || \"Business not found\"}</span>\n </div>\n <p className=\"text-muted-foreground\">The business could not be loaded.</p>\n <Button variant=\"outline\" onClick={handleRetry}>\n Retry\n </Button>\n </div>\n </div>\n )\n }\n\n return (\n <BusinessDetailView\n business={business}\n businessProfile={businessProfile}\n identityVerification={identityVerification}\n latestOFAC={latestOFAC}\n onNavigateToOFAC={handleNavigateToOFAC}\n showTimeline={showTimeline}\n businessUBOs={businessUBOs}\n businessDocuments={businessDocuments}\n businessAccounts={businessAccounts}\n currentStatus={currentStatus}\n isEditingProfile={isEditingProfile}\n statusOptions={BUSINESS_STATUS_OPTIONS}\n businessEntityTypeOptions={BUSINESS_ENTITY_TYPE_OPTIONS}\n onStatusChange={handleStatusChange}\n onProfileDataChange={handleProfileDataChange}\n onToggleProfileEdit={handleToggleProfileEdit}\n onNavigateToAccounts={handleNavigateToAccounts}\n onNavigateToCounterparty={handleNavigateToCounterparty}\n onAddAccount={handleAddAccount}\n onDeleteAccount={handleDeleteAccount}\n onUBOClick={handleUBOClick}\n onAddUBO={handleAddUBO}\n onRemoveUBO={handleRemoveUBO}\n onDocumentUpload={handleDocumentUpload}\n onDocumentDelete={handleDocumentDelete}\n onProductIdClick={handleProductIdClick}\n onRevealIdNumber={handleRevealIdNumber}\n isIdNumberRevealed={isIdNumberRevealed}\n onToggleIdNumberVisibility={handleToggleIdNumberVisibility}\n isLoadingIdNumber={isLoadingIdNumber}\n revealedIdNumber={revealedIdNumber}\n />\n )\n}\n\nexport default BusinessDetail","import { useState, useCallback } from \"react\"\nimport { useNavigate } from \"react-router-dom\"\nimport { useForm } from \"react-hook-form\"\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport { businessProfileSchema, type BusinessProfile } from \"@/lib/schemas/business-schemas\"\nimport { CreateBusinessView } from \"@/components/business/CreateBusinessView\"\n\nconst defaultBusinessFormValues: BusinessProfile = {\n name: \"\",\n productId: 0,\n businessIdType: \"\",\n idNumber: \"\",\n dba: \"\",\n businessEntityType: \"\",\n incorporationState: \"\",\n formationDate: \"\",\n website: \"\",\n achCompanyId: \"\",\n mobilePhone: \"\",\n mcc: \"\",\n naics: \"\",\n contactPersonFirstName: \"\",\n contactPersonLastName: \"\",\n contactPersonEmail: \"\",\n contactPersonPhone: \"\",\n address: {\n line1: \"\",\n line2: \"\",\n city: \"\",\n state: \"\",\n postalCode: \"\",\n countryCode: \"US\",\n type: \"MAILING\"\n }\n}\n\nconst CreateBusiness = () => {\n const navigate = useNavigate()\n const [businessType, setBusinessType] = useState(\"\")\n \n const form = useForm<BusinessProfile>({\n resolver: zodResolver(businessProfileSchema),\n defaultValues: defaultBusinessFormValues\n })\n \n const onSubmit = useCallback((data: BusinessProfile) => {\n console.log(\"Business data:\", data)\n navigate(\"/business\")\n }, [navigate])\n\n const handleCancel = useCallback(() => {\n navigate(\"/business\")\n }, [navigate])\n\n const handleBusinessTypeChange = useCallback((value: string) => {\n setBusinessType(value)\n form.setValue(\"businessEntityType\", value, { shouldValidate: true })\n }, [form])\n \n return (\n <CreateBusinessView\n form={form}\n businessType={businessType}\n onBusinessTypeChange={handleBusinessTypeChange}\n onSubmit={onSubmit}\n onCancel={handleCancel}\n />\n )\n}\n\nexport default CreateBusiness","import { PageLayout } from \"@/components/ui/page-layout\"\n\nconst Cases = () => {\n return (\n <PageLayout \n title=\"Cases\" \n description=\"Manage and track investigation cases\"\n >\n <div className=\"text-center py-12 text-muted-foreground\">\n Cases content coming soon\n </div>\n </PageLayout>\n )\n}\n\nexport default Cases\n","export interface CounterpartyListItem {\n id: string\n name: string\n type: \"BUSINESS\" | \"INDIVIDUAL\"\n status: \"ACTIVE\" | \"INACTIVE\" | \"PENDING\" | \"SUSPENDED\"\n productId?: string\n businessId?: string\n individualId?: string\n accountNumber?: string\n customerId?: string\n customerType?: \"business\" | \"individual\"\n created: string\n modified: string\n}\n\nexport const mockCounterpartiesList: CounterpartyListItem[] = [\n {\n id: \"cp-001\",\n name: \"Acme Corporation\",\n type: \"BUSINESS\",\n status: \"ACTIVE\",\n productId: \"prod-001\",\n customerId: \"8112488\",\n customerType: \"business\",\n created: \"2024-01-15\",\n modified: \"2024-01-20\"\n },\n {\n id: \"cp-002\",\n name: \"John Smith\",\n type: \"INDIVIDUAL\",\n status: \"ACTIVE\",\n businessId: \"bus-001\",\n customerId: \"8112488\",\n customerType: \"business\",\n created: \"2024-01-10\",\n modified: \"2024-01-18\"\n },\n {\n id: \"cp-003\",\n name: \"Global Tech Solutions\",\n type: \"BUSINESS\",\n status: \"ACTIVE\",\n accountNumber: \"ACC-2024-015\",\n customerId: \"8112488\",\n customerType: \"business\",\n created: \"2024-01-08\",\n modified: \"2024-01-22\"\n },\n {\n id: \"cp-004\",\n name: \"Enterprise Solutions Inc\",\n type: \"BUSINESS\",\n status: \"ACTIVE\",\n individualId: \"ind-001\",\n customerId: \"9087654\",\n customerType: \"business\",\n created: \"2024-01-05\",\n modified: \"2024-01-15\"\n },\n {\n id: \"cp-005\",\n name: \"David Martinez\",\n type: \"INDIVIDUAL\",\n status: \"ACTIVE\",\n productId: \"prod-002\",\n customerId: \"7654321\",\n customerType: \"business\",\n created: \"2024-01-03\",\n modified: \"2024-01-12\"\n },\n {\n id: \"cp-006\",\n name: \"Sarah Johnson\",\n type: \"INDIVIDUAL\",\n status: \"PENDING\",\n accountNumber: \"ACC-2024-156\",\n created: \"2024-01-25\",\n modified: \"2024-01-25\"\n },\n {\n id: \"cp-007\",\n name: \"Tech Innovations LLC\",\n type: \"BUSINESS\",\n status: \"INACTIVE\",\n businessId: \"bus-002\",\n created: \"2023-12-20\",\n modified: \"2024-01-10\"\n },\n {\n id: \"cp-008\",\n name: \"Regional Distributors LLC\",\n type: \"BUSINESS\",\n status: \"ACTIVE\",\n productId: \"prod-003\",\n created: \"2023-12-15\",\n modified: \"2024-01-08\"\n },\n {\n id: \"cp-009\",\n name: \"Michael Chen\",\n type: \"INDIVIDUAL\",\n status: \"ACTIVE\",\n individualId: \"ind-002\",\n created: \"2023-12-10\",\n modified: \"2024-01-05\"\n },\n {\n id: \"cp-010\",\n name: \"Sunrise Ventures\",\n type: \"BUSINESS\",\n status: \"ACTIVE\",\n accountNumber: \"ACC-2023-678\",\n created: \"2023-12-01\",\n modified: \"2023-12-28\"\n }\n]\n","import { useState, useEffect, useMemo, useCallback } from \"react\"\nimport { useNavigate, useSearchParams } from \"react-router-dom\"\nimport { DataTable, DataTableColumn } from \"@/components/ui/data-table\"\nimport { Building2, User, Package, Wallet } from \"lucide-react\"\nimport { StatusBadge } from \"@/components/ui/status-badge\"\nimport { mockCounterpartiesList } from \"@/lib/mock-data/counterparties-list-data\"\nimport { CounterpartyWithEntity } from \"@/hooks/useCounterpartyEntity\"\nimport { CounterpartiesView } from \"@/components/counterparty/CounterpartiesView\"\n\n// Mock API responses - in production, these would be fetched from real APIs\nconst mockProducts: Record<string, string> = {\n \"prod-001\": \"Business Banking Pro\",\n \"prod-002\": \"Premium Banking\",\n \"prod-003\": \"Business Banking Plus\"\n}\n\nconst mockBusinesses: Record<string, string> = {\n \"bus-001\": \"Tech Solutions LLC\",\n \"bus-002\": \"Digital Ventures\"\n}\n\nconst mockIndividuals: Record<string, string> = {\n \"ind-001\": \"Cloud Services Corp\",\n \"ind-002\": \"Wealth Management\"\n}\n\nconst Counterparties = () => {\n const navigate = useNavigate()\n const [searchParams] = useSearchParams()\n const [counterparties, setCounterparties] = useState<CounterpartyWithEntity[]>([])\n const [sortBy, setSortBy] = useState<string>(\"created\")\n const [sortDirection, setSortDirection] = useState<\"asc\" | \"desc\">(\"desc\")\n const [filters, setFilters] = useState({\n name: \"\",\n type: \"\",\n status: \"\",\n createdDateStart: undefined as Date | undefined,\n createdDateEnd: undefined as Date | undefined\n })\n\n // Entity enrichment logic (replaces useCounterpartyEntity hook)\n useEffect(() => {\n const enrichCounterparties = async () => {\n const enriched = await Promise.all(\n mockCounterpartiesList.map(async (counterparty) => {\n let associatedEntity = \"\"\n let entityType: \"product\" | \"business\" | \"individual\" | \"account\" | null = null\n\n // Determine which ID exists and fetch the corresponding name\n if (counterparty.productId) {\n associatedEntity = mockProducts[counterparty.productId] || counterparty.productId\n entityType = \"product\"\n } else if (counterparty.businessId) {\n associatedEntity = mockBusinesses[counterparty.businessId] || counterparty.businessId\n entityType = \"business\"\n } else if (counterparty.individualId) {\n associatedEntity = mockIndividuals[counterparty.individualId] || counterparty.individualId\n entityType = \"individual\"\n } else if (counterparty.accountNumber) {\n associatedEntity = counterparty.accountNumber\n entityType = \"account\"\n }\n\n return {\n ...counterparty,\n associatedEntity,\n entityType\n }\n })\n )\n\n setCounterparties(enriched)\n }\n\n enrichCounterparties()\n }, [])\n\n // Filtering logic with useMemo\n const filteredCounterparties = useMemo(() => {\n const customerId = searchParams.get('customerId')\n let filtered = counterparties\n\n // URL parameter filtering\n if (customerId) {\n filtered = filtered.filter(cp => cp.customerId === customerId)\n }\n\n // Manual filter controls\n if (filters.name) {\n filtered = filtered.filter(cp => \n cp.name.toLowerCase().includes(filters.name.toLowerCase())\n )\n }\n if (filters.type) {\n filtered = filtered.filter(cp => cp.type === filters.type)\n }\n if (filters.status) {\n filtered = filtered.filter(cp => cp.status === filters.status)\n }\n if (filters.createdDateStart) {\n filtered = filtered.filter(cp => \n new Date(cp.created) >= filters.createdDateStart!\n )\n }\n if (filters.createdDateEnd) {\n filtered = filtered.filter(cp => \n new Date(cp.created) <= filters.createdDateEnd!\n )\n }\n\n return filtered\n }, [counterparties, filters, searchParams])\n\n // Sorting logic with useMemo\n const sortedCounterparties = useMemo(() => {\n return [...filteredCounterparties].sort((a, b) => {\n const aValue = a[sortBy as keyof CounterpartyWithEntity]\n const bValue = b[sortBy as keyof CounterpartyWithEntity]\n \n if (aValue < bValue) return sortDirection === \"asc\" ? -1 : 1\n if (aValue > bValue) return sortDirection === \"asc\" ? 1 : -1\n return 0\n })\n }, [filteredCounterparties, sortBy, sortDirection])\n\n // Callbacks with useCallback\n const handleFilterChange = useCallback((field: string, value: string | Date | undefined) => {\n setFilters(prev => ({ ...prev, [field]: value }))\n }, [])\n\n const handleResetFilters = useCallback(() => {\n setFilters({\n name: \"\",\n type: \"\",\n status: \"\",\n createdDateStart: undefined,\n createdDateEnd: undefined\n })\n }, [])\n\n const handleSort = useCallback((key: string) => {\n if (sortBy === key) {\n setSortDirection(prev => prev === \"asc\" ? \"desc\" : \"asc\")\n } else {\n setSortBy(key)\n setSortDirection(\"asc\")\n }\n }, [sortBy])\n\n const handleRowClick = useCallback((counterparty: CounterpartyWithEntity) => {\n navigate(`/counterparty/${counterparty.id}`)\n }, [navigate])\n\n const handleCreateCounterparty = useCallback(() => {\n navigate(\"/counterparty/create\")\n }, [navigate])\n\n // Column definitions (stay in container)\n const columns: DataTableColumn<CounterpartyWithEntity>[] = [\n {\n key: \"name\",\n title: \"Name\",\n sortable: true,\n render: (value, row) => (\n <div className=\"flex items-center gap-2\">\n {row.type === \"BUSINESS\" ? (\n <Building2 className=\"h-4 w-4 text-muted-foreground flex-shrink-0\" />\n ) : (\n <User className=\"h-4 w-4 text-muted-foreground flex-shrink-0\" />\n )}\n <span>{value as string}</span>\n </div>\n ),\n },\n {\n key: \"status\",\n title: \"Status\",\n sortable: true,\n render: (value) => (\n <StatusBadge status={value as \"ACTIVE\" | \"INACTIVE\" | \"PENDING\" | \"SUSPENDED\"} />\n ),\n },\n {\n key: \"associatedEntity\",\n title: \"Associated Entity\",\n sortable: true,\n render: (value, row) => {\n const getEntityIcon = () => {\n switch (row.entityType) {\n case \"product\":\n return <Package className=\"h-4 w-4 text-muted-foreground flex-shrink-0\" />\n case \"business\":\n return <Building2 className=\"h-4 w-4 text-muted-foreground flex-shrink-0\" />\n case \"individual\":\n return <User className=\"h-4 w-4 text-muted-foreground flex-shrink-0\" />\n case \"account\":\n return <Wallet className=\"h-4 w-4 text-muted-foreground flex-shrink-0\" />\n default:\n return null\n }\n }\n\n return (\n <div className=\"flex items-center gap-2\">\n {getEntityIcon()}\n <span className=\"text-primary hover:underline cursor-pointer\">\n {value as string}\n </span>\n </div>\n )\n },\n },\n {\n key: \"created\",\n title: \"Created\",\n sortable: true,\n },\n {\n key: \"modified\",\n title: \"Modified\",\n sortable: true,\n },\n ]\n\n // Render DataTable in useMemo\n const table = useMemo(() => (\n <DataTable\n columns={columns}\n data={sortedCounterparties}\n sortBy={sortBy}\n sortDirection={sortDirection}\n onSort={handleSort}\n onRowClick={handleRowClick}\n />\n ), [columns, sortedCounterparties, sortBy, sortDirection, handleSort, handleRowClick])\n\n return (\n <CounterpartiesView\n table={table}\n filters={filters}\n onFilterChange={handleFilterChange}\n onResetFilters={handleResetFilters}\n onCreateCounterparty={handleCreateCounterparty}\n />\n )\n}\n\nexport default Counterparties\n","import { useState } from \"react\"\nimport { useParams, useNavigate } from \"react-router-dom\"\nimport { mockCounterpartiesList } from \"@/lib/mock-data/counterparties-list-data\"\nimport { mockBusinessDocuments } from \"@/lib/mock-data/document-data\"\nimport { PaymentMethodCardProps } from \"@/components/ui/payment-method-card\"\nimport { CounterpartyDetailView } from \"@/components/counterparty/CounterpartyDetailView\"\nimport { CounterpartyDetail as CounterpartyDetailType } from \"@/lib/schemas\"\n\n// Mock payment methods data\nconst mockPaymentMethods: PaymentMethodCardProps[] = [\n {\n type: \"ACH\",\n fiId: \"FI-67890\",\n accountNumber: \"123456789012\",\n bankName: \"Chase Bank\",\n accountType: \"Checking\"\n },\n {\n type: \"Domestic Wire\",\n fiId: \"FI-12345\",\n accountNumber: \"987654321098\",\n bankName: \"Bank of America\"\n },\n {\n type: \"International Wire\",\n fiId: \"FI-99999\",\n accountNumber: \"GB29NWBK60161331926819\",\n beneficiaryBankName: \"HSBC London\",\n correspondentBankId: \"CORR-12345\",\n intermediaryBankId: \"INT-67890\"\n }\n]\n\nconst CounterpartyDetail = () => {\n const { id } = useParams()\n const navigate = useNavigate()\n \n // Get counterparty data from mock data\n const counterparty = mockCounterpartiesList.find(c => c.id === id)\n \n // Get documents for this counterparty (reusing business documents for demo)\n const counterpartyDocuments = id ? mockBusinessDocuments[id] || [] : []\n \n // Status management state\n const [currentStatus, setCurrentStatus] = useState(counterparty?.status || \"ACTIVE\")\n \n // Edit state for Counterparty Profile\n const [isEditingProfile, setIsEditingProfile] = useState(false)\n\n // Derive initial profile data from counterparty\n const getInitialProfileData = (): CounterpartyDetailType => {\n if (!counterparty) {\n return {\n idType: \"product_id\",\n idValue: \"\",\n email: \"\",\n phone: \"\",\n dateOfBirth: \"\",\n idNumber: \"\",\n address: {\n line1: \"\",\n line2: \"\",\n city: \"\",\n state: \"\",\n postalCode: \"\",\n countryCode: \"US\",\n type: \"\"\n }\n }\n }\n\n // Determine idType and idValue from counterparty data\n let idType: \"product_id\" | \"business_id\" | \"individual_id\" | \"account_number\" = \"product_id\"\n let idValue = \"\"\n\n if (counterparty.productId) {\n idType = \"product_id\"\n idValue = counterparty.productId\n } else if (counterparty.businessId) {\n idType = \"business_id\"\n idValue = counterparty.businessId\n } else if (counterparty.individualId) {\n idType = \"individual_id\"\n idValue = counterparty.individualId\n } else if (counterparty.accountNumber) {\n idType = \"account_number\"\n idValue = counterparty.accountNumber\n }\n\n return {\n idType,\n idValue,\n email: \"\",\n phone: \"\",\n dateOfBirth: \"\",\n idNumber: \"\",\n address: {\n line1: \"\",\n line2: \"\",\n city: \"\",\n state: \"\",\n postalCode: \"\",\n countryCode: \"US\",\n type: \"\"\n }\n }\n }\n\n const [counterpartyProfileData, setCounterpartyProfileData] = useState<CounterpartyDetailType>(getInitialProfileData())\n\n // Callbacks\n const handleEntityClick = (entityType: string, entityId: string) => {\n switch (entityType) {\n case \"business_id\":\n navigate(`/business/${entityId}`)\n break\n case \"individual_id\":\n navigate(`/individual/${entityId}`)\n break\n case \"account_number\":\n navigate(`/account/${entityId}`)\n break\n default:\n break\n }\n }\n\n const handleStatusChange = (newStatus: string) => {\n setCurrentStatus(newStatus as any)\n }\n\n const handleToggleProfileEdit = () => {\n setIsEditingProfile(!isEditingProfile)\n }\n\n const handleProfileDataChange = (newData: CounterpartyDetailType) => {\n setCounterpartyProfileData(newData)\n }\n\n const handleAddPaymentMethod = () => {\n console.log(\"Add payment method\")\n }\n\n const handleAddDocument = () => {\n console.log(\"Add document\")\n }\n\n\n if (!counterparty) {\n return (\n <div className=\"container mx-auto px-4 py-8\">\n <div className=\"text-center\">\n <h1 className=\"text-2xl font-bold mb-2\">Counterparty Not Found</h1>\n <p className=\"text-muted-foreground mb-4\">The counterparty could not be found.</p>\n </div>\n </div>\n )\n }\n\n return (\n <CounterpartyDetailView\n counterpartyName={counterparty.name}\n counterpartyType={counterparty.type}\n currentStatus={currentStatus}\n isEditingProfile={isEditingProfile}\n counterpartyProfileData={counterpartyProfileData}\n mockPaymentMethods={mockPaymentMethods}\n documents={counterpartyDocuments}\n onStatusChange={handleStatusChange}\n onToggleProfileEdit={handleToggleProfileEdit}\n onProfileDataChange={handleProfileDataChange}\n onAddPaymentMethod={handleAddPaymentMethod}\n onAddDocument={handleAddDocument}\n onEntityClick={handleEntityClick}\n />\n )\n}\n\nexport default CounterpartyDetail\n","import { useState } from \"react\"\nimport { useNavigate } from \"react-router-dom\"\nimport { toast } from \"@/hooks/use-toast\"\nimport { CreateCounterpartyView } from \"@/components/counterparty/CreateCounterpartyView\"\n\nconst CreateCounterparty = () => {\n const navigate = useNavigate()\n const [counterpartyData, setCounterpartyData] = useState<any>({\n name: \"\",\n type: \"business\",\n email: \"\",\n phone: \"\",\n dateOfBirth: \"\",\n idNumber: \"\",\n idType: \"product_id\",\n idValue: \"\"\n })\n const [paymentMethods, setPaymentMethods] = useState<any[]>([])\n\n const handlePaymentMethodsChange = (methods: any[]) => {\n setPaymentMethods(methods)\n }\n\n const handleBasicInfoChange = (data: any) => {\n setCounterpartyData(data)\n }\n\n const handleCancel = () => {\n navigate(\"/counterparty\")\n }\n\n const handleSubmit = () => {\n const counterpartyType = counterpartyData?.type || \"\"\n \n if (!counterpartyType) {\n toast({\n title: \"Error\",\n description: \"Please select a counterparty type\",\n variant: \"destructive\"\n })\n return\n }\n\n if (paymentMethods.length === 0) {\n toast({\n title: \"Error\",\n description: \"At least one payment method is required\",\n variant: \"destructive\"\n })\n return\n }\n\n // Check if address is required (when wire payment exists)\n if (paymentMethods.some(m => m.type === 'wire')) {\n // In a real implementation, you would validate the address form data here\n console.log(\"Address validation required for wire transfers\")\n }\n\n // Handle form submission\n console.log(\"Creating counterparty with data:\", {\n type: counterpartyType,\n basicInfo: counterpartyData\n })\n\n toast({\n title: \"Success\",\n description: \"Counterparty created successfully\"\n })\n\n // Navigate to counterparty list after a short delay\n setTimeout(() => {\n navigate(\"/counterparty\")\n }, 1000)\n }\n\n return (\n <CreateCounterpartyView\n counterpartyData={counterpartyData}\n paymentMethods={paymentMethods}\n onPaymentMethodsChange={handlePaymentMethodsChange}\n onBasicInfoChange={handleBasicInfoChange}\n onCancel={handleCancel}\n onSubmit={handleSubmit}\n />\n )\n}\n\nexport default CreateCounterparty","import { PageLayout } from \"@/components/ui/page-layout\"\n\nconst Dashboard = () => {\n return (\n <PageLayout \n title=\"Dashboard\" \n description=\"Overview of your system metrics and activity\"\n >\n <div className=\"text-center py-12 text-muted-foreground\">\n Dashboard content coming soon\n </div>\n </PageLayout>\n )\n}\n\nexport default Dashboard\n","export const mockIndividualsListData = [\n {\n id: \"IND-2024-001\",\n firstName: \"John\",\n lastName: \"Smith\",\n fullName: \"John Smith\",\n productName: \"Personal Checking\",\n cipStatus: \"PASS\" as const,\n status: \"ACTIVE\" as const,\n createdAt: \"2024-01-15T10:30:00Z\",\n modifiedAt: \"2024-01-20T14:45:00Z\",\n },\n {\n id: \"IND-2024-002\",\n firstName: \"Sarah\",\n lastName: \"Johnson\",\n fullName: \"Sarah Johnson\",\n productName: \"Premium Savings\",\n cipStatus: \"PASS\" as const,\n status: \"ACTIVE\" as const,\n createdAt: \"2024-01-18T09:15:00Z\",\n modifiedAt: \"2024-01-22T11:30:00Z\",\n },\n {\n id: \"IND-2024-003\",\n firstName: \"Michael\",\n lastName: \"Chen\",\n fullName: \"Michael Chen\",\n productName: \"Personal Checking\",\n cipStatus: \"IN_REVIEW\" as const,\n status: \"PENDING_APPROVAL\" as const,\n createdAt: \"2024-01-20T13:45:00Z\",\n modifiedAt: \"2024-01-20T13:45:00Z\",\n },\n {\n id: \"IND-2024-004\",\n firstName: \"Emily\",\n lastName: \"Rodriguez\",\n fullName: \"Emily Rodriguez\",\n productName: \"Student Checking\",\n cipStatus: \"PASS\" as const,\n status: \"ACTIVE\" as const,\n createdAt: \"2024-01-22T16:20:00Z\",\n modifiedAt: \"2024-01-25T10:15:00Z\",\n },\n {\n id: \"IND-2024-005\",\n firstName: \"David\",\n lastName: \"Williams\",\n fullName: \"David Williams\",\n productName: \"Business Checking\",\n cipStatus: \"FAIL\" as const,\n status: \"BLOCKED\" as const,\n createdAt: \"2024-01-25T08:30:00Z\",\n modifiedAt: \"2024-01-26T14:00:00Z\",\n },\n]\n\nexport type IndividualListItem = typeof mockIndividualsListData[0]\n","import { useCallback, useMemo, useState } from \"react\"\nimport { useNavigate } from \"react-router-dom\"\nimport { DataTable, DataTableColumn } from \"@/components/ui/data-table\"\nimport { CIPStatusBadge } from \"@/components/ui/cip-status-badge\"\nimport { StatusBadge } from \"@/components/ui/status-badge\"\nimport { mockIndividualsListData } from \"@/lib/mock-data/individuals-list-data\"\nimport { INDIVIDUAL_STATUS_OPTIONS } from \"@/lib/constants\"\nimport { type IndividualsFilters } from \"@/components/individual/IndividualsFiltersSheet\"\nimport { IndividualsView } from \"@/components/individual/IndividualsView\"\n\nconst Individuals = () => {\n const navigate = useNavigate()\n const [individuals] = useState(mockIndividualsListData)\n const [filteredIndividuals, setFilteredIndividuals] = useState(mockIndividualsListData)\n const [sortBy, setSortBy] = useState<string>(\"created\")\n const [sortDirection, setSortDirection] = useState<\"asc\" | \"desc\">(\"desc\")\n const [filters, setFilters] = useState<IndividualsFilters>({\n name: \"\",\n productName: \"\",\n status: \"\",\n createdDateStart: undefined as Date | undefined,\n createdDateEnd: undefined as Date | undefined\n })\n\n const handleFilterChange = useCallback(\n (field: keyof IndividualsFilters, value: string | Date | undefined) => {\n setFilters((prev) => ({ ...prev, [field]: value }))\n },\n []\n )\n\n const applyFilters = useCallback(() => {\n let filtered = individuals\n\n if (filters.name) {\n filtered = filtered.filter(individual => \n individual.fullName.toLowerCase().includes(filters.name.toLowerCase())\n )\n }\n if (filters.productName) {\n filtered = filtered.filter(individual => \n individual.productName.toLowerCase().includes(filters.productName.toLowerCase())\n )\n }\n if (filters.status) {\n filtered = filtered.filter(individual => individual.status === filters.status)\n }\n if (filters.createdDateStart) {\n filtered = filtered.filter(individual => \n new Date(individual.createdAt) >= filters.createdDateStart!\n )\n }\n if (filters.createdDateEnd) {\n filtered = filtered.filter(individual => \n new Date(individual.createdAt) <= filters.createdDateEnd!\n )\n }\n\n setFilteredIndividuals(filtered)\n }, [filters, individuals])\n\n const resetFilters = useCallback(() => {\n setFilters({\n name: \"\",\n productName: \"\",\n status: \"\",\n createdDateStart: undefined,\n createdDateEnd: undefined\n })\n setFilteredIndividuals(individuals)\n }, [individuals])\n\n const handleSort = useCallback((key: string) => {\n if (sortBy === key) {\n setSortDirection(sortDirection === \"asc\" ? \"desc\" : \"asc\")\n } else {\n setSortBy(key)\n setSortDirection(\"asc\")\n }\n }, [sortBy, sortDirection])\n\n const handleRowClick = useCallback((row: any) => {\n navigate(`/individual/${row.id}`)\n }, [navigate])\n\n const handleCreateIndividual = useCallback(() => {\n navigate(\"/individual/create\")\n }, [navigate])\n\n const columns: DataTableColumn[] = useMemo(\n () => [\n {\n key: \"id\",\n title: \"Individual ID\",\n sortable: true,\n },\n {\n key: \"fullName\",\n title: \"Name\",\n sortable: true,\n },\n {\n key: \"productName\",\n title: \"Product Name\",\n sortable: true,\n },\n {\n key: \"cipStatus\",\n title: \"CIP Status\",\n sortable: true,\n render: (value) => <CIPStatusBadge status={value as any} />,\n },\n {\n key: \"status\",\n title: \"Status\",\n sortable: true,\n render: (value) => <StatusBadge status={value as any} />,\n },\n {\n key: \"createdAt\",\n title: \"Created\",\n sortable: true,\n render: (value) => new Date(value).toLocaleDateString(),\n },\n {\n key: \"modifiedAt\",\n title: \"Modified\",\n sortable: true,\n render: (value) => new Date(value).toLocaleDateString(),\n },\n ],\n []\n )\n\n const sortedIndividuals = useMemo(() => {\n return [...filteredIndividuals].sort((a, b) => {\n const aValue = a[sortBy as keyof typeof a]\n const bValue = b[sortBy as keyof typeof b]\n\n if (aValue < bValue) return sortDirection === \"asc\" ? -1 : 1\n if (aValue > bValue) return sortDirection === \"asc\" ? 1 : -1\n return 0\n })\n }, [filteredIndividuals, sortBy, sortDirection])\n\n const tableNode = useMemo(\n () => (\n <DataTable\n columns={columns}\n data={sortedIndividuals}\n sortBy={sortBy}\n sortDirection={sortDirection}\n onSort={handleSort}\n onRowClick={handleRowClick}\n />\n ),\n [columns, handleRowClick, handleSort, sortBy, sortDirection, sortedIndividuals]\n )\n\n return (\n <IndividualsView\n filters={filters}\n statusOptions={INDIVIDUAL_STATUS_OPTIONS}\n onFilterChange={handleFilterChange}\n onResetFilters={resetFilters}\n onApplyFilters={applyFilters}\n onCreateIndividual={handleCreateIndividual}\n table={tableNode}\n />\n )\n}\n\nexport default Individuals\n","export const mockIndividualData = {\n id: \"IND-2024-001\",\n firstName: \"John\",\n lastName: \"Smith\",\n dateOfBirth: \"1985-06-15\",\n idType: \"SSN\" as const,\n idNumber: \"123-45-6789\",\n ssn: \"***-**-4567\",\n email: \"john.smith@email.com\",\n mobilePhone: \"+1 (555) 123-4567\",\n \n // Address\n streetAddress: \"123 Main Street\",\n apartment: \"Apt 4B\",\n city: \"San Francisco\",\n state: \"CA\",\n postalCode: \"94102\",\n country: \"United States\",\n \n // Integration\n externalId: \"EXT-IND-001\",\n productId: \"PROD-CHECKING-001\",\n productName: \"Personal Checking\",\n \n // Status Information\n status: \"active\" as const,\n cipStatus: \"verified\" as const,\n entityType: \"individual\" as const,\n subType: \"retail\" as const,\n \n // Dates\n createdAt: \"2024-01-15T10:30:00Z\",\n modifiedAt: \"2024-01-20T14:45:00Z\",\n \n // OFAC\n ofacStatus: \"clear\" as const,\n lastOfacCheck: \"2024-01-20T14:45:00Z\",\n}\n\nexport type Individual = typeof mockIndividualData\n","import { useCallback, useMemo, useState } from \"react\"\nimport { useNavigate, useParams } from \"react-router-dom\"\nimport { mockIndividualData } from \"@/lib/mock-data/individual-data\"\nimport { mockOFACChecks } from \"@/lib/mock-data/ofac-data\"\nimport { IndividualDetailView } from \"@/components/individual/IndividualDetailView\"\nimport { INDIVIDUAL_STATUS_OPTIONS } from \"@/lib/constants\"\nimport { type ExternalAccountFormData } from \"@/components/individual/AddExternalAccountDialog\"\nimport { toast } from \"sonner\"\nimport type { BusinessDocument } from \"@/lib/mock-data/document-data\"\nimport type { IndividualProfileEdit } from \"@/lib/schemas/individual-schemas\"\nimport type React from \"react\"\n\nconst IndividualDetail = () => {\n const { id } = useParams()\n const navigate = useNavigate()\n\n // Flag to show/hide the right-side timeline column (status card)\n const showTimeline = true\n\n const [editingCards, setEditingCards] = useState<Record<string, boolean>>({})\n const [status, setStatus] = useState(mockIndividualData.status)\n\n const [profile, setProfile] = useState<IndividualProfileEdit>({\n firstName: mockIndividualData.firstName,\n lastName: mockIndividualData.lastName,\n dateOfBirth: mockIndividualData.dateOfBirth,\n idType: mockIndividualData.idType,\n idNumber: mockIndividualData.idNumber,\n ssn: mockIndividualData.ssn,\n email: mockIndividualData.email,\n mobilePhone: mockIndividualData.mobilePhone,\n streetAddress: mockIndividualData.streetAddress,\n apartment: mockIndividualData.apartment,\n city: mockIndividualData.city,\n state: mockIndividualData.state,\n postalCode: mockIndividualData.postalCode,\n country: mockIndividualData.country,\n externalId: mockIndividualData.externalId,\n productId: mockIndividualData.productId,\n })\n\n type ExternalAccountRow = {\n id: string\n routingNumber: string\n accountNumber: string\n bankName: string\n bankAccountType: string\n }\n\n const [externalAccounts, setExternalAccounts] = useState<ExternalAccountRow[]>([])\n\n const [documents, setDocuments] = useState<BusinessDocument[]>([\n {\n id: \"ind-doc-001\",\n name: \"Proof_of_Address.pdf\",\n type: \"PROOF_OF_ADDRESS\",\n description: \"Utility bill\",\n size: \"0.8 MB\",\n uploadedBy: \"Current User\",\n uploadedAt: \"2024-01-15T10:30:00Z\",\n url: \"/sample-documents/sample.pdf\",\n },\n ])\n\n const toggleEdit = useCallback((cardKey: string) => {\n setEditingCards((prev) => ({\n ...prev,\n [cardKey]: !prev[cardKey],\n }))\n }, [])\n\n const handleStatusChange = useCallback(\n (newValue: string) => {\n setStatus(newValue as typeof status)\n console.log(\"Status changed to:\", newValue)\n },\n [status]\n )\n\n const individualId = id || mockIndividualData.id\n\n const latestOFAC = useMemo(() => {\n return mockOFACChecks\n .filter((check) => check.entityId === individualId && check.entityType === \"Individual\")\n .sort((a, b) => new Date(b.created).getTime() - new Date(a.created).getTime())[0]\n }, [individualId])\n\n const statusOptions = useMemo(\n () => INDIVIDUAL_STATUS_OPTIONS,\n []\n )\n\n const handleViewAccount = useCallback(() => {\n console.log(\"View Account\")\n }, [])\n\n const handleAddAsCounterparty = useCallback(() => {\n console.log(\"Add as Counterparty\")\n }, [])\n\n const handleNavigateToOFAC = useCallback(\n (ofacCheckId?: string) => {\n if (ofacCheckId) {\n navigate(`/compliance/ofac/${ofacCheckId}`)\n } else {\n navigate(\"/compliance/ofac\")\n }\n },\n [navigate]\n )\n\n const handleProductIdClick = useCallback(\n (productId: string) => {\n navigate(`/products/${productId}`)\n },\n [navigate]\n )\n\n const handleAddExternalAccount = useCallback(\n async (data: ExternalAccountFormData) => {\n // Enforce at most 1 external account\n if (externalAccounts.length >= 1) {\n toast.error(\"Only one external account is allowed\")\n return false\n }\n\n const newAccount: ExternalAccountRow = {\n id: `ext-${Date.now()}`,\n routingNumber: (data.routingNumber || \"\").trim() || \"—\",\n accountNumber: (data.accountNumber || \"\").trim() || \"—\",\n bankName: (data.bankName || \"\").trim() || \"—\",\n bankAccountType: (data.bankAccountType || \"\").trim() || \"—\",\n }\n\n setExternalAccounts([newAccount])\n toast.success(\"External account added\")\n },\n [externalAccounts.length]\n )\n\n const handleDeleteExternalAccount = useCallback(async (accountId: string) => {\n setExternalAccounts((prev) => prev.filter((acc) => acc.id !== accountId))\n toast.success(\"External account deleted\")\n }, [])\n\n const handleDocumentUpload = useCallback(\n async (file: File, metadata: { name: string; description: string; type: string }) => {\n const next: BusinessDocument = {\n id: `ind-doc-${Date.now()}`,\n name: metadata.name,\n type: metadata.type,\n description: metadata.description || undefined,\n size: `${(file.size / 1024 / 1024).toFixed(1)} MB`,\n uploadedBy: \"Current User\",\n uploadedAt: new Date().toISOString(),\n url: URL.createObjectURL(file),\n }\n\n setDocuments((prev) => [next, ...prev])\n },\n []\n )\n\n const handleDocumentDelete = useCallback(async (documentId: string) => {\n setDocuments((prev) => prev.filter((d) => d.id !== documentId))\n }, [])\n\n // Header navigation callbacks (kept in container)\n const handleNavigateToAccounts = handleViewAccount\n const handleNavigateToCounterparty = handleAddAsCounterparty\n\n const renderDocumentViewer = useCallback((doc: BusinessDocument): React.ReactNode => {\n if (doc.url && doc.name.toLowerCase().endsWith(\".pdf\")) {\n return (\n <iframe\n title={doc.name}\n src={doc.url}\n className=\"w-full h-[70vh] rounded-md border bg-background\"\n />\n )\n }\n return null\n }, [])\n\n return (\n <>\n <IndividualDetailView\n individual={{\n id: individualId,\n firstName: mockIndividualData.firstName,\n lastName: mockIndividualData.lastName,\n cipStatus: mockIndividualData.cipStatus,\n subType: \"Customer\",\n }}\n profile={profile}\n onProfileSave={(data) => {\n // Keep this mocked flow simple: merge edits into local state.\n setProfile((prev) => ({ ...prev, ...data }))\n }}\n status={status}\n statusOptions={statusOptions}\n onStatusChange={handleStatusChange}\n latestOFAC={latestOFAC}\n onNavigateToOFAC={handleNavigateToOFAC}\n onNavigateToAccounts={handleNavigateToAccounts}\n onNavigateToCounterparty={handleNavigateToCounterparty}\n showTimeline={showTimeline}\n\n profileIsEditing={editingCards[\"profile\"] || false}\n onToggleProfileEdit={() => toggleEdit(\"profile\")}\n onProductIdClick={handleProductIdClick}\n\n externalAccounts={externalAccounts}\n onAddExternalAccount={handleAddExternalAccount}\n onDeleteExternalAccount={handleDeleteExternalAccount}\n\n documents={documents}\n onDocumentUpload={handleDocumentUpload}\n onDocumentDelete={handleDocumentDelete}\n renderDocumentViewer={renderDocumentViewer}\n />\n </>\n )\n}\n\nexport default IndividualDetail\n","import { useCallback } from \"react\"\nimport { useNavigate } from \"react-router-dom\"\nimport { useFormWithEditState } from \"@/hooks/useFormWithEditState\"\nimport { individualProfileEditSchema, IndividualProfileEdit } from \"@/lib/schemas/individual-schemas\"\nimport { CreateIndividualView } from \"@/components/individual/CreateIndividualView\"\n\nconst CreateIndividual = () => {\n const navigate = useNavigate()\n\n const form = useFormWithEditState<IndividualProfileEdit>({\n schema: individualProfileEditSchema,\n defaultValues: {\n firstName: \"\",\n lastName: \"\",\n dateOfBirth: \"\",\n idType: \"SSN\",\n idNumber: \"\",\n ssn: \"\",\n email: \"\",\n mobilePhone: \"\",\n streetAddress: \"\",\n apartment: \"\",\n city: \"\",\n state: \"\",\n postalCode: \"\",\n country: \"United States\",\n externalId: \"\",\n productId: \"\",\n },\n initialEditing: true,\n onSave: async (data) => {\n console.log(\"Creating individual:\", data)\n // API call would go here\n navigate(\"/individual\")\n }\n })\n\n const handleCancel = useCallback(() => {\n navigate(\"/individual\")\n }, [navigate])\n\n const handleSubmit = useCallback(() => {\n // Keep form submission logic in the container\n form.handleSubmit(form.handleSave)()\n }, [form])\n\n return (\n <CreateIndividualView form={form} onCancel={handleCancel} onSubmit={handleSubmit} />\n )\n}\n\nexport default CreateIndividual\n","import { useLocation } from \"react-router-dom\";\nimport { useEffect } from \"react\";\n\nconst NotFound = () => {\n const location = useLocation();\n\n useEffect(() => {\n console.error(\n \"404 Error: User attempted to access non-existent route:\",\n location.pathname\n );\n }, [location.pathname]);\n\n return (\n <div className=\"min-h-screen flex items-center justify-center bg-gray-100\">\n <div className=\"text-center\">\n <h1 className=\"text-4xl font-bold mb-4\">404</h1>\n <p className=\"text-xl text-gray-600 mb-4\">Oops! Page not found</p>\n <a href=\"/\" className=\"text-blue-500 hover:text-blue-700 underline\">\n Return to Home\n </a>\n </div>\n </div>\n );\n};\n\nexport default NotFound;\n","import { StatementHeader, StatementTransaction } from \"@/lib/mock-data/statement-data\"\n\n/**\n * Escapes CSV values that contain commas, quotes, or newlines\n */\nfunction escapeCsvValue(value: string | number): string {\n const stringValue = String(value)\n if (stringValue.includes(',') || stringValue.includes('\"') || stringValue.includes('\\n')) {\n return `\"${stringValue.replace(/\"/g, '\"\"')}\"`\n }\n return stringValue\n}\n\n/**\n * Generates a CSV string from statement header and transaction data\n */\nexport function generateStatementCSV(\n header: StatementHeader,\n transactions: StatementTransaction[]\n): string {\n const lines: string[] = []\n\n // Header section\n lines.push('Statement Information')\n if (header.account) {\n lines.push(`Account,${escapeCsvValue(header.account)}`)\n }\n if (header.productId) {\n lines.push(`Product ID,${escapeCsvValue(header.productId)}`)\n }\n if (header.programId) {\n lines.push(`Program ID,${escapeCsvValue(header.programId)}`)\n }\n if (header.startDate) {\n lines.push(`Start Date,${escapeCsvValue(header.startDate)}`)\n }\n if (header.endDate) {\n lines.push(`End Date,${escapeCsvValue(header.endDate)}`)\n }\n if (header.startingBalance) {\n lines.push(`Starting Balance,${escapeCsvValue(header.startingBalance)}`)\n }\n if (header.endingBalance) {\n lines.push(`Ending Balance,${escapeCsvValue(header.endingBalance)}`)\n }\n \n // Empty line separator\n lines.push('')\n \n // Transaction section\n lines.push('Transaction Summary')\n lines.push('Transaction Type,Direction,Amount,Count')\n \n transactions.forEach(transaction => {\n const row = [\n escapeCsvValue(transaction.transactionType),\n escapeCsvValue(transaction.direction),\n escapeCsvValue(transaction.amount),\n escapeCsvValue(transaction.count)\n ].join(',')\n lines.push(row)\n })\n\n return lines.join('\\n')\n}\n\n/**\n * Triggers a browser download for CSV content\n */\nexport function downloadCSV(content: string, filename: string): void {\n const blob = new Blob([content], { type: 'text/csv;charset=utf-8;' })\n const url = URL.createObjectURL(blob)\n \n const link = document.createElement('a')\n link.href = url\n link.download = filename\n link.style.display = 'none'\n \n document.body.appendChild(link)\n link.click()\n \n // Cleanup\n document.body.removeChild(link)\n URL.revokeObjectURL(url)\n}\n","import { useState, useEffect } from \"react\"\nimport { StatementView } from \"@/components/statement/StatementView\"\nimport { \n mockPrograms, \n mockProducts, \n mockStatementHeader, \n mockStatementTransactions,\n StatementHeader,\n StatementTransaction \n} from \"@/lib/mock-data/statement-data\"\nimport { toast } from \"@/hooks/use-toast\"\nimport { generateStatementCSV, downloadCSV } from \"@/lib/utils/csv-utils\"\n\nexport default function Statement() {\n // State\n const [statementType, setStatementType] = useState<string>(\"root\")\n const [selectedProgram, setSelectedProgram] = useState<string>(\"\")\n const [selectedProduct, setSelectedProduct] = useState<string>(\"\")\n const [accountNumber, setAccountNumber] = useState<string>(\"\")\n const [startDate, setStartDate] = useState<Date>(() => {\n const now = new Date()\n return new Date(now.getFullYear(), now.getMonth(), 1)\n })\n const [endDate, setEndDate] = useState<Date>(new Date())\n const [statementGenerated, setStatementGenerated] = useState(false)\n const [isLoading, setIsLoading] = useState(false)\n \n // Data state - fetched from API\n const [programs, setPrograms] = useState<Array<{ value: string; label: string }>>([])\n const [products, setProducts] = useState<Array<{ value: string; label: string }>>([])\n const [programsLoading, setProgramsLoading] = useState(false)\n const [productsLoading, setProductsLoading] = useState(false)\n const [programsError, setProgramsError] = useState<string | null>(null)\n const [productsError, setProductsError] = useState<string | null>(null)\n const [statementHeader, setStatementHeader] = useState<StatementHeader | null>(null)\n const [statementTransactions, setStatementTransactions] = useState<StatementTransaction[]>([])\n\n // Fetch programs from API\n const fetchPrograms = async () => {\n setProgramsLoading(true)\n setProgramsError(null)\n try {\n // TODO: Replace with actual API endpoint\n // const response = await fetch('/api/programs')\n // const data = await response.json()\n \n // Simulate API call with mock data\n await new Promise(resolve => setTimeout(resolve, 1000))\n \n // MOCK ERROR - Comment out the line below to simulate successful fetch\n throw new Error(\"Network connection timeout - Unable to reach program service\")\n \n // In real API call, response could be string (error) or array (success)\n const data: any = mockPrograms\n \n // Validate response type - if it's a string, it's an error message\n if (typeof data === 'string') {\n throw new Error(data)\n }\n \n setPrograms(data)\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : \"Failed to load programs\"\n setProgramsError(errorMessage)\n setPrograms([])\n \n toast({\n title: \"Error loading programs\",\n description: errorMessage,\n variant: \"destructive\"\n })\n } finally {\n setProgramsLoading(false)\n }\n }\n\n // Fetch products from API\n const fetchProducts = async () => {\n setProductsLoading(true)\n setProductsError(null)\n try {\n // TODO: Replace with actual API endpoint\n // const response = await fetch('/api/products')\n // const data = await response.json()\n \n // Simulate API call with mock data\n await new Promise(resolve => setTimeout(resolve, 1000))\n \n // In real API call, response could be string (error) or array (success)\n const data: any = mockProducts\n \n // Validate response type - if it's a string, it's an error message\n if (typeof data === 'string') {\n throw new Error(data)\n }\n \n setProducts(data)\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : \"Failed to load products\"\n setProductsError(errorMessage)\n setProducts([])\n \n toast({\n title: \"Error loading products\",\n description: errorMessage,\n variant: \"destructive\"\n })\n } finally {\n setProductsLoading(false)\n }\n }\n\n // Fetch data on mount\n useEffect(() => {\n fetchPrograms()\n fetchProducts()\n }, [])\n\n // Handlers\n const handleStatementTypeChange = (value: string) => {\n setStatementType(value)\n // Reset secondary selection when type changes\n setSelectedProgram(\"\")\n setSelectedProduct(\"\")\n setAccountNumber(\"\")\n }\n\n const handleGenerateStatement = async () => {\n if (!statementType || !startDate || !endDate) return\n \n // Validate secondary selection based on type\n if (statementType === \"program\" && !selectedProgram) return\n if (statementType === \"product\" && !selectedProduct) return\n if (statementType === \"account\" && !accountNumber) return\n\n setIsLoading(true)\n \n try {\n // TODO: API call to generate statement\n console.log(\"Generating statement with:\", {\n statementType,\n selectedProgram,\n selectedProduct,\n accountNumber,\n startDate,\n endDate\n })\n\n // Simulate API delay\n await new Promise(resolve => setTimeout(resolve, 1000))\n\n // Set mock data - replace with API response\n setStatementHeader(mockStatementHeader)\n setStatementTransactions(mockStatementTransactions)\n setStatementGenerated(true)\n } finally {\n setIsLoading(false)\n }\n }\n\n const isGenerateDisabled = () => {\n if (!statementType || !startDate || !endDate) return true\n \n // Check for errors or loading in selected type\n if (statementType === \"program\" && (programsError || programsLoading)) return true\n if (statementType === \"product\" && (productsError || productsLoading)) return true\n \n // Check for missing selections\n if (statementType === \"program\" && !selectedProgram) return true\n if (statementType === \"product\" && !selectedProduct) return true\n if (statementType === \"account\" && !accountNumber) return true\n \n return false\n }\n\n const handleRetryFetch = () => {\n if (statementType === \"program\" && programsError) {\n fetchPrograms()\n } else if (statementType === \"product\" && productsError) {\n fetchProducts()\n }\n }\n\n const shouldShowRetry = () => {\n if (statementType === \"program\" && programsError) return true\n if (statementType === \"product\" && productsError) return true\n return false\n }\n\n const handleDownloadCSV = () => {\n if (!statementHeader || !statementTransactions.length) {\n toast({\n title: \"No statement data\",\n description: \"Please generate a statement before downloading\",\n variant: \"destructive\"\n })\n return\n }\n\n try {\n const csvContent = generateStatementCSV(statementHeader, statementTransactions)\n \n // Generate filename based on statement type and date\n const dateStr = new Date().toISOString().split('T')[0]\n let filenamePart = statementType\n if (statementType === \"program\" && selectedProgram) {\n filenamePart = `program_${selectedProgram}`\n } else if (statementType === \"product\" && selectedProduct) {\n filenamePart = `product_${selectedProduct}`\n } else if (statementType === \"account\" && accountNumber) {\n filenamePart = `account_${accountNumber}`\n }\n \n const filename = `statement_${filenamePart}_${dateStr}.csv`\n downloadCSV(csvContent, filename)\n \n toast({\n title: \"Download started\",\n description: \"Your statement CSV is being downloaded\"\n })\n } catch (error) {\n toast({\n title: \"Download failed\",\n description: error instanceof Error ? error.message : \"Failed to download CSV\",\n variant: \"destructive\"\n })\n }\n }\n\n const handlePrintPDF = () => {\n // TODO: API call to print PDF\n console.log(\"Printing PDF...\")\n }\n\n const handleEdit = () => {\n setStatementGenerated(false)\n }\n\n return (\n <StatementView\n statementType={statementType}\n selectedProgram={selectedProgram}\n selectedProduct={selectedProduct}\n accountNumber={accountNumber}\n startDate={startDate}\n endDate={endDate}\n statementGenerated={statementGenerated}\n programs={programs}\n products={products}\n statementHeader={statementHeader}\n statementTransactions={statementTransactions}\n programsLoading={programsLoading}\n productsLoading={productsLoading}\n programsError={programsError}\n productsError={productsError}\n onStatementTypeChange={handleStatementTypeChange}\n onProgramChange={setSelectedProgram}\n onProductChange={setSelectedProduct}\n onAccountNumberChange={setAccountNumber}\n onStartDateChange={setStartDate}\n onEndDateChange={setEndDate}\n onGenerateStatement={handleGenerateStatement}\n onEdit={handleEdit}\n onDownloadCSV={handleDownloadCSV}\n onPrintPDF={handlePrintPDF}\n onRetryFetch={handleRetryFetch}\n shouldShowRetry={shouldShowRetry()}\n isGenerateDisabled={isGenerateDisabled()}\n isLoading={isLoading}\n />\n )\n}\n","export interface Transaction {\n id: string\n created: string\n accountNumber: string\n amount: number\n customer: string\n counterparty: string\n description: string\n transactionType: string\n status: \"PENDING\" | \"POSTED\" | \"FAILED\" | \"CANCELLED\"\n processingStatus: \"INITIATED\" | \"SUBMITTED\" | \"CUSTOMER_REVIEW\" | \"MANUAL_REVIEW\" | \"SENT\" | \"CONFIRMED\"\n updated: string\n isInbound: boolean\n ofacId?: string\n productId?: string\n wireDetails?: any\n achDetails?: any\n originalFilename?: string\n loadedFromFile?: string\n linkedPaymentId?: string\n pendingUntilDate?: string\n furtherCreditTo?: string\n balanceAvailableDate?: string\n requesterUsername?: string\n requesterIpAddress?: string\n settlementFilename?: string\n duplicateOfPaymentId?: string\n returnedInFile?: string\n alerts?: string[]\n}\n\nexport const mockTransactions: Transaction[] = [\n {\n id: \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n created: \"2025-10-01 00:16\",\n accountNumber: \"126713605718\",\n amount: 34539.18,\n customer: \"Rise Works Inc\",\n counterparty: \"VEDANT JAYESHKUMAR PATI\",\n description: \"4NnuJKyD9a8LUmkm\",\n transactionType: \"Ach Originator Credit\",\n status: \"PENDING\",\n processingStatus: \"SENT\",\n updated: \"2025-10-01 00:16\",\n isInbound: true,\n ofacId: \"18323208\",\n productId: \"130\",\n loadedFromFile: \"iso21130757012764355B7.xml.126534273Q299\",\n linkedPaymentId: \"b2c3d4e5-f6a7-8901-bcde-f23456789012\",\n requesterUsername: \"admin@riseworks.com\",\n requesterIpAddress: \"192.168.1.100\",\n achDetails: {\n originatorName: \"Rise Works Inc\",\n originatorRtn: \"021000021\",\n originatorId: \"1234567890\",\n receiverName: \"VEDANT JAYESHKUMAR PATI\",\n receiverRtn: \"021000021\",\n receiverAccount: \"9876543210\",\n secCode: \"CCD\",\n accountType: \"Checking\",\n effectiveDate: \"2025-10-01\",\n service: \"Same Day\",\n traceNumber: \"021000021234567\",\n addenda: \"PAYROLL - 4NnuJKyD9a8LUmkm\",\n raw: {\n recordType: \"6\",\n transactionCode: \"22\",\n receivingDFIIdentification: \"02100002\",\n checkDigit: \"1\",\n DFIAccountNumber: \"9876543210\",\n amount: \"0000729332\",\n individualIdentificationNumber: \"1234567890\",\n individualName: \"VEDANT JAYESHKUMAR PA\",\n discretionaryData: \" \",\n addendaRecordIndicator: \"0\",\n traceNumber: \"021000021234567\",\n batchHeader: {\n recordType: \"5\",\n serviceClassCode: \"200\",\n companyName: \"RISE WORKS INC\",\n companyDiscretionaryData: \"4NnuJKyD9a8LU\",\n companyIdentification: \"1234567890\",\n standardEntryClassCode: \"CCD\",\n companyEntryDescription: \"PAYROLL\",\n companyDescriptiveDate: \"251001\",\n effectiveEntryDate: \"251001\",\n settlementDate: \" \",\n originatorStatusCode: \"1\",\n originatingDFIIdentification: \"02100002\",\n batchNumber: \"0000001\"\n }\n }\n }\n },\n {\n id: \"b2c3d4e5-f6a7-8901-bcde-f23456789012\",\n created: \"2025-10-01 00:09\",\n accountNumber: \"899606565333\",\n amount: 0.50,\n customer: \"SSB Bank\",\n counterparty: \"Maung Lwin\",\n description: \"ACH Fee\",\n transactionType: \"Fee Ach Transaction\",\n status: \"POSTED\",\n processingStatus: \"CONFIRMED\",\n updated: \"2025-10-01 00:09\",\n isInbound: false\n },\n {\n id: \"3\",\n created: \"2025-09-30 23:45\",\n accountNumber: \"445821903456\",\n amount: 15000.00,\n customer: \"Tech Solutions LLC\",\n counterparty: \"Global Suppliers Inc\",\n description: \"Invoice Payment #INV-2024-089\",\n transactionType: \"Wire Domestic Credit\",\n status: \"POSTED\",\n processingStatus: \"CONFIRMED\",\n updated: \"2025-10-01 00:12\",\n isInbound: false,\n settlementFilename: \"settlement_20250930.csv\",\n alerts: [\"OFAC Review Pending\"],\n wireDetails: {\n type: \"DOMESTIC\",\n imad: \"20250930MMQFMP030000123\",\n omad: \"20250930MMQFMP030000124\",\n originatorName: \"Tech Solutions LLC\",\n originatorAccountNumber: \"445821903456\",\n originatorFIName: \"Wells Fargo Bank\",\n originatorFIId: \"121000248\",\n beneficiaryName: \"Global Suppliers Inc\",\n beneficiaryAccountNumber: \"998877665544\",\n beneficiaryFIName: \"Chase Bank\",\n beneficiaryFIId: \"021000021\",\n originatorToBeneficiaryInfo: \"Invoice Payment for INV-2024-089 - Equipment Purchase\",\n raw: {\n fiToFICstmrCdtTrf: {\n grpHdr: {\n msgId: \"20250703QMGFT004000033\",\n creDtTm: {\n dateTime: {\n date: { year: 2025, month: 7, day: 3 },\n time: { hour: 12, minute: 26, second: 1, nano: 990000000 }\n },\n offset: { totalSeconds: -14400 }\n },\n nbOfTxs: \"1\",\n sttlmInf: {\n sttlmMtd: \"CLRG\",\n clrSys: { cd: \"FDW\" }\n }\n },\n cdtTrfTxInf: [\n {\n pmtId: {\n endToEndId: \"Test wire #1\",\n uetr: \"2638c715-d0a2-4fc9-a79b-a4e78dc9cd49\"\n },\n pmtTpInf: {\n lclInstrm: { prtry: \"CTRC\" }\n },\n intrBkSttlmAmt: { value: 38, ccy: \"USD\" },\n intrBkSttlmDt: { year: 2025, month: 7, day: 3 },\n instdAmt: { value: 11, ccy: \"USD\" },\n chrgBr: \"SHAR\"\n }\n ]\n },\n type: \"MX\",\n identifier: \"pacs.008.001.08\"\n }\n }\n },\n {\n id: \"4\",\n created: \"2025-09-30 22:18\",\n accountNumber: \"778901234567\",\n amount: -2500.75,\n customer: \"Metro Business Group\",\n counterparty: \"Pacific Trading Co\",\n description: \"Vendor Payment\",\n transactionType: \"Ach Originator Debit\",\n status: \"POSTED\",\n processingStatus: \"CONFIRMED\",\n updated: \"2025-09-30 23:01\",\n isInbound: false\n },\n {\n id: \"5\",\n created: \"2025-09-30 21:05\",\n accountNumber: \"334455667788\",\n amount: 500.00,\n customer: \"Sunrise Enterprises\",\n counterparty: \"John Mitchell\",\n description: \"Contractor Payment\",\n transactionType: \"Ach Originator Credit\",\n status: \"PENDING\",\n processingStatus: \"CUSTOMER_REVIEW\",\n updated: \"2025-09-30 21:05\",\n isInbound: false\n },\n {\n id: \"6\",\n created: \"2025-09-30 19:30\",\n accountNumber: \"998877665544\",\n amount: -125000.00,\n customer: \"Real Estate Holdings\",\n counterparty: \"Property Management LLC\",\n description: \"Monthly Rent Payment\",\n transactionType: \"Wire Domestic Debit\",\n status: \"PENDING\",\n processingStatus: \"SENT\",\n updated: \"2025-09-30 20:15\",\n isInbound: false,\n wireDetails: {\n type: \"DOMESTIC\",\n imad: \"20250930MMQFMP030000125\",\n omad: \"20250930MMQFMP030000126\",\n originatorName: \"Real Estate Holdings\",\n originatorAccountNumber: \"998877665544\",\n originatorFIName: \"Fifth Third Bank\",\n originatorFIId: \"042000314\",\n beneficiaryName: \"Property Management LLC\",\n beneficiaryAccountNumber: \"112233445566\",\n beneficiaryFIName: \"US Bank\",\n beneficiaryFIId: \"091000019\"\n }\n },\n {\n id: \"7\",\n created: \"2025-09-30 17:22\",\n accountNumber: \"556677889900\",\n amount: 3.00,\n customer: \"First National Bank\",\n counterparty: \"Sarah Johnson\",\n description: \"Wire Transfer Fee\",\n transactionType: \"Fee Wire Transaction\",\n status: \"POSTED\",\n processingStatus: \"CONFIRMED\",\n updated: \"2025-09-30 17:22\",\n isInbound: false\n },\n {\n id: \"8\",\n created: \"2025-09-30 15:40\",\n accountNumber: \"223344556677\",\n amount: 8750.50,\n customer: \"Innovation Labs Inc\",\n counterparty: \"Research Partners\",\n description: \"R&D Funding Transfer\",\n transactionType: \"Ach Originator Credit\",\n status: \"FAILED\",\n processingStatus: \"MANUAL_REVIEW\",\n updated: \"2025-09-30 16:10\",\n isInbound: false\n },\n {\n id: \"9\",\n created: \"2025-09-30 14:20\",\n accountNumber: \"112233445566\",\n amount: 15000.00,\n customer: \"Sunrise Ventures LLC\",\n counterparty: \"Michael Chen\",\n description: \"Investment Deposit\",\n transactionType: \"ACH Credit\",\n status: \"POSTED\",\n processingStatus: \"CONFIRMED\",\n updated: \"2025-09-30 14:45\",\n isInbound: true,\n achDetails: {\n originatorName: \"Sunrise Ventures LLC\",\n originatorRtn: \"091000019\",\n originatorId: \"1234567890\",\n receiverName: \"Michael Chen\",\n receiverRtn: \"091000019\",\n receiverAccount: \"112233445566\",\n secCode: \"CCD\",\n accountType: \"Checking\",\n effectiveDate: \"2025-09-30\",\n service: \"Standard\",\n traceNumber: \"091000019876543\"\n }\n },\n {\n id: \"10\",\n created: \"2025-09-30 12:30\",\n accountNumber: \"998877665544\",\n amount: -8500.00,\n customer: \"Metro Services Inc\",\n counterparty: \"Jennifer Lopez\",\n description: \"Utility Payment\",\n transactionType: \"ACH Debit\",\n status: \"PENDING\",\n processingStatus: \"SUBMITTED\",\n updated: \"2025-09-30 12:45\",\n isInbound: false,\n achDetails: {\n originatorName: \"Metro Services Inc\",\n originatorRtn: \"091000019\",\n originatorId: \"9876543210\",\n receiverName: \"Jennifer Lopez\",\n receiverRtn: \"091000019\",\n receiverAccount: \"998877665544\",\n secCode: \"PPD\",\n accountType: \"Checking\",\n effectiveDate: \"2025-10-01\",\n service: \"Standard\",\n traceNumber: \"091000019876544\"\n }\n },\n {\n id: \"11\",\n created: \"2025-09-30 11:00\",\n accountNumber: \"445566778899\",\n amount: 250000.00,\n customer: \"Global Partners AG\",\n counterparty: \"Robert Fischer\",\n description: \"International Transfer - EUR\",\n transactionType: \"Wire International Credit\",\n status: \"POSTED\",\n processingStatus: \"CONFIRMED\",\n updated: \"2025-09-30 11:30\",\n isInbound: true,\n wireDetails: {\n type: \"INTERNATIONAL\",\n imad: \"20250930MMQFMP030000987\",\n omad: \"20250930MMQFMP030000988\",\n originatorName: \"Global Partners AG\",\n originatorAccountNumber: \"998877664321\",\n originatorFIName: \"UBS Switzerland\",\n originatorFIId: \"UBSWCHZH\",\n beneficiaryName: \"Acme Holdings Ltd\",\n beneficiaryAccountNumber: \"556677887890\",\n beneficiaryFIName: \"Deutsche Bank\",\n beneficiaryFIId: \"DEUTDEFF\"\n }\n },\n {\n id: \"12\",\n created: \"2025-09-30 09:45\",\n accountNumber: \"778899001122\",\n amount: -175000.00,\n customer: \"Tokyo Industries Co\",\n counterparty: \"Amanda White\",\n description: \"Supplier Payment - JPY\",\n transactionType: \"Wire International Debit\",\n status: \"PENDING\",\n processingStatus: \"MANUAL_REVIEW\",\n updated: \"2025-09-30 10:00\",\n isInbound: false,\n wireDetails: {\n type: \"INTERNATIONAL\",\n imad: \"20250930MMQFMP030000989\",\n omad: \"20250930MMQFMP030000990\",\n originatorName: \"US Tech Corp\",\n originatorAccountNumber: \"445566771357\",\n originatorFIName: \"Chase Bank\",\n originatorFIId: \"CHASUS33\",\n beneficiaryName: \"Tokyo Industries Co Ltd\",\n beneficiaryAccountNumber: \"112233442468\",\n beneficiaryFIName: \"MUFG Bank\",\n beneficiaryFIId: \"BOABORJP\"\n }\n },\n {\n id: \"13\",\n created: \"2025-09-30 08:20\",\n accountNumber: \"334455667788\",\n amount: -2500.00,\n customer: \"Quick Loans LLC\",\n counterparty: \"David Brown\",\n description: \"Returned Payment - Insufficient Funds\",\n transactionType: \"ACH Return\",\n status: \"FAILED\",\n processingStatus: \"CONFIRMED\",\n updated: \"2025-09-30 08:45\",\n isInbound: false,\n achDetails: {\n originatorName: \"Quick Loans LLC\",\n originatorRtn: \"091000019\",\n originatorId: \"5678901234\",\n receiverName: \"David Brown\",\n receiverRtn: \"091000019\",\n receiverAccount: \"334455667788\",\n secCode: \"PPD\",\n accountType: \"Checking\",\n effectiveDate: \"2025-09-30\",\n service: \"Standard\",\n traceNumber: \"091000019876545\",\n returnCode: \"R01\",\n returnReason: \"Insufficient Funds\",\n returnedAt: \"2025-09-30 08:45\"\n }\n },\n {\n id: \"14\",\n created: \"2025-09-29 16:30\",\n accountNumber: \"112244668800\",\n amount: 50000.00,\n customer: \"National Corp\",\n counterparty: \"Lisa Martinez\",\n description: \"Quarterly Dividend Payment\",\n transactionType: \"Wire Domestic Credit\",\n status: \"POSTED\",\n processingStatus: \"CONFIRMED\",\n updated: \"2025-09-29 17:00\",\n isInbound: true,\n wireDetails: {\n beneficiaryName: \"Main Street Holdings\",\n beneficiaryAccountNumber: \"223344559876\",\n beneficiaryBankName: \"Wells Fargo\",\n beneficiaryBankSwift: \"WFBIUS6S\",\n originatorName: \"National Corp\",\n originatorAccountNumber: \"667788995432\",\n originatorBankName: \"Bank of America\",\n originatorBankSwift: \"BOFAUS3N\",\n imad: \"20250929MMQFMP030000991\",\n omad: \"20250929MMQFMP030000992\"\n }\n },\n {\n id: \"15\",\n created: \"2025-09-29 14:45\",\n accountNumber: \"556677889911\",\n amount: -35000.00,\n customer: \"Sunset Holdings\",\n counterparty: \"James Wilson\",\n description: \"Real Estate Deposit - Cancelled\",\n transactionType: \"Wire Domestic Debit\",\n status: \"CANCELLED\",\n processingStatus: \"INITIATED\",\n updated: \"2025-09-29 15:00\",\n isInbound: false\n },\n {\n id: \"16\",\n created: \"2025-09-29 12:00\",\n accountNumber: \"998877665533\",\n amount: 12750.00,\n customer: \"Payroll Services Inc\",\n counterparty: \"Karen Davis\",\n description: \"Payroll Batch - Week 39\",\n transactionType: \"Ach Originator Credit\",\n status: \"POSTED\",\n processingStatus: \"CONFIRMED\",\n updated: \"2025-09-29 12:30\",\n isInbound: true,\n achDetails: {\n secCode: \"CCD\",\n traceNumber: \"091000019876546\",\n companyName: \"Payroll Services Inc\",\n companyId: \"3456789012\",\n effectiveDate: \"2025-09-29\"\n }\n },\n {\n id: \"17\",\n created: \"2025-09-29 10:15\",\n accountNumber: \"223344556688\",\n amount: -6800.00,\n customer: \"Utility Corp\",\n counterparty: \"Thomas Anderson\",\n description: \"Monthly Service Charge\",\n transactionType: \"Ach Originator Debit\",\n status: \"PENDING\",\n processingStatus: \"CUSTOMER_REVIEW\",\n updated: \"2025-09-29 10:30\",\n isInbound: false,\n achDetails: {\n secCode: \"PPD\",\n traceNumber: \"091000019876547\",\n companyName: \"Utility Corp\",\n companyId: \"7890123456\",\n effectiveDate: \"2025-09-30\"\n }\n },\n {\n id: \"18\",\n created: \"2025-09-29 08:30\",\n accountNumber: \"445566778800\",\n amount: 500000.00,\n customer: \"European Trade Ltd\",\n counterparty: \"Christopher Lee\",\n description: \"Large Wire Transfer - EU Import\",\n transactionType: \"Wire International Credit\",\n status: \"PENDING\",\n processingStatus: \"SENT\",\n updated: \"2025-09-29 09:00\",\n isInbound: true,\n wireDetails: {\n beneficiaryName: \"American Import Co\",\n beneficiaryAccountNumber: \"889900113698\",\n beneficiaryBankName: \"Citibank\",\n beneficiaryBankSwift: \"CITIUS33\",\n originatorName: \"European Trade Ltd\",\n originatorAccountNumber: \"334455667412\",\n originatorBankName: \"Barclays UK\",\n originatorBankSwift: \"BABORJPJ\",\n imad: \"20250929MMQFMP030000993\",\n omad: \"20250929MMQFMP030000994\"\n }\n },\n {\n id: \"19\",\n created: \"2025-09-28 16:45\",\n accountNumber: \"667788990011\",\n amount: 3200.00,\n customer: \"Small Business LLC\",\n counterparty: \"Nancy Taylor\",\n description: \"Online Payment Receipt\",\n transactionType: \"ACH Credit\",\n status: \"POSTED\",\n processingStatus: \"CONFIRMED\",\n updated: \"2025-09-28 17:00\",\n isInbound: true,\n achDetails: {\n secCode: \"WEB\",\n traceNumber: \"091000019876548\",\n companyName: \"Small Business LLC\",\n companyId: \"2345678901\",\n effectiveDate: \"2025-09-28\"\n }\n },\n {\n id: \"20\",\n created: \"2025-09-28 14:20\",\n accountNumber: \"889900112233\",\n amount: -45.00,\n customer: \"Patricia Moore\",\n counterparty: \"Bank Services\",\n description: \"Wire Transfer Fee\",\n transactionType: \"Fee Wire Transaction\",\n status: \"POSTED\",\n processingStatus: \"CONFIRMED\",\n updated: \"2025-09-28 14:20\",\n isInbound: false\n }\n]\n\nexport const mockTransactionTimeline = [\n {\n id: \"1\",\n action: \"Transaction Created\",\n user: \"System\",\n details: \"Transaction initiated via API\",\n status: \"Pending\",\n timestamp: \"2025-10-01 00:16:23\"\n },\n {\n id: \"2\",\n action: \"Validation Completed\",\n user: \"System\",\n details: \"All validation checks passed\",\n timestamp: \"2025-10-01 00:16:45\"\n },\n {\n id: \"3\",\n action: \"Assigned for Review\",\n user: \"approverdev\",\n details: \"Transaction assigned to compliance team\",\n status: \"In Progress\",\n timestamp: \"2025-10-01 00:17:12\"\n },\n {\n id: \"4\",\n action: \"Compliance Review\",\n user: \"Sarah Johnson\",\n details: \"AML and sanctions screening completed\",\n timestamp: \"2025-10-01 00:18:30\"\n },\n {\n id: \"5\",\n action: \"Approved\",\n user: \"Michael Chen\",\n details: \"Transaction approved for processing\",\n status: \"Closed\",\n timestamp: \"2025-10-01 00:19:45\"\n }\n]\n","import { useState, useMemo, useCallback, useEffect } from \"react\"\nimport { useNavigate } from \"react-router-dom\"\nimport { DataTable, DataTableColumn } from \"@/components/ui/data-table\"\nimport { StatusBadge } from \"@/components/ui/status-badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { mockTransactions, Transaction } from \"@/lib/mock-data/transaction-data\"\nimport { TransactionHistoryView } from \"@/components/transaction/TransactionHistoryView\"\nimport { TransactionHistoryFilters, FilterOptions } from \"@/components/transaction/TransactionHistoryFiltersSheet\"\nimport { formatCurrency } from \"@/lib/utils\"\n\ntype FilterValue = string | string[] | boolean | undefined\n\nconst defaultFilters: TransactionHistoryFilters = {\n originalFileName: \"\",\n requesterIpAddress: \"\",\n requesterUsername: \"\",\n showAchNoc: false,\n excludeWire: false,\n excludeAch: false,\n wireFileHandle: \"\",\n direction: \"\",\n counterpartyId: \"\",\n customerId: \"\",\n settlementFileName: \"\",\n isInbound: false,\n accountNumber: \"\",\n processingStatus: [],\n beginDate: undefined,\n endDate: undefined,\n postDateStart: undefined,\n postDateEnd: undefined,\n maxAmount: \"\",\n minAmount: \"\",\n productId: \"\",\n paymentId: \"\",\n transactionStatus: [],\n transactionType: [],\n}\n\n// Filter options - passed to the filter sheet\nconst filterOptions: FilterOptions = {\n transactionTypes: [\n { value: \"ACH Credit\", label: \"ACH Credit\" },\n { value: \"ACH Debit\", label: \"ACH Debit\" },\n { value: \"ACH Return\", label: \"ACH Return\" },\n { value: \"Ach Originator Credit\", label: \"ACH Originator Credit\" },\n { value: \"Ach Originator Debit\", label: \"ACH Originator Debit\" },\n { value: \"Wire Domestic Credit\", label: \"Wire Domestic Credit\" },\n { value: \"Wire Domestic Debit\", label: \"Wire Domestic Debit\" },\n { value: \"Wire International Credit\", label: \"Wire International Credit\" },\n { value: \"Wire International Debit\", label: \"Wire International Debit\" },\n { value: \"Fee Ach Transaction\", label: \"ACH Fee\" },\n { value: \"Fee Wire Transaction\", label: \"Wire Fee\" },\n ],\n transactionStatuses: [\n { value: \"PENDING\", label: \"Pending\" },\n { value: \"POSTED\", label: \"Posted\" },\n { value: \"FAILED\", label: \"Failed\" },\n { value: \"CANCELLED\", label: \"Cancelled\" },\n ],\n processingStatuses: [\n { value: \"INITIATED\", label: \"Initiated\" },\n { value: \"SUBMITTED\", label: \"Submitted\" },\n { value: \"CUSTOMER_REVIEW\", label: \"Customer Review\" },\n { value: \"MANUAL_REVIEW\", label: \"Manual Review\" },\n { value: \"SENT\", label: \"Sent\" },\n { value: \"CONFIRMED\", label: \"Confirmed\" },\n ],\n directions: [\n { value: \"inbound\", label: \"Inbound\" },\n { value: \"outbound\", label: \"Outbound\" },\n ],\n products: [\n { value: \"ach\", label: \"ACH\" },\n { value: \"wire\", label: \"Wire\" },\n ],\n}\n\nconst TransactionHistory = () => {\n const navigate = useNavigate()\n const [sortBy, setSortBy] = useState<string>(\"created\")\n const [sortDirection, setSortDirection] = useState<\"asc\" | \"desc\">(\"desc\")\n const [filters, setFilters] = useState<TransactionHistoryFilters>(defaultFilters)\n const [isLoading, setIsLoading] = useState(true)\n const [error, setError] = useState<string | null>(null)\n\n // Simulate loading transactions\n const loadTransactions = useCallback(async () => {\n setIsLoading(true)\n setError(null)\n try {\n // Simulated delay - replace with actual API call\n await new Promise(resolve => setTimeout(resolve, 800))\n // Data is already in mockTransactions\n } catch (err) {\n setError(err instanceof Error ? err.message : \"Failed to load transactions\")\n } finally {\n setIsLoading(false)\n }\n }, [])\n\n // Load on mount\n useEffect(() => {\n loadTransactions()\n }, [loadTransactions])\n\n const handleRetry = useCallback(() => {\n loadTransactions()\n }, [loadTransactions])\n\n // Filtering logic with useMemo\n const filteredTransactions = useMemo(() => {\n let filtered = [...mockTransactions]\n\n if (filters.accountNumber) {\n filtered = filtered.filter(t => \n t.accountNumber.toLowerCase().includes(filters.accountNumber!.toLowerCase())\n )\n }\n if (filters.transactionType && filters.transactionType.length > 0) {\n filtered = filtered.filter(t => filters.transactionType!.includes(t.transactionType))\n }\n if (filters.transactionStatus && filters.transactionStatus.length > 0) {\n filtered = filtered.filter(t => filters.transactionStatus!.includes(t.status))\n }\n if (filters.minAmount) {\n const minAmount = parseFloat(filters.minAmount.replace(/[^0-9.-]/g, ''))\n if (!isNaN(minAmount)) {\n filtered = filtered.filter(t => t.amount >= minAmount)\n }\n }\n if (filters.maxAmount) {\n const maxAmount = parseFloat(filters.maxAmount.replace(/[^0-9.-]/g, ''))\n if (!isNaN(maxAmount)) {\n filtered = filtered.filter(t => t.amount <= maxAmount)\n }\n }\n if (filters.excludeWire) {\n filtered = filtered.filter(t => !t.transactionType.toLowerCase().includes('wire'))\n }\n if (filters.excludeAch) {\n filtered = filtered.filter(t => !t.transactionType.toLowerCase().includes('ach'))\n }\n\n return filtered\n }, [filters])\n\n // Sorting logic with useMemo\n const sortedTransactions = useMemo(() => {\n return [...filteredTransactions].sort((a, b) => {\n const aValue = a[sortBy as keyof Transaction]\n const bValue = b[sortBy as keyof Transaction]\n \n if (aValue === undefined || bValue === undefined) return 0\n if (aValue < bValue) return sortDirection === \"asc\" ? -1 : 1\n if (aValue > bValue) return sortDirection === \"asc\" ? 1 : -1\n return 0\n })\n }, [filteredTransactions, sortBy, sortDirection])\n\n // Callbacks with useCallback\n const handleFilterChange = useCallback((field: keyof TransactionHistoryFilters, value: FilterValue) => {\n setFilters(prev => ({ ...prev, [field]: value }))\n }, [])\n\n const handleResetFilters = useCallback(() => {\n setFilters(defaultFilters)\n }, [])\n\n const handleApplyFilters = useCallback(() => {\n console.log(\"Applying filters:\", filters)\n }, [filters])\n\n const handleSort = useCallback((key: string) => {\n if (sortBy === key) {\n setSortDirection(prev => prev === \"asc\" ? \"desc\" : \"asc\")\n } else {\n setSortBy(key)\n setSortDirection(\"asc\")\n }\n }, [sortBy])\n\n const handleRowClick = useCallback((transaction: Transaction) => {\n navigate(`/transactions/${transaction.id}`)\n }, [navigate])\n\n\n // Column definitions\n const columns: DataTableColumn<Transaction>[] = useMemo(() => [\n {\n key: \"created\",\n title: \"Created\",\n sortable: true,\n },\n {\n key: \"accountNumber\",\n title: \"Account Number\",\n sortable: true,\n },\n {\n key: \"amount\",\n title: \"Amount\",\n sortable: true,\n align: \"right\" as const,\n render: (value) => (\n <span className={(value as number) < 0 ? \"text-destructive\" : \"\"}>\n {formatCurrency(value as number)}\n </span>\n ),\n },\n {\n key: \"customer\",\n title: \"Customer\",\n sortable: true,\n render: (value) => (\n <Button variant=\"link\" className=\"h-auto p-0 font-normal text-xs\">\n {value as string}\n </Button>\n ),\n },\n {\n key: \"counterparty\",\n title: \"Counterparty\",\n sortable: true,\n render: (value) => (\n <Button variant=\"link\" className=\"h-auto p-0 font-normal text-xs\">\n {value as string}\n </Button>\n ),\n },\n {\n key: \"description\",\n title: \"Description\",\n sortable: true,\n render: (value) => (\n <span className=\"truncate block max-w-[200px]\">{value as string}</span>\n ),\n },\n {\n key: \"transactionType\",\n title: \"Transaction Type\",\n sortable: true,\n render: (value) => (\n <Badge variant=\"outline\" className=\"font-normal whitespace-nowrap text-xs\">\n {value as string}\n </Badge>\n ),\n },\n {\n key: \"status\",\n title: \"Status\",\n sortable: true,\n render: (value) => (\n <StatusBadge status={value as \"PENDING\" | \"POSTED\" | \"FAILED\" | \"CANCELLED\"} />\n ),\n },\n {\n key: \"updated\",\n title: \"Updated\",\n sortable: true,\n },\n ], [])\n\n // Render DataTable in useMemo\n const table = useMemo(() => (\n <DataTable\n columns={columns}\n data={sortedTransactions}\n sortBy={sortBy}\n sortDirection={sortDirection}\n onSort={handleSort}\n onRowClick={handleRowClick}\n />\n ), [columns, sortedTransactions, sortBy, sortDirection, handleSort, handleRowClick])\n\n return (\n <TransactionHistoryView\n table={table}\n filters={filters}\n filterOptions={filterOptions}\n onFilterChange={handleFilterChange}\n onResetFilters={handleResetFilters}\n onApplyFilters={handleApplyFilters}\n isLoading={isLoading}\n error={error}\n onRetry={handleRetry}\n />\n )\n}\n\nexport default TransactionHistory\n","import { useState, useMemo, useEffect } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { useForm } from \"react-hook-form\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport { z } from \"zod\";\nimport { toast } from \"sonner\";\nimport { debounce } from \"lodash\";\nimport { ArrowLeftRight, Settings, Building2, Zap } from \"lucide-react\";\nimport {\n NewTransactionView,\n AccountData,\n CounterpartyData,\n CounterpartySearchResult,\n NewTransactionFormValues,\n TransactionTypeOption,\n} from \"@/components/transaction/NewTransactionView\";\n\nexport const newTransactionSchema = z\n .object({\n transactionType: z.string().min(1, \"Transaction type is required\"),\n accountNumber: z.string().min(1, \"Account number is required\"),\n counterpartyName: z.string().optional(),\n amount: z.string().min(1, \"Amount is required\"),\n description: z.string().min(1, \"Description is required\"),\n certifyInformation: z.boolean().refine((val) => val === true, {\n message: \"You must certify the information is correct\",\n }),\n // Adjustment-specific fields\n adjustmentDirection: z.string().optional(),\n adjustmentType: z.string().optional(),\n // Transfer-specific fields\n receiverAccountNumber: z.string().optional(),\n })\n .refine(\n (data) => {\n const requiresCounterparty = [\"ach\", \"wire\"].includes(data.transactionType);\n if (requiresCounterparty && !data.counterpartyName) {\n return false;\n }\n return true;\n },\n {\n message: \"Counterparty is required for ACH and Wire transactions\",\n path: [\"counterpartyName\"],\n },\n )\n .refine(\n (data) => {\n if (data.transactionType === \"adjustment\") {\n if (!data.adjustmentDirection || !data.adjustmentType) return false;\n }\n return true;\n },\n {\n message: \"Direction and Type are required for Adjustment transactions\",\n path: [\"adjustmentDirection\"],\n },\n )\n .refine(\n (data) => {\n if (data.transactionType === \"transfer\") {\n if (!data.receiverAccountNumber) return false;\n }\n return true;\n },\n {\n message: \"Receiver account number is required for Transfer transactions\",\n path: [\"receiverAccountNumber\"],\n },\n );\n\n// Mock account data - would come from API in real app\nconst mockAccountData: AccountData = {\n accountNumber: \"****1234\",\n accountName: \"Business Checking\",\n accountType: \"Checking\",\n balance: \"$125,450.00\",\n customerName: \"Acme Corporation\",\n customerId: \"CUST-001\",\n customerType: \"Business\",\n};\n\nexport default function NewTransaction() {\n const navigate = useNavigate();\n\n // State\n const [accountLookedUp, setAccountLookedUp] = useState(false);\n const [accountData, setAccountData] = useState<AccountData | null>(null);\n const [counterpartyLookedUp, setCounterpartyLookedUp] = useState(false);\n const [counterpartyData, setCounterpartyData] = useState<CounterpartyData | null>(null);\n const [counterpartySearchResults, setCounterpartySearchResults] = useState<CounterpartySearchResult[]>([]);\n const [isCounterpartySearching, setIsCounterpartySearching] = useState(false);\n const [showCounterpartyDropdown, setShowCounterpartyDropdown] = useState(false);\n // Pagination state for counterparty search\n const [counterpartySearchPage, setCounterpartySearchPage] = useState(1);\n const [counterpartyHasMore, setCounterpartyHasMore] = useState(false);\n const [counterpartyTotalResults, setCounterpartyTotalResults] = useState(0);\n const [isLoadingMoreCounterparties, setIsLoadingMoreCounterparties] = useState(false);\n const [currentSearchQuery, setCurrentSearchQuery] = useState(\"\");\n const [confirmationOpen, setConfirmationOpen] = useState(false);\n const [submissionStatus, setSubmissionStatus] = useState<\"success\" | \"error\" | null>(null);\n const [errorMessage, setErrorMessage] = useState(\"\");\n const [transactionId, setTransactionId] = useState(\"\");\n const [isAccountLoading, setIsAccountLoading] = useState(false);\n const [isCounterpartyLoading, setIsCounterpartyLoading] = useState(false);\n const [isSubmitting, setIsSubmitting] = useState(false);\n // Transfer-specific state\n const [receiverAccountLookedUp, setReceiverAccountLookedUp] = useState(false);\n const [receiverAccountData, setReceiverAccountData] = useState<AccountData | null>(null);\n const [isReceiverAccountLoading, setIsReceiverAccountLoading] = useState(false);\n\n const form = useForm<NewTransactionFormValues>({\n resolver: zodResolver(newTransactionSchema),\n defaultValues: {\n transactionType: \"\",\n accountNumber: \"\",\n counterpartyName: \"\",\n amount: \"\",\n description: \"\",\n certifyInformation: false,\n adjustmentDirection: \"debit\",\n adjustmentType: \"\",\n receiverAccountNumber: \"\",\n },\n });\n\n // Transaction type options with disabled state\n const transactionTypeOptions = useMemo<TransactionTypeOption[]>(\n () => [\n { value: \"transfer\", label: \"Transfer\", icon: ArrowLeftRight, disabled: false },\n { value: \"adjustment\", label: \"Adjustment\", icon: Settings, disabled: false },\n { value: \"ach\", label: \"ACH\", icon: Building2, disabled: true },\n { value: \"wire\", label: \"Wire\", icon: Zap, disabled: false },\n ],\n [],\n );\n\n // Direction-based adjustment type options\n const adjustmentDirection = form.watch(\"adjustmentDirection\");\n\n const adjustmentTypeOptions = useMemo(() => {\n if (adjustmentDirection === \"credit\") {\n return [\n { value: \"interest_credit\", label: \"Interest Credit\" },\n { value: \"fee_reversal\", label: \"Fee Reversal\" },\n { value: \"promotional_credit\", label: \"Promotional Credit\" },\n ];\n }\n // Default: debit options\n return [\n { value: \"collection\", label: \"Collection\" },\n { value: \"transaction_reversal\", label: \"Transaction Reversal\" },\n { value: \"transaction_adjustment\", label: \"Transaction Adjustment\" },\n ];\n }, [adjustmentDirection]);\n\n // Clear adjustment type when direction changes\n useEffect(() => {\n form.setValue(\"adjustmentType\", \"\");\n }, [adjustmentDirection, form]);\n\n // Callbacks\n const handleAccountLookup = async () => {\n const accNum = form.getValues(\"accountNumber\");\n if (!accNum) {\n toast.error(\"Please enter an account number\");\n return;\n }\n setIsAccountLoading(true);\n try {\n await new Promise((resolve) => setTimeout(resolve, 1000));\n setAccountData(mockAccountData);\n setAccountLookedUp(true);\n toast.success(\"Account found\");\n } catch (error) {\n toast.error(\"Failed to lookup account\");\n } finally {\n setIsAccountLoading(false);\n }\n };\n\n // Mock counterparty search results - expanded for pagination demo\n const mockSearchResults: CounterpartySearchResult[] = [\n { id: \"CP-5678\", name: \"Global Tech Solutions Inc.\", type: \"Business\", paymentInstrumentType: \"wire\" },\n { id: \"CP-1234\", name: \"Global Industries LLC\", type: \"Business\", paymentInstrumentType: \"ach\" },\n { id: \"CP-9012\", name: \"GlobalCorp Partners\", type: \"Business\", paymentInstrumentType: \"both\" },\n { id: \"CP-3456\", name: \"Acme Corporation\", type: \"Business\", paymentInstrumentType: \"wire\" },\n { id: \"CP-7890\", name: \"Tech Innovations Ltd\", type: \"Business\", paymentInstrumentType: \"ach\" },\n { id: \"CP-1111\", name: \"Global Enterprises\", type: \"Business\", paymentInstrumentType: \"wire\" },\n { id: \"CP-2222\", name: \"Global Finance Group\", type: \"Business\", paymentInstrumentType: \"both\" },\n { id: \"CP-3333\", name: \"Global Trade Inc.\", type: \"Business\", paymentInstrumentType: \"wire\" },\n { id: \"CP-4444\", name: \"Global Services Co.\", type: \"Business\", paymentInstrumentType: \"ach\" },\n { id: \"CP-5555\", name: \"Global Ventures Ltd\", type: \"Business\", paymentInstrumentType: \"both\" },\n ];\n\n const PAGE_SIZE = 5;\n\n // Helper to check counterparty compatibility\n const isCounterpartyCompatible = (instrumentType: string, transactionType: string): boolean => {\n if (instrumentType === \"both\") return true;\n if (transactionType === \"ach\" && instrumentType === \"ach\") return true;\n if (transactionType === \"wire\" && instrumentType === \"wire\") return true;\n return false;\n };\n\n // Filter results based on transaction type\n const filterByTransactionType = (results: CounterpartySearchResult[], txType: string) => {\n if (txType === \"ach\") {\n return results.filter((cp) => cp.paymentInstrumentType === \"ach\" || cp.paymentInstrumentType === \"both\");\n } else if (txType === \"wire\") {\n return results.filter((cp) => cp.paymentInstrumentType === \"wire\" || cp.paymentInstrumentType === \"both\");\n }\n return results;\n };\n\n // Debounced search function with pagination\n const debouncedSearch = useMemo(\n () =>\n debounce(async (query: string, txType: string, page: number = 1) => {\n if (query.length < 2) {\n setCounterpartySearchResults([]);\n setShowCounterpartyDropdown(false);\n setCounterpartyHasMore(false);\n setCounterpartyTotalResults(0);\n return;\n }\n\n if (page === 1) {\n setIsCounterpartySearching(true);\n }\n\n try {\n // Simulate API call delay\n await new Promise((resolve) => setTimeout(resolve, 350));\n\n // Filter by name and compatibility with current transaction type\n let filteredResults = mockSearchResults.filter((cp) => cp.name.toLowerCase().includes(query.toLowerCase()));\n filteredResults = filterByTransactionType(filteredResults, txType);\n\n // Paginate\n const startIndex = (page - 1) * PAGE_SIZE;\n const paginatedResults = filteredResults.slice(startIndex, startIndex + PAGE_SIZE);\n\n if (page === 1) {\n setCounterpartySearchResults(paginatedResults);\n } else {\n setCounterpartySearchResults((prev) => [...prev, ...paginatedResults]);\n }\n\n setCounterpartyTotalResults(filteredResults.length);\n setCounterpartyHasMore(startIndex + PAGE_SIZE < filteredResults.length);\n setCounterpartySearchPage(page);\n setShowCounterpartyDropdown(true);\n } finally {\n setIsCounterpartySearching(false);\n }\n }, 350),\n [],\n );\n\n // Cleanup debounce on unmount\n useEffect(() => {\n return () => {\n debouncedSearch.cancel();\n };\n }, [debouncedSearch]);\n\n const handleCounterpartySearchChange = (value: string) => {\n form.setValue(\"counterpartyName\", value);\n setCurrentSearchQuery(value);\n setCounterpartySearchPage(1);\n if (counterpartyLookedUp) {\n setCounterpartyLookedUp(false);\n setCounterpartyData(null);\n }\n debouncedSearch(value, form.getValues(\"transactionType\"), 1);\n };\n\n const handleLoadMoreCounterparties = async () => {\n setIsLoadingMoreCounterparties(true);\n const txType = form.getValues(\"transactionType\");\n await debouncedSearch(currentSearchQuery, txType, counterpartySearchPage + 1);\n setIsLoadingMoreCounterparties(false);\n };\n\n const handleTransactionTypeChange = (newType: string) => {\n form.setValue(\"transactionType\", newType);\n\n // Check if counterparty needs to be cleared\n if (counterpartyData && counterpartyLookedUp) {\n const requiresCounterparty = [\"ach\", \"wire\"].includes(newType);\n\n if (requiresCounterparty) {\n const isCompatible = isCounterpartyCompatible(counterpartyData.paymentInstrumentType, newType);\n\n if (!isCompatible) {\n // Clear counterparty and notify user\n setCounterpartyLookedUp(false);\n setCounterpartyData(null);\n setCounterpartySearchResults([]);\n form.setValue(\"counterpartyName\", \"\");\n\n const typeLabel = newType === \"ach\" ? \"ACH\" : \"Wire\";\n toast.warning(\n `${counterpartyData.counterpartyName} doesn't support ${typeLabel} transactions. Please select a different counterparty.`,\n );\n }\n }\n }\n };\n\n const handleCounterpartySelect = (result: CounterpartySearchResult) => {\n form.setValue(\"counterpartyName\", result.name);\n setShowCounterpartyDropdown(false);\n setCounterpartySearchResults([]);\n\n // Fetch full counterparty details\n setIsCounterpartyLoading(true);\n setTimeout(() => {\n setCounterpartyData({\n counterpartyName: result.name,\n counterpartyId: result.id,\n counterpartyType: result.type,\n status: \"Active\",\n taxId: \"XX-XXXXXXX\",\n primaryContact: \"Contact Name\",\n contactEmail: \"contact@example.com\",\n contactPhone: \"+1 (555) 123-4567\",\n address: \"123 Business Ave, City, ST 12345\",\n paymentInstrumentType: result.paymentInstrumentType,\n });\n setCounterpartyLookedUp(true);\n setIsCounterpartyLoading(false);\n toast.success(\"Counterparty selected\");\n }, 500);\n };\n\n const handleEditAccount = () => {\n setAccountLookedUp(false);\n setAccountData(null);\n form.setValue(\"transactionType\", \"\");\n setCounterpartyLookedUp(false);\n setCounterpartyData(null);\n form.setValue(\"counterpartyName\", \"\");\n form.setValue(\"amount\", \"\");\n form.setValue(\"description\", \"\");\n // Reset adjustment fields\n form.setValue(\"adjustmentDirection\", \"debit\");\n form.setValue(\"adjustmentType\", \"\");\n // Reset transfer fields\n setReceiverAccountLookedUp(false);\n setReceiverAccountData(null);\n form.setValue(\"receiverAccountNumber\", \"\");\n };\n\n // Receiver account lookup for transfers\n const handleReceiverAccountLookup = async () => {\n const receiverNum = form.getValues(\"receiverAccountNumber\");\n if (!receiverNum) {\n toast.error(\"Please enter a receiver account number\");\n return;\n }\n setIsReceiverAccountLoading(true);\n try {\n await new Promise((resolve) => setTimeout(resolve, 1000));\n // Mock receiver account data\n setReceiverAccountData({\n accountNumber: \"****\" + receiverNum.slice(-4),\n accountName: \"Receiver Account\",\n accountType: \"Checking\",\n balance: \"$45,230.00\",\n customerName: \"Receiver Corp\",\n customerId: \"CUST-RCV-001\",\n customerType: \"Business\",\n });\n setReceiverAccountLookedUp(true);\n toast.success(\"Receiver account found\");\n } catch (error) {\n toast.error(\"Failed to lookup receiver account\");\n } finally {\n setIsReceiverAccountLoading(false);\n }\n };\n\n const handleEditReceiverAccount = () => {\n setReceiverAccountLookedUp(false);\n setReceiverAccountData(null);\n form.setValue(\"receiverAccountNumber\", \"\");\n };\n\n const handleEditCounterparty = () => {\n setCounterpartyLookedUp(false);\n setCounterpartyData(null);\n setCounterpartySearchResults([]);\n setShowCounterpartyDropdown(false);\n form.setValue(\"counterpartyName\", \"\");\n form.setValue(\"amount\", \"\");\n form.setValue(\"description\", \"\");\n };\n\n const handleSubmit = async () => {\n const data = form.getValues();\n const requiresCounterparty = [\"ach\", \"wire\"].includes(data.transactionType);\n\n if (!data.transactionType || !data.accountNumber || !data.amount) {\n toast.error(\"Please complete all required fields\");\n return;\n }\n\n if (requiresCounterparty && (!data.counterpartyName || !counterpartyLookedUp)) {\n toast.error(\"Please lookup counterparty for this transaction type\");\n return;\n }\n\n if (!accountLookedUp) {\n toast.error(\"Please lookup account\");\n return;\n }\n\n // Adjustment validation\n if (data.transactionType === \"adjustment\") {\n if (!data.adjustmentDirection || !data.adjustmentType) {\n toast.error(\"Please select direction and type for adjustment\");\n return;\n }\n }\n\n // Transfer validation\n if (data.transactionType === \"transfer\") {\n if (!data.receiverAccountNumber || !receiverAccountLookedUp) {\n toast.error(\"Please lookup receiver account for transfer\");\n return;\n }\n }\n\n setIsSubmitting(true);\n try {\n // Build submission payload including counterparty type and payment instrument type\n const submissionPayload = {\n ...data,\n // Include counterparty details for ACH/Wire transactions\n ...(requiresCounterparty &&\n counterpartyData && {\n counterpartyId: counterpartyData.counterpartyId,\n counterpartyType: counterpartyData.counterpartyType,\n counterpartyPaymentInstrumentType: counterpartyData.paymentInstrumentType,\n }),\n // Include account details\n accountId: accountData?.customerId,\n // Include receiver account for transfers\n ...(data.transactionType === \"transfer\" &&\n receiverAccountData && {\n receiverAccountId: receiverAccountData.customerId,\n }),\n };\n\n console.log(\"Transaction submission payload:\", submissionPayload);\n\n await new Promise((resolve) => setTimeout(resolve, 1500));\n\n const hasError = Math.random() > 0.7;\n\n if (hasError) {\n const errorScenarios = [\n \"Insufficient funds. Current balance: $125,450.00, Required: $\" + parseFloat(data.amount).toFixed(2),\n \"Transaction limit exceeded. Daily limit: $50,000.00\",\n \"Counterparty account is temporarily unavailable. Please try again later.\",\n \"Invalid routing number for the selected transaction type.\",\n ];\n setSubmissionStatus(\"error\");\n setErrorMessage(errorScenarios[Math.floor(Math.random() * errorScenarios.length)]);\n } else {\n const txId = \"TXN-\" + Math.random().toString(36).substr(2, 9).toUpperCase();\n setTransactionId(txId);\n setSubmissionStatus(\"success\");\n }\n setConfirmationOpen(true);\n } finally {\n setIsSubmitting(false);\n }\n };\n\n const resetForm = () => {\n form.reset({\n transactionType: \"\",\n accountNumber: \"\",\n counterpartyName: \"\",\n amount: \"\",\n description: \"\",\n certifyInformation: false,\n adjustmentDirection: \"debit\",\n adjustmentType: \"\",\n receiverAccountNumber: \"\",\n });\n setAccountLookedUp(false);\n setAccountData(null);\n setCounterpartyLookedUp(false);\n setCounterpartyData(null);\n setCounterpartySearchResults([]);\n setShowCounterpartyDropdown(false);\n setReceiverAccountLookedUp(false);\n setReceiverAccountData(null);\n setSubmissionStatus(null);\n setErrorMessage(\"\");\n setTransactionId(\"\");\n };\n\n const handleConfirmationClose = () => {\n setConfirmationOpen(false);\n if (submissionStatus === \"success\") {\n navigate(`/transactions/${transactionId}`);\n }\n };\n\n const handleNewTransaction = () => {\n setConfirmationOpen(false);\n resetForm();\n };\n\n // Watch form values for isReviewReady computation\n const formValues = form.watch();\n\n // Compute if review section should be active (same logic as handleSubmit validation)\n const isReviewReady = useMemo(() => {\n const requiresCounterparty = [\"ach\", \"wire\"].includes(formValues.transactionType);\n\n if (!formValues.transactionType || !formValues.accountNumber || !formValues.amount || !formValues.description) return false;\n if (requiresCounterparty && (!formValues.counterpartyName || !counterpartyLookedUp)) return false;\n if (!accountLookedUp) return false;\n\n // Adjustment validation\n if (formValues.transactionType === \"adjustment\") {\n if (!formValues.adjustmentDirection || !formValues.adjustmentType) return false;\n }\n\n // Transfer validation\n if (formValues.transactionType === \"transfer\") {\n if (!formValues.receiverAccountNumber || !receiverAccountLookedUp) return false;\n }\n\n return true;\n }, [formValues, accountLookedUp, counterpartyLookedUp, receiverAccountLookedUp]);\n\n return (\n <NewTransactionView\n form={form}\n accountLookedUp={accountLookedUp}\n accountData={accountData}\n counterpartyLookedUp={counterpartyLookedUp}\n counterpartyData={counterpartyData}\n confirmationOpen={confirmationOpen}\n submissionStatus={submissionStatus}\n errorMessage={errorMessage}\n transactionId={transactionId}\n isAccountLoading={isAccountLoading}\n isCounterpartyLoading={isCounterpartyLoading}\n isSubmitting={isSubmitting}\n onAccountLookup={handleAccountLookup}\n onEditAccount={handleEditAccount}\n counterpartySearchResults={counterpartySearchResults}\n isCounterpartySearching={isCounterpartySearching}\n showCounterpartyDropdown={showCounterpartyDropdown}\n onCounterpartySearchChange={handleCounterpartySearchChange}\n onCounterpartySelect={handleCounterpartySelect}\n onCounterpartyDropdownClose={() => setShowCounterpartyDropdown(false)}\n counterpartyHasMore={counterpartyHasMore}\n counterpartyTotalResults={counterpartyTotalResults}\n isLoadingMoreCounterparties={isLoadingMoreCounterparties}\n onLoadMoreCounterparties={handleLoadMoreCounterparties}\n onEditCounterparty={handleEditCounterparty}\n onTransactionTypeChange={handleTransactionTypeChange}\n onSubmit={handleSubmit}\n onConfirmationClose={handleConfirmationClose}\n onConfirmationOpenChange={setConfirmationOpen}\n onNewTransaction={handleNewTransaction}\n // Transfer-specific props\n receiverAccountLookedUp={receiverAccountLookedUp}\n receiverAccountData={receiverAccountData}\n isReceiverAccountLoading={isReceiverAccountLoading}\n onReceiverAccountLookup={handleReceiverAccountLookup}\n onEditReceiverAccount={handleEditReceiverAccount}\n // Review ready state\n isReviewReady={isReviewReady}\n // Adjustment type options\n adjustmentTypeOptions={adjustmentTypeOptions}\n // Transaction type options\n transactionTypeOptions={transactionTypeOptions}\n showSuccessInfoBox\n successInfoMessage=\"The transaction is being manually reviewed\"\n />\n );\n}\n","import { useParams, useNavigate } from \"react-router-dom\"\nimport { useCallback, useMemo, useState, useEffect } from \"react\"\nimport { Button } from \"@/components/ui/button\"\nimport { mockTransactions, mockTransactionTimeline } from \"@/lib/mock-data/transaction-data\"\nimport { TransactionDetailView } from \"@/components/transaction/TransactionDetailView\"\nimport { CancelTransactionDialog } from \"@/components/transaction/CancelTransactionDialog\"\nimport { ReturnTransactionDialog } from \"@/components/transaction/ReturnTransactionDialog\"\nimport { CancelTransactionFormData, ReturnTransactionFormData, ReturnReasonCode } from \"@/lib/schemas/transaction-schemas\"\n\nconst returnReasonCodes: ReturnReasonCode[] = [\n { value: \"R01\", label: \"R01 - Insufficient Funds\" },\n { value: \"R02\", label: \"R02 - Account Closed\" },\n { value: \"R03\", label: \"R03 - No Account/Unable to Locate\" },\n { value: \"R04\", label: \"R04 - Invalid Account Number\" },\n { value: \"R05\", label: \"R05 - Unauthorized Debit\" },\n { value: \"R06\", label: \"R06 - Returned per ODFI Request\" },\n { value: \"R07\", label: \"R07 - Authorization Revoked\" },\n { value: \"R08\", label: \"R08 - Payment Stopped\" },\n { value: \"R09\", label: \"R09 - Uncollected Funds\" },\n { value: \"R10\", label: \"R10 - Customer Advises Not Authorized\" },\n]\n\nconst TransactionDetail = () => {\n const { id } = useParams()\n const navigate = useNavigate()\n \n // Dialog state\n const [isCancelDialogOpen, setIsCancelDialogOpen] = useState(false)\n const [isReturnDialogOpen, setIsReturnDialogOpen] = useState(false)\n \n // Loading and error state\n const [isLoading, setIsLoading] = useState(true)\n const [error, setError] = useState<string | null>(null)\n const [transaction, setTransaction] = useState<typeof mockTransactions[0] | null>(null)\n\n // Load transaction data\n const loadTransaction = useCallback(async () => {\n setIsLoading(true)\n setError(null)\n try {\n // Simulated delay - replace with actual API call\n await new Promise(resolve => setTimeout(resolve, 600))\n const found = mockTransactions.find(t => t.id === id)\n setTransaction(found || null)\n } catch (err) {\n setError(err instanceof Error ? err.message : \"Failed to load transaction\")\n } finally {\n setIsLoading(false)\n }\n }, [id])\n\n useEffect(() => {\n loadTransaction()\n }, [loadTransaction])\n\n const handleRetry = useCallback(() => {\n loadTransaction()\n }, [loadTransaction])\n \n // Computed values\n const isWireTransfer = useMemo(() => \n transaction?.transactionType.toLowerCase().includes('wire') ?? false,\n [transaction?.transactionType]\n )\n \n const isACHTransfer = useMemo(() => \n transaction?.transactionType.toLowerCase().includes('ach') ?? false,\n [transaction?.transactionType]\n )\n\n const timelineEvents = useMemo(() => \n mockTransactionTimeline,\n []\n )\n\n // Show cancel button for PENDING transactions with certain processing statuses\n const showCancelButton = useMemo(() => {\n if (!transaction) return false\n const cancelableStatuses = ['INITIATED', 'SUBMITTED', 'CUSTOMER_REVIEW', 'MANUAL_REVIEW']\n return transaction.status === 'PENDING' && \n cancelableStatuses.includes(transaction.processingStatus)\n }, [transaction])\n\n // Show return button for POSTED/SETTLED/CONFIRMED transactions\n const showReturnButton = useMemo(() => {\n if (!transaction) return false\n const returnableStatuses = ['POSTED', 'SETTLED', 'CONFIRMED']\n return returnableStatuses.includes(transaction.processingStatus)\n }, [transaction])\n\n // Callbacks\n const handleOpenReturnDialog = useCallback(() => {\n setIsReturnDialogOpen(true)\n }, [])\n\n const handleReturnTransaction = useCallback(async (data: ReturnTransactionFormData) => {\n console.log(\"Returning transaction with reason code:\", data.reasonCode)\n // TODO: API call to return transaction\n }, [])\n\n const handleOpenCancelDialog = useCallback(() => {\n setIsCancelDialogOpen(true)\n }, [])\n\n const handleCancelTransaction = useCallback(async (data: CancelTransactionFormData) => {\n console.log(\"Cancelling transaction with reason:\", data.reason)\n // TODO: API call to cancel transaction\n }, [])\n\n const handleAccountClick = useCallback((accountNumber: string) => {\n navigate(`/accounts/${accountNumber}`)\n }, [navigate])\n\n const handleCustomerClick = useCallback((customer: string) => {\n console.log(\"Navigate to customer:\", customer)\n }, [])\n\n const handleCounterpartyClick = useCallback((counterparty: string) => {\n console.log(\"Navigate to counterparty:\", counterparty)\n }, [])\n\n const handleOFACClick = useCallback((ofacId: string) => {\n navigate(`/compliance/ofac/${ofacId}`)\n }, [navigate])\n\n const handleProductClick = useCallback((productId: string) => {\n console.log(\"Navigate to product:\", productId)\n }, [])\n\n const handleAlertClick = useCallback((alertId: string) => {\n navigate(`/alerts/${alertId}`)\n }, [navigate])\n\n const handleLinkedPaymentClick = useCallback((paymentId: string) => {\n navigate(`/transactions/${paymentId}`)\n }, [navigate])\n\n const handleIMADChange = useCallback((newImad: string) => {\n console.log(\"IMAD changed to:\", newImad)\n // TODO: API call to update IMAD\n }, [])\n\n // Not found state (only show after loading completes)\n if (!isLoading && !error && !transaction) {\n return (\n <div className=\"container mx-auto px-4 py-8\">\n <div className=\"text-center\">\n <h1 className=\"text-2xl font-bold mb-2\">Transaction Not Found</h1>\n <p className=\"text-muted-foreground mb-4\">The transaction #{id} could not be found.</p>\n <Button onClick={() => navigate(\"/transactions/history\")}>\n Back to Transaction History\n </Button>\n </div>\n </div>\n )\n }\n\n return (\n <>\n <TransactionDetailView\n transaction={transaction}\n timelineEvents={timelineEvents}\n isWireTransfer={isWireTransfer}\n isACHTransfer={isACHTransfer}\n showCancelButton={showCancelButton}\n showReturnButton={showReturnButton}\n onReturnClick={handleOpenReturnDialog}\n onCancelClick={handleOpenCancelDialog}\n onAccountClick={handleAccountClick}\n onCustomerClick={handleCustomerClick}\n onCounterpartyClick={handleCounterpartyClick}\n onOFACClick={handleOFACClick}\n onProductClick={handleProductClick}\n onAlertClick={handleAlertClick}\n onLinkedPaymentClick={handleLinkedPaymentClick}\n onIMADChange={handleIMADChange}\n isLoading={isLoading}\n error={error}\n onRetry={handleRetry}\n />\n \n {transaction && (\n <>\n <CancelTransactionDialog\n transactionId={transaction.id}\n open={isCancelDialogOpen}\n onOpenChange={setIsCancelDialogOpen}\n onCancel={handleCancelTransaction}\n />\n \n <ReturnTransactionDialog\n transactionId={transaction.id}\n open={isReturnDialogOpen}\n onOpenChange={setIsReturnDialogOpen}\n onReturn={handleReturnTransaction}\n reasonCodes={returnReasonCodes}\n />\n </>\n )}\n </>\n )\n}\n\nexport default TransactionDetail\n","import * as React from \"react\"\nimport { Container } from \"@/components/ui/container\"\nimport { Stack } from \"@/components/ui/stack\"\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"@/components/ui/tabs\"\nimport { UIKitShowcase } from \"@/components/ui-kit/showcase\"\nimport { PatternLibrary } from \"@/components/ui-kit/pattern-library\"\nimport { DashboardDemo } from \"@/components/ui-kit/dashboard-demo\"\nimport { Breadcrumb } from \"@/components/ui/breadcrumb\"\n\nexport default function UIKit() {\n const breadcrumbs = [\n { label: \"UI Kit\" }\n ]\n\n return (\n <div className=\"min-h-screen bg-gradient-subtle\">\n <Container size=\"xl\">\n <Stack spacing=\"lg\">\n <Breadcrumb items={breadcrumbs} />\n \n <div>\n <h1 className=\"text-3xl font-bold text-foreground\">UI Kit</h1>\n <p className=\"text-muted-foreground mt-2\">\n Complete collection of reusable components, layouts, and patterns\n </p>\n </div>\n\n <Tabs defaultValue=\"showcase\" className=\"w-full\">\n <TabsList className=\"grid w-full grid-cols-3\">\n <TabsTrigger value=\"showcase\">Component Showcase</TabsTrigger>\n <TabsTrigger value=\"patterns\">Pattern Library</TabsTrigger>\n <TabsTrigger value=\"demo\">Dashboard Demo</TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"showcase\" className=\"mt-6\">\n <UIKitShowcase />\n </TabsContent>\n\n <TabsContent value=\"patterns\" className=\"mt-6\">\n <PatternLibrary />\n </TabsContent>\n\n <TabsContent value=\"demo\" className=\"mt-6\">\n <DashboardDemo />\n </TabsContent>\n </Tabs>\n </Stack>\n </Container>\n </div>\n )\n}","import { Button } from \"@/components/ui/button\"\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n SheetTrigger,\n} from \"@/components/ui/sheet\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { Filter, X } from \"lucide-react\"\n\ninterface VelocityLimitFilters {\n accountNumber: string\n counterpartyId: string\n productId: string\n programId: string\n limitName: string\n limitType: string\n status: string\n aggregationLevel: string\n action: string\n transactionType: string\n transactionGroup: string\n}\n\ninterface VelocityLimitFiltersSheetProps {\n filters: VelocityLimitFilters\n onFilterChange: (field: keyof VelocityLimitFilters, value: string | Date | undefined) => void\n onResetFilters: () => void\n}\n\nexport function VelocityLimitFiltersSheet({\n filters,\n onFilterChange,\n onResetFilters,\n}: VelocityLimitFiltersSheetProps) {\n const hasActiveFilters = \n filters.accountNumber !== \"\" ||\n filters.counterpartyId !== \"\" ||\n filters.productId !== \"\" ||\n filters.programId !== \"\" ||\n filters.limitName !== \"\" ||\n filters.limitType !== \"\" ||\n filters.status !== \"\" ||\n filters.aggregationLevel !== \"\" ||\n filters.action !== \"\" ||\n filters.transactionType !== \"\" ||\n filters.transactionGroup !== \"\"\n\n return (\n <Sheet>\n <SheetTrigger asChild>\n <Button variant=\"outline\">\n <Filter className=\"mr-2 h-4 w-4\" />\n Filters\n {hasActiveFilters && (\n <span className=\"ml-2 flex h-5 w-5 items-center justify-center rounded-full bg-primary text-xs text-primary-foreground\">\n {Object.values(filters).filter(v => v !== \"\").length}\n </span>\n )}\n </Button>\n </SheetTrigger>\n <SheetContent className=\"w-full sm:max-w-md overflow-y-auto\">\n <SheetHeader>\n <div className=\"flex items-center justify-between\">\n <SheetTitle>Filter Velocity Limits</SheetTitle>\n {hasActiveFilters && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={onResetFilters}\n className=\"h-8 px-2\"\n >\n <X className=\"mr-1 h-4 w-4\" />\n Clear all\n </Button>\n )}\n </div>\n <SheetDescription>\n Filter velocity limits by account, limit details, and transaction settings\n </SheetDescription>\n </SheetHeader>\n\n <div className=\"grid grid-cols-2 gap-4 mt-6\">\n {/* Account Number */}\n <EnhancedInput\n label=\"Account Number\"\n placeholder=\"Enter account number\"\n value={filters.accountNumber}\n onChange={(e) => onFilterChange(\"accountNumber\", e.target.value)}\n />\n\n {/* Counterparty ID */}\n <EnhancedInput\n label=\"Counterparty ID\"\n placeholder=\"Enter counterparty ID\"\n value={filters.counterpartyId}\n onChange={(e) => onFilterChange(\"counterpartyId\", e.target.value)}\n />\n\n {/* Product ID */}\n <EnhancedInput\n label=\"Product ID\"\n placeholder=\"Enter product ID\"\n value={filters.productId}\n onChange={(e) => onFilterChange(\"productId\", e.target.value)}\n />\n\n {/* Program ID */}\n <EnhancedInput\n label=\"Program ID\"\n placeholder=\"Enter program ID\"\n value={filters.programId}\n onChange={(e) => onFilterChange(\"programId\", e.target.value)}\n />\n\n {/* Limit Name */}\n <EnhancedInput\n label=\"Limit Name\"\n placeholder=\"Enter limit name\"\n value={filters.limitName}\n onChange={(e) => onFilterChange(\"limitName\", e.target.value)}\n />\n\n {/* Limit Type */}\n <EnhancedSelect\n label=\"Limit Type\"\n placeholder=\"Select limit type\"\n options={[\n { value: \"all\", label: \"All types\" },\n { value: \"AMOUNT\", label: \"Amount\" },\n { value: \"COUNT\", label: \"Count\" },\n ]}\n value={filters.limitType || \"all\"}\n onValueChange={(value) => onFilterChange(\"limitType\", value === \"all\" ? \"\" : value)}\n />\n\n {/* Status */}\n <EnhancedSelect\n label=\"Status\"\n placeholder=\"Select status\"\n options={[\n { value: \"all\", label: \"All statuses\" },\n { value: \"ACTIVE\", label: \"Active\" },\n { value: \"INACTIVE\", label: \"Inactive\" },\n { value: \"DELETED\", label: \"Deleted\" },\n ]}\n value={filters.status || \"all\"}\n onValueChange={(value) => onFilterChange(\"status\", value === \"all\" ? \"\" : value)}\n />\n\n {/* Aggregation Level */}\n <EnhancedSelect\n label=\"Aggregation Level\"\n placeholder=\"Select aggregation level\"\n options={[\n { value: \"all\", label: \"All levels\" },\n { value: \"ACCOUNT\", label: \"Account\" },\n { value: \"PROGRAM\", label: \"Program\" },\n { value: \"PRODUCT\", label: \"Product\" },\n ]}\n value={filters.aggregationLevel || \"all\"}\n onValueChange={(value) => onFilterChange(\"aggregationLevel\", value === \"all\" ? \"\" : value)}\n />\n\n {/* Action */}\n <EnhancedSelect\n label=\"Action\"\n placeholder=\"Select action\"\n options={[\n { value: \"all\", label: \"All actions\" },\n { value: \"DECLINE\", label: \"Decline\" },\n { value: \"FLAG\", label: \"Flag\" },\n ]}\n value={filters.action || \"all\"}\n onValueChange={(value) => onFilterChange(\"action\", value === \"all\" ? \"\" : value)}\n />\n\n {/* Transaction Type */}\n <EnhancedSelect\n label=\"Transaction Type\"\n placeholder=\"Select transaction type\"\n options={[\n { value: \"all\", label: \"All types\" },\n { value: \"WIRE\", label: \"Wire\" },\n { value: \"ACH\", label: \"ACH\" },\n { value: \"CARD\", label: \"Card\" },\n ]}\n value={filters.transactionType || \"all\"}\n onValueChange={(value) => onFilterChange(\"transactionType\", value === \"all\" ? \"\" : value)}\n />\n\n {/* Transaction Group */}\n <div className=\"col-span-2\">\n <EnhancedSelect\n label=\"Transaction Group\"\n placeholder=\"Select transaction group\"\n options={[\n { value: \"all\", label: \"All groups\" },\n { value: \"INBOUND\", label: \"Inbound\" },\n { value: \"OUTBOUND\", label: \"Outbound\" },\n ]}\n value={filters.transactionGroup || \"all\"}\n onValueChange={(value) => onFilterChange(\"transactionGroup\", value === \"all\" ? \"\" : value)}\n />\n </div>\n </div>\n </SheetContent>\n </Sheet>\n )\n}\n","export interface VelocityLimit {\n id: string\n created: string\n limitName: string\n limitType: \"receiver_name_mismatch\" | \"round_number\" | \"transaction\" | \"prohibited_entity\"\n action: \"DECLINE\" | \"FLAG\"\n status: \"ACTIVE\" | \"INACTIVE\" | \"DELETED\"\n associatedEntity: \"Account\" | \"Global\" | \"Program\" | \"Product\"\n associatedEntityId?: string\n // Transaction-specific fields\n transactionType?: string[]\n transactionGroup?: string[]\n aggregationLevel?: string\n timePeriod?: string\n maxAmount?: string\n maxCount?: string\n // Receiver name mismatch fields\n mismatchThreshold?: string\n comparisonMethod?: string\n // Round number fields\n amountThreshold?: string\n roundPattern?: string\n // Prohibited entity fields\n entityListName?: string\n entityType?: string\n prohibitedEntities?: string\n}\n\nexport const mockVelocityLimits: VelocityLimit[] = [\n {\n id: \"1\",\n created: \"2025-11-13T10:00:00Z\",\n limitName: \"QA - Decline inbound wire\",\n limitType: \"transaction\",\n action: \"DECLINE\",\n status: \"ACTIVE\",\n associatedEntity: \"Account\",\n associatedEntityId: \"9539334834\",\n transactionGroup: [\"inbound\"],\n transactionType: [\"wire\"],\n aggregationLevel: \"account\",\n timePeriod: \"daily\",\n maxAmount: \"50000\",\n maxCount: \"10\"\n },\n {\n id: \"2\",\n created: \"2025-11-13T10:00:00Z\",\n limitName: \"QA - Decline inbound wire\",\n limitType: \"transaction\",\n action: \"DECLINE\",\n status: \"ACTIVE\",\n associatedEntity: \"Account\",\n associatedEntityId: \"8895578481\",\n transactionType: [\"wire\"],\n aggregationLevel: \"account\",\n timePeriod: \"daily\",\n maxAmount: \"100000\",\n maxCount: \"20\"\n },\n {\n id: \"3\",\n created: \"2025-11-13T10:00:00Z\",\n limitName: \"QA - Decline inbound wire\",\n limitType: \"transaction\",\n action: \"DECLINE\",\n status: \"ACTIVE\",\n associatedEntity: \"Account\",\n associatedEntityId: \"86046257\",\n transactionType: [\"wire\"],\n aggregationLevel: \"transaction\",\n maxAmount: \"25000\"\n },\n {\n id: \"4\",\n created: \"2025-11-13T10:00:00Z\",\n limitName: \"QA - Decline inbound wire\",\n limitType: \"transaction\",\n action: \"DECLINE\",\n status: \"ACTIVE\",\n associatedEntity: \"Account\",\n associatedEntityId: \"86046257\",\n transactionType: [\"ACH_RECEIVER_CREDIT\", \"ACH_ORIGINATOR_CREDIT\", \"WIRE_INBOUND\", \"WIRE_OUTBOUND\", \"CARD_TRANSACTION\"],\n aggregationLevel: \"account\",\n timePeriod: \"monthly\",\n maxAmount: \"500000\",\n maxCount: \"50\"\n },\n {\n id: \"5\",\n created: \"2025-10-23T10:00:00Z\",\n limitName: \"prohibited country list v2\",\n limitType: \"prohibited_entity\",\n action: \"DECLINE\",\n status: \"DELETED\",\n associatedEntity: \"Global\",\n entityListName: \"OFAC Sanctioned Countries\",\n entityType: \"country\",\n prohibitedEntities: \"Iran, North Korea, Syria, Cuba\"\n },\n {\n id: \"6\",\n created: \"2025-10-16T10:00:00Z\",\n limitName: \"global wire debit limit\",\n limitType: \"transaction\",\n action: \"DECLINE\",\n status: \"INACTIVE\",\n associatedEntity: \"Global\",\n transactionType: [\"wire\"],\n aggregationLevel: \"program\",\n timePeriod: \"daily\",\n maxAmount: \"1000000\",\n maxCount: \"100\"\n },\n {\n id: \"7\",\n created: \"2025-10-16T10:00:00Z\",\n limitName: \"global wire debit limit\",\n limitType: \"transaction\",\n action: \"DECLINE\",\n status: \"ACTIVE\",\n associatedEntity: \"Global\",\n transactionType: [\"wire\"],\n aggregationLevel: \"program\",\n timePeriod: \"daily\",\n maxAmount: \"1000000\",\n maxCount: \"100\"\n },\n {\n id: \"8\",\n created: \"2025-09-04T10:00:00Z\",\n limitName: \"wire_ach_rounded_amt\",\n limitType: \"round_number\",\n action: \"FLAG\",\n status: \"ACTIVE\",\n associatedEntity: \"Program\",\n associatedEntityId: \"167989\",\n amountThreshold: \"10000\",\n roundPattern: \"1000, 5000, 10000, 50000\"\n },\n {\n id: \"9\",\n created: \"2025-08-20T10:00:00Z\",\n limitName: \"receiver name validation\",\n limitType: \"receiver_name_mismatch\",\n action: \"FLAG\",\n status: \"ACTIVE\",\n associatedEntity: \"Global\",\n mismatchThreshold: \"80\",\n comparisonMethod: \"fuzzy\"\n }\n]\n","import { useState, useMemo } from \"react\"\nimport { useNavigate } from \"react-router-dom\"\nimport { DataTable, DataTableColumn } from \"@/components/ui/data-table\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { VelocityLimitFiltersSheet } from \"@/components/compliance/VelocityLimitFiltersSheet\"\nimport { mockVelocityLimits, VelocityLimit } from \"@/lib/mock-data/velocity-limit-data\"\nimport { format, parseISO, isAfter, isBefore, startOfDay, endOfDay } from \"date-fns\"\nimport { Plus } from \"lucide-react\"\n\ninterface VelocityLimitFilters {\n accountNumber: string\n counterpartyId: string\n productId: string\n programId: string\n limitName: string\n limitType: string\n status: string\n aggregationLevel: string\n action: string\n transactionType: string\n transactionGroup: string\n}\n\nconst getStatusVariant = (status: VelocityLimit[\"status\"]) => {\n switch (status) {\n case \"ACTIVE\":\n return \"success\"\n case \"INACTIVE\":\n return \"warning\"\n case \"DELETED\":\n return \"destructive\"\n default:\n return \"secondary\"\n }\n}\n\nconst getActionVariant = (action: VelocityLimit[\"action\"]) => {\n switch (action) {\n case \"DECLINE\":\n return \"destructive\"\n case \"FLAG\":\n return \"warning\"\n default:\n return \"secondary\"\n }\n}\n\nexport default function VelocityLimits() {\n const navigate = useNavigate()\n const [sortField, setSortField] = useState<keyof VelocityLimit>(\"created\")\n const [sortDirection, setSortDirection] = useState<\"asc\" | \"desc\">(\"desc\")\n const [filters, setFilters] = useState<VelocityLimitFilters>({\n accountNumber: \"\",\n counterpartyId: \"\",\n productId: \"\",\n programId: \"\",\n limitName: \"\",\n limitType: \"\",\n status: \"\",\n aggregationLevel: \"\",\n action: \"\",\n transactionType: \"\",\n transactionGroup: \"\"\n })\n\n const handleFilterChange = (field: keyof VelocityLimitFilters, value: string | Date | undefined) => {\n setFilters(prev => ({ ...prev, [field]: value }))\n }\n\n const handleResetFilters = () => {\n setFilters({\n accountNumber: \"\",\n counterpartyId: \"\",\n productId: \"\",\n programId: \"\",\n limitName: \"\",\n limitType: \"\",\n status: \"\",\n aggregationLevel: \"\",\n action: \"\",\n transactionType: \"\",\n transactionGroup: \"\"\n })\n }\n\n const handleSort = (field: keyof VelocityLimit) => {\n if (sortField === field) {\n setSortDirection(sortDirection === \"asc\" ? \"desc\" : \"asc\")\n } else {\n setSortField(field)\n setSortDirection(\"desc\")\n }\n }\n\n // Filter limits based on selected filters\n const filteredLimits = useMemo(() => {\n return mockVelocityLimits.filter((limit) => {\n // Account Number filter\n if (filters.accountNumber && limit.associatedEntityId && \n !limit.associatedEntityId.includes(filters.accountNumber)) {\n return false\n }\n\n // Limit Name filter\n if (filters.limitName && !limit.limitName.toLowerCase().includes(filters.limitName.toLowerCase())) {\n return false\n }\n\n // Action filter\n if (filters.action && limit.action !== filters.action) {\n return false\n }\n\n // Status filter\n if (filters.status && limit.status !== filters.status) {\n return false\n }\n\n // Note: Other filters (counterpartyId, productId, programId, limitType, aggregationLevel, \n // transactionType, transactionGroup) would require additional data in the VelocityLimit interface\n // to properly filter. For now, they're collected but not applied.\n\n return true\n })\n }, [filters])\n\n const sortedLimits = [...filteredLimits].sort((a, b) => {\n const aValue = a[sortField]\n const bValue = b[sortField]\n \n if (aValue == null) return 1\n if (bValue == null) return -1\n \n if (sortDirection === \"asc\") {\n return aValue > bValue ? 1 : -1\n } else {\n return aValue < bValue ? 1 : -1\n }\n })\n\n const columns: DataTableColumn<VelocityLimit>[] = [\n {\n key: \"created\",\n title: \"Created\",\n sortable: true,\n render: (value) => (\n <span className=\"text-sm\">\n {format(parseISO(value), \"yyyy-MM-dd\")}\n </span>\n )\n },\n {\n key: \"limitName\",\n title: \"Limit Name\",\n sortable: true,\n render: (value) => (\n <span className=\"text-sm font-medium\">{value}</span>\n )\n },\n {\n key: \"action\",\n title: \"Action\",\n sortable: true,\n render: (value) => (\n <Badge variant={getActionVariant(value)}>\n {value}\n </Badge>\n )\n },\n {\n key: \"status\",\n title: \"Status\",\n sortable: true,\n render: (value) => (\n <Badge variant={getStatusVariant(value)}>\n {value}\n </Badge>\n )\n },\n {\n key: \"associatedEntity\",\n title: \"Associated Entity\",\n sortable: true,\n render: (value) => (\n <span className=\"text-sm\">{value}</span>\n )\n },\n {\n key: \"associatedEntityId\",\n title: \"Associated Entity ID\",\n render: (value) => (\n <span className=\"text-sm\">\n {value || \"—\"}\n </span>\n )\n }\n ]\n\n return (\n <div className=\"flex flex-col h-screen bg-gradient-subtle\">\n {/* Fixed Header */}\n <div className=\"flex-none border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60\">\n <div className=\"container mx-auto px-4 py-6 max-w-none\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-3xl font-bold text-foreground\">Velocity Limits</h1>\n </div>\n <div className=\"flex items-center gap-2\">\n <VelocityLimitFiltersSheet\n filters={filters}\n onFilterChange={handleFilterChange}\n onResetFilters={handleResetFilters}\n />\n <Button onClick={() => navigate(\"/compliance/velocity/create\")}>\n <Plus className=\"mr-2 h-4 w-4\" />\n Create Limit\n </Button>\n </div>\n </div>\n </div>\n </div>\n\n {/* Scrollable Content */}\n <div className=\"flex-1 overflow-hidden\">\n <div className=\"container mx-auto px-4 h-full max-w-none flex flex-col\">\n <div className=\"flex-1 mt-4 overflow-auto\">\n <DataTable\n columns={columns}\n data={sortedLimits}\n sortBy={sortField as string}\n sortDirection={sortDirection}\n onSort={handleSort}\n onRowClick={(limit) => navigate(`/compliance/velocity/${limit.id}`)}\n pagination={{\n pageSize: 10,\n currentPage: 1,\n totalItems: sortedLimits.length,\n onPageChange: () => {}\n }}\n />\n </div>\n </div>\n </div>\n </div>\n )\n}\n","import { useState } from \"react\"\nimport { useNavigate } from \"react-router-dom\"\nimport { Button } from \"@/components/ui/button\"\nimport { EnhancedSelect } from \"@/components/ui/enhanced-select\"\nimport { EnhancedInput } from \"@/components/ui/enhanced-input\"\nimport { CurrencyInput } from \"@/components/ui/currency-input\"\nimport { Card } from \"@/components/ui/card\"\nimport { ArrowLeft } from \"lucide-react\"\n\ntype LimitType = \"\" | \"receiver_name_mismatch\" | \"round_number\" | \"transaction\" | \"prohibited_entity\"\n\nexport default function CreateVelocityLimit() {\n const navigate = useNavigate()\n const [limitType, setLimitType] = useState<LimitType>(\"\")\n const [formData, setFormData] = useState({\n limitName: \"\",\n action: \"\",\n associatedEntityType: \"\",\n associatedEntityId: \"\",\n transactionFilterType: \"\", // \"type\" or \"group\"\n transactionType: \"\",\n transactionGroup: \"\",\n aggregationLevel: \"\",\n // Type-specific fields will be added based on limitType\n })\n\n const handleFieldChange = (field: string, value: string) => {\n setFormData(prev => ({ ...prev, [field]: value }))\n }\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault()\n console.log(\"Creating velocity limit:\", { limitType, ...formData })\n // TODO: Implement actual creation logic\n navigate(\"/compliance/velocity\")\n }\n\n const renderTypeSpecificFields = () => {\n switch (limitType) {\n case \"receiver_name_mismatch\":\n return (\n <>\n <div className=\"grid grid-cols-2 gap-4\">\n <EnhancedInput\n label=\"Mismatch Threshold (%)\"\n placeholder=\"Enter threshold percentage\"\n onChange={(e) => handleFieldChange(\"mismatchThreshold\", e.target.value)}\n />\n <EnhancedSelect\n label=\"Comparison Method\"\n placeholder=\"Select method\"\n options={[\n { value: \"exact\", label: \"Exact Match\" },\n { value: \"fuzzy\", label: \"Fuzzy Match\" },\n { value: \"partial\", label: \"Partial Match\" },\n ]}\n onValueChange={(value) => handleFieldChange(\"comparisonMethod\", value)}\n />\n </div>\n </>\n )\n\n case \"round_number\":\n return (\n <>\n <div className=\"grid grid-cols-2 gap-4\">\n <CurrencyInput\n label=\"Amount Threshold\"\n value={(formData as any).amountThreshold || \"\"}\n onChange={(value) => handleFieldChange(\"amountThreshold\", value)}\n />\n <EnhancedInput\n label=\"Round Number Pattern\"\n placeholder=\"e.g., 1000, 5000, 10000\"\n onChange={(e) => handleFieldChange(\"roundPattern\", e.target.value)}\n />\n </div>\n </>\n )\n\n case \"transaction\":\n return (\n <>\n <div className=\"mb-6\">\n <label className=\"text-sm font-medium text-foreground mb-3 block\">\n Filter By\n </label>\n <div className=\"flex items-center gap-6\">\n <div className=\"flex gap-6\">\n <label className=\"flex items-center gap-2 cursor-pointer\">\n <input\n type=\"radio\"\n name=\"transactionFilterType\"\n value=\"type\"\n checked={formData.transactionFilterType === \"type\"}\n onChange={(e) => {\n handleFieldChange(\"transactionFilterType\", e.target.value)\n handleFieldChange(\"transactionGroup\", \"\")\n }}\n className=\"w-4 h-4 text-primary border-border focus:ring-2 focus:ring-primary\"\n />\n <span className=\"text-sm text-foreground\">Transaction Type</span>\n </label>\n <label className=\"flex items-center gap-2 cursor-pointer\">\n <input\n type=\"radio\"\n name=\"transactionFilterType\"\n value=\"group\"\n checked={formData.transactionFilterType === \"group\"}\n onChange={(e) => {\n handleFieldChange(\"transactionFilterType\", e.target.value)\n handleFieldChange(\"transactionType\", \"\")\n }}\n className=\"w-4 h-4 text-primary border-border focus:ring-2 focus:ring-primary\"\n />\n <span className=\"text-sm text-foreground\">Transaction Group</span>\n </label>\n </div>\n\n <div className=\"flex-1\">\n {formData.transactionFilterType === \"type\" && (\n <EnhancedSelect\n label=\"\"\n placeholder=\"Select type\"\n options={[\n { value: \"wire\", label: \"Wire\" },\n { value: \"ach\", label: \"ACH\" },\n { value: \"card\", label: \"Card\" },\n ]}\n value={formData.transactionType}\n onValueChange={(value) => handleFieldChange(\"transactionType\", value)}\n />\n )}\n\n {formData.transactionFilterType === \"group\" && (\n <EnhancedSelect\n label=\"\"\n placeholder=\"Select group\"\n options={[\n { value: \"inbound\", label: \"Inbound\" },\n { value: \"outbound\", label: \"Outbound\" },\n ]}\n value={formData.transactionGroup}\n onValueChange={(value) => handleFieldChange(\"transactionGroup\", value)}\n />\n )}\n </div>\n </div>\n </div>\n\n <div className=\"grid grid-cols-2 gap-4\">\n <EnhancedSelect\n label=\"Aggregation Level\"\n placeholder=\"Select level\"\n options={[\n { value: \"transaction\", label: \"Transaction\" },\n { value: \"account\", label: \"Account\" },\n { value: \"program\", label: \"Program\" },\n { value: \"product\", label: \"Product\" },\n ]}\n onValueChange={(value) => handleFieldChange(\"aggregationLevel\", value)}\n />\n {formData.aggregationLevel !== \"transaction\" && (\n <EnhancedSelect\n label=\"Time Period\"\n placeholder=\"Select period\"\n options={[\n { value: \"daily\", label: \"Daily\" },\n { value: \"weekly\", label: \"Weekly\" },\n { value: \"monthly\", label: \"Monthly\" },\n ]}\n onValueChange={(value) => handleFieldChange(\"timePeriod\", value)}\n />\n )}\n <CurrencyInput\n label=\"Max Transaction Amount\"\n value={(formData as any).maxAmount || \"\"}\n onChange={(value) => handleFieldChange(\"maxAmount\", value)}\n />\n {formData.aggregationLevel !== \"transaction\" && (\n <EnhancedInput\n label=\"Max Transaction Count\"\n placeholder=\"Enter count\"\n onChange={(e) => handleFieldChange(\"maxCount\", e.target.value)}\n />\n )}\n </div>\n </>\n )\n\n case \"prohibited_entity\":\n return (\n <>\n <div className=\"grid grid-cols-2 gap-4\">\n <EnhancedInput\n label=\"Entity List Name\"\n placeholder=\"Enter list name\"\n onChange={(e) => handleFieldChange(\"entityListName\", e.target.value)}\n />\n <EnhancedSelect\n label=\"Entity Type\"\n placeholder=\"Select type\"\n options={[\n { value: \"country\", label: \"Country\" },\n { value: \"individual\", label: \"Individual\" },\n { value: \"business\", label: \"Business\" },\n ]}\n onValueChange={(value) => handleFieldChange(\"entityType\", value)}\n />\n <div className=\"col-span-2\">\n <EnhancedInput\n label=\"Prohibited Entities (comma-separated)\"\n placeholder=\"Enter entities\"\n onChange={(e) => handleFieldChange(\"prohibitedEntities\", e.target.value)}\n />\n </div>\n </div>\n </>\n )\n\n default:\n return null\n }\n }\n\n return (\n <div className=\"flex flex-col h-screen bg-gradient-subtle\">\n {/* Fixed Header */}\n <div className=\"flex-none border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60\">\n <div className=\"container mx-auto px-4 py-6 max-w-none\">\n <div className=\"flex items-center gap-4\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => navigate(\"/compliance/velocity\")}\n >\n <ArrowLeft className=\"mr-2 h-4 w-4\" />\n Back\n </Button>\n <div>\n <h1 className=\"text-3xl font-bold text-foreground\">Create Velocity Limit</h1>\n </div>\n </div>\n </div>\n </div>\n\n {/* Scrollable Content */}\n <div className=\"flex-1 overflow-auto\">\n <div className=\"container mx-auto px-4 py-6 max-w-4xl\">\n <form onSubmit={handleSubmit}>\n <Card className=\"p-6\">\n <div className=\"space-y-6\">\n {/* Limit Type Selection */}\n <div>\n <h2 className=\"text-lg font-semibold mb-4\">Select Limit Type</h2>\n <EnhancedSelect\n label=\"Limit Type\"\n placeholder=\"Select a limit type\"\n options={[\n { value: \"receiver_name_mismatch\", label: \"Receiver Name Mismatch\" },\n { value: \"round_number\", label: \"Round Number\" },\n { value: \"transaction\", label: \"Transaction\" },\n { value: \"prohibited_entity\", label: \"Prohibited Entity\" },\n ]}\n value={limitType}\n onValueChange={(value) => setLimitType(value as LimitType)}\n />\n </div>\n\n {/* Common Fields (shown after limit type is selected) */}\n {limitType && (\n <>\n <div className=\"border-t pt-6\">\n <h2 className=\"text-lg font-semibold mb-4\">Basic Information</h2>\n <div className=\"grid grid-cols-2 gap-4\">\n <EnhancedInput\n label=\"Limit Name\"\n placeholder=\"Enter limit name\"\n value={formData.limitName}\n onChange={(e) => handleFieldChange(\"limitName\", e.target.value)}\n />\n <EnhancedSelect\n label=\"Action\"\n placeholder=\"Select action\"\n options={[\n { value: \"decline\", label: \"Decline\" },\n { value: \"flag\", label: \"Flag\" },\n ]}\n onValueChange={(value) => handleFieldChange(\"action\", value)}\n />\n <EnhancedSelect\n label=\"Associated Entity Type\"\n placeholder=\"Select entity type\"\n options={[\n { value: \"global\", label: \"Global\" },\n { value: \"program\", label: \"Program\" },\n { value: \"product\", label: \"Product\" },\n { value: \"account\", label: \"Account\" },\n ]}\n value={formData.associatedEntityType}\n onValueChange={(value) => {\n handleFieldChange(\"associatedEntityType\", value)\n handleFieldChange(\"associatedEntityId\", \"\")\n }}\n />\n {formData.associatedEntityType && formData.associatedEntityType !== \"global\" && (\n <EnhancedInput\n label={`${formData.associatedEntityType.charAt(0).toUpperCase() + formData.associatedEntityType.slice(1)} ID`}\n placeholder={`Enter ${formData.associatedEntityType} ID`}\n value={formData.associatedEntityId}\n onChange={(e) => handleFieldChange(\"associatedEntityId\", e.target.value)}\n />\n )}\n </div>\n </div>\n\n {/* Type-Specific Fields */}\n <div className=\"border-t pt-6\">\n <h2 className=\"text-lg font-semibold mb-4\">Limit Configuration</h2>\n {renderTypeSpecificFields()}\n </div>\n\n {/* Action Buttons */}\n <div className=\"flex items-center justify-end gap-3 border-t pt-6\">\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={() => navigate(\"/compliance/velocity\")}\n >\n Cancel\n </Button>\n <Button type=\"submit\">\n Create Limit\n </Button>\n </div>\n </>\n )}\n </div>\n </Card>\n </form>\n </div>\n </div>\n </div>\n )\n}\n","import { useParams, useNavigate } from \"react-router-dom\"\nimport { DetailPageLayout } from \"@/components/ui/detail-page-layout\"\nimport { EditableFormCard } from \"@/components/ui/editable-form-card\"\nimport { InfoField } from \"@/components/ui/info-field\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { mockVelocityLimits, VelocityLimit } from \"@/lib/mock-data/velocity-limit-data\"\nimport { format, parseISO } from \"date-fns\"\nimport { ArrowLeft } from \"lucide-react\"\nimport { formatCurrency } from \"@/lib/utils\"\n\nconst getStatusVariant = (status: VelocityLimit[\"status\"]) => {\n switch (status) {\n case \"ACTIVE\":\n return \"success\"\n case \"INACTIVE\":\n return \"warning\"\n case \"DELETED\":\n return \"destructive\"\n default:\n return \"secondary\"\n }\n}\n\nconst getActionVariant = (action: VelocityLimit[\"action\"]) => {\n switch (action) {\n case \"DECLINE\":\n return \"destructive\"\n case \"FLAG\":\n return \"warning\"\n default:\n return \"secondary\"\n }\n}\n\nconst VelocityLimitDetailsCard = ({ \n isEditing, \n onToggleEdit,\n limit\n}: { \n isEditing: boolean\n onToggleEdit: () => void\n limit: VelocityLimit\n}) => {\n const renderTransactionFields = () => (\n <>\n {limit.transactionType && limit.transactionType.length > 0 && (\n <div className=\"grid grid-cols-2 gap-4\">\n <div>\n <div className=\"text-sm font-medium text-muted-foreground mb-1\">Transaction Type</div>\n <div className=\"space-y-1\">\n {limit.transactionType.map((type, index) => (\n <div key={index} className=\"text-sm text-foreground\">\n {type}\n </div>\n ))}\n </div>\n </div>\n {limit.transactionGroup && limit.transactionGroup.length > 0 && (\n <div>\n <div className=\"text-sm font-medium text-muted-foreground mb-1\">Transaction Group</div>\n <div className=\"space-y-1\">\n {limit.transactionGroup.map((group, index) => (\n <div key={index} className=\"text-sm text-foreground\">\n {group.toUpperCase()}\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n )}\n {!limit.transactionType && limit.transactionGroup && limit.transactionGroup.length > 0 && (\n <div className=\"grid grid-cols-2 gap-4\">\n <div>\n <div className=\"text-sm font-medium text-muted-foreground mb-1\">Transaction Group</div>\n <div className=\"space-y-1\">\n {limit.transactionGroup.map((group, index) => (\n <div key={index} className=\"text-sm text-foreground\">\n {group.toUpperCase()}\n </div>\n ))}\n </div>\n </div>\n </div>\n )}\n {(limit.aggregationLevel || limit.timePeriod) && (\n <div className=\"grid grid-cols-2 gap-4\">\n {limit.aggregationLevel && (\n <InfoField\n label=\"Aggregation Level\"\n value={limit.aggregationLevel.charAt(0).toUpperCase() + limit.aggregationLevel.slice(1)}\n layout=\"horizontal\"\n />\n )}\n {limit.timePeriod && (\n <InfoField\n label=\"Time Period\"\n value={limit.timePeriod.charAt(0).toUpperCase() + limit.timePeriod.slice(1)}\n layout=\"horizontal\"\n />\n )}\n </div>\n )}\n {(limit.maxAmount || limit.maxCount) && (\n <div className=\"grid grid-cols-2 gap-4\">\n {limit.maxAmount && (\n <InfoField\n label=\"Max Amount\"\n value={formatCurrency(parseFloat(limit.maxAmount))}\n layout=\"horizontal\"\n />\n )}\n {limit.maxCount && (\n <InfoField\n label=\"Max Count\"\n value={limit.maxCount}\n layout=\"horizontal\"\n />\n )}\n </div>\n )}\n </>\n )\n\n const renderReceiverNameMismatchFields = () => (\n <>\n {limit.mismatchThreshold && (\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField\n label=\"Mismatch Threshold\"\n value={`${limit.mismatchThreshold}%`}\n layout=\"horizontal\"\n />\n {limit.comparisonMethod && (\n <InfoField\n label=\"Comparison Method\"\n value={limit.comparisonMethod.charAt(0).toUpperCase() + limit.comparisonMethod.slice(1)}\n layout=\"horizontal\"\n />\n )}\n </div>\n )}\n </>\n )\n\n const renderRoundNumberFields = () => (\n <>\n {limit.amountThreshold && (\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField\n label=\"Amount Threshold\"\n value={formatCurrency(parseFloat(limit.amountThreshold))}\n layout=\"horizontal\"\n />\n {limit.roundPattern && (\n <InfoField\n label=\"Round Patterns\"\n value={limit.roundPattern}\n layout=\"horizontal\"\n />\n )}\n </div>\n )}\n </>\n )\n\n const renderProhibitedEntityFields = () => (\n <>\n {limit.entityListName && (\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField\n label=\"Entity List Name\"\n value={limit.entityListName}\n layout=\"horizontal\"\n />\n {limit.entityType && (\n <InfoField\n label=\"Entity Type\"\n value={limit.entityType.charAt(0).toUpperCase() + limit.entityType.slice(1)}\n layout=\"horizontal\"\n />\n )}\n </div>\n )}\n {limit.prohibitedEntities && (\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField\n label=\"Prohibited Entities\"\n value={limit.prohibitedEntities}\n layout=\"horizontal\"\n />\n </div>\n )}\n </>\n )\n\n const viewContent = (\n <div className=\"space-y-3\">\n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField\n label=\"Limit Name\"\n value={limit.limitName}\n layout=\"horizontal\"\n />\n <InfoField\n label=\"Limit Type\"\n value={limit.limitType.replace(/_/g, ' ').replace(/\\b\\w/g, l => l.toUpperCase())}\n layout=\"horizontal\"\n />\n </div>\n \n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField\n label=\"Action\"\n value={<Badge variant={getActionVariant(limit.action)}>{limit.action}</Badge>}\n layout=\"horizontal\"\n />\n <InfoField\n label=\"Created\"\n value={format(parseISO(limit.created), \"MMM dd, yyyy 'at' h:mm a\")}\n layout=\"horizontal\"\n />\n </div>\n \n <div className=\"grid grid-cols-2 gap-4\">\n <InfoField\n label=\"Associated Entity\"\n value={limit.associatedEntity}\n layout=\"horizontal\"\n />\n {limit.associatedEntityId && (\n <InfoField\n label=\"Associated Entity ID\"\n value={limit.associatedEntityId}\n layout=\"horizontal\"\n />\n )}\n </div>\n\n <div className=\"space-y-3\">\n {limit.limitType === \"transaction\" && renderTransactionFields()}\n {limit.limitType === \"receiver_name_mismatch\" && renderReceiverNameMismatchFields()}\n {limit.limitType === \"round_number\" && renderRoundNumberFields()}\n {limit.limitType === \"prohibited_entity\" && renderProhibitedEntityFields()}\n </div>\n </div>\n )\n\n const editContent = (\n <div className=\"text-sm text-muted-foreground\">Edit mode coming soon...</div>\n )\n\n return (\n <EditableFormCard\n title=\"Velocity Limit Details\"\n viewContent={viewContent}\n editContent={editContent}\n isEditing={isEditing}\n onToggleEdit={onToggleEdit}\n variant=\"subtle\"\n />\n )\n}\n\nexport default function VelocityLimitDetail() {\n const { id } = useParams()\n const navigate = useNavigate()\n\n const limit = mockVelocityLimits.find(l => l.id === id)\n\n if (!limit) {\n return (\n <div className=\"container mx-auto px-4 py-8\">\n <div className=\"text-center\">\n <h1 className=\"text-2xl font-bold mb-2\">Velocity Limit Not Found</h1>\n <p className=\"text-muted-foreground mb-4\">The velocity limit could not be found.</p>\n <Button onClick={() => navigate(\"/compliance/velocity\")}>\n <ArrowLeft className=\"mr-2 h-4 w-4\" />\n Back to Velocity Limits\n </Button>\n </div>\n </div>\n )\n }\n\n return (\n <DetailPageLayout\n title={\n <div className=\"flex items-center gap-3\">\n <span>{limit.limitName}</span>\n <Badge variant={getStatusVariant(limit.status)}>{limit.status}</Badge>\n </div>\n }\n cards={[\n {\n key: \"details\",\n component: (props) => <VelocityLimitDetailsCard {...props} limit={limit} />\n }\n ]}\n actions={[\n {\n label: \"Deactivate\",\n variant: \"destructive\",\n onClick: () => console.log(\"Deactivate limit\")\n }\n ]}\n />\n )\n}\n","import { useState, useRef } from \"react\"\nimport { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter } from \"@/components/ui/dialog\"\nimport { Button } from \"@/components/ui/button\"\nimport { Upload, X, File, ArrowRightLeft, Zap } from \"lucide-react\"\nimport { toast } from \"sonner\"\nimport { Label } from \"@/components/ui/label\"\nimport { cn } from \"@/lib/utils\"\n\ninterface UploadReconDialogProps {\n open: boolean\n onOpenChange: (open: boolean) => void\n}\n\nexport function UploadReconDialog({ open, onOpenChange }: UploadReconDialogProps) {\n const [fileType, setFileType] = useState<\"ACH\" | \"Wire\" | null>(null)\n const [selectedFile, setSelectedFile] = useState<File | null>(null)\n const [isUploading, setIsUploading] = useState(false)\n const fileInputRef = useRef<HTMLInputElement>(null)\n\n const handleFileChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const file = event.target.files?.[0]\n if (file) {\n setSelectedFile(file)\n }\n }\n\n const handleRemoveFile = () => {\n setSelectedFile(null)\n if (fileInputRef.current) {\n fileInputRef.current.value = \"\"\n }\n }\n\n const handleReset = () => {\n setFileType(null)\n setSelectedFile(null)\n if (fileInputRef.current) {\n fileInputRef.current.value = \"\"\n }\n }\n\n const handleUpload = async () => {\n if (!selectedFile || !fileType) return\n\n setIsUploading(true)\n\n // Simulate upload\n setTimeout(() => {\n setIsUploading(false)\n toast.success(`${fileType} file uploaded successfully`)\n handleReset()\n onOpenChange(false)\n }, 2000)\n }\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent className=\"sm:max-w-[500px]\">\n <DialogHeader>\n <DialogTitle>Upload Recon File</DialogTitle>\n </DialogHeader>\n\n <div className=\"space-y-4 py-4\">\n {/* File Type Selection */}\n <div className=\"space-y-3\">\n <Label>File Type</Label>\n <div className=\"grid grid-cols-2 gap-3\">\n <button\n type=\"button\"\n onClick={() => setFileType(\"ACH\")}\n className={cn(\n \"flex flex-col items-center gap-3 p-4 border-2 rounded-lg transition-all\",\n fileType === \"ACH\"\n ? \"border-primary bg-primary/5\"\n : \"border-border hover:border-primary/50\"\n )}\n >\n <ArrowRightLeft className=\"h-8 w-8 text-primary\" />\n <div className=\"text-center\">\n <div className=\"font-medium\">ACH</div>\n <div className=\"text-xs text-muted-foreground mt-1\">ACH Originated/Received Entries Detail Report in .csv format</div>\n </div>\n </button>\n <button\n type=\"button\"\n onClick={() => setFileType(\"Wire\")}\n className={cn(\n \"flex flex-col items-center gap-3 p-4 border-2 rounded-lg transition-all\",\n fileType === \"Wire\"\n ? \"border-primary bg-primary/5\"\n : \"border-border hover:border-primary/50\"\n )}\n >\n <Zap className=\"h-8 w-8 text-primary\" />\n <div className=\"text-center\">\n <div className=\"font-medium\">Wire</div>\n <div className=\"text-xs text-muted-foreground mt-1\">FedTransaction Analyzer report in .csv format</div>\n </div>\n </button>\n </div>\n </div>\n\n {/* File Upload Section */}\n {fileType && (\n <div className=\"border-2 border-dashed border-border rounded-lg p-6\">\n {!selectedFile ? (\n <div className=\"flex flex-col items-center justify-center gap-4\">\n <Upload className=\"h-12 w-12 text-muted-foreground\" />\n <div className=\"text-center\">\n <p className=\"text-sm font-medium\">Select a file to upload</p>\n <p className=\"text-xs text-muted-foreground mt-1\">\n CSV, TXT files supported\n </p>\n </div>\n <input\n ref={fileInputRef}\n type=\"file\"\n onChange={handleFileChange}\n className=\"hidden\"\n accept=\".csv,.txt\"\n id=\"recon-file-upload\"\n />\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={() => fileInputRef.current?.click()}\n >\n Select File\n </Button>\n </div>\n ) : (\n <div className=\"flex items-center justify-between gap-4\">\n <div className=\"flex items-center gap-3 flex-1 min-w-0\">\n <File className=\"h-8 w-8 text-primary flex-shrink-0\" />\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium truncate\">{selectedFile.name}</p>\n <p className=\"text-xs text-muted-foreground\">\n {(selectedFile.size / 1024).toFixed(2)} KB\n </p>\n </div>\n </div>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n onClick={handleRemoveFile}\n className=\"flex-shrink-0\"\n >\n <X className=\"h-4 w-4\" />\n </Button>\n </div>\n )}\n </div>\n )}\n </div>\n\n <DialogFooter>\n <Button variant=\"outline\" onClick={() => {\n handleReset()\n onOpenChange(false)\n }}>\n Cancel\n </Button>\n <Button\n onClick={handleUpload}\n disabled={!selectedFile || !fileType || isUploading}\n >\n {isUploading ? \"Uploading...\" : \"Upload\"}\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n )\n}\n","export interface ReconUpload {\n id: string\n uploaded: string\n fileName: string\n type: string\n status: \"Processed\" | \"Failed\"\n requester: string\n totalRecords: number\n matchedRecords: number\n exceptionRecords: number\n skippedRecords: number\n invalidRecords: number\n}\n\nexport const mockReconUploads: ReconUpload[] = [\n {\n id: \"1\",\n uploaded: \"2025-11-14T10:30:00Z\",\n fileName: \"OE_ACH Originated Entries ...\",\n type: \"FED_ACH_CONF...\",\n status: \"Processed\",\n requester: \"bcontrucci@ssbp...\",\n totalRecords: 2872,\n matchedRecords: 2872,\n exceptionRecords: 0,\n skippedRecords: 0,\n invalidRecords: 0\n },\n {\n id: \"2\",\n uploaded: \"2025-11-14T09:15:00Z\",\n fileName: \"RER_ACH Received Entries ...\",\n type: \"FED_ACH_CONF...\",\n status: \"Processed\",\n requester: \"bcontrucci@ssbp...\",\n totalRecords: 220,\n matchedRecords: 220,\n exceptionRecords: 0,\n skippedRecords: 0,\n invalidRecords: 0\n },\n {\n id: \"3\",\n uploaded: \"2025-11-14T08:45:00Z\",\n fileName: \"243073959_335935.csv\",\n type: \"FED_WIRE_CON...\",\n status: \"Processed\",\n requester: \"bcontrucci@ssbp...\",\n totalRecords: 304,\n matchedRecords: 220,\n exceptionRecords: 2,\n skippedRecords: 82,\n invalidRecords: 0\n },\n {\n id: \"4\",\n uploaded: \"2025-11-13T16:20:00Z\",\n fileName: \"OE_ACH Originated Entries ...\",\n type: \"FED_ACH_CONF...\",\n status: \"Processed\",\n requester: \"bcontrucci@ssbp...\",\n totalRecords: 4813,\n matchedRecords: 4811,\n exceptionRecords: 2,\n skippedRecords: 0,\n invalidRecords: 0\n },\n {\n id: \"5\",\n uploaded: \"2025-11-13T15:10:00Z\",\n fileName: \"243073959_335846.csv\",\n type: \"FED_WIRE_CON...\",\n status: \"Processed\",\n requester: \"bcontrucci@ssbp...\",\n totalRecords: 391,\n matchedRecords: 258,\n exceptionRecords: 2,\n skippedRecords: 131,\n invalidRecords: 0\n },\n {\n id: \"6\",\n uploaded: \"2025-11-13T14:30:00Z\",\n fileName: \"RER_ACH Received Entries ...\",\n type: \"FED_ACH_CONF...\",\n status: \"Processed\",\n requester: \"bcontrucci@ssbp...\",\n totalRecords: 227,\n matchedRecords: 221,\n exceptionRecords: 6,\n skippedRecords: 0,\n invalidRecords: 0\n },\n {\n id: \"7\",\n uploaded: \"2025-11-13T13:45:00Z\",\n fileName: \"OE_ACH Originated Entries ...\",\n type: \"FED_ACH_CONF...\",\n status: \"Processed\",\n requester: \"bcontrucci@ssbp...\",\n totalRecords: 6471,\n matchedRecords: 6471,\n exceptionRecords: 0,\n skippedRecords: 0,\n invalidRecords: 0\n },\n {\n id: \"8\",\n uploaded: \"2025-11-12T11:20:00Z\",\n fileName: \"OE_ACH Originated Entries ...\",\n type: \"FED_ACH_CONF...\",\n status: \"Failed\",\n requester: \"bcontrucci@ssbp...\",\n totalRecords: 0,\n matchedRecords: 0,\n exceptionRecords: 0,\n skippedRecords: 0,\n invalidRecords: 0\n },\n {\n id: \"9\",\n uploaded: \"2025-11-12T10:15:00Z\",\n fileName: \"RER_ACH Received Entries ...\",\n type: \"FED_ACH_CONF...\",\n status: \"Processed\",\n requester: \"bcontrucci@ssbp...\",\n totalRecords: 189,\n matchedRecords: 170,\n exceptionRecords: 19,\n skippedRecords: 0,\n invalidRecords: 0\n }\n]\n","import { useState } from \"react\"\nimport { DataTable, DataTableColumn } from \"@/components/ui/data-table\"\nimport { Button } from \"@/components/ui/button\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { UploadReconDialog } from \"@/components/compliance/UploadReconDialog\"\nimport { mockReconUploads, type ReconUpload } from \"@/lib/mock-data/recon-data\"\nimport { format, parseISO } from \"date-fns\"\nimport { Upload, ArrowRightLeft, Zap, CheckCircle2, XCircle, Circle } from \"lucide-react\"\n\nexport default function ReconUpload() {\n const [sortField, setSortField] = useState<keyof ReconUpload>(\"uploaded\")\n const [sortDirection, setSortDirection] = useState<\"asc\" | \"desc\">(\"desc\")\n const [uploadDialogOpen, setUploadDialogOpen] = useState(false)\n\n const handleSort = (field: keyof ReconUpload) => {\n if (sortField === field) {\n setSortDirection(sortDirection === \"asc\" ? \"desc\" : \"asc\")\n } else {\n setSortField(field)\n setSortDirection(\"desc\")\n }\n }\n\n const sortedUploads = [...mockReconUploads].sort((a, b) => {\n const aValue = a[sortField]\n const bValue = b[sortField]\n \n if (aValue == null) return 1\n if (bValue == null) return -1\n \n if (sortDirection === \"asc\") {\n return aValue > bValue ? 1 : -1\n } else {\n return aValue < bValue ? 1 : -1\n }\n })\n\n const columns: DataTableColumn<ReconUpload>[] = [\n {\n key: \"uploaded\",\n title: \"Uploaded\",\n sortable: true,\n render: (value) => (\n <span className=\"text-sm\">\n {format(parseISO(value), \"yyyy-MM-dd\")}\n </span>\n )\n },\n {\n key: \"fileName\",\n title: \"File Name\",\n render: (value, row) => {\n const isACH = row.type.includes(\"ACH\")\n const Icon = isACH ? ArrowRightLeft : Zap\n return (\n <div className=\"flex items-center gap-2\">\n <Icon className=\"h-4 w-4 text-muted-foreground flex-shrink-0\" />\n <span className=\"text-sm font-medium\">{value}</span>\n </div>\n )\n }\n },\n {\n key: \"status\",\n title: \"Status\",\n render: (value) => {\n if (value === \"Processed\") {\n return <CheckCircle2 className=\"h-5 w-5 text-green-600\" />\n }\n if (value === \"Failed\") {\n return <XCircle className=\"h-5 w-5 text-red-600\" />\n }\n if (value === \"Processing\") {\n return <Circle className=\"h-5 w-5 text-green-600\" />\n }\n return <span className=\"text-sm\">{value}</span>\n }\n },\n {\n key: \"requester\",\n title: \"Requester\",\n render: (value) => (\n <span className=\"text-sm\">{value}</span>\n )\n },\n {\n key: \"totalRecords\",\n title: \"Total\",\n sortable: true,\n render: (value) => (\n <span className=\"text-sm\">{value.toLocaleString()}</span>\n )\n },\n {\n key: \"matchedRecords\",\n title: \"Matched\",\n sortable: true,\n render: (value) => (\n <span className=\"text-sm\">{value.toLocaleString()}</span>\n )\n },\n {\n key: \"exceptionRecords\",\n title: \"Exception\",\n sortable: true,\n render: (value) => (\n <span className=\"text-sm\">{value.toLocaleString()}</span>\n )\n },\n {\n key: \"skippedRecords\",\n title: \"Skipped\",\n sortable: true,\n render: (value) => (\n <span className=\"text-sm\">{value.toLocaleString()}</span>\n )\n },\n {\n key: \"invalidRecords\",\n title: \"Invalid\",\n sortable: true,\n render: (value) => (\n <span className=\"text-sm\">{value.toLocaleString()}</span>\n )\n }\n ]\n\n return (\n <div className=\"flex flex-col h-screen bg-gradient-subtle\">\n {/* Fixed Header */}\n <div className=\"flex-none border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60\">\n <div className=\"container mx-auto px-4 py-6 max-w-none\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-3xl font-bold text-foreground\">Recon File Uploads</h1>\n </div>\n <div className=\"flex items-center gap-3\">\n <Button onClick={() => setUploadDialogOpen(true)}>\n <Upload className=\"mr-2 h-4 w-4\" />\n Upload Recon file\n </Button>\n </div>\n </div>\n </div>\n </div>\n\n {/* Upload Dialog */}\n <UploadReconDialog open={uploadDialogOpen} onOpenChange={setUploadDialogOpen} />\n\n {/* Scrollable Content */}\n <div className=\"flex-1 overflow-hidden\">\n <div className=\"container mx-auto px-4 h-full max-w-none flex flex-col\">\n <div className=\"flex-1 mt-4 overflow-auto\">\n <DataTable\n columns={columns}\n data={sortedUploads}\n sortBy={sortField as string}\n sortDirection={sortDirection}\n onSort={handleSort}\n />\n </div>\n </div>\n </div>\n </div>\n )\n}\n","export interface BraidTransaction {\n id: string\n amount: number\n postDate: string\n senderAccount: string\n receiverAccount: string\n type: \"ACH\" | \"Wire\"\n}\n\nexport interface FedSettlement {\n id: string\n amount: number\n settlementDate: string\n receiverAccount: string\n type: \"ACH\" | \"Wire\"\n}\n\nexport const mockBraidTransactions: BraidTransaction[] = [\n {\n id: \"BT-001\",\n amount: 15000.00,\n postDate: \"2025-01-15\",\n senderAccount: \"1234567890\",\n receiverAccount: \"9876543210\",\n type: \"ACH\"\n },\n {\n id: \"BT-002\",\n amount: 8500.50,\n postDate: \"2025-01-15\",\n senderAccount: \"2345678901\",\n receiverAccount: \"8765432109\",\n type: \"ACH\"\n },\n {\n id: \"BT-003\",\n amount: 25000.00,\n postDate: \"2025-01-16\",\n senderAccount: \"3456789012\",\n receiverAccount: \"7654321098\",\n type: \"ACH\"\n },\n {\n id: \"BT-004\",\n amount: 50000.00,\n postDate: \"2025-01-15\",\n senderAccount: \"4567890123\",\n receiverAccount: \"6543210987\",\n type: \"Wire\"\n },\n {\n id: \"BT-005\",\n amount: 12500.75,\n postDate: \"2025-01-16\",\n senderAccount: \"5678901234\",\n receiverAccount: \"5432109876\",\n type: \"Wire\"\n },\n {\n id: \"BT-006\",\n amount: 3200.00,\n postDate: \"2025-01-17\",\n senderAccount: \"6789012345\",\n receiverAccount: \"4321098765\",\n type: \"ACH\"\n }\n]\n\nexport const mockFedSettlements: FedSettlement[] = [\n {\n id: \"FS-001\",\n amount: 15000.00,\n settlementDate: \"2025-01-15\",\n receiverAccount: \"9876543210\",\n type: \"ACH\"\n },\n {\n id: \"FS-002\",\n amount: 8500.50,\n settlementDate: \"2025-01-15\",\n receiverAccount: \"8765432109\",\n type: \"ACH\"\n },\n {\n id: \"FS-003\",\n amount: 24999.00,\n settlementDate: \"2025-01-16\",\n receiverAccount: \"7654321098\",\n type: \"ACH\"\n },\n {\n id: \"FS-004\",\n amount: 50000.00,\n settlementDate: \"2025-01-15\",\n receiverAccount: \"6543210987\",\n type: \"Wire\"\n },\n {\n id: \"FS-005\",\n amount: 12500.75,\n settlementDate: \"2025-01-16\",\n receiverAccount: \"5432109876\",\n type: \"Wire\"\n },\n {\n id: \"FS-006\",\n amount: 7800.00,\n settlementDate: \"2025-01-17\",\n receiverAccount: \"3210987654\",\n type: \"ACH\"\n }\n]\n","import { useState } from \"react\"\nimport { Container } from \"@/components/ui/container\"\nimport { Stack } from \"@/components/ui/stack\"\nimport { Button } from \"@/components/ui/button\"\nimport { DatePicker } from \"@/components/ui/date-picker\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Label } from \"@/components/ui/label\"\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from \"@/components/ui/table\"\nimport { toast } from \"@/hooks/use-toast\"\nimport { format } from \"date-fns\"\nimport { Search, ChevronLeft, ChevronRight } from \"lucide-react\"\nimport type { BraidTransaction, FedSettlement } from \"@/lib/mock-data/recon-exception-data\"\nimport { mockBraidTransactions, mockFedSettlements } from \"@/lib/mock-data/recon-exception-data\"\n\nexport default function ReconExceptions() {\n const [fromDate, setFromDate] = useState<Date>()\n const [toDate, setToDate] = useState<Date>()\n const [transactionType, setTransactionType] = useState<\"ACH\" | \"Wire\">(\"ACH\")\n const [braidData, setBraidData] = useState<BraidTransaction[]>(mockBraidTransactions)\n const [fedData, setFedData] = useState<FedSettlement[]>(mockFedSettlements)\n const [selectedBraid, setSelectedBraid] = useState<string | null>(null)\n const [selectedFed, setSelectedFed] = useState<string | null>(null)\n const [dataLoaded, setDataLoaded] = useState(true)\n \n // Pagination state\n const [braidPage, setBraidPage] = useState(1)\n const [braidRowsPerPage, setBraidRowsPerPage] = useState(10)\n const [fedPage, setFedPage] = useState(1)\n const [fedRowsPerPage, setFedRowsPerPage] = useState(10)\n\n const handleSearch = () => {\n if (!fromDate || !toDate) {\n toast({\n title: \"Missing Date Range\",\n description: \"Please select both from and to dates\",\n variant: \"destructive\"\n })\n return\n }\n\n // Filter mock data by date range and type\n const filteredBraid = mockBraidTransactions.filter(t => {\n const tDate = new Date(t.postDate)\n return t.type === transactionType && tDate >= fromDate && tDate <= toDate\n })\n\n const filteredFed = mockFedSettlements.filter(s => {\n const sDate = new Date(s.settlementDate)\n return s.type === transactionType && sDate >= fromDate && sDate <= toDate\n })\n\n setBraidData(filteredBraid)\n setFedData(filteredFed)\n setDataLoaded(true)\n setSelectedBraid(null)\n setSelectedFed(null)\n setBraidPage(1)\n setFedPage(1)\n\n toast({\n title: \"Data Loaded\",\n description: `Found ${filteredBraid.length} Braid transactions and ${filteredFed.length} Fed settlements`\n })\n }\n\n const handleMatch = () => {\n if (!selectedBraid || !selectedFed) {\n toast({\n title: \"Selection Required\",\n description: \"Please select one transaction from each table\",\n variant: \"destructive\"\n })\n return\n }\n\n const braidTxn = braidData.find(t => t.id === selectedBraid)\n const fedTxn = fedData.find(s => s.id === selectedFed)\n\n // Remove matched transactions from both tables\n setBraidData(prev => prev.filter(t => t.id !== selectedBraid))\n setFedData(prev => prev.filter(s => s.id !== selectedFed))\n setSelectedBraid(null)\n setSelectedFed(null)\n\n toast({\n title: \"Transactions Matched\",\n description: `Matched ${braidTxn?.id} with ${fedTxn?.id}`\n })\n }\n\n const canMatch = selectedBraid && selectedFed\n\n // Pagination logic for Braid\n const braidTotalPages = Math.ceil(braidData.length / braidRowsPerPage)\n const braidStartIndex = (braidPage - 1) * braidRowsPerPage\n const braidPaginatedData = braidData.slice(braidStartIndex, braidStartIndex + braidRowsPerPage)\n\n // Pagination logic for Fed\n const fedTotalPages = Math.ceil(fedData.length / fedRowsPerPage)\n const fedStartIndex = (fedPage - 1) * fedRowsPerPage\n const fedPaginatedData = fedData.slice(fedStartIndex, fedStartIndex + fedRowsPerPage)\n\n return (\n <Container size=\"full\" padding=\"lg\">\n <Stack spacing=\"lg\">\n <div>\n <h1 className=\"text-3xl font-bold tracking-tight\">Exception Review</h1>\n <p className=\"text-muted-foreground mt-2\">\n Compare Braid posted transactions with Fed settlement records for reconciliation\n </p>\n </div>\n\n {/* Filters */}\n <Card>\n <CardContent className=\"pt-6\">\n <div className=\"flex flex-wrap items-end gap-4\">\n <div className=\"flex-1 min-w-[200px]\">\n <DatePicker\n label=\"From Date\"\n date={fromDate}\n onDateChange={setFromDate}\n placeholder=\"Select from date\"\n />\n </div>\n <div className=\"flex-1 min-w-[200px]\">\n <DatePicker\n label=\"To Date\"\n date={toDate}\n onDateChange={setToDate}\n placeholder=\"Select to date\"\n />\n </div>\n <div className=\"flex-1 min-w-[200px]\">\n <Label>Transaction Type</Label>\n <div className=\"flex gap-4 mt-2\">\n <label className=\"flex items-center gap-2 cursor-pointer\">\n <input\n type=\"radio\"\n value=\"ACH\"\n checked={transactionType === \"ACH\"}\n onChange={(e) => setTransactionType(e.target.value as \"ACH\" | \"Wire\")}\n className=\"w-4 h-4 text-primary\"\n />\n <span className=\"text-sm\">ACH</span>\n </label>\n <label className=\"flex items-center gap-2 cursor-pointer\">\n <input\n type=\"radio\"\n value=\"Wire\"\n checked={transactionType === \"Wire\"}\n onChange={(e) => setTransactionType(e.target.value as \"ACH\" | \"Wire\")}\n className=\"w-4 h-4 text-primary\"\n />\n <span className=\"text-sm\">Wire</span>\n </label>\n </div>\n </div>\n <Button onClick={handleSearch} className=\"gap-2\">\n <Search className=\"h-4 w-4\" />\n Search\n </Button>\n </div>\n </CardContent>\n </Card>\n\n {/* Tables */}\n {!dataLoaded ? (\n <Card>\n <CardContent className=\"py-12 text-center text-muted-foreground\">\n Select date range and transaction type, then click Search to load data\n </CardContent>\n </Card>\n ) : (\n <>\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-6\">\n {/* Braid Transactions Table */}\n <Card className=\"flex flex-col\">\n <CardHeader>\n <CardTitle className=\"text-lg\">\n Braid Posted Transactions ({braidData.length})\n </CardTitle>\n </CardHeader>\n <CardContent className=\"flex flex-col flex-1\">\n <div className=\"rounded-md border flex-1 overflow-auto\">\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead className=\"w-12\"></TableHead>\n <TableHead>Amount</TableHead>\n <TableHead>Post Date</TableHead>\n <TableHead>Sender Account</TableHead>\n <TableHead>Receiver Account</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {braidData.length === 0 ? (\n <TableRow>\n <TableCell colSpan={5} className=\"text-center text-muted-foreground\">\n No transactions found\n </TableCell>\n </TableRow>\n ) : (\n braidPaginatedData.map((txn) => (\n <TableRow\n key={txn.id}\n className={selectedBraid === txn.id ? \"bg-muted\" : \"\"}\n >\n <TableCell>\n <input\n type=\"radio\"\n name=\"braid-select\"\n checked={selectedBraid === txn.id}\n onChange={() => setSelectedBraid(txn.id)}\n className=\"w-4 h-4 text-primary cursor-pointer\"\n />\n </TableCell>\n <TableCell className=\"font-medium\">\n ${txn.amount.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}\n </TableCell>\n <TableCell>{format(new Date(txn.postDate), \"MMM dd, yyyy\")}</TableCell>\n <TableCell className=\"font-mono text-sm\">{txn.senderAccount}</TableCell>\n <TableCell className=\"font-mono text-sm\">{txn.receiverAccount}</TableCell>\n </TableRow>\n ))\n )}\n </TableBody>\n </Table>\n </div>\n {braidData.length > 0 && (\n <div className=\"flex items-center justify-between px-2 py-4\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-foreground\">Rows per page:</span>\n <select\n value={braidRowsPerPage}\n onChange={(e) => {\n setBraidRowsPerPage(Number(e.target.value))\n setBraidPage(1)\n }}\n className=\"h-8 w-16 rounded-md border border-input bg-background px-2 text-sm\"\n >\n <option value={10}>10</option>\n <option value={25}>25</option>\n <option value={50}>50</option>\n </select>\n </div>\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-foreground\">\n Page {braidPage} of {braidTotalPages}\n </span>\n <div className=\"flex gap-1\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => setBraidPage(Math.max(1, braidPage - 1))}\n disabled={braidPage === 1}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => setBraidPage(Math.min(braidTotalPages, braidPage + 1))}\n disabled={braidPage === braidTotalPages}\n >\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n </div>\n )}\n </CardContent>\n </Card>\n\n {/* Fed Settlement Records Table */}\n <Card className=\"flex flex-col\">\n <CardHeader>\n <CardTitle className=\"text-lg\">\n Fed Settlement Records ({fedData.length})\n </CardTitle>\n </CardHeader>\n <CardContent className=\"flex flex-col flex-1\">\n <div className=\"rounded-md border flex-1 overflow-auto\">\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead className=\"w-12\"></TableHead>\n <TableHead>Amount</TableHead>\n <TableHead>Settlement Date</TableHead>\n <TableHead>Receiver Account</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {fedData.length === 0 ? (\n <TableRow>\n <TableCell colSpan={4} className=\"text-center text-muted-foreground\">\n No settlements found\n </TableCell>\n </TableRow>\n ) : (\n fedPaginatedData.map((settlement) => (\n <TableRow\n key={settlement.id}\n className={selectedFed === settlement.id ? \"bg-muted\" : \"\"}\n >\n <TableCell>\n <input\n type=\"radio\"\n name=\"fed-select\"\n checked={selectedFed === settlement.id}\n onChange={() => setSelectedFed(settlement.id)}\n className=\"w-4 h-4 text-primary cursor-pointer\"\n />\n </TableCell>\n <TableCell className=\"font-medium\">\n ${settlement.amount.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}\n </TableCell>\n <TableCell>{format(new Date(settlement.settlementDate), \"MMM dd, yyyy\")}</TableCell>\n <TableCell className=\"font-mono text-sm\">{settlement.receiverAccount}</TableCell>\n </TableRow>\n ))\n )}\n </TableBody>\n </Table>\n </div>\n {fedData.length > 0 && (\n <div className=\"flex items-center justify-between px-2 py-4\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-foreground\">Rows per page:</span>\n <select\n value={fedRowsPerPage}\n onChange={(e) => {\n setFedRowsPerPage(Number(e.target.value))\n setFedPage(1)\n }}\n className=\"h-8 w-16 rounded-md border border-input bg-background px-2 text-sm\"\n >\n <option value={10}>10</option>\n <option value={25}>25</option>\n <option value={50}>50</option>\n </select>\n </div>\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-foreground\">\n Page {fedPage} of {fedTotalPages}\n </span>\n <div className=\"flex gap-1\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => setFedPage(Math.max(1, fedPage - 1))}\n disabled={fedPage === 1}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => setFedPage(Math.min(fedTotalPages, fedPage + 1))}\n disabled={fedPage === fedTotalPages}\n >\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n </div>\n )}\n </CardContent>\n </Card>\n </div>\n\n {/* Match Button */}\n <div className=\"flex justify-center\">\n <Button\n size=\"lg\"\n onClick={handleMatch}\n disabled={!canMatch}\n className=\"min-w-[200px]\"\n >\n Match Selected\n </Button>\n </div>\n </>\n )}\n </Stack>\n </Container>\n )\n}\n"]}
|